Built motion from commit d99271b6.|2.5.35
authorAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 7 Oct 2021 13:14:26 +0000 (15:14 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 7 Oct 2021 13:14:26 +0000 (15:14 +0200)
1258 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/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.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/index.html
public/scripts/app.1abcb420.js [moved from public/scripts/app.79e08137.js with 53% similarity]
public/styles/app.2d427cb4.css [new file with mode: 0644]
public/styles/app.91ca40ed.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.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 [copied from server/api/realtime/realtime.model.js with 59% similarity]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [copied from server/api/realtime/realtime.model.js with 56% similarity]
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 [copied from server/api/realtime/realtime.model.js with 59% similarity]
server/api/userVoicePrefix/userVoicePrefix.model.js [moved from server/api/realtime/realtime.model.js with 55% similarity]
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.34.js [new file with mode: 0644]
server/migrations/2.5.35.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/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 fb458d5..17583b9 100644 (file)
@@ -2441,24 +2441,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}/messages",
     "title": "Creates new messages",
@@ -2536,6 +2518,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}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "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:",
@@ -10900,15 +10900,15 @@ 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"
   },
   {
-    "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:",
@@ -10918,7 +10918,7 @@ 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"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "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": "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"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/messages/{id}/status",
+    "url": "/api/sms/accounts/{id}/status",
     "title": "Receive message status",
     "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 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/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "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 GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -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",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status",
+    "title": "Receive message status as get request",
     "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/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/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/whatsapp/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/whatsapp/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/faxQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/openchannel/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/openchannel/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/mailQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/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/voice/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/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,12 +26312,30 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "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",
     "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/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26325,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/whatsappQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/fax/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/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26361,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/voiceQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/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/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,7 +26379,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/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31389,6 +31407,42 @@ 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": [
@@ -33311,37 +33365,37 @@ define({ "api": [
     "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"
   },
   {
-    "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"
index 726d908..5c8c36e 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": "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": "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": "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": "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": "post",
-    "url": "/api/sms/messages/{id}/status",
+    "url": "/api/sms/accounts/{id}/status",
     "title": "Receive message status",
     "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 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/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "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 GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -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",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status",
+    "title": "Receive message status as get request",
     "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/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/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/whatsapp/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/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/faxQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/openchannel/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/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/mailQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/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/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/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "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",
     "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/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/whatsappQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/fax/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/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/voiceQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/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/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/chatQueue/index.js",
+    "filename": "server/api/mailQueue/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": [
     "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"
   },
   {
-    "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"
index 0d008a3..ac6a286 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.33",
+  "version": "2.5.35",
   "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-06T14:00:08.243Z",
+    "time": "2021-10-07T13:04:34.179Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 3928990..4baa9d4 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.33",
+  "version": "2.5.35",
   "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-06T14:00:08.243Z",
+    "time": "2021-10-07T13:04:34.179Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 2bfed03..f27c89c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.33",
+  "version": "2.5.35",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -35,7 +35,7 @@
   "license": "EULA",
   "scripts": {
     "start": "nodemon server/app.js",
-    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**'] }).join('\\n')\"`",
+    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**', './server/files/**'] }).join('\\n')\"`",
     "eslint:check": "eslint .",
     "eslint:fix": "eslint --fix .",
     "prettier:check": "prettier --check './**/*'",
@@ -56,8 +56,8 @@
     "connect-timeout": "1.9.0",
     "cookie-parser": "1.4.5",
     "cors": "2.8.5",
-    "crypto-js": "3.1.9-1",
     "cron-job-manager": "1.0.7",
+    "crypto-js": "3.1.9-1",
     "desk.js": "0.1.4",
     "dialogflow": "0.8.2",
     "ejs": "2.7.4",
index 53a27fb..5c4734e 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Ihr Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-mail Adresse",
+    "TITLE": "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 Kennworts wurde an Ihre Adresse gesendet!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
+      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
+      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
     }
   }
 }
index c090dfa..bced170 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Melden Sie sich bei Ihrem Konto an",
+    "TITLE": "Bitte mit Ihrem Konto anmelden",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Erinnere Dich an Mich",
+    "REMEMBER_ME": "Anmeldedaten merken",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "LOG IN",
+    "LOG_IN": "ANMELDEN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Melden Sie sich mit Google",
-    "WITH_FACEBOOK": "Mit Facebook anmelden",
+    "WITH_GOOGLE": "Anmeldung mit Google",
+    "WITH_FACEBOOK": "Anmeldung mit Facebook",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
+    "CREATE_ACCOUNT": "Konto erstellen",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Stornieren",
-    "SELECT": "Wählen",
+    "CANCEL": "Abbrechen",
+    "SELECT": "Auswählen",
     "TELEPHONES": "Telefone"
   }
 }
index e60162b..e6b577a 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Bestellung von",
+    "ORDER_BY": "Sortieren nach",
     "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": "Löschen extrahierte Berichte",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 4bc9896..02f4f10 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl von Malen pro Interaktion",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
+    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Key",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
-    "NONE": "Keine",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "NONE": "Nichts",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Website-Script",
+    "WEBSITESCRIPT": "Webseiten-Skript",
     "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": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
+    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht schließen",
-    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Echte Priorität",
+    "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}} ",
       "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": "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",
+      "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",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}} ",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "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",
+    "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",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Maus über",
+    "MOUSEOVER": "Mouse-Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Wählschalter",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Bis",
-    "DOWN": "Unten",
-    "COLLAPSE": "Zusammenklappen",
-    "PROACTIVEACTIONS": "Proaktive Aktionen",
-    "DISPOSITIONS": "Dispositionen",
+    "UP": "Nach Oben",
+    "DOWN": "Nach Unten",
+    "COLLAPSE": "Einklappen",
+    "PROACTIVEACTIONS": "Proaktive Anfragen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Aussehen",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Tastenfarbe",
+    "BUTTONCOLOR": "Buttonfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "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",
+    "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",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
-    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Bewertung Senden Tasten-Text",
-    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktive",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbettung",
+    "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
-      "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",
+      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "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": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
+      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "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",
+      "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",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "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": "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"
+      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Dispositionen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
-    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
-    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
+    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Abgerundet",
-    "SQUARED": "Quadratisch",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ROUNDED": "Rundes Design",
+    "SQUARED": "Eckiges Design",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "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": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alles",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Wählen Sie eine Website",
+    "SELECTED_WEBSITE": "Ausgewählte Webseite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Wählen Sie eine Website",
+    "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Wartetitel",
-    "WAITINGMESSAGE": "Wartende Nachricht",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Pausiert",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "WRITING": "Schreiben",
+    "WAITING": "Wartezustand",
+    "WRITING": "am Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Interne",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Sprache",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spion",
+    "AGENTAVATAR": "Agenten-Avatar",
+    "SPYINTERACTION": "Mitlesen",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage schließen",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
-    "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",
+    "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",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Ton",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
+    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Bot-Name",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teams Verband",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ENABLESENDBUTTON": "Sendetaste aktivieren",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Key",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Gegenstand",
+    "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "NOTE": "Hinweis",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "NOTE": "Notiz",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index da8b00a..3c27f23 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "Sprachwarteschlange ID",
-    "CAMPAIGNID": "Kampagne ID",
-    "STATE": "Zustand",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "CAMPAIGNID": "Kampagnen-ID",
+    "STATE": "Status",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper Geschichte",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "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 verfügbaren Artikel",
+    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositionen",
-    "VOICEDISPOSITIONS": "Sprachdispositionen",
-    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts 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": "Alle Löschen",
+    "DELETE_ALL": "Alles Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Fertig",
-    "SUCCESS": "Erfolgreich",
+    "FINISH": "Beenden",
+    "SUCCESS": "Erfolg",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "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",
+    "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",
     "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 Info",
-    "NONE": "Keine",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "Duplikate prüfen",
+    "CHECK_DUPLICATES": "auf Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV",
+    "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "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",
+    "SELECT_LIST": "Liste auswählen",
+    "SELECT_COMPANY": "Unternehmen auswählen",
+    "SELECT_TAGS": "Tags auswählen",
     "HELP": {
-      "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"
+      "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"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler exportieren",
+    "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei aussuchen",
+    "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenreise",
-    "SELECT_TAG": "Wählen Sie Tags aus",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "SELECT_TAG": "Tag auswählen",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftage",
+    "EXPIREDAY": "Ablauftag",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Codice Fiscale / VAT",
-    "RECALLME": "Ruf mich zurück",
+    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
+    "RECALLME": "Rückruf anfordern",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Zur Aktion klicken"
+    "CLICKTOACTION": "Klicken für Aktion"
   }
 }
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "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": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "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"
+      "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"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "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 ",
+    "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) ",
     "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": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "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": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet 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": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein 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": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "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": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "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",
+    "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",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "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",
+    "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",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive 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_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_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "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",
+    "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",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "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?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "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": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "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": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "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 unter",
-    "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 innerhalb",
+    "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": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung 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 überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 4b2f44e..fd1c6a8 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "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",
+      "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",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "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",
+      "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}}",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_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-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "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",
+    "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",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "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",
+      "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",
       "FONT_SIZE": "Standard Schriftgröße",
-      "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"
+      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GoToIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "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": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "WAITING": "Wartezustand",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Mithören",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "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",
+    "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",
     "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": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "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",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index c4fbe7e..86fb87a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 0ef1225..d002733 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}}",
       "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",
-      "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenteb bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "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",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "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.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "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",
+      "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",
       "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": "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"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "VOICE": "Voice",
+    "WAITING": "Wartezustand",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Mithören",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Weiterleitung Agent",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "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",
+    "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",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "BOTNAME": "Botname",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index b5e8a7a..ee88755 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger 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": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten 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": "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",
+      "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",
       "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 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
+    "INTERNAL": "Intern",
+    "TRANSPORT": "Transport",
     "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. 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",
+      "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",
       "SIPPORT": "Standardeinstellung: 5160",
-      "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",
+      "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",
       "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 Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "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)",
+      "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)",
       "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 Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Agent",
+    "CHANGEPASSWORD_USER": "Nutzer",
+    "CHANGEPASSWORD_TELEPHONE": "Telefon",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
+    "CHANSPY": "Listen-In",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHATCAPACITY": "Kapazität Chats",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMSW",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
+    "AUTOANSWER": "Auto-Antwort",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "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",
+    "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",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Ablaufdatum",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
+    "PENALTY": "Verzögerung",
     "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": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Telefonnummern",
+    "CALLERID": "Anrufer-ID",
+    "ENABLERECORDING": "Aufzeichnung aktiv",
     "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": "Melden Sie Warteschlange",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "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",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
+    "CALLGROUP": "Gruppenanruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "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",
+    "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",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "WebControl anzeigen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Nicht stören",
+    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
+    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "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",
+    "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",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "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 Faxwarteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "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 Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "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": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-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": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "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": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Unterstützt Video",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten 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": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen"
+    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "MONTHDAY_REQUIRED": "Tag des Monats ist 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",
+      "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",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "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"
+      "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"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "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 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.",
+      "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.",
       "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 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.",
+      "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.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "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).",
+      "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.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "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)",
+      "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)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "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": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "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 gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "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."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "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",
+    "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",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "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",
+    "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",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "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": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "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": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-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",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "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",
+    "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",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "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"
+    "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"
   }
 }
index bf0d36b..b0c7106 100644 (file)
@@ -20,6 +20,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
     "NONE": "None",
     "TOTAL": "Total",
     "ABANDONED": "Abandoned",
@@ -74,6 +75,7 @@
       "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",
index c6b75fe..1e98efe 100644 (file)
@@ -19,6 +19,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignora il contact Id del dialer",
     "NONE": "Nessuno",
     "TOTAL": "Totale",
     "ABANDONED": "Abbandonate",
@@ -98,6 +99,7 @@
       "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",
index 91d5165..254759d 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
+    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 5fe900e..3f3b98d 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 67570a2..ea7f1fe 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 c698d09..bd7bae8 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "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",
+    "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",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "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": "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",
+      "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",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "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)",
+      "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. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "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, 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."
+      "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"
     },
-    "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,",
+    "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",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "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",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "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",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "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_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "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.",
+    "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",
     "EDIT_AGI": "AGI 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",
+    "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",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "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)",
+    "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)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "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",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "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": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "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",
+    "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",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "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",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias"
   }
 }
index 0e070f7..a06798a 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 90b1016..b29a2d3 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 bd75c5e..b52a7e9 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 64fd7ba..4c8f69b 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
+    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index f1874d1..664bc29 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
+    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index ca6418d..51099a3 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 2da30a3..61c740b 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
+    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 2fbd46a..905e9aa 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
+    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index 1fecba7..eef7ebe 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 3b739d4..527d7c5 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 c7d5d57..d2accf3 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
+    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index bc9ce6e..9e4a917 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
+    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 1a07f3d..65172e6 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 3e683d8..499925d 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 103a753..a1ad47d 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 729522a..f979e88 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 3988cbe..9974a58 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 5113530..95abd15 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 a46bf2f..3c55740 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 672f53d..022d0b1 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
+    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 83c6c54..6a741b4 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 6dd9d26..51a4ca4 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 2415dcc..3abaa1b 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
+    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index 294b15a..c78fea9 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
+    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 03bcbeb..6f42238 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
+    "LOGGED_IN": "تم تسجيل الدخول",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index 07beea8..e361766 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen (připojeno SIP)",
+    "LOGGED_IN": "Přihlášen",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 67fc111..00e305d 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
+    "LOGGED_IN": "Logget ind",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index 80b51fd..f01cf37 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_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": "Der Wert muss kleiner oder gleich sein",
+      "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_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": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "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": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "PRIORITY_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": "Der Wert muss kleiner oder gleich sein",
+      "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_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "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_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": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "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": "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_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_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "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, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
+    "ACCOUNTSID": "Konto-ID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer Agent",
+    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
+    "AGENT_TIMEOUT": "Timeout Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "Botname",
     "BUSY": "Beschäftigt",
-    "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",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "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": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "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",
+    "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",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "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": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität falsch",
+    "GENERAL": "Allgemein",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
+    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Eingeloggt",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "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_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_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
+    "SAVE": "Speichern",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Mitlesen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
+    "TYPE": "Typ",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 0920067..8ac07bf 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In (SIP Connected)",
+    "LOGGED_IN": "Logged In",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index 03aafb4..a7cb714 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index 5ff75f9..c40e5bd 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
+    "LOGGED_IN": "Sisse logitud",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 2bfad68..76a3444 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
+    "LOGGED_IN": "ورود به سیستم",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 647eabf..52f4f20 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
+    "LOGGED_IN": "Sisäänkirjautunut",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index b2e331a..919bb35 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté (SIP connecté)",
+    "LOGGED_IN": "Connecté",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index 00d0fa4..a6c765d 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר (SIP מחובר)",
+    "LOGGED_IN": "מחובר",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 819f531..0550a1a 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
+    "LOGGED_IN": "लॉग इन",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index b2e703c..246085c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk (SIP Terhubung)",
+    "LOGGED_IN": "Masuk",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index 0350e8d..d23db62 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み(SIP接続済み)",
+    "LOGGED_IN": "ログイン済み",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index d6c34e1..53a3344 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
+    "LOGGED_IN": "로그인 됨",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index 282dd81..a074057 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
+    "LOGGED_IN": "Prisijungęs",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index 2389947..fb7beca 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
+    "LOGGED_IN": "Pieteicies",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 85a42ac..5eed559 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd (SIP verbonden)",
+    "LOGGED_IN": "Ingelogd",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index b8c8675..efdafa2 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
+    "LOGGED_IN": "Logget inn",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index da5dad6..510b8e5 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano (połączenie SIP)",
+    "LOGGED_IN": "Zalogowano",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index ec3412a..29fd2ec 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index ec3412a..29fd2ec 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 87a083a..5131899 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован (SIP подключен)",
+    "LOGGED_IN": "Авторизован",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index f4f2b7e..ae13a80 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad (SIP ansluten)",
+    "LOGGED_IN": "Inloggad",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index e867462..da1b4f9 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
+    "LOGGED_IN": "Oturum Açıldı",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index b81f80a..4804111 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录(已连接SIP)",
+    "LOGGED_IN": "已登录",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index cb5a2ee..6d85da7 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄(已連接SIP)",
+    "LOGGED_IN": "已登錄",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index 3162f7a..fd8ccd9 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Anwendungsserver",
-    "USER_STATS": "Benutzer Stats",
-    "EVENTS": "Veranstaltungen",
-    "NOTES": "Hinweise",
-    "QUICK_SETTINGS": "Schnelle Einstellungen",
+    "APP_SERVERS": "Server Anwendung",
+    "USER_STATS": "Benutzer Statistiken",
+    "EVENTS": "Ereignisse",
+    "NOTES": "Notizen",
+    "QUICK_SETTINGS": "Schnelleinstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Triebwerke",
-    "RECENT": "Die jüngsten",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Neuste",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
+    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neue Token",
-    "OLD_TOKEN": "Alte Token",
+    "NEW_TOKEN": "Neuer Token",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "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",
+    "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",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
-    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
-    "SAVE": "sparen",
-    "INFO": "Info",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
+    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
+    "SAVE": "Speichern",
+    "INFO": "Information",
     "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. 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!",
+    "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",
     "WARNING": "Warnung"
   }
 }
index 1d7248b..6eb58fc 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Ihr Kennwort zurücksetzen",
-    "EMAIL_ADRESS": "E-mail Adresse",
-    "PASSWORD": "Kennwort",
-    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
-    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
+    "TITLE": "Passwort zurücksetzen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
+    "PASSWORD": "Passwort",
+    "PASSWORD_CONFIRM": "Passwort bestätigen",
+    "UPDATE_PASSWORD": "Passwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "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",
+    "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",
     "ERRORS": {
-      "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.",
+      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
+      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index a399ee6..b6abdf2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation wechseln",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
+    "TOGGLE_NAVIGATION": "Navigation umschalten",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Benutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
+    "USER_SETTINGS": "Nutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnische",
+    "FINNISH": "Finnisch",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Login Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
+    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Lebenslauf",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
-    "LATVIAN": "Lettische",
+    "RESUME": "Fortsetzen",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
+    "LATVIAN": "Lettisch",
     "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 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
+      "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"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Ungültige Lizenz",
+    "INVALID_LICENSE": "Lizenz ungültig",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Bedarf",
+    "REQUIREMENTS": "Anforderungen",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Eingetragen",
+    "REGISTERED": "Registriert",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Warmer Transfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Redner",
-    "RINGING": "Klingelton",
+    "SPEAKER": "Lautsprecher",
+    "RINGING": "Klingeln",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienstleistungen",
+    "SERVICES": "Dienste",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingelgerät",
-    "SPEAKERDEVICE": "Lautsprechergerät",
-    "MICROPHONEDEVICE": "Mikrofon Gerät",
+    "RINGINGDEVICE": "Klingeln auf Gerät",
+    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
+    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "die Einstellungen",
+    "SETTINGS": "Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "estnisch",
+    "ESTONIAN": "Estnisch",
     "CZECH": "Tschechisch",
-    "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).",
+    "BRAZILIAN": "Brasilianisch",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
+    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
     "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 aa48e51..1ed8ae6 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.91ca40ed.css">
+  <link rel="stylesheet" href="styles/app.2d427cb4.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.79e08137.js"></script>
+  <script src="scripts/app.1abcb420.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.79e08137.js
rename to public/scripts/app.1abcb420.js
index 19b40ec..c1ed2f1 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"):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,t,a){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","msApiProvider","msNavigationServiceProvider"],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(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"]}}]},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+"/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(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().$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().$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().$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/composeFax/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().$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/composeMail/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/composeMail/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(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().$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/composeOpenchannel/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().$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/composeSms/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().$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().$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/composeWhatsapp/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/composeMail/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/composeFax/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/composeSms/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/composeWhatsapp/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/composeChat/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/composeOpenchannel/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"]}}]},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"]}}]},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"]}}]},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"]}}]},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,n,t,s,o,r){var l=this;function d(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function c(e){switch(e){case"sound":if(!l.application.appdata)return;return[{key:"save_name",value:l.application.appdata.split("/").pop()}];case"squareProject":if(!l.application.project)return;return[{key:"name",value:l.application.project.split(",")[1]}];case"tag":if(!l.application.tag)return;return[{key:"name",value:l.application.tag}];case"trunk":if(!l.application.trunk)return;return[{key:"name",value:l.application.trunk}];case"user":if(!l.application.user&&!l.application.users)return;return l.application.user?[{key:"name",value:l.application.user.split("/")[1]}]:_.map(l.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!l.application.name)return;return[{key:"name",value:l.application.name}];case"voiceContext":if(!l.application.context)return;return[{key:"name",value:l.application.context}];case"voiceMail":if(!l.application.voiceMail)return;return[{key:"mailbox",value:l.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!l.application.queue)return;return[{key:"name",value:l.application.queue}]}}function m(){s.getResourcesByRole(l.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},c("trunk")).then(function(e){l.trunks=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TRUNKS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function u(){s.getResourcesByRole(l.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},c("sound")).then(function(e){l.sounds=e}).catch(function(){i.error({title:$translate.instant("TOOLS.SOUNDS"),msg:$translate.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function p(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=c("user"),t=[s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),s.getResourcesByRole(l.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();l.users={rows:n,count:n.length}}).catch(function(){i.error({title:$translate.instant("STAFF.USERS"),msg:$translate.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function g(){l.application.appdata&&e.hide(l.application),e.hide()}l.currentUser=o.getCurrentUser(),l.application=angular.copy(n),l.crudPermissions=r,l.errors=[],l.init=function(){l.application.appdata&&function(){var e=[];switch(l.application.appType){case"agi":l.application.project=l.application.appdata;break;case"dial":e=l.application.appdata.split(","),l.application.tech=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"externalDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"goTo":e=l.application.appdata.split(","),l.application.context=d(e[0]),l.application.extension=d(e[1]),l.application.priority=d(e[2]);break;case"internalDial":e=l.application.appdata.split(","),l.application.user=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"outboundDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]),l.application.prefix=l.application.phone?l.application.phone.split("$")[0]:void 0,l.application.callerId=l.application.callerID?"CALLERID(all)="+l.application.callerID:void 0;break;case"playback":e=l.application.appdata.split(","),l.application.appdata=d(e[0]),l.application.options=d(e[1]);break;case"queue":e=l.application.appdata.split(","),l.application.queue=d(e[0]),l.application.options=d(e[1]),l.application.URL=d(e[2]),l.application.sound=d(e[3]),l.application.timeout=d(e[4]),l.application.agi=d(e[5]),l.application.macro=d(e[6]),l.application.gosub=d(e[7]),l.application.rule=d(e[8]),l.application.position=d(e[9]);break;case"ringGroup":e=l.application.appdata.split(","),l.application.users=e[0].split("&"),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"set":e=l.application.appdata.split("="),l.application.name=e[0],l.application.value=e[1];break;case"voicemail":e=l.application.appdata.split(","),l.application.voiceMail=d(e[0]),l.application.options=d(e[1])}}();switch(l.application.appType){case"agi":s.getResourcesByRole(l.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},c("squareProject")).then(function(e){l.projects=e}).catch(function(){i.error({title:$translate.instant("CALLYSQUARE.CALLYSQUARE")+" "+$translate.instant("CALLYSQUARE.PROJECTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":m();break;case"goTo":s.getResourcesByRole(l.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},c("voiceContext")).then(function(e){l.contexts=e}).catch(function(){i.error({title:$translate.instant("VOICE.CONTEXTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":p();break;case"outboundDial":s.getResourcesByRole(l.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},c("tag")).then(function(e){l.tags=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TAGS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),m();break;case"playback":u();break;case"queue":u(),s.getResourcesByRole(l.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},c("voiceQueue")).then(function(e){l.queues=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEQUEUES"),msg:$translate.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":p();break;case"set":s.getResourcesByRole(l.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},c("variable")).then(function(e){l.variables=e}).catch(function(){i.error({title:$translate.instant("TOOLS.VARIABLES"),msg:$translate.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":s.getResourcesByRole(l.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},c("voiceMail")).then(function(e){l.voiceMails=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEMAILS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},l.saveRoutingApp=function(){l.errors=[],function(){var e=[];switch(l.application.appType){case"agi":l.application.appdata=l.application.project;break;case"dial":e[0]=l.application.tech,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"goTo":e[0]=l.application.context,e[1]=l.application.extension,e[2]=l.application.priority,l.application.appdata=e.join(",");break;case"internalDial":e[0]=l.application.user,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"outboundDial":l.application.phone=t.cutdigits?(l.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(l.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?l.application.options=l.application.options.replace("U(xcally-mixmonitor-context)",""):l.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"playback":e[0]=l.application.appdata,e[1]=l.application.options,l.application.appdata=e.join(",");break;case"queue":e[0]=l.application.queue,e[1]=l.application.options,e[2]=l.application.URL,e[3]=l.application.sound,e[4]=l.application.timeout,e[5]=l.application.agi,e[6]=l.application.macro,e[7]=l.application.gosub,e[8]=l.application.rule,e[9]=l.application.position,l.application.appdata=e.join(",");break;case"ringGroup":e[0]=l.application.users.join("&"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"set":e[0]=l.application.name,e[1]=l.application.value,l.application.appdata=e.join("=");break;case"voicemail":e[0]=l.application.voiceMail,e[1]=l.application.options,l.application.appdata=e.join(",")}}(),g()},l.closeDialog=g}e.$inject=["$mdDialog","$q","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;function d(){var e=[{key:"name",value:l.interval.IntervalId}];i.getResourcesByRole(l.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){l.intervals=e}).catch(function(){a.error({title:$translate.instant("TOOLS.INTERVALS"),msg:$translate.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function c(e){n.hide(e)}l.currentUser=s.getCurrentUser(),l.interval=angular.copy(e),l.intervals=t||{rows:[],count:0},l.types=["always","custom","list"],l.crudPermissions=o,l.errors=[],l.daysOfWeek=r.getDaysOfWeek(),l.monthNumber=r.getMonthNumber(),l.monthName=r.getMonthName(),l.daysOfMonth=r.getDaysOfMonth(),l.initialize=function(){if("*,*,*,*"===l.interval.interval)return l.type=l.interval.IntervalId&&l.interval.application?"list":"always",void("list"===l.type&&d());l.type="custom";var e=l.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])),l.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),l.timeRangeTo=s}"*"!==t&&(l.dayOfWeekFrom=t.split("-")[0],l.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(l.monthDayFrom=a.split("-")[0],l.monthDayTo=a.split("-")[1]);"*"!==i&&(l.monthFrom=i.split("-")[0],l.monthTo=i.split("-")[1])},l.onTypeChange=function(){"list"===l.type&&0===l.intervals.count&&d()},l.saveInterval=function(){l.errors=[],l.interval.interval=function(){if(["always","list"].includes(l.type))return"*,*,*,*";var e=[];if("*"!==l.timeRangeFrom&&l.timeRangeFrom&&l.timeRangeTo){var n=(l.timeRangeFrom.getHours()<10?"0":"")+l.timeRangeFrom.getHours()+":"+(l.timeRangeFrom.getMinutes()<10?"0":"")+l.timeRangeFrom.getMinutes(),t=(l.timeRangeTo.getHours()<10?"0":"")+l.timeRangeTo.getHours()+":"+(l.timeRangeTo.getMinutes()<10?"0":"")+l.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return l.dayOfWeekFrom?l.dayOfWeekTo?e.push(l.dayOfWeekFrom+"-"+l.dayOfWeekTo):e.push(l.dayOfWeekFrom):e.push("*"),l.monthDayFrom?l.monthDayTo?e.push(l.monthDayFrom+"-"+l.monthDayTo):e.push(l.monthDayFrom):e.push("*"),l.monthFrom?l.monthTo?e.push(l.monthFrom+"-"+l.monthTo):e.push(l.monthFrom):e.push("*"),e.join()}(),"list"!==l.type&&(l.interval.IntervalId=null);c(l.interval)},l.closeDialog=c}e.$inject=["$mdDialog","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&&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&&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&&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"]}}]},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" />\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="inboundroute-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/composeChat/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",'<md-dialog class="compose-dialog-fax" 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\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          \x3c!-- <input ng-model="vm.message.subject" type="text"> --\x3e\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\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\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n            \x3c!-- <md-icon md-font-icon="icon-close" class="s16"></md-icon> --\x3e\n          </md-button>\n        </div>\n      </div>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-style="{\n    \'max-width\':  {true: \'620px\', false: \'90%\'}[ vm.secret ],\n    \'width\': {true: \'620px\', false: \'100%\'}[ vm.secret ],\n    \'max-height\': {true: undefined, false: \'97%\'}[ vm.secret ]\n  }">\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\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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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\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\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\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\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\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\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\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\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\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\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\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\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\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeSms/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\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\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\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\n\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="inboundroute-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="inboundroute-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.ALIAS\' | 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.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            {{ \'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="inboundroute-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="inboundroute-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="inboundroute-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="inboundroute-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
+!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",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(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(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("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(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,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){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,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(){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,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,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(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){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,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){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,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",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,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){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,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){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,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,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,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()})})))):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,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){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,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){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,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,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 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-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" 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" 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              \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\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 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 == \'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)" 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\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.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-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" 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 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.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/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">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.2d427cb4.css b/public/styles/app.2d427cb4.css
new file mode 100644 (file)
index 0000000..47c7441
--- /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}.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}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-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.91ca40ed.css b/public/styles/app.91ca40ed.css
deleted file mode 100644 (file)
index e941370..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}@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{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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.compose-dialog-fax{max-width:720px;width:720px;max-height:450px;height:450px}md-dialog.compose-dialog-fax md-dialog-content{display:block;position:relative}md-dialog.compose-dialog-fax md-toolbar .title{font-size:17px}md-dialog.compose-dialog-fax md-chips md-chip{font-size:12px}md-dialog.compose-dialog-fax md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog-fax .to{position:relative}md-dialog.compose-dialog-fax .attachment-list{font-size:13px}md-dialog.compose-dialog-fax .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-fax .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog-fax .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog-fax .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog-fax .error-list{font-size:13px}md-dialog.compose-dialog-fax .error-list .error{background-color: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-fax .error-list .error .message{font-weight:500}md-dialog.compose-dialog-fax .error-list .error .md-button{margin:0}md-dialog.compose-dialog-fax .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog-fax 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.compose-dialog .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}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-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 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.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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
index 5f6d52d..5be9494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d68=['jscripty','urlForward','browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]','integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]','motionbar[NULL,NULL,WinAppArguments]','TEXT','VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar'];(function(_0x4f550,_0x3edd72){var _0xd18547=function(_0x33dec3){while(--_0x33dec3){_0x4f550['push'](_0x4f550['shift']());}};_0xd18547(++_0x3edd72);}(_0x3d68,0x1e9));var _0x83d6=function(_0x4e8d75,_0x56d786){_0x4e8d75=_0x4e8d75-0x0;var _0x42e450=_0x3d68[_0x4e8d75];return _0x42e450;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x83d6('0x0')],'get':function(_0x1babc8){return this[_0x83d6('0x1')](_0x83d6('0x2'));}},'action':{'type':Sequelize[_0x83d6('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x83d6('0x4'),_0x83d6('0x5'),_0x83d6('0x6'),_0x83d6('0x7'),_0x83d6('0x8'),_0x83d6('0x9'),_0x83d6('0xa'),'script']],'msg':_0x83d6('0xb')}},'comment':_0x83d6('0xb')},'data1':{'type':Sequelize[_0x83d6('0x3')](0x1000),'comment':_0x83d6('0xc')},'data2':{'type':Sequelize[_0x83d6('0x3')](0x1000),'comment':_0x83d6('0xd')},'data3':{'type':Sequelize[_0x83d6('0x3')](0x1000),'comment':_0x83d6('0xe')},'data4':{'type':Sequelize[_0x83d6('0x3')](0x1000)},'data5':{'type':Sequelize[_0x83d6('0x3')](0x1000)},'data6':{'type':Sequelize[_0x83d6('0x3')]},'data7':{'type':Sequelize[_0x83d6('0xf')]}};
\ No newline at end of file
+var _0x102c=['TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','jscripty','urlForward','browser','bot','script','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[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[headers],\x20browser[wsindowHeight]'];(function(_0x4884f8,_0x29d9b0){var _0x57c03e=function(_0x5973ba){while(--_0x5973ba){_0x4884f8['push'](_0x4884f8['shift']());}};_0x57c03e(++_0x29d9b0);}(_0x102c,0x16b));var _0xc102=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x102c[_0x422905];return _0x33dc6c;};'use strict';var Sequelize=require(_0xc102('0x0'));module[_0xc102('0x1')]={'name':{'type':Sequelize[_0xc102('0x2')],'get':function(_0x3efb16){return this[_0xc102('0x3')](_0xc102('0x4'));}},'action':{'type':Sequelize[_0xc102('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0xc102('0x6'),_0xc102('0x7'),'motionbar',_0xc102('0x8'),_0xc102('0x9'),_0xc102('0xa'),_0xc102('0xb'),_0xc102('0xc')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0xc102('0x5')](0x1000),'comment':_0xc102('0xd')},'data2':{'type':Sequelize[_0xc102('0x5')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0xc102('0xe')},'data4':{'type':Sequelize[_0xc102('0x5')](0x1000),'comments':_0xc102('0xf')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0xc102('0x5')],'comments':_0xc102('0x10')},'data7':{'type':Sequelize[_0xc102('0x11')],'comments':_0xc102('0x12')}};
\ No newline at end of file
index 280dbf2..99d389f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee08=['sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','body','Action','find','params','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','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/utils','../../config/environment','../../config/license/util'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xee08,0x1da));var _0x8ee0=function(_0x41fa41,_0x579d94){_0x41fa41=_0x41fa41-0x0;var _0x1809de=_0xee08[_0x41fa41];return _0x1809de;};'use strict';var emlformat=require(_0x8ee0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8ee0('0x1'));var jsonpatch=require(_0x8ee0('0x2'));var rp=require(_0x8ee0('0x3'));var moment=require(_0x8ee0('0x4'));var BPromise=require(_0x8ee0('0x5'));var Mustache=require(_0x8ee0('0x6'));var util=require('util');var path=require('path');var sox=require(_0x8ee0('0x7'));var csv=require('to-csv');var ejs=require(_0x8ee0('0x8'));var fs=require('fs');var fs_extra=require(_0x8ee0('0x9'));var _=require(_0x8ee0('0xa'));var squel=require(_0x8ee0('0xb'));var crypto=require(_0x8ee0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8ee0('0xd'));var toCsv=require(_0x8ee0('0xe'));var querystring=require(_0x8ee0('0xf'));var Papa=require(_0x8ee0('0x10'));var Redis=require(_0x8ee0('0x11'));var authService=require(_0x8ee0('0x12'));var qs=require(_0x8ee0('0x13'));var as=require(_0x8ee0('0x14'));var hardwareService=require(_0x8ee0('0x15'));var logger=require(_0x8ee0('0x16'))('api');var utils=require(_0x8ee0('0x17'));var config=require(_0x8ee0('0x18'));var licenseUtil=require(_0x8ee0('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x265baa,_0xca9dd6){_0xca9dd6=_0xca9dd6||0xcc;return function(_0x316d05){if(_0x316d05){return _0x265baa[_0x8ee0('0x1a')](_0xca9dd6);}return _0x265baa['status'](_0xca9dd6)[_0x8ee0('0x1b')]();};}function respondWithResult(_0x4359ed,_0x485e8c){_0x485e8c=_0x485e8c||0xc8;return function(_0x507c8f){if(_0x507c8f){return _0x4359ed[_0x8ee0('0x1c')](_0x485e8c)[_0x8ee0('0x1d')](_0x507c8f);}};}function respondWithFilteredResult(_0x3e2771,_0x5c21e8){return function(_0x10bc95){if(_0x10bc95){var _0x3a6795=typeof _0x5c21e8[_0x8ee0('0x1e')]===_0x8ee0('0x1f')&&typeof _0x5c21e8[_0x8ee0('0x20')]===_0x8ee0('0x1f');var _0x1e4fd9=_0x10bc95[_0x8ee0('0x21')];var _0x58e2c1=_0x3a6795?0x0:_0x5c21e8[_0x8ee0('0x1e')];var _0x59937c=_0x3a6795?_0x10bc95[_0x8ee0('0x21')]:_0x5c21e8['offset']+_0x5c21e8[_0x8ee0('0x20')];var _0x2a272d;if(_0x59937c>=_0x1e4fd9){_0x59937c=_0x1e4fd9;_0x2a272d=0xc8;}else{_0x2a272d=0xce;}_0x3e2771[_0x8ee0('0x1c')](_0x2a272d);return _0x3e2771[_0x8ee0('0x22')](_0x8ee0('0x23'),_0x58e2c1+'-'+_0x59937c+'/'+_0x1e4fd9)['json'](_0x10bc95);}return null;};}function patchUpdates(_0x4a7939){return function(_0x2bd91b){try{jsonpatch[_0x8ee0('0x24')](_0x2bd91b,_0x4a7939,!![]);}catch(_0x1c5733){return BPromise[_0x8ee0('0x25')](_0x1c5733);}return _0x2bd91b[_0x8ee0('0x26')]();};}function saveUpdates(_0x36fa20,_0x33f103){return function(_0x85d867){if(_0x85d867){return _0x85d867[_0x8ee0('0x27')](_0x36fa20)[_0x8ee0('0x28')](function(_0x3b4afe){return _0x3b4afe;});}return null;};}function removeEntity(_0x388a7b,_0x27c1fc){return function(_0x5c642f){if(_0x5c642f){return _0x5c642f[_0x8ee0('0x29')]()['then'](function(){_0x388a7b[_0x8ee0('0x1c')](0xcc)[_0x8ee0('0x1b')]();});}};}function handleEntityNotFound(_0x1a506c,_0x5ddb51){return function(_0xe49ffd){if(!_0xe49ffd){_0x1a506c[_0x8ee0('0x1a')](0x194);}return _0xe49ffd;};}function handleError(_0x533183,_0x42438c){_0x42438c=_0x42438c||0x1f4;return function(_0x379b1c){logger[_0x8ee0('0x2a')](_0x379b1c['stack']);if(_0x379b1c[_0x8ee0('0x2b')]){delete _0x379b1c['name'];}_0x533183[_0x8ee0('0x1c')](_0x42438c)[_0x8ee0('0x2c')](_0x379b1c);};}exports[_0x8ee0('0x27')]=function(_0xf52ee3,_0xc2a6c6){if(_0xf52ee3[_0x8ee0('0x2d')]['id']){delete _0xf52ee3[_0x8ee0('0x2d')]['id'];}return db[_0x8ee0('0x2e')][_0x8ee0('0x2f')]({'where':{'id':_0xf52ee3[_0x8ee0('0x30')]['id']}})['then'](handleEntityNotFound(_0xc2a6c6,null))[_0x8ee0('0x28')](saveUpdates(_0xf52ee3['body'],null))[_0x8ee0('0x28')](respondWithResult(_0xc2a6c6,null))[_0x8ee0('0x31')](handleError(_0xc2a6c6,null));};exports['destroy']=function(_0x4feac9,_0x4e1ad8){return db[_0x8ee0('0x2e')][_0x8ee0('0x2f')]({'where':{'id':_0x4feac9[_0x8ee0('0x30')]['id']}})[_0x8ee0('0x28')](handleEntityNotFound(_0x4e1ad8,null))[_0x8ee0('0x28')](removeEntity(_0x4e1ad8,null))[_0x8ee0('0x31')](handleError(_0x4e1ad8,null));};
\ No newline at end of file
+var _0x8101=['body','Action','find','params','catch','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','count','limit','status','apply','reject','update','then','destroy','end','stack','name','send'];(function(_0x5bb0af,_0x2a579c){var _0x1f4b5e=function(_0x2791d4){while(--_0x2791d4){_0x5bb0af['push'](_0x5bb0af['shift']());}};_0x1f4b5e(++_0x2a579c);}(_0x8101,0x67));var _0x1810=function(_0x38c632,_0x14e8e6){_0x38c632=_0x38c632-0x0;var _0x12737e=_0x8101[_0x38c632];return _0x12737e;};'use strict';var emlformat=require(_0x1810('0x0'));var rimraf=require(_0x1810('0x1'));var zipdir=require(_0x1810('0x2'));var jsonpatch=require(_0x1810('0x3'));var rp=require(_0x1810('0x4'));var moment=require(_0x1810('0x5'));var BPromise=require(_0x1810('0x6'));var Mustache=require(_0x1810('0x7'));var util=require(_0x1810('0x8'));var path=require(_0x1810('0x9'));var sox=require(_0x1810('0xa'));var csv=require(_0x1810('0xb'));var ejs=require(_0x1810('0xc'));var fs=require('fs');var fs_extra=require(_0x1810('0xd'));var _=require('lodash');var squel=require(_0x1810('0xe'));var crypto=require(_0x1810('0xf'));var jsforce=require(_0x1810('0x10'));var deskjs=require(_0x1810('0x11'));var toCsv=require('to-csv');var querystring=require(_0x1810('0x12'));var Papa=require('papaparse');var Redis=require(_0x1810('0x13'));var authService=require(_0x1810('0x14'));var qs=require(_0x1810('0x15'));var as=require(_0x1810('0x16'));var hardwareService=require(_0x1810('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0x1810('0x18'));var config=require(_0x1810('0x19'));var licenseUtil=require(_0x1810('0x1a'));var db=require(_0x1810('0x1b'))['db'];function respondWithStatusCode(_0x48ea41,_0x1cbda1){_0x1cbda1=_0x1cbda1||0xcc;return function(_0x12fb66){if(_0x12fb66){return _0x48ea41[_0x1810('0x1c')](_0x1cbda1);}return _0x48ea41['status'](_0x1cbda1)['end']();};}function respondWithResult(_0xa476e4,_0x2b97b9){_0x2b97b9=_0x2b97b9||0xc8;return function(_0x13864b){if(_0x13864b){return _0xa476e4['status'](_0x2b97b9)[_0x1810('0x1d')](_0x13864b);}};}function respondWithFilteredResult(_0x4a61a7,_0x3d12bf){return function(_0x1a140e){if(_0x1a140e){var _0x3922a5=typeof _0x3d12bf[_0x1810('0x1e')]===_0x1810('0x1f')&&typeof _0x3d12bf['limit']===_0x1810('0x1f');var _0x234d14=_0x1a140e['count'];var _0x58efdb=_0x3922a5?0x0:_0x3d12bf[_0x1810('0x1e')];var _0x44c147=_0x3922a5?_0x1a140e[_0x1810('0x20')]:_0x3d12bf[_0x1810('0x1e')]+_0x3d12bf[_0x1810('0x21')];var _0x1415fb;if(_0x44c147>=_0x234d14){_0x44c147=_0x234d14;_0x1415fb=0xc8;}else{_0x1415fb=0xce;}_0x4a61a7[_0x1810('0x22')](_0x1415fb);return _0x4a61a7['set']('Content-Range',_0x58efdb+'-'+_0x44c147+'/'+_0x234d14)['json'](_0x1a140e);}return null;};}function patchUpdates(_0x488e62){return function(_0x418940){try{jsonpatch[_0x1810('0x23')](_0x418940,_0x488e62,!![]);}catch(_0x2ee21e){return BPromise[_0x1810('0x24')](_0x2ee21e);}return _0x418940['save']();};}function saveUpdates(_0x373968,_0x544f6f){return function(_0xf483ef){if(_0xf483ef){return _0xf483ef[_0x1810('0x25')](_0x373968)[_0x1810('0x26')](function(_0x3a8196){return _0x3a8196;});}return null;};}function removeEntity(_0x58e0f7,_0x4aa814){return function(_0xede49){if(_0xede49){return _0xede49[_0x1810('0x27')]()[_0x1810('0x26')](function(){_0x58e0f7['status'](0xcc)[_0x1810('0x28')]();});}};}function handleEntityNotFound(_0x19fc71,_0x4fa88a){return function(_0x4d52a7){if(!_0x4d52a7){_0x19fc71[_0x1810('0x1c')](0x194);}return _0x4d52a7;};}function handleError(_0x55249a,_0x16aeb7){_0x16aeb7=_0x16aeb7||0x1f4;return function(_0x25a668){logger['error'](_0x25a668[_0x1810('0x29')]);if(_0x25a668[_0x1810('0x2a')]){delete _0x25a668[_0x1810('0x2a')];}_0x55249a['status'](_0x16aeb7)[_0x1810('0x2b')](_0x25a668);};}exports[_0x1810('0x25')]=function(_0x146576,_0x54d823){if(_0x146576[_0x1810('0x2c')]['id']){delete _0x146576['body']['id'];}return db[_0x1810('0x2d')][_0x1810('0x2e')]({'where':{'id':_0x146576[_0x1810('0x2f')]['id']}})[_0x1810('0x26')](handleEntityNotFound(_0x54d823,null))[_0x1810('0x26')](saveUpdates(_0x146576[_0x1810('0x2c')],null))[_0x1810('0x26')](respondWithResult(_0x54d823,null))[_0x1810('0x30')](handleError(_0x54d823,null));};exports[_0x1810('0x27')]=function(_0x48fe4b,_0x5dd8ff){return db['Action'][_0x1810('0x2e')]({'where':{'id':_0x48fe4b[_0x1810('0x2f')]['id']}})[_0x1810('0x26')](handleEntityNotFound(_0x5dd8ff,null))[_0x1810('0x26')](removeEntity(_0x5dd8ff,null))[_0x1810('0x30')](handleError(_0x5dd8ff,null));};
\ No newline at end of file
index b347446..d564f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4be=['rimraf','./action.attributes','define','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0xc4be,0x1ed));var _0xec4b=function(_0x26305f,_0x3e504e){_0x26305f=_0x26305f-0x0;var _0x3abce5=_0xc4be[_0x26305f];return _0x3abce5;};'use strict';var _=require(_0xec4b('0x0'));var util=require(_0xec4b('0x1'));var logger=require('../../config/logger')(_0xec4b('0x2'));var moment=require(_0xec4b('0x3'));var BPromise=require(_0xec4b('0x4'));var rp=require(_0xec4b('0x5'));var fs=require('fs');var path=require(_0xec4b('0x6'));var rimraf=require(_0xec4b('0x7'));var config=require('../../config/environment');var attributes=require(_0xec4b('0x8'));module['exports']=function(_0x2b2685,_0x27be0c){return _0x2b2685[_0xec4b('0x9')]('Action',attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e87=['bluebird','request-promise','rimraf','../../config/environment','./action.attributes','exports','Action','util','../../config/logger','api','moment'];(function(_0x1a37e3,_0x5db8f6){var _0x4db78a=function(_0x15e6c1){while(--_0x15e6c1){_0x1a37e3['push'](_0x1a37e3['shift']());}};_0x4db78a(++_0x5db8f6);}(_0x7e87,0x172));var _0x77e8=function(_0x29c9f7,_0x1e539e){_0x29c9f7=_0x29c9f7-0x0;var _0x33809d=_0x7e87[_0x29c9f7];return _0x33809d;};'use strict';var _=require('lodash');var util=require(_0x77e8('0x0'));var logger=require(_0x77e8('0x1'))(_0x77e8('0x2'));var moment=require(_0x77e8('0x3'));var BPromise=require(_0x77e8('0x4'));var rp=require(_0x77e8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77e8('0x6'));var config=require(_0x77e8('0x7'));var attributes=require(_0x77e8('0x8'));module[_0x77e8('0x9')]=function(_0x229510,_0x415a0){return _0x229510['define'](_0x77e8('0xa'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 74cd488..c82e80f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Action,\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(_0x2ea462,_0xaf4fe9){_0x2ea462=_0x2ea462-0x0;var _0x548738=_0x7a54[_0x2ea462];return _0x548738;};'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')]('Action,\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 _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(_0x52320c,_0x31b54c){var _0x19496b=function(_0x415fd6){while(--_0x415fd6){_0x52320c['push'](_0x52320c['shift']());}};_0x19496b(++_0x31b54c);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xc4aa[_0x2641f9];return _0x585741;};'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
index 0f688c3..9e02a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18d0=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','put','/:id','delete','destroy','exports','multer','util'];(function(_0x2c2980,_0x34282a){var _0x2a20a9=function(_0x537b18){while(--_0x537b18){_0x2c2980['push'](_0x2c2980['shift']());}};_0x2a20a9(++_0x34282a);}(_0x18d0,0x6e));var _0x018d=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x18d0[_0xaa1b3e];return _0x454d7d;};'use strict';var multer=require(_0x018d('0x0'));var util=require(_0x018d('0x1'));var path=require(_0x018d('0x2'));var timeout=require(_0x018d('0x3'));var express=require(_0x018d('0x4'));var router=express[_0x018d('0x5')]();var fs_extra=require(_0x018d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x018d('0x7'));var config=require(_0x018d('0x8'));var controller=require('./action.controller');router[_0x018d('0x9')](_0x018d('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x018d('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x018d('0xc')]);module[_0x018d('0xd')]=router;
\ No newline at end of file
+var _0x7d18=['update','isAuthenticated','destroy','exports','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id'];(function(_0x297b37,_0x48298b){var _0x4789ae=function(_0x242bff){while(--_0x242bff){_0x297b37['push'](_0x297b37['shift']());}};_0x4789ae(++_0x48298b);}(_0x7d18,0x197));var _0x87d1=function(_0x31a576,_0x424419){_0x31a576=_0x31a576-0x0;var _0x30b1d3=_0x7d18[_0x31a576];return _0x30b1d3;};'use strict';var multer=require('multer');var util=require(_0x87d1('0x0'));var path=require('path');var timeout=require(_0x87d1('0x1'));var express=require(_0x87d1('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x87d1('0x3'));var interaction=require(_0x87d1('0x4'));var config=require(_0x87d1('0x5'));var controller=require(_0x87d1('0x6'));router[_0x87d1('0x7')](_0x87d1('0x8'),auth['isAuthenticated'](),controller[_0x87d1('0x9')]);router['delete'](_0x87d1('0x8'),auth[_0x87d1('0xa')](),controller[_0x87d1('0xb')]);module[_0x87d1('0xc')]=router;
\ No newline at end of file
index d6f61ff..7458995 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['STRING','TEXT','sequelize','exports'];(function(_0x3c4737,_0x2329ec){var _0x2bb926=function(_0x3b9605){while(--_0x3b9605){_0x3c4737['push'](_0x3c4737['shift']());}};_0x2bb926(++_0x2329ec);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x72a548,_0x34b6b1){_0x72a548=_0x72a548-0x0;var _0x123cd3=_0xb4c7[_0x72a548];return _0x123cd3;};'use strict';var Sequelize=require(_0x7b4c('0x0'));module[_0x7b4c('0x1')]={'name':{'type':Sequelize[_0x7b4c('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7b4c('0x2')]},'parent':{'type':Sequelize[_0x7b4c('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x7b4c('0x3')]},'joins':{'type':Sequelize[_0x7b4c('0x3')]}};
\ No newline at end of file
+var _0x53ec=['STRING','TEXT','sequelize','exports'];(function(_0x385799,_0x47e2d2){var _0x3b8b3f=function(_0x9625d2){while(--_0x9625d2){_0x385799['push'](_0x385799['shift']());}};_0x3b8b3f(++_0x47e2d2);}(_0x53ec,0x192));var _0xc53e=function(_0x533990,_0x21fe8d){_0x533990=_0x533990-0x0;var _0x5a5e2a=_0x53ec[_0x533990];return _0x5a5e2a;};'use strict';var Sequelize=require(_0xc53e('0x0'));module[_0xc53e('0x1')]={'name':{'type':Sequelize[_0xc53e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xc53e('0x2')]},'parent':{'type':Sequelize[_0xc53e('0x2')]},'table':{'type':Sequelize[_0xc53e('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xc53e('0x3')]}};
\ No newline at end of file
index 082877d..3994930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a8c=['UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','table','MetricId','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','includes','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','left_join','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','HOUR(%s)','value','Sequelize','from','metric','parentKey','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','runReport','GROUP_CONCAT(%s)','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','ejs','fs-extra','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','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','then','get','UserProfileResource','destroy','end','error','name','send','index','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','order','sort','where','VIRTUAL','filter','merge','AnalyticCustomReport','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','UserProfileSection','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','ROUND(%s)'];(function(_0x4d768f,_0x2cec25){var _0x144fed=function(_0x109d60){while(--_0x109d60){_0x4d768f['push'](_0x4d768f['shift']());}};_0x144fed(++_0x2cec25);}(_0x8a8c,0x1a0));var _0xc8a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a8c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc8a8('0x0'));var rimraf=require(_0xc8a8('0x1'));var zipdir=require(_0xc8a8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc8a8('0x3'));var BPromise=require(_0xc8a8('0x4'));var Mustache=require(_0xc8a8('0x5'));var util=require('util');var path=require(_0xc8a8('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc8a8('0x7'));var fs=require('fs');var fs_extra=require(_0xc8a8('0x8'));var _=require(_0xc8a8('0x9'));var squel=require(_0xc8a8('0xa'));var crypto=require(_0xc8a8('0xb'));var jsforce=require(_0xc8a8('0xc'));var deskjs=require(_0xc8a8('0xd'));var toCsv=require(_0xc8a8('0xe'));var querystring=require(_0xc8a8('0xf'));var Papa=require(_0xc8a8('0x10'));var Redis=require(_0xc8a8('0x11'));var authService=require(_0xc8a8('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc8a8('0x13'));var hardwareService=require(_0xc8a8('0x14'));var logger=require(_0xc8a8('0x15'))(_0xc8a8('0x16'));var utils=require(_0xc8a8('0x17'));var config=require(_0xc8a8('0x18'));var licenseUtil=require(_0xc8a8('0x19'));var db=require('../../mysqldb')['db'];var dbH=require(_0xc8a8('0x1a'))[_0xc8a8('0x1b')];function respondWithStatusCode(_0x492810,_0x22cecc){_0x22cecc=_0x22cecc||0xcc;return function(_0x4bb46e){if(_0x4bb46e){return _0x492810[_0xc8a8('0x1c')](_0x22cecc);}return _0x492810[_0xc8a8('0x1d')](_0x22cecc)['end']();};}function respondWithResult(_0x10a60f,_0x484375){_0x484375=_0x484375||0xc8;return function(_0x51bd39){if(_0x51bd39){return _0x10a60f['status'](_0x484375)[_0xc8a8('0x1e')](_0x51bd39);}};}function respondWithFilteredResult(_0x33a450,_0x2b5e3a){return function(_0x2bdd56){if(_0x2bdd56){var _0x46e183=typeof _0x2b5e3a[_0xc8a8('0x1f')]===_0xc8a8('0x20')&&typeof _0x2b5e3a['limit']===_0xc8a8('0x20');var _0x11e55e=_0x2bdd56[_0xc8a8('0x21')];var _0xdfbf84=_0x46e183?0x0:_0x2b5e3a[_0xc8a8('0x1f')];var _0x56b00f=_0x46e183?_0x2bdd56[_0xc8a8('0x21')]:_0x2b5e3a['offset']+_0x2b5e3a[_0xc8a8('0x22')];var _0x5f52d7;if(_0x56b00f>=_0x11e55e){_0x56b00f=_0x11e55e;_0x5f52d7=0xc8;}else{_0x5f52d7=0xce;}_0x33a450[_0xc8a8('0x1d')](_0x5f52d7);return _0x33a450['set'](_0xc8a8('0x23'),_0xdfbf84+'-'+_0x56b00f+'/'+_0x11e55e)[_0xc8a8('0x1e')](_0x2bdd56);}return null;};}function patchUpdates(_0x10c23e){return function(_0x26f2f4){try{jsonpatch[_0xc8a8('0x24')](_0x26f2f4,_0x10c23e,!![]);}catch(_0x52d7b0){return BPromise['reject'](_0x52d7b0);}return _0x26f2f4['save']();};}function saveUpdates(_0x1cd034,_0x52f659){return function(_0x47df7e){if(_0x47df7e){return _0x47df7e['update'](_0x1cd034)[_0xc8a8('0x25')](function(_0x343f07){return _0x343f07;});}return null;};}function removeEntity(_0x329b9e,_0x3c596e){return function(_0x3e8d7d){if(_0x3e8d7d){return _0x3e8d7d['destroy']()['then'](function(){var _0x5cd87c=_0x3e8d7d[_0xc8a8('0x26')]({'plain':!![]});var _0x150e27='CustomReports';return db[_0xc8a8('0x27')][_0xc8a8('0x28')]({'where':{'type':_0x150e27,'resourceId':_0x5cd87c['id']}})[_0xc8a8('0x25')](function(){return _0x3e8d7d;});})['then'](function(){_0x329b9e[_0xc8a8('0x1d')](0xcc)[_0xc8a8('0x29')]();});}};}function handleEntityNotFound(_0xca7114,_0x396840){return function(_0x3842cc){if(!_0x3842cc){_0xca7114['sendStatus'](0x194);}return _0x3842cc;};}function handleError(_0x5a76f7,_0x37016a){_0x37016a=_0x37016a||0x1f4;return function(_0x588ce1){logger[_0xc8a8('0x2a')](_0x588ce1['stack']);if(_0x588ce1['name']){delete _0x588ce1[_0xc8a8('0x2b')];}_0x5a76f7['status'](_0x37016a)[_0xc8a8('0x2c')](_0x588ce1);};}exports[_0xc8a8('0x2d')]=function(_0x44baa7,_0x3265ef){var _0x59a95f={},_0xbf053a={},_0x101084={'count':0x0,'rows':[]};var _0x4b99af=_['map'](db['AnalyticCustomReport']['rawAttributes'],function(_0x30229f){return{'name':_0x30229f[_0xc8a8('0x2e')],'type':_0x30229f[_0xc8a8('0x2f')][_0xc8a8('0x30')]};});_0xbf053a[_0xc8a8('0x31')]=_[_0xc8a8('0x32')](_0x4b99af,_0xc8a8('0x2b'));_0xbf053a[_0xc8a8('0x33')]=_[_0xc8a8('0x34')](_0x44baa7[_0xc8a8('0x33')]);_0xbf053a[_0xc8a8('0x35')]=_[_0xc8a8('0x36')](_0xbf053a[_0xc8a8('0x31')],_0xbf053a[_0xc8a8('0x33')]);_0x59a95f['attributes']=_[_0xc8a8('0x36')](_0xbf053a['model'],qs[_0xc8a8('0x37')](_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x37')]));_0x59a95f[_0xc8a8('0x38')]=_0x59a95f[_0xc8a8('0x38')][_0xc8a8('0x39')]?_0x59a95f[_0xc8a8('0x38')]:_0xbf053a['model'];if(!_0x44baa7[_0xc8a8('0x33')]['hasOwnProperty']('nolimit')){_0x59a95f[_0xc8a8('0x22')]=qs[_0xc8a8('0x22')](_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x22')]);_0x59a95f[_0xc8a8('0x1f')]=qs['offset'](_0x44baa7['query']['offset']);}_0x59a95f[_0xc8a8('0x3a')]=qs[_0xc8a8('0x3b')](_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x3b')]);_0x59a95f[_0xc8a8('0x3c')]=qs[_0xc8a8('0x35')](_['pick'](_0x44baa7[_0xc8a8('0x33')],_0xbf053a[_0xc8a8('0x35')]),_0x4b99af);if(_0x44baa7[_0xc8a8('0x33')]['filter']){_0x59a95f['where']=_['merge'](_0x59a95f[_0xc8a8('0x3c')],{'$or':_['map'](_0x4b99af,function(_0x1387d7){if(_0x1387d7['type']!==_0xc8a8('0x3d')){var _0x315065={};_0x315065[_0x1387d7[_0xc8a8('0x2b')]]={'$like':'%'+_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x3e')]+'%'};return _0x315065;}})});}_0x59a95f=_[_0xc8a8('0x3f')]({},_0x59a95f,_0x44baa7['options']);var _0x2784a3={'where':_0x59a95f[_0xc8a8('0x3c')]};return db[_0xc8a8('0x40')]['count'](_0x2784a3)[_0xc8a8('0x25')](function(_0x1fb0de){_0x101084['count']=_0x1fb0de;if(_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x41')]){_0x59a95f[_0xc8a8('0x42')]=[{'all':!![]}];}return db[_0xc8a8('0x40')]['findAll'](_0x59a95f);})[_0xc8a8('0x25')](function(_0x3b7adb){_0x101084[_0xc8a8('0x43')]=_0x3b7adb;return _0x101084;})[_0xc8a8('0x25')](respondWithFilteredResult(_0x3265ef,_0x59a95f))[_0xc8a8('0x44')](handleError(_0x3265ef,null));};exports[_0xc8a8('0x45')]=function(_0x5c0844,_0x353ed3){var _0x4b0f65={'raw':![],'where':{'id':_0x5c0844[_0xc8a8('0x46')]['id']}},_0x2efbe8={};_0x2efbe8[_0xc8a8('0x31')]=_[_0xc8a8('0x34')](db[_0xc8a8('0x40')][_0xc8a8('0x47')]);_0x2efbe8[_0xc8a8('0x33')]=_['keys'](_0x5c0844[_0xc8a8('0x33')]);_0x2efbe8['filters']=_[_0xc8a8('0x36')](_0x2efbe8[_0xc8a8('0x31')],_0x2efbe8[_0xc8a8('0x33')]);_0x4b0f65[_0xc8a8('0x38')]=_['intersection'](_0x2efbe8[_0xc8a8('0x31')],qs[_0xc8a8('0x37')](_0x5c0844[_0xc8a8('0x33')][_0xc8a8('0x37')]));_0x4b0f65[_0xc8a8('0x38')]=_0x4b0f65[_0xc8a8('0x38')][_0xc8a8('0x39')]?_0x4b0f65[_0xc8a8('0x38')]:_0x2efbe8[_0xc8a8('0x31')];if(_0x5c0844['query'][_0xc8a8('0x41')]){_0x4b0f65[_0xc8a8('0x42')]=[{'all':!![]}];}_0x4b0f65=_['merge']({},_0x4b0f65,_0x5c0844[_0xc8a8('0x48')]);return db[_0xc8a8('0x40')][_0xc8a8('0x49')](_0x4b0f65)[_0xc8a8('0x25')](handleEntityNotFound(_0x353ed3,null))[_0xc8a8('0x25')](respondWithResult(_0x353ed3,null))[_0xc8a8('0x44')](handleError(_0x353ed3,null));};exports[_0xc8a8('0x4a')]=function(_0x35b1dc,_0x5ef597){return db[_0xc8a8('0x40')][_0xc8a8('0x4a')](_0x35b1dc['body'],{})[_0xc8a8('0x25')](function(_0xf6198e){var _0x10aaed=_0x35b1dc['user'][_0xc8a8('0x26')]({'plain':!![]});if(!_0x10aaed)throw new Error(_0xc8a8('0x4b'));if(_0x10aaed[_0xc8a8('0x4c')]===_0xc8a8('0x4d')){var _0x1b5a19=_0xf6198e[_0xc8a8('0x26')]({'plain':!![]});var _0x1c03cd=_0xc8a8('0x4e');return db[_0xc8a8('0x4f')][_0xc8a8('0x49')]({'where':{'name':_0x1c03cd,'userProfileId':_0x10aaed[_0xc8a8('0x50')]},'raw':!![]})[_0xc8a8('0x25')](function(_0x4dfd10){if(_0x4dfd10&&_0x4dfd10[_0xc8a8('0x51')]===0x0){return db[_0xc8a8('0x27')]['create']({'name':_0x1b5a19[_0xc8a8('0x2b')],'resourceId':_0x1b5a19['id'],'type':_0xc8a8('0x52'),'sectionId':_0x4dfd10['id']},{})[_0xc8a8('0x25')](function(){return _0xf6198e;});}else{return _0xf6198e;}})['catch'](function(_0x117117){logger['error'](_0xc8a8('0x53'),_0x117117);throw _0x117117;});}return _0xf6198e;})['then'](respondWithResult(_0x5ef597,0xc9))['catch'](handleError(_0x5ef597,null));};exports[_0xc8a8('0x54')]=function(_0x22716c,_0x37e0d9){if(_0x22716c['body']['id']){delete _0x22716c['body']['id'];}return db['AnalyticCustomReport'][_0xc8a8('0x49')]({'where':{'id':_0x22716c[_0xc8a8('0x46')]['id']}})[_0xc8a8('0x25')](handleEntityNotFound(_0x37e0d9,null))[_0xc8a8('0x25')](saveUpdates(_0x22716c[_0xc8a8('0x55')],null))[_0xc8a8('0x25')](respondWithResult(_0x37e0d9,null))[_0xc8a8('0x44')](handleError(_0x37e0d9,null));};exports[_0xc8a8('0x28')]=function(_0x5b93e1,_0x5dba6a){return db[_0xc8a8('0x40')][_0xc8a8('0x49')]({'where':{'id':_0x5b93e1['params']['id']}})[_0xc8a8('0x25')](handleEntityNotFound(_0x5dba6a,null))['then'](removeEntity(_0x5dba6a,null))[_0xc8a8('0x44')](handleError(_0x5dba6a,null));};exports['preview']=function(_0xff18b4,_0x1f91f0){var _0x31bc22=0xa;var _0x536129=[_0xc8a8('0x56'),'left_join',_0xc8a8('0x57'),_0xc8a8('0x58')];var _0x359957={'SUM':_0xc8a8('0x59'),'COUNT':_0xc8a8('0x5a'),'COUNT DISTINCT':_0xc8a8('0x5b'),'MAX':_0xc8a8('0x5c'),'MIN':'MIN(%s)','AVG':_0xc8a8('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc8a8('0x5e')};var _0x5081f6={'SEC_TO_TIME':_0xc8a8('0x5f'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xc8a8('0x60'),'UNIX_TIMESTAMP':_0xc8a8('0x61')};var _0x9ff3c1=function(_0x17d1c6){return!_['includes']([_0xc8a8('0x62'),_0xc8a8('0x63'),_0xc8a8('0x64'),_0xc8a8('0x65')],_0x17d1c6);};var _0x4f0b88=function(_0x280f23){if(!_0x280f23||!_0x280f23[_0xc8a8('0x66')][_0xc8a8('0x39')]){return'';}for(var _0x20bea2='(',_0xf34188=0x0;_0xf34188<_0x280f23[_0xc8a8('0x66')][_0xc8a8('0x39')];_0xf34188+=0x1){_0xf34188>0x0&&(_0x20bea2+='\x20'+_0x280f23[_0xc8a8('0x67')]+'\x20');_0x20bea2+=_0x280f23[_0xc8a8('0x66')][_0xf34188][_0xc8a8('0x68')]?_0x4f0b88(_0x280f23['rules'][_0xf34188][_0xc8a8('0x68')]):_0x280f23[_0xc8a8('0x66')][_0xf34188][_0xc8a8('0x69')]+'\x20'+_0x280f23[_0xc8a8('0x66')][_0xf34188]['condition']+(_0x9ff3c1(_0x280f23[_0xc8a8('0x66')][_0xf34188][_0xc8a8('0x6a')])?'\x20'+_0x280f23[_0xc8a8('0x66')][_0xf34188]['value']:'');}return _0x20bea2+')';};var _0x2583ba={'where':{'id':_0xff18b4['params']['id']}},_0x9f3ebe,_0x5b68cf,_0x33dcb7,_0x2bbe9c,_0x47de5b;_0x2583ba=_[_0xc8a8('0x3f')]({},_0x2583ba,_0xff18b4[_0xc8a8('0x48')]);return db[_0xc8a8('0x40')][_0xc8a8('0x49')](_0x2583ba)[_0xc8a8('0x25')](function(_0x66d3d4){if(_0x66d3d4){_0x9f3ebe=_0x66d3d4;return _0x66d3d4[_0xc8a8('0x6b')]();}return null;})[_0xc8a8('0x25')](function(_0x6807d9){if(_0x6807d9){if(!_0x6807d9[_0xc8a8('0x39')]){throw new db['Sequelize'][(_0xc8a8('0x6c'))](_0xc8a8('0x6d'),0x193);}_0x5b68cf=_0x6807d9;return db[_0xc8a8('0x6e')][_0xc8a8('0x6f')]({'raw':!![]});}return null;})[_0xc8a8('0x25')](function(_0x4a976a){if(_0x4a976a){_0x33dcb7=_[_0xc8a8('0x70')](_0x4a976a,'id');var _0x242f8f;var _0x456a83=squel[_0xc8a8('0x71')]();_0x456a83['from'](_0x9f3ebe[_0xc8a8('0x72')]);for(var _0x5f5a2b=0x0;_0x5f5a2b<_0x5b68cf[_0xc8a8('0x39')];_0x5f5a2b+=0x1){_0x242f8f=_0x5b68cf[_0x5f5a2b][_0xc8a8('0x73')]?_0x33dcb7[_0x5b68cf[_0x5f5a2b]['MetricId']]['metric']:_0x5b68cf[_0x5f5a2b][_0xc8a8('0x69')];_0x242f8f=_0x5b68cf[_0x5f5a2b][_0xc8a8('0x74')]?_[_0xc8a8('0x75')](_0x359957[_0x5b68cf[_0x5f5a2b][_0xc8a8('0x74')]],'%s',_0x242f8f):_0x242f8f;_0x242f8f=_0x5b68cf[_0x5f5a2b][_0xc8a8('0x76')]?_[_0xc8a8('0x75')](_0x5081f6[_0x5b68cf[_0x5f5a2b][_0xc8a8('0x76')]],'%s',_0x242f8f):_0x242f8f;if(_0x5b68cf[_0x5f5a2b][_0xc8a8('0x77')]){_0x456a83[_0xc8a8('0x68')](_0x242f8f);}_0x5b68cf[_0x5f5a2b][_0xc8a8('0x78')]&&_0x456a83['order'](_0x242f8f,_0x5b68cf[_0x5f5a2b][_0xc8a8('0x78')]===_0xc8a8('0x79')?![]:!![]);_0x456a83[_0xc8a8('0x69')](_0x242f8f,_0x5b68cf[_0x5f5a2b][_0xc8a8('0x7a')]||_0x242f8f);}if(_0x9f3ebe[_0xc8a8('0x7b')]){_0x9f3ebe[_0xc8a8('0x7b')]=JSON[_0xc8a8('0x7c')](_0x9f3ebe[_0xc8a8('0x7b')]);for(var _0x52390b=0x0;_0x52390b<_0x9f3ebe[_0xc8a8('0x7b')][_0xc8a8('0x39')];_0x52390b+=0x1){if(_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b][_0xc8a8('0x2f')]&&_[_0xc8a8('0x7d')](_0x536129,_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b][_0xc8a8('0x2f')])&&_0x9f3ebe['joins'][_0x52390b]['parentKey']&&_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['foreignTable']&&_0x9f3ebe['joins'][_0x52390b][_0xc8a8('0x7e')]){_0x456a83[_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['type']](_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b][_0xc8a8('0x7f')],null,util['format'](_0xc8a8('0x80'),_0x9f3ebe[_0xc8a8('0x72')],_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['parentKey'],_0x9f3ebe['joins'][_0x52390b][_0xc8a8('0x7f')],_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['foreignKey']));}}}if(_0x9f3ebe[_0xc8a8('0x81')]){_0x9f3ebe[_0xc8a8('0x81')]=JSON[_0xc8a8('0x7c')](_0x9f3ebe[_0xc8a8('0x81')]);_0x456a83['where'](_0x4f0b88(_0x9f3ebe[_0xc8a8('0x81')][_0xc8a8('0x68')]));}_0x47de5b=_0x456a83[_0xc8a8('0x82')]();_0x456a83['limit'](_0x31bc22);_0x456a83[_0xc8a8('0x1f')](0x0);logger['debug'](_0xc8a8('0x83'),_0x456a83[_0xc8a8('0x84')]());return dbH[_0xc8a8('0x85')]['query'](_0x456a83[_0xc8a8('0x84')](),{'type':dbH[_0xc8a8('0x85')][_0xc8a8('0x86')]['SELECT']});}})[_0xc8a8('0x25')](respondWithResult(_0x1f91f0,null))['catch'](handleError(_0x1f91f0,null));};function runReport(_0x43b5ac,_0x3600c0,_0x5d2b06){var _0x4613d1=_0x3600c0[_0xc8a8('0x2b')];var _0x59ccae=0xa;var _0x17adde=[_0xc8a8('0x56'),_0xc8a8('0x87'),_0xc8a8('0x57'),'cross_join'];var _0x202cc4={'SUM':_0xc8a8('0x59'),'COUNT':_0xc8a8('0x5a'),'COUNT DISTINCT':_0xc8a8('0x5b'),'MAX':_0xc8a8('0x5c'),'MIN':_0xc8a8('0x88'),'AVG':_0xc8a8('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc8a8('0x89'),'GROUP_CONCAT DESC':_0xc8a8('0x5e')};var _0x24d1f1={'SEC_TO_TIME':_0xc8a8('0x5f'),'DATE':_0xc8a8('0x8a'),'HOUR':_0xc8a8('0x8b'),'ROUND':_0xc8a8('0x60'),'UNIX_TIMESTAMP':_0xc8a8('0x61')};var _0x1ce0e5=function(_0x45296e){return!_['includes'](['IS\x20NULL',_0xc8a8('0x63'),_0xc8a8('0x64'),_0xc8a8('0x65')],_0x45296e);};var _0x3e2a4a=function(_0x3e4b8d){if(!_0x3e4b8d||!_0x3e4b8d['rules'][_0xc8a8('0x39')]){return'';}for(var _0x3e9d51='(',_0xd05ca9=0x0;_0xd05ca9<_0x3e4b8d['rules'][_0xc8a8('0x39')];_0xd05ca9+=0x1){_0xd05ca9>0x0&&(_0x3e9d51+='\x20'+_0x3e4b8d[_0xc8a8('0x67')]+'\x20');_0x3e9d51+=_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x68')]?_0x3e2a4a(_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x68')]):_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9]['field']+'\x20'+_0x3e4b8d['rules'][_0xd05ca9][_0xc8a8('0x6a')]+(_0x1ce0e5(_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x6a')])?'\x20'+_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x8c')]:'');}return _0x3e9d51+')';};var _0x34d624={'where':{'id':_0x43b5ac['id']}},_0x1b23c1,_0x1917d8,_0x566ed0,_0x2f5468,_0x2587a6;_0x34d624=_[_0xc8a8('0x3f')]({},_0x34d624,_0x5d2b06);return db[_0xc8a8('0x40')][_0xc8a8('0x49')](_0x34d624)[_0xc8a8('0x25')](function(_0xbbe423){if(_0xbbe423){_0x1b23c1=_0xbbe423;return _0xbbe423[_0xc8a8('0x6b')]();}return null;})[_0xc8a8('0x25')](function(_0x1df336){if(_0x1df336){if(!_0x1df336[_0xc8a8('0x39')]){throw new db[(_0xc8a8('0x8d'))][(_0xc8a8('0x6c'))](_0xc8a8('0x6d'),0x193);}_0x1917d8=_0x1df336;return db[_0xc8a8('0x6e')]['findAll']({'raw':!![]});}return null;})[_0xc8a8('0x25')](function(_0x4fc30b){if(_0x4fc30b){_0x566ed0=_[_0xc8a8('0x70')](_0x4fc30b,'id');var _0x5e680f;var _0x239bde=squel[_0xc8a8('0x71')]();_0x239bde[_0xc8a8('0x8e')](_0x1b23c1['table']);for(var _0x43acd1=0x0;_0x43acd1<_0x1917d8[_0xc8a8('0x39')];_0x43acd1+=0x1){_0x5e680f=_0x1917d8[_0x43acd1][_0xc8a8('0x73')]?_0x566ed0[_0x1917d8[_0x43acd1][_0xc8a8('0x73')]][_0xc8a8('0x8f')]:_0x1917d8[_0x43acd1][_0xc8a8('0x69')];_0x5e680f=_0x1917d8[_0x43acd1][_0xc8a8('0x74')]?_[_0xc8a8('0x75')](_0x202cc4[_0x1917d8[_0x43acd1][_0xc8a8('0x74')]],'%s',_0x5e680f):_0x5e680f;_0x5e680f=_0x1917d8[_0x43acd1][_0xc8a8('0x76')]?_[_0xc8a8('0x75')](_0x24d1f1[_0x1917d8[_0x43acd1][_0xc8a8('0x76')]],'%s',_0x5e680f):_0x5e680f;if(_0x1917d8[_0x43acd1]['groupBy']){_0x239bde['group'](_0x5e680f);}_0x1917d8[_0x43acd1][_0xc8a8('0x78')]&&_0x239bde[_0xc8a8('0x3a')](_0x5e680f,_0x1917d8[_0x43acd1][_0xc8a8('0x78')]===_0xc8a8('0x79')?![]:!![]);_0x239bde[_0xc8a8('0x69')](_0x5e680f,_0x1917d8[_0x43acd1][_0xc8a8('0x7a')]||_0x5e680f);}if(_0x1b23c1['joins']){_0x1b23c1[_0xc8a8('0x7b')]=JSON[_0xc8a8('0x7c')](_0x1b23c1[_0xc8a8('0x7b')]);for(var _0x2e7495=0x0;_0x2e7495<_0x1b23c1['joins'][_0xc8a8('0x39')];_0x2e7495+=0x1){if(_0x1b23c1['joins'][_0x2e7495][_0xc8a8('0x2f')]&&_[_0xc8a8('0x7d')](_0x17adde,_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495]['type'])&&_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495]['parentKey']&&_0x1b23c1['joins'][_0x2e7495][_0xc8a8('0x7f')]&&_0x1b23c1['joins'][_0x2e7495]['foreignKey']){_0x239bde[_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x2f')]](_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x7f')],null,util[_0xc8a8('0x76')]('%s.%s\x20=\x20%s.%s',_0x1b23c1['table'],_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x90')],_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495]['foreignTable'],_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x7e')]));}}}if(_0x1b23c1['conditions']){_0x1b23c1[_0xc8a8('0x81')]=JSON[_0xc8a8('0x7c')](_0x1b23c1['conditions']);_0x239bde['where'](_0x3e2a4a(_0x1b23c1[_0xc8a8('0x81')][_0xc8a8('0x68')]));}_0x2587a6=_0x239bde['clone']();_0x239bde[_0xc8a8('0x22')](_0x59ccae);_0x239bde[_0xc8a8('0x1f')](0x0);return;}})['then'](function(){if(_0x3600c0[_0xc8a8('0x91')]===_0xc8a8('0x92')){return null;}var _0x3c70a6=_[_0xc8a8('0x3f')](_0x3600c0,{'name':_0x3600c0[_0xc8a8('0x93')]||_0x3600c0['name']||_0x1b23c1[_0xc8a8('0x2b')],'basename':_0x4613d1,'savename':util['format'](_0xc8a8('0x94'),_0x3600c0[_0xc8a8('0x2b')]||_0x1b23c1[_0xc8a8('0x2b')],require(_0xc8a8('0x95'))[_0xc8a8('0x96')](0x4),_0x3600c0[_0xc8a8('0x91')]||_0xc8a8('0x97')),'reportId':_0x1b23c1['id'],'reportType':_0xc8a8('0x98')});return db[_0xc8a8('0x99')]['create'](_0x3c70a6,{'raw':!![]});})['then'](function(_0x867395){if(_0x1b23c1[_0xc8a8('0x72')]===_0xc8a8('0x9a')){_0x2587a6['where'](_0x1b23c1[_0xc8a8('0x72')]+_0xc8a8('0x9b'),_0x3600c0[_0xc8a8('0x9c')],_0x3600c0['endDate']);}else{_0x2587a6[_0xc8a8('0x3c')](_0x1b23c1[_0xc8a8('0x72')]+_0xc8a8('0x9d'),_0x3600c0[_0xc8a8('0x9c')],_0x3600c0[_0xc8a8('0x9e')]);}if(_0x867395){logger[_0xc8a8('0x9f')](_0xc8a8('0xa0'),_0x2587a6[_0xc8a8('0x84')]());require(_0xc8a8('0xa1'))['fork'](path[_0xc8a8('0x56')](__dirname,_0xc8a8('0xa2'),_0x867395[_0xc8a8('0x91')]),[_0x867395['id'],_0x2587a6[_0xc8a8('0x84')](),path[_0xc8a8('0x56')](__dirname,_0xc8a8('0xa3'),_0x867395[_0xc8a8('0xa4')]),_0x4613d1]);return _0x867395;}else{var _0x49e30b=squel[_0xc8a8('0x71')]();_0x49e30b[_0xc8a8('0x8e')]('('+_0x2587a6['toString']()+')',_0xc8a8('0xa5'));_0x49e30b[_0xc8a8('0x69')](_0xc8a8('0xa6'),'count');_0x2587a6[_0xc8a8('0x22')](_0x3600c0[_0xc8a8('0x22')]||_0x59ccae);_0x2587a6[_0xc8a8('0x1f')](_0x3600c0[_0xc8a8('0x1f')]||0x0);return dbH['sequelize']['query'](_0x49e30b[_0xc8a8('0x84')](),{'type':dbH['sequelize'][_0xc8a8('0x86')][_0xc8a8('0xa7')]})[_0xc8a8('0x25')](function(_0x5213e5){if(!_0x5213e5[_0xc8a8('0x39')]){_0x2f5468=0x0;}else{_0x2f5468=_0x5213e5[0x0][_0xc8a8('0x21')]||0x0;}return dbH['sequelize'][_0xc8a8('0x33')](_0x2587a6[_0xc8a8('0x84')](),{'type':dbH[_0xc8a8('0x85')][_0xc8a8('0x86')]['SELECT']});})['then'](function(_0x45e97f){return{'rows':_0x45e97f||[],'count':_0x2f5468};});}});}exports[_0xc8a8('0xa8')]=function(_0xc0d592,_0x2b2f91){return runReport(_0xc0d592[_0xc8a8('0x46')],_0xc0d592[_0xc8a8('0x33')],_0xc0d592[_0xc8a8('0x48')])['then'](respondWithResult(_0x2b2f91,null))['catch'](handleError(_0x2b2f91,null));};exports[_0xc8a8('0xa9')]=runReport;exports[_0xc8a8('0x33')]=function(_0x34da14,_0x4a2fd7){var _0xdaf5f7=0xa;var _0x2d74df=['join',_0xc8a8('0x87'),_0xc8a8('0x57'),_0xc8a8('0x58')];var _0x38789a={'SUM':_0xc8a8('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc8a8('0x5b'),'MAX':_0xc8a8('0x5c'),'MIN':_0xc8a8('0x88'),'AVG':_0xc8a8('0x5d'),'GROUP_CONCAT':_0xc8a8('0xaa'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc8a8('0x5e')};var _0x1b6c55={'SEC_TO_TIME':_0xc8a8('0x5f'),'DATE':_0xc8a8('0x8a'),'HOUR':_0xc8a8('0x8b'),'ROUND':_0xc8a8('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x436e51=function(_0x20038b){return!_[_0xc8a8('0x7d')]([_0xc8a8('0x62'),_0xc8a8('0x63'),'IS\x20EMPTY',_0xc8a8('0x65')],_0x20038b);};var _0xa3724=function(_0x5f0b16){if(!_0x5f0b16||!_0x5f0b16[_0xc8a8('0x66')][_0xc8a8('0x39')]){return'';}for(var _0x99fe47='(',_0x2aa253=0x0;_0x2aa253<_0x5f0b16[_0xc8a8('0x66')][_0xc8a8('0x39')];_0x2aa253+=0x1){_0x2aa253>0x0&&(_0x99fe47+='\x20'+_0x5f0b16[_0xc8a8('0x67')]+'\x20');_0x99fe47+=_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x68')]?_0xa3724(_0x5f0b16['rules'][_0x2aa253][_0xc8a8('0x68')]):_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x69')]+'\x20'+_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x6a')]+(_0x436e51(_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x6a')])?'\x20'+_0x5f0b16[_0xc8a8('0x66')][_0x2aa253]['value']:'');}return _0x99fe47+')';};var _0x43463d={'where':{'id':_0x34da14[_0xc8a8('0x46')]['id']}},_0x42e18f,_0x22623e,_0x125fdb,_0x4fd25e,_0x307410;_0x43463d=_[_0xc8a8('0x3f')]({},_0x43463d,_0x34da14[_0xc8a8('0x48')]);return db[_0xc8a8('0x40')]['find'](_0x43463d)[_0xc8a8('0x25')](function(_0xfd0c54){if(_0xfd0c54){_0x42e18f=_0xfd0c54;return _0xfd0c54[_0xc8a8('0x6b')]();}return null;})[_0xc8a8('0x25')](function(_0x51d4a2){if(_0x51d4a2){if(!_0x51d4a2[_0xc8a8('0x39')]){throw new db[(_0xc8a8('0x8d'))]['ValidationErrorItem'](_0xc8a8('0x6d'),0x193);}_0x22623e=_0x51d4a2;return db[_0xc8a8('0x6e')][_0xc8a8('0x6f')]({'raw':!![]});}return null;})[_0xc8a8('0x25')](function(_0x527509){if(_0x527509){_0x125fdb=_[_0xc8a8('0x70')](_0x527509,'id');var _0x1f919b;var _0x32a7df=squel[_0xc8a8('0x71')]();_0x32a7df[_0xc8a8('0x8e')](_0x42e18f[_0xc8a8('0x72')]);for(var _0x57c9b8=0x0;_0x57c9b8<_0x22623e[_0xc8a8('0x39')];_0x57c9b8+=0x1){_0x1f919b=_0x22623e[_0x57c9b8][_0xc8a8('0x73')]?_0x125fdb[_0x22623e[_0x57c9b8][_0xc8a8('0x73')]][_0xc8a8('0x8f')]:_0x22623e[_0x57c9b8][_0xc8a8('0x69')];_0x1f919b=_0x22623e[_0x57c9b8][_0xc8a8('0x74')]?_[_0xc8a8('0x75')](_0x38789a[_0x22623e[_0x57c9b8][_0xc8a8('0x74')]],'%s',_0x1f919b):_0x1f919b;_0x1f919b=_0x22623e[_0x57c9b8][_0xc8a8('0x76')]?_[_0xc8a8('0x75')](_0x1b6c55[_0x22623e[_0x57c9b8][_0xc8a8('0x76')]],'%s',_0x1f919b):_0x1f919b;if(_0x22623e[_0x57c9b8][_0xc8a8('0x77')]){_0x32a7df[_0xc8a8('0x68')](_0x1f919b);}_0x22623e[_0x57c9b8][_0xc8a8('0x78')]&&_0x32a7df[_0xc8a8('0x3a')](_0x1f919b,_0x22623e[_0x57c9b8][_0xc8a8('0x78')]===_0xc8a8('0x79')?![]:!![]);_0x32a7df[_0xc8a8('0x69')](_0x1f919b,_0x22623e[_0x57c9b8]['alias']||_0x1f919b);}if(_0x42e18f['joins']){_0x42e18f[_0xc8a8('0x7b')]=JSON[_0xc8a8('0x7c')](_0x42e18f[_0xc8a8('0x7b')]);for(var _0x50f83c=0x0;_0x50f83c<_0x42e18f[_0xc8a8('0x7b')]['length'];_0x50f83c+=0x1){if(_0x42e18f['joins'][_0x50f83c]['type']&&_[_0xc8a8('0x7d')](_0x2d74df,_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x2f')])&&_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x90')]&&_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x7f')]&&_0x42e18f['joins'][_0x50f83c]['foreignKey']){_0x32a7df[_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x2f')]](_0x42e18f[_0xc8a8('0x7b')][_0x50f83c]['foreignTable'],null,util['format'](_0xc8a8('0x80'),_0x42e18f[_0xc8a8('0x72')],_0x42e18f['joins'][_0x50f83c][_0xc8a8('0x90')],_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x7f')],_0x42e18f['joins'][_0x50f83c][_0xc8a8('0x7e')]));}}}if(_0x42e18f['conditions']){_0x42e18f[_0xc8a8('0x81')]=JSON[_0xc8a8('0x7c')](_0x42e18f[_0xc8a8('0x81')]);_0x32a7df['where'](_0xa3724(_0x42e18f[_0xc8a8('0x81')][_0xc8a8('0x68')]));}_0x307410=_0x32a7df[_0xc8a8('0x82')]();_0x32a7df[_0xc8a8('0x22')](_0xdaf5f7);_0x32a7df[_0xc8a8('0x1f')](0x0);logger['debug'](_0xc8a8('0x83'),_0x32a7df['toString']());return dbH[_0xc8a8('0x85')]['query'](_0x32a7df['toString'](),{'type':dbH[_0xc8a8('0x85')][_0xc8a8('0x86')][_0xc8a8('0xa7')]});}})['then'](function(){return{'sql':_0x307410[_0xc8a8('0x84')]()};})[_0xc8a8('0x25')](respondWithResult(_0x4a2fd7,null))['catch'](handleError(_0x4a2fd7,null));};
\ No newline at end of file
+var _0x3dc2=['foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','COUNT(DISTINCT\x20%s)','value','AnalyticMetric','parentKey','web','%s-%s.%s','randomstring','output','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','countTable','QueryTypes','run','runReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','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','offset','undefined','limit','count','set','apply','reject','then','destroy','CustomReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','include','AnalyticCustomReport','findAll','rows','catch','show','includeAll','options','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','keyBy','from','MetricId','metric','function','format','replace','groupBy','orderBy','DESC','alias','joins','parse','foreignTable'];(function(_0x5ba967,_0x43fa40){var _0x39b7ed=function(_0x530eed){while(--_0x530eed){_0x5ba967['push'](_0x5ba967['shift']());}};_0x39b7ed(++_0x43fa40);}(_0x3dc2,0x17e));var _0x23dc=function(_0x31e4cb,_0xbafec5){_0x31e4cb=_0x31e4cb-0x0;var _0x2573c0=_0x3dc2[_0x31e4cb];return _0x2573c0;};'use strict';var emlformat=require(_0x23dc('0x0'));var rimraf=require(_0x23dc('0x1'));var zipdir=require(_0x23dc('0x2'));var jsonpatch=require(_0x23dc('0x3'));var rp=require(_0x23dc('0x4'));var moment=require(_0x23dc('0x5'));var BPromise=require(_0x23dc('0x6'));var Mustache=require(_0x23dc('0x7'));var util=require(_0x23dc('0x8'));var path=require(_0x23dc('0x9'));var sox=require(_0x23dc('0xa'));var csv=require('to-csv');var ejs=require(_0x23dc('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x23dc('0xc'));var crypto=require(_0x23dc('0xd'));var jsforce=require(_0x23dc('0xe'));var deskjs=require(_0x23dc('0xf'));var toCsv=require(_0x23dc('0x10'));var querystring=require(_0x23dc('0x11'));var Papa=require(_0x23dc('0x12'));var Redis=require(_0x23dc('0x13'));var authService=require(_0x23dc('0x14'));var qs=require(_0x23dc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x23dc('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x23dc('0x17'));var config=require(_0x23dc('0x18'));var licenseUtil=require(_0x23dc('0x19'));var db=require(_0x23dc('0x1a'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0x158fd2,_0x4c5b39){_0x4c5b39=_0x4c5b39||0xcc;return function(_0x57f3a4){if(_0x57f3a4){return _0x158fd2[_0x23dc('0x1b')](_0x4c5b39);}return _0x158fd2[_0x23dc('0x1c')](_0x4c5b39)[_0x23dc('0x1d')]();};}function respondWithResult(_0x43b354,_0xdcd3df){_0xdcd3df=_0xdcd3df||0xc8;return function(_0x1fa19d){if(_0x1fa19d){return _0x43b354[_0x23dc('0x1c')](_0xdcd3df)[_0x23dc('0x1e')](_0x1fa19d);}};}function respondWithFilteredResult(_0x266423,_0xdce47b){return function(_0x4b374c){if(_0x4b374c){var _0x126a26=typeof _0xdce47b[_0x23dc('0x1f')]===_0x23dc('0x20')&&typeof _0xdce47b[_0x23dc('0x21')]===_0x23dc('0x20');var _0x27e9e5=_0x4b374c[_0x23dc('0x22')];var _0x339fc9=_0x126a26?0x0:_0xdce47b[_0x23dc('0x1f')];var _0x10dd3f=_0x126a26?_0x4b374c['count']:_0xdce47b[_0x23dc('0x1f')]+_0xdce47b[_0x23dc('0x21')];var _0x26e2bb;if(_0x10dd3f>=_0x27e9e5){_0x10dd3f=_0x27e9e5;_0x26e2bb=0xc8;}else{_0x26e2bb=0xce;}_0x266423[_0x23dc('0x1c')](_0x26e2bb);return _0x266423[_0x23dc('0x23')]('Content-Range',_0x339fc9+'-'+_0x10dd3f+'/'+_0x27e9e5)[_0x23dc('0x1e')](_0x4b374c);}return null;};}function patchUpdates(_0x320a1a){return function(_0xf2e9b9){try{jsonpatch[_0x23dc('0x24')](_0xf2e9b9,_0x320a1a,!![]);}catch(_0x3e858a){return BPromise[_0x23dc('0x25')](_0x3e858a);}return _0xf2e9b9['save']();};}function saveUpdates(_0x464a50,_0x3145c9){return function(_0x64b869){if(_0x64b869){return _0x64b869['update'](_0x464a50)[_0x23dc('0x26')](function(_0x502dc3){return _0x502dc3;});}return null;};}function removeEntity(_0x581cd5,_0x4fc5ec){return function(_0x6aead9){if(_0x6aead9){return _0x6aead9[_0x23dc('0x27')]()[_0x23dc('0x26')](function(){var _0x4055cb=_0x6aead9['get']({'plain':!![]});var _0x3b382a=_0x23dc('0x28');return db[_0x23dc('0x29')][_0x23dc('0x27')]({'where':{'type':_0x3b382a,'resourceId':_0x4055cb['id']}})[_0x23dc('0x26')](function(){return _0x6aead9;});})['then'](function(){_0x581cd5['status'](0xcc)[_0x23dc('0x1d')]();});}};}function handleEntityNotFound(_0x167d56,_0xff2d2e){return function(_0x2a1940){if(!_0x2a1940){_0x167d56['sendStatus'](0x194);}return _0x2a1940;};}function handleError(_0x315abb,_0x2a4de5){_0x2a4de5=_0x2a4de5||0x1f4;return function(_0x110128){logger[_0x23dc('0x2a')](_0x110128[_0x23dc('0x2b')]);if(_0x110128['name']){delete _0x110128[_0x23dc('0x2c')];}_0x315abb['status'](_0x2a4de5)[_0x23dc('0x2d')](_0x110128);};}exports[_0x23dc('0x2e')]=function(_0x72a3d4,_0xa02362){var _0x519635={},_0x4af2d7={},_0x370d35={'count':0x0,'rows':[]};var _0x215206=_[_0x23dc('0x2f')](db['AnalyticCustomReport'][_0x23dc('0x30')],function(_0x4ef281){return{'name':_0x4ef281[_0x23dc('0x31')],'type':_0x4ef281[_0x23dc('0x32')][_0x23dc('0x33')]};});_0x4af2d7[_0x23dc('0x34')]=_['map'](_0x215206,_0x23dc('0x2c'));_0x4af2d7[_0x23dc('0x35')]=_[_0x23dc('0x36')](_0x72a3d4[_0x23dc('0x35')]);_0x4af2d7[_0x23dc('0x37')]=_['intersection'](_0x4af2d7['model'],_0x4af2d7[_0x23dc('0x35')]);_0x519635['attributes']=_[_0x23dc('0x38')](_0x4af2d7[_0x23dc('0x34')],qs[_0x23dc('0x39')](_0x72a3d4[_0x23dc('0x35')][_0x23dc('0x39')]));_0x519635[_0x23dc('0x3a')]=_0x519635[_0x23dc('0x3a')][_0x23dc('0x3b')]?_0x519635['attributes']:_0x4af2d7[_0x23dc('0x34')];if(!_0x72a3d4['query'][_0x23dc('0x3c')](_0x23dc('0x3d'))){_0x519635[_0x23dc('0x21')]=qs[_0x23dc('0x21')](_0x72a3d4[_0x23dc('0x35')]['limit']);_0x519635[_0x23dc('0x1f')]=qs[_0x23dc('0x1f')](_0x72a3d4[_0x23dc('0x35')]['offset']);}_0x519635[_0x23dc('0x3e')]=qs[_0x23dc('0x3f')](_0x72a3d4[_0x23dc('0x35')]['sort']);_0x519635[_0x23dc('0x40')]=qs[_0x23dc('0x37')](_[_0x23dc('0x41')](_0x72a3d4[_0x23dc('0x35')],_0x4af2d7[_0x23dc('0x37')]),_0x215206);if(_0x72a3d4[_0x23dc('0x35')]['filter']){_0x519635['where']=_[_0x23dc('0x42')](_0x519635[_0x23dc('0x40')],{'$or':_[_0x23dc('0x2f')](_0x215206,function(_0x402d44){if(_0x402d44[_0x23dc('0x32')]!==_0x23dc('0x43')){var _0x491a54={};_0x491a54[_0x402d44[_0x23dc('0x2c')]]={'$like':'%'+_0x72a3d4[_0x23dc('0x35')][_0x23dc('0x44')]+'%'};return _0x491a54;}})});}_0x519635=_[_0x23dc('0x42')]({},_0x519635,_0x72a3d4['options']);var _0x11900f={'where':_0x519635['where']};return db['AnalyticCustomReport'][_0x23dc('0x22')](_0x11900f)[_0x23dc('0x26')](function(_0x251e6b){_0x370d35[_0x23dc('0x22')]=_0x251e6b;if(_0x72a3d4['query']['includeAll']){_0x519635[_0x23dc('0x45')]=[{'all':!![]}];}return db[_0x23dc('0x46')][_0x23dc('0x47')](_0x519635);})[_0x23dc('0x26')](function(_0x3f02e4){_0x370d35[_0x23dc('0x48')]=_0x3f02e4;return _0x370d35;})[_0x23dc('0x26')](respondWithFilteredResult(_0xa02362,_0x519635))[_0x23dc('0x49')](handleError(_0xa02362,null));};exports[_0x23dc('0x4a')]=function(_0x300c08,_0x30a5cd){var _0x524254={'raw':![],'where':{'id':_0x300c08['params']['id']}},_0x453940={};_0x453940[_0x23dc('0x34')]=_[_0x23dc('0x36')](db['AnalyticCustomReport'][_0x23dc('0x30')]);_0x453940[_0x23dc('0x35')]=_[_0x23dc('0x36')](_0x300c08[_0x23dc('0x35')]);_0x453940[_0x23dc('0x37')]=_[_0x23dc('0x38')](_0x453940[_0x23dc('0x34')],_0x453940['query']);_0x524254['attributes']=_[_0x23dc('0x38')](_0x453940[_0x23dc('0x34')],qs[_0x23dc('0x39')](_0x300c08[_0x23dc('0x35')][_0x23dc('0x39')]));_0x524254[_0x23dc('0x3a')]=_0x524254['attributes'][_0x23dc('0x3b')]?_0x524254[_0x23dc('0x3a')]:_0x453940[_0x23dc('0x34')];if(_0x300c08[_0x23dc('0x35')][_0x23dc('0x4b')]){_0x524254['include']=[{'all':!![]}];}_0x524254=_[_0x23dc('0x42')]({},_0x524254,_0x300c08[_0x23dc('0x4c')]);return db['AnalyticCustomReport'][_0x23dc('0x4d')](_0x524254)['then'](handleEntityNotFound(_0x30a5cd,null))['then'](respondWithResult(_0x30a5cd,null))['catch'](handleError(_0x30a5cd,null));};exports[_0x23dc('0x4e')]=function(_0x1a7b23,_0x4a6326){return db[_0x23dc('0x46')][_0x23dc('0x4e')](_0x1a7b23[_0x23dc('0x4f')],{})[_0x23dc('0x26')](function(_0x3edd5a){var _0x782db1=_0x1a7b23['user'][_0x23dc('0x50')]({'plain':!![]});if(!_0x782db1)throw new Error(_0x23dc('0x51'));if(_0x782db1[_0x23dc('0x52')]===_0x23dc('0x53')){var _0x143a9c=_0x3edd5a[_0x23dc('0x50')]({'plain':!![]});var _0x30f0f8=_0x23dc('0x54');return db['UserProfileSection']['find']({'where':{'name':_0x30f0f8,'userProfileId':_0x782db1[_0x23dc('0x55')]},'raw':!![]})[_0x23dc('0x26')](function(_0x17b5ca){if(_0x17b5ca&&_0x17b5ca['autoAssociation']===0x0){return db[_0x23dc('0x29')][_0x23dc('0x4e')]({'name':_0x143a9c[_0x23dc('0x2c')],'resourceId':_0x143a9c['id'],'type':_0x23dc('0x28'),'sectionId':_0x17b5ca['id']},{})[_0x23dc('0x26')](function(){return _0x3edd5a;});}else{return _0x3edd5a;}})[_0x23dc('0x49')](function(_0x3e2211){logger[_0x23dc('0x2a')](_0x23dc('0x56'),_0x3e2211);throw _0x3e2211;});}return _0x3edd5a;})[_0x23dc('0x26')](respondWithResult(_0x4a6326,0xc9))[_0x23dc('0x49')](handleError(_0x4a6326,null));};exports[_0x23dc('0x57')]=function(_0x57243a,_0x18194c){if(_0x57243a['body']['id']){delete _0x57243a[_0x23dc('0x4f')]['id'];}return db[_0x23dc('0x46')]['find']({'where':{'id':_0x57243a['params']['id']}})[_0x23dc('0x26')](handleEntityNotFound(_0x18194c,null))[_0x23dc('0x26')](saveUpdates(_0x57243a[_0x23dc('0x4f')],null))['then'](respondWithResult(_0x18194c,null))['catch'](handleError(_0x18194c,null));};exports[_0x23dc('0x27')]=function(_0x33f6b9,_0x176441){return db[_0x23dc('0x46')][_0x23dc('0x4d')]({'where':{'id':_0x33f6b9[_0x23dc('0x58')]['id']}})[_0x23dc('0x26')](handleEntityNotFound(_0x176441,null))[_0x23dc('0x26')](removeEntity(_0x176441,null))[_0x23dc('0x49')](handleError(_0x176441,null));};exports[_0x23dc('0x59')]=function(_0x1946b7,_0xa1380d){var _0x3ef1c4=0xa;var _0x4e3726=[_0x23dc('0x5a'),_0x23dc('0x5b'),_0x23dc('0x5c'),_0x23dc('0x5d')];var _0x54eea9={'SUM':_0x23dc('0x5e'),'COUNT':_0x23dc('0x5f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x23dc('0x60'),'MIN':_0x23dc('0x61'),'AVG':_0x23dc('0x62'),'GROUP_CONCAT':_0x23dc('0x63'),'GROUP_CONCAT ASC':_0x23dc('0x64'),'GROUP_CONCAT DESC':_0x23dc('0x65')};var _0x1fae3b={'SEC_TO_TIME':_0x23dc('0x66'),'DATE':_0x23dc('0x67'),'HOUR':_0x23dc('0x68'),'ROUND':_0x23dc('0x69'),'UNIX_TIMESTAMP':_0x23dc('0x6a')};var _0x503cc9=function(_0x35c9cd){return!_[_0x23dc('0x6b')]([_0x23dc('0x6c'),_0x23dc('0x6d'),_0x23dc('0x6e'),_0x23dc('0x6f')],_0x35c9cd);};var _0x5867b2=function(_0x5752ef){if(!_0x5752ef||!_0x5752ef[_0x23dc('0x70')][_0x23dc('0x3b')]){return'';}for(var _0x1c2072='(',_0x8fd4e9=0x0;_0x8fd4e9<_0x5752ef[_0x23dc('0x70')]['length'];_0x8fd4e9+=0x1){_0x8fd4e9>0x0&&(_0x1c2072+='\x20'+_0x5752ef[_0x23dc('0x71')]+'\x20');_0x1c2072+=_0x5752ef[_0x23dc('0x70')][_0x8fd4e9][_0x23dc('0x72')]?_0x5867b2(_0x5752ef['rules'][_0x8fd4e9][_0x23dc('0x72')]):_0x5752ef[_0x23dc('0x70')][_0x8fd4e9][_0x23dc('0x73')]+'\x20'+_0x5752ef[_0x23dc('0x70')][_0x8fd4e9][_0x23dc('0x74')]+(_0x503cc9(_0x5752ef[_0x23dc('0x70')][_0x8fd4e9][_0x23dc('0x74')])?'\x20'+_0x5752ef[_0x23dc('0x70')][_0x8fd4e9]['value']:'');}return _0x1c2072+')';};var _0x43b71a={'where':{'id':_0x1946b7[_0x23dc('0x58')]['id']}},_0xfc1174,_0x47db12,_0x5e3e57,_0x2e342a,_0x4f3f72;_0x43b71a=_[_0x23dc('0x42')]({},_0x43b71a,_0x1946b7[_0x23dc('0x4c')]);return db['AnalyticCustomReport']['find'](_0x43b71a)[_0x23dc('0x26')](function(_0x41ff88){if(_0x41ff88){_0xfc1174=_0x41ff88;return _0x41ff88[_0x23dc('0x75')]();}return null;})[_0x23dc('0x26')](function(_0x282bdc){if(_0x282bdc){if(!_0x282bdc['length']){throw new db[(_0x23dc('0x76'))][(_0x23dc('0x77'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x47db12=_0x282bdc;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})['then'](function(_0x5af777){if(_0x5af777){_0x5e3e57=_[_0x23dc('0x78')](_0x5af777,'id');var _0x1f3cd1;var _0x5d7599=squel['select']();_0x5d7599[_0x23dc('0x79')](_0xfc1174['table']);for(var _0x3bd983=0x0;_0x3bd983<_0x47db12[_0x23dc('0x3b')];_0x3bd983+=0x1){_0x1f3cd1=_0x47db12[_0x3bd983][_0x23dc('0x7a')]?_0x5e3e57[_0x47db12[_0x3bd983][_0x23dc('0x7a')]][_0x23dc('0x7b')]:_0x47db12[_0x3bd983][_0x23dc('0x73')];_0x1f3cd1=_0x47db12[_0x3bd983][_0x23dc('0x7c')]?_['replace'](_0x54eea9[_0x47db12[_0x3bd983][_0x23dc('0x7c')]],'%s',_0x1f3cd1):_0x1f3cd1;_0x1f3cd1=_0x47db12[_0x3bd983][_0x23dc('0x7d')]?_[_0x23dc('0x7e')](_0x1fae3b[_0x47db12[_0x3bd983]['format']],'%s',_0x1f3cd1):_0x1f3cd1;if(_0x47db12[_0x3bd983][_0x23dc('0x7f')]){_0x5d7599['group'](_0x1f3cd1);}_0x47db12[_0x3bd983][_0x23dc('0x80')]&&_0x5d7599[_0x23dc('0x3e')](_0x1f3cd1,_0x47db12[_0x3bd983]['orderBy']===_0x23dc('0x81')?![]:!![]);_0x5d7599[_0x23dc('0x73')](_0x1f3cd1,_0x47db12[_0x3bd983][_0x23dc('0x82')]||_0x1f3cd1);}if(_0xfc1174[_0x23dc('0x83')]){_0xfc1174['joins']=JSON[_0x23dc('0x84')](_0xfc1174[_0x23dc('0x83')]);for(var _0x1e7250=0x0;_0x1e7250<_0xfc1174[_0x23dc('0x83')][_0x23dc('0x3b')];_0x1e7250+=0x1){if(_0xfc1174[_0x23dc('0x83')][_0x1e7250][_0x23dc('0x32')]&&_[_0x23dc('0x6b')](_0x4e3726,_0xfc1174['joins'][_0x1e7250][_0x23dc('0x32')])&&_0xfc1174[_0x23dc('0x83')][_0x1e7250]['parentKey']&&_0xfc1174[_0x23dc('0x83')][_0x1e7250][_0x23dc('0x85')]&&_0xfc1174[_0x23dc('0x83')][_0x1e7250][_0x23dc('0x86')]){_0x5d7599[_0xfc1174[_0x23dc('0x83')][_0x1e7250][_0x23dc('0x32')]](_0xfc1174['joins'][_0x1e7250]['foreignTable'],null,util[_0x23dc('0x7d')](_0x23dc('0x87'),_0xfc1174[_0x23dc('0x88')],_0xfc1174[_0x23dc('0x83')][_0x1e7250]['parentKey'],_0xfc1174[_0x23dc('0x83')][_0x1e7250][_0x23dc('0x85')],_0xfc1174[_0x23dc('0x83')][_0x1e7250][_0x23dc('0x86')]));}}}if(_0xfc1174[_0x23dc('0x89')]){_0xfc1174['conditions']=JSON[_0x23dc('0x84')](_0xfc1174[_0x23dc('0x89')]);_0x5d7599[_0x23dc('0x40')](_0x5867b2(_0xfc1174['conditions'][_0x23dc('0x72')]));}_0x4f3f72=_0x5d7599[_0x23dc('0x8a')]();_0x5d7599[_0x23dc('0x21')](_0x3ef1c4);_0x5d7599[_0x23dc('0x1f')](0x0);logger[_0x23dc('0x8b')](_0x23dc('0x8c'),_0x5d7599[_0x23dc('0x8d')]());return dbH[_0x23dc('0x8e')][_0x23dc('0x35')](_0x5d7599[_0x23dc('0x8d')](),{'type':dbH[_0x23dc('0x8e')]['QueryTypes'][_0x23dc('0x8f')]});}})[_0x23dc('0x26')](respondWithResult(_0xa1380d,null))[_0x23dc('0x49')](handleError(_0xa1380d,null));};function runReport(_0x5eb1f1,_0x17f13f,_0x1ed23a){var _0x881ed3=_0x17f13f[_0x23dc('0x2c')];var _0x1f53e8=0xa;var _0x3fc089=[_0x23dc('0x5a'),'left_join',_0x23dc('0x5c'),_0x23dc('0x5d')];var _0x47dc10={'SUM':_0x23dc('0x5e'),'COUNT':_0x23dc('0x5f'),'COUNT DISTINCT':_0x23dc('0x90'),'MAX':_0x23dc('0x60'),'MIN':_0x23dc('0x61'),'AVG':_0x23dc('0x62'),'GROUP_CONCAT':_0x23dc('0x63'),'GROUP_CONCAT ASC':_0x23dc('0x64'),'GROUP_CONCAT DESC':_0x23dc('0x65')};var _0x365dc9={'SEC_TO_TIME':_0x23dc('0x66'),'DATE':_0x23dc('0x67'),'HOUR':_0x23dc('0x68'),'ROUND':_0x23dc('0x69'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xa0942f=function(_0x4ec8a0){return!_[_0x23dc('0x6b')]([_0x23dc('0x6c'),_0x23dc('0x6d'),'IS\x20EMPTY',_0x23dc('0x6f')],_0x4ec8a0);};var _0x52a636=function(_0x1097ec){if(!_0x1097ec||!_0x1097ec[_0x23dc('0x70')][_0x23dc('0x3b')]){return'';}for(var _0x30079e='(',_0x19acff=0x0;_0x19acff<_0x1097ec[_0x23dc('0x70')][_0x23dc('0x3b')];_0x19acff+=0x1){_0x19acff>0x0&&(_0x30079e+='\x20'+_0x1097ec[_0x23dc('0x71')]+'\x20');_0x30079e+=_0x1097ec[_0x23dc('0x70')][_0x19acff]['group']?_0x52a636(_0x1097ec['rules'][_0x19acff]['group']):_0x1097ec[_0x23dc('0x70')][_0x19acff][_0x23dc('0x73')]+'\x20'+_0x1097ec[_0x23dc('0x70')][_0x19acff][_0x23dc('0x74')]+(_0xa0942f(_0x1097ec[_0x23dc('0x70')][_0x19acff][_0x23dc('0x74')])?'\x20'+_0x1097ec['rules'][_0x19acff][_0x23dc('0x91')]:'');}return _0x30079e+')';};var _0x20f8c7={'where':{'id':_0x5eb1f1['id']}},_0x2a3819,_0x1e263b,_0x31dd07,_0x4cfebd,_0x1df2cf;_0x20f8c7=_[_0x23dc('0x42')]({},_0x20f8c7,_0x1ed23a);return db[_0x23dc('0x46')]['find'](_0x20f8c7)[_0x23dc('0x26')](function(_0x157656){if(_0x157656){_0x2a3819=_0x157656;return _0x157656['getFields']();}return null;})[_0x23dc('0x26')](function(_0x2ef470){if(_0x2ef470){if(!_0x2ef470['length']){throw new db[(_0x23dc('0x76'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1e263b=_0x2ef470;return db[_0x23dc('0x92')][_0x23dc('0x47')]({'raw':!![]});}return null;})[_0x23dc('0x26')](function(_0x17e8e9){if(_0x17e8e9){_0x31dd07=_[_0x23dc('0x78')](_0x17e8e9,'id');var _0x554a65;var _0x1848a8=squel['select']();_0x1848a8['from'](_0x2a3819['table']);for(var _0x4a8a2a=0x0;_0x4a8a2a<_0x1e263b[_0x23dc('0x3b')];_0x4a8a2a+=0x1){_0x554a65=_0x1e263b[_0x4a8a2a][_0x23dc('0x7a')]?_0x31dd07[_0x1e263b[_0x4a8a2a][_0x23dc('0x7a')]]['metric']:_0x1e263b[_0x4a8a2a]['field'];_0x554a65=_0x1e263b[_0x4a8a2a][_0x23dc('0x7c')]?_[_0x23dc('0x7e')](_0x47dc10[_0x1e263b[_0x4a8a2a][_0x23dc('0x7c')]],'%s',_0x554a65):_0x554a65;_0x554a65=_0x1e263b[_0x4a8a2a][_0x23dc('0x7d')]?_[_0x23dc('0x7e')](_0x365dc9[_0x1e263b[_0x4a8a2a][_0x23dc('0x7d')]],'%s',_0x554a65):_0x554a65;if(_0x1e263b[_0x4a8a2a][_0x23dc('0x7f')]){_0x1848a8[_0x23dc('0x72')](_0x554a65);}_0x1e263b[_0x4a8a2a][_0x23dc('0x80')]&&_0x1848a8[_0x23dc('0x3e')](_0x554a65,_0x1e263b[_0x4a8a2a][_0x23dc('0x80')]===_0x23dc('0x81')?![]:!![]);_0x1848a8[_0x23dc('0x73')](_0x554a65,_0x1e263b[_0x4a8a2a]['alias']||_0x554a65);}if(_0x2a3819[_0x23dc('0x83')]){_0x2a3819['joins']=JSON['parse'](_0x2a3819['joins']);for(var _0x112dbb=0x0;_0x112dbb<_0x2a3819[_0x23dc('0x83')][_0x23dc('0x3b')];_0x112dbb+=0x1){if(_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x32')]&&_['includes'](_0x3fc089,_0x2a3819['joins'][_0x112dbb][_0x23dc('0x32')])&&_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x93')]&&_0x2a3819[_0x23dc('0x83')][_0x112dbb]['foreignTable']&&_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x86')]){_0x1848a8[_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x32')]](_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x85')],null,util[_0x23dc('0x7d')]('%s.%s\x20=\x20%s.%s',_0x2a3819[_0x23dc('0x88')],_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x93')],_0x2a3819[_0x23dc('0x83')][_0x112dbb][_0x23dc('0x85')],_0x2a3819[_0x23dc('0x83')][_0x112dbb]['foreignKey']));}}}if(_0x2a3819[_0x23dc('0x89')]){_0x2a3819[_0x23dc('0x89')]=JSON[_0x23dc('0x84')](_0x2a3819['conditions']);_0x1848a8[_0x23dc('0x40')](_0x52a636(_0x2a3819[_0x23dc('0x89')][_0x23dc('0x72')]));}_0x1df2cf=_0x1848a8['clone']();_0x1848a8['limit'](_0x1f53e8);_0x1848a8[_0x23dc('0x1f')](0x0);return;}})['then'](function(){if(_0x17f13f['output']===_0x23dc('0x94')){return null;}var _0x8efe14=_['merge'](_0x17f13f,{'name':_0x17f13f['fullPath']||_0x17f13f[_0x23dc('0x2c')]||_0x2a3819['name'],'basename':_0x881ed3,'savename':util['format'](_0x23dc('0x95'),_0x17f13f[_0x23dc('0x2c')]||_0x2a3819[_0x23dc('0x2c')],require(_0x23dc('0x96'))['generate'](0x4),_0x17f13f[_0x23dc('0x97')]||_0x23dc('0x98')),'reportId':_0x2a3819['id'],'reportType':_0x23dc('0x99')});return db[_0x23dc('0x9a')][_0x23dc('0x4e')](_0x8efe14,{'raw':!![]});})['then'](function(_0x2e8b98){if(_0x2a3819[_0x23dc('0x88')]===_0x23dc('0x9b')){_0x1df2cf['where'](_0x2a3819[_0x23dc('0x88')]+_0x23dc('0x9c'),_0x17f13f[_0x23dc('0x9d')],_0x17f13f[_0x23dc('0x9e')]);}else{_0x1df2cf[_0x23dc('0x40')](_0x2a3819[_0x23dc('0x88')]+_0x23dc('0x9f'),_0x17f13f[_0x23dc('0x9d')],_0x17f13f[_0x23dc('0x9e')]);}if(_0x2e8b98){logger[_0x23dc('0xa0')](_0x23dc('0xa1'),_0x1df2cf[_0x23dc('0x8d')]());require(_0x23dc('0xa2'))[_0x23dc('0xa3')](path[_0x23dc('0x5a')](__dirname,_0x23dc('0xa4'),_0x2e8b98[_0x23dc('0x97')]),[_0x2e8b98['id'],_0x1df2cf[_0x23dc('0x8d')](),path[_0x23dc('0x5a')](__dirname,_0x23dc('0xa5'),_0x2e8b98[_0x23dc('0xa6')]),_0x881ed3]);return _0x2e8b98;}else{var _0x3013e2=squel[_0x23dc('0xa7')]();_0x3013e2[_0x23dc('0x79')]('('+_0x1df2cf[_0x23dc('0x8d')]()+')',_0x23dc('0xa8'));_0x3013e2['field']('COUNT(*)','count');_0x1df2cf[_0x23dc('0x21')](_0x17f13f['limit']||_0x1f53e8);_0x1df2cf[_0x23dc('0x1f')](_0x17f13f[_0x23dc('0x1f')]||0x0);return dbH[_0x23dc('0x8e')][_0x23dc('0x35')](_0x3013e2[_0x23dc('0x8d')](),{'type':dbH[_0x23dc('0x8e')]['QueryTypes']['SELECT']})[_0x23dc('0x26')](function(_0xddc911){if(!_0xddc911[_0x23dc('0x3b')]){_0x4cfebd=0x0;}else{_0x4cfebd=_0xddc911[0x0][_0x23dc('0x22')]||0x0;}return dbH[_0x23dc('0x8e')][_0x23dc('0x35')](_0x1df2cf[_0x23dc('0x8d')](),{'type':dbH[_0x23dc('0x8e')][_0x23dc('0xa9')][_0x23dc('0x8f')]});})['then'](function(_0x46a4fa){return{'rows':_0x46a4fa||[],'count':_0x4cfebd};});}});}exports[_0x23dc('0xaa')]=function(_0x15911a,_0x24f120){return runReport(_0x15911a[_0x23dc('0x58')],_0x15911a[_0x23dc('0x35')],_0x15911a['options'])['then'](respondWithResult(_0x24f120,null))['catch'](handleError(_0x24f120,null));};exports[_0x23dc('0xab')]=runReport;exports[_0x23dc('0x35')]=function(_0x4a32cf,_0x584256){var _0x25e510=0xa;var _0x16537b=['join','left_join',_0x23dc('0x5c'),_0x23dc('0x5d')];var _0x48c9ba={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x23dc('0x90'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0x23dc('0x62'),'GROUP_CONCAT':_0x23dc('0x63'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x23dc('0x65')};var _0xec8044={'SEC_TO_TIME':_0x23dc('0x66'),'DATE':_0x23dc('0x67'),'HOUR':_0x23dc('0x68'),'ROUND':_0x23dc('0x69'),'UNIX_TIMESTAMP':_0x23dc('0x6a')};var _0xc8425c=function(_0x32b35c){return!_['includes']([_0x23dc('0x6c'),_0x23dc('0x6d'),'IS\x20EMPTY',_0x23dc('0x6f')],_0x32b35c);};var _0x2127aa=function(_0x12cbcc){if(!_0x12cbcc||!_0x12cbcc[_0x23dc('0x70')][_0x23dc('0x3b')]){return'';}for(var _0x31b91d='(',_0x19f806=0x0;_0x19f806<_0x12cbcc[_0x23dc('0x70')][_0x23dc('0x3b')];_0x19f806+=0x1){_0x19f806>0x0&&(_0x31b91d+='\x20'+_0x12cbcc['operator']+'\x20');_0x31b91d+=_0x12cbcc[_0x23dc('0x70')][_0x19f806]['group']?_0x2127aa(_0x12cbcc[_0x23dc('0x70')][_0x19f806][_0x23dc('0x72')]):_0x12cbcc['rules'][_0x19f806]['field']+'\x20'+_0x12cbcc[_0x23dc('0x70')][_0x19f806]['condition']+(_0xc8425c(_0x12cbcc[_0x23dc('0x70')][_0x19f806][_0x23dc('0x74')])?'\x20'+_0x12cbcc[_0x23dc('0x70')][_0x19f806][_0x23dc('0x91')]:'');}return _0x31b91d+')';};var _0x1d29fe={'where':{'id':_0x4a32cf[_0x23dc('0x58')]['id']}},_0x4ec4cc,_0x5cfdd0,_0x2bbb43,_0x3dab23,_0x475134;_0x1d29fe=_[_0x23dc('0x42')]({},_0x1d29fe,_0x4a32cf['options']);return db[_0x23dc('0x46')][_0x23dc('0x4d')](_0x1d29fe)[_0x23dc('0x26')](function(_0x2219a9){if(_0x2219a9){_0x4ec4cc=_0x2219a9;return _0x2219a9[_0x23dc('0x75')]();}return null;})[_0x23dc('0x26')](function(_0xd6cc48){if(_0xd6cc48){if(!_0xd6cc48[_0x23dc('0x3b')]){throw new db[(_0x23dc('0x76'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5cfdd0=_0xd6cc48;return db[_0x23dc('0x92')][_0x23dc('0x47')]({'raw':!![]});}return null;})['then'](function(_0x518e4c){if(_0x518e4c){_0x2bbb43=_[_0x23dc('0x78')](_0x518e4c,'id');var _0x2ff268;var _0xe346a0=squel[_0x23dc('0xa7')]();_0xe346a0['from'](_0x4ec4cc[_0x23dc('0x88')]);for(var _0x20f812=0x0;_0x20f812<_0x5cfdd0[_0x23dc('0x3b')];_0x20f812+=0x1){_0x2ff268=_0x5cfdd0[_0x20f812][_0x23dc('0x7a')]?_0x2bbb43[_0x5cfdd0[_0x20f812][_0x23dc('0x7a')]]['metric']:_0x5cfdd0[_0x20f812][_0x23dc('0x73')];_0x2ff268=_0x5cfdd0[_0x20f812]['function']?_[_0x23dc('0x7e')](_0x48c9ba[_0x5cfdd0[_0x20f812][_0x23dc('0x7c')]],'%s',_0x2ff268):_0x2ff268;_0x2ff268=_0x5cfdd0[_0x20f812][_0x23dc('0x7d')]?_[_0x23dc('0x7e')](_0xec8044[_0x5cfdd0[_0x20f812]['format']],'%s',_0x2ff268):_0x2ff268;if(_0x5cfdd0[_0x20f812]['groupBy']){_0xe346a0[_0x23dc('0x72')](_0x2ff268);}_0x5cfdd0[_0x20f812]['orderBy']&&_0xe346a0[_0x23dc('0x3e')](_0x2ff268,_0x5cfdd0[_0x20f812][_0x23dc('0x80')]===_0x23dc('0x81')?![]:!![]);_0xe346a0[_0x23dc('0x73')](_0x2ff268,_0x5cfdd0[_0x20f812]['alias']||_0x2ff268);}if(_0x4ec4cc[_0x23dc('0x83')]){_0x4ec4cc[_0x23dc('0x83')]=JSON[_0x23dc('0x84')](_0x4ec4cc[_0x23dc('0x83')]);for(var _0x84917a=0x0;_0x84917a<_0x4ec4cc[_0x23dc('0x83')][_0x23dc('0x3b')];_0x84917a+=0x1){if(_0x4ec4cc[_0x23dc('0x83')][_0x84917a][_0x23dc('0x32')]&&_[_0x23dc('0x6b')](_0x16537b,_0x4ec4cc[_0x23dc('0x83')][_0x84917a][_0x23dc('0x32')])&&_0x4ec4cc['joins'][_0x84917a][_0x23dc('0x93')]&&_0x4ec4cc['joins'][_0x84917a][_0x23dc('0x85')]&&_0x4ec4cc[_0x23dc('0x83')][_0x84917a]['foreignKey']){_0xe346a0[_0x4ec4cc[_0x23dc('0x83')][_0x84917a]['type']](_0x4ec4cc[_0x23dc('0x83')][_0x84917a][_0x23dc('0x85')],null,util[_0x23dc('0x7d')](_0x23dc('0x87'),_0x4ec4cc[_0x23dc('0x88')],_0x4ec4cc[_0x23dc('0x83')][_0x84917a][_0x23dc('0x93')],_0x4ec4cc[_0x23dc('0x83')][_0x84917a][_0x23dc('0x85')],_0x4ec4cc[_0x23dc('0x83')][_0x84917a]['foreignKey']));}}}if(_0x4ec4cc[_0x23dc('0x89')]){_0x4ec4cc[_0x23dc('0x89')]=JSON[_0x23dc('0x84')](_0x4ec4cc['conditions']);_0xe346a0['where'](_0x2127aa(_0x4ec4cc[_0x23dc('0x89')][_0x23dc('0x72')]));}_0x475134=_0xe346a0[_0x23dc('0x8a')]();_0xe346a0['limit'](_0x25e510);_0xe346a0[_0x23dc('0x1f')](0x0);logger[_0x23dc('0x8b')](_0x23dc('0x8c'),_0xe346a0[_0x23dc('0x8d')]());return dbH[_0x23dc('0x8e')][_0x23dc('0x35')](_0xe346a0[_0x23dc('0x8d')](),{'type':dbH[_0x23dc('0x8e')][_0x23dc('0xa9')][_0x23dc('0x8f')]});}})['then'](function(){return{'sql':_0x475134[_0x23dc('0x8d')]()};})['then'](respondWithResult(_0x584256,null))[_0x23dc('0x49')](handleError(_0x584256,null));};
\ No newline at end of file
index 52cfe0e..f727b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb530=['define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x276064,_0xf56b91){var _0x125aff=function(_0x4e0b43){while(--_0x4e0b43){_0x276064['push'](_0x276064['shift']());}};_0x125aff(++_0xf56b91);}(_0xb530,0x8a));var _0x0b53=function(_0x5a3783,_0x298d4f){_0x5a3783=_0x5a3783-0x0;var _0x5791e9=_0xb530[_0x5a3783];return _0x5791e9;};'use strict';var _=require(_0x0b53('0x0'));var util=require(_0x0b53('0x1'));var logger=require(_0x0b53('0x2'))(_0x0b53('0x3'));var moment=require(_0x0b53('0x4'));var BPromise=require(_0x0b53('0x5'));var rp=require(_0x0b53('0x6'));var fs=require('fs');var path=require(_0x0b53('0x7'));var rimraf=require(_0x0b53('0x8'));var config=require(_0x0b53('0x9'));var attributes=require(_0x0b53('0xa'));module[_0x0b53('0xb')]=function(_0x5bc512,_0x28925f){return _0x5bc512[_0x0b53('0xc')](_0x0b53('0xd'),attributes,{'tableName':_0x0b53('0xe'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1f48=['rimraf','../../config/environment','exports','define','analytics_custom_reports','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x10dbf6,_0x3ff964){var _0x452147=function(_0x7476e0){while(--_0x7476e0){_0x10dbf6['push'](_0x10dbf6['shift']());}};_0x452147(++_0x3ff964);}(_0x1f48,0x123));var _0x81f4=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x1f48[_0x403c20];return _0x2b271a;};'use strict';var _=require(_0x81f4('0x0'));var util=require(_0x81f4('0x1'));var logger=require(_0x81f4('0x2'))('api');var moment=require(_0x81f4('0x3'));var BPromise=require(_0x81f4('0x4'));var rp=require(_0x81f4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x81f4('0x6'));var config=require(_0x81f4('0x7'));var attributes=require('./analyticCustomReport.attributes');module[_0x81f4('0x8')]=function(_0x50657c,_0x5ddb00){return _0x50657c[_0x81f4('0x9')]('AnalyticCustomReport',attributes,{'tableName':_0x81f4('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cd8d4c..5f4b113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9e4=['randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x2bec9d,_0x1961a4){var _0x5efd82=function(_0x2777ad){while(--_0x2777ad){_0x2bec9d['push'](_0x2bec9d['shift']());}};_0x5efd82(++_0x1961a4);}(_0xf9e4,0x10e));var _0x4f9e=function(_0x5c5c25,_0x143ae6){_0x5c5c25=_0x5c5c25-0x0;var _0x2a7c2f=_0xf9e4[_0x5c5c25];return _0x2a7c2f;};'use strict';var _=require(_0x4f9e('0x0'));var util=require(_0x4f9e('0x1'));var moment=require(_0x4f9e('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f9e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4f9e('0x4'));var logger=require('../../config/logger')(_0x4f9e('0x5'));var config=require('../../config/environment');var jayson=require(_0x4f9e('0x6'));var client=jayson[_0x4f9e('0x7')][_0x4f9e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x465e05,_0x311a92,_0x10fc3d){return new BPromise(function(_0x2d107b,_0x502999){return client[_0x4f9e('0x9')](_0x465e05,_0x10fc3d)[_0x4f9e('0xa')](function(_0x5c7085){logger[_0x4f9e('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x311a92,'request\x20sent');logger[_0x4f9e('0xc')](_0x4f9e('0xd'),_0x311a92,_0x4f9e('0xe'),JSON[_0x4f9e('0xf')](_0x5c7085));if(_0x5c7085['error']){if(_0x5c7085[_0x4f9e('0x10')]['code']===0x1f4){logger[_0x4f9e('0x10')](_0x4f9e('0x11'),_0x311a92,_0x5c7085['error'][_0x4f9e('0x12')]);return _0x502999(_0x5c7085[_0x4f9e('0x10')][_0x4f9e('0x12')]);}logger[_0x4f9e('0x10')](_0x4f9e('0x11'),_0x311a92,_0x5c7085[_0x4f9e('0x10')][_0x4f9e('0x12')]);return _0x2d107b(_0x5c7085['error']['message']);}else{logger[_0x4f9e('0xb')](_0x4f9e('0x11'),_0x311a92,_0x4f9e('0xe'));_0x2d107b(_0x5c7085[_0x4f9e('0x13')][_0x4f9e('0x12')]);}})[_0x4f9e('0x14')](function(_0x1dddf8){logger[_0x4f9e('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x311a92,_0x1dddf8);_0x502999(_0x1dddf8);});});}
\ No newline at end of file
+var _0x3ae7=['request','then','info','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client'];(function(_0x143803,_0x341ee4){var _0x565fd2=function(_0x149ee4){while(--_0x149ee4){_0x143803['push'](_0x143803['shift']());}};_0x565fd2(++_0x341ee4);}(_0x3ae7,0x14e));var _0x73ae=function(_0x488053,_0x4badd9){_0x488053=_0x488053-0x0;var _0x53446f=_0x3ae7[_0x488053];return _0x53446f;};'use strict';var _=require('lodash');var util=require(_0x73ae('0x0'));var moment=require(_0x73ae('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x73ae('0x2'));var db=require(_0x73ae('0x3'))['db'];var utils=require(_0x73ae('0x4'));var logger=require('../../config/logger')(_0x73ae('0x5'));var config=require(_0x73ae('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x73ae('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4dfa1c,_0x6af8d9,_0x3b09a5){return new BPromise(function(_0x214e97,_0x20e1f0){return client[_0x73ae('0x8')](_0x4dfa1c,_0x3b09a5)[_0x73ae('0x9')](function(_0x219625){logger[_0x73ae('0xa')](_0x73ae('0xb'),_0x6af8d9,'request\x20sent');logger[_0x73ae('0xc')](_0x73ae('0xd'),_0x6af8d9,'request\x20sent',JSON[_0x73ae('0xe')](_0x219625));if(_0x219625[_0x73ae('0xf')]){if(_0x219625[_0x73ae('0xf')]['code']===0x1f4){logger[_0x73ae('0xf')](_0x73ae('0xb'),_0x6af8d9,_0x219625[_0x73ae('0xf')][_0x73ae('0x10')]);return _0x20e1f0(_0x219625[_0x73ae('0xf')][_0x73ae('0x10')]);}logger[_0x73ae('0xf')](_0x73ae('0xb'),_0x6af8d9,_0x219625[_0x73ae('0xf')][_0x73ae('0x10')]);return _0x214e97(_0x219625[_0x73ae('0xf')][_0x73ae('0x10')]);}else{logger[_0x73ae('0xa')](_0x73ae('0xb'),_0x6af8d9,_0x73ae('0x11'));_0x214e97(_0x219625[_0x73ae('0x12')][_0x73ae('0x10')]);}})['catch'](function(_0x6982bd){logger[_0x73ae('0xf')](_0x73ae('0xb'),_0x6af8d9,_0x6982bd);_0x20e1f0(_0x6982bd);});});}
\ No newline at end of file
index c1726c9..f233dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7250=['get','/:id/preview','/:id/run','query','create','put','/:id','destroy','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./analyticCustomReport.controller','isAuthenticated','index'];(function(_0x4685f3,_0x30c308){var _0x29ea07=function(_0x1d4135){while(--_0x1d4135){_0x4685f3['push'](_0x4685f3['shift']());}};_0x29ea07(++_0x30c308);}(_0x7250,0xaa));var _0x0725=function(_0x1ac725,_0x19994f){_0x1ac725=_0x1ac725-0x0;var _0x52e93d=_0x7250[_0x1ac725];return _0x52e93d;};'use strict';var multer=require(_0x0725('0x0'));var util=require(_0x0725('0x1'));var path=require(_0x0725('0x2'));var timeout=require(_0x0725('0x3'));var express=require(_0x0725('0x4'));var router=express['Router']();var fs_extra=require(_0x0725('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0725('0x6'));var controller=require(_0x0725('0x7'));router['get']('/',auth[_0x0725('0x8')](),controller[_0x0725('0x9')]);router[_0x0725('0xa')]('/:id',auth[_0x0725('0x8')](),controller['show']);router[_0x0725('0xa')](_0x0725('0xb'),auth[_0x0725('0x8')](),controller['preview']);router['get'](_0x0725('0xc'),auth[_0x0725('0x8')](),controller['run']);router[_0x0725('0xa')]('/:id/query',auth[_0x0725('0x8')](),controller[_0x0725('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0725('0xe')]);router[_0x0725('0xf')](_0x0725('0x10'),auth[_0x0725('0x8')](),controller['update']);router['delete'](_0x0725('0x10'),auth['isAuthenticated'](),controller[_0x0725('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7259=['../../config/environment','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x41444f,_0x12a5ae){var _0x40250c=function(_0x3ead0c){while(--_0x3ead0c){_0x41444f['push'](_0x41444f['shift']());}};_0x40250c(++_0x12a5ae);}(_0x7259,0x156));var _0x9725=function(_0x327ab2,_0x41f409){_0x327ab2=_0x327ab2-0x0;var _0x367481=_0x7259[_0x327ab2];return _0x367481;};'use strict';var multer=require(_0x9725('0x0'));var util=require('util');var path=require(_0x9725('0x1'));var timeout=require(_0x9725('0x2'));var express=require(_0x9725('0x3'));var router=express[_0x9725('0x4')]();var fs_extra=require(_0x9725('0x5'));var auth=require(_0x9725('0x6'));var interaction=require(_0x9725('0x7'));var config=require(_0x9725('0x8'));var controller=require('./analyticCustomReport.controller');router[_0x9725('0x9')]('/',auth[_0x9725('0xa')](),controller[_0x9725('0xb')]);router[_0x9725('0x9')](_0x9725('0xc'),auth[_0x9725('0xa')](),controller[_0x9725('0xd')]);router[_0x9725('0x9')](_0x9725('0xe'),auth['isAuthenticated'](),controller[_0x9725('0xf')]);router[_0x9725('0x9')](_0x9725('0x10'),auth[_0x9725('0xa')](),controller[_0x9725('0x11')]);router[_0x9725('0x9')](_0x9725('0x12'),auth[_0x9725('0xa')](),controller[_0x9725('0x13')]);router['post']('/',auth[_0x9725('0xa')](),controller['create']);router[_0x9725('0x14')]('/:id',auth[_0x9725('0xa')](),controller[_0x9725('0x15')]);router[_0x9725('0x16')](_0x9725('0xc'),auth['isAuthenticated'](),controller[_0x9725('0x17')]);module[_0x9725('0x18')]=router;
\ No newline at end of file
index 625b8f1..d46040c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['TEXT','sequelize','exports','STRING'];(function(_0x257e36,_0x284596){var _0x1887cd=function(_0x987aa2){while(--_0x987aa2){_0x257e36['push'](_0x257e36['shift']());}};_0x1887cd(++_0x284596);}(_0xd8fb,0x99));var _0xbd8f=function(_0x5d30fa,_0xe76b29){_0x5d30fa=_0x5d30fa-0x0;var _0x456859=_0xd8fb[_0x5d30fa];return _0x456859;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'name':{'type':Sequelize[_0xbd8f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xbd8f('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xbd8f('0x3')]}};
\ No newline at end of file
+var _0xeff8=['STRING','TEXT','sequelize','exports'];(function(_0x22485a,_0x5d3eac){var _0x120192=function(_0x3d4c94){while(--_0x3d4c94){_0x22485a['push'](_0x22485a['shift']());}};_0x120192(++_0x5d3eac);}(_0xeff8,0x186));var _0x8eff=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xeff8[_0x341e0f];return _0x59555a;};'use strict';var Sequelize=require(_0x8eff('0x0'));module[_0x8eff('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x8eff('0x2')]},'parent':{'type':Sequelize[_0x8eff('0x2')]},'table':{'type':Sequelize[_0x8eff('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x8eff('0x3')]}};
\ No newline at end of file
index 1b425cb..86a9549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['save','then','destroy','get','DefaultReports','UserProfileResource','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','create','body','user','role','UserProfileSection','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','COUNT(%s)','AVG(%s)','IS\x20NOT\x20NULL','value','order','output','%s-%s.%s','randomstring','generate','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','fork','countTable','QueryTypes','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','ROUND(%s)','Please\x20insert\x20at\x20least\x20one\x20field','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject'];(function(_0x478087,_0x109fb2){var _0x54bff1=function(_0x4589b3){while(--_0x4589b3){_0x478087['push'](_0x478087['shift']());}};_0x54bff1(++_0x109fb2);}(_0xba34,0x119));var _0x4ba3=function(_0x484a5b,_0x5f4ef7){_0x484a5b=_0x484a5b-0x0;var _0xd90ab8=_0xba34[_0x484a5b];return _0xd90ab8;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];var dbH=require(_0x4ba3('0x19'))['dbH'];function respondWithStatusCode(_0x256f02,_0x4419b4){_0x4419b4=_0x4419b4||0xcc;return function(_0x29e498){if(_0x29e498){return _0x256f02[_0x4ba3('0x1a')](_0x4419b4);}return _0x256f02[_0x4ba3('0x1b')](_0x4419b4)[_0x4ba3('0x1c')]();};}function respondWithResult(_0x3a74f7,_0x12ac90){_0x12ac90=_0x12ac90||0xc8;return function(_0x1dec48){if(_0x1dec48){return _0x3a74f7[_0x4ba3('0x1b')](_0x12ac90)[_0x4ba3('0x1d')](_0x1dec48);}};}function respondWithFilteredResult(_0x301359,_0x29a9d1){return function(_0x25f584){if(_0x25f584){var _0x40e75b=typeof _0x29a9d1[_0x4ba3('0x1e')]==='undefined'&&typeof _0x29a9d1[_0x4ba3('0x1f')]===_0x4ba3('0x20');var _0x5ff7ce=_0x25f584[_0x4ba3('0x21')];var _0x556290=_0x40e75b?0x0:_0x29a9d1[_0x4ba3('0x1e')];var _0xe4eff9=_0x40e75b?_0x25f584[_0x4ba3('0x21')]:_0x29a9d1[_0x4ba3('0x1e')]+_0x29a9d1[_0x4ba3('0x1f')];var _0x125944;if(_0xe4eff9>=_0x5ff7ce){_0xe4eff9=_0x5ff7ce;_0x125944=0xc8;}else{_0x125944=0xce;}_0x301359['status'](_0x125944);return _0x301359['set'](_0x4ba3('0x22'),_0x556290+'-'+_0xe4eff9+'/'+_0x5ff7ce)['json'](_0x25f584);}return null;};}function patchUpdates(_0x18dff5){return function(_0x163967){try{jsonpatch[_0x4ba3('0x23')](_0x163967,_0x18dff5,!![]);}catch(_0xbc7023){return BPromise[_0x4ba3('0x24')](_0xbc7023);}return _0x163967[_0x4ba3('0x25')]();};}function saveUpdates(_0x4a0823,_0x143c78){return function(_0x1f87e1){if(_0x1f87e1){return _0x1f87e1['update'](_0x4a0823)[_0x4ba3('0x26')](function(_0x4ffe39){return _0x4ffe39;});}return null;};}function removeEntity(_0x1ae4de,_0x18abb3){return function(_0x11a917){if(_0x11a917){return _0x11a917[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){var _0xe29a49=_0x11a917[_0x4ba3('0x28')]({'plain':!![]});var _0xe1f7d2=_0x4ba3('0x29');return db[_0x4ba3('0x2a')]['destroy']({'where':{'type':_0xe1f7d2,'resourceId':_0xe29a49['id']}})[_0x4ba3('0x26')](function(){return _0x11a917;});})[_0x4ba3('0x26')](function(){_0x1ae4de[_0x4ba3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10537e,_0x1fe5e2){return function(_0x44d78c){if(!_0x44d78c){_0x10537e['sendStatus'](0x194);}return _0x44d78c;};}function handleError(_0x10cae6,_0x843276){_0x843276=_0x843276||0x1f4;return function(_0x34ecb4){logger[_0x4ba3('0x2b')](_0x34ecb4['stack']);if(_0x34ecb4['name']){delete _0x34ecb4[_0x4ba3('0x2c')];}_0x10cae6[_0x4ba3('0x1b')](_0x843276)[_0x4ba3('0x2d')](_0x34ecb4);};}exports[_0x4ba3('0x2e')]=function(_0x2cb5d5,_0x11f88f){var _0x48b3b7={},_0x27444b={},_0x28f36c={'count':0x0,'rows':[]};var _0x24d8fc=_[_0x4ba3('0x2f')](db[_0x4ba3('0x30')][_0x4ba3('0x31')],function(_0x457236){return{'name':_0x457236[_0x4ba3('0x32')],'type':_0x457236[_0x4ba3('0x33')][_0x4ba3('0x34')]};});_0x27444b['model']=_['map'](_0x24d8fc,'name');_0x27444b[_0x4ba3('0x35')]=_[_0x4ba3('0x36')](_0x2cb5d5[_0x4ba3('0x35')]);_0x27444b[_0x4ba3('0x37')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],_0x27444b[_0x4ba3('0x35')]);_0x48b3b7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x2cb5d5[_0x4ba3('0x35')]['fields']));_0x48b3b7[_0x4ba3('0x3a')]=_0x48b3b7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x48b3b7['attributes']:_0x27444b[_0x4ba3('0x39')];if(!_0x2cb5d5['query'][_0x4ba3('0x3d')](_0x4ba3('0x3e'))){_0x48b3b7[_0x4ba3('0x1f')]=qs[_0x4ba3('0x1f')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1f')]);_0x48b3b7['offset']=qs[_0x4ba3('0x1e')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1e')]);}_0x48b3b7['order']=qs[_0x4ba3('0x3f')](_0x2cb5d5[_0x4ba3('0x35')]['sort']);_0x48b3b7[_0x4ba3('0x40')]=qs['filters'](_['pick'](_0x2cb5d5[_0x4ba3('0x35')],_0x27444b[_0x4ba3('0x37')]),_0x24d8fc);if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x41')]){_0x48b3b7[_0x4ba3('0x40')]=_['merge'](_0x48b3b7[_0x4ba3('0x40')],{'$or':_[_0x4ba3('0x2f')](_0x24d8fc,function(_0x46d2ca){if(_0x46d2ca[_0x4ba3('0x33')]!==_0x4ba3('0x42')){var _0x2acc92={};_0x2acc92[_0x46d2ca[_0x4ba3('0x2c')]]={'$like':'%'+_0x2cb5d5[_0x4ba3('0x35')]['filter']+'%'};return _0x2acc92;}})});}_0x48b3b7=_[_0x4ba3('0x43')]({},_0x48b3b7,_0x2cb5d5[_0x4ba3('0x44')]);var _0x3cb07f={'where':_0x48b3b7[_0x4ba3('0x40')]};return db[_0x4ba3('0x30')][_0x4ba3('0x21')](_0x3cb07f)[_0x4ba3('0x26')](function(_0xdcc2a2){_0x28f36c[_0x4ba3('0x21')]=_0xdcc2a2;if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x45')]){_0x48b3b7[_0x4ba3('0x46')]=[{'all':!![]}];}return db[_0x4ba3('0x30')][_0x4ba3('0x47')](_0x48b3b7);})['then'](function(_0x5af671){_0x28f36c['rows']=_0x5af671;return _0x28f36c;})['then'](respondWithFilteredResult(_0x11f88f,_0x48b3b7))['catch'](handleError(_0x11f88f,null));};exports[_0x4ba3('0x48')]=function(_0x5c4659,_0x29e74d){var _0x5567c7={'raw':!![],'where':{'id':_0x5c4659[_0x4ba3('0x49')]['id']}},_0x53d6eb={};_0x53d6eb[_0x4ba3('0x39')]=_[_0x4ba3('0x36')](db[_0x4ba3('0x30')]['rawAttributes']);_0x53d6eb[_0x4ba3('0x35')]=_['keys'](_0x5c4659[_0x4ba3('0x35')]);_0x53d6eb['filters']=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],_0x53d6eb[_0x4ba3('0x35')]);_0x5567c7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x5c4659['query'][_0x4ba3('0x3b')]));_0x5567c7[_0x4ba3('0x3a')]=_0x5567c7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x5567c7[_0x4ba3('0x3a')]:_0x53d6eb['model'];if(_0x5c4659['query'][_0x4ba3('0x45')]){_0x5567c7[_0x4ba3('0x46')]=[{'all':!![]}];}_0x5567c7=_[_0x4ba3('0x43')]({},_0x5567c7,_0x5c4659['options']);return db[_0x4ba3('0x30')][_0x4ba3('0x4a')](_0x5567c7)[_0x4ba3('0x26')](handleEntityNotFound(_0x29e74d,null))['then'](respondWithResult(_0x29e74d,null))['catch'](handleError(_0x29e74d,null));};exports[_0x4ba3('0x4b')]=function(_0x482a83,_0x439acf){return db[_0x4ba3('0x30')][_0x4ba3('0x4b')](_0x482a83[_0x4ba3('0x4c')],{})[_0x4ba3('0x26')](function(_0x213eb0){var _0x590739=_0x482a83[_0x4ba3('0x4d')][_0x4ba3('0x28')]({'plain':!![]});if(!_0x590739)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x590739[_0x4ba3('0x4e')]===_0x4ba3('0x4d')){var _0x156c2d=_0x213eb0[_0x4ba3('0x28')]({'plain':!![]});var _0x360472='Reports';return db[_0x4ba3('0x4f')][_0x4ba3('0x4a')]({'where':{'name':_0x360472,'userProfileId':_0x590739['userProfileId']},'raw':!![]})[_0x4ba3('0x26')](function(_0x19d70f){if(_0x19d70f&&_0x19d70f[_0x4ba3('0x50')]===0x0){return db[_0x4ba3('0x2a')][_0x4ba3('0x4b')]({'name':_0x156c2d[_0x4ba3('0x2c')],'resourceId':_0x156c2d['id'],'type':_0x4ba3('0x29'),'sectionId':_0x19d70f['id']},{})[_0x4ba3('0x26')](function(){return _0x213eb0;});}else{return _0x213eb0;}})[_0x4ba3('0x51')](function(_0x428a27){logger[_0x4ba3('0x2b')](_0x4ba3('0x52'),_0x428a27);throw _0x428a27;});}return _0x213eb0;})[_0x4ba3('0x26')](respondWithResult(_0x439acf,0xc9))[_0x4ba3('0x51')](handleError(_0x439acf,null));};exports[_0x4ba3('0x53')]=function(_0x48a3d4,_0x5e7ed5){if(_0x48a3d4['body']['id']){delete _0x48a3d4[_0x4ba3('0x4c')]['id'];}return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x48a3d4[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x5e7ed5,null))['then'](saveUpdates(_0x48a3d4[_0x4ba3('0x4c')],null))[_0x4ba3('0x26')](respondWithResult(_0x5e7ed5,null))[_0x4ba3('0x51')](handleError(_0x5e7ed5,null));};exports[_0x4ba3('0x27')]=function(_0x5359d1,_0x1e83fb){return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x5359d1[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x1e83fb,null))[_0x4ba3('0x26')](removeEntity(_0x1e83fb,null))[_0x4ba3('0x51')](handleError(_0x1e83fb,null));};exports[_0x4ba3('0x54')]=function(_0x328314,_0x4fa64d){var _0x20c849=0xa;var _0x42bb4b=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x40827a={'SUM':_0x4ba3('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':_0x4ba3('0x5b'),'MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x4cc10a={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x4ba3('0x62')};var _0xaef1b=function(_0x2a48fe){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),'IS\x20NOT\x20NULL',_0x4ba3('0x65'),_0x4ba3('0x66')],_0x2a48fe);};var _0x34cc21=function(_0x469ef0){if(!_0x469ef0||!_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')]){return'';}for(var _0x3fdf7f='(',_0x38699e=0x0;_0x38699e<_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')];_0x38699e+=0x1){_0x38699e>0x0&&(_0x3fdf7f+='\x20'+_0x469ef0[_0x4ba3('0x68')]+'\x20');_0x3fdf7f+=_0x469ef0['rules'][_0x38699e][_0x4ba3('0x69')]?_0x34cc21(_0x469ef0[_0x4ba3('0x67')][_0x38699e]['group']):_0x469ef0['rules'][_0x38699e][_0x4ba3('0x6a')]+'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['condition']+(_0xaef1b(_0x469ef0[_0x4ba3('0x67')][_0x38699e][_0x4ba3('0x6b')])?'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['value']:'');}return _0x3fdf7f+')';};var _0x1f5815={'where':{'id':_0x328314['params']['id']}},_0x46224,_0x1af489,_0x11209b,_0x24a75a,_0x3a4838;_0x1f5815=_[_0x4ba3('0x43')]({},_0x1f5815,_0x328314[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x1f5815)[_0x4ba3('0x26')](function(_0x2f8bcc){if(_0x2f8bcc){_0x46224=_0x2f8bcc;return _0x2f8bcc[_0x4ba3('0x6c')]();}return null;})[_0x4ba3('0x26')](function(_0x21c8b1){if(_0x21c8b1){if(!_0x21c8b1[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1af489=_0x21c8b1;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})['then'](function(_0x13ee2c){if(_0x13ee2c){_0x11209b=_[_0x4ba3('0x6f')](_0x13ee2c,'id');var _0x442d66;var _0x5c7fc2=squel[_0x4ba3('0x70')]();_0x5c7fc2[_0x4ba3('0x71')](_0x46224[_0x4ba3('0x72')]);for(var _0x5baf26=0x0;_0x5baf26<_0x1af489[_0x4ba3('0x3c')];_0x5baf26+=0x1){_0x442d66=_0x1af489[_0x5baf26]['MetricId']?_0x11209b[_0x1af489[_0x5baf26][_0x4ba3('0x73')]][_0x4ba3('0x74')]:_0x1af489[_0x5baf26]['field'];_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x40827a[_0x1af489[_0x5baf26][_0x4ba3('0x75')]],'%s',_0x442d66):_0x442d66;_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x4cc10a[_0x1af489[_0x5baf26][_0x4ba3('0x77')]],'%s',_0x442d66):_0x442d66;if(_0x1af489[_0x5baf26][_0x4ba3('0x78')]){_0x5c7fc2[_0x4ba3('0x69')](_0x442d66);}_0x1af489[_0x5baf26][_0x4ba3('0x79')]&&_0x5c7fc2['order'](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x5c7fc2[_0x4ba3('0x6a')](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x7b')]||_0x442d66);}if(_0x46224[_0x4ba3('0x7c')]){_0x46224[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x7c')]);for(var _0x365d94=0x0;_0x365d94<_0x46224[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x365d94+=0x1){if(_0x46224[_0x4ba3('0x7c')][_0x365d94]['type']&&_[_0x4ba3('0x63')](_0x42bb4b,_0x46224[_0x4ba3('0x7c')][_0x365d94]['type'])&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7e')]&&_0x46224['joins'][_0x365d94]['foreignTable']&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]){_0x5c7fc2[_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x33')]](_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x46224['table'],_0x46224[_0x4ba3('0x7c')][_0x365d94]['parentKey'],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]));}}}if(_0x46224[_0x4ba3('0x82')]){_0x46224[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x82')]);_0x5c7fc2['where'](_0x34cc21(_0x46224[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x3a4838=_0x5c7fc2[_0x4ba3('0x83')]();_0x5c7fc2['limit'](_0x20c849);_0x5c7fc2[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x5c7fc2[_0x4ba3('0x86')]());return dbH[_0x4ba3('0x87')][_0x4ba3('0x35')](_0x5c7fc2[_0x4ba3('0x86')](),{'type':dbH['sequelize']['QueryTypes'][_0x4ba3('0x88')]});}})['then'](respondWithResult(_0x4fa64d,null))[_0x4ba3('0x51')](handleError(_0x4fa64d,null));};function runReport(_0x15508f,_0x108679,_0x20f7db){var _0x5a3c63=_0x108679['name'];var _0x2d16e5=0xa;var _0x2b2132=['join',_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x1e8232={'SUM':_0x4ba3('0x59'),'COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':_0x4ba3('0x8a'),'GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x13dbc4={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5aa412=function(_0x4ec70e){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),_0x4ba3('0x65'),_0x4ba3('0x66')],_0x4ec70e);};var _0x333a97=function(_0x30d7a9){if(!_0x30d7a9||!_0x30d7a9['rules'][_0x4ba3('0x3c')]){return'';}for(var _0x4cd4a2='(',_0x31a725=0x0;_0x31a725<_0x30d7a9['rules'][_0x4ba3('0x3c')];_0x31a725+=0x1){_0x31a725>0x0&&(_0x4cd4a2+='\x20'+_0x30d7a9[_0x4ba3('0x68')]+'\x20');_0x4cd4a2+=_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x69')]?_0x333a97(_0x30d7a9[_0x4ba3('0x67')][_0x31a725]['group']):_0x30d7a9['rules'][_0x31a725][_0x4ba3('0x6a')]+'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')]+(_0x5aa412(_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')])?'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x8c')]:'');}return _0x4cd4a2+')';};var _0x3d8606={'where':{'id':_0x15508f['id']}},_0x2d00e3,_0x35441e,_0x217ea4,_0x40dcee,_0x5ea9d0;_0x3d8606=_[_0x4ba3('0x43')]({},_0x3d8606,_0x20f7db);return db['AnalyticDefaultReport'][_0x4ba3('0x4a')](_0x3d8606)[_0x4ba3('0x26')](function(_0x17b970){if(_0x17b970){_0x2d00e3=_0x17b970;return _0x17b970[_0x4ba3('0x6c')]();}return null;})['then'](function(_0x2a2dc2){if(_0x2a2dc2){if(!_0x2a2dc2[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x35441e=_0x2a2dc2;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0x3188c8){if(_0x3188c8){_0x217ea4=_['keyBy'](_0x3188c8,'id');var _0x2f793a;var _0x1194a5=squel[_0x4ba3('0x70')]();_0x1194a5[_0x4ba3('0x71')](_0x2d00e3[_0x4ba3('0x72')]);for(var _0x1e2134=0x0;_0x1e2134<_0x35441e['length'];_0x1e2134+=0x1){_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x73')]?_0x217ea4[_0x35441e[_0x1e2134]['MetricId']][_0x4ba3('0x74')]:_0x35441e[_0x1e2134][_0x4ba3('0x6a')];_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x1e8232[_0x35441e[_0x1e2134]['function']],'%s',_0x2f793a):_0x2f793a;_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x13dbc4[_0x35441e[_0x1e2134]['format']],'%s',_0x2f793a):_0x2f793a;if(_0x35441e[_0x1e2134][_0x4ba3('0x78')]){_0x1194a5['group'](_0x2f793a);}_0x35441e[_0x1e2134][_0x4ba3('0x79')]&&_0x1194a5[_0x4ba3('0x8d')](_0x2f793a,_0x35441e[_0x1e2134][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x1194a5[_0x4ba3('0x6a')](_0x2f793a,_0x35441e[_0x1e2134]['alias']||_0x2f793a);}if(_0x2d00e3['joins']){_0x2d00e3[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x7c')]);for(var _0x56244e=0x0;_0x56244e<_0x2d00e3[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x56244e+=0x1){if(_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x2b2132,_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')])&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')]&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')]&&_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x7f')]){_0x1194a5[_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')]](_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x2d00e3[_0x4ba3('0x72')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e]['foreignKey']));}}}if(_0x2d00e3['conditions']){_0x2d00e3[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x82')]);_0x1194a5[_0x4ba3('0x40')](_0x333a97(_0x2d00e3[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x5ea9d0=_0x1194a5[_0x4ba3('0x83')]();_0x1194a5['limit'](_0x2d16e5);_0x1194a5['offset'](0x0);return;}})[_0x4ba3('0x26')](function(){if(_0x108679[_0x4ba3('0x8e')]==='web'){return null;}var _0x4fb6b5=_['merge'](_0x108679,{'name':_0x108679['fullPath']||_0x108679[_0x4ba3('0x2c')]||_0x2d00e3[_0x4ba3('0x2c')],'basename':_0x5a3c63,'savename':util[_0x4ba3('0x77')](_0x4ba3('0x8f'),_0x108679[_0x4ba3('0x2c')]||_0x2d00e3['name'],require(_0x4ba3('0x90'))[_0x4ba3('0x91')](0x4),_0x108679[_0x4ba3('0x8e')]||'csv'),'reportId':_0x2d00e3['id'],'reportType':'default'});return db['AnalyticExtractedReport']['create'](_0x4fb6b5,{'raw':!![]});})[_0x4ba3('0x26')](function(_0x17d501){if(_0x2d00e3[_0x4ba3('0x72')]===_0x4ba3('0x92')){_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3['table']+_0x4ba3('0x93'),_0x108679['startDate'],_0x108679[_0x4ba3('0x94')]);}else{_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3[_0x4ba3('0x72')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x108679[_0x4ba3('0x95')],_0x108679[_0x4ba3('0x94')]);}if(_0x17d501){logger[_0x4ba3('0x96')](_0x4ba3('0x97'),_0x5ea9d0['toString']());require('child_process')[_0x4ba3('0x98')](path[_0x4ba3('0x55')](__dirname,'../../components/export/',_0x17d501[_0x4ba3('0x8e')]),[_0x17d501['id'],_0x5ea9d0['toString'](),path['join'](__dirname,'../../files/reports',_0x17d501['savename']),_0x5a3c63]);return _0x17d501;}else{var _0x2d2ca3=squel[_0x4ba3('0x70')]();_0x2d2ca3[_0x4ba3('0x71')]('('+_0x5ea9d0[_0x4ba3('0x86')]()+')',_0x4ba3('0x99'));_0x2d2ca3['field']('COUNT(*)',_0x4ba3('0x21'));_0x5ea9d0['limit'](_0x108679[_0x4ba3('0x1f')]||_0x2d16e5);_0x5ea9d0[_0x4ba3('0x1e')](_0x108679[_0x4ba3('0x1e')]||0x0);return dbH['sequelize'][_0x4ba3('0x35')](_0x2d2ca3[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]})[_0x4ba3('0x26')](function(_0xc938c){if(!_0xc938c[_0x4ba3('0x3c')]){_0x40dcee=0x0;}else{_0x40dcee=_0xc938c[0x0][_0x4ba3('0x21')]||0x0;}return dbH['sequelize']['query'](_0x5ea9d0[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]});})[_0x4ba3('0x26')](function(_0xd97c26){return{'rows':_0xd97c26||[],'count':_0x40dcee};});}});}exports['run']=function(_0x1fbdc7,_0x9e45ec){return runReport(_0x1fbdc7['params'],_0x1fbdc7[_0x4ba3('0x35')],_0x1fbdc7[_0x4ba3('0x44')])[_0x4ba3('0x26')](respondWithResult(_0x9e45ec,null))[_0x4ba3('0x51')](handleError(_0x9e45ec,null));};exports[_0x4ba3('0x9b')]=runReport;exports[_0x4ba3('0x35')]=function(_0xddfb0c,_0x41c531){var _0x25bf75=0xa;var _0x18bd77=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x2e812b={'SUM':'SUM(%s)','COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':_0x4ba3('0x9c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5dc74f={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':'DATE(%s)','HOUR':_0x4ba3('0x61'),'ROUND':_0x4ba3('0x9d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1590f0=function(_0x5efab9){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),'IS\x20EMPTY',_0x4ba3('0x66')],_0x5efab9);};var _0x4d3262=function(_0x4ad4d3){if(!_0x4ad4d3||!_0x4ad4d3[_0x4ba3('0x67')]['length']){return'';}for(var _0x4529a3='(',_0x9b9c64=0x0;_0x9b9c64<_0x4ad4d3[_0x4ba3('0x67')]['length'];_0x9b9c64+=0x1){_0x9b9c64>0x0&&(_0x4529a3+='\x20'+_0x4ad4d3['operator']+'\x20');_0x4529a3+=_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]?_0x4d3262(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]):_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64]['field']+'\x20'+_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')]+(_0x1590f0(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')])?'\x20'+_0x4ad4d3['rules'][_0x9b9c64][_0x4ba3('0x8c')]:'');}return _0x4529a3+')';};var _0x3073c5={'where':{'id':_0xddfb0c[_0x4ba3('0x49')]['id']}},_0x3d1c11,_0xa41747,_0x25c92c,_0x422a8d,_0x225746;_0x3073c5=_[_0x4ba3('0x43')]({},_0x3073c5,_0xddfb0c[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x3073c5)[_0x4ba3('0x26')](function(_0x3db4c2){if(_0x3db4c2){_0x3d1c11=_0x3db4c2;return _0x3db4c2['getFields']();}return null;})[_0x4ba3('0x26')](function(_0x4a8449){if(_0x4a8449){if(!_0x4a8449[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))](_0x4ba3('0x9e'),0x193);}_0xa41747=_0x4a8449;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0xfaf98a){if(_0xfaf98a){_0x25c92c=_['keyBy'](_0xfaf98a,'id');var _0x30c904;var _0x267801=squel[_0x4ba3('0x70')]();_0x267801[_0x4ba3('0x71')](_0x3d1c11['table']);for(var _0x1bae1b=0x0;_0x1bae1b<_0xa41747[_0x4ba3('0x3c')];_0x1bae1b+=0x1){_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x73')]?_0x25c92c[_0xa41747[_0x1bae1b][_0x4ba3('0x73')]]['metric']:_0xa41747[_0x1bae1b][_0x4ba3('0x6a')];_0x30c904=_0xa41747[_0x1bae1b]['function']?_[_0x4ba3('0x76')](_0x2e812b[_0xa41747[_0x1bae1b][_0x4ba3('0x75')]],'%s',_0x30c904):_0x30c904;_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x5dc74f[_0xa41747[_0x1bae1b]['format']],'%s',_0x30c904):_0x30c904;if(_0xa41747[_0x1bae1b]['groupBy']){_0x267801[_0x4ba3('0x69')](_0x30c904);}_0xa41747[_0x1bae1b][_0x4ba3('0x79')]&&_0x267801[_0x4ba3('0x8d')](_0x30c904,_0xa41747[_0x1bae1b]['orderBy']==='DESC'?![]:!![]);_0x267801[_0x4ba3('0x6a')](_0x30c904,_0xa41747[_0x1bae1b][_0x4ba3('0x7b')]||_0x30c904);}if(_0x3d1c11[_0x4ba3('0x7c')]){_0x3d1c11[_0x4ba3('0x7c')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x7c')]);for(var _0x2f4966=0x0;_0x2f4966<_0x3d1c11[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x2f4966+=0x1){if(_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x18bd77,_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')])&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x80')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7f')]){_0x267801[_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]](_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x3d1c11[_0x4ba3('0x72')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],_0x3d1c11['joins'][_0x2f4966][_0x4ba3('0x7f')]));}}}if(_0x3d1c11[_0x4ba3('0x82')]){_0x3d1c11[_0x4ba3('0x82')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x82')]);_0x267801[_0x4ba3('0x40')](_0x4d3262(_0x3d1c11[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x225746=_0x267801[_0x4ba3('0x83')]();_0x267801[_0x4ba3('0x1f')](_0x25bf75);_0x267801[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x267801['toString']());return dbH[_0x4ba3('0x87')]['query'](_0x267801['toString'](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')]['SELECT']});}})[_0x4ba3('0x26')](function(){return{'sql':_0x225746[_0x4ba3('0x86')]()};})[_0x4ba3('0x26')](respondWithResult(_0x41c531,null))[_0x4ba3('0x51')](handleError(_0x41c531,null));};
\ No newline at end of file
+var _0x46ed=['SEC_TO_TIME(%s)','value','AnalyticMetric','select','DESC','output','fullPath','%s-%s.%s','randomstring','csv','default','AnalyticExtractedReport','cdr','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../files/reports','savename','countTable','COUNT(*)','sequelize','runReport','left_join','COUNT(%s)','MIN(%s)','AVG(%s)','Limited\x20Query:','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','Reports','UserProfileSection','userProfileId','autoAssociation','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','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','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','order','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','QueryTypes','SELECT'];(function(_0x227e24,_0x573dd6){var _0x2ccc99=function(_0x177963){while(--_0x177963){_0x227e24['push'](_0x227e24['shift']());}};_0x2ccc99(++_0x573dd6);}(_0x46ed,0x168));var _0xd46e=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x46ed[_0x178e48];return _0x440d7e;};'use strict';var emlformat=require(_0xd46e('0x0'));var rimraf=require(_0xd46e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd46e('0x2'));var rp=require(_0xd46e('0x3'));var moment=require(_0xd46e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd46e('0x5'));var util=require(_0xd46e('0x6'));var path=require('path');var sox=require(_0xd46e('0x7'));var csv=require(_0xd46e('0x8'));var ejs=require(_0xd46e('0x9'));var fs=require('fs');var fs_extra=require(_0xd46e('0xa'));var _=require(_0xd46e('0xb'));var squel=require(_0xd46e('0xc'));var crypto=require(_0xd46e('0xd'));var jsforce=require(_0xd46e('0xe'));var deskjs=require(_0xd46e('0xf'));var toCsv=require(_0xd46e('0x8'));var querystring=require(_0xd46e('0x10'));var Papa=require('papaparse');var Redis=require(_0xd46e('0x11'));var authService=require(_0xd46e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd46e('0x13'));var hardwareService=require(_0xd46e('0x14'));var logger=require(_0xd46e('0x15'))(_0xd46e('0x16'));var utils=require(_0xd46e('0x17'));var config=require(_0xd46e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd46e('0x19'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0xf3048c,_0x27dbfb){_0x27dbfb=_0x27dbfb||0xcc;return function(_0x53b309){if(_0x53b309){return _0xf3048c['sendStatus'](_0x27dbfb);}return _0xf3048c[_0xd46e('0x1a')](_0x27dbfb)[_0xd46e('0x1b')]();};}function respondWithResult(_0x1e9aae,_0x3fdf88){_0x3fdf88=_0x3fdf88||0xc8;return function(_0x50c7c3){if(_0x50c7c3){return _0x1e9aae[_0xd46e('0x1a')](_0x3fdf88)[_0xd46e('0x1c')](_0x50c7c3);}};}function respondWithFilteredResult(_0x417402,_0x3d72ce){return function(_0x36a317){if(_0x36a317){var _0x47fa8f=typeof _0x3d72ce[_0xd46e('0x1d')]===_0xd46e('0x1e')&&typeof _0x3d72ce[_0xd46e('0x1f')]==='undefined';var _0x5ddd04=_0x36a317[_0xd46e('0x20')];var _0x1bd574=_0x47fa8f?0x0:_0x3d72ce['offset'];var _0x4fd1f2=_0x47fa8f?_0x36a317[_0xd46e('0x20')]:_0x3d72ce[_0xd46e('0x1d')]+_0x3d72ce[_0xd46e('0x1f')];var _0x2273c5;if(_0x4fd1f2>=_0x5ddd04){_0x4fd1f2=_0x5ddd04;_0x2273c5=0xc8;}else{_0x2273c5=0xce;}_0x417402[_0xd46e('0x1a')](_0x2273c5);return _0x417402[_0xd46e('0x21')](_0xd46e('0x22'),_0x1bd574+'-'+_0x4fd1f2+'/'+_0x5ddd04)[_0xd46e('0x1c')](_0x36a317);}return null;};}function patchUpdates(_0xb4940){return function(_0x3c7e91){try{jsonpatch[_0xd46e('0x23')](_0x3c7e91,_0xb4940,!![]);}catch(_0x5ba94d){return BPromise[_0xd46e('0x24')](_0x5ba94d);}return _0x3c7e91[_0xd46e('0x25')]();};}function saveUpdates(_0x79aa51,_0x45ce0b){return function(_0x128246){if(_0x128246){return _0x128246[_0xd46e('0x26')](_0x79aa51)[_0xd46e('0x27')](function(_0x8a1be){return _0x8a1be;});}return null;};}function removeEntity(_0x62dea5,_0x4cf899){return function(_0x314570){if(_0x314570){return _0x314570['destroy']()['then'](function(){var _0x371054=_0x314570[_0xd46e('0x28')]({'plain':!![]});var _0x21135f=_0xd46e('0x29');return db[_0xd46e('0x2a')][_0xd46e('0x2b')]({'where':{'type':_0x21135f,'resourceId':_0x371054['id']}})[_0xd46e('0x27')](function(){return _0x314570;});})['then'](function(){_0x62dea5[_0xd46e('0x1a')](0xcc)[_0xd46e('0x1b')]();});}};}function handleEntityNotFound(_0xddbce9,_0x17db79){return function(_0x96f15c){if(!_0x96f15c){_0xddbce9[_0xd46e('0x2c')](0x194);}return _0x96f15c;};}function handleError(_0x58aeef,_0x465d54){_0x465d54=_0x465d54||0x1f4;return function(_0x3a1ced){logger[_0xd46e('0x2d')](_0x3a1ced[_0xd46e('0x2e')]);if(_0x3a1ced[_0xd46e('0x2f')]){delete _0x3a1ced[_0xd46e('0x2f')];}_0x58aeef[_0xd46e('0x1a')](_0x465d54)[_0xd46e('0x30')](_0x3a1ced);};}exports[_0xd46e('0x31')]=function(_0x45ea47,_0x2ff785){var _0x504324={},_0x2f4a1b={},_0x5ed8dc={'count':0x0,'rows':[]};var _0x1248ce=_[_0xd46e('0x32')](db[_0xd46e('0x33')][_0xd46e('0x34')],function(_0x5ef248){return{'name':_0x5ef248[_0xd46e('0x35')],'type':_0x5ef248[_0xd46e('0x36')]['key']};});_0x2f4a1b[_0xd46e('0x37')]=_[_0xd46e('0x32')](_0x1248ce,'name');_0x2f4a1b[_0xd46e('0x38')]=_[_0xd46e('0x39')](_0x45ea47[_0xd46e('0x38')]);_0x2f4a1b['filters']=_['intersection'](_0x2f4a1b[_0xd46e('0x37')],_0x2f4a1b[_0xd46e('0x38')]);_0x504324[_0xd46e('0x3a')]=_[_0xd46e('0x3b')](_0x2f4a1b[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x504324['attributes']=_0x504324[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x504324[_0xd46e('0x3a')]:_0x2f4a1b[_0xd46e('0x37')];if(!_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3e')](_0xd46e('0x3f'))){_0x504324['limit']=qs[_0xd46e('0x1f')](_0x45ea47[_0xd46e('0x38')]['limit']);_0x504324[_0xd46e('0x1d')]=qs[_0xd46e('0x1d')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x1d')]);}_0x504324['order']=qs[_0xd46e('0x40')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x40')]);_0x504324[_0xd46e('0x41')]=qs[_0xd46e('0x42')](_[_0xd46e('0x43')](_0x45ea47[_0xd46e('0x38')],_0x2f4a1b[_0xd46e('0x42')]),_0x1248ce);if(_0x45ea47['query'][_0xd46e('0x44')]){_0x504324[_0xd46e('0x41')]=_[_0xd46e('0x45')](_0x504324[_0xd46e('0x41')],{'$or':_[_0xd46e('0x32')](_0x1248ce,function(_0x56f99c){if(_0x56f99c[_0xd46e('0x36')]!=='VIRTUAL'){var _0x55230d={};_0x55230d[_0x56f99c['name']]={'$like':'%'+_0x45ea47['query'][_0xd46e('0x44')]+'%'};return _0x55230d;}})});}_0x504324=_['merge']({},_0x504324,_0x45ea47[_0xd46e('0x46')]);var _0x40720e={'where':_0x504324['where']};return db[_0xd46e('0x33')][_0xd46e('0x20')](_0x40720e)[_0xd46e('0x27')](function(_0x31ba12){_0x5ed8dc[_0xd46e('0x20')]=_0x31ba12;if(_0x45ea47[_0xd46e('0x38')][_0xd46e('0x47')]){_0x504324[_0xd46e('0x48')]=[{'all':!![]}];}return db[_0xd46e('0x33')][_0xd46e('0x49')](_0x504324);})[_0xd46e('0x27')](function(_0x5ea048){_0x5ed8dc['rows']=_0x5ea048;return _0x5ed8dc;})['then'](respondWithFilteredResult(_0x2ff785,_0x504324))[_0xd46e('0x4a')](handleError(_0x2ff785,null));};exports['show']=function(_0x168d35,_0x272f5f){var _0x3fdf67={'raw':!![],'where':{'id':_0x168d35[_0xd46e('0x4b')]['id']}},_0x416505={};_0x416505[_0xd46e('0x37')]=_[_0xd46e('0x39')](db[_0xd46e('0x33')]['rawAttributes']);_0x416505[_0xd46e('0x38')]=_['keys'](_0x168d35[_0xd46e('0x38')]);_0x416505[_0xd46e('0x42')]=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],_0x416505[_0xd46e('0x38')]);_0x3fdf67['attributes']=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x168d35[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x3fdf67['attributes']=_0x3fdf67[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x3fdf67[_0xd46e('0x3a')]:_0x416505[_0xd46e('0x37')];if(_0x168d35[_0xd46e('0x38')]['includeAll']){_0x3fdf67[_0xd46e('0x48')]=[{'all':!![]}];}_0x3fdf67=_[_0xd46e('0x45')]({},_0x3fdf67,_0x168d35[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fdf67)[_0xd46e('0x27')](handleEntityNotFound(_0x272f5f,null))[_0xd46e('0x27')](respondWithResult(_0x272f5f,null))[_0xd46e('0x4a')](handleError(_0x272f5f,null));};exports['create']=function(_0xf9dab,_0x71a8dc){return db[_0xd46e('0x33')][_0xd46e('0x4d')](_0xf9dab[_0xd46e('0x4e')],{})['then'](function(_0x4ae314){var _0x3a94cf=_0xf9dab[_0xd46e('0x4f')][_0xd46e('0x28')]({'plain':!![]});if(!_0x3a94cf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a94cf['role']===_0xd46e('0x4f')){var _0x9d8638=_0x4ae314['get']({'plain':!![]});var _0x2eee92=_0xd46e('0x50');return db[_0xd46e('0x51')][_0xd46e('0x4c')]({'where':{'name':_0x2eee92,'userProfileId':_0x3a94cf[_0xd46e('0x52')]},'raw':!![]})[_0xd46e('0x27')](function(_0x80ed51){if(_0x80ed51&&_0x80ed51[_0xd46e('0x53')]===0x0){return db['UserProfileResource'][_0xd46e('0x4d')]({'name':_0x9d8638[_0xd46e('0x2f')],'resourceId':_0x9d8638['id'],'type':_0xd46e('0x29'),'sectionId':_0x80ed51['id']},{})[_0xd46e('0x27')](function(){return _0x4ae314;});}else{return _0x4ae314;}})['catch'](function(_0x56dd9a){logger[_0xd46e('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56dd9a);throw _0x56dd9a;});}return _0x4ae314;})[_0xd46e('0x27')](respondWithResult(_0x71a8dc,0xc9))[_0xd46e('0x4a')](handleError(_0x71a8dc,null));};exports[_0xd46e('0x26')]=function(_0x31f7eb,_0x5a7870){if(_0x31f7eb[_0xd46e('0x4e')]['id']){delete _0x31f7eb['body']['id'];}return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x31f7eb[_0xd46e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a7870,null))[_0xd46e('0x27')](saveUpdates(_0x31f7eb[_0xd46e('0x4e')],null))[_0xd46e('0x27')](respondWithResult(_0x5a7870,null))[_0xd46e('0x4a')](handleError(_0x5a7870,null));};exports[_0xd46e('0x2b')]=function(_0x2cc676,_0x2760ef){return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x2cc676[_0xd46e('0x4b')]['id']}})[_0xd46e('0x27')](handleEntityNotFound(_0x2760ef,null))[_0xd46e('0x27')](removeEntity(_0x2760ef,null))[_0xd46e('0x4a')](handleError(_0x2760ef,null));};exports[_0xd46e('0x54')]=function(_0x47a86c,_0x3ec709){var _0x37a22f=0xa;var _0xe0cd61=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0xaf9641={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x481dce={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x2dacb4=function(_0x2f9fcb){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x2f9fcb);};var _0x1aaa99=function(_0x272514){if(!_0x272514||!_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x476f09='(',_0x5067b7=0x0;_0x5067b7<_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')];_0x5067b7+=0x1){_0x5067b7>0x0&&(_0x476f09+='\x20'+_0x272514[_0xd46e('0x68')]+'\x20');_0x476f09+=_0x272514['rules'][_0x5067b7][_0xd46e('0x69')]?_0x1aaa99(_0x272514[_0xd46e('0x67')][_0x5067b7]['group']):_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6a')]+'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['condition']+(_0x2dacb4(_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6b')])?'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['value']:'');}return _0x476f09+')';};var _0xe5f8cd={'where':{'id':_0x47a86c[_0xd46e('0x4b')]['id']}},_0x516e7d,_0x32eed0,_0x148187,_0x35db1b,_0x4f3ba0;_0xe5f8cd=_[_0xd46e('0x45')]({},_0xe5f8cd,_0x47a86c[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0xe5f8cd)[_0xd46e('0x27')](function(_0x16f906){if(_0x16f906){_0x516e7d=_0x16f906;return _0x16f906[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0x3e55a3){if(_0x3e55a3){if(!_0x3e55a3[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))](_0xd46e('0x6f'),0x193);}_0x32eed0=_0x3e55a3;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3e0ed5){if(_0x3e0ed5){_0x148187=_[_0xd46e('0x70')](_0x3e0ed5,'id');var _0x2fff69;var _0x249938=squel['select']();_0x249938[_0xd46e('0x71')](_0x516e7d[_0xd46e('0x72')]);for(var _0xfb4073=0x0;_0xfb4073<_0x32eed0[_0xd46e('0x3d')];_0xfb4073+=0x1){_0x2fff69=_0x32eed0[_0xfb4073]['MetricId']?_0x148187[_0x32eed0[_0xfb4073][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x32eed0[_0xfb4073]['field'];_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0xaf9641[_0x32eed0[_0xfb4073]['function']],'%s',_0x2fff69):_0x2fff69;_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x481dce[_0x32eed0[_0xfb4073]['format']],'%s',_0x2fff69):_0x2fff69;if(_0x32eed0[_0xfb4073][_0xd46e('0x78')]){_0x249938['group'](_0x2fff69);}_0x32eed0[_0xfb4073][_0xd46e('0x79')]&&_0x249938[_0xd46e('0x7a')](_0x2fff69,_0x32eed0[_0xfb4073]['orderBy']==='DESC'?![]:!![]);_0x249938[_0xd46e('0x6a')](_0x2fff69,_0x32eed0[_0xfb4073][_0xd46e('0x7b')]||_0x2fff69);}if(_0x516e7d[_0xd46e('0x7c')]){_0x516e7d[_0xd46e('0x7c')]=JSON['parse'](_0x516e7d[_0xd46e('0x7c')]);for(var _0x372509=0x0;_0x372509<_0x516e7d['joins'][_0xd46e('0x3d')];_0x372509+=0x1){if(_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0xe0cd61,_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')])&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7d')]&&_0x516e7d[_0xd46e('0x7c')][_0x372509]['foreignTable']&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7e')]){_0x249938[_0x516e7d['joins'][_0x372509][_0xd46e('0x36')]](_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0x516e7d[_0xd46e('0x72')],_0x516e7d['joins'][_0x372509]['parentKey'],_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],_0x516e7d['joins'][_0x372509]['foreignKey']));}}}if(_0x516e7d['conditions']){_0x516e7d[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x516e7d[_0xd46e('0x81')]);_0x249938['where'](_0x1aaa99(_0x516e7d[_0xd46e('0x81')][_0xd46e('0x69')]));}_0x4f3ba0=_0x249938[_0xd46e('0x83')]();_0x249938['limit'](_0x37a22f);_0x249938['offset'](0x0);logger['debug']('Limited\x20Query:',_0x249938[_0xd46e('0x84')]());return dbH['sequelize'][_0xd46e('0x38')](_0x249938['toString'](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](respondWithResult(_0x3ec709,null))[_0xd46e('0x4a')](handleError(_0x3ec709,null));};function runReport(_0xf16d87,_0x99872a,_0x57a7cc){var _0x586024=_0x99872a[_0xd46e('0x2f')];var _0x383919=0xa;var _0x114f2c=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0x4ca21f={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x5ef4cc={'SEC_TO_TIME':_0xd46e('0x87'),'DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x88460a=function(_0x3a3744){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x3a3744);};var _0x3c476d=function(_0x1b2a6d){if(!_0x1b2a6d||!_0x1b2a6d[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x441f73='(',_0x1d2738=0x0;_0x1d2738<_0x1b2a6d['rules'][_0xd46e('0x3d')];_0x1d2738+=0x1){_0x1d2738>0x0&&(_0x441f73+='\x20'+_0x1b2a6d['operator']+'\x20');_0x441f73+=_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x69')]?_0x3c476d(_0x1b2a6d['rules'][_0x1d2738][_0xd46e('0x69')]):_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6a')]+'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')]+(_0x88460a(_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')])?'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x88')]:'');}return _0x441f73+')';};var _0x3fa34d={'where':{'id':_0xf16d87['id']}},_0xc098c9,_0x5f5ba7,_0x493df5,_0x18e140,_0x459a0c;_0x3fa34d=_[_0xd46e('0x45')]({},_0x3fa34d,_0x57a7cc);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fa34d)[_0xd46e('0x27')](function(_0x5b554e){if(_0x5b554e){_0xc098c9=_0x5b554e;return _0x5b554e[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0xa254f5){if(_0xa254f5){if(!_0xa254f5[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5f5ba7=_0xa254f5;return db[_0xd46e('0x89')][_0xd46e('0x49')]({'raw':!![]});}return null;})['then'](function(_0x3c8d68){if(_0x3c8d68){_0x493df5=_[_0xd46e('0x70')](_0x3c8d68,'id');var _0x9e222d;var _0x3da17e=squel[_0xd46e('0x8a')]();_0x3da17e[_0xd46e('0x71')](_0xc098c9[_0xd46e('0x72')]);for(var _0x282f71=0x0;_0x282f71<_0x5f5ba7[_0xd46e('0x3d')];_0x282f71+=0x1){_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x73')]?_0x493df5[_0x5f5ba7[_0x282f71][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x5f5ba7[_0x282f71][_0xd46e('0x6a')];_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x75')]?_['replace'](_0x4ca21f[_0x5f5ba7[_0x282f71]['function']],'%s',_0x9e222d):_0x9e222d;_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x5ef4cc[_0x5f5ba7[_0x282f71][_0xd46e('0x77')]],'%s',_0x9e222d):_0x9e222d;if(_0x5f5ba7[_0x282f71][_0xd46e('0x78')]){_0x3da17e[_0xd46e('0x69')](_0x9e222d);}_0x5f5ba7[_0x282f71][_0xd46e('0x79')]&&_0x3da17e['order'](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x3da17e[_0xd46e('0x6a')](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x7b')]||_0x9e222d);}if(_0xc098c9['joins']){_0xc098c9[_0xd46e('0x7c')]=JSON[_0xd46e('0x82')](_0xc098c9['joins']);for(var _0xdf967c=0x0;_0xdf967c<_0xc098c9['joins']['length'];_0xdf967c+=0x1){if(_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x114f2c,_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['type'])&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7d')]&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7f')]&&_0xc098c9['joins'][_0xdf967c]['foreignKey']){_0x3da17e[_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]](_0xc098c9['joins'][_0xdf967c]['foreignTable'],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0xc098c9[_0xd46e('0x72')],_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['parentKey'],_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x7f')],_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7e')]));}}}if(_0xc098c9[_0xd46e('0x81')]){_0xc098c9[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0xc098c9[_0xd46e('0x81')]);_0x3da17e[_0xd46e('0x41')](_0x3c476d(_0xc098c9['conditions'][_0xd46e('0x69')]));}_0x459a0c=_0x3da17e[_0xd46e('0x83')]();_0x3da17e['limit'](_0x383919);_0x3da17e['offset'](0x0);return;}})[_0xd46e('0x27')](function(){if(_0x99872a[_0xd46e('0x8c')]==='web'){return null;}var _0x5e637d=_[_0xd46e('0x45')](_0x99872a,{'name':_0x99872a[_0xd46e('0x8d')]||_0x99872a['name']||_0xc098c9[_0xd46e('0x2f')],'basename':_0x586024,'savename':util[_0xd46e('0x77')](_0xd46e('0x8e'),_0x99872a[_0xd46e('0x2f')]||_0xc098c9[_0xd46e('0x2f')],require(_0xd46e('0x8f'))['generate'](0x4),_0x99872a[_0xd46e('0x8c')]||_0xd46e('0x90')),'reportId':_0xc098c9['id'],'reportType':_0xd46e('0x91')});return db[_0xd46e('0x92')][_0xd46e('0x4d')](_0x5e637d,{'raw':!![]});})[_0xd46e('0x27')](function(_0x3311a6){if(_0xc098c9[_0xd46e('0x72')]===_0xd46e('0x93')){_0x459a0c[_0xd46e('0x41')](_0xc098c9[_0xd46e('0x72')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x99872a[_0xd46e('0x94')],_0x99872a['endDate']);}else{_0x459a0c['where'](_0xc098c9[_0xd46e('0x72')]+_0xd46e('0x95'),_0x99872a[_0xd46e('0x94')],_0x99872a[_0xd46e('0x96')]);}if(_0x3311a6){logger[_0xd46e('0x97')](_0xd46e('0x98'),_0x459a0c[_0xd46e('0x84')]());require(_0xd46e('0x99'))['fork'](path[_0xd46e('0x55')](__dirname,'../../components/export/',_0x3311a6[_0xd46e('0x8c')]),[_0x3311a6['id'],_0x459a0c[_0xd46e('0x84')](),path[_0xd46e('0x55')](__dirname,_0xd46e('0x9a'),_0x3311a6[_0xd46e('0x9b')]),_0x586024]);return _0x3311a6;}else{var _0x399918=squel[_0xd46e('0x8a')]();_0x399918[_0xd46e('0x71')]('('+_0x459a0c['toString']()+')',_0xd46e('0x9c'));_0x399918[_0xd46e('0x6a')](_0xd46e('0x9d'),'count');_0x459a0c[_0xd46e('0x1f')](_0x99872a[_0xd46e('0x1f')]||_0x383919);_0x459a0c[_0xd46e('0x1d')](_0x99872a['offset']||0x0);return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x399918[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]})['then'](function(_0x4967ff){if(!_0x4967ff[_0xd46e('0x3d')]){_0x18e140=0x0;}else{_0x18e140=_0x4967ff[0x0][_0xd46e('0x20')]||0x0;}return dbH['sequelize'][_0xd46e('0x38')](_0x459a0c[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]});})[_0xd46e('0x27')](function(_0x4bb76b){return{'rows':_0x4bb76b||[],'count':_0x18e140};});}});}exports['run']=function(_0x204a9f,_0x52ca5a){return runReport(_0x204a9f[_0xd46e('0x4b')],_0x204a9f[_0xd46e('0x38')],_0x204a9f['options'])[_0xd46e('0x27')](respondWithResult(_0x52ca5a,null))[_0xd46e('0x4a')](handleError(_0x52ca5a,null));};exports[_0xd46e('0x9f')]=runReport;exports[_0xd46e('0x38')]=function(_0x786ae,_0x537c73){var _0x1610bd=0xa;var _0x20cc4c=[_0xd46e('0x55'),_0xd46e('0xa0'),_0xd46e('0x56'),_0xd46e('0x57')];var _0x368742={'SUM':_0xd46e('0x58'),'COUNT':_0xd46e('0xa1'),'COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':_0xd46e('0xa2'),'AVG':_0xd46e('0xa3'),'GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x285cf8={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xc87da2=function(_0x195f02){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),'IS\x20NOT\x20NULL',_0xd46e('0x65'),_0xd46e('0x66')],_0x195f02);};var _0x44322f=function(_0x49959f){if(!_0x49959f||!_0x49959f['rules'][_0xd46e('0x3d')]){return'';}for(var _0x2094e5='(',_0x85aac1=0x0;_0x85aac1<_0x49959f[_0xd46e('0x67')][_0xd46e('0x3d')];_0x85aac1+=0x1){_0x85aac1>0x0&&(_0x2094e5+='\x20'+_0x49959f[_0xd46e('0x68')]+'\x20');_0x2094e5+=_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]?_0x44322f(_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]):_0x49959f['rules'][_0x85aac1][_0xd46e('0x6a')]+'\x20'+_0x49959f['rules'][_0x85aac1]['condition']+(_0xc87da2(_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x6b')])?'\x20'+_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x88')]:'');}return _0x2094e5+')';};var _0x101a29={'where':{'id':_0x786ae[_0xd46e('0x4b')]['id']}},_0x3a44da,_0x417068,_0x52e73e,_0x206077,_0xe729b6;_0x101a29=_[_0xd46e('0x45')]({},_0x101a29,_0x786ae[_0xd46e('0x46')]);return db['AnalyticDefaultReport'][_0xd46e('0x4c')](_0x101a29)[_0xd46e('0x27')](function(_0x1d08bb){if(_0x1d08bb){_0x3a44da=_0x1d08bb;return _0x1d08bb['getFields']();}return null;})[_0xd46e('0x27')](function(_0x8c6ed1){if(_0x8c6ed1){if(!_0x8c6ed1['length']){throw new db['Sequelize']['ValidationErrorItem'](_0xd46e('0x6f'),0x193);}_0x417068=_0x8c6ed1;return db[_0xd46e('0x89')]['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3a13f8){if(_0x3a13f8){_0x52e73e=_['keyBy'](_0x3a13f8,'id');var _0x5a8661;var _0x157fb0=squel[_0xd46e('0x8a')]();_0x157fb0[_0xd46e('0x71')](_0x3a44da[_0xd46e('0x72')]);for(var _0x50750f=0x0;_0x50750f<_0x417068['length'];_0x50750f+=0x1){_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x73')]?_0x52e73e[_0x417068[_0x50750f][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x417068[_0x50750f][_0xd46e('0x6a')];_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0x368742[_0x417068[_0x50750f][_0xd46e('0x75')]],'%s',_0x5a8661):_0x5a8661;_0x5a8661=_0x417068[_0x50750f]['format']?_[_0xd46e('0x76')](_0x285cf8[_0x417068[_0x50750f][_0xd46e('0x77')]],'%s',_0x5a8661):_0x5a8661;if(_0x417068[_0x50750f]['groupBy']){_0x157fb0[_0xd46e('0x69')](_0x5a8661);}_0x417068[_0x50750f][_0xd46e('0x79')]&&_0x157fb0[_0xd46e('0x7a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x157fb0[_0xd46e('0x6a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x7b')]||_0x5a8661);}if(_0x3a44da[_0xd46e('0x7c')]){_0x3a44da['joins']=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x7c')]);for(var _0x3c819b=0x0;_0x3c819b<_0x3a44da[_0xd46e('0x7c')][_0xd46e('0x3d')];_0x3c819b+=0x1){if(_0x3a44da['joins'][_0x3c819b][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x20cc4c,_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')])&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7d')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']){_0x157fb0[_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')]](_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3a44da[_0xd46e('0x72')],_0x3a44da['joins'][_0x3c819b][_0xd46e('0x7d')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']));}}}if(_0x3a44da[_0xd46e('0x81')]){_0x3a44da[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x81')]);_0x157fb0[_0xd46e('0x41')](_0x44322f(_0x3a44da[_0xd46e('0x81')][_0xd46e('0x69')]));}_0xe729b6=_0x157fb0[_0xd46e('0x83')]();_0x157fb0[_0xd46e('0x1f')](_0x1610bd);_0x157fb0['offset'](0x0);logger['debug'](_0xd46e('0xa4'),_0x157fb0['toString']());return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x157fb0[_0xd46e('0x84')](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](function(){return{'sql':_0xe729b6['toString']()};})['then'](respondWithResult(_0x537c73,null))[_0xd46e('0x4a')](handleError(_0x537c73,null));};
\ No newline at end of file
index 35d0201..17d5628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61cf=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports'];(function(_0xe480f0,_0x4c0dc1){var _0x57b198=function(_0x4d8304){while(--_0x4d8304){_0xe480f0['push'](_0xe480f0['shift']());}};_0x57b198(++_0x4c0dc1);}(_0x61cf,0x17a));var _0xf61c=function(_0x184bb8,_0x4044d4){_0x184bb8=_0x184bb8-0x0;var _0x1523d7=_0x61cf[_0x184bb8];return _0x1523d7;};'use strict';var _=require(_0xf61c('0x0'));var util=require('util');var logger=require(_0xf61c('0x1'))(_0xf61c('0x2'));var moment=require(_0xf61c('0x3'));var BPromise=require(_0xf61c('0x4'));var rp=require(_0xf61c('0x5'));var fs=require('fs');var path=require(_0xf61c('0x6'));var rimraf=require(_0xf61c('0x7'));var config=require(_0xf61c('0x8'));var attributes=require(_0xf61c('0x9'));module[_0xf61c('0xa')]=function(_0x9b94c5,_0x66b224){return _0x9b94c5[_0xf61c('0xb')](_0xf61c('0xc'),attributes,{'tableName':_0xf61c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf383=['rimraf','../../config/environment','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5e4b35,_0x4d0efd){var _0x220bde=function(_0xa4f167){while(--_0xa4f167){_0x5e4b35['push'](_0x5e4b35['shift']());}};_0x220bde(++_0x4d0efd);}(_0xf383,0x13e));var _0x3f38=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0xf383[_0x47fd36];return _0x21a0fc;};'use strict';var _=require(_0x3f38('0x0'));var util=require(_0x3f38('0x1'));var logger=require(_0x3f38('0x2'))(_0x3f38('0x3'));var moment=require(_0x3f38('0x4'));var BPromise=require(_0x3f38('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3f38('0x6'));var config=require(_0x3f38('0x7'));var attributes=require('./analyticDefaultReport.attributes');module[_0x3f38('0x8')]=function(_0x45f96d,_0x33d21c){return _0x45f96d[_0x3f38('0x9')](_0x3f38('0xa'),attributes,{'tableName':_0x3f38('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15b32af..95529f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x224b=['message','result','catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x342501,_0xd9babb){var _0x45394f=function(_0x1096c9){while(--_0x1096c9){_0x342501['push'](_0x342501['shift']());}};_0x45394f(++_0xd9babb);}(_0x224b,0x1bc));var _0xb224=function(_0x1d6dc7,_0x28f730){_0x1d6dc7=_0x1d6dc7-0x0;var _0xc51c3=_0x224b[_0x1d6dc7];return _0xc51c3;};'use strict';var _=require('lodash');var util=require(_0xb224('0x0'));var moment=require(_0xb224('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb224('0x2'));var db=require(_0xb224('0x3'))['db'];var utils=require(_0xb224('0x4'));var logger=require(_0xb224('0x5'))('rpc');var config=require(_0xb224('0x6'));var jayson=require(_0xb224('0x7'));var client=jayson[_0xb224('0x8')][_0xb224('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20bb2c,_0x3beb10,_0x4c8834){return new BPromise(function(_0x542b47,_0x324620){return client[_0xb224('0xa')](_0x20bb2c,_0x4c8834)[_0xb224('0xb')](function(_0x40d076){logger[_0xb224('0xc')](_0xb224('0xd'),_0x3beb10,_0xb224('0xe'));logger['debug'](_0xb224('0xf'),_0x3beb10,_0xb224('0xe'),JSON[_0xb224('0x10')](_0x40d076));if(_0x40d076['error']){if(_0x40d076[_0xb224('0x11')]['code']===0x1f4){logger[_0xb224('0x11')](_0xb224('0xd'),_0x3beb10,_0x40d076['error'][_0xb224('0x12')]);return _0x324620(_0x40d076[_0xb224('0x11')][_0xb224('0x12')]);}logger[_0xb224('0x11')](_0xb224('0xd'),_0x3beb10,_0x40d076[_0xb224('0x11')][_0xb224('0x12')]);return _0x542b47(_0x40d076[_0xb224('0x11')]['message']);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x3beb10,'request\x20sent');_0x542b47(_0x40d076[_0xb224('0x13')][_0xb224('0x12')]);}})[_0xb224('0x14')](function(_0x50c420){logger[_0xb224('0x11')](_0xb224('0xd'),_0x3beb10,_0x50c420);_0x324620(_0x50c420);});});}
\ No newline at end of file
+var _0xfc14=['../../config/environment','jayson/promise','http','request','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0xffa65c,_0x3aa2f3){var _0x2157ad=function(_0x2f348d){while(--_0x2f348d){_0xffa65c['push'](_0xffa65c['shift']());}};_0x2157ad(++_0x3aa2f3);}(_0xfc14,0xd4));var _0x4fc1=function(_0x2c21d1,_0x1e26cd){_0x2c21d1=_0x2c21d1-0x0;var _0x237b04=_0xfc14[_0x2c21d1];return _0x237b04;};'use strict';var _=require(_0x4fc1('0x0'));var util=require(_0x4fc1('0x1'));var moment=require(_0x4fc1('0x2'));var BPromise=require(_0x4fc1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4fc1('0x4'))['db'];var utils=require(_0x4fc1('0x5'));var logger=require(_0x4fc1('0x6'))(_0x4fc1('0x7'));var config=require(_0x4fc1('0x8'));var jayson=require(_0x4fc1('0x9'));var client=jayson['client'][_0x4fc1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46ea15,_0xd3c952,_0x256cfc){return new BPromise(function(_0x44b630,_0x3fa339){return client[_0x4fc1('0xb')](_0x46ea15,_0x256cfc)['then'](function(_0xf4cb50){logger[_0x4fc1('0xc')](_0x4fc1('0xd'),_0xd3c952,_0x4fc1('0xe'));logger[_0x4fc1('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0xd3c952,_0x4fc1('0xe'),JSON['stringify'](_0xf4cb50));if(_0xf4cb50[_0x4fc1('0x10')]){if(_0xf4cb50[_0x4fc1('0x10')][_0x4fc1('0x11')]===0x1f4){logger[_0x4fc1('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0xd3c952,_0xf4cb50[_0x4fc1('0x10')][_0x4fc1('0x12')]);return _0x3fa339(_0xf4cb50['error'][_0x4fc1('0x12')]);}logger[_0x4fc1('0x10')](_0x4fc1('0xd'),_0xd3c952,_0xf4cb50[_0x4fc1('0x10')][_0x4fc1('0x12')]);return _0x44b630(_0xf4cb50[_0x4fc1('0x10')][_0x4fc1('0x12')]);}else{logger[_0x4fc1('0xc')](_0x4fc1('0xd'),_0xd3c952,'request\x20sent');_0x44b630(_0xf4cb50['result'][_0x4fc1('0x12')]);}})[_0x4fc1('0x13')](function(_0x161790){logger[_0x4fc1('0x10')](_0x4fc1('0xd'),_0xd3c952,_0x161790);_0x3fa339(_0x161790);});});}
\ No newline at end of file
index 952e05b..4c553b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fab=['update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','get','index','/:id','show','/:id/preview','preview','/:id/run','isAuthenticated','run','/:id/query','post','create','put'];(function(_0x5dbaa7,_0x1f6d4a){var _0x481319=function(_0x116e27){while(--_0x116e27){_0x5dbaa7['push'](_0x5dbaa7['shift']());}};_0x481319(++_0x1f6d4a);}(_0x3fab,0x1a4));var _0xb3fa=function(_0x25e296,_0x25daa0){_0x25e296=_0x25e296-0x0;var _0x1d799a=_0x3fab[_0x25e296];return _0x1d799a;};'use strict';var multer=require(_0xb3fa('0x0'));var util=require(_0xb3fa('0x1'));var path=require(_0xb3fa('0x2'));var timeout=require('connect-timeout');var express=require(_0xb3fa('0x3'));var router=express[_0xb3fa('0x4')]();var fs_extra=require(_0xb3fa('0x5'));var auth=require(_0xb3fa('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb3fa('0x7'));var controller=require(_0xb3fa('0x8'));router[_0xb3fa('0x9')]('/',auth['isAuthenticated'](),controller[_0xb3fa('0xa')]);router['get'](_0xb3fa('0xb'),auth['isAuthenticated'](),controller[_0xb3fa('0xc')]);router[_0xb3fa('0x9')](_0xb3fa('0xd'),auth['isAuthenticated'](),controller[_0xb3fa('0xe')]);router[_0xb3fa('0x9')](_0xb3fa('0xf'),auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x11')]);router[_0xb3fa('0x9')](_0xb3fa('0x12'),auth['isAuthenticated'](),controller['query']);router[_0xb3fa('0x13')]('/',auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x14')]);router[_0xb3fa('0x15')](_0xb3fa('0xb'),auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x16')]);router[_0xb3fa('0x17')](_0xb3fa('0xb'),auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x18')]);module[_0xb3fa('0x19')]=router;
\ No newline at end of file
+var _0x382b=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','show','/:id/preview','preview','/:id/run','run','create','put','delete','destroy','exports','multer','util'];(function(_0x25a42a,_0x3d489b){var _0x1129b1=function(_0x4ae61b){while(--_0x4ae61b){_0x25a42a['push'](_0x25a42a['shift']());}};_0x1129b1(++_0x3d489b);}(_0x382b,0x11c));var _0xb382=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x382b[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xb382('0x0'));var util=require(_0xb382('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb382('0x2'));var router=express[_0xb382('0x3')]();var fs_extra=require(_0xb382('0x4'));var auth=require(_0xb382('0x5'));var interaction=require(_0xb382('0x6'));var config=require(_0xb382('0x7'));var controller=require(_0xb382('0x8'));router[_0xb382('0x9')]('/',auth[_0xb382('0xa')](),controller[_0xb382('0xb')]);router[_0xb382('0x9')]('/:id',auth[_0xb382('0xa')](),controller[_0xb382('0xc')]);router[_0xb382('0x9')](_0xb382('0xd'),auth[_0xb382('0xa')](),controller[_0xb382('0xe')]);router[_0xb382('0x9')](_0xb382('0xf'),auth['isAuthenticated'](),controller[_0xb382('0x10')]);router[_0xb382('0x9')]('/:id/query',auth[_0xb382('0xa')](),controller['query']);router['post']('/',auth[_0xb382('0xa')](),controller[_0xb382('0x11')]);router[_0xb382('0x12')]('/:id',auth[_0xb382('0xa')](),controller['update']);router[_0xb382('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xb382('0x14')]);module[_0xb382('0x15')]=router;
\ No newline at end of file
index 09cb850..4395748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd50=['moment','exports','STRING','ENUM','csv','xlsx','DATE','Loading','manual','UNSIGNED','sequelize'];(function(_0x4099ee,_0x38495a){var _0x1b7bfc=function(_0x5f5388){while(--_0x5f5388){_0x4099ee['push'](_0x4099ee['shift']());}};_0x1b7bfc(++_0x38495a);}(_0xbd50,0x1e3));var _0x0bd5=function(_0x55206c,_0x500d88){_0x55206c=_0x55206c-0x0;var _0x1fc57=_0xbd50[_0x55206c];return _0x1fc57;};'use strict';var Sequelize=require(_0x0bd5('0x0'));var moment=require(_0x0bd5('0x1'));module[_0x0bd5('0x2')]={'name':{'type':Sequelize[_0x0bd5('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x0bd5('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x0bd5('0x4')](_0x0bd5('0x5'),'pdf',_0x0bd5('0x6')),'allowNull':![],'defaultValue':_0x0bd5('0x5')},'savename':{'type':Sequelize[_0x0bd5('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x0bd5('0x7')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x0bd5('0x3')],'defaultValue':_0x0bd5('0x8')},'type':{'type':Sequelize[_0x0bd5('0x4')](_0x0bd5('0x9'),'scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x0bd5('0xa')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x017f=['exports','STRING','pdf','DATE','Loading','manual','scheduled','INTEGER','sequelize'];(function(_0x4a46e6,_0xc2f690){var _0x5aff93=function(_0x2031d7){while(--_0x2031d7){_0x4a46e6['push'](_0x4a46e6['shift']());}};_0x5aff93(++_0xc2f690);}(_0x017f,0x18b));var _0xf017=function(_0x203764,_0x178e61){_0x203764=_0x203764-0x0;var _0x4bf6cc=_0x017f[_0x203764];return _0x4bf6cc;};'use strict';var Sequelize=require(_0xf017('0x0'));var moment=require('moment');module[_0xf017('0x1')]={'name':{'type':Sequelize[_0xf017('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xf017('0x2')],'allowNull':![]},'output':{'type':Sequelize['ENUM']('csv',_0xf017('0x3'),'xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0xf017('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0xf017('0x4')]},'endDate':{'type':Sequelize[_0xf017('0x4')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0xf017('0x5')},'type':{'type':Sequelize['ENUM'](_0xf017('0x6'),_0xf017('0x7')),'allowNull':![],'defaultValue':_0xf017('0x6')},'reportId':{'type':Sequelize[_0xf017('0x8')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0xf017('0x2')]}};
\ No newline at end of file
index 44a9977..6cf268a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd630=['sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','destroy','then','get','ExtractedReports','UserProfileResource','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','include','findAll','show','includeAll','merge','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','find','download','basename','savename','output','join','root','server/files/reports','Report\x20not\x20found\x20or\x20empty','format','%s.%s','toLowerCase','eml-format','rimraf','fast-json-patch','moment','mustache'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xd630,0xb3));var _0x0d63=function(_0x1cb49a,_0x1030c4){_0x1cb49a=_0x1cb49a-0x0;var _0x2e3458=_0xd630[_0x1cb49a];return _0x2e3458;};'use strict';var emlformat=require(_0x0d63('0x0'));var rimraf=require(_0x0d63('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0d63('0x2'));var rp=require('request-promise');var moment=require(_0x0d63('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0d63('0x4'));var util=require('util');var path=require('path');var sox=require(_0x0d63('0x5'));var csv=require(_0x0d63('0x6'));var ejs=require(_0x0d63('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0d63('0x8'));var squel=require(_0x0d63('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0d63('0xa'));var toCsv=require('to-csv');var querystring=require(_0x0d63('0xb'));var Papa=require(_0x0d63('0xc'));var Redis=require(_0x0d63('0xd'));var authService=require(_0x0d63('0xe'));var qs=require(_0x0d63('0xf'));var as=require(_0x0d63('0x10'));var hardwareService=require(_0x0d63('0x11'));var logger=require(_0x0d63('0x12'))(_0x0d63('0x13'));var utils=require(_0x0d63('0x14'));var config=require(_0x0d63('0x15'));var licenseUtil=require(_0x0d63('0x16'));var db=require(_0x0d63('0x17'))['db'];function respondWithStatusCode(_0x194c20,_0xb475f1){_0xb475f1=_0xb475f1||0xcc;return function(_0xcc8eb3){if(_0xcc8eb3){return _0x194c20[_0x0d63('0x18')](_0xb475f1);}return _0x194c20[_0x0d63('0x19')](_0xb475f1)[_0x0d63('0x1a')]();};}function respondWithResult(_0xbfa426,_0xa04562){_0xa04562=_0xa04562||0xc8;return function(_0x22a1f1){if(_0x22a1f1){return _0xbfa426[_0x0d63('0x19')](_0xa04562)['json'](_0x22a1f1);}};}function respondWithFilteredResult(_0x5d2c1e,_0x17179a){return function(_0x31a5f1){if(_0x31a5f1){var _0x26d5ef=typeof _0x17179a[_0x0d63('0x1b')]===_0x0d63('0x1c')&&typeof _0x17179a[_0x0d63('0x1d')]===_0x0d63('0x1c');var _0x429fa2=_0x31a5f1[_0x0d63('0x1e')];var _0x42ed94=_0x26d5ef?0x0:_0x17179a[_0x0d63('0x1b')];var _0xb08153=_0x26d5ef?_0x31a5f1[_0x0d63('0x1e')]:_0x17179a[_0x0d63('0x1b')]+_0x17179a[_0x0d63('0x1d')];var _0x3ff440;if(_0xb08153>=_0x429fa2){_0xb08153=_0x429fa2;_0x3ff440=0xc8;}else{_0x3ff440=0xce;}_0x5d2c1e[_0x0d63('0x19')](_0x3ff440);return _0x5d2c1e['set']('Content-Range',_0x42ed94+'-'+_0xb08153+'/'+_0x429fa2)[_0x0d63('0x1f')](_0x31a5f1);}return null;};}function patchUpdates(_0xaa8262){return function(_0x472b2f){try{jsonpatch[_0x0d63('0x20')](_0x472b2f,_0xaa8262,!![]);}catch(_0x4055e2){return BPromise[_0x0d63('0x21')](_0x4055e2);}return _0x472b2f['save']();};}function saveUpdates(_0x58aa5c,_0x58daca){return function(_0x3f2d8e){if(_0x3f2d8e){return _0x3f2d8e['update'](_0x58aa5c)['then'](function(_0x572323){return _0x572323;});}return null;};}function removeEntity(_0x51742c,_0x9e71b0){return function(_0x5b352b){if(_0x5b352b){return _0x5b352b[_0x0d63('0x22')]()[_0x0d63('0x23')](function(){var _0x126255=_0x5b352b[_0x0d63('0x24')]({'plain':!![]});var _0x23ff8f=_0x0d63('0x25');return db[_0x0d63('0x26')]['destroy']({'where':{'type':_0x23ff8f,'resourceId':_0x126255['id']}})['then'](function(){return _0x5b352b;});})[_0x0d63('0x23')](function(){_0x51742c[_0x0d63('0x19')](0xcc)[_0x0d63('0x1a')]();});}};}function handleEntityNotFound(_0x228caf,_0x14c22d){return function(_0x4d3b2d){if(!_0x4d3b2d){_0x228caf[_0x0d63('0x18')](0x194);}return _0x4d3b2d;};}function handleError(_0x49c8f0,_0x431989){_0x431989=_0x431989||0x1f4;return function(_0xb61aef){logger[_0x0d63('0x27')](_0xb61aef[_0x0d63('0x28')]);if(_0xb61aef[_0x0d63('0x29')]){delete _0xb61aef[_0x0d63('0x29')];}_0x49c8f0[_0x0d63('0x19')](_0x431989)[_0x0d63('0x2a')](_0xb61aef);};}exports[_0x0d63('0x2b')]=function(_0x2a21e5,_0x1cc590){var _0xb5fd54={},_0x3b6df2={},_0x4345da={'count':0x0,'rows':[]};var _0x4dd13e=_[_0x0d63('0x2c')](db[_0x0d63('0x2d')][_0x0d63('0x2e')],function(_0x54828c){return{'name':_0x54828c[_0x0d63('0x2f')],'type':_0x54828c[_0x0d63('0x30')]['key']};});_0x3b6df2[_0x0d63('0x31')]=_[_0x0d63('0x2c')](_0x4dd13e,_0x0d63('0x29'));_0x3b6df2['query']=_[_0x0d63('0x32')](_0x2a21e5[_0x0d63('0x33')]);_0x3b6df2[_0x0d63('0x34')]=_['intersection'](_0x3b6df2[_0x0d63('0x31')],_0x3b6df2[_0x0d63('0x33')]);_0xb5fd54[_0x0d63('0x35')]=_[_0x0d63('0x36')](_0x3b6df2[_0x0d63('0x31')],qs[_0x0d63('0x37')](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x37')]));_0xb5fd54[_0x0d63('0x35')]=_0xb5fd54['attributes'][_0x0d63('0x38')]?_0xb5fd54[_0x0d63('0x35')]:_0x3b6df2[_0x0d63('0x31')];if(!_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x39')](_0x0d63('0x3a'))){_0xb5fd54['limit']=qs['limit'](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x1d')]);_0xb5fd54[_0x0d63('0x1b')]=qs[_0x0d63('0x1b')](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x1b')]);}_0xb5fd54[_0x0d63('0x3b')]=qs['sort'](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x3c')]);_0xb5fd54[_0x0d63('0x3d')]=qs[_0x0d63('0x34')](_['pick'](_0x2a21e5[_0x0d63('0x33')],_0x3b6df2[_0x0d63('0x34')]),_0x4dd13e);if(_0x2a21e5['query'][_0x0d63('0x3e')]){_0xb5fd54['where']=_['merge'](_0xb5fd54[_0x0d63('0x3d')],{'$or':_[_0x0d63('0x2c')](_0x4dd13e,function(_0x54d082){if(_0x54d082[_0x0d63('0x30')]!==_0x0d63('0x3f')){var _0x15b765={};_0x15b765[_0x54d082[_0x0d63('0x29')]]={'$like':'%'+_0x2a21e5['query']['filter']+'%'};return _0x15b765;}})});}_0xb5fd54=_['merge']({},_0xb5fd54,_0x2a21e5[_0x0d63('0x40')]);var _0x515b4a={'where':_0xb5fd54[_0x0d63('0x3d')]};return db[_0x0d63('0x2d')]['count'](_0x515b4a)['then'](function(_0x449338){_0x4345da[_0x0d63('0x1e')]=_0x449338;if(_0x2a21e5[_0x0d63('0x33')]['includeAll']){_0xb5fd54[_0x0d63('0x41')]=[{'all':!![]}];}return db[_0x0d63('0x2d')][_0x0d63('0x42')](_0xb5fd54);})[_0x0d63('0x23')](function(_0x20d3b4){_0x4345da['rows']=_0x20d3b4;return _0x4345da;})['then'](respondWithFilteredResult(_0x1cc590,_0xb5fd54))['catch'](handleError(_0x1cc590,null));};exports[_0x0d63('0x43')]=function(_0x4b8abd,_0x54c2ce){var _0x334101={'raw':!![],'where':{'id':_0x4b8abd['params']['id']}},_0x1ff4a8={};_0x1ff4a8['model']=_[_0x0d63('0x32')](db[_0x0d63('0x2d')]['rawAttributes']);_0x1ff4a8['query']=_[_0x0d63('0x32')](_0x4b8abd['query']);_0x1ff4a8[_0x0d63('0x34')]=_[_0x0d63('0x36')](_0x1ff4a8[_0x0d63('0x31')],_0x1ff4a8['query']);_0x334101[_0x0d63('0x35')]=_[_0x0d63('0x36')](_0x1ff4a8[_0x0d63('0x31')],qs[_0x0d63('0x37')](_0x4b8abd[_0x0d63('0x33')]['fields']));_0x334101[_0x0d63('0x35')]=_0x334101[_0x0d63('0x35')][_0x0d63('0x38')]?_0x334101[_0x0d63('0x35')]:_0x1ff4a8[_0x0d63('0x31')];if(_0x4b8abd[_0x0d63('0x33')][_0x0d63('0x44')]){_0x334101[_0x0d63('0x41')]=[{'all':!![]}];}_0x334101=_[_0x0d63('0x45')]({},_0x334101,_0x4b8abd[_0x0d63('0x40')]);return db[_0x0d63('0x2d')]['find'](_0x334101)[_0x0d63('0x23')](handleEntityNotFound(_0x54c2ce,null))[_0x0d63('0x23')](respondWithResult(_0x54c2ce,null))[_0x0d63('0x46')](handleError(_0x54c2ce,null));};exports[_0x0d63('0x47')]=function(_0x3524af,_0xfdaed2){return db[_0x0d63('0x2d')][_0x0d63('0x47')](_0x3524af['body'],{})['then'](function(_0x5e6fac){var _0x16be67=_0x3524af[_0x0d63('0x48')][_0x0d63('0x24')]({'plain':!![]});if(!_0x16be67)throw new Error(_0x0d63('0x49'));if(_0x16be67[_0x0d63('0x4a')]===_0x0d63('0x48')){var _0x16fbee=_0x5e6fac[_0x0d63('0x24')]({'plain':!![]});var _0x3e4584=_0x0d63('0x25');return db[_0x0d63('0x4b')]['find']({'where':{'name':_0x3e4584,'userProfileId':_0x16be67['userProfileId']},'raw':!![]})['then'](function(_0x3136d8){if(_0x3136d8&&_0x3136d8[_0x0d63('0x4c')]===0x0){return db[_0x0d63('0x26')]['create']({'name':_0x16fbee['name'],'resourceId':_0x16fbee['id'],'type':_0x3136d8['name'],'sectionId':_0x3136d8['id']},{})[_0x0d63('0x23')](function(){return _0x5e6fac;});}else{return _0x5e6fac;}})[_0x0d63('0x46')](function(_0x491505){logger['error'](_0x0d63('0x4d'),_0x491505);throw _0x491505;});}return _0x5e6fac;})[_0x0d63('0x23')](respondWithResult(_0xfdaed2,0xc9))[_0x0d63('0x46')](handleError(_0xfdaed2,null));};exports['update']=function(_0x33082f,_0x46c2d7){if(_0x33082f[_0x0d63('0x4e')]['id']){delete _0x33082f['body']['id'];}return db[_0x0d63('0x2d')]['find']({'where':{'id':_0x33082f[_0x0d63('0x4f')]['id']}})['then'](handleEntityNotFound(_0x46c2d7,null))['then'](saveUpdates(_0x33082f[_0x0d63('0x4e')],null))['then'](respondWithResult(_0x46c2d7,null))[_0x0d63('0x46')](handleError(_0x46c2d7,null));};exports[_0x0d63('0x22')]=function(_0x3552bd,_0xee34cc){return db[_0x0d63('0x2d')][_0x0d63('0x50')]({'where':{'id':_0x3552bd[_0x0d63('0x4f')]['id']}})[_0x0d63('0x23')](handleEntityNotFound(_0xee34cc,null))[_0x0d63('0x23')](removeEntity(_0xee34cc,null))[_0x0d63('0x46')](handleError(_0xee34cc,null));};exports[_0x0d63('0x51')]=function(_0x14cdfc,_0x34f5d8,_0x48ab37){return db[_0x0d63('0x2d')]['find']({'where':{'id':_0x14cdfc[_0x0d63('0x4f')]['id']},'attributes':[_0x0d63('0x29'),_0x0d63('0x52'),_0x0d63('0x53'),_0x0d63('0x54')],'raw':!![]})[_0x0d63('0x23')](handleEntityNotFound(_0x34f5d8,null))[_0x0d63('0x23')](function(_0x435b75){if(_0x435b75){if(!fs['existsSync'](path[_0x0d63('0x55')](config[_0x0d63('0x56')],_0x0d63('0x57'),_0x435b75[_0x0d63('0x53')]))){throw new db['Sequelize']['ValidationError'](_0x0d63('0x58'));}if(_0x14cdfc[_0x0d63('0x33')]['exists']){return _0x34f5d8['sendStatus'](0xc8);}return _0x34f5d8[_0x0d63('0x51')](path[_0x0d63('0x55')](config[_0x0d63('0x56')],_0x0d63('0x57'),_0x435b75[_0x0d63('0x53')]),util[_0x0d63('0x59')](_0x0d63('0x5a'),_0x435b75[_0x0d63('0x52')]||_0x435b75[_0x0d63('0x29')],_0x435b75[_0x0d63('0x54')][_0x0d63('0x5b')]()));}})[_0x0d63('0x46')](handleError(_0x34f5d8,null));};
\ No newline at end of file
+var _0x00f0=['find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','basename','savename','output','existsSync','server/files/reports','Sequelize','download','root','format','%s.%s','toLowerCase','request-promise','moment','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','apply','reject','save','update','destroy','then','get','ExtractedReports','error','name','index','AnalyticExtractedReport','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','merge','where','options','includeAll','findAll','rows','catch','show','params','include','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x00f0,0x1b5));var _0x000f=function(_0x686404,_0xf66abf){_0x686404=_0x686404-0x0;var _0x23d837=_0x00f0[_0x686404];return _0x23d837;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x000f('0x0'));var moment=require(_0x000f('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x000f('0x2'));var path=require(_0x000f('0x3'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x000f('0x4'));var _=require(_0x000f('0x5'));var squel=require(_0x000f('0x6'));var crypto=require(_0x000f('0x7'));var jsforce=require(_0x000f('0x8'));var deskjs=require(_0x000f('0x9'));var toCsv=require('to-csv');var querystring=require(_0x000f('0xa'));var Papa=require(_0x000f('0xb'));var Redis=require(_0x000f('0xc'));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('../../config/logger')(_0x000f('0xd'));var utils=require(_0x000f('0xe'));var config=require(_0x000f('0xf'));var licenseUtil=require(_0x000f('0x10'));var db=require(_0x000f('0x11'))['db'];function respondWithStatusCode(_0x32f391,_0x27fdfc){_0x27fdfc=_0x27fdfc||0xcc;return function(_0x3792ff){if(_0x3792ff){return _0x32f391[_0x000f('0x12')](_0x27fdfc);}return _0x32f391[_0x000f('0x13')](_0x27fdfc)[_0x000f('0x14')]();};}function respondWithResult(_0x563c9e,_0x253388){_0x253388=_0x253388||0xc8;return function(_0x581db7){if(_0x581db7){return _0x563c9e['status'](_0x253388)['json'](_0x581db7);}};}function respondWithFilteredResult(_0x305708,_0x34b4ef){return function(_0x491fe2){if(_0x491fe2){var _0x1b45dc=typeof _0x34b4ef['offset']===_0x000f('0x15')&&typeof _0x34b4ef['limit']===_0x000f('0x15');var _0x434d68=_0x491fe2[_0x000f('0x16')];var _0x4271e0=_0x1b45dc?0x0:_0x34b4ef[_0x000f('0x17')];var _0x1dc27f=_0x1b45dc?_0x491fe2[_0x000f('0x16')]:_0x34b4ef['offset']+_0x34b4ef[_0x000f('0x18')];var _0x14bdf2;if(_0x1dc27f>=_0x434d68){_0x1dc27f=_0x434d68;_0x14bdf2=0xc8;}else{_0x14bdf2=0xce;}_0x305708[_0x000f('0x13')](_0x14bdf2);return _0x305708[_0x000f('0x19')]('Content-Range',_0x4271e0+'-'+_0x1dc27f+'/'+_0x434d68)['json'](_0x491fe2);}return null;};}function patchUpdates(_0x394de6){return function(_0x27fe0d){try{jsonpatch[_0x000f('0x1a')](_0x27fe0d,_0x394de6,!![]);}catch(_0x300ca2){return BPromise[_0x000f('0x1b')](_0x300ca2);}return _0x27fe0d[_0x000f('0x1c')]();};}function saveUpdates(_0x474d09,_0x23e55c){return function(_0x5d5492){if(_0x5d5492){return _0x5d5492[_0x000f('0x1d')](_0x474d09)['then'](function(_0x18136a){return _0x18136a;});}return null;};}function removeEntity(_0x11c4b1,_0x5e839f){return function(_0x281c5f){if(_0x281c5f){return _0x281c5f[_0x000f('0x1e')]()[_0x000f('0x1f')](function(){var _0x416ef7=_0x281c5f[_0x000f('0x20')]({'plain':!![]});var _0x490058=_0x000f('0x21');return db['UserProfileResource'][_0x000f('0x1e')]({'where':{'type':_0x490058,'resourceId':_0x416ef7['id']}})['then'](function(){return _0x281c5f;});})[_0x000f('0x1f')](function(){_0x11c4b1[_0x000f('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fbc2a,_0x452fdc){return function(_0x5bb332){if(!_0x5bb332){_0x4fbc2a[_0x000f('0x12')](0x194);}return _0x5bb332;};}function handleError(_0x477b7f,_0x4cccd7){_0x4cccd7=_0x4cccd7||0x1f4;return function(_0x123fd0){logger[_0x000f('0x22')](_0x123fd0['stack']);if(_0x123fd0['name']){delete _0x123fd0[_0x000f('0x23')];}_0x477b7f[_0x000f('0x13')](_0x4cccd7)['send'](_0x123fd0);};}exports[_0x000f('0x24')]=function(_0x30c43a,_0x39dcca){var _0xbab15e={},_0x3a8cf9={},_0x236574={'count':0x0,'rows':[]};var _0x5aab60=_['map'](db[_0x000f('0x25')]['rawAttributes'],function(_0xe50e4a){return{'name':_0xe50e4a['fieldName'],'type':_0xe50e4a[_0x000f('0x26')][_0x000f('0x27')]};});_0x3a8cf9[_0x000f('0x28')]=_[_0x000f('0x29')](_0x5aab60,_0x000f('0x23'));_0x3a8cf9[_0x000f('0x2a')]=_['keys'](_0x30c43a['query']);_0x3a8cf9[_0x000f('0x2b')]=_[_0x000f('0x2c')](_0x3a8cf9[_0x000f('0x28')],_0x3a8cf9[_0x000f('0x2a')]);_0xbab15e[_0x000f('0x2d')]=_[_0x000f('0x2c')](_0x3a8cf9[_0x000f('0x28')],qs[_0x000f('0x2e')](_0x30c43a[_0x000f('0x2a')][_0x000f('0x2e')]));_0xbab15e[_0x000f('0x2d')]=_0xbab15e[_0x000f('0x2d')]['length']?_0xbab15e['attributes']:_0x3a8cf9[_0x000f('0x28')];if(!_0x30c43a[_0x000f('0x2a')][_0x000f('0x2f')](_0x000f('0x30'))){_0xbab15e[_0x000f('0x18')]=qs[_0x000f('0x18')](_0x30c43a[_0x000f('0x2a')][_0x000f('0x18')]);_0xbab15e[_0x000f('0x17')]=qs[_0x000f('0x17')](_0x30c43a['query']['offset']);}_0xbab15e['order']=qs[_0x000f('0x31')](_0x30c43a[_0x000f('0x2a')][_0x000f('0x31')]);_0xbab15e['where']=qs[_0x000f('0x2b')](_[_0x000f('0x32')](_0x30c43a[_0x000f('0x2a')],_0x3a8cf9[_0x000f('0x2b')]),_0x5aab60);if(_0x30c43a[_0x000f('0x2a')][_0x000f('0x33')]){_0xbab15e['where']=_[_0x000f('0x34')](_0xbab15e[_0x000f('0x35')],{'$or':_[_0x000f('0x29')](_0x5aab60,function(_0x49756f){if(_0x49756f['type']!=='VIRTUAL'){var _0x3d408a={};_0x3d408a[_0x49756f[_0x000f('0x23')]]={'$like':'%'+_0x30c43a[_0x000f('0x2a')]['filter']+'%'};return _0x3d408a;}})});}_0xbab15e=_[_0x000f('0x34')]({},_0xbab15e,_0x30c43a[_0x000f('0x36')]);var _0x44b1df={'where':_0xbab15e[_0x000f('0x35')]};return db[_0x000f('0x25')]['count'](_0x44b1df)[_0x000f('0x1f')](function(_0x184889){_0x236574['count']=_0x184889;if(_0x30c43a[_0x000f('0x2a')][_0x000f('0x37')]){_0xbab15e['include']=[{'all':!![]}];}return db[_0x000f('0x25')][_0x000f('0x38')](_0xbab15e);})[_0x000f('0x1f')](function(_0x2c353f){_0x236574[_0x000f('0x39')]=_0x2c353f;return _0x236574;})[_0x000f('0x1f')](respondWithFilteredResult(_0x39dcca,_0xbab15e))[_0x000f('0x3a')](handleError(_0x39dcca,null));};exports[_0x000f('0x3b')]=function(_0xfd2593,_0x25a737){var _0x104153={'raw':!![],'where':{'id':_0xfd2593[_0x000f('0x3c')]['id']}},_0x4ef0cd={};_0x4ef0cd[_0x000f('0x28')]=_['keys'](db[_0x000f('0x25')]['rawAttributes']);_0x4ef0cd[_0x000f('0x2a')]=_['keys'](_0xfd2593['query']);_0x4ef0cd[_0x000f('0x2b')]=_[_0x000f('0x2c')](_0x4ef0cd[_0x000f('0x28')],_0x4ef0cd[_0x000f('0x2a')]);_0x104153[_0x000f('0x2d')]=_[_0x000f('0x2c')](_0x4ef0cd[_0x000f('0x28')],qs[_0x000f('0x2e')](_0xfd2593[_0x000f('0x2a')][_0x000f('0x2e')]));_0x104153[_0x000f('0x2d')]=_0x104153[_0x000f('0x2d')]['length']?_0x104153['attributes']:_0x4ef0cd[_0x000f('0x28')];if(_0xfd2593[_0x000f('0x2a')][_0x000f('0x37')]){_0x104153[_0x000f('0x3d')]=[{'all':!![]}];}_0x104153=_[_0x000f('0x34')]({},_0x104153,_0xfd2593['options']);return db[_0x000f('0x25')]['find'](_0x104153)[_0x000f('0x1f')](handleEntityNotFound(_0x25a737,null))[_0x000f('0x1f')](respondWithResult(_0x25a737,null))[_0x000f('0x3a')](handleError(_0x25a737,null));};exports['create']=function(_0x300ec8,_0x3ddb61){return db['AnalyticExtractedReport'][_0x000f('0x3e')](_0x300ec8['body'],{})[_0x000f('0x1f')](function(_0x378e3f){var _0x5d0fb5=_0x300ec8['user'][_0x000f('0x20')]({'plain':!![]});if(!_0x5d0fb5)throw new Error(_0x000f('0x3f'));if(_0x5d0fb5[_0x000f('0x40')]===_0x000f('0x41')){var _0x1d458d=_0x378e3f[_0x000f('0x20')]({'plain':!![]});var _0x5571da=_0x000f('0x21');return db[_0x000f('0x42')][_0x000f('0x43')]({'where':{'name':_0x5571da,'userProfileId':_0x5d0fb5[_0x000f('0x44')]},'raw':!![]})['then'](function(_0x4d94df){if(_0x4d94df&&_0x4d94df[_0x000f('0x45')]===0x0){return db[_0x000f('0x46')][_0x000f('0x3e')]({'name':_0x1d458d[_0x000f('0x23')],'resourceId':_0x1d458d['id'],'type':_0x4d94df['name'],'sectionId':_0x4d94df['id']},{})[_0x000f('0x1f')](function(){return _0x378e3f;});}else{return _0x378e3f;}})['catch'](function(_0x204d40){logger[_0x000f('0x22')](_0x000f('0x47'),_0x204d40);throw _0x204d40;});}return _0x378e3f;})[_0x000f('0x1f')](respondWithResult(_0x3ddb61,0xc9))['catch'](handleError(_0x3ddb61,null));};exports[_0x000f('0x1d')]=function(_0x2afeff,_0x4092f4){if(_0x2afeff[_0x000f('0x48')]['id']){delete _0x2afeff[_0x000f('0x48')]['id'];}return db[_0x000f('0x25')][_0x000f('0x43')]({'where':{'id':_0x2afeff[_0x000f('0x3c')]['id']}})[_0x000f('0x1f')](handleEntityNotFound(_0x4092f4,null))[_0x000f('0x1f')](saveUpdates(_0x2afeff[_0x000f('0x48')],null))[_0x000f('0x1f')](respondWithResult(_0x4092f4,null))[_0x000f('0x3a')](handleError(_0x4092f4,null));};exports['destroy']=function(_0x3ba7f1,_0x7683b7){return db[_0x000f('0x25')]['find']({'where':{'id':_0x3ba7f1[_0x000f('0x3c')]['id']}})['then'](handleEntityNotFound(_0x7683b7,null))[_0x000f('0x1f')](removeEntity(_0x7683b7,null))[_0x000f('0x3a')](handleError(_0x7683b7,null));};exports['download']=function(_0x185832,_0x106500,_0x1d25a0){return db[_0x000f('0x25')]['find']({'where':{'id':_0x185832['params']['id']},'attributes':[_0x000f('0x23'),_0x000f('0x49'),_0x000f('0x4a'),_0x000f('0x4b')],'raw':!![]})[_0x000f('0x1f')](handleEntityNotFound(_0x106500,null))['then'](function(_0x3e9254){if(_0x3e9254){if(!fs[_0x000f('0x4c')](path['join'](config['root'],_0x000f('0x4d'),_0x3e9254['savename']))){throw new db[(_0x000f('0x4e'))]['ValidationError']('Report\x20not\x20found\x20or\x20empty');}if(_0x185832[_0x000f('0x2a')]['exists']){return _0x106500[_0x000f('0x12')](0xc8);}return _0x106500[_0x000f('0x4f')](path['join'](config[_0x000f('0x50')],'server/files/reports',_0x3e9254[_0x000f('0x4a')]),util[_0x000f('0x51')](_0x000f('0x52'),_0x3e9254[_0x000f('0x49')]||_0x3e9254[_0x000f('0x23')],_0x3e9254[_0x000f('0x4b')][_0x000f('0x53')]()));}})['catch'](handleError(_0x106500,null));};
\ No newline at end of file
index 133a1e0..2c94155 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c62=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport'];(function(_0x4a896d,_0x9f778d){var _0x1f09c8=function(_0x1f33c3){while(--_0x1f33c3){_0x4a896d['push'](_0x4a896d['shift']());}};_0x1f09c8(++_0x9f778d);}(_0x1c62,0x11e));var _0x21c6=function(_0x5519a9,_0x1c5147){_0x5519a9=_0x5519a9-0x0;var _0x32f2cc=_0x1c62[_0x5519a9];return _0x32f2cc;};'use strict';var _=require(_0x21c6('0x0'));var util=require(_0x21c6('0x1'));var logger=require('../../config/logger')(_0x21c6('0x2'));var moment=require(_0x21c6('0x3'));var BPromise=require(_0x21c6('0x4'));var rp=require(_0x21c6('0x5'));var fs=require('fs');var path=require(_0x21c6('0x6'));var rimraf=require(_0x21c6('0x7'));var config=require(_0x21c6('0x8'));var attributes=require(_0x21c6('0x9'));module[_0x21c6('0xa')]=function(_0x25f0f3,_0x38842a){return _0x25f0f3[_0x21c6('0xb')](_0x21c6('0xc'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc86c=['rimraf','../../config/environment','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','../../config/logger','moment','bluebird'];(function(_0x246227,_0x12bfcb){var _0x37bd4a=function(_0x4670f4){while(--_0x4670f4){_0x246227['push'](_0x246227['shift']());}};_0x37bd4a(++_0x12bfcb);}(_0xc86c,0x1c7));var _0xcc86=function(_0x20566d,_0x3ad125){_0x20566d=_0x20566d-0x0;var _0x2d545f=_0xc86c[_0x20566d];return _0x2d545f;};'use strict';var _=require(_0xcc86('0x0'));var util=require('util');var logger=require(_0xcc86('0x1'))('api');var moment=require(_0xcc86('0x2'));var BPromise=require(_0xcc86('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcc86('0x4'));var config=require(_0xcc86('0x5'));var attributes=require('./analyticExtractedReport.attributes');module['exports']=function(_0x495817,_0x1296b0){return _0x495817[_0xcc86('0x6')](_0xcc86('0x7'),attributes,{'tableName':_0xcc86('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd6849f..b78001d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa9=['message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xe595de,_0x25ebd6){var _0x2f2a9d=function(_0x42f7ec){while(--_0x42f7ec){_0xe595de['push'](_0xe595de['shift']());}};_0x2f2a9d(++_0x25ebd6);}(_0xcaa9,0x1d0));var _0x9caa=function(_0x2f7c58,_0x284ce2){_0x2f7c58=_0x2f7c58-0x0;var _0x2c1513=_0xcaa9[_0x2f7c58];return _0x2c1513;};'use strict';var _=require(_0x9caa('0x0'));var util=require(_0x9caa('0x1'));var moment=require(_0x9caa('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9caa('0x3'));var db=require(_0x9caa('0x4'))['db'];var utils=require(_0x9caa('0x5'));var logger=require(_0x9caa('0x6'))(_0x9caa('0x7'));var config=require(_0x9caa('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9caa('0x9')][_0x9caa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3fe4da,_0x2cd68e,_0x26b163){return new BPromise(function(_0x3db5c7,_0x4f07ea){return client[_0x9caa('0xb')](_0x3fe4da,_0x26b163)[_0x9caa('0xc')](function(_0x389c96){logger[_0x9caa('0xd')](_0x9caa('0xe'),_0x2cd68e,'request\x20sent');logger['debug'](_0x9caa('0xf'),_0x2cd68e,_0x9caa('0x10'),JSON[_0x9caa('0x11')](_0x389c96));if(_0x389c96[_0x9caa('0x12')]){if(_0x389c96[_0x9caa('0x12')][_0x9caa('0x13')]===0x1f4){logger[_0x9caa('0x12')](_0x9caa('0xe'),_0x2cd68e,_0x389c96[_0x9caa('0x12')][_0x9caa('0x14')]);return _0x4f07ea(_0x389c96[_0x9caa('0x12')]['message']);}logger['error'](_0x9caa('0xe'),_0x2cd68e,_0x389c96[_0x9caa('0x12')][_0x9caa('0x14')]);return _0x3db5c7(_0x389c96[_0x9caa('0x12')][_0x9caa('0x14')]);}else{logger[_0x9caa('0xd')](_0x9caa('0xe'),_0x2cd68e,_0x9caa('0x10'));_0x3db5c7(_0x389c96[_0x9caa('0x15')][_0x9caa('0x14')]);}})['catch'](function(_0x2ae562){logger[_0x9caa('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cd68e,_0x2ae562);_0x4f07ea(_0x2ae562);});});}
\ No newline at end of file
+var _0xa9cd=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xa9cd,0x187));var _0xda9c=function(_0x107ccc,_0x2aa446){_0x107ccc=_0x107ccc-0x0;var _0x25929c=_0xa9cd[_0x107ccc];return _0x25929c;};'use strict';var _=require(_0xda9c('0x0'));var util=require(_0xda9c('0x1'));var moment=require(_0xda9c('0x2'));var BPromise=require(_0xda9c('0x3'));var rs=require(_0xda9c('0x4'));var fs=require('fs');var Redis=require(_0xda9c('0x5'));var db=require(_0xda9c('0x6'))['db'];var utils=require(_0xda9c('0x7'));var logger=require('../../config/logger')(_0xda9c('0x8'));var config=require(_0xda9c('0x9'));var jayson=require(_0xda9c('0xa'));var client=jayson[_0xda9c('0xb')][_0xda9c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x38349b,_0x52e9fb,_0x59b7c3){return new BPromise(function(_0x5a401e,_0x9bbe75){return client[_0xda9c('0xd')](_0x38349b,_0x59b7c3)[_0xda9c('0xe')](function(_0x208997){logger['info'](_0xda9c('0xf'),_0x52e9fb,_0xda9c('0x10'));logger[_0xda9c('0x11')](_0xda9c('0x12'),_0x52e9fb,_0xda9c('0x10'),JSON['stringify'](_0x208997));if(_0x208997[_0xda9c('0x13')]){if(_0x208997[_0xda9c('0x13')]['code']===0x1f4){logger['error'](_0xda9c('0xf'),_0x52e9fb,_0x208997[_0xda9c('0x13')][_0xda9c('0x14')]);return _0x9bbe75(_0x208997[_0xda9c('0x13')]['message']);}logger[_0xda9c('0x13')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x52e9fb,_0x208997['error'][_0xda9c('0x14')]);return _0x5a401e(_0x208997[_0xda9c('0x13')][_0xda9c('0x14')]);}else{logger[_0xda9c('0x15')](_0xda9c('0xf'),_0x52e9fb,'request\x20sent');_0x5a401e(_0x208997[_0xda9c('0x16')][_0xda9c('0x14')]);}})[_0xda9c('0x17')](function(_0x1db4f7){logger[_0xda9c('0x13')](_0xda9c('0xf'),_0x52e9fb,_0x1db4f7);_0x9bbe75(_0x1db4f7);});});}
\ No newline at end of file
index ee2d246..e2c2cf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3df=['../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xc3df,0x1f4));var _0xfc3d=function(_0x4eac77,_0x1a5c7c){_0x4eac77=_0x4eac77-0x0;var _0x36655c=_0xc3df[_0x4eac77];return _0x36655c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfc3d('0x0'));var timeout=require(_0xfc3d('0x1'));var express=require(_0xfc3d('0x2'));var router=express[_0xfc3d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xfc3d('0x4'));var interaction=require(_0xfc3d('0x5'));var config=require('../../config/environment');var controller=require(_0xfc3d('0x6'));router[_0xfc3d('0x7')]('/',auth[_0xfc3d('0x8')](),controller[_0xfc3d('0x9')]);router[_0xfc3d('0x7')](_0xfc3d('0xa'),auth[_0xfc3d('0x8')](),controller[_0xfc3d('0xb')]);router[_0xfc3d('0x7')](_0xfc3d('0xc'),auth['isAuthenticated'](),controller[_0xfc3d('0xd')]);router[_0xfc3d('0xe')]('/',auth[_0xfc3d('0x8')](),controller[_0xfc3d('0xf')]);router[_0xfc3d('0x10')]('/:id',auth[_0xfc3d('0x8')](),controller[_0xfc3d('0x11')]);router[_0xfc3d('0x12')](_0xfc3d('0xa'),auth[_0xfc3d('0x8')](),controller[_0xfc3d('0x13')]);module[_0xfc3d('0x14')]=router;
\ No newline at end of file
+var _0x19ab=['../../components/auth/service','get','index','isAuthenticated','show','/:id/download','download','post','create','/:id','update','delete','exports','path','connect-timeout','Router','fs-extra'];(function(_0x35cc24,_0x299db6){var _0x137359=function(_0x58ca43){while(--_0x58ca43){_0x35cc24['push'](_0x35cc24['shift']());}};_0x137359(++_0x299db6);}(_0x19ab,0xc8));var _0xb19a=function(_0x4ee490,_0x210ad9){_0x4ee490=_0x4ee490-0x0;var _0x237335=_0x19ab[_0x4ee490];return _0x237335;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb19a('0x0'));var timeout=require(_0xb19a('0x1'));var express=require('express');var router=express[_0xb19a('0x2')]();var fs_extra=require(_0xb19a('0x3'));var auth=require(_0xb19a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./analyticExtractedReport.controller');router[_0xb19a('0x5')]('/',auth['isAuthenticated'](),controller[_0xb19a('0x6')]);router[_0xb19a('0x5')]('/:id',auth[_0xb19a('0x7')](),controller[_0xb19a('0x8')]);router[_0xb19a('0x5')](_0xb19a('0x9'),auth[_0xb19a('0x7')](),controller[_0xb19a('0xa')]);router[_0xb19a('0xb')]('/',auth[_0xb19a('0x7')](),controller[_0xb19a('0xc')]);router['put'](_0xb19a('0xd'),auth[_0xb19a('0x7')](),controller[_0xb19a('0xe')]);router[_0xb19a('0xf')]('/:id',auth[_0xb19a('0x7')](),controller['destroy']);module[_0xb19a('0x10')]=router;
\ No newline at end of file
index 2feb317..1f3faf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe214=['sequelize','exports','STRING','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe214,0x160));var _0x4e21=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xe214[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x4e21('0x0'));module[_0x4e21('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x4e21('0x2')]},'function':{'type':Sequelize[_0x4e21('0x2')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x4e21('0x2')]},'custom':{'type':Sequelize[_0x4e21('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe03e=['TEXT','STRING'];(function(_0x1e3671,_0x9ae4fc){var _0x48d5f5=function(_0xfab713){while(--_0xfab713){_0x1e3671['push'](_0x1e3671['shift']());}};_0x48d5f5(++_0x9ae4fc);}(_0xe03e,0x19a));var _0xee03=function(_0x2d0275,_0x26ac57){_0x2d0275=_0x2d0275-0x0;var _0x44e7a1=_0xe03e[_0x2d0275];return _0x44e7a1;};'use strict';var Sequelize=require('sequelize');module['exports']={'field':{'type':Sequelize[_0xee03('0x0')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0xee03('0x1')]},'format':{'type':Sequelize[_0xee03('0x1')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xee03('0x1')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 40f2f6a..360c6c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb1=['eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','stack','name','index','AnalyticFieldReport','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','bulkCreate','bulkDestroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x8eb1,0x1a9));var _0x18eb=function(_0x4acba1,_0x166f12){_0x4acba1=_0x4acba1-0x0;var _0x3d12e9=_0x8eb1[_0x4acba1];return _0x3d12e9;};'use strict';var emlformat=require(_0x18eb('0x0'));var rimraf=require(_0x18eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x18eb('0x2'));var moment=require(_0x18eb('0x3'));var BPromise=require(_0x18eb('0x4'));var Mustache=require(_0x18eb('0x5'));var util=require('util');var path=require(_0x18eb('0x6'));var sox=require(_0x18eb('0x7'));var csv=require(_0x18eb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x18eb('0x9'));var _=require(_0x18eb('0xa'));var squel=require(_0x18eb('0xb'));var crypto=require(_0x18eb('0xc'));var jsforce=require(_0x18eb('0xd'));var deskjs=require(_0x18eb('0xe'));var toCsv=require(_0x18eb('0x8'));var querystring=require('querystring');var Papa=require(_0x18eb('0xf'));var Redis=require(_0x18eb('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x18eb('0x11'));var as=require(_0x18eb('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x18eb('0x13'))(_0x18eb('0x14'));var utils=require(_0x18eb('0x15'));var config=require(_0x18eb('0x16'));var licenseUtil=require(_0x18eb('0x17'));var db=require(_0x18eb('0x18'))['db'];function respondWithStatusCode(_0x6c9b76,_0x32d657){_0x32d657=_0x32d657||0xcc;return function(_0x3c5890){if(_0x3c5890){return _0x6c9b76[_0x18eb('0x19')](_0x32d657);}return _0x6c9b76[_0x18eb('0x1a')](_0x32d657)[_0x18eb('0x1b')]();};}function respondWithResult(_0x3a8eb6,_0x1557f4){_0x1557f4=_0x1557f4||0xc8;return function(_0x21fed5){if(_0x21fed5){return _0x3a8eb6[_0x18eb('0x1a')](_0x1557f4)[_0x18eb('0x1c')](_0x21fed5);}};}function respondWithFilteredResult(_0x2d9172,_0x4f78c9){return function(_0x25cb35){if(_0x25cb35){var _0x5b05fb=typeof _0x4f78c9[_0x18eb('0x1d')]===_0x18eb('0x1e')&&typeof _0x4f78c9['limit']==='undefined';var _0x8a0e1e=_0x25cb35['count'];var _0x3bfd5c=_0x5b05fb?0x0:_0x4f78c9[_0x18eb('0x1d')];var _0x177a85=_0x5b05fb?_0x25cb35[_0x18eb('0x1f')]:_0x4f78c9[_0x18eb('0x1d')]+_0x4f78c9['limit'];var _0x420c3c;if(_0x177a85>=_0x8a0e1e){_0x177a85=_0x8a0e1e;_0x420c3c=0xc8;}else{_0x420c3c=0xce;}_0x2d9172[_0x18eb('0x1a')](_0x420c3c);return _0x2d9172[_0x18eb('0x20')](_0x18eb('0x21'),_0x3bfd5c+'-'+_0x177a85+'/'+_0x8a0e1e)[_0x18eb('0x1c')](_0x25cb35);}return null;};}function patchUpdates(_0xd063fd){return function(_0x42e4f4){try{jsonpatch[_0x18eb('0x22')](_0x42e4f4,_0xd063fd,!![]);}catch(_0x13f141){return BPromise['reject'](_0x13f141);}return _0x42e4f4[_0x18eb('0x23')]();};}function saveUpdates(_0x8bde85,_0x504f63){return function(_0x57626e){if(_0x57626e){return _0x57626e[_0x18eb('0x24')](_0x8bde85)[_0x18eb('0x25')](function(_0x1f5869){return _0x1f5869;});}return null;};}function removeEntity(_0x3adfd2,_0x8b41a){return function(_0x165a10){if(_0x165a10){return _0x165a10[_0x18eb('0x26')]()['then'](function(){_0x3adfd2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x24221d,_0x3c1d2f){return function(_0x1db90c){if(!_0x1db90c){_0x24221d[_0x18eb('0x19')](0x194);}return _0x1db90c;};}function handleError(_0x1dad1d,_0x27b4a5){_0x27b4a5=_0x27b4a5||0x1f4;return function(_0x338327){logger['error'](_0x338327[_0x18eb('0x27')]);if(_0x338327[_0x18eb('0x28')]){delete _0x338327['name'];}_0x1dad1d[_0x18eb('0x1a')](_0x27b4a5)['send'](_0x338327);};}exports[_0x18eb('0x29')]=function(_0x39b706,_0x5d0832){var _0x1472e2={},_0x358027={},_0x567ebf={'count':0x0,'rows':[]};var _0x299d47=_['map'](db[_0x18eb('0x2a')][_0x18eb('0x2b')],function(_0x4d2308){return{'name':_0x4d2308[_0x18eb('0x2c')],'type':_0x4d2308[_0x18eb('0x2d')][_0x18eb('0x2e')]};});_0x358027['model']=_[_0x18eb('0x2f')](_0x299d47,_0x18eb('0x28'));_0x358027[_0x18eb('0x30')]=_[_0x18eb('0x31')](_0x39b706[_0x18eb('0x30')]);_0x358027[_0x18eb('0x32')]=_[_0x18eb('0x33')](_0x358027[_0x18eb('0x34')],_0x358027[_0x18eb('0x30')]);_0x1472e2[_0x18eb('0x35')]=_['intersection'](_0x358027[_0x18eb('0x34')],qs[_0x18eb('0x36')](_0x39b706['query'][_0x18eb('0x36')]));_0x1472e2['attributes']=_0x1472e2[_0x18eb('0x35')][_0x18eb('0x37')]?_0x1472e2[_0x18eb('0x35')]:_0x358027['model'];if(!_0x39b706[_0x18eb('0x30')][_0x18eb('0x38')](_0x18eb('0x39'))){_0x1472e2['limit']=qs[_0x18eb('0x3a')](_0x39b706[_0x18eb('0x30')][_0x18eb('0x3a')]);_0x1472e2['offset']=qs[_0x18eb('0x1d')](_0x39b706[_0x18eb('0x30')][_0x18eb('0x1d')]);}_0x1472e2[_0x18eb('0x3b')]=qs[_0x18eb('0x3c')](_0x39b706[_0x18eb('0x30')][_0x18eb('0x3c')]);_0x1472e2['where']=qs[_0x18eb('0x32')](_[_0x18eb('0x3d')](_0x39b706['query'],_0x358027[_0x18eb('0x32')]),_0x299d47);if(_0x39b706['query'][_0x18eb('0x3e')]){_0x1472e2[_0x18eb('0x3f')]=_['merge'](_0x1472e2[_0x18eb('0x3f')],{'$or':_[_0x18eb('0x2f')](_0x299d47,function(_0x525892){if(_0x525892['type']!==_0x18eb('0x40')){var _0x1cd90f={};_0x1cd90f[_0x525892[_0x18eb('0x28')]]={'$like':'%'+_0x39b706['query'][_0x18eb('0x3e')]+'%'};return _0x1cd90f;}})});}_0x1472e2=_[_0x18eb('0x41')]({},_0x1472e2,_0x39b706[_0x18eb('0x42')]);var _0x1726a3={'where':_0x1472e2[_0x18eb('0x3f')]};return db[_0x18eb('0x2a')]['count'](_0x1726a3)[_0x18eb('0x25')](function(_0x197a17){_0x567ebf[_0x18eb('0x1f')]=_0x197a17;if(_0x39b706[_0x18eb('0x30')][_0x18eb('0x43')]){_0x1472e2[_0x18eb('0x44')]=[{'all':!![]}];}return db[_0x18eb('0x2a')][_0x18eb('0x45')](_0x1472e2);})[_0x18eb('0x25')](function(_0x2cefff){_0x567ebf[_0x18eb('0x46')]=_0x2cefff;return _0x567ebf;})['then'](respondWithFilteredResult(_0x5d0832,_0x1472e2))[_0x18eb('0x47')](handleError(_0x5d0832,null));};exports[_0x18eb('0x48')]=function(_0x9b3527,_0x1f78fd){var _0x4232e8={'raw':![],'where':{'id':_0x9b3527[_0x18eb('0x49')]['id']}},_0x118c4b={};_0x118c4b[_0x18eb('0x34')]=_[_0x18eb('0x31')](db[_0x18eb('0x2a')][_0x18eb('0x2b')]);_0x118c4b[_0x18eb('0x30')]=_[_0x18eb('0x31')](_0x9b3527[_0x18eb('0x30')]);_0x118c4b[_0x18eb('0x32')]=_[_0x18eb('0x33')](_0x118c4b[_0x18eb('0x34')],_0x118c4b[_0x18eb('0x30')]);_0x4232e8[_0x18eb('0x35')]=_['intersection'](_0x118c4b['model'],qs['fields'](_0x9b3527[_0x18eb('0x30')][_0x18eb('0x36')]));_0x4232e8[_0x18eb('0x35')]=_0x4232e8[_0x18eb('0x35')]['length']?_0x4232e8[_0x18eb('0x35')]:_0x118c4b[_0x18eb('0x34')];if(_0x9b3527['query'][_0x18eb('0x43')]){_0x4232e8['include']=[{'all':!![]}];}_0x4232e8=_[_0x18eb('0x41')]({},_0x4232e8,_0x9b3527[_0x18eb('0x42')]);return db[_0x18eb('0x2a')][_0x18eb('0x4a')](_0x4232e8)[_0x18eb('0x25')](handleEntityNotFound(_0x1f78fd,null))[_0x18eb('0x25')](respondWithResult(_0x1f78fd,null))[_0x18eb('0x47')](handleError(_0x1f78fd,null));};exports['create']=function(_0x593ad0,_0x1064b6){return db[_0x18eb('0x2a')][_0x18eb('0x4b')](_0x593ad0[_0x18eb('0x4c')],{})['then'](respondWithResult(_0x1064b6,0xc9))[_0x18eb('0x47')](handleError(_0x1064b6,null));};exports['bulkCreate']=function(_0x3e3ff1,_0x15de4c){return db[_0x18eb('0x2a')][_0x18eb('0x4d')](_0x3e3ff1[_0x18eb('0x4c')],{'raw':![],'individualHooks':!![]})[_0x18eb('0x25')](respondWithResult(_0x15de4c,0xc9))[_0x18eb('0x47')](handleError(_0x15de4c,null));};exports[_0x18eb('0x24')]=function(_0x4a593d,_0x11cca7){if(_0x4a593d[_0x18eb('0x4c')]['id']){delete _0x4a593d[_0x18eb('0x4c')]['id'];}return db[_0x18eb('0x2a')][_0x18eb('0x4a')]({'where':{'id':_0x4a593d['params']['id']}})['then'](handleEntityNotFound(_0x11cca7,null))['then'](saveUpdates(_0x4a593d[_0x18eb('0x4c')],null))[_0x18eb('0x25')](respondWithResult(_0x11cca7,null))['catch'](handleError(_0x11cca7,null));};exports['destroy']=function(_0x385b87,_0x3621fc){return db[_0x18eb('0x2a')][_0x18eb('0x4a')]({'where':{'id':_0x385b87[_0x18eb('0x49')]['id']}})['then'](handleEntityNotFound(_0x3621fc,null))['then'](removeEntity(_0x3621fc,null))[_0x18eb('0x47')](handleError(_0x3621fc,null));};exports[_0x18eb('0x4e')]=function(_0x2409cb,_0x4dd28a){return db['AnalyticFieldReport'][_0x18eb('0x26')]({'where':{'id':_0x2409cb[_0x18eb('0x30')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0x18eb('0x25')](respondWithResult(_0x4dd28a,0xcc))[_0x18eb('0x47')](handleError(_0x4dd28a,null));};exports[_0x18eb('0x4f')]=function(_0x484439,_0x33bcbd,_0xe38f28){return db[_0x18eb('0x50')][_0x18eb('0x51')]({'where':{'id':_0x484439[_0x18eb('0x49')]['id']}})[_0x18eb('0x25')](handleEntityNotFound(_0x33bcbd,null))['then'](function(_0x40a3a4){if(_0x40a3a4){return db[_0x18eb('0x52')][_0x18eb('0x53')](function(_0x22295f){return db[_0x18eb('0x2a')][_0x18eb('0x26')]({'where':{'CustomReportId':_0x484439['params']['id']},'transaction':_0x22295f})['then'](function(_0x3a53c4){var _0x212d3b=_[_0x18eb('0x2f')](_0x484439[_0x18eb('0x4c')],function(_0x2414a3){delete _0x2414a3['id'];_0x2414a3[_0x18eb('0x54')]=_0x484439[_0x18eb('0x49')]['id'];return _0x2414a3;});return db['AnalyticFieldReport'][_0x18eb('0x4d')](_0x212d3b,{'transaction':_0x22295f});});})[_0x18eb('0x25')](function(){return db[_0x18eb('0x2a')][_0x18eb('0x45')]({'where':{'CustomReportId':_0x484439[_0x18eb('0x49')]['id']}});});}})[_0x18eb('0x25')](respondWithResult(_0x33bcbd,null))[_0x18eb('0x47')](handleError(_0x33bcbd,null));};
\ No newline at end of file
+var _0xc069=['fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','rows','catch','params','rawAttributes','length','create','body','bulkCreate','find','bulkDestroy','ids','addFields','sequelize','transaction','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','AnalyticFieldReport','fieldName','type','key','model','query','keys','filters','attributes','intersection'];(function(_0x25920f,_0x166d6f){var _0x43f638=function(_0x2c9038){while(--_0x2c9038){_0x25920f['push'](_0x25920f['shift']());}};_0x43f638(++_0x166d6f);}(_0xc069,0xbb));var _0x9c06=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc069[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x9c06('0x0'));var rimraf=require(_0x9c06('0x1'));var zipdir=require(_0x9c06('0x2'));var jsonpatch=require(_0x9c06('0x3'));var rp=require(_0x9c06('0x4'));var moment=require(_0x9c06('0x5'));var BPromise=require(_0x9c06('0x6'));var Mustache=require(_0x9c06('0x7'));var util=require('util');var path=require(_0x9c06('0x8'));var sox=require(_0x9c06('0x9'));var csv=require(_0x9c06('0xa'));var ejs=require(_0x9c06('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9c06('0xc'));var crypto=require(_0x9c06('0xd'));var jsforce=require(_0x9c06('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9c06('0xa'));var querystring=require(_0x9c06('0xf'));var Papa=require('papaparse');var Redis=require(_0x9c06('0x10'));var authService=require(_0x9c06('0x11'));var qs=require(_0x9c06('0x12'));var as=require(_0x9c06('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c06('0x14'))(_0x9c06('0x15'));var utils=require(_0x9c06('0x16'));var config=require(_0x9c06('0x17'));var licenseUtil=require(_0x9c06('0x18'));var db=require(_0x9c06('0x19'))['db'];function respondWithStatusCode(_0x1e8887,_0x27f13a){_0x27f13a=_0x27f13a||0xcc;return function(_0x4671f3){if(_0x4671f3){return _0x1e8887[_0x9c06('0x1a')](_0x27f13a);}return _0x1e8887[_0x9c06('0x1b')](_0x27f13a)[_0x9c06('0x1c')]();};}function respondWithResult(_0x241b70,_0xb7d6f4){_0xb7d6f4=_0xb7d6f4||0xc8;return function(_0x61d566){if(_0x61d566){return _0x241b70[_0x9c06('0x1b')](_0xb7d6f4)['json'](_0x61d566);}};}function respondWithFilteredResult(_0x151c39,_0x447805){return function(_0x4574da){if(_0x4574da){var _0xe296bf=typeof _0x447805[_0x9c06('0x1d')]===_0x9c06('0x1e')&&typeof _0x447805['limit']===_0x9c06('0x1e');var _0x4f119b=_0x4574da['count'];var _0x21a27d=_0xe296bf?0x0:_0x447805[_0x9c06('0x1d')];var _0x1cb85d=_0xe296bf?_0x4574da[_0x9c06('0x1f')]:_0x447805[_0x9c06('0x1d')]+_0x447805[_0x9c06('0x20')];var _0x1dac86;if(_0x1cb85d>=_0x4f119b){_0x1cb85d=_0x4f119b;_0x1dac86=0xc8;}else{_0x1dac86=0xce;}_0x151c39[_0x9c06('0x1b')](_0x1dac86);return _0x151c39[_0x9c06('0x21')]('Content-Range',_0x21a27d+'-'+_0x1cb85d+'/'+_0x4f119b)['json'](_0x4574da);}return null;};}function patchUpdates(_0x2a455c){return function(_0x2fec88){try{jsonpatch[_0x9c06('0x22')](_0x2fec88,_0x2a455c,!![]);}catch(_0x29b1b2){return BPromise[_0x9c06('0x23')](_0x29b1b2);}return _0x2fec88[_0x9c06('0x24')]();};}function saveUpdates(_0x2418f2,_0x1982f6){return function(_0x4c5298){if(_0x4c5298){return _0x4c5298[_0x9c06('0x25')](_0x2418f2)[_0x9c06('0x26')](function(_0x4dd220){return _0x4dd220;});}return null;};}function removeEntity(_0x344ea3,_0x1d2059){return function(_0x367041){if(_0x367041){return _0x367041[_0x9c06('0x27')]()[_0x9c06('0x26')](function(){_0x344ea3[_0x9c06('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x202934,_0x445321){return function(_0x5e4133){if(!_0x5e4133){_0x202934[_0x9c06('0x1a')](0x194);}return _0x5e4133;};}function handleError(_0x53342d,_0x289aa5){_0x289aa5=_0x289aa5||0x1f4;return function(_0x29eb9e){logger[_0x9c06('0x28')](_0x29eb9e[_0x9c06('0x29')]);if(_0x29eb9e[_0x9c06('0x2a')]){delete _0x29eb9e[_0x9c06('0x2a')];}_0x53342d['status'](_0x289aa5)[_0x9c06('0x2b')](_0x29eb9e);};}exports[_0x9c06('0x2c')]=function(_0x49803b,_0xfc83d4){var _0x3cb3e3={},_0x590ad3={},_0x4bf9c6={'count':0x0,'rows':[]};var _0x2ebc0f=_[_0x9c06('0x2d')](db[_0x9c06('0x2e')]['rawAttributes'],function(_0x18b428){return{'name':_0x18b428[_0x9c06('0x2f')],'type':_0x18b428[_0x9c06('0x30')][_0x9c06('0x31')]};});_0x590ad3[_0x9c06('0x32')]=_[_0x9c06('0x2d')](_0x2ebc0f,_0x9c06('0x2a'));_0x590ad3[_0x9c06('0x33')]=_[_0x9c06('0x34')](_0x49803b[_0x9c06('0x33')]);_0x590ad3[_0x9c06('0x35')]=_['intersection'](_0x590ad3[_0x9c06('0x32')],_0x590ad3['query']);_0x3cb3e3[_0x9c06('0x36')]=_[_0x9c06('0x37')](_0x590ad3[_0x9c06('0x32')],qs['fields'](_0x49803b[_0x9c06('0x33')][_0x9c06('0x38')]));_0x3cb3e3['attributes']=_0x3cb3e3[_0x9c06('0x36')]['length']?_0x3cb3e3[_0x9c06('0x36')]:_0x590ad3[_0x9c06('0x32')];if(!_0x49803b[_0x9c06('0x33')][_0x9c06('0x39')](_0x9c06('0x3a'))){_0x3cb3e3[_0x9c06('0x20')]=qs[_0x9c06('0x20')](_0x49803b[_0x9c06('0x33')][_0x9c06('0x20')]);_0x3cb3e3[_0x9c06('0x1d')]=qs[_0x9c06('0x1d')](_0x49803b[_0x9c06('0x33')][_0x9c06('0x1d')]);}_0x3cb3e3['order']=qs[_0x9c06('0x3b')](_0x49803b[_0x9c06('0x33')][_0x9c06('0x3b')]);_0x3cb3e3[_0x9c06('0x3c')]=qs[_0x9c06('0x35')](_['pick'](_0x49803b[_0x9c06('0x33')],_0x590ad3[_0x9c06('0x35')]),_0x2ebc0f);if(_0x49803b['query'][_0x9c06('0x3d')]){_0x3cb3e3['where']=_['merge'](_0x3cb3e3[_0x9c06('0x3c')],{'$or':_[_0x9c06('0x2d')](_0x2ebc0f,function(_0x4c9a7a){if(_0x4c9a7a[_0x9c06('0x30')]!=='VIRTUAL'){var _0x18037b={};_0x18037b[_0x4c9a7a[_0x9c06('0x2a')]]={'$like':'%'+_0x49803b[_0x9c06('0x33')][_0x9c06('0x3d')]+'%'};return _0x18037b;}})});}_0x3cb3e3=_[_0x9c06('0x3e')]({},_0x3cb3e3,_0x49803b[_0x9c06('0x3f')]);var _0x3436b4={'where':_0x3cb3e3[_0x9c06('0x3c')]};return db['AnalyticFieldReport'][_0x9c06('0x1f')](_0x3436b4)['then'](function(_0x140321){_0x4bf9c6[_0x9c06('0x1f')]=_0x140321;if(_0x49803b[_0x9c06('0x33')][_0x9c06('0x40')]){_0x3cb3e3[_0x9c06('0x41')]=[{'all':!![]}];}return db[_0x9c06('0x2e')]['findAll'](_0x3cb3e3);})['then'](function(_0x13055d){_0x4bf9c6[_0x9c06('0x42')]=_0x13055d;return _0x4bf9c6;})['then'](respondWithFilteredResult(_0xfc83d4,_0x3cb3e3))[_0x9c06('0x43')](handleError(_0xfc83d4,null));};exports['show']=function(_0xb1a9be,_0xf849ea){var _0x5a0258={'raw':![],'where':{'id':_0xb1a9be[_0x9c06('0x44')]['id']}},_0x417761={};_0x417761[_0x9c06('0x32')]=_[_0x9c06('0x34')](db[_0x9c06('0x2e')][_0x9c06('0x45')]);_0x417761[_0x9c06('0x33')]=_[_0x9c06('0x34')](_0xb1a9be[_0x9c06('0x33')]);_0x417761[_0x9c06('0x35')]=_[_0x9c06('0x37')](_0x417761[_0x9c06('0x32')],_0x417761[_0x9c06('0x33')]);_0x5a0258[_0x9c06('0x36')]=_[_0x9c06('0x37')](_0x417761[_0x9c06('0x32')],qs[_0x9c06('0x38')](_0xb1a9be[_0x9c06('0x33')][_0x9c06('0x38')]));_0x5a0258[_0x9c06('0x36')]=_0x5a0258[_0x9c06('0x36')][_0x9c06('0x46')]?_0x5a0258[_0x9c06('0x36')]:_0x417761['model'];if(_0xb1a9be[_0x9c06('0x33')][_0x9c06('0x40')]){_0x5a0258[_0x9c06('0x41')]=[{'all':!![]}];}_0x5a0258=_[_0x9c06('0x3e')]({},_0x5a0258,_0xb1a9be[_0x9c06('0x3f')]);return db[_0x9c06('0x2e')]['find'](_0x5a0258)[_0x9c06('0x26')](handleEntityNotFound(_0xf849ea,null))['then'](respondWithResult(_0xf849ea,null))[_0x9c06('0x43')](handleError(_0xf849ea,null));};exports[_0x9c06('0x47')]=function(_0x527ad5,_0x26f1fd){return db[_0x9c06('0x2e')][_0x9c06('0x47')](_0x527ad5[_0x9c06('0x48')],{})[_0x9c06('0x26')](respondWithResult(_0x26f1fd,0xc9))[_0x9c06('0x43')](handleError(_0x26f1fd,null));};exports[_0x9c06('0x49')]=function(_0x1d2326,_0x1f9e1d){return db[_0x9c06('0x2e')][_0x9c06('0x49')](_0x1d2326[_0x9c06('0x48')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1f9e1d,0xc9))['catch'](handleError(_0x1f9e1d,null));};exports['update']=function(_0x24dc24,_0xf2923f){if(_0x24dc24[_0x9c06('0x48')]['id']){delete _0x24dc24[_0x9c06('0x48')]['id'];}return db[_0x9c06('0x2e')]['find']({'where':{'id':_0x24dc24[_0x9c06('0x44')]['id']}})['then'](handleEntityNotFound(_0xf2923f,null))['then'](saveUpdates(_0x24dc24[_0x9c06('0x48')],null))['then'](respondWithResult(_0xf2923f,null))['catch'](handleError(_0xf2923f,null));};exports[_0x9c06('0x27')]=function(_0xbb6fd2,_0x3711d5){return db[_0x9c06('0x2e')][_0x9c06('0x4a')]({'where':{'id':_0xbb6fd2['params']['id']}})['then'](handleEntityNotFound(_0x3711d5,null))[_0x9c06('0x26')](removeEntity(_0x3711d5,null))['catch'](handleError(_0x3711d5,null));};exports[_0x9c06('0x4b')]=function(_0x23acee,_0x5ce7c5){return db[_0x9c06('0x2e')][_0x9c06('0x27')]({'where':{'id':_0x23acee[_0x9c06('0x33')][_0x9c06('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0x9c06('0x26')](respondWithResult(_0x5ce7c5,0xcc))[_0x9c06('0x43')](handleError(_0x5ce7c5,null));};exports[_0x9c06('0x4d')]=function(_0x159092,_0x5563d6,_0x3efe92){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x159092[_0x9c06('0x44')]['id']}})['then'](handleEntityNotFound(_0x5563d6,null))[_0x9c06('0x26')](function(_0x5d6510){if(_0x5d6510){return db[_0x9c06('0x4e')][_0x9c06('0x4f')](function(_0x13f9ce){return db['AnalyticFieldReport']['destroy']({'where':{'CustomReportId':_0x159092[_0x9c06('0x44')]['id']},'transaction':_0x13f9ce})[_0x9c06('0x26')](function(_0x3ae29b){var _0x1f5d52=_[_0x9c06('0x2d')](_0x159092[_0x9c06('0x48')],function(_0x8bd013){delete _0x8bd013['id'];_0x8bd013['CustomReportId']=_0x159092[_0x9c06('0x44')]['id'];return _0x8bd013;});return db['AnalyticFieldReport'][_0x9c06('0x49')](_0x1f5d52,{'transaction':_0x13f9ce});});})[_0x9c06('0x26')](function(){return db[_0x9c06('0x2e')][_0x9c06('0x50')]({'where':{'CustomReportId':_0x159092['params']['id']}});});}})[_0x9c06('0x26')](respondWithResult(_0x5563d6,null))[_0x9c06('0x43')](handleError(_0x5563d6,null));};
\ No newline at end of file
index 37836e1..c70458f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f7=['rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x63c794,_0x14f52c){var _0x16f319=function(_0x149940){while(--_0x149940){_0x63c794['push'](_0x63c794['shift']());}};_0x16f319(++_0x14f52c);}(_0xe4f7,0x17f));var _0x7e4f=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe4f7[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x7e4f('0x0'));var util=require(_0x7e4f('0x1'));var logger=require('../../config/logger')(_0x7e4f('0x2'));var moment=require(_0x7e4f('0x3'));var BPromise=require(_0x7e4f('0x4'));var rp=require(_0x7e4f('0x5'));var fs=require('fs');var path=require(_0x7e4f('0x6'));var rimraf=require(_0x7e4f('0x7'));var config=require(_0x7e4f('0x8'));var attributes=require(_0x7e4f('0x9'));module['exports']=function(_0x5d7379,_0x54f101){return _0x5d7379[_0x7e4f('0xa')](_0x7e4f('0xb'),attributes,{'tableName':_0x7e4f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x36ee=['path','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','define','analytics_report_fields','lodash','util','api','moment','request-promise'];(function(_0x285159,_0x4c0c7a){var _0x3200e5=function(_0x7c0b1d){while(--_0x7c0b1d){_0x285159['push'](_0x285159['shift']());}};_0x3200e5(++_0x4c0c7a);}(_0x36ee,0xbb));var _0xe36e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x36ee[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xe36e('0x0'));var util=require(_0xe36e('0x1'));var logger=require('../../config/logger')(_0xe36e('0x2'));var moment=require(_0xe36e('0x3'));var BPromise=require('bluebird');var rp=require(_0xe36e('0x4'));var fs=require('fs');var path=require(_0xe36e('0x5'));var rimraf=require(_0xe36e('0x6'));var config=require(_0xe36e('0x7'));var attributes=require(_0xe36e('0x8'));module[_0xe36e('0x9')]=function(_0x2624d7,_0x370aee){return _0x2624d7[_0xe36e('0xa')]('AnalyticFieldReport',attributes,{'tableName':_0xe36e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5617485..f77ab05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9079=['rpc','../../config/environment','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','result','lodash','moment','bluebird','../../config/logger'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x9079,0xd8));var _0x9907=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9079[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9907('0x0'));var util=require('util');var moment=require(_0x9907('0x1'));var BPromise=require(_0x9907('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(_0x9907('0x3'))(_0x9907('0x4'));var config=require(_0x9907('0x5'));var jayson=require(_0x9907('0x6'));var client=jayson['client'][_0x9907('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2013b6,_0x270c1f,_0x1d92bc){return new BPromise(function(_0xcfd863,_0x4e5120){return client[_0x9907('0x8')](_0x2013b6,_0x1d92bc)[_0x9907('0x9')](function(_0x4c0387){logger[_0x9907('0xa')](_0x9907('0xb'),_0x270c1f,_0x9907('0xc'));logger[_0x9907('0xd')](_0x9907('0xe'),_0x270c1f,_0x9907('0xc'),JSON[_0x9907('0xf')](_0x4c0387));if(_0x4c0387['error']){if(_0x4c0387[_0x9907('0x10')][_0x9907('0x11')]===0x1f4){logger['error'](_0x9907('0xb'),_0x270c1f,_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);return _0x4e5120(_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);}logger[_0x9907('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x270c1f,_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);return _0xcfd863(_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);}else{logger[_0x9907('0xa')](_0x9907('0xb'),_0x270c1f,_0x9907('0xc'));_0xcfd863(_0x4c0387[_0x9907('0x13')][_0x9907('0x12')]);}})['catch'](function(_0x4b9ff7){logger[_0x9907('0x10')](_0x9907('0xb'),_0x270c1f,_0x4b9ff7);_0x4e5120(_0x4b9ff7);});});}
\ No newline at end of file
+var _0x6aab=['../../config/utils','jayson/promise','client','http','then','info','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','catch','moment','bluebird','randomstring'];(function(_0x18e948,_0x4e1f8e){var _0x1545e7=function(_0x2bd032){while(--_0x2bd032){_0x18e948['push'](_0x18e948['shift']());}};_0x1545e7(++_0x4e1f8e);}(_0x6aab,0x1ea));var _0xb6aa=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0x6aab[_0x4a747d];return _0x3a5b5c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb6aa('0x0'));var BPromise=require(_0xb6aa('0x1'));var rs=require(_0xb6aa('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb6aa('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb6aa('0x4'));var client=jayson[_0xb6aa('0x5')][_0xb6aa('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x481e1f,_0x28f40c,_0x3d37b5){return new BPromise(function(_0xbaad0f,_0x5a4024){return client['request'](_0x481e1f,_0x3d37b5)[_0xb6aa('0x7')](function(_0x10322c){logger[_0xb6aa('0x8')]('AnalyticFieldReport,\x20%s,\x20%s',_0x28f40c,_0xb6aa('0x9'));logger['debug'](_0xb6aa('0xa'),_0x28f40c,_0xb6aa('0x9'),JSON[_0xb6aa('0xb')](_0x10322c));if(_0x10322c[_0xb6aa('0xc')]){if(_0x10322c['error'][_0xb6aa('0xd')]===0x1f4){logger[_0xb6aa('0xc')](_0xb6aa('0xe'),_0x28f40c,_0x10322c[_0xb6aa('0xc')][_0xb6aa('0xf')]);return _0x5a4024(_0x10322c['error']['message']);}logger[_0xb6aa('0xc')](_0xb6aa('0xe'),_0x28f40c,_0x10322c[_0xb6aa('0xc')]['message']);return _0xbaad0f(_0x10322c[_0xb6aa('0xc')][_0xb6aa('0xf')]);}else{logger[_0xb6aa('0x8')](_0xb6aa('0xe'),_0x28f40c,'request\x20sent');_0xbaad0f(_0x10322c['result']['message']);}})[_0xb6aa('0x10')](function(_0xa27d6d){logger[_0xb6aa('0xc')](_0xb6aa('0xe'),_0x28f40c,_0xa27d6d);_0x5a4024(_0xa27d6d);});});}
\ No newline at end of file
index cddb7e5..f4ea562 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(_0x555b57,_0x1f1a30){var _0x3629d6=function(_0x33300e){while(--_0x33300e){_0x555b57['push'](_0x555b57['shift']());}};_0x3629d6(++_0x1f1a30);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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(_0x3b681e,_0x140f86){var _0x3d70f1=function(_0x405399){while(--_0x405399){_0x3b681e['push'](_0x3b681e['shift']());}};_0x3d70f1(++_0x140f86);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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 c6b1404..37b2d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbde=['TEXT','sequelize','STRING','name'];(function(_0x19babd,_0x1d4ef7){var _0x314eaf=function(_0x24ea35){while(--_0x24ea35){_0x19babd['push'](_0x19babd['shift']());}};_0x314eaf(++_0x1d4ef7);}(_0xcbde,0x141));var _0xecbd=function(_0x464299,_0x52e05d){_0x464299=_0x464299-0x0;var _0x4d5db5=_0xcbde[_0x464299];return _0x4d5db5;};'use strict';var Sequelize=require(_0xecbd('0x0'));module['exports']={'name':{'type':Sequelize[_0xecbd('0x1')],'allowNull':![],'unique':_0xecbd('0x2')},'table':{'type':Sequelize[_0xecbd('0x1')]},'metric':{'type':Sequelize[_0xecbd('0x3')]},'description':{'type':Sequelize[_0xecbd('0x1')]}};
\ No newline at end of file
+var _0x82b0=['TEXT','sequelize','exports','STRING'];(function(_0x1895b7,_0x21fbc7){var _0x1aecdc=function(_0x44682a){while(--_0x44682a){_0x1895b7['push'](_0x1895b7['shift']());}};_0x1aecdc(++_0x21fbc7);}(_0x82b0,0x81));var _0x082b=function(_0x14525d,_0x747b83){_0x14525d=_0x14525d-0x0;var _0x26b05c=_0x82b0[_0x14525d];return _0x26b05c;};'use strict';var Sequelize=require(_0x082b('0x0'));module[_0x082b('0x1')]={'name':{'type':Sequelize[_0x082b('0x2')],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0x082b('0x2')]},'metric':{'type':Sequelize[_0x082b('0x3')]},'description':{'type':Sequelize[_0x082b('0x2')]}};
\ No newline at end of file
index 83068d1..afc5a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x4e7fc1,_0x100df3){var _0x5db4a4=function(_0x229dde){while(--_0x229dde){_0x4e7fc1['push'](_0x4e7fc1['shift']());}};_0x5db4a4(++_0x100df3);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x4d9991,_0x32a539){_0x4d9991=_0x4d9991-0x0;var _0x555cd3=_0x9c5a[_0x4d9991];return _0x555cd3;};'use strict';var emlformat=require(_0xa9c5('0x0'));var rimraf=require(_0xa9c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9c5('0x2'));var rp=require(_0xa9c5('0x3'));var moment=require(_0xa9c5('0x4'));var BPromise=require(_0xa9c5('0x5'));var Mustache=require('mustache');var util=require(_0xa9c5('0x6'));var path=require(_0xa9c5('0x7'));var sox=require('sox');var csv=require(_0xa9c5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9c5('0x9'));var _=require(_0xa9c5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9c5('0xb'));var deskjs=require(_0xa9c5('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa9c5('0xd'));var Papa=require(_0xa9c5('0xe'));var Redis=require('ioredis');var authService=require(_0xa9c5('0xf'));var qs=require(_0xa9c5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9c5('0x11'))(_0xa9c5('0x12'));var utils=require(_0xa9c5('0x13'));var config=require(_0xa9c5('0x14'));var licenseUtil=require(_0xa9c5('0x15'));var db=require(_0xa9c5('0x16'))['db'];function respondWithStatusCode(_0x51c8d,_0x42d5cf){_0x42d5cf=_0x42d5cf||0xcc;return function(_0x3c5ac7){if(_0x3c5ac7){return _0x51c8d[_0xa9c5('0x17')](_0x42d5cf);}return _0x51c8d['status'](_0x42d5cf)[_0xa9c5('0x18')]();};}function respondWithResult(_0x1276d2,_0x7df76d){_0x7df76d=_0x7df76d||0xc8;return function(_0x3806c4){if(_0x3806c4){return _0x1276d2[_0xa9c5('0x19')](_0x7df76d)[_0xa9c5('0x1a')](_0x3806c4);}};}function respondWithFilteredResult(_0x251099,_0x40b001){return function(_0x19a43e){if(_0x19a43e){var _0xcf13f2=typeof _0x40b001['offset']===_0xa9c5('0x1b')&&typeof _0x40b001[_0xa9c5('0x1c')]===_0xa9c5('0x1b');var _0x55cce5=_0x19a43e[_0xa9c5('0x1d')];var _0x1142d9=_0xcf13f2?0x0:_0x40b001[_0xa9c5('0x1e')];var _0x3b8cf7=_0xcf13f2?_0x19a43e[_0xa9c5('0x1d')]:_0x40b001[_0xa9c5('0x1e')]+_0x40b001[_0xa9c5('0x1c')];var _0x1e5ce6;if(_0x3b8cf7>=_0x55cce5){_0x3b8cf7=_0x55cce5;_0x1e5ce6=0xc8;}else{_0x1e5ce6=0xce;}_0x251099[_0xa9c5('0x19')](_0x1e5ce6);return _0x251099[_0xa9c5('0x1f')](_0xa9c5('0x20'),_0x1142d9+'-'+_0x3b8cf7+'/'+_0x55cce5)[_0xa9c5('0x1a')](_0x19a43e);}return null;};}function patchUpdates(_0x54f8b9){return function(_0x1115ad){try{jsonpatch[_0xa9c5('0x21')](_0x1115ad,_0x54f8b9,!![]);}catch(_0x541c77){return BPromise['reject'](_0x541c77);}return _0x1115ad[_0xa9c5('0x22')]();};}function saveUpdates(_0x366f5c,_0x10b208){return function(_0x3b497a){if(_0x3b497a){return _0x3b497a[_0xa9c5('0x23')](_0x366f5c)[_0xa9c5('0x24')](function(_0x48e2cb){return _0x48e2cb;});}return null;};}function removeEntity(_0x4fa280,_0x3d4e1b){return function(_0x11d395){if(_0x11d395){return _0x11d395['destroy']()[_0xa9c5('0x24')](function(){var _0x424b4c=_0x11d395[_0xa9c5('0x25')]({'plain':!![]});var _0x32fc7d=_0xa9c5('0x26');return db[_0xa9c5('0x27')][_0xa9c5('0x28')]({'where':{'type':_0x32fc7d,'resourceId':_0x424b4c['id']}})['then'](function(){return _0x11d395;});})['then'](function(){_0x4fa280[_0xa9c5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1762ac,_0x830bad){return function(_0x4caefa){if(!_0x4caefa){_0x1762ac[_0xa9c5('0x17')](0x194);}return _0x4caefa;};}function handleError(_0x320dc0,_0x5f468b){_0x5f468b=_0x5f468b||0x1f4;return function(_0x413edf){logger[_0xa9c5('0x29')](_0x413edf[_0xa9c5('0x2a')]);if(_0x413edf[_0xa9c5('0x2b')]){delete _0x413edf[_0xa9c5('0x2b')];}_0x320dc0['status'](_0x5f468b)[_0xa9c5('0x2c')](_0x413edf);};}exports['index']=function(_0x3c3da7,_0x1ef388){var _0x2eeed1={},_0x541475={},_0xc6d0c1={'count':0x0,'rows':[]};var _0xbe29c5=_['map'](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')],function(_0x431e07){return{'name':_0x431e07[_0xa9c5('0x2f')],'type':_0x431e07[_0xa9c5('0x30')][_0xa9c5('0x31')]};});_0x541475[_0xa9c5('0x32')]=_['map'](_0xbe29c5,_0xa9c5('0x2b'));_0x541475[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0x3c3da7[_0xa9c5('0x33')]);_0x541475[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0x541475[_0xa9c5('0x32')],_0x541475[_0xa9c5('0x33')]);_0x2eeed1['attributes']=_['intersection'](_0x541475[_0xa9c5('0x32')],qs[_0xa9c5('0x37')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x2eeed1[_0xa9c5('0x38')]=_0x2eeed1[_0xa9c5('0x38')]['length']?_0x2eeed1['attributes']:_0x541475['model'];if(!_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x39')]('nolimit')){_0x2eeed1[_0xa9c5('0x1c')]=qs['limit'](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x1c')]);_0x2eeed1[_0xa9c5('0x1e')]=qs[_0xa9c5('0x1e')](_0x3c3da7['query'][_0xa9c5('0x1e')]);}_0x2eeed1[_0xa9c5('0x3a')]=qs[_0xa9c5('0x3b')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3b')]);_0x2eeed1[_0xa9c5('0x3c')]=qs[_0xa9c5('0x35')](_[_0xa9c5('0x3d')](_0x3c3da7['query'],_0x541475[_0xa9c5('0x35')]),_0xbe29c5);if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]){_0x2eeed1[_0xa9c5('0x3c')]=_[_0xa9c5('0x3f')](_0x2eeed1[_0xa9c5('0x3c')],{'$or':_['map'](_0xbe29c5,function(_0x307736){if(_0x307736['type']!==_0xa9c5('0x40')){var _0x5c89e7={};_0x5c89e7[_0x307736[_0xa9c5('0x2b')]]={'$like':'%'+_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]+'%'};return _0x5c89e7;}})});}_0x2eeed1=_['merge']({},_0x2eeed1,_0x3c3da7[_0xa9c5('0x41')]);var _0x1ddd72={'where':_0x2eeed1[_0xa9c5('0x3c')]};return db[_0xa9c5('0x2d')]['count'](_0x1ddd72)[_0xa9c5('0x24')](function(_0x97803f){_0xc6d0c1[_0xa9c5('0x1d')]=_0x97803f;if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x2eeed1['include']=[{'all':!![]}];}return db[_0xa9c5('0x2d')]['findAll'](_0x2eeed1);})[_0xa9c5('0x24')](function(_0x397614){_0xc6d0c1[_0xa9c5('0x43')]=_0x397614;return _0xc6d0c1;})[_0xa9c5('0x24')](respondWithFilteredResult(_0x1ef388,_0x2eeed1))[_0xa9c5('0x44')](handleError(_0x1ef388,null));};exports[_0xa9c5('0x45')]=function(_0xf35cb3,_0x3e8633){var _0x1f895a={'raw':!![],'where':{'id':_0xf35cb3['params']['id']}},_0xc28b1a={};_0xc28b1a[_0xa9c5('0x32')]=_[_0xa9c5('0x34')](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')]);_0xc28b1a[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0xf35cb3['query']);_0xc28b1a[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0xc28b1a['model'],_0xc28b1a['query']);_0x1f895a['attributes']=_['intersection'](_0xc28b1a['model'],qs[_0xa9c5('0x37')](_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x1f895a[_0xa9c5('0x38')]=_0x1f895a[_0xa9c5('0x38')][_0xa9c5('0x46')]?_0x1f895a[_0xa9c5('0x38')]:_0xc28b1a[_0xa9c5('0x32')];if(_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x1f895a[_0xa9c5('0x47')]=[{'all':!![]}];}_0x1f895a=_[_0xa9c5('0x3f')]({},_0x1f895a,_0xf35cb3[_0xa9c5('0x41')]);return db['AnalyticMetric'][_0xa9c5('0x48')](_0x1f895a)['then'](handleEntityNotFound(_0x3e8633,null))[_0xa9c5('0x24')](respondWithResult(_0x3e8633,null))[_0xa9c5('0x44')](handleError(_0x3e8633,null));};exports['create']=function(_0x5cbd33,_0xf00970){return db[_0xa9c5('0x2d')][_0xa9c5('0x49')](_0x5cbd33['body'],{})['then'](function(_0x2333c4){var _0xd03cec=_0x5cbd33['user'][_0xa9c5('0x25')]({'plain':!![]});if(!_0xd03cec)throw new Error(_0xa9c5('0x4a'));if(_0xd03cec[_0xa9c5('0x4b')]===_0xa9c5('0x4c')){var _0x34020f=_0x2333c4[_0xa9c5('0x25')]({'plain':!![]});var _0x4b6fc9='Metrics';return db['UserProfileSection'][_0xa9c5('0x48')]({'where':{'name':_0x4b6fc9,'userProfileId':_0xd03cec[_0xa9c5('0x4d')]},'raw':!![]})[_0xa9c5('0x24')](function(_0xef4d2){if(_0xef4d2&&_0xef4d2[_0xa9c5('0x4e')]===0x0){return db[_0xa9c5('0x27')]['create']({'name':_0x34020f[_0xa9c5('0x2b')],'resourceId':_0x34020f['id'],'type':_0xef4d2[_0xa9c5('0x2b')],'sectionId':_0xef4d2['id']},{})[_0xa9c5('0x24')](function(){return _0x2333c4;});}else{return _0x2333c4;}})[_0xa9c5('0x44')](function(_0xa0b458){logger[_0xa9c5('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa0b458);throw _0xa0b458;});}return _0x2333c4;})['then'](respondWithResult(_0xf00970,0xc9))[_0xa9c5('0x44')](handleError(_0xf00970,null));};exports['update']=function(_0x1b158f,_0x5ea9b0){if(_0x1b158f[_0xa9c5('0x4f')]['id']){delete _0x1b158f[_0xa9c5('0x4f')]['id'];}return db[_0xa9c5('0x2d')]['find']({'where':{'id':_0x1b158f[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x5ea9b0,null))[_0xa9c5('0x24')](saveUpdates(_0x1b158f[_0xa9c5('0x4f')],null))['then'](respondWithResult(_0x5ea9b0,null))['catch'](handleError(_0x5ea9b0,null));};exports[_0xa9c5('0x28')]=function(_0x2b66ee,_0x3205f2){return db['AnalyticMetric'][_0xa9c5('0x48')]({'where':{'id':_0x2b66ee[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x3205f2,null))[_0xa9c5('0x24')](removeEntity(_0x3205f2,null))[_0xa9c5('0x44')](handleError(_0x3205f2,null));};
\ No newline at end of file
+var _0x3e74=['status','set','Content-Range','apply','save','update','then','destroy','get','Metrics','sendStatus','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','params','rawAttributes','length','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count'];(function(_0xa4040,_0x32119b){var _0x405c12=function(_0x4fb46a){while(--_0x4fb46a){_0xa4040['push'](_0xa4040['shift']());}};_0x405c12(++_0x32119b);}(_0x3e74,0x175));var _0x43e7=function(_0x3afef5,_0x381875){_0x3afef5=_0x3afef5-0x0;var _0x4329c5=_0x3e74[_0x3afef5];return _0x4329c5;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){var _0x4b2b9f=_0x4c9df3[_0x43e7('0x23')]({'plain':!![]});var _0x4ca5cf=_0x43e7('0x24');return db['UserProfileResource'][_0x43e7('0x22')]({'where':{'type':_0x4ca5cf,'resourceId':_0x4b2b9f['id']}})[_0x43e7('0x21')](function(){return _0x4c9df3;});})[_0x43e7('0x21')](function(){_0x454359[_0x43e7('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b7b3,_0x805b54){return function(_0x501551){if(!_0x501551){_0x52b7b3[_0x43e7('0x25')](0x194);}return _0x501551;};}function handleError(_0x40dc8f,_0x3565cf){_0x3565cf=_0x3565cf||0x1f4;return function(_0xb1fc63){logger['error'](_0xb1fc63[_0x43e7('0x26')]);if(_0xb1fc63[_0x43e7('0x27')]){delete _0xb1fc63[_0x43e7('0x27')];}_0x40dc8f[_0x43e7('0x1b')](_0x3565cf)[_0x43e7('0x28')](_0xb1fc63);};}exports[_0x43e7('0x29')]=function(_0x2b85a5,_0x31b2a6){var _0x3bf475={},_0x35dbcd={},_0x17df44={'count':0x0,'rows':[]};var _0x19725a=_[_0x43e7('0x2a')](db[_0x43e7('0x2b')]['rawAttributes'],function(_0x238321){return{'name':_0x238321[_0x43e7('0x2c')],'type':_0x238321[_0x43e7('0x2d')][_0x43e7('0x2e')]};});_0x35dbcd[_0x43e7('0x2f')]=_['map'](_0x19725a,_0x43e7('0x27'));_0x35dbcd[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x2b85a5[_0x43e7('0x30')]);_0x35dbcd['filters']=_['intersection'](_0x35dbcd['model'],_0x35dbcd[_0x43e7('0x30')]);_0x3bf475[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0x35dbcd[_0x43e7('0x2f')],qs[_0x43e7('0x34')](_0x2b85a5[_0x43e7('0x30')]['fields']));_0x3bf475['attributes']=_0x3bf475['attributes']['length']?_0x3bf475['attributes']:_0x35dbcd['model'];if(!_0x2b85a5['query'][_0x43e7('0x35')]('nolimit')){_0x3bf475[_0x43e7('0x18')]=qs[_0x43e7('0x18')](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x18')]);_0x3bf475[_0x43e7('0x19')]=qs[_0x43e7('0x19')](_0x2b85a5[_0x43e7('0x30')]['offset']);}_0x3bf475['order']=qs['sort'](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x36')]);_0x3bf475[_0x43e7('0x37')]=qs[_0x43e7('0x38')](_[_0x43e7('0x39')](_0x2b85a5[_0x43e7('0x30')],_0x35dbcd[_0x43e7('0x38')]),_0x19725a);if(_0x2b85a5[_0x43e7('0x30')]['filter']){_0x3bf475[_0x43e7('0x37')]=_[_0x43e7('0x3a')](_0x3bf475['where'],{'$or':_[_0x43e7('0x2a')](_0x19725a,function(_0x4c0c7a){if(_0x4c0c7a[_0x43e7('0x2d')]!==_0x43e7('0x3b')){var _0x1c6f45={};_0x1c6f45[_0x4c0c7a[_0x43e7('0x27')]]={'$like':'%'+_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x3c')]+'%'};return _0x1c6f45;}})});}_0x3bf475=_['merge']({},_0x3bf475,_0x2b85a5['options']);var _0x30dfa9={'where':_0x3bf475[_0x43e7('0x37')]};return db[_0x43e7('0x2b')][_0x43e7('0x1a')](_0x30dfa9)[_0x43e7('0x21')](function(_0x4a4a85){_0x17df44[_0x43e7('0x1a')]=_0x4a4a85;if(_0x2b85a5[_0x43e7('0x30')]['includeAll']){_0x3bf475[_0x43e7('0x3d')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x43e7('0x3e')](_0x3bf475);})['then'](function(_0x3d81ae){_0x17df44[_0x43e7('0x3f')]=_0x3d81ae;return _0x17df44;})[_0x43e7('0x21')](respondWithFilteredResult(_0x31b2a6,_0x3bf475))[_0x43e7('0x40')](handleError(_0x31b2a6,null));};exports['show']=function(_0x47d6a1,_0x103393){var _0x40c509={'raw':!![],'where':{'id':_0x47d6a1[_0x43e7('0x41')]['id']}},_0xe979b5={};_0xe979b5['model']=_['keys'](db['AnalyticMetric'][_0x43e7('0x42')]);_0xe979b5['query']=_[_0x43e7('0x31')](_0x47d6a1['query']);_0xe979b5['filters']=_[_0x43e7('0x33')](_0xe979b5['model'],_0xe979b5[_0x43e7('0x30')]);_0x40c509[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0xe979b5[_0x43e7('0x2f')],qs['fields'](_0x47d6a1[_0x43e7('0x30')][_0x43e7('0x34')]));_0x40c509[_0x43e7('0x32')]=_0x40c509[_0x43e7('0x32')][_0x43e7('0x43')]?_0x40c509[_0x43e7('0x32')]:_0xe979b5['model'];if(_0x47d6a1['query'][_0x43e7('0x44')]){_0x40c509[_0x43e7('0x3d')]=[{'all':!![]}];}_0x40c509=_[_0x43e7('0x3a')]({},_0x40c509,_0x47d6a1['options']);return db['AnalyticMetric']['find'](_0x40c509)[_0x43e7('0x21')](handleEntityNotFound(_0x103393,null))[_0x43e7('0x21')](respondWithResult(_0x103393,null))['catch'](handleError(_0x103393,null));};exports[_0x43e7('0x45')]=function(_0x47686e,_0x3c96fe){return db['AnalyticMetric']['create'](_0x47686e['body'],{})['then'](function(_0x214e7e){var _0xe955fc=_0x47686e['user'][_0x43e7('0x23')]({'plain':!![]});if(!_0xe955fc)throw new Error(_0x43e7('0x46'));if(_0xe955fc[_0x43e7('0x47')]===_0x43e7('0x48')){var _0x4a0ce5=_0x214e7e[_0x43e7('0x23')]({'plain':!![]});var _0x483f20='Metrics';return db[_0x43e7('0x49')][_0x43e7('0x4a')]({'where':{'name':_0x483f20,'userProfileId':_0xe955fc[_0x43e7('0x4b')]},'raw':!![]})[_0x43e7('0x21')](function(_0x13503c){if(_0x13503c&&_0x13503c[_0x43e7('0x4c')]===0x0){return db[_0x43e7('0x4d')][_0x43e7('0x45')]({'name':_0x4a0ce5[_0x43e7('0x27')],'resourceId':_0x4a0ce5['id'],'type':_0x13503c[_0x43e7('0x27')],'sectionId':_0x13503c['id']},{})['then'](function(){return _0x214e7e;});}else{return _0x214e7e;}})[_0x43e7('0x40')](function(_0x46c910){logger['error'](_0x43e7('0x4e'),_0x46c910);throw _0x46c910;});}return _0x214e7e;})['then'](respondWithResult(_0x3c96fe,0xc9))[_0x43e7('0x40')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x20')]=function(_0x34e2ec,_0x1f561f){if(_0x34e2ec[_0x43e7('0x4f')]['id']){delete _0x34e2ec['body']['id'];}return db['AnalyticMetric'][_0x43e7('0x4a')]({'where':{'id':_0x34e2ec[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x1f561f,null))[_0x43e7('0x21')](saveUpdates(_0x34e2ec[_0x43e7('0x4f')],null))[_0x43e7('0x21')](respondWithResult(_0x1f561f,null))[_0x43e7('0x40')](handleError(_0x1f561f,null));};exports[_0x43e7('0x22')]=function(_0x26d86c,_0x24e758){return db[_0x43e7('0x2b')]['find']({'where':{'id':_0x26d86c[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x24e758,null))['then'](removeEntity(_0x24e758,null))[_0x43e7('0x40')](handleError(_0x24e758,null));};
\ No newline at end of file
index 0a603ce..a6d232a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['moment','bluebird','request-promise','rimraf','exports','define','AnalyticMetric','analytics_metrics','util','../../config/logger','api'];(function(_0x27bd53,_0x4cb40c){var _0x4eb180=function(_0x16b5b2){while(--_0x16b5b2){_0x27bd53['push'](_0x27bd53['shift']());}};_0x4eb180(++_0x4cb40c);}(_0x2eb2,0x19f));var _0x22eb=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x2eb2[_0x1c546c];return _0x2cc384;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var logger=require(_0x22eb('0x1'))(_0x22eb('0x2'));var moment=require(_0x22eb('0x3'));var BPromise=require(_0x22eb('0x4'));var rp=require(_0x22eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22eb('0x6'));var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module[_0x22eb('0x7')]=function(_0x10e116,_0x35dd5b){return _0x10e116[_0x22eb('0x8')](_0x22eb('0x9'),attributes,{'tableName':_0x22eb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2709=['bluebird','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics','lodash','../../config/logger','api'];(function(_0x2d2597,_0x438e7c){var _0x4a50a1=function(_0x5e0eba){while(--_0x5e0eba){_0x2d2597['push'](_0x2d2597['shift']());}};_0x4a50a1(++_0x438e7c);}(_0x2709,0x189));var _0x9270=function(_0x526b02,_0x33022b){_0x526b02=_0x526b02-0x0;var _0x29ee66=_0x2709[_0x526b02];return _0x29ee66;};'use strict';var _=require(_0x9270('0x0'));var util=require('util');var logger=require(_0x9270('0x1'))(_0x9270('0x2'));var moment=require('moment');var BPromise=require(_0x9270('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9270('0x4'));var rimraf=require(_0x9270('0x5'));var config=require(_0x9270('0x6'));var attributes=require(_0x9270('0x7'));module[_0x9270('0x8')]=function(_0x446f78,_0x4c71c5){return _0x446f78[_0x9270('0x9')](_0x9270('0xa'),attributes,{'tableName':_0x9270('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6af33ad..339bba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b90=['client','request','info','AnalyticMetric,\x20%s,\x20%s','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x525b28,_0x5cf5a0){var _0x180178=function(_0x43e066){while(--_0x43e066){_0x525b28['push'](_0x525b28['shift']());}};_0x180178(++_0x5cf5a0);}(_0x7b90,0x1c5));var _0x07b9=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x7b90[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x07b9('0x0'));var util=require('util');var moment=require(_0x07b9('0x1'));var BPromise=require(_0x07b9('0x2'));var rs=require(_0x07b9('0x3'));var fs=require('fs');var Redis=require(_0x07b9('0x4'));var db=require(_0x07b9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x07b9('0x6'))('rpc');var config=require(_0x07b9('0x7'));var jayson=require(_0x07b9('0x8'));var client=jayson[_0x07b9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ff0ce,_0x3e2c70,_0x5b531d){return new BPromise(function(_0x15b26d,_0x191d4b){return client[_0x07b9('0xa')](_0x4ff0ce,_0x5b531d)['then'](function(_0x4eda42){logger[_0x07b9('0xb')](_0x07b9('0xc'),_0x3e2c70,'request\x20sent');logger[_0x07b9('0xd')](_0x07b9('0xe'),_0x3e2c70,'request\x20sent',JSON[_0x07b9('0xf')](_0x4eda42));if(_0x4eda42[_0x07b9('0x10')]){if(_0x4eda42['error'][_0x07b9('0x11')]===0x1f4){logger[_0x07b9('0x10')](_0x07b9('0xc'),_0x3e2c70,_0x4eda42[_0x07b9('0x10')][_0x07b9('0x12')]);return _0x191d4b(_0x4eda42[_0x07b9('0x10')][_0x07b9('0x12')]);}logger[_0x07b9('0x10')](_0x07b9('0xc'),_0x3e2c70,_0x4eda42['error'][_0x07b9('0x12')]);return _0x15b26d(_0x4eda42[_0x07b9('0x10')]['message']);}else{logger[_0x07b9('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x3e2c70,_0x07b9('0x13'));_0x15b26d(_0x4eda42[_0x07b9('0x14')][_0x07b9('0x12')]);}})['catch'](function(_0x58ad4a){logger[_0x07b9('0x10')](_0x07b9('0xc'),_0x3e2c70,_0x58ad4a);_0x191d4b(_0x58ad4a);});});}
\ No newline at end of file
+var _0xdf92=['request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http'];(function(_0x1865d4,_0x569a81){var _0x1f0e1c=function(_0x57887d){while(--_0x57887d){_0x1865d4['push'](_0x1865d4['shift']());}};_0x1f0e1c(++_0x569a81);}(_0xdf92,0x6a));var _0x2df9=function(_0x16c790,_0x2894e6){_0x16c790=_0x16c790-0x0;var _0x4455fe=_0xdf92[_0x16c790];return _0x4455fe;};'use strict';var _=require(_0x2df9('0x0'));var util=require('util');var moment=require(_0x2df9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2df9('0x2'));var db=require(_0x2df9('0x3'))['db'];var utils=require(_0x2df9('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x2df9('0x5'));var jayson=require(_0x2df9('0x6'));var client=jayson['client'][_0x2df9('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xf62574,_0xbe891c,_0x5ac8b1){return new BPromise(function(_0x3d61f3,_0x4e53d2){return client[_0x2df9('0x8')](_0xf62574,_0x5ac8b1)[_0x2df9('0x9')](function(_0x18efd1){logger[_0x2df9('0xa')](_0x2df9('0xb'),_0xbe891c,_0x2df9('0xc'));logger[_0x2df9('0xd')](_0x2df9('0xe'),_0xbe891c,_0x2df9('0xc'),JSON['stringify'](_0x18efd1));if(_0x18efd1[_0x2df9('0xf')]){if(_0x18efd1[_0x2df9('0xf')][_0x2df9('0x10')]===0x1f4){logger[_0x2df9('0xf')](_0x2df9('0xb'),_0xbe891c,_0x18efd1[_0x2df9('0xf')][_0x2df9('0x11')]);return _0x4e53d2(_0x18efd1[_0x2df9('0xf')][_0x2df9('0x11')]);}logger[_0x2df9('0xf')](_0x2df9('0xb'),_0xbe891c,_0x18efd1[_0x2df9('0xf')]['message']);return _0x3d61f3(_0x18efd1[_0x2df9('0xf')][_0x2df9('0x11')]);}else{logger[_0x2df9('0xa')](_0x2df9('0xb'),_0xbe891c,'request\x20sent');_0x3d61f3(_0x18efd1['result']['message']);}})[_0x2df9('0x12')](function(_0x5cfed8){logger['error']('AnalyticMetric,\x20%s,\x20%s',_0xbe891c,_0x5cfed8);_0x4e53d2(_0x5cfed8);});});}
\ No newline at end of file
index 15d486d..de71b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['../../components/auth/service','../../config/environment','./analyticMetric.controller','get','/:id','isAuthenticated','show','post','create','update','destroy','exports','multer','connect-timeout','Router','fs-extra'];(function(_0x20b29c,_0xe22528){var _0x20d81b=function(_0xd63a71){while(--_0xd63a71){_0x20b29c['push'](_0x20b29c['shift']());}};_0x20d81b(++_0xe22528);}(_0x24ca,0x8c));var _0xa24c=function(_0x492af5,_0xd51471){_0x492af5=_0x492af5-0x0;var _0x59f529=_0x24ca[_0x492af5];return _0x59f529;};'use strict';var multer=require(_0xa24c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa24c('0x1'));var express=require('express');var router=express[_0xa24c('0x2')]();var fs_extra=require(_0xa24c('0x3'));var auth=require(_0xa24c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa24c('0x5'));var controller=require(_0xa24c('0x6'));router[_0xa24c('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa24c('0x8'),auth[_0xa24c('0x9')](),controller[_0xa24c('0xa')]);router[_0xa24c('0xb')]('/',auth[_0xa24c('0x9')](),controller[_0xa24c('0xc')]);router['put'](_0xa24c('0x8'),auth[_0xa24c('0x9')](),controller[_0xa24c('0xd')]);router['delete']('/:id',auth[_0xa24c('0x9')](),controller[_0xa24c('0xe')]);module[_0xa24c('0xf')]=router;
\ No newline at end of file
+var _0xa23f=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','post','create','put','/:id','delete','exports','multer','util','express','Router'];(function(_0x3164b9,_0x232299){var _0x20035c=function(_0x50894a){while(--_0x50894a){_0x3164b9['push'](_0x3164b9['shift']());}};_0x20035c(++_0x232299);}(_0xa23f,0x7c));var _0xfa23=function(_0x10529a,_0x201032){_0x10529a=_0x10529a-0x0;var _0x410f57=_0xa23f[_0x10529a];return _0x410f57;};'use strict';var multer=require(_0xfa23('0x0'));var util=require(_0xfa23('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfa23('0x2'));var router=express[_0xfa23('0x3')]();var fs_extra=require(_0xfa23('0x4'));var auth=require(_0xfa23('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfa23('0x6'));var controller=require('./analyticMetric.controller');router[_0xfa23('0x7')]('/',auth[_0xfa23('0x8')](),controller[_0xfa23('0x9')]);router[_0xfa23('0x7')]('/:id',auth[_0xfa23('0x8')](),controller['show']);router[_0xfa23('0xa')]('/',auth[_0xfa23('0x8')](),controller[_0xfa23('0xb')]);router[_0xfa23('0xc')](_0xfa23('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xfa23('0xe')]('/:id',auth[_0xfa23('0x8')](),controller['destroy']);module[_0xfa23('0xf')]=router;
\ No newline at end of file
index 14411d0..f0c67ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e8=['exports','TEXT','sequelize'];(function(_0x2d1cf5,_0x8212d4){var _0x3edb6e=function(_0x55854e){while(--_0x55854e){_0x2d1cf5['push'](_0x2d1cf5['shift']());}};_0x3edb6e(++_0x8212d4);}(_0x28e8,0x1e2));var _0x828e=function(_0x12e249,_0x41c55c){_0x12e249=_0x12e249-0x0;var _0x556f45=_0x28e8[_0x12e249];return _0x556f45;};'use strict';var Sequelize=require(_0x828e('0x0'));module[_0x828e('0x1')]={'tree':{'type':Sequelize[_0x828e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xb088=['sequelize','exports','TEXT'];(function(_0x2841c3,_0x2db67b){var _0x17dfcd=function(_0x416f8e){while(--_0x416f8e){_0x2841c3['push'](_0x2841c3['shift']());}};_0x17dfcd(++_0x2db67b);}(_0xb088,0x7b));var _0x8b08=function(_0x3c1342,_0x102c35){_0x3c1342=_0x3c1342-0x0;var _0x350196=_0xb088[_0x3c1342];return _0x350196;};'use strict';var Sequelize=require(_0x8b08('0x0'));module[_0x8b08('0x1')]={'tree':{'type':Sequelize[_0x8b08('0x2')],'allowNull':![]}};
\ No newline at end of file
index 75b7b12..9916d84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe0f=['../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','send','index','map','AnalyticTreeReport','rawAttributes','type','key','name','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','fields','includeAll','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util'];(function(_0x3f1431,_0x361a12){var _0x3e780f=function(_0x492c68){while(--_0x492c68){_0x3f1431['push'](_0x3f1431['shift']());}};_0x3e780f(++_0x361a12);}(_0xfe0f,0x1bd));var _0xffe0=function(_0x33e483,_0x3678f9){_0x33e483=_0x33e483-0x0;var _0x2d34dc=_0xfe0f[_0x33e483];return _0x2d34dc;};'use strict';var emlformat=require(_0xffe0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xffe0('0x1'));var jsonpatch=require(_0xffe0('0x2'));var rp=require('request-promise');var moment=require(_0xffe0('0x3'));var BPromise=require(_0xffe0('0x4'));var Mustache=require(_0xffe0('0x5'));var util=require(_0xffe0('0x6'));var path=require(_0xffe0('0x7'));var sox=require(_0xffe0('0x8'));var csv=require('to-csv');var ejs=require(_0xffe0('0x9'));var fs=require('fs');var fs_extra=require(_0xffe0('0xa'));var _=require(_0xffe0('0xb'));var squel=require(_0xffe0('0xc'));var crypto=require('crypto');var jsforce=require(_0xffe0('0xd'));var deskjs=require(_0xffe0('0xe'));var toCsv=require(_0xffe0('0xf'));var querystring=require(_0xffe0('0x10'));var Papa=require(_0xffe0('0x11'));var Redis=require(_0xffe0('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xffe0('0x13'));var as=require(_0xffe0('0x14'));var hardwareService=require(_0xffe0('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xffe0('0x16'));var db=require(_0xffe0('0x17'))['db'];function respondWithStatusCode(_0x5ccb81,_0x47db5a){_0x47db5a=_0x47db5a||0xcc;return function(_0x52c8e5){if(_0x52c8e5){return _0x5ccb81['sendStatus'](_0x47db5a);}return _0x5ccb81[_0xffe0('0x18')](_0x47db5a)[_0xffe0('0x19')]();};}function respondWithResult(_0x1f4a21,_0x292ec0){_0x292ec0=_0x292ec0||0xc8;return function(_0x227fc1){if(_0x227fc1){return _0x1f4a21[_0xffe0('0x18')](_0x292ec0)[_0xffe0('0x1a')](_0x227fc1);}};}function respondWithFilteredResult(_0xace243,_0xa6fffa){return function(_0x4e8a80){if(_0x4e8a80){var _0x3b3a9c=typeof _0xa6fffa[_0xffe0('0x1b')]===_0xffe0('0x1c')&&typeof _0xa6fffa['limit']===_0xffe0('0x1c');var _0x2f87db=_0x4e8a80[_0xffe0('0x1d')];var _0x279e89=_0x3b3a9c?0x0:_0xa6fffa[_0xffe0('0x1b')];var _0x10681b=_0x3b3a9c?_0x4e8a80['count']:_0xa6fffa['offset']+_0xa6fffa['limit'];var _0x2b415b;if(_0x10681b>=_0x2f87db){_0x10681b=_0x2f87db;_0x2b415b=0xc8;}else{_0x2b415b=0xce;}_0xace243['status'](_0x2b415b);return _0xace243[_0xffe0('0x1e')](_0xffe0('0x1f'),_0x279e89+'-'+_0x10681b+'/'+_0x2f87db)['json'](_0x4e8a80);}return null;};}function patchUpdates(_0x761227){return function(_0x4be9bd){try{jsonpatch[_0xffe0('0x20')](_0x4be9bd,_0x761227,!![]);}catch(_0xa6d48e){return BPromise[_0xffe0('0x21')](_0xa6d48e);}return _0x4be9bd[_0xffe0('0x22')]();};}function saveUpdates(_0x255857,_0x3e4f66){return function(_0x2da2fc){if(_0x2da2fc){return _0x2da2fc[_0xffe0('0x23')](_0x255857)[_0xffe0('0x24')](function(_0x5a3745){return _0x5a3745;});}return null;};}function removeEntity(_0x149d2a,_0x1b5e19){return function(_0x3f673e){if(_0x3f673e){return _0x3f673e[_0xffe0('0x25')]()[_0xffe0('0x24')](function(){_0x149d2a['status'](0xcc)[_0xffe0('0x19')]();});}};}function handleEntityNotFound(_0x416fac,_0x80f716){return function(_0x2417ab){if(!_0x2417ab){_0x416fac[_0xffe0('0x26')](0x194);}return _0x2417ab;};}function handleError(_0x32cdca,_0x2935c6){_0x2935c6=_0x2935c6||0x1f4;return function(_0x5293a7){logger[_0xffe0('0x27')](_0x5293a7[_0xffe0('0x28')]);if(_0x5293a7['name']){delete _0x5293a7['name'];}_0x32cdca['status'](_0x2935c6)[_0xffe0('0x29')](_0x5293a7);};}exports[_0xffe0('0x2a')]=function(_0x85d180,_0x5e34b6){var _0x4223e4={},_0x12a105={},_0x74e89={'count':0x0,'rows':[]};var _0x27e638=_[_0xffe0('0x2b')](db[_0xffe0('0x2c')][_0xffe0('0x2d')],function(_0x5b7e4f){return{'name':_0x5b7e4f['fieldName'],'type':_0x5b7e4f[_0xffe0('0x2e')][_0xffe0('0x2f')]};});_0x12a105['model']=_['map'](_0x27e638,_0xffe0('0x30'));_0x12a105[_0xffe0('0x31')]=_['keys'](_0x85d180[_0xffe0('0x31')]);_0x12a105[_0xffe0('0x32')]=_[_0xffe0('0x33')](_0x12a105[_0xffe0('0x34')],_0x12a105[_0xffe0('0x31')]);_0x4223e4['attributes']=_[_0xffe0('0x33')](_0x12a105[_0xffe0('0x34')],qs['fields'](_0x85d180[_0xffe0('0x31')]['fields']));_0x4223e4[_0xffe0('0x35')]=_0x4223e4[_0xffe0('0x35')][_0xffe0('0x36')]?_0x4223e4[_0xffe0('0x35')]:_0x12a105[_0xffe0('0x34')];if(!_0x85d180[_0xffe0('0x31')][_0xffe0('0x37')](_0xffe0('0x38'))){_0x4223e4[_0xffe0('0x39')]=qs[_0xffe0('0x39')](_0x85d180[_0xffe0('0x31')][_0xffe0('0x39')]);_0x4223e4[_0xffe0('0x1b')]=qs[_0xffe0('0x1b')](_0x85d180[_0xffe0('0x31')][_0xffe0('0x1b')]);}_0x4223e4[_0xffe0('0x3a')]=qs[_0xffe0('0x3b')](_0x85d180[_0xffe0('0x31')][_0xffe0('0x3b')]);_0x4223e4[_0xffe0('0x3c')]=qs[_0xffe0('0x32')](_[_0xffe0('0x3d')](_0x85d180[_0xffe0('0x31')],_0x12a105[_0xffe0('0x32')]),_0x27e638);if(_0x85d180[_0xffe0('0x31')]['filter']){_0x4223e4[_0xffe0('0x3c')]=_[_0xffe0('0x3e')](_0x4223e4[_0xffe0('0x3c')],{'$or':_[_0xffe0('0x2b')](_0x27e638,function(_0x19f4b0){if(_0x19f4b0[_0xffe0('0x2e')]!==_0xffe0('0x3f')){var _0xe0bcf9={};_0xe0bcf9[_0x19f4b0[_0xffe0('0x30')]]={'$like':'%'+_0x85d180[_0xffe0('0x31')][_0xffe0('0x40')]+'%'};return _0xe0bcf9;}})});}_0x4223e4=_[_0xffe0('0x3e')]({},_0x4223e4,_0x85d180[_0xffe0('0x41')]);var _0x42295e={'where':_0x4223e4[_0xffe0('0x3c')]};return db['AnalyticTreeReport'][_0xffe0('0x1d')](_0x42295e)[_0xffe0('0x24')](function(_0x32f6a9){_0x74e89[_0xffe0('0x1d')]=_0x32f6a9;if(_0x85d180[_0xffe0('0x31')]['includeAll']){_0x4223e4[_0xffe0('0x42')]=[{'all':!![]}];}return db[_0xffe0('0x2c')][_0xffe0('0x43')](_0x4223e4);})[_0xffe0('0x24')](function(_0x3149ac){_0x74e89[_0xffe0('0x44')]=_0x3149ac;return _0x74e89;})['then'](respondWithFilteredResult(_0x5e34b6,_0x4223e4))[_0xffe0('0x45')](handleError(_0x5e34b6,null));};exports[_0xffe0('0x46')]=function(_0x537e9c,_0xeb78aa){var _0x5aaaaa={'raw':!![],'where':{'id':_0x537e9c[_0xffe0('0x47')]['id']}},_0x38411f={};_0x38411f[_0xffe0('0x34')]=_['keys'](db[_0xffe0('0x2c')][_0xffe0('0x2d')]);_0x38411f[_0xffe0('0x31')]=_[_0xffe0('0x48')](_0x537e9c[_0xffe0('0x31')]);_0x38411f[_0xffe0('0x32')]=_['intersection'](_0x38411f['model'],_0x38411f[_0xffe0('0x31')]);_0x5aaaaa['attributes']=_['intersection'](_0x38411f[_0xffe0('0x34')],qs[_0xffe0('0x49')](_0x537e9c[_0xffe0('0x31')]['fields']));_0x5aaaaa['attributes']=_0x5aaaaa[_0xffe0('0x35')]['length']?_0x5aaaaa[_0xffe0('0x35')]:_0x38411f[_0xffe0('0x34')];if(_0x537e9c[_0xffe0('0x31')][_0xffe0('0x4a')]){_0x5aaaaa[_0xffe0('0x42')]=[{'all':!![]}];}_0x5aaaaa=_[_0xffe0('0x3e')]({},_0x5aaaaa,_0x537e9c[_0xffe0('0x41')]);return db[_0xffe0('0x2c')][_0xffe0('0x4b')](_0x5aaaaa)[_0xffe0('0x24')](handleEntityNotFound(_0xeb78aa,null))[_0xffe0('0x24')](respondWithResult(_0xeb78aa,null))[_0xffe0('0x45')](handleError(_0xeb78aa,null));};exports[_0xffe0('0x4c')]=function(_0x2093ef,_0x4fff91){return db[_0xffe0('0x2c')][_0xffe0('0x4c')](_0x2093ef[_0xffe0('0x4d')],{})[_0xffe0('0x24')](respondWithResult(_0x4fff91,0xc9))[_0xffe0('0x45')](handleError(_0x4fff91,null));};exports[_0xffe0('0x23')]=function(_0xdf1a63,_0x3a1396){if(_0xdf1a63[_0xffe0('0x4d')]['id']){delete _0xdf1a63[_0xffe0('0x4d')]['id'];}return db[_0xffe0('0x2c')][_0xffe0('0x4b')]({'where':{'id':_0xdf1a63[_0xffe0('0x47')]['id']}})['then'](handleEntityNotFound(_0x3a1396,null))[_0xffe0('0x24')](saveUpdates(_0xdf1a63[_0xffe0('0x4d')],null))[_0xffe0('0x24')](respondWithResult(_0x3a1396,null))['catch'](handleError(_0x3a1396,null));};exports[_0xffe0('0x25')]=function(_0x121d6e,_0xe705ca){return db[_0xffe0('0x2c')][_0xffe0('0x4b')]({'where':{'id':_0x121d6e[_0xffe0('0x47')]['id']}})[_0xffe0('0x24')](handleEntityNotFound(_0xe705ca,null))[_0xffe0('0x24')](removeEntity(_0xe705ca,null))['catch'](handleError(_0xe705ca,null));};
\ No newline at end of file
+var _0xd613=['includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options'];(function(_0x4dc7b9,_0x319d5a){var _0x3ab114=function(_0x51a9df){while(--_0x51a9df){_0x4dc7b9['push'](_0x4dc7b9['shift']());}};_0x3ab114(++_0x319d5a);}(_0xd613,0x12b));var _0x3d61=function(_0xe22932,_0x1ed9e0){_0xe22932=_0xe22932-0x0;var _0x3e796f=_0xd613[_0xe22932];return _0x3e796f;};'use strict';var emlformat=require(_0x3d61('0x0'));var rimraf=require(_0x3d61('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3d61('0x2'));var moment=require('moment');var BPromise=require(_0x3d61('0x3'));var Mustache=require(_0x3d61('0x4'));var util=require(_0x3d61('0x5'));var path=require('path');var sox=require(_0x3d61('0x6'));var csv=require('to-csv');var ejs=require(_0x3d61('0x7'));var fs=require('fs');var fs_extra=require(_0x3d61('0x8'));var _=require(_0x3d61('0x9'));var squel=require('squel');var crypto=require(_0x3d61('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x3d61('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3d61('0xc'));var Papa=require(_0x3d61('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3d61('0xe'));var as=require(_0x3d61('0xf'));var hardwareService=require(_0x3d61('0x10'));var logger=require(_0x3d61('0x11'))('api');var utils=require(_0x3d61('0x12'));var config=require(_0x3d61('0x13'));var licenseUtil=require(_0x3d61('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38f043,_0x18bae6){_0x18bae6=_0x18bae6||0xcc;return function(_0x583dda){if(_0x583dda){return _0x38f043[_0x3d61('0x15')](_0x18bae6);}return _0x38f043[_0x3d61('0x16')](_0x18bae6)[_0x3d61('0x17')]();};}function respondWithResult(_0x3f630f,_0x5515ae){_0x5515ae=_0x5515ae||0xc8;return function(_0x27155e){if(_0x27155e){return _0x3f630f[_0x3d61('0x16')](_0x5515ae)['json'](_0x27155e);}};}function respondWithFilteredResult(_0x2022f7,_0x1fd601){return function(_0x2b1cc2){if(_0x2b1cc2){var _0x4f6988=typeof _0x1fd601[_0x3d61('0x18')]===_0x3d61('0x19')&&typeof _0x1fd601['limit']==='undefined';var _0x269ed0=_0x2b1cc2[_0x3d61('0x1a')];var _0x269cb7=_0x4f6988?0x0:_0x1fd601[_0x3d61('0x18')];var _0x5a2fde=_0x4f6988?_0x2b1cc2[_0x3d61('0x1a')]:_0x1fd601['offset']+_0x1fd601[_0x3d61('0x1b')];var _0x1f280a;if(_0x5a2fde>=_0x269ed0){_0x5a2fde=_0x269ed0;_0x1f280a=0xc8;}else{_0x1f280a=0xce;}_0x2022f7[_0x3d61('0x16')](_0x1f280a);return _0x2022f7[_0x3d61('0x1c')](_0x3d61('0x1d'),_0x269cb7+'-'+_0x5a2fde+'/'+_0x269ed0)['json'](_0x2b1cc2);}return null;};}function patchUpdates(_0x4b97e6){return function(_0x3a04fc){try{jsonpatch[_0x3d61('0x1e')](_0x3a04fc,_0x4b97e6,!![]);}catch(_0x4fcff1){return BPromise[_0x3d61('0x1f')](_0x4fcff1);}return _0x3a04fc[_0x3d61('0x20')]();};}function saveUpdates(_0x309653,_0x3f8c68){return function(_0x29e239){if(_0x29e239){return _0x29e239[_0x3d61('0x21')](_0x309653)[_0x3d61('0x22')](function(_0x133c80){return _0x133c80;});}return null;};}function removeEntity(_0x2d4c9b,_0x490c28){return function(_0x5c51bc){if(_0x5c51bc){return _0x5c51bc['destroy']()[_0x3d61('0x22')](function(){_0x2d4c9b['status'](0xcc)[_0x3d61('0x17')]();});}};}function handleEntityNotFound(_0x1283f3,_0x2a9f2d){return function(_0x41b679){if(!_0x41b679){_0x1283f3[_0x3d61('0x15')](0x194);}return _0x41b679;};}function handleError(_0x196182,_0x271a5c){_0x271a5c=_0x271a5c||0x1f4;return function(_0x4720d3){logger['error'](_0x4720d3[_0x3d61('0x23')]);if(_0x4720d3[_0x3d61('0x24')]){delete _0x4720d3[_0x3d61('0x24')];}_0x196182[_0x3d61('0x16')](_0x271a5c)[_0x3d61('0x25')](_0x4720d3);};}exports[_0x3d61('0x26')]=function(_0x2004fe,_0x51cd23){var _0x8770b9={},_0x48583e={},_0x5727a3={'count':0x0,'rows':[]};var _0x49cf41=_[_0x3d61('0x27')](db[_0x3d61('0x28')][_0x3d61('0x29')],function(_0x2b9c15){return{'name':_0x2b9c15['fieldName'],'type':_0x2b9c15[_0x3d61('0x2a')][_0x3d61('0x2b')]};});_0x48583e[_0x3d61('0x2c')]=_[_0x3d61('0x27')](_0x49cf41,_0x3d61('0x24'));_0x48583e['query']=_[_0x3d61('0x2d')](_0x2004fe[_0x3d61('0x2e')]);_0x48583e[_0x3d61('0x2f')]=_[_0x3d61('0x30')](_0x48583e['model'],_0x48583e['query']);_0x8770b9[_0x3d61('0x31')]=_[_0x3d61('0x30')](_0x48583e[_0x3d61('0x2c')],qs[_0x3d61('0x32')](_0x2004fe[_0x3d61('0x2e')]['fields']));_0x8770b9[_0x3d61('0x31')]=_0x8770b9[_0x3d61('0x31')][_0x3d61('0x33')]?_0x8770b9[_0x3d61('0x31')]:_0x48583e[_0x3d61('0x2c')];if(!_0x2004fe['query'][_0x3d61('0x34')](_0x3d61('0x35'))){_0x8770b9[_0x3d61('0x1b')]=qs[_0x3d61('0x1b')](_0x2004fe[_0x3d61('0x2e')][_0x3d61('0x1b')]);_0x8770b9[_0x3d61('0x18')]=qs[_0x3d61('0x18')](_0x2004fe[_0x3d61('0x2e')]['offset']);}_0x8770b9[_0x3d61('0x36')]=qs[_0x3d61('0x37')](_0x2004fe[_0x3d61('0x2e')][_0x3d61('0x37')]);_0x8770b9['where']=qs[_0x3d61('0x2f')](_['pick'](_0x2004fe[_0x3d61('0x2e')],_0x48583e['filters']),_0x49cf41);if(_0x2004fe[_0x3d61('0x2e')][_0x3d61('0x38')]){_0x8770b9[_0x3d61('0x39')]=_[_0x3d61('0x3a')](_0x8770b9['where'],{'$or':_['map'](_0x49cf41,function(_0x1f23de){if(_0x1f23de[_0x3d61('0x2a')]!==_0x3d61('0x3b')){var _0x321086={};_0x321086[_0x1f23de[_0x3d61('0x24')]]={'$like':'%'+_0x2004fe['query'][_0x3d61('0x38')]+'%'};return _0x321086;}})});}_0x8770b9=_[_0x3d61('0x3a')]({},_0x8770b9,_0x2004fe[_0x3d61('0x3c')]);var _0x204bf5={'where':_0x8770b9[_0x3d61('0x39')]};return db['AnalyticTreeReport'][_0x3d61('0x1a')](_0x204bf5)[_0x3d61('0x22')](function(_0x3ef2aa){_0x5727a3[_0x3d61('0x1a')]=_0x3ef2aa;if(_0x2004fe[_0x3d61('0x2e')][_0x3d61('0x3d')]){_0x8770b9[_0x3d61('0x3e')]=[{'all':!![]}];}return db[_0x3d61('0x28')][_0x3d61('0x3f')](_0x8770b9);})[_0x3d61('0x22')](function(_0x7231){_0x5727a3[_0x3d61('0x40')]=_0x7231;return _0x5727a3;})[_0x3d61('0x22')](respondWithFilteredResult(_0x51cd23,_0x8770b9))[_0x3d61('0x41')](handleError(_0x51cd23,null));};exports[_0x3d61('0x42')]=function(_0x4e7641,_0x3cef09){var _0x447371={'raw':!![],'where':{'id':_0x4e7641[_0x3d61('0x43')]['id']}},_0x362774={};_0x362774[_0x3d61('0x2c')]=_[_0x3d61('0x2d')](db[_0x3d61('0x28')]['rawAttributes']);_0x362774[_0x3d61('0x2e')]=_['keys'](_0x4e7641['query']);_0x362774[_0x3d61('0x2f')]=_[_0x3d61('0x30')](_0x362774[_0x3d61('0x2c')],_0x362774['query']);_0x447371[_0x3d61('0x31')]=_[_0x3d61('0x30')](_0x362774[_0x3d61('0x2c')],qs[_0x3d61('0x32')](_0x4e7641[_0x3d61('0x2e')]['fields']));_0x447371[_0x3d61('0x31')]=_0x447371[_0x3d61('0x31')][_0x3d61('0x33')]?_0x447371['attributes']:_0x362774[_0x3d61('0x2c')];if(_0x4e7641[_0x3d61('0x2e')][_0x3d61('0x3d')]){_0x447371[_0x3d61('0x3e')]=[{'all':!![]}];}_0x447371=_[_0x3d61('0x3a')]({},_0x447371,_0x4e7641[_0x3d61('0x3c')]);return db[_0x3d61('0x28')][_0x3d61('0x44')](_0x447371)[_0x3d61('0x22')](handleEntityNotFound(_0x3cef09,null))[_0x3d61('0x22')](respondWithResult(_0x3cef09,null))['catch'](handleError(_0x3cef09,null));};exports[_0x3d61('0x45')]=function(_0x4eb4c7,_0x264cdc){return db[_0x3d61('0x28')][_0x3d61('0x45')](_0x4eb4c7[_0x3d61('0x46')],{})[_0x3d61('0x22')](respondWithResult(_0x264cdc,0xc9))[_0x3d61('0x41')](handleError(_0x264cdc,null));};exports[_0x3d61('0x21')]=function(_0x3b3147,_0x441c7a){if(_0x3b3147[_0x3d61('0x46')]['id']){delete _0x3b3147['body']['id'];}return db['AnalyticTreeReport'][_0x3d61('0x44')]({'where':{'id':_0x3b3147['params']['id']}})[_0x3d61('0x22')](handleEntityNotFound(_0x441c7a,null))[_0x3d61('0x22')](saveUpdates(_0x3b3147[_0x3d61('0x46')],null))[_0x3d61('0x22')](respondWithResult(_0x441c7a,null))[_0x3d61('0x41')](handleError(_0x441c7a,null));};exports[_0x3d61('0x47')]=function(_0x16455e,_0x55fadf){return db['AnalyticTreeReport']['find']({'where':{'id':_0x16455e['params']['id']}})['then'](handleEntityNotFound(_0x55fadf,null))[_0x3d61('0x22')](removeEntity(_0x55fadf,null))['catch'](handleError(_0x55fadf,null));};
\ No newline at end of file
index faa25d8..11d5ef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ce=['rimraf','exports','define','AnalyticTreeReport','lodash','util','api','moment','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x76ce,0x126));var _0xe76c=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x76ce[_0x34bf97];return _0x292719;};'use strict';var _=require(_0xe76c('0x0'));var util=require(_0xe76c('0x1'));var logger=require('../../config/logger')(_0xe76c('0x2'));var moment=require(_0xe76c('0x3'));var BPromise=require('bluebird');var rp=require(_0xe76c('0x4'));var fs=require('fs');var path=require(_0xe76c('0x5'));var rimraf=require(_0xe76c('0x6'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0xe76c('0x7')]=function(_0x2147e5,_0x448e1b){return _0x2147e5[_0xe76c('0x8')](_0xe76c('0x9'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x10ec=['../../config/logger','api','bluebird','request-promise','path','./analyticTreeReport.attributes','define','AnalyticTreeReport','analytics_report_trees','lodash','util'];(function(_0x5ae836,_0x2ac9a1){var _0x49e74d=function(_0x214624){while(--_0x214624){_0x5ae836['push'](_0x5ae836['shift']());}};_0x49e74d(++_0x2ac9a1);}(_0x10ec,0x169));var _0xc10e=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x10ec[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xc10e('0x0'));var util=require(_0xc10e('0x1'));var logger=require(_0xc10e('0x2'))(_0xc10e('0x3'));var moment=require('moment');var BPromise=require(_0xc10e('0x4'));var rp=require(_0xc10e('0x5'));var fs=require('fs');var path=require(_0xc10e('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc10e('0x7'));module['exports']=function(_0x3e2388,_0x51c3ee){return _0x3e2388[_0xc10e('0x8')](_0xc10e('0x9'),attributes,{'tableName':_0xc10e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aef9698..915fea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x91f898,_0x5d45f1){var _0x40ca6c=function(_0x1ea7d2){while(--_0x1ea7d2){_0x91f898['push'](_0x91f898['shift']());}};_0x40ca6c(++_0x5d45f1);}(_0x1261,0x144));var _0x1126=function(_0x186222,_0x3bdfb0){_0x186222=_0x186222-0x0;var _0x226a38=_0x1261[_0x186222];return _0x226a38;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x2ffefe,_0x25e7d5){var _0x5b8366=function(_0x1878cd){while(--_0x1878cd){_0x2ffefe['push'](_0x2ffefe['shift']());}};_0x5b8366(++_0x25e7d5);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xc4aa[_0x17b6e3];return _0x3906f3;};'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')]('AnalyticTreeReport,\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
index d950ad5..566d886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde1=['fs-extra','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','destroy','multer','util','path','express','Router'];(function(_0x545e64,_0x356844){var _0x13dbef=function(_0x516ff6){while(--_0x516ff6){_0x545e64['push'](_0x545e64['shift']());}};_0x13dbef(++_0x356844);}(_0xcde1,0xfa));var _0x1cde=function(_0x1b7ca4,_0xa3654a){_0x1b7ca4=_0x1b7ca4-0x0;var _0x577dbd=_0xcde1[_0x1b7ca4];return _0x577dbd;};'use strict';var multer=require(_0x1cde('0x0'));var util=require(_0x1cde('0x1'));var path=require(_0x1cde('0x2'));var timeout=require('connect-timeout');var express=require(_0x1cde('0x3'));var router=express[_0x1cde('0x4')]();var fs_extra=require(_0x1cde('0x5'));var auth=require(_0x1cde('0x6'));var interaction=require(_0x1cde('0x7'));var config=require('../../config/environment');var controller=require(_0x1cde('0x8'));router[_0x1cde('0x9')]('/',auth[_0x1cde('0xa')](),controller[_0x1cde('0xb')]);router[_0x1cde('0x9')](_0x1cde('0xc'),auth[_0x1cde('0xa')](),controller[_0x1cde('0xd')]);router[_0x1cde('0xe')]('/',auth['isAuthenticated'](),controller[_0x1cde('0xf')]);router['put'](_0x1cde('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x1cde('0xc'),auth[_0x1cde('0xa')](),controller[_0x1cde('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x23cc=['connect-timeout','express','Router','../../components/auth/service','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x50e40b,_0x338d17){var _0x2608b7=function(_0x4ded5e){while(--_0x4ded5e){_0x50e40b['push'](_0x50e40b['shift']());}};_0x2608b7(++_0x338d17);}(_0x23cc,0x11a));var _0xc23c=function(_0x2ad380,_0x583d69){_0x2ad380=_0x2ad380-0x0;var _0x477cdd=_0x23cc[_0x2ad380];return _0x477cdd;};'use strict';var multer=require(_0xc23c('0x0'));var util=require(_0xc23c('0x1'));var path=require(_0xc23c('0x2'));var timeout=require(_0xc23c('0x3'));var express=require(_0xc23c('0x4'));var router=express[_0xc23c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc23c('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc23c('0x7'));router[_0xc23c('0x8')]('/',auth[_0xc23c('0x9')](),controller[_0xc23c('0xa')]);router[_0xc23c('0x8')](_0xc23c('0xb'),auth[_0xc23c('0x9')](),controller[_0xc23c('0xc')]);router[_0xc23c('0xd')]('/',auth[_0xc23c('0x9')](),controller[_0xc23c('0xe')]);router[_0xc23c('0xf')](_0xc23c('0xb'),auth[_0xc23c('0x9')](),controller[_0xc23c('0x10')]);router[_0xc23c('0x11')]('/:id',auth[_0xc23c('0x9')](),controller['destroy']);module[_0xc23c('0x12')]=router;
\ No newline at end of file
index bdfc377..508d127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17f=['STRING','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc17f,0xb8));var _0xfc17=function(_0x2edbf9,_0x1f52a9){_0x2edbf9=_0x2edbf9-0x0;var _0x3f0791=_0xc17f[_0x2edbf9];return _0x3f0791;};'use strict';var Sequelize=require(_0xfc17('0x0'));module[_0xfc17('0x1')]={'name':{'type':Sequelize[_0xfc17('0x2')]},'basename':{'type':Sequelize[_0xfc17('0x2')]},'type':{'type':Sequelize[_0xfc17('0x2')]}};
\ No newline at end of file
+var _0xbbb8=['exports','STRING','sequelize'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xbbb8,0x7d));var _0x8bbb=function(_0x39ebcc,_0x482f78){_0x39ebcc=_0x39ebcc-0x0;var _0x2c18e1=_0xbbb8[_0x39ebcc];return _0x2c18e1;};'use strict';var Sequelize=require(_0x8bbb('0x0'));module[_0x8bbb('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x8bbb('0x2')]},'type':{'type':Sequelize[_0x8bbb('0x2')]}};
\ No newline at end of file
index 1a55795..33e827b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c67=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','stack','name','index','map','Attachment','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','show','params','rawAttributes','intersection','find','catch','clone','get','createdAt','updatedAt','body','omit','create','destroy','file','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x11c93f,_0x2d876a){var _0x47160e=function(_0xcf45fd){while(--_0xcf45fd){_0x11c93f['push'](_0x11c93f['shift']());}};_0x47160e(++_0x2d876a);}(_0x7c67,0x1ba));var _0x77c6=function(_0x35ae04,_0x2b95a6){_0x35ae04=_0x35ae04-0x0;var _0x31c457=_0x7c67[_0x35ae04];return _0x31c457;};'use strict';var emlformat=require(_0x77c6('0x0'));var rimraf=require(_0x77c6('0x1'));var zipdir=require(_0x77c6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77c6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x77c6('0x4'));var util=require(_0x77c6('0x5'));var path=require(_0x77c6('0x6'));var sox=require('sox');var csv=require(_0x77c6('0x7'));var ejs=require(_0x77c6('0x8'));var fs=require('fs');var fs_extra=require(_0x77c6('0x9'));var _=require(_0x77c6('0xa'));var squel=require(_0x77c6('0xb'));var crypto=require(_0x77c6('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x77c6('0xd'));var toCsv=require(_0x77c6('0x7'));var querystring=require(_0x77c6('0xe'));var Papa=require(_0x77c6('0xf'));var Redis=require(_0x77c6('0x10'));var authService=require(_0x77c6('0x11'));var qs=require(_0x77c6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77c6('0x13'));var logger=require(_0x77c6('0x14'))(_0x77c6('0x15'));var utils=require(_0x77c6('0x16'));var config=require(_0x77c6('0x17'));var licenseUtil=require(_0x77c6('0x18'));var db=require(_0x77c6('0x19'))['db'];function respondWithStatusCode(_0x303924,_0x458bd8){_0x458bd8=_0x458bd8||0xcc;return function(_0x5dfed7){if(_0x5dfed7){return _0x303924[_0x77c6('0x1a')](_0x458bd8);}return _0x303924[_0x77c6('0x1b')](_0x458bd8)[_0x77c6('0x1c')]();};}function respondWithResult(_0x5ec396,_0x5f476a){_0x5f476a=_0x5f476a||0xc8;return function(_0x4e992f){if(_0x4e992f){return _0x5ec396[_0x77c6('0x1b')](_0x5f476a)['json'](_0x4e992f);}};}function respondWithFilteredResult(_0x15420e,_0x711f43){return function(_0x4a0d63){if(_0x4a0d63){var _0x4e805e=typeof _0x711f43[_0x77c6('0x1d')]===_0x77c6('0x1e')&&typeof _0x711f43[_0x77c6('0x1f')]===_0x77c6('0x1e');var _0x3144a9=_0x4a0d63[_0x77c6('0x20')];var _0xd63804=_0x4e805e?0x0:_0x711f43[_0x77c6('0x1d')];var _0x53dcd6=_0x4e805e?_0x4a0d63[_0x77c6('0x20')]:_0x711f43[_0x77c6('0x1d')]+_0x711f43['limit'];var _0x4f8ed9;if(_0x53dcd6>=_0x3144a9){_0x53dcd6=_0x3144a9;_0x4f8ed9=0xc8;}else{_0x4f8ed9=0xce;}_0x15420e['status'](_0x4f8ed9);return _0x15420e[_0x77c6('0x21')](_0x77c6('0x22'),_0xd63804+'-'+_0x53dcd6+'/'+_0x3144a9)[_0x77c6('0x23')](_0x4a0d63);}return null;};}function patchUpdates(_0x60929c){return function(_0x201779){try{jsonpatch[_0x77c6('0x24')](_0x201779,_0x60929c,!![]);}catch(_0x38f582){return BPromise['reject'](_0x38f582);}return _0x201779[_0x77c6('0x25')]();};}function saveUpdates(_0x6e7938,_0x505015){return function(_0x56bbd8){if(_0x56bbd8){return _0x56bbd8[_0x77c6('0x26')](_0x6e7938)[_0x77c6('0x27')](function(_0x95781f){return _0x95781f;});}return null;};}function removeEntity(_0x458abd,_0x2a6a5e){return function(_0x2b51d4){if(_0x2b51d4){return _0x2b51d4['destroy']()[_0x77c6('0x27')](function(){_0x458abd[_0x77c6('0x1b')](0xcc)[_0x77c6('0x1c')]();});}};}function handleEntityNotFound(_0x3c2a5e,_0x5e1ffc){return function(_0xcb436b){if(!_0xcb436b){_0x3c2a5e[_0x77c6('0x1a')](0x194);}return _0xcb436b;};}function handleError(_0x5c992e,_0x4b2619){_0x4b2619=_0x4b2619||0x1f4;return function(_0x2fd6c3){logger['error'](_0x2fd6c3[_0x77c6('0x28')]);if(_0x2fd6c3[_0x77c6('0x29')]){delete _0x2fd6c3[_0x77c6('0x29')];}_0x5c992e[_0x77c6('0x1b')](_0x4b2619)['send'](_0x2fd6c3);};}exports[_0x77c6('0x2a')]=function(_0xd10cc0,_0x22e3e9){var _0x13c4a0={},_0x34a002={},_0x2438a7={'count':0x0,'rows':[]};var _0x376734=_[_0x77c6('0x2b')](db[_0x77c6('0x2c')]['rawAttributes'],function(_0x33b38a){return{'name':_0x33b38a[_0x77c6('0x2d')],'type':_0x33b38a[_0x77c6('0x2e')][_0x77c6('0x2f')]};});_0x34a002[_0x77c6('0x30')]=_[_0x77c6('0x2b')](_0x376734,_0x77c6('0x29'));_0x34a002[_0x77c6('0x31')]=_[_0x77c6('0x32')](_0xd10cc0[_0x77c6('0x31')]);_0x34a002[_0x77c6('0x33')]=_['intersection'](_0x34a002['model'],_0x34a002[_0x77c6('0x31')]);_0x13c4a0[_0x77c6('0x34')]=_['intersection'](_0x34a002['model'],qs[_0x77c6('0x35')](_0xd10cc0[_0x77c6('0x31')]['fields']));_0x13c4a0[_0x77c6('0x34')]=_0x13c4a0[_0x77c6('0x34')][_0x77c6('0x36')]?_0x13c4a0['attributes']:_0x34a002[_0x77c6('0x30')];if(!_0xd10cc0[_0x77c6('0x31')][_0x77c6('0x37')]('nolimit')){_0x13c4a0[_0x77c6('0x1f')]=qs[_0x77c6('0x1f')](_0xd10cc0[_0x77c6('0x31')]['limit']);_0x13c4a0[_0x77c6('0x1d')]=qs['offset'](_0xd10cc0['query'][_0x77c6('0x1d')]);}_0x13c4a0[_0x77c6('0x38')]=qs[_0x77c6('0x39')](_0xd10cc0[_0x77c6('0x31')][_0x77c6('0x39')]);_0x13c4a0[_0x77c6('0x3a')]=qs[_0x77c6('0x33')](_[_0x77c6('0x3b')](_0xd10cc0[_0x77c6('0x31')],_0x34a002[_0x77c6('0x33')]),_0x376734);if(_0xd10cc0['query'][_0x77c6('0x3c')]){_0x13c4a0['where']=_[_0x77c6('0x3d')](_0x13c4a0[_0x77c6('0x3a')],{'$or':_[_0x77c6('0x2b')](_0x376734,function(_0x20dcc3){if(_0x20dcc3[_0x77c6('0x2e')]!==_0x77c6('0x3e')){var _0x3dc909={};_0x3dc909[_0x20dcc3[_0x77c6('0x29')]]={'$like':'%'+_0xd10cc0[_0x77c6('0x31')]['filter']+'%'};return _0x3dc909;}})});}_0x13c4a0=_[_0x77c6('0x3d')]({},_0x13c4a0,_0xd10cc0[_0x77c6('0x3f')]);var _0x355c5a={'where':_0x13c4a0[_0x77c6('0x3a')]};return db[_0x77c6('0x2c')]['count'](_0x355c5a)[_0x77c6('0x27')](function(_0x4189d8){_0x2438a7[_0x77c6('0x20')]=_0x4189d8;if(_0xd10cc0[_0x77c6('0x31')][_0x77c6('0x40')]){_0x13c4a0[_0x77c6('0x41')]=[{'all':!![]}];}return db[_0x77c6('0x2c')]['findAll'](_0x13c4a0);})['then'](function(_0x3d5590){_0x2438a7['rows']=_0x3d5590;return _0x2438a7;})['then'](respondWithFilteredResult(_0x22e3e9,_0x13c4a0))['catch'](handleError(_0x22e3e9,null));};exports[_0x77c6('0x42')]=function(_0x4982d2,_0xa8520c){var _0x44731d={'raw':!![],'where':{'id':_0x4982d2[_0x77c6('0x43')]['id']}},_0x5d7c2f={};_0x5d7c2f[_0x77c6('0x30')]=_[_0x77c6('0x32')](db[_0x77c6('0x2c')][_0x77c6('0x44')]);_0x5d7c2f[_0x77c6('0x31')]=_[_0x77c6('0x32')](_0x4982d2['query']);_0x5d7c2f[_0x77c6('0x33')]=_[_0x77c6('0x45')](_0x5d7c2f[_0x77c6('0x30')],_0x5d7c2f[_0x77c6('0x31')]);_0x44731d['attributes']=_[_0x77c6('0x45')](_0x5d7c2f['model'],qs[_0x77c6('0x35')](_0x4982d2[_0x77c6('0x31')]['fields']));_0x44731d[_0x77c6('0x34')]=_0x44731d[_0x77c6('0x34')][_0x77c6('0x36')]?_0x44731d[_0x77c6('0x34')]:_0x5d7c2f[_0x77c6('0x30')];if(_0x4982d2[_0x77c6('0x31')]['includeAll']){_0x44731d[_0x77c6('0x41')]=[{'all':!![]}];}_0x44731d=_[_0x77c6('0x3d')]({},_0x44731d,_0x4982d2[_0x77c6('0x3f')]);return db['Attachment'][_0x77c6('0x46')](_0x44731d)[_0x77c6('0x27')](handleEntityNotFound(_0xa8520c,null))[_0x77c6('0x27')](respondWithResult(_0xa8520c,null))[_0x77c6('0x47')](handleError(_0xa8520c,null));};exports[_0x77c6('0x48')]=function(_0x9a4971,_0x54c392){var _0x3f7dea={'where':{'id':_0x9a4971['params']['id']}},_0x4ffe3e={};_0x4ffe3e[_0x77c6('0x30')]=_[_0x77c6('0x32')](db[_0x77c6('0x2c')][_0x77c6('0x44')]);_0x3f7dea[_0x77c6('0x34')]=_[_0x77c6('0x45')](_0x4ffe3e[_0x77c6('0x30')],qs[_0x77c6('0x35')](_0x9a4971[_0x77c6('0x31')][_0x77c6('0x35')]));_0x3f7dea[_0x77c6('0x34')]=_0x3f7dea['attributes']['length']?_0x3f7dea['attributes']:_0x4ffe3e['model'];if(_0x9a4971[_0x77c6('0x31')][_0x77c6('0x40')]){_0x3f7dea[_0x77c6('0x41')]=[{'all':!![]}];}_0x3f7dea=_['merge']({},_0x3f7dea,_0x9a4971[_0x77c6('0x3f')]);return db['Attachment'][_0x77c6('0x46')](_0x3f7dea)['then'](handleEntityNotFound(_0x54c392,null))[_0x77c6('0x27')](function(_0x5b3cae){if(_0x5b3cae){var _0x2f22de=_0x5b3cae[_0x77c6('0x49')]({'plain':!![]});_0x2f22de=qs['omit'](_0x2f22de,['id',_0x77c6('0x4a'),_0x77c6('0x4b')]);_0x9a4971[_0x77c6('0x4c')]=_[_0x77c6('0x4d')](_0x9a4971['body'],['id',_0x77c6('0x4a'),_0x77c6('0x4b')]);return db[_0x77c6('0x2c')][_0x77c6('0x4e')](_[_0x77c6('0x3d')](_0x2f22de,_0x9a4971[_0x77c6('0x4c')]),{'include':_0x9a4971[_0x77c6('0x31')][_0x77c6('0x40')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x54c392,0xc9))[_0x77c6('0x47')](handleError(_0x54c392,null));};exports[_0x77c6('0x26')]=function(_0x35ea90,_0x344331){if(_0x35ea90['body']['id']){delete _0x35ea90[_0x77c6('0x4c')]['id'];}return db[_0x77c6('0x2c')][_0x77c6('0x46')]({'where':{'id':_0x35ea90[_0x77c6('0x43')]['id']}})[_0x77c6('0x27')](handleEntityNotFound(_0x344331,null))['then'](saveUpdates(_0x35ea90[_0x77c6('0x4c')],null))[_0x77c6('0x27')](respondWithResult(_0x344331,null))[_0x77c6('0x47')](handleError(_0x344331,null));};exports[_0x77c6('0x4f')]=function(_0x36d493,_0x127370){return db[_0x77c6('0x2c')][_0x77c6('0x46')]({'where':{'id':_0x36d493['params']['id']}})[_0x77c6('0x27')](handleEntityNotFound(_0x127370,null))[_0x77c6('0x27')](removeEntity(_0x127370,null))[_0x77c6('0x47')](handleError(_0x127370,null));};exports[_0x77c6('0x4e')]=function(_0x2f6172,_0x10ee38,_0x3d810e){_0x2f6172['body']['name']=_0x2f6172[_0x77c6('0x50')]['originalname'];_0x2f6172[_0x77c6('0x4c')][_0x77c6('0x51')]=_0x2f6172['file'][_0x77c6('0x52')];_0x2f6172[_0x77c6('0x4c')][_0x77c6('0x2e')]=_0x2f6172[_0x77c6('0x50')][_0x77c6('0x53')];return db[_0x77c6('0x2c')][_0x77c6('0x4e')](_0x2f6172[_0x77c6('0x4c')])[_0x77c6('0x27')](respondWithResult(_0x10ee38,0xc9))[_0x77c6('0x47')](handleError(_0x10ee38,null));};exports[_0x77c6('0x54')]=function(_0x4a495e,_0x31167c,_0x203a99){return db[_0x77c6('0x2c')][_0x77c6('0x55')]({'where':{'id':_0x4a495e[_0x77c6('0x43')]['id']},'raw':!![]})[_0x77c6('0x27')](handleEntityNotFound(_0x31167c,null))[_0x77c6('0x27')](function(_0x117ac2){if(_0x117ac2){var _0xad5d01=_0x117ac2[_0x77c6('0x56')]!==null;var _0x44af45=path[_0x77c6('0x57')](config[_0x77c6('0x58')],_0x77c6('0x59'));if(_0xad5d01){_0x44af45=path[_0x77c6('0x57')](_0x44af45,_0x77c6('0x5a'));}var _0x334937=path[_0x77c6('0x57')](_0x44af45,_0x117ac2[_0x77c6('0x51')]);return _0x31167c['download'](_0x334937);}})['catch'](handleError(_0x31167c,null));};
\ No newline at end of file
+var _0xd095=['update','then','destroy','sendStatus','error','stack','name','send','Attachment','rawAttributes','fieldName','type','model','map','keys','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','show','params','length','find','catch','clone','get','omit','createdAt','updatedAt','body','create','file','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','reject','save'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd095,0x141));var _0x5d09=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0xd095[_0x49b207];return _0x2dc8fa;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5d09('0x0'));var jsonpatch=require(_0x5d09('0x1'));var rp=require(_0x5d09('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5d09('0x3'));var util=require(_0x5d09('0x4'));var path=require(_0x5d09('0x5'));var sox=require(_0x5d09('0x6'));var csv=require(_0x5d09('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5d09('0x8'));var _=require(_0x5d09('0x9'));var squel=require(_0x5d09('0xa'));var crypto=require(_0x5d09('0xb'));var jsforce=require(_0x5d09('0xc'));var deskjs=require(_0x5d09('0xd'));var toCsv=require(_0x5d09('0x7'));var querystring=require('querystring');var Papa=require(_0x5d09('0xe'));var Redis=require('ioredis');var authService=require(_0x5d09('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5d09('0x10'));var hardwareService=require(_0x5d09('0x11'));var logger=require(_0x5d09('0x12'))(_0x5d09('0x13'));var utils=require(_0x5d09('0x14'));var config=require(_0x5d09('0x15'));var licenseUtil=require(_0x5d09('0x16'));var db=require(_0x5d09('0x17'))['db'];function respondWithStatusCode(_0x781b49,_0x103209){_0x103209=_0x103209||0xcc;return function(_0x49b2a1){if(_0x49b2a1){return _0x781b49['sendStatus'](_0x103209);}return _0x781b49[_0x5d09('0x18')](_0x103209)[_0x5d09('0x19')]();};}function respondWithResult(_0x168aaf,_0x1ab52a){_0x1ab52a=_0x1ab52a||0xc8;return function(_0xf34723){if(_0xf34723){return _0x168aaf[_0x5d09('0x18')](_0x1ab52a)[_0x5d09('0x1a')](_0xf34723);}};}function respondWithFilteredResult(_0x29dffe,_0x3adb12){return function(_0x144bd3){if(_0x144bd3){var _0xcc37cb=typeof _0x3adb12['offset']===_0x5d09('0x1b')&&typeof _0x3adb12[_0x5d09('0x1c')]===_0x5d09('0x1b');var _0x5e9b75=_0x144bd3[_0x5d09('0x1d')];var _0x120871=_0xcc37cb?0x0:_0x3adb12['offset'];var _0x51de50=_0xcc37cb?_0x144bd3[_0x5d09('0x1d')]:_0x3adb12[_0x5d09('0x1e')]+_0x3adb12[_0x5d09('0x1c')];var _0x5a357c;if(_0x51de50>=_0x5e9b75){_0x51de50=_0x5e9b75;_0x5a357c=0xc8;}else{_0x5a357c=0xce;}_0x29dffe['status'](_0x5a357c);return _0x29dffe[_0x5d09('0x1f')]('Content-Range',_0x120871+'-'+_0x51de50+'/'+_0x5e9b75)[_0x5d09('0x1a')](_0x144bd3);}return null;};}function patchUpdates(_0xa32479){return function(_0x5c8703){try{jsonpatch[_0x5d09('0x20')](_0x5c8703,_0xa32479,!![]);}catch(_0x2b66a5){return BPromise[_0x5d09('0x21')](_0x2b66a5);}return _0x5c8703[_0x5d09('0x22')]();};}function saveUpdates(_0x54f6cd,_0x4ebdb4){return function(_0x38ec13){if(_0x38ec13){return _0x38ec13[_0x5d09('0x23')](_0x54f6cd)[_0x5d09('0x24')](function(_0x12b598){return _0x12b598;});}return null;};}function removeEntity(_0x235d1e,_0x4c4485){return function(_0x30507d){if(_0x30507d){return _0x30507d[_0x5d09('0x25')]()[_0x5d09('0x24')](function(){_0x235d1e[_0x5d09('0x18')](0xcc)[_0x5d09('0x19')]();});}};}function handleEntityNotFound(_0x34430d,_0x2f9f04){return function(_0x53313a){if(!_0x53313a){_0x34430d[_0x5d09('0x26')](0x194);}return _0x53313a;};}function handleError(_0x509df5,_0x24e6ff){_0x24e6ff=_0x24e6ff||0x1f4;return function(_0x302951){logger[_0x5d09('0x27')](_0x302951[_0x5d09('0x28')]);if(_0x302951[_0x5d09('0x29')]){delete _0x302951['name'];}_0x509df5[_0x5d09('0x18')](_0x24e6ff)[_0x5d09('0x2a')](_0x302951);};}exports['index']=function(_0x2b5a6f,_0x583ea6){var _0x36176a={},_0x7953ed={},_0x16657a={'count':0x0,'rows':[]};var _0x5b19e6=_['map'](db[_0x5d09('0x2b')][_0x5d09('0x2c')],function(_0x27696){return{'name':_0x27696[_0x5d09('0x2d')],'type':_0x27696[_0x5d09('0x2e')]['key']};});_0x7953ed[_0x5d09('0x2f')]=_[_0x5d09('0x30')](_0x5b19e6,_0x5d09('0x29'));_0x7953ed['query']=_[_0x5d09('0x31')](_0x2b5a6f['query']);_0x7953ed[_0x5d09('0x32')]=_['intersection'](_0x7953ed[_0x5d09('0x2f')],_0x7953ed[_0x5d09('0x33')]);_0x36176a[_0x5d09('0x34')]=_[_0x5d09('0x35')](_0x7953ed[_0x5d09('0x2f')],qs['fields'](_0x2b5a6f[_0x5d09('0x33')][_0x5d09('0x36')]));_0x36176a['attributes']=_0x36176a['attributes']['length']?_0x36176a[_0x5d09('0x34')]:_0x7953ed[_0x5d09('0x2f')];if(!_0x2b5a6f[_0x5d09('0x33')][_0x5d09('0x37')](_0x5d09('0x38'))){_0x36176a['limit']=qs[_0x5d09('0x1c')](_0x2b5a6f['query'][_0x5d09('0x1c')]);_0x36176a[_0x5d09('0x1e')]=qs[_0x5d09('0x1e')](_0x2b5a6f['query']['offset']);}_0x36176a[_0x5d09('0x39')]=qs[_0x5d09('0x3a')](_0x2b5a6f[_0x5d09('0x33')]['sort']);_0x36176a[_0x5d09('0x3b')]=qs[_0x5d09('0x32')](_[_0x5d09('0x3c')](_0x2b5a6f[_0x5d09('0x33')],_0x7953ed[_0x5d09('0x32')]),_0x5b19e6);if(_0x2b5a6f['query']['filter']){_0x36176a[_0x5d09('0x3b')]=_[_0x5d09('0x3d')](_0x36176a[_0x5d09('0x3b')],{'$or':_['map'](_0x5b19e6,function(_0x3c3e81){if(_0x3c3e81[_0x5d09('0x2e')]!=='VIRTUAL'){var _0x5be591={};_0x5be591[_0x3c3e81[_0x5d09('0x29')]]={'$like':'%'+_0x2b5a6f[_0x5d09('0x33')]['filter']+'%'};return _0x5be591;}})});}_0x36176a=_['merge']({},_0x36176a,_0x2b5a6f[_0x5d09('0x3e')]);var _0x38017b={'where':_0x36176a['where']};return db[_0x5d09('0x2b')][_0x5d09('0x1d')](_0x38017b)['then'](function(_0x1c22f3){_0x16657a[_0x5d09('0x1d')]=_0x1c22f3;if(_0x2b5a6f[_0x5d09('0x33')][_0x5d09('0x3f')]){_0x36176a[_0x5d09('0x40')]=[{'all':!![]}];}return db[_0x5d09('0x2b')][_0x5d09('0x41')](_0x36176a);})[_0x5d09('0x24')](function(_0x508a20){_0x16657a['rows']=_0x508a20;return _0x16657a;})[_0x5d09('0x24')](respondWithFilteredResult(_0x583ea6,_0x36176a))['catch'](handleError(_0x583ea6,null));};exports[_0x5d09('0x42')]=function(_0x470dcc,_0x58d7e7){var _0x19e4bc={'raw':!![],'where':{'id':_0x470dcc[_0x5d09('0x43')]['id']}},_0x2c976={};_0x2c976[_0x5d09('0x2f')]=_['keys'](db[_0x5d09('0x2b')][_0x5d09('0x2c')]);_0x2c976[_0x5d09('0x33')]=_[_0x5d09('0x31')](_0x470dcc[_0x5d09('0x33')]);_0x2c976['filters']=_[_0x5d09('0x35')](_0x2c976[_0x5d09('0x2f')],_0x2c976[_0x5d09('0x33')]);_0x19e4bc[_0x5d09('0x34')]=_['intersection'](_0x2c976['model'],qs[_0x5d09('0x36')](_0x470dcc[_0x5d09('0x33')]['fields']));_0x19e4bc[_0x5d09('0x34')]=_0x19e4bc[_0x5d09('0x34')][_0x5d09('0x44')]?_0x19e4bc['attributes']:_0x2c976[_0x5d09('0x2f')];if(_0x470dcc[_0x5d09('0x33')][_0x5d09('0x3f')]){_0x19e4bc[_0x5d09('0x40')]=[{'all':!![]}];}_0x19e4bc=_[_0x5d09('0x3d')]({},_0x19e4bc,_0x470dcc[_0x5d09('0x3e')]);return db['Attachment'][_0x5d09('0x45')](_0x19e4bc)['then'](handleEntityNotFound(_0x58d7e7,null))[_0x5d09('0x24')](respondWithResult(_0x58d7e7,null))[_0x5d09('0x46')](handleError(_0x58d7e7,null));};exports[_0x5d09('0x47')]=function(_0x4ce9f9,_0xf685ab){var _0x4e004d={'where':{'id':_0x4ce9f9[_0x5d09('0x43')]['id']}},_0x1d1057={};_0x1d1057[_0x5d09('0x2f')]=_['keys'](db[_0x5d09('0x2b')][_0x5d09('0x2c')]);_0x4e004d[_0x5d09('0x34')]=_[_0x5d09('0x35')](_0x1d1057['model'],qs[_0x5d09('0x36')](_0x4ce9f9[_0x5d09('0x33')][_0x5d09('0x36')]));_0x4e004d[_0x5d09('0x34')]=_0x4e004d[_0x5d09('0x34')]['length']?_0x4e004d[_0x5d09('0x34')]:_0x1d1057[_0x5d09('0x2f')];if(_0x4ce9f9['query'][_0x5d09('0x3f')]){_0x4e004d[_0x5d09('0x40')]=[{'all':!![]}];}_0x4e004d=_[_0x5d09('0x3d')]({},_0x4e004d,_0x4ce9f9[_0x5d09('0x3e')]);return db[_0x5d09('0x2b')]['find'](_0x4e004d)[_0x5d09('0x24')](handleEntityNotFound(_0xf685ab,null))['then'](function(_0x558aae){if(_0x558aae){var _0xd863bb=_0x558aae[_0x5d09('0x48')]({'plain':!![]});_0xd863bb=qs[_0x5d09('0x49')](_0xd863bb,['id',_0x5d09('0x4a'),_0x5d09('0x4b')]);_0x4ce9f9[_0x5d09('0x4c')]=_[_0x5d09('0x49')](_0x4ce9f9[_0x5d09('0x4c')],['id',_0x5d09('0x4a'),_0x5d09('0x4b')]);return db[_0x5d09('0x2b')][_0x5d09('0x4d')](_[_0x5d09('0x3d')](_0xd863bb,_0x4ce9f9[_0x5d09('0x4c')]),{'include':_0x4ce9f9[_0x5d09('0x33')][_0x5d09('0x3f')]?[{'all':!![]}]:undefined});}})[_0x5d09('0x24')](respondWithResult(_0xf685ab,0xc9))[_0x5d09('0x46')](handleError(_0xf685ab,null));};exports[_0x5d09('0x23')]=function(_0x129688,_0x2d48f8){if(_0x129688[_0x5d09('0x4c')]['id']){delete _0x129688['body']['id'];}return db['Attachment'][_0x5d09('0x45')]({'where':{'id':_0x129688[_0x5d09('0x43')]['id']}})[_0x5d09('0x24')](handleEntityNotFound(_0x2d48f8,null))['then'](saveUpdates(_0x129688[_0x5d09('0x4c')],null))['then'](respondWithResult(_0x2d48f8,null))[_0x5d09('0x46')](handleError(_0x2d48f8,null));};exports[_0x5d09('0x25')]=function(_0x480b53,_0x25324d){return db[_0x5d09('0x2b')]['find']({'where':{'id':_0x480b53[_0x5d09('0x43')]['id']}})[_0x5d09('0x24')](handleEntityNotFound(_0x25324d,null))['then'](removeEntity(_0x25324d,null))[_0x5d09('0x46')](handleError(_0x25324d,null));};exports[_0x5d09('0x4d')]=function(_0x2e7f12,_0x23746b,_0x4faacf){_0x2e7f12[_0x5d09('0x4c')]['name']=_0x2e7f12['file']['originalname'];_0x2e7f12['body']['basename']=_0x2e7f12[_0x5d09('0x4e')][_0x5d09('0x4f')];_0x2e7f12['body'][_0x5d09('0x2e')]=_0x2e7f12[_0x5d09('0x4e')][_0x5d09('0x50')];return db[_0x5d09('0x2b')][_0x5d09('0x4d')](_0x2e7f12[_0x5d09('0x4c')])['then'](respondWithResult(_0x23746b,0xc9))[_0x5d09('0x46')](handleError(_0x23746b,null));};exports[_0x5d09('0x51')]=function(_0x2a23d2,_0x3bb222,_0xf16d81){return db['Attachment'][_0x5d09('0x52')]({'where':{'id':_0x2a23d2['params']['id']},'raw':!![]})[_0x5d09('0x24')](handleEntityNotFound(_0x3bb222,null))[_0x5d09('0x24')](function(_0x23986b){if(_0x23986b){var _0x3a2ee7=_0x23986b[_0x5d09('0x53')]!==null;var _0x116bcb=path[_0x5d09('0x54')](config[_0x5d09('0x55')],_0x5d09('0x56'));if(_0x3a2ee7){_0x116bcb=path['join'](_0x116bcb,_0x5d09('0x57'));}var _0x14377d=path['join'](_0x116bcb,_0x23986b[_0x5d09('0x58')]);return _0x3bb222[_0x5d09('0x51')](_0x14377d);}})[_0x5d09('0x46')](handleError(_0x3bb222,null));};
\ No newline at end of file
index d33e27c..3457716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9687=['path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5cc85f,_0x57bcc4){var _0x29d3cc=function(_0x2b2dc7){while(--_0x2b2dc7){_0x5cc85f['push'](_0x5cc85f['shift']());}};_0x29d3cc(++_0x57bcc4);}(_0x9687,0xda));var _0x7968=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x9687[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x7968('0x0'));var util=require(_0x7968('0x1'));var logger=require(_0x7968('0x2'))(_0x7968('0x3'));var moment=require(_0x7968('0x4'));var BPromise=require(_0x7968('0x5'));var rp=require(_0x7968('0x6'));var fs=require('fs');var path=require(_0x7968('0x7'));var rimraf=require(_0x7968('0x8'));var config=require(_0x7968('0x9'));var attributes=require(_0x7968('0xa'));module[_0x7968('0xb')]=function(_0x3945f1,_0x36b28a){return _0x3945f1[_0x7968('0xc')](_0x7968('0xd'),attributes,{'tableName':_0x7968('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85d4=['api','moment','bluebird','request-promise','path','./attachment.attributes','define','Attachment','attachments','lodash','../../config/logger'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x85d4,0x1cc));var _0x485d=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x85d4[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x485d('0x0'));var util=require('util');var logger=require(_0x485d('0x1'))(_0x485d('0x2'));var moment=require(_0x485d('0x3'));var BPromise=require(_0x485d('0x4'));var rp=require(_0x485d('0x5'));var fs=require('fs');var path=require(_0x485d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x485d('0x7'));module['exports']=function(_0x14adcf,_0x1d2201){return _0x14adcf[_0x485d('0x8')](_0x485d('0x9'),attributes,{'tableName':_0x485d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7899bac..bf35584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff96=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Attachment,\x20%s,\x20%s','catch','body','options','raw','CreateAttachment'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xff96,0x179));var _0x6ff9=function(_0x536380,_0x3f79d5){_0x536380=_0x536380-0x0;var _0xd2229d=_0xff96[_0x536380];return _0xd2229d;};'use strict';var _=require(_0x6ff9('0x0'));var util=require(_0x6ff9('0x1'));var moment=require(_0x6ff9('0x2'));var BPromise=require(_0x6ff9('0x3'));var rs=require(_0x6ff9('0x4'));var fs=require('fs');var Redis=require(_0x6ff9('0x5'));var db=require(_0x6ff9('0x6'))['db'];var utils=require(_0x6ff9('0x7'));var logger=require(_0x6ff9('0x8'))(_0x6ff9('0x9'));var config=require(_0x6ff9('0xa'));var jayson=require(_0x6ff9('0xb'));var client=jayson['client'][_0x6ff9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5509ee,_0x502cf2,_0x4f982b){return new BPromise(function(_0x5d56f4,_0x2b1b7d){return client[_0x6ff9('0xd')](_0x5509ee,_0x4f982b)[_0x6ff9('0xe')](function(_0x1ce5a3){logger[_0x6ff9('0xf')]('Attachment,\x20%s,\x20%s',_0x502cf2,_0x6ff9('0x10'));logger[_0x6ff9('0x11')](_0x6ff9('0x12'),_0x502cf2,_0x6ff9('0x10'),JSON[_0x6ff9('0x13')](_0x1ce5a3));if(_0x1ce5a3[_0x6ff9('0x14')]){if(_0x1ce5a3[_0x6ff9('0x14')][_0x6ff9('0x15')]===0x1f4){logger[_0x6ff9('0x14')]('Attachment,\x20%s,\x20%s',_0x502cf2,_0x1ce5a3['error'][_0x6ff9('0x16')]);return _0x2b1b7d(_0x1ce5a3['error'][_0x6ff9('0x16')]);}logger[_0x6ff9('0x14')](_0x6ff9('0x17'),_0x502cf2,_0x1ce5a3['error']['message']);return _0x5d56f4(_0x1ce5a3[_0x6ff9('0x14')][_0x6ff9('0x16')]);}else{logger[_0x6ff9('0xf')](_0x6ff9('0x17'),_0x502cf2,'request\x20sent');_0x5d56f4(_0x1ce5a3['result'][_0x6ff9('0x16')]);}})[_0x6ff9('0x18')](function(_0x3d4268){logger[_0x6ff9('0x14')](_0x6ff9('0x17'),_0x502cf2,_0x3d4268);_0x2b1b7d(_0x3d4268);});});}exports['CreateAttachment']=function(_0xc00da6){var _0x4756be=this;return new Promise(function(_0xc7724f,_0x5b0a94){return db['Attachment']['create'](_0xc00da6[_0x6ff9('0x19')],{'raw':_0xc00da6[_0x6ff9('0x1a')]?_0xc00da6[_0x6ff9('0x1a')][_0x6ff9('0x1b')]===undefined?!![]:![]:!![]})[_0x6ff9('0xe')](function(_0x4e926e){logger[_0x6ff9('0xf')](_0x6ff9('0x1c'),_0xc00da6);logger[_0x6ff9('0x11')](_0x6ff9('0x1c'),_0xc00da6,JSON[_0x6ff9('0x13')](_0x4e926e));_0xc7724f(_0x4e926e);})[_0x6ff9('0x18')](function(_0x50f207){logger[_0x6ff9('0x14')](_0x6ff9('0x1c'),_0x50f207['message'],_0xc00da6);_0x5b0a94(_0x4756be[_0x6ff9('0x14')](0x1f4,_0x50f207[_0x6ff9('0x16')]));});});};
\ No newline at end of file
+var _0x9567=['../../config/utils','../../config/logger','../../config/environment','client','request','then','info','Attachment,\x20%s,\x20%s','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateAttachment','create','options','stringify','lodash','util','moment','bluebird','randomstring'];(function(_0x49ec69,_0x3ae9dc){var _0x2eaed3=function(_0x287401){while(--_0x287401){_0x49ec69['push'](_0x49ec69['shift']());}};_0x2eaed3(++_0x3ae9dc);}(_0x9567,0xdc));var _0x7956=function(_0x396846,_0x5201df){_0x396846=_0x396846-0x0;var _0x4609d5=_0x9567[_0x396846];return _0x4609d5;};'use strict';var _=require(_0x7956('0x0'));var util=require(_0x7956('0x1'));var moment=require(_0x7956('0x2'));var BPromise=require(_0x7956('0x3'));var rs=require(_0x7956('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7956('0x5'));var logger=require(_0x7956('0x6'))('rpc');var config=require(_0x7956('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7956('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1819b6,_0x31b50d,_0x48b2b3){return new BPromise(function(_0x3c213a,_0x50038a){return client[_0x7956('0x9')](_0x1819b6,_0x48b2b3)[_0x7956('0xa')](function(_0x53310c){logger[_0x7956('0xb')](_0x7956('0xc'),_0x31b50d,'request\x20sent');logger[_0x7956('0xd')](_0x7956('0xe'),_0x31b50d,_0x7956('0xf'),JSON['stringify'](_0x53310c));if(_0x53310c[_0x7956('0x10')]){if(_0x53310c[_0x7956('0x10')][_0x7956('0x11')]===0x1f4){logger[_0x7956('0x10')]('Attachment,\x20%s,\x20%s',_0x31b50d,_0x53310c[_0x7956('0x10')][_0x7956('0x12')]);return _0x50038a(_0x53310c[_0x7956('0x10')]['message']);}logger[_0x7956('0x10')](_0x7956('0xc'),_0x31b50d,_0x53310c[_0x7956('0x10')][_0x7956('0x12')]);return _0x3c213a(_0x53310c[_0x7956('0x10')][_0x7956('0x12')]);}else{logger[_0x7956('0xb')](_0x7956('0xc'),_0x31b50d,_0x7956('0xf'));_0x3c213a(_0x53310c[_0x7956('0x13')][_0x7956('0x12')]);}})[_0x7956('0x14')](function(_0x18ae51){logger[_0x7956('0x10')](_0x7956('0xc'),_0x31b50d,_0x18ae51);_0x50038a(_0x18ae51);});});}exports[_0x7956('0x15')]=function(_0x5e6b90){var _0x5c3afb=this;return new Promise(function(_0x10b29c,_0x811122){return db['Attachment'][_0x7956('0x16')](_0x5e6b90['body'],{'raw':_0x5e6b90[_0x7956('0x17')]?_0x5e6b90[_0x7956('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x7956('0xa')](function(_0x2e31cd){logger[_0x7956('0xb')]('CreateAttachment',_0x5e6b90);logger[_0x7956('0xd')]('CreateAttachment',_0x5e6b90,JSON[_0x7956('0x18')](_0x2e31cd));_0x10b29c(_0x2e31cd);})['catch'](function(_0x427500){logger[_0x7956('0x10')](_0x7956('0x15'),_0x427500[_0x7956('0x12')],_0x5e6b90);_0x811122(_0x5c3afb['error'](0x1f4,_0x427500[_0x7956('0x12')]));});});};
\ No newline at end of file
index 00494bb..1352923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x0b0e,0x187));var _0xe0b0=function(_0x367361,_0x311488){_0x367361=_0x367361-0x0;var _0x195d2d=_0x0b0e[_0x367361];return _0x195d2d;};'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
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','download','/:id/clone','clone','join','root','server/files/attachments/','%s-%s','now','originalname','replace','post','single','file','create','put','update','delete','destroy','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdb28,0x106));var _0x8db2=function(_0x1deb2a,_0x40c861){_0x1deb2a=_0x1deb2a-0x0;var _0x487f3a=_0xdb28[_0x1deb2a];return _0x487f3a;};'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('./attachment.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['post'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1d9371,_0x150942,_0x576475){_0x576475(null,path[_0x8db2('0x11')](config[_0x8db2('0x12')],_0x8db2('0x13')));},'filename':function(_0x204f49,_0x37d017,_0x559fb1){_0x559fb1(null,util['format'](_0x8db2('0x14'),Date[_0x8db2('0x15')](),_0x37d017[_0x8db2('0x16')][_0x8db2('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x8db2('0x18')]('/',upload[_0x8db2('0x19')](_0x8db2('0x1a')),controller[_0x8db2('0x1b')]);router[_0x8db2('0x1c')](_0x8db2('0xb'),auth['isAuthenticated'](),controller[_0x8db2('0x1d')]);router[_0x8db2('0x1e')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1f')]);module[_0x8db2('0x20')]=router;
\ No newline at end of file
index de7bd75..585eaa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f6b=['profile','email','callback','use','clientID','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','clearBlockUser','getLicense','catch','passport','Strategy','moment','../../mysqldb','../../config/environment','signToken','../../config/utils','authenticate','google','/login'];(function(_0x19635f,_0x564859){var _0x482132=function(_0x177ea7){while(--_0x177ea7){_0x19635f['push'](_0x19635f['shift']());}};_0x482132(++_0x564859);}(_0x4f6b,0x16c));var _0xb4f6=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x4f6b[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var passport=require(_0xb4f6('0x0'));var GoogleStrategy=require('passport-google-oauth20')[_0xb4f6('0x1')];var moment=require(_0xb4f6('0x2'));var db=require(_0xb4f6('0x3'))['db'];var config=require(_0xb4f6('0x4'));var signToken=require('../../components/auth/service')[_0xb4f6('0x5')];var utils=require(_0xb4f6('0x6'));exports['login']=passport[_0xb4f6('0x7')](_0xb4f6('0x8'),{'failureRedirect':_0xb4f6('0x9'),'scope':[_0xb4f6('0xa'),_0xb4f6('0xb')],'session':![]});exports[_0xb4f6('0xc')]=passport[_0xb4f6('0x7')]('google',{'failureRedirect':_0xb4f6('0x9'),'session':![]});passport[_0xb4f6('0xd')](new GoogleStrategy({'clientID':config['google']?config[_0xb4f6('0x8')][_0xb4f6('0xe')]:'id','clientSecret':config[_0xb4f6('0x8')]?config[_0xb4f6('0x8')]['clientSecret']:'secret','callbackURL':config[_0xb4f6('0x8')]?config[_0xb4f6('0x8')][_0xb4f6('0xf')]:''},function(_0xf6a990,_0x5a488c,_0x26b0da,_0xddad96){var _0x986ef3,_0x4831de;return db['Setting'][_0xb4f6('0x10')]({'where':{'id':0x1},'attributes':[_0xb4f6('0x11'),_0xb4f6('0x12')],'raw':!![]})[_0xb4f6('0x13')](function(_0xa1cec5){_0x986ef3=_0xa1cec5;return db[_0xb4f6('0x14')][_0xb4f6('0x15')]({'where':{'email':_[_0xb4f6('0x16')](_0x26b0da['emails'],_0xb4f6('0x17')),'role':{'$or':[_0xb4f6('0x18'),'user',_0xb4f6('0x19')]}}});})[_0xb4f6('0x13')](function(_0x11def9){_0x4831de=_0x11def9;if(_0x4831de){if(_0x4831de[_0xb4f6('0x1a')]){return _0xddad96(_0xb4f6('0x1b'));}else if(_0x986ef3[_0xb4f6('0x12')]>0x0){if(_0x4831de[_0xb4f6('0x1c')]){if(moment(_0x4831de[_0xb4f6('0x1d')])[_0xb4f6('0x1e')](_0x986ef3[_0xb4f6('0x12')],'minutes')>moment()){return _0xddad96('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xb4f6('0x1f')](_0x4831de,0x0,![],null)[_0xb4f6('0x13')](function(){return utils['getLicense'](_0x4831de);})[_0xb4f6('0x13')](function(){return _0xddad96(null,_0x4831de);});}}else{return utils[_0xb4f6('0x20')](_0x4831de)[_0xb4f6('0x13')](function(){return _0xddad96(null,_0x4831de);});}}else{return utils[_0xb4f6('0x20')](_0x4831de)['then'](function(){return _0xddad96(null,_0x4831de);});}}return _0xddad96(_0xb4f6('0x1b'));})[_0xb4f6('0x21')](function(_0x143281){_0xddad96(_0x143281);});}));
\ No newline at end of file
+var _0x6c07=['/login','profile','email','callback','use','clientSecret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','emails','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','moment','../../mysqldb','../../components/auth/service','../../config/utils','authenticate','google'];(function(_0x278b31,_0xb9f2e2){var _0x341b20=function(_0x1ea6db){while(--_0x1ea6db){_0x278b31['push'](_0x278b31['shift']());}};_0x341b20(++_0xb9f2e2);}(_0x6c07,0x86));var _0x76c0=function(_0x4dc824,_0x52618f){_0x4dc824=_0x4dc824-0x0;var _0x325685=_0x6c07[_0x4dc824];return _0x325685;};'use strict';var _=require(_0x76c0('0x0'));var passport=require(_0x76c0('0x1'));var GoogleStrategy=require(_0x76c0('0x2'))[_0x76c0('0x3')];var moment=require(_0x76c0('0x4'));var db=require(_0x76c0('0x5'))['db'];var config=require('../../config/environment');var signToken=require(_0x76c0('0x6'))['signToken'];var utils=require(_0x76c0('0x7'));exports['login']=passport[_0x76c0('0x8')](_0x76c0('0x9'),{'failureRedirect':_0x76c0('0xa'),'scope':[_0x76c0('0xb'),_0x76c0('0xc')],'session':![]});exports[_0x76c0('0xd')]=passport[_0x76c0('0x8')](_0x76c0('0x9'),{'failureRedirect':_0x76c0('0xa'),'session':![]});passport[_0x76c0('0xe')](new GoogleStrategy({'clientID':config[_0x76c0('0x9')]?config['google']['clientID']:'id','clientSecret':config[_0x76c0('0x9')]?config[_0x76c0('0x9')][_0x76c0('0xf')]:'secret','callbackURL':config['google']?config[_0x76c0('0x9')][_0x76c0('0x10')]:''},function(_0x314db1,_0x1b72e9,_0x13e15c,_0x4e5250){var _0x4e6483,_0x3cb63a;return db[_0x76c0('0x11')][_0x76c0('0x12')]({'where':{'id':0x1},'attributes':[_0x76c0('0x13'),_0x76c0('0x14')],'raw':!![]})[_0x76c0('0x15')](function(_0x197665){_0x4e6483=_0x197665;return db[_0x76c0('0x16')][_0x76c0('0x17')]({'where':{'email':_[_0x76c0('0x18')](_0x13e15c[_0x76c0('0x19')],'value'),'role':{'$or':['admin',_0x76c0('0x1a'),_0x76c0('0x1b')]}}});})['then'](function(_0x5ce65c){_0x3cb63a=_0x5ce65c;if(_0x3cb63a){if(_0x3cb63a[_0x76c0('0x1c')]){return _0x4e5250(_0x76c0('0x1d'));}else if(_0x4e6483[_0x76c0('0x14')]>0x0){if(_0x3cb63a['blocked']){if(moment(_0x3cb63a[_0x76c0('0x1e')])[_0x76c0('0x1f')](_0x4e6483[_0x76c0('0x14')],_0x76c0('0x20'))>moment()){return _0x4e5250(_0x76c0('0x1d'));}else{return utils[_0x76c0('0x21')](_0x3cb63a,0x0,![],null)[_0x76c0('0x15')](function(){return utils[_0x76c0('0x22')](_0x3cb63a);})[_0x76c0('0x15')](function(){return _0x4e5250(null,_0x3cb63a);});}}else{return utils[_0x76c0('0x22')](_0x3cb63a)[_0x76c0('0x15')](function(){return _0x4e5250(null,_0x3cb63a);});}}else{return utils[_0x76c0('0x22')](_0x3cb63a)[_0x76c0('0x15')](function(){return _0x4e5250(null,_0x3cb63a);});}}return _0x4e5250('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x76c0('0x23')](function(_0x2cd0f6){_0x4e5250(_0x2cd0f6);});}));
\ No newline at end of file
index 4c407bf..bc11348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a5=['login','callback','isMiddleware','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','get'];(function(_0x1f5939,_0x402d39){var _0x5b695c=function(_0x39f54f){while(--_0x39f54f){_0x1f5939['push'](_0x1f5939['shift']());}};_0x5b695c(++_0x402d39);}(_0x20a5,0x7e));var _0x520a=function(_0x4be83e,_0x788cc4){_0x4be83e=_0x4be83e-0x0;var _0xfe8106=_0x20a5[_0x4be83e];return _0xfe8106;};'use strict';var express=require(_0x520a('0x0'));var passport=require(_0x520a('0x1'));var router=express[_0x520a('0x2')]();var controller=require(_0x520a('0x3'));var userController=require(_0x520a('0x4'));var authService=require('../../components/auth/service');router[_0x520a('0x5')]('/',controller[_0x520a('0x6')]);router[_0x520a('0x5')]('/callback',controller[_0x520a('0x7')],authService[_0x520a('0x8')],userController['login'],authService[_0x520a('0x9')]);module[_0x520a('0xa')]=router;
\ No newline at end of file
+var _0x7070=['/callback','isMiddleware','setTokenCookie','exports','Router','../user/user.controller.js','get','login'];(function(_0xc74331,_0x3052e1){var _0x35d310=function(_0x4263d9){while(--_0x4263d9){_0xc74331['push'](_0xc74331['shift']());}};_0x35d310(++_0x3052e1);}(_0x7070,0xa4));var _0x0707=function(_0x2c278c,_0x112e68){_0x2c278c=_0x2c278c-0x0;var _0x2871d4=_0x7070[_0x2c278c];return _0x2871d4;};'use strict';var express=require('express');var passport=require('passport');var router=express[_0x0707('0x0')]();var controller=require('./authGoogle.controller');var userController=require(_0x0707('0x1'));var authService=require('../../components/auth/service');router[_0x0707('0x2')]('/',controller[_0x0707('0x3')]);router[_0x0707('0x2')](_0x0707('0x4'),controller['callback'],authService[_0x0707('0x5')],userController[_0x0707('0x3')],authService[_0x0707('0x6')]);module[_0x0707('0x7')]=router;
\ No newline at end of file
index ae39317..199799b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9336=['allowedLoginAttempts','getLicense','catch','MailAccount','find','email','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','authentication','auth','user','pass','merge','\x22%s\x22\x20<%s>','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','status','local','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','Setting','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','Reset\x20Email\x20sent!','reset','params','token','now','securePassword','enforcePasswordHistory','validatePasswordPattern','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','use','util','passport','passport-local','Strategy','lodash','randomstring','moment','../../mysqldb','../../config/utils','client','http','findOne','name','password','salt','role','disabled','blocked','loginAttempts','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','blockedAt','add','blockDuration','minutes','clearBlockUser'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x9336,0x1a5));var _0x6933=function(_0x55e019,_0x4d0746){_0x55e019=_0x55e019-0x0;var _0x12abff=_0x9336[_0x55e019];return _0x12abff;};'use strict';var util=require(_0x6933('0x0'));var passport=require(_0x6933('0x1'));var LocalStrategy=require(_0x6933('0x2'))[_0x6933('0x3')];var jayson=require('jayson/promise');var _=require(_0x6933('0x4'));var rs=require(_0x6933('0x5'));var moment=require(_0x6933('0x6'));var db=require(_0x6933('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x6933('0x8'));var client=jayson[_0x6933('0x9')][_0x6933('0xa')]({'port':0x232b});function localAuthenticate(_0x16d1e3,_0x121a58,_0x247436,_0x3c95ab){var _0x3ed9b2,_0x3b7df7;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})['then'](function(_0x17a965){_0x3ed9b2=_0x17a965;return _0x16d1e3[_0x6933('0xb')]({'attributes':['id',_0x6933('0xc'),_0x6933('0xd'),_0x6933('0xe'),_0x6933('0xf'),_0x6933('0x10'),_0x6933('0x11'),'blockedAt',_0x6933('0x12')],'where':{'name':_0x121a58,'role':{'$or':[_0x6933('0x13'),'user',_0x6933('0x14')]}}});})['then'](function(_0x28be49){if(!_0x28be49||_0x28be49&&_0x28be49[_0x6933('0xc')]!==_0x121a58){throw new Error(_0x6933('0x15'));}else{_0x3b7df7=_0x28be49;return _0x3b7df7;}})[_0x6933('0x16')](function(){_0x3b7df7[_0x6933('0x17')](_0x247436,function(_0x1e6ec8,_0x2fcba2){var _0x9cc7d=_0x3b7df7[_0x6933('0x12')]+0x1;if(_0x1e6ec8){return _0x3c95ab(_0x1e6ec8);}else if(!_0x2fcba2){if(_0x3b7df7['disabled']){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else if(_0x3ed9b2['allowedLoginAttempts']>0x0){if(_0x3b7df7[_0x6933('0x11')]){if(_0x3ed9b2['blockDuration']>0x0){if(moment(_0x3b7df7[_0x6933('0x18')])[_0x6933('0x19')](_0x3ed9b2[_0x6933('0x1a')],_0x6933('0x1b'))>moment()){return _0x3c95ab(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x3b7df7,_0x9cc7d,![],null)[_0x6933('0x16')](function(){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});});}}else{return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}}else{if(_0x9cc7d>=_0x3ed9b2['allowedLoginAttempts']){return utils[_0x6933('0x1c')](_0x3b7df7,0x0,!![],moment())[_0x6933('0x16')](function(){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});});}else{return utils[_0x6933('0x1c')](_0x3b7df7,_0x9cc7d,![],null)[_0x6933('0x16')](function(){return _0x3c95ab(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}}else{if(_0x3b7df7['disabled']){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else if(_0x3ed9b2[_0x6933('0x1d')]>0x0){if(_0x3b7df7['blocked']){if(_0x3ed9b2[_0x6933('0x1a')]>0x0){if(moment(_0x3b7df7[_0x6933('0x18')])[_0x6933('0x19')](_0x3ed9b2[_0x6933('0x1a')],_0x6933('0x1b'))>moment()){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else{return utils[_0x6933('0x1c')](_0x3b7df7,0x0,![],null)['then'](function(){return utils[_0x6933('0x1e')](_0x3b7df7);})[_0x6933('0x16')](function(){return _0x3c95ab(null,_0x3b7df7);});}}else{return _0x3c95ab(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x6933('0x1c')](_0x3b7df7,0x0,![],null)[_0x6933('0x16')](function(){return utils[_0x6933('0x1e')](_0x3b7df7);})[_0x6933('0x16')](function(){return _0x3c95ab(null,_0x3b7df7);})['catch'](function(_0x3c5635){return _0x3c95ab(null,![],_0x3c5635);});}}else{if(_0x3b7df7['blocked']){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else{return utils['getLicense'](_0x3b7df7)[_0x6933('0x16')](function(){return _0x3c95ab(null,_0x3b7df7);});}}}});})[_0x6933('0x1f')](function(_0x5dea96){return _0x3c95ab(null,![],_0x5dea96);});}function sendServiceMail(_0x4785e9){return db[_0x6933('0x20')][_0x6933('0x21')]({'where':{'service':!![]},'attributes':['id',_0x6933('0xc'),_0x6933('0x22')],'include':[{'model':db[_0x6933('0x23')],'as':'Smtp'}]})['then'](function(_0x345a54){if(!_0x345a54){throw new Error(_0x6933('0x24'));}var _0x14f245={'tls':{'rejectUnauthorized':![]}};if(_0x345a54[_0x6933('0x25')]['service']){_0x14f245[_0x6933('0x26')]=_0x345a54[_0x6933('0x25')][_0x6933('0x26')];}else{_0x14f245[_0x6933('0x27')]=_0x345a54[_0x6933('0x25')][_0x6933('0x27')];_0x14f245[_0x6933('0x28')]=_0x345a54['Smtp'][_0x6933('0x28')];_0x14f245[_0x6933('0x29')]=_0x345a54[_0x6933('0x25')][_0x6933('0x29')];}if(_0x345a54['Smtp'][_0x6933('0x2a')]){_0x14f245[_0x6933('0x2b')]={'user':_0x345a54[_0x6933('0x25')][_0x6933('0x2c')],'pass':_0x345a54[_0x6933('0x25')][_0x6933('0x2d')]};}var _0x51c095={'account':_0x14f245,'message':_[_0x6933('0x2e')]({'from':util['format'](_0x6933('0x2f'),_0x345a54[_0x6933('0xc')],_0x345a54[_0x6933('0x22')]||_0x345a54[_0x6933('0x25')]['user'])},_0x4785e9)};return client[_0x6933('0x30')](_0x6933('0x31'),_0x51c095);})[_0x6933('0x16')](function(_0x3009ae){if(_0x3009ae[_0x6933('0x32')]){throw new Error(util[_0x6933('0x33')](_0x6933('0x34'),_0x3009ae[_0x6933('0x32')][_0x6933('0x35')]||JSON['stringify'](_0x3009ae[_0x6933('0x32')])));}return!![];});}function handleError(_0xabc672,_0x26ae29,_0x14f2e1){return _0xabc672[_0x6933('0x36')](_0x26ae29||0x1f4)['send']({'message':_0x14f2e1?_0x14f2e1[_0x6933('0x35')]||_0x14f2e1:''});}exports['login']=function(_0x24c10e,_0x20c3ee,_0x55603f){passport[_0x6933('0x17')](_0x6933('0x37'),function(_0x941c47,_0x27fe33,_0x5512ee){var _0x410923=_0x941c47||_0x5512ee;if(_0x410923){return handleError(_0x20c3ee,0x191,_0x410923);}if(!_0x27fe33){return handleError(_0x20c3ee,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x49a938={'payload':{'id':_0x27fe33['id'],'role':_0x27fe33['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x49a938)[_0x6933('0x16')](function(_0x5d8cd){_0x20c3ee[_0x6933('0x38')]({'id':_0x27fe33['id'],'token':_0x5d8cd,'statusCall':'','isAlreadyLogged':_0x27fe33[_0x6933('0x39')]});});}})(_0x24c10e,_0x20c3ee,_0x55603f);};exports[_0x6933('0x3a')]=function(_0x58b8b7,_0x159130,_0x40f477){if(!_0x58b8b7[_0x6933('0x3b')][_0x6933('0x22')]){return handleError(_0x159130,0x1f4,{'message':_0x6933('0x3c')});}var _0x5e5cd4=rs[_0x6933('0x3d')]();_0x58b8b7['body'][_0x6933('0x22')]=_0x58b8b7['body']['email']['trim']()[_0x6933('0x3e')]();var _0x12b24e;return db[_0x6933('0x3f')][_0x6933('0xb')]({'where':{'id':0x1},'attributes':[_0x6933('0x1d'),_0x6933('0x1a')],'raw':!![]})[_0x6933('0x16')](function(_0x47d165){_0x12b24e=_0x47d165;return db[_0x6933('0x40')][_0x6933('0x21')]({'where':{'email':_0x58b8b7['body'][_0x6933('0x22')]}});})[_0x6933('0x16')](function(_0x386e70){if(!_0x386e70){throw new Error(_0x6933('0x41'));}if(_0x386e70[_0x6933('0x10')]){throw new Error(_0x6933('0x42'));}if(_0x386e70['blocked']){if(moment(_0x386e70[_0x6933('0x18')])[_0x6933('0x19')](_0x12b24e[_0x6933('0x1a')],_0x6933('0x1b'))>moment()){throw new Error(_0x6933('0x43'));}else{_0x386e70[_0x6933('0x11')]=![];_0x386e70[_0x6933('0x18')]=null;}}_0x386e70[_0x6933('0x44')]=_0x5e5cd4;_0x386e70[_0x6933('0x45')]=Date['now']()+0x36ee80;return _0x386e70[_0x6933('0x46')]();})[_0x6933('0x16')](function(){return sendServiceMail({'to':_0x58b8b7['body'][_0x6933('0x22')],'subject':_0x6933('0x47'),'text':_0x6933('0x48')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x6933('0x49')+_0x58b8b7[_0x6933('0x4a')][_0x6933('0x27')]+_0x6933('0x4b')+_0x5e5cd4+'\x0a\x0a'+_0x6933('0x4c')});})[_0x6933('0x16')](function(){_0x159130['status'](0xc8)[_0x6933('0x4d')]({'message':_0x6933('0x4e')});})[_0x6933('0x1f')](function(_0x17c137){return handleError(_0x159130,0x1f4,_0x17c137);});};exports[_0x6933('0x4f')]=function(_0x55072d,_0x35afa5,_0x160f74){return db[_0x6933('0x40')][_0x6933('0x21')]({'where':{'resetPasswordToken':_0x55072d[_0x6933('0x50')][_0x6933('0x51')],'resetPasswordExpires':{'$gt':Date[_0x6933('0x52')]()}}})[_0x6933('0x16')](function(_0x220005){if(!_0x220005){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0x6933('0x3f')][_0x6933('0xb')]({'attributes':['id',_0x6933('0x53'),_0x6933('0x54'),'passwordHistoryLimit']})[_0x6933('0x16')](function(_0x122f85){if(_0x122f85[_0x6933('0x53')])authService[_0x6933('0x55')](_0x55072d['body'][_0x6933('0xd')]);if(!_0x122f85[_0x6933('0x54')]||!_0x220005['previousPasswords'])return _0x220005;authService[_0x6933('0x56')](_0x55072d[_0x6933('0x3b')][_0x6933('0xd')],_0x220005['previousPasswords'],_0x122f85[_0x6933('0x57')]);return _0x220005;})['then'](function(){_0x220005[_0x6933('0xd')]=_0x55072d[_0x6933('0x3b')][_0x6933('0xd')];_0x220005['resetPasswordToken']=null;_0x220005['resetPasswordExpires']=null;return _0x220005[_0x6933('0x46')]();});})[_0x6933('0x16')](function(){_0x35afa5[_0x6933('0x36')](0xc8)[_0x6933('0x4d')]({'message':_0x6933('0x58')});})['catch'](function(_0x135221){return handleError(_0x35afa5,0x1f4,_0x135221);});};passport[_0x6933('0x59')](new LocalStrategy({'usernameField':_0x6933('0xc'),'passwordField':'password'},function(_0x1cbde8,_0x3c22dd,_0x1e5f02){return localAuthenticate(db[_0x6933('0x40')],_0x1cbde8,_0x3c22dd,_0x1e5f02);}));
\ No newline at end of file
+var _0x5fbd=['agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','disabled','allowedLoginAttempts','blocked','minutes','clearBlockUser','add','getLicense','catch','find','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','secure','authentication','auth','user','pass','merge','format','\x22%s\x22\x20<%s>','request','error','message','send','login','authenticate','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\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','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','Setting','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','passwordHistoryLimit','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../config/utils','client','http','blockDuration','findOne','name','password','salt','role','blockedAt','loginAttempts','admin'];(function(_0x317d1a,_0x3fea7e){var _0x2b1705=function(_0x15ca14){while(--_0x15ca14){_0x317d1a['push'](_0x317d1a['shift']());}};_0x2b1705(++_0x3fea7e);}(_0x5fbd,0xea));var _0xd5fb=function(_0x1bdc1c,_0x4920c0){_0x1bdc1c=_0x1bdc1c-0x0;var _0x89315c=_0x5fbd[_0x1bdc1c];return _0x89315c;};'use strict';var util=require(_0xd5fb('0x0'));var passport=require(_0xd5fb('0x1'));var LocalStrategy=require(_0xd5fb('0x2'))[_0xd5fb('0x3')];var jayson=require(_0xd5fb('0x4'));var _=require(_0xd5fb('0x5'));var rs=require(_0xd5fb('0x6'));var moment=require(_0xd5fb('0x7'));var db=require(_0xd5fb('0x8'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xd5fb('0x9'));var client=jayson[_0xd5fb('0xa')][_0xd5fb('0xb')]({'port':0x232b});function localAuthenticate(_0x2863ea,_0x1f278d,_0x210c1c,_0x43c5d4){var _0x557a4d,_0x877a3f;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xd5fb('0xc')],'raw':!![]})['then'](function(_0x2bb8ee){_0x557a4d=_0x2bb8ee;return _0x2863ea[_0xd5fb('0xd')]({'attributes':['id',_0xd5fb('0xe'),_0xd5fb('0xf'),_0xd5fb('0x10'),_0xd5fb('0x11'),'disabled','blocked',_0xd5fb('0x12'),_0xd5fb('0x13')],'where':{'name':_0x1f278d,'role':{'$or':[_0xd5fb('0x14'),'user',_0xd5fb('0x15')]}}});})[_0xd5fb('0x16')](function(_0x3df180){if(!_0x3df180||_0x3df180&&_0x3df180['name']!==_0x1f278d){throw new Error(_0xd5fb('0x17'));}else{_0x877a3f=_0x3df180;return _0x877a3f;}})['then'](function(){_0x877a3f['authenticate'](_0x210c1c,function(_0x5797e1,_0x786f6a){var _0x49f9af=_0x877a3f[_0xd5fb('0x13')]+0x1;if(_0x5797e1){return _0x43c5d4(_0x5797e1);}else if(!_0x786f6a){if(_0x877a3f[_0xd5fb('0x18')]){return _0x43c5d4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x557a4d[_0xd5fb('0x19')]>0x0){if(_0x877a3f[_0xd5fb('0x1a')]){if(_0x557a4d[_0xd5fb('0xc')]>0x0){if(moment(_0x877a3f[_0xd5fb('0x12')])['add'](_0x557a4d['blockDuration'],_0xd5fb('0x1b'))>moment()){return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});}else{return utils['clearBlockUser'](_0x877a3f,_0x49f9af,![],null)[_0xd5fb('0x16')](function(){return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});});}}else{return _0x43c5d4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x49f9af>=_0x557a4d[_0xd5fb('0x19')]){return utils[_0xd5fb('0x1c')](_0x877a3f,0x0,!![],moment())['then'](function(){return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});});}else{return utils[_0xd5fb('0x1c')](_0x877a3f,_0x49f9af,![],null)['then'](function(){return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});});}}}else{return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});}}else{if(_0x877a3f['disabled']){return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});}else if(_0x557a4d[_0xd5fb('0x19')]>0x0){if(_0x877a3f['blocked']){if(_0x557a4d[_0xd5fb('0xc')]>0x0){if(moment(_0x877a3f['blockedAt'])[_0xd5fb('0x1d')](_0x557a4d['blockDuration'],_0xd5fb('0x1b'))>moment()){return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});}else{return utils[_0xd5fb('0x1c')](_0x877a3f,0x0,![],null)[_0xd5fb('0x16')](function(){return utils[_0xd5fb('0x1e')](_0x877a3f);})[_0xd5fb('0x16')](function(){return _0x43c5d4(null,_0x877a3f);});}}else{return _0x43c5d4(null,![],{'message':_0xd5fb('0x17')});}}else{return utils[_0xd5fb('0x1c')](_0x877a3f,0x0,![],null)[_0xd5fb('0x16')](function(){return utils[_0xd5fb('0x1e')](_0x877a3f);})['then'](function(){return _0x43c5d4(null,_0x877a3f);})[_0xd5fb('0x1f')](function(_0x4f4cc1){return _0x43c5d4(null,![],_0x4f4cc1);});}}else{if(_0x877a3f[_0xd5fb('0x1a')]){return _0x43c5d4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xd5fb('0x1e')](_0x877a3f)[_0xd5fb('0x16')](function(){return _0x43c5d4(null,_0x877a3f);});}}}});})['catch'](function(_0x31abc6){return _0x43c5d4(null,![],_0x31abc6);});}function sendServiceMail(_0x9a4c1b){return db['MailAccount'][_0xd5fb('0x20')]({'where':{'service':!![]},'attributes':['id',_0xd5fb('0xe'),_0xd5fb('0x21')],'include':[{'model':db[_0xd5fb('0x22')],'as':_0xd5fb('0x23')}]})[_0xd5fb('0x16')](function(_0x26da6b){if(!_0x26da6b){throw new Error(_0xd5fb('0x24'));}var _0x2ea294={'tls':{'rejectUnauthorized':![]}};if(_0x26da6b[_0xd5fb('0x23')][_0xd5fb('0x25')]){_0x2ea294[_0xd5fb('0x25')]=_0x26da6b[_0xd5fb('0x23')][_0xd5fb('0x25')];}else{_0x2ea294['host']=_0x26da6b[_0xd5fb('0x23')][_0xd5fb('0x26')];_0x2ea294['port']=_0x26da6b['Smtp']['port'];_0x2ea294[_0xd5fb('0x27')]=_0x26da6b['Smtp']['secure'];}if(_0x26da6b[_0xd5fb('0x23')][_0xd5fb('0x28')]){_0x2ea294[_0xd5fb('0x29')]={'user':_0x26da6b[_0xd5fb('0x23')][_0xd5fb('0x2a')],'pass':_0x26da6b['Smtp'][_0xd5fb('0x2b')]};}var _0x326420={'account':_0x2ea294,'message':_[_0xd5fb('0x2c')]({'from':util[_0xd5fb('0x2d')](_0xd5fb('0x2e'),_0x26da6b[_0xd5fb('0xe')],_0x26da6b[_0xd5fb('0x21')]||_0x26da6b[_0xd5fb('0x23')][_0xd5fb('0x2a')])},_0x9a4c1b)};return client[_0xd5fb('0x2f')]('SendMail',_0x326420);})[_0xd5fb('0x16')](function(_0x22ff7d){if(_0x22ff7d['error']){throw new Error(util[_0xd5fb('0x2d')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x22ff7d[_0xd5fb('0x30')][_0xd5fb('0x31')]||JSON['stringify'](_0x22ff7d[_0xd5fb('0x30')])));}return!![];});}function handleError(_0x4cff2b,_0x1bca5c,_0x5144c6){return _0x4cff2b['status'](_0x1bca5c||0x1f4)[_0xd5fb('0x32')]({'message':_0x5144c6?_0x5144c6[_0xd5fb('0x31')]||_0x5144c6:''});}exports[_0xd5fb('0x33')]=function(_0x348e9f,_0x4449de,_0x47151a){passport[_0xd5fb('0x34')]('local',function(_0x3bc125,_0x4de092,_0x41976a){var _0x44dd3f=_0x3bc125||_0x41976a;if(_0x44dd3f){return handleError(_0x4449de,0x191,_0x44dd3f);}if(!_0x4de092){return handleError(_0x4449de,0x194,{'message':_0xd5fb('0x35')});}else{var _0xf6eb78={'payload':{'id':_0x4de092['id'],'role':_0x4de092[_0xd5fb('0x11')]},'options':{'expiresIn':0x15180}};return authService[_0xd5fb('0x36')](_0xf6eb78)['then'](function(_0x51c607){_0x4449de['json']({'id':_0x4de092['id'],'token':_0x51c607,'statusCall':'','isAlreadyLogged':_0x4de092[_0xd5fb('0x37')]});});}})(_0x348e9f,_0x4449de,_0x47151a);};exports[_0xd5fb('0x38')]=function(_0x5e63dc,_0x19e6e6,_0x562362){if(!_0x5e63dc['body'][_0xd5fb('0x21')]){return handleError(_0x19e6e6,0x1f4,{'message':_0xd5fb('0x39')});}var _0x527ebd=rs[_0xd5fb('0x3a')]();_0x5e63dc[_0xd5fb('0x3b')][_0xd5fb('0x21')]=_0x5e63dc[_0xd5fb('0x3b')][_0xd5fb('0x21')][_0xd5fb('0x3c')]()['toLowerCase']();var _0x4df3c0;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xd5fb('0x19'),_0xd5fb('0xc')],'raw':!![]})['then'](function(_0x4b2323){_0x4df3c0=_0x4b2323;return db[_0xd5fb('0x3d')][_0xd5fb('0x20')]({'where':{'email':_0x5e63dc[_0xd5fb('0x3b')][_0xd5fb('0x21')]}});})[_0xd5fb('0x16')](function(_0x50f0d7){if(!_0x50f0d7){throw new Error(_0xd5fb('0x3e'));}if(_0x50f0d7[_0xd5fb('0x18')]){throw new Error(_0xd5fb('0x3f'));}if(_0x50f0d7['blocked']){if(moment(_0x50f0d7[_0xd5fb('0x12')])[_0xd5fb('0x1d')](_0x4df3c0[_0xd5fb('0xc')],_0xd5fb('0x1b'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x50f0d7[_0xd5fb('0x1a')]=![];_0x50f0d7[_0xd5fb('0x12')]=null;}}_0x50f0d7[_0xd5fb('0x40')]=_0x527ebd;_0x50f0d7[_0xd5fb('0x41')]=Date[_0xd5fb('0x42')]()+0x36ee80;return _0x50f0d7[_0xd5fb('0x43')]();})['then'](function(){return sendServiceMail({'to':_0x5e63dc[_0xd5fb('0x3b')][_0xd5fb('0x21')],'subject':_0xd5fb('0x44'),'text':_0xd5fb('0x45')+_0xd5fb('0x46')+'https://'+_0x5e63dc['headers']['host']+'/reset/'+_0x527ebd+'\x0a\x0a'+_0xd5fb('0x47')});})[_0xd5fb('0x16')](function(){_0x19e6e6[_0xd5fb('0x48')](0xc8)['send']({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x4c76b7){return handleError(_0x19e6e6,0x1f4,_0x4c76b7);});};exports[_0xd5fb('0x49')]=function(_0x2d403d,_0x25221e,_0xd936d4){return db['User'][_0xd5fb('0x20')]({'where':{'resetPasswordToken':_0x2d403d[_0xd5fb('0x4a')][_0xd5fb('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xd5fb('0x42')]()}}})['then'](function(_0x1af18b){if(!_0x1af18b){throw new Error(_0xd5fb('0x4c'));}return db[_0xd5fb('0x4d')][_0xd5fb('0xd')]({'attributes':['id','securePassword',_0xd5fb('0x4e'),'passwordHistoryLimit']})[_0xd5fb('0x16')](function(_0x2e508f){if(_0x2e508f[_0xd5fb('0x4f')])authService[_0xd5fb('0x50')](_0x2d403d['body']['password']);if(!_0x2e508f['enforcePasswordHistory']||!_0x1af18b[_0xd5fb('0x51')])return _0x1af18b;authService['validatePasswordHistory'](_0x2d403d[_0xd5fb('0x3b')][_0xd5fb('0xf')],_0x1af18b['previousPasswords'],_0x2e508f[_0xd5fb('0x52')]);return _0x1af18b;})[_0xd5fb('0x16')](function(){_0x1af18b[_0xd5fb('0xf')]=_0x2d403d[_0xd5fb('0x3b')][_0xd5fb('0xf')];_0x1af18b[_0xd5fb('0x40')]=null;_0x1af18b[_0xd5fb('0x41')]=null;return _0x1af18b[_0xd5fb('0x43')]();});})[_0xd5fb('0x16')](function(){_0x25221e[_0xd5fb('0x48')](0xc8)['send']({'message':_0xd5fb('0x53')});})[_0xd5fb('0x1f')](function(_0x31dc25){return handleError(_0x25221e,0x1f4,_0x31dc25);});};passport[_0xd5fb('0x54')](new LocalStrategy({'usernameField':_0xd5fb('0xe'),'passwordField':_0xd5fb('0xf')},function(_0x38d77a,_0x159c15,_0x521845){return localAuthenticate(db[_0xd5fb('0x3d')],_0x38d77a,_0x159c15,_0x521845);}));
\ No newline at end of file
index aa5a84a..b5144da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d2=['express','Router','./authLocal.controller','post','login','/forgot','forgot','reset'];(function(_0xd92914,_0x22e7cf){var _0x41b1f6=function(_0x365e93){while(--_0x365e93){_0xd92914['push'](_0xd92914['shift']());}};_0x41b1f6(++_0x22e7cf);}(_0xb9d2,0xf0));var _0x2b9d=function(_0x552720,_0xa47e76){_0x552720=_0x552720-0x0;var _0x284205=_0xb9d2[_0x552720];return _0x284205;};'use strict';var express=require(_0x2b9d('0x0'));var router=express[_0x2b9d('0x1')]();var controller=require(_0x2b9d('0x2'));router[_0x2b9d('0x3')]('/',controller[_0x2b9d('0x4')]);router['post'](_0x2b9d('0x5'),controller[_0x2b9d('0x6')]);router[_0x2b9d('0x3')]('/reset/:token',controller[_0x2b9d('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x9fab=['exports','express','Router','./authLocal.controller','login','post','/forgot','forgot','/reset/:token','reset'];(function(_0xc18fc4,_0x17c13e){var _0x2c6838=function(_0x42240f){while(--_0x42240f){_0xc18fc4['push'](_0xc18fc4['shift']());}};_0x2c6838(++_0x17c13e);}(_0x9fab,0x155));var _0xb9fa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9fab[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0xb9fa('0x0'));var router=express[_0xb9fa('0x1')]();var controller=require(_0xb9fa('0x2'));router['post']('/',controller[_0xb9fa('0x3')]);router[_0xb9fa('0x4')](_0xb9fa('0x5'),controller[_0xb9fa('0x6')]);router['post'](_0xb9fa('0x7'),controller[_0xb9fa('0x8')]);module[_0xb9fa('0x9')]=router;
\ No newline at end of file
index ec56674..681977b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9026=['BOOLEAN','INTEGER','sequelize','STRING'];(function(_0x4bfb11,_0x4ad756){var _0x33a01a=function(_0x5b5651){while(--_0x5b5651){_0x4bfb11['push'](_0x4bfb11['shift']());}};_0x33a01a(++_0x4ad756);}(_0x9026,0xb6));var _0x6902=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x9026[_0x24f31b];return _0x488401;};'use strict';var Sequelize=require(_0x6902('0x0'));module['exports']={'name':{'type':Sequelize[_0x6902('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x6902('0x1')]},'description':{'type':Sequelize[_0x6902('0x1')]},'status':{'type':Sequelize[_0x6902('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x6902('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x7d99=['BOOLEAN','exports','STRING'];(function(_0xe2d685,_0x25ed51){var _0x74704=function(_0x21cb80){while(--_0x21cb80){_0xe2d685['push'](_0xe2d685['shift']());}};_0x74704(++_0x25ed51);}(_0x7d99,0x1a5));var _0x97d9=function(_0x576bde,_0xda02a9){_0x576bde=_0x576bde-0x0;var _0x10670e=_0x7d99[_0x576bde];return _0x10670e;};'use strict';var Sequelize=require('sequelize');module[_0x97d9('0x0')]={'name':{'type':Sequelize[_0x97d9('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x97d9('0x1')]},'description':{'type':Sequelize[_0x97d9('0x1')]},'status':{'type':Sequelize[_0x97d9('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
index 091e216..813608f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c0b=['Content-Range','update','then','destroy','error','stack','name','send','index','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','map','type','options','include','Automation','findAll','rows','catch','show','params','includeAll','find','create','body','addConditions','Condition','findOne','hasOwnProperty','getConditions','addActions','ids','omit','getActions','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/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','count','limit'];(function(_0x302854,_0x503b53){var _0x3588b8=function(_0x531035){while(--_0x531035){_0x302854['push'](_0x302854['shift']());}};_0x3588b8(++_0x503b53);}(_0x9c0b,0xd4));var _0xb9c0=function(_0xd9c489,_0x3dfdc3){_0xd9c489=_0xd9c489-0x0;var _0x5504eb=_0x9c0b[_0xd9c489];return _0x5504eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb9c0('0x0'));var zipdir=require(_0xb9c0('0x1'));var jsonpatch=require(_0xb9c0('0x2'));var rp=require(_0xb9c0('0x3'));var moment=require(_0xb9c0('0x4'));var BPromise=require(_0xb9c0('0x5'));var Mustache=require('mustache');var util=require(_0xb9c0('0x6'));var path=require(_0xb9c0('0x7'));var sox=require(_0xb9c0('0x8'));var csv=require(_0xb9c0('0x9'));var ejs=require(_0xb9c0('0xa'));var fs=require('fs');var fs_extra=require(_0xb9c0('0xb'));var _=require(_0xb9c0('0xc'));var squel=require(_0xb9c0('0xd'));var crypto=require('crypto');var jsforce=require(_0xb9c0('0xe'));var deskjs=require(_0xb9c0('0xf'));var toCsv=require(_0xb9c0('0x9'));var querystring=require(_0xb9c0('0x10'));var Papa=require(_0xb9c0('0x11'));var Redis=require(_0xb9c0('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb9c0('0x13'));var as=require(_0xb9c0('0x14'));var hardwareService=require(_0xb9c0('0x15'));var logger=require(_0xb9c0('0x16'))(_0xb9c0('0x17'));var utils=require(_0xb9c0('0x18'));var config=require(_0xb9c0('0x19'));var licenseUtil=require(_0xb9c0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x385d99,_0xbae2f7){_0xbae2f7=_0xbae2f7||0xcc;return function(_0x4fb2d2){if(_0x4fb2d2){return _0x385d99[_0xb9c0('0x1b')](_0xbae2f7);}return _0x385d99[_0xb9c0('0x1c')](_0xbae2f7)[_0xb9c0('0x1d')]();};}function respondWithResult(_0x51f868,_0x40b296){_0x40b296=_0x40b296||0xc8;return function(_0x37921a){if(_0x37921a){return _0x51f868['status'](_0x40b296)[_0xb9c0('0x1e')](_0x37921a);}};}function respondWithFilteredResult(_0x52b17a,_0xb5ca8c){return function(_0x308739){if(_0x308739){var _0x27b718=typeof _0xb5ca8c[_0xb9c0('0x1f')]==='undefined'&&typeof _0xb5ca8c['limit']==='undefined';var _0x2901e0=_0x308739['count'];var _0xadce07=_0x27b718?0x0:_0xb5ca8c['offset'];var _0x5f19e2=_0x27b718?_0x308739[_0xb9c0('0x20')]:_0xb5ca8c[_0xb9c0('0x1f')]+_0xb5ca8c[_0xb9c0('0x21')];var _0x4e6ace;if(_0x5f19e2>=_0x2901e0){_0x5f19e2=_0x2901e0;_0x4e6ace=0xc8;}else{_0x4e6ace=0xce;}_0x52b17a['status'](_0x4e6ace);return _0x52b17a['set'](_0xb9c0('0x22'),_0xadce07+'-'+_0x5f19e2+'/'+_0x2901e0)[_0xb9c0('0x1e')](_0x308739);}return null;};}function patchUpdates(_0x5d327b){return function(_0x2c7946){try{jsonpatch['apply'](_0x2c7946,_0x5d327b,!![]);}catch(_0x4bf870){return BPromise['reject'](_0x4bf870);}return _0x2c7946['save']();};}function saveUpdates(_0x48de07,_0x53fcc9){return function(_0x3cfb13){if(_0x3cfb13){return _0x3cfb13[_0xb9c0('0x23')](_0x48de07)[_0xb9c0('0x24')](function(_0x457295){return _0x457295;});}return null;};}function removeEntity(_0x2b61fe,_0x21a9ee){return function(_0x4f6cf6){if(_0x4f6cf6){return _0x4f6cf6[_0xb9c0('0x25')]()[_0xb9c0('0x24')](function(){_0x2b61fe['status'](0xcc)[_0xb9c0('0x1d')]();});}};}function handleEntityNotFound(_0x2ad8e0,_0x5e48d8){return function(_0xc1d95c){if(!_0xc1d95c){_0x2ad8e0[_0xb9c0('0x1b')](0x194);}return _0xc1d95c;};}function handleError(_0x2b5a4d,_0x43699d){_0x43699d=_0x43699d||0x1f4;return function(_0x612820){logger[_0xb9c0('0x26')](_0x612820[_0xb9c0('0x27')]);if(_0x612820['name']){delete _0x612820[_0xb9c0('0x28')];}_0x2b5a4d['status'](_0x43699d)[_0xb9c0('0x29')](_0x612820);};}exports[_0xb9c0('0x2a')]=function(_0xbecf7e,_0x5dcdb1){var _0x37ab4d={},_0x1ef937={},_0x5249ef={'count':0x0,'rows':[]};var _0x53f31b=_['map'](db['Automation'][_0xb9c0('0x2b')],function(_0x5f54bd){return{'name':_0x5f54bd['fieldName'],'type':_0x5f54bd['type']['key']};});_0x1ef937[_0xb9c0('0x2c')]=_['map'](_0x53f31b,_0xb9c0('0x28'));_0x1ef937[_0xb9c0('0x2d')]=_[_0xb9c0('0x2e')](_0xbecf7e[_0xb9c0('0x2d')]);_0x1ef937[_0xb9c0('0x2f')]=_[_0xb9c0('0x30')](_0x1ef937[_0xb9c0('0x2c')],_0x1ef937[_0xb9c0('0x2d')]);_0x37ab4d[_0xb9c0('0x31')]=_[_0xb9c0('0x30')](_0x1ef937['model'],qs[_0xb9c0('0x32')](_0xbecf7e[_0xb9c0('0x2d')]['fields']));_0x37ab4d['attributes']=_0x37ab4d[_0xb9c0('0x31')][_0xb9c0('0x33')]?_0x37ab4d[_0xb9c0('0x31')]:_0x1ef937[_0xb9c0('0x2c')];if(!_0xbecf7e[_0xb9c0('0x2d')]['hasOwnProperty'](_0xb9c0('0x34'))){_0x37ab4d[_0xb9c0('0x21')]=qs[_0xb9c0('0x21')](_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x21')]);_0x37ab4d['offset']=qs[_0xb9c0('0x1f')](_0xbecf7e['query'][_0xb9c0('0x1f')]);}_0x37ab4d[_0xb9c0('0x35')]=qs[_0xb9c0('0x36')](_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x36')]);_0x37ab4d[_0xb9c0('0x37')]=qs['filters'](_[_0xb9c0('0x38')](_0xbecf7e[_0xb9c0('0x2d')],_0x1ef937[_0xb9c0('0x2f')]),_0x53f31b);if(_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x39')]){_0x37ab4d['where']=_[_0xb9c0('0x3a')](_0x37ab4d[_0xb9c0('0x37')],{'$or':_[_0xb9c0('0x3b')](_0x53f31b,function(_0x19131d){if(_0x19131d[_0xb9c0('0x3c')]!=='VIRTUAL'){var _0x13afc1={};_0x13afc1[_0x19131d['name']]={'$like':'%'+_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x39')]+'%'};return _0x13afc1;}})});}_0x37ab4d=_[_0xb9c0('0x3a')]({},_0x37ab4d,_0xbecf7e[_0xb9c0('0x3d')]);var _0x545a07={'where':_0x37ab4d[_0xb9c0('0x37')]};return db['Automation'][_0xb9c0('0x20')](_0x545a07)[_0xb9c0('0x24')](function(_0x5b5fd3){_0x5249ef[_0xb9c0('0x20')]=_0x5b5fd3;if(_0xbecf7e[_0xb9c0('0x2d')]['includeAll']){_0x37ab4d[_0xb9c0('0x3e')]=[{'all':!![]}];}return db[_0xb9c0('0x3f')][_0xb9c0('0x40')](_0x37ab4d);})[_0xb9c0('0x24')](function(_0x56c5ae){_0x5249ef[_0xb9c0('0x41')]=_0x56c5ae;return _0x5249ef;})['then'](respondWithFilteredResult(_0x5dcdb1,_0x37ab4d))[_0xb9c0('0x42')](handleError(_0x5dcdb1,null));};exports[_0xb9c0('0x43')]=function(_0x485d64,_0x120922){var _0x4a130b={'raw':![],'where':{'id':_0x485d64[_0xb9c0('0x44')]['id']}},_0x491e17={};_0x491e17['model']=_[_0xb9c0('0x2e')](db['Automation'][_0xb9c0('0x2b')]);_0x491e17[_0xb9c0('0x2d')]=_['keys'](_0x485d64['query']);_0x491e17[_0xb9c0('0x2f')]=_['intersection'](_0x491e17[_0xb9c0('0x2c')],_0x491e17[_0xb9c0('0x2d')]);_0x4a130b[_0xb9c0('0x31')]=_['intersection'](_0x491e17['model'],qs[_0xb9c0('0x32')](_0x485d64[_0xb9c0('0x2d')][_0xb9c0('0x32')]));_0x4a130b[_0xb9c0('0x31')]=_0x4a130b[_0xb9c0('0x31')][_0xb9c0('0x33')]?_0x4a130b[_0xb9c0('0x31')]:_0x491e17['model'];if(_0x485d64[_0xb9c0('0x2d')][_0xb9c0('0x45')]){_0x4a130b['include']=[{'all':!![]}];}_0x4a130b=_[_0xb9c0('0x3a')]({},_0x4a130b,_0x485d64[_0xb9c0('0x3d')]);return db['Automation'][_0xb9c0('0x46')](_0x4a130b)[_0xb9c0('0x24')](handleEntityNotFound(_0x120922,null))[_0xb9c0('0x24')](respondWithResult(_0x120922,null))[_0xb9c0('0x42')](handleError(_0x120922,null));};exports[_0xb9c0('0x47')]=function(_0x6bd84c,_0x14e496){return db[_0xb9c0('0x3f')][_0xb9c0('0x47')](_0x6bd84c['body'],{})[_0xb9c0('0x24')](respondWithResult(_0x14e496,0xc9))[_0xb9c0('0x42')](handleError(_0x14e496,null));};exports['update']=function(_0xcfc607,_0x3d4624){if(_0xcfc607['body']['id']){delete _0xcfc607[_0xb9c0('0x48')]['id'];}return db[_0xb9c0('0x3f')][_0xb9c0('0x46')]({'where':{'id':_0xcfc607[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x3d4624,null))[_0xb9c0('0x24')](saveUpdates(_0xcfc607[_0xb9c0('0x48')],null))[_0xb9c0('0x24')](respondWithResult(_0x3d4624,null))[_0xb9c0('0x42')](handleError(_0x3d4624,null));};exports[_0xb9c0('0x25')]=function(_0x4b1d93,_0x3f5f6e){return db[_0xb9c0('0x3f')][_0xb9c0('0x46')]({'where':{'id':_0x4b1d93[_0xb9c0('0x44')]['id']}})['then'](handleEntityNotFound(_0x3f5f6e,null))[_0xb9c0('0x24')](removeEntity(_0x3f5f6e,null))[_0xb9c0('0x42')](handleError(_0x3f5f6e,null));};exports[_0xb9c0('0x49')]=function(_0x51280f,_0x454b58,_0x5786f8){return db[_0xb9c0('0x4a')][_0xb9c0('0x46')]({'where':{'id':_0x51280f[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x454b58,null))[_0xb9c0('0x24')](function(_0x5cc8fa){if(_0x5cc8fa){return _0x5cc8fa[_0xb9c0('0x49')](_0x51280f[_0xb9c0('0x48')]['ids'],_['omit'](_0x51280f[_0xb9c0('0x48')],['ids','id'])||{});}})[_0xb9c0('0x24')](respondWithResult(_0x454b58,null))[_0xb9c0('0x42')](handleError(_0x454b58,null));};exports['getConditions']=function(_0x4d123f,_0x2f0667,_0x250fb7){var _0x3d09cd={};var _0xfcb605={};var _0x51a89d;var _0x34dc46;return db['Automation'][_0xb9c0('0x4b')]({'where':{'id':_0x4d123f[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x2f0667,null))[_0xb9c0('0x24')](function(_0x24510e){if(_0x24510e){_0x51a89d=_0x24510e;_0xfcb605['model']=_[_0xb9c0('0x2e')](db['Condition'][_0xb9c0('0x2b')]);_0xfcb605[_0xb9c0('0x2d')]=_['keys'](_0x4d123f['query']);_0xfcb605[_0xb9c0('0x2f')]=_[_0xb9c0('0x30')](_0xfcb605[_0xb9c0('0x2c')],_0xfcb605[_0xb9c0('0x2d')]);_0x3d09cd[_0xb9c0('0x31')]=_[_0xb9c0('0x30')](_0xfcb605[_0xb9c0('0x2c')],qs[_0xb9c0('0x32')](_0x4d123f['query'][_0xb9c0('0x32')]));_0x3d09cd['attributes']=_0x3d09cd[_0xb9c0('0x31')]['length']?_0x3d09cd['attributes']:_0xfcb605[_0xb9c0('0x2c')];_0x3d09cd[_0xb9c0('0x35')]=qs[_0xb9c0('0x36')](_0x4d123f['query']['sort']);_0x3d09cd[_0xb9c0('0x37')]=qs[_0xb9c0('0x2f')](_['pick'](_0x4d123f[_0xb9c0('0x2d')],_0xfcb605[_0xb9c0('0x2f')]));if(_0x4d123f[_0xb9c0('0x2d')][_0xb9c0('0x39')]){_0x3d09cd[_0xb9c0('0x37')]=_[_0xb9c0('0x3a')](_0x3d09cd[_0xb9c0('0x37')],{'$or':_[_0xb9c0('0x3b')](_0x3d09cd[_0xb9c0('0x31')],function(_0x1c0607){var _0x256a35={};_0x256a35[_0x1c0607]={'$like':'%'+_0x4d123f[_0xb9c0('0x2d')]['filter']+'%'};return _0x256a35;})});}_0x3d09cd=_[_0xb9c0('0x3a')]({},_0x3d09cd,_0x4d123f['options']);return _0x51a89d['getConditions'](_0x3d09cd);}})[_0xb9c0('0x24')](function(_0x1c0a13){if(_0x1c0a13){_0x34dc46=_0x1c0a13[_0xb9c0('0x33')];if(!_0x4d123f[_0xb9c0('0x2d')][_0xb9c0('0x4c')](_0xb9c0('0x34'))){_0x3d09cd[_0xb9c0('0x21')]=qs[_0xb9c0('0x21')](_0x4d123f[_0xb9c0('0x2d')][_0xb9c0('0x21')]);_0x3d09cd['offset']=qs[_0xb9c0('0x1f')](_0x4d123f[_0xb9c0('0x2d')]['offset']);}return _0x51a89d[_0xb9c0('0x4d')](_0x3d09cd);}})[_0xb9c0('0x24')](function(_0x48d55b){if(_0x48d55b){return _0x48d55b?{'count':_0x34dc46,'rows':_0x48d55b}:null;}})[_0xb9c0('0x24')](respondWithResult(_0x2f0667,null))[_0xb9c0('0x42')](handleError(_0x2f0667,null));};exports[_0xb9c0('0x4e')]=function(_0x445002,_0x402fa5,_0x3ed47c){return db['Action'][_0xb9c0('0x46')]({'where':{'id':_0x445002['params']['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x402fa5,null))[_0xb9c0('0x24')](function(_0x3c07ee){if(_0x3c07ee){return _0x3c07ee[_0xb9c0('0x4e')](_0x445002['body'][_0xb9c0('0x4f')],_[_0xb9c0('0x50')](_0x445002[_0xb9c0('0x48')],[_0xb9c0('0x4f'),'id'])||{});}})[_0xb9c0('0x24')](respondWithResult(_0x402fa5,null))['catch'](handleError(_0x402fa5,null));};exports[_0xb9c0('0x51')]=function(_0x4fd37f,_0x4f94fd,_0x167339){var _0x5b3422={};var _0xb7139b={};var _0x36e33f;var _0x1c2d5b;return db[_0xb9c0('0x3f')][_0xb9c0('0x4b')]({'where':{'id':_0x4fd37f[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x4f94fd,null))[_0xb9c0('0x24')](function(_0x524879){if(_0x524879){_0x36e33f=_0x524879;_0xb7139b[_0xb9c0('0x2c')]=_[_0xb9c0('0x2e')](db['Action'][_0xb9c0('0x2b')]);_0xb7139b[_0xb9c0('0x2d')]=_['keys'](_0x4fd37f[_0xb9c0('0x2d')]);_0xb7139b['filters']=_[_0xb9c0('0x30')](_0xb7139b[_0xb9c0('0x2c')],_0xb7139b[_0xb9c0('0x2d')]);_0x5b3422[_0xb9c0('0x31')]=_[_0xb9c0('0x30')](_0xb7139b['model'],qs[_0xb9c0('0x32')](_0x4fd37f['query'][_0xb9c0('0x32')]));_0x5b3422[_0xb9c0('0x31')]=_0x5b3422['attributes'][_0xb9c0('0x33')]?_0x5b3422[_0xb9c0('0x31')]:_0xb7139b[_0xb9c0('0x2c')];_0x5b3422[_0xb9c0('0x35')]=qs[_0xb9c0('0x36')](_0x4fd37f['query'][_0xb9c0('0x36')]);_0x5b3422[_0xb9c0('0x37')]=qs[_0xb9c0('0x2f')](_[_0xb9c0('0x38')](_0x4fd37f[_0xb9c0('0x2d')],_0xb7139b[_0xb9c0('0x2f')]));if(_0x4fd37f[_0xb9c0('0x2d')]['filter']){_0x5b3422[_0xb9c0('0x37')]=_['merge'](_0x5b3422[_0xb9c0('0x37')],{'$or':_['map'](_0x5b3422['attributes'],function(_0x2b4d55){var _0x571094={};_0x571094[_0x2b4d55]={'$like':'%'+_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x39')]+'%'};return _0x571094;})});}_0x5b3422=_[_0xb9c0('0x3a')]({},_0x5b3422,_0x4fd37f[_0xb9c0('0x3d')]);return _0x36e33f[_0xb9c0('0x51')](_0x5b3422);}})[_0xb9c0('0x24')](function(_0x1cc1e5){if(_0x1cc1e5){_0x1c2d5b=_0x1cc1e5[_0xb9c0('0x33')];if(!_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x4c')](_0xb9c0('0x34'))){_0x5b3422[_0xb9c0('0x21')]=qs[_0xb9c0('0x21')](_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x21')]);_0x5b3422['offset']=qs[_0xb9c0('0x1f')](_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x1f')]);}return _0x36e33f[_0xb9c0('0x51')](_0x5b3422);}})[_0xb9c0('0x24')](function(_0x5905fc){if(_0x5905fc){return _0x5905fc?{'count':_0x1c2d5b,'rows':_0x5905fc}:null;}})[_0xb9c0('0x24')](respondWithResult(_0x4f94fd,null))[_0xb9c0('0x42')](handleError(_0x4f94fd,null));};
\ No newline at end of file
+var _0xc68c=['fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','Content-Range','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','options','Automation','includeAll','rows','catch','show','params','keys','include','merge','find','body','destroy','addConditions','ids','omit','getConditions','findOne','Condition','addActions','Action','getActions','filter','zip-dir'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xc68c,0x1e5));var _0xcc68=function(_0x8ecfb0,_0x443cf6){_0x8ecfb0=_0x8ecfb0-0x0;var _0x492db5=_0xc68c[_0x8ecfb0];return _0x492db5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcc68('0x0'));var jsonpatch=require(_0xcc68('0x1'));var rp=require('request-promise');var moment=require(_0xcc68('0x2'));var BPromise=require(_0xcc68('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcc68('0x4'));var sox=require(_0xcc68('0x5'));var csv=require(_0xcc68('0x6'));var ejs=require(_0xcc68('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xcc68('0x8'));var jsforce=require(_0xcc68('0x9'));var deskjs=require(_0xcc68('0xa'));var toCsv=require('to-csv');var querystring=require(_0xcc68('0xb'));var Papa=require(_0xcc68('0xc'));var Redis=require('ioredis');var authService=require(_0xcc68('0xd'));var qs=require(_0xcc68('0xe'));var as=require(_0xcc68('0xf'));var hardwareService=require(_0xcc68('0x10'));var logger=require(_0xcc68('0x11'))(_0xcc68('0x12'));var utils=require(_0xcc68('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xcc68('0x14'));var db=require(_0xcc68('0x15'))['db'];function respondWithStatusCode(_0x497724,_0x3fd43a){_0x3fd43a=_0x3fd43a||0xcc;return function(_0x39c7e4){if(_0x39c7e4){return _0x497724[_0xcc68('0x16')](_0x3fd43a);}return _0x497724['status'](_0x3fd43a)[_0xcc68('0x17')]();};}function respondWithResult(_0x27e645,_0x3239d8){_0x3239d8=_0x3239d8||0xc8;return function(_0x4e6b51){if(_0x4e6b51){return _0x27e645['status'](_0x3239d8)[_0xcc68('0x18')](_0x4e6b51);}};}function respondWithFilteredResult(_0x3b7652,_0xdf4943){return function(_0x36f35f){if(_0x36f35f){var _0x1e19e4=typeof _0xdf4943[_0xcc68('0x19')]===_0xcc68('0x1a')&&typeof _0xdf4943['limit']==='undefined';var _0x290c5f=_0x36f35f[_0xcc68('0x1b')];var _0x540055=_0x1e19e4?0x0:_0xdf4943[_0xcc68('0x19')];var _0x546d06=_0x1e19e4?_0x36f35f[_0xcc68('0x1b')]:_0xdf4943['offset']+_0xdf4943[_0xcc68('0x1c')];var _0x1c2da3;if(_0x546d06>=_0x290c5f){_0x546d06=_0x290c5f;_0x1c2da3=0xc8;}else{_0x1c2da3=0xce;}_0x3b7652[_0xcc68('0x1d')](_0x1c2da3);return _0x3b7652[_0xcc68('0x1e')](_0xcc68('0x1f'),_0x540055+'-'+_0x546d06+'/'+_0x290c5f)[_0xcc68('0x18')](_0x36f35f);}return null;};}function patchUpdates(_0x551359){return function(_0xd718d0){try{jsonpatch['apply'](_0xd718d0,_0x551359,!![]);}catch(_0x4d6e52){return BPromise['reject'](_0x4d6e52);}return _0xd718d0[_0xcc68('0x20')]();};}function saveUpdates(_0x474e48,_0x1e365b){return function(_0x12fe92){if(_0x12fe92){return _0x12fe92[_0xcc68('0x21')](_0x474e48)[_0xcc68('0x22')](function(_0xacf128){return _0xacf128;});}return null;};}function removeEntity(_0x33341d,_0x228da0){return function(_0x1b73cf){if(_0x1b73cf){return _0x1b73cf['destroy']()['then'](function(){_0x33341d[_0xcc68('0x1d')](0xcc)[_0xcc68('0x17')]();});}};}function handleEntityNotFound(_0x3b42b0,_0x31bc2c){return function(_0x2ee706){if(!_0x2ee706){_0x3b42b0[_0xcc68('0x16')](0x194);}return _0x2ee706;};}function handleError(_0x1e5881,_0x28408e){_0x28408e=_0x28408e||0x1f4;return function(_0xb34fb8){logger[_0xcc68('0x23')](_0xb34fb8[_0xcc68('0x24')]);if(_0xb34fb8[_0xcc68('0x25')]){delete _0xb34fb8[_0xcc68('0x25')];}_0x1e5881[_0xcc68('0x1d')](_0x28408e)[_0xcc68('0x26')](_0xb34fb8);};}exports[_0xcc68('0x27')]=function(_0x4f4ab4,_0x155966){var _0x3c75c4={},_0x38ff47={},_0x223c4b={'count':0x0,'rows':[]};var _0x343090=_[_0xcc68('0x28')](db['Automation'][_0xcc68('0x29')],function(_0x397e2d){return{'name':_0x397e2d[_0xcc68('0x2a')],'type':_0x397e2d['type']['key']};});_0x38ff47['model']=_[_0xcc68('0x28')](_0x343090,_0xcc68('0x25'));_0x38ff47[_0xcc68('0x2b')]=_['keys'](_0x4f4ab4['query']);_0x38ff47[_0xcc68('0x2c')]=_[_0xcc68('0x2d')](_0x38ff47[_0xcc68('0x2e')],_0x38ff47['query']);_0x3c75c4['attributes']=_[_0xcc68('0x2d')](_0x38ff47[_0xcc68('0x2e')],qs[_0xcc68('0x2f')](_0x4f4ab4[_0xcc68('0x2b')][_0xcc68('0x2f')]));_0x3c75c4[_0xcc68('0x30')]=_0x3c75c4[_0xcc68('0x30')][_0xcc68('0x31')]?_0x3c75c4[_0xcc68('0x30')]:_0x38ff47['model'];if(!_0x4f4ab4[_0xcc68('0x2b')][_0xcc68('0x32')](_0xcc68('0x33'))){_0x3c75c4[_0xcc68('0x1c')]=qs['limit'](_0x4f4ab4[_0xcc68('0x2b')][_0xcc68('0x1c')]);_0x3c75c4[_0xcc68('0x19')]=qs[_0xcc68('0x19')](_0x4f4ab4[_0xcc68('0x2b')][_0xcc68('0x19')]);}_0x3c75c4[_0xcc68('0x34')]=qs[_0xcc68('0x35')](_0x4f4ab4[_0xcc68('0x2b')]['sort']);_0x3c75c4['where']=qs['filters'](_[_0xcc68('0x36')](_0x4f4ab4['query'],_0x38ff47['filters']),_0x343090);if(_0x4f4ab4[_0xcc68('0x2b')]['filter']){_0x3c75c4[_0xcc68('0x37')]=_['merge'](_0x3c75c4[_0xcc68('0x37')],{'$or':_['map'](_0x343090,function(_0x56455e){if(_0x56455e[_0xcc68('0x38')]!==_0xcc68('0x39')){var _0x4d7bde={};_0x4d7bde[_0x56455e[_0xcc68('0x25')]]={'$like':'%'+_0x4f4ab4[_0xcc68('0x2b')]['filter']+'%'};return _0x4d7bde;}})});}_0x3c75c4=_['merge']({},_0x3c75c4,_0x4f4ab4[_0xcc68('0x3a')]);var _0x52a29b={'where':_0x3c75c4[_0xcc68('0x37')]};return db[_0xcc68('0x3b')][_0xcc68('0x1b')](_0x52a29b)['then'](function(_0x204b0){_0x223c4b[_0xcc68('0x1b')]=_0x204b0;if(_0x4f4ab4[_0xcc68('0x2b')][_0xcc68('0x3c')]){_0x3c75c4['include']=[{'all':!![]}];}return db['Automation']['findAll'](_0x3c75c4);})[_0xcc68('0x22')](function(_0x4226c6){_0x223c4b[_0xcc68('0x3d')]=_0x4226c6;return _0x223c4b;})[_0xcc68('0x22')](respondWithFilteredResult(_0x155966,_0x3c75c4))[_0xcc68('0x3e')](handleError(_0x155966,null));};exports[_0xcc68('0x3f')]=function(_0x1d4010,_0x52b8d3){var _0x35ed36={'raw':![],'where':{'id':_0x1d4010[_0xcc68('0x40')]['id']}},_0x26a930={};_0x26a930[_0xcc68('0x2e')]=_[_0xcc68('0x41')](db[_0xcc68('0x3b')]['rawAttributes']);_0x26a930[_0xcc68('0x2b')]=_[_0xcc68('0x41')](_0x1d4010[_0xcc68('0x2b')]);_0x26a930['filters']=_[_0xcc68('0x2d')](_0x26a930[_0xcc68('0x2e')],_0x26a930[_0xcc68('0x2b')]);_0x35ed36['attributes']=_[_0xcc68('0x2d')](_0x26a930[_0xcc68('0x2e')],qs[_0xcc68('0x2f')](_0x1d4010[_0xcc68('0x2b')]['fields']));_0x35ed36['attributes']=_0x35ed36[_0xcc68('0x30')]['length']?_0x35ed36[_0xcc68('0x30')]:_0x26a930['model'];if(_0x1d4010[_0xcc68('0x2b')][_0xcc68('0x3c')]){_0x35ed36[_0xcc68('0x42')]=[{'all':!![]}];}_0x35ed36=_[_0xcc68('0x43')]({},_0x35ed36,_0x1d4010[_0xcc68('0x3a')]);return db[_0xcc68('0x3b')][_0xcc68('0x44')](_0x35ed36)[_0xcc68('0x22')](handleEntityNotFound(_0x52b8d3,null))[_0xcc68('0x22')](respondWithResult(_0x52b8d3,null))[_0xcc68('0x3e')](handleError(_0x52b8d3,null));};exports['create']=function(_0x16f36f,_0x5c66e6){return db[_0xcc68('0x3b')]['create'](_0x16f36f[_0xcc68('0x45')],{})['then'](respondWithResult(_0x5c66e6,0xc9))[_0xcc68('0x3e')](handleError(_0x5c66e6,null));};exports['update']=function(_0x40b2e3,_0x4e0a30){if(_0x40b2e3[_0xcc68('0x45')]['id']){delete _0x40b2e3[_0xcc68('0x45')]['id'];}return db[_0xcc68('0x3b')]['find']({'where':{'id':_0x40b2e3['params']['id']}})['then'](handleEntityNotFound(_0x4e0a30,null))[_0xcc68('0x22')](saveUpdates(_0x40b2e3['body'],null))['then'](respondWithResult(_0x4e0a30,null))['catch'](handleError(_0x4e0a30,null));};exports[_0xcc68('0x46')]=function(_0x1f9635,_0x8b01f3){return db[_0xcc68('0x3b')][_0xcc68('0x44')]({'where':{'id':_0x1f9635['params']['id']}})[_0xcc68('0x22')](handleEntityNotFound(_0x8b01f3,null))[_0xcc68('0x22')](removeEntity(_0x8b01f3,null))[_0xcc68('0x3e')](handleError(_0x8b01f3,null));};exports[_0xcc68('0x47')]=function(_0x1fc894,_0x19ffe2,_0x59e979){return db['Condition'][_0xcc68('0x44')]({'where':{'id':_0x1fc894[_0xcc68('0x40')]['id']}})[_0xcc68('0x22')](handleEntityNotFound(_0x19ffe2,null))[_0xcc68('0x22')](function(_0xee5611){if(_0xee5611){return _0xee5611['addConditions'](_0x1fc894[_0xcc68('0x45')][_0xcc68('0x48')],_[_0xcc68('0x49')](_0x1fc894[_0xcc68('0x45')],['ids','id'])||{});}})[_0xcc68('0x22')](respondWithResult(_0x19ffe2,null))[_0xcc68('0x3e')](handleError(_0x19ffe2,null));};exports[_0xcc68('0x4a')]=function(_0x570fff,_0x4e4b58,_0xfaf706){var _0x51c71b={};var _0x3445a9={};var _0x5582db;var _0x1f6841;return db[_0xcc68('0x3b')][_0xcc68('0x4b')]({'where':{'id':_0x570fff['params']['id']}})[_0xcc68('0x22')](handleEntityNotFound(_0x4e4b58,null))['then'](function(_0xc42984){if(_0xc42984){_0x5582db=_0xc42984;_0x3445a9[_0xcc68('0x2e')]=_[_0xcc68('0x41')](db[_0xcc68('0x4c')][_0xcc68('0x29')]);_0x3445a9[_0xcc68('0x2b')]=_[_0xcc68('0x41')](_0x570fff[_0xcc68('0x2b')]);_0x3445a9[_0xcc68('0x2c')]=_[_0xcc68('0x2d')](_0x3445a9[_0xcc68('0x2e')],_0x3445a9[_0xcc68('0x2b')]);_0x51c71b[_0xcc68('0x30')]=_[_0xcc68('0x2d')](_0x3445a9[_0xcc68('0x2e')],qs[_0xcc68('0x2f')](_0x570fff['query']['fields']));_0x51c71b['attributes']=_0x51c71b['attributes'][_0xcc68('0x31')]?_0x51c71b[_0xcc68('0x30')]:_0x3445a9['model'];_0x51c71b[_0xcc68('0x34')]=qs[_0xcc68('0x35')](_0x570fff[_0xcc68('0x2b')][_0xcc68('0x35')]);_0x51c71b[_0xcc68('0x37')]=qs[_0xcc68('0x2c')](_['pick'](_0x570fff[_0xcc68('0x2b')],_0x3445a9[_0xcc68('0x2c')]));if(_0x570fff['query']['filter']){_0x51c71b[_0xcc68('0x37')]=_[_0xcc68('0x43')](_0x51c71b[_0xcc68('0x37')],{'$or':_[_0xcc68('0x28')](_0x51c71b['attributes'],function(_0x13f324){var _0x196484={};_0x196484[_0x13f324]={'$like':'%'+_0x570fff[_0xcc68('0x2b')]['filter']+'%'};return _0x196484;})});}_0x51c71b=_[_0xcc68('0x43')]({},_0x51c71b,_0x570fff[_0xcc68('0x3a')]);return _0x5582db[_0xcc68('0x4a')](_0x51c71b);}})[_0xcc68('0x22')](function(_0x4533e5){if(_0x4533e5){_0x1f6841=_0x4533e5['length'];if(!_0x570fff[_0xcc68('0x2b')]['hasOwnProperty'](_0xcc68('0x33'))){_0x51c71b[_0xcc68('0x1c')]=qs[_0xcc68('0x1c')](_0x570fff['query'][_0xcc68('0x1c')]);_0x51c71b[_0xcc68('0x19')]=qs[_0xcc68('0x19')](_0x570fff[_0xcc68('0x2b')][_0xcc68('0x19')]);}return _0x5582db['getConditions'](_0x51c71b);}})[_0xcc68('0x22')](function(_0x2ccb5a){if(_0x2ccb5a){return _0x2ccb5a?{'count':_0x1f6841,'rows':_0x2ccb5a}:null;}})['then'](respondWithResult(_0x4e4b58,null))[_0xcc68('0x3e')](handleError(_0x4e4b58,null));};exports[_0xcc68('0x4d')]=function(_0x217f5f,_0x33cb4b,_0x3aa236){return db[_0xcc68('0x4e')][_0xcc68('0x44')]({'where':{'id':_0x217f5f['params']['id']}})[_0xcc68('0x22')](handleEntityNotFound(_0x33cb4b,null))[_0xcc68('0x22')](function(_0x32e768){if(_0x32e768){return _0x32e768[_0xcc68('0x4d')](_0x217f5f[_0xcc68('0x45')]['ids'],_[_0xcc68('0x49')](_0x217f5f[_0xcc68('0x45')],[_0xcc68('0x48'),'id'])||{});}})['then'](respondWithResult(_0x33cb4b,null))[_0xcc68('0x3e')](handleError(_0x33cb4b,null));};exports[_0xcc68('0x4f')]=function(_0x36977f,_0x247778,_0x1da74b){var _0x3bc0eb={};var _0xa3c550={};var _0x4df510;var _0x4f872f;return db['Automation'][_0xcc68('0x4b')]({'where':{'id':_0x36977f['params']['id']}})['then'](handleEntityNotFound(_0x247778,null))[_0xcc68('0x22')](function(_0xef730f){if(_0xef730f){_0x4df510=_0xef730f;_0xa3c550['model']=_[_0xcc68('0x41')](db[_0xcc68('0x4e')][_0xcc68('0x29')]);_0xa3c550[_0xcc68('0x2b')]=_[_0xcc68('0x41')](_0x36977f['query']);_0xa3c550[_0xcc68('0x2c')]=_[_0xcc68('0x2d')](_0xa3c550[_0xcc68('0x2e')],_0xa3c550['query']);_0x3bc0eb[_0xcc68('0x30')]=_['intersection'](_0xa3c550[_0xcc68('0x2e')],qs[_0xcc68('0x2f')](_0x36977f[_0xcc68('0x2b')][_0xcc68('0x2f')]));_0x3bc0eb[_0xcc68('0x30')]=_0x3bc0eb[_0xcc68('0x30')]['length']?_0x3bc0eb[_0xcc68('0x30')]:_0xa3c550[_0xcc68('0x2e')];_0x3bc0eb[_0xcc68('0x34')]=qs[_0xcc68('0x35')](_0x36977f[_0xcc68('0x2b')][_0xcc68('0x35')]);_0x3bc0eb[_0xcc68('0x37')]=qs[_0xcc68('0x2c')](_[_0xcc68('0x36')](_0x36977f['query'],_0xa3c550[_0xcc68('0x2c')]));if(_0x36977f[_0xcc68('0x2b')][_0xcc68('0x50')]){_0x3bc0eb[_0xcc68('0x37')]=_[_0xcc68('0x43')](_0x3bc0eb[_0xcc68('0x37')],{'$or':_[_0xcc68('0x28')](_0x3bc0eb[_0xcc68('0x30')],function(_0x1047c4){var _0x541172={};_0x541172[_0x1047c4]={'$like':'%'+_0x36977f['query'][_0xcc68('0x50')]+'%'};return _0x541172;})});}_0x3bc0eb=_[_0xcc68('0x43')]({},_0x3bc0eb,_0x36977f['options']);return _0x4df510[_0xcc68('0x4f')](_0x3bc0eb);}})['then'](function(_0x4bf50b){if(_0x4bf50b){_0x4f872f=_0x4bf50b['length'];if(!_0x36977f[_0xcc68('0x2b')][_0xcc68('0x32')](_0xcc68('0x33'))){_0x3bc0eb[_0xcc68('0x1c')]=qs[_0xcc68('0x1c')](_0x36977f['query'][_0xcc68('0x1c')]);_0x3bc0eb['offset']=qs[_0xcc68('0x19')](_0x36977f[_0xcc68('0x2b')]['offset']);}return _0x4df510['getActions'](_0x3bc0eb);}})[_0xcc68('0x22')](function(_0x5428db){if(_0x5428db){return _0x5428db?{'count':_0x4f872f,'rows':_0x5428db}:null;}})['then'](respondWithResult(_0x247778,null))['catch'](handleError(_0x247778,null));};
\ No newline at end of file
index cd7b0dd..1ac9963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d16=['request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','util','../../config/logger','api','bluebird'];(function(_0x357702,_0x203968){var _0x4dd94a=function(_0x11bc16){while(--_0x11bc16){_0x357702['push'](_0x357702['shift']());}};_0x4dd94a(++_0x203968);}(_0x5d16,0x1a0));var _0x65d1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d16[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x65d1('0x0'));var logger=require(_0x65d1('0x1'))(_0x65d1('0x2'));var moment=require('moment');var BPromise=require(_0x65d1('0x3'));var rp=require(_0x65d1('0x4'));var fs=require('fs');var path=require(_0x65d1('0x5'));var rimraf=require(_0x65d1('0x6'));var config=require(_0x65d1('0x7'));var attributes=require(_0x65d1('0x8'));module[_0x65d1('0x9')]=function(_0x53c7ff,_0xdae273){return _0x53c7ff[_0x65d1('0xa')](_0x65d1('0xb'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfeac=['./automation.attributes','define','Automation','tools_automations','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x609224,_0x526b5b){var _0x4144dd=function(_0x5364bd){while(--_0x5364bd){_0x609224['push'](_0x609224['shift']());}};_0x4144dd(++_0x526b5b);}(_0xfeac,0x14e));var _0xcfea=function(_0xf529ba,_0x47f543){_0xf529ba=_0xf529ba-0x0;var _0xe7e86e=_0xfeac[_0xf529ba];return _0xe7e86e;};'use strict';var _=require('lodash');var util=require(_0xcfea('0x0'));var logger=require(_0xcfea('0x1'))(_0xcfea('0x2'));var moment=require('moment');var BPromise=require(_0xcfea('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcfea('0x4'));var rimraf=require(_0xcfea('0x5'));var config=require('../../config/environment');var attributes=require(_0xcfea('0x6'));module['exports']=function(_0x4789ff,_0x1caab2){return _0x4789ff[_0xcfea('0x7')](_0xcfea('0x8'),attributes,{'tableName':_0xcfea('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe62a46..387889e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5242=['stringify','error','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s'];(function(_0x232b67,_0x3dc89e){var _0x39fcc0=function(_0x3e20c6){while(--_0x3e20c6){_0x232b67['push'](_0x232b67['shift']());}};_0x39fcc0(++_0x3dc89e);}(_0x5242,0x148));var _0x2524=function(_0x4acb8c,_0x2ae660){_0x4acb8c=_0x4acb8c-0x0;var _0x48d682=_0x5242[_0x4acb8c];return _0x48d682;};'use strict';var _=require(_0x2524('0x0'));var util=require(_0x2524('0x1'));var moment=require(_0x2524('0x2'));var BPromise=require(_0x2524('0x3'));var rs=require(_0x2524('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2524('0x5'))['db'];var utils=require(_0x2524('0x6'));var logger=require(_0x2524('0x7'))(_0x2524('0x8'));var config=require(_0x2524('0x9'));var jayson=require(_0x2524('0xa'));var client=jayson[_0x2524('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b070c,_0x1eca6b,_0x91975b){return new BPromise(function(_0x9f927c,_0x5729dd){return client['request'](_0x2b070c,_0x91975b)[_0x2524('0xc')](function(_0x2ecd8f){logger[_0x2524('0xd')]('Automation,\x20%s,\x20%s',_0x1eca6b,_0x2524('0xe'));logger[_0x2524('0xf')](_0x2524('0x10'),_0x1eca6b,_0x2524('0xe'),JSON[_0x2524('0x11')](_0x2ecd8f));if(_0x2ecd8f[_0x2524('0x12')]){if(_0x2ecd8f[_0x2524('0x12')]['code']===0x1f4){logger['error'](_0x2524('0x13'),_0x1eca6b,_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);return _0x5729dd(_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);}logger[_0x2524('0x12')](_0x2524('0x13'),_0x1eca6b,_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);return _0x9f927c(_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);}else{logger[_0x2524('0xd')](_0x2524('0x13'),_0x1eca6b,_0x2524('0xe'));_0x9f927c(_0x2ecd8f[_0x2524('0x15')][_0x2524('0x14')]);}})[_0x2524('0x16')](function(_0x14c347){logger[_0x2524('0x12')]('Automation,\x20%s,\x20%s',_0x1eca6b,_0x14c347);_0x5729dd(_0x14c347);});});}
\ No newline at end of file
+var _0xfe39=['../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils'];(function(_0x375eba,_0x453e06){var _0x1dd923=function(_0x4fc2cd){while(--_0x4fc2cd){_0x375eba['push'](_0x375eba['shift']());}};_0x1dd923(++_0x453e06);}(_0xfe39,0x1b3));var _0x9fe3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfe39[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x9fe3('0x0'));var util=require(_0x9fe3('0x1'));var moment=require('moment');var BPromise=require(_0x9fe3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9fe3('0x3'))['db'];var utils=require(_0x9fe3('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x9fe3('0x5'));var jayson=require(_0x9fe3('0x6'));var client=jayson[_0x9fe3('0x7')][_0x9fe3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xc469b7,_0x4183ce,_0x25868f){return new BPromise(function(_0x5a3bd6,_0x211eb2){return client[_0x9fe3('0x9')](_0xc469b7,_0x25868f)[_0x9fe3('0xa')](function(_0x35c391){logger[_0x9fe3('0xb')](_0x9fe3('0xc'),_0x4183ce,'request\x20sent');logger['debug'](_0x9fe3('0xd'),_0x4183ce,_0x9fe3('0xe'),JSON['stringify'](_0x35c391));if(_0x35c391[_0x9fe3('0xf')]){if(_0x35c391[_0x9fe3('0xf')][_0x9fe3('0x10')]===0x1f4){logger[_0x9fe3('0xf')]('Automation,\x20%s,\x20%s',_0x4183ce,_0x35c391[_0x9fe3('0xf')][_0x9fe3('0x11')]);return _0x211eb2(_0x35c391[_0x9fe3('0xf')][_0x9fe3('0x11')]);}logger['error']('Automation,\x20%s,\x20%s',_0x4183ce,_0x35c391[_0x9fe3('0xf')][_0x9fe3('0x11')]);return _0x5a3bd6(_0x35c391[_0x9fe3('0xf')][_0x9fe3('0x11')]);}else{logger[_0x9fe3('0xb')]('Automation,\x20%s,\x20%s',_0x4183ce,'request\x20sent');_0x5a3bd6(_0x35c391[_0x9fe3('0x12')][_0x9fe3('0x11')]);}})[_0x9fe3('0x13')](function(_0x2d28d4){logger['error'](_0x9fe3('0xc'),_0x4183ce,_0x2d28d4);_0x211eb2(_0x2d28d4);});});}
\ No newline at end of file
index 1fe6245..9e6a191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bde=['post','create','addConditions','addActions','put','update','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions','/:id/actions'];(function(_0x57a960,_0x22d68f){var _0x59a019=function(_0x599053){while(--_0x599053){_0x57a960['push'](_0x57a960['shift']());}};_0x59a019(++_0x22d68f);}(_0x0bde,0x110));var _0xe0bd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0bde[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xe0bd('0x0'));var util=require('util');var path=require(_0xe0bd('0x1'));var timeout=require(_0xe0bd('0x2'));var express=require('express');var router=express[_0xe0bd('0x3')]();var fs_extra=require(_0xe0bd('0x4'));var auth=require(_0xe0bd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe0bd('0x6'));var controller=require(_0xe0bd('0x7'));router[_0xe0bd('0x8')]('/',auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xa')]);router[_0xe0bd('0x8')](_0xe0bd('0xb'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xc')]);router[_0xe0bd('0x8')](_0xe0bd('0xd'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xe')]);router['get'](_0xe0bd('0xf'),auth[_0xe0bd('0x9')](),controller['getActions']);router[_0xe0bd('0x10')]('/',auth['isAuthenticated'](),controller[_0xe0bd('0x11')]);router[_0xe0bd('0x10')](_0xe0bd('0xd'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0x12')]);router[_0xe0bd('0x10')](_0xe0bd('0xf'),auth['isAuthenticated'](),controller[_0xe0bd('0x13')]);router[_0xe0bd('0x14')](_0xe0bd('0xb'),auth['isAuthenticated'](),controller[_0xe0bd('0x15')]);router['delete'](_0xe0bd('0xb'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0x16')]);module[_0xe0bd('0x17')]=router;
\ No newline at end of file
+var _0xb2b3=['/:id/actions','getActions','post','addConditions','addActions','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions'];(function(_0x609075,_0x2cdd84){var _0x178098=function(_0x3ddc53){while(--_0x3ddc53){_0x609075['push'](_0x609075['shift']());}};_0x178098(++_0x2cdd84);}(_0xb2b3,0x71));var _0x3b2b=function(_0x39a278,_0x54554d){_0x39a278=_0x39a278-0x0;var _0x59fe42=_0xb2b3[_0x39a278];return _0x59fe42;};'use strict';var multer=require(_0x3b2b('0x0'));var util=require(_0x3b2b('0x1'));var path=require(_0x3b2b('0x2'));var timeout=require(_0x3b2b('0x3'));var express=require(_0x3b2b('0x4'));var router=express[_0x3b2b('0x5')]();var fs_extra=require(_0x3b2b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3b2b('0x7'));var config=require(_0x3b2b('0x8'));var controller=require(_0x3b2b('0x9'));router[_0x3b2b('0xa')]('/',auth[_0x3b2b('0xb')](),controller[_0x3b2b('0xc')]);router[_0x3b2b('0xa')](_0x3b2b('0xd'),auth[_0x3b2b('0xb')](),controller[_0x3b2b('0xe')]);router[_0x3b2b('0xa')](_0x3b2b('0xf'),auth['isAuthenticated'](),controller[_0x3b2b('0x10')]);router[_0x3b2b('0xa')](_0x3b2b('0x11'),auth[_0x3b2b('0xb')](),controller[_0x3b2b('0x12')]);router[_0x3b2b('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3b2b('0x13')](_0x3b2b('0xf'),auth[_0x3b2b('0xb')](),controller[_0x3b2b('0x14')]);router['post'](_0x3b2b('0x11'),auth[_0x3b2b('0xb')](),controller[_0x3b2b('0x15')]);router[_0x3b2b('0x16')](_0x3b2b('0xd'),auth[_0x3b2b('0xb')](),controller['update']);router[_0x3b2b('0x17')](_0x3b2b('0xd'),auth['isAuthenticated'](),controller[_0x3b2b('0x18')]);module[_0x3b2b('0x19')]=router;
\ No newline at end of file
index 83a9ecc..5a8f97e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2085=['#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','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)','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)','sequelize','exports','STRING','name','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x2085,0x13f));var _0x5208=function(_0x5e343c,_0x5d5c6a){_0x5e343c=_0x5e343c-0x0;var _0x497243=_0x2085[_0x5e343c];return _0x497243;};'use strict';var Sequelize=require(_0x5208('0x0'));module[_0x5208('0x1')]={'name':{'type':Sequelize[_0x5208('0x2')],'unique':_0x5208('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x5208('0x4')](_0x5208('0x5')),'allowNull':![],'defaultValue':_0x5208('0x5')},'description':{'type':Sequelize[_0x5208('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x5208('0x6')},'limitCalls':{'type':Sequelize[_0x5208('0x7')](0x4)[_0x5208('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x5208('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x5208('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5208('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5208('0x10')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5208('0x2')],'defaultValue':_0x5208('0x11')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x5208('0x12'),_0x5208('0x13'),_0x5208('0x14')),'defaultValue':_0x5208('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5208('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5208('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5208('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5208('0x18')},'dialAMDMinWordLength':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x5208('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5208('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5208('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5208('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5208('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5208('0x4')](_0x5208('0x1d'),_0x5208('0x1e')),'defaultValue':_0x5208('0x1d')},'dialPrefix':{'type':Sequelize[_0x5208('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5208('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x20')},'dialDropMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x25')}};
\ No newline at end of file
+var _0x947a=['INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#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)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign'];(function(_0x22e47a,_0x4ea10c){var _0x15a12a=function(_0x4a097f){while(--_0x4a097f){_0x22e47a['push'](_0x22e47a['shift']());}};_0x15a12a(++_0x4ea10c);}(_0x947a,0x94));var _0xa947=function(_0x1cad51,_0x27ff4d){_0x1cad51=_0x1cad51-0x0;var _0x2ef33e=_0x947a[_0x1cad51];return _0x2ef33e;};'use strict';var Sequelize=require(_0xa947('0x0'));module[_0xa947('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xa947('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xa947('0x3')](_0xa947('0x4')),'allowNull':![],'defaultValue':_0xa947('0x4')},'description':{'type':Sequelize[_0xa947('0x5')]},'active':{'type':Sequelize[_0xa947('0x6')],'defaultValue':0x0,'comment':_0xa947('0x7')},'limitCalls':{'type':Sequelize[_0xa947('0x8')](0x4)[_0xa947('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xa947('0xa')},'dialOriginateCallerIdName':{'type':Sequelize[_0xa947('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xa947('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0xb')},'dialCongestionMaxRetry':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0xc')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xa947('0x8')](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa947('0xd')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa947('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0xe')},'dialBusyRetryFrequency':{'type':Sequelize[_0xa947('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa947('0xf')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa947('0x9')],'defaultValue':0x3,'comment':_0xa947('0x10')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xa947('0x8')](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xa947('0x11')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xa947('0x12')},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0xa947('0x13'),_0xa947('0x14')),'defaultValue':_0xa947('0x15')},'dialAMDActive':{'type':Sequelize[_0xa947('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xa947('0x8')](0x9)[_0xa947('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xa947('0x16')},'dialAMDGreeting':{'type':Sequelize[_0xa947('0x8')](0x9)[_0xa947('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xa947('0x17')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xa947('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xa947('0x18')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xa947('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xa947('0x19')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xa947('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xa947('0x8')](0x9)[_0xa947('0x9')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xa947('0x8')](0x5)[_0xa947('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xa947('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC',_0xa947('0x1b')),'defaultValue':_0xa947('0x1c')},'dialPrefix':{'type':Sequelize[_0xa947('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa947('0x1d')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xa947('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa947('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0x1f')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xa947('0x8')](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0x20')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa947('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xa947('0x8')](0x3)[_0xa947('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0x22')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xa947('0x8')](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa947('0x23')},'dialMachineMaxRetry':{'type':Sequelize[_0xa947('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0x24')},'dialMachineRetryFrequency':{'type':Sequelize[_0xa947('0x8')](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa947('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa947('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xa947('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa947('0x26')}};
\ No newline at end of file
index 6d580ce..36962c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb77=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','then','destroy','get','name','index','map','rawAttributes','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','merge','VIRTUAL','options','Campaign','count','include','findAll','rows','catch','show','params','includeAll','create','body','user','role','IvrCampaigns','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','UserProfileSection','userProfileId','UserProfileResource','error','update','findOne','CmHopper','order','CampaignId','filter','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','updatedAt','select','phone','field','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','COALESCE(phone,\x27\x27)','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','fast-json-patch','request-promise','moment','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'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xcb77,0x18c));var _0x7cb7=function(_0x46d87a,_0x5183db){_0x46d87a=_0x46d87a-0x0;var _0x115296=_0xcb77[_0x46d87a];return _0x115296;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7cb7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7cb7('0x1'));var rp=require(_0x7cb7('0x2'));var moment=require(_0x7cb7('0x3'));var BPromise=require(_0x7cb7('0x4'));var Mustache=require(_0x7cb7('0x5'));var util=require(_0x7cb7('0x6'));var path=require(_0x7cb7('0x7'));var sox=require(_0x7cb7('0x8'));var csv=require('to-csv');var ejs=require(_0x7cb7('0x9'));var fs=require('fs');var fs_extra=require(_0x7cb7('0xa'));var _=require(_0x7cb7('0xb'));var squel=require(_0x7cb7('0xc'));var crypto=require(_0x7cb7('0xd'));var jsforce=require(_0x7cb7('0xe'));var deskjs=require(_0x7cb7('0xf'));var toCsv=require(_0x7cb7('0x10'));var querystring=require(_0x7cb7('0x11'));var Papa=require(_0x7cb7('0x12'));var Redis=require(_0x7cb7('0x13'));var authService=require(_0x7cb7('0x14'));var qs=require(_0x7cb7('0x15'));var as=require(_0x7cb7('0x16'));var hardwareService=require(_0x7cb7('0x17'));var logger=require(_0x7cb7('0x18'))(_0x7cb7('0x19'));var utils=require(_0x7cb7('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x7cb7('0x1b'));var db=require(_0x7cb7('0x1c'))['db'];function respondWithStatusCode(_0x4603fa,_0x8ba97d){_0x8ba97d=_0x8ba97d||0xcc;return function(_0x127651){if(_0x127651){return _0x4603fa[_0x7cb7('0x1d')](_0x8ba97d);}return _0x4603fa[_0x7cb7('0x1e')](_0x8ba97d)[_0x7cb7('0x1f')]();};}function respondWithResult(_0x5d97c5,_0x54d7bd){_0x54d7bd=_0x54d7bd||0xc8;return function(_0xa43a0f){if(_0xa43a0f){return _0x5d97c5[_0x7cb7('0x1e')](_0x54d7bd)[_0x7cb7('0x20')](_0xa43a0f);}};}function respondWithFilteredResult(_0x414dee,_0x1c9fac){return function(_0x2e16e2){if(_0x2e16e2){var _0x32833e=typeof _0x1c9fac['offset']===_0x7cb7('0x21')&&typeof _0x1c9fac[_0x7cb7('0x22')]===_0x7cb7('0x21');var _0x3fb472=_0x2e16e2['count'];var _0x53c06e=_0x32833e?0x0:_0x1c9fac[_0x7cb7('0x23')];var _0x25f0d1=_0x32833e?_0x2e16e2['count']:_0x1c9fac[_0x7cb7('0x23')]+_0x1c9fac[_0x7cb7('0x22')];var _0x1d8598;if(_0x25f0d1>=_0x3fb472){_0x25f0d1=_0x3fb472;_0x1d8598=0xc8;}else{_0x1d8598=0xce;}_0x414dee[_0x7cb7('0x1e')](_0x1d8598);return _0x414dee[_0x7cb7('0x24')](_0x7cb7('0x25'),_0x53c06e+'-'+_0x25f0d1+'/'+_0x3fb472)['json'](_0x2e16e2);}return null;};}function patchUpdates(_0x3728e4){return function(_0x4338af){try{jsonpatch[_0x7cb7('0x26')](_0x4338af,_0x3728e4,!![]);}catch(_0x169d24){return BPromise[_0x7cb7('0x27')](_0x169d24);}return _0x4338af[_0x7cb7('0x28')]();};}function saveUpdates(_0x409ce8,_0x503f67){return function(_0x2c0beb){if(_0x2c0beb){return _0x2c0beb['update'](_0x409ce8)[_0x7cb7('0x29')](function(_0x2252b7){return _0x2252b7;});}return null;};}function removeEntity(_0xb01bcd,_0x58502f){return function(_0x3de0c3){if(_0x3de0c3){return _0x3de0c3[_0x7cb7('0x2a')]()[_0x7cb7('0x29')](function(){var _0x115fe1=_0x3de0c3[_0x7cb7('0x2b')]({'plain':!![]});var _0x40741d='IvrCampaigns';return db['UserProfileResource'][_0x7cb7('0x2a')]({'where':{'type':_0x40741d,'resourceId':_0x115fe1['id']}})[_0x7cb7('0x29')](function(){return _0x3de0c3;});})[_0x7cb7('0x29')](function(){_0xb01bcd[_0x7cb7('0x1e')](0xcc)[_0x7cb7('0x1f')]();});}};}function handleEntityNotFound(_0x51970d,_0x15b8f0){return function(_0x59e7b2){if(!_0x59e7b2){_0x51970d['sendStatus'](0x194);}return _0x59e7b2;};}function handleError(_0x537b8b,_0x5e6179){_0x5e6179=_0x5e6179||0x1f4;return function(_0x5bb20f){logger['error'](_0x5bb20f['stack']);if(_0x5bb20f[_0x7cb7('0x2c')]){delete _0x5bb20f[_0x7cb7('0x2c')];}_0x537b8b['status'](_0x5e6179)['send'](_0x5bb20f);};}exports[_0x7cb7('0x2d')]=function(_0x17d1a0,_0x14ee55){var _0x36ef67={},_0x5b48e2={},_0x52f166={'count':0x0,'rows':[]};var _0x2b13e4=_[_0x7cb7('0x2e')](db['Campaign'][_0x7cb7('0x2f')],function(_0xc24a62){return{'name':_0xc24a62['fieldName'],'type':_0xc24a62[_0x7cb7('0x30')][_0x7cb7('0x31')]};});_0x5b48e2['model']=_[_0x7cb7('0x2e')](_0x2b13e4,_0x7cb7('0x2c'));_0x5b48e2[_0x7cb7('0x32')]=_[_0x7cb7('0x33')](_0x17d1a0[_0x7cb7('0x32')]);_0x5b48e2['filters']=_['intersection'](_0x5b48e2[_0x7cb7('0x34')],_0x5b48e2[_0x7cb7('0x32')]);_0x36ef67[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x5b48e2['model'],qs[_0x7cb7('0x37')](_0x17d1a0[_0x7cb7('0x32')]['fields']));_0x36ef67[_0x7cb7('0x35')]=_0x36ef67[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x36ef67['attributes']:_0x5b48e2[_0x7cb7('0x34')];if(!_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x36ef67[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x36ef67[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x23')]);}_0x36ef67['order']=qs[_0x7cb7('0x3b')](_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x36ef67[_0x7cb7('0x3c')]=qs['filters'](_[_0x7cb7('0x3d')](_0x17d1a0['query'],_0x5b48e2[_0x7cb7('0x3e')]),_0x2b13e4);if(_0x17d1a0[_0x7cb7('0x32')]['filter']){_0x36ef67['where']=_[_0x7cb7('0x3f')](_0x36ef67[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x2b13e4,function(_0x45ddb1){if(_0x45ddb1[_0x7cb7('0x30')]!==_0x7cb7('0x40')){var _0x1d2a71={};_0x1d2a71[_0x45ddb1[_0x7cb7('0x2c')]]={'$like':'%'+_0x17d1a0[_0x7cb7('0x32')]['filter']+'%'};return _0x1d2a71;}})});}_0x36ef67=_['merge']({},_0x36ef67,_0x17d1a0[_0x7cb7('0x41')]);var _0x23f7a3={'where':_0x36ef67[_0x7cb7('0x3c')]};return db[_0x7cb7('0x42')][_0x7cb7('0x43')](_0x23f7a3)[_0x7cb7('0x29')](function(_0x203e17){_0x52f166[_0x7cb7('0x43')]=_0x203e17;if(_0x17d1a0['query']['includeAll']){_0x36ef67[_0x7cb7('0x44')]=[{'all':!![]}];}return db[_0x7cb7('0x42')][_0x7cb7('0x45')](_0x36ef67);})[_0x7cb7('0x29')](function(_0x4afd68){_0x52f166[_0x7cb7('0x46')]=_0x4afd68;return _0x52f166;})['then'](respondWithFilteredResult(_0x14ee55,_0x36ef67))[_0x7cb7('0x47')](handleError(_0x14ee55,null));};exports[_0x7cb7('0x48')]=function(_0xb46e6a,_0x474b33){var _0x24bee2={'raw':![],'where':{'id':_0xb46e6a[_0x7cb7('0x49')]['id']}},_0x547b07={};_0x547b07[_0x7cb7('0x34')]=_[_0x7cb7('0x33')](db[_0x7cb7('0x42')][_0x7cb7('0x2f')]);_0x547b07[_0x7cb7('0x32')]=_['keys'](_0xb46e6a[_0x7cb7('0x32')]);_0x547b07['filters']=_[_0x7cb7('0x36')](_0x547b07['model'],_0x547b07[_0x7cb7('0x32')]);_0x24bee2[_0x7cb7('0x35')]=_['intersection'](_0x547b07[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0xb46e6a[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x24bee2[_0x7cb7('0x35')]=_0x24bee2[_0x7cb7('0x35')]['length']?_0x24bee2['attributes']:_0x547b07[_0x7cb7('0x34')];if(_0xb46e6a[_0x7cb7('0x32')][_0x7cb7('0x4a')]){_0x24bee2[_0x7cb7('0x44')]=[{'all':!![]}];}_0x24bee2=_[_0x7cb7('0x3f')]({},_0x24bee2,_0xb46e6a['options']);return db[_0x7cb7('0x42')]['find'](_0x24bee2)[_0x7cb7('0x29')](handleEntityNotFound(_0x474b33,null))[_0x7cb7('0x29')](respondWithResult(_0x474b33,null))['catch'](handleError(_0x474b33,null));};exports[_0x7cb7('0x4b')]=function(_0x15685a,_0x17f9b1){return db['Campaign'][_0x7cb7('0x4b')](_0x15685a[_0x7cb7('0x4c')],{})[_0x7cb7('0x29')](function(_0x4b7fb0){var _0x3e0f65=_0x15685a[_0x7cb7('0x4d')][_0x7cb7('0x2b')]({'plain':!![]});if(!_0x3e0f65)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3e0f65[_0x7cb7('0x4e')]===_0x7cb7('0x4d')){var _0x479380=_0x4b7fb0[_0x7cb7('0x2b')]({'plain':!![]});var _0xf65e9f=_0x7cb7('0x4f');return db['UserProfileSection'][_0x7cb7('0x50')]({'where':{'name':_0xf65e9f,'userProfileId':_0x3e0f65['userProfileId']},'raw':!![]})['then'](function(_0x59fb5c){if(_0x59fb5c&&_0x59fb5c[_0x7cb7('0x51')]===0x0){return db['UserProfileResource'][_0x7cb7('0x4b')]({'name':_0x479380[_0x7cb7('0x2c')],'resourceId':_0x479380['id'],'type':_0x59fb5c[_0x7cb7('0x2c')],'sectionId':_0x59fb5c['id']},{})[_0x7cb7('0x29')](function(){return _0x4b7fb0;});}else{return _0x4b7fb0;}})[_0x7cb7('0x47')](function(_0x1186cc){logger['error'](_0x7cb7('0x52'),_0x1186cc);throw _0x1186cc;});}return _0x4b7fb0;})['then'](respondWithResult(_0x17f9b1,0xc9))[_0x7cb7('0x47')](handleError(_0x17f9b1,null));};exports[_0x7cb7('0x53')]=function(_0x4ccf70,_0x5aff50){var _0x25ed41={'where':{'id':_0x4ccf70['params']['id']}},_0x2c77c9={};_0x2c77c9[_0x7cb7('0x34')]=_['keys'](db['Campaign'][_0x7cb7('0x2f')]);_0x25ed41[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x2c77c9[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x4ccf70[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x25ed41[_0x7cb7('0x35')]=_0x25ed41[_0x7cb7('0x35')]['length']?_0x25ed41[_0x7cb7('0x35')]:_0x2c77c9[_0x7cb7('0x34')];if(_0x4ccf70[_0x7cb7('0x32')]['includeAll']){_0x25ed41[_0x7cb7('0x44')]=[{'all':!![]}];}_0x25ed41=_[_0x7cb7('0x3f')]({},_0x25ed41,_0x4ccf70['options']);return db['Campaign']['find'](_0x25ed41)[_0x7cb7('0x29')](handleEntityNotFound(_0x5aff50,null))['then'](function(_0x2c2d66){if(_0x2c2d66){var _0x2d966e=_0x2c2d66[_0x7cb7('0x2b')]({'plain':!![]});_0x2d966e=qs[_0x7cb7('0x54')](_0x2d966e,['id',_0x7cb7('0x55'),'updatedAt']);_0x4ccf70['body']=_[_0x7cb7('0x54')](_0x4ccf70[_0x7cb7('0x4c')],['id','createdAt','updatedAt']);return db[_0x7cb7('0x42')]['create'](_['merge'](_0x2d966e,_0x4ccf70[_0x7cb7('0x4c')]),{'include':_0x4ccf70[_0x7cb7('0x32')][_0x7cb7('0x4a')]?[{'all':!![]}]:undefined})[_0x7cb7('0x29')](function(_0xec24bf){var _0x57817e=_0x4ccf70[_0x7cb7('0x4d')][_0x7cb7('0x2b')]({'plain':!![]});if(!_0x57817e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x57817e['role']==='user'){var _0x15e21c=_0xec24bf['get']({'plain':!![]});var _0xaa1446=_0x7cb7('0x4f');return db[_0x7cb7('0x56')][_0x7cb7('0x50')]({'where':{'name':_0xaa1446,'userProfileId':_0x57817e[_0x7cb7('0x57')]},'raw':!![]})['then'](function(_0x20cf4f){if(_0x20cf4f&&_0x20cf4f[_0x7cb7('0x51')]===0x0){return db[_0x7cb7('0x58')][_0x7cb7('0x4b')]({'name':_0x15e21c[_0x7cb7('0x2c')],'resourceId':_0x15e21c['id'],'type':_0x20cf4f[_0x7cb7('0x2c')],'sectionId':_0x20cf4f['id']},{})['then'](function(){return _0xec24bf;});}else{return _0xec24bf;}})['catch'](function(_0xc68500){logger[_0x7cb7('0x59')](_0x7cb7('0x52'),_0xc68500);throw _0xc68500;});}return _0xec24bf;});}})[_0x7cb7('0x29')](respondWithResult(_0x5aff50,0xc9))[_0x7cb7('0x47')](handleError(_0x5aff50,null));};exports[_0x7cb7('0x5a')]=function(_0x1d5de9,_0xca2f31){if(_0x1d5de9[_0x7cb7('0x4c')]['id']){delete _0x1d5de9[_0x7cb7('0x4c')]['id'];}return db[_0x7cb7('0x42')]['find']({'where':{'id':_0x1d5de9[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0xca2f31,null))[_0x7cb7('0x29')](saveUpdates(_0x1d5de9[_0x7cb7('0x4c')],null))[_0x7cb7('0x29')](respondWithResult(_0xca2f31,null))['catch'](handleError(_0xca2f31,null));};exports['destroy']=function(_0x27cde5,_0x53b6fb){return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x27cde5['params']['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x53b6fb,null))[_0x7cb7('0x29')](removeEntity(_0x53b6fb,null))[_0x7cb7('0x47')](handleError(_0x53b6fb,null));};exports['getHoppers']=function(_0x19f05e,_0x5d15e0,_0x4132c4){var _0x26046e={'raw':!![],'where':{}};var _0x3e1f58={};var _0x7ec59b={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')][_0x7cb7('0x5b')]({'where':{'id':_0x19f05e[_0x7cb7('0x49')]['id']}})['then'](handleEntityNotFound(_0x5d15e0,null))[_0x7cb7('0x29')](function(_0x16ec1b){if(_0x16ec1b){_0x3e1f58[_0x7cb7('0x34')]=_[_0x7cb7('0x33')](db[_0x7cb7('0x5c')][_0x7cb7('0x2f')]);_0x3e1f58[_0x7cb7('0x32')]=_['keys'](_0x19f05e[_0x7cb7('0x32')]);_0x3e1f58[_0x7cb7('0x3e')]=_[_0x7cb7('0x36')](_0x3e1f58['model'],_0x3e1f58['query']);_0x26046e['attributes']=_['intersection'](_0x3e1f58[_0x7cb7('0x34')],qs['fields'](_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x26046e[_0x7cb7('0x35')]=_0x26046e['attributes'][_0x7cb7('0x38')]?_0x26046e[_0x7cb7('0x35')]:_0x3e1f58[_0x7cb7('0x34')];if(!_0x19f05e['query']['hasOwnProperty']('nolimit')){_0x26046e[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x26046e[_0x7cb7('0x23')]=qs['offset'](_0x19f05e[_0x7cb7('0x32')]['offset']);}_0x26046e[_0x7cb7('0x5d')]=qs[_0x7cb7('0x3b')](_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x26046e[_0x7cb7('0x3c')]=qs['filters'](_[_0x7cb7('0x3d')](_0x19f05e[_0x7cb7('0x32')],_0x3e1f58[_0x7cb7('0x3e')]));_0x26046e[_0x7cb7('0x3c')][_0x7cb7('0x5e')]=_0x16ec1b['id'];if(_0x19f05e['query'][_0x7cb7('0x5f')]){_0x26046e['where']=_[_0x7cb7('0x3f')](_0x26046e['where'],{'$or':_[_0x7cb7('0x2e')](_0x26046e[_0x7cb7('0x35')],function(_0x4a0656){var _0x21e4b0={};_0x21e4b0[_0x4a0656]={'$like':'%'+_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x21e4b0;})});}_0x26046e=_[_0x7cb7('0x3f')]({},_0x26046e,_0x19f05e[_0x7cb7('0x41')]);return db[_0x7cb7('0x5c')][_0x7cb7('0x43')]({'where':_0x26046e[_0x7cb7('0x3c')]})[_0x7cb7('0x29')](function(_0x5d003a){_0x7ec59b['count']=_0x5d003a;if(_0x19f05e[_0x7cb7('0x32')]['includeAll']){_0x26046e[_0x7cb7('0x44')]=[{'all':!![]}];}return db[_0x7cb7('0x5c')]['findAll'](_0x26046e);})['then'](function(_0x478596){_0x7ec59b[_0x7cb7('0x46')]=_0x478596;return _0x7ec59b;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x5d15e0,_0x26046e))[_0x7cb7('0x47')](handleError(_0x5d15e0,null));};exports[_0x7cb7('0x60')]=function(_0x859ee,_0x306909,_0x24bad6){var _0x2361db={'raw':!![],'where':{}};var _0x1aedb0={};var _0x5a9c40={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')][_0x7cb7('0x5b')]({'where':{'id':_0x859ee[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x306909,null))[_0x7cb7('0x29')](function(_0x2754eb){if(_0x2754eb){_0x1aedb0[_0x7cb7('0x34')]=_['keys'](db[_0x7cb7('0x61')]['rawAttributes']);_0x1aedb0[_0x7cb7('0x32')]=_[_0x7cb7('0x33')](_0x859ee[_0x7cb7('0x32')]);_0x1aedb0[_0x7cb7('0x3e')]=_[_0x7cb7('0x36')](_0x1aedb0[_0x7cb7('0x34')],_0x1aedb0[_0x7cb7('0x32')]);_0x2361db[_0x7cb7('0x35')]=_['intersection'](_0x1aedb0[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x2361db[_0x7cb7('0x35')]=_0x2361db[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x2361db[_0x7cb7('0x35')]:_0x1aedb0[_0x7cb7('0x34')];if(!_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x2361db[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x859ee['query'][_0x7cb7('0x22')]);_0x2361db[_0x7cb7('0x23')]=qs['offset'](_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x23')]);}_0x2361db['order']=qs[_0x7cb7('0x3b')](_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x2361db['where']=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x859ee['query'],_0x1aedb0[_0x7cb7('0x3e')]));_0x2361db['where'][_0x7cb7('0x5e')]=_0x2754eb['id'];if(_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x2361db['where']=_[_0x7cb7('0x3f')](_0x2361db[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x2361db[_0x7cb7('0x35')],function(_0x47a4f5){var _0xa679db={};_0xa679db[_0x47a4f5]={'$like':'%'+_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0xa679db;})});}_0x2361db=_['merge']({},_0x2361db,_0x859ee['options']);return db[_0x7cb7('0x61')][_0x7cb7('0x43')]({'where':_0x2361db[_0x7cb7('0x3c')]})[_0x7cb7('0x29')](function(_0x2faf7b){_0x5a9c40[_0x7cb7('0x43')]=_0x2faf7b;if(_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x4a')]){_0x2361db[_0x7cb7('0x44')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x7cb7('0x45')](_0x2361db);})['then'](function(_0x3123fc){_0x5a9c40[_0x7cb7('0x46')]=_0x3123fc;return _0x5a9c40;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x306909,_0x2361db))['catch'](handleError(_0x306909,null));};exports[_0x7cb7('0x62')]=function(_0x42d4fa,_0x8f80a,_0x421887){var _0x2d8186={'raw':!![],'where':{}};var _0x3a3dae={};var _0x1ba955={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')]['findOne']({'where':{'id':_0x42d4fa[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x8f80a,null))['then'](function(_0x2bee63){if(_0x2bee63){_0x3a3dae[_0x7cb7('0x34')]=_[_0x7cb7('0x33')](db['CmHopperFinal'][_0x7cb7('0x2f')]);_0x3a3dae['query']=_[_0x7cb7('0x33')](_0x42d4fa['query']);_0x3a3dae[_0x7cb7('0x3e')]=_['intersection'](_0x3a3dae[_0x7cb7('0x34')],_0x3a3dae[_0x7cb7('0x32')]);_0x2d8186[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x3a3dae[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x2d8186[_0x7cb7('0x35')]=_0x2d8186[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x2d8186[_0x7cb7('0x35')]:_0x3a3dae[_0x7cb7('0x34')];if(!_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x2d8186[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x2d8186[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x23')]);}_0x2d8186['order']=qs['sort'](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x2d8186[_0x7cb7('0x3c')]=qs['filters'](_[_0x7cb7('0x3d')](_0x42d4fa['query'],_0x3a3dae['filters']));_0x2d8186['where']['CampaignId']=_0x2bee63['id'];if(_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x2d8186[_0x7cb7('0x3c')]=_[_0x7cb7('0x3f')](_0x2d8186[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x2d8186[_0x7cb7('0x35')],function(_0x22cee9){var _0x2a93bb={};_0x2a93bb[_0x22cee9]={'$like':'%'+_0x42d4fa[_0x7cb7('0x32')]['filter']+'%'};return _0x2a93bb;})});}_0x2d8186=_['merge']({},_0x2d8186,_0x42d4fa[_0x7cb7('0x41')]);return db[_0x7cb7('0x63')][_0x7cb7('0x43')]({'where':_0x2d8186['where']})[_0x7cb7('0x29')](function(_0x4540c6){_0x1ba955['count']=_0x4540c6;if(_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x4a')]){_0x2d8186[_0x7cb7('0x44')]=[{'all':!![]}];}return db[_0x7cb7('0x63')][_0x7cb7('0x45')](_0x2d8186);})[_0x7cb7('0x29')](function(_0x442303){_0x1ba955[_0x7cb7('0x46')]=_0x442303;return _0x1ba955;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x8f80a,_0x2d8186))[_0x7cb7('0x47')](handleError(_0x8f80a,null));};exports['getHopperBlacks']=function(_0x52c97e,_0x4ddc21,_0x56f42d){var _0x5dba97={'raw':!![],'where':{}};var _0x11c205={};var _0x451015={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')][_0x7cb7('0x5b')]({'where':{'id':_0x52c97e[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x4ddc21,null))['then'](function(_0x838d95){if(_0x838d95){_0x11c205[_0x7cb7('0x34')]=_['keys'](db['CmHopperBlack'][_0x7cb7('0x2f')]);_0x11c205['query']=_[_0x7cb7('0x33')](_0x52c97e[_0x7cb7('0x32')]);_0x11c205['filters']=_[_0x7cb7('0x36')](_0x11c205[_0x7cb7('0x34')],_0x11c205['query']);_0x5dba97[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x11c205[_0x7cb7('0x34')],qs['fields'](_0x52c97e['query'][_0x7cb7('0x37')]));_0x5dba97['attributes']=_0x5dba97[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x5dba97[_0x7cb7('0x35')]:_0x11c205[_0x7cb7('0x34')];if(!_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x39')]('nolimit')){_0x5dba97[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x52c97e['query'][_0x7cb7('0x22')]);_0x5dba97['offset']=qs[_0x7cb7('0x23')](_0x52c97e['query'][_0x7cb7('0x23')]);}_0x5dba97['order']=qs[_0x7cb7('0x3b')](_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x5dba97[_0x7cb7('0x3c')]=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x52c97e[_0x7cb7('0x32')],_0x11c205[_0x7cb7('0x3e')]));_0x5dba97[_0x7cb7('0x3c')][_0x7cb7('0x5e')]=_0x838d95['id'];if(_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x5dba97[_0x7cb7('0x3c')]=_[_0x7cb7('0x3f')](_0x5dba97[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x5dba97[_0x7cb7('0x35')],function(_0xb6d6b){var _0x3dc770={};_0x3dc770[_0xb6d6b]={'$like':'%'+_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x3dc770;})});}_0x5dba97=_['merge']({},_0x5dba97,_0x52c97e[_0x7cb7('0x41')]);return db[_0x7cb7('0x64')]['count']({'where':_0x5dba97[_0x7cb7('0x3c')]})['then'](function(_0x51fb0a){_0x451015[_0x7cb7('0x43')]=_0x51fb0a;if(_0x52c97e['query'][_0x7cb7('0x4a')]){_0x5dba97[_0x7cb7('0x44')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x7cb7('0x45')](_0x5dba97);})[_0x7cb7('0x29')](function(_0xcb5649){_0x451015[_0x7cb7('0x46')]=_0xcb5649;return _0x451015;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x4ddc21,_0x5dba97))['catch'](handleError(_0x4ddc21,null));};exports['getLists']=function(_0x33abb5,_0x539240,_0x3d0f79){var _0x353e76={};var _0x21a538={};var _0x45451c;var _0x485e7f;return db[_0x7cb7('0x42')]['findOne']({'where':{'id':_0x33abb5[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x539240,null))[_0x7cb7('0x29')](function(_0xedfbbe){if(_0xedfbbe){_0x45451c=_0xedfbbe;_0x21a538['model']=_[_0x7cb7('0x33')](db[_0x7cb7('0x65')][_0x7cb7('0x2f')]);_0x21a538[_0x7cb7('0x32')]=_['keys'](_0x33abb5[_0x7cb7('0x32')]);_0x21a538['filters']=_[_0x7cb7('0x36')](_0x21a538[_0x7cb7('0x34')],_0x21a538[_0x7cb7('0x32')]);_0x353e76[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x21a538[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x353e76['attributes']=_0x353e76[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x353e76[_0x7cb7('0x35')]:_0x21a538[_0x7cb7('0x34')];_0x353e76[_0x7cb7('0x5d')]=qs[_0x7cb7('0x3b')](_0x33abb5[_0x7cb7('0x32')]['sort']);_0x353e76[_0x7cb7('0x3c')]=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x33abb5[_0x7cb7('0x32')],_0x21a538[_0x7cb7('0x3e')]));if(_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x353e76['where']=_[_0x7cb7('0x3f')](_0x353e76[_0x7cb7('0x3c')],{'$or':_['map'](_0x353e76['attributes'],function(_0x34c8e9){var _0x5546e5={};_0x5546e5[_0x34c8e9]={'$like':'%'+_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x5546e5;})});}_0x353e76=_['merge']({},_0x353e76,_0x33abb5[_0x7cb7('0x41')]);return _0x45451c[_0x7cb7('0x66')](_0x353e76);}})[_0x7cb7('0x29')](function(_0xa2466f){if(_0xa2466f){_0x485e7f=_0xa2466f[_0x7cb7('0x38')];if(!_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x353e76['limit']=qs[_0x7cb7('0x22')](_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x353e76[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x23')]);}return _0x45451c['getLists'](_0x353e76);}})['then'](function(_0x319c36){if(_0x319c36){return _0x319c36?{'count':_0x485e7f,'rows':_0x319c36}:null;}})[_0x7cb7('0x29')](respondWithResult(_0x539240,null))[_0x7cb7('0x47')](handleError(_0x539240,null));};exports[_0x7cb7('0x67')]=function(_0x242ade,_0x21e867,_0x2ee4c1){var _0x2a1882,_0x26f84d;return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x242ade[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x21e867,null))[_0x7cb7('0x29')](function(_0x13e0d3){if(_0x13e0d3){_0x26f84d=_0x13e0d3;return _0x13e0d3[_0x7cb7('0x67')](_0x242ade[_0x7cb7('0x4c')][_0x7cb7('0x68')],_[_0x7cb7('0x54')](_0x242ade['body'],[_0x7cb7('0x68'),'id'])||{});}return null;})[_0x7cb7('0x69')](function(_0x22b4b9){var _0x595de0;_0x2a1882=_0x22b4b9||[];var _0x345a0b=[];if(_0x22b4b9){for(var _0x15d526=0x0;_0x15d526<_0x22b4b9[_0x7cb7('0x38')];_0x15d526+=0x1){var _0x44cb72=_0x22b4b9[_0x15d526]['get']({'plain':!![]});_0x26f84d['dialCheckDuplicateType']=_0x242ade[_0x7cb7('0x4c')][_0x7cb7('0x6a')]?_0x242ade[_0x7cb7('0x4c')]['dialCheckDuplicateType']:_0x26f84d['dialCheckDuplicateType'];switch(_0x26f84d[_0x7cb7('0x6a')]){case _0x7cb7('0x6b'):_0x595de0=squel[_0x7cb7('0x6c')]()[_0x7cb7('0x6d')](_0x7cb7('0x6e'))[_0x7cb7('0x6f')](['phone',_0x7cb7('0x70'),_0x7cb7('0x71'),_0x7cb7('0x72'),'CampaignId',_0x7cb7('0x55'),_0x7cb7('0x73')],squel[_0x7cb7('0x74')]()['field'](_0x7cb7('0x75'),_0x7cb7('0x75'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x70'))[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x44cb72[_0x7cb7('0x78')][_0x7cb7('0x79')](),_0x7cb7('0x72'))[_0x7cb7('0x76')](_0x242ade[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')](),_0x7cb7('0x5e'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x73'))[_0x7cb7('0x7a')](_0x7cb7('0x7b'))[_0x7cb7('0x3c')](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x44cb72[_0x7cb7('0x78')]['toString']())[_0x7cb7('0x3c')](_0x7cb7('0x7e'))[_0x7cb7('0x3c')](_0x7cb7('0x7f'),squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x80'))['from'](_0x7cb7('0x81'))[_0x7cb7('0x3c')](_0x7cb7('0x82'),_0x242ade[_0x7cb7('0x49')]['id']['toString']()))[_0x7cb7('0x3c')](_0x7cb7('0x7f'),squel[_0x7cb7('0x74')]()['field']('COALESCE(phone,\x27\x27)')['from']('cm_hopper')['where'](_0x7cb7('0x82'),_0x242ade[_0x7cb7('0x49')]['id']['toString']())))['toString']();break;case _0x7cb7('0x83'):_0x595de0=squel['insert']()[_0x7cb7('0x6d')](_0x7cb7('0x6e'))[_0x7cb7('0x6f')]([_0x7cb7('0x75'),_0x7cb7('0x70'),_0x7cb7('0x71'),'ListId',_0x7cb7('0x5e'),'createdAt',_0x7cb7('0x73')],squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x75'),'phone')[_0x7cb7('0x76')](_0x7cb7('0x77'),'scheduledAt')[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x44cb72['CmListId']['toString'](),_0x7cb7('0x72'))[_0x7cb7('0x76')](_0x242ade['params']['id'][_0x7cb7('0x79')](),_0x7cb7('0x5e'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x73'))['from']('cm_contacts')[_0x7cb7('0x3c')](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x44cb72[_0x7cb7('0x78')][_0x7cb7('0x79')]())[_0x7cb7('0x3c')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x7cb7('0x7f'),squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x84'))['from'](_0x7cb7('0x6e'))[_0x7cb7('0x3c')]('CampaignId\x20=\x20?',_0x242ade[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')]())))['toString']();break;default:_0x595de0=squel[_0x7cb7('0x6c')]()[_0x7cb7('0x6d')](_0x7cb7('0x6e'))[_0x7cb7('0x6f')](['phone',_0x7cb7('0x70'),'ContactId',_0x7cb7('0x72'),_0x7cb7('0x5e'),'createdAt',_0x7cb7('0x73')],squel['select']()[_0x7cb7('0x76')]('phone',_0x7cb7('0x75'))[_0x7cb7('0x76')]('NOW()',_0x7cb7('0x70'))[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x44cb72[_0x7cb7('0x78')][_0x7cb7('0x79')](),_0x7cb7('0x72'))['field'](_0x242ade[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')](),_0x7cb7('0x5e'))['field']('NOW()',_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),'updatedAt')['from'](_0x7cb7('0x7b'))[_0x7cb7('0x3c')](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x44cb72[_0x7cb7('0x78')]['toString']())[_0x7cb7('0x3c')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x345a0b[_0x7cb7('0x85')](db[_0x7cb7('0x86')][_0x7cb7('0x32')](_0x595de0));}return BPromise[_0x7cb7('0x87')](_0x345a0b);}})['then'](function(){return _0x2a1882;})[_0x7cb7('0x29')](respondWithResult(_0x21e867,null))[_0x7cb7('0x47')](handleError(_0x21e867,null));};exports[_0x7cb7('0x88')]=function(_0x12598d,_0x491132,_0x50ae36){return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x12598d[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x491132,null))[_0x7cb7('0x29')](function(_0x2ac1b6){if(_0x2ac1b6){return _0x2ac1b6[_0x7cb7('0x88')](_0x12598d['query'][_0x7cb7('0x68')]);}})['then'](function(_0x1ddf00){if(_0x1ddf00){return db[_0x7cb7('0x5c')][_0x7cb7('0x2a')]({'where':{'ListId':_0x12598d[_0x7cb7('0x32')][_0x7cb7('0x68')],'CampaignId':_0x12598d['params']['id']}})[_0x7cb7('0x29')](function(){return _0x1ddf00;});}})['then'](respondWithStatusCode(_0x491132,null))['catch'](handleError(_0x491132,null));};exports[_0x7cb7('0x89')]=function(_0x17620f,_0x1a7ed0,_0x51017c){var _0x5c8147={};var _0x5cd2ed={};var _0x71b9a0;var _0x45853d;return db['Campaign'][_0x7cb7('0x5b')]({'where':{'id':_0x17620f[_0x7cb7('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a7ed0,null))[_0x7cb7('0x29')](function(_0x460e22){if(_0x460e22){_0x71b9a0=_0x460e22;_0x5cd2ed['model']=_[_0x7cb7('0x33')](db[_0x7cb7('0x65')][_0x7cb7('0x2f')]);_0x5cd2ed[_0x7cb7('0x32')]=_['keys'](_0x17620f[_0x7cb7('0x32')]);_0x5cd2ed[_0x7cb7('0x3e')]=_[_0x7cb7('0x36')](_0x5cd2ed['model'],_0x5cd2ed['query']);_0x5c8147['attributes']=_['intersection'](_0x5cd2ed[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x17620f['query'][_0x7cb7('0x37')]));_0x5c8147[_0x7cb7('0x35')]=_0x5c8147[_0x7cb7('0x35')]['length']?_0x5c8147['attributes']:_0x5cd2ed[_0x7cb7('0x34')];_0x5c8147[_0x7cb7('0x5d')]=qs[_0x7cb7('0x3b')](_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x5c8147[_0x7cb7('0x3c')]=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x17620f['query'],_0x5cd2ed['filters']));if(_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x5c8147[_0x7cb7('0x3c')]=_[_0x7cb7('0x3f')](_0x5c8147[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x5c8147[_0x7cb7('0x35')],function(_0x22c0e9){var _0x42fb50={};_0x42fb50[_0x22c0e9]={'$like':'%'+_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x42fb50;})});}_0x5c8147=_[_0x7cb7('0x3f')]({},_0x5c8147,_0x17620f[_0x7cb7('0x41')]);return _0x71b9a0['getBlackLists'](_0x5c8147);}})[_0x7cb7('0x29')](function(_0x13ce15){if(_0x13ce15){_0x45853d=_0x13ce15[_0x7cb7('0x38')];if(!_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x39')]('nolimit')){_0x5c8147[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x5c8147[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x17620f['query'][_0x7cb7('0x23')]);}return _0x71b9a0[_0x7cb7('0x89')](_0x5c8147);}})[_0x7cb7('0x29')](function(_0x487bb1){if(_0x487bb1){return _0x487bb1?{'count':_0x45853d,'rows':_0x487bb1}:null;}})['then'](respondWithResult(_0x1a7ed0,null))[_0x7cb7('0x47')](handleError(_0x1a7ed0,null));};exports['addBlackLists']=function(_0x3fc688,_0x9a0cd5,_0x57d238){var _0x40650d,_0x2520ab;return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x3fc688[_0x7cb7('0x49')]['id']}})['then'](handleEntityNotFound(_0x9a0cd5,null))['then'](function(_0x3e78c9){if(_0x3e78c9){_0x2520ab=_0x3e78c9;return _0x3e78c9[_0x7cb7('0x8a')](_0x3fc688[_0x7cb7('0x4c')][_0x7cb7('0x68')],_['omit'](_0x3fc688[_0x7cb7('0x4c')],[_0x7cb7('0x68'),'id'])||{});}return null;})[_0x7cb7('0x69')](function(_0x11c21e){var _0x25dd09;_0x40650d=_0x11c21e||[];var _0x3bc2e6=[];if(_0x11c21e){for(var _0x1fc339=0x0;_0x1fc339<_0x11c21e[_0x7cb7('0x38')];_0x1fc339+=0x1){var _0x459c13=_0x11c21e[_0x1fc339][_0x7cb7('0x2b')]({'plain':!![]});_0x25dd09=squel[_0x7cb7('0x6c')]()[_0x7cb7('0x6d')](_0x7cb7('0x8b'))[_0x7cb7('0x6f')]([_0x7cb7('0x75'),'ContactId',_0x7cb7('0x72'),_0x7cb7('0x5e'),_0x7cb7('0x55'),_0x7cb7('0x73')],squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x75'),_0x7cb7('0x75'))[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x459c13[_0x7cb7('0x78')]['toString'](),_0x7cb7('0x72'))['field'](_0x3fc688[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')](),'CampaignId')[_0x7cb7('0x76')]('NOW()',_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x73'))[_0x7cb7('0x7a')]('cm_contacts')['where'](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x459c13[_0x7cb7('0x78')][_0x7cb7('0x79')]())[_0x7cb7('0x3c')](_0x7cb7('0x7e')))[_0x7cb7('0x79')]();_0x3bc2e6[_0x7cb7('0x85')](db[_0x7cb7('0x86')][_0x7cb7('0x32')](_0x25dd09));}return BPromise[_0x7cb7('0x87')](_0x3bc2e6);}})['then'](function(){return _0x40650d;})[_0x7cb7('0x29')](respondWithResult(_0x9a0cd5,null))[_0x7cb7('0x47')](handleError(_0x9a0cd5,null));};exports[_0x7cb7('0x8c')]=function(_0x592037,_0x45ee41,_0x1f1c83){return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x592037[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x45ee41,null))[_0x7cb7('0x29')](function(_0x3e9107){if(_0x3e9107){return _0x3e9107[_0x7cb7('0x8c')](_0x592037['query'][_0x7cb7('0x68')]);}})[_0x7cb7('0x29')](function(_0x3c3eee){if(_0x3c3eee){return db[_0x7cb7('0x64')][_0x7cb7('0x2a')]({'where':{'ListId':_0x592037['query'][_0x7cb7('0x68')],'CampaignId':_0x592037[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](function(){return _0x3c3eee;});}})[_0x7cb7('0x29')](respondWithStatusCode(_0x45ee41,null))['catch'](handleError(_0x45ee41,null));};
\ No newline at end of file
+var _0x99b6=['papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','IvrCampaigns','UserProfileResource','error','stack','name','index','Campaign','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','length','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','autoAssociation','update','destroy','getHoppers','findOne','CmHopper','filter','findAll','CmHopperHistory','CampaignId','CmHopperFinal','order','CmHopperBlack','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','NOW()','field','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','push','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','sequelize','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','lodash','crypto','jsforce','to-csv'];(function(_0x4a4d6b,_0x193a60){var _0x4405ba=function(_0x5dd088){while(--_0x5dd088){_0x4a4d6b['push'](_0x4a4d6b['shift']());}};_0x4405ba(++_0x193a60);}(_0x99b6,0x78));var _0x699b=function(_0x22e8a4,_0x5202d5){_0x22e8a4=_0x22e8a4-0x0;var _0x512941=_0x99b6[_0x22e8a4];return _0x512941;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x699b('0x0'));var zipdir=require(_0x699b('0x1'));var jsonpatch=require(_0x699b('0x2'));var rp=require('request-promise');var moment=require(_0x699b('0x3'));var BPromise=require(_0x699b('0x4'));var Mustache=require(_0x699b('0x5'));var util=require(_0x699b('0x6'));var path=require(_0x699b('0x7'));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(_0x699b('0x8'));var squel=require('squel');var crypto=require(_0x699b('0x9'));var jsforce=require(_0x699b('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x699b('0xb'));var querystring=require('querystring');var Papa=require(_0x699b('0xc'));var Redis=require('ioredis');var authService=require(_0x699b('0xd'));var qs=require(_0x699b('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x699b('0xf'));var logger=require(_0x699b('0x10'))('api');var utils=require(_0x699b('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x699b('0x12'));var db=require(_0x699b('0x13'))['db'];function respondWithStatusCode(_0x1699b8,_0x151346){_0x151346=_0x151346||0xcc;return function(_0x4d2e73){if(_0x4d2e73){return _0x1699b8[_0x699b('0x14')](_0x151346);}return _0x1699b8[_0x699b('0x15')](_0x151346)['end']();};}function respondWithResult(_0x2bb536,_0xae23e0){_0xae23e0=_0xae23e0||0xc8;return function(_0x800592){if(_0x800592){return _0x2bb536['status'](_0xae23e0)[_0x699b('0x16')](_0x800592);}};}function respondWithFilteredResult(_0x1ba4b3,_0x1b3fdb){return function(_0x3c3548){if(_0x3c3548){var _0x9f3736=typeof _0x1b3fdb[_0x699b('0x17')]===_0x699b('0x18')&&typeof _0x1b3fdb[_0x699b('0x19')]===_0x699b('0x18');var _0x34cbda=_0x3c3548[_0x699b('0x1a')];var _0x13f6aa=_0x9f3736?0x0:_0x1b3fdb[_0x699b('0x17')];var _0x2ca529=_0x9f3736?_0x3c3548[_0x699b('0x1a')]:_0x1b3fdb['offset']+_0x1b3fdb[_0x699b('0x19')];var _0x58dc49;if(_0x2ca529>=_0x34cbda){_0x2ca529=_0x34cbda;_0x58dc49=0xc8;}else{_0x58dc49=0xce;}_0x1ba4b3[_0x699b('0x15')](_0x58dc49);return _0x1ba4b3[_0x699b('0x1b')](_0x699b('0x1c'),_0x13f6aa+'-'+_0x2ca529+'/'+_0x34cbda)[_0x699b('0x16')](_0x3c3548);}return null;};}function patchUpdates(_0x4a0dbd){return function(_0x5bdffb){try{jsonpatch[_0x699b('0x1d')](_0x5bdffb,_0x4a0dbd,!![]);}catch(_0x590e40){return BPromise[_0x699b('0x1e')](_0x590e40);}return _0x5bdffb[_0x699b('0x1f')]();};}function saveUpdates(_0x2f6471,_0x96b9da){return function(_0x25e2de){if(_0x25e2de){return _0x25e2de['update'](_0x2f6471)[_0x699b('0x20')](function(_0x15ddfd){return _0x15ddfd;});}return null;};}function removeEntity(_0x38a4f1,_0x2aa49a){return function(_0x6888eb){if(_0x6888eb){return _0x6888eb['destroy']()[_0x699b('0x20')](function(){var _0x205528=_0x6888eb['get']({'plain':!![]});var _0x461202=_0x699b('0x21');return db[_0x699b('0x22')]['destroy']({'where':{'type':_0x461202,'resourceId':_0x205528['id']}})[_0x699b('0x20')](function(){return _0x6888eb;});})[_0x699b('0x20')](function(){_0x38a4f1[_0x699b('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x173dcd,_0x38e8bf){return function(_0x337fab){if(!_0x337fab){_0x173dcd['sendStatus'](0x194);}return _0x337fab;};}function handleError(_0xeb8ce5,_0xfb7b38){_0xfb7b38=_0xfb7b38||0x1f4;return function(_0x4972ee){logger[_0x699b('0x23')](_0x4972ee[_0x699b('0x24')]);if(_0x4972ee[_0x699b('0x25')]){delete _0x4972ee[_0x699b('0x25')];}_0xeb8ce5['status'](_0xfb7b38)['send'](_0x4972ee);};}exports[_0x699b('0x26')]=function(_0x30984e,_0xee7019){var _0x37f829={},_0x22c162={},_0x242976={'count':0x0,'rows':[]};var _0x1d85b8=_['map'](db[_0x699b('0x27')][_0x699b('0x28')],function(_0x1267ee){return{'name':_0x1267ee['fieldName'],'type':_0x1267ee[_0x699b('0x29')][_0x699b('0x2a')]};});_0x22c162[_0x699b('0x2b')]=_[_0x699b('0x2c')](_0x1d85b8,_0x699b('0x25'));_0x22c162[_0x699b('0x2d')]=_[_0x699b('0x2e')](_0x30984e[_0x699b('0x2d')]);_0x22c162[_0x699b('0x2f')]=_[_0x699b('0x30')](_0x22c162[_0x699b('0x2b')],_0x22c162[_0x699b('0x2d')]);_0x37f829[_0x699b('0x31')]=_['intersection'](_0x22c162[_0x699b('0x2b')],qs[_0x699b('0x32')](_0x30984e[_0x699b('0x2d')][_0x699b('0x32')]));_0x37f829[_0x699b('0x31')]=_0x37f829[_0x699b('0x31')]['length']?_0x37f829[_0x699b('0x31')]:_0x22c162[_0x699b('0x2b')];if(!_0x30984e[_0x699b('0x2d')][_0x699b('0x33')](_0x699b('0x34'))){_0x37f829['limit']=qs['limit'](_0x30984e[_0x699b('0x2d')][_0x699b('0x19')]);_0x37f829[_0x699b('0x17')]=qs[_0x699b('0x17')](_0x30984e['query']['offset']);}_0x37f829['order']=qs[_0x699b('0x35')](_0x30984e['query'][_0x699b('0x35')]);_0x37f829['where']=qs['filters'](_[_0x699b('0x36')](_0x30984e[_0x699b('0x2d')],_0x22c162['filters']),_0x1d85b8);if(_0x30984e[_0x699b('0x2d')]['filter']){_0x37f829[_0x699b('0x37')]=_[_0x699b('0x38')](_0x37f829[_0x699b('0x37')],{'$or':_[_0x699b('0x2c')](_0x1d85b8,function(_0x4dde0f){if(_0x4dde0f[_0x699b('0x29')]!==_0x699b('0x39')){var _0x127ede={};_0x127ede[_0x4dde0f[_0x699b('0x25')]]={'$like':'%'+_0x30984e[_0x699b('0x2d')]['filter']+'%'};return _0x127ede;}})});}_0x37f829=_[_0x699b('0x38')]({},_0x37f829,_0x30984e[_0x699b('0x3a')]);var _0x571463={'where':_0x37f829['where']};return db[_0x699b('0x27')][_0x699b('0x1a')](_0x571463)[_0x699b('0x20')](function(_0x4637e3){_0x242976[_0x699b('0x1a')]=_0x4637e3;if(_0x30984e[_0x699b('0x2d')][_0x699b('0x3b')]){_0x37f829[_0x699b('0x3c')]=[{'all':!![]}];}return db[_0x699b('0x27')]['findAll'](_0x37f829);})['then'](function(_0x5b6ce7){_0x242976[_0x699b('0x3d')]=_0x5b6ce7;return _0x242976;})[_0x699b('0x20')](respondWithFilteredResult(_0xee7019,_0x37f829))['catch'](handleError(_0xee7019,null));};exports[_0x699b('0x3e')]=function(_0x510257,_0x206860){var _0x17cd0b={'raw':![],'where':{'id':_0x510257[_0x699b('0x3f')]['id']}},_0x590677={};_0x590677[_0x699b('0x2b')]=_[_0x699b('0x2e')](db[_0x699b('0x27')]['rawAttributes']);_0x590677['query']=_[_0x699b('0x2e')](_0x510257['query']);_0x590677[_0x699b('0x2f')]=_[_0x699b('0x30')](_0x590677['model'],_0x590677['query']);_0x17cd0b[_0x699b('0x31')]=_['intersection'](_0x590677[_0x699b('0x2b')],qs['fields'](_0x510257[_0x699b('0x2d')][_0x699b('0x32')]));_0x17cd0b[_0x699b('0x31')]=_0x17cd0b[_0x699b('0x31')][_0x699b('0x40')]?_0x17cd0b[_0x699b('0x31')]:_0x590677[_0x699b('0x2b')];if(_0x510257[_0x699b('0x2d')][_0x699b('0x3b')]){_0x17cd0b[_0x699b('0x3c')]=[{'all':!![]}];}_0x17cd0b=_['merge']({},_0x17cd0b,_0x510257['options']);return db['Campaign'][_0x699b('0x41')](_0x17cd0b)[_0x699b('0x20')](handleEntityNotFound(_0x206860,null))['then'](respondWithResult(_0x206860,null))[_0x699b('0x42')](handleError(_0x206860,null));};exports['create']=function(_0x4f6ad8,_0x20795c){return db[_0x699b('0x27')][_0x699b('0x43')](_0x4f6ad8[_0x699b('0x44')],{})['then'](function(_0x243b60){var _0xc8bb1=_0x4f6ad8[_0x699b('0x45')]['get']({'plain':!![]});if(!_0xc8bb1)throw new Error(_0x699b('0x46'));if(_0xc8bb1[_0x699b('0x47')]===_0x699b('0x45')){var _0x4eaa95=_0x243b60[_0x699b('0x48')]({'plain':!![]});var _0x2e1707='IvrCampaigns';return db[_0x699b('0x49')][_0x699b('0x41')]({'where':{'name':_0x2e1707,'userProfileId':_0xc8bb1[_0x699b('0x4a')]},'raw':!![]})[_0x699b('0x20')](function(_0x5af7d5){if(_0x5af7d5&&_0x5af7d5['autoAssociation']===0x0){return db[_0x699b('0x22')][_0x699b('0x43')]({'name':_0x4eaa95[_0x699b('0x25')],'resourceId':_0x4eaa95['id'],'type':_0x5af7d5[_0x699b('0x25')],'sectionId':_0x5af7d5['id']},{})[_0x699b('0x20')](function(){return _0x243b60;});}else{return _0x243b60;}})[_0x699b('0x42')](function(_0x92ed49){logger[_0x699b('0x23')](_0x699b('0x4b'),_0x92ed49);throw _0x92ed49;});}return _0x243b60;})[_0x699b('0x20')](respondWithResult(_0x20795c,0xc9))[_0x699b('0x42')](handleError(_0x20795c,null));};exports[_0x699b('0x4c')]=function(_0x401b96,_0x402a55){var _0x55d594={'where':{'id':_0x401b96[_0x699b('0x3f')]['id']}},_0x286fc9={};_0x286fc9[_0x699b('0x2b')]=_[_0x699b('0x2e')](db['Campaign'][_0x699b('0x28')]);_0x55d594[_0x699b('0x31')]=_[_0x699b('0x30')](_0x286fc9[_0x699b('0x2b')],qs['fields'](_0x401b96[_0x699b('0x2d')][_0x699b('0x32')]));_0x55d594[_0x699b('0x31')]=_0x55d594[_0x699b('0x31')]['length']?_0x55d594[_0x699b('0x31')]:_0x286fc9[_0x699b('0x2b')];if(_0x401b96['query'][_0x699b('0x3b')]){_0x55d594[_0x699b('0x3c')]=[{'all':!![]}];}_0x55d594=_[_0x699b('0x38')]({},_0x55d594,_0x401b96[_0x699b('0x3a')]);return db[_0x699b('0x27')][_0x699b('0x41')](_0x55d594)['then'](handleEntityNotFound(_0x402a55,null))[_0x699b('0x20')](function(_0x1f35dc){if(_0x1f35dc){var _0x558922=_0x1f35dc[_0x699b('0x48')]({'plain':!![]});_0x558922=qs[_0x699b('0x4d')](_0x558922,['id',_0x699b('0x4e'),'updatedAt']);_0x401b96[_0x699b('0x44')]=_[_0x699b('0x4d')](_0x401b96[_0x699b('0x44')],['id',_0x699b('0x4e'),_0x699b('0x4f')]);return db['Campaign'][_0x699b('0x43')](_[_0x699b('0x38')](_0x558922,_0x401b96[_0x699b('0x44')]),{'include':_0x401b96[_0x699b('0x2d')][_0x699b('0x3b')]?[{'all':!![]}]:undefined})['then'](function(_0x3044a8){var _0x218f92=_0x401b96[_0x699b('0x45')][_0x699b('0x48')]({'plain':!![]});if(!_0x218f92)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x218f92[_0x699b('0x47')]===_0x699b('0x45')){var _0x137aa8=_0x3044a8[_0x699b('0x48')]({'plain':!![]});var _0x995e54=_0x699b('0x21');return db[_0x699b('0x49')][_0x699b('0x41')]({'where':{'name':_0x995e54,'userProfileId':_0x218f92[_0x699b('0x4a')]},'raw':!![]})[_0x699b('0x20')](function(_0x3a433c){if(_0x3a433c&&_0x3a433c[_0x699b('0x50')]===0x0){return db[_0x699b('0x22')]['create']({'name':_0x137aa8[_0x699b('0x25')],'resourceId':_0x137aa8['id'],'type':_0x3a433c[_0x699b('0x25')],'sectionId':_0x3a433c['id']},{})['then'](function(){return _0x3044a8;});}else{return _0x3044a8;}})[_0x699b('0x42')](function(_0x5cb5a1){logger[_0x699b('0x23')](_0x699b('0x4b'),_0x5cb5a1);throw _0x5cb5a1;});}return _0x3044a8;});}})['then'](respondWithResult(_0x402a55,0xc9))['catch'](handleError(_0x402a55,null));};exports[_0x699b('0x51')]=function(_0x11be63,_0x489f6b){if(_0x11be63['body']['id']){delete _0x11be63['body']['id'];}return db[_0x699b('0x27')][_0x699b('0x41')]({'where':{'id':_0x11be63['params']['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x489f6b,null))[_0x699b('0x20')](saveUpdates(_0x11be63[_0x699b('0x44')],null))[_0x699b('0x20')](respondWithResult(_0x489f6b,null))[_0x699b('0x42')](handleError(_0x489f6b,null));};exports[_0x699b('0x52')]=function(_0x1e290b,_0x1550b5){return db['Campaign']['find']({'where':{'id':_0x1e290b[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x1550b5,null))[_0x699b('0x20')](removeEntity(_0x1550b5,null))[_0x699b('0x42')](handleError(_0x1550b5,null));};exports[_0x699b('0x53')]=function(_0xd51781,_0x15db91,_0x1c95d9){var _0x556014={'raw':!![],'where':{}};var _0x29a549={};var _0x2eca2e={'count':0x0,'rows':[]};return db['Campaign'][_0x699b('0x54')]({'where':{'id':_0xd51781[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x15db91,null))['then'](function(_0x3ea632){if(_0x3ea632){_0x29a549[_0x699b('0x2b')]=_[_0x699b('0x2e')](db[_0x699b('0x55')][_0x699b('0x28')]);_0x29a549[_0x699b('0x2d')]=_[_0x699b('0x2e')](_0xd51781[_0x699b('0x2d')]);_0x29a549[_0x699b('0x2f')]=_[_0x699b('0x30')](_0x29a549[_0x699b('0x2b')],_0x29a549[_0x699b('0x2d')]);_0x556014['attributes']=_[_0x699b('0x30')](_0x29a549[_0x699b('0x2b')],qs[_0x699b('0x32')](_0xd51781['query'][_0x699b('0x32')]));_0x556014['attributes']=_0x556014[_0x699b('0x31')]['length']?_0x556014[_0x699b('0x31')]:_0x29a549[_0x699b('0x2b')];if(!_0xd51781[_0x699b('0x2d')]['hasOwnProperty'](_0x699b('0x34'))){_0x556014[_0x699b('0x19')]=qs[_0x699b('0x19')](_0xd51781[_0x699b('0x2d')][_0x699b('0x19')]);_0x556014[_0x699b('0x17')]=qs[_0x699b('0x17')](_0xd51781['query'][_0x699b('0x17')]);}_0x556014['order']=qs[_0x699b('0x35')](_0xd51781[_0x699b('0x2d')][_0x699b('0x35')]);_0x556014[_0x699b('0x37')]=qs[_0x699b('0x2f')](_[_0x699b('0x36')](_0xd51781['query'],_0x29a549['filters']));_0x556014[_0x699b('0x37')]['CampaignId']=_0x3ea632['id'];if(_0xd51781[_0x699b('0x2d')][_0x699b('0x56')]){_0x556014[_0x699b('0x37')]=_[_0x699b('0x38')](_0x556014[_0x699b('0x37')],{'$or':_[_0x699b('0x2c')](_0x556014[_0x699b('0x31')],function(_0x41e4e0){var _0x4f28b5={};_0x4f28b5[_0x41e4e0]={'$like':'%'+_0xd51781[_0x699b('0x2d')][_0x699b('0x56')]+'%'};return _0x4f28b5;})});}_0x556014=_[_0x699b('0x38')]({},_0x556014,_0xd51781[_0x699b('0x3a')]);return db['CmHopper'][_0x699b('0x1a')]({'where':_0x556014[_0x699b('0x37')]})[_0x699b('0x20')](function(_0x128119){_0x2eca2e[_0x699b('0x1a')]=_0x128119;if(_0xd51781['query'][_0x699b('0x3b')]){_0x556014[_0x699b('0x3c')]=[{'all':!![]}];}return db[_0x699b('0x55')][_0x699b('0x57')](_0x556014);})[_0x699b('0x20')](function(_0x30a531){_0x2eca2e[_0x699b('0x3d')]=_0x30a531;return _0x2eca2e;});}})['then'](respondWithFilteredResult(_0x15db91,_0x556014))[_0x699b('0x42')](handleError(_0x15db91,null));};exports['getHopperHistories']=function(_0x14a621,_0x589942,_0x285cca){var _0x11b8f5={'raw':!![],'where':{}};var _0x3094d1={};var _0x14d679={'count':0x0,'rows':[]};return db[_0x699b('0x27')][_0x699b('0x54')]({'where':{'id':_0x14a621[_0x699b('0x3f')]['id']}})['then'](handleEntityNotFound(_0x589942,null))[_0x699b('0x20')](function(_0x21971c){if(_0x21971c){_0x3094d1[_0x699b('0x2b')]=_[_0x699b('0x2e')](db[_0x699b('0x58')][_0x699b('0x28')]);_0x3094d1['query']=_[_0x699b('0x2e')](_0x14a621[_0x699b('0x2d')]);_0x3094d1[_0x699b('0x2f')]=_['intersection'](_0x3094d1['model'],_0x3094d1[_0x699b('0x2d')]);_0x11b8f5[_0x699b('0x31')]=_[_0x699b('0x30')](_0x3094d1[_0x699b('0x2b')],qs[_0x699b('0x32')](_0x14a621['query'][_0x699b('0x32')]));_0x11b8f5[_0x699b('0x31')]=_0x11b8f5['attributes'][_0x699b('0x40')]?_0x11b8f5['attributes']:_0x3094d1[_0x699b('0x2b')];if(!_0x14a621[_0x699b('0x2d')][_0x699b('0x33')]('nolimit')){_0x11b8f5[_0x699b('0x19')]=qs[_0x699b('0x19')](_0x14a621[_0x699b('0x2d')]['limit']);_0x11b8f5[_0x699b('0x17')]=qs[_0x699b('0x17')](_0x14a621[_0x699b('0x2d')][_0x699b('0x17')]);}_0x11b8f5['order']=qs[_0x699b('0x35')](_0x14a621['query'][_0x699b('0x35')]);_0x11b8f5[_0x699b('0x37')]=qs[_0x699b('0x2f')](_[_0x699b('0x36')](_0x14a621[_0x699b('0x2d')],_0x3094d1['filters']));_0x11b8f5['where'][_0x699b('0x59')]=_0x21971c['id'];if(_0x14a621[_0x699b('0x2d')][_0x699b('0x56')]){_0x11b8f5[_0x699b('0x37')]=_['merge'](_0x11b8f5[_0x699b('0x37')],{'$or':_[_0x699b('0x2c')](_0x11b8f5[_0x699b('0x31')],function(_0x1269ff){var _0x2d77ec={};_0x2d77ec[_0x1269ff]={'$like':'%'+_0x14a621[_0x699b('0x2d')]['filter']+'%'};return _0x2d77ec;})});}_0x11b8f5=_['merge']({},_0x11b8f5,_0x14a621[_0x699b('0x3a')]);return db[_0x699b('0x58')][_0x699b('0x1a')]({'where':_0x11b8f5[_0x699b('0x37')]})[_0x699b('0x20')](function(_0x1dcfaf){_0x14d679[_0x699b('0x1a')]=_0x1dcfaf;if(_0x14a621['query'][_0x699b('0x3b')]){_0x11b8f5[_0x699b('0x3c')]=[{'all':!![]}];}return db[_0x699b('0x58')][_0x699b('0x57')](_0x11b8f5);})[_0x699b('0x20')](function(_0x5c5ba7){_0x14d679[_0x699b('0x3d')]=_0x5c5ba7;return _0x14d679;});}})[_0x699b('0x20')](respondWithFilteredResult(_0x589942,_0x11b8f5))[_0x699b('0x42')](handleError(_0x589942,null));};exports['getHopperFinals']=function(_0x25db60,_0x2d9ce5,_0x15c39c){var _0x1e3d68={'raw':!![],'where':{}};var _0x2d9c58={};var _0x1f47f4={'count':0x0,'rows':[]};return db[_0x699b('0x27')][_0x699b('0x54')]({'where':{'id':_0x25db60[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x2d9ce5,null))['then'](function(_0x55fec7){if(_0x55fec7){_0x2d9c58[_0x699b('0x2b')]=_[_0x699b('0x2e')](db[_0x699b('0x5a')][_0x699b('0x28')]);_0x2d9c58[_0x699b('0x2d')]=_['keys'](_0x25db60['query']);_0x2d9c58[_0x699b('0x2f')]=_[_0x699b('0x30')](_0x2d9c58[_0x699b('0x2b')],_0x2d9c58[_0x699b('0x2d')]);_0x1e3d68[_0x699b('0x31')]=_[_0x699b('0x30')](_0x2d9c58['model'],qs[_0x699b('0x32')](_0x25db60[_0x699b('0x2d')]['fields']));_0x1e3d68['attributes']=_0x1e3d68[_0x699b('0x31')][_0x699b('0x40')]?_0x1e3d68[_0x699b('0x31')]:_0x2d9c58[_0x699b('0x2b')];if(!_0x25db60[_0x699b('0x2d')][_0x699b('0x33')]('nolimit')){_0x1e3d68[_0x699b('0x19')]=qs[_0x699b('0x19')](_0x25db60[_0x699b('0x2d')][_0x699b('0x19')]);_0x1e3d68[_0x699b('0x17')]=qs[_0x699b('0x17')](_0x25db60[_0x699b('0x2d')][_0x699b('0x17')]);}_0x1e3d68[_0x699b('0x5b')]=qs['sort'](_0x25db60[_0x699b('0x2d')][_0x699b('0x35')]);_0x1e3d68[_0x699b('0x37')]=qs[_0x699b('0x2f')](_[_0x699b('0x36')](_0x25db60['query'],_0x2d9c58[_0x699b('0x2f')]));_0x1e3d68['where'][_0x699b('0x59')]=_0x55fec7['id'];if(_0x25db60[_0x699b('0x2d')]['filter']){_0x1e3d68[_0x699b('0x37')]=_['merge'](_0x1e3d68[_0x699b('0x37')],{'$or':_['map'](_0x1e3d68[_0x699b('0x31')],function(_0x30548c){var _0x51ec93={};_0x51ec93[_0x30548c]={'$like':'%'+_0x25db60[_0x699b('0x2d')][_0x699b('0x56')]+'%'};return _0x51ec93;})});}_0x1e3d68=_['merge']({},_0x1e3d68,_0x25db60[_0x699b('0x3a')]);return db[_0x699b('0x5a')]['count']({'where':_0x1e3d68[_0x699b('0x37')]})[_0x699b('0x20')](function(_0xc21c26){_0x1f47f4[_0x699b('0x1a')]=_0xc21c26;if(_0x25db60['query'][_0x699b('0x3b')]){_0x1e3d68[_0x699b('0x3c')]=[{'all':!![]}];}return db[_0x699b('0x5a')]['findAll'](_0x1e3d68);})['then'](function(_0x1540ae){_0x1f47f4[_0x699b('0x3d')]=_0x1540ae;return _0x1f47f4;});}})[_0x699b('0x20')](respondWithFilteredResult(_0x2d9ce5,_0x1e3d68))[_0x699b('0x42')](handleError(_0x2d9ce5,null));};exports['getHopperBlacks']=function(_0x3a5b01,_0x2bfb22,_0x3b9a05){var _0x3d96eb={'raw':!![],'where':{}};var _0x5a44bb={};var _0x4d1332={'count':0x0,'rows':[]};return db[_0x699b('0x27')][_0x699b('0x54')]({'where':{'id':_0x3a5b01[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x2bfb22,null))['then'](function(_0x54cb0f){if(_0x54cb0f){_0x5a44bb[_0x699b('0x2b')]=_['keys'](db[_0x699b('0x5c')][_0x699b('0x28')]);_0x5a44bb[_0x699b('0x2d')]=_[_0x699b('0x2e')](_0x3a5b01[_0x699b('0x2d')]);_0x5a44bb[_0x699b('0x2f')]=_['intersection'](_0x5a44bb['model'],_0x5a44bb['query']);_0x3d96eb[_0x699b('0x31')]=_[_0x699b('0x30')](_0x5a44bb[_0x699b('0x2b')],qs[_0x699b('0x32')](_0x3a5b01[_0x699b('0x2d')][_0x699b('0x32')]));_0x3d96eb[_0x699b('0x31')]=_0x3d96eb[_0x699b('0x31')][_0x699b('0x40')]?_0x3d96eb[_0x699b('0x31')]:_0x5a44bb[_0x699b('0x2b')];if(!_0x3a5b01[_0x699b('0x2d')][_0x699b('0x33')](_0x699b('0x34'))){_0x3d96eb[_0x699b('0x19')]=qs[_0x699b('0x19')](_0x3a5b01[_0x699b('0x2d')][_0x699b('0x19')]);_0x3d96eb[_0x699b('0x17')]=qs['offset'](_0x3a5b01[_0x699b('0x2d')]['offset']);}_0x3d96eb[_0x699b('0x5b')]=qs['sort'](_0x3a5b01[_0x699b('0x2d')]['sort']);_0x3d96eb[_0x699b('0x37')]=qs[_0x699b('0x2f')](_['pick'](_0x3a5b01['query'],_0x5a44bb[_0x699b('0x2f')]));_0x3d96eb[_0x699b('0x37')][_0x699b('0x59')]=_0x54cb0f['id'];if(_0x3a5b01[_0x699b('0x2d')][_0x699b('0x56')]){_0x3d96eb[_0x699b('0x37')]=_[_0x699b('0x38')](_0x3d96eb[_0x699b('0x37')],{'$or':_['map'](_0x3d96eb[_0x699b('0x31')],function(_0x469371){var _0x1c7c81={};_0x1c7c81[_0x469371]={'$like':'%'+_0x3a5b01[_0x699b('0x2d')][_0x699b('0x56')]+'%'};return _0x1c7c81;})});}_0x3d96eb=_[_0x699b('0x38')]({},_0x3d96eb,_0x3a5b01[_0x699b('0x3a')]);return db['CmHopperBlack'][_0x699b('0x1a')]({'where':_0x3d96eb['where']})['then'](function(_0x2abcfb){_0x4d1332['count']=_0x2abcfb;if(_0x3a5b01[_0x699b('0x2d')]['includeAll']){_0x3d96eb[_0x699b('0x3c')]=[{'all':!![]}];}return db[_0x699b('0x5c')][_0x699b('0x57')](_0x3d96eb);})[_0x699b('0x20')](function(_0x32b942){_0x4d1332[_0x699b('0x3d')]=_0x32b942;return _0x4d1332;});}})['then'](respondWithFilteredResult(_0x2bfb22,_0x3d96eb))['catch'](handleError(_0x2bfb22,null));};exports['getLists']=function(_0x3d34bc,_0x5b3b8f,_0x17552c){var _0x48e7a8={};var _0x3eba72={};var _0x5bd38c;var _0x2184b0;return db[_0x699b('0x27')][_0x699b('0x54')]({'where':{'id':_0x3d34bc[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x5b3b8f,null))[_0x699b('0x20')](function(_0xc8559a){if(_0xc8559a){_0x5bd38c=_0xc8559a;_0x3eba72[_0x699b('0x2b')]=_[_0x699b('0x2e')](db[_0x699b('0x5d')]['rawAttributes']);_0x3eba72[_0x699b('0x2d')]=_[_0x699b('0x2e')](_0x3d34bc[_0x699b('0x2d')]);_0x3eba72[_0x699b('0x2f')]=_['intersection'](_0x3eba72[_0x699b('0x2b')],_0x3eba72[_0x699b('0x2d')]);_0x48e7a8[_0x699b('0x31')]=_[_0x699b('0x30')](_0x3eba72[_0x699b('0x2b')],qs[_0x699b('0x32')](_0x3d34bc[_0x699b('0x2d')][_0x699b('0x32')]));_0x48e7a8[_0x699b('0x31')]=_0x48e7a8[_0x699b('0x31')]['length']?_0x48e7a8[_0x699b('0x31')]:_0x3eba72['model'];_0x48e7a8['order']=qs['sort'](_0x3d34bc[_0x699b('0x2d')][_0x699b('0x35')]);_0x48e7a8[_0x699b('0x37')]=qs[_0x699b('0x2f')](_[_0x699b('0x36')](_0x3d34bc[_0x699b('0x2d')],_0x3eba72[_0x699b('0x2f')]));if(_0x3d34bc[_0x699b('0x2d')]['filter']){_0x48e7a8['where']=_[_0x699b('0x38')](_0x48e7a8[_0x699b('0x37')],{'$or':_['map'](_0x48e7a8[_0x699b('0x31')],function(_0xc53b9d){var _0x15525c={};_0x15525c[_0xc53b9d]={'$like':'%'+_0x3d34bc[_0x699b('0x2d')]['filter']+'%'};return _0x15525c;})});}_0x48e7a8=_['merge']({},_0x48e7a8,_0x3d34bc[_0x699b('0x3a')]);return _0x5bd38c[_0x699b('0x5e')](_0x48e7a8);}})[_0x699b('0x20')](function(_0x3851bd){if(_0x3851bd){_0x2184b0=_0x3851bd['length'];if(!_0x3d34bc[_0x699b('0x2d')][_0x699b('0x33')](_0x699b('0x34'))){_0x48e7a8['limit']=qs['limit'](_0x3d34bc[_0x699b('0x2d')][_0x699b('0x19')]);_0x48e7a8['offset']=qs[_0x699b('0x17')](_0x3d34bc[_0x699b('0x2d')][_0x699b('0x17')]);}return _0x5bd38c[_0x699b('0x5e')](_0x48e7a8);}})[_0x699b('0x20')](function(_0x3697a3){if(_0x3697a3){return _0x3697a3?{'count':_0x2184b0,'rows':_0x3697a3}:null;}})[_0x699b('0x20')](respondWithResult(_0x5b3b8f,null))[_0x699b('0x42')](handleError(_0x5b3b8f,null));};exports['addLists']=function(_0x4fde98,_0x5cfa5d,_0x4e1ba2){var _0x475d0f,_0x11b07e;return db[_0x699b('0x27')][_0x699b('0x41')]({'where':{'id':_0x4fde98[_0x699b('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5cfa5d,null))[_0x699b('0x20')](function(_0x233079){if(_0x233079){_0x11b07e=_0x233079;return _0x233079[_0x699b('0x5f')](_0x4fde98[_0x699b('0x44')][_0x699b('0x60')],_['omit'](_0x4fde98[_0x699b('0x44')],[_0x699b('0x60'),'id'])||{});}return null;})[_0x699b('0x61')](function(_0x46d250){var _0x2b9ec3;_0x475d0f=_0x46d250||[];var _0x493f45=[];if(_0x46d250){for(var _0x5e859e=0x0;_0x5e859e<_0x46d250[_0x699b('0x40')];_0x5e859e+=0x1){var _0x15d305=_0x46d250[_0x5e859e][_0x699b('0x48')]({'plain':!![]});_0x11b07e[_0x699b('0x62')]=_0x4fde98[_0x699b('0x44')][_0x699b('0x62')]?_0x4fde98['body'][_0x699b('0x62')]:_0x11b07e[_0x699b('0x62')];switch(_0x11b07e[_0x699b('0x62')]){case _0x699b('0x63'):_0x2b9ec3=squel[_0x699b('0x64')]()[_0x699b('0x65')](_0x699b('0x66'))[_0x699b('0x67')]([_0x699b('0x68'),_0x699b('0x69'),_0x699b('0x6a'),_0x699b('0x6b'),'CampaignId',_0x699b('0x4e'),_0x699b('0x4f')],squel[_0x699b('0x6c')]()['field'](_0x699b('0x68'),_0x699b('0x68'))['field'](_0x699b('0x6d'),_0x699b('0x69'))[_0x699b('0x6e')]('id',_0x699b('0x6a'))[_0x699b('0x6e')](_0x15d305[_0x699b('0x6f')][_0x699b('0x70')](),_0x699b('0x6b'))['field'](_0x4fde98['params']['id'][_0x699b('0x70')](),'CampaignId')[_0x699b('0x6e')](_0x699b('0x6d'),'createdAt')[_0x699b('0x6e')](_0x699b('0x6d'),_0x699b('0x4f'))[_0x699b('0x71')](_0x699b('0x72'))[_0x699b('0x37')](_0x699b('0x73'))[_0x699b('0x37')](_0x699b('0x74'),_0x15d305[_0x699b('0x6f')]['toString']())['where'](_0x699b('0x75'))[_0x699b('0x37')](_0x699b('0x76'),squel[_0x699b('0x6c')]()[_0x699b('0x6e')](_0x699b('0x77'))[_0x699b('0x71')](_0x699b('0x78'))[_0x699b('0x37')](_0x699b('0x79'),_0x4fde98[_0x699b('0x3f')]['id'][_0x699b('0x70')]()))[_0x699b('0x37')](_0x699b('0x76'),squel[_0x699b('0x6c')]()[_0x699b('0x6e')](_0x699b('0x7a'))[_0x699b('0x71')](_0x699b('0x66'))[_0x699b('0x37')](_0x699b('0x79'),_0x4fde98['params']['id']['toString']())))[_0x699b('0x70')]();break;case _0x699b('0x7b'):_0x2b9ec3=squel[_0x699b('0x64')]()[_0x699b('0x65')]('cm_hopper')['fromQuery'](['phone',_0x699b('0x69'),_0x699b('0x6a'),'ListId',_0x699b('0x59'),_0x699b('0x4e'),'updatedAt'],squel[_0x699b('0x6c')]()[_0x699b('0x6e')](_0x699b('0x68'),_0x699b('0x68'))[_0x699b('0x6e')](_0x699b('0x6d'),_0x699b('0x69'))['field']('id',_0x699b('0x6a'))[_0x699b('0x6e')](_0x15d305[_0x699b('0x6f')][_0x699b('0x70')](),'ListId')['field'](_0x4fde98[_0x699b('0x3f')]['id']['toString'](),_0x699b('0x59'))[_0x699b('0x6e')](_0x699b('0x6d'),_0x699b('0x4e'))['field'](_0x699b('0x6d'),_0x699b('0x4f'))['from'](_0x699b('0x72'))[_0x699b('0x37')](_0x699b('0x73'))[_0x699b('0x37')](_0x699b('0x74'),_0x15d305[_0x699b('0x6f')][_0x699b('0x70')]())[_0x699b('0x37')](_0x699b('0x75'))[_0x699b('0x37')]('phone\x20NOT\x20IN\x20(?)',squel[_0x699b('0x6c')]()[_0x699b('0x6e')](_0x699b('0x7a'))[_0x699b('0x71')]('cm_hopper')[_0x699b('0x37')](_0x699b('0x79'),_0x4fde98[_0x699b('0x3f')]['id'][_0x699b('0x70')]())))[_0x699b('0x70')]();break;default:_0x2b9ec3=squel[_0x699b('0x64')]()[_0x699b('0x65')]('cm_hopper')['fromQuery']([_0x699b('0x68'),'scheduledAt',_0x699b('0x6a'),'ListId',_0x699b('0x59'),_0x699b('0x4e'),_0x699b('0x4f')],squel[_0x699b('0x6c')]()[_0x699b('0x6e')]('phone',_0x699b('0x68'))['field'](_0x699b('0x6d'),_0x699b('0x69'))[_0x699b('0x6e')]('id',_0x699b('0x6a'))['field'](_0x15d305[_0x699b('0x6f')][_0x699b('0x70')](),_0x699b('0x6b'))[_0x699b('0x6e')](_0x4fde98[_0x699b('0x3f')]['id'][_0x699b('0x70')](),'CampaignId')[_0x699b('0x6e')](_0x699b('0x6d'),'createdAt')[_0x699b('0x6e')]('NOW()',_0x699b('0x4f'))['from'](_0x699b('0x72'))['where']('deletedAt\x20IS\x20NULL')[_0x699b('0x37')](_0x699b('0x74'),_0x15d305[_0x699b('0x6f')]['toString']())[_0x699b('0x37')](_0x699b('0x75')))[_0x699b('0x70')]();}_0x493f45[_0x699b('0x7c')](db['sequelize'][_0x699b('0x2d')](_0x2b9ec3));}return BPromise[_0x699b('0x7d')](_0x493f45);}})[_0x699b('0x20')](function(){return _0x475d0f;})[_0x699b('0x20')](respondWithResult(_0x5cfa5d,null))[_0x699b('0x42')](handleError(_0x5cfa5d,null));};exports[_0x699b('0x7e')]=function(_0x6e472f,_0x12b9ca,_0x3aad93){return db[_0x699b('0x27')][_0x699b('0x41')]({'where':{'id':_0x6e472f[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x12b9ca,null))[_0x699b('0x20')](function(_0x7b87b3){if(_0x7b87b3){return _0x7b87b3['removeLists'](_0x6e472f[_0x699b('0x2d')][_0x699b('0x60')]);}})['then'](function(_0xfe4987){if(_0xfe4987){return db[_0x699b('0x55')][_0x699b('0x52')]({'where':{'ListId':_0x6e472f[_0x699b('0x2d')][_0x699b('0x60')],'CampaignId':_0x6e472f[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](function(){return _0xfe4987;});}})['then'](respondWithStatusCode(_0x12b9ca,null))[_0x699b('0x42')](handleError(_0x12b9ca,null));};exports[_0x699b('0x7f')]=function(_0x2c9fae,_0x15467e,_0x116bc1){var _0x206371={};var _0x5147e2={};var _0x282b2e;var _0x3f7535;return db[_0x699b('0x27')]['findOne']({'where':{'id':_0x2c9fae[_0x699b('0x3f')]['id']}})['then'](handleEntityNotFound(_0x15467e,null))['then'](function(_0x42e99d){if(_0x42e99d){_0x282b2e=_0x42e99d;_0x5147e2[_0x699b('0x2b')]=_[_0x699b('0x2e')](db[_0x699b('0x5d')]['rawAttributes']);_0x5147e2[_0x699b('0x2d')]=_[_0x699b('0x2e')](_0x2c9fae[_0x699b('0x2d')]);_0x5147e2[_0x699b('0x2f')]=_[_0x699b('0x30')](_0x5147e2[_0x699b('0x2b')],_0x5147e2['query']);_0x206371[_0x699b('0x31')]=_['intersection'](_0x5147e2[_0x699b('0x2b')],qs[_0x699b('0x32')](_0x2c9fae[_0x699b('0x2d')]['fields']));_0x206371['attributes']=_0x206371[_0x699b('0x31')][_0x699b('0x40')]?_0x206371[_0x699b('0x31')]:_0x5147e2['model'];_0x206371[_0x699b('0x5b')]=qs[_0x699b('0x35')](_0x2c9fae[_0x699b('0x2d')][_0x699b('0x35')]);_0x206371[_0x699b('0x37')]=qs[_0x699b('0x2f')](_[_0x699b('0x36')](_0x2c9fae['query'],_0x5147e2[_0x699b('0x2f')]));if(_0x2c9fae[_0x699b('0x2d')][_0x699b('0x56')]){_0x206371[_0x699b('0x37')]=_['merge'](_0x206371['where'],{'$or':_[_0x699b('0x2c')](_0x206371['attributes'],function(_0x3cda67){var _0x39ef2b={};_0x39ef2b[_0x3cda67]={'$like':'%'+_0x2c9fae[_0x699b('0x2d')][_0x699b('0x56')]+'%'};return _0x39ef2b;})});}_0x206371=_[_0x699b('0x38')]({},_0x206371,_0x2c9fae[_0x699b('0x3a')]);return _0x282b2e['getBlackLists'](_0x206371);}})[_0x699b('0x20')](function(_0x42d749){if(_0x42d749){_0x3f7535=_0x42d749[_0x699b('0x40')];if(!_0x2c9fae[_0x699b('0x2d')][_0x699b('0x33')](_0x699b('0x34'))){_0x206371[_0x699b('0x19')]=qs[_0x699b('0x19')](_0x2c9fae[_0x699b('0x2d')][_0x699b('0x19')]);_0x206371[_0x699b('0x17')]=qs[_0x699b('0x17')](_0x2c9fae[_0x699b('0x2d')]['offset']);}return _0x282b2e[_0x699b('0x7f')](_0x206371);}})[_0x699b('0x20')](function(_0x4a0c82){if(_0x4a0c82){return _0x4a0c82?{'count':_0x3f7535,'rows':_0x4a0c82}:null;}})[_0x699b('0x20')](respondWithResult(_0x15467e,null))[_0x699b('0x42')](handleError(_0x15467e,null));};exports[_0x699b('0x80')]=function(_0x372d7d,_0x5d14c0,_0x2b6c7f){var _0x20b81a,_0x374b38;return db[_0x699b('0x27')][_0x699b('0x41')]({'where':{'id':_0x372d7d[_0x699b('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5d14c0,null))[_0x699b('0x20')](function(_0xee994){if(_0xee994){_0x374b38=_0xee994;return _0xee994[_0x699b('0x80')](_0x372d7d[_0x699b('0x44')][_0x699b('0x60')],_[_0x699b('0x4d')](_0x372d7d['body'],['ids','id'])||{});}return null;})[_0x699b('0x61')](function(_0x4913e2){var _0x47b193;_0x20b81a=_0x4913e2||[];var _0x105e8d=[];if(_0x4913e2){for(var _0x56a487=0x0;_0x56a487<_0x4913e2['length'];_0x56a487+=0x1){var _0x2445be=_0x4913e2[_0x56a487][_0x699b('0x48')]({'plain':!![]});_0x47b193=squel[_0x699b('0x64')]()['into'](_0x699b('0x81'))[_0x699b('0x67')](['phone',_0x699b('0x6a'),_0x699b('0x6b'),_0x699b('0x59'),_0x699b('0x4e'),_0x699b('0x4f')],squel[_0x699b('0x6c')]()[_0x699b('0x6e')]('phone','phone')[_0x699b('0x6e')]('id','ContactId')[_0x699b('0x6e')](_0x2445be[_0x699b('0x6f')][_0x699b('0x70')](),'ListId')[_0x699b('0x6e')](_0x372d7d[_0x699b('0x3f')]['id'][_0x699b('0x70')](),_0x699b('0x59'))[_0x699b('0x6e')](_0x699b('0x6d'),_0x699b('0x4e'))[_0x699b('0x6e')](_0x699b('0x6d'),_0x699b('0x4f'))[_0x699b('0x71')](_0x699b('0x72'))['where']('deletedAt\x20IS\x20NULL')[_0x699b('0x37')](_0x699b('0x74'),_0x2445be[_0x699b('0x6f')][_0x699b('0x70')]())[_0x699b('0x37')](_0x699b('0x75')))[_0x699b('0x70')]();_0x105e8d['push'](db[_0x699b('0x82')][_0x699b('0x2d')](_0x47b193));}return BPromise[_0x699b('0x7d')](_0x105e8d);}})[_0x699b('0x20')](function(){return _0x20b81a;})['then'](respondWithResult(_0x5d14c0,null))[_0x699b('0x42')](handleError(_0x5d14c0,null));};exports[_0x699b('0x83')]=function(_0x53e851,_0x5230d3,_0x4255f2){return db[_0x699b('0x27')][_0x699b('0x41')]({'where':{'id':_0x53e851[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](handleEntityNotFound(_0x5230d3,null))[_0x699b('0x20')](function(_0xa44828){if(_0xa44828){return _0xa44828[_0x699b('0x83')](_0x53e851[_0x699b('0x2d')][_0x699b('0x60')]);}})[_0x699b('0x20')](function(_0x1b2b9f){if(_0x1b2b9f){return db[_0x699b('0x5c')][_0x699b('0x52')]({'where':{'ListId':_0x53e851[_0x699b('0x2d')][_0x699b('0x60')],'CampaignId':_0x53e851[_0x699b('0x3f')]['id']}})[_0x699b('0x20')](function(){return _0x1b2b9f;});}})['then'](respondWithStatusCode(_0x5230d3,null))['catch'](handleError(_0x5230d3,null));};
\ No newline at end of file
index 38557d5..90dce69 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(_0x5709ea,_0x5c0089){var _0x1998b4=function(_0x3bab6b){while(--_0x3bab6b){_0x5709ea['push'](_0x5709ea['shift']());}};_0x1998b4(++_0x5c0089);}(_0x7a54,0x106));var _0x47a5=function(_0x8bbe2,_0x182597){_0x8bbe2=_0x8bbe2-0x0;var _0x4f0f9f=_0x7a54[_0x8bbe2];return _0x4f0f9f;};'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(_0x12d573,_0x20ae28){var _0x5c7071=function(_0x16ea02){while(--_0x16ea02){_0x12d573['push'](_0x12d573['shift']());}};_0x5c7071(++_0x20ae28);}(_0x7a54,0x106));var _0x47a5=function(_0x34b3e1,_0x378998){_0x34b3e1=_0x34b3e1-0x0;var _0x5c065d=_0x7a54[_0x34b3e1];return _0x5c065d;};'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 21fc2c8..92701f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbefe=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','raw','where','limit','include','map','model','attributes','util','bluebird','randomstring'];(function(_0x42ecfa,_0x302560){var _0x141c3e=function(_0x202ceb){while(--_0x202ceb){_0x42ecfa['push'](_0x42ecfa['shift']());}};_0x141c3e(++_0x302560);}(_0xbefe,0x168));var _0xebef=function(_0x2c0d7b,_0x4ec918){_0x2c0d7b=_0x2c0d7b-0x0;var _0x3c769f=_0xbefe[_0x2c0d7b];return _0x3c769f;};'use strict';var _=require('lodash');var util=require(_0xebef('0x0'));var moment=require('moment');var BPromise=require(_0xebef('0x1'));var rs=require(_0xebef('0x2'));var fs=require('fs');var Redis=require(_0xebef('0x3'));var db=require(_0xebef('0x4'))['db'];var utils=require(_0xebef('0x5'));var logger=require(_0xebef('0x6'))(_0xebef('0x7'));var config=require(_0xebef('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xebef('0x9')][_0xebef('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e89ca,_0x4fb4fa,_0x4286bf){return new BPromise(function(_0x2fbd2c,_0x598d6d){return client['request'](_0x3e89ca,_0x4286bf)[_0xebef('0xb')](function(_0xa0a8ef){logger[_0xebef('0xc')](_0xebef('0xd'),_0x4fb4fa,_0xebef('0xe'));logger[_0xebef('0xf')](_0xebef('0x10'),_0x4fb4fa,_0xebef('0xe'),JSON['stringify'](_0xa0a8ef));if(_0xa0a8ef[_0xebef('0x11')]){if(_0xa0a8ef[_0xebef('0x11')][_0xebef('0x12')]===0x1f4){logger[_0xebef('0x11')](_0xebef('0xd'),_0x4fb4fa,_0xa0a8ef['error']['message']);return _0x598d6d(_0xa0a8ef['error']['message']);}logger[_0xebef('0x11')](_0xebef('0xd'),_0x4fb4fa,_0xa0a8ef[_0xebef('0x11')][_0xebef('0x13')]);return _0x2fbd2c(_0xa0a8ef[_0xebef('0x11')][_0xebef('0x13')]);}else{logger['info'](_0xebef('0xd'),_0x4fb4fa,_0xebef('0xe'));_0x2fbd2c(_0xa0a8ef[_0xebef('0x14')][_0xebef('0x13')]);}})[_0xebef('0x15')](function(_0x8e7044){logger[_0xebef('0x11')](_0xebef('0xd'),_0x4fb4fa,_0x8e7044);_0x598d6d(_0x8e7044);});});}exports[_0xebef('0x16')]=function(_0x16856f){var _0x458e83=this;return new Promise(function(_0x5161f1,_0x1a99ba){return db[_0xebef('0x17')][_0xebef('0x18')]({'raw':_0x16856f['options']?_0x16856f[_0xebef('0x19')][_0xebef('0x1a')]===undefined?!![]:![]:!![],'where':_0x16856f[_0xebef('0x19')]?_0x16856f[_0xebef('0x19')][_0xebef('0x1b')]||null:null,'attributes':_0x16856f[_0xebef('0x19')]?_0x16856f[_0xebef('0x19')]['attributes']||null:null,'limit':_0x16856f['options']?_0x16856f['options'][_0xebef('0x1c')]||null:null,'include':_0x16856f[_0xebef('0x19')]?_0x16856f[_0xebef('0x19')][_0xebef('0x1d')]?_[_0xebef('0x1e')](_0x16856f[_0xebef('0x19')][_0xebef('0x1d')],function(_0x5c5091){return{'model':db[_0x5c5091[_0xebef('0x1f')]],'as':_0x5c5091['as'],'attributes':_0x5c5091[_0xebef('0x20')],'include':_0x5c5091[_0xebef('0x1d')]?_[_0xebef('0x1e')](_0x5c5091[_0xebef('0x1d')],function(_0x27f212){return{'model':db[_0x27f212[_0xebef('0x1f')]],'as':_0x27f212['as'],'attributes':_0x27f212[_0xebef('0x20')],'include':_0x27f212[_0xebef('0x1d')]?_[_0xebef('0x1e')](_0x27f212[_0xebef('0x1d')],function(_0x4fb77f){return{'model':db[_0x4fb77f[_0xebef('0x1f')]],'as':_0x4fb77f['as'],'attributes':_0x4fb77f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x56b67e){logger['info']('GetCampaign',_0x16856f);logger['debug']('GetCampaign',_0x16856f,JSON['stringify'](_0x56b67e));_0x5161f1(_0x56b67e);})['catch'](function(_0x5a9249){logger['error'](_0xebef('0x16'),_0x5a9249['message'],_0x16856f);_0x1a99ba(_0x458e83[_0xebef('0x11')](0x1f4,_0x5a9249['message']));});});};
\ No newline at end of file
+var _0x16e4=['request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','message','Campaign,\x20%s,\x20%s','result','GetCampaign','findAll','options','raw','where','attributes','limit','include','map','model','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','info'];(function(_0x1f4975,_0x2d02ed){var _0x3d14f8=function(_0x1224ea){while(--_0x1224ea){_0x1f4975['push'](_0x1f4975['shift']());}};_0x3d14f8(++_0x2d02ed);}(_0x16e4,0x97));var _0x416e=function(_0x1cf4b6,_0x551fda){_0x1cf4b6=_0x1cf4b6-0x0;var _0x44d53d=_0x16e4[_0x1cf4b6];return _0x44d53d;};'use strict';var _=require(_0x416e('0x0'));var util=require(_0x416e('0x1'));var moment=require(_0x416e('0x2'));var BPromise=require(_0x416e('0x3'));var rs=require(_0x416e('0x4'));var fs=require('fs');var Redis=require(_0x416e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x416e('0x6'));var logger=require('../../config/logger')(_0x416e('0x7'));var config=require(_0x416e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x416e('0x9')][_0x416e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3431c4,_0x40b8be,_0x1eb20f){return new BPromise(function(_0x962b38,_0x12d57c){return client[_0x416e('0xb')](_0x3431c4,_0x1eb20f)[_0x416e('0xc')](function(_0x47bd90){logger[_0x416e('0xd')]('Campaign,\x20%s,\x20%s',_0x40b8be,_0x416e('0xe'));logger[_0x416e('0xf')](_0x416e('0x10'),_0x40b8be,'request\x20sent',JSON[_0x416e('0x11')](_0x47bd90));if(_0x47bd90[_0x416e('0x12')]){if(_0x47bd90[_0x416e('0x12')]['code']===0x1f4){logger[_0x416e('0x12')]('Campaign,\x20%s,\x20%s',_0x40b8be,_0x47bd90[_0x416e('0x12')][_0x416e('0x13')]);return _0x12d57c(_0x47bd90[_0x416e('0x12')][_0x416e('0x13')]);}logger['error'](_0x416e('0x14'),_0x40b8be,_0x47bd90[_0x416e('0x12')][_0x416e('0x13')]);return _0x962b38(_0x47bd90[_0x416e('0x12')][_0x416e('0x13')]);}else{logger[_0x416e('0xd')](_0x416e('0x14'),_0x40b8be,_0x416e('0xe'));_0x962b38(_0x47bd90[_0x416e('0x15')]['message']);}})['catch'](function(_0x5d8852){logger[_0x416e('0x12')](_0x416e('0x14'),_0x40b8be,_0x5d8852);_0x12d57c(_0x5d8852);});});}exports[_0x416e('0x16')]=function(_0x467e88){var _0x4ed9fc=this;return new Promise(function(_0x1d7931,_0x27d249){return db['Campaign'][_0x416e('0x17')]({'raw':_0x467e88[_0x416e('0x18')]?_0x467e88[_0x416e('0x18')][_0x416e('0x19')]===undefined?!![]:![]:!![],'where':_0x467e88[_0x416e('0x18')]?_0x467e88[_0x416e('0x18')][_0x416e('0x1a')]||null:null,'attributes':_0x467e88[_0x416e('0x18')]?_0x467e88[_0x416e('0x18')][_0x416e('0x1b')]||null:null,'limit':_0x467e88[_0x416e('0x18')]?_0x467e88['options'][_0x416e('0x1c')]||null:null,'include':_0x467e88[_0x416e('0x18')]?_0x467e88[_0x416e('0x18')][_0x416e('0x1d')]?_[_0x416e('0x1e')](_0x467e88[_0x416e('0x18')]['include'],function(_0x25070a){return{'model':db[_0x25070a[_0x416e('0x1f')]],'as':_0x25070a['as'],'attributes':_0x25070a[_0x416e('0x1b')],'include':_0x25070a['include']?_[_0x416e('0x1e')](_0x25070a[_0x416e('0x1d')],function(_0x47679a){return{'model':db[_0x47679a[_0x416e('0x1f')]],'as':_0x47679a['as'],'attributes':_0x47679a['attributes'],'include':_0x47679a[_0x416e('0x1d')]?_[_0x416e('0x1e')](_0x47679a[_0x416e('0x1d')],function(_0x21bc79){return{'model':db[_0x21bc79[_0x416e('0x1f')]],'as':_0x21bc79['as'],'attributes':_0x21bc79[_0x416e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x416e('0xc')](function(_0x1c845b){logger[_0x416e('0xd')]('GetCampaign',_0x467e88);logger[_0x416e('0xf')](_0x416e('0x16'),_0x467e88,JSON[_0x416e('0x11')](_0x1c845b));_0x1d7931(_0x1c845b);})[_0x416e('0x20')](function(_0x2ce7ea){logger[_0x416e('0x12')](_0x416e('0x16'),_0x2ce7ea['message'],_0x467e88);_0x27d249(_0x4ed9fc[_0x416e('0x12')](0x1f4,_0x2ce7ea[_0x416e('0x13')]));});});};
\ No newline at end of file
index aebce0e..b09f1c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe65d=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','isAuthenticated','index','/:id','show','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','post','create','addLists','put','update','delete','destroy','removeLists','exports','multer','util','path'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xe65d,0x1dd));var _0xde65=function(_0x563643,_0x467b94){_0x563643=_0x563643-0x0;var _0x1aaad1=_0xe65d[_0x563643];return _0x1aaad1;};'use strict';var multer=require(_0xde65('0x0'));var util=require(_0xde65('0x1'));var path=require(_0xde65('0x2'));var timeout=require('connect-timeout');var express=require(_0xde65('0x3'));var router=express[_0xde65('0x4')]();var fs_extra=require(_0xde65('0x5'));var auth=require(_0xde65('0x6'));var interaction=require(_0xde65('0x7'));var config=require('../../config/environment');var controller=require(_0xde65('0x8'));router[_0xde65('0x9')]('/',auth[_0xde65('0xa')](),controller[_0xde65('0xb')]);router[_0xde65('0x9')](_0xde65('0xc'),auth['isAuthenticated'](),controller[_0xde65('0xd')]);router[_0xde65('0x9')]('/:id/hoppers',auth[_0xde65('0xa')](),controller[_0xde65('0xe')]);router[_0xde65('0x9')](_0xde65('0xf'),auth[_0xde65('0xa')](),controller[_0xde65('0x10')]);router[_0xde65('0x9')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0xde65('0x11')]);router[_0xde65('0x9')](_0xde65('0x12'),auth[_0xde65('0xa')](),controller[_0xde65('0x13')]);router['get'](_0xde65('0x14'),auth['isAuthenticated'](),controller[_0xde65('0x15')]);router['get'](_0xde65('0x16'),auth['isAuthenticated'](),controller['getBlackLists']);router[_0xde65('0x17')]('/',auth[_0xde65('0xa')](),controller[_0xde65('0x18')]);router[_0xde65('0x17')]('/:id/clone',auth[_0xde65('0xa')](),controller['clone']);router[_0xde65('0x17')]('/:id/lists',auth[_0xde65('0xa')](),controller[_0xde65('0x19')]);router[_0xde65('0x17')](_0xde65('0x16'),auth[_0xde65('0xa')](),controller['addBlackLists']);router[_0xde65('0x1a')](_0xde65('0xc'),auth[_0xde65('0xa')](),controller[_0xde65('0x1b')]);router[_0xde65('0x1c')]('/:id',auth[_0xde65('0xa')](),controller[_0xde65('0x1d')]);router[_0xde65('0x1c')](_0xde65('0x14'),auth[_0xde65('0xa')](),controller[_0xde65('0x1e')]);router[_0xde65('0x1c')]('/:id/blacklists',auth[_0xde65('0xa')](),controller['removeBlackLists']);module[_0xde65('0x1f')]=router;
\ No newline at end of file
+var _0x7248=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','isAuthenticated','index','get','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','put','/:id','update','delete','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express'];(function(_0x448751,_0x7e7d10){var _0x1f13e4=function(_0xf7b397){while(--_0xf7b397){_0x448751['push'](_0x448751['shift']());}};_0x1f13e4(++_0x7e7d10);}(_0x7248,0x1b6));var _0x8724=function(_0xe86041,_0x2fbd7b){_0xe86041=_0xe86041-0x0;var _0x1230a9=_0x7248[_0xe86041];return _0x1230a9;};'use strict';var multer=require(_0x8724('0x0'));var util=require(_0x8724('0x1'));var path=require('path');var timeout=require(_0x8724('0x2'));var express=require(_0x8724('0x3'));var router=express[_0x8724('0x4')]();var fs_extra=require(_0x8724('0x5'));var auth=require(_0x8724('0x6'));var interaction=require(_0x8724('0x7'));var config=require('../../config/environment');var controller=require(_0x8724('0x8'));router['get']('/',auth[_0x8724('0x9')](),controller[_0x8724('0xa')]);router[_0x8724('0xb')]('/:id',auth[_0x8724('0x9')](),controller[_0x8724('0xc')]);router['get']('/:id/hoppers',auth['isAuthenticated'](),controller[_0x8724('0xd')]);router['get'](_0x8724('0xe'),auth['isAuthenticated'](),controller[_0x8724('0xf')]);router[_0x8724('0xb')](_0x8724('0x10'),auth['isAuthenticated'](),controller[_0x8724('0x11')]);router['get'](_0x8724('0x12'),auth[_0x8724('0x9')](),controller[_0x8724('0x13')]);router['get'](_0x8724('0x14'),auth['isAuthenticated'](),controller[_0x8724('0x15')]);router[_0x8724('0xb')](_0x8724('0x16'),auth[_0x8724('0x9')](),controller[_0x8724('0x17')]);router[_0x8724('0x18')]('/',auth['isAuthenticated'](),controller[_0x8724('0x19')]);router[_0x8724('0x18')](_0x8724('0x1a'),auth[_0x8724('0x9')](),controller['clone']);router['post'](_0x8724('0x14'),auth[_0x8724('0x9')](),controller['addLists']);router[_0x8724('0x18')](_0x8724('0x16'),auth[_0x8724('0x9')](),controller['addBlackLists']);router[_0x8724('0x1b')](_0x8724('0x1c'),auth[_0x8724('0x9')](),controller[_0x8724('0x1d')]);router[_0x8724('0x1e')](_0x8724('0x1c'),auth[_0x8724('0x9')](),controller['destroy']);router['delete']('/:id/lists',auth[_0x8724('0x9')](),controller[_0x8724('0x1f')]);router[_0x8724('0x1e')]('/:id/blacklists',auth[_0x8724('0x9')](),controller[_0x8724('0x20')]);module[_0x8724('0x21')]=router;
\ No newline at end of file
index 7e8ce23..188afc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabca=['STRING','VIRTUAL','getDataValue','key','sequelize','exports'];(function(_0x1dc301,_0x4e3051){var _0x1b112e=function(_0x516245){while(--_0x516245){_0x1dc301['push'](_0x1dc301['shift']());}};_0x1b112e(++_0x4e3051);}(_0xabca,0x18a));var _0xaabc=function(_0x5413bb,_0x471620){_0x5413bb=_0x5413bb-0x0;var _0x38f74c=_0xabca[_0x5413bb];return _0x38f74c;};'use strict';var Sequelize=require(_0xaabc('0x0'));module[_0xaabc('0x1')]={'key':{'type':Sequelize[_0xaabc('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0xaabc('0x2')]},'name':{'type':Sequelize[_0xaabc('0x3')],'get':function(){return this[_0xaabc('0x4')](_0xaabc('0x5'));}}};
\ No newline at end of file
+var _0x6f34=['VIRTUAL','getDataValue','key','sequelize','exports','TEXT','STRING'];(function(_0x59881f,_0x4fb615){var _0x472960=function(_0x1a9f67){while(--_0x1a9f67){_0x59881f['push'](_0x59881f['shift']());}};_0x472960(++_0x4fb615);}(_0x6f34,0x184));var _0x46f3=function(_0x17c57e,_0x23e8c9){_0x17c57e=_0x17c57e-0x0;var _0x3e2759=_0x6f34[_0x17c57e];return _0x3e2759;};'use strict';var Sequelize=require(_0x46f3('0x0'));module[_0x46f3('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x46f3('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x46f3('0x3')]},'name':{'type':Sequelize[_0x46f3('0x4')],'get':function(){return this[_0x46f3('0x5')](_0x46f3('0x6'));}}};
\ No newline at end of file
index 1850e95..45e653e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef5=['mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','reject','save','update','destroy','get','UserProfileResource','then','stack','name','index','CannedAnswer','fieldName','type','map','keys','filters','intersection','model','attributes','fields','query','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','count','rows','catch','params','rawAttributes','includeAll','include','find','body','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CannedAnswers','userProfileId','autoAssociation','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xfef5,0x105));var _0x5fef=function(_0x217288,_0x530688){_0x217288=_0x217288-0x0;var _0x270fc3=_0xfef5[_0x217288];return _0x270fc3;};'use strict';var emlformat=require(_0x5fef('0x0'));var rimraf=require(_0x5fef('0x1'));var zipdir=require(_0x5fef('0x2'));var jsonpatch=require(_0x5fef('0x3'));var rp=require(_0x5fef('0x4'));var moment=require(_0x5fef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5fef('0x6'));var util=require(_0x5fef('0x7'));var path=require(_0x5fef('0x8'));var sox=require(_0x5fef('0x9'));var csv=require('to-csv');var ejs=require(_0x5fef('0xa'));var fs=require('fs');var fs_extra=require(_0x5fef('0xb'));var _=require(_0x5fef('0xc'));var squel=require(_0x5fef('0xd'));var crypto=require(_0x5fef('0xe'));var jsforce=require(_0x5fef('0xf'));var deskjs=require(_0x5fef('0x10'));var toCsv=require(_0x5fef('0x11'));var querystring=require(_0x5fef('0x12'));var Papa=require('papaparse');var Redis=require(_0x5fef('0x13'));var authService=require(_0x5fef('0x14'));var qs=require(_0x5fef('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5fef('0x16'));var logger=require(_0x5fef('0x17'))(_0x5fef('0x18'));var utils=require(_0x5fef('0x19'));var config=require(_0x5fef('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x5fef('0x1b'))['db'];function respondWithStatusCode(_0x4ef540,_0x5b98a4){_0x5b98a4=_0x5b98a4||0xcc;return function(_0x1b553e){if(_0x1b553e){return _0x4ef540[_0x5fef('0x1c')](_0x5b98a4);}return _0x4ef540[_0x5fef('0x1d')](_0x5b98a4)[_0x5fef('0x1e')]();};}function respondWithResult(_0x47df4d,_0x372332){_0x372332=_0x372332||0xc8;return function(_0x57b0c9){if(_0x57b0c9){return _0x47df4d[_0x5fef('0x1d')](_0x372332)[_0x5fef('0x1f')](_0x57b0c9);}};}function respondWithFilteredResult(_0x36bbcb,_0x4907d5){return function(_0x570132){if(_0x570132){var _0x2b2a92=typeof _0x4907d5[_0x5fef('0x20')]==='undefined'&&typeof _0x4907d5[_0x5fef('0x21')]===_0x5fef('0x22');var _0x2aa2bb=_0x570132['count'];var _0x52724b=_0x2b2a92?0x0:_0x4907d5[_0x5fef('0x20')];var _0x300fbf=_0x2b2a92?_0x570132['count']:_0x4907d5['offset']+_0x4907d5[_0x5fef('0x21')];var _0x1ff802;if(_0x300fbf>=_0x2aa2bb){_0x300fbf=_0x2aa2bb;_0x1ff802=0xc8;}else{_0x1ff802=0xce;}_0x36bbcb['status'](_0x1ff802);return _0x36bbcb[_0x5fef('0x23')](_0x5fef('0x24'),_0x52724b+'-'+_0x300fbf+'/'+_0x2aa2bb)[_0x5fef('0x1f')](_0x570132);}return null;};}function patchUpdates(_0xd6f367){return function(_0x352a50){try{jsonpatch['apply'](_0x352a50,_0xd6f367,!![]);}catch(_0x1150b5){return BPromise[_0x5fef('0x25')](_0x1150b5);}return _0x352a50[_0x5fef('0x26')]();};}function saveUpdates(_0x4dd42e,_0x25f356){return function(_0xb8561a){if(_0xb8561a){return _0xb8561a[_0x5fef('0x27')](_0x4dd42e)['then'](function(_0x36ad0d){return _0x36ad0d;});}return null;};}function removeEntity(_0x466f4c,_0x59c951){return function(_0x60e626){if(_0x60e626){return _0x60e626[_0x5fef('0x28')]()['then'](function(){var _0xbc0566=_0x60e626[_0x5fef('0x29')]({'plain':!![]});var _0x3a8e80='CannedAnswers';return db[_0x5fef('0x2a')]['destroy']({'where':{'type':_0x3a8e80,'resourceId':_0xbc0566['id']}})['then'](function(){return _0x60e626;});})[_0x5fef('0x2b')](function(){_0x466f4c[_0x5fef('0x1d')](0xcc)[_0x5fef('0x1e')]();});}};}function handleEntityNotFound(_0xd65ea7,_0x458ad0){return function(_0x299ff5){if(!_0x299ff5){_0xd65ea7[_0x5fef('0x1c')](0x194);}return _0x299ff5;};}function handleError(_0x929300,_0x37b214){_0x37b214=_0x37b214||0x1f4;return function(_0x294f87){logger['error'](_0x294f87[_0x5fef('0x2c')]);if(_0x294f87[_0x5fef('0x2d')]){delete _0x294f87[_0x5fef('0x2d')];}_0x929300[_0x5fef('0x1d')](_0x37b214)['send'](_0x294f87);};}exports[_0x5fef('0x2e')]=function(_0x14d0e6,_0x21e1bf){var _0x1d03d3={},_0xa6af5b={},_0x1e9e72={'count':0x0,'rows':[]};var _0x5ba6a8=_['map'](db[_0x5fef('0x2f')]['rawAttributes'],function(_0x96733c){return{'name':_0x96733c[_0x5fef('0x30')],'type':_0x96733c[_0x5fef('0x31')]['key']};});_0xa6af5b['model']=_[_0x5fef('0x32')](_0x5ba6a8,'name');_0xa6af5b['query']=_[_0x5fef('0x33')](_0x14d0e6['query']);_0xa6af5b[_0x5fef('0x34')]=_[_0x5fef('0x35')](_0xa6af5b[_0x5fef('0x36')],_0xa6af5b['query']);_0x1d03d3[_0x5fef('0x37')]=_['intersection'](_0xa6af5b[_0x5fef('0x36')],qs[_0x5fef('0x38')](_0x14d0e6[_0x5fef('0x39')]['fields']));_0x1d03d3[_0x5fef('0x37')]=_0x1d03d3[_0x5fef('0x37')][_0x5fef('0x3a')]?_0x1d03d3[_0x5fef('0x37')]:_0xa6af5b[_0x5fef('0x36')];if(!_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3b')](_0x5fef('0x3c'))){_0x1d03d3['limit']=qs['limit'](_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x21')]);_0x1d03d3['offset']=qs[_0x5fef('0x20')](_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x20')]);}_0x1d03d3['order']=qs[_0x5fef('0x3d')](_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3d')]);_0x1d03d3['where']=qs[_0x5fef('0x34')](_[_0x5fef('0x3e')](_0x14d0e6[_0x5fef('0x39')],_0xa6af5b['filters']),_0x5ba6a8);if(_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3f')]){_0x1d03d3[_0x5fef('0x40')]=_['merge'](_0x1d03d3[_0x5fef('0x40')],{'$or':[{'key':{'$like':'%'+_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3f')]+'%'}},{'value':{'$like':'%'+_0x14d0e6['query'][_0x5fef('0x3f')]+'%'}}]});}_0x1d03d3=_[_0x5fef('0x41')]({},_0x1d03d3,_0x14d0e6[_0x5fef('0x42')]);var _0x354b6c={'where':_0x1d03d3[_0x5fef('0x40')]};return db[_0x5fef('0x2f')][_0x5fef('0x43')](_0x354b6c)[_0x5fef('0x2b')](function(_0x1d32d9){_0x1e9e72['count']=_0x1d32d9;if(_0x14d0e6[_0x5fef('0x39')]['includeAll']){_0x1d03d3['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x1d03d3);})['then'](function(_0x471fbd){_0x1e9e72[_0x5fef('0x44')]=_0x471fbd;return _0x1e9e72;})[_0x5fef('0x2b')](respondWithFilteredResult(_0x21e1bf,_0x1d03d3))[_0x5fef('0x45')](handleError(_0x21e1bf,null));};exports['show']=function(_0x3d0571,_0x5122ab){var _0x541437={'raw':!![],'where':{'id':_0x3d0571[_0x5fef('0x46')]['id']}},_0x5bba57={};_0x5bba57[_0x5fef('0x36')]=_[_0x5fef('0x33')](db[_0x5fef('0x2f')][_0x5fef('0x47')]);_0x5bba57['query']=_[_0x5fef('0x33')](_0x3d0571[_0x5fef('0x39')]);_0x5bba57[_0x5fef('0x34')]=_[_0x5fef('0x35')](_0x5bba57[_0x5fef('0x36')],_0x5bba57[_0x5fef('0x39')]);_0x541437[_0x5fef('0x37')]=_[_0x5fef('0x35')](_0x5bba57[_0x5fef('0x36')],qs[_0x5fef('0x38')](_0x3d0571['query'][_0x5fef('0x38')]));_0x541437[_0x5fef('0x37')]=_0x541437['attributes'][_0x5fef('0x3a')]?_0x541437[_0x5fef('0x37')]:_0x5bba57[_0x5fef('0x36')];if(_0x3d0571[_0x5fef('0x39')][_0x5fef('0x48')]){_0x541437[_0x5fef('0x49')]=[{'all':!![]}];}_0x541437=_[_0x5fef('0x41')]({},_0x541437,_0x3d0571[_0x5fef('0x42')]);return db[_0x5fef('0x2f')][_0x5fef('0x4a')](_0x541437)[_0x5fef('0x2b')](handleEntityNotFound(_0x5122ab,null))[_0x5fef('0x2b')](respondWithResult(_0x5122ab,null))[_0x5fef('0x45')](handleError(_0x5122ab,null));};exports[_0x5fef('0x27')]=function(_0x2df933,_0x16a123){if(_0x2df933['body']['id']){delete _0x2df933[_0x5fef('0x4b')]['id'];}return db[_0x5fef('0x2f')][_0x5fef('0x4a')]({'where':{'id':_0x2df933['params']['id']}})['then'](handleEntityNotFound(_0x16a123,null))[_0x5fef('0x2b')](saveUpdates(_0x2df933[_0x5fef('0x4b')],null))[_0x5fef('0x2b')](respondWithResult(_0x16a123,null))[_0x5fef('0x45')](handleError(_0x16a123,null));};exports['destroy']=function(_0x4f9d4c,_0xb2d352){return db[_0x5fef('0x2f')][_0x5fef('0x4a')]({'where':{'id':_0x4f9d4c[_0x5fef('0x46')]['id']}})[_0x5fef('0x2b')](handleEntityNotFound(_0xb2d352,null))[_0x5fef('0x2b')](removeEntity(_0xb2d352,null))[_0x5fef('0x45')](handleError(_0xb2d352,null));};exports[_0x5fef('0x4c')]=function(_0x5883e8,_0x495cc4){var _0x217af2={'key':_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x4d')]};if(_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x4e')]){_0x217af2['MailAccountId']=_0x5883e8['body'][_0x5fef('0x4e')];}else if(_0x5883e8['body'][_0x5fef('0x4f')]){_0x217af2[_0x5fef('0x4f')]=_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x4f')];}else if(_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x50')]){_0x217af2[_0x5fef('0x50')]=_0x5883e8[_0x5fef('0x4b')]['OpenchannelAccountId'];}else if(_0x5883e8['body'][_0x5fef('0x51')]){_0x217af2['ChatWebsiteId']=_0x5883e8[_0x5fef('0x4b')]['ChatWebsiteId'];}return db[_0x5fef('0x2f')]['find']({'where':_0x217af2})[_0x5fef('0x2b')](function(_0x400b92){if(_0x400b92){throw new db['Sequelize']['ValidationError']('The\x20inserted\x20key\x20already\x20exists.');}return db['CannedAnswer'][_0x5fef('0x4c')](_0x5883e8['body']);})[_0x5fef('0x2b')](function(_0x4aec95){var _0x2e5e93=_0x5883e8[_0x5fef('0x52')][_0x5fef('0x29')]({'plain':!![]});if(!_0x2e5e93)throw new Error(_0x5fef('0x53'));if(_0x2e5e93[_0x5fef('0x54')]===_0x5fef('0x52')){var _0xbc59e2=_0x4aec95['get']({'plain':!![]});return db['UserProfileSection'][_0x5fef('0x4a')]({'where':{'name':_0x5fef('0x55'),'userProfileId':_0x2e5e93[_0x5fef('0x56')]},'raw':!![]})['then'](function(_0x464eee){if(_0x464eee&&_0x464eee[_0x5fef('0x57')]===0x0){return db['UserProfileResource'][_0x5fef('0x4c')]({'name':_0xbc59e2[_0x5fef('0x2d')],'resourceId':_0xbc59e2['id'],'type':_0x464eee[_0x5fef('0x2d')],'sectionId':_0x464eee['id']},{})[_0x5fef('0x2b')](function(){return _0x4aec95;});}else{return _0x4aec95;}})[_0x5fef('0x45')](function(_0x56597a){logger[_0x5fef('0x58')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56597a);throw _0x56597a;});}return _0x4aec95;})['then'](respondWithResult(_0x495cc4,0xc9))['catch'](handleError(_0x495cc4,null));};
\ No newline at end of file
+var _0x8274=['catch','show','length','body','find','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get','CannedAnswers','UserProfileResource','name','index','map','CannedAnswer','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll'];(function(_0x5e1407,_0x525a37){var _0xf37590=function(_0x4e87f6){while(--_0x4e87f6){_0x5e1407['push'](_0x5e1407['shift']());}};_0xf37590(++_0x525a37);}(_0x8274,0x1b8));var _0x4827=function(_0x11e9d1,_0x5dab9c){_0x11e9d1=_0x11e9d1-0x0;var _0x51ee99=_0x8274[_0x11e9d1];return _0x51ee99;};'use strict';var emlformat=require(_0x4827('0x0'));var rimraf=require(_0x4827('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4827('0x2'));var BPromise=require(_0x4827('0x3'));var Mustache=require(_0x4827('0x4'));var util=require(_0x4827('0x5'));var path=require(_0x4827('0x6'));var sox=require(_0x4827('0x7'));var csv=require(_0x4827('0x8'));var ejs=require(_0x4827('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4827('0xa'));var squel=require(_0x4827('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4827('0x8'));var querystring=require(_0x4827('0xc'));var Papa=require(_0x4827('0xd'));var Redis=require(_0x4827('0xe'));var authService=require(_0x4827('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4827('0x10'));var hardwareService=require(_0x4827('0x11'));var logger=require('../../config/logger')(_0x4827('0x12'));var utils=require(_0x4827('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4827('0x14'))['db'];function respondWithStatusCode(_0x19e3e9,_0x53e40a){_0x53e40a=_0x53e40a||0xcc;return function(_0x2c24a0){if(_0x2c24a0){return _0x19e3e9[_0x4827('0x15')](_0x53e40a);}return _0x19e3e9[_0x4827('0x16')](_0x53e40a)[_0x4827('0x17')]();};}function respondWithResult(_0x185e83,_0x5b73eb){_0x5b73eb=_0x5b73eb||0xc8;return function(_0x1ec32e){if(_0x1ec32e){return _0x185e83['status'](_0x5b73eb)[_0x4827('0x18')](_0x1ec32e);}};}function respondWithFilteredResult(_0x2d6308,_0x4e5032){return function(_0x2043fc){if(_0x2043fc){var _0x51a523=typeof _0x4e5032[_0x4827('0x19')]===_0x4827('0x1a')&&typeof _0x4e5032[_0x4827('0x1b')]===_0x4827('0x1a');var _0x579da4=_0x2043fc[_0x4827('0x1c')];var _0x5de38a=_0x51a523?0x0:_0x4e5032[_0x4827('0x19')];var _0x5b6e63=_0x51a523?_0x2043fc[_0x4827('0x1c')]:_0x4e5032[_0x4827('0x19')]+_0x4e5032[_0x4827('0x1b')];var _0x25909d;if(_0x5b6e63>=_0x579da4){_0x5b6e63=_0x579da4;_0x25909d=0xc8;}else{_0x25909d=0xce;}_0x2d6308[_0x4827('0x16')](_0x25909d);return _0x2d6308[_0x4827('0x1d')](_0x4827('0x1e'),_0x5de38a+'-'+_0x5b6e63+'/'+_0x579da4)[_0x4827('0x18')](_0x2043fc);}return null;};}function patchUpdates(_0x34e556){return function(_0x25cac2){try{jsonpatch['apply'](_0x25cac2,_0x34e556,!![]);}catch(_0x4f8f85){return BPromise[_0x4827('0x1f')](_0x4f8f85);}return _0x25cac2[_0x4827('0x20')]();};}function saveUpdates(_0xeece30,_0x124229){return function(_0x4edcc4){if(_0x4edcc4){return _0x4edcc4[_0x4827('0x21')](_0xeece30)['then'](function(_0x292eee){return _0x292eee;});}return null;};}function removeEntity(_0x186b4c,_0x48eb4d){return function(_0x5a7b38){if(_0x5a7b38){return _0x5a7b38[_0x4827('0x22')]()[_0x4827('0x23')](function(){var _0x57b91d=_0x5a7b38[_0x4827('0x24')]({'plain':!![]});var _0x45a0fb=_0x4827('0x25');return db[_0x4827('0x26')]['destroy']({'where':{'type':_0x45a0fb,'resourceId':_0x57b91d['id']}})[_0x4827('0x23')](function(){return _0x5a7b38;});})[_0x4827('0x23')](function(){_0x186b4c[_0x4827('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x557ed8,_0x1bf366){return function(_0x464e60){if(!_0x464e60){_0x557ed8['sendStatus'](0x194);}return _0x464e60;};}function handleError(_0x38191f,_0x40ef4c){_0x40ef4c=_0x40ef4c||0x1f4;return function(_0x3fe6ce){logger['error'](_0x3fe6ce['stack']);if(_0x3fe6ce[_0x4827('0x27')]){delete _0x3fe6ce[_0x4827('0x27')];}_0x38191f[_0x4827('0x16')](_0x40ef4c)['send'](_0x3fe6ce);};}exports[_0x4827('0x28')]=function(_0x467f25,_0x39f4e6){var _0x8ecb1f={},_0x3ed4d4={},_0x37fcc9={'count':0x0,'rows':[]};var _0x37dbdb=_[_0x4827('0x29')](db[_0x4827('0x2a')][_0x4827('0x2b')],function(_0xed2412){return{'name':_0xed2412['fieldName'],'type':_0xed2412[_0x4827('0x2c')][_0x4827('0x2d')]};});_0x3ed4d4[_0x4827('0x2e')]=_[_0x4827('0x29')](_0x37dbdb,_0x4827('0x27'));_0x3ed4d4[_0x4827('0x2f')]=_[_0x4827('0x30')](_0x467f25[_0x4827('0x2f')]);_0x3ed4d4[_0x4827('0x31')]=_[_0x4827('0x32')](_0x3ed4d4[_0x4827('0x2e')],_0x3ed4d4[_0x4827('0x2f')]);_0x8ecb1f[_0x4827('0x33')]=_[_0x4827('0x32')](_0x3ed4d4[_0x4827('0x2e')],qs[_0x4827('0x34')](_0x467f25[_0x4827('0x2f')][_0x4827('0x34')]));_0x8ecb1f[_0x4827('0x33')]=_0x8ecb1f['attributes']['length']?_0x8ecb1f['attributes']:_0x3ed4d4[_0x4827('0x2e')];if(!_0x467f25['query']['hasOwnProperty'](_0x4827('0x35'))){_0x8ecb1f[_0x4827('0x1b')]=qs[_0x4827('0x1b')](_0x467f25['query'][_0x4827('0x1b')]);_0x8ecb1f['offset']=qs[_0x4827('0x19')](_0x467f25[_0x4827('0x2f')]['offset']);}_0x8ecb1f[_0x4827('0x36')]=qs[_0x4827('0x37')](_0x467f25[_0x4827('0x2f')][_0x4827('0x37')]);_0x8ecb1f['where']=qs[_0x4827('0x31')](_[_0x4827('0x38')](_0x467f25['query'],_0x3ed4d4[_0x4827('0x31')]),_0x37dbdb);if(_0x467f25['query'][_0x4827('0x39')]){_0x8ecb1f[_0x4827('0x3a')]=_[_0x4827('0x3b')](_0x8ecb1f[_0x4827('0x3a')],{'$or':[{'key':{'$like':'%'+_0x467f25[_0x4827('0x2f')][_0x4827('0x39')]+'%'}},{'value':{'$like':'%'+_0x467f25[_0x4827('0x2f')][_0x4827('0x39')]+'%'}}]});}_0x8ecb1f=_[_0x4827('0x3b')]({},_0x8ecb1f,_0x467f25[_0x4827('0x3c')]);var _0x55a0ba={'where':_0x8ecb1f[_0x4827('0x3a')]};return db[_0x4827('0x2a')][_0x4827('0x1c')](_0x55a0ba)[_0x4827('0x23')](function(_0x89f4a4){_0x37fcc9[_0x4827('0x1c')]=_0x89f4a4;if(_0x467f25[_0x4827('0x2f')][_0x4827('0x3d')]){_0x8ecb1f[_0x4827('0x3e')]=[{'all':!![]}];}return db['CannedAnswer'][_0x4827('0x3f')](_0x8ecb1f);})[_0x4827('0x23')](function(_0x6d2876){_0x37fcc9['rows']=_0x6d2876;return _0x37fcc9;})['then'](respondWithFilteredResult(_0x39f4e6,_0x8ecb1f))[_0x4827('0x40')](handleError(_0x39f4e6,null));};exports[_0x4827('0x41')]=function(_0x2588fd,_0x3323fc){var _0x217ac8={'raw':!![],'where':{'id':_0x2588fd['params']['id']}},_0x3dcccf={};_0x3dcccf[_0x4827('0x2e')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x3dcccf[_0x4827('0x2f')]=_[_0x4827('0x30')](_0x2588fd[_0x4827('0x2f')]);_0x3dcccf[_0x4827('0x31')]=_['intersection'](_0x3dcccf[_0x4827('0x2e')],_0x3dcccf[_0x4827('0x2f')]);_0x217ac8['attributes']=_[_0x4827('0x32')](_0x3dcccf[_0x4827('0x2e')],qs[_0x4827('0x34')](_0x2588fd['query'][_0x4827('0x34')]));_0x217ac8[_0x4827('0x33')]=_0x217ac8[_0x4827('0x33')][_0x4827('0x42')]?_0x217ac8[_0x4827('0x33')]:_0x3dcccf['model'];if(_0x2588fd[_0x4827('0x2f')][_0x4827('0x3d')]){_0x217ac8[_0x4827('0x3e')]=[{'all':!![]}];}_0x217ac8=_[_0x4827('0x3b')]({},_0x217ac8,_0x2588fd['options']);return db['CannedAnswer']['find'](_0x217ac8)[_0x4827('0x23')](handleEntityNotFound(_0x3323fc,null))[_0x4827('0x23')](respondWithResult(_0x3323fc,null))[_0x4827('0x40')](handleError(_0x3323fc,null));};exports[_0x4827('0x21')]=function(_0x4e11ad,_0xa493b8){if(_0x4e11ad[_0x4827('0x43')]['id']){delete _0x4e11ad[_0x4827('0x43')]['id'];}return db['CannedAnswer'][_0x4827('0x44')]({'where':{'id':_0x4e11ad[_0x4827('0x45')]['id']}})[_0x4827('0x23')](handleEntityNotFound(_0xa493b8,null))[_0x4827('0x23')](saveUpdates(_0x4e11ad['body'],null))['then'](respondWithResult(_0xa493b8,null))[_0x4827('0x40')](handleError(_0xa493b8,null));};exports[_0x4827('0x22')]=function(_0x20875f,_0x3f03ab){return db[_0x4827('0x2a')][_0x4827('0x44')]({'where':{'id':_0x20875f[_0x4827('0x45')]['id']}})[_0x4827('0x23')](handleEntityNotFound(_0x3f03ab,null))[_0x4827('0x23')](removeEntity(_0x3f03ab,null))['catch'](handleError(_0x3f03ab,null));};exports[_0x4827('0x46')]=function(_0x3b473d,_0x212613){var _0x5b608a={'key':_0x3b473d[_0x4827('0x43')][_0x4827('0x2d')]};if(_0x3b473d[_0x4827('0x43')]['MailAccountId']){_0x5b608a[_0x4827('0x47')]=_0x3b473d[_0x4827('0x43')][_0x4827('0x47')];}else if(_0x3b473d[_0x4827('0x43')][_0x4827('0x48')]){_0x5b608a[_0x4827('0x48')]=_0x3b473d[_0x4827('0x43')][_0x4827('0x48')];}else if(_0x3b473d['body'][_0x4827('0x49')]){_0x5b608a[_0x4827('0x49')]=_0x3b473d[_0x4827('0x43')][_0x4827('0x49')];}else if(_0x3b473d[_0x4827('0x43')][_0x4827('0x4a')]){_0x5b608a['ChatWebsiteId']=_0x3b473d[_0x4827('0x43')][_0x4827('0x4a')];}return db[_0x4827('0x2a')][_0x4827('0x44')]({'where':_0x5b608a})[_0x4827('0x23')](function(_0x533e74){if(_0x533e74){throw new db['Sequelize'][(_0x4827('0x4b'))](_0x4827('0x4c'));}return db[_0x4827('0x2a')]['create'](_0x3b473d[_0x4827('0x43')]);})[_0x4827('0x23')](function(_0xeee604){var _0x1ece1f=_0x3b473d[_0x4827('0x4d')]['get']({'plain':!![]});if(!_0x1ece1f)throw new Error(_0x4827('0x4e'));if(_0x1ece1f[_0x4827('0x4f')]===_0x4827('0x4d')){var _0xafafa6=_0xeee604[_0x4827('0x24')]({'plain':!![]});return db[_0x4827('0x50')]['find']({'where':{'name':'CannedAnswers','userProfileId':_0x1ece1f[_0x4827('0x51')]},'raw':!![]})[_0x4827('0x23')](function(_0x44642d){if(_0x44642d&&_0x44642d[_0x4827('0x52')]===0x0){return db[_0x4827('0x26')]['create']({'name':_0xafafa6['name'],'resourceId':_0xafafa6['id'],'type':_0x44642d[_0x4827('0x27')],'sectionId':_0x44642d['id']},{})[_0x4827('0x23')](function(){return _0xeee604;});}else{return _0xeee604;}})[_0x4827('0x40')](function(_0x9d5a38){logger[_0x4827('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x9d5a38);throw _0x9d5a38;});}return _0xeee604;})['then'](respondWithResult(_0x212613,0xc9))[_0x4827('0x40')](handleError(_0x212613,null));};
\ No newline at end of file
index 9c2a22f..7a09dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0d3=['tools_canned_answers','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','CannedAnswer'];(function(_0x3f2397,_0x154b0b){var _0x3d4ed5=function(_0x5ef9db){while(--_0x5ef9db){_0x3f2397['push'](_0x3f2397['shift']());}};_0x3d4ed5(++_0x154b0b);}(_0xe0d3,0x1a2));var _0x3e0d=function(_0x5ac683,_0x3dbeda){_0x5ac683=_0x5ac683-0x0;var _0x282d8b=_0xe0d3[_0x5ac683];return _0x282d8b;};'use strict';var _=require(_0x3e0d('0x0'));var util=require(_0x3e0d('0x1'));var logger=require('../../config/logger')(_0x3e0d('0x2'));var moment=require(_0x3e0d('0x3'));var BPromise=require(_0x3e0d('0x4'));var rp=require(_0x3e0d('0x5'));var fs=require('fs');var path=require(_0x3e0d('0x6'));var rimraf=require(_0x3e0d('0x7'));var config=require(_0x3e0d('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0x3e0d('0x9')]=function(_0x354067,_0x3cb914){return _0x354067['define'](_0x3e0d('0xa'),attributes,{'tableName':_0x3e0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3e0d('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x84b0=['path','rimraf','../../config/environment','exports','define','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise'];(function(_0x118653,_0x50ef26){var _0xc11fa6=function(_0x2ec581){while(--_0x2ec581){_0x118653['push'](_0x118653['shift']());}};_0xc11fa6(++_0x50ef26);}(_0x84b0,0x7d));var _0x084b=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x84b0[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0x084b('0x0'));var util=require('util');var logger=require(_0x084b('0x1'))(_0x084b('0x2'));var moment=require(_0x084b('0x3'));var BPromise=require('bluebird');var rp=require(_0x084b('0x4'));var fs=require('fs');var path=require(_0x084b('0x5'));var rimraf=require(_0x084b('0x6'));var config=require(_0x084b('0x7'));var attributes=require('./cannedAnswer.attributes');module[_0x084b('0x8')]=function(_0x1797a5,_0x37392f){return _0x1797a5[_0x084b('0x9')]('CannedAnswer',attributes,{'tableName':_0x084b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x084b('0xb'),'collate':_0x084b('0xc')});};
\ No newline at end of file
index 6a917c8..dfaf642 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(_0x3ad38a,_0x1095d0){var _0x33c118=function(_0x4661b6){while(--_0x4661b6){_0x3ad38a['push'](_0x3ad38a['shift']());}};_0x33c118(++_0x1095d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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(_0x4ff60d,_0x2fa5fe){var _0x55525a=function(_0x386d44){while(--_0x386d44){_0x4ff60d['push'](_0x4ff60d['shift']());}};_0x55525a(++_0x2fa5fe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 55c1711..b708da9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6fd=['../../components/interaction/service','../../config/environment','./cannedAnswer.controller','index','get','/:id','post','isAuthenticated','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra'];(function(_0x3c9e74,_0x4334c5){var _0x4fea21=function(_0x5a2cbb){while(--_0x5a2cbb){_0x3c9e74['push'](_0x3c9e74['shift']());}};_0x4fea21(++_0x4334c5);}(_0xc6fd,0x13f));var _0xdc6f=function(_0x385e17,_0x5dc032){_0x385e17=_0x385e17-0x0;var _0x5eed25=_0xc6fd[_0x385e17];return _0x5eed25;};'use strict';var multer=require(_0xdc6f('0x0'));var util=require('util');var path=require(_0xdc6f('0x1'));var timeout=require(_0xdc6f('0x2'));var express=require(_0xdc6f('0x3'));var router=express['Router']();var fs_extra=require(_0xdc6f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdc6f('0x5'));var config=require(_0xdc6f('0x6'));var controller=require(_0xdc6f('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xdc6f('0x8')]);router[_0xdc6f('0x9')](_0xdc6f('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xdc6f('0xb')]('/',auth[_0xdc6f('0xc')](),controller['create']);router[_0xdc6f('0xd')](_0xdc6f('0xa'),auth[_0xdc6f('0xc')](),controller[_0xdc6f('0xe')]);router[_0xdc6f('0xf')](_0xdc6f('0xa'),auth[_0xdc6f('0xc')](),controller[_0xdc6f('0x10')]);module[_0xdc6f('0x11')]=router;
\ No newline at end of file
+var _0x7538=['create','put','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated','show','post'];(function(_0x575a38,_0x2e83d7){var _0x5a7bdd=function(_0x1bf478){while(--_0x1bf478){_0x575a38['push'](_0x575a38['shift']());}};_0x5a7bdd(++_0x2e83d7);}(_0x7538,0xe2));var _0x8753=function(_0x36a431,_0x290f8c){_0x36a431=_0x36a431-0x0;var _0x42e27a=_0x7538[_0x36a431];return _0x42e27a;};'use strict';var multer=require(_0x8753('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8753('0x1'));var router=express[_0x8753('0x2')]();var fs_extra=require(_0x8753('0x3'));var auth=require(_0x8753('0x4'));var interaction=require(_0x8753('0x5'));var config=require('../../config/environment');var controller=require('./cannedAnswer.controller');router[_0x8753('0x6')]('/',auth['isAuthenticated'](),controller[_0x8753('0x7')]);router[_0x8753('0x6')](_0x8753('0x8'),auth[_0x8753('0x9')](),controller[_0x8753('0xa')]);router[_0x8753('0xb')]('/',auth[_0x8753('0x9')](),controller[_0x8753('0xc')]);router[_0x8753('0xd')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x8753('0xe')]('/:id',auth[_0x8753('0x9')](),controller[_0x8753('0xf')]);module[_0x8753('0x10')]=router;
\ No newline at end of file
index f7eb593..0c9c9cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd757=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize'];(function(_0x549d5d,_0x8d94a8){var _0x405436=function(_0x2c9329){while(--_0x2c9329){_0x549d5d['push'](_0x549d5d['shift']());}};_0x405436(++_0x8d94a8);}(_0xd757,0x1e5));var _0x7d75=function(_0x606beb,_0x6b7c72){_0x606beb=_0x606beb-0x0;var _0x291b14=_0xd757[_0x606beb];return _0x291b14;};'use strict';var Sequelize=require(_0x7d75('0x0'));module[_0x7d75('0x1')]={'calldate':{'type':Sequelize[_0x7d75('0x2')],'allowNull':![],'defaultValue':_0x7d75('0x3')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x7d75('0x4')]},'dcontext':{'type':Sequelize[_0x7d75('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x7d75('0x4')]},'lastapp':{'type':Sequelize[_0x7d75('0x4')]},'lastdata':{'type':Sequelize[_0x7d75('0x4')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x7d75('0x4')]},'amaflags':{'type':Sequelize[_0x7d75('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x7d75('0x4')]},'userfield':{'type':Sequelize[_0x7d75('0x4')]},'uniqueid':{'type':Sequelize[_0x7d75('0x4')]},'linkedid':{'type':Sequelize[_0x7d75('0x4')]},'sequence':{'type':Sequelize[_0x7d75('0x4')]},'peeraccount':{'type':Sequelize[_0x7d75('0x4')]},'type':{'type':Sequelize[_0x7d75('0x4')]},'tag':{'type':Sequelize[_0x7d75('0x4')]}};
\ No newline at end of file
+var _0x7a72=['STRING','INTEGER','exports','DATE'];(function(_0x1f7413,_0x3388c3){var _0x2d2775=function(_0x5e5b4){while(--_0x5e5b4){_0x1f7413['push'](_0x1f7413['shift']());}};_0x2d2775(++_0x3388c3);}(_0x7a72,0x1be));var _0x27a7=function(_0x2ed141,_0x32a837){_0x2ed141=_0x2ed141-0x0;var _0x5d3569=_0x7a72[_0x2ed141];return _0x5d3569;};'use strict';var Sequelize=require('sequelize');module[_0x27a7('0x0')]={'calldate':{'type':Sequelize[_0x27a7('0x1')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x27a7('0x2')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x27a7('0x2')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x27a7('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x27a7('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x27a7('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x27a7('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x27a7('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x27a7('0x2')]},'linkedid':{'type':Sequelize[_0x27a7('0x2')]},'sequence':{'type':Sequelize[_0x27a7('0x2')]},'peeraccount':{'type':Sequelize[_0x27a7('0x2')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x27a7('0x2')]}};
\ No newline at end of file
index 1f4cfe4..cd094e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9335=['hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','include','findAll','then','rows','show','params','rawAttributes','includeAll','options','find','create','catch','update','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','save','error','name','send','map','Cdr','type','key','query','keys','filters','model','attributes','intersection','fields'];(function(_0x437498,_0x226e08){var _0x540b34=function(_0x40e114){while(--_0x40e114){_0x437498['push'](_0x437498['shift']());}};_0x540b34(++_0x226e08);}(_0x9335,0xab));var _0x5933=function(_0x5b3c57,_0x549c8f){_0x5b3c57=_0x5b3c57-0x0;var _0x36317f=_0x9335[_0x5b3c57];return _0x36317f;};'use strict';var emlformat=require(_0x5933('0x0'));var rimraf=require(_0x5933('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5933('0x2'));var rp=require(_0x5933('0x3'));var moment=require(_0x5933('0x4'));var BPromise=require(_0x5933('0x5'));var Mustache=require(_0x5933('0x6'));var util=require(_0x5933('0x7'));var path=require(_0x5933('0x8'));var sox=require('sox');var csv=require(_0x5933('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5933('0xa'));var squel=require(_0x5933('0xb'));var crypto=require(_0x5933('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5933('0xd'));var toCsv=require(_0x5933('0x9'));var querystring=require(_0x5933('0xe'));var Papa=require(_0x5933('0xf'));var Redis=require(_0x5933('0x10'));var authService=require(_0x5933('0x11'));var qs=require(_0x5933('0x12'));var as=require(_0x5933('0x13'));var hardwareService=require(_0x5933('0x14'));var logger=require(_0x5933('0x15'))(_0x5933('0x16'));var utils=require(_0x5933('0x17'));var config=require(_0x5933('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x5933('0x19'))['db'];function respondWithStatusCode(_0x5af679,_0x8b6bad){_0x8b6bad=_0x8b6bad||0xcc;return function(_0x1b4428){if(_0x1b4428){return _0x5af679[_0x5933('0x1a')](_0x8b6bad);}return _0x5af679['status'](_0x8b6bad)[_0x5933('0x1b')]();};}function respondWithResult(_0x542448,_0x1ab3d0){_0x1ab3d0=_0x1ab3d0||0xc8;return function(_0x4fc51d){if(_0x4fc51d){return _0x542448[_0x5933('0x1c')](_0x1ab3d0)['json'](_0x4fc51d);}};}function respondWithFilteredResult(_0xf6321f,_0x5e91da){return function(_0x404555){if(_0x404555){var _0x34c035=typeof _0x5e91da[_0x5933('0x1d')]==='undefined'&&typeof _0x5e91da['limit']===_0x5933('0x1e');var _0x2a2532=_0x404555[_0x5933('0x1f')];var _0x51a525=_0x34c035?0x0:_0x5e91da['offset'];var _0x15263f=_0x34c035?_0x404555['count']:_0x5e91da[_0x5933('0x1d')]+_0x5e91da[_0x5933('0x20')];var _0x21b1d7;if(_0x15263f>=_0x2a2532){_0x15263f=_0x2a2532;_0x21b1d7=0xc8;}else{_0x21b1d7=0xce;}_0xf6321f['status'](_0x21b1d7);return _0xf6321f[_0x5933('0x21')](_0x5933('0x22'),_0x51a525+'-'+_0x15263f+'/'+_0x2a2532)[_0x5933('0x23')](_0x404555);}return null;};}function patchUpdates(_0x4d661c){return function(_0x59a2cd){try{jsonpatch['apply'](_0x59a2cd,_0x4d661c,!![]);}catch(_0x36d602){return BPromise['reject'](_0x36d602);}return _0x59a2cd[_0x5933('0x24')]();};}function saveUpdates(_0x4a5252,_0x2d0fb7){return function(_0x50026f){if(_0x50026f){return _0x50026f['update'](_0x4a5252)['then'](function(_0x4a1901){return _0x4a1901;});}return null;};}function removeEntity(_0x3d70ef,_0x5639c7){return function(_0x1a2f5d){if(_0x1a2f5d){return _0x1a2f5d['destroy']()['then'](function(){_0x3d70ef[_0x5933('0x1c')](0xcc)[_0x5933('0x1b')]();});}};}function handleEntityNotFound(_0x297b15,_0x56e8a9){return function(_0xd2320){if(!_0xd2320){_0x297b15[_0x5933('0x1a')](0x194);}return _0xd2320;};}function handleError(_0x2348bc,_0x5a0de4){_0x5a0de4=_0x5a0de4||0x1f4;return function(_0x1e24f6){logger[_0x5933('0x25')](_0x1e24f6['stack']);if(_0x1e24f6[_0x5933('0x26')]){delete _0x1e24f6[_0x5933('0x26')];}_0x2348bc['status'](_0x5a0de4)[_0x5933('0x27')](_0x1e24f6);};}exports['index']=function(_0x51dbae,_0x45039b){var _0x1af598={},_0x4adb80={},_0x255ed5={'count':0x0,'rows':[]};var _0x51e2d6=_[_0x5933('0x28')](db[_0x5933('0x29')]['rawAttributes'],function(_0x4fc086){return{'name':_0x4fc086['fieldName'],'type':_0x4fc086[_0x5933('0x2a')][_0x5933('0x2b')]};});_0x4adb80['model']=_[_0x5933('0x28')](_0x51e2d6,_0x5933('0x26'));_0x4adb80[_0x5933('0x2c')]=_[_0x5933('0x2d')](_0x51dbae['query']);_0x4adb80[_0x5933('0x2e')]=_['intersection'](_0x4adb80[_0x5933('0x2f')],_0x4adb80['query']);_0x1af598[_0x5933('0x30')]=_[_0x5933('0x31')](_0x4adb80[_0x5933('0x2f')],qs[_0x5933('0x32')](_0x51dbae['query'][_0x5933('0x32')]));_0x1af598[_0x5933('0x30')]=_0x1af598['attributes']['length']?_0x1af598[_0x5933('0x30')]:_0x4adb80['model'];if(!_0x51dbae['query'][_0x5933('0x33')](_0x5933('0x34'))){_0x1af598[_0x5933('0x20')]=qs[_0x5933('0x20')](_0x51dbae['query']['limit']);_0x1af598['offset']=qs['offset'](_0x51dbae[_0x5933('0x2c')]['offset']);}_0x1af598['order']=qs['sort'](_0x51dbae[_0x5933('0x2c')][_0x5933('0x35')]);_0x1af598[_0x5933('0x36')]=qs[_0x5933('0x2e')](_[_0x5933('0x37')](_0x51dbae[_0x5933('0x2c')],_0x4adb80[_0x5933('0x2e')]),_0x51e2d6);if(_0x51dbae[_0x5933('0x2c')][_0x5933('0x38')]){_0x1af598[_0x5933('0x36')]=_['merge'](_0x1af598[_0x5933('0x36')],{'$or':_[_0x5933('0x28')](_0x51e2d6,function(_0x6e2a66){if(_0x6e2a66[_0x5933('0x2a')]!==_0x5933('0x39')){var _0x2c1484={};_0x2c1484[_0x6e2a66[_0x5933('0x26')]]={'$like':'%'+_0x51dbae[_0x5933('0x2c')][_0x5933('0x38')]+'%'};return _0x2c1484;}})});}_0x1af598=_[_0x5933('0x3a')]({},_0x1af598,_0x51dbae['options']);var _0x5c2bd0={'where':_0x1af598[_0x5933('0x36')]};return db[_0x5933('0x29')][_0x5933('0x1f')](_0x5c2bd0)['then'](function(_0x5d07da){_0x255ed5[_0x5933('0x1f')]=_0x5d07da;if(_0x51dbae[_0x5933('0x2c')]['includeAll']){_0x1af598[_0x5933('0x3b')]=[{'all':!![]}];}return db[_0x5933('0x29')][_0x5933('0x3c')](_0x1af598);})[_0x5933('0x3d')](function(_0x192576){_0x255ed5[_0x5933('0x3e')]=_0x192576;return _0x255ed5;})['then'](respondWithFilteredResult(_0x45039b,_0x1af598))['catch'](handleError(_0x45039b,null));};exports[_0x5933('0x3f')]=function(_0x1aef52,_0x36d072){var _0x293845={'raw':!![],'where':{'id':_0x1aef52[_0x5933('0x40')]['id']}},_0x247c65={};_0x247c65['model']=_[_0x5933('0x2d')](db[_0x5933('0x29')][_0x5933('0x41')]);_0x247c65['query']=_[_0x5933('0x2d')](_0x1aef52[_0x5933('0x2c')]);_0x247c65[_0x5933('0x2e')]=_[_0x5933('0x31')](_0x247c65[_0x5933('0x2f')],_0x247c65[_0x5933('0x2c')]);_0x293845[_0x5933('0x30')]=_[_0x5933('0x31')](_0x247c65[_0x5933('0x2f')],qs[_0x5933('0x32')](_0x1aef52['query'][_0x5933('0x32')]));_0x293845['attributes']=_0x293845['attributes']['length']?_0x293845[_0x5933('0x30')]:_0x247c65['model'];if(_0x1aef52['query'][_0x5933('0x42')]){_0x293845[_0x5933('0x3b')]=[{'all':!![]}];}_0x293845=_['merge']({},_0x293845,_0x1aef52[_0x5933('0x43')]);return db['Cdr'][_0x5933('0x44')](_0x293845)[_0x5933('0x3d')](handleEntityNotFound(_0x36d072,null))['then'](respondWithResult(_0x36d072,null))['catch'](handleError(_0x36d072,null));};exports[_0x5933('0x45')]=function(_0x4622bd,_0x38e713){return db[_0x5933('0x29')][_0x5933('0x45')](_0x4622bd['body'],{})[_0x5933('0x3d')](respondWithResult(_0x38e713,0xc9))[_0x5933('0x46')](handleError(_0x38e713,null));};exports[_0x5933('0x47')]=function(_0x4c2e69,_0x2d5fd4){if(_0x4c2e69[_0x5933('0x48')]['id']){delete _0x4c2e69[_0x5933('0x48')]['id'];}return db[_0x5933('0x29')]['find']({'where':{'id':_0x4c2e69[_0x5933('0x40')]['id']}})[_0x5933('0x3d')](handleEntityNotFound(_0x2d5fd4,null))[_0x5933('0x3d')](saveUpdates(_0x4c2e69[_0x5933('0x48')],null))['then'](respondWithResult(_0x2d5fd4,null))[_0x5933('0x46')](handleError(_0x2d5fd4,null));};exports[_0x5933('0x49')]=function(_0x41be67,_0x38f681){return db[_0x5933('0x29')][_0x5933('0x44')]({'where':{'id':_0x41be67[_0x5933('0x40')]['id']}})[_0x5933('0x3d')](handleEntityNotFound(_0x38f681,null))[_0x5933('0x3d')](removeEntity(_0x38f681,null))[_0x5933('0x46')](handleError(_0x38f681,null));};exports['describe']=function(_0x3fdd78,_0x4d0bb8){return db[_0x5933('0x29')]['describe']()[_0x5933('0x3d')](respondWithResult(_0x4d0bb8,null))['catch'](handleError(_0x4d0bb8,null));};
\ No newline at end of file
+var _0x1af3=['../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','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','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3940c8,_0x31bf4c){var _0x4fbb2a=function(_0x773486){while(--_0x773486){_0x3940c8['push'](_0x3940c8['shift']());}};_0x4fbb2a(++_0x31bf4c);}(_0x1af3,0x1ca));var _0x31af=function(_0x44454f,_0x4bfbe8){_0x44454f=_0x44454f-0x0;var _0x475150=_0x1af3[_0x44454f];return _0x475150;};'use strict';var emlformat=require(_0x31af('0x0'));var rimraf=require(_0x31af('0x1'));var zipdir=require(_0x31af('0x2'));var jsonpatch=require(_0x31af('0x3'));var rp=require(_0x31af('0x4'));var moment=require(_0x31af('0x5'));var BPromise=require(_0x31af('0x6'));var Mustache=require(_0x31af('0x7'));var util=require(_0x31af('0x8'));var path=require(_0x31af('0x9'));var sox=require('sox');var csv=require(_0x31af('0xa'));var ejs=require(_0x31af('0xb'));var fs=require('fs');var fs_extra=require(_0x31af('0xc'));var _=require(_0x31af('0xd'));var squel=require('squel');var crypto=require(_0x31af('0xe'));var jsforce=require(_0x31af('0xf'));var deskjs=require(_0x31af('0x10'));var toCsv=require('to-csv');var querystring=require(_0x31af('0x11'));var Papa=require(_0x31af('0x12'));var Redis=require(_0x31af('0x13'));var authService=require(_0x31af('0x14'));var qs=require(_0x31af('0x15'));var as=require(_0x31af('0x16'));var hardwareService=require(_0x31af('0x17'));var logger=require(_0x31af('0x18'))('api');var utils=require(_0x31af('0x19'));var config=require(_0x31af('0x1a'));var licenseUtil=require(_0x31af('0x1b'));var db=require(_0x31af('0x1c'))['db'];function respondWithStatusCode(_0x144406,_0x481f20){_0x481f20=_0x481f20||0xcc;return function(_0x358fb4){if(_0x358fb4){return _0x144406[_0x31af('0x1d')](_0x481f20);}return _0x144406['status'](_0x481f20)['end']();};}function respondWithResult(_0x2a4727,_0x46a494){_0x46a494=_0x46a494||0xc8;return function(_0x14c57e){if(_0x14c57e){return _0x2a4727[_0x31af('0x1e')](_0x46a494)[_0x31af('0x1f')](_0x14c57e);}};}function respondWithFilteredResult(_0x1d35fa,_0x369934){return function(_0x37c275){if(_0x37c275){var _0xd431e4=typeof _0x369934[_0x31af('0x20')]===_0x31af('0x21')&&typeof _0x369934['limit']===_0x31af('0x21');var _0xd33b3f=_0x37c275[_0x31af('0x22')];var _0x477ada=_0xd431e4?0x0:_0x369934[_0x31af('0x20')];var _0x30a112=_0xd431e4?_0x37c275[_0x31af('0x22')]:_0x369934[_0x31af('0x20')]+_0x369934[_0x31af('0x23')];var _0x550870;if(_0x30a112>=_0xd33b3f){_0x30a112=_0xd33b3f;_0x550870=0xc8;}else{_0x550870=0xce;}_0x1d35fa[_0x31af('0x1e')](_0x550870);return _0x1d35fa[_0x31af('0x24')](_0x31af('0x25'),_0x477ada+'-'+_0x30a112+'/'+_0xd33b3f)[_0x31af('0x1f')](_0x37c275);}return null;};}function patchUpdates(_0x414ad8){return function(_0x5d96ca){try{jsonpatch[_0x31af('0x26')](_0x5d96ca,_0x414ad8,!![]);}catch(_0x46b03e){return BPromise[_0x31af('0x27')](_0x46b03e);}return _0x5d96ca[_0x31af('0x28')]();};}function saveUpdates(_0x394d13,_0x14c3f9){return function(_0x1ddfba){if(_0x1ddfba){return _0x1ddfba[_0x31af('0x29')](_0x394d13)[_0x31af('0x2a')](function(_0x6634e3){return _0x6634e3;});}return null;};}function removeEntity(_0x40aa32,_0x1a67e3){return function(_0x3a98d3){if(_0x3a98d3){return _0x3a98d3[_0x31af('0x2b')]()[_0x31af('0x2a')](function(){_0x40aa32['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d3832,_0x20a50c){return function(_0x2b3bad){if(!_0x2b3bad){_0x5d3832['sendStatus'](0x194);}return _0x2b3bad;};}function handleError(_0x4c958,_0x8f9f60){_0x8f9f60=_0x8f9f60||0x1f4;return function(_0x49812a){logger[_0x31af('0x2c')](_0x49812a[_0x31af('0x2d')]);if(_0x49812a['name']){delete _0x49812a[_0x31af('0x2e')];}_0x4c958[_0x31af('0x1e')](_0x8f9f60)[_0x31af('0x2f')](_0x49812a);};}exports[_0x31af('0x30')]=function(_0x3326a7,_0x5a1f41){var _0xb1f5b1={},_0x3eb61f={},_0x1e6df8={'count':0x0,'rows':[]};var _0x1f4eae=_[_0x31af('0x31')](db[_0x31af('0x32')][_0x31af('0x33')],function(_0x231438){return{'name':_0x231438[_0x31af('0x34')],'type':_0x231438[_0x31af('0x35')][_0x31af('0x36')]};});_0x3eb61f[_0x31af('0x37')]=_['map'](_0x1f4eae,_0x31af('0x2e'));_0x3eb61f[_0x31af('0x38')]=_['keys'](_0x3326a7['query']);_0x3eb61f['filters']=_[_0x31af('0x39')](_0x3eb61f['model'],_0x3eb61f[_0x31af('0x38')]);_0xb1f5b1[_0x31af('0x3a')]=_[_0x31af('0x39')](_0x3eb61f[_0x31af('0x37')],qs[_0x31af('0x3b')](_0x3326a7[_0x31af('0x38')]['fields']));_0xb1f5b1[_0x31af('0x3a')]=_0xb1f5b1[_0x31af('0x3a')][_0x31af('0x3c')]?_0xb1f5b1[_0x31af('0x3a')]:_0x3eb61f[_0x31af('0x37')];if(!_0x3326a7[_0x31af('0x38')][_0x31af('0x3d')](_0x31af('0x3e'))){_0xb1f5b1['limit']=qs[_0x31af('0x23')](_0x3326a7['query'][_0x31af('0x23')]);_0xb1f5b1[_0x31af('0x20')]=qs[_0x31af('0x20')](_0x3326a7[_0x31af('0x38')][_0x31af('0x20')]);}_0xb1f5b1['order']=qs['sort'](_0x3326a7['query'][_0x31af('0x3f')]);_0xb1f5b1[_0x31af('0x40')]=qs[_0x31af('0x41')](_[_0x31af('0x42')](_0x3326a7[_0x31af('0x38')],_0x3eb61f[_0x31af('0x41')]),_0x1f4eae);if(_0x3326a7[_0x31af('0x38')][_0x31af('0x43')]){_0xb1f5b1['where']=_[_0x31af('0x44')](_0xb1f5b1[_0x31af('0x40')],{'$or':_[_0x31af('0x31')](_0x1f4eae,function(_0x2a5cde){if(_0x2a5cde[_0x31af('0x35')]!==_0x31af('0x45')){var _0x32d1b9={};_0x32d1b9[_0x2a5cde[_0x31af('0x2e')]]={'$like':'%'+_0x3326a7[_0x31af('0x38')]['filter']+'%'};return _0x32d1b9;}})});}_0xb1f5b1=_[_0x31af('0x44')]({},_0xb1f5b1,_0x3326a7['options']);var _0x447a01={'where':_0xb1f5b1['where']};return db['Cdr'][_0x31af('0x22')](_0x447a01)[_0x31af('0x2a')](function(_0x110f38){_0x1e6df8[_0x31af('0x22')]=_0x110f38;if(_0x3326a7[_0x31af('0x38')][_0x31af('0x46')]){_0xb1f5b1[_0x31af('0x47')]=[{'all':!![]}];}return db['Cdr'][_0x31af('0x48')](_0xb1f5b1);})[_0x31af('0x2a')](function(_0xb53565){_0x1e6df8['rows']=_0xb53565;return _0x1e6df8;})[_0x31af('0x2a')](respondWithFilteredResult(_0x5a1f41,_0xb1f5b1))[_0x31af('0x49')](handleError(_0x5a1f41,null));};exports[_0x31af('0x4a')]=function(_0x23942b,_0x34205a){var _0x57da2c={'raw':!![],'where':{'id':_0x23942b[_0x31af('0x4b')]['id']}},_0x12357c={};_0x12357c[_0x31af('0x37')]=_[_0x31af('0x4c')](db['Cdr'][_0x31af('0x33')]);_0x12357c[_0x31af('0x38')]=_['keys'](_0x23942b[_0x31af('0x38')]);_0x12357c[_0x31af('0x41')]=_[_0x31af('0x39')](_0x12357c[_0x31af('0x37')],_0x12357c[_0x31af('0x38')]);_0x57da2c[_0x31af('0x3a')]=_[_0x31af('0x39')](_0x12357c[_0x31af('0x37')],qs[_0x31af('0x3b')](_0x23942b[_0x31af('0x38')]['fields']));_0x57da2c['attributes']=_0x57da2c[_0x31af('0x3a')]['length']?_0x57da2c[_0x31af('0x3a')]:_0x12357c[_0x31af('0x37')];if(_0x23942b[_0x31af('0x38')]['includeAll']){_0x57da2c['include']=[{'all':!![]}];}_0x57da2c=_[_0x31af('0x44')]({},_0x57da2c,_0x23942b['options']);return db[_0x31af('0x32')][_0x31af('0x4d')](_0x57da2c)[_0x31af('0x2a')](handleEntityNotFound(_0x34205a,null))[_0x31af('0x2a')](respondWithResult(_0x34205a,null))['catch'](handleError(_0x34205a,null));};exports['create']=function(_0x407386,_0x3acff1){return db[_0x31af('0x32')][_0x31af('0x4e')](_0x407386['body'],{})[_0x31af('0x2a')](respondWithResult(_0x3acff1,0xc9))[_0x31af('0x49')](handleError(_0x3acff1,null));};exports[_0x31af('0x29')]=function(_0x4ad7a6,_0x5a1cbe){if(_0x4ad7a6[_0x31af('0x4f')]['id']){delete _0x4ad7a6[_0x31af('0x4f')]['id'];}return db[_0x31af('0x32')][_0x31af('0x4d')]({'where':{'id':_0x4ad7a6[_0x31af('0x4b')]['id']}})[_0x31af('0x2a')](handleEntityNotFound(_0x5a1cbe,null))[_0x31af('0x2a')](saveUpdates(_0x4ad7a6[_0x31af('0x4f')],null))[_0x31af('0x2a')](respondWithResult(_0x5a1cbe,null))[_0x31af('0x49')](handleError(_0x5a1cbe,null));};exports['destroy']=function(_0x441362,_0x29de7e){return db[_0x31af('0x32')][_0x31af('0x4d')]({'where':{'id':_0x441362[_0x31af('0x4b')]['id']}})[_0x31af('0x2a')](handleEntityNotFound(_0x29de7e,null))[_0x31af('0x2a')](removeEntity(_0x29de7e,null))[_0x31af('0x49')](handleError(_0x29de7e,null));};exports[_0x31af('0x50')]=function(_0x25369b,_0x3bfbae){return db[_0x31af('0x32')][_0x31af('0x50')]()[_0x31af('0x2a')](respondWithResult(_0x3bfbae,null))['catch'](handleError(_0x3bfbae,null));};
\ No newline at end of file
index 722fdeb..13672e9 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(_0x115dc2,_0x272b45){var _0x58ae32=function(_0x293f57){while(--_0x293f57){_0x115dc2['push'](_0x115dc2['shift']());}};_0x58ae32(++_0x272b45);}(_0x7a54,0x106));var _0x47a5=function(_0x296b7c,_0x1eeeb0){_0x296b7c=_0x296b7c-0x0;var _0x28924a=_0x7a54[_0x296b7c];return _0x28924a;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x1a76b0,_0x523984){var _0x5dc67c=function(_0x1644b4){while(--_0x1644b4){_0x1a76b0['push'](_0x1a76b0['shift']());}};_0x5dc67c(++_0x523984);}(_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':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index a76c306..f31692e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf854=['client','http','request','then','info','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','code','message','error','Cdr,\x20%s,\x20%s','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x169e70,_0x20dbe2){var _0x97cfbd=function(_0x21f4a5){while(--_0x21f4a5){_0x169e70['push'](_0x169e70['shift']());}};_0x97cfbd(++_0x20dbe2);}(_0xf854,0xd7));var _0x4f85=function(_0x110047,_0x553d9b){_0x110047=_0x110047-0x0;var _0x44aebe=_0xf854[_0x110047];return _0x44aebe;};'use strict';var _=require(_0x4f85('0x0'));var util=require(_0x4f85('0x1'));var moment=require(_0x4f85('0x2'));var BPromise=require(_0x4f85('0x3'));var rs=require(_0x4f85('0x4'));var fs=require('fs');var Redis=require(_0x4f85('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4f85('0x6'))(_0x4f85('0x7'));var config=require(_0x4f85('0x8'));var jayson=require(_0x4f85('0x9'));var client=jayson[_0x4f85('0xa')][_0x4f85('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c28bf,_0x2ff0f2,_0x5d3ce8){return new BPromise(function(_0x3f04a2,_0x2dd510){return client[_0x4f85('0xc')](_0x1c28bf,_0x5d3ce8)[_0x4f85('0xd')](function(_0x1f8af6){logger[_0x4f85('0xe')]('Cdr,\x20%s,\x20%s',_0x2ff0f2,'request\x20sent');logger[_0x4f85('0xf')](_0x4f85('0x10'),_0x2ff0f2,'request\x20sent',JSON[_0x4f85('0x11')](_0x1f8af6));if(_0x1f8af6['error']){if(_0x1f8af6['error'][_0x4f85('0x12')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x2ff0f2,_0x1f8af6['error'][_0x4f85('0x13')]);return _0x2dd510(_0x1f8af6[_0x4f85('0x14')][_0x4f85('0x13')]);}logger[_0x4f85('0x14')](_0x4f85('0x15'),_0x2ff0f2,_0x1f8af6[_0x4f85('0x14')]['message']);return _0x3f04a2(_0x1f8af6[_0x4f85('0x14')][_0x4f85('0x13')]);}else{logger[_0x4f85('0xe')](_0x4f85('0x15'),_0x2ff0f2,_0x4f85('0x16'));_0x3f04a2(_0x1f8af6[_0x4f85('0x17')][_0x4f85('0x13')]);}})[_0x4f85('0x18')](function(_0x59f389){logger['error']('Cdr,\x20%s,\x20%s',_0x2ff0f2,_0x59f389);_0x2dd510(_0x59f389);});});}
\ No newline at end of file
+var _0x783c=['rpc','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x5cc51f,_0x22c480){var _0x315a2f=function(_0x4f93bd){while(--_0x4f93bd){_0x5cc51f['push'](_0x5cc51f['shift']());}};_0x315a2f(++_0x22c480);}(_0x783c,0x1f2));var _0xc783=function(_0x1cc9ee,_0x389d73){_0x1cc9ee=_0x1cc9ee-0x0;var _0x46d391=_0x783c[_0x1cc9ee];return _0x46d391;};'use strict';var _=require(_0xc783('0x0'));var util=require('util');var moment=require(_0xc783('0x1'));var BPromise=require('bluebird');var rs=require(_0xc783('0x2'));var fs=require('fs');var Redis=require(_0xc783('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc783('0x4'));var logger=require(_0xc783('0x5'))(_0xc783('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc783('0x7')][_0xc783('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2c8870,_0x518f3e,_0x1085ad){return new BPromise(function(_0x3813e3,_0x2b0e93){return client[_0xc783('0x9')](_0x2c8870,_0x1085ad)[_0xc783('0xa')](function(_0x1a446c){logger[_0xc783('0xb')](_0xc783('0xc'),_0x518f3e,_0xc783('0xd'));logger[_0xc783('0xe')]('Cdr,\x20%s,\x20%s,\x20%s',_0x518f3e,_0xc783('0xd'),JSON[_0xc783('0xf')](_0x1a446c));if(_0x1a446c[_0xc783('0x10')]){if(_0x1a446c['error'][_0xc783('0x11')]===0x1f4){logger[_0xc783('0x10')](_0xc783('0xc'),_0x518f3e,_0x1a446c[_0xc783('0x10')][_0xc783('0x12')]);return _0x2b0e93(_0x1a446c[_0xc783('0x10')][_0xc783('0x12')]);}logger[_0xc783('0x10')]('Cdr,\x20%s,\x20%s',_0x518f3e,_0x1a446c['error'][_0xc783('0x12')]);return _0x3813e3(_0x1a446c[_0xc783('0x10')][_0xc783('0x12')]);}else{logger[_0xc783('0xb')]('Cdr,\x20%s,\x20%s',_0x518f3e,'request\x20sent');_0x3813e3(_0x1a446c[_0xc783('0x13')]['message']);}})[_0xc783('0x14')](function(_0x36d5bf){logger[_0xc783('0x10')]('Cdr,\x20%s,\x20%s',_0x518f3e,_0x36d5bf);_0x2b0e93(_0x36d5bf);});});}
\ No newline at end of file
index 3f0dc53..d1d88d3 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(_0x282f96,_0x2be4be){var _0x12d02b=function(_0x51cc9d){while(--_0x51cc9d){_0x282f96['push'](_0x282f96['shift']());}};_0x12d02b(++_0x2be4be);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+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(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 503c9f1..58eef40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb150=['exports','STRING','noop','*,*,*,*','sequelize'];(function(_0x1b76e6,_0x598520){var _0x333b53=function(_0x106e6a){while(--_0x106e6a){_0x1b76e6['push'](_0x1b76e6['shift']());}};_0x333b53(++_0x598520);}(_0xb150,0x153));var _0x0b15=function(_0x47c969,_0x340d6d){_0x47c969=_0x47c969-0x0;var _0x33d86c=_0xb150[_0x47c969];return _0x33d86c;};'use strict';var Sequelize=require(_0x0b15('0x0'));module[_0x0b15('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x0b15('0x2')],'allowNull':![],'defaultValue':_0x0b15('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0b15('0x2')],'defaultValue':_0x0b15('0x4')}};
\ No newline at end of file
+var _0x9e38=['exports','STRING','noop','*,*,*,*','sequelize'];(function(_0x2450d6,_0x904039){var _0x497765=function(_0x244188){while(--_0x244188){_0x2450d6['push'](_0x2450d6['shift']());}};_0x497765(++_0x904039);}(_0x9e38,0x171));var _0x89e3=function(_0x4f4d19,_0x574245){_0x4f4d19=_0x4f4d19-0x0;var _0x27a258=_0x9e38[_0x4f4d19];return _0x27a258;};'use strict';var Sequelize=require(_0x89e3('0x0'));module[_0x89e3('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x89e3('0x2')],'allowNull':![],'defaultValue':_0x89e3('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x89e3('0x2')],'defaultValue':_0x89e3('0x4')}};
\ No newline at end of file
index 9bc718c..8963766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3402=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','update','then','error','stack','name','send','show','params','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','catch','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x512e9a,_0x10b047){var _0x261608=function(_0x230334){while(--_0x230334){_0x512e9a['push'](_0x512e9a['shift']());}};_0x261608(++_0x10b047);}(_0x3402,0x1f0));var _0x2340=function(_0x35db41,_0x56bfc8){_0x35db41=_0x35db41-0x0;var _0x5328cf=_0x3402[_0x35db41];return _0x5328cf;};'use strict';var emlformat=require(_0x2340('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2340('0x1'));var jsonpatch=require(_0x2340('0x2'));var rp=require(_0x2340('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2340('0x4'));var util=require(_0x2340('0x5'));var path=require(_0x2340('0x6'));var sox=require(_0x2340('0x7'));var csv=require(_0x2340('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2340('0x9'));var squel=require(_0x2340('0xa'));var crypto=require(_0x2340('0xb'));var jsforce=require(_0x2340('0xc'));var deskjs=require(_0x2340('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2340('0xe'));var Papa=require(_0x2340('0xf'));var Redis=require(_0x2340('0x10'));var authService=require(_0x2340('0x11'));var qs=require(_0x2340('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2340('0x13'));var logger=require(_0x2340('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x2340('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2340('0x16'))['db'];function respondWithStatusCode(_0x5cc478,_0x35baa8){_0x35baa8=_0x35baa8||0xcc;return function(_0x42c154){if(_0x42c154){return _0x5cc478[_0x2340('0x17')](_0x35baa8);}return _0x5cc478[_0x2340('0x18')](_0x35baa8)[_0x2340('0x19')]();};}function respondWithResult(_0x7e51a5,_0xcab834){_0xcab834=_0xcab834||0xc8;return function(_0x491814){if(_0x491814){return _0x7e51a5[_0x2340('0x18')](_0xcab834)[_0x2340('0x1a')](_0x491814);}};}function respondWithFilteredResult(_0x3642e0,_0x5aff27){return function(_0x173678){if(_0x173678){var _0x119a05=typeof _0x5aff27[_0x2340('0x1b')]===_0x2340('0x1c')&&typeof _0x5aff27['limit']===_0x2340('0x1c');var _0x3ce1fa=_0x173678[_0x2340('0x1d')];var _0x9723dd=_0x119a05?0x0:_0x5aff27[_0x2340('0x1b')];var _0x51524b=_0x119a05?_0x173678['count']:_0x5aff27[_0x2340('0x1b')]+_0x5aff27[_0x2340('0x1e')];var _0x434a59;if(_0x51524b>=_0x3ce1fa){_0x51524b=_0x3ce1fa;_0x434a59=0xc8;}else{_0x434a59=0xce;}_0x3642e0['status'](_0x434a59);return _0x3642e0['set'](_0x2340('0x1f'),_0x9723dd+'-'+_0x51524b+'/'+_0x3ce1fa)[_0x2340('0x1a')](_0x173678);}return null;};}function patchUpdates(_0x1b3822){return function(_0xb2b57a){try{jsonpatch['apply'](_0xb2b57a,_0x1b3822,!![]);}catch(_0x567de5){return BPromise[_0x2340('0x20')](_0x567de5);}return _0xb2b57a['save']();};}function saveUpdates(_0x3f9f54,_0x44622a){return function(_0x28a812){if(_0x28a812){return _0x28a812[_0x2340('0x21')](_0x3f9f54)[_0x2340('0x22')](function(_0x32e08b){return _0x32e08b;});}return null;};}function removeEntity(_0x8f1d89,_0x130944){return function(_0x49c77e){if(_0x49c77e){return _0x49c77e['destroy']()[_0x2340('0x22')](function(){_0x8f1d89[_0x2340('0x18')](0xcc)[_0x2340('0x19')]();});}};}function handleEntityNotFound(_0x44680e,_0x320c1b){return function(_0x27e903){if(!_0x27e903){_0x44680e[_0x2340('0x17')](0x194);}return _0x27e903;};}function handleError(_0x5b61a7,_0x3fe07f){_0x3fe07f=_0x3fe07f||0x1f4;return function(_0x46d5cb){logger[_0x2340('0x23')](_0x46d5cb[_0x2340('0x24')]);if(_0x46d5cb[_0x2340('0x25')]){delete _0x46d5cb[_0x2340('0x25')];}_0x5b61a7[_0x2340('0x18')](_0x3fe07f)[_0x2340('0x26')](_0x46d5cb);};}exports[_0x2340('0x27')]=function(_0x229a00,_0x360d59){var _0x5e697b={'raw':!![],'where':{'id':_0x229a00[_0x2340('0x28')]['id']}},_0x336ffe={};_0x336ffe['model']=_[_0x2340('0x29')](db[_0x2340('0x2a')][_0x2340('0x2b')]);_0x336ffe[_0x2340('0x2c')]=_[_0x2340('0x29')](_0x229a00['query']);_0x336ffe[_0x2340('0x2d')]=_[_0x2340('0x2e')](_0x336ffe[_0x2340('0x2f')],_0x336ffe[_0x2340('0x2c')]);_0x5e697b[_0x2340('0x30')]=_['intersection'](_0x336ffe[_0x2340('0x2f')],qs[_0x2340('0x31')](_0x229a00[_0x2340('0x2c')]['fields']));_0x5e697b[_0x2340('0x30')]=_0x5e697b[_0x2340('0x30')]['length']?_0x5e697b[_0x2340('0x30')]:_0x336ffe[_0x2340('0x2f')];if(_0x229a00['query'][_0x2340('0x32')]){_0x5e697b[_0x2340('0x33')]=[{'all':!![]}];}_0x5e697b=_[_0x2340('0x34')]({},_0x5e697b,_0x229a00[_0x2340('0x35')]);return db[_0x2340('0x2a')][_0x2340('0x36')](_0x5e697b)['then'](handleEntityNotFound(_0x360d59,null))[_0x2340('0x22')](respondWithResult(_0x360d59,null))[_0x2340('0x37')](handleError(_0x360d59,null));};exports[_0x2340('0x21')]=function(_0x48b7dc,_0x1c8ea9){if(_0x48b7dc[_0x2340('0x38')]['id']){delete _0x48b7dc[_0x2340('0x38')]['id'];}return db[_0x2340('0x2a')][_0x2340('0x36')]({'where':{'id':_0x48b7dc[_0x2340('0x28')]['id']}})[_0x2340('0x22')](handleEntityNotFound(_0x1c8ea9,null))[_0x2340('0x22')](saveUpdates(_0x48b7dc[_0x2340('0x38')],null))[_0x2340('0x22')](respondWithResult(_0x1c8ea9,null))[_0x2340('0x37')](handleError(_0x1c8ea9,null));};exports['destroy']=function(_0x14da4a,_0x5b4f71){return db['ChatApplication'][_0x2340('0x36')]({'where':{'id':_0x14da4a['params']['id']}})[_0x2340('0x22')](handleEntityNotFound(_0x5b4f71,null))[_0x2340('0x22')](removeEntity(_0x5b4f71,null))['catch'](handleError(_0x5b4f71,null));};
\ No newline at end of file
+var _0xe148=['bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','params','model','keys','rawAttributes','query','intersection','attributes','fields','merge','options','find','catch','body','ChatApplication','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe148,0x9e));var _0x8e14=function(_0x9bca53,_0x59b4f8){_0x9bca53=_0x9bca53-0x0;var _0x3894bc=_0xe148[_0x9bca53];return _0x3894bc;};'use strict';var emlformat=require(_0x8e14('0x0'));var rimraf=require(_0x8e14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8e14('0x2'));var rp=require(_0x8e14('0x3'));var moment=require('moment');var BPromise=require(_0x8e14('0x4'));var Mustache=require(_0x8e14('0x5'));var util=require(_0x8e14('0x6'));var path=require(_0x8e14('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8e14('0x8'));var fs=require('fs');var fs_extra=require(_0x8e14('0x9'));var _=require('lodash');var squel=require(_0x8e14('0xa'));var crypto=require(_0x8e14('0xb'));var jsforce=require(_0x8e14('0xc'));var deskjs=require(_0x8e14('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8e14('0xe'));var Papa=require('papaparse');var Redis=require(_0x8e14('0xf'));var authService=require(_0x8e14('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8e14('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8e14('0x12'));var utils=require(_0x8e14('0x13'));var config=require(_0x8e14('0x14'));var licenseUtil=require(_0x8e14('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x243e4f,_0x5712fe){_0x5712fe=_0x5712fe||0xcc;return function(_0x5c49d9){if(_0x5c49d9){return _0x243e4f[_0x8e14('0x16')](_0x5712fe);}return _0x243e4f['status'](_0x5712fe)[_0x8e14('0x17')]();};}function respondWithResult(_0x4e1223,_0x59e069){_0x59e069=_0x59e069||0xc8;return function(_0x4f36a5){if(_0x4f36a5){return _0x4e1223[_0x8e14('0x18')](_0x59e069)[_0x8e14('0x19')](_0x4f36a5);}};}function respondWithFilteredResult(_0x13bdc0,_0x128217){return function(_0x40b964){if(_0x40b964){var _0x50db2e=typeof _0x128217[_0x8e14('0x1a')]===_0x8e14('0x1b')&&typeof _0x128217['limit']===_0x8e14('0x1b');var _0x201f86=_0x40b964[_0x8e14('0x1c')];var _0x169b84=_0x50db2e?0x0:_0x128217[_0x8e14('0x1a')];var _0x2510ce=_0x50db2e?_0x40b964[_0x8e14('0x1c')]:_0x128217[_0x8e14('0x1a')]+_0x128217[_0x8e14('0x1d')];var _0x2d1771;if(_0x2510ce>=_0x201f86){_0x2510ce=_0x201f86;_0x2d1771=0xc8;}else{_0x2d1771=0xce;}_0x13bdc0['status'](_0x2d1771);return _0x13bdc0[_0x8e14('0x1e')](_0x8e14('0x1f'),_0x169b84+'-'+_0x2510ce+'/'+_0x201f86)['json'](_0x40b964);}return null;};}function patchUpdates(_0x13587d){return function(_0x5a7d38){try{jsonpatch[_0x8e14('0x20')](_0x5a7d38,_0x13587d,!![]);}catch(_0x5550cb){return BPromise[_0x8e14('0x21')](_0x5550cb);}return _0x5a7d38[_0x8e14('0x22')]();};}function saveUpdates(_0x16d8e6,_0x4b3de5){return function(_0x23c5eb){if(_0x23c5eb){return _0x23c5eb[_0x8e14('0x23')](_0x16d8e6)['then'](function(_0x184cbd){return _0x184cbd;});}return null;};}function removeEntity(_0x2b7ff5,_0x1244d3){return function(_0x52b041){if(_0x52b041){return _0x52b041[_0x8e14('0x24')]()[_0x8e14('0x25')](function(){_0x2b7ff5[_0x8e14('0x18')](0xcc)[_0x8e14('0x17')]();});}};}function handleEntityNotFound(_0x5a0860,_0x28ee4a){return function(_0x5b4af3){if(!_0x5b4af3){_0x5a0860['sendStatus'](0x194);}return _0x5b4af3;};}function handleError(_0x2ad93d,_0x43b6db){_0x43b6db=_0x43b6db||0x1f4;return function(_0x356200){logger['error'](_0x356200[_0x8e14('0x26')]);if(_0x356200[_0x8e14('0x27')]){delete _0x356200[_0x8e14('0x27')];}_0x2ad93d[_0x8e14('0x18')](_0x43b6db)['send'](_0x356200);};}exports['show']=function(_0x2d88db,_0x46e737){var _0x170e0b={'raw':!![],'where':{'id':_0x2d88db[_0x8e14('0x28')]['id']}},_0x9eb6a7={};_0x9eb6a7[_0x8e14('0x29')]=_[_0x8e14('0x2a')](db['ChatApplication'][_0x8e14('0x2b')]);_0x9eb6a7[_0x8e14('0x2c')]=_[_0x8e14('0x2a')](_0x2d88db[_0x8e14('0x2c')]);_0x9eb6a7['filters']=_[_0x8e14('0x2d')](_0x9eb6a7[_0x8e14('0x29')],_0x9eb6a7[_0x8e14('0x2c')]);_0x170e0b[_0x8e14('0x2e')]=_[_0x8e14('0x2d')](_0x9eb6a7[_0x8e14('0x29')],qs[_0x8e14('0x2f')](_0x2d88db[_0x8e14('0x2c')][_0x8e14('0x2f')]));_0x170e0b[_0x8e14('0x2e')]=_0x170e0b[_0x8e14('0x2e')]['length']?_0x170e0b[_0x8e14('0x2e')]:_0x9eb6a7[_0x8e14('0x29')];if(_0x2d88db[_0x8e14('0x2c')]['includeAll']){_0x170e0b['include']=[{'all':!![]}];}_0x170e0b=_[_0x8e14('0x30')]({},_0x170e0b,_0x2d88db[_0x8e14('0x31')]);return db['ChatApplication'][_0x8e14('0x32')](_0x170e0b)[_0x8e14('0x25')](handleEntityNotFound(_0x46e737,null))['then'](respondWithResult(_0x46e737,null))[_0x8e14('0x33')](handleError(_0x46e737,null));};exports['update']=function(_0x70225c,_0xa71666){if(_0x70225c[_0x8e14('0x34')]['id']){delete _0x70225c[_0x8e14('0x34')]['id'];}return db['ChatApplication'][_0x8e14('0x32')]({'where':{'id':_0x70225c[_0x8e14('0x28')]['id']}})[_0x8e14('0x25')](handleEntityNotFound(_0xa71666,null))['then'](saveUpdates(_0x70225c[_0x8e14('0x34')],null))[_0x8e14('0x25')](respondWithResult(_0xa71666,null))[_0x8e14('0x33')](handleError(_0xa71666,null));};exports['destroy']=function(_0x3d1558,_0x2256c0){return db[_0x8e14('0x35')][_0x8e14('0x32')]({'where':{'id':_0x3d1558['params']['id']}})[_0x8e14('0x25')](handleEntityNotFound(_0x2256c0,null))[_0x8e14('0x25')](removeEntity(_0x2256c0,null))['catch'](handleError(_0x2256c0,null));};
\ No newline at end of file
index 1b3ffc1..2ceae3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8f0=['./chatApplication.attributes','exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x44fad9,_0x181b2c){var _0x572646=function(_0xfda931){while(--_0xfda931){_0x44fad9['push'](_0x44fad9['shift']());}};_0x572646(++_0x181b2c);}(_0xa8f0,0x123));var _0x0a8f=function(_0x514038,_0x450ef3){_0x514038=_0x514038-0x0;var _0x589720=_0xa8f0[_0x514038];return _0x589720;};'use strict';var _=require(_0x0a8f('0x0'));var util=require(_0x0a8f('0x1'));var logger=require(_0x0a8f('0x2'))('api');var moment=require(_0x0a8f('0x3'));var BPromise=require(_0x0a8f('0x4'));var rp=require(_0x0a8f('0x5'));var fs=require('fs');var path=require(_0x0a8f('0x6'));var rimraf=require(_0x0a8f('0x7'));var config=require(_0x0a8f('0x8'));var attributes=require(_0x0a8f('0x9'));module[_0x0a8f('0xa')]=function(_0x22128b,_0x539811){return _0x22128b[_0x0a8f('0xb')]('ChatApplication',attributes,{'tableName':_0x0a8f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0a8f('0xd'),'collate':_0x0a8f('0xe')});};
\ No newline at end of file
+var _0x4daa=['bluebird','request-promise','rimraf','./chatApplication.attributes','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x18f1e4,_0x588730){var _0x14f540=function(_0x54478d){while(--_0x54478d){_0x18f1e4['push'](_0x18f1e4['shift']());}};_0x14f540(++_0x588730);}(_0x4daa,0x8c));var _0xa4da=function(_0x5001b4,_0x362ed5){_0x5001b4=_0x5001b4-0x0;var _0x44ffa7=_0x4daa[_0x5001b4];return _0x44ffa7;};'use strict';var _=require(_0xa4da('0x0'));var util=require(_0xa4da('0x1'));var logger=require(_0xa4da('0x2'))(_0xa4da('0x3'));var moment=require('moment');var BPromise=require(_0xa4da('0x4'));var rp=require(_0xa4da('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa4da('0x6'));var config=require('../../config/environment');var attributes=require(_0xa4da('0x7'));module['exports']=function(_0x539f6a,_0x303821){return _0x539f6a[_0xa4da('0x8')]('ChatApplication',attributes,{'tableName':_0xa4da('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa4da('0xa'),'collate':_0xa4da('0xb')});};
\ No newline at end of file
index 9a84cfa..7119bb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaedc=['debug','stringify','error','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xaedc,0x1be));var _0xcaed=function(_0x339fef,_0x4b15e3){_0x339fef=_0x339fef-0x0;var _0x7036b=_0xaedc[_0x339fef];return _0x7036b;};'use strict';var _=require('lodash');var util=require(_0xcaed('0x0'));var moment=require(_0xcaed('0x1'));var BPromise=require(_0xcaed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcaed('0x3'));var db=require(_0xcaed('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcaed('0x5'))(_0xcaed('0x6'));var config=require(_0xcaed('0x7'));var jayson=require(_0xcaed('0x8'));var client=jayson[_0xcaed('0x9')][_0xcaed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x285271,_0x540ef2,_0x1a033e){return new BPromise(function(_0x25415e,_0x49ed4a){return client[_0xcaed('0xb')](_0x285271,_0x1a033e)[_0xcaed('0xc')](function(_0x4622a3){logger[_0xcaed('0xd')](_0xcaed('0xe'),_0x540ef2,_0xcaed('0xf'));logger[_0xcaed('0x10')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x540ef2,_0xcaed('0xf'),JSON[_0xcaed('0x11')](_0x4622a3));if(_0x4622a3['error']){if(_0x4622a3[_0xcaed('0x12')]['code']===0x1f4){logger[_0xcaed('0x12')](_0xcaed('0xe'),_0x540ef2,_0x4622a3[_0xcaed('0x12')][_0xcaed('0x13')]);return _0x49ed4a(_0x4622a3[_0xcaed('0x12')][_0xcaed('0x13')]);}logger[_0xcaed('0x12')](_0xcaed('0xe'),_0x540ef2,_0x4622a3[_0xcaed('0x12')][_0xcaed('0x13')]);return _0x25415e(_0x4622a3[_0xcaed('0x12')]['message']);}else{logger[_0xcaed('0xd')](_0xcaed('0xe'),_0x540ef2,_0xcaed('0xf'));_0x25415e(_0x4622a3[_0xcaed('0x14')][_0xcaed('0x13')]);}})[_0xcaed('0x15')](function(_0x5c0f87){logger['error'](_0xcaed('0xe'),_0x540ef2,_0x5c0f87);_0x49ed4a(_0x5c0f87);});});}
\ No newline at end of file
+var _0x5779=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','randomstring','ioredis'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x5779,0xe2));var _0x9577=function(_0x36f5e6,_0x4f1a8e){_0x36f5e6=_0x36f5e6-0x0;var _0x539bb4=_0x5779[_0x36f5e6];return _0x539bb4;};'use strict';var _=require(_0x9577('0x0'));var util=require(_0x9577('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9577('0x2'));var fs=require('fs');var Redis=require(_0x9577('0x3'));var db=require(_0x9577('0x4'))['db'];var utils=require(_0x9577('0x5'));var logger=require(_0x9577('0x6'))(_0x9577('0x7'));var config=require(_0x9577('0x8'));var jayson=require(_0x9577('0x9'));var client=jayson[_0x9577('0xa')][_0x9577('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5f5c8e,_0x13488e,_0x9ab94a){return new BPromise(function(_0x51bf48,_0x4c5f1a){return client[_0x9577('0xc')](_0x5f5c8e,_0x9ab94a)[_0x9577('0xd')](function(_0xce800b){logger['info'](_0x9577('0xe'),_0x13488e,_0x9577('0xf'));logger['debug'](_0x9577('0x10'),_0x13488e,'request\x20sent',JSON[_0x9577('0x11')](_0xce800b));if(_0xce800b[_0x9577('0x12')]){if(_0xce800b[_0x9577('0x12')][_0x9577('0x13')]===0x1f4){logger['error'](_0x9577('0xe'),_0x13488e,_0xce800b[_0x9577('0x12')][_0x9577('0x14')]);return _0x4c5f1a(_0xce800b[_0x9577('0x12')][_0x9577('0x14')]);}logger[_0x9577('0x12')](_0x9577('0xe'),_0x13488e,_0xce800b[_0x9577('0x12')][_0x9577('0x14')]);return _0x51bf48(_0xce800b[_0x9577('0x12')][_0x9577('0x14')]);}else{logger[_0x9577('0x15')]('ChatApplication,\x20%s,\x20%s',_0x13488e,_0x9577('0xf'));_0x51bf48(_0xce800b['result'][_0x9577('0x14')]);}})[_0x9577('0x16')](function(_0x35ff23){logger[_0x9577('0x12')]('ChatApplication,\x20%s,\x20%s',_0x13488e,_0x35ff23);_0x4c5f1a(_0x35ff23);});});}
\ No newline at end of file
index de90341..2ad90b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9ad=['../../components/auth/service','../../config/environment','./chatApplication.controller','get','/:id','show','put','isAuthenticated','delete','destroy','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x449491,_0x1b971f){var _0x127193=function(_0x5d309d){while(--_0x5d309d){_0x449491['push'](_0x449491['shift']());}};_0x127193(++_0x1b971f);}(_0xe9ad,0x15a));var _0xde9a=function(_0x32917a,_0x3559ea){_0x32917a=_0x32917a-0x0;var _0x1881e1=_0xe9ad[_0x32917a];return _0x1881e1;};'use strict';var multer=require('multer');var util=require(_0xde9a('0x0'));var path=require(_0xde9a('0x1'));var timeout=require(_0xde9a('0x2'));var express=require(_0xde9a('0x3'));var router=express[_0xde9a('0x4')]();var fs_extra=require(_0xde9a('0x5'));var auth=require(_0xde9a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xde9a('0x7'));var controller=require(_0xde9a('0x8'));router[_0xde9a('0x9')](_0xde9a('0xa'),auth['isAuthenticated'](),controller[_0xde9a('0xb')]);router[_0xde9a('0xc')](_0xde9a('0xa'),auth[_0xde9a('0xd')](),controller['update']);router[_0xde9a('0xe')](_0xde9a('0xa'),auth['isAuthenticated'](),controller[_0xde9a('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xdec5=['/:id','isAuthenticated','show','put','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatApplication.controller','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdec5,0x1b8));var _0x5dec=function(_0x204d72,_0x416111){_0x204d72=_0x204d72-0x0;var _0x260723=_0xdec5[_0x204d72];return _0x260723;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5dec('0x0'));var timeout=require('connect-timeout');var express=require(_0x5dec('0x1'));var router=express[_0x5dec('0x2')]();var fs_extra=require(_0x5dec('0x3'));var auth=require(_0x5dec('0x4'));var interaction=require(_0x5dec('0x5'));var config=require('../../config/environment');var controller=require(_0x5dec('0x6'));router[_0x5dec('0x7')](_0x5dec('0x8'),auth[_0x5dec('0x9')](),controller[_0x5dec('0xa')]);router[_0x5dec('0xb')](_0x5dec('0x8'),auth[_0x5dec('0x9')](),controller['update']);router['delete'](_0x5dec('0x8'),auth['isAuthenticated'](),controller[_0x5dec('0xc')]);module[_0x5dec('0xd')]=router;
\ No newline at end of file
index c3aeef8..d0afe44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b40=['STRING','BOOLEAN','exports'];(function(_0x6eff5b,_0x3976fa){var _0x40af9f=function(_0x43f5d9){while(--_0x43f5d9){_0x6eff5b['push'](_0x6eff5b['shift']());}};_0x40af9f(++_0x3976fa);}(_0x3b40,0x13a));var _0x03b4=function(_0x4e5cb1,_0x142e36){_0x4e5cb1=_0x4e5cb1-0x0;var _0x31e419=_0x3b40[_0x4e5cb1];return _0x31e419;};'use strict';var Sequelize=require('sequelize');module[_0x03b4('0x0')]={'name':{'type':Sequelize[_0x03b4('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x03b4('0x1')]},'write':{'type':Sequelize[_0x03b4('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2d8e=['STRING','BOOLEAN','sequelize','exports'];(function(_0x191165,_0x46e958){var _0x5deb41=function(_0x1845b7){while(--_0x1845b7){_0x191165['push'](_0x191165['shift']());}};_0x5deb41(++_0x46e958);}(_0x2d8e,0x17a));var _0xe2d8=function(_0x15624a,_0x62a80b){_0x15624a=_0x15624a-0x0;var _0x42b811=_0x2d8e[_0x15624a];return _0x42b811;};'use strict';var Sequelize=require(_0xe2d8('0x0'));module[_0xe2d8('0x1')]={'name':{'type':Sequelize[_0xe2d8('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xe2d8('0x2')]},'write':{'type':Sequelize[_0xe2d8('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index d79425e..dfe8e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ab=['ids','User','options','getMembers','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','findOne','$gte','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','stack','name','send','index','ChatGroup','rawAttributes','fieldName','type','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers'];(function(_0x3e179a,_0x233eee){var _0x55eb9b=function(_0x3533c2){while(--_0x3533c2){_0x3e179a['push'](_0x3e179a['shift']());}};_0x55eb9b(++_0x233eee);}(_0xc8ab,0xca));var _0xbc8a=function(_0x2f53dc,_0x29e13a){_0x2f53dc=_0x2f53dc-0x0;var _0x5c66a8=_0xc8ab[_0x2f53dc];return _0x5c66a8;};'use strict';var emlformat=require(_0xbc8a('0x0'));var rimraf=require(_0xbc8a('0x1'));var zipdir=require(_0xbc8a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbc8a('0x3'));var moment=require('moment');var BPromise=require(_0xbc8a('0x4'));var Mustache=require(_0xbc8a('0x5'));var util=require(_0xbc8a('0x6'));var path=require(_0xbc8a('0x7'));var sox=require('sox');var csv=require(_0xbc8a('0x8'));var ejs=require(_0xbc8a('0x9'));var fs=require('fs');var fs_extra=require(_0xbc8a('0xa'));var _=require('lodash');var squel=require(_0xbc8a('0xb'));var crypto=require('crypto');var jsforce=require(_0xbc8a('0xc'));var deskjs=require(_0xbc8a('0xd'));var toCsv=require(_0xbc8a('0x8'));var querystring=require(_0xbc8a('0xe'));var Papa=require(_0xbc8a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbc8a('0x10'));var as=require(_0xbc8a('0x11'));var hardwareService=require(_0xbc8a('0x12'));var logger=require('../../config/logger')(_0xbc8a('0x13'));var utils=require(_0xbc8a('0x14'));var config=require(_0xbc8a('0x15'));var licenseUtil=require(_0xbc8a('0x16'));var db=require(_0xbc8a('0x17'))['db'];config['redis']=_[_0xbc8a('0x18')](config['redis'],{'host':_0xbc8a('0x19'),'port':0x18eb});var socket=require(_0xbc8a('0x1a'))(new Redis(config['redis']));require('./chatGroup.socket')[_0xbc8a('0x1b')](socket);function respondWithStatusCode(_0x1f3165,_0xfbaeeb){_0xfbaeeb=_0xfbaeeb||0xcc;return function(_0x8c500f){if(_0x8c500f){return _0x1f3165[_0xbc8a('0x1c')](_0xfbaeeb);}return _0x1f3165[_0xbc8a('0x1d')](_0xfbaeeb)[_0xbc8a('0x1e')]();};}function respondWithResult(_0x1d89ec,_0x2adf71){_0x2adf71=_0x2adf71||0xc8;return function(_0x5b44b7){if(_0x5b44b7){return _0x1d89ec[_0xbc8a('0x1d')](_0x2adf71)['json'](_0x5b44b7);}};}function respondWithFilteredResult(_0x4ab20a,_0x53bfaa){return function(_0xda1897){if(_0xda1897){var _0x5ad514=typeof _0x53bfaa[_0xbc8a('0x1f')]===_0xbc8a('0x20')&&typeof _0x53bfaa[_0xbc8a('0x21')]===_0xbc8a('0x20');var _0x575832=_0xda1897[_0xbc8a('0x22')];var _0x137853=_0x5ad514?0x0:_0x53bfaa[_0xbc8a('0x1f')];var _0xa15fa5=_0x5ad514?_0xda1897[_0xbc8a('0x22')]:_0x53bfaa['offset']+_0x53bfaa[_0xbc8a('0x21')];var _0x187c49;if(_0xa15fa5>=_0x575832){_0xa15fa5=_0x575832;_0x187c49=0xc8;}else{_0x187c49=0xce;}_0x4ab20a[_0xbc8a('0x1d')](_0x187c49);return _0x4ab20a[_0xbc8a('0x23')](_0xbc8a('0x24'),_0x137853+'-'+_0xa15fa5+'/'+_0x575832)[_0xbc8a('0x25')](_0xda1897);}return null;};}function patchUpdates(_0x5719ca){return function(_0x5b6fa8){try{jsonpatch[_0xbc8a('0x26')](_0x5b6fa8,_0x5719ca,!![]);}catch(_0x1a4b5b){return BPromise[_0xbc8a('0x27')](_0x1a4b5b);}return _0x5b6fa8['save']();};}function saveUpdates(_0x269a80,_0x92f3ef){return function(_0x108b5e){if(_0x108b5e){return _0x108b5e['update'](_0x269a80)[_0xbc8a('0x28')](function(_0x2a537f){return _0x2a537f;});}return null;};}function removeEntity(_0x561508,_0x1cadc2){return function(_0x396daa){if(_0x396daa){return _0x396daa[_0xbc8a('0x29')]()[_0xbc8a('0x28')](function(){_0x561508['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x46d1eb,_0x2c816e){return function(_0x376058){if(!_0x376058){_0x46d1eb[_0xbc8a('0x1c')](0x194);}return _0x376058;};}function handleError(_0x3e2828,_0x505628){_0x505628=_0x505628||0x1f4;return function(_0x43e3de){logger['error'](_0x43e3de[_0xbc8a('0x2a')]);if(_0x43e3de[_0xbc8a('0x2b')]){delete _0x43e3de[_0xbc8a('0x2b')];}_0x3e2828[_0xbc8a('0x1d')](_0x505628)[_0xbc8a('0x2c')](_0x43e3de);};}exports[_0xbc8a('0x2d')]=function(_0x48f13a,_0x51f452){var _0xb38e23={},_0x45cc9d={},_0x352d91={'count':0x0,'rows':[]};var _0x559fb6=_['map'](db[_0xbc8a('0x2e')][_0xbc8a('0x2f')],function(_0x1e4a47){return{'name':_0x1e4a47[_0xbc8a('0x30')],'type':_0x1e4a47[_0xbc8a('0x31')]['key']};});_0x45cc9d[_0xbc8a('0x32')]=_[_0xbc8a('0x33')](_0x559fb6,_0xbc8a('0x2b'));_0x45cc9d[_0xbc8a('0x34')]=_[_0xbc8a('0x35')](_0x48f13a['query']);_0x45cc9d['filters']=_['intersection'](_0x45cc9d[_0xbc8a('0x32')],_0x45cc9d[_0xbc8a('0x34')]);_0xb38e23[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0x45cc9d['model'],qs[_0xbc8a('0x38')](_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x38')]));_0xb38e23[_0xbc8a('0x36')]=_0xb38e23['attributes'][_0xbc8a('0x39')]?_0xb38e23['attributes']:_0x45cc9d['model'];if(!_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x3a')]('nolimit')){_0xb38e23[_0xbc8a('0x21')]=qs[_0xbc8a('0x21')](_0x48f13a[_0xbc8a('0x34')]['limit']);_0xb38e23[_0xbc8a('0x1f')]=qs[_0xbc8a('0x1f')](_0x48f13a['query'][_0xbc8a('0x1f')]);}_0xb38e23[_0xbc8a('0x3b')]=qs[_0xbc8a('0x3c')](_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x3c')]);_0xb38e23[_0xbc8a('0x3d')]=qs[_0xbc8a('0x3e')](_[_0xbc8a('0x3f')](_0x48f13a[_0xbc8a('0x34')],_0x45cc9d['filters']),_0x559fb6);if(_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x40')]){_0xb38e23[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0xb38e23[_0xbc8a('0x3d')],{'$or':_['map'](_0x559fb6,function(_0x1a832b){if(_0x1a832b['type']!==_0xbc8a('0x42')){var _0x3f3e2a={};_0x3f3e2a[_0x1a832b['name']]={'$like':'%'+_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x40')]+'%'};return _0x3f3e2a;}})});}_0xb38e23=_['merge']({},_0xb38e23,_0x48f13a['options']);var _0x10d2f1={'where':_0xb38e23[_0xbc8a('0x3d')]};return db[_0xbc8a('0x2e')]['count'](_0x10d2f1)[_0xbc8a('0x28')](function(_0x48a7af){_0x352d91[_0xbc8a('0x22')]=_0x48a7af;if(_0x48f13a[_0xbc8a('0x34')]['includeAll']){_0xb38e23[_0xbc8a('0x43')]=[{'all':!![]}];}return db['ChatGroup'][_0xbc8a('0x44')](_0xb38e23);})['then'](function(_0x47d202){_0x352d91[_0xbc8a('0x45')]=_0x47d202;return _0x352d91;})[_0xbc8a('0x28')](respondWithFilteredResult(_0x51f452,_0xb38e23))[_0xbc8a('0x46')](handleError(_0x51f452,null));};exports[_0xbc8a('0x47')]=function(_0x3f899d,_0xb07d89){var _0x1e30a8={'raw':!![],'where':{'id':_0x3f899d[_0xbc8a('0x48')]['id']}},_0x3cc98b={};_0x3cc98b[_0xbc8a('0x32')]=_[_0xbc8a('0x35')](db[_0xbc8a('0x2e')][_0xbc8a('0x2f')]);_0x3cc98b[_0xbc8a('0x34')]=_['keys'](_0x3f899d[_0xbc8a('0x34')]);_0x3cc98b[_0xbc8a('0x3e')]=_[_0xbc8a('0x37')](_0x3cc98b[_0xbc8a('0x32')],_0x3cc98b[_0xbc8a('0x34')]);_0x1e30a8[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0x3cc98b['model'],qs[_0xbc8a('0x38')](_0x3f899d[_0xbc8a('0x34')][_0xbc8a('0x38')]));_0x1e30a8[_0xbc8a('0x36')]=_0x1e30a8['attributes'][_0xbc8a('0x39')]?_0x1e30a8[_0xbc8a('0x36')]:_0x3cc98b[_0xbc8a('0x32')];if(_0x3f899d['query'][_0xbc8a('0x49')]){_0x1e30a8['include']=[{'all':!![]}];}_0x1e30a8=_['merge']({},_0x1e30a8,_0x3f899d['options']);return db['ChatGroup']['find'](_0x1e30a8)['then'](handleEntityNotFound(_0xb07d89,null))[_0xbc8a('0x28')](respondWithResult(_0xb07d89,null))[_0xbc8a('0x46')](handleError(_0xb07d89,null));};exports[_0xbc8a('0x4a')]=function(_0xa3d943,_0x2b4404){return db[_0xbc8a('0x2e')][_0xbc8a('0x4a')](_0xa3d943[_0xbc8a('0x4b')],{})[_0xbc8a('0x28')](respondWithResult(_0x2b4404,0xc9))[_0xbc8a('0x46')](handleError(_0x2b4404,null));};exports['update']=function(_0x21d1de,_0x4270e0){if(_0x21d1de[_0xbc8a('0x4b')]['id']){delete _0x21d1de[_0xbc8a('0x4b')]['id'];}return db['ChatGroup'][_0xbc8a('0x4c')]({'where':{'id':_0x21d1de[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x4270e0,null))[_0xbc8a('0x28')](saveUpdates(_0x21d1de[_0xbc8a('0x4b')],null))[_0xbc8a('0x28')](respondWithResult(_0x4270e0,null))['catch'](handleError(_0x4270e0,null));};exports[_0xbc8a('0x29')]=function(_0x201e0a,_0x2609a7){return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0x201e0a[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x2609a7,null))[_0xbc8a('0x28')](removeEntity(_0x2609a7,null))['catch'](handleError(_0x2609a7,null));};exports[_0xbc8a('0x4d')]=function(_0x42e6ac,_0x109956){return db[_0xbc8a('0x2e')][_0xbc8a('0x4d')]()[_0xbc8a('0x28')](respondWithResult(_0x109956,null))[_0xbc8a('0x46')](handleError(_0x109956,null));};exports[_0xbc8a('0x4e')]=function(_0x4a5918,_0x4983af,_0x165f71){return db[_0xbc8a('0x4f')][_0xbc8a('0x22')]({'where':{'ChatGroupId':_0x4a5918[_0xbc8a('0x48')]['id'],'ToId':_0x4a5918[_0xbc8a('0x50')]['id'],'read':![]}})[_0xbc8a('0x28')](function(_0x1b81a3){return{'id':_[_0xbc8a('0x51')](_0x4a5918[_0xbc8a('0x48')]['id']),'count':_0x1b81a3};})[_0xbc8a('0x28')](respondWithResult(_0x4983af,null))[_0xbc8a('0x46')](handleError(_0x4983af,null));};exports[_0xbc8a('0x52')]=function(_0x30c513,_0x32dbfd,_0x1ad1e4){return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0x30c513[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x32dbfd,null))[_0xbc8a('0x28')](function(_0x2ef01b){if(_0x2ef01b){return _0x2ef01b[_0xbc8a('0x52')](_0x30c513[_0xbc8a('0x4b')][_0xbc8a('0x53')],_['omit'](_0x30c513[_0xbc8a('0x4b')],[_0xbc8a('0x53'),'id'])||{});}})[_0xbc8a('0x28')](respondWithResult(_0x32dbfd,null))[_0xbc8a('0x46')](handleError(_0x32dbfd,null));};exports['getMembers']=function(_0x255267,_0x21c5ad,_0x1632c5){var _0x12dec3={};var _0x131885={};var _0x44a775;var _0x1a835d;return db[_0xbc8a('0x2e')]['findOne']({'where':{'id':_0x255267['params']['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x21c5ad,null))[_0xbc8a('0x28')](function(_0x5c1858){if(_0x5c1858){_0x44a775=_0x5c1858;_0x131885[_0xbc8a('0x32')]=_[_0xbc8a('0x35')](db[_0xbc8a('0x54')]['rawAttributes']);_0x131885[_0xbc8a('0x34')]=_[_0xbc8a('0x35')](_0x255267[_0xbc8a('0x34')]);_0x131885[_0xbc8a('0x3e')]=_[_0xbc8a('0x37')](_0x131885['model'],_0x131885[_0xbc8a('0x34')]);_0x12dec3[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0x131885[_0xbc8a('0x32')],qs[_0xbc8a('0x38')](_0x255267['query'][_0xbc8a('0x38')]));_0x12dec3[_0xbc8a('0x36')]=_0x12dec3[_0xbc8a('0x36')][_0xbc8a('0x39')]?_0x12dec3[_0xbc8a('0x36')]:_0x131885[_0xbc8a('0x32')];_0x12dec3[_0xbc8a('0x3b')]=qs[_0xbc8a('0x3c')](_0x255267[_0xbc8a('0x34')][_0xbc8a('0x3c')]);_0x12dec3[_0xbc8a('0x3d')]=qs['filters'](_['pick'](_0x255267[_0xbc8a('0x34')],_0x131885[_0xbc8a('0x3e')]));if(_0x255267[_0xbc8a('0x34')][_0xbc8a('0x40')]){_0x12dec3[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0x12dec3[_0xbc8a('0x3d')],{'$or':_[_0xbc8a('0x33')](_0x12dec3[_0xbc8a('0x36')],function(_0x324e0a){var _0x1175a6={};_0x1175a6[_0x324e0a]={'$like':'%'+_0x255267[_0xbc8a('0x34')][_0xbc8a('0x40')]+'%'};return _0x1175a6;})});}_0x12dec3=_['merge']({},_0x12dec3,_0x255267[_0xbc8a('0x55')]);return _0x44a775[_0xbc8a('0x56')](_0x12dec3);}})[_0xbc8a('0x28')](function(_0x2a2c5c){if(_0x2a2c5c){_0x1a835d=_0x2a2c5c[_0xbc8a('0x39')];if(!_0x255267[_0xbc8a('0x34')]['hasOwnProperty'](_0xbc8a('0x57'))){_0x12dec3[_0xbc8a('0x21')]=qs[_0xbc8a('0x21')](_0x255267[_0xbc8a('0x34')][_0xbc8a('0x21')]);_0x12dec3[_0xbc8a('0x1f')]=qs[_0xbc8a('0x1f')](_0x255267[_0xbc8a('0x34')][_0xbc8a('0x1f')]);}return _0x44a775[_0xbc8a('0x56')](_0x12dec3);}})[_0xbc8a('0x28')](function(_0x1a304e){if(_0x1a304e){return _0x1a304e?{'count':_0x1a835d,'rows':_0x1a304e}:null;}})[_0xbc8a('0x28')](respondWithResult(_0x21c5ad,null))['catch'](handleError(_0x21c5ad,null));};exports[_0xbc8a('0x58')]=function(_0x122717,_0x5cd303,_0x225cd1){return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0x122717[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x5cd303,null))[_0xbc8a('0x28')](function(_0x41e83a){if(_0x41e83a){return _0x41e83a[_0xbc8a('0x58')](_0x122717[_0xbc8a('0x34')][_0xbc8a('0x53')]);}})['then'](respondWithStatusCode(_0x5cd303,null))['catch'](handleError(_0x5cd303,null));};exports[_0xbc8a('0x59')]=function(_0xcdf434,_0x125397,_0x235e03){if(_0xcdf434[_0xbc8a('0x4b')]['id']){delete _0xcdf434[_0xbc8a('0x4b')]['id'];}return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0xcdf434[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x125397,null))[_0xbc8a('0x28')](function(_0x3f5afe){if(_0x3f5afe){_0xcdf434['body'][_0xbc8a('0x5a')]=_0x3f5afe['id'];return db['ChatInternalMessage']['create'](_0xcdf434[_0xbc8a('0x4b')]);}})['then'](respondWithResult(_0x125397,null))[_0xbc8a('0x46')](handleError(_0x125397,null));};exports[_0xbc8a('0x5b')]=function(_0x5da8ad,_0x5c59a8,_0x4367ca){var _0x469b27={};var _0xae1108={};var _0x3cece4;var _0x1d283d;return db[_0xbc8a('0x2e')][_0xbc8a('0x5c')]({'where':{'id':_0x5da8ad['params']['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x5c59a8,null))[_0xbc8a('0x28')](function(_0x4e59ec){if(_0x4e59ec){_0x3cece4=_0x4e59ec;_0xae1108['model']=_[_0xbc8a('0x35')](db[_0xbc8a('0x4f')][_0xbc8a('0x2f')]);_0xae1108[_0xbc8a('0x34')]=_[_0xbc8a('0x35')](_0x5da8ad[_0xbc8a('0x34')]);_0xae1108[_0xbc8a('0x3e')]=_['intersection'](_0xae1108[_0xbc8a('0x32')],_0xae1108[_0xbc8a('0x34')]);_0x469b27[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0xae1108[_0xbc8a('0x32')],qs[_0xbc8a('0x38')](_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x38')]));_0x469b27[_0xbc8a('0x36')]=_0x469b27[_0xbc8a('0x36')][_0xbc8a('0x39')]?_0x469b27[_0xbc8a('0x36')]:_0xae1108[_0xbc8a('0x32')];_0x469b27['order']=qs[_0xbc8a('0x3c')](_0x5da8ad['query'][_0xbc8a('0x3c')]);_0x469b27[_0xbc8a('0x3d')]=qs['filters'](_[_0xbc8a('0x3f')](_0x5da8ad[_0xbc8a('0x34')],_0xae1108[_0xbc8a('0x3e')]));if(_0x5da8ad['query']['filter']){_0x469b27[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0x469b27[_0xbc8a('0x3d')],{'$or':_[_0xbc8a('0x33')](_0x469b27[_0xbc8a('0x36')],function(_0x4dd8fd){var _0x521787={};_0x521787[_0x4dd8fd]={'$like':'%'+_0x5da8ad['query'][_0xbc8a('0x40')]+'%'};return _0x521787;})});}if(_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x5d')]){var _0x443c7b=_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x5d')]['split'](',');var _0x2d9d90={};_0x2d9d90[_0x443c7b[0x0]]={'$gte':moment(_0x443c7b[0x1])['format'](_0xbc8a('0x5e'))};_0x469b27[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0x469b27[_0xbc8a('0x3d')],_0x2d9d90);}_0x469b27=_['merge']({},_0x469b27,_0x5da8ad['options']);return _0x3cece4[_0xbc8a('0x5b')](_0x469b27);}})['then'](function(_0x4ac658){if(_0x4ac658){_0x1d283d=_0x4ac658[_0xbc8a('0x39')];if(!_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x3a')](_0xbc8a('0x57'))){_0x469b27[_0xbc8a('0x21')]=qs[_0xbc8a('0x21')](_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x21')]);_0x469b27[_0xbc8a('0x1f')]=qs['offset'](_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x1f')]);}return _0x3cece4[_0xbc8a('0x5b')](_0x469b27);}})[_0xbc8a('0x28')](function(_0x5a3c22){if(_0x5a3c22){return _0x5a3c22?{'count':_0x1d283d,'rows':_0x5a3c22}:null;}})['then'](respondWithResult(_0x5c59a8,null))[_0xbc8a('0x46')](handleError(_0x5c59a8,null));};
\ No newline at end of file
+var _0x6a17=['count','set','Content-Range','save','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','ChatGroup','includeAll','findAll','rows','catch','include','create','body','find','params','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','User','sort','addMessage','ChatGroupId','findOne','$gte','split','format','getMessages','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','limit'];(function(_0xe5a239,_0x17d68f){var _0xc41f6b=function(_0x14363f){while(--_0x14363f){_0xe5a239['push'](_0xe5a239['shift']());}};_0xc41f6b(++_0x17d68f);}(_0x6a17,0x157));var _0x76a1=function(_0x38511a,_0x226b17){_0x38511a=_0x38511a-0x0;var _0x165d9e=_0x6a17[_0x38511a];return _0x165d9e;};'use strict';var emlformat=require(_0x76a1('0x0'));var rimraf=require(_0x76a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x76a1('0x2'));var moment=require('moment');var BPromise=require(_0x76a1('0x3'));var Mustache=require(_0x76a1('0x4'));var util=require(_0x76a1('0x5'));var path=require(_0x76a1('0x6'));var sox=require(_0x76a1('0x7'));var csv=require(_0x76a1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76a1('0x9'));var squel=require('squel');var crypto=require(_0x76a1('0xa'));var jsforce=require(_0x76a1('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x76a1('0xc'));var Papa=require(_0x76a1('0xd'));var Redis=require(_0x76a1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x76a1('0xf'));var as=require(_0x76a1('0x10'));var hardwareService=require(_0x76a1('0x11'));var logger=require('../../config/logger')(_0x76a1('0x12'));var utils=require(_0x76a1('0x13'));var config=require(_0x76a1('0x14'));var licenseUtil=require(_0x76a1('0x15'));var db=require('../../mysqldb')['db'];config[_0x76a1('0x16')]=_[_0x76a1('0x17')](config[_0x76a1('0x16')],{'host':_0x76a1('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x76a1('0x16')]));require('./chatGroup.socket')[_0x76a1('0x19')](socket);function respondWithStatusCode(_0x3dbbf9,_0x52b2ed){_0x52b2ed=_0x52b2ed||0xcc;return function(_0x5b6cd2){if(_0x5b6cd2){return _0x3dbbf9[_0x76a1('0x1a')](_0x52b2ed);}return _0x3dbbf9[_0x76a1('0x1b')](_0x52b2ed)[_0x76a1('0x1c')]();};}function respondWithResult(_0x4eec44,_0x46a40b){_0x46a40b=_0x46a40b||0xc8;return function(_0x41ccf9){if(_0x41ccf9){return _0x4eec44['status'](_0x46a40b)[_0x76a1('0x1d')](_0x41ccf9);}};}function respondWithFilteredResult(_0x3b0d5d,_0x47d818){return function(_0x1c7252){if(_0x1c7252){var _0x2d2502=typeof _0x47d818[_0x76a1('0x1e')]===_0x76a1('0x1f')&&typeof _0x47d818[_0x76a1('0x20')]==='undefined';var _0x124eed=_0x1c7252[_0x76a1('0x21')];var _0x2b7d6a=_0x2d2502?0x0:_0x47d818[_0x76a1('0x1e')];var _0x41d0dd=_0x2d2502?_0x1c7252[_0x76a1('0x21')]:_0x47d818[_0x76a1('0x1e')]+_0x47d818['limit'];var _0x2f4c75;if(_0x41d0dd>=_0x124eed){_0x41d0dd=_0x124eed;_0x2f4c75=0xc8;}else{_0x2f4c75=0xce;}_0x3b0d5d[_0x76a1('0x1b')](_0x2f4c75);return _0x3b0d5d[_0x76a1('0x22')](_0x76a1('0x23'),_0x2b7d6a+'-'+_0x41d0dd+'/'+_0x124eed)[_0x76a1('0x1d')](_0x1c7252);}return null;};}function patchUpdates(_0x1b1607){return function(_0x4105c3){try{jsonpatch['apply'](_0x4105c3,_0x1b1607,!![]);}catch(_0x388c88){return BPromise['reject'](_0x388c88);}return _0x4105c3[_0x76a1('0x24')]();};}function saveUpdates(_0x186165,_0x3558cc){return function(_0x57c6af){if(_0x57c6af){return _0x57c6af[_0x76a1('0x25')](_0x186165)[_0x76a1('0x26')](function(_0x2d7692){return _0x2d7692;});}return null;};}function removeEntity(_0x48a9b8,_0x17bca5){return function(_0x739688){if(_0x739688){return _0x739688['destroy']()[_0x76a1('0x26')](function(){_0x48a9b8[_0x76a1('0x1b')](0xcc)[_0x76a1('0x1c')]();});}};}function handleEntityNotFound(_0x2acf53,_0x2af08d){return function(_0x514946){if(!_0x514946){_0x2acf53[_0x76a1('0x1a')](0x194);}return _0x514946;};}function handleError(_0x32b653,_0x4281ce){_0x4281ce=_0x4281ce||0x1f4;return function(_0x5edb8b){logger[_0x76a1('0x27')](_0x5edb8b[_0x76a1('0x28')]);if(_0x5edb8b[_0x76a1('0x29')]){delete _0x5edb8b['name'];}_0x32b653[_0x76a1('0x1b')](_0x4281ce)[_0x76a1('0x2a')](_0x5edb8b);};}exports[_0x76a1('0x2b')]=function(_0x2523e6,_0x561e08){var _0x68640d={},_0x235eec={},_0x2a5eb1={'count':0x0,'rows':[]};var _0x40e86c=_['map'](db['ChatGroup'][_0x76a1('0x2c')],function(_0x3ed4ac){return{'name':_0x3ed4ac[_0x76a1('0x2d')],'type':_0x3ed4ac[_0x76a1('0x2e')][_0x76a1('0x2f')]};});_0x235eec[_0x76a1('0x30')]=_[_0x76a1('0x31')](_0x40e86c,_0x76a1('0x29'));_0x235eec['query']=_[_0x76a1('0x32')](_0x2523e6[_0x76a1('0x33')]);_0x235eec[_0x76a1('0x34')]=_['intersection'](_0x235eec[_0x76a1('0x30')],_0x235eec[_0x76a1('0x33')]);_0x68640d[_0x76a1('0x35')]=_[_0x76a1('0x36')](_0x235eec[_0x76a1('0x30')],qs[_0x76a1('0x37')](_0x2523e6[_0x76a1('0x33')]['fields']));_0x68640d[_0x76a1('0x35')]=_0x68640d[_0x76a1('0x35')][_0x76a1('0x38')]?_0x68640d[_0x76a1('0x35')]:_0x235eec['model'];if(!_0x2523e6[_0x76a1('0x33')][_0x76a1('0x39')](_0x76a1('0x3a'))){_0x68640d['limit']=qs[_0x76a1('0x20')](_0x2523e6['query'][_0x76a1('0x20')]);_0x68640d[_0x76a1('0x1e')]=qs['offset'](_0x2523e6['query'][_0x76a1('0x1e')]);}_0x68640d[_0x76a1('0x3b')]=qs['sort'](_0x2523e6[_0x76a1('0x33')]['sort']);_0x68640d[_0x76a1('0x3c')]=qs[_0x76a1('0x34')](_[_0x76a1('0x3d')](_0x2523e6[_0x76a1('0x33')],_0x235eec[_0x76a1('0x34')]),_0x40e86c);if(_0x2523e6['query'][_0x76a1('0x3e')]){_0x68640d[_0x76a1('0x3c')]=_[_0x76a1('0x3f')](_0x68640d[_0x76a1('0x3c')],{'$or':_['map'](_0x40e86c,function(_0x81a99d){if(_0x81a99d[_0x76a1('0x2e')]!==_0x76a1('0x40')){var _0x1cfab3={};_0x1cfab3[_0x81a99d[_0x76a1('0x29')]]={'$like':'%'+_0x2523e6[_0x76a1('0x33')]['filter']+'%'};return _0x1cfab3;}})});}_0x68640d=_[_0x76a1('0x3f')]({},_0x68640d,_0x2523e6[_0x76a1('0x41')]);var _0x4ccbb0={'where':_0x68640d['where']};return db[_0x76a1('0x42')]['count'](_0x4ccbb0)[_0x76a1('0x26')](function(_0x2bf19d){_0x2a5eb1[_0x76a1('0x21')]=_0x2bf19d;if(_0x2523e6['query'][_0x76a1('0x43')]){_0x68640d['include']=[{'all':!![]}];}return db[_0x76a1('0x42')][_0x76a1('0x44')](_0x68640d);})[_0x76a1('0x26')](function(_0x251234){_0x2a5eb1[_0x76a1('0x45')]=_0x251234;return _0x2a5eb1;})[_0x76a1('0x26')](respondWithFilteredResult(_0x561e08,_0x68640d))[_0x76a1('0x46')](handleError(_0x561e08,null));};exports['show']=function(_0x3904de,_0x5bde4a){var _0x5314c9={'raw':!![],'where':{'id':_0x3904de['params']['id']}},_0xc0a46={};_0xc0a46[_0x76a1('0x30')]=_[_0x76a1('0x32')](db[_0x76a1('0x42')]['rawAttributes']);_0xc0a46[_0x76a1('0x33')]=_[_0x76a1('0x32')](_0x3904de['query']);_0xc0a46[_0x76a1('0x34')]=_[_0x76a1('0x36')](_0xc0a46['model'],_0xc0a46[_0x76a1('0x33')]);_0x5314c9['attributes']=_[_0x76a1('0x36')](_0xc0a46[_0x76a1('0x30')],qs['fields'](_0x3904de[_0x76a1('0x33')][_0x76a1('0x37')]));_0x5314c9['attributes']=_0x5314c9[_0x76a1('0x35')][_0x76a1('0x38')]?_0x5314c9[_0x76a1('0x35')]:_0xc0a46[_0x76a1('0x30')];if(_0x3904de['query'][_0x76a1('0x43')]){_0x5314c9[_0x76a1('0x47')]=[{'all':!![]}];}_0x5314c9=_[_0x76a1('0x3f')]({},_0x5314c9,_0x3904de['options']);return db[_0x76a1('0x42')]['find'](_0x5314c9)[_0x76a1('0x26')](handleEntityNotFound(_0x5bde4a,null))[_0x76a1('0x26')](respondWithResult(_0x5bde4a,null))['catch'](handleError(_0x5bde4a,null));};exports[_0x76a1('0x48')]=function(_0x12c37f,_0x524677){return db[_0x76a1('0x42')][_0x76a1('0x48')](_0x12c37f[_0x76a1('0x49')],{})[_0x76a1('0x26')](respondWithResult(_0x524677,0xc9))[_0x76a1('0x46')](handleError(_0x524677,null));};exports[_0x76a1('0x25')]=function(_0x403ead,_0x3fda46){if(_0x403ead[_0x76a1('0x49')]['id']){delete _0x403ead[_0x76a1('0x49')]['id'];}return db[_0x76a1('0x42')][_0x76a1('0x4a')]({'where':{'id':_0x403ead['params']['id']}})[_0x76a1('0x26')](handleEntityNotFound(_0x3fda46,null))[_0x76a1('0x26')](saveUpdates(_0x403ead[_0x76a1('0x49')],null))[_0x76a1('0x26')](respondWithResult(_0x3fda46,null))['catch'](handleError(_0x3fda46,null));};exports['destroy']=function(_0x363d30,_0x5b0007){return db[_0x76a1('0x42')][_0x76a1('0x4a')]({'where':{'id':_0x363d30[_0x76a1('0x4b')]['id']}})[_0x76a1('0x26')](handleEntityNotFound(_0x5b0007,null))[_0x76a1('0x26')](removeEntity(_0x5b0007,null))[_0x76a1('0x46')](handleError(_0x5b0007,null));};exports[_0x76a1('0x4c')]=function(_0x33cee4,_0x5dcdc1){return db[_0x76a1('0x42')][_0x76a1('0x4c')]()[_0x76a1('0x26')](respondWithResult(_0x5dcdc1,null))[_0x76a1('0x46')](handleError(_0x5dcdc1,null));};exports[_0x76a1('0x4d')]=function(_0x489eb9,_0x3dd298,_0x1bd46f){return db[_0x76a1('0x4e')][_0x76a1('0x21')]({'where':{'ChatGroupId':_0x489eb9['params']['id'],'ToId':_0x489eb9[_0x76a1('0x4f')]['id'],'read':![]}})[_0x76a1('0x26')](function(_0x2452f8){return{'id':_[_0x76a1('0x50')](_0x489eb9['params']['id']),'count':_0x2452f8};})[_0x76a1('0x26')](respondWithResult(_0x3dd298,null))[_0x76a1('0x46')](handleError(_0x3dd298,null));};exports[_0x76a1('0x51')]=function(_0x35395c,_0x30a23f,_0x1c6089){return db['ChatGroup']['find']({'where':{'id':_0x35395c[_0x76a1('0x4b')]['id']}})[_0x76a1('0x26')](handleEntityNotFound(_0x30a23f,null))[_0x76a1('0x26')](function(_0x1976ca){if(_0x1976ca){return _0x1976ca['addMembers'](_0x35395c['body'][_0x76a1('0x52')],_[_0x76a1('0x53')](_0x35395c[_0x76a1('0x49')],[_0x76a1('0x52'),'id'])||{});}})[_0x76a1('0x26')](respondWithResult(_0x30a23f,null))['catch'](handleError(_0x30a23f,null));};exports[_0x76a1('0x54')]=function(_0xfe9b92,_0x12e98c,_0x98e5e){var _0x254c66={};var _0x1a0bcf={};var _0x1c010c;var _0x1dcd91;return db['ChatGroup']['findOne']({'where':{'id':_0xfe9b92[_0x76a1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x12e98c,null))[_0x76a1('0x26')](function(_0x45e04c){if(_0x45e04c){_0x1c010c=_0x45e04c;_0x1a0bcf['model']=_[_0x76a1('0x32')](db[_0x76a1('0x55')][_0x76a1('0x2c')]);_0x1a0bcf[_0x76a1('0x33')]=_[_0x76a1('0x32')](_0xfe9b92[_0x76a1('0x33')]);_0x1a0bcf[_0x76a1('0x34')]=_[_0x76a1('0x36')](_0x1a0bcf[_0x76a1('0x30')],_0x1a0bcf[_0x76a1('0x33')]);_0x254c66['attributes']=_[_0x76a1('0x36')](_0x1a0bcf[_0x76a1('0x30')],qs[_0x76a1('0x37')](_0xfe9b92['query']['fields']));_0x254c66[_0x76a1('0x35')]=_0x254c66[_0x76a1('0x35')][_0x76a1('0x38')]?_0x254c66[_0x76a1('0x35')]:_0x1a0bcf[_0x76a1('0x30')];_0x254c66[_0x76a1('0x3b')]=qs[_0x76a1('0x56')](_0xfe9b92[_0x76a1('0x33')][_0x76a1('0x56')]);_0x254c66[_0x76a1('0x3c')]=qs[_0x76a1('0x34')](_['pick'](_0xfe9b92[_0x76a1('0x33')],_0x1a0bcf[_0x76a1('0x34')]));if(_0xfe9b92[_0x76a1('0x33')][_0x76a1('0x3e')]){_0x254c66[_0x76a1('0x3c')]=_['merge'](_0x254c66[_0x76a1('0x3c')],{'$or':_['map'](_0x254c66[_0x76a1('0x35')],function(_0x5ca714){var _0x5775ab={};_0x5775ab[_0x5ca714]={'$like':'%'+_0xfe9b92[_0x76a1('0x33')][_0x76a1('0x3e')]+'%'};return _0x5775ab;})});}_0x254c66=_[_0x76a1('0x3f')]({},_0x254c66,_0xfe9b92[_0x76a1('0x41')]);return _0x1c010c[_0x76a1('0x54')](_0x254c66);}})[_0x76a1('0x26')](function(_0x163062){if(_0x163062){_0x1dcd91=_0x163062['length'];if(!_0xfe9b92[_0x76a1('0x33')][_0x76a1('0x39')](_0x76a1('0x3a'))){_0x254c66[_0x76a1('0x20')]=qs[_0x76a1('0x20')](_0xfe9b92[_0x76a1('0x33')][_0x76a1('0x20')]);_0x254c66['offset']=qs[_0x76a1('0x1e')](_0xfe9b92['query'][_0x76a1('0x1e')]);}return _0x1c010c[_0x76a1('0x54')](_0x254c66);}})[_0x76a1('0x26')](function(_0x29f3b9){if(_0x29f3b9){return _0x29f3b9?{'count':_0x1dcd91,'rows':_0x29f3b9}:null;}})['then'](respondWithResult(_0x12e98c,null))[_0x76a1('0x46')](handleError(_0x12e98c,null));};exports['removeMembers']=function(_0x454fb4,_0x74827c,_0x5c9bfe){return db[_0x76a1('0x42')][_0x76a1('0x4a')]({'where':{'id':_0x454fb4[_0x76a1('0x4b')]['id']}})[_0x76a1('0x26')](handleEntityNotFound(_0x74827c,null))[_0x76a1('0x26')](function(_0x100e16){if(_0x100e16){return _0x100e16['removeMembers'](_0x454fb4[_0x76a1('0x33')][_0x76a1('0x52')]);}})[_0x76a1('0x26')](respondWithStatusCode(_0x74827c,null))['catch'](handleError(_0x74827c,null));};exports[_0x76a1('0x57')]=function(_0x3acbd6,_0x45a198,_0x247b3d){if(_0x3acbd6['body']['id']){delete _0x3acbd6[_0x76a1('0x49')]['id'];}return db[_0x76a1('0x42')][_0x76a1('0x4a')]({'where':{'id':_0x3acbd6[_0x76a1('0x4b')]['id']}})[_0x76a1('0x26')](handleEntityNotFound(_0x45a198,null))[_0x76a1('0x26')](function(_0x464612){if(_0x464612){_0x3acbd6[_0x76a1('0x49')][_0x76a1('0x58')]=_0x464612['id'];return db[_0x76a1('0x4e')][_0x76a1('0x48')](_0x3acbd6[_0x76a1('0x49')]);}})[_0x76a1('0x26')](respondWithResult(_0x45a198,null))['catch'](handleError(_0x45a198,null));};exports['getMessages']=function(_0x49a477,_0x3b0619,_0x5d6d9d){var _0x25bee1={};var _0x5e9eb8={};var _0x40bc4e;var _0x153cab;return db[_0x76a1('0x42')][_0x76a1('0x59')]({'where':{'id':_0x49a477[_0x76a1('0x4b')]['id']}})[_0x76a1('0x26')](handleEntityNotFound(_0x3b0619,null))[_0x76a1('0x26')](function(_0x59b40b){if(_0x59b40b){_0x40bc4e=_0x59b40b;_0x5e9eb8[_0x76a1('0x30')]=_[_0x76a1('0x32')](db[_0x76a1('0x4e')][_0x76a1('0x2c')]);_0x5e9eb8[_0x76a1('0x33')]=_[_0x76a1('0x32')](_0x49a477[_0x76a1('0x33')]);_0x5e9eb8[_0x76a1('0x34')]=_[_0x76a1('0x36')](_0x5e9eb8[_0x76a1('0x30')],_0x5e9eb8[_0x76a1('0x33')]);_0x25bee1[_0x76a1('0x35')]=_[_0x76a1('0x36')](_0x5e9eb8[_0x76a1('0x30')],qs[_0x76a1('0x37')](_0x49a477[_0x76a1('0x33')][_0x76a1('0x37')]));_0x25bee1[_0x76a1('0x35')]=_0x25bee1[_0x76a1('0x35')][_0x76a1('0x38')]?_0x25bee1[_0x76a1('0x35')]:_0x5e9eb8[_0x76a1('0x30')];_0x25bee1[_0x76a1('0x3b')]=qs[_0x76a1('0x56')](_0x49a477[_0x76a1('0x33')]['sort']);_0x25bee1[_0x76a1('0x3c')]=qs['filters'](_[_0x76a1('0x3d')](_0x49a477['query'],_0x5e9eb8['filters']));if(_0x49a477[_0x76a1('0x33')]['filter']){_0x25bee1['where']=_[_0x76a1('0x3f')](_0x25bee1[_0x76a1('0x3c')],{'$or':_[_0x76a1('0x31')](_0x25bee1[_0x76a1('0x35')],function(_0x16f020){var _0x21bcb2={};_0x21bcb2[_0x16f020]={'$like':'%'+_0x49a477[_0x76a1('0x33')][_0x76a1('0x3e')]+'%'};return _0x21bcb2;})});}if(_0x49a477['query'][_0x76a1('0x5a')]){var _0x260850=_0x49a477[_0x76a1('0x33')][_0x76a1('0x5a')][_0x76a1('0x5b')](',');var _0x4db016={};_0x4db016[_0x260850[0x0]]={'$gte':moment(_0x260850[0x1])[_0x76a1('0x5c')]('YYYY-MM-DD\x20HH:mm:ss')};_0x25bee1[_0x76a1('0x3c')]=_[_0x76a1('0x3f')](_0x25bee1[_0x76a1('0x3c')],_0x4db016);}_0x25bee1=_[_0x76a1('0x3f')]({},_0x25bee1,_0x49a477[_0x76a1('0x41')]);return _0x40bc4e[_0x76a1('0x5d')](_0x25bee1);}})[_0x76a1('0x26')](function(_0x544103){if(_0x544103){_0x153cab=_0x544103['length'];if(!_0x49a477[_0x76a1('0x33')][_0x76a1('0x39')](_0x76a1('0x3a'))){_0x25bee1['limit']=qs[_0x76a1('0x20')](_0x49a477[_0x76a1('0x33')][_0x76a1('0x20')]);_0x25bee1[_0x76a1('0x1e')]=qs[_0x76a1('0x1e')](_0x49a477[_0x76a1('0x33')][_0x76a1('0x1e')]);}return _0x40bc4e['getMessages'](_0x25bee1);}})[_0x76a1('0x26')](function(_0x44b108){if(_0x44b108){return _0x44b108?{'count':_0x153cab,'rows':_0x44b108}:null;}})[_0x76a1('0x26')](respondWithResult(_0x3b0619,null))['catch'](handleError(_0x3b0619,null));};
\ No newline at end of file
index 918194a..cee86e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb88c=['setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb','ChatGroup'];(function(_0x14311a,_0x4fa562){var _0x4b798b=function(_0x5b3a89){while(--_0x5b3a89){_0x14311a['push'](_0x14311a['shift']());}};_0x4b798b(++_0x4fa562);}(_0xb88c,0xd5));var _0xcb88=function(_0x554047,_0x46ec41){_0x554047=_0x554047-0x0;var _0x5d11e4=_0xb88c[_0x554047];return _0x5d11e4;};'use strict';var EventEmitter=require(_0xcb88('0x0'));var ChatGroup=require(_0xcb88('0x1'))['db'][_0xcb88('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xcb88('0x3')](0x0);var events={'afterCreate':_0xcb88('0x4'),'afterUpdate':_0xcb88('0x5'),'afterDestroy':_0xcb88('0x6')};function emitEvent(_0x2e5d61){return function(_0x3dc59f,_0x51a059,_0x40614e){ChatGroupEvents[_0xcb88('0x7')](_0x2e5d61+':'+_0x3dc59f['id'],_0x3dc59f);ChatGroupEvents[_0xcb88('0x7')](_0x2e5d61,_0x3dc59f);_0x40614e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xcb88('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0xfd16=['hasOwnProperty','hook','exports','events','save','update','remove','emit'];(function(_0x5c8768,_0xee714b){var _0x509df8=function(_0x844f87){while(--_0x844f87){_0x5c8768['push'](_0x5c8768['shift']());}};_0x509df8(++_0xee714b);}(_0xfd16,0x113));var _0x6fd1=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0xfd16[_0x2ec461];return _0x28603d;};'use strict';var EventEmitter=require(_0x6fd1('0x0'));var ChatGroup=require('../../mysqldb')['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6fd1('0x1'),'afterUpdate':_0x6fd1('0x2'),'afterDestroy':_0x6fd1('0x3')};function emitEvent(_0x1d4fc1){return function(_0x1837d8,_0x1b1cb7,_0x27a7d7){ChatGroupEvents[_0x6fd1('0x4')](_0x1d4fc1+':'+_0x1837d8['id'],_0x1837d8);ChatGroupEvents[_0x6fd1('0x4')](_0x1d4fc1,_0x1837d8);_0x27a7d7(null);};}for(var e in events){if(events[_0x6fd1('0x5')](e)){var event=events[e];ChatGroup[_0x6fd1('0x6')](e,emitEvent(event));}}module[_0x6fd1('0x7')]=ChatGroupEvents;
\ No newline at end of file
index 237d232..3baeffd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0830=['moment','bluebird','request-promise','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','util','../../config/logger'];(function(_0x1dad70,_0x156649){var _0x14771d=function(_0x4186d5){while(--_0x4186d5){_0x1dad70['push'](_0x1dad70['shift']());}};_0x14771d(++_0x156649);}(_0x0830,0x1ac));var _0x0083=function(_0x5ca4a0,_0x44b1d6){_0x5ca4a0=_0x5ca4a0-0x0;var _0x32e3af=_0x0830[_0x5ca4a0];return _0x32e3af;};'use strict';var _=require('lodash');var util=require(_0x0083('0x0'));var logger=require(_0x0083('0x1'))('api');var moment=require(_0x0083('0x2'));var BPromise=require(_0x0083('0x3'));var rp=require(_0x0083('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0083('0x5'));var attributes=require(_0x0083('0x6'));module[_0x0083('0x7')]=function(_0x1489eb,_0x20906b){return _0x1489eb[_0x0083('0x8')]('ChatGroup',attributes,{'tableName':_0x0083('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd546=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','ChatGroup','chat_groups'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xd546,0x1b0));var _0x6d54=function(_0x296b3c,_0x552278){_0x296b3c=_0x296b3c-0x0;var _0x416224=_0xd546[_0x296b3c];return _0x416224;};'use strict';var _=require(_0x6d54('0x0'));var util=require(_0x6d54('0x1'));var logger=require(_0x6d54('0x2'))(_0x6d54('0x3'));var moment=require(_0x6d54('0x4'));var BPromise=require(_0x6d54('0x5'));var rp=require(_0x6d54('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6d54('0x7'));var config=require(_0x6d54('0x8'));var attributes=require('./chatGroup.attributes');module['exports']=function(_0x575271,_0x32107b){return _0x575271[_0x6d54('0x9')](_0x6d54('0xa'),attributes,{'tableName':_0x6d54('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21e616f..2c4fa9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf555=['request\x20sent','error','code','ChatGroup,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','request','then'];(function(_0x11c12d,_0x5d7fb3){var _0x1d4bce=function(_0x58e060){while(--_0x58e060){_0x11c12d['push'](_0x11c12d['shift']());}};_0x1d4bce(++_0x5d7fb3);}(_0xf555,0x97));var _0x5f55=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf555[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f55('0x0'));var util=require(_0x5f55('0x1'));var moment=require('moment');var BPromise=require(_0x5f55('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f55('0x3'));var db=require(_0x5f55('0x4'))['db'];var utils=require(_0x5f55('0x5'));var logger=require('../../config/logger')(_0x5f55('0x6'));var config=require(_0x5f55('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5f55('0x8')][_0x5f55('0x9')]({'port':0x232a});config[_0x5f55('0xa')]=_[_0x5f55('0xb')](config[_0x5f55('0xa')],{'host':_0x5f55('0xc'),'port':0x18eb});var socket=require(_0x5f55('0xd'))(new Redis(config[_0x5f55('0xa')]));require(_0x5f55('0xe'))['register'](socket);function respondWithRpcPromise(_0x123c3d,_0x3ab5b2,_0xdfa6af){return new BPromise(function(_0x13f7c4,_0x5a95a9){return client[_0x5f55('0xf')](_0x123c3d,_0xdfa6af)[_0x5f55('0x10')](function(_0x5d8cab){logger['info']('ChatGroup,\x20%s,\x20%s',_0x3ab5b2,_0x5f55('0x11'));logger['debug']('ChatGroup,\x20%s,\x20%s,\x20%s',_0x3ab5b2,'request\x20sent',JSON['stringify'](_0x5d8cab));if(_0x5d8cab[_0x5f55('0x12')]){if(_0x5d8cab[_0x5f55('0x12')][_0x5f55('0x13')]===0x1f4){logger[_0x5f55('0x12')](_0x5f55('0x14'),_0x3ab5b2,_0x5d8cab[_0x5f55('0x12')][_0x5f55('0x15')]);return _0x5a95a9(_0x5d8cab['error'][_0x5f55('0x15')]);}logger['error'](_0x5f55('0x14'),_0x3ab5b2,_0x5d8cab[_0x5f55('0x12')][_0x5f55('0x15')]);return _0x13f7c4(_0x5d8cab['error'][_0x5f55('0x15')]);}else{logger[_0x5f55('0x16')](_0x5f55('0x14'),_0x3ab5b2,'request\x20sent');_0x13f7c4(_0x5d8cab[_0x5f55('0x17')][_0x5f55('0x15')]);}})['catch'](function(_0xe1cb1d){logger[_0x5f55('0x12')]('ChatGroup,\x20%s,\x20%s',_0x3ab5b2,_0xe1cb1d);_0x5a95a9(_0xe1cb1d);});});}
\ No newline at end of file
+var _0xe41f=['error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','request','info','ChatGroup,\x20%s,\x20%s','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xe41f,0x13e));var _0xfe41=function(_0x2607e3,_0x11fdcb){_0x2607e3=_0x2607e3-0x0;var _0x75dbc=_0xe41f[_0x2607e3];return _0x75dbc;};'use strict';var _=require(_0xfe41('0x0'));var util=require(_0xfe41('0x1'));var moment=require(_0xfe41('0x2'));var BPromise=require(_0xfe41('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfe41('0x4'));var logger=require(_0xfe41('0x5'))(_0xfe41('0x6'));var config=require(_0xfe41('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfe41('0x8')]({'port':0x232a});config['redis']=_[_0xfe41('0x9')](config[_0xfe41('0xa')],{'host':_0xfe41('0xb'),'port':0x18eb});var socket=require(_0xfe41('0xc'))(new Redis(config[_0xfe41('0xa')]));require(_0xfe41('0xd'))['register'](socket);function respondWithRpcPromise(_0x4f932d,_0x4a072c,_0x49fb1b){return new BPromise(function(_0x1c9d59,_0x293f2c){return client[_0xfe41('0xe')](_0x4f932d,_0x49fb1b)['then'](function(_0xa56f1a){logger[_0xfe41('0xf')](_0xfe41('0x10'),_0x4a072c,'request\x20sent');logger[_0xfe41('0x11')](_0xfe41('0x12'),_0x4a072c,'request\x20sent',JSON[_0xfe41('0x13')](_0xa56f1a));if(_0xa56f1a[_0xfe41('0x14')]){if(_0xa56f1a[_0xfe41('0x14')][_0xfe41('0x15')]===0x1f4){logger[_0xfe41('0x14')]('ChatGroup,\x20%s,\x20%s',_0x4a072c,_0xa56f1a[_0xfe41('0x14')][_0xfe41('0x16')]);return _0x293f2c(_0xa56f1a[_0xfe41('0x14')]['message']);}logger['error'](_0xfe41('0x10'),_0x4a072c,_0xa56f1a[_0xfe41('0x14')][_0xfe41('0x16')]);return _0x1c9d59(_0xa56f1a[_0xfe41('0x14')]['message']);}else{logger[_0xfe41('0xf')](_0xfe41('0x10'),_0x4a072c,_0xfe41('0x17'));_0x1c9d59(_0xa56f1a[_0xfe41('0x18')][_0xfe41('0x16')]);}})[_0xfe41('0x19')](function(_0x3d3dc3){logger[_0xfe41('0x14')](_0xfe41('0x10'),_0x4a072c,_0x3d3dc3);_0x293f2c(_0x3d3dc3);});});}
\ No newline at end of file
index cb430b5..b7015dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd98b=['chatGroup:','save','remove','update','register','length'];(function(_0x360156,_0x3c0760){var _0x2e6091=function(_0x44bdd3){while(--_0x44bdd3){_0x360156['push'](_0x360156['shift']());}};_0x2e6091(++_0x3c0760);}(_0xd98b,0x1d5));var _0xbd98=function(_0x583829,_0x188b0e){_0x583829=_0x583829-0x0;var _0x34d994=_0xd98b[_0x583829];return _0x34d994;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0xbd98('0x0'),_0xbd98('0x1'),_0xbd98('0x2')];function createListener(_0xcd7b2e,_0x219ccc){return function(_0x458e3e){_0x219ccc['emit'](_0xcd7b2e,_0x458e3e);};}function removeListener(_0x4a83e2,_0x486ae7){return function(){ChatGroupEvents['removeListener'](_0x4a83e2,_0x486ae7);};}exports[_0xbd98('0x3')]=function(_0xf30e24){for(var _0x57bf6e=0x0,_0x456ef5=events[_0xbd98('0x4')];_0x57bf6e<_0x456ef5;_0x57bf6e++){var _0x30afd1=events[_0x57bf6e];var _0x4ce7d8=createListener(_0xbd98('0x5')+_0x30afd1,_0xf30e24);ChatGroupEvents['on'](_0x30afd1,_0x4ce7d8);}};
\ No newline at end of file
+var _0x8cc2=['update','emit','register','length','chatGroup:','./chatGroup.events','remove'];(function(_0x452c06,_0x2d6a45){var _0x3c4e54=function(_0x4ad95c){while(--_0x4ad95c){_0x452c06['push'](_0x452c06['shift']());}};_0x3c4e54(++_0x2d6a45);}(_0x8cc2,0x15c));var _0x28cc=function(_0x347ba2,_0x5df6b7){_0x347ba2=_0x347ba2-0x0;var _0xc08b2=_0x8cc2[_0x347ba2];return _0xc08b2;};'use strict';var ChatGroupEvents=require(_0x28cc('0x0'));var events=['save',_0x28cc('0x1'),_0x28cc('0x2')];function createListener(_0x4d427c,_0x389b9c){return function(_0x4149d5){_0x389b9c[_0x28cc('0x3')](_0x4d427c,_0x4149d5);};}function removeListener(_0x531988,_0xc7d876){return function(){ChatGroupEvents['removeListener'](_0x531988,_0xc7d876);};}exports[_0x28cc('0x4')]=function(_0x1d1ba5){for(var _0x5b48a3=0x0,_0x54f153=events[_0x28cc('0x5')];_0x5b48a3<_0x54f153;_0x5b48a3++){var _0x4a533e=events[_0x5b48a3];var _0x212439=createListener(_0x28cc('0x6')+_0x4a533e,_0x1d1ba5);ChatGroupEvents['on'](_0x4a533e,_0x212439);}};
\ No newline at end of file
index 5ef6871..c267461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb55f=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','/describe','describe','/:id','/:id/unread','getUnread','/:id/members','getMembers','getMessages','post','addMembers','update','removeMembers','exports','multer','express'];(function(_0x39b949,_0x6d78cb){var _0x137dd7=function(_0x2fdfda){while(--_0x2fdfda){_0x39b949['push'](_0x39b949['shift']());}};_0x137dd7(++_0x6d78cb);}(_0xb55f,0x1cc));var _0xfb55=function(_0x1c069c,_0x4f293d){_0x1c069c=_0x1c069c-0x0;var _0x349fbf=_0xb55f[_0x1c069c];return _0x349fbf;};'use strict';var multer=require(_0xfb55('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfb55('0x1'));var router=express[_0xfb55('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfb55('0x3'));var interaction=require(_0xfb55('0x4'));var config=require(_0xfb55('0x5'));var controller=require(_0xfb55('0x6'));router[_0xfb55('0x7')]('/',auth[_0xfb55('0x8')](),controller['index']);router[_0xfb55('0x7')](_0xfb55('0x9'),auth[_0xfb55('0x8')](),controller[_0xfb55('0xa')]);router['get'](_0xfb55('0xb'),auth[_0xfb55('0x8')](),controller['show']);router['get'](_0xfb55('0xc'),auth['isAuthenticated'](),controller[_0xfb55('0xd')]);router[_0xfb55('0x7')](_0xfb55('0xe'),auth[_0xfb55('0x8')](),controller[_0xfb55('0xf')]);router['get']('/:id/messages',auth[_0xfb55('0x8')](),controller[_0xfb55('0x10')]);router[_0xfb55('0x11')]('/',auth[_0xfb55('0x8')](),controller['create']);router[_0xfb55('0x11')](_0xfb55('0xe'),auth[_0xfb55('0x8')](),controller[_0xfb55('0x12')]);router[_0xfb55('0x11')]('/:id/messages',auth[_0xfb55('0x8')](),controller['addMessage']);router['put'](_0xfb55('0xb'),auth[_0xfb55('0x8')](),controller[_0xfb55('0x13')]);router['delete'](_0xfb55('0xb'),auth[_0xfb55('0x8')](),controller['destroy']);router['delete'](_0xfb55('0xe'),auth['isAuthenticated'](),controller[_0xfb55('0x14')]);module[_0xfb55('0x15')]=router;
\ No newline at end of file
+var _0xc4ec=['../../components/auth/service','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','create','addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','util','connect-timeout','Router','fs-extra'];(function(_0x92e50a,_0x4d5a0d){var _0x7f4737=function(_0x2290a5){while(--_0x2290a5){_0x92e50a['push'](_0x92e50a['shift']());}};_0x7f4737(++_0x4d5a0d);}(_0xc4ec,0xd3));var _0xcc4e=function(_0x4bd950,_0x184ed5){_0x4bd950=_0x4bd950-0x0;var _0x5dc59a=_0xc4ec[_0x4bd950];return _0x5dc59a;};'use strict';var multer=require(_0xcc4e('0x0'));var util=require(_0xcc4e('0x1'));var path=require('path');var timeout=require(_0xcc4e('0x2'));var express=require('express');var router=express[_0xcc4e('0x3')]();var fs_extra=require(_0xcc4e('0x4'));var auth=require(_0xcc4e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xcc4e('0x6'));router[_0xcc4e('0x7')]('/',auth[_0xcc4e('0x8')](),controller[_0xcc4e('0x9')]);router[_0xcc4e('0x7')](_0xcc4e('0xa'),auth[_0xcc4e('0x8')](),controller[_0xcc4e('0xb')]);router[_0xcc4e('0x7')](_0xcc4e('0xc'),auth[_0xcc4e('0x8')](),controller[_0xcc4e('0xd')]);router[_0xcc4e('0x7')](_0xcc4e('0xe'),auth['isAuthenticated'](),controller[_0xcc4e('0xf')]);router[_0xcc4e('0x7')](_0xcc4e('0x10'),auth[_0xcc4e('0x8')](),controller[_0xcc4e('0x11')]);router[_0xcc4e('0x7')](_0xcc4e('0x12'),auth[_0xcc4e('0x8')](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller[_0xcc4e('0x13')]);router['post'](_0xcc4e('0x10'),auth['isAuthenticated'](),controller[_0xcc4e('0x14')]);router['post'](_0xcc4e('0x12'),auth['isAuthenticated'](),controller[_0xcc4e('0x15')]);router[_0xcc4e('0x16')]('/:id',auth[_0xcc4e('0x8')](),controller[_0xcc4e('0x17')]);router[_0xcc4e('0x18')](_0xcc4e('0xc'),auth['isAuthenticated'](),controller[_0xcc4e('0x19')]);router[_0xcc4e('0x18')](_0xcc4e('0x10'),auth['isAuthenticated'](),controller[_0xcc4e('0x1a')]);module['exports']=router;
\ No newline at end of file
index a8a7ebf..3655a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7b=['STRING','DATE','sequelize','exports','BOOLEAN','ENUM','star','thumb','TEXT'];(function(_0xf2662b,_0x4d8f41){var _0x257dc7=function(_0x46b1d1){while(--_0x46b1d1){_0xf2662b['push'](_0xf2662b['shift']());}};_0x257dc7(++_0x4d8f41);}(_0xfd7b,0xd1));var _0xbfd7=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xfd7b[_0x1da04e];return _0xdd8c41;};'use strict';var Sequelize=require(_0xbfd7('0x0'));module[_0xbfd7('0x1')]={'closed':{'type':Sequelize[_0xbfd7('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xbfd7('0x3')](_0xbfd7('0x4'),_0xbfd7('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0xbfd7('0x6')]},'pathTranscript':{'type':Sequelize[_0xbfd7('0x6')]},'mailTranscript':{'type':Sequelize[_0xbfd7('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xbfd7('0x7')]},'secondDisposition':{'type':Sequelize[_0xbfd7('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xbfd7('0x7')]},'browserName':{'type':Sequelize[_0xbfd7('0x7')]},'browserVersion':{'type':Sequelize[_0xbfd7('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0xbfd7('0x7')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0xbfd7('0x7')]},'referer':{'type':Sequelize[_0xbfd7('0x6')]},'customerIp':{'type':Sequelize[_0xbfd7('0x7')]},'formData':{'type':Sequelize[_0xbfd7('0x6')]('long')},'read1stAt':{'type':Sequelize[_0xbfd7('0x8')]},'lastMsgAt':{'type':Sequelize[_0xbfd7('0x8')]},'lastMsgDirection':{'type':Sequelize[_0xbfd7('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xbfd7('0x7')]},'customerPort':{'type':Sequelize[_0xbfd7('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0xbfd7('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8580=['DATE','ENUM','out','BOOLEAN','exports','INTEGER','thumb','star','TEXT','STRING','long'];(function(_0x3bbf7c,_0x240403){var _0x4210aa=function(_0x293f3b){while(--_0x293f3b){_0x3bbf7c['push'](_0x3bbf7c['shift']());}};_0x4210aa(++_0x240403);}(_0x8580,0x1c7));var _0x0858=function(_0xc67cf3,_0x540132){_0xc67cf3=_0xc67cf3-0x0;var _0x27e01e=_0x8580[_0xc67cf3];return _0x27e01e;};'use strict';var Sequelize=require('sequelize');module[_0x0858('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x0858('0x1')]},'ratingType':{'type':Sequelize['ENUM']('star',_0x0858('0x2')),'defaultValue':_0x0858('0x3')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x0858('0x4')]},'mailTranscript':{'type':Sequelize[_0x0858('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x0858('0x5')]},'secondDisposition':{'type':Sequelize[_0x0858('0x5')]},'thirdDisposition':{'type':Sequelize[_0x0858('0x5')]},'note':{'type':Sequelize[_0x0858('0x5')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x0858('0x5')]},'osName':{'type':Sequelize[_0x0858('0x5')]},'osVersion':{'type':Sequelize[_0x0858('0x5')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x0858('0x5')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x0858('0x5')]},'formData':{'type':Sequelize[_0x0858('0x4')](_0x0858('0x6'))},'read1stAt':{'type':Sequelize[_0x0858('0x7')]},'lastMsgAt':{'type':Sequelize[_0x0858('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x0858('0x8')]('in',_0x0858('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x0858('0x5')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x0858('0xa')],'defaultValue':![]}};
\ No newline at end of file
index 6818b5f..7beb978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','keyBy','ChatInteraction','a.key','Account.key','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.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','groupBy','ChatInteractionId','all','rows','includeAll','include','options','create','params','describe','createVidaooSession','ChatWebsite','vidaooApiKey','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','follow','isNull','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','update','disposition','AbandonInteraction','attachmentUpload','originalname','file','mimetype','attachmentDownload','findOne','closed','Unauthorized','Attachment','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','root','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','User','%s%d','agentAlias','System','customer','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','secret','MailAccount','MailServerOut','Smtp','service','host','port','secure','auth','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','pick','includeAgent','findAll','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','unix','server','files','attachments','transcript-%d-%s.zip','firstName','direction','Account','get','mkdirSync','Chat','Owner','N.A.','closedAt','browserName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','YYYY-MM-DD\x20HH:mm:ss','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatInteraction,\x20%s,\x20%s','result','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','stack','name','merge','body','contact','agent','interaction','account','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','field','color','from','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\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','buildExpression','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','keys','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','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)'];(function(_0x1124c0,_0x543a5f){var _0x553887=function(_0x1ccd49){while(--_0x1ccd49){_0x1124c0['push'](_0x1124c0['shift']());}};_0x553887(++_0x543a5f);}(_0x955f,0x1eb));var _0xf955=function(_0x377fce,_0x3c3db5){_0x377fce=_0x377fce-0x0;var _0x75d6a0=_0x955f[_0x377fce];return _0x75d6a0;};'use strict';var emlformat=require(_0xf955('0x0'));var rimraf=require(_0xf955('0x1'));var zipdir=require(_0xf955('0x2'));var jsonpatch=require(_0xf955('0x3'));var rp=require(_0xf955('0x4'));var moment=require('moment');var BPromise=require(_0xf955('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf955('0x6'));var sox=require('sox');var csv=require(_0xf955('0x7'));var ejs=require(_0xf955('0x8'));var fs=require('fs');var fs_extra=require(_0xf955('0x9'));var _=require('lodash');var squel=require(_0xf955('0xa'));var crypto=require(_0xf955('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf955('0xc'));var toCsv=require(_0xf955('0x7'));var querystring=require(_0xf955('0xd'));var Papa=require(_0xf955('0xe'));var Redis=require(_0xf955('0xf'));var authService=require(_0xf955('0x10'));var qs=require(_0xf955('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xf955('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf955('0x13'))(_0xf955('0x14'));var utils=require(_0xf955('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf955('0x16'));var db=require('../../mysqldb')['db'];config[_0xf955('0x17')]=_['defaults'](config[_0xf955('0x17')],{'host':_0xf955('0x18'),'port':0x18eb});var socket=require(_0xf955('0x19'))(new Redis(config[_0xf955('0x17')]));require(_0xf955('0x1a'))[_0xf955('0x1b')](socket);var jayson=require(_0xf955('0x1c'));var client=jayson[_0xf955('0x1d')][_0xf955('0x1e')]({'port':0x232b});var client9004=jayson[_0xf955('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0xc29b35,_0x54e60b,_0x3139d5,_0x3a814f){return new BPromise(function(_0x2f881b,_0x15c07c){var _0x50930d=_0x3a814f||client;return _0x50930d['request'](_0xc29b35,_0x3139d5)[_0xf955('0x1f')](function(_0xe6de5c){logger[_0xf955('0x20')]('ChatInteraction,\x20%s,\x20%s',_0x54e60b,_0xf955('0x21'));logger[_0xf955('0x22')](_0xf955('0x23'),_0x54e60b,_0xf955('0x21'),JSON[_0xf955('0x24')](_0xe6de5c));if(_0xe6de5c['error']){if(_0xe6de5c[_0xf955('0x25')][_0xf955('0x26')]===0x1f4){logger[_0xf955('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x54e60b,_0xe6de5c[_0xf955('0x25')]['message']);return _0x15c07c(_0xe6de5c[_0xf955('0x25')][_0xf955('0x27')]);}logger[_0xf955('0x25')](_0xf955('0x28'),_0x54e60b,_0xe6de5c[_0xf955('0x25')]['message']);return _0x2f881b(_0xe6de5c[_0xf955('0x25')][_0xf955('0x27')]);}else{logger[_0xf955('0x20')](_0xf955('0x28'),_0x54e60b,_0xf955('0x21'));_0x2f881b(_0xe6de5c[_0xf955('0x29')][_0xf955('0x27')]);}})['catch'](function(_0x18f435){logger[_0xf955('0x25')](_0xf955('0x28'),_0x54e60b,_0x18f435);_0x15c07c(_0x18f435);});});}function respondWithStatusCode(_0x406632,_0x2dcd55){_0x2dcd55=_0x2dcd55||0xcc;return function(_0x13a86d){if(_0x13a86d){return _0x406632[_0xf955('0x2a')](_0x2dcd55);}return _0x406632['status'](_0x2dcd55)[_0xf955('0x2b')]();};}function respondWithResult(_0x145098,_0x41c9f6){_0x41c9f6=_0x41c9f6||0xc8;return function(_0xbd0b74){if(_0xbd0b74){return _0x145098[_0xf955('0x2c')](_0x41c9f6)[_0xf955('0x2d')](_0xbd0b74);}};}function respondWithFilteredResult(_0x4d4af0,_0x2232a7){return function(_0x1e5d37){if(_0x1e5d37){var _0x4ec3e8=typeof _0x2232a7[_0xf955('0x2e')]===_0xf955('0x2f')&&typeof _0x2232a7[_0xf955('0x30')]===_0xf955('0x2f');var _0x59bfb5=_0x1e5d37[_0xf955('0x31')];var _0x518fb3=_0x4ec3e8?0x0:_0x2232a7[_0xf955('0x2e')];var _0x2c222a=_0x4ec3e8?_0x1e5d37[_0xf955('0x31')]:_0x2232a7[_0xf955('0x2e')]+_0x2232a7[_0xf955('0x30')];var _0x32121b;if(_0x2c222a>=_0x59bfb5){_0x2c222a=_0x59bfb5;_0x32121b=0xc8;}else{_0x32121b=0xce;}_0x4d4af0[_0xf955('0x2c')](_0x32121b);return _0x4d4af0[_0xf955('0x32')]('Content-Range',_0x518fb3+'-'+_0x2c222a+'/'+_0x59bfb5)[_0xf955('0x2d')](_0x1e5d37);}return null;};}function patchUpdates(_0x165cc4){return function(_0x3964d3){try{jsonpatch[_0xf955('0x33')](_0x3964d3,_0x165cc4,!![]);}catch(_0x4fea0c){return BPromise[_0xf955('0x34')](_0x4fea0c);}return _0x3964d3[_0xf955('0x35')]();};}function saveUpdates(_0x3c81bc,_0xe1b436){return function(_0xdbc53e){if(_0xdbc53e){return _0xdbc53e['update'](_0x3c81bc)['then'](function(_0x5480db){return _0x5480db;});}return null;};}function removeEntity(_0x2626cb,_0x3783dc){return function(_0x374e95){if(_0x374e95){return _0x374e95[_0xf955('0x36')]()[_0xf955('0x1f')](function(){_0x2626cb[_0xf955('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3acc4b,_0x515dc6){return function(_0x8f842f){if(!_0x8f842f){_0x3acc4b[_0xf955('0x2a')](0x194);}return _0x8f842f;};}function handleError(_0xe33ef2,_0x51762d){_0x51762d=_0x51762d||0x1f4;return function(_0x60a421){logger['error'](_0x60a421[_0xf955('0x37')]);if(_0x60a421[_0xf955('0x38')]){delete _0x60a421[_0xf955('0x38')];}_0xe33ef2[_0xf955('0x2c')](_0x51762d)['send'](_0x60a421);};}function getMustacheRender(_0xf35170,_0x118c92){return Mustache['render'](_0xf35170,_[_0xf955('0x39')](_0x118c92[_0xf955('0x3a')],{'contact':_0x118c92[_0xf955('0x3b')],'message':_0x118c92['message'],'agent':_0x118c92[_0xf955('0x3c')],'interaction':_0x118c92[_0xf955('0x3d')],'account':_0x118c92[_0xf955('0x3e')]}))||'';}function getInteractionUsers(_0x488b6e,_0x97e8ff){return new BPromise(function(_0x195faa,_0x21e4a6){try{if(_0x97e8ff[_0x488b6e['id']]){_0x488b6e[_0xf955('0x3f')]=_[_0xf955('0x40')](_0x97e8ff[_0x488b6e['id']],function(_0x3c4b29){return{'id':_0x3c4b29['id'],'fullname':_0x3c4b29[_0xf955('0x41')]};});}}catch(_0x228dae){_0x21e4a6(_0x228dae);}_0x195faa(_0x488b6e);});}function getInteractionTags(_0x5671c7,_0x8fa41b){return new BPromise(function(_0x7123c1,_0x2aacdf){try{if(_0x5671c7[_0xf955('0x42')]){_0x5671c7[_0xf955('0x43')]=[];_0x5671c7[_0xf955('0x42')][_0xf955('0x44')](',')[_0xf955('0x45')](function(_0x47651b){_0x5671c7[_0xf955('0x43')][_0xf955('0x46')](_0x8fa41b[_0x47651b]);});}delete _0x5671c7[_0xf955('0x42')];}catch(_0x40d7e9){_0x2aacdf(_0x40d7e9);}_0x7123c1(_0x5671c7);});}function updateChatInteraction(_0x159ae3,_0x3557b5,_0x248f60){return new BPromise(function(_0x356ec2,_0x34f0f1){return getInteractionUsers(_0x159ae3,_0x248f60)[_0xf955('0x1f')](function(_0x5dd300){return getInteractionTags(_0x5dd300,_0x3557b5);})[_0xf955('0x1f')](function(_0x25d809){_0x356ec2(_0x25d809);})[_0xf955('0x47')](function(_0x5f0ef9){_0x34f0f1(_0x5f0ef9);});});}exports[_0xf955('0x48')]=function(_0x485e77,_0x398224){var _0x56a4ca={},_0x103ac2={},_0x24cb74={'count':0x0,'rows':[]};var _0x213136=_[_0xf955('0x40')](db['ChatInteraction'][_0xf955('0x49')],function(_0xdb1cc){return{'name':_0xdb1cc[_0xf955('0x4a')],'type':_0xdb1cc['type']['key']};});_0x103ac2[_0xf955('0x4b')]=_[_0xf955('0x40')](_0x213136,_0xf955('0x38'));_0x103ac2[_0xf955('0x4c')]=_['keys'](_0x485e77[_0xf955('0x4c')]);_0x103ac2[_0xf955('0x4d')]=_[_0xf955('0x4e')](_0x103ac2['model'],_0x103ac2[_0xf955('0x4c')]);_0x56a4ca['attributes']=_[_0xf955('0x4e')](_0x103ac2[_0xf955('0x4b')],qs[_0xf955('0x4f')](_0x485e77['query'][_0xf955('0x4f')]));_0x56a4ca[_0xf955('0x50')]=_0x56a4ca[_0xf955('0x50')][_0xf955('0x51')]?_0x56a4ca['attributes']:_0x103ac2[_0xf955('0x4b')];if(!_0x485e77[_0xf955('0x4c')][_0xf955('0x52')](_0xf955('0x53'))){_0x56a4ca[_0xf955('0x30')]=qs['limit'](_0x485e77[_0xf955('0x4c')]['limit']);_0x56a4ca[_0xf955('0x2e')]=qs['offset'](_0x485e77[_0xf955('0x4c')]['offset']);}_0x56a4ca['order']=qs[_0xf955('0x54')](_0x485e77[_0xf955('0x4c')]['sort']);_0x56a4ca[_0xf955('0x55')]=qs['filters'](_['pick'](_0x485e77['query'],_0x103ac2['filters']),_0x213136);var _0x3c37e2=[];var _0x1abe1c=squel['select']()['field']('id')[_0xf955('0x56')](_0xf955('0x38'))[_0xf955('0x56')](_0xf955('0x57'))[_0xf955('0x58')](_0xf955('0x59'));var _0x190500=squel[_0xf955('0x5a')]()[_0xf955('0x56')](_0xf955('0x5b'))[_0xf955('0x56')](_0xf955('0x5c'))['field'](_0xf955('0x5d'))[_0xf955('0x58')](_0xf955('0x5e'),'ui')[_0xf955('0x5f')](_0xf955('0x60'),'u','u.id\x20=\x20ui.UserId');var _0xf5d575=squel[_0xf955('0x5a')]()[_0xf955('0x58')](_0xf955('0x61'),'i')[_0xf955('0x5f')](_0xf955('0x62'),'c',_0xf955('0x63'))[_0xf955('0x5f')](_0xf955('0x60'),'o',_0xf955('0x64'))['left_join'](_0xf955('0x65'),'a',_0xf955('0x66'))[_0xf955('0x5f')](_0xf955('0x67'),'me',_0xf955('0x68'))[_0xf955('0x5f')](_0xf955('0x69'),'it',_0xf955('0x6a'))[_0xf955('0x5f')](_0xf955('0x59'),'t',_0xf955('0x6b'));var _0x2b8173=squel['expr']();var _0x1388a0=[];var _0x452de9=squel[_0xf955('0x6c')]();var _0x3eb727;if(_0x485e77[_0xf955('0x4c')][_0xf955('0x6d')]){_0x3eb727=as[_0xf955('0x6e')](_0x485e77['query']['search']);var _0x5e73ff=_0x3eb727[_0xf955('0x6f')];for(var _0x530ec7=0x0;_0x530ec7<_0x3eb727['conditions'][_0xf955('0x51')];_0x530ec7++){var _0x533e0f=_0x3eb727[_0xf955('0x70')][_0x530ec7];var _0x3fa5b5='i';var _0x158469=_[_0xf955('0x71')](_0x213136,['name',_0x533e0f[_0xf955('0x56')]]);if(!_0x158469){switch(_0x533e0f[_0xf955('0x56')]){case _0xf955('0x72'):if(_0x533e0f[_0xf955('0x73')]==0x1){_0xf5d575[_0xf955('0x74')]('`'+_0x533e0f['field']+_0xf955('0x75'));}else{_0xf5d575['having']('`'+_0x533e0f[_0xf955('0x56')]+_0xf955('0x76'));}break;case _0xf955('0x77'):if(_0x533e0f['operator']===_0xf955('0x78')){if(_0x533e0f[_0xf955('0x73')][_0xf955('0x44')]('\x20')[_0xf955('0x51')]>0x1){_0x2b8173[_0x5e73ff](_0xf955('0x79'),qs[_0xf955('0x7a')](_0x533e0f[_0xf955('0x73')]),null);}else{var _0x47e5de='%'+_0x533e0f['value']+'%';_0x2b8173[_0x5e73ff](_0xf955('0x7b'),_0x47e5de,_0x47e5de,_0x47e5de);}}else{_0x158469=_[_0xf955('0x71')](_0x213136,[_0xf955('0x38'),_0xf955('0x7c')]);_0x533e0f[_0xf955('0x56')]=_0xf955('0x7c');_0x4b85c2=as[_0xf955('0x7d')](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')][_0xf955('0x80')],_0x4b85c2['value'][_0xf955('0x2b')]);}break;case'Tag':var _0x431729=_0x533e0f['value']['split'](',')[_0xf955('0x40')](function(_0x20f11c){return Number(_0x20f11c);});_0x431729['forEach'](function(_0x1e95c3){_0x452de9['or'](_0xf955('0x81'),'%,'+_0x1e95c3+',%');});_0x1388a0=_['union'](_0x1388a0,_0x431729);break;case'User':if(_0x533e0f[_0xf955('0x82')]===_0xf955('0x78')){_0x2b8173[_0x5e73ff](_0xf955('0x83'),'%'+_0x533e0f['value']+'%',null);}else{_0x158469=_[_0xf955('0x71')](_0x213136,[_0xf955('0x38'),_0xf955('0x84')]);_0x533e0f[_0xf955('0x56')]=_0xf955('0x84');_0x4b85c2=as[_0xf955('0x7d')](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2['value'][_0xf955('0x80')],_0x4b85c2[_0xf955('0x73')]['end']);}break;case _0xf955('0x3a'):_0x4b85c2=as[_0xf955('0x7d')]('me',null,_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')]['start'],_0x4b85c2[_0xf955('0x73')][_0xf955('0x2b')]);break;}}else{var _0x4b85c2=as['buildExpression'](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')][_0xf955('0x80')],_0x4b85c2['value'][_0xf955('0x2b')]);}}}else{var _0x430571=_(_0x485e77[_0xf955('0x4c')])[_0xf955('0x85')]()[_0xf955('0x40')](function(_0x3e9c6e){return _[_0xf955('0x86')](_0x213136,[_0xf955('0x38'),_0x3e9c6e])?_0x3e9c6e:undefined;})[_0xf955('0x87')]()[_0xf955('0x73')]();if(!_[_0xf955('0x88')](_0x430571)){_0x430571[_0xf955('0x45')](function(_0x4254a2){if(_0x4254a2==='ChatWebsiteId'){_0xf5d575[_0xf955('0x55')](_0xf955('0x89'),[][_0xf955('0x8a')](_0x485e77[_0xf955('0x4c')][_0x4254a2]));}else if(_0x4254a2==='createdAt'){var _0xcf6900=JSON[_0xf955('0x8b')](_0x485e77[_0xf955('0x4c')][_0x4254a2])[_0xf955('0x8c')];var _0x2b266d=JSON[_0xf955('0x8b')](_0x485e77[_0xf955('0x4c')][_0x4254a2])[_0xf955('0x8d')];_0xf5d575[_0xf955('0x55')](_0xf955('0x8e'),_0xcf6900,_0x2b266d);}else{if(_0x485e77[_0xf955('0x4c')][_0x4254a2]==='null'){_0xf5d575[_0xf955('0x55')]('i.'+_0x4254a2+_0xf955('0x8f'));}else{_0xf5d575[_0xf955('0x55')]('i.'+_0x4254a2+_0xf955('0x90'),_0x485e77[_0xf955('0x4c')][_0x4254a2]);}}});}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x91')]){if(_0x485e77['query'][_0xf955('0x91')]==0x1){_0xf5d575['having'](_0xf955('0x92'));}else{_0xf5d575['having'](_0xf955('0x93'));}}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x94')]){_0x1388a0=_[_0xf955('0x95')](_0x485e77[_0xf955('0x4c')][_0xf955('0x94')])?_0x485e77['query'][_0xf955('0x94')]:new Array(_0x485e77[_0xf955('0x4c')][_0xf955('0x94')]);_0x1388a0['forEach'](function(_0x526346){_0x452de9['or'](_0xf955('0x81'),'%,'+_0x526346+',%');});}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x96')]){var _0x595d60=_0x485e77[_0xf955('0x4c')]['filter'][_0xf955('0x97')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xf955('0x98')](_0x595d60)){_0x2b8173['or'](_0xf955('0x99'),_0x595d60+'%');}else{_0x2b8173['or'](_0xf955('0x9a'),qs['getFullTextValue'](_0x595d60))['or'](_0xf955('0x9b'),_0x595d60+'%');}}}_0xf5d575[_0xf955('0x55')](_0x2b8173);_0xf5d575[_0xf955('0x9c')]('i.id');var _0xba62d0={'type':db[_0xf955('0x9d')][_0xf955('0x9e')][_0xf955('0x9f')],'raw':!![]};var _0x419da5=_0xf5d575[_0xf955('0xa0')]();_0x419da5[_0xf955('0x56')]('i.id');_0x419da5[_0xf955('0x56')](_0xf955('0xa1'),_0xf955('0x72'));if(_0x56a4ca[_0xf955('0xa2')]){_0x56a4ca[_0xf955('0xa2')]['forEach'](function(_0x15c3e1){var _0x23f90c=_0x15c3e1[0x0]==='contactName'?_0x15c3e1[0x0]:'i.'+_0x15c3e1[0x0];_0xf5d575['order'](_0x23f90c,_0x15c3e1[0x1]===_0xf955('0xa3')?![]:!![]);});}if(!_[_0xf955('0x88')](_0x1388a0)){_0xf5d575[_0xf955('0x74')](_0x452de9);_0x419da5[_0xf955('0x55')]('t.id\x20IN\x20?',_0x1388a0);}BPromise[_0xf955('0xa4')]()['then'](function(){if(!_0x3eb727){if(_0x485e77['query'][_0xf955('0xa5')])return;_0x419da5[_0xf955('0x55')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0xf5d575['where'](_0xf955('0xa6'));return;}if(_0x485e77[_0xf955('0xa7')][_0xf955('0xa8')]!=='agent')return;return _0x485e77['user'][_0xf955('0xa9')]({'attributes':['id'],'raw':!![]})[_0xf955('0x1f')](function(_0x15fc7e){if(_['isEmpty'](_0x15fc7e)){_0x419da5['where']('i.ChatWebsiteId\x20IS\x20NULL');_0xf5d575['where'](_0xf955('0xaa'));}else{_0x419da5['where'](_0xf955('0x89'),_[_0xf955('0x40')](_0x15fc7e,'id'));_0xf5d575[_0xf955('0x55')](_0xf955('0x89'),_[_0xf955('0x40')](_0x15fc7e,'id'));}});})['then'](function(){if(_0x485e77[_0xf955('0xa7')][_0xf955('0xa8')]===_0xf955('0x3c')&&!_0x3eb727&&!_0x485e77[_0xf955('0x4c')]['ChatWebsiteId'])return[];return db[_0xf955('0xab')][_0xf955('0x4c')](_0x419da5['toString'](),_0xba62d0);})[_0xf955('0x1f')](function(_0x1819f6){_0x24cb74[_0xf955('0x31')]=_0x1819f6[_0xf955('0x51')];if(_0x24cb74[_0xf955('0x31')]===0x0)return[];return db[_0xf955('0xab')]['query'](_0x1abe1c['toString'](),_0xba62d0)[_0xf955('0x1f')](function(_0x545275){_0x3c37e2=_[_0xf955('0xac')](_0x545275,'id');_0xba62d0=_[_0xf955('0x39')](_0xba62d0,{'model':db[_0xf955('0xad')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x485e77[_0xf955('0x4c')]['fields']){_0x56a4ca['attributes'][_0xf955('0x45')](function(_0x12b9f8){_0xf5d575[_0xf955('0x56')]('i.'+_0x12b9f8);});}else{_0xf5d575[_0xf955('0x56')](_0xf955('0xa1'),'unreadMessages');_0xf5d575[_0xf955('0x56')](_0xf955('0xae'),_0xf955('0xaf'));_0xf5d575[_0xf955('0x56')]('a.mandatoryDisposition','Account.mandatoryDisposition');_0xf5d575[_0xf955('0x56')](_0xf955('0xb0'),'contactName');_0xf5d575[_0xf955('0x56')](_0xf955('0xb1'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb2'),'Contact.firstName');_0xf5d575[_0xf955('0x56')](_0xf955('0xb3'),_0xf955('0xb4'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb5'),_0xf955('0xb6'));_0xf5d575[_0xf955('0x56')]('c.phone','Contact.phone');_0xf5d575['field'](_0xf955('0xb7'),_0xf955('0xb8'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb9'),_0xf955('0xba'));_0xf5d575[_0xf955('0x56')](_0xf955('0xbb'),'Owner.fullname');_0xf5d575[_0xf955('0x56')](_0xf955('0xbc'),'Owner.internal');_0xf5d575[_0xf955('0x56')](_0xf955('0xbd'),_0xf955('0x42'));}if(_0x56a4ca[_0xf955('0x30')])_0xf5d575[_0xf955('0x30')](_0x56a4ca[_0xf955('0x30')]);if(_0x56a4ca[_0xf955('0x2e')])_0xf5d575[_0xf955('0x2e')](_0x56a4ca['offset']);return db['sequelize']['query'](_0xf5d575[_0xf955('0xbe')](),_0xba62d0);})[_0xf955('0x1f')](function(_0x210666){if(_0x210666[_0xf955('0x51')]>0x0)_0x190500[_0xf955('0x55')]('ui.ChatInteractionId\x20IN\x20?',_[_0xf955('0x40')](_0x210666,'id'));return db[_0xf955('0xab')][_0xf955('0x4c')](_0x190500[_0xf955('0xbe')](),_0xba62d0)[_0xf955('0x1f')](function(_0x36731b){var _0x11f6f8=_[_0xf955('0xbf')](_0x36731b,_0xf955('0xc0'));var _0x4a71e5=[];_0x210666[_0xf955('0x45')](function(_0x47daca){_0x4a71e5[_0xf955('0x46')](updateChatInteraction(_0x47daca,_0x3c37e2,_0x11f6f8));});return BPromise[_0xf955('0xc1')](_0x4a71e5);});});})[_0xf955('0x1f')](function(_0x427ab9){_0x24cb74[_0xf955('0xc2')]=_0x427ab9;return _0x24cb74;})[_0xf955('0x1f')](respondWithFilteredResult(_0x398224,_0x56a4ca))[_0xf955('0x47')](handleError(_0x398224,null));};exports['show']=function(_0x1ef189,_0x4bb590){var _0x222df2={'raw':![],'where':{'id':_0x1ef189['params']['id']}},_0x40d7c7={};_0x40d7c7[_0xf955('0x4b')]=_[_0xf955('0x85')](db[_0xf955('0xad')][_0xf955('0x49')]);_0x40d7c7[_0xf955('0x4c')]=_[_0xf955('0x85')](_0x1ef189[_0xf955('0x4c')]);_0x40d7c7['filters']=_[_0xf955('0x4e')](_0x40d7c7[_0xf955('0x4b')],_0x40d7c7['query']);_0x222df2[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x40d7c7['model'],qs['fields'](_0x1ef189[_0xf955('0x4c')][_0xf955('0x4f')]));_0x222df2[_0xf955('0x50')]=_0x222df2['attributes'][_0xf955('0x51')]?_0x222df2[_0xf955('0x50')]:_0x40d7c7[_0xf955('0x4b')];if(_0x1ef189[_0xf955('0x4c')][_0xf955('0xc3')]){_0x222df2[_0xf955('0xc4')]=[{'all':!![]}];}_0x222df2=_[_0xf955('0x39')]({},_0x222df2,_0x1ef189[_0xf955('0xc5')]);return db[_0xf955('0xad')][_0xf955('0x71')](_0x222df2)[_0xf955('0x1f')](handleEntityNotFound(_0x4bb590,null))[_0xf955('0x1f')](respondWithResult(_0x4bb590,null))[_0xf955('0x47')](handleError(_0x4bb590,null));};exports[_0xf955('0xc6')]=function(_0x490981,_0x58464d){return db[_0xf955('0xad')][_0xf955('0xc6')](_0x490981[_0xf955('0x3a')],{})[_0xf955('0x1f')](respondWithResult(_0x58464d,0xc9))[_0xf955('0x47')](handleError(_0x58464d,null));};exports['update']=function(_0x161d06,_0x3bab0d){if(_0x161d06['body']['id']){delete _0x161d06[_0xf955('0x3a')]['id'];}return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x161d06[_0xf955('0xc7')]['id']}})['then'](handleEntityNotFound(_0x3bab0d,null))[_0xf955('0x1f')](saveUpdates(_0x161d06['body'],null))[_0xf955('0x1f')](respondWithResult(_0x3bab0d,null))[_0xf955('0x47')](handleError(_0x3bab0d,null));};exports[_0xf955('0x36')]=function(_0xe9f9a8,_0x5aff59){return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0xe9f9a8[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x5aff59,null))[_0xf955('0x1f')](removeEntity(_0x5aff59,null))['catch'](handleError(_0x5aff59,null));};exports[_0xf955('0xc8')]=function(_0x1f38db,_0x395013){return db['ChatInteraction'][_0xf955('0xc8')]()[_0xf955('0x1f')](respondWithResult(_0x395013,null))[_0xf955('0x47')](handleError(_0x395013,null));};exports[_0xf955('0xc9')]=function(_0x19665c,_0x437020){var _0x12d158=_0x19665c['params']['id'];var _0x5a6abe;var _0x4e3013;var _0x345a7c;return db[_0xf955('0xad')]['findOne']({'where':{'id':_0x12d158}})[_0xf955('0x1f')](function(_0x42ba43){_0x5a6abe=_0x42ba43;return db[_0xf955('0xca')]['findOne']({'where':{'id':_0x42ba43[_0xf955('0xa5')]},'attributes':['id',_0xf955('0xcb'),'vidaooEscalation','vidaooTopic',_0xf955('0xcc'),_0xf955('0xcd')],'raw':!![]});})[_0xf955('0x1f')](function(_0x30baa1){if(_0x30baa1&&_0x30baa1[_0xf955('0xcb')]&&_0x30baa1['vidaooEscalation']){_0x4e3013=_0x30baa1;var _0xc881d4={'interaction':{'id':_0x12d158},'agent':{'id':_0x19665c[_0xf955('0xa7')]['id'],'name':_0x19665c[_0xf955('0xa7')][_0xf955('0x38')],'fullname':_0x19665c[_0xf955('0xa7')]['fullname'],'email':_0x19665c[_0xf955('0xa7')][_0xf955('0xce')]},'contact':_0x19665c[_0xf955('0x3a')][_0xf955('0x3b')],'account':_0x19665c['body'][_0xf955('0x3e')]};var _0x410d1f={'rejectUnauthorized':![],'method':_0xf955('0xcf'),'url':_0xf955('0xd0'),'headers':{'X-APIKEY':_0x30baa1[_0xf955('0xcb')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x19665c['user'][_0xf955('0xce')]],'buttons':null,'topic':_0x4e3013[_0xf955('0xd1')],'note':_['isNull'](_0x4e3013[_0xf955('0xcc')])?null:getMustacheRender(_0x4e3013[_0xf955('0xcc')],_0xc881d4),'metadata':null},'redirect':_0xf955('0xd2'),'json':!![]};try{if(!_[_0xf955('0xd3')](_0x4e3013[_0xf955('0xcd')])){var _0x38e031=getMustacheRender(_0x4e3013[_0xf955('0xcd')],_0xc881d4);var _0x4f53ef=JSON[_0xf955('0x8b')](_0x38e031);_0x410d1f[_0xf955('0x3a')]['metadata']=_0x4f53ef;}}catch(_0x5395aa){throw new db[(_0xf955('0x9d'))][(_0xf955('0xd4'))](_0xf955('0xd5'));}return rp(_0x410d1f);}else{throw new db[(_0xf955('0x9d'))]['ValidationError'](_0xf955('0xd6'));}})[_0xf955('0x1f')](function(_0x57e0d7){_0x345a7c=_0x57e0d7;if(_0x345a7c['id']){var _0x54903a={'body':_0x345a7c[_0xf955('0xd7')],'ChatWebsiteId':_0x4e3013['id'],'ChatInteractionId':_0x5a6abe['id'],'direction':_0xf955('0xd8'),'UserId':_0x19665c[_0xf955('0xa7')]['id']};return db[_0xf955('0xd9')]['create'](_0x54903a,{});}else{throw new db[(_0xf955('0x9d'))][(_0xf955('0xd4'))](_0xf955('0xda'));}})[_0xf955('0x1f')](function(){return _0x5a6abe[_0xf955('0xdb')]({'vidaooSessionId':_0x345a7c['id']});})[_0xf955('0x1f')](respondWithResult(_0x437020,null))[_0xf955('0x47')](handleError(_0x437020,null));};exports[_0xf955('0xdc')]=function(_0x4c7a54,_0xde084e){if(_0x4c7a54[_0xf955('0x3a')]['id']){delete _0x4c7a54[_0xf955('0x3a')]['id'];}return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x4c7a54[_0xf955('0xc7')]['id']},'include':[{'model':db[_0xf955('0xdd')],'as':_0xf955('0x77')}]})[_0xf955('0x1f')](handleEntityNotFound(_0xde084e,null))[_0xf955('0x1f')](saveUpdates(_0x4c7a54['body'],null))[_0xf955('0x1f')](respondWithResult(_0xde084e,null))[_0xf955('0x47')](handleError(_0xde084e,null));};exports[_0xf955('0xde')]=function(_0x27391f,_0x269ae2,_0x3250df){if(_0x27391f[_0xf955('0x3a')]['id']){delete _0x27391f['body']['id'];}return db[_0xf955('0xad')]['find']({'where':{'id':_0x27391f[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](function(_0x14cde9){if(!_0x14cde9){logger[_0xf955('0x25')](_0xf955('0xdf'),_0xf955('0xde'),0x194,_0xf955('0xe0'));_0x269ae2[_0xf955('0x2a')](0x194);}else{if(_0x14cde9[_0xf955('0x84')]){throw new db['Sequelize'][(_0xf955('0xd4'))](_0xf955('0xe1'));}}return _0x14cde9;})[_0xf955('0x1f')](function(_0x3d5c15){if(_0x3d5c15){return _0x3d5c15[_0xf955('0xe2')]({'closed':_0x27391f[_0xf955('0x3a')]['closed'],'disposition':_0x27391f[_0xf955('0x3a')][_0xf955('0xe3')]})[_0xf955('0x1f')](function(_0x5c8a3f){return _0x5c8a3f;});}})[_0xf955('0x1f')](function(_0x471223){return respondWithRpcPromise(_0xf955('0xe4'),_0xf955('0xde'),_0x27391f[_0xf955('0x3a')],client9004);})[_0xf955('0x1f')](respondWithResult(_0x269ae2,null))['catch'](handleError(_0x269ae2,null));};exports[_0xf955('0xe5')]=function(_0x4775bd,_0x2a862f,_0x42e3eb){_0x4775bd[_0xf955('0x3a')][_0xf955('0x38')]=_0x4775bd['file'][_0xf955('0xe6')];_0x4775bd['body']['basename']=_0x4775bd['file']['filename'];_0x4775bd[_0xf955('0x3a')]['type']=_0x4775bd[_0xf955('0xe7')][_0xf955('0xe8')];return db['Attachment'][_0xf955('0xc6')](_0x4775bd['body'])[_0xf955('0x1f')](respondWithResult(_0x2a862f,0xc9))['catch'](handleError(_0x2a862f,null));};exports[_0xf955('0xe9')]=function(_0x267963,_0x28ce39,_0x43a5c3){return db['ChatInteraction'][_0xf955('0xea')]({'where':{'id':_0x267963['params']['id']},'raw':!![]})[_0xf955('0x1f')](handleEntityNotFound(_0x28ce39,null))[_0xf955('0x1f')](function(_0x30fd01){if(_0x30fd01){if(_0x30fd01[_0xf955('0xeb')]){return _0x28ce39[_0xf955('0x2c')](0x193)[_0xf955('0x2d')]({'status':0x193,'message':_0xf955('0xec')});}return db[_0xf955('0xed')][_0xf955('0xea')]({'where':{'id':_0x267963[_0xf955('0x4c')]['attachId']},'raw':!![]})[_0xf955('0x1f')](handleEntityNotFound(_0x28ce39,null));}})[_0xf955('0x1f')](function(_0x444e24){if(_0x444e24){var _0x2fb11a=_0x444e24[_0xf955('0xee')]!==null;var _0x2ce35c=path[_0xf955('0xef')](config['root'],_0xf955('0xf0'));if(_0x2fb11a){_0x2ce35c=path[_0xf955('0xef')](_0x2ce35c,_0xf955('0xf1'));}var _0x1e35d7=path[_0xf955('0xef')](_0x2ce35c,_0x444e24[_0xf955('0xf2')]);return _0x28ce39[_0xf955('0xf3')](_0x1e35d7);}})[_0xf955('0x47')](handleError(_0x28ce39,null));};exports[_0xf955('0xf4')]=function(_0x38016a,_0x52ad4d){var _0x1620ec=null;var _0x2c8e49=null;var _0x2b3deb=null;var _0x1ae12a=null;if(_0x38016a[_0xf955('0x3a')]['id']){delete _0x38016a[_0xf955('0x3a')]['id'];}if(_0x38016a[_0xf955('0x3a')][_0xf955('0xf5')]){_0x1ae12a=path['join'](config[_0xf955('0xf6')],_0xf955('0xf7'),util[_0xf955('0xf8')](_0xf955('0xf9'),Date[_0xf955('0xfa')]()));_0x38016a[_0xf955('0x3a')][_0xf955('0xfb')]=_0x1ae12a;}return db[_0xf955('0xad')]['find']({'where':{'id':_0x38016a['params']['id']},'include':[{'model':db[_0xf955('0xd9')],'as':_0xf955('0xfc'),'include':[{'model':db[_0xf955('0xfd')],'as':_0xf955('0xfd')}]}]})['then'](handleEntityNotFound(_0x52ad4d,null))['then'](saveUpdates(_0x38016a[_0xf955('0x3a')],null))[_0xf955('0x1f')](function(_0x4860ad){if(_0x4860ad){_0x1620ec=_0x4860ad;return db[_0xf955('0xca')][_0xf955('0x71')]({'where':{'id':_0x1620ec[_0xf955('0xa5')]}});}})[_0xf955('0x1f')](function(_0x1c0211){if(_0x1c0211){_0x2b3deb=_0x1c0211;return db['CmContact'][_0xf955('0x71')]({'where':{'id':_0x1620ec[_0xf955('0x7c')]}});}})[_0xf955('0x1f')](function(_0x106640){if(_0x106640){_0x2c8e49=_0x106640;if(_0x1ae12a){var _0x101722=null;for(var _0x479dc0=0x1;_0x479dc0<_0x1620ec[_0xf955('0xfc')]['length'];++_0x479dc0){_0x101722=_0x1620ec[_0xf955('0xfc')][_0x479dc0];var _0x570005=_0x101722[_0xf955('0x84')]?util[_0xf955('0xf8')](_0xf955('0xfe'),_0x2b3deb[_0xf955('0xff')],_0x101722[_0xf955('0x84')]):_0xf955('0x100');var _0x85661f=_0x38016a[_0xf955('0x3a')][_0xf955('0x101')]||util[_0xf955('0xf8')]('%s%d','Visitor',_0x101722[_0xf955('0x7c')]);switch(_0x2b3deb[_0xf955('0x102')]){case _0xf955('0x103'):_0x570005=_0x101722[_0xf955('0x84')]?util['format']('%s%d',_0x2b3deb[_0xf955('0xff')],_0x101722['UserId']):'System';break;case _0xf955('0x104'):_0x570005=_0x101722['UserId']?_0x101722[_0xf955('0xfd')][_0xf955('0x105')]||_0x101722['User']['fullname']:_0xf955('0x100');break;case _0xf955('0x106'):_0x570005=_0x101722[_0xf955('0x84')]?_0x101722[_0xf955('0xfd')][_0xf955('0x41')]:'System';break;default:_0x570005=_0x101722[_0xf955('0x84')]?util['format']('%s%d',_0x2b3deb['agentAlias'],_0x101722[_0xf955('0x84')]):_0xf955('0x100');}var _0x23d382=util['format']('[%s]\x20%s:\x20%s\x0a',moment(_0x101722[_0xf955('0x107')])['format'](_0xf955('0x108')),_0x101722['direction']==='in'?_0x85661f:_0x570005,_0x101722[_0xf955('0x3a')]);if(!_0x101722[_0xf955('0x109')]){fs['appendFileSync'](_0x1ae12a,_0x23d382);}}return db[_0xf955('0x10a')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xf955('0x10b')],'as':_0xf955('0x10c'),'raw':!![]}]});}}})[_0xf955('0x1f')](function(_0x1e6165){if(_0x1e6165&&_0x1e6165[_0xf955('0x10c')]&&_0x38016a['body']){var _0x4a6338={'tls':{'rejectUnauthorized':![]}};if(_0x1e6165[_0xf955('0x10c')][_0xf955('0x10d')]){_0x4a6338[_0xf955('0x10d')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x10d')];}else{_0x4a6338[_0xf955('0x10e')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x10e')];_0x4a6338[_0xf955('0x10f')]=_0x1e6165['Smtp'][_0xf955('0x10f')];_0x4a6338[_0xf955('0x110')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x110')];}if(_0x1e6165[_0xf955('0x10c')]['authentication']){_0x4a6338[_0xf955('0x111')]={'user':_0x1e6165[_0xf955('0x10c')]['user'],'pass':_0x1e6165[_0xf955('0x10c')]['pass']};}return respondWithRpcPromise('SendMail',_0xf955('0x112'),{'account':_0x4a6338,'message':{'from':util[_0xf955('0xf8')](_0xf955('0x113'),_0x1e6165[_0xf955('0x38')],_0x1e6165['email']||_0x1e6165[_0xf955('0x10c')][_0xf955('0xa7')]),'to':_0x38016a[_0xf955('0x3a')][_0xf955('0xf5')],'subject':'Mail\x20Transcript','text':util[_0xf955('0xf8')](_0xf955('0x114'),_0x38016a['body'][_0xf955('0xf5')]),'attachments':[{'path':_0x1ae12a}]}})[_0xf955('0x1f')](function(){return _0x1620ec;})[_0xf955('0x47')](function(_0x50502a){console[_0xf955('0x25')](_0x50502a);});}else{return _0x1620ec;}})[_0xf955('0x1f')](respondWithStatusCode(_0x52ad4d,0xc8))[_0xf955('0x47')](handleError(_0x52ad4d,null));};exports['addMessage']=function(_0x1d2e9c,_0x49718e,_0x5aeba7){return db['ChatMessage'][_0xf955('0x71')]({'where':{'id':_0x1d2e9c[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x49718e,null))[_0xf955('0x1f')](function(_0x10cd8e){if(_0x10cd8e){return _0x10cd8e[_0xf955('0x115')](_0x1d2e9c['body'][_0xf955('0x116')],_[_0xf955('0x117')](_0x1d2e9c[_0xf955('0x3a')],[_0xf955('0x116'),'id'])||{});}})[_0xf955('0x1f')](respondWithResult(_0x49718e,null))[_0xf955('0x47')](handleError(_0x49718e,null));};exports[_0xf955('0x118')]=function(_0x287adf,_0x38177d,_0x56a307){var _0x49c6ca={'raw':![],'where':{}};var _0x36f3b3={};var _0x252118={'count':0x0,'rows':[]};return db[_0xf955('0xad')]['findOne']({'where':{'id':_0x287adf['params']['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x38177d,null))['then'](function(_0x1dd4b4){if(_0x1dd4b4){_0x36f3b3[_0xf955('0x4b')]=_[_0xf955('0x85')](db[_0xf955('0xd9')]['rawAttributes']);_0x36f3b3[_0xf955('0x4c')]=_[_0xf955('0x85')](_0x287adf[_0xf955('0x4c')]);_0x36f3b3['filters']=_[_0xf955('0x4e')](_0x36f3b3['model'],_0x36f3b3[_0xf955('0x4c')]);_0x49c6ca[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x36f3b3[_0xf955('0x4b')],qs['fields'](_0x287adf[_0xf955('0x4c')][_0xf955('0x4f')]));_0x49c6ca[_0xf955('0x50')]=_0x49c6ca['attributes'][_0xf955('0x51')]?_0x49c6ca['attributes']:_0x36f3b3[_0xf955('0x4b')];if(!_0x287adf['query'][_0xf955('0x52')]('nolimit')){_0x49c6ca[_0xf955('0x30')]=qs['limit'](_0x287adf['query']['limit']);_0x49c6ca[_0xf955('0x2e')]=qs['offset'](_0x287adf['query'][_0xf955('0x2e')]);}_0x49c6ca[_0xf955('0xa2')]=qs[_0xf955('0x54')](_0x287adf[_0xf955('0x4c')][_0xf955('0x54')]);_0x49c6ca[_0xf955('0x55')]=qs[_0xf955('0x4d')](_[_0xf955('0x119')](_0x287adf['query'],_0x36f3b3[_0xf955('0x4d')]));_0x49c6ca[_0xf955('0x55')][_0xf955('0xc0')]=_0x1dd4b4['id'];if(_0x287adf[_0xf955('0x4c')][_0xf955('0x96')]){_0x49c6ca[_0xf955('0x55')]=_[_0xf955('0x39')](_0x49c6ca[_0xf955('0x55')],{'$or':_[_0xf955('0x40')](_0x49c6ca['attributes'],function(_0x1d1df4){var _0x1b7a62={};_0x1b7a62[_0x1d1df4]={'$like':'%'+_0x287adf[_0xf955('0x4c')][_0xf955('0x96')]+'%'};return _0x1b7a62;})});}if(_0x287adf[_0xf955('0x4c')][_0xf955('0x8c')]){var _0x547464=_0x287adf[_0xf955('0x4c')][_0xf955('0x8c')][_0xf955('0x44')](',');var _0x280d1c={};_0x280d1c[_0x547464[0x0]]={'$gte':moment(_0x547464[0x1])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')};_0x49c6ca[_0xf955('0x55')]=_[_0xf955('0x39')](_0x49c6ca['where'],_0x280d1c);}_0x49c6ca=_['merge']({},_0x49c6ca,_0x287adf['options']);return db[_0xf955('0xd9')][_0xf955('0x31')]({'where':_0x49c6ca[_0xf955('0x55')]})[_0xf955('0x1f')](function(_0x14bed6){_0x252118[_0xf955('0x31')]=_0x14bed6;if(_0x287adf[_0xf955('0x4c')][_0xf955('0xc3')]){_0x49c6ca[_0xf955('0xc4')]=[{'all':!![]}];}return db[_0xf955('0xd9')]['findAll'](_0x49c6ca);})[_0xf955('0x1f')](function(_0x7996b8){_0x252118[_0xf955('0xc2')]=_0x7996b8;return _0x252118;});}})[_0xf955('0x1f')](respondWithFilteredResult(_0x38177d,_0x49c6ca))[_0xf955('0x47')](handleError(_0x38177d,null));};exports['getMyMessages']=function(_0xac8cdf,_0x70fa9f,_0x5e650f){var _0x39d911={'where':{}},_0x2fbf0c={},_0x1612e4={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf955('0xea')]({'where':{'id':_0xac8cdf[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x70fa9f,null))[_0xf955('0x1f')](function(_0x1a7da8){if(_0x1a7da8){_0x2fbf0c[_0xf955('0x4b')]=_[_0xf955('0x85')](db['ChatMessage'][_0xf955('0x49')]);_0x2fbf0c['query']=_['keys'](_0xac8cdf['query']);_0x2fbf0c[_0xf955('0x4d')]=_[_0xf955('0x4e')](_0x2fbf0c[_0xf955('0x4b')],_0x2fbf0c[_0xf955('0x4c')]);_0x39d911[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x2fbf0c[_0xf955('0x4b')],qs['fields'](_0xac8cdf['query'][_0xf955('0x4f')]));_0x39d911[_0xf955('0x50')]=_0x39d911['attributes']['length']?_0x39d911[_0xf955('0x50')]:_0x2fbf0c[_0xf955('0x4b')];if(!_0xac8cdf[_0xf955('0x4c')]['hasOwnProperty']('nolimit')){_0x39d911[_0xf955('0x30')]=qs[_0xf955('0x30')](_0xac8cdf[_0xf955('0x4c')][_0xf955('0x30')]);_0x39d911[_0xf955('0x2e')]=qs['offset'](_0xac8cdf['query'][_0xf955('0x2e')]);}_0x39d911[_0xf955('0xa2')]=qs[_0xf955('0x54')](_0xac8cdf[_0xf955('0x4c')]['sort']);_0x39d911[_0xf955('0x55')]=qs[_0xf955('0x4d')](_[_0xf955('0x119')](_0xac8cdf[_0xf955('0x4c')],_0x2fbf0c[_0xf955('0x4d')]));_0x39d911[_0xf955('0x55')]['ChatInteractionId']=_0x1a7da8['id'];if(_0xac8cdf['query'][_0xf955('0x96')]){_0x39d911['where']=_[_0xf955('0x39')](_0x39d911[_0xf955('0x55')],{'$or':_['map'](_0x39d911['attributes'],function(_0x4a3d8c){var _0x170ea7={};_0x170ea7[_0x4a3d8c]={'$like':'%'+_0xac8cdf[_0xf955('0x4c')][_0xf955('0x96')]+'%'};return _0x170ea7;})});}_0x39d911[_0xf955('0x55')][_0xf955('0x109')]=![];if(_0xac8cdf[_0xf955('0x4c')]['id']){_0x39d911[_0xf955('0x55')]['id']={'$gt':_0xac8cdf[_0xf955('0x4c')]['id']};}_0x39d911=_[_0xf955('0x39')]({},_0x39d911,_0xac8cdf['options']);return db[_0xf955('0xd9')]['count']({'where':_0x39d911['where']})[_0xf955('0x1f')](function(_0x36327c){_0x1612e4[_0xf955('0x31')]=_0x36327c;_0x39d911[_0xf955('0xc4')]=[];if(_0xac8cdf['query'][_0xf955('0x11a')]){_0x39d911['include'][_0xf955('0x46')]({'model':db[_0xf955('0xfd')],'as':_0xf955('0xfd'),'attributes':['id',_0xf955('0x41'),'alias']});}if(_0xac8cdf[_0xf955('0x4c')][_0xf955('0xc3')]){_0x39d911[_0xf955('0xc4')]=[{'all':!![]}];}return db[_0xf955('0xd9')][_0xf955('0x11b')](_0x39d911);})[_0xf955('0x1f')](function(_0x3e4239){_0x1612e4[_0xf955('0xc2')]=_0x3e4239;return _0x1612e4;});}})[_0xf955('0x1f')](respondWithFilteredResult(_0x70fa9f,_0x39d911))['catch'](handleError(_0x70fa9f,null));};exports[_0xf955('0x11c')]=function(_0x11a228,_0x2d37c2,_0x932b98){return db[_0xf955('0xad')]['find']({'where':{'id':_0x11a228[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x2d37c2,null))[_0xf955('0x1f')](function(_0x147f3c){if(_0x147f3c){return _0x147f3c[_0xf955('0x11d')](_0x11a228[_0xf955('0x3a')]['ids'],_[_0xf955('0x117')](_0x11a228[_0xf955('0x3a')],[_0xf955('0x116'),'id'])||{})[_0xf955('0x11e')](function(){return db[_0xf955('0x11f')]['findAll']({'attributes':['id',_0xf955('0x38'),_0xf955('0x57')],'where':{'id':_0x11a228[_0xf955('0x3a')]['ids']}});})[_0xf955('0x1f')](function(_0xfcaf21){socket['emit'](_0xf955('0x120'),{'id':Number(_0x11a228[_0xf955('0xc7')]['id']),'tags':_0xfcaf21||[]});return{'id':Number(_0x11a228[_0xf955('0xc7')]['id']),'tags':_0xfcaf21||[]};});}})[_0xf955('0x1f')](respondWithResult(_0x2d37c2,null))[_0xf955('0x47')](handleError(_0x2d37c2,null));};exports['removeTags']=function(_0x572efd,_0x357dbc,_0x2b9880){return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x572efd[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x357dbc,null))['then'](function(_0x23968f){if(_0x23968f){return _0x23968f[_0xf955('0x121')](_0x572efd[_0xf955('0x4c')][_0xf955('0x116')]);}})['then'](respondWithStatusCode(_0x357dbc,null))[_0xf955('0x47')](handleError(_0x357dbc,null));};exports[_0xf955('0xf3')]=function(_0x3842e1,_0x204e4e){var _0x47b877=moment()[_0xf955('0x122')]()[_0xf955('0xbe')]();var _0x1624e9=path[_0xf955('0xef')](config[_0xf955('0xf6')],_0xf955('0x123'),_0xf955('0x124'),'tmp');var _0x3ccc35=path[_0xf955('0xef')](config[_0xf955('0xf6')],_0xf955('0x123'),_0xf955('0x124'),_0xf955('0x125'));var _0x72b500=path[_0xf955('0xef')](_0x1624e9,_0x47b877);var _0x1d4aa6=util[_0xf955('0xf8')](_0xf955('0x126'),_0x3842e1[_0xf955('0xc7')]['id'],_0x47b877);var _0x4896ae=path[_0xf955('0xef')](_0x1624e9,_0x1d4aa6);var _0x3b67e3=[];_0x3b67e3[_0xf955('0x46')]({'model':db['User'],'as':_0xf955('0xfd'),'attributes':['id','fullname'],'raw':!![]});_0x3b67e3[_0xf955('0x46')]({'model':db[_0xf955('0xdd')],'as':_0xf955('0x77'),'attributes':['id',_0xf955('0x127'),'lastName'],'raw':!![]});if(_0x3842e1['query']['attachments']){_0x3b67e3[_0xf955('0x46')]({'model':db[_0xf955('0xed')],'as':_0xf955('0xed'),'raw':!![]});}var _0x21b589=[{'model':db[_0xf955('0xd9')],'as':'Messages','attributes':['id',_0xf955('0x3a'),_0xf955('0x107'),_0xf955('0x128'),_0xf955('0x109'),'read'],'include':_0x3b67e3}];_0x21b589[_0xf955('0x46')]({'model':db[_0xf955('0xca')],'as':_0xf955('0x129'),'attributes':['id',_0xf955('0x38')]});_0x21b589[_0xf955('0x46')]({'model':db[_0xf955('0xfd')],'as':'Owner','attributes':['id',_0xf955('0x41')]});return db['ChatInteraction'][_0xf955('0x71')]({'where':{'id':_0x3842e1['params']['id']},'include':_0x21b589})[_0xf955('0x1f')](handleEntityNotFound(_0x204e4e,null))[_0xf955('0x1f')](function(_0x1ed31c){if(_0x1ed31c){var _0x2e8dc2=_0x1ed31c[_0xf955('0x12a')]({'plain':!![]});fs[_0xf955('0x12b')](_0x72b500);var _0x58b727={'channel':_0xf955('0x12c'),'account':_0x2e8dc2[_0xf955('0x129')][_0xf955('0x38')],'agent':_0x2e8dc2[_0xf955('0x12d')]?_0x2e8dc2[_0xf955('0x12d')][_0xf955('0x41')]:_0xf955('0x12e'),'createdAt':moment(_0x2e8dc2['createdAt'])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf955('0xbe')](),'closedAt':_0x2e8dc2['closed']?moment(_0x2e8dc2[_0xf955('0x12f')])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf955('0xbe')]():'','disposition':_0x2e8dc2['disposition'],'chatInfo':{'browser':_0x2e8dc2[_0xf955('0x130')],'os':_0x2e8dc2['osName'],'referer':_0x2e8dc2[_0xf955('0x131')],'customerIp':_0x2e8dc2[_0xf955('0x132')],'customerPort':_0x2e8dc2[_0xf955('0x133')]?_0x2e8dc2[_0xf955('0x133')]:'N.A.'},'messages':_(_0x2e8dc2[_0xf955('0xfc')])[_0xf955('0x134')]()[_0xf955('0x96')]({'secret':![]})[_0xf955('0x40')](function(_0x1307a6){if(_0x1307a6[_0xf955('0xed')]){var _0x3328b9=path[_0xf955('0xef')](_0x3ccc35,_0x1307a6['Attachment'][_0xf955('0xf2')]);if(fs[_0xf955('0x135')](_0x3328b9)){fs[_0xf955('0x136')](_0x3328b9)[_0xf955('0x137')](fs['createWriteStream'](path[_0xf955('0xef')](_0x72b500,_0x1307a6[_0xf955('0xed')][_0xf955('0xf2')])));}}return{'date':moment(_0x1307a6[_0xf955('0x107')])[_0xf955('0xf8')](_0xf955('0x138'))['toString'](),'sender':_0x1307a6[_0xf955('0x128')]===_0xf955('0xd8')?_0x1307a6['User']?_0x1307a6[_0xf955('0xfd')][_0xf955('0x41')]:_0xf955('0x100'):_0x1307a6[_0xf955('0x77')][_0xf955('0x127')]+(_0x1307a6[_0xf955('0x77')][_0xf955('0x139')]?'\x20'+_0x1307a6['Contact'][_0xf955('0x139')]:''),'body':_0x1307a6[_0xf955('0xed')]?_0x1307a6[_0xf955('0xed')][_0xf955('0xf2')]:_0x1307a6[_0xf955('0x3a')],'direction':_0x1307a6[_0xf955('0x128')]===_0xf955('0xd8')?'A':'C','secret':_0x1307a6['secret'],'read':_0x1307a6[_0xf955('0x91')],'attachment':_0x1307a6[_0xf955('0xed')]};})[_0xf955('0x73')]()};return ejs[_0xf955('0x13a')](path[_0xf955('0xef')](config[_0xf955('0xf6')],'server',_0xf955('0x13b'),_0xf955('0x13c')),{'interaction':_0x58b727})[_0xf955('0x1f')](function(_0x385676){var _0x5a9193=path['join'](_0x72b500,_0xf955('0x13d')+_0x2e8dc2['id']+'-'+_0x47b877+_0xf955('0x13e'));var _0x157508={'path':_0x5a9193,'channel':'Chat','interactionId':_0x2e8dc2['id']};return pdf[_0xf955('0x13f')](_0x385676,_0x157508);})['then'](function(){return new BPromise(function(_0x37bdd4,_0x4f8fc8){zipdir(_0x72b500,{'saveTo':_0x4896ae},function(_0x5f3e0f,_0x4ad147){if(_0x5f3e0f)return _0x4f8fc8(_0x5f3e0f);return _0x37bdd4(_0x4ad147);});})[_0xf955('0x1f')](function(){return new BPromise(function(_0x2dc607,_0x355871){rimraf(_0x72b500,function(_0x1c5b1d){if(_0x1c5b1d)_0x355871(_0x1c5b1d);return _0x2dc607();});});})[_0xf955('0x1f')](function(){return _0x204e4e[_0xf955('0xf3')](_0x4896ae,_0x1d4aa6,function(_0x5eac2b){if(_0x5eac2b){console[_0xf955('0x140')](_0xf955('0x141'),_0x5eac2b);}else{fs[_0xf955('0x142')](_0x4896ae);}});});});}else{return _0x204e4e[_0xf955('0x2a')](0xc8);}})[_0xf955('0x47')](handleError(_0x204e4e,null));};
\ No newline at end of file
+var _0x9f0e=['error','code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','stack','name','send','render','merge','contact','interaction','fullname','TagIds','Tags','split','forEach','index','rawAttributes','type','key','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','field','from','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','chat_messages','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','`\x20=\x200','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','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','having','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','toString','sequelize','keyBy','ChatInteraction','a.key','Account.key','a.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','c.email','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.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','show','includeAll','include','options','create','params','describe','createVidaooSession','ChatWebsite','vidaooEscalation','vidaooTopic','vidaooMetadata','vidaooApiKey','email','account','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','vidaooNote','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','file','originalname','filename','mimetype','Attachment','attachmentDownload','findOne','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','download','close','server/files/chat/upload/','format','now','pathTranscript','ChatMessage','Messages','agentAlias','System','%s%d','Visitor','agentIdentifier','website_alias','agent_alias','agent_fullname','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','mailTranscript','Mail\x20Transcript','addMessage','ids','omit','getMessages','intersection','sort','YYYY-MM-DD\x20HH:mm:ss','findAll','includeAgent','alias','rows','addTags','spread','emit','removeTags','server','tmp','files','attachments','transcript-%d-%s.zip','Contact','firstName','Account','Owner','mkdirSync','closedAt','browserName','referer','customerIp','customerPort','N.A.','tail','existsSync','pipe','createWriteStream','lastName','downloadInteraction.ejs','transcript-','Chat','createPdfFromHTML','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x46403b,_0x4fb766){var _0x37062f=function(_0x53252a){while(--_0x53252a){_0x46403b['push'](_0x46403b['shift']());}};_0x37062f(++_0x4fb766);}(_0x9f0e,0x116));var _0xe9f0=function(_0x2cdeff,_0x25d0b1){_0x2cdeff=_0x2cdeff-0x0;var _0x280300=_0x9f0e[_0x2cdeff];return _0x280300;};'use strict';var emlformat=require(_0xe9f0('0x0'));var rimraf=require(_0xe9f0('0x1'));var zipdir=require(_0xe9f0('0x2'));var jsonpatch=require(_0xe9f0('0x3'));var rp=require(_0xe9f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9f0('0x5'));var util=require(_0xe9f0('0x6'));var path=require(_0xe9f0('0x7'));var sox=require(_0xe9f0('0x8'));var csv=require(_0xe9f0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9f0('0xa'));var squel=require(_0xe9f0('0xb'));var crypto=require(_0xe9f0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9f0('0xd'));var toCsv=require(_0xe9f0('0x9'));var querystring=require(_0xe9f0('0xe'));var Papa=require(_0xe9f0('0xf'));var Redis=require(_0xe9f0('0x10'));var authService=require(_0xe9f0('0x11'));var qs=require(_0xe9f0('0x12'));var as=require(_0xe9f0('0x13'));var pdf=require(_0xe9f0('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe9f0('0x15'))(_0xe9f0('0x16'));var utils=require(_0xe9f0('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xe9f0('0x18'));var db=require('../../mysqldb')['db'];config[_0xe9f0('0x19')]=_[_0xe9f0('0x1a')](config[_0xe9f0('0x19')],{'host':_0xe9f0('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe9f0('0x19')]));require('./chatInteraction.socket')[_0xe9f0('0x1c')](socket);var jayson=require(_0xe9f0('0x1d'));var client=jayson[_0xe9f0('0x1e')]['http']({'port':0x232b});var client9004=jayson[_0xe9f0('0x1e')][_0xe9f0('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x2e68ef,_0x598eee,_0xaa7aa6,_0x1e16e0){return new BPromise(function(_0xcd2042,_0xd71ac8){var _0x3ed69a=_0x1e16e0||client;return _0x3ed69a[_0xe9f0('0x20')](_0x2e68ef,_0xaa7aa6)[_0xe9f0('0x21')](function(_0x59bf5a){logger[_0xe9f0('0x22')](_0xe9f0('0x23'),_0x598eee,_0xe9f0('0x24'));logger['debug'](_0xe9f0('0x25'),_0x598eee,_0xe9f0('0x24'),JSON[_0xe9f0('0x26')](_0x59bf5a));if(_0x59bf5a[_0xe9f0('0x27')]){if(_0x59bf5a['error'][_0xe9f0('0x28')]===0x1f4){logger[_0xe9f0('0x27')]('ChatInteraction,\x20%s,\x20%s',_0x598eee,_0x59bf5a['error']['message']);return _0xd71ac8(_0x59bf5a[_0xe9f0('0x27')][_0xe9f0('0x29')]);}logger[_0xe9f0('0x27')](_0xe9f0('0x23'),_0x598eee,_0x59bf5a[_0xe9f0('0x27')]['message']);return _0xcd2042(_0x59bf5a[_0xe9f0('0x27')][_0xe9f0('0x29')]);}else{logger[_0xe9f0('0x22')](_0xe9f0('0x23'),_0x598eee,_0xe9f0('0x24'));_0xcd2042(_0x59bf5a[_0xe9f0('0x2a')][_0xe9f0('0x29')]);}})[_0xe9f0('0x2b')](function(_0x3c4ba9){logger[_0xe9f0('0x27')]('ChatInteraction,\x20%s,\x20%s',_0x598eee,_0x3c4ba9);_0xd71ac8(_0x3c4ba9);});});}function respondWithStatusCode(_0x371095,_0x27541f){_0x27541f=_0x27541f||0xcc;return function(_0x2ddfba){if(_0x2ddfba){return _0x371095[_0xe9f0('0x2c')](_0x27541f);}return _0x371095['status'](_0x27541f)[_0xe9f0('0x2d')]();};}function respondWithResult(_0x2613fd,_0x856ac8){_0x856ac8=_0x856ac8||0xc8;return function(_0x1f98a7){if(_0x1f98a7){return _0x2613fd[_0xe9f0('0x2e')](_0x856ac8)['json'](_0x1f98a7);}};}function respondWithFilteredResult(_0x130f96,_0xdc16bc){return function(_0x44fb5b){if(_0x44fb5b){var _0xab3d81=typeof _0xdc16bc[_0xe9f0('0x2f')]===_0xe9f0('0x30')&&typeof _0xdc16bc[_0xe9f0('0x31')]===_0xe9f0('0x30');var _0x2b6503=_0x44fb5b[_0xe9f0('0x32')];var _0x22806c=_0xab3d81?0x0:_0xdc16bc[_0xe9f0('0x2f')];var _0x445ad0=_0xab3d81?_0x44fb5b[_0xe9f0('0x32')]:_0xdc16bc[_0xe9f0('0x2f')]+_0xdc16bc[_0xe9f0('0x31')];var _0x80e3ac;if(_0x445ad0>=_0x2b6503){_0x445ad0=_0x2b6503;_0x80e3ac=0xc8;}else{_0x80e3ac=0xce;}_0x130f96[_0xe9f0('0x2e')](_0x80e3ac);return _0x130f96[_0xe9f0('0x33')](_0xe9f0('0x34'),_0x22806c+'-'+_0x445ad0+'/'+_0x2b6503)[_0xe9f0('0x35')](_0x44fb5b);}return null;};}function patchUpdates(_0x589803){return function(_0x1c394){try{jsonpatch[_0xe9f0('0x36')](_0x1c394,_0x589803,!![]);}catch(_0x5480ce){return BPromise['reject'](_0x5480ce);}return _0x1c394['save']();};}function saveUpdates(_0x191a39,_0x585742){return function(_0x9bf61d){if(_0x9bf61d){return _0x9bf61d[_0xe9f0('0x37')](_0x191a39)['then'](function(_0x285457){return _0x285457;});}return null;};}function removeEntity(_0x4c181d,_0x576a7a){return function(_0x59024e){if(_0x59024e){return _0x59024e[_0xe9f0('0x38')]()[_0xe9f0('0x21')](function(){_0x4c181d['status'](0xcc)[_0xe9f0('0x2d')]();});}};}function handleEntityNotFound(_0xb0cfc,_0x1d4748){return function(_0x4d4186){if(!_0x4d4186){_0xb0cfc['sendStatus'](0x194);}return _0x4d4186;};}function handleError(_0x3fb04e,_0x3ff42d){_0x3ff42d=_0x3ff42d||0x1f4;return function(_0x1917c8){logger['error'](_0x1917c8[_0xe9f0('0x39')]);if(_0x1917c8[_0xe9f0('0x3a')]){delete _0x1917c8[_0xe9f0('0x3a')];}_0x3fb04e[_0xe9f0('0x2e')](_0x3ff42d)[_0xe9f0('0x3b')](_0x1917c8);};}function getMustacheRender(_0x552ec2,_0x2ab492){return Mustache[_0xe9f0('0x3c')](_0x552ec2,_[_0xe9f0('0x3d')](_0x2ab492['body'],{'contact':_0x2ab492[_0xe9f0('0x3e')],'message':_0x2ab492[_0xe9f0('0x29')],'agent':_0x2ab492['agent'],'interaction':_0x2ab492[_0xe9f0('0x3f')],'account':_0x2ab492['account']}))||'';}function getInteractionUsers(_0x56c03e,_0x55c0bd){return new BPromise(function(_0x5dcbeb,_0x51eda3){try{if(_0x55c0bd[_0x56c03e['id']]){_0x56c03e['Users']=_['map'](_0x55c0bd[_0x56c03e['id']],function(_0x35062f){return{'id':_0x35062f['id'],'fullname':_0x35062f[_0xe9f0('0x40')]};});}}catch(_0x2d8f93){_0x51eda3(_0x2d8f93);}_0x5dcbeb(_0x56c03e);});}function getInteractionTags(_0x40c2c6,_0x2560c6){return new BPromise(function(_0xd9b61b,_0x3d4eb7){try{if(_0x40c2c6[_0xe9f0('0x41')]){_0x40c2c6[_0xe9f0('0x42')]=[];_0x40c2c6['TagIds'][_0xe9f0('0x43')](',')[_0xe9f0('0x44')](function(_0x36b00a){_0x40c2c6['Tags']['push'](_0x2560c6[_0x36b00a]);});}delete _0x40c2c6[_0xe9f0('0x41')];}catch(_0x515fa6){_0x3d4eb7(_0x515fa6);}_0xd9b61b(_0x40c2c6);});}function updateChatInteraction(_0x297689,_0x52613a,_0x314f0e){return new BPromise(function(_0x42d9d2,_0x4f1663){return getInteractionUsers(_0x297689,_0x314f0e)[_0xe9f0('0x21')](function(_0x3f5255){return getInteractionTags(_0x3f5255,_0x52613a);})[_0xe9f0('0x21')](function(_0x18faaf){_0x42d9d2(_0x18faaf);})[_0xe9f0('0x2b')](function(_0x59378a){_0x4f1663(_0x59378a);});});}exports[_0xe9f0('0x45')]=function(_0x2941a0,_0x30141e){var _0x319380={},_0xf75ffb={},_0x4ffc17={'count':0x0,'rows':[]};var _0x3a8d1d=_['map'](db['ChatInteraction'][_0xe9f0('0x46')],function(_0x17b832){return{'name':_0x17b832['fieldName'],'type':_0x17b832[_0xe9f0('0x47')][_0xe9f0('0x48')]};});_0xf75ffb[_0xe9f0('0x49')]=_[_0xe9f0('0x4a')](_0x3a8d1d,_0xe9f0('0x3a'));_0xf75ffb[_0xe9f0('0x4b')]=_[_0xe9f0('0x4c')](_0x2941a0['query']);_0xf75ffb[_0xe9f0('0x4d')]=_['intersection'](_0xf75ffb[_0xe9f0('0x49')],_0xf75ffb['query']);_0x319380[_0xe9f0('0x4e')]=_['intersection'](_0xf75ffb[_0xe9f0('0x49')],qs[_0xe9f0('0x4f')](_0x2941a0[_0xe9f0('0x4b')]['fields']));_0x319380[_0xe9f0('0x4e')]=_0x319380[_0xe9f0('0x4e')][_0xe9f0('0x50')]?_0x319380[_0xe9f0('0x4e')]:_0xf75ffb[_0xe9f0('0x49')];if(!_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x51')](_0xe9f0('0x52'))){_0x319380[_0xe9f0('0x31')]=qs[_0xe9f0('0x31')](_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x31')]);_0x319380['offset']=qs['offset'](_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x2f')]);}_0x319380[_0xe9f0('0x53')]=qs['sort'](_0x2941a0[_0xe9f0('0x4b')]['sort']);_0x319380[_0xe9f0('0x54')]=qs[_0xe9f0('0x4d')](_[_0xe9f0('0x55')](_0x2941a0[_0xe9f0('0x4b')],_0xf75ffb['filters']),_0x3a8d1d);var _0xb18f13=[];var _0x3fa271=squel['select']()[_0xe9f0('0x56')]('id')[_0xe9f0('0x56')](_0xe9f0('0x3a'))[_0xe9f0('0x56')]('color')[_0xe9f0('0x57')](_0xe9f0('0x58'));var _0x3dd40d=squel[_0xe9f0('0x59')]()[_0xe9f0('0x56')](_0xe9f0('0x5a'))[_0xe9f0('0x56')](_0xe9f0('0x5b'))['field'](_0xe9f0('0x5c'))[_0xe9f0('0x57')](_0xe9f0('0x5d'),'ui')[_0xe9f0('0x5e')](_0xe9f0('0x5f'),'u',_0xe9f0('0x60'));var _0x28fe47=squel[_0xe9f0('0x59')]()[_0xe9f0('0x57')](_0xe9f0('0x61'),'i')[_0xe9f0('0x5e')](_0xe9f0('0x62'),'c',_0xe9f0('0x63'))[_0xe9f0('0x5e')]('users','o',_0xe9f0('0x64'))[_0xe9f0('0x5e')](_0xe9f0('0x65'),'a','a.id\x20=\x20i.ChatWebsiteId')['left_join'](_0xe9f0('0x66'),'me','me.ChatInteractionId\x20=\x20i.id')[_0xe9f0('0x5e')](_0xe9f0('0x67'),'it',_0xe9f0('0x68'))['left_join'](_0xe9f0('0x58'),'t',_0xe9f0('0x69'));var _0x954616=squel[_0xe9f0('0x6a')]();var _0x4bb39d=[];var _0x392eae=squel[_0xe9f0('0x6a')]();var _0x28a66e;if(_0x2941a0[_0xe9f0('0x4b')]['search']){_0x28a66e=as['parseSearch'](_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x6b')]);var _0x29286b=_0x28a66e[_0xe9f0('0x6c')];for(var _0x7cbe71=0x0;_0x7cbe71<_0x28a66e['conditions'][_0xe9f0('0x50')];_0x7cbe71++){var _0x55ce2d=_0x28a66e[_0xe9f0('0x6d')][_0x7cbe71];var _0x5858a9='i';var _0x7c05aa=_[_0xe9f0('0x6e')](_0x3a8d1d,[_0xe9f0('0x3a'),_0x55ce2d[_0xe9f0('0x56')]]);if(!_0x7c05aa){switch(_0x55ce2d[_0xe9f0('0x56')]){case'unreadMessages':if(_0x55ce2d['value']==0x1){_0x28fe47['having']('`'+_0x55ce2d[_0xe9f0('0x56')]+_0xe9f0('0x6f'));}else{_0x28fe47['having']('`'+_0x55ce2d[_0xe9f0('0x56')]+'`\x20>\x200');}break;case'Contact':if(_0x55ce2d[_0xe9f0('0x70')]===_0xe9f0('0x71')){if(_0x55ce2d[_0xe9f0('0x72')][_0xe9f0('0x43')]('\x20')[_0xe9f0('0x50')]>0x1){_0x954616[_0x29286b](_0xe9f0('0x73'),qs['getFullTextValue'](_0x55ce2d['value']),null);}else{var _0x1255e6='%'+_0x55ce2d[_0xe9f0('0x72')]+'%';_0x954616[_0x29286b](_0xe9f0('0x74'),_0x1255e6,_0x1255e6,_0x1255e6);}}else{_0x7c05aa=_[_0xe9f0('0x6e')](_0x3a8d1d,['name',_0xe9f0('0x75')]);_0x55ce2d[_0xe9f0('0x56')]=_0xe9f0('0x75');_0x2cd0c1=as[_0xe9f0('0x76')](_0x5858a9,_0x7c05aa[_0xe9f0('0x47')],_0x55ce2d);_0x954616[_0x29286b](_0x2cd0c1[_0xe9f0('0x77')],_0x2cd0c1['value'][_0xe9f0('0x78')],_0x2cd0c1[_0xe9f0('0x72')][_0xe9f0('0x2d')]);}break;case _0xe9f0('0x79'):var _0xb6e75d=_0x55ce2d['value'][_0xe9f0('0x43')](',')[_0xe9f0('0x4a')](function(_0x388091){return Number(_0x388091);});_0xb6e75d[_0xe9f0('0x44')](function(_0x214ac0){_0x392eae['or'](_0xe9f0('0x7a'),'%,'+_0x214ac0+',%');});_0x4bb39d=_[_0xe9f0('0x7b')](_0x4bb39d,_0xb6e75d);break;case _0xe9f0('0x7c'):if(_0x55ce2d[_0xe9f0('0x70')]===_0xe9f0('0x71')){_0x954616[_0x29286b](_0xe9f0('0x7d'),'%'+_0x55ce2d[_0xe9f0('0x72')]+'%',null);}else{_0x7c05aa=_['find'](_0x3a8d1d,[_0xe9f0('0x3a'),_0xe9f0('0x7e')]);_0x55ce2d[_0xe9f0('0x56')]=_0xe9f0('0x7e');_0x2cd0c1=as[_0xe9f0('0x76')](_0x5858a9,_0x7c05aa[_0xe9f0('0x47')],_0x55ce2d);_0x954616[_0x29286b](_0x2cd0c1[_0xe9f0('0x77')],_0x2cd0c1['value'][_0xe9f0('0x78')],_0x2cd0c1[_0xe9f0('0x72')]['end']);}break;case _0xe9f0('0x7f'):_0x2cd0c1=as[_0xe9f0('0x76')]('me',null,_0x55ce2d);_0x954616[_0x29286b](_0x2cd0c1[_0xe9f0('0x77')],_0x2cd0c1['value'][_0xe9f0('0x78')],_0x2cd0c1[_0xe9f0('0x72')]['end']);break;}}else{var _0x2cd0c1=as[_0xe9f0('0x76')](_0x5858a9,_0x7c05aa['type'],_0x55ce2d);_0x954616[_0x29286b](_0x2cd0c1['text'],_0x2cd0c1[_0xe9f0('0x72')]['start'],_0x2cd0c1[_0xe9f0('0x72')][_0xe9f0('0x2d')]);}}}else{var _0x56d052=_(_0x2941a0[_0xe9f0('0x4b')])[_0xe9f0('0x4c')]()[_0xe9f0('0x4a')](function(_0x300fae){return _[_0xe9f0('0x80')](_0x3a8d1d,[_0xe9f0('0x3a'),_0x300fae])?_0x300fae:undefined;})[_0xe9f0('0x81')]()[_0xe9f0('0x72')]();if(!_[_0xe9f0('0x82')](_0x56d052)){_0x56d052['forEach'](function(_0x2e15f9){if(_0x2e15f9===_0xe9f0('0x83')){_0x28fe47[_0xe9f0('0x54')](_0xe9f0('0x84'),[][_0xe9f0('0x85')](_0x2941a0[_0xe9f0('0x4b')][_0x2e15f9]));}else if(_0x2e15f9===_0xe9f0('0x86')){var _0x114033=JSON['parse'](_0x2941a0[_0xe9f0('0x4b')][_0x2e15f9])[_0xe9f0('0x87')];var _0x2ce60c=JSON[_0xe9f0('0x88')](_0x2941a0[_0xe9f0('0x4b')][_0x2e15f9])[_0xe9f0('0x89')];_0x28fe47['where'](_0xe9f0('0x8a'),_0x114033,_0x2ce60c);}else{if(_0x2941a0['query'][_0x2e15f9]==='null'){_0x28fe47['where']('i.'+_0x2e15f9+_0xe9f0('0x8b'));}else{_0x28fe47[_0xe9f0('0x54')]('i.'+_0x2e15f9+_0xe9f0('0x8c'),_0x2941a0[_0xe9f0('0x4b')][_0x2e15f9]);}}});}if(_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x8d')]){if(_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x8d')]==0x1){_0x28fe47[_0xe9f0('0x8e')]('`unreadMessages`\x20=\x200');}else{_0x28fe47[_0xe9f0('0x8e')](_0xe9f0('0x8f'));}}if(_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x90')]){_0x4bb39d=_[_0xe9f0('0x91')](_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x90')])?_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x90')]:new Array(_0x2941a0[_0xe9f0('0x4b')]['tag']);_0x4bb39d['forEach'](function(_0x23c9e8){_0x392eae['or'](_0xe9f0('0x7a'),'%,'+_0x23c9e8+',%');});}if(_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x92')]){var _0xdaf9e3=_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x92')][_0xe9f0('0x93')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0xdaf9e3)){_0x954616['or'](_0xe9f0('0x94'),_0xdaf9e3+'%');}else{_0x954616['or'](_0xe9f0('0x95'),qs['getFullTextValue'](_0xdaf9e3))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0xdaf9e3+'%');}}}_0x28fe47[_0xe9f0('0x54')](_0x954616);_0x28fe47[_0xe9f0('0x96')](_0xe9f0('0x97'));var _0xab92b={'type':db[_0xe9f0('0x98')]['QueryTypes'][_0xe9f0('0x99')],'raw':!![]};var _0x21eba3=_0x28fe47[_0xe9f0('0x9a')]();_0x21eba3[_0xe9f0('0x56')](_0xe9f0('0x97'));_0x21eba3[_0xe9f0('0x56')](_0xe9f0('0x9b'),'unreadMessages');if(_0x319380['order']){_0x319380['order'][_0xe9f0('0x44')](function(_0x3c95f4){var _0x245458=_0x3c95f4[0x0]===_0xe9f0('0x9c')?_0x3c95f4[0x0]:'i.'+_0x3c95f4[0x0];_0x28fe47['order'](_0x245458,_0x3c95f4[0x1]===_0xe9f0('0x9d')?![]:!![]);});}if(!_['isEmpty'](_0x4bb39d)){_0x28fe47[_0xe9f0('0x8e')](_0x392eae);_0x21eba3['where'](_0xe9f0('0x9e'),_0x4bb39d);}BPromise[_0xe9f0('0x9f')]()[_0xe9f0('0x21')](function(){if(!_0x28a66e){if(_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x83')])return;_0x21eba3[_0xe9f0('0x54')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x28fe47[_0xe9f0('0x54')](_0xe9f0('0xa0'));return;}if(_0x2941a0[_0xe9f0('0xa1')][_0xe9f0('0xa2')]!==_0xe9f0('0xa3'))return;return _0x2941a0['user'][_0xe9f0('0xa4')]({'attributes':['id'],'raw':!![]})[_0xe9f0('0x21')](function(_0x4c9808){if(_[_0xe9f0('0x82')](_0x4c9808)){_0x21eba3['where'](_0xe9f0('0xa5'));_0x28fe47[_0xe9f0('0x54')](_0xe9f0('0xa5'));}else{_0x21eba3['where'](_0xe9f0('0x84'),_[_0xe9f0('0x4a')](_0x4c9808,'id'));_0x28fe47[_0xe9f0('0x54')]('i.ChatWebsiteId\x20IN\x20?',_[_0xe9f0('0x4a')](_0x4c9808,'id'));}});})[_0xe9f0('0x21')](function(){if(_0x2941a0[_0xe9f0('0xa1')][_0xe9f0('0xa2')]===_0xe9f0('0xa3')&&!_0x28a66e&&!_0x2941a0[_0xe9f0('0x4b')][_0xe9f0('0x83')])return[];return db['sequelize']['query'](_0x21eba3[_0xe9f0('0xa6')](),_0xab92b);})[_0xe9f0('0x21')](function(_0x1a7549){_0x4ffc17['count']=_0x1a7549[_0xe9f0('0x50')];if(_0x4ffc17[_0xe9f0('0x32')]===0x0)return[];return db[_0xe9f0('0xa7')][_0xe9f0('0x4b')](_0x3fa271['toString'](),_0xab92b)['then'](function(_0x20436f){_0xb18f13=_[_0xe9f0('0xa8')](_0x20436f,'id');_0xab92b=_['merge'](_0xab92b,{'model':db[_0xe9f0('0xa9')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2941a0['query']['fields']){_0x319380[_0xe9f0('0x4e')][_0xe9f0('0x44')](function(_0x77b59d){_0x28fe47[_0xe9f0('0x56')]('i.'+_0x77b59d);});}else{_0x28fe47[_0xe9f0('0x56')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xaa'),_0xe9f0('0xab'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xac'),'Account.mandatoryDisposition');_0x28fe47['field']('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xe9f0('0x9c'));_0x28fe47['field'](_0xe9f0('0xad'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xae'),_0xe9f0('0xaf'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xb0'),'Contact.lastName');_0x28fe47['field'](_0xe9f0('0xb1'),_0xe9f0('0xb2'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xb3'),_0xe9f0('0xb4'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xb5'),_0xe9f0('0xb6'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xb7'),_0xe9f0('0xb8'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xb9'),_0xe9f0('0xba'));_0x28fe47['field'](_0xe9f0('0xbb'),_0xe9f0('0xbc'));_0x28fe47[_0xe9f0('0x56')](_0xe9f0('0xbd'),_0xe9f0('0x41'));}if(_0x319380[_0xe9f0('0x31')])_0x28fe47[_0xe9f0('0x31')](_0x319380[_0xe9f0('0x31')]);if(_0x319380[_0xe9f0('0x2f')])_0x28fe47[_0xe9f0('0x2f')](_0x319380[_0xe9f0('0x2f')]);return db['sequelize'][_0xe9f0('0x4b')](_0x28fe47[_0xe9f0('0xa6')](),_0xab92b);})[_0xe9f0('0x21')](function(_0x2af661){if(_0x2af661[_0xe9f0('0x50')]>0x0)_0x3dd40d[_0xe9f0('0x54')](_0xe9f0('0xbe'),_[_0xe9f0('0x4a')](_0x2af661,'id'));return db['sequelize']['query'](_0x3dd40d[_0xe9f0('0xa6')](),_0xab92b)[_0xe9f0('0x21')](function(_0x4e7f22){var _0x583c4c=_[_0xe9f0('0xbf')](_0x4e7f22,_0xe9f0('0xc0'));var _0x37a080=[];_0x2af661[_0xe9f0('0x44')](function(_0x21d159){_0x37a080[_0xe9f0('0xc1')](updateChatInteraction(_0x21d159,_0xb18f13,_0x583c4c));});return BPromise['all'](_0x37a080);});});})[_0xe9f0('0x21')](function(_0x2f1584){_0x4ffc17['rows']=_0x2f1584;return _0x4ffc17;})['then'](respondWithFilteredResult(_0x30141e,_0x319380))[_0xe9f0('0x2b')](handleError(_0x30141e,null));};exports[_0xe9f0('0xc2')]=function(_0x4b668a,_0x17013a){var _0x63e374={'raw':![],'where':{'id':_0x4b668a['params']['id']}},_0x34eda8={};_0x34eda8[_0xe9f0('0x49')]=_[_0xe9f0('0x4c')](db[_0xe9f0('0xa9')][_0xe9f0('0x46')]);_0x34eda8['query']=_[_0xe9f0('0x4c')](_0x4b668a[_0xe9f0('0x4b')]);_0x34eda8[_0xe9f0('0x4d')]=_['intersection'](_0x34eda8['model'],_0x34eda8['query']);_0x63e374[_0xe9f0('0x4e')]=_['intersection'](_0x34eda8['model'],qs[_0xe9f0('0x4f')](_0x4b668a['query'][_0xe9f0('0x4f')]));_0x63e374[_0xe9f0('0x4e')]=_0x63e374[_0xe9f0('0x4e')][_0xe9f0('0x50')]?_0x63e374['attributes']:_0x34eda8[_0xe9f0('0x49')];if(_0x4b668a[_0xe9f0('0x4b')][_0xe9f0('0xc3')]){_0x63e374[_0xe9f0('0xc4')]=[{'all':!![]}];}_0x63e374=_[_0xe9f0('0x3d')]({},_0x63e374,_0x4b668a[_0xe9f0('0xc5')]);return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')](_0x63e374)[_0xe9f0('0x21')](handleEntityNotFound(_0x17013a,null))[_0xe9f0('0x21')](respondWithResult(_0x17013a,null))[_0xe9f0('0x2b')](handleError(_0x17013a,null));};exports[_0xe9f0('0xc6')]=function(_0x27c9f5,_0x56b64b){return db[_0xe9f0('0xa9')][_0xe9f0('0xc6')](_0x27c9f5['body'],{})['then'](respondWithResult(_0x56b64b,0xc9))[_0xe9f0('0x2b')](handleError(_0x56b64b,null));};exports[_0xe9f0('0x37')]=function(_0xef63f8,_0x1c0db4){if(_0xef63f8['body']['id']){delete _0xef63f8[_0xe9f0('0x7f')]['id'];}return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')]({'where':{'id':_0xef63f8['params']['id']}})[_0xe9f0('0x21')](handleEntityNotFound(_0x1c0db4,null))[_0xe9f0('0x21')](saveUpdates(_0xef63f8[_0xe9f0('0x7f')],null))[_0xe9f0('0x21')](respondWithResult(_0x1c0db4,null))[_0xe9f0('0x2b')](handleError(_0x1c0db4,null));};exports['destroy']=function(_0x5cbea8,_0x19f96b){return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')]({'where':{'id':_0x5cbea8[_0xe9f0('0xc7')]['id']}})[_0xe9f0('0x21')](handleEntityNotFound(_0x19f96b,null))[_0xe9f0('0x21')](removeEntity(_0x19f96b,null))[_0xe9f0('0x2b')](handleError(_0x19f96b,null));};exports[_0xe9f0('0xc8')]=function(_0x5ae9f1,_0x1aacfa){return db['ChatInteraction']['describe']()[_0xe9f0('0x21')](respondWithResult(_0x1aacfa,null))[_0xe9f0('0x2b')](handleError(_0x1aacfa,null));};exports[_0xe9f0('0xc9')]=function(_0x59396b,_0x564755){var _0x174e49=_0x59396b['params']['id'];var _0x3f2f29;var _0x18abe2;var _0x14e369;return db[_0xe9f0('0xa9')]['findOne']({'where':{'id':_0x174e49}})[_0xe9f0('0x21')](function(_0x5108d3){_0x3f2f29=_0x5108d3;return db[_0xe9f0('0xca')]['findOne']({'where':{'id':_0x5108d3['ChatWebsiteId']},'attributes':['id','vidaooApiKey',_0xe9f0('0xcb'),_0xe9f0('0xcc'),'vidaooNote',_0xe9f0('0xcd')],'raw':!![]});})[_0xe9f0('0x21')](function(_0x250bfe){if(_0x250bfe&&_0x250bfe[_0xe9f0('0xce')]&&_0x250bfe[_0xe9f0('0xcb')]){_0x18abe2=_0x250bfe;var _0x40306a={'interaction':{'id':_0x174e49},'agent':{'id':_0x59396b[_0xe9f0('0xa1')]['id'],'name':_0x59396b['user'][_0xe9f0('0x3a')],'fullname':_0x59396b[_0xe9f0('0xa1')][_0xe9f0('0x40')],'email':_0x59396b['user'][_0xe9f0('0xcf')]},'contact':_0x59396b[_0xe9f0('0x7f')][_0xe9f0('0x3e')],'account':_0x59396b['body'][_0xe9f0('0xd0')]};var _0x35456b={'rejectUnauthorized':![],'method':'POST','url':_0xe9f0('0xd1'),'headers':{'X-APIKEY':_0x250bfe['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x59396b[_0xe9f0('0xa1')][_0xe9f0('0xcf')]],'buttons':null,'topic':_0x18abe2[_0xe9f0('0xcc')],'note':_[_0xe9f0('0xd2')](_0x18abe2[_0xe9f0('0xd3')])?null:getMustacheRender(_0x18abe2[_0xe9f0('0xd3')],_0x40306a),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0xe9f0('0xd2')](_0x18abe2[_0xe9f0('0xcd')])){var _0xfe329a=getMustacheRender(_0x18abe2[_0xe9f0('0xcd')],_0x40306a);var _0x358cda=JSON[_0xe9f0('0x88')](_0xfe329a);_0x35456b[_0xe9f0('0x7f')]['metadata']=_0x358cda;}}catch(_0x5b9074){throw new db[(_0xe9f0('0x98'))][(_0xe9f0('0xd4'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x35456b);}else{throw new db[(_0xe9f0('0x98'))]['ValidationError'](_0xe9f0('0xd5'));}})[_0xe9f0('0x21')](function(_0x557b90){_0x14e369=_0x557b90;if(_0x14e369['id']){var _0x4aa320={'body':_0x14e369[_0xe9f0('0xd6')],'ChatWebsiteId':_0x18abe2['id'],'ChatInteractionId':_0x3f2f29['id'],'direction':_0xe9f0('0xd7'),'UserId':_0x59396b[_0xe9f0('0xa1')]['id']};return db['ChatMessage']['create'](_0x4aa320,{});}else{throw new db[(_0xe9f0('0x98'))][(_0xe9f0('0xd4'))](_0xe9f0('0xd8'));}})[_0xe9f0('0x21')](function(){return _0x3f2f29[_0xe9f0('0xd9')]({'vidaooSessionId':_0x14e369['id']});})[_0xe9f0('0x21')](respondWithResult(_0x564755,null))[_0xe9f0('0x2b')](handleError(_0x564755,null));};exports[_0xe9f0('0xda')]=function(_0x2f65a6,_0x45edd9){if(_0x2f65a6[_0xe9f0('0x7f')]['id']){delete _0x2f65a6[_0xe9f0('0x7f')]['id'];}return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')]({'where':{'id':_0x2f65a6['params']['id']},'include':[{'model':db[_0xe9f0('0xdb')],'as':'Contact'}]})[_0xe9f0('0x21')](handleEntityNotFound(_0x45edd9,null))[_0xe9f0('0x21')](saveUpdates(_0x2f65a6[_0xe9f0('0x7f')],null))[_0xe9f0('0x21')](respondWithResult(_0x45edd9,null))[_0xe9f0('0x2b')](handleError(_0x45edd9,null));};exports[_0xe9f0('0xdc')]=function(_0x297e2b,_0x114c65,_0x5df944){if(_0x297e2b[_0xe9f0('0x7f')]['id']){delete _0x297e2b[_0xe9f0('0x7f')]['id'];}return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')]({'where':{'id':_0x297e2b[_0xe9f0('0xc7')]['id']}})[_0xe9f0('0x21')](function(_0x1095d8){if(!_0x1095d8){logger[_0xe9f0('0x27')](_0xe9f0('0xdd'),_0xe9f0('0xdc'),0x194,_0xe9f0('0xde'));_0x114c65[_0xe9f0('0x2c')](0x194);}else{if(_0x1095d8[_0xe9f0('0x7e')]){throw new db[(_0xe9f0('0x98'))][(_0xe9f0('0xd4'))](_0xe9f0('0xdf'));}}return _0x1095d8;})['then'](function(_0x430b27){if(_0x430b27){return _0x430b27[_0xe9f0('0x37')]({'closed':_0x297e2b['body'][_0xe9f0('0xe0')],'disposition':_0x297e2b[_0xe9f0('0x7f')][_0xe9f0('0xe1')]})[_0xe9f0('0x21')](function(_0x5c34fa){return _0x5c34fa;});}})[_0xe9f0('0x21')](function(_0x3c80a4){return respondWithRpcPromise(_0xe9f0('0xe2'),_0xe9f0('0xdc'),_0x297e2b['body'],client9004);})[_0xe9f0('0x21')](respondWithResult(_0x114c65,null))['catch'](handleError(_0x114c65,null));};exports['attachmentUpload']=function(_0x14cad3,_0x4a98e8,_0x5cba30){_0x14cad3[_0xe9f0('0x7f')][_0xe9f0('0x3a')]=_0x14cad3[_0xe9f0('0xe3')][_0xe9f0('0xe4')];_0x14cad3[_0xe9f0('0x7f')]['basename']=_0x14cad3[_0xe9f0('0xe3')][_0xe9f0('0xe5')];_0x14cad3['body'][_0xe9f0('0x47')]=_0x14cad3[_0xe9f0('0xe3')][_0xe9f0('0xe6')];return db[_0xe9f0('0xe7')][_0xe9f0('0xc6')](_0x14cad3[_0xe9f0('0x7f')])[_0xe9f0('0x21')](respondWithResult(_0x4a98e8,0xc9))[_0xe9f0('0x2b')](handleError(_0x4a98e8,null));};exports[_0xe9f0('0xe8')]=function(_0x5b2c15,_0x2446b3,_0x3a3c7c){return db['ChatInteraction'][_0xe9f0('0xe9')]({'where':{'id':_0x5b2c15[_0xe9f0('0xc7')]['id']},'raw':!![]})[_0xe9f0('0x21')](handleEntityNotFound(_0x2446b3,null))[_0xe9f0('0x21')](function(_0x327d68){if(_0x327d68){if(_0x327d68['closed']){return _0x2446b3['status'](0x193)[_0xe9f0('0x35')]({'status':0x193,'message':_0xe9f0('0xea')});}return db[_0xe9f0('0xe7')]['findOne']({'where':{'id':_0x5b2c15[_0xe9f0('0x4b')][_0xe9f0('0xeb')]},'raw':!![]})[_0xe9f0('0x21')](handleEntityNotFound(_0x2446b3,null));}})[_0xe9f0('0x21')](function(_0x48ba5a){if(_0x48ba5a){var _0xac14ad=_0x48ba5a[_0xe9f0('0xec')]!==null;var _0x123951=path[_0xe9f0('0xed')](config[_0xe9f0('0xee')],_0xe9f0('0xef'));if(_0xac14ad){_0x123951=path[_0xe9f0('0xed')](_0x123951,_0xe9f0('0xf0'));}var _0x302279=path[_0xe9f0('0xed')](_0x123951,_0x48ba5a[_0xe9f0('0xf1')]);return _0x2446b3[_0xe9f0('0xf2')](_0x302279);}})['catch'](handleError(_0x2446b3,null));};exports[_0xe9f0('0xf3')]=function(_0x473602,_0x3cadbd){var _0x58fe38=null;var _0x1b37f7=null;var _0x4a3765=null;var _0x5964af=null;if(_0x473602[_0xe9f0('0x7f')]['id']){delete _0x473602['body']['id'];}if(_0x473602[_0xe9f0('0x7f')]['mailTranscript']){_0x5964af=path['join'](config[_0xe9f0('0xee')],_0xe9f0('0xf4'),util[_0xe9f0('0xf5')]('transcript-%s.txt',Date[_0xe9f0('0xf6')]()));_0x473602[_0xe9f0('0x7f')][_0xe9f0('0xf7')]=_0x5964af;}return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')]({'where':{'id':_0x473602[_0xe9f0('0xc7')]['id']},'include':[{'model':db[_0xe9f0('0xf8')],'as':_0xe9f0('0xf9'),'include':[{'model':db[_0xe9f0('0x7c')],'as':_0xe9f0('0x7c')}]}]})[_0xe9f0('0x21')](handleEntityNotFound(_0x3cadbd,null))[_0xe9f0('0x21')](saveUpdates(_0x473602[_0xe9f0('0x7f')],null))[_0xe9f0('0x21')](function(_0x56a50c){if(_0x56a50c){_0x58fe38=_0x56a50c;return db[_0xe9f0('0xca')][_0xe9f0('0x6e')]({'where':{'id':_0x58fe38[_0xe9f0('0x83')]}});}})[_0xe9f0('0x21')](function(_0x2136dc){if(_0x2136dc){_0x4a3765=_0x2136dc;return db[_0xe9f0('0xdb')][_0xe9f0('0x6e')]({'where':{'id':_0x58fe38[_0xe9f0('0x75')]}});}})['then'](function(_0x296efe){if(_0x296efe){_0x1b37f7=_0x296efe;if(_0x5964af){var _0x504875=null;for(var _0x46e2fe=0x1;_0x46e2fe<_0x58fe38[_0xe9f0('0xf9')][_0xe9f0('0x50')];++_0x46e2fe){_0x504875=_0x58fe38[_0xe9f0('0xf9')][_0x46e2fe];var _0x329aa8=_0x504875[_0xe9f0('0x7e')]?util[_0xe9f0('0xf5')]('%s%d',_0x4a3765[_0xe9f0('0xfa')],_0x504875['UserId']):_0xe9f0('0xfb');var _0x419fdf=_0x473602['body']['customer']||util[_0xe9f0('0xf5')](_0xe9f0('0xfc'),_0xe9f0('0xfd'),_0x504875[_0xe9f0('0x75')]);switch(_0x4a3765[_0xe9f0('0xfe')]){case _0xe9f0('0xff'):_0x329aa8=_0x504875[_0xe9f0('0x7e')]?util[_0xe9f0('0xf5')](_0xe9f0('0xfc'),_0x4a3765[_0xe9f0('0xfa')],_0x504875[_0xe9f0('0x7e')]):_0xe9f0('0xfb');break;case _0xe9f0('0x100'):_0x329aa8=_0x504875['UserId']?_0x504875[_0xe9f0('0x7c')]['alias']||_0x504875['User'][_0xe9f0('0x40')]:_0xe9f0('0xfb');break;case _0xe9f0('0x101'):_0x329aa8=_0x504875[_0xe9f0('0x7e')]?_0x504875['User'][_0xe9f0('0x40')]:_0xe9f0('0xfb');break;default:_0x329aa8=_0x504875[_0xe9f0('0x7e')]?util[_0xe9f0('0xf5')](_0xe9f0('0xfc'),_0x4a3765['agentAlias'],_0x504875[_0xe9f0('0x7e')]):_0xe9f0('0xfb');}var _0x5293e4=util[_0xe9f0('0xf5')]('[%s]\x20%s:\x20%s\x0a',moment(_0x504875[_0xe9f0('0x86')])[_0xe9f0('0xf5')](_0xe9f0('0x102')),_0x504875[_0xe9f0('0x103')]==='in'?_0x419fdf:_0x329aa8,_0x504875[_0xe9f0('0x7f')]);if(!_0x504875[_0xe9f0('0x104')]){fs[_0xe9f0('0x105')](_0x5964af,_0x5293e4);}}return db[_0xe9f0('0x106')][_0xe9f0('0xe9')]({'where':{'service':!![]},'include':[{'model':db[_0xe9f0('0x107')],'as':'Smtp','raw':!![]}]});}}})[_0xe9f0('0x21')](function(_0x52919a){if(_0x52919a&&_0x52919a[_0xe9f0('0x108')]&&_0x473602[_0xe9f0('0x7f')]){var _0x509bb7={'tls':{'rejectUnauthorized':![]}};if(_0x52919a['Smtp']['service']){_0x509bb7[_0xe9f0('0x109')]=_0x52919a[_0xe9f0('0x108')][_0xe9f0('0x109')];}else{_0x509bb7[_0xe9f0('0x10a')]=_0x52919a[_0xe9f0('0x108')][_0xe9f0('0x10a')];_0x509bb7[_0xe9f0('0x10b')]=_0x52919a[_0xe9f0('0x108')][_0xe9f0('0x10b')];_0x509bb7['secure']=_0x52919a['Smtp'][_0xe9f0('0x10c')];}if(_0x52919a['Smtp'][_0xe9f0('0x10d')]){_0x509bb7[_0xe9f0('0x10e')]={'user':_0x52919a[_0xe9f0('0x108')][_0xe9f0('0xa1')],'pass':_0x52919a[_0xe9f0('0x108')]['pass']};}return respondWithRpcPromise(_0xe9f0('0x10f'),_0xe9f0('0x110'),{'account':_0x509bb7,'message':{'from':util[_0xe9f0('0xf5')](_0xe9f0('0x111'),_0x52919a[_0xe9f0('0x3a')],_0x52919a['email']||_0x52919a[_0xe9f0('0x108')][_0xe9f0('0xa1')]),'to':_0x473602['body'][_0xe9f0('0x112')],'subject':_0xe9f0('0x113'),'text':util[_0xe9f0('0xf5')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x473602['body'][_0xe9f0('0x112')]),'attachments':[{'path':_0x5964af}]}})[_0xe9f0('0x21')](function(){return _0x58fe38;})[_0xe9f0('0x2b')](function(_0x4e4045){console['error'](_0x4e4045);});}else{return _0x58fe38;}})[_0xe9f0('0x21')](respondWithStatusCode(_0x3cadbd,0xc8))[_0xe9f0('0x2b')](handleError(_0x3cadbd,null));};exports[_0xe9f0('0x114')]=function(_0x4ee4f9,_0x3d4e42,_0x108042){return db[_0xe9f0('0xf8')][_0xe9f0('0x6e')]({'where':{'id':_0x4ee4f9[_0xe9f0('0xc7')]['id']}})[_0xe9f0('0x21')](handleEntityNotFound(_0x3d4e42,null))['then'](function(_0x218ee5){if(_0x218ee5){return _0x218ee5[_0xe9f0('0x114')](_0x4ee4f9[_0xe9f0('0x7f')][_0xe9f0('0x115')],_[_0xe9f0('0x116')](_0x4ee4f9[_0xe9f0('0x7f')],[_0xe9f0('0x115'),'id'])||{});}})[_0xe9f0('0x21')](respondWithResult(_0x3d4e42,null))[_0xe9f0('0x2b')](handleError(_0x3d4e42,null));};exports[_0xe9f0('0x117')]=function(_0x302ea1,_0x267c6d,_0x6f6f84){var _0xa4fd68={'raw':![],'where':{}};var _0x444df7={};var _0xd6a343={'count':0x0,'rows':[]};return db[_0xe9f0('0xa9')]['findOne']({'where':{'id':_0x302ea1['params']['id']}})['then'](handleEntityNotFound(_0x267c6d,null))[_0xe9f0('0x21')](function(_0xfa1b2){if(_0xfa1b2){_0x444df7['model']=_[_0xe9f0('0x4c')](db['ChatMessage'][_0xe9f0('0x46')]);_0x444df7[_0xe9f0('0x4b')]=_['keys'](_0x302ea1[_0xe9f0('0x4b')]);_0x444df7['filters']=_[_0xe9f0('0x118')](_0x444df7['model'],_0x444df7['query']);_0xa4fd68[_0xe9f0('0x4e')]=_[_0xe9f0('0x118')](_0x444df7['model'],qs[_0xe9f0('0x4f')](_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0x4f')]));_0xa4fd68[_0xe9f0('0x4e')]=_0xa4fd68[_0xe9f0('0x4e')][_0xe9f0('0x50')]?_0xa4fd68['attributes']:_0x444df7[_0xe9f0('0x49')];if(!_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0x51')](_0xe9f0('0x52'))){_0xa4fd68['limit']=qs[_0xe9f0('0x31')](_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0x31')]);_0xa4fd68[_0xe9f0('0x2f')]=qs[_0xe9f0('0x2f')](_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0x2f')]);}_0xa4fd68[_0xe9f0('0x53')]=qs[_0xe9f0('0x119')](_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0x119')]);_0xa4fd68[_0xe9f0('0x54')]=qs['filters'](_[_0xe9f0('0x55')](_0x302ea1[_0xe9f0('0x4b')],_0x444df7[_0xe9f0('0x4d')]));_0xa4fd68['where'][_0xe9f0('0xc0')]=_0xfa1b2['id'];if(_0x302ea1[_0xe9f0('0x4b')]['filter']){_0xa4fd68[_0xe9f0('0x54')]=_[_0xe9f0('0x3d')](_0xa4fd68[_0xe9f0('0x54')],{'$or':_[_0xe9f0('0x4a')](_0xa4fd68[_0xe9f0('0x4e')],function(_0x40b24c){var _0x71ea35={};_0x71ea35[_0x40b24c]={'$like':'%'+_0x302ea1['query']['filter']+'%'};return _0x71ea35;})});}if(_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0x87')]){var _0x2ecef9=_0x302ea1['query'][_0xe9f0('0x87')]['split'](',');var _0x52a628={};_0x52a628[_0x2ecef9[0x0]]={'$gte':moment(_0x2ecef9[0x1])[_0xe9f0('0xf5')](_0xe9f0('0x11a'))};_0xa4fd68['where']=_[_0xe9f0('0x3d')](_0xa4fd68[_0xe9f0('0x54')],_0x52a628);}_0xa4fd68=_[_0xe9f0('0x3d')]({},_0xa4fd68,_0x302ea1[_0xe9f0('0xc5')]);return db[_0xe9f0('0xf8')][_0xe9f0('0x32')]({'where':_0xa4fd68[_0xe9f0('0x54')]})[_0xe9f0('0x21')](function(_0x90b257){_0xd6a343[_0xe9f0('0x32')]=_0x90b257;if(_0x302ea1[_0xe9f0('0x4b')][_0xe9f0('0xc3')]){_0xa4fd68[_0xe9f0('0xc4')]=[{'all':!![]}];}return db[_0xe9f0('0xf8')][_0xe9f0('0x11b')](_0xa4fd68);})[_0xe9f0('0x21')](function(_0x48e968){_0xd6a343['rows']=_0x48e968;return _0xd6a343;});}})[_0xe9f0('0x21')](respondWithFilteredResult(_0x267c6d,_0xa4fd68))[_0xe9f0('0x2b')](handleError(_0x267c6d,null));};exports['getMyMessages']=function(_0xc39799,_0x5efe58,_0x216fe9){var _0x7cc418={'where':{}},_0x32805e={},_0x4a3225={'count':0x0,'rows':[]};return db[_0xe9f0('0xa9')]['findOne']({'where':{'id':_0xc39799[_0xe9f0('0xc7')]['id']}})[_0xe9f0('0x21')](handleEntityNotFound(_0x5efe58,null))[_0xe9f0('0x21')](function(_0x2391b7){if(_0x2391b7){_0x32805e[_0xe9f0('0x49')]=_[_0xe9f0('0x4c')](db[_0xe9f0('0xf8')]['rawAttributes']);_0x32805e['query']=_[_0xe9f0('0x4c')](_0xc39799[_0xe9f0('0x4b')]);_0x32805e['filters']=_[_0xe9f0('0x118')](_0x32805e['model'],_0x32805e[_0xe9f0('0x4b')]);_0x7cc418[_0xe9f0('0x4e')]=_[_0xe9f0('0x118')](_0x32805e[_0xe9f0('0x49')],qs['fields'](_0xc39799[_0xe9f0('0x4b')][_0xe9f0('0x4f')]));_0x7cc418[_0xe9f0('0x4e')]=_0x7cc418[_0xe9f0('0x4e')][_0xe9f0('0x50')]?_0x7cc418[_0xe9f0('0x4e')]:_0x32805e[_0xe9f0('0x49')];if(!_0xc39799[_0xe9f0('0x4b')]['hasOwnProperty']('nolimit')){_0x7cc418[_0xe9f0('0x31')]=qs[_0xe9f0('0x31')](_0xc39799[_0xe9f0('0x4b')][_0xe9f0('0x31')]);_0x7cc418['offset']=qs[_0xe9f0('0x2f')](_0xc39799[_0xe9f0('0x4b')][_0xe9f0('0x2f')]);}_0x7cc418['order']=qs[_0xe9f0('0x119')](_0xc39799[_0xe9f0('0x4b')]['sort']);_0x7cc418[_0xe9f0('0x54')]=qs[_0xe9f0('0x4d')](_[_0xe9f0('0x55')](_0xc39799[_0xe9f0('0x4b')],_0x32805e[_0xe9f0('0x4d')]));_0x7cc418[_0xe9f0('0x54')]['ChatInteractionId']=_0x2391b7['id'];if(_0xc39799[_0xe9f0('0x4b')][_0xe9f0('0x92')]){_0x7cc418[_0xe9f0('0x54')]=_[_0xe9f0('0x3d')](_0x7cc418['where'],{'$or':_[_0xe9f0('0x4a')](_0x7cc418['attributes'],function(_0x1ad83c){var _0x388dad={};_0x388dad[_0x1ad83c]={'$like':'%'+_0xc39799[_0xe9f0('0x4b')][_0xe9f0('0x92')]+'%'};return _0x388dad;})});}_0x7cc418[_0xe9f0('0x54')][_0xe9f0('0x104')]=![];if(_0xc39799[_0xe9f0('0x4b')]['id']){_0x7cc418[_0xe9f0('0x54')]['id']={'$gt':_0xc39799['query']['id']};}_0x7cc418=_[_0xe9f0('0x3d')]({},_0x7cc418,_0xc39799[_0xe9f0('0xc5')]);return db[_0xe9f0('0xf8')][_0xe9f0('0x32')]({'where':_0x7cc418[_0xe9f0('0x54')]})['then'](function(_0x198900){_0x4a3225[_0xe9f0('0x32')]=_0x198900;_0x7cc418['include']=[];if(_0xc39799[_0xe9f0('0x4b')][_0xe9f0('0x11c')]){_0x7cc418['include'][_0xe9f0('0xc1')]({'model':db[_0xe9f0('0x7c')],'as':'User','attributes':['id',_0xe9f0('0x40'),_0xe9f0('0x11d')]});}if(_0xc39799['query']['includeAll']){_0x7cc418['include']=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x7cc418);})[_0xe9f0('0x21')](function(_0x266c0f){_0x4a3225[_0xe9f0('0x11e')]=_0x266c0f;return _0x4a3225;});}})['then'](respondWithFilteredResult(_0x5efe58,_0x7cc418))[_0xe9f0('0x2b')](handleError(_0x5efe58,null));};exports[_0xe9f0('0x11f')]=function(_0x548542,_0xdd7ded,_0x16b798){return db[_0xe9f0('0xa9')][_0xe9f0('0x6e')]({'where':{'id':_0x548542['params']['id']}})['then'](handleEntityNotFound(_0xdd7ded,null))['then'](function(_0x2ebe48){if(_0x2ebe48){return _0x2ebe48['setTags'](_0x548542[_0xe9f0('0x7f')]['ids'],_['omit'](_0x548542[_0xe9f0('0x7f')],['ids','id'])||{})[_0xe9f0('0x120')](function(){return db[_0xe9f0('0x79')][_0xe9f0('0x11b')]({'attributes':['id',_0xe9f0('0x3a'),'color'],'where':{'id':_0x548542[_0xe9f0('0x7f')]['ids']}});})[_0xe9f0('0x21')](function(_0x107363){socket[_0xe9f0('0x121')]('chatInteractionTags:save',{'id':Number(_0x548542[_0xe9f0('0xc7')]['id']),'tags':_0x107363||[]});return{'id':Number(_0x548542[_0xe9f0('0xc7')]['id']),'tags':_0x107363||[]};});}})[_0xe9f0('0x21')](respondWithResult(_0xdd7ded,null))['catch'](handleError(_0xdd7ded,null));};exports['removeTags']=function(_0x257fc2,_0x58c366,_0x306620){return db['ChatInteraction'][_0xe9f0('0x6e')]({'where':{'id':_0x257fc2[_0xe9f0('0xc7')]['id']}})[_0xe9f0('0x21')](handleEntityNotFound(_0x58c366,null))[_0xe9f0('0x21')](function(_0x13e1bd){if(_0x13e1bd){return _0x13e1bd[_0xe9f0('0x122')](_0x257fc2[_0xe9f0('0x4b')]['ids']);}})[_0xe9f0('0x21')](respondWithStatusCode(_0x58c366,null))['catch'](handleError(_0x58c366,null));};exports[_0xe9f0('0xf2')]=function(_0x37d384,_0x35de8c){var _0x1da405=moment()['unix']()[_0xe9f0('0xa6')]();var _0x1e3715=path[_0xe9f0('0xed')](config[_0xe9f0('0xee')],_0xe9f0('0x123'),'files',_0xe9f0('0x124'));var _0x31a744=path[_0xe9f0('0xed')](config[_0xe9f0('0xee')],'server',_0xe9f0('0x125'),_0xe9f0('0x126'));var _0x1cc3b2=path[_0xe9f0('0xed')](_0x1e3715,_0x1da405);var _0x450684=util[_0xe9f0('0xf5')](_0xe9f0('0x127'),_0x37d384['params']['id'],_0x1da405);var _0x2163d8=path[_0xe9f0('0xed')](_0x1e3715,_0x450684);var _0x2dd6d1=[];_0x2dd6d1[_0xe9f0('0xc1')]({'model':db[_0xe9f0('0x7c')],'as':_0xe9f0('0x7c'),'attributes':['id',_0xe9f0('0x40')],'raw':!![]});_0x2dd6d1[_0xe9f0('0xc1')]({'model':db['CmContact'],'as':_0xe9f0('0x128'),'attributes':['id',_0xe9f0('0x129'),'lastName'],'raw':!![]});if(_0x37d384[_0xe9f0('0x4b')][_0xe9f0('0x126')]){_0x2dd6d1[_0xe9f0('0xc1')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x36e6b0=[{'model':db['ChatMessage'],'as':_0xe9f0('0xf9'),'attributes':['id',_0xe9f0('0x7f'),_0xe9f0('0x86'),_0xe9f0('0x103'),'secret',_0xe9f0('0x8d')],'include':_0x2dd6d1}];_0x36e6b0['push']({'model':db['ChatWebsite'],'as':_0xe9f0('0x12a'),'attributes':['id',_0xe9f0('0x3a')]});_0x36e6b0[_0xe9f0('0xc1')]({'model':db[_0xe9f0('0x7c')],'as':_0xe9f0('0x12b'),'attributes':['id',_0xe9f0('0x40')]});return db['ChatInteraction'][_0xe9f0('0x6e')]({'where':{'id':_0x37d384['params']['id']},'include':_0x36e6b0})[_0xe9f0('0x21')](handleEntityNotFound(_0x35de8c,null))[_0xe9f0('0x21')](function(_0x193cb2){if(_0x193cb2){var _0x3cb18a=_0x193cb2['get']({'plain':!![]});fs[_0xe9f0('0x12c')](_0x1cc3b2);var _0x3e49a0={'channel':'Chat','account':_0x3cb18a[_0xe9f0('0x12a')][_0xe9f0('0x3a')],'agent':_0x3cb18a[_0xe9f0('0x12b')]?_0x3cb18a['Owner']['fullname']:'N.A.','createdAt':moment(_0x3cb18a[_0xe9f0('0x86')])[_0xe9f0('0xf5')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe9f0('0xa6')](),'closedAt':_0x3cb18a[_0xe9f0('0xe0')]?moment(_0x3cb18a[_0xe9f0('0x12d')])[_0xe9f0('0xf5')](_0xe9f0('0x11a'))[_0xe9f0('0xa6')]():'','disposition':_0x3cb18a[_0xe9f0('0xe1')],'chatInfo':{'browser':_0x3cb18a[_0xe9f0('0x12e')],'os':_0x3cb18a['osName'],'referer':_0x3cb18a[_0xe9f0('0x12f')],'customerIp':_0x3cb18a[_0xe9f0('0x130')],'customerPort':_0x3cb18a[_0xe9f0('0x131')]?_0x3cb18a[_0xe9f0('0x131')]:_0xe9f0('0x132')},'messages':_(_0x3cb18a['Messages'])[_0xe9f0('0x133')]()['filter']({'secret':![]})[_0xe9f0('0x4a')](function(_0xa78163){if(_0xa78163[_0xe9f0('0xe7')]){var _0x3b422c=path[_0xe9f0('0xed')](_0x31a744,_0xa78163['Attachment'][_0xe9f0('0xf1')]);if(fs[_0xe9f0('0x134')](_0x3b422c)){fs['createReadStream'](_0x3b422c)[_0xe9f0('0x135')](fs[_0xe9f0('0x136')](path['join'](_0x1cc3b2,_0xa78163[_0xe9f0('0xe7')][_0xe9f0('0xf1')])));}}return{'date':moment(_0xa78163[_0xe9f0('0x86')])[_0xe9f0('0xf5')](_0xe9f0('0x11a'))[_0xe9f0('0xa6')](),'sender':_0xa78163[_0xe9f0('0x103')]===_0xe9f0('0xd7')?_0xa78163[_0xe9f0('0x7c')]?_0xa78163['User'][_0xe9f0('0x40')]:_0xe9f0('0xfb'):_0xa78163[_0xe9f0('0x128')]['firstName']+(_0xa78163['Contact'][_0xe9f0('0x137')]?'\x20'+_0xa78163[_0xe9f0('0x128')]['lastName']:''),'body':_0xa78163[_0xe9f0('0xe7')]?_0xa78163['Attachment']['basename']:_0xa78163['body'],'direction':_0xa78163['direction']===_0xe9f0('0xd7')?'A':'C','secret':_0xa78163[_0xe9f0('0x104')],'read':_0xa78163['read'],'attachment':_0xa78163[_0xe9f0('0xe7')]};})[_0xe9f0('0x72')]()};return ejs['renderFile'](path[_0xe9f0('0xed')](config[_0xe9f0('0xee')],'server','views',_0xe9f0('0x138')),{'interaction':_0x3e49a0})['then'](function(_0x27f0d9){var _0x296c10=path[_0xe9f0('0xed')](_0x1cc3b2,_0xe9f0('0x139')+_0x3cb18a['id']+'-'+_0x1da405+'.pdf');var _0x484e2d={'path':_0x296c10,'channel':_0xe9f0('0x13a'),'interactionId':_0x3cb18a['id']};return pdf[_0xe9f0('0x13b')](_0x27f0d9,_0x484e2d);})[_0xe9f0('0x21')](function(){return new BPromise(function(_0x1cf653,_0x571169){zipdir(_0x1cc3b2,{'saveTo':_0x2163d8},function(_0x1f25ea,_0x524711){if(_0x1f25ea)return _0x571169(_0x1f25ea);return _0x1cf653(_0x524711);});})[_0xe9f0('0x21')](function(){return new BPromise(function(_0xbb7e33,_0x2e2fb9){rimraf(_0x1cc3b2,function(_0x51d788){if(_0x51d788)_0x2e2fb9(_0x51d788);return _0xbb7e33();});});})[_0xe9f0('0x21')](function(){return _0x35de8c[_0xe9f0('0xf2')](_0x2163d8,_0x450684,function(_0x4da74e){if(_0x4da74e){console['log'](_0xe9f0('0x13c'),_0x4da74e);}else{fs['unlinkSync'](_0x2163d8);}});});});}else{return _0x35de8c['sendStatus'](0xc8);}})[_0xe9f0('0x2b')](handleError(_0x35de8c,null));};
\ No newline at end of file
index adf5ae0..07b7ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2280=['hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','update','getUsers','then','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty'];(function(_0x51bcb0,_0x536f31){var _0xd700c8=function(_0x453f0d){while(--_0x453f0d){_0x51bcb0['push'](_0x51bcb0['shift']());}};_0xd700c8(++_0x536f31);}(_0x2280,0xd2));var _0x0228=function(_0x3dfff5,_0x567b17){_0x3dfff5=_0x3dfff5-0x0;var _0x4ad39b=_0x2280[_0x3dfff5];return _0x4ad39b;};'use strict';var EventEmitter=require(_0x0228('0x0'));var ChatInteraction=require(_0x0228('0x1'))['db'][_0x0228('0x2')];var ChatMessage=require(_0x0228('0x1'))['db'][_0x0228('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x0228('0x4'),'afterDestroy':'remove'};function emitEvent(_0x24435b){return function(_0x306d10,_0xd7cde5,_0x22db5c){_0x306d10[_0x0228('0x5')]({'attributes':['id'],'raw':!![]})[_0x0228('0x6')](function(_0x4f7627){_0x306d10['setDataValue'](_0x0228('0x7'),_0x4f7627[_0x0228('0x8')](function(_0x23082d){return{'id':_0x23082d['id']};}));return ChatMessage[_0x0228('0x9')]({'where':{'ChatInteractionId':_0x306d10['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4cb344){_0x306d10['setDataValue'](_0x0228('0xa'),_0x4cb344[_0x0228('0xb')]);ChatInteractionEvents[_0x0228('0xc')](_0x24435b+':'+_0x306d10['id'],_0x306d10);ChatInteractionEvents['emit'](_0x24435b,_0x306d10);_0x22db5c(null);})['catch'](_0x22db5c(null));};}for(var e in events){if(events[_0x0228('0xd')](e)){var event=events[e];ChatInteraction[_0x0228('0xe')](e,emitEvent(event));}}module[_0x0228('0xf')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xb154=['emit','catch','hasOwnProperty','hook','exports','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','getUsers','Users','map','findAll','then','unreadMessages','length'];(function(_0x4d2a88,_0x3ec1e3){var _0x34c47f=function(_0x4454de){while(--_0x4454de){_0x4d2a88['push'](_0x4d2a88['shift']());}};_0x34c47f(++_0x3ec1e3);}(_0xb154,0xdd));var _0x4b15=function(_0x20e8cb,_0x1ebbc0){_0x20e8cb=_0x20e8cb-0x0;var _0x149085=_0xb154[_0x20e8cb];return _0x149085;};'use strict';var EventEmitter=require('events');var ChatInteraction=require('../../mysqldb')['db'][_0x4b15('0x0')];var ChatMessage=require('../../mysqldb')['db'][_0x4b15('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x4b15('0x2')](0x0);var events={'afterCreate':_0x4b15('0x3'),'afterUpdate':_0x4b15('0x4'),'afterDestroy':_0x4b15('0x5')};function emitEvent(_0x3d33cf){return function(_0x3166b5,_0x20b07b,_0x5f5839){_0x3166b5[_0x4b15('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x63b84d){_0x3166b5['setDataValue'](_0x4b15('0x7'),_0x63b84d[_0x4b15('0x8')](function(_0x5603cf){return{'id':_0x5603cf['id']};}));return ChatMessage[_0x4b15('0x9')]({'where':{'ChatInteractionId':_0x3166b5['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4b15('0xa')](function(_0x426ac2){_0x3166b5['setDataValue'](_0x4b15('0xb'),_0x426ac2[_0x4b15('0xc')]);ChatInteractionEvents[_0x4b15('0xd')](_0x3d33cf+':'+_0x3166b5['id'],_0x3166b5);ChatInteractionEvents[_0x4b15('0xd')](_0x3d33cf,_0x3166b5);_0x5f5839(null);})[_0x4b15('0xe')](_0x5f5839(null));};}for(var e in events){if(events[_0x4b15('0xf')](e)){var event=events[e];ChatInteraction[_0x4b15('0x10')](e,emitEvent(event));}}module[_0x4b15('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index 0fb9403..55f7191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9963=['request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','moment'];(function(_0x24e1ce,_0x4a7103){var _0x12b011=function(_0x3f9e07){while(--_0x3f9e07){_0x24e1ce['push'](_0x24e1ce['shift']());}};_0x12b011(++_0x4a7103);}(_0x9963,0x9b));var _0x3996=function(_0x549d16,_0x4d069a){_0x549d16=_0x549d16-0x0;var _0x344ccc=_0x9963[_0x549d16];return _0x344ccc;};'use strict';var _=require(_0x3996('0x0'));var util=require(_0x3996('0x1'));var logger=require(_0x3996('0x2'))(_0x3996('0x3'));var moment=require(_0x3996('0x4'));var BPromise=require('bluebird');var rp=require(_0x3996('0x5'));var fs=require('fs');var path=require(_0x3996('0x6'));var rimraf=require(_0x3996('0x7'));var config=require(_0x3996('0x8'));var attributes=require(_0x3996('0x9'));module[_0x3996('0xa')]=function(_0x27ed1c,_0x29f36d){return _0x27ed1c[_0x3996('0xb')](_0x3996('0xc'),attributes,{'tableName':_0x3996('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2c101d,_0x525a3,_0xffddd9){if(_0x2c101d[_0x3996('0xe')](_0x3996('0xf'))){_0x2c101d[_0x3996('0x10')]=moment()[_0x3996('0x11')](_0x3996('0x12'));}_0xffddd9(null,_0x2c101d);}},'charset':_0x3996('0x13'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8d08=['moment','path','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x8d08,0x9e));var _0x88d0=function(_0x5c4f6b,_0x2cdfce){_0x5c4f6b=_0x5c4f6b-0x0;var _0x104c4e=_0x8d08[_0x5c4f6b];return _0x104c4e;};'use strict';var _=require(_0x88d0('0x0'));var util=require(_0x88d0('0x1'));var logger=require(_0x88d0('0x2'))(_0x88d0('0x3'));var moment=require(_0x88d0('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x88d0('0x5'));var rimraf=require('rimraf');var config=require(_0x88d0('0x6'));var attributes=require(_0x88d0('0x7'));module[_0x88d0('0x8')]=function(_0x2e3769,_0x653c3f){return _0x2e3769[_0x88d0('0x9')](_0x88d0('0xa'),attributes,{'tableName':_0x88d0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5739bf,_0x4bc9aa,_0x11a012){if(_0x5739bf[_0x88d0('0xc')](_0x88d0('0xd'))){_0x5739bf[_0x88d0('0xe')]=moment()[_0x88d0('0xf')](_0x88d0('0x10'));}_0x11a012(null,_0x5739bf);}},'charset':'utf8mb4','collate':_0x88d0('0x11')});};
\ No newline at end of file
index 2aa5e44..94f246e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d2=['addTags','ids','omit','spread','AddTags','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','request','then','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','update','body','options','where','limit','UpdateChatInteraction','AddTagsToChatInteraction','ChatInteraction','find'];(function(_0x34fb71,_0x2e2652){var _0x5ae560=function(_0x438157){while(--_0x438157){_0x34fb71['push'](_0x34fb71['shift']());}};_0x5ae560(++_0x2e2652);}(_0x29d2,0xcd));var _0x229d=function(_0x870840,_0x5da3ce){_0x870840=_0x870840-0x0;var _0xa81d7d=_0x29d2[_0x870840];return _0xa81d7d;};'use strict';var _=require('lodash');var util=require(_0x229d('0x0'));var moment=require('moment');var BPromise=require(_0x229d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x229d('0x2'))['db'];var utils=require(_0x229d('0x3'));var logger=require(_0x229d('0x4'))(_0x229d('0x5'));var config=require(_0x229d('0x6'));var jayson=require(_0x229d('0x7'));var client=jayson[_0x229d('0x8')][_0x229d('0x9')]({'port':0x232a});config['redis']=_[_0x229d('0xa')](config[_0x229d('0xb')],{'host':_0x229d('0xc'),'port':0x18eb});var socket=require(_0x229d('0xd'))(new Redis(config[_0x229d('0xb')]));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x10a2b2,_0x57ee6e,_0x548fdb){return new BPromise(function(_0x23a329,_0x2cdfad){return client[_0x229d('0xe')](_0x10a2b2,_0x548fdb)[_0x229d('0xf')](function(_0x591b23){logger[_0x229d('0x10')](_0x229d('0x11'),_0x57ee6e,'request\x20sent');logger[_0x229d('0x12')](_0x229d('0x13'),_0x57ee6e,_0x229d('0x14'),JSON[_0x229d('0x15')](_0x591b23));if(_0x591b23['error']){if(_0x591b23['error'][_0x229d('0x16')]===0x1f4){logger[_0x229d('0x17')](_0x229d('0x11'),_0x57ee6e,_0x591b23[_0x229d('0x17')][_0x229d('0x18')]);return _0x2cdfad(_0x591b23[_0x229d('0x17')][_0x229d('0x18')]);}logger[_0x229d('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x57ee6e,_0x591b23[_0x229d('0x17')][_0x229d('0x18')]);return _0x23a329(_0x591b23[_0x229d('0x17')]['message']);}else{logger[_0x229d('0x10')](_0x229d('0x11'),_0x57ee6e,'request\x20sent');_0x23a329(_0x591b23['result'][_0x229d('0x18')]);}})[_0x229d('0x19')](function(_0x4872a4){logger[_0x229d('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x57ee6e,_0x4872a4);_0x2cdfad(_0x4872a4);});});}exports['UpdateChatInteraction']=function(_0x6e0319){var _0x29d92e=this;return new Promise(function(_0xa130c2,_0x1425f9){return db['ChatInteraction'][_0x229d('0x1a')](_0x6e0319[_0x229d('0x1b')],{'raw':_0x6e0319[_0x229d('0x1c')]?_0x6e0319[_0x229d('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6e0319['options']?_0x6e0319[_0x229d('0x1c')][_0x229d('0x1d')]||null:null,'attributes':_0x6e0319[_0x229d('0x1c')]?_0x6e0319['options']['attributes']||null:null,'limit':_0x6e0319['options']?_0x6e0319['options'][_0x229d('0x1e')]||null:null})[_0x229d('0xf')](function(_0x1f1199){logger[_0x229d('0x10')](_0x229d('0x1f'),_0x6e0319);logger[_0x229d('0x12')]('UpdateChatInteraction',_0x6e0319,JSON[_0x229d('0x15')](_0x1f1199));_0xa130c2(_0x1f1199);})[_0x229d('0x19')](function(_0x7a864d){logger[_0x229d('0x17')](_0x229d('0x1f'),_0x7a864d[_0x229d('0x18')],_0x6e0319);_0x1425f9(_0x29d92e[_0x229d('0x17')](0x1f4,_0x7a864d[_0x229d('0x18')]));});});};exports[_0x229d('0x20')]=function(_0x4081b5){return new Promise(function(_0x199766,_0x95541d){return db[_0x229d('0x21')][_0x229d('0x22')]({'where':_0x4081b5[_0x229d('0x1c')]?_0x4081b5['options'][_0x229d('0x1d')]||null:null})[_0x229d('0xf')](function(_0x1f0340){if(_0x1f0340){return _0x1f0340[_0x229d('0x23')](_0x4081b5[_0x229d('0x1b')][_0x229d('0x24')],_[_0x229d('0x25')](_0x4081b5[_0x229d('0x1b')],[_0x229d('0x24'),'id'])||{});}})[_0x229d('0x26')](function(_0x2940e7){logger[_0x229d('0x10')]('AddTags',_0x4081b5);logger[_0x229d('0x12')](_0x229d('0x27'),_0x4081b5,JSON[_0x229d('0x15')](_0x2940e7));_0x199766(_0x2940e7);})['catch'](function(_0x3e4736){logger[_0x229d('0x17')](_0x229d('0x27'),_0x3e4736[_0x229d('0x18')],_0x4081b5);_0x95541d(_this[_0x229d('0x17')](0x1f4,_0x3e4736[_0x229d('0x18')]));});});};
\ No newline at end of file
+var _0x00a3=['error','code','message','ChatInteraction,\x20%s,\x20%s','UpdateChatInteraction','update','body','options','raw','where','attributes','limit','debug','catch','ChatInteraction','find','addTags','ids','AddTags','stringify','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x6248f1,_0x37e964){var _0x729be7=function(_0x51f40d){while(--_0x51f40d){_0x6248f1['push'](_0x6248f1['shift']());}};_0x729be7(++_0x37e964);}(_0x00a3,0x92));var _0x300a=function(_0x5e858c,_0x3fab03){_0x5e858c=_0x5e858c-0x0;var _0x359f86=_0x00a3[_0x5e858c];return _0x359f86;};'use strict';var _=require(_0x300a('0x0'));var util=require(_0x300a('0x1'));var moment=require('moment');var BPromise=require(_0x300a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x300a('0x3'));var db=require(_0x300a('0x4'))['db'];var utils=require(_0x300a('0x5'));var logger=require(_0x300a('0x6'))(_0x300a('0x7'));var config=require(_0x300a('0x8'));var jayson=require(_0x300a('0x9'));var client=jayson[_0x300a('0xa')][_0x300a('0xb')]({'port':0x232a});config[_0x300a('0xc')]=_[_0x300a('0xd')](config[_0x300a('0xc')],{'host':_0x300a('0xe'),'port':0x18eb});var socket=require(_0x300a('0xf'))(new Redis(config[_0x300a('0xc')]));require('./chatInteraction.socket')[_0x300a('0x10')](socket);function respondWithRpcPromise(_0xce0a55,_0x390658,_0x439822){return new BPromise(function(_0x40920c,_0x4c40f8){return client[_0x300a('0x11')](_0xce0a55,_0x439822)[_0x300a('0x12')](function(_0x434850){logger[_0x300a('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x390658,_0x300a('0x14'));logger['debug'](_0x300a('0x15'),_0x390658,'request\x20sent',JSON['stringify'](_0x434850));if(_0x434850[_0x300a('0x16')]){if(_0x434850[_0x300a('0x16')][_0x300a('0x17')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x390658,_0x434850['error'][_0x300a('0x18')]);return _0x4c40f8(_0x434850['error'][_0x300a('0x18')]);}logger[_0x300a('0x16')](_0x300a('0x19'),_0x390658,_0x434850['error'][_0x300a('0x18')]);return _0x40920c(_0x434850[_0x300a('0x16')]['message']);}else{logger[_0x300a('0x13')](_0x300a('0x19'),_0x390658,_0x300a('0x14'));_0x40920c(_0x434850['result'][_0x300a('0x18')]);}})['catch'](function(_0x5ccb62){logger['error'](_0x300a('0x19'),_0x390658,_0x5ccb62);_0x4c40f8(_0x5ccb62);});});}exports[_0x300a('0x1a')]=function(_0x14266e){var _0x48e032=this;return new Promise(function(_0x4c61af,_0x3d7a97){return db['ChatInteraction'][_0x300a('0x1b')](_0x14266e[_0x300a('0x1c')],{'raw':_0x14266e['options']?_0x14266e[_0x300a('0x1d')][_0x300a('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14266e[_0x300a('0x1d')]?_0x14266e['options'][_0x300a('0x1f')]||null:null,'attributes':_0x14266e[_0x300a('0x1d')]?_0x14266e[_0x300a('0x1d')][_0x300a('0x20')]||null:null,'limit':_0x14266e[_0x300a('0x1d')]?_0x14266e[_0x300a('0x1d')][_0x300a('0x21')]||null:null})[_0x300a('0x12')](function(_0x3c8db1){logger[_0x300a('0x13')](_0x300a('0x1a'),_0x14266e);logger[_0x300a('0x22')](_0x300a('0x1a'),_0x14266e,JSON['stringify'](_0x3c8db1));_0x4c61af(_0x3c8db1);})[_0x300a('0x23')](function(_0x5f22ba){logger['error']('UpdateChatInteraction',_0x5f22ba[_0x300a('0x18')],_0x14266e);_0x3d7a97(_0x48e032[_0x300a('0x16')](0x1f4,_0x5f22ba[_0x300a('0x18')]));});});};exports['AddTagsToChatInteraction']=function(_0x3b08f9){return new Promise(function(_0x276775,_0x44d7b2){return db[_0x300a('0x24')][_0x300a('0x25')]({'where':_0x3b08f9['options']?_0x3b08f9[_0x300a('0x1d')]['where']||null:null})[_0x300a('0x12')](function(_0xa2f362){if(_0xa2f362){return _0xa2f362[_0x300a('0x26')](_0x3b08f9[_0x300a('0x1c')]['ids'],_['omit'](_0x3b08f9[_0x300a('0x1c')],[_0x300a('0x27'),'id'])||{});}})['spread'](function(_0x433f5d){logger[_0x300a('0x13')](_0x300a('0x28'),_0x3b08f9);logger[_0x300a('0x22')]('AddTags',_0x3b08f9,JSON[_0x300a('0x29')](_0x433f5d));_0x276775(_0x433f5d);})[_0x300a('0x23')](function(_0x460de6){logger[_0x300a('0x16')]('AddTags',_0x460de6[_0x300a('0x18')],_0x3b08f9);_0x44d7b2(_this['error'](0x1f4,_0x460de6[_0x300a('0x18')]));});});};
\ No newline at end of file
index 7f76ef6..b8a6f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a4=['remove','update','removeListener','register','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x1a2b00,_0x49c0d6){var _0x5c3cfb=function(_0x5ecd11){while(--_0x5ecd11){_0x1a2b00['push'](_0x1a2b00['shift']());}};_0x5c3cfb(++_0x49c0d6);}(_0x91a4,0xa6));var _0x491a=function(_0x1ae605,_0x4ba9cb){_0x1ae605=_0x1ae605-0x0;var _0x33f96e=_0x91a4[_0x1ae605];return _0x33f96e;};'use strict';var ChatInteractionEvents=require(_0x491a('0x0'));var events=[_0x491a('0x1'),_0x491a('0x2'),_0x491a('0x3')];function createListener(_0x15feec,_0x157185){return function(_0x18eaad){_0x157185['emit'](_0x15feec,_0x18eaad);};}function removeListener(_0x23a72c,_0xf35b27){return function(){ChatInteractionEvents[_0x491a('0x4')](_0x23a72c,_0xf35b27);};}exports[_0x491a('0x5')]=function(_0x1078bb){for(var _0x470ea4=0x0,_0x302d05=events[_0x491a('0x6')];_0x470ea4<_0x302d05;_0x470ea4++){var _0x29e6d7=events[_0x470ea4];var _0x60dbfe=createListener(_0x491a('0x7')+_0x29e6d7,_0x1078bb);ChatInteractionEvents['on'](_0x29e6d7,_0x60dbfe);}};
\ No newline at end of file
+var _0xd7d9=['update','emit','removeListener','register','chatInteraction:','./chatInteraction.events'];(function(_0x589da7,_0x1cd5bf){var _0x2fe330=function(_0x3c5189){while(--_0x3c5189){_0x589da7['push'](_0x589da7['shift']());}};_0x2fe330(++_0x1cd5bf);}(_0xd7d9,0x137));var _0x9d7d=function(_0x1f3d9c,_0x2dad03){_0x1f3d9c=_0x1f3d9c-0x0;var _0x719256=_0xd7d9[_0x1f3d9c];return _0x719256;};'use strict';var ChatInteractionEvents=require(_0x9d7d('0x0'));var events=['save','remove',_0x9d7d('0x1')];function createListener(_0x2938d9,_0x4aa2af){return function(_0x47074d){_0x4aa2af[_0x9d7d('0x2')](_0x2938d9,_0x47074d);};}function removeListener(_0x479f68,_0x580f63){return function(){ChatInteractionEvents[_0x9d7d('0x3')](_0x479f68,_0x580f63);};}exports[_0x9d7d('0x4')]=function(_0xcbf42){for(var _0x206463=0x0,_0x4553e4=events['length'];_0x206463<_0x4553e4;_0x206463++){var _0xe001a4=events[_0x206463];var _0x4df413=createListener(_0x9d7d('0x5')+_0xe001a4,_0xcbf42);ChatInteractionEvents['on'](_0xe001a4,_0x4df413);}};
\ No newline at end of file
index afa05ca..877411c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ad=['removeTags','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','post','create','root','server/files/attachments/','%s-%s','now','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy'];(function(_0x582965,_0x58da5a){var _0x361185=function(_0x416939){while(--_0x416939){_0x582965['push'](_0x582965['shift']());}};_0x361185(++_0x58da5a);}(_0x48ad,0x127));var _0xd48a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x48ad[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd48a('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd48a('0x1'));var router=express['Router']();var fs_extra=require(_0xd48a('0x2'));var auth=require(_0xd48a('0x3'));var interaction=require(_0xd48a('0x4'));var config=require(_0xd48a('0x5'));var controller=require(_0xd48a('0x6'));router[_0xd48a('0x7')]('/',auth[_0xd48a('0x8')](),controller['index']);router['get'](_0xd48a('0x9'),auth[_0xd48a('0x8')](),controller[_0xd48a('0xa')]);router['get'](_0xd48a('0xb'),auth[_0xd48a('0xc')](),controller[_0xd48a('0xd')]);router[_0xd48a('0x7')](_0xd48a('0xe'),auth[_0xd48a('0xc')](),controller[_0xd48a('0xf')]);router[_0xd48a('0x7')](_0xd48a('0x10'),auth['isAuthenticated'](),controller[_0xd48a('0x11')]);router[_0xd48a('0x7')](_0xd48a('0x12'),auth[_0xd48a('0xc')](),controller[_0xd48a('0x13')]);router['get'](_0xd48a('0x14'),auth[_0xd48a('0x8')](),controller['download']);router[_0xd48a('0x15')]('/',auth[_0xd48a('0x8')](),controller[_0xd48a('0x16')]);router[_0xd48a('0x15')]('/:id/vidaoo',auth['isAuthenticated'](),controller['createVidaooSession']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x34cc64,_0x3446ab,_0x397604){_0x397604(null,path['join'](config[_0xd48a('0x17')],_0xd48a('0x18')));},'filename':function(_0x38a4f2,_0x41b479,_0x5340bb){_0x5340bb(null,util['format'](_0xd48a('0x19'),Date[_0xd48a('0x1a')](),_0x41b479['originalname'][_0xd48a('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xd48a('0x15')](_0xd48a('0x1c'),upload[_0xd48a('0x1d')](_0xd48a('0x1e')),controller[_0xd48a('0x1f')]);router['post'](_0xd48a('0x10'),auth[_0xd48a('0xc')](),controller['addMessage']);router[_0xd48a('0x15')](_0xd48a('0x20'),auth[_0xd48a('0x8')](),interaction[_0xd48a('0x21')](_0xd48a('0x22'),_0xd48a('0x23')),controller[_0xd48a('0x24')]);router[_0xd48a('0x25')]('/:id',auth[_0xd48a('0x8')](),interaction[_0xd48a('0x21')]('chat',_0xd48a('0x26')),controller[_0xd48a('0x27')]);router[_0xd48a('0x25')](_0xd48a('0x28'),controller['customUpdate']);router['put'](_0xd48a('0x29'),auth[_0xd48a('0xc')](),controller[_0xd48a('0x2a')]);router[_0xd48a('0x25')](_0xd48a('0x2b'),controller[_0xd48a('0x2c')]);router[_0xd48a('0x2d')](_0xd48a('0xb'),auth[_0xd48a('0x8')](),interaction[_0xd48a('0x21')]('chat',_0xd48a('0x2e')),controller[_0xd48a('0x2f')]);router[_0xd48a('0x2d')](_0xd48a('0x20'),auth[_0xd48a('0x8')](),controller[_0xd48a('0x30')]);module['exports']=router;
\ No newline at end of file
+var _0x1347=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','addMessage','/:id/tags','tracked','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','/:id/abandon','abandon','/:id/close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout'];(function(_0x21af3a,_0x386e1d){var _0x268a49=function(_0x41a650){while(--_0x41a650){_0x21af3a['push'](_0x21af3a['shift']());}};_0x268a49(++_0x386e1d);}(_0x1347,0x19d));var _0x7134=function(_0x24cf7f,_0xcda231){_0x24cf7f=_0x24cf7f-0x0;var _0x4c6742=_0x1347[_0x24cf7f];return _0x4c6742;};'use strict';var multer=require(_0x7134('0x0'));var util=require('util');var path=require(_0x7134('0x1'));var timeout=require(_0x7134('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7134('0x3'));var auth=require(_0x7134('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7134('0x5'));var controller=require('./chatInteraction.controller');router[_0x7134('0x6')]('/',auth[_0x7134('0x7')](),controller[_0x7134('0x8')]);router[_0x7134('0x6')](_0x7134('0x9'),auth[_0x7134('0x7')](),controller['describe']);router['get'](_0x7134('0xa'),auth['isChatInteractionAuthorized'](),controller[_0x7134('0xb')]);router[_0x7134('0x6')](_0x7134('0xc'),auth[_0x7134('0xd')](),controller[_0x7134('0xe')]);router[_0x7134('0x6')](_0x7134('0xf'),auth[_0x7134('0x7')](),controller[_0x7134('0x10')]);router['get'](_0x7134('0x11'),auth[_0x7134('0xd')](),controller['getMyMessages']);router[_0x7134('0x6')](_0x7134('0x12'),auth['isAuthenticated'](),controller[_0x7134('0x13')]);router[_0x7134('0x14')]('/',auth[_0x7134('0x7')](),controller[_0x7134('0x15')]);router[_0x7134('0x14')](_0x7134('0x16'),auth[_0x7134('0x7')](),controller[_0x7134('0x17')]);var upload=multer({'storage':multer[_0x7134('0x18')]({'destination':function(_0x167755,_0x2dd767,_0x296278){_0x296278(null,path['join'](config[_0x7134('0x19')],_0x7134('0x1a')));},'filename':function(_0x1444d0,_0x14f682,_0x53d01e){_0x53d01e(null,util[_0x7134('0x1b')](_0x7134('0x1c'),Date[_0x7134('0x1d')](),_0x14f682[_0x7134('0x1e')][_0x7134('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x7134('0x20'),upload[_0x7134('0x21')](_0x7134('0x22')),controller['attachmentUpload']);router['post'](_0x7134('0xf'),auth[_0x7134('0xd')](),controller[_0x7134('0x23')]);router[_0x7134('0x14')](_0x7134('0x24'),auth[_0x7134('0x7')](),interaction[_0x7134('0x25')]('chat',_0x7134('0x26')),controller[_0x7134('0x27')]);router[_0x7134('0x28')](_0x7134('0xa'),auth[_0x7134('0x7')](),interaction['tracked']('chat',_0x7134('0x29')),controller[_0x7134('0x2a')]);router[_0x7134('0x28')](_0x7134('0x2b'),controller['customUpdate']);router[_0x7134('0x28')](_0x7134('0x2c'),auth[_0x7134('0xd')](),controller[_0x7134('0x2d')]);router[_0x7134('0x28')](_0x7134('0x2e'),controller['close']);router[_0x7134('0x2f')](_0x7134('0xa'),auth[_0x7134('0x7')](),interaction[_0x7134('0x25')]('chat',_0x7134('0x30')),controller[_0x7134('0x31')]);router[_0x7134('0x2f')](_0x7134('0x24'),auth['isAuthenticated'](),controller[_0x7134('0x32')]);module[_0x7134('0x33')]=router;
\ No newline at end of file
index dfde26d..45eb5b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42bc=['sequelize','TEXT','medium','BOOLEAN'];(function(_0x1e3c02,_0x5c07a2){var _0x4d26d7=function(_0x367ed9){while(--_0x367ed9){_0x1e3c02['push'](_0x1e3c02['shift']());}};_0x4d26d7(++_0x5c07a2);}(_0x42bc,0x164));var _0xc42b=function(_0x599dc3,_0x406b27){_0x599dc3=_0x599dc3-0x0;var _0x13c968=_0x42bc[_0x599dc3];return _0x13c968;};'use strict';var Sequelize=require(_0xc42b('0x0'));module['exports']={'body':{'type':Sequelize[_0xc42b('0x1')](_0xc42b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc42b('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x5e05=['sequelize','TEXT','medium','BOOLEAN','INTEGER'];(function(_0x3f83dc,_0x5c8047){var _0x3876b8=function(_0x1f8423){while(--_0x1f8423){_0x3f83dc['push'](_0x3f83dc['shift']());}};_0x3876b8(++_0x5c8047);}(_0x5e05,0x118));var _0x55e0=function(_0x32c83b,_0x44c869){_0x32c83b=_0x32c83b-0x0;var _0x223be8=_0x5e05[_0x32c83b];return _0x223be8;};'use strict';var Sequelize=require(_0x55e0('0x0'));module['exports']={'body':{'type':Sequelize[_0x55e0('0x1')](_0x55e0('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x55e0('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x55e0('0x4')]}};
\ No newline at end of file
index e7e706f..5e2732f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1969=['localhost','socket.io-emitter','register','status','end','undefined','count','offset','limit','set','Content-Range','json','save','update','then','sendStatus','error','stack','name','index','map','ChatInternalMessage','type','key','model','query','keys','fields','length','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','rows','show','params','rawAttributes','filters','includeAll','find','catch','create','body','destroy','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','getUsers','User','findAll','agent','admin','user','fullname','role','userpic','internal','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','-createdAt','all','eml-format','rimraf','zip-dir','request-promise','util','path','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','../../config/license/util','redis'];(function(_0x4b5413,_0x22a962){var _0x5224d9=function(_0x2607b8){while(--_0x2607b8){_0x4b5413['push'](_0x4b5413['shift']());}};_0x5224d9(++_0x22a962);}(_0x1969,0x19f));var _0x9196=function(_0x804fac,_0xed2b96){_0x804fac=_0x804fac-0x0;var _0x5bc92d=_0x1969[_0x804fac];return _0x5bc92d;};'use strict';var emlformat=require(_0x9196('0x0'));var rimraf=require(_0x9196('0x1'));var zipdir=require(_0x9196('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9196('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9196('0x4'));var path=require(_0x9196('0x5'));var sox=require(_0x9196('0x6'));var csv=require(_0x9196('0x7'));var ejs=require(_0x9196('0x8'));var fs=require('fs');var fs_extra=require(_0x9196('0x9'));var _=require(_0x9196('0xa'));var squel=require(_0x9196('0xb'));var crypto=require('crypto');var jsforce=require(_0x9196('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9196('0xd'));var Redis=require(_0x9196('0xe'));var authService=require(_0x9196('0xf'));var qs=require(_0x9196('0x10'));var as=require(_0x9196('0x11'));var hardwareService=require(_0x9196('0x12'));var logger=require(_0x9196('0x13'))(_0x9196('0x14'));var utils=require(_0x9196('0x15'));var config=require(_0x9196('0x16'));var licenseUtil=require(_0x9196('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x9196('0x18')],{'host':_0x9196('0x19'),'port':0x18eb});var socket=require(_0x9196('0x1a'))(new Redis(config['redis']));require('./chatInternalMessage.socket')[_0x9196('0x1b')](socket);function respondWithStatusCode(_0x414818,_0x3b48b5){_0x3b48b5=_0x3b48b5||0xcc;return function(_0x31c409){if(_0x31c409){return _0x414818['sendStatus'](_0x3b48b5);}return _0x414818[_0x9196('0x1c')](_0x3b48b5)[_0x9196('0x1d')]();};}function respondWithResult(_0x22189d,_0xa9c20f){_0xa9c20f=_0xa9c20f||0xc8;return function(_0x1d09f1){if(_0x1d09f1){return _0x22189d[_0x9196('0x1c')](_0xa9c20f)['json'](_0x1d09f1);}};}function respondWithFilteredResult(_0x40fcd2,_0x8d6f5d){return function(_0x43c839){if(_0x43c839){var _0xdb349=typeof _0x8d6f5d['offset']==='undefined'&&typeof _0x8d6f5d['limit']===_0x9196('0x1e');var _0x3893f8=_0x43c839[_0x9196('0x1f')];var _0x29fef1=_0xdb349?0x0:_0x8d6f5d['offset'];var _0x281d0f=_0xdb349?_0x43c839[_0x9196('0x1f')]:_0x8d6f5d[_0x9196('0x20')]+_0x8d6f5d[_0x9196('0x21')];var _0x36aba5;if(_0x281d0f>=_0x3893f8){_0x281d0f=_0x3893f8;_0x36aba5=0xc8;}else{_0x36aba5=0xce;}_0x40fcd2[_0x9196('0x1c')](_0x36aba5);return _0x40fcd2[_0x9196('0x22')](_0x9196('0x23'),_0x29fef1+'-'+_0x281d0f+'/'+_0x3893f8)[_0x9196('0x24')](_0x43c839);}return null;};}function patchUpdates(_0x42c109){return function(_0x181cc2){try{jsonpatch['apply'](_0x181cc2,_0x42c109,!![]);}catch(_0x4728f5){return BPromise['reject'](_0x4728f5);}return _0x181cc2[_0x9196('0x25')]();};}function saveUpdates(_0x1398d3,_0x2f2df1){return function(_0x31d51a){if(_0x31d51a){return _0x31d51a[_0x9196('0x26')](_0x1398d3)[_0x9196('0x27')](function(_0x1ec469){return _0x1ec469;});}return null;};}function removeEntity(_0x48d0ff,_0x32bfc9){return function(_0x242238){if(_0x242238){return _0x242238['destroy']()[_0x9196('0x27')](function(){_0x48d0ff[_0x9196('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f1f11,_0x293e4f){return function(_0x4f96d8){if(!_0x4f96d8){_0x4f1f11[_0x9196('0x28')](0x194);}return _0x4f96d8;};}function handleError(_0x3ed7e3,_0x3c2b5f){_0x3c2b5f=_0x3c2b5f||0x1f4;return function(_0x1fe08f){logger[_0x9196('0x29')](_0x1fe08f[_0x9196('0x2a')]);if(_0x1fe08f[_0x9196('0x2b')]){delete _0x1fe08f['name'];}_0x3ed7e3[_0x9196('0x1c')](_0x3c2b5f)['send'](_0x1fe08f);};}exports[_0x9196('0x2c')]=function(_0x183a72,_0x33e4d1){var _0x46e8e5={},_0x4610e3={},_0x270a63={'count':0x0,'rows':[]};var _0x4e98c7=_[_0x9196('0x2d')](db[_0x9196('0x2e')]['rawAttributes'],function(_0x31ca9a){return{'name':_0x31ca9a['fieldName'],'type':_0x31ca9a[_0x9196('0x2f')][_0x9196('0x30')]};});_0x4610e3[_0x9196('0x31')]=_[_0x9196('0x2d')](_0x4e98c7,'name');_0x4610e3[_0x9196('0x32')]=_[_0x9196('0x33')](_0x183a72['query']);_0x4610e3['filters']=_['intersection'](_0x4610e3[_0x9196('0x31')],_0x4610e3['query']);_0x46e8e5['attributes']=_['intersection'](_0x4610e3[_0x9196('0x31')],qs[_0x9196('0x34')](_0x183a72[_0x9196('0x32')]['fields']));_0x46e8e5['attributes']=_0x46e8e5['attributes'][_0x9196('0x35')]?_0x46e8e5[_0x9196('0x36')]:_0x4610e3['model'];if(!_0x183a72['query'][_0x9196('0x37')](_0x9196('0x38'))){_0x46e8e5[_0x9196('0x21')]=qs[_0x9196('0x21')](_0x183a72[_0x9196('0x32')]['limit']);_0x46e8e5[_0x9196('0x20')]=qs[_0x9196('0x20')](_0x183a72[_0x9196('0x32')][_0x9196('0x20')]);}_0x46e8e5[_0x9196('0x39')]=qs[_0x9196('0x3a')](_0x183a72['query']['sort']);_0x46e8e5['where']=qs['filters'](_[_0x9196('0x3b')](_0x183a72[_0x9196('0x32')],_0x4610e3['filters']),_0x4e98c7);if(_0x183a72[_0x9196('0x32')][_0x9196('0x3c')]){_0x46e8e5[_0x9196('0x3d')]=_[_0x9196('0x3e')](_0x46e8e5['where'],{'$or':_[_0x9196('0x2d')](_0x4e98c7,function(_0xd491b5){if(_0xd491b5[_0x9196('0x2f')]!==_0x9196('0x3f')){var _0x460377={};_0x460377[_0xd491b5[_0x9196('0x2b')]]={'$like':'%'+_0x183a72[_0x9196('0x32')][_0x9196('0x3c')]+'%'};return _0x460377;}})});}_0x46e8e5=_[_0x9196('0x3e')]({},_0x46e8e5,_0x183a72[_0x9196('0x40')]);var _0xfbf23b={'where':_0x46e8e5[_0x9196('0x3d')]};return db[_0x9196('0x2e')][_0x9196('0x1f')](_0xfbf23b)['then'](function(_0x4054a1){_0x270a63[_0x9196('0x1f')]=_0x4054a1;if(_0x183a72[_0x9196('0x32')]['includeAll']){_0x46e8e5[_0x9196('0x41')]=[{'all':!![]}];}return db[_0x9196('0x2e')]['findAll'](_0x46e8e5);})['then'](function(_0x25bdc8){_0x270a63[_0x9196('0x42')]=_0x25bdc8;return _0x270a63;})[_0x9196('0x27')](respondWithFilteredResult(_0x33e4d1,_0x46e8e5))['catch'](handleError(_0x33e4d1,null));};exports[_0x9196('0x43')]=function(_0x10570d,_0x31cb69){var _0x4e5998={'raw':!![],'where':{'id':_0x10570d[_0x9196('0x44')]['id']}},_0x51f5eb={};_0x51f5eb[_0x9196('0x31')]=_[_0x9196('0x33')](db[_0x9196('0x2e')][_0x9196('0x45')]);_0x51f5eb[_0x9196('0x32')]=_[_0x9196('0x33')](_0x10570d[_0x9196('0x32')]);_0x51f5eb[_0x9196('0x46')]=_['intersection'](_0x51f5eb['model'],_0x51f5eb[_0x9196('0x32')]);_0x4e5998[_0x9196('0x36')]=_['intersection'](_0x51f5eb[_0x9196('0x31')],qs[_0x9196('0x34')](_0x10570d[_0x9196('0x32')][_0x9196('0x34')]));_0x4e5998[_0x9196('0x36')]=_0x4e5998['attributes'][_0x9196('0x35')]?_0x4e5998[_0x9196('0x36')]:_0x51f5eb[_0x9196('0x31')];if(_0x10570d[_0x9196('0x32')][_0x9196('0x47')]){_0x4e5998[_0x9196('0x41')]=[{'all':!![]}];}_0x4e5998=_[_0x9196('0x3e')]({},_0x4e5998,_0x10570d[_0x9196('0x40')]);return db[_0x9196('0x2e')][_0x9196('0x48')](_0x4e5998)[_0x9196('0x27')](handleEntityNotFound(_0x31cb69,null))[_0x9196('0x27')](respondWithResult(_0x31cb69,null))[_0x9196('0x49')](handleError(_0x31cb69,null));};exports[_0x9196('0x4a')]=function(_0x4d5a66,_0x10717c){return db['ChatInternalMessage']['create'](_0x4d5a66['body'],{})[_0x9196('0x27')](respondWithResult(_0x10717c,0xc9))[_0x9196('0x49')](handleError(_0x10717c,null));};exports['update']=function(_0x2fb63e,_0x566e3b){if(_0x2fb63e[_0x9196('0x4b')]['id']){delete _0x2fb63e[_0x9196('0x4b')]['id'];}return db[_0x9196('0x2e')][_0x9196('0x48')]({'where':{'id':_0x2fb63e['params']['id']}})[_0x9196('0x27')](handleEntityNotFound(_0x566e3b,null))[_0x9196('0x27')](saveUpdates(_0x2fb63e[_0x9196('0x4b')],null))[_0x9196('0x27')](respondWithResult(_0x566e3b,null))[_0x9196('0x49')](handleError(_0x566e3b,null));};exports[_0x9196('0x4c')]=function(_0x4ee8a5,_0x12d22c){return db[_0x9196('0x2e')][_0x9196('0x48')]({'where':{'id':_0x4ee8a5['params']['id']}})['then'](handleEntityNotFound(_0x12d22c,null))[_0x9196('0x27')](removeEntity(_0x12d22c,null))[_0x9196('0x49')](handleError(_0x12d22c,null));};exports[_0x9196('0x4d')]=function(_0xb62cea,_0x1dd00d){return db['ChatInternalMessage'][_0x9196('0x4d')]()[_0x9196('0x27')](respondWithResult(_0x1dd00d,null))['catch'](handleError(_0x1dd00d,null));};function wrapUser(_0x203e94){return function(_0x34305a){var _0x1db0db=_0x203e94[_0x9196('0x4e')]({'plain':!![]});_0x1db0db[_0x9196('0x4f')]=[];if(_0x34305a){_0x1db0db[_0x9196('0x50')]=_0x34305a[_0x9196('0x51')];_0x1db0db[_0x9196('0x52')]=_0x34305a;}else{_0x1db0db[_0x9196('0x50')]=moment(0x0)[_0x9196('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x1db0db[_0x9196('0x52')]={};}return _0x1db0db;};}exports[_0x9196('0x54')]=function(_0x56a505,_0x4b0f78,_0x423d69){var _0x2ce692=[];return db[_0x9196('0x55')][_0x9196('0x56')]({'where':{'role':[_0x9196('0x57'),_0x9196('0x58'),_0x9196('0x59')]},'attributes':['id',_0x9196('0x5a'),_0x9196('0x2b'),_0x9196('0x5b'),_0x9196('0x5c'),_0x9196('0x5d'),'online',_0x9196('0x5e'),_0x9196('0x5f'),_0x9196('0x60')],'order':qs[_0x9196('0x3a')]('-online'),'include':[{'model':db[_0x9196('0x61')],'as':_0x9196('0x62'),'attributes':['id',_0x9196('0x2b'),_0x9196('0x2f')],'through':{'attributes':[]}}]})[_0x9196('0x27')](function(_0x11fb7b){if(_0x11fb7b){var _0x3a3c0c=_0x56a505[_0x9196('0x59')][_0x9196('0x4e')]({'plain':!![]});if(!_0x3a3c0c)throw new Error(_0x9196('0x63'));if(_0x3a3c0c[_0x9196('0x5b')]===_0x9196('0x59')){return db[_0x9196('0x64')][_0x9196('0x48')]({'where':{'name':'Agents','userProfileId':_0x3a3c0c[_0x9196('0x65')]},'raw':!![]})['then'](function(_0x4df5d5){if(_0x4df5d5){if(_0x4df5d5[_0x9196('0x66')]===0x0){return db[_0x9196('0x67')][_0x9196('0x56')]({'where':{'sectionId':_0x4df5d5['id']},'raw':!![]})[_0x9196('0x27')](function(_0x3f340a){var _0x201a61=[];if(_[_0x9196('0x68')](_0x3f340a)){_0x201a61=_[_0x9196('0x3c')](_0x11fb7b,function(_0x351f72){if(_0x351f72['role']!==_0x9196('0x57')){return _0x351f72;}});return _0x201a61;}else{for(var _0x8fa085=0x0;_0x8fa085<_0x11fb7b[_0x9196('0x35')];_0x8fa085++){var _0x4290b0=_0x11fb7b[_0x8fa085];if(_0x4290b0[_0x9196('0x5b')]===_0x9196('0x57')){var _0xfb3785=_[_0x9196('0x48')](_0x3f340a,function(_0xcaa7f9){return _0xcaa7f9[_0x9196('0x69')]===_0x4290b0['id'];});if(_0xfb3785)_0x201a61[_0x9196('0x6a')](_0x4290b0);}else{_0x201a61['push'](_0x4290b0);}}return _0x201a61;}});}else{return _0x11fb7b;}}else{var _0x277438=_[_0x9196('0x3c')](_0x11fb7b,function(_0x4f797a){if(_0x4f797a['role']!==_0x9196('0x57')){return _0x4f797a;}});return _0x277438;}});}else{return _0x11fb7b;}}})[_0x9196('0x27')](function(_0x432013){var _0x4564af=[];if(_0x432013){_0x2ce692=_0x432013;for(var _0x6b529e=0x0;_0x6b529e<_0x432013['length'];_0x6b529e+=0x1){_0x2ce692[_0x6b529e][_0x9196('0x4f')]=[];_0x4564af['push'](db[_0x9196('0x2e')][_0x9196('0x48')]({'where':{'FromId':[_0x56a505[_0x9196('0x59')]['id'],_0x432013[_0x6b529e]['id']],'ToId':[_0x56a505['user']['id'],_0x432013[_0x6b529e]['id']],'ChatGroupId':null},'attributes':['id',_0x9196('0x51'),_0x9196('0x6b'),'ToId','read',_0x9196('0x4b')],'order':qs[_0x9196('0x3a')](_0x9196('0x6c')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x432013[_0x6b529e])));}return BPromise[_0x9196('0x6d')](_0x4564af);}return[];})[_0x9196('0x27')](function(_0x17d115){return{'rows':_0x17d115,'count':_0x17d115['length']};})[_0x9196('0x27')](respondWithResult(_0x4b0f78,null))[_0x9196('0x49')](handleError(_0x4b0f78,null));};
\ No newline at end of file
+var _0x605b=['squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','ChatInternalMessage','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','where','pick','filter','type','VIRTUAL','include','rows','show','params','includeAll','options','catch','create','body','find','describe','messages','lastMessageAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','admin','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','sort','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Agents','userProfileId','autoAssociation','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','zip-dir','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash'];(function(_0x2f1ab5,_0x2966be){var _0x5c7e72=function(_0x3d8c88){while(--_0x3d8c88){_0x2f1ab5['push'](_0x2f1ab5['shift']());}};_0x5c7e72(++_0x2966be);}(_0x605b,0x144));var _0xb605=function(_0x682a8d,_0x48c9d6){_0x682a8d=_0x682a8d-0x0;var _0x2a613a=_0x605b[_0x682a8d];return _0x2a613a;};'use strict';var emlformat=require(_0xb605('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb605('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb605('0x2'));var moment=require('moment');var BPromise=require(_0xb605('0x3'));var Mustache=require(_0xb605('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xb605('0x5'));var ejs=require(_0xb605('0x6'));var fs=require('fs');var fs_extra=require(_0xb605('0x7'));var _=require(_0xb605('0x8'));var squel=require(_0xb605('0x9'));var crypto=require(_0xb605('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xb605('0xb'));var toCsv=require(_0xb605('0x5'));var querystring=require(_0xb605('0xc'));var Papa=require(_0xb605('0xd'));var Redis=require(_0xb605('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb605('0xf'));var as=require(_0xb605('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb605('0x11'));var utils=require(_0xb605('0x12'));var config=require(_0xb605('0x13'));var licenseUtil=require(_0xb605('0x14'));var db=require(_0xb605('0x15'))['db'];config[_0xb605('0x16')]=_[_0xb605('0x17')](config[_0xb605('0x16')],{'host':_0xb605('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb605('0x16')]));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x276327,_0x2a8995){_0x2a8995=_0x2a8995||0xcc;return function(_0x535a11){if(_0x535a11){return _0x276327[_0xb605('0x19')](_0x2a8995);}return _0x276327[_0xb605('0x1a')](_0x2a8995)[_0xb605('0x1b')]();};}function respondWithResult(_0x5db9c3,_0x44ccc4){_0x44ccc4=_0x44ccc4||0xc8;return function(_0x487b53){if(_0x487b53){return _0x5db9c3[_0xb605('0x1a')](_0x44ccc4)[_0xb605('0x1c')](_0x487b53);}};}function respondWithFilteredResult(_0x2f62a1,_0x512cad){return function(_0x430682){if(_0x430682){var _0x52b158=typeof _0x512cad[_0xb605('0x1d')]===_0xb605('0x1e')&&typeof _0x512cad[_0xb605('0x1f')]===_0xb605('0x1e');var _0x16f9dc=_0x430682[_0xb605('0x20')];var _0x5937bc=_0x52b158?0x0:_0x512cad['offset'];var _0x541bae=_0x52b158?_0x430682[_0xb605('0x20')]:_0x512cad['offset']+_0x512cad['limit'];var _0x4e14d5;if(_0x541bae>=_0x16f9dc){_0x541bae=_0x16f9dc;_0x4e14d5=0xc8;}else{_0x4e14d5=0xce;}_0x2f62a1['status'](_0x4e14d5);return _0x2f62a1[_0xb605('0x21')](_0xb605('0x22'),_0x5937bc+'-'+_0x541bae+'/'+_0x16f9dc)[_0xb605('0x1c')](_0x430682);}return null;};}function patchUpdates(_0x2934db){return function(_0x451a96){try{jsonpatch[_0xb605('0x23')](_0x451a96,_0x2934db,!![]);}catch(_0x492a0b){return BPromise[_0xb605('0x24')](_0x492a0b);}return _0x451a96[_0xb605('0x25')]();};}function saveUpdates(_0x56f3af,_0x4d0aa5){return function(_0x36af0d){if(_0x36af0d){return _0x36af0d[_0xb605('0x26')](_0x56f3af)[_0xb605('0x27')](function(_0x3a24cb){return _0x3a24cb;});}return null;};}function removeEntity(_0x59c938,_0x399fd3){return function(_0x166425){if(_0x166425){return _0x166425[_0xb605('0x28')]()[_0xb605('0x27')](function(){_0x59c938[_0xb605('0x1a')](0xcc)[_0xb605('0x1b')]();});}};}function handleEntityNotFound(_0x273d52,_0x286055){return function(_0x359306){if(!_0x359306){_0x273d52[_0xb605('0x19')](0x194);}return _0x359306;};}function handleError(_0x203fb3,_0x7d66cd){_0x7d66cd=_0x7d66cd||0x1f4;return function(_0x30cf5a){logger[_0xb605('0x29')](_0x30cf5a[_0xb605('0x2a')]);if(_0x30cf5a['name']){delete _0x30cf5a[_0xb605('0x2b')];}_0x203fb3[_0xb605('0x1a')](_0x7d66cd)['send'](_0x30cf5a);};}exports[_0xb605('0x2c')]=function(_0x1ee7e4,_0x43f001){var _0x25b541={},_0x405fd6={},_0x13548d={'count':0x0,'rows':[]};var _0x33848b=_['map'](db[_0xb605('0x2d')][_0xb605('0x2e')],function(_0x4f632c){return{'name':_0x4f632c[_0xb605('0x2f')],'type':_0x4f632c['type'][_0xb605('0x30')]};});_0x405fd6[_0xb605('0x31')]=_[_0xb605('0x32')](_0x33848b,_0xb605('0x2b'));_0x405fd6[_0xb605('0x33')]=_[_0xb605('0x34')](_0x1ee7e4[_0xb605('0x33')]);_0x405fd6[_0xb605('0x35')]=_[_0xb605('0x36')](_0x405fd6[_0xb605('0x31')],_0x405fd6[_0xb605('0x33')]);_0x25b541[_0xb605('0x37')]=_[_0xb605('0x36')](_0x405fd6['model'],qs[_0xb605('0x38')](_0x1ee7e4[_0xb605('0x33')][_0xb605('0x38')]));_0x25b541[_0xb605('0x37')]=_0x25b541[_0xb605('0x37')][_0xb605('0x39')]?_0x25b541[_0xb605('0x37')]:_0x405fd6[_0xb605('0x31')];if(!_0x1ee7e4[_0xb605('0x33')][_0xb605('0x3a')]('nolimit')){_0x25b541[_0xb605('0x1f')]=qs[_0xb605('0x1f')](_0x1ee7e4[_0xb605('0x33')][_0xb605('0x1f')]);_0x25b541['offset']=qs['offset'](_0x1ee7e4['query']['offset']);}_0x25b541['order']=qs['sort'](_0x1ee7e4[_0xb605('0x33')]['sort']);_0x25b541[_0xb605('0x3b')]=qs[_0xb605('0x35')](_[_0xb605('0x3c')](_0x1ee7e4[_0xb605('0x33')],_0x405fd6[_0xb605('0x35')]),_0x33848b);if(_0x1ee7e4[_0xb605('0x33')][_0xb605('0x3d')]){_0x25b541[_0xb605('0x3b')]=_['merge'](_0x25b541[_0xb605('0x3b')],{'$or':_[_0xb605('0x32')](_0x33848b,function(_0x147c12){if(_0x147c12[_0xb605('0x3e')]!==_0xb605('0x3f')){var _0x5ac9ef={};_0x5ac9ef[_0x147c12[_0xb605('0x2b')]]={'$like':'%'+_0x1ee7e4[_0xb605('0x33')][_0xb605('0x3d')]+'%'};return _0x5ac9ef;}})});}_0x25b541=_['merge']({},_0x25b541,_0x1ee7e4['options']);var _0x5bce7a={'where':_0x25b541[_0xb605('0x3b')]};return db[_0xb605('0x2d')]['count'](_0x5bce7a)[_0xb605('0x27')](function(_0x14b681){_0x13548d[_0xb605('0x20')]=_0x14b681;if(_0x1ee7e4[_0xb605('0x33')]['includeAll']){_0x25b541[_0xb605('0x40')]=[{'all':!![]}];}return db[_0xb605('0x2d')]['findAll'](_0x25b541);})['then'](function(_0x4919d4){_0x13548d[_0xb605('0x41')]=_0x4919d4;return _0x13548d;})[_0xb605('0x27')](respondWithFilteredResult(_0x43f001,_0x25b541))['catch'](handleError(_0x43f001,null));};exports[_0xb605('0x42')]=function(_0x1cb344,_0x5ddbc0){var _0x44d868={'raw':!![],'where':{'id':_0x1cb344[_0xb605('0x43')]['id']}},_0x706b0={};_0x706b0[_0xb605('0x31')]=_[_0xb605('0x34')](db[_0xb605('0x2d')][_0xb605('0x2e')]);_0x706b0[_0xb605('0x33')]=_[_0xb605('0x34')](_0x1cb344[_0xb605('0x33')]);_0x706b0['filters']=_[_0xb605('0x36')](_0x706b0[_0xb605('0x31')],_0x706b0[_0xb605('0x33')]);_0x44d868[_0xb605('0x37')]=_[_0xb605('0x36')](_0x706b0[_0xb605('0x31')],qs[_0xb605('0x38')](_0x1cb344[_0xb605('0x33')][_0xb605('0x38')]));_0x44d868[_0xb605('0x37')]=_0x44d868[_0xb605('0x37')][_0xb605('0x39')]?_0x44d868[_0xb605('0x37')]:_0x706b0[_0xb605('0x31')];if(_0x1cb344['query'][_0xb605('0x44')]){_0x44d868['include']=[{'all':!![]}];}_0x44d868=_['merge']({},_0x44d868,_0x1cb344[_0xb605('0x45')]);return db[_0xb605('0x2d')]['find'](_0x44d868)[_0xb605('0x27')](handleEntityNotFound(_0x5ddbc0,null))['then'](respondWithResult(_0x5ddbc0,null))[_0xb605('0x46')](handleError(_0x5ddbc0,null));};exports[_0xb605('0x47')]=function(_0xbca61c,_0x5d45a8){return db[_0xb605('0x2d')][_0xb605('0x47')](_0xbca61c['body'],{})[_0xb605('0x27')](respondWithResult(_0x5d45a8,0xc9))['catch'](handleError(_0x5d45a8,null));};exports[_0xb605('0x26')]=function(_0x529b5c,_0x2fae2e){if(_0x529b5c[_0xb605('0x48')]['id']){delete _0x529b5c[_0xb605('0x48')]['id'];}return db[_0xb605('0x2d')][_0xb605('0x49')]({'where':{'id':_0x529b5c[_0xb605('0x43')]['id']}})[_0xb605('0x27')](handleEntityNotFound(_0x2fae2e,null))[_0xb605('0x27')](saveUpdates(_0x529b5c['body'],null))['then'](respondWithResult(_0x2fae2e,null))[_0xb605('0x46')](handleError(_0x2fae2e,null));};exports['destroy']=function(_0x2a728f,_0x347429){return db['ChatInternalMessage'][_0xb605('0x49')]({'where':{'id':_0x2a728f[_0xb605('0x43')]['id']}})[_0xb605('0x27')](handleEntityNotFound(_0x347429,null))[_0xb605('0x27')](removeEntity(_0x347429,null))['catch'](handleError(_0x347429,null));};exports[_0xb605('0x4a')]=function(_0x43ca0c,_0x23c8d9){return db['ChatInternalMessage']['describe']()[_0xb605('0x27')](respondWithResult(_0x23c8d9,null))[_0xb605('0x46')](handleError(_0x23c8d9,null));};function wrapUser(_0x4f6911){return function(_0x31d850){var _0x44c230=_0x4f6911['get']({'plain':!![]});_0x44c230[_0xb605('0x4b')]=[];if(_0x31d850){_0x44c230[_0xb605('0x4c')]=_0x31d850['createdAt'];_0x44c230[_0xb605('0x4d')]=_0x31d850;}else{_0x44c230['lastMessageAt']=moment(0x0)[_0xb605('0x4e')](_0xb605('0x4f'));_0x44c230[_0xb605('0x4d')]={};}return _0x44c230;};}exports[_0xb605('0x50')]=function(_0x1ee9de,_0x5b8fe1,_0x372a2c){var _0x53146a=[];return db[_0xb605('0x51')][_0xb605('0x52')]({'where':{'role':[_0xb605('0x53'),_0xb605('0x54'),'user']},'attributes':['id',_0xb605('0x55'),_0xb605('0x2b'),_0xb605('0x56'),_0xb605('0x57'),_0xb605('0x58'),_0xb605('0x59'),_0xb605('0x5a'),_0xb605('0x5b'),_0xb605('0x5c')],'order':qs[_0xb605('0x5d')](_0xb605('0x5e')),'include':[{'model':db[_0xb605('0x5f')],'as':_0xb605('0x60'),'attributes':['id',_0xb605('0x2b'),'type'],'through':{'attributes':[]}}]})[_0xb605('0x27')](function(_0x170241){if(_0x170241){var _0x22b557=_0x1ee9de['user']['get']({'plain':!![]});if(!_0x22b557)throw new Error(_0xb605('0x61'));if(_0x22b557['role']===_0xb605('0x62')){return db[_0xb605('0x63')]['find']({'where':{'name':_0xb605('0x64'),'userProfileId':_0x22b557[_0xb605('0x65')]},'raw':!![]})[_0xb605('0x27')](function(_0x4237bf){if(_0x4237bf){if(_0x4237bf[_0xb605('0x66')]===0x0){return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x4237bf['id']},'raw':!![]})[_0xb605('0x27')](function(_0x1b3d2f){var _0x4e15fb=[];if(_[_0xb605('0x67')](_0x1b3d2f)){_0x4e15fb=_[_0xb605('0x3d')](_0x170241,function(_0x575766){if(_0x575766[_0xb605('0x56')]!==_0xb605('0x53')){return _0x575766;}});return _0x4e15fb;}else{for(var _0x56bce0=0x0;_0x56bce0<_0x170241[_0xb605('0x39')];_0x56bce0++){var _0x1db0a6=_0x170241[_0x56bce0];if(_0x1db0a6[_0xb605('0x56')]==='agent'){var _0x3eede2=_['find'](_0x1b3d2f,function(_0x52b9a5){return _0x52b9a5[_0xb605('0x68')]===_0x1db0a6['id'];});if(_0x3eede2)_0x4e15fb[_0xb605('0x69')](_0x1db0a6);}else{_0x4e15fb['push'](_0x1db0a6);}}return _0x4e15fb;}});}else{return _0x170241;}}else{var _0x5a0fd7=_[_0xb605('0x3d')](_0x170241,function(_0x4abf89){if(_0x4abf89[_0xb605('0x56')]!==_0xb605('0x53')){return _0x4abf89;}});return _0x5a0fd7;}});}else{return _0x170241;}}})[_0xb605('0x27')](function(_0x5c2948){var _0x146cd7=[];if(_0x5c2948){_0x53146a=_0x5c2948;for(var _0x5aaedf=0x0;_0x5aaedf<_0x5c2948[_0xb605('0x39')];_0x5aaedf+=0x1){_0x53146a[_0x5aaedf][_0xb605('0x4b')]=[];_0x146cd7[_0xb605('0x69')](db['ChatInternalMessage'][_0xb605('0x49')]({'where':{'FromId':[_0x1ee9de[_0xb605('0x62')]['id'],_0x5c2948[_0x5aaedf]['id']],'ToId':[_0x1ee9de['user']['id'],_0x5c2948[_0x5aaedf]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xb605('0x6a'),_0xb605('0x6b'),_0xb605('0x6c'),_0xb605('0x48')],'order':qs[_0xb605('0x5d')](_0xb605('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xb605('0x27')](wrapUser(_0x5c2948[_0x5aaedf])));}return BPromise[_0xb605('0x6e')](_0x146cd7);}return[];})['then'](function(_0x293103){return{'rows':_0x293103,'count':_0x293103[_0xb605('0x39')]};})['then'](respondWithResult(_0x5b8fe1,null))[_0xb605('0x46')](handleError(_0x5b8fe1,null));};
\ No newline at end of file
index 5c6f9ae..762c705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fe5=['events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1f8ee9,_0x521f85){var _0x24c8a9=function(_0x351d5a){while(--_0x351d5a){_0x1f8ee9['push'](_0x1f8ee9['shift']());}};_0x24c8a9(++_0x521f85);}(_0x4fe5,0x171));var _0x54fe=function(_0x50f37d,_0x1eb3a8){_0x50f37d=_0x50f37d-0x0;var _0x102113=_0x4fe5[_0x50f37d];return _0x102113;};'use strict';var EventEmitter=require(_0x54fe('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x54fe('0x1')](0x0);var events={'afterCreate':_0x54fe('0x2'),'afterUpdate':_0x54fe('0x3'),'afterDestroy':_0x54fe('0x4')};function emitEvent(_0x4c04e5){return function(_0x6eada3,_0x2697e9,_0x488bd3){ChatInternalMessageEvents[_0x54fe('0x5')](_0x4c04e5+':'+_0x6eada3['id'],_0x6eada3);ChatInternalMessageEvents[_0x54fe('0x5')](_0x4c04e5,_0x6eada3);_0x488bd3(null);};}for(var e in events){if(events[_0x54fe('0x6')](e)){var event=events[e];ChatInternalMessage[_0x54fe('0x7')](e,emitEvent(event));}}module[_0x54fe('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xcab2=['exports','events','update','remove','emit','hasOwnProperty','hook'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcab2,0x17b));var _0x2cab=function(_0x41beab,_0x2dfafd){_0x41beab=_0x41beab-0x0;var _0x3c8d92=_0xcab2[_0x41beab];return _0x3c8d92;};'use strict';var EventEmitter=require(_0x2cab('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2cab('0x1'),'afterDestroy':_0x2cab('0x2')};function emitEvent(_0x4fe754){return function(_0x1d144f,_0x5a96c2,_0x2f52dc){ChatInternalMessageEvents[_0x2cab('0x3')](_0x4fe754+':'+_0x1d144f['id'],_0x1d144f);ChatInternalMessageEvents[_0x2cab('0x3')](_0x4fe754,_0x1d144f);_0x2f52dc(null);};}for(var e in events){if(events[_0x2cab('0x4')](e)){var event=events[e];ChatInternalMessage[_0x2cab('0x5')](e,emitEvent(event));}}module[_0x2cab('0x6')]=ChatInternalMessageEvents;
\ No newline at end of file
index f872c9c..c1964a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc057=['rimraf','../../config/environment','exports','define','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xaf29da,_0x117f5a){var _0x295c51=function(_0x3feaf4){while(--_0x3feaf4){_0xaf29da['push'](_0xaf29da['shift']());}};_0x295c51(++_0x117f5a);}(_0xc057,0x151));var _0x7c05=function(_0x166b6a,_0x2487d1){_0x166b6a=_0x166b6a-0x0;var _0x57f88f=_0xc057[_0x166b6a];return _0x57f88f;};'use strict';var _=require(_0x7c05('0x0'));var util=require(_0x7c05('0x1'));var logger=require(_0x7c05('0x2'))(_0x7c05('0x3'));var moment=require(_0x7c05('0x4'));var BPromise=require(_0x7c05('0x5'));var rp=require(_0x7c05('0x6'));var fs=require('fs');var path=require(_0x7c05('0x7'));var rimraf=require(_0x7c05('0x8'));var config=require(_0x7c05('0x9'));var attributes=require('./chatInternalMessage.attributes');module[_0x7c05('0xa')]=function(_0x202bfe,_0x466abf){return _0x202bfe[_0x7c05('0xb')](_0x7c05('0xc'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7c05('0xd'),'collate':_0x7c05('0xe')});};
\ No newline at end of file
+var _0xde53=['bluebird','request-promise','path','rimraf','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x2e1066,_0x21de51){var _0x4fc335=function(_0x1cb956){while(--_0x1cb956){_0x2e1066['push'](_0x2e1066['shift']());}};_0x4fc335(++_0x21de51);}(_0xde53,0x8b));var _0x3de5=function(_0x3cce2d,_0x24aadf){_0x3cce2d=_0x3cce2d-0x0;var _0x5bf4b3=_0xde53[_0x3cce2d];return _0x5bf4b3;};'use strict';var _=require(_0x3de5('0x0'));var util=require(_0x3de5('0x1'));var logger=require(_0x3de5('0x2'))(_0x3de5('0x3'));var moment=require(_0x3de5('0x4'));var BPromise=require(_0x3de5('0x5'));var rp=require(_0x3de5('0x6'));var fs=require('fs');var path=require(_0x3de5('0x7'));var rimraf=require(_0x3de5('0x8'));var config=require('../../config/environment');var attributes=require(_0x3de5('0x9'));module[_0x3de5('0xa')]=function(_0x36001b,_0x3050e5){return _0x36001b[_0x3de5('0xb')](_0x3de5('0xc'),attributes,{'tableName':_0x3de5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3de5('0xe'),'collate':_0x3de5('0xf')});};
\ No newline at end of file
index e111969..610c84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e0=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2413a5,_0x276649){var _0x56ad9a=function(_0x941ef3){while(--_0x941ef3){_0x2413a5['push'](_0x2413a5['shift']());}};_0x56ad9a(++_0x276649);}(_0x28e0,0x126));var _0x028e=function(_0x1a3e02,_0x3da60c){_0x1a3e02=_0x1a3e02-0x0;var _0x5d3a3e=_0x28e0[_0x1a3e02];return _0x5d3a3e;};'use strict';var _=require(_0x028e('0x0'));var util=require(_0x028e('0x1'));var moment=require(_0x028e('0x2'));var BPromise=require(_0x028e('0x3'));var rs=require(_0x028e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x028e('0x5'))['db'];var utils=require(_0x028e('0x6'));var logger=require(_0x028e('0x7'))(_0x028e('0x8'));var config=require(_0x028e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x028e('0xa')][_0x028e('0xb')]({'port':0x232a});config[_0x028e('0xc')]=_[_0x028e('0xd')](config[_0x028e('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x028e('0xe'))(new Redis(config[_0x028e('0xc')]));require(_0x028e('0xf'))[_0x028e('0x10')](socket);function respondWithRpcPromise(_0x5854de,_0x20aec9,_0x471fa6){return new BPromise(function(_0x183512,_0xbf765f){return client['request'](_0x5854de,_0x471fa6)[_0x028e('0x11')](function(_0x447ea4){logger[_0x028e('0x12')](_0x028e('0x13'),_0x20aec9,_0x028e('0x14'));logger[_0x028e('0x15')](_0x028e('0x16'),_0x20aec9,_0x028e('0x14'),JSON[_0x028e('0x17')](_0x447ea4));if(_0x447ea4[_0x028e('0x18')]){if(_0x447ea4[_0x028e('0x18')][_0x028e('0x19')]===0x1f4){logger['error'](_0x028e('0x13'),_0x20aec9,_0x447ea4[_0x028e('0x18')][_0x028e('0x1a')]);return _0xbf765f(_0x447ea4[_0x028e('0x18')]['message']);}logger[_0x028e('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x20aec9,_0x447ea4[_0x028e('0x18')][_0x028e('0x1a')]);return _0x183512(_0x447ea4[_0x028e('0x18')]['message']);}else{logger[_0x028e('0x12')](_0x028e('0x13'),_0x20aec9,_0x028e('0x14'));_0x183512(_0x447ea4[_0x028e('0x1b')]['message']);}})[_0x028e('0x1c')](function(_0x5d4bf6){logger[_0x028e('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x20aec9,_0x5d4bf6);_0xbf765f(_0x5d4bf6);});});}
\ No newline at end of file
+var _0xdc8c=['client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x4afadb,_0x1a134e){var _0x9b3e15=function(_0x3ae3bf){while(--_0x3ae3bf){_0x4afadb['push'](_0x4afadb['shift']());}};_0x9b3e15(++_0x1a134e);}(_0xdc8c,0xd9));var _0xcdc8=function(_0x1a63ff,_0x143ffe){_0x1a63ff=_0x1a63ff-0x0;var _0x3e83ea=_0xdc8c[_0x1a63ff];return _0x3e83ea;};'use strict';var _=require(_0xcdc8('0x0'));var util=require(_0xcdc8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcdc8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcdc8('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xcdc8('0x4'))(_0xcdc8('0x5'));var config=require(_0xcdc8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xcdc8('0x7')][_0xcdc8('0x8')]({'port':0x232a});config[_0xcdc8('0x9')]=_[_0xcdc8('0xa')](config[_0xcdc8('0x9')],{'host':_0xcdc8('0xb'),'port':0x18eb});var socket=require(_0xcdc8('0xc'))(new Redis(config[_0xcdc8('0x9')]));require(_0xcdc8('0xd'))[_0xcdc8('0xe')](socket);function respondWithRpcPromise(_0x4356a6,_0x563cd3,_0x1f9070){return new BPromise(function(_0x219f7e,_0x5b33e8){return client[_0xcdc8('0xf')](_0x4356a6,_0x1f9070)[_0xcdc8('0x10')](function(_0x2fb605){logger[_0xcdc8('0x11')](_0xcdc8('0x12'),_0x563cd3,_0xcdc8('0x13'));logger[_0xcdc8('0x14')](_0xcdc8('0x15'),_0x563cd3,_0xcdc8('0x13'),JSON[_0xcdc8('0x16')](_0x2fb605));if(_0x2fb605[_0xcdc8('0x17')]){if(_0x2fb605[_0xcdc8('0x17')][_0xcdc8('0x18')]===0x1f4){logger[_0xcdc8('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x563cd3,_0x2fb605[_0xcdc8('0x17')][_0xcdc8('0x19')]);return _0x5b33e8(_0x2fb605[_0xcdc8('0x17')][_0xcdc8('0x19')]);}logger[_0xcdc8('0x17')](_0xcdc8('0x12'),_0x563cd3,_0x2fb605[_0xcdc8('0x17')][_0xcdc8('0x19')]);return _0x219f7e(_0x2fb605[_0xcdc8('0x17')][_0xcdc8('0x19')]);}else{logger['info'](_0xcdc8('0x12'),_0x563cd3,_0xcdc8('0x13'));_0x219f7e(_0x2fb605[_0xcdc8('0x1a')][_0xcdc8('0x19')]);}})[_0xcdc8('0x1b')](function(_0x4079fa){logger[_0xcdc8('0x17')](_0xcdc8('0x12'),_0x563cd3,_0x4079fa);_0x5b33e8(_0x4079fa);});});}
\ No newline at end of file
index 1ccb6d1..b27ac70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e02=['length','./chatInternalMessage.events','remove','update','emit','removeListener','register'];(function(_0x4314bc,_0x323bd1){var _0x28f457=function(_0x3dccde){while(--_0x3dccde){_0x4314bc['push'](_0x4314bc['shift']());}};_0x28f457(++_0x323bd1);}(_0x6e02,0xef));var _0x26e0=function(_0x84a85,_0x54e55c){_0x84a85=_0x84a85-0x0;var _0x1c2943=_0x6e02[_0x84a85];return _0x1c2943;};'use strict';var ChatInternalMessageEvents=require(_0x26e0('0x0'));var events=['save',_0x26e0('0x1'),_0x26e0('0x2')];function createListener(_0x395180,_0xbdc7f0){return function(_0x362388){_0xbdc7f0[_0x26e0('0x3')](_0x395180,_0x362388);};}function removeListener(_0x3526ae,_0x3b1be4){return function(){ChatInternalMessageEvents[_0x26e0('0x4')](_0x3526ae,_0x3b1be4);};}exports[_0x26e0('0x5')]=function(_0x37ec68){for(var _0x216cb2=0x0,_0x5c080a=events[_0x26e0('0x6')];_0x216cb2<_0x5c080a;_0x216cb2++){var _0x5b5213=events[_0x216cb2];var _0x1a4a93=createListener('chatInternalMessage:'+_0x5b5213,_0x37ec68);ChatInternalMessageEvents['on'](_0x5b5213,_0x1a4a93);}};
\ No newline at end of file
+var _0xb6be=['update','emit','removeListener','register','chatInternalMessage:','save','remove'];(function(_0x2bddf9,_0x22c873){var _0x3f3ae9=function(_0x2d91ac){while(--_0x2d91ac){_0x2bddf9['push'](_0x2bddf9['shift']());}};_0x3f3ae9(++_0x22c873);}(_0xb6be,0xa6));var _0xeb6b=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xb6be[_0x2f3848];return _0x102668;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0xeb6b('0x0'),_0xeb6b('0x1'),_0xeb6b('0x2')];function createListener(_0x865431,_0x55e384){return function(_0x4eb559){_0x55e384[_0xeb6b('0x3')](_0x865431,_0x4eb559);};}function removeListener(_0x724413,_0x29074b){return function(){ChatInternalMessageEvents[_0xeb6b('0x4')](_0x724413,_0x29074b);};}exports[_0xeb6b('0x5')]=function(_0x3b62a4){for(var _0x252271=0x0,_0x3a5919=events['length'];_0x252271<_0x3a5919;_0x252271++){var _0x35cc7f=events[_0x252271];var _0x2512e6=createListener(_0xeb6b('0x6')+_0x35cc7f,_0x3b62a4);ChatInternalMessageEvents['on'](_0x35cc7f,_0x2512e6);}};
\ No newline at end of file
index e647f8d..eea4517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9121=['put','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInternalMessage.controller','get','isAuthenticated','/describe','describe','/users','/:id','post','create'];(function(_0x1a3e44,_0x5cc37a){var _0x3d912b=function(_0x1ef4af){while(--_0x1ef4af){_0x1a3e44['push'](_0x1a3e44['shift']());}};_0x3d912b(++_0x5cc37a);}(_0x9121,0x134));var _0x1912=function(_0xa64102,_0x181eb4){_0xa64102=_0xa64102-0x0;var _0x2437b8=_0x9121[_0xa64102];return _0x2437b8;};'use strict';var multer=require(_0x1912('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1912('0x1'));var express=require('express');var router=express[_0x1912('0x2')]();var fs_extra=require(_0x1912('0x3'));var auth=require(_0x1912('0x4'));var interaction=require(_0x1912('0x5'));var config=require('../../config/environment');var controller=require(_0x1912('0x6'));router[_0x1912('0x7')]('/',auth[_0x1912('0x8')](),controller['index']);router[_0x1912('0x7')](_0x1912('0x9'),auth[_0x1912('0x8')](),controller[_0x1912('0xa')]);router['get'](_0x1912('0xb'),auth['isAuthenticated'](),controller['getUsers']);router[_0x1912('0x7')](_0x1912('0xc'),auth[_0x1912('0x8')](),controller['show']);router[_0x1912('0xd')]('/',auth[_0x1912('0x8')](),controller[_0x1912('0xe')]);router[_0x1912('0xf')](_0x1912('0xc'),controller['update']);router[_0x1912('0x10')](_0x1912('0xc'),auth['isAuthenticated'](),controller[_0x1912('0x11')]);module[_0x1912('0x12')]=router;
\ No newline at end of file
+var _0x2106=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/users','getUsers','show','post','create','/:id','update','delete','destroy','exports','multer','util'];(function(_0x378ed4,_0xf7df57){var _0x49e8bf=function(_0x30c621){while(--_0x30c621){_0x378ed4['push'](_0x378ed4['shift']());}};_0x49e8bf(++_0xf7df57);}(_0x2106,0x1ae));var _0x6210=function(_0x2e0163,_0x174145){_0x2e0163=_0x2e0163-0x0;var _0x79880d=_0x2106[_0x2e0163];return _0x79880d;};'use strict';var multer=require(_0x6210('0x0'));var util=require(_0x6210('0x1'));var path=require(_0x6210('0x2'));var timeout=require(_0x6210('0x3'));var express=require(_0x6210('0x4'));var router=express[_0x6210('0x5')]();var fs_extra=require(_0x6210('0x6'));var auth=require(_0x6210('0x7'));var interaction=require(_0x6210('0x8'));var config=require(_0x6210('0x9'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6210('0xa')](_0x6210('0xb'),auth[_0x6210('0xc')](),controller[_0x6210('0xd')]);router[_0x6210('0xa')](_0x6210('0xe'),auth['isAuthenticated'](),controller[_0x6210('0xf')]);router[_0x6210('0xa')]('/:id',auth[_0x6210('0xc')](),controller[_0x6210('0x10')]);router[_0x6210('0x11')]('/',auth[_0x6210('0xc')](),controller[_0x6210('0x12')]);router['put'](_0x6210('0x13'),controller[_0x6210('0x14')]);router[_0x6210('0x15')](_0x6210('0x13'),auth[_0x6210('0xc')](),controller[_0x6210('0x16')]);module[_0x6210('0x17')]=router;
\ No newline at end of file
index 5045623..005a695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea5b=['out','STRING','sequelize','exports','TEXT','BOOLEAN','ENUM'];(function(_0x5a7dd3,_0x26b7cf){var _0x2f4d07=function(_0x280510){while(--_0x280510){_0x5a7dd3['push'](_0x5a7dd3['shift']());}};_0x2f4d07(++_0x26b7cf);}(_0xea5b,0x152));var _0xbea5=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xea5b[_0x5f309e];return _0x487b5e;};'use strict';var Sequelize=require(_0xbea5('0x0'));module[_0xbea5('0x1')]={'body':{'type':Sequelize[_0xbea5('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xbea5('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xbea5('0x4')]('in',_0xbea5('0x5')),'defaultValue':_0xbea5('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xbea5('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x1619=['ENUM','out','STRING','TEXT','BOOLEAN'];(function(_0x579121,_0x27e9e2){var _0x38a4ae=function(_0x53e154){while(--_0x53e154){_0x579121['push'](_0x579121['shift']());}};_0x38a4ae(++_0x27e9e2);}(_0x1619,0x189));var _0x9161=function(_0x2b3d8e,_0x354d70){_0x2b3d8e=_0x2b3d8e-0x0;var _0x555cd0=_0x1619[_0x2b3d8e];return _0x555cd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x9161('0x0')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x9161('0x1')],'defaultValue':![]},'secret':{'type':Sequelize[_0x9161('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x9161('0x2')]('in','out'),'defaultValue':_0x9161('0x3'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x9161('0x4')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 8e01fb1..f88cf3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1050f7,_0x3aacff){var _0x27e2d9=function(_0x36f7b4){while(--_0x36f7b4){_0x1050f7['push'](_0x1050f7['shift']());}};_0x27e2d9(++_0x3aacff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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
+var _0xeece=['User','SIP/%s','motionChannel','rejectmessage','eml-format','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/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','sendStatus','stack','name','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','findAll','rows','show','params','includeAll','include','merge','options','create','body','find','describe','chat-interactions','accept','chat','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteraction','isNil','read1stAt','format','interaction','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','channel','event','EventManager','acceptmessage','parse','formData','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage'];(function(_0x47a385,_0x5d8781){var _0x31abb9=function(_0x210f7a){while(--_0x210f7a){_0x47a385['push'](_0x47a385['shift']());}};_0x31abb9(++_0x5d8781);}(_0xeece,0x8e));var _0xeeec=function(_0x13b65c,_0x1aa36f){_0x13b65c=_0x13b65c-0x0;var _0xb7b670=_0xeece[_0x13b65c];return _0xb7b670;};'use strict';var emlformat=require(_0xeeec('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xeeec('0x1'));var rp=require(_0xeeec('0x2'));var moment=require(_0xeeec('0x3'));var BPromise=require(_0xeeec('0x4'));var Mustache=require(_0xeeec('0x5'));var util=require(_0xeeec('0x6'));var path=require('path');var sox=require(_0xeeec('0x7'));var csv=require(_0xeeec('0x8'));var ejs=require(_0xeeec('0x9'));var fs=require('fs');var fs_extra=require(_0xeeec('0xa'));var _=require(_0xeeec('0xb'));var squel=require(_0xeeec('0xc'));var crypto=require(_0xeeec('0xd'));var jsforce=require(_0xeeec('0xe'));var deskjs=require(_0xeeec('0xf'));var toCsv=require(_0xeeec('0x8'));var querystring=require(_0xeeec('0x10'));var Papa=require(_0xeeec('0x11'));var Redis=require(_0xeeec('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xeeec('0x13'));var hardwareService=require(_0xeeec('0x14'));var logger=require(_0xeeec('0x15'))(_0xeeec('0x16'));var utils=require(_0xeeec('0x17'));var config=require(_0xeeec('0x18'));var licenseUtil=require(_0xeeec('0x19'));var db=require(_0xeeec('0x1a'))['db'];config['redis']=_[_0xeeec('0x1b')](config['redis'],{'host':_0xeeec('0x1c'),'port':0x18eb});var socket=require(_0xeeec('0x1d'))(new Redis(config[_0xeeec('0x1e')]));require('./chatMessage.socket')[_0xeeec('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xeeec('0x20')][_0xeeec('0x21')]({'port':0x232c});var client9002=jayson[_0xeeec('0x20')][_0xeeec('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1bc4fd,_0x3724fa,_0x47c373,_0x4e61c4){return new BPromise(function(_0x469b3f,_0x544726){var _0x41f1a6=_0x4e61c4||client;return _0x41f1a6[_0xeeec('0x22')](_0x1bc4fd,_0x47c373)[_0xeeec('0x23')](function(_0x1745ee){logger[_0xeeec('0x24')](_0xeeec('0x25'),_0x3724fa,_0xeeec('0x26'));logger[_0xeeec('0x27')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x3724fa,_0xeeec('0x26'),JSON['stringify'](_0x1745ee));if(_0x1745ee[_0xeeec('0x28')]){if(_0x1745ee[_0xeeec('0x28')]['code']===0x1f4){logger[_0xeeec('0x28')](_0xeeec('0x25'),_0x3724fa,_0x1745ee[_0xeeec('0x28')][_0xeeec('0x29')]);return _0x544726(_0x1745ee[_0xeeec('0x28')][_0xeeec('0x29')]);}logger[_0xeeec('0x28')](_0xeeec('0x25'),_0x3724fa,_0x1745ee['error'][_0xeeec('0x29')]);return _0x469b3f(_0x1745ee[_0xeeec('0x28')][_0xeeec('0x29')]);}else{logger[_0xeeec('0x24')](_0xeeec('0x25'),_0x3724fa,_0xeeec('0x26'));_0x469b3f(_0x1745ee[_0xeeec('0x2a')]['message']);}})[_0xeeec('0x2b')](function(_0x2e3ff1){logger[_0xeeec('0x28')](_0xeeec('0x25'),_0x3724fa,_0x2e3ff1);_0x544726(_0x2e3ff1);});});}function respondWithStatusCode(_0x570eb4,_0x2b769c){_0x2b769c=_0x2b769c||0xcc;return function(_0x5c39ba){if(_0x5c39ba){return _0x570eb4['sendStatus'](_0x2b769c);}return _0x570eb4[_0xeeec('0x2c')](_0x2b769c)[_0xeeec('0x2d')]();};}function respondWithResult(_0x4465cd,_0x39c106){_0x39c106=_0x39c106||0xc8;return function(_0x4ff73b){if(_0x4ff73b){return _0x4465cd[_0xeeec('0x2c')](_0x39c106)[_0xeeec('0x2e')](_0x4ff73b);}};}function respondWithFilteredResult(_0x33376c,_0x8e0c80){return function(_0x425405){if(_0x425405){var _0x2556f0=typeof _0x8e0c80[_0xeeec('0x2f')]===_0xeeec('0x30')&&typeof _0x8e0c80[_0xeeec('0x31')]===_0xeeec('0x30');var _0x2a4153=_0x425405[_0xeeec('0x32')];var _0x13bae9=_0x2556f0?0x0:_0x8e0c80['offset'];var _0x337d8b=_0x2556f0?_0x425405[_0xeeec('0x32')]:_0x8e0c80[_0xeeec('0x2f')]+_0x8e0c80['limit'];var _0x2d616f;if(_0x337d8b>=_0x2a4153){_0x337d8b=_0x2a4153;_0x2d616f=0xc8;}else{_0x2d616f=0xce;}_0x33376c[_0xeeec('0x2c')](_0x2d616f);return _0x33376c[_0xeeec('0x33')]('Content-Range',_0x13bae9+'-'+_0x337d8b+'/'+_0x2a4153)[_0xeeec('0x2e')](_0x425405);}return null;};}function patchUpdates(_0x206644){return function(_0x379744){try{jsonpatch[_0xeeec('0x34')](_0x379744,_0x206644,!![]);}catch(_0x44a5d4){return BPromise[_0xeeec('0x35')](_0x44a5d4);}return _0x379744[_0xeeec('0x36')]();};}function saveUpdates(_0x4b2408,_0x4954ed){return function(_0x478566){if(_0x478566){return _0x478566[_0xeeec('0x37')](_0x4b2408)[_0xeeec('0x23')](function(_0x29b01d){return _0x29b01d;});}return null;};}function removeEntity(_0x481007,_0x1ef7c9){return function(_0x1e2e25){if(_0x1e2e25){return _0x1e2e25[_0xeeec('0x38')]()['then'](function(){_0x481007['status'](0xcc)[_0xeeec('0x2d')]();});}};}function handleEntityNotFound(_0x56aaa4,_0x2d4b2d){return function(_0x1c33a5){if(!_0x1c33a5){_0x56aaa4[_0xeeec('0x39')](0x194);}return _0x1c33a5;};}function handleError(_0x4a7771,_0x50a352){_0x50a352=_0x50a352||0x1f4;return function(_0x4b99cd){logger['error'](_0x4b99cd[_0xeeec('0x3a')]);if(_0x4b99cd[_0xeeec('0x3b')]){delete _0x4b99cd[_0xeeec('0x3b')];}_0x4a7771[_0xeeec('0x2c')](_0x50a352)['send'](_0x4b99cd);};}exports['index']=function(_0x473f7b,_0x513e38){var _0x1beb24={},_0x3365af={},_0x2637a8={'count':0x0,'rows':[]};var _0x24dd7b=_[_0xeeec('0x3c')](db[_0xeeec('0x3d')][_0xeeec('0x3e')],function(_0x338db2){return{'name':_0x338db2[_0xeeec('0x3f')],'type':_0x338db2[_0xeeec('0x40')][_0xeeec('0x41')]};});_0x3365af[_0xeeec('0x42')]=_[_0xeeec('0x3c')](_0x24dd7b,_0xeeec('0x3b'));_0x3365af[_0xeeec('0x43')]=_[_0xeeec('0x44')](_0x473f7b[_0xeeec('0x43')]);_0x3365af['filters']=_['intersection'](_0x3365af[_0xeeec('0x42')],_0x3365af[_0xeeec('0x43')]);_0x1beb24[_0xeeec('0x45')]=_[_0xeeec('0x46')](_0x3365af['model'],qs[_0xeeec('0x47')](_0x473f7b[_0xeeec('0x43')][_0xeeec('0x47')]));_0x1beb24[_0xeeec('0x45')]=_0x1beb24['attributes'][_0xeeec('0x48')]?_0x1beb24['attributes']:_0x3365af[_0xeeec('0x42')];if(!_0x473f7b[_0xeeec('0x43')][_0xeeec('0x49')]('nolimit')){_0x1beb24[_0xeeec('0x31')]=qs[_0xeeec('0x31')](_0x473f7b[_0xeeec('0x43')][_0xeeec('0x31')]);_0x1beb24[_0xeeec('0x2f')]=qs[_0xeeec('0x2f')](_0x473f7b[_0xeeec('0x43')][_0xeeec('0x2f')]);}_0x1beb24[_0xeeec('0x4a')]=qs[_0xeeec('0x4b')](_0x473f7b[_0xeeec('0x43')][_0xeeec('0x4b')]);_0x1beb24[_0xeeec('0x4c')]=qs['filters'](_[_0xeeec('0x4d')](_0x473f7b['query'],_0x3365af[_0xeeec('0x4e')]),_0x24dd7b);if(_0x473f7b[_0xeeec('0x43')][_0xeeec('0x4f')]){_0x1beb24['where']=_['merge'](_0x1beb24[_0xeeec('0x4c')],{'$or':_[_0xeeec('0x3c')](_0x24dd7b,function(_0x27a936){if(_0x27a936[_0xeeec('0x40')]!=='VIRTUAL'){var _0x2768bd={};_0x2768bd[_0x27a936[_0xeeec('0x3b')]]={'$like':'%'+_0x473f7b['query'][_0xeeec('0x4f')]+'%'};return _0x2768bd;}})});}_0x1beb24=_['merge']({},_0x1beb24,_0x473f7b['options']);var _0x5b98fc={'where':_0x1beb24[_0xeeec('0x4c')]};return db[_0xeeec('0x3d')][_0xeeec('0x32')](_0x5b98fc)[_0xeeec('0x23')](function(_0x38123f){_0x2637a8[_0xeeec('0x32')]=_0x38123f;if(_0x473f7b[_0xeeec('0x43')]['includeAll']){_0x1beb24['include']=[{'all':!![]}];}return db[_0xeeec('0x3d')][_0xeeec('0x50')](_0x1beb24);})[_0xeeec('0x23')](function(_0x55ce2e){_0x2637a8[_0xeeec('0x51')]=_0x55ce2e;return _0x2637a8;})[_0xeeec('0x23')](respondWithFilteredResult(_0x513e38,_0x1beb24))[_0xeeec('0x2b')](handleError(_0x513e38,null));};exports[_0xeeec('0x52')]=function(_0x86660c,_0x112a85){var _0x102ceb={'raw':!![],'where':{'id':_0x86660c[_0xeeec('0x53')]['id']}},_0x49530e={};_0x49530e[_0xeeec('0x42')]=_[_0xeeec('0x44')](db['ChatMessage'][_0xeeec('0x3e')]);_0x49530e['query']=_[_0xeeec('0x44')](_0x86660c['query']);_0x49530e[_0xeeec('0x4e')]=_[_0xeeec('0x46')](_0x49530e[_0xeeec('0x42')],_0x49530e[_0xeeec('0x43')]);_0x102ceb[_0xeeec('0x45')]=_[_0xeeec('0x46')](_0x49530e[_0xeeec('0x42')],qs[_0xeeec('0x47')](_0x86660c[_0xeeec('0x43')]['fields']));_0x102ceb[_0xeeec('0x45')]=_0x102ceb['attributes']['length']?_0x102ceb[_0xeeec('0x45')]:_0x49530e[_0xeeec('0x42')];if(_0x86660c['query'][_0xeeec('0x54')]){_0x102ceb[_0xeeec('0x55')]=[{'all':!![]}];}_0x102ceb=_[_0xeeec('0x56')]({},_0x102ceb,_0x86660c[_0xeeec('0x57')]);return db[_0xeeec('0x3d')]['find'](_0x102ceb)['then'](handleEntityNotFound(_0x112a85,null))[_0xeeec('0x23')](respondWithResult(_0x112a85,null))['catch'](handleError(_0x112a85,null));};exports['create']=function(_0x531013,_0x428313){return db[_0xeeec('0x3d')][_0xeeec('0x58')](_0x531013['body'],{})[_0xeeec('0x23')](respondWithResult(_0x428313,0xc9))[_0xeeec('0x2b')](handleError(_0x428313,null));};exports[_0xeeec('0x37')]=function(_0x5971df,_0x3cfde7){if(_0x5971df[_0xeeec('0x59')]['id']){delete _0x5971df[_0xeeec('0x59')]['id'];}return db[_0xeeec('0x3d')][_0xeeec('0x5a')]({'where':{'id':_0x5971df[_0xeeec('0x53')]['id']}})[_0xeeec('0x23')](handleEntityNotFound(_0x3cfde7,null))[_0xeeec('0x23')](saveUpdates(_0x5971df[_0xeeec('0x59')],null))['then'](respondWithResult(_0x3cfde7,null))['catch'](handleError(_0x3cfde7,null));};exports[_0xeeec('0x38')]=function(_0x5b12c6,_0x2cf0c5){return db[_0xeeec('0x3d')][_0xeeec('0x5a')]({'where':{'id':_0x5b12c6[_0xeeec('0x53')]['id']}})[_0xeeec('0x23')](handleEntityNotFound(_0x2cf0c5,null))[_0xeeec('0x23')](removeEntity(_0x2cf0c5,null))[_0xeeec('0x2b')](handleError(_0x2cf0c5,null));};exports[_0xeeec('0x5b')]=function(_0x1e0493,_0x581558){return db['ChatMessage']['describe']()['then'](respondWithResult(_0x581558,null))['catch'](handleError(_0x581558,null));};var interaction_log=require(_0xeeec('0x15'))(_0xeeec('0x5c'));exports[_0xeeec('0x5d')]=function(_0x327b5f,_0x403c54,_0x4e212c){var _0x3aab5d={'agent':{},'channel':_0xeeec('0x5e')};if(_0x327b5f['body']['id']){delete _0x327b5f['body']['id'];}_0x327b5f[_0xeeec('0x59')][_0xeeec('0x5f')]=!![];_0x327b5f['body']['readAt']=moment()['format'](_0xeeec('0x60'));_0x327b5f[_0xeeec('0x59')]['UserId']=_0x327b5f['body'][_0xeeec('0x61')]||_0x327b5f[_0xeeec('0x62')]['id'];_0x3aab5d[_0xeeec('0x63')]['id']=_0x327b5f[_0xeeec('0x59')][_0xeeec('0x61')];return db[_0xeeec('0x3d')][_0xeeec('0x5a')]({'where':{'id':_0x327b5f['params']['id'],'UserId':null}})[_0xeeec('0x23')](handleEntityNotFound(_0x403c54,null))['then'](saveUpdates(_0x327b5f[_0xeeec('0x59')],null))['then'](function(_0x445fcd){if(_0x445fcd){_0x3aab5d[_0xeeec('0x29')]=_0x445fcd['get']({'plain':!![]});return db[_0xeeec('0x64')][_0xeeec('0x5a')]({'where':{'id':_0x445fcd['ChatInteractionId']}});}return null;})[_0xeeec('0x23')](handleEntityNotFound(_0x403c54,null))[_0xeeec('0x23')](function(_0x444d6b){if(_0x444d6b){return _0x444d6b[_0xeeec('0x37')]({'UserId':_0x327b5f[_0xeeec('0x59')][_0xeeec('0x61')],'read1stAt':_[_0xeeec('0x65')](_0x444d6b[_0xeeec('0x66')])?moment()[_0xeeec('0x67')](_0xeeec('0x60')):undefined});}return null;})['then'](function(_0x4063cb){if(_0x4063cb){_0x3aab5d[_0xeeec('0x68')]=_0x4063cb[_0xeeec('0x69')]({'plain':!![]});interaction_log[_0xeeec('0x24')](_0xeeec('0x6a'),_0x327b5f[_0xeeec('0x62')]['id'],_0x327b5f[_0xeeec('0x62')][_0xeeec('0x3b')],_0x327b5f[_0xeeec('0x62')][_0xeeec('0x6b')],_0x3aab5d[_0xeeec('0x68')]['id'],_0x327b5f['body']?JSON[_0xeeec('0x6c')](_0x327b5f[_0xeeec('0x59')]):_0xeeec('0x6d'));return respondWithRpcPromise(_0xeeec('0x6e'),_0xeeec('0x6f'),_0x3aab5d);}return null;})[_0xeeec('0x23')](function(_0x2c339e){var _0x4e3d58=_0xeeec('0x70')+_0x2c339e[_0xeeec('0x29')][_0xeeec('0x71')];return db[_0xeeec('0x72')][_0xeeec('0x43')](_0x4e3d58,{'type':db[_0xeeec('0x73')][_0xeeec('0x74')][_0xeeec('0x75')],'raw':!![]})[_0xeeec('0x23')](function(_0x3b8768){return _0x3b8768;});})[_0xeeec('0x23')](function(_0x4bba1b){if(_0x4bba1b){_0x3aab5d[_0xeeec('0x29')][_0xeeec('0x76')]=_0x4bba1b[0x0];if(!_0x327b5f[_0xeeec('0x59')][_0xeeec('0x61')])return;return db['User']['find']({'where':{'id':_0x327b5f[_0xeeec('0x59')]['UserId'],'role':_0xeeec('0x63')},'attributes':['id',_0xeeec('0x3b'),_0xeeec('0x77'),_0xeeec('0x78'),_0xeeec('0x79')],'raw':!![]});}return null;})[_0xeeec('0x23')](function(_0x48a9f3){if(!_0x48a9f3)return null;_0x3aab5d['message'][_0xeeec('0x63')]=_0x48a9f3;return _0x3aab5d;})[_0xeeec('0x23')](function(_0x5c95df){if(_0x5c95df){if(_0x327b5f[_0xeeec('0x59')][_0xeeec('0x7a')]){_0x3aab5d[_0xeeec('0x29')][_0xeeec('0x7b')]=util[_0xeeec('0x67')]('SIP/%s',_0x327b5f[_0xeeec('0x62')]['name']);_0x3aab5d[_0xeeec('0x29')][_0xeeec('0x7c')]=_0x3aab5d[_0xeeec('0x7c')];_0x3aab5d['message']['motionChannel']=_0x3aab5d[_0xeeec('0x7c')];_0x3aab5d['message'][_0xeeec('0x7d')]=_0xeeec('0x5d');return respondWithRpcPromise('EventManager',_0xeeec('0x7e'),{'event':_0xeeec('0x7f'),'message':_[_0xeeec('0x56')](_0x3aab5d[_0xeeec('0x29')],JSON[_0xeeec('0x80')](_0x3aab5d[_0xeeec('0x68')][_0xeeec('0x81')]))},client9002)['then'](function(){return _0x3aab5d;});}return _0x3aab5d;}return null;})['then'](respondWithResult(_0x403c54,null))['catch'](handleError(_0x403c54,null));};var interaction_log=require(_0xeeec('0x15'))('chat-interactions');exports[_0xeeec('0x35')]=function(_0x4f09e4,_0x5ed0c8,_0x16e48b){var _0x173047={'agent':{},'channel':_0xeeec('0x5e')};if(_0x4f09e4[_0xeeec('0x59')]['id']){delete _0x4f09e4[_0xeeec('0x59')]['id'];}_0x4f09e4[_0xeeec('0x59')]['UserId']=_0x4f09e4[_0xeeec('0x59')][_0xeeec('0x61')]||_0x4f09e4[_0xeeec('0x62')]['id'];_0x173047[_0xeeec('0x63')]['id']=_0x4f09e4[_0xeeec('0x59')]['UserId'];return db[_0xeeec('0x3d')][_0xeeec('0x5a')]({'where':{'id':_0x4f09e4[_0xeeec('0x53')]['id'],'UserId':null}})[_0xeeec('0x23')](handleEntityNotFound(_0x5ed0c8,null))[_0xeeec('0x23')](function(_0x7147e9){if(_0x7147e9){_0x173047[_0xeeec('0x29')]=_0x7147e9[_0xeeec('0x69')]({'plain':!![]});return db[_0xeeec('0x64')][_0xeeec('0x5a')]({'where':{'id':_0x7147e9[_0xeeec('0x82')]}});}return null;})[_0xeeec('0x23')](handleEntityNotFound(_0x5ed0c8,null))[_0xeeec('0x23')](function(_0x35b3b6){if(_0x35b3b6){_0x173047['interaction']=_0x35b3b6[_0xeeec('0x69')]({'plain':!![]});interaction_log[_0xeeec('0x24')](_0xeeec('0x83'),_0x4f09e4[_0xeeec('0x62')]['id'],_0x4f09e4[_0xeeec('0x62')][_0xeeec('0x3b')],_0x4f09e4[_0xeeec('0x62')][_0xeeec('0x6b')],_0x173047[_0xeeec('0x68')]['id'],_0x4f09e4['body']?JSON[_0xeeec('0x6c')](_0x4f09e4[_0xeeec('0x59')]):_0xeeec('0x6d'));return respondWithRpcPromise(_0xeeec('0x84'),_0xeeec('0x85'),_0x173047);}return null;})[_0xeeec('0x23')](function(_0x393170){var _0x1e8615=_0xeeec('0x70')+_0x393170[_0xeeec('0x29')][_0xeeec('0x71')];return db[_0xeeec('0x72')]['query'](_0x1e8615,{'type':db['Sequelize']['QueryTypes'][_0xeeec('0x75')],'raw':!![]})[_0xeeec('0x23')](function(_0x214d6f){return _0x214d6f;});})['then'](function(_0x1ab76d){if(_0x1ab76d){_0x173047['message'][_0xeeec('0x76')]=_0x1ab76d[0x0];if(!_0x4f09e4[_0xeeec('0x59')][_0xeeec('0x61')])return;return db[_0xeeec('0x86')][_0xeeec('0x5a')]({'where':{'id':_0x4f09e4[_0xeeec('0x59')]['UserId'],'role':'agent'},'attributes':['id',_0xeeec('0x3b'),_0xeeec('0x77'),_0xeeec('0x78'),'internal'],'raw':!![]});}return null;})['then'](function(_0x5b0daa){if(!_0x5b0daa)return null;_0x173047[_0xeeec('0x29')][_0xeeec('0x63')]=_0x5b0daa;return _0x173047;})[_0xeeec('0x23')](function(_0x156e5c){if(_0x156e5c){_0x156e5c[_0xeeec('0x29')][_0xeeec('0x7b')]=util[_0xeeec('0x67')](_0xeeec('0x87'),_0x4f09e4[_0xeeec('0x62')][_0xeeec('0x3b')]);_0x156e5c[_0xeeec('0x29')][_0xeeec('0x7c')]=_0x173047['channel'];_0x156e5c[_0xeeec('0x29')][_0xeeec('0x88')]=_0x173047[_0xeeec('0x7c')];_0x156e5c['message'][_0xeeec('0x7d')]=_0xeeec('0x35');respondWithRpcPromise(_0xeeec('0x7e'),_0xeeec('0x7e'),{'event':_0xeeec('0x89'),'message':_['merge'](_0x173047[_0xeeec('0x29')],JSON[_0xeeec('0x80')](_0x173047[_0xeeec('0x68')]['formData']))},client9002);return _0x173047;}return null;})[_0xeeec('0x23')](respondWithResult(_0x5ed0c8,null))['catch'](handleError(_0x5ed0c8,null));};
\ No newline at end of file
index 3a01e3e..68f7f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa841=['hook','exports','events','../../mysqldb','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x461efd,_0x228cc7){var _0x325d18=function(_0x63ae7a){while(--_0x63ae7a){_0x461efd['push'](_0x461efd['shift']());}};_0x325d18(++_0x228cc7);}(_0xa841,0xb2));var _0x1a84=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa841[_0x57b54c];return _0x59cc19;};'use strict';var EventEmitter=require(_0x1a84('0x0'));var ChatMessage=require(_0x1a84('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x1a84('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1a84('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4188b4){return function(_0x39f512,_0x1e456f,_0x2d500b){ChatMessageEvents[_0x1a84('0x4')](_0x4188b4+':'+_0x39f512['id'],_0x39f512);ChatMessageEvents[_0x1a84('0x4')](_0x4188b4,_0x39f512);_0x2d500b(null);};}for(var e in events){if(events[_0x1a84('0x5')](e)){var event=events[e];ChatMessage[_0x1a84('0x6')](e,emitEvent(event));}}module[_0x1a84('0x7')]=ChatMessageEvents;
\ No newline at end of file
+var _0xf26b=['hook','events','ChatMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xf26b,0x10f));var _0xbf26=function(_0x17f2ca,_0x16fd66){_0x17f2ca=_0x17f2ca-0x0;var _0x18a8fd=_0xf26b[_0x17f2ca];return _0x18a8fd;};'use strict';var EventEmitter=require(_0xbf26('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0xbf26('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xbf26('0x2')](0x0);var events={'afterCreate':_0xbf26('0x3'),'afterUpdate':_0xbf26('0x4'),'afterDestroy':_0xbf26('0x5')};function emitEvent(_0x3dcbb3){return function(_0x1a7baf,_0x2d677a,_0x5632a8){ChatMessageEvents[_0xbf26('0x6')](_0x3dcbb3+':'+_0x1a7baf['id'],_0x1a7baf);ChatMessageEvents['emit'](_0x3dcbb3,_0x1a7baf);_0x5632a8(null);};}for(var e in events){if(events[_0xbf26('0x7')](e)){var event=events[e];ChatMessage[_0xbf26('0x8')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index acbad3f..22319d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd12=['../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','direction','toLowerCase','out','secret','isNil','ChatInteraction','findOne','ChatInteractionId','then','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path'];(function(_0x438869,_0x166201){var _0xf903ab=function(_0x4e8a8d){while(--_0x4e8a8d){_0x438869['push'](_0x438869['shift']());}};_0xf903ab(++_0x166201);}(_0xdd12,0xf6));var _0x2dd1=function(_0x516029,_0x2771c9){_0x516029=_0x516029-0x0;var _0x3af984=_0xdd12[_0x516029];return _0x3af984;};'use strict';var _=require(_0x2dd1('0x0'));var util=require(_0x2dd1('0x1'));var logger=require('../../config/logger')(_0x2dd1('0x2'));var moment=require(_0x2dd1('0x3'));var BPromise=require('bluebird');var rp=require(_0x2dd1('0x4'));var fs=require('fs');var path=require(_0x2dd1('0x5'));var rimraf=require('rimraf');var config=require(_0x2dd1('0x6'));var attributes=require(_0x2dd1('0x7'));module[_0x2dd1('0x8')]=function(_0x482a83,_0x4f3bc6){return _0x482a83[_0x2dd1('0x9')](_0x2dd1('0xa'),attributes,{'tableName':_0x2dd1('0xb'),'paranoid':![],'indexes':[{'name':_0x2dd1('0xc'),'fields':[_0x2dd1('0xd')],'type':_0x2dd1('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4723e3,_0x595157,_0x419e6f){var _0x142a5d=_0x482a83['models'];var _0x1e17c0=_0x4723e3['get']({'plain':!![]});if(_0x1e17c0[_0x2dd1('0xf')]['toLowerCase']()==='in'||_0x1e17c0[_0x2dd1('0xf')][_0x2dd1('0x10')]()===_0x2dd1('0x11')&&!_0x1e17c0[_0x2dd1('0x12')]&&!_[_0x2dd1('0x13')](_0x1e17c0['UserId'])){_0x142a5d[_0x2dd1('0x14')][_0x2dd1('0x15')]({'where':{'id':_0x1e17c0[_0x2dd1('0x16')]}})[_0x2dd1('0x17')](function(_0x52edc8){if(_0x52edc8){_0x52edc8['update']({'lastMsgAt':_0x1e17c0['createdAt'],'lastMsgDirection':_0x1e17c0[_0x2dd1('0xf')][_0x2dd1('0x10')]()});}})[_0x2dd1('0x18')](function(_0xb3cd58){console[_0x2dd1('0x19')](_0xb3cd58);});}_0x419e6f();}},'charset':_0x2dd1('0x1a'),'collate':_0x2dd1('0x1b')});};
\ No newline at end of file
+var _0x75ee=['path','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','UserId','ChatInteraction','findOne','then','update','createdAt','catch','error','utf8mb4','util','../../config/logger','api','moment','bluebird'];(function(_0x3837a4,_0x3f8e8e){var _0x2882a5=function(_0x42d113){while(--_0x42d113){_0x3837a4['push'](_0x3837a4['shift']());}};_0x2882a5(++_0x3f8e8e);}(_0x75ee,0x183));var _0xe75e=function(_0x479509,_0x1daf8a){_0x479509=_0x479509-0x0;var _0x382da8=_0x75ee[_0x479509];return _0x382da8;};'use strict';var _=require('lodash');var util=require(_0xe75e('0x0'));var logger=require(_0xe75e('0x1'))(_0xe75e('0x2'));var moment=require(_0xe75e('0x3'));var BPromise=require(_0xe75e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe75e('0x5'));var rimraf=require('rimraf');var config=require(_0xe75e('0x6'));var attributes=require(_0xe75e('0x7'));module['exports']=function(_0x62ac00,_0x3bfdc9){return _0x62ac00[_0xe75e('0x8')](_0xe75e('0x9'),attributes,{'tableName':_0xe75e('0xa'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0xe75e('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xc03442,_0x1a437a,_0x1295bb){var _0x3a7c44=_0x62ac00[_0xe75e('0xc')];var _0xae66b9=_0xc03442[_0xe75e('0xd')]({'plain':!![]});if(_0xae66b9['direction'][_0xe75e('0xe')]()==='in'||_0xae66b9[_0xe75e('0xf')][_0xe75e('0xe')]()===_0xe75e('0x10')&&!_0xae66b9[_0xe75e('0x11')]&&!_[_0xe75e('0x12')](_0xae66b9[_0xe75e('0x13')])){_0x3a7c44[_0xe75e('0x14')][_0xe75e('0x15')]({'where':{'id':_0xae66b9['ChatInteractionId']}})[_0xe75e('0x16')](function(_0x41ff7a){if(_0x41ff7a){_0x41ff7a[_0xe75e('0x17')]({'lastMsgAt':_0xae66b9[_0xe75e('0x18')],'lastMsgDirection':_0xae66b9[_0xe75e('0xf')][_0xe75e('0xe')]()});}})[_0xe75e('0x19')](function(_0x39076e){console[_0xe75e('0x1a')](_0x39076e);});}_0x1295bb();}},'charset':_0xe75e('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 0cc4a25..52946f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa65e=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','register','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateChatMessage','ChatMessage','create','body','options','raw','catch'];(function(_0x4a248b,_0x29e290){var _0x565f8c=function(_0x3944b1){while(--_0x3944b1){_0x4a248b['push'](_0x4a248b['shift']());}};_0x565f8c(++_0x29e290);}(_0xa65e,0x1ed));var _0xea65=function(_0x506d2f,_0x5ab76e){_0x506d2f=_0x506d2f-0x0;var _0x101255=_0xa65e[_0x506d2f];return _0x101255;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xea65('0x0'));var BPromise=require('bluebird');var rs=require(_0xea65('0x1'));var fs=require('fs');var Redis=require(_0xea65('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xea65('0x3'));var logger=require(_0xea65('0x4'))(_0xea65('0x5'));var config=require(_0xea65('0x6'));var jayson=require(_0xea65('0x7'));var client=jayson['client'][_0xea65('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0xea65('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xea65('0xa'))(new Redis(config[_0xea65('0x9')]));require('./chatMessage.socket')[_0xea65('0xb')](socket);function respondWithRpcPromise(_0x391db0,_0x38b4cb,_0x5d8eb2){return new BPromise(function(_0x489973,_0x328964){return client[_0xea65('0xc')](_0x391db0,_0x5d8eb2)['then'](function(_0xea0987){logger[_0xea65('0xd')](_0xea65('0xe'),_0x38b4cb,_0xea65('0xf'));logger[_0xea65('0x10')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x38b4cb,'request\x20sent',JSON[_0xea65('0x11')](_0xea0987));if(_0xea0987[_0xea65('0x12')]){if(_0xea0987[_0xea65('0x12')][_0xea65('0x13')]===0x1f4){logger[_0xea65('0x12')](_0xea65('0xe'),_0x38b4cb,_0xea0987['error']['message']);return _0x328964(_0xea0987[_0xea65('0x12')][_0xea65('0x14')]);}logger[_0xea65('0x12')](_0xea65('0xe'),_0x38b4cb,_0xea0987[_0xea65('0x12')][_0xea65('0x14')]);return _0x489973(_0xea0987['error'][_0xea65('0x14')]);}else{logger['info'](_0xea65('0xe'),_0x38b4cb,'request\x20sent');_0x489973(_0xea0987[_0xea65('0x15')][_0xea65('0x14')]);}})['catch'](function(_0x509625){logger[_0xea65('0x12')](_0xea65('0xe'),_0x38b4cb,_0x509625);_0x328964(_0x509625);});});}exports[_0xea65('0x16')]=function(_0x29bf0d){var _0x64248e=this;return new Promise(function(_0x3b1edc,_0x399c86){return db[_0xea65('0x17')][_0xea65('0x18')](_0x29bf0d[_0xea65('0x19')],{'raw':_0x29bf0d[_0xea65('0x1a')]?_0x29bf0d[_0xea65('0x1a')][_0xea65('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x59c558){logger[_0xea65('0xd')](_0xea65('0x16'),_0x29bf0d);logger[_0xea65('0x10')](_0xea65('0x16'),_0x29bf0d,JSON['stringify'](_0x59c558));_0x3b1edc(_0x59c558);})[_0xea65('0x1c')](function(_0xf5173){logger['error'](_0xea65('0x16'),_0xf5173[_0xea65('0x14')],_0x29bf0d);_0x399c86(_0x64248e[_0xea65('0x12')](0x1f4,_0xf5173[_0xea65('0x14')]));});});};
\ No newline at end of file
+var _0xe74c=['defaults','localhost','socket.io-emitter','register','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','ChatMessage,\x20%s,\x20%s','message','catch','CreateChatMessage','create','raw','then','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis'];(function(_0x37e65a,_0x26ff94){var _0x196bb9=function(_0x286efe){while(--_0x286efe){_0x37e65a['push'](_0x37e65a['shift']());}};_0x196bb9(++_0x26ff94);}(_0xe74c,0x1d3));var _0xce74=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xe74c[_0x521929];return _0x632436;};'use strict';var _=require(_0xce74('0x0'));var util=require(_0xce74('0x1'));var moment=require(_0xce74('0x2'));var BPromise=require(_0xce74('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xce74('0x4'));var db=require(_0xce74('0x5'))['db'];var utils=require(_0xce74('0x6'));var logger=require(_0xce74('0x7'))(_0xce74('0x8'));var config=require(_0xce74('0x9'));var jayson=require(_0xce74('0xa'));var client=jayson[_0xce74('0xb')]['http']({'port':0x232a});config[_0xce74('0xc')]=_[_0xce74('0xd')](config['redis'],{'host':_0xce74('0xe'),'port':0x18eb});var socket=require(_0xce74('0xf'))(new Redis(config['redis']));require('./chatMessage.socket')[_0xce74('0x10')](socket);function respondWithRpcPromise(_0xd05e7f,_0x3390ae,_0x516f9d){return new BPromise(function(_0x255e07,_0x342ab4){return client['request'](_0xd05e7f,_0x516f9d)['then'](function(_0x460631){logger[_0xce74('0x11')]('ChatMessage,\x20%s,\x20%s',_0x3390ae,_0xce74('0x12'));logger[_0xce74('0x13')](_0xce74('0x14'),_0x3390ae,_0xce74('0x12'),JSON['stringify'](_0x460631));if(_0x460631[_0xce74('0x15')]){if(_0x460631[_0xce74('0x15')]['code']===0x1f4){logger[_0xce74('0x15')](_0xce74('0x16'),_0x3390ae,_0x460631[_0xce74('0x15')][_0xce74('0x17')]);return _0x342ab4(_0x460631['error'][_0xce74('0x17')]);}logger[_0xce74('0x15')](_0xce74('0x16'),_0x3390ae,_0x460631[_0xce74('0x15')][_0xce74('0x17')]);return _0x255e07(_0x460631[_0xce74('0x15')]['message']);}else{logger[_0xce74('0x11')](_0xce74('0x16'),_0x3390ae,_0xce74('0x12'));_0x255e07(_0x460631['result'][_0xce74('0x17')]);}})[_0xce74('0x18')](function(_0x39fd05){logger['error'](_0xce74('0x16'),_0x3390ae,_0x39fd05);_0x342ab4(_0x39fd05);});});}exports[_0xce74('0x19')]=function(_0x28e3ca){var _0x1a3c8a=this;return new Promise(function(_0x2dc064,_0x21fd52){return db['ChatMessage'][_0xce74('0x1a')](_0x28e3ca['body'],{'raw':_0x28e3ca['options']?_0x28e3ca['options'][_0xce74('0x1b')]===undefined?!![]:![]:!![]})[_0xce74('0x1c')](function(_0x3a01a3){logger[_0xce74('0x11')]('CreateChatMessage',_0x28e3ca);logger['debug'](_0xce74('0x19'),_0x28e3ca,JSON[_0xce74('0x1d')](_0x3a01a3));_0x2dc064(_0x3a01a3);})['catch'](function(_0x5ddf0f){logger[_0xce74('0x15')](_0xce74('0x19'),_0x5ddf0f[_0xce74('0x17')],_0x28e3ca);_0x21fd52(_0x1a3c8a['error'](0x1f4,_0x5ddf0f[_0xce74('0x17')]));});});};
\ No newline at end of file
index a9fd043..4427829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['save','remove','update','removeListener','register','chatMessage:','./chatMessage.events'];(function(_0x4ab5ed,_0x31a779){var _0x851b24=function(_0xd3c3b9){while(--_0xd3c3b9){_0x4ab5ed['push'](_0x4ab5ed['shift']());}};_0x851b24(++_0x31a779);}(_0x98a8,0x12c));var _0x898a=function(_0x480ec9,_0x1d8014){_0x480ec9=_0x480ec9-0x0;var _0x18478c=_0x98a8[_0x480ec9];return _0x18478c;};'use strict';var ChatMessageEvents=require(_0x898a('0x0'));var events=[_0x898a('0x1'),_0x898a('0x2'),_0x898a('0x3')];function createListener(_0x213c5d,_0x226db7){return function(_0x69c61f){_0x226db7['emit'](_0x213c5d,_0x69c61f);};}function removeListener(_0x2bb3e2,_0xf84a19){return function(){ChatMessageEvents[_0x898a('0x4')](_0x2bb3e2,_0xf84a19);};}exports[_0x898a('0x5')]=function(_0x3e7ddd){for(var _0x5d7e59=0x0,_0x3aadc2=events['length'];_0x5d7e59<_0x3aadc2;_0x5d7e59++){var _0xfa8c50=events[_0x5d7e59];var _0x4fbce5=createListener(_0x898a('0x6')+_0xfa8c50,_0x3e7ddd);ChatMessageEvents['on'](_0xfa8c50,_0x4fbce5);}};
\ No newline at end of file
+var _0xb138=['update','removeListener','length','./chatMessage.events','save','remove'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0xb138,0x1dd));var _0x8b13=function(_0x4fcb74,_0x293300){_0x4fcb74=_0x4fcb74-0x0;var _0x1515c1=_0xb138[_0x4fcb74];return _0x1515c1;};'use strict';var ChatMessageEvents=require(_0x8b13('0x0'));var events=[_0x8b13('0x1'),_0x8b13('0x2'),_0x8b13('0x3')];function createListener(_0xadad70,_0x185752){return function(_0x20c65c){_0x185752['emit'](_0xadad70,_0x20c65c);};}function removeListener(_0x4411a0,_0x241acb){return function(){ChatMessageEvents[_0x8b13('0x4')](_0x4411a0,_0x241acb);};}exports['register']=function(_0xd19a0f){for(var _0x13f7bd=0x0,_0x5d51b1=events[_0x8b13('0x5')];_0x13f7bd<_0x5d51b1;_0x13f7bd++){var _0x33d1a7=events[_0x13f7bd];var _0x22e157=createListener('chatMessage:'+_0x33d1a7,_0xd19a0f);ChatMessageEvents['on'](_0x33d1a7,_0x22e157);}};
\ No newline at end of file
index 3d6a6d1..b4b1d22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae50=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','put','accept','/:id/reject','reject','delete','destroy','multer','util','path'];(function(_0x330e56,_0x175f5a){var _0x589c07=function(_0x1639a7){while(--_0x1639a7){_0x330e56['push'](_0x330e56['shift']());}};_0x589c07(++_0x175f5a);}(_0xae50,0x7a));var _0x0ae5=function(_0x1ac6e5,_0x40f47f){_0x1ac6e5=_0x1ac6e5-0x0;var _0x5877dc=_0xae50[_0x1ac6e5];return _0x5877dc;};'use strict';var multer=require(_0x0ae5('0x0'));var util=require(_0x0ae5('0x1'));var path=require(_0x0ae5('0x2'));var timeout=require(_0x0ae5('0x3'));var express=require('express');var router=express[_0x0ae5('0x4')]();var fs_extra=require(_0x0ae5('0x5'));var auth=require(_0x0ae5('0x6'));var interaction=require(_0x0ae5('0x7'));var config=require(_0x0ae5('0x8'));var controller=require('./chatMessage.controller');router[_0x0ae5('0x9')]('/',auth[_0x0ae5('0xa')](),controller[_0x0ae5('0xb')]);router[_0x0ae5('0x9')](_0x0ae5('0xc'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0xd')]);router['get'](_0x0ae5('0xe'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0xf')]);router[_0x0ae5('0x10')]('/',auth['isAuthenticated'](),interaction[_0x0ae5('0x11')](_0x0ae5('0x12'),'chatmessage:create'),controller['create']);router[_0x0ae5('0x13')](_0x0ae5('0xe'),controller['update']);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x0ae5('0x14')]);router[_0x0ae5('0x13')](_0x0ae5('0x15'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0x16')]);router[_0x0ae5('0x17')](_0x0ae5('0xe'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xd81a=['chat','/:id','update','put','accept','/:id/reject','reject','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatMessage.controller','get','isAuthenticated','/describe','show','tracked'];(function(_0x3d5fdc,_0x12bdfc){var _0x2a0a34=function(_0x820b49){while(--_0x820b49){_0x3d5fdc['push'](_0x3d5fdc['shift']());}};_0x2a0a34(++_0x12bdfc);}(_0xd81a,0x127));var _0xad81=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd81a[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0xad81('0x0'));var path=require(_0xad81('0x1'));var timeout=require('connect-timeout');var express=require(_0xad81('0x2'));var router=express[_0xad81('0x3')]();var fs_extra=require(_0xad81('0x4'));var auth=require(_0xad81('0x5'));var interaction=require(_0xad81('0x6'));var config=require('../../config/environment');var controller=require(_0xad81('0x7'));router[_0xad81('0x8')]('/',auth[_0xad81('0x9')](),controller['index']);router['get'](_0xad81('0xa'),auth[_0xad81('0x9')](),controller['describe']);router[_0xad81('0x8')]('/:id',auth[_0xad81('0x9')](),controller[_0xad81('0xb')]);router['post']('/',auth[_0xad81('0x9')](),interaction[_0xad81('0xc')](_0xad81('0xd'),'chatmessage:create'),controller['create']);router['put'](_0xad81('0xe'),controller[_0xad81('0xf')]);router[_0xad81('0x10')]('/:id/accept',auth[_0xad81('0x9')](),controller[_0xad81('0x11')]);router[_0xad81('0x10')](_0xad81('0x12'),auth['isAuthenticated'](),controller[_0xad81('0x13')]);router['delete'](_0xad81('0xe'),auth[_0xad81('0x9')](),controller[_0xad81('0x14')]);module[_0xad81('0x15')]=router;
\ No newline at end of file
index df8e904..58eb3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa08e=['medium','exports'];(function(_0x2a3b70,_0x137f86){var _0x376380=function(_0x46ac67){while(--_0x46ac67){_0x2a3b70['push'](_0x2a3b70['shift']());}};_0x376380(++_0x137f86);}(_0xa08e,0x13f));var _0xea08=function(_0x4d2993,_0x1c9473){_0x4d2993=_0x4d2993-0x0;var _0x427374=_0xa08e[_0x4d2993];return _0x427374;};'use strict';var Sequelize=require('sequelize');module[_0xea08('0x0')]={'body':{'type':Sequelize['TEXT'](_0xea08('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0xed57=['medium','sequelize','exports'];(function(_0x4ec714,_0x3424a6){var _0x35b334=function(_0x3d1d50){while(--_0x3d1d50){_0x4ec714['push'](_0x4ec714['shift']());}};_0x35b334(++_0x3424a6);}(_0xed57,0x133));var _0x7ed5=function(_0x1fc486,_0xd2bb41){_0x1fc486=_0x1fc486-0x0;var _0x44ad65=_0xed57[_0x1fc486];return _0x44ad65;};'use strict';var Sequelize=require(_0x7ed5('0x0'));module[_0x7ed5('0x1')]={'body':{'type':Sequelize['TEXT'](_0x7ed5('0x2')),'allowNull':![]}};
\ No newline at end of file
index 2e586fc..0f3237d 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(_0x392d4a,_0x1a3872){var _0x1edd3a=function(_0x18c37f){while(--_0x18c37f){_0x392d4a['push'](_0x392d4a['shift']());}};_0x1edd3a(++_0x1a3872);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _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(_0x206fe4,_0x1825be){var _0x1540b4=function(_0x501fba){while(--_0x501fba){_0x206fe4['push'](_0x206fe4['shift']());}};_0x1540b4(++_0x1825be);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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
index 1d1afd1..0c7072c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32cb=['exports','define','ChatOfflineMessage','chat_offline_messages','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./chatOfflineMessage.attributes'];(function(_0x2d40f1,_0x105608){var _0x2a9e19=function(_0x342df1){while(--_0x342df1){_0x2d40f1['push'](_0x2d40f1['shift']());}};_0x2a9e19(++_0x105608);}(_0x32cb,0x1cb));var _0xb32c=function(_0x4fc1e9,_0x275e2e){_0x4fc1e9=_0x4fc1e9-0x0;var _0x47d4aa=_0x32cb[_0x4fc1e9];return _0x47d4aa;};'use strict';var _=require(_0xb32c('0x0'));var util=require(_0xb32c('0x1'));var logger=require(_0xb32c('0x2'))(_0xb32c('0x3'));var moment=require(_0xb32c('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb32c('0x5'));var rimraf=require(_0xb32c('0x6'));var config=require(_0xb32c('0x7'));var attributes=require(_0xb32c('0x8'));module[_0xb32c('0x9')]=function(_0x4c838f,_0x46380e){return _0x4c838f[_0xb32c('0xa')](_0xb32c('0xb'),attributes,{'tableName':_0xb32c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf91a=['bluebird','request-promise','path','rimraf','../../config/environment','./chatOfflineMessage.attributes','ChatOfflineMessage','chat_offline_messages','utf8mb4','lodash','util','../../config/logger','api','moment'];(function(_0x1ed442,_0x4921dd){var _0x3bb657=function(_0x15aff5){while(--_0x15aff5){_0x1ed442['push'](_0x1ed442['shift']());}};_0x3bb657(++_0x4921dd);}(_0xf91a,0x113));var _0xaf91=function(_0x3f72c8,_0x337443){_0x3f72c8=_0x3f72c8-0x0;var _0x4c14dd=_0xf91a[_0x3f72c8];return _0x4c14dd;};'use strict';var _=require(_0xaf91('0x0'));var util=require(_0xaf91('0x1'));var logger=require(_0xaf91('0x2'))(_0xaf91('0x3'));var moment=require(_0xaf91('0x4'));var BPromise=require(_0xaf91('0x5'));var rp=require(_0xaf91('0x6'));var fs=require('fs');var path=require(_0xaf91('0x7'));var rimraf=require(_0xaf91('0x8'));var config=require(_0xaf91('0x9'));var attributes=require(_0xaf91('0xa'));module['exports']=function(_0x117f5e,_0x27a896){return _0x117f5e['define'](_0xaf91('0xb'),attributes,{'tableName':_0xaf91('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaf91('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 596b56c..0998554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe29d=['code','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3ac4be,_0x2a02f8){var _0x94f1d3=function(_0x4f9035){while(--_0x4f9035){_0x3ac4be['push'](_0x3ac4be['shift']());}};_0x94f1d3(++_0x2a02f8);}(_0xe29d,0x1a7));var _0xde29=function(_0x387e58,_0x16a12e){_0x387e58=_0x387e58-0x0;var _0x344dfd=_0xe29d[_0x387e58];return _0x344dfd;};'use strict';var _=require(_0xde29('0x0'));var util=require(_0xde29('0x1'));var moment=require(_0xde29('0x2'));var BPromise=require('bluebird');var rs=require(_0xde29('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xde29('0x4'))['db'];var utils=require(_0xde29('0x5'));var logger=require(_0xde29('0x6'))('rpc');var config=require(_0xde29('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xde29('0x8')][_0xde29('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x29b12e,_0x2ebef9,_0x2d6e06){return new BPromise(function(_0x2b2843,_0x1133fc){return client[_0xde29('0xa')](_0x29b12e,_0x2d6e06)[_0xde29('0xb')](function(_0x10e3d5){logger[_0xde29('0xc')](_0xde29('0xd'),_0x2ebef9,_0xde29('0xe'));logger['debug'](_0xde29('0xf'),_0x2ebef9,_0xde29('0xe'),JSON[_0xde29('0x10')](_0x10e3d5));if(_0x10e3d5[_0xde29('0x11')]){if(_0x10e3d5[_0xde29('0x11')][_0xde29('0x12')]===0x1f4){logger[_0xde29('0x11')]('ChatOfflineMessage,\x20%s,\x20%s',_0x2ebef9,_0x10e3d5[_0xde29('0x11')][_0xde29('0x13')]);return _0x1133fc(_0x10e3d5[_0xde29('0x11')][_0xde29('0x13')]);}logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x2ebef9,_0x10e3d5[_0xde29('0x11')]['message']);return _0x2b2843(_0x10e3d5[_0xde29('0x11')][_0xde29('0x13')]);}else{logger[_0xde29('0xc')](_0xde29('0xd'),_0x2ebef9,_0xde29('0xe'));_0x2b2843(_0x10e3d5['result'][_0xde29('0x13')]);}})[_0xde29('0x14')](function(_0x147960){logger[_0xde29('0x11')](_0xde29('0xd'),_0x2ebef9,_0x147960);_0x1133fc(_0x147960);});});}
\ No newline at end of file
+var _0xdc97=['ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x404581,_0x447ff0){var _0x5d8afc=function(_0x25e3cd){while(--_0x25e3cd){_0x404581['push'](_0x404581['shift']());}};_0x5d8afc(++_0x447ff0);}(_0xdc97,0x13b));var _0x7dc9=function(_0x35640d,_0x430510){_0x35640d=_0x35640d-0x0;var _0x3ffca5=_0xdc97[_0x35640d];return _0x3ffca5;};'use strict';var _=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var moment=require(_0x7dc9('0x2'));var BPromise=require('bluebird');var rs=require(_0x7dc9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7dc9('0x4'))['db'];var utils=require(_0x7dc9('0x5'));var logger=require('../../config/logger')(_0x7dc9('0x6'));var config=require(_0x7dc9('0x7'));var jayson=require(_0x7dc9('0x8'));var client=jayson[_0x7dc9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2636ef,_0x4f91c7,_0x4b3229){return new BPromise(function(_0x2ff923,_0x23737d){return client[_0x7dc9('0xa')](_0x2636ef,_0x4b3229)[_0x7dc9('0xb')](function(_0x3dd07e){logger['info'](_0x7dc9('0xc'),_0x4f91c7,_0x7dc9('0xd'));logger[_0x7dc9('0xe')](_0x7dc9('0xf'),_0x4f91c7,_0x7dc9('0xd'),JSON[_0x7dc9('0x10')](_0x3dd07e));if(_0x3dd07e[_0x7dc9('0x11')]){if(_0x3dd07e['error']['code']===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x4f91c7,_0x3dd07e[_0x7dc9('0x11')][_0x7dc9('0x12')]);return _0x23737d(_0x3dd07e['error'][_0x7dc9('0x12')]);}logger[_0x7dc9('0x11')](_0x7dc9('0xc'),_0x4f91c7,_0x3dd07e[_0x7dc9('0x11')][_0x7dc9('0x12')]);return _0x2ff923(_0x3dd07e[_0x7dc9('0x11')]['message']);}else{logger[_0x7dc9('0x13')](_0x7dc9('0xc'),_0x4f91c7,_0x7dc9('0xd'));_0x2ff923(_0x3dd07e[_0x7dc9('0x14')][_0x7dc9('0x12')]);}})[_0x7dc9('0x15')](function(_0x45698c){logger[_0x7dc9('0x11')](_0x7dc9('0xc'),_0x4f91c7,_0x45698c);_0x23737d(_0x45698c);});});}
\ No newline at end of file
index afd22fb..783cfe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x230b=['put','update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','/:id','show','post'];(function(_0x59e7e0,_0x3ec148){var _0x26b058=function(_0x212ee2){while(--_0x212ee2){_0x59e7e0['push'](_0x59e7e0['shift']());}};_0x26b058(++_0x3ec148);}(_0x230b,0x1a6));var _0xb230=function(_0x43b151,_0x16ac3a){_0x43b151=_0x43b151-0x0;var _0x8eba96=_0x230b[_0x43b151];return _0x8eba96;};'use strict';var multer=require('multer');var util=require(_0xb230('0x0'));var path=require(_0xb230('0x1'));var timeout=require('connect-timeout');var express=require(_0xb230('0x2'));var router=express[_0xb230('0x3')]();var fs_extra=require(_0xb230('0x4'));var auth=require(_0xb230('0x5'));var interaction=require(_0xb230('0x6'));var config=require(_0xb230('0x7'));var controller=require(_0xb230('0x8'));router[_0xb230('0x9')]('/',auth[_0xb230('0xa')](),controller['index']);router[_0xb230('0x9')](_0xb230('0xb'),auth[_0xb230('0xa')](),controller['describe']);router[_0xb230('0x9')](_0xb230('0xc'),auth[_0xb230('0xa')](),controller[_0xb230('0xd')]);router[_0xb230('0xe')]('/',auth[_0xb230('0xa')](),controller['create']);router[_0xb230('0xf')](_0xb230('0xc'),auth['isAuthenticated'](),controller[_0xb230('0x10')]);router[_0xb230('0x11')](_0xb230('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xb230('0x12')]=router;
\ No newline at end of file
+var _0x2c4d=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','put'];(function(_0x2213b8,_0x2e2858){var _0x1dae5d=function(_0xc3fe35){while(--_0xc3fe35){_0x2213b8['push'](_0x2213b8['shift']());}};_0x1dae5d(++_0x2e2858);}(_0x2c4d,0x129));var _0xd2c4=function(_0x35aeb5,_0x4e8855){_0x35aeb5=_0x35aeb5-0x0;var _0x18fcec=_0x2c4d[_0x35aeb5];return _0x18fcec;};'use strict';var multer=require(_0xd2c4('0x0'));var util=require(_0xd2c4('0x1'));var path=require('path');var timeout=require(_0xd2c4('0x2'));var express=require(_0xd2c4('0x3'));var router=express[_0xd2c4('0x4')]();var fs_extra=require(_0xd2c4('0x5'));var auth=require(_0xd2c4('0x6'));var interaction=require(_0xd2c4('0x7'));var config=require(_0xd2c4('0x8'));var controller=require('./chatOfflineMessage.controller');router[_0xd2c4('0x9')]('/',auth[_0xd2c4('0xa')](),controller[_0xd2c4('0xb')]);router[_0xd2c4('0x9')](_0xd2c4('0xc'),auth['isAuthenticated'](),controller[_0xd2c4('0xd')]);router[_0xd2c4('0x9')](_0xd2c4('0xe'),auth[_0xd2c4('0xa')](),controller['show']);router[_0xd2c4('0xf')]('/',auth[_0xd2c4('0xa')](),controller[_0xd2c4('0x10')]);router[_0xd2c4('0x11')](_0xd2c4('0xe'),auth[_0xd2c4('0xa')](),controller['update']);router[_0xd2c4('0x12')](_0xd2c4('0xe'),auth[_0xd2c4('0xa')](),controller[_0xd2c4('0x13')]);module[_0xd2c4('0x14')]=router;
\ No newline at end of file
index d845ed3..6a7e7e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf22=['sequelize','exports','ENUM','timeout','STRING','INTEGER'];(function(_0x57d8b1,_0x102b40){var _0x489ef1=function(_0x1a48a5){while(--_0x1a48a5){_0x57d8b1['push'](_0x57d8b1['shift']());}};_0x489ef1(++_0x102b40);}(_0xbf22,0x15c));var _0x2bf2=function(_0x44f89a,_0x3f0a4b){_0x44f89a=_0x44f89a-0x0;var _0x3ba3c5=_0xbf22[_0x44f89a];return _0x3ba3c5;};'use strict';var Sequelize=require(_0x2bf2('0x0'));module[_0x2bf2('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x2bf2('0x2')]('mouseOver',_0x2bf2('0x3')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x2bf2('0x4')]},'timeout':{'type':Sequelize[_0x2bf2('0x5')]}};
\ No newline at end of file
+var _0x3f42=['STRING','ENUM','mouseOver','sequelize'];(function(_0x574579,_0x4be521){var _0x17a288=function(_0x89e312){while(--_0x89e312){_0x574579['push'](_0x574579['shift']());}};_0x17a288(++_0x4be521);}(_0x3f42,0xd3));var _0x23f4=function(_0xd3d046,_0x49bff0){_0xd3d046=_0xd3d046-0x0;var _0x47f179=_0x3f42[_0xd3d046];return _0x47f179;};'use strict';var Sequelize=require(_0x23f4('0x0'));module['exports']={'name':{'type':Sequelize[_0x23f4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x23f4('0x2')](_0x23f4('0x3'),'timeout'),'defaultValue':_0x23f4('0x3')},'selector':{'type':Sequelize[_0x23f4('0x1')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 83bbf54..e19532e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b2=['sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','then','stack','name','send','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','model','fields','attributes','length','options','find','catch','create','body','destroy','params','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','fs-extra','squel','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'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xd5b2,0x10e));var _0x2d5b=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xd5b2[_0x3ff085];return _0x2b68c3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2d5b('0x0'));var zipdir=require(_0x2d5b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2d5b('0x2'));var moment=require(_0x2d5b('0x3'));var BPromise=require(_0x2d5b('0x4'));var Mustache=require(_0x2d5b('0x5'));var util=require(_0x2d5b('0x6'));var path=require(_0x2d5b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2d5b('0x8'));var _=require('lodash');var squel=require(_0x2d5b('0x9'));var crypto=require('crypto');var jsforce=require(_0x2d5b('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x2d5b('0xb'));var querystring=require(_0x2d5b('0xc'));var Papa=require(_0x2d5b('0xd'));var Redis=require(_0x2d5b('0xe'));var authService=require(_0x2d5b('0xf'));var qs=require(_0x2d5b('0x10'));var as=require(_0x2d5b('0x11'));var hardwareService=require(_0x2d5b('0x12'));var logger=require(_0x2d5b('0x13'))(_0x2d5b('0x14'));var utils=require(_0x2d5b('0x15'));var config=require(_0x2d5b('0x16'));var licenseUtil=require(_0x2d5b('0x17'));var db=require(_0x2d5b('0x18'))['db'];function respondWithStatusCode(_0x594fad,_0x4a45b6){_0x4a45b6=_0x4a45b6||0xcc;return function(_0x327b75){if(_0x327b75){return _0x594fad[_0x2d5b('0x19')](_0x4a45b6);}return _0x594fad[_0x2d5b('0x1a')](_0x4a45b6)[_0x2d5b('0x1b')]();};}function respondWithResult(_0x40ec2c,_0x461969){_0x461969=_0x461969||0xc8;return function(_0x48d993){if(_0x48d993){return _0x40ec2c[_0x2d5b('0x1a')](_0x461969)['json'](_0x48d993);}};}function respondWithFilteredResult(_0x1a5624,_0x3ffe86){return function(_0x5e22bf){if(_0x5e22bf){var _0x1c5ee6=typeof _0x3ffe86[_0x2d5b('0x1c')]==='undefined'&&typeof _0x3ffe86[_0x2d5b('0x1d')]===_0x2d5b('0x1e');var _0x4cecb5=_0x5e22bf[_0x2d5b('0x1f')];var _0x2d4715=_0x1c5ee6?0x0:_0x3ffe86[_0x2d5b('0x1c')];var _0x8c32cc=_0x1c5ee6?_0x5e22bf[_0x2d5b('0x1f')]:_0x3ffe86[_0x2d5b('0x1c')]+_0x3ffe86[_0x2d5b('0x1d')];var _0x4f81db;if(_0x8c32cc>=_0x4cecb5){_0x8c32cc=_0x4cecb5;_0x4f81db=0xc8;}else{_0x4f81db=0xce;}_0x1a5624[_0x2d5b('0x1a')](_0x4f81db);return _0x1a5624[_0x2d5b('0x20')](_0x2d5b('0x21'),_0x2d4715+'-'+_0x8c32cc+'/'+_0x4cecb5)[_0x2d5b('0x22')](_0x5e22bf);}return null;};}function patchUpdates(_0x4a5201){return function(_0x13a713){try{jsonpatch['apply'](_0x13a713,_0x4a5201,!![]);}catch(_0xc3bd09){return BPromise[_0x2d5b('0x23')](_0xc3bd09);}return _0x13a713[_0x2d5b('0x24')]();};}function saveUpdates(_0x1f4902,_0x4521b3){return function(_0x52cd78){if(_0x52cd78){return _0x52cd78[_0x2d5b('0x25')](_0x1f4902)[_0x2d5b('0x26')](function(_0x5e93a5){return _0x5e93a5;});}return null;};}function removeEntity(_0x4e8372,_0x30336e){return function(_0x3089ac){if(_0x3089ac){return _0x3089ac['destroy']()['then'](function(){_0x4e8372[_0x2d5b('0x1a')](0xcc)[_0x2d5b('0x1b')]();});}};}function handleEntityNotFound(_0x52363c,_0x1cb328){return function(_0x1ce508){if(!_0x1ce508){_0x52363c[_0x2d5b('0x19')](0x194);}return _0x1ce508;};}function handleError(_0x110207,_0x365d82){_0x365d82=_0x365d82||0x1f4;return function(_0x51e47c){logger['error'](_0x51e47c[_0x2d5b('0x27')]);if(_0x51e47c[_0x2d5b('0x28')]){delete _0x51e47c[_0x2d5b('0x28')];}_0x110207[_0x2d5b('0x1a')](_0x365d82)[_0x2d5b('0x29')](_0x51e47c);};}exports['show']=function(_0x8e8fbc,_0x3a3966){var _0x3e30ae={'raw':!![],'where':{'id':_0x8e8fbc['params']['id']}},_0x2254d0={};_0x2254d0['model']=_[_0x2d5b('0x2a')](db[_0x2d5b('0x2b')][_0x2d5b('0x2c')]);_0x2254d0[_0x2d5b('0x2d')]=_[_0x2d5b('0x2a')](_0x8e8fbc[_0x2d5b('0x2d')]);_0x2254d0[_0x2d5b('0x2e')]=_[_0x2d5b('0x2f')](_0x2254d0['model'],_0x2254d0[_0x2d5b('0x2d')]);_0x3e30ae['attributes']=_[_0x2d5b('0x2f')](_0x2254d0[_0x2d5b('0x30')],qs['fields'](_0x8e8fbc[_0x2d5b('0x2d')][_0x2d5b('0x31')]));_0x3e30ae[_0x2d5b('0x32')]=_0x3e30ae[_0x2d5b('0x32')][_0x2d5b('0x33')]?_0x3e30ae[_0x2d5b('0x32')]:_0x2254d0['model'];if(_0x8e8fbc[_0x2d5b('0x2d')]['includeAll']){_0x3e30ae['include']=[{'all':!![]}];}_0x3e30ae=_['merge']({},_0x3e30ae,_0x8e8fbc[_0x2d5b('0x34')]);return db[_0x2d5b('0x2b')][_0x2d5b('0x35')](_0x3e30ae)[_0x2d5b('0x26')](handleEntityNotFound(_0x3a3966,null))[_0x2d5b('0x26')](respondWithResult(_0x3a3966,null))[_0x2d5b('0x36')](handleError(_0x3a3966,null));};exports[_0x2d5b('0x37')]=function(_0x55ea7b,_0x5f0b1a){return db[_0x2d5b('0x2b')][_0x2d5b('0x37')](_0x55ea7b[_0x2d5b('0x38')],{})['then'](respondWithResult(_0x5f0b1a,0xc9))[_0x2d5b('0x36')](handleError(_0x5f0b1a,null));};exports[_0x2d5b('0x25')]=function(_0x586891,_0x22aeb4){if(_0x586891[_0x2d5b('0x38')]['id']){delete _0x586891[_0x2d5b('0x38')]['id'];}return db[_0x2d5b('0x2b')]['find']({'where':{'id':_0x586891['params']['id']}})[_0x2d5b('0x26')](handleEntityNotFound(_0x22aeb4,null))['then'](saveUpdates(_0x586891[_0x2d5b('0x38')],null))[_0x2d5b('0x26')](respondWithResult(_0x22aeb4,null))[_0x2d5b('0x36')](handleError(_0x22aeb4,null));};exports[_0x2d5b('0x39')]=function(_0x2482a4,_0x292d02){return db[_0x2d5b('0x2b')][_0x2d5b('0x35')]({'where':{'id':_0x2482a4[_0x2d5b('0x3a')]['id']}})['then'](handleEntityNotFound(_0x292d02,null))[_0x2d5b('0x26')](removeEntity(_0x292d02,null))['catch'](handleError(_0x292d02,null));};
\ No newline at end of file
+var _0xbe2a=['util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','attributes','intersection','fields','length','include','find','then','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x211f74,_0xf974d3){var _0x10080f=function(_0x1389f5){while(--_0x1389f5){_0x211f74['push'](_0x211f74['shift']());}};_0x10080f(++_0xf974d3);}(_0xbe2a,0x1d9));var _0xabe2=function(_0x23b5ec,_0x27bdfc){_0x23b5ec=_0x23b5ec-0x0;var _0x497f1f=_0xbe2a[_0x23b5ec];return _0x497f1f;};'use strict';var emlformat=require(_0xabe2('0x0'));var rimraf=require(_0xabe2('0x1'));var zipdir=require(_0xabe2('0x2'));var jsonpatch=require(_0xabe2('0x3'));var rp=require(_0xabe2('0x4'));var moment=require(_0xabe2('0x5'));var BPromise=require(_0xabe2('0x6'));var Mustache=require('mustache');var util=require(_0xabe2('0x7'));var path=require('path');var sox=require(_0xabe2('0x8'));var csv=require(_0xabe2('0x9'));var ejs=require(_0xabe2('0xa'));var fs=require('fs');var fs_extra=require(_0xabe2('0xb'));var _=require(_0xabe2('0xc'));var squel=require(_0xabe2('0xd'));var crypto=require('crypto');var jsforce=require(_0xabe2('0xe'));var deskjs=require(_0xabe2('0xf'));var toCsv=require(_0xabe2('0x9'));var querystring=require(_0xabe2('0x10'));var Papa=require(_0xabe2('0x11'));var Redis=require(_0xabe2('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xabe2('0x13'));var as=require(_0xabe2('0x14'));var hardwareService=require(_0xabe2('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xabe2('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xabe2('0x17'))['db'];function respondWithStatusCode(_0x26febe,_0x4fb156){_0x4fb156=_0x4fb156||0xcc;return function(_0x5773a1){if(_0x5773a1){return _0x26febe[_0xabe2('0x18')](_0x4fb156);}return _0x26febe[_0xabe2('0x19')](_0x4fb156)[_0xabe2('0x1a')]();};}function respondWithResult(_0x11bbee,_0x7aaa50){_0x7aaa50=_0x7aaa50||0xc8;return function(_0xb8343d){if(_0xb8343d){return _0x11bbee[_0xabe2('0x19')](_0x7aaa50)[_0xabe2('0x1b')](_0xb8343d);}};}function respondWithFilteredResult(_0x4196fd,_0x2bea88){return function(_0x5320d9){if(_0x5320d9){var _0x3dd6d9=typeof _0x2bea88[_0xabe2('0x1c')]===_0xabe2('0x1d')&&typeof _0x2bea88['limit']===_0xabe2('0x1d');var _0x59d667=_0x5320d9[_0xabe2('0x1e')];var _0x2d4bba=_0x3dd6d9?0x0:_0x2bea88['offset'];var _0x190b08=_0x3dd6d9?_0x5320d9[_0xabe2('0x1e')]:_0x2bea88['offset']+_0x2bea88[_0xabe2('0x1f')];var _0x145a9d;if(_0x190b08>=_0x59d667){_0x190b08=_0x59d667;_0x145a9d=0xc8;}else{_0x145a9d=0xce;}_0x4196fd['status'](_0x145a9d);return _0x4196fd[_0xabe2('0x20')](_0xabe2('0x21'),_0x2d4bba+'-'+_0x190b08+'/'+_0x59d667)[_0xabe2('0x1b')](_0x5320d9);}return null;};}function patchUpdates(_0x4a5f75){return function(_0x2004d4){try{jsonpatch[_0xabe2('0x22')](_0x2004d4,_0x4a5f75,!![]);}catch(_0x29a7b6){return BPromise[_0xabe2('0x23')](_0x29a7b6);}return _0x2004d4[_0xabe2('0x24')]();};}function saveUpdates(_0x4456f1,_0x5ad39d){return function(_0x237a41){if(_0x237a41){return _0x237a41[_0xabe2('0x25')](_0x4456f1)['then'](function(_0x4ea837){return _0x4ea837;});}return null;};}function removeEntity(_0x174337,_0xe592c2){return function(_0x1558a6){if(_0x1558a6){return _0x1558a6[_0xabe2('0x26')]()['then'](function(){_0x174337[_0xabe2('0x19')](0xcc)[_0xabe2('0x1a')]();});}};}function handleEntityNotFound(_0x2c0c92,_0x49cd80){return function(_0x3857cd){if(!_0x3857cd){_0x2c0c92[_0xabe2('0x18')](0x194);}return _0x3857cd;};}function handleError(_0x4904d9,_0x7b1d){_0x7b1d=_0x7b1d||0x1f4;return function(_0x3cd356){logger['error'](_0x3cd356[_0xabe2('0x27')]);if(_0x3cd356['name']){delete _0x3cd356[_0xabe2('0x28')];}_0x4904d9[_0xabe2('0x19')](_0x7b1d)[_0xabe2('0x29')](_0x3cd356);};}exports[_0xabe2('0x2a')]=function(_0x302919,_0x2b2535){var _0x293e3e={'raw':!![],'where':{'id':_0x302919[_0xabe2('0x2b')]['id']}},_0x4a8738={};_0x4a8738[_0xabe2('0x2c')]=_[_0xabe2('0x2d')](db[_0xabe2('0x2e')][_0xabe2('0x2f')]);_0x4a8738['query']=_[_0xabe2('0x2d')](_0x302919[_0xabe2('0x30')]);_0x4a8738[_0xabe2('0x31')]=_['intersection'](_0x4a8738[_0xabe2('0x2c')],_0x4a8738[_0xabe2('0x30')]);_0x293e3e[_0xabe2('0x32')]=_[_0xabe2('0x33')](_0x4a8738[_0xabe2('0x2c')],qs[_0xabe2('0x34')](_0x302919['query']['fields']));_0x293e3e['attributes']=_0x293e3e['attributes'][_0xabe2('0x35')]?_0x293e3e[_0xabe2('0x32')]:_0x4a8738['model'];if(_0x302919[_0xabe2('0x30')]['includeAll']){_0x293e3e[_0xabe2('0x36')]=[{'all':!![]}];}_0x293e3e=_['merge']({},_0x293e3e,_0x302919['options']);return db[_0xabe2('0x2e')][_0xabe2('0x37')](_0x293e3e)[_0xabe2('0x38')](handleEntityNotFound(_0x2b2535,null))[_0xabe2('0x38')](respondWithResult(_0x2b2535,null))[_0xabe2('0x39')](handleError(_0x2b2535,null));};exports[_0xabe2('0x3a')]=function(_0x4dcdcb,_0x56fe5b){return db['ChatProactiveAction'][_0xabe2('0x3a')](_0x4dcdcb[_0xabe2('0x3b')],{})['then'](respondWithResult(_0x56fe5b,0xc9))[_0xabe2('0x39')](handleError(_0x56fe5b,null));};exports['update']=function(_0x510ca1,_0x438d68){if(_0x510ca1['body']['id']){delete _0x510ca1[_0xabe2('0x3b')]['id'];}return db[_0xabe2('0x2e')][_0xabe2('0x37')]({'where':{'id':_0x510ca1[_0xabe2('0x2b')]['id']}})[_0xabe2('0x38')](handleEntityNotFound(_0x438d68,null))[_0xabe2('0x38')](saveUpdates(_0x510ca1[_0xabe2('0x3b')],null))[_0xabe2('0x38')](respondWithResult(_0x438d68,null))['catch'](handleError(_0x438d68,null));};exports['destroy']=function(_0x19236e,_0x415cea){return db['ChatProactiveAction'][_0xabe2('0x37')]({'where':{'id':_0x19236e[_0xabe2('0x2b')]['id']}})[_0xabe2('0x38')](handleEntityNotFound(_0x415cea,null))[_0xabe2('0x38')](removeEntity(_0x415cea,null))[_0xabe2('0x39')](handleError(_0x415cea,null));};
\ No newline at end of file
index 7a8db5d..45a1552 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dd8=['rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xd96342,_0x495404){var _0x211562=function(_0x551c7b){while(--_0x551c7b){_0xd96342['push'](_0xd96342['shift']());}};_0x211562(++_0x495404);}(_0x7dd8,0x1c0));var _0x87dd=function(_0x1d0499,_0x23e22f){_0x1d0499=_0x1d0499-0x0;var _0x153fb3=_0x7dd8[_0x1d0499];return _0x153fb3;};'use strict';var _=require(_0x87dd('0x0'));var util=require(_0x87dd('0x1'));var logger=require(_0x87dd('0x2'))(_0x87dd('0x3'));var moment=require(_0x87dd('0x4'));var BPromise=require(_0x87dd('0x5'));var rp=require(_0x87dd('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x87dd('0x7'));var config=require(_0x87dd('0x8'));var attributes=require(_0x87dd('0x9'));module[_0x87dd('0xa')]=function(_0x11452d,_0x298914){return _0x11452d[_0x87dd('0xb')](_0x87dd('0xc'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21e4=['request-promise','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction','lodash','../../config/logger','api','moment','bluebird'];(function(_0x439a6f,_0x4c43e0){var _0x62756=function(_0xf5909d){while(--_0xf5909d){_0x439a6f['push'](_0x439a6f['shift']());}};_0x62756(++_0x4c43e0);}(_0x21e4,0x1cf));var _0x421e=function(_0x5df103,_0x26548d){_0x5df103=_0x5df103-0x0;var _0x2b4b3b=_0x21e4[_0x5df103];return _0x2b4b3b;};'use strict';var _=require(_0x421e('0x0'));var util=require('util');var logger=require(_0x421e('0x1'))(_0x421e('0x2'));var moment=require(_0x421e('0x3'));var BPromise=require(_0x421e('0x4'));var rp=require(_0x421e('0x5'));var fs=require('fs');var path=require(_0x421e('0x6'));var rimraf=require(_0x421e('0x7'));var config=require(_0x421e('0x8'));var attributes=require(_0x421e('0x9'));module[_0x421e('0xa')]=function(_0x3c6226,_0x5c5e13){return _0x3c6226['define'](_0x421e('0xb'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2df68c6..f122734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1e2=['stringify','error','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s'];(function(_0x36038c,_0x6af7a2){var _0x5168b3=function(_0x4aadc3){while(--_0x4aadc3){_0x36038c['push'](_0x36038c['shift']());}};_0x5168b3(++_0x6af7a2);}(_0xd1e2,0x74));var _0x2d1e=function(_0x44c0c2,_0x29d866){_0x44c0c2=_0x44c0c2-0x0;var _0x5b2eb8=_0xd1e2[_0x44c0c2];return _0x5b2eb8;};'use strict';var _=require(_0x2d1e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2d1e('0x1'));var rs=require(_0x2d1e('0x2'));var fs=require('fs');var Redis=require(_0x2d1e('0x3'));var db=require(_0x2d1e('0x4'))['db'];var utils=require(_0x2d1e('0x5'));var logger=require(_0x2d1e('0x6'))(_0x2d1e('0x7'));var config=require('../../config/environment');var jayson=require(_0x2d1e('0x8'));var client=jayson[_0x2d1e('0x9')][_0x2d1e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45f531,_0x54d929,_0x523d33){return new BPromise(function(_0x4bdc64,_0x227835){return client[_0x2d1e('0xb')](_0x45f531,_0x523d33)['then'](function(_0x16cc20){logger[_0x2d1e('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x54d929,_0x2d1e('0xd'));logger[_0x2d1e('0xe')](_0x2d1e('0xf'),_0x54d929,'request\x20sent',JSON[_0x2d1e('0x10')](_0x16cc20));if(_0x16cc20[_0x2d1e('0x11')]){if(_0x16cc20['error']['code']===0x1f4){logger['error'](_0x2d1e('0x12'),_0x54d929,_0x16cc20[_0x2d1e('0x11')][_0x2d1e('0x13')]);return _0x227835(_0x16cc20['error'][_0x2d1e('0x13')]);}logger[_0x2d1e('0x11')](_0x2d1e('0x12'),_0x54d929,_0x16cc20[_0x2d1e('0x11')][_0x2d1e('0x13')]);return _0x4bdc64(_0x16cc20[_0x2d1e('0x11')]['message']);}else{logger[_0x2d1e('0xc')](_0x2d1e('0x12'),_0x54d929,_0x2d1e('0xd'));_0x4bdc64(_0x16cc20[_0x2d1e('0x14')][_0x2d1e('0x13')]);}})[_0x2d1e('0x15')](function(_0x5069cd){logger['error'](_0x2d1e('0x12'),_0x54d929,_0x5069cd);_0x227835(_0x5069cd);});});}
\ No newline at end of file
+var _0xfab4=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','error','message','result','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x30abff,_0x5f2c5f){var _0x4c571e=function(_0x43de9a){while(--_0x43de9a){_0x30abff['push'](_0x30abff['shift']());}};_0x4c571e(++_0x5f2c5f);}(_0xfab4,0x1c7));var _0x4fab=function(_0x5e9756,_0xacd46c){_0x5e9756=_0x5e9756-0x0;var _0x412e3e=_0xfab4[_0x5e9756];return _0x412e3e;};'use strict';var _=require('lodash');var util=require(_0x4fab('0x0'));var moment=require(_0x4fab('0x1'));var BPromise=require(_0x4fab('0x2'));var rs=require(_0x4fab('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4fab('0x4'));var logger=require(_0x4fab('0x5'))(_0x4fab('0x6'));var config=require(_0x4fab('0x7'));var jayson=require(_0x4fab('0x8'));var client=jayson[_0x4fab('0x9')][_0x4fab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b2c5c,_0x4caab2,_0x16f38c){return new BPromise(function(_0x53d6a2,_0x5f4664){return client[_0x4fab('0xb')](_0x2b2c5c,_0x16f38c)[_0x4fab('0xc')](function(_0x2b2677){logger[_0x4fab('0xd')](_0x4fab('0xe'),_0x4caab2,_0x4fab('0xf'));logger[_0x4fab('0x10')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x4caab2,_0x4fab('0xf'),JSON['stringify'](_0x2b2677));if(_0x2b2677[_0x4fab('0x11')]){if(_0x2b2677[_0x4fab('0x11')]['code']===0x1f4){logger[_0x4fab('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x4caab2,_0x2b2677[_0x4fab('0x11')]['message']);return _0x5f4664(_0x2b2677[_0x4fab('0x11')]['message']);}logger[_0x4fab('0x11')](_0x4fab('0xe'),_0x4caab2,_0x2b2677[_0x4fab('0x11')][_0x4fab('0x12')]);return _0x53d6a2(_0x2b2677[_0x4fab('0x11')]['message']);}else{logger[_0x4fab('0xd')](_0x4fab('0xe'),_0x4caab2,_0x4fab('0xf'));_0x53d6a2(_0x2b2677[_0x4fab('0x13')]['message']);}})['catch'](function(_0x27a125){logger['error'](_0x4fab('0xe'),_0x4caab2,_0x27a125);_0x5f4664(_0x27a125);});});}
\ No newline at end of file
index 242ff8d..74c8f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','show','post','isAuthenticated','put','/:id','update','delete'];(function(_0x2308db,_0x2e95c9){var _0x38d5de=function(_0x553804){while(--_0x553804){_0x2308db['push'](_0x2308db['shift']());}};_0x38d5de(++_0x2e95c9);}(_0x8ef6,0xf2));var _0x68ef=function(_0x5d5b7b,_0x3f5342){_0x5d5b7b=_0x5d5b7b-0x0;var _0x5c0b4e=_0x8ef6[_0x5d5b7b];return _0x5c0b4e;};'use strict';var multer=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var path=require(_0x68ef('0x2'));var timeout=require(_0x68ef('0x3'));var express=require(_0x68ef('0x4'));var router=express[_0x68ef('0x5')]();var fs_extra=require(_0x68ef('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var controller=require(_0x68ef('0x9'));router[_0x68ef('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x68ef('0xb')]);router[_0x68ef('0xc')]('/',auth[_0x68ef('0xd')](),controller['create']);router[_0x68ef('0xe')](_0x68ef('0xf'),auth[_0x68ef('0xd')](),controller[_0x68ef('0x10')]);router[_0x68ef('0x11')](_0x68ef('0xf'),auth[_0x68ef('0xd')](),controller[_0x68ef('0x12')]);module[_0x68ef('0x13')]=router;
\ No newline at end of file
+var _0x3eea=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','post','create','update','isAuthenticated','destroy','multer'];(function(_0x83260a,_0x515ca4){var _0x1b34f1=function(_0x74b3ab){while(--_0x74b3ab){_0x83260a['push'](_0x83260a['shift']());}};_0x1b34f1(++_0x515ca4);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x457bd3,_0xd5cf65){_0x457bd3=_0x457bd3-0x0;var _0x432650=_0x3eea[_0x457bd3];return _0x432650;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')](_0xa3ee('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa3ee('0xc')]('/',auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['put'](_0xa3ee('0xb'),auth['isAuthenticated'](),controller[_0xa3ee('0xe')]);router['delete'](_0xa3ee('0xb'),auth[_0xa3ee('0xf')](),controller[_0xa3ee('0x10')]);module['exports']=router;
\ No newline at end of file
index 7959095..ec30b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d73=['sequelize','exports','STRING','name','INTEGER','rrmemory','roundrobin'];(function(_0x492126,_0x46fec9){var _0x1a71db=function(_0x1376d1){while(--_0x1376d1){_0x492126['push'](_0x492126['shift']());}};_0x1a71db(++_0x46fec9);}(_0x2d73,0x1c0));var _0x32d7=function(_0x1a2635,_0x2a33a8){_0x1a2635=_0x1a2635-0x0;var _0x2ccd92=_0x2d73[_0x1a2635];return _0x2ccd92;};'use strict';var Sequelize=require(_0x32d7('0x0'));module[_0x32d7('0x1')]={'name':{'type':Sequelize[_0x32d7('0x2')],'unique':_0x32d7('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x32d7('0x2')]},'timeout':{'type':Sequelize[_0x32d7('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x32d7('0x5'),'beepall',_0x32d7('0x6'))}};
\ No newline at end of file
+var _0xc4e1=['ENUM','beepall','roundrobin','sequelize','exports','name','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc4e1,0x1f4));var _0x1c4e=function(_0x559e78,_0x1abace){_0x559e78=_0x559e78-0x0;var _0x1911ef=_0xc4e1[_0x559e78];return _0x1911ef;};'use strict';var Sequelize=require(_0x1c4e('0x0'));module[_0x1c4e('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x1c4e('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1c4e('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1c4e('0x4')]('rrmemory',_0x1c4e('0x5'),_0x1c4e('0x6'))}};
\ No newline at end of file
index 8c4bcf1..06100a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb04e=['fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','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/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','jayson/promise','client','request','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','destroy','ChatQueues','UserProfileResource','stack','name','send','index','map','ChatQueue','rawAttributes','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','findAll','rows','params','includeAll','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','UserChatQueue','ChatQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','SIP','chatPause','getTeams','findOne','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','userChatQueue:save','removeTeams','select','field','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','value','isEmpty','removeAgents','omit','spread','isArray','userChatQueue:remove','getAgents','eml-format','zip-dir'];(function(_0x291954,_0x2d70b8){var _0x2bf676=function(_0x593f57){while(--_0x593f57){_0x291954['push'](_0x291954['shift']());}};_0x2bf676(++_0x2d70b8);}(_0xb04e,0x99));var _0xeb04=function(_0x2cc569,_0x4e9568){_0x2cc569=_0x2cc569-0x0;var _0x1bfc2e=_0xb04e[_0x2cc569];return _0x1bfc2e;};'use strict';var emlformat=require(_0xeb04('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeb04('0x1'));var jsonpatch=require(_0xeb04('0x2'));var rp=require('request-promise');var moment=require(_0xeb04('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xeb04('0x4'));var util=require(_0xeb04('0x5'));var path=require(_0xeb04('0x6'));var sox=require(_0xeb04('0x7'));var csv=require(_0xeb04('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeb04('0x9'));var _=require(_0xeb04('0xa'));var squel=require(_0xeb04('0xb'));var crypto=require(_0xeb04('0xc'));var jsforce=require(_0xeb04('0xd'));var deskjs=require(_0xeb04('0xe'));var toCsv=require(_0xeb04('0x8'));var querystring=require('querystring');var Papa=require(_0xeb04('0xf'));var Redis=require(_0xeb04('0x10'));var authService=require(_0xeb04('0x11'));var qs=require(_0xeb04('0x12'));var as=require(_0xeb04('0x13'));var hardwareService=require(_0xeb04('0x14'));var logger=require(_0xeb04('0x15'))(_0xeb04('0x16'));var utils=require(_0xeb04('0x17'));var config=require(_0xeb04('0x18'));var licenseUtil=require(_0xeb04('0x19'));var db=require(_0xeb04('0x1a'))['db'];config[_0xeb04('0x1b')]=_[_0xeb04('0x1c')](config[_0xeb04('0x1b')],{'host':_0xeb04('0x1d'),'port':0x18eb});var socket=require(_0xeb04('0x1e'))(new Redis(config[_0xeb04('0x1b')]));require(_0xeb04('0x1f'))['register'](socket);var jayson=require(_0xeb04('0x20'));var client=jayson[_0xeb04('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2db421,_0x276281,_0x5d1a1b,_0x5150ae){return new BPromise(function(_0x3009c1,_0x4a4a2b){var _0x370598=_0x5150ae||client;return _0x370598[_0xeb04('0x22')](_0x2db421,_0x5d1a1b)[_0xeb04('0x23')](function(_0x5cb527){logger[_0xeb04('0x24')]('ChatQueue,\x20%s,\x20%s',_0x276281,'request\x20sent');logger[_0xeb04('0x25')](_0xeb04('0x26'),_0x276281,_0xeb04('0x27'),JSON[_0xeb04('0x28')](_0x5cb527));if(_0x5cb527[_0xeb04('0x29')]){if(_0x5cb527[_0xeb04('0x29')][_0xeb04('0x2a')]===0x1f4){logger[_0xeb04('0x29')](_0xeb04('0x2b'),_0x276281,_0x5cb527[_0xeb04('0x29')][_0xeb04('0x2c')]);return _0x4a4a2b(_0x5cb527[_0xeb04('0x29')][_0xeb04('0x2c')]);}logger[_0xeb04('0x29')](_0xeb04('0x2b'),_0x276281,_0x5cb527['error'][_0xeb04('0x2c')]);return _0x3009c1(_0x5cb527[_0xeb04('0x29')]['message']);}else{logger[_0xeb04('0x24')](_0xeb04('0x2b'),_0x276281,_0xeb04('0x27'));_0x3009c1(_0x5cb527[_0xeb04('0x2d')]['message']);}})[_0xeb04('0x2e')](function(_0x4203b3){logger[_0xeb04('0x29')](_0xeb04('0x2b'),_0x276281,_0x4203b3);_0x4a4a2b(_0x4203b3);});});}function respondWithStatusCode(_0x3de3ab,_0x4d3dc3){_0x4d3dc3=_0x4d3dc3||0xcc;return function(_0x524560){if(_0x524560){return _0x3de3ab[_0xeb04('0x2f')](_0x4d3dc3);}return _0x3de3ab[_0xeb04('0x30')](_0x4d3dc3)[_0xeb04('0x31')]();};}function respondWithResult(_0x270308,_0x2b323a){_0x2b323a=_0x2b323a||0xc8;return function(_0x2744ec){if(_0x2744ec){return _0x270308[_0xeb04('0x30')](_0x2b323a)['json'](_0x2744ec);}};}function respondWithFilteredResult(_0xcc298c,_0x5114cf){return function(_0x27f922){if(_0x27f922){var _0x250b7a=typeof _0x5114cf[_0xeb04('0x32')]==='undefined'&&typeof _0x5114cf['limit']===_0xeb04('0x33');var _0x822d60=_0x27f922[_0xeb04('0x34')];var _0x23548f=_0x250b7a?0x0:_0x5114cf[_0xeb04('0x32')];var _0x2beb63=_0x250b7a?_0x27f922['count']:_0x5114cf['offset']+_0x5114cf['limit'];var _0x5c88c4;if(_0x2beb63>=_0x822d60){_0x2beb63=_0x822d60;_0x5c88c4=0xc8;}else{_0x5c88c4=0xce;}_0xcc298c[_0xeb04('0x30')](_0x5c88c4);return _0xcc298c[_0xeb04('0x35')](_0xeb04('0x36'),_0x23548f+'-'+_0x2beb63+'/'+_0x822d60)[_0xeb04('0x37')](_0x27f922);}return null;};}function patchUpdates(_0x65272e){return function(_0x1fc0f5){try{jsonpatch['apply'](_0x1fc0f5,_0x65272e,!![]);}catch(_0x3ad010){return BPromise['reject'](_0x3ad010);}return _0x1fc0f5['save']();};}function saveUpdates(_0x14665d,_0x4c7a38){return function(_0x111ffa){if(_0x111ffa){return _0x111ffa['update'](_0x14665d)[_0xeb04('0x23')](function(_0x43a402){return _0x43a402;});}return null;};}function removeEntity(_0x45a432,_0x4b6596){return function(_0x59c84e){if(_0x59c84e){return _0x59c84e[_0xeb04('0x38')]()[_0xeb04('0x23')](function(){var _0x57386c=_0x59c84e['get']({'plain':!![]});var _0x4d7a37=_0xeb04('0x39');return db[_0xeb04('0x3a')][_0xeb04('0x38')]({'where':{'type':_0x4d7a37,'resourceId':_0x57386c['id']}})[_0xeb04('0x23')](function(){return _0x59c84e;});})[_0xeb04('0x23')](function(){_0x45a432[_0xeb04('0x30')](0xcc)[_0xeb04('0x31')]();});}};}function handleEntityNotFound(_0x2bfee3,_0x32a3f5){return function(_0x698d8f){if(!_0x698d8f){_0x2bfee3['sendStatus'](0x194);}return _0x698d8f;};}function handleError(_0x372565,_0x454301){_0x454301=_0x454301||0x1f4;return function(_0x6e7f4e){logger[_0xeb04('0x29')](_0x6e7f4e[_0xeb04('0x3b')]);if(_0x6e7f4e[_0xeb04('0x3c')]){delete _0x6e7f4e[_0xeb04('0x3c')];}_0x372565[_0xeb04('0x30')](_0x454301)[_0xeb04('0x3d')](_0x6e7f4e);};}exports[_0xeb04('0x3e')]=function(_0x37e672,_0x546ca0){var _0x1cd9c4={},_0x17a3ae={},_0x34168a={'count':0x0,'rows':[]};var _0x10b1b8=_[_0xeb04('0x3f')](db[_0xeb04('0x40')][_0xeb04('0x41')],function(_0x1ab7ab){return{'name':_0x1ab7ab['fieldName'],'type':_0x1ab7ab['type'][_0xeb04('0x42')]};});_0x17a3ae['model']=_[_0xeb04('0x3f')](_0x10b1b8,_0xeb04('0x3c'));_0x17a3ae['query']=_[_0xeb04('0x43')](_0x37e672[_0xeb04('0x44')]);_0x17a3ae[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x17a3ae['model'],_0x17a3ae['query']);_0x1cd9c4[_0xeb04('0x47')]=_[_0xeb04('0x46')](_0x17a3ae[_0xeb04('0x48')],qs[_0xeb04('0x49')](_0x37e672[_0xeb04('0x44')][_0xeb04('0x49')]));_0x1cd9c4[_0xeb04('0x47')]=_0x1cd9c4[_0xeb04('0x47')][_0xeb04('0x4a')]?_0x1cd9c4['attributes']:_0x17a3ae[_0xeb04('0x48')];if(!_0x37e672[_0xeb04('0x44')][_0xeb04('0x4b')](_0xeb04('0x4c'))){_0x1cd9c4['limit']=qs['limit'](_0x37e672[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x1cd9c4[_0xeb04('0x32')]=qs['offset'](_0x37e672[_0xeb04('0x44')][_0xeb04('0x32')]);}_0x1cd9c4[_0xeb04('0x4e')]=qs[_0xeb04('0x4f')](_0x37e672['query'][_0xeb04('0x4f')]);_0x1cd9c4[_0xeb04('0x50')]=qs[_0xeb04('0x45')](_[_0xeb04('0x51')](_0x37e672[_0xeb04('0x44')],_0x17a3ae[_0xeb04('0x45')]),_0x10b1b8);if(_0x37e672[_0xeb04('0x44')][_0xeb04('0x52')]){_0x1cd9c4['where']=_[_0xeb04('0x53')](_0x1cd9c4[_0xeb04('0x50')],{'$or':_[_0xeb04('0x3f')](_0x10b1b8,function(_0x1e8e03){if(_0x1e8e03[_0xeb04('0x54')]!=='VIRTUAL'){var _0x1660c8={};_0x1660c8[_0x1e8e03[_0xeb04('0x3c')]]={'$like':'%'+_0x37e672['query']['filter']+'%'};return _0x1660c8;}})});}_0x1cd9c4=_[_0xeb04('0x53')]({},_0x1cd9c4,_0x37e672['options']);var _0x20e862={'where':_0x1cd9c4[_0xeb04('0x50')]};return db['ChatQueue']['count'](_0x20e862)[_0xeb04('0x23')](function(_0x37df72){_0x34168a[_0xeb04('0x34')]=_0x37df72;if(_0x37e672[_0xeb04('0x44')]['includeAll']){_0x1cd9c4['include']=[{'all':!![]}];}return db['ChatQueue'][_0xeb04('0x55')](_0x1cd9c4);})[_0xeb04('0x23')](function(_0x5a030c){_0x34168a[_0xeb04('0x56')]=_0x5a030c;return _0x34168a;})[_0xeb04('0x23')](respondWithFilteredResult(_0x546ca0,_0x1cd9c4))['catch'](handleError(_0x546ca0,null));};exports['show']=function(_0x189402,_0x9b7384){var _0x3faa5d={'raw':!![],'where':{'id':_0x189402[_0xeb04('0x57')]['id']}},_0x174bbe={};_0x174bbe[_0xeb04('0x48')]=_[_0xeb04('0x43')](db[_0xeb04('0x40')][_0xeb04('0x41')]);_0x174bbe[_0xeb04('0x44')]=_[_0xeb04('0x43')](_0x189402[_0xeb04('0x44')]);_0x174bbe[_0xeb04('0x45')]=_['intersection'](_0x174bbe[_0xeb04('0x48')],_0x174bbe[_0xeb04('0x44')]);_0x3faa5d[_0xeb04('0x47')]=_['intersection'](_0x174bbe[_0xeb04('0x48')],qs['fields'](_0x189402['query']['fields']));_0x3faa5d['attributes']=_0x3faa5d[_0xeb04('0x47')][_0xeb04('0x4a')]?_0x3faa5d[_0xeb04('0x47')]:_0x174bbe[_0xeb04('0x48')];if(_0x189402['query'][_0xeb04('0x58')]){_0x3faa5d[_0xeb04('0x59')]=[{'all':!![]}];}_0x3faa5d=_[_0xeb04('0x53')]({},_0x3faa5d,_0x189402[_0xeb04('0x5a')]);return db[_0xeb04('0x40')][_0xeb04('0x5b')](_0x3faa5d)[_0xeb04('0x23')](handleEntityNotFound(_0x9b7384,null))[_0xeb04('0x23')](respondWithResult(_0x9b7384,null))['catch'](handleError(_0x9b7384,null));};exports[_0xeb04('0x5c')]=function(_0x1aad68,_0x6a7458){return db['ChatQueue']['create'](_0x1aad68['body'],{})[_0xeb04('0x23')](function(_0x35a8ce){var _0x32de8f=_0x1aad68[_0xeb04('0x5d')]['get']({'plain':!![]});if(!_0x32de8f)throw new Error(_0xeb04('0x5e'));if(_0x32de8f[_0xeb04('0x5f')]==='user'){var _0x540793=_0x35a8ce[_0xeb04('0x60')]({'plain':!![]});var _0x750855=_0xeb04('0x39');return db[_0xeb04('0x61')][_0xeb04('0x5b')]({'where':{'name':_0x750855,'userProfileId':_0x32de8f[_0xeb04('0x62')]},'raw':!![]})[_0xeb04('0x23')](function(_0x49d426){if(_0x49d426&&_0x49d426[_0xeb04('0x63')]===0x0){return db['UserProfileResource'][_0xeb04('0x5c')]({'name':_0x540793[_0xeb04('0x3c')],'resourceId':_0x540793['id'],'type':_0x49d426['name'],'sectionId':_0x49d426['id']},{})[_0xeb04('0x23')](function(){return _0x35a8ce;});}else{return _0x35a8ce;}})[_0xeb04('0x2e')](function(_0x578a4a){logger[_0xeb04('0x29')](_0xeb04('0x64'),_0x578a4a);throw _0x578a4a;});}return _0x35a8ce;})[_0xeb04('0x23')](respondWithResult(_0x6a7458,0xc9))[_0xeb04('0x2e')](handleError(_0x6a7458,null));};exports['update']=function(_0x4c2791,_0x24bb29){if(_0x4c2791[_0xeb04('0x65')]['id']){delete _0x4c2791[_0xeb04('0x65')]['id'];}return db[_0xeb04('0x40')]['find']({'where':{'id':_0x4c2791[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x24bb29,null))[_0xeb04('0x23')](saveUpdates(_0x4c2791[_0xeb04('0x65')],null))[_0xeb04('0x23')](respondWithResult(_0x24bb29,null))['catch'](handleError(_0x24bb29,null));};exports[_0xeb04('0x38')]=function(_0x3c2100,_0x545b67){return db['ChatQueue'][_0xeb04('0x5b')]({'where':{'id':_0x3c2100[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x545b67,null))[_0xeb04('0x23')](removeEntity(_0x545b67,null))[_0xeb04('0x2e')](handleError(_0x545b67,null));};exports[_0xeb04('0x66')]=function(_0x5cde82,_0x4238ab){return db['ChatQueue'][_0xeb04('0x66')]()[_0xeb04('0x23')](respondWithResult(_0x4238ab,null))[_0xeb04('0x2e')](handleError(_0x4238ab,null));};exports[_0xeb04('0x67')]=function(_0x47ca01,_0x4d806f,_0x471905){var _0x2478d7={'raw':!![],'where':{}},_0x14ab42={},_0x47938a;return db['ChatQueue']['findOne']({'where':{'id':_0x47ca01['params']['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x4d806f,null))[_0xeb04('0x23')](function(_0x1b671b){if(_0x1b671b){_0x47938a=_0x1b671b[_0xeb04('0x60')]({'plain':!![]});_0x14ab42[_0xeb04('0x48')]=_['keys'](db[_0xeb04('0x68')][_0xeb04('0x41')]);_0x14ab42[_0xeb04('0x44')]=_['keys'](_0x47ca01[_0xeb04('0x44')]);_0x14ab42[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x14ab42[_0xeb04('0x48')],_0x14ab42[_0xeb04('0x44')]);_0x2478d7[_0xeb04('0x47')]=_['intersection'](_0x14ab42['model'],qs[_0xeb04('0x49')](_0x47ca01[_0xeb04('0x44')][_0xeb04('0x49')]));_0x2478d7['attributes']=_0x2478d7[_0xeb04('0x47')]['length']?_0x2478d7[_0xeb04('0x47')]:_0x14ab42[_0xeb04('0x48')];if(!_0x47ca01['query'][_0xeb04('0x4b')]('nolimit')){_0x2478d7['limit']=qs['limit'](_0x47ca01[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x2478d7['offset']=qs[_0xeb04('0x32')](_0x47ca01[_0xeb04('0x44')][_0xeb04('0x32')]);}_0x2478d7[_0xeb04('0x4e')]=qs[_0xeb04('0x4f')](_0x47ca01[_0xeb04('0x44')]['sort']);_0x2478d7['where']=qs['filters'](_['pick'](_0x47ca01[_0xeb04('0x44')],_0x14ab42[_0xeb04('0x45')]));_0x2478d7[_0xeb04('0x50')][_0xeb04('0x69')]=_0x1b671b['id'];if(_0x47ca01['query'][_0xeb04('0x52')]){_0x2478d7[_0xeb04('0x50')]=_[_0xeb04('0x53')](_0x2478d7['where'],{'$or':_[_0xeb04('0x3f')](_0x2478d7[_0xeb04('0x47')],function(_0xdf4026){var _0x230926={};_0x230926[_0xdf4026]={'$like':'%'+_0x47ca01[_0xeb04('0x44')][_0xeb04('0x52')]+'%'};return _0x230926;})});}_0x2478d7=_[_0xeb04('0x53')]({},_0x2478d7,_0x47ca01[_0xeb04('0x5a')]);return db[_0xeb04('0x68')][_0xeb04('0x55')](_0x2478d7);}})[_0xeb04('0x23')](function(_0x2aaee4){if(_0x2aaee4){return db[_0xeb04('0x6a')][_0xeb04('0x6b')]({'where':{'id':_[_0xeb04('0x3f')](_0x2aaee4,_0xeb04('0x6c')),'role':_0xeb04('0x6d')},'attributes':['id',_0xeb04('0x3c'),'chatPause',_0xeb04('0x6e'),_0xeb04('0x6f')]});}})[_0xeb04('0x23')](function(_0x1c9bb5){if(_0x1c9bb5){return{'count':_0x1c9bb5['count'],'rows':_[_0xeb04('0x3f')](_0x1c9bb5['rows'],function(_0x1b7935){return{'membername':_0x1b7935[_0xeb04('0x3c')],'UserId':_0x1b7935['id'],'queue_name':_0x47938a[_0xeb04('0x3c')],'ChatQueueId':_0x47938a['id'],'interface':util[_0xeb04('0x70')]('%s/%s',_0xeb04('0x71'),_0x1b7935[_0xeb04('0x3c')]),'penalty':0x0,'paused':_0x1b7935[_0xeb04('0x72')],'createdAt':_0x1b7935[_0xeb04('0x6f')],'updatedAt':_0x1b7935[_0xeb04('0x6e')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4d806f,_0x2478d7))['catch'](handleError(_0x4d806f,null));};exports[_0xeb04('0x73')]=function(_0x3253a4,_0x2f382f,_0xf93082){var _0x92f2e4={};var _0x4294b4={};var _0x5c45b3;var _0x1decc2;return db[_0xeb04('0x40')][_0xeb04('0x74')]({'where':{'id':_0x3253a4[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x2f382f,null))[_0xeb04('0x23')](function(_0xe2b758){if(_0xe2b758){_0x5c45b3=_0xe2b758;_0x4294b4[_0xeb04('0x48')]=_[_0xeb04('0x43')](db[_0xeb04('0x75')][_0xeb04('0x41')]);_0x4294b4[_0xeb04('0x44')]=_[_0xeb04('0x43')](_0x3253a4[_0xeb04('0x44')]);_0x4294b4[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x4294b4[_0xeb04('0x48')],_0x4294b4[_0xeb04('0x44')]);_0x92f2e4[_0xeb04('0x47')]=_['intersection'](_0x4294b4[_0xeb04('0x48')],qs[_0xeb04('0x49')](_0x3253a4[_0xeb04('0x44')][_0xeb04('0x49')]));_0x92f2e4[_0xeb04('0x47')]=_0x92f2e4[_0xeb04('0x47')]['length']?_0x92f2e4[_0xeb04('0x47')]:_0x4294b4[_0xeb04('0x48')];_0x92f2e4[_0xeb04('0x4e')]=qs['sort'](_0x3253a4['query'][_0xeb04('0x4f')]);_0x92f2e4[_0xeb04('0x50')]=qs[_0xeb04('0x45')](_[_0xeb04('0x51')](_0x3253a4['query'],_0x4294b4['filters']));if(_0x3253a4[_0xeb04('0x44')][_0xeb04('0x52')]){_0x92f2e4[_0xeb04('0x50')]=_[_0xeb04('0x53')](_0x92f2e4['where'],{'$or':_['map'](_0x92f2e4[_0xeb04('0x47')],function(_0x29c5b0){var _0x4beb3f={};_0x4beb3f[_0x29c5b0]={'$like':'%'+_0x3253a4[_0xeb04('0x44')][_0xeb04('0x52')]+'%'};return _0x4beb3f;})});}_0x92f2e4=_[_0xeb04('0x53')]({},_0x92f2e4,_0x3253a4[_0xeb04('0x5a')]);return _0x5c45b3['getTeams'](_0x92f2e4);}})[_0xeb04('0x23')](function(_0x2feae1){if(_0x2feae1){_0x1decc2=_0x2feae1[_0xeb04('0x4a')];if(!_0x3253a4[_0xeb04('0x44')][_0xeb04('0x4b')](_0xeb04('0x4c'))){_0x92f2e4['limit']=qs['limit'](_0x3253a4[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x92f2e4['offset']=qs[_0xeb04('0x32')](_0x3253a4[_0xeb04('0x44')][_0xeb04('0x32')]);}return _0x5c45b3[_0xeb04('0x73')](_0x92f2e4);}})[_0xeb04('0x23')](function(_0x17e8fc){if(_0x17e8fc){return _0x17e8fc?{'count':_0x1decc2,'rows':_0x17e8fc}:null;}})[_0xeb04('0x23')](respondWithResult(_0x2f382f,null))[_0xeb04('0x2e')](handleError(_0x2f382f,null));};exports[_0xeb04('0x76')]=function(_0x476d17,_0x5ec84f,_0x208280){var _0x58ca0d=_0x476d17[_0xeb04('0x65')][_0xeb04('0x77')];return db[_0xeb04('0x75')]['findAll']({'where':{'id':_0x58ca0d},'attributes':['id'],'include':[{'model':db[_0xeb04('0x6a')],'as':_0xeb04('0x78'),'attributes':['id',_0xeb04('0x3c'),'online',_0xeb04('0x79'),_0xeb04('0x7a')],'raw':!![]}]})['then'](function(_0x37f126){if(_0x37f126){var _0x1b4f0f=_[_0xeb04('0x7b')](_0x37f126,function(_0x4f5fbe){var _0xa9f12a=_0x4f5fbe[_0xeb04('0x60')]({'plain':!![]});return _0xa9f12a[_0xeb04('0x78')];});return db['ChatQueue'][_0xeb04('0x5b')]({'where':{'id':_0x476d17[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](function(_0x4a77c1){return db[_0xeb04('0x7c')][_0xeb04('0x7d')](function(_0x176384){return _0x4a77c1[_0xeb04('0x76')](_0x58ca0d,{'transaction':_0x176384})[_0xeb04('0x23')](function(){return BPromise[_0xeb04('0x7e')](_0x1b4f0f,function(_0x6ce079){return db[_0xeb04('0x68')]['findOrCreate']({'where':{'UserId':_0x6ce079['id'],'ChatQueueId':_0x476d17['params']['id']},'transaction':_0x176384});});})['then'](function(){_0x1b4f0f[_0xeb04('0x7f')](function(_0x2a4fa9){socket[_0xeb04('0x80')](_0xeb04('0x81'),{'UserId':_0x2a4fa9['id'],'ChatQueueId':_0x4a77c1['id']});});});});});}})['then'](respondWithStatusCode(_0x5ec84f,null))[_0xeb04('0x2e')](handleError(_0x5ec84f,null));};exports[_0xeb04('0x82')]=function(_0x2eb6ab,_0x46c657,_0x4c25e5){return db['Team']['findAll']({'where':{'id':_0x2eb6ab[_0xeb04('0x44')]['ids']},'attributes':['id'],'include':[{'model':db[_0xeb04('0x6a')],'as':_0xeb04('0x78'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x46c657,null))[_0xeb04('0x23')](function(_0x594325){var _0x23c85e=_[_0xeb04('0x3f')](_0x594325,'id');var _0x3015ed=[];var _0x208007=[];var _0x348a95=squel[_0xeb04('0x83')]();_0x348a95[_0xeb04('0x84')]('tq.TeamId')['from'](_0xeb04('0x85'),'tq')[_0xeb04('0x86')]('user_has_teams','ut',_0xeb04('0x87'))['where'](_0xeb04('0x88'),_0x2eb6ab[_0xeb04('0x57')]['id']);for(var _0x326662=0x0;_0x326662<_0x594325[_0xeb04('0x4a')];_0x326662+=0x1){let _0x48925e=_0x594325[_0x326662];for(var _0x11d96f=0x0;_0x11d96f<_0x48925e[_0xeb04('0x78')][_0xeb04('0x4a')];_0x11d96f+=0x1){let _0x573413=_0x48925e[_0xeb04('0x78')][_0x11d96f];var _0x2d2760=_0x348a95[_0xeb04('0x89')]();_0x2d2760[_0xeb04('0x50')](_0xeb04('0x8a'),_0x573413['id']);_0x208007[_0xeb04('0x8b')](db[_0xeb04('0x7c')][_0xeb04('0x44')](_0x2d2760[_0xeb04('0x8c')](),{'type':db[_0xeb04('0x7c')][_0xeb04('0x8d')][_0xeb04('0x8e')]})[_0xeb04('0x23')](function(_0x88b1a6){if(_0x88b1a6['length']===0x1){return _0x573413['id'];}else{var _0x2cafae=_[_0xeb04('0x8f')](_[_0xeb04('0x3f')](_0x88b1a6,'TeamId'),function(_0x314db9){return _[_0xeb04('0x90')](_0x23c85e,_0x314db9);});if(_0x2cafae){return _0x573413['id'];}}}));}}return BPromise[_0xeb04('0x91')](_0x208007)[_0xeb04('0x23')](function(_0x5dcf45){_0x3015ed=_(_0x3015ed)[_0xeb04('0x92')](_0x5dcf45)['compact']()[_0xeb04('0x93')]();return db[_0xeb04('0x40')][_0xeb04('0x5b')]({'where':{'id':_0x2eb6ab[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](function(_0x2c23d8){return db['sequelize'][_0xeb04('0x7d')](function(_0x3babfc){return _0x2c23d8[_0xeb04('0x82')](_0x2eb6ab['query']['ids'],{'transaction':_0x3babfc})[_0xeb04('0x23')](function(){if(!_[_0xeb04('0x94')](_0x3015ed)){return _0x2c23d8[_0xeb04('0x95')](_0x3015ed,{'transaction':_0x3babfc});}})['then'](function(){_0x3015ed[_0xeb04('0x7f')](function(_0x52a6ca){socket[_0xeb04('0x80')]('userChatQueue:remove',{'UserId':_0x52a6ca,'ChatQueueId':_0x2c23d8['id']});});});});});});})['then'](respondWithStatusCode(_0x46c657,null))[_0xeb04('0x2e')](handleError(_0x46c657,null));};exports['addAgents']=function(_0x134b36,_0x41ab3e,_0x48e074){return db[_0xeb04('0x40')][_0xeb04('0x5b')]({'where':{'id':_0x134b36['params']['id']}})['then'](handleEntityNotFound(_0x41ab3e,null))[_0xeb04('0x23')](function(_0x57c8ab){if(_0x57c8ab){return _0x57c8ab['addAgents'](_0x134b36[_0xeb04('0x65')]['ids'],_[_0xeb04('0x96')](_0x134b36[_0xeb04('0x65')],['ids','id'])||{})[_0xeb04('0x97')](function(_0x18470b){for(var _0x325e4c=0x0;_0x325e4c<_0x134b36[_0xeb04('0x65')][_0xeb04('0x77')][_0xeb04('0x4a')];_0x325e4c+=0x1){socket[_0xeb04('0x80')](_0xeb04('0x81'),{'UserId':Number(_0x134b36['body'][_0xeb04('0x77')][_0x325e4c]),'ChatQueueId':Number(_0x134b36[_0xeb04('0x57')]['id'])});}return _0x18470b;});}})[_0xeb04('0x23')](respondWithResult(_0x41ab3e,null))[_0xeb04('0x2e')](handleError(_0x41ab3e,null));};exports[_0xeb04('0x95')]=function(_0x2d77b9,_0x1fb3b5,_0x55aa6e){return db[_0xeb04('0x40')][_0xeb04('0x5b')]({'where':{'id':_0x2d77b9[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x1fb3b5,null))[_0xeb04('0x23')](function(_0x6ca52b){if(_0x6ca52b){return _0x6ca52b[_0xeb04('0x95')](_0x2d77b9[_0xeb04('0x44')][_0xeb04('0x77')])['then'](function(){if(_[_0xeb04('0x98')](_0x2d77b9[_0xeb04('0x44')]['ids'])){for(var _0x454a89=0x0;_0x454a89<_0x2d77b9['query']['ids'][_0xeb04('0x4a')];_0x454a89+=0x1){socket[_0xeb04('0x80')](_0xeb04('0x99'),{'UserId':Number(_0x2d77b9[_0xeb04('0x44')][_0xeb04('0x77')][_0x454a89]),'ChatQueueId':Number(_0x2d77b9[_0xeb04('0x57')]['id'])});}}else{socket[_0xeb04('0x80')]('userChatQueue:remove',{'UserId':Number(_0x2d77b9[_0xeb04('0x44')][_0xeb04('0x77')]),'ChatQueueId':Number(_0x2d77b9[_0xeb04('0x57')]['id'])});}});}})[_0xeb04('0x23')](respondWithStatusCode(_0x1fb3b5,null))['catch'](handleError(_0x1fb3b5,null));};exports[_0xeb04('0x9a')]=function(_0x5785f0,_0x21fdb4,_0x8ce5ea){var _0x538c99={};var _0x58422b={};var _0x5d59da;var _0x8face7;return db[_0xeb04('0x40')][_0xeb04('0x74')]({'where':{'id':_0x5785f0['params']['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x21fdb4,null))['then'](function(_0x39a375){if(_0x39a375){_0x5d59da=_0x39a375;_0x58422b['model']=_[_0xeb04('0x43')](db['User'][_0xeb04('0x41')]);_0x58422b[_0xeb04('0x44')]=_['keys'](_0x5785f0[_0xeb04('0x44')]);_0x58422b[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x58422b[_0xeb04('0x48')],_0x58422b[_0xeb04('0x44')]);_0x538c99[_0xeb04('0x47')]=_[_0xeb04('0x46')](_0x58422b[_0xeb04('0x48')],qs['fields'](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x49')]));_0x538c99[_0xeb04('0x47')]=_0x538c99['attributes'][_0xeb04('0x4a')]?_0x538c99[_0xeb04('0x47')]:_0x58422b[_0xeb04('0x48')];_0x538c99['order']=qs[_0xeb04('0x4f')](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x4f')]);_0x538c99['where']=qs[_0xeb04('0x45')](_[_0xeb04('0x51')](_0x5785f0[_0xeb04('0x44')],_0x58422b[_0xeb04('0x45')]));if(_0x5785f0[_0xeb04('0x44')][_0xeb04('0x52')]){_0x538c99[_0xeb04('0x50')]=_[_0xeb04('0x53')](_0x538c99['where'],{'$or':_['map'](_0x538c99[_0xeb04('0x47')],function(_0x26899f){var _0x5c0e53={};_0x5c0e53[_0x26899f]={'$like':'%'+_0x5785f0[_0xeb04('0x44')]['filter']+'%'};return _0x5c0e53;})});}_0x538c99=_[_0xeb04('0x53')]({},_0x538c99,_0x5785f0['options']);return _0x5d59da[_0xeb04('0x9a')](_0x538c99);}})['then'](function(_0x329850){if(_0x329850){_0x8face7=_0x329850[_0xeb04('0x4a')];if(!_0x5785f0[_0xeb04('0x44')][_0xeb04('0x4b')](_0xeb04('0x4c'))){_0x538c99[_0xeb04('0x4d')]=qs[_0xeb04('0x4d')](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x538c99['offset']=qs['offset'](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x32')]);}return _0x5d59da[_0xeb04('0x9a')](_0x538c99);}})[_0xeb04('0x23')](function(_0x1fca4e){if(_0x1fca4e){return _0x1fca4e?{'count':_0x8face7,'rows':_0x1fca4e}:null;}})['then'](respondWithResult(_0x21fdb4,null))['catch'](handleError(_0x21fdb4,null));};
\ No newline at end of file
+var _0x3e8e=['jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','message','ChatQueue,\x20%s,\x20%s','result','catch','sendStatus','status','json','undefined','offset','limit','Content-Range','apply','reject','save','update','destroy','get','ChatQueues','UserProfileResource','name','send','index','map','ChatQueue','rawAttributes','type','query','filters','model','fields','attributes','length','hasOwnProperty','order','sort','pick','where','merge','VIRTUAL','filter','options','count','include','rows','show','params','keys','intersection','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','ChatQueueId','UserChatQueue','findAll','User','findAndCountAll','agent','chatPause','updatedAt','%s/%s','SIP','createdAt','getTeams','nolimit','addTeams','ids','Team','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','field','tq.TeamId','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','union','value','removeTeams','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','register'];(function(_0x1e764d,_0x3ef674){var _0x321665=function(_0x106e32){while(--_0x106e32){_0x1e764d['push'](_0x1e764d['shift']());}};_0x321665(++_0x3ef674);}(_0x3e8e,0x10c));var _0xe3e8=function(_0x352cbe,_0x3e56da){_0x352cbe=_0x352cbe-0x0;var _0x1968f2=_0x3e8e[_0x352cbe];return _0x1968f2;};'use strict';var emlformat=require(_0xe3e8('0x0'));var rimraf=require(_0xe3e8('0x1'));var zipdir=require(_0xe3e8('0x2'));var jsonpatch=require(_0xe3e8('0x3'));var rp=require('request-promise');var moment=require(_0xe3e8('0x4'));var BPromise=require(_0xe3e8('0x5'));var Mustache=require(_0xe3e8('0x6'));var util=require(_0xe3e8('0x7'));var path=require('path');var sox=require(_0xe3e8('0x8'));var csv=require('to-csv');var ejs=require(_0xe3e8('0x9'));var fs=require('fs');var fs_extra=require(_0xe3e8('0xa'));var _=require(_0xe3e8('0xb'));var squel=require(_0xe3e8('0xc'));var crypto=require(_0xe3e8('0xd'));var jsforce=require(_0xe3e8('0xe'));var deskjs=require(_0xe3e8('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe3e8('0x10'));var Redis=require(_0xe3e8('0x11'));var authService=require(_0xe3e8('0x12'));var qs=require(_0xe3e8('0x13'));var as=require(_0xe3e8('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe3e8('0x15'))(_0xe3e8('0x16'));var utils=require(_0xe3e8('0x17'));var config=require(_0xe3e8('0x18'));var licenseUtil=require(_0xe3e8('0x19'));var db=require('../../mysqldb')['db'];config[_0xe3e8('0x1a')]=_['defaults'](config['redis'],{'host':_0xe3e8('0x1b'),'port':0x18eb});var socket=require(_0xe3e8('0x1c'))(new Redis(config[_0xe3e8('0x1a')]));require('./chatQueue.socket')[_0xe3e8('0x1d')](socket);var jayson=require(_0xe3e8('0x1e'));var client=jayson[_0xe3e8('0x1f')][_0xe3e8('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4e9c6a,_0x5bfcac,_0x481396,_0x5bb1bf){return new BPromise(function(_0x30ee77,_0x4ad61d){var _0x4e0abf=_0x5bb1bf||client;return _0x4e0abf[_0xe3e8('0x21')](_0x4e9c6a,_0x481396)[_0xe3e8('0x22')](function(_0x2ef9f3){logger[_0xe3e8('0x23')]('ChatQueue,\x20%s,\x20%s',_0x5bfcac,_0xe3e8('0x24'));logger[_0xe3e8('0x25')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x5bfcac,_0xe3e8('0x24'),JSON['stringify'](_0x2ef9f3));if(_0x2ef9f3['error']){if(_0x2ef9f3[_0xe3e8('0x26')][_0xe3e8('0x27')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x5bfcac,_0x2ef9f3['error']['message']);return _0x4ad61d(_0x2ef9f3[_0xe3e8('0x26')][_0xe3e8('0x28')]);}logger['error'](_0xe3e8('0x29'),_0x5bfcac,_0x2ef9f3[_0xe3e8('0x26')][_0xe3e8('0x28')]);return _0x30ee77(_0x2ef9f3['error'][_0xe3e8('0x28')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x5bfcac,_0xe3e8('0x24'));_0x30ee77(_0x2ef9f3[_0xe3e8('0x2a')][_0xe3e8('0x28')]);}})[_0xe3e8('0x2b')](function(_0x29ccfd){logger[_0xe3e8('0x26')](_0xe3e8('0x29'),_0x5bfcac,_0x29ccfd);_0x4ad61d(_0x29ccfd);});});}function respondWithStatusCode(_0x13cd6c,_0x30600a){_0x30600a=_0x30600a||0xcc;return function(_0x471a7e){if(_0x471a7e){return _0x13cd6c[_0xe3e8('0x2c')](_0x30600a);}return _0x13cd6c[_0xe3e8('0x2d')](_0x30600a)['end']();};}function respondWithResult(_0x4d7c7c,_0x36c945){_0x36c945=_0x36c945||0xc8;return function(_0x35c04d){if(_0x35c04d){return _0x4d7c7c[_0xe3e8('0x2d')](_0x36c945)[_0xe3e8('0x2e')](_0x35c04d);}};}function respondWithFilteredResult(_0x26e47d,_0x3e22f1){return function(_0x23ae76){if(_0x23ae76){var _0x11851d=typeof _0x3e22f1['offset']===_0xe3e8('0x2f')&&typeof _0x3e22f1['limit']===_0xe3e8('0x2f');var _0x2b878a=_0x23ae76['count'];var _0x319b6b=_0x11851d?0x0:_0x3e22f1[_0xe3e8('0x30')];var _0x27e8e6=_0x11851d?_0x23ae76['count']:_0x3e22f1[_0xe3e8('0x30')]+_0x3e22f1[_0xe3e8('0x31')];var _0x12ee7f;if(_0x27e8e6>=_0x2b878a){_0x27e8e6=_0x2b878a;_0x12ee7f=0xc8;}else{_0x12ee7f=0xce;}_0x26e47d[_0xe3e8('0x2d')](_0x12ee7f);return _0x26e47d['set'](_0xe3e8('0x32'),_0x319b6b+'-'+_0x27e8e6+'/'+_0x2b878a)['json'](_0x23ae76);}return null;};}function patchUpdates(_0x478d55){return function(_0x53bd06){try{jsonpatch[_0xe3e8('0x33')](_0x53bd06,_0x478d55,!![]);}catch(_0x5f0af7){return BPromise[_0xe3e8('0x34')](_0x5f0af7);}return _0x53bd06[_0xe3e8('0x35')]();};}function saveUpdates(_0x4848cb,_0x393b22){return function(_0x3d29e6){if(_0x3d29e6){return _0x3d29e6[_0xe3e8('0x36')](_0x4848cb)['then'](function(_0x5b0c09){return _0x5b0c09;});}return null;};}function removeEntity(_0x268791,_0x4b606f){return function(_0x48d72d){if(_0x48d72d){return _0x48d72d[_0xe3e8('0x37')]()[_0xe3e8('0x22')](function(){var _0xca2a3b=_0x48d72d[_0xe3e8('0x38')]({'plain':!![]});var _0x175059=_0xe3e8('0x39');return db[_0xe3e8('0x3a')]['destroy']({'where':{'type':_0x175059,'resourceId':_0xca2a3b['id']}})[_0xe3e8('0x22')](function(){return _0x48d72d;});})[_0xe3e8('0x22')](function(){_0x268791[_0xe3e8('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1837db,_0x3192f9){return function(_0x7d9f5e){if(!_0x7d9f5e){_0x1837db[_0xe3e8('0x2c')](0x194);}return _0x7d9f5e;};}function handleError(_0x17a648,_0x5ac713){_0x5ac713=_0x5ac713||0x1f4;return function(_0xead048){logger[_0xe3e8('0x26')](_0xead048['stack']);if(_0xead048[_0xe3e8('0x3b')]){delete _0xead048[_0xe3e8('0x3b')];}_0x17a648['status'](_0x5ac713)[_0xe3e8('0x3c')](_0xead048);};}exports[_0xe3e8('0x3d')]=function(_0x1dd494,_0x36e1e3){var _0x41892f={},_0x3f3e0c={},_0x5d5693={'count':0x0,'rows':[]};var _0x2b3973=_[_0xe3e8('0x3e')](db[_0xe3e8('0x3f')][_0xe3e8('0x40')],function(_0x288b97){return{'name':_0x288b97['fieldName'],'type':_0x288b97[_0xe3e8('0x41')]['key']};});_0x3f3e0c['model']=_[_0xe3e8('0x3e')](_0x2b3973,_0xe3e8('0x3b'));_0x3f3e0c[_0xe3e8('0x42')]=_['keys'](_0x1dd494[_0xe3e8('0x42')]);_0x3f3e0c[_0xe3e8('0x43')]=_['intersection'](_0x3f3e0c['model'],_0x3f3e0c[_0xe3e8('0x42')]);_0x41892f['attributes']=_['intersection'](_0x3f3e0c[_0xe3e8('0x44')],qs[_0xe3e8('0x45')](_0x1dd494['query'][_0xe3e8('0x45')]));_0x41892f[_0xe3e8('0x46')]=_0x41892f[_0xe3e8('0x46')][_0xe3e8('0x47')]?_0x41892f[_0xe3e8('0x46')]:_0x3f3e0c['model'];if(!_0x1dd494['query'][_0xe3e8('0x48')]('nolimit')){_0x41892f[_0xe3e8('0x31')]=qs[_0xe3e8('0x31')](_0x1dd494[_0xe3e8('0x42')][_0xe3e8('0x31')]);_0x41892f['offset']=qs[_0xe3e8('0x30')](_0x1dd494['query'][_0xe3e8('0x30')]);}_0x41892f[_0xe3e8('0x49')]=qs[_0xe3e8('0x4a')](_0x1dd494['query'][_0xe3e8('0x4a')]);_0x41892f['where']=qs['filters'](_[_0xe3e8('0x4b')](_0x1dd494['query'],_0x3f3e0c[_0xe3e8('0x43')]),_0x2b3973);if(_0x1dd494[_0xe3e8('0x42')]['filter']){_0x41892f[_0xe3e8('0x4c')]=_[_0xe3e8('0x4d')](_0x41892f[_0xe3e8('0x4c')],{'$or':_['map'](_0x2b3973,function(_0x38bd1c){if(_0x38bd1c[_0xe3e8('0x41')]!==_0xe3e8('0x4e')){var _0x367d62={};_0x367d62[_0x38bd1c[_0xe3e8('0x3b')]]={'$like':'%'+_0x1dd494['query'][_0xe3e8('0x4f')]+'%'};return _0x367d62;}})});}_0x41892f=_[_0xe3e8('0x4d')]({},_0x41892f,_0x1dd494[_0xe3e8('0x50')]);var _0x514584={'where':_0x41892f[_0xe3e8('0x4c')]};return db['ChatQueue'][_0xe3e8('0x51')](_0x514584)[_0xe3e8('0x22')](function(_0x544228){_0x5d5693[_0xe3e8('0x51')]=_0x544228;if(_0x1dd494['query']['includeAll']){_0x41892f[_0xe3e8('0x52')]=[{'all':!![]}];}return db[_0xe3e8('0x3f')]['findAll'](_0x41892f);})[_0xe3e8('0x22')](function(_0x23197e){_0x5d5693[_0xe3e8('0x53')]=_0x23197e;return _0x5d5693;})[_0xe3e8('0x22')](respondWithFilteredResult(_0x36e1e3,_0x41892f))[_0xe3e8('0x2b')](handleError(_0x36e1e3,null));};exports[_0xe3e8('0x54')]=function(_0x4cdaa6,_0x1ca3fa){var _0x35d3ef={'raw':!![],'where':{'id':_0x4cdaa6[_0xe3e8('0x55')]['id']}},_0x4cffd1={};_0x4cffd1[_0xe3e8('0x44')]=_[_0xe3e8('0x56')](db[_0xe3e8('0x3f')]['rawAttributes']);_0x4cffd1[_0xe3e8('0x42')]=_['keys'](_0x4cdaa6[_0xe3e8('0x42')]);_0x4cffd1[_0xe3e8('0x43')]=_[_0xe3e8('0x57')](_0x4cffd1[_0xe3e8('0x44')],_0x4cffd1[_0xe3e8('0x42')]);_0x35d3ef[_0xe3e8('0x46')]=_['intersection'](_0x4cffd1['model'],qs[_0xe3e8('0x45')](_0x4cdaa6[_0xe3e8('0x42')][_0xe3e8('0x45')]));_0x35d3ef['attributes']=_0x35d3ef['attributes'][_0xe3e8('0x47')]?_0x35d3ef[_0xe3e8('0x46')]:_0x4cffd1[_0xe3e8('0x44')];if(_0x4cdaa6[_0xe3e8('0x42')]['includeAll']){_0x35d3ef[_0xe3e8('0x52')]=[{'all':!![]}];}_0x35d3ef=_[_0xe3e8('0x4d')]({},_0x35d3ef,_0x4cdaa6[_0xe3e8('0x50')]);return db[_0xe3e8('0x3f')][_0xe3e8('0x58')](_0x35d3ef)[_0xe3e8('0x22')](handleEntityNotFound(_0x1ca3fa,null))['then'](respondWithResult(_0x1ca3fa,null))[_0xe3e8('0x2b')](handleError(_0x1ca3fa,null));};exports['create']=function(_0x18dc68,_0x28c858){return db['ChatQueue']['create'](_0x18dc68[_0xe3e8('0x59')],{})[_0xe3e8('0x22')](function(_0x224c6c){var _0x25b273=_0x18dc68[_0xe3e8('0x5a')][_0xe3e8('0x38')]({'plain':!![]});if(!_0x25b273)throw new Error(_0xe3e8('0x5b'));if(_0x25b273[_0xe3e8('0x5c')]===_0xe3e8('0x5a')){var _0x1b5877=_0x224c6c['get']({'plain':!![]});var _0x1864e3=_0xe3e8('0x39');return db[_0xe3e8('0x5d')][_0xe3e8('0x58')]({'where':{'name':_0x1864e3,'userProfileId':_0x25b273[_0xe3e8('0x5e')]},'raw':!![]})['then'](function(_0x53ced7){if(_0x53ced7&&_0x53ced7[_0xe3e8('0x5f')]===0x0){return db['UserProfileResource'][_0xe3e8('0x60')]({'name':_0x1b5877['name'],'resourceId':_0x1b5877['id'],'type':_0x53ced7[_0xe3e8('0x3b')],'sectionId':_0x53ced7['id']},{})[_0xe3e8('0x22')](function(){return _0x224c6c;});}else{return _0x224c6c;}})['catch'](function(_0x1cdbbe){logger[_0xe3e8('0x26')](_0xe3e8('0x61'),_0x1cdbbe);throw _0x1cdbbe;});}return _0x224c6c;})[_0xe3e8('0x22')](respondWithResult(_0x28c858,0xc9))[_0xe3e8('0x2b')](handleError(_0x28c858,null));};exports['update']=function(_0x5f5a30,_0x1f6173){if(_0x5f5a30[_0xe3e8('0x59')]['id']){delete _0x5f5a30[_0xe3e8('0x59')]['id'];}return db[_0xe3e8('0x3f')][_0xe3e8('0x58')]({'where':{'id':_0x5f5a30[_0xe3e8('0x55')]['id']}})['then'](handleEntityNotFound(_0x1f6173,null))[_0xe3e8('0x22')](saveUpdates(_0x5f5a30['body'],null))['then'](respondWithResult(_0x1f6173,null))[_0xe3e8('0x2b')](handleError(_0x1f6173,null));};exports['destroy']=function(_0x5444d5,_0x310447){return db[_0xe3e8('0x3f')][_0xe3e8('0x58')]({'where':{'id':_0x5444d5[_0xe3e8('0x55')]['id']}})[_0xe3e8('0x22')](handleEntityNotFound(_0x310447,null))[_0xe3e8('0x22')](removeEntity(_0x310447,null))[_0xe3e8('0x2b')](handleError(_0x310447,null));};exports[_0xe3e8('0x62')]=function(_0x32adb5,_0x28848e){return db[_0xe3e8('0x3f')]['describe']()[_0xe3e8('0x22')](respondWithResult(_0x28848e,null))[_0xe3e8('0x2b')](handleError(_0x28848e,null));};exports[_0xe3e8('0x63')]=function(_0x5aeec6,_0x4c49a6,_0x2048bc){var _0x4689a7={'raw':!![],'where':{}},_0x2c3e38={},_0x9a9f52;return db['ChatQueue'][_0xe3e8('0x64')]({'where':{'id':_0x5aeec6[_0xe3e8('0x55')]['id']}})[_0xe3e8('0x22')](handleEntityNotFound(_0x4c49a6,null))[_0xe3e8('0x22')](function(_0x2136b9){if(_0x2136b9){_0x9a9f52=_0x2136b9['get']({'plain':!![]});_0x2c3e38[_0xe3e8('0x44')]=_[_0xe3e8('0x56')](db['UserChatQueue'][_0xe3e8('0x40')]);_0x2c3e38[_0xe3e8('0x42')]=_[_0xe3e8('0x56')](_0x5aeec6['query']);_0x2c3e38[_0xe3e8('0x43')]=_[_0xe3e8('0x57')](_0x2c3e38[_0xe3e8('0x44')],_0x2c3e38[_0xe3e8('0x42')]);_0x4689a7[_0xe3e8('0x46')]=_['intersection'](_0x2c3e38[_0xe3e8('0x44')],qs['fields'](_0x5aeec6[_0xe3e8('0x42')][_0xe3e8('0x45')]));_0x4689a7[_0xe3e8('0x46')]=_0x4689a7['attributes'][_0xe3e8('0x47')]?_0x4689a7[_0xe3e8('0x46')]:_0x2c3e38[_0xe3e8('0x44')];if(!_0x5aeec6[_0xe3e8('0x42')][_0xe3e8('0x48')]('nolimit')){_0x4689a7[_0xe3e8('0x31')]=qs[_0xe3e8('0x31')](_0x5aeec6[_0xe3e8('0x42')][_0xe3e8('0x31')]);_0x4689a7[_0xe3e8('0x30')]=qs[_0xe3e8('0x30')](_0x5aeec6[_0xe3e8('0x42')][_0xe3e8('0x30')]);}_0x4689a7['order']=qs[_0xe3e8('0x4a')](_0x5aeec6[_0xe3e8('0x42')][_0xe3e8('0x4a')]);_0x4689a7[_0xe3e8('0x4c')]=qs['filters'](_[_0xe3e8('0x4b')](_0x5aeec6[_0xe3e8('0x42')],_0x2c3e38[_0xe3e8('0x43')]));_0x4689a7[_0xe3e8('0x4c')][_0xe3e8('0x65')]=_0x2136b9['id'];if(_0x5aeec6[_0xe3e8('0x42')][_0xe3e8('0x4f')]){_0x4689a7[_0xe3e8('0x4c')]=_[_0xe3e8('0x4d')](_0x4689a7[_0xe3e8('0x4c')],{'$or':_[_0xe3e8('0x3e')](_0x4689a7[_0xe3e8('0x46')],function(_0x3ab37f){var _0x4c4fed={};_0x4c4fed[_0x3ab37f]={'$like':'%'+_0x5aeec6[_0xe3e8('0x42')]['filter']+'%'};return _0x4c4fed;})});}_0x4689a7=_[_0xe3e8('0x4d')]({},_0x4689a7,_0x5aeec6['options']);return db[_0xe3e8('0x66')][_0xe3e8('0x67')](_0x4689a7);}})[_0xe3e8('0x22')](function(_0x4646d0){if(_0x4646d0){return db[_0xe3e8('0x68')][_0xe3e8('0x69')]({'where':{'id':_[_0xe3e8('0x3e')](_0x4646d0,'UserId'),'role':_0xe3e8('0x6a')},'attributes':['id',_0xe3e8('0x3b'),_0xe3e8('0x6b'),_0xe3e8('0x6c'),'createdAt']});}})['then'](function(_0x54403c){if(_0x54403c){return{'count':_0x54403c['count'],'rows':_[_0xe3e8('0x3e')](_0x54403c[_0xe3e8('0x53')],function(_0x45fcc4){return{'membername':_0x45fcc4[_0xe3e8('0x3b')],'UserId':_0x45fcc4['id'],'queue_name':_0x9a9f52[_0xe3e8('0x3b')],'ChatQueueId':_0x9a9f52['id'],'interface':util['format'](_0xe3e8('0x6d'),_0xe3e8('0x6e'),_0x45fcc4[_0xe3e8('0x3b')]),'penalty':0x0,'paused':_0x45fcc4[_0xe3e8('0x6b')],'createdAt':_0x45fcc4[_0xe3e8('0x6f')],'updatedAt':_0x45fcc4[_0xe3e8('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe3e8('0x22')](respondWithFilteredResult(_0x4c49a6,_0x4689a7))[_0xe3e8('0x2b')](handleError(_0x4c49a6,null));};exports[_0xe3e8('0x70')]=function(_0x19482f,_0x103b07,_0x14e126){var _0x2a3e78={};var _0x32748c={};var _0xfab336;var _0x31b0e1;return db[_0xe3e8('0x3f')][_0xe3e8('0x64')]({'where':{'id':_0x19482f['params']['id']}})[_0xe3e8('0x22')](handleEntityNotFound(_0x103b07,null))[_0xe3e8('0x22')](function(_0x1063c1){if(_0x1063c1){_0xfab336=_0x1063c1;_0x32748c[_0xe3e8('0x44')]=_[_0xe3e8('0x56')](db['Team']['rawAttributes']);_0x32748c[_0xe3e8('0x42')]=_['keys'](_0x19482f[_0xe3e8('0x42')]);_0x32748c[_0xe3e8('0x43')]=_[_0xe3e8('0x57')](_0x32748c[_0xe3e8('0x44')],_0x32748c[_0xe3e8('0x42')]);_0x2a3e78[_0xe3e8('0x46')]=_[_0xe3e8('0x57')](_0x32748c[_0xe3e8('0x44')],qs['fields'](_0x19482f[_0xe3e8('0x42')][_0xe3e8('0x45')]));_0x2a3e78[_0xe3e8('0x46')]=_0x2a3e78[_0xe3e8('0x46')][_0xe3e8('0x47')]?_0x2a3e78['attributes']:_0x32748c[_0xe3e8('0x44')];_0x2a3e78[_0xe3e8('0x49')]=qs['sort'](_0x19482f[_0xe3e8('0x42')][_0xe3e8('0x4a')]);_0x2a3e78[_0xe3e8('0x4c')]=qs[_0xe3e8('0x43')](_[_0xe3e8('0x4b')](_0x19482f[_0xe3e8('0x42')],_0x32748c[_0xe3e8('0x43')]));if(_0x19482f[_0xe3e8('0x42')]['filter']){_0x2a3e78[_0xe3e8('0x4c')]=_['merge'](_0x2a3e78[_0xe3e8('0x4c')],{'$or':_[_0xe3e8('0x3e')](_0x2a3e78[_0xe3e8('0x46')],function(_0x5ca3e4){var _0x30bfbf={};_0x30bfbf[_0x5ca3e4]={'$like':'%'+_0x19482f[_0xe3e8('0x42')][_0xe3e8('0x4f')]+'%'};return _0x30bfbf;})});}_0x2a3e78=_['merge']({},_0x2a3e78,_0x19482f['options']);return _0xfab336[_0xe3e8('0x70')](_0x2a3e78);}})[_0xe3e8('0x22')](function(_0x5aa0b9){if(_0x5aa0b9){_0x31b0e1=_0x5aa0b9[_0xe3e8('0x47')];if(!_0x19482f['query'][_0xe3e8('0x48')](_0xe3e8('0x71'))){_0x2a3e78[_0xe3e8('0x31')]=qs[_0xe3e8('0x31')](_0x19482f[_0xe3e8('0x42')][_0xe3e8('0x31')]);_0x2a3e78[_0xe3e8('0x30')]=qs[_0xe3e8('0x30')](_0x19482f[_0xe3e8('0x42')][_0xe3e8('0x30')]);}return _0xfab336[_0xe3e8('0x70')](_0x2a3e78);}})[_0xe3e8('0x22')](function(_0x3f8279){if(_0x3f8279){return _0x3f8279?{'count':_0x31b0e1,'rows':_0x3f8279}:null;}})[_0xe3e8('0x22')](respondWithResult(_0x103b07,null))['catch'](handleError(_0x103b07,null));};exports[_0xe3e8('0x72')]=function(_0x5b4582,_0x2e49e8,_0x2b4c18){var _0x275a94=_0x5b4582['body'][_0xe3e8('0x73')];return db[_0xe3e8('0x74')][_0xe3e8('0x67')]({'where':{'id':_0x275a94},'attributes':['id'],'include':[{'model':db[_0xe3e8('0x68')],'as':'Agents','attributes':['id','name','online','voicePause','interface'],'raw':!![]}]})[_0xe3e8('0x22')](function(_0x52f227){if(_0x52f227){var _0x220e61=_[_0xe3e8('0x75')](_0x52f227,function(_0x31741d){var _0x422fef=_0x31741d[_0xe3e8('0x38')]({'plain':!![]});return _0x422fef[_0xe3e8('0x76')];});return db['ChatQueue']['find']({'where':{'id':_0x5b4582[_0xe3e8('0x55')]['id']}})[_0xe3e8('0x22')](function(_0x17b87e){return db[_0xe3e8('0x77')][_0xe3e8('0x78')](function(_0x3ad364){return _0x17b87e[_0xe3e8('0x72')](_0x275a94,{'transaction':_0x3ad364})[_0xe3e8('0x22')](function(){return BPromise[_0xe3e8('0x79')](_0x220e61,function(_0x53197b){return db[_0xe3e8('0x66')][_0xe3e8('0x7a')]({'where':{'UserId':_0x53197b['id'],'ChatQueueId':_0x5b4582[_0xe3e8('0x55')]['id']},'transaction':_0x3ad364});});})[_0xe3e8('0x22')](function(){_0x220e61[_0xe3e8('0x7b')](function(_0x2550c4){socket[_0xe3e8('0x7c')]('userChatQueue:save',{'UserId':_0x2550c4['id'],'ChatQueueId':_0x17b87e['id']});});});});});}})[_0xe3e8('0x22')](respondWithStatusCode(_0x2e49e8,null))[_0xe3e8('0x2b')](handleError(_0x2e49e8,null));};exports['removeTeams']=function(_0x16d370,_0x243303,_0x30d4f7){return db[_0xe3e8('0x74')][_0xe3e8('0x67')]({'where':{'id':_0x16d370[_0xe3e8('0x42')]['ids']},'attributes':['id'],'include':[{'model':db[_0xe3e8('0x68')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xe3e8('0x22')](handleEntityNotFound(_0x243303,null))['then'](function(_0x57c6c8){var _0xe17a13=_[_0xe3e8('0x3e')](_0x57c6c8,'id');var _0x1af7fe=[];var _0x2c8803=[];var _0x56d80f=squel['select']();_0x56d80f[_0xe3e8('0x7d')](_0xe3e8('0x7e'))['from']('team_has_chat_queues','tq')['join'](_0xe3e8('0x7f'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xe3e8('0x80'),_0x16d370['params']['id']);for(var _0x310294=0x0;_0x310294<_0x57c6c8['length'];_0x310294+=0x1){let _0x1086a2=_0x57c6c8[_0x310294];for(var _0x3e1f67=0x0;_0x3e1f67<_0x1086a2['Agents'][_0xe3e8('0x47')];_0x3e1f67+=0x1){let _0x525aff=_0x1086a2[_0xe3e8('0x76')][_0x3e1f67];var _0x5b6ad3=_0x56d80f[_0xe3e8('0x81')]();_0x5b6ad3[_0xe3e8('0x4c')](_0xe3e8('0x82'),_0x525aff['id']);_0x2c8803[_0xe3e8('0x83')](db['sequelize'][_0xe3e8('0x42')](_0x5b6ad3[_0xe3e8('0x84')](),{'type':db[_0xe3e8('0x77')][_0xe3e8('0x85')][_0xe3e8('0x86')]})['then'](function(_0x31df44){if(_0x31df44[_0xe3e8('0x47')]===0x1){return _0x525aff['id'];}else{var _0x37c3d7=_['every'](_[_0xe3e8('0x3e')](_0x31df44,_0xe3e8('0x87')),function(_0x33c0cd){return _[_0xe3e8('0x88')](_0xe17a13,_0x33c0cd);});if(_0x37c3d7){return _0x525aff['id'];}}}));}}return BPromise['all'](_0x2c8803)[_0xe3e8('0x22')](function(_0x5e41a1){_0x1af7fe=_(_0x1af7fe)[_0xe3e8('0x89')](_0x5e41a1)['compact']()[_0xe3e8('0x8a')]();return db[_0xe3e8('0x3f')][_0xe3e8('0x58')]({'where':{'id':_0x16d370['params']['id']}})[_0xe3e8('0x22')](function(_0x3e2d91){return db[_0xe3e8('0x77')]['transaction'](function(_0x3bb742){return _0x3e2d91[_0xe3e8('0x8b')](_0x16d370[_0xe3e8('0x42')][_0xe3e8('0x73')],{'transaction':_0x3bb742})[_0xe3e8('0x22')](function(){if(!_[_0xe3e8('0x8c')](_0x1af7fe)){return _0x3e2d91[_0xe3e8('0x8d')](_0x1af7fe,{'transaction':_0x3bb742});}})[_0xe3e8('0x22')](function(){_0x1af7fe[_0xe3e8('0x7b')](function(_0xc9c31){socket[_0xe3e8('0x7c')](_0xe3e8('0x8e'),{'UserId':_0xc9c31,'ChatQueueId':_0x3e2d91['id']});});});});});});})[_0xe3e8('0x22')](respondWithStatusCode(_0x243303,null))[_0xe3e8('0x2b')](handleError(_0x243303,null));};exports[_0xe3e8('0x8f')]=function(_0x3bcbf9,_0x4245a4,_0x44596e){return db[_0xe3e8('0x3f')][_0xe3e8('0x58')]({'where':{'id':_0x3bcbf9[_0xe3e8('0x55')]['id']}})[_0xe3e8('0x22')](handleEntityNotFound(_0x4245a4,null))[_0xe3e8('0x22')](function(_0x50bd00){if(_0x50bd00){return _0x50bd00['addAgents'](_0x3bcbf9[_0xe3e8('0x59')]['ids'],_[_0xe3e8('0x90')](_0x3bcbf9[_0xe3e8('0x59')],[_0xe3e8('0x73'),'id'])||{})[_0xe3e8('0x91')](function(_0x10d179){for(var _0x47d95b=0x0;_0x47d95b<_0x3bcbf9[_0xe3e8('0x59')][_0xe3e8('0x73')][_0xe3e8('0x47')];_0x47d95b+=0x1){socket[_0xe3e8('0x7c')](_0xe3e8('0x92'),{'UserId':Number(_0x3bcbf9['body'][_0xe3e8('0x73')][_0x47d95b]),'ChatQueueId':Number(_0x3bcbf9[_0xe3e8('0x55')]['id'])});}return _0x10d179;});}})[_0xe3e8('0x22')](respondWithResult(_0x4245a4,null))['catch'](handleError(_0x4245a4,null));};exports['removeAgents']=function(_0x3b09ad,_0x5e52c8,_0x32a787){return db['ChatQueue']['find']({'where':{'id':_0x3b09ad[_0xe3e8('0x55')]['id']}})['then'](handleEntityNotFound(_0x5e52c8,null))['then'](function(_0x445c88){if(_0x445c88){return _0x445c88['removeAgents'](_0x3b09ad[_0xe3e8('0x42')][_0xe3e8('0x73')])[_0xe3e8('0x22')](function(){if(_[_0xe3e8('0x93')](_0x3b09ad['query'][_0xe3e8('0x73')])){for(var _0x4483e4=0x0;_0x4483e4<_0x3b09ad[_0xe3e8('0x42')]['ids']['length'];_0x4483e4+=0x1){socket[_0xe3e8('0x7c')](_0xe3e8('0x8e'),{'UserId':Number(_0x3b09ad[_0xe3e8('0x42')]['ids'][_0x4483e4]),'ChatQueueId':Number(_0x3b09ad[_0xe3e8('0x55')]['id'])});}}else{socket[_0xe3e8('0x7c')](_0xe3e8('0x8e'),{'UserId':Number(_0x3b09ad[_0xe3e8('0x42')][_0xe3e8('0x73')]),'ChatQueueId':Number(_0x3b09ad['params']['id'])});}});}})[_0xe3e8('0x22')](respondWithStatusCode(_0x5e52c8,null))[_0xe3e8('0x2b')](handleError(_0x5e52c8,null));};exports[_0xe3e8('0x94')]=function(_0x46c8a6,_0x48fab7,_0x21dfd3){var _0x35ad82={};var _0x51f792={};var _0x27c493;var _0x47c076;return db[_0xe3e8('0x3f')][_0xe3e8('0x64')]({'where':{'id':_0x46c8a6[_0xe3e8('0x55')]['id']}})['then'](handleEntityNotFound(_0x48fab7,null))[_0xe3e8('0x22')](function(_0x568fed){if(_0x568fed){_0x27c493=_0x568fed;_0x51f792[_0xe3e8('0x44')]=_[_0xe3e8('0x56')](db[_0xe3e8('0x68')][_0xe3e8('0x40')]);_0x51f792[_0xe3e8('0x42')]=_[_0xe3e8('0x56')](_0x46c8a6['query']);_0x51f792[_0xe3e8('0x43')]=_[_0xe3e8('0x57')](_0x51f792['model'],_0x51f792[_0xe3e8('0x42')]);_0x35ad82[_0xe3e8('0x46')]=_[_0xe3e8('0x57')](_0x51f792[_0xe3e8('0x44')],qs[_0xe3e8('0x45')](_0x46c8a6[_0xe3e8('0x42')][_0xe3e8('0x45')]));_0x35ad82[_0xe3e8('0x46')]=_0x35ad82[_0xe3e8('0x46')][_0xe3e8('0x47')]?_0x35ad82[_0xe3e8('0x46')]:_0x51f792['model'];_0x35ad82[_0xe3e8('0x49')]=qs[_0xe3e8('0x4a')](_0x46c8a6[_0xe3e8('0x42')][_0xe3e8('0x4a')]);_0x35ad82['where']=qs[_0xe3e8('0x43')](_['pick'](_0x46c8a6['query'],_0x51f792[_0xe3e8('0x43')]));if(_0x46c8a6[_0xe3e8('0x42')][_0xe3e8('0x4f')]){_0x35ad82[_0xe3e8('0x4c')]=_['merge'](_0x35ad82[_0xe3e8('0x4c')],{'$or':_[_0xe3e8('0x3e')](_0x35ad82['attributes'],function(_0x2c92f9){var _0x2ca36b={};_0x2ca36b[_0x2c92f9]={'$like':'%'+_0x46c8a6[_0xe3e8('0x42')][_0xe3e8('0x4f')]+'%'};return _0x2ca36b;})});}_0x35ad82=_[_0xe3e8('0x4d')]({},_0x35ad82,_0x46c8a6['options']);return _0x27c493[_0xe3e8('0x94')](_0x35ad82);}})[_0xe3e8('0x22')](function(_0x548bcd){if(_0x548bcd){_0x47c076=_0x548bcd[_0xe3e8('0x47')];if(!_0x46c8a6[_0xe3e8('0x42')][_0xe3e8('0x48')](_0xe3e8('0x71'))){_0x35ad82[_0xe3e8('0x31')]=qs[_0xe3e8('0x31')](_0x46c8a6['query'][_0xe3e8('0x31')]);_0x35ad82[_0xe3e8('0x30')]=qs['offset'](_0x46c8a6[_0xe3e8('0x42')][_0xe3e8('0x30')]);}return _0x27c493['getAgents'](_0x35ad82);}})[_0xe3e8('0x22')](function(_0x3a2484){if(_0x3a2484){return _0x3a2484?{'count':_0x47c076,'rows':_0x3a2484}:null;}})['then'](respondWithResult(_0x48fab7,null))[_0xe3e8('0x2b')](handleError(_0x48fab7,null));};
\ No newline at end of file
index cba8aeb..ca78e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fc4=['../../mysqldb','ChatQueue','setMaxListeners','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x1ca636,_0x413c88){var _0x576e92=function(_0xa48670){while(--_0xa48670){_0x1ca636['push'](_0x1ca636['shift']());}};_0x576e92(++_0x413c88);}(_0x7fc4,0x8f));var _0x47fc=function(_0x4185f2,_0x515cd6){_0x4185f2=_0x4185f2-0x0;var _0x1feac5=_0x7fc4[_0x4185f2];return _0x1feac5;};'use strict';var EventEmitter=require(_0x47fc('0x0'));var ChatQueue=require(_0x47fc('0x1'))['db'][_0x47fc('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x47fc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x47fc('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2148f7){return function(_0x3724b6,_0x3bcb71,_0x52f167){ChatQueueEvents[_0x47fc('0x5')](_0x2148f7+':'+_0x3724b6['id'],_0x3724b6);ChatQueueEvents['emit'](_0x2148f7,_0x3724b6);_0x52f167(null);};}for(var e in events){if(events[_0x47fc('0x6')](e)){var event=events[e];ChatQueue[_0x47fc('0x7')](e,emitEvent(event));}}module[_0x47fc('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x7ced=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','update'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7ced,0x126));var _0xd7ce=function(_0x21f28f,_0x3be6b8){_0x21f28f=_0x21f28f-0x0;var _0x180f21=_0x7ced[_0x21f28f];return _0x180f21;};'use strict';var EventEmitter=require(_0xd7ce('0x0'));var ChatQueue=require(_0xd7ce('0x1'))['db'][_0xd7ce('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xd7ce('0x3')](0x0);var events={'afterCreate':_0xd7ce('0x4'),'afterUpdate':_0xd7ce('0x5'),'afterDestroy':_0xd7ce('0x6')};function emitEvent(_0x5964d2){return function(_0x2d302d,_0x4dac42,_0x566834){ChatQueueEvents['emit'](_0x5964d2+':'+_0x2d302d['id'],_0x2d302d);ChatQueueEvents[_0xd7ce('0x7')](_0x5964d2,_0x2d302d);_0x566834(null);};}for(var e in events){if(events[_0xd7ce('0x8')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0xd7ce('0x9')]=ChatQueueEvents;
\ No newline at end of file
index d56e9a8..383e3ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d7a=['request-promise','path','rimraf','../../config/environment','define','ChatQueue','util','../../config/logger','api'];(function(_0x3c6a93,_0x408ed6){var _0x396500=function(_0x1fa8c1){while(--_0x1fa8c1){_0x3c6a93['push'](_0x3c6a93['shift']());}};_0x396500(++_0x408ed6);}(_0x5d7a,0x16e));var _0xa5d7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x5d7a[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xa5d7('0x0'));var logger=require(_0xa5d7('0x1'))(_0xa5d7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa5d7('0x3'));var fs=require('fs');var path=require(_0xa5d7('0x4'));var rimraf=require(_0xa5d7('0x5'));var config=require(_0xa5d7('0x6'));var attributes=require('./chatQueue.attributes');module['exports']=function(_0x5e52f2,_0x257faf){return _0x5e52f2[_0xa5d7('0x7')](_0xa5d7('0x8'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a63=['./chatQueue.attributes','define','ChatQueue','chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x20d858,_0x55c092){var _0x3e73ec=function(_0x3859aa){while(--_0x3859aa){_0x20d858['push'](_0x20d858['shift']());}};_0x3e73ec(++_0x55c092);}(_0x1a63,0x170));var _0x31a6=function(_0x424a50,_0x1fd66d){_0x424a50=_0x424a50-0x0;var _0x1427b2=_0x1a63[_0x424a50];return _0x1427b2;};'use strict';var _=require(_0x31a6('0x0'));var util=require(_0x31a6('0x1'));var logger=require(_0x31a6('0x2'))(_0x31a6('0x3'));var moment=require(_0x31a6('0x4'));var BPromise=require(_0x31a6('0x5'));var rp=require(_0x31a6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31a6('0x7'));var config=require(_0x31a6('0x8'));var attributes=require(_0x31a6('0x9'));module['exports']=function(_0x5f2e34,_0x2a8a26){return _0x5f2e34[_0x31a6('0xa')](_0x31a6('0xb'),attributes,{'tableName':_0x31a6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6b16af7..344f585 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(_0x3429d0,_0x267e26){var _0x3d1059=function(_0x4fa72b){while(--_0x4fa72b){_0x3429d0['push'](_0x3429d0['shift']());}};_0x3d1059(++_0x267e26);}(_0x77ff,0x168));var _0xf77f=function(_0x534817,_0x55cc0a){_0x534817=_0x534817-0x0;var _0x4e3ecb=_0x77ff[_0x534817];return _0x4e3ecb;};'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 _0x280b=['model','then','info','stringify','ShowChatQueue','util','moment','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','localhost','redis','register','request','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x52ece1,_0x425dc5){var _0x329205=function(_0xf76c47){while(--_0xf76c47){_0x52ece1['push'](_0x52ece1['shift']());}};_0x329205(++_0x425dc5);}(_0x280b,0x1bf));var _0xb280=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x280b[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xb280('0x0'));var moment=require(_0xb280('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb280('0x2'));var db=require(_0xb280('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb280('0x4'));var jayson=require(_0xb280('0x5'));var client=jayson['client'][_0xb280('0x6')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xb280('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb280('0x8')]));require('./chatQueue.socket')[_0xb280('0x9')](socket);function respondWithRpcPromise(_0x2ba011,_0x48296b,_0x5c98b1){return new BPromise(function(_0x314169,_0x54713e){return client[_0xb280('0xa')](_0x2ba011,_0x5c98b1)['then'](function(_0x14fee1){logger['info'](_0xb280('0xb'),_0x48296b,_0xb280('0xc'));logger[_0xb280('0xd')](_0xb280('0xe'),_0x48296b,'request\x20sent',JSON['stringify'](_0x14fee1));if(_0x14fee1[_0xb280('0xf')]){if(_0x14fee1[_0xb280('0xf')]['code']===0x1f4){logger[_0xb280('0xf')](_0xb280('0xb'),_0x48296b,_0x14fee1[_0xb280('0xf')][_0xb280('0x10')]);return _0x54713e(_0x14fee1[_0xb280('0xf')][_0xb280('0x10')]);}logger[_0xb280('0xf')](_0xb280('0xb'),_0x48296b,_0x14fee1['error'][_0xb280('0x10')]);return _0x314169(_0x14fee1[_0xb280('0xf')][_0xb280('0x10')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x48296b,'request\x20sent');_0x314169(_0x14fee1[_0xb280('0x11')][_0xb280('0x10')]);}})[_0xb280('0x12')](function(_0x475f78){logger[_0xb280('0xf')](_0xb280('0xb'),_0x48296b,_0x475f78);_0x54713e(_0x475f78);});});}exports[_0xb280('0x13')]=function(_0x18cfb3){var _0x678430=this;return new Promise(function(_0x318b41,_0x52cc87){return db[_0xb280('0x14')][_0xb280('0x15')]({'raw':_0x18cfb3[_0xb280('0x16')]?_0x18cfb3['options'][_0xb280('0x17')]===undefined?!![]:![]:!![],'where':_0x18cfb3[_0xb280('0x16')]?_0x18cfb3[_0xb280('0x16')][_0xb280('0x18')]||null:null,'attributes':_0x18cfb3[_0xb280('0x16')]?_0x18cfb3[_0xb280('0x16')][_0xb280('0x19')]||null:null,'limit':_0x18cfb3[_0xb280('0x16')]?_0x18cfb3[_0xb280('0x16')][_0xb280('0x1a')]||null:null,'include':_0x18cfb3[_0xb280('0x16')]?_0x18cfb3[_0xb280('0x16')][_0xb280('0x1b')]?_[_0xb280('0x1c')](_0x18cfb3['options']['include'],function(_0x4440fd){return{'model':db[_0x4440fd[_0xb280('0x1d')]],'as':_0x4440fd['as'],'attributes':_0x4440fd[_0xb280('0x19')],'include':_0x4440fd['include']?_['map'](_0x4440fd[_0xb280('0x1b')],function(_0x42979e){return{'model':db[_0x42979e[_0xb280('0x1d')]],'as':_0x42979e['as'],'attributes':_0x42979e[_0xb280('0x19')],'include':_0x42979e[_0xb280('0x1b')]?_[_0xb280('0x1c')](_0x42979e[_0xb280('0x1b')],function(_0x4942ee){return{'model':db[_0x4942ee[_0xb280('0x1d')]],'as':_0x4942ee['as'],'attributes':_0x4942ee[_0xb280('0x19')]};}):[]};}):[]};}):[]:[]})[_0xb280('0x1e')](function(_0x181fb3){logger[_0xb280('0x1f')](_0xb280('0x13'),_0x18cfb3);logger[_0xb280('0xd')](_0xb280('0x13'),_0x18cfb3,JSON[_0xb280('0x20')](_0x181fb3));_0x318b41(_0x181fb3);})['catch'](function(_0x2cb950){logger['error']('GetChatQueue',_0x2cb950['message'],_0x18cfb3);_0x52cc87(_0x678430[_0xb280('0xf')](0x1f4,_0x2cb950[_0xb280('0x10')]));});});};exports[_0xb280('0x21')]=function(_0x28bcc1){var _0x40f357=this;return new Promise(function(_0x52a2ac,_0x47dd3c){return db['ChatQueue']['find']({'raw':_0x28bcc1[_0xb280('0x16')]?_0x28bcc1[_0xb280('0x16')][_0xb280('0x17')]===undefined?!![]:![]:!![],'where':_0x28bcc1[_0xb280('0x16')]?_0x28bcc1['options']['where']||null:null,'attributes':_0x28bcc1['options']?_0x28bcc1[_0xb280('0x16')][_0xb280('0x19')]||null:null,'include':_0x28bcc1['options']?_0x28bcc1[_0xb280('0x16')][_0xb280('0x1b')]?_[_0xb280('0x1c')](_0x28bcc1[_0xb280('0x16')][_0xb280('0x1b')],function(_0x1ad601){return{'model':db[_0x1ad601['model']],'as':_0x1ad601['as'],'attributes':_0x1ad601[_0xb280('0x19')],'include':_0x1ad601[_0xb280('0x1b')]?_['map'](_0x1ad601['include'],function(_0x92d8f6){return{'model':db[_0x92d8f6[_0xb280('0x1d')]],'as':_0x92d8f6['as'],'attributes':_0x92d8f6[_0xb280('0x19')],'include':_0x92d8f6[_0xb280('0x1b')]?_['map'](_0x92d8f6['include'],function(_0x40e655){return{'model':db[_0x40e655[_0xb280('0x1d')]],'as':_0x40e655['as'],'attributes':_0x40e655[_0xb280('0x19')]};}):[]};}):[]};}):[]:[]})[_0xb280('0x1e')](function(_0x624546){logger['info'](_0xb280('0x21'),_0x28bcc1);logger['debug'](_0xb280('0x21'),_0x28bcc1,JSON[_0xb280('0x20')](_0x624546));_0x52a2ac(_0x624546);})[_0xb280('0x12')](function(_0x503f8e){logger[_0xb280('0xf')]('ShowChatQueue',_0x503f8e[_0xb280('0x10')],_0x28bcc1);_0x47dd3c(_0x40f357[_0xb280('0xf')](0x1f4,_0x503f8e[_0xb280('0x10')]));});});};
\ No newline at end of file
index 579555a..3fc1d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd50=['length','./chatQueue.events','save','remove','emit'];(function(_0x3f8eb3,_0x2d6da9){var _0x380176=function(_0x45951e){while(--_0x45951e){_0x3f8eb3['push'](_0x3f8eb3['shift']());}};_0x380176(++_0x2d6da9);}(_0xbd50,0x196));var _0x0bd5=function(_0x39d2ad,_0x53645b){_0x39d2ad=_0x39d2ad-0x0;var _0x37d85a=_0xbd50[_0x39d2ad];return _0x37d85a;};'use strict';var ChatQueueEvents=require(_0x0bd5('0x0'));var events=[_0x0bd5('0x1'),_0x0bd5('0x2'),'update'];function createListener(_0x44fcb9,_0x167372){return function(_0x37acba){_0x167372[_0x0bd5('0x3')](_0x44fcb9,_0x37acba);};}function removeListener(_0x15620d,_0x4c17ee){return function(){ChatQueueEvents['removeListener'](_0x15620d,_0x4c17ee);};}exports['register']=function(_0x376024){for(var _0x2ef1d0=0x0,_0xcc6cfa=events[_0x0bd5('0x4')];_0x2ef1d0<_0xcc6cfa;_0x2ef1d0++){var _0x1b99f3=events[_0x2ef1d0];var _0x5ebe64=createListener('chatQueue:'+_0x1b99f3,_0x376024);ChatQueueEvents['on'](_0x1b99f3,_0x5ebe64);}};
\ No newline at end of file
+var _0x29d4=['removeListener','register','length','./chatQueue.events','remove','update'];(function(_0x3b6724,_0x45e223){var _0x38d148=function(_0x5792bb){while(--_0x5792bb){_0x3b6724['push'](_0x3b6724['shift']());}};_0x38d148(++_0x45e223);}(_0x29d4,0x1a1));var _0x429d=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0x29d4[_0x34021d];return _0x16597b;};'use strict';var ChatQueueEvents=require(_0x429d('0x0'));var events=['save',_0x429d('0x1'),_0x429d('0x2')];function createListener(_0x16ce75,_0x472fc9){return function(_0x45df1c){_0x472fc9['emit'](_0x16ce75,_0x45df1c);};}function removeListener(_0xc3989d,_0x3f43f5){return function(){ChatQueueEvents[_0x429d('0x3')](_0xc3989d,_0x3f43f5);};}exports[_0x429d('0x4')]=function(_0x1c55aa){for(var _0xa71445=0x0,_0x56aa2f=events[_0x429d('0x5')];_0xa71445<_0x56aa2f;_0xa71445++){var _0x4befb9=events[_0xa71445];var _0x9fc337=createListener('chatQueue:'+_0x4befb9,_0x1c55aa);ChatQueueEvents['on'](_0x4befb9,_0x9fc337);}};
\ No newline at end of file
index 3f54fd8..fa0b90a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./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(_0x38987f,_0xc79720){var _0x4cb697=function(_0x1af5ae){while(--_0x1af5ae){_0x38987f['push'](_0x38987f['shift']());}};_0x4cb697(++_0xc79720);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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
+var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x4fb1b7,_0x55f67c){var _0x38a0f4=function(_0x24c6a5){while(--_0x24c6a5){_0x4fb1b7['push'](_0x4fb1b7['shift']());}};_0x38a0f4(++_0x55f67c);}(_0xe14b,0x93));var _0xbe14=function(_0x1d56dc,_0x2855c7){_0x1d56dc=_0x1d56dc-0x0;var _0x207366=_0xe14b[_0x1d56dc];return _0x207366;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index d1d36fb..a223d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7233=['sequelize','exports','STRING','DATE','moment'];(function(_0x19750c,_0x3619de){var _0x168482=function(_0x355a30){while(--_0x355a30){_0x19750c['push'](_0x19750c['shift']());}};_0x168482(++_0x3619de);}(_0x7233,0x1b2));var _0x3723=function(_0x25443b,_0x5209dc){_0x25443b=_0x25443b-0x0;var _0x16857f=_0x7233[_0x25443b];return _0x16857f;};'use strict';var moment=require(_0x3723('0x0'));var Sequelize=require(_0x3723('0x1'));module[_0x3723('0x2')]={'uniqueid':{'type':Sequelize[_0x3723('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x3723('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x3723('0x4')]},'exitAt':{'type':Sequelize[_0x3723('0x4')]},'reason':{'type':Sequelize[_0x3723('0x3')]}};
\ No newline at end of file
+var _0x3ed6=['STRING','DATE','moment','exports'];(function(_0x2c200e,_0x16ac59){var _0xf856b0=function(_0x42624b){while(--_0x42624b){_0x2c200e['push'](_0x2c200e['shift']());}};_0xf856b0(++_0x16ac59);}(_0x3ed6,0x1c2));var _0x63ed=function(_0x4be03a,_0x33dcc7){_0x4be03a=_0x4be03a-0x0;var _0x4a5ecf=_0x3ed6[_0x4be03a];return _0x4a5ecf;};'use strict';var moment=require(_0x63ed('0x0'));var Sequelize=require('sequelize');module[_0x63ed('0x1')]={'uniqueid':{'type':Sequelize[_0x63ed('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x63ed('0x2')]},'joinAt':{'type':Sequelize[_0x63ed('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x63ed('0x3')]},'exitAt':{'type':Sequelize[_0x63ed('0x3')]},'reason':{'type':Sequelize[_0x63ed('0x2')]}};
\ No newline at end of file
index f918018..bc48ab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe225=['length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','ChatQueueReport','includeAll','include','catch','show','params','find','create','body','rimraf','zip-dir','bluebird','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes'];(function(_0x4659b5,_0xd07142){var _0x2cd685=function(_0x89afc){while(--_0x89afc){_0x4659b5['push'](_0x4659b5['shift']());}};_0x2cd685(++_0xd07142);}(_0xe225,0x1bd));var _0x5e22=function(_0x191b2d,_0x15f3d9){_0x191b2d=_0x191b2d-0x0;var _0x364d36=_0xe225[_0x191b2d];return _0x364d36;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e22('0x0'));var zipdir=require(_0x5e22('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5e22('0x2'));var Mustache=require('mustache');var util=require(_0x5e22('0x3'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5e22('0x4'));var fs=require('fs');var fs_extra=require(_0x5e22('0x5'));var _=require(_0x5e22('0x6'));var squel=require(_0x5e22('0x7'));var crypto=require(_0x5e22('0x8'));var jsforce=require(_0x5e22('0x9'));var deskjs=require(_0x5e22('0xa'));var toCsv=require(_0x5e22('0xb'));var querystring=require(_0x5e22('0xc'));var Papa=require(_0x5e22('0xd'));var Redis=require(_0x5e22('0xe'));var authService=require(_0x5e22('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5e22('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e22('0x11'))(_0x5e22('0x12'));var utils=require(_0x5e22('0x13'));var config=require(_0x5e22('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5e22('0x15'))['db'];function respondWithStatusCode(_0x5e8b51,_0x3f96be){_0x3f96be=_0x3f96be||0xcc;return function(_0x3dd24c){if(_0x3dd24c){return _0x5e8b51[_0x5e22('0x16')](_0x3f96be);}return _0x5e8b51[_0x5e22('0x17')](_0x3f96be)[_0x5e22('0x18')]();};}function respondWithResult(_0x598d29,_0x1eb276){_0x1eb276=_0x1eb276||0xc8;return function(_0x4795ae){if(_0x4795ae){return _0x598d29[_0x5e22('0x17')](_0x1eb276)[_0x5e22('0x19')](_0x4795ae);}};}function respondWithFilteredResult(_0x1e9eff,_0xbae23a){return function(_0x34de3d){if(_0x34de3d){var _0x32bce1=typeof _0xbae23a[_0x5e22('0x1a')]===_0x5e22('0x1b')&&typeof _0xbae23a[_0x5e22('0x1c')]===_0x5e22('0x1b');var _0x1c4b6c=_0x34de3d['count'];var _0x545723=_0x32bce1?0x0:_0xbae23a[_0x5e22('0x1a')];var _0x48c441=_0x32bce1?_0x34de3d[_0x5e22('0x1d')]:_0xbae23a[_0x5e22('0x1a')]+_0xbae23a[_0x5e22('0x1c')];var _0xe3ed1e;if(_0x48c441>=_0x1c4b6c){_0x48c441=_0x1c4b6c;_0xe3ed1e=0xc8;}else{_0xe3ed1e=0xce;}_0x1e9eff[_0x5e22('0x17')](_0xe3ed1e);return _0x1e9eff[_0x5e22('0x1e')](_0x5e22('0x1f'),_0x545723+'-'+_0x48c441+'/'+_0x1c4b6c)[_0x5e22('0x19')](_0x34de3d);}return null;};}function patchUpdates(_0x280988){return function(_0x26509c){try{jsonpatch['apply'](_0x26509c,_0x280988,!![]);}catch(_0x193a42){return BPromise[_0x5e22('0x20')](_0x193a42);}return _0x26509c[_0x5e22('0x21')]();};}function saveUpdates(_0x303f19,_0x1b5d41){return function(_0x310978){if(_0x310978){return _0x310978[_0x5e22('0x22')](_0x303f19)[_0x5e22('0x23')](function(_0x29f733){return _0x29f733;});}return null;};}function removeEntity(_0x495a17,_0x2a5411){return function(_0x5d0a07){if(_0x5d0a07){return _0x5d0a07[_0x5e22('0x24')]()[_0x5e22('0x23')](function(){_0x495a17[_0x5e22('0x17')](0xcc)[_0x5e22('0x18')]();});}};}function handleEntityNotFound(_0x1f0b7d,_0x3564d2){return function(_0x482825){if(!_0x482825){_0x1f0b7d[_0x5e22('0x16')](0x194);}return _0x482825;};}function handleError(_0x8c7950,_0x38b414){_0x38b414=_0x38b414||0x1f4;return function(_0xf7c5e6){logger[_0x5e22('0x25')](_0xf7c5e6[_0x5e22('0x26')]);if(_0xf7c5e6[_0x5e22('0x27')]){delete _0xf7c5e6['name'];}_0x8c7950['status'](_0x38b414)[_0x5e22('0x28')](_0xf7c5e6);};}exports[_0x5e22('0x29')]=function(_0x3c0561,_0x53d5d5){var _0x1a0bb7={},_0x5a4ad1={},_0x50d048={'count':0x0,'rows':[]};var _0x3bd85d=_[_0x5e22('0x2a')](db['ChatQueueReport'][_0x5e22('0x2b')],function(_0x537574){return{'name':_0x537574['fieldName'],'type':_0x537574['type'][_0x5e22('0x2c')]};});_0x5a4ad1[_0x5e22('0x2d')]=_[_0x5e22('0x2a')](_0x3bd85d,'name');_0x5a4ad1[_0x5e22('0x2e')]=_[_0x5e22('0x2f')](_0x3c0561[_0x5e22('0x2e')]);_0x5a4ad1[_0x5e22('0x30')]=_[_0x5e22('0x31')](_0x5a4ad1[_0x5e22('0x2d')],_0x5a4ad1[_0x5e22('0x2e')]);_0x1a0bb7['attributes']=_[_0x5e22('0x31')](_0x5a4ad1[_0x5e22('0x2d')],qs[_0x5e22('0x32')](_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x32')]));_0x1a0bb7[_0x5e22('0x33')]=_0x1a0bb7[_0x5e22('0x33')][_0x5e22('0x34')]?_0x1a0bb7[_0x5e22('0x33')]:_0x5a4ad1['model'];if(!_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x35')](_0x5e22('0x36'))){_0x1a0bb7[_0x5e22('0x1c')]=qs[_0x5e22('0x1c')](_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x1c')]);_0x1a0bb7[_0x5e22('0x1a')]=qs[_0x5e22('0x1a')](_0x3c0561['query'][_0x5e22('0x1a')]);}_0x1a0bb7[_0x5e22('0x37')]=qs[_0x5e22('0x38')](_0x3c0561['query'][_0x5e22('0x38')]);_0x1a0bb7[_0x5e22('0x39')]=qs['filters'](_['pick'](_0x3c0561[_0x5e22('0x2e')],_0x5a4ad1[_0x5e22('0x30')]),_0x3bd85d);if(_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x3a')]){_0x1a0bb7[_0x5e22('0x39')]=_[_0x5e22('0x3b')](_0x1a0bb7['where'],{'$or':_['map'](_0x3bd85d,function(_0x583ebd){if(_0x583ebd[_0x5e22('0x3c')]!=='VIRTUAL'){var _0x33b83a={};_0x33b83a[_0x583ebd[_0x5e22('0x27')]]={'$like':'%'+_0x3c0561['query'][_0x5e22('0x3a')]+'%'};return _0x33b83a;}})});}_0x1a0bb7=_['merge']({},_0x1a0bb7,_0x3c0561[_0x5e22('0x3d')]);var _0x21f509={'where':_0x1a0bb7['where']};return db[_0x5e22('0x3e')][_0x5e22('0x1d')](_0x21f509)[_0x5e22('0x23')](function(_0x30a88f){_0x50d048['count']=_0x30a88f;if(_0x3c0561['query'][_0x5e22('0x3f')]){_0x1a0bb7[_0x5e22('0x40')]=[{'all':!![]}];}return db[_0x5e22('0x3e')]['findAll'](_0x1a0bb7);})[_0x5e22('0x23')](function(_0x4feb13){_0x50d048['rows']=_0x4feb13;return _0x50d048;})['then'](respondWithFilteredResult(_0x53d5d5,_0x1a0bb7))[_0x5e22('0x41')](handleError(_0x53d5d5,null));};exports[_0x5e22('0x42')]=function(_0x16e361,_0x235b65){var _0x536d73={'raw':!![],'where':{'id':_0x16e361[_0x5e22('0x43')]['id']}},_0x59c399={};_0x59c399[_0x5e22('0x2d')]=_[_0x5e22('0x2f')](db['ChatQueueReport'][_0x5e22('0x2b')]);_0x59c399[_0x5e22('0x2e')]=_[_0x5e22('0x2f')](_0x16e361[_0x5e22('0x2e')]);_0x59c399['filters']=_[_0x5e22('0x31')](_0x59c399[_0x5e22('0x2d')],_0x59c399['query']);_0x536d73['attributes']=_[_0x5e22('0x31')](_0x59c399['model'],qs[_0x5e22('0x32')](_0x16e361['query'][_0x5e22('0x32')]));_0x536d73[_0x5e22('0x33')]=_0x536d73[_0x5e22('0x33')]['length']?_0x536d73[_0x5e22('0x33')]:_0x59c399['model'];if(_0x16e361[_0x5e22('0x2e')][_0x5e22('0x3f')]){_0x536d73['include']=[{'all':!![]}];}_0x536d73=_['merge']({},_0x536d73,_0x16e361[_0x5e22('0x3d')]);return db[_0x5e22('0x3e')][_0x5e22('0x44')](_0x536d73)['then'](handleEntityNotFound(_0x235b65,null))[_0x5e22('0x23')](respondWithResult(_0x235b65,null))[_0x5e22('0x41')](handleError(_0x235b65,null));};exports[_0x5e22('0x45')]=function(_0x23f854,_0x45ad69){return db[_0x5e22('0x3e')][_0x5e22('0x45')](_0x23f854['body'],{})[_0x5e22('0x23')](respondWithResult(_0x45ad69,0xc9))[_0x5e22('0x41')](handleError(_0x45ad69,null));};exports['update']=function(_0x3cb7de,_0x5e7a90){if(_0x3cb7de[_0x5e22('0x46')]['id']){delete _0x3cb7de[_0x5e22('0x46')]['id'];}return db['ChatQueueReport'][_0x5e22('0x44')]({'where':{'id':_0x3cb7de[_0x5e22('0x43')]['id']}})[_0x5e22('0x23')](handleEntityNotFound(_0x5e7a90,null))[_0x5e22('0x23')](saveUpdates(_0x3cb7de[_0x5e22('0x46')],null))[_0x5e22('0x23')](respondWithResult(_0x5e7a90,null))[_0x5e22('0x41')](handleError(_0x5e7a90,null));};exports[_0x5e22('0x24')]=function(_0xe75dc,_0xf755c9){return db['ChatQueueReport'][_0x5e22('0x44')]({'where':{'id':_0xe75dc[_0x5e22('0x43')]['id']}})[_0x5e22('0x23')](handleEntityNotFound(_0xf755c9,null))[_0x5e22('0x23')](removeEntity(_0xf755c9,null))[_0x5e22('0x41')](handleError(_0xf755c9,null));};exports['describe']=function(_0x3c1f59,_0x16c8b3){return db['ChatQueueReport']['describe']()[_0x5e22('0x23')](respondWithResult(_0x16c8b3,null))[_0x5e22('0x41')](handleError(_0x16c8b3,null));};
\ No newline at end of file
+var _0xeae8=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','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/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','ChatQueueReport','rawAttributes','fieldName','key','model','map'];(function(_0x117276,_0x2c725e){var _0x51b05f=function(_0x3c933c){while(--_0x3c933c){_0x117276['push'](_0x117276['shift']());}};_0x51b05f(++_0x2c725e);}(_0xeae8,0x66));var _0x8eae=function(_0x768e78,_0x25d556){_0x768e78=_0x768e78-0x0;var _0x3ead17=_0xeae8[_0x768e78];return _0x3ead17;};'use strict';var emlformat=require(_0x8eae('0x0'));var rimraf=require(_0x8eae('0x1'));var zipdir=require(_0x8eae('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8eae('0x3'));var moment=require('moment');var BPromise=require(_0x8eae('0x4'));var Mustache=require('mustache');var util=require(_0x8eae('0x5'));var path=require(_0x8eae('0x6'));var sox=require(_0x8eae('0x7'));var csv=require(_0x8eae('0x8'));var ejs=require(_0x8eae('0x9'));var fs=require('fs');var fs_extra=require(_0x8eae('0xa'));var _=require(_0x8eae('0xb'));var squel=require(_0x8eae('0xc'));var crypto=require(_0x8eae('0xd'));var jsforce=require(_0x8eae('0xe'));var deskjs=require(_0x8eae('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8eae('0x10'));var Redis=require(_0x8eae('0x11'));var authService=require(_0x8eae('0x12'));var qs=require(_0x8eae('0x13'));var as=require(_0x8eae('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x8eae('0x15'));var config=require(_0x8eae('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8eae('0x17'))['db'];function respondWithStatusCode(_0x50e569,_0xa29afd){_0xa29afd=_0xa29afd||0xcc;return function(_0x38d257){if(_0x38d257){return _0x50e569[_0x8eae('0x18')](_0xa29afd);}return _0x50e569[_0x8eae('0x19')](_0xa29afd)[_0x8eae('0x1a')]();};}function respondWithResult(_0x549d19,_0x16f24a){_0x16f24a=_0x16f24a||0xc8;return function(_0x39d8e7){if(_0x39d8e7){return _0x549d19[_0x8eae('0x19')](_0x16f24a)[_0x8eae('0x1b')](_0x39d8e7);}};}function respondWithFilteredResult(_0x1bf2f7,_0x1cec9f){return function(_0x28eae2){if(_0x28eae2){var _0x367dfe=typeof _0x1cec9f[_0x8eae('0x1c')]==='undefined'&&typeof _0x1cec9f['limit']==='undefined';var _0x29caea=_0x28eae2['count'];var _0x3db47b=_0x367dfe?0x0:_0x1cec9f[_0x8eae('0x1c')];var _0x386a97=_0x367dfe?_0x28eae2[_0x8eae('0x1d')]:_0x1cec9f[_0x8eae('0x1c')]+_0x1cec9f[_0x8eae('0x1e')];var _0x3af89b;if(_0x386a97>=_0x29caea){_0x386a97=_0x29caea;_0x3af89b=0xc8;}else{_0x3af89b=0xce;}_0x1bf2f7[_0x8eae('0x19')](_0x3af89b);return _0x1bf2f7[_0x8eae('0x1f')](_0x8eae('0x20'),_0x3db47b+'-'+_0x386a97+'/'+_0x29caea)['json'](_0x28eae2);}return null;};}function patchUpdates(_0x5b3c8a){return function(_0x1a74a5){try{jsonpatch[_0x8eae('0x21')](_0x1a74a5,_0x5b3c8a,!![]);}catch(_0x35c70b){return BPromise['reject'](_0x35c70b);}return _0x1a74a5[_0x8eae('0x22')]();};}function saveUpdates(_0x8e69cb,_0x51fa34){return function(_0x1dc612){if(_0x1dc612){return _0x1dc612[_0x8eae('0x23')](_0x8e69cb)['then'](function(_0x1b3b2f){return _0x1b3b2f;});}return null;};}function removeEntity(_0x597156,_0x171710){return function(_0x282fa5){if(_0x282fa5){return _0x282fa5[_0x8eae('0x24')]()[_0x8eae('0x25')](function(){_0x597156[_0x8eae('0x19')](0xcc)[_0x8eae('0x1a')]();});}};}function handleEntityNotFound(_0x14c0c5,_0x2fc7ec){return function(_0x386bec){if(!_0x386bec){_0x14c0c5['sendStatus'](0x194);}return _0x386bec;};}function handleError(_0x3143a9,_0xe9a3c5){_0xe9a3c5=_0xe9a3c5||0x1f4;return function(_0x141940){logger[_0x8eae('0x26')](_0x141940[_0x8eae('0x27')]);if(_0x141940[_0x8eae('0x28')]){delete _0x141940[_0x8eae('0x28')];}_0x3143a9['status'](_0xe9a3c5)[_0x8eae('0x29')](_0x141940);};}exports['index']=function(_0x342caf,_0xf4f03c){var _0x34f0c4={},_0x3f5d30={},_0x1aa3a0={'count':0x0,'rows':[]};var _0x541448=_['map'](db[_0x8eae('0x2a')][_0x8eae('0x2b')],function(_0x35c717){return{'name':_0x35c717[_0x8eae('0x2c')],'type':_0x35c717['type'][_0x8eae('0x2d')]};});_0x3f5d30[_0x8eae('0x2e')]=_[_0x8eae('0x2f')](_0x541448,_0x8eae('0x28'));_0x3f5d30[_0x8eae('0x30')]=_[_0x8eae('0x31')](_0x342caf[_0x8eae('0x30')]);_0x3f5d30[_0x8eae('0x32')]=_[_0x8eae('0x33')](_0x3f5d30[_0x8eae('0x2e')],_0x3f5d30[_0x8eae('0x30')]);_0x34f0c4[_0x8eae('0x34')]=_[_0x8eae('0x33')](_0x3f5d30[_0x8eae('0x2e')],qs[_0x8eae('0x35')](_0x342caf[_0x8eae('0x30')][_0x8eae('0x35')]));_0x34f0c4[_0x8eae('0x34')]=_0x34f0c4[_0x8eae('0x34')][_0x8eae('0x36')]?_0x34f0c4[_0x8eae('0x34')]:_0x3f5d30['model'];if(!_0x342caf[_0x8eae('0x30')][_0x8eae('0x37')](_0x8eae('0x38'))){_0x34f0c4['limit']=qs[_0x8eae('0x1e')](_0x342caf[_0x8eae('0x30')][_0x8eae('0x1e')]);_0x34f0c4[_0x8eae('0x1c')]=qs['offset'](_0x342caf[_0x8eae('0x30')]['offset']);}_0x34f0c4['order']=qs[_0x8eae('0x39')](_0x342caf[_0x8eae('0x30')][_0x8eae('0x39')]);_0x34f0c4[_0x8eae('0x3a')]=qs[_0x8eae('0x32')](_[_0x8eae('0x3b')](_0x342caf[_0x8eae('0x30')],_0x3f5d30['filters']),_0x541448);if(_0x342caf[_0x8eae('0x30')][_0x8eae('0x3c')]){_0x34f0c4['where']=_['merge'](_0x34f0c4['where'],{'$or':_[_0x8eae('0x2f')](_0x541448,function(_0x3b6bba){if(_0x3b6bba['type']!==_0x8eae('0x3d')){var _0x1a7539={};_0x1a7539[_0x3b6bba['name']]={'$like':'%'+_0x342caf[_0x8eae('0x30')][_0x8eae('0x3c')]+'%'};return _0x1a7539;}})});}_0x34f0c4=_[_0x8eae('0x3e')]({},_0x34f0c4,_0x342caf[_0x8eae('0x3f')]);var _0x139c25={'where':_0x34f0c4['where']};return db[_0x8eae('0x2a')][_0x8eae('0x1d')](_0x139c25)[_0x8eae('0x25')](function(_0x488b61){_0x1aa3a0[_0x8eae('0x1d')]=_0x488b61;if(_0x342caf[_0x8eae('0x30')]['includeAll']){_0x34f0c4[_0x8eae('0x40')]=[{'all':!![]}];}return db[_0x8eae('0x2a')][_0x8eae('0x41')](_0x34f0c4);})[_0x8eae('0x25')](function(_0x5923f7){_0x1aa3a0[_0x8eae('0x42')]=_0x5923f7;return _0x1aa3a0;})[_0x8eae('0x25')](respondWithFilteredResult(_0xf4f03c,_0x34f0c4))[_0x8eae('0x43')](handleError(_0xf4f03c,null));};exports[_0x8eae('0x44')]=function(_0x4e4f85,_0x985430){var _0x284dca={'raw':!![],'where':{'id':_0x4e4f85[_0x8eae('0x45')]['id']}},_0x1b5775={};_0x1b5775['model']=_[_0x8eae('0x31')](db['ChatQueueReport'][_0x8eae('0x2b')]);_0x1b5775['query']=_[_0x8eae('0x31')](_0x4e4f85[_0x8eae('0x30')]);_0x1b5775['filters']=_[_0x8eae('0x33')](_0x1b5775[_0x8eae('0x2e')],_0x1b5775[_0x8eae('0x30')]);_0x284dca[_0x8eae('0x34')]=_[_0x8eae('0x33')](_0x1b5775[_0x8eae('0x2e')],qs[_0x8eae('0x35')](_0x4e4f85[_0x8eae('0x30')][_0x8eae('0x35')]));_0x284dca['attributes']=_0x284dca[_0x8eae('0x34')]['length']?_0x284dca[_0x8eae('0x34')]:_0x1b5775[_0x8eae('0x2e')];if(_0x4e4f85[_0x8eae('0x30')][_0x8eae('0x46')]){_0x284dca['include']=[{'all':!![]}];}_0x284dca=_[_0x8eae('0x3e')]({},_0x284dca,_0x4e4f85[_0x8eae('0x3f')]);return db[_0x8eae('0x2a')][_0x8eae('0x47')](_0x284dca)[_0x8eae('0x25')](handleEntityNotFound(_0x985430,null))[_0x8eae('0x25')](respondWithResult(_0x985430,null))[_0x8eae('0x43')](handleError(_0x985430,null));};exports[_0x8eae('0x48')]=function(_0x324da8,_0x84a054){return db[_0x8eae('0x2a')]['create'](_0x324da8[_0x8eae('0x49')],{})[_0x8eae('0x25')](respondWithResult(_0x84a054,0xc9))['catch'](handleError(_0x84a054,null));};exports[_0x8eae('0x23')]=function(_0x490416,_0xb34032){if(_0x490416['body']['id']){delete _0x490416[_0x8eae('0x49')]['id'];}return db['ChatQueueReport'][_0x8eae('0x47')]({'where':{'id':_0x490416[_0x8eae('0x45')]['id']}})[_0x8eae('0x25')](handleEntityNotFound(_0xb34032,null))[_0x8eae('0x25')](saveUpdates(_0x490416[_0x8eae('0x49')],null))[_0x8eae('0x25')](respondWithResult(_0xb34032,null))[_0x8eae('0x43')](handleError(_0xb34032,null));};exports[_0x8eae('0x24')]=function(_0x2ba875,_0x3b9313){return db[_0x8eae('0x2a')]['find']({'where':{'id':_0x2ba875['params']['id']}})[_0x8eae('0x25')](handleEntityNotFound(_0x3b9313,null))[_0x8eae('0x25')](removeEntity(_0x3b9313,null))[_0x8eae('0x43')](handleError(_0x3b9313,null));};exports[_0x8eae('0x4a')]=function(_0xab5418,_0x476fe4){return db['ChatQueueReport'][_0x8eae('0x4a')]()[_0x8eae('0x25')](respondWithResult(_0x476fe4,null))[_0x8eae('0x43')](handleError(_0x476fe4,null));};
\ No newline at end of file
index 586dce6..3201faa 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(_0x5e465a,_0x3e0f32){var _0x52c7db=function(_0x2c9dea){while(--_0x2c9dea){_0x5e465a['push'](_0x5e465a['shift']());}};_0x52c7db(++_0x3e0f32);}(_0xe706,0xa3));var _0x6e70=function(_0x124331,_0x4a0e03){_0x124331=_0x124331-0x0;var _0x2f9514=_0xe706[_0x124331];return _0x2f9514;};'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 _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x14d770,_0x41b389){var _0x4283a5=function(_0x1bc6e7){while(--_0x1bc6e7){_0x14d770['push'](_0x14d770['shift']());}};_0x4283a5(++_0x41b389);}(_0xb10b,0x12a));var _0xbb10=function(_0x2ab3d9,_0x50e716){_0x2ab3d9=_0x2ab3d9-0x0;var _0x210a54=_0xb10b[_0x2ab3d9];return _0x210a54;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d3baec9..38e0daf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd5=['http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateChatQueueReport','create','options','raw','ChatQueueReport','update','attributes','limit','UpdateChatQueueReport','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x516be9,_0x3f4787){var _0x158bf0=function(_0x82f5b4){while(--_0x82f5b4){_0x516be9['push'](_0x516be9['shift']());}};_0x158bf0(++_0x3f4787);}(_0x4fd5,0x89));var _0x54fd=function(_0x1df6a4,_0x2b9751){_0x1df6a4=_0x1df6a4-0x0;var _0x2b6076=_0x4fd5[_0x1df6a4];return _0x2b6076;};'use strict';var _=require(_0x54fd('0x0'));var util=require(_0x54fd('0x1'));var moment=require(_0x54fd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x54fd('0x3'))['db'];var utils=require(_0x54fd('0x4'));var logger=require('../../config/logger')(_0x54fd('0x5'));var config=require(_0x54fd('0x6'));var jayson=require(_0x54fd('0x7'));var client=jayson['client'][_0x54fd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x6bd35,_0x4b91c7,_0x4b0053){return new BPromise(function(_0x4c0274,_0xac5f66){return client['request'](_0x6bd35,_0x4b0053)[_0x54fd('0x9')](function(_0x214c9b){logger[_0x54fd('0xa')](_0x54fd('0xb'),_0x4b91c7,_0x54fd('0xc'));logger[_0x54fd('0xd')](_0x54fd('0xe'),_0x4b91c7,_0x54fd('0xc'),JSON[_0x54fd('0xf')](_0x214c9b));if(_0x214c9b[_0x54fd('0x10')]){if(_0x214c9b['error']['code']===0x1f4){logger[_0x54fd('0x10')](_0x54fd('0xb'),_0x4b91c7,_0x214c9b['error'][_0x54fd('0x11')]);return _0xac5f66(_0x214c9b['error']['message']);}logger[_0x54fd('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x4b91c7,_0x214c9b[_0x54fd('0x10')]['message']);return _0x4c0274(_0x214c9b['error']['message']);}else{logger[_0x54fd('0xa')]('ChatQueueReport,\x20%s,\x20%s',_0x4b91c7,_0x54fd('0xc'));_0x4c0274(_0x214c9b[_0x54fd('0x12')][_0x54fd('0x11')]);}})[_0x54fd('0x13')](function(_0x4b644f){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x4b91c7,_0x4b644f);_0xac5f66(_0x4b644f);});});}exports[_0x54fd('0x14')]=function(_0x249b94){var _0x2fb22a=this;return new Promise(function(_0x1af7ef,_0x14ed9e){return db['ChatQueueReport'][_0x54fd('0x15')](_0x249b94['body'],{'raw':_0x249b94[_0x54fd('0x16')]?_0x249b94['options'][_0x54fd('0x17')]===undefined?!![]:![]:!![]})[_0x54fd('0x9')](function(_0x44f1d7){logger['info'](_0x54fd('0x14'),_0x249b94);logger['debug'](_0x54fd('0x14'),_0x249b94,JSON['stringify'](_0x44f1d7));_0x1af7ef(_0x44f1d7);})[_0x54fd('0x13')](function(_0x195ab6){logger[_0x54fd('0x10')](_0x54fd('0x14'),_0x195ab6['message'],_0x249b94);_0x14ed9e(_0x2fb22a['error'](0x1f4,_0x195ab6[_0x54fd('0x11')]));});});};exports['UpdateChatQueueReport']=function(_0x266de9){var _0x3c62c8=this;return new Promise(function(_0xe6904,_0x8e16af){return db[_0x54fd('0x18')][_0x54fd('0x19')](_0x266de9['body'],{'raw':_0x266de9[_0x54fd('0x16')]?_0x266de9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x266de9[_0x54fd('0x16')]?_0x266de9[_0x54fd('0x16')]['where']||null:null,'attributes':_0x266de9[_0x54fd('0x16')]?_0x266de9[_0x54fd('0x16')][_0x54fd('0x1a')]||null:null,'limit':_0x266de9[_0x54fd('0x16')]?_0x266de9[_0x54fd('0x16')][_0x54fd('0x1b')]||null:null})[_0x54fd('0x9')](function(_0x40a0ea){logger['info'](_0x54fd('0x1c'),_0x266de9);logger[_0x54fd('0xd')](_0x54fd('0x1c'),_0x266de9,JSON['stringify'](_0x40a0ea));_0xe6904(_0x40a0ea);})['catch'](function(_0x2b6f3e){logger[_0x54fd('0x10')](_0x54fd('0x1c'),_0x2b6f3e[_0x54fd('0x11')],_0x266de9);_0x8e16af(_0x3c62c8[_0x54fd('0x10')](0x1f4,_0x2b6f3e['message']));});});};
\ No newline at end of file
+var _0xba2f=['code','message','info','request\x20sent','result','ChatQueueReport','create','body','options','CreateChatQueueReport','debug','catch','UpdateChatQueueReport','update','raw','where','limit','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','stringify','error'];(function(_0x12b4d4,_0x2134e9){var _0x32604e=function(_0x32a791){while(--_0x32a791){_0x12b4d4['push'](_0x12b4d4['shift']());}};_0x32604e(++_0x2134e9);}(_0xba2f,0x151));var _0xfba2=function(_0x4f716a,_0x14f4a0){_0x4f716a=_0x4f716a-0x0;var _0x1e3553=_0xba2f[_0x4f716a];return _0x1e3553;};'use strict';var _=require(_0xfba2('0x0'));var util=require(_0xfba2('0x1'));var moment=require(_0xfba2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfba2('0x3'))['db'];var utils=require(_0xfba2('0x4'));var logger=require('../../config/logger')(_0xfba2('0x5'));var config=require(_0xfba2('0x6'));var jayson=require(_0xfba2('0x7'));var client=jayson[_0xfba2('0x8')][_0xfba2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x280746,_0x549532,_0x2b286c){return new BPromise(function(_0x11c127,_0x2b3fe1){return client[_0xfba2('0xa')](_0x280746,_0x2b286c)[_0xfba2('0xb')](function(_0xb76e02){logger['info'](_0xfba2('0xc'),_0x549532,'request\x20sent');logger['debug']('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x549532,'request\x20sent',JSON[_0xfba2('0xd')](_0xb76e02));if(_0xb76e02['error']){if(_0xb76e02[_0xfba2('0xe')][_0xfba2('0xf')]===0x1f4){logger[_0xfba2('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x549532,_0xb76e02['error']['message']);return _0x2b3fe1(_0xb76e02[_0xfba2('0xe')]['message']);}logger[_0xfba2('0xe')](_0xfba2('0xc'),_0x549532,_0xb76e02[_0xfba2('0xe')][_0xfba2('0x10')]);return _0x11c127(_0xb76e02['error'][_0xfba2('0x10')]);}else{logger[_0xfba2('0x11')](_0xfba2('0xc'),_0x549532,_0xfba2('0x12'));_0x11c127(_0xb76e02[_0xfba2('0x13')][_0xfba2('0x10')]);}})['catch'](function(_0x15f168){logger['error'](_0xfba2('0xc'),_0x549532,_0x15f168);_0x2b3fe1(_0x15f168);});});}exports['CreateChatQueueReport']=function(_0x163d0a){var _0x3aab34=this;return new Promise(function(_0x43f90a,_0x100097){return db[_0xfba2('0x14')][_0xfba2('0x15')](_0x163d0a[_0xfba2('0x16')],{'raw':_0x163d0a[_0xfba2('0x17')]?_0x163d0a[_0xfba2('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xfba2('0xb')](function(_0x2a6253){logger['info'](_0xfba2('0x18'),_0x163d0a);logger[_0xfba2('0x19')](_0xfba2('0x18'),_0x163d0a,JSON[_0xfba2('0xd')](_0x2a6253));_0x43f90a(_0x2a6253);})[_0xfba2('0x1a')](function(_0x54d680){logger['error'](_0xfba2('0x18'),_0x54d680[_0xfba2('0x10')],_0x163d0a);_0x100097(_0x3aab34[_0xfba2('0xe')](0x1f4,_0x54d680[_0xfba2('0x10')]));});});};exports[_0xfba2('0x1b')]=function(_0x2c3826){var _0x582e7c=this;return new Promise(function(_0x264c94,_0x5f2c31){return db[_0xfba2('0x14')][_0xfba2('0x1c')](_0x2c3826['body'],{'raw':_0x2c3826[_0xfba2('0x17')]?_0x2c3826['options'][_0xfba2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c3826[_0xfba2('0x17')]?_0x2c3826[_0xfba2('0x17')][_0xfba2('0x1e')]||null:null,'attributes':_0x2c3826['options']?_0x2c3826['options']['attributes']||null:null,'limit':_0x2c3826[_0xfba2('0x17')]?_0x2c3826[_0xfba2('0x17')][_0xfba2('0x1f')]||null:null})[_0xfba2('0xb')](function(_0x13a30f){logger['info']('UpdateChatQueueReport',_0x2c3826);logger['debug'](_0xfba2('0x1b'),_0x2c3826,JSON[_0xfba2('0xd')](_0x13a30f));_0x264c94(_0x13a30f);})['catch'](function(_0x26a42b){logger[_0xfba2('0xe')](_0xfba2('0x1b'),_0x26a42b['message'],_0x2c3826);_0x5f2c31(_0x582e7c[_0xfba2('0xe')](0x1f4,_0x26a42b['message']));});});};
\ No newline at end of file
index ab72571..a52214e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5215=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','destroy','exports','multer','util','path'];(function(_0x2d2ccc,_0x30f2fe){var _0x54dc55=function(_0x378643){while(--_0x378643){_0x2d2ccc['push'](_0x2d2ccc['shift']());}};_0x54dc55(++_0x30f2fe);}(_0x5215,0xe4));var _0x5521=function(_0x177305,_0x23d11a){_0x177305=_0x177305-0x0;var _0x5e3fb5=_0x5215[_0x177305];return _0x5e3fb5;};'use strict';var multer=require(_0x5521('0x0'));var util=require(_0x5521('0x1'));var path=require(_0x5521('0x2'));var timeout=require(_0x5521('0x3'));var express=require(_0x5521('0x4'));var router=express['Router']();var fs_extra=require(_0x5521('0x5'));var auth=require(_0x5521('0x6'));var interaction=require(_0x5521('0x7'));var config=require(_0x5521('0x8'));var controller=require(_0x5521('0x9'));router['get']('/',auth[_0x5521('0xa')](),controller[_0x5521('0xb')]);router['get'](_0x5521('0xc'),auth['isAuthenticated'](),controller[_0x5521('0xd')]);router['get'](_0x5521('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x5521('0xf')]('/',auth['isAuthenticated'](),controller[_0x5521('0x10')]);router['put'](_0x5521('0xe'),auth[_0x5521('0xa')](),controller[_0x5521('0x11')]);router[_0x5521('0x12')](_0x5521('0xe'),auth[_0x5521('0xa')](),controller[_0x5521('0x13')]);module[_0x5521('0x14')]=router;
\ No newline at end of file
+var _0x58fa=['index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x58fa,0x146));var _0xa58f=function(_0x35bd68,_0x3d90d2){_0x35bd68=_0x35bd68-0x0;var _0x30ac8d=_0x58fa[_0x35bd68];return _0x30ac8d;};'use strict';var multer=require('multer');var util=require(_0xa58f('0x0'));var path=require(_0xa58f('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa58f('0x2')]();var fs_extra=require(_0xa58f('0x3'));var auth=require(_0xa58f('0x4'));var interaction=require(_0xa58f('0x5'));var config=require(_0xa58f('0x6'));var controller=require(_0xa58f('0x7'));router[_0xa58f('0x8')]('/',auth[_0xa58f('0x9')](),controller[_0xa58f('0xa')]);router['get'](_0xa58f('0xb'),auth[_0xa58f('0x9')](),controller[_0xa58f('0xc')]);router[_0xa58f('0x8')](_0xa58f('0xd'),auth['isAuthenticated'](),controller[_0xa58f('0xe')]);router[_0xa58f('0xf')]('/',auth['isAuthenticated'](),controller[_0xa58f('0x10')]);router[_0xa58f('0x11')]('/:id',auth[_0xa58f('0x9')](),controller[_0xa58f('0x12')]);router[_0xa58f('0x13')](_0xa58f('0xd'),auth[_0xa58f('0x9')](),controller[_0xa58f('0x14')]);module['exports']=router;
\ No newline at end of file
index 6e9ae8e..a3a9305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x5820ab,_0x574e4c){var _0x35d734=function(_0x237516){while(--_0x237516){_0x5820ab['push'](_0x5820ab['shift']());}};_0x35d734(++_0x574e4c);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x00bb[_0x2bf141];return _0x48277b;};'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
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x3940fa,_0x5ce951){var _0x18fa69=function(_0x2b8a49){while(--_0x2b8a49){_0x3940fa['push'](_0x3940fa['shift']());}};_0x18fa69(++_0x5ce951);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4b7b69,_0x3ab075){_0x4b7b69=_0x4b7b69-0x0;var _0x173b4c=_0xcb91[_0x4b7b69];return _0x173b4c;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 83c3f56..7d2218b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f1e=['query','filters','model','attributes','intersection','fields','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','length','include','merge','catch','create','body','find','describe','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','error','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','key'];(function(_0x338a33,_0x4c90ac){var _0x46c9ea=function(_0xea8ff0){while(--_0xea8ff0){_0x338a33['push'](_0x338a33['shift']());}};_0x46c9ea(++_0x4c90ac);}(_0x2f1e,0x1d3));var _0xe2f1=function(_0xa9071b,_0x45e375){_0xa9071b=_0xa9071b-0x0;var _0x32d5c3=_0x2f1e[_0xa9071b];return _0x32d5c3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe2f1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe2f1('0x1'));var moment=require('moment');var BPromise=require(_0xe2f1('0x2'));var Mustache=require(_0xe2f1('0x3'));var util=require(_0xe2f1('0x4'));var path=require(_0xe2f1('0x5'));var sox=require(_0xe2f1('0x6'));var csv=require('to-csv');var ejs=require(_0xe2f1('0x7'));var fs=require('fs');var fs_extra=require(_0xe2f1('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe2f1('0x9'));var toCsv=require(_0xe2f1('0xa'));var querystring=require(_0xe2f1('0xb'));var Papa=require(_0xe2f1('0xc'));var Redis=require('ioredis');var authService=require(_0xe2f1('0xd'));var qs=require(_0xe2f1('0xe'));var as=require(_0xe2f1('0xf'));var hardwareService=require(_0xe2f1('0x10'));var logger=require('../../config/logger')(_0xe2f1('0x11'));var utils=require(_0xe2f1('0x12'));var config=require(_0xe2f1('0x13'));var licenseUtil=require(_0xe2f1('0x14'));var db=require(_0xe2f1('0x15'))['db'];function respondWithStatusCode(_0xc804ac,_0x2ee267){_0x2ee267=_0x2ee267||0xcc;return function(_0x4a7d01){if(_0x4a7d01){return _0xc804ac[_0xe2f1('0x16')](_0x2ee267);}return _0xc804ac['status'](_0x2ee267)['end']();};}function respondWithResult(_0x4b45e8,_0x58eea3){_0x58eea3=_0x58eea3||0xc8;return function(_0x43f6ad){if(_0x43f6ad){return _0x4b45e8[_0xe2f1('0x17')](_0x58eea3)[_0xe2f1('0x18')](_0x43f6ad);}};}function respondWithFilteredResult(_0x1014bd,_0x58c086){return function(_0x5dd7ab){if(_0x5dd7ab){var _0xe37516=typeof _0x58c086[_0xe2f1('0x19')]===_0xe2f1('0x1a')&&typeof _0x58c086[_0xe2f1('0x1b')]==='undefined';var _0x2c85cf=_0x5dd7ab[_0xe2f1('0x1c')];var _0x5c1b60=_0xe37516?0x0:_0x58c086['offset'];var _0x382061=_0xe37516?_0x5dd7ab[_0xe2f1('0x1c')]:_0x58c086[_0xe2f1('0x19')]+_0x58c086['limit'];var _0x1e8683;if(_0x382061>=_0x2c85cf){_0x382061=_0x2c85cf;_0x1e8683=0xc8;}else{_0x1e8683=0xce;}_0x1014bd['status'](_0x1e8683);return _0x1014bd[_0xe2f1('0x1d')](_0xe2f1('0x1e'),_0x5c1b60+'-'+_0x382061+'/'+_0x2c85cf)[_0xe2f1('0x18')](_0x5dd7ab);}return null;};}function patchUpdates(_0x1a1e37){return function(_0xd82ee){try{jsonpatch[_0xe2f1('0x1f')](_0xd82ee,_0x1a1e37,!![]);}catch(_0x29bffb){return BPromise[_0xe2f1('0x20')](_0x29bffb);}return _0xd82ee['save']();};}function saveUpdates(_0x4f2bf5,_0x6e97c1){return function(_0x15c95b){if(_0x15c95b){return _0x15c95b['update'](_0x4f2bf5)[_0xe2f1('0x21')](function(_0x1a70d4){return _0x1a70d4;});}return null;};}function removeEntity(_0x160cd7,_0x1e5cfe){return function(_0x256d5c){if(_0x256d5c){return _0x256d5c[_0xe2f1('0x22')]()['then'](function(){_0x160cd7[_0xe2f1('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac3c7,_0x181834){return function(_0xa7aa98){if(!_0xa7aa98){_0x4ac3c7[_0xe2f1('0x16')](0x194);}return _0xa7aa98;};}function handleError(_0x236647,_0x405e85){_0x405e85=_0x405e85||0x1f4;return function(_0x2051c1){logger[_0xe2f1('0x23')](_0x2051c1['stack']);if(_0x2051c1['name']){delete _0x2051c1[_0xe2f1('0x24')];}_0x236647[_0xe2f1('0x17')](_0x405e85)[_0xe2f1('0x25')](_0x2051c1);};}exports[_0xe2f1('0x26')]=function(_0x6952aa,_0x154842){var _0x351344={},_0x2ccf1a={},_0x428ba6={'count':0x0,'rows':[]};var _0x29b9c1=_[_0xe2f1('0x27')](db[_0xe2f1('0x28')][_0xe2f1('0x29')],function(_0x549cc8){return{'name':_0x549cc8[_0xe2f1('0x2a')],'type':_0x549cc8['type'][_0xe2f1('0x2b')]};});_0x2ccf1a['model']=_[_0xe2f1('0x27')](_0x29b9c1,_0xe2f1('0x24'));_0x2ccf1a[_0xe2f1('0x2c')]=_['keys'](_0x6952aa['query']);_0x2ccf1a[_0xe2f1('0x2d')]=_['intersection'](_0x2ccf1a[_0xe2f1('0x2e')],_0x2ccf1a[_0xe2f1('0x2c')]);_0x351344[_0xe2f1('0x2f')]=_[_0xe2f1('0x30')](_0x2ccf1a[_0xe2f1('0x2e')],qs[_0xe2f1('0x31')](_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x31')]));_0x351344[_0xe2f1('0x2f')]=_0x351344['attributes']['length']?_0x351344['attributes']:_0x2ccf1a['model'];if(!_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x32')]('nolimit')){_0x351344[_0xe2f1('0x1b')]=qs[_0xe2f1('0x1b')](_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x1b')]);_0x351344[_0xe2f1('0x19')]=qs[_0xe2f1('0x19')](_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x19')]);}_0x351344[_0xe2f1('0x33')]=qs[_0xe2f1('0x34')](_0x6952aa['query'][_0xe2f1('0x34')]);_0x351344['where']=qs[_0xe2f1('0x2d')](_[_0xe2f1('0x35')](_0x6952aa[_0xe2f1('0x2c')],_0x2ccf1a['filters']),_0x29b9c1);if(_0x6952aa['query'][_0xe2f1('0x36')]){_0x351344[_0xe2f1('0x37')]=_['merge'](_0x351344['where'],{'$or':_[_0xe2f1('0x27')](_0x29b9c1,function(_0x1e3e9e){if(_0x1e3e9e[_0xe2f1('0x38')]!==_0xe2f1('0x39')){var _0x266683={};_0x266683[_0x1e3e9e[_0xe2f1('0x24')]]={'$like':'%'+_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x36')]+'%'};return _0x266683;}})});}_0x351344=_['merge']({},_0x351344,_0x6952aa[_0xe2f1('0x3a')]);var _0x33a488={'where':_0x351344[_0xe2f1('0x37')]};return db[_0xe2f1('0x28')][_0xe2f1('0x1c')](_0x33a488)['then'](function(_0x583c78){_0x428ba6['count']=_0x583c78;if(_0x6952aa['query'][_0xe2f1('0x3b')]){_0x351344['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0xe2f1('0x3c')](_0x351344);})[_0xe2f1('0x21')](function(_0x2f15ec){_0x428ba6[_0xe2f1('0x3d')]=_0x2f15ec;return _0x428ba6;})[_0xe2f1('0x21')](respondWithFilteredResult(_0x154842,_0x351344))['catch'](handleError(_0x154842,null));};exports[_0xe2f1('0x3e')]=function(_0x5ad2d7,_0x1a92ca){var _0x3f720f={'raw':!![],'where':{'id':_0x5ad2d7[_0xe2f1('0x3f')]['id']}},_0x23efa1={};_0x23efa1[_0xe2f1('0x2e')]=_[_0xe2f1('0x40')](db[_0xe2f1('0x28')][_0xe2f1('0x29')]);_0x23efa1[_0xe2f1('0x2c')]=_['keys'](_0x5ad2d7['query']);_0x23efa1[_0xe2f1('0x2d')]=_[_0xe2f1('0x30')](_0x23efa1[_0xe2f1('0x2e')],_0x23efa1[_0xe2f1('0x2c')]);_0x3f720f[_0xe2f1('0x2f')]=_[_0xe2f1('0x30')](_0x23efa1[_0xe2f1('0x2e')],qs['fields'](_0x5ad2d7[_0xe2f1('0x2c')]['fields']));_0x3f720f[_0xe2f1('0x2f')]=_0x3f720f[_0xe2f1('0x2f')][_0xe2f1('0x41')]?_0x3f720f[_0xe2f1('0x2f')]:_0x23efa1['model'];if(_0x5ad2d7[_0xe2f1('0x2c')][_0xe2f1('0x3b')]){_0x3f720f[_0xe2f1('0x42')]=[{'all':!![]}];}_0x3f720f=_[_0xe2f1('0x43')]({},_0x3f720f,_0x5ad2d7['options']);return db[_0xe2f1('0x28')]['find'](_0x3f720f)[_0xe2f1('0x21')](handleEntityNotFound(_0x1a92ca,null))[_0xe2f1('0x21')](respondWithResult(_0x1a92ca,null))[_0xe2f1('0x44')](handleError(_0x1a92ca,null));};exports[_0xe2f1('0x45')]=function(_0x34dd37,_0x3079ba){return db[_0xe2f1('0x28')][_0xe2f1('0x45')](_0x34dd37[_0xe2f1('0x46')],{})['then'](respondWithResult(_0x3079ba,0xc9))[_0xe2f1('0x44')](handleError(_0x3079ba,null));};exports['update']=function(_0x308f3d,_0x4a7478){if(_0x308f3d[_0xe2f1('0x46')]['id']){delete _0x308f3d[_0xe2f1('0x46')]['id'];}return db[_0xe2f1('0x28')][_0xe2f1('0x47')]({'where':{'id':_0x308f3d[_0xe2f1('0x3f')]['id']}})[_0xe2f1('0x21')](handleEntityNotFound(_0x4a7478,null))[_0xe2f1('0x21')](saveUpdates(_0x308f3d[_0xe2f1('0x46')],null))[_0xe2f1('0x21')](respondWithResult(_0x4a7478,null))['catch'](handleError(_0x4a7478,null));};exports[_0xe2f1('0x22')]=function(_0x5e380d,_0x546285){return db[_0xe2f1('0x28')][_0xe2f1('0x47')]({'where':{'id':_0x5e380d[_0xe2f1('0x3f')]['id']}})['then'](handleEntityNotFound(_0x546285,null))['then'](removeEntity(_0x546285,null))[_0xe2f1('0x44')](handleError(_0x546285,null));};exports['describe']=function(_0x106327,_0x2ce8f5){return db[_0xe2f1('0x28')][_0xe2f1('0x48')]()[_0xe2f1('0x21')](respondWithResult(_0x2ce8f5,null))[_0xe2f1('0x44')](handleError(_0x2ce8f5,null));};
\ No newline at end of file
+var _0xca4a=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','params','keys','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse'];(function(_0x283ef3,_0x136ad1){var _0x1d4c24=function(_0x55b811){while(--_0x55b811){_0x283ef3['push'](_0x283ef3['shift']());}};_0x1d4c24(++_0x136ad1);}(_0xca4a,0xd6));var _0xaca4=function(_0x3b482a,_0x483977){_0x3b482a=_0x3b482a-0x0;var _0x4a48a7=_0xca4a[_0x3b482a];return _0x4a48a7;};'use strict';var emlformat=require(_0xaca4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaca4('0x1'));var jsonpatch=require(_0xaca4('0x2'));var rp=require(_0xaca4('0x3'));var moment=require(_0xaca4('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xaca4('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xaca4('0x6'));var ejs=require(_0xaca4('0x7'));var fs=require('fs');var fs_extra=require(_0xaca4('0x8'));var _=require(_0xaca4('0x9'));var squel=require(_0xaca4('0xa'));var crypto=require('crypto');var jsforce=require(_0xaca4('0xb'));var deskjs=require(_0xaca4('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xaca4('0xd'));var Redis=require(_0xaca4('0xe'));var authService=require(_0xaca4('0xf'));var qs=require(_0xaca4('0x10'));var as=require(_0xaca4('0x11'));var hardwareService=require(_0xaca4('0x12'));var logger=require('../../config/logger')(_0xaca4('0x13'));var utils=require(_0xaca4('0x14'));var config=require(_0xaca4('0x15'));var licenseUtil=require(_0xaca4('0x16'));var db=require(_0xaca4('0x17'))['db'];function respondWithStatusCode(_0x48df79,_0x2949ed){_0x2949ed=_0x2949ed||0xcc;return function(_0x4df0e4){if(_0x4df0e4){return _0x48df79[_0xaca4('0x18')](_0x2949ed);}return _0x48df79[_0xaca4('0x19')](_0x2949ed)[_0xaca4('0x1a')]();};}function respondWithResult(_0xc69544,_0x2bb165){_0x2bb165=_0x2bb165||0xc8;return function(_0x5a4812){if(_0x5a4812){return _0xc69544['status'](_0x2bb165)[_0xaca4('0x1b')](_0x5a4812);}};}function respondWithFilteredResult(_0x201288,_0x326559){return function(_0x213f12){if(_0x213f12){var _0x4916d7=typeof _0x326559[_0xaca4('0x1c')]==='undefined'&&typeof _0x326559[_0xaca4('0x1d')]===_0xaca4('0x1e');var _0x1e233e=_0x213f12[_0xaca4('0x1f')];var _0x18f371=_0x4916d7?0x0:_0x326559[_0xaca4('0x1c')];var _0x5b7ccc=_0x4916d7?_0x213f12[_0xaca4('0x1f')]:_0x326559[_0xaca4('0x1c')]+_0x326559[_0xaca4('0x1d')];var _0x74469b;if(_0x5b7ccc>=_0x1e233e){_0x5b7ccc=_0x1e233e;_0x74469b=0xc8;}else{_0x74469b=0xce;}_0x201288[_0xaca4('0x19')](_0x74469b);return _0x201288[_0xaca4('0x20')]('Content-Range',_0x18f371+'-'+_0x5b7ccc+'/'+_0x1e233e)['json'](_0x213f12);}return null;};}function patchUpdates(_0x32f6b3){return function(_0x50f112){try{jsonpatch[_0xaca4('0x21')](_0x50f112,_0x32f6b3,!![]);}catch(_0x3ef746){return BPromise[_0xaca4('0x22')](_0x3ef746);}return _0x50f112['save']();};}function saveUpdates(_0x4908ee,_0x252772){return function(_0x5ca82d){if(_0x5ca82d){return _0x5ca82d[_0xaca4('0x23')](_0x4908ee)[_0xaca4('0x24')](function(_0x502f07){return _0x502f07;});}return null;};}function removeEntity(_0x590d27,_0x15f668){return function(_0x3751eb){if(_0x3751eb){return _0x3751eb[_0xaca4('0x25')]()['then'](function(){_0x590d27[_0xaca4('0x19')](0xcc)[_0xaca4('0x1a')]();});}};}function handleEntityNotFound(_0x120db4,_0x2beff7){return function(_0x42533c){if(!_0x42533c){_0x120db4[_0xaca4('0x18')](0x194);}return _0x42533c;};}function handleError(_0x55e2f0,_0x2cbd12){_0x2cbd12=_0x2cbd12||0x1f4;return function(_0xc5baef){logger[_0xaca4('0x26')](_0xc5baef[_0xaca4('0x27')]);if(_0xc5baef[_0xaca4('0x28')]){delete _0xc5baef[_0xaca4('0x28')];}_0x55e2f0[_0xaca4('0x19')](_0x2cbd12)[_0xaca4('0x29')](_0xc5baef);};}exports[_0xaca4('0x2a')]=function(_0x5110db,_0x4b2ee8){var _0x373e19={},_0xe6ab3a={},_0x32a845={'count':0x0,'rows':[]};var _0x1c7007=_[_0xaca4('0x2b')](db[_0xaca4('0x2c')][_0xaca4('0x2d')],function(_0x453bf8){return{'name':_0x453bf8[_0xaca4('0x2e')],'type':_0x453bf8['type'][_0xaca4('0x2f')]};});_0xe6ab3a[_0xaca4('0x30')]=_[_0xaca4('0x2b')](_0x1c7007,_0xaca4('0x28'));_0xe6ab3a[_0xaca4('0x31')]=_['keys'](_0x5110db[_0xaca4('0x31')]);_0xe6ab3a[_0xaca4('0x32')]=_[_0xaca4('0x33')](_0xe6ab3a[_0xaca4('0x30')],_0xe6ab3a[_0xaca4('0x31')]);_0x373e19['attributes']=_['intersection'](_0xe6ab3a[_0xaca4('0x30')],qs[_0xaca4('0x34')](_0x5110db[_0xaca4('0x31')][_0xaca4('0x34')]));_0x373e19['attributes']=_0x373e19[_0xaca4('0x35')][_0xaca4('0x36')]?_0x373e19[_0xaca4('0x35')]:_0xe6ab3a['model'];if(!_0x5110db[_0xaca4('0x31')][_0xaca4('0x37')](_0xaca4('0x38'))){_0x373e19[_0xaca4('0x1d')]=qs[_0xaca4('0x1d')](_0x5110db[_0xaca4('0x31')]['limit']);_0x373e19['offset']=qs[_0xaca4('0x1c')](_0x5110db[_0xaca4('0x31')]['offset']);}_0x373e19[_0xaca4('0x39')]=qs[_0xaca4('0x3a')](_0x5110db['query'][_0xaca4('0x3a')]);_0x373e19[_0xaca4('0x3b')]=qs[_0xaca4('0x32')](_[_0xaca4('0x3c')](_0x5110db[_0xaca4('0x31')],_0xe6ab3a[_0xaca4('0x32')]),_0x1c7007);if(_0x5110db[_0xaca4('0x31')][_0xaca4('0x3d')]){_0x373e19[_0xaca4('0x3b')]=_[_0xaca4('0x3e')](_0x373e19[_0xaca4('0x3b')],{'$or':_[_0xaca4('0x2b')](_0x1c7007,function(_0x587556){if(_0x587556[_0xaca4('0x3f')]!==_0xaca4('0x40')){var _0x4b144b={};_0x4b144b[_0x587556[_0xaca4('0x28')]]={'$like':'%'+_0x5110db[_0xaca4('0x31')][_0xaca4('0x3d')]+'%'};return _0x4b144b;}})});}_0x373e19=_[_0xaca4('0x3e')]({},_0x373e19,_0x5110db[_0xaca4('0x41')]);var _0x4c3a1b={'where':_0x373e19[_0xaca4('0x3b')]};return db[_0xaca4('0x2c')][_0xaca4('0x1f')](_0x4c3a1b)[_0xaca4('0x24')](function(_0x1a877f){_0x32a845['count']=_0x1a877f;if(_0x5110db['query'][_0xaca4('0x42')]){_0x373e19[_0xaca4('0x43')]=[{'all':!![]}];}return db[_0xaca4('0x2c')]['findAll'](_0x373e19);})[_0xaca4('0x24')](function(_0x5e64d9){_0x32a845[_0xaca4('0x44')]=_0x5e64d9;return _0x32a845;})[_0xaca4('0x24')](respondWithFilteredResult(_0x4b2ee8,_0x373e19))[_0xaca4('0x45')](handleError(_0x4b2ee8,null));};exports['show']=function(_0x41e3b9,_0x37fa90){var _0x49a93d={'raw':!![],'where':{'id':_0x41e3b9[_0xaca4('0x46')]['id']}},_0x1a4909={};_0x1a4909['model']=_[_0xaca4('0x47')](db[_0xaca4('0x2c')][_0xaca4('0x2d')]);_0x1a4909[_0xaca4('0x31')]=_[_0xaca4('0x47')](_0x41e3b9[_0xaca4('0x31')]);_0x1a4909[_0xaca4('0x32')]=_[_0xaca4('0x33')](_0x1a4909[_0xaca4('0x30')],_0x1a4909[_0xaca4('0x31')]);_0x49a93d[_0xaca4('0x35')]=_[_0xaca4('0x33')](_0x1a4909[_0xaca4('0x30')],qs[_0xaca4('0x34')](_0x41e3b9[_0xaca4('0x31')][_0xaca4('0x34')]));_0x49a93d[_0xaca4('0x35')]=_0x49a93d[_0xaca4('0x35')][_0xaca4('0x36')]?_0x49a93d[_0xaca4('0x35')]:_0x1a4909[_0xaca4('0x30')];if(_0x41e3b9[_0xaca4('0x31')][_0xaca4('0x42')]){_0x49a93d[_0xaca4('0x43')]=[{'all':!![]}];}_0x49a93d=_[_0xaca4('0x3e')]({},_0x49a93d,_0x41e3b9[_0xaca4('0x41')]);return db[_0xaca4('0x2c')]['find'](_0x49a93d)[_0xaca4('0x24')](handleEntityNotFound(_0x37fa90,null))[_0xaca4('0x24')](respondWithResult(_0x37fa90,null))[_0xaca4('0x45')](handleError(_0x37fa90,null));};exports[_0xaca4('0x48')]=function(_0x49c619,_0x1139f7){return db['ChatTransferReport']['create'](_0x49c619[_0xaca4('0x49')],{})['then'](respondWithResult(_0x1139f7,0xc9))[_0xaca4('0x45')](handleError(_0x1139f7,null));};exports[_0xaca4('0x23')]=function(_0x3071ee,_0x33850c){if(_0x3071ee[_0xaca4('0x49')]['id']){delete _0x3071ee[_0xaca4('0x49')]['id'];}return db['ChatTransferReport']['find']({'where':{'id':_0x3071ee[_0xaca4('0x46')]['id']}})[_0xaca4('0x24')](handleEntityNotFound(_0x33850c,null))[_0xaca4('0x24')](saveUpdates(_0x3071ee[_0xaca4('0x49')],null))[_0xaca4('0x24')](respondWithResult(_0x33850c,null))[_0xaca4('0x45')](handleError(_0x33850c,null));};exports[_0xaca4('0x25')]=function(_0x1df0ec,_0x185b23){return db[_0xaca4('0x2c')][_0xaca4('0x4a')]({'where':{'id':_0x1df0ec[_0xaca4('0x46')]['id']}})[_0xaca4('0x24')](handleEntityNotFound(_0x185b23,null))[_0xaca4('0x24')](removeEntity(_0x185b23,null))[_0xaca4('0x45')](handleError(_0x185b23,null));};exports[_0xaca4('0x4b')]=function(_0x3e03d1,_0x3f791d){return db[_0xaca4('0x2c')][_0xaca4('0x4b')]()[_0xaca4('0x24')](respondWithResult(_0x3f791d,null))[_0xaca4('0x45')](handleError(_0x3f791d,null));};
\ No newline at end of file
index c7a1bb3..5e66aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7f2=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','report_chat_transfer'];(function(_0x4ebd89,_0x52a101){var _0x187f97=function(_0x5a7e17){while(--_0x5a7e17){_0x4ebd89['push'](_0x4ebd89['shift']());}};_0x187f97(++_0x52a101);}(_0xc7f2,0x153));var _0x2c7f=function(_0x444d90,_0x11c679){_0x444d90=_0x444d90-0x0;var _0x3a8344=_0xc7f2[_0x444d90];return _0x3a8344;};'use strict';var _=require(_0x2c7f('0x0'));var util=require(_0x2c7f('0x1'));var logger=require(_0x2c7f('0x2'))(_0x2c7f('0x3'));var moment=require(_0x2c7f('0x4'));var BPromise=require(_0x2c7f('0x5'));var rp=require(_0x2c7f('0x6'));var fs=require('fs');var path=require(_0x2c7f('0x7'));var rimraf=require(_0x2c7f('0x8'));var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module[_0x2c7f('0x9')]=function(_0x582d92,_0x9d6da){return _0x582d92[_0x2c7f('0xa')]('ChatTransferReport',attributes,{'tableName':_0x2c7f('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x2c7f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1098=['ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports'];(function(_0x1d7300,_0x17f109){var _0x46ee98=function(_0x5ee16a){while(--_0x5ee16a){_0x1d7300['push'](_0x1d7300['shift']());}};_0x46ee98(++_0x17f109);}(_0x1098,0x117));var _0x8109=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1098[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8109('0x0'));var util=require(_0x8109('0x1'));var logger=require(_0x8109('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8109('0x3'));var fs=require('fs');var path=require(_0x8109('0x4'));var rimraf=require(_0x8109('0x5'));var config=require(_0x8109('0x6'));var attributes=require(_0x8109('0x7'));module[_0x8109('0x8')]=function(_0x2f235f,_0x59ac61){return _0x2f235f['define'](_0x8109('0x9'),attributes,{'tableName':_0x8109('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8109('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 84dc6d8..f1943e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bc5=['ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x5cb820,_0x16904e){var _0x309374=function(_0x5be27c){while(--_0x5be27c){_0x5cb820['push'](_0x5cb820['shift']());}};_0x309374(++_0x16904e);}(_0x3bc5,0x163));var _0x53bc=function(_0x126e25,_0x4f26f3){_0x126e25=_0x126e25-0x0;var _0x180fea=_0x3bc5[_0x126e25];return _0x180fea;};'use strict';var _=require('lodash');var util=require(_0x53bc('0x0'));var moment=require(_0x53bc('0x1'));var BPromise=require('bluebird');var rs=require(_0x53bc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53bc('0x3'))['db'];var utils=require(_0x53bc('0x4'));var logger=require(_0x53bc('0x5'))(_0x53bc('0x6'));var config=require(_0x53bc('0x7'));var jayson=require(_0x53bc('0x8'));var client=jayson[_0x53bc('0x9')][_0x53bc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11414c,_0x5694d2,_0x4cb634){return new BPromise(function(_0x223bf0,_0x5e003b){return client[_0x53bc('0xb')](_0x11414c,_0x4cb634)[_0x53bc('0xc')](function(_0xbd1545){logger['info'](_0x53bc('0xd'),_0x5694d2,'request\x20sent');logger[_0x53bc('0xe')](_0x53bc('0xf'),_0x5694d2,_0x53bc('0x10'),JSON[_0x53bc('0x11')](_0xbd1545));if(_0xbd1545[_0x53bc('0x12')]){if(_0xbd1545[_0x53bc('0x12')][_0x53bc('0x13')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x5694d2,_0xbd1545[_0x53bc('0x12')]['message']);return _0x5e003b(_0xbd1545[_0x53bc('0x12')][_0x53bc('0x14')]);}logger[_0x53bc('0x12')](_0x53bc('0xd'),_0x5694d2,_0xbd1545[_0x53bc('0x12')][_0x53bc('0x14')]);return _0x223bf0(_0xbd1545[_0x53bc('0x12')]['message']);}else{logger[_0x53bc('0x15')](_0x53bc('0xd'),_0x5694d2,_0x53bc('0x10'));_0x223bf0(_0xbd1545[_0x53bc('0x16')]['message']);}})['catch'](function(_0x57d82e){logger[_0x53bc('0x12')](_0x53bc('0xd'),_0x5694d2,_0x57d82e);_0x5e003b(_0x57d82e);});});}
\ No newline at end of file
+var _0xa6d7=['error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3b49fd,_0x22cd37){var _0x2ffd12=function(_0x55621f){while(--_0x55621f){_0x3b49fd['push'](_0x3b49fd['shift']());}};_0x2ffd12(++_0x22cd37);}(_0xa6d7,0x119));var _0x7a6d=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xa6d7[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x7a6d('0x0'));var util=require(_0x7a6d('0x1'));var moment=require(_0x7a6d('0x2'));var BPromise=require(_0x7a6d('0x3'));var rs=require(_0x7a6d('0x4'));var fs=require('fs');var Redis=require(_0x7a6d('0x5'));var db=require(_0x7a6d('0x6'))['db'];var utils=require(_0x7a6d('0x7'));var logger=require(_0x7a6d('0x8'))(_0x7a6d('0x9'));var config=require(_0x7a6d('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7a6d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x58938f,_0x42fa72,_0xeb52ee){return new BPromise(function(_0x1de173,_0x2cd0a5){return client['request'](_0x58938f,_0xeb52ee)[_0x7a6d('0xc')](function(_0x341e43){logger['info'](_0x7a6d('0xd'),_0x42fa72,_0x7a6d('0xe'));logger[_0x7a6d('0xf')](_0x7a6d('0x10'),_0x42fa72,'request\x20sent',JSON[_0x7a6d('0x11')](_0x341e43));if(_0x341e43[_0x7a6d('0x12')]){if(_0x341e43['error'][_0x7a6d('0x13')]===0x1f4){logger['error'](_0x7a6d('0xd'),_0x42fa72,_0x341e43[_0x7a6d('0x12')][_0x7a6d('0x14')]);return _0x2cd0a5(_0x341e43[_0x7a6d('0x12')][_0x7a6d('0x14')]);}logger[_0x7a6d('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x42fa72,_0x341e43[_0x7a6d('0x12')][_0x7a6d('0x14')]);return _0x1de173(_0x341e43[_0x7a6d('0x12')][_0x7a6d('0x14')]);}else{logger[_0x7a6d('0x15')]('ChatTransferReport,\x20%s,\x20%s',_0x42fa72,_0x7a6d('0xe'));_0x1de173(_0x341e43['result'][_0x7a6d('0x14')]);}})[_0x7a6d('0x16')](function(_0x550b63){logger[_0x7a6d('0x12')](_0x7a6d('0xd'),_0x42fa72,_0x550b63);_0x2cd0a5(_0x550b63);});});}
\ No newline at end of file
index 968d10e..3226684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x971c=['./chatTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x971c,0xbf));var _0xc971=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x971c[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0xc971('0x0'));var util=require('util');var path=require(_0xc971('0x1'));var timeout=require(_0xc971('0x2'));var express=require('express');var router=express[_0xc971('0x3')]();var fs_extra=require(_0xc971('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc971('0x5'));var config=require(_0xc971('0x6'));var controller=require(_0xc971('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xc971('0x8')]);router[_0xc971('0x9')](_0xc971('0xa'),auth[_0xc971('0xb')](),controller[_0xc971('0xc')]);router[_0xc971('0x9')](_0xc971('0xd'),auth['isAuthenticated'](),controller[_0xc971('0xe')]);router[_0xc971('0xf')]('/',auth[_0xc971('0xb')](),controller[_0xc971('0x10')]);router[_0xc971('0x11')](_0xc971('0xd'),auth[_0xc971('0xb')](),controller[_0xc971('0x12')]);router[_0xc971('0x13')](_0xc971('0xd'),auth[_0xc971('0xb')](),controller[_0xc971('0x14')]);module[_0xc971('0x15')]=router;
\ No newline at end of file
+var _0xaf99=['../../components/interaction/service','./chatTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','multer','util','express','Router','fs-extra'];(function(_0x4a0223,_0x1dd128){var _0x55fdfe=function(_0x45f21a){while(--_0x45f21a){_0x4a0223['push'](_0x4a0223['shift']());}};_0x55fdfe(++_0x1dd128);}(_0xaf99,0x109));var _0x9af9=function(_0x54a5a9,_0x5f2d09){_0x54a5a9=_0x54a5a9-0x0;var _0x5936b2=_0xaf99[_0x54a5a9];return _0x5936b2;};'use strict';var multer=require(_0x9af9('0x0'));var util=require(_0x9af9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9af9('0x2'));var router=express[_0x9af9('0x3')]();var fs_extra=require(_0x9af9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9af9('0x5'));var config=require('../../config/environment');var controller=require(_0x9af9('0x6'));router[_0x9af9('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9af9('0x7')](_0x9af9('0x8'),auth[_0x9af9('0x9')](),controller[_0x9af9('0xa')]);router[_0x9af9('0x7')](_0x9af9('0xb'),auth[_0x9af9('0x9')](),controller[_0x9af9('0xc')]);router[_0x9af9('0xd')]('/',auth[_0x9af9('0x9')](),controller[_0x9af9('0xe')]);router[_0x9af9('0xf')](_0x9af9('0xb'),auth[_0x9af9('0x9')](),controller[_0x9af9('0x10')]);router['delete'](_0x9af9('0xb'),auth[_0x9af9('0x9')](),controller[_0x9af9('0x11')]);module['exports']=router;
\ No newline at end of file
index 584191d..28b6d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf492=['address','email','#011F6A','#ffffff','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','star','thumb','name','input','getDataValue','parse','onlineForm','setDataValue','stringify','Comments','offlineForm','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.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING'];(function(_0x3900b6,_0x97c2eb){var _0x585dda=function(_0x53b7f1){while(--_0x53b7f1){_0x3900b6['push'](_0x3900b6['shift']());}};_0x585dda(++_0x97c2eb);}(_0xf492,0x184));var _0x2f49=function(_0x4f2bb8,_0x405a44){_0x4f2bb8=_0x4f2bb8-0x0;var _0x33ecad=_0xf492[_0x4f2bb8];return _0x33ecad;};'use strict';var Sequelize=require(_0x2f49('0x0'));var rs=require(_0x2f49('0x1'));module[_0x2f49('0x2')]={'name':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'unique':_0x2f49('0x4')},'description':{'type':Sequelize[_0x2f49('0x3')]},'mapKey':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x5')},'mapKeyOffline':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x5')},'key':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2f49('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'defaultValue':_0x2f49('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'defaultValue':_0x2f49('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x2f49('0x3')]},'animation':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x2f49('0x9')](_0x2f49('0xa'),_0x2f49('0xb')),'defaultValue':_0x2f49('0xa')},'header_online':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xc')},'start_chat_button':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xd')},'offline_chat_button':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xe')},'header_offline':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xf')},'download_transcript':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x2f49('0x11')]},'closingQuestion':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x12')},'formSubmitSuccessMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x14')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x2f49('0x15')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x2f49('0x16')},'closingMessageButton':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xe')},'skipMessageButton':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM'](_0x2f49('0x17'),_0x2f49('0x18')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x2f49('0x11')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x2f49('0x19'),'type':'text','required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x2f49('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x2f49('0x5'),'type':_0x2f49('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x2f49('0x1b')]('onlineForm')?JSON[_0x2f49('0x1c')](this['getDataValue'](_0x2f49('0x1d'))):{};},'set':function(_0x5d3cc8){return this[_0x2f49('0x1e')](_0x2f49('0x1d'),JSON[_0x2f49('0x1f')](_0x5d3cc8));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x2f49('0x1f')]({'items':[{'type':_0x2f49('0x1a'),'props':{'title':_0x2f49('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x2f49('0x5'),'type':'email'},'variable':null},{'type':'textarea','config':{'placeholder':_0x2f49('0x20')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x2f49('0x21'))?JSON['parse'](this[_0x2f49('0x1b')](_0x2f49('0x21'))):{};},'set':function(_0x28a850){return this['setDataValue']('offlineForm',JSON[_0x2f49('0x1f')](_0x28a850));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x2f49('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x22')},'offlineMessageSubject':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x23')},'offlineMessageBody':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x24')},'enableUnmanagedNote':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x25')},'skipUnmanaged':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x26')},'sendUnmanaged':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xe')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x2f49('0x11')],'defaultValue':function(){return _0x2f49('0x27');}},'notificationSound':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x2f49('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x28')},'verticalAlignment':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x29')},'defaultTitle':{'type':Sequelize[_0x2f49('0x3')]},'customerAvatar':{'type':Sequelize[_0x2f49('0x11')]},'showCustomerAvatar':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2f49('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2f49('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2f49('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x2b')},'systemAvatar':{'type':Sequelize[_0x2f49('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2f49('0x10')],'comment':_0x2f49('0x2c')},'mandatoryDisposition':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![],'comment':_0x2f49('0x2d'),'set':function(_0x37b140){if(!_0x37b140)this[_0x2f49('0x1e')]('mandatoryDispositionPauseId',null);this[_0x2f49('0x1e')](_0x2f49('0x2e'),_0x37b140);}},'vidaooEscalation':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'defaultValue':_0x2f49('0x2f')},'vidaooNote':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':function(){return _0x2f49('0x30');}},'vidaooMetadata':{'type':Sequelize[_0x2f49('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x2f49('0x11')]}};
\ No newline at end of file
+var _0x1636=['Thanks\x20you\x20for\x20your\x20time!','Send','Skip','Feedback','star','TEXT','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','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message'];(function(_0x477e1d,_0xb3a233){var _0x25332b=function(_0x383fee){while(--_0x383fee){_0x477e1d['push'](_0x477e1d['shift']());}};_0x25332b(++_0xb3a233);}(_0x1636,0xc2));var _0x6163=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x1636[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0x6163('0x0'));var rs=require(_0x6163('0x1'));module[_0x6163('0x2')]={'name':{'type':Sequelize[_0x6163('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x6163('0x3')],'allowNull':![],'unique':_0x6163('0x4')},'description':{'type':Sequelize[_0x6163('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x6163('0x5')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x6163('0x5')},'key':{'type':Sequelize[_0x6163('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x6')},'customerAlias':{'type':Sequelize[_0x6163('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6163('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x6163('0x3')],'allowNull':![],'defaultValue':_0x6163('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x6163('0x3')],'allowNull':![],'defaultValue':_0x6163('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x6163('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x6163('0x3')]},'animation':{'type':Sequelize[_0x6163('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x6163('0xb')](_0x6163('0xc'),_0x6163('0xd')),'defaultValue':_0x6163('0xc')},'header_online':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0xe')},'start_chat_button':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0xf')},'offline_chat_button':{'type':Sequelize[_0x6163('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x6163('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x10')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x13')},'noteTitle':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x14')},'placeholderMessage':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x15')},'closingMessage':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x16')},'closingMessageButton':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x17')},'skipMessageButton':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x18')},'conditionAgreement':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x19')},'ratingType':{'type':Sequelize[_0x6163('0xb')](_0x6163('0x1a'),'thumb'),'defaultValue':_0x6163('0x1a')},'ratingStarsNumber':{'type':Sequelize[_0x6163('0x9')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x6163('0x1b')],'defaultValue':function(){return JSON[_0x6163('0x1c')]({'items':[{'type':_0x6163('0x1d'),'variable':null,'config':{'placeholder':_0x6163('0x1e'),'type':_0x6163('0x1f'),'required':!![]},'props':{'title':_0x6163('0x1e'),'helpText':''}},{'type':_0x6163('0x1d'),'props':{'title':_0x6163('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x6163('0x5'),'type':_0x6163('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x6163('0x20')](_0x6163('0x21'))?JSON['parse'](this['getDataValue'](_0x6163('0x21'))):{};},'set':function(_0x47c49a){return this[_0x6163('0x22')]('onlineForm',JSON[_0x6163('0x1c')](_0x47c49a));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x6163('0x1c')]({'items':[{'type':'input','props':{'title':_0x6163('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x6163('0x5'),'type':'email'},'variable':null},{'type':_0x6163('0x23'),'config':{'placeholder':_0x6163('0x24')},'props':{'title':'Comments','helpText':_0x6163('0x25')}}],'fromKey':0x0});},'get':function(){return this[_0x6163('0x20')](_0x6163('0x26'))?JSON[_0x6163('0x27')](this[_0x6163('0x20')](_0x6163('0x26'))):{};},'set':function(_0x494737){return this[_0x6163('0x22')](_0x6163('0x26'),JSON[_0x6163('0x1c')](_0x494737));}},'token':{'type':Sequelize[_0x6163('0x3')],'defaultValue':function(){return rs[_0x6163('0x28')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x6163('0x3')]},'waitingTitle':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x29')},'waitingMessage':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x2a')},'offlineMessageSubject':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x2b')},'offlineMessageBody':{'type':Sequelize[_0x6163('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x6163('0x2c')},'skipUnmanaged':{'type':Sequelize[_0x6163('0x3')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x6163('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x6163('0x1b')]},'showAgentAvatar':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x6163('0x3')]},'notificationTemplate':{'type':Sequelize[_0x6163('0x1b')],'defaultValue':function(){return _0x6163('0x2d');}},'notificationSound':{'type':Sequelize[_0x6163('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x2e')},'waitForTheAssignedAgent':{'type':Sequelize[_0x6163('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x6163('0x3')]},'customerAvatar':{'type':Sequelize[_0x6163('0x1b')]},'showCustomerAvatar':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x6163('0x3')],'allowNull':![],'defaultValue':_0x6163('0x2f'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x6163('0x3')],'defaultValue':_0x6163('0x30')},'systemAvatar':{'type':Sequelize[_0x6163('0x1b')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6163('0x9')],'comment':_0x6163('0x31')},'mandatoryDisposition':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![],'comment':_0x6163('0x32'),'set':function(_0x212bfd){if(!_0x212bfd)this[_0x6163('0x22')](_0x6163('0x33'),null);this[_0x6163('0x22')](_0x6163('0x34'),_0x212bfd);}},'vidaooEscalation':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x6163('0x3')]},'vidaooTopic':{'type':Sequelize[_0x6163('0x3')],'allowNull':![],'defaultValue':_0x6163('0x35')},'vidaooNote':{'type':Sequelize[_0x6163('0x3')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x6163('0x1b')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x6163('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 9b95085..a20065b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf797=['ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','EventManager','offline','files','createdAt','CompanyId','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','MailServerOut','forwardOffline','forwardOfflineAddress','Smtp','service','port','secure','authentication','auth','pass','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','toPairsIn','mapValues','Chat','NotifyMailAccount','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','fullname','internal','Tag','Tags','color','tag','timezone','iftime\x20%s,%s','iftime\x20%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','No\x20timezone','getSnippet','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','all','server/files/chat/iframe.ejs','x-real-ip','remoteAddress','referer','replace','render','alignment','textColor','backgroundColor','addApplications','ChatApplication','findAndCountAll','getApplications','addProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./chatWebsite.socket','register','jayson/promise','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','params','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','body','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','rawAttributes','rows','removeDispositions','ids','CannedAnswer','getAnswers','findOne','removeAnswers','addLogo','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/','getCustomerAvatar','root','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','download','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','user-agent','getResult','chat','CmContact','Sequelize','no\x20available\x20attributes','difference','updatedAt','ListId','from','ValidationError','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','List','Contacts','DESC','applications','Applications','orderBy','account','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','firstName','lastName','x-real-port','browser','format','%s\x20%s','unknown','version','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','interaction','spread','messageId','created','push','close','unmanaged','*,*,*,*'];(function(_0x55807b,_0x3c7611){var _0x352c7b=function(_0x2bedaf){while(--_0x2bedaf){_0x55807b['push'](_0x55807b['shift']());}};_0x352c7b(++_0x3c7611);}(_0xf797,0x70));var _0x7f79=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xf797[_0x819464];return _0x49dcc0;};'use strict';var emlformat=require(_0x7f79('0x0'));var rimraf=require(_0x7f79('0x1'));var zipdir=require(_0x7f79('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7f79('0x3'));var BPromise=require(_0x7f79('0x4'));var Mustache=require(_0x7f79('0x5'));var util=require(_0x7f79('0x6'));var path=require('path');var sox=require(_0x7f79('0x7'));var csv=require(_0x7f79('0x8'));var ejs=require(_0x7f79('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7f79('0xa'));var squel=require(_0x7f79('0xb'));var crypto=require(_0x7f79('0xc'));var jsforce=require(_0x7f79('0xd'));var deskjs=require(_0x7f79('0xe'));var toCsv=require(_0x7f79('0x8'));var querystring=require(_0x7f79('0xf'));var Papa=require(_0x7f79('0x10'));var Redis=require(_0x7f79('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7f79('0x12'));var logger=require(_0x7f79('0x13'))(_0x7f79('0x14'));var utils=require(_0x7f79('0x15'));var config=require(_0x7f79('0x16'));var licenseUtil=require(_0x7f79('0x17'));var db=require('../../mysqldb')['db'];config[_0x7f79('0x18')]=_[_0x7f79('0x19')](config[_0x7f79('0x18')],{'host':_0x7f79('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7f79('0x1b'))[_0x7f79('0x1c')](socket);var jayson=require(_0x7f79('0x1d'));var client=jayson['client'][_0x7f79('0x1e')]({'port':0x232c});var client9002=jayson[_0x7f79('0x1f')]['http']({'port':0x232a});var client9003=jayson[_0x7f79('0x1f')][_0x7f79('0x1e')]({'port':0x232b});var client9001=jayson[_0x7f79('0x1f')][_0x7f79('0x1e')]({'port':0x2329});function respondWithRpcPromise(_0x4e3c30,_0x420d44,_0x2a5865,_0x11bab5){return new BPromise(function(_0x3824f5,_0x4d22a6){var _0x308096=_0x11bab5||client;return _0x308096[_0x7f79('0x20')](_0x4e3c30,_0x2a5865)[_0x7f79('0x21')](function(_0x4fb8ae){logger[_0x7f79('0x22')](_0x7f79('0x23'),_0x420d44,'request\x20sent');logger[_0x7f79('0x24')](_0x7f79('0x25'),_0x420d44,_0x7f79('0x26'),JSON[_0x7f79('0x27')](_0x4fb8ae));if(_0x4fb8ae[_0x7f79('0x28')]){if(_0x4fb8ae['error'][_0x7f79('0x29')]===0x1f4){logger[_0x7f79('0x28')](_0x7f79('0x23'),_0x420d44,_0x4fb8ae[_0x7f79('0x28')][_0x7f79('0x2a')]);return _0x4d22a6(_0x4fb8ae[_0x7f79('0x28')][_0x7f79('0x2a')]);}logger['error'](_0x7f79('0x23'),_0x420d44,_0x4fb8ae[_0x7f79('0x28')][_0x7f79('0x2a')]);return _0x3824f5(_0x4fb8ae['error'][_0x7f79('0x2a')]);}else{logger[_0x7f79('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x420d44,_0x7f79('0x26'));_0x3824f5(_0x4fb8ae[_0x7f79('0x2b')]['message']);}})[_0x7f79('0x2c')](function(_0x4c0c73){logger[_0x7f79('0x28')](_0x7f79('0x23'),_0x420d44,_0x4c0c73);_0x4d22a6(_0x4c0c73);});});}function respondWithStatusCode(_0x4c052d,_0x141fb5){_0x141fb5=_0x141fb5||0xcc;return function(_0x359342){if(_0x359342){return _0x4c052d[_0x7f79('0x2d')](_0x141fb5);}return _0x4c052d[_0x7f79('0x2e')](_0x141fb5)[_0x7f79('0x2f')]();};}function respondWithResult(_0x55254e,_0x1c60e9){_0x1c60e9=_0x1c60e9||0xc8;return function(_0x13db11){if(_0x13db11){return _0x55254e[_0x7f79('0x2e')](_0x1c60e9)[_0x7f79('0x30')](_0x13db11);}};}function respondWithFilteredResult(_0x4645da,_0x448776){return function(_0x2e2d3f){if(_0x2e2d3f){var _0x43dc41=typeof _0x448776[_0x7f79('0x31')]===_0x7f79('0x32')&&typeof _0x448776['limit']==='undefined';var _0x5527ff=_0x2e2d3f[_0x7f79('0x33')];var _0x392533=_0x43dc41?0x0:_0x448776[_0x7f79('0x31')];var _0x3ef9f7=_0x43dc41?_0x2e2d3f[_0x7f79('0x33')]:_0x448776[_0x7f79('0x31')]+_0x448776[_0x7f79('0x34')];var _0x1f3a49;if(_0x3ef9f7>=_0x5527ff){_0x3ef9f7=_0x5527ff;_0x1f3a49=0xc8;}else{_0x1f3a49=0xce;}_0x4645da[_0x7f79('0x2e')](_0x1f3a49);return _0x4645da[_0x7f79('0x35')](_0x7f79('0x36'),_0x392533+'-'+_0x3ef9f7+'/'+_0x5527ff)[_0x7f79('0x30')](_0x2e2d3f);}return null;};}function patchUpdates(_0x100bd7){return function(_0x4cdf87){try{jsonpatch[_0x7f79('0x37')](_0x4cdf87,_0x100bd7,!![]);}catch(_0xf2d149){return BPromise[_0x7f79('0x38')](_0xf2d149);}return _0x4cdf87[_0x7f79('0x39')]();};}function saveUpdates(_0x2d25eb,_0x266a18){return function(_0x356bc0){if(_0x356bc0){return _0x356bc0[_0x7f79('0x3a')](_0x2d25eb)[_0x7f79('0x21')](function(_0x28c798){return _0x28c798;});}return null;};}function removeEntity(_0xf248dd,_0x272db9){return function(_0x4d3874){if(_0x4d3874){return _0x4d3874[_0x7f79('0x3b')]()['then'](function(){var _0x3ce5f2=_0x4d3874[_0x7f79('0x3c')]({'plain':!![]});var _0x4683bf='ChatWebsites';return db[_0x7f79('0x3d')][_0x7f79('0x3b')]({'where':{'type':_0x4683bf,'resourceId':_0x3ce5f2['id']}})[_0x7f79('0x21')](function(){return _0x4d3874;});})[_0x7f79('0x21')](function(){_0xf248dd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f9032,_0x36efce){return function(_0x386a95){if(!_0x386a95){_0x3f9032[_0x7f79('0x2d')](0x194);}return _0x386a95;};}function handleError(_0x411165,_0x2369cc){_0x2369cc=_0x2369cc||0x1f4;return function(_0xb316a6){logger[_0x7f79('0x28')](_0xb316a6[_0x7f79('0x3e')]);if(_0xb316a6[_0x7f79('0x3f')]){delete _0xb316a6['name'];}_0x411165[_0x7f79('0x2e')](_0x2369cc)[_0x7f79('0x40')](_0xb316a6);};}exports[_0x7f79('0x41')]=function(_0x32c638,_0x57b629){var _0x78e261={'include':[{'model':db[_0x7f79('0x42')],'as':_0x7f79('0x43')}]},_0x33c18b={},_0x2681fe={'count':0x0,'rows':[]};var _0x17c4ed=_[_0x7f79('0x44')](db[_0x7f79('0x45')]['rawAttributes'],function(_0x57fb42){return{'name':_0x57fb42[_0x7f79('0x46')],'type':_0x57fb42[_0x7f79('0x47')][_0x7f79('0x48')]};});_0x33c18b[_0x7f79('0x49')]=_['map'](_0x17c4ed,_0x7f79('0x3f'));_0x33c18b[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x32c638[_0x7f79('0x4a')]);_0x33c18b[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x33c18b[_0x7f79('0x49')],_0x33c18b[_0x7f79('0x4a')]);_0x78e261[_0x7f79('0x4e')]=_['intersection'](_0x33c18b[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x32c638[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x78e261[_0x7f79('0x4e')]=_0x78e261[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x78e261[_0x7f79('0x4e')]:_0x33c18b['model'];if(!_0x32c638['query'][_0x7f79('0x51')](_0x7f79('0x52'))){_0x78e261['limit']=qs[_0x7f79('0x34')](_0x32c638[_0x7f79('0x4a')]['limit']);_0x78e261[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x32c638[_0x7f79('0x4a')][_0x7f79('0x31')]);}_0x78e261[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x32c638[_0x7f79('0x4a')]['sort']);_0x78e261[_0x7f79('0x55')]=qs['filters'](_[_0x7f79('0x56')](_0x32c638[_0x7f79('0x4a')],_0x33c18b[_0x7f79('0x4c')]),_0x17c4ed);if(_0x32c638[_0x7f79('0x4a')]['filter']){_0x78e261[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x78e261['where'],{'$or':_['map'](_0x17c4ed,function(_0x195866){if(_0x195866[_0x7f79('0x47')]!==_0x7f79('0x58')){var _0x82ff={};_0x82ff[_0x195866[_0x7f79('0x3f')]]={'$like':'%'+_0x32c638['query'][_0x7f79('0x59')]+'%'};return _0x82ff;}})});}_0x78e261=_[_0x7f79('0x57')]({},_0x78e261,_0x32c638['options']);var _0x4ad5e1={'where':_0x78e261[_0x7f79('0x55')]};return db[_0x7f79('0x45')][_0x7f79('0x33')](_0x4ad5e1)['then'](function(_0x4d5158){_0x2681fe[_0x7f79('0x33')]=_0x4d5158;if(_0x32c638['query'][_0x7f79('0x5a')]){_0x78e261['include']=[{'all':!![]}];}return db[_0x7f79('0x45')][_0x7f79('0x5b')](_0x78e261);})[_0x7f79('0x21')](function(_0x193f7e){_0x2681fe['rows']=_0x193f7e;return _0x2681fe;})[_0x7f79('0x21')](respondWithFilteredResult(_0x57b629,_0x78e261))[_0x7f79('0x2c')](handleError(_0x57b629,null));};exports['show']=function(_0x37d89d,_0x491ff6){var _0x19f28b={'raw':![],'where':{'id':_0x37d89d[_0x7f79('0x5c')]['id']},'include':[{'model':db[_0x7f79('0x42')],'as':_0x7f79('0x43')}]},_0x3ccf99={};_0x3ccf99[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x45')]['rawAttributes']);_0x3ccf99['query']=_[_0x7f79('0x4b')](_0x37d89d[_0x7f79('0x4a')]);_0x3ccf99[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x3ccf99[_0x7f79('0x49')],_0x3ccf99[_0x7f79('0x4a')]);_0x19f28b['attributes']=_[_0x7f79('0x4d')](_0x3ccf99[_0x7f79('0x49')],qs['fields'](_0x37d89d[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x19f28b[_0x7f79('0x4e')]=_0x19f28b[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x19f28b['attributes']:_0x3ccf99[_0x7f79('0x49')];if(_0x37d89d['query'][_0x7f79('0x5a')]){_0x19f28b[_0x7f79('0x5d')]=[{'all':!![]}];}_0x19f28b=_['merge']({},_0x19f28b,_0x37d89d[_0x7f79('0x5e')]);return db['ChatWebsite']['find'](_0x19f28b)[_0x7f79('0x21')](handleEntityNotFound(_0x491ff6,null))[_0x7f79('0x21')](respondWithResult(_0x491ff6,null))[_0x7f79('0x2c')](handleError(_0x491ff6,null));};exports[_0x7f79('0x5f')]=function(_0x310a8c,_0x18fd1f){return db['ChatWebsite'][_0x7f79('0x5f')](_0x310a8c['body'],{})['then'](function(_0x2f26b7){var _0x409710=_0x310a8c[_0x7f79('0x60')][_0x7f79('0x3c')]({'plain':!![]});if(!_0x409710)throw new Error(_0x7f79('0x61'));if(_0x409710[_0x7f79('0x62')]===_0x7f79('0x60')){var _0x4e213e=_0x2f26b7['get']({'plain':!![]});var _0x51d056='ChatWebsites';return db[_0x7f79('0x63')][_0x7f79('0x64')]({'where':{'name':_0x51d056,'userProfileId':_0x409710[_0x7f79('0x65')]},'raw':!![]})[_0x7f79('0x21')](function(_0x52689a){if(_0x52689a&&_0x52689a[_0x7f79('0x66')]===0x0){return db['UserProfileResource'][_0x7f79('0x5f')]({'name':_0x4e213e[_0x7f79('0x3f')],'resourceId':_0x4e213e['id'],'type':_0x52689a[_0x7f79('0x3f')],'sectionId':_0x52689a['id']},{})[_0x7f79('0x21')](function(){return _0x2f26b7;});}else{return _0x2f26b7;}})['catch'](function(_0x35cca9){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x35cca9);throw _0x35cca9;});}return _0x2f26b7;})[_0x7f79('0x21')](respondWithResult(_0x18fd1f,0xc9))[_0x7f79('0x2c')](handleError(_0x18fd1f,null));};exports[_0x7f79('0x3a')]=function(_0x30c6ef,_0x5afe82){if(_0x30c6ef[_0x7f79('0x67')]['id']){delete _0x30c6ef[_0x7f79('0x67')]['id'];}return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x30c6ef['params']['id']},'include':[{'model':db[_0x7f79('0x42')],'as':_0x7f79('0x43')}]})[_0x7f79('0x21')](handleEntityNotFound(_0x5afe82,null))[_0x7f79('0x21')](saveUpdates(_0x30c6ef[_0x7f79('0x67')],null))[_0x7f79('0x21')](respondWithResult(_0x5afe82,null))['catch'](handleError(_0x5afe82,null));};exports['destroy']=function(_0x1170f4,_0xaad800){return db['ChatWebsite'][_0x7f79('0x64')]({'where':{'id':_0x1170f4[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0xaad800,null))['then'](removeEntity(_0xaad800,null))[_0x7f79('0x2c')](handleError(_0xaad800,null));};exports[_0x7f79('0x68')]=function(_0x38f5c4,_0x5965cc){return db[_0x7f79('0x45')][_0x7f79('0x68')]()[_0x7f79('0x21')](respondWithResult(_0x5965cc,null))['catch'](handleError(_0x5965cc,null));};exports[_0x7f79('0x69')]=function(_0x20a6e6,_0x57579a,_0x11d1fd){if(_0x20a6e6['body']['id']){delete _0x20a6e6[_0x7f79('0x67')]['id'];}return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x20a6e6[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x57579a,null))[_0x7f79('0x21')](function(_0xcd892){if(_0xcd892){_0x20a6e6[_0x7f79('0x67')][_0x7f79('0x6a')]=_0xcd892['id'];return db[_0x7f79('0x6b')][_0x7f79('0x5f')](_0x20a6e6['body']);}})[_0x7f79('0x21')](respondWithResult(_0x57579a,null))[_0x7f79('0x2c')](handleError(_0x57579a,null));};exports[_0x7f79('0x6c')]=function(_0x20e15b,_0x190740,_0x5777f0){var _0x327dec={'raw':![],'where':{}};var _0x45555f={};var _0x150176={'count':0x0,'rows':[]};return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x20e15b[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x190740,null))[_0x7f79('0x21')](function(_0x2c010d){if(_0x2c010d){_0x45555f[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x6b')][_0x7f79('0x6d')]);_0x45555f[_0x7f79('0x4a')]=_['keys'](_0x20e15b['query']);_0x45555f[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x45555f[_0x7f79('0x49')],_0x45555f['query']);_0x327dec['attributes']=_[_0x7f79('0x4d')](_0x45555f[_0x7f79('0x49')],qs['fields'](_0x20e15b[_0x7f79('0x4a')]['fields']));_0x327dec[_0x7f79('0x4e')]=_0x327dec['attributes'][_0x7f79('0x50')]?_0x327dec[_0x7f79('0x4e')]:_0x45555f[_0x7f79('0x49')];if(!_0x20e15b['query'][_0x7f79('0x51')](_0x7f79('0x52'))){_0x327dec[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x20e15b[_0x7f79('0x4a')]['limit']);_0x327dec[_0x7f79('0x31')]=qs['offset'](_0x20e15b[_0x7f79('0x4a')][_0x7f79('0x31')]);}_0x327dec[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x20e15b[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x327dec[_0x7f79('0x55')]=qs['filters'](_[_0x7f79('0x56')](_0x20e15b['query'],_0x45555f['filters']));_0x327dec[_0x7f79('0x55')][_0x7f79('0x6a')]=_0x2c010d['id'];if(_0x20e15b['query'][_0x7f79('0x59')]){_0x327dec[_0x7f79('0x55')]=_['merge'](_0x327dec[_0x7f79('0x55')],{'$or':_[_0x7f79('0x44')](_0x327dec[_0x7f79('0x4e')],function(_0x50989f){var _0x6c0dd6={};_0x6c0dd6[_0x50989f]={'$like':'%'+_0x20e15b['query'][_0x7f79('0x59')]+'%'};return _0x6c0dd6;})});}_0x327dec=_[_0x7f79('0x57')]({},_0x327dec,_0x20e15b['options']);return db[_0x7f79('0x6b')][_0x7f79('0x33')]({'where':_0x327dec[_0x7f79('0x55')]})[_0x7f79('0x21')](function(_0x2035df){_0x150176[_0x7f79('0x33')]=_0x2035df;if(_0x20e15b['query']['includeAll']){_0x327dec[_0x7f79('0x5d')]=[{'all':!![]}];}return db[_0x7f79('0x6b')][_0x7f79('0x5b')](_0x327dec);})[_0x7f79('0x21')](function(_0x22828c){_0x150176[_0x7f79('0x6e')]=_0x22828c;return _0x150176;});}})['then'](respondWithFilteredResult(_0x190740,_0x327dec))[_0x7f79('0x2c')](handleError(_0x190740,null));};exports[_0x7f79('0x6f')]=function(_0x3dcc60,_0x2004cc,_0xd7479d){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3dcc60['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x2004cc,null))[_0x7f79('0x21')](function(_0x56d054){if(_0x56d054){return _0x56d054[_0x7f79('0x6f')](_0x3dcc60[_0x7f79('0x4a')][_0x7f79('0x70')]);}})['then'](respondWithStatusCode(_0x2004cc,null))[_0x7f79('0x2c')](handleError(_0x2004cc,null));};exports['addAnswer']=function(_0x3d8448,_0x1aa65a,_0x5d3ab2){if(_0x3d8448[_0x7f79('0x67')]['id']){delete _0x3d8448[_0x7f79('0x67')]['id'];}return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3d8448[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x1aa65a,null))[_0x7f79('0x21')](function(_0x6ccf97){if(_0x6ccf97){_0x3d8448['body'][_0x7f79('0x6a')]=_0x6ccf97['id'];return db[_0x7f79('0x71')][_0x7f79('0x5f')](_0x3d8448[_0x7f79('0x67')]);}})[_0x7f79('0x21')](respondWithResult(_0x1aa65a,null))[_0x7f79('0x2c')](handleError(_0x1aa65a,null));};exports[_0x7f79('0x72')]=function(_0x3d7c05,_0x5d5ef5,_0x46a263){var _0x5ac242={'raw':![],'where':{}};var _0x5f102a={};var _0x468278={'count':0x0,'rows':[]};return db[_0x7f79('0x45')][_0x7f79('0x73')]({'where':{'id':_0x3d7c05[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5d5ef5,null))[_0x7f79('0x21')](function(_0x4fab88){if(_0x4fab88){_0x5f102a[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db['CannedAnswer'][_0x7f79('0x6d')]);_0x5f102a[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x3d7c05[_0x7f79('0x4a')]);_0x5f102a[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x5f102a[_0x7f79('0x49')],_0x5f102a[_0x7f79('0x4a')]);_0x5ac242[_0x7f79('0x4e')]=_[_0x7f79('0x4d')](_0x5f102a['model'],qs[_0x7f79('0x4f')](_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x5ac242[_0x7f79('0x4e')]=_0x5ac242['attributes'][_0x7f79('0x50')]?_0x5ac242['attributes']:_0x5f102a[_0x7f79('0x49')];if(!_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x51')](_0x7f79('0x52'))){_0x5ac242[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x5ac242[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x3d7c05[_0x7f79('0x4a')]['offset']);}_0x5ac242['order']=qs[_0x7f79('0x54')](_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x5ac242[_0x7f79('0x55')]=qs['filters'](_[_0x7f79('0x56')](_0x3d7c05[_0x7f79('0x4a')],_0x5f102a['filters']));_0x5ac242[_0x7f79('0x55')][_0x7f79('0x6a')]=_0x4fab88['id'];if(_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x59')]){_0x5ac242[_0x7f79('0x55')]=_['merge'](_0x5ac242[_0x7f79('0x55')],{'$or':_[_0x7f79('0x44')](_0x5ac242[_0x7f79('0x4e')],function(_0x24a568){var _0x192c68={};_0x192c68[_0x24a568]={'$like':'%'+_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x59')]+'%'};return _0x192c68;})});}_0x5ac242=_[_0x7f79('0x57')]({},_0x5ac242,_0x3d7c05['options']);return db['CannedAnswer'][_0x7f79('0x33')]({'where':_0x5ac242[_0x7f79('0x55')]})['then'](function(_0x4313bd){_0x468278[_0x7f79('0x33')]=_0x4313bd;if(_0x3d7c05['query']['includeAll']){_0x5ac242['include']=[{'all':!![]}];}return db[_0x7f79('0x71')][_0x7f79('0x5b')](_0x5ac242);})[_0x7f79('0x21')](function(_0xec7ed2){_0x468278[_0x7f79('0x6e')]=_0xec7ed2;return _0x468278;});}})['then'](respondWithFilteredResult(_0x5d5ef5,_0x5ac242))[_0x7f79('0x2c')](handleError(_0x5d5ef5,null));};exports['removeAnswers']=function(_0x2d6e5b,_0x4eae97,_0x154171){return db[_0x7f79('0x45')]['find']({'where':{'id':_0x2d6e5b[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x4eae97,null))[_0x7f79('0x21')](function(_0x42d3c3){if(_0x42d3c3){return _0x42d3c3[_0x7f79('0x74')](_0x2d6e5b['query']['ids']);}})[_0x7f79('0x21')](respondWithStatusCode(_0x4eae97,null))[_0x7f79('0x2c')](handleError(_0x4eae97,null));};exports[_0x7f79('0x75')]=function(_0xdb3cbf,_0x301697,_0x4a2401){_0xdb3cbf[_0x7f79('0x67')][_0x7f79('0x76')]=_0xdb3cbf[_0x7f79('0x77')][_0x7f79('0x78')];return db[_0x7f79('0x45')]['find']({'where':{'id':_0xdb3cbf[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x301697,null))[_0x7f79('0x21')](saveUpdates(_0xdb3cbf[_0x7f79('0x67')],null))['then'](respondWithResult(_0x301697,null))[_0x7f79('0x2c')](handleError(_0x301697,null));};exports['addAvatar']=function(_0x4699af,_0x2bce88,_0x221485){_0x4699af[_0x7f79('0x67')][_0x7f79('0x79')]=_0x4699af[_0x7f79('0x77')][_0x7f79('0x78')];return db['ChatWebsite'][_0x7f79('0x64')]({'where':{'id':_0x4699af[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x2bce88,null))[_0x7f79('0x21')](saveUpdates(_0x4699af[_0x7f79('0x67')],null))['then'](respondWithResult(_0x2bce88,null))[_0x7f79('0x2c')](handleError(_0x2bce88,null));};exports[_0x7f79('0x7a')]=function(_0x581bfe,_0x30e7f2,_0xbde3df){_0x581bfe[_0x7f79('0x67')][_0x7f79('0x7b')]=_0x581bfe[_0x7f79('0x77')]['filename'];return db[_0x7f79('0x45')]['find']({'where':{'id':_0x581bfe[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x30e7f2,null))[_0x7f79('0x21')](saveUpdates(_0x581bfe[_0x7f79('0x67')],null))[_0x7f79('0x21')](respondWithResult(_0x30e7f2,null))['catch'](handleError(_0x30e7f2,null));};exports[_0x7f79('0x7c')]=function(_0x54343b,_0xca20fe,_0x4a6b40){_0x54343b[_0x7f79('0x67')][_0x7f79('0x7d')]=_0x54343b[_0x7f79('0x77')][_0x7f79('0x78')];return db['ChatWebsite']['find']({'where':{'id':_0x54343b['params']['id']}})['then'](handleEntityNotFound(_0xca20fe,null))['then'](saveUpdates(_0x54343b[_0x7f79('0x67')],null))[_0x7f79('0x21')](respondWithResult(_0xca20fe,null))[_0x7f79('0x2c')](handleError(_0xca20fe,null));};exports[_0x7f79('0x7e')]=function(_0x12ab8e,_0x24df66,_0x30044d){var _0x39727c=path[_0x7f79('0x7f')](config['root'],_0x7f79('0x80'));var _0x2cb2d8={'where':{'id':_0x12ab8e[_0x7f79('0x5c')]['id']},'attributes':['id',_0x7f79('0x76')],'raw':!![]};var _0x39d5a1=![];return require(_0x7f79('0x17'))[_0x7f79('0x81')]()[_0x7f79('0x21')](function(_0x1c2432){if(_0x1c2432){_0x39d5a1=_0x1c2432[_0x7f79('0x82')];}})[_0x7f79('0x21')](function(){return db[_0x7f79('0x45')]['find'](_0x2cb2d8);})[_0x7f79('0x21')](handleEntityNotFound(_0x24df66,null))[_0x7f79('0x21')](function(_0xc9e02c){if(_0xc9e02c){if(!_[_0x7f79('0x83')](_0xc9e02c[_0x7f79('0x76')])){if(fs[_0x7f79('0x84')](path[_0x7f79('0x7f')](config['root'],_0x7f79('0x85'),_0xc9e02c['sitepic']))&&_0x39d5a1){_0x39727c=path['join'](config['root'],'server/files/images/logos/',_0xc9e02c[_0x7f79('0x76')]);}}return _0x24df66['download'](_0x39727c);}})[_0x7f79('0x2c')](handleError(_0x24df66,null));};exports[_0x7f79('0x86')]=function(_0x193e6e,_0x229ffb,_0x18adbf){var _0x3bbc8e=path[_0x7f79('0x7f')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x4ac4f1={'where':{'id':_0x193e6e[_0x7f79('0x5c')]['id']},'attributes':['id',_0x7f79('0x79')],'raw':!![]};return db['ChatWebsite'][_0x7f79('0x64')](_0x4ac4f1)['then'](handleEntityNotFound(_0x229ffb,null))['then'](function(_0x2000eb){if(_0x2000eb){if(!_[_0x7f79('0x83')](_0x2000eb[_0x7f79('0x79')])){if(fs['existsSync'](path['join'](config['root'],_0x7f79('0x87'),_0x2000eb[_0x7f79('0x79')]))){_0x3bbc8e=path[_0x7f79('0x7f')](config['root'],_0x7f79('0x87'),_0x2000eb[_0x7f79('0x79')]);}}return _0x229ffb['download'](_0x3bbc8e);}})[_0x7f79('0x2c')](handleError(_0x229ffb,null));};exports[_0x7f79('0x88')]=function(_0x226de2,_0x513992,_0x28f6bf){var _0x5202f0=path['join'](config[_0x7f79('0x89')],_0x7f79('0x8a'));var _0x2eb30d={'where':{'id':_0x226de2[_0x7f79('0x5c')]['id']},'attributes':['id',_0x7f79('0x7b'),'showCustomerAvatar'],'raw':!![]};return db[_0x7f79('0x45')][_0x7f79('0x64')](_0x2eb30d)[_0x7f79('0x21')](handleEntityNotFound(_0x513992,null))['then'](function(_0xd305b8){if(_0xd305b8){if(!_[_0x7f79('0x83')](_0xd305b8[_0x7f79('0x7b')])){if(fs['existsSync'](path[_0x7f79('0x7f')](config['root'],'server/files/images/avatars/',_0xd305b8['customerAvatar']))&&_0xd305b8[_0x7f79('0x8b')]){_0x5202f0=path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0x87'),_0xd305b8[_0x7f79('0x7b')]);}}return _0x513992[_0x7f79('0x8c')](_0x5202f0);}})[_0x7f79('0x2c')](handleError(_0x513992,null));};exports[_0x7f79('0x8d')]=function(_0x4c8a24,_0x393968,_0x3caeeb){var _0x3dde9b=path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0x8e'));var _0x463c89={'where':{'id':_0x4c8a24[_0x7f79('0x5c')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x7f79('0x45')][_0x7f79('0x64')](_0x463c89)['then'](handleEntityNotFound(_0x393968,null))[_0x7f79('0x21')](function(_0xda0933){if(_0xda0933){if(!_[_0x7f79('0x83')](_0xda0933[_0x7f79('0x7d')])){if(fs[_0x7f79('0x84')](path[_0x7f79('0x7f')](config['root'],_0x7f79('0x87'),_0xda0933[_0x7f79('0x7d')]))){_0x3dde9b=path[_0x7f79('0x7f')](config['root'],_0x7f79('0x87'),_0xda0933['systemAvatar']);}}return _0x393968[_0x7f79('0x8c')](_0x3dde9b);}})[_0x7f79('0x2c')](handleError(_0x393968,null));};exports[_0x7f79('0x8f')]=function(_0x294fa4,_0x390b7d,_0x166ee6){var _0x4a2df8=require(_0x7f79('0x90'));var _0xb68019=new _0x4a2df8();var _0x28e660=_0xb68019[_0x7f79('0x91')](_0x294fa4['headers'][_0x7f79('0x92')])[_0x7f79('0x93')]();var _0x490a1b={'body':_0x294fa4[_0x7f79('0x67')],'channel':_0x7f79('0x94')};var _0x417149=[];var _0x5550c7=[];var _0x4fb265={};var _0x17f020=![];return db[_0x7f79('0x95')][_0x7f79('0x68')]()[_0x7f79('0x21')](function(_0x28adf8){if(!_0x28adf8){throw new db[(_0x7f79('0x96'))]['ValidationError'](_0x7f79('0x97'));}_0x417149=_[_0x7f79('0x98')](_[_0x7f79('0x4b')](_0x28adf8),['createdAt','updatedAt']);_0x5550c7=_[_0x7f79('0x98')](_[_0x7f79('0x4b')](_0x28adf8),['createdAt',_0x7f79('0x99'),'CompanyId',_0x7f79('0x9a')]);if(_0x294fa4[_0x7f79('0x67')]['id']){delete _0x294fa4['body']['id'];}if(_[_0x7f79('0x83')](_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9b')])){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0x9d'));}if(_[_0x7f79('0x83')](_0x294fa4[_0x7f79('0x67')][_0x7f79('0x67')])||_0x294fa4[_0x7f79('0x67')][_0x7f79('0x67')]===''){throw new db['Sequelize'][(_0x7f79('0x9c'))](_0x7f79('0x9e'));}if(_[_0x7f79('0x83')](_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9f')])){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xa0')+_0x5550c7);}if(!_[_0x7f79('0xa1')](_0x5550c7,_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9f')])){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xa2')+_0x5550c7);}_0x4fb265[_0x294fa4['body']['mapKey']]=_0x294fa4['body'][_0x7f79('0x9b')];})[_0x7f79('0x21')](function(){return db[_0x7f79('0x45')]['find']({'where':{'id':_0x294fa4[_0x7f79('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0x7f79('0xa3'),'include':[{'model':db[_0x7f79('0x95')],'as':_0x7f79('0xa4'),'where':_0x4fb265,'limit':0x1,'order':[[_0x7f79('0x99'),_0x7f79('0xa5')]]}]},{'model':db['ChatApplication'],'as':'Applications'}]});})[_0x7f79('0x21')](handleEntityNotFound(_0x390b7d,null))[_0x7f79('0x21')](function(_0x2751a0){if(_0x2751a0&&_0x2751a0[_0x7f79('0xa3')]){_0x490a1b['account']=_0x2751a0;_0x490a1b[_0x7f79('0xa6')]=_0x2751a0[_0x7f79('0xa7')];_0x490a1b['list']=_0x2751a0['List'];_0x490a1b['applications']=_[_0x7f79('0xa8')](_0x490a1b['applications'],['priority'],['asc']);if(_0x490a1b['account'][_0x7f79('0xa7')]){delete _0x490a1b['account'][_0x7f79('0xa7')];}if(_0x490a1b[_0x7f79('0xa9')][_0x7f79('0xa3')]&&_0x490a1b[_0x7f79('0xa9')][_0x7f79('0xa3')][_0x7f79('0xa4')]['length']){return _0x490a1b['account'][_0x7f79('0xa3')][_0x7f79('0xa4')][0x0];}var _0x17108d=_['defaults'](_0x294fa4['body'],{'firstName':_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9b')],'ListId':_0x2751a0['ListId']});_0x17108d[_0x294fa4['body'][_0x7f79('0x9f')]]=_0x294fa4[_0x7f79('0x67')]['from'];return db[_0x7f79('0x95')][_0x7f79('0x5f')](_0x17108d,{'fields':_0x417149,'raw':!![]});}})[_0x7f79('0x21')](handleEntityNotFound(_0x390b7d,null))[_0x7f79('0x21')](function(_0x28fa4d){_0x490a1b[_0x7f79('0xaa')]=_0x28fa4d;var _0x470571=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xab')];if(_0x294fa4[_0x7f79('0xac')][_0x7f79('0xad')]){_0x470571=_0x294fa4['headers'][_0x7f79('0xad')];}else if(_0x294fa4[_0x7f79('0xac')]['x-forwarded-for']){_0x470571=_['first'](_0x294fa4[_0x7f79('0xac')][_0x7f79('0xae')]['split'](','));}if(_0x28fa4d){var _0x43554c={'ContactId':_0x28fa4d['id'],'ChatWebsiteId':_0x294fa4['params']['id'],'from':(_0x28fa4d[_0x7f79('0xaf')]||'')+'\x20'+(_0x28fa4d[_0x7f79('0xb0')]||''),'customerIp':_0x470571,'customerPort':_0x294fa4[_0x7f79('0xac')][_0x7f79('0xb1')]?_0x294fa4[_0x7f79('0xac')][_0x7f79('0xb1')]:null,'referer':_0x294fa4['body']['referer'],'browserName':_0x28e660[_0x7f79('0xb2')]['name']&&_0x28e660[_0x7f79('0xb2')]['version']?util[_0x7f79('0xb3')](_0x7f79('0xb4'),_0x28e660[_0x7f79('0xb2')][_0x7f79('0x3f')],_0x28e660[_0x7f79('0xb2')]['version']):_0x7f79('0xb5'),'browserVersion':_0x28e660['browser'][_0x7f79('0xb6')]||_0x7f79('0xb5'),'osName':util[_0x7f79('0xb3')](_0x7f79('0xb4'),_0x28e660['os']['name'],_0x28e660['os'][_0x7f79('0xb6')]),'osVersion':_0x28e660['os'][_0x7f79('0xb6')],'deviceModel':_0x28e660[_0x7f79('0xb7')][_0x7f79('0x49')]&&_0x28e660['device'][_0x7f79('0xb8')]?util[_0x7f79('0xb3')](_0x7f79('0xb9'),_0x28e660['device'][_0x7f79('0x49')],_0x28e660['device']['vendor'],_0x28e660[_0x7f79('0xb7')][_0x7f79('0x47')]):null,'deviceVendor':_0x28e660[_0x7f79('0xb7')]['vendor'],'deviceType':_0x28e660[_0x7f79('0xb7')]['type'],'formData':JSON[_0x7f79('0x27')](_0x294fa4[_0x7f79('0x67')])};var _0x21dfb8={'ChatWebsiteId':_0x294fa4[_0x7f79('0x5c')]['id'],'closed':![]};if(_0x294fa4['body'][_0x7f79('0xba')]){_0x21dfb8[_0x7f79('0xba')]=_0x294fa4['body'][_0x7f79('0xba')];return db[_0x7f79('0xbb')][_0x7f79('0x64')]({'where':_0x21dfb8})['then'](function(_0x17b3c1){if(_0x17b3c1){return[_0x17b3c1,![]];}_0x43554c[_0x7f79('0xba')]=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xba')];_0x43554c[_0x7f79('0xbc')]=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xbc')];return db[_0x7f79('0xbb')][_0x7f79('0x5f')](_0x43554c)[_0x7f79('0x21')](function(_0x1a9bfc){return[_0x1a9bfc,!![]];});});}_0x21dfb8['ContactId']=_0x28fa4d['id'];if(_0x294fa4['body'][_0x7f79('0xbd')]&&_0x294fa4[_0x7f79('0x67')][_0x7f79('0xbd')]['id']){_0x21dfb8['id']=_0x294fa4['body'][_0x7f79('0xbd')]['id'];return db[_0x7f79('0xbb')][_0x7f79('0x64')]({'where':_0x21dfb8})['then'](function(_0x4ef587){if(_0x4ef587){return[_0x4ef587,![]];}return db[_0x7f79('0xbb')][_0x7f79('0x5f')](_0x43554c)['then'](function(_0x16c015){return[_0x16c015,!![]];});});}return db[_0x7f79('0xbb')][_0x7f79('0x5f')](_0x43554c)[_0x7f79('0x21')](function(_0x1e95f6){return[_0x1e95f6,!![]];});}})[_0x7f79('0xbe')](function(_0x219539,_0x430d99){if(_0x219539){_0x17f020=_0x430d99;if(!_0x430d99){var _0x888ad6={'from':(_0x490a1b[_0x7f79('0xaa')][_0x7f79('0xaf')]||'')+'\x20'+(_0x490a1b['contact'][_0x7f79('0xb0')]||'')};if(_0x294fa4[_0x7f79('0x67')][_0x7f79('0xba')]&&_0x294fa4['body'][_0x7f79('0xbf')]&&_0x294fa4[_0x7f79('0x67')][_0x7f79('0xba')]!=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xbf')]){_0x888ad6[_0x7f79('0xba')]=_0x294fa4[_0x7f79('0x67')]['messageId'];}return _0x219539[_0x7f79('0x3a')](_0x888ad6);}else{return _0x219539;}}})[_0x7f79('0x21')](function(_0x37fd43){_0x490a1b[_0x7f79('0xbd')]=_0x37fd43['get']({'plain':!![]});_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc0')]=_0x17f020;if(_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc0')]){if(_0x490a1b['account']['autoclose']){_0x490a1b['applications'][_0x7f79('0xc1')]({'id':0x0,'priority':_0x490a1b['applications'][_0x7f79('0x50')]+0x1,'app':_0x7f79('0xc2'),'appdata':_0x7f79('0xc3'),'interval':_0x7f79('0xc4')});}}return db[_0x7f79('0xc5')]['create']({'body':_0x294fa4[_0x7f79('0x67')][_0x7f79('0x67')],'ChatWebsiteId':_0x294fa4[_0x7f79('0x5c')]['id'],'ChatInteractionId':_0x37fd43['id'],'direction':'in','ContactId':_0x490a1b[_0x7f79('0xaa')]['id'],'AttachmentId':_0x294fa4['body'][_0x7f79('0xc6')]});})[_0x7f79('0x21')](function(_0x4321eb){_0x490a1b['message']=_0x4321eb;if(_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc7')]){return db[_0x7f79('0xc8')]['find']({'attributes':['id',_0x7f79('0x3f')],'where':{'id':_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc7')]}})[_0x7f79('0x21')](function(_0x5c718d){if(_0x5c718d){_0x490a1b[_0x7f79('0xa6')][_0x7f79('0xc9')]({'id':0x0,'priority':0x0,'app':_0x7f79('0xca'),'appdata':_0x5c718d['name']+','+(_0x490a1b[_0x7f79('0xa9')][_0x7f79('0xcb')]||0xa),'interval':_0x7f79('0xc4')});_0x490a1b[_0x7f79('0xcc')]=!![];}return respondWithRpcPromise(_0x7f79('0xcd'),'startRouting',_0x490a1b);});}return respondWithRpcPromise(_0x7f79('0xcd'),'startRouting',_0x490a1b);})[_0x7f79('0x21')](function(_0x1aa52f){respondWithRpcPromise(_0x7f79('0xce'),_0x7f79('0xce'),{'event':_0x7f79('0x8f'),'message':_0x1aa52f},client9002);return _0x1aa52f;})['then'](respondWithResult(_0x390b7d,null))[_0x7f79('0x2c')](handleError(_0x390b7d,null));};exports[_0x7f79('0xcf')]=function(_0x50e761,_0x35a7b4,_0x37a919){var _0x383d78,_0x2d96c1,_0x4ef646;var _0x543d79=[];var _0x2abf73=[];var _0x4392f5={};var _0x117024=_0x50e761[_0x7f79('0xd0')]||[];var _0x123a7e=[];var _0x2da3ad;return db[_0x7f79('0x95')]['describe']()[_0x7f79('0x21')](function(_0x9f7248){if(!_0x9f7248){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0x97'));}_0x2abf73=_['difference'](_[_0x7f79('0x4b')](_0x9f7248),['createdAt',_0x7f79('0x99')]);_0x543d79=_[_0x7f79('0x98')](_[_0x7f79('0x4b')](_0x9f7248),[_0x7f79('0xd1'),_0x7f79('0x99'),_0x7f79('0xd2'),_0x7f79('0x9a')]);if(_0x50e761[_0x7f79('0x67')]['id']){delete _0x50e761['body']['id'];}if(_['isNil'](_0x50e761[_0x7f79('0x67')][_0x7f79('0x9b')])){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)[_0x7f79('0x40')](new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0x9d')));}if(_[_0x7f79('0x83')](_0x50e761['body'][_0x7f79('0x67')])||_0x50e761['body']['body']===''){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)[_0x7f79('0x40')](new db[(_0x7f79('0x96'))]['ValidationError'](_0x7f79('0x9e')));}if(_['isNil'](_0x50e761['body'][_0x7f79('0xd3')])){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)['send'](new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xd4')+_0x543d79));}if(!_['includes'](_0x543d79,_0x50e761[_0x7f79('0x67')][_0x7f79('0xd3')])){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)['send'](new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xd5')+_0x543d79));}_0x4392f5[_0x50e761['body'][_0x7f79('0xd3')]]=_0x50e761[_0x7f79('0x67')]['from'];})[_0x7f79('0x21')](function(){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x50e761[_0x7f79('0x5c')]['id']},'include':[{'model':db[_0x7f79('0xd6')],'as':_0x7f79('0xa3')},{'model':db[_0x7f79('0xd7')],'as':'MailAccount'}]});})[_0x7f79('0x21')](handleEntityNotFound(_0x35a7b4,null))[_0x7f79('0x21')](function(_0x2a34a4){if(_0x2a34a4&&_0x2a34a4[_0x7f79('0xa3')]){_0x2d96c1=_0x2a34a4;var _0x457189=_[_0x7f79('0x19')](_0x50e761['body'],{'firstName':_0x50e761[_0x7f79('0x67')]['from'],'phone':_0x50e761['body'][_0x7f79('0x9b')],'ListId':_0x2a34a4[_0x7f79('0x9a')]});_0x457189[_0x50e761['body']['mapKeyOffline']]=_0x50e761['body'][_0x7f79('0x9b')];return db[_0x7f79('0x95')][_0x7f79('0xd8')]({'where':_0x4392f5,'defaults':_0x457189});}})[_0x7f79('0xbe')](function(_0x2937d1){if(_0x2937d1){_0x4ef646=_0x2937d1;var _0x3e63b9=fs[_0x7f79('0xd9')](path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0xda')),_0x7f79('0xdb'));var _0x125174=ejs['render'](_0x3e63b9,{'body':_[_0x7f79('0xdc')](_0x50e761[_0x7f79('0x67')]['body']),'bodyTitle':_0x2d96c1[_0x7f79('0xdd')]});return db['ChatOfflineMessage'][_0x7f79('0x5f')]({'body':_0x125174,'ContactId':_0x2937d1['id'],'ChatWebsiteId':_0x2d96c1['id']});}})[_0x7f79('0x21')](function(_0x1b25d5){_0x2da3ad=_0x1b25d5;if(_0x117024[_0x7f79('0x50')]){var _0x3208eb=_0x117024['map'](function(_0xac1fa2){return{'name':_0xac1fa2[_0x7f79('0xde')],'basename':_0xac1fa2[_0x7f79('0x78')],'type':_0xac1fa2[_0x7f79('0xdf')],'ChatOfflineMessageId':_0x1b25d5['id']};});_0x123a7e=_0x3208eb[_0x7f79('0x44')](_0x141239=>{var _0xe6f372={'filename':_0x141239[_0x7f79('0x3f')],'path':path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0xe0'),_0x7f79('0xd0'),_0x7f79('0xe1'),_0x7f79('0xe2'),_0x141239[_0x7f79('0xe3')])};return _0xe6f372;});if(!_0x2d96c1[_0x7f79('0xe4')]){return db[_0x7f79('0xe5')][_0x7f79('0xe6')](function(_0x1f9e48){return db['Attachment']['bulkCreate'](_0x3208eb,{'transaction':_0x1f9e48});});}}})[_0x7f79('0x21')](function(){if(_0x2da3ad){_0x383d78=_0x2da3ad;return db[_0x7f79('0xd7')][_0x7f79('0x73')]({'where':{'active':!![]},'include':[{'model':db[_0x7f79('0xe7')],'as':'Smtp','raw':!![]}]});}})[_0x7f79('0x21')](function(_0x1cd43b){if(_0x1cd43b&&_0x1cd43b['Smtp']&&_0x2d96c1[_0x7f79('0xe8')]&&_0x2d96c1[_0x7f79('0xe9')]){var _0x18b43e={'tls':{'rejectUnauthorized':![]}};if(_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xeb')]){_0x18b43e[_0x7f79('0xeb')]=_0x1cd43b['Smtp'][_0x7f79('0xeb')];}else{_0x18b43e['host']=_0x1cd43b[_0x7f79('0xea')]['host'];_0x18b43e[_0x7f79('0xec')]=_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xec')];_0x18b43e['secure']=_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xed')];}if(_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xee')]){_0x18b43e[_0x7f79('0xef')]={'user':_0x1cd43b[_0x7f79('0xea')][_0x7f79('0x60')],'pass':_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xf0')]};}return respondWithRpcPromise('SendMail',_0x7f79('0xf1'),{'account':_0x18b43e,'message':{'from':util[_0x7f79('0xb3')](_0x7f79('0xf2'),_0x1cd43b[_0x7f79('0x3f')],_0x1cd43b[_0x7f79('0xf3')]||_0x1cd43b[_0x7f79('0xea')][_0x7f79('0x60')]),'to':_0x2d96c1[_0x7f79('0xe9')],'subject':_0x2d96c1[_0x7f79('0xf4')],'html':_0x383d78['body'],'attachments':_0x123a7e}},client9003)[_0x7f79('0x21')](function(){return _0x383d78;})[_0x7f79('0x2c')](function(_0x44b954){console[_0x7f79('0x28')](_0x44b954);});}})[_0x7f79('0x21')](function(){if(_0x2d96c1&&_0x2d96c1[_0x7f79('0xe4')]&&_0x2d96c1[_0x7f79('0xf5')]){var _0x18a2c7=[];if(_0x117024[_0x7f79('0x50')]){_0x18a2c7=_0x117024[_0x7f79('0x44')](function(_0x3088e6){return{'name':_0x3088e6[_0x7f79('0xde')],'basename':_0x3088e6[_0x7f79('0x78')],'type':_0x3088e6[_0x7f79('0xdf')],'ChatOfflineMessageId':_0x2da3ad['id']};});}var _0x319c90;if(!_['isNil'](_0x2d96c1['subjectOffline'])){var _0x3cce56=_[_0x7f79('0x44')](_0x50e761[_0x7f79('0x67')],function(_0x27ebb0){return _0x27ebb0;});var _0x1c4116=_[_0x7f79('0xf6')](_0x3cce56)[0x0];var _0x4ce886=_[_0x7f79('0xf7')](_0x1c4116,function(_0x1acc67){return _0x1acc67;});_0x319c90=_0x4ce886[0x1][_0x2d96c1['subjectOffline']];}var _0x1144d7={'from':_0x4ef646[_0x7f79('0xf3')],'firstName':_0x4ef646['firstName'],'lastName':_0x4ef646['lastName'],'mapKey':'email','message':{'from':_0x4ef646[_0x7f79('0xf3')],'to':_0x2d96c1[_0x7f79('0xd7')][_0x7f79('0xf3')],'cc':'','subject':_[_0x7f79('0x83')](_0x319c90)?_0x2d96c1[_0x7f79('0xf4')]:_0x319c90,'messageId':'','sentAt':new Date(),'attach':_0x18a2c7[_0x7f79('0x50')],'attachments':_0x18a2c7,'originChannel':_0x7f79('0xf8'),'ChatWebsiteId':_0x2d96c1['id'],'ChatOfflineMessageId':_0x383d78['id'],'originTo':_0x2d96c1[_0x7f79('0xd7')][_0x7f79('0xf3')]},'body':_0x383d78['body']};var _0xc44309={'account':{'id':_0x2d96c1[_0x7f79('0xf5')]},'body':_0x1144d7,'log':_0x7f79('0xf9')};return respondWithRpcPromise('NotifyMailAccount','notifyMail',_0xc44309,client9001)[_0x7f79('0x21')](function(){return _0x383d78;})[_0x7f79('0x2c')](function(_0x22855d){console['error'](_0x22855d);});}return;})[_0x7f79('0x21')](function(){if(_0x383d78){return _0x383d78;}})[_0x7f79('0x21')](respondWithResult(_0x35a7b4,null))[_0x7f79('0x2c')](function(_0x3bed5f){console[_0x7f79('0x28')]('catch',_0x3bed5f);for(var _0x4d1de5 of _0x117024){var _0x3c849d=path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0xe0'),_0x7f79('0xd0'),_0x7f79('0xe1'),_0x7f79('0xe2'),_0x4d1de5[_0x7f79('0x78')]);fs_extra['remove'](_0x3c849d)[_0x7f79('0x2c')](function(_0x5b6c13){console[_0x7f79('0x28')](_0x7f79('0xfa'),_0x3c849d,_0x5b6c13);});}});};exports[_0x7f79('0xfb')]=function(_0x5044fc,_0x39b15b,_0x4ec008){return db[_0x7f79('0xbb')][_0x7f79('0x64')]({'where':{'id':_0x5044fc[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x39b15b,null))[_0x7f79('0x21')](function(_0x3aa339){if(_0x3aa339){return _0x3aa339[_0x7f79('0xfb')](_0x5044fc[_0x7f79('0x67')][_0x7f79('0x70')],_[_0x7f79('0xfc')](_0x5044fc[_0x7f79('0x67')],['ids','id'])||{});}})[_0x7f79('0x21')](respondWithResult(_0x39b15b,null))[_0x7f79('0x2c')](handleError(_0x39b15b,null));};exports['getInteractions']=function(_0x401e5b,_0x41e2d4,_0x313e2d){var _0x1112e4={'raw':![],'where':{}};var _0x126b4b={};var _0x385f0d={'count':0x0,'rows':[]};return db[_0x7f79('0x45')][_0x7f79('0x73')]({'where':{'id':_0x401e5b[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x41e2d4,null))['then'](function(_0x2de675){if(_0x2de675){_0x126b4b[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0xbb')][_0x7f79('0x6d')]);_0x126b4b[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x401e5b[_0x7f79('0x4a')]);_0x126b4b['filters']=_[_0x7f79('0x4d')](_0x126b4b[_0x7f79('0x49')],_0x126b4b['query']);_0x1112e4[_0x7f79('0x4e')]=_[_0x7f79('0x4d')](_0x126b4b['model'],qs['fields'](_0x401e5b['query'][_0x7f79('0x4f')]));_0x1112e4[_0x7f79('0x4e')]=_0x1112e4[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x1112e4['attributes']:_0x126b4b[_0x7f79('0x49')];if(!_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x51')](_0x7f79('0x52'))){_0x1112e4[_0x7f79('0x34')]=qs['limit'](_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x1112e4[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x401e5b['query'][_0x7f79('0x31')]);}_0x1112e4[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x1112e4[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_['pick'](_0x401e5b[_0x7f79('0x4a')],_0x126b4b[_0x7f79('0x4c')]));_0x1112e4[_0x7f79('0x55')][_0x7f79('0x6a')]=_0x2de675['id'];if(_0x401e5b['query'][_0x7f79('0x59')]){_0x1112e4[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x1112e4[_0x7f79('0x55')],{'$or':_['map'](_0x1112e4[_0x7f79('0x4e')],function(_0x561c26){var _0x30d45e={};_0x30d45e[_0x561c26]={'$like':'%'+_0x401e5b['query'][_0x7f79('0x59')]+'%'};return _0x30d45e;})});}_0x1112e4=_[_0x7f79('0x57')]({},_0x1112e4,_0x401e5b[_0x7f79('0x5e')]);return db['ChatInteraction'][_0x7f79('0x33')]({'where':_0x1112e4[_0x7f79('0x55')]})[_0x7f79('0x21')](function(_0x44f2f0){_0x385f0d[_0x7f79('0x33')]=_0x44f2f0;if(_0x401e5b[_0x7f79('0x4a')]['includeAll']){_0x1112e4[_0x7f79('0x5d')]=[{'model':db[_0x7f79('0x95')],'as':'Contact','required':![]},{'model':db[_0x7f79('0xc8')],'as':'Owner','attributes':[_0x7f79('0x3f'),_0x7f79('0xfd'),_0x7f79('0xfe')],'required':![]},{'model':db[_0x7f79('0xff')],'as':_0x7f79('0x100'),'attributes':['id','name',_0x7f79('0x101')],'where':_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x102')]?{'id':_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x102')]}:undefined,'required':_0x401e5b['query'][_0x7f79('0x102')]?!![]:![]}];}return db[_0x7f79('0xbb')][_0x7f79('0x5b')](_0x1112e4);})[_0x7f79('0x21')](function(_0x2ef33a){_0x385f0d[_0x7f79('0x6e')]=_0x2ef33a;return _0x385f0d;});}})[_0x7f79('0x21')](respondWithFilteredResult(_0x41e2d4,_0x1112e4))[_0x7f79('0x2c')](handleError(_0x41e2d4,null));};function iftimePromise(_0x12dbfc,_0x21c4d1){return respondWithRpcPromise('Command','getSnippet',{'command':_0x21c4d1[_0x7f79('0x103')]?util['format'](_0x7f79('0x104'),_0x12dbfc['interval'],_0x21c4d1[_0x7f79('0x103')]):util[_0x7f79('0xb3')](_0x7f79('0x105'),_0x12dbfc[_0x7f79('0x106')])},client9002)['then'](function(_0x91c2cf){var _0x2504c1=_0x91c2cf&&_0x91c2cf[_0x7f79('0x107')](_0x7f79('0x108'))>=0x0?!![]:![];logger[_0x7f79('0x22')](_0x7f79('0x109'),_0x21c4d1['id'],_0x12dbfc['id'],_0x12dbfc[_0x7f79('0x106')],_0x2504c1?_0x7f79('0x10a'):'OFFLINE',_0x21c4d1[_0x7f79('0x103')]?_0x21c4d1['timezone']:_0x7f79('0x10b'));return _0x2504c1;})['catch'](function(_0x3b4d40){logger['error'](_0x7f79('0x109'),_0x21c4d1['id'],_0x12dbfc['id'],_0x12dbfc['interval'],util['inspect'](_0x3b4d40,{'showHidden':![],'depth':null}),_0x21c4d1[_0x7f79('0x103')]?_0x21c4d1[_0x7f79('0x103')]:_0x7f79('0x10b'));return![];});}exports[_0x7f79('0x10c')]=function(_0x4c2d83,_0xf24a54,_0x5a86b9){var _0x5b8ec1=0x0;var _0x4214f2=0x0;var _0x4dd11f=![];var _0x64aa31;var _0x3397b4;return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x4c2d83[_0x7f79('0x5c')]['id']},'include':[{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x7f79('0x10d')],'as':_0x7f79('0x10e'),'attributes':['id','interval'],'raw':!![]}]}]})[_0x7f79('0x21')](handleEntityNotFound(_0xf24a54,null))[_0x7f79('0x21')](function(_0x54cd73){if(_0x54cd73){_0x64aa31=_0x54cd73;return _0x54cd73[_0x7f79('0x10f')]({'raw':!![]});}})[_0x7f79('0x21')](function(_0x60a619){if(_0x64aa31){if(_0x60a619){_0x3397b4=_0x60a619;}}return require(_0x7f79('0x17'))[_0x7f79('0x81')]();})['then'](function(_0x453d9e){if(_0x453d9e){_0x4214f2=_0x453d9e[_0x7f79('0x110')];_0x4dd11f=_0x453d9e[_0x7f79('0x82')];}})[_0x7f79('0x21')](function(){return db[_0x7f79('0xbb')][_0x7f79('0x33')]({'where':{'closed':![]}});})[_0x7f79('0x21')](function(_0x3c19f1){_0x5b8ec1=_0x3c19f1;if(_0x4214f2&&_0x3c19f1>_0x4214f2){return db['License'][_0x7f79('0x73')]({'where':{'id':0x1}})['then'](function(_0x2ec2db){if(_0x2ec2db){_0x2ec2db[_0x7f79('0x111')](_0x7f79('0x112'));}});}})['then'](function(){if(_0x64aa31[_0x7f79('0x10d')]&&_0x64aa31[_0x7f79('0x10d')][_0x7f79('0x10e')]){var _0x38830a=[];for(var _0x283607=0x0;_0x283607<_0x64aa31[_0x7f79('0x10d')][_0x7f79('0x10e')]['length'];_0x283607++){var _0x5b9f1f=_0x64aa31[_0x7f79('0x10d')]['Intervals'][_0x283607][_0x7f79('0x3c')]({'plain':!![]});_0x38830a['push'](iftimePromise(_0x5b9f1f,_0x64aa31));}return BPromise[_0x7f79('0x113')](_0x38830a)[_0x7f79('0x21')](function(_0x1e600d){return _['some'](_0x1e600d);});}else{return!![];}})[_0x7f79('0x21')](function(_0x5507d1){var _0x1c7cf4=fs[_0x7f79('0xd9')](path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0x114')),_0x7f79('0xdb'));var _0x5a7500={'remote':_0x64aa31['remote'],'query':querystring[_0x7f79('0x27')](_[_0x7f79('0x57')](_0x64aa31[_0x7f79('0x3c')]({'plain':!![]}),{'customerIp':_0x4c2d83[_0x7f79('0xac')]['x-forwarded-for']||_0x4c2d83[_0x7f79('0xac')][_0x7f79('0x115')]||_0x4c2d83['connection'][_0x7f79('0x116')]||_0x4c2d83['ip'],'referer':_0x4c2d83[_0x7f79('0xac')][_0x7f79('0x117')],'openedInteractions':_0x5b8ec1,'maxInteractions':_0x4214f2,'virtual':_0x4dd11f['virtual'],'online':_0x5507d1,'custom':_0x4dd11f}))[_0x7f79('0x118')](/'/g,'\x5c\x27')};_0xf24a54[_0x7f79('0x40')](ejs['render'](Mustache[_0x7f79('0x119')](_0x1c7cf4,_0x5a7500),{'proactiveActions':_0x3397b4,'alignment':_0x64aa31[_0x7f79('0x11a')],'verticalAlignment':_0x64aa31['verticalAlignment'],'div_color':_0x64aa31[_0x7f79('0x101')],'text_color':_0x64aa31[_0x7f79('0x11b')],'button_color':_0x64aa31['color_button'],'background_color':_0x64aa31[_0x7f79('0x11c')]}));})[_0x7f79('0x2c')](handleError(_0xf24a54,null));};exports[_0x7f79('0x11d')]=function(_0x45d610,_0x3cbc02,_0x114874){return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x45d610[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x3cbc02,null))[_0x7f79('0x21')](function(_0xb399f){if(_0xb399f){return db[_0x7f79('0xe5')][_0x7f79('0xe6')](function(_0x4a8087){return db[_0x7f79('0x11e')][_0x7f79('0x3b')]({'where':{'ChatWebsiteId':_0x45d610[_0x7f79('0x5c')]['id']},'transaction':_0x4a8087})[_0x7f79('0x21')](function(_0x388be3){var _0x390bf8=_[_0x7f79('0x44')](_0x45d610[_0x7f79('0x67')],function(_0x3b08d1){_0x3b08d1['ChatWebsiteId']=_0x45d610[_0x7f79('0x5c')]['id'];return _0x3b08d1;});return db[_0x7f79('0x11e')]['bulkCreate'](_0x390bf8,{'transaction':_0x4a8087});});})['then'](function(){return db[_0x7f79('0x11e')][_0x7f79('0x11f')]({'where':{'ChatWebsiteId':_0x45d610['params']['id']},'order':'priority'});});}})[_0x7f79('0x21')](respondWithResult(_0x3cbc02,null))[_0x7f79('0x2c')](handleError(_0x3cbc02,null));};exports[_0x7f79('0x120')]=function(_0x32e01d,_0x3f040d,_0x2d679a){var _0x19afea={};var _0x22b920={};var _0xe3a061;var _0x1a82ff;return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x32e01d[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x3f040d,null))[_0x7f79('0x21')](function(_0x463a44){if(_0x463a44){_0xe3a061=_0x463a44;_0x22b920[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x11e')][_0x7f79('0x6d')]);_0x22b920[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x32e01d[_0x7f79('0x4a')]);_0x22b920[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x22b920['model'],_0x22b920['query']);_0x19afea[_0x7f79('0x4e')]=_[_0x7f79('0x4d')](_0x22b920[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x32e01d[_0x7f79('0x4a')]['fields']));_0x19afea[_0x7f79('0x4e')]=_0x19afea[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x19afea[_0x7f79('0x4e')]:_0x22b920['model'];_0x19afea[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x32e01d[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x19afea[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_[_0x7f79('0x56')](_0x32e01d[_0x7f79('0x4a')],_0x22b920['filters']));if(_0x32e01d['query'][_0x7f79('0x59')]){_0x19afea[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x19afea['where'],{'$or':_['map'](_0x19afea['attributes'],function(_0x2a0d52){var _0x28a445={};_0x28a445[_0x2a0d52]={'$like':'%'+_0x32e01d['query'][_0x7f79('0x59')]+'%'};return _0x28a445;})});}_0x19afea=_[_0x7f79('0x57')]({},_0x19afea,_0x32e01d[_0x7f79('0x5e')]);return _0xe3a061[_0x7f79('0x120')](_0x19afea);}})[_0x7f79('0x21')](function(_0x746111){if(_0x746111){_0x1a82ff=_0x746111[_0x7f79('0x50')];if(!_0x32e01d['query']['hasOwnProperty'](_0x7f79('0x52'))){_0x19afea[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x32e01d[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x19afea[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x32e01d[_0x7f79('0x4a')]['offset']);}return _0xe3a061[_0x7f79('0x120')](_0x19afea);}})[_0x7f79('0x21')](function(_0xa5bccc){if(_0xa5bccc){return _0xa5bccc?{'count':_0x1a82ff,'rows':_0xa5bccc}:null;}})['then'](respondWithResult(_0x3f040d,null))[_0x7f79('0x2c')](handleError(_0x3f040d,null));};exports['addProactiveActions']=function(_0x3e38e4,_0x47b9c2,_0x577913){return db['chatProactiveAction'][_0x7f79('0x64')]({'where':{'id':_0x3e38e4[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x47b9c2,null))['then'](function(_0x468727){if(_0x468727){return _0x468727[_0x7f79('0x121')](_0x3e38e4[_0x7f79('0x67')]['ids'],_['omit'](_0x3e38e4['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x47b9c2,null))['catch'](handleError(_0x47b9c2,null));};exports[_0x7f79('0x10f')]=function(_0x53b941,_0x5dcfed,_0x4c67a7){var _0x2f8e2c={};var _0x29dd5f={};var _0x88a5d8;var _0x2e3c8f;return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x53b941['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x5dcfed,null))[_0x7f79('0x21')](function(_0x459c88){if(_0x459c88){_0x88a5d8=_0x459c88;_0x29dd5f['model']=_[_0x7f79('0x4b')](db[_0x7f79('0x122')]['rawAttributes']);_0x29dd5f['query']=_[_0x7f79('0x4b')](_0x53b941[_0x7f79('0x4a')]);_0x29dd5f[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x29dd5f[_0x7f79('0x49')],_0x29dd5f[_0x7f79('0x4a')]);_0x2f8e2c['attributes']=_[_0x7f79('0x4d')](_0x29dd5f[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x53b941[_0x7f79('0x4a')]['fields']));_0x2f8e2c[_0x7f79('0x4e')]=_0x2f8e2c[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x2f8e2c[_0x7f79('0x4e')]:_0x29dd5f['model'];_0x2f8e2c[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x53b941[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x2f8e2c[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_[_0x7f79('0x56')](_0x53b941[_0x7f79('0x4a')],_0x29dd5f[_0x7f79('0x4c')]));if(_0x53b941['query']['filter']){_0x2f8e2c[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x2f8e2c['where'],{'$or':_[_0x7f79('0x44')](_0x2f8e2c['attributes'],function(_0x112e78){var _0x1b1731={};_0x1b1731[_0x112e78]={'$like':'%'+_0x53b941['query'][_0x7f79('0x59')]+'%'};return _0x1b1731;})});}_0x2f8e2c=_['merge']({},_0x2f8e2c,_0x53b941[_0x7f79('0x5e')]);return _0x88a5d8[_0x7f79('0x10f')](_0x2f8e2c);}})[_0x7f79('0x21')](function(_0x516366){if(_0x516366){_0x2e3c8f=_0x516366[_0x7f79('0x50')];if(!_0x53b941[_0x7f79('0x4a')][_0x7f79('0x51')]('nolimit')){_0x2f8e2c[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x53b941[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x2f8e2c[_0x7f79('0x31')]=qs['offset'](_0x53b941[_0x7f79('0x4a')]['offset']);}return _0x88a5d8['getProactiveActions'](_0x2f8e2c);}})['then'](function(_0x2cd722){if(_0x2cd722){return _0x2cd722?{'count':_0x2e3c8f,'rows':_0x2cd722}:null;}})[_0x7f79('0x21')](respondWithResult(_0x5dcfed,null))[_0x7f79('0x2c')](handleError(_0x5dcfed,null));};exports[_0x7f79('0x123')]=function(_0xce7d77,_0x2d344e,_0x4271f7){var _0x1a10ad=_0xce7d77[_0x7f79('0x4a')][_0x7f79('0x124')]===_0x7f79('0x125')?_0x7f79('0x126'):_0x7f79('0x127');return db[_0x7f79('0x45')][_0x7f79('0x64')]({'attributes':['id',_0x1a10ad],'where':{'id':_0xce7d77[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x2d344e,null))[_0x7f79('0x21')](function(_0x146823){if(_0x146823){var _0x45b2f9=_0x146823[_0x1a10ad];var _0x46c727=_0x45b2f9&&_0x45b2f9[_0x7f79('0x128')]?_0x45b2f9[_0x7f79('0x128')]:[];_0x2d344e[_0x7f79('0x40')]({'fromKey':_[_0x7f79('0x83')](_0x45b2f9['fromKey'])?undefined:_0x45b2f9[_0x7f79('0x129')],'count':_0x46c727[_0x7f79('0x50')],'rows':_0x46c727});}})[_0x7f79('0x2c')](handleError(_0x2d344e,null));};exports[_0x7f79('0x12a')]=function(_0x4efccc,_0x4b3919,_0x419b5b){var _0x22cb23={'raw':![],'where':{}};var _0xfea96a={};var _0x498439={'count':0x0,'rows':[]};return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x4efccc[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4b3919,null))[_0x7f79('0x21')](function(_0x23e8e1){if(_0x23e8e1){_0xfea96a[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x12b')][_0x7f79('0x6d')]);_0xfea96a[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x4efccc[_0x7f79('0x4a')]);_0xfea96a[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0xfea96a[_0x7f79('0x49')],_0xfea96a[_0x7f79('0x4a')]);_0x22cb23['attributes']=_['intersection'](_0xfea96a['model'],qs[_0x7f79('0x4f')](_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x22cb23['attributes']=_0x22cb23[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x22cb23[_0x7f79('0x4e')]:_0xfea96a['model'];if(!_0x4efccc[_0x7f79('0x4a')]['hasOwnProperty'](_0x7f79('0x52'))){_0x22cb23['limit']=qs[_0x7f79('0x34')](_0x4efccc['query'][_0x7f79('0x34')]);_0x22cb23[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x31')]);}_0x22cb23['order']=qs[_0x7f79('0x54')](_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x22cb23[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_['pick'](_0x4efccc[_0x7f79('0x4a')],_0xfea96a[_0x7f79('0x4c')]));_0x22cb23['where']['ChatWebsiteId']=_0x23e8e1['id'];if(_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x59')]){_0x22cb23['where']=_[_0x7f79('0x57')](_0x22cb23['where'],{'$or':_[_0x7f79('0x44')](_0x22cb23['attributes'],function(_0x14437c){var _0x1c6211={};_0x1c6211[_0x14437c]={'$like':'%'+_0x4efccc['query'][_0x7f79('0x59')]+'%'};return _0x1c6211;})});}_0x22cb23=_[_0x7f79('0x57')]({},_0x22cb23,_0x4efccc[_0x7f79('0x5e')]);return db[_0x7f79('0x12b')]['count']({'where':_0x22cb23[_0x7f79('0x55')]})[_0x7f79('0x21')](function(_0x4a7e0f){_0x498439[_0x7f79('0x33')]=_0x4a7e0f;if(_0x4efccc[_0x7f79('0x4a')]['includeAll']){_0x22cb23[_0x7f79('0x5d')]=[{'all':!![]}];}else{_0x22cb23[_0x7f79('0x5d')]=[{'model':db['CmContact'],'as':_0x7f79('0x12c'),'required':![]},{'model':db['Attachment'],'as':_0x7f79('0x12d'),'required':![]}];}return db[_0x7f79('0x12b')][_0x7f79('0x5b')](_0x22cb23);})['then'](function(_0x437cb4){_0x498439['rows']=_0x437cb4;return _0x498439;});}})['then'](respondWithFilteredResult(_0x4b3919,_0x22cb23))[_0x7f79('0x2c')](handleError(_0x4b3919,null));};exports[_0x7f79('0x12e')]=function(_0x3be82c,_0x3d3319,_0x49713f){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3be82c['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x3d3319,null))[_0x7f79('0x21')](function(_0x393bd5){if(_0x393bd5){return _0x393bd5[_0x7f79('0x12e')](_0x3be82c[_0x7f79('0x67')][_0x7f79('0x70')],_[_0x7f79('0xfc')](_0x3be82c[_0x7f79('0x67')],[_0x7f79('0x70'),'id'])||{})[_0x7f79('0xbe')](function(_0x9d1854){for(var _0x5bb39e=0x0;_0x5bb39e<_0x3be82c[_0x7f79('0x67')][_0x7f79('0x70')][_0x7f79('0x50')];_0x5bb39e+=0x1){socket[_0x7f79('0x12f')](_0x7f79('0x130'),{'UserId':Number(_0x3be82c[_0x7f79('0x67')][_0x7f79('0x70')][_0x5bb39e]),'ChatWebsiteId':Number(_0x3be82c[_0x7f79('0x5c')]['id'])});}return _0x9d1854;});}})[_0x7f79('0x21')](respondWithResult(_0x3d3319,null))[_0x7f79('0x2c')](handleError(_0x3d3319,null));};exports['removeAgents']=function(_0x3cc759,_0x4441f6,_0x7c3bfe){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3cc759['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x4441f6,null))[_0x7f79('0x21')](function(_0x3095ae){if(_0x3095ae){return _0x3095ae[_0x7f79('0x131')](_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')])[_0x7f79('0x21')](function(){if(_[_0x7f79('0x132')](_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')])){for(var _0x65383=0x0;_0x65383<_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')][_0x7f79('0x50')];_0x65383+=0x1){socket['emit'](_0x7f79('0x133'),{'UserId':Number(_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')][_0x65383]),'ChatWebsiteId':Number(_0x3cc759[_0x7f79('0x5c')]['id'])});}}else{socket[_0x7f79('0x12f')](_0x7f79('0x133'),{'UserId':Number(_0x3cc759[_0x7f79('0x4a')]['ids']),'ChatWebsiteId':Number(_0x3cc759['params']['id'])});}});}})[_0x7f79('0x21')](respondWithStatusCode(_0x4441f6,null))['catch'](handleError(_0x4441f6,null));};exports[_0x7f79('0x134')]=function(_0x20eba9,_0x4f5a6c,_0x567865){var _0x460994={};var _0x38f6b3={};var _0x596625;var _0x3fcf1b;return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x20eba9[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x4f5a6c,null))['then'](function(_0x49e0b5){if(_0x49e0b5){_0x596625=_0x49e0b5;_0x38f6b3[_0x7f79('0x49')]=_['keys'](db[_0x7f79('0xc8')][_0x7f79('0x6d')]);_0x38f6b3[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x20eba9[_0x7f79('0x4a')]);_0x38f6b3[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x38f6b3['model'],_0x38f6b3[_0x7f79('0x4a')]);_0x460994['attributes']=_[_0x7f79('0x4d')](_0x38f6b3[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x460994[_0x7f79('0x4e')]=_0x460994['attributes']['length']?_0x460994[_0x7f79('0x4e')]:_0x38f6b3[_0x7f79('0x49')];_0x460994[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x20eba9['query'][_0x7f79('0x54')]);_0x460994[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_[_0x7f79('0x56')](_0x20eba9[_0x7f79('0x4a')],_0x38f6b3['filters']));if(_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x59')]){_0x460994['where']=_[_0x7f79('0x57')](_0x460994[_0x7f79('0x55')],{'$or':_[_0x7f79('0x44')](_0x460994[_0x7f79('0x4e')],function(_0x307826){var _0x571f84={};_0x571f84[_0x307826]={'$like':'%'+_0x20eba9['query'][_0x7f79('0x59')]+'%'};return _0x571f84;})});}_0x460994=_['merge']({},_0x460994,_0x20eba9[_0x7f79('0x5e')]);return _0x596625[_0x7f79('0x134')](_0x460994);}})[_0x7f79('0x21')](function(_0x4f9637){if(_0x4f9637){_0x3fcf1b=_0x4f9637['length'];if(!_0x20eba9['query']['hasOwnProperty']('nolimit')){_0x460994['limit']=qs[_0x7f79('0x34')](_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x460994[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x31')]);}return _0x596625[_0x7f79('0x134')](_0x460994);}})['then'](function(_0x439b2e){if(_0x439b2e){return _0x439b2e?{'count':_0x3fcf1b,'rows':_0x439b2e}:null;}})[_0x7f79('0x21')](respondWithResult(_0x4f5a6c,null))[_0x7f79('0x2c')](handleError(_0x4f5a6c,null));};
\ No newline at end of file
+var _0x7ed3=['UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','ChatOfflineMessage','originalname','mimetype','server','attachments','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','offlineMessageSubject','subjectOffline','toPairsIn','email','Chat','MailAccountId','NotifyMailAccount','notifyMail','files','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','fullname','internal','Tags','color','tag','Command','getSnippet','iftime\x20%s,%s','interval','indexOf','true','ONLINE','OFFLINE','timezone','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','some','server/files/chat/iframe.ejs','utf8','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','backgroundColor','addApplications','ChatApplication','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','addAgents','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','lodash','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','pick','where','merge','filter','options','ChatWebsite','includeAll','include','findAll','rows','show','params','intersection','length','find','create','body','user','userProfileId','autoAssociation','update','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','removeDispositions','ids','CannedAnswer','sort','removeAnswers','addLogo','addAvatar','agentAvatar','filename','addCustomerAvatar','customerAvatar','file','addSystemAvatar','systemAvatar','join','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','custom','isNil','existsSync','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','showCustomerAvatar','getSystemAvatar','notify','user-agent-parser','headers','user-agent','chat','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','from','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','CmList','Applications','List','applications','list','orderBy','priority','asc','account','Contacts','defaults','contact','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','referer','browser','version','format','unknown','device','vendor','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','autoclose','push','unmanaged','*,*,*,*','ChatMessage','AttachmentId'];(function(_0x7ec3e1,_0x39d2fa){var _0x43c23e=function(_0xf45445){while(--_0xf45445){_0x7ec3e1['push'](_0x7ec3e1['shift']());}};_0x43c23e(++_0x39d2fa);}(_0x7ed3,0x196));var _0x37ed=function(_0x56477e,_0x5e45dd){_0x56477e=_0x56477e-0x0;var _0x12fecc=_0x7ed3[_0x56477e];return _0x12fecc;};'use strict';var emlformat=require(_0x37ed('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x37ed('0x1'));var jsonpatch=require(_0x37ed('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x37ed('0x3'));var util=require(_0x37ed('0x4'));var path=require('path');var sox=require(_0x37ed('0x5'));var csv=require(_0x37ed('0x6'));var ejs=require(_0x37ed('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37ed('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x37ed('0x6'));var querystring=require(_0x37ed('0x9'));var Papa=require(_0x37ed('0xa'));var Redis=require('ioredis');var authService=require(_0x37ed('0xb'));var qs=require(_0x37ed('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x37ed('0xd'))(_0x37ed('0xe'));var utils=require(_0x37ed('0xf'));var config=require(_0x37ed('0x10'));var licenseUtil=require(_0x37ed('0x11'));var db=require(_0x37ed('0x12'))['db'];config[_0x37ed('0x13')]=_['defaults'](config[_0x37ed('0x13')],{'host':_0x37ed('0x14'),'port':0x18eb});var socket=require(_0x37ed('0x15'))(new Redis(config[_0x37ed('0x13')]));require(_0x37ed('0x16'))[_0x37ed('0x17')](socket);var jayson=require(_0x37ed('0x18'));var client=jayson['client'][_0x37ed('0x19')]({'port':0x232c});var client9002=jayson[_0x37ed('0x1a')][_0x37ed('0x19')]({'port':0x232a});var client9003=jayson[_0x37ed('0x1a')]['http']({'port':0x232b});var client9001=jayson[_0x37ed('0x1a')][_0x37ed('0x19')]({'port':0x2329});function respondWithRpcPromise(_0x5b07db,_0x54cda0,_0x109891,_0x94ae8a){return new BPromise(function(_0x1aeeea,_0x391835){var _0x3ab195=_0x94ae8a||client;return _0x3ab195[_0x37ed('0x1b')](_0x5b07db,_0x109891)[_0x37ed('0x1c')](function(_0x424608){logger[_0x37ed('0x1d')](_0x37ed('0x1e'),_0x54cda0,_0x37ed('0x1f'));logger[_0x37ed('0x20')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x54cda0,'request\x20sent',JSON[_0x37ed('0x21')](_0x424608));if(_0x424608['error']){if(_0x424608[_0x37ed('0x22')]['code']===0x1f4){logger[_0x37ed('0x22')](_0x37ed('0x1e'),_0x54cda0,_0x424608[_0x37ed('0x22')][_0x37ed('0x23')]);return _0x391835(_0x424608[_0x37ed('0x22')][_0x37ed('0x23')]);}logger[_0x37ed('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x54cda0,_0x424608['error']['message']);return _0x1aeeea(_0x424608[_0x37ed('0x22')][_0x37ed('0x23')]);}else{logger[_0x37ed('0x1d')](_0x37ed('0x1e'),_0x54cda0,_0x37ed('0x1f'));_0x1aeeea(_0x424608[_0x37ed('0x24')][_0x37ed('0x23')]);}})[_0x37ed('0x25')](function(_0xce41cb){logger['error'](_0x37ed('0x1e'),_0x54cda0,_0xce41cb);_0x391835(_0xce41cb);});});}function respondWithStatusCode(_0xb546de,_0x855d75){_0x855d75=_0x855d75||0xcc;return function(_0x497a21){if(_0x497a21){return _0xb546de[_0x37ed('0x26')](_0x855d75);}return _0xb546de[_0x37ed('0x27')](_0x855d75)[_0x37ed('0x28')]();};}function respondWithResult(_0x97dcb2,_0x1a48f0){_0x1a48f0=_0x1a48f0||0xc8;return function(_0x5180dd){if(_0x5180dd){return _0x97dcb2[_0x37ed('0x27')](_0x1a48f0)[_0x37ed('0x29')](_0x5180dd);}};}function respondWithFilteredResult(_0xe38a23,_0x246407){return function(_0x329a8a){if(_0x329a8a){var _0x2c00ef=typeof _0x246407[_0x37ed('0x2a')]===_0x37ed('0x2b')&&typeof _0x246407['limit']===_0x37ed('0x2b');var _0x3653eb=_0x329a8a[_0x37ed('0x2c')];var _0x4ff3ac=_0x2c00ef?0x0:_0x246407[_0x37ed('0x2a')];var _0x42487e=_0x2c00ef?_0x329a8a[_0x37ed('0x2c')]:_0x246407[_0x37ed('0x2a')]+_0x246407[_0x37ed('0x2d')];var _0x4137f1;if(_0x42487e>=_0x3653eb){_0x42487e=_0x3653eb;_0x4137f1=0xc8;}else{_0x4137f1=0xce;}_0xe38a23[_0x37ed('0x27')](_0x4137f1);return _0xe38a23[_0x37ed('0x2e')](_0x37ed('0x2f'),_0x4ff3ac+'-'+_0x42487e+'/'+_0x3653eb)['json'](_0x329a8a);}return null;};}function patchUpdates(_0x94977b){return function(_0x497f61){try{jsonpatch[_0x37ed('0x30')](_0x497f61,_0x94977b,!![]);}catch(_0x31e297){return BPromise[_0x37ed('0x31')](_0x31e297);}return _0x497f61[_0x37ed('0x32')]();};}function saveUpdates(_0x4c5406,_0x1fc751){return function(_0x285bd9){if(_0x285bd9){return _0x285bd9['update'](_0x4c5406)['then'](function(_0x2c47f3){return _0x2c47f3;});}return null;};}function removeEntity(_0x3cec02,_0x351e60){return function(_0x1ee0c6){if(_0x1ee0c6){return _0x1ee0c6[_0x37ed('0x33')]()[_0x37ed('0x1c')](function(){var _0x3ad8f2=_0x1ee0c6[_0x37ed('0x34')]({'plain':!![]});var _0x1f2d07=_0x37ed('0x35');return db[_0x37ed('0x36')][_0x37ed('0x33')]({'where':{'type':_0x1f2d07,'resourceId':_0x3ad8f2['id']}})[_0x37ed('0x1c')](function(){return _0x1ee0c6;});})[_0x37ed('0x1c')](function(){_0x3cec02[_0x37ed('0x27')](0xcc)[_0x37ed('0x28')]();});}};}function handleEntityNotFound(_0x3bcf4d,_0xd8c965){return function(_0x1d71f8){if(!_0x1d71f8){_0x3bcf4d['sendStatus'](0x194);}return _0x1d71f8;};}function handleError(_0x1e10e5,_0x25dbdb){_0x25dbdb=_0x25dbdb||0x1f4;return function(_0x3553bc){logger[_0x37ed('0x22')](_0x3553bc[_0x37ed('0x37')]);if(_0x3553bc['name']){delete _0x3553bc[_0x37ed('0x38')];}_0x1e10e5['status'](_0x25dbdb)[_0x37ed('0x39')](_0x3553bc);};}exports[_0x37ed('0x3a')]=function(_0x1e2612,_0x1d1b56){var _0x4634f5={'include':[{'model':db[_0x37ed('0x3b')],'as':_0x37ed('0x3c')}]},_0x51a51e={},_0x36ea52={'count':0x0,'rows':[]};var _0x2fc726=_[_0x37ed('0x3d')](db['ChatWebsite'][_0x37ed('0x3e')],function(_0x16980a){return{'name':_0x16980a[_0x37ed('0x3f')],'type':_0x16980a[_0x37ed('0x40')][_0x37ed('0x41')]};});_0x51a51e[_0x37ed('0x42')]=_[_0x37ed('0x3d')](_0x2fc726,_0x37ed('0x38'));_0x51a51e[_0x37ed('0x43')]=_[_0x37ed('0x44')](_0x1e2612[_0x37ed('0x43')]);_0x51a51e[_0x37ed('0x45')]=_['intersection'](_0x51a51e['model'],_0x51a51e[_0x37ed('0x43')]);_0x4634f5['attributes']=_['intersection'](_0x51a51e[_0x37ed('0x42')],qs[_0x37ed('0x46')](_0x1e2612[_0x37ed('0x43')][_0x37ed('0x46')]));_0x4634f5[_0x37ed('0x47')]=_0x4634f5[_0x37ed('0x47')]['length']?_0x4634f5[_0x37ed('0x47')]:_0x51a51e[_0x37ed('0x42')];if(!_0x1e2612[_0x37ed('0x43')][_0x37ed('0x48')](_0x37ed('0x49'))){_0x4634f5[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x1e2612[_0x37ed('0x43')][_0x37ed('0x2d')]);_0x4634f5[_0x37ed('0x2a')]=qs['offset'](_0x1e2612[_0x37ed('0x43')][_0x37ed('0x2a')]);}_0x4634f5[_0x37ed('0x4a')]=qs['sort'](_0x1e2612[_0x37ed('0x43')]['sort']);_0x4634f5['where']=qs[_0x37ed('0x45')](_[_0x37ed('0x4b')](_0x1e2612['query'],_0x51a51e['filters']),_0x2fc726);if(_0x1e2612[_0x37ed('0x43')]['filter']){_0x4634f5[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0x4634f5[_0x37ed('0x4c')],{'$or':_[_0x37ed('0x3d')](_0x2fc726,function(_0x598471){if(_0x598471[_0x37ed('0x40')]!=='VIRTUAL'){var _0x22c678={};_0x22c678[_0x598471[_0x37ed('0x38')]]={'$like':'%'+_0x1e2612[_0x37ed('0x43')][_0x37ed('0x4e')]+'%'};return _0x22c678;}})});}_0x4634f5=_[_0x37ed('0x4d')]({},_0x4634f5,_0x1e2612[_0x37ed('0x4f')]);var _0x439bad={'where':_0x4634f5[_0x37ed('0x4c')]};return db[_0x37ed('0x50')][_0x37ed('0x2c')](_0x439bad)[_0x37ed('0x1c')](function(_0x5babfd){_0x36ea52[_0x37ed('0x2c')]=_0x5babfd;if(_0x1e2612[_0x37ed('0x43')][_0x37ed('0x51')]){_0x4634f5[_0x37ed('0x52')]=[{'all':!![]}];}return db[_0x37ed('0x50')][_0x37ed('0x53')](_0x4634f5);})[_0x37ed('0x1c')](function(_0x41661b){_0x36ea52[_0x37ed('0x54')]=_0x41661b;return _0x36ea52;})[_0x37ed('0x1c')](respondWithFilteredResult(_0x1d1b56,_0x4634f5))[_0x37ed('0x25')](handleError(_0x1d1b56,null));};exports[_0x37ed('0x55')]=function(_0x1ca5fd,_0x206aed){var _0x18c0af={'raw':![],'where':{'id':_0x1ca5fd[_0x37ed('0x56')]['id']},'include':[{'model':db['Pause'],'as':_0x37ed('0x3c')}]},_0x13a8b3={};_0x13a8b3[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0x50')][_0x37ed('0x3e')]);_0x13a8b3[_0x37ed('0x43')]=_[_0x37ed('0x44')](_0x1ca5fd['query']);_0x13a8b3['filters']=_[_0x37ed('0x57')](_0x13a8b3['model'],_0x13a8b3['query']);_0x18c0af[_0x37ed('0x47')]=_['intersection'](_0x13a8b3['model'],qs[_0x37ed('0x46')](_0x1ca5fd[_0x37ed('0x43')]['fields']));_0x18c0af[_0x37ed('0x47')]=_0x18c0af[_0x37ed('0x47')][_0x37ed('0x58')]?_0x18c0af[_0x37ed('0x47')]:_0x13a8b3[_0x37ed('0x42')];if(_0x1ca5fd[_0x37ed('0x43')][_0x37ed('0x51')]){_0x18c0af[_0x37ed('0x52')]=[{'all':!![]}];}_0x18c0af=_[_0x37ed('0x4d')]({},_0x18c0af,_0x1ca5fd['options']);return db[_0x37ed('0x50')][_0x37ed('0x59')](_0x18c0af)[_0x37ed('0x1c')](handleEntityNotFound(_0x206aed,null))[_0x37ed('0x1c')](respondWithResult(_0x206aed,null))['catch'](handleError(_0x206aed,null));};exports[_0x37ed('0x5a')]=function(_0x47ecfa,_0x59c4ec){return db[_0x37ed('0x50')][_0x37ed('0x5a')](_0x47ecfa[_0x37ed('0x5b')],{})[_0x37ed('0x1c')](function(_0x30dcd8){var _0x414248=_0x47ecfa[_0x37ed('0x5c')][_0x37ed('0x34')]({'plain':!![]});if(!_0x414248)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x414248['role']===_0x37ed('0x5c')){var _0x26a60a=_0x30dcd8[_0x37ed('0x34')]({'plain':!![]});var _0x361d67='ChatWebsites';return db['UserProfileSection'][_0x37ed('0x59')]({'where':{'name':_0x361d67,'userProfileId':_0x414248[_0x37ed('0x5d')]},'raw':!![]})['then'](function(_0x1f7699){if(_0x1f7699&&_0x1f7699[_0x37ed('0x5e')]===0x0){return db[_0x37ed('0x36')]['create']({'name':_0x26a60a[_0x37ed('0x38')],'resourceId':_0x26a60a['id'],'type':_0x1f7699[_0x37ed('0x38')],'sectionId':_0x1f7699['id']},{})[_0x37ed('0x1c')](function(){return _0x30dcd8;});}else{return _0x30dcd8;}})[_0x37ed('0x25')](function(_0x60951a){logger[_0x37ed('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x60951a);throw _0x60951a;});}return _0x30dcd8;})[_0x37ed('0x1c')](respondWithResult(_0x59c4ec,0xc9))[_0x37ed('0x25')](handleError(_0x59c4ec,null));};exports[_0x37ed('0x5f')]=function(_0x5de0e8,_0x3c444e){if(_0x5de0e8['body']['id']){delete _0x5de0e8['body']['id'];}return db[_0x37ed('0x50')]['find']({'where':{'id':_0x5de0e8['params']['id']},'include':[{'model':db[_0x37ed('0x3b')],'as':_0x37ed('0x3c')}]})[_0x37ed('0x1c')](handleEntityNotFound(_0x3c444e,null))[_0x37ed('0x1c')](saveUpdates(_0x5de0e8['body'],null))[_0x37ed('0x1c')](respondWithResult(_0x3c444e,null))[_0x37ed('0x25')](handleError(_0x3c444e,null));};exports[_0x37ed('0x33')]=function(_0x33ad55,_0x75cc65){return db['ChatWebsite']['find']({'where':{'id':_0x33ad55['params']['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x75cc65,null))[_0x37ed('0x1c')](removeEntity(_0x75cc65,null))[_0x37ed('0x25')](handleError(_0x75cc65,null));};exports[_0x37ed('0x60')]=function(_0x15fc7a,_0x15e6f7){return db[_0x37ed('0x50')][_0x37ed('0x60')]()[_0x37ed('0x1c')](respondWithResult(_0x15e6f7,null))[_0x37ed('0x25')](handleError(_0x15e6f7,null));};exports[_0x37ed('0x61')]=function(_0x2a06eb,_0x39e929,_0x1f3fdc){if(_0x2a06eb[_0x37ed('0x5b')]['id']){delete _0x2a06eb[_0x37ed('0x5b')]['id'];}return db[_0x37ed('0x50')][_0x37ed('0x59')]({'where':{'id':_0x2a06eb[_0x37ed('0x56')]['id']}})['then'](handleEntityNotFound(_0x39e929,null))[_0x37ed('0x1c')](function(_0x577f63){if(_0x577f63){_0x2a06eb[_0x37ed('0x5b')][_0x37ed('0x62')]=_0x577f63['id'];return db[_0x37ed('0x63')]['create'](_0x2a06eb[_0x37ed('0x5b')]);}})[_0x37ed('0x1c')](respondWithResult(_0x39e929,null))[_0x37ed('0x25')](handleError(_0x39e929,null));};exports[_0x37ed('0x64')]=function(_0x563eaf,_0x4f691f,_0x1141c1){var _0x37c2f0={'raw':![],'where':{}};var _0x55fb20={};var _0x463b90={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x37ed('0x65')]({'where':{'id':_0x563eaf[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x4f691f,null))[_0x37ed('0x1c')](function(_0x1111b0){if(_0x1111b0){_0x55fb20['model']=_[_0x37ed('0x44')](db[_0x37ed('0x63')][_0x37ed('0x3e')]);_0x55fb20[_0x37ed('0x43')]=_[_0x37ed('0x44')](_0x563eaf[_0x37ed('0x43')]);_0x55fb20[_0x37ed('0x45')]=_[_0x37ed('0x57')](_0x55fb20['model'],_0x55fb20[_0x37ed('0x43')]);_0x37c2f0['attributes']=_[_0x37ed('0x57')](_0x55fb20[_0x37ed('0x42')],qs[_0x37ed('0x46')](_0x563eaf['query']['fields']));_0x37c2f0['attributes']=_0x37c2f0[_0x37ed('0x47')]['length']?_0x37c2f0[_0x37ed('0x47')]:_0x55fb20['model'];if(!_0x563eaf['query']['hasOwnProperty'](_0x37ed('0x49'))){_0x37c2f0[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x563eaf[_0x37ed('0x43')][_0x37ed('0x2d')]);_0x37c2f0['offset']=qs[_0x37ed('0x2a')](_0x563eaf[_0x37ed('0x43')][_0x37ed('0x2a')]);}_0x37c2f0[_0x37ed('0x4a')]=qs['sort'](_0x563eaf[_0x37ed('0x43')]['sort']);_0x37c2f0[_0x37ed('0x4c')]=qs['filters'](_['pick'](_0x563eaf[_0x37ed('0x43')],_0x55fb20[_0x37ed('0x45')]));_0x37c2f0[_0x37ed('0x4c')]['ChatWebsiteId']=_0x1111b0['id'];if(_0x563eaf[_0x37ed('0x43')][_0x37ed('0x4e')]){_0x37c2f0[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0x37c2f0['where'],{'$or':_[_0x37ed('0x3d')](_0x37c2f0[_0x37ed('0x47')],function(_0x6b00c6){var _0x281722={};_0x281722[_0x6b00c6]={'$like':'%'+_0x563eaf[_0x37ed('0x43')][_0x37ed('0x4e')]+'%'};return _0x281722;})});}_0x37c2f0=_[_0x37ed('0x4d')]({},_0x37c2f0,_0x563eaf[_0x37ed('0x4f')]);return db[_0x37ed('0x63')][_0x37ed('0x2c')]({'where':_0x37c2f0['where']})[_0x37ed('0x1c')](function(_0x323f06){_0x463b90['count']=_0x323f06;if(_0x563eaf[_0x37ed('0x43')][_0x37ed('0x51')]){_0x37c2f0[_0x37ed('0x52')]=[{'all':!![]}];}return db[_0x37ed('0x63')]['findAll'](_0x37c2f0);})['then'](function(_0xbe50d3){_0x463b90[_0x37ed('0x54')]=_0xbe50d3;return _0x463b90;});}})[_0x37ed('0x1c')](respondWithFilteredResult(_0x4f691f,_0x37c2f0))[_0x37ed('0x25')](handleError(_0x4f691f,null));};exports[_0x37ed('0x66')]=function(_0xb99a60,_0xe58088,_0x5ead61){return db[_0x37ed('0x50')][_0x37ed('0x59')]({'where':{'id':_0xb99a60[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0xe58088,null))[_0x37ed('0x1c')](function(_0x3a4a7c){if(_0x3a4a7c){return _0x3a4a7c[_0x37ed('0x66')](_0xb99a60[_0x37ed('0x43')][_0x37ed('0x67')]);}})[_0x37ed('0x1c')](respondWithStatusCode(_0xe58088,null))[_0x37ed('0x25')](handleError(_0xe58088,null));};exports['addAnswer']=function(_0x257a69,_0x5297d3,_0x2f1a91){if(_0x257a69['body']['id']){delete _0x257a69[_0x37ed('0x5b')]['id'];}return db[_0x37ed('0x50')]['find']({'where':{'id':_0x257a69[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x5297d3,null))[_0x37ed('0x1c')](function(_0x31043d){if(_0x31043d){_0x257a69[_0x37ed('0x5b')][_0x37ed('0x62')]=_0x31043d['id'];return db['CannedAnswer'][_0x37ed('0x5a')](_0x257a69[_0x37ed('0x5b')]);}})[_0x37ed('0x1c')](respondWithResult(_0x5297d3,null))['catch'](handleError(_0x5297d3,null));};exports['getAnswers']=function(_0x2707e7,_0x19fd87,_0x4c10a3){var _0x5cbff0={'raw':![],'where':{}};var _0x66cf0b={};var _0x3c3305={'count':0x0,'rows':[]};return db[_0x37ed('0x50')][_0x37ed('0x65')]({'where':{'id':_0x2707e7[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x19fd87,null))['then'](function(_0x46f6d0){if(_0x46f6d0){_0x66cf0b[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0x68')]['rawAttributes']);_0x66cf0b['query']=_[_0x37ed('0x44')](_0x2707e7[_0x37ed('0x43')]);_0x66cf0b['filters']=_[_0x37ed('0x57')](_0x66cf0b['model'],_0x66cf0b[_0x37ed('0x43')]);_0x5cbff0[_0x37ed('0x47')]=_[_0x37ed('0x57')](_0x66cf0b[_0x37ed('0x42')],qs['fields'](_0x2707e7[_0x37ed('0x43')][_0x37ed('0x46')]));_0x5cbff0[_0x37ed('0x47')]=_0x5cbff0[_0x37ed('0x47')]['length']?_0x5cbff0['attributes']:_0x66cf0b[_0x37ed('0x42')];if(!_0x2707e7[_0x37ed('0x43')][_0x37ed('0x48')](_0x37ed('0x49'))){_0x5cbff0[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x2707e7[_0x37ed('0x43')][_0x37ed('0x2d')]);_0x5cbff0[_0x37ed('0x2a')]=qs[_0x37ed('0x2a')](_0x2707e7[_0x37ed('0x43')][_0x37ed('0x2a')]);}_0x5cbff0[_0x37ed('0x4a')]=qs[_0x37ed('0x69')](_0x2707e7[_0x37ed('0x43')]['sort']);_0x5cbff0[_0x37ed('0x4c')]=qs[_0x37ed('0x45')](_[_0x37ed('0x4b')](_0x2707e7[_0x37ed('0x43')],_0x66cf0b[_0x37ed('0x45')]));_0x5cbff0[_0x37ed('0x4c')]['ChatWebsiteId']=_0x46f6d0['id'];if(_0x2707e7['query'][_0x37ed('0x4e')]){_0x5cbff0[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0x5cbff0[_0x37ed('0x4c')],{'$or':_['map'](_0x5cbff0[_0x37ed('0x47')],function(_0x1393b4){var _0xdafb75={};_0xdafb75[_0x1393b4]={'$like':'%'+_0x2707e7[_0x37ed('0x43')][_0x37ed('0x4e')]+'%'};return _0xdafb75;})});}_0x5cbff0=_[_0x37ed('0x4d')]({},_0x5cbff0,_0x2707e7[_0x37ed('0x4f')]);return db['CannedAnswer'][_0x37ed('0x2c')]({'where':_0x5cbff0[_0x37ed('0x4c')]})[_0x37ed('0x1c')](function(_0x1a8afe){_0x3c3305['count']=_0x1a8afe;if(_0x2707e7[_0x37ed('0x43')][_0x37ed('0x51')]){_0x5cbff0['include']=[{'all':!![]}];}return db[_0x37ed('0x68')][_0x37ed('0x53')](_0x5cbff0);})[_0x37ed('0x1c')](function(_0x49e707){_0x3c3305[_0x37ed('0x54')]=_0x49e707;return _0x3c3305;});}})[_0x37ed('0x1c')](respondWithFilteredResult(_0x19fd87,_0x5cbff0))[_0x37ed('0x25')](handleError(_0x19fd87,null));};exports['removeAnswers']=function(_0x59ac22,_0x2c7779,_0x480364){return db[_0x37ed('0x50')]['find']({'where':{'id':_0x59ac22[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x2c7779,null))['then'](function(_0x3d13c4){if(_0x3d13c4){return _0x3d13c4[_0x37ed('0x6a')](_0x59ac22['query'][_0x37ed('0x67')]);}})['then'](respondWithStatusCode(_0x2c7779,null))[_0x37ed('0x25')](handleError(_0x2c7779,null));};exports[_0x37ed('0x6b')]=function(_0x1cde58,_0x2f58c2,_0x1d81b1){_0x1cde58[_0x37ed('0x5b')]['sitepic']=_0x1cde58['file']['filename'];return db['ChatWebsite'][_0x37ed('0x59')]({'where':{'id':_0x1cde58[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x2f58c2,null))[_0x37ed('0x1c')](saveUpdates(_0x1cde58[_0x37ed('0x5b')],null))[_0x37ed('0x1c')](respondWithResult(_0x2f58c2,null))[_0x37ed('0x25')](handleError(_0x2f58c2,null));};exports[_0x37ed('0x6c')]=function(_0xf44eaa,_0x4d538f,_0x2043bc){_0xf44eaa[_0x37ed('0x5b')][_0x37ed('0x6d')]=_0xf44eaa['file'][_0x37ed('0x6e')];return db[_0x37ed('0x50')][_0x37ed('0x59')]({'where':{'id':_0xf44eaa['params']['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x4d538f,null))[_0x37ed('0x1c')](saveUpdates(_0xf44eaa[_0x37ed('0x5b')],null))[_0x37ed('0x1c')](respondWithResult(_0x4d538f,null))['catch'](handleError(_0x4d538f,null));};exports[_0x37ed('0x6f')]=function(_0x5ec362,_0x4a7656,_0x2267b){_0x5ec362['body'][_0x37ed('0x70')]=_0x5ec362[_0x37ed('0x71')][_0x37ed('0x6e')];return db[_0x37ed('0x50')][_0x37ed('0x59')]({'where':{'id':_0x5ec362[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x4a7656,null))[_0x37ed('0x1c')](saveUpdates(_0x5ec362[_0x37ed('0x5b')],null))['then'](respondWithResult(_0x4a7656,null))['catch'](handleError(_0x4a7656,null));};exports[_0x37ed('0x72')]=function(_0x2999c3,_0x1f840a,_0x2c6614){_0x2999c3[_0x37ed('0x5b')][_0x37ed('0x73')]=_0x2999c3['file']['filename'];return db[_0x37ed('0x50')][_0x37ed('0x59')]({'where':{'id':_0x2999c3[_0x37ed('0x56')]['id']}})['then'](handleEntityNotFound(_0x1f840a,null))[_0x37ed('0x1c')](saveUpdates(_0x2999c3[_0x37ed('0x5b')],null))['then'](respondWithResult(_0x1f840a,null))[_0x37ed('0x25')](handleError(_0x1f840a,null));};exports['getLogo']=function(_0x252a5b,_0x4dbdb7,_0x78cc65){var _0x1e6b73=path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0x76'));var _0x3f0212={'where':{'id':_0x252a5b[_0x37ed('0x56')]['id']},'attributes':['id',_0x37ed('0x77')],'raw':!![]};var _0x42c589=![];return require(_0x37ed('0x11'))[_0x37ed('0x78')]()[_0x37ed('0x1c')](function(_0x5f5aee){if(_0x5f5aee){_0x42c589=_0x5f5aee[_0x37ed('0x79')];}})['then'](function(){return db['ChatWebsite'][_0x37ed('0x59')](_0x3f0212);})[_0x37ed('0x1c')](handleEntityNotFound(_0x4dbdb7,null))[_0x37ed('0x1c')](function(_0x239879){if(_0x239879){if(!_[_0x37ed('0x7a')](_0x239879[_0x37ed('0x77')])){if(fs[_0x37ed('0x7b')](path[_0x37ed('0x74')](config[_0x37ed('0x75')],'server/files/images/logos/',_0x239879[_0x37ed('0x77')]))&&_0x42c589){_0x1e6b73=path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0x7c'),_0x239879[_0x37ed('0x77')]);}}return _0x4dbdb7[_0x37ed('0x7d')](_0x1e6b73);}})[_0x37ed('0x25')](handleError(_0x4dbdb7,null));};exports['getAvatar']=function(_0x465253,_0x3dafa0,_0x1bb524){var _0x4d2db5=path['join'](config[_0x37ed('0x75')],_0x37ed('0x7e'));var _0x49eac8={'where':{'id':_0x465253[_0x37ed('0x56')]['id']},'attributes':['id',_0x37ed('0x6d')],'raw':!![]};return db['ChatWebsite'][_0x37ed('0x59')](_0x49eac8)[_0x37ed('0x1c')](handleEntityNotFound(_0x3dafa0,null))[_0x37ed('0x1c')](function(_0x4204a5){if(_0x4204a5){if(!_['isNil'](_0x4204a5['agentAvatar'])){if(fs['existsSync'](path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0x7f'),_0x4204a5[_0x37ed('0x6d')]))){_0x4d2db5=path['join'](config['root'],_0x37ed('0x7f'),_0x4204a5['agentAvatar']);}}return _0x3dafa0[_0x37ed('0x7d')](_0x4d2db5);}})[_0x37ed('0x25')](handleError(_0x3dafa0,null));};exports['getCustomerAvatar']=function(_0x2a8e3d,_0x376818,_0x3d38c6){var _0x2d76fd=path[_0x37ed('0x74')](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x50a83d={'where':{'id':_0x2a8e3d[_0x37ed('0x56')]['id']},'attributes':['id',_0x37ed('0x70'),_0x37ed('0x80')],'raw':!![]};return db[_0x37ed('0x50')][_0x37ed('0x59')](_0x50a83d)[_0x37ed('0x1c')](handleEntityNotFound(_0x376818,null))[_0x37ed('0x1c')](function(_0x1ab851){if(_0x1ab851){if(!_[_0x37ed('0x7a')](_0x1ab851[_0x37ed('0x70')])){if(fs[_0x37ed('0x7b')](path[_0x37ed('0x74')](config['root'],_0x37ed('0x7f'),_0x1ab851['customerAvatar']))&&_0x1ab851[_0x37ed('0x80')]){_0x2d76fd=path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0x7f'),_0x1ab851[_0x37ed('0x70')]);}}return _0x376818['download'](_0x2d76fd);}})['catch'](handleError(_0x376818,null));};exports[_0x37ed('0x81')]=function(_0x4c2e96,_0x29e533,_0x1a6ef6){var _0x590fb4=path[_0x37ed('0x74')](config[_0x37ed('0x75')],'server/files/images/avatars/system_avatar.png');var _0x4f21e8={'where':{'id':_0x4c2e96[_0x37ed('0x56')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x37ed('0x50')][_0x37ed('0x59')](_0x4f21e8)['then'](handleEntityNotFound(_0x29e533,null))[_0x37ed('0x1c')](function(_0x4567f8){if(_0x4567f8){if(!_[_0x37ed('0x7a')](_0x4567f8[_0x37ed('0x73')])){if(fs[_0x37ed('0x7b')](path['join'](config[_0x37ed('0x75')],'server/files/images/avatars/',_0x4567f8[_0x37ed('0x73')]))){_0x590fb4=path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0x7f'),_0x4567f8['systemAvatar']);}}return _0x29e533[_0x37ed('0x7d')](_0x590fb4);}})['catch'](handleError(_0x29e533,null));};exports[_0x37ed('0x82')]=function(_0x63929b,_0x531831,_0x3ed902){var _0xb480c4=require(_0x37ed('0x83'));var _0x33a399=new _0xb480c4();var _0x26779=_0x33a399['setUA'](_0x63929b[_0x37ed('0x84')][_0x37ed('0x85')])['getResult']();var _0x258afc={'body':_0x63929b[_0x37ed('0x5b')],'channel':_0x37ed('0x86')};var _0x1f8cd4=[];var _0x58a93d=[];var _0x3154d2={};var _0xf05aaa=![];return db[_0x37ed('0x87')]['describe']()[_0x37ed('0x1c')](function(_0x5412af){if(!_0x5412af){throw new db[(_0x37ed('0x88'))][(_0x37ed('0x89'))]('no\x20available\x20attributes');}_0x1f8cd4=_[_0x37ed('0x8a')](_[_0x37ed('0x44')](_0x5412af),[_0x37ed('0x8b'),_0x37ed('0x8c')]);_0x58a93d=_[_0x37ed('0x8a')](_['keys'](_0x5412af),[_0x37ed('0x8b'),_0x37ed('0x8c'),_0x37ed('0x8d'),'ListId']);if(_0x63929b[_0x37ed('0x5b')]['id']){delete _0x63929b['body']['id'];}if(_[_0x37ed('0x7a')](_0x63929b[_0x37ed('0x5b')][_0x37ed('0x8e')])){throw new db[(_0x37ed('0x88'))]['ValidationError'](_0x37ed('0x8f'));}if(_[_0x37ed('0x7a')](_0x63929b[_0x37ed('0x5b')][_0x37ed('0x5b')])||_0x63929b[_0x37ed('0x5b')][_0x37ed('0x5b')]===''){throw new db[(_0x37ed('0x88'))]['ValidationError'](_0x37ed('0x90'));}if(_['isNil'](_0x63929b['body']['mapKey'])){throw new db[(_0x37ed('0x88'))][(_0x37ed('0x89'))](_0x37ed('0x91')+_0x58a93d);}if(!_[_0x37ed('0x92')](_0x58a93d,_0x63929b[_0x37ed('0x5b')][_0x37ed('0x93')])){throw new db[(_0x37ed('0x88'))]['ValidationError'](_0x37ed('0x94')+_0x58a93d);}_0x3154d2[_0x63929b['body'][_0x37ed('0x93')]]=_0x63929b[_0x37ed('0x5b')][_0x37ed('0x8e')];})['then'](function(){return db['ChatWebsite'][_0x37ed('0x59')]({'where':{'id':_0x63929b[_0x37ed('0x56')]['id']},'include':[{'model':db[_0x37ed('0x95')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3154d2,'limit':0x1,'order':[[_0x37ed('0x8c'),'DESC']]}]},{'model':db['ChatApplication'],'as':_0x37ed('0x96')}]});})['then'](handleEntityNotFound(_0x531831,null))[_0x37ed('0x1c')](function(_0x276bc3){if(_0x276bc3&&_0x276bc3[_0x37ed('0x97')]){_0x258afc['account']=_0x276bc3;_0x258afc[_0x37ed('0x98')]=_0x276bc3[_0x37ed('0x96')];_0x258afc[_0x37ed('0x99')]=_0x276bc3[_0x37ed('0x97')];_0x258afc[_0x37ed('0x98')]=_[_0x37ed('0x9a')](_0x258afc[_0x37ed('0x98')],[_0x37ed('0x9b')],[_0x37ed('0x9c')]);if(_0x258afc['account']['Applications']){delete _0x258afc[_0x37ed('0x9d')][_0x37ed('0x96')];}if(_0x258afc[_0x37ed('0x9d')][_0x37ed('0x97')]&&_0x258afc['account']['List'][_0x37ed('0x9e')][_0x37ed('0x58')]){return _0x258afc[_0x37ed('0x9d')][_0x37ed('0x97')][_0x37ed('0x9e')][0x0];}var _0x48e2a5=_[_0x37ed('0x9f')](_0x63929b['body'],{'firstName':_0x63929b[_0x37ed('0x5b')]['from'],'ListId':_0x276bc3['ListId']});_0x48e2a5[_0x63929b[_0x37ed('0x5b')][_0x37ed('0x93')]]=_0x63929b['body'][_0x37ed('0x8e')];return db['CmContact'][_0x37ed('0x5a')](_0x48e2a5,{'fields':_0x1f8cd4,'raw':!![]});}})[_0x37ed('0x1c')](handleEntityNotFound(_0x531831,null))[_0x37ed('0x1c')](function(_0x3682d6){_0x258afc[_0x37ed('0xa0')]=_0x3682d6;var _0x5d7ab3=_0x63929b['body']['customerIp'];if(_0x63929b['headers'][_0x37ed('0xa1')]){_0x5d7ab3=_0x63929b[_0x37ed('0x84')][_0x37ed('0xa1')];}else if(_0x63929b[_0x37ed('0x84')][_0x37ed('0xa2')]){_0x5d7ab3=_['first'](_0x63929b[_0x37ed('0x84')]['x-forwarded-for'][_0x37ed('0xa3')](','));}if(_0x3682d6){var _0x37f745={'ContactId':_0x3682d6['id'],'ChatWebsiteId':_0x63929b[_0x37ed('0x56')]['id'],'from':(_0x3682d6[_0x37ed('0xa4')]||'')+'\x20'+(_0x3682d6[_0x37ed('0xa5')]||''),'customerIp':_0x5d7ab3,'customerPort':_0x63929b[_0x37ed('0x84')]['x-real-port']?_0x63929b[_0x37ed('0x84')][_0x37ed('0xa6')]:null,'referer':_0x63929b[_0x37ed('0x5b')][_0x37ed('0xa7')],'browserName':_0x26779[_0x37ed('0xa8')][_0x37ed('0x38')]&&_0x26779[_0x37ed('0xa8')][_0x37ed('0xa9')]?util[_0x37ed('0xaa')]('%s\x20%s',_0x26779[_0x37ed('0xa8')][_0x37ed('0x38')],_0x26779[_0x37ed('0xa8')][_0x37ed('0xa9')]):_0x37ed('0xab'),'browserVersion':_0x26779[_0x37ed('0xa8')]['version']||_0x37ed('0xab'),'osName':util[_0x37ed('0xaa')]('%s\x20%s',_0x26779['os']['name'],_0x26779['os'][_0x37ed('0xa9')]),'osVersion':_0x26779['os'][_0x37ed('0xa9')],'deviceModel':_0x26779['device']['model']&&_0x26779[_0x37ed('0xac')]['vendor']?util[_0x37ed('0xaa')]('%s\x20%s\x20%s',_0x26779['device']['model'],_0x26779[_0x37ed('0xac')][_0x37ed('0xad')],_0x26779['device']['type']):null,'deviceVendor':_0x26779['device'][_0x37ed('0xad')],'deviceType':_0x26779[_0x37ed('0xac')][_0x37ed('0x40')],'formData':JSON['stringify'](_0x63929b[_0x37ed('0x5b')])};var _0x8c8e4f={'ChatWebsiteId':_0x63929b[_0x37ed('0x56')]['id'],'closed':![]};if(_0x63929b[_0x37ed('0x5b')]['threadId']){_0x8c8e4f['threadId']=_0x63929b[_0x37ed('0x5b')]['threadId'];return db['ChatInteraction'][_0x37ed('0x59')]({'where':_0x8c8e4f})[_0x37ed('0x1c')](function(_0x604fb8){if(_0x604fb8){return[_0x604fb8,![]];}_0x37f745[_0x37ed('0xae')]=_0x63929b[_0x37ed('0x5b')]['threadId'];_0x37f745[_0x37ed('0xaf')]=_0x63929b[_0x37ed('0x5b')][_0x37ed('0xaf')];return db[_0x37ed('0xb0')]['create'](_0x37f745)['then'](function(_0x193a8d){return[_0x193a8d,!![]];});});}_0x8c8e4f[_0x37ed('0xb1')]=_0x3682d6['id'];if(_0x63929b[_0x37ed('0x5b')][_0x37ed('0xb2')]&&_0x63929b[_0x37ed('0x5b')][_0x37ed('0xb2')]['id']){_0x8c8e4f['id']=_0x63929b[_0x37ed('0x5b')][_0x37ed('0xb2')]['id'];return db[_0x37ed('0xb0')][_0x37ed('0x59')]({'where':_0x8c8e4f})[_0x37ed('0x1c')](function(_0x2922f9){if(_0x2922f9){return[_0x2922f9,![]];}return db['ChatInteraction'][_0x37ed('0x5a')](_0x37f745)['then'](function(_0x166638){return[_0x166638,!![]];});});}return db[_0x37ed('0xb0')][_0x37ed('0x5a')](_0x37f745)[_0x37ed('0x1c')](function(_0x4c1fc2){return[_0x4c1fc2,!![]];});}})[_0x37ed('0xb3')](function(_0x32009d,_0x1cb918){if(_0x32009d){_0xf05aaa=_0x1cb918;if(!_0x1cb918){var _0x1cd361={'from':(_0x258afc['contact'][_0x37ed('0xa4')]||'')+'\x20'+(_0x258afc['contact'][_0x37ed('0xa5')]||'')};if(_0x63929b[_0x37ed('0x5b')][_0x37ed('0xae')]&&_0x63929b['body']['messageId']&&_0x63929b[_0x37ed('0x5b')][_0x37ed('0xae')]!=_0x63929b[_0x37ed('0x5b')][_0x37ed('0xb4')]){_0x1cd361[_0x37ed('0xae')]=_0x63929b[_0x37ed('0x5b')]['messageId'];}return _0x32009d[_0x37ed('0x5f')](_0x1cd361);}else{return _0x32009d;}}})[_0x37ed('0x1c')](function(_0x1ab872){_0x258afc[_0x37ed('0xb2')]=_0x1ab872['get']({'plain':!![]});_0x258afc[_0x37ed('0xb2')][_0x37ed('0xb5')]=_0xf05aaa;if(_0x258afc[_0x37ed('0xb2')][_0x37ed('0xb5')]){if(_0x258afc['account'][_0x37ed('0xb6')]){_0x258afc['applications'][_0x37ed('0xb7')]({'id':0x0,'priority':_0x258afc['applications'][_0x37ed('0x58')]+0x1,'app':'close','appdata':_0x37ed('0xb8'),'interval':_0x37ed('0xb9')});}}return db[_0x37ed('0xba')][_0x37ed('0x5a')]({'body':_0x63929b['body'][_0x37ed('0x5b')],'ChatWebsiteId':_0x63929b[_0x37ed('0x56')]['id'],'ChatInteractionId':_0x1ab872['id'],'direction':'in','ContactId':_0x258afc['contact']['id'],'AttachmentId':_0x63929b[_0x37ed('0x5b')][_0x37ed('0xbb')]});})[_0x37ed('0x1c')](function(_0xd7e2e4){_0x258afc[_0x37ed('0x23')]=_0xd7e2e4;if(_0x258afc[_0x37ed('0xb2')][_0x37ed('0xbc')]){return db[_0x37ed('0xbd')][_0x37ed('0x59')]({'attributes':['id',_0x37ed('0x38')],'where':{'id':_0x258afc[_0x37ed('0xb2')]['UserId']}})[_0x37ed('0x1c')](function(_0x1e7a17){if(_0x1e7a17){_0x258afc['applications'][_0x37ed('0xbe')]({'id':0x0,'priority':0x0,'app':_0x37ed('0xbf'),'appdata':_0x1e7a17[_0x37ed('0x38')]+','+(_0x258afc[_0x37ed('0x9d')]['waitForTheAssignedAgent']||0xa),'interval':_0x37ed('0xb9')});_0x258afc[_0x37ed('0xc0')]=!![];}return respondWithRpcPromise(_0x37ed('0xc1'),_0x37ed('0xc2'),_0x258afc);});}return respondWithRpcPromise('Start',_0x37ed('0xc2'),_0x258afc);})['then'](function(_0x1199a0){respondWithRpcPromise(_0x37ed('0xc3'),_0x37ed('0xc3'),{'event':_0x37ed('0x82'),'message':_0x1199a0},client9002);return _0x1199a0;})['then'](respondWithResult(_0x531831,null))[_0x37ed('0x25')](handleError(_0x531831,null));};exports['offline']=function(_0x264648,_0xfd7aae,_0x43dd75){var _0x501553,_0xf1b745,_0x26dcd0;var _0x27ad1a=[];var _0x40a532=[];var _0x483c59={};var _0x30016e=_0x264648['files']||[];var _0x434f2e=[];var _0x12190e;return db[_0x37ed('0x87')][_0x37ed('0x60')]()['then'](function(_0x25a38d){if(!_0x25a38d){throw new db[(_0x37ed('0x88'))][(_0x37ed('0x89'))]('no\x20available\x20attributes');}_0x40a532=_[_0x37ed('0x8a')](_[_0x37ed('0x44')](_0x25a38d),[_0x37ed('0x8b'),_0x37ed('0x8c')]);_0x27ad1a=_[_0x37ed('0x8a')](_[_0x37ed('0x44')](_0x25a38d),[_0x37ed('0x8b'),_0x37ed('0x8c'),'CompanyId','ListId']);if(_0x264648['body']['id']){delete _0x264648[_0x37ed('0x5b')]['id'];}if(_[_0x37ed('0x7a')](_0x264648[_0x37ed('0x5b')][_0x37ed('0x8e')])){throw _0xfd7aae[_0x37ed('0x27')](0x1f4)[_0x37ed('0x39')](new db[(_0x37ed('0x88'))]['ValidationError']('from\x20is\x20mandatory'));}if(_[_0x37ed('0x7a')](_0x264648[_0x37ed('0x5b')][_0x37ed('0x5b')])||_0x264648[_0x37ed('0x5b')][_0x37ed('0x5b')]===''){throw _0xfd7aae['status'](0x1f4)['send'](new db[(_0x37ed('0x88'))][(_0x37ed('0x89'))](_0x37ed('0x90')));}if(_[_0x37ed('0x7a')](_0x264648[_0x37ed('0x5b')][_0x37ed('0xc4')])){throw _0xfd7aae['status'](0x1f4)[_0x37ed('0x39')](new db[(_0x37ed('0x88'))]['ValidationError'](_0x37ed('0xc5')+_0x27ad1a));}if(!_[_0x37ed('0x92')](_0x27ad1a,_0x264648['body'][_0x37ed('0xc4')])){throw _0xfd7aae['status'](0x1f4)['send'](new db[(_0x37ed('0x88'))][(_0x37ed('0x89'))](_0x37ed('0xc6')+_0x27ad1a));}_0x483c59[_0x264648[_0x37ed('0x5b')][_0x37ed('0xc4')]]=_0x264648[_0x37ed('0x5b')]['from'];})[_0x37ed('0x1c')](function(){return db['ChatWebsite'][_0x37ed('0x59')]({'where':{'id':_0x264648[_0x37ed('0x56')]['id']},'include':[{'model':db[_0x37ed('0x95')],'as':_0x37ed('0x97')},{'model':db[_0x37ed('0xc7')],'as':_0x37ed('0xc7')}]});})[_0x37ed('0x1c')](handleEntityNotFound(_0xfd7aae,null))[_0x37ed('0x1c')](function(_0x2e3670){if(_0x2e3670&&_0x2e3670[_0x37ed('0x97')]){_0xf1b745=_0x2e3670;var _0xec98d1=_[_0x37ed('0x9f')](_0x264648['body'],{'firstName':_0x264648[_0x37ed('0x5b')]['from'],'phone':_0x264648[_0x37ed('0x5b')][_0x37ed('0x8e')],'ListId':_0x2e3670['ListId']});_0xec98d1[_0x264648[_0x37ed('0x5b')][_0x37ed('0xc4')]]=_0x264648['body'][_0x37ed('0x8e')];return db[_0x37ed('0x87')][_0x37ed('0xc8')]({'where':_0x483c59,'defaults':_0xec98d1});}})[_0x37ed('0xb3')](function(_0x5042da){if(_0x5042da){_0x26dcd0=_0x5042da;var _0x44a37a=fs[_0x37ed('0xc9')](path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0xca')),'utf8');var _0x2bf8d1=ejs[_0x37ed('0xcb')](_0x44a37a,{'body':_['toPairs'](_0x264648[_0x37ed('0x5b')]['body']),'bodyTitle':_0xf1b745['offlineMessageBody']});return db[_0x37ed('0xcc')][_0x37ed('0x5a')]({'body':_0x2bf8d1,'ContactId':_0x5042da['id'],'ChatWebsiteId':_0xf1b745['id']});}})[_0x37ed('0x1c')](function(_0x4ba693){_0x12190e=_0x4ba693;if(_0x30016e[_0x37ed('0x58')]){var _0x3f358f=_0x30016e[_0x37ed('0x3d')](function(_0x52600c){return{'name':_0x52600c[_0x37ed('0xcd')],'basename':_0x52600c[_0x37ed('0x6e')],'type':_0x52600c[_0x37ed('0xce')],'ChatOfflineMessageId':_0x4ba693['id']};});_0x434f2e=_0x3f358f[_0x37ed('0x3d')](_0x5975a8=>{var _0x3f72e6={'filename':_0x5975a8[_0x37ed('0x38')],'path':path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0xcf'),'files',_0x37ed('0xd0'),'offline-chat',_0x5975a8[_0x37ed('0xd1')])};return _0x3f72e6;});if(!_0xf1b745[_0x37ed('0xd2')]){return db[_0x37ed('0xd3')][_0x37ed('0xd4')](function(_0x46bed8){return db[_0x37ed('0xd5')][_0x37ed('0xd6')](_0x3f358f,{'transaction':_0x46bed8});});}}})[_0x37ed('0x1c')](function(){if(_0x12190e){_0x501553=_0x12190e;return db['MailAccount'][_0x37ed('0x65')]({'where':{'active':!![]},'include':[{'model':db[_0x37ed('0xd7')],'as':'Smtp','raw':!![]}]});}})['then'](function(_0xb6f759){if(_0xb6f759&&_0xb6f759[_0x37ed('0xd8')]&&_0xf1b745['forwardOffline']&&_0xf1b745[_0x37ed('0xd9')]){var _0x5c4ae7={'tls':{'rejectUnauthorized':![]}};if(_0xb6f759['Smtp'][_0x37ed('0xda')]){_0x5c4ae7[_0x37ed('0xda')]=_0xb6f759[_0x37ed('0xd8')][_0x37ed('0xda')];}else{_0x5c4ae7['host']=_0xb6f759[_0x37ed('0xd8')][_0x37ed('0xdb')];_0x5c4ae7['port']=_0xb6f759[_0x37ed('0xd8')][_0x37ed('0xdc')];_0x5c4ae7[_0x37ed('0xdd')]=_0xb6f759[_0x37ed('0xd8')][_0x37ed('0xdd')];}if(_0xb6f759[_0x37ed('0xd8')][_0x37ed('0xde')]){_0x5c4ae7[_0x37ed('0xdf')]={'user':_0xb6f759['Smtp']['user'],'pass':_0xb6f759[_0x37ed('0xd8')][_0x37ed('0xe0')]};}return respondWithRpcPromise(_0x37ed('0xe1'),_0x37ed('0xe2'),{'account':_0x5c4ae7,'message':{'from':util[_0x37ed('0xaa')]('\x22%s\x22\x20<%s>',_0xb6f759[_0x37ed('0x38')],_0xb6f759['email']||_0xb6f759[_0x37ed('0xd8')][_0x37ed('0x5c')]),'to':_0xf1b745[_0x37ed('0xd9')],'subject':_0xf1b745[_0x37ed('0xe3')],'html':_0x501553[_0x37ed('0x5b')],'attachments':_0x434f2e}},client9003)['then'](function(){return _0x501553;})[_0x37ed('0x25')](function(_0x5e54a4){console[_0x37ed('0x22')](_0x5e54a4);});}})[_0x37ed('0x1c')](function(){if(_0xf1b745&&_0xf1b745[_0x37ed('0xd2')]&&_0xf1b745['MailAccountId']){var _0x3235f=[];if(_0x30016e[_0x37ed('0x58')]){_0x3235f=_0x30016e[_0x37ed('0x3d')](function(_0x3df71e){return{'name':_0x3df71e[_0x37ed('0xcd')],'basename':_0x3df71e[_0x37ed('0x6e')],'type':_0x3df71e[_0x37ed('0xce')],'ChatOfflineMessageId':_0x12190e['id']};});}var _0x17cb17;if(!_['isNil'](_0xf1b745[_0x37ed('0xe4')])){var _0x6fdae7=_[_0x37ed('0x3d')](_0x264648['body'],function(_0x12bc3f){return _0x12bc3f;});var _0x26e19c=_[_0x37ed('0xe5')](_0x6fdae7)[0x0];var _0x53928a=_['mapValues'](_0x26e19c,function(_0x34bddc){return _0x34bddc;});_0x17cb17=_0x53928a[0x1][_0xf1b745[_0x37ed('0xe4')]];}var _0x47422a={'from':_0x26dcd0[_0x37ed('0xe6')],'firstName':_0x26dcd0[_0x37ed('0xa4')],'lastName':_0x26dcd0[_0x37ed('0xa5')],'mapKey':_0x37ed('0xe6'),'message':{'from':_0x26dcd0[_0x37ed('0xe6')],'to':_0xf1b745[_0x37ed('0xc7')][_0x37ed('0xe6')],'cc':'','subject':_[_0x37ed('0x7a')](_0x17cb17)?_0xf1b745[_0x37ed('0xe3')]:_0x17cb17,'messageId':'','sentAt':new Date(),'attach':_0x3235f['length'],'attachments':_0x3235f,'originChannel':_0x37ed('0xe7'),'ChatWebsiteId':_0xf1b745['id'],'ChatOfflineMessageId':_0x501553['id'],'originTo':_0xf1b745[_0x37ed('0xc7')][_0x37ed('0xe6')]},'body':_0x501553['body']};var _0x20051f={'account':{'id':_0xf1b745[_0x37ed('0xe8')]},'body':_0x47422a,'log':_0x37ed('0xe9')};return respondWithRpcPromise(_0x37ed('0xe9'),_0x37ed('0xea'),_0x20051f,client9001)['then'](function(){return _0x501553;})['catch'](function(_0x10e807){console['error'](_0x10e807);});}return;})[_0x37ed('0x1c')](function(){if(_0x501553){return _0x501553;}})[_0x37ed('0x1c')](respondWithResult(_0xfd7aae,null))[_0x37ed('0x25')](function(_0x1f174f){console[_0x37ed('0x22')]('catch',_0x1f174f);for(var _0x52dd7a of _0x30016e){var _0x3f2275=path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0xcf'),_0x37ed('0xeb'),_0x37ed('0xd0'),_0x37ed('0xec'),_0x52dd7a[_0x37ed('0x6e')]);fs_extra[_0x37ed('0xed')](_0x3f2275)[_0x37ed('0x25')](function(_0x207be0){console[_0x37ed('0x22')](_0x37ed('0xee'),_0x3f2275,_0x207be0);});}});};exports[_0x37ed('0xef')]=function(_0x380ed8,_0x55d17e,_0x1602bc){return db['ChatInteraction'][_0x37ed('0x59')]({'where':{'id':_0x380ed8[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x55d17e,null))['then'](function(_0x258490){if(_0x258490){return _0x258490['addInteraction'](_0x380ed8[_0x37ed('0x5b')][_0x37ed('0x67')],_[_0x37ed('0xf0')](_0x380ed8[_0x37ed('0x5b')],[_0x37ed('0x67'),'id'])||{});}})['then'](respondWithResult(_0x55d17e,null))['catch'](handleError(_0x55d17e,null));};exports['getInteractions']=function(_0x24bb88,_0x146a0f,_0x32f09c){var _0x1a60e3={'raw':![],'where':{}};var _0x30611e={};var _0x47dc69={'count':0x0,'rows':[]};return db[_0x37ed('0x50')][_0x37ed('0x65')]({'where':{'id':_0x24bb88[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x146a0f,null))[_0x37ed('0x1c')](function(_0x4024d1){if(_0x4024d1){_0x30611e[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0xb0')]['rawAttributes']);_0x30611e[_0x37ed('0x43')]=_[_0x37ed('0x44')](_0x24bb88[_0x37ed('0x43')]);_0x30611e['filters']=_[_0x37ed('0x57')](_0x30611e['model'],_0x30611e['query']);_0x1a60e3[_0x37ed('0x47')]=_['intersection'](_0x30611e[_0x37ed('0x42')],qs[_0x37ed('0x46')](_0x24bb88[_0x37ed('0x43')][_0x37ed('0x46')]));_0x1a60e3['attributes']=_0x1a60e3[_0x37ed('0x47')][_0x37ed('0x58')]?_0x1a60e3[_0x37ed('0x47')]:_0x30611e[_0x37ed('0x42')];if(!_0x24bb88[_0x37ed('0x43')][_0x37ed('0x48')]('nolimit')){_0x1a60e3[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x24bb88['query'][_0x37ed('0x2d')]);_0x1a60e3[_0x37ed('0x2a')]=qs[_0x37ed('0x2a')](_0x24bb88[_0x37ed('0x43')]['offset']);}_0x1a60e3[_0x37ed('0x4a')]=qs[_0x37ed('0x69')](_0x24bb88[_0x37ed('0x43')][_0x37ed('0x69')]);_0x1a60e3[_0x37ed('0x4c')]=qs[_0x37ed('0x45')](_[_0x37ed('0x4b')](_0x24bb88[_0x37ed('0x43')],_0x30611e[_0x37ed('0x45')]));_0x1a60e3[_0x37ed('0x4c')][_0x37ed('0x62')]=_0x4024d1['id'];if(_0x24bb88[_0x37ed('0x43')]['filter']){_0x1a60e3[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0x1a60e3['where'],{'$or':_[_0x37ed('0x3d')](_0x1a60e3['attributes'],function(_0x5bd3a6){var _0x9bf459={};_0x9bf459[_0x5bd3a6]={'$like':'%'+_0x24bb88[_0x37ed('0x43')][_0x37ed('0x4e')]+'%'};return _0x9bf459;})});}_0x1a60e3=_[_0x37ed('0x4d')]({},_0x1a60e3,_0x24bb88[_0x37ed('0x4f')]);return db['ChatInteraction']['count']({'where':_0x1a60e3[_0x37ed('0x4c')]})[_0x37ed('0x1c')](function(_0x5cd2a9){_0x47dc69[_0x37ed('0x2c')]=_0x5cd2a9;if(_0x24bb88[_0x37ed('0x43')]['includeAll']){_0x1a60e3[_0x37ed('0x52')]=[{'model':db['CmContact'],'as':_0x37ed('0xf1'),'required':![]},{'model':db[_0x37ed('0xbd')],'as':'Owner','attributes':[_0x37ed('0x38'),_0x37ed('0xf2'),_0x37ed('0xf3')],'required':![]},{'model':db['Tag'],'as':_0x37ed('0xf4'),'attributes':['id',_0x37ed('0x38'),_0x37ed('0xf5')],'where':_0x24bb88[_0x37ed('0x43')][_0x37ed('0xf6')]?{'id':_0x24bb88['query'][_0x37ed('0xf6')]}:undefined,'required':_0x24bb88[_0x37ed('0x43')][_0x37ed('0xf6')]?!![]:![]}];}return db[_0x37ed('0xb0')][_0x37ed('0x53')](_0x1a60e3);})[_0x37ed('0x1c')](function(_0x3e3c38){_0x47dc69['rows']=_0x3e3c38;return _0x47dc69;});}})[_0x37ed('0x1c')](respondWithFilteredResult(_0x146a0f,_0x1a60e3))[_0x37ed('0x25')](handleError(_0x146a0f,null));};function iftimePromise(_0x1143d8,_0x22ef58){return respondWithRpcPromise(_0x37ed('0xf7'),_0x37ed('0xf8'),{'command':_0x22ef58['timezone']?util[_0x37ed('0xaa')](_0x37ed('0xf9'),_0x1143d8[_0x37ed('0xfa')],_0x22ef58['timezone']):util[_0x37ed('0xaa')]('iftime\x20%s',_0x1143d8[_0x37ed('0xfa')])},client9002)[_0x37ed('0x1c')](function(_0x5af7bd){var _0x317875=_0x5af7bd&&_0x5af7bd[_0x37ed('0xfb')](_0x37ed('0xfc'))>=0x0?!![]:![];logger[_0x37ed('0x1d')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x22ef58['id'],_0x1143d8['id'],_0x1143d8['interval'],_0x317875?_0x37ed('0xfd'):_0x37ed('0xfe'),_0x22ef58[_0x37ed('0xff')]?_0x22ef58[_0x37ed('0xff')]:_0x37ed('0x100'));return _0x317875;})['catch'](function(_0x3cb55e){logger[_0x37ed('0x22')](_0x37ed('0x101'),_0x22ef58['id'],_0x1143d8['id'],_0x1143d8[_0x37ed('0xfa')],util[_0x37ed('0x102')](_0x3cb55e,{'showHidden':![],'depth':null}),_0x22ef58[_0x37ed('0xff')]?_0x22ef58[_0x37ed('0xff')]:_0x37ed('0x100'));return![];});}exports[_0x37ed('0xf8')]=function(_0x5c9947,_0x153f50,_0x14c278){var _0x51b4d5=0x0;var _0x46d94e=0x0;var _0x5b0151=![];var _0x3d6fb1;var _0x5d1f19;return db['ChatWebsite'][_0x37ed('0x59')]({'where':{'id':_0x5c9947[_0x37ed('0x56')]['id']},'include':[{'model':db[_0x37ed('0x103')],'as':'Interval','include':[{'model':db[_0x37ed('0x103')],'as':_0x37ed('0x104'),'attributes':['id',_0x37ed('0xfa')],'raw':!![]}]}]})[_0x37ed('0x1c')](handleEntityNotFound(_0x153f50,null))[_0x37ed('0x1c')](function(_0x56c86d){if(_0x56c86d){_0x3d6fb1=_0x56c86d;return _0x56c86d[_0x37ed('0x105')]({'raw':!![]});}})['then'](function(_0x5c1ec7){if(_0x3d6fb1){if(_0x5c1ec7){_0x5d1f19=_0x5c1ec7;}}return require(_0x37ed('0x11'))[_0x37ed('0x78')]();})[_0x37ed('0x1c')](function(_0x5865db){if(_0x5865db){_0x46d94e=_0x5865db[_0x37ed('0x106')];_0x5b0151=_0x5865db[_0x37ed('0x79')];}})['then'](function(){return db[_0x37ed('0xb0')]['count']({'where':{'closed':![]}});})[_0x37ed('0x1c')](function(_0x15b663){_0x51b4d5=_0x15b663;if(_0x46d94e&&_0x15b663>_0x46d94e){return db[_0x37ed('0x107')][_0x37ed('0x65')]({'where':{'id':0x1}})['then'](function(_0x3e2d57){if(_0x3e2d57){_0x3e2d57[_0x37ed('0x108')](_0x37ed('0x109'));}});}})[_0x37ed('0x1c')](function(){if(_0x3d6fb1[_0x37ed('0x103')]&&_0x3d6fb1[_0x37ed('0x103')][_0x37ed('0x104')]){var _0x250bbd=[];for(var _0x3ffa10=0x0;_0x3ffa10<_0x3d6fb1[_0x37ed('0x103')][_0x37ed('0x104')][_0x37ed('0x58')];_0x3ffa10++){var _0xc62266=_0x3d6fb1['Interval']['Intervals'][_0x3ffa10]['get']({'plain':!![]});_0x250bbd[_0x37ed('0xb7')](iftimePromise(_0xc62266,_0x3d6fb1));}return BPromise['all'](_0x250bbd)[_0x37ed('0x1c')](function(_0x2011c5){return _[_0x37ed('0x10a')](_0x2011c5);});}else{return!![];}})[_0x37ed('0x1c')](function(_0x67ed8b){var _0x50b88c=fs[_0x37ed('0xc9')](path[_0x37ed('0x74')](config[_0x37ed('0x75')],_0x37ed('0x10b')),_0x37ed('0x10c'));var _0x3b5a39={'remote':_0x3d6fb1['remote'],'query':querystring[_0x37ed('0x21')](_['merge'](_0x3d6fb1['get']({'plain':!![]}),{'customerIp':_0x5c9947['headers'][_0x37ed('0xa2')]||_0x5c9947['headers'][_0x37ed('0x10d')]||_0x5c9947[_0x37ed('0x10e')][_0x37ed('0x10f')]||_0x5c9947['ip'],'referer':_0x5c9947[_0x37ed('0x84')][_0x37ed('0xa7')],'openedInteractions':_0x51b4d5,'maxInteractions':_0x46d94e,'virtual':_0x5b0151[_0x37ed('0x106')],'online':_0x67ed8b,'custom':_0x5b0151}))[_0x37ed('0x110')](/'/g,'\x5c\x27')};_0x153f50[_0x37ed('0x39')](ejs[_0x37ed('0xcb')](Mustache['render'](_0x50b88c,_0x3b5a39),{'proactiveActions':_0x5d1f19,'alignment':_0x3d6fb1[_0x37ed('0x111')],'verticalAlignment':_0x3d6fb1[_0x37ed('0x112')],'div_color':_0x3d6fb1[_0x37ed('0xf5')],'text_color':_0x3d6fb1['textColor'],'button_color':_0x3d6fb1['color_button'],'background_color':_0x3d6fb1[_0x37ed('0x113')]}));})[_0x37ed('0x25')](handleError(_0x153f50,null));};exports[_0x37ed('0x114')]=function(_0x5bb8f9,_0xc5a28a,_0xcc0de5){return db[_0x37ed('0x50')][_0x37ed('0x65')]({'where':{'id':_0x5bb8f9[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0xc5a28a,null))[_0x37ed('0x1c')](function(_0x206e4d){if(_0x206e4d){return db[_0x37ed('0xd3')]['transaction'](function(_0x59f74d){return db[_0x37ed('0x115')][_0x37ed('0x33')]({'where':{'ChatWebsiteId':_0x5bb8f9[_0x37ed('0x56')]['id']},'transaction':_0x59f74d})[_0x37ed('0x1c')](function(_0x33bd83){var _0x5a56e7=_[_0x37ed('0x3d')](_0x5bb8f9['body'],function(_0x23bc47){_0x23bc47[_0x37ed('0x62')]=_0x5bb8f9[_0x37ed('0x56')]['id'];return _0x23bc47;});return db[_0x37ed('0x115')][_0x37ed('0xd6')](_0x5a56e7,{'transaction':_0x59f74d});});})['then'](function(){return db[_0x37ed('0x115')][_0x37ed('0x116')]({'where':{'ChatWebsiteId':_0x5bb8f9['params']['id']},'order':_0x37ed('0x9b')});});}})[_0x37ed('0x1c')](respondWithResult(_0xc5a28a,null))[_0x37ed('0x25')](handleError(_0xc5a28a,null));};exports['getApplications']=function(_0x46bd72,_0x143237,_0x1f02f8){var _0x359845={};var _0x4ca77e={};var _0x254529;var _0x25ce8c;return db[_0x37ed('0x50')][_0x37ed('0x65')]({'where':{'id':_0x46bd72[_0x37ed('0x56')]['id']}})['then'](handleEntityNotFound(_0x143237,null))['then'](function(_0x250e5b){if(_0x250e5b){_0x254529=_0x250e5b;_0x4ca77e[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0x115')][_0x37ed('0x3e')]);_0x4ca77e[_0x37ed('0x43')]=_[_0x37ed('0x44')](_0x46bd72['query']);_0x4ca77e[_0x37ed('0x45')]=_[_0x37ed('0x57')](_0x4ca77e[_0x37ed('0x42')],_0x4ca77e['query']);_0x359845['attributes']=_[_0x37ed('0x57')](_0x4ca77e['model'],qs['fields'](_0x46bd72[_0x37ed('0x43')]['fields']));_0x359845[_0x37ed('0x47')]=_0x359845[_0x37ed('0x47')]['length']?_0x359845[_0x37ed('0x47')]:_0x4ca77e[_0x37ed('0x42')];_0x359845[_0x37ed('0x4a')]=qs[_0x37ed('0x69')](_0x46bd72['query'][_0x37ed('0x69')]);_0x359845[_0x37ed('0x4c')]=qs[_0x37ed('0x45')](_[_0x37ed('0x4b')](_0x46bd72[_0x37ed('0x43')],_0x4ca77e[_0x37ed('0x45')]));if(_0x46bd72[_0x37ed('0x43')][_0x37ed('0x4e')]){_0x359845[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0x359845[_0x37ed('0x4c')],{'$or':_[_0x37ed('0x3d')](_0x359845[_0x37ed('0x47')],function(_0x4f727d){var _0x3040de={};_0x3040de[_0x4f727d]={'$like':'%'+_0x46bd72['query'][_0x37ed('0x4e')]+'%'};return _0x3040de;})});}_0x359845=_[_0x37ed('0x4d')]({},_0x359845,_0x46bd72['options']);return _0x254529[_0x37ed('0x117')](_0x359845);}})[_0x37ed('0x1c')](function(_0x549fd7){if(_0x549fd7){_0x25ce8c=_0x549fd7[_0x37ed('0x58')];if(!_0x46bd72['query']['hasOwnProperty'](_0x37ed('0x49'))){_0x359845[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x46bd72[_0x37ed('0x43')][_0x37ed('0x2d')]);_0x359845[_0x37ed('0x2a')]=qs[_0x37ed('0x2a')](_0x46bd72[_0x37ed('0x43')][_0x37ed('0x2a')]);}return _0x254529[_0x37ed('0x117')](_0x359845);}})[_0x37ed('0x1c')](function(_0x27525c){if(_0x27525c){return _0x27525c?{'count':_0x25ce8c,'rows':_0x27525c}:null;}})[_0x37ed('0x1c')](respondWithResult(_0x143237,null))[_0x37ed('0x25')](handleError(_0x143237,null));};exports[_0x37ed('0x118')]=function(_0x1a6e16,_0x51a510,_0x1df47b){return db[_0x37ed('0x119')][_0x37ed('0x59')]({'where':{'id':_0x1a6e16[_0x37ed('0x56')]['id']}})['then'](handleEntityNotFound(_0x51a510,null))[_0x37ed('0x1c')](function(_0x215532){if(_0x215532){return _0x215532[_0x37ed('0x118')](_0x1a6e16[_0x37ed('0x5b')][_0x37ed('0x67')],_['omit'](_0x1a6e16[_0x37ed('0x5b')],['ids','id'])||{});}})[_0x37ed('0x1c')](respondWithResult(_0x51a510,null))[_0x37ed('0x25')](handleError(_0x51a510,null));};exports['getProactiveActions']=function(_0x4973b6,_0x31297a,_0x3ab5ab){var _0xfbef7d={};var _0x18d613={};var _0x3407d9;var _0x384a9a;return db['ChatWebsite']['findOne']({'where':{'id':_0x4973b6[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x31297a,null))[_0x37ed('0x1c')](function(_0x1503db){if(_0x1503db){_0x3407d9=_0x1503db;_0x18d613[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0x11a')][_0x37ed('0x3e')]);_0x18d613[_0x37ed('0x43')]=_[_0x37ed('0x44')](_0x4973b6[_0x37ed('0x43')]);_0x18d613['filters']=_['intersection'](_0x18d613['model'],_0x18d613[_0x37ed('0x43')]);_0xfbef7d['attributes']=_[_0x37ed('0x57')](_0x18d613['model'],qs[_0x37ed('0x46')](_0x4973b6[_0x37ed('0x43')][_0x37ed('0x46')]));_0xfbef7d[_0x37ed('0x47')]=_0xfbef7d[_0x37ed('0x47')]['length']?_0xfbef7d[_0x37ed('0x47')]:_0x18d613['model'];_0xfbef7d[_0x37ed('0x4a')]=qs[_0x37ed('0x69')](_0x4973b6['query']['sort']);_0xfbef7d[_0x37ed('0x4c')]=qs[_0x37ed('0x45')](_[_0x37ed('0x4b')](_0x4973b6[_0x37ed('0x43')],_0x18d613[_0x37ed('0x45')]));if(_0x4973b6[_0x37ed('0x43')]['filter']){_0xfbef7d[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0xfbef7d[_0x37ed('0x4c')],{'$or':_['map'](_0xfbef7d[_0x37ed('0x47')],function(_0xe4d0){var _0x244d7a={};_0x244d7a[_0xe4d0]={'$like':'%'+_0x4973b6[_0x37ed('0x43')][_0x37ed('0x4e')]+'%'};return _0x244d7a;})});}_0xfbef7d=_[_0x37ed('0x4d')]({},_0xfbef7d,_0x4973b6[_0x37ed('0x4f')]);return _0x3407d9[_0x37ed('0x105')](_0xfbef7d);}})[_0x37ed('0x1c')](function(_0x411eef){if(_0x411eef){_0x384a9a=_0x411eef[_0x37ed('0x58')];if(!_0x4973b6[_0x37ed('0x43')][_0x37ed('0x48')](_0x37ed('0x49'))){_0xfbef7d['limit']=qs[_0x37ed('0x2d')](_0x4973b6[_0x37ed('0x43')][_0x37ed('0x2d')]);_0xfbef7d[_0x37ed('0x2a')]=qs[_0x37ed('0x2a')](_0x4973b6[_0x37ed('0x43')][_0x37ed('0x2a')]);}return _0x3407d9[_0x37ed('0x105')](_0xfbef7d);}})[_0x37ed('0x1c')](function(_0x1cbda6){if(_0x1cbda6){return _0x1cbda6?{'count':_0x384a9a,'rows':_0x1cbda6}:null;}})[_0x37ed('0x1c')](respondWithResult(_0x31297a,null))['catch'](handleError(_0x31297a,null));};exports[_0x37ed('0x11b')]=function(_0x38c923,_0x3658ce,_0x452d58){var _0x2cb491=_0x38c923[_0x37ed('0x43')][_0x37ed('0x11c')]===_0x37ed('0x11d')?_0x37ed('0x11e'):_0x37ed('0x11f');return db['ChatWebsite'][_0x37ed('0x59')]({'attributes':['id',_0x2cb491],'where':{'id':_0x38c923[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x3658ce,null))[_0x37ed('0x1c')](function(_0x3e4f76){if(_0x3e4f76){var _0xcc0a8b=_0x3e4f76[_0x2cb491];var _0x2dc5c8=_0xcc0a8b&&_0xcc0a8b[_0x37ed('0x120')]?_0xcc0a8b[_0x37ed('0x120')]:[];_0x3658ce[_0x37ed('0x39')]({'fromKey':_['isNil'](_0xcc0a8b[_0x37ed('0x121')])?undefined:_0xcc0a8b[_0x37ed('0x121')],'count':_0x2dc5c8[_0x37ed('0x58')],'rows':_0x2dc5c8});}})[_0x37ed('0x25')](handleError(_0x3658ce,null));};exports[_0x37ed('0x122')]=function(_0x532b30,_0x57ddc3,_0xc95ce8){var _0x52f8d1={'raw':![],'where':{}};var _0x24737b={};var _0x5bfcf8={'count':0x0,'rows':[]};return db[_0x37ed('0x50')]['findOne']({'where':{'id':_0x532b30['params']['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x57ddc3,null))[_0x37ed('0x1c')](function(_0x26b3d7){if(_0x26b3d7){_0x24737b[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0xcc')][_0x37ed('0x3e')]);_0x24737b[_0x37ed('0x43')]=_['keys'](_0x532b30[_0x37ed('0x43')]);_0x24737b[_0x37ed('0x45')]=_['intersection'](_0x24737b['model'],_0x24737b[_0x37ed('0x43')]);_0x52f8d1['attributes']=_[_0x37ed('0x57')](_0x24737b[_0x37ed('0x42')],qs[_0x37ed('0x46')](_0x532b30[_0x37ed('0x43')][_0x37ed('0x46')]));_0x52f8d1[_0x37ed('0x47')]=_0x52f8d1[_0x37ed('0x47')]['length']?_0x52f8d1['attributes']:_0x24737b[_0x37ed('0x42')];if(!_0x532b30['query']['hasOwnProperty'](_0x37ed('0x49'))){_0x52f8d1[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x532b30[_0x37ed('0x43')][_0x37ed('0x2d')]);_0x52f8d1[_0x37ed('0x2a')]=qs[_0x37ed('0x2a')](_0x532b30[_0x37ed('0x43')][_0x37ed('0x2a')]);}_0x52f8d1[_0x37ed('0x4a')]=qs[_0x37ed('0x69')](_0x532b30[_0x37ed('0x43')][_0x37ed('0x69')]);_0x52f8d1[_0x37ed('0x4c')]=qs[_0x37ed('0x45')](_['pick'](_0x532b30[_0x37ed('0x43')],_0x24737b[_0x37ed('0x45')]));_0x52f8d1['where']['ChatWebsiteId']=_0x26b3d7['id'];if(_0x532b30['query'][_0x37ed('0x4e')]){_0x52f8d1['where']=_[_0x37ed('0x4d')](_0x52f8d1['where'],{'$or':_['map'](_0x52f8d1['attributes'],function(_0x22bad2){var _0x50f088={};_0x50f088[_0x22bad2]={'$like':'%'+_0x532b30[_0x37ed('0x43')][_0x37ed('0x4e')]+'%'};return _0x50f088;})});}_0x52f8d1=_['merge']({},_0x52f8d1,_0x532b30['options']);return db[_0x37ed('0xcc')][_0x37ed('0x2c')]({'where':_0x52f8d1[_0x37ed('0x4c')]})[_0x37ed('0x1c')](function(_0x67d5b2){_0x5bfcf8['count']=_0x67d5b2;if(_0x532b30[_0x37ed('0x43')]['includeAll']){_0x52f8d1['include']=[{'all':!![]}];}else{_0x52f8d1[_0x37ed('0x52')]=[{'model':db['CmContact'],'as':_0x37ed('0xf1'),'required':![]},{'model':db['Attachment'],'as':'Attachments','required':![]}];}return db[_0x37ed('0xcc')][_0x37ed('0x53')](_0x52f8d1);})['then'](function(_0x528a35){_0x5bfcf8['rows']=_0x528a35;return _0x5bfcf8;});}})[_0x37ed('0x1c')](respondWithFilteredResult(_0x57ddc3,_0x52f8d1))[_0x37ed('0x25')](handleError(_0x57ddc3,null));};exports[_0x37ed('0x123')]=function(_0x5c2a79,_0x41b5fe,_0x3b9216){return db['ChatWebsite'][_0x37ed('0x59')]({'where':{'id':_0x5c2a79['params']['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x41b5fe,null))['then'](function(_0x25dd17){if(_0x25dd17){return _0x25dd17[_0x37ed('0x123')](_0x5c2a79['body'][_0x37ed('0x67')],_[_0x37ed('0xf0')](_0x5c2a79[_0x37ed('0x5b')],['ids','id'])||{})['spread'](function(_0x5990e9){for(var _0x4006d7=0x0;_0x4006d7<_0x5c2a79[_0x37ed('0x5b')][_0x37ed('0x67')][_0x37ed('0x58')];_0x4006d7+=0x1){socket[_0x37ed('0x124')](_0x37ed('0x125'),{'UserId':Number(_0x5c2a79['body']['ids'][_0x4006d7]),'ChatWebsiteId':Number(_0x5c2a79[_0x37ed('0x56')]['id'])});}return _0x5990e9;});}})[_0x37ed('0x1c')](respondWithResult(_0x41b5fe,null))['catch'](handleError(_0x41b5fe,null));};exports[_0x37ed('0x126')]=function(_0x498e7f,_0x445e15,_0x5bdf52){return db['ChatWebsite']['find']({'where':{'id':_0x498e7f['params']['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x445e15,null))[_0x37ed('0x1c')](function(_0x569075){if(_0x569075){return _0x569075['removeAgents'](_0x498e7f['query'][_0x37ed('0x67')])['then'](function(){if(_['isArray'](_0x498e7f[_0x37ed('0x43')][_0x37ed('0x67')])){for(var _0x52b9bb=0x0;_0x52b9bb<_0x498e7f['query'][_0x37ed('0x67')][_0x37ed('0x58')];_0x52b9bb+=0x1){socket[_0x37ed('0x124')](_0x37ed('0x127'),{'UserId':Number(_0x498e7f[_0x37ed('0x43')]['ids'][_0x52b9bb]),'ChatWebsiteId':Number(_0x498e7f['params']['id'])});}}else{socket[_0x37ed('0x124')](_0x37ed('0x127'),{'UserId':Number(_0x498e7f[_0x37ed('0x43')][_0x37ed('0x67')]),'ChatWebsiteId':Number(_0x498e7f['params']['id'])});}});}})[_0x37ed('0x1c')](respondWithStatusCode(_0x445e15,null))['catch'](handleError(_0x445e15,null));};exports[_0x37ed('0x128')]=function(_0x54426e,_0x5e1d6c,_0x1b03d8){var _0x4cc58f={};var _0x554501={};var _0x203fb3;var _0x53d1a5;return db[_0x37ed('0x50')]['findOne']({'where':{'id':_0x54426e[_0x37ed('0x56')]['id']}})[_0x37ed('0x1c')](handleEntityNotFound(_0x5e1d6c,null))[_0x37ed('0x1c')](function(_0x2d9bac){if(_0x2d9bac){_0x203fb3=_0x2d9bac;_0x554501[_0x37ed('0x42')]=_[_0x37ed('0x44')](db[_0x37ed('0xbd')][_0x37ed('0x3e')]);_0x554501['query']=_[_0x37ed('0x44')](_0x54426e['query']);_0x554501[_0x37ed('0x45')]=_[_0x37ed('0x57')](_0x554501['model'],_0x554501['query']);_0x4cc58f[_0x37ed('0x47')]=_[_0x37ed('0x57')](_0x554501[_0x37ed('0x42')],qs[_0x37ed('0x46')](_0x54426e[_0x37ed('0x43')][_0x37ed('0x46')]));_0x4cc58f[_0x37ed('0x47')]=_0x4cc58f[_0x37ed('0x47')][_0x37ed('0x58')]?_0x4cc58f[_0x37ed('0x47')]:_0x554501[_0x37ed('0x42')];_0x4cc58f[_0x37ed('0x4a')]=qs[_0x37ed('0x69')](_0x54426e['query'][_0x37ed('0x69')]);_0x4cc58f[_0x37ed('0x4c')]=qs[_0x37ed('0x45')](_[_0x37ed('0x4b')](_0x54426e[_0x37ed('0x43')],_0x554501[_0x37ed('0x45')]));if(_0x54426e['query'][_0x37ed('0x4e')]){_0x4cc58f[_0x37ed('0x4c')]=_[_0x37ed('0x4d')](_0x4cc58f[_0x37ed('0x4c')],{'$or':_[_0x37ed('0x3d')](_0x4cc58f[_0x37ed('0x47')],function(_0xb197e8){var _0x346791={};_0x346791[_0xb197e8]={'$like':'%'+_0x54426e[_0x37ed('0x43')]['filter']+'%'};return _0x346791;})});}_0x4cc58f=_[_0x37ed('0x4d')]({},_0x4cc58f,_0x54426e['options']);return _0x203fb3[_0x37ed('0x128')](_0x4cc58f);}})[_0x37ed('0x1c')](function(_0x2eb338){if(_0x2eb338){_0x53d1a5=_0x2eb338[_0x37ed('0x58')];if(!_0x54426e['query'][_0x37ed('0x48')](_0x37ed('0x49'))){_0x4cc58f[_0x37ed('0x2d')]=qs[_0x37ed('0x2d')](_0x54426e['query'][_0x37ed('0x2d')]);_0x4cc58f[_0x37ed('0x2a')]=qs[_0x37ed('0x2a')](_0x54426e[_0x37ed('0x43')][_0x37ed('0x2a')]);}return _0x203fb3[_0x37ed('0x128')](_0x4cc58f);}})[_0x37ed('0x1c')](function(_0x40ab7){if(_0x40ab7){return _0x40ab7?{'count':_0x53d1a5,'rows':_0x40ab7}:null;}})[_0x37ed('0x1c')](respondWithResult(_0x5e1d6c,null))['catch'](handleError(_0x5e1d6c,null));};
\ No newline at end of file
index 7569dc3..e1de444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','ChatWebsite'];(function(_0x1876b2,_0x5d0225){var _0x9fb1e0=function(_0x29b099){while(--_0x29b099){_0x1876b2['push'](_0x1876b2['shift']());}};_0x9fb1e0(++_0x5d0225);}(_0xb138,0x1dd));var _0x8b13=function(_0x2333d9,_0x1758e6){_0x2333d9=_0x2333d9-0x0;var _0x436c45=_0xb138[_0x2333d9];return _0x436c45;};'use strict';var EventEmitter=require(_0x8b13('0x0'));var ChatWebsite=require(_0x8b13('0x1'))['db'][_0x8b13('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x8b13('0x3')](0x0);var events={'afterCreate':_0x8b13('0x4'),'afterUpdate':_0x8b13('0x5'),'afterDestroy':_0x8b13('0x6')};function emitEvent(_0x5369d4){return function(_0x4411a0,_0x241acb,_0x3af81a){ChatWebsiteEvents['emit'](_0x5369d4+':'+_0x4411a0['id'],_0x4411a0);ChatWebsiteEvents[_0x8b13('0x7')](_0x5369d4,_0x4411a0);_0x3af81a(null);};}for(var e in events){if(events[_0x8b13('0x8')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0x8b13('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xe548=['save','emit','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x36d310,_0x110b5c){var _0x44620e=function(_0x30b878){while(--_0x30b878){_0x36d310['push'](_0x36d310['shift']());}};_0x44620e(++_0x110b5c);}(_0xe548,0x184));var _0x8e54=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xe548[_0x56482c];return _0x5aae7a;};'use strict';var EventEmitter=require(_0x8e54('0x0'));var ChatWebsite=require(_0x8e54('0x1'))['db'][_0x8e54('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x8e54('0x3')](0x0);var events={'afterCreate':_0x8e54('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x53596e){return function(_0x4aa36a,_0x4b69ef,_0x31c052){ChatWebsiteEvents['emit'](_0x53596e+':'+_0x4aa36a['id'],_0x4aa36a);ChatWebsiteEvents[_0x8e54('0x5')](_0x53596e,_0x4aa36a);_0x31c052(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x8e54('0x6')](e,emitEvent(event));}}module[_0x8e54('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
index 71de49e..90d1e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7476=['path','../../config/environment','ChatWebsite','chat_websites','lodash','moment','bluebird'];(function(_0x4e3c8a,_0x1c5385){var _0x397301=function(_0x1b68a7){while(--_0x1b68a7){_0x4e3c8a['push'](_0x4e3c8a['shift']());}};_0x397301(++_0x1c5385);}(_0x7476,0x107));var _0x6747=function(_0x5ef905,_0x564b87){_0x5ef905=_0x5ef905-0x0;var _0x367808=_0x7476[_0x5ef905];return _0x367808;};'use strict';var _=require(_0x6747('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x6747('0x1'));var BPromise=require(_0x6747('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6747('0x3'));var rimraf=require('rimraf');var config=require(_0x6747('0x4'));var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x2391eb,_0x2d0b76){return _0x2391eb['define'](_0x6747('0x5'),attributes,{'tableName':_0x6747('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8fb=['chat_websites','lodash','../../config/logger','moment','request-promise','path','../../config/environment','exports','define'];(function(_0x15e8ac,_0x24a790){var _0x2831f5=function(_0x243639){while(--_0x243639){_0x15e8ac['push'](_0x15e8ac['shift']());}};_0x2831f5(++_0x24a790);}(_0xa8fb,0xd9));var _0xba8f=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xa8fb[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0xba8f('0x0'));var util=require('util');var logger=require(_0xba8f('0x1'))('api');var moment=require(_0xba8f('0x2'));var BPromise=require('bluebird');var rp=require(_0xba8f('0x3'));var fs=require('fs');var path=require(_0xba8f('0x4'));var rimraf=require('rimraf');var config=require(_0xba8f('0x5'));var attributes=require('./chatWebsite.attributes');module[_0xba8f('0x6')]=function(_0x4b9c34,_0x234bcf){return _0x4b9c34[_0xba8f('0x7')]('ChatWebsite',attributes,{'tableName':_0xba8f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 542c85a..392dd4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb644=['client','http','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x367253,_0x15d9fb){var _0x150e8e=function(_0xbf3e57){while(--_0xbf3e57){_0x367253['push'](_0x367253['shift']());}};_0x150e8e(++_0x15d9fb);}(_0xb644,0x16c));var _0x4b64=function(_0x2fd812,_0x3638a9){_0x2fd812=_0x2fd812-0x0;var _0x12212d=_0xb644[_0x2fd812];return _0x12212d;};'use strict';var _=require(_0x4b64('0x0'));var util=require(_0x4b64('0x1'));var moment=require(_0x4b64('0x2'));var BPromise=require(_0x4b64('0x3'));var rs=require(_0x4b64('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b64('0x5'))['db'];var utils=require(_0x4b64('0x6'));var logger=require(_0x4b64('0x7'))(_0x4b64('0x8'));var config=require(_0x4b64('0x9'));var jayson=require(_0x4b64('0xa'));var client=jayson[_0x4b64('0xb')][_0x4b64('0xc')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4b64('0xd'))[_0x4b64('0xe')](socket);function respondWithRpcPromise(_0x56d364,_0x59817c,_0x49996f){return new BPromise(function(_0x5665d0,_0x138a22){return client['request'](_0x56d364,_0x49996f)[_0x4b64('0xf')](function(_0x33cfb7){logger[_0x4b64('0x10')](_0x4b64('0x11'),_0x59817c,_0x4b64('0x12'));logger[_0x4b64('0x13')](_0x4b64('0x14'),_0x59817c,_0x4b64('0x12'),JSON[_0x4b64('0x15')](_0x33cfb7));if(_0x33cfb7[_0x4b64('0x16')]){if(_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x17')]===0x1f4){logger['error'](_0x4b64('0x11'),_0x59817c,_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x18')]);return _0x138a22(_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x18')]);}logger[_0x4b64('0x16')](_0x4b64('0x11'),_0x59817c,_0x33cfb7['error'][_0x4b64('0x18')]);return _0x5665d0(_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x18')]);}else{logger['info'](_0x4b64('0x11'),_0x59817c,_0x4b64('0x12'));_0x5665d0(_0x33cfb7['result'][_0x4b64('0x18')]);}})['catch'](function(_0x44e2d0){logger[_0x4b64('0x16')](_0x4b64('0x11'),_0x59817c,_0x44e2d0);_0x138a22(_0x44e2d0);});});}
\ No newline at end of file
+var _0xb8fe=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','randomstring','ioredis'];(function(_0xb5d06f,_0x2b4284){var _0x2f9559=function(_0x479e5f){while(--_0x479e5f){_0xb5d06f['push'](_0xb5d06f['shift']());}};_0x2f9559(++_0x2b4284);}(_0xb8fe,0x15b));var _0xeb8f=function(_0x37158f,_0xc8f76c){_0x37158f=_0x37158f-0x0;var _0xbb585f=_0xb8fe[_0x37158f];return _0xbb585f;};'use strict';var _=require(_0xeb8f('0x0'));var util=require('util');var moment=require(_0xeb8f('0x1'));var BPromise=require('bluebird');var rs=require(_0xeb8f('0x2'));var fs=require('fs');var Redis=require(_0xeb8f('0x3'));var db=require(_0xeb8f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb8f('0x5'))(_0xeb8f('0x6'));var config=require(_0xeb8f('0x7'));var jayson=require(_0xeb8f('0x8'));var client=jayson[_0xeb8f('0x9')][_0xeb8f('0xa')]({'port':0x232a});config[_0xeb8f('0xb')]=_[_0xeb8f('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xeb8f('0xd'))(new Redis(config[_0xeb8f('0xb')]));require('./chatWebsite.socket')[_0xeb8f('0xe')](socket);function respondWithRpcPromise(_0xd6422,_0x13fc88,_0xbe5c60){return new BPromise(function(_0x205cd4,_0x41c786){return client[_0xeb8f('0xf')](_0xd6422,_0xbe5c60)[_0xeb8f('0x10')](function(_0x37b0dd){logger['info'](_0xeb8f('0x11'),_0x13fc88,_0xeb8f('0x12'));logger[_0xeb8f('0x13')](_0xeb8f('0x14'),_0x13fc88,_0xeb8f('0x12'),JSON[_0xeb8f('0x15')](_0x37b0dd));if(_0x37b0dd['error']){if(_0x37b0dd[_0xeb8f('0x16')][_0xeb8f('0x17')]===0x1f4){logger[_0xeb8f('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x13fc88,_0x37b0dd[_0xeb8f('0x16')][_0xeb8f('0x18')]);return _0x41c786(_0x37b0dd[_0xeb8f('0x16')][_0xeb8f('0x18')]);}logger[_0xeb8f('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x13fc88,_0x37b0dd[_0xeb8f('0x16')][_0xeb8f('0x18')]);return _0x205cd4(_0x37b0dd['error'][_0xeb8f('0x18')]);}else{logger[_0xeb8f('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x13fc88,'request\x20sent');_0x205cd4(_0x37b0dd[_0xeb8f('0x1a')][_0xeb8f('0x18')]);}})['catch'](function(_0x4d93a6){logger[_0xeb8f('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x13fc88,_0x4d93a6);_0x41c786(_0x4d93a6);});});}
\ No newline at end of file
index e7631de..50e580d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f35=['length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9f35,0x1b4));var _0x59f3=function(_0x420a16,_0x2e3ba9){_0x420a16=_0x420a16-0x0;var _0x87a709=_0x9f35[_0x420a16];return _0x87a709;};'use strict';var ChatWebsiteEvents=require(_0x59f3('0x0'));var events=[_0x59f3('0x1'),_0x59f3('0x2'),_0x59f3('0x3')];function createListener(_0x283f94,_0x433f99){return function(_0x595eb5){_0x433f99[_0x59f3('0x4')](_0x283f94,_0x595eb5);};}function removeListener(_0x2f7794,_0x2fdcd7){return function(){ChatWebsiteEvents['removeListener'](_0x2f7794,_0x2fdcd7);};}exports['register']=function(_0x22f994){for(var _0x406f1a=0x0,_0x589fe5=events[_0x59f3('0x5')];_0x406f1a<_0x589fe5;_0x406f1a++){var _0x2f00e5=events[_0x406f1a];var _0x379046=createListener(_0x59f3('0x6')+_0x2f00e5,_0x22f994);ChatWebsiteEvents['on'](_0x2f00e5,_0x379046);}};
\ No newline at end of file
+var _0xd15e=['emit','removeListener','length','chatWebsite:','./chatWebsite.events','save','update'];(function(_0x56b486,_0x53bcf5){var _0x3c9b9e=function(_0x3f28fa){while(--_0x3f28fa){_0x56b486['push'](_0x56b486['shift']());}};_0x3c9b9e(++_0x53bcf5);}(_0xd15e,0xac));var _0xed15=function(_0x3e6524,_0x2558f9){_0x3e6524=_0x3e6524-0x0;var _0x25deb3=_0xd15e[_0x3e6524];return _0x25deb3;};'use strict';var ChatWebsiteEvents=require(_0xed15('0x0'));var events=[_0xed15('0x1'),'remove',_0xed15('0x2')];function createListener(_0x496d42,_0x168ba3){return function(_0x146e6b){_0x168ba3[_0xed15('0x3')](_0x496d42,_0x146e6b);};}function removeListener(_0x3b28f4,_0x4f5f0e){return function(){ChatWebsiteEvents[_0xed15('0x4')](_0x3b28f4,_0x4f5f0e);};}exports['register']=function(_0x5609f7){for(var _0x220287=0x0,_0x392d29=events[_0xed15('0x5')];_0x220287<_0x392d29;_0x220287++){var _0x55a9e6=events[_0x220287];var _0x2599cc=createListener(_0xed15('0x6')+_0x55a9e6,_0x5609f7);ChatWebsiteEvents['on'](_0x55a9e6,_0x2599cc);}};
\ No newline at end of file
index db6eeef..dc2ad96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b2=['ensureDir','replace','/:id/offline','any','offline','addInteraction','/:id/applications','/:id/proactive_actions','addProactiveActions','addAgents','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','getApplications','getProactiveActions','/:id/fields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','diskStorage','join','server/files/images/logos/','format','originalname','single','file','root','server/files/images/avatars/','%s-%s','now','addCustomerAvatar','/:id/notify','notify','server/files','attachments'];(function(_0x144f50,_0x185941){var _0x4ec659=function(_0x5edb31){while(--_0x5edb31){_0x144f50['push'](_0x144f50['shift']());}};_0x4ec659(++_0x185941);}(_0xe3b2,0x1b9));var _0x2e3b=function(_0x2d4eba,_0x348848){_0x2d4eba=_0x2d4eba-0x0;var _0x21141d=_0xe3b2[_0x2d4eba];return _0x21141d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2e3b('0x0'));var timeout=require(_0x2e3b('0x1'));var express=require('express');var router=express[_0x2e3b('0x2')]();var fs_extra=require(_0x2e3b('0x3'));var auth=require(_0x2e3b('0x4'));var interaction=require(_0x2e3b('0x5'));var config=require(_0x2e3b('0x6'));var controller=require(_0x2e3b('0x7'));router[_0x2e3b('0x8')]('/',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xa')]);router['get'](_0x2e3b('0xb'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xc')]);router['get'](_0x2e3b('0xd'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xe')]);router[_0x2e3b('0x8')]('/:id/dispositions',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xf')]);router[_0x2e3b('0x8')](_0x2e3b('0x10'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x11')]);router[_0x2e3b('0x8')](_0x2e3b('0x12'),controller[_0x2e3b('0x13')]);router[_0x2e3b('0x8')](_0x2e3b('0x14'),controller['getAvatar']);router[_0x2e3b('0x8')](_0x2e3b('0x15'),controller[_0x2e3b('0x16')]);router[_0x2e3b('0x8')](_0x2e3b('0x17'),controller[_0x2e3b('0x18')]);router[_0x2e3b('0x8')](_0x2e3b('0x19'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x1a')]);router[_0x2e3b('0x8')](_0x2e3b('0x1b'),controller[_0x2e3b('0x1c')]);router[_0x2e3b('0x8')]('/:id/applications',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x1d')]);router[_0x2e3b('0x8')]('/:id/proactive_actions',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x1e')]);router[_0x2e3b('0x8')](_0x2e3b('0x1f'),controller['getFields']);router[_0x2e3b('0x8')](_0x2e3b('0x20'),auth['isAuthenticated'](),controller[_0x2e3b('0x21')]);router[_0x2e3b('0x8')](_0x2e3b('0x22'),auth['isAuthenticated'](),controller[_0x2e3b('0x23')]);router[_0x2e3b('0x24')]('/',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x25')]);router[_0x2e3b('0x24')](_0x2e3b('0x26'),auth[_0x2e3b('0x9')](),controller['addDisposition']);router['post'](_0x2e3b('0x10'),auth['isAuthenticated'](),controller[_0x2e3b('0x27')]);var upload=multer({'storage':multer[_0x2e3b('0x28')]({'destination':function(_0x354c7b,_0x37cd0a,_0x50914c){_0x50914c(null,path[_0x2e3b('0x29')](config['root'],_0x2e3b('0x2a')));},'filename':function(_0xb26b88,_0x5ba189,_0x2bd493){_0x2bd493(null,util[_0x2e3b('0x2b')]('%s-%s',Date['now'](),_0x5ba189[_0x2e3b('0x2c')]));}})});router[_0x2e3b('0x24')](_0x2e3b('0x12'),upload[_0x2e3b('0x2d')](_0x2e3b('0x2e')),controller['addLogo']);var upload=multer({'storage':multer[_0x2e3b('0x28')]({'destination':function(_0x44e33b,_0x2664b7,_0x30442b){_0x30442b(null,path[_0x2e3b('0x29')](config[_0x2e3b('0x2f')],_0x2e3b('0x30')));},'filename':function(_0xbb5a38,_0x2b7569,_0x452859){_0x452859(null,util[_0x2e3b('0x2b')](_0x2e3b('0x31'),Date[_0x2e3b('0x32')](),_0x2b7569[_0x2e3b('0x2c')]));}})});router[_0x2e3b('0x24')](_0x2e3b('0x14'),upload[_0x2e3b('0x2d')](_0x2e3b('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x10435b,_0x56d104,_0x167530){_0x167530(null,path[_0x2e3b('0x29')](config['root'],_0x2e3b('0x30')));},'filename':function(_0x14c389,_0xa2b7ef,_0x20d7a1){_0x20d7a1(null,util[_0x2e3b('0x2b')](_0x2e3b('0x31'),Date[_0x2e3b('0x32')](),_0xa2b7ef[_0x2e3b('0x2c')]));}})});router[_0x2e3b('0x24')](_0x2e3b('0x15'),upload[_0x2e3b('0x2d')](_0x2e3b('0x2e')),controller[_0x2e3b('0x33')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3e4a64,_0x3f767b,_0x2c77aa){_0x2c77aa(null,path[_0x2e3b('0x29')](config[_0x2e3b('0x2f')],'server/files/images/avatars/'));},'filename':function(_0x3f8a30,_0x44d1eb,_0x5c958c){_0x5c958c(null,util[_0x2e3b('0x2b')](_0x2e3b('0x31'),Date['now'](),_0x44d1eb[_0x2e3b('0x2c')]));}})});router['post']('/:id/system_avatar',upload['single'](_0x2e3b('0x2e')),controller['addSystemAvatar']);router['post'](_0x2e3b('0x34'),controller[_0x2e3b('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x2e3b('0x28')]({'destination':function(_0xbbc1a,_0x1241f7,_0x22e9fa){const _0x32be7f=path[_0x2e3b('0x29')](config[_0x2e3b('0x2f')],_0x2e3b('0x36'),_0x2e3b('0x37'),'offline-chat');fs_extra[_0x2e3b('0x38')](_0x32be7f,function(){_0x22e9fa(null,_0x32be7f);});},'filename':function(_0x51599b,_0x1dd376,_0x21258b){const _0x553ea7=_0x1dd376['originalname'][_0x2e3b('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x3dbf75=path['extname'](_0x553ea7);const _0x53362f=Date[_0x2e3b('0x32')]()+'-'+_0x553ea7['replace'](_0x3dbf75,'')+_0x3dbf75;_0x21258b(null,_0x53362f);}})});router[_0x2e3b('0x24')](_0x2e3b('0x3a'),offlineUploadMulter[_0x2e3b('0x3b')](),controller[_0x2e3b('0x3c')]);router[_0x2e3b('0x24')](_0x2e3b('0x19'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x3d')]);router[_0x2e3b('0x24')](_0x2e3b('0x3e'),auth['isAuthenticated'](),controller['addApplications']);router[_0x2e3b('0x24')](_0x2e3b('0x3f'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x40')]);router[_0x2e3b('0x24')](_0x2e3b('0x22'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x41')]);router['put'](_0x2e3b('0xd'),auth[_0x2e3b('0x9')](),controller['update']);router[_0x2e3b('0x42')](_0x2e3b('0xd'),auth[_0x2e3b('0x9')](),controller['destroy']);router[_0x2e3b('0x42')](_0x2e3b('0x26'),auth['isAuthenticated'](),controller[_0x2e3b('0x43')]);router['delete'](_0x2e3b('0x10'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x44')]);router['delete'](_0x2e3b('0x22'),auth['isAuthenticated'](),controller[_0x2e3b('0x45')]);module[_0x2e3b('0x46')]=router;
\ No newline at end of file
+var _0x37f6=['addProactiveActions','addAgents','put','delete','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields','getOfflineMessages','/:id/users','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','now','format','%s-%s','addAvatar','server/files/images/avatars/','originalname','single','file','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','offline','addInteraction'];(function(_0x537421,_0x37d705){var _0x3119d1=function(_0x3c1eda){while(--_0x3c1eda){_0x537421['push'](_0x537421['shift']());}};_0x3119d1(++_0x37d705);}(_0x37f6,0x12f));var _0x637f=function(_0x3cc6b4,_0x58b1aa){_0x3cc6b4=_0x3cc6b4-0x0;var _0x1c07b8=_0x37f6[_0x3cc6b4];return _0x1c07b8;};'use strict';var multer=require(_0x637f('0x0'));var util=require(_0x637f('0x1'));var path=require(_0x637f('0x2'));var timeout=require(_0x637f('0x3'));var express=require('express');var router=express[_0x637f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x637f('0x5'));var interaction=require(_0x637f('0x6'));var config=require(_0x637f('0x7'));var controller=require(_0x637f('0x8'));router[_0x637f('0x9')]('/',auth[_0x637f('0xa')](),controller[_0x637f('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x637f('0xc')]);router[_0x637f('0x9')](_0x637f('0xd'),auth[_0x637f('0xa')](),controller[_0x637f('0xe')]);router[_0x637f('0x9')](_0x637f('0xf'),auth[_0x637f('0xa')](),controller[_0x637f('0x10')]);router[_0x637f('0x9')](_0x637f('0x11'),auth[_0x637f('0xa')](),controller[_0x637f('0x12')]);router[_0x637f('0x9')](_0x637f('0x13'),controller[_0x637f('0x14')]);router[_0x637f('0x9')](_0x637f('0x15'),controller[_0x637f('0x16')]);router['get'](_0x637f('0x17'),controller[_0x637f('0x18')]);router[_0x637f('0x9')]('/:id/system_avatar',controller[_0x637f('0x19')]);router[_0x637f('0x9')](_0x637f('0x1a'),auth[_0x637f('0xa')](),controller[_0x637f('0x1b')]);router[_0x637f('0x9')](_0x637f('0x1c'),controller[_0x637f('0x1d')]);router[_0x637f('0x9')](_0x637f('0x1e'),auth[_0x637f('0xa')](),controller[_0x637f('0x1f')]);router[_0x637f('0x9')](_0x637f('0x20'),auth[_0x637f('0xa')](),controller[_0x637f('0x21')]);router[_0x637f('0x9')]('/:id/fields',controller[_0x637f('0x22')]);router['get']('/:id/offline_messages',auth[_0x637f('0xa')](),controller[_0x637f('0x23')]);router['get'](_0x637f('0x24'),auth[_0x637f('0xa')](),controller[_0x637f('0x25')]);router[_0x637f('0x26')]('/',auth[_0x637f('0xa')](),controller[_0x637f('0x27')]);router[_0x637f('0x26')](_0x637f('0xf'),auth['isAuthenticated'](),controller[_0x637f('0x28')]);router[_0x637f('0x26')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x637f('0x29')]);var upload=multer({'storage':multer[_0x637f('0x2a')]({'destination':function(_0x892eba,_0x317cd8,_0x38cbd5){_0x38cbd5(null,path[_0x637f('0x2b')](config[_0x637f('0x2c')],_0x637f('0x2d')));},'filename':function(_0x576a70,_0xfafd3c,_0xa75510){_0xa75510(null,util['format']('%s-%s',Date[_0x637f('0x2e')](),_0xfafd3c['originalname']));}})});router['post'](_0x637f('0x13'),upload['single']('file'),controller['addLogo']);var upload=multer({'storage':multer[_0x637f('0x2a')]({'destination':function(_0x4f0456,_0x3230ac,_0x39473f){_0x39473f(null,path['join'](config[_0x637f('0x2c')],'server/files/images/avatars/'));},'filename':function(_0x20d8fa,_0x5f113c,_0x2990cf){_0x2990cf(null,util[_0x637f('0x2f')](_0x637f('0x30'),Date['now'](),_0x5f113c['originalname']));}})});router['post'](_0x637f('0x15'),upload['single']('file'),controller[_0x637f('0x31')]);var upload=multer({'storage':multer[_0x637f('0x2a')]({'destination':function(_0x144cae,_0x2049aa,_0x418736){_0x418736(null,path[_0x637f('0x2b')](config[_0x637f('0x2c')],_0x637f('0x32')));},'filename':function(_0x55b0c4,_0x3e480e,_0x3064b9){_0x3064b9(null,util[_0x637f('0x2f')](_0x637f('0x30'),Date['now'](),_0x3e480e[_0x637f('0x33')]));}})});router['post'](_0x637f('0x17'),upload[_0x637f('0x34')](_0x637f('0x35')),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x20b763,_0x3f29f3,_0x3207fb){_0x3207fb(null,path[_0x637f('0x2b')](config[_0x637f('0x2c')],_0x637f('0x32')));},'filename':function(_0x3c9117,_0xcfa7b9,_0x17bbd7){_0x17bbd7(null,util[_0x637f('0x2f')](_0x637f('0x30'),Date[_0x637f('0x2e')](),_0xcfa7b9['originalname']));}})});router['post']('/:id/system_avatar',upload[_0x637f('0x34')](_0x637f('0x35')),controller[_0x637f('0x36')]);router['post'](_0x637f('0x37'),controller[_0x637f('0x38')]);const offlineUploadMulter=multer({'storage':multer[_0x637f('0x2a')]({'destination':function(_0x3daf04,_0xcfade7,_0xa0f132){const _0x200c80=path['join'](config[_0x637f('0x2c')],_0x637f('0x39'),_0x637f('0x3a'),_0x637f('0x3b'));fs_extra[_0x637f('0x3c')](_0x200c80,function(){_0xa0f132(null,_0x200c80);});},'filename':function(_0x513cb3,_0x397aba,_0x34725d){const _0x5d2034=_0x397aba[_0x637f('0x33')][_0x637f('0x3d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x258601=path[_0x637f('0x3e')](_0x5d2034);const _0x484b39=Date[_0x637f('0x2e')]()+'-'+_0x5d2034[_0x637f('0x3d')](_0x258601,'')+_0x258601;_0x34725d(null,_0x484b39);}})});router[_0x637f('0x26')](_0x637f('0x3f'),offlineUploadMulter[_0x637f('0x40')](),controller[_0x637f('0x41')]);router[_0x637f('0x26')](_0x637f('0x1a'),auth[_0x637f('0xa')](),controller[_0x637f('0x42')]);router['post'](_0x637f('0x1e'),auth['isAuthenticated'](),controller['addApplications']);router[_0x637f('0x26')]('/:id/proactive_actions',auth[_0x637f('0xa')](),controller[_0x637f('0x43')]);router[_0x637f('0x26')](_0x637f('0x24'),auth[_0x637f('0xa')](),controller[_0x637f('0x44')]);router[_0x637f('0x45')](_0x637f('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x637f('0x46')](_0x637f('0xd'),auth[_0x637f('0xa')](),controller['destroy']);router[_0x637f('0x46')](_0x637f('0xf'),auth[_0x637f('0xa')](),controller[_0x637f('0x47')]);router['delete'](_0x637f('0x11'),auth[_0x637f('0xa')](),controller['removeAnswers']);router[_0x637f('0x46')](_0x637f('0x24'),auth[_0x637f('0xa')](),controller[_0x637f('0x48')]);module[_0x637f('0x49')]=router;
\ No newline at end of file
index f8c9837..4b5104a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf96b=['Google','sequelize','exports','STRING','ENUM','AmazonAWS'];(function(_0x2c7483,_0x2cc8b5){var _0x4930c5=function(_0x4622ac){while(--_0x4622ac){_0x2c7483['push'](_0x2c7483['shift']());}};_0x4930c5(++_0x2cc8b5);}(_0xf96b,0x109));var _0xbf96=function(_0x3b1740,_0x148c0f){_0x3b1740=_0x3b1740-0x0;var _0x32725f=_0xf96b[_0x3b1740];return _0x32725f;};'use strict';var Sequelize=require(_0xbf96('0x0'));module[_0xbf96('0x1')]={'name':{'type':Sequelize[_0xbf96('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xbf96('0x3')](_0xbf96('0x4'),_0xbf96('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xbf96('0x2')]},'data2':{'type':Sequelize[_0xbf96('0x2')]}};
\ No newline at end of file
+var _0x5a2a=['exports','STRING','ENUM','sequelize'];(function(_0x4a77e4,_0x556f71){var _0x1c68d8=function(_0x5d8ddf){while(--_0x5d8ddf){_0x4a77e4['push'](_0x4a77e4['shift']());}};_0x1c68d8(++_0x556f71);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0x357d7e,_0x5c3ef7){_0x357d7e=_0x357d7e-0x0;var _0x32a73c=_0x5a2a[_0x357d7e];return _0x32a73c;};'use strict';var Sequelize=require(_0xa5a2('0x0'));module[_0xa5a2('0x1')]={'name':{'type':Sequelize[_0xa5a2('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xa5a2('0x3')]('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xa5a2('0x2')]}};
\ No newline at end of file
index 4895512..328bc3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','include','find','create','body','params','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','CloudProvider','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length'];(function(_0x1346f7,_0x4ef4f8){var _0xfbc40e=function(_0x1ef74e){while(--_0x1ef74e){_0x1346f7['push'](_0x1346f7['shift']());}};_0xfbc40e(++_0x4ef4f8);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4d093a,_0x15d59c){_0x4d093a=_0x4d093a-0x0;var _0x5d7227=_0x0b0e[_0x4d093a];return _0x5d7227;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['CloudProvider'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'all':!![]}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x41')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x402a0e){_0x36d137[_0xe0b0('0x42')]=_0x402a0e;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))[_0xe0b0('0x43')](handleError(_0x5b7a64,null));};exports[_0xe0b0('0x44')]=function(_0x52ffe4,_0x2aad80){var _0x309bbf={'raw':!![],'where':{'id':_0x52ffe4['params']['id']}},_0x528818={};_0x528818[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db['CloudProvider'][_0xe0b0('0x2b')]);_0x528818[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x52ffe4[_0xe0b0('0x2e')]);_0x528818[_0xe0b0('0x39')]=_['intersection'](_0x528818['model'],_0x528818['query']);_0x309bbf[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x528818['model'],qs[_0xe0b0('0x33')](_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x309bbf[_0xe0b0('0x32')]=_0x309bbf[_0xe0b0('0x32')]['length']?_0x309bbf['attributes']:_0x528818[_0xe0b0('0x31')];if(_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x309bbf[_0xe0b0('0x45')]=[{'all':!![]}];}_0x309bbf=_[_0xe0b0('0x3b')]({},_0x309bbf,_0x52ffe4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x46')](_0x309bbf)['then'](handleEntityNotFound(_0x2aad80,null))['then'](respondWithResult(_0x2aad80,null))['catch'](handleError(_0x2aad80,null));};exports[_0xe0b0('0x47')]=function(_0x2184d3,_0x2419ce){return db[_0xe0b0('0x2a')]['create'](_0x2184d3[_0xe0b0('0x48')],{})[_0xe0b0('0x23')](respondWithResult(_0x2419ce,0xc9))['catch'](handleError(_0x2419ce,null));};exports['update']=function(_0x2365be,_0x1bc6e0){if(_0x2365be['body']['id']){delete _0x2365be[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x2365be['params']['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x1bc6e0,null))['then'](saveUpdates(_0x2365be[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,null))[_0xe0b0('0x43')](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x24')]=function(_0x19ee71,_0xf9e694){return db['CloudProvider']['find']({'where':{'id':_0x19ee71[_0xe0b0('0x49')]['id']}})['then'](handleEntityNotFound(_0xf9e694,null))['then'](removeEntity(_0xf9e694,null))[_0xe0b0('0x43')](handleError(_0xf9e694,null));};
\ No newline at end of file
+var _0x0b0e=['hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','include','find','create','body','params','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','CloudProvider','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length'];(function(_0x6bb9d,_0x37e070){var _0x5b865b=function(_0x4fbc40){while(--_0x4fbc40){_0x6bb9d['push'](_0x6bb9d['shift']());}};_0x5b865b(++_0x37e070);}(_0x0b0e,0x187));var _0xe0b0=function(_0x27d8bc,_0x19e010){_0x27d8bc=_0x27d8bc-0x0;var _0x4b04cb=_0x0b0e[_0x27d8bc];return _0x4b04cb;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['CloudProvider'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'all':!![]}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x41')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x402a0e){_0x36d137[_0xe0b0('0x42')]=_0x402a0e;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))[_0xe0b0('0x43')](handleError(_0x5b7a64,null));};exports[_0xe0b0('0x44')]=function(_0x52ffe4,_0x2aad80){var _0x309bbf={'raw':!![],'where':{'id':_0x52ffe4['params']['id']}},_0x528818={};_0x528818[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db['CloudProvider'][_0xe0b0('0x2b')]);_0x528818[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x52ffe4[_0xe0b0('0x2e')]);_0x528818[_0xe0b0('0x39')]=_['intersection'](_0x528818['model'],_0x528818['query']);_0x309bbf[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x528818['model'],qs[_0xe0b0('0x33')](_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x309bbf[_0xe0b0('0x32')]=_0x309bbf[_0xe0b0('0x32')]['length']?_0x309bbf['attributes']:_0x528818[_0xe0b0('0x31')];if(_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x309bbf[_0xe0b0('0x45')]=[{'all':!![]}];}_0x309bbf=_[_0xe0b0('0x3b')]({},_0x309bbf,_0x52ffe4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x46')](_0x309bbf)['then'](handleEntityNotFound(_0x2aad80,null))['then'](respondWithResult(_0x2aad80,null))['catch'](handleError(_0x2aad80,null));};exports[_0xe0b0('0x47')]=function(_0x2184d3,_0x2419ce){return db[_0xe0b0('0x2a')]['create'](_0x2184d3[_0xe0b0('0x48')],{})[_0xe0b0('0x23')](respondWithResult(_0x2419ce,0xc9))['catch'](handleError(_0x2419ce,null));};exports['update']=function(_0x2365be,_0x1bc6e0){if(_0x2365be['body']['id']){delete _0x2365be[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x2365be['params']['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x1bc6e0,null))['then'](saveUpdates(_0x2365be[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,null))[_0xe0b0('0x43')](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x24')]=function(_0x19ee71,_0xf9e694){return db['CloudProvider']['find']({'where':{'id':_0x19ee71[_0xe0b0('0x49')]['id']}})['then'](handleEntityNotFound(_0xf9e694,null))['then'](removeEntity(_0xf9e694,null))[_0xe0b0('0x43')](handleError(_0xf9e694,null));};
\ No newline at end of file
index 822c8b5..fab6e80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb17c=['moment','bluebird','request-promise','path','../../config/environment','./cloudProvider.attributes','exports','define','util','../../config/logger','api'];(function(_0x419523,_0x31c326){var _0x5f06e9=function(_0x1c2e52){while(--_0x1c2e52){_0x419523['push'](_0x419523['shift']());}};_0x5f06e9(++_0x31c326);}(_0xb17c,0x1e1));var _0xcb17=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xb17c[_0x500419];return _0x241c1a;};'use strict';var _=require('lodash');var util=require(_0xcb17('0x0'));var logger=require(_0xcb17('0x1'))(_0xcb17('0x2'));var moment=require(_0xcb17('0x3'));var BPromise=require(_0xcb17('0x4'));var rp=require(_0xcb17('0x5'));var fs=require('fs');var path=require(_0xcb17('0x6'));var rimraf=require('rimraf');var config=require(_0xcb17('0x7'));var attributes=require(_0xcb17('0x8'));module[_0xcb17('0x9')]=function(_0x472fdf,_0x400192){return _0x472fdf[_0xcb17('0xa')]('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2dbc=['path','../../config/environment','exports','cloud_providers','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x292872,_0x5851d6){var _0x34d038=function(_0x5b1bbb){while(--_0x5b1bbb){_0x292872['push'](_0x292872['shift']());}};_0x34d038(++_0x5851d6);}(_0x2dbc,0x143));var _0xc2db=function(_0x2f87cd,_0xcaf299){_0x2f87cd=_0x2f87cd-0x0;var _0x5d7eda=_0x2dbc[_0x2f87cd];return _0x5d7eda;};'use strict';var _=require(_0xc2db('0x0'));var util=require(_0xc2db('0x1'));var logger=require(_0xc2db('0x2'))(_0xc2db('0x3'));var moment=require(_0xc2db('0x4'));var BPromise=require(_0xc2db('0x5'));var rp=require(_0xc2db('0x6'));var fs=require('fs');var path=require(_0xc2db('0x7'));var rimraf=require('rimraf');var config=require(_0xc2db('0x8'));var attributes=require('./cloudProvider.attributes');module[_0xc2db('0x9')]=function(_0x2bcd64,_0x527ccc){return _0x2bcd64['define']('CloudProvider',attributes,{'tableName':_0xc2db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b7df3c6..1cf2041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90a=['request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','rpc','../../config/environment','http'];(function(_0x289ba0,_0x13b0f9){var _0x1dbe18=function(_0xae91ce){while(--_0xae91ce){_0x289ba0['push'](_0x289ba0['shift']());}};_0x1dbe18(++_0x13b0f9);}(_0xb90a,0x12a));var _0xab90=function(_0x300d4d,_0xdaaaa8){_0x300d4d=_0x300d4d-0x0;var _0x398ebd=_0xb90a[_0x300d4d];return _0x398ebd;};'use strict';var _=require(_0xab90('0x0'));var util=require(_0xab90('0x1'));var moment=require('moment');var BPromise=require(_0xab90('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('../../config/logger')(_0xab90('0x3'));var config=require(_0xab90('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xab90('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x426588,_0x275bf7,_0x4b28a6){return new BPromise(function(_0x2406e1,_0xc5ca04){return client[_0xab90('0x6')](_0x426588,_0x4b28a6)[_0xab90('0x7')](function(_0x93af2f){logger[_0xab90('0x8')](_0xab90('0x9'),_0x275bf7,_0xab90('0xa'));logger['debug'](_0xab90('0xb'),_0x275bf7,_0xab90('0xa'),JSON[_0xab90('0xc')](_0x93af2f));if(_0x93af2f[_0xab90('0xd')]){if(_0x93af2f[_0xab90('0xd')]['code']===0x1f4){logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);return _0xc5ca04(_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);}logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);return _0x2406e1(_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);}else{logger[_0xab90('0x8')]('CloudProvider,\x20%s,\x20%s',_0x275bf7,_0xab90('0xa'));_0x2406e1(_0x93af2f['result'][_0xab90('0xe')]);}})[_0xab90('0xf')](function(_0x526bee){logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x526bee);_0xc5ca04(_0x526bee);});});}
\ No newline at end of file
+var _0xa467=['../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0xa467,0x143));var _0x7a46=function(_0x851269,_0x55e506){_0x851269=_0x851269-0x0;var _0xcc5890=_0xa467[_0x851269];return _0xcc5890;};'use strict';var _=require(_0x7a46('0x0'));var util=require(_0x7a46('0x1'));var moment=require(_0x7a46('0x2'));var BPromise=require(_0x7a46('0x3'));var rs=require(_0x7a46('0x4'));var fs=require('fs');var Redis=require(_0x7a46('0x5'));var db=require(_0x7a46('0x6'))['db'];var utils=require(_0x7a46('0x7'));var logger=require(_0x7a46('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7a46('0x9'));var client=jayson[_0x7a46('0xa')][_0x7a46('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x463cdf,_0x6d8fce,_0x550c38){return new BPromise(function(_0x341d9e,_0x1f8b07){return client[_0x7a46('0xc')](_0x463cdf,_0x550c38)[_0x7a46('0xd')](function(_0x382b56){logger[_0x7a46('0xe')]('CloudProvider,\x20%s,\x20%s',_0x6d8fce,_0x7a46('0xf'));logger['debug'](_0x7a46('0x10'),_0x6d8fce,'request\x20sent',JSON[_0x7a46('0x11')](_0x382b56));if(_0x382b56[_0x7a46('0x12')]){if(_0x382b56[_0x7a46('0x12')][_0x7a46('0x13')]===0x1f4){logger[_0x7a46('0x12')]('CloudProvider,\x20%s,\x20%s',_0x6d8fce,_0x382b56[_0x7a46('0x12')][_0x7a46('0x14')]);return _0x1f8b07(_0x382b56[_0x7a46('0x12')][_0x7a46('0x14')]);}logger[_0x7a46('0x12')]('CloudProvider,\x20%s,\x20%s',_0x6d8fce,_0x382b56[_0x7a46('0x12')]['message']);return _0x341d9e(_0x382b56['error'][_0x7a46('0x14')]);}else{logger[_0x7a46('0xe')]('CloudProvider,\x20%s,\x20%s',_0x6d8fce,_0x7a46('0xf'));_0x341d9e(_0x382b56['result'][_0x7a46('0x14')]);}})[_0x7a46('0x15')](function(_0x50e40e){logger[_0x7a46('0x12')]('CloudProvider,\x20%s,\x20%s',_0x6d8fce,_0x50e40e);_0x1f8b07(_0x50e40e);});});}
\ No newline at end of file
index 15b39d5..0136013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbdd=['post','create','put','/:id','update','delete','destroy','util','connect-timeout','express','../../components/interaction/service','get','isAuthenticated','index','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbbdd,0x1ba));var _0xdbbd=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0xbbdd[_0x1a9204];return _0x17ca68;};'use strict';var multer=require('multer');var util=require(_0xdbbd('0x0'));var path=require('path');var timeout=require(_0xdbbd('0x1'));var express=require(_0xdbbd('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdbbd('0x3'));var config=require('../../config/environment');var controller=require('./cloudProvider.controller');router[_0xdbbd('0x4')]('/',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0x6')]);router[_0xdbbd('0x4')]('/:id',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0x7')]);router[_0xdbbd('0x8')]('/',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0x9')]);router[_0xdbbd('0xa')](_0xdbbd('0xb'),auth[_0xdbbd('0x5')](),controller[_0xdbbd('0xc')]);router[_0xdbbd('0xd')]('/:id',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x518c=['create','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','index','isAuthenticated','show'];(function(_0x2c603b,_0x2e426f){var _0x5e1535=function(_0x49c2a8){while(--_0x49c2a8){_0x2c603b['push'](_0x2c603b['shift']());}};_0x5e1535(++_0x2e426f);}(_0x518c,0xd8));var _0xc518=function(_0x370af1,_0x2e1273){_0x370af1=_0x370af1-0x0;var _0x425aad=_0x518c[_0x370af1];return _0x425aad;};'use strict';var multer=require(_0xc518('0x0'));var util=require(_0xc518('0x1'));var path=require(_0xc518('0x2'));var timeout=require('connect-timeout');var express=require(_0xc518('0x3'));var router=express[_0xc518('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc518('0x5'));var config=require(_0xc518('0x6'));var controller=require(_0xc518('0x7'));router[_0xc518('0x8')]('/',auth['isAuthenticated'](),controller[_0xc518('0x9')]);router[_0xc518('0x8')]('/:id',auth[_0xc518('0xa')](),controller[_0xc518('0xb')]);router['post']('/',auth[_0xc518('0xa')](),controller[_0xc518('0xc')]);router[_0xc518('0xd')](_0xc518('0xe'),auth[_0xc518('0xa')](),controller[_0xc518('0xf')]);router[_0xc518('0x10')](_0xc518('0xe'),auth['isAuthenticated'](),controller[_0xc518('0x11')]);module[_0xc518('0x12')]=router;
\ No newline at end of file
index 6e601a9..a971f56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d3=['exports','STRING','name'];(function(_0x236437,_0x541f5d){var _0x11698b=function(_0x2009d2){while(--_0x2009d2){_0x236437['push'](_0x236437['shift']());}};_0x11698b(++_0x541f5d);}(_0x10d3,0x7e));var _0x310d=function(_0x25581d,_0x211ce8){_0x25581d=_0x25581d-0x0;var _0x1cf610=_0x10d3[_0x25581d];return _0x1cf610;};'use strict';var Sequelize=require('sequelize');module[_0x310d('0x0')]={'name':{'type':Sequelize[_0x310d('0x1')],'unique':_0x310d('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x310d('0x1')]},'website':{'type':Sequelize[_0x310d('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x310d('0x1')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x310d('0x1')]},'postalCode':{'type':Sequelize[_0x310d('0x1')]},'city':{'type':Sequelize[_0x310d('0x1')]},'country':{'type':Sequelize[_0x310d('0x1')]},'email':{'type':Sequelize[_0x310d('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x310d('0x1')]},'sCity':{'type':Sequelize[_0x310d('0x1')]},'sCountry':{'type':Sequelize[_0x310d('0x1')]},'description':{'type':Sequelize[_0x310d('0x1')]}};
\ No newline at end of file
+var _0x06da=['STRING'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x06da,0x8f));var _0xa06d=function(_0x1e6e33,_0x1be734){_0x1e6e33=_0x1e6e33-0x0;var _0x39896b=_0x06da[_0x1e6e33];return _0x39896b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xa06d('0x0')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xa06d('0x0')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0xa06d('0x0')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xa06d('0x0')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xa06d('0x0')]},'postalCode':{'type':Sequelize[_0xa06d('0x0')]},'city':{'type':Sequelize[_0xa06d('0x0')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xa06d('0x0')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xa06d('0x0')]},'sStreet':{'type':Sequelize[_0xa06d('0x0')]},'sPostalCode':{'type':Sequelize[_0xa06d('0x0')]},'sCity':{'type':Sequelize[_0xa06d('0x0')]},'sCountry':{'type':Sequelize[_0xa06d('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ad86549..ed2ebb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3607=['getContacts','findOne','eml-format','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','set','apply','save','update','then','destroy','UserProfileResource','error','stack','name','index','CmCompany','describe','keys','query','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map','options','count','includeAll','include','findAll','rows','catch','params','rawAttributes','fields','merge','find','create','body','user','get','role','Companies','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids'];(function(_0x2fc284,_0x5d271c){var _0x221234=function(_0x39fb00){while(--_0x39fb00){_0x2fc284['push'](_0x2fc284['shift']());}};_0x221234(++_0x5d271c);}(_0x3607,0x1f4));var _0x7360=function(_0x1b92c3,_0x37e4ce){_0x1b92c3=_0x1b92c3-0x0;var _0x306e29=_0x3607[_0x1b92c3];return _0x306e29;};'use strict';var emlformat=require(_0x7360('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7360('0x1'));var moment=require('moment');var BPromise=require(_0x7360('0x2'));var Mustache=require(_0x7360('0x3'));var util=require(_0x7360('0x4'));var path=require(_0x7360('0x5'));var sox=require(_0x7360('0x6'));var csv=require(_0x7360('0x7'));var ejs=require(_0x7360('0x8'));var fs=require('fs');var fs_extra=require(_0x7360('0x9'));var _=require(_0x7360('0xa'));var squel=require(_0x7360('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7360('0x7'));var querystring=require('querystring');var Papa=require(_0x7360('0xc'));var Redis=require(_0x7360('0xd'));var authService=require(_0x7360('0xe'));var qs=require(_0x7360('0xf'));var as=require(_0x7360('0x10'));var hardwareService=require(_0x7360('0x11'));var logger=require('../../config/logger')(_0x7360('0x12'));var utils=require(_0x7360('0x13'));var config=require(_0x7360('0x14'));var licenseUtil=require(_0x7360('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcf212c,_0x5d7869){_0x5d7869=_0x5d7869||0xcc;return function(_0x17ab16){if(_0x17ab16){return _0xcf212c[_0x7360('0x16')](_0x5d7869);}return _0xcf212c['status'](_0x5d7869)[_0x7360('0x17')]();};}function respondWithResult(_0x52807c,_0x11c830){_0x11c830=_0x11c830||0xc8;return function(_0x54281e){if(_0x54281e){return _0x52807c[_0x7360('0x18')](_0x11c830)[_0x7360('0x19')](_0x54281e);}};}function respondWithFilteredResult(_0x47dbef,_0x3dfe76){return function(_0x425a10){if(_0x425a10){var _0x1ec127=typeof _0x3dfe76[_0x7360('0x1a')]===_0x7360('0x1b')&&typeof _0x3dfe76[_0x7360('0x1c')]===_0x7360('0x1b');var _0x1c0218=_0x425a10['count'];var _0x5cef2e=_0x1ec127?0x0:_0x3dfe76['offset'];var _0xe3c300=_0x1ec127?_0x425a10['count']:_0x3dfe76['offset']+_0x3dfe76[_0x7360('0x1c')];var _0x3b0fa8;if(_0xe3c300>=_0x1c0218){_0xe3c300=_0x1c0218;_0x3b0fa8=0xc8;}else{_0x3b0fa8=0xce;}_0x47dbef[_0x7360('0x18')](_0x3b0fa8);return _0x47dbef[_0x7360('0x1d')]('Content-Range',_0x5cef2e+'-'+_0xe3c300+'/'+_0x1c0218)[_0x7360('0x19')](_0x425a10);}return null;};}function patchUpdates(_0x3b1d67){return function(_0x12f9db){try{jsonpatch[_0x7360('0x1e')](_0x12f9db,_0x3b1d67,!![]);}catch(_0x33de5b){return BPromise['reject'](_0x33de5b);}return _0x12f9db[_0x7360('0x1f')]();};}function saveUpdates(_0xa4b64a,_0xd6833c){return function(_0x13cca3){if(_0x13cca3){return _0x13cca3[_0x7360('0x20')](_0xa4b64a)[_0x7360('0x21')](function(_0x1a931f){return _0x1a931f;});}return null;};}function removeEntity(_0x2723c2,_0x1e41a3){return function(_0x16feba){if(_0x16feba){return _0x16feba[_0x7360('0x22')]()[_0x7360('0x21')](function(){var _0x3debf0=_0x16feba['get']({'plain':!![]});var _0x23c780='Companies';return db[_0x7360('0x23')][_0x7360('0x22')]({'where':{'type':_0x23c780,'resourceId':_0x3debf0['id']}})[_0x7360('0x21')](function(){return _0x16feba;});})[_0x7360('0x21')](function(){_0x2723c2[_0x7360('0x18')](0xcc)[_0x7360('0x17')]();});}};}function handleEntityNotFound(_0x20a72d,_0x7a6532){return function(_0x576c15){if(!_0x576c15){_0x20a72d[_0x7360('0x16')](0x194);}return _0x576c15;};}function handleError(_0x3f619c,_0x23f56d){_0x23f56d=_0x23f56d||0x1f4;return function(_0x23d2fc){logger[_0x7360('0x24')](_0x23d2fc[_0x7360('0x25')]);if(_0x23d2fc[_0x7360('0x26')]){delete _0x23d2fc[_0x7360('0x26')];}_0x3f619c[_0x7360('0x18')](_0x23f56d)['send'](_0x23d2fc);};}exports[_0x7360('0x27')]=function(_0x2394a6,_0x35c233){var _0x149890={},_0x20e5b0={},_0x281d58={'count':0x0,'rows':[]};return db[_0x7360('0x28')][_0x7360('0x29')]()[_0x7360('0x21')](function(_0x33d495){_0x20e5b0['model']=_[_0x7360('0x2a')](_0x33d495);_0x20e5b0[_0x7360('0x2b')]=_['keys'](_0x2394a6[_0x7360('0x2b')]);_0x20e5b0['filters']=_[_0x7360('0x2c')](_0x20e5b0['model'],_0x20e5b0[_0x7360('0x2b')]);_0x149890[_0x7360('0x2d')]=_[_0x7360('0x2c')](_0x20e5b0[_0x7360('0x2e')],qs['fields'](_0x2394a6[_0x7360('0x2b')]['fields']));_0x149890['attributes']=_0x149890[_0x7360('0x2d')][_0x7360('0x2f')]?_0x149890[_0x7360('0x2d')]:_0x20e5b0['model'];if(!_0x2394a6[_0x7360('0x2b')][_0x7360('0x30')](_0x7360('0x31'))){_0x149890[_0x7360('0x1c')]=qs[_0x7360('0x1c')](_0x2394a6[_0x7360('0x2b')][_0x7360('0x1c')]);_0x149890['offset']=qs[_0x7360('0x1a')](_0x2394a6[_0x7360('0x2b')][_0x7360('0x1a')]);}_0x149890[_0x7360('0x32')]=qs['sort'](_0x2394a6[_0x7360('0x2b')][_0x7360('0x33')]);_0x149890[_0x7360('0x34')]=qs[_0x7360('0x35')](_[_0x7360('0x36')](_0x2394a6['query'],_0x20e5b0['filters']),_0x33d495);if(_0x2394a6[_0x7360('0x2b')][_0x7360('0x37')]){_0x149890['where']=_['merge'](_0x149890[_0x7360('0x34')],{'$or':_[_0x7360('0x38')](_0x149890[_0x7360('0x2d')],function(_0x17930c){var _0xbf7319={};_0xbf7319[_0x17930c]={'$like':'%'+_0x2394a6[_0x7360('0x2b')][_0x7360('0x37')]+'%'};return _0xbf7319;})});}_0x149890=_['merge']({},_0x149890,_0x2394a6[_0x7360('0x39')]);var _0x7fa5eb={'where':_0x149890[_0x7360('0x34')]};return db[_0x7360('0x28')][_0x7360('0x3a')](_0x7fa5eb)[_0x7360('0x21')](function(_0x3252c7){_0x281d58['count']=_0x3252c7;if(_0x2394a6[_0x7360('0x2b')][_0x7360('0x3b')]){_0x149890[_0x7360('0x3c')]=[{'all':!![]}];}return db[_0x7360('0x28')][_0x7360('0x3d')](_0x149890);})[_0x7360('0x21')](function(_0x39bcae){_0x281d58[_0x7360('0x3e')]=_0x39bcae;return _0x281d58;})['then'](respondWithFilteredResult(_0x35c233,_0x149890))['catch'](handleError(_0x35c233,null));})[_0x7360('0x3f')](handleError(_0x35c233,null));};exports['show']=function(_0x4bab1e,_0x321d99){var _0x72ebbc={'raw':![],'where':{'id':_0x4bab1e[_0x7360('0x40')]['id']}},_0x3bddcd={};_0x3bddcd[_0x7360('0x2e')]=_['keys'](db[_0x7360('0x28')][_0x7360('0x41')]);_0x3bddcd[_0x7360('0x2b')]=_[_0x7360('0x2a')](_0x4bab1e[_0x7360('0x2b')]);_0x3bddcd[_0x7360('0x35')]=_['intersection'](_0x3bddcd['model'],_0x3bddcd['query']);_0x72ebbc[_0x7360('0x2d')]=_[_0x7360('0x2c')](_0x3bddcd[_0x7360('0x2e')],qs[_0x7360('0x42')](_0x4bab1e[_0x7360('0x2b')][_0x7360('0x42')]));_0x72ebbc['attributes']=_0x72ebbc[_0x7360('0x2d')][_0x7360('0x2f')]?_0x72ebbc[_0x7360('0x2d')]:_0x3bddcd['model'];if(_0x4bab1e[_0x7360('0x2b')][_0x7360('0x3b')]){_0x72ebbc['include']=[{'all':!![]}];}_0x72ebbc=_[_0x7360('0x43')]({},_0x72ebbc,_0x4bab1e['options']);return db[_0x7360('0x28')][_0x7360('0x44')](_0x72ebbc)[_0x7360('0x21')](handleEntityNotFound(_0x321d99,null))['then'](respondWithResult(_0x321d99,null))[_0x7360('0x3f')](handleError(_0x321d99,null));};exports[_0x7360('0x45')]=function(_0x46d49c,_0x422283){return db[_0x7360('0x28')][_0x7360('0x45')](_0x46d49c[_0x7360('0x46')],{})[_0x7360('0x21')](function(_0x2cca09){var _0x44feb3=_0x46d49c[_0x7360('0x47')][_0x7360('0x48')]({'plain':!![]});if(!_0x44feb3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x44feb3[_0x7360('0x49')]==='user'){var _0x1da2be=_0x2cca09[_0x7360('0x48')]({'plain':!![]});var _0x30b4e1=_0x7360('0x4a');return db[_0x7360('0x4b')][_0x7360('0x44')]({'where':{'name':_0x30b4e1,'userProfileId':_0x44feb3['userProfileId']},'raw':!![]})[_0x7360('0x21')](function(_0x376342){if(_0x376342&&_0x376342[_0x7360('0x4c')]===0x0){return db[_0x7360('0x23')][_0x7360('0x45')]({'name':_0x1da2be[_0x7360('0x26')],'resourceId':_0x1da2be['id'],'type':_0x376342[_0x7360('0x26')],'sectionId':_0x376342['id']},{})[_0x7360('0x21')](function(){return _0x2cca09;});}else{return _0x2cca09;}})[_0x7360('0x3f')](function(_0x547a4d){logger[_0x7360('0x24')](_0x7360('0x4d'),_0x547a4d);throw _0x547a4d;});}return _0x2cca09;})['then'](respondWithResult(_0x422283,0xc9))[_0x7360('0x3f')](handleError(_0x422283,null));};exports[_0x7360('0x20')]=function(_0x15cc73,_0x5512cb){if(_0x15cc73[_0x7360('0x46')]['id']){delete _0x15cc73[_0x7360('0x46')]['id'];}return db['CmCompany'][_0x7360('0x44')]({'where':{'id':_0x15cc73[_0x7360('0x40')]['id']}})[_0x7360('0x21')](handleEntityNotFound(_0x5512cb,null))[_0x7360('0x21')](saveUpdates(_0x15cc73[_0x7360('0x46')],null))[_0x7360('0x21')](respondWithResult(_0x5512cb,null))[_0x7360('0x3f')](handleError(_0x5512cb,null));};exports[_0x7360('0x22')]=function(_0x52d88d,_0x44403a){return db[_0x7360('0x28')]['find']({'where':{'id':_0x52d88d['params']['id']}})[_0x7360('0x21')](handleEntityNotFound(_0x44403a,null))[_0x7360('0x21')](removeEntity(_0x44403a,null))[_0x7360('0x3f')](handleError(_0x44403a,null));};exports['describe']=function(_0x21bdc1,_0x91750f){return db[_0x7360('0x28')][_0x7360('0x29')]()[_0x7360('0x21')](respondWithResult(_0x91750f,null))[_0x7360('0x3f')](handleError(_0x91750f,null));};exports[_0x7360('0x4e')]=function(_0x5e474,_0x2f7405,_0x4dd272){return db[_0x7360('0x4f')]['find']({'where':{'id':_0x5e474['params']['id']}})['then'](handleEntityNotFound(_0x2f7405,null))[_0x7360('0x21')](function(_0x1a8904){if(_0x1a8904){return _0x1a8904['addContacts'](_0x5e474['body'][_0x7360('0x50')],_['omit'](_0x5e474['body'],[_0x7360('0x50'),'id'])||{});}})[_0x7360('0x21')](respondWithResult(_0x2f7405,null))[_0x7360('0x3f')](handleError(_0x2f7405,null));};exports[_0x7360('0x51')]=function(_0x16920f,_0x27556b,_0x3823d7){var _0x1fe8a2={};var _0x366896={};var _0x2df15f;var _0x6dea06;return db[_0x7360('0x28')][_0x7360('0x52')]({'where':{'id':_0x16920f['params']['id']}})['then'](handleEntityNotFound(_0x27556b,null))['then'](function(_0x19ec51){if(_0x19ec51){_0x2df15f=_0x19ec51;_0x366896['model']=_[_0x7360('0x2a')](db[_0x7360('0x4f')]['rawAttributes']);_0x366896[_0x7360('0x2b')]=_[_0x7360('0x2a')](_0x16920f[_0x7360('0x2b')]);_0x366896[_0x7360('0x35')]=_[_0x7360('0x2c')](_0x366896[_0x7360('0x2e')],_0x366896['query']);_0x1fe8a2[_0x7360('0x2d')]=_[_0x7360('0x2c')](_0x366896[_0x7360('0x2e')],qs[_0x7360('0x42')](_0x16920f['query'][_0x7360('0x42')]));_0x1fe8a2[_0x7360('0x2d')]=_0x1fe8a2[_0x7360('0x2d')]['length']?_0x1fe8a2['attributes']:_0x366896[_0x7360('0x2e')];_0x1fe8a2[_0x7360('0x32')]=qs[_0x7360('0x33')](_0x16920f[_0x7360('0x2b')]['sort']);_0x1fe8a2['where']=qs[_0x7360('0x35')](_['pick'](_0x16920f[_0x7360('0x2b')],_0x366896[_0x7360('0x35')]));if(_0x16920f[_0x7360('0x2b')][_0x7360('0x37')]){_0x1fe8a2[_0x7360('0x34')]=_[_0x7360('0x43')](_0x1fe8a2[_0x7360('0x34')],{'$or':_[_0x7360('0x38')](_0x1fe8a2[_0x7360('0x2d')],function(_0x4559a4){var _0x5712e1={};_0x5712e1[_0x4559a4]={'$like':'%'+_0x16920f[_0x7360('0x2b')]['filter']+'%'};return _0x5712e1;})});}_0x1fe8a2=_[_0x7360('0x43')]({},_0x1fe8a2,_0x16920f[_0x7360('0x39')]);return _0x2df15f[_0x7360('0x51')](_0x1fe8a2);}})[_0x7360('0x21')](function(_0x314fdf){if(_0x314fdf){_0x6dea06=_0x314fdf[_0x7360('0x2f')];if(!_0x16920f['query'][_0x7360('0x30')](_0x7360('0x31'))){_0x1fe8a2['limit']=qs[_0x7360('0x1c')](_0x16920f[_0x7360('0x2b')][_0x7360('0x1c')]);_0x1fe8a2[_0x7360('0x1a')]=qs[_0x7360('0x1a')](_0x16920f[_0x7360('0x2b')][_0x7360('0x1a')]);}return _0x2df15f[_0x7360('0x51')](_0x1fe8a2);}})['then'](function(_0x3fcbe2){if(_0x3fcbe2){return _0x3fcbe2?{'count':_0x6dea06,'rows':_0x3fcbe2}:null;}})[_0x7360('0x21')](respondWithResult(_0x27556b,null))['catch'](handleError(_0x27556b,null));};
\ No newline at end of file
+var _0xc8eb=['get','Companies','UserProfileResource','error','stack','name','send','describe','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','options','CmCompany','include','findAll','catch','show','params','rawAttributes','find','create','body','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','ids','omit','getContacts','findOne','CmContact','order','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy'];(function(_0x19bdce,_0x171c86){var _0x75be74=function(_0x2c5a92){while(--_0x2c5a92){_0x19bdce['push'](_0x19bdce['shift']());}};_0x75be74(++_0x171c86);}(_0xc8eb,0x86));var _0xbc8e=function(_0x2ca616,_0x384ec8){_0x2ca616=_0x2ca616-0x0;var _0x53155f=_0xc8eb[_0x2ca616];return _0x53155f;};'use strict';var emlformat=require(_0xbc8e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbc8e('0x1'));var jsonpatch=require(_0xbc8e('0x2'));var rp=require(_0xbc8e('0x3'));var moment=require(_0xbc8e('0x4'));var BPromise=require(_0xbc8e('0x5'));var Mustache=require(_0xbc8e('0x6'));var util=require(_0xbc8e('0x7'));var path=require('path');var sox=require(_0xbc8e('0x8'));var csv=require(_0xbc8e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc8e('0xa'));var _=require(_0xbc8e('0xb'));var squel=require(_0xbc8e('0xc'));var crypto=require(_0xbc8e('0xd'));var jsforce=require(_0xbc8e('0xe'));var deskjs=require(_0xbc8e('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbc8e('0x10'));var authService=require(_0xbc8e('0x11'));var qs=require(_0xbc8e('0x12'));var as=require(_0xbc8e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbc8e('0x14'))(_0xbc8e('0x15'));var utils=require(_0xbc8e('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbc8e('0x17'));var db=require(_0xbc8e('0x18'))['db'];function respondWithStatusCode(_0x322a7a,_0x45e86c){_0x45e86c=_0x45e86c||0xcc;return function(_0x372274){if(_0x372274){return _0x322a7a[_0xbc8e('0x19')](_0x45e86c);}return _0x322a7a[_0xbc8e('0x1a')](_0x45e86c)[_0xbc8e('0x1b')]();};}function respondWithResult(_0x53ebcd,_0x85e741){_0x85e741=_0x85e741||0xc8;return function(_0x117daf){if(_0x117daf){return _0x53ebcd[_0xbc8e('0x1a')](_0x85e741)['json'](_0x117daf);}};}function respondWithFilteredResult(_0x5db2fa,_0x2d09bb){return function(_0x44fdcc){if(_0x44fdcc){var _0x269b37=typeof _0x2d09bb[_0xbc8e('0x1c')]===_0xbc8e('0x1d')&&typeof _0x2d09bb[_0xbc8e('0x1e')]===_0xbc8e('0x1d');var _0x3ae9d2=_0x44fdcc[_0xbc8e('0x1f')];var _0x1b3d94=_0x269b37?0x0:_0x2d09bb[_0xbc8e('0x1c')];var _0x411ae7=_0x269b37?_0x44fdcc[_0xbc8e('0x1f')]:_0x2d09bb[_0xbc8e('0x1c')]+_0x2d09bb['limit'];var _0x473595;if(_0x411ae7>=_0x3ae9d2){_0x411ae7=_0x3ae9d2;_0x473595=0xc8;}else{_0x473595=0xce;}_0x5db2fa[_0xbc8e('0x1a')](_0x473595);return _0x5db2fa[_0xbc8e('0x20')]('Content-Range',_0x1b3d94+'-'+_0x411ae7+'/'+_0x3ae9d2)[_0xbc8e('0x21')](_0x44fdcc);}return null;};}function patchUpdates(_0x31a49d){return function(_0x157cd7){try{jsonpatch[_0xbc8e('0x22')](_0x157cd7,_0x31a49d,!![]);}catch(_0x175845){return BPromise[_0xbc8e('0x23')](_0x175845);}return _0x157cd7[_0xbc8e('0x24')]();};}function saveUpdates(_0x22fbf0,_0x21eb6d){return function(_0x42306a){if(_0x42306a){return _0x42306a[_0xbc8e('0x25')](_0x22fbf0)[_0xbc8e('0x26')](function(_0x46d9a8){return _0x46d9a8;});}return null;};}function removeEntity(_0x48b99e,_0x3bb504){return function(_0x1f891f){if(_0x1f891f){return _0x1f891f[_0xbc8e('0x27')]()['then'](function(){var _0x3e08a6=_0x1f891f[_0xbc8e('0x28')]({'plain':!![]});var _0x418bac=_0xbc8e('0x29');return db[_0xbc8e('0x2a')][_0xbc8e('0x27')]({'where':{'type':_0x418bac,'resourceId':_0x3e08a6['id']}})[_0xbc8e('0x26')](function(){return _0x1f891f;});})[_0xbc8e('0x26')](function(){_0x48b99e[_0xbc8e('0x1a')](0xcc)[_0xbc8e('0x1b')]();});}};}function handleEntityNotFound(_0x3b9774,_0x16e55d){return function(_0x296951){if(!_0x296951){_0x3b9774[_0xbc8e('0x19')](0x194);}return _0x296951;};}function handleError(_0x49697a,_0x30d66c){_0x30d66c=_0x30d66c||0x1f4;return function(_0x37702f){logger[_0xbc8e('0x2b')](_0x37702f[_0xbc8e('0x2c')]);if(_0x37702f[_0xbc8e('0x2d')]){delete _0x37702f[_0xbc8e('0x2d')];}_0x49697a['status'](_0x30d66c)[_0xbc8e('0x2e')](_0x37702f);};}exports['index']=function(_0x113770,_0x54a2c0){var _0x47c552={},_0x23af5d={},_0x39dc03={'count':0x0,'rows':[]};return db['CmCompany'][_0xbc8e('0x2f')]()[_0xbc8e('0x26')](function(_0x30b21f){_0x23af5d['model']=_[_0xbc8e('0x30')](_0x30b21f);_0x23af5d['query']=_[_0xbc8e('0x30')](_0x113770[_0xbc8e('0x31')]);_0x23af5d[_0xbc8e('0x32')]=_[_0xbc8e('0x33')](_0x23af5d[_0xbc8e('0x34')],_0x23af5d[_0xbc8e('0x31')]);_0x47c552[_0xbc8e('0x35')]=_[_0xbc8e('0x33')](_0x23af5d[_0xbc8e('0x34')],qs[_0xbc8e('0x36')](_0x113770[_0xbc8e('0x31')]['fields']));_0x47c552[_0xbc8e('0x35')]=_0x47c552['attributes'][_0xbc8e('0x37')]?_0x47c552[_0xbc8e('0x35')]:_0x23af5d[_0xbc8e('0x34')];if(!_0x113770['query'][_0xbc8e('0x38')](_0xbc8e('0x39'))){_0x47c552[_0xbc8e('0x1e')]=qs['limit'](_0x113770['query'][_0xbc8e('0x1e')]);_0x47c552[_0xbc8e('0x1c')]=qs['offset'](_0x113770['query']['offset']);}_0x47c552['order']=qs['sort'](_0x113770[_0xbc8e('0x31')][_0xbc8e('0x3a')]);_0x47c552[_0xbc8e('0x3b')]=qs[_0xbc8e('0x32')](_[_0xbc8e('0x3c')](_0x113770[_0xbc8e('0x31')],_0x23af5d['filters']),_0x30b21f);if(_0x113770[_0xbc8e('0x31')][_0xbc8e('0x3d')]){_0x47c552[_0xbc8e('0x3b')]=_[_0xbc8e('0x3e')](_0x47c552[_0xbc8e('0x3b')],{'$or':_[_0xbc8e('0x3f')](_0x47c552['attributes'],function(_0x3105b6){var _0x13686f={};_0x13686f[_0x3105b6]={'$like':'%'+_0x113770['query'][_0xbc8e('0x3d')]+'%'};return _0x13686f;})});}_0x47c552=_[_0xbc8e('0x3e')]({},_0x47c552,_0x113770[_0xbc8e('0x40')]);var _0x5a0588={'where':_0x47c552[_0xbc8e('0x3b')]};return db[_0xbc8e('0x41')][_0xbc8e('0x1f')](_0x5a0588)['then'](function(_0x5b0f8f){_0x39dc03[_0xbc8e('0x1f')]=_0x5b0f8f;if(_0x113770[_0xbc8e('0x31')]['includeAll']){_0x47c552[_0xbc8e('0x42')]=[{'all':!![]}];}return db['CmCompany'][_0xbc8e('0x43')](_0x47c552);})[_0xbc8e('0x26')](function(_0x3e93a1){_0x39dc03['rows']=_0x3e93a1;return _0x39dc03;})[_0xbc8e('0x26')](respondWithFilteredResult(_0x54a2c0,_0x47c552))['catch'](handleError(_0x54a2c0,null));})[_0xbc8e('0x44')](handleError(_0x54a2c0,null));};exports[_0xbc8e('0x45')]=function(_0x145b22,_0x1ab573){var _0x3e2a65={'raw':![],'where':{'id':_0x145b22[_0xbc8e('0x46')]['id']}},_0x479544={};_0x479544['model']=_['keys'](db['CmCompany'][_0xbc8e('0x47')]);_0x479544[_0xbc8e('0x31')]=_[_0xbc8e('0x30')](_0x145b22[_0xbc8e('0x31')]);_0x479544['filters']=_[_0xbc8e('0x33')](_0x479544[_0xbc8e('0x34')],_0x479544['query']);_0x3e2a65['attributes']=_[_0xbc8e('0x33')](_0x479544['model'],qs[_0xbc8e('0x36')](_0x145b22[_0xbc8e('0x31')]['fields']));_0x3e2a65[_0xbc8e('0x35')]=_0x3e2a65[_0xbc8e('0x35')][_0xbc8e('0x37')]?_0x3e2a65[_0xbc8e('0x35')]:_0x479544[_0xbc8e('0x34')];if(_0x145b22[_0xbc8e('0x31')]['includeAll']){_0x3e2a65[_0xbc8e('0x42')]=[{'all':!![]}];}_0x3e2a65=_[_0xbc8e('0x3e')]({},_0x3e2a65,_0x145b22[_0xbc8e('0x40')]);return db[_0xbc8e('0x41')][_0xbc8e('0x48')](_0x3e2a65)[_0xbc8e('0x26')](handleEntityNotFound(_0x1ab573,null))[_0xbc8e('0x26')](respondWithResult(_0x1ab573,null))[_0xbc8e('0x44')](handleError(_0x1ab573,null));};exports[_0xbc8e('0x49')]=function(_0x1c885a,_0x30abe2){return db['CmCompany'][_0xbc8e('0x49')](_0x1c885a[_0xbc8e('0x4a')],{})[_0xbc8e('0x26')](function(_0x5d8c0b){var _0x432262=_0x1c885a['user'][_0xbc8e('0x28')]({'plain':!![]});if(!_0x432262)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x432262[_0xbc8e('0x4b')]===_0xbc8e('0x4c')){var _0x1713a2=_0x5d8c0b[_0xbc8e('0x28')]({'plain':!![]});var _0x3c3da2='Companies';return db['UserProfileSection']['find']({'where':{'name':_0x3c3da2,'userProfileId':_0x432262[_0xbc8e('0x4d')]},'raw':!![]})['then'](function(_0x2ad5ff){if(_0x2ad5ff&&_0x2ad5ff[_0xbc8e('0x4e')]===0x0){return db[_0xbc8e('0x2a')]['create']({'name':_0x1713a2['name'],'resourceId':_0x1713a2['id'],'type':_0x2ad5ff['name'],'sectionId':_0x2ad5ff['id']},{})[_0xbc8e('0x26')](function(){return _0x5d8c0b;});}else{return _0x5d8c0b;}})[_0xbc8e('0x44')](function(_0x26d08e){logger[_0xbc8e('0x2b')](_0xbc8e('0x4f'),_0x26d08e);throw _0x26d08e;});}return _0x5d8c0b;})[_0xbc8e('0x26')](respondWithResult(_0x30abe2,0xc9))[_0xbc8e('0x44')](handleError(_0x30abe2,null));};exports[_0xbc8e('0x25')]=function(_0x46f77a,_0x5cebb1){if(_0x46f77a[_0xbc8e('0x4a')]['id']){delete _0x46f77a['body']['id'];}return db[_0xbc8e('0x41')][_0xbc8e('0x48')]({'where':{'id':_0x46f77a[_0xbc8e('0x46')]['id']}})[_0xbc8e('0x26')](handleEntityNotFound(_0x5cebb1,null))[_0xbc8e('0x26')](saveUpdates(_0x46f77a[_0xbc8e('0x4a')],null))[_0xbc8e('0x26')](respondWithResult(_0x5cebb1,null))[_0xbc8e('0x44')](handleError(_0x5cebb1,null));};exports[_0xbc8e('0x27')]=function(_0x49838e,_0x11bfe0){return db[_0xbc8e('0x41')]['find']({'where':{'id':_0x49838e[_0xbc8e('0x46')]['id']}})[_0xbc8e('0x26')](handleEntityNotFound(_0x11bfe0,null))['then'](removeEntity(_0x11bfe0,null))['catch'](handleError(_0x11bfe0,null));};exports['describe']=function(_0x52247d,_0x215670){return db['CmCompany'][_0xbc8e('0x2f')]()[_0xbc8e('0x26')](respondWithResult(_0x215670,null))[_0xbc8e('0x44')](handleError(_0x215670,null));};exports['addContacts']=function(_0x3d5278,_0x25c6e9,_0x471d7d){return db['CmContact']['find']({'where':{'id':_0x3d5278[_0xbc8e('0x46')]['id']}})[_0xbc8e('0x26')](handleEntityNotFound(_0x25c6e9,null))[_0xbc8e('0x26')](function(_0x2b8cda){if(_0x2b8cda){return _0x2b8cda[_0xbc8e('0x50')](_0x3d5278[_0xbc8e('0x4a')][_0xbc8e('0x51')],_[_0xbc8e('0x52')](_0x3d5278['body'],[_0xbc8e('0x51'),'id'])||{});}})[_0xbc8e('0x26')](respondWithResult(_0x25c6e9,null))[_0xbc8e('0x44')](handleError(_0x25c6e9,null));};exports[_0xbc8e('0x53')]=function(_0x2e7c6b,_0x42e414,_0x3e232c){var _0x543ed9={};var _0x21205c={};var _0x3bb2a0;var _0xe2ea29;return db[_0xbc8e('0x41')][_0xbc8e('0x54')]({'where':{'id':_0x2e7c6b[_0xbc8e('0x46')]['id']}})['then'](handleEntityNotFound(_0x42e414,null))[_0xbc8e('0x26')](function(_0x3c63f1){if(_0x3c63f1){_0x3bb2a0=_0x3c63f1;_0x21205c[_0xbc8e('0x34')]=_['keys'](db[_0xbc8e('0x55')]['rawAttributes']);_0x21205c[_0xbc8e('0x31')]=_[_0xbc8e('0x30')](_0x2e7c6b[_0xbc8e('0x31')]);_0x21205c[_0xbc8e('0x32')]=_[_0xbc8e('0x33')](_0x21205c[_0xbc8e('0x34')],_0x21205c[_0xbc8e('0x31')]);_0x543ed9[_0xbc8e('0x35')]=_[_0xbc8e('0x33')](_0x21205c[_0xbc8e('0x34')],qs[_0xbc8e('0x36')](_0x2e7c6b[_0xbc8e('0x31')][_0xbc8e('0x36')]));_0x543ed9[_0xbc8e('0x35')]=_0x543ed9[_0xbc8e('0x35')]['length']?_0x543ed9[_0xbc8e('0x35')]:_0x21205c['model'];_0x543ed9[_0xbc8e('0x56')]=qs['sort'](_0x2e7c6b[_0xbc8e('0x31')][_0xbc8e('0x3a')]);_0x543ed9['where']=qs[_0xbc8e('0x32')](_[_0xbc8e('0x3c')](_0x2e7c6b[_0xbc8e('0x31')],_0x21205c[_0xbc8e('0x32')]));if(_0x2e7c6b[_0xbc8e('0x31')][_0xbc8e('0x3d')]){_0x543ed9[_0xbc8e('0x3b')]=_['merge'](_0x543ed9[_0xbc8e('0x3b')],{'$or':_[_0xbc8e('0x3f')](_0x543ed9[_0xbc8e('0x35')],function(_0x1422c0){var _0x4f71dd={};_0x4f71dd[_0x1422c0]={'$like':'%'+_0x2e7c6b[_0xbc8e('0x31')][_0xbc8e('0x3d')]+'%'};return _0x4f71dd;})});}_0x543ed9=_['merge']({},_0x543ed9,_0x2e7c6b[_0xbc8e('0x40')]);return _0x3bb2a0[_0xbc8e('0x53')](_0x543ed9);}})[_0xbc8e('0x26')](function(_0x56d30e){if(_0x56d30e){_0xe2ea29=_0x56d30e['length'];if(!_0x2e7c6b[_0xbc8e('0x31')][_0xbc8e('0x38')]('nolimit')){_0x543ed9[_0xbc8e('0x1e')]=qs[_0xbc8e('0x1e')](_0x2e7c6b['query'][_0xbc8e('0x1e')]);_0x543ed9[_0xbc8e('0x1c')]=qs[_0xbc8e('0x1c')](_0x2e7c6b[_0xbc8e('0x31')]['offset']);}return _0x3bb2a0[_0xbc8e('0x53')](_0x543ed9);}})['then'](function(_0x1051c9){if(_0x1051c9){return _0x1051c9?{'count':_0xe2ea29,'rows':_0x1051c9}:null;}})['then'](respondWithResult(_0x42e414,null))['catch'](handleError(_0x42e414,null));};
\ No newline at end of file
index 9d3e1b3..d8e8f42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5391=['CmCompany','cm_companies','lodash','util','../../config/logger','bluebird','request-promise','path','exports'];(function(_0x22e73b,_0x84d1d5){var _0x216df9=function(_0x4a4f0a){while(--_0x4a4f0a){_0x22e73b['push'](_0x22e73b['shift']());}};_0x216df9(++_0x84d1d5);}(_0x5391,0x119));var _0x1539=function(_0x212173,_0x322e73){_0x212173=_0x212173-0x0;var _0x3a74ec=_0x5391[_0x212173];return _0x3a74ec;};'use strict';var _=require(_0x1539('0x0'));var util=require(_0x1539('0x1'));var logger=require(_0x1539('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1539('0x3'));var rp=require(_0x1539('0x4'));var fs=require('fs');var path=require(_0x1539('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module[_0x1539('0x6')]=function(_0x9a590e,_0x1abea3){return _0x9a590e['define'](_0x1539('0x7'),attributes,{'tableName':_0x1539('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfaec=['request-promise','path','rimraf','../../config/environment','cm_companies','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xf09e63,_0x43d3cd){var _0x54b504=function(_0x4aa2d7){while(--_0x4aa2d7){_0xf09e63['push'](_0xf09e63['shift']());}};_0x54b504(++_0x43d3cd);}(_0xfaec,0xd6));var _0xcfae=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xfaec[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xcfae('0x0'));var util=require(_0xcfae('0x1'));var logger=require(_0xcfae('0x2'))(_0xcfae('0x3'));var moment=require(_0xcfae('0x4'));var BPromise=require(_0xcfae('0x5'));var rp=require(_0xcfae('0x6'));var fs=require('fs');var path=require(_0xcfae('0x7'));var rimraf=require(_0xcfae('0x8'));var config=require(_0xcfae('0x9'));var attributes=require('./cmCompany.attributes');module['exports']=function(_0x5bb507,_0x10fe66){return _0x5bb507['define']('CmCompany',attributes,{'tableName':_0xcfae('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d36ad5..36d210a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eec=['info','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','error','code','CmCompany,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0x4eec,0xb1));var _0xc4ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4eec[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc4ee('0x0'));var moment=require('moment');var BPromise=require(_0xc4ee('0x1'));var rs=require(_0xc4ee('0x2'));var fs=require('fs');var Redis=require(_0xc4ee('0x3'));var db=require(_0xc4ee('0x4'))['db'];var utils=require(_0xc4ee('0x5'));var logger=require(_0xc4ee('0x6'))(_0xc4ee('0x7'));var config=require('../../config/environment');var jayson=require(_0xc4ee('0x8'));var client=jayson[_0xc4ee('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x451f3f,_0xb6201d,_0x35f5cf){return new BPromise(function(_0x3715cd,_0x31d7b1){return client[_0xc4ee('0xa')](_0x451f3f,_0x35f5cf)[_0xc4ee('0xb')](function(_0x22224e){logger[_0xc4ee('0xc')]('CmCompany,\x20%s,\x20%s',_0xb6201d,_0xc4ee('0xd'));logger['debug'](_0xc4ee('0xe'),_0xb6201d,_0xc4ee('0xd'),JSON['stringify'](_0x22224e));if(_0x22224e[_0xc4ee('0xf')]){if(_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x10')]===0x1f4){logger[_0xc4ee('0xf')](_0xc4ee('0x11'),_0xb6201d,_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x12')]);return _0x31d7b1(_0x22224e['error'][_0xc4ee('0x12')]);}logger[_0xc4ee('0xf')](_0xc4ee('0x11'),_0xb6201d,_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x12')]);return _0x3715cd(_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x12')]);}else{logger[_0xc4ee('0xc')](_0xc4ee('0x11'),_0xb6201d,'request\x20sent');_0x3715cd(_0x22224e[_0xc4ee('0x13')]['message']);}})[_0xc4ee('0x14')](function(_0x253eee){logger['error'](_0xc4ee('0x11'),_0xb6201d,_0x253eee);_0x31d7b1(_0x253eee);});});}
\ No newline at end of file
+var _0xaeb4=['request','then','info','request\x20sent','stringify','error','code','message','CmCompany,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x22153b,_0x4528ec){var _0x217dae=function(_0x14520e){while(--_0x14520e){_0x22153b['push'](_0x22153b['shift']());}};_0x217dae(++_0x4528ec);}(_0xaeb4,0x1c3));var _0x4aeb=function(_0xd1c39b,_0x16f0c6){_0xd1c39b=_0xd1c39b-0x0;var _0x58f5bc=_0xaeb4[_0xd1c39b];return _0x58f5bc;};'use strict';var _=require(_0x4aeb('0x0'));var util=require(_0x4aeb('0x1'));var moment=require(_0x4aeb('0x2'));var BPromise=require('bluebird');var rs=require(_0x4aeb('0x3'));var fs=require('fs');var Redis=require(_0x4aeb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4aeb('0x5'));var logger=require(_0x4aeb('0x6'))(_0x4aeb('0x7'));var config=require(_0x4aeb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4aeb('0x9')][_0x4aeb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xdbd748,_0x37f42c,_0x16dbe2){return new BPromise(function(_0x111bb5,_0x379f7e){return client[_0x4aeb('0xb')](_0xdbd748,_0x16dbe2)[_0x4aeb('0xc')](function(_0xc18692){logger[_0x4aeb('0xd')]('CmCompany,\x20%s,\x20%s',_0x37f42c,_0x4aeb('0xe'));logger['debug']('CmCompany,\x20%s,\x20%s,\x20%s',_0x37f42c,_0x4aeb('0xe'),JSON[_0x4aeb('0xf')](_0xc18692));if(_0xc18692[_0x4aeb('0x10')]){if(_0xc18692[_0x4aeb('0x10')][_0x4aeb('0x11')]===0x1f4){logger[_0x4aeb('0x10')]('CmCompany,\x20%s,\x20%s',_0x37f42c,_0xc18692[_0x4aeb('0x10')][_0x4aeb('0x12')]);return _0x379f7e(_0xc18692['error'][_0x4aeb('0x12')]);}logger[_0x4aeb('0x10')](_0x4aeb('0x13'),_0x37f42c,_0xc18692[_0x4aeb('0x10')][_0x4aeb('0x12')]);return _0x111bb5(_0xc18692[_0x4aeb('0x10')][_0x4aeb('0x12')]);}else{logger[_0x4aeb('0xd')](_0x4aeb('0x13'),_0x37f42c,'request\x20sent');_0x111bb5(_0xc18692[_0x4aeb('0x14')][_0x4aeb('0x12')]);}})[_0x4aeb('0x15')](function(_0x2f4db4){logger['error'](_0x4aeb('0x13'),_0x37f42c,_0x2f4db4);_0x379f7e(_0x2f4db4);});});}
\ No newline at end of file
index aeafdd4..7b8e91b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0916=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','show','/:id/contacts','getContacts','post','create','addContacts','put','/:id','delete','destroy','exports'];(function(_0x3c9966,_0x3a6060){var _0x4a7ff4=function(_0x21c26a){while(--_0x21c26a){_0x3c9966['push'](_0x3c9966['shift']());}};_0x4a7ff4(++_0x3a6060);}(_0x0916,0x14a));var _0x6091=function(_0x2b9afa,_0xb29837){_0x2b9afa=_0x2b9afa-0x0;var _0x1abd63=_0x0916[_0x2b9afa];return _0x1abd63;};'use strict';var multer=require('multer');var util=require(_0x6091('0x0'));var path=require(_0x6091('0x1'));var timeout=require(_0x6091('0x2'));var express=require('express');var router=express[_0x6091('0x3')]();var fs_extra=require(_0x6091('0x4'));var auth=require(_0x6091('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6091('0x6'));var controller=require('./cmCompany.controller');router[_0x6091('0x7')]('/',auth[_0x6091('0x8')](),controller[_0x6091('0x9')]);router['get'](_0x6091('0xa'),auth[_0x6091('0x8')](),controller['describe']);router['get']('/:id',auth[_0x6091('0x8')](),controller[_0x6091('0xb')]);router[_0x6091('0x7')](_0x6091('0xc'),auth[_0x6091('0x8')](),controller[_0x6091('0xd')]);router[_0x6091('0xe')]('/',auth[_0x6091('0x8')](),controller[_0x6091('0xf')]);router[_0x6091('0xe')](_0x6091('0xc'),auth[_0x6091('0x8')](),controller[_0x6091('0x10')]);router[_0x6091('0x11')](_0x6091('0x12'),auth[_0x6091('0x8')](),controller['update']);router[_0x6091('0x13')](_0x6091('0x12'),auth[_0x6091('0x8')](),controller[_0x6091('0x14')]);module[_0x6091('0x15')]=router;
\ No newline at end of file
+var _0xf468=['show','/:id/contacts','getContacts','post','create','addContacts','put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x1d9816,_0x1e8cc5){var _0x521b26=function(_0x3b8dd9){while(--_0x3b8dd9){_0x1d9816['push'](_0x1d9816['shift']());}};_0x521b26(++_0x1e8cc5);}(_0xf468,0x111));var _0x8f46=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xf468[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x8f46('0x0'));var util=require(_0x8f46('0x1'));var path=require(_0x8f46('0x2'));var timeout=require(_0x8f46('0x3'));var express=require(_0x8f46('0x4'));var router=express['Router']();var fs_extra=require(_0x8f46('0x5'));var auth=require(_0x8f46('0x6'));var interaction=require(_0x8f46('0x7'));var config=require(_0x8f46('0x8'));var controller=require('./cmCompany.controller');router[_0x8f46('0x9')]('/',auth[_0x8f46('0xa')](),controller[_0x8f46('0xb')]);router[_0x8f46('0x9')](_0x8f46('0xc'),auth['isAuthenticated'](),controller[_0x8f46('0xd')]);router[_0x8f46('0x9')](_0x8f46('0xe'),auth[_0x8f46('0xa')](),controller[_0x8f46('0xf')]);router[_0x8f46('0x9')](_0x8f46('0x10'),auth[_0x8f46('0xa')](),controller[_0x8f46('0x11')]);router[_0x8f46('0x12')]('/',auth[_0x8f46('0xa')](),controller[_0x8f46('0x13')]);router['post'](_0x8f46('0x10'),auth['isAuthenticated'](),controller[_0x8f46('0x14')]);router[_0x8f46('0x15')](_0x8f46('0xe'),auth[_0x8f46('0xa')](),controller['update']);router['delete'](_0x8f46('0xe'),auth[_0x8f46('0xa')](),controller[_0x8f46('0x16')]);module[_0x8f46('0x17')]=router;
\ No newline at end of file
index 14ad1c3..6379c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf9=['sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED','lodash'];(function(_0x5ac105,_0x85de85){var _0x564a72=function(_0x187542){while(--_0x187542){_0x5ac105['push'](_0x5ac105['shift']());}};_0x564a72(++_0x85de85);}(_0x2cf9,0x187));var _0x92cf=function(_0x6a0110,_0x570bd1){_0x6a0110=_0x6a0110-0x0;var _0x5d6f3c=_0x2cf9[_0x6a0110];return _0x5d6f3c;};'use strict';var _=require(_0x92cf('0x0'));var Sequelize=require(_0x92cf('0x1'));module[_0x92cf('0x2')]={'firstName':{'type':Sequelize[_0x92cf('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x92cf('0x3')]},'street':{'type':Sequelize[_0x92cf('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0x92cf('0x3')]},'description':{'type':Sequelize[_0x92cf('0x4')]},'phone':{'type':Sequelize[_0x92cf('0x3')]},'mobile':{'type':Sequelize[_0x92cf('0x3')]},'fax':{'type':Sequelize[_0x92cf('0x3')]},'email':{'type':Sequelize[_0x92cf('0x3')]},'url':{'type':Sequelize[_0x92cf('0x3')]},'facebook':{'type':Sequelize[_0x92cf('0x3')]},'fb_data':{'type':Sequelize[_0x92cf('0x3')]},'twitter':{'type':Sequelize[_0x92cf('0x3')]},'skype':{'type':Sequelize[_0x92cf('0x3')]},'teams':{'type':Sequelize[_0x92cf('0x3')]},'viber':{'type':Sequelize[_0x92cf('0x3')]},'line':{'type':Sequelize[_0x92cf('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x92cf('0x3')]},'UserId':{'type':Sequelize[_0x92cf('0x5')]},'priority':{'type':Sequelize[_0x92cf('0x5')](0x2)[_0x92cf('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x2e63=['lodash','sequelize','exports','STRING','INTEGER','UNSIGNED','DATE','NOW'];(function(_0x6d6a66,_0x2924af){var _0x11eb6e=function(_0x52e55a){while(--_0x52e55a){_0x6d6a66['push'](_0x6d6a66['shift']());}};_0x11eb6e(++_0x2924af);}(_0x2e63,0x70));var _0x32e6=function(_0x403ca4,_0x459190){_0x403ca4=_0x403ca4-0x0;var _0x4a5338=_0x2e63[_0x403ca4];return _0x4a5338;};'use strict';var _=require(_0x32e6('0x0'));var Sequelize=require(_0x32e6('0x1'));module[_0x32e6('0x2')]={'firstName':{'type':Sequelize[_0x32e6('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x32e6('0x3')]},'dateOfBirth':{'type':Sequelize[_0x32e6('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x32e6('0x3')]},'mobile':{'type':Sequelize[_0x32e6('0x3')]},'fax':{'type':Sequelize[_0x32e6('0x3')]},'email':{'type':Sequelize[_0x32e6('0x3')]},'url':{'type':Sequelize[_0x32e6('0x3')]},'facebook':{'type':Sequelize[_0x32e6('0x3')]},'fb_data':{'type':Sequelize[_0x32e6('0x3')]},'twitter':{'type':Sequelize[_0x32e6('0x3')]},'skype':{'type':Sequelize[_0x32e6('0x3')]},'teams':{'type':Sequelize[_0x32e6('0x3')]},'viber':{'type':Sequelize[_0x32e6('0x3')]},'line':{'type':Sequelize[_0x32e6('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x32e6('0x3')]},'UserId':{'type':Sequelize[_0x32e6('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x32e6('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x32e6('0x6')],'defaultValue':Sequelize[_0x32e6('0x7')]}};
\ No newline at end of file
index 1a92c0e..f55e134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd129=['c.ListId','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','destroy','find','params','tags','displayName','columnName','alias','values','body','findAll','get','mergeWith','isArray','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperHistory','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','create','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','$and','format','cf_%d','omit','setFields','id\x20=\x20?','toParam','text','phone','rawAttributes','options','getTags','setTags','ids','getHoppers','pick','ContactId','includeAll','getHopperHistories','include','getHopperFinals','CmHopperFinal','uploadCsv','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','socket_timestamp','binding_keys','binding_values','Incorrect\x20binding\x20parameters\x20passed!','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','join','root','server/files/tmp','file','filename','0777','../../components/import/cm/csv','File\x20uploaded\x20correctly!','upload','meta','import','binding','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','child_process','fork','stringify','start\x20child\x20process\x20correctly!','pid','exit','error\x20child\x20process','getJourney','mail','chat','fax','channel','includes','toLowerCase','range','parse','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','destination','callerid','starttime','createdAt','userDisposition','fullname','findAndCountAll','startCase','Website','Account','closed','closedAt','note','disposition','key','Owner','customerIp','customerPort','osName','ratingMessage','ratingType','referer','subject','substatus','openchannel','threadId','Interaction','flatten','reverse','slice','eml-format','rimraf','fast-json-patch','moment','mustache','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','error','stack','name','describe','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','select','field','color','tools_tags','from','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','conditions','Tag','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','value','dateOfBirth','datetime','castTo','DATE','buildExpression','start','filter','isNil','Contact','isEmpty','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','ListId','sequelize','toString','keyBy','merge','CmContact','c.lastName','c.fax','c.email'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd129,0x1bb));var _0x9d12=function(_0xaf5cc3,_0x16528a){_0xaf5cc3=_0xaf5cc3-0x0;var _0x22ac9f=_0xd129[_0xaf5cc3];return _0x22ac9f;};'use strict';var emlformat=require(_0x9d12('0x0'));var rimraf=require(_0x9d12('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9d12('0x2'));var rp=require('request-promise');var moment=require(_0x9d12('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9d12('0x4'));var util=require('util');var path=require('path');var sox=require(_0x9d12('0x5'));var csv=require(_0x9d12('0x6'));var ejs=require(_0x9d12('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d12('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9d12('0x9'));var deskjs=require(_0x9d12('0xa'));var toCsv=require('to-csv');var querystring=require(_0x9d12('0xb'));var Papa=require(_0x9d12('0xc'));var Redis=require(_0x9d12('0xd'));var authService=require(_0x9d12('0xe'));var qs=require(_0x9d12('0xf'));var as=require(_0x9d12('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d12('0x11'))('api');var utils=require(_0x9d12('0x12'));var config=require(_0x9d12('0x13'));var licenseUtil=require(_0x9d12('0x14'));var db=require('../../mysqldb')['db'];config[_0x9d12('0x15')]=_[_0x9d12('0x16')](config['redis'],{'host':_0x9d12('0x17'),'port':0x18eb});var socket=require(_0x9d12('0x18'))(new Redis(config[_0x9d12('0x15')]));require(_0x9d12('0x19'))['register'](socket);function respondWithStatusCode(_0x261f4d,_0x2b2153){_0x2b2153=_0x2b2153||0xcc;return function(_0x37ca70){if(_0x37ca70){return _0x261f4d[_0x9d12('0x1a')](_0x2b2153);}return _0x261f4d[_0x9d12('0x1b')](_0x2b2153)[_0x9d12('0x1c')]();};}function respondWithResult(_0x407bc6,_0xf939bc){_0xf939bc=_0xf939bc||0xc8;return function(_0xb6af96){if(_0xb6af96){return _0x407bc6[_0x9d12('0x1b')](_0xf939bc)[_0x9d12('0x1d')](_0xb6af96);}};}function respondWithFilteredResult(_0x275995,_0x3d46fd){return function(_0x48261e){if(_0x48261e){var _0x3b6dd2=typeof _0x3d46fd[_0x9d12('0x1e')]===_0x9d12('0x1f')&&typeof _0x3d46fd[_0x9d12('0x20')]===_0x9d12('0x1f');var _0x439ee2=_0x48261e[_0x9d12('0x21')];var _0x4c6739=_0x3b6dd2?0x0:_0x3d46fd[_0x9d12('0x1e')];var _0x5a40df=_0x3b6dd2?_0x48261e[_0x9d12('0x21')]:_0x3d46fd[_0x9d12('0x1e')]+_0x3d46fd[_0x9d12('0x20')];var _0x5ab2d4;if(_0x5a40df>=_0x439ee2){_0x5a40df=_0x439ee2;_0x5ab2d4=0xc8;}else{_0x5ab2d4=0xce;}_0x275995[_0x9d12('0x1b')](_0x5ab2d4);return _0x275995[_0x9d12('0x22')]('Content-Range',_0x4c6739+'-'+_0x5a40df+'/'+_0x439ee2)[_0x9d12('0x1d')](_0x48261e);}return null;};}function patchUpdates(_0x3b04cd){return function(_0x4fba02){try{jsonpatch[_0x9d12('0x23')](_0x4fba02,_0x3b04cd,!![]);}catch(_0x2e1270){return BPromise[_0x9d12('0x24')](_0x2e1270);}return _0x4fba02['save']();};}function saveUpdates(_0x20035f,_0x1757d3){return function(_0x13b77c){if(_0x13b77c){return _0x13b77c[_0x9d12('0x25')](_0x20035f)[_0x9d12('0x26')](function(_0xf79f17){return _0xf79f17;});}return null;};}function removeEntity(_0x3f8078,_0x5a58c7){return function(_0x114ad8){if(_0x114ad8){return _0x114ad8['destroy']()[_0x9d12('0x26')](function(){_0x3f8078[_0x9d12('0x1b')](0xcc)[_0x9d12('0x1c')]();});}};}function handleEntityNotFound(_0x299437,_0x3a8462){return function(_0x2cd2ef){if(!_0x2cd2ef){_0x299437[_0x9d12('0x1a')](0x194);}return _0x2cd2ef;};}function handleError(_0x4fb35e,_0x499b00){_0x499b00=_0x499b00||0x1f4;return function(_0x8b4e7){logger[_0x9d12('0x27')](_0x8b4e7[_0x9d12('0x28')]);if(_0x8b4e7[_0x9d12('0x29')]){delete _0x8b4e7[_0x9d12('0x29')];}_0x4fb35e['status'](_0x499b00)['send'](_0x8b4e7);};}exports['index']=function(_0x5443e8,_0x4a779c){var _0x26a772={},_0x358979={},_0x37e9f0={'count':0x0,'rows':[]};return db['CmContact'][_0x9d12('0x2a')]()[_0x9d12('0x26')](function(_0x51ace5){var _0x2a3dd9=[];for(var _0x9df677=0x0;_0x9df677<Object[_0x9d12('0x2b')](_0x51ace5)[_0x9d12('0x2c')];_0x9df677++){var _0x4d9e2b=Object[_0x9d12('0x2b')](_0x51ace5)[_0x9df677];if(_[_0x9d12('0x2d')](_0x4d9e2b,_0x9d12('0x2e'))){_0x2a3dd9[_0x9d12('0x2f')](db[_0x9d12('0x30')][_0x9d12('0x31')]({'where':{'id':_[_0x9d12('0x32')](_0x4d9e2b,'cf_')},'raw':!![]}));}}return BPromise[_0x9d12('0x33')](_0x2a3dd9)['then'](function(_0x322a3b){for(var _0x1df09b=0x0;_0x1df09b<_0x322a3b['length'];_0x1df09b++){if(_0x322a3b[_0x1df09b]){var _0x4e87ab='cf_'+_0x322a3b[_0x1df09b]['id'];var _0x26465=_0x51ace5[_0x4e87ab];_0x26465[_0x9d12('0x34')]=_0x322a3b[_0x1df09b][_0x9d12('0x35')];}}return _0x51ace5;});})[_0x9d12('0x26')](function(_0x14ca63){_0x358979[_0x9d12('0x36')]=_[_0x9d12('0x2b')](_0x14ca63);_0x358979[_0x9d12('0x37')]=_['keys'](_0x5443e8[_0x9d12('0x37')]);_0x358979[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x358979[_0x9d12('0x36')],_0x358979[_0x9d12('0x37')]);_0x26a772[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x358979[_0x9d12('0x36')],qs['fields'](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3b')]));_0x26a772[_0x9d12('0x3a')]=_0x26a772[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x26a772[_0x9d12('0x3a')]:_0x358979[_0x9d12('0x36')];if(!_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x26a772[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x20')]);_0x26a772[_0x9d12('0x1e')]=qs['offset'](_0x5443e8['query']['offset']);}_0x26a772[_0x9d12('0x3e')]=qs[_0x9d12('0x3f')](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3f')]);_0x26a772[_0x9d12('0x40')]=qs['filters'](_['pick'](_0x5443e8[_0x9d12('0x37')],_0x358979[_0x9d12('0x38')]),_0x14ca63);var _0x4cfe82=[];var _0x4fc147=squel[_0x9d12('0x41')]()[_0x9d12('0x42')]('id')[_0x9d12('0x42')](_0x9d12('0x29'))[_0x9d12('0x42')](_0x9d12('0x43'))['from'](_0x9d12('0x44'));var _0x38c28e=squel[_0x9d12('0x41')]()[_0x9d12('0x45')](_0x9d12('0x46'),'c')[_0x9d12('0x47')](_0x9d12('0x48'),'uc',_0x9d12('0x49'))['left_join'](_0x9d12('0x4a'),'ct',_0x9d12('0x4b'))[_0x9d12('0x47')](_0x9d12('0x44'),'t',_0x9d12('0x4c'))[_0x9d12('0x40')](_0x9d12('0x4d'));var _0x376764=squel['expr']();var _0x56baac=[];var _0x1f327e=squel[_0x9d12('0x4e')]();var _0x896ad5;if(_0x5443e8['query']['search']){_0x896ad5=as[_0x9d12('0x4f')](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x50')]);var _0x478fe2=_0x896ad5['sqlOperator'];for(var _0x5758af=0x0;_0x5758af<_0x896ad5[_0x9d12('0x51')][_0x9d12('0x2c')];_0x5758af++){var _0x355bfe=_0x896ad5['conditions'][_0x5758af];var _0x2cc398='c';var _0x488813=_(_0x14ca63)[_0x9d12('0x2b')]()['find'](function(_0x1f9a79){return _0x1f9a79===_0x355bfe[_0x9d12('0x42')];});if(_0x488813)_0x488813=_0x14ca63[_0x355bfe['field']];if(!_0x488813){if(_0x355bfe[_0x9d12('0x42')]===_0x9d12('0x52')){var _0x5d489a=_0x355bfe['value']['split'](',')[_0x9d12('0x53')](function(_0x489410){return Number(_0x489410);});_0x5d489a[_0x9d12('0x54')](function(_0x270fcf){_0x1f327e['or'](_0x9d12('0x55'),'%,'+_0x270fcf+',%');});_0x56baac=_[_0x9d12('0x56')](_0x56baac,_0x5d489a);}else if(_0x355bfe[_0x9d12('0x42')]===_0x9d12('0x57')){_0x376764['and']('uc.UserId\x20=\x20?',_0x355bfe[_0x9d12('0x58')]);}}else{if(_0x355bfe[_0x9d12('0x42')]===_0x9d12('0x59')||_0x488813[_0x9d12('0x34')]===_0x9d12('0x5a'))_0x355bfe[_0x9d12('0x5b')]=_0x9d12('0x5c');var _0x5ab48a=as[_0x9d12('0x5d')](_0x2cc398,_0x488813[_0x9d12('0x35')],_0x355bfe);_0x376764[_0x478fe2](_0x5ab48a['text'],_0x5ab48a[_0x9d12('0x58')][_0x9d12('0x5e')],_0x5ab48a[_0x9d12('0x58')]['end']);}}}else{var _0x31e5c7=_(Object[_0x9d12('0x2b')](_0x5443e8[_0x9d12('0x37')]))[_0x9d12('0x53')](function(_0x11c552){return _0x14ca63['hasOwnProperty'](_0x11c552)?_0x11c552:undefined;})[_0x9d12('0x5f')](function(_0x31d3a2){return!_[_0x9d12('0x60')](_0x31d3a2);})[_0x9d12('0x58')]();if(_0x5443e8['query'][_0x9d12('0x61')])_0x31e5c7[_0x9d12('0x2f')]('Contact');if(!_[_0x9d12('0x62')](_0x31e5c7)){_0x31e5c7['forEach'](function(_0x33ce61){if(_0x33ce61==='ListId'){_0x38c28e[_0x9d12('0x40')]('c.ListId\x20IN\x20?',[][_0x9d12('0x63')](_0x5443e8['query'][_0x33ce61]));}else if(_0x33ce61===_0x9d12('0x61')){var _0x43d8d2='%'+_0x5443e8[_0x9d12('0x37')][_0x33ce61]+'%';_0x38c28e[_0x9d12('0x40')](_0x9d12('0x64'),_0x43d8d2);}else{_0x38c28e[_0x9d12('0x40')]('c.'+_0x33ce61+_0x9d12('0x65'),_0x5443e8[_0x9d12('0x37')][_0x33ce61]);}});}if(_0x5443e8[_0x9d12('0x37')][_0x9d12('0x66')]){_0x56baac=_['isArray'](_0x5443e8[_0x9d12('0x37')]['tag'])?_0x5443e8[_0x9d12('0x37')][_0x9d12('0x66')]:new Array(_0x5443e8[_0x9d12('0x37')]['tag']);_0x56baac[_0x9d12('0x54')](function(_0x5565f0){_0x1f327e['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5565f0+',%');});}if(_0x5443e8[_0x9d12('0x37')][_0x9d12('0x5f')]){var _0x2a3c23=_0x5443e8[_0x9d12('0x37')][_0x9d12('0x5f')][_0x9d12('0x67')]('\x5c','\x5c\x5c')[_0x9d12('0x67')](/'/g,'\x27\x27');if(_0x2a3c23[_0x9d12('0x68')]('\x20')['length']>0x1){_0x376764['or'](_0x9d12('0x69'),qs[_0x9d12('0x6a')](_0x2a3c23),null);}else{if(qs[_0x9d12('0x6b')](_0x2a3c23)){_0x376764['or'](_0x9d12('0x6c'),_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x6d'),_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x6e'),_0x2a3c23+'%');_0x376764['or']('c.fax\x20LIKE\x20?',_0x2a3c23+'%');}else if(qs[_0x9d12('0x6f')](_0x2a3c23)){_0x376764['or'](_0x9d12('0x70'),_0x2a3c23+'%');}else{_0x376764['or'](_0x9d12('0x71'),'%'+_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x72'),'%'+_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x70'),'%'+_0x2a3c23+'%');}}}}_0x38c28e[_0x9d12('0x40')](_0x376764);_0x38c28e[_0x9d12('0x73')](_0x9d12('0x74'));var _0x36ef6f={'type':db[_0x9d12('0x75')][_0x9d12('0x76')]['SELECT'],'raw':!![]};var _0x582484=_0x38c28e[_0x9d12('0x77')]()['field']('c.id');if(_0x26a772[_0x9d12('0x3e')]){_0x26a772[_0x9d12('0x3e')]['forEach'](function(_0x6c2134){_0x38c28e[_0x9d12('0x3e')]('c.'+_0x6c2134[0x0],_0x6c2134[0x1]===_0x9d12('0x78')?![]:!![]);});}if(!_[_0x9d12('0x62')](_0x56baac)){_0x38c28e[_0x9d12('0x79')](_0x1f327e);_0x582484[_0x9d12('0x40')](_0x9d12('0x7a'),_0x56baac);}BPromise[_0x9d12('0x7b')]()[_0x9d12('0x26')](function(){if(!_0x896ad5)return;if(_0x5443e8[_0x9d12('0x7c')][_0x9d12('0x7d')]!==_0x9d12('0x7e'))return;if(!_[_0x9d12('0x7f')](_0x896ad5[_0x9d12('0x51')],[_0x9d12('0x42'),_0x9d12('0x57')])){return _0x5443e8[_0x9d12('0x7c')]['getLists']({'attributes':['id'],'raw':!![]})[_0x9d12('0x26')](function(_0x1dc6e5){if(_['isEmpty'](_0x1dc6e5)){_0x582484['where'](_0x9d12('0x80'));_0x38c28e['where'](_0x9d12('0x80'));}else{_0x582484['where'](_0x9d12('0x81'),_[_0x9d12('0x53')](_0x1dc6e5,'id'));_0x38c28e[_0x9d12('0x40')]('c.ListId\x20IN\x20?',_[_0x9d12('0x53')](_0x1dc6e5,'id'));}});}})['then'](function(){if(_0x5443e8['user'][_0x9d12('0x7d')]===_0x9d12('0x7e')&&!_0x896ad5&&!_0x5443e8['query'][_0x9d12('0x82')])return[];return db[_0x9d12('0x83')][_0x9d12('0x37')](_0x582484[_0x9d12('0x84')](),_0x36ef6f);})[_0x9d12('0x26')](function(_0x4e6bb9){_0x37e9f0[_0x9d12('0x21')]=_0x4e6bb9[_0x9d12('0x2c')];if(_0x37e9f0[_0x9d12('0x21')]===0x0)return[];return db[_0x9d12('0x83')][_0x9d12('0x37')](_0x4fc147[_0x9d12('0x84')](),_0x36ef6f)['then'](function(_0x2a8c70){_0x4cfe82=_[_0x9d12('0x85')](_0x2a8c70,'id');_0x36ef6f=_[_0x9d12('0x86')](_0x36ef6f,{'model':db[_0x9d12('0x87')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3b')]){_0x26a772[_0x9d12('0x3a')][_0x9d12('0x54')](function(_0x1344a3){_0x38c28e[_0x9d12('0x42')]('c.'+_0x1344a3);});}else{_0x38c28e[_0x9d12('0x42')](_0x9d12('0x74'));_0x38c28e['field']('c.firstName');_0x38c28e[_0x9d12('0x42')](_0x9d12('0x88'));_0x38c28e['field']('c.phone');_0x38c28e[_0x9d12('0x42')]('c.mobile');_0x38c28e[_0x9d12('0x42')](_0x9d12('0x89'));_0x38c28e['field'](_0x9d12('0x8a'));_0x38c28e['field'](_0x9d12('0x8b'));_0x38c28e['field']('c.createdAt');_0x38c28e['field'](_0x9d12('0x8c'));_0x38c28e[_0x9d12('0x42')]('c.CompanyId');_0x38c28e['field'](_0x9d12('0x8d'),_0x9d12('0x8e'));}if(_0x26a772[_0x9d12('0x20')])_0x38c28e['limit'](_0x26a772['limit']);if(_0x26a772['offset'])_0x38c28e[_0x9d12('0x1e')](_0x26a772[_0x9d12('0x1e')]);return db['sequelize'][_0x9d12('0x37')](_0x38c28e[_0x9d12('0x84')](),_0x36ef6f);});})['then'](function(_0x2e242d){_0x2e242d['forEach'](function(_0x4932f4){if(_0x4932f4['TagIds']){_0x4932f4[_0x9d12('0x8f')]=[];_0x4932f4['TagIds']['split'](',')['forEach'](function(_0x378d77){_0x4932f4['Tags'][_0x9d12('0x2f')](_0x4cfe82[_0x378d77]);});}delete _0x4932f4['TagIds'];});_0x37e9f0[_0x9d12('0x90')]=_0x2e242d;return _0x37e9f0;})['then'](respondWithFilteredResult(_0x4a779c,_0x26a772));})[_0x9d12('0x91')](handleError(_0x4a779c,null));};exports[_0x9d12('0x92')]=function(_0x4bd2,_0x19f779){return db[_0x9d12('0x87')][_0x9d12('0x93')]({'where':{'id':_0x4bd2[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x19f779,null))[_0x9d12('0x26')](removeEntity(_0x19f779,null))[_0x9d12('0x91')](handleError(_0x19f779,null));};exports[_0x9d12('0x2a')]=function(_0x2c0263,_0xa0f07c){return db[_0x9d12('0x87')][_0x9d12('0x2a')]()[_0x9d12('0x26')](function(_0x4ee137){delete _0x4ee137[_0x9d12('0x95')];for(var _0x467256=0x0;_0x467256<Object['keys'](_0x4ee137)[_0x9d12('0x2c')];_0x467256++){var _0x4426d4=Object[_0x9d12('0x2b')](_0x4ee137)[_0x467256];if(!_[_0x9d12('0x2d')](_0x4426d4,_0x9d12('0x2e'))){_0x4ee137[_0x4426d4]['columnName']=_0x4426d4;_0x4ee137[_0x4426d4][_0x9d12('0x96')]=_0x4426d4;}}return _0x4ee137;})['then'](function(_0x189b09){var _0x50569a={'where':{'$or':[{'ListId':_0x2c0263[_0x9d12('0x37')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x9d12('0x30')]['findAll'](_0x50569a)[_0x9d12('0x26')](function(_0x21207a){for(var _0xa84253=0x0;_0xa84253<_0x21207a[_0x9d12('0x2c')];_0xa84253++){var _0x2a5475=_0x9d12('0x2e')+_0x21207a[_0xa84253]['id'];_0x189b09[_0x2a5475][_0x9d12('0x97')]=_0x2a5475;_0x189b09[_0x2a5475]['displayName']=_0x21207a[_0xa84253][_0x9d12('0x98')];_0x189b09[_0x2a5475]['custom']={'type':_0x21207a[_0xa84253][_0x9d12('0x35')],'values':_0x21207a[_0xa84253][_0x9d12('0x99')]};}Object[_0x9d12('0x2b')](_0x189b09)[_0x9d12('0x54')](function(_0x42f6e3){if(!_0x189b09[_0x42f6e3][_0x9d12('0x3c')](_0x9d12('0x97'))){delete _0x189b09[_0x42f6e3];}});return _0x189b09;});})[_0x9d12('0x26')](respondWithResult(_0xa0f07c,null))[_0x9d12('0x91')](handleError(_0xa0f07c,null));};exports['merge']=function(_0x5e8b7a,_0x2891c1){var _0x4381ea;var _0x3fe885;var _0x1d3613;if(_0x5e8b7a['body']['id']){delete _0x5e8b7a[_0x9d12('0x9a')]['id'];}return db[_0x9d12('0x87')][_0x9d12('0x9b')]({'where':{'id':[_0x5e8b7a['body']['to'],_0x5e8b7a[_0x9d12('0x9a')][_0x9d12('0x45')]]}})[_0x9d12('0x26')](function(_0x3b8c0f){if(_0x3b8c0f){if(_0x3b8c0f[_0x9d12('0x2c')]!==0x2){return null;}_0x3b8c0f[0x0]=_0x3b8c0f[0x0][_0x9d12('0x9c')]({'plain':!![]});_0x3b8c0f[0x1]=_0x3b8c0f[0x1]['get']({'plain':!![]});delete _0x3b8c0f[0x0]['id'];delete _0x3b8c0f[0x1]['id'];return _[_0x9d12('0x9d')](_0x3b8c0f[0x0],_0x3b8c0f[0x1],function(_0x2ca9b4,_0xa56551){if(Array[_0x9d12('0x9e')](_0xa56551)&&!_0xa56551[_0x9d12('0x2c')]){return _0x2ca9b4;}else if(!_0xa56551){return _0x2ca9b4;}});}})[_0x9d12('0x26')](handleEntityNotFound(_0x2891c1,null))['then'](function(_0x3c9216){if(_0x3c9216){if(_0x3c9216[_0x9d12('0x95')]&&_[_0x9d12('0x9e')](_0x3c9216['tags'])){_0x3c9216[_0x9d12('0x95')]=_0x3c9216[_0x9d12('0x95')]['join']();}logger[_0x9d12('0x9f')](_0x9d12('0xa0'),_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a[_0x9d12('0x9a')][_0x9d12('0x45')]);return db[_0x9d12('0xa1')][_0x9d12('0x92')]({'where':{'ContactId':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a['body']['from']]}})['then'](function(_0x5c1478){logger[_0x9d12('0x9f')](_0x9d12('0xa2'),_0x5c1478);return db[_0x9d12('0xa3')][_0x9d12('0x92')]({'where':{'ContactId':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a[_0x9d12('0x9a')]['from']]}})['then'](function(_0x20acab){logger[_0x9d12('0x9f')](_0x9d12('0xa4'),_0x20acab);return db[_0x9d12('0x87')]['create'](_0x3c9216);});});}})[_0x9d12('0x26')](function(_0x3019ed){if(_0x3019ed){_0x4381ea=_0x3019ed;_0x3fe885={'ContactId':_0x4381ea['id']};_0x1d3613={'where':{'ContactId':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a['body'][_0x9d12('0x45')]]}};return db[_0x9d12('0xa5')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa6')]['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa7')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xa8')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa9')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa8')]['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa9')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['SmsInteraction']['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xaa')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xab')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xac')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['OpenchannelInteraction'][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xad')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['CmHopperFinal'][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xae')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db['ReportAgentPreview']['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xaf')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xb0')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['FaxQueueReport']['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb1')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb2')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb3')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb4')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb5')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb6')]['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb7')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0x87')][_0x9d12('0x92')]({'where':{'id':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a[_0x9d12('0x9a')]['from']]}});}})['then'](function(){if(_0x4381ea){return _0x4381ea;}})[_0x9d12('0x26')](respondWithResult(_0x2891c1,null))[_0x9d12('0x91')](handleError(_0x2891c1,null));};exports[_0x9d12('0xb8')]=function(_0x6d963c,_0x5112f2){return db[_0x9d12('0x87')]['describe']()[_0x9d12('0x26')](function(_0x431cb2){if(_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')]&&_[_0x9d12('0x9e')](_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')])){if(_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')][_0x9d12('0x2c')]){_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')]=_0x6d963c['body'][_0x9d12('0x95')]['join'](';')+';';}else{_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')]=null;}}else{_0x6d963c['body'][_0x9d12('0x95')]=null;}return db[_0x9d12('0x87')][_0x9d12('0xb8')](_0x6d963c[_0x9d12('0x9a')],{'fields':_[_0x9d12('0x2b')](_0x431cb2),'raw':!![]});})[_0x9d12('0x26')](respondWithResult(_0x5112f2,0xc9))[_0x9d12('0x91')](handleError(_0x5112f2,null));};exports[_0x9d12('0xb9')]=function(_0x48b0ff,_0xe15d43){var _0x7745d3=[];var _0x1f9fb2=0x0;var _0x378fdd=0x0;var _0x1f97e0=0x0;return db[_0x9d12('0x87')]['describe']()[_0x9d12('0x26')](function(_0x1ef278){return BPromise[_0x9d12('0xba')](_0x48b0ff['body'],function(_0x52ee38){var _0x5b24e5={'where':{'$or':[]},'defaults':_0x52ee38,'fields':_[_0x9d12('0x2b')](_0x1ef278),'raw':!![]};if(_0x52ee38[_0x9d12('0xbb')]){for(var _0xe2699e=0x0;_0xe2699e<_0x52ee38[_0x9d12('0xbb')]['length'];_0xe2699e++){var _0x53bef7={};_0x53bef7[_0x52ee38['duplicates'][_0xe2699e]]=_0x52ee38[_0x52ee38[_0x9d12('0xbb')][_0xe2699e]];_0x5b24e5[_0x9d12('0x40')][_0x9d12('0xbc')][_0x9d12('0x2f')](_0x53bef7);}_0x5b24e5[_0x9d12('0x40')]['ListId']=_0x52ee38['ListId'];}return db[_0x9d12('0x87')][_0x9d12('0xbd')](_0x5b24e5)[_0x9d12('0xbe')](function(_0x43bbd9,_0x1cf0b9){if(_0x1cf0b9){_0x1f9fb2++;}else{_0x1f97e0++;}})[_0x9d12('0x91')](function(_0x5638c1){console[_0x9d12('0x27')](_0x5638c1);_0x378fdd++;});});})[_0x9d12('0x26')](function(_0x2acac9){if(_0x2acac9){return{'success':_0x1f9fb2,'failure':_0x378fdd,'duplicates':_0x1f97e0};}})['then'](respondWithResult(_0xe15d43,0xc9))[_0x9d12('0x91')](handleError(_0xe15d43,null));};exports[_0x9d12('0xbf')]=function(_0x4ed861,_0x545a38,_0x15c727){var _0x29a01c;return db[_0x9d12('0x87')][_0x9d12('0x2a')]()[_0x9d12('0x26')](function(_0x335e89){return db[_0x9d12('0x87')][_0x9d12('0x93')]({'where':{'id':_0x4ed861[_0x9d12('0x94')]['id']},'include':[{'model':db[_0x9d12('0x52')],'as':'Tags','attributes':['id','name',_0x9d12('0x43')],'required':_0x4ed861[_0x9d12('0x37')]['tag']?!![]:![]}],'attributes':_['keys'](_0x335e89)});})[_0x9d12('0x26')](function(_0x354c39){_0x29a01c=_0x354c39[_0x9d12('0x9c')]({'plain':!![]});var _0x540ae7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x354c39&&_0x354c39[_0x9d12('0x82')]){if(_0x354c39[_0x9d12('0x82')]){_0x540ae7[_0x9d12('0x40')][_0x9d12('0xc0')]['push']({'ListId':{'$ne':_0x354c39[_0x9d12('0x82')]}});}}return db[_0x9d12('0x30')][_0x9d12('0x9b')](_0x540ae7);})[_0x9d12('0x26')](function(_0x39d279){return _['omit'](_0x29a01c,_['map'](_0x39d279,function(_0x2f574e){return util[_0x9d12('0xc1')](_0x9d12('0xc2'),_0x2f574e['id']);}));})[_0x9d12('0x26')](handleEntityNotFound(_0x545a38,null))[_0x9d12('0x26')](respondWithResult(_0x545a38,null))[_0x9d12('0x91')](handleError(_0x545a38,null));};exports[_0x9d12('0x25')]=function(_0x2e872a,_0x3468cf){var _0x49a2e6;if(_0x2e872a[_0x9d12('0x9a')]['id']){delete _0x2e872a[_0x9d12('0x9a')]['id'];}return db[_0x9d12('0x87')][_0x9d12('0x93')]({'where':{'id':_0x2e872a[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x3468cf,null))['then'](saveUpdates(_0x2e872a['body'],null))[_0x9d12('0x26')](function(_0x6dae56){_0x49a2e6=_0x6dae56;var _0x3d9417={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x6dae56&&_0x6dae56[_0x9d12('0x82')]){if(_0x6dae56['ListId']){_0x3d9417['where'][_0x9d12('0xc0')][_0x9d12('0x2f')]({'ListId':{'$ne':_0x6dae56[_0x9d12('0x82')]}});}}return db['CmCustomField'][_0x9d12('0x9b')](_0x3d9417);})[_0x9d12('0x26')](function(_0x185ecb){if(_0x185ecb){return _[_0x9d12('0xc3')](_['pickBy'](_0x2e872a[_0x9d12('0x9a')],function(_0x15635d,_0x4da22a){return _[_0x9d12('0x2d')](_0x4da22a,_0x9d12('0x2e'));}),_[_0x9d12('0x53')](_0x185ecb,function(_0x5ec77d){return util[_0x9d12('0xc1')](_0x9d12('0xc2'),_0x5ec77d['id']);}));}})[_0x9d12('0x26')](function(_0x4fef25){if(_0x4fef25&&!_['isEmpty'](_0x4fef25)){var _0x1c3183=squel['update']()['table'](_0x9d12('0x46'))[_0x9d12('0xc4')](_0x4fef25)['where'](_0x9d12('0xc5'),_0x2e872a[_0x9d12('0x94')]['id'])[_0x9d12('0xc6')]();return db[_0x9d12('0x83')]['query'](_0x1c3183[_0x9d12('0xc7')],{'replacements':_0x1c3183['values']});}})[_0x9d12('0x26')](function(){if(_0x2e872a[_0x9d12('0x9a')][_0x9d12('0xc8')]&&_0x49a2e6){return db[_0x9d12('0xa1')][_0x9d12('0x25')]({'phone':_0x2e872a[_0x9d12('0x9a')]['phone']},{'where':{'ContactId':_0x49a2e6['id']}});}})[_0x9d12('0x26')](function(){return _0x49a2e6;})[_0x9d12('0x26')](respondWithResult(_0x3468cf,null))[_0x9d12('0x91')](handleError(_0x3468cf,null));};exports['getTags']=function(_0x44f2e6,_0x233d32,_0x57c332){var _0x567833={};var _0x451ab6={};var _0x4d725f;var _0x10847c;return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x44f2e6[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x233d32,null))[_0x9d12('0x26')](function(_0x4a4ed6){if(_0x4a4ed6){_0x4d725f=_0x4a4ed6;_0x451ab6[_0x9d12('0x36')]=_[_0x9d12('0x2b')](db[_0x9d12('0x52')][_0x9d12('0xc9')]);_0x451ab6[_0x9d12('0x37')]=_['keys'](_0x44f2e6[_0x9d12('0x37')]);_0x451ab6[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x451ab6['model'],_0x451ab6[_0x9d12('0x37')]);_0x567833[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x451ab6[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x44f2e6['query']['fields']));_0x567833['attributes']=_0x567833[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x567833['attributes']:_0x451ab6[_0x9d12('0x36')];_0x567833[_0x9d12('0x3e')]=qs['sort'](_0x44f2e6[_0x9d12('0x37')][_0x9d12('0x3f')]);_0x567833['where']=qs[_0x9d12('0x38')](_['pick'](_0x44f2e6['query'],_0x451ab6[_0x9d12('0x38')]));if(_0x44f2e6[_0x9d12('0x37')]['filter']){_0x567833['where']=_[_0x9d12('0x86')](_0x567833[_0x9d12('0x40')],{'$or':_[_0x9d12('0x53')](_0x567833[_0x9d12('0x3a')],function(_0x217a1a){var _0x15acd6={};_0x15acd6[_0x217a1a]={'$like':'%'+_0x44f2e6['query'][_0x9d12('0x5f')]+'%'};return _0x15acd6;})});}_0x567833=_[_0x9d12('0x86')]({},_0x567833,_0x44f2e6[_0x9d12('0xca')]);return _0x4d725f[_0x9d12('0xcb')](_0x567833);}})[_0x9d12('0x26')](function(_0x4cb348){if(_0x4cb348){_0x10847c=_0x4cb348[_0x9d12('0x2c')];if(!_0x44f2e6[_0x9d12('0x37')]['hasOwnProperty']('nolimit')){_0x567833['limit']=qs[_0x9d12('0x20')](_0x44f2e6[_0x9d12('0x37')][_0x9d12('0x20')]);_0x567833['offset']=qs['offset'](_0x44f2e6[_0x9d12('0x37')][_0x9d12('0x1e')]);}return _0x4d725f[_0x9d12('0xcb')](_0x567833);}})[_0x9d12('0x26')](function(_0x55af0f){if(_0x55af0f){return _0x55af0f?{'count':_0x10847c,'rows':_0x55af0f}:null;}})[_0x9d12('0x26')](respondWithResult(_0x233d32,null))[_0x9d12('0x91')](handleError(_0x233d32,null));};exports[_0x9d12('0xcc')]=function(_0x26446a,_0x1713cb,_0x3e6b96){if(_0x26446a[_0x9d12('0x9a')]['id']){delete _0x26446a[_0x9d12('0x9a')]['id'];}return db[_0x9d12('0x87')]['findOne']({'where':{'id':_0x26446a[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x1713cb,null))[_0x9d12('0x26')](function(_0x8fb138){if(_0x8fb138){return _0x8fb138['setTags'](_0x26446a[_0x9d12('0x9a')][_0x9d12('0xcd')]||[]);}return null;})[_0x9d12('0x26')](respondWithResult(_0x1713cb,null))[_0x9d12('0x91')](handleError(_0x1713cb,null));};exports[_0x9d12('0xce')]=function(_0x1d033e,_0x326d41,_0x461029){var _0x35771d={'raw':![],'where':{}};var _0x2ed753={};var _0x1bf201={'count':0x0,'rows':[]};return db[_0x9d12('0x87')]['findOne']({'where':{'id':_0x1d033e[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x326d41,null))[_0x9d12('0x26')](function(_0x201580){if(_0x201580){_0x2ed753[_0x9d12('0x36')]=_[_0x9d12('0x2b')](db[_0x9d12('0xa1')][_0x9d12('0xc9')]);_0x2ed753['query']=_[_0x9d12('0x2b')](_0x1d033e[_0x9d12('0x37')]);_0x2ed753['filters']=_[_0x9d12('0x39')](_0x2ed753['model'],_0x2ed753['query']);_0x35771d[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x2ed753[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x1d033e[_0x9d12('0x37')]['fields']));_0x35771d[_0x9d12('0x3a')]=_0x35771d[_0x9d12('0x3a')]['length']?_0x35771d[_0x9d12('0x3a')]:_0x2ed753[_0x9d12('0x36')];if(!_0x1d033e[_0x9d12('0x37')][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x35771d['limit']=qs[_0x9d12('0x20')](_0x1d033e[_0x9d12('0x37')][_0x9d12('0x20')]);_0x35771d[_0x9d12('0x1e')]=qs[_0x9d12('0x1e')](_0x1d033e[_0x9d12('0x37')]['offset']);}_0x35771d['order']=qs['sort'](_0x1d033e[_0x9d12('0x37')]['sort']);_0x35771d['where']=qs[_0x9d12('0x38')](_[_0x9d12('0xcf')](_0x1d033e[_0x9d12('0x37')],_0x2ed753[_0x9d12('0x38')]));_0x35771d[_0x9d12('0x40')][_0x9d12('0xd0')]=_0x201580['id'];if(_0x1d033e[_0x9d12('0x37')][_0x9d12('0x5f')]){_0x35771d['where']=_[_0x9d12('0x86')](_0x35771d[_0x9d12('0x40')],{'$or':_[_0x9d12('0x53')](_0x35771d[_0x9d12('0x3a')],function(_0x5d17ff){var _0x23f0ac={};_0x23f0ac[_0x5d17ff]={'$like':'%'+_0x1d033e[_0x9d12('0x37')][_0x9d12('0x5f')]+'%'};return _0x23f0ac;})});}_0x35771d=_[_0x9d12('0x86')]({},_0x35771d,_0x1d033e[_0x9d12('0xca')]);return db[_0x9d12('0xa1')][_0x9d12('0x21')]({'where':_0x35771d[_0x9d12('0x40')]})['then'](function(_0x23cee8){_0x1bf201[_0x9d12('0x21')]=_0x23cee8;if(_0x1d033e[_0x9d12('0x37')][_0x9d12('0xd1')]){_0x35771d['include']=[{'all':!![]}];}return db[_0x9d12('0xa1')][_0x9d12('0x9b')](_0x35771d);})['then'](function(_0x168e6a){_0x1bf201[_0x9d12('0x90')]=_0x168e6a;return _0x1bf201;});}})[_0x9d12('0x26')](respondWithFilteredResult(_0x326d41,_0x35771d))[_0x9d12('0x91')](handleError(_0x326d41,null));};exports[_0x9d12('0xd2')]=function(_0x41ea8f,_0x1b9d2b,_0xbbb264){var _0xadc19e={'raw':!![],'where':{}};var _0x1ef344={};var _0x460ff7={'count':0x0,'rows':[]};return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x41ea8f[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x1b9d2b,null))[_0x9d12('0x26')](function(_0x119d2b){if(_0x119d2b){_0x1ef344['model']=_[_0x9d12('0x2b')](db['CmHopperHistory']['rawAttributes']);_0x1ef344[_0x9d12('0x37')]=_[_0x9d12('0x2b')](_0x41ea8f['query']);_0x1ef344[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x1ef344[_0x9d12('0x36')],_0x1ef344['query']);_0xadc19e[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x1ef344[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x41ea8f[_0x9d12('0x37')]['fields']));_0xadc19e[_0x9d12('0x3a')]=_0xadc19e['attributes'][_0x9d12('0x2c')]?_0xadc19e[_0x9d12('0x3a')]:_0x1ef344[_0x9d12('0x36')];if(!_0x41ea8f['query'][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0xadc19e[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x41ea8f[_0x9d12('0x37')]['limit']);_0xadc19e[_0x9d12('0x1e')]=qs[_0x9d12('0x1e')](_0x41ea8f[_0x9d12('0x37')][_0x9d12('0x1e')]);}_0xadc19e['order']=qs['sort'](_0x41ea8f[_0x9d12('0x37')]['sort']);_0xadc19e[_0x9d12('0x40')]=qs[_0x9d12('0x38')](_[_0x9d12('0xcf')](_0x41ea8f[_0x9d12('0x37')],_0x1ef344[_0x9d12('0x38')]));_0xadc19e['where']['ContactId']=_0x119d2b['id'];if(_0x41ea8f[_0x9d12('0x37')][_0x9d12('0x5f')]){_0xadc19e['where']=_[_0x9d12('0x86')](_0xadc19e[_0x9d12('0x40')],{'$or':_['map'](_0xadc19e['attributes'],function(_0x32c812){var _0x195f4c={};_0x195f4c[_0x32c812]={'$like':'%'+_0x41ea8f[_0x9d12('0x37')]['filter']+'%'};return _0x195f4c;})});}_0xadc19e=_[_0x9d12('0x86')]({},_0xadc19e,_0x41ea8f[_0x9d12('0xca')]);return db[_0x9d12('0xae')][_0x9d12('0x21')]({'where':_0xadc19e[_0x9d12('0x40')]})['then'](function(_0x3ec0e3){_0x460ff7[_0x9d12('0x21')]=_0x3ec0e3;if(_0x41ea8f['query'][_0x9d12('0xd1')]){_0xadc19e[_0x9d12('0xd3')]=[{'all':!![]}];}return db[_0x9d12('0xae')][_0x9d12('0x9b')](_0xadc19e);})['then'](function(_0xa4b741){_0x460ff7[_0x9d12('0x90')]=_0xa4b741;return _0x460ff7;});}})[_0x9d12('0x26')](respondWithFilteredResult(_0x1b9d2b,_0xadc19e))[_0x9d12('0x91')](handleError(_0x1b9d2b,null));};exports[_0x9d12('0xd4')]=function(_0x4339ae,_0x57f833,_0x4114a7){var _0x12b201={'raw':!![],'where':{}};var _0x1731a5={};var _0xefeb2f={'count':0x0,'rows':[]};return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x4339ae[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x57f833,null))['then'](function(_0x1eaaf9){if(_0x1eaaf9){_0x1731a5[_0x9d12('0x36')]=_[_0x9d12('0x2b')](db[_0x9d12('0xd5')][_0x9d12('0xc9')]);_0x1731a5['query']=_[_0x9d12('0x2b')](_0x4339ae[_0x9d12('0x37')]);_0x1731a5[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x1731a5[_0x9d12('0x36')],_0x1731a5[_0x9d12('0x37')]);_0x12b201[_0x9d12('0x3a')]=_['intersection'](_0x1731a5[_0x9d12('0x36')],qs['fields'](_0x4339ae[_0x9d12('0x37')][_0x9d12('0x3b')]));_0x12b201[_0x9d12('0x3a')]=_0x12b201[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x12b201[_0x9d12('0x3a')]:_0x1731a5['model'];if(!_0x4339ae['query'][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x12b201[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x4339ae[_0x9d12('0x37')][_0x9d12('0x20')]);_0x12b201[_0x9d12('0x1e')]=qs['offset'](_0x4339ae[_0x9d12('0x37')]['offset']);}_0x12b201[_0x9d12('0x3e')]=qs[_0x9d12('0x3f')](_0x4339ae['query'][_0x9d12('0x3f')]);_0x12b201[_0x9d12('0x40')]=qs[_0x9d12('0x38')](_[_0x9d12('0xcf')](_0x4339ae['query'],_0x1731a5[_0x9d12('0x38')]));_0x12b201[_0x9d12('0x40')][_0x9d12('0xd0')]=_0x1eaaf9['id'];if(_0x4339ae[_0x9d12('0x37')][_0x9d12('0x5f')]){_0x12b201['where']=_[_0x9d12('0x86')](_0x12b201[_0x9d12('0x40')],{'$or':_[_0x9d12('0x53')](_0x12b201[_0x9d12('0x3a')],function(_0x425669){var _0x34fb7f={};_0x34fb7f[_0x425669]={'$like':'%'+_0x4339ae[_0x9d12('0x37')][_0x9d12('0x5f')]+'%'};return _0x34fb7f;})});}_0x12b201=_[_0x9d12('0x86')]({},_0x12b201,_0x4339ae[_0x9d12('0xca')]);return db[_0x9d12('0xd5')][_0x9d12('0x21')]({'where':_0x12b201[_0x9d12('0x40')]})['then'](function(_0x50b895){_0xefeb2f[_0x9d12('0x21')]=_0x50b895;if(_0x4339ae[_0x9d12('0x37')][_0x9d12('0xd1')]){_0x12b201[_0x9d12('0xd3')]=[{'all':!![]}];}return db[_0x9d12('0xd5')][_0x9d12('0x9b')](_0x12b201);})[_0x9d12('0x26')](function(_0x48fa66){_0xefeb2f['rows']=_0x48fa66;return _0xefeb2f;});}})[_0x9d12('0x26')](respondWithFilteredResult(_0x57f833,_0x12b201))[_0x9d12('0x91')](handleError(_0x57f833,null));};exports['getJscriptySessions']=function(_0x54a66b,_0x4dac8d,_0x50d077){var _0x2d4b45={'raw':!![],'where':{}};var _0x679d30={};var _0x56408c={'count':0x0,'rows':[]};return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x54a66b[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x4dac8d,null))['then'](function(_0x5ef8d7){if(_0x5ef8d7){_0x679d30[_0x9d12('0x36')]=_['keys'](db[_0x9d12('0xb4')]['rawAttributes']);_0x679d30[_0x9d12('0x37')]=_[_0x9d12('0x2b')](_0x54a66b['query']);_0x679d30[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x679d30[_0x9d12('0x36')],_0x679d30[_0x9d12('0x37')]);_0x2d4b45[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x679d30[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x54a66b[_0x9d12('0x37')][_0x9d12('0x3b')]));_0x2d4b45['attributes']=_0x2d4b45[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x2d4b45['attributes']:_0x679d30[_0x9d12('0x36')];if(!_0x54a66b[_0x9d12('0x37')]['hasOwnProperty'](_0x9d12('0x3d'))){_0x2d4b45['limit']=qs['limit'](_0x54a66b[_0x9d12('0x37')][_0x9d12('0x20')]);_0x2d4b45[_0x9d12('0x1e')]=qs[_0x9d12('0x1e')](_0x54a66b[_0x9d12('0x37')][_0x9d12('0x1e')]);}_0x2d4b45[_0x9d12('0x3e')]=qs['sort'](_0x54a66b['query'][_0x9d12('0x3f')]);_0x2d4b45['where']=qs['filters'](_[_0x9d12('0xcf')](_0x54a66b[_0x9d12('0x37')],_0x679d30[_0x9d12('0x38')]));_0x2d4b45[_0x9d12('0x40')][_0x9d12('0xd0')]=_0x5ef8d7['id'];if(_0x54a66b[_0x9d12('0x37')][_0x9d12('0x5f')]){_0x2d4b45['where']=_[_0x9d12('0x86')](_0x2d4b45[_0x9d12('0x40')],{'$or':_['map'](_0x2d4b45[_0x9d12('0x3a')],function(_0x4e92fb){var _0x1fb452={};_0x1fb452[_0x4e92fb]={'$like':'%'+_0x54a66b[_0x9d12('0x37')][_0x9d12('0x5f')]+'%'};return _0x1fb452;})});}_0x2d4b45=_[_0x9d12('0x86')]({},_0x2d4b45,_0x54a66b[_0x9d12('0xca')]);return db[_0x9d12('0xb4')][_0x9d12('0x21')]({'where':_0x2d4b45[_0x9d12('0x40')]})[_0x9d12('0x26')](function(_0x1ac560){_0x56408c['count']=_0x1ac560;if(_0x54a66b[_0x9d12('0x37')]['includeAll']){_0x2d4b45[_0x9d12('0xd3')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x9d12('0x9b')](_0x2d4b45);})[_0x9d12('0x26')](function(_0x285685){_0x56408c[_0x9d12('0x90')]=_0x285685;return _0x56408c;});}})['then'](respondWithFilteredResult(_0x4dac8d,_0x2d4b45))[_0x9d12('0x91')](handleError(_0x4dac8d,null));};exports[_0x9d12('0xd6')]=function(_0x49dee2,_0x3f09ac,_0x5353ca){try{if(!_0x49dee2[_0x9d12('0x9a')][_0x9d12('0x82')]){throw new Error(_0x9d12('0xd7'));}if(!_0x49dee2[_0x9d12('0x9a')]['binding_keys']){throw new Error(_0x9d12('0xd8'));}if(!_0x49dee2['body']['binding_values']){throw new Error(_0x9d12('0xd9'));}if(!_0x49dee2['body'][_0x9d12('0xda')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xd997cf=_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xdb')][_0x9d12('0x68')](',');var _0x1380ae=_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xdc')][_0x9d12('0x68')](',');if(!_0xd997cf['length']||!_0x1380ae[_0x9d12('0x2c')]||_0xd997cf[_0x9d12('0x2c')]!==_0x1380ae[_0x9d12('0x2c')]){throw new Error(_0x9d12('0xdd'));}_0x49dee2[_0x9d12('0x9a')][_0x9d12('0x3b')]=_['zipObject'](_0xd997cf,_0x1380ae);if(!_0x49dee2[_0x9d12('0x9a')][_0x9d12('0x3b')][_0x9d12('0xc8')]){throw new Error(_0x9d12('0xde'));}if(!_0x49dee2[_0x9d12('0x9a')]['fields'][_0x9d12('0xdf')]){throw new Error(_0x9d12('0xe0'));}var _0x2bee66=path[_0x9d12('0xe1')](config[_0x9d12('0xe2')],_0x9d12('0xe3'),_0x49dee2[_0x9d12('0xe4')][_0x9d12('0xe5')]);fs['chmodSync'](_0x2bee66,parseInt(_0x9d12('0xe6'),0x8));var _0x219697=require('child_process')['fork'](path[_0x9d12('0xe1')](__dirname,_0x9d12('0xe7')),[_0x2bee66,_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xdb')],_0x49dee2['body'][_0x9d12('0xdc')],_0x49dee2['body'][_0x9d12('0x82')],_0x49dee2[_0x9d12('0x9a')]['CompanyId'],_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xbb')],_0x49dee2[_0x9d12('0x9a')]['socket_timestamp']]);return _0x3f09ac['status'](0xc8)[_0x9d12('0x1d')]({'message':_0x9d12('0xe8'),'pid':_0x219697['pid']});}catch(_0x5b8547){return _0x3f09ac[_0x9d12('0x1b')](0x1f4)['send'](_0x5b8547);}};exports[_0x9d12('0xe9')]=function(_0x50ba18,_0x1742e8,_0x1ca0b6){var _0x2e3965=fs['createReadStream'](_0x50ba18[_0x9d12('0xe4')]['path']);Papa['parse'](_0x2e3965,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x4547ac){return _0x1742e8[_0x9d12('0x1b')](0xc8)[_0x9d12('0x1d')]({'file':_0x50ba18[_0x9d12('0xe4')],'fields':_0x4547ac[_0x9d12('0xea')][_0x9d12('0x3b')]});}});};exports[_0x9d12('0xeb')]=function(_0x5eb270,_0x31018d,_0x33ad85){return db[_0x9d12('0x57')][_0x9d12('0x9b')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0xcb83d8){var _0x2fd02b=![];if(!_0x5eb270[_0x9d12('0x9a')][_0x9d12('0x82')]){throw new Error(_0x9d12('0xd7'));}if(!_0x5eb270['body']['binding'][_0x9d12('0xc8')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x5eb270[_0x9d12('0x9a')][_0x9d12('0xec')][_0x9d12('0xdf')]){throw new Error(_0x9d12('0xe0'));}if(!_0x5eb270[_0x9d12('0x9a')][_0x9d12('0xda')]){throw new Error(_0x9d12('0xed'));}var _0xba5139=require(_0x9d12('0xee'))[_0x9d12('0xef')](path['join'](__dirname,'../../components/import/cm/csv2'),[_0x5eb270['params']['id'],JSON[_0x9d12('0xf0')](_0x5eb270[_0x9d12('0x9a')]),JSON['stringify'](_0xcb83d8)]);_0xba5139['on']('message',function(_0x1d4332){_0x2fd02b=!![];return _0x31018d['status'](0xc8)['json']({'message':_0x9d12('0xf1'),'pid':_0xba5139[_0x9d12('0xf2')]});});_0xba5139['on'](_0x9d12('0xf3'),function(_0x3e6f69){if(_0x3e6f69&&!_0x2fd02b){return _0x31018d['status'](0x1f4)['json']({'message':_0x9d12('0xf4'),'pid':_0xba5139[_0x9d12('0xf2')]});}});})['catch'](handleError(_0x31018d,null));};exports[_0x9d12('0xf5')]=function(_0x293145,_0x1bf511){var _0x343d71=[_0x9d12('0xf6'),_0x9d12('0xf7'),'sms','openchannel',_0x9d12('0xf8'),'whatsapp','voice'];var _0x342107={'offset':0x0,'order':qs[_0x9d12('0x3f')]('-createdAt')},_0x422185={'count':0x0,'rows':[]};Promise[_0x9d12('0x7b')]()[_0x9d12('0x26')](function(){if(_0x293145['query'][_0x9d12('0xf9')]){if(!_[_0x9d12('0xfa')](_0x343d71,_0x293145[_0x9d12('0x37')][_0x9d12('0xf9')][_0x9d12('0xfb')]())){throw new Error('Invalid\x20channel');}_0x343d71=[_0x293145[_0x9d12('0x37')][_0x9d12('0xf9')][_0x9d12('0xfb')]()];}if(_0x293145[_0x9d12('0x37')][_0x9d12('0xfc')]){try{var _0x5b5a9d=JSON[_0x9d12('0xfd')](_0x293145['query']['range']);if(!moment(_0x5b5a9d[_0x9d12('0x45')])[_0x9d12('0xfe')]()){throw new Error(_0x9d12('0xff'));}if(!moment(_0x5b5a9d['to'])['isValid']()){throw new Error(_0x9d12('0x100'));}}catch(_0xf5e216){throw new Error(_0x9d12('0x101'));}}if(!_0x293145[_0x9d12('0x37')][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x342107[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x293145[_0x9d12('0x37')][_0x9d12('0x20')]||0xa);_0x342107[_0x9d12('0x1e')]=qs['offset'](_0x293145[_0x9d12('0x37')][_0x9d12('0x1e')]);}var _0x4f3d5f=_0x343d71['map'](function(_0x2e25df){if(_0x2e25df===_0x9d12('0x102')){var _0x3fca48={'attributes':['id',_0x9d12('0x103'),_0x9d12('0x35'),_0x9d12('0x104'),_0x9d12('0x105'),_0x9d12('0x106'),_0x9d12('0x107'),'endtime','duration','note',_0x9d12('0x108'),_0x9d12('0x109'),'userSecondDisposition','userThirdDisposition','UserId'],'where':{'ContactId':_0x293145['params']['id']},'include':[{'model':db[_0x9d12('0x57')],'as':'User','attributes':['id','name',_0x9d12('0x10a'),_0x9d12('0x98')]}],'order':[[_0x9d12('0x108'),_0x9d12('0x78')]]};if(_0x293145[_0x9d12('0x37')][_0x9d12('0xfc')]){_0x3fca48[_0x9d12('0x40')][_0x9d12('0x108')]={'$gte':_0x5b5a9d[_0x9d12('0x45')],'$lte':_0x5b5a9d['to']};}return db['VoiceCallReport'][_0x9d12('0x10b')](_0x3fca48)[_0x9d12('0x26')](function(_0x25cd21){_0x422185[_0x9d12('0x21')]+=_0x25cd21['count'];return _['map'](_0x25cd21[_0x9d12('0x90')],function(_0x457061){var _0x4b1e23=_0x457061[_0x9d12('0x9c')]({'plain':!![]});_0x4b1e23[_0x9d12('0xf9')]=_0x2e25df;if(_0x4b1e23[_0x9d12('0x57')]){_0x4b1e23[_0x9d12('0x57')]={'id':_0x4b1e23[_0x9d12('0x57')]['id'],'name':_0x4b1e23[_0x9d12('0x57')][_0x9d12('0x29')],'fullname':_0x4b1e23['User'][_0x9d12('0x10a')],'alias':_0x4b1e23[_0x9d12('0x57')][_0x9d12('0x98')]};}return _0x4b1e23;});});}else{var _0x983903=_[_0x9d12('0x10c')](_0x2e25df)+(_0x2e25df===_0x9d12('0xf7')?_0x9d12('0x10d'):_0x9d12('0x10e'));var _0x17a72d={'attributes':['id',_0x9d12('0x10f'),_0x9d12('0x110'),_0x9d12('0x108'),_0x9d12('0x111'),_0x9d12('0x112'),'secondDisposition','thirdDisposition','UserId',_0x983903+'Id'],'where':{'ContactId':_0x293145[_0x9d12('0x94')]['id']},'include':[{'model':db[_0x983903],'as':'Account','attributes':['id',_0x9d12('0x29'),_0x9d12('0x113')]},{'model':db['User'],'as':_0x9d12('0x114'),'attributes':['id',_0x9d12('0x29'),_0x9d12('0x10a')]},{'model':db[_0x9d12('0x52')],'as':_0x9d12('0x8f'),'attributes':['id',_0x9d12('0x29'),_0x9d12('0x43')],'through':{'attributes':[]}}],'order':[[_0x9d12('0x108'),_0x9d12('0x78')]]};if(_0x293145[_0x9d12('0x37')][_0x9d12('0xfc')]){_0x17a72d['where'][_0x9d12('0x108')]={'$gte':_0x5b5a9d[_0x9d12('0x45')],'$lte':_0x5b5a9d['to']};}switch(_0x2e25df){case'chat':_0x17a72d[_0x9d12('0x3a')][_0x9d12('0x2f')]('browserName',_0x9d12('0x115'),_0x9d12('0x116'),'deviceModel',_0x9d12('0x117'),_0x9d12('0x118'),_0x9d12('0x119'),'ratingValue',_0x9d12('0x11a'));break;case _0x9d12('0xf6'):_0x17a72d[_0x9d12('0x3a')]['push'](_0x9d12('0x11b'),_0x9d12('0x11c'));break;case _0x9d12('0x11d'):_0x17a72d['attributes']['push']('externalUrl',_0x9d12('0x11e'));break;}return db[_[_0x9d12('0x10c')](_0x2e25df)+_0x9d12('0x11f')][_0x9d12('0x10b')](_0x17a72d)[_0x9d12('0x26')](function(_0x23e5d3){_0x422185[_0x9d12('0x21')]+=_0x23e5d3[_0x9d12('0x21')];return _[_0x9d12('0x53')](_0x23e5d3['rows'],function(_0x1dbac6){var _0xe9d22b=_0x1dbac6[_0x9d12('0x9c')]({'plain':!![]});_0xe9d22b[_0x9d12('0xf9')]=_0x2e25df;if(_0xe9d22b[_0x9d12('0x114')]){_0xe9d22b[_0x9d12('0x114')]={'id':_0xe9d22b[_0x9d12('0x114')]['id'],'name':_0xe9d22b[_0x9d12('0x114')][_0x9d12('0x29')],'fullname':_0xe9d22b[_0x9d12('0x114')][_0x9d12('0x10a')]};}return _0xe9d22b;});});}});return Promise[_0x9d12('0x33')](_0x4f3d5f);})[_0x9d12('0x26')](function(_0x5c9c24){return _(_0x5c9c24)[_0x9d12('0x120')]()['sortBy'](_0x9d12('0x108'))[_0x9d12('0x121')]()[_0x9d12('0x58')]();})['then'](function(_0x2c54fe){_0x422185[_0x9d12('0x90')]=_0x342107[_0x9d12('0x20')]?_0x2c54fe[_0x9d12('0x122')](_0x342107[_0x9d12('0x1e')],_0x342107['offset']+_0x342107[_0x9d12('0x20')]):_0x2c54fe;return _0x422185;})['then'](respondWithFilteredResult(_0x1bf511,_0x342107))['catch'](handleError(_0x1bf511,null));};
\ No newline at end of file
+var _0x8456=['error\x20child\x20process','getJourney','mail','chat','sms','whatsapp','resolve','channel','includes','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','destination','callerid','starttime','note','createdAt','userDisposition','userThirdDisposition','UserId','fullname','alias','findAndCountAll','Account','closed','closedAt','disposition','secondDisposition','key','color','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','startCase','Interaction','Owner','sortBy','reverse','slice','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmContact.socket','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','CmContact','describe','length','keys','startsWith','cf_','push','CmCustomField','all','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','field','from','tools_tags','select','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','t.id\x20=\x20ct.TagId','where','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','uc.UserId\x20=\x20?','dateOfBirth','fieldType','datetime','castTo','buildExpression','type','text','value','start','end','filter','isNil','Contact','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','replace','getFullTextValue','c.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','DESC','agent','some','user','getLists','isEmpty','c.ListId\x20IS\x20NULL','role','sequelize','toString','merge','c.id','c.lastName','c.phone','c.fax','c.ListId','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','columnName','displayName','findAll','custom','values','body','get','mergeWith','isArray','join','info','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','MailMessage','SmsInteraction','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','create','bulkCreate','each','duplicates','$or','show','$and','omit','format','cf_%d','pickBy','table','id\x20=\x20?','phone','CmHopper','rawAttributes','options','getTags','setTags','findOne','ids','getHoppers','ContactId','includeAll','include','getHopperHistories','CmHopperHistory','getHopperFinals','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','binding_values','No\x20association\x20values\x20specified!','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','socket_timestamp','File\x20uploaded\x20correctly!','pid','upload','createReadStream','path','meta','import','binding','No\x20phone\x20column\x20specified','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','stringify','message','start\x20child\x20process\x20correctly!'];(function(_0x5519a9,_0x1c5147){var _0x32f2cc=function(_0x52ed58){while(--_0x52ed58){_0x5519a9['push'](_0x5519a9['shift']());}};_0x32f2cc(++_0x1c5147);}(_0x8456,0x154));var _0x6845=function(_0x4da17c,_0x291f24){_0x4da17c=_0x4da17c-0x0;var _0x36dd28=_0x8456[_0x4da17c];return _0x36dd28;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6845('0x0'));var rp=require(_0x6845('0x1'));var moment=require(_0x6845('0x2'));var BPromise=require(_0x6845('0x3'));var Mustache=require(_0x6845('0x4'));var util=require(_0x6845('0x5'));var path=require('path');var sox=require(_0x6845('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6845('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6845('0x8'));var jsforce=require(_0x6845('0x9'));var deskjs=require(_0x6845('0xa'));var toCsv=require('to-csv');var querystring=require(_0x6845('0xb'));var Papa=require(_0x6845('0xc'));var Redis=require(_0x6845('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6845('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6845('0xf'))('api');var utils=require(_0x6845('0x10'));var config=require(_0x6845('0x11'));var licenseUtil=require(_0x6845('0x12'));var db=require(_0x6845('0x13'))['db'];config[_0x6845('0x14')]=_['defaults'](config[_0x6845('0x14')],{'host':_0x6845('0x15'),'port':0x18eb});var socket=require(_0x6845('0x16'))(new Redis(config[_0x6845('0x14')]));require(_0x6845('0x17'))['register'](socket);function respondWithStatusCode(_0x21f866,_0x37a4df){_0x37a4df=_0x37a4df||0xcc;return function(_0x643baa){if(_0x643baa){return _0x21f866['sendStatus'](_0x37a4df);}return _0x21f866[_0x6845('0x18')](_0x37a4df)['end']();};}function respondWithResult(_0x109d1d,_0x270d2c){_0x270d2c=_0x270d2c||0xc8;return function(_0x585916){if(_0x585916){return _0x109d1d[_0x6845('0x18')](_0x270d2c)[_0x6845('0x19')](_0x585916);}};}function respondWithFilteredResult(_0x25096e,_0x516515){return function(_0x1d200e){if(_0x1d200e){var _0x394850=typeof _0x516515['offset']==='undefined'&&typeof _0x516515['limit']===_0x6845('0x1a');var _0x301e5a=_0x1d200e[_0x6845('0x1b')];var _0xca845=_0x394850?0x0:_0x516515[_0x6845('0x1c')];var _0x29033e=_0x394850?_0x1d200e[_0x6845('0x1b')]:_0x516515['offset']+_0x516515[_0x6845('0x1d')];var _0x2a7a1d;if(_0x29033e>=_0x301e5a){_0x29033e=_0x301e5a;_0x2a7a1d=0xc8;}else{_0x2a7a1d=0xce;}_0x25096e[_0x6845('0x18')](_0x2a7a1d);return _0x25096e[_0x6845('0x1e')](_0x6845('0x1f'),_0xca845+'-'+_0x29033e+'/'+_0x301e5a)[_0x6845('0x19')](_0x1d200e);}return null;};}function patchUpdates(_0x2dab6c){return function(_0x89ed51){try{jsonpatch['apply'](_0x89ed51,_0x2dab6c,!![]);}catch(_0x280890){return BPromise[_0x6845('0x20')](_0x280890);}return _0x89ed51[_0x6845('0x21')]();};}function saveUpdates(_0x2fbd5a,_0x411ead){return function(_0x3311cc){if(_0x3311cc){return _0x3311cc[_0x6845('0x22')](_0x2fbd5a)[_0x6845('0x23')](function(_0x4afacc){return _0x4afacc;});}return null;};}function removeEntity(_0x152be1,_0x450d92){return function(_0x22c396){if(_0x22c396){return _0x22c396[_0x6845('0x24')]()[_0x6845('0x23')](function(){_0x152be1[_0x6845('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x97a38b,_0x2e017f){return function(_0x1c699d){if(!_0x1c699d){_0x97a38b['sendStatus'](0x194);}return _0x1c699d;};}function handleError(_0x2f6a25,_0x3b7630){_0x3b7630=_0x3b7630||0x1f4;return function(_0x150bd3){logger[_0x6845('0x25')](_0x150bd3[_0x6845('0x26')]);if(_0x150bd3[_0x6845('0x27')]){delete _0x150bd3[_0x6845('0x27')];}_0x2f6a25['status'](_0x3b7630)[_0x6845('0x28')](_0x150bd3);};}exports['index']=function(_0x434089,_0x2ac446){var _0x43f9c6={},_0x51bba2={},_0x41202b={'count':0x0,'rows':[]};return db[_0x6845('0x29')][_0x6845('0x2a')]()[_0x6845('0x23')](function(_0x539587){var _0x28be9d=[];for(var _0x4fc936=0x0;_0x4fc936<Object['keys'](_0x539587)[_0x6845('0x2b')];_0x4fc936++){var _0x5b3fe7=Object[_0x6845('0x2c')](_0x539587)[_0x4fc936];if(_[_0x6845('0x2d')](_0x5b3fe7,_0x6845('0x2e'))){_0x28be9d[_0x6845('0x2f')](db[_0x6845('0x30')]['findOne']({'where':{'id':_['trimStart'](_0x5b3fe7,_0x6845('0x2e'))},'raw':!![]}));}}return BPromise[_0x6845('0x31')](_0x28be9d)[_0x6845('0x23')](function(_0x4ddbaf){for(var _0x116974=0x0;_0x116974<_0x4ddbaf[_0x6845('0x2b')];_0x116974++){if(_0x4ddbaf[_0x116974]){var _0x59d091=_0x6845('0x2e')+_0x4ddbaf[_0x116974]['id'];var _0x56d2a1=_0x539587[_0x59d091];_0x56d2a1['fieldType']=_0x4ddbaf[_0x116974]['type'];}}return _0x539587;});})[_0x6845('0x23')](function(_0x2f7eff){_0x51bba2[_0x6845('0x32')]=_[_0x6845('0x2c')](_0x2f7eff);_0x51bba2[_0x6845('0x33')]=_[_0x6845('0x2c')](_0x434089[_0x6845('0x33')]);_0x51bba2['filters']=_[_0x6845('0x34')](_0x51bba2[_0x6845('0x32')],_0x51bba2['query']);_0x43f9c6[_0x6845('0x35')]=_[_0x6845('0x34')](_0x51bba2[_0x6845('0x32')],qs[_0x6845('0x36')](_0x434089[_0x6845('0x33')][_0x6845('0x36')]));_0x43f9c6[_0x6845('0x35')]=_0x43f9c6[_0x6845('0x35')][_0x6845('0x2b')]?_0x43f9c6[_0x6845('0x35')]:_0x51bba2['model'];if(!_0x434089[_0x6845('0x33')][_0x6845('0x37')](_0x6845('0x38'))){_0x43f9c6[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x434089['query'][_0x6845('0x1d')]);_0x43f9c6[_0x6845('0x1c')]=qs[_0x6845('0x1c')](_0x434089['query']['offset']);}_0x43f9c6[_0x6845('0x39')]=qs['sort'](_0x434089['query'][_0x6845('0x3a')]);_0x43f9c6['where']=qs[_0x6845('0x3b')](_[_0x6845('0x3c')](_0x434089[_0x6845('0x33')],_0x51bba2[_0x6845('0x3b')]),_0x2f7eff);var _0x2c42ad=[];var _0x2c998c=squel['select']()[_0x6845('0x3d')]('id')[_0x6845('0x3d')](_0x6845('0x27'))['field']('color')[_0x6845('0x3e')](_0x6845('0x3f'));var _0x4c2cb1=squel[_0x6845('0x40')]()[_0x6845('0x3e')](_0x6845('0x41'),'c')[_0x6845('0x42')](_0x6845('0x43'),'uc',_0x6845('0x44'))[_0x6845('0x42')](_0x6845('0x45'),'ct','ct.CmContactId\x20=\x20c.id')[_0x6845('0x42')](_0x6845('0x3f'),'t',_0x6845('0x46'))[_0x6845('0x47')](_0x6845('0x48'));var _0x32ddd=squel[_0x6845('0x49')]();var _0x38f02d=[];var _0x135537=squel['expr']();var _0x4c5b26;if(_0x434089['query'][_0x6845('0x4a')]){_0x4c5b26=as[_0x6845('0x4b')](_0x434089[_0x6845('0x33')][_0x6845('0x4a')]);var _0x262005=_0x4c5b26[_0x6845('0x4c')];for(var _0x4dcfc2=0x0;_0x4dcfc2<_0x4c5b26[_0x6845('0x4d')][_0x6845('0x2b')];_0x4dcfc2++){var _0x320e75=_0x4c5b26[_0x6845('0x4d')][_0x4dcfc2];var _0x17dcfd='c';var _0x1865b2=_(_0x2f7eff)[_0x6845('0x2c')]()[_0x6845('0x4e')](function(_0x50793f){return _0x50793f===_0x320e75[_0x6845('0x3d')];});if(_0x1865b2)_0x1865b2=_0x2f7eff[_0x320e75[_0x6845('0x3d')]];if(!_0x1865b2){if(_0x320e75[_0x6845('0x3d')]===_0x6845('0x4f')){var _0x46a4db=_0x320e75['value'][_0x6845('0x50')](',')[_0x6845('0x51')](function(_0x4a78b4){return Number(_0x4a78b4);});_0x46a4db[_0x6845('0x52')](function(_0x1c57f8){_0x135537['or'](_0x6845('0x53'),'%,'+_0x1c57f8+',%');});_0x38f02d=_[_0x6845('0x54')](_0x38f02d,_0x46a4db);}else if(_0x320e75['field']===_0x6845('0x55')){_0x32ddd['and'](_0x6845('0x56'),_0x320e75['value']);}}else{if(_0x320e75['field']===_0x6845('0x57')||_0x1865b2[_0x6845('0x58')]===_0x6845('0x59'))_0x320e75[_0x6845('0x5a')]='DATE';var _0x20ef57=as[_0x6845('0x5b')](_0x17dcfd,_0x1865b2[_0x6845('0x5c')],_0x320e75);_0x32ddd[_0x262005](_0x20ef57[_0x6845('0x5d')],_0x20ef57[_0x6845('0x5e')][_0x6845('0x5f')],_0x20ef57['value'][_0x6845('0x60')]);}}}else{var _0x16df7c=_(Object[_0x6845('0x2c')](_0x434089[_0x6845('0x33')]))[_0x6845('0x51')](function(_0x1f9f03){return _0x2f7eff[_0x6845('0x37')](_0x1f9f03)?_0x1f9f03:undefined;})[_0x6845('0x61')](function(_0x59b731){return!_[_0x6845('0x62')](_0x59b731);})[_0x6845('0x5e')]();if(_0x434089['query']['Contact'])_0x16df7c[_0x6845('0x2f')](_0x6845('0x63'));if(!_['isEmpty'](_0x16df7c)){_0x16df7c[_0x6845('0x52')](function(_0x12ec49){if(_0x12ec49===_0x6845('0x64')){_0x4c2cb1['where'](_0x6845('0x65'),[][_0x6845('0x66')](_0x434089['query'][_0x12ec49]));}else if(_0x12ec49==='Contact'){var _0x1966fc='%'+_0x434089[_0x6845('0x33')][_0x12ec49]+'%';_0x4c2cb1[_0x6845('0x47')](_0x6845('0x67'),_0x1966fc);}else{_0x4c2cb1[_0x6845('0x47')]('c.'+_0x12ec49+_0x6845('0x68'),_0x434089[_0x6845('0x33')][_0x12ec49]);}});}if(_0x434089[_0x6845('0x33')][_0x6845('0x69')]){_0x38f02d=_['isArray'](_0x434089[_0x6845('0x33')][_0x6845('0x69')])?_0x434089[_0x6845('0x33')][_0x6845('0x69')]:new Array(_0x434089[_0x6845('0x33')][_0x6845('0x69')]);_0x38f02d[_0x6845('0x52')](function(_0x1ae7bf){_0x135537['or'](_0x6845('0x53'),'%,'+_0x1ae7bf+',%');});}if(_0x434089[_0x6845('0x33')][_0x6845('0x61')]){var _0x2bfcc9=_0x434089[_0x6845('0x33')]['filter'][_0x6845('0x6a')]('\x5c','\x5c\x5c')[_0x6845('0x6a')](/'/g,'\x27\x27');if(_0x2bfcc9[_0x6845('0x50')]('\x20')['length']>0x1){_0x32ddd['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6845('0x6b')](_0x2bfcc9),null);}else{if(qs['isNumeric'](_0x2bfcc9)){_0x32ddd['or'](_0x6845('0x6c'),_0x2bfcc9+'%');_0x32ddd['or']('c.phone\x20LIKE\x20?',_0x2bfcc9+'%');_0x32ddd['or']('c.mobile\x20LIKE\x20?',_0x2bfcc9+'%');_0x32ddd['or']('c.fax\x20LIKE\x20?',_0x2bfcc9+'%');}else if(qs[_0x6845('0x6d')](_0x2bfcc9)){_0x32ddd['or'](_0x6845('0x6e'),_0x2bfcc9+'%');}else{_0x32ddd['or'](_0x6845('0x6f'),'%'+_0x2bfcc9+'%');_0x32ddd['or'](_0x6845('0x70'),'%'+_0x2bfcc9+'%');_0x32ddd['or'](_0x6845('0x6e'),'%'+_0x2bfcc9+'%');}}}}_0x4c2cb1['where'](_0x32ddd);_0x4c2cb1[_0x6845('0x71')]('c.id');var _0x340081={'type':db[_0x6845('0x72')][_0x6845('0x73')][_0x6845('0x74')],'raw':!![]};var _0x2623bd=_0x4c2cb1[_0x6845('0x75')]()['field']('c.id');if(_0x43f9c6[_0x6845('0x39')]){_0x43f9c6[_0x6845('0x39')]['forEach'](function(_0x45f299){_0x4c2cb1['order']('c.'+_0x45f299[0x0],_0x45f299[0x1]===_0x6845('0x76')?![]:!![]);});}if(!_['isEmpty'](_0x38f02d)){_0x4c2cb1['having'](_0x135537);_0x2623bd[_0x6845('0x47')]('t.id\x20IN\x20?',_0x38f02d);}BPromise['resolve']()[_0x6845('0x23')](function(){if(!_0x4c5b26)return;if(_0x434089['user']['role']!==_0x6845('0x77'))return;if(!_[_0x6845('0x78')](_0x4c5b26['conditions'],[_0x6845('0x3d'),'User'])){return _0x434089[_0x6845('0x79')][_0x6845('0x7a')]({'attributes':['id'],'raw':!![]})[_0x6845('0x23')](function(_0x425860){if(_[_0x6845('0x7b')](_0x425860)){_0x2623bd[_0x6845('0x47')]('c.ListId\x20IS\x20NULL');_0x4c2cb1[_0x6845('0x47')](_0x6845('0x7c'));}else{_0x2623bd[_0x6845('0x47')](_0x6845('0x65'),_[_0x6845('0x51')](_0x425860,'id'));_0x4c2cb1[_0x6845('0x47')](_0x6845('0x65'),_[_0x6845('0x51')](_0x425860,'id'));}});}})['then'](function(){if(_0x434089['user'][_0x6845('0x7d')]==='agent'&&!_0x4c5b26&&!_0x434089[_0x6845('0x33')][_0x6845('0x64')])return[];return db[_0x6845('0x7e')]['query'](_0x2623bd[_0x6845('0x7f')](),_0x340081);})['then'](function(_0x2e753d){_0x41202b[_0x6845('0x1b')]=_0x2e753d['length'];if(_0x41202b[_0x6845('0x1b')]===0x0)return[];return db[_0x6845('0x7e')][_0x6845('0x33')](_0x2c998c[_0x6845('0x7f')](),_0x340081)['then'](function(_0x36c0cc){_0x2c42ad=_['keyBy'](_0x36c0cc,'id');_0x340081=_[_0x6845('0x80')](_0x340081,{'model':db[_0x6845('0x29')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x434089[_0x6845('0x33')]['fields']){_0x43f9c6[_0x6845('0x35')][_0x6845('0x52')](function(_0x959a5d){_0x4c2cb1[_0x6845('0x3d')]('c.'+_0x959a5d);});}else{_0x4c2cb1[_0x6845('0x3d')](_0x6845('0x81'));_0x4c2cb1[_0x6845('0x3d')]('c.firstName');_0x4c2cb1['field'](_0x6845('0x82'));_0x4c2cb1[_0x6845('0x3d')](_0x6845('0x83'));_0x4c2cb1['field']('c.mobile');_0x4c2cb1[_0x6845('0x3d')](_0x6845('0x84'));_0x4c2cb1[_0x6845('0x3d')]('c.email');_0x4c2cb1['field'](_0x6845('0x85'));_0x4c2cb1[_0x6845('0x3d')]('c.createdAt');_0x4c2cb1[_0x6845('0x3d')]('c.deletedAt');_0x4c2cb1['field'](_0x6845('0x86'));_0x4c2cb1[_0x6845('0x3d')](_0x6845('0x87'),'TagIds');}if(_0x43f9c6[_0x6845('0x1d')])_0x4c2cb1[_0x6845('0x1d')](_0x43f9c6['limit']);if(_0x43f9c6[_0x6845('0x1c')])_0x4c2cb1['offset'](_0x43f9c6['offset']);return db['sequelize'][_0x6845('0x33')](_0x4c2cb1[_0x6845('0x7f')](),_0x340081);});})[_0x6845('0x23')](function(_0x1539df){_0x1539df[_0x6845('0x52')](function(_0x3e61f0){if(_0x3e61f0[_0x6845('0x88')]){_0x3e61f0[_0x6845('0x89')]=[];_0x3e61f0[_0x6845('0x88')][_0x6845('0x50')](',')[_0x6845('0x52')](function(_0x1189c8){_0x3e61f0[_0x6845('0x89')][_0x6845('0x2f')](_0x2c42ad[_0x1189c8]);});}delete _0x3e61f0[_0x6845('0x88')];});_0x41202b[_0x6845('0x8a')]=_0x1539df;return _0x41202b;})['then'](respondWithFilteredResult(_0x2ac446,_0x43f9c6));})[_0x6845('0x8b')](handleError(_0x2ac446,null));};exports[_0x6845('0x24')]=function(_0x1eb17f,_0x1b6e68){return db['CmContact']['find']({'where':{'id':_0x1eb17f[_0x6845('0x8c')]['id']}})[_0x6845('0x23')](handleEntityNotFound(_0x1b6e68,null))[_0x6845('0x23')](removeEntity(_0x1b6e68,null))['catch'](handleError(_0x1b6e68,null));};exports[_0x6845('0x2a')]=function(_0xe3cbe6,_0x4025f1){return db[_0x6845('0x29')][_0x6845('0x2a')]()[_0x6845('0x23')](function(_0x37a09d){delete _0x37a09d[_0x6845('0x8d')];for(var _0x50fcc1=0x0;_0x50fcc1<Object[_0x6845('0x2c')](_0x37a09d)['length'];_0x50fcc1++){var _0x53c69b=Object[_0x6845('0x2c')](_0x37a09d)[_0x50fcc1];if(!_[_0x6845('0x2d')](_0x53c69b,_0x6845('0x2e'))){_0x37a09d[_0x53c69b][_0x6845('0x8e')]=_0x53c69b;_0x37a09d[_0x53c69b][_0x6845('0x8f')]=_0x53c69b;}}return _0x37a09d;})[_0x6845('0x23')](function(_0x12446f){var _0x28a747={'where':{'$or':[{'ListId':_0xe3cbe6[_0x6845('0x33')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x6845('0x30')][_0x6845('0x90')](_0x28a747)['then'](function(_0x59c28b){for(var _0x102983=0x0;_0x102983<_0x59c28b[_0x6845('0x2b')];_0x102983++){var _0x32c982=_0x6845('0x2e')+_0x59c28b[_0x102983]['id'];_0x12446f[_0x32c982]['columnName']=_0x32c982;_0x12446f[_0x32c982][_0x6845('0x8f')]=_0x59c28b[_0x102983]['alias'];_0x12446f[_0x32c982][_0x6845('0x91')]={'type':_0x59c28b[_0x102983][_0x6845('0x5c')],'values':_0x59c28b[_0x102983][_0x6845('0x92')]};}Object['keys'](_0x12446f)[_0x6845('0x52')](function(_0x128e77){if(!_0x12446f[_0x128e77][_0x6845('0x37')]('columnName')){delete _0x12446f[_0x128e77];}});return _0x12446f;});})[_0x6845('0x23')](respondWithResult(_0x4025f1,null))['catch'](handleError(_0x4025f1,null));};exports['merge']=function(_0x412036,_0x1bb350){var _0x42a531;var _0x11fc06;var _0x13b85b;if(_0x412036[_0x6845('0x93')]['id']){delete _0x412036['body']['id'];}return db['CmContact'][_0x6845('0x90')]({'where':{'id':[_0x412036[_0x6845('0x93')]['to'],_0x412036[_0x6845('0x93')][_0x6845('0x3e')]]}})[_0x6845('0x23')](function(_0x1b9897){if(_0x1b9897){if(_0x1b9897[_0x6845('0x2b')]!==0x2){return null;}_0x1b9897[0x0]=_0x1b9897[0x0][_0x6845('0x94')]({'plain':!![]});_0x1b9897[0x1]=_0x1b9897[0x1][_0x6845('0x94')]({'plain':!![]});delete _0x1b9897[0x0]['id'];delete _0x1b9897[0x1]['id'];return _[_0x6845('0x95')](_0x1b9897[0x0],_0x1b9897[0x1],function(_0x559d4c,_0x2b179b){if(Array[_0x6845('0x96')](_0x2b179b)&&!_0x2b179b[_0x6845('0x2b')]){return _0x559d4c;}else if(!_0x2b179b){return _0x559d4c;}});}})['then'](handleEntityNotFound(_0x1bb350,null))[_0x6845('0x23')](function(_0x510901){if(_0x510901){if(_0x510901['tags']&&_[_0x6845('0x96')](_0x510901[_0x6845('0x8d')])){_0x510901['tags']=_0x510901[_0x6845('0x8d')][_0x6845('0x97')]();}logger[_0x6845('0x98')]('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x412036['body']['to'],_0x412036[_0x6845('0x93')][_0x6845('0x3e')]);return db['CmHopper'][_0x6845('0x24')]({'where':{'ContactId':[_0x412036['body']['to'],_0x412036[_0x6845('0x93')][_0x6845('0x3e')]]}})['then'](function(_0x193587){logger[_0x6845('0x98')](_0x6845('0x99'),_0x193587);return db['CmHopperBlack'][_0x6845('0x24')]({'where':{'ContactId':[_0x412036[_0x6845('0x93')]['to'],_0x412036[_0x6845('0x93')][_0x6845('0x3e')]]}})[_0x6845('0x23')](function(_0x8aa0ef){logger[_0x6845('0x98')](_0x6845('0x9a'),_0x8aa0ef);return db[_0x6845('0x29')]['create'](_0x510901);});});}})[_0x6845('0x23')](function(_0x863ec){if(_0x863ec){_0x42a531=_0x863ec;_0x11fc06={'ContactId':_0x42a531['id']};_0x13b85b={'where':{'ContactId':[_0x412036['body']['to'],_0x412036[_0x6845('0x93')][_0x6845('0x3e')]]}};return db[_0x6845('0x9b')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0x9c')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db['ChatOfflineMessage'][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db['MailInteraction'][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db['MailMessage'][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db['MailInteraction'][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db[_0x6845('0x9d')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db[_0x6845('0x9e')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0x9f')]['update'](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db['FaxInteraction']['update'](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa0')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa1')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa2')]['update'](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa3')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db['CmHopperHistory']['update'](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa4')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa5')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db['ChatQueueReport']['update'](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db[_0x6845('0xa6')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa7')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa8')]['update'](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xa9')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xaa')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})['then'](function(){if(_0x42a531){return db[_0x6845('0xab')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xac')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db[_0x6845('0xad')][_0x6845('0x22')](_0x11fc06,_0x13b85b);}})[_0x6845('0x23')](function(){if(_0x42a531){return db['CmContact'][_0x6845('0x24')]({'where':{'id':[_0x412036[_0x6845('0x93')]['to'],_0x412036[_0x6845('0x93')][_0x6845('0x3e')]]}});}})[_0x6845('0x23')](function(){if(_0x42a531){return _0x42a531;}})[_0x6845('0x23')](respondWithResult(_0x1bb350,null))[_0x6845('0x8b')](handleError(_0x1bb350,null));};exports[_0x6845('0xae')]=function(_0xce6374,_0x4c5358){return db[_0x6845('0x29')][_0x6845('0x2a')]()['then'](function(_0x1674f8){if(_0xce6374[_0x6845('0x93')][_0x6845('0x8d')]&&_[_0x6845('0x96')](_0xce6374['body']['tags'])){if(_0xce6374[_0x6845('0x93')][_0x6845('0x8d')][_0x6845('0x2b')]){_0xce6374[_0x6845('0x93')]['tags']=_0xce6374['body'][_0x6845('0x8d')][_0x6845('0x97')](';')+';';}else{_0xce6374[_0x6845('0x93')]['tags']=null;}}else{_0xce6374['body']['tags']=null;}return db[_0x6845('0x29')][_0x6845('0xae')](_0xce6374[_0x6845('0x93')],{'fields':_[_0x6845('0x2c')](_0x1674f8),'raw':!![]});})['then'](respondWithResult(_0x4c5358,0xc9))[_0x6845('0x8b')](handleError(_0x4c5358,null));};exports[_0x6845('0xaf')]=function(_0x4222f7,_0x203ff3){var _0xd34b0c=[];var _0x4461f6=0x0;var _0x20ff52=0x0;var _0x2367d7=0x0;return db[_0x6845('0x29')][_0x6845('0x2a')]()[_0x6845('0x23')](function(_0x47d521){return BPromise[_0x6845('0xb0')](_0x4222f7[_0x6845('0x93')],function(_0x288dff){var _0x39c4de={'where':{'$or':[]},'defaults':_0x288dff,'fields':_[_0x6845('0x2c')](_0x47d521),'raw':!![]};if(_0x288dff['duplicates']){for(var _0x5dd579=0x0;_0x5dd579<_0x288dff[_0x6845('0xb1')][_0x6845('0x2b')];_0x5dd579++){var _0x12b9a8={};_0x12b9a8[_0x288dff['duplicates'][_0x5dd579]]=_0x288dff[_0x288dff[_0x6845('0xb1')][_0x5dd579]];_0x39c4de['where'][_0x6845('0xb2')]['push'](_0x12b9a8);}_0x39c4de['where']['ListId']=_0x288dff[_0x6845('0x64')];}return db[_0x6845('0x29')]['findOrCreate'](_0x39c4de)['spread'](function(_0x1fcaaa,_0x182cf4){if(_0x182cf4){_0x4461f6++;}else{_0x2367d7++;}})[_0x6845('0x8b')](function(_0x44e526){console[_0x6845('0x25')](_0x44e526);_0x20ff52++;});});})[_0x6845('0x23')](function(_0x4e25ab){if(_0x4e25ab){return{'success':_0x4461f6,'failure':_0x20ff52,'duplicates':_0x2367d7};}})[_0x6845('0x23')](respondWithResult(_0x203ff3,0xc9))[_0x6845('0x8b')](handleError(_0x203ff3,null));};exports[_0x6845('0xb3')]=function(_0x42c640,_0x2a3a7a,_0x9475df){var _0x3cc0b2;return db['CmContact'][_0x6845('0x2a')]()['then'](function(_0x24c2ed){return db['CmContact'][_0x6845('0x4e')]({'where':{'id':_0x42c640['params']['id']},'include':[{'model':db[_0x6845('0x4f')],'as':_0x6845('0x89'),'attributes':['id','name','color'],'required':_0x42c640[_0x6845('0x33')][_0x6845('0x69')]?!![]:![]}],'attributes':_['keys'](_0x24c2ed)});})['then'](function(_0x498583){_0x3cc0b2=_0x498583[_0x6845('0x94')]({'plain':!![]});var _0x17f469={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x498583&&_0x498583[_0x6845('0x64')]){if(_0x498583[_0x6845('0x64')]){_0x17f469['where'][_0x6845('0xb4')]['push']({'ListId':{'$ne':_0x498583[_0x6845('0x64')]}});}}return db['CmCustomField'][_0x6845('0x90')](_0x17f469);})[_0x6845('0x23')](function(_0x277b6f){return _[_0x6845('0xb5')](_0x3cc0b2,_['map'](_0x277b6f,function(_0x732b5c){return util[_0x6845('0xb6')](_0x6845('0xb7'),_0x732b5c['id']);}));})[_0x6845('0x23')](handleEntityNotFound(_0x2a3a7a,null))[_0x6845('0x23')](respondWithResult(_0x2a3a7a,null))[_0x6845('0x8b')](handleError(_0x2a3a7a,null));};exports[_0x6845('0x22')]=function(_0x5f33ff,_0x3d0cff){var _0x4ff119;if(_0x5f33ff['body']['id']){delete _0x5f33ff[_0x6845('0x93')]['id'];}return db[_0x6845('0x29')]['find']({'where':{'id':_0x5f33ff[_0x6845('0x8c')]['id']}})['then'](handleEntityNotFound(_0x3d0cff,null))[_0x6845('0x23')](saveUpdates(_0x5f33ff[_0x6845('0x93')],null))['then'](function(_0x3b9ed4){_0x4ff119=_0x3b9ed4;var _0x113809={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3b9ed4&&_0x3b9ed4[_0x6845('0x64')]){if(_0x3b9ed4[_0x6845('0x64')]){_0x113809[_0x6845('0x47')][_0x6845('0xb4')]['push']({'ListId':{'$ne':_0x3b9ed4[_0x6845('0x64')]}});}}return db[_0x6845('0x30')][_0x6845('0x90')](_0x113809);})[_0x6845('0x23')](function(_0x4eda7d){if(_0x4eda7d){return _[_0x6845('0xb5')](_[_0x6845('0xb8')](_0x5f33ff[_0x6845('0x93')],function(_0x35ce7a,_0x32a959){return _[_0x6845('0x2d')](_0x32a959,'cf_');}),_['map'](_0x4eda7d,function(_0x1fe0f3){return util[_0x6845('0xb6')](_0x6845('0xb7'),_0x1fe0f3['id']);}));}})[_0x6845('0x23')](function(_0x447a3d){if(_0x447a3d&&!_[_0x6845('0x7b')](_0x447a3d)){var _0x38a4f4=squel['update']()[_0x6845('0xb9')]('cm_contacts')['setFields'](_0x447a3d)[_0x6845('0x47')](_0x6845('0xba'),_0x5f33ff[_0x6845('0x8c')]['id'])['toParam']();return db[_0x6845('0x7e')]['query'](_0x38a4f4[_0x6845('0x5d')],{'replacements':_0x38a4f4[_0x6845('0x92')]});}})[_0x6845('0x23')](function(){if(_0x5f33ff[_0x6845('0x93')][_0x6845('0xbb')]&&_0x4ff119){return db[_0x6845('0xbc')][_0x6845('0x22')]({'phone':_0x5f33ff[_0x6845('0x93')][_0x6845('0xbb')]},{'where':{'ContactId':_0x4ff119['id']}});}})['then'](function(){return _0x4ff119;})['then'](respondWithResult(_0x3d0cff,null))[_0x6845('0x8b')](handleError(_0x3d0cff,null));};exports['getTags']=function(_0x1714d5,_0x47d745,_0x554985){var _0x5ab611={};var _0x9e9b4d={};var _0x5a488f;var _0x490d6f;return db[_0x6845('0x29')]['findOne']({'where':{'id':_0x1714d5[_0x6845('0x8c')]['id']}})[_0x6845('0x23')](handleEntityNotFound(_0x47d745,null))['then'](function(_0x3ebe99){if(_0x3ebe99){_0x5a488f=_0x3ebe99;_0x9e9b4d[_0x6845('0x32')]=_['keys'](db[_0x6845('0x4f')][_0x6845('0xbd')]);_0x9e9b4d[_0x6845('0x33')]=_['keys'](_0x1714d5[_0x6845('0x33')]);_0x9e9b4d[_0x6845('0x3b')]=_[_0x6845('0x34')](_0x9e9b4d[_0x6845('0x32')],_0x9e9b4d[_0x6845('0x33')]);_0x5ab611[_0x6845('0x35')]=_['intersection'](_0x9e9b4d['model'],qs['fields'](_0x1714d5[_0x6845('0x33')]['fields']));_0x5ab611['attributes']=_0x5ab611[_0x6845('0x35')][_0x6845('0x2b')]?_0x5ab611[_0x6845('0x35')]:_0x9e9b4d[_0x6845('0x32')];_0x5ab611[_0x6845('0x39')]=qs[_0x6845('0x3a')](_0x1714d5[_0x6845('0x33')][_0x6845('0x3a')]);_0x5ab611[_0x6845('0x47')]=qs['filters'](_[_0x6845('0x3c')](_0x1714d5[_0x6845('0x33')],_0x9e9b4d[_0x6845('0x3b')]));if(_0x1714d5['query'][_0x6845('0x61')]){_0x5ab611['where']=_[_0x6845('0x80')](_0x5ab611[_0x6845('0x47')],{'$or':_[_0x6845('0x51')](_0x5ab611[_0x6845('0x35')],function(_0x13746a){var _0x153526={};_0x153526[_0x13746a]={'$like':'%'+_0x1714d5['query'][_0x6845('0x61')]+'%'};return _0x153526;})});}_0x5ab611=_[_0x6845('0x80')]({},_0x5ab611,_0x1714d5[_0x6845('0xbe')]);return _0x5a488f[_0x6845('0xbf')](_0x5ab611);}})[_0x6845('0x23')](function(_0x44a15c){if(_0x44a15c){_0x490d6f=_0x44a15c[_0x6845('0x2b')];if(!_0x1714d5[_0x6845('0x33')][_0x6845('0x37')](_0x6845('0x38'))){_0x5ab611[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x1714d5[_0x6845('0x33')][_0x6845('0x1d')]);_0x5ab611[_0x6845('0x1c')]=qs[_0x6845('0x1c')](_0x1714d5['query']['offset']);}return _0x5a488f[_0x6845('0xbf')](_0x5ab611);}})[_0x6845('0x23')](function(_0xd102da){if(_0xd102da){return _0xd102da?{'count':_0x490d6f,'rows':_0xd102da}:null;}})[_0x6845('0x23')](respondWithResult(_0x47d745,null))['catch'](handleError(_0x47d745,null));};exports[_0x6845('0xc0')]=function(_0x29dd07,_0x2844cf,_0x2cb424){if(_0x29dd07[_0x6845('0x93')]['id']){delete _0x29dd07[_0x6845('0x93')]['id'];}return db[_0x6845('0x29')][_0x6845('0xc1')]({'where':{'id':_0x29dd07[_0x6845('0x8c')]['id']}})[_0x6845('0x23')](handleEntityNotFound(_0x2844cf,null))[_0x6845('0x23')](function(_0x882637){if(_0x882637){return _0x882637[_0x6845('0xc0')](_0x29dd07[_0x6845('0x93')][_0x6845('0xc2')]||[]);}return null;})[_0x6845('0x23')](respondWithResult(_0x2844cf,null))[_0x6845('0x8b')](handleError(_0x2844cf,null));};exports[_0x6845('0xc3')]=function(_0x2e2120,_0x5a4553,_0x137d28){var _0x15387f={'raw':![],'where':{}};var _0x44d7d7={};var _0x24a782={'count':0x0,'rows':[]};return db[_0x6845('0x29')]['findOne']({'where':{'id':_0x2e2120['params']['id']}})[_0x6845('0x23')](handleEntityNotFound(_0x5a4553,null))[_0x6845('0x23')](function(_0x140c55){if(_0x140c55){_0x44d7d7[_0x6845('0x32')]=_[_0x6845('0x2c')](db['CmHopper'][_0x6845('0xbd')]);_0x44d7d7[_0x6845('0x33')]=_[_0x6845('0x2c')](_0x2e2120[_0x6845('0x33')]);_0x44d7d7[_0x6845('0x3b')]=_['intersection'](_0x44d7d7['model'],_0x44d7d7[_0x6845('0x33')]);_0x15387f[_0x6845('0x35')]=_['intersection'](_0x44d7d7[_0x6845('0x32')],qs[_0x6845('0x36')](_0x2e2120[_0x6845('0x33')][_0x6845('0x36')]));_0x15387f[_0x6845('0x35')]=_0x15387f[_0x6845('0x35')][_0x6845('0x2b')]?_0x15387f[_0x6845('0x35')]:_0x44d7d7[_0x6845('0x32')];if(!_0x2e2120[_0x6845('0x33')][_0x6845('0x37')]('nolimit')){_0x15387f[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x2e2120[_0x6845('0x33')][_0x6845('0x1d')]);_0x15387f[_0x6845('0x1c')]=qs[_0x6845('0x1c')](_0x2e2120[_0x6845('0x33')][_0x6845('0x1c')]);}_0x15387f['order']=qs[_0x6845('0x3a')](_0x2e2120['query'][_0x6845('0x3a')]);_0x15387f['where']=qs[_0x6845('0x3b')](_[_0x6845('0x3c')](_0x2e2120[_0x6845('0x33')],_0x44d7d7['filters']));_0x15387f[_0x6845('0x47')][_0x6845('0xc4')]=_0x140c55['id'];if(_0x2e2120[_0x6845('0x33')][_0x6845('0x61')]){_0x15387f[_0x6845('0x47')]=_[_0x6845('0x80')](_0x15387f[_0x6845('0x47')],{'$or':_[_0x6845('0x51')](_0x15387f[_0x6845('0x35')],function(_0x34f72f){var _0x42d86b={};_0x42d86b[_0x34f72f]={'$like':'%'+_0x2e2120[_0x6845('0x33')][_0x6845('0x61')]+'%'};return _0x42d86b;})});}_0x15387f=_['merge']({},_0x15387f,_0x2e2120[_0x6845('0xbe')]);return db[_0x6845('0xbc')][_0x6845('0x1b')]({'where':_0x15387f[_0x6845('0x47')]})[_0x6845('0x23')](function(_0x5e6f94){_0x24a782[_0x6845('0x1b')]=_0x5e6f94;if(_0x2e2120[_0x6845('0x33')][_0x6845('0xc5')]){_0x15387f[_0x6845('0xc6')]=[{'all':!![]}];}return db[_0x6845('0xbc')]['findAll'](_0x15387f);})['then'](function(_0x28c4b1){_0x24a782[_0x6845('0x8a')]=_0x28c4b1;return _0x24a782;});}})[_0x6845('0x23')](respondWithFilteredResult(_0x5a4553,_0x15387f))[_0x6845('0x8b')](handleError(_0x5a4553,null));};exports[_0x6845('0xc7')]=function(_0x2aebc7,_0x48287b,_0x2fb11a){var _0xf72cd2={'raw':!![],'where':{}};var _0x1be076={};var _0x3ad620={'count':0x0,'rows':[]};return db['CmContact']['findOne']({'where':{'id':_0x2aebc7[_0x6845('0x8c')]['id']}})[_0x6845('0x23')](handleEntityNotFound(_0x48287b,null))[_0x6845('0x23')](function(_0x3ed682){if(_0x3ed682){_0x1be076[_0x6845('0x32')]=_[_0x6845('0x2c')](db['CmHopperHistory'][_0x6845('0xbd')]);_0x1be076[_0x6845('0x33')]=_[_0x6845('0x2c')](_0x2aebc7[_0x6845('0x33')]);_0x1be076['filters']=_[_0x6845('0x34')](_0x1be076[_0x6845('0x32')],_0x1be076[_0x6845('0x33')]);_0xf72cd2[_0x6845('0x35')]=_[_0x6845('0x34')](_0x1be076[_0x6845('0x32')],qs[_0x6845('0x36')](_0x2aebc7['query'][_0x6845('0x36')]));_0xf72cd2[_0x6845('0x35')]=_0xf72cd2[_0x6845('0x35')]['length']?_0xf72cd2[_0x6845('0x35')]:_0x1be076[_0x6845('0x32')];if(!_0x2aebc7['query']['hasOwnProperty'](_0x6845('0x38'))){_0xf72cd2[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x2aebc7[_0x6845('0x33')][_0x6845('0x1d')]);_0xf72cd2[_0x6845('0x1c')]=qs[_0x6845('0x1c')](_0x2aebc7['query']['offset']);}_0xf72cd2[_0x6845('0x39')]=qs[_0x6845('0x3a')](_0x2aebc7[_0x6845('0x33')]['sort']);_0xf72cd2['where']=qs[_0x6845('0x3b')](_[_0x6845('0x3c')](_0x2aebc7[_0x6845('0x33')],_0x1be076[_0x6845('0x3b')]));_0xf72cd2[_0x6845('0x47')][_0x6845('0xc4')]=_0x3ed682['id'];if(_0x2aebc7[_0x6845('0x33')][_0x6845('0x61')]){_0xf72cd2[_0x6845('0x47')]=_['merge'](_0xf72cd2[_0x6845('0x47')],{'$or':_[_0x6845('0x51')](_0xf72cd2[_0x6845('0x35')],function(_0x315466){var _0x696017={};_0x696017[_0x315466]={'$like':'%'+_0x2aebc7['query'][_0x6845('0x61')]+'%'};return _0x696017;})});}_0xf72cd2=_[_0x6845('0x80')]({},_0xf72cd2,_0x2aebc7[_0x6845('0xbe')]);return db[_0x6845('0xc8')][_0x6845('0x1b')]({'where':_0xf72cd2[_0x6845('0x47')]})[_0x6845('0x23')](function(_0x587abe){_0x3ad620['count']=_0x587abe;if(_0x2aebc7[_0x6845('0x33')][_0x6845('0xc5')]){_0xf72cd2[_0x6845('0xc6')]=[{'all':!![]}];}return db[_0x6845('0xc8')]['findAll'](_0xf72cd2);})['then'](function(_0x540521){_0x3ad620[_0x6845('0x8a')]=_0x540521;return _0x3ad620;});}})[_0x6845('0x23')](respondWithFilteredResult(_0x48287b,_0xf72cd2))['catch'](handleError(_0x48287b,null));};exports[_0x6845('0xc9')]=function(_0x44f06a,_0x3803c1,_0x59cb80){var _0x2828cc={'raw':!![],'where':{}};var _0x5ec9d3={};var _0x3e2313={'count':0x0,'rows':[]};return db[_0x6845('0x29')][_0x6845('0xc1')]({'where':{'id':_0x44f06a[_0x6845('0x8c')]['id']}})[_0x6845('0x23')](handleEntityNotFound(_0x3803c1,null))['then'](function(_0x5df668){if(_0x5df668){_0x5ec9d3['model']=_[_0x6845('0x2c')](db[_0x6845('0xa3')][_0x6845('0xbd')]);_0x5ec9d3[_0x6845('0x33')]=_[_0x6845('0x2c')](_0x44f06a['query']);_0x5ec9d3['filters']=_[_0x6845('0x34')](_0x5ec9d3[_0x6845('0x32')],_0x5ec9d3[_0x6845('0x33')]);_0x2828cc[_0x6845('0x35')]=_[_0x6845('0x34')](_0x5ec9d3[_0x6845('0x32')],qs['fields'](_0x44f06a[_0x6845('0x33')][_0x6845('0x36')]));_0x2828cc['attributes']=_0x2828cc[_0x6845('0x35')][_0x6845('0x2b')]?_0x2828cc[_0x6845('0x35')]:_0x5ec9d3['model'];if(!_0x44f06a[_0x6845('0x33')][_0x6845('0x37')](_0x6845('0x38'))){_0x2828cc[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x44f06a[_0x6845('0x33')][_0x6845('0x1d')]);_0x2828cc[_0x6845('0x1c')]=qs['offset'](_0x44f06a[_0x6845('0x33')][_0x6845('0x1c')]);}_0x2828cc['order']=qs['sort'](_0x44f06a[_0x6845('0x33')][_0x6845('0x3a')]);_0x2828cc[_0x6845('0x47')]=qs[_0x6845('0x3b')](_['pick'](_0x44f06a['query'],_0x5ec9d3['filters']));_0x2828cc[_0x6845('0x47')][_0x6845('0xc4')]=_0x5df668['id'];if(_0x44f06a[_0x6845('0x33')]['filter']){_0x2828cc[_0x6845('0x47')]=_['merge'](_0x2828cc['where'],{'$or':_[_0x6845('0x51')](_0x2828cc[_0x6845('0x35')],function(_0x2dd2be){var _0x33ea01={};_0x33ea01[_0x2dd2be]={'$like':'%'+_0x44f06a[_0x6845('0x33')]['filter']+'%'};return _0x33ea01;})});}_0x2828cc=_[_0x6845('0x80')]({},_0x2828cc,_0x44f06a[_0x6845('0xbe')]);return db[_0x6845('0xa3')][_0x6845('0x1b')]({'where':_0x2828cc['where']})[_0x6845('0x23')](function(_0x51d16f){_0x3e2313[_0x6845('0x1b')]=_0x51d16f;if(_0x44f06a[_0x6845('0x33')][_0x6845('0xc5')]){_0x2828cc[_0x6845('0xc6')]=[{'all':!![]}];}return db[_0x6845('0xa3')][_0x6845('0x90')](_0x2828cc);})[_0x6845('0x23')](function(_0x262d12){_0x3e2313['rows']=_0x262d12;return _0x3e2313;});}})[_0x6845('0x23')](respondWithFilteredResult(_0x3803c1,_0x2828cc))[_0x6845('0x8b')](handleError(_0x3803c1,null));};exports[_0x6845('0xca')]=function(_0x5b9a23,_0x5f1e42,_0xe6b4f7){var _0x24a8ee={'raw':!![],'where':{}};var _0x42ed28={};var _0x30ae53={'count':0x0,'rows':[]};return db[_0x6845('0x29')][_0x6845('0xc1')]({'where':{'id':_0x5b9a23[_0x6845('0x8c')]['id']}})['then'](handleEntityNotFound(_0x5f1e42,null))[_0x6845('0x23')](function(_0x4865cf){if(_0x4865cf){_0x42ed28[_0x6845('0x32')]=_['keys'](db[_0x6845('0xaa')][_0x6845('0xbd')]);_0x42ed28[_0x6845('0x33')]=_[_0x6845('0x2c')](_0x5b9a23['query']);_0x42ed28[_0x6845('0x3b')]=_[_0x6845('0x34')](_0x42ed28[_0x6845('0x32')],_0x42ed28[_0x6845('0x33')]);_0x24a8ee[_0x6845('0x35')]=_['intersection'](_0x42ed28[_0x6845('0x32')],qs[_0x6845('0x36')](_0x5b9a23['query'][_0x6845('0x36')]));_0x24a8ee[_0x6845('0x35')]=_0x24a8ee[_0x6845('0x35')][_0x6845('0x2b')]?_0x24a8ee[_0x6845('0x35')]:_0x42ed28[_0x6845('0x32')];if(!_0x5b9a23[_0x6845('0x33')][_0x6845('0x37')](_0x6845('0x38'))){_0x24a8ee[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x5b9a23[_0x6845('0x33')][_0x6845('0x1d')]);_0x24a8ee[_0x6845('0x1c')]=qs[_0x6845('0x1c')](_0x5b9a23[_0x6845('0x33')]['offset']);}_0x24a8ee['order']=qs[_0x6845('0x3a')](_0x5b9a23[_0x6845('0x33')][_0x6845('0x3a')]);_0x24a8ee['where']=qs[_0x6845('0x3b')](_[_0x6845('0x3c')](_0x5b9a23[_0x6845('0x33')],_0x42ed28[_0x6845('0x3b')]));_0x24a8ee['where'][_0x6845('0xc4')]=_0x4865cf['id'];if(_0x5b9a23[_0x6845('0x33')][_0x6845('0x61')]){_0x24a8ee[_0x6845('0x47')]=_[_0x6845('0x80')](_0x24a8ee[_0x6845('0x47')],{'$or':_[_0x6845('0x51')](_0x24a8ee[_0x6845('0x35')],function(_0x2b9b87){var _0x32d894={};_0x32d894[_0x2b9b87]={'$like':'%'+_0x5b9a23['query'][_0x6845('0x61')]+'%'};return _0x32d894;})});}_0x24a8ee=_[_0x6845('0x80')]({},_0x24a8ee,_0x5b9a23['options']);return db[_0x6845('0xaa')][_0x6845('0x1b')]({'where':_0x24a8ee['where']})[_0x6845('0x23')](function(_0x517e2c){_0x30ae53[_0x6845('0x1b')]=_0x517e2c;if(_0x5b9a23[_0x6845('0x33')][_0x6845('0xc5')]){_0x24a8ee[_0x6845('0xc6')]=[{'all':!![]}];}return db[_0x6845('0xaa')][_0x6845('0x90')](_0x24a8ee);})[_0x6845('0x23')](function(_0x3e801f){_0x30ae53[_0x6845('0x8a')]=_0x3e801f;return _0x30ae53;});}})[_0x6845('0x23')](respondWithFilteredResult(_0x5f1e42,_0x24a8ee))[_0x6845('0x8b')](handleError(_0x5f1e42,null));};exports[_0x6845('0xcb')]=function(_0x2a902e,_0x41374b,_0x3027dd){try{if(!_0x2a902e[_0x6845('0x93')]['ListId']){throw new Error(_0x6845('0xcc'));}if(!_0x2a902e[_0x6845('0x93')][_0x6845('0xcd')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x2a902e[_0x6845('0x93')][_0x6845('0xce')]){throw new Error(_0x6845('0xcf'));}if(!_0x2a902e['body']['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x311a42=_0x2a902e[_0x6845('0x93')]['binding_keys'][_0x6845('0x50')](',');var _0x11cfee=_0x2a902e['body'][_0x6845('0xce')][_0x6845('0x50')](',');if(!_0x311a42[_0x6845('0x2b')]||!_0x11cfee[_0x6845('0x2b')]||_0x311a42[_0x6845('0x2b')]!==_0x11cfee[_0x6845('0x2b')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x2a902e['body'][_0x6845('0x36')]=_['zipObject'](_0x311a42,_0x11cfee);if(!_0x2a902e['body'][_0x6845('0x36')][_0x6845('0xbb')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x2a902e[_0x6845('0x93')][_0x6845('0x36')][_0x6845('0xd0')]){throw new Error(_0x6845('0xd1'));}var _0x3f950c=path[_0x6845('0x97')](config['root'],_0x6845('0xd2'),_0x2a902e[_0x6845('0xd3')]['filename']);fs[_0x6845('0xd4')](_0x3f950c,parseInt(_0x6845('0xd5'),0x8));var _0x1ea1dc=require(_0x6845('0xd6'))[_0x6845('0xd7')](path[_0x6845('0x97')](__dirname,_0x6845('0xd8')),[_0x3f950c,_0x2a902e[_0x6845('0x93')][_0x6845('0xcd')],_0x2a902e['body'][_0x6845('0xce')],_0x2a902e[_0x6845('0x93')]['ListId'],_0x2a902e[_0x6845('0x93')][_0x6845('0xd9')],_0x2a902e[_0x6845('0x93')][_0x6845('0xb1')],_0x2a902e['body'][_0x6845('0xda')]]);return _0x41374b[_0x6845('0x18')](0xc8)[_0x6845('0x19')]({'message':_0x6845('0xdb'),'pid':_0x1ea1dc[_0x6845('0xdc')]});}catch(_0x16d4b4){return _0x41374b[_0x6845('0x18')](0x1f4)[_0x6845('0x28')](_0x16d4b4);}};exports[_0x6845('0xdd')]=function(_0x17fbe1,_0x1b608e,_0x242480){var _0x12e60d=fs[_0x6845('0xde')](_0x17fbe1['file'][_0x6845('0xdf')]);Papa['parse'](_0x12e60d,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x556c1a){return _0x1b608e[_0x6845('0x18')](0xc8)[_0x6845('0x19')]({'file':_0x17fbe1[_0x6845('0xd3')],'fields':_0x556c1a[_0x6845('0xe0')][_0x6845('0x36')]});}});};exports[_0x6845('0xe1')]=function(_0x302162,_0x164146,_0x89e0fb){return db[_0x6845('0x55')][_0x6845('0x90')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0x6845('0x23')](function(_0x14dbdb){var _0x199694=![];if(!_0x302162[_0x6845('0x93')][_0x6845('0x64')]){throw new Error(_0x6845('0xcc'));}if(!_0x302162['body'][_0x6845('0xe2')][_0x6845('0xbb')]){throw new Error(_0x6845('0xe3'));}if(!_0x302162[_0x6845('0x93')][_0x6845('0xe2')][_0x6845('0xd0')]){throw new Error(_0x6845('0xd1'));}if(!_0x302162['body'][_0x6845('0xda')]){throw new Error(_0x6845('0xe4'));}var _0x21cb12=require(_0x6845('0xd6'))['fork'](path[_0x6845('0x97')](__dirname,'../../components/import/cm/csv2'),[_0x302162[_0x6845('0x8c')]['id'],JSON[_0x6845('0xe5')](_0x302162[_0x6845('0x93')]),JSON[_0x6845('0xe5')](_0x14dbdb)]);_0x21cb12['on'](_0x6845('0xe6'),function(_0x3d4b89){_0x199694=!![];return _0x164146[_0x6845('0x18')](0xc8)[_0x6845('0x19')]({'message':_0x6845('0xe7'),'pid':_0x21cb12[_0x6845('0xdc')]});});_0x21cb12['on']('exit',function(_0x23ee33){if(_0x23ee33&&!_0x199694){return _0x164146[_0x6845('0x18')](0x1f4)[_0x6845('0x19')]({'message':_0x6845('0xe8'),'pid':_0x21cb12[_0x6845('0xdc')]});}});})[_0x6845('0x8b')](handleError(_0x164146,null));};exports[_0x6845('0xe9')]=function(_0x58958b,_0x1e6565){var _0x45e5a9=[_0x6845('0xea'),_0x6845('0xeb'),_0x6845('0xec'),'openchannel','fax',_0x6845('0xed'),'voice'];var _0x5dfae5={'offset':0x0,'order':qs[_0x6845('0x3a')]('-createdAt')},_0x59190a={'count':0x0,'rows':[]};Promise[_0x6845('0xee')]()['then'](function(){if(_0x58958b[_0x6845('0x33')][_0x6845('0xef')]){if(!_[_0x6845('0xf0')](_0x45e5a9,_0x58958b['query'][_0x6845('0xef')]['toLowerCase']())){throw new Error('Invalid\x20channel');}_0x45e5a9=[_0x58958b[_0x6845('0x33')]['channel'][_0x6845('0xf1')]()];}if(_0x58958b['query'][_0x6845('0xf2')]){try{var _0x2ba36a=JSON['parse'](_0x58958b[_0x6845('0x33')][_0x6845('0xf2')]);if(!moment(_0x2ba36a[_0x6845('0x3e')])[_0x6845('0xf3')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x2ba36a['to'])['isValid']()){throw new Error(_0x6845('0xf4'));}}catch(_0x27c9b6){throw new Error(_0x6845('0xf5'));}}if(!_0x58958b[_0x6845('0x33')][_0x6845('0x37')]('nolimit')){_0x5dfae5[_0x6845('0x1d')]=qs[_0x6845('0x1d')](_0x58958b[_0x6845('0x33')][_0x6845('0x1d')]||0xa);_0x5dfae5[_0x6845('0x1c')]=qs[_0x6845('0x1c')](_0x58958b[_0x6845('0x33')][_0x6845('0x1c')]);}var _0x340ac5=_0x45e5a9[_0x6845('0x51')](function(_0xa00f09){if(_0xa00f09===_0x6845('0xf6')){var _0x49f32c={'attributes':['id',_0x6845('0xf7'),_0x6845('0x5c'),_0x6845('0xf8'),_0x6845('0xf9'),_0x6845('0xfa'),_0x6845('0xfb'),'endtime','duration',_0x6845('0xfc'),_0x6845('0xfd'),_0x6845('0xfe'),'userSecondDisposition',_0x6845('0xff'),_0x6845('0x100')],'where':{'ContactId':_0x58958b['params']['id']},'include':[{'model':db['User'],'as':_0x6845('0x55'),'attributes':['id',_0x6845('0x27'),_0x6845('0x101'),_0x6845('0x102')]}],'order':[[_0x6845('0xfd'),_0x6845('0x76')]]};if(_0x58958b[_0x6845('0x33')]['range']){_0x49f32c[_0x6845('0x47')][_0x6845('0xfd')]={'$gte':_0x2ba36a[_0x6845('0x3e')],'$lte':_0x2ba36a['to']};}return db[_0x6845('0xa5')][_0x6845('0x103')](_0x49f32c)[_0x6845('0x23')](function(_0xfae798){_0x59190a[_0x6845('0x1b')]+=_0xfae798['count'];return _[_0x6845('0x51')](_0xfae798[_0x6845('0x8a')],function(_0x18de6f){var _0x3ca680=_0x18de6f[_0x6845('0x94')]({'plain':!![]});_0x3ca680[_0x6845('0xef')]=_0xa00f09;if(_0x3ca680[_0x6845('0x55')]){_0x3ca680[_0x6845('0x55')]={'id':_0x3ca680[_0x6845('0x55')]['id'],'name':_0x3ca680[_0x6845('0x55')][_0x6845('0x27')],'fullname':_0x3ca680['User']['fullname'],'alias':_0x3ca680[_0x6845('0x55')][_0x6845('0x102')]};}return _0x3ca680;});});}else{var _0x3236d5=_['startCase'](_0xa00f09)+(_0xa00f09===_0x6845('0xeb')?'Website':_0x6845('0x104'));var _0x3f2059={'attributes':['id',_0x6845('0x105'),_0x6845('0x106'),_0x6845('0xfd'),_0x6845('0xfc'),_0x6845('0x107'),_0x6845('0x108'),'thirdDisposition','UserId',_0x3236d5+'Id'],'where':{'ContactId':_0x58958b[_0x6845('0x8c')]['id']},'include':[{'model':db[_0x3236d5],'as':_0x6845('0x104'),'attributes':['id',_0x6845('0x27'),_0x6845('0x109')]},{'model':db[_0x6845('0x55')],'as':'Owner','attributes':['id','name',_0x6845('0x101')]},{'model':db[_0x6845('0x4f')],'as':_0x6845('0x89'),'attributes':['id','name',_0x6845('0x10a')],'through':{'attributes':[]}}],'order':[[_0x6845('0xfd'),_0x6845('0x76')]]};if(_0x58958b[_0x6845('0x33')][_0x6845('0xf2')]){_0x3f2059['where'][_0x6845('0xfd')]={'$gte':_0x2ba36a['from'],'$lte':_0x2ba36a['to']};}switch(_0xa00f09){case _0x6845('0xeb'):_0x3f2059[_0x6845('0x35')][_0x6845('0x2f')](_0x6845('0x10b'),_0x6845('0x10c'),_0x6845('0x10d'),_0x6845('0x10e'),_0x6845('0x10f'),_0x6845('0x110'),_0x6845('0x111'),_0x6845('0x112'),_0x6845('0x113'));break;case'mail':_0x3f2059[_0x6845('0x35')][_0x6845('0x2f')](_0x6845('0x114'),_0x6845('0x115'));break;case'openchannel':_0x3f2059[_0x6845('0x35')][_0x6845('0x2f')](_0x6845('0x116'),_0x6845('0x117'));break;}return db[_[_0x6845('0x118')](_0xa00f09)+_0x6845('0x119')][_0x6845('0x103')](_0x3f2059)[_0x6845('0x23')](function(_0x428736){_0x59190a[_0x6845('0x1b')]+=_0x428736[_0x6845('0x1b')];return _[_0x6845('0x51')](_0x428736[_0x6845('0x8a')],function(_0x6160fe){var _0x1cccaf=_0x6160fe[_0x6845('0x94')]({'plain':!![]});_0x1cccaf[_0x6845('0xef')]=_0xa00f09;if(_0x1cccaf[_0x6845('0x11a')]){_0x1cccaf['Owner']={'id':_0x1cccaf[_0x6845('0x11a')]['id'],'name':_0x1cccaf['Owner']['name'],'fullname':_0x1cccaf[_0x6845('0x11a')]['fullname']};}return _0x1cccaf;});});}});return Promise['all'](_0x340ac5);})['then'](function(_0x204f20){return _(_0x204f20)['flatten']()[_0x6845('0x11b')](_0x6845('0xfd'))[_0x6845('0x11c')]()['value']();})[_0x6845('0x23')](function(_0x1dd912){_0x59190a['rows']=_0x5dfae5['limit']?_0x1dd912[_0x6845('0x11d')](_0x5dfae5['offset'],_0x5dfae5[_0x6845('0x1c')]+_0x5dfae5[_0x6845('0x1d')]):_0x1dd912;return _0x59190a;})[_0x6845('0x23')](respondWithFilteredResult(_0x1e6565,_0x5dfae5))[_0x6845('0x8b')](handleError(_0x1e6565,null));};
\ No newline at end of file
index aad8590..6e96e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccfa=['hook','exports','events','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x5c4504,_0x43bd6d){var _0xa9e952=function(_0x28b57e){while(--_0x28b57e){_0x5c4504['push'](_0x5c4504['shift']());}};_0xa9e952(++_0x43bd6d);}(_0xccfa,0x1ea));var _0xaccf=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xccfa[_0x12fc8d];return _0x3f9d04;};'use strict';var EventEmitter=require(_0xaccf('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xaccf('0x1')](0x0);var events={'afterCreate':_0xaccf('0x2'),'afterUpdate':'update','afterDestroy':_0xaccf('0x3')};function emitEvent(_0x3e952e){return function(_0x3a3a2b,_0x30882e,_0x4a43c9){CmContactEvents[_0xaccf('0x4')](_0x3e952e+':'+_0x3a3a2b['id'],_0x3a3a2b);CmContactEvents['emit'](_0x3e952e,_0x3a3a2b);_0x4a43c9(null);};}for(var e in events){if(events[_0xaccf('0x5')](e)){var event=events[e];CmContact[_0xaccf('0x6')](e,emitEvent(event));}}module[_0xaccf('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x6d4c=['save','update','remove','emit','exports','events','../../mysqldb','CmContact','setMaxListeners'];(function(_0x2e10cc,_0x561cf9){var _0x5d91a6=function(_0x52df8e){while(--_0x52df8e){_0x2e10cc['push'](_0x2e10cc['shift']());}};_0x5d91a6(++_0x561cf9);}(_0x6d4c,0x9e));var _0xc6d4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6d4c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xc6d4('0x0'));var CmContact=require(_0xc6d4('0x1'))['db'][_0xc6d4('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xc6d4('0x3')](0x0);var events={'afterCreate':_0xc6d4('0x4'),'afterUpdate':_0xc6d4('0x5'),'afterDestroy':_0xc6d4('0x6')};function emitEvent(_0x316334){return function(_0x1fc0a6,_0x35de5b,_0xf90a5d){CmContactEvents['emit'](_0x316334+':'+_0x1fc0a6['id'],_0x1fc0a6);CmContactEvents[_0xc6d4('0x7')](_0x316334,_0x1fc0a6);_0xf90a5d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xc6d4('0x8')]=CmContactEvents;
\ No newline at end of file
index a5d6e17..544ca90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc794=['always','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Error]','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','cmContact','afterCreate','inspect','CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','\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','error','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','get','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign'];(function(_0x4a9beb,_0x159482){var _0x2d4c58=function(_0x28dabf){while(--_0x28dabf){_0x4a9beb['push'](_0x4a9beb['shift']());}};_0x2d4c58(++_0x159482);}(_0xc794,0x95));var _0x4c79=function(_0x4252be,_0x182dc8){_0x4252be=_0x4252be-0x0;var _0x2c2ef5=_0xc794[_0x4252be];return _0x2c2ef5;};'use strict';var _=require('lodash');var util=require(_0x4c79('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x4c79('0x1'));var BPromise=require(_0x4c79('0x2'));var rp=require(_0x4c79('0x3'));var fs=require('fs');var path=require(_0x4c79('0x4'));var rimraf=require(_0x4c79('0x5'));var config=require(_0x4c79('0x6'));var attributes=require(_0x4c79('0x7'));module[_0x4c79('0x8')]=function(_0x32a445,_0x1e6dbb){return _0x32a445[_0x4c79('0x9')](_0x4c79('0xa'),attributes,{'tableName':_0x4c79('0xb'),'paranoid':!![],'indexes':[{'name':_0x4c79('0xc'),'fields':[_0x4c79('0xc')]},{'name':_0x4c79('0xd'),'fields':['firstName',_0x4c79('0xe'),'phone',_0x4c79('0xf'),_0x4c79('0x10'),_0x4c79('0x11')],'type':_0x4c79('0x12')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x4c79('0x13'),'hooks':{'afterCreate':function(_0x41e045,_0x5635dd,_0x3a4d88){var _0x47d86c=_0x32a445[_0x4c79('0x14')];var _0x192f2b=_0x41e045['get']({'plain':!![]});function _0x42cf8e(){return function(_0x194974){logger['error'](_0x4c79('0x15'),_0x4c79('0x16'),util[_0x4c79('0x17')](_0x194974,{'showHidden':![],'depth':null}));};}var _0x5d0ce8=function(_0x5ca858){return new BPromise(function(_0x4f54fa,_0x5d5caf){_0x47d86c[_0x4c79('0x18')][_0x4c79('0x19')]({'where':{'phone':_0x192f2b[_0x4c79('0xc')],'VoiceQueueId':_0x5ca858['id']}})[_0x4c79('0x1a')](function(_0x754010){if(!_[_0x4c79('0x1b')](_0x754010)){throw new Error(_0x4c79('0x1c')+_0x192f2b[_0x4c79('0xc')]+_0x4c79('0x1d')+_0x5ca858['id']);}return _0x47d86c['CmHopper'][_0x4c79('0x1e')]({'phone':_0x192f2b['phone'],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b['priority']:0x2,'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b['callbackUniqueid']?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'VoiceQueueId':_0x5ca858['id']});})[_0x4c79('0x25')](function(_0x376145){_0x5d5caf(_0x376145);});});};var _0x57503a=function(_0x1f09b0){return new BPromise(function(_0xd73569,_0x5e5f59){_0x47d86c[_0x4c79('0x18')][_0x4c79('0x19')]({'where':{'phone':_0x192f2b['phone'],'VoiceQueueId':_0x1f09b0['id']}})[_0x4c79('0x1a')](function(_0x60bd5d){if(!_['isNil'](_0x60bd5d)){throw new Error(_0x4c79('0x1c')+_0x192f2b['phone']+_0x4c79('0x26')+_0x1f09b0['id']);}return _0x47d86c[_0x4c79('0x27')]['findOne']({'where':{'calleridnum':_0x192f2b[_0x4c79('0xc')],'VoiceQueueId':_0x1f09b0['id']}});})[_0x4c79('0x1a')](function(_0x4a7230){if(!_[_0x4c79('0x1b')](_0x4a7230)){throw new Error(_0x4c79('0x28')+_0x192f2b['phone']+_0x4c79('0x29')+_0x1f09b0['id']);}return _0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b[_0x4c79('0x20')]:0x2,'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b[_0x4c79('0x24')]:undefined,'callbackat':_0x192f2b['callbackUniqueid']?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'VoiceQueueId':_0x1f09b0['id']});})[_0x4c79('0x25')](function(_0x533a7e){_0x5e5f59(_0x533a7e);});});};function _0x100119(){return function(_0x2a3d12){logger[_0x4c79('0x2a')](_0x4c79('0x15'),_0x4c79('0x16'),util[_0x4c79('0x17')](_0x2a3d12,{'showHidden':![],'depth':null}));};}var _0xd5cf37=function(_0x487a62){return new BPromise(function(_0x47b45c,_0x2e8c79){_0x47d86c[_0x4c79('0x18')]['findOne']({'where':{'phone':_0x192f2b['phone'],'CampaignId':_0x487a62['id']}})[_0x4c79('0x1a')](function(_0x4cd6f9){if(!_['isNil'](_0x4cd6f9)){throw new Error(_0x4c79('0x1c')+_0x192f2b['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x487a62['id']);}return _0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b['priority']?_0x192f2b[_0x4c79('0x20')]:0x2,'scheduledat':_0x192f2b['scheduledat']?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b[_0x4c79('0x24')]?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'CampaignId':_0x487a62['id']});})['catch'](function(_0x28640e){_0x2e8c79(_0x28640e);});});};var _0x78fd05=function(_0x48a93d){return new BPromise(function(_0xf9d452,_0x424302){_0x47d86c[_0x4c79('0x18')][_0x4c79('0x19')]({'where':{'phone':_0x192f2b[_0x4c79('0xc')],'CampaignId':_0x48a93d['id']}})[_0x4c79('0x1a')](function(_0x355ea3){if(!_['isNil'](_0x355ea3)){throw new Error(_0x4c79('0x1c')+_0x192f2b[_0x4c79('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x48a93d['id']);}return _0x47d86c[_0x4c79('0x27')][_0x4c79('0x19')]({'where':{'calleridnum':_0x192f2b[_0x4c79('0xc')],'CampaignId':_0x48a93d['id']}});})['then'](function(_0x4da63a){if(!_['isNil'](_0x4da63a)){throw new Error(_0x4c79('0x28')+_0x192f2b[_0x4c79('0xc')]+_0x4c79('0x2b')+_0x48a93d['id']);}return _0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b[_0x4c79('0x20')]:0x2,'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b['callbackUniqueid']?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'CampaignId':_0x48a93d['id']});})['catch'](function(_0x52d25f){_0x424302(_0x52d25f);});});};if(_0x192f2b[_0x4c79('0x1f')]){_0x47d86c[_0x4c79('0x2c')][_0x4c79('0x2d')]({'where':{'type':_0x4c79('0x2e')},'attributes':['id',_0x4c79('0x2f')],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':_0x4c79('0x31'),'where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})[_0x4c79('0x1a')](function(_0x36a1e8){if(_0x36a1e8){var _0x573f50=[];for(var _0x39483e=0x0,_0x238167;_0x39483e<_0x36a1e8[_0x4c79('0x32')];_0x39483e+=0x1){_0x238167=_0x36a1e8[_0x39483e][_0x4c79('0x33')]({'plain':!![]});switch(_0x238167[_0x4c79('0x2f')]){case'always':_0x57503a(_0x238167)[_0x4c79('0x25')](_0x42cf8e());break;case _0x4c79('0x34'):_0x5d0ce8(_0x238167)[_0x4c79('0x25')](_0x42cf8e());break;default:_0x47d86c['CmHopper'][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b[_0x4c79('0x20')]:0x2,'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b[_0x4c79('0x24')]?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'VoiceQueueId':_0x238167['id']})[_0x4c79('0x25')](_0x42cf8e());}}}})[_0x4c79('0x1a')](function(){return _0x47d86c[_0x4c79('0x2c')][_0x4c79('0x2d')]({'where':{'type':_0x4c79('0x2e')},'attributes':['id'],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':_0x4c79('0x35'),'where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})['then'](function(_0x21dc60){if(_0x21dc60){var _0x4d3206=[];for(var _0xb808b5=0x0,_0x57cb5b;_0xb808b5<_0x21dc60[_0x4c79('0x32')];_0xb808b5+=0x1){_0x57cb5b=_0x21dc60[_0xb808b5][_0x4c79('0x33')]({'plain':!![]});_0x47d86c[_0x4c79('0x36')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'VoiceQueueId':_0x57cb5b['id']})['catch'](function(_0x5c006e){logger[_0x4c79('0x2a')](_0x4c79('0x37'),'afterCreate',_0x5c006e[_0x4c79('0x38')]);});}}});})[_0x4c79('0x1a')](function(){return _0x47d86c[_0x4c79('0x39')][_0x4c79('0x2d')]({'attributes':['id',_0x4c79('0x2f')],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':_0x4c79('0x31'),'where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})[_0x4c79('0x1a')](function(_0x57bb8a){if(_0x57bb8a){var _0x1c77e4=[];for(var _0x2df44b=0x0,_0x52bbe3;_0x2df44b<_0x57bb8a['length'];_0x2df44b+=0x1){_0x52bbe3=_0x57bb8a[_0x2df44b]['get']({'plain':!![]});switch(_0x52bbe3['dialCheckDuplicateType']){case _0x4c79('0x3a'):_0x78fd05(_0x52bbe3)[_0x4c79('0x25')](_0x100119());break;case _0x4c79('0x34'):_0xd5cf37(_0x52bbe3)['catch'](_0x100119());break;default:_0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b['priority']:0x2,'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b[_0x4c79('0x24')]:undefined,'callbackat':_0x192f2b[_0x4c79('0x24')]?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'CampaignId':_0x52bbe3['id']})[_0x4c79('0x25')](_0x100119());}}}});})['then'](function(){return _0x47d86c[_0x4c79('0x39')][_0x4c79('0x2d')]({'attributes':['id'],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':'BlackLists','where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})[_0x4c79('0x1a')](function(_0x3473d8){if(_0x3473d8){var _0x335464=[];for(var _0x2072b1=0x0,_0x40c3c0;_0x2072b1<_0x3473d8[_0x4c79('0x32')];_0x2072b1+=0x1){_0x40c3c0=_0x3473d8[_0x2072b1]['get']({'plain':!![]});_0x47d86c[_0x4c79('0x36')][_0x4c79('0x1e')]({'phone':_0x192f2b['phone'],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'CampaignId':_0x40c3c0['id']})[_0x4c79('0x25')](function(_0x4599bd){logger[_0x4c79('0x2a')](_0x4c79('0x37'),_0x4c79('0x16'),_0x4599bd[_0x4c79('0x38')]);});}}});})[_0x4c79('0x1a')](function(){_0x3a4d88();})[_0x4c79('0x25')](function(_0x5a0b3b){logger[_0x4c79('0x2a')](_0x4c79('0x37'),_0x4c79('0x16'),_0x5a0b3b[_0x4c79('0x38')]);_0x3a4d88(_0x5a0b3b);});}else{_0x3a4d88(new Error(_0x4c79('0x3b')));}},'afterDestroy':function(_0x494869,_0x54d3f9,_0x36d80c){var _0x528055=_0x32a445[_0x4c79('0x14')];var _0x59aba1=_0x494869[_0x4c79('0x33')]({'plain':!![]});return _0x528055[_0x4c79('0x18')][_0x4c79('0x2d')]({'raw':!![],'where':{'ListId':_0x59aba1[_0x4c79('0x1f')],'ContactId':_0x59aba1['id']}})['then'](function(_0x2228ff){if(!_[_0x4c79('0x3c')](_0x2228ff)){var _0x557f40=[];for(var _0x6c161b=0x0;_0x6c161b<_0x2228ff[_0x4c79('0x32')];_0x6c161b+=0x1){var _0x424779=_0x528055[_0x4c79('0x18')][_0x4c79('0x3d')]({'where':{'ListId':_0x2228ff[_0x6c161b][_0x4c79('0x1f')],'ContactId':_0x2228ff[_0x6c161b][_0x4c79('0x3e')],'VoiceQueueId':_0x2228ff[_0x6c161b][_0x4c79('0x3f')],'CampaignId':_0x2228ff[_0x6c161b][_0x4c79('0x40')]}});_0x557f40[_0x4c79('0x41')](_0x424779);}return BPromise[_0x4c79('0x42')](_0x557f40);}})[_0x4c79('0x1a')](function(_0x458ecf){logger[_0x4c79('0x43')]('[CmContact][afterDestroy][Succesfull]',util[_0x4c79('0x17')](_0x458ecf,{'showHidden':![],'depth':null}));_0x36d80c();})[_0x4c79('0x25')](function(_0x51d9c2){logger[_0x4c79('0x2a')](_0x4c79('0x44'),util[_0x4c79('0x17')](_0x51d9c2,{'showHidden':![],'depth':null}));_0x36d80c(_0x51d9c2);});}}});};
\ No newline at end of file
+var _0x59c0=['[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmContact.attributes','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','utf8mb4','utf8mb4_unicode_ci','models','error','cmContact','afterCreate','CmHopper','findOne','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','isNil','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','inspect','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','VoiceQueue','outbound','dialCheckDuplicateType','Lists','always','onlyIfOpen','findAll','BlackLists','length','get','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','CmList','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]'];(function(_0x9c5769,_0x5161f0){var _0x1a6bd6=function(_0x535c19){while(--_0x535c19){_0x9c5769['push'](_0x9c5769['shift']());}};_0x1a6bd6(++_0x5161f0);}(_0x59c0,0xd9));var _0x059c=function(_0x2e09c8,_0x18197f){_0x2e09c8=_0x2e09c8-0x0;var _0x59918b=_0x59c0[_0x2e09c8];return _0x59918b;};'use strict';var _=require(_0x059c('0x0'));var util=require(_0x059c('0x1'));var logger=require(_0x059c('0x2'))(_0x059c('0x3'));var moment=require(_0x059c('0x4'));var BPromise=require(_0x059c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x059c('0x6'));var rimraf=require(_0x059c('0x7'));var config=require(_0x059c('0x8'));var attributes=require(_0x059c('0x9'));module['exports']=function(_0x4b9680,_0x2e3007){return _0x4b9680[_0x059c('0xa')](_0x059c('0xb'),attributes,{'tableName':_0x059c('0xc'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0x059c('0xd')]},{'name':_0x059c('0xe'),'fields':[_0x059c('0xf'),_0x059c('0x10'),_0x059c('0xd'),_0x059c('0x11'),_0x059c('0x12'),'email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x059c('0x13'),'collate':_0x059c('0x14'),'hooks':{'afterCreate':function(_0x5a4928,_0x241a1e,_0x5152c7){var _0x3af9ba=_0x4b9680[_0x059c('0x15')];var _0x5604a5=_0x5a4928['get']({'plain':!![]});function _0x4e5fd8(){return function(_0x1974d6){logger[_0x059c('0x16')](_0x059c('0x17'),_0x059c('0x18'),util['inspect'](_0x1974d6,{'showHidden':![],'depth':null}));};}var _0x17f587=function(_0x19687f){return new BPromise(function(_0x5bca3e,_0x161be9){_0x3af9ba[_0x059c('0x19')][_0x059c('0x1a')]({'where':{'phone':_0x5604a5[_0x059c('0xd')],'VoiceQueueId':_0x19687f['id']}})[_0x059c('0x1b')](function(_0x53bc54){if(!_['isNil'](_0x53bc54)){throw new Error(_0x059c('0x1c')+_0x5604a5[_0x059c('0xd')]+_0x059c('0x1d')+_0x19687f['id']);}return _0x3af9ba[_0x059c('0x19')]['create']({'phone':_0x5604a5[_0x059c('0xd')],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5[_0x059c('0x1e')],'priority':_0x5604a5[_0x059c('0x1f')]?_0x5604a5[_0x059c('0x1f')]:0x2,'scheduledat':_0x5604a5[_0x059c('0x20')]?_0x5604a5[_0x059c('0x20')]:moment()[_0x059c('0x21')](_0x059c('0x22')),'callback':_0x5604a5[_0x059c('0x23')]?!![]:![],'callbackuniqueid':_0x5604a5['callbackUniqueid']?_0x5604a5[_0x059c('0x23')]:undefined,'callbackat':_0x5604a5[_0x059c('0x23')]?moment()[_0x059c('0x21')](_0x059c('0x22')):undefined,'VoiceQueueId':_0x19687f['id']});})[_0x059c('0x24')](function(_0x5518be){_0x161be9(_0x5518be);});});};var _0x2b3b9f=function(_0x38d1d6){return new BPromise(function(_0x3b24ef,_0x487977){_0x3af9ba[_0x059c('0x19')][_0x059c('0x1a')]({'where':{'phone':_0x5604a5[_0x059c('0xd')],'VoiceQueueId':_0x38d1d6['id']}})[_0x059c('0x1b')](function(_0x18006b){if(!_['isNil'](_0x18006b)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5604a5[_0x059c('0xd')]+_0x059c('0x25')+_0x38d1d6['id']);}return _0x3af9ba[_0x059c('0x26')][_0x059c('0x1a')]({'where':{'calleridnum':_0x5604a5[_0x059c('0xd')],'VoiceQueueId':_0x38d1d6['id']}});})['then'](function(_0x3e7c48){if(!_[_0x059c('0x27')](_0x3e7c48)){throw new Error(_0x059c('0x28')+_0x5604a5[_0x059c('0xd')]+_0x059c('0x29')+_0x38d1d6['id']);}return _0x3af9ba['CmHopper'][_0x059c('0x2a')]({'phone':_0x5604a5[_0x059c('0xd')],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5['ListId'],'priority':_0x5604a5[_0x059c('0x1f')]?_0x5604a5[_0x059c('0x1f')]:0x2,'scheduledat':_0x5604a5[_0x059c('0x20')]?_0x5604a5[_0x059c('0x20')]:moment()[_0x059c('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5604a5[_0x059c('0x23')]?!![]:![],'callbackuniqueid':_0x5604a5[_0x059c('0x23')]?_0x5604a5[_0x059c('0x23')]:undefined,'callbackat':_0x5604a5[_0x059c('0x23')]?moment()[_0x059c('0x21')](_0x059c('0x22')):undefined,'VoiceQueueId':_0x38d1d6['id']});})[_0x059c('0x24')](function(_0xdf8866){_0x487977(_0xdf8866);});});};function _0x46a639(){return function(_0x26741f){logger['error'](_0x059c('0x17'),'afterCreate',util[_0x059c('0x2b')](_0x26741f,{'showHidden':![],'depth':null}));};}var _0x5ab7e0=function(_0x38b6bc){return new BPromise(function(_0xda2295,_0x2136fe){_0x3af9ba[_0x059c('0x19')][_0x059c('0x1a')]({'where':{'phone':_0x5604a5[_0x059c('0xd')],'CampaignId':_0x38b6bc['id']}})['then'](function(_0x5c9056){if(!_[_0x059c('0x27')](_0x5c9056)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5604a5[_0x059c('0xd')]+_0x059c('0x2c')+_0x38b6bc['id']);}return _0x3af9ba[_0x059c('0x19')][_0x059c('0x2a')]({'phone':_0x5604a5['phone'],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5['ListId'],'priority':_0x5604a5[_0x059c('0x1f')]?_0x5604a5[_0x059c('0x1f')]:0x2,'scheduledat':_0x5604a5['scheduledat']?_0x5604a5['scheduledat']:moment()['format'](_0x059c('0x22')),'callback':_0x5604a5[_0x059c('0x23')]?!![]:![],'callbackuniqueid':_0x5604a5[_0x059c('0x23')]?_0x5604a5['callbackUniqueid']:undefined,'callbackat':_0x5604a5[_0x059c('0x23')]?moment()[_0x059c('0x21')](_0x059c('0x22')):undefined,'CampaignId':_0x38b6bc['id']});})[_0x059c('0x24')](function(_0x1706b2){_0x2136fe(_0x1706b2);});});};var _0x18bed1=function(_0x4d0e66){return new BPromise(function(_0x1a60f1,_0x3a9710){_0x3af9ba['CmHopper'][_0x059c('0x1a')]({'where':{'phone':_0x5604a5[_0x059c('0xd')],'CampaignId':_0x4d0e66['id']}})[_0x059c('0x1b')](function(_0x4adbe4){if(!_[_0x059c('0x27')](_0x4adbe4)){throw new Error(_0x059c('0x1c')+_0x5604a5['phone']+_0x059c('0x2d')+_0x4d0e66['id']);}return _0x3af9ba[_0x059c('0x26')]['findOne']({'where':{'calleridnum':_0x5604a5[_0x059c('0xd')],'CampaignId':_0x4d0e66['id']}});})[_0x059c('0x1b')](function(_0x2a1b2f){if(!_[_0x059c('0x27')](_0x2a1b2f)){throw new Error(_0x059c('0x28')+_0x5604a5['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x4d0e66['id']);}return _0x3af9ba['CmHopper'][_0x059c('0x2a')]({'phone':_0x5604a5[_0x059c('0xd')],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5[_0x059c('0x1e')],'priority':_0x5604a5['priority']?_0x5604a5['priority']:0x2,'scheduledat':_0x5604a5['scheduledat']?_0x5604a5[_0x059c('0x20')]:moment()[_0x059c('0x21')](_0x059c('0x22')),'callback':_0x5604a5[_0x059c('0x23')]?!![]:![],'callbackuniqueid':_0x5604a5[_0x059c('0x23')]?_0x5604a5[_0x059c('0x23')]:undefined,'callbackat':_0x5604a5[_0x059c('0x23')]?moment()[_0x059c('0x21')](_0x059c('0x22')):undefined,'CampaignId':_0x4d0e66['id']});})[_0x059c('0x24')](function(_0x4dc425){_0x3a9710(_0x4dc425);});});};if(_0x5604a5[_0x059c('0x1e')]){_0x3af9ba[_0x059c('0x2e')]['findAll']({'where':{'type':_0x059c('0x2f')},'attributes':['id',_0x059c('0x30')],'include':[{'model':_0x3af9ba['CmList'],'as':_0x059c('0x31'),'where':{'id':_0x5604a5['ListId']}}]})[_0x059c('0x1b')](function(_0x27bb7b){if(_0x27bb7b){var _0x548e6a=[];for(var _0x3c46a4=0x0,_0x54182e;_0x3c46a4<_0x27bb7b['length'];_0x3c46a4+=0x1){_0x54182e=_0x27bb7b[_0x3c46a4]['get']({'plain':!![]});switch(_0x54182e[_0x059c('0x30')]){case _0x059c('0x32'):_0x2b3b9f(_0x54182e)[_0x059c('0x24')](_0x4e5fd8());break;case _0x059c('0x33'):_0x17f587(_0x54182e)[_0x059c('0x24')](_0x4e5fd8());break;default:_0x3af9ba[_0x059c('0x19')][_0x059c('0x2a')]({'phone':_0x5604a5[_0x059c('0xd')],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5[_0x059c('0x1e')],'scheduledat':_0x5604a5[_0x059c('0x20')]?_0x5604a5[_0x059c('0x20')]:moment()[_0x059c('0x21')](_0x059c('0x22')),'priority':_0x5604a5[_0x059c('0x1f')]?_0x5604a5[_0x059c('0x1f')]:0x2,'callback':_0x5604a5[_0x059c('0x23')]?!![]:![],'callbackuniqueid':_0x5604a5[_0x059c('0x23')]?_0x5604a5[_0x059c('0x23')]:undefined,'callbackat':_0x5604a5[_0x059c('0x23')]?moment()[_0x059c('0x21')](_0x059c('0x22')):undefined,'VoiceQueueId':_0x54182e['id']})[_0x059c('0x24')](_0x4e5fd8());}}}})[_0x059c('0x1b')](function(){return _0x3af9ba[_0x059c('0x2e')][_0x059c('0x34')]({'where':{'type':_0x059c('0x2f')},'attributes':['id'],'include':[{'model':_0x3af9ba['CmList'],'as':_0x059c('0x35'),'where':{'id':_0x5604a5['ListId']}}]})['then'](function(_0x2bc553){if(_0x2bc553){var _0xde04d=[];for(var _0x28f425=0x0,_0x45019c;_0x28f425<_0x2bc553[_0x059c('0x36')];_0x28f425+=0x1){_0x45019c=_0x2bc553[_0x28f425][_0x059c('0x37')]({'plain':!![]});_0x3af9ba[_0x059c('0x38')][_0x059c('0x2a')]({'phone':_0x5604a5[_0x059c('0xd')],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5[_0x059c('0x1e')],'VoiceQueueId':_0x45019c['id']})[_0x059c('0x24')](function(_0x3b6f85){logger['error'](_0x059c('0x39'),_0x059c('0x18'),_0x3b6f85[_0x059c('0x3a')]);});}}});})[_0x059c('0x1b')](function(){return _0x3af9ba[_0x059c('0x3b')][_0x059c('0x34')]({'attributes':['id',_0x059c('0x30')],'include':[{'model':_0x3af9ba[_0x059c('0x3c')],'as':_0x059c('0x31'),'where':{'id':_0x5604a5['ListId']}}]})['then'](function(_0x4b34f1){if(_0x4b34f1){var _0x37bfcd=[];for(var _0x50a071=0x0,_0x27ca2d;_0x50a071<_0x4b34f1[_0x059c('0x36')];_0x50a071+=0x1){_0x27ca2d=_0x4b34f1[_0x50a071][_0x059c('0x37')]({'plain':!![]});switch(_0x27ca2d['dialCheckDuplicateType']){case _0x059c('0x32'):_0x18bed1(_0x27ca2d)[_0x059c('0x24')](_0x46a639());break;case _0x059c('0x33'):_0x5ab7e0(_0x27ca2d)[_0x059c('0x24')](_0x46a639());break;default:_0x3af9ba[_0x059c('0x19')][_0x059c('0x2a')]({'phone':_0x5604a5['phone'],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5[_0x059c('0x1e')],'scheduledat':_0x5604a5[_0x059c('0x20')]?_0x5604a5[_0x059c('0x20')]:moment()[_0x059c('0x21')](_0x059c('0x22')),'priority':_0x5604a5[_0x059c('0x1f')]?_0x5604a5['priority']:0x2,'callback':_0x5604a5[_0x059c('0x23')]?!![]:![],'callbackuniqueid':_0x5604a5[_0x059c('0x23')]?_0x5604a5[_0x059c('0x23')]:undefined,'callbackat':_0x5604a5[_0x059c('0x23')]?moment()[_0x059c('0x21')](_0x059c('0x22')):undefined,'CampaignId':_0x27ca2d['id']})[_0x059c('0x24')](_0x46a639());}}}});})[_0x059c('0x1b')](function(){return _0x3af9ba[_0x059c('0x3b')]['findAll']({'attributes':['id'],'include':[{'model':_0x3af9ba[_0x059c('0x3c')],'as':_0x059c('0x35'),'where':{'id':_0x5604a5['ListId']}}]})[_0x059c('0x1b')](function(_0x33778f){if(_0x33778f){var _0x341ead=[];for(var _0x55a476=0x0,_0x409a34;_0x55a476<_0x33778f[_0x059c('0x36')];_0x55a476+=0x1){_0x409a34=_0x33778f[_0x55a476]['get']({'plain':!![]});_0x3af9ba[_0x059c('0x38')][_0x059c('0x2a')]({'phone':_0x5604a5[_0x059c('0xd')],'ContactId':_0x5604a5['id'],'ListId':_0x5604a5['ListId'],'CampaignId':_0x409a34['id']})[_0x059c('0x24')](function(_0xef93c6){logger[_0x059c('0x16')]('cmContact,\x20%s,\x20%s',_0x059c('0x18'),_0xef93c6[_0x059c('0x3a')]);});}}});})[_0x059c('0x1b')](function(){_0x5152c7();})['catch'](function(_0x402563){logger[_0x059c('0x16')](_0x059c('0x39'),_0x059c('0x18'),_0x402563['message']);_0x5152c7(_0x402563);});}else{_0x5152c7(new Error(_0x059c('0x3d')));}},'afterDestroy':function(_0x1eff95,_0x4be6d5,_0x71892c){var _0x95de02=_0x4b9680[_0x059c('0x15')];var _0xd565ab=_0x1eff95[_0x059c('0x37')]({'plain':!![]});return _0x95de02['CmHopper'][_0x059c('0x34')]({'raw':!![],'where':{'ListId':_0xd565ab['ListId'],'ContactId':_0xd565ab['id']}})[_0x059c('0x1b')](function(_0x470493){if(!_[_0x059c('0x3e')](_0x470493)){var _0x36e651=[];for(var _0x47a193=0x0;_0x47a193<_0x470493[_0x059c('0x36')];_0x47a193+=0x1){var _0x10a8f7=_0x95de02[_0x059c('0x19')][_0x059c('0x3f')]({'where':{'ListId':_0x470493[_0x47a193][_0x059c('0x1e')],'ContactId':_0x470493[_0x47a193][_0x059c('0x40')],'VoiceQueueId':_0x470493[_0x47a193][_0x059c('0x41')],'CampaignId':_0x470493[_0x47a193][_0x059c('0x42')]}});_0x36e651[_0x059c('0x43')](_0x10a8f7);}return BPromise[_0x059c('0x44')](_0x36e651);}})[_0x059c('0x1b')](function(_0x566a1d){logger[_0x059c('0x45')](_0x059c('0x46'),util[_0x059c('0x2b')](_0x566a1d,{'showHidden':![],'depth':null}));_0x71892c();})[_0x059c('0x24')](function(_0x65873c){logger[_0x059c('0x16')](_0x059c('0x47'),util[_0x059c('0x2b')](_0x65873c,{'showHidden':![],'depth':null}));_0x71892c(_0x65873c);});}}});};
\ No newline at end of file
index f582b1c..9fee6d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa1=['toString','sequelize','query','CreateCmContact','lodash','util','moment','randomstring','ioredis','squel','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','info','CmContact,\x20%s,\x20%s','debug','CmContact,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetCmContact','CmContact','findAll','raw','options','limit','include','model','map','attributes','then','keys','body','length','startsWith','update','table','set','where','id\x20=\x20?'];(function(_0x40e44,_0x47c229){var _0x3c8678=function(_0x3145b4){while(--_0x3145b4){_0x40e44['push'](_0x40e44['shift']());}};_0x3c8678(++_0x47c229);}(_0x0aa1,0x6c));var _0x10aa=function(_0x69e52c,_0x4291d5){_0x69e52c=_0x69e52c-0x0;var _0x26260e=_0x0aa1[_0x69e52c];return _0x26260e;};'use strict';var _=require(_0x10aa('0x0'));var util=require(_0x10aa('0x1'));var moment=require(_0x10aa('0x2'));var BPromise=require('bluebird');var rs=require(_0x10aa('0x3'));var fs=require('fs');var Redis=require(_0x10aa('0x4'));var squel=require(_0x10aa('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x10aa('0x6'))(_0x10aa('0x7'));var config=require(_0x10aa('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x10aa('0x9')]['http']({'port':0x232a});config[_0x10aa('0xa')]=_[_0x10aa('0xb')](config[_0x10aa('0xa')],{'host':_0x10aa('0xc'),'port':0x18eb});var socket=require(_0x10aa('0xd'))(new Redis(config[_0x10aa('0xa')]));require(_0x10aa('0xe'))[_0x10aa('0xf')](socket);function respondWithRpcPromise(_0x31c118,_0x7cb17b,_0x3a6352){return new BPromise(function(_0x36db0d,_0x40f7b8){return client[_0x10aa('0x10')](_0x31c118,_0x3a6352)['then'](function(_0x13a14c){logger[_0x10aa('0x11')](_0x10aa('0x12'),_0x7cb17b,'request\x20sent');logger[_0x10aa('0x13')](_0x10aa('0x14'),_0x7cb17b,_0x10aa('0x15'),JSON[_0x10aa('0x16')](_0x13a14c));if(_0x13a14c[_0x10aa('0x17')]){if(_0x13a14c[_0x10aa('0x17')][_0x10aa('0x18')]===0x1f4){logger[_0x10aa('0x17')]('CmContact,\x20%s,\x20%s',_0x7cb17b,_0x13a14c[_0x10aa('0x17')]['message']);return _0x40f7b8(_0x13a14c[_0x10aa('0x17')][_0x10aa('0x19')]);}logger['error']('CmContact,\x20%s,\x20%s',_0x7cb17b,_0x13a14c[_0x10aa('0x17')]['message']);return _0x36db0d(_0x13a14c[_0x10aa('0x17')]['message']);}else{logger[_0x10aa('0x11')](_0x10aa('0x12'),_0x7cb17b,_0x10aa('0x15'));_0x36db0d(_0x13a14c[_0x10aa('0x1a')][_0x10aa('0x19')]);}})[_0x10aa('0x1b')](function(_0x25d8b1){logger[_0x10aa('0x17')](_0x10aa('0x12'),_0x7cb17b,_0x25d8b1);_0x40f7b8(_0x25d8b1);});});}exports[_0x10aa('0x1c')]=function(_0xfe96e6){var _0x4f4b3d=this;return new Promise(function(_0x2155be,_0x50061e){return db[_0x10aa('0x1d')][_0x10aa('0x1e')]({'raw':_0xfe96e6['options']?_0xfe96e6['options'][_0x10aa('0x1f')]===undefined?!![]:![]:!![],'where':_0xfe96e6[_0x10aa('0x20')]?_0xfe96e6['options']['where']||null:null,'attributes':_0xfe96e6[_0x10aa('0x20')]?_0xfe96e6[_0x10aa('0x20')]['attributes']||null:null,'limit':_0xfe96e6[_0x10aa('0x20')]?_0xfe96e6[_0x10aa('0x20')][_0x10aa('0x21')]||null:null,'include':_0xfe96e6['options']?_0xfe96e6['options']['include']?_['map'](_0xfe96e6[_0x10aa('0x20')][_0x10aa('0x22')],function(_0x526b44){return{'model':db[_0x526b44[_0x10aa('0x23')]],'as':_0x526b44['as'],'attributes':_0x526b44['attributes'],'include':_0x526b44[_0x10aa('0x22')]?_['map'](_0x526b44[_0x10aa('0x22')],function(_0xfcc232){return{'model':db[_0xfcc232[_0x10aa('0x23')]],'as':_0xfcc232['as'],'attributes':_0xfcc232['attributes'],'include':_0xfcc232[_0x10aa('0x22')]?_[_0x10aa('0x24')](_0xfcc232[_0x10aa('0x22')],function(_0x36ff10){return{'model':db[_0x36ff10[_0x10aa('0x23')]],'as':_0x36ff10['as'],'attributes':_0x36ff10[_0x10aa('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5ce6d3){logger[_0x10aa('0x11')]('GetCmContact',_0xfe96e6);logger['debug'](_0x10aa('0x1c'),_0xfe96e6,JSON[_0x10aa('0x16')](_0x5ce6d3));_0x2155be(_0x5ce6d3);})['catch'](function(_0x5d9f3f){logger[_0x10aa('0x17')](_0x10aa('0x1c'),_0x5d9f3f[_0x10aa('0x19')],_0xfe96e6);_0x50061e(_0x4f4b3d['error'](0x1f4,_0x5d9f3f[_0x10aa('0x19')]));});});};exports['CreateCmContact']=function(_0x4ff6d5){var _0x229b67=this;return new Promise(function(_0x253705,_0x2c8841){return db['CmContact']['create'](_0x4ff6d5['body'],{'raw':_0x4ff6d5[_0x10aa('0x20')]?_0x4ff6d5[_0x10aa('0x20')][_0x10aa('0x1f')]===undefined?!![]:![]:!![]})[_0x10aa('0x26')](function(_0x3f9ad5){var _0x2bf142;for(var _0x1e2fe1=0x0;_0x1e2fe1<Object[_0x10aa('0x27')](_0x4ff6d5[_0x10aa('0x28')])[_0x10aa('0x29')];_0x1e2fe1++){var _0x4edede=Object[_0x10aa('0x27')](_0x4ff6d5[_0x10aa('0x28')])[_0x1e2fe1];if(_0x4edede[_0x10aa('0x2a')]('cf_')){_0x2bf142=squel[_0x10aa('0x2b')]()[_0x10aa('0x2c')]('cm_contacts')[_0x10aa('0x2d')](_0x4edede,_0x4ff6d5[_0x10aa('0x28')][_0x4edede])[_0x10aa('0x2e')](_0x10aa('0x2f'),_0x3f9ad5['id'])[_0x10aa('0x30')]();break;}}if(!_0x2bf142)return _0x3f9ad5;return db[_0x10aa('0x31')][_0x10aa('0x32')](_0x2bf142)[_0x10aa('0x26')](function(){return _0x3f9ad5;});})[_0x10aa('0x26')](function(_0x9a572b){logger[_0x10aa('0x11')]('CreateCmContact',_0x4ff6d5);logger[_0x10aa('0x13')](_0x10aa('0x33'),_0x4ff6d5,JSON[_0x10aa('0x16')](_0x9a572b));_0x253705(_0x9a572b);})['catch'](function(_0x526904){logger[_0x10aa('0x17')](_0x10aa('0x33'),_0x526904[_0x10aa('0x19')],_0x4ff6d5);_0x2c8841(_0x229b67[_0x10aa('0x17')](0x1f4,_0x526904[_0x10aa('0x19')]));});});};
\ No newline at end of file
+var _0x87d9=['debug','stringify','util','randomstring','squel','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','then','info','request\x20sent','CmContact,\x20%s,\x20%s,\x20%s','error','code','CmContact,\x20%s,\x20%s','message','catch','GetCmContact','findAll','options','raw','where','limit','include','model','attributes','map','CreateCmContact','CmContact','create','body','length','startsWith','cf_','update','cm_contacts','set','toString','sequelize'];(function(_0x427502,_0x4e6214){var _0x1baeff=function(_0x1491e6){while(--_0x1491e6){_0x427502['push'](_0x427502['shift']());}};_0x1baeff(++_0x4e6214);}(_0x87d9,0x12f));var _0x987d=function(_0x44b19b,_0x5d33cc){_0x44b19b=_0x44b19b-0x0;var _0x2d7858=_0x87d9[_0x44b19b];return _0x2d7858;};'use strict';var _=require('lodash');var util=require(_0x987d('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x987d('0x1'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x987d('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x987d('0x3'))('rpc');var config=require(_0x987d('0x4'));var jayson=require(_0x987d('0x5'));var client=jayson[_0x987d('0x6')]['http']({'port':0x232a});config[_0x987d('0x7')]=_[_0x987d('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x987d('0x9'))(new Redis(config['redis']));require('./cmContact.socket')['register'](socket);function respondWithRpcPromise(_0x3bffc6,_0x3dcd00,_0x43598d){return new BPromise(function(_0x3d707b,_0x38b4f1){return client['request'](_0x3bffc6,_0x43598d)[_0x987d('0xa')](function(_0x352a46){logger[_0x987d('0xb')]('CmContact,\x20%s,\x20%s',_0x3dcd00,_0x987d('0xc'));logger['debug'](_0x987d('0xd'),_0x3dcd00,'request\x20sent',JSON['stringify'](_0x352a46));if(_0x352a46['error']){if(_0x352a46[_0x987d('0xe')][_0x987d('0xf')]===0x1f4){logger[_0x987d('0xe')](_0x987d('0x10'),_0x3dcd00,_0x352a46[_0x987d('0xe')][_0x987d('0x11')]);return _0x38b4f1(_0x352a46[_0x987d('0xe')][_0x987d('0x11')]);}logger[_0x987d('0xe')](_0x987d('0x10'),_0x3dcd00,_0x352a46[_0x987d('0xe')][_0x987d('0x11')]);return _0x3d707b(_0x352a46[_0x987d('0xe')][_0x987d('0x11')]);}else{logger[_0x987d('0xb')]('CmContact,\x20%s,\x20%s',_0x3dcd00,_0x987d('0xc'));_0x3d707b(_0x352a46['result'][_0x987d('0x11')]);}})[_0x987d('0x12')](function(_0x2615b7){logger['error'](_0x987d('0x10'),_0x3dcd00,_0x2615b7);_0x38b4f1(_0x2615b7);});});}exports[_0x987d('0x13')]=function(_0x4ada01){var _0x61bdf1=this;return new Promise(function(_0x10fdf0,_0xef90ac){return db['CmContact'][_0x987d('0x14')]({'raw':_0x4ada01['options']?_0x4ada01[_0x987d('0x15')][_0x987d('0x16')]===undefined?!![]:![]:!![],'where':_0x4ada01[_0x987d('0x15')]?_0x4ada01[_0x987d('0x15')][_0x987d('0x17')]||null:null,'attributes':_0x4ada01['options']?_0x4ada01[_0x987d('0x15')]['attributes']||null:null,'limit':_0x4ada01[_0x987d('0x15')]?_0x4ada01[_0x987d('0x15')][_0x987d('0x18')]||null:null,'include':_0x4ada01[_0x987d('0x15')]?_0x4ada01[_0x987d('0x15')][_0x987d('0x19')]?_['map'](_0x4ada01['options'][_0x987d('0x19')],function(_0x21f193){return{'model':db[_0x21f193[_0x987d('0x1a')]],'as':_0x21f193['as'],'attributes':_0x21f193[_0x987d('0x1b')],'include':_0x21f193[_0x987d('0x19')]?_['map'](_0x21f193[_0x987d('0x19')],function(_0x144362){return{'model':db[_0x144362[_0x987d('0x1a')]],'as':_0x144362['as'],'attributes':_0x144362[_0x987d('0x1b')],'include':_0x144362[_0x987d('0x19')]?_[_0x987d('0x1c')](_0x144362[_0x987d('0x19')],function(_0x388824){return{'model':db[_0x388824['model']],'as':_0x388824['as'],'attributes':_0x388824['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3199da){logger[_0x987d('0xb')](_0x987d('0x13'),_0x4ada01);logger['debug']('GetCmContact',_0x4ada01,JSON['stringify'](_0x3199da));_0x10fdf0(_0x3199da);})['catch'](function(_0x4fcabb){logger['error'](_0x987d('0x13'),_0x4fcabb[_0x987d('0x11')],_0x4ada01);_0xef90ac(_0x61bdf1[_0x987d('0xe')](0x1f4,_0x4fcabb[_0x987d('0x11')]));});});};exports[_0x987d('0x1d')]=function(_0x30f718){var _0x89d555=this;return new Promise(function(_0x23ff04,_0x39d315){return db[_0x987d('0x1e')][_0x987d('0x1f')](_0x30f718[_0x987d('0x20')],{'raw':_0x30f718[_0x987d('0x15')]?_0x30f718['options'][_0x987d('0x16')]===undefined?!![]:![]:!![]})[_0x987d('0xa')](function(_0x393474){var _0x747e18;for(var _0x409096=0x0;_0x409096<Object['keys'](_0x30f718[_0x987d('0x20')])[_0x987d('0x21')];_0x409096++){var _0x18792b=Object['keys'](_0x30f718[_0x987d('0x20')])[_0x409096];if(_0x18792b[_0x987d('0x22')](_0x987d('0x23'))){_0x747e18=squel[_0x987d('0x24')]()['table'](_0x987d('0x25'))[_0x987d('0x26')](_0x18792b,_0x30f718[_0x987d('0x20')][_0x18792b])[_0x987d('0x17')]('id\x20=\x20?',_0x393474['id'])[_0x987d('0x27')]();break;}}if(!_0x747e18)return _0x393474;return db[_0x987d('0x28')]['query'](_0x747e18)[_0x987d('0xa')](function(){return _0x393474;});})[_0x987d('0xa')](function(_0x471a2d){logger[_0x987d('0xb')](_0x987d('0x1d'),_0x30f718);logger[_0x987d('0x29')](_0x987d('0x1d'),_0x30f718,JSON[_0x987d('0x2a')](_0x471a2d));_0x23ff04(_0x471a2d);})['catch'](function(_0x1e9177){logger['error'](_0x987d('0x1d'),_0x1e9177[_0x987d('0x11')],_0x30f718);_0x39d315(_0x89d555[_0x987d('0xe')](0x1f4,_0x1e9177[_0x987d('0x11')]));});});};
\ No newline at end of file
index cdec0c7..f80fb44 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_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
index 6cf6736..f496912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed89=['getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','join','root','server/files/tmp','originalname','replace','extname','now','/csv','single','file','uploadCsv','diskStorage','format','%s-%s%s','basename','/upload','upload','/upload/:id','import','put','update','delete','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','./cmContact.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions'];(function(_0x19566c,_0x285ed7){var _0xcbe110=function(_0x2587f6){while(--_0x2587f6){_0x19566c['push'](_0x19566c['shift']());}};_0xcbe110(++_0x285ed7);}(_0xed89,0x89));var _0x9ed8=function(_0x4c589f,_0x37ff18){_0x4c589f=_0x4c589f-0x0;var _0xbf2358=_0xed89[_0x4c589f];return _0xbf2358;};'use strict';var multer=require(_0x9ed8('0x0'));var util=require(_0x9ed8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9ed8('0x2'));var router=express[_0x9ed8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9ed8('0x4'));var interaction=require(_0x9ed8('0x5'));var config=require('../../config/environment');var controller=require(_0x9ed8('0x6'));router[_0x9ed8('0x7')]('/',auth['isAuthenticated'](),controller[_0x9ed8('0x8')]);router[_0x9ed8('0x7')](_0x9ed8('0x9'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0xb')]);router[_0x9ed8('0x7')](_0x9ed8('0xc'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0xd')]);router['get'](_0x9ed8('0xe'),auth['isAuthenticated'](),controller[_0x9ed8('0xf')]);router['get'](_0x9ed8('0x10'),auth['isAuthenticated'](),controller[_0x9ed8('0x11')]);router[_0x9ed8('0x7')](_0x9ed8('0x12'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0x9ed8('0x7')](_0x9ed8('0x13'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x14')]);router[_0x9ed8('0x7')](_0x9ed8('0x15'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x16')]);router[_0x9ed8('0x7')](_0x9ed8('0x17'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x18')]);router[_0x9ed8('0x19')](_0x9ed8('0x1a'),auth['isAuthenticated'](),controller[_0x9ed8('0x1b')]);router['post']('/',auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x1c')]);router[_0x9ed8('0x19')](_0x9ed8('0x1d'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x1e')]);router['post'](_0x9ed8('0xe'),auth[_0x9ed8('0xa')](),controller['setTags']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1437f3,_0x175ab0,_0x556d5f){_0x556d5f(null,path[_0x9ed8('0x1f')](config[_0x9ed8('0x20')],_0x9ed8('0x21')));},'filename':function(_0x3839cb,_0x333b49,_0x5d93ea){_0x333b49[_0x9ed8('0x22')]=_0x333b49['originalname'][_0x9ed8('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5d93ea(null,util['format']('%s-%s%s',path['basename'](_0x333b49[_0x9ed8('0x22')],path[_0x9ed8('0x24')](_0x333b49['originalname'])),Date[_0x9ed8('0x25')](),path['extname'](_0x333b49[_0x9ed8('0x22')])));}})});router[_0x9ed8('0x19')](_0x9ed8('0x26'),upload[_0x9ed8('0x27')](_0x9ed8('0x28')),controller[_0x9ed8('0x29')]);var upload=multer({'storage':multer[_0x9ed8('0x2a')]({'destination':function(_0x2f6fd7,_0x5c3c05,_0x1ca22a){_0x1ca22a(null,path[_0x9ed8('0x1f')](config[_0x9ed8('0x20')],_0x9ed8('0x21')));},'filename':function(_0xed9011,_0x381e7b,_0x2bfbdf){_0x381e7b[_0x9ed8('0x22')]=_0x381e7b['originalname'][_0x9ed8('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2bfbdf(null,util[_0x9ed8('0x2b')](_0x9ed8('0x2c'),path[_0x9ed8('0x2d')](_0x381e7b['originalname'],path[_0x9ed8('0x24')](_0x381e7b[_0x9ed8('0x22')])),Date[_0x9ed8('0x25')](),path[_0x9ed8('0x24')](_0x381e7b[_0x9ed8('0x22')])));}})});router[_0x9ed8('0x19')](_0x9ed8('0x2e'),upload[_0x9ed8('0x27')](_0x9ed8('0x28')),controller[_0x9ed8('0x2f')]);router[_0x9ed8('0x19')](_0x9ed8('0x30'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x31')]);router[_0x9ed8('0x32')]('/:id',auth['isAuthenticated'](),controller[_0x9ed8('0x33')]);router[_0x9ed8('0x34')](_0x9ed8('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x137b=['getHopperHistories','/:id/hopper_finals','getHopperFinals','getJscriptySessions','/:id/journey','getJourney','post','/create_many','setTags','diskStorage','join','root','server/files/tmp','replace','format','%s-%s%s','basename','originalname','extname','now','single','file','/upload','upload','/upload/:id','put','update','delete','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/tags','getTags','/:id/hoppers'];(function(_0x395e1,_0x27cdfe){var _0x370e27=function(_0x3cfc9f){while(--_0x3cfc9f){_0x395e1['push'](_0x395e1['shift']());}};_0x370e27(++_0x27cdfe);}(_0x137b,0x10e));var _0xb137=function(_0x2f4069,_0x74eb6c){_0x2f4069=_0x2f4069-0x0;var _0x4e5d90=_0x137b[_0x2f4069];return _0x4e5d90;};'use strict';var multer=require('multer');var util=require(_0xb137('0x0'));var path=require(_0xb137('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb137('0x2')]();var fs_extra=require(_0xb137('0x3'));var auth=require(_0xb137('0x4'));var interaction=require(_0xb137('0x5'));var config=require(_0xb137('0x6'));var controller=require(_0xb137('0x7'));router[_0xb137('0x8')]('/',auth[_0xb137('0x9')](),controller[_0xb137('0xa')]);router[_0xb137('0x8')](_0xb137('0xb'),auth['isAuthenticated'](),controller[_0xb137('0xc')]);router[_0xb137('0x8')](_0xb137('0xd'),auth[_0xb137('0x9')](),controller[_0xb137('0xe')]);router['get'](_0xb137('0xf'),auth['isAuthenticated'](),controller[_0xb137('0x10')]);router[_0xb137('0x8')](_0xb137('0x11'),auth[_0xb137('0x9')](),controller['getHoppers']);router['get']('/:id/hopper_histories',auth[_0xb137('0x9')](),controller[_0xb137('0x12')]);router['get'](_0xb137('0x13'),auth[_0xb137('0x9')](),controller[_0xb137('0x14')]);router[_0xb137('0x8')]('/:id/jscripty_sessions',auth[_0xb137('0x9')](),controller[_0xb137('0x15')]);router[_0xb137('0x8')](_0xb137('0x16'),auth[_0xb137('0x9')](),controller[_0xb137('0x17')]);router['post']('/merge',auth['isAuthenticated'](),controller['merge']);router[_0xb137('0x18')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb137('0x18')](_0xb137('0x19'),auth[_0xb137('0x9')](),controller['bulkCreate']);router[_0xb137('0x18')](_0xb137('0xf'),auth[_0xb137('0x9')](),controller[_0xb137('0x1a')]);var upload=multer({'storage':multer[_0xb137('0x1b')]({'destination':function(_0x1c1e24,_0x1be7e9,_0xa8de93){_0xa8de93(null,path[_0xb137('0x1c')](config[_0xb137('0x1d')],_0xb137('0x1e')));},'filename':function(_0x5c9f81,_0x486b7a,_0xc54716){_0x486b7a['originalname']=_0x486b7a['originalname'][_0xb137('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xc54716(null,util[_0xb137('0x20')](_0xb137('0x21'),path[_0xb137('0x22')](_0x486b7a[_0xb137('0x23')],path[_0xb137('0x24')](_0x486b7a[_0xb137('0x23')])),Date[_0xb137('0x25')](),path['extname'](_0x486b7a[_0xb137('0x23')])));}})});router['post']('/csv',upload[_0xb137('0x26')](_0xb137('0x27')),controller['uploadCsv']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x79f302,_0x27975d,_0x3d4bc2){_0x3d4bc2(null,path[_0xb137('0x1c')](config['root'],'server/files/tmp'));},'filename':function(_0x51ef35,_0x10505b,_0x5eee1b){_0x10505b[_0xb137('0x23')]=_0x10505b[_0xb137('0x23')][_0xb137('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5eee1b(null,util[_0xb137('0x20')]('%s-%s%s',path['basename'](_0x10505b['originalname'],path[_0xb137('0x24')](_0x10505b[_0xb137('0x23')])),Date[_0xb137('0x25')](),path[_0xb137('0x24')](_0x10505b[_0xb137('0x23')])));}})});router['post'](_0xb137('0x28'),upload[_0xb137('0x26')](_0xb137('0x27')),controller[_0xb137('0x29')]);router[_0xb137('0x18')](_0xb137('0x2a'),auth[_0xb137('0x9')](),controller['import']);router[_0xb137('0x2b')](_0xb137('0xd'),auth['isAuthenticated'](),controller[_0xb137('0x2c')]);router[_0xb137('0x2d')](_0xb137('0xd'),auth[_0xb137('0x9')](),controller[_0xb137('0x2e')]);module[_0xb137('0x2f')]=router;
\ No newline at end of file
index 5961922..c0fd7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe873=['values','stringify','BOOLEAN','sequelize','exports','VIRTUAL','alias','STRING','setDataValue','getDataValue','TEXT','long','type','select','parse'];(function(_0x26ff41,_0x539fc2){var _0x1908a9=function(_0x125a30){while(--_0x125a30){_0x26ff41['push'](_0x26ff41['shift']());}};_0x1908a9(++_0x539fc2);}(_0xe873,0xf3));var _0x3e87=function(_0x57fa4a,_0x3919f6){_0x57fa4a=_0x57fa4a-0x0;var _0x4c4237=_0xe873[_0x57fa4a];return _0x4c4237;};'use strict';var Sequelize=require(_0x3e87('0x0'));var _=require('lodash');module[_0x3e87('0x1')]={'name':{'type':Sequelize[_0x3e87('0x2')],'get':function(_0x453342){return this['getDataValue'](_0x3e87('0x3'));}},'alias':{'type':Sequelize[_0x3e87('0x4')],'allowNull':![],'set':function(_0x30faa7){this[_0x3e87('0x5')](_0x3e87('0x3'),_0x30faa7?_0x30faa7:this[_0x3e87('0x6')]('name'));}},'type':{'type':Sequelize[_0x3e87('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x3e87('0x7')](_0x3e87('0x8')),'get':function(){if(this[_0x3e87('0x6')](_0x3e87('0x9'))===_0x3e87('0xa')){return JSON[_0x3e87('0xb')](this['getDataValue'](_0x3e87('0xc')));}else{return this[_0x3e87('0x6')]('values');}},'set':function(_0x415994){if(Array['isArray'](_0x415994)){this['setDataValue'](_0x3e87('0xc'),JSON[_0x3e87('0xd')](_0x415994));}else{this[_0x3e87('0x5')]('values',_0x415994);}}},'required':{'type':Sequelize[_0x3e87('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x3e87('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM']('voice')}};
\ No newline at end of file
+var _0x6ada=['values','isArray','BOOLEAN','ENUM','sequelize','VIRTUAL','alias','STRING','setDataValue','getDataValue','name','long','type','select','parse'];(function(_0x3a8bf9,_0x5f2c5e){var _0x1f9611=function(_0x2eab56){while(--_0x2eab56){_0x3a8bf9['push'](_0x3a8bf9['shift']());}};_0x1f9611(++_0x5f2c5e);}(_0x6ada,0x17b));var _0xa6ad=function(_0x39c34f,_0x29679f){_0x39c34f=_0x39c34f-0x0;var _0x237098=_0x6ada[_0x39c34f];return _0x237098;};'use strict';var Sequelize=require(_0xa6ad('0x0'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0xa6ad('0x1')],'get':function(_0x1b7057){return this['getDataValue'](_0xa6ad('0x2'));}},'alias':{'type':Sequelize[_0xa6ad('0x3')],'allowNull':![],'set':function(_0x474fb4){this[_0xa6ad('0x4')](_0xa6ad('0x2'),_0x474fb4?_0x474fb4:this[_0xa6ad('0x5')](_0xa6ad('0x6')));}},'type':{'type':Sequelize[_0xa6ad('0x3')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0xa6ad('0x7')),'get':function(){if(this[_0xa6ad('0x5')](_0xa6ad('0x8'))===_0xa6ad('0x9')){return JSON[_0xa6ad('0xa')](this[_0xa6ad('0x5')](_0xa6ad('0xb')));}else{return this['getDataValue'](_0xa6ad('0xb'));}},'set':function(_0x48b2ff){if(Array[_0xa6ad('0xc')](_0x48b2ff)){this[_0xa6ad('0x4')]('values',JSON['stringify'](_0x48b2ff));}else{this[_0xa6ad('0x4')](_0xa6ad('0xb'),_0x48b2ff);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xa6ad('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xa6ad('0xe')]('voice')}};
\ No newline at end of file
index c83b4b2..19978fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf686=['query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','find','body','sequelize','transaction','create','Sequelize','TEXT','number','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','map'];(function(_0xcd17a2,_0x488a0e){var _0x486d30=function(_0x198a8c){while(--_0x198a8c){_0xcd17a2['push'](_0xcd17a2['shift']());}};_0x486d30(++_0x488a0e);}(_0xf686,0x76));var _0x6f68=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf686[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x6f68('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6f68('0x1'));var jsonpatch=require(_0x6f68('0x2'));var rp=require('request-promise');var moment=require(_0x6f68('0x3'));var BPromise=require(_0x6f68('0x4'));var Mustache=require('mustache');var util=require(_0x6f68('0x5'));var path=require(_0x6f68('0x6'));var sox=require('sox');var csv=require(_0x6f68('0x7'));var ejs=require(_0x6f68('0x8'));var fs=require('fs');var fs_extra=require(_0x6f68('0x9'));var _=require(_0x6f68('0xa'));var squel=require('squel');var crypto=require(_0x6f68('0xb'));var jsforce=require(_0x6f68('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6f68('0x7'));var querystring=require('querystring');var Papa=require(_0x6f68('0xd'));var Redis=require('ioredis');var authService=require(_0x6f68('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6f68('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6f68('0x10'))(_0x6f68('0x11'));var utils=require('../../config/utils');var config=require(_0x6f68('0x12'));var licenseUtil=require(_0x6f68('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ff771,_0xfb75a){_0xfb75a=_0xfb75a||0xcc;return function(_0x4f1e5c){if(_0x4f1e5c){return _0x2ff771[_0x6f68('0x14')](_0xfb75a);}return _0x2ff771[_0x6f68('0x15')](_0xfb75a)[_0x6f68('0x16')]();};}function respondWithResult(_0x2c7183,_0x5df0a5){_0x5df0a5=_0x5df0a5||0xc8;return function(_0x5733df){if(_0x5733df){return _0x2c7183[_0x6f68('0x15')](_0x5df0a5)[_0x6f68('0x17')](_0x5733df);}};}function respondWithFilteredResult(_0x5ed84b,_0x40543d){return function(_0x1b8709){if(_0x1b8709){var _0x481811=typeof _0x40543d['offset']===_0x6f68('0x18')&&typeof _0x40543d['limit']===_0x6f68('0x18');var _0x357705=_0x1b8709[_0x6f68('0x19')];var _0x3210f9=_0x481811?0x0:_0x40543d[_0x6f68('0x1a')];var _0x5fe0ab=_0x481811?_0x1b8709['count']:_0x40543d[_0x6f68('0x1a')]+_0x40543d[_0x6f68('0x1b')];var _0x275632;if(_0x5fe0ab>=_0x357705){_0x5fe0ab=_0x357705;_0x275632=0xc8;}else{_0x275632=0xce;}_0x5ed84b['status'](_0x275632);return _0x5ed84b[_0x6f68('0x1c')]('Content-Range',_0x3210f9+'-'+_0x5fe0ab+'/'+_0x357705)[_0x6f68('0x17')](_0x1b8709);}return null;};}function patchUpdates(_0x3e4309){return function(_0x516eb2){try{jsonpatch[_0x6f68('0x1d')](_0x516eb2,_0x3e4309,!![]);}catch(_0x456bc7){return BPromise[_0x6f68('0x1e')](_0x456bc7);}return _0x516eb2[_0x6f68('0x1f')]();};}function saveUpdates(_0x3f53ab,_0x504577){return function(_0x30b0f8){if(_0x30b0f8){return _0x30b0f8[_0x6f68('0x20')](_0x3f53ab)[_0x6f68('0x21')](function(_0x11df7a){return _0x11df7a;});}return null;};}function removeEntity(_0x35077b,_0x15777d){return function(_0x2fbf93){if(_0x2fbf93){return _0x2fbf93[_0x6f68('0x22')]()[_0x6f68('0x21')](function(){_0x35077b[_0x6f68('0x15')](0xcc)[_0x6f68('0x16')]();});}};}function handleEntityNotFound(_0xd677ae,_0x5a948c){return function(_0x1762fc){if(!_0x1762fc){_0xd677ae['sendStatus'](0x194);}return _0x1762fc;};}function handleError(_0x5deac3,_0x1b980b){_0x1b980b=_0x1b980b||0x1f4;return function(_0x5456f4){logger[_0x6f68('0x23')](_0x5456f4[_0x6f68('0x24')]);if(_0x5456f4['name']){delete _0x5456f4[_0x6f68('0x25')];}_0x5deac3[_0x6f68('0x15')](_0x1b980b)[_0x6f68('0x26')](_0x5456f4);};}exports[_0x6f68('0x27')]=function(_0x1a4d55,_0x33af14){var _0x5c2e71={},_0x388eb2={},_0x5db88f={'count':0x0,'rows':[]};var _0x4270cc=_['map'](db[_0x6f68('0x28')][_0x6f68('0x29')],function(_0x538d4e){return{'name':_0x538d4e[_0x6f68('0x2a')],'type':_0x538d4e[_0x6f68('0x2b')][_0x6f68('0x2c')]};});_0x388eb2[_0x6f68('0x2d')]=_[_0x6f68('0x2e')](_[_0x6f68('0x2f')](_0x4270cc,_0x6f68('0x25')),[_0x6f68('0x25')]);_0x388eb2[_0x6f68('0x30')]=_['keys'](_0x1a4d55['query']);_0x388eb2[_0x6f68('0x31')]=_[_0x6f68('0x32')](_0x388eb2[_0x6f68('0x2d')],_0x388eb2[_0x6f68('0x30')]);_0x5c2e71[_0x6f68('0x33')]=_['intersection'](_0x388eb2[_0x6f68('0x2d')],qs['fields'](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x34')]));_0x5c2e71['attributes']=_0x5c2e71['attributes'][_0x6f68('0x35')]?_0x5c2e71[_0x6f68('0x33')]:_0x388eb2[_0x6f68('0x2d')];if(!_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x36')]('nolimit')){_0x5c2e71[_0x6f68('0x1b')]=qs['limit'](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x1b')]);_0x5c2e71[_0x6f68('0x1a')]=qs[_0x6f68('0x1a')](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x1a')]);}_0x5c2e71['order']=qs[_0x6f68('0x37')](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x37')]);_0x5c2e71[_0x6f68('0x38')]=qs[_0x6f68('0x31')](_['pick'](_0x1a4d55[_0x6f68('0x30')],_0x388eb2[_0x6f68('0x31')]),_0x4270cc);if(_0x1a4d55['query'][_0x6f68('0x39')]){_0x5c2e71[_0x6f68('0x38')]=_[_0x6f68('0x3a')](_0x5c2e71[_0x6f68('0x38')],{'$or':_[_0x6f68('0x2f')](_0x4270cc,function(_0x571c1e){if(_0x571c1e['type']!==_0x6f68('0x3b')){var _0x24442d={};_0x24442d[_0x571c1e[_0x6f68('0x25')]]={'$like':'%'+_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x39')]+'%'};return _0x24442d;}})});}_0x5c2e71=_[_0x6f68('0x3a')]({},_0x5c2e71,_0x1a4d55[_0x6f68('0x3c')]);var _0x7c1b7e={'where':_0x5c2e71['where']};return db[_0x6f68('0x28')][_0x6f68('0x19')](_0x7c1b7e)[_0x6f68('0x21')](function(_0x5b9b16){_0x5db88f['count']=_0x5b9b16;if(_0x1a4d55['query'][_0x6f68('0x3d')]){_0x5c2e71[_0x6f68('0x3e')]=[{'all':!![]}];}return db[_0x6f68('0x28')][_0x6f68('0x3f')](_0x5c2e71);})['then'](function(_0x2a9796){_0x5db88f[_0x6f68('0x40')]=_0x2a9796;return _0x5db88f;})[_0x6f68('0x21')](respondWithFilteredResult(_0x33af14,_0x5c2e71))[_0x6f68('0x41')](handleError(_0x33af14,null));};exports[_0x6f68('0x42')]=function(_0x3558b5,_0x5baf2c){var _0x5d01a1={'raw':!![],'where':{'id':_0x3558b5['params']['id']}},_0x4a3ecb={};_0x4a3ecb[_0x6f68('0x2d')]=_[_0x6f68('0x43')](db['CmCustomField']['rawAttributes']);_0x4a3ecb['query']=_[_0x6f68('0x43')](_0x3558b5[_0x6f68('0x30')]);_0x4a3ecb[_0x6f68('0x31')]=_[_0x6f68('0x32')](_0x4a3ecb[_0x6f68('0x2d')],_0x4a3ecb['query']);_0x5d01a1[_0x6f68('0x33')]=_['intersection'](_0x4a3ecb[_0x6f68('0x2d')],qs[_0x6f68('0x34')](_0x3558b5[_0x6f68('0x30')][_0x6f68('0x34')]));_0x5d01a1[_0x6f68('0x33')]=_0x5d01a1[_0x6f68('0x33')][_0x6f68('0x35')]?_0x5d01a1[_0x6f68('0x33')]:_0x4a3ecb[_0x6f68('0x2d')];if(_0x3558b5['query'][_0x6f68('0x3d')]){_0x5d01a1[_0x6f68('0x3e')]=[{'all':!![]}];}_0x5d01a1=_[_0x6f68('0x3a')]({},_0x5d01a1,_0x3558b5[_0x6f68('0x3c')]);return db[_0x6f68('0x28')][_0x6f68('0x44')](_0x5d01a1)[_0x6f68('0x21')](handleEntityNotFound(_0x5baf2c,null))[_0x6f68('0x21')](respondWithResult(_0x5baf2c,null))['catch'](handleError(_0x5baf2c,null));};exports[_0x6f68('0x20')]=function(_0x575f57,_0xb932a7){if(_0x575f57[_0x6f68('0x45')]['id']){delete _0x575f57[_0x6f68('0x45')]['id'];}return db[_0x6f68('0x28')]['find']({'where':{'id':_0x575f57['params']['id']}})[_0x6f68('0x21')](handleEntityNotFound(_0xb932a7,null))['then'](saveUpdates(_0x575f57['body'],null))[_0x6f68('0x21')](respondWithResult(_0xb932a7,null))[_0x6f68('0x41')](handleError(_0xb932a7,null));};exports[_0x6f68('0x22')]=function(_0x12ac7e,_0x6e47bd){return db[_0x6f68('0x28')][_0x6f68('0x44')]({'where':{'id':_0x12ac7e['params']['id']}})['then'](handleEntityNotFound(_0x6e47bd,null))['then'](removeEntity(_0x6e47bd,null))[_0x6f68('0x41')](handleError(_0x6e47bd,null));};exports['create']=function(_0x7687f,_0x4f57db){var _0x4b22a7;return db[_0x6f68('0x46')][_0x6f68('0x47')](function(_0x5cc347){return db[_0x6f68('0x28')][_0x6f68('0x48')](_0x7687f[_0x6f68('0x45')],{'transaction':_0x5cc347})['then'](function(_0x4daa80){_0x4b22a7=_0x4daa80;var _0x14266e={'type':db[_0x6f68('0x49')][_0x6f68('0x4a')],'transaction':_0x5cc347};switch(_0x7687f['body']['type']){case'text':_0x14266e['type']=db['Sequelize']['TEXT'];break;case _0x6f68('0x4b'):_0x14266e[_0x6f68('0x2b')]=db['Sequelize']['INTEGER'];break;case _0x6f68('0x4c'):_0x14266e['type']=db[_0x6f68('0x49')][_0x6f68('0x4d')];_0x14266e['defaultValue']=![];break;default:}return db['sequelize'][_0x6f68('0x4e')][_0x6f68('0x4f')](_0x6f68('0x50'),util[_0x6f68('0x51')](_0x6f68('0x52'),_0x4b22a7['id']),_0x14266e);})[_0x6f68('0x21')](function(){return _0x4b22a7;});})[_0x6f68('0x21')](respondWithResult(_0x4f57db,0xc9))[_0x6f68('0x41')](handleError(_0x4f57db,null));};
\ No newline at end of file
+var _0xb126=['send','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','filter','options','includeAll','findAll','show','params','keys','include','body','find','catch','sequelize','transaction','create','text','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','name'];(function(_0x11ce46,_0x177a85){var _0x368a1e=function(_0x425454){while(--_0x425454){_0x11ce46['push'](_0x11ce46['shift']());}};_0x368a1e(++_0x177a85);}(_0xb126,0x127));var _0x6b12=function(_0x54d01b,_0x1269c3){_0x54d01b=_0x54d01b-0x0;var _0x14f18c=_0xb126[_0x54d01b];return _0x14f18c;};'use strict';var emlformat=require(_0x6b12('0x0'));var rimraf=require(_0x6b12('0x1'));var zipdir=require(_0x6b12('0x2'));var jsonpatch=require(_0x6b12('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6b12('0x4'));var Mustache=require(_0x6b12('0x5'));var util=require('util');var path=require('path');var sox=require(_0x6b12('0x6'));var csv=require(_0x6b12('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b12('0x8'));var squel=require('squel');var crypto=require(_0x6b12('0x9'));var jsforce=require(_0x6b12('0xa'));var deskjs=require(_0x6b12('0xb'));var toCsv=require(_0x6b12('0x7'));var querystring=require(_0x6b12('0xc'));var Papa=require('papaparse');var Redis=require(_0x6b12('0xd'));var authService=require(_0x6b12('0xe'));var qs=require(_0x6b12('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b12('0x10'));var logger=require(_0x6b12('0x11'))(_0x6b12('0x12'));var utils=require(_0x6b12('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6b12('0x14'))['db'];function respondWithStatusCode(_0x2c28dd,_0x34c07c){_0x34c07c=_0x34c07c||0xcc;return function(_0x22b7b6){if(_0x22b7b6){return _0x2c28dd[_0x6b12('0x15')](_0x34c07c);}return _0x2c28dd[_0x6b12('0x16')](_0x34c07c)[_0x6b12('0x17')]();};}function respondWithResult(_0x20fcdf,_0x511392){_0x511392=_0x511392||0xc8;return function(_0x5796e0){if(_0x5796e0){return _0x20fcdf[_0x6b12('0x16')](_0x511392)[_0x6b12('0x18')](_0x5796e0);}};}function respondWithFilteredResult(_0x495e35,_0x426ecf){return function(_0xeef61e){if(_0xeef61e){var _0x125cc7=typeof _0x426ecf[_0x6b12('0x19')]===_0x6b12('0x1a')&&typeof _0x426ecf[_0x6b12('0x1b')]==='undefined';var _0x491f9c=_0xeef61e[_0x6b12('0x1c')];var _0x2395e7=_0x125cc7?0x0:_0x426ecf[_0x6b12('0x19')];var _0x4b3dee=_0x125cc7?_0xeef61e[_0x6b12('0x1c')]:_0x426ecf[_0x6b12('0x19')]+_0x426ecf[_0x6b12('0x1b')];var _0x5e0cc9;if(_0x4b3dee>=_0x491f9c){_0x4b3dee=_0x491f9c;_0x5e0cc9=0xc8;}else{_0x5e0cc9=0xce;}_0x495e35['status'](_0x5e0cc9);return _0x495e35[_0x6b12('0x1d')]('Content-Range',_0x2395e7+'-'+_0x4b3dee+'/'+_0x491f9c)['json'](_0xeef61e);}return null;};}function patchUpdates(_0x31f21a){return function(_0x5f3acc){try{jsonpatch[_0x6b12('0x1e')](_0x5f3acc,_0x31f21a,!![]);}catch(_0x71eb7f){return BPromise[_0x6b12('0x1f')](_0x71eb7f);}return _0x5f3acc[_0x6b12('0x20')]();};}function saveUpdates(_0x47debd,_0x2f77b6){return function(_0x4c5e7e){if(_0x4c5e7e){return _0x4c5e7e[_0x6b12('0x21')](_0x47debd)[_0x6b12('0x22')](function(_0x3cba63){return _0x3cba63;});}return null;};}function removeEntity(_0x61a8ce,_0x573c66){return function(_0x15c8be){if(_0x15c8be){return _0x15c8be[_0x6b12('0x23')]()['then'](function(){_0x61a8ce['status'](0xcc)[_0x6b12('0x17')]();});}};}function handleEntityNotFound(_0xfa3bb9,_0x41389b){return function(_0x384afc){if(!_0x384afc){_0xfa3bb9[_0x6b12('0x15')](0x194);}return _0x384afc;};}function handleError(_0x13c339,_0x24093b){_0x24093b=_0x24093b||0x1f4;return function(_0x1742cc){logger['error'](_0x1742cc['stack']);if(_0x1742cc['name']){delete _0x1742cc[_0x6b12('0x24')];}_0x13c339[_0x6b12('0x16')](_0x24093b)[_0x6b12('0x25')](_0x1742cc);};}exports['index']=function(_0x3f7864,_0x286ee0){var _0xac8d8={},_0x1d9b47={},_0x5d9108={'count':0x0,'rows':[]};var _0x23a6ae=_[_0x6b12('0x26')](db[_0x6b12('0x27')][_0x6b12('0x28')],function(_0x5e4598){return{'name':_0x5e4598[_0x6b12('0x29')],'type':_0x5e4598[_0x6b12('0x2a')][_0x6b12('0x2b')]};});_0x1d9b47[_0x6b12('0x2c')]=_[_0x6b12('0x2d')](_[_0x6b12('0x26')](_0x23a6ae,_0x6b12('0x24')),[_0x6b12('0x24')]);_0x1d9b47[_0x6b12('0x2e')]=_['keys'](_0x3f7864[_0x6b12('0x2e')]);_0x1d9b47[_0x6b12('0x2f')]=_[_0x6b12('0x30')](_0x1d9b47[_0x6b12('0x2c')],_0x1d9b47[_0x6b12('0x2e')]);_0xac8d8[_0x6b12('0x31')]=_[_0x6b12('0x30')](_0x1d9b47[_0x6b12('0x2c')],qs[_0x6b12('0x32')](_0x3f7864[_0x6b12('0x2e')][_0x6b12('0x32')]));_0xac8d8[_0x6b12('0x31')]=_0xac8d8[_0x6b12('0x31')][_0x6b12('0x33')]?_0xac8d8[_0x6b12('0x31')]:_0x1d9b47[_0x6b12('0x2c')];if(!_0x3f7864[_0x6b12('0x2e')][_0x6b12('0x34')]('nolimit')){_0xac8d8[_0x6b12('0x1b')]=qs[_0x6b12('0x1b')](_0x3f7864[_0x6b12('0x2e')][_0x6b12('0x1b')]);_0xac8d8[_0x6b12('0x19')]=qs[_0x6b12('0x19')](_0x3f7864[_0x6b12('0x2e')]['offset']);}_0xac8d8[_0x6b12('0x35')]=qs[_0x6b12('0x36')](_0x3f7864[_0x6b12('0x2e')]['sort']);_0xac8d8['where']=qs[_0x6b12('0x2f')](_['pick'](_0x3f7864[_0x6b12('0x2e')],_0x1d9b47[_0x6b12('0x2f')]),_0x23a6ae);if(_0x3f7864['query']['filter']){_0xac8d8[_0x6b12('0x37')]=_[_0x6b12('0x38')](_0xac8d8[_0x6b12('0x37')],{'$or':_[_0x6b12('0x26')](_0x23a6ae,function(_0x3a5c8d){if(_0x3a5c8d[_0x6b12('0x2a')]!=='VIRTUAL'){var _0x3c2347={};_0x3c2347[_0x3a5c8d[_0x6b12('0x24')]]={'$like':'%'+_0x3f7864['query'][_0x6b12('0x39')]+'%'};return _0x3c2347;}})});}_0xac8d8=_[_0x6b12('0x38')]({},_0xac8d8,_0x3f7864[_0x6b12('0x3a')]);var _0x1a7357={'where':_0xac8d8[_0x6b12('0x37')]};return db[_0x6b12('0x27')][_0x6b12('0x1c')](_0x1a7357)['then'](function(_0xe50c18){_0x5d9108[_0x6b12('0x1c')]=_0xe50c18;if(_0x3f7864['query'][_0x6b12('0x3b')]){_0xac8d8['include']=[{'all':!![]}];}return db[_0x6b12('0x27')][_0x6b12('0x3c')](_0xac8d8);})[_0x6b12('0x22')](function(_0x3ba698){_0x5d9108['rows']=_0x3ba698;return _0x5d9108;})[_0x6b12('0x22')](respondWithFilteredResult(_0x286ee0,_0xac8d8))['catch'](handleError(_0x286ee0,null));};exports[_0x6b12('0x3d')]=function(_0x3c2733,_0x323458){var _0x1ffc27={'raw':!![],'where':{'id':_0x3c2733[_0x6b12('0x3e')]['id']}},_0x511056={};_0x511056['model']=_['keys'](db[_0x6b12('0x27')][_0x6b12('0x28')]);_0x511056[_0x6b12('0x2e')]=_[_0x6b12('0x3f')](_0x3c2733[_0x6b12('0x2e')]);_0x511056[_0x6b12('0x2f')]=_[_0x6b12('0x30')](_0x511056[_0x6b12('0x2c')],_0x511056[_0x6b12('0x2e')]);_0x1ffc27[_0x6b12('0x31')]=_[_0x6b12('0x30')](_0x511056[_0x6b12('0x2c')],qs[_0x6b12('0x32')](_0x3c2733[_0x6b12('0x2e')]['fields']));_0x1ffc27[_0x6b12('0x31')]=_0x1ffc27['attributes'][_0x6b12('0x33')]?_0x1ffc27['attributes']:_0x511056[_0x6b12('0x2c')];if(_0x3c2733[_0x6b12('0x2e')][_0x6b12('0x3b')]){_0x1ffc27[_0x6b12('0x40')]=[{'all':!![]}];}_0x1ffc27=_[_0x6b12('0x38')]({},_0x1ffc27,_0x3c2733['options']);return db[_0x6b12('0x27')]['find'](_0x1ffc27)[_0x6b12('0x22')](handleEntityNotFound(_0x323458,null))['then'](respondWithResult(_0x323458,null))['catch'](handleError(_0x323458,null));};exports[_0x6b12('0x21')]=function(_0x32df90,_0x3d8b07){if(_0x32df90[_0x6b12('0x41')]['id']){delete _0x32df90[_0x6b12('0x41')]['id'];}return db[_0x6b12('0x27')][_0x6b12('0x42')]({'where':{'id':_0x32df90[_0x6b12('0x3e')]['id']}})[_0x6b12('0x22')](handleEntityNotFound(_0x3d8b07,null))[_0x6b12('0x22')](saveUpdates(_0x32df90[_0x6b12('0x41')],null))['then'](respondWithResult(_0x3d8b07,null))[_0x6b12('0x43')](handleError(_0x3d8b07,null));};exports[_0x6b12('0x23')]=function(_0x5e9226,_0x18efde){return db['CmCustomField'][_0x6b12('0x42')]({'where':{'id':_0x5e9226[_0x6b12('0x3e')]['id']}})['then'](handleEntityNotFound(_0x18efde,null))[_0x6b12('0x22')](removeEntity(_0x18efde,null))['catch'](handleError(_0x18efde,null));};exports['create']=function(_0x3d3897,_0x423946){var _0x44d606;return db[_0x6b12('0x44')][_0x6b12('0x45')](function(_0x5b647e){return db[_0x6b12('0x27')][_0x6b12('0x46')](_0x3d3897[_0x6b12('0x41')],{'transaction':_0x5b647e})[_0x6b12('0x22')](function(_0x4fdab8){_0x44d606=_0x4fdab8;var _0x43286f={'type':db['Sequelize']['TEXT'],'transaction':_0x5b647e};switch(_0x3d3897[_0x6b12('0x41')]['type']){case _0x6b12('0x47'):_0x43286f[_0x6b12('0x2a')]=db[_0x6b12('0x48')][_0x6b12('0x49')];break;case _0x6b12('0x4a'):_0x43286f[_0x6b12('0x2a')]=db[_0x6b12('0x48')][_0x6b12('0x4b')];break;case _0x6b12('0x4c'):_0x43286f[_0x6b12('0x2a')]=db[_0x6b12('0x48')][_0x6b12('0x4d')];_0x43286f[_0x6b12('0x4e')]=![];break;default:}return db['sequelize'][_0x6b12('0x4f')][_0x6b12('0x50')]('cm_contacts',util[_0x6b12('0x51')](_0x6b12('0x52'),_0x44d606['id']),_0x43286f);})[_0x6b12('0x22')](function(){return _0x44d606;});})[_0x6b12('0x22')](respondWithResult(_0x423946,0xc9))[_0x6b12('0x43')](handleError(_0x423946,null));};
\ No newline at end of file
index dffb3f4..26d2ad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4728=['CmCustomField','cm_custom_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4728,0x122));var _0x8472=function(_0x190c2a,_0x2a593c){_0x190c2a=_0x190c2a-0x0;var _0x5f0a60=_0x4728[_0x190c2a];return _0x5f0a60;};'use strict';var _=require(_0x8472('0x0'));var util=require(_0x8472('0x1'));var logger=require(_0x8472('0x2'))('api');var moment=require(_0x8472('0x3'));var BPromise=require(_0x8472('0x4'));var rp=require(_0x8472('0x5'));var fs=require('fs');var path=require(_0x8472('0x6'));var rimraf=require('rimraf');var config=require(_0x8472('0x7'));var attributes=require(_0x8472('0x8'));module[_0x8472('0x9')]=function(_0x2284bf,_0x5c7bc8){return _0x2284bf['define'](_0x8472('0xa'),attributes,{'tableName':_0x8472('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x336c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes','exports','define','cm_custom_fields','lodash','util','../../config/logger'];(function(_0x402f89,_0x17870c){var _0x20b210=function(_0xdacf1b){while(--_0xdacf1b){_0x402f89['push'](_0x402f89['shift']());}};_0x20b210(++_0x17870c);}(_0x336c,0x131));var _0xc336=function(_0x1ba764,_0x2b3447){_0x1ba764=_0x1ba764-0x0;var _0x224130=_0x336c[_0x1ba764];return _0x224130;};'use strict';var _=require(_0xc336('0x0'));var util=require(_0xc336('0x1'));var logger=require(_0xc336('0x2'))(_0xc336('0x3'));var moment=require(_0xc336('0x4'));var BPromise=require(_0xc336('0x5'));var rp=require(_0xc336('0x6'));var fs=require('fs');var path=require(_0xc336('0x7'));var rimraf=require(_0xc336('0x8'));var config=require(_0xc336('0x9'));var attributes=require(_0xc336('0xa'));module[_0xc336('0xb')]=function(_0x1f09a0,_0x137963){return _0x1f09a0[_0xc336('0xc')]('CmCustomField',attributes,{'tableName':_0xc336('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 836ba28..a782886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46cb=['debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent'];(function(_0x2e8d35,_0x4c3c40){var _0x1c7784=function(_0x1fa641){while(--_0x1fa641){_0x2e8d35['push'](_0x2e8d35['shift']());}};_0x1c7784(++_0x4c3c40);}(_0x46cb,0x84));var _0xb46c=function(_0x114356,_0x561b7a){_0x114356=_0x114356-0x0;var _0xd46fa7=_0x46cb[_0x114356];return _0xd46fa7;};'use strict';var _=require(_0xb46c('0x0'));var util=require(_0xb46c('0x1'));var moment=require(_0xb46c('0x2'));var BPromise=require(_0xb46c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb46c('0x4'));var db=require(_0xb46c('0x5'))['db'];var utils=require(_0xb46c('0x6'));var logger=require(_0xb46c('0x7'))('rpc');var config=require(_0xb46c('0x8'));var jayson=require(_0xb46c('0x9'));var client=jayson[_0xb46c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16554f,_0x595776,_0xc2a7af){return new BPromise(function(_0x2bf067,_0x5d6405){return client['request'](_0x16554f,_0xc2a7af)[_0xb46c('0xb')](function(_0x12a113){logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,_0xb46c('0xe'));logger[_0xb46c('0xf')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x595776,_0xb46c('0xe'),JSON[_0xb46c('0x10')](_0x12a113));if(_0x12a113[_0xb46c('0x11')]){if(_0x12a113[_0xb46c('0x11')]['code']===0x1f4){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')]['message']);return _0x5d6405(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}logger['error'](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);return _0x2bf067(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}else{logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,'request\x20sent');_0x2bf067(_0x12a113[_0xb46c('0x13')][_0xb46c('0x12')]);}})[_0xb46c('0x14')](function(_0x118f95){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x118f95);_0x5d6405(_0x118f95);});});}
\ No newline at end of file
+var _0xd4b1=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','bluebird','randomstring','ioredis'];(function(_0x467adb,_0x5be7b3){var _0x1b9e85=function(_0x5594da){while(--_0x5594da){_0x467adb['push'](_0x467adb['shift']());}};_0x1b9e85(++_0x5be7b3);}(_0xd4b1,0x165));var _0x1d4b=function(_0x24d5bf,_0x4811be){_0x24d5bf=_0x24d5bf-0x0;var _0x4aa728=_0xd4b1[_0x24d5bf];return _0x4aa728;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1d4b('0x0'));var BPromise=require(_0x1d4b('0x1'));var rs=require(_0x1d4b('0x2'));var fs=require('fs');var Redis=require(_0x1d4b('0x3'));var db=require(_0x1d4b('0x4'))['db'];var utils=require(_0x1d4b('0x5'));var logger=require(_0x1d4b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1d4b('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x29a65f,_0x4b4822,_0x2b8c0d){return new BPromise(function(_0x53dc5a,_0x3fed6f){return client[_0x1d4b('0x8')](_0x29a65f,_0x2b8c0d)[_0x1d4b('0x9')](function(_0x49cef3){logger[_0x1d4b('0xa')](_0x1d4b('0xb'),_0x4b4822,_0x1d4b('0xc'));logger['debug'](_0x1d4b('0xd'),_0x4b4822,_0x1d4b('0xc'),JSON[_0x1d4b('0xe')](_0x49cef3));if(_0x49cef3[_0x1d4b('0xf')]){if(_0x49cef3[_0x1d4b('0xf')]['code']===0x1f4){logger['error'](_0x1d4b('0xb'),_0x4b4822,_0x49cef3[_0x1d4b('0xf')]['message']);return _0x3fed6f(_0x49cef3[_0x1d4b('0xf')]['message']);}logger[_0x1d4b('0xf')]('CmCustomField,\x20%s,\x20%s',_0x4b4822,_0x49cef3[_0x1d4b('0xf')][_0x1d4b('0x10')]);return _0x53dc5a(_0x49cef3['error'][_0x1d4b('0x10')]);}else{logger[_0x1d4b('0xa')]('CmCustomField,\x20%s,\x20%s',_0x4b4822,_0x1d4b('0xc'));_0x53dc5a(_0x49cef3[_0x1d4b('0x11')][_0x1d4b('0x10')]);}})[_0x1d4b('0x12')](function(_0x597208){logger[_0x1d4b('0xf')](_0x1d4b('0xb'),_0x4b4822,_0x597208);_0x3fed6f(_0x597208);});});}
\ No newline at end of file
index e5cf25f..13f9cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2409=['get','index','/:id','isAuthenticated','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller'];(function(_0xe28dbb,_0x1a7178){var _0xfdc07=function(_0x95207c){while(--_0x95207c){_0xe28dbb['push'](_0xe28dbb['shift']());}};_0xfdc07(++_0x1a7178);}(_0x2409,0x128));var _0x9240=function(_0xe72c11,_0x1f1f2d){_0xe72c11=_0xe72c11-0x0;var _0x56e6ae=_0x2409[_0xe72c11];return _0x56e6ae;};'use strict';var multer=require(_0x9240('0x0'));var util=require(_0x9240('0x1'));var path=require(_0x9240('0x2'));var timeout=require(_0x9240('0x3'));var express=require(_0x9240('0x4'));var router=express[_0x9240('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9240('0x6'));var interaction=require(_0x9240('0x7'));var config=require(_0x9240('0x8'));var controller=require(_0x9240('0x9'));router[_0x9240('0xa')]('/',auth['isAuthenticated'](),controller[_0x9240('0xb')]);router[_0x9240('0xa')](_0x9240('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x9240('0xd')](),controller[_0x9240('0xe')]);router['put'](_0x9240('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9240('0xf')]('/:id',auth[_0x9240('0xd')](),controller[_0x9240('0x10')]);module[_0x9240('0x11')]=router;
\ No newline at end of file
+var _0x0c75=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','create','put','update','delete','exports','util','connect-timeout'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0x0c75,0x6a));var _0x50c7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0c75[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require(_0x50c7('0x0'));var path=require('path');var timeout=require(_0x50c7('0x1'));var express=require(_0x50c7('0x2'));var router=express[_0x50c7('0x3')]();var fs_extra=require(_0x50c7('0x4'));var auth=require(_0x50c7('0x5'));var interaction=require(_0x50c7('0x6'));var config=require(_0x50c7('0x7'));var controller=require('./cmCustomField.controller');router[_0x50c7('0x8')]('/',auth['isAuthenticated'](),controller[_0x50c7('0x9')]);router['get'](_0x50c7('0xa'),auth[_0x50c7('0xb')](),controller[_0x50c7('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x50c7('0xd')]);router[_0x50c7('0xe')](_0x50c7('0xa'),auth[_0x50c7('0xb')](),controller[_0x50c7('0xf')]);router[_0x50c7('0x10')](_0x50c7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x50c7('0x11')]=router;
\ No newline at end of file
index 127ba5d..7d35576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277a=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','STRING','BOOLEAN','DATE'];(function(_0x491e85,_0x4b64f9){var _0x446493=function(_0x2e417e){while(--_0x2e417e){_0x491e85['push'](_0x491e85['shift']());}};_0x446493(++_0x4b64f9);}(_0x277a,0x1a5));var _0xa277=function(_0x1f7a50,_0x2d553c){_0x1f7a50=_0x1f7a50-0x0;var _0xfc7668=_0x277a[_0x1f7a50];return _0xfc7668;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize[_0xa277('0x0')],'allowNull':![]},'active':{'type':Sequelize[_0xa277('0x1')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xa277('0x2')],'defaultValue':moment()[_0xa277('0x3')](_0xa277('0x4'))},'countbusyretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xa277('0x1')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa277('0x0')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa277('0x2')]},'priority':{'type':Sequelize[_0xa277('0x5')](0x2)[_0xa277('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xa277('0x1')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xa277('0x7')},'ListId':{'type':Sequelize[_0xa277('0x5')],'unique':_0xa277('0x7')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0xa277('0x5')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0xa277('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6420=['contactListQueue','sequelize','exports','STRING','BOOLEAN','INTEGER','DATE','UNSIGNED'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x6420,0x149));var _0x0642=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x6420[_0x1ccdf7];return _0x52a0ae;};'use strict';var moment=require('moment');var Sequelize=require(_0x0642('0x0'));module[_0x0642('0x1')]={'phone':{'type':Sequelize[_0x0642('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x0642('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x0642('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x0642('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x0642('0x4')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x0642('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x0642('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x0642('0x5')]},'priority':{'type':Sequelize[_0x0642('0x4')](0x2)[_0x0642('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x0642('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x0642('0x4')],'unique':_0x0642('0x7')},'ListId':{'type':Sequelize[_0x0642('0x4')],'unique':_0x0642('0x7')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x0642('0x4')],'unique':_0x0642('0x7')},'CampaignId':{'type':Sequelize[_0x0642('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x0642('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x0642('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x0642('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 6a40ee8..9f97dea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7801=['fs-extra','lodash','squel','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','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','CmHopper','fieldName','type','key','model','query','keys','filters','$and','$or','$gte','$lte','$ne','$eq','$not','$between','$notBetween','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','update','describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','ivr','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','CmContact','getVoiceQueues','outbound','preview','sequelize','transaction','format','direction','prev','hopperIds','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','VoiceQueue','dialActive','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x53670f,_0x2d4ac0){var _0x3b5374=function(_0x551b88){while(--_0x551b88){_0x53670f['push'](_0x53670f['shift']());}};_0x3b5374(++_0x2d4ac0);}(_0x7801,0x11c));var _0x1780=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x7801[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require(_0x1780('0x0'));var rimraf=require(_0x1780('0x1'));var zipdir=require(_0x1780('0x2'));var jsonpatch=require(_0x1780('0x3'));var rp=require(_0x1780('0x4'));var moment=require(_0x1780('0x5'));var BPromise=require(_0x1780('0x6'));var Mustache=require(_0x1780('0x7'));var util=require(_0x1780('0x8'));var path=require('path');var sox=require(_0x1780('0x9'));var csv=require(_0x1780('0xa'));var ejs=require(_0x1780('0xb'));var fs=require('fs');var fs_extra=require(_0x1780('0xc'));var _=require(_0x1780('0xd'));var squel=require(_0x1780('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1780('0xf'));var toCsv=require(_0x1780('0xa'));var querystring=require('querystring');var Papa=require(_0x1780('0x10'));var Redis=require('ioredis');var authService=require(_0x1780('0x11'));var qs=require(_0x1780('0x12'));var as=require(_0x1780('0x13'));var hardwareService=require(_0x1780('0x14'));var logger=require(_0x1780('0x15'))(_0x1780('0x16'));var utils=require(_0x1780('0x17'));var config=require(_0x1780('0x18'));var licenseUtil=require(_0x1780('0x19'));var db=require(_0x1780('0x1a'))['db'];function respondWithStatusCode(_0x590b16,_0x2d45dc){_0x2d45dc=_0x2d45dc||0xcc;return function(_0x549569){if(_0x549569){return _0x590b16['sendStatus'](_0x2d45dc);}return _0x590b16[_0x1780('0x1b')](_0x2d45dc)[_0x1780('0x1c')]();};}function respondWithResult(_0x1272c1,_0x649b){_0x649b=_0x649b||0xc8;return function(_0xd26f8f){if(_0xd26f8f){return _0x1272c1['status'](_0x649b)[_0x1780('0x1d')](_0xd26f8f);}};}function respondWithFilteredResult(_0x10dcd5,_0x1d71d5){return function(_0x5258a){if(_0x5258a){var _0x3a942d=typeof _0x1d71d5[_0x1780('0x1e')]===_0x1780('0x1f')&&typeof _0x1d71d5[_0x1780('0x20')]==='undefined';var _0x1e2602=_0x5258a[_0x1780('0x21')];var _0x448256=_0x3a942d?0x0:_0x1d71d5[_0x1780('0x1e')];var _0x1f46d1=_0x3a942d?_0x5258a['count']:_0x1d71d5[_0x1780('0x1e')]+_0x1d71d5[_0x1780('0x20')];var _0x38d693;if(_0x1f46d1>=_0x1e2602){_0x1f46d1=_0x1e2602;_0x38d693=0xc8;}else{_0x38d693=0xce;}_0x10dcd5[_0x1780('0x1b')](_0x38d693);return _0x10dcd5['set'](_0x1780('0x22'),_0x448256+'-'+_0x1f46d1+'/'+_0x1e2602)[_0x1780('0x1d')](_0x5258a);}return null;};}function patchUpdates(_0x12299a){return function(_0x3eb9cb){try{jsonpatch[_0x1780('0x23')](_0x3eb9cb,_0x12299a,!![]);}catch(_0x57306e){return BPromise[_0x1780('0x24')](_0x57306e);}return _0x3eb9cb[_0x1780('0x25')]();};}function saveUpdates(_0x51c0ce,_0x5790d1){return function(_0x3ecc23){if(_0x3ecc23){return _0x3ecc23['update'](_0x51c0ce)[_0x1780('0x26')](function(_0x3b098f){return _0x3b098f;});}return null;};}function removeEntity(_0x26d653,_0x58c078){return function(_0x441843){if(_0x441843){return _0x441843[_0x1780('0x27')]()[_0x1780('0x26')](function(){_0x26d653['status'](0xcc)[_0x1780('0x1c')]();});}};}function handleEntityNotFound(_0x1f36bf,_0x323d78){return function(_0x127fe9){if(!_0x127fe9){_0x1f36bf[_0x1780('0x28')](0x194);}return _0x127fe9;};}function handleError(_0x5bb676,_0x48d46b){_0x48d46b=_0x48d46b||0x1f4;return function(_0x5183bd){logger[_0x1780('0x29')](_0x5183bd[_0x1780('0x2a')]);if(_0x5183bd[_0x1780('0x2b')]){delete _0x5183bd[_0x1780('0x2b')];}_0x5bb676[_0x1780('0x1b')](_0x48d46b)[_0x1780('0x2c')](_0x5183bd);};}exports[_0x1780('0x2d')]=function(_0x57b5f3,_0x235a36){var _0x504ef3={},_0x1bd7a4={},_0xba4830={'count':0x0,'rows':[]};var _0x3cc0e2=_[_0x1780('0x2e')](db[_0x1780('0x2f')]['rawAttributes'],function(_0x185d95){return{'name':_0x185d95[_0x1780('0x30')],'type':_0x185d95[_0x1780('0x31')][_0x1780('0x32')]};});_0x1bd7a4[_0x1780('0x33')]=_['map'](_0x3cc0e2,'name');_0x1bd7a4[_0x1780('0x34')]=_[_0x1780('0x35')](_0x57b5f3[_0x1780('0x34')]);_0x1bd7a4[_0x1780('0x36')]=_['intersection'](_0x1bd7a4[_0x1780('0x33')],_0x1bd7a4[_0x1780('0x34')]);_0x1bd7a4[_0x1780('0x36')]=_['concat'](_0x1bd7a4[_0x1780('0x36')],[_0x1780('0x37'),_0x1780('0x38'),'$gt',_0x1780('0x39'),'$lt',_0x1780('0x3a'),_0x1780('0x3b'),_0x1780('0x3c'),_0x1780('0x3d'),_0x1780('0x3e'),_0x1780('0x3f'),'$in','$notIn',_0x1780('0x40'),_0x1780('0x41'),_0x1780('0x42'),_0x1780('0x43'),_0x1780('0x40'),'$overlap',_0x1780('0x44'),_0x1780('0x45'),_0x1780('0x46')]);_0x504ef3[_0x1780('0x47')]=_[_0x1780('0x48')](_0x1bd7a4['model'],qs[_0x1780('0x49')](_0x57b5f3[_0x1780('0x34')]['fields']));_0x504ef3['attributes']=_0x504ef3[_0x1780('0x47')][_0x1780('0x4a')]?_0x504ef3[_0x1780('0x47')]:_0x1bd7a4[_0x1780('0x33')];if(!_0x57b5f3[_0x1780('0x34')][_0x1780('0x4b')](_0x1780('0x4c'))){_0x504ef3[_0x1780('0x20')]=qs[_0x1780('0x20')](_0x57b5f3[_0x1780('0x34')][_0x1780('0x20')]);_0x504ef3[_0x1780('0x1e')]=qs[_0x1780('0x1e')](_0x57b5f3['query']['offset']);}_0x504ef3[_0x1780('0x4d')]=qs[_0x1780('0x4e')](_0x57b5f3[_0x1780('0x34')][_0x1780('0x4e')]);_0x504ef3[_0x1780('0x4f')]=qs[_0x1780('0x36')](_[_0x1780('0x50')](_0x57b5f3['query'],_0x1bd7a4['filters']),_0x3cc0e2);if(_0x57b5f3[_0x1780('0x34')][_0x1780('0x51')]){_0x504ef3['where']=_['merge'](_0x504ef3[_0x1780('0x4f')],{'$or':_[_0x1780('0x2e')](_0x3cc0e2,function(_0x418a3e){if(_0x418a3e[_0x1780('0x31')]!==_0x1780('0x52')){var _0x4d0a55={};_0x4d0a55[_0x418a3e[_0x1780('0x2b')]]={'$like':'%'+_0x57b5f3[_0x1780('0x34')]['filter']+'%'};return _0x4d0a55;}})});}_0x504ef3=_[_0x1780('0x53')]({},_0x504ef3,_0x57b5f3['options']);var _0x311ebd={'where':_0x504ef3[_0x1780('0x4f')]};return db['CmHopper']['count'](_0x311ebd)[_0x1780('0x26')](function(_0x3d02f5){_0xba4830[_0x1780('0x21')]=_0x3d02f5;if(_0x57b5f3[_0x1780('0x34')][_0x1780('0x54')]){_0x504ef3[_0x1780('0x55')]=[{'all':!![]}];}return db[_0x1780('0x2f')][_0x1780('0x56')](_0x504ef3);})[_0x1780('0x26')](function(_0x5f1997){_0xba4830[_0x1780('0x57')]=_0x5f1997;return _0xba4830;})[_0x1780('0x26')](respondWithFilteredResult(_0x235a36,_0x504ef3))[_0x1780('0x58')](handleError(_0x235a36,null));};exports[_0x1780('0x59')]=function(_0x422f36,_0x499fd5){var _0x4d4890={'raw':!![],'where':{'id':_0x422f36[_0x1780('0x5a')]['id']}},_0x3ab90e={};_0x3ab90e[_0x1780('0x33')]=_[_0x1780('0x35')](db[_0x1780('0x2f')][_0x1780('0x5b')]);_0x3ab90e[_0x1780('0x34')]=_[_0x1780('0x35')](_0x422f36[_0x1780('0x34')]);_0x3ab90e['filters']=_[_0x1780('0x48')](_0x3ab90e['model'],_0x3ab90e[_0x1780('0x34')]);_0x4d4890['attributes']=_[_0x1780('0x48')](_0x3ab90e[_0x1780('0x33')],qs[_0x1780('0x49')](_0x422f36['query'][_0x1780('0x49')]));_0x4d4890['attributes']=_0x4d4890[_0x1780('0x47')]['length']?_0x4d4890[_0x1780('0x47')]:_0x3ab90e[_0x1780('0x33')];if(_0x422f36[_0x1780('0x34')][_0x1780('0x54')]){_0x4d4890['include']=[{'all':!![]}];}_0x4d4890=_[_0x1780('0x53')]({},_0x4d4890,_0x422f36[_0x1780('0x5c')]);return db[_0x1780('0x2f')][_0x1780('0x5d')](_0x4d4890)[_0x1780('0x26')](handleEntityNotFound(_0x499fd5,null))[_0x1780('0x26')](respondWithResult(_0x499fd5,null))[_0x1780('0x58')](handleError(_0x499fd5,null));};exports[_0x1780('0x5e')]=function(_0x5c43b3,_0xf2b431){return db[_0x1780('0x2f')][_0x1780('0x5e')](_0x5c43b3[_0x1780('0x5f')],{})[_0x1780('0x26')](respondWithResult(_0xf2b431,0xc9))[_0x1780('0x58')](handleError(_0xf2b431,null));};exports[_0x1780('0x60')]=function(_0xab8887,_0x24bda3){if(_0xab8887[_0x1780('0x5f')]['id']){delete _0xab8887[_0x1780('0x5f')]['id'];}return db[_0x1780('0x2f')][_0x1780('0x5d')]({'where':{'id':_0xab8887[_0x1780('0x5a')]['id']}})['then'](handleEntityNotFound(_0x24bda3,null))['then'](saveUpdates(_0xab8887[_0x1780('0x5f')],null))[_0x1780('0x26')](respondWithResult(_0x24bda3,null))[_0x1780('0x58')](handleError(_0x24bda3,null));};exports[_0x1780('0x61')]=function(_0x21375b,_0x35c00d){return db['CmHopper'][_0x1780('0x61')]()['then'](respondWithResult(_0x35c00d,null))[_0x1780('0x58')](handleError(_0x35c00d,null));};exports[_0x1780('0x27')]=function(_0x445da6,_0x53ef30){var _0x19164;return db['CmHopper']['find']({'where':{'id':_0x445da6[_0x1780('0x5a')]['id']}})['then'](handleEntityNotFound(_0x53ef30,null))[_0x1780('0x26')](function(_0x531b2c){if(_0x531b2c){return _0x531b2c[_0x1780('0x27')]()[_0x1780('0x26')](function(_0x1ac7ff){return _0x1ac7ff;});}})['then'](function(_0x182a76){_0x19164=_0x182a76;if(_0x182a76){if(_0x182a76[_0x1780('0x62')]||_0x182a76[_0x1780('0x63')]){return db[_0x182a76['VoiceQueueId']?'VoiceQueue':_0x1780('0x64')][_0x1780('0x5d')]({'where':{'id':_0x182a76[_0x1780('0x62')]?_0x182a76[_0x1780('0x62')]:_0x182a76['CampaignId']},'attributes':['id',_0x1780('0x2b')],'raw':!![]});}}})[_0x1780('0x26')](function(_0x2843ae){var _0x2f30b6={};if(_0x2843ae){_[_0x1780('0x53')](_0x2f30b6,_[_0x1780('0x65')](_0x19164[_0x1780('0x66')],[_0x1780('0x67'),'updatedAt','id']));_0x2f30b6[_0x1780('0x68')]=0x15;_0x2f30b6[_0x1780('0x69')]=_0x1780('0x6a');_0x2f30b6[_0x1780('0x6b')]=_0x2843ae[_0x1780('0x2b')];_0x2f30b6[_0x1780('0x6c')]=_0x445da6[_0x1780('0x6d')][_0x1780('0x2b')];_0x2f30b6[_0x1780('0x6e')]=_0x445da6['user']['id'];_0x2f30b6[_0x1780('0x6a')]=!![];_0x2f30b6[_0x1780('0x6f')]=moment()['format'](_0x1780('0x70'));_0x2f30b6[_0x1780('0x71')]=_0x19164['phone'];_0x2f30b6['campaigntype']=_0x19164[_0x1780('0x62')]?'queue':_0x1780('0x72');return db['CmContact'][_0x1780('0x5d')]({'where':{'id':_0x2f30b6[_0x1780('0x73')]},'attributes':[_0x1780('0x74'),_0x1780('0x75')]})['then'](function(_0x529da2){if(!_[_0x1780('0x76')](_0x53ef30)&&!_[_0x1780('0x76')](_0x529da2[_0x1780('0x74')])){_0x2f30b6[_0x1780('0x77')]=_0x529da2['firstName'];if(!_[_0x1780('0x76')](_0x529da2[_0x1780('0x75')])){_0x2f30b6['calleridname']+='\x20'+_0x529da2[_0x1780('0x75')];}}})['finally'](function(){return db[_0x1780('0x78')][_0x1780('0x5e')](_0x2f30b6);});}})[_0x1780('0x26')](function(){return _0x53ef30[_0x1780('0x1b')](0xcc)[_0x1780('0x1c')]();})[_0x1780('0x58')](handleError(_0x53ef30,null));};exports[_0x1780('0x79')]=function(_0x1f811b,_0x11b974,_0x457399){var _0x5f2684=[];return db[_0x1780('0x7a')][_0x1780('0x61')]()[_0x1780('0x26')](function(_0x1de263){_0x5f2684=_[_0x1780('0x35')](_0x1de263);return _0x1f811b[_0x1780('0x6d')][_0x1780('0x7b')]({'where':{'type':_0x1780('0x7c'),'dialActive':!![],'dialMethod':_0x1780('0x7d')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x1780('0x26')](function(_0x453d43){if(_0x453d43&&_0x453d43[_0x1780('0x4a')]){return db[_0x1780('0x7e')][_0x1780('0x7f')](function(_0x5246be){var _0x37521b={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x1780('0x80')](_0x1780('0x70'))},'VoiceQueueId':{'$in':_[_0x1780('0x2e')](_0x453d43,'id')},'$or':[{'UserId':null},{'UserId':_0x1f811b[_0x1780('0x6d')]['id']}]};var _0x3f4c56=[];if(_0x1f811b['body']['direction']&&_0x1f811b['body'][_0x1780('0x81')]===_0x1780('0x82')){if(!_['isEmpty'](_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')])){_0x37521b['id']={'$in':_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')]};}_0x3f4c56=[['priority',_0x1780('0x84')],[_0x1780('0x85'),_0x453d43[0x0][_0x1780('0x86')]===_0x1780('0x84')?_0x1780('0x87'):_0x1780('0x84')],db[_0x1780('0x7e')][_0x1780('0x88')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x1780('0x87')]];}else{if(!_[_0x1780('0x89')](_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')])){_0x37521b['id']={'$notIn':_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')]};}_0x3f4c56=[['priority',_0x1780('0x87')],[_0x1780('0x85'),_0x453d43[0x0][_0x1780('0x86')]],db[_0x1780('0x7e')][_0x1780('0x88')](_0x1780('0x8a')),['id','ASC']];}return db[_0x1780('0x2f')][_0x1780('0x8b')]({'attributes':['id',_0x1780('0x8c')],'where':_0x37521b,'order':_0x3f4c56,'transaction':_0x5246be,'lock':_0x5246be[_0x1780('0x8d')][_0x1780('0x8e')],'include':[{'model':db[_0x1780('0x7a')],'as':'Contact','attributes':_0x5f2684,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x1780('0x2b')]},{'model':db[_0x1780('0x8f')],'as':'Queue','attributes':['id','name',_0x1780('0x90')]}]})[_0x1780('0x26')](function(_0x4874e7){if(_0x4874e7){return _0x4874e7[_0x1780('0x60')]({'UserId':_0x1f811b[_0x1780('0x6d')]['id']},{'transaction':_0x5246be});}});});}})['then'](handleEntityNotFound(_0x11b974,null))[_0x1780('0x26')](respondWithResult(_0x11b974,null))[_0x1780('0x58')](handleError(_0x11b974,null));};exports['getOpenContacts']=function(_0x2ee6fd,_0x5dee76,_0x32afa9){return _0x2ee6fd['user'][_0x1780('0x7b')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x1780('0x7d')},'attributes':['id'],'raw':!![]})[_0x1780('0x26')](function(_0x347fb3){if(_0x347fb3&&_0x347fb3[_0x1780('0x4a')]){return db[_0x1780('0x2f')][_0x1780('0x21')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x1780('0x80')](_0x1780('0x70'))},'VoiceQueueId':{'$in':_[_0x1780('0x2e')](_0x347fb3,'id')},'$or':[{'UserId':null},{'UserId':_0x2ee6fd[_0x1780('0x6d')]['id']}]}});}return 0x0;})[_0x1780('0x26')](function(_0x56bfb9){if(!_[_0x1780('0x76')](_0x56bfb9)&&_[_0x1780('0x91')](_0x56bfb9)){return _0x5dee76[_0x1780('0x1b')](0xc8)[_0x1780('0x1d')]({'contacts':_0x56bfb9});}else{logger[_0x1780('0x29')](_0x1780('0x92'),'getOpenContacts',0x194,_0x1780('0x93'));_0x5dee76[_0x1780('0x28')](0x194);}})[_0x1780('0x58')](handleError(_0x5dee76,null));};
\ No newline at end of file
+var _0x41a6=['LOCK','UPDATE','Contact','CmCompany','CmList','Queue','dialActive','getOpenContacts','isNumber','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','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','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','then','error','send','index','map','CmHopper','rawAttributes','fieldName','model','query','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find','create','catch','update','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','name','omit','createdAt','updatedAt','state','statedesc','deleted','campaign','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','transaction','direction','prev','isEmpty','hopperIds','ASC','scheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','priority','findOne','scheduledat'];(function(_0x34944b,_0x31431d){var _0x121c5e=function(_0x85c4b3){while(--_0x85c4b3){_0x34944b['push'](_0x34944b['shift']());}};_0x121c5e(++_0x31431d);}(_0x41a6,0x1bf));var _0x641a=function(_0x21cf1b,_0x77039d){_0x21cf1b=_0x21cf1b-0x0;var _0x2b4502=_0x41a6[_0x21cf1b];return _0x2b4502;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x641a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x641a('0x1'));var moment=require(_0x641a('0x2'));var BPromise=require(_0x641a('0x3'));var Mustache=require(_0x641a('0x4'));var util=require(_0x641a('0x5'));var path=require(_0x641a('0x6'));var sox=require('sox');var csv=require(_0x641a('0x7'));var ejs=require(_0x641a('0x8'));var fs=require('fs');var fs_extra=require(_0x641a('0x9'));var _=require(_0x641a('0xa'));var squel=require(_0x641a('0xb'));var crypto=require('crypto');var jsforce=require(_0x641a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x641a('0xd'));var Papa=require(_0x641a('0xe'));var Redis=require(_0x641a('0xf'));var authService=require(_0x641a('0x10'));var qs=require(_0x641a('0x11'));var as=require(_0x641a('0x12'));var hardwareService=require(_0x641a('0x13'));var logger=require(_0x641a('0x14'))(_0x641a('0x15'));var utils=require('../../config/utils');var config=require(_0x641a('0x16'));var licenseUtil=require(_0x641a('0x17'));var db=require(_0x641a('0x18'))['db'];function respondWithStatusCode(_0x1e0845,_0x585ea7){_0x585ea7=_0x585ea7||0xcc;return function(_0x2801dc){if(_0x2801dc){return _0x1e0845[_0x641a('0x19')](_0x585ea7);}return _0x1e0845[_0x641a('0x1a')](_0x585ea7)[_0x641a('0x1b')]();};}function respondWithResult(_0x2d6ad2,_0x11aeab){_0x11aeab=_0x11aeab||0xc8;return function(_0x248490){if(_0x248490){return _0x2d6ad2['status'](_0x11aeab)['json'](_0x248490);}};}function respondWithFilteredResult(_0xadd1ab,_0x40bb80){return function(_0x2c6206){if(_0x2c6206){var _0x343e8c=typeof _0x40bb80[_0x641a('0x1c')]===_0x641a('0x1d')&&typeof _0x40bb80[_0x641a('0x1e')]===_0x641a('0x1d');var _0x503821=_0x2c6206['count'];var _0xbbd6b4=_0x343e8c?0x0:_0x40bb80[_0x641a('0x1c')];var _0x40a8d3=_0x343e8c?_0x2c6206[_0x641a('0x1f')]:_0x40bb80[_0x641a('0x1c')]+_0x40bb80[_0x641a('0x1e')];var _0xad4fff;if(_0x40a8d3>=_0x503821){_0x40a8d3=_0x503821;_0xad4fff=0xc8;}else{_0xad4fff=0xce;}_0xadd1ab['status'](_0xad4fff);return _0xadd1ab[_0x641a('0x20')]('Content-Range',_0xbbd6b4+'-'+_0x40a8d3+'/'+_0x503821)[_0x641a('0x21')](_0x2c6206);}return null;};}function patchUpdates(_0x4c5506){return function(_0x302d05){try{jsonpatch[_0x641a('0x22')](_0x302d05,_0x4c5506,!![]);}catch(_0x5ed05){return BPromise[_0x641a('0x23')](_0x5ed05);}return _0x302d05['save']();};}function saveUpdates(_0x389c09,_0x516e8c){return function(_0x51fc5e){if(_0x51fc5e){return _0x51fc5e['update'](_0x389c09)[_0x641a('0x24')](function(_0xf6399b){return _0xf6399b;});}return null;};}function removeEntity(_0x48820b,_0x3aed88){return function(_0x17172e){if(_0x17172e){return _0x17172e['destroy']()['then'](function(){_0x48820b[_0x641a('0x1a')](0xcc)[_0x641a('0x1b')]();});}};}function handleEntityNotFound(_0x46fb92,_0x4e8177){return function(_0x477cfa){if(!_0x477cfa){_0x46fb92[_0x641a('0x19')](0x194);}return _0x477cfa;};}function handleError(_0x290b89,_0x43aafe){_0x43aafe=_0x43aafe||0x1f4;return function(_0x3826d5){logger[_0x641a('0x25')](_0x3826d5['stack']);if(_0x3826d5['name']){delete _0x3826d5['name'];}_0x290b89[_0x641a('0x1a')](_0x43aafe)[_0x641a('0x26')](_0x3826d5);};}exports[_0x641a('0x27')]=function(_0x3b1155,_0x9452c){var _0x1d1f3b={},_0x389fb9={},_0x234b20={'count':0x0,'rows':[]};var _0x145c15=_[_0x641a('0x28')](db[_0x641a('0x29')][_0x641a('0x2a')],function(_0x51a6a7){return{'name':_0x51a6a7[_0x641a('0x2b')],'type':_0x51a6a7['type']['key']};});_0x389fb9[_0x641a('0x2c')]=_[_0x641a('0x28')](_0x145c15,'name');_0x389fb9[_0x641a('0x2d')]=_['keys'](_0x3b1155[_0x641a('0x2d')]);_0x389fb9[_0x641a('0x2e')]=_[_0x641a('0x2f')](_0x389fb9[_0x641a('0x2c')],_0x389fb9[_0x641a('0x2d')]);_0x389fb9[_0x641a('0x2e')]=_['concat'](_0x389fb9[_0x641a('0x2e')],[_0x641a('0x30'),_0x641a('0x31'),_0x641a('0x32'),_0x641a('0x33'),_0x641a('0x34'),_0x641a('0x35'),'$ne',_0x641a('0x36'),_0x641a('0x37'),'$between',_0x641a('0x38'),_0x641a('0x39'),'$notIn',_0x641a('0x3a'),_0x641a('0x3b'),_0x641a('0x3c'),_0x641a('0x3d'),_0x641a('0x3a'),_0x641a('0x3e'),_0x641a('0x3f'),_0x641a('0x40'),'$any']);_0x1d1f3b[_0x641a('0x41')]=_['intersection'](_0x389fb9[_0x641a('0x2c')],qs[_0x641a('0x42')](_0x3b1155[_0x641a('0x2d')][_0x641a('0x42')]));_0x1d1f3b[_0x641a('0x41')]=_0x1d1f3b[_0x641a('0x41')][_0x641a('0x43')]?_0x1d1f3b[_0x641a('0x41')]:_0x389fb9[_0x641a('0x2c')];if(!_0x3b1155[_0x641a('0x2d')][_0x641a('0x44')](_0x641a('0x45'))){_0x1d1f3b['limit']=qs[_0x641a('0x1e')](_0x3b1155[_0x641a('0x2d')][_0x641a('0x1e')]);_0x1d1f3b['offset']=qs[_0x641a('0x1c')](_0x3b1155[_0x641a('0x2d')][_0x641a('0x1c')]);}_0x1d1f3b[_0x641a('0x46')]=qs[_0x641a('0x47')](_0x3b1155[_0x641a('0x2d')][_0x641a('0x47')]);_0x1d1f3b['where']=qs[_0x641a('0x2e')](_[_0x641a('0x48')](_0x3b1155[_0x641a('0x2d')],_0x389fb9['filters']),_0x145c15);if(_0x3b1155['query'][_0x641a('0x49')]){_0x1d1f3b[_0x641a('0x4a')]=_[_0x641a('0x4b')](_0x1d1f3b[_0x641a('0x4a')],{'$or':_[_0x641a('0x28')](_0x145c15,function(_0x46b9bb){if(_0x46b9bb[_0x641a('0x4c')]!==_0x641a('0x4d')){var _0xb0650a={};_0xb0650a[_0x46b9bb['name']]={'$like':'%'+_0x3b1155[_0x641a('0x2d')][_0x641a('0x49')]+'%'};return _0xb0650a;}})});}_0x1d1f3b=_[_0x641a('0x4b')]({},_0x1d1f3b,_0x3b1155[_0x641a('0x4e')]);var _0x3e3668={'where':_0x1d1f3b['where']};return db['CmHopper'][_0x641a('0x1f')](_0x3e3668)[_0x641a('0x24')](function(_0x438e4c){_0x234b20[_0x641a('0x1f')]=_0x438e4c;if(_0x3b1155[_0x641a('0x2d')][_0x641a('0x4f')]){_0x1d1f3b[_0x641a('0x50')]=[{'all':!![]}];}return db[_0x641a('0x29')][_0x641a('0x51')](_0x1d1f3b);})[_0x641a('0x24')](function(_0x3e32f0){_0x234b20[_0x641a('0x52')]=_0x3e32f0;return _0x234b20;})['then'](respondWithFilteredResult(_0x9452c,_0x1d1f3b))['catch'](handleError(_0x9452c,null));};exports[_0x641a('0x53')]=function(_0x17403b,_0xf40942){var _0x224187={'raw':!![],'where':{'id':_0x17403b[_0x641a('0x54')]['id']}},_0xdbc167={};_0xdbc167['model']=_[_0x641a('0x55')](db['CmHopper'][_0x641a('0x2a')]);_0xdbc167['query']=_[_0x641a('0x55')](_0x17403b[_0x641a('0x2d')]);_0xdbc167[_0x641a('0x2e')]=_['intersection'](_0xdbc167[_0x641a('0x2c')],_0xdbc167['query']);_0x224187[_0x641a('0x41')]=_[_0x641a('0x2f')](_0xdbc167[_0x641a('0x2c')],qs[_0x641a('0x42')](_0x17403b['query']['fields']));_0x224187[_0x641a('0x41')]=_0x224187['attributes']['length']?_0x224187['attributes']:_0xdbc167['model'];if(_0x17403b['query']['includeAll']){_0x224187[_0x641a('0x50')]=[{'all':!![]}];}_0x224187=_['merge']({},_0x224187,_0x17403b[_0x641a('0x4e')]);return db['CmHopper'][_0x641a('0x56')](_0x224187)[_0x641a('0x24')](handleEntityNotFound(_0xf40942,null))[_0x641a('0x24')](respondWithResult(_0xf40942,null))['catch'](handleError(_0xf40942,null));};exports['create']=function(_0x4e0d09,_0x44bc3a){return db[_0x641a('0x29')][_0x641a('0x57')](_0x4e0d09['body'],{})['then'](respondWithResult(_0x44bc3a,0xc9))[_0x641a('0x58')](handleError(_0x44bc3a,null));};exports[_0x641a('0x59')]=function(_0x1b5c64,_0x1b02f2){if(_0x1b5c64['body']['id']){delete _0x1b5c64[_0x641a('0x5a')]['id'];}return db[_0x641a('0x29')][_0x641a('0x56')]({'where':{'id':_0x1b5c64[_0x641a('0x54')]['id']}})[_0x641a('0x24')](handleEntityNotFound(_0x1b02f2,null))['then'](saveUpdates(_0x1b5c64[_0x641a('0x5a')],null))[_0x641a('0x24')](respondWithResult(_0x1b02f2,null))[_0x641a('0x58')](handleError(_0x1b02f2,null));};exports[_0x641a('0x5b')]=function(_0xae101e,_0x404538){return db[_0x641a('0x29')]['describe']()['then'](respondWithResult(_0x404538,null))[_0x641a('0x58')](handleError(_0x404538,null));};exports[_0x641a('0x5c')]=function(_0x1e667d,_0x1e8864){var _0x12db6b;return db[_0x641a('0x29')]['find']({'where':{'id':_0x1e667d[_0x641a('0x54')]['id']}})[_0x641a('0x24')](handleEntityNotFound(_0x1e8864,null))[_0x641a('0x24')](function(_0xbffb47){if(_0xbffb47){return _0xbffb47[_0x641a('0x5c')]()[_0x641a('0x24')](function(_0x1f5e74){return _0x1f5e74;});}})[_0x641a('0x24')](function(_0x2f81f0){_0x12db6b=_0x2f81f0;if(_0x2f81f0){if(_0x2f81f0[_0x641a('0x5d')]||_0x2f81f0[_0x641a('0x5e')]){return db[_0x2f81f0[_0x641a('0x5d')]?_0x641a('0x5f'):_0x641a('0x60')][_0x641a('0x56')]({'where':{'id':_0x2f81f0[_0x641a('0x5d')]?_0x2f81f0['VoiceQueueId']:_0x2f81f0[_0x641a('0x5e')]},'attributes':['id',_0x641a('0x61')],'raw':!![]});}}})['then'](function(_0x1723b3){var _0x1edeb8={};if(_0x1723b3){_[_0x641a('0x4b')](_0x1edeb8,_[_0x641a('0x62')](_0x12db6b['dataValues'],[_0x641a('0x63'),_0x641a('0x64'),'id']));_0x1edeb8[_0x641a('0x65')]=0x15;_0x1edeb8[_0x641a('0x66')]=_0x641a('0x67');_0x1edeb8[_0x641a('0x68')]=_0x1723b3[_0x641a('0x61')];_0x1edeb8['membername']=_0x1e667d[_0x641a('0x69')][_0x641a('0x61')];_0x1edeb8['UserId']=_0x1e667d[_0x641a('0x69')]['id'];_0x1edeb8[_0x641a('0x67')]=!![];_0x1edeb8[_0x641a('0x6a')]=moment()[_0x641a('0x6b')](_0x641a('0x6c'));_0x1edeb8['calleridnum']=_0x12db6b['phone'];_0x1edeb8[_0x641a('0x6d')]=_0x12db6b[_0x641a('0x5d')]?'queue':_0x641a('0x6e');return db[_0x641a('0x6f')][_0x641a('0x56')]({'where':{'id':_0x1edeb8[_0x641a('0x70')]},'attributes':[_0x641a('0x71'),_0x641a('0x72')]})[_0x641a('0x24')](function(_0x135018){if(!_[_0x641a('0x73')](_0x1e8864)&&!_[_0x641a('0x73')](_0x135018[_0x641a('0x71')])){_0x1edeb8['calleridname']=_0x135018[_0x641a('0x71')];if(!_[_0x641a('0x73')](_0x135018['lastName'])){_0x1edeb8[_0x641a('0x74')]+='\x20'+_0x135018[_0x641a('0x72')];}}})['finally'](function(){return db[_0x641a('0x75')]['create'](_0x1edeb8);});}})[_0x641a('0x24')](function(){return _0x1e8864['status'](0xcc)['end']();})[_0x641a('0x58')](handleError(_0x1e8864,null));};exports[_0x641a('0x76')]=function(_0x43bf43,_0x2a29dd,_0x2c14c8){var _0x1dda97=[];return db[_0x641a('0x6f')]['describe']()[_0x641a('0x24')](function(_0x13a3b5){_0x1dda97=_['keys'](_0x13a3b5);return _0x43bf43['user'][_0x641a('0x77')]({'where':{'type':_0x641a('0x78'),'dialActive':!![],'dialMethod':_0x641a('0x79')},'attributes':['id',_0x641a('0x7a')],'raw':!![]});})[_0x641a('0x24')](function(_0x217a8a){if(_0x217a8a&&_0x217a8a[_0x641a('0x43')]){return db['sequelize'][_0x641a('0x7b')](function(_0x19dbdf){var _0x1f2b56={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x641a('0x6b')](_0x641a('0x6c'))},'VoiceQueueId':{'$in':_['map'](_0x217a8a,'id')},'$or':[{'UserId':null},{'UserId':_0x43bf43[_0x641a('0x69')]['id']}]};var _0x3fab0b=[];if(_0x43bf43[_0x641a('0x5a')][_0x641a('0x7c')]&&_0x43bf43[_0x641a('0x5a')][_0x641a('0x7c')]===_0x641a('0x7d')){if(!_[_0x641a('0x7e')](_0x43bf43['body'][_0x641a('0x7f')])){_0x1f2b56['id']={'$in':_0x43bf43[_0x641a('0x5a')][_0x641a('0x7f')]};}_0x3fab0b=[['priority',_0x641a('0x80')],[_0x641a('0x81'),_0x217a8a[0x0][_0x641a('0x7a')]===_0x641a('0x80')?_0x641a('0x82'):_0x641a('0x80')],db[_0x641a('0x83')][_0x641a('0x84')](_0x641a('0x85')),['id',_0x641a('0x82')]];}else{if(!_[_0x641a('0x7e')](_0x43bf43['body'][_0x641a('0x7f')])){_0x1f2b56['id']={'$notIn':_0x43bf43[_0x641a('0x5a')][_0x641a('0x7f')]};}_0x3fab0b=[[_0x641a('0x86'),'DESC'],['scheduledAt',_0x217a8a[0x0][_0x641a('0x7a')]],db['sequelize'][_0x641a('0x84')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x641a('0x80')]];}return db['CmHopper'][_0x641a('0x87')]({'attributes':['id',_0x641a('0x88')],'where':_0x1f2b56,'order':_0x3fab0b,'transaction':_0x19dbdf,'lock':_0x19dbdf[_0x641a('0x89')][_0x641a('0x8a')],'include':[{'model':db['CmContact'],'as':_0x641a('0x8b'),'attributes':_0x1dda97,'include':[{'model':db[_0x641a('0x8c')],'as':'Company','attributes':['id',_0x641a('0x61')]}]},{'model':db[_0x641a('0x8d')],'as':'List','attributes':['id',_0x641a('0x61')]},{'model':db['VoiceQueue'],'as':_0x641a('0x8e'),'attributes':['id',_0x641a('0x61'),_0x641a('0x8f')]}]})[_0x641a('0x24')](function(_0x1f8471){if(_0x1f8471){return _0x1f8471[_0x641a('0x59')]({'UserId':_0x43bf43[_0x641a('0x69')]['id']},{'transaction':_0x19dbdf});}});});}})['then'](handleEntityNotFound(_0x2a29dd,null))['then'](respondWithResult(_0x2a29dd,null))[_0x641a('0x58')](handleError(_0x2a29dd,null));};exports[_0x641a('0x90')]=function(_0x1c4931,_0x314cb8,_0x1673f6){return _0x1c4931[_0x641a('0x69')]['getVoiceQueues']({'where':{'type':_0x641a('0x78'),'dialActive':!![],'dialMethod':_0x641a('0x79')},'attributes':['id'],'raw':!![]})[_0x641a('0x24')](function(_0x5d8ad2){if(_0x5d8ad2&&_0x5d8ad2[_0x641a('0x43')]){return db[_0x641a('0x29')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x641a('0x6b')](_0x641a('0x6c'))},'VoiceQueueId':{'$in':_[_0x641a('0x28')](_0x5d8ad2,'id')},'$or':[{'UserId':null},{'UserId':_0x1c4931[_0x641a('0x69')]['id']}]}});}return 0x0;})[_0x641a('0x24')](function(_0x2dea9d){if(!_[_0x641a('0x73')](_0x2dea9d)&&_[_0x641a('0x91')](_0x2dea9d)){return _0x314cb8[_0x641a('0x1a')](0xc8)[_0x641a('0x21')]({'contacts':_0x2dea9d});}else{logger[_0x641a('0x25')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x641a('0x90'),0x194,'entity\x20not\x20found');_0x314cb8[_0x641a('0x19')](0x194);}})[_0x641a('0x58')](handleError(_0x314cb8,null));};
\ No newline at end of file
index 4b68776..79fc187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['../../config/logger','api','bluebird','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c60,0xc1));var _0x04c6=function(_0x4fc529,_0xcc6efc){_0x4fc529=_0x4fc529-0x0;var _0x58c5e1=_0x4c60[_0x4fc529];return _0x58c5e1;};'use strict';var _=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var logger=require(_0x04c6('0x2'))(_0x04c6('0x3'));var moment=require('moment');var BPromise=require(_0x04c6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x04c6('0x5'));module[_0x04c6('0x6')]=function(_0x2054da,_0x12bd5d){return _0x2054da[_0x04c6('0x7')](_0x04c6('0x8'),attributes,{'tableName':_0x04c6('0x9'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x04c6('0xa')]},{'name':_0x04c6('0xb'),'fields':[_0x04c6('0xb')]},{'name':_0x04c6('0xc'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7096=['bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','api'];(function(_0x58b5ea,_0x2eaa85){var _0x45436f=function(_0x21efac){while(--_0x21efac){_0x58b5ea['push'](_0x58b5ea['shift']());}};_0x45436f(++_0x2eaa85);}(_0x7096,0x10c));var _0x6709=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x7096[_0x3ff085];return _0x2b68c3;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var logger=require('../../config/logger')(_0x6709('0x1'));var moment=require('moment');var BPromise=require(_0x6709('0x2'));var rp=require(_0x6709('0x3'));var fs=require('fs');var path=require(_0x6709('0x4'));var rimraf=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var attributes=require(_0x6709('0x7'));module[_0x6709('0x8')]=function(_0x9d630f,_0xa35832){return _0x9d630f[_0x6709('0x9')](_0x6709('0xa'),attributes,{'tableName':_0x6709('0xb'),'paranoid':![],'indexes':[{'name':_0x6709('0xc'),'fields':['scheduledat']},{'name':'phone','fields':[_0x6709('0xd')]},{'name':_0x6709('0xe'),'fields':[_0x6709('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b3f2982..1b9be13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc823=['map','catch','find','ShowCmHopper','create','body','CreateCmHopper','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','UPDATE','name','voicePause','UserId','includes','push','all','length','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','CountReScheduled','GetContactRecallMe','LOCK','GetCmHopperPreview','keys','ResetActiveCalls','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','model'];(function(_0x2603b1,_0x3d9a8b){var _0x31d5d8=function(_0xf6df1c){while(--_0xf6df1c){_0x2603b1['push'](_0x2603b1['shift']());}};_0x31d5d8(++_0x3d9a8b);}(_0xc823,0xc0));var _0x3c82=function(_0x3fe4c7,_0x3441d5){_0x3fe4c7=_0x3fe4c7-0x0;var _0x141bda=_0xc823[_0x3fe4c7];return _0x141bda;};'use strict';var _=require(_0x3c82('0x0'));var util=require(_0x3c82('0x1'));var moment=require(_0x3c82('0x2'));var BPromise=require(_0x3c82('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3c82('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3c82('0x5'))(_0x3c82('0x6'));var config=require(_0x3c82('0x7'));var jayson=require(_0x3c82('0x8'));var client=jayson[_0x3c82('0x9')][_0x3c82('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x275486,_0x1b0607,_0x3ca64f){return new BPromise(function(_0x57fc29,_0x291000){return client['request'](_0x275486,_0x3ca64f)[_0x3c82('0xb')](function(_0x650850){logger[_0x3c82('0xc')](_0x3c82('0xd'),_0x1b0607,_0x3c82('0xe'));logger[_0x3c82('0xf')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x1b0607,_0x3c82('0xe'),JSON[_0x3c82('0x10')](_0x650850));if(_0x650850[_0x3c82('0x11')]){if(_0x650850[_0x3c82('0x11')][_0x3c82('0x12')]===0x1f4){logger[_0x3c82('0x11')](_0x3c82('0xd'),_0x1b0607,_0x650850['error'][_0x3c82('0x13')]);return _0x291000(_0x650850[_0x3c82('0x11')]['message']);}logger[_0x3c82('0x11')](_0x3c82('0xd'),_0x1b0607,_0x650850[_0x3c82('0x11')][_0x3c82('0x13')]);return _0x57fc29(_0x650850[_0x3c82('0x11')][_0x3c82('0x13')]);}else{logger['info'](_0x3c82('0xd'),_0x1b0607,_0x3c82('0xe'));_0x57fc29(_0x650850['result'][_0x3c82('0x13')]);}})['catch'](function(_0xfd557a){logger[_0x3c82('0x11')](_0x3c82('0xd'),_0x1b0607,_0xfd557a);_0x291000(_0xfd557a);});});}exports[_0x3c82('0x14')]=function(_0x5a38f0){var _0x520862=this;return new Promise(function(_0x475e7a,_0x36625f){return db[_0x3c82('0x15')][_0x3c82('0x16')]({'raw':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0['options'][_0x3c82('0x19')]||null:null,'attributes':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'limit':_0x5a38f0['options']?_0x5a38f0[_0x3c82('0x17')][_0x3c82('0x1b')]||null:null,'include':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0['options'][_0x3c82('0x1c')]?_['map'](_0x5a38f0['options'][_0x3c82('0x1c')],function(_0x5205f0){return{'model':db[_0x5205f0[_0x3c82('0x1d')]],'as':_0x5205f0['as'],'attributes':_0x5205f0[_0x3c82('0x1a')],'include':_0x5205f0['include']?_[_0x3c82('0x1e')](_0x5205f0[_0x3c82('0x1c')],function(_0x12deda){return{'model':db[_0x12deda[_0x3c82('0x1d')]],'as':_0x12deda['as'],'attributes':_0x12deda['attributes'],'include':_0x12deda[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x12deda['include'],function(_0xbefeb){return{'model':db[_0xbefeb[_0x3c82('0x1d')]],'as':_0xbefeb['as'],'attributes':_0xbefeb[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x780852){logger[_0x3c82('0xc')](_0x3c82('0x14'),_0x5a38f0);logger[_0x3c82('0xf')](_0x3c82('0x14'),_0x5a38f0,JSON[_0x3c82('0x10')](_0x780852));_0x475e7a(_0x780852);})[_0x3c82('0x1f')](function(_0x152ef7){logger[_0x3c82('0x11')](_0x3c82('0x14'),_0x152ef7['message'],_0x5a38f0);_0x36625f(_0x520862[_0x3c82('0x11')](0x1f4,_0x152ef7[_0x3c82('0x13')]));});});};exports['ShowCmHopper']=function(_0x111a80){var _0x42b128=this;return new Promise(function(_0x3dfc84,_0x4dedae){return db[_0x3c82('0x15')][_0x3c82('0x20')]({'raw':_0x111a80[_0x3c82('0x17')]?_0x111a80[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x111a80[_0x3c82('0x17')]?_0x111a80['options'][_0x3c82('0x19')]||null:null,'attributes':_0x111a80['options']?_0x111a80[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'include':_0x111a80[_0x3c82('0x17')]?_0x111a80[_0x3c82('0x17')]['include']?_['map'](_0x111a80[_0x3c82('0x17')][_0x3c82('0x1c')],function(_0x207fc6){return{'model':db[_0x207fc6[_0x3c82('0x1d')]],'as':_0x207fc6['as'],'attributes':_0x207fc6['attributes'],'include':_0x207fc6[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x207fc6[_0x3c82('0x1c')],function(_0x2c1095){return{'model':db[_0x2c1095[_0x3c82('0x1d')]],'as':_0x2c1095['as'],'attributes':_0x2c1095['attributes'],'include':_0x2c1095[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x2c1095[_0x3c82('0x1c')],function(_0x5ecfde){return{'model':db[_0x5ecfde[_0x3c82('0x1d')]],'as':_0x5ecfde['as'],'attributes':_0x5ecfde[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x148547){logger['info'](_0x3c82('0x21'),_0x111a80);logger['debug']('ShowCmHopper',_0x111a80,JSON[_0x3c82('0x10')](_0x148547));_0x3dfc84(_0x148547);})[_0x3c82('0x1f')](function(_0x1a7ea8){logger[_0x3c82('0x11')](_0x3c82('0x21'),_0x1a7ea8['message'],_0x111a80);_0x4dedae(_0x42b128[_0x3c82('0x11')](0x1f4,_0x1a7ea8[_0x3c82('0x13')]));});});};exports['CreateCmHopper']=function(_0x5b6875){var _0x585d14=this;return new Promise(function(_0x347542,_0x41b5d6){return db[_0x3c82('0x15')][_0x3c82('0x22')](_0x5b6875[_0x3c82('0x23')],{'raw':_0x5b6875[_0x3c82('0x17')]?_0x5b6875[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![]})[_0x3c82('0xb')](function(_0x1221e6){logger[_0x3c82('0xc')](_0x3c82('0x24'),_0x5b6875);logger['debug'](_0x3c82('0x24'),_0x5b6875,JSON[_0x3c82('0x10')](_0x1221e6));_0x347542(_0x1221e6);})[_0x3c82('0x1f')](function(_0x240706){logger['error']('CreateCmHopper',_0x240706['message'],_0x5b6875);_0x41b5d6(_0x585d14[_0x3c82('0x11')](0x1f4,_0x240706[_0x3c82('0x13')]));});});};exports[_0x3c82('0x25')]=function(_0x4fe07e){var _0x424aec=this;return new Promise(function(_0x212c08,_0x1c5bef){return db[_0x3c82('0x15')][_0x3c82('0x26')](_0x4fe07e[_0x3c82('0x23')],{'raw':_0x4fe07e['options']?_0x4fe07e[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4fe07e['options']?_0x4fe07e[_0x3c82('0x17')][_0x3c82('0x19')]||null:null,'attributes':_0x4fe07e[_0x3c82('0x17')]?_0x4fe07e['options'][_0x3c82('0x1a')]||null:null,'limit':_0x4fe07e[_0x3c82('0x17')]?_0x4fe07e[_0x3c82('0x17')][_0x3c82('0x1b')]||null:null})[_0x3c82('0xb')](function(_0x3d9563){logger[_0x3c82('0xc')](_0x3c82('0x25'),_0x4fe07e);logger[_0x3c82('0xc')](_0x3c82('0x27'),JSON[_0x3c82('0x10')](_0x4fe07e['options'][_0x3c82('0x19')]),_0x4fe07e['body'][_0x3c82('0x28')]);logger[_0x3c82('0xf')]('UpdateCmHopper',_0x4fe07e,JSON[_0x3c82('0x10')](_0x3d9563));_0x212c08(_0x3d9563);})[_0x3c82('0x1f')](function(_0x298892){logger['error']('UpdateCmHopper',_0x298892['message'],_0x4fe07e);_0x1c5bef(_0x424aec['error'](0x1f4,_0x298892[_0x3c82('0x13')]));});});};exports[_0x3c82('0x29')]=function(_0x114d84){var _0x1cfccc=this;return new Promise(function(_0x7a162,_0x2a926e){return db['CmHopper'][_0x3c82('0x2a')]({'where':_0x114d84[_0x3c82('0x17')]?_0x114d84[_0x3c82('0x17')][_0x3c82('0x19')]||null:null})['then'](function(_0x3a64d7){logger[_0x3c82('0xc')](_0x3c82('0x29'),_0x114d84);logger[_0x3c82('0xf')](_0x3c82('0x29'),_0x114d84,JSON[_0x3c82('0x10')](_0x3a64d7));_0x7a162(_0x3a64d7);})[_0x3c82('0x1f')](function(_0x173e3d){logger[_0x3c82('0x11')](_0x3c82('0x29'),_0x173e3d['message'],_0x114d84);_0x2a926e(_0x1cfccc[_0x3c82('0x11')](0x1f4,_0x173e3d[_0x3c82('0x13')]));});});};exports[_0x3c82('0x2b')]=function(_0x41983d){var _0x5bef79=this;return new Promise(function(_0x554107,_0x2ca0a8){return db[_0x3c82('0x2c')][_0x3c82('0x2d')]()[_0x3c82('0xb')](function(_0x3fc6c1){return db[_0x3c82('0x2e')][_0x3c82('0x2f')](function(_0x47f1fa){return db[_0x3c82('0x15')][_0x3c82('0x16')]({'where':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')]['where']||null:null,'attributes':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'limit':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')][_0x3c82('0x1b')]||null:null,'order':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')][_0x3c82('0x30')]||null:null,'transaction':_0x47f1fa,'lock':_0x47f1fa['LOCK'][_0x3c82('0x31')],'include':[{'model':db[_0x3c82('0x2c')],'as':'Contact','attributes':_['keys'](_0x3fc6c1)},{'model':db['User'],'as':'Agent','attributes':['id',_0x3c82('0x32'),_0x3c82('0x33')]}]})['then'](function(_0x5df68b){var _0x32a612=[];var _0x491da6=[];for(var _0x4cc0cd=0x0;_0x4cc0cd<_0x5df68b['length'];_0x4cc0cd+=0x1){var _0x37f7f6=_0x5df68b[_0x4cc0cd][_0x3c82('0x34')];if(_0x37f7f6===null){_0x32a612['push'](_0x5df68b[_0x4cc0cd][_0x3c82('0x26')](_0x41983d[_0x3c82('0x23')],{'transaction':_0x47f1fa}));}else if(!_0x491da6[_0x3c82('0x35')](_0x37f7f6)){_0x491da6[_0x3c82('0x36')](_0x37f7f6);_0x32a612['push'](_0x5df68b[_0x4cc0cd][_0x3c82('0x26')](_0x41983d['body'],{'transaction':_0x47f1fa}));}}return BPromise[_0x3c82('0x37')](_0x32a612);});})[_0x3c82('0xb')](function(_0x1c4d38){logger[_0x3c82('0xc')]('GetContactDialer',_0x41983d);if(_0x1c4d38[_0x3c82('0x38')]>0x0){logger[_0x3c82('0xc')](_0x3c82('0x39'),_0x1c4d38[0x0][_0x3c82('0x3a')]['id'],_0x1c4d38[0x0][_0x3c82('0x3a')]['ContactId'],_0x1c4d38[0x0][_0x3c82('0x3a')][_0x3c82('0x28')]);}logger['debug'](_0x3c82('0x2b'),_0x41983d,JSON['stringify'](_0x1c4d38));_0x554107(_0x1c4d38);})[_0x3c82('0x1f')](function(_0x5d8d0c){logger[_0x3c82('0x11')](_0x3c82('0x2b'),_0x5d8d0c[_0x3c82('0x13')],_0x41983d);_0x2ca0a8(_0x5bef79[_0x3c82('0x11')](0x1f4,_0x5d8d0c['message']));});});});};exports[_0x3c82('0x3b')]=function(_0x141581){var _0x3179b4=this;return new Promise(function(_0x3d4d75,_0xb661c0){return db['sequelize']['transaction'](function(_0x149e48){return db[_0x3c82('0x3c')][_0x3c82('0x22')](_0x141581[_0x3c82('0x23')],{'raw':_0x141581[_0x3c82('0x17')]?_0x141581[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'transaction':_0x149e48})[_0x3c82('0xb')](function(){logger[_0x3c82('0xc')](_0x3c82('0x3d'),JSON[_0x3c82('0x10')](_0x141581['options']['where']),_0x141581[_0x3c82('0x17')]['where'][_0x3c82('0x28')]);return db['CmHopper']['destroy']({'where':_0x141581[_0x3c82('0x17')]?_0x141581[_0x3c82('0x17')][_0x3c82('0x19')]||null:null,'transaction':_0x149e48});});})[_0x3c82('0xb')](function(_0x421268){logger[_0x3c82('0xc')](_0x3c82('0x3b'),_0x141581);logger[_0x3c82('0xf')](_0x3c82('0x3b'),_0x141581,JSON[_0x3c82('0x10')](_0x421268));_0x3d4d75(_0x421268);})['catch'](function(_0x389cda){logger[_0x3c82('0x11')](_0x3c82('0x3b'),_0x389cda[_0x3c82('0x13')],_0x141581);_0xb661c0(_0x3179b4[_0x3c82('0x11')](0x1f4,_0x389cda[_0x3c82('0x13')]));});});};exports['CountReScheduled']=function(_0x5debce){var _0x4a1e33=this;return new Promise(function(_0x26cc09,_0x1a56d3){return db[_0x3c82('0x15')]['findAll']({'raw':_0x5debce[_0x3c82('0x17')]?_0x5debce[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x5debce[_0x3c82('0x17')]?_0x5debce['options']['where']||null:null,'attributes':[[db[_0x3c82('0x2e')]['fn'](_0x3c82('0x3e'),db[_0x3c82('0x2e')]['fn']('IF',db['sequelize']['literal'](_0x3c82('0x3f')+util[_0x3c82('0x40')](_0x3c82('0x41'),moment()[_0x3c82('0x40')](_0x3c82('0x42')))+'\x20,\x201,\x20null'))),_0x3c82('0x43')]]})[_0x3c82('0xb')](function(_0x179fce){logger[_0x3c82('0xc')]('CountReScheduled',_0x5debce);logger[_0x3c82('0xf')](_0x3c82('0x44'),_0x5debce,JSON[_0x3c82('0x10')](_0x179fce));_0x26cc09(_0x179fce);})['catch'](function(_0x9a0f65){logger['error']('CountReScheduled',_0x9a0f65['message'],_0x5debce);_0x1a56d3(_0x4a1e33[_0x3c82('0x11')](0x1f4,_0x9a0f65['message']));});});};exports[_0x3c82('0x45')]=function(_0x2e3e69){var _0x4c77fe=this;return new Promise(function(_0x2faee1,_0x1eb71b){return db['CmContact'][_0x3c82('0x2d')]()[_0x3c82('0xb')](function(_0x357a75){return db['sequelize']['transaction'](function(_0x30a198){return db['CmHopper']['findAll']({'where':_0x2e3e69[_0x3c82('0x17')]?_0x2e3e69[_0x3c82('0x17')][_0x3c82('0x19')]||null:null,'attributes':_0x2e3e69[_0x3c82('0x17')]?_0x2e3e69['options'][_0x3c82('0x1a')]||null:null,'limit':0x1,'order':_0x2e3e69[_0x3c82('0x17')]?_0x2e3e69[_0x3c82('0x17')][_0x3c82('0x30')]||null:null,'group':db[_0x3c82('0x15')][_0x3c82('0x34')],'transaction':_0x30a198,'lock':_0x30a198[_0x3c82('0x46')]['UPDATE'],'include':_0x2e3e69['options']?_0x2e3e69['options'][_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x2e3e69[_0x3c82('0x17')][_0x3c82('0x1c')],function(_0x82a612){return{'model':db[_0x82a612[_0x3c82('0x1d')]],'as':_0x82a612['as'],'attributes':_0x82a612[_0x3c82('0x1a')],'include':_0x82a612[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x82a612[_0x3c82('0x1c')],function(_0x1a7702){return{'model':db[_0x1a7702[_0x3c82('0x1d')]],'as':_0x1a7702['as'],'attributes':_0x1a7702[_0x3c82('0x1a')],'include':_0x1a7702[_0x3c82('0x1c')]?_['map'](_0x1a7702[_0x3c82('0x1c')],function(_0x259cdc){return{'model':db[_0x259cdc[_0x3c82('0x1d')]],'as':_0x259cdc['as'],'attributes':_0x259cdc[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x1fb5c9){var _0x494527=[];for(var _0x4261a1=0x0;_0x4261a1<_0x1fb5c9[_0x3c82('0x38')];_0x4261a1+=0x1){_0x494527[_0x3c82('0x36')](_0x1fb5c9[_0x4261a1][_0x3c82('0x26')](_0x2e3e69['body'],{'transaction':_0x30a198}));}return BPromise[_0x3c82('0x37')](_0x494527);});})['then'](function(_0x4d5fe9){logger[_0x3c82('0xc')]('GetContactRecallMe',_0x2e3e69);logger[_0x3c82('0xf')](_0x3c82('0x45'),_0x2e3e69,JSON[_0x3c82('0x10')](_0x4d5fe9));_0x2faee1(_0x4d5fe9);})[_0x3c82('0x1f')](function(_0x4dc33c){logger[_0x3c82('0x11')](_0x3c82('0x45'),_0x4dc33c[_0x3c82('0x13')],_0x2e3e69);_0x1eb71b(_0x4c77fe['error'](0x1f4,_0x4dc33c[_0x3c82('0x13')]));});});});};exports[_0x3c82('0x47')]=function(_0x84ff74){var _0x52594c=this;return new Promise(function(_0x2d95a8,_0x56f539){db[_0x3c82('0x2c')]['describe']()[_0x3c82('0xb')](function(_0x2c848f){return db[_0x3c82('0x15')][_0x3c82('0x16')]({'raw':_0x84ff74['options']?_0x84ff74['options'][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x84ff74[_0x3c82('0x17')]?_0x84ff74[_0x3c82('0x17')]['where']||null:null,'attributes':_0x84ff74[_0x3c82('0x17')]?_0x84ff74[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'limit':_0x84ff74[_0x3c82('0x17')]?_0x84ff74['options'][_0x3c82('0x1b')]||null:null,'include':_0x84ff74['options']?_0x84ff74[_0x3c82('0x17')][_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x84ff74['options'][_0x3c82('0x1c')],function(_0x860a56){return{'model':db[_0x860a56[_0x3c82('0x1d')]],'as':_0x860a56['as'],'attributes':_0x860a56['as']==='Contact'?_[_0x3c82('0x48')](_0x2c848f):_0x860a56[_0x3c82('0x1a')],'include':_0x860a56[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x860a56[_0x3c82('0x1c')],function(_0x3b338f){return{'model':db[_0x3b338f[_0x3c82('0x1d')]],'as':_0x3b338f['as'],'attributes':_0x3b338f[_0x3c82('0x1a')],'include':_0x3b338f[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x3b338f['include'],function(_0x2b2b53){return{'model':db[_0x2b2b53[_0x3c82('0x1d')]],'as':_0x2b2b53['as'],'attributes':_0x2b2b53[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x26b6de){logger['info']('GetCmHopper',_0x84ff74);logger[_0x3c82('0xf')](_0x3c82('0x14'),_0x84ff74,JSON['stringify'](_0x26b6de));_0x2d95a8(_0x26b6de);})['catch'](function(_0x5de6af){logger[_0x3c82('0x11')]('GetCmHopper',_0x5de6af[_0x3c82('0x13')],_0x84ff74);_0x56f539(_0x52594c[_0x3c82('0x11')](0x1f4,_0x5de6af[_0x3c82('0x13')]));});});});};exports['ResetActiveCalls']=function(_0x37bb3a){var _0x3d65c9=this;return new Promise(function(_0xf681ce,_0x16ce18){return db[_0x3c82('0x2e')]['transaction'](function(_0x549eb2){return db[_0x3c82('0x15')]['update']({'active':![]},{'where':{},'transaction':_0x549eb2})['then'](function(_0x264c7e){logger[_0x3c82('0xc')]('ResetActiveCalls',_0x37bb3a);logger[_0x3c82('0xf')](_0x3c82('0x49'),_0x37bb3a,JSON[_0x3c82('0x10')](_0x264c7e));_0xf681ce(_0x264c7e);})[_0x3c82('0x1f')](function(_0x3a4ba7){logger[_0x3c82('0x11')](_0x3c82('0x49'),_0x3a4ba7['message'],_0x37bb3a);_0x16ce18(_0x3d65c9[_0x3c82('0x11')](0x1f4,_0x3a4ba7[_0x3c82('0x13')]));});});});};
\ No newline at end of file
+var _0x8994=['DestroyCmHopper','destroy','CmContact','describe','sequelize','LOCK','UPDATE','Contact','User','Agent','name','UserId','push','update','includes','body','all','GetContactDialer','MoveContactManagedDialer','transaction','CmHopperFinal','create','CountReScheduled','COUNT','literal','\x22%s\x22','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','order','length','GetCmHopperPreview','keys','lodash','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise','client','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCmHopper','CmHopper','findAll','options','attributes','limit','include','map','model','debug','ShowCmHopper','find','raw','where','CreateCmHopper','UpdateCmHopper'];(function(_0x503564,_0x55867e){var _0x4be9fd=function(_0x41c543){while(--_0x41c543){_0x503564['push'](_0x503564['shift']());}};_0x4be9fd(++_0x55867e);}(_0x8994,0x17c));var _0x4899=function(_0x51c819,_0xd812db){_0x51c819=_0x51c819-0x0;var _0x15c5d2=_0x8994[_0x51c819];return _0x15c5d2;};'use strict';var _=require(_0x4899('0x0'));var util=require(_0x4899('0x1'));var moment=require(_0x4899('0x2'));var BPromise=require(_0x4899('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4899('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4899('0x5'));var jayson=require(_0x4899('0x6'));var client=jayson[_0x4899('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4dcd62,_0x41a734,_0x47c51b){return new BPromise(function(_0x345655,_0x361bc1){return client['request'](_0x4dcd62,_0x47c51b)[_0x4899('0x8')](function(_0x5eefb2){logger[_0x4899('0x9')](_0x4899('0xa'),_0x41a734,_0x4899('0xb'));logger['debug'](_0x4899('0xc'),_0x41a734,_0x4899('0xb'),JSON[_0x4899('0xd')](_0x5eefb2));if(_0x5eefb2[_0x4899('0xe')]){if(_0x5eefb2[_0x4899('0xe')]['code']===0x1f4){logger['error'](_0x4899('0xa'),_0x41a734,_0x5eefb2[_0x4899('0xe')][_0x4899('0xf')]);return _0x361bc1(_0x5eefb2[_0x4899('0xe')][_0x4899('0xf')]);}logger['error']('CmHopper,\x20%s,\x20%s',_0x41a734,_0x5eefb2[_0x4899('0xe')][_0x4899('0xf')]);return _0x345655(_0x5eefb2['error'][_0x4899('0xf')]);}else{logger[_0x4899('0x9')](_0x4899('0xa'),_0x41a734,'request\x20sent');_0x345655(_0x5eefb2[_0x4899('0x10')][_0x4899('0xf')]);}})[_0x4899('0x11')](function(_0x27bb5c){logger['error'](_0x4899('0xa'),_0x41a734,_0x27bb5c);_0x361bc1(_0x27bb5c);});});}exports[_0x4899('0x12')]=function(_0x41b8e4){var _0x42ffe7=this;return new Promise(function(_0x1dedc4,_0x23eb1b){return db[_0x4899('0x13')][_0x4899('0x14')]({'raw':_0x41b8e4[_0x4899('0x15')]?_0x41b8e4['options']['raw']===undefined?!![]:![]:!![],'where':_0x41b8e4[_0x4899('0x15')]?_0x41b8e4[_0x4899('0x15')]['where']||null:null,'attributes':_0x41b8e4[_0x4899('0x15')]?_0x41b8e4[_0x4899('0x15')][_0x4899('0x16')]||null:null,'limit':_0x41b8e4[_0x4899('0x15')]?_0x41b8e4[_0x4899('0x15')][_0x4899('0x17')]||null:null,'include':_0x41b8e4[_0x4899('0x15')]?_0x41b8e4['options'][_0x4899('0x18')]?_[_0x4899('0x19')](_0x41b8e4[_0x4899('0x15')][_0x4899('0x18')],function(_0x36c039){return{'model':db[_0x36c039[_0x4899('0x1a')]],'as':_0x36c039['as'],'attributes':_0x36c039[_0x4899('0x16')],'include':_0x36c039[_0x4899('0x18')]?_[_0x4899('0x19')](_0x36c039[_0x4899('0x18')],function(_0x2a1010){return{'model':db[_0x2a1010[_0x4899('0x1a')]],'as':_0x2a1010['as'],'attributes':_0x2a1010['attributes'],'include':_0x2a1010[_0x4899('0x18')]?_['map'](_0x2a1010[_0x4899('0x18')],function(_0x2180a0){return{'model':db[_0x2180a0[_0x4899('0x1a')]],'as':_0x2180a0['as'],'attributes':_0x2180a0[_0x4899('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4899('0x8')](function(_0x1994b5){logger[_0x4899('0x9')](_0x4899('0x12'),_0x41b8e4);logger[_0x4899('0x1b')]('GetCmHopper',_0x41b8e4,JSON['stringify'](_0x1994b5));_0x1dedc4(_0x1994b5);})['catch'](function(_0x143825){logger[_0x4899('0xe')](_0x4899('0x12'),_0x143825[_0x4899('0xf')],_0x41b8e4);_0x23eb1b(_0x42ffe7[_0x4899('0xe')](0x1f4,_0x143825['message']));});});};exports[_0x4899('0x1c')]=function(_0x5724c1){var _0x405cbd=this;return new Promise(function(_0x302cae,_0x2986a8){return db[_0x4899('0x13')][_0x4899('0x1d')]({'raw':_0x5724c1[_0x4899('0x15')]?_0x5724c1[_0x4899('0x15')][_0x4899('0x1e')]===undefined?!![]:![]:!![],'where':_0x5724c1[_0x4899('0x15')]?_0x5724c1[_0x4899('0x15')][_0x4899('0x1f')]||null:null,'attributes':_0x5724c1[_0x4899('0x15')]?_0x5724c1['options']['attributes']||null:null,'include':_0x5724c1[_0x4899('0x15')]?_0x5724c1[_0x4899('0x15')]['include']?_[_0x4899('0x19')](_0x5724c1[_0x4899('0x15')][_0x4899('0x18')],function(_0x1a75e1){return{'model':db[_0x1a75e1[_0x4899('0x1a')]],'as':_0x1a75e1['as'],'attributes':_0x1a75e1[_0x4899('0x16')],'include':_0x1a75e1['include']?_[_0x4899('0x19')](_0x1a75e1[_0x4899('0x18')],function(_0x5a194e){return{'model':db[_0x5a194e[_0x4899('0x1a')]],'as':_0x5a194e['as'],'attributes':_0x5a194e[_0x4899('0x16')],'include':_0x5a194e[_0x4899('0x18')]?_['map'](_0x5a194e[_0x4899('0x18')],function(_0x16e3ff){return{'model':db[_0x16e3ff[_0x4899('0x1a')]],'as':_0x16e3ff['as'],'attributes':_0x16e3ff[_0x4899('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4899('0x8')](function(_0x4afca3){logger[_0x4899('0x9')](_0x4899('0x1c'),_0x5724c1);logger[_0x4899('0x1b')](_0x4899('0x1c'),_0x5724c1,JSON[_0x4899('0xd')](_0x4afca3));_0x302cae(_0x4afca3);})[_0x4899('0x11')](function(_0x27624b){logger[_0x4899('0xe')]('ShowCmHopper',_0x27624b[_0x4899('0xf')],_0x5724c1);_0x2986a8(_0x405cbd['error'](0x1f4,_0x27624b['message']));});});};exports[_0x4899('0x20')]=function(_0x11a125){var _0x37c838=this;return new Promise(function(_0x1b8824,_0x4363c1){return db[_0x4899('0x13')]['create'](_0x11a125['body'],{'raw':_0x11a125[_0x4899('0x15')]?_0x11a125[_0x4899('0x15')][_0x4899('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x1cecaf){logger[_0x4899('0x9')](_0x4899('0x20'),_0x11a125);logger['debug']('CreateCmHopper',_0x11a125,JSON['stringify'](_0x1cecaf));_0x1b8824(_0x1cecaf);})[_0x4899('0x11')](function(_0x402561){logger['error'](_0x4899('0x20'),_0x402561[_0x4899('0xf')],_0x11a125);_0x4363c1(_0x37c838[_0x4899('0xe')](0x1f4,_0x402561[_0x4899('0xf')]));});});};exports[_0x4899('0x21')]=function(_0x1ccc75){var _0x468b18=this;return new Promise(function(_0x2bfe24,_0x450517){return db[_0x4899('0x13')]['update'](_0x1ccc75['body'],{'raw':_0x1ccc75[_0x4899('0x15')]?_0x1ccc75[_0x4899('0x15')][_0x4899('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ccc75[_0x4899('0x15')]?_0x1ccc75['options'][_0x4899('0x1f')]||null:null,'attributes':_0x1ccc75[_0x4899('0x15')]?_0x1ccc75[_0x4899('0x15')][_0x4899('0x16')]||null:null,'limit':_0x1ccc75[_0x4899('0x15')]?_0x1ccc75[_0x4899('0x15')][_0x4899('0x17')]||null:null})[_0x4899('0x8')](function(_0x19a250){logger[_0x4899('0x9')](_0x4899('0x21'),_0x1ccc75);logger[_0x4899('0x1b')](_0x4899('0x21'),_0x1ccc75,JSON['stringify'](_0x19a250));_0x2bfe24(_0x19a250);})[_0x4899('0x11')](function(_0x38451c){logger[_0x4899('0xe')]('UpdateCmHopper',_0x38451c[_0x4899('0xf')],_0x1ccc75);_0x450517(_0x468b18[_0x4899('0xe')](0x1f4,_0x38451c[_0x4899('0xf')]));});});};exports[_0x4899('0x22')]=function(_0x282359){var _0x2caaf0=this;return new Promise(function(_0x48ab3a,_0x34d243){return db[_0x4899('0x13')][_0x4899('0x23')]({'where':_0x282359[_0x4899('0x15')]?_0x282359[_0x4899('0x15')][_0x4899('0x1f')]||null:null})[_0x4899('0x8')](function(_0xdc0a0e){logger['info'](_0x4899('0x22'),_0x282359);logger[_0x4899('0x1b')](_0x4899('0x22'),_0x282359,JSON[_0x4899('0xd')](_0xdc0a0e));_0x48ab3a(_0xdc0a0e);})[_0x4899('0x11')](function(_0x24461a){logger[_0x4899('0xe')](_0x4899('0x22'),_0x24461a[_0x4899('0xf')],_0x282359);_0x34d243(_0x2caaf0[_0x4899('0xe')](0x1f4,_0x24461a['message']));});});};exports['GetContactDialer']=function(_0x3a190b){var _0x5ce708=this;return new Promise(function(_0x556859,_0x5bb083){return db[_0x4899('0x24')][_0x4899('0x25')]()[_0x4899('0x8')](function(_0x6c1b64){return db[_0x4899('0x26')]['transaction'](function(_0x27f49c){return db[_0x4899('0x13')][_0x4899('0x14')]({'where':_0x3a190b['options']?_0x3a190b['options'][_0x4899('0x1f')]||null:null,'attributes':_0x3a190b['options']?_0x3a190b[_0x4899('0x15')][_0x4899('0x16')]||null:null,'limit':_0x3a190b[_0x4899('0x15')]?_0x3a190b['options'][_0x4899('0x17')]||null:null,'order':_0x3a190b[_0x4899('0x15')]?_0x3a190b[_0x4899('0x15')]['order']||null:null,'transaction':_0x27f49c,'lock':_0x27f49c[_0x4899('0x27')][_0x4899('0x28')],'include':[{'model':db[_0x4899('0x24')],'as':_0x4899('0x29'),'attributes':_['keys'](_0x6c1b64)},{'model':db[_0x4899('0x2a')],'as':_0x4899('0x2b'),'attributes':['id',_0x4899('0x2c'),'voicePause']}]})[_0x4899('0x8')](function(_0x4ed315){var _0x3951c4=[];var _0xf1e689=[];for(var _0x4e4ef8=0x0;_0x4e4ef8<_0x4ed315['length'];_0x4e4ef8+=0x1){var _0x412b58=_0x4ed315[_0x4e4ef8][_0x4899('0x2d')];if(_0x412b58===null){_0x3951c4[_0x4899('0x2e')](_0x4ed315[_0x4e4ef8][_0x4899('0x2f')](_0x3a190b['body'],{'transaction':_0x27f49c}));}else if(!_0xf1e689[_0x4899('0x30')](_0x412b58)){_0xf1e689['push'](_0x412b58);_0x3951c4[_0x4899('0x2e')](_0x4ed315[_0x4e4ef8][_0x4899('0x2f')](_0x3a190b[_0x4899('0x31')],{'transaction':_0x27f49c}));}}return BPromise[_0x4899('0x32')](_0x3951c4);});})[_0x4899('0x8')](function(_0x35f03a){logger[_0x4899('0x9')](_0x4899('0x33'),_0x3a190b);logger[_0x4899('0x1b')]('GetContactDialer',_0x3a190b,JSON[_0x4899('0xd')](_0x35f03a));_0x556859(_0x35f03a);})['catch'](function(_0xdfa88){logger[_0x4899('0xe')]('GetContactDialer',_0xdfa88[_0x4899('0xf')],_0x3a190b);_0x5bb083(_0x5ce708[_0x4899('0xe')](0x1f4,_0xdfa88[_0x4899('0xf')]));});});});};exports[_0x4899('0x34')]=function(_0x24e4c4){var _0x2c34e2=this;return new Promise(function(_0x2619f2,_0x4a3277){return db[_0x4899('0x26')][_0x4899('0x35')](function(_0x4a6870){return db[_0x4899('0x36')][_0x4899('0x37')](_0x24e4c4[_0x4899('0x31')],{'raw':_0x24e4c4[_0x4899('0x15')]?_0x24e4c4[_0x4899('0x15')][_0x4899('0x1e')]===undefined?!![]:![]:!![],'transaction':_0x4a6870})[_0x4899('0x8')](function(){return db[_0x4899('0x13')][_0x4899('0x23')]({'where':_0x24e4c4[_0x4899('0x15')]?_0x24e4c4['options'][_0x4899('0x1f')]||null:null,'transaction':_0x4a6870});});})['then'](function(_0x48560e){logger[_0x4899('0x9')]('MoveContactManagedDialer',_0x24e4c4);logger[_0x4899('0x1b')]('MoveContactManagedDialer',_0x24e4c4,JSON[_0x4899('0xd')](_0x48560e));_0x2619f2(_0x48560e);})[_0x4899('0x11')](function(_0x249bbd){logger[_0x4899('0xe')](_0x4899('0x34'),_0x249bbd[_0x4899('0xf')],_0x24e4c4);_0x4a3277(_0x2c34e2['error'](0x1f4,_0x249bbd['message']));});});};exports[_0x4899('0x38')]=function(_0x30a43d){var _0x2584ee=this;return new Promise(function(_0x11d72e,_0x5b5553){return db['CmHopper'][_0x4899('0x14')]({'raw':_0x30a43d[_0x4899('0x15')]?_0x30a43d[_0x4899('0x15')][_0x4899('0x1e')]===undefined?!![]:![]:!![],'where':_0x30a43d[_0x4899('0x15')]?_0x30a43d[_0x4899('0x15')][_0x4899('0x1f')]||null:null,'attributes':[[db[_0x4899('0x26')]['fn'](_0x4899('0x39'),db['sequelize']['fn']('IF',db['sequelize'][_0x4899('0x3a')]('`scheduledat`\x20>=\x20'+util['format'](_0x4899('0x3b'),moment()[_0x4899('0x3c')](_0x4899('0x3d')))+_0x4899('0x3e')))),_0x4899('0x3f')]]})[_0x4899('0x8')](function(_0x3c3773){logger[_0x4899('0x9')]('CountReScheduled',_0x30a43d);logger[_0x4899('0x1b')](_0x4899('0x38'),_0x30a43d,JSON[_0x4899('0xd')](_0x3c3773));_0x11d72e(_0x3c3773);})['catch'](function(_0x797bf1){logger['error'](_0x4899('0x38'),_0x797bf1[_0x4899('0xf')],_0x30a43d);_0x5b5553(_0x2584ee[_0x4899('0xe')](0x1f4,_0x797bf1['message']));});});};exports[_0x4899('0x40')]=function(_0x2e9dc4){var _0x80734c=this;return new Promise(function(_0x3b5b83,_0xfadb53){return db['CmContact'][_0x4899('0x25')]()['then'](function(_0x1d2be4){return db[_0x4899('0x26')]['transaction'](function(_0x53ba2c){return db[_0x4899('0x13')][_0x4899('0x14')]({'where':_0x2e9dc4[_0x4899('0x15')]?_0x2e9dc4[_0x4899('0x15')]['where']||null:null,'attributes':_0x2e9dc4[_0x4899('0x15')]?_0x2e9dc4[_0x4899('0x15')]['attributes']||null:null,'limit':0x1,'order':_0x2e9dc4[_0x4899('0x15')]?_0x2e9dc4[_0x4899('0x15')][_0x4899('0x41')]||null:null,'group':db[_0x4899('0x13')]['UserId'],'transaction':_0x53ba2c,'lock':_0x53ba2c[_0x4899('0x27')][_0x4899('0x28')],'include':_0x2e9dc4[_0x4899('0x15')]?_0x2e9dc4[_0x4899('0x15')][_0x4899('0x18')]?_[_0x4899('0x19')](_0x2e9dc4['options'][_0x4899('0x18')],function(_0x52ccc2){return{'model':db[_0x52ccc2[_0x4899('0x1a')]],'as':_0x52ccc2['as'],'attributes':_0x52ccc2['attributes'],'include':_0x52ccc2[_0x4899('0x18')]?_[_0x4899('0x19')](_0x52ccc2[_0x4899('0x18')],function(_0x55a453){return{'model':db[_0x55a453['model']],'as':_0x55a453['as'],'attributes':_0x55a453[_0x4899('0x16')],'include':_0x55a453['include']?_['map'](_0x55a453[_0x4899('0x18')],function(_0x3ebee5){return{'model':db[_0x3ebee5[_0x4899('0x1a')]],'as':_0x3ebee5['as'],'attributes':_0x3ebee5[_0x4899('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4899('0x8')](function(_0xf974b1){var _0x2417a7=[];for(var _0x101fbb=0x0;_0x101fbb<_0xf974b1[_0x4899('0x42')];_0x101fbb+=0x1){_0x2417a7['push'](_0xf974b1[_0x101fbb][_0x4899('0x2f')](_0x2e9dc4[_0x4899('0x31')],{'transaction':_0x53ba2c}));}return BPromise['all'](_0x2417a7);});})[_0x4899('0x8')](function(_0x2bc117){logger[_0x4899('0x9')](_0x4899('0x40'),_0x2e9dc4);logger[_0x4899('0x1b')](_0x4899('0x40'),_0x2e9dc4,JSON[_0x4899('0xd')](_0x2bc117));_0x3b5b83(_0x2bc117);})[_0x4899('0x11')](function(_0x37b16a){logger[_0x4899('0xe')]('GetContactRecallMe',_0x37b16a[_0x4899('0xf')],_0x2e9dc4);_0xfadb53(_0x80734c[_0x4899('0xe')](0x1f4,_0x37b16a[_0x4899('0xf')]));});});});};exports[_0x4899('0x43')]=function(_0x212cb3){var _0xaa3e5=this;return new Promise(function(_0x3e5282,_0x5928f4){db[_0x4899('0x24')]['describe']()[_0x4899('0x8')](function(_0x875baa){return db[_0x4899('0x13')][_0x4899('0x14')]({'raw':_0x212cb3[_0x4899('0x15')]?_0x212cb3['options'][_0x4899('0x1e')]===undefined?!![]:![]:!![],'where':_0x212cb3[_0x4899('0x15')]?_0x212cb3[_0x4899('0x15')][_0x4899('0x1f')]||null:null,'attributes':_0x212cb3[_0x4899('0x15')]?_0x212cb3[_0x4899('0x15')][_0x4899('0x16')]||null:null,'limit':_0x212cb3[_0x4899('0x15')]?_0x212cb3['options'][_0x4899('0x17')]||null:null,'include':_0x212cb3[_0x4899('0x15')]?_0x212cb3[_0x4899('0x15')][_0x4899('0x18')]?_['map'](_0x212cb3[_0x4899('0x15')][_0x4899('0x18')],function(_0x1bfe1a){return{'model':db[_0x1bfe1a['model']],'as':_0x1bfe1a['as'],'attributes':_0x1bfe1a['as']===_0x4899('0x29')?_[_0x4899('0x44')](_0x875baa):_0x1bfe1a[_0x4899('0x16')],'include':_0x1bfe1a['include']?_[_0x4899('0x19')](_0x1bfe1a[_0x4899('0x18')],function(_0x13a6b6){return{'model':db[_0x13a6b6[_0x4899('0x1a')]],'as':_0x13a6b6['as'],'attributes':_0x13a6b6['attributes'],'include':_0x13a6b6[_0x4899('0x18')]?_[_0x4899('0x19')](_0x13a6b6[_0x4899('0x18')],function(_0x1452f1){return{'model':db[_0x1452f1[_0x4899('0x1a')]],'as':_0x1452f1['as'],'attributes':_0x1452f1['attributes']};}):[]};}):[]};}):[]:[]})[_0x4899('0x8')](function(_0x42d315){logger[_0x4899('0x9')](_0x4899('0x12'),_0x212cb3);logger[_0x4899('0x1b')](_0x4899('0x12'),_0x212cb3,JSON[_0x4899('0xd')](_0x42d315));_0x3e5282(_0x42d315);})['catch'](function(_0x3127a5){logger['error'](_0x4899('0x12'),_0x3127a5[_0x4899('0xf')],_0x212cb3);_0x5928f4(_0xaa3e5[_0x4899('0xe')](0x1f4,_0x3127a5[_0x4899('0xf')]));});});});};
\ No newline at end of file
index f9e9a55..85bce48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a4=['express','Router','fs-extra','../../components/interaction/service','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show','post','/preview','getPreview','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x20a4,0x129));var _0x420a=function(_0x2225c9,_0xe99b2e){_0x2225c9=_0x2225c9-0x0;var _0xe7b099=_0x20a4[_0x2225c9];return _0xe7b099;};'use strict';var multer=require(_0x420a('0x0'));var util=require(_0x420a('0x1'));var path=require('path');var timeout=require(_0x420a('0x2'));var express=require(_0x420a('0x3'));var router=express[_0x420a('0x4')]();var fs_extra=require(_0x420a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x420a('0x6'));var config=require('../../config/environment');var controller=require(_0x420a('0x7'));router[_0x420a('0x8')]('/',auth[_0x420a('0x9')](),controller[_0x420a('0xa')]);router['get'](_0x420a('0xb'),auth[_0x420a('0x9')](),controller[_0x420a('0xc')]);router[_0x420a('0x8')](_0x420a('0xd'),auth[_0x420a('0x9')](),controller[_0x420a('0xe')]);router[_0x420a('0x8')](_0x420a('0xf'),auth[_0x420a('0x9')](),controller[_0x420a('0x10')]);router[_0x420a('0x11')]('/',auth[_0x420a('0x9')](),controller['create']);router[_0x420a('0x11')](_0x420a('0x12'),auth[_0x420a('0x9')](),controller[_0x420a('0x13')]);router[_0x420a('0x14')](_0x420a('0xf'),auth['isAuthenticated'](),controller[_0x420a('0x15')]);router[_0x420a('0x16')](_0x420a('0xf'),auth['isAuthenticated'](),controller[_0x420a('0x17')]);module[_0x420a('0x18')]=router;
\ No newline at end of file
+var _0x94fc=['/opencontacts','/:id','show','post','/preview','getPreview','put','update','destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x58ee96,_0x5affd5){var _0xb346aa=function(_0x245b1a){while(--_0x245b1a){_0x58ee96['push'](_0x58ee96['shift']());}};_0xb346aa(++_0x5affd5);}(_0x94fc,0xd8));var _0xc94f=function(_0x1efa14,_0xc93eb8){_0x1efa14=_0x1efa14-0x0;var _0x378d19=_0x94fc[_0x1efa14];return _0x378d19;};'use strict';var multer=require('multer');var util=require(_0xc94f('0x0'));var path=require('path');var timeout=require(_0xc94f('0x1'));var express=require(_0xc94f('0x2'));var router=express[_0xc94f('0x3')]();var fs_extra=require(_0xc94f('0x4'));var auth=require(_0xc94f('0x5'));var interaction=require(_0xc94f('0x6'));var config=require(_0xc94f('0x7'));var controller=require(_0xc94f('0x8'));router[_0xc94f('0x9')]('/',auth[_0xc94f('0xa')](),controller[_0xc94f('0xb')]);router[_0xc94f('0x9')](_0xc94f('0xc'),auth[_0xc94f('0xa')](),controller[_0xc94f('0xd')]);router[_0xc94f('0x9')](_0xc94f('0xe'),auth['isAuthenticated'](),controller['getOpenContacts']);router['get'](_0xc94f('0xf'),auth[_0xc94f('0xa')](),controller[_0xc94f('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xc94f('0x11')](_0xc94f('0x12'),auth['isAuthenticated'](),controller[_0xc94f('0x13')]);router[_0xc94f('0x14')]('/:id',auth[_0xc94f('0xa')](),controller[_0xc94f('0x15')]);router['delete'](_0xc94f('0xf'),auth[_0xc94f('0xa')](),controller[_0xc94f('0x16')]);module['exports']=router;
\ No newline at end of file
index 32089e4..ceb6f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b20=['INTEGER','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x26fba0,_0x81977){var _0xb159c9=function(_0x1ca3e9){while(--_0x1ca3e9){_0x26fba0['push'](_0x26fba0['shift']());}};_0xb159c9(++_0x81977);}(_0x5b20,0x86));var _0x05b2=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5b20[_0x122ef9];return _0x42fba0;};'use strict';var moment=require(_0x05b2('0x0'));var Sequelize=require(_0x05b2('0x1'));module[_0x05b2('0x2')]={'phone':{'type':Sequelize[_0x05b2('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x05b2('0x4')],'unique':_0x05b2('0x5')},'ListId':{'type':Sequelize[_0x05b2('0x4')],'unique':_0x05b2('0x5')},'VoiceQueueId':{'type':Sequelize[_0x05b2('0x4')],'unique':_0x05b2('0x5')}};
\ No newline at end of file
+var _0x199c=['exports','STRING','INTEGER','contactListQueue'];(function(_0x58ca10,_0x3023c5){var _0x12891a=function(_0x5d86a9){while(--_0x5d86a9){_0x58ca10['push'](_0x58ca10['shift']());}};_0x12891a(++_0x3023c5);}(_0x199c,0x1d8));var _0xc199=function(_0x57ee60,_0x544259){_0x57ee60=_0x57ee60-0x0;var _0x37b938=_0x199c[_0x57ee60];return _0x37b938;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xc199('0x0')]={'phone':{'type':Sequelize[_0xc199('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xc199('0x2')],'unique':_0xc199('0x3')},'ListId':{'type':Sequelize[_0xc199('0x2')],'unique':_0xc199('0x3')},'VoiceQueueId':{'type':Sequelize[_0xc199('0x2')],'unique':_0xc199('0x3')}};
\ No newline at end of file
index d793086..3eaff00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1c4=['jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','CmHopperBlack','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','find','body','eml-format','rimraf','zip-dir','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xe1c4,0x1ec));var _0x4e1c=function(_0x19a631,_0x2bcdbe){_0x19a631=_0x19a631-0x0;var _0x590361=_0xe1c4[_0x19a631];return _0x590361;};'use strict';var emlformat=require(_0x4e1c('0x0'));var rimraf=require(_0x4e1c('0x1'));var zipdir=require(_0x4e1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4e1c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4e1c('0x4'));var util=require(_0x4e1c('0x5'));var path=require(_0x4e1c('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4e1c('0x7'));var fs=require('fs');var fs_extra=require(_0x4e1c('0x8'));var _=require(_0x4e1c('0x9'));var squel=require(_0x4e1c('0xa'));var crypto=require(_0x4e1c('0xb'));var jsforce=require(_0x4e1c('0xc'));var deskjs=require(_0x4e1c('0xd'));var toCsv=require(_0x4e1c('0xe'));var querystring=require(_0x4e1c('0xf'));var Papa=require(_0x4e1c('0x10'));var Redis=require(_0x4e1c('0x11'));var authService=require(_0x4e1c('0x12'));var qs=require(_0x4e1c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4e1c('0x14'));var logger=require(_0x4e1c('0x15'))('api');var utils=require(_0x4e1c('0x16'));var config=require(_0x4e1c('0x17'));var licenseUtil=require(_0x4e1c('0x18'));var db=require(_0x4e1c('0x19'))['db'];function respondWithStatusCode(_0x54b2d1,_0xb4a030){_0xb4a030=_0xb4a030||0xcc;return function(_0x12178d){if(_0x12178d){return _0x54b2d1[_0x4e1c('0x1a')](_0xb4a030);}return _0x54b2d1[_0x4e1c('0x1b')](_0xb4a030)['end']();};}function respondWithResult(_0x531159,_0x550f27){_0x550f27=_0x550f27||0xc8;return function(_0x12e7fe){if(_0x12e7fe){return _0x531159[_0x4e1c('0x1b')](_0x550f27)[_0x4e1c('0x1c')](_0x12e7fe);}};}function respondWithFilteredResult(_0x201779,_0x4d47ec){return function(_0x2cd5bc){if(_0x2cd5bc){var _0x374c78=typeof _0x4d47ec[_0x4e1c('0x1d')]===_0x4e1c('0x1e')&&typeof _0x4d47ec[_0x4e1c('0x1f')]===_0x4e1c('0x1e');var _0x58d9e3=_0x2cd5bc[_0x4e1c('0x20')];var _0x399bcc=_0x374c78?0x0:_0x4d47ec[_0x4e1c('0x1d')];var _0x46a887=_0x374c78?_0x2cd5bc[_0x4e1c('0x20')]:_0x4d47ec[_0x4e1c('0x1d')]+_0x4d47ec[_0x4e1c('0x1f')];var _0x544b08;if(_0x46a887>=_0x58d9e3){_0x46a887=_0x58d9e3;_0x544b08=0xc8;}else{_0x544b08=0xce;}_0x201779[_0x4e1c('0x1b')](_0x544b08);return _0x201779[_0x4e1c('0x21')](_0x4e1c('0x22'),_0x399bcc+'-'+_0x46a887+'/'+_0x58d9e3)[_0x4e1c('0x1c')](_0x2cd5bc);}return null;};}function patchUpdates(_0x33da37){return function(_0x427cc1){try{jsonpatch[_0x4e1c('0x23')](_0x427cc1,_0x33da37,!![]);}catch(_0x53a020){return BPromise[_0x4e1c('0x24')](_0x53a020);}return _0x427cc1[_0x4e1c('0x25')]();};}function saveUpdates(_0xc57bcc,_0x169b4e){return function(_0x3dde0d){if(_0x3dde0d){return _0x3dde0d[_0x4e1c('0x26')](_0xc57bcc)[_0x4e1c('0x27')](function(_0x19ed77){return _0x19ed77;});}return null;};}function removeEntity(_0x45c13e,_0x5ada14){return function(_0x46ad33){if(_0x46ad33){return _0x46ad33[_0x4e1c('0x28')]()[_0x4e1c('0x27')](function(){_0x45c13e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x17f5a5,_0x551d50){return function(_0x25cc93){if(!_0x25cc93){_0x17f5a5[_0x4e1c('0x1a')](0x194);}return _0x25cc93;};}function handleError(_0x2a2ccb,_0x564b30){_0x564b30=_0x564b30||0x1f4;return function(_0x12364d){logger[_0x4e1c('0x29')](_0x12364d['stack']);if(_0x12364d[_0x4e1c('0x2a')]){delete _0x12364d[_0x4e1c('0x2a')];}_0x2a2ccb[_0x4e1c('0x1b')](_0x564b30)[_0x4e1c('0x2b')](_0x12364d);};}exports[_0x4e1c('0x2c')]=function(_0x5ef2f7,_0xeccf79){var _0x8e3e14={},_0x1b5ba8={},_0x1c4c4a={'count':0x0,'rows':[]};var _0x504259=_[_0x4e1c('0x2d')](db[_0x4e1c('0x2e')]['rawAttributes'],function(_0x46d181){return{'name':_0x46d181['fieldName'],'type':_0x46d181[_0x4e1c('0x2f')][_0x4e1c('0x30')]};});_0x1b5ba8[_0x4e1c('0x31')]=_[_0x4e1c('0x2d')](_0x504259,'name');_0x1b5ba8[_0x4e1c('0x32')]=_['keys'](_0x5ef2f7[_0x4e1c('0x32')]);_0x1b5ba8['filters']=_[_0x4e1c('0x33')](_0x1b5ba8[_0x4e1c('0x31')],_0x1b5ba8['query']);_0x8e3e14[_0x4e1c('0x34')]=_['intersection'](_0x1b5ba8[_0x4e1c('0x31')],qs[_0x4e1c('0x35')](_0x5ef2f7[_0x4e1c('0x32')][_0x4e1c('0x35')]));_0x8e3e14[_0x4e1c('0x34')]=_0x8e3e14[_0x4e1c('0x34')][_0x4e1c('0x36')]?_0x8e3e14[_0x4e1c('0x34')]:_0x1b5ba8[_0x4e1c('0x31')];if(!_0x5ef2f7[_0x4e1c('0x32')]['hasOwnProperty'](_0x4e1c('0x37'))){_0x8e3e14[_0x4e1c('0x1f')]=qs[_0x4e1c('0x1f')](_0x5ef2f7[_0x4e1c('0x32')][_0x4e1c('0x1f')]);_0x8e3e14[_0x4e1c('0x1d')]=qs['offset'](_0x5ef2f7['query'][_0x4e1c('0x1d')]);}_0x8e3e14[_0x4e1c('0x38')]=qs[_0x4e1c('0x39')](_0x5ef2f7[_0x4e1c('0x32')]['sort']);_0x8e3e14[_0x4e1c('0x3a')]=qs[_0x4e1c('0x3b')](_['pick'](_0x5ef2f7[_0x4e1c('0x32')],_0x1b5ba8[_0x4e1c('0x3b')]),_0x504259);if(_0x5ef2f7[_0x4e1c('0x32')]['filter']){_0x8e3e14[_0x4e1c('0x3a')]=_[_0x4e1c('0x3c')](_0x8e3e14['where'],{'$or':_[_0x4e1c('0x2d')](_0x504259,function(_0x128ddd){if(_0x128ddd[_0x4e1c('0x2f')]!==_0x4e1c('0x3d')){var _0x1cb1a3={};_0x1cb1a3[_0x128ddd[_0x4e1c('0x2a')]]={'$like':'%'+_0x5ef2f7['query']['filter']+'%'};return _0x1cb1a3;}})});}_0x8e3e14=_[_0x4e1c('0x3c')]({},_0x8e3e14,_0x5ef2f7[_0x4e1c('0x3e')]);var _0x390d05={'where':_0x8e3e14[_0x4e1c('0x3a')]};return db[_0x4e1c('0x2e')][_0x4e1c('0x20')](_0x390d05)[_0x4e1c('0x27')](function(_0x6838bc){_0x1c4c4a[_0x4e1c('0x20')]=_0x6838bc;if(_0x5ef2f7[_0x4e1c('0x32')][_0x4e1c('0x3f')]){_0x8e3e14['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x4e1c('0x40')](_0x8e3e14);})[_0x4e1c('0x27')](function(_0xe26367){_0x1c4c4a[_0x4e1c('0x41')]=_0xe26367;return _0x1c4c4a;})[_0x4e1c('0x27')](respondWithFilteredResult(_0xeccf79,_0x8e3e14))[_0x4e1c('0x42')](handleError(_0xeccf79,null));};exports['show']=function(_0x18d021,_0x1da617){var _0x827f0a={'raw':!![],'where':{'id':_0x18d021[_0x4e1c('0x43')]['id']}},_0xdfb6d7={};_0xdfb6d7[_0x4e1c('0x31')]=_[_0x4e1c('0x44')](db[_0x4e1c('0x2e')][_0x4e1c('0x45')]);_0xdfb6d7[_0x4e1c('0x32')]=_[_0x4e1c('0x44')](_0x18d021['query']);_0xdfb6d7[_0x4e1c('0x3b')]=_[_0x4e1c('0x33')](_0xdfb6d7[_0x4e1c('0x31')],_0xdfb6d7[_0x4e1c('0x32')]);_0x827f0a[_0x4e1c('0x34')]=_[_0x4e1c('0x33')](_0xdfb6d7[_0x4e1c('0x31')],qs[_0x4e1c('0x35')](_0x18d021['query'][_0x4e1c('0x35')]));_0x827f0a['attributes']=_0x827f0a[_0x4e1c('0x34')][_0x4e1c('0x36')]?_0x827f0a['attributes']:_0xdfb6d7[_0x4e1c('0x31')];if(_0x18d021[_0x4e1c('0x32')]['includeAll']){_0x827f0a['include']=[{'all':!![]}];}_0x827f0a=_[_0x4e1c('0x3c')]({},_0x827f0a,_0x18d021[_0x4e1c('0x3e')]);return db[_0x4e1c('0x2e')][_0x4e1c('0x46')](_0x827f0a)['then'](handleEntityNotFound(_0x1da617,null))[_0x4e1c('0x27')](respondWithResult(_0x1da617,null))[_0x4e1c('0x42')](handleError(_0x1da617,null));};exports[_0x4e1c('0x26')]=function(_0x6fae67,_0x488fe4){if(_0x6fae67[_0x4e1c('0x47')]['id']){delete _0x6fae67[_0x4e1c('0x47')]['id'];}return db[_0x4e1c('0x2e')][_0x4e1c('0x46')]({'where':{'id':_0x6fae67[_0x4e1c('0x43')]['id']}})[_0x4e1c('0x27')](handleEntityNotFound(_0x488fe4,null))[_0x4e1c('0x27')](saveUpdates(_0x6fae67[_0x4e1c('0x47')],null))[_0x4e1c('0x27')](respondWithResult(_0x488fe4,null))['catch'](handleError(_0x488fe4,null));};exports[_0x4e1c('0x28')]=function(_0x50e872,_0x3b9baf){return db[_0x4e1c('0x2e')][_0x4e1c('0x46')]({'where':{'id':_0x50e872['params']['id']}})['then'](handleEntityNotFound(_0x3b9baf,null))[_0x4e1c('0x27')](removeEntity(_0x3b9baf,null))[_0x4e1c('0x42')](handleError(_0x3b9baf,null));};exports['describe']=function(_0x304b74,_0x304419){return db['CmHopperBlack']['describe']()[_0x4e1c('0x27')](respondWithResult(_0x304419,null))['catch'](handleError(_0x304419,null));};
\ No newline at end of file
+var _0x4c85=['error','stack','name','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','show','params','merge','body','catch','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','Content-Range','reject','save','update','then','destroy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4c85,0x1df));var _0x54c8=function(_0x3543a9,_0x23db6a){_0x3543a9=_0x3543a9-0x0;var _0x230377=_0x4c85[_0x3543a9];return _0x230377;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x54c8('0x0'));var zipdir=require(_0x54c8('0x1'));var jsonpatch=require(_0x54c8('0x2'));var rp=require(_0x54c8('0x3'));var moment=require('moment');var BPromise=require(_0x54c8('0x4'));var Mustache=require(_0x54c8('0x5'));var util=require(_0x54c8('0x6'));var path=require(_0x54c8('0x7'));var sox=require(_0x54c8('0x8'));var csv=require(_0x54c8('0x9'));var ejs=require(_0x54c8('0xa'));var fs=require('fs');var fs_extra=require(_0x54c8('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x54c8('0xc'));var jsforce=require(_0x54c8('0xd'));var deskjs=require(_0x54c8('0xe'));var toCsv=require(_0x54c8('0x9'));var querystring=require(_0x54c8('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x54c8('0x10'));var qs=require(_0x54c8('0x11'));var as=require(_0x54c8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x54c8('0x13'))(_0x54c8('0x14'));var utils=require('../../config/utils');var config=require(_0x54c8('0x15'));var licenseUtil=require(_0x54c8('0x16'));var db=require(_0x54c8('0x17'))['db'];function respondWithStatusCode(_0x1df60f,_0x4a7eeb){_0x4a7eeb=_0x4a7eeb||0xcc;return function(_0x3d5f3a){if(_0x3d5f3a){return _0x1df60f[_0x54c8('0x18')](_0x4a7eeb);}return _0x1df60f['status'](_0x4a7eeb)[_0x54c8('0x19')]();};}function respondWithResult(_0x366814,_0x18c22b){_0x18c22b=_0x18c22b||0xc8;return function(_0x431dee){if(_0x431dee){return _0x366814['status'](_0x18c22b)[_0x54c8('0x1a')](_0x431dee);}};}function respondWithFilteredResult(_0x14cf3f,_0x478b59){return function(_0x1b670c){if(_0x1b670c){var _0x52a182=typeof _0x478b59[_0x54c8('0x1b')]===_0x54c8('0x1c')&&typeof _0x478b59['limit']===_0x54c8('0x1c');var _0x12bfb0=_0x1b670c[_0x54c8('0x1d')];var _0x560045=_0x52a182?0x0:_0x478b59[_0x54c8('0x1b')];var _0x53fbfe=_0x52a182?_0x1b670c[_0x54c8('0x1d')]:_0x478b59['offset']+_0x478b59[_0x54c8('0x1e')];var _0x326d8a;if(_0x53fbfe>=_0x12bfb0){_0x53fbfe=_0x12bfb0;_0x326d8a=0xc8;}else{_0x326d8a=0xce;}_0x14cf3f[_0x54c8('0x1f')](_0x326d8a);return _0x14cf3f[_0x54c8('0x20')](_0x54c8('0x21'),_0x560045+'-'+_0x53fbfe+'/'+_0x12bfb0)[_0x54c8('0x1a')](_0x1b670c);}return null;};}function patchUpdates(_0x502e7b){return function(_0x2c95fb){try{jsonpatch['apply'](_0x2c95fb,_0x502e7b,!![]);}catch(_0x4cdb99){return BPromise[_0x54c8('0x22')](_0x4cdb99);}return _0x2c95fb[_0x54c8('0x23')]();};}function saveUpdates(_0x314561,_0x200b41){return function(_0x34bd10){if(_0x34bd10){return _0x34bd10[_0x54c8('0x24')](_0x314561)[_0x54c8('0x25')](function(_0x27acb7){return _0x27acb7;});}return null;};}function removeEntity(_0x2497a5,_0x3c9c3d){return function(_0x172d7e){if(_0x172d7e){return _0x172d7e[_0x54c8('0x26')]()[_0x54c8('0x25')](function(){_0x2497a5[_0x54c8('0x1f')](0xcc)[_0x54c8('0x19')]();});}};}function handleEntityNotFound(_0x12f8a0,_0x2921ce){return function(_0x22d6c4){if(!_0x22d6c4){_0x12f8a0[_0x54c8('0x18')](0x194);}return _0x22d6c4;};}function handleError(_0x486a72,_0x5bda7e){_0x5bda7e=_0x5bda7e||0x1f4;return function(_0x35796d){logger[_0x54c8('0x27')](_0x35796d[_0x54c8('0x28')]);if(_0x35796d[_0x54c8('0x29')]){delete _0x35796d[_0x54c8('0x29')];}_0x486a72['status'](_0x5bda7e)['send'](_0x35796d);};}exports[_0x54c8('0x2a')]=function(_0x1e293a,_0x3df9f6){var _0x3bad39={},_0x134971={},_0x561101={'count':0x0,'rows':[]};var _0x1c4043=_[_0x54c8('0x2b')](db[_0x54c8('0x2c')][_0x54c8('0x2d')],function(_0x4903d4){return{'name':_0x4903d4[_0x54c8('0x2e')],'type':_0x4903d4[_0x54c8('0x2f')][_0x54c8('0x30')]};});_0x134971[_0x54c8('0x31')]=_[_0x54c8('0x2b')](_0x1c4043,'name');_0x134971[_0x54c8('0x32')]=_[_0x54c8('0x33')](_0x1e293a[_0x54c8('0x32')]);_0x134971['filters']=_[_0x54c8('0x34')](_0x134971[_0x54c8('0x31')],_0x134971[_0x54c8('0x32')]);_0x3bad39[_0x54c8('0x35')]=_[_0x54c8('0x34')](_0x134971[_0x54c8('0x31')],qs[_0x54c8('0x36')](_0x1e293a[_0x54c8('0x32')][_0x54c8('0x36')]));_0x3bad39[_0x54c8('0x35')]=_0x3bad39[_0x54c8('0x35')][_0x54c8('0x37')]?_0x3bad39['attributes']:_0x134971[_0x54c8('0x31')];if(!_0x1e293a['query'][_0x54c8('0x38')]('nolimit')){_0x3bad39[_0x54c8('0x1e')]=qs[_0x54c8('0x1e')](_0x1e293a[_0x54c8('0x32')][_0x54c8('0x1e')]);_0x3bad39[_0x54c8('0x1b')]=qs['offset'](_0x1e293a[_0x54c8('0x32')]['offset']);}_0x3bad39[_0x54c8('0x39')]=qs[_0x54c8('0x3a')](_0x1e293a[_0x54c8('0x32')][_0x54c8('0x3a')]);_0x3bad39[_0x54c8('0x3b')]=qs[_0x54c8('0x3c')](_[_0x54c8('0x3d')](_0x1e293a[_0x54c8('0x32')],_0x134971['filters']),_0x1c4043);if(_0x1e293a[_0x54c8('0x32')][_0x54c8('0x3e')]){_0x3bad39[_0x54c8('0x3b')]=_['merge'](_0x3bad39[_0x54c8('0x3b')],{'$or':_['map'](_0x1c4043,function(_0x4370ea){if(_0x4370ea[_0x54c8('0x2f')]!==_0x54c8('0x3f')){var _0x43bd3c={};_0x43bd3c[_0x4370ea['name']]={'$like':'%'+_0x1e293a[_0x54c8('0x32')]['filter']+'%'};return _0x43bd3c;}})});}_0x3bad39=_['merge']({},_0x3bad39,_0x1e293a[_0x54c8('0x40')]);var _0x1ef534={'where':_0x3bad39[_0x54c8('0x3b')]};return db['CmHopperBlack'][_0x54c8('0x1d')](_0x1ef534)[_0x54c8('0x25')](function(_0x258c23){_0x561101[_0x54c8('0x1d')]=_0x258c23;if(_0x1e293a[_0x54c8('0x32')][_0x54c8('0x41')]){_0x3bad39[_0x54c8('0x42')]=[{'all':!![]}];}return db[_0x54c8('0x2c')]['findAll'](_0x3bad39);})[_0x54c8('0x25')](function(_0x3162ca){_0x561101['rows']=_0x3162ca;return _0x561101;})[_0x54c8('0x25')](respondWithFilteredResult(_0x3df9f6,_0x3bad39))['catch'](handleError(_0x3df9f6,null));};exports[_0x54c8('0x43')]=function(_0x3e988c,_0x191fdc){var _0x1307e7={'raw':!![],'where':{'id':_0x3e988c[_0x54c8('0x44')]['id']}},_0x6c2203={};_0x6c2203[_0x54c8('0x31')]=_['keys'](db[_0x54c8('0x2c')][_0x54c8('0x2d')]);_0x6c2203['query']=_[_0x54c8('0x33')](_0x3e988c[_0x54c8('0x32')]);_0x6c2203[_0x54c8('0x3c')]=_[_0x54c8('0x34')](_0x6c2203[_0x54c8('0x31')],_0x6c2203['query']);_0x1307e7[_0x54c8('0x35')]=_[_0x54c8('0x34')](_0x6c2203[_0x54c8('0x31')],qs[_0x54c8('0x36')](_0x3e988c[_0x54c8('0x32')][_0x54c8('0x36')]));_0x1307e7[_0x54c8('0x35')]=_0x1307e7[_0x54c8('0x35')][_0x54c8('0x37')]?_0x1307e7['attributes']:_0x6c2203[_0x54c8('0x31')];if(_0x3e988c['query'][_0x54c8('0x41')]){_0x1307e7[_0x54c8('0x42')]=[{'all':!![]}];}_0x1307e7=_[_0x54c8('0x45')]({},_0x1307e7,_0x3e988c[_0x54c8('0x40')]);return db[_0x54c8('0x2c')]['find'](_0x1307e7)['then'](handleEntityNotFound(_0x191fdc,null))['then'](respondWithResult(_0x191fdc,null))['catch'](handleError(_0x191fdc,null));};exports[_0x54c8('0x24')]=function(_0x32ae47,_0x1e0c37){if(_0x32ae47[_0x54c8('0x46')]['id']){delete _0x32ae47[_0x54c8('0x46')]['id'];}return db['CmHopperBlack']['find']({'where':{'id':_0x32ae47[_0x54c8('0x44')]['id']}})[_0x54c8('0x25')](handleEntityNotFound(_0x1e0c37,null))[_0x54c8('0x25')](saveUpdates(_0x32ae47[_0x54c8('0x46')],null))['then'](respondWithResult(_0x1e0c37,null))[_0x54c8('0x47')](handleError(_0x1e0c37,null));};exports['destroy']=function(_0x325af3,_0x58cfb4){return db[_0x54c8('0x2c')][_0x54c8('0x48')]({'where':{'id':_0x325af3[_0x54c8('0x44')]['id']}})[_0x54c8('0x25')](handleEntityNotFound(_0x58cfb4,null))['then'](removeEntity(_0x58cfb4,null))[_0x54c8('0x47')](handleError(_0x58cfb4,null));};exports[_0x54c8('0x49')]=function(_0x4f3f7e,_0x45d17a){return db['CmHopperBlack'][_0x54c8('0x49')]()[_0x54c8('0x25')](respondWithResult(_0x45d17a,null))['catch'](handleError(_0x45d17a,null));};
\ No newline at end of file
index dd52013..5542807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20da=['exports','define','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes'];(function(_0x2412a0,_0x10d1dc){var _0x5c2a3c=function(_0x530292){while(--_0x530292){_0x2412a0['push'](_0x2412a0['shift']());}};_0x5c2a3c(++_0x10d1dc);}(_0x20da,0x1af));var _0xa20d=function(_0x471fb,_0x4ff148){_0x471fb=_0x471fb-0x0;var _0x572226=_0x20da[_0x471fb];return _0x572226;};'use strict';var _=require(_0xa20d('0x0'));var util=require(_0xa20d('0x1'));var logger=require('../../config/logger')(_0xa20d('0x2'));var moment=require(_0xa20d('0x3'));var BPromise=require('bluebird');var rp=require(_0xa20d('0x4'));var fs=require('fs');var path=require(_0xa20d('0x5'));var rimraf=require(_0xa20d('0x6'));var config=require(_0xa20d('0x7'));var attributes=require(_0xa20d('0x8'));module[_0xa20d('0x9')]=function(_0x345a1c,_0x374564){return _0x345a1c[_0xa20d('0xa')]('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xadd2=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','CmHopperBlack','cm_hopper_black','util'];(function(_0x1c9c24,_0x2a517b){var _0x349c69=function(_0x259ff7){while(--_0x259ff7){_0x1c9c24['push'](_0x1c9c24['shift']());}};_0x349c69(++_0x2a517b);}(_0xadd2,0x1eb));var _0x2add=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xadd2[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x2add('0x0'));var logger=require(_0x2add('0x1'))(_0x2add('0x2'));var moment=require(_0x2add('0x3'));var BPromise=require(_0x2add('0x4'));var rp=require(_0x2add('0x5'));var fs=require('fs');var path=require(_0x2add('0x6'));var rimraf=require(_0x2add('0x7'));var config=require(_0x2add('0x8'));var attributes=require('./cmHopperBlack.attributes');module[_0x2add('0x9')]=function(_0xff0526,_0x46fedf){return _0xff0526['define'](_0x2add('0xa'),attributes,{'tableName':_0x2add('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 963b468..e24ca46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ff=['debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','error','CmHopperBlack,\x20%s,\x20%s','message','CmHopperBlack','findAll','options','limit','map','include','attributes','model','GetCmHopperBlack','stringify','catch','UpdateCmHopperBlack','update','body','raw','where','DestroyCmHopperBlack','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info'];(function(_0x5a9655,_0x460ed6){var _0x4ad2b8=function(_0x56411e){while(--_0x56411e){_0x5a9655['push'](_0x5a9655['shift']());}};_0x4ad2b8(++_0x460ed6);}(_0x51ff,0x11a));var _0xf51f=function(_0x421bca,_0x3f1361){_0x421bca=_0x421bca-0x0;var _0x57b845=_0x51ff[_0x421bca];return _0x57b845;};'use strict';var _=require(_0xf51f('0x0'));var util=require('util');var moment=require(_0xf51f('0x1'));var BPromise=require(_0xf51f('0x2'));var rs=require(_0xf51f('0x3'));var fs=require('fs');var Redis=require(_0xf51f('0x4'));var db=require(_0xf51f('0x5'))['db'];var utils=require(_0xf51f('0x6'));var logger=require('../../config/logger')(_0xf51f('0x7'));var config=require('../../config/environment');var jayson=require(_0xf51f('0x8'));var client=jayson[_0xf51f('0x9')][_0xf51f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x392157,_0x54211f,_0x3d7482){return new BPromise(function(_0x438d58,_0x72f131){return client[_0xf51f('0xb')](_0x392157,_0x3d7482)[_0xf51f('0xc')](function(_0x302c71){logger[_0xf51f('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x54211f,'request\x20sent');logger[_0xf51f('0xe')](_0xf51f('0xf'),_0x54211f,_0xf51f('0x10'),JSON['stringify'](_0x302c71));if(_0x302c71[_0xf51f('0x11')]){if(_0x302c71[_0xf51f('0x11')]['code']===0x1f4){logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x54211f,_0x302c71[_0xf51f('0x11')]['message']);return _0x72f131(_0x302c71['error'][_0xf51f('0x13')]);}logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x54211f,_0x302c71[_0xf51f('0x11')][_0xf51f('0x13')]);return _0x438d58(_0x302c71[_0xf51f('0x11')][_0xf51f('0x13')]);}else{logger[_0xf51f('0xd')](_0xf51f('0x12'),_0x54211f,_0xf51f('0x10'));_0x438d58(_0x302c71['result'][_0xf51f('0x13')]);}})['catch'](function(_0x1f6547){logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x54211f,_0x1f6547);_0x72f131(_0x1f6547);});});}exports['GetCmHopperBlack']=function(_0x13d684){var _0x5f58b4=this;return new Promise(function(_0x99945b,_0x324eb0){return db[_0xf51f('0x14')][_0xf51f('0x15')]({'raw':_0x13d684['options']?_0x13d684[_0xf51f('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x13d684[_0xf51f('0x16')]?_0x13d684[_0xf51f('0x16')]['where']||null:null,'attributes':_0x13d684[_0xf51f('0x16')]?_0x13d684['options']['attributes']||null:null,'limit':_0x13d684[_0xf51f('0x16')]?_0x13d684[_0xf51f('0x16')][_0xf51f('0x17')]||null:null,'include':_0x13d684['options']?_0x13d684[_0xf51f('0x16')]['include']?_[_0xf51f('0x18')](_0x13d684['options'][_0xf51f('0x19')],function(_0x5e02c0){return{'model':db[_0x5e02c0['model']],'as':_0x5e02c0['as'],'attributes':_0x5e02c0[_0xf51f('0x1a')],'include':_0x5e02c0[_0xf51f('0x19')]?_[_0xf51f('0x18')](_0x5e02c0['include'],function(_0x1f5c36){return{'model':db[_0x1f5c36[_0xf51f('0x1b')]],'as':_0x1f5c36['as'],'attributes':_0x1f5c36[_0xf51f('0x1a')],'include':_0x1f5c36[_0xf51f('0x19')]?_[_0xf51f('0x18')](_0x1f5c36[_0xf51f('0x19')],function(_0x195353){return{'model':db[_0x195353['model']],'as':_0x195353['as'],'attributes':_0x195353['attributes']};}):[]};}):[]};}):[]:[]})[_0xf51f('0xc')](function(_0x4bce62){logger[_0xf51f('0xd')](_0xf51f('0x1c'),_0x13d684);logger[_0xf51f('0xe')](_0xf51f('0x1c'),_0x13d684,JSON[_0xf51f('0x1d')](_0x4bce62));_0x99945b(_0x4bce62);})[_0xf51f('0x1e')](function(_0x34498d){logger[_0xf51f('0x11')]('GetCmHopperBlack',_0x34498d[_0xf51f('0x13')],_0x13d684);_0x324eb0(_0x5f58b4[_0xf51f('0x11')](0x1f4,_0x34498d['message']));});});};exports[_0xf51f('0x1f')]=function(_0x5d345c){var _0x36e096=this;return new Promise(function(_0x465031,_0x31de4f){return db[_0xf51f('0x14')][_0xf51f('0x20')](_0x5d345c[_0xf51f('0x21')],{'raw':_0x5d345c[_0xf51f('0x16')]?_0x5d345c[_0xf51f('0x16')][_0xf51f('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d345c[_0xf51f('0x16')]?_0x5d345c[_0xf51f('0x16')][_0xf51f('0x23')]||null:null,'attributes':_0x5d345c[_0xf51f('0x16')]?_0x5d345c[_0xf51f('0x16')][_0xf51f('0x1a')]||null:null,'limit':_0x5d345c[_0xf51f('0x16')]?_0x5d345c['options'][_0xf51f('0x17')]||null:null})[_0xf51f('0xc')](function(_0x211478){logger[_0xf51f('0xd')](_0xf51f('0x1f'),_0x5d345c);logger[_0xf51f('0xe')](_0xf51f('0x1f'),_0x5d345c,JSON[_0xf51f('0x1d')](_0x211478));_0x465031(_0x211478);})[_0xf51f('0x1e')](function(_0x4a99ac){logger[_0xf51f('0x11')](_0xf51f('0x1f'),_0x4a99ac['message'],_0x5d345c);_0x31de4f(_0x36e096[_0xf51f('0x11')](0x1f4,_0x4a99ac[_0xf51f('0x13')]));});});};exports['DestroyCmHopperBlack']=function(_0x56eb25){var _0xb74c7c=this;return new Promise(function(_0x43a89f,_0x52b28b){return db[_0xf51f('0x14')]['destroy']({'where':_0x56eb25['options']?_0x56eb25[_0xf51f('0x16')][_0xf51f('0x23')]||null:null})['then'](function(_0x2d4a0d){logger[_0xf51f('0xd')](_0xf51f('0x24'),_0x56eb25);logger[_0xf51f('0xe')](_0xf51f('0x24'),_0x56eb25,JSON[_0xf51f('0x1d')](_0x2d4a0d));_0x43a89f(_0x2d4a0d);})[_0xf51f('0x1e')](function(_0x288b8b){logger[_0xf51f('0x11')](_0xf51f('0x24'),_0x288b8b[_0xf51f('0x13')],_0x56eb25);_0x52b28b(_0xb74c7c['error'](0x1f4,_0x288b8b['message']));});});};
\ No newline at end of file
+var _0x5f0c=['DestroyCmHopperBlack','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch','GetCmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','CmHopperBlack','update','body','UpdateCmHopperBlack','destroy'];(function(_0x218dad,_0x246189){var _0x50ad4e=function(_0x50a706){while(--_0x50a706){_0x218dad['push'](_0x218dad['shift']());}};_0x50ad4e(++_0x246189);}(_0x5f0c,0xa1));var _0xc5f0=function(_0x1de2e2,_0x55f13c){_0x1de2e2=_0x1de2e2-0x0;var _0x4f02e7=_0x5f0c[_0x1de2e2];return _0x4f02e7;};'use strict';var _=require(_0xc5f0('0x0'));var util=require(_0xc5f0('0x1'));var moment=require(_0xc5f0('0x2'));var BPromise=require('bluebird');var rs=require(_0xc5f0('0x3'));var fs=require('fs');var Redis=require(_0xc5f0('0x4'));var db=require(_0xc5f0('0x5'))['db'];var utils=require(_0xc5f0('0x6'));var logger=require(_0xc5f0('0x7'))(_0xc5f0('0x8'));var config=require(_0xc5f0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc5f0('0xa')][_0xc5f0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f6aa6,_0x2caa4e,_0x46bf72){return new BPromise(function(_0x305034,_0x34c456){return client[_0xc5f0('0xc')](_0x3f6aa6,_0x46bf72)[_0xc5f0('0xd')](function(_0xf9eb12){logger[_0xc5f0('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x2caa4e,_0xc5f0('0xf'));logger[_0xc5f0('0x10')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x2caa4e,_0xc5f0('0xf'),JSON[_0xc5f0('0x11')](_0xf9eb12));if(_0xf9eb12[_0xc5f0('0x12')]){if(_0xf9eb12[_0xc5f0('0x12')][_0xc5f0('0x13')]===0x1f4){logger[_0xc5f0('0x12')](_0xc5f0('0x14'),_0x2caa4e,_0xf9eb12['error'][_0xc5f0('0x15')]);return _0x34c456(_0xf9eb12['error'][_0xc5f0('0x15')]);}logger['error'](_0xc5f0('0x14'),_0x2caa4e,_0xf9eb12[_0xc5f0('0x12')][_0xc5f0('0x15')]);return _0x305034(_0xf9eb12[_0xc5f0('0x12')][_0xc5f0('0x15')]);}else{logger[_0xc5f0('0xe')](_0xc5f0('0x14'),_0x2caa4e,_0xc5f0('0xf'));_0x305034(_0xf9eb12[_0xc5f0('0x16')][_0xc5f0('0x15')]);}})[_0xc5f0('0x17')](function(_0x507bdb){logger[_0xc5f0('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x2caa4e,_0x507bdb);_0x34c456(_0x507bdb);});});}exports[_0xc5f0('0x18')]=function(_0x53a20e){var _0x19caae=this;return new Promise(function(_0x3530c2,_0xc08eb1){return db['CmHopperBlack'][_0xc5f0('0x19')]({'raw':_0x53a20e[_0xc5f0('0x1a')]?_0x53a20e[_0xc5f0('0x1a')][_0xc5f0('0x1b')]===undefined?!![]:![]:!![],'where':_0x53a20e['options']?_0x53a20e['options'][_0xc5f0('0x1c')]||null:null,'attributes':_0x53a20e['options']?_0x53a20e[_0xc5f0('0x1a')][_0xc5f0('0x1d')]||null:null,'limit':_0x53a20e[_0xc5f0('0x1a')]?_0x53a20e[_0xc5f0('0x1a')][_0xc5f0('0x1e')]||null:null,'include':_0x53a20e['options']?_0x53a20e[_0xc5f0('0x1a')][_0xc5f0('0x1f')]?_[_0xc5f0('0x20')](_0x53a20e[_0xc5f0('0x1a')]['include'],function(_0x4ea4a8){return{'model':db[_0x4ea4a8[_0xc5f0('0x21')]],'as':_0x4ea4a8['as'],'attributes':_0x4ea4a8[_0xc5f0('0x1d')],'include':_0x4ea4a8[_0xc5f0('0x1f')]?_[_0xc5f0('0x20')](_0x4ea4a8[_0xc5f0('0x1f')],function(_0xb2d455){return{'model':db[_0xb2d455['model']],'as':_0xb2d455['as'],'attributes':_0xb2d455['attributes'],'include':_0xb2d455['include']?_['map'](_0xb2d455[_0xc5f0('0x1f')],function(_0x3096dd){return{'model':db[_0x3096dd[_0xc5f0('0x21')]],'as':_0x3096dd['as'],'attributes':_0x3096dd[_0xc5f0('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc5f0('0xd')](function(_0x3e4b66){logger[_0xc5f0('0xe')]('GetCmHopperBlack',_0x53a20e);logger[_0xc5f0('0x10')](_0xc5f0('0x18'),_0x53a20e,JSON[_0xc5f0('0x11')](_0x3e4b66));_0x3530c2(_0x3e4b66);})[_0xc5f0('0x17')](function(_0x31d153){logger[_0xc5f0('0x12')](_0xc5f0('0x18'),_0x31d153[_0xc5f0('0x15')],_0x53a20e);_0xc08eb1(_0x19caae[_0xc5f0('0x12')](0x1f4,_0x31d153[_0xc5f0('0x15')]));});});};exports['UpdateCmHopperBlack']=function(_0x587da4){var _0x1b5f83=this;return new Promise(function(_0x2aca42,_0x8c6c33){return db[_0xc5f0('0x22')][_0xc5f0('0x23')](_0x587da4[_0xc5f0('0x24')],{'raw':_0x587da4[_0xc5f0('0x1a')]?_0x587da4[_0xc5f0('0x1a')][_0xc5f0('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x587da4[_0xc5f0('0x1a')]?_0x587da4[_0xc5f0('0x1a')][_0xc5f0('0x1c')]||null:null,'attributes':_0x587da4[_0xc5f0('0x1a')]?_0x587da4['options'][_0xc5f0('0x1d')]||null:null,'limit':_0x587da4[_0xc5f0('0x1a')]?_0x587da4[_0xc5f0('0x1a')][_0xc5f0('0x1e')]||null:null})[_0xc5f0('0xd')](function(_0x333f36){logger[_0xc5f0('0xe')](_0xc5f0('0x25'),_0x587da4);logger[_0xc5f0('0x10')](_0xc5f0('0x25'),_0x587da4,JSON['stringify'](_0x333f36));_0x2aca42(_0x333f36);})[_0xc5f0('0x17')](function(_0x564807){logger[_0xc5f0('0x12')](_0xc5f0('0x25'),_0x564807[_0xc5f0('0x15')],_0x587da4);_0x8c6c33(_0x1b5f83[_0xc5f0('0x12')](0x1f4,_0x564807[_0xc5f0('0x15')]));});});};exports['DestroyCmHopperBlack']=function(_0x3b9567){var _0x503f79=this;return new Promise(function(_0x2f41f1,_0x30e680){return db[_0xc5f0('0x22')][_0xc5f0('0x26')]({'where':_0x3b9567[_0xc5f0('0x1a')]?_0x3b9567[_0xc5f0('0x1a')]['where']||null:null})[_0xc5f0('0xd')](function(_0x1edf24){logger[_0xc5f0('0xe')](_0xc5f0('0x27'),_0x3b9567);logger[_0xc5f0('0x10')]('DestroyCmHopperBlack',_0x3b9567,JSON[_0xc5f0('0x11')](_0x1edf24));_0x2f41f1(_0x1edf24);})['catch'](function(_0x423412){logger['error']('DestroyCmHopperBlack',_0x423412[_0xc5f0('0x15')],_0x3b9567);_0x30e680(_0x503f79['error'](0x1f4,_0x423412[_0xc5f0('0x15')]));});});};
\ No newline at end of file
index a828dbb..dd39014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','show','put','/:id','delete','exports'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x32f4,0x154));var _0x432f=function(_0x141b7b,_0x5b1c34){_0x141b7b=_0x141b7b-0x0;var _0x1bbf2f=_0x32f4[_0x141b7b];return _0x1bbf2f;};'use strict';var multer=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var path=require(_0x432f('0x2'));var timeout=require(_0x432f('0x3'));var express=require('express');var router=express[_0x432f('0x4')]();var fs_extra=require(_0x432f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var controller=require(_0x432f('0x8'));router[_0x432f('0x9')]('/',auth[_0x432f('0xa')](),controller['index']);router['get'](_0x432f('0xb'),auth[_0x432f('0xa')](),controller['describe']);router[_0x432f('0x9')]('/:id',auth[_0x432f('0xa')](),controller[_0x432f('0xc')]);router[_0x432f('0xd')](_0x432f('0xe'),auth[_0x432f('0xa')](),controller['update']);router[_0x432f('0xf')]('/:id',auth[_0x432f('0xa')](),controller['destroy']);module[_0x432f('0x10')]=router;
\ No newline at end of file
+var _0x1623=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmHopperBlack.controller','isAuthenticated','index','/describe','describe','get','/:id','show','put','update','delete','destroy','exports'];(function(_0x166886,_0x382754){var _0x29b31f=function(_0x21fa1f){while(--_0x21fa1f){_0x166886['push'](_0x166886['shift']());}};_0x29b31f(++_0x382754);}(_0x1623,0xab));var _0x3162=function(_0xa930c2,_0x14b513){_0xa930c2=_0xa930c2-0x0;var _0x4bda28=_0x1623[_0xa930c2];return _0x4bda28;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var fs_extra=require(_0x3162('0x4'));var auth=require(_0x3162('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3162('0x6'));router['get']('/',auth[_0x3162('0x7')](),controller[_0x3162('0x8')]);router['get'](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0xa')]);router[_0x3162('0xb')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0xd')]);router[_0x3162('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x3162('0xf')]);router[_0x3162('0x10')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0x11')]);module[_0x3162('0x12')]=router;
\ No newline at end of file
index e927368..75a8dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e9e=['STRING','DATE','INTEGER','getDataValue','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports'];(function(_0x40399b,_0x2d670){var _0x4fce11=function(_0x375c96){while(--_0x375c96){_0x40399b['push'](_0x40399b['shift']());}};_0x4fce11(++_0x2d670);}(_0x6e9e,0xc0));var _0xe6e9=function(_0x36d25e,_0x1a047d){_0x36d25e=_0x36d25e-0x0;var _0x4b95b8=_0x6e9e[_0x36d25e];return _0x4b95b8;};'use strict';var Sequelize=require(_0xe6e9('0x0'));var moment=require(_0xe6e9('0x1'));module[_0xe6e9('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xe6e9('0x3')]},'scheduledat':{'type':Sequelize[_0xe6e9('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe6e9('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xe6e9('0x3')]},'originatecalleridname':{'type':Sequelize[_0xe6e9('0x3')]},'calleridnum':{'type':Sequelize[_0xe6e9('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xe6e9('0x4')]},'responsetime':{'type':Sequelize[_0xe6e9('0x4')]},'answertime':{'type':Sequelize[_0xe6e9('0x4')]},'droptime':{'type':Sequelize[_0xe6e9('0x4')]},'endtime':{'type':Sequelize[_0xe6e9('0x4')]},'ringtime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe6e9('0x3')]},'campaign':{'type':Sequelize[_0xe6e9('0x3')]},'campaigntype':{'type':Sequelize[_0xe6e9('0x3')]},'membername':{'type':Sequelize[_0xe6e9('0x3')]},'reason':{'type':Sequelize[_0xe6e9('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xe6e9('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe6e9('0x3')]},'dispositionat':{'type':Sequelize[_0xe6e9('0x4')],'set':function(_0x5f5aa7){var _0x173057=this[_0xe6e9('0x6')](_0xe6e9('0x7'));if(_0x173057&&_0x5f5aa7){this[_0xe6e9('0x8')](_0xe6e9('0x9'),moment(_0x5f5aa7)[_0xe6e9('0xa')](moment(_0x173057),_0xe6e9('0xb')));}return this['setDataValue']('dispositionat',_0x5f5aa7);}},'amd':{'type':Sequelize[_0xe6e9('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe6e9('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0xe6e9('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe6e9('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xe6e9('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xe6e9('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0a03=['BOOLEAN','sequelize','moment','exports','STRING','INTEGER','DATE','getDataValue','endtime','followuptime','diff','seconds','setDataValue'];(function(_0xee122e,_0x58ef2e){var _0x34f98a=function(_0x18163e){while(--_0x18163e){_0xee122e['push'](_0xee122e['shift']());}};_0x34f98a(++_0x58ef2e);}(_0x0a03,0xeb));var _0x30a0=function(_0x35f9b9,_0xcc1731){_0x35f9b9=_0x35f9b9-0x0;var _0x277380=_0x0a03[_0x35f9b9];return _0x277380;};'use strict';var Sequelize=require(_0x30a0('0x0'));var moment=require(_0x30a0('0x1'));module[_0x30a0('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x30a0('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x30a0('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x30a0('0x3')]},'originatecalleridname':{'type':Sequelize[_0x30a0('0x3')]},'calleridnum':{'type':Sequelize[_0x30a0('0x3')]},'calleridname':{'type':Sequelize[_0x30a0('0x3')]},'starttime':{'type':Sequelize[_0x30a0('0x5')]},'responsetime':{'type':Sequelize[_0x30a0('0x5')]},'answertime':{'type':Sequelize[_0x30a0('0x5')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x30a0('0x5')]},'ringtime':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x30a0('0x3')]},'campaigntype':{'type':Sequelize[_0x30a0('0x3')]},'membername':{'type':Sequelize[_0x30a0('0x3')]},'reason':{'type':Sequelize[_0x30a0('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x30a0('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0x30a0('0x5')],'set':function(_0x5b4c54){var _0x5b3056=this[_0x30a0('0x6')](_0x30a0('0x7'));if(_0x5b3056&&_0x5b4c54){this['setDataValue'](_0x30a0('0x8'),moment(_0x5b4c54)[_0x30a0('0x9')](moment(_0x5b3056),_0x30a0('0xa')));}return this[_0x30a0('0xb')]('dispositionat',_0x5b4c54);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x30a0('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x30a0('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x30a0('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x30a0('0x5')]},'callback':{'type':Sequelize[_0x30a0('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x30a0('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x30a0('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x30a0('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x30a0('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x30a0('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index c9a978a..557c364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['sendStatus','end','json','offset','undefined','limit','count','set','apply','save','update','then','status','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','CmHopperFinal','includeAll','include','findAll','rows','show','params','fields','options','find','catch','describe','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','from','toString','state\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','into','CampaignId','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','state','calleridnum','group','checkContactHopper','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x297dae,_0x51d147){var _0x1240a2=function(_0x3327f8){while(--_0x3327f8){_0x297dae['push'](_0x297dae['shift']());}};_0x1240a2(++_0x51d147);}(_0x1967,0x173));var _0x7196=function(_0x2b79ea,_0x395076){_0x2b79ea=_0x2b79ea-0x0;var _0x566b06=_0x1967[_0x2b79ea];return _0x566b06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7196('0x0'));var zipdir=require(_0x7196('0x1'));var jsonpatch=require(_0x7196('0x2'));var rp=require(_0x7196('0x3'));var moment=require(_0x7196('0x4'));var BPromise=require(_0x7196('0x5'));var Mustache=require(_0x7196('0x6'));var util=require(_0x7196('0x7'));var path=require(_0x7196('0x8'));var sox=require(_0x7196('0x9'));var csv=require('to-csv');var ejs=require(_0x7196('0xa'));var fs=require('fs');var fs_extra=require(_0x7196('0xb'));var _=require(_0x7196('0xc'));var squel=require(_0x7196('0xd'));var crypto=require(_0x7196('0xe'));var jsforce=require(_0x7196('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7196('0x10'));var querystring=require(_0x7196('0x11'));var Papa=require(_0x7196('0x12'));var Redis=require(_0x7196('0x13'));var authService=require(_0x7196('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7196('0x15'));var logger=require(_0x7196('0x16'))(_0x7196('0x17'));var utils=require(_0x7196('0x18'));var config=require(_0x7196('0x19'));var licenseUtil=require(_0x7196('0x1a'));var db=require(_0x7196('0x1b'))['db'];function respondWithStatusCode(_0x325641,_0x24f1c3){_0x24f1c3=_0x24f1c3||0xcc;return function(_0xba707b){if(_0xba707b){return _0x325641[_0x7196('0x1c')](_0x24f1c3);}return _0x325641['status'](_0x24f1c3)[_0x7196('0x1d')]();};}function respondWithResult(_0x3feccd,_0x3545aa){_0x3545aa=_0x3545aa||0xc8;return function(_0xf098c1){if(_0xf098c1){return _0x3feccd['status'](_0x3545aa)[_0x7196('0x1e')](_0xf098c1);}};}function respondWithFilteredResult(_0x539414,_0xe32933){return function(_0x2590a6){if(_0x2590a6){var _0xf7e97=typeof _0xe32933[_0x7196('0x1f')]===_0x7196('0x20')&&typeof _0xe32933[_0x7196('0x21')]===_0x7196('0x20');var _0x1ed296=_0x2590a6[_0x7196('0x22')];var _0x32fe2b=_0xf7e97?0x0:_0xe32933[_0x7196('0x1f')];var _0x5b716a=_0xf7e97?_0x2590a6['count']:_0xe32933[_0x7196('0x1f')]+_0xe32933[_0x7196('0x21')];var _0x40418d;if(_0x5b716a>=_0x1ed296){_0x5b716a=_0x1ed296;_0x40418d=0xc8;}else{_0x40418d=0xce;}_0x539414['status'](_0x40418d);return _0x539414[_0x7196('0x23')]('Content-Range',_0x32fe2b+'-'+_0x5b716a+'/'+_0x1ed296)['json'](_0x2590a6);}return null;};}function patchUpdates(_0x296e07){return function(_0x627223){try{jsonpatch[_0x7196('0x24')](_0x627223,_0x296e07,!![]);}catch(_0x4ddf78){return BPromise['reject'](_0x4ddf78);}return _0x627223[_0x7196('0x25')]();};}function saveUpdates(_0x3cd8ff,_0x598a26){return function(_0x18649b){if(_0x18649b){return _0x18649b[_0x7196('0x26')](_0x3cd8ff)[_0x7196('0x27')](function(_0x18d389){return _0x18d389;});}return null;};}function removeEntity(_0x38b3d6,_0x549f34){return function(_0x3f8178){if(_0x3f8178){return _0x3f8178['destroy']()[_0x7196('0x27')](function(){_0x38b3d6[_0x7196('0x28')](0xcc)[_0x7196('0x1d')]();});}};}function handleEntityNotFound(_0xa69810,_0x70aa65){return function(_0x43f6a2){if(!_0x43f6a2){_0xa69810['sendStatus'](0x194);}return _0x43f6a2;};}function handleError(_0x57c404,_0x1482e5){_0x1482e5=_0x1482e5||0x1f4;return function(_0x2d284f){logger[_0x7196('0x29')](_0x2d284f['stack']);if(_0x2d284f['name']){delete _0x2d284f[_0x7196('0x2a')];}_0x57c404[_0x7196('0x28')](_0x1482e5)[_0x7196('0x2b')](_0x2d284f);};}exports['index']=function(_0x35eef9,_0x4ecea1){var _0x4fd339={},_0x59d79d={},_0x30151f={'count':0x0,'rows':[]};var _0x985727=_[_0x7196('0x2c')](db['CmHopperFinal'][_0x7196('0x2d')],function(_0x45d567){return{'name':_0x45d567[_0x7196('0x2e')],'type':_0x45d567[_0x7196('0x2f')]['key']};});_0x59d79d[_0x7196('0x30')]=_[_0x7196('0x2c')](_0x985727,_0x7196('0x2a'));_0x59d79d[_0x7196('0x31')]=_[_0x7196('0x32')](_0x35eef9[_0x7196('0x31')]);_0x59d79d[_0x7196('0x33')]=_[_0x7196('0x34')](_0x59d79d[_0x7196('0x30')],_0x59d79d[_0x7196('0x31')]);_0x4fd339[_0x7196('0x35')]=_['intersection'](_0x59d79d[_0x7196('0x30')],qs['fields'](_0x35eef9[_0x7196('0x31')]['fields']));_0x4fd339[_0x7196('0x35')]=_0x4fd339[_0x7196('0x35')]['length']?_0x4fd339[_0x7196('0x35')]:_0x59d79d[_0x7196('0x30')];if(!_0x35eef9[_0x7196('0x31')][_0x7196('0x36')](_0x7196('0x37'))){_0x4fd339['limit']=qs[_0x7196('0x21')](_0x35eef9[_0x7196('0x31')][_0x7196('0x21')]);_0x4fd339[_0x7196('0x1f')]=qs[_0x7196('0x1f')](_0x35eef9[_0x7196('0x31')]['offset']);}_0x4fd339[_0x7196('0x38')]=qs[_0x7196('0x39')](_0x35eef9[_0x7196('0x31')]['sort']);_0x4fd339[_0x7196('0x3a')]=qs[_0x7196('0x33')](_[_0x7196('0x3b')](_0x35eef9[_0x7196('0x31')],_0x59d79d[_0x7196('0x33')]),_0x985727);if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3c')]){_0x4fd339[_0x7196('0x3a')]=_[_0x7196('0x3d')](_0x4fd339[_0x7196('0x3a')],{'$or':_['map'](_0x985727,function(_0x257754){if(_0x257754[_0x7196('0x2f')]!=='VIRTUAL'){var _0x186efe={};_0x186efe[_0x257754['name']]={'$like':'%'+_0x35eef9['query'][_0x7196('0x3c')]+'%'};return _0x186efe;}})});}_0x4fd339=_[_0x7196('0x3d')]({},_0x4fd339,_0x35eef9['options']);var _0x587f6f={'where':_0x4fd339[_0x7196('0x3a')]};return db[_0x7196('0x3e')][_0x7196('0x22')](_0x587f6f)['then'](function(_0x36a990){_0x30151f[_0x7196('0x22')]=_0x36a990;if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3f')]){_0x4fd339[_0x7196('0x40')]=[{'all':!![]}];}return db[_0x7196('0x3e')][_0x7196('0x41')](_0x4fd339);})[_0x7196('0x27')](function(_0x5cd903){_0x30151f[_0x7196('0x42')]=_0x5cd903;return _0x30151f;})[_0x7196('0x27')](respondWithFilteredResult(_0x4ecea1,_0x4fd339))['catch'](handleError(_0x4ecea1,null));};exports[_0x7196('0x43')]=function(_0x43d4c0,_0x48178f){var _0x471915={'raw':!![],'where':{'id':_0x43d4c0[_0x7196('0x44')]['id']}},_0x471bb2={};_0x471bb2['model']=_[_0x7196('0x32')](db[_0x7196('0x3e')]['rawAttributes']);_0x471bb2[_0x7196('0x31')]=_[_0x7196('0x32')](_0x43d4c0['query']);_0x471bb2[_0x7196('0x33')]=_['intersection'](_0x471bb2['model'],_0x471bb2['query']);_0x471915['attributes']=_['intersection'](_0x471bb2[_0x7196('0x30')],qs['fields'](_0x43d4c0[_0x7196('0x31')][_0x7196('0x45')]));_0x471915[_0x7196('0x35')]=_0x471915[_0x7196('0x35')]['length']?_0x471915[_0x7196('0x35')]:_0x471bb2['model'];if(_0x43d4c0[_0x7196('0x31')][_0x7196('0x3f')]){_0x471915[_0x7196('0x40')]=[{'all':!![]}];}_0x471915=_['merge']({},_0x471915,_0x43d4c0[_0x7196('0x46')]);return db[_0x7196('0x3e')][_0x7196('0x47')](_0x471915)['then'](handleEntityNotFound(_0x48178f,null))['then'](respondWithResult(_0x48178f,null))[_0x7196('0x48')](handleError(_0x48178f,null));};exports['describe']=function(_0x29c7e8,_0x582884){return db['CmHopperFinal'][_0x7196('0x49')]()['then'](respondWithResult(_0x582884,null))['catch'](handleError(_0x582884,null));};exports['update']=function(_0x2299e2,_0x5052ee){if(_0x2299e2['body'][_0x7196('0x4a')]){delete _0x2299e2[_0x7196('0x4b')][_0x7196('0x4a')];}return db[_0x7196('0x3e')]['find']({'where':{'uniqueid':_0x2299e2[_0x7196('0x44')]['id']}})['then'](handleEntityNotFound(_0x5052ee,null))[_0x7196('0x27')](saveUpdates(_0x2299e2[_0x7196('0x4b')],null))['then'](respondWithResult(_0x5052ee,null))[_0x7196('0x48')](handleError(_0x5052ee,null));};exports[_0x7196('0x4c')]=function(_0x3fe092,_0x4fa18f,_0x317ab6){return db['CmHopperFinal'][_0x7196('0x41')]({'raw':![],'where':{'VoiceQueueId':_0x3fe092[_0x7196('0x44')]['id']},'attributes':[[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x50')))),'noSuchContacts'],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),_0x7196('0x51')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x52')))),_0x7196('0x53')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db['sequelize'][_0x7196('0x4f')](_0x7196('0x54')))),_0x7196('0x55')],[db['sequelize']['fn'](_0x7196('0x4e'),db['sequelize']['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x56')))),_0x7196('0x57')],[db[_0x7196('0x4d')]['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x7196('0x58')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x59')))),'reCallContacts'],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0x7196('0x27')](handleEntityNotFound(_0x4fa18f,null))[_0x7196('0x27')](respondWithResult(_0x4fa18f,null))[_0x7196('0x48')](handleError(_0x4fa18f,null));};exports[_0x7196('0x5a')]=function(_0x14cb38,_0x43b9ac,_0xe3fb61){return db[_0x7196('0x3e')][_0x7196('0x41')]({'raw':![],'where':{'CampaignId':_0x14cb38[_0x7196('0x44')]['id']},'attributes':[[db[_0x7196('0x4d')]['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x50')))),'noSuchContacts'],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x5b')))),_0x7196('0x51')],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x205,\x201,\x20null'))),_0x7196('0x53')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x54')))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db['sequelize'][_0x7196('0x4f')](_0x7196('0x56')))),_0x7196('0x57')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x5c')))),'abandonedContacts'],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x59')))),_0x7196('0x5d')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x7196('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x7196('0x5e')]]})['then'](handleEntityNotFound(_0x43b9ac,null))[_0x7196('0x27')](respondWithResult(_0x43b9ac,null))[_0x7196('0x48')](handleError(_0x43b9ac,null));};exports[_0x7196('0x5f')]=function(_0x267903,_0x5ab6ae,_0x5a786a){return db[_0x7196('0x60')]['find']({'where':{'id':_0x267903[_0x7196('0x44')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x5ab6ae,null))[_0x7196('0x27')](function(_0x38c1b3){var _0xd4c784;if(_0x38c1b3){_0xd4c784=squel[_0x7196('0x61')]()['into'](_0x7196('0x62'))[_0x7196('0x63')]([_0x7196('0x64'),_0x7196('0x65'),_0x7196('0x66'),_0x7196('0x67'),_0x7196('0x68'),_0x7196('0x69'),_0x7196('0x6a')],squel[_0x7196('0x6b')]()[_0x7196('0x6c')](_0x7196('0x6d'),'phone')[_0x7196('0x6c')](_0x7196('0x6e'),'scheduledAt')['field'](_0x7196('0x6f'),_0x7196('0x66'))[_0x7196('0x6c')]('ANY_VALUE(ListId)',_0x7196('0x67'))['field'](_0x7196('0x70'),_0x7196('0x68'))['field'](_0x7196('0x6e'),'createdAt')['field'](_0x7196('0x6e'),_0x7196('0x6a'))[_0x7196('0x71')]('cm_hopper_final')[_0x7196('0x3a')]('VoiceQueueId\x20=\x20?',_0x267903[_0x7196('0x44')]['id'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x73'),_0x267903[_0x7196('0x4b')]['state'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x74'))[_0x7196('0x3a')](_0x7196('0x75'),squel[_0x7196('0x6b')]()[_0x7196('0x6c')](_0x7196('0x64'))['from'](_0x7196('0x62'))[_0x7196('0x3a')](_0x7196('0x76'),_0x267903[_0x7196('0x44')]['id']['toString']()))[_0x7196('0x3a')](_0x7196('0x75'),squel['select']()[_0x7196('0x6c')]('calleridnum')[_0x7196('0x71')]('cm_hopper_final')[_0x7196('0x3a')](_0x7196('0x76'),_0x267903['params']['id'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x77')))['group']('ContactId'))[_0x7196('0x72')]();return db['sequelize']['query'](_0xd4c784);}return[];})[_0x7196('0x27')](respondWithResult(_0x5ab6ae,null))[_0x7196('0x48')](handleError(_0x5ab6ae,null));};exports[_0x7196('0x78')]=function(_0x509c4a,_0x35c5b3,_0x59370b){return db[_0x7196('0x79')][_0x7196('0x47')]({'where':{'id':_0x509c4a[_0x7196('0x44')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x35c5b3,null))[_0x7196('0x27')](function(_0x8673e){var _0x32ba47;if(_0x8673e){_0x32ba47=squel[_0x7196('0x61')]()[_0x7196('0x7a')]('cm_hopper')['fromQuery']([_0x7196('0x64'),'scheduledAt','ContactId',_0x7196('0x67'),_0x7196('0x7b'),_0x7196('0x69'),_0x7196('0x6a')],squel['select']()['field'](_0x7196('0x6d'),_0x7196('0x64'))[_0x7196('0x6c')](_0x7196('0x6e'),'scheduledAt')[_0x7196('0x6c')]('ANY_VALUE(ContactId)','ContactId')[_0x7196('0x6c')](_0x7196('0x7c'),_0x7196('0x67'))['field'](_0x7196('0x7d'),_0x7196('0x7b'))[_0x7196('0x6c')](_0x7196('0x6e'),_0x7196('0x69'))[_0x7196('0x6c')](_0x7196('0x6e'),_0x7196('0x6a'))['from'](_0x7196('0x7e'))[_0x7196('0x3a')](_0x7196('0x7f'),_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]())['where'](_0x7196('0x73'),_0x509c4a[_0x7196('0x4b')][_0x7196('0x80')]['toString']())[_0x7196('0x3a')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0x7196('0x75'),squel[_0x7196('0x6b')]()['field'](_0x7196('0x64'))[_0x7196('0x71')]('cm_hopper')[_0x7196('0x3a')](_0x7196('0x7f'),_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]()))[_0x7196('0x3a')](_0x7196('0x75'),squel['select']()[_0x7196('0x6c')](_0x7196('0x81'))[_0x7196('0x71')]('cm_hopper_final')['where']('CampaignId\x20=\x20?',_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]())[_0x7196('0x3a')]('state\x20=\x204'))[_0x7196('0x82')]('ContactId'))[_0x7196('0x72')]();return db['sequelize'][_0x7196('0x31')](_0x32ba47);}return[];})[_0x7196('0x27')](respondWithResult(_0x35c5b3,null))[_0x7196('0x48')](handleError(_0x35c5b3,null));};exports[_0x7196('0x83')]=function(_0x37290e,_0x10b628,_0x43e7d5){return db['CmHopper'][_0x7196('0x84')]({'where':{'VoiceQueueId':_0x37290e['body']['VoiceQueueId'],'CampaignId':_0x37290e['body']['CampaignId'],'ContactId':_0x37290e['body'][_0x7196('0x66')]}})[_0x7196('0x27')](handleEntityNotFound(_0x10b628,null))[_0x7196('0x27')](function(_0x5bab25){if(_0x5bab25){return _0x5bab25;}return null;})[_0x7196('0x27')](respondWithResult(_0x10b628,null))['catch'](handleError(_0x10b628,null));};
\ No newline at end of file
+var _0x71ab=['json','offset','undefined','limit','count','set','reject','update','then','destroy','error','stack','name','send','index','map','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','CmHopperFinal','findAll','rows','catch','show','params','rawAttributes','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','`state`\x20=\x203,\x201,\x20null','dropContacts','VoiceQueue','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','phone','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','VoiceQueueId','from','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','CampaignId','state','CampaignId\x20=\x20?','calleridnum','checkContactHopper','CmHopper','findOne','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x51f995,_0x7fb843){var _0x529810=function(_0x16435a){while(--_0x16435a){_0x51f995['push'](_0x51f995['shift']());}};_0x529810(++_0x7fb843);}(_0x71ab,0x64));var _0xb71a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x71ab[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb71a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb71a('0x1'));var rp=require('request-promise');var moment=require(_0xb71a('0x2'));var BPromise=require(_0xb71a('0x3'));var Mustache=require(_0xb71a('0x4'));var util=require(_0xb71a('0x5'));var path=require(_0xb71a('0x6'));var sox=require(_0xb71a('0x7'));var csv=require(_0xb71a('0x8'));var ejs=require(_0xb71a('0x9'));var fs=require('fs');var fs_extra=require(_0xb71a('0xa'));var _=require(_0xb71a('0xb'));var squel=require(_0xb71a('0xc'));var crypto=require(_0xb71a('0xd'));var jsforce=require(_0xb71a('0xe'));var deskjs=require(_0xb71a('0xf'));var toCsv=require(_0xb71a('0x8'));var querystring=require(_0xb71a('0x10'));var Papa=require(_0xb71a('0x11'));var Redis=require(_0xb71a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb71a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb71a('0x14'));var logger=require(_0xb71a('0x15'))(_0xb71a('0x16'));var utils=require('../../config/utils');var config=require(_0xb71a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xb71a('0x18'))['db'];function respondWithStatusCode(_0x50030d,_0x50b43b){_0x50b43b=_0x50b43b||0xcc;return function(_0x3346a5){if(_0x3346a5){return _0x50030d[_0xb71a('0x19')](_0x50b43b);}return _0x50030d[_0xb71a('0x1a')](_0x50b43b)[_0xb71a('0x1b')]();};}function respondWithResult(_0x483d77,_0x47ee48){_0x47ee48=_0x47ee48||0xc8;return function(_0x5364e3){if(_0x5364e3){return _0x483d77[_0xb71a('0x1a')](_0x47ee48)[_0xb71a('0x1c')](_0x5364e3);}};}function respondWithFilteredResult(_0x15252a,_0x42fc55){return function(_0x3cd0f0){if(_0x3cd0f0){var _0x1e9363=typeof _0x42fc55[_0xb71a('0x1d')]===_0xb71a('0x1e')&&typeof _0x42fc55[_0xb71a('0x1f')]==='undefined';var _0x1ca65e=_0x3cd0f0[_0xb71a('0x20')];var _0x374c8c=_0x1e9363?0x0:_0x42fc55[_0xb71a('0x1d')];var _0x2bdb61=_0x1e9363?_0x3cd0f0[_0xb71a('0x20')]:_0x42fc55[_0xb71a('0x1d')]+_0x42fc55[_0xb71a('0x1f')];var _0x20bdfe;if(_0x2bdb61>=_0x1ca65e){_0x2bdb61=_0x1ca65e;_0x20bdfe=0xc8;}else{_0x20bdfe=0xce;}_0x15252a[_0xb71a('0x1a')](_0x20bdfe);return _0x15252a[_0xb71a('0x21')]('Content-Range',_0x374c8c+'-'+_0x2bdb61+'/'+_0x1ca65e)['json'](_0x3cd0f0);}return null;};}function patchUpdates(_0x1358f2){return function(_0x578fe4){try{jsonpatch['apply'](_0x578fe4,_0x1358f2,!![]);}catch(_0x4d8871){return BPromise[_0xb71a('0x22')](_0x4d8871);}return _0x578fe4['save']();};}function saveUpdates(_0x76d6dc,_0x4227c7){return function(_0x3ac77b){if(_0x3ac77b){return _0x3ac77b[_0xb71a('0x23')](_0x76d6dc)[_0xb71a('0x24')](function(_0x14b2a1){return _0x14b2a1;});}return null;};}function removeEntity(_0x2f4fac,_0x14aac7){return function(_0x5f3f19){if(_0x5f3f19){return _0x5f3f19[_0xb71a('0x25')]()[_0xb71a('0x24')](function(){_0x2f4fac[_0xb71a('0x1a')](0xcc)[_0xb71a('0x1b')]();});}};}function handleEntityNotFound(_0x3401f7,_0x1a010d){return function(_0x20ed75){if(!_0x20ed75){_0x3401f7[_0xb71a('0x19')](0x194);}return _0x20ed75;};}function handleError(_0x31085b,_0x2a847a){_0x2a847a=_0x2a847a||0x1f4;return function(_0x45b849){logger[_0xb71a('0x26')](_0x45b849[_0xb71a('0x27')]);if(_0x45b849['name']){delete _0x45b849[_0xb71a('0x28')];}_0x31085b[_0xb71a('0x1a')](_0x2a847a)[_0xb71a('0x29')](_0x45b849);};}exports[_0xb71a('0x2a')]=function(_0x2fbd73,_0x38178c){var _0x44826e={},_0x25364c={},_0x42c086={'count':0x0,'rows':[]};var _0x421fcf=_[_0xb71a('0x2b')](db['CmHopperFinal']['rawAttributes'],function(_0x3112d3){return{'name':_0x3112d3['fieldName'],'type':_0x3112d3[_0xb71a('0x2c')][_0xb71a('0x2d')]};});_0x25364c['model']=_[_0xb71a('0x2b')](_0x421fcf,_0xb71a('0x28'));_0x25364c[_0xb71a('0x2e')]=_[_0xb71a('0x2f')](_0x2fbd73[_0xb71a('0x2e')]);_0x25364c[_0xb71a('0x30')]=_['intersection'](_0x25364c[_0xb71a('0x31')],_0x25364c[_0xb71a('0x2e')]);_0x44826e[_0xb71a('0x32')]=_[_0xb71a('0x33')](_0x25364c['model'],qs[_0xb71a('0x34')](_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x34')]));_0x44826e[_0xb71a('0x32')]=_0x44826e[_0xb71a('0x32')][_0xb71a('0x35')]?_0x44826e[_0xb71a('0x32')]:_0x25364c[_0xb71a('0x31')];if(!_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x36')]('nolimit')){_0x44826e['limit']=qs[_0xb71a('0x1f')](_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x1f')]);_0x44826e[_0xb71a('0x1d')]=qs[_0xb71a('0x1d')](_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x1d')]);}_0x44826e['order']=qs[_0xb71a('0x37')](_0x2fbd73['query'][_0xb71a('0x37')]);_0x44826e[_0xb71a('0x38')]=qs[_0xb71a('0x30')](_[_0xb71a('0x39')](_0x2fbd73['query'],_0x25364c[_0xb71a('0x30')]),_0x421fcf);if(_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x3a')]){_0x44826e[_0xb71a('0x38')]=_[_0xb71a('0x3b')](_0x44826e[_0xb71a('0x38')],{'$or':_[_0xb71a('0x2b')](_0x421fcf,function(_0x2756b9){if(_0x2756b9[_0xb71a('0x2c')]!=='VIRTUAL'){var _0x24a3af={};_0x24a3af[_0x2756b9['name']]={'$like':'%'+_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x3a')]+'%'};return _0x24a3af;}})});}_0x44826e=_[_0xb71a('0x3b')]({},_0x44826e,_0x2fbd73[_0xb71a('0x3c')]);var _0xce7b8a={'where':_0x44826e[_0xb71a('0x38')]};return db['CmHopperFinal']['count'](_0xce7b8a)['then'](function(_0x35fea9){_0x42c086['count']=_0x35fea9;if(_0x2fbd73[_0xb71a('0x2e')][_0xb71a('0x3d')]){_0x44826e[_0xb71a('0x3e')]=[{'all':!![]}];}return db[_0xb71a('0x3f')][_0xb71a('0x40')](_0x44826e);})[_0xb71a('0x24')](function(_0x59530a){_0x42c086[_0xb71a('0x41')]=_0x59530a;return _0x42c086;})[_0xb71a('0x24')](respondWithFilteredResult(_0x38178c,_0x44826e))[_0xb71a('0x42')](handleError(_0x38178c,null));};exports[_0xb71a('0x43')]=function(_0x7d305,_0x2f08d2){var _0x55cbca={'raw':!![],'where':{'id':_0x7d305[_0xb71a('0x44')]['id']}},_0x2afff3={};_0x2afff3[_0xb71a('0x31')]=_[_0xb71a('0x2f')](db[_0xb71a('0x3f')][_0xb71a('0x45')]);_0x2afff3[_0xb71a('0x2e')]=_['keys'](_0x7d305['query']);_0x2afff3[_0xb71a('0x30')]=_[_0xb71a('0x33')](_0x2afff3[_0xb71a('0x31')],_0x2afff3[_0xb71a('0x2e')]);_0x55cbca['attributes']=_[_0xb71a('0x33')](_0x2afff3['model'],qs[_0xb71a('0x34')](_0x7d305[_0xb71a('0x2e')]['fields']));_0x55cbca[_0xb71a('0x32')]=_0x55cbca[_0xb71a('0x32')][_0xb71a('0x35')]?_0x55cbca[_0xb71a('0x32')]:_0x2afff3['model'];if(_0x7d305[_0xb71a('0x2e')][_0xb71a('0x3d')]){_0x55cbca[_0xb71a('0x3e')]=[{'all':!![]}];}_0x55cbca=_['merge']({},_0x55cbca,_0x7d305[_0xb71a('0x3c')]);return db[_0xb71a('0x3f')][_0xb71a('0x46')](_0x55cbca)['then'](handleEntityNotFound(_0x2f08d2,null))[_0xb71a('0x24')](respondWithResult(_0x2f08d2,null))[_0xb71a('0x42')](handleError(_0x2f08d2,null));};exports[_0xb71a('0x47')]=function(_0x1f29b7,_0x365bed){return db['CmHopperFinal'][_0xb71a('0x47')]()[_0xb71a('0x24')](respondWithResult(_0x365bed,null))[_0xb71a('0x42')](handleError(_0x365bed,null));};exports[_0xb71a('0x23')]=function(_0x489c1f,_0x48fbde){if(_0x489c1f[_0xb71a('0x48')][_0xb71a('0x49')]){delete _0x489c1f[_0xb71a('0x48')][_0xb71a('0x49')];}return db[_0xb71a('0x3f')][_0xb71a('0x46')]({'where':{'uniqueid':_0x489c1f[_0xb71a('0x44')]['id']}})[_0xb71a('0x24')](handleEntityNotFound(_0x48fbde,null))[_0xb71a('0x24')](saveUpdates(_0x489c1f[_0xb71a('0x48')],null))['then'](respondWithResult(_0x48fbde,null))[_0xb71a('0x42')](handleError(_0x48fbde,null));};exports[_0xb71a('0x4a')]=function(_0x500196,_0x1c0536,_0x58116c){return db[_0xb71a('0x3f')][_0xb71a('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x500196[_0xb71a('0x44')]['id']},'attributes':[[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db['sequelize']['fn']('IF',db[_0xb71a('0x4b')]['literal'](_0xb71a('0x4d')))),_0xb71a('0x4e')],[db['sequelize']['fn']('COUNT',db[_0xb71a('0x4b')]['fn']('IF',db[_0xb71a('0x4b')]['literal']('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0xb71a('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb71a('0x4b')][_0xb71a('0x4f')](_0xb71a('0x50')))),_0xb71a('0x51')],[db['sequelize']['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db[_0xb71a('0x4b')]['literal'](_0xb71a('0x52')))),_0xb71a('0x53')],[db['sequelize']['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db[_0xb71a('0x4b')]['literal'](_0xb71a('0x54')))),'dropContacts'],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db['sequelize']['fn']('IF',db[_0xb71a('0x4b')][_0xb71a('0x4f')](_0xb71a('0x55')))),_0xb71a('0x56')],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db['sequelize']['literal'](_0xb71a('0x57')))),_0xb71a('0x58')],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db['sequelize']['literal'](_0xb71a('0x59')))),_0xb71a('0x5a')]]})['then'](handleEntityNotFound(_0x1c0536,null))[_0xb71a('0x24')](respondWithResult(_0x1c0536,null))[_0xb71a('0x42')](handleError(_0x1c0536,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x181a9f,_0xe55672,_0x38de3a){return db[_0xb71a('0x3f')]['findAll']({'raw':![],'where':{'CampaignId':_0x181a9f[_0xb71a('0x44')]['id']},'attributes':[[db[_0xb71a('0x4b')]['fn']('COUNT',db[_0xb71a('0x4b')]['fn']('IF',db[_0xb71a('0x4b')][_0xb71a('0x4f')](_0xb71a('0x4d')))),_0xb71a('0x4e')],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db['sequelize'][_0xb71a('0x4f')](_0xb71a('0x5b')))),'noAnswerContacts'],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db['sequelize']['fn']('IF',db[_0xb71a('0x4b')][_0xb71a('0x4f')](_0xb71a('0x50')))),_0xb71a('0x51')],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db['sequelize']['fn']('IF',db['sequelize'][_0xb71a('0x4f')](_0xb71a('0x52')))),_0xb71a('0x53')],[db['sequelize']['fn'](_0xb71a('0x4c'),db['sequelize']['fn']('IF',db[_0xb71a('0x4b')]['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xb71a('0x5c')],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db[_0xb71a('0x4b')]['literal'](_0xb71a('0x55')))),'abandonedContacts'],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db['sequelize']['literal'](_0xb71a('0x57')))),_0xb71a('0x58')],[db[_0xb71a('0x4b')]['fn'](_0xb71a('0x4c'),db[_0xb71a('0x4b')]['fn']('IF',db['sequelize'][_0xb71a('0x4f')](_0xb71a('0x59')))),_0xb71a('0x5a')]]})[_0xb71a('0x24')](handleEntityNotFound(_0xe55672,null))[_0xb71a('0x24')](respondWithResult(_0xe55672,null))['catch'](handleError(_0xe55672,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x15b8be,_0x2dd470,_0x38a8a1){return db[_0xb71a('0x5d')][_0xb71a('0x46')]({'where':{'id':_0x15b8be[_0xb71a('0x44')]['id']}})[_0xb71a('0x24')](handleEntityNotFound(_0x2dd470,null))['then'](function(_0x45f4b2){var _0x27c15e;if(_0x45f4b2){_0x27c15e=squel['insert']()[_0xb71a('0x5e')](_0xb71a('0x5f'))[_0xb71a('0x60')](['phone',_0xb71a('0x61'),_0xb71a('0x62'),_0xb71a('0x63'),'VoiceQueueId',_0xb71a('0x64'),_0xb71a('0x65')],squel[_0xb71a('0x66')]()[_0xb71a('0x67')](_0xb71a('0x68'),_0xb71a('0x69'))[_0xb71a('0x67')](_0xb71a('0x6a'),'scheduledAt')[_0xb71a('0x67')](_0xb71a('0x6b'),_0xb71a('0x62'))[_0xb71a('0x67')](_0xb71a('0x6c'),_0xb71a('0x63'))[_0xb71a('0x67')]('ANY_VALUE(VoiceQueueId)',_0xb71a('0x6d'))['field'](_0xb71a('0x6a'),_0xb71a('0x64'))['field'](_0xb71a('0x6a'),'updatedAt')[_0xb71a('0x6e')]('cm_hopper_final')[_0xb71a('0x38')](_0xb71a('0x6f'),_0x15b8be[_0xb71a('0x44')]['id'][_0xb71a('0x70')]())['where'](_0xb71a('0x71'),_0x15b8be[_0xb71a('0x48')]['state'][_0xb71a('0x70')]())['where']('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xb71a('0x66')]()[_0xb71a('0x67')](_0xb71a('0x69'))['from'](_0xb71a('0x5f'))[_0xb71a('0x38')]('VoiceQueueId\x20=\x20?',_0x15b8be[_0xb71a('0x44')]['id'][_0xb71a('0x70')]()))[_0xb71a('0x38')](_0xb71a('0x72'),squel[_0xb71a('0x66')]()[_0xb71a('0x67')]('calleridnum')[_0xb71a('0x6e')](_0xb71a('0x73'))[_0xb71a('0x38')](_0xb71a('0x6f'),_0x15b8be[_0xb71a('0x44')]['id'][_0xb71a('0x70')]())['where'](_0xb71a('0x74')))[_0xb71a('0x75')]('ContactId'))[_0xb71a('0x70')]();return db[_0xb71a('0x4b')][_0xb71a('0x2e')](_0x27c15e);}return[];})['then'](respondWithResult(_0x2dd470,null))[_0xb71a('0x42')](handleError(_0x2dd470,null));};exports[_0xb71a('0x76')]=function(_0x28bc74,_0x575a0a,_0x1a658e){return db[_0xb71a('0x77')]['find']({'where':{'id':_0x28bc74[_0xb71a('0x44')]['id']}})[_0xb71a('0x24')](handleEntityNotFound(_0x575a0a,null))[_0xb71a('0x24')](function(_0x21b9b5){var _0x4abfd6;if(_0x21b9b5){_0x4abfd6=squel[_0xb71a('0x78')]()[_0xb71a('0x5e')](_0xb71a('0x5f'))[_0xb71a('0x60')](['phone',_0xb71a('0x61'),_0xb71a('0x62'),'ListId',_0xb71a('0x79'),_0xb71a('0x64'),'updatedAt'],squel[_0xb71a('0x66')]()[_0xb71a('0x67')](_0xb71a('0x68'),'phone')[_0xb71a('0x67')](_0xb71a('0x6a'),_0xb71a('0x61'))[_0xb71a('0x67')](_0xb71a('0x6b'),_0xb71a('0x62'))[_0xb71a('0x67')](_0xb71a('0x6c'),_0xb71a('0x63'))['field']('ANY_VALUE(CampaignId)',_0xb71a('0x79'))[_0xb71a('0x67')](_0xb71a('0x6a'),_0xb71a('0x64'))[_0xb71a('0x67')](_0xb71a('0x6a'),'updatedAt')[_0xb71a('0x6e')]('cm_hopper_final')[_0xb71a('0x38')]('CampaignId\x20=\x20?',_0x28bc74[_0xb71a('0x44')]['id'][_0xb71a('0x70')]())['where'](_0xb71a('0x71'),_0x28bc74[_0xb71a('0x48')][_0xb71a('0x7a')][_0xb71a('0x70')]())[_0xb71a('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')[_0xb71a('0x38')](_0xb71a('0x72'),squel['select']()[_0xb71a('0x67')](_0xb71a('0x69'))['from'](_0xb71a('0x5f'))[_0xb71a('0x38')](_0xb71a('0x7b'),_0x28bc74['params']['id'][_0xb71a('0x70')]()))[_0xb71a('0x38')](_0xb71a('0x72'),squel['select']()[_0xb71a('0x67')](_0xb71a('0x7c'))[_0xb71a('0x6e')](_0xb71a('0x73'))[_0xb71a('0x38')]('CampaignId\x20=\x20?',_0x28bc74[_0xb71a('0x44')]['id']['toString']())[_0xb71a('0x38')](_0xb71a('0x74')))[_0xb71a('0x75')]('ContactId'))['toString']();return db[_0xb71a('0x4b')][_0xb71a('0x2e')](_0x4abfd6);}return[];})[_0xb71a('0x24')](respondWithResult(_0x575a0a,null))[_0xb71a('0x42')](handleError(_0x575a0a,null));};exports[_0xb71a('0x7d')]=function(_0x18dfb3,_0x38ffc1,_0x442ec0){return db[_0xb71a('0x7e')][_0xb71a('0x7f')]({'where':{'VoiceQueueId':_0x18dfb3[_0xb71a('0x48')][_0xb71a('0x6d')],'CampaignId':_0x18dfb3[_0xb71a('0x48')][_0xb71a('0x79')],'ContactId':_0x18dfb3[_0xb71a('0x48')]['ContactId']}})[_0xb71a('0x24')](handleEntityNotFound(_0x38ffc1,null))[_0xb71a('0x24')](function(_0x243c90){if(_0x243c90){return _0x243c90;}return null;})['then'](respondWithResult(_0x38ffc1,null))['catch'](handleError(_0x38ffc1,null));};
\ No newline at end of file
index cae07d7..fa03476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ea=['CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./cmHopperFinal.attributes','exports','define'];(function(_0x2b2ab7,_0x2a2f6b){var _0x44f5db=function(_0x170b1f){while(--_0x170b1f){_0x2b2ab7['push'](_0x2b2ab7['shift']());}};_0x44f5db(++_0x2a2f6b);}(_0x54ea,0xe5));var _0xa54e=function(_0x1a95e1,_0x57a208){_0x1a95e1=_0x1a95e1-0x0;var _0x3f100c=_0x54ea[_0x1a95e1];return _0x3f100c;};'use strict';var _=require(_0xa54e('0x0'));var util=require(_0xa54e('0x1'));var logger=require(_0xa54e('0x2'))(_0xa54e('0x3'));var moment=require(_0xa54e('0x4'));var BPromise=require(_0xa54e('0x5'));var rp=require(_0xa54e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa54e('0x7'));var attributes=require(_0xa54e('0x8'));module[_0xa54e('0x9')]=function(_0x1b06a0,_0xf395f0){return _0x1b06a0[_0xa54e('0xa')](_0xa54e('0xb'),attributes,{'tableName':_0xa54e('0xc'),'paranoid':![],'indexes':[{'name':_0xa54e('0xd'),'fields':[_0xa54e('0xd')]},{'name':_0xa54e('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd40b=['exports','calleridnum','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','./cmHopperFinal.attributes'];(function(_0x3ae0b2,_0xc1add2){var _0xfd32b4=function(_0xcfe7a2){while(--_0xcfe7a2){_0x3ae0b2['push'](_0x3ae0b2['shift']());}};_0xfd32b4(++_0xc1add2);}(_0xd40b,0x100));var _0xbd40=function(_0x5e6738,_0x66791b){_0x5e6738=_0x5e6738-0x0;var _0xec4b97=_0xd40b[_0x5e6738];return _0xec4b97;};'use strict';var _=require(_0xbd40('0x0'));var util=require(_0xbd40('0x1'));var logger=require(_0xbd40('0x2'))(_0xbd40('0x3'));var moment=require('moment');var BPromise=require(_0xbd40('0x4'));var rp=require(_0xbd40('0x5'));var fs=require('fs');var path=require(_0xbd40('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbd40('0x7'));module[_0xbd40('0x8')]=function(_0x3c2c36,_0x4e3649){return _0x3c2c36['define']('CmHopperFinal',attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0xbd40('0x9')]},{'name':_0xbd40('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index feab8f5..62a175e 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(_0x619d4b,_0x29a1ca){var _0x93fb06=function(_0x4f214a){while(--_0x4f214a){_0x619d4b['push'](_0x619d4b['shift']());}};_0x93fb06(++_0x29a1ca);}(_0xb10b,0x12a));var _0xbb10=function(_0x4503f6,_0x3babaf){_0x4503f6=_0x4503f6-0x0;var _0x2277d1=_0xb10b[_0x4503f6];return _0x2277d1;};'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(_0x23cac2,_0x3c0492){var _0x245504=function(_0x5f52ef){while(--_0x5f52ef){_0x23cac2['push'](_0x23cac2['shift']());}};_0x245504(++_0x3c0492);}(_0xb10b,0x12a));var _0xbb10=function(_0x423797,_0x3d393b){_0x423797=_0x423797-0x0;var _0x57ec0c=_0xb10b[_0x423797];return _0x57ec0c;};'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 e5f69b2..aa0b185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x753e=['put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x753e,0x18c));var _0xe753=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x753e[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0xe753('0x0'));var util=require(_0xe753('0x1'));var path=require(_0xe753('0x2'));var timeout=require(_0xe753('0x3'));var express=require(_0xe753('0x4'));var router=express[_0xe753('0x5')]();var fs_extra=require(_0xe753('0x6'));var auth=require(_0xe753('0x7'));var interaction=require(_0xe753('0x8'));var config=require(_0xe753('0x9'));var controller=require(_0xe753('0xa'));router[_0xe753('0xb')]('/',auth[_0xe753('0xc')](),controller[_0xe753('0xd')]);router[_0xe753('0xb')]('/describe',auth[_0xe753('0xc')](),controller[_0xe753('0xe')]);router[_0xe753('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xe753('0xf')]);router['get'](_0xe753('0x10'),auth[_0xe753('0xc')](),controller[_0xe753('0x11')]);router[_0xe753('0xb')](_0xe753('0x12'),auth[_0xe753('0xc')](),controller['countContactsIvrCampaignHopperFinal']);router[_0xe753('0x13')](_0xe753('0x14'),auth[_0xe753('0xc')](),controller[_0xe753('0x15')]);router[_0xe753('0x13')](_0xe753('0x16'),auth['isAuthenticated'](),controller['moveContactsIvrCampaignHopperFinal']);router['post'](_0xe753('0x17'),auth[_0xe753('0xc')](),controller['checkContactHopper']);router[_0xe753('0x18')](_0xe753('0x19'),auth[_0xe753('0xc')](),controller[_0xe753('0x1a')]);module[_0xe753('0x1b')]=router;
\ No newline at end of file
+var _0xb678=['countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','multer','util','express','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb678,0x6a));var _0x8b67=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xb678[_0x2d2c16];return _0x53f2fb;};'use strict';var multer=require(_0x8b67('0x0'));var util=require(_0x8b67('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8b67('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8b67('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router[_0x8b67('0x4')]('/',auth[_0x8b67('0x5')](),controller[_0x8b67('0x6')]);router[_0x8b67('0x4')](_0x8b67('0x7'),auth[_0x8b67('0x5')](),controller[_0x8b67('0x8')]);router[_0x8b67('0x4')](_0x8b67('0x9'),auth['isAuthenticated'](),controller[_0x8b67('0xa')]);router[_0x8b67('0x4')](_0x8b67('0xb'),auth['isAuthenticated'](),controller[_0x8b67('0xc')]);router[_0x8b67('0x4')](_0x8b67('0xd'),auth[_0x8b67('0x5')](),controller[_0x8b67('0xe')]);router[_0x8b67('0xf')](_0x8b67('0x10'),auth[_0x8b67('0x5')](),controller[_0x8b67('0x11')]);router['post'](_0x8b67('0x12'),auth['isAuthenticated'](),controller[_0x8b67('0x13')]);router['post']('/checkContactHopper',auth[_0x8b67('0x5')](),controller[_0x8b67('0x14')]);router[_0x8b67('0x15')](_0x8b67('0x9'),auth[_0x8b67('0x5')](),controller[_0x8b67('0x16')]);module[_0x8b67('0x17')]=router;
\ No newline at end of file
index e32d4a5..336c493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6948=['BOOLEAN','sequelize','exports','DATE','INTEGER','STRING'];(function(_0x102b2b,_0xb0c4b8){var _0x47574e=function(_0x2ef1f2){while(--_0x2ef1f2){_0x102b2b['push'](_0x102b2b['shift']());}};_0x47574e(++_0xb0c4b8);}(_0x6948,0x9d));var _0x8694=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6948[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0x8694('0x0'));module[_0x8694('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x8694('0x2')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x8694('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x8694('0x4')]},'originatecalleridname':{'type':Sequelize[_0x8694('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x8694('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x8694('0x2')]},'answertime':{'type':Sequelize[_0x8694('0x2')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x8694('0x2')]},'ringtime':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x8694('0x4')]},'campaign':{'type':Sequelize[_0x8694('0x4')]},'campaigntype':{'type':Sequelize[_0x8694('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x8694('0x4')]},'amd':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x8694('0x2')]},'recallme':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x8694('0x2')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x24f9=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x4a4036,_0x471b48){var _0x2f121e=function(_0x43436a){while(--_0x43436a){_0x4a4036['push'](_0x4a4036['shift']());}};_0x2f121e(++_0x471b48);}(_0x24f9,0x1dd));var _0x924f=function(_0x2dc4c5,_0xa63e2e){_0x2dc4c5=_0x2dc4c5-0x0;var _0x5607ab=_0x24f9[_0x2dc4c5];return _0x5607ab;};'use strict';var Sequelize=require(_0x924f('0x0'));module[_0x924f('0x1')]={'state':{'type':Sequelize[_0x924f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x924f('0x3')]},'scheduledat':{'type':Sequelize[_0x924f('0x4')]},'countbusyretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x924f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x924f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x924f('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x924f('0x4')]},'responsetime':{'type':Sequelize[_0x924f('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x924f('0x4')]},'endtime':{'type':Sequelize[_0x924f('0x4')]},'ringtime':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x924f('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x924f('0x3')]},'amd':{'type':Sequelize[_0x924f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x924f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x924f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x924f('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x924f('0x4')]},'edited':{'type':Sequelize[_0x924f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x924f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 379e322..9071811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf60a=['update','then','destroy','end','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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','../../config/license/util','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save'];(function(_0x22d7e6,_0xa620e7){var _0x72bc58=function(_0x2c75f6){while(--_0x2c75f6){_0x22d7e6['push'](_0x22d7e6['shift']());}};_0x72bc58(++_0xa620e7);}(_0xf60a,0x116));var _0xaf60=function(_0x8036e9,_0xb2a199){_0x8036e9=_0x8036e9-0x0;var _0x34a8eb=_0xf60a[_0x8036e9];return _0x34a8eb;};'use strict';var emlformat=require(_0xaf60('0x0'));var rimraf=require(_0xaf60('0x1'));var zipdir=require(_0xaf60('0x2'));var jsonpatch=require(_0xaf60('0x3'));var rp=require(_0xaf60('0x4'));var moment=require(_0xaf60('0x5'));var BPromise=require(_0xaf60('0x6'));var Mustache=require(_0xaf60('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xaf60('0x8'));var ejs=require(_0xaf60('0x9'));var fs=require('fs');var fs_extra=require(_0xaf60('0xa'));var _=require('lodash');var squel=require(_0xaf60('0xb'));var crypto=require(_0xaf60('0xc'));var jsforce=require(_0xaf60('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaf60('0x8'));var querystring=require(_0xaf60('0xe'));var Papa=require(_0xaf60('0xf'));var Redis=require(_0xaf60('0x10'));var authService=require(_0xaf60('0x11'));var qs=require(_0xaf60('0x12'));var as=require(_0xaf60('0x13'));var hardwareService=require(_0xaf60('0x14'));var logger=require(_0xaf60('0x15'))(_0xaf60('0x16'));var utils=require(_0xaf60('0x17'));var config=require(_0xaf60('0x18'));var licenseUtil=require(_0xaf60('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1eb82a,_0x1480e7){_0x1480e7=_0x1480e7||0xcc;return function(_0x589970){if(_0x589970){return _0x1eb82a[_0xaf60('0x1a')](_0x1480e7);}return _0x1eb82a[_0xaf60('0x1b')](_0x1480e7)['end']();};}function respondWithResult(_0xd2689b,_0x22fd3e){_0x22fd3e=_0x22fd3e||0xc8;return function(_0x4bd255){if(_0x4bd255){return _0xd2689b[_0xaf60('0x1b')](_0x22fd3e)[_0xaf60('0x1c')](_0x4bd255);}};}function respondWithFilteredResult(_0x4eabd7,_0x1f926a){return function(_0x28003a){if(_0x28003a){var _0x49bb85=typeof _0x1f926a['offset']===_0xaf60('0x1d')&&typeof _0x1f926a[_0xaf60('0x1e')]==='undefined';var _0x208d50=_0x28003a['count'];var _0x18d7cc=_0x49bb85?0x0:_0x1f926a[_0xaf60('0x1f')];var _0x361920=_0x49bb85?_0x28003a[_0xaf60('0x20')]:_0x1f926a[_0xaf60('0x1f')]+_0x1f926a[_0xaf60('0x1e')];var _0x1fb589;if(_0x361920>=_0x208d50){_0x361920=_0x208d50;_0x1fb589=0xc8;}else{_0x1fb589=0xce;}_0x4eabd7['status'](_0x1fb589);return _0x4eabd7[_0xaf60('0x21')](_0xaf60('0x22'),_0x18d7cc+'-'+_0x361920+'/'+_0x208d50)[_0xaf60('0x1c')](_0x28003a);}return null;};}function patchUpdates(_0x1b7b69){return function(_0x1197d9){try{jsonpatch[_0xaf60('0x23')](_0x1197d9,_0x1b7b69,!![]);}catch(_0x5c16e7){return BPromise[_0xaf60('0x24')](_0x5c16e7);}return _0x1197d9[_0xaf60('0x25')]();};}function saveUpdates(_0x399614,_0x452adb){return function(_0x390be0){if(_0x390be0){return _0x390be0[_0xaf60('0x26')](_0x399614)[_0xaf60('0x27')](function(_0x232d22){return _0x232d22;});}return null;};}function removeEntity(_0x5d48ff,_0x3ec6dc){return function(_0x3fea62){if(_0x3fea62){return _0x3fea62[_0xaf60('0x28')]()[_0xaf60('0x27')](function(){_0x5d48ff['status'](0xcc)[_0xaf60('0x29')]();});}};}function handleEntityNotFound(_0x2a6d03,_0x4d61d6){return function(_0x182d5c){if(!_0x182d5c){_0x2a6d03[_0xaf60('0x1a')](0x194);}return _0x182d5c;};}function handleError(_0x3cb096,_0x15a3ea){_0x15a3ea=_0x15a3ea||0x1f4;return function(_0x14d633){logger[_0xaf60('0x2a')](_0x14d633[_0xaf60('0x2b')]);if(_0x14d633[_0xaf60('0x2c')]){delete _0x14d633[_0xaf60('0x2c')];}_0x3cb096['status'](_0x15a3ea)['send'](_0x14d633);};}exports[_0xaf60('0x2d')]=function(_0x32c175,_0x32c1d7){var _0x20eb50={},_0x269fd2={},_0x13b72e={'count':0x0,'rows':[]};var _0x536197=_[_0xaf60('0x2e')](db[_0xaf60('0x2f')][_0xaf60('0x30')],function(_0x2b9e7c){return{'name':_0x2b9e7c[_0xaf60('0x31')],'type':_0x2b9e7c[_0xaf60('0x32')][_0xaf60('0x33')]};});_0x269fd2[_0xaf60('0x34')]=_[_0xaf60('0x2e')](_0x536197,_0xaf60('0x2c'));_0x269fd2[_0xaf60('0x35')]=_[_0xaf60('0x36')](_0x32c175[_0xaf60('0x35')]);_0x269fd2[_0xaf60('0x37')]=_['intersection'](_0x269fd2['model'],_0x269fd2['query']);_0x20eb50[_0xaf60('0x38')]=_[_0xaf60('0x39')](_0x269fd2['model'],qs[_0xaf60('0x3a')](_0x32c175[_0xaf60('0x35')][_0xaf60('0x3a')]));_0x20eb50[_0xaf60('0x38')]=_0x20eb50[_0xaf60('0x38')]['length']?_0x20eb50[_0xaf60('0x38')]:_0x269fd2[_0xaf60('0x34')];if(!_0x32c175['query'][_0xaf60('0x3b')](_0xaf60('0x3c'))){_0x20eb50[_0xaf60('0x1e')]=qs[_0xaf60('0x1e')](_0x32c175[_0xaf60('0x35')]['limit']);_0x20eb50[_0xaf60('0x1f')]=qs[_0xaf60('0x1f')](_0x32c175['query']['offset']);}_0x20eb50[_0xaf60('0x3d')]=qs[_0xaf60('0x3e')](_0x32c175[_0xaf60('0x35')][_0xaf60('0x3e')]);_0x20eb50[_0xaf60('0x3f')]=qs[_0xaf60('0x37')](_[_0xaf60('0x40')](_0x32c175[_0xaf60('0x35')],_0x269fd2[_0xaf60('0x37')]),_0x536197);if(_0x32c175[_0xaf60('0x35')][_0xaf60('0x41')]){_0x20eb50[_0xaf60('0x3f')]=_[_0xaf60('0x42')](_0x20eb50[_0xaf60('0x3f')],{'$or':_[_0xaf60('0x2e')](_0x536197,function(_0xff0d75){if(_0xff0d75[_0xaf60('0x32')]!==_0xaf60('0x43')){var _0x3faa8f={};_0x3faa8f[_0xff0d75['name']]={'$like':'%'+_0x32c175[_0xaf60('0x35')]['filter']+'%'};return _0x3faa8f;}})});}_0x20eb50=_[_0xaf60('0x42')]({},_0x20eb50,_0x32c175[_0xaf60('0x44')]);var _0x2ae840={'where':_0x20eb50[_0xaf60('0x3f')]};return db[_0xaf60('0x2f')]['count'](_0x2ae840)[_0xaf60('0x27')](function(_0x9c6a68){_0x13b72e[_0xaf60('0x20')]=_0x9c6a68;if(_0x32c175[_0xaf60('0x35')][_0xaf60('0x45')]){_0x20eb50['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0xaf60('0x46')](_0x20eb50);})[_0xaf60('0x27')](function(_0x52bffe){_0x13b72e[_0xaf60('0x47')]=_0x52bffe;return _0x13b72e;})[_0xaf60('0x27')](respondWithFilteredResult(_0x32c1d7,_0x20eb50))[_0xaf60('0x48')](handleError(_0x32c1d7,null));};exports['show']=function(_0x42bffb,_0x364433){var _0x1f7a60={'raw':!![],'where':{'id':_0x42bffb[_0xaf60('0x49')]['id']}},_0x53533b={};_0x53533b['model']=_[_0xaf60('0x36')](db[_0xaf60('0x2f')]['rawAttributes']);_0x53533b[_0xaf60('0x35')]=_['keys'](_0x42bffb[_0xaf60('0x35')]);_0x53533b[_0xaf60('0x37')]=_[_0xaf60('0x39')](_0x53533b[_0xaf60('0x34')],_0x53533b[_0xaf60('0x35')]);_0x1f7a60[_0xaf60('0x38')]=_['intersection'](_0x53533b['model'],qs['fields'](_0x42bffb[_0xaf60('0x35')]['fields']));_0x1f7a60['attributes']=_0x1f7a60[_0xaf60('0x38')]['length']?_0x1f7a60[_0xaf60('0x38')]:_0x53533b[_0xaf60('0x34')];if(_0x42bffb[_0xaf60('0x35')][_0xaf60('0x45')]){_0x1f7a60['include']=[{'all':!![]}];}_0x1f7a60=_['merge']({},_0x1f7a60,_0x42bffb[_0xaf60('0x44')]);return db[_0xaf60('0x2f')][_0xaf60('0x4a')](_0x1f7a60)[_0xaf60('0x27')](handleEntityNotFound(_0x364433,null))['then'](respondWithResult(_0x364433,null))[_0xaf60('0x48')](handleError(_0x364433,null));};exports['create']=function(_0x4ae7a1,_0x57853f){return db['CmHopperHistory'][_0xaf60('0x4b')](_0x4ae7a1[_0xaf60('0x4c')],{})[_0xaf60('0x27')](respondWithResult(_0x57853f,0xc9))['catch'](handleError(_0x57853f,null));};exports[_0xaf60('0x4d')]=function(_0x2070a3,_0x4e17ad){return db[_0xaf60('0x2f')][_0xaf60('0x4d')]()['then'](respondWithResult(_0x4e17ad,null))[_0xaf60('0x48')](handleError(_0x4e17ad,null));};exports['update']=function(_0x10b9aa,_0x552498){if(_0x10b9aa[_0xaf60('0x4c')][_0xaf60('0x4e')]){delete _0x10b9aa[_0xaf60('0x4c')]['uniqueid'];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x10b9aa[_0xaf60('0x49')]['id']}})[_0xaf60('0x27')](handleEntityNotFound(_0x552498,null))[_0xaf60('0x27')](saveUpdates(_0x10b9aa['body'],null))[_0xaf60('0x27')](respondWithResult(_0x552498,null))[_0xaf60('0x48')](handleError(_0x552498,null));};
\ No newline at end of file
+var _0x4cf3=['find','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','save','then','destroy','end','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','model','query','intersection','fields','attributes','length','order','sort','where','filters','pick','filter','merge','type','options','includeAll','findAll','rows','catch','show','keys','create','body','describe','update','uniqueid'];(function(_0x50eaa9,_0x5def63){var _0xf9e56f=function(_0x14d3ad){while(--_0x14d3ad){_0x50eaa9['push'](_0x50eaa9['shift']());}};_0xf9e56f(++_0x5def63);}(_0x4cf3,0x1b8));var _0x34cf=function(_0x113217,_0x434bc3){_0x113217=_0x113217-0x0;var _0x3bbbe2=_0x4cf3[_0x113217];return _0x3bbbe2;};'use strict';var emlformat=require(_0x34cf('0x0'));var rimraf=require(_0x34cf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x34cf('0x2'));var rp=require(_0x34cf('0x3'));var moment=require(_0x34cf('0x4'));var BPromise=require(_0x34cf('0x5'));var Mustache=require('mustache');var util=require(_0x34cf('0x6'));var path=require(_0x34cf('0x7'));var sox=require('sox');var csv=require(_0x34cf('0x8'));var ejs=require(_0x34cf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x34cf('0xa'));var crypto=require('crypto');var jsforce=require(_0x34cf('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x34cf('0x8'));var querystring=require(_0x34cf('0xc'));var Papa=require(_0x34cf('0xd'));var Redis=require('ioredis');var authService=require(_0x34cf('0xe'));var qs=require(_0x34cf('0xf'));var as=require(_0x34cf('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x34cf('0x11'))(_0x34cf('0x12'));var utils=require(_0x34cf('0x13'));var config=require(_0x34cf('0x14'));var licenseUtil=require(_0x34cf('0x15'));var db=require(_0x34cf('0x16'))['db'];function respondWithStatusCode(_0x47e02d,_0x29cdb3){_0x29cdb3=_0x29cdb3||0xcc;return function(_0x25ba94){if(_0x25ba94){return _0x47e02d[_0x34cf('0x17')](_0x29cdb3);}return _0x47e02d[_0x34cf('0x18')](_0x29cdb3)['end']();};}function respondWithResult(_0x3ced3c,_0x560325){_0x560325=_0x560325||0xc8;return function(_0xb086b){if(_0xb086b){return _0x3ced3c[_0x34cf('0x18')](_0x560325)[_0x34cf('0x19')](_0xb086b);}};}function respondWithFilteredResult(_0x3a5554,_0x479687){return function(_0x4e87c3){if(_0x4e87c3){var _0x1a4927=typeof _0x479687[_0x34cf('0x1a')]===_0x34cf('0x1b')&&typeof _0x479687['limit']==='undefined';var _0x219b81=_0x4e87c3[_0x34cf('0x1c')];var _0x3d431a=_0x1a4927?0x0:_0x479687[_0x34cf('0x1a')];var _0x308801=_0x1a4927?_0x4e87c3[_0x34cf('0x1c')]:_0x479687['offset']+_0x479687[_0x34cf('0x1d')];var _0x2b7f56;if(_0x308801>=_0x219b81){_0x308801=_0x219b81;_0x2b7f56=0xc8;}else{_0x2b7f56=0xce;}_0x3a5554[_0x34cf('0x18')](_0x2b7f56);return _0x3a5554[_0x34cf('0x1e')]('Content-Range',_0x3d431a+'-'+_0x308801+'/'+_0x219b81)['json'](_0x4e87c3);}return null;};}function patchUpdates(_0x5386ab){return function(_0x1e1b9e){try{jsonpatch[_0x34cf('0x1f')](_0x1e1b9e,_0x5386ab,!![]);}catch(_0x460924){return BPromise['reject'](_0x460924);}return _0x1e1b9e[_0x34cf('0x20')]();};}function saveUpdates(_0x55b9a5,_0x4e7ccb){return function(_0x2389bd){if(_0x2389bd){return _0x2389bd['update'](_0x55b9a5)[_0x34cf('0x21')](function(_0x5504d7){return _0x5504d7;});}return null;};}function removeEntity(_0x39db18,_0x4ff005){return function(_0x25c9e1){if(_0x25c9e1){return _0x25c9e1[_0x34cf('0x22')]()[_0x34cf('0x21')](function(){_0x39db18[_0x34cf('0x18')](0xcc)[_0x34cf('0x23')]();});}};}function handleEntityNotFound(_0x57db34,_0xdb85dd){return function(_0x983f93){if(!_0x983f93){_0x57db34[_0x34cf('0x17')](0x194);}return _0x983f93;};}function handleError(_0x3db8d4,_0x1ef77e){_0x1ef77e=_0x1ef77e||0x1f4;return function(_0x3b577f){logger[_0x34cf('0x24')](_0x3b577f[_0x34cf('0x25')]);if(_0x3b577f[_0x34cf('0x26')]){delete _0x3b577f['name'];}_0x3db8d4[_0x34cf('0x18')](_0x1ef77e)[_0x34cf('0x27')](_0x3b577f);};}exports[_0x34cf('0x28')]=function(_0xd15647,_0x5e382e){var _0x24ab38={},_0x1052b7={},_0x614112={'count':0x0,'rows':[]};var _0x422658=_[_0x34cf('0x29')](db[_0x34cf('0x2a')][_0x34cf('0x2b')],function(_0x3caf1e){return{'name':_0x3caf1e[_0x34cf('0x2c')],'type':_0x3caf1e['type']['key']};});_0x1052b7[_0x34cf('0x2d')]=_['map'](_0x422658,_0x34cf('0x26'));_0x1052b7[_0x34cf('0x2e')]=_['keys'](_0xd15647[_0x34cf('0x2e')]);_0x1052b7['filters']=_[_0x34cf('0x2f')](_0x1052b7['model'],_0x1052b7[_0x34cf('0x2e')]);_0x24ab38['attributes']=_[_0x34cf('0x2f')](_0x1052b7[_0x34cf('0x2d')],qs[_0x34cf('0x30')](_0xd15647[_0x34cf('0x2e')][_0x34cf('0x30')]));_0x24ab38[_0x34cf('0x31')]=_0x24ab38[_0x34cf('0x31')][_0x34cf('0x32')]?_0x24ab38[_0x34cf('0x31')]:_0x1052b7[_0x34cf('0x2d')];if(!_0xd15647[_0x34cf('0x2e')]['hasOwnProperty']('nolimit')){_0x24ab38[_0x34cf('0x1d')]=qs[_0x34cf('0x1d')](_0xd15647[_0x34cf('0x2e')][_0x34cf('0x1d')]);_0x24ab38[_0x34cf('0x1a')]=qs[_0x34cf('0x1a')](_0xd15647[_0x34cf('0x2e')][_0x34cf('0x1a')]);}_0x24ab38[_0x34cf('0x33')]=qs['sort'](_0xd15647['query'][_0x34cf('0x34')]);_0x24ab38[_0x34cf('0x35')]=qs[_0x34cf('0x36')](_[_0x34cf('0x37')](_0xd15647[_0x34cf('0x2e')],_0x1052b7[_0x34cf('0x36')]),_0x422658);if(_0xd15647['query'][_0x34cf('0x38')]){_0x24ab38[_0x34cf('0x35')]=_[_0x34cf('0x39')](_0x24ab38[_0x34cf('0x35')],{'$or':_[_0x34cf('0x29')](_0x422658,function(_0x47751b){if(_0x47751b[_0x34cf('0x3a')]!=='VIRTUAL'){var _0x8f7f90={};_0x8f7f90[_0x47751b[_0x34cf('0x26')]]={'$like':'%'+_0xd15647[_0x34cf('0x2e')]['filter']+'%'};return _0x8f7f90;}})});}_0x24ab38=_[_0x34cf('0x39')]({},_0x24ab38,_0xd15647[_0x34cf('0x3b')]);var _0x4f384a={'where':_0x24ab38[_0x34cf('0x35')]};return db['CmHopperHistory'][_0x34cf('0x1c')](_0x4f384a)['then'](function(_0x426183){_0x614112[_0x34cf('0x1c')]=_0x426183;if(_0xd15647[_0x34cf('0x2e')][_0x34cf('0x3c')]){_0x24ab38['include']=[{'all':!![]}];}return db[_0x34cf('0x2a')][_0x34cf('0x3d')](_0x24ab38);})[_0x34cf('0x21')](function(_0x2d68b6){_0x614112[_0x34cf('0x3e')]=_0x2d68b6;return _0x614112;})[_0x34cf('0x21')](respondWithFilteredResult(_0x5e382e,_0x24ab38))[_0x34cf('0x3f')](handleError(_0x5e382e,null));};exports[_0x34cf('0x40')]=function(_0x51e3fb,_0xc20118){var _0x47b43f={'raw':!![],'where':{'id':_0x51e3fb['params']['id']}},_0x281278={};_0x281278['model']=_[_0x34cf('0x41')](db['CmHopperHistory']['rawAttributes']);_0x281278[_0x34cf('0x2e')]=_[_0x34cf('0x41')](_0x51e3fb['query']);_0x281278[_0x34cf('0x36')]=_[_0x34cf('0x2f')](_0x281278[_0x34cf('0x2d')],_0x281278[_0x34cf('0x2e')]);_0x47b43f[_0x34cf('0x31')]=_[_0x34cf('0x2f')](_0x281278[_0x34cf('0x2d')],qs[_0x34cf('0x30')](_0x51e3fb[_0x34cf('0x2e')][_0x34cf('0x30')]));_0x47b43f['attributes']=_0x47b43f['attributes'][_0x34cf('0x32')]?_0x47b43f[_0x34cf('0x31')]:_0x281278[_0x34cf('0x2d')];if(_0x51e3fb['query'][_0x34cf('0x3c')]){_0x47b43f['include']=[{'all':!![]}];}_0x47b43f=_[_0x34cf('0x39')]({},_0x47b43f,_0x51e3fb['options']);return db[_0x34cf('0x2a')]['find'](_0x47b43f)[_0x34cf('0x21')](handleEntityNotFound(_0xc20118,null))[_0x34cf('0x21')](respondWithResult(_0xc20118,null))['catch'](handleError(_0xc20118,null));};exports[_0x34cf('0x42')]=function(_0x5e53bd,_0x114022){return db[_0x34cf('0x2a')][_0x34cf('0x42')](_0x5e53bd[_0x34cf('0x43')],{})[_0x34cf('0x21')](respondWithResult(_0x114022,0xc9))['catch'](handleError(_0x114022,null));};exports[_0x34cf('0x44')]=function(_0x17c213,_0x524a1b){return db[_0x34cf('0x2a')][_0x34cf('0x44')]()[_0x34cf('0x21')](respondWithResult(_0x524a1b,null))['catch'](handleError(_0x524a1b,null));};exports[_0x34cf('0x45')]=function(_0xd464fe,_0x34158d){if(_0xd464fe[_0x34cf('0x43')][_0x34cf('0x46')]){delete _0xd464fe[_0x34cf('0x43')]['uniqueid'];}return db[_0x34cf('0x2a')][_0x34cf('0x47')]({'where':{'uniqueid':_0xd464fe[_0x34cf('0x48')]['id']}})[_0x34cf('0x21')](handleEntityNotFound(_0x34158d,null))[_0x34cf('0x21')](saveUpdates(_0xd464fe[_0x34cf('0x43')],null))[_0x34cf('0x21')](respondWithResult(_0x34158d,null))[_0x34cf('0x3f')](handleError(_0x34158d,null));};
\ No newline at end of file
index 71787ab..6850b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf40b=['rimraf','../../config/environment','./cmHopperHistory.attributes','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','util','../../config/logger','api','moment','request-promise','path'];(function(_0xf83ffc,_0x37e10c){var _0x2509a4=function(_0x19b8f5){while(--_0x19b8f5){_0xf83ffc['push'](_0xf83ffc['shift']());}};_0x2509a4(++_0x37e10c);}(_0xf40b,0xb0));var _0xbf40=function(_0x13e724,_0x296739){_0x13e724=_0x13e724-0x0;var _0x334a44=_0xf40b[_0x13e724];return _0x334a44;};'use strict';var _=require('lodash');var util=require(_0xbf40('0x0'));var logger=require(_0xbf40('0x1'))(_0xbf40('0x2'));var moment=require(_0xbf40('0x3'));var BPromise=require('bluebird');var rp=require(_0xbf40('0x4'));var fs=require('fs');var path=require(_0xbf40('0x5'));var rimraf=require(_0xbf40('0x6'));var config=require(_0xbf40('0x7'));var attributes=require(_0xbf40('0x8'));module['exports']=function(_0x2e74b5,_0xbe1c47){return _0x2e74b5[_0xbf40('0x9')](_0xbf40('0xa'),attributes,{'tableName':_0xbf40('0xb'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xbf40('0xc')]},{'name':_0xbf40('0xd'),'fields':[_0xbf40('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x68b3=['../../config/environment','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x2c8272,_0x381f3a){var _0x3949f6=function(_0x434bf1){while(--_0x434bf1){_0x2c8272['push'](_0x2c8272['shift']());}};_0x3949f6(++_0x381f3a);}(_0x68b3,0x1d8));var _0x368b=function(_0x5f40f2,_0x141924){_0x5f40f2=_0x5f40f2-0x0;var _0x1e1328=_0x68b3[_0x5f40f2];return _0x1e1328;};'use strict';var _=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var logger=require(_0x368b('0x2'))(_0x368b('0x3'));var moment=require(_0x368b('0x4'));var BPromise=require('bluebird');var rp=require(_0x368b('0x5'));var fs=require('fs');var path=require(_0x368b('0x6'));var rimraf=require(_0x368b('0x7'));var config=require(_0x368b('0x8'));var attributes=require('./cmHopperHistory.attributes');module[_0x368b('0x9')]=function(_0x41b15b,_0x104dad){return _0x41b15b[_0x368b('0xa')](_0x368b('0xb'),attributes,{'tableName':_0x368b('0xc'),'paranoid':![],'indexes':[{'name':_0x368b('0xd'),'fields':[_0x368b('0xd')]},{'name':_0x368b('0xe'),'fields':[_0x368b('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index e4b2b1d..ca2a959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a1=['jayson/promise','client','request','then','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','CmHopperHistory,\x20%s,\x20%s','info','CreateCmHopperHistory','create','options','raw','catch','AvgHandleTime','CmHopperHistory','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','findAll','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrAnswerCallsDay','lodash','util','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x599ff9,_0x4d6e57){var _0x5d11d7=function(_0x46cf4d){while(--_0x46cf4d){_0x599ff9['push'](_0x599ff9['shift']());}};_0x5d11d7(++_0x4d6e57);}(_0x33a1,0x7c));var _0x133a=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x33a1[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x133a('0x0'));var util=require(_0x133a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x133a('0x2'))['db'];var utils=require(_0x133a('0x3'));var logger=require(_0x133a('0x4'))('rpc');var config=require(_0x133a('0x5'));var jayson=require(_0x133a('0x6'));var client=jayson[_0x133a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13fe1d,_0x1a6b64,_0x31409d){return new BPromise(function(_0x5f3a8f,_0x37e7cc){return client[_0x133a('0x8')](_0x13fe1d,_0x31409d)[_0x133a('0x9')](function(_0x43974a){logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x1a6b64,'request\x20sent');logger[_0x133a('0xa')](_0x133a('0xb'),_0x1a6b64,_0x133a('0xc'),JSON[_0x133a('0xd')](_0x43974a));if(_0x43974a[_0x133a('0xe')]){if(_0x43974a['error']['code']===0x1f4){logger[_0x133a('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0x1a6b64,_0x43974a['error'][_0x133a('0xf')]);return _0x37e7cc(_0x43974a[_0x133a('0xe')]['message']);}logger[_0x133a('0xe')](_0x133a('0x10'),_0x1a6b64,_0x43974a[_0x133a('0xe')]['message']);return _0x5f3a8f(_0x43974a['error'][_0x133a('0xf')]);}else{logger[_0x133a('0x11')](_0x133a('0x10'),_0x1a6b64,_0x133a('0xc'));_0x5f3a8f(_0x43974a['result']['message']);}})['catch'](function(_0x2f85f1){logger['error'](_0x133a('0x10'),_0x1a6b64,_0x2f85f1);_0x37e7cc(_0x2f85f1);});});}exports[_0x133a('0x12')]=function(_0x4fb80f){var _0xb91a9e=this;return new Promise(function(_0x1489c9,_0x5483dc){return db['CmHopperHistory'][_0x133a('0x13')](_0x4fb80f['body'],{'raw':_0x4fb80f[_0x133a('0x14')]?_0x4fb80f[_0x133a('0x14')][_0x133a('0x15')]===undefined?!![]:![]:!![]})[_0x133a('0x9')](function(_0x86ba96){logger[_0x133a('0x11')]('CreateCmHopperHistory',_0x4fb80f);logger[_0x133a('0xa')](_0x133a('0x12'),_0x4fb80f,JSON[_0x133a('0xd')](_0x86ba96));_0x1489c9(_0x86ba96);})[_0x133a('0x16')](function(_0x122405){logger[_0x133a('0xe')]('CreateCmHopperHistory',_0x122405['message'],_0x4fb80f);_0x5483dc(_0xb91a9e['error'](0x1f4,_0x122405['message']));});});};exports[_0x133a('0x17')]=function(_0x63f401){var _0x1d4035=this;return new Promise(function(_0x49097d,_0x33c486){return db[_0x133a('0x18')]['findAll']({'raw':_0x63f401[_0x133a('0x14')]?_0x63f401[_0x133a('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x63f401[_0x133a('0x14')]?_0x63f401[_0x133a('0x14')][_0x133a('0x19')]||null:null,'attributes':[[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')][_0x133a('0x1c')]('id')),_0x133a('0x1d')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db['sequelize'][_0x133a('0x1e')]('`state`\x20=\x204,\x201,\x20null'))),_0x133a('0x1f')],[db['sequelize']['fn'](_0x133a('0x1b'),db['sequelize']['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x20')))),_0x133a('0x21')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x22')))),_0x133a('0x23')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x24'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x25')))),_0x133a('0x26')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x24'),db['sequelize']['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x27')))),_0x133a('0x28')]]})['then'](function(_0x7fdbe2){logger[_0x133a('0x11')](_0x133a('0x17'),_0x63f401);logger['debug'](_0x133a('0x17'),_0x63f401,JSON[_0x133a('0xd')](_0x7fdbe2));_0x49097d(_0x7fdbe2);})[_0x133a('0x16')](function(_0x2cb442){logger[_0x133a('0xe')](_0x133a('0x17'),_0x2cb442[_0x133a('0xf')],_0x63f401);_0x33c486(_0x1d4035[_0x133a('0xe')](0x1f4,_0x2cb442[_0x133a('0xf')]));});});};exports[_0x133a('0x29')]=function(_0x4dc487){var _0x48b7f=this;return new Promise(function(_0x2acdee,_0x144f72){return db[_0x133a('0x18')][_0x133a('0x2a')]({'raw':_0x4dc487['options']?_0x4dc487[_0x133a('0x14')][_0x133a('0x15')]===undefined?!![]:![]:!![],'where':_0x4dc487['options']?_0x4dc487[_0x133a('0x14')][_0x133a('0x19')]||null:null,'attributes':[['campaign',_0x133a('0x2b')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db['sequelize']['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x2c')))),_0x133a('0x2d')],[db['sequelize']['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')]('`state`\x20=\x203,\x201,\x20null'))),_0x133a('0x2e')],[db['sequelize']['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x2f')))),_0x133a('0x30')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x31')))),_0x133a('0x32')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x133a('0x33')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x133a('0x34')],[db[_0x133a('0x1a')]['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x35')))),_0x133a('0x36')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db['sequelize'][_0x133a('0x1e')](_0x133a('0x37')))),_0x133a('0x38')],[db['sequelize']['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal'](_0x133a('0x39')))),_0x133a('0x3a')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')]('`state`\x20=\x2016,\x201,\x20null'))),_0x133a('0x3b')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db['sequelize'][_0x133a('0x1e')]('`state`\x20=\x2020,\x201,\x20null'))),_0x133a('0x3a')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x3c')))),_0x133a('0x3d')]],'group':[_0x133a('0x3e')]})[_0x133a('0x9')](function(_0x216aad){logger[_0x133a('0x11')](_0x133a('0x29'),_0x4dc487);logger[_0x133a('0xa')](_0x133a('0x29'),_0x4dc487,JSON['stringify'](_0x216aad));_0x2acdee(_0x216aad);})[_0x133a('0x16')](function(_0x5b41ca){logger[_0x133a('0xe')](_0x133a('0x29'),_0x5b41ca[_0x133a('0xf')],_0x4dc487);_0x144f72(_0x48b7f['error'](0x1f4,_0x5b41ca[_0x133a('0xf')]));});});};exports[_0x133a('0x3f')]=function(_0x543fc2){var _0x511128=this;return new Promise(function(_0x2ec856,_0x8d3f01){return db['CmHopperHistory']['findAll']({'raw':_0x543fc2[_0x133a('0x14')]?_0x543fc2[_0x133a('0x14')][_0x133a('0x15')]===undefined?!![]:![]:!![],'where':_0x543fc2['options']?_0x543fc2[_0x133a('0x14')][_0x133a('0x19')]||null:null,'attributes':[['campaign',_0x133a('0x2b')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')][_0x133a('0x1c')]('id')),'ivrTotalCallsDays'],[db[_0x133a('0x1a')]['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x2f')))),_0x133a('0x40')]],'group':['campaign']})[_0x133a('0x9')](function(_0xec69a1){logger['info'](_0x133a('0x3f'),_0x543fc2);logger[_0x133a('0xa')](_0x133a('0x3f'),_0x543fc2,JSON['stringify'](_0xec69a1));_0x2ec856(_0xec69a1);})[_0x133a('0x16')](function(_0x4ed930){logger[_0x133a('0xe')](_0x133a('0x3f'),_0x4ed930['message'],_0x543fc2);_0x8d3f01(_0x511128[_0x133a('0xe')](0x1f4,_0x4ed930[_0x133a('0xf')]));});});};
\ No newline at end of file
+var _0x6b1c=['predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','where','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','CmHopperHistory','create','options','raw','CreateCmHopperHistory','catch','AvgHandleTime','findAll','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x6b1c,0xf3));var _0xc6b1=function(_0x541a2d,_0x286932){_0x541a2d=_0x541a2d-0x0;var _0x1fe1a8=_0x6b1c[_0x541a2d];return _0x1fe1a8;};'use strict';var _=require(_0xc6b1('0x0'));var util=require('util');var moment=require(_0xc6b1('0x1'));var BPromise=require(_0xc6b1('0x2'));var rs=require(_0xc6b1('0x3'));var fs=require('fs');var Redis=require(_0xc6b1('0x4'));var db=require(_0xc6b1('0x5'))['db'];var utils=require(_0xc6b1('0x6'));var logger=require('../../config/logger')(_0xc6b1('0x7'));var config=require('../../config/environment');var jayson=require(_0xc6b1('0x8'));var client=jayson[_0xc6b1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f8295,_0x1de8b5,_0x362814){return new BPromise(function(_0x1e0dfb,_0x4f6509){return client[_0xc6b1('0xa')](_0x1f8295,_0x362814)[_0xc6b1('0xb')](function(_0x5a8dac){logger['info'](_0xc6b1('0xc'),_0x1de8b5,_0xc6b1('0xd'));logger[_0xc6b1('0xe')](_0xc6b1('0xf'),_0x1de8b5,_0xc6b1('0xd'),JSON[_0xc6b1('0x10')](_0x5a8dac));if(_0x5a8dac['error']){if(_0x5a8dac[_0xc6b1('0x11')][_0xc6b1('0x12')]===0x1f4){logger[_0xc6b1('0x11')](_0xc6b1('0xc'),_0x1de8b5,_0x5a8dac[_0xc6b1('0x11')]['message']);return _0x4f6509(_0x5a8dac[_0xc6b1('0x11')][_0xc6b1('0x13')]);}logger[_0xc6b1('0x11')](_0xc6b1('0xc'),_0x1de8b5,_0x5a8dac['error']['message']);return _0x1e0dfb(_0x5a8dac[_0xc6b1('0x11')][_0xc6b1('0x13')]);}else{logger[_0xc6b1('0x14')](_0xc6b1('0xc'),_0x1de8b5,_0xc6b1('0xd'));_0x1e0dfb(_0x5a8dac[_0xc6b1('0x15')]['message']);}})['catch'](function(_0xaed550){logger[_0xc6b1('0x11')](_0xc6b1('0xc'),_0x1de8b5,_0xaed550);_0x4f6509(_0xaed550);});});}exports['CreateCmHopperHistory']=function(_0x2c4bae){var _0x40a267=this;return new Promise(function(_0x5d732e,_0x41370b){return db[_0xc6b1('0x16')][_0xc6b1('0x17')](_0x2c4bae['body'],{'raw':_0x2c4bae[_0xc6b1('0x18')]?_0x2c4bae[_0xc6b1('0x18')][_0xc6b1('0x19')]===undefined?!![]:![]:!![]})[_0xc6b1('0xb')](function(_0x57a253){logger['info'](_0xc6b1('0x1a'),_0x2c4bae);logger[_0xc6b1('0xe')](_0xc6b1('0x1a'),_0x2c4bae,JSON[_0xc6b1('0x10')](_0x57a253));_0x5d732e(_0x57a253);})[_0xc6b1('0x1b')](function(_0x9cef9f){logger[_0xc6b1('0x11')](_0xc6b1('0x1a'),_0x9cef9f[_0xc6b1('0x13')],_0x2c4bae);_0x41370b(_0x40a267[_0xc6b1('0x11')](0x1f4,_0x9cef9f[_0xc6b1('0x13')]));});});};exports[_0xc6b1('0x1c')]=function(_0x279fbf){var _0x9a919c=this;return new Promise(function(_0x311b3f,_0x3976df){return db['CmHopperHistory'][_0xc6b1('0x1d')]({'raw':_0x279fbf['options']?_0x279fbf[_0xc6b1('0x18')][_0xc6b1('0x19')]===undefined?!![]:![]:!![],'where':_0x279fbf[_0xc6b1('0x18')]?_0x279fbf[_0xc6b1('0x18')]['where']||null:null,'attributes':[[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')][_0xc6b1('0x20')]('id')),_0xc6b1('0x21')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db['sequelize']['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x23')))),_0xc6b1('0x24')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db['sequelize']['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x25')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')]['literal']('`state`\x20=\x2011,\x201,\x20null'))),_0xc6b1('0x26')],[db['sequelize']['fn'](_0xc6b1('0x27'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x28')))),_0xc6b1('0x29')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x27'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xc6b1('0x2a')]]})['then'](function(_0x1aea81){logger[_0xc6b1('0x14')](_0xc6b1('0x1c'),_0x279fbf);logger[_0xc6b1('0xe')](_0xc6b1('0x1c'),_0x279fbf,JSON[_0xc6b1('0x10')](_0x1aea81));_0x311b3f(_0x1aea81);})[_0xc6b1('0x1b')](function(_0x185d26){logger[_0xc6b1('0x11')]('AvgHandleTime',_0x185d26[_0xc6b1('0x13')],_0x279fbf);_0x3976df(_0x9a919c[_0xc6b1('0x11')](0x1f4,_0x185d26[_0xc6b1('0x13')]));});});};exports[_0xc6b1('0x2b')]=function(_0x455a41){var _0x117ecd=this;return new Promise(function(_0x140006,_0x29b5e4){return db['CmHopperHistory']['findAll']({'raw':_0x455a41['options']?_0x455a41['options'][_0xc6b1('0x19')]===undefined?!![]:![]:!![],'where':_0x455a41[_0xc6b1('0x18')]?_0x455a41[_0xc6b1('0x18')][_0xc6b1('0x2c')]||null:null,'attributes':[['campaign',_0xc6b1('0x2d')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db['sequelize']['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x2e')))),_0xc6b1('0x2f')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db['sequelize']['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x30')))),_0xc6b1('0x31')],[db['sequelize']['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x23')))),'outboundAnswerCallsDay'],[db['sequelize']['fn'](_0xc6b1('0x1f'),db['sequelize']['fn']('IF',db[_0xc6b1('0x1e')]['literal'](_0xc6b1('0x32')))),_0xc6b1('0x33')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x34')))),_0xc6b1('0x35')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x36')))),_0xc6b1('0x37')],[db['sequelize']['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xc6b1('0x38')],[db['sequelize']['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x39')))),'outboundUnknownCallsDay'],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x3a')))),_0xc6b1('0x3b')],[db['sequelize']['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')]('`state`\x20=\x2014,\x201,\x20null'))),_0xc6b1('0x3c')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db['sequelize']['fn']('IF',db['sequelize'][_0xc6b1('0x22')](_0xc6b1('0x3d')))),_0xc6b1('0x3e')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x3f')))),_0xc6b1('0x40')],[db[_0xc6b1('0x1e')]['fn']('COUNT',db[_0xc6b1('0x1e')]['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x41')))),_0xc6b1('0x3e')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')]['fn']('IF',db['sequelize'][_0xc6b1('0x22')](_0xc6b1('0x42')))),_0xc6b1('0x43')]],'group':[_0xc6b1('0x44')]})[_0xc6b1('0xb')](function(_0x298ccf){logger[_0xc6b1('0x14')](_0xc6b1('0x2b'),_0x455a41);logger[_0xc6b1('0xe')](_0xc6b1('0x2b'),_0x455a41,JSON['stringify'](_0x298ccf));_0x140006(_0x298ccf);})[_0xc6b1('0x1b')](function(_0x2f8340){logger[_0xc6b1('0x11')]('GetVoiceQueueHopperHistory',_0x2f8340['message'],_0x455a41);_0x29b5e4(_0x117ecd[_0xc6b1('0x11')](0x1f4,_0x2f8340['message']));});});};exports[_0xc6b1('0x45')]=function(_0x5c57ab){var _0x490855=this;return new Promise(function(_0x5f1877,_0x4ff871){return db['CmHopperHistory'][_0xc6b1('0x1d')]({'raw':_0x5c57ab[_0xc6b1('0x18')]?_0x5c57ab[_0xc6b1('0x18')][_0xc6b1('0x19')]===undefined?!![]:![]:!![],'where':_0x5c57ab[_0xc6b1('0x18')]?_0x5c57ab['options'][_0xc6b1('0x2c')]||null:null,'attributes':[[_0xc6b1('0x44'),_0xc6b1('0x2d')],[db[_0xc6b1('0x1e')]['fn'](_0xc6b1('0x1f'),db[_0xc6b1('0x1e')][_0xc6b1('0x20')]('id')),_0xc6b1('0x46')],[db[_0xc6b1('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xc6b1('0x1e')][_0xc6b1('0x22')](_0xc6b1('0x23')))),'ivrAnswerCallsDay']],'group':[_0xc6b1('0x44')]})[_0xc6b1('0xb')](function(_0xa0d139){logger[_0xc6b1('0x14')](_0xc6b1('0x45'),_0x5c57ab);logger[_0xc6b1('0xe')](_0xc6b1('0x45'),_0x5c57ab,JSON[_0xc6b1('0x10')](_0xa0d139));_0x5f1877(_0xa0d139);})['catch'](function(_0x1be09b){logger[_0xc6b1('0x11')]('GetCampaignHopperHistory',_0x1be09b[_0xc6b1('0x13')],_0x5c57ab);_0x4ff871(_0x490855['error'](0x1f4,_0x1be09b[_0xc6b1('0x13')]));});});};
\ No newline at end of file
index e866eb6..b493d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc57=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','exports'];(function(_0x547456,_0x1de17e){var _0xc1fd7b=function(_0x12be35){while(--_0x12be35){_0x547456['push'](_0x547456['shift']());}};_0xc1fd7b(++_0x1de17e);}(_0xbc57,0x132));var _0x7bc5=function(_0x4bb969,_0x41e27a){_0x4bb969=_0x4bb969-0x0;var _0x5c8857=_0xbc57[_0x4bb969];return _0x5c8857;};'use strict';var multer=require(_0x7bc5('0x0'));var util=require(_0x7bc5('0x1'));var path=require('path');var timeout=require(_0x7bc5('0x2'));var express=require(_0x7bc5('0x3'));var router=express[_0x7bc5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7bc5('0x5'));var interaction=require(_0x7bc5('0x6'));var config=require(_0x7bc5('0x7'));var controller=require(_0x7bc5('0x8'));router[_0x7bc5('0x9')]('/',auth[_0x7bc5('0xa')](),controller['index']);router['get'](_0x7bc5('0xb'),auth['isAuthenticated'](),controller[_0x7bc5('0xc')]);router[_0x7bc5('0x9')](_0x7bc5('0xd'),auth['isAuthenticated'](),controller[_0x7bc5('0xe')]);router[_0x7bc5('0xf')]('/',auth[_0x7bc5('0xa')](),controller[_0x7bc5('0x10')]);router['put']('/:id',auth[_0x7bc5('0xa')](),controller['update']);module[_0x7bc5('0x11')]=router;
\ No newline at end of file
+var _0xfbc3=['/:id','show','post','put','update','exports','multer','util','path','fs-extra','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x26da89,_0x264785){var _0xc95b7b=function(_0x230e5b){while(--_0x230e5b){_0x26da89['push'](_0x26da89['shift']());}};_0xc95b7b(++_0x264785);}(_0xfbc3,0xf4));var _0x3fbc=function(_0x48b5db,_0x38dea1){_0x48b5db=_0x48b5db-0x0;var _0x1d5d5d=_0xfbc3[_0x48b5db];return _0x1d5d5d;};'use strict';var multer=require(_0x3fbc('0x0'));var util=require(_0x3fbc('0x1'));var path=require(_0x3fbc('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x3fbc('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3fbc('0x4'));var controller=require(_0x3fbc('0x5'));router['get']('/',auth[_0x3fbc('0x6')](),controller[_0x3fbc('0x7')]);router[_0x3fbc('0x8')](_0x3fbc('0x9'),auth[_0x3fbc('0x6')](),controller[_0x3fbc('0xa')]);router[_0x3fbc('0x8')](_0x3fbc('0xb'),auth['isAuthenticated'](),controller[_0x3fbc('0xc')]);router[_0x3fbc('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3fbc('0xe')](_0x3fbc('0xb'),auth[_0x3fbc('0x6')](),controller[_0x3fbc('0xf')]);module[_0x3fbc('0x10')]=router;
\ No newline at end of file
index eca7eea..78c76d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf70=['exports','STRING','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xdf70,0x86));var _0x0df7=function(_0x459ace,_0x468dea){_0x459ace=_0x459ace-0x0;var _0x2d83a2=_0xdf70[_0x459ace];return _0x2d83a2;};'use strict';var Sequelize=require(_0x0df7('0x0'));module[_0x0df7('0x1')]={'name':{'type':Sequelize[_0x0df7('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0df7('0x2')]},'dialPrefix':{'type':Sequelize[_0x0df7('0x2')]}};
\ No newline at end of file
+var _0x25ad=['name','sequelize','STRING'];(function(_0x5a9f73,_0x19a26a){var _0x4e50b3=function(_0xa11396){while(--_0xa11396){_0x5a9f73['push'](_0x5a9f73['shift']());}};_0x4e50b3(++_0x19a26a);}(_0x25ad,0x1b1));var _0xd25a=function(_0x2729b0,_0x4fd119){_0x2729b0=_0x2729b0-0x0;var _0x176a9c=_0x25ad[_0x2729b0];return _0x176a9c;};'use strict';var Sequelize=require(_0xd25a('0x0'));module['exports']={'name':{'type':Sequelize[_0xd25a('0x1')],'unique':_0xd25a('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd25a('0x1')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1c4a2d4..2dcef1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d1e=['removeAgents','userCmList:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','map','CmList','rawAttributes','fieldName','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','type','includeAll','findAll','rows','catch','show','params','intersection','include','options','find','create','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','ListId','removeDispositions','ids','CmContact','tags','isArray','push','each','omit','success','dataValues','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','cf_%d','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit'];(function(_0x4a4c35,_0x1b3ee5){var _0xb0b7a2=function(_0x487842){while(--_0x487842){_0x4a4c35['push'](_0x4a4c35['shift']());}};_0xb0b7a2(++_0x1b3ee5);}(_0x9d1e,0x120));var _0xe9d1=function(_0x3ab34f,_0x31610d){_0x3ab34f=_0x3ab34f-0x0;var _0x163efb=_0x9d1e[_0x3ab34f];return _0x163efb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9d1('0x0'));var zipdir=require(_0xe9d1('0x1'));var jsonpatch=require(_0xe9d1('0x2'));var rp=require(_0xe9d1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9d1('0x4'));var util=require(_0xe9d1('0x5'));var path=require(_0xe9d1('0x6'));var sox=require(_0xe9d1('0x7'));var csv=require(_0xe9d1('0x8'));var ejs=require(_0xe9d1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9d1('0xa'));var squel=require(_0xe9d1('0xb'));var crypto=require(_0xe9d1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9d1('0xd'));var toCsv=require(_0xe9d1('0x8'));var querystring=require(_0xe9d1('0xe'));var Papa=require(_0xe9d1('0xf'));var Redis=require(_0xe9d1('0x10'));var authService=require(_0xe9d1('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe9d1('0x12'))('api');var utils=require(_0xe9d1('0x13'));var config=require(_0xe9d1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9d1('0x15'))['db'];config['redis']=_['defaults'](config[_0xe9d1('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xe9d1('0x17'))(new Redis(config[_0xe9d1('0x16')]));require(_0xe9d1('0x18'))[_0xe9d1('0x19')](socket);function respondWithStatusCode(_0x21e0d4,_0x2ed91d){_0x2ed91d=_0x2ed91d||0xcc;return function(_0x5e7eea){if(_0x5e7eea){return _0x21e0d4[_0xe9d1('0x1a')](_0x2ed91d);}return _0x21e0d4[_0xe9d1('0x1b')](_0x2ed91d)[_0xe9d1('0x1c')]();};}function respondWithResult(_0x4f4d60,_0x2adb0e){_0x2adb0e=_0x2adb0e||0xc8;return function(_0x5a1158){if(_0x5a1158){return _0x4f4d60[_0xe9d1('0x1b')](_0x2adb0e)[_0xe9d1('0x1d')](_0x5a1158);}};}function respondWithFilteredResult(_0x216809,_0x5d65e3){return function(_0x564175){if(_0x564175){var _0x4de2d4=typeof _0x5d65e3['offset']===_0xe9d1('0x1e')&&typeof _0x5d65e3[_0xe9d1('0x1f')]===_0xe9d1('0x1e');var _0x5cf335=_0x564175[_0xe9d1('0x20')];var _0xcaadf4=_0x4de2d4?0x0:_0x5d65e3['offset'];var _0x276fbd=_0x4de2d4?_0x564175[_0xe9d1('0x20')]:_0x5d65e3[_0xe9d1('0x21')]+_0x5d65e3[_0xe9d1('0x1f')];var _0x57d769;if(_0x276fbd>=_0x5cf335){_0x276fbd=_0x5cf335;_0x57d769=0xc8;}else{_0x57d769=0xce;}_0x216809[_0xe9d1('0x1b')](_0x57d769);return _0x216809[_0xe9d1('0x22')]('Content-Range',_0xcaadf4+'-'+_0x276fbd+'/'+_0x5cf335)[_0xe9d1('0x1d')](_0x564175);}return null;};}function patchUpdates(_0x51d630){return function(_0x77cca1){try{jsonpatch[_0xe9d1('0x23')](_0x77cca1,_0x51d630,!![]);}catch(_0x303cff){return BPromise[_0xe9d1('0x24')](_0x303cff);}return _0x77cca1[_0xe9d1('0x25')]();};}function saveUpdates(_0x45271e,_0x7fd59d){return function(_0x2357ac){if(_0x2357ac){return _0x2357ac['update'](_0x45271e)[_0xe9d1('0x26')](function(_0x1dd3f9){return _0x1dd3f9;});}return null;};}function removeEntity(_0x55d270,_0x4cf562){return function(_0x4eddd5){if(_0x4eddd5){return _0x4eddd5[_0xe9d1('0x27')]()[_0xe9d1('0x26')](function(){var _0x42f29e=_0x4eddd5[_0xe9d1('0x28')]({'plain':!![]});var _0x220a48=_0xe9d1('0x29');return db[_0xe9d1('0x2a')][_0xe9d1('0x27')]({'where':{'type':_0x220a48,'resourceId':_0x42f29e['id']}})[_0xe9d1('0x26')](function(){return _0x4eddd5;});})[_0xe9d1('0x26')](function(){_0x55d270[_0xe9d1('0x1b')](0xcc)[_0xe9d1('0x1c')]();});}};}function handleEntityNotFound(_0x41634f,_0x2e67dd){return function(_0x4ff897){if(!_0x4ff897){_0x41634f[_0xe9d1('0x1a')](0x194);}return _0x4ff897;};}function handleError(_0x1f169a,_0x40cbd8){_0x40cbd8=_0x40cbd8||0x1f4;return function(_0x1f7c97){logger[_0xe9d1('0x2b')](_0x1f7c97[_0xe9d1('0x2c')]);if(_0x1f7c97['name']){delete _0x1f7c97[_0xe9d1('0x2d')];}_0x1f169a['status'](_0x40cbd8)[_0xe9d1('0x2e')](_0x1f7c97);};}exports['index']=function(_0x2e4e74,_0x14347a){var _0x333fa4={},_0x576ac3={},_0x5cf9f3={'count':0x0,'rows':[]};var _0x672eb6=_[_0xe9d1('0x2f')](db[_0xe9d1('0x30')][_0xe9d1('0x31')],function(_0x4983fe){return{'name':_0x4983fe[_0xe9d1('0x32')],'type':_0x4983fe['type']['key']};});_0x576ac3[_0xe9d1('0x33')]=_[_0xe9d1('0x2f')](_0x672eb6,_0xe9d1('0x2d'));_0x576ac3[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x2e4e74[_0xe9d1('0x34')]);_0x576ac3[_0xe9d1('0x36')]=_['intersection'](_0x576ac3[_0xe9d1('0x33')],_0x576ac3[_0xe9d1('0x34')]);_0x333fa4[_0xe9d1('0x37')]=_['intersection'](_0x576ac3[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x2e4e74[_0xe9d1('0x34')]['fields']));_0x333fa4[_0xe9d1('0x37')]=_0x333fa4[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x333fa4[_0xe9d1('0x37')]:_0x576ac3[_0xe9d1('0x33')];if(!_0x2e4e74[_0xe9d1('0x34')]['hasOwnProperty'](_0xe9d1('0x3a'))){_0x333fa4['limit']=qs[_0xe9d1('0x1f')](_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x1f')]);_0x333fa4[_0xe9d1('0x21')]=qs['offset'](_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x21')]);}_0x333fa4[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x2e4e74[_0xe9d1('0x34')]['sort']);_0x333fa4['where']=qs[_0xe9d1('0x36')](_[_0xe9d1('0x3d')](_0x2e4e74[_0xe9d1('0x34')],_0x576ac3['filters']),_0x672eb6);if(_0x2e4e74['query'][_0xe9d1('0x3e')]){_0x333fa4['where']=_[_0xe9d1('0x3f')](_0x333fa4[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x672eb6,function(_0x30f4e5){if(_0x30f4e5[_0xe9d1('0x41')]!=='VIRTUAL'){var _0x1feb2d={};_0x1feb2d[_0x30f4e5[_0xe9d1('0x2d')]]={'$like':'%'+_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0x1feb2d;}})});}_0x333fa4=_[_0xe9d1('0x3f')]({},_0x333fa4,_0x2e4e74['options']);var _0x57fdd8={'where':_0x333fa4[_0xe9d1('0x40')]};return db[_0xe9d1('0x30')][_0xe9d1('0x20')](_0x57fdd8)[_0xe9d1('0x26')](function(_0x89c1a0){_0x5cf9f3[_0xe9d1('0x20')]=_0x89c1a0;if(_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x42')]){_0x333fa4['include']=[{'all':!![]}];}return db['CmList'][_0xe9d1('0x43')](_0x333fa4);})['then'](function(_0x37acbc){_0x5cf9f3[_0xe9d1('0x44')]=_0x37acbc;return _0x5cf9f3;})[_0xe9d1('0x26')](respondWithFilteredResult(_0x14347a,_0x333fa4))[_0xe9d1('0x45')](handleError(_0x14347a,null));};exports[_0xe9d1('0x46')]=function(_0x43834b,_0x1246d0){var _0x369ffd={'raw':![],'where':{'id':_0x43834b[_0xe9d1('0x47')]['id']}},_0x440571={};_0x440571[_0xe9d1('0x33')]=_[_0xe9d1('0x35')](db[_0xe9d1('0x30')]['rawAttributes']);_0x440571[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x43834b['query']);_0x440571[_0xe9d1('0x36')]=_[_0xe9d1('0x48')](_0x440571[_0xe9d1('0x33')],_0x440571[_0xe9d1('0x34')]);_0x369ffd[_0xe9d1('0x37')]=_['intersection'](_0x440571[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x43834b[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x369ffd[_0xe9d1('0x37')]=_0x369ffd['attributes'][_0xe9d1('0x39')]?_0x369ffd[_0xe9d1('0x37')]:_0x440571[_0xe9d1('0x33')];if(_0x43834b['query'][_0xe9d1('0x42')]){_0x369ffd[_0xe9d1('0x49')]=[{'all':!![]}];}_0x369ffd=_['merge']({},_0x369ffd,_0x43834b[_0xe9d1('0x4a')]);return db[_0xe9d1('0x30')][_0xe9d1('0x4b')](_0x369ffd)['then'](handleEntityNotFound(_0x1246d0,null))['then'](respondWithResult(_0x1246d0,null))[_0xe9d1('0x45')](handleError(_0x1246d0,null));};exports[_0xe9d1('0x4c')]=function(_0x5cf1f6,_0x3d452f){return db['CmList']['create'](_0x5cf1f6['body'],{})[_0xe9d1('0x26')](function(_0x567b38){var _0xa51614=_0x5cf1f6[_0xe9d1('0x4d')][_0xe9d1('0x28')]({'plain':!![]});if(!_0xa51614)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa51614['role']==='user'){var _0x5d2b7f=_0x567b38[_0xe9d1('0x28')]({'plain':!![]});var _0x333d1e='Lists';return db[_0xe9d1('0x4e')]['find']({'where':{'name':_0x333d1e,'userProfileId':_0xa51614[_0xe9d1('0x4f')]},'raw':!![]})['then'](function(_0x4daef4){if(_0x4daef4&&_0x4daef4['autoAssociation']===0x0){return db['UserProfileResource'][_0xe9d1('0x4c')]({'name':_0x5d2b7f[_0xe9d1('0x2d')],'resourceId':_0x5d2b7f['id'],'type':_0x4daef4[_0xe9d1('0x2d')],'sectionId':_0x4daef4['id']},{})[_0xe9d1('0x26')](function(){return _0x567b38;});}else{return _0x567b38;}})['catch'](function(_0x5b377e){logger[_0xe9d1('0x2b')](_0xe9d1('0x50'),_0x5b377e);throw _0x5b377e;});}return _0x567b38;})[_0xe9d1('0x26')](respondWithResult(_0x3d452f,0xc9))[_0xe9d1('0x45')](handleError(_0x3d452f,null));};exports['update']=function(_0x182e62,_0x4a1165){if(_0x182e62[_0xe9d1('0x51')]['id']){delete _0x182e62[_0xe9d1('0x51')]['id'];}return db[_0xe9d1('0x30')]['find']({'where':{'id':_0x182e62[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x4a1165,null))[_0xe9d1('0x26')](saveUpdates(_0x182e62[_0xe9d1('0x51')],null))[_0xe9d1('0x26')](respondWithResult(_0x4a1165,null))['catch'](handleError(_0x4a1165,null));};exports['destroy']=function(_0x4dee34,_0x4504b1){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x4dee34[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x4504b1,null))[_0xe9d1('0x26')](removeEntity(_0x4504b1,null))[_0xe9d1('0x45')](handleError(_0x4504b1,null));};exports['describe']=function(_0x3a8500,_0x5ddcbe){return db['CmList'][_0xe9d1('0x52')]()[_0xe9d1('0x26')](respondWithResult(_0x5ddcbe,null))['catch'](handleError(_0x5ddcbe,null));};exports[_0xe9d1('0x53')]=function(_0x2ca305,_0x101910,_0x4bba4d){if(_0x2ca305[_0xe9d1('0x51')]['id']){delete _0x2ca305['body']['id'];}return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x2ca305['params']['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x101910,null))[_0xe9d1('0x26')](function(_0x14774a){if(_0x14774a){_0x2ca305[_0xe9d1('0x51')]['ListId']=_0x14774a['id'];return db[_0xe9d1('0x54')][_0xe9d1('0x4c')](_0x2ca305[_0xe9d1('0x51')]);}})[_0xe9d1('0x26')](respondWithResult(_0x101910,null))[_0xe9d1('0x45')](handleError(_0x101910,null));};exports[_0xe9d1('0x55')]=function(_0x13516e,_0x42281f,_0x3cc99e){var _0x473d49={'raw':![],'where':{}};var _0x26483c={};var _0x427504={'count':0x0,'rows':[]};return db['CmList'][_0xe9d1('0x56')]({'where':{'id':_0x13516e[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x42281f,null))[_0xe9d1('0x26')](function(_0x2ee302){if(_0x2ee302){_0x26483c['model']=_[_0xe9d1('0x35')](db[_0xe9d1('0x54')][_0xe9d1('0x31')]);_0x26483c[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x13516e['query']);_0x26483c['filters']=_[_0xe9d1('0x48')](_0x26483c[_0xe9d1('0x33')],_0x26483c[_0xe9d1('0x34')]);_0x473d49['attributes']=_[_0xe9d1('0x48')](_0x26483c[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x473d49[_0xe9d1('0x37')]=_0x473d49[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x473d49['attributes']:_0x26483c[_0xe9d1('0x33')];if(!_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x57')](_0xe9d1('0x3a'))){_0x473d49[_0xe9d1('0x1f')]=qs[_0xe9d1('0x1f')](_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x1f')]);_0x473d49['offset']=qs[_0xe9d1('0x21')](_0x13516e['query'][_0xe9d1('0x21')]);}_0x473d49[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x13516e[_0xe9d1('0x34')]['sort']);_0x473d49[_0xe9d1('0x40')]=qs['filters'](_[_0xe9d1('0x3d')](_0x13516e[_0xe9d1('0x34')],_0x26483c[_0xe9d1('0x36')]));_0x473d49['where'][_0xe9d1('0x58')]=_0x2ee302['id'];if(_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x3e')]){_0x473d49[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x473d49[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x473d49['attributes'],function(_0x27b54e){var _0x15f36b={};_0x15f36b[_0x27b54e]={'$like':'%'+_0x13516e[_0xe9d1('0x34')]['filter']+'%'};return _0x15f36b;})});}_0x473d49=_[_0xe9d1('0x3f')]({},_0x473d49,_0x13516e[_0xe9d1('0x4a')]);return db[_0xe9d1('0x54')][_0xe9d1('0x20')]({'where':_0x473d49[_0xe9d1('0x40')]})[_0xe9d1('0x26')](function(_0x158421){_0x427504['count']=_0x158421;if(_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x42')]){_0x473d49[_0xe9d1('0x49')]=[{'all':!![]}];}return db[_0xe9d1('0x54')]['findAll'](_0x473d49);})[_0xe9d1('0x26')](function(_0x3a2ea9){_0x427504[_0xe9d1('0x44')]=_0x3a2ea9;return _0x427504;});}})[_0xe9d1('0x26')](respondWithFilteredResult(_0x42281f,_0x473d49))[_0xe9d1('0x45')](handleError(_0x42281f,null));};exports[_0xe9d1('0x59')]=function(_0x5c234c,_0x46d405,_0x5f5dc4){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x5c234c[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x46d405,null))[_0xe9d1('0x26')](function(_0x117e28){if(_0x117e28){return _0x117e28[_0xe9d1('0x59')](_0x5c234c['query'][_0xe9d1('0x5a')]);}})[_0xe9d1('0x26')](respondWithStatusCode(_0x46d405,null))[_0xe9d1('0x45')](handleError(_0x46d405,null));};exports['addContacts']=function(_0x1cb2a9,_0x373691,_0x760daa){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x1cb2a9['params']['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x373691,null))[_0xe9d1('0x26')](function(_0x4ca249){if(_0x4ca249){var _0x5bc453=[];var _0x21175e={'success':[],'errors':[]};return db[_0xe9d1('0x5b')][_0xe9d1('0x52')]()[_0xe9d1('0x26')](function(_0x3a74fe){if(_0x1cb2a9[_0xe9d1('0x51')][_0xe9d1('0x5c')]&&_[_0xe9d1('0x5d')](_0x1cb2a9['body'][_0xe9d1('0x5c')])){if(_0x1cb2a9[_0xe9d1('0x51')]['tags'][_0xe9d1('0x39')]){_0x1cb2a9['body'][_0xe9d1('0x5c')]=_0x1cb2a9[_0xe9d1('0x51')]['tags']['join'](';')+';';}else{_0x1cb2a9['body']['tags']=null;}}else{_0x1cb2a9[_0xe9d1('0x51')][_0xe9d1('0x5c')]=null;}if(_0x1cb2a9['body']&&_[_0xe9d1('0x5d')](_0x1cb2a9[_0xe9d1('0x51')])){for(var _0x2e2bf5=0x0;_0x2e2bf5<_0x1cb2a9['body'][_0xe9d1('0x39')];_0x2e2bf5+=0x1){_0x1cb2a9[_0xe9d1('0x51')][_0x2e2bf5][_0xe9d1('0x58')]=_0x1cb2a9[_0xe9d1('0x47')]['id'];_0x5bc453[_0xe9d1('0x5e')](_0x1cb2a9['body'][_0x2e2bf5]);}return BPromise[_0xe9d1('0x5f')](_0x5bc453,function(_0x49cd61){return db[_0xe9d1('0x5b')][_0xe9d1('0x4c')](_[_0xe9d1('0x60')](_0x49cd61,[_0xe9d1('0x5a'),'id'])||{},{'fields':_[_0xe9d1('0x35')](_0x3a74fe),'raw':!![]})[_0xe9d1('0x26')](function(_0x23f653){_0x21175e[_0xe9d1('0x61')][_0xe9d1('0x5e')](_0x23f653[_0xe9d1('0x62')]);})[_0xe9d1('0x45')](function(_0x40b558){_0x21175e['errors'][_0xe9d1('0x5e')]({'data':_0x49cd61,'error':_0x40b558[_0xe9d1('0x63')]});});})[_0xe9d1('0x26')](function(_0x518de5){return _0x21175e;})[_0xe9d1('0x45')](function(_0x43b972){return _0x43b972;});}else{_0x373691[_0xe9d1('0x1b')](0x190)[_0xe9d1('0x1d')]({'message':_0xe9d1('0x64')});}});}})[_0xe9d1('0x26')](respondWithResult(_0x373691,null))[_0xe9d1('0x45')](handleError(_0x373691,null));};exports[_0xe9d1('0x65')]=function(_0x10816a,_0xad1ecc,_0x50b5af){var _0x577b23;return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x10816a[_0xe9d1('0x47')]['id']},'include':[{'model':db[_0xe9d1('0x66')],'as':_0xe9d1('0x67')}]})[_0xe9d1('0x26')](handleEntityNotFound(_0xad1ecc,null))[_0xe9d1('0x26')](function(_0x491a79){if(_0x491a79){_0x577b23=_0x491a79;return db[_0xe9d1('0x5b')][_0xe9d1('0x31')];}})[_0xe9d1('0x26')](function(_0x36420f){if(_0x36420f){var _0x34b7c9={};var _0x416ada={};_0x416ada[_0xe9d1('0x33')]=_[_0xe9d1('0x68')](_['keys'](_0x36420f),_['map'](_0x577b23[_0xe9d1('0x67')],function(_0x11fcfc){return util[_0xe9d1('0x69')]('cf_%d',_0x11fcfc['id']);}));_0x416ada[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x10816a['query']);_0x416ada[_0xe9d1('0x36')]=_[_0xe9d1('0x48')](_0x416ada[_0xe9d1('0x33')],_0x416ada[_0xe9d1('0x34')]);_0x34b7c9[_0xe9d1('0x37')]=_[_0xe9d1('0x48')](_0x416ada[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x34b7c9[_0xe9d1('0x37')]=_0x34b7c9[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x34b7c9[_0xe9d1('0x37')]:_0x416ada[_0xe9d1('0x33')];if(!_0x10816a[_0xe9d1('0x34')]['hasOwnProperty']('nolimit')){_0x34b7c9[_0xe9d1('0x1f')]=qs[_0xe9d1('0x1f')](_0x10816a['query'][_0xe9d1('0x1f')]);_0x34b7c9[_0xe9d1('0x21')]=qs[_0xe9d1('0x21')](_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x21')]);}_0x34b7c9[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x3c')]);_0x34b7c9['where']=qs['filters'](_[_0xe9d1('0x3d')](_0x10816a[_0xe9d1('0x34')],_0x416ada[_0xe9d1('0x36')]));_0x34b7c9[_0xe9d1('0x6a')]=!![];if(_0x10816a[_0xe9d1('0x34')]['filter']){_0x34b7c9[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x34b7c9['where'],{'$or':_[_0xe9d1('0x2f')](_0x34b7c9[_0xe9d1('0x37')],function(_0x601476){var _0xa4aca={};_0xa4aca[_0x601476]={'$like':'%'+_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0xa4aca;})});}_0x34b7c9=_[_0xe9d1('0x3f')]({},_0x34b7c9,_0x10816a[_0xe9d1('0x4a')]);return _0x577b23[_0xe9d1('0x65')](_0x34b7c9);}})[_0xe9d1('0x26')](respondWithResult(_0xad1ecc,null))[_0xe9d1('0x45')](handleError(_0xad1ecc,null));};exports[_0xe9d1('0x6b')]=function(_0x8a7a5a,_0x19f1b3,_0x2d0fbe){var _0x58cc64;return db['CmList'][_0xe9d1('0x4b')]({'where':{'id':_0x8a7a5a[_0xe9d1('0x47')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xe9d1('0x67')}]})[_0xe9d1('0x26')](handleEntityNotFound(_0x19f1b3,null))['then'](function(_0x489c45){if(_0x489c45){_0x58cc64=_0x489c45;return db[_0xe9d1('0x5b')][_0xe9d1('0x31')];}})[_0xe9d1('0x26')](function(_0x478af8){if(_0x478af8){var _0x5c1e0f={};var _0x3f7bd8={};_0x3f7bd8[_0xe9d1('0x33')]=_[_0xe9d1('0x68')](_[_0xe9d1('0x35')](_0x478af8),_[_0xe9d1('0x2f')](_0x58cc64[_0xe9d1('0x67')],function(_0x11f204){return util[_0xe9d1('0x69')](_0xe9d1('0x6c'),_0x11f204['id']);}));_0x3f7bd8[_0xe9d1('0x34')]=_['keys'](_0x8a7a5a[_0xe9d1('0x34')]);_0x3f7bd8[_0xe9d1('0x36')]=_['intersection'](_0x3f7bd8[_0xe9d1('0x33')],_0x3f7bd8[_0xe9d1('0x34')]);_0x5c1e0f['attributes']=_[_0xe9d1('0x48')](_0x3f7bd8['model'],qs[_0xe9d1('0x38')](_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x5c1e0f[_0xe9d1('0x37')]=_0x5c1e0f[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x5c1e0f[_0xe9d1('0x37')]:_0x3f7bd8['model'];if(!_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x57')](_0xe9d1('0x3a'))){_0x5c1e0f['limit']=qs['limit'](_0x8a7a5a['query'][_0xe9d1('0x1f')]);_0x5c1e0f[_0xe9d1('0x21')]=qs[_0xe9d1('0x21')](_0x8a7a5a['query']['offset']);}_0x5c1e0f[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x8a7a5a['query'][_0xe9d1('0x3c')]);_0x5c1e0f[_0xe9d1('0x40')]=qs[_0xe9d1('0x36')](_['pick'](_0x8a7a5a[_0xe9d1('0x34')],_0x3f7bd8['filters']));_0x5c1e0f[_0xe9d1('0x6a')]=!![];if(_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x3e')]){_0x5c1e0f[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x5c1e0f[_0xe9d1('0x40')],{'$or':_['map'](_0x5c1e0f[_0xe9d1('0x37')],function(_0x6582e9){var _0x34eec9={};_0x34eec9[_0x6582e9]={'$like':'%'+_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0x34eec9;})});}_0x5c1e0f=_['merge']({},_0x5c1e0f,_0x8a7a5a['options']);return _0x58cc64['getContacts'](_0x5c1e0f);}})[_0xe9d1('0x26')](function(_0x31f0ee){if(!_[_0xe9d1('0x6d')](_0x31f0ee)){var _0x46fa02=toCsv(_0x31f0ee);var _0x1b9afc=Date[_0xe9d1('0x6e')]();fs[_0xe9d1('0x6f')](util['format'](_0xe9d1('0x70'),_0x58cc64['id'],_0x1b9afc),_0x46fa02);_0x19f1b3[_0xe9d1('0x71')]('Content-disposition','attachment;\x20filename='+util[_0xe9d1('0x69')](_0xe9d1('0x72'),_0x58cc64['id'],_0x1b9afc));_0x19f1b3['setHeader'](_0xe9d1('0x73'),_0xe9d1('0x74'));return _0x19f1b3[_0xe9d1('0x75')](util[_0xe9d1('0x69')](_0xe9d1('0x70'),_0x58cc64['id'],_0x1b9afc));}else{return _0x19f1b3[_0xe9d1('0x1a')](0xcc);}})[_0xe9d1('0x45')](handleError(_0x19f1b3,null));};exports[_0xe9d1('0x76')]=function(_0xb5607e,_0x4c55c2,_0x5e6f43){var _0x53ed7d;delete _0xb5607e[_0xe9d1('0x51')]['id'];return db['CmList'][_0xe9d1('0x56')]({'where':{'id':_0xb5607e[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x4c55c2,null))[_0xe9d1('0x26')](function(_0xcb4bec){if(_0xcb4bec){return db[_0xe9d1('0x77')][_0xe9d1('0x78')](function(_0x428d3e){return db[_0xe9d1('0x66')][_0xe9d1('0x4c')](_0xb5607e[_0xe9d1('0x51')],{'transaction':_0x428d3e})['then'](function(_0x19f3a5){_0x53ed7d=_0x19f3a5;return _0xcb4bec[_0xe9d1('0x79')](_0x19f3a5,{'transaction':_0x428d3e});})['then'](function(){var _0x32becf={'type':db[_0xe9d1('0x7a')][_0xe9d1('0x7b')],'transaction':_0x428d3e};switch(_0xb5607e['body']['type']){case _0xe9d1('0x7c'):_0x32becf[_0xe9d1('0x41')]=db[_0xe9d1('0x7a')][_0xe9d1('0x7b')];break;case _0xe9d1('0x7d'):_0x32becf['type']=db[_0xe9d1('0x7a')][_0xe9d1('0x7e')];break;case _0xe9d1('0x7f'):_0x32becf[_0xe9d1('0x41')]=db[_0xe9d1('0x7a')][_0xe9d1('0x80')];_0x32becf['defaultValue']=![];break;default:}return db[_0xe9d1('0x77')][_0xe9d1('0x81')][_0xe9d1('0x82')](_0xe9d1('0x83'),util[_0xe9d1('0x69')](_0xe9d1('0x84'),_0x53ed7d['id']),_0x32becf);})[_0xe9d1('0x26')](function(){return _0x53ed7d;});});}})[_0xe9d1('0x26')](respondWithResult(_0x4c55c2,null))[_0xe9d1('0x45')](handleError(_0x4c55c2,null));};exports[_0xe9d1('0x85')]=function(_0x240ffe,_0x21a166,_0x3c1576){var _0x56ae9a={};var _0x5d4035={};var _0x51f405;var _0x461875;return db['CmList'][_0xe9d1('0x56')]({'where':{'id':_0x240ffe[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x21a166,null))['then'](function(_0x56e336){if(_0x56e336){_0x51f405=_0x56e336;_0x5d4035[_0xe9d1('0x33')]=_[_0xe9d1('0x35')](db[_0xe9d1('0x66')][_0xe9d1('0x31')]);_0x5d4035['query']=_[_0xe9d1('0x35')](_0x240ffe[_0xe9d1('0x34')]);_0x5d4035['filters']=_[_0xe9d1('0x48')](_0x5d4035[_0xe9d1('0x33')],_0x5d4035[_0xe9d1('0x34')]);_0x56ae9a[_0xe9d1('0x37')]=_[_0xe9d1('0x48')](_0x5d4035[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x240ffe[_0xe9d1('0x34')]['fields']));_0x56ae9a[_0xe9d1('0x37')]=_0x56ae9a[_0xe9d1('0x37')]['length']?_0x56ae9a[_0xe9d1('0x37')]:_0x5d4035[_0xe9d1('0x33')];_0x56ae9a[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x240ffe[_0xe9d1('0x34')][_0xe9d1('0x3c')]);_0x56ae9a['where']=qs[_0xe9d1('0x36')](_[_0xe9d1('0x3d')](_0x240ffe[_0xe9d1('0x34')],_0x5d4035['filters']));_0x56ae9a[_0xe9d1('0x40')]=_['merge'](_0x56ae9a[_0xe9d1('0x40')],{'$or':[{'ListId':_0x56e336['id']},{'ListId':null}]});if(_0x240ffe[_0xe9d1('0x34')]['filter']){_0x56ae9a[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x56ae9a[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x56ae9a[_0xe9d1('0x37')],function(_0x1314d5){var _0xb53626={};_0xb53626[_0x1314d5]={'$like':'%'+_0x240ffe[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0xb53626;})});}_0x56ae9a=_[_0xe9d1('0x3f')]({},_0x56ae9a,_0x240ffe['options']);return db[_0xe9d1('0x66')][_0xe9d1('0x86')](_0x56ae9a);}})['then'](respondWithResult(_0x21a166,null))[_0xe9d1('0x45')](handleError(_0x21a166,null));};exports['addAgents']=function(_0x1bf2ee,_0x253826,_0x171ef7){return db['CmList'][_0xe9d1('0x4b')]({'where':{'id':_0x1bf2ee[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x253826,null))[_0xe9d1('0x26')](function(_0x3f7f89){if(_0x3f7f89){return _0x3f7f89[_0xe9d1('0x87')](_0x1bf2ee[_0xe9d1('0x51')][_0xe9d1('0x5a')],_[_0xe9d1('0x60')](_0x1bf2ee[_0xe9d1('0x51')],['ids','id'])||{})[_0xe9d1('0x88')](function(_0x9dcac7){for(var _0x4b67df=0x0;_0x4b67df<_0x1bf2ee['body'][_0xe9d1('0x5a')][_0xe9d1('0x39')];_0x4b67df+=0x1){socket[_0xe9d1('0x89')]('userCmList:save',{'UserId':Number(_0x1bf2ee[_0xe9d1('0x51')]['ids'][_0x4b67df]),'CmListId':Number(_0x1bf2ee['params']['id'])});}return _0x9dcac7;});}})[_0xe9d1('0x26')](respondWithResult(_0x253826,null))[_0xe9d1('0x45')](handleError(_0x253826,null));};exports[_0xe9d1('0x8a')]=function(_0x5673f0,_0x48804e,_0x432d03){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x5673f0[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x48804e,null))[_0xe9d1('0x26')](function(_0x48273f){if(_0x48273f){return _0x48273f[_0xe9d1('0x8a')](_0x5673f0['query'][_0xe9d1('0x5a')])['then'](function(){if(_[_0xe9d1('0x5d')](_0x5673f0[_0xe9d1('0x34')]['ids'])){for(var _0x39cc4f=0x0;_0x39cc4f<_0x5673f0['query']['ids'][_0xe9d1('0x39')];_0x39cc4f+=0x1){socket[_0xe9d1('0x89')](_0xe9d1('0x8b'),{'UserId':Number(_0x5673f0[_0xe9d1('0x34')][_0xe9d1('0x5a')][_0x39cc4f]),'CmListId':Number(_0x5673f0[_0xe9d1('0x47')]['id'])});}}else{socket[_0xe9d1('0x89')](_0xe9d1('0x8b'),{'UserId':Number(_0x5673f0[_0xe9d1('0x34')][_0xe9d1('0x5a')]),'CmListId':Number(_0x5673f0['params']['id'])});}});}})['then'](respondWithStatusCode(_0x48804e,null))[_0xe9d1('0x45')](handleError(_0x48804e,null));};exports[_0xe9d1('0x8c')]=function(_0x118e52,_0x22721d,_0x9df397){var _0x85066={};var _0x36eb33={};var _0x1ea8f1;var _0x2b1f66;return db[_0xe9d1('0x30')][_0xe9d1('0x56')]({'where':{'id':_0x118e52[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x22721d,null))[_0xe9d1('0x26')](function(_0x1bd96a){if(_0x1bd96a){_0x1ea8f1=_0x1bd96a;_0x36eb33['model']=_[_0xe9d1('0x35')](db[_0xe9d1('0x8d')][_0xe9d1('0x31')]);_0x36eb33[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x118e52[_0xe9d1('0x34')]);_0x36eb33['filters']=_[_0xe9d1('0x48')](_0x36eb33[_0xe9d1('0x33')],_0x36eb33['query']);_0x85066[_0xe9d1('0x37')]=_[_0xe9d1('0x48')](_0x36eb33['model'],qs['fields'](_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x85066['attributes']=_0x85066[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x85066['attributes']:_0x36eb33[_0xe9d1('0x33')];_0x85066[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x3c')]);_0x85066[_0xe9d1('0x40')]=qs[_0xe9d1('0x36')](_[_0xe9d1('0x3d')](_0x118e52['query'],_0x36eb33[_0xe9d1('0x36')]));if(_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x3e')]){_0x85066[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x85066[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x85066[_0xe9d1('0x37')],function(_0x1b6d6d){var _0x10084e={};_0x10084e[_0x1b6d6d]={'$like':'%'+_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0x10084e;})});}_0x85066=_[_0xe9d1('0x3f')]({},_0x85066,_0x118e52['options']);return _0x1ea8f1['getAgents'](_0x85066);}})[_0xe9d1('0x26')](function(_0x3dda16){if(_0x3dda16){_0x2b1f66=_0x3dda16[_0xe9d1('0x39')];if(!_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x57')](_0xe9d1('0x3a'))){_0x85066[_0xe9d1('0x1f')]=qs[_0xe9d1('0x1f')](_0x118e52[_0xe9d1('0x34')]['limit']);_0x85066[_0xe9d1('0x21')]=qs['offset'](_0x118e52[_0xe9d1('0x34')]['offset']);}return _0x1ea8f1[_0xe9d1('0x8c')](_0x85066);}})[_0xe9d1('0x26')](function(_0x56aa8f){if(_0x56aa8f){return _0x56aa8f?{'count':_0x2b1f66,'rows':_0x56aa8f}:null;}})[_0xe9d1('0x26')](respondWithResult(_0x22721d,null))[_0xe9d1('0x45')](handleError(_0x22721d,null));};
\ No newline at end of file
+var _0xaae1=['list_%d_%s.csv','Content-type','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','getCustomFields','addAgents','ids','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./cmList.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','Lists','UserProfileResource','end','error','stack','name','send','index','map','CmList','rawAttributes','type','key','model','keys','query','attributes','fields','length','hasOwnProperty','sort','filters','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','describe','ListId','Disposition','findOne','order','pick','removeDispositions','addContacts','CmContact','tags','isArray','join','push','omit','dataValues','errors','Malformed\x20request\x20syntax','CmCustomField','CustomFields','cf_%d','nolimit','getContacts','format','raw','isEmpty','now','writeFileSync','setHeader','Content-disposition'];(function(_0x51b73a,_0x25023f){var _0x44b2fb=function(_0x3b8e57){while(--_0x3b8e57){_0x51b73a['push'](_0x51b73a['shift']());}};_0x44b2fb(++_0x25023f);}(_0xaae1,0xab));var _0x1aae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaae1[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1aae('0x0'));var rimraf=require(_0x1aae('0x1'));var zipdir=require(_0x1aae('0x2'));var jsonpatch=require(_0x1aae('0x3'));var rp=require(_0x1aae('0x4'));var moment=require(_0x1aae('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1aae('0x6'));var util=require(_0x1aae('0x7'));var path=require(_0x1aae('0x8'));var sox=require('sox');var csv=require(_0x1aae('0x9'));var ejs=require(_0x1aae('0xa'));var fs=require('fs');var fs_extra=require(_0x1aae('0xb'));var _=require('lodash');var squel=require(_0x1aae('0xc'));var crypto=require(_0x1aae('0xd'));var jsforce=require(_0x1aae('0xe'));var deskjs=require(_0x1aae('0xf'));var toCsv=require(_0x1aae('0x9'));var querystring=require('querystring');var Papa=require(_0x1aae('0x10'));var Redis=require(_0x1aae('0x11'));var authService=require(_0x1aae('0x12'));var qs=require(_0x1aae('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1aae('0x14'));var logger=require(_0x1aae('0x15'))(_0x1aae('0x16'));var utils=require(_0x1aae('0x17'));var config=require(_0x1aae('0x18'));var licenseUtil=require(_0x1aae('0x19'));var db=require(_0x1aae('0x1a'))['db'];config['redis']=_[_0x1aae('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1aae('0x1c')]));require(_0x1aae('0x1d'))[_0x1aae('0x1e')](socket);function respondWithStatusCode(_0x27be03,_0x53afba){_0x53afba=_0x53afba||0xcc;return function(_0x4d16bf){if(_0x4d16bf){return _0x27be03[_0x1aae('0x1f')](_0x53afba);}return _0x27be03[_0x1aae('0x20')](_0x53afba)['end']();};}function respondWithResult(_0x43f4db,_0x4082e3){_0x4082e3=_0x4082e3||0xc8;return function(_0x21da01){if(_0x21da01){return _0x43f4db['status'](_0x4082e3)[_0x1aae('0x21')](_0x21da01);}};}function respondWithFilteredResult(_0x246e42,_0x271ab7){return function(_0x44eaf3){if(_0x44eaf3){var _0x2ce454=typeof _0x271ab7[_0x1aae('0x22')]===_0x1aae('0x23')&&typeof _0x271ab7[_0x1aae('0x24')]===_0x1aae('0x23');var _0x2d9461=_0x44eaf3['count'];var _0x4445f1=_0x2ce454?0x0:_0x271ab7[_0x1aae('0x22')];var _0x4d4c51=_0x2ce454?_0x44eaf3[_0x1aae('0x25')]:_0x271ab7['offset']+_0x271ab7[_0x1aae('0x24')];var _0x21a4bc;if(_0x4d4c51>=_0x2d9461){_0x4d4c51=_0x2d9461;_0x21a4bc=0xc8;}else{_0x21a4bc=0xce;}_0x246e42['status'](_0x21a4bc);return _0x246e42['set'](_0x1aae('0x26'),_0x4445f1+'-'+_0x4d4c51+'/'+_0x2d9461)[_0x1aae('0x21')](_0x44eaf3);}return null;};}function patchUpdates(_0x1af6f6){return function(_0x4228f9){try{jsonpatch['apply'](_0x4228f9,_0x1af6f6,!![]);}catch(_0x132ded){return BPromise[_0x1aae('0x27')](_0x132ded);}return _0x4228f9[_0x1aae('0x28')]();};}function saveUpdates(_0x37255b,_0x44e6d6){return function(_0x29ce03){if(_0x29ce03){return _0x29ce03[_0x1aae('0x29')](_0x37255b)['then'](function(_0x252b12){return _0x252b12;});}return null;};}function removeEntity(_0x5631e6,_0x1c4352){return function(_0x4ff407){if(_0x4ff407){return _0x4ff407[_0x1aae('0x2a')]()[_0x1aae('0x2b')](function(){var _0x53da9d=_0x4ff407['get']({'plain':!![]});var _0x35b03c=_0x1aae('0x2c');return db[_0x1aae('0x2d')][_0x1aae('0x2a')]({'where':{'type':_0x35b03c,'resourceId':_0x53da9d['id']}})['then'](function(){return _0x4ff407;});})[_0x1aae('0x2b')](function(){_0x5631e6[_0x1aae('0x20')](0xcc)[_0x1aae('0x2e')]();});}};}function handleEntityNotFound(_0x3ae5d7,_0x1a5cd4){return function(_0x532190){if(!_0x532190){_0x3ae5d7[_0x1aae('0x1f')](0x194);}return _0x532190;};}function handleError(_0x2b2c58,_0x146b11){_0x146b11=_0x146b11||0x1f4;return function(_0x5a9197){logger[_0x1aae('0x2f')](_0x5a9197[_0x1aae('0x30')]);if(_0x5a9197[_0x1aae('0x31')]){delete _0x5a9197['name'];}_0x2b2c58['status'](_0x146b11)[_0x1aae('0x32')](_0x5a9197);};}exports[_0x1aae('0x33')]=function(_0x2cdf2e,_0x4f39a8){var _0x1f7feb={},_0x4dd4c9={},_0x514498={'count':0x0,'rows':[]};var _0x23c93d=_[_0x1aae('0x34')](db[_0x1aae('0x35')][_0x1aae('0x36')],function(_0x3ffc13){return{'name':_0x3ffc13['fieldName'],'type':_0x3ffc13[_0x1aae('0x37')][_0x1aae('0x38')]};});_0x4dd4c9[_0x1aae('0x39')]=_[_0x1aae('0x34')](_0x23c93d,_0x1aae('0x31'));_0x4dd4c9['query']=_[_0x1aae('0x3a')](_0x2cdf2e[_0x1aae('0x3b')]);_0x4dd4c9['filters']=_['intersection'](_0x4dd4c9[_0x1aae('0x39')],_0x4dd4c9[_0x1aae('0x3b')]);_0x1f7feb[_0x1aae('0x3c')]=_['intersection'](_0x4dd4c9['model'],qs[_0x1aae('0x3d')](_0x2cdf2e[_0x1aae('0x3b')][_0x1aae('0x3d')]));_0x1f7feb[_0x1aae('0x3c')]=_0x1f7feb['attributes'][_0x1aae('0x3e')]?_0x1f7feb[_0x1aae('0x3c')]:_0x4dd4c9[_0x1aae('0x39')];if(!_0x2cdf2e[_0x1aae('0x3b')][_0x1aae('0x3f')]('nolimit')){_0x1f7feb[_0x1aae('0x24')]=qs[_0x1aae('0x24')](_0x2cdf2e['query'][_0x1aae('0x24')]);_0x1f7feb[_0x1aae('0x22')]=qs[_0x1aae('0x22')](_0x2cdf2e[_0x1aae('0x3b')]['offset']);}_0x1f7feb['order']=qs['sort'](_0x2cdf2e[_0x1aae('0x3b')][_0x1aae('0x40')]);_0x1f7feb['where']=qs[_0x1aae('0x41')](_['pick'](_0x2cdf2e[_0x1aae('0x3b')],_0x4dd4c9[_0x1aae('0x41')]),_0x23c93d);if(_0x2cdf2e[_0x1aae('0x3b')][_0x1aae('0x42')]){_0x1f7feb['where']=_[_0x1aae('0x43')](_0x1f7feb[_0x1aae('0x44')],{'$or':_[_0x1aae('0x34')](_0x23c93d,function(_0x36607f){if(_0x36607f['type']!==_0x1aae('0x45')){var _0x30f8d3={};_0x30f8d3[_0x36607f['name']]={'$like':'%'+_0x2cdf2e['query']['filter']+'%'};return _0x30f8d3;}})});}_0x1f7feb=_[_0x1aae('0x43')]({},_0x1f7feb,_0x2cdf2e[_0x1aae('0x46')]);var _0x3fc87b={'where':_0x1f7feb['where']};return db[_0x1aae('0x35')][_0x1aae('0x25')](_0x3fc87b)[_0x1aae('0x2b')](function(_0x35fc35){_0x514498[_0x1aae('0x25')]=_0x35fc35;if(_0x2cdf2e[_0x1aae('0x3b')][_0x1aae('0x47')]){_0x1f7feb[_0x1aae('0x48')]=[{'all':!![]}];}return db['CmList'][_0x1aae('0x49')](_0x1f7feb);})['then'](function(_0x26690e){_0x514498[_0x1aae('0x4a')]=_0x26690e;return _0x514498;})['then'](respondWithFilteredResult(_0x4f39a8,_0x1f7feb))[_0x1aae('0x4b')](handleError(_0x4f39a8,null));};exports[_0x1aae('0x4c')]=function(_0x2d110a,_0x38fb7a){var _0x1a4006={'raw':![],'where':{'id':_0x2d110a[_0x1aae('0x4d')]['id']}},_0x474195={};_0x474195[_0x1aae('0x39')]=_['keys'](db['CmList']['rawAttributes']);_0x474195[_0x1aae('0x3b')]=_[_0x1aae('0x3a')](_0x2d110a[_0x1aae('0x3b')]);_0x474195['filters']=_[_0x1aae('0x4e')](_0x474195['model'],_0x474195[_0x1aae('0x3b')]);_0x1a4006[_0x1aae('0x3c')]=_[_0x1aae('0x4e')](_0x474195['model'],qs[_0x1aae('0x3d')](_0x2d110a[_0x1aae('0x3b')][_0x1aae('0x3d')]));_0x1a4006['attributes']=_0x1a4006[_0x1aae('0x3c')]['length']?_0x1a4006[_0x1aae('0x3c')]:_0x474195[_0x1aae('0x39')];if(_0x2d110a[_0x1aae('0x3b')]['includeAll']){_0x1a4006[_0x1aae('0x48')]=[{'all':!![]}];}_0x1a4006=_[_0x1aae('0x43')]({},_0x1a4006,_0x2d110a[_0x1aae('0x46')]);return db[_0x1aae('0x35')][_0x1aae('0x4f')](_0x1a4006)[_0x1aae('0x2b')](handleEntityNotFound(_0x38fb7a,null))['then'](respondWithResult(_0x38fb7a,null))[_0x1aae('0x4b')](handleError(_0x38fb7a,null));};exports[_0x1aae('0x50')]=function(_0x5b3c48,_0x12aaa4){return db[_0x1aae('0x35')]['create'](_0x5b3c48[_0x1aae('0x51')],{})[_0x1aae('0x2b')](function(_0x4bbe7a){var _0x351cd0=_0x5b3c48['user'][_0x1aae('0x52')]({'plain':!![]});if(!_0x351cd0)throw new Error(_0x1aae('0x53'));if(_0x351cd0['role']===_0x1aae('0x54')){var _0x2eb9f0=_0x4bbe7a['get']({'plain':!![]});var _0xc18686='Lists';return db['UserProfileSection'][_0x1aae('0x4f')]({'where':{'name':_0xc18686,'userProfileId':_0x351cd0['userProfileId']},'raw':!![]})[_0x1aae('0x2b')](function(_0x1ceea6){if(_0x1ceea6&&_0x1ceea6[_0x1aae('0x55')]===0x0){return db[_0x1aae('0x2d')][_0x1aae('0x50')]({'name':_0x2eb9f0[_0x1aae('0x31')],'resourceId':_0x2eb9f0['id'],'type':_0x1ceea6[_0x1aae('0x31')],'sectionId':_0x1ceea6['id']},{})[_0x1aae('0x2b')](function(){return _0x4bbe7a;});}else{return _0x4bbe7a;}})[_0x1aae('0x4b')](function(_0xa68ed2){logger[_0x1aae('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa68ed2);throw _0xa68ed2;});}return _0x4bbe7a;})[_0x1aae('0x2b')](respondWithResult(_0x12aaa4,0xc9))[_0x1aae('0x4b')](handleError(_0x12aaa4,null));};exports[_0x1aae('0x29')]=function(_0x373b4b,_0x1183f8){if(_0x373b4b['body']['id']){delete _0x373b4b['body']['id'];}return db[_0x1aae('0x35')][_0x1aae('0x4f')]({'where':{'id':_0x373b4b[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x1183f8,null))[_0x1aae('0x2b')](saveUpdates(_0x373b4b[_0x1aae('0x51')],null))[_0x1aae('0x2b')](respondWithResult(_0x1183f8,null))[_0x1aae('0x4b')](handleError(_0x1183f8,null));};exports[_0x1aae('0x2a')]=function(_0x5f03da,_0x312a78){return db[_0x1aae('0x35')][_0x1aae('0x4f')]({'where':{'id':_0x5f03da[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x312a78,null))[_0x1aae('0x2b')](removeEntity(_0x312a78,null))[_0x1aae('0x4b')](handleError(_0x312a78,null));};exports[_0x1aae('0x56')]=function(_0x410212,_0x5776c9){return db[_0x1aae('0x35')][_0x1aae('0x56')]()[_0x1aae('0x2b')](respondWithResult(_0x5776c9,null))[_0x1aae('0x4b')](handleError(_0x5776c9,null));};exports['addDisposition']=function(_0x23399e,_0x15d33c,_0x3ae30b){if(_0x23399e['body']['id']){delete _0x23399e[_0x1aae('0x51')]['id'];}return db['CmList'][_0x1aae('0x4f')]({'where':{'id':_0x23399e[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x15d33c,null))[_0x1aae('0x2b')](function(_0x3e5861){if(_0x3e5861){_0x23399e[_0x1aae('0x51')][_0x1aae('0x57')]=_0x3e5861['id'];return db[_0x1aae('0x58')][_0x1aae('0x50')](_0x23399e[_0x1aae('0x51')]);}})[_0x1aae('0x2b')](respondWithResult(_0x15d33c,null))[_0x1aae('0x4b')](handleError(_0x15d33c,null));};exports['getDispositions']=function(_0x4d5f44,_0x8a0018,_0x3ce20f){var _0x5e4dbe={'raw':![],'where':{}};var _0xca26af={};var _0x3ae573={'count':0x0,'rows':[]};return db['CmList'][_0x1aae('0x59')]({'where':{'id':_0x4d5f44[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x8a0018,null))[_0x1aae('0x2b')](function(_0xf86425){if(_0xf86425){_0xca26af['model']=_[_0x1aae('0x3a')](db[_0x1aae('0x58')][_0x1aae('0x36')]);_0xca26af[_0x1aae('0x3b')]=_[_0x1aae('0x3a')](_0x4d5f44[_0x1aae('0x3b')]);_0xca26af[_0x1aae('0x41')]=_[_0x1aae('0x4e')](_0xca26af[_0x1aae('0x39')],_0xca26af['query']);_0x5e4dbe['attributes']=_[_0x1aae('0x4e')](_0xca26af['model'],qs[_0x1aae('0x3d')](_0x4d5f44['query'][_0x1aae('0x3d')]));_0x5e4dbe[_0x1aae('0x3c')]=_0x5e4dbe[_0x1aae('0x3c')][_0x1aae('0x3e')]?_0x5e4dbe['attributes']:_0xca26af[_0x1aae('0x39')];if(!_0x4d5f44[_0x1aae('0x3b')][_0x1aae('0x3f')]('nolimit')){_0x5e4dbe[_0x1aae('0x24')]=qs['limit'](_0x4d5f44[_0x1aae('0x3b')][_0x1aae('0x24')]);_0x5e4dbe[_0x1aae('0x22')]=qs[_0x1aae('0x22')](_0x4d5f44[_0x1aae('0x3b')][_0x1aae('0x22')]);}_0x5e4dbe[_0x1aae('0x5a')]=qs[_0x1aae('0x40')](_0x4d5f44['query'][_0x1aae('0x40')]);_0x5e4dbe[_0x1aae('0x44')]=qs[_0x1aae('0x41')](_[_0x1aae('0x5b')](_0x4d5f44['query'],_0xca26af['filters']));_0x5e4dbe['where'][_0x1aae('0x57')]=_0xf86425['id'];if(_0x4d5f44[_0x1aae('0x3b')][_0x1aae('0x42')]){_0x5e4dbe['where']=_[_0x1aae('0x43')](_0x5e4dbe[_0x1aae('0x44')],{'$or':_[_0x1aae('0x34')](_0x5e4dbe[_0x1aae('0x3c')],function(_0x356dd3){var _0x48d572={};_0x48d572[_0x356dd3]={'$like':'%'+_0x4d5f44[_0x1aae('0x3b')]['filter']+'%'};return _0x48d572;})});}_0x5e4dbe=_['merge']({},_0x5e4dbe,_0x4d5f44[_0x1aae('0x46')]);return db['Disposition'][_0x1aae('0x25')]({'where':_0x5e4dbe[_0x1aae('0x44')]})[_0x1aae('0x2b')](function(_0x4cfed2){_0x3ae573[_0x1aae('0x25')]=_0x4cfed2;if(_0x4d5f44['query'][_0x1aae('0x47')]){_0x5e4dbe[_0x1aae('0x48')]=[{'all':!![]}];}return db[_0x1aae('0x58')][_0x1aae('0x49')](_0x5e4dbe);})['then'](function(_0x3114f7){_0x3ae573['rows']=_0x3114f7;return _0x3ae573;});}})[_0x1aae('0x2b')](respondWithFilteredResult(_0x8a0018,_0x5e4dbe))[_0x1aae('0x4b')](handleError(_0x8a0018,null));};exports['removeDispositions']=function(_0x1ee907,_0x29dbc3,_0x591d3e){return db['CmList'][_0x1aae('0x4f')]({'where':{'id':_0x1ee907[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x29dbc3,null))[_0x1aae('0x2b')](function(_0x13ab1d){if(_0x13ab1d){return _0x13ab1d[_0x1aae('0x5c')](_0x1ee907[_0x1aae('0x3b')]['ids']);}})[_0x1aae('0x2b')](respondWithStatusCode(_0x29dbc3,null))[_0x1aae('0x4b')](handleError(_0x29dbc3,null));};exports[_0x1aae('0x5d')]=function(_0x3fdd4b,_0x125936,_0x383a72){return db[_0x1aae('0x35')]['find']({'where':{'id':_0x3fdd4b[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x125936,null))[_0x1aae('0x2b')](function(_0x270c6f){if(_0x270c6f){var _0x270663=[];var _0x1cc24d={'success':[],'errors':[]};return db[_0x1aae('0x5e')][_0x1aae('0x56')]()[_0x1aae('0x2b')](function(_0x4344aa){if(_0x3fdd4b['body'][_0x1aae('0x5f')]&&_[_0x1aae('0x60')](_0x3fdd4b['body'][_0x1aae('0x5f')])){if(_0x3fdd4b[_0x1aae('0x51')][_0x1aae('0x5f')]['length']){_0x3fdd4b[_0x1aae('0x51')][_0x1aae('0x5f')]=_0x3fdd4b[_0x1aae('0x51')][_0x1aae('0x5f')][_0x1aae('0x61')](';')+';';}else{_0x3fdd4b['body']['tags']=null;}}else{_0x3fdd4b[_0x1aae('0x51')][_0x1aae('0x5f')]=null;}if(_0x3fdd4b[_0x1aae('0x51')]&&_[_0x1aae('0x60')](_0x3fdd4b[_0x1aae('0x51')])){for(var _0x59901d=0x0;_0x59901d<_0x3fdd4b['body'][_0x1aae('0x3e')];_0x59901d+=0x1){_0x3fdd4b['body'][_0x59901d][_0x1aae('0x57')]=_0x3fdd4b['params']['id'];_0x270663[_0x1aae('0x62')](_0x3fdd4b[_0x1aae('0x51')][_0x59901d]);}return BPromise['each'](_0x270663,function(_0x4cab14){return db['CmContact'][_0x1aae('0x50')](_[_0x1aae('0x63')](_0x4cab14,['ids','id'])||{},{'fields':_[_0x1aae('0x3a')](_0x4344aa),'raw':!![]})[_0x1aae('0x2b')](function(_0x823a89){_0x1cc24d['success'][_0x1aae('0x62')](_0x823a89[_0x1aae('0x64')]);})[_0x1aae('0x4b')](function(_0x4071ea){_0x1cc24d[_0x1aae('0x65')][_0x1aae('0x62')]({'data':_0x4cab14,'error':_0x4071ea['message']});});})[_0x1aae('0x2b')](function(_0x4eb168){return _0x1cc24d;})[_0x1aae('0x4b')](function(_0x4183b8){return _0x4183b8;});}else{_0x125936[_0x1aae('0x20')](0x190)[_0x1aae('0x21')]({'message':_0x1aae('0x66')});}});}})['then'](respondWithResult(_0x125936,null))['catch'](handleError(_0x125936,null));};exports['getContacts']=function(_0xc5ed7f,_0x10271b,_0xf281d6){var _0x998a60;return db[_0x1aae('0x35')]['find']({'where':{'id':_0xc5ed7f[_0x1aae('0x4d')]['id']},'include':[{'model':db[_0x1aae('0x67')],'as':_0x1aae('0x68')}]})[_0x1aae('0x2b')](handleEntityNotFound(_0x10271b,null))[_0x1aae('0x2b')](function(_0x5d4e73){if(_0x5d4e73){_0x998a60=_0x5d4e73;return db[_0x1aae('0x5e')][_0x1aae('0x36')];}})['then'](function(_0x2be0c4){if(_0x2be0c4){var _0x247f94={};var _0x385f67={};_0x385f67['model']=_['concat'](_['keys'](_0x2be0c4),_[_0x1aae('0x34')](_0x998a60[_0x1aae('0x68')],function(_0x49a7c7){return util['format'](_0x1aae('0x69'),_0x49a7c7['id']);}));_0x385f67[_0x1aae('0x3b')]=_['keys'](_0xc5ed7f[_0x1aae('0x3b')]);_0x385f67['filters']=_[_0x1aae('0x4e')](_0x385f67[_0x1aae('0x39')],_0x385f67[_0x1aae('0x3b')]);_0x247f94['attributes']=_[_0x1aae('0x4e')](_0x385f67[_0x1aae('0x39')],qs[_0x1aae('0x3d')](_0xc5ed7f[_0x1aae('0x3b')][_0x1aae('0x3d')]));_0x247f94[_0x1aae('0x3c')]=_0x247f94[_0x1aae('0x3c')]['length']?_0x247f94[_0x1aae('0x3c')]:_0x385f67[_0x1aae('0x39')];if(!_0xc5ed7f[_0x1aae('0x3b')][_0x1aae('0x3f')](_0x1aae('0x6a'))){_0x247f94[_0x1aae('0x24')]=qs['limit'](_0xc5ed7f['query'][_0x1aae('0x24')]);_0x247f94['offset']=qs[_0x1aae('0x22')](_0xc5ed7f[_0x1aae('0x3b')][_0x1aae('0x22')]);}_0x247f94[_0x1aae('0x5a')]=qs[_0x1aae('0x40')](_0xc5ed7f[_0x1aae('0x3b')][_0x1aae('0x40')]);_0x247f94[_0x1aae('0x44')]=qs[_0x1aae('0x41')](_[_0x1aae('0x5b')](_0xc5ed7f[_0x1aae('0x3b')],_0x385f67[_0x1aae('0x41')]));_0x247f94['raw']=!![];if(_0xc5ed7f[_0x1aae('0x3b')][_0x1aae('0x42')]){_0x247f94[_0x1aae('0x44')]=_['merge'](_0x247f94[_0x1aae('0x44')],{'$or':_[_0x1aae('0x34')](_0x247f94[_0x1aae('0x3c')],function(_0x236ac4){var _0x3bb4e2={};_0x3bb4e2[_0x236ac4]={'$like':'%'+_0xc5ed7f['query'][_0x1aae('0x42')]+'%'};return _0x3bb4e2;})});}_0x247f94=_['merge']({},_0x247f94,_0xc5ed7f[_0x1aae('0x46')]);return _0x998a60[_0x1aae('0x6b')](_0x247f94);}})[_0x1aae('0x2b')](respondWithResult(_0x10271b,null))[_0x1aae('0x4b')](handleError(_0x10271b,null));};exports['getContactsCsv']=function(_0x560645,_0x51a928,_0x5e2615){var _0x5be91d;return db[_0x1aae('0x35')]['find']({'where':{'id':_0x560645[_0x1aae('0x4d')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x1aae('0x68')}]})[_0x1aae('0x2b')](handleEntityNotFound(_0x51a928,null))['then'](function(_0x4cea9e){if(_0x4cea9e){_0x5be91d=_0x4cea9e;return db[_0x1aae('0x5e')]['rawAttributes'];}})[_0x1aae('0x2b')](function(_0x1fe013){if(_0x1fe013){var _0x11a4ca={};var _0x4627fe={};_0x4627fe['model']=_['concat'](_[_0x1aae('0x3a')](_0x1fe013),_[_0x1aae('0x34')](_0x5be91d[_0x1aae('0x68')],function(_0x4e9085){return util[_0x1aae('0x6c')](_0x1aae('0x69'),_0x4e9085['id']);}));_0x4627fe['query']=_[_0x1aae('0x3a')](_0x560645[_0x1aae('0x3b')]);_0x4627fe['filters']=_[_0x1aae('0x4e')](_0x4627fe[_0x1aae('0x39')],_0x4627fe[_0x1aae('0x3b')]);_0x11a4ca['attributes']=_[_0x1aae('0x4e')](_0x4627fe[_0x1aae('0x39')],qs[_0x1aae('0x3d')](_0x560645['query']['fields']));_0x11a4ca[_0x1aae('0x3c')]=_0x11a4ca['attributes'][_0x1aae('0x3e')]?_0x11a4ca[_0x1aae('0x3c')]:_0x4627fe['model'];if(!_0x560645[_0x1aae('0x3b')][_0x1aae('0x3f')](_0x1aae('0x6a'))){_0x11a4ca[_0x1aae('0x24')]=qs['limit'](_0x560645[_0x1aae('0x3b')][_0x1aae('0x24')]);_0x11a4ca['offset']=qs[_0x1aae('0x22')](_0x560645[_0x1aae('0x3b')][_0x1aae('0x22')]);}_0x11a4ca['order']=qs[_0x1aae('0x40')](_0x560645[_0x1aae('0x3b')][_0x1aae('0x40')]);_0x11a4ca[_0x1aae('0x44')]=qs['filters'](_[_0x1aae('0x5b')](_0x560645[_0x1aae('0x3b')],_0x4627fe['filters']));_0x11a4ca[_0x1aae('0x6d')]=!![];if(_0x560645[_0x1aae('0x3b')][_0x1aae('0x42')]){_0x11a4ca[_0x1aae('0x44')]=_[_0x1aae('0x43')](_0x11a4ca[_0x1aae('0x44')],{'$or':_[_0x1aae('0x34')](_0x11a4ca[_0x1aae('0x3c')],function(_0xd8a89b){var _0x3c4a81={};_0x3c4a81[_0xd8a89b]={'$like':'%'+_0x560645[_0x1aae('0x3b')][_0x1aae('0x42')]+'%'};return _0x3c4a81;})});}_0x11a4ca=_[_0x1aae('0x43')]({},_0x11a4ca,_0x560645[_0x1aae('0x46')]);return _0x5be91d[_0x1aae('0x6b')](_0x11a4ca);}})['then'](function(_0x303bf1){if(!_[_0x1aae('0x6e')](_0x303bf1)){var _0x2cae1e=toCsv(_0x303bf1);var _0x4d1096=Date[_0x1aae('0x6f')]();fs[_0x1aae('0x70')](util['format']('/tmp/list_%d_%s.csv',_0x5be91d['id'],_0x4d1096),_0x2cae1e);_0x51a928[_0x1aae('0x71')](_0x1aae('0x72'),'attachment;\x20filename='+util['format'](_0x1aae('0x73'),_0x5be91d['id'],_0x4d1096));_0x51a928[_0x1aae('0x71')](_0x1aae('0x74'),'text/csv');return _0x51a928[_0x1aae('0x75')](util[_0x1aae('0x6c')]('/tmp/list_%d_%s.csv',_0x5be91d['id'],_0x4d1096));}else{return _0x51a928[_0x1aae('0x1f')](0xcc);}})['catch'](handleError(_0x51a928,null));};exports[_0x1aae('0x76')]=function(_0x4fbdee,_0x5ca234,_0x314063){var _0x478a91;delete _0x4fbdee[_0x1aae('0x51')]['id'];return db[_0x1aae('0x35')][_0x1aae('0x59')]({'where':{'id':_0x4fbdee['params']['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x5ca234,null))[_0x1aae('0x2b')](function(_0x117cf4){if(_0x117cf4){return db[_0x1aae('0x77')][_0x1aae('0x78')](function(_0x5c168b){return db['CmCustomField'][_0x1aae('0x50')](_0x4fbdee['body'],{'transaction':_0x5c168b})['then'](function(_0x951f3c){_0x478a91=_0x951f3c;return _0x117cf4[_0x1aae('0x79')](_0x951f3c,{'transaction':_0x5c168b});})[_0x1aae('0x2b')](function(){var _0x58369c={'type':db[_0x1aae('0x7a')][_0x1aae('0x7b')],'transaction':_0x5c168b};switch(_0x4fbdee['body'][_0x1aae('0x37')]){case _0x1aae('0x7c'):_0x58369c[_0x1aae('0x37')]=db[_0x1aae('0x7a')][_0x1aae('0x7b')];break;case _0x1aae('0x7d'):_0x58369c[_0x1aae('0x37')]=db[_0x1aae('0x7a')][_0x1aae('0x7e')];break;case _0x1aae('0x7f'):_0x58369c['type']=db[_0x1aae('0x7a')][_0x1aae('0x80')];_0x58369c[_0x1aae('0x81')]=![];break;default:}return db[_0x1aae('0x77')][_0x1aae('0x82')][_0x1aae('0x83')]('cm_contacts',util['format'](_0x1aae('0x84'),_0x478a91['id']),_0x58369c);})[_0x1aae('0x2b')](function(){return _0x478a91;});});}})[_0x1aae('0x2b')](respondWithResult(_0x5ca234,null))[_0x1aae('0x4b')](handleError(_0x5ca234,null));};exports[_0x1aae('0x85')]=function(_0x315e3e,_0x46b511,_0x4e306d){var _0x3d9c71={};var _0x5e25ef={};var _0x17cee8;var _0x2c6194;return db[_0x1aae('0x35')]['findOne']({'where':{'id':_0x315e3e[_0x1aae('0x4d')]['id']}})['then'](handleEntityNotFound(_0x46b511,null))[_0x1aae('0x2b')](function(_0x3c8647){if(_0x3c8647){_0x17cee8=_0x3c8647;_0x5e25ef[_0x1aae('0x39')]=_[_0x1aae('0x3a')](db[_0x1aae('0x67')][_0x1aae('0x36')]);_0x5e25ef[_0x1aae('0x3b')]=_[_0x1aae('0x3a')](_0x315e3e[_0x1aae('0x3b')]);_0x5e25ef[_0x1aae('0x41')]=_[_0x1aae('0x4e')](_0x5e25ef[_0x1aae('0x39')],_0x5e25ef[_0x1aae('0x3b')]);_0x3d9c71[_0x1aae('0x3c')]=_['intersection'](_0x5e25ef[_0x1aae('0x39')],qs[_0x1aae('0x3d')](_0x315e3e[_0x1aae('0x3b')][_0x1aae('0x3d')]));_0x3d9c71[_0x1aae('0x3c')]=_0x3d9c71['attributes'][_0x1aae('0x3e')]?_0x3d9c71[_0x1aae('0x3c')]:_0x5e25ef[_0x1aae('0x39')];_0x3d9c71[_0x1aae('0x5a')]=qs[_0x1aae('0x40')](_0x315e3e[_0x1aae('0x3b')][_0x1aae('0x40')]);_0x3d9c71[_0x1aae('0x44')]=qs[_0x1aae('0x41')](_[_0x1aae('0x5b')](_0x315e3e[_0x1aae('0x3b')],_0x5e25ef['filters']));_0x3d9c71[_0x1aae('0x44')]=_[_0x1aae('0x43')](_0x3d9c71[_0x1aae('0x44')],{'$or':[{'ListId':_0x3c8647['id']},{'ListId':null}]});if(_0x315e3e[_0x1aae('0x3b')][_0x1aae('0x42')]){_0x3d9c71[_0x1aae('0x44')]=_['merge'](_0x3d9c71[_0x1aae('0x44')],{'$or':_['map'](_0x3d9c71['attributes'],function(_0x229214){var _0x499ed8={};_0x499ed8[_0x229214]={'$like':'%'+_0x315e3e[_0x1aae('0x3b')][_0x1aae('0x42')]+'%'};return _0x499ed8;})});}_0x3d9c71=_[_0x1aae('0x43')]({},_0x3d9c71,_0x315e3e[_0x1aae('0x46')]);return db['CmCustomField']['findAndCountAll'](_0x3d9c71);}})[_0x1aae('0x2b')](respondWithResult(_0x46b511,null))[_0x1aae('0x4b')](handleError(_0x46b511,null));};exports['addAgents']=function(_0x9ef7bc,_0x4b3257,_0x2de580){return db['CmList']['find']({'where':{'id':_0x9ef7bc['params']['id']}})['then'](handleEntityNotFound(_0x4b3257,null))['then'](function(_0x1798d8){if(_0x1798d8){return _0x1798d8[_0x1aae('0x86')](_0x9ef7bc[_0x1aae('0x51')][_0x1aae('0x87')],_['omit'](_0x9ef7bc[_0x1aae('0x51')],['ids','id'])||{})[_0x1aae('0x88')](function(_0x2e1faf){for(var _0x48a8ea=0x0;_0x48a8ea<_0x9ef7bc[_0x1aae('0x51')]['ids']['length'];_0x48a8ea+=0x1){socket[_0x1aae('0x89')](_0x1aae('0x8a'),{'UserId':Number(_0x9ef7bc[_0x1aae('0x51')]['ids'][_0x48a8ea]),'CmListId':Number(_0x9ef7bc[_0x1aae('0x4d')]['id'])});}return _0x2e1faf;});}})['then'](respondWithResult(_0x4b3257,null))['catch'](handleError(_0x4b3257,null));};exports[_0x1aae('0x8b')]=function(_0x15dac6,_0x35b19f,_0x5c991e){return db['CmList'][_0x1aae('0x4f')]({'where':{'id':_0x15dac6[_0x1aae('0x4d')]['id']}})['then'](handleEntityNotFound(_0x35b19f,null))[_0x1aae('0x2b')](function(_0x20ac39){if(_0x20ac39){return _0x20ac39['removeAgents'](_0x15dac6['query'][_0x1aae('0x87')])[_0x1aae('0x2b')](function(){if(_[_0x1aae('0x60')](_0x15dac6[_0x1aae('0x3b')][_0x1aae('0x87')])){for(var _0x4c231e=0x0;_0x4c231e<_0x15dac6[_0x1aae('0x3b')][_0x1aae('0x87')][_0x1aae('0x3e')];_0x4c231e+=0x1){socket[_0x1aae('0x89')]('userCmList:remove',{'UserId':Number(_0x15dac6[_0x1aae('0x3b')][_0x1aae('0x87')][_0x4c231e]),'CmListId':Number(_0x15dac6[_0x1aae('0x4d')]['id'])});}}else{socket[_0x1aae('0x89')](_0x1aae('0x8c'),{'UserId':Number(_0x15dac6['query'][_0x1aae('0x87')]),'CmListId':Number(_0x15dac6['params']['id'])});}});}})[_0x1aae('0x2b')](respondWithStatusCode(_0x35b19f,null))['catch'](handleError(_0x35b19f,null));};exports[_0x1aae('0x8d')]=function(_0x4d1241,_0x2fe9e8,_0x204591){var _0x143619={};var _0x1faea2={};var _0x40a523;var _0x4c07a1;return db[_0x1aae('0x35')]['findOne']({'where':{'id':_0x4d1241[_0x1aae('0x4d')]['id']}})[_0x1aae('0x2b')](handleEntityNotFound(_0x2fe9e8,null))[_0x1aae('0x2b')](function(_0x24d190){if(_0x24d190){_0x40a523=_0x24d190;_0x1faea2[_0x1aae('0x39')]=_[_0x1aae('0x3a')](db[_0x1aae('0x8e')][_0x1aae('0x36')]);_0x1faea2['query']=_[_0x1aae('0x3a')](_0x4d1241[_0x1aae('0x3b')]);_0x1faea2[_0x1aae('0x41')]=_[_0x1aae('0x4e')](_0x1faea2[_0x1aae('0x39')],_0x1faea2[_0x1aae('0x3b')]);_0x143619[_0x1aae('0x3c')]=_[_0x1aae('0x4e')](_0x1faea2[_0x1aae('0x39')],qs[_0x1aae('0x3d')](_0x4d1241[_0x1aae('0x3b')][_0x1aae('0x3d')]));_0x143619[_0x1aae('0x3c')]=_0x143619[_0x1aae('0x3c')][_0x1aae('0x3e')]?_0x143619[_0x1aae('0x3c')]:_0x1faea2[_0x1aae('0x39')];_0x143619['order']=qs[_0x1aae('0x40')](_0x4d1241[_0x1aae('0x3b')][_0x1aae('0x40')]);_0x143619[_0x1aae('0x44')]=qs['filters'](_['pick'](_0x4d1241[_0x1aae('0x3b')],_0x1faea2[_0x1aae('0x41')]));if(_0x4d1241[_0x1aae('0x3b')]['filter']){_0x143619[_0x1aae('0x44')]=_[_0x1aae('0x43')](_0x143619[_0x1aae('0x44')],{'$or':_[_0x1aae('0x34')](_0x143619[_0x1aae('0x3c')],function(_0x17013a){var _0x146019={};_0x146019[_0x17013a]={'$like':'%'+_0x4d1241[_0x1aae('0x3b')][_0x1aae('0x42')]+'%'};return _0x146019;})});}_0x143619=_[_0x1aae('0x43')]({},_0x143619,_0x4d1241['options']);return _0x40a523[_0x1aae('0x8d')](_0x143619);}})[_0x1aae('0x2b')](function(_0x8e0be2){if(_0x8e0be2){_0x4c07a1=_0x8e0be2[_0x1aae('0x3e')];if(!_0x4d1241['query']['hasOwnProperty'](_0x1aae('0x6a'))){_0x143619['limit']=qs[_0x1aae('0x24')](_0x4d1241['query']['limit']);_0x143619[_0x1aae('0x22')]=qs[_0x1aae('0x22')](_0x4d1241[_0x1aae('0x3b')][_0x1aae('0x22')]);}return _0x40a523[_0x1aae('0x8d')](_0x143619);}})[_0x1aae('0x2b')](function(_0x1aac1e){if(_0x1aac1e){return _0x1aac1e?{'count':_0x4c07a1,'rows':_0x1aac1e}:null;}})['then'](respondWithResult(_0x2fe9e8,null))['catch'](handleError(_0x2fe9e8,null));};
\ No newline at end of file
index 3e4f90a..e33e577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3e74,0x175));var _0x43e7=function(_0x51bc96,_0x4bf0de){_0x51bc96=_0x51bc96-0x0;var _0x187642=_0x3e74[_0x51bc96];return _0x187642;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0x5fc3,0xa8));var _0x35fc=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x5fc3[_0x618414];return _0x21c19a;};'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 14705ad..99db98a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','CmList','cm_lists','lodash'];(function(_0x45a106,_0x40f99f){var _0x318090=function(_0x9c724b){while(--_0x9c724b){_0x45a106['push'](_0x45a106['shift']());}};_0x318090(++_0x40f99f);}(_0xdace,0xc5));var _0xedac=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xdace[_0x39096d];return _0x13da4f;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));var moment=require(_0xedac('0x3'));var BPromise=require('bluebird');var rp=require(_0xedac('0x4'));var fs=require('fs');var path=require(_0xedac('0x5'));var rimraf=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var attributes=require('./cmList.attributes');module[_0xedac('0x8')]=function(_0x1cba89,_0x39328a){return _0x1cba89['define'](_0xedac('0x9'),attributes,{'tableName':_0xedac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x750a=['path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','util','moment','bluebird','request-promise'];(function(_0x1b14ec,_0x482c1c){var _0x2460a5=function(_0x4d08e3){while(--_0x4d08e3){_0x1b14ec['push'](_0x1b14ec['shift']());}};_0x2460a5(++_0x482c1c);}(_0x750a,0x140));var _0xa750=function(_0x2f2c2c,_0x17692d){_0x2f2c2c=_0x2f2c2c-0x0;var _0x4c325b=_0x750a[_0x2f2c2c];return _0x4c325b;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa750('0x1'));var BPromise=require(_0xa750('0x2'));var rp=require(_0xa750('0x3'));var fs=require('fs');var path=require(_0xa750('0x4'));var rimraf=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var attributes=require(_0xa750('0x7'));module[_0xa750('0x8')]=function(_0x10b4d9,_0x2497df){return _0x10b4d9[_0xa750('0x9')](_0xa750('0xa'),attributes,{'tableName':_0xa750('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6670b66..2000594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ed=['request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','localhost','./cmList.socket','register','then','info','CmList,\x20%s,\x20%s'];(function(_0x11cbbd,_0x5d4106){var _0x153af2=function(_0xd8cb94){while(--_0xd8cb94){_0x11cbbd['push'](_0x11cbbd['shift']());}};_0x153af2(++_0x5d4106);}(_0xf8ed,0x70));var _0xdf8e=function(_0x469b69,_0x4ab72a){_0x469b69=_0x469b69-0x0;var _0xa5fc5f=_0xf8ed[_0x469b69];return _0xa5fc5f;};'use strict';var _=require(_0xdf8e('0x0'));var util=require(_0xdf8e('0x1'));var moment=require(_0xdf8e('0x2'));var BPromise=require(_0xdf8e('0x3'));var rs=require(_0xdf8e('0x4'));var fs=require('fs');var Redis=require(_0xdf8e('0x5'));var db=require(_0xdf8e('0x6'))['db'];var utils=require(_0xdf8e('0x7'));var logger=require(_0xdf8e('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xdf8e('0x9'));var client=jayson['client'][_0xdf8e('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xdf8e('0xb')],{'host':_0xdf8e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdf8e('0xb')]));require(_0xdf8e('0xd'))[_0xdf8e('0xe')](socket);function respondWithRpcPromise(_0x58a5a6,_0x341341,_0x191f92){return new BPromise(function(_0x12fbd4,_0x1a6109){return client['request'](_0x58a5a6,_0x191f92)[_0xdf8e('0xf')](function(_0x5c0fa5){logger[_0xdf8e('0x10')](_0xdf8e('0x11'),_0x341341,_0xdf8e('0x12'));logger[_0xdf8e('0x13')](_0xdf8e('0x14'),_0x341341,'request\x20sent',JSON[_0xdf8e('0x15')](_0x5c0fa5));if(_0x5c0fa5['error']){if(_0x5c0fa5[_0xdf8e('0x16')][_0xdf8e('0x17')]===0x1f4){logger[_0xdf8e('0x16')](_0xdf8e('0x11'),_0x341341,_0x5c0fa5[_0xdf8e('0x16')][_0xdf8e('0x18')]);return _0x1a6109(_0x5c0fa5[_0xdf8e('0x16')]['message']);}logger['error'](_0xdf8e('0x11'),_0x341341,_0x5c0fa5['error'][_0xdf8e('0x18')]);return _0x12fbd4(_0x5c0fa5[_0xdf8e('0x16')]['message']);}else{logger['info'](_0xdf8e('0x11'),_0x341341,_0xdf8e('0x12'));_0x12fbd4(_0x5c0fa5['result'][_0xdf8e('0x18')]);}})[_0xdf8e('0x19')](function(_0x367d0e){logger[_0xdf8e('0x16')](_0xdf8e('0x11'),_0x341341,_0x367d0e);_0x1a6109(_0x367d0e);});});}
\ No newline at end of file
+var _0xda72=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','request','then','info','CmList,\x20%s,\x20%s','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0xb60643,_0x5a28f0){var _0x2375d3=function(_0x5d98a9){while(--_0x5d98a9){_0xb60643['push'](_0xb60643['shift']());}};_0x2375d3(++_0x5a28f0);}(_0xda72,0x164));var _0x2da7=function(_0x23ea34,_0x5cd38f){_0x23ea34=_0x23ea34-0x0;var _0x526e25=_0xda72[_0x23ea34];return _0x526e25;};'use strict';var _=require(_0x2da7('0x0'));var util=require(_0x2da7('0x1'));var moment=require('moment');var BPromise=require(_0x2da7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2da7('0x3'));var db=require(_0x2da7('0x4'))['db'];var utils=require(_0x2da7('0x5'));var logger=require(_0x2da7('0x6'))(_0x2da7('0x7'));var config=require('../../config/environment');var jayson=require(_0x2da7('0x8'));var client=jayson[_0x2da7('0x9')][_0x2da7('0xa')]({'port':0x232a});config[_0x2da7('0xb')]=_[_0x2da7('0xc')](config[_0x2da7('0xb')],{'host':_0x2da7('0xd'),'port':0x18eb});var socket=require(_0x2da7('0xe'))(new Redis(config[_0x2da7('0xb')]));require(_0x2da7('0xf'))['register'](socket);function respondWithRpcPromise(_0x459ea2,_0x5e3226,_0x42717b){return new BPromise(function(_0xb2a266,_0x4fce7f){return client[_0x2da7('0x10')](_0x459ea2,_0x42717b)[_0x2da7('0x11')](function(_0x14e877){logger[_0x2da7('0x12')](_0x2da7('0x13'),_0x5e3226,'request\x20sent');logger['debug'](_0x2da7('0x14'),_0x5e3226,'request\x20sent',JSON[_0x2da7('0x15')](_0x14e877));if(_0x14e877[_0x2da7('0x16')]){if(_0x14e877[_0x2da7('0x16')][_0x2da7('0x17')]===0x1f4){logger[_0x2da7('0x16')](_0x2da7('0x13'),_0x5e3226,_0x14e877[_0x2da7('0x16')][_0x2da7('0x18')]);return _0x4fce7f(_0x14e877['error'][_0x2da7('0x18')]);}logger['error'](_0x2da7('0x13'),_0x5e3226,_0x14e877[_0x2da7('0x16')][_0x2da7('0x18')]);return _0xb2a266(_0x14e877['error'][_0x2da7('0x18')]);}else{logger['info'](_0x2da7('0x13'),_0x5e3226,'request\x20sent');_0xb2a266(_0x14e877['result'][_0x2da7('0x18')]);}})[_0x2da7('0x19')](function(_0x354fe1){logger[_0x2da7('0x16')]('CmList,\x20%s,\x20%s',_0x5e3226,_0x354fe1);_0x4fce7f(_0x354fe1);});});}
\ No newline at end of file
index a99f418..f750ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c7a=['cmList:','./cmList.events','save','remove','emit','register','length'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0c7a,0xef));var _0xa0c7=function(_0xdbf69d,_0x39efbe){_0xdbf69d=_0xdbf69d-0x0;var _0x48df0e=_0x0c7a[_0xdbf69d];return _0x48df0e;};'use strict';var CmListEvents=require(_0xa0c7('0x0'));var events=[_0xa0c7('0x1'),_0xa0c7('0x2'),'update'];function createListener(_0x33a1d8,_0x25ea55){return function(_0x542a56){_0x25ea55[_0xa0c7('0x3')](_0x33a1d8,_0x542a56);};}function removeListener(_0x5db684,_0x2f7436){return function(){CmListEvents['removeListener'](_0x5db684,_0x2f7436);};}exports[_0xa0c7('0x4')]=function(_0x2023e9){for(var _0x5d92a1=0x0,_0x56ae49=events[_0xa0c7('0x5')];_0x5d92a1<_0x56ae49;_0x5d92a1++){var _0x3fc2a0=events[_0x5d92a1];var _0x2861c9=createListener(_0xa0c7('0x6')+_0x3fc2a0,_0x2023e9);CmListEvents['on'](_0x3fc2a0,_0x2861c9);}};
\ No newline at end of file
+var _0x1819=['update','emit','removeListener','length','./cmList.events','save','remove'];(function(_0x541a78,_0x219591){var _0x3107f3=function(_0x153053){while(--_0x153053){_0x541a78['push'](_0x541a78['shift']());}};_0x3107f3(++_0x219591);}(_0x1819,0x12a));var _0x9181=function(_0x41d02a,_0x355e19){_0x41d02a=_0x41d02a-0x0;var _0x4c3983=_0x1819[_0x41d02a];return _0x4c3983;};'use strict';var CmListEvents=require(_0x9181('0x0'));var events=[_0x9181('0x1'),_0x9181('0x2'),_0x9181('0x3')];function createListener(_0x68525e,_0x23c6f4){return function(_0x3f2745){_0x23c6f4[_0x9181('0x4')](_0x68525e,_0x3f2745);};}function removeListener(_0x28a4e7,_0x4adbf3){return function(){CmListEvents[_0x9181('0x5')](_0x28a4e7,_0x4adbf3);};}exports['register']=function(_0x516d62){for(var _0x1df11e=0x0,_0x2b558f=events[_0x9181('0x6')];_0x1df11e<_0x2b558f;_0x1df11e++){var _0x6368cd=events[_0x1df11e];var _0x5df31f=createListener('cmList:'+_0x6368cd,_0x516d62);CmListEvents['on'](_0x6368cd,_0x5df31f);}};
\ No newline at end of file
index 425a690..5cad4c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222a=['/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','create','post','addDisposition','addContacts','addCustomField','/:id/users','put','delete','removeDispositions','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x1508e9,_0x5dfaec){var _0x5a0bf5=function(_0x1e2a64){while(--_0x1e2a64){_0x1508e9['push'](_0x1508e9['shift']());}};_0x5a0bf5(++_0x5dfaec);}(_0x222a,0x1e3));var _0xa222=function(_0x3d4e7c,_0x3fc5b1){_0x3d4e7c=_0x3d4e7c-0x0;var _0x30c9d5=_0x222a[_0x3d4e7c];return _0x30c9d5;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa222('0x0'));var express=require('express');var router=express[_0xa222('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xa222('0x2'));var interaction=require(_0xa222('0x3'));var config=require(_0xa222('0x4'));var controller=require('./cmList.controller');router[_0xa222('0x5')]('/',auth[_0xa222('0x6')](),controller[_0xa222('0x7')]);router[_0xa222('0x5')](_0xa222('0x8'),auth['isAuthenticated'](),controller[_0xa222('0x9')]);router[_0xa222('0x5')](_0xa222('0xa'),auth[_0xa222('0x6')](),controller['show']);router[_0xa222('0x5')](_0xa222('0xb'),auth[_0xa222('0x6')](),controller[_0xa222('0xc')]);router['get'](_0xa222('0xd'),auth[_0xa222('0x6')](),controller[_0xa222('0xe')]);router['get'](_0xa222('0xf'),auth['isAuthenticated'](),controller[_0xa222('0x10')]);router[_0xa222('0x5')](_0xa222('0x11'),auth[_0xa222('0x6')](),controller[_0xa222('0x12')]);router[_0xa222('0x5')]('/:id/users',auth[_0xa222('0x6')](),controller['getAgents']);router['post']('/',auth[_0xa222('0x6')](),controller[_0xa222('0x13')]);router[_0xa222('0x14')](_0xa222('0xb'),auth[_0xa222('0x6')](),controller[_0xa222('0x15')]);router[_0xa222('0x14')](_0xa222('0xd'),auth[_0xa222('0x6')](),controller[_0xa222('0x16')]);router[_0xa222('0x14')]('/:id/fields',auth[_0xa222('0x6')](),controller[_0xa222('0x17')]);router[_0xa222('0x14')](_0xa222('0x18'),auth[_0xa222('0x6')](),controller['addAgents']);router[_0xa222('0x19')](_0xa222('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xa222('0x1a')]('/:id',auth[_0xa222('0x6')](),controller['destroy']);router[_0xa222('0x1a')](_0xa222('0xb'),auth[_0xa222('0x6')](),controller[_0xa222('0x1b')]);router[_0xa222('0x1a')](_0xa222('0x18'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xa222('0x1c')]=router;
\ No newline at end of file
+var _0xf9be=['removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','isAuthenticated','index','get','/describe','describe','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','getCustomFields','getAgents','create','post','addDisposition','addContacts','/:id/fields','addCustomField','/:id/users','put','/:id','update','delete','destroy','removeDispositions'];(function(_0x34bd11,_0x322433){var _0x2a4f5c=function(_0x3296e3){while(--_0x3296e3){_0x34bd11['push'](_0x34bd11['shift']());}};_0x2a4f5c(++_0x322433);}(_0xf9be,0x174));var _0xef9b=function(_0x212e93,_0x2ac33d){_0x212e93=_0x212e93-0x0;var _0x2d270c=_0xf9be[_0x212e93];return _0x2d270c;};'use strict';var multer=require(_0xef9b('0x0'));var util=require(_0xef9b('0x1'));var path=require(_0xef9b('0x2'));var timeout=require('connect-timeout');var express=require(_0xef9b('0x3'));var router=express[_0xef9b('0x4')]();var fs_extra=require(_0xef9b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xef9b('0x6'));var config=require(_0xef9b('0x7'));var controller=require(_0xef9b('0x8'));router['get']('/',auth[_0xef9b('0x9')](),controller[_0xef9b('0xa')]);router[_0xef9b('0xb')](_0xef9b('0xc'),auth[_0xef9b('0x9')](),controller[_0xef9b('0xd')]);router[_0xef9b('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xef9b('0xb')](_0xef9b('0xe'),auth['isAuthenticated'](),controller[_0xef9b('0xf')]);router[_0xef9b('0xb')](_0xef9b('0x10'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x11')]);router[_0xef9b('0xb')](_0xef9b('0x12'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x13')]);router[_0xef9b('0xb')]('/:id/fields',auth['isAuthenticated'](),controller[_0xef9b('0x14')]);router[_0xef9b('0xb')]('/:id/users',auth[_0xef9b('0x9')](),controller[_0xef9b('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0xef9b('0x16')]);router[_0xef9b('0x17')]('/:id/dispositions',auth[_0xef9b('0x9')](),controller[_0xef9b('0x18')]);router[_0xef9b('0x17')](_0xef9b('0x10'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x19')]);router[_0xef9b('0x17')](_0xef9b('0x1a'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x1b')]);router[_0xef9b('0x17')](_0xef9b('0x1c'),auth[_0xef9b('0x9')](),controller['addAgents']);router[_0xef9b('0x1d')](_0xef9b('0x1e'),auth['isAuthenticated'](),controller[_0xef9b('0x1f')]);router[_0xef9b('0x20')](_0xef9b('0x1e'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x21')]);router[_0xef9b('0x20')](_0xef9b('0xe'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x22')]);router[_0xef9b('0x20')](_0xef9b('0x1c'),auth[_0xef9b('0x9')](),controller[_0xef9b('0x23')]);module[_0xef9b('0x24')]=router;
\ No newline at end of file
index 6167603..e47ce70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe928=['VIRTUAL','field','STRING','exports'];(function(_0x576d8a,_0x2d7bde){var _0x3dc3ef=function(_0xc76758){while(--_0xc76758){_0x576d8a['push'](_0x576d8a['shift']());}};_0x3dc3ef(++_0x2d7bde);}(_0xe928,0x1e7));var _0x8e92=function(_0x426258,_0x22e200){_0x426258=_0x426258-0x0;var _0x40f83f=_0xe928[_0x426258];return _0x40f83f;};'use strict';var Sequelize=require('sequelize');module[_0x8e92('0x0')]={'name':{'type':Sequelize[_0x8e92('0x1')],'get':function(_0x331703){return this['getDataValue'](_0x8e92('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x8e92('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xba33=['exports','VIRTUAL','getDataValue','STRING'];(function(_0x299cb7,_0x406040){var _0x5214ad=function(_0x4cb7b7){while(--_0x4cb7b7){_0x299cb7['push'](_0x299cb7['shift']());}};_0x5214ad(++_0x406040);}(_0xba33,0xb8));var _0x3ba3=function(_0x1647ea,_0x534ee5){_0x1647ea=_0x1647ea-0x0;var _0x43409c=_0xba33[_0x1647ea];return _0x43409c;};'use strict';var Sequelize=require('sequelize');module[_0x3ba3('0x0')]={'name':{'type':Sequelize[_0x3ba3('0x1')],'get':function(_0x513c7b){return this[_0x3ba3('0x2')]('field');}},'field':{'type':Sequelize[_0x3ba3('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0x3ba3('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0x3ba3('0x3')],'allowNull':![]}};
\ No newline at end of file
index e16c6e5..718e7f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2741d1,_0x15fbf5){var _0x5dbba7=function(_0x590204){while(--_0x590204){_0x2741d1['push'](_0x2741d1['shift']());}};_0x5dbba7(++_0x15fbf5);}(_0x7a54,0x106));var _0x47a5=function(_0x1767bf,_0x6a47ae){_0x1767bf=_0x1767bf-0x0;var _0x5cfe92=_0x7a54[_0x1767bf];return _0x5cfe92;};'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
+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(_0x10b8a6,_0x1e3444){var _0x271829=function(_0x10929f){while(--_0x10929f){_0x10b8a6['push'](_0x10b8a6['shift']());}};_0x271829(++_0x1e3444);}(_0x7a54,0x106));var _0x47a5=function(_0x2e8c4b,_0x5dd5bb){_0x2e8c4b=_0x2e8c4b-0x0;var _0x4ebf64=_0x7a54[_0x2e8c4b];return _0x4ebf64;};'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 cafcf8b..a6d2291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80f=['path','rimraf','../../config/environment','./condition.attributes','lodash','util','../../config/logger','moment','bluebird'];(function(_0x2f8f34,_0x32d6e4){var _0x426efc=function(_0x4bdee0){while(--_0x4bdee0){_0x2f8f34['push'](_0x2f8f34['shift']());}};_0x426efc(++_0x32d6e4);}(_0xb80f,0x148));var _0xfb80=function(_0x1ffc2e,_0x2d627a){_0x1ffc2e=_0x1ffc2e-0x0;var _0x3aa5d4=_0xb80f[_0x1ffc2e];return _0x3aa5d4;};'use strict';var _=require(_0xfb80('0x0'));var util=require(_0xfb80('0x1'));var logger=require(_0xfb80('0x2'))('api');var moment=require(_0xfb80('0x3'));var BPromise=require(_0xfb80('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfb80('0x5'));var rimraf=require(_0xfb80('0x6'));var config=require(_0xfb80('0x7'));var attributes=require(_0xfb80('0x8'));module['exports']=function(_0x4170bd,_0x1eb6d3){return _0x4170bd['define']('Condition',attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3654=['Condition','tools_conditions','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','./condition.attributes','define'];(function(_0x2bda9e,_0x37db9d){var _0x417087=function(_0x3a5885){while(--_0x3a5885){_0x2bda9e['push'](_0x2bda9e['shift']());}};_0x417087(++_0x37db9d);}(_0x3654,0xff));var _0x4365=function(_0x1f6160,_0x5ef62e){_0x1f6160=_0x1f6160-0x0;var _0x498c57=_0x3654[_0x1f6160];return _0x498c57;};'use strict';var _=require(_0x4365('0x0'));var util=require('util');var logger=require(_0x4365('0x1'))('api');var moment=require(_0x4365('0x2'));var BPromise=require(_0x4365('0x3'));var rp=require(_0x4365('0x4'));var fs=require('fs');var path=require(_0x4365('0x5'));var rimraf=require(_0x4365('0x6'));var config=require('../../config/environment');var attributes=require(_0x4365('0x7'));module['exports']=function(_0x44fab4,_0xb16c42){return _0x44fab4[_0x4365('0x8')](_0x4365('0x9'),attributes,{'tableName':_0x4365('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 677c9c7..e648a9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d96=['rpc','jayson/promise','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5f025e,_0x463bee){var _0x559540=function(_0x5afd34){while(--_0x5afd34){_0x5f025e['push'](_0x5f025e['shift']());}};_0x559540(++_0x463bee);}(_0x3d96,0xaf));var _0x63d9=function(_0x1df8df,_0xc945){_0x1df8df=_0x1df8df-0x0;var _0x3517e6=_0x3d96[_0x1df8df];return _0x3517e6;};'use strict';var _=require(_0x63d9('0x0'));var util=require(_0x63d9('0x1'));var moment=require(_0x63d9('0x2'));var BPromise=require(_0x63d9('0x3'));var rs=require(_0x63d9('0x4'));var fs=require('fs');var Redis=require(_0x63d9('0x5'));var db=require(_0x63d9('0x6'))['db'];var utils=require(_0x63d9('0x7'));var logger=require(_0x63d9('0x8'))(_0x63d9('0x9'));var config=require('../../config/environment');var jayson=require(_0x63d9('0xa'));var client=jayson['client'][_0x63d9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36acfd,_0x150675,_0x3fa84a){return new BPromise(function(_0x21cb4d,_0x2c9ee8){return client[_0x63d9('0xc')](_0x36acfd,_0x3fa84a)[_0x63d9('0xd')](function(_0x35fedc){logger['info'](_0x63d9('0xe'),_0x150675,_0x63d9('0xf'));logger[_0x63d9('0x10')](_0x63d9('0x11'),_0x150675,_0x63d9('0xf'),JSON['stringify'](_0x35fedc));if(_0x35fedc[_0x63d9('0x12')]){if(_0x35fedc['error'][_0x63d9('0x13')]===0x1f4){logger[_0x63d9('0x12')]('Condition,\x20%s,\x20%s',_0x150675,_0x35fedc[_0x63d9('0x12')][_0x63d9('0x14')]);return _0x2c9ee8(_0x35fedc['error'][_0x63d9('0x14')]);}logger[_0x63d9('0x12')](_0x63d9('0xe'),_0x150675,_0x35fedc[_0x63d9('0x12')][_0x63d9('0x14')]);return _0x21cb4d(_0x35fedc[_0x63d9('0x12')][_0x63d9('0x14')]);}else{logger[_0x63d9('0x15')](_0x63d9('0xe'),_0x150675,_0x63d9('0xf'));_0x21cb4d(_0x35fedc[_0x63d9('0x16')][_0x63d9('0x14')]);}})['catch'](function(_0x377654){logger[_0x63d9('0x12')](_0x63d9('0xe'),_0x150675,_0x377654);_0x2c9ee8(_0x377654);});});}
\ No newline at end of file
+var _0x3333=['Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info'];(function(_0x2a7712,_0x2d583a){var _0x167304=function(_0x2fa189){while(--_0x2fa189){_0x2a7712['push'](_0x2a7712['shift']());}};_0x167304(++_0x2d583a);}(_0x3333,0x169));var _0x3333=function(_0x9729d7,_0x1b79a8){_0x9729d7=_0x9729d7-0x0;var _0x3c4ac6=_0x3333[_0x9729d7];return _0x3c4ac6;};'use strict';var _=require(_0x3333('0x0'));var util=require(_0x3333('0x1'));var moment=require(_0x3333('0x2'));var BPromise=require('bluebird');var rs=require(_0x3333('0x3'));var fs=require('fs');var Redis=require(_0x3333('0x4'));var db=require(_0x3333('0x5'))['db'];var utils=require(_0x3333('0x6'));var logger=require(_0x3333('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3333('0x8')][_0x3333('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x88a943,_0x4f099a,_0x39e987){return new BPromise(function(_0x310601,_0xb32f99){return client[_0x3333('0xa')](_0x88a943,_0x39e987)[_0x3333('0xb')](function(_0x3fe7d6){logger[_0x3333('0xc')](_0x3333('0xd'),_0x4f099a,_0x3333('0xe'));logger[_0x3333('0xf')](_0x3333('0x10'),_0x4f099a,_0x3333('0xe'),JSON[_0x3333('0x11')](_0x3fe7d6));if(_0x3fe7d6['error']){if(_0x3fe7d6[_0x3333('0x12')]['code']===0x1f4){logger['error'](_0x3333('0xd'),_0x4f099a,_0x3fe7d6[_0x3333('0x12')][_0x3333('0x13')]);return _0xb32f99(_0x3fe7d6[_0x3333('0x12')][_0x3333('0x13')]);}logger[_0x3333('0x12')](_0x3333('0xd'),_0x4f099a,_0x3fe7d6[_0x3333('0x12')][_0x3333('0x13')]);return _0x310601(_0x3fe7d6[_0x3333('0x12')][_0x3333('0x13')]);}else{logger[_0x3333('0xc')]('Condition,\x20%s,\x20%s',_0x4f099a,'request\x20sent');_0x310601(_0x3fe7d6[_0x3333('0x14')][_0x3333('0x13')]);}})[_0x3333('0x15')](function(_0x16fe0d){logger[_0x3333('0x12')](_0x3333('0xd'),_0x4f099a,_0x16fe0d);_0xb32f99(_0x16fe0d);});});}
\ No newline at end of file
index 40221b5..42202b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6a=['isAuthenticated','/:id','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./condition.controller'];(function(_0x54325b,_0x30c6ea){var _0x1525e5=function(_0x31e7a6){while(--_0x31e7a6){_0x54325b['push'](_0x54325b['shift']());}};_0x1525e5(++_0x30c6ea);}(_0x0c6a,0x157));var _0xa0c6=function(_0x354d04,_0x2b4aa3){_0x354d04=_0x354d04-0x0;var _0x51eb0b=_0x0c6a[_0x354d04];return _0x51eb0b;};'use strict';var multer=require('multer');var util=require(_0xa0c6('0x0'));var path=require('path');var timeout=require(_0xa0c6('0x1'));var express=require('express');var router=express[_0xa0c6('0x2')]();var fs_extra=require(_0xa0c6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa0c6('0x4'));var config=require(_0xa0c6('0x5'));var controller=require(_0xa0c6('0x6'));router['put']('/:id',auth[_0xa0c6('0x7')](),controller['update']);router['delete'](_0xa0c6('0x8'),auth[_0xa0c6('0x7')](),controller['destroy']);module[_0xa0c6('0x9')]=router;
\ No newline at end of file
+var _0x6eee=['/:id','isAuthenticated','update','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./condition.controller'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x6eee,0x154));var _0xe6ee=function(_0x1d83c4,_0x8579f0){_0x1d83c4=_0x1d83c4-0x0;var _0x40a00c=_0x6eee[_0x1d83c4];return _0x40a00c;};'use strict';var multer=require(_0xe6ee('0x0'));var util=require('util');var path=require(_0xe6ee('0x1'));var timeout=require('connect-timeout');var express=require(_0xe6ee('0x2'));var router=express[_0xe6ee('0x3')]();var fs_extra=require(_0xe6ee('0x4'));var auth=require(_0xe6ee('0x5'));var interaction=require(_0xe6ee('0x6'));var config=require('../../config/environment');var controller=require(_0xe6ee('0x7'));router['put'](_0xe6ee('0x8'),auth[_0xe6ee('0x9')](),controller[_0xe6ee('0xa')]);router['delete'](_0xe6ee('0x8'),auth['isAuthenticated'](),controller[_0xe6ee('0xb')]);module['exports']=router;
\ No newline at end of file
index 45d477e..25d3b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x350064,_0x3cda38){var _0x4ce37b=function(_0x4e155b){while(--_0x4e155b){_0x350064['push'](_0x350064['shift']());}};_0x4ce37b(++_0x3cda38);}(_0x757a,0xde));var _0xa757=function(_0x4d1b78,_0x4b1a04){_0x4d1b78=_0x4d1b78-0x0;var _0x499e58=_0x757a[_0x4d1b78];return _0x499e58;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x59bc2e,_0x265bfd){var _0x2dd119=function(_0x16f563){while(--_0x16f563){_0x59bc2e['push'](_0x59bc2e['shift']());}};_0x2dd119(++_0x265bfd);}(_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 4170d39..9277e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cc9=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','autoAssociation','iframe','attrUrl','attrs','https://','custom','attrPath','value','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardItem','getItems','order','hasOwnProperty','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','save','update','destroy','get','CustomDashboards','UserProfileResource','then','error','stack','name','send','index','map','Dashboard','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','find'];(function(_0x296c0a,_0xf78c8b){var _0x2d5e2d=function(_0x1896c0){while(--_0x1896c0){_0x296c0a['push'](_0x296c0a['shift']());}};_0x2d5e2d(++_0xf78c8b);}(_0x3cc9,0x120));var _0x93cc=function(_0x40e3fa,_0x4d33e2){_0x40e3fa=_0x40e3fa-0x0;var _0x157fd2=_0x3cc9[_0x40e3fa];return _0x157fd2;};'use strict';var emlformat=require(_0x93cc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x93cc('0x1'));var jsonpatch=require(_0x93cc('0x2'));var rp=require(_0x93cc('0x3'));var moment=require(_0x93cc('0x4'));var BPromise=require(_0x93cc('0x5'));var Mustache=require(_0x93cc('0x6'));var util=require(_0x93cc('0x7'));var path=require(_0x93cc('0x8'));var sox=require(_0x93cc('0x9'));var csv=require(_0x93cc('0xa'));var ejs=require(_0x93cc('0xb'));var fs=require('fs');var fs_extra=require(_0x93cc('0xc'));var _=require(_0x93cc('0xd'));var squel=require(_0x93cc('0xe'));var crypto=require(_0x93cc('0xf'));var jsforce=require(_0x93cc('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x93cc('0xa'));var querystring=require(_0x93cc('0x11'));var Papa=require(_0x93cc('0x12'));var Redis=require('ioredis');var authService=require(_0x93cc('0x13'));var qs=require(_0x93cc('0x14'));var as=require(_0x93cc('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x93cc('0x16'))(_0x93cc('0x17'));var utils=require('../../config/utils');var config=require(_0x93cc('0x18'));var licenseUtil=require(_0x93cc('0x19'));var db=require(_0x93cc('0x1a'))['db'];config['redis']=_[_0x93cc('0x1b')](config[_0x93cc('0x1c')],{'host':_0x93cc('0x1d'),'port':0x18eb});var socket=require(_0x93cc('0x1e'))(new Redis(config[_0x93cc('0x1c')]));require(_0x93cc('0x1f'))['register'](socket);function respondWithStatusCode(_0x3366b6,_0x29b51f){_0x29b51f=_0x29b51f||0xcc;return function(_0x30736e){if(_0x30736e){return _0x3366b6[_0x93cc('0x20')](_0x29b51f);}return _0x3366b6[_0x93cc('0x21')](_0x29b51f)['end']();};}function respondWithResult(_0x52b185,_0x4de8d2){_0x4de8d2=_0x4de8d2||0xc8;return function(_0x3174a0){if(_0x3174a0){return _0x52b185['status'](_0x4de8d2)[_0x93cc('0x22')](_0x3174a0);}};}function respondWithFilteredResult(_0x8fa26f,_0x4a7a75){return function(_0x2941b9){if(_0x2941b9){var _0x359bce=typeof _0x4a7a75[_0x93cc('0x23')]===_0x93cc('0x24')&&typeof _0x4a7a75['limit']==='undefined';var _0x29ded7=_0x2941b9[_0x93cc('0x25')];var _0x8c6c16=_0x359bce?0x0:_0x4a7a75[_0x93cc('0x23')];var _0xb0ace3=_0x359bce?_0x2941b9['count']:_0x4a7a75[_0x93cc('0x23')]+_0x4a7a75['limit'];var _0x51ce18;if(_0xb0ace3>=_0x29ded7){_0xb0ace3=_0x29ded7;_0x51ce18=0xc8;}else{_0x51ce18=0xce;}_0x8fa26f[_0x93cc('0x21')](_0x51ce18);return _0x8fa26f[_0x93cc('0x26')](_0x93cc('0x27'),_0x8c6c16+'-'+_0xb0ace3+'/'+_0x29ded7)['json'](_0x2941b9);}return null;};}function patchUpdates(_0x433195){return function(_0x4ff4da){try{jsonpatch[_0x93cc('0x28')](_0x4ff4da,_0x433195,!![]);}catch(_0x561515){return BPromise['reject'](_0x561515);}return _0x4ff4da[_0x93cc('0x29')]();};}function saveUpdates(_0x135d45,_0x550082){return function(_0x5eaf8d){if(_0x5eaf8d){return _0x5eaf8d[_0x93cc('0x2a')](_0x135d45)['then'](function(_0x7571ff){return _0x7571ff;});}return null;};}function removeEntity(_0x476f5f,_0x11eb35){return function(_0x37939a){if(_0x37939a){return _0x37939a[_0x93cc('0x2b')]()['then'](function(){var _0x33beb5=_0x37939a[_0x93cc('0x2c')]({'plain':!![]});var _0x52d5a1=_0x93cc('0x2d');return db[_0x93cc('0x2e')][_0x93cc('0x2b')]({'where':{'type':_0x52d5a1,'resourceId':_0x33beb5['id']}})['then'](function(){return _0x37939a;});})[_0x93cc('0x2f')](function(){_0x476f5f[_0x93cc('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd3d46a,_0x1885fc){return function(_0x1de21a){if(!_0x1de21a){_0xd3d46a[_0x93cc('0x20')](0x194);}return _0x1de21a;};}function handleError(_0x3b70c2,_0x187317){_0x187317=_0x187317||0x1f4;return function(_0x62f133){logger[_0x93cc('0x30')](_0x62f133[_0x93cc('0x31')]);if(_0x62f133[_0x93cc('0x32')]){delete _0x62f133['name'];}_0x3b70c2[_0x93cc('0x21')](_0x187317)[_0x93cc('0x33')](_0x62f133);};}exports[_0x93cc('0x34')]=function(_0x24f003,_0x2bb15f){var _0x3b7c56={},_0x444353={},_0x387b74={'count':0x0,'rows':[]};var _0x413851=_[_0x93cc('0x35')](db[_0x93cc('0x36')]['rawAttributes'],function(_0x30bece){return{'name':_0x30bece[_0x93cc('0x37')],'type':_0x30bece[_0x93cc('0x38')][_0x93cc('0x39')]};});_0x444353['model']=_[_0x93cc('0x35')](_0x413851,_0x93cc('0x32'));_0x444353[_0x93cc('0x3a')]=_[_0x93cc('0x3b')](_0x24f003['query']);_0x444353[_0x93cc('0x3c')]=_[_0x93cc('0x3d')](_0x444353[_0x93cc('0x3e')],_0x444353[_0x93cc('0x3a')]);_0x3b7c56[_0x93cc('0x3f')]=_[_0x93cc('0x3d')](_0x444353['model'],qs[_0x93cc('0x40')](_0x24f003[_0x93cc('0x3a')][_0x93cc('0x40')]));_0x3b7c56[_0x93cc('0x3f')]=_0x3b7c56[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x3b7c56[_0x93cc('0x3f')]:_0x444353[_0x93cc('0x3e')];if(!_0x24f003[_0x93cc('0x3a')]['hasOwnProperty']('nolimit')){_0x3b7c56['limit']=qs[_0x93cc('0x42')](_0x24f003[_0x93cc('0x3a')][_0x93cc('0x42')]);_0x3b7c56['offset']=qs[_0x93cc('0x23')](_0x24f003[_0x93cc('0x3a')][_0x93cc('0x23')]);}_0x3b7c56['order']=qs[_0x93cc('0x43')](_0x24f003[_0x93cc('0x3a')]['sort']);_0x3b7c56[_0x93cc('0x44')]=qs[_0x93cc('0x3c')](_[_0x93cc('0x45')](_0x24f003['query'],_0x444353[_0x93cc('0x3c')]),_0x413851);if(_0x24f003[_0x93cc('0x3a')][_0x93cc('0x46')]){_0x3b7c56['where']=_[_0x93cc('0x47')](_0x3b7c56[_0x93cc('0x44')],{'$or':_[_0x93cc('0x35')](_0x413851,function(_0x49625e){if(_0x49625e[_0x93cc('0x38')]!==_0x93cc('0x48')){var _0x46e296={};_0x46e296[_0x49625e[_0x93cc('0x32')]]={'$like':'%'+_0x24f003[_0x93cc('0x3a')][_0x93cc('0x46')]+'%'};return _0x46e296;}})});}_0x3b7c56=_['merge']({},_0x3b7c56,_0x24f003[_0x93cc('0x49')]);var _0x4404ca={'where':_0x3b7c56['where']};return db['Dashboard'][_0x93cc('0x25')](_0x4404ca)['then'](function(_0x175890){_0x387b74['count']=_0x175890;if(_0x24f003[_0x93cc('0x3a')][_0x93cc('0x4a')]){_0x3b7c56[_0x93cc('0x4b')]=[{'all':!![]}];}return db[_0x93cc('0x36')]['findAll'](_0x3b7c56);})['then'](function(_0x2cc2fd){_0x387b74[_0x93cc('0x4c')]=_0x2cc2fd;return _0x387b74;})[_0x93cc('0x2f')](respondWithFilteredResult(_0x2bb15f,_0x3b7c56))[_0x93cc('0x4d')](handleError(_0x2bb15f,null));};exports['show']=function(_0x4051e7,_0x8a06ff){var _0x4a567b={'raw':![],'where':{'id':_0x4051e7[_0x93cc('0x4e')]['id']}},_0x370873={};_0x370873['model']=_[_0x93cc('0x3b')](db[_0x93cc('0x36')][_0x93cc('0x4f')]);_0x370873[_0x93cc('0x3a')]=_[_0x93cc('0x3b')](_0x4051e7['query']);_0x370873[_0x93cc('0x3c')]=_[_0x93cc('0x3d')](_0x370873[_0x93cc('0x3e')],_0x370873[_0x93cc('0x3a')]);_0x4a567b[_0x93cc('0x3f')]=_[_0x93cc('0x3d')](_0x370873[_0x93cc('0x3e')],qs[_0x93cc('0x40')](_0x4051e7[_0x93cc('0x3a')][_0x93cc('0x40')]));_0x4a567b[_0x93cc('0x3f')]=_0x4a567b[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x4a567b[_0x93cc('0x3f')]:_0x370873[_0x93cc('0x3e')];if(_0x4051e7[_0x93cc('0x3a')][_0x93cc('0x4a')]){_0x4a567b[_0x93cc('0x4b')]=[{'all':!![]}];}_0x4a567b=_[_0x93cc('0x47')]({},_0x4a567b,_0x4051e7['options']);return db[_0x93cc('0x36')][_0x93cc('0x50')](_0x4a567b)['then'](handleEntityNotFound(_0x8a06ff,null))[_0x93cc('0x2f')](respondWithResult(_0x8a06ff,null))[_0x93cc('0x4d')](handleError(_0x8a06ff,null));};exports['create']=function(_0xf9a866,_0x52dc07){return db[_0x93cc('0x36')][_0x93cc('0x51')](_0xf9a866[_0x93cc('0x52')],{})[_0x93cc('0x2f')](function(_0x1be1da){var _0x28135a=_0xf9a866[_0x93cc('0x53')][_0x93cc('0x2c')]({'plain':!![]});if(!_0x28135a)throw new Error(_0x93cc('0x54'));if(_0x28135a[_0x93cc('0x55')]==='user'){var _0x245430=_0x1be1da['get']({'plain':!![]});var _0x316237=_0x93cc('0x2d');return db[_0x93cc('0x56')]['find']({'where':{'name':_0x316237,'userProfileId':_0x28135a[_0x93cc('0x57')]},'raw':!![]})[_0x93cc('0x2f')](function(_0x4fa653){if(_0x4fa653&&_0x4fa653['autoAssociation']===0x0){return db[_0x93cc('0x2e')]['create']({'name':_0x245430['name'],'resourceId':_0x245430['id'],'type':_0x4fa653['name'],'sectionId':_0x4fa653['id']},{})['then'](function(){return _0x1be1da;});}else{return _0x1be1da;}})[_0x93cc('0x4d')](function(_0x4ab79a){logger[_0x93cc('0x30')](_0x93cc('0x58'),_0x4ab79a);throw _0x4ab79a;});}return _0x1be1da;})[_0x93cc('0x2f')](respondWithResult(_0x52dc07,0xc9))[_0x93cc('0x4d')](handleError(_0x52dc07,null));};exports[_0x93cc('0x59')]=function(_0x435c3d,_0x4c7148){var _0x10c6a5={'where':{'id':_0x435c3d[_0x93cc('0x4e')]['id']}},_0x2d39da={};_0x2d39da[_0x93cc('0x3e')]=_[_0x93cc('0x3b')](db['Dashboard']['rawAttributes']);_0x10c6a5[_0x93cc('0x3f')]=_['intersection'](_0x2d39da[_0x93cc('0x3e')],qs[_0x93cc('0x40')](_0x435c3d['query'][_0x93cc('0x40')]));_0x10c6a5[_0x93cc('0x3f')]=_0x10c6a5[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x10c6a5[_0x93cc('0x3f')]:_0x2d39da[_0x93cc('0x3e')];if(_0x435c3d['query']['includeAll']){_0x10c6a5[_0x93cc('0x4b')]=[{'all':!![]}];}_0x10c6a5=_[_0x93cc('0x47')]({},_0x10c6a5,_0x435c3d['options']);return db[_0x93cc('0x36')][_0x93cc('0x50')](_0x10c6a5)[_0x93cc('0x2f')](handleEntityNotFound(_0x4c7148,null))['then'](function(_0x40b60f){if(_0x40b60f){var _0x1d5f01=_0x40b60f[_0x93cc('0x2c')]({'plain':!![]});_0x1d5f01=qs['omit'](_0x1d5f01,['id','createdAt','updatedAt']);_0x435c3d[_0x93cc('0x52')]=_['omit'](_0x435c3d[_0x93cc('0x52')],['id',_0x93cc('0x5a'),'updatedAt']);return db[_0x93cc('0x36')][_0x93cc('0x51')](_[_0x93cc('0x47')](_0x1d5f01,_0x435c3d[_0x93cc('0x52')]),{'include':_0x435c3d[_0x93cc('0x3a')][_0x93cc('0x4a')]?[{'all':!![]}]:undefined})[_0x93cc('0x2f')](function(_0xfb5ee){var _0x3dccaf=_0x435c3d[_0x93cc('0x53')][_0x93cc('0x2c')]({'plain':!![]});if(!_0x3dccaf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3dccaf[_0x93cc('0x55')]===_0x93cc('0x53')){var _0x6cae38=_0xfb5ee[_0x93cc('0x2c')]({'plain':!![]});var _0x5b3b57=_0x93cc('0x2d');return db['UserProfileSection'][_0x93cc('0x50')]({'where':{'name':_0x5b3b57,'userProfileId':_0x3dccaf[_0x93cc('0x57')]},'raw':!![]})[_0x93cc('0x2f')](function(_0x208dd6){if(_0x208dd6&&_0x208dd6[_0x93cc('0x5b')]===0x0){return db['UserProfileResource']['create']({'name':_0x6cae38[_0x93cc('0x32')],'resourceId':_0x6cae38['id'],'type':_0x208dd6['name'],'sectionId':_0x208dd6['id']},{})[_0x93cc('0x2f')](function(){return _0xfb5ee;});}else{return _0xfb5ee;}})['catch'](function(_0x7c0fb7){logger[_0x93cc('0x30')](_0x93cc('0x58'),_0x7c0fb7);throw _0x7c0fb7;});}return _0xfb5ee;});}})['then'](respondWithResult(_0x4c7148,0xc9))['catch'](handleError(_0x4c7148,null));};exports['update']=function(_0x5dcf46,_0x30d429){if(_0x5dcf46[_0x93cc('0x52')]['id']){delete _0x5dcf46[_0x93cc('0x52')]['id'];}return db['Dashboard'][_0x93cc('0x50')]({'where':{'id':_0x5dcf46['params']['id']}})['then'](handleEntityNotFound(_0x30d429,null))[_0x93cc('0x2f')](saveUpdates(_0x5dcf46[_0x93cc('0x52')],null))[_0x93cc('0x2f')](respondWithResult(_0x30d429,null))[_0x93cc('0x4d')](handleError(_0x30d429,null));};exports[_0x93cc('0x2b')]=function(_0xa64fea,_0xda6ee5){return db[_0x93cc('0x36')][_0x93cc('0x50')]({'where':{'id':_0xa64fea[_0x93cc('0x4e')]['id']}})[_0x93cc('0x2f')](handleEntityNotFound(_0xda6ee5,null))['then'](removeEntity(_0xda6ee5,null))[_0x93cc('0x4d')](handleError(_0xda6ee5,null));};function widgetAttributes(_0x114f53){try{switch(_0x114f53[_0x93cc('0x38')]){case _0x93cc('0x5c'):return[{'name':'attrUrl','value':_0x114f53[_0x93cc('0x5d')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0]['value']:undefined)||_0x93cc('0x5f')}];case _0x93cc('0x60'):return[{'name':'attrPath','value':_0x114f53[_0x93cc('0x61')]||(_0x114f53['attrs']&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||''}];case'clock':return[{'name':_0x93cc('0x63'),'value':_0x114f53[_0x93cc('0x63')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||_0x93cc('0x64')},{'name':_0x93cc('0x65'),'value':_0x114f53[_0x93cc('0x65')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53[_0x93cc('0x5e')][0x1][_0x93cc('0x62')]:undefined)||_0x93cc('0x66')},{'name':_0x93cc('0x67'),'value':_0x114f53[_0x93cc('0x67')]||(_0x114f53['attrs']&&_0x114f53[_0x93cc('0x5e')][0x2]?_0x114f53[_0x93cc('0x5e')][0x2]['value']:undefined)||0xc}];case _0x93cc('0x68'):return[{'name':_0x93cc('0x69'),'value':_0x114f53[_0x93cc('0x69')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||_0x93cc('0x6a')},{'name':_0x93cc('0x6b'),'value':_0x114f53[_0x93cc('0x6b')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53['attrs'][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x114f53['attrFontSize']||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x2]?_0x114f53[_0x93cc('0x5e')][0x2][_0x93cc('0x62')]:undefined)||0x14}];case'multibar-chart':case _0x93cc('0x6c'):return[{'name':'attrSerie1','value':_0x114f53[_0x93cc('0x6d')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||_0x93cc('0x6a')},{'name':_0x93cc('0x6e'),'value':_0x114f53[_0x93cc('0x6e')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53[_0x93cc('0x5e')][0x1]['value']:undefined)||null},{'name':_0x93cc('0x6f'),'value':_0x114f53['attrSerie3']||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53['attrs'][0x2]?_0x114f53['attrs'][0x2][_0x93cc('0x62')]:undefined)||null},{'name':_0x93cc('0x6b'),'value':_0x114f53[_0x93cc('0x6b')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x3]?_0x114f53[_0x93cc('0x5e')][0x3][_0x93cc('0x62')]:undefined)||[]}];case _0x93cc('0x70'):return[{'name':_0x93cc('0x71'),'type':_0x114f53[_0x93cc('0x72')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53['attrs'][0x0]?_0x114f53['attrs'][0x0][_0x93cc('0x38')]:undefined)||null,'value':_0x114f53[_0x93cc('0x71')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||null},{'name':_0x93cc('0x73'),'value':_0x114f53[_0x93cc('0x73')]||(_0x114f53['attrs']&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53[_0x93cc('0x5e')][0x1][_0x93cc('0x62')]:undefined)||0x0}];default:return[];}}catch(_0x566687){logger[_0x93cc('0x30')](_0x93cc('0x74'),JSON[_0x93cc('0x75')](_0x566687));return[];}}exports['addItem']=function(_0x1f4a42,_0x472f9e,_0x17d2e7){if(_0x1f4a42[_0x93cc('0x52')]['id']){delete _0x1f4a42[_0x93cc('0x52')]['id'];}return db[_0x93cc('0x36')][_0x93cc('0x50')]({'where':{'id':_0x1f4a42['params']['id']}})[_0x93cc('0x2f')](handleEntityNotFound(_0x472f9e,null))[_0x93cc('0x2f')](function(_0x2360e3){if(_0x2360e3){_0x1f4a42['body']['DashboardId']=_0x2360e3['id'];_0x1f4a42[_0x93cc('0x52')]['attrs']=widgetAttributes(_0x1f4a42[_0x93cc('0x52')]);return db[_0x93cc('0x76')][_0x93cc('0x51')](_0x1f4a42['body']);}})['then'](respondWithResult(_0x472f9e,null))['catch'](handleError(_0x472f9e,null));};exports[_0x93cc('0x77')]=function(_0x3dc590,_0x55cebb,_0x5f31c9){var _0x4f3304={};var _0xceffd8={};var _0x32f1db;var _0x6b108a;return db[_0x93cc('0x36')]['findOne']({'where':{'id':_0x3dc590[_0x93cc('0x4e')]['id']}})[_0x93cc('0x2f')](handleEntityNotFound(_0x55cebb,null))[_0x93cc('0x2f')](function(_0x44821a){if(_0x44821a){_0x32f1db=_0x44821a;_0xceffd8[_0x93cc('0x3e')]=_[_0x93cc('0x3b')](db[_0x93cc('0x76')][_0x93cc('0x4f')]);_0xceffd8['query']=_[_0x93cc('0x3b')](_0x3dc590['query']);_0xceffd8['filters']=_[_0x93cc('0x3d')](_0xceffd8[_0x93cc('0x3e')],_0xceffd8['query']);_0x4f3304[_0x93cc('0x3f')]=_['intersection'](_0xceffd8[_0x93cc('0x3e')],qs['fields'](_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x40')]));_0x4f3304[_0x93cc('0x3f')]=_0x4f3304[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x4f3304[_0x93cc('0x3f')]:_0xceffd8[_0x93cc('0x3e')];_0x4f3304[_0x93cc('0x78')]=qs[_0x93cc('0x43')](_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x43')]);_0x4f3304[_0x93cc('0x44')]=qs[_0x93cc('0x3c')](_[_0x93cc('0x45')](_0x3dc590['query'],_0xceffd8[_0x93cc('0x3c')]));if(_0x3dc590['query']['filter']){_0x4f3304['where']=_['merge'](_0x4f3304[_0x93cc('0x44')],{'$or':_[_0x93cc('0x35')](_0x4f3304[_0x93cc('0x3f')],function(_0x55752e){var _0x4e7131={};_0x4e7131[_0x55752e]={'$like':'%'+_0x3dc590['query'][_0x93cc('0x46')]+'%'};return _0x4e7131;})});}_0x4f3304=_['merge']({},_0x4f3304,_0x3dc590['options']);return _0x32f1db[_0x93cc('0x77')](_0x4f3304);}})[_0x93cc('0x2f')](function(_0xdef9a2){if(_0xdef9a2){_0x6b108a=_0xdef9a2[_0x93cc('0x41')];if(!_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x79')](_0x93cc('0x7a'))){_0x4f3304[_0x93cc('0x42')]=qs[_0x93cc('0x42')](_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x42')]);_0x4f3304[_0x93cc('0x23')]=qs[_0x93cc('0x23')](_0x3dc590['query'][_0x93cc('0x23')]);}return _0x32f1db[_0x93cc('0x77')](_0x4f3304);}})['then'](function(_0x59bde5){if(_0x59bde5){return _0x59bde5?{'count':_0x6b108a,'rows':_0x59bde5}:null;}})[_0x93cc('0x2f')](respondWithResult(_0x55cebb,null))['catch'](handleError(_0x55cebb,null));};
\ No newline at end of file
+var _0x600c=['attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','getItems','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','params','length','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','omit','UserProfileSection','iframe','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2'];(function(_0x14a210,_0x4d78c3){var _0x50a9b9=function(_0x26723b){while(--_0x26723b){_0x14a210['push'](_0x14a210['shift']());}};_0x50a9b9(++_0x4d78c3);}(_0x600c,0x1d0));var _0xc600=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x600c[_0x4792c8];return _0x35edb1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc600('0x0'));var zipdir=require(_0xc600('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc600('0x2'));var moment=require(_0xc600('0x3'));var BPromise=require(_0xc600('0x4'));var Mustache=require(_0xc600('0x5'));var util=require(_0xc600('0x6'));var path=require(_0xc600('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc600('0x8'));var fs=require('fs');var fs_extra=require(_0xc600('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc600('0xa'));var jsforce=require(_0xc600('0xb'));var deskjs=require(_0xc600('0xc'));var toCsv=require(_0xc600('0xd'));var querystring=require('querystring');var Papa=require(_0xc600('0xe'));var Redis=require(_0xc600('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc600('0x10'));var as=require(_0xc600('0x11'));var hardwareService=require(_0xc600('0x12'));var logger=require('../../config/logger')(_0xc600('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc600('0x14'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xc600('0x15')],{'host':_0xc600('0x16'),'port':0x18eb});var socket=require(_0xc600('0x17'))(new Redis(config['redis']));require('./dashboard.socket')[_0xc600('0x18')](socket);function respondWithStatusCode(_0x5e62fb,_0x4981b4){_0x4981b4=_0x4981b4||0xcc;return function(_0x3adbe9){if(_0x3adbe9){return _0x5e62fb[_0xc600('0x19')](_0x4981b4);}return _0x5e62fb[_0xc600('0x1a')](_0x4981b4)[_0xc600('0x1b')]();};}function respondWithResult(_0x364ae7,_0xb60322){_0xb60322=_0xb60322||0xc8;return function(_0x865b39){if(_0x865b39){return _0x364ae7['status'](_0xb60322)[_0xc600('0x1c')](_0x865b39);}};}function respondWithFilteredResult(_0x800355,_0x312924){return function(_0x326384){if(_0x326384){var _0x4ad263=typeof _0x312924[_0xc600('0x1d')]===_0xc600('0x1e')&&typeof _0x312924['limit']===_0xc600('0x1e');var _0x4eec7=_0x326384['count'];var _0x26ea02=_0x4ad263?0x0:_0x312924['offset'];var _0x4585e7=_0x4ad263?_0x326384[_0xc600('0x1f')]:_0x312924[_0xc600('0x1d')]+_0x312924[_0xc600('0x20')];var _0x48fd8a;if(_0x4585e7>=_0x4eec7){_0x4585e7=_0x4eec7;_0x48fd8a=0xc8;}else{_0x48fd8a=0xce;}_0x800355['status'](_0x48fd8a);return _0x800355[_0xc600('0x21')]('Content-Range',_0x26ea02+'-'+_0x4585e7+'/'+_0x4eec7)[_0xc600('0x1c')](_0x326384);}return null;};}function patchUpdates(_0x314f12){return function(_0x119897){try{jsonpatch['apply'](_0x119897,_0x314f12,!![]);}catch(_0x2f36b1){return BPromise[_0xc600('0x22')](_0x2f36b1);}return _0x119897['save']();};}function saveUpdates(_0x10e879,_0x1c84da){return function(_0xd29773){if(_0xd29773){return _0xd29773[_0xc600('0x23')](_0x10e879)[_0xc600('0x24')](function(_0x3512fb){return _0x3512fb;});}return null;};}function removeEntity(_0x6fcc5d,_0x11bc34){return function(_0x289711){if(_0x289711){return _0x289711[_0xc600('0x25')]()['then'](function(){var _0xa0d232=_0x289711[_0xc600('0x26')]({'plain':!![]});var _0x63bf2b=_0xc600('0x27');return db[_0xc600('0x28')]['destroy']({'where':{'type':_0x63bf2b,'resourceId':_0xa0d232['id']}})[_0xc600('0x24')](function(){return _0x289711;});})[_0xc600('0x24')](function(){_0x6fcc5d[_0xc600('0x1a')](0xcc)[_0xc600('0x1b')]();});}};}function handleEntityNotFound(_0x266f4d,_0x460202){return function(_0x47b0b0){if(!_0x47b0b0){_0x266f4d[_0xc600('0x19')](0x194);}return _0x47b0b0;};}function handleError(_0xd27352,_0x25628a){_0x25628a=_0x25628a||0x1f4;return function(_0x4bf9ae){logger[_0xc600('0x29')](_0x4bf9ae[_0xc600('0x2a')]);if(_0x4bf9ae[_0xc600('0x2b')]){delete _0x4bf9ae['name'];}_0xd27352[_0xc600('0x1a')](_0x25628a)[_0xc600('0x2c')](_0x4bf9ae);};}exports[_0xc600('0x2d')]=function(_0xadc5c3,_0x4a3351){var _0x49ad4b={},_0x1b6dcb={},_0x5c9f18={'count':0x0,'rows':[]};var _0xe25b0b=_[_0xc600('0x2e')](db[_0xc600('0x2f')][_0xc600('0x30')],function(_0x19c3c1){return{'name':_0x19c3c1['fieldName'],'type':_0x19c3c1[_0xc600('0x31')][_0xc600('0x32')]};});_0x1b6dcb[_0xc600('0x33')]=_[_0xc600('0x2e')](_0xe25b0b,'name');_0x1b6dcb['query']=_[_0xc600('0x34')](_0xadc5c3[_0xc600('0x35')]);_0x1b6dcb[_0xc600('0x36')]=_[_0xc600('0x37')](_0x1b6dcb[_0xc600('0x33')],_0x1b6dcb['query']);_0x49ad4b['attributes']=_[_0xc600('0x37')](_0x1b6dcb[_0xc600('0x33')],qs[_0xc600('0x38')](_0xadc5c3[_0xc600('0x35')][_0xc600('0x38')]));_0x49ad4b['attributes']=_0x49ad4b['attributes']['length']?_0x49ad4b[_0xc600('0x39')]:_0x1b6dcb['model'];if(!_0xadc5c3[_0xc600('0x35')][_0xc600('0x3a')](_0xc600('0x3b'))){_0x49ad4b[_0xc600('0x20')]=qs[_0xc600('0x20')](_0xadc5c3['query'][_0xc600('0x20')]);_0x49ad4b[_0xc600('0x1d')]=qs[_0xc600('0x1d')](_0xadc5c3[_0xc600('0x35')][_0xc600('0x1d')]);}_0x49ad4b[_0xc600('0x3c')]=qs[_0xc600('0x3d')](_0xadc5c3[_0xc600('0x35')][_0xc600('0x3d')]);_0x49ad4b[_0xc600('0x3e')]=qs['filters'](_[_0xc600('0x3f')](_0xadc5c3[_0xc600('0x35')],_0x1b6dcb[_0xc600('0x36')]),_0xe25b0b);if(_0xadc5c3['query'][_0xc600('0x40')]){_0x49ad4b['where']=_[_0xc600('0x41')](_0x49ad4b[_0xc600('0x3e')],{'$or':_['map'](_0xe25b0b,function(_0x523773){if(_0x523773['type']!==_0xc600('0x42')){var _0x1c5e12={};_0x1c5e12[_0x523773[_0xc600('0x2b')]]={'$like':'%'+_0xadc5c3[_0xc600('0x35')]['filter']+'%'};return _0x1c5e12;}})});}_0x49ad4b=_[_0xc600('0x41')]({},_0x49ad4b,_0xadc5c3[_0xc600('0x43')]);var _0x994451={'where':_0x49ad4b[_0xc600('0x3e')]};return db[_0xc600('0x2f')][_0xc600('0x1f')](_0x994451)['then'](function(_0x40922c){_0x5c9f18[_0xc600('0x1f')]=_0x40922c;if(_0xadc5c3[_0xc600('0x35')]['includeAll']){_0x49ad4b[_0xc600('0x44')]=[{'all':!![]}];}return db[_0xc600('0x2f')]['findAll'](_0x49ad4b);})[_0xc600('0x24')](function(_0x40f5bb){_0x5c9f18[_0xc600('0x45')]=_0x40f5bb;return _0x5c9f18;})['then'](respondWithFilteredResult(_0x4a3351,_0x49ad4b))['catch'](handleError(_0x4a3351,null));};exports[_0xc600('0x46')]=function(_0xfa5daa,_0x5a4082){var _0x333124={'raw':![],'where':{'id':_0xfa5daa[_0xc600('0x47')]['id']}},_0x292faf={};_0x292faf[_0xc600('0x33')]=_[_0xc600('0x34')](db[_0xc600('0x2f')]['rawAttributes']);_0x292faf[_0xc600('0x35')]=_[_0xc600('0x34')](_0xfa5daa[_0xc600('0x35')]);_0x292faf[_0xc600('0x36')]=_['intersection'](_0x292faf['model'],_0x292faf[_0xc600('0x35')]);_0x333124['attributes']=_['intersection'](_0x292faf[_0xc600('0x33')],qs['fields'](_0xfa5daa[_0xc600('0x35')]['fields']));_0x333124['attributes']=_0x333124[_0xc600('0x39')][_0xc600('0x48')]?_0x333124['attributes']:_0x292faf['model'];if(_0xfa5daa[_0xc600('0x35')][_0xc600('0x49')]){_0x333124[_0xc600('0x44')]=[{'all':!![]}];}_0x333124=_['merge']({},_0x333124,_0xfa5daa[_0xc600('0x43')]);return db[_0xc600('0x2f')][_0xc600('0x4a')](_0x333124)[_0xc600('0x24')](handleEntityNotFound(_0x5a4082,null))[_0xc600('0x24')](respondWithResult(_0x5a4082,null))[_0xc600('0x4b')](handleError(_0x5a4082,null));};exports[_0xc600('0x4c')]=function(_0x3e167f,_0x19706a){return db[_0xc600('0x2f')][_0xc600('0x4c')](_0x3e167f[_0xc600('0x4d')],{})[_0xc600('0x24')](function(_0x1062ee){var _0x24a0f0=_0x3e167f[_0xc600('0x4e')][_0xc600('0x26')]({'plain':!![]});if(!_0x24a0f0)throw new Error(_0xc600('0x4f'));if(_0x24a0f0[_0xc600('0x50')]===_0xc600('0x4e')){var _0x580146=_0x1062ee[_0xc600('0x26')]({'plain':!![]});var _0x1c7c92=_0xc600('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x1c7c92,'userProfileId':_0x24a0f0[_0xc600('0x51')]},'raw':!![]})[_0xc600('0x24')](function(_0x4e4d4c){if(_0x4e4d4c&&_0x4e4d4c[_0xc600('0x52')]===0x0){return db[_0xc600('0x28')]['create']({'name':_0x580146['name'],'resourceId':_0x580146['id'],'type':_0x4e4d4c[_0xc600('0x2b')],'sectionId':_0x4e4d4c['id']},{})[_0xc600('0x24')](function(){return _0x1062ee;});}else{return _0x1062ee;}})[_0xc600('0x4b')](function(_0x11b8a8){logger[_0xc600('0x29')](_0xc600('0x53'),_0x11b8a8);throw _0x11b8a8;});}return _0x1062ee;})[_0xc600('0x24')](respondWithResult(_0x19706a,0xc9))[_0xc600('0x4b')](handleError(_0x19706a,null));};exports['clone']=function(_0x1ab3bc,_0x2d2797){var _0x271ce9={'where':{'id':_0x1ab3bc[_0xc600('0x47')]['id']}},_0x96c2b2={};_0x96c2b2['model']=_['keys'](db[_0xc600('0x2f')][_0xc600('0x30')]);_0x271ce9['attributes']=_[_0xc600('0x37')](_0x96c2b2[_0xc600('0x33')],qs[_0xc600('0x38')](_0x1ab3bc[_0xc600('0x35')][_0xc600('0x38')]));_0x271ce9['attributes']=_0x271ce9[_0xc600('0x39')][_0xc600('0x48')]?_0x271ce9[_0xc600('0x39')]:_0x96c2b2['model'];if(_0x1ab3bc['query'][_0xc600('0x49')]){_0x271ce9[_0xc600('0x44')]=[{'all':!![]}];}_0x271ce9=_['merge']({},_0x271ce9,_0x1ab3bc[_0xc600('0x43')]);return db[_0xc600('0x2f')][_0xc600('0x4a')](_0x271ce9)[_0xc600('0x24')](handleEntityNotFound(_0x2d2797,null))[_0xc600('0x24')](function(_0x335bea){if(_0x335bea){var _0x37827f=_0x335bea[_0xc600('0x26')]({'plain':!![]});_0x37827f=qs['omit'](_0x37827f,['id',_0xc600('0x54'),_0xc600('0x55')]);_0x1ab3bc['body']=_[_0xc600('0x56')](_0x1ab3bc[_0xc600('0x4d')],['id',_0xc600('0x54'),_0xc600('0x55')]);return db['Dashboard']['create'](_[_0xc600('0x41')](_0x37827f,_0x1ab3bc['body']),{'include':_0x1ab3bc[_0xc600('0x35')][_0xc600('0x49')]?[{'all':!![]}]:undefined})[_0xc600('0x24')](function(_0x38d3c6){var _0x2016d8=_0x1ab3bc[_0xc600('0x4e')][_0xc600('0x26')]({'plain':!![]});if(!_0x2016d8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2016d8['role']===_0xc600('0x4e')){var _0x2a5ce5=_0x38d3c6[_0xc600('0x26')]({'plain':!![]});var _0x1a46e8=_0xc600('0x27');return db[_0xc600('0x57')]['find']({'where':{'name':_0x1a46e8,'userProfileId':_0x2016d8['userProfileId']},'raw':!![]})[_0xc600('0x24')](function(_0x34a8e8){if(_0x34a8e8&&_0x34a8e8[_0xc600('0x52')]===0x0){return db[_0xc600('0x28')][_0xc600('0x4c')]({'name':_0x2a5ce5[_0xc600('0x2b')],'resourceId':_0x2a5ce5['id'],'type':_0x34a8e8[_0xc600('0x2b')],'sectionId':_0x34a8e8['id']},{})[_0xc600('0x24')](function(){return _0x38d3c6;});}else{return _0x38d3c6;}})[_0xc600('0x4b')](function(_0x496139){logger[_0xc600('0x29')](_0xc600('0x53'),_0x496139);throw _0x496139;});}return _0x38d3c6;});}})[_0xc600('0x24')](respondWithResult(_0x2d2797,0xc9))[_0xc600('0x4b')](handleError(_0x2d2797,null));};exports[_0xc600('0x23')]=function(_0x287b6d,_0x41094c){if(_0x287b6d[_0xc600('0x4d')]['id']){delete _0x287b6d[_0xc600('0x4d')]['id'];}return db['Dashboard'][_0xc600('0x4a')]({'where':{'id':_0x287b6d['params']['id']}})['then'](handleEntityNotFound(_0x41094c,null))['then'](saveUpdates(_0x287b6d[_0xc600('0x4d')],null))['then'](respondWithResult(_0x41094c,null))[_0xc600('0x4b')](handleError(_0x41094c,null));};exports[_0xc600('0x25')]=function(_0xf4662,_0x302ce4){return db[_0xc600('0x2f')][_0xc600('0x4a')]({'where':{'id':_0xf4662[_0xc600('0x47')]['id']}})['then'](handleEntityNotFound(_0x302ce4,null))['then'](removeEntity(_0x302ce4,null))[_0xc600('0x4b')](handleError(_0x302ce4,null));};function widgetAttributes(_0x476d26){try{switch(_0x476d26[_0xc600('0x31')]){case _0xc600('0x58'):return[{'name':'attrUrl','value':_0x476d26['attrUrl']||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x0]?_0x476d26[_0xc600('0x59')][0x0][_0xc600('0x5a')]:undefined)||_0xc600('0x5b')}];case _0xc600('0x5c'):return[{'name':_0xc600('0x5d'),'value':_0x476d26[_0xc600('0x5d')]||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x0]?_0x476d26[_0xc600('0x59')][0x0]['value']:undefined)||''}];case _0xc600('0x5e'):return[{'name':_0xc600('0x5f'),'value':_0x476d26[_0xc600('0x5f')]||(_0x476d26['attrs']&&_0x476d26[_0xc600('0x59')][0x0]?_0x476d26[_0xc600('0x59')][0x0][_0xc600('0x5a')]:undefined)||_0xc600('0x60')},{'name':'attrTimezone','value':_0x476d26['attrTimezone']||(_0x476d26['attrs']&&_0x476d26[_0xc600('0x59')][0x1]?_0x476d26[_0xc600('0x59')][0x1][_0xc600('0x5a')]:undefined)||_0xc600('0x61')},{'name':'attrFontSize','value':_0x476d26[_0xc600('0x62')]||(_0x476d26[_0xc600('0x59')]&&_0x476d26['attrs'][0x2]?_0x476d26[_0xc600('0x59')][0x2][_0xc600('0x5a')]:undefined)||0xc}];case _0xc600('0x63'):return[{'name':_0xc600('0x64'),'value':_0x476d26['attrMetric']||(_0x476d26[_0xc600('0x59')]&&_0x476d26['attrs'][0x0]?_0x476d26[_0xc600('0x59')][0x0][_0xc600('0x5a')]:undefined)||'total'},{'name':_0xc600('0x65'),'value':_0x476d26[_0xc600('0x65')]||(_0x476d26['attrs']&&_0x476d26[_0xc600('0x59')][0x1]?_0x476d26[_0xc600('0x59')][0x1][_0xc600('0x5a')]:undefined)||[]},{'name':_0xc600('0x62'),'value':_0x476d26[_0xc600('0x62')]||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x2]?_0x476d26[_0xc600('0x59')][0x2]['value']:undefined)||0x14}];case _0xc600('0x66'):case _0xc600('0x67'):return[{'name':_0xc600('0x68'),'value':_0x476d26['attrSerie1']||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x0]?_0x476d26['attrs'][0x0][_0xc600('0x5a')]:undefined)||'total'},{'name':_0xc600('0x69'),'value':_0x476d26['attrSerie2']||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x1]?_0x476d26['attrs'][0x1]['value']:undefined)||null},{'name':_0xc600('0x6a'),'value':_0x476d26[_0xc600('0x6a')]||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x2]?_0x476d26['attrs'][0x2][_0xc600('0x5a')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x476d26['attrVoiceQueues']||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x3]?_0x476d26[_0xc600('0x59')][0x3]['value']:undefined)||[]}];case _0xc600('0x6b'):return[{'name':_0xc600('0x6c'),'type':_0x476d26['reportType']||(_0x476d26[_0xc600('0x59')]&&_0x476d26['attrs'][0x0]?_0x476d26[_0xc600('0x59')][0x0][_0xc600('0x31')]:undefined)||null,'value':_0x476d26['attrReport']||(_0x476d26[_0xc600('0x59')]&&_0x476d26[_0xc600('0x59')][0x0]?_0x476d26['attrs'][0x0][_0xc600('0x5a')]:undefined)||null},{'name':'attrRefresh','value':_0x476d26[_0xc600('0x6d')]||(_0x476d26['attrs']&&_0x476d26[_0xc600('0x59')][0x1]?_0x476d26[_0xc600('0x59')][0x1][_0xc600('0x5a')]:undefined)||0x0}];default:return[];}}catch(_0xe36598){logger[_0xc600('0x29')](_0xc600('0x6e'),JSON[_0xc600('0x6f')](_0xe36598));return[];}}exports[_0xc600('0x70')]=function(_0x187154,_0x5c0c67,_0x3593ab){if(_0x187154[_0xc600('0x4d')]['id']){delete _0x187154[_0xc600('0x4d')]['id'];}return db[_0xc600('0x2f')][_0xc600('0x4a')]({'where':{'id':_0x187154['params']['id']}})[_0xc600('0x24')](handleEntityNotFound(_0x5c0c67,null))['then'](function(_0x3038ac){if(_0x3038ac){_0x187154[_0xc600('0x4d')]['DashboardId']=_0x3038ac['id'];_0x187154[_0xc600('0x4d')]['attrs']=widgetAttributes(_0x187154[_0xc600('0x4d')]);return db['DashboardItem'][_0xc600('0x4c')](_0x187154[_0xc600('0x4d')]);}})['then'](respondWithResult(_0x5c0c67,null))[_0xc600('0x4b')](handleError(_0x5c0c67,null));};exports['getItems']=function(_0x1d186f,_0x46e58d,_0x444223){var _0x2d4925={};var _0x253d72={};var _0x3b0953;var _0x3d0abe;return db[_0xc600('0x2f')]['findOne']({'where':{'id':_0x1d186f[_0xc600('0x47')]['id']}})['then'](handleEntityNotFound(_0x46e58d,null))[_0xc600('0x24')](function(_0x41458){if(_0x41458){_0x3b0953=_0x41458;_0x253d72[_0xc600('0x33')]=_[_0xc600('0x34')](db['DashboardItem'][_0xc600('0x30')]);_0x253d72[_0xc600('0x35')]=_[_0xc600('0x34')](_0x1d186f[_0xc600('0x35')]);_0x253d72[_0xc600('0x36')]=_['intersection'](_0x253d72[_0xc600('0x33')],_0x253d72[_0xc600('0x35')]);_0x2d4925['attributes']=_[_0xc600('0x37')](_0x253d72['model'],qs[_0xc600('0x38')](_0x1d186f[_0xc600('0x35')][_0xc600('0x38')]));_0x2d4925[_0xc600('0x39')]=_0x2d4925[_0xc600('0x39')]['length']?_0x2d4925[_0xc600('0x39')]:_0x253d72['model'];_0x2d4925[_0xc600('0x3c')]=qs[_0xc600('0x3d')](_0x1d186f[_0xc600('0x35')][_0xc600('0x3d')]);_0x2d4925[_0xc600('0x3e')]=qs[_0xc600('0x36')](_[_0xc600('0x3f')](_0x1d186f[_0xc600('0x35')],_0x253d72[_0xc600('0x36')]));if(_0x1d186f[_0xc600('0x35')][_0xc600('0x40')]){_0x2d4925[_0xc600('0x3e')]=_['merge'](_0x2d4925[_0xc600('0x3e')],{'$or':_[_0xc600('0x2e')](_0x2d4925[_0xc600('0x39')],function(_0x4bac61){var _0x1ee95e={};_0x1ee95e[_0x4bac61]={'$like':'%'+_0x1d186f['query'][_0xc600('0x40')]+'%'};return _0x1ee95e;})});}_0x2d4925=_[_0xc600('0x41')]({},_0x2d4925,_0x1d186f[_0xc600('0x43')]);return _0x3b0953[_0xc600('0x71')](_0x2d4925);}})[_0xc600('0x24')](function(_0x21db82){if(_0x21db82){_0x3d0abe=_0x21db82[_0xc600('0x48')];if(!_0x1d186f[_0xc600('0x35')][_0xc600('0x3a')](_0xc600('0x3b'))){_0x2d4925[_0xc600('0x20')]=qs['limit'](_0x1d186f['query'][_0xc600('0x20')]);_0x2d4925[_0xc600('0x1d')]=qs[_0xc600('0x1d')](_0x1d186f[_0xc600('0x35')][_0xc600('0x1d')]);}return _0x3b0953[_0xc600('0x71')](_0x2d4925);}})[_0xc600('0x24')](function(_0x304cd3){if(_0x304cd3){return _0x304cd3?{'count':_0x3d0abe,'rows':_0x304cd3}:null;}})[_0xc600('0x24')](respondWithResult(_0x46e58d,null))[_0xc600('0x4b')](handleError(_0x46e58d,null));};
\ No newline at end of file
index a0ceb6d..5ec5975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1f=['events','Dashboard','setMaxListeners','emit','hook'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x2b1f,0x1b8));var _0xf2b1=function(_0x4d3b24,_0x32d325){_0x4d3b24=_0x4d3b24-0x0;var _0x45eab1=_0x2b1f[_0x4d3b24];return _0x45eab1;};'use strict';var EventEmitter=require(_0xf2b1('0x0'));var Dashboard=require('../../mysqldb')['db'][_0xf2b1('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xf2b1('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3a17b6){return function(_0x2e786f,_0x1e90e8,_0x54121f){DashboardEvents[_0xf2b1('0x3')](_0x3a17b6+':'+_0x2e786f['id'],_0x2e786f);DashboardEvents['emit'](_0x3a17b6,_0x2e786f);_0x54121f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xf2b1('0x4')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0x4d28=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x420a18,_0x8dddba){var _0x5d12ef=function(_0x17a5ba){while(--_0x17a5ba){_0x420a18['push'](_0x420a18['shift']());}};_0x5d12ef(++_0x8dddba);}(_0x4d28,0x69));var _0x84d2=function(_0x2f88bf,_0x761a0e){_0x2f88bf=_0x2f88bf-0x0;var _0x1b451e=_0x4d28[_0x2f88bf];return _0x1b451e;};'use strict';var EventEmitter=require(_0x84d2('0x0'));var Dashboard=require(_0x84d2('0x1'))['db'][_0x84d2('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x84d2('0x3')](0x0);var events={'afterCreate':_0x84d2('0x4'),'afterUpdate':_0x84d2('0x5'),'afterDestroy':_0x84d2('0x6')};function emitEvent(_0x1fb977){return function(_0x435c9f,_0x4e1c02,_0x4217d6){DashboardEvents[_0x84d2('0x7')](_0x1fb977+':'+_0x435c9f['id'],_0x435c9f);DashboardEvents[_0x84d2('0x7')](_0x1fb977,_0x435c9f);_0x4217d6(null);};}for(var e in events){if(events[_0x84d2('0x8')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0x84d2('0x9')]=DashboardEvents;
\ No newline at end of file
index 95aaecb..94dd78a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc171=['moment','bluebird','request-promise','path','rimraf','./dashboard.attributes','define','Dashboard','dashboards','../../config/logger','api'];(function(_0x365be9,_0x3c88b9){var _0x185c12=function(_0xbadbbf){while(--_0xbadbbf){_0x365be9['push'](_0x365be9['shift']());}};_0x185c12(++_0x3c88b9);}(_0xc171,0x6c));var _0x1c17=function(_0x4a489f,_0x5402ab){_0x4a489f=_0x4a489f-0x0;var _0x4a4137=_0xc171[_0x4a489f];return _0x4a4137;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1c17('0x0'))(_0x1c17('0x1'));var moment=require(_0x1c17('0x2'));var BPromise=require(_0x1c17('0x3'));var rp=require(_0x1c17('0x4'));var fs=require('fs');var path=require(_0x1c17('0x5'));var rimraf=require(_0x1c17('0x6'));var config=require('../../config/environment');var attributes=require(_0x1c17('0x7'));module['exports']=function(_0x56ca24,_0xbc390a){return _0x56ca24[_0x1c17('0x8')](_0x1c17('0x9'),attributes,{'tableName':_0x1c17('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4dc2=['rimraf','../../config/environment','./dashboard.attributes','Dashboard','dashboards','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4cd0b3,_0x343c1b){var _0x4f8359=function(_0x4c1e7a){while(--_0x4c1e7a){_0x4cd0b3['push'](_0x4cd0b3['shift']());}};_0x4f8359(++_0x343c1b);}(_0x4dc2,0xf5));var _0x24dc=function(_0x2b8ec0,_0x46e9fe){_0x2b8ec0=_0x2b8ec0-0x0;var _0x6fe85c=_0x4dc2[_0x2b8ec0];return _0x6fe85c;};'use strict';var _=require(_0x24dc('0x0'));var util=require(_0x24dc('0x1'));var logger=require(_0x24dc('0x2'))(_0x24dc('0x3'));var moment=require(_0x24dc('0x4'));var BPromise=require('bluebird');var rp=require(_0x24dc('0x5'));var fs=require('fs');var path=require(_0x24dc('0x6'));var rimraf=require(_0x24dc('0x7'));var config=require(_0x24dc('0x8'));var attributes=require(_0x24dc('0x9'));module['exports']=function(_0x3a1844,_0x48471c){return _0x3a1844['define'](_0x24dc('0xa'),attributes,{'tableName':_0x24dc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 148425e..5346c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb391=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xb391,0x178));var _0x1b39=function(_0x409186,_0x4b8b73){_0x409186=_0x409186-0x0;var _0x3deb43=_0xb391[_0x409186];return _0x3deb43;};'use strict';var _=require(_0x1b39('0x0'));var util=require(_0x1b39('0x1'));var moment=require(_0x1b39('0x2'));var BPromise=require('bluebird');var rs=require(_0x1b39('0x3'));var fs=require('fs');var Redis=require(_0x1b39('0x4'));var db=require(_0x1b39('0x5'))['db'];var utils=require(_0x1b39('0x6'));var logger=require(_0x1b39('0x7'))(_0x1b39('0x8'));var config=require(_0x1b39('0x9'));var jayson=require(_0x1b39('0xa'));var client=jayson[_0x1b39('0xb')][_0x1b39('0xc')]({'port':0x232a});config[_0x1b39('0xd')]=_[_0x1b39('0xe')](config[_0x1b39('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x1b39('0xf'))(new Redis(config[_0x1b39('0xd')]));require('./dashboard.socket')['register'](socket);function respondWithRpcPromise(_0x77006f,_0x843947,_0x2da33c){return new BPromise(function(_0x426d32,_0x432ece){return client[_0x1b39('0x10')](_0x77006f,_0x2da33c)[_0x1b39('0x11')](function(_0x510a43){logger['info'](_0x1b39('0x12'),_0x843947,_0x1b39('0x13'));logger[_0x1b39('0x14')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x843947,_0x1b39('0x13'),JSON[_0x1b39('0x15')](_0x510a43));if(_0x510a43['error']){if(_0x510a43[_0x1b39('0x16')]['code']===0x1f4){logger['error']('Dashboard,\x20%s,\x20%s',_0x843947,_0x510a43[_0x1b39('0x16')][_0x1b39('0x17')]);return _0x432ece(_0x510a43[_0x1b39('0x16')][_0x1b39('0x17')]);}logger['error'](_0x1b39('0x12'),_0x843947,_0x510a43['error'][_0x1b39('0x17')]);return _0x426d32(_0x510a43[_0x1b39('0x16')][_0x1b39('0x17')]);}else{logger['info'](_0x1b39('0x12'),_0x843947,_0x1b39('0x13'));_0x426d32(_0x510a43['result'][_0x1b39('0x17')]);}})[_0x1b39('0x18')](function(_0x4045b8){logger[_0x1b39('0x16')](_0x1b39('0x12'),_0x843947,_0x4045b8);_0x432ece(_0x4045b8);});});}
\ No newline at end of file
+var _0xd531=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x17be9d,_0x5407f7){var _0x444ca1=function(_0x36661d){while(--_0x36661d){_0x17be9d['push'](_0x17be9d['shift']());}};_0x444ca1(++_0x5407f7);}(_0xd531,0x84));var _0x1d53=function(_0x12e71b,_0x449c34){_0x12e71b=_0x12e71b-0x0;var _0x3f0bda=_0xd531[_0x12e71b];return _0x3f0bda;};'use strict';var _=require(_0x1d53('0x0'));var util=require(_0x1d53('0x1'));var moment=require('moment');var BPromise=require(_0x1d53('0x2'));var rs=require(_0x1d53('0x3'));var fs=require('fs');var Redis=require(_0x1d53('0x4'));var db=require(_0x1d53('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1d53('0x6'))(_0x1d53('0x7'));var config=require('../../config/environment');var jayson=require(_0x1d53('0x8'));var client=jayson[_0x1d53('0x9')][_0x1d53('0xa')]({'port':0x232a});config[_0x1d53('0xb')]=_[_0x1d53('0xc')](config[_0x1d53('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1d53('0xd'))(new Redis(config[_0x1d53('0xb')]));require(_0x1d53('0xe'))['register'](socket);function respondWithRpcPromise(_0x526f2f,_0x15ff98,_0x45e4c6){return new BPromise(function(_0xb9294a,_0x44d415){return client[_0x1d53('0xf')](_0x526f2f,_0x45e4c6)[_0x1d53('0x10')](function(_0x6e8889){logger[_0x1d53('0x11')](_0x1d53('0x12'),_0x15ff98,_0x1d53('0x13'));logger[_0x1d53('0x14')](_0x1d53('0x15'),_0x15ff98,_0x1d53('0x13'),JSON['stringify'](_0x6e8889));if(_0x6e8889['error']){if(_0x6e8889[_0x1d53('0x16')][_0x1d53('0x17')]===0x1f4){logger[_0x1d53('0x16')](_0x1d53('0x12'),_0x15ff98,_0x6e8889[_0x1d53('0x16')][_0x1d53('0x18')]);return _0x44d415(_0x6e8889['error'][_0x1d53('0x18')]);}logger[_0x1d53('0x16')]('Dashboard,\x20%s,\x20%s',_0x15ff98,_0x6e8889[_0x1d53('0x16')][_0x1d53('0x18')]);return _0xb9294a(_0x6e8889[_0x1d53('0x16')][_0x1d53('0x18')]);}else{logger[_0x1d53('0x11')](_0x1d53('0x12'),_0x15ff98,_0x1d53('0x13'));_0xb9294a(_0x6e8889[_0x1d53('0x19')][_0x1d53('0x18')]);}})[_0x1d53('0x1a')](function(_0x3bcf15){logger[_0x1d53('0x16')](_0x1d53('0x12'),_0x15ff98,_0x3bcf15);_0x44d415(_0x3bcf15);});});}
\ No newline at end of file
index 6b62a2f..9dcb9c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0c5=['emit','register','dashboard:','./dashboard.events','save'];(function(_0x12e90b,_0xbb857b){var _0x188e39=function(_0x296227){while(--_0x296227){_0x12e90b['push'](_0x12e90b['shift']());}};_0x188e39(++_0xbb857b);}(_0xd0c5,0x1bb));var _0x5d0c=function(_0x1615b5,_0x4b642c){_0x1615b5=_0x1615b5-0x0;var _0x311e75=_0xd0c5[_0x1615b5];return _0x311e75;};'use strict';var DashboardEvents=require(_0x5d0c('0x0'));var events=[_0x5d0c('0x1'),'remove','update'];function createListener(_0x350d0f,_0xbf4ff8){return function(_0x115987){_0xbf4ff8[_0x5d0c('0x2')](_0x350d0f,_0x115987);};}function removeListener(_0x946bb0,_0x3ec0c7){return function(){DashboardEvents['removeListener'](_0x946bb0,_0x3ec0c7);};}exports[_0x5d0c('0x3')]=function(_0x459b6f){for(var _0x372ba9=0x0,_0x446475=events['length'];_0x372ba9<_0x446475;_0x372ba9++){var _0x457b57=events[_0x372ba9];var _0x27ab1a=createListener(_0x5d0c('0x4')+_0x457b57,_0x459b6f);DashboardEvents['on'](_0x457b57,_0x27ab1a);}};
\ No newline at end of file
+var _0xe045=['update','emit','removeListener','register','length','dashboard:','./dashboard.events','save','remove'];(function(_0x553ba0,_0x33ffbd){var _0xb8155=function(_0x2eb063){while(--_0x2eb063){_0x553ba0['push'](_0x553ba0['shift']());}};_0xb8155(++_0x33ffbd);}(_0xe045,0x114));var _0x5e04=function(_0x2a5803,_0x3f335f){_0x2a5803=_0x2a5803-0x0;var _0x2409c5=_0xe045[_0x2a5803];return _0x2409c5;};'use strict';var DashboardEvents=require(_0x5e04('0x0'));var events=[_0x5e04('0x1'),_0x5e04('0x2'),_0x5e04('0x3')];function createListener(_0x4b1386,_0x25c8a3){return function(_0x42c892){_0x25c8a3[_0x5e04('0x4')](_0x4b1386,_0x42c892);};}function removeListener(_0x43edd5,_0x37c18b){return function(){DashboardEvents[_0x5e04('0x5')](_0x43edd5,_0x37c18b);};}exports[_0x5e04('0x6')]=function(_0x3c6d3f){for(var _0x2544ef=0x0,_0x2e0e26=events[_0x5e04('0x7')];_0x2544ef<_0x2e0e26;_0x2544ef++){var _0x58a0fb=events[_0x2544ef];var _0x6a7ea1=createListener(_0x5e04('0x8')+_0x58a0fb,_0x3c6d3f);DashboardEvents['on'](_0x58a0fb,_0x6a7ea1);}};
\ No newline at end of file
index 96147e3..3b3e07d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2505=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/items','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','util'];(function(_0x4bf711,_0x35fea1){var _0x305ef5=function(_0x13bd54){while(--_0x13bd54){_0x4bf711['push'](_0x4bf711['shift']());}};_0x305ef5(++_0x35fea1);}(_0x2505,0x76));var _0x5250=function(_0x55b4a7,_0x40bb05){_0x55b4a7=_0x55b4a7-0x0;var _0xcd7cfc=_0x2505[_0x55b4a7];return _0xcd7cfc;};'use strict';var multer=require(_0x5250('0x0'));var util=require(_0x5250('0x1'));var path=require('path');var timeout=require(_0x5250('0x2'));var express=require(_0x5250('0x3'));var router=express[_0x5250('0x4')]();var fs_extra=require(_0x5250('0x5'));var auth=require(_0x5250('0x6'));var interaction=require(_0x5250('0x7'));var config=require(_0x5250('0x8'));var controller=require('./dashboard.controller');router['get']('/',auth[_0x5250('0x9')](),controller[_0x5250('0xa')]);router[_0x5250('0xb')](_0x5250('0xc'),auth[_0x5250('0x9')](),controller[_0x5250('0xd')]);router['get'](_0x5250('0xe'),auth[_0x5250('0x9')](),controller['getItems']);router[_0x5250('0xf')]('/',auth[_0x5250('0x9')](),controller[_0x5250('0x10')]);router[_0x5250('0xf')](_0x5250('0x11'),auth[_0x5250('0x9')](),controller[_0x5250('0x12')]);router[_0x5250('0xf')](_0x5250('0xe'),auth[_0x5250('0x9')](),controller['addItem']);router[_0x5250('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x5250('0x14')]);router[_0x5250('0x15')]('/:id',auth[_0x5250('0x9')](),controller[_0x5250('0x16')]);module[_0x5250('0x17')]=router;
\ No newline at end of file
+var _0x91a5=['exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/items','create','post','/:id/clone','addItem','put','update','destroy'];(function(_0x51c52b,_0x147712){var _0x581ce3=function(_0x2e61a0){while(--_0x2e61a0){_0x51c52b['push'](_0x51c52b['shift']());}};_0x581ce3(++_0x147712);}(_0x91a5,0x79));var _0x591a=function(_0x485201,_0x3c533a){_0x485201=_0x485201-0x0;var _0x9ca98a=_0x91a5[_0x485201];return _0x9ca98a;};'use strict';var multer=require('multer');var util=require(_0x591a('0x0'));var path=require('path');var timeout=require(_0x591a('0x1'));var express=require('express');var router=express[_0x591a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x591a('0x3'));var interaction=require(_0x591a('0x4'));var config=require(_0x591a('0x5'));var controller=require('./dashboard.controller');router[_0x591a('0x6')]('/',auth[_0x591a('0x7')](),controller[_0x591a('0x8')]);router['get'](_0x591a('0x9'),auth[_0x591a('0x7')](),controller[_0x591a('0xa')]);router['get'](_0x591a('0xb'),auth['isAuthenticated'](),controller['getItems']);router['post']('/',auth[_0x591a('0x7')](),controller[_0x591a('0xc')]);router[_0x591a('0xd')](_0x591a('0xe'),auth[_0x591a('0x7')](),controller['clone']);router[_0x591a('0xd')](_0x591a('0xb'),auth[_0x591a('0x7')](),controller[_0x591a('0xf')]);router[_0x591a('0x10')](_0x591a('0x9'),auth[_0x591a('0x7')](),controller[_0x591a('0x11')]);router['delete'](_0x591a('0x9'),auth[_0x591a('0x7')](),controller[_0x591a('0x12')]);module[_0x591a('0x13')]=router;
\ No newline at end of file
index 36b1218..2e3ac9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['#ffffff','sequelize','exports','TEXT','long','parse','getDataValue','attrs','setDataValue','INTEGER','STRING'];(function(_0x252328,_0x4c22f0){var _0xaa85b7=function(_0x2623d0){while(--_0x2623d0){_0x252328['push'](_0x252328['shift']());}};_0xaa85b7(++_0x4c22f0);}(_0x0295,0x1f0));var _0x5029=function(_0x36888d,_0x22988e){_0x36888d=_0x36888d-0x0;var _0x14f524=_0x0295[_0x36888d];return _0x14f524;};'use strict';var Sequelize=require(_0x5029('0x0'));var squel=require('squel');var _=require('lodash');module[_0x5029('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x5029('0x2')](_0x5029('0x3')),'get':function(){try{return JSON[_0x5029('0x4')](this[_0x5029('0x5')](_0x5029('0x6')));}catch(_0x69a497){return[];}},'set':function(_0x200217){try{this[_0x5029('0x7')](_0x5029('0x6'),JSON['stringify'](_0x200217));}catch(_0x54978f){this['setDataValue'](_0x5029('0x6'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x5029('0x8')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5029('0x8')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x5029('0x9')],'allowNull':![],'defaultValue':_0x5029('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x5029('0x9')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5029('0x9')]},'titleFontSize':{'type':Sequelize[_0x5029('0x8')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x9536=['squel','lodash','exports','STRING','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize'];(function(_0x2e1719,_0x393e53){var _0x4432eb=function(_0x3ff081){while(--_0x3ff081){_0x2e1719['push'](_0x2e1719['shift']());}};_0x4432eb(++_0x393e53);}(_0x9536,0x179));var _0x6953=function(_0x2a238a,_0x1d5054){_0x2a238a=_0x2a238a-0x0;var _0xeef802=_0x9536[_0x2a238a];return _0xeef802;};'use strict';var Sequelize=require(_0x6953('0x0'));var squel=require(_0x6953('0x1'));var _=require(_0x6953('0x2'));module[_0x6953('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6953('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x6953('0x5')),'get':function(){try{return JSON[_0x6953('0x6')](this[_0x6953('0x7')](_0x6953('0x8')));}catch(_0x2f3cc3){return[];}},'set':function(_0x494ac2){try{this[_0x6953('0x9')](_0x6953('0x8'),JSON[_0x6953('0xa')](_0x494ac2));}catch(_0x3e1aff){this[_0x6953('0x9')]('attrs',JSON[_0x6953('0xa')]([]));}}},'sizeX':{'type':Sequelize[_0x6953('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6953('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x6953('0xb')]},'background':{'type':Sequelize[_0x6953('0x4')],'allowNull':![],'defaultValue':_0x6953('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x6953('0x4')],'allowNull':![],'defaultValue':_0x6953('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6953('0x4')]},'titleFontSize':{'type':Sequelize[_0x6953('0xb')],'defaultValue':0xc}};
\ No newline at end of file
index 46f3988..b012f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','save','update','then','error','name','send','show','params','model','keys','rawAttributes','query','filters','intersection','fields','length','attributes','includeAll','merge','options','DashboardItem','find','catch','destroy','type','iframe','attrUrl','attrs','attrPath','value','clock','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','create','body','eml-format','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','./dashboardItem.socket'];(function(_0x3cd133,_0x222fcb){var _0x2512c8=function(_0x484491){while(--_0x484491){_0x3cd133['push'](_0x3cd133['shift']());}};_0x2512c8(++_0x222fcb);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x3a0d11,_0x5944f2){_0x3a0d11=_0x3a0d11-0x0;var _0x3a7821=_0x4d9e[_0x3a0d11];return _0x3a7821;};'use strict';var emlformat=require(_0xe4d9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe4d9('0x1'));var rp=require('request-promise');var moment=require(_0xe4d9('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe4d9('0x3'));var util=require(_0xe4d9('0x4'));var path=require('path');var sox=require(_0xe4d9('0x5'));var csv=require(_0xe4d9('0x6'));var ejs=require(_0xe4d9('0x7'));var fs=require('fs');var fs_extra=require(_0xe4d9('0x8'));var _=require(_0xe4d9('0x9'));var squel=require(_0xe4d9('0xa'));var crypto=require('crypto');var jsforce=require(_0xe4d9('0xb'));var deskjs=require(_0xe4d9('0xc'));var toCsv=require(_0xe4d9('0x6'));var querystring=require(_0xe4d9('0xd'));var Papa=require(_0xe4d9('0xe'));var Redis=require(_0xe4d9('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe4d9('0x10'));var as=require(_0xe4d9('0x11'));var hardwareService=require(_0xe4d9('0x12'));var logger=require(_0xe4d9('0x13'))(_0xe4d9('0x14'));var utils=require(_0xe4d9('0x15'));var config=require(_0xe4d9('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe4d9('0x17'))[_0xe4d9('0x18')](socket);function respondWithStatusCode(_0x3f884c,_0x4bfbd5){_0x4bfbd5=_0x4bfbd5||0xcc;return function(_0x9f0442){if(_0x9f0442){return _0x3f884c[_0xe4d9('0x19')](_0x4bfbd5);}return _0x3f884c[_0xe4d9('0x1a')](_0x4bfbd5)[_0xe4d9('0x1b')]();};}function respondWithResult(_0x58d0cf,_0x331ef3){_0x331ef3=_0x331ef3||0xc8;return function(_0x35cbc2){if(_0x35cbc2){return _0x58d0cf[_0xe4d9('0x1a')](_0x331ef3)['json'](_0x35cbc2);}};}function respondWithFilteredResult(_0x4d2afd,_0x7abb80){return function(_0x112315){if(_0x112315){var _0x5ab3d1=typeof _0x7abb80[_0xe4d9('0x1c')]==='undefined'&&typeof _0x7abb80[_0xe4d9('0x1d')]===_0xe4d9('0x1e');var _0x1ea096=_0x112315[_0xe4d9('0x1f')];var _0x503570=_0x5ab3d1?0x0:_0x7abb80[_0xe4d9('0x1c')];var _0x3c2017=_0x5ab3d1?_0x112315[_0xe4d9('0x1f')]:_0x7abb80[_0xe4d9('0x1c')]+_0x7abb80[_0xe4d9('0x1d')];var _0x1146fc;if(_0x3c2017>=_0x1ea096){_0x3c2017=_0x1ea096;_0x1146fc=0xc8;}else{_0x1146fc=0xce;}_0x4d2afd[_0xe4d9('0x1a')](_0x1146fc);return _0x4d2afd[_0xe4d9('0x20')](_0xe4d9('0x21'),_0x503570+'-'+_0x3c2017+'/'+_0x1ea096)['json'](_0x112315);}return null;};}function patchUpdates(_0x44f1aa){return function(_0x26b0b2){try{jsonpatch['apply'](_0x26b0b2,_0x44f1aa,!![]);}catch(_0x189dad){return BPromise['reject'](_0x189dad);}return _0x26b0b2[_0xe4d9('0x22')]();};}function saveUpdates(_0x125320,_0x5b494d){return function(_0xfacee3){if(_0xfacee3){return _0xfacee3[_0xe4d9('0x23')](_0x125320)['then'](function(_0xc5be1b){return _0xc5be1b;});}return null;};}function removeEntity(_0x2af9b0,_0x36444c){return function(_0x5bb43b){if(_0x5bb43b){return _0x5bb43b['destroy']()[_0xe4d9('0x24')](function(){_0x2af9b0[_0xe4d9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dddd2,_0x4954b5){return function(_0x529e2b){if(!_0x529e2b){_0x5dddd2[_0xe4d9('0x19')](0x194);}return _0x529e2b;};}function handleError(_0x48d481,_0x40ffd0){_0x40ffd0=_0x40ffd0||0x1f4;return function(_0x1f3d90){logger[_0xe4d9('0x25')](_0x1f3d90['stack']);if(_0x1f3d90[_0xe4d9('0x26')]){delete _0x1f3d90[_0xe4d9('0x26')];}_0x48d481[_0xe4d9('0x1a')](_0x40ffd0)[_0xe4d9('0x27')](_0x1f3d90);};}exports[_0xe4d9('0x28')]=function(_0x1904d1,_0x21b7a9){var _0x449cb8={'raw':![],'where':{'id':_0x1904d1[_0xe4d9('0x29')]['id']}},_0x1fb637={};_0x1fb637[_0xe4d9('0x2a')]=_[_0xe4d9('0x2b')](db['DashboardItem'][_0xe4d9('0x2c')]);_0x1fb637[_0xe4d9('0x2d')]=_[_0xe4d9('0x2b')](_0x1904d1[_0xe4d9('0x2d')]);_0x1fb637[_0xe4d9('0x2e')]=_[_0xe4d9('0x2f')](_0x1fb637['model'],_0x1fb637['query']);_0x449cb8['attributes']=_[_0xe4d9('0x2f')](_0x1fb637[_0xe4d9('0x2a')],qs[_0xe4d9('0x30')](_0x1904d1['query']['fields']));_0x449cb8['attributes']=_0x449cb8['attributes'][_0xe4d9('0x31')]?_0x449cb8[_0xe4d9('0x32')]:_0x1fb637['model'];if(_0x1904d1[_0xe4d9('0x2d')][_0xe4d9('0x33')]){_0x449cb8['include']=[{'all':!![]}];}_0x449cb8=_[_0xe4d9('0x34')]({},_0x449cb8,_0x1904d1[_0xe4d9('0x35')]);return db[_0xe4d9('0x36')][_0xe4d9('0x37')](_0x449cb8)[_0xe4d9('0x24')](handleEntityNotFound(_0x21b7a9,null))[_0xe4d9('0x24')](respondWithResult(_0x21b7a9,null))[_0xe4d9('0x38')](handleError(_0x21b7a9,null));};exports[_0xe4d9('0x39')]=function(_0x3fd26a,_0x20cc89){return db[_0xe4d9('0x36')][_0xe4d9('0x37')]({'where':{'id':_0x3fd26a[_0xe4d9('0x29')]['id']}})[_0xe4d9('0x24')](handleEntityNotFound(_0x20cc89,null))['then'](removeEntity(_0x20cc89,null))[_0xe4d9('0x38')](handleError(_0x20cc89,null));};function widgetAttributes(_0x20aef6){try{switch(_0x20aef6[_0xe4d9('0x3a')]){case _0xe4d9('0x3b'):return[{'name':_0xe4d9('0x3c'),'value':_0x20aef6[_0xe4d9('0x3c')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0]['value']:undefined)||'https://'}];case'custom':return[{'name':_0xe4d9('0x3e'),'value':_0x20aef6[_0xe4d9('0x3e')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||''}];case _0xe4d9('0x40'):return[{'name':'attrHourFormat','value':_0x20aef6['attrHourFormat']||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0]['value']:undefined)||_0xe4d9('0x41')},{'name':_0xe4d9('0x42'),'value':_0x20aef6[_0xe4d9('0x42')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6['attrs'][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||_0xe4d9('0x43')},{'name':_0xe4d9('0x44'),'value':_0x20aef6[_0xe4d9('0x44')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x2]?_0x20aef6[_0xe4d9('0x3d')][0x2][_0xe4d9('0x3f')]:undefined)||0xc}];case _0xe4d9('0x45'):return[{'name':_0xe4d9('0x46'),'value':_0x20aef6['attrMetric']||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||_0xe4d9('0x47')},{'name':'attrVoiceQueues','value':_0x20aef6[_0xe4d9('0x48')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||[]},{'name':_0xe4d9('0x44'),'value':_0x20aef6[_0xe4d9('0x44')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x2]?_0x20aef6[_0xe4d9('0x3d')][0x2]['value']:undefined)||0x14}];case _0xe4d9('0x49'):case _0xe4d9('0x4a'):return[{'name':_0xe4d9('0x4b'),'value':_0x20aef6['attrSerie1']||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||_0xe4d9('0x47')},{'name':_0xe4d9('0x4c'),'value':_0x20aef6[_0xe4d9('0x4c')]||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||null},{'name':_0xe4d9('0x4d'),'value':_0x20aef6[_0xe4d9('0x4d')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6['attrs'][0x2]?_0x20aef6[_0xe4d9('0x3d')][0x2][_0xe4d9('0x3f')]:undefined)||null},{'name':_0xe4d9('0x48'),'value':_0x20aef6[_0xe4d9('0x48')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x3]?_0x20aef6['attrs'][0x3][_0xe4d9('0x3f')]:undefined)||[]}];case _0xe4d9('0x4e'):return[{'name':'attrReport','type':_0x20aef6[_0xe4d9('0x4f')]||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0]['type']:undefined)||null,'value':_0x20aef6[_0xe4d9('0x50')]||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||null},{'name':'attrRefresh','value':_0x20aef6[_0xe4d9('0x51')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6['attrs'][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||0x0}];default:return[];}}catch(_0x37af58){logger[_0xe4d9('0x25')]('widgetAttributes:\x20%s',JSON['stringify'](_0x37af58));return[];}}exports[_0xe4d9('0x52')]=function(_0x40674d,_0x13d5a3){if(_0x40674d[_0xe4d9('0x53')]){_0x40674d[_0xe4d9('0x53')][_0xe4d9('0x3d')]=widgetAttributes(_0x40674d['body']);}return db['DashboardItem'][_0xe4d9('0x52')](_0x40674d[_0xe4d9('0x53')],{})[_0xe4d9('0x24')](respondWithResult(_0x13d5a3,0xc9))[_0xe4d9('0x38')](handleError(_0x13d5a3,null));};exports[_0xe4d9('0x23')]=function(_0x390e64,_0x5893cb){if(_0x390e64[_0xe4d9('0x53')]['id']){delete _0x390e64[_0xe4d9('0x53')]['id'];}_0x390e64[_0xe4d9('0x53')]['attrs']=widgetAttributes(_0x390e64[_0xe4d9('0x53')]);return db[_0xe4d9('0x36')][_0xe4d9('0x37')]({'where':{'id':_0x390e64['params']['id']}})[_0xe4d9('0x24')](handleEntityNotFound(_0x5893cb,null))['then'](saveUpdates(_0x390e64[_0xe4d9('0x53')],null))[_0xe4d9('0x24')](respondWithResult(_0x5893cb,null))[_0xe4d9('0x38')](handleError(_0x5893cb,null));};
\ No newline at end of file
+var _0x5ffc=['attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','create','body','catch','update','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','./dashboardItem.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','end','stack','name','send','show','params','keys','DashboardItem','rawAttributes','query','filters','model','attributes','fields','length','include','merge','options','destroy','find','type','attrUrl','attrs','value','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart'];(function(_0x5237a,_0x50a79c){var _0x1715b2=function(_0x5d3312){while(--_0x5d3312){_0x5237a['push'](_0x5237a['shift']());}};_0x1715b2(++_0x50a79c);}(_0x5ffc,0x16e));var _0xc5ff=function(_0x346caa,_0x46888d){_0x346caa=_0x346caa-0x0;var _0x1f4548=_0x5ffc[_0x346caa];return _0x1f4548;};'use strict';var emlformat=require(_0xc5ff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc5ff('0x1'));var jsonpatch=require(_0xc5ff('0x2'));var rp=require(_0xc5ff('0x3'));var moment=require(_0xc5ff('0x4'));var BPromise=require(_0xc5ff('0x5'));var Mustache=require(_0xc5ff('0x6'));var util=require(_0xc5ff('0x7'));var path=require(_0xc5ff('0x8'));var sox=require('sox');var csv=require(_0xc5ff('0x9'));var ejs=require(_0xc5ff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc5ff('0xb'));var squel=require(_0xc5ff('0xc'));var crypto=require(_0xc5ff('0xd'));var jsforce=require(_0xc5ff('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc5ff('0xf'));var qs=require(_0xc5ff('0x10'));var as=require(_0xc5ff('0x11'));var hardwareService=require(_0xc5ff('0x12'));var logger=require(_0xc5ff('0x13'))(_0xc5ff('0x14'));var utils=require(_0xc5ff('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc5ff('0x16'))['db'];config[_0xc5ff('0x17')]=_['defaults'](config['redis'],{'host':_0xc5ff('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc5ff('0x17')]));require(_0xc5ff('0x19'))[_0xc5ff('0x1a')](socket);function respondWithStatusCode(_0x35b06c,_0x42318f){_0x42318f=_0x42318f||0xcc;return function(_0x286870){if(_0x286870){return _0x35b06c[_0xc5ff('0x1b')](_0x42318f);}return _0x35b06c['status'](_0x42318f)['end']();};}function respondWithResult(_0x8b3262,_0x4725e6){_0x4725e6=_0x4725e6||0xc8;return function(_0x2bbf65){if(_0x2bbf65){return _0x8b3262[_0xc5ff('0x1c')](_0x4725e6)[_0xc5ff('0x1d')](_0x2bbf65);}};}function respondWithFilteredResult(_0x152faf,_0x595551){return function(_0x2af641){if(_0x2af641){var _0x35f662=typeof _0x595551[_0xc5ff('0x1e')]===_0xc5ff('0x1f')&&typeof _0x595551[_0xc5ff('0x20')]===_0xc5ff('0x1f');var _0x3ade23=_0x2af641['count'];var _0x9027ff=_0x35f662?0x0:_0x595551['offset'];var _0x1f891b=_0x35f662?_0x2af641[_0xc5ff('0x21')]:_0x595551[_0xc5ff('0x1e')]+_0x595551['limit'];var _0xf68878;if(_0x1f891b>=_0x3ade23){_0x1f891b=_0x3ade23;_0xf68878=0xc8;}else{_0xf68878=0xce;}_0x152faf[_0xc5ff('0x1c')](_0xf68878);return _0x152faf[_0xc5ff('0x22')](_0xc5ff('0x23'),_0x9027ff+'-'+_0x1f891b+'/'+_0x3ade23)[_0xc5ff('0x1d')](_0x2af641);}return null;};}function patchUpdates(_0x516e8){return function(_0x8a1247){try{jsonpatch[_0xc5ff('0x24')](_0x8a1247,_0x516e8,!![]);}catch(_0x2bae9c){return BPromise[_0xc5ff('0x25')](_0x2bae9c);}return _0x8a1247['save']();};}function saveUpdates(_0x2b1b82,_0x402dc7){return function(_0x4a4833){if(_0x4a4833){return _0x4a4833['update'](_0x2b1b82)['then'](function(_0x5763d1){return _0x5763d1;});}return null;};}function removeEntity(_0x742162,_0x321608){return function(_0x106706){if(_0x106706){return _0x106706['destroy']()[_0xc5ff('0x26')](function(){_0x742162['status'](0xcc)[_0xc5ff('0x27')]();});}};}function handleEntityNotFound(_0x391435,_0x834177){return function(_0x2dd00b){if(!_0x2dd00b){_0x391435[_0xc5ff('0x1b')](0x194);}return _0x2dd00b;};}function handleError(_0x355d38,_0x4e9c4c){_0x4e9c4c=_0x4e9c4c||0x1f4;return function(_0x5f2944){logger['error'](_0x5f2944[_0xc5ff('0x28')]);if(_0x5f2944[_0xc5ff('0x29')]){delete _0x5f2944[_0xc5ff('0x29')];}_0x355d38[_0xc5ff('0x1c')](_0x4e9c4c)[_0xc5ff('0x2a')](_0x5f2944);};}exports[_0xc5ff('0x2b')]=function(_0x377a19,_0x32e0be){var _0x4bab7f={'raw':![],'where':{'id':_0x377a19[_0xc5ff('0x2c')]['id']}},_0x162b90={};_0x162b90['model']=_[_0xc5ff('0x2d')](db[_0xc5ff('0x2e')][_0xc5ff('0x2f')]);_0x162b90[_0xc5ff('0x30')]=_[_0xc5ff('0x2d')](_0x377a19[_0xc5ff('0x30')]);_0x162b90[_0xc5ff('0x31')]=_['intersection'](_0x162b90[_0xc5ff('0x32')],_0x162b90[_0xc5ff('0x30')]);_0x4bab7f[_0xc5ff('0x33')]=_['intersection'](_0x162b90[_0xc5ff('0x32')],qs[_0xc5ff('0x34')](_0x377a19['query'][_0xc5ff('0x34')]));_0x4bab7f[_0xc5ff('0x33')]=_0x4bab7f[_0xc5ff('0x33')][_0xc5ff('0x35')]?_0x4bab7f['attributes']:_0x162b90['model'];if(_0x377a19[_0xc5ff('0x30')]['includeAll']){_0x4bab7f[_0xc5ff('0x36')]=[{'all':!![]}];}_0x4bab7f=_[_0xc5ff('0x37')]({},_0x4bab7f,_0x377a19[_0xc5ff('0x38')]);return db[_0xc5ff('0x2e')]['find'](_0x4bab7f)[_0xc5ff('0x26')](handleEntityNotFound(_0x32e0be,null))[_0xc5ff('0x26')](respondWithResult(_0x32e0be,null))['catch'](handleError(_0x32e0be,null));};exports[_0xc5ff('0x39')]=function(_0x209cc7,_0x51f9a7){return db['DashboardItem'][_0xc5ff('0x3a')]({'where':{'id':_0x209cc7[_0xc5ff('0x2c')]['id']}})['then'](handleEntityNotFound(_0x51f9a7,null))[_0xc5ff('0x26')](removeEntity(_0x51f9a7,null))['catch'](handleError(_0x51f9a7,null));};function widgetAttributes(_0x52981d){try{switch(_0x52981d[_0xc5ff('0x3b')]){case'iframe':return[{'name':_0xc5ff('0x3c'),'value':_0x52981d['attrUrl']||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d[_0xc5ff('0x3d')][0x0][_0xc5ff('0x3e')]:undefined)||'https://'}];case'custom':return[{'name':_0xc5ff('0x3f'),'value':_0x52981d[_0xc5ff('0x3f')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d[_0xc5ff('0x3d')][0x0]['value']:undefined)||''}];case _0xc5ff('0x40'):return[{'name':_0xc5ff('0x41'),'value':_0x52981d[_0xc5ff('0x41')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d[_0xc5ff('0x3d')][0x0]['value']:undefined)||_0xc5ff('0x42')},{'name':_0xc5ff('0x43'),'value':_0x52981d[_0xc5ff('0x43')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x1]?_0x52981d[_0xc5ff('0x3d')][0x1][_0xc5ff('0x3e')]:undefined)||'0.00'},{'name':_0xc5ff('0x44'),'value':_0x52981d[_0xc5ff('0x44')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x2]?_0x52981d[_0xc5ff('0x3d')][0x2][_0xc5ff('0x3e')]:undefined)||0xc}];case'counter':return[{'name':_0xc5ff('0x45'),'value':_0x52981d[_0xc5ff('0x45')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d[_0xc5ff('0x3d')][0x0][_0xc5ff('0x3e')]:undefined)||_0xc5ff('0x46')},{'name':_0xc5ff('0x47'),'value':_0x52981d[_0xc5ff('0x47')]||(_0x52981d['attrs']&&_0x52981d['attrs'][0x1]?_0x52981d[_0xc5ff('0x3d')][0x1]['value']:undefined)||[]},{'name':_0xc5ff('0x44'),'value':_0x52981d[_0xc5ff('0x44')]||(_0x52981d['attrs']&&_0x52981d[_0xc5ff('0x3d')][0x2]?_0x52981d[_0xc5ff('0x3d')][0x2][_0xc5ff('0x3e')]:undefined)||0x14}];case _0xc5ff('0x48'):case _0xc5ff('0x49'):return[{'name':'attrSerie1','value':_0x52981d[_0xc5ff('0x4a')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d[_0xc5ff('0x3d')][0x0][_0xc5ff('0x3e')]:undefined)||_0xc5ff('0x46')},{'name':_0xc5ff('0x4b'),'value':_0x52981d[_0xc5ff('0x4b')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x1]?_0x52981d[_0xc5ff('0x3d')][0x1][_0xc5ff('0x3e')]:undefined)||null},{'name':'attrSerie3','value':_0x52981d[_0xc5ff('0x4c')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x2]?_0x52981d[_0xc5ff('0x3d')][0x2][_0xc5ff('0x3e')]:undefined)||null},{'name':_0xc5ff('0x47'),'value':_0x52981d[_0xc5ff('0x47')]||(_0x52981d['attrs']&&_0x52981d[_0xc5ff('0x3d')][0x3]?_0x52981d[_0xc5ff('0x3d')][0x3][_0xc5ff('0x3e')]:undefined)||[]}];case _0xc5ff('0x4d'):return[{'name':_0xc5ff('0x4e'),'type':_0x52981d[_0xc5ff('0x4f')]||(_0x52981d[_0xc5ff('0x3d')]&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d['attrs'][0x0]['type']:undefined)||null,'value':_0x52981d['attrReport']||(_0x52981d['attrs']&&_0x52981d[_0xc5ff('0x3d')][0x0]?_0x52981d[_0xc5ff('0x3d')][0x0][_0xc5ff('0x3e')]:undefined)||null},{'name':_0xc5ff('0x50'),'value':_0x52981d[_0xc5ff('0x50')]||(_0x52981d['attrs']&&_0x52981d['attrs'][0x1]?_0x52981d[_0xc5ff('0x3d')][0x1][_0xc5ff('0x3e')]:undefined)||0x0}];default:return[];}}catch(_0x219c0c){logger[_0xc5ff('0x51')](_0xc5ff('0x52'),JSON[_0xc5ff('0x53')](_0x219c0c));return[];}}exports[_0xc5ff('0x54')]=function(_0x281fea,_0x5694a3){if(_0x281fea[_0xc5ff('0x55')]){_0x281fea['body'][_0xc5ff('0x3d')]=widgetAttributes(_0x281fea[_0xc5ff('0x55')]);}return db[_0xc5ff('0x2e')][_0xc5ff('0x54')](_0x281fea['body'],{})[_0xc5ff('0x26')](respondWithResult(_0x5694a3,0xc9))[_0xc5ff('0x56')](handleError(_0x5694a3,null));};exports[_0xc5ff('0x57')]=function(_0x47f4f7,_0x16c055){if(_0x47f4f7[_0xc5ff('0x55')]['id']){delete _0x47f4f7['body']['id'];}_0x47f4f7[_0xc5ff('0x55')][_0xc5ff('0x3d')]=widgetAttributes(_0x47f4f7[_0xc5ff('0x55')]);return db[_0xc5ff('0x2e')][_0xc5ff('0x3a')]({'where':{'id':_0x47f4f7[_0xc5ff('0x2c')]['id']}})[_0xc5ff('0x26')](handleEntityNotFound(_0x16c055,null))[_0xc5ff('0x26')](saveUpdates(_0x47f4f7[_0xc5ff('0x55')],null))[_0xc5ff('0x26')](respondWithResult(_0x16c055,null))[_0xc5ff('0x56')](handleError(_0x16c055,null));};
\ No newline at end of file
index c73a16e..64289f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0b=['save','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners'];(function(_0x57c49f,_0xcb8a68){var _0x22340c=function(_0x5d75d5){while(--_0x5d75d5){_0x57c49f['push'](_0x57c49f['shift']());}};_0x22340c(++_0xcb8a68);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x2c41c8,_0x33d894){_0x2c41c8=_0x2c41c8-0x0;var _0xed347d=_0x6a0b[_0x2c41c8];return _0xed347d;};'use strict';var EventEmitter=require(_0xb6a0('0x0'));var DashboardItem=require('../../mysqldb')['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xb6a0('0x1')](0x0);var events={'afterCreate':_0xb6a0('0x2'),'afterUpdate':'update','afterDestroy':_0xb6a0('0x3')};function emitEvent(_0x3e5b73){return function(_0x1505b1,_0x557a99,_0x4652da){DashboardItemEvents['emit'](_0x3e5b73+':'+_0x1505b1['id'],_0x1505b1);DashboardItemEvents[_0xb6a0('0x4')](_0x3e5b73,_0x1505b1);_0x4652da(null);};}for(var e in events){if(events[_0xb6a0('0x5')](e)){var event=events[e];DashboardItem[_0xb6a0('0x6')](e,emitEvent(event));}}module[_0xb6a0('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x63a6=['DashboardItem','save','update','hook','exports','../../mysqldb'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x63a6,0x1c7));var _0x663a=function(_0x54a6e7,_0xe3895c){_0x54a6e7=_0x54a6e7-0x0;var _0x8b5cce=_0x63a6[_0x54a6e7];return _0x8b5cce;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0x663a('0x0'))['db'][_0x663a('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x663a('0x2'),'afterUpdate':_0x663a('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2a63c6){return function(_0x2a1a20,_0x10be49,_0x125e93){DashboardItemEvents['emit'](_0x2a63c6+':'+_0x2a1a20['id'],_0x2a1a20);DashboardItemEvents['emit'](_0x2a63c6,_0x2a1a20);_0x125e93(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x663a('0x4')](e,emitEvent(event));}}module[_0x663a('0x5')]=DashboardItemEvents;
\ No newline at end of file
index 098d67a..dda8107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a1=['dashboard_items','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem'];(function(_0xf33ea3,_0x50c4be){var _0x99f38a=function(_0x241c0f){while(--_0x241c0f){_0xf33ea3['push'](_0xf33ea3['shift']());}};_0x99f38a(++_0x50c4be);}(_0xc4a1,0x1ef));var _0x1c4a=function(_0x366b05,_0x1afe70){_0x366b05=_0x366b05-0x0;var _0x393ffb=_0xc4a1[_0x366b05];return _0x393ffb;};'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 _0x13c4=['moment','bluebird','../../config/environment','./dashboardItem.attributes','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api'];(function(_0x1f53ae,_0x3e98bb){var _0x252b12=function(_0x1d5dbc){while(--_0x1d5dbc){_0x1f53ae['push'](_0x1f53ae['shift']());}};_0x252b12(++_0x3e98bb);}(_0x13c4,0xf9));var _0x413c=function(_0x420a69,_0x1ce835){_0x420a69=_0x420a69-0x0;var _0x33d4f1=_0x13c4[_0x420a69];return _0x33d4f1;};'use strict';var _=require(_0x413c('0x0'));var util=require(_0x413c('0x1'));var logger=require(_0x413c('0x2'))(_0x413c('0x3'));var moment=require(_0x413c('0x4'));var BPromise=require(_0x413c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x413c('0x6'));var attributes=require(_0x413c('0x7'));module['exports']=function(_0x3c7301,_0x3f4567){return _0x3c7301[_0x413c('0x8')](_0x413c('0x9'),attributes,{'tableName':_0x413c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c59943..c7ade33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41c8=['error','code','message','result','lodash','util','moment','bluebird','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4c55f0,_0x6b710d){var _0x24c6db=function(_0x1274ff){while(--_0x1274ff){_0x4c55f0['push'](_0x4c55f0['shift']());}};_0x24c6db(++_0x6b710d);}(_0x41c8,0xa5));var _0x841c=function(_0x312af1,_0x4e8934){_0x312af1=_0x312af1-0x0;var _0x44e008=_0x41c8[_0x312af1];return _0x44e008;};'use strict';var _=require(_0x841c('0x0'));var util=require(_0x841c('0x1'));var moment=require(_0x841c('0x2'));var BPromise=require(_0x841c('0x3'));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(_0x841c('0x4'))('rpc');var config=require(_0x841c('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x841c('0x6')](config[_0x841c('0x7')],{'host':_0x841c('0x8'),'port':0x18eb});var socket=require(_0x841c('0x9'))(new Redis(config[_0x841c('0x7')]));require('./dashboardItem.socket')[_0x841c('0xa')](socket);function respondWithRpcPromise(_0x21b754,_0x5d1cda,_0x8f5f65){return new BPromise(function(_0x50313a,_0x2af8fa){return client[_0x841c('0xb')](_0x21b754,_0x8f5f65)[_0x841c('0xc')](function(_0x17c46a){logger[_0x841c('0xd')](_0x841c('0xe'),_0x5d1cda,_0x841c('0xf'));logger[_0x841c('0x10')](_0x841c('0x11'),_0x5d1cda,_0x841c('0xf'),JSON[_0x841c('0x12')](_0x17c46a));if(_0x17c46a[_0x841c('0x13')]){if(_0x17c46a[_0x841c('0x13')][_0x841c('0x14')]===0x1f4){logger[_0x841c('0x13')]('DashboardItem,\x20%s,\x20%s',_0x5d1cda,_0x17c46a[_0x841c('0x13')][_0x841c('0x15')]);return _0x2af8fa(_0x17c46a['error'][_0x841c('0x15')]);}logger['error'](_0x841c('0xe'),_0x5d1cda,_0x17c46a[_0x841c('0x13')][_0x841c('0x15')]);return _0x50313a(_0x17c46a[_0x841c('0x13')][_0x841c('0x15')]);}else{logger['info'](_0x841c('0xe'),_0x5d1cda,'request\x20sent');_0x50313a(_0x17c46a[_0x841c('0x16')][_0x841c('0x15')]);}})['catch'](function(_0xac3f99){logger['error'](_0x841c('0xe'),_0x5d1cda,_0xac3f99);_0x2af8fa(_0xac3f99);});});}
\ No newline at end of file
+var _0x4644=['http','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','request','then','info','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client'];(function(_0x5a307f,_0x202e67){var _0x21b568=function(_0x1a2466){while(--_0x1a2466){_0x5a307f['push'](_0x5a307f['shift']());}};_0x21b568(++_0x202e67);}(_0x4644,0x7a));var _0x4464=function(_0x1ad498,_0x36eaa9){_0x1ad498=_0x1ad498-0x0;var _0x3a0d94=_0x4644[_0x1ad498];return _0x3a0d94;};'use strict';var _=require('lodash');var util=require(_0x4464('0x0'));var moment=require('moment');var BPromise=require(_0x4464('0x1'));var rs=require(_0x4464('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4464('0x3'))['db'];var utils=require(_0x4464('0x4'));var logger=require(_0x4464('0x5'))('rpc');var config=require(_0x4464('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4464('0x7')][_0x4464('0x8')]({'port':0x232a});config[_0x4464('0x9')]=_[_0x4464('0xa')](config[_0x4464('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x4464('0xb'))(new Redis(config[_0x4464('0x9')]));require(_0x4464('0xc'))[_0x4464('0xd')](socket);function respondWithRpcPromise(_0x3b7b9b,_0x50e4af,_0x5afba9){return new BPromise(function(_0xb5fe92,_0x370885){return client[_0x4464('0xe')](_0x3b7b9b,_0x5afba9)[_0x4464('0xf')](function(_0x20b9c5){logger[_0x4464('0x10')]('DashboardItem,\x20%s,\x20%s',_0x50e4af,_0x4464('0x11'));logger['debug'](_0x4464('0x12'),_0x50e4af,_0x4464('0x11'),JSON[_0x4464('0x13')](_0x20b9c5));if(_0x20b9c5[_0x4464('0x14')]){if(_0x20b9c5[_0x4464('0x14')][_0x4464('0x15')]===0x1f4){logger[_0x4464('0x14')](_0x4464('0x16'),_0x50e4af,_0x20b9c5[_0x4464('0x14')][_0x4464('0x17')]);return _0x370885(_0x20b9c5[_0x4464('0x14')][_0x4464('0x17')]);}logger[_0x4464('0x14')](_0x4464('0x16'),_0x50e4af,_0x20b9c5[_0x4464('0x14')][_0x4464('0x17')]);return _0xb5fe92(_0x20b9c5[_0x4464('0x14')][_0x4464('0x17')]);}else{logger['info'](_0x4464('0x16'),_0x50e4af,_0x4464('0x11'));_0xb5fe92(_0x20b9c5[_0x4464('0x18')]['message']);}})[_0x4464('0x19')](function(_0x44460b){logger[_0x4464('0x14')]('DashboardItem,\x20%s,\x20%s',_0x50e4af,_0x44460b);_0x370885(_0x44460b);});});}
\ No newline at end of file
index 5f972e0..01719cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee64=['dashboardItem:','./dashboardItem.events','save','remove','update','register','length'];(function(_0x14102c,_0x1cb214){var _0x13297b=function(_0x1f4372){while(--_0x1f4372){_0x14102c['push'](_0x14102c['shift']());}};_0x13297b(++_0x1cb214);}(_0xee64,0x19e));var _0x4ee6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xee64[_0x4b369d];return _0x571a98;};'use strict';var DashboardItemEvents=require(_0x4ee6('0x0'));var events=[_0x4ee6('0x1'),_0x4ee6('0x2'),_0x4ee6('0x3')];function createListener(_0x1ebad4,_0x341601){return function(_0xfaea17){_0x341601['emit'](_0x1ebad4,_0xfaea17);};}function removeListener(_0x28ebe9,_0x30f379){return function(){DashboardItemEvents['removeListener'](_0x28ebe9,_0x30f379);};}exports[_0x4ee6('0x4')]=function(_0x46d871){for(var _0x123f18=0x0,_0x3b20d9=events[_0x4ee6('0x5')];_0x123f18<_0x3b20d9;_0x123f18++){var _0x5ae574=events[_0x123f18];var _0x1444c2=createListener(_0x4ee6('0x6')+_0x5ae574,_0x46d871);DashboardItemEvents['on'](_0x5ae574,_0x1444c2);}};
\ No newline at end of file
+var _0x3f03=['remove','update','emit','removeListener','register','length','dashboardItem:','./dashboardItem.events'];(function(_0x3b10b7,_0x4271aa){var _0x356503=function(_0x2fbccc){while(--_0x2fbccc){_0x3b10b7['push'](_0x3b10b7['shift']());}};_0x356503(++_0x4271aa);}(_0x3f03,0x87));var _0x33f0=function(_0x24247c,_0x4a84bd){_0x24247c=_0x24247c-0x0;var _0x3eb274=_0x3f03[_0x24247c];return _0x3eb274;};'use strict';var DashboardItemEvents=require(_0x33f0('0x0'));var events=['save',_0x33f0('0x1'),_0x33f0('0x2')];function createListener(_0x575e66,_0x334192){return function(_0x1f9b92){_0x334192[_0x33f0('0x3')](_0x575e66,_0x1f9b92);};}function removeListener(_0x2d524f,_0x46a5b2){return function(){DashboardItemEvents[_0x33f0('0x4')](_0x2d524f,_0x46a5b2);};}exports[_0x33f0('0x5')]=function(_0x390ad1){for(var _0x8188a=0x0,_0x488186=events[_0x33f0('0x6')];_0x8188a<_0x488186;_0x8188a++){var _0x5a0d76=events[_0x8188a];var _0x2233c9=createListener(_0x33f0('0x7')+_0x5a0d76,_0x390ad1);DashboardItemEvents['on'](_0x5a0d76,_0x2233c9);}};
\ No newline at end of file
index 9f72381..f60e203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecea=['/:id','isAuthenticated','post','create','put','delete','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','get'];(function(_0x1deb72,_0x3f6338){var _0x18bbdf=function(_0x1b4b9b){while(--_0x1b4b9b){_0x1deb72['push'](_0x1deb72['shift']());}};_0x18bbdf(++_0x3f6338);}(_0xecea,0x18d));var _0xaece=function(_0x37d30d,_0x45ebd2){_0x37d30d=_0x37d30d-0x0;var _0x40faa5=_0xecea[_0x37d30d];return _0x40faa5;};'use strict';var multer=require(_0xaece('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaece('0x1'));var express=require(_0xaece('0x2'));var router=express['Router']();var fs_extra=require(_0xaece('0x3'));var auth=require(_0xaece('0x4'));var interaction=require(_0xaece('0x5'));var config=require('../../config/environment');var controller=require(_0xaece('0x6'));router[_0xaece('0x7')](_0xaece('0x8'),auth[_0xaece('0x9')](),controller['show']);router[_0xaece('0xa')]('/',auth['isAuthenticated'](),controller[_0xaece('0xb')]);router[_0xaece('0xc')](_0xaece('0x8'),auth['isAuthenticated'](),controller['update']);router[_0xaece('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xaece('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x1714=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','post','update','destroy'];(function(_0x4c6209,_0x10920e){var _0x62a2fb=function(_0x54871c){while(--_0x54871c){_0x4c6209['push'](_0x4c6209['shift']());}};_0x62a2fb(++_0x10920e);}(_0x1714,0xff));var _0x4171=function(_0x2a5458,_0x50e120){_0x2a5458=_0x2a5458-0x0;var _0x4ae8e6=_0x1714[_0x2a5458];return _0x4ae8e6;};'use strict';var multer=require(_0x4171('0x0'));var util=require('util');var path=require(_0x4171('0x1'));var timeout=require('connect-timeout');var express=require(_0x4171('0x2'));var router=express[_0x4171('0x3')]();var fs_extra=require(_0x4171('0x4'));var auth=require(_0x4171('0x5'));var interaction=require(_0x4171('0x6'));var config=require(_0x4171('0x7'));var controller=require(_0x4171('0x8'));router[_0x4171('0x9')](_0x4171('0xa'),auth[_0x4171('0xb')](),controller['show']);router[_0x4171('0xc')]('/',auth[_0x4171('0xb')](),controller['create']);router['put'](_0x4171('0xa'),auth[_0x4171('0xb')](),controller[_0x4171('0xd')]);router['delete'](_0x4171('0xa'),auth[_0x4171('0xb')](),controller[_0x4171('0xe')]);module['exports']=router;
\ No newline at end of file
index 1432588..37e751c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb254=['STRING','sequelize','third','first'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb254,0xed));var _0x4b25=function(_0x2e8e63,_0x444a48){_0x2e8e63=_0x2e8e63-0x0;var _0x300643=_0xb254[_0x2e8e63];return _0x300643;};'use strict';var Sequelize=require(_0x4b25('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first','second',_0x4b25('0x1')),'allowNull':![],'defaultValue':_0x4b25('0x2')},'description':{'type':Sequelize[_0x4b25('0x3')]}};
\ No newline at end of file
+var _0xf9e6=['first','second','sequelize','STRING'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xf9e6,0x19e));var _0x6f9e=function(_0x255b94,_0x5ae973){_0x255b94=_0x255b94-0x0;var _0x143dfb=_0xf9e6[_0x255b94];return _0x143dfb;};'use strict';var Sequelize=require(_0x6f9e('0x0'));module['exports']={'name':{'type':Sequelize[_0x6f9e('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x6f9e('0x2'),_0x6f9e('0x3'),'third'),'allowNull':![],'defaultValue':_0x6f9e('0x2')},'description':{'type':Sequelize[_0x6f9e('0x1')]}};
\ No newline at end of file
index b9cf5ab..a865b37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb72d=['attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','reject','update','destroy','then','get','Dispositions','error','stack','name','send','map','Disposition','rawAttributes','fieldName','type','key','query','keys','model','intersection','fields'];(function(_0x1c9398,_0x223be8){var _0x5187af=function(_0xcde780){while(--_0xcde780){_0x1c9398['push'](_0x1c9398['shift']());}};_0x5187af(++_0x223be8);}(_0xb72d,0xc4));var _0xdb72=function(_0x32a630,_0x3f834b){_0x32a630=_0x32a630-0x0;var _0xa30ad5=_0xb72d[_0x32a630];return _0xa30ad5;};'use strict';var emlformat=require(_0xdb72('0x0'));var rimraf=require(_0xdb72('0x1'));var zipdir=require(_0xdb72('0x2'));var jsonpatch=require(_0xdb72('0x3'));var rp=require('request-promise');var moment=require(_0xdb72('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdb72('0x5'));var util=require(_0xdb72('0x6'));var path=require(_0xdb72('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdb72('0x8'));var fs=require('fs');var fs_extra=require(_0xdb72('0x9'));var _=require(_0xdb72('0xa'));var squel=require(_0xdb72('0xb'));var crypto=require(_0xdb72('0xc'));var jsforce=require(_0xdb72('0xd'));var deskjs=require(_0xdb72('0xe'));var toCsv=require(_0xdb72('0xf'));var querystring=require(_0xdb72('0x10'));var Papa=require(_0xdb72('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdb72('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb72('0x13'));var logger=require(_0xdb72('0x14'))(_0xdb72('0x15'));var utils=require(_0xdb72('0x16'));var config=require(_0xdb72('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xdb72('0x18'))['db'];function respondWithStatusCode(_0x3d468e,_0x4f89d1){_0x4f89d1=_0x4f89d1||0xcc;return function(_0x39ffb4){if(_0x39ffb4){return _0x3d468e['sendStatus'](_0x4f89d1);}return _0x3d468e[_0xdb72('0x19')](_0x4f89d1)[_0xdb72('0x1a')]();};}function respondWithResult(_0x33a9af,_0x485a34){_0x485a34=_0x485a34||0xc8;return function(_0x223f54){if(_0x223f54){return _0x33a9af['status'](_0x485a34)[_0xdb72('0x1b')](_0x223f54);}};}function respondWithFilteredResult(_0x5f2e42,_0xf66112){return function(_0x3e9332){if(_0x3e9332){var _0x28fa28=typeof _0xf66112[_0xdb72('0x1c')]===_0xdb72('0x1d')&&typeof _0xf66112[_0xdb72('0x1e')]===_0xdb72('0x1d');var _0x584df1=_0x3e9332[_0xdb72('0x1f')];var _0x320165=_0x28fa28?0x0:_0xf66112['offset'];var _0x204703=_0x28fa28?_0x3e9332[_0xdb72('0x1f')]:_0xf66112['offset']+_0xf66112['limit'];var _0x31a174;if(_0x204703>=_0x584df1){_0x204703=_0x584df1;_0x31a174=0xc8;}else{_0x31a174=0xce;}_0x5f2e42[_0xdb72('0x19')](_0x31a174);return _0x5f2e42['set']('Content-Range',_0x320165+'-'+_0x204703+'/'+_0x584df1)[_0xdb72('0x1b')](_0x3e9332);}return null;};}function patchUpdates(_0x209de7){return function(_0x41bf7b){try{jsonpatch['apply'](_0x41bf7b,_0x209de7,!![]);}catch(_0x5c6625){return BPromise[_0xdb72('0x20')](_0x5c6625);}return _0x41bf7b['save']();};}function saveUpdates(_0x378086,_0x49c2f1){return function(_0x5e6a50){if(_0x5e6a50){return _0x5e6a50[_0xdb72('0x21')](_0x378086)['then'](function(_0x159981){return _0x159981;});}return null;};}function removeEntity(_0x3897f1,_0x7a5f0f){return function(_0x15fa6d){if(_0x15fa6d){return _0x15fa6d[_0xdb72('0x22')]()[_0xdb72('0x23')](function(){var _0x4b1aff=_0x15fa6d[_0xdb72('0x24')]({'plain':!![]});var _0x5de151=_0xdb72('0x25');return db['UserProfileResource'][_0xdb72('0x22')]({'where':{'type':_0x5de151,'resourceId':_0x4b1aff['id']}})[_0xdb72('0x23')](function(){return _0x15fa6d;});})['then'](function(){_0x3897f1[_0xdb72('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23c7bc,_0x99196f){return function(_0x2e54e0){if(!_0x2e54e0){_0x23c7bc['sendStatus'](0x194);}return _0x2e54e0;};}function handleError(_0x101a45,_0x2ba4ef){_0x2ba4ef=_0x2ba4ef||0x1f4;return function(_0x5dcf22){logger[_0xdb72('0x26')](_0x5dcf22[_0xdb72('0x27')]);if(_0x5dcf22['name']){delete _0x5dcf22[_0xdb72('0x28')];}_0x101a45[_0xdb72('0x19')](_0x2ba4ef)[_0xdb72('0x29')](_0x5dcf22);};}exports['index']=function(_0x2aa080,_0x5dc222){var _0x55a974={},_0x486898={},_0x93c4fa={'count':0x0,'rows':[]};var _0x551f53=_[_0xdb72('0x2a')](db[_0xdb72('0x2b')][_0xdb72('0x2c')],function(_0x4eac3f){return{'name':_0x4eac3f[_0xdb72('0x2d')],'type':_0x4eac3f[_0xdb72('0x2e')][_0xdb72('0x2f')]};});_0x486898['model']=_['map'](_0x551f53,_0xdb72('0x28'));_0x486898[_0xdb72('0x30')]=_[_0xdb72('0x31')](_0x2aa080[_0xdb72('0x30')]);_0x486898['filters']=_['intersection'](_0x486898[_0xdb72('0x32')],_0x486898[_0xdb72('0x30')]);_0x55a974['attributes']=_[_0xdb72('0x33')](_0x486898[_0xdb72('0x32')],qs[_0xdb72('0x34')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x34')]));_0x55a974[_0xdb72('0x35')]=_0x55a974[_0xdb72('0x35')]['length']?_0x55a974[_0xdb72('0x35')]:_0x486898['model'];if(!_0x2aa080[_0xdb72('0x30')][_0xdb72('0x36')](_0xdb72('0x37'))){_0x55a974[_0xdb72('0x1e')]=qs[_0xdb72('0x1e')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x1e')]);_0x55a974[_0xdb72('0x1c')]=qs[_0xdb72('0x1c')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x1c')]);}_0x55a974[_0xdb72('0x38')]=qs[_0xdb72('0x39')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x39')]);_0x55a974[_0xdb72('0x3a')]=qs[_0xdb72('0x3b')](_[_0xdb72('0x3c')](_0x2aa080['query'],_0x486898['filters']),_0x551f53);if(_0x2aa080[_0xdb72('0x30')][_0xdb72('0x3d')]){_0x55a974['where']=_[_0xdb72('0x3e')](_0x55a974[_0xdb72('0x3a')],{'$or':_[_0xdb72('0x2a')](_0x551f53,function(_0x155f89){if(_0x155f89[_0xdb72('0x2e')]!==_0xdb72('0x3f')){var _0x1c8530={};_0x1c8530[_0x155f89[_0xdb72('0x28')]]={'$like':'%'+_0x2aa080[_0xdb72('0x30')][_0xdb72('0x3d')]+'%'};return _0x1c8530;}})});}_0x55a974=_[_0xdb72('0x3e')]({},_0x55a974,_0x2aa080[_0xdb72('0x40')]);var _0x2f6e4d={'where':_0x55a974[_0xdb72('0x3a')]};return db[_0xdb72('0x2b')][_0xdb72('0x1f')](_0x2f6e4d)['then'](function(_0x539e72){_0x93c4fa[_0xdb72('0x1f')]=_0x539e72;if(_0x2aa080[_0xdb72('0x30')][_0xdb72('0x41')]){_0x55a974[_0xdb72('0x42')]=[{'all':!![]}];}return db[_0xdb72('0x2b')][_0xdb72('0x43')](_0x55a974);})['then'](function(_0x798fe3){_0x93c4fa[_0xdb72('0x44')]=_0x798fe3;return _0x93c4fa;})[_0xdb72('0x23')](respondWithFilteredResult(_0x5dc222,_0x55a974))['catch'](handleError(_0x5dc222,null));};exports[_0xdb72('0x45')]=function(_0x47e971,_0x1085d3){var _0xa0b7e9={'raw':!![],'where':{'id':_0x47e971[_0xdb72('0x46')]['id']}},_0x783f61={};_0x783f61['model']=_[_0xdb72('0x31')](db[_0xdb72('0x2b')]['rawAttributes']);_0x783f61[_0xdb72('0x30')]=_['keys'](_0x47e971[_0xdb72('0x30')]);_0x783f61['filters']=_[_0xdb72('0x33')](_0x783f61['model'],_0x783f61[_0xdb72('0x30')]);_0xa0b7e9[_0xdb72('0x35')]=_[_0xdb72('0x33')](_0x783f61[_0xdb72('0x32')],qs[_0xdb72('0x34')](_0x47e971[_0xdb72('0x30')][_0xdb72('0x34')]));_0xa0b7e9[_0xdb72('0x35')]=_0xa0b7e9[_0xdb72('0x35')][_0xdb72('0x47')]?_0xa0b7e9[_0xdb72('0x35')]:_0x783f61[_0xdb72('0x32')];if(_0x47e971[_0xdb72('0x30')][_0xdb72('0x41')]){_0xa0b7e9[_0xdb72('0x42')]=[{'all':!![]}];}_0xa0b7e9=_[_0xdb72('0x3e')]({},_0xa0b7e9,_0x47e971[_0xdb72('0x40')]);return db['Disposition']['find'](_0xa0b7e9)['then'](handleEntityNotFound(_0x1085d3,null))[_0xdb72('0x23')](respondWithResult(_0x1085d3,null))[_0xdb72('0x48')](handleError(_0x1085d3,null));};exports['create']=function(_0x5b8a15,_0x2b8a0a){return db[_0xdb72('0x2b')][_0xdb72('0x49')](_0x5b8a15[_0xdb72('0x4a')],{})[_0xdb72('0x23')](function(_0x3afefb){var _0x3e8182=_0x5b8a15[_0xdb72('0x4b')][_0xdb72('0x24')]({'plain':!![]});if(!_0x3e8182)throw new Error(_0xdb72('0x4c'));if(_0x3e8182['role']===_0xdb72('0x4b')){var _0x38b81b=_0x3afefb[_0xdb72('0x24')]({'plain':!![]});var _0x1dea90=_0xdb72('0x25');return db[_0xdb72('0x4d')][_0xdb72('0x4e')]({'where':{'name':_0x1dea90,'userProfileId':_0x3e8182[_0xdb72('0x4f')]},'raw':!![]})[_0xdb72('0x23')](function(_0x33e0de){if(_0x33e0de&&_0x33e0de[_0xdb72('0x50')]===0x0){return db[_0xdb72('0x51')][_0xdb72('0x49')]({'name':_0x38b81b[_0xdb72('0x28')],'resourceId':_0x38b81b['id'],'type':_0x33e0de[_0xdb72('0x28')],'sectionId':_0x33e0de['id']},{})[_0xdb72('0x23')](function(){return _0x3afefb;});}else{return _0x3afefb;}})[_0xdb72('0x48')](function(_0x19c305){logger[_0xdb72('0x26')](_0xdb72('0x52'),_0x19c305);throw _0x19c305;});}return _0x3afefb;})[_0xdb72('0x23')](respondWithResult(_0x2b8a0a,0xc9))[_0xdb72('0x48')](handleError(_0x2b8a0a,null));};exports[_0xdb72('0x21')]=function(_0x2e6b5f,_0xe92578){if(_0x2e6b5f['body']['id']){delete _0x2e6b5f[_0xdb72('0x4a')]['id'];}return db['Disposition'][_0xdb72('0x4e')]({'where':{'id':_0x2e6b5f[_0xdb72('0x46')]['id']}})[_0xdb72('0x23')](handleEntityNotFound(_0xe92578,null))['then'](saveUpdates(_0x2e6b5f[_0xdb72('0x4a')],null))[_0xdb72('0x23')](respondWithResult(_0xe92578,null))['catch'](handleError(_0xe92578,null));};exports[_0xdb72('0x22')]=function(_0x21c66b,_0x33e9d2){return db[_0xdb72('0x2b')]['find']({'where':{'id':_0x21c66b[_0xdb72('0x46')]['id']}})[_0xdb72('0x23')](handleEntityNotFound(_0x33e9d2,null))[_0xdb72('0x23')](removeEntity(_0x33e9d2,null))[_0xdb72('0x48')](handleError(_0x33e9d2,null));};
\ No newline at end of file
+var _0x1db9=['get','Dispositions','error','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','show','params','includeAll','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then'];(function(_0x318107,_0xf909ac){var _0x149093=function(_0x1f7c3b){while(--_0x1f7c3b){_0x318107['push'](_0x318107['shift']());}};_0x149093(++_0xf909ac);}(_0x1db9,0x176));var _0x91db=function(_0x42984b,_0x2dac52){_0x42984b=_0x42984b-0x0;var _0x42b79f=_0x1db9[_0x42984b];return _0x42b79f;};'use strict';var emlformat=require(_0x91db('0x0'));var rimraf=require(_0x91db('0x1'));var zipdir=require(_0x91db('0x2'));var jsonpatch=require(_0x91db('0x3'));var rp=require(_0x91db('0x4'));var moment=require(_0x91db('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x91db('0x6'));var util=require(_0x91db('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x91db('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x91db('0x9'));var squel=require(_0x91db('0xa'));var crypto=require(_0x91db('0xb'));var jsforce=require(_0x91db('0xc'));var deskjs=require(_0x91db('0xd'));var toCsv=require('to-csv');var querystring=require(_0x91db('0xe'));var Papa=require('papaparse');var Redis=require(_0x91db('0xf'));var authService=require(_0x91db('0x10'));var qs=require(_0x91db('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x91db('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x91db('0x13'));var licenseUtil=require(_0x91db('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x540c48,_0x2b9b98){_0x2b9b98=_0x2b9b98||0xcc;return function(_0x329277){if(_0x329277){return _0x540c48[_0x91db('0x15')](_0x2b9b98);}return _0x540c48[_0x91db('0x16')](_0x2b9b98)[_0x91db('0x17')]();};}function respondWithResult(_0x4c3124,_0x371158){_0x371158=_0x371158||0xc8;return function(_0x285052){if(_0x285052){return _0x4c3124[_0x91db('0x16')](_0x371158)[_0x91db('0x18')](_0x285052);}};}function respondWithFilteredResult(_0x2df307,_0x33b39d){return function(_0x260b56){if(_0x260b56){var _0x143bc4=typeof _0x33b39d[_0x91db('0x19')]===_0x91db('0x1a')&&typeof _0x33b39d[_0x91db('0x1b')]===_0x91db('0x1a');var _0x5f5440=_0x260b56[_0x91db('0x1c')];var _0x23d125=_0x143bc4?0x0:_0x33b39d[_0x91db('0x19')];var _0x42e66c=_0x143bc4?_0x260b56[_0x91db('0x1c')]:_0x33b39d[_0x91db('0x19')]+_0x33b39d['limit'];var _0x4ae820;if(_0x42e66c>=_0x5f5440){_0x42e66c=_0x5f5440;_0x4ae820=0xc8;}else{_0x4ae820=0xce;}_0x2df307[_0x91db('0x16')](_0x4ae820);return _0x2df307[_0x91db('0x1d')](_0x91db('0x1e'),_0x23d125+'-'+_0x42e66c+'/'+_0x5f5440)[_0x91db('0x18')](_0x260b56);}return null;};}function patchUpdates(_0x50cf9c){return function(_0x168dea){try{jsonpatch[_0x91db('0x1f')](_0x168dea,_0x50cf9c,!![]);}catch(_0x6e3ca6){return BPromise[_0x91db('0x20')](_0x6e3ca6);}return _0x168dea[_0x91db('0x21')]();};}function saveUpdates(_0x31b96c,_0xaad1f6){return function(_0x8e323f){if(_0x8e323f){return _0x8e323f[_0x91db('0x22')](_0x31b96c)[_0x91db('0x23')](function(_0x554454){return _0x554454;});}return null;};}function removeEntity(_0x58774f,_0x134caa){return function(_0x2ac8d5){if(_0x2ac8d5){return _0x2ac8d5['destroy']()[_0x91db('0x23')](function(){var _0x16efa4=_0x2ac8d5[_0x91db('0x24')]({'plain':!![]});var _0x6e3a9c=_0x91db('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x6e3a9c,'resourceId':_0x16efa4['id']}})[_0x91db('0x23')](function(){return _0x2ac8d5;});})[_0x91db('0x23')](function(){_0x58774f[_0x91db('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b38f2,_0x3c31ea){return function(_0x46c0e8){if(!_0x46c0e8){_0x3b38f2[_0x91db('0x15')](0x194);}return _0x46c0e8;};}function handleError(_0x512c79,_0x1a64f0){_0x1a64f0=_0x1a64f0||0x1f4;return function(_0x2a00d1){logger[_0x91db('0x26')](_0x2a00d1['stack']);if(_0x2a00d1[_0x91db('0x27')]){delete _0x2a00d1[_0x91db('0x27')];}_0x512c79[_0x91db('0x16')](_0x1a64f0)[_0x91db('0x28')](_0x2a00d1);};}exports[_0x91db('0x29')]=function(_0x1e865e,_0x2e6a27){var _0x1b5a7b={},_0x330a9a={},_0x1b27f9={'count':0x0,'rows':[]};var _0x1946ae=_[_0x91db('0x2a')](db[_0x91db('0x2b')][_0x91db('0x2c')],function(_0x5a6d47){return{'name':_0x5a6d47[_0x91db('0x2d')],'type':_0x5a6d47[_0x91db('0x2e')][_0x91db('0x2f')]};});_0x330a9a[_0x91db('0x30')]=_[_0x91db('0x2a')](_0x1946ae,'name');_0x330a9a[_0x91db('0x31')]=_[_0x91db('0x32')](_0x1e865e[_0x91db('0x31')]);_0x330a9a['filters']=_[_0x91db('0x33')](_0x330a9a['model'],_0x330a9a[_0x91db('0x31')]);_0x1b5a7b[_0x91db('0x34')]=_[_0x91db('0x33')](_0x330a9a[_0x91db('0x30')],qs['fields'](_0x1e865e[_0x91db('0x31')][_0x91db('0x35')]));_0x1b5a7b[_0x91db('0x34')]=_0x1b5a7b['attributes'][_0x91db('0x36')]?_0x1b5a7b[_0x91db('0x34')]:_0x330a9a['model'];if(!_0x1e865e[_0x91db('0x31')][_0x91db('0x37')]('nolimit')){_0x1b5a7b[_0x91db('0x1b')]=qs['limit'](_0x1e865e[_0x91db('0x31')][_0x91db('0x1b')]);_0x1b5a7b['offset']=qs['offset'](_0x1e865e['query'][_0x91db('0x19')]);}_0x1b5a7b[_0x91db('0x38')]=qs['sort'](_0x1e865e[_0x91db('0x31')][_0x91db('0x39')]);_0x1b5a7b[_0x91db('0x3a')]=qs[_0x91db('0x3b')](_[_0x91db('0x3c')](_0x1e865e[_0x91db('0x31')],_0x330a9a[_0x91db('0x3b')]),_0x1946ae);if(_0x1e865e[_0x91db('0x31')][_0x91db('0x3d')]){_0x1b5a7b[_0x91db('0x3a')]=_[_0x91db('0x3e')](_0x1b5a7b['where'],{'$or':_[_0x91db('0x2a')](_0x1946ae,function(_0x50c414){if(_0x50c414[_0x91db('0x2e')]!==_0x91db('0x3f')){var _0x488471={};_0x488471[_0x50c414[_0x91db('0x27')]]={'$like':'%'+_0x1e865e[_0x91db('0x31')][_0x91db('0x3d')]+'%'};return _0x488471;}})});}_0x1b5a7b=_[_0x91db('0x3e')]({},_0x1b5a7b,_0x1e865e[_0x91db('0x40')]);var _0x50634d={'where':_0x1b5a7b[_0x91db('0x3a')]};return db[_0x91db('0x2b')][_0x91db('0x1c')](_0x50634d)['then'](function(_0x4733a4){_0x1b27f9[_0x91db('0x1c')]=_0x4733a4;if(_0x1e865e[_0x91db('0x31')]['includeAll']){_0x1b5a7b[_0x91db('0x41')]=[{'all':!![]}];}return db[_0x91db('0x2b')][_0x91db('0x42')](_0x1b5a7b);})[_0x91db('0x23')](function(_0x3609e1){_0x1b27f9['rows']=_0x3609e1;return _0x1b27f9;})[_0x91db('0x23')](respondWithFilteredResult(_0x2e6a27,_0x1b5a7b))['catch'](handleError(_0x2e6a27,null));};exports[_0x91db('0x43')]=function(_0x420bf6,_0x18ab19){var _0x3e07fc={'raw':!![],'where':{'id':_0x420bf6[_0x91db('0x44')]['id']}},_0x46c92a={};_0x46c92a[_0x91db('0x30')]=_[_0x91db('0x32')](db[_0x91db('0x2b')][_0x91db('0x2c')]);_0x46c92a[_0x91db('0x31')]=_['keys'](_0x420bf6['query']);_0x46c92a[_0x91db('0x3b')]=_[_0x91db('0x33')](_0x46c92a[_0x91db('0x30')],_0x46c92a['query']);_0x3e07fc[_0x91db('0x34')]=_[_0x91db('0x33')](_0x46c92a[_0x91db('0x30')],qs[_0x91db('0x35')](_0x420bf6[_0x91db('0x31')]['fields']));_0x3e07fc[_0x91db('0x34')]=_0x3e07fc['attributes'][_0x91db('0x36')]?_0x3e07fc[_0x91db('0x34')]:_0x46c92a[_0x91db('0x30')];if(_0x420bf6[_0x91db('0x31')][_0x91db('0x45')]){_0x3e07fc[_0x91db('0x41')]=[{'all':!![]}];}_0x3e07fc=_[_0x91db('0x3e')]({},_0x3e07fc,_0x420bf6[_0x91db('0x40')]);return db[_0x91db('0x2b')]['find'](_0x3e07fc)['then'](handleEntityNotFound(_0x18ab19,null))[_0x91db('0x23')](respondWithResult(_0x18ab19,null))[_0x91db('0x46')](handleError(_0x18ab19,null));};exports[_0x91db('0x47')]=function(_0x410423,_0x27e224){return db['Disposition'][_0x91db('0x47')](_0x410423[_0x91db('0x48')],{})[_0x91db('0x23')](function(_0x2dbd11){var _0x404900=_0x410423['user'][_0x91db('0x24')]({'plain':!![]});if(!_0x404900)throw new Error(_0x91db('0x49'));if(_0x404900[_0x91db('0x4a')]===_0x91db('0x4b')){var _0x50b269=_0x2dbd11[_0x91db('0x24')]({'plain':!![]});var _0x59003f='Dispositions';return db[_0x91db('0x4c')]['find']({'where':{'name':_0x59003f,'userProfileId':_0x404900[_0x91db('0x4d')]},'raw':!![]})['then'](function(_0x54c327){if(_0x54c327&&_0x54c327[_0x91db('0x4e')]===0x0){return db[_0x91db('0x4f')][_0x91db('0x47')]({'name':_0x50b269['name'],'resourceId':_0x50b269['id'],'type':_0x54c327[_0x91db('0x27')],'sectionId':_0x54c327['id']},{})[_0x91db('0x23')](function(){return _0x2dbd11;});}else{return _0x2dbd11;}})[_0x91db('0x46')](function(_0x53069d){logger['error'](_0x91db('0x50'),_0x53069d);throw _0x53069d;});}return _0x2dbd11;})[_0x91db('0x23')](respondWithResult(_0x27e224,0xc9))['catch'](handleError(_0x27e224,null));};exports[_0x91db('0x22')]=function(_0x4df392,_0x373216){if(_0x4df392[_0x91db('0x48')]['id']){delete _0x4df392[_0x91db('0x48')]['id'];}return db[_0x91db('0x2b')]['find']({'where':{'id':_0x4df392[_0x91db('0x44')]['id']}})[_0x91db('0x23')](handleEntityNotFound(_0x373216,null))[_0x91db('0x23')](saveUpdates(_0x4df392[_0x91db('0x48')],null))[_0x91db('0x23')](respondWithResult(_0x373216,null))[_0x91db('0x46')](handleError(_0x373216,null));};exports[_0x91db('0x51')]=function(_0x20d41b,_0x2e0581){return db[_0x91db('0x2b')]['find']({'where':{'id':_0x20d41b[_0x91db('0x44')]['id']}})[_0x91db('0x23')](handleEntityNotFound(_0x2e0581,null))[_0x91db('0x23')](removeEntity(_0x2e0581,null))[_0x91db('0x46')](handleError(_0x2e0581,null));};
\ No newline at end of file
index f30b962..072709b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7379=['tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./disposition.attributes','exports','define','Disposition'];(function(_0x264ca3,_0x65b645){var _0x156d1e=function(_0x3c2990){while(--_0x3c2990){_0x264ca3['push'](_0x264ca3['shift']());}};_0x156d1e(++_0x65b645);}(_0x7379,0x8f));var _0x9737=function(_0x49cd8d,_0x222915){_0x49cd8d=_0x49cd8d-0x0;var _0x8c7e74=_0x7379[_0x49cd8d];return _0x8c7e74;};'use strict';var _=require(_0x9737('0x0'));var util=require(_0x9737('0x1'));var logger=require(_0x9737('0x2'))(_0x9737('0x3'));var moment=require(_0x9737('0x4'));var BPromise=require(_0x9737('0x5'));var rp=require(_0x9737('0x6'));var fs=require('fs');var path=require(_0x9737('0x7'));var rimraf=require(_0x9737('0x8'));var config=require('../../config/environment');var attributes=require(_0x9737('0x9'));module[_0x9737('0xa')]=function(_0x9ee41,_0xb3ddd6){return _0x9ee41[_0x9737('0xb')](_0x9737('0xc'),attributes,{'tableName':_0x9737('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x9737('0xe'),'fields':[_0x9737('0xf'),_0x9737('0x10')]},{'unique':!![],'name':_0x9737('0x11'),'fields':[_0x9737('0xf'),_0x9737('0x12')]},{'unique':!![],'name':'name_mail','fields':[_0x9737('0xf'),_0x9737('0x13')]},{'unique':!![],'name':_0x9737('0x14'),'fields':[_0x9737('0xf'),_0x9737('0x15')]},{'unique':!![],'name':_0x9737('0x16'),'fields':['name',_0x9737('0x17')]},{'unique':!![],'name':'name_openchannel','fields':[_0x9737('0xf'),'OpenchannelAccountId']},{'unique':!![],'name':_0x9737('0x18'),'fields':['name',_0x9737('0x19')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6790=['ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name_voice','name'];(function(_0x19cb89,_0x31af5f){var _0x53bba4=function(_0x40481c){while(--_0x40481c){_0x19cb89['push'](_0x19cb89['shift']());}};_0x53bba4(++_0x31af5f);}(_0x6790,0x12a));var _0x0679=function(_0x5c0e68,_0x3b7fbb){_0x5c0e68=_0x5c0e68-0x0;var _0x47c21e=_0x6790[_0x5c0e68];return _0x47c21e;};'use strict';var _=require('lodash');var util=require(_0x0679('0x0'));var logger=require(_0x0679('0x1'))(_0x0679('0x2'));var moment=require('moment');var BPromise=require(_0x0679('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0679('0x4'));var rimraf=require(_0x0679('0x5'));var config=require(_0x0679('0x6'));var attributes=require(_0x0679('0x7'));module[_0x0679('0x8')]=function(_0x53fdcb,_0x58a9fb){return _0x53fdcb[_0x0679('0x9')](_0x0679('0xa'),attributes,{'tableName':_0x0679('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x0679('0xc'),'fields':[_0x0679('0xd'),_0x0679('0xe')]},{'unique':!![],'name':_0x0679('0xf'),'fields':['name',_0x0679('0x10')]},{'unique':!![],'name':_0x0679('0x11'),'fields':[_0x0679('0xd'),_0x0679('0x12')]},{'unique':!![],'name':_0x0679('0x13'),'fields':['name',_0x0679('0x14')]},{'unique':!![],'name':_0x0679('0x15'),'fields':[_0x0679('0xd'),_0x0679('0x16')]},{'unique':!![],'name':_0x0679('0x17'),'fields':[_0x0679('0xd'),_0x0679('0x18')]},{'unique':!![],'name':_0x0679('0x19'),'fields':[_0x0679('0xd'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index a6a48bc..e9eec87 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(_0x313ce2,_0x42185e){var _0x220139=function(_0x221e2c){while(--_0x221e2c){_0x313ce2['push'](_0x313ce2['shift']());}};_0x220139(++_0x42185e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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(_0x1eece7,_0x35acc2){var _0xb34426=function(_0x5e7754){while(--_0x5e7754){_0x1eece7['push'](_0x1eece7['shift']());}};_0xb34426(++_0x35acc2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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 1534d11..ec2acdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1499=['./disposition.controller','get','/:id','isAuthenticated','show','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x17167a,_0x3c3a46){var _0x32ffed=function(_0x2a6b6){while(--_0x2a6b6){_0x17167a['push'](_0x17167a['shift']());}};_0x32ffed(++_0x3c3a46);}(_0x1499,0x118));var _0x9149=function(_0x5752ce,_0xf55e34){_0x5752ce=_0x5752ce-0x0;var _0xe2ba99=_0x1499[_0x5752ce];return _0xe2ba99;};'use strict';var multer=require(_0x9149('0x0'));var util=require(_0x9149('0x1'));var path=require(_0x9149('0x2'));var timeout=require(_0x9149('0x3'));var express=require(_0x9149('0x4'));var router=express[_0x9149('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9149('0x6'));var config=require(_0x9149('0x7'));var controller=require(_0x9149('0x8'));router[_0x9149('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9149('0x9')](_0x9149('0xa'),auth[_0x9149('0xb')](),controller[_0x9149('0xc')]);router['post']('/',auth[_0x9149('0xb')](),controller['create']);router['put'](_0x9149('0xa'),auth[_0x9149('0xb')](),controller[_0x9149('0xd')]);router['delete'](_0x9149('0xa'),auth[_0x9149('0xb')](),controller[_0x9149('0xe')]);module[_0x9149('0xf')]=router;
\ No newline at end of file
+var _0x890f=['get','isAuthenticated','show','put','/:id','update','delete','destroy','exports','util','connect-timeout','express','../../components/auth/service','./disposition.controller'];(function(_0x99868f,_0xbdb8e7){var _0x27a71b=function(_0x41feca){while(--_0x41feca){_0x99868f['push'](_0x99868f['shift']());}};_0x27a71b(++_0xbdb8e7);}(_0x890f,0x175));var _0xf890=function(_0x3f333c,_0x14f59a){_0x3f333c=_0x3f333c-0x0;var _0x6af3ad=_0x890f[_0x3f333c];return _0x6af3ad;};'use strict';var multer=require('multer');var util=require(_0xf890('0x0'));var path=require('path');var timeout=require(_0xf890('0x1'));var express=require(_0xf890('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf890('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf890('0x4'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xf890('0x5')]('/:id',auth[_0xf890('0x6')](),controller[_0xf890('0x7')]);router['post']('/',auth[_0xf890('0x6')](),controller['create']);router[_0xf890('0x8')](_0xf890('0x9'),auth['isAuthenticated'](),controller[_0xf890('0xa')]);router[_0xf890('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xf890('0xc')]);module[_0xf890('0xd')]=router;
\ No newline at end of file
index 758f9c4..a78d1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9290=['SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','yes','localstationid','ENUM','2400','4800','7200','9600','14400','v17,v27,v29','INTEGER'];(function(_0xbe3ef8,_0x2a9242){var _0x191461=function(_0x2dcabf){while(--_0x2dcabf){_0xbe3ef8['push'](_0xbe3ef8['shift']());}};_0x191461(++_0x2a9242);}(_0x9290,0x1c2));var _0x0929=function(_0x5c9865,_0x1a299a){_0x5c9865=_0x5c9865-0x0;var _0x54c22b=_0x9290[_0x5c9865];return _0x54c22b;};'use strict';var Sequelize=require('sequelize');module[_0x0929('0x0')]={'name':{'type':Sequelize[_0x0929('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0929('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0x0929('0x2'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x0929('0x1')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x0929('0x1')],'unique':_0x0929('0x3')},'minrate':{'type':Sequelize[_0x0929('0x4')](_0x0929('0x5'),_0x0929('0x6'),_0x0929('0x7'),_0x0929('0x8'),'12000',_0x0929('0x9')),'defaultValue':_0x0929('0x6')},'maxrate':{'type':Sequelize[_0x0929('0x4')](_0x0929('0x5'),_0x0929('0x6'),_0x0929('0x7'),_0x0929('0x8'),'12000',_0x0929('0x9')),'defaultValue':_0x0929('0x9')},'modem':{'type':Sequelize[_0x0929('0x1')],'defaultValue':_0x0929('0xa')},'gateway':{'type':Sequelize[_0x0929('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x0929('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x0929('0x4')](_0x0929('0xc'),_0x0929('0xd'),_0x0929('0xe'),_0x0929('0xf')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x0929('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0929('0x10')],'defaultValue':function(){return _0x0929('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0929('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0929('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0929('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0929('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0929('0xb')],'allowNull':!![],'defaultValue':null,'comment':_0x0929('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x0929('0x12')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1fd58e){if(!_0x1fd58e)this['setDataValue'](_0x0929('0x14'),null);this['setDataValue'](_0x0929('0x15'),_0x1fd58e);}}};
\ No newline at end of file
+var _0xc4b0=['SIP','IAX','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','2400','4800','7200','12000','9600','14400','v17,v27,v29'];(function(_0xfcf737,_0x132075){var _0x5eccbe=function(_0x2dc482){while(--_0x2dc482){_0xfcf737['push'](_0xfcf737['shift']());}};_0x5eccbe(++_0x132075);}(_0xc4b0,0x192));var _0x0c4b=function(_0x1ebfc7,_0x2797db){_0x1ebfc7=_0x1ebfc7-0x0;var _0x1627b8=_0xc4b0[_0x1ebfc7];return _0x1627b8;};'use strict';var Sequelize=require(_0x0c4b('0x0'));module[_0x0c4b('0x1')]={'name':{'type':Sequelize[_0x0c4b('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0c4b('0x2')]},'ecm':{'type':Sequelize[_0x0c4b('0x3')](_0x0c4b('0x4'),'no'),'defaultValue':_0x0c4b('0x4')},'headerinfo':{'type':Sequelize[_0x0c4b('0x2')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x0c4b('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x0c4b('0x3')](_0x0c4b('0x5'),_0x0c4b('0x6'),_0x0c4b('0x7'),'9600',_0x0c4b('0x8'),'14400'),'defaultValue':_0x0c4b('0x6')},'maxrate':{'type':Sequelize[_0x0c4b('0x3')](_0x0c4b('0x5'),_0x0c4b('0x6'),_0x0c4b('0x7'),_0x0c4b('0x9'),_0x0c4b('0x8'),_0x0c4b('0xa')),'defaultValue':_0x0c4b('0xa')},'modem':{'type':Sequelize['STRING'],'defaultValue':_0x0c4b('0xb')},'gateway':{'type':Sequelize[_0x0c4b('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x0c4b('0x3')](_0x0c4b('0xc'),_0x0c4b('0xd'),'DADHI',_0x0c4b('0xe')),'defaultValue':_0x0c4b('0xc')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0c4b('0xf')],'defaultValue':function(){return _0x0c4b('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0c4b('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0c4b('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0c4b('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0c4b('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0c4b('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0c4b('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0c4b('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0x0c4b('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x0c4b('0x11')],'defaultValue':![],'comment':_0x0c4b('0x14'),'set':function(_0x291923){if(!_0x291923)this[_0x0c4b('0x15')]('mandatoryDispositionPauseId',null);this[_0x0c4b('0x15')](_0x0c4b('0x16'),_0x291923);}}};
\ No newline at end of file
index 1220ceb..109b9de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5608=['destroy','get','FaxAccounts','UserProfileResource','stack','name','index','Pause','map','FaxAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','show','mandatoryDispositionPause','rawAttributes','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','find','describe','addDisposition','Disposition','order','pick','FaxAccountId','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','rows','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','hasOwnProperty','CmContact','Contact','User','Owner','fullname','internal','Tags','color','tag','sequelize','FaxApplication','priority','getApplications','context','from-voip-provider','localstationid','app','system','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','minrate','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','transaction','bulkCreate','updateAccountApplications','update','VoiceExtension','tech','createdAt','updatedAt','TrunkId','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','info','addAgents','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','jayson/promise','http','client','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','save'];(function(_0x313df3,_0x4fca45){var _0x241d59=function(_0x452786){while(--_0x452786){_0x313df3['push'](_0x313df3['shift']());}};_0x241d59(++_0x4fca45);}(_0x5608,0x8d));var _0x8560=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5608[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0x8560('0x0'));var rimraf=require(_0x8560('0x1'));var zipdir=require(_0x8560('0x2'));var jsonpatch=require(_0x8560('0x3'));var rp=require(_0x8560('0x4'));var moment=require(_0x8560('0x5'));var BPromise=require(_0x8560('0x6'));var Mustache=require('mustache');var util=require(_0x8560('0x7'));var path=require(_0x8560('0x8'));var sox=require(_0x8560('0x9'));var csv=require(_0x8560('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8560('0xb'));var _=require(_0x8560('0xc'));var squel=require(_0x8560('0xd'));var crypto=require(_0x8560('0xe'));var jsforce=require(_0x8560('0xf'));var deskjs=require(_0x8560('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8560('0x11'));var Papa=require(_0x8560('0x12'));var Redis=require(_0x8560('0x13'));var authService=require(_0x8560('0x14'));var qs=require(_0x8560('0x15'));var as=require(_0x8560('0x16'));var hardwareService=require(_0x8560('0x17'));var logger=require('../../config/logger')(_0x8560('0x18'));var utils=require('../../config/utils');var config=require(_0x8560('0x19'));var licenseUtil=require(_0x8560('0x1a'));var db=require(_0x8560('0x1b'))['db'];config[_0x8560('0x1c')]=_['defaults'](config[_0x8560('0x1c')],{'host':_0x8560('0x1d'),'port':0x18eb});var socket=require(_0x8560('0x1e'))(new Redis(config[_0x8560('0x1c')]));require(_0x8560('0x1f'))['register'](socket);var jayson=require(_0x8560('0x20'));var client=jayson['client'][_0x8560('0x21')]({'port':0x232c});var client9002=jayson[_0x8560('0x22')][_0x8560('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x59e0b6,_0x4acd40,_0x33509c,_0x5c0c07){return new BPromise(function(_0x42cc3f,_0x39221f){var _0x2c988a=_0x5c0c07||client;return _0x2c988a[_0x8560('0x23')](_0x59e0b6,_0x33509c)[_0x8560('0x24')](function(_0x32e698){logger['info'](_0x8560('0x25'),_0x4acd40,_0x8560('0x26'));logger[_0x8560('0x27')](_0x8560('0x28'),_0x4acd40,'request\x20sent',JSON[_0x8560('0x29')](_0x32e698));if(_0x32e698[_0x8560('0x2a')]){if(_0x32e698[_0x8560('0x2a')][_0x8560('0x2b')]===0x1f4){logger[_0x8560('0x2a')](_0x8560('0x25'),_0x4acd40,_0x32e698[_0x8560('0x2a')]['message']);return _0x39221f(_0x32e698[_0x8560('0x2a')][_0x8560('0x2c')]);}logger[_0x8560('0x2a')](_0x8560('0x25'),_0x4acd40,_0x32e698[_0x8560('0x2a')]['message']);return _0x42cc3f(_0x32e698[_0x8560('0x2a')][_0x8560('0x2c')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x4acd40,_0x8560('0x26'));_0x42cc3f(_0x32e698[_0x8560('0x2d')]['message']);}})[_0x8560('0x2e')](function(_0x119427){logger[_0x8560('0x2a')]('FaxAccount,\x20%s,\x20%s',_0x4acd40,_0x119427);_0x39221f(_0x119427);});});}function respondWithStatusCode(_0xd63d4f,_0x1d4417){_0x1d4417=_0x1d4417||0xcc;return function(_0x4395d6){if(_0x4395d6){return _0xd63d4f[_0x8560('0x2f')](_0x1d4417);}return _0xd63d4f[_0x8560('0x30')](_0x1d4417)[_0x8560('0x31')]();};}function respondWithResult(_0x25dfdb,_0x58c835){_0x58c835=_0x58c835||0xc8;return function(_0x5b4ddd){if(_0x5b4ddd){return _0x25dfdb[_0x8560('0x30')](_0x58c835)['json'](_0x5b4ddd);}};}function respondWithFilteredResult(_0x40cef4,_0x4fb8a4){return function(_0xc9602c){if(_0xc9602c){var _0x5d9f79=typeof _0x4fb8a4[_0x8560('0x32')]===_0x8560('0x33')&&typeof _0x4fb8a4['limit']==='undefined';var _0x3dc364=_0xc9602c[_0x8560('0x34')];var _0x243925=_0x5d9f79?0x0:_0x4fb8a4[_0x8560('0x32')];var _0x155ac3=_0x5d9f79?_0xc9602c['count']:_0x4fb8a4[_0x8560('0x32')]+_0x4fb8a4[_0x8560('0x35')];var _0x2d6f05;if(_0x155ac3>=_0x3dc364){_0x155ac3=_0x3dc364;_0x2d6f05=0xc8;}else{_0x2d6f05=0xce;}_0x40cef4[_0x8560('0x30')](_0x2d6f05);return _0x40cef4[_0x8560('0x36')]('Content-Range',_0x243925+'-'+_0x155ac3+'/'+_0x3dc364)[_0x8560('0x37')](_0xc9602c);}return null;};}function patchUpdates(_0x24e1e4){return function(_0xc13729){try{jsonpatch[_0x8560('0x38')](_0xc13729,_0x24e1e4,!![]);}catch(_0x968d37){return BPromise['reject'](_0x968d37);}return _0xc13729[_0x8560('0x39')]();};}function saveUpdates(_0x169c7d,_0x365d96){return function(_0x48e3b6){if(_0x48e3b6){return _0x48e3b6['update'](_0x169c7d)['then'](function(_0x4d1b43){return _0x4d1b43;});}return null;};}function removeEntity(_0x359edc,_0x12dd3d){return function(_0x25abcc){if(_0x25abcc){return _0x25abcc[_0x8560('0x3a')]()['then'](function(){var _0xb00b74=_0x25abcc[_0x8560('0x3b')]({'plain':!![]});var _0x3d6eb6=_0x8560('0x3c');return db[_0x8560('0x3d')][_0x8560('0x3a')]({'where':{'type':_0x3d6eb6,'resourceId':_0xb00b74['id']}})[_0x8560('0x24')](function(){return _0x25abcc;});})[_0x8560('0x24')](function(){_0x359edc[_0x8560('0x30')](0xcc)[_0x8560('0x31')]();});}};}function handleEntityNotFound(_0x4db8b7,_0x15c7bc){return function(_0xefc9a0){if(!_0xefc9a0){_0x4db8b7[_0x8560('0x2f')](0x194);}return _0xefc9a0;};}function handleError(_0x5b6640,_0x3ac56d){_0x3ac56d=_0x3ac56d||0x1f4;return function(_0xa8231e){logger[_0x8560('0x2a')](_0xa8231e[_0x8560('0x3e')]);if(_0xa8231e[_0x8560('0x3f')]){delete _0xa8231e[_0x8560('0x3f')];}_0x5b6640['status'](_0x3ac56d)['send'](_0xa8231e);};}exports[_0x8560('0x40')]=function(_0x4f9935,_0x2078dc){var _0x2c18ac={'include':[{'model':db[_0x8560('0x41')],'as':'mandatoryDispositionPause'}]},_0x3fdef1={},_0x4ce15d={'count':0x0,'rows':[]};var _0x4eae80=_[_0x8560('0x42')](db[_0x8560('0x43')]['rawAttributes'],function(_0xef8d9){return{'name':_0xef8d9[_0x8560('0x44')],'type':_0xef8d9[_0x8560('0x45')][_0x8560('0x46')]};});_0x3fdef1['model']=_['map'](_0x4eae80,_0x8560('0x3f'));_0x3fdef1[_0x8560('0x47')]=_[_0x8560('0x48')](_0x4f9935[_0x8560('0x47')]);_0x3fdef1[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x3fdef1[_0x8560('0x4b')],_0x3fdef1[_0x8560('0x47')]);_0x2c18ac[_0x8560('0x4c')]=_[_0x8560('0x4a')](_0x3fdef1['model'],qs[_0x8560('0x4d')](_0x4f9935[_0x8560('0x47')][_0x8560('0x4d')]));_0x2c18ac[_0x8560('0x4c')]=_0x2c18ac[_0x8560('0x4c')][_0x8560('0x4e')]?_0x2c18ac['attributes']:_0x3fdef1[_0x8560('0x4b')];if(!_0x4f9935['query']['hasOwnProperty'](_0x8560('0x4f'))){_0x2c18ac[_0x8560('0x35')]=qs['limit'](_0x4f9935['query'][_0x8560('0x35')]);_0x2c18ac[_0x8560('0x32')]=qs[_0x8560('0x32')](_0x4f9935[_0x8560('0x47')]['offset']);}_0x2c18ac['order']=qs[_0x8560('0x50')](_0x4f9935[_0x8560('0x47')][_0x8560('0x50')]);_0x2c18ac[_0x8560('0x51')]=qs['filters'](_['pick'](_0x4f9935[_0x8560('0x47')],_0x3fdef1[_0x8560('0x49')]),_0x4eae80);if(_0x4f9935[_0x8560('0x47')]['filter']){_0x2c18ac[_0x8560('0x51')]=_[_0x8560('0x52')](_0x2c18ac[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x4eae80,function(_0x3db4d2){if(_0x3db4d2[_0x8560('0x45')]!==_0x8560('0x53')){var _0x5a79f1={};_0x5a79f1[_0x3db4d2[_0x8560('0x3f')]]={'$like':'%'+_0x4f9935[_0x8560('0x47')][_0x8560('0x54')]+'%'};return _0x5a79f1;}})});}_0x2c18ac=_[_0x8560('0x52')]({},_0x2c18ac,_0x4f9935[_0x8560('0x55')]);var _0xcc1f97={'where':_0x2c18ac[_0x8560('0x51')]};return db['FaxAccount'][_0x8560('0x34')](_0xcc1f97)[_0x8560('0x24')](function(_0xf982e2){_0x4ce15d['count']=_0xf982e2;if(_0x4f9935[_0x8560('0x47')][_0x8560('0x56')]){_0x2c18ac[_0x8560('0x57')]=[{'all':!![]}];}return db[_0x8560('0x43')]['findAll'](_0x2c18ac);})['then'](function(_0x5384c7){_0x4ce15d['rows']=_0x5384c7;return _0x4ce15d;})[_0x8560('0x24')](respondWithFilteredResult(_0x2078dc,_0x2c18ac))[_0x8560('0x2e')](handleError(_0x2078dc,null));};exports[_0x8560('0x58')]=function(_0x1460f3,_0x1d9295){var _0xb8df0c={'raw':![],'where':{'id':_0x1460f3['params']['id']},'include':[{'model':db[_0x8560('0x41')],'as':_0x8560('0x59')}]},_0x5f359c={};_0x5f359c['model']=_[_0x8560('0x48')](db[_0x8560('0x43')][_0x8560('0x5a')]);_0x5f359c[_0x8560('0x47')]=_[_0x8560('0x48')](_0x1460f3[_0x8560('0x47')]);_0x5f359c[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x5f359c[_0x8560('0x4b')],_0x5f359c[_0x8560('0x47')]);_0xb8df0c['attributes']=_[_0x8560('0x4a')](_0x5f359c[_0x8560('0x4b')],qs['fields'](_0x1460f3[_0x8560('0x47')][_0x8560('0x4d')]));_0xb8df0c[_0x8560('0x4c')]=_0xb8df0c['attributes']['length']?_0xb8df0c[_0x8560('0x4c')]:_0x5f359c[_0x8560('0x4b')];if(_0x1460f3[_0x8560('0x47')][_0x8560('0x56')]){_0xb8df0c['include']=[{'all':!![]}];}_0xb8df0c=_[_0x8560('0x52')]({},_0xb8df0c,_0x1460f3[_0x8560('0x55')]);return db[_0x8560('0x43')]['find'](_0xb8df0c)[_0x8560('0x24')](handleEntityNotFound(_0x1d9295,null))[_0x8560('0x24')](respondWithResult(_0x1d9295,null))[_0x8560('0x2e')](handleError(_0x1d9295,null));};exports[_0x8560('0x5b')]=function(_0x3ff488,_0x20c6a6){return db['FaxAccount'][_0x8560('0x5b')](_0x3ff488[_0x8560('0x5c')],{})[_0x8560('0x24')](function(_0x3f87d9){var _0x4c9c9b=_0x3ff488[_0x8560('0x5d')][_0x8560('0x3b')]({'plain':!![]});if(!_0x4c9c9b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4c9c9b[_0x8560('0x5e')]===_0x8560('0x5d')){var _0x50bd07=_0x3f87d9[_0x8560('0x3b')]({'plain':!![]});var _0x282472=_0x8560('0x3c');return db[_0x8560('0x5f')]['find']({'where':{'name':_0x282472,'userProfileId':_0x4c9c9b[_0x8560('0x60')]},'raw':!![]})[_0x8560('0x24')](function(_0x21746f){if(_0x21746f&&_0x21746f[_0x8560('0x61')]===0x0){return db[_0x8560('0x3d')][_0x8560('0x5b')]({'name':_0x50bd07[_0x8560('0x3f')],'resourceId':_0x50bd07['id'],'type':_0x21746f[_0x8560('0x3f')],'sectionId':_0x21746f['id']},{})['then'](function(){return _0x3f87d9;});}else{return _0x3f87d9;}})[_0x8560('0x2e')](function(_0x3e9a31){logger[_0x8560('0x2a')](_0x8560('0x62'),_0x3e9a31);throw _0x3e9a31;});}return _0x3f87d9;})[_0x8560('0x24')](respondWithResult(_0x20c6a6,0xc9))[_0x8560('0x2e')](handleError(_0x20c6a6,null));};exports['update']=function(_0x21c3e0,_0x58e0f7){if(_0x21c3e0[_0x8560('0x5c')]['id']){delete _0x21c3e0[_0x8560('0x5c')]['id'];}return db[_0x8560('0x43')]['find']({'where':{'id':_0x21c3e0[_0x8560('0x63')]['id']},'include':[{'model':db['Pause'],'as':_0x8560('0x59')}]})[_0x8560('0x24')](handleEntityNotFound(_0x58e0f7,null))[_0x8560('0x24')](saveUpdates(_0x21c3e0[_0x8560('0x5c')],null))[_0x8560('0x24')](respondWithResult(_0x58e0f7,null))['catch'](handleError(_0x58e0f7,null));};exports[_0x8560('0x3a')]=function(_0x3178ca,_0xe6aa12){return db['FaxAccount'][_0x8560('0x64')]({'where':{'id':_0x3178ca['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0xe6aa12,null))[_0x8560('0x24')](removeEntity(_0xe6aa12,null))[_0x8560('0x2e')](handleError(_0xe6aa12,null));};exports[_0x8560('0x65')]=function(_0x38d685,_0x25941a){return db[_0x8560('0x43')][_0x8560('0x65')]()[_0x8560('0x24')](respondWithResult(_0x25941a,null))[_0x8560('0x2e')](handleError(_0x25941a,null));};exports[_0x8560('0x66')]=function(_0xb1c91d,_0x54a2c8,_0x2068ad){if(_0xb1c91d[_0x8560('0x5c')]['id']){delete _0xb1c91d[_0x8560('0x5c')]['id'];}return db[_0x8560('0x43')]['find']({'where':{'id':_0xb1c91d[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x54a2c8,null))[_0x8560('0x24')](function(_0x1b2092){if(_0x1b2092){_0xb1c91d['body']['FaxAccountId']=_0x1b2092['id'];return db[_0x8560('0x67')][_0x8560('0x5b')](_0xb1c91d[_0x8560('0x5c')]);}})[_0x8560('0x24')](respondWithResult(_0x54a2c8,null))['catch'](handleError(_0x54a2c8,null));};exports['getDispositions']=function(_0x343cba,_0xc217e8,_0x19d9ba){var _0x3643bf={'raw':![],'where':{}};var _0x1ab066={};var _0x273cc6={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x343cba[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0xc217e8,null))[_0x8560('0x24')](function(_0x1cb174){if(_0x1cb174){_0x1ab066[_0x8560('0x4b')]=_['keys'](db[_0x8560('0x67')][_0x8560('0x5a')]);_0x1ab066['query']=_[_0x8560('0x48')](_0x343cba['query']);_0x1ab066[_0x8560('0x49')]=_['intersection'](_0x1ab066[_0x8560('0x4b')],_0x1ab066[_0x8560('0x47')]);_0x3643bf['attributes']=_[_0x8560('0x4a')](_0x1ab066[_0x8560('0x4b')],qs[_0x8560('0x4d')](_0x343cba[_0x8560('0x47')][_0x8560('0x4d')]));_0x3643bf[_0x8560('0x4c')]=_0x3643bf['attributes'][_0x8560('0x4e')]?_0x3643bf[_0x8560('0x4c')]:_0x1ab066[_0x8560('0x4b')];if(!_0x343cba[_0x8560('0x47')]['hasOwnProperty'](_0x8560('0x4f'))){_0x3643bf['limit']=qs['limit'](_0x343cba[_0x8560('0x47')][_0x8560('0x35')]);_0x3643bf['offset']=qs[_0x8560('0x32')](_0x343cba[_0x8560('0x47')]['offset']);}_0x3643bf[_0x8560('0x68')]=qs['sort'](_0x343cba[_0x8560('0x47')][_0x8560('0x50')]);_0x3643bf[_0x8560('0x51')]=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0x343cba[_0x8560('0x47')],_0x1ab066['filters']));_0x3643bf['where'][_0x8560('0x6a')]=_0x1cb174['id'];if(_0x343cba[_0x8560('0x47')]['filter']){_0x3643bf[_0x8560('0x51')]=_[_0x8560('0x52')](_0x3643bf[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x3643bf['attributes'],function(_0x4b46cc){var _0x2f64e8={};_0x2f64e8[_0x4b46cc]={'$like':'%'+_0x343cba['query'][_0x8560('0x54')]+'%'};return _0x2f64e8;})});}_0x3643bf=_[_0x8560('0x52')]({},_0x3643bf,_0x343cba[_0x8560('0x55')]);return db[_0x8560('0x67')][_0x8560('0x34')]({'where':_0x3643bf[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x3d4170){_0x273cc6[_0x8560('0x34')]=_0x3d4170;if(_0x343cba[_0x8560('0x47')][_0x8560('0x56')]){_0x3643bf[_0x8560('0x57')]=[{'all':!![]}];}return db[_0x8560('0x67')][_0x8560('0x6b')](_0x3643bf);})['then'](function(_0x5964d2){_0x273cc6['rows']=_0x5964d2;return _0x273cc6;});}})['then'](respondWithFilteredResult(_0xc217e8,_0x3643bf))[_0x8560('0x2e')](handleError(_0xc217e8,null));};exports[_0x8560('0x6c')]=function(_0x26150f,_0x16388a,_0x456d63){return db[_0x8560('0x43')]['find']({'where':{'id':_0x26150f['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x16388a,null))[_0x8560('0x24')](function(_0x35e984){if(_0x35e984){return _0x35e984[_0x8560('0x6c')](_0x26150f['query'][_0x8560('0x6d')]);}})[_0x8560('0x24')](respondWithStatusCode(_0x16388a,null))[_0x8560('0x2e')](handleError(_0x16388a,null));};exports[_0x8560('0x6e')]=function(_0x4da0f9,_0x51b8ed,_0x2ba579){if(_0x4da0f9[_0x8560('0x5c')]['id']){delete _0x4da0f9[_0x8560('0x5c')]['id'];}return db[_0x8560('0x43')][_0x8560('0x64')]({'where':{'id':_0x4da0f9[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x51b8ed,null))[_0x8560('0x24')](function(_0x1efd39){if(_0x1efd39){_0x4da0f9[_0x8560('0x5c')][_0x8560('0x6a')]=_0x1efd39['id'];return db[_0x8560('0x6f')][_0x8560('0x5b')](_0x4da0f9['body']);}})[_0x8560('0x24')](respondWithResult(_0x51b8ed,null))[_0x8560('0x2e')](handleError(_0x51b8ed,null));};exports[_0x8560('0x70')]=function(_0x456c4e,_0x39317f,_0x43d4d2){var _0x28db66={'raw':![],'where':{}};var _0x5dd169={};var _0xf75f9f={'count':0x0,'rows':[]};return db['FaxAccount'][_0x8560('0x71')]({'where':{'id':_0x456c4e[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x39317f,null))[_0x8560('0x24')](function(_0x49a32b){if(_0x49a32b){_0x5dd169[_0x8560('0x4b')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x5dd169['query']=_['keys'](_0x456c4e['query']);_0x5dd169['filters']=_[_0x8560('0x4a')](_0x5dd169['model'],_0x5dd169[_0x8560('0x47')]);_0x28db66[_0x8560('0x4c')]=_[_0x8560('0x4a')](_0x5dd169['model'],qs[_0x8560('0x4d')](_0x456c4e[_0x8560('0x47')][_0x8560('0x4d')]));_0x28db66[_0x8560('0x4c')]=_0x28db66[_0x8560('0x4c')][_0x8560('0x4e')]?_0x28db66[_0x8560('0x4c')]:_0x5dd169[_0x8560('0x4b')];if(!_0x456c4e['query']['hasOwnProperty'](_0x8560('0x4f'))){_0x28db66['limit']=qs['limit'](_0x456c4e[_0x8560('0x47')][_0x8560('0x35')]);_0x28db66[_0x8560('0x32')]=qs[_0x8560('0x32')](_0x456c4e['query'][_0x8560('0x32')]);}_0x28db66[_0x8560('0x68')]=qs[_0x8560('0x50')](_0x456c4e[_0x8560('0x47')][_0x8560('0x50')]);_0x28db66[_0x8560('0x51')]=qs['filters'](_['pick'](_0x456c4e['query'],_0x5dd169[_0x8560('0x49')]));_0x28db66[_0x8560('0x51')][_0x8560('0x6a')]=_0x49a32b['id'];if(_0x456c4e[_0x8560('0x47')][_0x8560('0x54')]){_0x28db66[_0x8560('0x51')]=_[_0x8560('0x52')](_0x28db66[_0x8560('0x51')],{'$or':_['map'](_0x28db66['attributes'],function(_0x8333e1){var _0x51b1b2={};_0x51b1b2[_0x8333e1]={'$like':'%'+_0x456c4e[_0x8560('0x47')][_0x8560('0x54')]+'%'};return _0x51b1b2;})});}_0x28db66=_[_0x8560('0x52')]({},_0x28db66,_0x456c4e[_0x8560('0x55')]);return db[_0x8560('0x6f')]['count']({'where':_0x28db66[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x5e44e3){_0xf75f9f[_0x8560('0x34')]=_0x5e44e3;if(_0x456c4e['query'][_0x8560('0x56')]){_0x28db66[_0x8560('0x57')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x28db66);})[_0x8560('0x24')](function(_0x42d43d){_0xf75f9f[_0x8560('0x72')]=_0x42d43d;return _0xf75f9f;});}})[_0x8560('0x24')](respondWithFilteredResult(_0x39317f,_0x28db66))['catch'](handleError(_0x39317f,null));};exports[_0x8560('0x73')]=function(_0x2849a5,_0x203194,_0x3f6fe0){return db[_0x8560('0x43')]['find']({'where':{'id':_0x2849a5[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x203194,null))[_0x8560('0x24')](function(_0x53be36){if(_0x53be36){return _0x53be36['removeAnswers'](_0x2849a5[_0x8560('0x47')][_0x8560('0x6d')]);}})[_0x8560('0x24')](respondWithStatusCode(_0x203194,null))[_0x8560('0x2e')](handleError(_0x203194,null));};exports[_0x8560('0x74')]=function(_0x3602c8,_0x145db7,_0x46c8b6){return db['FaxInteraction'][_0x8560('0x64')]({'where':{'id':_0x3602c8['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x145db7,null))[_0x8560('0x24')](function(_0x246590){if(_0x246590){return _0x246590['addInteraction'](_0x3602c8[_0x8560('0x5c')][_0x8560('0x6d')],_[_0x8560('0x75')](_0x3602c8[_0x8560('0x5c')],[_0x8560('0x6d'),'id'])||{});}})[_0x8560('0x24')](respondWithResult(_0x145db7,null))[_0x8560('0x2e')](handleError(_0x145db7,null));};exports[_0x8560('0x76')]=function(_0x3df46e,_0x5667ae,_0x2b660b){var _0x5d8074={'raw':![],'where':{}};var _0x454565={};var _0x2e75dd={'count':0x0,'rows':[]};return db[_0x8560('0x43')]['findOne']({'where':{'id':_0x3df46e['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x5667ae,null))[_0x8560('0x24')](function(_0x39f1e3){if(_0x39f1e3){_0x454565[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0x77')][_0x8560('0x5a')]);_0x454565[_0x8560('0x47')]=_[_0x8560('0x48')](_0x3df46e[_0x8560('0x47')]);_0x454565[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x454565[_0x8560('0x4b')],_0x454565['query']);_0x5d8074[_0x8560('0x4c')]=_[_0x8560('0x4a')](_0x454565['model'],qs[_0x8560('0x4d')](_0x3df46e[_0x8560('0x47')]['fields']));_0x5d8074['attributes']=_0x5d8074['attributes']['length']?_0x5d8074[_0x8560('0x4c')]:_0x454565[_0x8560('0x4b')];if(!_0x3df46e['query'][_0x8560('0x78')](_0x8560('0x4f'))){_0x5d8074[_0x8560('0x35')]=qs[_0x8560('0x35')](_0x3df46e[_0x8560('0x47')]['limit']);_0x5d8074[_0x8560('0x32')]=qs['offset'](_0x3df46e[_0x8560('0x47')]['offset']);}_0x5d8074[_0x8560('0x68')]=qs[_0x8560('0x50')](_0x3df46e[_0x8560('0x47')]['sort']);_0x5d8074[_0x8560('0x51')]=qs[_0x8560('0x49')](_['pick'](_0x3df46e[_0x8560('0x47')],_0x454565[_0x8560('0x49')]));_0x5d8074[_0x8560('0x51')][_0x8560('0x6a')]=_0x39f1e3['id'];if(_0x3df46e[_0x8560('0x47')]['filter']){_0x5d8074[_0x8560('0x51')]=_[_0x8560('0x52')](_0x5d8074['where'],{'$or':_[_0x8560('0x42')](_0x5d8074[_0x8560('0x4c')],function(_0x351e8e){var _0xc8bc64={};_0xc8bc64[_0x351e8e]={'$like':'%'+_0x3df46e[_0x8560('0x47')]['filter']+'%'};return _0xc8bc64;})});}_0x5d8074=_[_0x8560('0x52')]({},_0x5d8074,_0x3df46e[_0x8560('0x55')]);return db[_0x8560('0x77')][_0x8560('0x34')]({'where':_0x5d8074[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x435057){_0x2e75dd[_0x8560('0x34')]=_0x435057;if(_0x3df46e[_0x8560('0x47')]['includeAll']){_0x5d8074[_0x8560('0x57')]=[{'model':db[_0x8560('0x79')],'as':_0x8560('0x7a'),'required':![]},{'model':db[_0x8560('0x7b')],'as':_0x8560('0x7c'),'attributes':[_0x8560('0x3f'),_0x8560('0x7d'),_0x8560('0x7e')],'required':![]},{'model':db['Tag'],'as':_0x8560('0x7f'),'attributes':['id','name',_0x8560('0x80')],'where':_0x3df46e[_0x8560('0x47')][_0x8560('0x81')]?{'id':_0x3df46e[_0x8560('0x47')]['tag']}:undefined,'required':_0x3df46e[_0x8560('0x47')][_0x8560('0x81')]?!![]:![]}];}return db[_0x8560('0x77')][_0x8560('0x6b')](_0x5d8074);})[_0x8560('0x24')](function(_0x3a3263){_0x2e75dd[_0x8560('0x72')]=_0x3a3263;return _0x2e75dd;});}})[_0x8560('0x24')](respondWithFilteredResult(_0x5667ae,_0x5d8074))[_0x8560('0x2e')](handleError(_0x5667ae,null));};exports['addApplications']=function(_0x2bf772,_0x5a6c9c,_0x11a897){return db[_0x8560('0x43')][_0x8560('0x71')]({'where':{'id':_0x2bf772[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x5a6c9c,null))[_0x8560('0x24')](function(_0x10a3dd){if(_0x10a3dd){return db[_0x8560('0x82')]['transaction'](function(_0x5dd5f6){return db[_0x8560('0x83')][_0x8560('0x3a')]({'where':{'FaxAccountId':_0x2bf772['params']['id']},'transaction':_0x5dd5f6})['then'](function(_0x2adffa){var _0x577223=_[_0x8560('0x42')](_0x2bf772[_0x8560('0x5c')],function(_0x1abd4f){_0x1abd4f['FaxAccountId']=_0x2bf772[_0x8560('0x63')]['id'];return _0x1abd4f;});return db[_0x8560('0x83')]['bulkCreate'](_0x577223,{'transaction':_0x5dd5f6});});})[_0x8560('0x24')](function(){return db[_0x8560('0x83')]['findAndCountAll']({'where':{'FaxAccountId':_0x2bf772[_0x8560('0x63')]['id']},'order':_0x8560('0x84')});});}})[_0x8560('0x24')](respondWithResult(_0x5a6c9c,null))[_0x8560('0x2e')](handleError(_0x5a6c9c,null));};exports[_0x8560('0x85')]=function(_0x4617dc,_0x174fad,_0x180706){var _0x533380={};var _0x420d10={};var _0x3bac59;var _0x176886;return db[_0x8560('0x43')]['findOne']({'where':{'id':_0x4617dc[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x174fad,null))[_0x8560('0x24')](function(_0x48f59c){if(_0x48f59c){_0x3bac59=_0x48f59c;_0x420d10[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0x83')][_0x8560('0x5a')]);_0x420d10['query']=_[_0x8560('0x48')](_0x4617dc['query']);_0x420d10[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x420d10[_0x8560('0x4b')],_0x420d10[_0x8560('0x47')]);_0x533380['attributes']=_['intersection'](_0x420d10[_0x8560('0x4b')],qs[_0x8560('0x4d')](_0x4617dc[_0x8560('0x47')][_0x8560('0x4d')]));_0x533380['attributes']=_0x533380[_0x8560('0x4c')][_0x8560('0x4e')]?_0x533380[_0x8560('0x4c')]:_0x420d10['model'];_0x533380['order']=qs[_0x8560('0x50')](_0x4617dc['query'][_0x8560('0x50')]);_0x533380[_0x8560('0x51')]=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0x4617dc[_0x8560('0x47')],_0x420d10[_0x8560('0x49')]));if(_0x4617dc['query'][_0x8560('0x54')]){_0x533380[_0x8560('0x51')]=_[_0x8560('0x52')](_0x533380[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x533380[_0x8560('0x4c')],function(_0x317e66){var _0x3296b1={};_0x3296b1[_0x317e66]={'$like':'%'+_0x4617dc['query'][_0x8560('0x54')]+'%'};return _0x3296b1;})});}_0x533380=_[_0x8560('0x52')]({},_0x533380,_0x4617dc[_0x8560('0x55')]);return _0x3bac59['getApplications'](_0x533380);}})[_0x8560('0x24')](function(_0x173cba){if(_0x173cba){_0x176886=_0x173cba[_0x8560('0x4e')];if(!_0x4617dc[_0x8560('0x47')]['hasOwnProperty'](_0x8560('0x4f'))){_0x533380[_0x8560('0x35')]=qs['limit'](_0x4617dc[_0x8560('0x47')][_0x8560('0x35')]);_0x533380[_0x8560('0x32')]=qs[_0x8560('0x32')](_0x4617dc[_0x8560('0x47')][_0x8560('0x32')]);}return _0x3bac59['getApplications'](_0x533380);}})[_0x8560('0x24')](function(_0x10044d){if(_0x10044d){return _0x10044d?{'count':_0x176886,'rows':_0x10044d}:null;}})[_0x8560('0x24')](respondWithResult(_0x174fad,null))['catch'](handleError(_0x174fad,null));};function Extension(_0x39f4ae,_0x105265,_0x1fc834,_0xc8eeb3){this[_0x8560('0x86')]=_0x8560('0x87');this['exten']=_0x39f4ae[_0x8560('0x88')];this[_0x8560('0x89')]=_0xc8eeb3;this[_0x8560('0x45')]=_0x8560('0x8a');this['description']=_0x8560('0x8b');this[_0x8560('0x6a')]=_0x39f4ae['id'];this[_0x8560('0x84')]=_0x105265;this[_0x8560('0x8c')]=_0x1fc834;}function createExtensionsReciveFax(_0xd5e629){var _0x39f669=0x1;var _0x35e390=[];_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,'',_0x8560('0x8e')));_0x39f669+=0x1;_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,_0x8560('0x8f'),_0x8560('0x90')));_0x39f669+=0x1;for(var _0xfd8db in _0xd5e629){if(_0xd5e629[_0x8560('0x78')](_0xfd8db)&&(_0xfd8db===_0x8560('0x91')||_0xfd8db===_0x8560('0x88')||_0xfd8db===_0x8560('0x92')||_0xfd8db==='faxdetect'||_0xfd8db==='headerinfo'||_0xfd8db==='maxrate'||_0xfd8db===_0x8560('0x93')||_0xfd8db==='modem'||_0xfd8db==='t38timeout')){_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,'FAXOPT('+_0xfd8db+')='+_0xd5e629[_0xfd8db],_0x8560('0x90')));_0x39f669+=0x1;}}_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,'6',_0x8560('0x94')));_0x39f669+=0x1;_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,_0x8560('0x95'),_0x8560('0x96')));_0x39f669=0x0;return _0x35e390;}exports[_0x8560('0x97')]=function(_0x41fdcc,_0x2c2e6b,_0x4b0c63){var _0x1d7fc1;return db[_0x8560('0x82')][_0x8560('0x98')](function(_0x55e2cb){return db[_0x8560('0x43')][_0x8560('0x5b')](_0x41fdcc['body'],{'transaction':_0x55e2cb})['then'](function(_0x4d0077){_0x1d7fc1=_0x4d0077[_0x8560('0x3b')]({'plain':!![]});return db['VoiceExtension'][_0x8560('0x99')](createExtensionsReciveFax(_0x1d7fc1),{'transaction':_0x55e2cb});});})['then'](function(){return _0x1d7fc1;})[_0x8560('0x24')](respondWithResult(_0x2c2e6b,null))[_0x8560('0x2e')](handleError(_0x2c2e6b,null));};exports[_0x8560('0x9a')]=function(_0x523ee1,_0x922473,_0x45cfae){var _0x36349a;return db[_0x8560('0x82')][_0x8560('0x98')](function(_0x3e1a4){return db[_0x8560('0x43')][_0x8560('0x9b')](_0x523ee1[_0x8560('0x5c')],{'where':{'id':_0x523ee1[_0x8560('0x5c')]['id']},'transaction':_0x3e1a4})[_0x8560('0x24')](function(_0x311e84){return db[_0x8560('0x9c')][_0x8560('0x3a')]({'where':{'FaxAccountId':_0x523ee1[_0x8560('0x5c')]['id']},'transaction':_0x3e1a4})[_0x8560('0x24')](function(_0x47e3fe){return db['VoiceExtension'][_0x8560('0x99')](createExtensionsReciveFax(_['omit'](_0x523ee1[_0x8560('0x5c')],[_0x8560('0x9d'),_0x8560('0x46'),_0x8560('0x9e'),_0x8560('0x9f'),_0x8560('0xa0'),'ListId'])),{'transaction':_0x3e1a4});});});})[_0x8560('0x24')](function(){return db[_0x8560('0x43')]['findById'](_0x523ee1['body']['id']);})[_0x8560('0x24')](respondWithResult(_0x922473,null))[_0x8560('0x2e')](handleError(_0x922473,null));};exports[_0x8560('0xa1')]=function(_0xa4c05f,_0x114500,_0x4aa6cf){var _0x355f40={'raw':!![],'where':{}};var _0x29ec3a={};var _0x5e3a2c={'count':0x0,'rows':[]};return db[_0x8560('0x43')]['findOne']({'where':{'id':_0xa4c05f[_0x8560('0x63')]['id']}})['then'](handleEntityNotFound(_0x114500,null))[_0x8560('0x24')](function(_0xa5b7fa){if(_0xa5b7fa){_0x29ec3a[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0xa2')][_0x8560('0x5a')]);_0x29ec3a['query']=_[_0x8560('0x48')](_0xa4c05f[_0x8560('0x47')]);_0x29ec3a[_0x8560('0x49')]=_['intersection'](_0x29ec3a[_0x8560('0x4b')],_0x29ec3a[_0x8560('0x47')]);_0x355f40[_0x8560('0x4c')]=_['intersection'](_0x29ec3a[_0x8560('0x4b')],qs[_0x8560('0x4d')](_0xa4c05f['query'][_0x8560('0x4d')]));_0x355f40['attributes']=_0x355f40['attributes']['length']?_0x355f40['attributes']:_0x29ec3a[_0x8560('0x4b')];if(!_0xa4c05f[_0x8560('0x47')]['hasOwnProperty'](_0x8560('0x4f'))){_0x355f40[_0x8560('0x35')]=qs[_0x8560('0x35')](_0xa4c05f['query'][_0x8560('0x35')]);_0x355f40['offset']=qs[_0x8560('0x32')](_0xa4c05f[_0x8560('0x47')][_0x8560('0x32')]);}_0x355f40[_0x8560('0x68')]=qs[_0x8560('0x50')](_0xa4c05f[_0x8560('0x47')][_0x8560('0x50')]);_0x355f40[_0x8560('0x51')]=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0xa4c05f['query'],_0x29ec3a[_0x8560('0x49')]));_0x355f40['where'][_0x8560('0x6a')]=_0xa5b7fa['id'];if(_0xa4c05f[_0x8560('0x47')][_0x8560('0x54')]){_0x355f40[_0x8560('0x51')]=_['merge'](_0x355f40[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x355f40[_0x8560('0x4c')],function(_0x19c4b8){var _0x567dcb={};_0x567dcb[_0x19c4b8]={'$like':'%'+_0xa4c05f[_0x8560('0x47')]['filter']+'%'};return _0x567dcb;})});}if(_0xa4c05f[_0x8560('0x47')]['$gte']){var _0xe8c726=_0xa4c05f['query'][_0x8560('0xa3')]['split'](',');var _0x4f5948={};_0x4f5948[_0xe8c726[0x0]]={'$gte':moment(_0xe8c726[0x1])[_0x8560('0xa4')](_0x8560('0xa5'))};_0x355f40[_0x8560('0x51')]=_['merge'](_0x355f40[_0x8560('0x51')],_0x4f5948);}_0x355f40=_[_0x8560('0x52')]({},_0x355f40,_0xa4c05f[_0x8560('0x55')]);return db['FaxMessage'][_0x8560('0x34')]({'where':_0x355f40[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x637b75){_0x5e3a2c[_0x8560('0x34')]=_0x637b75;if(_0xa4c05f[_0x8560('0x47')]['includeAll']){_0x355f40[_0x8560('0x57')]=[{'all':!![]}];}return db[_0x8560('0xa2')][_0x8560('0x6b')](_0x355f40);})[_0x8560('0x24')](function(_0x6fef65){_0x5e3a2c[_0x8560('0x72')]=_0x6fef65;return _0x5e3a2c;});}})[_0x8560('0x24')](respondWithFilteredResult(_0x114500,_0x355f40))[_0x8560('0x2e')](handleError(_0x114500,null));};exports[_0x8560('0xa6')]=function(_0x12bc80,_0xf97189,_0x380889){var _0x5e4d1d,_0x171d34={},_0x1da4bb;if(_0x12bc80[_0x8560('0x5c')]['to']){_0x1da4bb=_0x12bc80[_0x8560('0x5c')]['to'][0x0];}return db[_0x8560('0x43')]['find']({'where':{'id':_0x12bc80['params']['id']},'include':[{'model':db[_0x8560('0xa7')],'as':_0x8560('0xa8'),'include':[{'model':db[_0x8560('0x79')],'as':_0x8560('0xa9'),'where':{'fax':_0x1da4bb},'limit':0x1,'order':[['updatedAt',_0x8560('0xaa')]]}]}]})[_0x8560('0x24')](handleEntityNotFound(_0xf97189,null))['then'](function(_0x57c151){_0x5e4d1d=_0x57c151;if(_0x12bc80['body'][_0x8560('0xab')]&&_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')]['length']){for(var _0x171ef7=0x0;_0x171ef7<_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x8560('0x4e')];_0x171ef7+=0x1){_0x12bc80['body'][_0x8560('0xab')][_0x171ef7]={'filename':_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x171ef7]['name'],'id':_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x171ef7]['id'],'path':path[_0x8560('0xac')](config[_0x8560('0xad')],'server/files/attachments',_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x171ef7][_0x8560('0xae')])};}}return respondWithRpcPromise(_0x8560('0xaf'),'CheckAfterSend',{'FaxAccountId':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x63')]['id'])?undefined:_0x12bc80[_0x8560('0x63')]['id'],'path':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0x8')])?undefined:_0x12bc80['body'][_0x8560('0xab')][0x0][_0x8560('0x8')],'fax':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x5c')]['to'][0x0])?undefined:_0x12bc80[_0x8560('0x5c')]['to'][0x0]},client9002);})['then'](function(){if(_0x5e4d1d){if(_['isNil'](_0x12bc80[_0x8560('0x5c')]['from'])){_0x12bc80[_0x8560('0x5c')][_0x8560('0xb1')]=util['format'](_0x8560('0xb2'),_0x5e4d1d[_0x8560('0x3f')],_0x5e4d1d[_0x8560('0xb3')]);}if(_0x5e4d1d[_0x8560('0xa8')]){if(_0x5e4d1d['List'][_0x8560('0xa9')]['length']){return _0x5e4d1d['List']['Contacts'][0x0];}else{return db[_0x8560('0x79')]['create'](_['defaults'](_0x12bc80[_0x8560('0x5c')],{'firstName':_0x12bc80[_0x8560('0x5c')]['to'][0x0],'phone':_0x12bc80[_0x8560('0x5c')]['to'][0x0],'fax':_0x12bc80[_0x8560('0x5c')]['to'][0x0],'ListId':_0x5e4d1d[_0x8560('0xb4')]}));}}else{throw new Error(_0x8560('0xb5'));}}else{throw new Error(_0x8560('0xb6'));}})[_0x8560('0x24')](function(_0x5f4b86){if(_0x5f4b86){return db[_0x8560('0x77')][_0x8560('0x64')]({'where':{'ContactId':_0x5f4b86['id'],'closed':![],'FaxAccountId':_0x5e4d1d['id']}})[_0x8560('0x24')](function(_0x4bbfe1){if(_0x4bbfe1){return[_0x4bbfe1,![]];}return db[_0x8560('0x77')]['create']({'UserId':_0x12bc80[_0x8560('0x5d')]['id'],'ContactId':_0x5f4b86['id'],'FaxAccountId':_0x5e4d1d['id'],'fax':_0x12bc80['body']['to'][0x0],'firstMsgDirection':_0x8560('0xb7'),'Messages':[_[_0x8560('0x52')](_0x12bc80[_0x8560('0x5c')],{'read':![],'body':_0x12bc80['body'][_0x8560('0xab')][0x0][_0x8560('0xb8')],'FaxAccountId':_0x5e4d1d['id'],'UserId':_0x12bc80[_0x8560('0x5d')]['id'],'ContactId':_0x5f4b86['id'],'AttachmentId':_0x12bc80['body'][_0x8560('0xab')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':'Messages'}]})[_0x8560('0x24')](function(_0x399bf9){return[_0x399bf9,!![]];});});}else{throw new Error(_0x8560('0xb9'));}})[_0x8560('0xba')](function(_0x4d0136,_0x236c28){if(_0x236c28){return _0x4d0136;}return db[_0x8560('0xa2')]['create']({'direction':_0x8560('0xb7'),'read':![],'body':_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0xb8')],'FaxAccountId':_0x5e4d1d['id'],'FaxInteractionId':_0x4d0136['id'],'UserId':_0x12bc80[_0x8560('0x5d')]['id'],'ContactId':_0x4d0136[_0x8560('0xbb')],'AttachmentId':_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][0x0]['id']})[_0x8560('0x24')](function(_0x51aecf){_0x4d0136[_0x8560('0xbc')][_0x8560('0xbd')]=[];_0x4d0136['dataValues'][_0x8560('0xbd')][_0x8560('0x8d')](_0x51aecf['dataValues']);return _0x4d0136;});})[_0x8560('0x24')](function(_0x2c6042){respondWithRpcPromise(_0x8560('0xbe'),_0x8560('0xbe'),{'FaxAccountId':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x63')]['id'])?undefined:_0x12bc80[_0x8560('0x63')]['id'],'path':_['isNil'](_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0x8')])?undefined:_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0x8')],'fax':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x5c')]['to'][0x0])?undefined:_0x12bc80['body']['to'][0x0],'AttachmentId':_0x12bc80[_0x8560('0x5c')]['attachments'][0x0]['id']},client9002)['then'](function(_0x1556db){logger['info'](_0x8560('0xbf'),_0x1556db);})[_0x8560('0x2e')](function(_0x215668){logger[_0x8560('0xc0')](_0x8560('0xbf'),_0x215668);});return _0x2c6042;})[_0x8560('0x24')](respondWithResult(_0xf97189,null))[_0x8560('0x2e')](handleError(_0xf97189,null));};exports[_0x8560('0xc1')]=function(_0x2e59b7,_0x4c005a,_0x3247ea){return db[_0x8560('0x43')][_0x8560('0x64')]({'where':{'id':_0x2e59b7[_0x8560('0x63')]['id']}})['then'](handleEntityNotFound(_0x4c005a,null))[_0x8560('0x24')](function(_0x551084){if(_0x551084){return _0x551084[_0x8560('0xc1')](_0x2e59b7[_0x8560('0x5c')]['ids'],_['omit'](_0x2e59b7[_0x8560('0x5c')],[_0x8560('0x6d'),'id'])||{})[_0x8560('0xba')](function(_0x5deaa1){for(var _0x1239ce=0x0;_0x1239ce<_0x2e59b7[_0x8560('0x5c')][_0x8560('0x6d')]['length'];_0x1239ce+=0x1){socket['emit']('userFaxAccount:save',{'UserId':Number(_0x2e59b7[_0x8560('0x5c')][_0x8560('0x6d')][_0x1239ce]),'FaxAccountId':Number(_0x2e59b7[_0x8560('0x63')]['id'])});}return _0x5deaa1;});}})['then'](respondWithResult(_0x4c005a,null))[_0x8560('0x2e')](handleError(_0x4c005a,null));};exports[_0x8560('0xc2')]=function(_0x36ff94,_0x29b2c5,_0x16c038){return db[_0x8560('0x43')]['find']({'where':{'id':_0x36ff94[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x29b2c5,null))['then'](function(_0x4d7bca){if(_0x4d7bca){return _0x4d7bca['removeAgents'](_0x36ff94[_0x8560('0x47')][_0x8560('0x6d')])[_0x8560('0x24')](function(){if(_[_0x8560('0xc3')](_0x36ff94['query']['ids'])){for(var _0x1f1581=0x0;_0x1f1581<_0x36ff94[_0x8560('0x47')][_0x8560('0x6d')][_0x8560('0x4e')];_0x1f1581+=0x1){socket[_0x8560('0xc4')](_0x8560('0xc5'),{'UserId':Number(_0x36ff94[_0x8560('0x47')]['ids'][_0x1f1581]),'FaxAccountId':Number(_0x36ff94[_0x8560('0x63')]['id'])});}}else{socket[_0x8560('0xc4')]('userFaxAccount:remove',{'UserId':Number(_0x36ff94['query'][_0x8560('0x6d')]),'FaxAccountId':Number(_0x36ff94['params']['id'])});}});}})['then'](respondWithStatusCode(_0x29b2c5,null))[_0x8560('0x2e')](handleError(_0x29b2c5,null));};exports[_0x8560('0xc6')]=function(_0x3291b1,_0x3d58ac,_0x40f28d){var _0xcd2de0={};var _0x5b36c5={};var _0x3f4b11;var _0x118dcf;return db[_0x8560('0x43')][_0x8560('0x71')]({'where':{'id':_0x3291b1[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x3d58ac,null))[_0x8560('0x24')](function(_0x10dbee){if(_0x10dbee){_0x3f4b11=_0x10dbee;_0x5b36c5[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0x7b')][_0x8560('0x5a')]);_0x5b36c5[_0x8560('0x47')]=_['keys'](_0x3291b1[_0x8560('0x47')]);_0x5b36c5['filters']=_['intersection'](_0x5b36c5[_0x8560('0x4b')],_0x5b36c5[_0x8560('0x47')]);_0xcd2de0['attributes']=_[_0x8560('0x4a')](_0x5b36c5['model'],qs['fields'](_0x3291b1[_0x8560('0x47')][_0x8560('0x4d')]));_0xcd2de0['attributes']=_0xcd2de0[_0x8560('0x4c')]['length']?_0xcd2de0['attributes']:_0x5b36c5[_0x8560('0x4b')];_0xcd2de0['order']=qs[_0x8560('0x50')](_0x3291b1[_0x8560('0x47')]['sort']);_0xcd2de0['where']=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0x3291b1[_0x8560('0x47')],_0x5b36c5[_0x8560('0x49')]));if(_0x3291b1[_0x8560('0x47')][_0x8560('0x54')]){_0xcd2de0[_0x8560('0x51')]=_[_0x8560('0x52')](_0xcd2de0[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0xcd2de0[_0x8560('0x4c')],function(_0x13e429){var _0x4eb165={};_0x4eb165[_0x13e429]={'$like':'%'+_0x3291b1[_0x8560('0x47')]['filter']+'%'};return _0x4eb165;})});}_0xcd2de0=_[_0x8560('0x52')]({},_0xcd2de0,_0x3291b1[_0x8560('0x55')]);return _0x3f4b11[_0x8560('0xc6')](_0xcd2de0);}})[_0x8560('0x24')](function(_0xb20153){if(_0xb20153){_0x118dcf=_0xb20153[_0x8560('0x4e')];if(!_0x3291b1[_0x8560('0x47')]['hasOwnProperty']('nolimit')){_0xcd2de0[_0x8560('0x35')]=qs[_0x8560('0x35')](_0x3291b1[_0x8560('0x47')][_0x8560('0x35')]);_0xcd2de0[_0x8560('0x32')]=qs['offset'](_0x3291b1[_0x8560('0x47')][_0x8560('0x32')]);}return _0x3f4b11[_0x8560('0xc6')](_0xcd2de0);}})['then'](function(_0x5ab1d7){if(_0x5ab1d7){return _0x5ab1d7?{'count':_0x118dcf,'rows':_0x5ab1d7}:null;}})[_0x8560('0x24')](respondWithResult(_0x3d58ac,null))[_0x8560('0x2e')](handleError(_0x3d58ac,null));};
\ No newline at end of file
+var _0xe1c0=['maxrate','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','transaction','get','VoiceExtension','tech','createdAt','updatedAt','TrunkId','findById','FaxMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','CmContact','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','Contacts','out','Messages','Contact\x20not\x20found','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','spread','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','FaxAccount,\x20%s,\x20%s','message','result','status','end','json','offset','limit','count','Content-Range','apply','update','destroy','sendStatus','stack','name','FaxAccount','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','params','mandatoryDispositionPause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','FaxAccounts','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Pause','describe','FaxAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','nolimit','includeAll','Contact','User','Owner','fullname','internal','color','tag','sequelize','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','exten','localstationid','system','description','Fax\x20Extension','appdata','push','Answer','Set','faxdetect','headerinfo'];(function(_0x3a686a,_0x1b43c2){var _0x30d059=function(_0x1c2854){while(--_0x1c2854){_0x3a686a['push'](_0x3a686a['shift']());}};_0x30d059(++_0x1b43c2);}(_0xe1c0,0x199));var _0x0e1c=function(_0x472554,_0xaee61c){_0x472554=_0x472554-0x0;var _0x20c336=_0xe1c0[_0x472554];return _0x20c336;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e1c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0e1c('0x1'));var moment=require(_0x0e1c('0x2'));var BPromise=require(_0x0e1c('0x3'));var Mustache=require(_0x0e1c('0x4'));var util=require(_0x0e1c('0x5'));var path=require(_0x0e1c('0x6'));var sox=require(_0x0e1c('0x7'));var csv=require('to-csv');var ejs=require(_0x0e1c('0x8'));var fs=require('fs');var fs_extra=require(_0x0e1c('0x9'));var _=require(_0x0e1c('0xa'));var squel=require(_0x0e1c('0xb'));var crypto=require(_0x0e1c('0xc'));var jsforce=require(_0x0e1c('0xd'));var deskjs=require(_0x0e1c('0xe'));var toCsv=require(_0x0e1c('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0e1c('0x10'));var as=require(_0x0e1c('0x11'));var hardwareService=require(_0x0e1c('0x12'));var logger=require(_0x0e1c('0x13'))(_0x0e1c('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0e1c('0x15'))['db'];config[_0x0e1c('0x16')]=_[_0x0e1c('0x17')](config[_0x0e1c('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x0e1c('0x18'))(new Redis(config[_0x0e1c('0x16')]));require(_0x0e1c('0x19'))[_0x0e1c('0x1a')](socket);var jayson=require(_0x0e1c('0x1b'));var client=jayson[_0x0e1c('0x1c')][_0x0e1c('0x1d')]({'port':0x232c});var client9002=jayson[_0x0e1c('0x1c')][_0x0e1c('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0xa22614,_0x1685be,_0x525d44,_0x2f9bfe){return new BPromise(function(_0x437fc4,_0x50c904){var _0x4f74c7=_0x2f9bfe||client;return _0x4f74c7[_0x0e1c('0x1e')](_0xa22614,_0x525d44)[_0x0e1c('0x1f')](function(_0x1d0ac5){logger[_0x0e1c('0x20')]('FaxAccount,\x20%s,\x20%s',_0x1685be,'request\x20sent');logger[_0x0e1c('0x21')](_0x0e1c('0x22'),_0x1685be,'request\x20sent',JSON['stringify'](_0x1d0ac5));if(_0x1d0ac5[_0x0e1c('0x23')]){if(_0x1d0ac5[_0x0e1c('0x23')]['code']===0x1f4){logger[_0x0e1c('0x23')](_0x0e1c('0x24'),_0x1685be,_0x1d0ac5[_0x0e1c('0x23')]['message']);return _0x50c904(_0x1d0ac5[_0x0e1c('0x23')][_0x0e1c('0x25')]);}logger[_0x0e1c('0x23')]('FaxAccount,\x20%s,\x20%s',_0x1685be,_0x1d0ac5[_0x0e1c('0x23')][_0x0e1c('0x25')]);return _0x437fc4(_0x1d0ac5[_0x0e1c('0x23')][_0x0e1c('0x25')]);}else{logger['info'](_0x0e1c('0x24'),_0x1685be,'request\x20sent');_0x437fc4(_0x1d0ac5[_0x0e1c('0x26')][_0x0e1c('0x25')]);}})['catch'](function(_0x564eff){logger[_0x0e1c('0x23')]('FaxAccount,\x20%s,\x20%s',_0x1685be,_0x564eff);_0x50c904(_0x564eff);});});}function respondWithStatusCode(_0x577d2c,_0x2f1c3c){_0x2f1c3c=_0x2f1c3c||0xcc;return function(_0xcb3013){if(_0xcb3013){return _0x577d2c['sendStatus'](_0x2f1c3c);}return _0x577d2c[_0x0e1c('0x27')](_0x2f1c3c)[_0x0e1c('0x28')]();};}function respondWithResult(_0x3b9c91,_0x196c42){_0x196c42=_0x196c42||0xc8;return function(_0x80e888){if(_0x80e888){return _0x3b9c91[_0x0e1c('0x27')](_0x196c42)[_0x0e1c('0x29')](_0x80e888);}};}function respondWithFilteredResult(_0x3f37c3,_0x4446e6){return function(_0x579072){if(_0x579072){var _0x1d20e1=typeof _0x4446e6[_0x0e1c('0x2a')]==='undefined'&&typeof _0x4446e6[_0x0e1c('0x2b')]==='undefined';var _0x5ae169=_0x579072[_0x0e1c('0x2c')];var _0x3c747b=_0x1d20e1?0x0:_0x4446e6[_0x0e1c('0x2a')];var _0x5089ad=_0x1d20e1?_0x579072['count']:_0x4446e6[_0x0e1c('0x2a')]+_0x4446e6[_0x0e1c('0x2b')];var _0x207dc6;if(_0x5089ad>=_0x5ae169){_0x5089ad=_0x5ae169;_0x207dc6=0xc8;}else{_0x207dc6=0xce;}_0x3f37c3[_0x0e1c('0x27')](_0x207dc6);return _0x3f37c3['set'](_0x0e1c('0x2d'),_0x3c747b+'-'+_0x5089ad+'/'+_0x5ae169)[_0x0e1c('0x29')](_0x579072);}return null;};}function patchUpdates(_0x4ed94a){return function(_0x22242d){try{jsonpatch[_0x0e1c('0x2e')](_0x22242d,_0x4ed94a,!![]);}catch(_0x5c914f){return BPromise['reject'](_0x5c914f);}return _0x22242d['save']();};}function saveUpdates(_0x593822,_0x498ec8){return function(_0x5944f2){if(_0x5944f2){return _0x5944f2[_0x0e1c('0x2f')](_0x593822)['then'](function(_0x5d3846){return _0x5d3846;});}return null;};}function removeEntity(_0x216948,_0x445439){return function(_0x1d2e36){if(_0x1d2e36){return _0x1d2e36[_0x0e1c('0x30')]()[_0x0e1c('0x1f')](function(){var _0x20efc8=_0x1d2e36['get']({'plain':!![]});var _0x4bd339='FaxAccounts';return db['UserProfileResource'][_0x0e1c('0x30')]({'where':{'type':_0x4bd339,'resourceId':_0x20efc8['id']}})[_0x0e1c('0x1f')](function(){return _0x1d2e36;});})[_0x0e1c('0x1f')](function(){_0x216948[_0x0e1c('0x27')](0xcc)[_0x0e1c('0x28')]();});}};}function handleEntityNotFound(_0x1c28b6,_0x121042){return function(_0x2dcb6d){if(!_0x2dcb6d){_0x1c28b6[_0x0e1c('0x31')](0x194);}return _0x2dcb6d;};}function handleError(_0x464d56,_0x3b9401){_0x3b9401=_0x3b9401||0x1f4;return function(_0x4717e8){logger[_0x0e1c('0x23')](_0x4717e8[_0x0e1c('0x32')]);if(_0x4717e8[_0x0e1c('0x33')]){delete _0x4717e8[_0x0e1c('0x33')];}_0x464d56['status'](_0x3b9401)['send'](_0x4717e8);};}exports['index']=function(_0xc6e75c,_0x3b7eef){var _0x33efbf={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x272507={},_0x787fcd={'count':0x0,'rows':[]};var _0x5a1eb7=_['map'](db[_0x0e1c('0x34')][_0x0e1c('0x35')],function(_0x19eba7){return{'name':_0x19eba7['fieldName'],'type':_0x19eba7[_0x0e1c('0x36')][_0x0e1c('0x37')]};});_0x272507[_0x0e1c('0x38')]=_[_0x0e1c('0x39')](_0x5a1eb7,_0x0e1c('0x33'));_0x272507[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0xc6e75c[_0x0e1c('0x3a')]);_0x272507[_0x0e1c('0x3c')]=_['intersection'](_0x272507['model'],_0x272507[_0x0e1c('0x3a')]);_0x33efbf[_0x0e1c('0x3d')]=_[_0x0e1c('0x3e')](_0x272507[_0x0e1c('0x38')],qs['fields'](_0xc6e75c['query'][_0x0e1c('0x3f')]));_0x33efbf[_0x0e1c('0x3d')]=_0x33efbf[_0x0e1c('0x3d')][_0x0e1c('0x40')]?_0x33efbf['attributes']:_0x272507[_0x0e1c('0x38')];if(!_0xc6e75c[_0x0e1c('0x3a')][_0x0e1c('0x41')]('nolimit')){_0x33efbf[_0x0e1c('0x2b')]=qs[_0x0e1c('0x2b')](_0xc6e75c[_0x0e1c('0x3a')][_0x0e1c('0x2b')]);_0x33efbf[_0x0e1c('0x2a')]=qs[_0x0e1c('0x2a')](_0xc6e75c[_0x0e1c('0x3a')][_0x0e1c('0x2a')]);}_0x33efbf[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0xc6e75c[_0x0e1c('0x3a')]['sort']);_0x33efbf[_0x0e1c('0x44')]=qs[_0x0e1c('0x3c')](_[_0x0e1c('0x45')](_0xc6e75c[_0x0e1c('0x3a')],_0x272507[_0x0e1c('0x3c')]),_0x5a1eb7);if(_0xc6e75c[_0x0e1c('0x3a')][_0x0e1c('0x46')]){_0x33efbf[_0x0e1c('0x44')]=_['merge'](_0x33efbf[_0x0e1c('0x44')],{'$or':_[_0x0e1c('0x39')](_0x5a1eb7,function(_0x23b2a4){if(_0x23b2a4[_0x0e1c('0x36')]!==_0x0e1c('0x47')){var _0x3e7b9e={};_0x3e7b9e[_0x23b2a4[_0x0e1c('0x33')]]={'$like':'%'+_0xc6e75c['query']['filter']+'%'};return _0x3e7b9e;}})});}_0x33efbf=_[_0x0e1c('0x48')]({},_0x33efbf,_0xc6e75c[_0x0e1c('0x49')]);var _0x30689b={'where':_0x33efbf[_0x0e1c('0x44')]};return db[_0x0e1c('0x34')][_0x0e1c('0x2c')](_0x30689b)[_0x0e1c('0x1f')](function(_0x1236e7){_0x787fcd['count']=_0x1236e7;if(_0xc6e75c[_0x0e1c('0x3a')]['includeAll']){_0x33efbf[_0x0e1c('0x4a')]=[{'all':!![]}];}return db[_0x0e1c('0x34')][_0x0e1c('0x4b')](_0x33efbf);})[_0x0e1c('0x1f')](function(_0x179da8){_0x787fcd[_0x0e1c('0x4c')]=_0x179da8;return _0x787fcd;})[_0x0e1c('0x1f')](respondWithFilteredResult(_0x3b7eef,_0x33efbf))[_0x0e1c('0x4d')](handleError(_0x3b7eef,null));};exports['show']=function(_0x20061b,_0x40e867){var _0x49526a={'raw':![],'where':{'id':_0x20061b[_0x0e1c('0x4e')]['id']},'include':[{'model':db['Pause'],'as':_0x0e1c('0x4f')}]},_0x311ac9={};_0x311ac9['model']=_[_0x0e1c('0x3b')](db['FaxAccount'][_0x0e1c('0x35')]);_0x311ac9[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x20061b[_0x0e1c('0x3a')]);_0x311ac9['filters']=_[_0x0e1c('0x3e')](_0x311ac9[_0x0e1c('0x38')],_0x311ac9[_0x0e1c('0x3a')]);_0x49526a['attributes']=_[_0x0e1c('0x3e')](_0x311ac9[_0x0e1c('0x38')],qs[_0x0e1c('0x3f')](_0x20061b[_0x0e1c('0x3a')][_0x0e1c('0x3f')]));_0x49526a[_0x0e1c('0x3d')]=_0x49526a[_0x0e1c('0x3d')]['length']?_0x49526a[_0x0e1c('0x3d')]:_0x311ac9['model'];if(_0x20061b[_0x0e1c('0x3a')]['includeAll']){_0x49526a['include']=[{'all':!![]}];}_0x49526a=_[_0x0e1c('0x48')]({},_0x49526a,_0x20061b['options']);return db[_0x0e1c('0x34')][_0x0e1c('0x50')](_0x49526a)[_0x0e1c('0x1f')](handleEntityNotFound(_0x40e867,null))[_0x0e1c('0x1f')](respondWithResult(_0x40e867,null))[_0x0e1c('0x4d')](handleError(_0x40e867,null));};exports[_0x0e1c('0x51')]=function(_0x49b244,_0x4cba02){return db[_0x0e1c('0x34')][_0x0e1c('0x51')](_0x49b244[_0x0e1c('0x52')],{})[_0x0e1c('0x1f')](function(_0x24536e){var _0x3a5256=_0x49b244[_0x0e1c('0x53')]['get']({'plain':!![]});if(!_0x3a5256)throw new Error(_0x0e1c('0x54'));if(_0x3a5256['role']===_0x0e1c('0x53')){var _0x1fe4ec=_0x24536e['get']({'plain':!![]});var _0x6c00a0=_0x0e1c('0x55');return db['UserProfileSection'][_0x0e1c('0x50')]({'where':{'name':_0x6c00a0,'userProfileId':_0x3a5256[_0x0e1c('0x56')]},'raw':!![]})['then'](function(_0x7d147d){if(_0x7d147d&&_0x7d147d[_0x0e1c('0x57')]===0x0){return db[_0x0e1c('0x58')][_0x0e1c('0x51')]({'name':_0x1fe4ec[_0x0e1c('0x33')],'resourceId':_0x1fe4ec['id'],'type':_0x7d147d['name'],'sectionId':_0x7d147d['id']},{})[_0x0e1c('0x1f')](function(){return _0x24536e;});}else{return _0x24536e;}})[_0x0e1c('0x4d')](function(_0x1e70c4){logger['error'](_0x0e1c('0x59'),_0x1e70c4);throw _0x1e70c4;});}return _0x24536e;})[_0x0e1c('0x1f')](respondWithResult(_0x4cba02,0xc9))[_0x0e1c('0x4d')](handleError(_0x4cba02,null));};exports[_0x0e1c('0x2f')]=function(_0x4049d2,_0x4b6ce8){if(_0x4049d2[_0x0e1c('0x52')]['id']){delete _0x4049d2[_0x0e1c('0x52')]['id'];}return db[_0x0e1c('0x34')][_0x0e1c('0x50')]({'where':{'id':_0x4049d2[_0x0e1c('0x4e')]['id']},'include':[{'model':db[_0x0e1c('0x5a')],'as':_0x0e1c('0x4f')}]})[_0x0e1c('0x1f')](handleEntityNotFound(_0x4b6ce8,null))[_0x0e1c('0x1f')](saveUpdates(_0x4049d2[_0x0e1c('0x52')],null))[_0x0e1c('0x1f')](respondWithResult(_0x4b6ce8,null))[_0x0e1c('0x4d')](handleError(_0x4b6ce8,null));};exports[_0x0e1c('0x30')]=function(_0x22a146,_0x2edef8){return db['FaxAccount'][_0x0e1c('0x50')]({'where':{'id':_0x22a146['params']['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x2edef8,null))[_0x0e1c('0x1f')](removeEntity(_0x2edef8,null))[_0x0e1c('0x4d')](handleError(_0x2edef8,null));};exports[_0x0e1c('0x5b')]=function(_0x495fea,_0x44f77a){return db[_0x0e1c('0x34')][_0x0e1c('0x5b')]()['then'](respondWithResult(_0x44f77a,null))[_0x0e1c('0x4d')](handleError(_0x44f77a,null));};exports['addDisposition']=function(_0x542334,_0x489c40,_0x46fdde){if(_0x542334[_0x0e1c('0x52')]['id']){delete _0x542334[_0x0e1c('0x52')]['id'];}return db['FaxAccount'][_0x0e1c('0x50')]({'where':{'id':_0x542334[_0x0e1c('0x4e')]['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x489c40,null))[_0x0e1c('0x1f')](function(_0x53b696){if(_0x53b696){_0x542334[_0x0e1c('0x52')][_0x0e1c('0x5c')]=_0x53b696['id'];return db['Disposition'][_0x0e1c('0x51')](_0x542334[_0x0e1c('0x52')]);}})['then'](respondWithResult(_0x489c40,null))['catch'](handleError(_0x489c40,null));};exports[_0x0e1c('0x5d')]=function(_0x4e71fc,_0x197285,_0x52457b){var _0x1299eb={'raw':![],'where':{}};var _0xe1769a={};var _0x371b9a={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0e1c('0x5e')]({'where':{'id':_0x4e71fc['params']['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x197285,null))['then'](function(_0x4d3393){if(_0x4d3393){_0xe1769a['model']=_['keys'](db['Disposition']['rawAttributes']);_0xe1769a[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x4e71fc[_0x0e1c('0x3a')]);_0xe1769a['filters']=_[_0x0e1c('0x3e')](_0xe1769a[_0x0e1c('0x38')],_0xe1769a[_0x0e1c('0x3a')]);_0x1299eb['attributes']=_['intersection'](_0xe1769a[_0x0e1c('0x38')],qs[_0x0e1c('0x3f')](_0x4e71fc[_0x0e1c('0x3a')][_0x0e1c('0x3f')]));_0x1299eb[_0x0e1c('0x3d')]=_0x1299eb[_0x0e1c('0x3d')][_0x0e1c('0x40')]?_0x1299eb['attributes']:_0xe1769a[_0x0e1c('0x38')];if(!_0x4e71fc[_0x0e1c('0x3a')][_0x0e1c('0x41')]('nolimit')){_0x1299eb['limit']=qs[_0x0e1c('0x2b')](_0x4e71fc['query'][_0x0e1c('0x2b')]);_0x1299eb[_0x0e1c('0x2a')]=qs[_0x0e1c('0x2a')](_0x4e71fc[_0x0e1c('0x3a')][_0x0e1c('0x2a')]);}_0x1299eb[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0x4e71fc['query'][_0x0e1c('0x43')]);_0x1299eb['where']=qs[_0x0e1c('0x3c')](_['pick'](_0x4e71fc['query'],_0xe1769a[_0x0e1c('0x3c')]));_0x1299eb['where'][_0x0e1c('0x5c')]=_0x4d3393['id'];if(_0x4e71fc[_0x0e1c('0x3a')][_0x0e1c('0x46')]){_0x1299eb[_0x0e1c('0x44')]=_['merge'](_0x1299eb['where'],{'$or':_[_0x0e1c('0x39')](_0x1299eb[_0x0e1c('0x3d')],function(_0x2ab164){var _0x47d53a={};_0x47d53a[_0x2ab164]={'$like':'%'+_0x4e71fc['query'][_0x0e1c('0x46')]+'%'};return _0x47d53a;})});}_0x1299eb=_[_0x0e1c('0x48')]({},_0x1299eb,_0x4e71fc['options']);return db[_0x0e1c('0x5f')][_0x0e1c('0x2c')]({'where':_0x1299eb[_0x0e1c('0x44')]})['then'](function(_0x4a8a1d){_0x371b9a['count']=_0x4a8a1d;if(_0x4e71fc[_0x0e1c('0x3a')]['includeAll']){_0x1299eb[_0x0e1c('0x4a')]=[{'all':!![]}];}return db[_0x0e1c('0x5f')][_0x0e1c('0x4b')](_0x1299eb);})[_0x0e1c('0x1f')](function(_0x25dfbe){_0x371b9a[_0x0e1c('0x4c')]=_0x25dfbe;return _0x371b9a;});}})[_0x0e1c('0x1f')](respondWithFilteredResult(_0x197285,_0x1299eb))[_0x0e1c('0x4d')](handleError(_0x197285,null));};exports['removeDispositions']=function(_0x2b0d9b,_0x385c8b,_0x5e26ed){return db['FaxAccount'][_0x0e1c('0x50')]({'where':{'id':_0x2b0d9b[_0x0e1c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x385c8b,null))[_0x0e1c('0x1f')](function(_0x12603f){if(_0x12603f){return _0x12603f[_0x0e1c('0x60')](_0x2b0d9b[_0x0e1c('0x3a')][_0x0e1c('0x61')]);}})['then'](respondWithStatusCode(_0x385c8b,null))[_0x0e1c('0x4d')](handleError(_0x385c8b,null));};exports[_0x0e1c('0x62')]=function(_0x2fa182,_0x50efbd,_0x20517b){if(_0x2fa182['body']['id']){delete _0x2fa182['body']['id'];}return db[_0x0e1c('0x34')][_0x0e1c('0x50')]({'where':{'id':_0x2fa182[_0x0e1c('0x4e')]['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x50efbd,null))[_0x0e1c('0x1f')](function(_0x24c44b){if(_0x24c44b){_0x2fa182[_0x0e1c('0x52')][_0x0e1c('0x5c')]=_0x24c44b['id'];return db[_0x0e1c('0x63')][_0x0e1c('0x51')](_0x2fa182[_0x0e1c('0x52')]);}})[_0x0e1c('0x1f')](respondWithResult(_0x50efbd,null))[_0x0e1c('0x4d')](handleError(_0x50efbd,null));};exports[_0x0e1c('0x64')]=function(_0x2319fa,_0x496f1b,_0x24505e){var _0x3d1d92={'raw':![],'where':{}};var _0xa06478={};var _0x474faf={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0e1c('0x5e')]({'where':{'id':_0x2319fa[_0x0e1c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x496f1b,null))[_0x0e1c('0x1f')](function(_0x4a8c62){if(_0x4a8c62){_0xa06478['model']=_['keys'](db['CannedAnswer'][_0x0e1c('0x35')]);_0xa06478[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x2319fa[_0x0e1c('0x3a')]);_0xa06478[_0x0e1c('0x3c')]=_[_0x0e1c('0x3e')](_0xa06478['model'],_0xa06478[_0x0e1c('0x3a')]);_0x3d1d92[_0x0e1c('0x3d')]=_[_0x0e1c('0x3e')](_0xa06478['model'],qs['fields'](_0x2319fa[_0x0e1c('0x3a')][_0x0e1c('0x3f')]));_0x3d1d92['attributes']=_0x3d1d92[_0x0e1c('0x3d')][_0x0e1c('0x40')]?_0x3d1d92['attributes']:_0xa06478[_0x0e1c('0x38')];if(!_0x2319fa['query'][_0x0e1c('0x41')]('nolimit')){_0x3d1d92[_0x0e1c('0x2b')]=qs[_0x0e1c('0x2b')](_0x2319fa[_0x0e1c('0x3a')][_0x0e1c('0x2b')]);_0x3d1d92['offset']=qs[_0x0e1c('0x2a')](_0x2319fa[_0x0e1c('0x3a')][_0x0e1c('0x2a')]);}_0x3d1d92[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0x2319fa['query']['sort']);_0x3d1d92[_0x0e1c('0x44')]=qs[_0x0e1c('0x3c')](_['pick'](_0x2319fa['query'],_0xa06478[_0x0e1c('0x3c')]));_0x3d1d92[_0x0e1c('0x44')][_0x0e1c('0x5c')]=_0x4a8c62['id'];if(_0x2319fa['query'][_0x0e1c('0x46')]){_0x3d1d92[_0x0e1c('0x44')]=_[_0x0e1c('0x48')](_0x3d1d92[_0x0e1c('0x44')],{'$or':_[_0x0e1c('0x39')](_0x3d1d92[_0x0e1c('0x3d')],function(_0x5d5421){var _0x580bd0={};_0x580bd0[_0x5d5421]={'$like':'%'+_0x2319fa[_0x0e1c('0x3a')][_0x0e1c('0x46')]+'%'};return _0x580bd0;})});}_0x3d1d92=_[_0x0e1c('0x48')]({},_0x3d1d92,_0x2319fa['options']);return db[_0x0e1c('0x63')]['count']({'where':_0x3d1d92['where']})[_0x0e1c('0x1f')](function(_0x3bbb1d){_0x474faf['count']=_0x3bbb1d;if(_0x2319fa['query']['includeAll']){_0x3d1d92[_0x0e1c('0x4a')]=[{'all':!![]}];}return db[_0x0e1c('0x63')][_0x0e1c('0x4b')](_0x3d1d92);})[_0x0e1c('0x1f')](function(_0x4e93c8){_0x474faf['rows']=_0x4e93c8;return _0x474faf;});}})['then'](respondWithFilteredResult(_0x496f1b,_0x3d1d92))['catch'](handleError(_0x496f1b,null));};exports[_0x0e1c('0x65')]=function(_0x334b52,_0x22e25e,_0x3a7d26){return db[_0x0e1c('0x34')][_0x0e1c('0x50')]({'where':{'id':_0x334b52[_0x0e1c('0x4e')]['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x22e25e,null))['then'](function(_0x428f61){if(_0x428f61){return _0x428f61[_0x0e1c('0x65')](_0x334b52[_0x0e1c('0x3a')][_0x0e1c('0x61')]);}})['then'](respondWithStatusCode(_0x22e25e,null))[_0x0e1c('0x4d')](handleError(_0x22e25e,null));};exports[_0x0e1c('0x66')]=function(_0xc92a35,_0x1d98ce,_0x1406d9){return db[_0x0e1c('0x67')][_0x0e1c('0x50')]({'where':{'id':_0xc92a35[_0x0e1c('0x4e')]['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x1d98ce,null))[_0x0e1c('0x1f')](function(_0x227dd0){if(_0x227dd0){return _0x227dd0[_0x0e1c('0x66')](_0xc92a35[_0x0e1c('0x52')][_0x0e1c('0x61')],_[_0x0e1c('0x68')](_0xc92a35[_0x0e1c('0x52')],[_0x0e1c('0x61'),'id'])||{});}})[_0x0e1c('0x1f')](respondWithResult(_0x1d98ce,null))[_0x0e1c('0x4d')](handleError(_0x1d98ce,null));};exports[_0x0e1c('0x69')]=function(_0x14811a,_0x458d5d,_0x1a47c8){var _0x1e129d={'raw':![],'where':{}};var _0x50d34e={};var _0x5a60fd={'count':0x0,'rows':[]};return db[_0x0e1c('0x34')]['findOne']({'where':{'id':_0x14811a['params']['id']}})['then'](handleEntityNotFound(_0x458d5d,null))[_0x0e1c('0x1f')](function(_0x252dcc){if(_0x252dcc){_0x50d34e[_0x0e1c('0x38')]=_[_0x0e1c('0x3b')](db[_0x0e1c('0x67')][_0x0e1c('0x35')]);_0x50d34e[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x14811a[_0x0e1c('0x3a')]);_0x50d34e[_0x0e1c('0x3c')]=_[_0x0e1c('0x3e')](_0x50d34e[_0x0e1c('0x38')],_0x50d34e[_0x0e1c('0x3a')]);_0x1e129d[_0x0e1c('0x3d')]=_[_0x0e1c('0x3e')](_0x50d34e[_0x0e1c('0x38')],qs[_0x0e1c('0x3f')](_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x3f')]));_0x1e129d[_0x0e1c('0x3d')]=_0x1e129d[_0x0e1c('0x3d')][_0x0e1c('0x40')]?_0x1e129d['attributes']:_0x50d34e[_0x0e1c('0x38')];if(!_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x41')](_0x0e1c('0x6a'))){_0x1e129d[_0x0e1c('0x2b')]=qs[_0x0e1c('0x2b')](_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x2b')]);_0x1e129d[_0x0e1c('0x2a')]=qs[_0x0e1c('0x2a')](_0x14811a[_0x0e1c('0x3a')]['offset']);}_0x1e129d[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0x14811a['query'][_0x0e1c('0x43')]);_0x1e129d[_0x0e1c('0x44')]=qs[_0x0e1c('0x3c')](_[_0x0e1c('0x45')](_0x14811a[_0x0e1c('0x3a')],_0x50d34e[_0x0e1c('0x3c')]));_0x1e129d['where'][_0x0e1c('0x5c')]=_0x252dcc['id'];if(_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x46')]){_0x1e129d[_0x0e1c('0x44')]=_[_0x0e1c('0x48')](_0x1e129d[_0x0e1c('0x44')],{'$or':_[_0x0e1c('0x39')](_0x1e129d['attributes'],function(_0x10c6e4){var _0x451163={};_0x451163[_0x10c6e4]={'$like':'%'+_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x46')]+'%'};return _0x451163;})});}_0x1e129d=_[_0x0e1c('0x48')]({},_0x1e129d,_0x14811a[_0x0e1c('0x49')]);return db[_0x0e1c('0x67')][_0x0e1c('0x2c')]({'where':_0x1e129d['where']})[_0x0e1c('0x1f')](function(_0x56eb3a){_0x5a60fd[_0x0e1c('0x2c')]=_0x56eb3a;if(_0x14811a['query'][_0x0e1c('0x6b')]){_0x1e129d[_0x0e1c('0x4a')]=[{'model':db['CmContact'],'as':_0x0e1c('0x6c'),'required':![]},{'model':db[_0x0e1c('0x6d')],'as':_0x0e1c('0x6e'),'attributes':[_0x0e1c('0x33'),_0x0e1c('0x6f'),_0x0e1c('0x70')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0e1c('0x33'),_0x0e1c('0x71')],'where':_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x72')]?{'id':_0x14811a['query'][_0x0e1c('0x72')]}:undefined,'required':_0x14811a[_0x0e1c('0x3a')][_0x0e1c('0x72')]?!![]:![]}];}return db[_0x0e1c('0x67')][_0x0e1c('0x4b')](_0x1e129d);})[_0x0e1c('0x1f')](function(_0x1d2c71){_0x5a60fd[_0x0e1c('0x4c')]=_0x1d2c71;return _0x5a60fd;});}})[_0x0e1c('0x1f')](respondWithFilteredResult(_0x458d5d,_0x1e129d))['catch'](handleError(_0x458d5d,null));};exports['addApplications']=function(_0x54f23a,_0x5188ce,_0x4fae42){return db[_0x0e1c('0x34')][_0x0e1c('0x5e')]({'where':{'id':_0x54f23a[_0x0e1c('0x4e')]['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x5188ce,null))['then'](function(_0xa0fca1){if(_0xa0fca1){return db[_0x0e1c('0x73')]['transaction'](function(_0x4a16cd){return db[_0x0e1c('0x74')][_0x0e1c('0x30')]({'where':{'FaxAccountId':_0x54f23a['params']['id']},'transaction':_0x4a16cd})[_0x0e1c('0x1f')](function(_0x3d09b6){var _0x5ac155=_[_0x0e1c('0x39')](_0x54f23a[_0x0e1c('0x52')],function(_0x8c88e6){_0x8c88e6['FaxAccountId']=_0x54f23a[_0x0e1c('0x4e')]['id'];return _0x8c88e6;});return db[_0x0e1c('0x74')][_0x0e1c('0x75')](_0x5ac155,{'transaction':_0x4a16cd});});})[_0x0e1c('0x1f')](function(){return db[_0x0e1c('0x74')][_0x0e1c('0x76')]({'where':{'FaxAccountId':_0x54f23a[_0x0e1c('0x4e')]['id']},'order':_0x0e1c('0x77')});});}})[_0x0e1c('0x1f')](respondWithResult(_0x5188ce,null))['catch'](handleError(_0x5188ce,null));};exports['getApplications']=function(_0x4a2a56,_0xbab523,_0x5a680e){var _0x4acd88={};var _0x13a435={};var _0x145892;var _0x328ebd;return db[_0x0e1c('0x34')]['findOne']({'where':{'id':_0x4a2a56['params']['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0xbab523,null))[_0x0e1c('0x1f')](function(_0x4400db){if(_0x4400db){_0x145892=_0x4400db;_0x13a435[_0x0e1c('0x38')]=_[_0x0e1c('0x3b')](db['FaxApplication'][_0x0e1c('0x35')]);_0x13a435[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x4a2a56[_0x0e1c('0x3a')]);_0x13a435['filters']=_['intersection'](_0x13a435[_0x0e1c('0x38')],_0x13a435[_0x0e1c('0x3a')]);_0x4acd88[_0x0e1c('0x3d')]=_[_0x0e1c('0x3e')](_0x13a435[_0x0e1c('0x38')],qs[_0x0e1c('0x3f')](_0x4a2a56[_0x0e1c('0x3a')]['fields']));_0x4acd88[_0x0e1c('0x3d')]=_0x4acd88[_0x0e1c('0x3d')][_0x0e1c('0x40')]?_0x4acd88[_0x0e1c('0x3d')]:_0x13a435[_0x0e1c('0x38')];_0x4acd88[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0x4a2a56[_0x0e1c('0x3a')][_0x0e1c('0x43')]);_0x4acd88[_0x0e1c('0x44')]=qs[_0x0e1c('0x3c')](_[_0x0e1c('0x45')](_0x4a2a56['query'],_0x13a435['filters']));if(_0x4a2a56[_0x0e1c('0x3a')][_0x0e1c('0x46')]){_0x4acd88[_0x0e1c('0x44')]=_['merge'](_0x4acd88['where'],{'$or':_[_0x0e1c('0x39')](_0x4acd88[_0x0e1c('0x3d')],function(_0x245170){var _0x3d8bb9={};_0x3d8bb9[_0x245170]={'$like':'%'+_0x4a2a56[_0x0e1c('0x3a')][_0x0e1c('0x46')]+'%'};return _0x3d8bb9;})});}_0x4acd88=_[_0x0e1c('0x48')]({},_0x4acd88,_0x4a2a56[_0x0e1c('0x49')]);return _0x145892[_0x0e1c('0x78')](_0x4acd88);}})[_0x0e1c('0x1f')](function(_0x3ce7b9){if(_0x3ce7b9){_0x328ebd=_0x3ce7b9['length'];if(!_0x4a2a56[_0x0e1c('0x3a')][_0x0e1c('0x41')](_0x0e1c('0x6a'))){_0x4acd88[_0x0e1c('0x2b')]=qs[_0x0e1c('0x2b')](_0x4a2a56['query'][_0x0e1c('0x2b')]);_0x4acd88[_0x0e1c('0x2a')]=qs['offset'](_0x4a2a56[_0x0e1c('0x3a')]['offset']);}return _0x145892[_0x0e1c('0x78')](_0x4acd88);}})[_0x0e1c('0x1f')](function(_0x4b58f4){if(_0x4b58f4){return _0x4b58f4?{'count':_0x328ebd,'rows':_0x4b58f4}:null;}})[_0x0e1c('0x1f')](respondWithResult(_0xbab523,null))[_0x0e1c('0x4d')](handleError(_0xbab523,null));};function Extension(_0x40eb39,_0x11711b,_0x140989,_0x38a859){this[_0x0e1c('0x79')]=_0x0e1c('0x7a');this[_0x0e1c('0x7b')]=_0x40eb39[_0x0e1c('0x7c')];this['app']=_0x38a859;this['type']=_0x0e1c('0x7d');this[_0x0e1c('0x7e')]=_0x0e1c('0x7f');this[_0x0e1c('0x5c')]=_0x40eb39['id'];this[_0x0e1c('0x77')]=_0x11711b;this[_0x0e1c('0x80')]=_0x140989;}function createExtensionsReciveFax(_0x5d919b){var _0x47d6f9=0x1;var _0x594851=[];_0x594851[_0x0e1c('0x81')](new Extension(_0x5d919b,_0x47d6f9,'',_0x0e1c('0x82')));_0x47d6f9+=0x1;_0x594851[_0x0e1c('0x81')](new Extension(_0x5d919b,_0x47d6f9,'CDR(type)=inbound-fax',_0x0e1c('0x83')));_0x47d6f9+=0x1;for(var _0x9d2ca1 in _0x5d919b){if(_0x5d919b[_0x0e1c('0x41')](_0x9d2ca1)&&(_0x9d2ca1==='ecm'||_0x9d2ca1===_0x0e1c('0x7c')||_0x9d2ca1==='gateway'||_0x9d2ca1===_0x0e1c('0x84')||_0x9d2ca1===_0x0e1c('0x85')||_0x9d2ca1===_0x0e1c('0x86')||_0x9d2ca1==='minrate'||_0x9d2ca1==='modem'||_0x9d2ca1===_0x0e1c('0x87'))){_0x594851[_0x0e1c('0x81')](new Extension(_0x5d919b,_0x47d6f9,_0x0e1c('0x88')+_0x9d2ca1+')='+_0x5d919b[_0x9d2ca1],_0x0e1c('0x83')));_0x47d6f9+=0x1;}}_0x594851['push'](new Extension(_0x5d919b,_0x47d6f9,'6',_0x0e1c('0x89')));_0x47d6f9+=0x1;_0x594851[_0x0e1c('0x81')](new Extension(_0x5d919b,_0x47d6f9,'/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',_0x0e1c('0x8a')));_0x47d6f9=0x0;return _0x594851;}exports[_0x0e1c('0x8b')]=function(_0x440151,_0x46a6f7,_0x3658ee){var _0xf229d7;return db[_0x0e1c('0x73')][_0x0e1c('0x8c')](function(_0x212d50){return db[_0x0e1c('0x34')][_0x0e1c('0x51')](_0x440151[_0x0e1c('0x52')],{'transaction':_0x212d50})[_0x0e1c('0x1f')](function(_0xe3f055){_0xf229d7=_0xe3f055[_0x0e1c('0x8d')]({'plain':!![]});return db['VoiceExtension'][_0x0e1c('0x75')](createExtensionsReciveFax(_0xf229d7),{'transaction':_0x212d50});});})[_0x0e1c('0x1f')](function(){return _0xf229d7;})[_0x0e1c('0x1f')](respondWithResult(_0x46a6f7,null))[_0x0e1c('0x4d')](handleError(_0x46a6f7,null));};exports['updateAccountApplications']=function(_0x4beca6,_0x3075a5,_0x4e033d){var _0x8f002a;return db[_0x0e1c('0x73')][_0x0e1c('0x8c')](function(_0x40e668){return db[_0x0e1c('0x34')]['update'](_0x4beca6[_0x0e1c('0x52')],{'where':{'id':_0x4beca6[_0x0e1c('0x52')]['id']},'transaction':_0x40e668})[_0x0e1c('0x1f')](function(_0xc0dc02){return db[_0x0e1c('0x8e')][_0x0e1c('0x30')]({'where':{'FaxAccountId':_0x4beca6[_0x0e1c('0x52')]['id']},'transaction':_0x40e668})[_0x0e1c('0x1f')](function(_0x56311b){return db[_0x0e1c('0x8e')][_0x0e1c('0x75')](createExtensionsReciveFax(_[_0x0e1c('0x68')](_0x4beca6['body'],[_0x0e1c('0x8f'),_0x0e1c('0x37'),_0x0e1c('0x90'),_0x0e1c('0x91'),_0x0e1c('0x92'),'ListId'])),{'transaction':_0x40e668});});});})[_0x0e1c('0x1f')](function(){return db[_0x0e1c('0x34')][_0x0e1c('0x93')](_0x4beca6[_0x0e1c('0x52')]['id']);})['then'](respondWithResult(_0x3075a5,null))[_0x0e1c('0x4d')](handleError(_0x3075a5,null));};exports['getMessages']=function(_0x4825f5,_0x3fccc2,_0x2eec49){var _0x583bfa={'raw':!![],'where':{}};var _0x517dad={};var _0x1c4d5c={'count':0x0,'rows':[]};return db[_0x0e1c('0x34')][_0x0e1c('0x5e')]({'where':{'id':_0x4825f5[_0x0e1c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3fccc2,null))[_0x0e1c('0x1f')](function(_0x114fc3){if(_0x114fc3){_0x517dad['model']=_['keys'](db[_0x0e1c('0x94')][_0x0e1c('0x35')]);_0x517dad[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x4825f5['query']);_0x517dad[_0x0e1c('0x3c')]=_[_0x0e1c('0x3e')](_0x517dad[_0x0e1c('0x38')],_0x517dad[_0x0e1c('0x3a')]);_0x583bfa[_0x0e1c('0x3d')]=_[_0x0e1c('0x3e')](_0x517dad[_0x0e1c('0x38')],qs[_0x0e1c('0x3f')](_0x4825f5[_0x0e1c('0x3a')][_0x0e1c('0x3f')]));_0x583bfa[_0x0e1c('0x3d')]=_0x583bfa[_0x0e1c('0x3d')]['length']?_0x583bfa[_0x0e1c('0x3d')]:_0x517dad[_0x0e1c('0x38')];if(!_0x4825f5['query'][_0x0e1c('0x41')]('nolimit')){_0x583bfa[_0x0e1c('0x2b')]=qs[_0x0e1c('0x2b')](_0x4825f5['query']['limit']);_0x583bfa[_0x0e1c('0x2a')]=qs[_0x0e1c('0x2a')](_0x4825f5['query']['offset']);}_0x583bfa[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0x4825f5[_0x0e1c('0x3a')][_0x0e1c('0x43')]);_0x583bfa[_0x0e1c('0x44')]=qs[_0x0e1c('0x3c')](_[_0x0e1c('0x45')](_0x4825f5[_0x0e1c('0x3a')],_0x517dad[_0x0e1c('0x3c')]));_0x583bfa[_0x0e1c('0x44')][_0x0e1c('0x5c')]=_0x114fc3['id'];if(_0x4825f5[_0x0e1c('0x3a')]['filter']){_0x583bfa[_0x0e1c('0x44')]=_[_0x0e1c('0x48')](_0x583bfa[_0x0e1c('0x44')],{'$or':_[_0x0e1c('0x39')](_0x583bfa['attributes'],function(_0x2f68be){var _0x1b7e74={};_0x1b7e74[_0x2f68be]={'$like':'%'+_0x4825f5[_0x0e1c('0x3a')][_0x0e1c('0x46')]+'%'};return _0x1b7e74;})});}if(_0x4825f5[_0x0e1c('0x3a')][_0x0e1c('0x95')]){var _0x7f8db4=_0x4825f5[_0x0e1c('0x3a')][_0x0e1c('0x95')][_0x0e1c('0x96')](',');var _0x2c1642={};_0x2c1642[_0x7f8db4[0x0]]={'$gte':moment(_0x7f8db4[0x1])['format'](_0x0e1c('0x97'))};_0x583bfa[_0x0e1c('0x44')]=_[_0x0e1c('0x48')](_0x583bfa['where'],_0x2c1642);}_0x583bfa=_['merge']({},_0x583bfa,_0x4825f5[_0x0e1c('0x49')]);return db[_0x0e1c('0x94')][_0x0e1c('0x2c')]({'where':_0x583bfa[_0x0e1c('0x44')]})['then'](function(_0x61a814){_0x1c4d5c['count']=_0x61a814;if(_0x4825f5['query'][_0x0e1c('0x6b')]){_0x583bfa[_0x0e1c('0x4a')]=[{'all':!![]}];}return db[_0x0e1c('0x94')][_0x0e1c('0x4b')](_0x583bfa);})[_0x0e1c('0x1f')](function(_0x335e1e){_0x1c4d5c[_0x0e1c('0x4c')]=_0x335e1e;return _0x1c4d5c;});}})[_0x0e1c('0x1f')](respondWithFilteredResult(_0x3fccc2,_0x583bfa))['catch'](handleError(_0x3fccc2,null));};exports[_0x0e1c('0x98')]=function(_0x4c838f,_0x39dc52,_0x1413b9){var _0x513567,_0x7cf4ae={},_0x5332e2;if(_0x4c838f[_0x0e1c('0x52')]['to']){_0x5332e2=_0x4c838f[_0x0e1c('0x52')]['to'][0x0];}return db[_0x0e1c('0x34')][_0x0e1c('0x50')]({'where':{'id':_0x4c838f['params']['id']},'include':[{'model':db[_0x0e1c('0x99')],'as':_0x0e1c('0x9a'),'include':[{'model':db[_0x0e1c('0x9b')],'as':'Contacts','where':{'fax':_0x5332e2},'limit':0x1,'order':[[_0x0e1c('0x91'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x39dc52,null))['then'](function(_0x256d7b){_0x513567=_0x256d7b;if(_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')]&&_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][_0x0e1c('0x40')]){for(var _0x4629ae=0x0;_0x4629ae<_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')]['length'];_0x4629ae+=0x1){_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][_0x4629ae]={'filename':_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][_0x4629ae][_0x0e1c('0x33')],'id':_0x4c838f[_0x0e1c('0x52')]['attachments'][_0x4629ae]['id'],'path':path[_0x0e1c('0x9d')](config[_0x0e1c('0x9e')],_0x0e1c('0x9f'),_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][_0x4629ae][_0x0e1c('0xa0')])};}}return respondWithRpcPromise(_0x0e1c('0xa1'),_0x0e1c('0xa1'),{'FaxAccountId':_[_0x0e1c('0xa2')](_0x4c838f[_0x0e1c('0x4e')]['id'])?undefined:_0x4c838f['params']['id'],'path':_['isNil'](_0x4c838f['body'][_0x0e1c('0x9c')][0x0]['path'])?undefined:_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][0x0][_0x0e1c('0x6')],'fax':_[_0x0e1c('0xa2')](_0x4c838f[_0x0e1c('0x52')]['to'][0x0])?undefined:_0x4c838f[_0x0e1c('0x52')]['to'][0x0]},client9002);})[_0x0e1c('0x1f')](function(){if(_0x513567){if(_[_0x0e1c('0xa2')](_0x4c838f['body'][_0x0e1c('0xa3')])){_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0xa3')]=util[_0x0e1c('0xa4')](_0x0e1c('0xa5'),_0x513567[_0x0e1c('0x33')],_0x513567['fax']);}if(_0x513567[_0x0e1c('0x9a')]){if(_0x513567[_0x0e1c('0x9a')][_0x0e1c('0xa6')][_0x0e1c('0x40')]){return _0x513567[_0x0e1c('0x9a')][_0x0e1c('0xa6')][0x0];}else{return db[_0x0e1c('0x9b')]['create'](_[_0x0e1c('0x17')](_0x4c838f[_0x0e1c('0x52')],{'firstName':_0x4c838f[_0x0e1c('0x52')]['to'][0x0],'phone':_0x4c838f[_0x0e1c('0x52')]['to'][0x0],'fax':_0x4c838f[_0x0e1c('0x52')]['to'][0x0],'ListId':_0x513567['ListId']}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x0e1c('0x1f')](function(_0x39d7a1){if(_0x39d7a1){return db[_0x0e1c('0x67')]['find']({'where':{'ContactId':_0x39d7a1['id'],'closed':![],'FaxAccountId':_0x513567['id']}})[_0x0e1c('0x1f')](function(_0x527401){if(_0x527401){return[_0x527401,![]];}return db[_0x0e1c('0x67')]['create']({'UserId':_0x4c838f[_0x0e1c('0x53')]['id'],'ContactId':_0x39d7a1['id'],'FaxAccountId':_0x513567['id'],'fax':_0x4c838f[_0x0e1c('0x52')]['to'][0x0],'firstMsgDirection':_0x0e1c('0xa7'),'Messages':[_[_0x0e1c('0x48')](_0x4c838f[_0x0e1c('0x52')],{'read':![],'body':_0x4c838f[_0x0e1c('0x52')]['attachments'][0x0]['filename'],'FaxAccountId':_0x513567['id'],'UserId':_0x4c838f[_0x0e1c('0x53')]['id'],'ContactId':_0x39d7a1['id'],'AttachmentId':_0x4c838f[_0x0e1c('0x52')]['attachments'][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x0e1c('0xa8')}]})['then'](function(_0x3a59f4){return[_0x3a59f4,!![]];});});}else{throw new Error(_0x0e1c('0xa9'));}})['spread'](function(_0x29216c,_0x44c14b){if(_0x44c14b){return _0x29216c;}return db[_0x0e1c('0x94')]['create']({'direction':_0x0e1c('0xa7'),'read':![],'body':_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][0x0]['filename'],'FaxAccountId':_0x513567['id'],'FaxInteractionId':_0x29216c['id'],'UserId':_0x4c838f[_0x0e1c('0x53')]['id'],'ContactId':_0x29216c['ContactId'],'AttachmentId':_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][0x0]['id']})[_0x0e1c('0x1f')](function(_0x183c24){_0x29216c[_0x0e1c('0xaa')]['Messages']=[];_0x29216c[_0x0e1c('0xaa')][_0x0e1c('0xa8')]['push'](_0x183c24[_0x0e1c('0xaa')]);return _0x29216c;});})[_0x0e1c('0x1f')](function(_0x341db2){respondWithRpcPromise(_0x0e1c('0xab'),_0x0e1c('0xab'),{'FaxAccountId':_['isNil'](_0x4c838f[_0x0e1c('0x4e')]['id'])?undefined:_0x4c838f['params']['id'],'path':_[_0x0e1c('0xa2')](_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][0x0][_0x0e1c('0x6')])?undefined:_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][0x0]['path'],'fax':_['isNil'](_0x4c838f[_0x0e1c('0x52')]['to'][0x0])?undefined:_0x4c838f[_0x0e1c('0x52')]['to'][0x0],'AttachmentId':_0x4c838f[_0x0e1c('0x52')][_0x0e1c('0x9c')][0x0]['id']},client9002)[_0x0e1c('0x1f')](function(_0x44de4b){logger[_0x0e1c('0x20')](_0x0e1c('0xac'),_0x44de4b);})[_0x0e1c('0x4d')](function(_0x35a4e4){logger[_0x0e1c('0x20')](_0x0e1c('0xac'),_0x35a4e4);});return _0x341db2;})[_0x0e1c('0x1f')](respondWithResult(_0x39dc52,null))[_0x0e1c('0x4d')](handleError(_0x39dc52,null));};exports['addAgents']=function(_0x5000d9,_0x28cbe8,_0x2b14f7){return db[_0x0e1c('0x34')][_0x0e1c('0x50')]({'where':{'id':_0x5000d9[_0x0e1c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x28cbe8,null))['then'](function(_0x714d4f){if(_0x714d4f){return _0x714d4f[_0x0e1c('0xad')](_0x5000d9[_0x0e1c('0x52')][_0x0e1c('0x61')],_['omit'](_0x5000d9['body'],[_0x0e1c('0x61'),'id'])||{})[_0x0e1c('0xae')](function(_0x1fecc8){for(var _0x31a122=0x0;_0x31a122<_0x5000d9[_0x0e1c('0x52')]['ids'][_0x0e1c('0x40')];_0x31a122+=0x1){socket[_0x0e1c('0xaf')](_0x0e1c('0xb0'),{'UserId':Number(_0x5000d9[_0x0e1c('0x52')][_0x0e1c('0x61')][_0x31a122]),'FaxAccountId':Number(_0x5000d9[_0x0e1c('0x4e')]['id'])});}return _0x1fecc8;});}})[_0x0e1c('0x1f')](respondWithResult(_0x28cbe8,null))[_0x0e1c('0x4d')](handleError(_0x28cbe8,null));};exports[_0x0e1c('0xb1')]=function(_0x1a7398,_0x1ccff5,_0x74247){return db['FaxAccount'][_0x0e1c('0x50')]({'where':{'id':_0x1a7398['params']['id']}})[_0x0e1c('0x1f')](handleEntityNotFound(_0x1ccff5,null))[_0x0e1c('0x1f')](function(_0x5d7e6c){if(_0x5d7e6c){return _0x5d7e6c['removeAgents'](_0x1a7398[_0x0e1c('0x3a')][_0x0e1c('0x61')])[_0x0e1c('0x1f')](function(){if(_[_0x0e1c('0xb2')](_0x1a7398[_0x0e1c('0x3a')][_0x0e1c('0x61')])){for(var _0x5413cf=0x0;_0x5413cf<_0x1a7398[_0x0e1c('0x3a')][_0x0e1c('0x61')][_0x0e1c('0x40')];_0x5413cf+=0x1){socket[_0x0e1c('0xaf')](_0x0e1c('0xb3'),{'UserId':Number(_0x1a7398[_0x0e1c('0x3a')][_0x0e1c('0x61')][_0x5413cf]),'FaxAccountId':Number(_0x1a7398['params']['id'])});}}else{socket[_0x0e1c('0xaf')]('userFaxAccount:remove',{'UserId':Number(_0x1a7398[_0x0e1c('0x3a')][_0x0e1c('0x61')]),'FaxAccountId':Number(_0x1a7398[_0x0e1c('0x4e')]['id'])});}});}})[_0x0e1c('0x1f')](respondWithStatusCode(_0x1ccff5,null))[_0x0e1c('0x4d')](handleError(_0x1ccff5,null));};exports[_0x0e1c('0xb4')]=function(_0x29f47d,_0x18c138,_0x15e640){var _0x128883={};var _0x548b16={};var _0x13cdb0;var _0x14efc8;return db['FaxAccount']['findOne']({'where':{'id':_0x29f47d[_0x0e1c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x18c138,null))[_0x0e1c('0x1f')](function(_0x589ade){if(_0x589ade){_0x13cdb0=_0x589ade;_0x548b16[_0x0e1c('0x38')]=_[_0x0e1c('0x3b')](db[_0x0e1c('0x6d')][_0x0e1c('0x35')]);_0x548b16[_0x0e1c('0x3a')]=_[_0x0e1c('0x3b')](_0x29f47d[_0x0e1c('0x3a')]);_0x548b16[_0x0e1c('0x3c')]=_[_0x0e1c('0x3e')](_0x548b16[_0x0e1c('0x38')],_0x548b16[_0x0e1c('0x3a')]);_0x128883[_0x0e1c('0x3d')]=_[_0x0e1c('0x3e')](_0x548b16[_0x0e1c('0x38')],qs[_0x0e1c('0x3f')](_0x29f47d['query'][_0x0e1c('0x3f')]));_0x128883[_0x0e1c('0x3d')]=_0x128883['attributes']['length']?_0x128883[_0x0e1c('0x3d')]:_0x548b16['model'];_0x128883[_0x0e1c('0x42')]=qs[_0x0e1c('0x43')](_0x29f47d[_0x0e1c('0x3a')][_0x0e1c('0x43')]);_0x128883[_0x0e1c('0x44')]=qs[_0x0e1c('0x3c')](_[_0x0e1c('0x45')](_0x29f47d[_0x0e1c('0x3a')],_0x548b16[_0x0e1c('0x3c')]));if(_0x29f47d['query'][_0x0e1c('0x46')]){_0x128883[_0x0e1c('0x44')]=_['merge'](_0x128883[_0x0e1c('0x44')],{'$or':_['map'](_0x128883[_0x0e1c('0x3d')],function(_0x148876){var _0x48082d={};_0x48082d[_0x148876]={'$like':'%'+_0x29f47d['query'][_0x0e1c('0x46')]+'%'};return _0x48082d;})});}_0x128883=_[_0x0e1c('0x48')]({},_0x128883,_0x29f47d['options']);return _0x13cdb0[_0x0e1c('0xb4')](_0x128883);}})[_0x0e1c('0x1f')](function(_0x284544){if(_0x284544){_0x14efc8=_0x284544['length'];if(!_0x29f47d[_0x0e1c('0x3a')][_0x0e1c('0x41')]('nolimit')){_0x128883['limit']=qs[_0x0e1c('0x2b')](_0x29f47d[_0x0e1c('0x3a')]['limit']);_0x128883[_0x0e1c('0x2a')]=qs['offset'](_0x29f47d[_0x0e1c('0x3a')][_0x0e1c('0x2a')]);}return _0x13cdb0[_0x0e1c('0xb4')](_0x128883);}})[_0x0e1c('0x1f')](function(_0x5ba90f){if(_0x5ba90f){return _0x5ba90f?{'count':_0x14efc8,'rows':_0x5ba90f}:null;}})[_0x0e1c('0x1f')](respondWithResult(_0x18c138,null))[_0x0e1c('0x4d')](handleError(_0x18c138,null));};
\ No newline at end of file
index dfc7065..1c8b4d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa273=['save','remove','emit','hasOwnProperty','hook','exports','events','FaxAccount'];(function(_0x4849f6,_0x104836){var _0x1a3dcd=function(_0x494d3c){while(--_0x494d3c){_0x4849f6['push'](_0x4849f6['shift']());}};_0x1a3dcd(++_0x104836);}(_0xa273,0xf6));var _0x3a27=function(_0x5cce75,_0x13ac3f){_0x5cce75=_0x5cce75-0x0;var _0x1397fb=_0xa273[_0x5cce75];return _0x1397fb;};'use strict';var EventEmitter=require(_0x3a27('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x3a27('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3a27('0x2'),'afterUpdate':'update','afterDestroy':_0x3a27('0x3')};function emitEvent(_0x20c173){return function(_0x226758,_0x1614e9,_0x42c06f){FaxAccountEvents[_0x3a27('0x4')](_0x20c173+':'+_0x226758['id'],_0x226758);FaxAccountEvents[_0x3a27('0x4')](_0x20c173,_0x226758);_0x42c06f(null);};}for(var e in events){if(events[_0x3a27('0x5')](e)){var event=events[e];FaxAccount[_0x3a27('0x6')](e,emitEvent(event));}}module[_0x3a27('0x7')]=FaxAccountEvents;
\ No newline at end of file
+var _0x6c0d=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','save'];(function(_0x3fc1c5,_0x4af18b){var _0x1b7846=function(_0x5d00ff){while(--_0x5d00ff){_0x3fc1c5['push'](_0x3fc1c5['shift']());}};_0x1b7846(++_0x4af18b);}(_0x6c0d,0x132));var _0xd6c0=function(_0x4646ab,_0x28bdff){_0x4646ab=_0x4646ab-0x0;var _0x43e149=_0x6c0d[_0x4646ab];return _0x43e149;};'use strict';var EventEmitter=require(_0xd6c0('0x0'));var FaxAccount=require(_0xd6c0('0x1'))['db'][_0xd6c0('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd6c0('0x3'),'afterUpdate':_0xd6c0('0x4'),'afterDestroy':_0xd6c0('0x5')};function emitEvent(_0x49332c){return function(_0x442b45,_0x1b1ceb,_0x3600bf){FaxAccountEvents['emit'](_0x49332c+':'+_0x442b45['id'],_0x442b45);FaxAccountEvents[_0xd6c0('0x6')](_0x49332c,_0x442b45);_0x3600bf(null);};}for(var e in events){if(events[_0xd6c0('0x7')](e)){var event=events[e];FaxAccount[_0xd6c0('0x8')](e,emitEvent(event));}}module[_0xd6c0('0x9')]=FaxAccountEvents;
\ No newline at end of file
index abd2166..e587664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf138=['fax_accounts','lodash','util','../../config/logger','moment','request-promise','path','rimraf','exports','FaxAccount'];(function(_0x539533,_0x59b89b){var _0x3942f3=function(_0x3b386c){while(--_0x3b386c){_0x539533['push'](_0x539533['shift']());}};_0x3942f3(++_0x59b89b);}(_0xf138,0xb5));var _0x8f13=function(_0x3b6852,_0x5dd3f4){_0x3b6852=_0x3b6852-0x0;var _0x3aa9f4=_0xf138[_0x3b6852];return _0x3aa9f4;};'use strict';var _=require(_0x8f13('0x0'));var util=require(_0x8f13('0x1'));var logger=require(_0x8f13('0x2'))('api');var moment=require(_0x8f13('0x3'));var BPromise=require('bluebird');var rp=require(_0x8f13('0x4'));var fs=require('fs');var path=require(_0x8f13('0x5'));var rimraf=require(_0x8f13('0x6'));var config=require('../../config/environment');var attributes=require('./faxAccount.attributes');module[_0x8f13('0x7')]=function(_0x1ba6d4,_0x553709){return _0x1ba6d4['define'](_0x8f13('0x8'),attributes,{'tableName':_0x8f13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x756f=['../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./faxAccount.attributes','FaxAccount','lodash'];(function(_0x3194ad,_0x88da66){var _0x1553e5=function(_0x185620){while(--_0x185620){_0x3194ad['push'](_0x3194ad['shift']());}};_0x1553e5(++_0x88da66);}(_0x756f,0xcf));var _0xf756=function(_0x1f6545,_0x27577c){_0x1f6545=_0x1f6545-0x0;var _0x263928=_0x756f[_0x1f6545];return _0x263928;};'use strict';var _=require(_0xf756('0x0'));var util=require('util');var logger=require(_0xf756('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf756('0x2'));var rp=require(_0xf756('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf756('0x4'));var config=require(_0xf756('0x5'));var attributes=require(_0xf756('0x6'));module['exports']=function(_0x162fa9,_0x2e00e8){return _0x162fa9['define'](_0xf756('0x7'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c86aac..55f1fad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fea=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetFaxAccount','options','raw','where','attributes','include','map','model','debug','body','fax','describe','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','keys','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','ValidationError','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','FaxAccount','find','account','CmList','List','CmContact','DESC','FaxApplication','Applications','applications','orderBy','priority','asc','Contacts','length','ListId','FaxInteraction','create','Contact\x20not\x20found','spread','push','unmanaged','*,*,*,*','created','interaction','AttachmentId','name','UserId','agent','waitForTheAssignedAgent','Start','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2adf93,_0x1b1baa){var _0x4a8be9=function(_0x3ea49f){while(--_0x3ea49f){_0x2adf93['push'](_0x2adf93['shift']());}};_0x4a8be9(++_0x1b1baa);}(_0x2fea,0x1f1));var _0xa2fe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2fea[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa2fe('0x0'));var util=require(_0xa2fe('0x1'));var moment=require(_0xa2fe('0x2'));var BPromise=require('bluebird');var rs=require(_0xa2fe('0x3'));var fs=require('fs');var Redis=require(_0xa2fe('0x4'));var db=require(_0xa2fe('0x5'))['db'];var utils=require(_0xa2fe('0x6'));var logger=require(_0xa2fe('0x7'))(_0xa2fe('0x8'));var config=require(_0xa2fe('0x9'));var jayson=require(_0xa2fe('0xa'));var client=jayson[_0xa2fe('0xb')][_0xa2fe('0xc')]({'port':0x232c});config[_0xa2fe('0xd')]=_[_0xa2fe('0xe')](config['redis'],{'host':_0xa2fe('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa2fe('0xd')]));require(_0xa2fe('0x10'))['register'](socket);function respondWithRpcPromise(_0x4e5eb6,_0x5698c3,_0xc928aa){return new BPromise(function(_0xf5b124,_0xb79847){return client['request'](_0x4e5eb6,_0xc928aa)[_0xa2fe('0x11')](function(_0x27c57f){logger[_0xa2fe('0x12')](_0xa2fe('0x13'),_0x5698c3,_0xa2fe('0x14'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x5698c3,_0xa2fe('0x14'),JSON[_0xa2fe('0x15')](_0x27c57f));if(_0x27c57f[_0xa2fe('0x16')]){if(_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x17')]===0x1f4){logger[_0xa2fe('0x16')]('FaxAccount,\x20%s,\x20%s',_0x5698c3,_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x18')]);return _0xb79847(_0x27c57f[_0xa2fe('0x16')]['message']);}logger[_0xa2fe('0x16')](_0xa2fe('0x13'),_0x5698c3,_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x18')]);return _0xf5b124(_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x18')]);}else{logger[_0xa2fe('0x12')](_0xa2fe('0x13'),_0x5698c3,_0xa2fe('0x14'));_0xf5b124(_0x27c57f['result']['message']);}})[_0xa2fe('0x19')](function(_0x3bb72c){logger['error'](_0xa2fe('0x13'),_0x5698c3,_0x3bb72c);_0xb79847(_0x3bb72c);});});}exports[_0xa2fe('0x1a')]=function(_0x597d68){var _0x2d8fd1=this;return new Promise(function(_0xdfcb04,_0x540d6b){return db['FaxAccount']['findAll']({'raw':_0x597d68['options']?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1c')]===undefined?!![]:![]:!![],'where':_0x597d68[_0xa2fe('0x1b')]?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1d')]||null:null,'attributes':_0x597d68['options']?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1e')]||null:null,'limit':_0x597d68['options']?_0x597d68[_0xa2fe('0x1b')]['limit']||null:null,'include':_0x597d68[_0xa2fe('0x1b')]?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1f')]?_[_0xa2fe('0x20')](_0x597d68['options'][_0xa2fe('0x1f')],function(_0x2ad602){return{'model':db[_0x2ad602[_0xa2fe('0x21')]],'as':_0x2ad602['as'],'attributes':_0x2ad602['attributes'],'include':_0x2ad602[_0xa2fe('0x1f')]?_[_0xa2fe('0x20')](_0x2ad602[_0xa2fe('0x1f')],function(_0x2130a4){return{'model':db[_0x2130a4['model']],'as':_0x2130a4['as'],'attributes':_0x2130a4['attributes'],'include':_0x2130a4['include']?_[_0xa2fe('0x20')](_0x2130a4['include'],function(_0x43c98c){return{'model':db[_0x43c98c[_0xa2fe('0x21')]],'as':_0x43c98c['as'],'attributes':_0x43c98c[_0xa2fe('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b3e90){logger[_0xa2fe('0x12')](_0xa2fe('0x1a'),_0x597d68);logger[_0xa2fe('0x22')](_0xa2fe('0x1a'),_0x597d68,JSON[_0xa2fe('0x15')](_0x3b3e90));_0xdfcb04(_0x3b3e90);})['catch'](function(_0xfd4a0b){logger['error'](_0xa2fe('0x1a'),_0xfd4a0b[_0xa2fe('0x18')],_0x597d68);_0x540d6b(_0x2d8fd1[_0xa2fe('0x16')](0x1f4,_0xfd4a0b[_0xa2fe('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x467e61,_0x9233ee,_0x20d5b3){var _0x1e584a=this;return new Promise(function(_0x2c8407,_0xdbf09f){var _0x5ddb5e={'body':_0x467e61[_0xa2fe('0x23')],'channel':_0xa2fe('0x24')};var _0xaba559=[];var _0x53883b=[];var _0x552f71={};return db['CmContact'][_0xa2fe('0x25')]()[_0xa2fe('0x11')](function(_0x5236a2){if(!_0x5236a2){throw new db[(_0xa2fe('0x26'))]['ValidationError'](_0xa2fe('0x27'));}_0xaba559=_[_0xa2fe('0x28')](_['keys'](_0x5236a2),[_0xa2fe('0x29'),_0xa2fe('0x2a')]);_0x53883b=_[_0xa2fe('0x28')](_[_0xa2fe('0x2b')](_0x5236a2),['createdAt',_0xa2fe('0x2a'),_0xa2fe('0x2c'),'ListId']);if(_0x467e61[_0xa2fe('0x23')]['id']){delete _0x467e61['body']['id'];}if(_[_0xa2fe('0x2d')](_0x467e61['body'][_0xa2fe('0x2e')])){throw new db[(_0xa2fe('0x26'))]['ValidationError'](_0xa2fe('0x2f'));}if(_['isNil'](_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x23')])||_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x23')]===''){throw new db[(_0xa2fe('0x26'))]['ValidationError'](_0xa2fe('0x30'));}if(_[_0xa2fe('0x2d')](_0x467e61[_0xa2fe('0x23')]['mapKey'])){throw new db['Sequelize'][(_0xa2fe('0x31'))](_0xa2fe('0x32')+_0x53883b);}if(!_[_0xa2fe('0x33')](_0x53883b,_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x34')])){throw new db[(_0xa2fe('0x26'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x53883b);}_0x552f71[_0x467e61['body'][_0xa2fe('0x34')]]=_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x2e')];})[_0xa2fe('0x11')](function(){return db[_0xa2fe('0x35')][_0xa2fe('0x36')]({'where':{'id':_0x467e61[_0xa2fe('0x37')]['id']},'include':[{'model':db[_0xa2fe('0x38')],'as':_0xa2fe('0x39'),'include':[{'model':db[_0xa2fe('0x3a')],'as':'Contacts','where':_0x552f71,'limit':0x1,'order':[[_0xa2fe('0x2a'),_0xa2fe('0x3b')]]}]},{'model':db[_0xa2fe('0x3c')],'as':_0xa2fe('0x3d')}]});})[_0xa2fe('0x11')](function(_0x43b62b){if(_0x43b62b&&_0x43b62b[_0xa2fe('0x39')]){var _0x4a972c=_0x43b62b['get']({'plain':!![]});_0x5ddb5e[_0xa2fe('0x37')]=_0x4a972c;_0x5ddb5e[_0xa2fe('0x3e')]=_0x4a972c[_0xa2fe('0x3d')];_0x5ddb5e['list']=_0x4a972c['List'];_0x5ddb5e[_0xa2fe('0x3e')]=_[_0xa2fe('0x3f')](_0x5ddb5e[_0xa2fe('0x3e')],[_0xa2fe('0x40')],[_0xa2fe('0x41')]);if(_0x5ddb5e['account'][_0xa2fe('0x3d')]){delete _0x5ddb5e[_0xa2fe('0x37')]['Applications'];}if(_0x5ddb5e[_0xa2fe('0x37')][_0xa2fe('0x39')]&&_0x5ddb5e[_0xa2fe('0x37')]['List'][_0xa2fe('0x42')][_0xa2fe('0x43')]){return _0x5ddb5e[_0xa2fe('0x37')][_0xa2fe('0x39')][_0xa2fe('0x42')][0x0];}var _0x411b54=_['defaults'](_0x467e61[_0xa2fe('0x23')],{'firstName':_0x467e61[_0xa2fe('0x23')]['from'],'ListId':_0x4a972c[_0xa2fe('0x44')]});_0x411b54[_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x34')]]=_0x467e61['body']['from'];return db[_0xa2fe('0x3a')]['create'](_0x411b54,{'fields':_0xaba559,'raw':!![]});}})[_0xa2fe('0x11')](function(_0xcb487b){_0x5ddb5e['contact']=_0xcb487b;if(_0xcb487b){var _0x5b1c90={'ContactId':_0xcb487b['id'],'FaxAccountId':_0x467e61['account']['id'],'fax':_0xcb487b[_0xa2fe('0x24')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0xcb487b['id'],'closed':![],'FaxAccountId':_0x467e61[_0xa2fe('0x37')]['id']}})['then'](function(_0x35f59f){if(_0x35f59f){return[_0x35f59f,![]];}return db[_0xa2fe('0x45')][_0xa2fe('0x46')](_0x5b1c90)[_0xa2fe('0x11')](function(_0x247aae){return[_0x247aae,!![]];});});}else{throw new Error(_0xa2fe('0x47'));}})[_0xa2fe('0x48')](function(_0x4e0c50,_0x293d01){var _0x4a1513=_0x4e0c50['get']({'plain':!![]});if(_0x293d01){if(_0x5ddb5e[_0xa2fe('0x37')]['autoclose']){_0x5ddb5e[_0xa2fe('0x3e')][_0xa2fe('0x49')]({'id':0x0,'priority':_0x5ddb5e[_0xa2fe('0x3e')]['length']+0x1,'app':'close','appdata':_0xa2fe('0x4a'),'interval':_0xa2fe('0x4b')});}_0x4a1513[_0xa2fe('0x4c')]=!![];}else{_0x4a1513[_0xa2fe('0x4c')]=![];}_0x5ddb5e[_0xa2fe('0x4d')]=_0x4a1513;return db['FaxMessage']['create']({'body':_0x467e61[_0xa2fe('0x23')]['body'],'FaxAccountId':_0x467e61[_0xa2fe('0x37')]['id'],'FaxInteractionId':_0x4e0c50['id'],'direction':'in','ContactId':_0x4e0c50['ContactId'],'AttachmentId':_0x467e61['body'][_0xa2fe('0x4e')]});})[_0xa2fe('0x11')](function(_0x103a8d){_0x5ddb5e[_0xa2fe('0x18')]=_0x103a8d;if(_0x5ddb5e['interaction']['UserId']){return db['User'][_0xa2fe('0x36')]({'attributes':['id',_0xa2fe('0x4f')],'where':{'id':_0x5ddb5e['interaction'][_0xa2fe('0x50')]}})['then'](function(_0x13db6b){if(_0x13db6b){_0x5ddb5e[_0xa2fe('0x3e')]['unshift']({'id':0x0,'priority':0x0,'app':_0xa2fe('0x51'),'appdata':_0x13db6b['name']+','+(_0x5ddb5e[_0xa2fe('0x37')][_0xa2fe('0x52')]||0xa),'interval':_0xa2fe('0x4b')});}return respondWithRpcPromise(_0xa2fe('0x53'),'startRouting',_0x5ddb5e);});}return respondWithRpcPromise('Start','startRouting',_0x5ddb5e);})['then'](function(_0x20ffc7){_0x2c8407(_0x20ffc7);})['catch'](function(_0x3f7508){_0xdbf09f(_0x1e584a[_0xa2fe('0x16')](0x1f4,_0x3f7508[_0xa2fe('0x18')]));});});};
\ No newline at end of file
+var _0x3655=['mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','Contacts','FaxApplication','Applications','get','applications','list','orderBy','priority','asc','account','length','create','FaxInteraction','spread','close','unmanaged','*,*,*,*','created','FaxMessage','ContactId','AttachmentId','interaction','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','FaxAccount,\x20%s,\x20%s','message','catch','FaxAccount','findAll','options','where','attributes','limit','include','map','model','GetFaxAccount','debug','NotifyFaxAccount','body','fax','CmContact','ValidationError','difference','keys','updatedAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty'];(function(_0x7c0646,_0x45d16b){var _0x32416d=function(_0x22abdd){while(--_0x22abdd){_0x7c0646['push'](_0x7c0646['shift']());}};_0x32416d(++_0x45d16b);}(_0x3655,0x12c));var _0x5365=function(_0x5e8fc,_0x1ccc06){_0x5e8fc=_0x5e8fc-0x0;var _0x41c58c=_0x3655[_0x5e8fc];return _0x41c58c;};'use strict';var _=require(_0x5365('0x0'));var util=require(_0x5365('0x1'));var moment=require(_0x5365('0x2'));var BPromise=require(_0x5365('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5365('0x4'));var db=require(_0x5365('0x5'))['db'];var utils=require(_0x5365('0x6'));var logger=require(_0x5365('0x7'))(_0x5365('0x8'));var config=require(_0x5365('0x9'));var jayson=require(_0x5365('0xa'));var client=jayson[_0x5365('0xb')][_0x5365('0xc')]({'port':0x232c});config[_0x5365('0xd')]=_[_0x5365('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5365('0xf'))(new Redis(config[_0x5365('0xd')]));require('./faxAccount.socket')[_0x5365('0x10')](socket);function respondWithRpcPromise(_0x2f2ce5,_0x3cb757,_0x11cde5){return new BPromise(function(_0x188ad6,_0x29fbc9){return client['request'](_0x2f2ce5,_0x11cde5)[_0x5365('0x11')](function(_0x307a5f){logger[_0x5365('0x12')]('FaxAccount,\x20%s,\x20%s',_0x3cb757,_0x5365('0x13'));logger['debug'](_0x5365('0x14'),_0x3cb757,_0x5365('0x13'),JSON[_0x5365('0x15')](_0x307a5f));if(_0x307a5f['error']){if(_0x307a5f[_0x5365('0x16')]['code']===0x1f4){logger[_0x5365('0x16')](_0x5365('0x17'),_0x3cb757,_0x307a5f['error']['message']);return _0x29fbc9(_0x307a5f[_0x5365('0x16')][_0x5365('0x18')]);}logger[_0x5365('0x16')](_0x5365('0x17'),_0x3cb757,_0x307a5f['error'][_0x5365('0x18')]);return _0x188ad6(_0x307a5f[_0x5365('0x16')][_0x5365('0x18')]);}else{logger[_0x5365('0x12')](_0x5365('0x17'),_0x3cb757,'request\x20sent');_0x188ad6(_0x307a5f['result'][_0x5365('0x18')]);}})[_0x5365('0x19')](function(_0x591790){logger[_0x5365('0x16')](_0x5365('0x17'),_0x3cb757,_0x591790);_0x29fbc9(_0x591790);});});}exports['GetFaxAccount']=function(_0xf1deb1){var _0x49d528=this;return new Promise(function(_0x5421ba,_0x24ada1){return db[_0x5365('0x1a')][_0x5365('0x1b')]({'raw':_0xf1deb1['options']?_0xf1deb1[_0x5365('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0xf1deb1['options']?_0xf1deb1['options'][_0x5365('0x1d')]||null:null,'attributes':_0xf1deb1[_0x5365('0x1c')]?_0xf1deb1[_0x5365('0x1c')][_0x5365('0x1e')]||null:null,'limit':_0xf1deb1[_0x5365('0x1c')]?_0xf1deb1[_0x5365('0x1c')][_0x5365('0x1f')]||null:null,'include':_0xf1deb1[_0x5365('0x1c')]?_0xf1deb1[_0x5365('0x1c')][_0x5365('0x20')]?_[_0x5365('0x21')](_0xf1deb1['options'][_0x5365('0x20')],function(_0x47d657){return{'model':db[_0x47d657[_0x5365('0x22')]],'as':_0x47d657['as'],'attributes':_0x47d657[_0x5365('0x1e')],'include':_0x47d657['include']?_['map'](_0x47d657['include'],function(_0x3ee441){return{'model':db[_0x3ee441[_0x5365('0x22')]],'as':_0x3ee441['as'],'attributes':_0x3ee441[_0x5365('0x1e')],'include':_0x3ee441[_0x5365('0x20')]?_['map'](_0x3ee441[_0x5365('0x20')],function(_0x5c4d3c){return{'model':db[_0x5c4d3c[_0x5365('0x22')]],'as':_0x5c4d3c['as'],'attributes':_0x5c4d3c[_0x5365('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5365('0x11')](function(_0x4a8bc2){logger[_0x5365('0x12')](_0x5365('0x23'),_0xf1deb1);logger[_0x5365('0x24')]('GetFaxAccount',_0xf1deb1,JSON[_0x5365('0x15')](_0x4a8bc2));_0x5421ba(_0x4a8bc2);})[_0x5365('0x19')](function(_0xca13ea){logger[_0x5365('0x16')](_0x5365('0x23'),_0xca13ea[_0x5365('0x18')],_0xf1deb1);_0x24ada1(_0x49d528['error'](0x1f4,_0xca13ea[_0x5365('0x18')]));});});};exports[_0x5365('0x25')]=function(_0x4e0b03,_0x11c407,_0x45352f){var _0x267ddc=this;return new Promise(function(_0x45b7ad,_0x231a53){var _0xe39a3c={'body':_0x4e0b03[_0x5365('0x26')],'channel':_0x5365('0x27')};var _0x209931=[];var _0x4e6ef3=[];var _0x5a0b52={};return db[_0x5365('0x28')]['describe']()[_0x5365('0x11')](function(_0x5b6b94){if(!_0x5b6b94){throw new db['Sequelize'][(_0x5365('0x29'))]('no\x20available\x20attributes');}_0x209931=_[_0x5365('0x2a')](_[_0x5365('0x2b')](_0x5b6b94),['createdAt','updatedAt']);_0x4e6ef3=_['difference'](_[_0x5365('0x2b')](_0x5b6b94),['createdAt',_0x5365('0x2c'),_0x5365('0x2d'),_0x5365('0x2e')]);if(_0x4e0b03[_0x5365('0x26')]['id']){delete _0x4e0b03[_0x5365('0x26')]['id'];}if(_['isNil'](_0x4e0b03[_0x5365('0x26')][_0x5365('0x2f')])){throw new db[(_0x5365('0x30'))][(_0x5365('0x29'))](_0x5365('0x31'));}if(_[_0x5365('0x32')](_0x4e0b03['body'][_0x5365('0x26')])||_0x4e0b03['body'][_0x5365('0x26')]===''){throw new db['Sequelize'][(_0x5365('0x29'))](_0x5365('0x33'));}if(_['isNil'](_0x4e0b03[_0x5365('0x26')][_0x5365('0x34')])){throw new db[(_0x5365('0x30'))][(_0x5365('0x29'))](_0x5365('0x35')+_0x4e6ef3);}if(!_[_0x5365('0x36')](_0x4e6ef3,_0x4e0b03['body']['mapKey'])){throw new db[(_0x5365('0x30'))][(_0x5365('0x29'))](_0x5365('0x37')+_0x4e6ef3);}_0x5a0b52[_0x4e0b03[_0x5365('0x26')][_0x5365('0x34')]]=_0x4e0b03[_0x5365('0x26')]['from'];})[_0x5365('0x11')](function(){return db['FaxAccount'][_0x5365('0x38')]({'where':{'id':_0x4e0b03['account']['id']},'include':[{'model':db['CmList'],'as':_0x5365('0x39'),'include':[{'model':db['CmContact'],'as':_0x5365('0x3a'),'where':_0x5a0b52,'limit':0x1,'order':[[_0x5365('0x2c'),'DESC']]}]},{'model':db[_0x5365('0x3b')],'as':_0x5365('0x3c')}]});})['then'](function(_0x3473e8){if(_0x3473e8&&_0x3473e8[_0x5365('0x39')]){var _0x28af02=_0x3473e8[_0x5365('0x3d')]({'plain':!![]});_0xe39a3c['account']=_0x28af02;_0xe39a3c[_0x5365('0x3e')]=_0x28af02[_0x5365('0x3c')];_0xe39a3c[_0x5365('0x3f')]=_0x28af02[_0x5365('0x39')];_0xe39a3c[_0x5365('0x3e')]=_[_0x5365('0x40')](_0xe39a3c['applications'],[_0x5365('0x41')],[_0x5365('0x42')]);if(_0xe39a3c[_0x5365('0x43')][_0x5365('0x3c')]){delete _0xe39a3c[_0x5365('0x43')][_0x5365('0x3c')];}if(_0xe39a3c['account']['List']&&_0xe39a3c['account']['List'][_0x5365('0x3a')][_0x5365('0x44')]){return _0xe39a3c[_0x5365('0x43')][_0x5365('0x39')][_0x5365('0x3a')][0x0];}var _0x4a572c=_[_0x5365('0xe')](_0x4e0b03[_0x5365('0x26')],{'firstName':_0x4e0b03['body'][_0x5365('0x2f')],'ListId':_0x28af02[_0x5365('0x2e')]});_0x4a572c[_0x4e0b03['body']['mapKey']]=_0x4e0b03['body'][_0x5365('0x2f')];return db[_0x5365('0x28')][_0x5365('0x45')](_0x4a572c,{'fields':_0x209931,'raw':!![]});}})[_0x5365('0x11')](function(_0x15c5f7){_0xe39a3c['contact']=_0x15c5f7;if(_0x15c5f7){var _0x482946={'ContactId':_0x15c5f7['id'],'FaxAccountId':_0x4e0b03['account']['id'],'fax':_0x15c5f7[_0x5365('0x27')]};return db[_0x5365('0x46')][_0x5365('0x38')]({'where':{'ContactId':_0x15c5f7['id'],'closed':![],'FaxAccountId':_0x4e0b03[_0x5365('0x43')]['id']}})[_0x5365('0x11')](function(_0x3d5afb){if(_0x3d5afb){return[_0x3d5afb,![]];}return db[_0x5365('0x46')][_0x5365('0x45')](_0x482946)[_0x5365('0x11')](function(_0x163d13){return[_0x163d13,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x5365('0x47')](function(_0x2ea0a6,_0x31c4e3){var _0x2e2175=_0x2ea0a6[_0x5365('0x3d')]({'plain':!![]});if(_0x31c4e3){if(_0xe39a3c['account']['autoclose']){_0xe39a3c[_0x5365('0x3e')]['push']({'id':0x0,'priority':_0xe39a3c[_0x5365('0x3e')][_0x5365('0x44')]+0x1,'app':_0x5365('0x48'),'appdata':_0x5365('0x49'),'interval':_0x5365('0x4a')});}_0x2e2175[_0x5365('0x4b')]=!![];}else{_0x2e2175[_0x5365('0x4b')]=![];}_0xe39a3c['interaction']=_0x2e2175;return db[_0x5365('0x4c')][_0x5365('0x45')]({'body':_0x4e0b03[_0x5365('0x26')]['body'],'FaxAccountId':_0x4e0b03['account']['id'],'FaxInteractionId':_0x2ea0a6['id'],'direction':'in','ContactId':_0x2ea0a6[_0x5365('0x4d')],'AttachmentId':_0x4e0b03[_0x5365('0x26')][_0x5365('0x4e')]});})[_0x5365('0x11')](function(_0x2ad804){_0xe39a3c[_0x5365('0x18')]=_0x2ad804;if(_0xe39a3c[_0x5365('0x4f')][_0x5365('0x50')]){return db[_0x5365('0x51')]['find']({'attributes':['id',_0x5365('0x52')],'where':{'id':_0xe39a3c[_0x5365('0x4f')][_0x5365('0x50')]}})[_0x5365('0x11')](function(_0xb426bc){if(_0xb426bc){_0xe39a3c[_0x5365('0x3e')][_0x5365('0x53')]({'id':0x0,'priority':0x0,'app':_0x5365('0x54'),'appdata':_0xb426bc['name']+','+(_0xe39a3c[_0x5365('0x43')][_0x5365('0x55')]||0xa),'interval':_0x5365('0x4a')});}return respondWithRpcPromise(_0x5365('0x56'),_0x5365('0x57'),_0xe39a3c);});}return respondWithRpcPromise(_0x5365('0x56'),_0x5365('0x57'),_0xe39a3c);})[_0x5365('0x11')](function(_0x188037){_0x45b7ad(_0x188037);})['catch'](function(_0xb97c49){_0x231a53(_0x267ddc[_0x5365('0x16')](0x1f4,_0xb97c49[_0x5365('0x18')]));});});};
\ No newline at end of file
index c36bfa9..b303937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x695a=['faxAccount:','./faxAccount.events','save','remove','update','emit','removeListener','length'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x695a,0x1c9));var _0xa695=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x695a[_0x2641f9];return _0x585741;};'use strict';var FaxAccountEvents=require(_0xa695('0x0'));var events=[_0xa695('0x1'),_0xa695('0x2'),_0xa695('0x3')];function createListener(_0x18ce9d,_0x2cd2ad){return function(_0x3bab52){_0x2cd2ad[_0xa695('0x4')](_0x18ce9d,_0x3bab52);};}function removeListener(_0x36cc55,_0x50ad45){return function(){FaxAccountEvents[_0xa695('0x5')](_0x36cc55,_0x50ad45);};}exports['register']=function(_0x446bf7){for(var _0x1fa332=0x0,_0xf7a249=events[_0xa695('0x6')];_0x1fa332<_0xf7a249;_0x1fa332++){var _0x5e64e4=events[_0x1fa332];var _0x223f91=createListener(_0xa695('0x7')+_0x5e64e4,_0x446bf7);FaxAccountEvents['on'](_0x5e64e4,_0x223f91);}};
\ No newline at end of file
+var _0x859f=['register','length','./faxAccount.events','save','remove','removeListener'];(function(_0x5c4585,_0x3d0eab){var _0x21dede=function(_0x5c3d6a){while(--_0x5c3d6a){_0x5c4585['push'](_0x5c4585['shift']());}};_0x21dede(++_0x3d0eab);}(_0x859f,0xda));var _0xf859=function(_0x417275,_0x3f84f1){_0x417275=_0x417275-0x0;var _0xf68071=_0x859f[_0x417275];return _0xf68071;};'use strict';var FaxAccountEvents=require(_0xf859('0x0'));var events=[_0xf859('0x1'),_0xf859('0x2'),'update'];function createListener(_0x53bf04,_0x230817){return function(_0x261ee6){_0x230817['emit'](_0x53bf04,_0x261ee6);};}function removeListener(_0x2e21ad,_0x36e909){return function(){FaxAccountEvents[_0xf859('0x3')](_0x2e21ad,_0x36e909);};}exports[_0xf859('0x4')]=function(_0x4c378e){for(var _0xc62712=0x0,_0x56bb1d=events[_0xf859('0x5')];_0xc62712<_0x56bb1d;_0xc62712++){var _0x28bb30=events[_0xc62712];var _0xbb3175=createListener('faxAccount:'+_0x28bb30,_0x4c378e);FaxAccountEvents['on'](_0x28bb30,_0xbb3175);}};
\ No newline at end of file
index c422a11..b63b6d2 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(_0x235f01,_0x7c2ed0){var _0x6e3680=function(_0x42bdfa){while(--_0x42bdfa){_0x235f01['push'](_0x235f01['shift']());}};_0x6e3680(++_0x7c2ed0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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(_0x5c0a45,_0x4fe66d){var _0x76c83f=function(_0x23e9e6){while(--_0x23e9e6){_0x5c0a45['push'](_0x5c0a45['shift']());}};_0x76c83f(++_0x4fe66d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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 c67849f..8d2f751 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cf7=['exports','INTEGER','STRING','noop','*,*,*,*'];(function(_0x35034a,_0x4f1b02){var _0x53b75d=function(_0x44f81c){while(--_0x44f81c){_0x35034a['push'](_0x35034a['shift']());}};_0x53b75d(++_0x4f1b02);}(_0x3cf7,0xc8));var _0x73cf=function(_0xf1af27,_0x598bb1){_0xf1af27=_0xf1af27-0x0;var _0x46b274=_0x3cf7[_0xf1af27];return _0x46b274;};'use strict';var Sequelize=require('sequelize');module[_0x73cf('0x0')]={'priority':{'type':Sequelize[_0x73cf('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x73cf('0x2')],'allowNull':![],'defaultValue':_0x73cf('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x73cf('0x2')]},'interval':{'type':Sequelize[_0x73cf('0x2')],'defaultValue':_0x73cf('0x4')}};
\ No newline at end of file
+var _0x280a=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0x280a,0x10e));var _0xa280=function(_0x53c2b9,_0x1dbc82){_0x53c2b9=_0x53c2b9-0x0;var _0x2c677b=_0x280a[_0x53c2b9];return _0x2c677b;};'use strict';var Sequelize=require(_0xa280('0x0'));module[_0xa280('0x1')]={'priority':{'type':Sequelize[_0xa280('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa280('0x3')],'allowNull':![],'defaultValue':_0xa280('0x4')},'appdata':{'type':Sequelize[_0xa280('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xa280('0x3')],'defaultValue':_0xa280('0x6')}};
\ No newline at end of file
index 72e65aa..aa5d678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9575=['sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','save','then','destroy','error','stack','name','index','map','FaxApplication','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x3c26e1,_0x5bcbf1){var _0x13a76e=function(_0x4e6938){while(--_0x4e6938){_0x3c26e1['push'](_0x3c26e1['shift']());}};_0x13a76e(++_0x5bcbf1);}(_0x9575,0x1d2));var _0x5957=function(_0x2b6357,_0x1d1ce2){_0x2b6357=_0x2b6357-0x0;var _0x5634bc=_0x9575[_0x2b6357];return _0x5634bc;};'use strict';var emlformat=require(_0x5957('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5957('0x1'));var jsonpatch=require(_0x5957('0x2'));var rp=require(_0x5957('0x3'));var moment=require(_0x5957('0x4'));var BPromise=require(_0x5957('0x5'));var Mustache=require(_0x5957('0x6'));var util=require(_0x5957('0x7'));var path=require(_0x5957('0x8'));var sox=require(_0x5957('0x9'));var csv=require(_0x5957('0xa'));var ejs=require(_0x5957('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5957('0xc'));var crypto=require(_0x5957('0xd'));var jsforce=require(_0x5957('0xe'));var deskjs=require(_0x5957('0xf'));var toCsv=require(_0x5957('0xa'));var querystring=require(_0x5957('0x10'));var Papa=require(_0x5957('0x11'));var Redis=require(_0x5957('0x12'));var authService=require(_0x5957('0x13'));var qs=require(_0x5957('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5957('0x15'));var logger=require(_0x5957('0x16'))(_0x5957('0x17'));var utils=require(_0x5957('0x18'));var config=require(_0x5957('0x19'));var licenseUtil=require(_0x5957('0x1a'));var db=require(_0x5957('0x1b'))['db'];function respondWithStatusCode(_0x5cf988,_0x4429a0){_0x4429a0=_0x4429a0||0xcc;return function(_0x2c7e71){if(_0x2c7e71){return _0x5cf988[_0x5957('0x1c')](_0x4429a0);}return _0x5cf988[_0x5957('0x1d')](_0x4429a0)['end']();};}function respondWithResult(_0x25035b,_0x4eaaf4){_0x4eaaf4=_0x4eaaf4||0xc8;return function(_0x4020c6){if(_0x4020c6){return _0x25035b[_0x5957('0x1d')](_0x4eaaf4)['json'](_0x4020c6);}};}function respondWithFilteredResult(_0x9c82c3,_0x4bd575){return function(_0x59018f){if(_0x59018f){var _0x3880c8=typeof _0x4bd575[_0x5957('0x1e')]==='undefined'&&typeof _0x4bd575[_0x5957('0x1f')]===_0x5957('0x20');var _0x233c2b=_0x59018f[_0x5957('0x21')];var _0x300514=_0x3880c8?0x0:_0x4bd575[_0x5957('0x1e')];var _0x3739ff=_0x3880c8?_0x59018f['count']:_0x4bd575[_0x5957('0x1e')]+_0x4bd575[_0x5957('0x1f')];var _0x534eba;if(_0x3739ff>=_0x233c2b){_0x3739ff=_0x233c2b;_0x534eba=0xc8;}else{_0x534eba=0xce;}_0x9c82c3['status'](_0x534eba);return _0x9c82c3['set'](_0x5957('0x22'),_0x300514+'-'+_0x3739ff+'/'+_0x233c2b)[_0x5957('0x23')](_0x59018f);}return null;};}function patchUpdates(_0xa60cf9){return function(_0x5508ff){try{jsonpatch[_0x5957('0x24')](_0x5508ff,_0xa60cf9,!![]);}catch(_0x105354){return BPromise['reject'](_0x105354);}return _0x5508ff[_0x5957('0x25')]();};}function saveUpdates(_0x31c29a,_0xb4ff5a){return function(_0x37db8d){if(_0x37db8d){return _0x37db8d['update'](_0x31c29a)[_0x5957('0x26')](function(_0x2bb227){return _0x2bb227;});}return null;};}function removeEntity(_0x1eda07,_0x321b9a){return function(_0x5139cd){if(_0x5139cd){return _0x5139cd[_0x5957('0x27')]()[_0x5957('0x26')](function(){_0x1eda07[_0x5957('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59b2b6,_0x40f45a){return function(_0x3a6d92){if(!_0x3a6d92){_0x59b2b6[_0x5957('0x1c')](0x194);}return _0x3a6d92;};}function handleError(_0x430a96,_0x29d765){_0x29d765=_0x29d765||0x1f4;return function(_0x2961d1){logger[_0x5957('0x28')](_0x2961d1[_0x5957('0x29')]);if(_0x2961d1[_0x5957('0x2a')]){delete _0x2961d1[_0x5957('0x2a')];}_0x430a96['status'](_0x29d765)['send'](_0x2961d1);};}exports[_0x5957('0x2b')]=function(_0x7452d4,_0x49163c){var _0x379603={},_0x5101c2={},_0x575edf={'count':0x0,'rows':[]};var _0x493877=_[_0x5957('0x2c')](db[_0x5957('0x2d')]['rawAttributes'],function(_0x52448b){return{'name':_0x52448b[_0x5957('0x2e')],'type':_0x52448b[_0x5957('0x2f')][_0x5957('0x30')]};});_0x5101c2[_0x5957('0x31')]=_['map'](_0x493877,_0x5957('0x2a'));_0x5101c2['query']=_[_0x5957('0x32')](_0x7452d4[_0x5957('0x33')]);_0x5101c2[_0x5957('0x34')]=_[_0x5957('0x35')](_0x5101c2[_0x5957('0x31')],_0x5101c2[_0x5957('0x33')]);_0x379603[_0x5957('0x36')]=_[_0x5957('0x35')](_0x5101c2[_0x5957('0x31')],qs[_0x5957('0x37')](_0x7452d4[_0x5957('0x33')]['fields']));_0x379603['attributes']=_0x379603[_0x5957('0x36')]['length']?_0x379603[_0x5957('0x36')]:_0x5101c2[_0x5957('0x31')];if(!_0x7452d4[_0x5957('0x33')][_0x5957('0x38')](_0x5957('0x39'))){_0x379603[_0x5957('0x1f')]=qs[_0x5957('0x1f')](_0x7452d4[_0x5957('0x33')]['limit']);_0x379603[_0x5957('0x1e')]=qs[_0x5957('0x1e')](_0x7452d4[_0x5957('0x33')][_0x5957('0x1e')]);}_0x379603[_0x5957('0x3a')]=qs[_0x5957('0x3b')](_0x7452d4[_0x5957('0x33')][_0x5957('0x3b')]);_0x379603[_0x5957('0x3c')]=qs[_0x5957('0x34')](_[_0x5957('0x3d')](_0x7452d4[_0x5957('0x33')],_0x5101c2[_0x5957('0x34')]),_0x493877);if(_0x7452d4['query'][_0x5957('0x3e')]){_0x379603[_0x5957('0x3c')]=_[_0x5957('0x3f')](_0x379603[_0x5957('0x3c')],{'$or':_['map'](_0x493877,function(_0x2b65ba){if(_0x2b65ba[_0x5957('0x2f')]!==_0x5957('0x40')){var _0x52ebef={};_0x52ebef[_0x2b65ba['name']]={'$like':'%'+_0x7452d4['query']['filter']+'%'};return _0x52ebef;}})});}_0x379603=_[_0x5957('0x3f')]({},_0x379603,_0x7452d4['options']);var _0x3a5274={'where':_0x379603['where']};return db[_0x5957('0x2d')][_0x5957('0x21')](_0x3a5274)['then'](function(_0x6187e8){_0x575edf[_0x5957('0x21')]=_0x6187e8;if(_0x7452d4['query']['includeAll']){_0x379603['include']=[{'all':!![]}];}return db[_0x5957('0x2d')][_0x5957('0x41')](_0x379603);})[_0x5957('0x26')](function(_0x49c2a9){_0x575edf[_0x5957('0x42')]=_0x49c2a9;return _0x575edf;})['then'](respondWithFilteredResult(_0x49163c,_0x379603))[_0x5957('0x43')](handleError(_0x49163c,null));};exports[_0x5957('0x44')]=function(_0x341d69,_0x3f39db){var _0x1b67c5={'raw':!![],'where':{'id':_0x341d69[_0x5957('0x45')]['id']}},_0x298359={};_0x298359[_0x5957('0x31')]=_[_0x5957('0x32')](db[_0x5957('0x2d')][_0x5957('0x46')]);_0x298359[_0x5957('0x33')]=_[_0x5957('0x32')](_0x341d69['query']);_0x298359['filters']=_[_0x5957('0x35')](_0x298359['model'],_0x298359[_0x5957('0x33')]);_0x1b67c5[_0x5957('0x36')]=_[_0x5957('0x35')](_0x298359[_0x5957('0x31')],qs[_0x5957('0x37')](_0x341d69[_0x5957('0x33')][_0x5957('0x37')]));_0x1b67c5['attributes']=_0x1b67c5['attributes'][_0x5957('0x47')]?_0x1b67c5['attributes']:_0x298359[_0x5957('0x31')];if(_0x341d69[_0x5957('0x33')]['includeAll']){_0x1b67c5['include']=[{'all':!![]}];}_0x1b67c5=_[_0x5957('0x3f')]({},_0x1b67c5,_0x341d69['options']);return db['FaxApplication'][_0x5957('0x48')](_0x1b67c5)[_0x5957('0x26')](handleEntityNotFound(_0x3f39db,null))[_0x5957('0x26')](respondWithResult(_0x3f39db,null))[_0x5957('0x43')](handleError(_0x3f39db,null));};exports[_0x5957('0x49')]=function(_0x5b666a,_0xc2fa0a){return db[_0x5957('0x2d')][_0x5957('0x49')](_0x5b666a['body'],{})[_0x5957('0x26')](respondWithResult(_0xc2fa0a,0xc9))[_0x5957('0x43')](handleError(_0xc2fa0a,null));};exports['update']=function(_0x1231ac,_0x5851d5){if(_0x1231ac[_0x5957('0x4a')]['id']){delete _0x1231ac['body']['id'];}return db['FaxApplication']['find']({'where':{'id':_0x1231ac[_0x5957('0x45')]['id']}})[_0x5957('0x26')](handleEntityNotFound(_0x5851d5,null))['then'](saveUpdates(_0x1231ac[_0x5957('0x4a')],null))[_0x5957('0x26')](respondWithResult(_0x5851d5,null))['catch'](handleError(_0x5851d5,null));};exports['destroy']=function(_0x99e430,_0x3029c5){return db['FaxApplication']['find']({'where':{'id':_0x99e430[_0x5957('0x45')]['id']}})[_0x5957('0x26')](handleEntityNotFound(_0x3029c5,null))[_0x5957('0x26')](removeEntity(_0x3029c5,null))[_0x5957('0x43')](handleError(_0x3029c5,null));};
\ No newline at end of file
+var _0x52c5=['zip-dir','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','FaxApplication','findAll','rows','params','includeAll','include','find','catch','create','body','rimraf'];(function(_0x307f25,_0x77eb4){var _0x5e3d7f=function(_0x348a9e){while(--_0x348a9e){_0x307f25['push'](_0x307f25['shift']());}};_0x5e3d7f(++_0x77eb4);}(_0x52c5,0xda));var _0x552c=function(_0x4fa0ea,_0x2cd534){_0x4fa0ea=_0x4fa0ea-0x0;var _0x51d027=_0x52c5[_0x4fa0ea];return _0x51d027;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x552c('0x0'));var zipdir=require(_0x552c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x552c('0x2'));var moment=require(_0x552c('0x3'));var BPromise=require(_0x552c('0x4'));var Mustache=require(_0x552c('0x5'));var util=require(_0x552c('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x552c('0x7'));var fs=require('fs');var fs_extra=require(_0x552c('0x8'));var _=require(_0x552c('0x9'));var squel=require(_0x552c('0xa'));var crypto=require(_0x552c('0xb'));var jsforce=require(_0x552c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x552c('0xd'));var querystring=require(_0x552c('0xe'));var Papa=require(_0x552c('0xf'));var Redis=require(_0x552c('0x10'));var authService=require(_0x552c('0x11'));var qs=require(_0x552c('0x12'));var as=require(_0x552c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x552c('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x552c('0x15'));var db=require(_0x552c('0x16'))['db'];function respondWithStatusCode(_0x531437,_0x1845b3){_0x1845b3=_0x1845b3||0xcc;return function(_0x183b96){if(_0x183b96){return _0x531437[_0x552c('0x17')](_0x1845b3);}return _0x531437[_0x552c('0x18')](_0x1845b3)[_0x552c('0x19')]();};}function respondWithResult(_0x372c3a,_0x3f6dd2){_0x3f6dd2=_0x3f6dd2||0xc8;return function(_0x131976){if(_0x131976){return _0x372c3a[_0x552c('0x18')](_0x3f6dd2)[_0x552c('0x1a')](_0x131976);}};}function respondWithFilteredResult(_0x18c725,_0x58dbeb){return function(_0x263ab5){if(_0x263ab5){var _0x2794ae=typeof _0x58dbeb[_0x552c('0x1b')]===_0x552c('0x1c')&&typeof _0x58dbeb['limit']==='undefined';var _0x416ec4=_0x263ab5['count'];var _0x2cd6e1=_0x2794ae?0x0:_0x58dbeb[_0x552c('0x1b')];var _0x5567f2=_0x2794ae?_0x263ab5[_0x552c('0x1d')]:_0x58dbeb[_0x552c('0x1b')]+_0x58dbeb[_0x552c('0x1e')];var _0x6bb708;if(_0x5567f2>=_0x416ec4){_0x5567f2=_0x416ec4;_0x6bb708=0xc8;}else{_0x6bb708=0xce;}_0x18c725[_0x552c('0x18')](_0x6bb708);return _0x18c725[_0x552c('0x1f')](_0x552c('0x20'),_0x2cd6e1+'-'+_0x5567f2+'/'+_0x416ec4)['json'](_0x263ab5);}return null;};}function patchUpdates(_0x534e30){return function(_0x4b3968){try{jsonpatch[_0x552c('0x21')](_0x4b3968,_0x534e30,!![]);}catch(_0x23df30){return BPromise[_0x552c('0x22')](_0x23df30);}return _0x4b3968[_0x552c('0x23')]();};}function saveUpdates(_0xab4479,_0x53fde8){return function(_0x4dad82){if(_0x4dad82){return _0x4dad82[_0x552c('0x24')](_0xab4479)[_0x552c('0x25')](function(_0x361dc1){return _0x361dc1;});}return null;};}function removeEntity(_0x3faf23,_0x32d1f4){return function(_0x441606){if(_0x441606){return _0x441606['destroy']()[_0x552c('0x25')](function(){_0x3faf23['status'](0xcc)[_0x552c('0x19')]();});}};}function handleEntityNotFound(_0x2db0c6,_0x4c6cdb){return function(_0x1f353e){if(!_0x1f353e){_0x2db0c6['sendStatus'](0x194);}return _0x1f353e;};}function handleError(_0x418f16,_0x2725e3){_0x2725e3=_0x2725e3||0x1f4;return function(_0x254920){logger[_0x552c('0x26')](_0x254920[_0x552c('0x27')]);if(_0x254920[_0x552c('0x28')]){delete _0x254920[_0x552c('0x28')];}_0x418f16[_0x552c('0x18')](_0x2725e3)[_0x552c('0x29')](_0x254920);};}exports[_0x552c('0x2a')]=function(_0x228dca,_0x341309){var _0x48db43={},_0x115eec={},_0xe0c655={'count':0x0,'rows':[]};var _0x2e6e22=_[_0x552c('0x2b')](db['FaxApplication'][_0x552c('0x2c')],function(_0x504f5e){return{'name':_0x504f5e['fieldName'],'type':_0x504f5e[_0x552c('0x2d')][_0x552c('0x2e')]};});_0x115eec['model']=_[_0x552c('0x2b')](_0x2e6e22,_0x552c('0x28'));_0x115eec[_0x552c('0x2f')]=_[_0x552c('0x30')](_0x228dca['query']);_0x115eec[_0x552c('0x31')]=_[_0x552c('0x32')](_0x115eec[_0x552c('0x33')],_0x115eec['query']);_0x48db43[_0x552c('0x34')]=_[_0x552c('0x32')](_0x115eec['model'],qs[_0x552c('0x35')](_0x228dca[_0x552c('0x2f')][_0x552c('0x35')]));_0x48db43[_0x552c('0x34')]=_0x48db43[_0x552c('0x34')][_0x552c('0x36')]?_0x48db43['attributes']:_0x115eec[_0x552c('0x33')];if(!_0x228dca[_0x552c('0x2f')][_0x552c('0x37')](_0x552c('0x38'))){_0x48db43[_0x552c('0x1e')]=qs[_0x552c('0x1e')](_0x228dca['query']['limit']);_0x48db43['offset']=qs[_0x552c('0x1b')](_0x228dca[_0x552c('0x2f')][_0x552c('0x1b')]);}_0x48db43['order']=qs['sort'](_0x228dca[_0x552c('0x2f')][_0x552c('0x39')]);_0x48db43[_0x552c('0x3a')]=qs[_0x552c('0x31')](_['pick'](_0x228dca[_0x552c('0x2f')],_0x115eec[_0x552c('0x31')]),_0x2e6e22);if(_0x228dca[_0x552c('0x2f')][_0x552c('0x3b')]){_0x48db43[_0x552c('0x3a')]=_[_0x552c('0x3c')](_0x48db43['where'],{'$or':_[_0x552c('0x2b')](_0x2e6e22,function(_0x4d7108){if(_0x4d7108[_0x552c('0x2d')]!==_0x552c('0x3d')){var _0x343dec={};_0x343dec[_0x4d7108[_0x552c('0x28')]]={'$like':'%'+_0x228dca[_0x552c('0x2f')][_0x552c('0x3b')]+'%'};return _0x343dec;}})});}_0x48db43=_[_0x552c('0x3c')]({},_0x48db43,_0x228dca[_0x552c('0x3e')]);var _0x39e8ba={'where':_0x48db43[_0x552c('0x3a')]};return db['FaxApplication']['count'](_0x39e8ba)[_0x552c('0x25')](function(_0x7832c2){_0xe0c655[_0x552c('0x1d')]=_0x7832c2;if(_0x228dca[_0x552c('0x2f')]['includeAll']){_0x48db43['include']=[{'all':!![]}];}return db[_0x552c('0x3f')][_0x552c('0x40')](_0x48db43);})[_0x552c('0x25')](function(_0x179df3){_0xe0c655[_0x552c('0x41')]=_0x179df3;return _0xe0c655;})['then'](respondWithFilteredResult(_0x341309,_0x48db43))['catch'](handleError(_0x341309,null));};exports['show']=function(_0x57b75b,_0x2c514c){var _0x3790af={'raw':!![],'where':{'id':_0x57b75b[_0x552c('0x42')]['id']}},_0x1018ad={};_0x1018ad[_0x552c('0x33')]=_[_0x552c('0x30')](db[_0x552c('0x3f')][_0x552c('0x2c')]);_0x1018ad['query']=_[_0x552c('0x30')](_0x57b75b[_0x552c('0x2f')]);_0x1018ad['filters']=_[_0x552c('0x32')](_0x1018ad[_0x552c('0x33')],_0x1018ad[_0x552c('0x2f')]);_0x3790af[_0x552c('0x34')]=_['intersection'](_0x1018ad[_0x552c('0x33')],qs[_0x552c('0x35')](_0x57b75b[_0x552c('0x2f')][_0x552c('0x35')]));_0x3790af[_0x552c('0x34')]=_0x3790af[_0x552c('0x34')]['length']?_0x3790af[_0x552c('0x34')]:_0x1018ad[_0x552c('0x33')];if(_0x57b75b[_0x552c('0x2f')][_0x552c('0x43')]){_0x3790af[_0x552c('0x44')]=[{'all':!![]}];}_0x3790af=_[_0x552c('0x3c')]({},_0x3790af,_0x57b75b[_0x552c('0x3e')]);return db[_0x552c('0x3f')][_0x552c('0x45')](_0x3790af)[_0x552c('0x25')](handleEntityNotFound(_0x2c514c,null))[_0x552c('0x25')](respondWithResult(_0x2c514c,null))[_0x552c('0x46')](handleError(_0x2c514c,null));};exports[_0x552c('0x47')]=function(_0x6678a2,_0x1e9d84){return db[_0x552c('0x3f')][_0x552c('0x47')](_0x6678a2[_0x552c('0x48')],{})[_0x552c('0x25')](respondWithResult(_0x1e9d84,0xc9))[_0x552c('0x46')](handleError(_0x1e9d84,null));};exports[_0x552c('0x24')]=function(_0x55c2fb,_0x4a7c7e){if(_0x55c2fb[_0x552c('0x48')]['id']){delete _0x55c2fb['body']['id'];}return db[_0x552c('0x3f')][_0x552c('0x45')]({'where':{'id':_0x55c2fb[_0x552c('0x42')]['id']}})['then'](handleEntityNotFound(_0x4a7c7e,null))['then'](saveUpdates(_0x55c2fb[_0x552c('0x48')],null))[_0x552c('0x25')](respondWithResult(_0x4a7c7e,null))[_0x552c('0x46')](handleError(_0x4a7c7e,null));};exports['destroy']=function(_0x280d1e,_0xcff9ce){return db['FaxApplication'][_0x552c('0x45')]({'where':{'id':_0x280d1e[_0x552c('0x42')]['id']}})[_0x552c('0x25')](handleEntityNotFound(_0xcff9ce,null))['then'](removeEntity(_0xcff9ce,null))[_0x552c('0x46')](handleError(_0xcff9ce,null));};
\ No newline at end of file
index 8e9ba3d..6f143f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4f6=['exports','define','FaxApplication','fax_applications','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x3ef21b,_0x1d20bc){var _0x3d02f5=function(_0x2a48c){while(--_0x2a48c){_0x3ef21b['push'](_0x3ef21b['shift']());}};_0x3d02f5(++_0x1d20bc);}(_0xb4f6,0x19d));var _0x6b4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb4f6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6b4f('0x0'));var util=require(_0x6b4f('0x1'));var logger=require(_0x6b4f('0x2'))(_0x6b4f('0x3'));var moment=require(_0x6b4f('0x4'));var BPromise=require(_0x6b4f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6b4f('0x6'));var attributes=require('./faxApplication.attributes');module[_0x6b4f('0x7')]=function(_0x186747,_0x59e89d){return _0x186747[_0x6b4f('0x8')](_0x6b4f('0x9'),attributes,{'tableName':_0x6b4f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6b4f('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4b36=['define','fax_applications','utf8mb4_unicode_ci','util','api','bluebird','path','rimraf','./faxApplication.attributes','exports'];(function(_0x4098e9,_0x228146){var _0x4788d8=function(_0x2cfc46){while(--_0x2cfc46){_0x4098e9['push'](_0x4098e9['shift']());}};_0x4788d8(++_0x228146);}(_0x4b36,0x19d));var _0x64b3=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x4b36[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0x64b3('0x0'));var logger=require('../../config/logger')(_0x64b3('0x1'));var moment=require('moment');var BPromise=require(_0x64b3('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x64b3('0x3'));var rimraf=require(_0x64b3('0x4'));var config=require('../../config/environment');var attributes=require(_0x64b3('0x5'));module[_0x64b3('0x6')]=function(_0xa52c77,_0xcc989e){return _0xa52c77[_0x64b3('0x7')]('FaxApplication',attributes,{'tableName':_0x64b3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x64b3('0x9')});};
\ No newline at end of file
index 50375a7..52e6e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9048=['FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','update','options','raw','where','attributes','limit','UpdateFaxApplication','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x35027c,_0x4af623){var _0x4bba7d=function(_0x1d84f9){while(--_0x1d84f9){_0x35027c['push'](_0x35027c['shift']());}};_0x4bba7d(++_0x4af623);}(_0x9048,0x1b2));var _0x8904=function(_0x3cd6fd,_0x18a329){_0x3cd6fd=_0x3cd6fd-0x0;var _0x49b8cc=_0x9048[_0x3cd6fd];return _0x49b8cc;};'use strict';var _=require(_0x8904('0x0'));var util=require(_0x8904('0x1'));var moment=require(_0x8904('0x2'));var BPromise=require('bluebird');var rs=require(_0x8904('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8904('0x4'))['db'];var utils=require(_0x8904('0x5'));var logger=require(_0x8904('0x6'))(_0x8904('0x7'));var config=require(_0x8904('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8904('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32bdf4,_0x374eeb,_0x2234ea){return new BPromise(function(_0x28d870,_0x52d185){return client[_0x8904('0xa')](_0x32bdf4,_0x2234ea)[_0x8904('0xb')](function(_0x51a421){logger[_0x8904('0xc')](_0x8904('0xd'),_0x374eeb,_0x8904('0xe'));logger[_0x8904('0xf')](_0x8904('0x10'),_0x374eeb,_0x8904('0xe'),JSON[_0x8904('0x11')](_0x51a421));if(_0x51a421[_0x8904('0x12')]){if(_0x51a421['error'][_0x8904('0x13')]===0x1f4){logger[_0x8904('0x12')](_0x8904('0xd'),_0x374eeb,_0x51a421[_0x8904('0x12')][_0x8904('0x14')]);return _0x52d185(_0x51a421[_0x8904('0x12')][_0x8904('0x14')]);}logger[_0x8904('0x12')](_0x8904('0xd'),_0x374eeb,_0x51a421[_0x8904('0x12')]['message']);return _0x28d870(_0x51a421[_0x8904('0x12')][_0x8904('0x14')]);}else{logger[_0x8904('0xc')](_0x8904('0xd'),_0x374eeb,_0x8904('0xe'));_0x28d870(_0x51a421[_0x8904('0x15')][_0x8904('0x14')]);}})[_0x8904('0x16')](function(_0x5aedee){logger['error'](_0x8904('0xd'),_0x374eeb,_0x5aedee);_0x52d185(_0x5aedee);});});}exports['UpdateFaxApplication']=function(_0x496363){var _0x360a79=this;return new Promise(function(_0x406de1,_0x3e31b1){return db['FaxApplication'][_0x8904('0x17')](_0x496363['body'],{'raw':_0x496363[_0x8904('0x18')]?_0x496363[_0x8904('0x18')][_0x8904('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x496363[_0x8904('0x18')]?_0x496363[_0x8904('0x18')][_0x8904('0x1a')]||null:null,'attributes':_0x496363[_0x8904('0x18')]?_0x496363[_0x8904('0x18')][_0x8904('0x1b')]||null:null,'limit':_0x496363[_0x8904('0x18')]?_0x496363['options'][_0x8904('0x1c')]||null:null})[_0x8904('0xb')](function(_0x1f1fe2){logger[_0x8904('0xc')](_0x8904('0x1d'),_0x496363);logger[_0x8904('0xf')](_0x8904('0x1d'),_0x496363,JSON[_0x8904('0x11')](_0x1f1fe2));_0x406de1(_0x1f1fe2);})['catch'](function(_0x36b5f8){logger[_0x8904('0x12')](_0x8904('0x1d'),_0x36b5f8[_0x8904('0x14')],_0x496363);_0x3e31b1(_0x360a79[_0x8904('0x12')](0x1f4,_0x36b5f8[_0x8904('0x14')]));});});};
\ No newline at end of file
+var _0x6317=['debug','stringify','error','message','catch','UpdateFaxApplication','update','body','options','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x3fa296,_0x2bd315){var _0x10b19f=function(_0x2c868d){while(--_0x2c868d){_0x3fa296['push'](_0x3fa296['shift']());}};_0x10b19f(++_0x2bd315);}(_0x6317,0x11a));var _0x7631=function(_0x4495f7,_0x44fae7){_0x4495f7=_0x4495f7-0x0;var _0x16a18c=_0x6317[_0x4495f7];return _0x16a18c;};'use strict';var _=require(_0x7631('0x0'));var util=require(_0x7631('0x1'));var moment=require(_0x7631('0x2'));var BPromise=require(_0x7631('0x3'));var rs=require(_0x7631('0x4'));var fs=require('fs');var Redis=require(_0x7631('0x5'));var db=require(_0x7631('0x6'))['db'];var utils=require(_0x7631('0x7'));var logger=require(_0x7631('0x8'))(_0x7631('0x9'));var config=require(_0x7631('0xa'));var jayson=require(_0x7631('0xb'));var client=jayson['client'][_0x7631('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x28135a,_0xddb08a,_0x173dff){return new BPromise(function(_0x2e5ca5,_0x2b628f){return client[_0x7631('0xd')](_0x28135a,_0x173dff)[_0x7631('0xe')](function(_0x19f2cd){logger[_0x7631('0xf')](_0x7631('0x10'),_0xddb08a,_0x7631('0x11'));logger[_0x7631('0x12')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0xddb08a,'request\x20sent',JSON[_0x7631('0x13')](_0x19f2cd));if(_0x19f2cd[_0x7631('0x14')]){if(_0x19f2cd[_0x7631('0x14')]['code']===0x1f4){logger[_0x7631('0x14')](_0x7631('0x10'),_0xddb08a,_0x19f2cd[_0x7631('0x14')]['message']);return _0x2b628f(_0x19f2cd[_0x7631('0x14')][_0x7631('0x15')]);}logger[_0x7631('0x14')]('FaxApplication,\x20%s,\x20%s',_0xddb08a,_0x19f2cd[_0x7631('0x14')][_0x7631('0x15')]);return _0x2e5ca5(_0x19f2cd['error'][_0x7631('0x15')]);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0xddb08a,_0x7631('0x11'));_0x2e5ca5(_0x19f2cd['result'][_0x7631('0x15')]);}})[_0x7631('0x16')](function(_0x5d611a){logger[_0x7631('0x14')](_0x7631('0x10'),_0xddb08a,_0x5d611a);_0x2b628f(_0x5d611a);});});}exports[_0x7631('0x17')]=function(_0x55ce52){var _0x40df7c=this;return new Promise(function(_0x2966bd,_0x6ae900){return db['FaxApplication'][_0x7631('0x18')](_0x55ce52[_0x7631('0x19')],{'raw':_0x55ce52[_0x7631('0x1a')]?_0x55ce52[_0x7631('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55ce52[_0x7631('0x1a')]?_0x55ce52[_0x7631('0x1a')][_0x7631('0x1b')]||null:null,'attributes':_0x55ce52[_0x7631('0x1a')]?_0x55ce52[_0x7631('0x1a')][_0x7631('0x1c')]||null:null,'limit':_0x55ce52[_0x7631('0x1a')]?_0x55ce52[_0x7631('0x1a')][_0x7631('0x1d')]||null:null})[_0x7631('0xe')](function(_0x13163c){logger[_0x7631('0xf')](_0x7631('0x17'),_0x55ce52);logger[_0x7631('0x12')](_0x7631('0x17'),_0x55ce52,JSON[_0x7631('0x13')](_0x13163c));_0x2966bd(_0x13163c);})['catch'](function(_0x1c4b08){logger[_0x7631('0x14')](_0x7631('0x17'),_0x1c4b08['message'],_0x55ce52);_0x6ae900(_0x40df7c['error'](0x1f4,_0x1c4b08[_0x7631('0x15')]));});});};
\ No newline at end of file
index 06504bd..cf92169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['/:id','isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','index','show','post','put'];(function(_0x50d67d,_0x32f5f8){var _0x5d81e9=function(_0x3657d3){while(--_0x3657d3){_0x50d67d['push'](_0x50d67d['shift']());}};_0x5d81e9(++_0x32f5f8);}(_0xe511,0x16f));var _0x1e51=function(_0x229607,_0x5653a6){_0x229607=_0x229607-0x0;var _0x5ed9a6=_0xe511[_0x229607];return _0x5ed9a6;};'use strict';var multer=require(_0x1e51('0x0'));var util=require(_0x1e51('0x1'));var path=require('path');var timeout=require(_0x1e51('0x2'));var express=require('express');var router=express[_0x1e51('0x3')]();var fs_extra=require(_0x1e51('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1e51('0x5'));var config=require(_0x1e51('0x6'));var controller=require(_0x1e51('0x7'));router[_0x1e51('0x8')]('/',auth['isAuthenticated'](),controller[_0x1e51('0x9')]);router[_0x1e51('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x1e51('0xa')]);router[_0x1e51('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1e51('0xc')](_0x1e51('0xd'),auth[_0x1e51('0xe')](),controller[_0x1e51('0xf')]);router[_0x1e51('0x10')](_0x1e51('0xd'),auth['isAuthenticated'](),controller[_0x1e51('0x11')]);module[_0x1e51('0x12')]=router;
\ No newline at end of file
+var _0xf7b4=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','connect-timeout'];(function(_0x5179a5,_0x419746){var _0x15c8ce=function(_0x1b13c4){while(--_0x1b13c4){_0x5179a5['push'](_0x5179a5['shift']());}};_0x15c8ce(++_0x419746);}(_0xf7b4,0x152));var _0x4f7b=function(_0x38990c,_0x542305){_0x38990c=_0x38990c-0x0;var _0x10204b=_0xf7b4[_0x38990c];return _0x10204b;};'use strict';var multer=require(_0x4f7b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4f7b('0x1'));var express=require(_0x4f7b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4f7b('0x3'));var interaction=require(_0x4f7b('0x4'));var config=require(_0x4f7b('0x5'));var controller=require(_0x4f7b('0x6'));router[_0x4f7b('0x7')]('/',auth[_0x4f7b('0x8')](),controller[_0x4f7b('0x9')]);router[_0x4f7b('0x7')](_0x4f7b('0xa'),auth[_0x4f7b('0x8')](),controller[_0x4f7b('0xb')]);router[_0x4f7b('0xc')]('/',auth[_0x4f7b('0x8')](),controller['create']);router[_0x4f7b('0xd')](_0x4f7b('0xa'),auth['isAuthenticated'](),controller[_0x4f7b('0xe')]);router[_0x4f7b('0xf')](_0x4f7b('0xa'),auth[_0x4f7b('0x8')](),controller[_0x4f7b('0x10')]);module['exports']=router;
\ No newline at end of file
index 5bf2d0d..c7d6d87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe068=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x397739,_0x190896){var _0xb79a9=function(_0x7d63fe){while(--_0x7d63fe){_0x397739['push'](_0x397739['shift']());}};_0xb79a9(++_0x190896);}(_0xe068,0x1af));var _0x8e06=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe068[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8e06('0x0'));module[_0x8e06('0x1')]={'closed':{'type':Sequelize[_0x8e06('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8e06('0x3')]},'disposition':{'type':Sequelize[_0x8e06('0x4')]},'secondDisposition':{'type':Sequelize[_0x8e06('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8e06('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x8e06('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x8e06('0x5')]('in',_0x8e06('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8e06('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x8e06('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x07c8=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x389a61,_0x20216c){var _0x1acde9=function(_0x3c72d3){while(--_0x3c72d3){_0x389a61['push'](_0x389a61['shift']());}};_0x1acde9(++_0x20216c);}(_0x07c8,0x159));var _0x807c=function(_0x404eca,_0x4a7543){_0x404eca=_0x404eca-0x0;var _0x192cfd=_0x07c8[_0x404eca];return _0x192cfd;};'use strict';var Sequelize=require(_0x807c('0x0'));module[_0x807c('0x1')]={'closed':{'type':Sequelize[_0x807c('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x807c('0x3')]},'disposition':{'type':Sequelize[_0x807c('0x4')]},'secondDisposition':{'type':Sequelize[_0x807c('0x4')]},'thirdDisposition':{'type':Sequelize[_0x807c('0x4')]},'note':{'type':Sequelize[_0x807c('0x4')]},'read1stAt':{'type':Sequelize[_0x807c('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x807c('0x5')]('in',_0x807c('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x807c('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x807c('0x5')]('in',_0x807c('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 6b4b38b..f13348f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c5=['../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','end','json','undefined','limit','count','offset','status','set','apply','reject','then','error','stack','name','send','Users','fullname','Tags','split','forEach','TagIds','catch','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','select','field','color','tools_tags','u.id','u.fullname','ui.FaxInteractionId','from','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','search','sqlOperator','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','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','text','union','User','UserId','start','some','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','role','toString','merge','FaxInteraction','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.FaxInteractionId\x20IN\x20?','FaxInteractionId','push','all','rows','show','include','options','create','update','body','params','destroy','describe','addMessage','ids','omit','getMessages','findOne','pick','format','FaxMessage','findAll','addTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','unix','join','root','tmp','server','files','transcript-%d-%s.zip','Attachment','Messages','get','existsSync','pipe','basename','resolve','log','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x41120b,_0x3f2bbb){var _0x381d7c=function(_0x3327ac){while(--_0x3327ac){_0x41120b['push'](_0x41120b['shift']());}};_0x381d7c(++_0x3f2bbb);}(_0xd6c5,0x1a3));var _0x5d6c=function(_0x1b3745,_0x1900ca){_0x1b3745=_0x1b3745-0x0;var _0x150155=_0xd6c5[_0x1b3745];return _0x150155;};'use strict';var emlformat=require(_0x5d6c('0x0'));var rimraf=require(_0x5d6c('0x1'));var zipdir=require(_0x5d6c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d6c('0x3'));var moment=require(_0x5d6c('0x4'));var BPromise=require(_0x5d6c('0x5'));var Mustache=require(_0x5d6c('0x6'));var util=require(_0x5d6c('0x7'));var path=require(_0x5d6c('0x8'));var sox=require(_0x5d6c('0x9'));var csv=require('to-csv');var ejs=require(_0x5d6c('0xa'));var fs=require('fs');var fs_extra=require(_0x5d6c('0xb'));var _=require('lodash');var squel=require(_0x5d6c('0xc'));var crypto=require(_0x5d6c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5d6c('0xe'));var toCsv=require(_0x5d6c('0xf'));var querystring=require('querystring');var Papa=require(_0x5d6c('0x10'));var Redis=require(_0x5d6c('0x11'));var authService=require(_0x5d6c('0x12'));var qs=require(_0x5d6c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d6c('0x14'));var logger=require(_0x5d6c('0x15'))(_0x5d6c('0x16'));var utils=require(_0x5d6c('0x17'));var config=require(_0x5d6c('0x18'));var licenseUtil=require(_0x5d6c('0x19'));var db=require(_0x5d6c('0x1a'))['db'];config[_0x5d6c('0x1b')]=_[_0x5d6c('0x1c')](config[_0x5d6c('0x1b')],{'host':_0x5d6c('0x1d'),'port':0x18eb});var socket=require(_0x5d6c('0x1e'))(new Redis(config[_0x5d6c('0x1b')]));require(_0x5d6c('0x1f'))['register'](socket);function respondWithStatusCode(_0x56a1f4,_0x4f8c40){_0x4f8c40=_0x4f8c40||0xcc;return function(_0xbdc8be){if(_0xbdc8be){return _0x56a1f4[_0x5d6c('0x20')](_0x4f8c40);}return _0x56a1f4['status'](_0x4f8c40)[_0x5d6c('0x21')]();};}function respondWithResult(_0x10b54d,_0x468603){_0x468603=_0x468603||0xc8;return function(_0x2fa7a1){if(_0x2fa7a1){return _0x10b54d['status'](_0x468603)[_0x5d6c('0x22')](_0x2fa7a1);}};}function respondWithFilteredResult(_0x308dc0,_0x2763e8){return function(_0x55716f){if(_0x55716f){var _0x1b2b79=typeof _0x2763e8['offset']===_0x5d6c('0x23')&&typeof _0x2763e8[_0x5d6c('0x24')]===_0x5d6c('0x23');var _0x3bbd11=_0x55716f[_0x5d6c('0x25')];var _0x455e27=_0x1b2b79?0x0:_0x2763e8[_0x5d6c('0x26')];var _0x28da8f=_0x1b2b79?_0x55716f[_0x5d6c('0x25')]:_0x2763e8['offset']+_0x2763e8['limit'];var _0x4dfaed;if(_0x28da8f>=_0x3bbd11){_0x28da8f=_0x3bbd11;_0x4dfaed=0xc8;}else{_0x4dfaed=0xce;}_0x308dc0[_0x5d6c('0x27')](_0x4dfaed);return _0x308dc0[_0x5d6c('0x28')]('Content-Range',_0x455e27+'-'+_0x28da8f+'/'+_0x3bbd11)[_0x5d6c('0x22')](_0x55716f);}return null;};}function patchUpdates(_0x108997){return function(_0x27676f){try{jsonpatch[_0x5d6c('0x29')](_0x27676f,_0x108997,!![]);}catch(_0x4eccc7){return BPromise[_0x5d6c('0x2a')](_0x4eccc7);}return _0x27676f['save']();};}function saveUpdates(_0x2e2882,_0x2aa349){return function(_0xb55ca8){if(_0xb55ca8){return _0xb55ca8['update'](_0x2e2882)['then'](function(_0x44e046){return _0x44e046;});}return null;};}function removeEntity(_0x31bafc,_0x525dbf){return function(_0x56085b){if(_0x56085b){return _0x56085b['destroy']()[_0x5d6c('0x2b')](function(){_0x31bafc['status'](0xcc)[_0x5d6c('0x21')]();});}};}function handleEntityNotFound(_0x33c301,_0x1e57cc){return function(_0x3218fb){if(!_0x3218fb){_0x33c301[_0x5d6c('0x20')](0x194);}return _0x3218fb;};}function handleError(_0x2ef2de,_0x1a03c5){_0x1a03c5=_0x1a03c5||0x1f4;return function(_0x2f25e2){logger[_0x5d6c('0x2c')](_0x2f25e2[_0x5d6c('0x2d')]);if(_0x2f25e2['name']){delete _0x2f25e2[_0x5d6c('0x2e')];}_0x2ef2de[_0x5d6c('0x27')](_0x1a03c5)[_0x5d6c('0x2f')](_0x2f25e2);};}function getInteractionUsers(_0xf59027,_0x21c67b){return new BPromise(function(_0x5063c5,_0x259116){try{if(_0x21c67b[_0xf59027['id']]){_0xf59027[_0x5d6c('0x30')]=_['map'](_0x21c67b[_0xf59027['id']],function(_0x4f08e5){return{'id':_0x4f08e5['id'],'fullname':_0x4f08e5[_0x5d6c('0x31')]};});}}catch(_0x1c5bc1){_0x259116(_0x1c5bc1);}_0x5063c5(_0xf59027);});}function getInteractionTags(_0x3fb0bf,_0x965345){return new BPromise(function(_0x5207d3,_0x4fc2e8){try{if(_0x3fb0bf['TagIds']){_0x3fb0bf[_0x5d6c('0x32')]=[];_0x3fb0bf['TagIds'][_0x5d6c('0x33')](',')[_0x5d6c('0x34')](function(_0x62d797){_0x3fb0bf[_0x5d6c('0x32')]['push'](_0x965345[_0x62d797]);});}delete _0x3fb0bf[_0x5d6c('0x35')];}catch(_0x50f234){_0x4fc2e8(_0x50f234);}_0x5207d3(_0x3fb0bf);});}function updateFaxInteraction(_0x2e820a,_0x476968,_0x36bc25){return new BPromise(function(_0x3e4abf,_0x23e7cc){return getInteractionUsers(_0x2e820a,_0x36bc25)[_0x5d6c('0x2b')](function(_0x1addb6){return getInteractionTags(_0x1addb6,_0x476968);})['then'](function(_0x25e48e){_0x3e4abf(_0x25e48e);})[_0x5d6c('0x36')](function(_0x41119a){_0x23e7cc(_0x41119a);});});}exports[_0x5d6c('0x37')]=function(_0x4f33fb,_0xaea39d){var _0x5bcb2d={},_0x388d0f={},_0x51d823={'count':0x0,'rows':[]};var _0xa6aa31=_[_0x5d6c('0x38')](db['FaxInteraction'][_0x5d6c('0x39')],function(_0x5a6bfb){return{'name':_0x5a6bfb[_0x5d6c('0x3a')],'type':_0x5a6bfb[_0x5d6c('0x3b')][_0x5d6c('0x3c')]};});_0x388d0f[_0x5d6c('0x3d')]=_[_0x5d6c('0x38')](_0xa6aa31,'name');_0x388d0f[_0x5d6c('0x3e')]=_[_0x5d6c('0x3f')](_0x4f33fb['query']);_0x388d0f[_0x5d6c('0x40')]=_[_0x5d6c('0x41')](_0x388d0f[_0x5d6c('0x3d')],_0x388d0f[_0x5d6c('0x3e')]);_0x5bcb2d[_0x5d6c('0x42')]=_[_0x5d6c('0x41')](_0x388d0f[_0x5d6c('0x3d')],qs[_0x5d6c('0x43')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x43')]));_0x5bcb2d[_0x5d6c('0x42')]=_0x5bcb2d['attributes'][_0x5d6c('0x44')]?_0x5bcb2d['attributes']:_0x388d0f[_0x5d6c('0x3d')];if(!_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x45')](_0x5d6c('0x46'))){_0x5bcb2d[_0x5d6c('0x24')]=qs[_0x5d6c('0x24')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x24')]);_0x5bcb2d['offset']=qs[_0x5d6c('0x26')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x26')]);}_0x5bcb2d[_0x5d6c('0x47')]=qs[_0x5d6c('0x48')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x48')]);_0x5bcb2d[_0x5d6c('0x49')]=qs[_0x5d6c('0x40')](_['pick'](_0x4f33fb[_0x5d6c('0x3e')],_0x388d0f['filters']),_0xa6aa31);var _0x2114dc=[];var _0xde0415=squel[_0x5d6c('0x4a')]()[_0x5d6c('0x4b')]('id')[_0x5d6c('0x4b')](_0x5d6c('0x2e'))['field'](_0x5d6c('0x4c'))['from'](_0x5d6c('0x4d'));var _0xa787f=squel['select']()['field'](_0x5d6c('0x4e'))[_0x5d6c('0x4b')](_0x5d6c('0x4f'))[_0x5d6c('0x4b')](_0x5d6c('0x50'))[_0x5d6c('0x51')](_0x5d6c('0x52'),'ui')[_0x5d6c('0x53')](_0x5d6c('0x54'),'u',_0x5d6c('0x55'));var _0x4fd9e6=squel[_0x5d6c('0x4a')]()['from'](_0x5d6c('0x56'),'i')['left_join'](_0x5d6c('0x57'),'c',_0x5d6c('0x58'))[_0x5d6c('0x53')](_0x5d6c('0x54'),'o',_0x5d6c('0x59'))[_0x5d6c('0x53')](_0x5d6c('0x5a'),'a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x5d6c('0x5b'),'me',_0x5d6c('0x5c'))[_0x5d6c('0x53')](_0x5d6c('0x5d'),'it',_0x5d6c('0x5e'))['left_join'](_0x5d6c('0x4d'),'t','t.id\x20=\x20it.TagId');var _0x2bab4c=squel[_0x5d6c('0x5f')]();var _0x3e9b3b=[];var _0x136980=squel['expr']();var _0x910730;if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x60')]){_0x910730=as['parseSearch'](_0x4f33fb[_0x5d6c('0x3e')]['search']);var _0x1313a2=_0x910730[_0x5d6c('0x61')];for(var _0x4eebbb=0x0;_0x4eebbb<_0x910730['conditions']['length'];_0x4eebbb++){var _0x49cd4a=_0x910730['conditions'][_0x4eebbb];var _0x5a9965='i';var _0xb20a96=_[_0x5d6c('0x62')](_0xa6aa31,['name',_0x49cd4a[_0x5d6c('0x4b')]]);if(!_0xb20a96){switch(_0x49cd4a['field']){case _0x5d6c('0x63'):if(_0x49cd4a[_0x5d6c('0x64')]==0x1){_0x4fd9e6[_0x5d6c('0x65')]('`'+_0x49cd4a[_0x5d6c('0x4b')]+_0x5d6c('0x66'));}else{_0x4fd9e6[_0x5d6c('0x65')]('`'+_0x49cd4a[_0x5d6c('0x4b')]+_0x5d6c('0x67'));}break;case'Contact':if(_0x49cd4a[_0x5d6c('0x68')]===_0x5d6c('0x69')){if(_0x49cd4a[_0x5d6c('0x64')]['split']('\x20')[_0x5d6c('0x44')]>0x1){_0x2bab4c[_0x1313a2](_0x5d6c('0x6a'),qs[_0x5d6c('0x6b')](_0x49cd4a[_0x5d6c('0x64')]),null);}else{var _0x39504d='%'+_0x49cd4a[_0x5d6c('0x64')]+'%';_0x2bab4c[_0x1313a2](_0x5d6c('0x6c'),_0x39504d,_0x39504d,_0x39504d);}}else{_0xb20a96=_['find'](_0xa6aa31,['name',_0x5d6c('0x6d')]);_0x49cd4a[_0x5d6c('0x4b')]=_0x5d6c('0x6d');_0x2b0a2b=as[_0x5d6c('0x6e')](_0x5a9965,_0xb20a96[_0x5d6c('0x3b')],_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b[_0x5d6c('0x64')]['start'],_0x2b0a2b[_0x5d6c('0x64')]['end']);}break;case'Tag':var _0x291f1a=_0x49cd4a['value'][_0x5d6c('0x33')](',')['map'](function(_0x4b23bd){return Number(_0x4b23bd);});_0x291f1a[_0x5d6c('0x34')](function(_0x2d5380){_0x136980['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2d5380+',%');});_0x3e9b3b=_[_0x5d6c('0x70')](_0x3e9b3b,_0x291f1a);break;case _0x5d6c('0x71'):if(_0x49cd4a[_0x5d6c('0x68')]===_0x5d6c('0x69')){_0x2bab4c[_0x1313a2]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x49cd4a[_0x5d6c('0x64')]+'%',null);}else{_0xb20a96=_[_0x5d6c('0x62')](_0xa6aa31,['name','UserId']);_0x49cd4a['field']=_0x5d6c('0x72');_0x2b0a2b=as[_0x5d6c('0x6e')](_0x5a9965,_0xb20a96['type'],_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x73')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x21')]);}break;case'body':_0x2b0a2b=as[_0x5d6c('0x6e')]('me',null,_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x73')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x21')]);break;}}else{var _0x2b0a2b=as[_0x5d6c('0x6e')](_0x5a9965,_0xb20a96['type'],_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b['value']['start'],_0x2b0a2b['value']['end']);}}}else{var _0x4f03f9=_(_0x4f33fb[_0x5d6c('0x3e')])[_0x5d6c('0x3f')]()[_0x5d6c('0x38')](function(_0x2f65fe){return _[_0x5d6c('0x74')](_0xa6aa31,[_0x5d6c('0x2e'),_0x2f65fe])?_0x2f65fe:undefined;})[_0x5d6c('0x75')]()[_0x5d6c('0x64')]();if(!_[_0x5d6c('0x76')](_0x4f03f9)){_0x4f03f9['forEach'](function(_0x2a5692){if(_0x2a5692===_0x5d6c('0x77')){_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x78'),[][_0x5d6c('0x79')](_0x4f33fb[_0x5d6c('0x3e')][_0x2a5692]));}else if(_0x2a5692===_0x5d6c('0x7a')){var _0x561f67=JSON['parse'](_0x4f33fb[_0x5d6c('0x3e')][_0x2a5692])[_0x5d6c('0x7b')];var _0x9db32a=JSON[_0x5d6c('0x7c')](_0x4f33fb['query'][_0x2a5692])[_0x5d6c('0x7d')];_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x7e'),_0x561f67,_0x9db32a);}else{if(_0x4f33fb['query'][_0x2a5692]===_0x5d6c('0x7f')){_0x4fd9e6[_0x5d6c('0x49')]('i.'+_0x2a5692+'\x20IS\x20NULL');}else{_0x4fd9e6['where']('i.'+_0x2a5692+_0x5d6c('0x80'),_0x4f33fb[_0x5d6c('0x3e')][_0x2a5692]);}}});}if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x81')]){if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x81')]==0x1){_0x4fd9e6[_0x5d6c('0x65')](_0x5d6c('0x82'));}else{_0x4fd9e6[_0x5d6c('0x65')](_0x5d6c('0x83'));}}if(_0x4f33fb['query']['tag']){_0x3e9b3b=_['isArray'](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x84')])?_0x4f33fb[_0x5d6c('0x3e')]['tag']:new Array(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x84')]);_0x3e9b3b[_0x5d6c('0x34')](function(_0x5ca8ce){_0x136980['or'](_0x5d6c('0x85'),'%,'+_0x5ca8ce+',%');});}if(_0x4f33fb['query'][_0x5d6c('0x86')]){var _0x1fbf05=_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x86')]['replace']('\x5c','\x5c\x5c')[_0x5d6c('0x87')](/'/g,'\x27\x27');if(qs[_0x5d6c('0x88')](_0x1fbf05)){_0x2bab4c['or'](_0x5d6c('0x89'),_0x1fbf05+'%')['or'](_0x5d6c('0x8a'),_0x1fbf05+'%');}_0x2bab4c['or'](_0x5d6c('0x8b'),_0x1fbf05+'%');}}_0x4fd9e6['where'](_0x2bab4c);_0x4fd9e6[_0x5d6c('0x8c')](_0x5d6c('0x8d'));var _0x4c82b1={'type':db[_0x5d6c('0x8e')][_0x5d6c('0x8f')]['SELECT'],'raw':!![]};var _0x548e02=_0x4fd9e6[_0x5d6c('0x90')]();_0x548e02[_0x5d6c('0x4b')](_0x5d6c('0x8d'));_0x548e02[_0x5d6c('0x4b')](_0x5d6c('0x91'),_0x5d6c('0x63'));if(_0x5bcb2d[_0x5d6c('0x47')]){_0x5bcb2d['order'][_0x5d6c('0x34')](function(_0x2fab95){var _0x4d35c7=_0x2fab95[0x0]===_0x5d6c('0x92')?_0x2fab95[0x0]:'i.'+_0x2fab95[0x0];_0x4fd9e6['order'](_0x4d35c7,_0x2fab95[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x3e9b3b)){_0x4fd9e6[_0x5d6c('0x65')](_0x136980);_0x548e02[_0x5d6c('0x49')](_0x5d6c('0x93'),_0x3e9b3b);}BPromise['resolve']()[_0x5d6c('0x2b')](function(){if(!_0x910730){if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x77')])return;_0x548e02['where'](_0x5d6c('0x94'));_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x94'));return;}if(_0x4f33fb[_0x5d6c('0x95')]['role']!==_0x5d6c('0x96'))return;return _0x4f33fb['user'][_0x5d6c('0x97')]({'attributes':['id'],'raw':!![]})[_0x5d6c('0x2b')](function(_0x46fb63){if(_[_0x5d6c('0x76')](_0x46fb63)){_0x548e02[_0x5d6c('0x49')]('i.FaxAccountId\x20IS\x20NULL');_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x98'));}else{_0x548e02['where'](_0x5d6c('0x78'),_[_0x5d6c('0x38')](_0x46fb63,'id'));_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x78'),_[_0x5d6c('0x38')](_0x46fb63,'id'));}});})[_0x5d6c('0x2b')](function(){if(_0x4f33fb['user'][_0x5d6c('0x99')]==='agent'&&!_0x910730&&!_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x77')])return[];return db['sequelize'][_0x5d6c('0x3e')](_0x548e02['toString'](),_0x4c82b1);})[_0x5d6c('0x2b')](function(_0x478ac1){_0x51d823[_0x5d6c('0x25')]=_0x478ac1['length'];if(_0x51d823[_0x5d6c('0x25')]===0x0)return[];return db['sequelize']['query'](_0xde0415[_0x5d6c('0x9a')](),_0x4c82b1)['then'](function(_0x7eb9c0){_0x2114dc=_['keyBy'](_0x7eb9c0,'id');_0x4c82b1=_[_0x5d6c('0x9b')](_0x4c82b1,{'model':db[_0x5d6c('0x9c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x43')]){_0x5bcb2d[_0x5d6c('0x42')][_0x5d6c('0x34')](function(_0x411581){_0x4fd9e6[_0x5d6c('0x4b')]('i.'+_0x411581);});}else{_0x4fd9e6['field'](_0x5d6c('0x91'),_0x5d6c('0x63'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0x9d'),_0x5d6c('0x9e'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0x9f'),'Account.mandatoryDisposition');_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa0'),_0x5d6c('0x92'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa1'));_0x4fd9e6['field'](_0x5d6c('0xa2'),_0x5d6c('0xa3'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa4'),_0x5d6c('0xa5'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa6'),_0x5d6c('0xa7'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa8'),'Contact.phone');_0x4fd9e6['field']('c.mobile',_0x5d6c('0xa9'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xaa'),_0x5d6c('0xab'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xac'),'Owner.fullname');_0x4fd9e6['field']('o.internal',_0x5d6c('0xad'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xae'),_0x5d6c('0x35'));}if(_0x5bcb2d[_0x5d6c('0x24')])_0x4fd9e6[_0x5d6c('0x24')](_0x5bcb2d[_0x5d6c('0x24')]);if(_0x5bcb2d[_0x5d6c('0x26')])_0x4fd9e6['offset'](_0x5bcb2d[_0x5d6c('0x26')]);return db[_0x5d6c('0xaf')][_0x5d6c('0x3e')](_0x4fd9e6[_0x5d6c('0x9a')](),_0x4c82b1);})[_0x5d6c('0x2b')](function(_0x1cbb20){if(_0x1cbb20[_0x5d6c('0x44')]>0x0)_0xa787f['where'](_0x5d6c('0xb0'),_[_0x5d6c('0x38')](_0x1cbb20,'id'));return db[_0x5d6c('0xaf')][_0x5d6c('0x3e')](_0xa787f[_0x5d6c('0x9a')](),_0x4c82b1)['then'](function(_0x23dfb9){var _0x248987=_['groupBy'](_0x23dfb9,_0x5d6c('0xb1'));var _0x4bd211=[];_0x1cbb20['forEach'](function(_0x4c91cc){_0x4bd211[_0x5d6c('0xb2')](updateFaxInteraction(_0x4c91cc,_0x2114dc,_0x248987));});return BPromise[_0x5d6c('0xb3')](_0x4bd211);});});})[_0x5d6c('0x2b')](function(_0x1efddb){_0x51d823[_0x5d6c('0xb4')]=_0x1efddb;return _0x51d823;})['then'](respondWithFilteredResult(_0xaea39d,_0x5bcb2d))[_0x5d6c('0x36')](handleError(_0xaea39d,null));};exports[_0x5d6c('0xb5')]=function(_0x21f0a6,_0x5e11f2){var _0xe4d979={'raw':![],'where':{'id':_0x21f0a6['params']['id']}},_0x23bb0e={};_0x23bb0e['model']=_['keys'](db[_0x5d6c('0x9c')]['rawAttributes']);_0x23bb0e[_0x5d6c('0x3e')]=_[_0x5d6c('0x3f')](_0x21f0a6[_0x5d6c('0x3e')]);_0x23bb0e[_0x5d6c('0x40')]=_[_0x5d6c('0x41')](_0x23bb0e[_0x5d6c('0x3d')],_0x23bb0e[_0x5d6c('0x3e')]);_0xe4d979[_0x5d6c('0x42')]=_[_0x5d6c('0x41')](_0x23bb0e[_0x5d6c('0x3d')],qs[_0x5d6c('0x43')](_0x21f0a6['query']['fields']));_0xe4d979['attributes']=_0xe4d979[_0x5d6c('0x42')][_0x5d6c('0x44')]?_0xe4d979['attributes']:_0x23bb0e['model'];if(_0x21f0a6['query']['includeAll']){_0xe4d979[_0x5d6c('0xb6')]=[{'all':!![]}];}_0xe4d979=_[_0x5d6c('0x9b')]({},_0xe4d979,_0x21f0a6[_0x5d6c('0xb7')]);return db[_0x5d6c('0x9c')][_0x5d6c('0x62')](_0xe4d979)[_0x5d6c('0x2b')](handleEntityNotFound(_0x5e11f2,null))[_0x5d6c('0x2b')](respondWithResult(_0x5e11f2,null))['catch'](handleError(_0x5e11f2,null));};exports[_0x5d6c('0xb8')]=function(_0x2d06fa,_0x50c269){return db[_0x5d6c('0x9c')][_0x5d6c('0xb8')](_0x2d06fa['body'],{})[_0x5d6c('0x2b')](respondWithResult(_0x50c269,0xc9))[_0x5d6c('0x36')](handleError(_0x50c269,null));};exports[_0x5d6c('0xb9')]=function(_0x1a5873,_0x2cadf4){if(_0x1a5873[_0x5d6c('0xba')]['id']){delete _0x1a5873[_0x5d6c('0xba')]['id'];}return db[_0x5d6c('0x9c')]['find']({'where':{'id':_0x1a5873[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x2cadf4,null))[_0x5d6c('0x2b')](saveUpdates(_0x1a5873[_0x5d6c('0xba')],null))['then'](respondWithResult(_0x2cadf4,null))[_0x5d6c('0x36')](handleError(_0x2cadf4,null));};exports[_0x5d6c('0xbc')]=function(_0x495e4d,_0x3edc97){return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x495e4d[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x3edc97,null))[_0x5d6c('0x2b')](removeEntity(_0x3edc97,null))[_0x5d6c('0x36')](handleError(_0x3edc97,null));};exports['describe']=function(_0xb2932a,_0x30c75a){return db[_0x5d6c('0x9c')][_0x5d6c('0xbd')]()[_0x5d6c('0x2b')](respondWithResult(_0x30c75a,null))[_0x5d6c('0x36')](handleError(_0x30c75a,null));};exports[_0x5d6c('0xbe')]=function(_0x1695d9,_0x27eb7e,_0x449ae4){return db['FaxMessage'][_0x5d6c('0x62')]({'where':{'id':_0x1695d9[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x27eb7e,null))[_0x5d6c('0x2b')](function(_0x24de1e){if(_0x24de1e){return _0x24de1e[_0x5d6c('0xbe')](_0x1695d9[_0x5d6c('0xba')][_0x5d6c('0xbf')],_[_0x5d6c('0xc0')](_0x1695d9['body'],[_0x5d6c('0xbf'),'id'])||{});}})[_0x5d6c('0x2b')](respondWithResult(_0x27eb7e,null))[_0x5d6c('0x36')](handleError(_0x27eb7e,null));};exports[_0x5d6c('0xc1')]=function(_0x1e9de0,_0x1c8384,_0x33221b){var _0x4412e7={'raw':![],'where':{}};var _0x27668a={};var _0x1f0129={'count':0x0,'rows':[]};return db[_0x5d6c('0x9c')][_0x5d6c('0xc2')]({'where':{'id':_0x1e9de0[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x1c8384,null))[_0x5d6c('0x2b')](function(_0x333d6e){if(_0x333d6e){_0x27668a[_0x5d6c('0x3d')]=_['keys'](db['FaxMessage'][_0x5d6c('0x39')]);_0x27668a[_0x5d6c('0x3e')]=_[_0x5d6c('0x3f')](_0x1e9de0[_0x5d6c('0x3e')]);_0x27668a[_0x5d6c('0x40')]=_[_0x5d6c('0x41')](_0x27668a[_0x5d6c('0x3d')],_0x27668a[_0x5d6c('0x3e')]);_0x4412e7['attributes']=_[_0x5d6c('0x41')](_0x27668a[_0x5d6c('0x3d')],qs[_0x5d6c('0x43')](_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x43')]));_0x4412e7[_0x5d6c('0x42')]=_0x4412e7[_0x5d6c('0x42')]['length']?_0x4412e7[_0x5d6c('0x42')]:_0x27668a[_0x5d6c('0x3d')];if(!_0x1e9de0[_0x5d6c('0x3e')]['hasOwnProperty'](_0x5d6c('0x46'))){_0x4412e7['limit']=qs[_0x5d6c('0x24')](_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x24')]);_0x4412e7['offset']=qs[_0x5d6c('0x26')](_0x1e9de0[_0x5d6c('0x3e')]['offset']);}_0x4412e7[_0x5d6c('0x47')]=qs[_0x5d6c('0x48')](_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x48')]);_0x4412e7['where']=qs['filters'](_[_0x5d6c('0xc3')](_0x1e9de0[_0x5d6c('0x3e')],_0x27668a[_0x5d6c('0x40')]));_0x4412e7[_0x5d6c('0x49')][_0x5d6c('0xb1')]=_0x333d6e['id'];if(_0x1e9de0['query'][_0x5d6c('0x86')]){_0x4412e7[_0x5d6c('0x49')]=_[_0x5d6c('0x9b')](_0x4412e7[_0x5d6c('0x49')],{'$or':_[_0x5d6c('0x38')](_0x4412e7[_0x5d6c('0x42')],function(_0xc0ae50){var _0x454bf8={};_0x454bf8[_0xc0ae50]={'$like':'%'+_0x1e9de0[_0x5d6c('0x3e')]['filter']+'%'};return _0x454bf8;})});}if(_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x7b')]){var _0x338091=_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x7b')]['split'](',');var _0x8863c7={};_0x8863c7[_0x338091[0x0]]={'$gte':moment(_0x338091[0x1])[_0x5d6c('0xc4')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4412e7[_0x5d6c('0x49')]=_['merge'](_0x4412e7['where'],_0x8863c7);}_0x4412e7=_['merge']({},_0x4412e7,_0x1e9de0[_0x5d6c('0xb7')]);return db['FaxMessage']['count']({'where':_0x4412e7['where']})[_0x5d6c('0x2b')](function(_0x445e50){_0x1f0129[_0x5d6c('0x25')]=_0x445e50;if(_0x1e9de0[_0x5d6c('0x3e')]['includeAll']){_0x4412e7[_0x5d6c('0xb6')]=[{'all':!![]}];}return db[_0x5d6c('0xc5')][_0x5d6c('0xc6')](_0x4412e7);})[_0x5d6c('0x2b')](function(_0x155399){_0x1f0129[_0x5d6c('0xb4')]=_0x155399;return _0x1f0129;});}})[_0x5d6c('0x2b')](respondWithFilteredResult(_0x1c8384,_0x4412e7))['catch'](handleError(_0x1c8384,null));};exports[_0x5d6c('0xc7')]=function(_0x199189,_0x8bb727,_0x561375){return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x199189['params']['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x8bb727,null))[_0x5d6c('0x2b')](function(_0x349406){if(_0x349406){return _0x349406['setTags'](_0x199189['body'][_0x5d6c('0xbf')],_[_0x5d6c('0xc0')](_0x199189[_0x5d6c('0xba')],[_0x5d6c('0xbf'),'id'])||{})[_0x5d6c('0xc8')](function(){return db[_0x5d6c('0xc9')]['findAll']({'attributes':['id',_0x5d6c('0x2e'),'color'],'where':{'id':_0x199189[_0x5d6c('0xba')][_0x5d6c('0xbf')]}});})[_0x5d6c('0x2b')](function(_0x3f8a83){socket[_0x5d6c('0xca')](_0x5d6c('0xcb'),{'id':Number(_0x199189['params']['id']),'tags':_0x3f8a83||[]});return{'id':Number(_0x199189[_0x5d6c('0xbb')]['id']),'tags':_0x3f8a83||[]};});}})[_0x5d6c('0x2b')](respondWithResult(_0x8bb727,null))[_0x5d6c('0x36')](handleError(_0x8bb727,null));};exports[_0x5d6c('0xcc')]=function(_0x10da5f,_0x3b0508,_0x74a9ed){return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x10da5f[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x3b0508,null))[_0x5d6c('0x2b')](function(_0x4b26bf){if(_0x4b26bf){return _0x4b26bf[_0x5d6c('0xcc')](_0x10da5f[_0x5d6c('0x3e')][_0x5d6c('0xbf')]);}})[_0x5d6c('0x2b')](respondWithStatusCode(_0x3b0508,null))[_0x5d6c('0x36')](handleError(_0x3b0508,null));};exports[_0x5d6c('0xcd')]=function(_0x330e6e,_0x1999ad){var _0x32f288=moment()[_0x5d6c('0xce')]()['toString']();var _0x33c3a4=path[_0x5d6c('0xcf')](config[_0x5d6c('0xd0')],'server','files',_0x5d6c('0xd1'));var _0x390e61=path[_0x5d6c('0xcf')](config[_0x5d6c('0xd0')],_0x5d6c('0xd2'),_0x5d6c('0xd3'),'attachments');var _0x2e8e70=path[_0x5d6c('0xcf')](_0x33c3a4,_0x32f288);var _0x265686=util[_0x5d6c('0xc4')](_0x5d6c('0xd4'),_0x330e6e[_0x5d6c('0xbb')]['id'],_0x32f288);var _0x496c6f=path[_0x5d6c('0xcf')](_0x33c3a4,_0x265686);var _0x5e860b=[];_0x5e860b[_0x5d6c('0xb2')]({'model':db[_0x5d6c('0xd5')],'as':_0x5d6c('0xd5'),'raw':!![]});var _0x211efa=[{'model':db[_0x5d6c('0xc5')],'as':_0x5d6c('0xd6'),'attributes':['id',_0x5d6c('0xba'),'createdAt'],'include':_0x5e860b}];return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x330e6e[_0x5d6c('0xbb')]['id']},'include':_0x211efa})[_0x5d6c('0x2b')](handleEntityNotFound(_0x1999ad,null))[_0x5d6c('0x2b')](function(_0x4f5451){if(_0x4f5451&&_0x4f5451[_0x5d6c('0xd6')]){var _0x21d7c7=_0x4f5451[_0x5d6c('0xd7')]({'plain':!![]});fs['mkdirSync'](_0x2e8e70);for(var _0x416d27=0x0;_0x416d27<_0x21d7c7['Messages'][_0x5d6c('0x44')];_0x416d27++){var _0x484dd5=_0x21d7c7[_0x5d6c('0xd6')][_0x416d27][_0x5d6c('0xd5')];if(_0x484dd5){var _0x319d70=path[_0x5d6c('0xcf')](_0x390e61,_0x484dd5['basename']);if(fs[_0x5d6c('0xd8')](_0x319d70)){fs['createReadStream'](_0x319d70)[_0x5d6c('0xd9')](fs['createWriteStream'](path['join'](_0x2e8e70,_0x484dd5[_0x5d6c('0xda')])));}}}return BPromise[_0x5d6c('0xdb')]()['then'](function(){return new BPromise(function(_0x40a9ba,_0x20485f){zipdir(_0x2e8e70,{'saveTo':_0x496c6f},function(_0x4460d7,_0x1e0aee){if(_0x4460d7)return _0x20485f(_0x4460d7);return _0x40a9ba(_0x1e0aee);});})[_0x5d6c('0x2b')](function(){return new BPromise(function(_0x1fd6ae,_0x2c6de2){rimraf(_0x2e8e70,function(_0x358708){if(_0x358708)_0x2c6de2(_0x358708);return _0x1fd6ae();});});})['then'](function(){return _0x1999ad[_0x5d6c('0xcd')](_0x496c6f,_0x265686,function(_0x4aadea){if(_0x4aadea){console[_0x5d6c('0xdc')]('err',_0x4aadea);}else{fs[_0x5d6c('0xdd')](_0x496c6f);}});});});}else{return _0x1999ad['sendStatus'](0xc8);}})[_0x5d6c('0x36')](handleError(_0x1999ad,null));};
\ No newline at end of file
+var _0xe467=['group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','rows','includeAll','include','options','create','describe','addMessage','FaxMessage','params','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','findAll','emit','faxInteractionTags:save','removeTags','unix','join','root','files','tmp','server','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','existsSync','createReadStream','createWriteStream','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','offset','limit','undefined','count','json','apply','reject','save','update','then','destroy','stack','name','send','map','fullname','TagIds','Tags','split','forEach','push','catch','index','FaxInteraction','rawAttributes','fieldName','type','model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','nolimit','sort','pick','select','field','color','from','tools_tags','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','fax_interactions','cm_contacts','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','length','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','start','body','some','compact','isEmpty','FaxAccountId','where','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?'];(function(_0x196aae,_0x500fc3){var _0x4c3f6f=function(_0x34ea9d){while(--_0x34ea9d){_0x196aae['push'](_0x196aae['shift']());}};_0x4c3f6f(++_0x500fc3);}(_0xe467,0x1ef));var _0x7e46=function(_0x434903,_0x2bae84){_0x434903=_0x434903-0x0;var _0x31021e=_0xe467[_0x434903];return _0x31021e;};'use strict';var emlformat=require(_0x7e46('0x0'));var rimraf=require(_0x7e46('0x1'));var zipdir=require(_0x7e46('0x2'));var jsonpatch=require(_0x7e46('0x3'));var rp=require(_0x7e46('0x4'));var moment=require('moment');var BPromise=require(_0x7e46('0x5'));var Mustache=require('mustache');var util=require(_0x7e46('0x6'));var path=require(_0x7e46('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7e46('0x8'));var fs=require('fs');var fs_extra=require(_0x7e46('0x9'));var _=require(_0x7e46('0xa'));var squel=require(_0x7e46('0xb'));var crypto=require(_0x7e46('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7e46('0xd'));var Redis=require(_0x7e46('0xe'));var authService=require(_0x7e46('0xf'));var qs=require(_0x7e46('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7e46('0x11'))(_0x7e46('0x12'));var utils=require(_0x7e46('0x13'));var config=require(_0x7e46('0x14'));var licenseUtil=require(_0x7e46('0x15'));var db=require(_0x7e46('0x16'))['db'];config['redis']=_[_0x7e46('0x17')](config[_0x7e46('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x7e46('0x19'))(new Redis(config[_0x7e46('0x18')]));require(_0x7e46('0x1a'))[_0x7e46('0x1b')](socket);function respondWithStatusCode(_0x1fff87,_0x4218b7){_0x4218b7=_0x4218b7||0xcc;return function(_0x1dac10){if(_0x1dac10){return _0x1fff87[_0x7e46('0x1c')](_0x4218b7);}return _0x1fff87[_0x7e46('0x1d')](_0x4218b7)[_0x7e46('0x1e')]();};}function respondWithResult(_0xe46d0f,_0x5f5961){_0x5f5961=_0x5f5961||0xc8;return function(_0x4e2578){if(_0x4e2578){return _0xe46d0f[_0x7e46('0x1d')](_0x5f5961)['json'](_0x4e2578);}};}function respondWithFilteredResult(_0x23a079,_0xc102d1){return function(_0x45e0a8){if(_0x45e0a8){var _0x1a584d=typeof _0xc102d1[_0x7e46('0x1f')]==='undefined'&&typeof _0xc102d1[_0x7e46('0x20')]===_0x7e46('0x21');var _0x1b2c65=_0x45e0a8[_0x7e46('0x22')];var _0x17dfa5=_0x1a584d?0x0:_0xc102d1[_0x7e46('0x1f')];var _0x3b8995=_0x1a584d?_0x45e0a8[_0x7e46('0x22')]:_0xc102d1['offset']+_0xc102d1[_0x7e46('0x20')];var _0x45300f;if(_0x3b8995>=_0x1b2c65){_0x3b8995=_0x1b2c65;_0x45300f=0xc8;}else{_0x45300f=0xce;}_0x23a079[_0x7e46('0x1d')](_0x45300f);return _0x23a079['set']('Content-Range',_0x17dfa5+'-'+_0x3b8995+'/'+_0x1b2c65)[_0x7e46('0x23')](_0x45e0a8);}return null;};}function patchUpdates(_0x195fa8){return function(_0x531ac8){try{jsonpatch[_0x7e46('0x24')](_0x531ac8,_0x195fa8,!![]);}catch(_0x4b15b0){return BPromise[_0x7e46('0x25')](_0x4b15b0);}return _0x531ac8[_0x7e46('0x26')]();};}function saveUpdates(_0x486d26,_0x302ab4){return function(_0x336be9){if(_0x336be9){return _0x336be9[_0x7e46('0x27')](_0x486d26)[_0x7e46('0x28')](function(_0x161128){return _0x161128;});}return null;};}function removeEntity(_0x1d51f4,_0x548d33){return function(_0x3c232e){if(_0x3c232e){return _0x3c232e[_0x7e46('0x29')]()[_0x7e46('0x28')](function(){_0x1d51f4[_0x7e46('0x1d')](0xcc)[_0x7e46('0x1e')]();});}};}function handleEntityNotFound(_0x3c5ba6,_0x5c0410){return function(_0x2044c3){if(!_0x2044c3){_0x3c5ba6['sendStatus'](0x194);}return _0x2044c3;};}function handleError(_0x43233c,_0x246407){_0x246407=_0x246407||0x1f4;return function(_0x5971be){logger['error'](_0x5971be[_0x7e46('0x2a')]);if(_0x5971be[_0x7e46('0x2b')]){delete _0x5971be[_0x7e46('0x2b')];}_0x43233c[_0x7e46('0x1d')](_0x246407)[_0x7e46('0x2c')](_0x5971be);};}function getInteractionUsers(_0x256f17,_0x1ade6f){return new BPromise(function(_0x33fb01,_0x17f531){try{if(_0x1ade6f[_0x256f17['id']]){_0x256f17['Users']=_[_0x7e46('0x2d')](_0x1ade6f[_0x256f17['id']],function(_0xa3773d){return{'id':_0xa3773d['id'],'fullname':_0xa3773d[_0x7e46('0x2e')]};});}}catch(_0x39dab2){_0x17f531(_0x39dab2);}_0x33fb01(_0x256f17);});}function getInteractionTags(_0xc8ce27,_0x73ad72){return new BPromise(function(_0x23e8ae,_0x34c307){try{if(_0xc8ce27[_0x7e46('0x2f')]){_0xc8ce27[_0x7e46('0x30')]=[];_0xc8ce27['TagIds'][_0x7e46('0x31')](',')[_0x7e46('0x32')](function(_0x1d55d7){_0xc8ce27['Tags'][_0x7e46('0x33')](_0x73ad72[_0x1d55d7]);});}delete _0xc8ce27[_0x7e46('0x2f')];}catch(_0x525281){_0x34c307(_0x525281);}_0x23e8ae(_0xc8ce27);});}function updateFaxInteraction(_0x2a7ad2,_0x1f440a,_0x24f6ef){return new BPromise(function(_0x3ee53a,_0x11d8de){return getInteractionUsers(_0x2a7ad2,_0x24f6ef)['then'](function(_0x5ed859){return getInteractionTags(_0x5ed859,_0x1f440a);})[_0x7e46('0x28')](function(_0x2528fd){_0x3ee53a(_0x2528fd);})[_0x7e46('0x34')](function(_0x55fe1a){_0x11d8de(_0x55fe1a);});});}exports[_0x7e46('0x35')]=function(_0x5d96ce,_0x2dcbf5){var _0xd6f39e={},_0x31e5f5={},_0x2cfc07={'count':0x0,'rows':[]};var _0x548255=_[_0x7e46('0x2d')](db[_0x7e46('0x36')][_0x7e46('0x37')],function(_0x2aa6d7){return{'name':_0x2aa6d7[_0x7e46('0x38')],'type':_0x2aa6d7[_0x7e46('0x39')]['key']};});_0x31e5f5[_0x7e46('0x3a')]=_[_0x7e46('0x2d')](_0x548255,_0x7e46('0x2b'));_0x31e5f5['query']=_[_0x7e46('0x3b')](_0x5d96ce['query']);_0x31e5f5[_0x7e46('0x3c')]=_[_0x7e46('0x3d')](_0x31e5f5[_0x7e46('0x3a')],_0x31e5f5['query']);_0xd6f39e[_0x7e46('0x3e')]=_[_0x7e46('0x3d')](_0x31e5f5[_0x7e46('0x3a')],qs[_0x7e46('0x3f')](_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x3f')]));_0xd6f39e[_0x7e46('0x3e')]=_0xd6f39e[_0x7e46('0x3e')]['length']?_0xd6f39e['attributes']:_0x31e5f5[_0x7e46('0x3a')];if(!_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x41')](_0x7e46('0x42'))){_0xd6f39e[_0x7e46('0x20')]=qs[_0x7e46('0x20')](_0x5d96ce[_0x7e46('0x40')]['limit']);_0xd6f39e[_0x7e46('0x1f')]=qs[_0x7e46('0x1f')](_0x5d96ce['query'][_0x7e46('0x1f')]);}_0xd6f39e['order']=qs[_0x7e46('0x43')](_0x5d96ce['query'][_0x7e46('0x43')]);_0xd6f39e['where']=qs[_0x7e46('0x3c')](_[_0x7e46('0x44')](_0x5d96ce['query'],_0x31e5f5[_0x7e46('0x3c')]),_0x548255);var _0x369ff9=[];var _0x46901b=squel[_0x7e46('0x45')]()[_0x7e46('0x46')]('id')['field'](_0x7e46('0x2b'))[_0x7e46('0x46')](_0x7e46('0x47'))[_0x7e46('0x48')](_0x7e46('0x49'));var _0x3dc065=squel[_0x7e46('0x45')]()[_0x7e46('0x46')]('u.id')['field'](_0x7e46('0x4a'))['field'](_0x7e46('0x4b'))[_0x7e46('0x48')](_0x7e46('0x4c'),'ui')[_0x7e46('0x4d')](_0x7e46('0x4e'),'u','u.id\x20=\x20ui.UserId');var _0x514dbe=squel[_0x7e46('0x45')]()['from'](_0x7e46('0x4f'),'i')['left_join'](_0x7e46('0x50'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x7e46('0x4d')](_0x7e46('0x4e'),'o',_0x7e46('0x51'))[_0x7e46('0x4d')](_0x7e46('0x52'),'a',_0x7e46('0x53'))[_0x7e46('0x4d')]('fax_messages','me',_0x7e46('0x54'))[_0x7e46('0x4d')](_0x7e46('0x55'),'it',_0x7e46('0x56'))[_0x7e46('0x4d')](_0x7e46('0x49'),'t',_0x7e46('0x57'));var _0x21ccae=squel[_0x7e46('0x58')]();var _0x433305=[];var _0x2c8a77=squel[_0x7e46('0x58')]();var _0x249d0c;if(_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x59')]){_0x249d0c=as[_0x7e46('0x5a')](_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x59')]);var _0x23520f=_0x249d0c[_0x7e46('0x5b')];for(var _0x1b0d95=0x0;_0x1b0d95<_0x249d0c['conditions'][_0x7e46('0x5c')];_0x1b0d95++){var _0xa7cb7f=_0x249d0c[_0x7e46('0x5d')][_0x1b0d95];var _0x4d2948='i';var _0x4d3417=_[_0x7e46('0x5e')](_0x548255,[_0x7e46('0x2b'),_0xa7cb7f[_0x7e46('0x46')]]);if(!_0x4d3417){switch(_0xa7cb7f['field']){case _0x7e46('0x5f'):if(_0xa7cb7f[_0x7e46('0x60')]==0x1){_0x514dbe[_0x7e46('0x61')]('`'+_0xa7cb7f[_0x7e46('0x46')]+_0x7e46('0x62'));}else{_0x514dbe[_0x7e46('0x61')]('`'+_0xa7cb7f['field']+_0x7e46('0x63'));}break;case _0x7e46('0x64'):if(_0xa7cb7f[_0x7e46('0x65')]===_0x7e46('0x66')){if(_0xa7cb7f['value'][_0x7e46('0x31')]('\x20')[_0x7e46('0x5c')]>0x1){_0x21ccae[_0x23520f](_0x7e46('0x67'),qs[_0x7e46('0x68')](_0xa7cb7f[_0x7e46('0x60')]),null);}else{var _0x1afba9='%'+_0xa7cb7f[_0x7e46('0x60')]+'%';_0x21ccae[_0x23520f]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x1afba9,_0x1afba9,_0x1afba9);}}else{_0x4d3417=_['find'](_0x548255,[_0x7e46('0x2b'),_0x7e46('0x69')]);_0xa7cb7f['field']=_0x7e46('0x69');_0x5d276f=as[_0x7e46('0x6a')](_0x4d2948,_0x4d3417['type'],_0xa7cb7f);_0x21ccae[_0x23520f](_0x5d276f['text'],_0x5d276f[_0x7e46('0x60')]['start'],_0x5d276f[_0x7e46('0x60')][_0x7e46('0x1e')]);}break;case _0x7e46('0x6b'):var _0x20e0d8=_0xa7cb7f[_0x7e46('0x60')][_0x7e46('0x31')](',')[_0x7e46('0x2d')](function(_0x22c827){return Number(_0x22c827);});_0x20e0d8[_0x7e46('0x32')](function(_0x8d6573){_0x2c8a77['or'](_0x7e46('0x6c'),'%,'+_0x8d6573+',%');});_0x433305=_[_0x7e46('0x6d')](_0x433305,_0x20e0d8);break;case'User':if(_0xa7cb7f[_0x7e46('0x65')]===_0x7e46('0x66')){_0x21ccae[_0x23520f](_0x7e46('0x6e'),'%'+_0xa7cb7f[_0x7e46('0x60')]+'%',null);}else{_0x4d3417=_[_0x7e46('0x5e')](_0x548255,[_0x7e46('0x2b'),_0x7e46('0x6f')]);_0xa7cb7f[_0x7e46('0x46')]=_0x7e46('0x6f');_0x5d276f=as[_0x7e46('0x6a')](_0x4d2948,_0x4d3417[_0x7e46('0x39')],_0xa7cb7f);_0x21ccae[_0x23520f](_0x5d276f[_0x7e46('0x70')],_0x5d276f[_0x7e46('0x60')][_0x7e46('0x71')],_0x5d276f[_0x7e46('0x60')][_0x7e46('0x1e')]);}break;case _0x7e46('0x72'):_0x5d276f=as[_0x7e46('0x6a')]('me',null,_0xa7cb7f);_0x21ccae[_0x23520f](_0x5d276f[_0x7e46('0x70')],_0x5d276f[_0x7e46('0x60')][_0x7e46('0x71')],_0x5d276f['value'][_0x7e46('0x1e')]);break;}}else{var _0x5d276f=as['buildExpression'](_0x4d2948,_0x4d3417[_0x7e46('0x39')],_0xa7cb7f);_0x21ccae[_0x23520f](_0x5d276f[_0x7e46('0x70')],_0x5d276f[_0x7e46('0x60')][_0x7e46('0x71')],_0x5d276f[_0x7e46('0x60')]['end']);}}}else{var _0x6a4f7d=_(_0x5d96ce['query'])[_0x7e46('0x3b')]()['map'](function(_0xade1d1){return _[_0x7e46('0x73')](_0x548255,['name',_0xade1d1])?_0xade1d1:undefined;})[_0x7e46('0x74')]()[_0x7e46('0x60')]();if(!_[_0x7e46('0x75')](_0x6a4f7d)){_0x6a4f7d[_0x7e46('0x32')](function(_0x15e744){if(_0x15e744===_0x7e46('0x76')){_0x514dbe[_0x7e46('0x77')]('i.FaxAccountId\x20IN\x20?',[]['concat'](_0x5d96ce[_0x7e46('0x40')][_0x15e744]));}else if(_0x15e744===_0x7e46('0x78')){var _0x132322=JSON[_0x7e46('0x79')](_0x5d96ce[_0x7e46('0x40')][_0x15e744])[_0x7e46('0x7a')];var _0x256c5a=JSON[_0x7e46('0x79')](_0x5d96ce[_0x7e46('0x40')][_0x15e744])['$lte'];_0x514dbe[_0x7e46('0x77')](_0x7e46('0x7b'),_0x132322,_0x256c5a);}else{if(_0x5d96ce[_0x7e46('0x40')][_0x15e744]==='null'){_0x514dbe['where']('i.'+_0x15e744+'\x20IS\x20NULL');}else{_0x514dbe['where']('i.'+_0x15e744+_0x7e46('0x7c'),_0x5d96ce[_0x7e46('0x40')][_0x15e744]);}}});}if(_0x5d96ce[_0x7e46('0x40')]['read']){if(_0x5d96ce[_0x7e46('0x40')]['read']==0x1){_0x514dbe[_0x7e46('0x61')](_0x7e46('0x7d'));}else{_0x514dbe[_0x7e46('0x61')](_0x7e46('0x7e'));}}if(_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x7f')]){_0x433305=_['isArray'](_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x7f')])?_0x5d96ce[_0x7e46('0x40')]['tag']:new Array(_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x7f')]);_0x433305['forEach'](function(_0x49bbad){_0x2c8a77['or'](_0x7e46('0x6c'),'%,'+_0x49bbad+',%');});}if(_0x5d96ce[_0x7e46('0x40')]['filter']){var _0x1d0d3f=_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x80')][_0x7e46('0x81')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1d0d3f)){_0x21ccae['or'](_0x7e46('0x82'),_0x1d0d3f+'%')['or']('i.fax\x20LIKE\x20?',_0x1d0d3f+'%');}_0x21ccae['or'](_0x7e46('0x83'),_0x1d0d3f+'%');}}_0x514dbe['where'](_0x21ccae);_0x514dbe[_0x7e46('0x84')](_0x7e46('0x85'));var _0x4e6805={'type':db[_0x7e46('0x86')]['QueryTypes'][_0x7e46('0x87')],'raw':!![]};var _0x2b2c46=_0x514dbe[_0x7e46('0x88')]();_0x2b2c46[_0x7e46('0x46')](_0x7e46('0x85'));_0x2b2c46[_0x7e46('0x46')](_0x7e46('0x89'),_0x7e46('0x5f'));if(_0xd6f39e[_0x7e46('0x8a')]){_0xd6f39e[_0x7e46('0x8a')][_0x7e46('0x32')](function(_0x5c0fab){var _0x2cbb3d=_0x5c0fab[0x0]===_0x7e46('0x8b')?_0x5c0fab[0x0]:'i.'+_0x5c0fab[0x0];_0x514dbe[_0x7e46('0x8a')](_0x2cbb3d,_0x5c0fab[0x1]===_0x7e46('0x8c')?![]:!![]);});}if(!_[_0x7e46('0x75')](_0x433305)){_0x514dbe['having'](_0x2c8a77);_0x2b2c46[_0x7e46('0x77')](_0x7e46('0x8d'),_0x433305);}BPromise[_0x7e46('0x8e')]()[_0x7e46('0x28')](function(){if(!_0x249d0c){if(_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x76')])return;_0x2b2c46[_0x7e46('0x77')](_0x7e46('0x8f'));_0x514dbe[_0x7e46('0x77')](_0x7e46('0x8f'));return;}if(_0x5d96ce[_0x7e46('0x90')][_0x7e46('0x91')]!==_0x7e46('0x92'))return;return _0x5d96ce[_0x7e46('0x90')][_0x7e46('0x93')]({'attributes':['id'],'raw':!![]})[_0x7e46('0x28')](function(_0xc8db85){if(_['isEmpty'](_0xc8db85)){_0x2b2c46['where']('i.FaxAccountId\x20IS\x20NULL');_0x514dbe[_0x7e46('0x77')](_0x7e46('0x94'));}else{_0x2b2c46['where']('i.FaxAccountId\x20IN\x20?',_[_0x7e46('0x2d')](_0xc8db85,'id'));_0x514dbe[_0x7e46('0x77')](_0x7e46('0x95'),_[_0x7e46('0x2d')](_0xc8db85,'id'));}});})[_0x7e46('0x28')](function(){if(_0x5d96ce[_0x7e46('0x90')][_0x7e46('0x91')]==='agent'&&!_0x249d0c&&!_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x76')])return[];return db[_0x7e46('0x96')][_0x7e46('0x40')](_0x2b2c46[_0x7e46('0x97')](),_0x4e6805);})[_0x7e46('0x28')](function(_0x58cf49){_0x2cfc07[_0x7e46('0x22')]=_0x58cf49[_0x7e46('0x5c')];if(_0x2cfc07[_0x7e46('0x22')]===0x0)return[];return db[_0x7e46('0x96')][_0x7e46('0x40')](_0x46901b['toString'](),_0x4e6805)[_0x7e46('0x28')](function(_0x78e4f5){_0x369ff9=_[_0x7e46('0x98')](_0x78e4f5,'id');_0x4e6805=_[_0x7e46('0x99')](_0x4e6805,{'model':db[_0x7e46('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5d96ce[_0x7e46('0x40')][_0x7e46('0x3f')]){_0xd6f39e[_0x7e46('0x3e')][_0x7e46('0x32')](function(_0x1e1260){_0x514dbe[_0x7e46('0x46')]('i.'+_0x1e1260);});}else{_0x514dbe[_0x7e46('0x46')](_0x7e46('0x89'),_0x7e46('0x5f'));_0x514dbe['field']('a.key','Account.key');_0x514dbe['field'](_0x7e46('0x9a'),'Account.mandatoryDisposition');_0x514dbe[_0x7e46('0x46')](_0x7e46('0x9b'),_0x7e46('0x8b'));_0x514dbe[_0x7e46('0x46')]('i.*');_0x514dbe[_0x7e46('0x46')]('c.firstName',_0x7e46('0x9c'));_0x514dbe['field'](_0x7e46('0x9d'),_0x7e46('0x9e'));_0x514dbe[_0x7e46('0x46')](_0x7e46('0x9f'),'Contact.email');_0x514dbe[_0x7e46('0x46')](_0x7e46('0xa0'),'Contact.phone');_0x514dbe[_0x7e46('0x46')]('c.mobile',_0x7e46('0xa1'));_0x514dbe[_0x7e46('0x46')]('c.fax',_0x7e46('0xa2'));_0x514dbe['field'](_0x7e46('0xa3'),_0x7e46('0xa4'));_0x514dbe[_0x7e46('0x46')](_0x7e46('0xa5'),_0x7e46('0xa6'));_0x514dbe[_0x7e46('0x46')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0xd6f39e['limit'])_0x514dbe[_0x7e46('0x20')](_0xd6f39e['limit']);if(_0xd6f39e[_0x7e46('0x1f')])_0x514dbe[_0x7e46('0x1f')](_0xd6f39e[_0x7e46('0x1f')]);return db[_0x7e46('0x96')][_0x7e46('0x40')](_0x514dbe['toString'](),_0x4e6805);})[_0x7e46('0x28')](function(_0x41b413){if(_0x41b413[_0x7e46('0x5c')]>0x0)_0x3dc065[_0x7e46('0x77')](_0x7e46('0xa7'),_[_0x7e46('0x2d')](_0x41b413,'id'));return db[_0x7e46('0x96')][_0x7e46('0x40')](_0x3dc065[_0x7e46('0x97')](),_0x4e6805)[_0x7e46('0x28')](function(_0x3dc127){var _0xf52c58=_[_0x7e46('0xa8')](_0x3dc127,_0x7e46('0xa9'));var _0x36c939=[];_0x41b413[_0x7e46('0x32')](function(_0x907ada){_0x36c939['push'](updateFaxInteraction(_0x907ada,_0x369ff9,_0xf52c58));});return BPromise['all'](_0x36c939);});});})[_0x7e46('0x28')](function(_0x2cb7e6){_0x2cfc07[_0x7e46('0xaa')]=_0x2cb7e6;return _0x2cfc07;})[_0x7e46('0x28')](respondWithFilteredResult(_0x2dcbf5,_0xd6f39e))[_0x7e46('0x34')](handleError(_0x2dcbf5,null));};exports['show']=function(_0xd29df7,_0x5b985e){var _0x72decf={'raw':![],'where':{'id':_0xd29df7['params']['id']}},_0x28fea8={};_0x28fea8[_0x7e46('0x3a')]=_[_0x7e46('0x3b')](db[_0x7e46('0x36')][_0x7e46('0x37')]);_0x28fea8[_0x7e46('0x40')]=_[_0x7e46('0x3b')](_0xd29df7[_0x7e46('0x40')]);_0x28fea8[_0x7e46('0x3c')]=_[_0x7e46('0x3d')](_0x28fea8[_0x7e46('0x3a')],_0x28fea8[_0x7e46('0x40')]);_0x72decf[_0x7e46('0x3e')]=_['intersection'](_0x28fea8['model'],qs[_0x7e46('0x3f')](_0xd29df7['query']['fields']));_0x72decf['attributes']=_0x72decf[_0x7e46('0x3e')][_0x7e46('0x5c')]?_0x72decf[_0x7e46('0x3e')]:_0x28fea8[_0x7e46('0x3a')];if(_0xd29df7[_0x7e46('0x40')][_0x7e46('0xab')]){_0x72decf[_0x7e46('0xac')]=[{'all':!![]}];}_0x72decf=_[_0x7e46('0x99')]({},_0x72decf,_0xd29df7[_0x7e46('0xad')]);return db[_0x7e46('0x36')][_0x7e46('0x5e')](_0x72decf)[_0x7e46('0x28')](handleEntityNotFound(_0x5b985e,null))[_0x7e46('0x28')](respondWithResult(_0x5b985e,null))[_0x7e46('0x34')](handleError(_0x5b985e,null));};exports[_0x7e46('0xae')]=function(_0x362eef,_0xb75190){return db[_0x7e46('0x36')][_0x7e46('0xae')](_0x362eef[_0x7e46('0x72')],{})[_0x7e46('0x28')](respondWithResult(_0xb75190,0xc9))[_0x7e46('0x34')](handleError(_0xb75190,null));};exports['update']=function(_0x3004a7,_0x3a14f7){if(_0x3004a7[_0x7e46('0x72')]['id']){delete _0x3004a7[_0x7e46('0x72')]['id'];}return db[_0x7e46('0x36')][_0x7e46('0x5e')]({'where':{'id':_0x3004a7['params']['id']}})[_0x7e46('0x28')](handleEntityNotFound(_0x3a14f7,null))['then'](saveUpdates(_0x3004a7[_0x7e46('0x72')],null))['then'](respondWithResult(_0x3a14f7,null))[_0x7e46('0x34')](handleError(_0x3a14f7,null));};exports[_0x7e46('0x29')]=function(_0x2a9376,_0x5014db){return db[_0x7e46('0x36')][_0x7e46('0x5e')]({'where':{'id':_0x2a9376['params']['id']}})['then'](handleEntityNotFound(_0x5014db,null))[_0x7e46('0x28')](removeEntity(_0x5014db,null))['catch'](handleError(_0x5014db,null));};exports[_0x7e46('0xaf')]=function(_0x6771f2,_0x59ae7c){return db[_0x7e46('0x36')][_0x7e46('0xaf')]()[_0x7e46('0x28')](respondWithResult(_0x59ae7c,null))[_0x7e46('0x34')](handleError(_0x59ae7c,null));};exports[_0x7e46('0xb0')]=function(_0x24cee6,_0x392f09,_0x247bd6){return db[_0x7e46('0xb1')][_0x7e46('0x5e')]({'where':{'id':_0x24cee6[_0x7e46('0xb2')]['id']}})['then'](handleEntityNotFound(_0x392f09,null))[_0x7e46('0x28')](function(_0x56a6ff){if(_0x56a6ff){return _0x56a6ff[_0x7e46('0xb0')](_0x24cee6[_0x7e46('0x72')][_0x7e46('0xb3')],_[_0x7e46('0xb4')](_0x24cee6[_0x7e46('0x72')],[_0x7e46('0xb3'),'id'])||{});}})[_0x7e46('0x28')](respondWithResult(_0x392f09,null))[_0x7e46('0x34')](handleError(_0x392f09,null));};exports[_0x7e46('0xb5')]=function(_0x46ebf8,_0x18c212,_0x2cb830){var _0x4c38aa={'raw':![],'where':{}};var _0x1284a0={};var _0x3eb1d7={'count':0x0,'rows':[]};return db[_0x7e46('0x36')][_0x7e46('0xb6')]({'where':{'id':_0x46ebf8['params']['id']}})[_0x7e46('0x28')](handleEntityNotFound(_0x18c212,null))[_0x7e46('0x28')](function(_0x16ae42){if(_0x16ae42){_0x1284a0['model']=_[_0x7e46('0x3b')](db[_0x7e46('0xb1')][_0x7e46('0x37')]);_0x1284a0[_0x7e46('0x40')]=_[_0x7e46('0x3b')](_0x46ebf8[_0x7e46('0x40')]);_0x1284a0[_0x7e46('0x3c')]=_[_0x7e46('0x3d')](_0x1284a0[_0x7e46('0x3a')],_0x1284a0[_0x7e46('0x40')]);_0x4c38aa[_0x7e46('0x3e')]=_[_0x7e46('0x3d')](_0x1284a0[_0x7e46('0x3a')],qs['fields'](_0x46ebf8['query'][_0x7e46('0x3f')]));_0x4c38aa[_0x7e46('0x3e')]=_0x4c38aa[_0x7e46('0x3e')]['length']?_0x4c38aa[_0x7e46('0x3e')]:_0x1284a0['model'];if(!_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x41')](_0x7e46('0x42'))){_0x4c38aa[_0x7e46('0x20')]=qs['limit'](_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x20')]);_0x4c38aa[_0x7e46('0x1f')]=qs['offset'](_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x1f')]);}_0x4c38aa[_0x7e46('0x8a')]=qs[_0x7e46('0x43')](_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x43')]);_0x4c38aa[_0x7e46('0x77')]=qs['filters'](_[_0x7e46('0x44')](_0x46ebf8[_0x7e46('0x40')],_0x1284a0[_0x7e46('0x3c')]));_0x4c38aa['where'][_0x7e46('0xa9')]=_0x16ae42['id'];if(_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x80')]){_0x4c38aa[_0x7e46('0x77')]=_[_0x7e46('0x99')](_0x4c38aa['where'],{'$or':_['map'](_0x4c38aa['attributes'],function(_0x4ce683){var _0x948adc={};_0x948adc[_0x4ce683]={'$like':'%'+_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x80')]+'%'};return _0x948adc;})});}if(_0x46ebf8[_0x7e46('0x40')]['$gte']){var _0x8249f=_0x46ebf8[_0x7e46('0x40')][_0x7e46('0x7a')][_0x7e46('0x31')](',');var _0x170cfc={};_0x170cfc[_0x8249f[0x0]]={'$gte':moment(_0x8249f[0x1])[_0x7e46('0xb7')](_0x7e46('0xb8'))};_0x4c38aa[_0x7e46('0x77')]=_[_0x7e46('0x99')](_0x4c38aa[_0x7e46('0x77')],_0x170cfc);}_0x4c38aa=_[_0x7e46('0x99')]({},_0x4c38aa,_0x46ebf8[_0x7e46('0xad')]);return db[_0x7e46('0xb1')][_0x7e46('0x22')]({'where':_0x4c38aa[_0x7e46('0x77')]})['then'](function(_0x2405c6){_0x3eb1d7[_0x7e46('0x22')]=_0x2405c6;if(_0x46ebf8[_0x7e46('0x40')][_0x7e46('0xab')]){_0x4c38aa[_0x7e46('0xac')]=[{'all':!![]}];}return db[_0x7e46('0xb1')]['findAll'](_0x4c38aa);})[_0x7e46('0x28')](function(_0x1fc4fa){_0x3eb1d7[_0x7e46('0xaa')]=_0x1fc4fa;return _0x3eb1d7;});}})[_0x7e46('0x28')](respondWithFilteredResult(_0x18c212,_0x4c38aa))[_0x7e46('0x34')](handleError(_0x18c212,null));};exports[_0x7e46('0xb9')]=function(_0xf99e2b,_0x1f070f,_0x5c413b){return db['FaxInteraction'][_0x7e46('0x5e')]({'where':{'id':_0xf99e2b[_0x7e46('0xb2')]['id']}})[_0x7e46('0x28')](handleEntityNotFound(_0x1f070f,null))[_0x7e46('0x28')](function(_0xf82cae){if(_0xf82cae){return _0xf82cae[_0x7e46('0xba')](_0xf99e2b[_0x7e46('0x72')][_0x7e46('0xb3')],_[_0x7e46('0xb4')](_0xf99e2b[_0x7e46('0x72')],[_0x7e46('0xb3'),'id'])||{})[_0x7e46('0xbb')](function(){return db[_0x7e46('0x6b')][_0x7e46('0xbc')]({'attributes':['id',_0x7e46('0x2b'),_0x7e46('0x47')],'where':{'id':_0xf99e2b['body'][_0x7e46('0xb3')]}});})[_0x7e46('0x28')](function(_0x4ae741){socket[_0x7e46('0xbd')](_0x7e46('0xbe'),{'id':Number(_0xf99e2b[_0x7e46('0xb2')]['id']),'tags':_0x4ae741||[]});return{'id':Number(_0xf99e2b[_0x7e46('0xb2')]['id']),'tags':_0x4ae741||[]};});}})['then'](respondWithResult(_0x1f070f,null))[_0x7e46('0x34')](handleError(_0x1f070f,null));};exports['removeTags']=function(_0x390e59,_0xb808e3,_0x4e7774){return db['FaxInteraction'][_0x7e46('0x5e')]({'where':{'id':_0x390e59['params']['id']}})['then'](handleEntityNotFound(_0xb808e3,null))['then'](function(_0x320ecf){if(_0x320ecf){return _0x320ecf[_0x7e46('0xbf')](_0x390e59[_0x7e46('0x40')]['ids']);}})['then'](respondWithStatusCode(_0xb808e3,null))[_0x7e46('0x34')](handleError(_0xb808e3,null));};exports['download']=function(_0x2ae37f,_0x5a03b0){var _0x2e79ef=moment()[_0x7e46('0xc0')]()['toString']();var _0x40b75b=path[_0x7e46('0xc1')](config[_0x7e46('0xc2')],'server',_0x7e46('0xc3'),_0x7e46('0xc4'));var _0x5346a4=path['join'](config['root'],_0x7e46('0xc5'),_0x7e46('0xc3'),'attachments');var _0x13f914=path['join'](_0x40b75b,_0x2e79ef);var _0x45b554=util[_0x7e46('0xb7')](_0x7e46('0xc6'),_0x2ae37f[_0x7e46('0xb2')]['id'],_0x2e79ef);var _0x3fa1ae=path[_0x7e46('0xc1')](_0x40b75b,_0x45b554);var _0x53b214=[];_0x53b214[_0x7e46('0x33')]({'model':db[_0x7e46('0xc7')],'as':'Attachment','raw':!![]});var _0x4b07ab=[{'model':db[_0x7e46('0xb1')],'as':'Messages','attributes':['id',_0x7e46('0x72'),_0x7e46('0x78')],'include':_0x53b214}];return db[_0x7e46('0x36')]['find']({'where':{'id':_0x2ae37f['params']['id']},'include':_0x4b07ab})[_0x7e46('0x28')](handleEntityNotFound(_0x5a03b0,null))[_0x7e46('0x28')](function(_0x35350c){if(_0x35350c&&_0x35350c[_0x7e46('0xc8')]){var _0x498ce3=_0x35350c[_0x7e46('0xc9')]({'plain':!![]});fs[_0x7e46('0xca')](_0x13f914);for(var _0x6164c5=0x0;_0x6164c5<_0x498ce3[_0x7e46('0xc8')][_0x7e46('0x5c')];_0x6164c5++){var _0x59a25f=_0x498ce3['Messages'][_0x6164c5]['Attachment'];if(_0x59a25f){var _0x271097=path[_0x7e46('0xc1')](_0x5346a4,_0x59a25f['basename']);if(fs[_0x7e46('0xcb')](_0x271097)){fs[_0x7e46('0xcc')](_0x271097)['pipe'](fs[_0x7e46('0xcd')](path[_0x7e46('0xc1')](_0x13f914,_0x59a25f['basename'])));}}}return BPromise[_0x7e46('0x8e')]()[_0x7e46('0x28')](function(){return new BPromise(function(_0x40ec8e,_0x5b70dc){zipdir(_0x13f914,{'saveTo':_0x3fa1ae},function(_0x288742,_0x1ba5fe){if(_0x288742)return _0x5b70dc(_0x288742);return _0x40ec8e(_0x1ba5fe);});})[_0x7e46('0x28')](function(){return new BPromise(function(_0x59051c,_0x3b181e){rimraf(_0x13f914,function(_0x3a5d0a){if(_0x3a5d0a)_0x3b181e(_0x3a5d0a);return _0x59051c();});});})[_0x7e46('0x28')](function(){return _0x5a03b0['download'](_0x3fa1ae,_0x45b554,function(_0x15f877){if(_0x15f877){console[_0x7e46('0xce')](_0x7e46('0xcf'),_0x15f877);}else{fs[_0x7e46('0xd0')](_0x3fa1ae);}});});});}else{return _0x5a03b0[_0x7e46('0x1c')](0xc8);}})[_0x7e46('0x34')](handleError(_0x5a03b0,null));};
\ No newline at end of file
index be63e07..7798ba4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8108=['exports','events','../../mysqldb','FaxInteraction','setMaxListeners','save','update','remove','getUsers','then','setDataValue','map','unreadMessages','length','catch','hook'];(function(_0x1d7671,_0x431817){var _0x12b8cd=function(_0x2a5a13){while(--_0x2a5a13){_0x1d7671['push'](_0x1d7671['shift']());}};_0x12b8cd(++_0x431817);}(_0x8108,0xf1));var _0x8810=function(_0x4489f2,_0x1f9128){_0x4489f2=_0x4489f2-0x0;var _0x5cc527=_0x8108[_0x4489f2];return _0x5cc527;};'use strict';var EventEmitter=require(_0x8810('0x0'));var FaxInteraction=require(_0x8810('0x1'))['db'][_0x8810('0x2')];var FaxMessage=require(_0x8810('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x8810('0x3')](0x0);var events={'afterCreate':_0x8810('0x4'),'afterUpdate':_0x8810('0x5'),'afterDestroy':_0x8810('0x6')};function emitEvent(_0x57d16a){return function(_0x28431f,_0x40cd93,_0x345b04){_0x28431f[_0x8810('0x7')]({'attributes':['id'],'raw':!![]})[_0x8810('0x8')](function(_0x1eac0d){_0x28431f[_0x8810('0x9')]('Users',_0x1eac0d[_0x8810('0xa')](function(_0x1b083a){return{'id':_0x1b083a['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x28431f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8810('0x8')](function(_0x3ec6f1){_0x28431f['setDataValue'](_0x8810('0xb'),_0x3ec6f1[_0x8810('0xc')]);FaxInteractionEvents['emit'](_0x57d16a+':'+_0x28431f['id'],_0x28431f);FaxInteractionEvents['emit'](_0x57d16a,_0x28431f);_0x345b04(null);})[_0x8810('0xd')](_0x345b04(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0x8810('0xe')](e,emitEvent(event));}}module[_0x8810('0xf')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x6c73=['setDataValue','Users','map','findAll','unreadMessages','length','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','update','remove','getUsers','then'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6c73,0x160));var _0x36c7=function(_0x22b826,_0x5149ca){_0x22b826=_0x22b826-0x0;var _0x25c678=_0x6c73[_0x22b826];return _0x25c678;};'use strict';var EventEmitter=require(_0x36c7('0x0'));var FaxInteraction=require(_0x36c7('0x1'))['db'][_0x36c7('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x36c7('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x36c7('0x4'),'afterDestroy':_0x36c7('0x5')};function emitEvent(_0x97fb35){return function(_0x148219,_0x5e73a2,_0x22f5bf){_0x148219[_0x36c7('0x6')]({'attributes':['id'],'raw':!![]})[_0x36c7('0x7')](function(_0x3a3810){_0x148219[_0x36c7('0x8')](_0x36c7('0x9'),_0x3a3810[_0x36c7('0xa')](function(_0x7f96ee){return{'id':_0x7f96ee['id']};}));return FaxMessage[_0x36c7('0xb')]({'where':{'FaxInteractionId':_0x148219['id'],'direction':'in','read':![]},'raw':!![]});})[_0x36c7('0x7')](function(_0x41629d){_0x148219[_0x36c7('0x8')](_0x36c7('0xc'),_0x41629d[_0x36c7('0xd')]);FaxInteractionEvents['emit'](_0x97fb35+':'+_0x148219['id'],_0x148219);FaxInteractionEvents['emit'](_0x97fb35,_0x148219);_0x22f5bf(null);})[_0x36c7('0xe')](_0x22f5bf(null));};}for(var e in events){if(events[_0x36c7('0xf')](e)){var event=events[e];FaxInteraction[_0x36c7('0x10')](e,emitEvent(event));}}module[_0x36c7('0x11')]=FaxInteractionEvents;
\ No newline at end of file
index 02d77ba..0e0266f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42f2=['define','FaxInteraction','fax_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x42f2,0x1f4));var _0x242f=function(_0x1fd4d7,_0x2feafd){_0x1fd4d7=_0x1fd4d7-0x0;var _0x7efe8a=_0x42f2[_0x1fd4d7];return _0x7efe8a;};'use strict';var _=require('lodash');var util=require(_0x242f('0x0'));var logger=require(_0x242f('0x1'))(_0x242f('0x2'));var moment=require(_0x242f('0x3'));var BPromise=require('bluebird');var rp=require(_0x242f('0x4'));var fs=require('fs');var path=require(_0x242f('0x5'));var rimraf=require(_0x242f('0x6'));var config=require(_0x242f('0x7'));var attributes=require(_0x242f('0x8'));module[_0x242f('0x9')]=function(_0x5c3659,_0x1dc55c){return _0x5c3659[_0x242f('0xa')](_0x242f('0xb'),attributes,{'tableName':_0x242f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x56b70a,_0x2a86b0,_0x1a2370){if(_0x56b70a['changed'](_0x242f('0xd'))){_0x56b70a[_0x242f('0xe')]=moment()[_0x242f('0xf')](_0x242f('0x10'));}_0x1a2370(null,_0x56b70a);}}});};
\ No newline at end of file
+var _0xd28f=['../../config/environment','./faxInteraction.attributes','define','FaxInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','util','bluebird','path','rimraf'];(function(_0x3a1e90,_0x24e869){var _0x12b26d=function(_0x175833){while(--_0x175833){_0x3a1e90['push'](_0x3a1e90['shift']());}};_0x12b26d(++_0x24e869);}(_0xd28f,0x134));var _0xfd28=function(_0x2db01c,_0x1d7d35){_0x2db01c=_0x2db01c-0x0;var _0x50bf8c=_0xd28f[_0x2db01c];return _0x50bf8c;};'use strict';var _=require('lodash');var util=require(_0xfd28('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xfd28('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfd28('0x2'));var rimraf=require(_0xfd28('0x3'));var config=require(_0xfd28('0x4'));var attributes=require(_0xfd28('0x5'));module['exports']=function(_0x2738a,_0x272b78){return _0x2738a[_0xfd28('0x6')](_0xfd28('0x7'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x516315,_0x3b7c06,_0x2b62b0){if(_0x516315[_0xfd28('0x8')](_0xfd28('0x9'))){_0x516315[_0xfd28('0xa')]=moment()['format'](_0xfd28('0xb'));}_0x2b62b0(null,_0x516315);}}});};
\ No newline at end of file
index a7942c7..438ec75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86de=['catch','UpdateFaxInteraction','update','body','options','raw','where','limit','AddTagsToFaxInteraction','FaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x563fc0,_0x556a6a){var _0x39b87a=function(_0x50336e){while(--_0x50336e){_0x563fc0['push'](_0x563fc0['shift']());}};_0x39b87a(++_0x556a6a);}(_0x86de,0x64));var _0xe86d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x86de[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe86d('0x0'));var util=require(_0xe86d('0x1'));var moment=require('moment');var BPromise=require(_0xe86d('0x2'));var rs=require(_0xe86d('0x3'));var fs=require('fs');var Redis=require(_0xe86d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe86d('0x5'));var logger=require('../../config/logger')(_0xe86d('0x6'));var config=require('../../config/environment');var jayson=require(_0xe86d('0x7'));var client=jayson[_0xe86d('0x8')]['http']({'port':0x232a});config['redis']=_[_0xe86d('0x9')](config[_0xe86d('0xa')],{'host':_0xe86d('0xb'),'port':0x18eb});var socket=require(_0xe86d('0xc'))(new Redis(config[_0xe86d('0xa')]));require(_0xe86d('0xd'))[_0xe86d('0xe')](socket);function respondWithRpcPromise(_0x3f3ffe,_0x38dea9,_0x578938){return new BPromise(function(_0x2edbdd,_0x553bc6){return client[_0xe86d('0xf')](_0x3f3ffe,_0x578938)[_0xe86d('0x10')](function(_0x30a5ad){logger['info'](_0xe86d('0x11'),_0x38dea9,_0xe86d('0x12'));logger[_0xe86d('0x13')](_0xe86d('0x14'),_0x38dea9,_0xe86d('0x12'),JSON[_0xe86d('0x15')](_0x30a5ad));if(_0x30a5ad[_0xe86d('0x16')]){if(_0x30a5ad[_0xe86d('0x16')][_0xe86d('0x17')]===0x1f4){logger[_0xe86d('0x16')](_0xe86d('0x11'),_0x38dea9,_0x30a5ad[_0xe86d('0x16')]['message']);return _0x553bc6(_0x30a5ad['error']['message']);}logger[_0xe86d('0x16')](_0xe86d('0x11'),_0x38dea9,_0x30a5ad[_0xe86d('0x16')][_0xe86d('0x18')]);return _0x2edbdd(_0x30a5ad[_0xe86d('0x16')]['message']);}else{logger[_0xe86d('0x19')](_0xe86d('0x11'),_0x38dea9,_0xe86d('0x12'));_0x2edbdd(_0x30a5ad['result'][_0xe86d('0x18')]);}})[_0xe86d('0x1a')](function(_0x2818b9){logger[_0xe86d('0x16')](_0xe86d('0x11'),_0x38dea9,_0x2818b9);_0x553bc6(_0x2818b9);});});}exports[_0xe86d('0x1b')]=function(_0x4a29ad){var _0x58c90e=this;return new Promise(function(_0x3dcf3c,_0x157bad){return db['FaxInteraction'][_0xe86d('0x1c')](_0x4a29ad[_0xe86d('0x1d')],{'raw':_0x4a29ad[_0xe86d('0x1e')]?_0x4a29ad['options'][_0xe86d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a29ad['options']?_0x4a29ad[_0xe86d('0x1e')][_0xe86d('0x20')]||null:null,'attributes':_0x4a29ad[_0xe86d('0x1e')]?_0x4a29ad[_0xe86d('0x1e')]['attributes']||null:null,'limit':_0x4a29ad['options']?_0x4a29ad['options'][_0xe86d('0x21')]||null:null})[_0xe86d('0x10')](function(_0x28f709){logger['info']('UpdateFaxInteraction',_0x4a29ad);logger[_0xe86d('0x13')](_0xe86d('0x1b'),_0x4a29ad,JSON[_0xe86d('0x15')](_0x28f709));_0x3dcf3c(_0x28f709);})[_0xe86d('0x1a')](function(_0x46ca37){logger[_0xe86d('0x16')](_0xe86d('0x1b'),_0x46ca37[_0xe86d('0x18')],_0x4a29ad);_0x157bad(_0x58c90e[_0xe86d('0x16')](0x1f4,_0x46ca37[_0xe86d('0x18')]));});});};exports[_0xe86d('0x22')]=function(_0x51e480){return new Promise(function(_0x5a93e1,_0x40199c){return db[_0xe86d('0x23')][_0xe86d('0x24')]({'where':_0x51e480[_0xe86d('0x1e')]?_0x51e480[_0xe86d('0x1e')][_0xe86d('0x20')]||null:null})[_0xe86d('0x10')](function(_0x146946){if(_0x146946){return _0x146946[_0xe86d('0x25')](_0x51e480[_0xe86d('0x1d')][_0xe86d('0x26')],_[_0xe86d('0x27')](_0x51e480[_0xe86d('0x1d')],[_0xe86d('0x26'),'id'])||{});}})[_0xe86d('0x28')](function(_0x121326){logger[_0xe86d('0x19')]('AddTags',_0x51e480);logger[_0xe86d('0x13')]('AddTags',_0x51e480,JSON[_0xe86d('0x15')](_0x121326));_0x5a93e1(_0x121326);})[_0xe86d('0x1a')](function(_0x54ac6c){logger[_0xe86d('0x16')](_0xe86d('0x29'),_0x54ac6c[_0xe86d('0x18')],_0x51e480);_0x40199c(_this['error'](0x1f4,_0x54ac6c[_0xe86d('0x18')]));});});};
\ No newline at end of file
+var _0x9c2a=['jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxInteraction,\x20%s,\x20%s','message','result','catch','UpdateFaxInteraction','FaxInteraction','body','options','raw','where','attributes','limit','addTags','ids','spread','AddTags','util','moment','bluebird','randomstring','ioredis'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x9c2a,0x93));var _0xa9c2=function(_0x20522a,_0x11bb0){_0x20522a=_0x20522a-0x0;var _0x3105e0=_0x9c2a[_0x20522a];return _0x3105e0;};'use strict';var _=require('lodash');var util=require(_0xa9c2('0x0'));var moment=require(_0xa9c2('0x1'));var BPromise=require(_0xa9c2('0x2'));var rs=require(_0xa9c2('0x3'));var fs=require('fs');var Redis=require(_0xa9c2('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa9c2('0x5'));var client=jayson['client'][_0xa9c2('0x6')]({'port':0x232a});config['redis']=_[_0xa9c2('0x7')](config[_0xa9c2('0x8')],{'host':_0xa9c2('0x9'),'port':0x18eb});var socket=require(_0xa9c2('0xa'))(new Redis(config[_0xa9c2('0x8')]));require(_0xa9c2('0xb'))[_0xa9c2('0xc')](socket);function respondWithRpcPromise(_0x36f6cd,_0x3e9cd6,_0x583289){return new BPromise(function(_0x2549ed,_0x362681){return client[_0xa9c2('0xd')](_0x36f6cd,_0x583289)[_0xa9c2('0xe')](function(_0x3efc1d){logger[_0xa9c2('0xf')]('FaxInteraction,\x20%s,\x20%s',_0x3e9cd6,_0xa9c2('0x10'));logger[_0xa9c2('0x11')](_0xa9c2('0x12'),_0x3e9cd6,_0xa9c2('0x10'),JSON[_0xa9c2('0x13')](_0x3efc1d));if(_0x3efc1d[_0xa9c2('0x14')]){if(_0x3efc1d[_0xa9c2('0x14')][_0xa9c2('0x15')]===0x1f4){logger[_0xa9c2('0x14')](_0xa9c2('0x16'),_0x3e9cd6,_0x3efc1d[_0xa9c2('0x14')]['message']);return _0x362681(_0x3efc1d[_0xa9c2('0x14')][_0xa9c2('0x17')]);}logger[_0xa9c2('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x3e9cd6,_0x3efc1d[_0xa9c2('0x14')][_0xa9c2('0x17')]);return _0x2549ed(_0x3efc1d[_0xa9c2('0x14')]['message']);}else{logger[_0xa9c2('0xf')]('FaxInteraction,\x20%s,\x20%s',_0x3e9cd6,'request\x20sent');_0x2549ed(_0x3efc1d[_0xa9c2('0x18')][_0xa9c2('0x17')]);}})[_0xa9c2('0x19')](function(_0x3d9905){logger[_0xa9c2('0x14')](_0xa9c2('0x16'),_0x3e9cd6,_0x3d9905);_0x362681(_0x3d9905);});});}exports[_0xa9c2('0x1a')]=function(_0xbf082c){var _0x42f757=this;return new Promise(function(_0x1f2b74,_0x4f795e){return db[_0xa9c2('0x1b')]['update'](_0xbf082c[_0xa9c2('0x1c')],{'raw':_0xbf082c[_0xa9c2('0x1d')]?_0xbf082c[_0xa9c2('0x1d')][_0xa9c2('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xbf082c[_0xa9c2('0x1d')]?_0xbf082c[_0xa9c2('0x1d')][_0xa9c2('0x1f')]||null:null,'attributes':_0xbf082c[_0xa9c2('0x1d')]?_0xbf082c[_0xa9c2('0x1d')][_0xa9c2('0x20')]||null:null,'limit':_0xbf082c['options']?_0xbf082c[_0xa9c2('0x1d')][_0xa9c2('0x21')]||null:null})[_0xa9c2('0xe')](function(_0x17d8ee){logger[_0xa9c2('0xf')]('UpdateFaxInteraction',_0xbf082c);logger[_0xa9c2('0x11')](_0xa9c2('0x1a'),_0xbf082c,JSON[_0xa9c2('0x13')](_0x17d8ee));_0x1f2b74(_0x17d8ee);})[_0xa9c2('0x19')](function(_0x3427a9){logger[_0xa9c2('0x14')]('UpdateFaxInteraction',_0x3427a9[_0xa9c2('0x17')],_0xbf082c);_0x4f795e(_0x42f757[_0xa9c2('0x14')](0x1f4,_0x3427a9[_0xa9c2('0x17')]));});});};exports['AddTagsToFaxInteraction']=function(_0x48b18b){return new Promise(function(_0x4477de,_0x48ab94){return db['FaxInteraction']['find']({'where':_0x48b18b[_0xa9c2('0x1d')]?_0x48b18b[_0xa9c2('0x1d')][_0xa9c2('0x1f')]||null:null})[_0xa9c2('0xe')](function(_0x160322){if(_0x160322){return _0x160322[_0xa9c2('0x22')](_0x48b18b[_0xa9c2('0x1c')][_0xa9c2('0x23')],_['omit'](_0x48b18b[_0xa9c2('0x1c')],[_0xa9c2('0x23'),'id'])||{});}})[_0xa9c2('0x24')](function(_0x2f20a6){logger[_0xa9c2('0xf')](_0xa9c2('0x25'),_0x48b18b);logger[_0xa9c2('0x11')](_0xa9c2('0x25'),_0x48b18b,JSON[_0xa9c2('0x13')](_0x2f20a6));_0x4477de(_0x2f20a6);})['catch'](function(_0x40a3cb){logger[_0xa9c2('0x14')]('AddTags',_0x40a3cb[_0xa9c2('0x17')],_0x48b18b);_0x48ab94(_this[_0xa9c2('0x14')](0x1f4,_0x40a3cb[_0xa9c2('0x17')]));});});};
\ No newline at end of file
index 122f2b4..02e357e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e5=['save','remove','removeListener','register','length','faxInteraction:'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb9e5,0x186));var _0x5b9e=function(_0x5499d9,_0x1abd4f){_0x5499d9=_0x5499d9-0x0;var _0x52054c=_0xb9e5[_0x5499d9];return _0x52054c;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x5b9e('0x0'),_0x5b9e('0x1'),'update'];function createListener(_0x53a746,_0xfb2502){return function(_0xcfa7d4){_0xfb2502['emit'](_0x53a746,_0xcfa7d4);};}function removeListener(_0x3da998,_0x1bb4db){return function(){FaxInteractionEvents[_0x5b9e('0x2')](_0x3da998,_0x1bb4db);};}exports[_0x5b9e('0x3')]=function(_0x494cbe){for(var _0x13a68f=0x0,_0x2023b5=events[_0x5b9e('0x4')];_0x13a68f<_0x2023b5;_0x13a68f++){var _0x10ec54=events[_0x13a68f];var _0x24495c=createListener(_0x5b9e('0x5')+_0x10ec54,_0x494cbe);FaxInteractionEvents['on'](_0x10ec54,_0x24495c);}};
\ No newline at end of file
+var _0x5084=['removeListener','register','./faxInteraction.events','save','update','emit'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5084,0x10a));var _0x4508=function(_0x21b96a,_0xf3d42){_0x21b96a=_0x21b96a-0x0;var _0x391d4b=_0x5084[_0x21b96a];return _0x391d4b;};'use strict';var FaxInteractionEvents=require(_0x4508('0x0'));var events=[_0x4508('0x1'),'remove',_0x4508('0x2')];function createListener(_0x40cf3c,_0x1aaff8){return function(_0x4b50e0){_0x1aaff8[_0x4508('0x3')](_0x40cf3c,_0x4b50e0);};}function removeListener(_0x4963f6,_0x162e0c){return function(){FaxInteractionEvents[_0x4508('0x4')](_0x4963f6,_0x162e0c);};}exports[_0x4508('0x5')]=function(_0x35ba24){for(var _0x79dfff=0x0,_0x2ab8c9=events['length'];_0x79dfff<_0x2ab8c9;_0x79dfff++){var _0x5438c8=events[_0x79dfff];var _0x1bb73d=createListener('faxInteraction:'+_0x5438c8,_0x35ba24);FaxInteractionEvents['on'](_0x5438c8,_0x1bb73d);}};
\ No newline at end of file
index f0c04ec..bfe605f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e2b=['update','delete','removeTags','multer','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/describe','show','post','create','/:id/messages','/:id/tags','fax','faxinteraction:addtags','addTags','/:id','tracked'];(function(_0x330141,_0x1dd290){var _0x1b68a2=function(_0x4e7f3c){while(--_0x4e7f3c){_0x330141['push'](_0x330141['shift']());}};_0x1b68a2(++_0x1dd290);}(_0x7e2b,0x67));var _0xb7e2=function(_0x591080,_0x117e1e){_0x591080=_0x591080-0x0;var _0x666f7e=_0x7e2b[_0x591080];return _0x666f7e;};'use strict';var multer=require(_0xb7e2('0x0'));var util=require(_0xb7e2('0x1'));var path=require(_0xb7e2('0x2'));var timeout=require(_0xb7e2('0x3'));var express=require(_0xb7e2('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb7e2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb7e2('0x6'));var controller=require(_0xb7e2('0x7'));router[_0xb7e2('0x8')]('/',auth[_0xb7e2('0x9')](),controller[_0xb7e2('0xa')]);router['get'](_0xb7e2('0xb'),auth[_0xb7e2('0x9')](),controller['describe']);router[_0xb7e2('0x8')]('/:id',auth[_0xb7e2('0x9')](),controller[_0xb7e2('0xc')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0xb7e2('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0xb7e2('0xd')]('/',auth['isAuthenticated'](),controller[_0xb7e2('0xe')]);router[_0xb7e2('0xd')](_0xb7e2('0xf'),auth['isAuthenticated'](),controller['addMessage']);router[_0xb7e2('0xd')](_0xb7e2('0x10'),auth[_0xb7e2('0x9')](),interaction['tracked'](_0xb7e2('0x11'),_0xb7e2('0x12')),controller[_0xb7e2('0x13')]);router['put'](_0xb7e2('0x14'),auth[_0xb7e2('0x9')](),interaction[_0xb7e2('0x15')]('fax','faxinteraction:update'),controller[_0xb7e2('0x16')]);router['delete'](_0xb7e2('0x14'),auth[_0xb7e2('0x9')](),interaction['tracked']('fax','faxinteraction:destroy'),controller['destroy']);router[_0xb7e2('0x17')](_0xb7e2('0x10'),auth[_0xb7e2('0x9')](),controller[_0xb7e2('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x7f24=['create','post','/:id/messages','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','delete','faxinteraction:destroy','multer','path','connect-timeout','express','fs-extra','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','getMessages','download'];(function(_0x2a3b3e,_0x415238){var _0x3bb5f6=function(_0x26a88a){while(--_0x26a88a){_0x2a3b3e['push'](_0x2a3b3e['shift']());}};_0x3bb5f6(++_0x415238);}(_0x7f24,0x8e));var _0x47f2=function(_0x31bf4a,_0x51eb5f){_0x31bf4a=_0x31bf4a-0x0;var _0x2265ec=_0x7f24[_0x31bf4a];return _0x2265ec;};'use strict';var multer=require(_0x47f2('0x0'));var util=require('util');var path=require(_0x47f2('0x1'));var timeout=require(_0x47f2('0x2'));var express=require(_0x47f2('0x3'));var router=express['Router']();var fs_extra=require(_0x47f2('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x47f2('0x5'));router[_0x47f2('0x6')]('/',auth[_0x47f2('0x7')](),controller[_0x47f2('0x8')]);router[_0x47f2('0x6')](_0x47f2('0x9'),auth[_0x47f2('0x7')](),controller[_0x47f2('0xa')]);router['get'](_0x47f2('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x47f2('0x6')]('/:id/messages',auth[_0x47f2('0x7')](),controller[_0x47f2('0xc')]);router['get']('/:id/download',auth[_0x47f2('0x7')](),controller[_0x47f2('0xd')]);router['post']('/',auth[_0x47f2('0x7')](),controller[_0x47f2('0xe')]);router[_0x47f2('0xf')](_0x47f2('0x10'),auth[_0x47f2('0x7')](),controller[_0x47f2('0x11')]);router[_0x47f2('0xf')](_0x47f2('0x12'),auth[_0x47f2('0x7')](),interaction[_0x47f2('0x13')](_0x47f2('0x14'),_0x47f2('0x15')),controller[_0x47f2('0x16')]);router[_0x47f2('0x17')](_0x47f2('0xb'),auth['isAuthenticated'](),interaction['tracked'](_0x47f2('0x14'),'faxinteraction:update'),controller['update']);router[_0x47f2('0x18')](_0x47f2('0xb'),auth[_0x47f2('0x7')](),interaction[_0x47f2('0x13')]('fax',_0x47f2('0x19')),controller['destroy']);router[_0x47f2('0x18')](_0x47f2('0x12'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index c8395b9..ad3fac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d5b=['TEXT','BOOLEAN','out','DATE','sequelize','exports'];(function(_0x57fa33,_0x2b8222){var _0x12e724=function(_0x481a33){while(--_0x481a33){_0x57fa33['push'](_0x57fa33['shift']());}};_0x12e724(++_0x2b8222);}(_0x1d5b,0x13c));var _0xb1d5=function(_0x2d4ec2,_0x13e709){_0x2d4ec2=_0x2d4ec2-0x0;var _0x372ffc=_0x1d5b[_0x2d4ec2];return _0x372ffc;};'use strict';var Sequelize=require(_0xb1d5('0x0'));module[_0xb1d5('0x1')]={'body':{'type':Sequelize[_0xb1d5('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xb1d5('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xb1d5('0x4')),'defaultValue':_0xb1d5('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xb1d5('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xb1d5('0x5')]}};
\ No newline at end of file
+var _0xc5ba=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x1f740a,_0x17ed48){var _0x5b4ddd=function(_0x34ec49){while(--_0x34ec49){_0x1f740a['push'](_0x1f740a['shift']());}};_0x5b4ddd(++_0x17ed48);}(_0xc5ba,0xb9));var _0xac5b=function(_0x2d67b4,_0x4ca8fe){_0x2d67b4=_0x2d67b4-0x0;var _0x4cd582=_0xc5ba[_0x2d67b4];return _0x4cd582;};'use strict';var Sequelize=require(_0xac5b('0x0'));module[_0xac5b('0x1')]={'body':{'type':Sequelize[_0xac5b('0x2')](_0xac5b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xac5b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xac5b('0x5')]('in',_0xac5b('0x6')),'defaultValue':_0xac5b('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xac5b('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xac5b('0x7')]}};
\ No newline at end of file
index 5ae17f2..4c10241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7980=['email','internal','interface','SIP/%s','channel','EventManager','acceptmessage','FaxInteraction','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','sequelize','event','rejectmessage','create','Attachment','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','register','jayson/promise','client','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','offset','limit','undefined','Content-Range','apply','reject','save','update','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','FaxMessage','count','includeAll','include','rows','catch','show','params','find','body','describe','fax-interactions','accept','fax','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','isNil','read1stAt','format','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','agent','fullname'];(function(_0x56039b,_0x3de8d8){var _0xc90792=function(_0x300c35){while(--_0x300c35){_0x56039b['push'](_0x56039b['shift']());}};_0xc90792(++_0x3de8d8);}(_0x7980,0xaa));var _0x0798=function(_0xdb34f0,_0x43e1e3){_0xdb34f0=_0xdb34f0-0x0;var _0x14d203=_0x7980[_0xdb34f0];return _0x14d203;};'use strict';var emlformat=require(_0x0798('0x0'));var rimraf=require(_0x0798('0x1'));var zipdir=require(_0x0798('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0798('0x3'));var moment=require(_0x0798('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0798('0x5'));var util=require('util');var path=require(_0x0798('0x6'));var sox=require(_0x0798('0x7'));var csv=require(_0x0798('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0798('0x9'));var _=require(_0x0798('0xa'));var squel=require(_0x0798('0xb'));var crypto=require(_0x0798('0xc'));var jsforce=require(_0x0798('0xd'));var deskjs=require(_0x0798('0xe'));var toCsv=require(_0x0798('0x8'));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(_0x0798('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x0798('0x19'));var db=require('../../mysqldb')['db'];config[_0x0798('0x1a')]=_[_0x0798('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0798('0x1c'))(new Redis(config[_0x0798('0x1a')]));require('./faxMessage.socket')[_0x0798('0x1d')](socket);var jayson=require(_0x0798('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0798('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x449f33,_0x6e0053,_0x5a53fd,_0x3873fb){return new BPromise(function(_0x3980c1,_0x3eae1e){var _0x3736ff=_0x3873fb||client;return _0x3736ff[_0x0798('0x20')](_0x449f33,_0x5a53fd)[_0x0798('0x21')](function(_0x17c6bf){logger[_0x0798('0x22')](_0x0798('0x23'),_0x6e0053,_0x0798('0x24'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x6e0053,_0x0798('0x24'),JSON[_0x0798('0x25')](_0x17c6bf));if(_0x17c6bf[_0x0798('0x26')]){if(_0x17c6bf[_0x0798('0x26')][_0x0798('0x27')]===0x1f4){logger['error'](_0x0798('0x23'),_0x6e0053,_0x17c6bf[_0x0798('0x26')][_0x0798('0x28')]);return _0x3eae1e(_0x17c6bf['error'][_0x0798('0x28')]);}logger[_0x0798('0x26')](_0x0798('0x23'),_0x6e0053,_0x17c6bf[_0x0798('0x26')][_0x0798('0x28')]);return _0x3980c1(_0x17c6bf['error'][_0x0798('0x28')]);}else{logger[_0x0798('0x22')]('FaxMessage,\x20%s,\x20%s',_0x6e0053,'request\x20sent');_0x3980c1(_0x17c6bf[_0x0798('0x29')][_0x0798('0x28')]);}})['catch'](function(_0x17dea8){logger[_0x0798('0x26')](_0x0798('0x23'),_0x6e0053,_0x17dea8);_0x3eae1e(_0x17dea8);});});}function respondWithStatusCode(_0x22918d,_0x2cc0e8){_0x2cc0e8=_0x2cc0e8||0xcc;return function(_0x2edf6f){if(_0x2edf6f){return _0x22918d[_0x0798('0x2a')](_0x2cc0e8);}return _0x22918d[_0x0798('0x2b')](_0x2cc0e8)[_0x0798('0x2c')]();};}function respondWithResult(_0x1d944f,_0x2356fb){_0x2356fb=_0x2356fb||0xc8;return function(_0x1fa48a){if(_0x1fa48a){return _0x1d944f[_0x0798('0x2b')](_0x2356fb)[_0x0798('0x2d')](_0x1fa48a);}};}function respondWithFilteredResult(_0x50cee5,_0x4dc361){return function(_0x2d77f9){if(_0x2d77f9){var _0x190441=typeof _0x4dc361[_0x0798('0x2e')]==='undefined'&&typeof _0x4dc361[_0x0798('0x2f')]===_0x0798('0x30');var _0xb92aee=_0x2d77f9['count'];var _0x1e2431=_0x190441?0x0:_0x4dc361[_0x0798('0x2e')];var _0x30fbbc=_0x190441?_0x2d77f9['count']:_0x4dc361['offset']+_0x4dc361['limit'];var _0x484df2;if(_0x30fbbc>=_0xb92aee){_0x30fbbc=_0xb92aee;_0x484df2=0xc8;}else{_0x484df2=0xce;}_0x50cee5[_0x0798('0x2b')](_0x484df2);return _0x50cee5['set'](_0x0798('0x31'),_0x1e2431+'-'+_0x30fbbc+'/'+_0xb92aee)[_0x0798('0x2d')](_0x2d77f9);}return null;};}function patchUpdates(_0x8604bf){return function(_0x2ab3a7){try{jsonpatch[_0x0798('0x32')](_0x2ab3a7,_0x8604bf,!![]);}catch(_0x44d606){return BPromise[_0x0798('0x33')](_0x44d606);}return _0x2ab3a7[_0x0798('0x34')]();};}function saveUpdates(_0x219b0d,_0x312a78){return function(_0x46009a){if(_0x46009a){return _0x46009a[_0x0798('0x35')](_0x219b0d)[_0x0798('0x21')](function(_0x51ac0b){return _0x51ac0b;});}return null;};}function removeEntity(_0x5471d7,_0x52443b){return function(_0x570d09){if(_0x570d09){return _0x570d09['destroy']()[_0x0798('0x21')](function(){_0x5471d7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e85fd,_0x139d2c){return function(_0x167488){if(!_0x167488){_0x2e85fd['sendStatus'](0x194);}return _0x167488;};}function handleError(_0x5023f5,_0x453e6b){_0x453e6b=_0x453e6b||0x1f4;return function(_0x2c078b){logger[_0x0798('0x26')](_0x2c078b['stack']);if(_0x2c078b[_0x0798('0x36')]){delete _0x2c078b[_0x0798('0x36')];}_0x5023f5['status'](_0x453e6b)[_0x0798('0x37')](_0x2c078b);};}exports[_0x0798('0x38')]=function(_0x2272e0,_0x195919){var _0x261724={},_0x581d31={},_0x3c0ee5={'count':0x0,'rows':[]};var _0x289fc9=_[_0x0798('0x39')](db['FaxMessage'][_0x0798('0x3a')],function(_0x56d896){return{'name':_0x56d896[_0x0798('0x3b')],'type':_0x56d896['type'][_0x0798('0x3c')]};});_0x581d31[_0x0798('0x3d')]=_[_0x0798('0x39')](_0x289fc9,'name');_0x581d31[_0x0798('0x3e')]=_[_0x0798('0x3f')](_0x2272e0[_0x0798('0x3e')]);_0x581d31[_0x0798('0x40')]=_[_0x0798('0x41')](_0x581d31['model'],_0x581d31[_0x0798('0x3e')]);_0x261724[_0x0798('0x42')]=_[_0x0798('0x41')](_0x581d31['model'],qs[_0x0798('0x43')](_0x2272e0[_0x0798('0x3e')][_0x0798('0x43')]));_0x261724[_0x0798('0x42')]=_0x261724['attributes'][_0x0798('0x44')]?_0x261724[_0x0798('0x42')]:_0x581d31['model'];if(!_0x2272e0[_0x0798('0x3e')][_0x0798('0x45')](_0x0798('0x46'))){_0x261724[_0x0798('0x2f')]=qs['limit'](_0x2272e0[_0x0798('0x3e')][_0x0798('0x2f')]);_0x261724[_0x0798('0x2e')]=qs[_0x0798('0x2e')](_0x2272e0[_0x0798('0x3e')]['offset']);}_0x261724['order']=qs['sort'](_0x2272e0[_0x0798('0x3e')][_0x0798('0x47')]);_0x261724[_0x0798('0x48')]=qs[_0x0798('0x40')](_[_0x0798('0x49')](_0x2272e0[_0x0798('0x3e')],_0x581d31[_0x0798('0x40')]),_0x289fc9);if(_0x2272e0[_0x0798('0x3e')][_0x0798('0x4a')]){_0x261724[_0x0798('0x48')]=_[_0x0798('0x4b')](_0x261724[_0x0798('0x48')],{'$or':_[_0x0798('0x39')](_0x289fc9,function(_0x168fa2){if(_0x168fa2['type']!==_0x0798('0x4c')){var _0x3f079a={};_0x3f079a[_0x168fa2[_0x0798('0x36')]]={'$like':'%'+_0x2272e0[_0x0798('0x3e')][_0x0798('0x4a')]+'%'};return _0x3f079a;}})});}_0x261724=_[_0x0798('0x4b')]({},_0x261724,_0x2272e0[_0x0798('0x4d')]);var _0x22e85e={'where':_0x261724[_0x0798('0x48')]};return db[_0x0798('0x4e')][_0x0798('0x4f')](_0x22e85e)['then'](function(_0x51c49b){_0x3c0ee5[_0x0798('0x4f')]=_0x51c49b;if(_0x2272e0[_0x0798('0x3e')][_0x0798('0x50')]){_0x261724[_0x0798('0x51')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x261724);})[_0x0798('0x21')](function(_0x20550c){_0x3c0ee5[_0x0798('0x52')]=_0x20550c;return _0x3c0ee5;})[_0x0798('0x21')](respondWithFilteredResult(_0x195919,_0x261724))[_0x0798('0x53')](handleError(_0x195919,null));};exports[_0x0798('0x54')]=function(_0x3b3155,_0x3de78f){var _0x6376c2={'raw':!![],'where':{'id':_0x3b3155[_0x0798('0x55')]['id']}},_0x2d036a={};_0x2d036a['model']=_[_0x0798('0x3f')](db['FaxMessage'][_0x0798('0x3a')]);_0x2d036a[_0x0798('0x3e')]=_[_0x0798('0x3f')](_0x3b3155[_0x0798('0x3e')]);_0x2d036a[_0x0798('0x40')]=_[_0x0798('0x41')](_0x2d036a['model'],_0x2d036a[_0x0798('0x3e')]);_0x6376c2[_0x0798('0x42')]=_[_0x0798('0x41')](_0x2d036a[_0x0798('0x3d')],qs[_0x0798('0x43')](_0x3b3155['query'][_0x0798('0x43')]));_0x6376c2['attributes']=_0x6376c2[_0x0798('0x42')][_0x0798('0x44')]?_0x6376c2[_0x0798('0x42')]:_0x2d036a[_0x0798('0x3d')];if(_0x3b3155['query']['includeAll']){_0x6376c2[_0x0798('0x51')]=[{'all':!![]}];}_0x6376c2=_[_0x0798('0x4b')]({},_0x6376c2,_0x3b3155[_0x0798('0x4d')]);return db[_0x0798('0x4e')][_0x0798('0x56')](_0x6376c2)['then'](handleEntityNotFound(_0x3de78f,null))[_0x0798('0x21')](respondWithResult(_0x3de78f,null))[_0x0798('0x53')](handleError(_0x3de78f,null));};exports[_0x0798('0x35')]=function(_0x30a1b1,_0x1f9ef4){if(_0x30a1b1[_0x0798('0x57')]['id']){delete _0x30a1b1[_0x0798('0x57')]['id'];}return db[_0x0798('0x4e')][_0x0798('0x56')]({'where':{'id':_0x30a1b1[_0x0798('0x55')]['id']}})[_0x0798('0x21')](handleEntityNotFound(_0x1f9ef4,null))[_0x0798('0x21')](saveUpdates(_0x30a1b1[_0x0798('0x57')],null))[_0x0798('0x21')](respondWithResult(_0x1f9ef4,null))['catch'](handleError(_0x1f9ef4,null));};exports['destroy']=function(_0x1a3526,_0x173840){return db[_0x0798('0x4e')][_0x0798('0x56')]({'where':{'id':_0x1a3526[_0x0798('0x55')]['id']}})[_0x0798('0x21')](handleEntityNotFound(_0x173840,null))[_0x0798('0x21')](removeEntity(_0x173840,null))[_0x0798('0x53')](handleError(_0x173840,null));};exports[_0x0798('0x58')]=function(_0x5757a1,_0x2a9d9c){return db[_0x0798('0x4e')][_0x0798('0x58')]()[_0x0798('0x21')](respondWithResult(_0x2a9d9c,null))[_0x0798('0x53')](handleError(_0x2a9d9c,null));};var interaction_log=require(_0x0798('0x16'))(_0x0798('0x59'));exports[_0x0798('0x5a')]=function(_0x396686,_0x56cd1f,_0xb90af4){var _0x1cc129={'agent':{},'channel':_0x0798('0x5b')};if(_0x396686[_0x0798('0x57')]['id']){delete _0x396686[_0x0798('0x57')]['id'];}_0x396686['body']['read']=!![];_0x396686[_0x0798('0x57')][_0x0798('0x5c')]=moment()['format'](_0x0798('0x5d'));_0x396686['body'][_0x0798('0x5e')]=_0x396686[_0x0798('0x57')]['UserId']||_0x396686[_0x0798('0x5f')]['id'];_0x1cc129['agent']['id']=_0x396686[_0x0798('0x57')][_0x0798('0x5e')];return db['FaxMessage'][_0x0798('0x56')]({'where':{'id':_0x396686['params']['id'],'UserId':null}})[_0x0798('0x21')](handleEntityNotFound(_0x56cd1f,null))[_0x0798('0x21')](saveUpdates(_0x396686[_0x0798('0x57')],null))[_0x0798('0x21')](function(_0x1ab5d4){if(_0x1ab5d4){_0x1cc129['message']=_0x1ab5d4[_0x0798('0x60')]({'plain':!![]});return db['FaxInteraction'][_0x0798('0x56')]({'where':{'id':_0x1ab5d4['FaxInteractionId']}});}return null;})[_0x0798('0x21')](handleEntityNotFound(_0x56cd1f,null))[_0x0798('0x21')](function(_0x54400f){if(_0x54400f){return _0x54400f['update']({'UserId':_0x396686['body'][_0x0798('0x5e')],'read1stAt':_[_0x0798('0x61')](_0x54400f[_0x0798('0x62')])?moment()[_0x0798('0x63')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0798('0x21')](function(_0x379416){if(_0x379416){_0x1cc129[_0x0798('0x64')]=_0x379416['get']({'plain':!![]});interaction_log[_0x0798('0x22')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x396686[_0x0798('0x5f')]['id'],_0x396686[_0x0798('0x5f')][_0x0798('0x36')],_0x396686[_0x0798('0x5f')][_0x0798('0x65')],_0x1cc129[_0x0798('0x64')]['id'],_0x396686['body']?JSON[_0x0798('0x25')](_0x396686[_0x0798('0x57')]):_0x0798('0x66'));return respondWithRpcPromise(_0x0798('0x67'),_0x0798('0x68'),_0x1cc129);}return null;})['then'](function(_0x1df645){var _0x5f2fb7=_0x0798('0x69')+_0x1df645[_0x0798('0x28')]['ContactId'];return db['sequelize'][_0x0798('0x3e')](_0x5f2fb7,{'type':db[_0x0798('0x6a')][_0x0798('0x6b')][_0x0798('0x6c')],'raw':!![]})[_0x0798('0x21')](function(_0x1162c4){return _0x1162c4;});})[_0x0798('0x21')](function(_0x428a99){if(_0x428a99){_0x1cc129['message'][_0x0798('0x6d')]=_0x428a99[0x0];if(!_0x396686[_0x0798('0x57')][_0x0798('0x5e')])return;return db['User'][_0x0798('0x56')]({'where':{'id':_0x396686[_0x0798('0x57')][_0x0798('0x5e')],'role':_0x0798('0x6e')},'attributes':['id',_0x0798('0x36'),_0x0798('0x6f'),_0x0798('0x70'),_0x0798('0x71')],'raw':!![]});}return null;})[_0x0798('0x21')](function(_0x1d890f){if(!_0x1d890f)return null;_0x1cc129[_0x0798('0x28')][_0x0798('0x6e')]=_0x1d890f;return _0x1cc129;})[_0x0798('0x21')](function(_0x4fa154){if(_0x4fa154){if(_0x396686[_0x0798('0x57')]['manual']){_0x1cc129[_0x0798('0x28')][_0x0798('0x72')]=util[_0x0798('0x63')](_0x0798('0x73'),_0x396686['user'][_0x0798('0x36')]);_0x1cc129[_0x0798('0x28')][_0x0798('0x74')]=_0x1cc129[_0x0798('0x74')];_0x1cc129['message']['event']='accept';return respondWithRpcPromise(_0x0798('0x75'),_0x0798('0x75'),{'event':_0x0798('0x76'),'message':_0x1cc129['message']},client9002)[_0x0798('0x21')](function(){return _0x1cc129;});}return _0x1cc129;}return null;})[_0x0798('0x21')](respondWithResult(_0x56cd1f,null))[_0x0798('0x53')](handleError(_0x56cd1f,null));};var interaction_log=require(_0x0798('0x16'))(_0x0798('0x59'));exports['reject']=function(_0x831c0,_0x51e9d5,_0x71c91d){var _0x7a9b0d={'agent':{},'channel':_0x0798('0x5b')};if(_0x831c0[_0x0798('0x57')]['id']){delete _0x831c0['body']['id'];}_0x831c0[_0x0798('0x57')][_0x0798('0x5e')]=_0x831c0[_0x0798('0x57')][_0x0798('0x5e')]||_0x831c0[_0x0798('0x5f')]['id'];_0x7a9b0d[_0x0798('0x6e')]['id']=_0x831c0['body'][_0x0798('0x5e')];return db[_0x0798('0x4e')][_0x0798('0x56')]({'where':{'id':_0x831c0[_0x0798('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x51e9d5,null))[_0x0798('0x21')](function(_0x105031){if(_0x105031){_0x7a9b0d[_0x0798('0x28')]=_0x105031[_0x0798('0x60')]({'plain':!![]});return db[_0x0798('0x77')]['find']({'where':{'id':_0x105031[_0x0798('0x78')]}});}return null;})[_0x0798('0x21')](handleEntityNotFound(_0x51e9d5,null))[_0x0798('0x21')](function(_0x205df3){if(_0x205df3){_0x7a9b0d[_0x0798('0x64')]=_0x205df3[_0x0798('0x60')]({'plain':!![]});interaction_log[_0x0798('0x22')](_0x0798('0x79'),_0x831c0['user']['id'],_0x831c0['user'][_0x0798('0x36')],_0x831c0['user'][_0x0798('0x65')],_0x7a9b0d['interaction']['id'],_0x831c0[_0x0798('0x57')]?JSON[_0x0798('0x25')](_0x831c0[_0x0798('0x57')]):'null');return respondWithRpcPromise(_0x0798('0x7a'),_0x0798('0x7b'),_0x7a9b0d);}return null;})[_0x0798('0x21')](function(_0x75f33d){var _0x43c3bc=_0x0798('0x69')+_0x75f33d[_0x0798('0x28')][_0x0798('0x7c')];return db[_0x0798('0x7d')][_0x0798('0x3e')](_0x43c3bc,{'type':db[_0x0798('0x6a')][_0x0798('0x6b')][_0x0798('0x6c')],'raw':!![]})[_0x0798('0x21')](function(_0x3781ea){return _0x3781ea;});})[_0x0798('0x21')](function(_0x302235){if(_0x302235){_0x7a9b0d['message'][_0x0798('0x6d')]=_0x302235[0x0];if(!_0x831c0['body'][_0x0798('0x5e')])return;return db['User']['find']({'where':{'id':_0x831c0['body'][_0x0798('0x5e')],'role':_0x0798('0x6e')},'attributes':['id','name',_0x0798('0x6f'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x176a66){if(!_0x176a66)return null;_0x7a9b0d[_0x0798('0x28')][_0x0798('0x6e')]=_0x176a66;return _0x7a9b0d;})['then'](function(_0x2e8300){if(_0x2e8300){_0x2e8300[_0x0798('0x28')][_0x0798('0x72')]=util['format'](_0x0798('0x73'),_0x831c0[_0x0798('0x5f')][_0x0798('0x36')]);_0x2e8300[_0x0798('0x28')][_0x0798('0x74')]=_0x7a9b0d[_0x0798('0x74')];_0x2e8300[_0x0798('0x28')][_0x0798('0x7e')]='reject';respondWithRpcPromise(_0x0798('0x75'),'EventManager',{'event':_0x0798('0x7f'),'message':_0x2e8300['message']},client9002);return _0x7a9b0d;}return null;})['then'](respondWithResult(_0x51e9d5,null))['catch'](handleError(_0x51e9d5,null));};exports[_0x0798('0x80')]=function(_0x15a18a,_0x254886){var _0x30ca6d;return db[_0x0798('0x4e')][_0x0798('0x80')](_0x15a18a[_0x0798('0x57')],{})[_0x0798('0x21')](function(_0x5e798b){_0x30ca6d=_0x5e798b;return db['CmContact']['findOne']({'where':{'id':_0x30ca6d['ContactId']}});})[_0x0798('0x21')](function(_0x26e73b){if(_['isNil'](_0x26e73b)){return;}else{_0x30ca6d[_0x0798('0x5b')]=_0x26e73b[_0x0798('0x5b')];return db[_0x0798('0x81')][_0x0798('0x82')]({'where':{'id':_0x30ca6d[_0x0798('0x83')]}});}})[_0x0798('0x21')](function(_0x287070){return respondWithRpcPromise(_0x0798('0x84'),_0x0798('0x84'),{'FaxAccountId':_['isNil'](_0x15a18a[_0x0798('0x57')])?undefined:_0x15a18a[_0x0798('0x57')][_0x0798('0x85')],'path':_[_0x0798('0x61')](_0x287070)?undefined:util[_0x0798('0x63')](_0x0798('0x86'),_0x287070[_0x0798('0x87')]),'fax':_[_0x0798('0x61')](_0x30ca6d[_0x0798('0x5b')])?undefined:_0x30ca6d[_0x0798('0x5b')],'AttachmentId':_0x30ca6d[_0x0798('0x83')]},client9002);})[_0x0798('0x21')](respondWithResult(_0x254886,0xc9))[_0x0798('0x53')](handleError(_0x254886,null));};exports[_0x0798('0x88')]=function(_0xa5dfba,_0x1190ce){var _0x3cba62=path[_0x0798('0x89')](config[_0x0798('0x8a')],_0x0798('0x8b'),_0x0798('0x8c'),'attachments');return db['FaxMessage'][_0x0798('0x56')]({'where':{'id':_0xa5dfba[_0x0798('0x55')]['id']},'include':[{'model':db[_0x0798('0x81')],'as':_0x0798('0x81')}]})[_0x0798('0x21')](handleEntityNotFound(_0x1190ce,null))[_0x0798('0x21')](function(_0x1573a9){if(_0x1573a9){return _0x1190ce[_0x0798('0x88')](path[_0x0798('0x89')](_0x3cba62,_0x1573a9[_0x0798('0x81')][_0x0798('0x87')]));}})[_0x0798('0x53')](handleError(_0x1190ce,null));};
\ No newline at end of file
+var _0x0431=['eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','FaxMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','name','send','index','map','FaxMessage','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','length','body','find','describe','../../config/logger','fax-interactions','fax','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','FaxInteraction','FaxInteractionId','read1stAt','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','fullname','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','get','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','QueryTypes','User','agent','format','motionChannel','reject','rejectmessage','create','isNil','Attachment','findOne','AttachmentId','SendFax','basename','download','join','server','files','attachments'];(function(_0x555890,_0xd516c8){var _0x3e574b=function(_0x4fa027){while(--_0x4fa027){_0x555890['push'](_0x555890['shift']());}};_0x3e574b(++_0xd516c8);}(_0x0431,0x1ad));var _0x1043=function(_0x3b90ab,_0x174a22){_0x3b90ab=_0x3b90ab-0x0;var _0x206e92=_0x0431[_0x3b90ab];return _0x206e92;};'use strict';var emlformat=require(_0x1043('0x0'));var rimraf=require(_0x1043('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1043('0x2'));var rp=require('request-promise');var moment=require(_0x1043('0x3'));var BPromise=require(_0x1043('0x4'));var Mustache=require('mustache');var util=require(_0x1043('0x5'));var path=require(_0x1043('0x6'));var sox=require(_0x1043('0x7'));var csv=require(_0x1043('0x8'));var ejs=require(_0x1043('0x9'));var fs=require('fs');var fs_extra=require(_0x1043('0xa'));var _=require(_0x1043('0xb'));var squel=require(_0x1043('0xc'));var crypto=require(_0x1043('0xd'));var jsforce=require(_0x1043('0xe'));var deskjs=require(_0x1043('0xf'));var toCsv=require('to-csv');var querystring=require(_0x1043('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1043('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1043('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1043('0x13'));var utils=require(_0x1043('0x14'));var config=require(_0x1043('0x15'));var licenseUtil=require(_0x1043('0x16'));var db=require(_0x1043('0x17'))['db'];config[_0x1043('0x18')]=_['defaults'](config[_0x1043('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x1043('0x19'))(new Redis(config['redis']));require(_0x1043('0x1a'))[_0x1043('0x1b')](socket);var jayson=require(_0x1043('0x1c'));var client=jayson[_0x1043('0x1d')][_0x1043('0x1e')]({'port':0x232c});var client9002=jayson[_0x1043('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a5a64,_0x32d14d,_0x373385,_0xab4095){return new BPromise(function(_0x5bca4b,_0x4ed700){var _0x14a72f=_0xab4095||client;return _0x14a72f['request'](_0x1a5a64,_0x373385)[_0x1043('0x1f')](function(_0x4f4054){logger['info']('FaxMessage,\x20%s,\x20%s',_0x32d14d,_0x1043('0x20'));logger[_0x1043('0x21')](_0x1043('0x22'),_0x32d14d,'request\x20sent',JSON[_0x1043('0x23')](_0x4f4054));if(_0x4f4054[_0x1043('0x24')]){if(_0x4f4054[_0x1043('0x24')]['code']===0x1f4){logger[_0x1043('0x24')](_0x1043('0x25'),_0x32d14d,_0x4f4054[_0x1043('0x24')][_0x1043('0x26')]);return _0x4ed700(_0x4f4054[_0x1043('0x24')][_0x1043('0x26')]);}logger['error'](_0x1043('0x25'),_0x32d14d,_0x4f4054[_0x1043('0x24')][_0x1043('0x26')]);return _0x5bca4b(_0x4f4054['error'][_0x1043('0x26')]);}else{logger[_0x1043('0x27')](_0x1043('0x25'),_0x32d14d,'request\x20sent');_0x5bca4b(_0x4f4054[_0x1043('0x28')][_0x1043('0x26')]);}})[_0x1043('0x29')](function(_0x2a3419){logger[_0x1043('0x24')](_0x1043('0x25'),_0x32d14d,_0x2a3419);_0x4ed700(_0x2a3419);});});}function respondWithStatusCode(_0x5a4692,_0x397dbc){_0x397dbc=_0x397dbc||0xcc;return function(_0x41f3a9){if(_0x41f3a9){return _0x5a4692[_0x1043('0x2a')](_0x397dbc);}return _0x5a4692[_0x1043('0x2b')](_0x397dbc)[_0x1043('0x2c')]();};}function respondWithResult(_0x4f44ed,_0x361e49){_0x361e49=_0x361e49||0xc8;return function(_0x1a2714){if(_0x1a2714){return _0x4f44ed['status'](_0x361e49)[_0x1043('0x2d')](_0x1a2714);}};}function respondWithFilteredResult(_0x79809a,_0x372934){return function(_0x33d0a0){if(_0x33d0a0){var _0x5500a5=typeof _0x372934[_0x1043('0x2e')]===_0x1043('0x2f')&&typeof _0x372934[_0x1043('0x30')]===_0x1043('0x2f');var _0x1e1a9c=_0x33d0a0[_0x1043('0x31')];var _0x39c1cc=_0x5500a5?0x0:_0x372934[_0x1043('0x2e')];var _0x3e9e27=_0x5500a5?_0x33d0a0[_0x1043('0x31')]:_0x372934['offset']+_0x372934['limit'];var _0x308983;if(_0x3e9e27>=_0x1e1a9c){_0x3e9e27=_0x1e1a9c;_0x308983=0xc8;}else{_0x308983=0xce;}_0x79809a['status'](_0x308983);return _0x79809a[_0x1043('0x32')](_0x1043('0x33'),_0x39c1cc+'-'+_0x3e9e27+'/'+_0x1e1a9c)[_0x1043('0x2d')](_0x33d0a0);}return null;};}function patchUpdates(_0x32afde){return function(_0x2be551){try{jsonpatch[_0x1043('0x34')](_0x2be551,_0x32afde,!![]);}catch(_0x5d7beb){return BPromise['reject'](_0x5d7beb);}return _0x2be551[_0x1043('0x35')]();};}function saveUpdates(_0xb4a9bf,_0x437dde){return function(_0x5db15b){if(_0x5db15b){return _0x5db15b[_0x1043('0x36')](_0xb4a9bf)['then'](function(_0x6ff4d9){return _0x6ff4d9;});}return null;};}function removeEntity(_0x34f72f,_0x4b2a25){return function(_0x1cbb9e){if(_0x1cbb9e){return _0x1cbb9e[_0x1043('0x37')]()[_0x1043('0x1f')](function(){_0x34f72f[_0x1043('0x2b')](0xcc)[_0x1043('0x2c')]();});}};}function handleEntityNotFound(_0x5118e0,_0x49bbbc){return function(_0x49a299){if(!_0x49a299){_0x5118e0[_0x1043('0x2a')](0x194);}return _0x49a299;};}function handleError(_0x4d85ba,_0x492206){_0x492206=_0x492206||0x1f4;return function(_0x47fe5e){logger[_0x1043('0x24')](_0x47fe5e['stack']);if(_0x47fe5e[_0x1043('0x38')]){delete _0x47fe5e[_0x1043('0x38')];}_0x4d85ba[_0x1043('0x2b')](_0x492206)[_0x1043('0x39')](_0x47fe5e);};}exports[_0x1043('0x3a')]=function(_0x2a9694,_0x41369c){var _0x4b423a={},_0x41baf9={},_0x362c94={'count':0x0,'rows':[]};var _0x508380=_[_0x1043('0x3b')](db[_0x1043('0x3c')][_0x1043('0x3d')],function(_0x2f4f93){return{'name':_0x2f4f93['fieldName'],'type':_0x2f4f93[_0x1043('0x3e')][_0x1043('0x3f')]};});_0x41baf9[_0x1043('0x40')]=_['map'](_0x508380,_0x1043('0x38'));_0x41baf9['query']=_[_0x1043('0x41')](_0x2a9694[_0x1043('0x42')]);_0x41baf9[_0x1043('0x43')]=_[_0x1043('0x44')](_0x41baf9[_0x1043('0x40')],_0x41baf9['query']);_0x4b423a[_0x1043('0x45')]=_[_0x1043('0x44')](_0x41baf9[_0x1043('0x40')],qs[_0x1043('0x46')](_0x2a9694[_0x1043('0x42')][_0x1043('0x46')]));_0x4b423a[_0x1043('0x45')]=_0x4b423a[_0x1043('0x45')]['length']?_0x4b423a['attributes']:_0x41baf9[_0x1043('0x40')];if(!_0x2a9694['query'][_0x1043('0x47')](_0x1043('0x48'))){_0x4b423a['limit']=qs['limit'](_0x2a9694[_0x1043('0x42')][_0x1043('0x30')]);_0x4b423a[_0x1043('0x2e')]=qs[_0x1043('0x2e')](_0x2a9694['query'][_0x1043('0x2e')]);}_0x4b423a[_0x1043('0x49')]=qs[_0x1043('0x4a')](_0x2a9694[_0x1043('0x42')][_0x1043('0x4a')]);_0x4b423a[_0x1043('0x4b')]=qs['filters'](_[_0x1043('0x4c')](_0x2a9694[_0x1043('0x42')],_0x41baf9[_0x1043('0x43')]),_0x508380);if(_0x2a9694[_0x1043('0x42')][_0x1043('0x4d')]){_0x4b423a[_0x1043('0x4b')]=_[_0x1043('0x4e')](_0x4b423a['where'],{'$or':_['map'](_0x508380,function(_0x4fd461){if(_0x4fd461['type']!=='VIRTUAL'){var _0x58933e={};_0x58933e[_0x4fd461[_0x1043('0x38')]]={'$like':'%'+_0x2a9694[_0x1043('0x42')]['filter']+'%'};return _0x58933e;}})});}_0x4b423a=_[_0x1043('0x4e')]({},_0x4b423a,_0x2a9694[_0x1043('0x4f')]);var _0x52cd8e={'where':_0x4b423a[_0x1043('0x4b')]};return db[_0x1043('0x3c')][_0x1043('0x31')](_0x52cd8e)[_0x1043('0x1f')](function(_0x45b253){_0x362c94[_0x1043('0x31')]=_0x45b253;if(_0x2a9694[_0x1043('0x42')][_0x1043('0x50')]){_0x4b423a[_0x1043('0x51')]=[{'all':!![]}];}return db[_0x1043('0x3c')][_0x1043('0x52')](_0x4b423a);})[_0x1043('0x1f')](function(_0x34c361){_0x362c94[_0x1043('0x53')]=_0x34c361;return _0x362c94;})[_0x1043('0x1f')](respondWithFilteredResult(_0x41369c,_0x4b423a))[_0x1043('0x29')](handleError(_0x41369c,null));};exports[_0x1043('0x54')]=function(_0x4a6fb2,_0x1baa39){var _0x4ba3f1={'raw':!![],'where':{'id':_0x4a6fb2[_0x1043('0x55')]['id']}},_0x108dc3={};_0x108dc3['model']=_[_0x1043('0x41')](db['FaxMessage']['rawAttributes']);_0x108dc3[_0x1043('0x42')]=_['keys'](_0x4a6fb2[_0x1043('0x42')]);_0x108dc3[_0x1043('0x43')]=_[_0x1043('0x44')](_0x108dc3[_0x1043('0x40')],_0x108dc3[_0x1043('0x42')]);_0x4ba3f1[_0x1043('0x45')]=_[_0x1043('0x44')](_0x108dc3[_0x1043('0x40')],qs[_0x1043('0x46')](_0x4a6fb2[_0x1043('0x42')][_0x1043('0x46')]));_0x4ba3f1[_0x1043('0x45')]=_0x4ba3f1[_0x1043('0x45')][_0x1043('0x56')]?_0x4ba3f1[_0x1043('0x45')]:_0x108dc3[_0x1043('0x40')];if(_0x4a6fb2[_0x1043('0x42')]['includeAll']){_0x4ba3f1[_0x1043('0x51')]=[{'all':!![]}];}_0x4ba3f1=_[_0x1043('0x4e')]({},_0x4ba3f1,_0x4a6fb2['options']);return db[_0x1043('0x3c')]['find'](_0x4ba3f1)[_0x1043('0x1f')](handleEntityNotFound(_0x1baa39,null))['then'](respondWithResult(_0x1baa39,null))['catch'](handleError(_0x1baa39,null));};exports[_0x1043('0x36')]=function(_0x438e02,_0x3cde41){if(_0x438e02[_0x1043('0x57')]['id']){delete _0x438e02[_0x1043('0x57')]['id'];}return db['FaxMessage'][_0x1043('0x58')]({'where':{'id':_0x438e02['params']['id']}})[_0x1043('0x1f')](handleEntityNotFound(_0x3cde41,null))[_0x1043('0x1f')](saveUpdates(_0x438e02[_0x1043('0x57')],null))[_0x1043('0x1f')](respondWithResult(_0x3cde41,null))[_0x1043('0x29')](handleError(_0x3cde41,null));};exports[_0x1043('0x37')]=function(_0x235bca,_0x383b32){return db[_0x1043('0x3c')]['find']({'where':{'id':_0x235bca[_0x1043('0x55')]['id']}})[_0x1043('0x1f')](handleEntityNotFound(_0x383b32,null))[_0x1043('0x1f')](removeEntity(_0x383b32,null))[_0x1043('0x29')](handleError(_0x383b32,null));};exports[_0x1043('0x59')]=function(_0x1a167e,_0x3a2be8){return db[_0x1043('0x3c')][_0x1043('0x59')]()['then'](respondWithResult(_0x3a2be8,null))[_0x1043('0x29')](handleError(_0x3a2be8,null));};var interaction_log=require(_0x1043('0x5a'))(_0x1043('0x5b'));exports['accept']=function(_0x27acc6,_0x59e1fc,_0x3f299e){var _0x46ee46={'agent':{},'channel':_0x1043('0x5c')};if(_0x27acc6[_0x1043('0x57')]['id']){delete _0x27acc6[_0x1043('0x57')]['id'];}_0x27acc6[_0x1043('0x57')][_0x1043('0x5d')]=!![];_0x27acc6['body'][_0x1043('0x5e')]=moment()['format'](_0x1043('0x5f'));_0x27acc6[_0x1043('0x57')][_0x1043('0x60')]=_0x27acc6[_0x1043('0x57')][_0x1043('0x60')]||_0x27acc6[_0x1043('0x61')]['id'];_0x46ee46['agent']['id']=_0x27acc6['body'][_0x1043('0x60')];return db[_0x1043('0x3c')][_0x1043('0x58')]({'where':{'id':_0x27acc6[_0x1043('0x55')]['id'],'UserId':null}})[_0x1043('0x1f')](handleEntityNotFound(_0x59e1fc,null))[_0x1043('0x1f')](saveUpdates(_0x27acc6[_0x1043('0x57')],null))[_0x1043('0x1f')](function(_0x321d08){if(_0x321d08){_0x46ee46[_0x1043('0x26')]=_0x321d08['get']({'plain':!![]});return db[_0x1043('0x62')]['find']({'where':{'id':_0x321d08[_0x1043('0x63')]}});}return null;})[_0x1043('0x1f')](handleEntityNotFound(_0x59e1fc,null))[_0x1043('0x1f')](function(_0x3bd433){if(_0x3bd433){return _0x3bd433[_0x1043('0x36')]({'UserId':_0x27acc6[_0x1043('0x57')][_0x1043('0x60')],'read1stAt':_['isNil'](_0x3bd433[_0x1043('0x64')])?moment()['format'](_0x1043('0x5f')):undefined});}return null;})[_0x1043('0x1f')](function(_0x2156cc){if(_0x2156cc){_0x46ee46['interaction']=_0x2156cc['get']({'plain':!![]});interaction_log[_0x1043('0x27')](_0x1043('0x65'),_0x27acc6[_0x1043('0x61')]['id'],_0x27acc6[_0x1043('0x61')][_0x1043('0x38')],_0x27acc6[_0x1043('0x61')][_0x1043('0x66')],_0x46ee46[_0x1043('0x67')]['id'],_0x27acc6[_0x1043('0x57')]?JSON[_0x1043('0x23')](_0x27acc6[_0x1043('0x57')]):_0x1043('0x68'));return respondWithRpcPromise(_0x1043('0x69'),'acceptMessage',_0x46ee46);}return null;})[_0x1043('0x1f')](function(_0x2efe41){var _0x46e09c=_0x1043('0x6a')+_0x2efe41[_0x1043('0x26')][_0x1043('0x6b')];return db[_0x1043('0x6c')][_0x1043('0x42')](_0x46e09c,{'type':db[_0x1043('0x6d')]['QueryTypes'][_0x1043('0x6e')],'raw':!![]})[_0x1043('0x1f')](function(_0x46baff){return _0x46baff;});})[_0x1043('0x1f')](function(_0x355b01){if(_0x355b01){_0x46ee46[_0x1043('0x26')][_0x1043('0x6f')]=_0x355b01[0x0];if(!_0x27acc6[_0x1043('0x57')]['UserId'])return;return db['User'][_0x1043('0x58')]({'where':{'id':_0x27acc6[_0x1043('0x57')][_0x1043('0x60')],'role':'agent'},'attributes':['id',_0x1043('0x38'),_0x1043('0x70'),'email','internal'],'raw':!![]});}return null;})[_0x1043('0x1f')](function(_0x5cab58){if(!_0x5cab58)return null;_0x46ee46[_0x1043('0x26')]['agent']=_0x5cab58;return _0x46ee46;})[_0x1043('0x1f')](function(_0x145f0d){if(_0x145f0d){if(_0x27acc6[_0x1043('0x57')][_0x1043('0x71')]){_0x46ee46[_0x1043('0x26')][_0x1043('0x72')]=util['format'](_0x1043('0x73'),_0x27acc6['user'][_0x1043('0x38')]);_0x46ee46[_0x1043('0x26')]['channel']=_0x46ee46[_0x1043('0x74')];_0x46ee46[_0x1043('0x26')]['motionChannel']=_0x46ee46[_0x1043('0x74')];_0x46ee46['message'][_0x1043('0x75')]=_0x1043('0x76');return respondWithRpcPromise(_0x1043('0x77'),'EventManager',{'event':_0x1043('0x78'),'message':_0x46ee46[_0x1043('0x26')]},client9002)[_0x1043('0x1f')](function(){return _0x46ee46;});}return _0x46ee46;}return null;})[_0x1043('0x1f')](respondWithResult(_0x59e1fc,null))[_0x1043('0x29')](handleError(_0x59e1fc,null));};var interaction_log=require(_0x1043('0x5a'))(_0x1043('0x5b'));exports['reject']=function(_0x2413f8,_0x49335f,_0x1cabf9){var _0x3a400e={'agent':{},'channel':_0x1043('0x5c')};if(_0x2413f8['body']['id']){delete _0x2413f8[_0x1043('0x57')]['id'];}_0x2413f8[_0x1043('0x57')][_0x1043('0x60')]=_0x2413f8[_0x1043('0x57')][_0x1043('0x60')]||_0x2413f8['user']['id'];_0x3a400e['agent']['id']=_0x2413f8['body']['UserId'];return db['FaxMessage'][_0x1043('0x58')]({'where':{'id':_0x2413f8[_0x1043('0x55')]['id'],'UserId':null}})[_0x1043('0x1f')](handleEntityNotFound(_0x49335f,null))[_0x1043('0x1f')](function(_0x586fbc){if(_0x586fbc){_0x3a400e[_0x1043('0x26')]=_0x586fbc[_0x1043('0x79')]({'plain':!![]});return db['FaxInteraction'][_0x1043('0x58')]({'where':{'id':_0x586fbc[_0x1043('0x63')]}});}return null;})[_0x1043('0x1f')](handleEntityNotFound(_0x49335f,null))[_0x1043('0x1f')](function(_0x4b0875){if(_0x4b0875){_0x3a400e[_0x1043('0x67')]=_0x4b0875[_0x1043('0x79')]({'plain':!![]});interaction_log[_0x1043('0x27')](_0x1043('0x7a'),_0x2413f8[_0x1043('0x61')]['id'],_0x2413f8[_0x1043('0x61')][_0x1043('0x38')],_0x2413f8[_0x1043('0x61')][_0x1043('0x66')],_0x3a400e[_0x1043('0x67')]['id'],_0x2413f8[_0x1043('0x57')]?JSON[_0x1043('0x23')](_0x2413f8[_0x1043('0x57')]):_0x1043('0x68'));return respondWithRpcPromise('RejectMessage',_0x1043('0x7b'),_0x3a400e);}return null;})['then'](function(_0x280c5a){var _0x4cdd3a=_0x1043('0x6a')+_0x280c5a[_0x1043('0x26')][_0x1043('0x6b')];return db['sequelize'][_0x1043('0x42')](_0x4cdd3a,{'type':db[_0x1043('0x6d')][_0x1043('0x7c')]['SELECT'],'raw':!![]})[_0x1043('0x1f')](function(_0x231491){return _0x231491;});})[_0x1043('0x1f')](function(_0x2ce2b1){if(_0x2ce2b1){_0x3a400e['message'][_0x1043('0x6f')]=_0x2ce2b1[0x0];if(!_0x2413f8['body']['UserId'])return;return db[_0x1043('0x7d')]['find']({'where':{'id':_0x2413f8['body'][_0x1043('0x60')],'role':_0x1043('0x7e')},'attributes':['id',_0x1043('0x38'),_0x1043('0x70'),'email','internal'],'raw':!![]});}return null;})[_0x1043('0x1f')](function(_0x4ff992){if(!_0x4ff992)return null;_0x3a400e['message'][_0x1043('0x7e')]=_0x4ff992;return _0x3a400e;})[_0x1043('0x1f')](function(_0x9b4049){if(_0x9b4049){_0x9b4049[_0x1043('0x26')]['interface']=util[_0x1043('0x7f')](_0x1043('0x73'),_0x2413f8[_0x1043('0x61')][_0x1043('0x38')]);_0x9b4049[_0x1043('0x26')]['channel']=_0x3a400e['channel'];_0x9b4049['message'][_0x1043('0x80')]=_0x3a400e[_0x1043('0x74')];_0x9b4049[_0x1043('0x26')][_0x1043('0x75')]=_0x1043('0x81');respondWithRpcPromise(_0x1043('0x77'),_0x1043('0x77'),{'event':_0x1043('0x82'),'message':_0x9b4049['message']},client9002);return _0x3a400e;}return null;})[_0x1043('0x1f')](respondWithResult(_0x49335f,null))[_0x1043('0x29')](handleError(_0x49335f,null));};exports[_0x1043('0x83')]=function(_0x3a7fb0,_0x5be018){var _0x270efe;return db[_0x1043('0x3c')]['create'](_0x3a7fb0['body'],{})[_0x1043('0x1f')](function(_0x5f2fd9){_0x270efe=_0x5f2fd9;return db['CmContact']['findOne']({'where':{'id':_0x270efe['ContactId']}});})[_0x1043('0x1f')](function(_0x5e8a4c){if(_[_0x1043('0x84')](_0x5e8a4c)){return;}else{_0x270efe[_0x1043('0x5c')]=_0x5e8a4c[_0x1043('0x5c')];return db[_0x1043('0x85')][_0x1043('0x86')]({'where':{'id':_0x270efe[_0x1043('0x87')]}});}})[_0x1043('0x1f')](function(_0x1672a9){return respondWithRpcPromise(_0x1043('0x88'),_0x1043('0x88'),{'FaxAccountId':_[_0x1043('0x84')](_0x3a7fb0[_0x1043('0x57')])?undefined:_0x3a7fb0[_0x1043('0x57')]['FaxAccountId'],'path':_[_0x1043('0x84')](_0x1672a9)?undefined:util[_0x1043('0x7f')]('/var/opt/motion2/server/files/attachments/%s',_0x1672a9[_0x1043('0x89')]),'fax':_['isNil'](_0x270efe['fax'])?undefined:_0x270efe[_0x1043('0x5c')],'AttachmentId':_0x270efe[_0x1043('0x87')]},client9002);})[_0x1043('0x1f')](respondWithResult(_0x5be018,0xc9))[_0x1043('0x29')](handleError(_0x5be018,null));};exports[_0x1043('0x8a')]=function(_0x4f6cf2,_0x2f0875){var _0x4082fb=path[_0x1043('0x8b')](config['root'],_0x1043('0x8c'),_0x1043('0x8d'),_0x1043('0x8e'));return db[_0x1043('0x3c')]['find']({'where':{'id':_0x4f6cf2[_0x1043('0x55')]['id']},'include':[{'model':db[_0x1043('0x85')],'as':_0x1043('0x85')}]})[_0x1043('0x1f')](handleEntityNotFound(_0x2f0875,null))[_0x1043('0x1f')](function(_0x1a13a7){if(_0x1a13a7){return _0x2f0875[_0x1043('0x8a')](path[_0x1043('0x8b')](_0x4082fb,_0x1a13a7[_0x1043('0x85')][_0x1043('0x89')]));}})[_0x1043('0x29')](handleError(_0x2f0875,null));};
\ No newline at end of file
index bd79461..a56b1d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1410=['FaxMessage','setMaxListeners','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0xce6f11,_0x3c3137){var _0x35b709=function(_0x1755c6){while(--_0x1755c6){_0xce6f11['push'](_0xce6f11['shift']());}};_0x35b709(++_0x3c3137);}(_0x1410,0x130));var _0x0141=function(_0x329a5e,_0x494c71){_0x329a5e=_0x329a5e-0x0;var _0x4467fe=_0x1410[_0x329a5e];return _0x4467fe;};'use strict';var EventEmitter=require(_0x0141('0x0'));var FaxMessage=require(_0x0141('0x1'))['db'][_0x0141('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x0141('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0141('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3c3422){return function(_0x5d2855,_0x194c72,_0x454af1){FaxMessageEvents[_0x0141('0x5')](_0x3c3422+':'+_0x5d2855['id'],_0x5d2855);FaxMessageEvents[_0x0141('0x5')](_0x3c3422,_0x5d2855);_0x454af1(null);};}for(var e in events){if(events[_0x0141('0x6')](e)){var event=events[e];FaxMessage[_0x0141('0x7')](e,emitEvent(event));}}module[_0x0141('0x8')]=FaxMessageEvents;
\ No newline at end of file
+var _0x363e=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x363e,0x179));var _0xe363=function(_0x54fa5d,_0x82f306){_0x54fa5d=_0x54fa5d-0x0;var _0x12c0ee=_0x363e[_0x54fa5d];return _0x12c0ee;};'use strict';var EventEmitter=require(_0xe363('0x0'));var FaxMessage=require(_0xe363('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xe363('0x2')](0x0);var events={'afterCreate':_0xe363('0x3'),'afterUpdate':_0xe363('0x4'),'afterDestroy':_0xe363('0x5')};function emitEvent(_0x179157){return function(_0x3809ea,_0x6e174a,_0x11775e){FaxMessageEvents[_0xe363('0x6')](_0x179157+':'+_0x3809ea['id'],_0x3809ea);FaxMessageEvents[_0xe363('0x6')](_0x179157,_0x3809ea);_0x11775e(null);};}for(var e in events){if(events[_0xe363('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xe363('0x8')]=FaxMessageEvents;
\ No newline at end of file
index 6bdef8e..d788d0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf112=['api','moment','bluebird','request-promise','rimraf','../../config/environment','define','FaxMessage','fax_messages','fti_fax_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x4695e2,_0x3d5f15){var _0x160563=function(_0x5df0a2){while(--_0x5df0a2){_0x4695e2['push'](_0x4695e2['shift']());}};_0x160563(++_0x3d5f15);}(_0xf112,0x71));var _0x2f11=function(_0x5e5b5e,_0x1d4bde){_0x5e5b5e=_0x5e5b5e-0x0;var _0x296489=_0xf112[_0x5e5b5e];return _0x296489;};'use strict';var _=require(_0x2f11('0x0'));var util=require(_0x2f11('0x1'));var logger=require(_0x2f11('0x2'))(_0x2f11('0x3'));var moment=require(_0x2f11('0x4'));var BPromise=require(_0x2f11('0x5'));var rp=require(_0x2f11('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2f11('0x7'));var config=require(_0x2f11('0x8'));var attributes=require('./faxMessage.attributes');module['exports']=function(_0x20b7db,_0x16f182){return _0x20b7db[_0x2f11('0x9')](_0x2f11('0xa'),attributes,{'tableName':_0x2f11('0xb'),'paranoid':![],'indexes':[{'name':_0x2f11('0xc'),'fields':[_0x2f11('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5afb1c,_0x11d3df,_0x51536a){var _0x17965d=_0x20b7db[_0x2f11('0xe')];var _0x911565=_0x5afb1c[_0x2f11('0xf')]({'plain':!![]});if(_0x911565[_0x2f11('0x10')][_0x2f11('0x11')]()==='in'||_0x911565[_0x2f11('0x10')][_0x2f11('0x11')]()===_0x2f11('0x12')&&!_0x911565[_0x2f11('0x13')]&&!_[_0x2f11('0x14')](_0x911565[_0x2f11('0x15')])){_0x17965d[_0x2f11('0x16')]['findOne']({'where':{'id':_0x911565['FaxInteractionId']}})[_0x2f11('0x17')](function(_0x4a0eac){if(_0x4a0eac){_0x4a0eac[_0x2f11('0x18')]({'lastMsgAt':_0x911565[_0x2f11('0x19')],'lastMsgDirection':_0x911565[_0x2f11('0x10')][_0x2f11('0x11')]()});}})['catch'](function(_0x1108ed){console[_0x2f11('0x1a')](_0x1108ed);});}_0x51536a();}},'charset':_0x2f11('0x1b'),'collate':_0x2f11('0x1c')});};
\ No newline at end of file
+var _0x6d12=['moment','bluebird','request-promise','./faxMessage.attributes','exports','define','FaxMessage','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','lodash','api'];(function(_0x4f240d,_0x13a89a){var _0x5b92cc=function(_0x33fb91){while(--_0x33fb91){_0x4f240d['push'](_0x4f240d['shift']());}};_0x5b92cc(++_0x13a89a);}(_0x6d12,0x8a));var _0x26d1=function(_0x6ef703,_0x2695d9){_0x6ef703=_0x6ef703-0x0;var _0x4a13a3=_0x6d12[_0x6ef703];return _0x4a13a3;};'use strict';var _=require(_0x26d1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x26d1('0x1'));var moment=require(_0x26d1('0x2'));var BPromise=require(_0x26d1('0x3'));var rp=require(_0x26d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x26d1('0x5'));module[_0x26d1('0x6')]=function(_0x4c852f,_0x1f6f9a){return _0x4c852f[_0x26d1('0x7')](_0x26d1('0x8'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x26d1('0x9'),'fields':[_0x26d1('0xa')],'type':_0x26d1('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2a0b5b,_0x4c8168,_0x8e13ee){var _0x3e9727=_0x4c852f[_0x26d1('0xc')];var _0x56853e=_0x2a0b5b[_0x26d1('0xd')]({'plain':!![]});if(_0x56853e[_0x26d1('0xe')]['toLowerCase']()==='in'||_0x56853e[_0x26d1('0xe')][_0x26d1('0xf')]()===_0x26d1('0x10')&&!_0x56853e[_0x26d1('0x11')]&&!_[_0x26d1('0x12')](_0x56853e[_0x26d1('0x13')])){_0x3e9727['FaxInteraction'][_0x26d1('0x14')]({'where':{'id':_0x56853e[_0x26d1('0x15')]}})[_0x26d1('0x16')](function(_0x11fcfc){if(_0x11fcfc){_0x11fcfc[_0x26d1('0x17')]({'lastMsgAt':_0x56853e[_0x26d1('0x18')],'lastMsgDirection':_0x56853e['direction'][_0x26d1('0xf')]()});}})[_0x26d1('0x19')](function(_0xa8efb){console[_0x26d1('0x1a')](_0xa8efb);});}_0x8e13ee();}},'charset':_0x26d1('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 86abc3e..1b86206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','register','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','UpdateFaxMessage','update','where'];(function(_0x25b500,_0x4fde19){var _0x500b5a=function(_0x1ee45d){while(--_0x1ee45d){_0x25b500['push'](_0x25b500['shift']());}};_0x500b5a(++_0x4fde19);}(_0xac31,0xca));var _0x1ac3=function(_0x264f1e,_0x2b2496){_0x264f1e=_0x264f1e-0x0;var _0x51f8bc=_0xac31[_0x264f1e];return _0x51f8bc;};'use strict';var _=require(_0x1ac3('0x0'));var util=require(_0x1ac3('0x1'));var moment=require(_0x1ac3('0x2'));var BPromise=require(_0x1ac3('0x3'));var rs=require(_0x1ac3('0x4'));var fs=require('fs');var Redis=require(_0x1ac3('0x5'));var db=require(_0x1ac3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1ac3('0x7'))(_0x1ac3('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1ac3('0x9')][_0x1ac3('0xa')]({'port':0x232a});config[_0x1ac3('0xb')]=_[_0x1ac3('0xc')](config[_0x1ac3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1ac3('0xd'))(new Redis(config['redis']));require(_0x1ac3('0xe'))[_0x1ac3('0xf')](socket);function respondWithRpcPromise(_0x344674,_0x53500b,_0xa26c88){return new BPromise(function(_0x1e2642,_0x3e835b){return client[_0x1ac3('0x10')](_0x344674,_0xa26c88)[_0x1ac3('0x11')](function(_0x422d19){logger['info'](_0x1ac3('0x12'),_0x53500b,_0x1ac3('0x13'));logger[_0x1ac3('0x14')](_0x1ac3('0x15'),_0x53500b,'request\x20sent',JSON[_0x1ac3('0x16')](_0x422d19));if(_0x422d19[_0x1ac3('0x17')]){if(_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x18')]===0x1f4){logger['error'](_0x1ac3('0x12'),_0x53500b,_0x422d19[_0x1ac3('0x17')]['message']);return _0x3e835b(_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x19')]);}logger[_0x1ac3('0x17')]('FaxMessage,\x20%s,\x20%s',_0x53500b,_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x19')]);return _0x1e2642(_0x422d19[_0x1ac3('0x17')]['message']);}else{logger[_0x1ac3('0x1a')]('FaxMessage,\x20%s,\x20%s',_0x53500b,_0x1ac3('0x13'));_0x1e2642(_0x422d19[_0x1ac3('0x1b')][_0x1ac3('0x19')]);}})[_0x1ac3('0x1c')](function(_0x18b985){logger['error'](_0x1ac3('0x12'),_0x53500b,_0x18b985);_0x3e835b(_0x18b985);});});}exports[_0x1ac3('0x1d')]=function(_0x296abf){var _0x257f60=this;return new Promise(function(_0x5f1918,_0x48d18a){return db[_0x1ac3('0x1e')][_0x1ac3('0x1f')](_0x296abf[_0x1ac3('0x20')],{'raw':_0x296abf[_0x1ac3('0x21')]?_0x296abf[_0x1ac3('0x21')][_0x1ac3('0x22')]===undefined?!![]:![]:!![]})[_0x1ac3('0x11')](function(_0x10912a){logger[_0x1ac3('0x1a')]('CreateFaxMessage',_0x296abf);logger[_0x1ac3('0x14')](_0x1ac3('0x1d'),_0x296abf,JSON['stringify'](_0x10912a));_0x5f1918(_0x10912a);})[_0x1ac3('0x1c')](function(_0x10f30c){logger['error'](_0x1ac3('0x1d'),_0x10f30c[_0x1ac3('0x19')],_0x296abf);_0x48d18a(_0x257f60[_0x1ac3('0x17')](0x1f4,_0x10f30c[_0x1ac3('0x19')]));});});};exports[_0x1ac3('0x23')]=function(_0x565a0f){var _0x5a2ab2=this;return new Promise(function(_0x503a64,_0x528807){return db['FaxMessage'][_0x1ac3('0x24')](_0x565a0f['body'],{'raw':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f['options'][_0x1ac3('0x25')]||null:null,'attributes':_0x565a0f['options']?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x26')]||null:null,'limit':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x27')]||null:null})[_0x1ac3('0x11')](function(_0x9c17c2){logger['info'](_0x1ac3('0x23'),_0x565a0f);logger[_0x1ac3('0x14')](_0x1ac3('0x23'),_0x565a0f,JSON[_0x1ac3('0x16')](_0x9c17c2));_0x503a64(_0x9c17c2);})['catch'](function(_0x3591a9){logger[_0x1ac3('0x17')](_0x1ac3('0x23'),_0x3591a9[_0x1ac3('0x19')],_0x565a0f);_0x528807(_0x5a2ab2[_0x1ac3('0x17')](0x1f4,_0x3591a9['message']));});});};
\ No newline at end of file
+var _0x0a9a=['error','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','CreateFaxMessage','debug','UpdateFaxMessage','update','raw','where','attributes','limit','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','./faxMessage.socket','register','request','then','info','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x442209,_0x34602a){var _0x3fe7a7=function(_0x1a1777){while(--_0x1a1777){_0x442209['push'](_0x442209['shift']());}};_0x3fe7a7(++_0x34602a);}(_0x0a9a,0x183));var _0xa0a9=function(_0x14811d,_0x386ae2){_0x14811d=_0x14811d-0x0;var _0x1199a9=_0x0a9a[_0x14811d];return _0x1199a9;};'use strict';var _=require('lodash');var util=require(_0xa0a9('0x0'));var moment=require('moment');var BPromise=require(_0xa0a9('0x1'));var rs=require(_0xa0a9('0x2'));var fs=require('fs');var Redis=require(_0xa0a9('0x3'));var db=require(_0xa0a9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa0a9('0x5'))(_0xa0a9('0x6'));var config=require('../../config/environment');var jayson=require(_0xa0a9('0x7'));var client=jayson[_0xa0a9('0x8')][_0xa0a9('0x9')]({'port':0x232a});config[_0xa0a9('0xa')]=_['defaults'](config[_0xa0a9('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xa0a9('0xb'))(new Redis(config[_0xa0a9('0xa')]));require(_0xa0a9('0xc'))[_0xa0a9('0xd')](socket);function respondWithRpcPromise(_0x4b9b93,_0x2ba0ac,_0x1b5bfb){return new BPromise(function(_0x5ce7e9,_0x5909cf){return client[_0xa0a9('0xe')](_0x4b9b93,_0x1b5bfb)[_0xa0a9('0xf')](function(_0x51d5a5){logger[_0xa0a9('0x10')]('FaxMessage,\x20%s,\x20%s',_0x2ba0ac,_0xa0a9('0x11'));logger['debug'](_0xa0a9('0x12'),_0x2ba0ac,_0xa0a9('0x11'),JSON[_0xa0a9('0x13')](_0x51d5a5));if(_0x51d5a5[_0xa0a9('0x14')]){if(_0x51d5a5[_0xa0a9('0x14')]['code']===0x1f4){logger[_0xa0a9('0x14')](_0xa0a9('0x15'),_0x2ba0ac,_0x51d5a5[_0xa0a9('0x14')][_0xa0a9('0x16')]);return _0x5909cf(_0x51d5a5[_0xa0a9('0x14')][_0xa0a9('0x16')]);}logger['error'](_0xa0a9('0x15'),_0x2ba0ac,_0x51d5a5['error']['message']);return _0x5ce7e9(_0x51d5a5[_0xa0a9('0x14')][_0xa0a9('0x16')]);}else{logger[_0xa0a9('0x10')](_0xa0a9('0x15'),_0x2ba0ac,'request\x20sent');_0x5ce7e9(_0x51d5a5[_0xa0a9('0x17')][_0xa0a9('0x16')]);}})[_0xa0a9('0x18')](function(_0x27f8d4){logger[_0xa0a9('0x14')](_0xa0a9('0x15'),_0x2ba0ac,_0x27f8d4);_0x5909cf(_0x27f8d4);});});}exports['CreateFaxMessage']=function(_0x3cdd8c){var _0x3107ce=this;return new Promise(function(_0x4a8e80,_0x53b99d){return db[_0xa0a9('0x19')][_0xa0a9('0x1a')](_0x3cdd8c[_0xa0a9('0x1b')],{'raw':_0x3cdd8c['options']?_0x3cdd8c[_0xa0a9('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xa0a9('0xf')](function(_0x5e6148){logger[_0xa0a9('0x10')](_0xa0a9('0x1d'),_0x3cdd8c);logger[_0xa0a9('0x1e')](_0xa0a9('0x1d'),_0x3cdd8c,JSON['stringify'](_0x5e6148));_0x4a8e80(_0x5e6148);})[_0xa0a9('0x18')](function(_0x4fb909){logger[_0xa0a9('0x14')](_0xa0a9('0x1d'),_0x4fb909[_0xa0a9('0x16')],_0x3cdd8c);_0x53b99d(_0x3107ce[_0xa0a9('0x14')](0x1f4,_0x4fb909['message']));});});};exports[_0xa0a9('0x1f')]=function(_0xe49d3b){var _0x384cd5=this;return new Promise(function(_0x3f4bea,_0x526dd1){return db[_0xa0a9('0x19')][_0xa0a9('0x20')](_0xe49d3b[_0xa0a9('0x1b')],{'raw':_0xe49d3b['options']?_0xe49d3b['options'][_0xa0a9('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe49d3b[_0xa0a9('0x1c')]?_0xe49d3b[_0xa0a9('0x1c')][_0xa0a9('0x22')]||null:null,'attributes':_0xe49d3b[_0xa0a9('0x1c')]?_0xe49d3b[_0xa0a9('0x1c')][_0xa0a9('0x23')]||null:null,'limit':_0xe49d3b[_0xa0a9('0x1c')]?_0xe49d3b[_0xa0a9('0x1c')][_0xa0a9('0x24')]||null:null})[_0xa0a9('0xf')](function(_0x554191){logger[_0xa0a9('0x10')](_0xa0a9('0x1f'),_0xe49d3b);logger['debug'](_0xa0a9('0x1f'),_0xe49d3b,JSON[_0xa0a9('0x13')](_0x554191));_0x3f4bea(_0x554191);})['catch'](function(_0x47c19b){logger[_0xa0a9('0x14')]('UpdateFaxMessage',_0x47c19b['message'],_0xe49d3b);_0x526dd1(_0x384cd5[_0xa0a9('0x14')](0x1f4,_0x47c19b[_0xa0a9('0x16')]));});});};
\ No newline at end of file
index baf1a45..030b5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee7f=['update','emit','removeListener','register','length','faxMessage:','remove'];(function(_0x23b112,_0x5cc751){var _0x12601c=function(_0x1b0200){while(--_0x1b0200){_0x23b112['push'](_0x23b112['shift']());}};_0x12601c(++_0x5cc751);}(_0xee7f,0xc3));var _0xfee7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xee7f[_0x321bb2];return _0x9c12ed;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=['save',_0xfee7('0x0'),_0xfee7('0x1')];function createListener(_0x3479c5,_0x410305){return function(_0x576bf0){_0x410305[_0xfee7('0x2')](_0x3479c5,_0x576bf0);};}function removeListener(_0xd86e36,_0x39133c){return function(){FaxMessageEvents[_0xfee7('0x3')](_0xd86e36,_0x39133c);};}exports[_0xfee7('0x4')]=function(_0x6681e7){for(var _0x34bf03=0x0,_0x482abf=events[_0xfee7('0x5')];_0x34bf03<_0x482abf;_0x34bf03++){var _0x216bfe=events[_0x34bf03];var _0x481f0e=createListener(_0xfee7('0x6')+_0x216bfe,_0x6681e7);FaxMessageEvents['on'](_0x216bfe,_0x481f0e);}};
\ No newline at end of file
+var _0x53cd=['length','faxMessage:','./faxMessage.events','remove','update','removeListener'];(function(_0x2c6557,_0x398dde){var _0x457a8a=function(_0x1ffc3e){while(--_0x1ffc3e){_0x2c6557['push'](_0x2c6557['shift']());}};_0x457a8a(++_0x398dde);}(_0x53cd,0x17c));var _0xd53c=function(_0x2c0519,_0x4527e8){_0x2c0519=_0x2c0519-0x0;var _0xcfae8d=_0x53cd[_0x2c0519];return _0xcfae8d;};'use strict';var FaxMessageEvents=require(_0xd53c('0x0'));var events=['save',_0xd53c('0x1'),_0xd53c('0x2')];function createListener(_0x72d9d0,_0x523946){return function(_0x3e8371){_0x523946['emit'](_0x72d9d0,_0x3e8371);};}function removeListener(_0x2459c5,_0xc9d7da){return function(){FaxMessageEvents[_0xd53c('0x3')](_0x2459c5,_0xc9d7da);};}exports['register']=function(_0x54f063){for(var _0x4f5ec0=0x0,_0x2a4950=events[_0xd53c('0x4')];_0x4f5ec0<_0x2a4950;_0x4f5ec0++){var _0x19c4d8=events[_0x4f5ec0];var _0x2daeb4=createListener(_0xd53c('0x5')+_0x19c4d8,_0x54f063);FaxMessageEvents['on'](_0x19c4d8,_0x2daeb4);}};
\ No newline at end of file
index 20d5570..15b6f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec56=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','fax','create','put','update','/:id/accept','reject','delete','exports','multer','connect-timeout','express'];(function(_0x3a0cf7,_0x3c6f9e){var _0x3cdd62=function(_0x2b5296){while(--_0x2b5296){_0x3a0cf7['push'](_0x3a0cf7['shift']());}};_0x3cdd62(++_0x3c6f9e);}(_0xec56,0x1bd));var _0x6ec5=function(_0xf3700d,_0x4d52ba){_0xf3700d=_0xf3700d-0x0;var _0x4f0ce5=_0xec56[_0xf3700d];return _0x4f0ce5;};'use strict';var multer=require(_0x6ec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6ec5('0x1'));var express=require(_0x6ec5('0x2'));var router=express[_0x6ec5('0x3')]();var fs_extra=require(_0x6ec5('0x4'));var auth=require(_0x6ec5('0x5'));var interaction=require(_0x6ec5('0x6'));var config=require(_0x6ec5('0x7'));var controller=require(_0x6ec5('0x8'));router[_0x6ec5('0x9')]('/',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xb')]);router[_0x6ec5('0x9')](_0x6ec5('0xc'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xd')]);router[_0x6ec5('0x9')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xf')]);router['get'](_0x6ec5('0x10'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x11')]);router[_0x6ec5('0x12')]('/',auth[_0x6ec5('0xa')](),interaction[_0x6ec5('0x13')](_0x6ec5('0x14'),'faxmessage:create'),controller[_0x6ec5('0x15')]);router[_0x6ec5('0x16')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x17')]);router[_0x6ec5('0x16')](_0x6ec5('0x18'),auth[_0x6ec5('0xa')](),controller['accept']);router[_0x6ec5('0x16')]('/:id/reject',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x19')]);router[_0x6ec5('0x1a')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller['destroy']);module[_0x6ec5('0x1b')]=router;
\ No newline at end of file
+var _0xbc9d=['path','connect-timeout','express','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','describe','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','/:id','/:id/accept','accept','reject','delete','destroy','multer','util'];(function(_0x2a40cb,_0x396ab7){var _0x142024=function(_0x3cddff){while(--_0x3cddff){_0x2a40cb['push'](_0x2a40cb['shift']());}};_0x142024(++_0x396ab7);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x77b41c,_0x688c2e){_0x77b41c=_0x77b41c-0x0;var _0x1457a6=_0xbc9d[_0x77b41c];return _0x1457a6;};'use strict';var multer=require(_0xdbc9('0x0'));var util=require(_0xdbc9('0x1'));var path=require(_0xdbc9('0x2'));var timeout=require(_0xdbc9('0x3'));var express=require(_0xdbc9('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdbc9('0x5'));var config=require(_0xdbc9('0x6'));var controller=require(_0xdbc9('0x7'));router[_0xdbc9('0x8')]('/',auth[_0xdbc9('0x9')](),controller[_0xdbc9('0xa')]);router[_0xdbc9('0x8')]('/describe',auth[_0xdbc9('0x9')](),controller[_0xdbc9('0xb')]);router[_0xdbc9('0x8')]('/:id',auth[_0xdbc9('0x9')](),controller['show']);router['get'](_0xdbc9('0xc'),auth[_0xdbc9('0x9')](),controller[_0xdbc9('0xd')]);router[_0xdbc9('0xe')]('/',auth['isAuthenticated'](),interaction[_0xdbc9('0xf')](_0xdbc9('0x10'),_0xdbc9('0x11')),controller[_0xdbc9('0x12')]);router[_0xdbc9('0x13')](_0xdbc9('0x14'),auth['isAuthenticated'](),controller['update']);router[_0xdbc9('0x13')](_0xdbc9('0x15'),auth[_0xdbc9('0x9')](),controller[_0xdbc9('0x16')]);router[_0xdbc9('0x13')]('/:id/reject',auth[_0xdbc9('0x9')](),controller[_0xdbc9('0x17')]);router[_0xdbc9('0x18')]('/:id',auth[_0xdbc9('0x9')](),controller[_0xdbc9('0x19')]);module['exports']=router;
\ No newline at end of file
index 47d6e1d..0baf49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ca=['rrmemory','roundrobin','sequelize','exports','INTEGER','ENUM'];(function(_0x7922cc,_0x307745){var _0x3b8745=function(_0x505190){while(--_0x505190){_0x7922cc['push'](_0x7922cc['shift']());}};_0x3b8745(++_0x307745);}(_0xd1ca,0x140));var _0xad1c=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xd1ca[_0x3b0731];return _0x4204d7;};'use strict';var Sequelize=require(_0xad1c('0x0'));module[_0xad1c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xad1c('0x2')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xad1c('0x3')](_0xad1c('0x4'),'beepall',_0xad1c('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2090=['name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports','STRING'];(function(_0x31adf9,_0x511868){var _0x4412b5=function(_0x192d84){while(--_0x192d84){_0x31adf9['push'](_0x31adf9['shift']());}};_0x4412b5(++_0x511868);}(_0x2090,0x195));var _0x0209=function(_0x22d0be,_0x3a44e3){_0x22d0be=_0x22d0be-0x0;var _0x232bee=_0x2090[_0x22d0be];return _0x232bee;};'use strict';var Sequelize=require(_0x0209('0x0'));module[_0x0209('0x1')]={'name':{'type':Sequelize[_0x0209('0x2')],'unique':_0x0209('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x0209('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0209('0x5')](_0x0209('0x6'),_0x0209('0x7'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x0209('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 511eb13..f50c930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c88=['UserFaxQueue','order','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','getTeams','pick','ids','Team','online','voicePause','interface','flatMap','Agents','transaction','addTeams','each','findOrCreate','forEach','emit','removeTeams','select','field','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userFaxQueue:save','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','FaxQueues','error','stack','name','send','map','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','FaxQueue','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','UserProfileResource','describe','getMembers','findOne'];(function(_0x343319,_0x44ad88){var _0x164678=function(_0x527f8c){while(--_0x527f8c){_0x343319['push'](_0x343319['shift']());}};_0x164678(++_0x44ad88);}(_0x0c88,0xc3));var _0x80c8=function(_0x115621,_0x341cde){_0x115621=_0x115621-0x0;var _0x5ef5ce=_0x0c88[_0x115621];return _0x5ef5ce;};'use strict';var emlformat=require(_0x80c8('0x0'));var rimraf=require(_0x80c8('0x1'));var zipdir=require(_0x80c8('0x2'));var jsonpatch=require(_0x80c8('0x3'));var rp=require('request-promise');var moment=require(_0x80c8('0x4'));var BPromise=require(_0x80c8('0x5'));var Mustache=require('mustache');var util=require(_0x80c8('0x6'));var path=require('path');var sox=require(_0x80c8('0x7'));var csv=require(_0x80c8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x80c8('0x9'));var squel=require(_0x80c8('0xa'));var crypto=require(_0x80c8('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x80c8('0xc'));var toCsv=require(_0x80c8('0x8'));var querystring=require(_0x80c8('0xd'));var Papa=require(_0x80c8('0xe'));var Redis=require(_0x80c8('0xf'));var authService=require(_0x80c8('0x10'));var qs=require(_0x80c8('0x11'));var as=require(_0x80c8('0x12'));var hardwareService=require(_0x80c8('0x13'));var logger=require(_0x80c8('0x14'))(_0x80c8('0x15'));var utils=require(_0x80c8('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x80c8('0x17'));var db=require(_0x80c8('0x18'))['db'];config['redis']=_[_0x80c8('0x19')](config[_0x80c8('0x1a')],{'host':_0x80c8('0x1b'),'port':0x18eb});var socket=require(_0x80c8('0x1c'))(new Redis(config['redis']));require(_0x80c8('0x1d'))[_0x80c8('0x1e')](socket);function respondWithStatusCode(_0x5762a9,_0x479737){_0x479737=_0x479737||0xcc;return function(_0x3059b4){if(_0x3059b4){return _0x5762a9[_0x80c8('0x1f')](_0x479737);}return _0x5762a9[_0x80c8('0x20')](_0x479737)[_0x80c8('0x21')]();};}function respondWithResult(_0x29152c,_0x38f52e){_0x38f52e=_0x38f52e||0xc8;return function(_0x35a65c){if(_0x35a65c){return _0x29152c[_0x80c8('0x20')](_0x38f52e)[_0x80c8('0x22')](_0x35a65c);}};}function respondWithFilteredResult(_0x4c73ad,_0x1b8d1f){return function(_0x19301f){if(_0x19301f){var _0x31b097=typeof _0x1b8d1f[_0x80c8('0x23')]===_0x80c8('0x24')&&typeof _0x1b8d1f[_0x80c8('0x25')]===_0x80c8('0x24');var _0x4ec7fb=_0x19301f[_0x80c8('0x26')];var _0x19523e=_0x31b097?0x0:_0x1b8d1f[_0x80c8('0x23')];var _0x244c62=_0x31b097?_0x19301f[_0x80c8('0x26')]:_0x1b8d1f[_0x80c8('0x23')]+_0x1b8d1f[_0x80c8('0x25')];var _0x44f288;if(_0x244c62>=_0x4ec7fb){_0x244c62=_0x4ec7fb;_0x44f288=0xc8;}else{_0x44f288=0xce;}_0x4c73ad[_0x80c8('0x20')](_0x44f288);return _0x4c73ad[_0x80c8('0x27')](_0x80c8('0x28'),_0x19523e+'-'+_0x244c62+'/'+_0x4ec7fb)[_0x80c8('0x22')](_0x19301f);}return null;};}function patchUpdates(_0x5f4afd){return function(_0x2d2438){try{jsonpatch['apply'](_0x2d2438,_0x5f4afd,!![]);}catch(_0x185aac){return BPromise[_0x80c8('0x29')](_0x185aac);}return _0x2d2438[_0x80c8('0x2a')]();};}function saveUpdates(_0x1f6122,_0x5852f0){return function(_0x162c47){if(_0x162c47){return _0x162c47['update'](_0x1f6122)[_0x80c8('0x2b')](function(_0x4a63eb){return _0x4a63eb;});}return null;};}function removeEntity(_0x40bcfc,_0x265a2d){return function(_0xd40c01){if(_0xd40c01){return _0xd40c01[_0x80c8('0x2c')]()[_0x80c8('0x2b')](function(){var _0x45a077=_0xd40c01['get']({'plain':!![]});var _0x83ec70=_0x80c8('0x2d');return db['UserProfileResource'][_0x80c8('0x2c')]({'where':{'type':_0x83ec70,'resourceId':_0x45a077['id']}})[_0x80c8('0x2b')](function(){return _0xd40c01;});})[_0x80c8('0x2b')](function(){_0x40bcfc['status'](0xcc)[_0x80c8('0x21')]();});}};}function handleEntityNotFound(_0x1c4995,_0x54e325){return function(_0x55ac47){if(!_0x55ac47){_0x1c4995[_0x80c8('0x1f')](0x194);}return _0x55ac47;};}function handleError(_0xb0a117,_0x316f82){_0x316f82=_0x316f82||0x1f4;return function(_0x2c4bdb){logger[_0x80c8('0x2e')](_0x2c4bdb[_0x80c8('0x2f')]);if(_0x2c4bdb['name']){delete _0x2c4bdb[_0x80c8('0x30')];}_0xb0a117['status'](_0x316f82)[_0x80c8('0x31')](_0x2c4bdb);};}exports['index']=function(_0x32c893,_0x18e14f){var _0x4f970c={},_0x3f5e92={},_0x444936={'count':0x0,'rows':[]};var _0x1477bd=_[_0x80c8('0x32')](db['FaxQueue'][_0x80c8('0x33')],function(_0xcbca9f){return{'name':_0xcbca9f['fieldName'],'type':_0xcbca9f[_0x80c8('0x34')]['key']};});_0x3f5e92[_0x80c8('0x35')]=_[_0x80c8('0x32')](_0x1477bd,_0x80c8('0x30'));_0x3f5e92['query']=_['keys'](_0x32c893[_0x80c8('0x36')]);_0x3f5e92[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0x3f5e92[_0x80c8('0x35')],_0x3f5e92[_0x80c8('0x36')]);_0x4f970c[_0x80c8('0x39')]=_[_0x80c8('0x38')](_0x3f5e92[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x32c893[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x4f970c['attributes']=_0x4f970c[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x4f970c[_0x80c8('0x39')]:_0x3f5e92['model'];if(!_0x32c893[_0x80c8('0x36')][_0x80c8('0x3c')](_0x80c8('0x3d'))){_0x4f970c[_0x80c8('0x25')]=qs['limit'](_0x32c893[_0x80c8('0x36')][_0x80c8('0x25')]);_0x4f970c['offset']=qs[_0x80c8('0x23')](_0x32c893[_0x80c8('0x36')][_0x80c8('0x23')]);}_0x4f970c['order']=qs[_0x80c8('0x3e')](_0x32c893['query']['sort']);_0x4f970c[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_['pick'](_0x32c893['query'],_0x3f5e92[_0x80c8('0x37')]),_0x1477bd);if(_0x32c893['query'][_0x80c8('0x40')]){_0x4f970c['where']=_[_0x80c8('0x41')](_0x4f970c[_0x80c8('0x3f')],{'$or':_[_0x80c8('0x32')](_0x1477bd,function(_0x33bb8c){if(_0x33bb8c[_0x80c8('0x34')]!==_0x80c8('0x42')){var _0x10cdd3={};_0x10cdd3[_0x33bb8c[_0x80c8('0x30')]]={'$like':'%'+_0x32c893[_0x80c8('0x36')]['filter']+'%'};return _0x10cdd3;}})});}_0x4f970c=_[_0x80c8('0x41')]({},_0x4f970c,_0x32c893[_0x80c8('0x43')]);var _0x1ab5e4={'where':_0x4f970c[_0x80c8('0x3f')]};return db['FaxQueue']['count'](_0x1ab5e4)[_0x80c8('0x2b')](function(_0x3d9ee2){_0x444936[_0x80c8('0x26')]=_0x3d9ee2;if(_0x32c893[_0x80c8('0x36')][_0x80c8('0x44')]){_0x4f970c['include']=[{'all':!![]}];}return db['FaxQueue'][_0x80c8('0x45')](_0x4f970c);})[_0x80c8('0x2b')](function(_0x18211d){_0x444936[_0x80c8('0x46')]=_0x18211d;return _0x444936;})[_0x80c8('0x2b')](respondWithFilteredResult(_0x18e14f,_0x4f970c))[_0x80c8('0x47')](handleError(_0x18e14f,null));};exports[_0x80c8('0x48')]=function(_0x4be79a,_0x446d82){var _0x278167={'raw':!![],'where':{'id':_0x4be79a[_0x80c8('0x49')]['id']}},_0x32c656={};_0x32c656[_0x80c8('0x35')]=_[_0x80c8('0x4a')](db[_0x80c8('0x4b')][_0x80c8('0x33')]);_0x32c656[_0x80c8('0x36')]=_[_0x80c8('0x4a')](_0x4be79a[_0x80c8('0x36')]);_0x32c656['filters']=_[_0x80c8('0x38')](_0x32c656[_0x80c8('0x35')],_0x32c656[_0x80c8('0x36')]);_0x278167[_0x80c8('0x39')]=_['intersection'](_0x32c656[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x4be79a['query'][_0x80c8('0x3a')]));_0x278167['attributes']=_0x278167[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x278167[_0x80c8('0x39')]:_0x32c656[_0x80c8('0x35')];if(_0x4be79a[_0x80c8('0x36')][_0x80c8('0x44')]){_0x278167['include']=[{'all':!![]}];}_0x278167=_[_0x80c8('0x41')]({},_0x278167,_0x4be79a[_0x80c8('0x43')]);return db[_0x80c8('0x4b')]['find'](_0x278167)[_0x80c8('0x2b')](handleEntityNotFound(_0x446d82,null))[_0x80c8('0x2b')](respondWithResult(_0x446d82,null))[_0x80c8('0x47')](handleError(_0x446d82,null));};exports[_0x80c8('0x4c')]=function(_0x4eaedf,_0xc89fb7){return db[_0x80c8('0x4b')]['create'](_0x4eaedf[_0x80c8('0x4d')],{})['then'](function(_0x20d636){var _0x559bae=_0x4eaedf[_0x80c8('0x4e')][_0x80c8('0x4f')]({'plain':!![]});if(!_0x559bae)throw new Error(_0x80c8('0x50'));if(_0x559bae[_0x80c8('0x51')]===_0x80c8('0x4e')){var _0x28ec2a=_0x20d636[_0x80c8('0x4f')]({'plain':!![]});var _0x2b3bdd=_0x80c8('0x2d');return db[_0x80c8('0x52')][_0x80c8('0x53')]({'where':{'name':_0x2b3bdd,'userProfileId':_0x559bae['userProfileId']},'raw':!![]})[_0x80c8('0x2b')](function(_0x4ec818){if(_0x4ec818&&_0x4ec818[_0x80c8('0x54')]===0x0){return db[_0x80c8('0x55')][_0x80c8('0x4c')]({'name':_0x28ec2a[_0x80c8('0x30')],'resourceId':_0x28ec2a['id'],'type':_0x4ec818[_0x80c8('0x30')],'sectionId':_0x4ec818['id']},{})[_0x80c8('0x2b')](function(){return _0x20d636;});}else{return _0x20d636;}})[_0x80c8('0x47')](function(_0x3b4579){logger[_0x80c8('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b4579);throw _0x3b4579;});}return _0x20d636;})[_0x80c8('0x2b')](respondWithResult(_0xc89fb7,0xc9))[_0x80c8('0x47')](handleError(_0xc89fb7,null));};exports['update']=function(_0x193673,_0x2dfafa){if(_0x193673[_0x80c8('0x4d')]['id']){delete _0x193673[_0x80c8('0x4d')]['id'];}return db['FaxQueue'][_0x80c8('0x53')]({'where':{'id':_0x193673[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x2dfafa,null))['then'](saveUpdates(_0x193673[_0x80c8('0x4d')],null))['then'](respondWithResult(_0x2dfafa,null))[_0x80c8('0x47')](handleError(_0x2dfafa,null));};exports[_0x80c8('0x2c')]=function(_0x279e6a,_0x356648){return db[_0x80c8('0x4b')][_0x80c8('0x53')]({'where':{'id':_0x279e6a[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x356648,null))[_0x80c8('0x2b')](removeEntity(_0x356648,null))['catch'](handleError(_0x356648,null));};exports[_0x80c8('0x56')]=function(_0x549ff4,_0x39006a){return db[_0x80c8('0x4b')]['describe']()['then'](respondWithResult(_0x39006a,null))[_0x80c8('0x47')](handleError(_0x39006a,null));};exports[_0x80c8('0x57')]=function(_0x4f1e16,_0x3fac27,_0x51c6f5){var _0x26a769={'raw':!![],'where':{}},_0xf17530={},_0x1f6593;return db[_0x80c8('0x4b')][_0x80c8('0x58')]({'where':{'id':_0x4f1e16[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x3fac27,null))[_0x80c8('0x2b')](function(_0x20ae70){if(_0x20ae70){_0x1f6593=_0x20ae70[_0x80c8('0x4f')]({'plain':!![]});_0xf17530[_0x80c8('0x35')]=_[_0x80c8('0x4a')](db[_0x80c8('0x59')][_0x80c8('0x33')]);_0xf17530[_0x80c8('0x36')]=_[_0x80c8('0x4a')](_0x4f1e16[_0x80c8('0x36')]);_0xf17530[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0xf17530[_0x80c8('0x35')],_0xf17530[_0x80c8('0x36')]);_0x26a769[_0x80c8('0x39')]=_[_0x80c8('0x38')](_0xf17530[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x26a769[_0x80c8('0x39')]=_0x26a769['attributes'][_0x80c8('0x3b')]?_0x26a769['attributes']:_0xf17530[_0x80c8('0x35')];if(!_0x4f1e16['query'][_0x80c8('0x3c')](_0x80c8('0x3d'))){_0x26a769[_0x80c8('0x25')]=qs[_0x80c8('0x25')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x25')]);_0x26a769[_0x80c8('0x23')]=qs[_0x80c8('0x23')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x23')]);}_0x26a769[_0x80c8('0x5a')]=qs[_0x80c8('0x3e')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x3e')]);_0x26a769[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_['pick'](_0x4f1e16[_0x80c8('0x36')],_0xf17530['filters']));_0x26a769[_0x80c8('0x3f')]['FaxQueueId']=_0x20ae70['id'];if(_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x40')]){_0x26a769[_0x80c8('0x3f')]=_[_0x80c8('0x41')](_0x26a769[_0x80c8('0x3f')],{'$or':_[_0x80c8('0x32')](_0x26a769[_0x80c8('0x39')],function(_0x407f08){var _0x63974b={};_0x63974b[_0x407f08]={'$like':'%'+_0x4f1e16[_0x80c8('0x36')]['filter']+'%'};return _0x63974b;})});}_0x26a769=_[_0x80c8('0x41')]({},_0x26a769,_0x4f1e16[_0x80c8('0x43')]);return db[_0x80c8('0x59')][_0x80c8('0x45')](_0x26a769);}})[_0x80c8('0x2b')](function(_0x2c97e4){if(_0x2c97e4){return db[_0x80c8('0x5b')][_0x80c8('0x5c')]({'where':{'id':_[_0x80c8('0x32')](_0x2c97e4,_0x80c8('0x5d')),'role':_0x80c8('0x5e')},'attributes':['id',_0x80c8('0x30'),'faxPause',_0x80c8('0x5f'),_0x80c8('0x60')]});}})[_0x80c8('0x2b')](function(_0x378763){if(_0x378763){return{'count':_0x378763[_0x80c8('0x26')],'rows':_[_0x80c8('0x32')](_0x378763['rows'],function(_0x275f49){return{'membername':_0x275f49[_0x80c8('0x30')],'UserId':_0x275f49['id'],'queue_name':_0x1f6593['name'],'FaxQueueId':_0x1f6593['id'],'interface':util[_0x80c8('0x61')](_0x80c8('0x62'),_0x80c8('0x63'),_0x275f49[_0x80c8('0x30')]),'penalty':0x0,'paused':_0x275f49['faxPause'],'createdAt':_0x275f49[_0x80c8('0x60')],'updatedAt':_0x275f49[_0x80c8('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x80c8('0x2b')](respondWithFilteredResult(_0x3fac27,_0x26a769))[_0x80c8('0x47')](handleError(_0x3fac27,null));};exports[_0x80c8('0x64')]=function(_0x1e013a,_0x2aa6f0,_0x3c40a4){var _0x37f287={};var _0xfebe50={};var _0x491e0c;var _0xb829b0;return db[_0x80c8('0x4b')][_0x80c8('0x58')]({'where':{'id':_0x1e013a[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x2aa6f0,null))[_0x80c8('0x2b')](function(_0xdab8c){if(_0xdab8c){_0x491e0c=_0xdab8c;_0xfebe50['model']=_[_0x80c8('0x4a')](db['Team'][_0x80c8('0x33')]);_0xfebe50[_0x80c8('0x36')]=_['keys'](_0x1e013a[_0x80c8('0x36')]);_0xfebe50[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0xfebe50['model'],_0xfebe50[_0x80c8('0x36')]);_0x37f287[_0x80c8('0x39')]=_['intersection'](_0xfebe50[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x1e013a[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x37f287[_0x80c8('0x39')]=_0x37f287[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x37f287[_0x80c8('0x39')]:_0xfebe50[_0x80c8('0x35')];_0x37f287[_0x80c8('0x5a')]=qs['sort'](_0x1e013a[_0x80c8('0x36')][_0x80c8('0x3e')]);_0x37f287[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_[_0x80c8('0x65')](_0x1e013a[_0x80c8('0x36')],_0xfebe50[_0x80c8('0x37')]));if(_0x1e013a['query'][_0x80c8('0x40')]){_0x37f287[_0x80c8('0x3f')]=_[_0x80c8('0x41')](_0x37f287[_0x80c8('0x3f')],{'$or':_[_0x80c8('0x32')](_0x37f287[_0x80c8('0x39')],function(_0x4b63a4){var _0x55da45={};_0x55da45[_0x4b63a4]={'$like':'%'+_0x1e013a[_0x80c8('0x36')]['filter']+'%'};return _0x55da45;})});}_0x37f287=_[_0x80c8('0x41')]({},_0x37f287,_0x1e013a['options']);return _0x491e0c['getTeams'](_0x37f287);}})['then'](function(_0x1b0392){if(_0x1b0392){_0xb829b0=_0x1b0392['length'];if(!_0x1e013a[_0x80c8('0x36')]['hasOwnProperty'](_0x80c8('0x3d'))){_0x37f287[_0x80c8('0x25')]=qs['limit'](_0x1e013a[_0x80c8('0x36')][_0x80c8('0x25')]);_0x37f287['offset']=qs[_0x80c8('0x23')](_0x1e013a['query'][_0x80c8('0x23')]);}return _0x491e0c[_0x80c8('0x64')](_0x37f287);}})[_0x80c8('0x2b')](function(_0x61f279){if(_0x61f279){return _0x61f279?{'count':_0xb829b0,'rows':_0x61f279}:null;}})[_0x80c8('0x2b')](respondWithResult(_0x2aa6f0,null))[_0x80c8('0x47')](handleError(_0x2aa6f0,null));};exports['addTeams']=function(_0x16c09e,_0x518bd2,_0x3beb89){var _0x3a9434=_0x16c09e['body'][_0x80c8('0x66')];return db[_0x80c8('0x67')]['findAll']({'where':{'id':_0x3a9434},'attributes':['id'],'include':[{'model':db[_0x80c8('0x5b')],'as':'Agents','attributes':['id','name',_0x80c8('0x68'),_0x80c8('0x69'),_0x80c8('0x6a')],'raw':!![]}]})[_0x80c8('0x2b')](function(_0x5748dd){if(_0x5748dd){var _0x5a4650=_[_0x80c8('0x6b')](_0x5748dd,function(_0x3bfd3e){var _0x274830=_0x3bfd3e[_0x80c8('0x4f')]({'plain':!![]});return _0x274830[_0x80c8('0x6c')];});return db[_0x80c8('0x4b')]['find']({'where':{'id':_0x16c09e[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](function(_0x49dc1c){return db['sequelize'][_0x80c8('0x6d')](function(_0x194a0b){return _0x49dc1c[_0x80c8('0x6e')](_0x3a9434,{'transaction':_0x194a0b})[_0x80c8('0x2b')](function(){return BPromise[_0x80c8('0x6f')](_0x5a4650,function(_0xf0fc21){return db[_0x80c8('0x59')][_0x80c8('0x70')]({'where':{'UserId':_0xf0fc21['id'],'FaxQueueId':_0x16c09e[_0x80c8('0x49')]['id']},'transaction':_0x194a0b});});})[_0x80c8('0x2b')](function(){_0x5a4650[_0x80c8('0x71')](function(_0x47f48b){socket[_0x80c8('0x72')]('userFaxQueue:save',{'UserId':_0x47f48b['id'],'FaxQueueId':_0x49dc1c['id']});});});});});}})['then'](respondWithStatusCode(_0x518bd2,null))[_0x80c8('0x47')](handleError(_0x518bd2,null));};exports[_0x80c8('0x73')]=function(_0x2679f4,_0x59f67d,_0x11ba0c){return db[_0x80c8('0x67')]['findAll']({'where':{'id':_0x2679f4[_0x80c8('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x80c8('0x5b')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x59f67d,null))[_0x80c8('0x2b')](function(_0x2b8b5a){var _0x3c462a=_[_0x80c8('0x32')](_0x2b8b5a,'id');var _0x4ea8a2=[];var _0x4cd688=[];var _0x27d9dd=squel[_0x80c8('0x74')]();_0x27d9dd[_0x80c8('0x75')]('tq.TeamId')['from']('team_has_fax_queues','tq')['join'](_0x80c8('0x76'),'ut',_0x80c8('0x77'))[_0x80c8('0x3f')](_0x80c8('0x78'),_0x2679f4['params']['id']);for(var _0x52a85a=0x0;_0x52a85a<_0x2b8b5a[_0x80c8('0x3b')];_0x52a85a+=0x1){let _0x5faf6a=_0x2b8b5a[_0x52a85a];for(var _0x4d64b6=0x0;_0x4d64b6<_0x5faf6a[_0x80c8('0x6c')][_0x80c8('0x3b')];_0x4d64b6+=0x1){let _0x46895a=_0x5faf6a[_0x80c8('0x6c')][_0x4d64b6];var _0x3d55f1=_0x27d9dd[_0x80c8('0x79')]();_0x3d55f1[_0x80c8('0x3f')]('ut.UserId\x20=\x20?',_0x46895a['id']);_0x4cd688[_0x80c8('0x7a')](db[_0x80c8('0x7b')]['query'](_0x3d55f1[_0x80c8('0x7c')](),{'type':db[_0x80c8('0x7b')][_0x80c8('0x7d')][_0x80c8('0x7e')]})['then'](function(_0x4e3193){if(_0x4e3193[_0x80c8('0x3b')]===0x1){return _0x46895a['id'];}else{var _0x4dbe5e=_[_0x80c8('0x7f')](_[_0x80c8('0x32')](_0x4e3193,_0x80c8('0x80')),function(_0x3dd51a){return _['includes'](_0x3c462a,_0x3dd51a);});if(_0x4dbe5e){return _0x46895a['id'];}}}));}}return BPromise[_0x80c8('0x81')](_0x4cd688)['then'](function(_0x3dd668){_0x4ea8a2=_(_0x4ea8a2)[_0x80c8('0x82')](_0x3dd668)[_0x80c8('0x83')]()[_0x80c8('0x84')]();return db[_0x80c8('0x4b')][_0x80c8('0x53')]({'where':{'id':_0x2679f4[_0x80c8('0x49')]['id']}})['then'](function(_0x370372){return db[_0x80c8('0x7b')][_0x80c8('0x6d')](function(_0x4b0020){return _0x370372[_0x80c8('0x73')](_0x2679f4[_0x80c8('0x36')][_0x80c8('0x66')],{'transaction':_0x4b0020})[_0x80c8('0x2b')](function(){if(!_[_0x80c8('0x85')](_0x4ea8a2)){return _0x370372[_0x80c8('0x86')](_0x4ea8a2,{'transaction':_0x4b0020});}})[_0x80c8('0x2b')](function(){_0x4ea8a2[_0x80c8('0x71')](function(_0x3964ce){socket[_0x80c8('0x72')]('userFaxQueue:remove',{'UserId':_0x3964ce,'FaxQueueId':_0x370372['id']});});});});});});})[_0x80c8('0x2b')](respondWithStatusCode(_0x59f67d,null))[_0x80c8('0x47')](handleError(_0x59f67d,null));};exports[_0x80c8('0x87')]=function(_0x266f80,_0x249f71,_0x4445de){return db[_0x80c8('0x4b')][_0x80c8('0x53')]({'where':{'id':_0x266f80['params']['id']}})['then'](handleEntityNotFound(_0x249f71,null))[_0x80c8('0x2b')](function(_0xe29adc){if(_0xe29adc){return _0xe29adc[_0x80c8('0x87')](_0x266f80[_0x80c8('0x4d')][_0x80c8('0x66')],_[_0x80c8('0x88')](_0x266f80[_0x80c8('0x4d')],[_0x80c8('0x66'),'id'])||{})[_0x80c8('0x89')](function(_0x385381){for(var _0x395ae9=0x0;_0x395ae9<_0x266f80[_0x80c8('0x4d')][_0x80c8('0x66')][_0x80c8('0x3b')];_0x395ae9+=0x1){socket['emit'](_0x80c8('0x8a'),{'UserId':Number(_0x266f80[_0x80c8('0x4d')][_0x80c8('0x66')][_0x395ae9]),'FaxQueueId':Number(_0x266f80[_0x80c8('0x49')]['id'])});}return _0x385381;});}})['then'](respondWithResult(_0x249f71,null))['catch'](handleError(_0x249f71,null));};exports[_0x80c8('0x86')]=function(_0x3bd736,_0x309b02,_0xa899b7){return db['FaxQueue'][_0x80c8('0x53')]({'where':{'id':_0x3bd736['params']['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x309b02,null))['then'](function(_0x14df44){if(_0x14df44){return _0x14df44['removeAgents'](_0x3bd736[_0x80c8('0x36')][_0x80c8('0x66')])['then'](function(){if(_[_0x80c8('0x8b')](_0x3bd736['query'][_0x80c8('0x66')])){for(var _0x2ae757=0x0;_0x2ae757<_0x3bd736[_0x80c8('0x36')][_0x80c8('0x66')][_0x80c8('0x3b')];_0x2ae757+=0x1){socket['emit'](_0x80c8('0x8c'),{'UserId':Number(_0x3bd736[_0x80c8('0x36')]['ids'][_0x2ae757]),'FaxQueueId':Number(_0x3bd736['params']['id'])});}}else{socket[_0x80c8('0x72')]('userFaxQueue:remove',{'UserId':Number(_0x3bd736['query'][_0x80c8('0x66')]),'FaxQueueId':Number(_0x3bd736[_0x80c8('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x309b02,null))['catch'](handleError(_0x309b02,null));};exports[_0x80c8('0x8d')]=function(_0x26fe58,_0x9a0f68,_0x5c86b0){var _0x2ce617={};var _0x3e2c09={};var _0x756a1d;var _0x900d7b;return db[_0x80c8('0x4b')][_0x80c8('0x58')]({'where':{'id':_0x26fe58[_0x80c8('0x49')]['id']}})['then'](handleEntityNotFound(_0x9a0f68,null))[_0x80c8('0x2b')](function(_0x5f0c10){if(_0x5f0c10){_0x756a1d=_0x5f0c10;_0x3e2c09[_0x80c8('0x35')]=_[_0x80c8('0x4a')](db[_0x80c8('0x5b')][_0x80c8('0x33')]);_0x3e2c09['query']=_[_0x80c8('0x4a')](_0x26fe58['query']);_0x3e2c09[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0x3e2c09[_0x80c8('0x35')],_0x3e2c09[_0x80c8('0x36')]);_0x2ce617['attributes']=_[_0x80c8('0x38')](_0x3e2c09[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x26fe58[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x2ce617[_0x80c8('0x39')]=_0x2ce617[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x2ce617[_0x80c8('0x39')]:_0x3e2c09[_0x80c8('0x35')];_0x2ce617[_0x80c8('0x5a')]=qs['sort'](_0x26fe58[_0x80c8('0x36')][_0x80c8('0x3e')]);_0x2ce617[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_[_0x80c8('0x65')](_0x26fe58[_0x80c8('0x36')],_0x3e2c09[_0x80c8('0x37')]));if(_0x26fe58[_0x80c8('0x36')][_0x80c8('0x40')]){_0x2ce617[_0x80c8('0x3f')]=_[_0x80c8('0x41')](_0x2ce617['where'],{'$or':_['map'](_0x2ce617['attributes'],function(_0x9f7ecb){var _0x1ab5c3={};_0x1ab5c3[_0x9f7ecb]={'$like':'%'+_0x26fe58[_0x80c8('0x36')]['filter']+'%'};return _0x1ab5c3;})});}_0x2ce617=_['merge']({},_0x2ce617,_0x26fe58[_0x80c8('0x43')]);return _0x756a1d[_0x80c8('0x8d')](_0x2ce617);}})[_0x80c8('0x2b')](function(_0x2fdb8d){if(_0x2fdb8d){_0x900d7b=_0x2fdb8d[_0x80c8('0x3b')];if(!_0x26fe58['query']['hasOwnProperty'](_0x80c8('0x3d'))){_0x2ce617[_0x80c8('0x25')]=qs[_0x80c8('0x25')](_0x26fe58[_0x80c8('0x36')][_0x80c8('0x25')]);_0x2ce617[_0x80c8('0x23')]=qs[_0x80c8('0x23')](_0x26fe58['query']['offset']);}return _0x756a1d['getAgents'](_0x2ce617);}})[_0x80c8('0x2b')](function(_0x3cf94e){if(_0x3cf94e){return _0x3cf94e?{'count':_0x900d7b,'rows':_0x3cf94e}:null;}})[_0x80c8('0x2b')](respondWithResult(_0x9a0f68,null))['catch'](handleError(_0x9a0f68,null));};
\ No newline at end of file
+var _0x97b4=['redis','localhost','./faxQueue.socket','register','sendStatus','status','end','json','offset','count','limit','set','apply','reject','save','destroy','then','get','FaxQueues','UserProfileResource','error','name','send','index','map','FaxQueue','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','options','includeAll','include','findAll','rows','show','params','length','find','create','body','user','role','UserProfileSection','userProfileId','catch','describe','getMembers','findOne','UserFaxQueue','FaxQueueId','filter','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','userFaxQueue:save','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','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'];(function(_0x1fd4d7,_0x2feafd){var _0x7efe8a=function(_0xc54f55){while(--_0xc54f55){_0x1fd4d7['push'](_0x1fd4d7['shift']());}};_0x7efe8a(++_0x2feafd);}(_0x97b4,0x74));var _0x497b=function(_0x50ed49,_0x21badf){_0x50ed49=_0x50ed49-0x0;var _0x29527b=_0x97b4[_0x50ed49];return _0x29527b;};'use strict';var emlformat=require(_0x497b('0x0'));var rimraf=require(_0x497b('0x1'));var zipdir=require(_0x497b('0x2'));var jsonpatch=require(_0x497b('0x3'));var rp=require(_0x497b('0x4'));var moment=require(_0x497b('0x5'));var BPromise=require(_0x497b('0x6'));var Mustache=require('mustache');var util=require(_0x497b('0x7'));var path=require(_0x497b('0x8'));var sox=require('sox');var csv=require(_0x497b('0x9'));var ejs=require(_0x497b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x497b('0xb'));var jsforce=require(_0x497b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x497b('0x9'));var querystring=require(_0x497b('0xd'));var Papa=require(_0x497b('0xe'));var Redis=require('ioredis');var authService=require(_0x497b('0xf'));var qs=require(_0x497b('0x10'));var as=require(_0x497b('0x11'));var hardwareService=require(_0x497b('0x12'));var logger=require(_0x497b('0x13'))(_0x497b('0x14'));var utils=require(_0x497b('0x15'));var config=require(_0x497b('0x16'));var licenseUtil=require(_0x497b('0x17'));var db=require('../../mysqldb')['db'];config[_0x497b('0x18')]=_['defaults'](config[_0x497b('0x18')],{'host':_0x497b('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x497b('0x18')]));require(_0x497b('0x1a'))[_0x497b('0x1b')](socket);function respondWithStatusCode(_0x50aa1a,_0x193457){_0x193457=_0x193457||0xcc;return function(_0x12f081){if(_0x12f081){return _0x50aa1a[_0x497b('0x1c')](_0x193457);}return _0x50aa1a[_0x497b('0x1d')](_0x193457)[_0x497b('0x1e')]();};}function respondWithResult(_0x38b944,_0x259901){_0x259901=_0x259901||0xc8;return function(_0x1ef56c){if(_0x1ef56c){return _0x38b944[_0x497b('0x1d')](_0x259901)[_0x497b('0x1f')](_0x1ef56c);}};}function respondWithFilteredResult(_0x397153,_0x37b4a7){return function(_0x1521d1){if(_0x1521d1){var _0x316a0a=typeof _0x37b4a7[_0x497b('0x20')]==='undefined'&&typeof _0x37b4a7['limit']==='undefined';var _0x37a2e1=_0x1521d1[_0x497b('0x21')];var _0xf17d1c=_0x316a0a?0x0:_0x37b4a7[_0x497b('0x20')];var _0x46df5f=_0x316a0a?_0x1521d1[_0x497b('0x21')]:_0x37b4a7[_0x497b('0x20')]+_0x37b4a7[_0x497b('0x22')];var _0x50c4b5;if(_0x46df5f>=_0x37a2e1){_0x46df5f=_0x37a2e1;_0x50c4b5=0xc8;}else{_0x50c4b5=0xce;}_0x397153[_0x497b('0x1d')](_0x50c4b5);return _0x397153[_0x497b('0x23')]('Content-Range',_0xf17d1c+'-'+_0x46df5f+'/'+_0x37a2e1)['json'](_0x1521d1);}return null;};}function patchUpdates(_0xeac23a){return function(_0x539f17){try{jsonpatch[_0x497b('0x24')](_0x539f17,_0xeac23a,!![]);}catch(_0x5032b0){return BPromise[_0x497b('0x25')](_0x5032b0);}return _0x539f17[_0x497b('0x26')]();};}function saveUpdates(_0x3c2e78,_0x1be987){return function(_0x564cbe){if(_0x564cbe){return _0x564cbe['update'](_0x3c2e78)['then'](function(_0x517772){return _0x517772;});}return null;};}function removeEntity(_0x45f2bb,_0x47dc8d){return function(_0x12fe4e){if(_0x12fe4e){return _0x12fe4e[_0x497b('0x27')]()[_0x497b('0x28')](function(){var _0x32772c=_0x12fe4e[_0x497b('0x29')]({'plain':!![]});var _0x5b5cf7=_0x497b('0x2a');return db[_0x497b('0x2b')][_0x497b('0x27')]({'where':{'type':_0x5b5cf7,'resourceId':_0x32772c['id']}})[_0x497b('0x28')](function(){return _0x12fe4e;});})['then'](function(){_0x45f2bb[_0x497b('0x1d')](0xcc)[_0x497b('0x1e')]();});}};}function handleEntityNotFound(_0x5e20e4,_0x1804e4){return function(_0x466f11){if(!_0x466f11){_0x5e20e4[_0x497b('0x1c')](0x194);}return _0x466f11;};}function handleError(_0x6405b,_0x595dad){_0x595dad=_0x595dad||0x1f4;return function(_0x34d758){logger[_0x497b('0x2c')](_0x34d758['stack']);if(_0x34d758[_0x497b('0x2d')]){delete _0x34d758['name'];}_0x6405b[_0x497b('0x1d')](_0x595dad)[_0x497b('0x2e')](_0x34d758);};}exports[_0x497b('0x2f')]=function(_0x4e7cb3,_0x2d5283){var _0x4a1aa9={},_0x59aaa4={},_0x3f86d7={'count':0x0,'rows':[]};var _0xc0e88d=_[_0x497b('0x30')](db[_0x497b('0x31')][_0x497b('0x32')],function(_0x479b4e){return{'name':_0x479b4e[_0x497b('0x33')],'type':_0x479b4e['type']['key']};});_0x59aaa4[_0x497b('0x34')]=_[_0x497b('0x30')](_0xc0e88d,_0x497b('0x2d'));_0x59aaa4['query']=_[_0x497b('0x35')](_0x4e7cb3[_0x497b('0x36')]);_0x59aaa4[_0x497b('0x37')]=_[_0x497b('0x38')](_0x59aaa4[_0x497b('0x34')],_0x59aaa4[_0x497b('0x36')]);_0x4a1aa9[_0x497b('0x39')]=_[_0x497b('0x38')](_0x59aaa4[_0x497b('0x34')],qs['fields'](_0x4e7cb3[_0x497b('0x36')][_0x497b('0x3a')]));_0x4a1aa9[_0x497b('0x39')]=_0x4a1aa9[_0x497b('0x39')]['length']?_0x4a1aa9[_0x497b('0x39')]:_0x59aaa4[_0x497b('0x34')];if(!_0x4e7cb3[_0x497b('0x36')][_0x497b('0x3b')](_0x497b('0x3c'))){_0x4a1aa9['limit']=qs['limit'](_0x4e7cb3[_0x497b('0x36')]['limit']);_0x4a1aa9[_0x497b('0x20')]=qs[_0x497b('0x20')](_0x4e7cb3[_0x497b('0x36')][_0x497b('0x20')]);}_0x4a1aa9[_0x497b('0x3d')]=qs['sort'](_0x4e7cb3[_0x497b('0x36')][_0x497b('0x3e')]);_0x4a1aa9[_0x497b('0x3f')]=qs[_0x497b('0x37')](_[_0x497b('0x40')](_0x4e7cb3['query'],_0x59aaa4[_0x497b('0x37')]),_0xc0e88d);if(_0x4e7cb3[_0x497b('0x36')]['filter']){_0x4a1aa9[_0x497b('0x3f')]=_[_0x497b('0x41')](_0x4a1aa9[_0x497b('0x3f')],{'$or':_[_0x497b('0x30')](_0xc0e88d,function(_0x59d81f){if(_0x59d81f[_0x497b('0x42')]!=='VIRTUAL'){var _0x4e96f8={};_0x4e96f8[_0x59d81f['name']]={'$like':'%'+_0x4e7cb3[_0x497b('0x36')]['filter']+'%'};return _0x4e96f8;}})});}_0x4a1aa9=_[_0x497b('0x41')]({},_0x4a1aa9,_0x4e7cb3[_0x497b('0x43')]);var _0x73ca0={'where':_0x4a1aa9[_0x497b('0x3f')]};return db[_0x497b('0x31')][_0x497b('0x21')](_0x73ca0)[_0x497b('0x28')](function(_0x308d18){_0x3f86d7[_0x497b('0x21')]=_0x308d18;if(_0x4e7cb3[_0x497b('0x36')][_0x497b('0x44')]){_0x4a1aa9[_0x497b('0x45')]=[{'all':!![]}];}return db['FaxQueue'][_0x497b('0x46')](_0x4a1aa9);})[_0x497b('0x28')](function(_0x41c0b0){_0x3f86d7[_0x497b('0x47')]=_0x41c0b0;return _0x3f86d7;})[_0x497b('0x28')](respondWithFilteredResult(_0x2d5283,_0x4a1aa9))['catch'](handleError(_0x2d5283,null));};exports[_0x497b('0x48')]=function(_0x567fbc,_0x412c6a){var _0x965c1e={'raw':!![],'where':{'id':_0x567fbc[_0x497b('0x49')]['id']}},_0x224b1d={};_0x224b1d['model']=_[_0x497b('0x35')](db[_0x497b('0x31')]['rawAttributes']);_0x224b1d[_0x497b('0x36')]=_[_0x497b('0x35')](_0x567fbc[_0x497b('0x36')]);_0x224b1d['filters']=_[_0x497b('0x38')](_0x224b1d[_0x497b('0x34')],_0x224b1d['query']);_0x965c1e[_0x497b('0x39')]=_[_0x497b('0x38')](_0x224b1d[_0x497b('0x34')],qs[_0x497b('0x3a')](_0x567fbc[_0x497b('0x36')][_0x497b('0x3a')]));_0x965c1e[_0x497b('0x39')]=_0x965c1e[_0x497b('0x39')][_0x497b('0x4a')]?_0x965c1e['attributes']:_0x224b1d['model'];if(_0x567fbc[_0x497b('0x36')][_0x497b('0x44')]){_0x965c1e['include']=[{'all':!![]}];}_0x965c1e=_[_0x497b('0x41')]({},_0x965c1e,_0x567fbc[_0x497b('0x43')]);return db['FaxQueue'][_0x497b('0x4b')](_0x965c1e)[_0x497b('0x28')](handleEntityNotFound(_0x412c6a,null))[_0x497b('0x28')](respondWithResult(_0x412c6a,null))['catch'](handleError(_0x412c6a,null));};exports[_0x497b('0x4c')]=function(_0x8ad0f1,_0x1acecb){return db[_0x497b('0x31')]['create'](_0x8ad0f1[_0x497b('0x4d')],{})['then'](function(_0x542628){var _0x793845=_0x8ad0f1[_0x497b('0x4e')][_0x497b('0x29')]({'plain':!![]});if(!_0x793845)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x793845[_0x497b('0x4f')]===_0x497b('0x4e')){var _0x53f63d=_0x542628[_0x497b('0x29')]({'plain':!![]});var _0x280257=_0x497b('0x2a');return db[_0x497b('0x50')][_0x497b('0x4b')]({'where':{'name':_0x280257,'userProfileId':_0x793845[_0x497b('0x51')]},'raw':!![]})[_0x497b('0x28')](function(_0x283d03){if(_0x283d03&&_0x283d03['autoAssociation']===0x0){return db[_0x497b('0x2b')][_0x497b('0x4c')]({'name':_0x53f63d[_0x497b('0x2d')],'resourceId':_0x53f63d['id'],'type':_0x283d03[_0x497b('0x2d')],'sectionId':_0x283d03['id']},{})[_0x497b('0x28')](function(){return _0x542628;});}else{return _0x542628;}})['catch'](function(_0x3dfed4){logger[_0x497b('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3dfed4);throw _0x3dfed4;});}return _0x542628;})[_0x497b('0x28')](respondWithResult(_0x1acecb,0xc9))[_0x497b('0x52')](handleError(_0x1acecb,null));};exports['update']=function(_0x20dd2a,_0x13a8cd){if(_0x20dd2a[_0x497b('0x4d')]['id']){delete _0x20dd2a[_0x497b('0x4d')]['id'];}return db[_0x497b('0x31')][_0x497b('0x4b')]({'where':{'id':_0x20dd2a[_0x497b('0x49')]['id']}})['then'](handleEntityNotFound(_0x13a8cd,null))['then'](saveUpdates(_0x20dd2a[_0x497b('0x4d')],null))['then'](respondWithResult(_0x13a8cd,null))[_0x497b('0x52')](handleError(_0x13a8cd,null));};exports['destroy']=function(_0x45e4b3,_0x4d93bf){return db[_0x497b('0x31')][_0x497b('0x4b')]({'where':{'id':_0x45e4b3[_0x497b('0x49')]['id']}})[_0x497b('0x28')](handleEntityNotFound(_0x4d93bf,null))[_0x497b('0x28')](removeEntity(_0x4d93bf,null))[_0x497b('0x52')](handleError(_0x4d93bf,null));};exports[_0x497b('0x53')]=function(_0x8522dd,_0x421797){return db[_0x497b('0x31')][_0x497b('0x53')]()[_0x497b('0x28')](respondWithResult(_0x421797,null))[_0x497b('0x52')](handleError(_0x421797,null));};exports[_0x497b('0x54')]=function(_0xa2612b,_0x272ebe,_0x19089d){var _0x311f57={'raw':!![],'where':{}},_0x272bbc={},_0x353d4e;return db[_0x497b('0x31')][_0x497b('0x55')]({'where':{'id':_0xa2612b['params']['id']}})[_0x497b('0x28')](handleEntityNotFound(_0x272ebe,null))[_0x497b('0x28')](function(_0x3095d0){if(_0x3095d0){_0x353d4e=_0x3095d0['get']({'plain':!![]});_0x272bbc[_0x497b('0x34')]=_[_0x497b('0x35')](db[_0x497b('0x56')][_0x497b('0x32')]);_0x272bbc[_0x497b('0x36')]=_['keys'](_0xa2612b[_0x497b('0x36')]);_0x272bbc[_0x497b('0x37')]=_['intersection'](_0x272bbc[_0x497b('0x34')],_0x272bbc[_0x497b('0x36')]);_0x311f57['attributes']=_['intersection'](_0x272bbc[_0x497b('0x34')],qs['fields'](_0xa2612b[_0x497b('0x36')]['fields']));_0x311f57['attributes']=_0x311f57[_0x497b('0x39')][_0x497b('0x4a')]?_0x311f57[_0x497b('0x39')]:_0x272bbc[_0x497b('0x34')];if(!_0xa2612b['query'][_0x497b('0x3b')](_0x497b('0x3c'))){_0x311f57[_0x497b('0x22')]=qs['limit'](_0xa2612b['query'][_0x497b('0x22')]);_0x311f57[_0x497b('0x20')]=qs[_0x497b('0x20')](_0xa2612b[_0x497b('0x36')][_0x497b('0x20')]);}_0x311f57[_0x497b('0x3d')]=qs[_0x497b('0x3e')](_0xa2612b['query'][_0x497b('0x3e')]);_0x311f57[_0x497b('0x3f')]=qs[_0x497b('0x37')](_[_0x497b('0x40')](_0xa2612b['query'],_0x272bbc[_0x497b('0x37')]));_0x311f57[_0x497b('0x3f')][_0x497b('0x57')]=_0x3095d0['id'];if(_0xa2612b['query'][_0x497b('0x58')]){_0x311f57[_0x497b('0x3f')]=_[_0x497b('0x41')](_0x311f57['where'],{'$or':_[_0x497b('0x30')](_0x311f57[_0x497b('0x39')],function(_0x251ca3){var _0x12d5a5={};_0x12d5a5[_0x251ca3]={'$like':'%'+_0xa2612b['query'][_0x497b('0x58')]+'%'};return _0x12d5a5;})});}_0x311f57=_['merge']({},_0x311f57,_0xa2612b[_0x497b('0x43')]);return db[_0x497b('0x56')][_0x497b('0x46')](_0x311f57);}})['then'](function(_0x2aa92a){if(_0x2aa92a){return db[_0x497b('0x59')][_0x497b('0x5a')]({'where':{'id':_[_0x497b('0x30')](_0x2aa92a,_0x497b('0x5b')),'role':_0x497b('0x5c')},'attributes':['id',_0x497b('0x2d'),_0x497b('0x5d'),_0x497b('0x5e'),_0x497b('0x5f')]});}})[_0x497b('0x28')](function(_0x2b5593){if(_0x2b5593){return{'count':_0x2b5593[_0x497b('0x21')],'rows':_['map'](_0x2b5593[_0x497b('0x47')],function(_0x51473a){return{'membername':_0x51473a[_0x497b('0x2d')],'UserId':_0x51473a['id'],'queue_name':_0x353d4e[_0x497b('0x2d')],'FaxQueueId':_0x353d4e['id'],'interface':util[_0x497b('0x60')](_0x497b('0x61'),_0x497b('0x62'),_0x51473a[_0x497b('0x2d')]),'penalty':0x0,'paused':_0x51473a[_0x497b('0x5d')],'createdAt':_0x51473a[_0x497b('0x5f')],'updatedAt':_0x51473a['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x497b('0x28')](respondWithFilteredResult(_0x272ebe,_0x311f57))[_0x497b('0x52')](handleError(_0x272ebe,null));};exports[_0x497b('0x63')]=function(_0x2938f1,_0x1405c4,_0x1aeaba){var _0x38449e={};var _0x15f308={};var _0x49a558;var _0x441f35;return db[_0x497b('0x31')][_0x497b('0x55')]({'where':{'id':_0x2938f1[_0x497b('0x49')]['id']}})['then'](handleEntityNotFound(_0x1405c4,null))[_0x497b('0x28')](function(_0x4a465e){if(_0x4a465e){_0x49a558=_0x4a465e;_0x15f308['model']=_[_0x497b('0x35')](db['Team'][_0x497b('0x32')]);_0x15f308[_0x497b('0x36')]=_[_0x497b('0x35')](_0x2938f1[_0x497b('0x36')]);_0x15f308[_0x497b('0x37')]=_['intersection'](_0x15f308[_0x497b('0x34')],_0x15f308[_0x497b('0x36')]);_0x38449e[_0x497b('0x39')]=_[_0x497b('0x38')](_0x15f308['model'],qs[_0x497b('0x3a')](_0x2938f1[_0x497b('0x36')][_0x497b('0x3a')]));_0x38449e[_0x497b('0x39')]=_0x38449e[_0x497b('0x39')][_0x497b('0x4a')]?_0x38449e[_0x497b('0x39')]:_0x15f308[_0x497b('0x34')];_0x38449e['order']=qs[_0x497b('0x3e')](_0x2938f1['query']['sort']);_0x38449e[_0x497b('0x3f')]=qs['filters'](_[_0x497b('0x40')](_0x2938f1[_0x497b('0x36')],_0x15f308['filters']));if(_0x2938f1['query'][_0x497b('0x58')]){_0x38449e[_0x497b('0x3f')]=_[_0x497b('0x41')](_0x38449e[_0x497b('0x3f')],{'$or':_[_0x497b('0x30')](_0x38449e['attributes'],function(_0x2cf1e6){var _0xf069da={};_0xf069da[_0x2cf1e6]={'$like':'%'+_0x2938f1[_0x497b('0x36')][_0x497b('0x58')]+'%'};return _0xf069da;})});}_0x38449e=_[_0x497b('0x41')]({},_0x38449e,_0x2938f1[_0x497b('0x43')]);return _0x49a558[_0x497b('0x63')](_0x38449e);}})[_0x497b('0x28')](function(_0x5bb304){if(_0x5bb304){_0x441f35=_0x5bb304[_0x497b('0x4a')];if(!_0x2938f1[_0x497b('0x36')][_0x497b('0x3b')](_0x497b('0x3c'))){_0x38449e[_0x497b('0x22')]=qs[_0x497b('0x22')](_0x2938f1['query'][_0x497b('0x22')]);_0x38449e['offset']=qs['offset'](_0x2938f1[_0x497b('0x36')][_0x497b('0x20')]);}return _0x49a558[_0x497b('0x63')](_0x38449e);}})[_0x497b('0x28')](function(_0x2fdb3f){if(_0x2fdb3f){return _0x2fdb3f?{'count':_0x441f35,'rows':_0x2fdb3f}:null;}})[_0x497b('0x28')](respondWithResult(_0x1405c4,null))[_0x497b('0x52')](handleError(_0x1405c4,null));};exports[_0x497b('0x64')]=function(_0x5910d3,_0x4892d5,_0x1820cd){var _0x222c47=_0x5910d3[_0x497b('0x4d')][_0x497b('0x65')];return db[_0x497b('0x66')][_0x497b('0x46')]({'where':{'id':_0x222c47},'attributes':['id'],'include':[{'model':db[_0x497b('0x59')],'as':_0x497b('0x67'),'attributes':['id','name',_0x497b('0x68'),_0x497b('0x69'),_0x497b('0x6a')],'raw':!![]}]})[_0x497b('0x28')](function(_0x3deabc){if(_0x3deabc){var _0x13d2cc=_[_0x497b('0x6b')](_0x3deabc,function(_0x3eb6be){var _0xa40a21=_0x3eb6be[_0x497b('0x29')]({'plain':!![]});return _0xa40a21[_0x497b('0x67')];});return db[_0x497b('0x31')][_0x497b('0x4b')]({'where':{'id':_0x5910d3['params']['id']}})[_0x497b('0x28')](function(_0x51ec78){return db[_0x497b('0x6c')][_0x497b('0x6d')](function(_0x2291f5){return _0x51ec78[_0x497b('0x64')](_0x222c47,{'transaction':_0x2291f5})['then'](function(){return BPromise[_0x497b('0x6e')](_0x13d2cc,function(_0x3692c4){return db['UserFaxQueue']['findOrCreate']({'where':{'UserId':_0x3692c4['id'],'FaxQueueId':_0x5910d3['params']['id']},'transaction':_0x2291f5});});})['then'](function(){_0x13d2cc[_0x497b('0x6f')](function(_0x3e2f17){socket[_0x497b('0x70')](_0x497b('0x71'),{'UserId':_0x3e2f17['id'],'FaxQueueId':_0x51ec78['id']});});});});});}})[_0x497b('0x28')](respondWithStatusCode(_0x4892d5,null))[_0x497b('0x52')](handleError(_0x4892d5,null));};exports['removeTeams']=function(_0x280aee,_0x591f7b,_0x395673){return db['Team']['findAll']({'where':{'id':_0x280aee[_0x497b('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x497b('0x59')],'as':_0x497b('0x67'),'attributes':['id'],'raw':!![]}]})[_0x497b('0x28')](handleEntityNotFound(_0x591f7b,null))['then'](function(_0x4fe707){var _0x2eb07c=_[_0x497b('0x30')](_0x4fe707,'id');var _0x2f1647=[];var _0x289239=[];var _0x5c0543=squel['select']();_0x5c0543[_0x497b('0x72')](_0x497b('0x73'))[_0x497b('0x74')](_0x497b('0x75'),'tq')[_0x497b('0x76')](_0x497b('0x77'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x497b('0x3f')]('FaxQueueId\x20=\x20?',_0x280aee[_0x497b('0x49')]['id']);for(var _0x26f18b=0x0;_0x26f18b<_0x4fe707['length'];_0x26f18b+=0x1){let _0x2c47c3=_0x4fe707[_0x26f18b];for(var _0x35ebf2=0x0;_0x35ebf2<_0x2c47c3['Agents'][_0x497b('0x4a')];_0x35ebf2+=0x1){let _0x111d40=_0x2c47c3[_0x497b('0x67')][_0x35ebf2];var _0x1a2b1e=_0x5c0543[_0x497b('0x78')]();_0x1a2b1e[_0x497b('0x3f')](_0x497b('0x79'),_0x111d40['id']);_0x289239['push'](db[_0x497b('0x6c')][_0x497b('0x36')](_0x1a2b1e[_0x497b('0x7a')](),{'type':db[_0x497b('0x6c')][_0x497b('0x7b')][_0x497b('0x7c')]})[_0x497b('0x28')](function(_0x2214e3){if(_0x2214e3[_0x497b('0x4a')]===0x1){return _0x111d40['id'];}else{var _0x1bbb28=_['every'](_[_0x497b('0x30')](_0x2214e3,_0x497b('0x7d')),function(_0x4cecf7){return _[_0x497b('0x7e')](_0x2eb07c,_0x4cecf7);});if(_0x1bbb28){return _0x111d40['id'];}}}));}}return BPromise[_0x497b('0x7f')](_0x289239)[_0x497b('0x28')](function(_0x5416fc){_0x2f1647=_(_0x2f1647)[_0x497b('0x80')](_0x5416fc)[_0x497b('0x81')]()[_0x497b('0x82')]();return db['FaxQueue'][_0x497b('0x4b')]({'where':{'id':_0x280aee[_0x497b('0x49')]['id']}})['then'](function(_0x429e3a){return db[_0x497b('0x6c')][_0x497b('0x6d')](function(_0x2271a5){return _0x429e3a[_0x497b('0x83')](_0x280aee[_0x497b('0x36')]['ids'],{'transaction':_0x2271a5})[_0x497b('0x28')](function(){if(!_[_0x497b('0x84')](_0x2f1647)){return _0x429e3a[_0x497b('0x85')](_0x2f1647,{'transaction':_0x2271a5});}})[_0x497b('0x28')](function(){_0x2f1647[_0x497b('0x6f')](function(_0x205399){socket[_0x497b('0x70')](_0x497b('0x86'),{'UserId':_0x205399,'FaxQueueId':_0x429e3a['id']});});});});});});})[_0x497b('0x28')](respondWithStatusCode(_0x591f7b,null))['catch'](handleError(_0x591f7b,null));};exports[_0x497b('0x87')]=function(_0x235729,_0x215e37,_0x4b6a36){return db[_0x497b('0x31')][_0x497b('0x4b')]({'where':{'id':_0x235729[_0x497b('0x49')]['id']}})['then'](handleEntityNotFound(_0x215e37,null))[_0x497b('0x28')](function(_0x492cd6){if(_0x492cd6){return _0x492cd6[_0x497b('0x87')](_0x235729['body'][_0x497b('0x65')],_[_0x497b('0x88')](_0x235729[_0x497b('0x4d')],['ids','id'])||{})[_0x497b('0x89')](function(_0x5b3a00){for(var _0x2ebd93=0x0;_0x2ebd93<_0x235729[_0x497b('0x4d')][_0x497b('0x65')][_0x497b('0x4a')];_0x2ebd93+=0x1){socket[_0x497b('0x70')]('userFaxQueue:save',{'UserId':Number(_0x235729[_0x497b('0x4d')]['ids'][_0x2ebd93]),'FaxQueueId':Number(_0x235729[_0x497b('0x49')]['id'])});}return _0x5b3a00;});}})['then'](respondWithResult(_0x215e37,null))['catch'](handleError(_0x215e37,null));};exports[_0x497b('0x85')]=function(_0x3f3b7c,_0x5d34a9,_0x2c6890){return db['FaxQueue']['find']({'where':{'id':_0x3f3b7c[_0x497b('0x49')]['id']}})[_0x497b('0x28')](handleEntityNotFound(_0x5d34a9,null))[_0x497b('0x28')](function(_0x3949d9){if(_0x3949d9){return _0x3949d9[_0x497b('0x85')](_0x3f3b7c[_0x497b('0x36')][_0x497b('0x65')])[_0x497b('0x28')](function(){if(_[_0x497b('0x8a')](_0x3f3b7c['query']['ids'])){for(var _0x2d8a87=0x0;_0x2d8a87<_0x3f3b7c[_0x497b('0x36')][_0x497b('0x65')][_0x497b('0x4a')];_0x2d8a87+=0x1){socket['emit'](_0x497b('0x86'),{'UserId':Number(_0x3f3b7c[_0x497b('0x36')][_0x497b('0x65')][_0x2d8a87]),'FaxQueueId':Number(_0x3f3b7c[_0x497b('0x49')]['id'])});}}else{socket[_0x497b('0x70')](_0x497b('0x86'),{'UserId':Number(_0x3f3b7c[_0x497b('0x36')][_0x497b('0x65')]),'FaxQueueId':Number(_0x3f3b7c[_0x497b('0x49')]['id'])});}});}})[_0x497b('0x28')](respondWithStatusCode(_0x5d34a9,null))[_0x497b('0x52')](handleError(_0x5d34a9,null));};exports[_0x497b('0x8b')]=function(_0x34c02e,_0x3c8b21,_0x2e4566){var _0x33ba86={};var _0x5efd4a={};var _0x194dcd;var _0x2e2aaa;return db[_0x497b('0x31')][_0x497b('0x55')]({'where':{'id':_0x34c02e[_0x497b('0x49')]['id']}})[_0x497b('0x28')](handleEntityNotFound(_0x3c8b21,null))[_0x497b('0x28')](function(_0x1864f9){if(_0x1864f9){_0x194dcd=_0x1864f9;_0x5efd4a[_0x497b('0x34')]=_[_0x497b('0x35')](db['User']['rawAttributes']);_0x5efd4a[_0x497b('0x36')]=_[_0x497b('0x35')](_0x34c02e[_0x497b('0x36')]);_0x5efd4a[_0x497b('0x37')]=_['intersection'](_0x5efd4a['model'],_0x5efd4a[_0x497b('0x36')]);_0x33ba86[_0x497b('0x39')]=_[_0x497b('0x38')](_0x5efd4a[_0x497b('0x34')],qs[_0x497b('0x3a')](_0x34c02e[_0x497b('0x36')][_0x497b('0x3a')]));_0x33ba86['attributes']=_0x33ba86[_0x497b('0x39')][_0x497b('0x4a')]?_0x33ba86[_0x497b('0x39')]:_0x5efd4a[_0x497b('0x34')];_0x33ba86['order']=qs[_0x497b('0x3e')](_0x34c02e[_0x497b('0x36')][_0x497b('0x3e')]);_0x33ba86['where']=qs[_0x497b('0x37')](_['pick'](_0x34c02e[_0x497b('0x36')],_0x5efd4a['filters']));if(_0x34c02e['query'][_0x497b('0x58')]){_0x33ba86[_0x497b('0x3f')]=_[_0x497b('0x41')](_0x33ba86[_0x497b('0x3f')],{'$or':_['map'](_0x33ba86['attributes'],function(_0x20a304){var _0x4d5eb9={};_0x4d5eb9[_0x20a304]={'$like':'%'+_0x34c02e[_0x497b('0x36')][_0x497b('0x58')]+'%'};return _0x4d5eb9;})});}_0x33ba86=_[_0x497b('0x41')]({},_0x33ba86,_0x34c02e['options']);return _0x194dcd[_0x497b('0x8b')](_0x33ba86);}})[_0x497b('0x28')](function(_0x4531e8){if(_0x4531e8){_0x2e2aaa=_0x4531e8['length'];if(!_0x34c02e[_0x497b('0x36')][_0x497b('0x3b')](_0x497b('0x3c'))){_0x33ba86[_0x497b('0x22')]=qs['limit'](_0x34c02e[_0x497b('0x36')][_0x497b('0x22')]);_0x33ba86['offset']=qs[_0x497b('0x20')](_0x34c02e[_0x497b('0x36')][_0x497b('0x20')]);}return _0x194dcd['getAgents'](_0x33ba86);}})[_0x497b('0x28')](function(_0x99dbe0){if(_0x99dbe0){return _0x99dbe0?{'count':_0x2e2aaa,'rows':_0x99dbe0}:null;}})[_0x497b('0x28')](respondWithResult(_0x3c8b21,null))[_0x497b('0x52')](handleError(_0x3c8b21,null));};
\ No newline at end of file
index d856f0c..a669b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d71=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxQueue','setMaxListeners','remove','emit'];(function(_0x394276,_0x7c9deb){var _0x50b13a=function(_0x4f1da0){while(--_0x4f1da0){_0x394276['push'](_0x394276['shift']());}};_0x50b13a(++_0x7c9deb);}(_0x9d71,0x1e9));var _0x19d7=function(_0x100802,_0x5c9b6e){_0x100802=_0x100802-0x0;var _0x7e4dbb=_0x9d71[_0x100802];return _0x7e4dbb;};'use strict';var EventEmitter=require(_0x19d7('0x0'));var FaxQueue=require(_0x19d7('0x1'))['db'][_0x19d7('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x19d7('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x19d7('0x4')};function emitEvent(_0x41420a){return function(_0x3fde1a,_0x52e9bc,_0x37ae79){FaxQueueEvents[_0x19d7('0x5')](_0x41420a+':'+_0x3fde1a['id'],_0x3fde1a);FaxQueueEvents[_0x19d7('0x5')](_0x41420a,_0x3fde1a);_0x37ae79(null);};}for(var e in events){if(events[_0x19d7('0x6')](e)){var event=events[e];FaxQueue[_0x19d7('0x7')](e,emitEvent(event));}}module[_0x19d7('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0x6a92=['hasOwnProperty','hook','exports','events','FaxQueue','setMaxListeners','update','emit'];(function(_0x40911a,_0x55ec99){var _0x27e8e3=function(_0x2ba910){while(--_0x2ba910){_0x40911a['push'](_0x40911a['shift']());}};_0x27e8e3(++_0x55ec99);}(_0x6a92,0x19b));var _0x26a9=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x6a92[_0x4fbfd9];return _0x31dc94;};'use strict';var EventEmitter=require(_0x26a9('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0x26a9('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x26a9('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x26a9('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5e8185){return function(_0xa0defc,_0x116a6f,_0x4e7d20){FaxQueueEvents[_0x26a9('0x4')](_0x5e8185+':'+_0xa0defc['id'],_0xa0defc);FaxQueueEvents['emit'](_0x5e8185,_0xa0defc);_0x4e7d20(null);};}for(var e in events){if(events[_0x26a9('0x5')](e)){var event=events[e];FaxQueue[_0x26a9('0x6')](e,emitEvent(event));}}module[_0x26a9('0x7')]=FaxQueueEvents;
\ No newline at end of file
index 9946204..78fe186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x898e=['../../config/environment','./faxQueue.attributes','define','fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x48bfc7,_0x5132b7){var _0x300bb5=function(_0x1e33cb){while(--_0x1e33cb){_0x48bfc7['push'](_0x48bfc7['shift']());}};_0x300bb5(++_0x5132b7);}(_0x898e,0xa0));var _0xe898=function(_0x390b69,_0x4c1043){_0x390b69=_0x390b69-0x0;var _0x295e46=_0x898e[_0x390b69];return _0x295e46;};'use strict';var _=require(_0xe898('0x0'));var util=require(_0xe898('0x1'));var logger=require('../../config/logger')(_0xe898('0x2'));var moment=require(_0xe898('0x3'));var BPromise=require(_0xe898('0x4'));var rp=require(_0xe898('0x5'));var fs=require('fs');var path=require(_0xe898('0x6'));var rimraf=require(_0xe898('0x7'));var config=require(_0xe898('0x8'));var attributes=require(_0xe898('0x9'));module['exports']=function(_0x28f321,_0x3c0464){return _0x28f321[_0xe898('0xa')]('FaxQueue',attributes,{'tableName':_0xe898('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x207a=['./faxQueue.attributes','exports','fax_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x28cda9,_0x52e9d1){var _0x5019fb=function(_0x10ab27){while(--_0x10ab27){_0x28cda9['push'](_0x28cda9['shift']());}};_0x5019fb(++_0x52e9d1);}(_0x207a,0xab));var _0xa207=function(_0x23ce6d,_0x5d8565){_0x23ce6d=_0x23ce6d-0x0;var _0x8b75b7=_0x207a[_0x23ce6d];return _0x8b75b7;};'use strict';var _=require(_0xa207('0x0'));var util=require(_0xa207('0x1'));var logger=require(_0xa207('0x2'))(_0xa207('0x3'));var moment=require(_0xa207('0x4'));var BPromise=require(_0xa207('0x5'));var rp=require(_0xa207('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa207('0x7'));var config=require(_0xa207('0x8'));var attributes=require(_0xa207('0x9'));module[_0xa207('0xa')]=function(_0x6755f4,_0x4c8afa){return _0x6755f4['define']('FaxQueue',attributes,{'tableName':_0xa207('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb4bf68..8db83cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x355b=['options','raw','where','attributes','limit','include','map','model','stringify','catch','ShowFaxQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','GetFaxQueue','FaxQueue'];(function(_0x19f22b,_0x50f568){var _0x17e4db=function(_0x58dcd1){while(--_0x58dcd1){_0x19f22b['push'](_0x19f22b['shift']());}};_0x17e4db(++_0x50f568);}(_0x355b,0x16b));var _0xb355=function(_0x2750e3,_0x36182f){_0x2750e3=_0x2750e3-0x0;var _0x898335=_0x355b[_0x2750e3];return _0x898335;};'use strict';var _=require('lodash');var util=require(_0xb355('0x0'));var moment=require(_0xb355('0x1'));var BPromise=require(_0xb355('0x2'));var rs=require(_0xb355('0x3'));var fs=require('fs');var Redis=require(_0xb355('0x4'));var db=require(_0xb355('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb355('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xb355('0x7')]['http']({'port':0x232a});config['redis']=_[_0xb355('0x8')](config[_0xb355('0x9')],{'host':_0xb355('0xa'),'port':0x18eb});var socket=require(_0xb355('0xb'))(new Redis(config[_0xb355('0x9')]));require(_0xb355('0xc'))[_0xb355('0xd')](socket);function respondWithRpcPromise(_0x42915e,_0x4a1819,_0x5f2646){return new BPromise(function(_0x27938d,_0x12c834){return client[_0xb355('0xe')](_0x42915e,_0x5f2646)[_0xb355('0xf')](function(_0x52f04f){logger[_0xb355('0x10')](_0xb355('0x11'),_0x4a1819,_0xb355('0x12'));logger[_0xb355('0x13')](_0xb355('0x14'),_0x4a1819,_0xb355('0x12'),JSON['stringify'](_0x52f04f));if(_0x52f04f[_0xb355('0x15')]){if(_0x52f04f[_0xb355('0x15')][_0xb355('0x16')]===0x1f4){logger['error'](_0xb355('0x11'),_0x4a1819,_0x52f04f['error']['message']);return _0x12c834(_0x52f04f[_0xb355('0x15')][_0xb355('0x17')]);}logger[_0xb355('0x15')](_0xb355('0x11'),_0x4a1819,_0x52f04f[_0xb355('0x15')]['message']);return _0x27938d(_0x52f04f[_0xb355('0x15')][_0xb355('0x17')]);}else{logger[_0xb355('0x10')](_0xb355('0x11'),_0x4a1819,'request\x20sent');_0x27938d(_0x52f04f[_0xb355('0x18')][_0xb355('0x17')]);}})['catch'](function(_0x2bc12f){logger['error'](_0xb355('0x11'),_0x4a1819,_0x2bc12f);_0x12c834(_0x2bc12f);});});}exports[_0xb355('0x19')]=function(_0x299a51){var _0x578d1b=this;return new Promise(function(_0x4ca544,_0x4d6ab2){return db[_0xb355('0x1a')]['findAll']({'raw':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1c')]===undefined?!![]:![]:!![],'where':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1d')]||null:null,'attributes':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1e')]||null:null,'limit':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1f')]||null:null,'include':_0x299a51['options']?_0x299a51[_0xb355('0x1b')][_0xb355('0x20')]?_[_0xb355('0x21')](_0x299a51[_0xb355('0x1b')]['include'],function(_0x25b286){return{'model':db[_0x25b286['model']],'as':_0x25b286['as'],'attributes':_0x25b286['attributes'],'include':_0x25b286[_0xb355('0x20')]?_[_0xb355('0x21')](_0x25b286[_0xb355('0x20')],function(_0x4bb3c2){return{'model':db[_0x4bb3c2[_0xb355('0x22')]],'as':_0x4bb3c2['as'],'attributes':_0x4bb3c2['attributes'],'include':_0x4bb3c2[_0xb355('0x20')]?_[_0xb355('0x21')](_0x4bb3c2[_0xb355('0x20')],function(_0x4aa37c){return{'model':db[_0x4aa37c['model']],'as':_0x4aa37c['as'],'attributes':_0x4aa37c[_0xb355('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb355('0xf')](function(_0x4558ce){logger[_0xb355('0x10')]('GetFaxQueue',_0x299a51);logger['debug']('GetFaxQueue',_0x299a51,JSON[_0xb355('0x23')](_0x4558ce));_0x4ca544(_0x4558ce);})[_0xb355('0x24')](function(_0x4ea750){logger[_0xb355('0x15')](_0xb355('0x19'),_0x4ea750[_0xb355('0x17')],_0x299a51);_0x4d6ab2(_0x578d1b[_0xb355('0x15')](0x1f4,_0x4ea750[_0xb355('0x17')]));});});};exports[_0xb355('0x25')]=function(_0x23ebc5){var _0x3c8020=this;return new Promise(function(_0x2ef23d,_0x318c4a){return db['FaxQueue'][_0xb355('0x26')]({'raw':_0x23ebc5['options']?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x1c')]===undefined?!![]:![]:!![],'where':_0x23ebc5['options']?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x1d')]||null:null,'attributes':_0x23ebc5[_0xb355('0x1b')]?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x1e')]||null:null,'include':_0x23ebc5['options']?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x20')]?_[_0xb355('0x21')](_0x23ebc5[_0xb355('0x1b')][_0xb355('0x20')],function(_0x35b872){return{'model':db[_0x35b872[_0xb355('0x22')]],'as':_0x35b872['as'],'attributes':_0x35b872[_0xb355('0x1e')],'include':_0x35b872['include']?_['map'](_0x35b872[_0xb355('0x20')],function(_0x1a85bc){return{'model':db[_0x1a85bc[_0xb355('0x22')]],'as':_0x1a85bc['as'],'attributes':_0x1a85bc['attributes'],'include':_0x1a85bc['include']?_[_0xb355('0x21')](_0x1a85bc[_0xb355('0x20')],function(_0xa27088){return{'model':db[_0xa27088[_0xb355('0x22')]],'as':_0xa27088['as'],'attributes':_0xa27088[_0xb355('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb355('0xf')](function(_0x5618de){logger[_0xb355('0x10')](_0xb355('0x25'),_0x23ebc5);logger[_0xb355('0x13')]('ShowFaxQueue',_0x23ebc5,JSON[_0xb355('0x23')](_0x5618de));_0x2ef23d(_0x5618de);})[_0xb355('0x24')](function(_0x57df5c){logger['error']('ShowFaxQueue',_0x57df5c['message'],_0x23ebc5);_0x318c4a(_0x3c8020[_0xb355('0x15')](0x1f4,_0x57df5c[_0xb355('0x17')]));});});};
\ No newline at end of file
+var _0x9dd8=['FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','catch','GetFaxQueue','FaxQueue','options','raw','attributes','limit','include','map','model','then','where','ShowFaxQueue','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','./faxQueue.socket','register','request','info','request\x20sent','debug'];(function(_0x14d99f,_0x15bc63){var _0x2f0a69=function(_0x4421c3){while(--_0x4421c3){_0x14d99f['push'](_0x14d99f['shift']());}};_0x2f0a69(++_0x15bc63);}(_0x9dd8,0x169));var _0x89dd=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0x9dd8[_0x44bcb0];return _0xfaf881;};'use strict';var _=require(_0x89dd('0x0'));var util=require('util');var moment=require(_0x89dd('0x1'));var BPromise=require(_0x89dd('0x2'));var rs=require(_0x89dd('0x3'));var fs=require('fs');var Redis=require(_0x89dd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x89dd('0x5'));var logger=require(_0x89dd('0x6'))('rpc');var config=require(_0x89dd('0x7'));var jayson=require(_0x89dd('0x8'));var client=jayson['client'][_0x89dd('0x9')]({'port':0x232a});config[_0x89dd('0xa')]=_[_0x89dd('0xb')](config[_0x89dd('0xa')],{'host':_0x89dd('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x89dd('0xa')]));require(_0x89dd('0xd'))[_0x89dd('0xe')](socket);function respondWithRpcPromise(_0x358411,_0x284073,_0x22abbe){return new BPromise(function(_0x2506af,_0x45a8fb){return client[_0x89dd('0xf')](_0x358411,_0x22abbe)['then'](function(_0x5ebc24){logger[_0x89dd('0x10')]('FaxQueue,\x20%s,\x20%s',_0x284073,_0x89dd('0x11'));logger[_0x89dd('0x12')](_0x89dd('0x13'),_0x284073,_0x89dd('0x11'),JSON[_0x89dd('0x14')](_0x5ebc24));if(_0x5ebc24[_0x89dd('0x15')]){if(_0x5ebc24[_0x89dd('0x15')][_0x89dd('0x16')]===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x284073,_0x5ebc24[_0x89dd('0x15')][_0x89dd('0x17')]);return _0x45a8fb(_0x5ebc24[_0x89dd('0x15')]['message']);}logger[_0x89dd('0x15')]('FaxQueue,\x20%s,\x20%s',_0x284073,_0x5ebc24[_0x89dd('0x15')]['message']);return _0x2506af(_0x5ebc24['error'][_0x89dd('0x17')]);}else{logger[_0x89dd('0x10')](_0x89dd('0x18'),_0x284073,_0x89dd('0x11'));_0x2506af(_0x5ebc24['result'][_0x89dd('0x17')]);}})[_0x89dd('0x19')](function(_0x474e7d){logger[_0x89dd('0x15')](_0x89dd('0x18'),_0x284073,_0x474e7d);_0x45a8fb(_0x474e7d);});});}exports[_0x89dd('0x1a')]=function(_0x42ce5e){var _0x5d1440=this;return new Promise(function(_0x4ddfc5,_0x1bbf8f){return db[_0x89dd('0x1b')]['findAll']({'raw':_0x42ce5e['options']?_0x42ce5e[_0x89dd('0x1c')][_0x89dd('0x1d')]===undefined?!![]:![]:!![],'where':_0x42ce5e[_0x89dd('0x1c')]?_0x42ce5e['options']['where']||null:null,'attributes':_0x42ce5e['options']?_0x42ce5e[_0x89dd('0x1c')][_0x89dd('0x1e')]||null:null,'limit':_0x42ce5e[_0x89dd('0x1c')]?_0x42ce5e[_0x89dd('0x1c')][_0x89dd('0x1f')]||null:null,'include':_0x42ce5e['options']?_0x42ce5e['options'][_0x89dd('0x20')]?_[_0x89dd('0x21')](_0x42ce5e['options'][_0x89dd('0x20')],function(_0x8c6892){return{'model':db[_0x8c6892[_0x89dd('0x22')]],'as':_0x8c6892['as'],'attributes':_0x8c6892[_0x89dd('0x1e')],'include':_0x8c6892[_0x89dd('0x20')]?_[_0x89dd('0x21')](_0x8c6892[_0x89dd('0x20')],function(_0x4256d4){return{'model':db[_0x4256d4[_0x89dd('0x22')]],'as':_0x4256d4['as'],'attributes':_0x4256d4[_0x89dd('0x1e')],'include':_0x4256d4[_0x89dd('0x20')]?_[_0x89dd('0x21')](_0x4256d4[_0x89dd('0x20')],function(_0xabc252){return{'model':db[_0xabc252[_0x89dd('0x22')]],'as':_0xabc252['as'],'attributes':_0xabc252['attributes']};}):[]};}):[]};}):[]:[]})[_0x89dd('0x23')](function(_0x53c119){logger[_0x89dd('0x10')]('GetFaxQueue',_0x42ce5e);logger[_0x89dd('0x12')](_0x89dd('0x1a'),_0x42ce5e,JSON[_0x89dd('0x14')](_0x53c119));_0x4ddfc5(_0x53c119);})['catch'](function(_0x52c39e){logger[_0x89dd('0x15')](_0x89dd('0x1a'),_0x52c39e[_0x89dd('0x17')],_0x42ce5e);_0x1bbf8f(_0x5d1440['error'](0x1f4,_0x52c39e['message']));});});};exports['ShowFaxQueue']=function(_0x838673){var _0x204c06=this;return new Promise(function(_0xa87051,_0x46938b){return db[_0x89dd('0x1b')]['find']({'raw':_0x838673['options']?_0x838673[_0x89dd('0x1c')][_0x89dd('0x1d')]===undefined?!![]:![]:!![],'where':_0x838673['options']?_0x838673[_0x89dd('0x1c')][_0x89dd('0x24')]||null:null,'attributes':_0x838673[_0x89dd('0x1c')]?_0x838673[_0x89dd('0x1c')][_0x89dd('0x1e')]||null:null,'include':_0x838673[_0x89dd('0x1c')]?_0x838673['options'][_0x89dd('0x20')]?_['map'](_0x838673[_0x89dd('0x1c')]['include'],function(_0x28cbd9){return{'model':db[_0x28cbd9[_0x89dd('0x22')]],'as':_0x28cbd9['as'],'attributes':_0x28cbd9[_0x89dd('0x1e')],'include':_0x28cbd9[_0x89dd('0x20')]?_['map'](_0x28cbd9[_0x89dd('0x20')],function(_0x5031d9){return{'model':db[_0x5031d9['model']],'as':_0x5031d9['as'],'attributes':_0x5031d9['attributes'],'include':_0x5031d9[_0x89dd('0x20')]?_[_0x89dd('0x21')](_0x5031d9['include'],function(_0x35bdbd){return{'model':db[_0x35bdbd['model']],'as':_0x35bdbd['as'],'attributes':_0x35bdbd['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d4101){logger[_0x89dd('0x10')]('ShowFaxQueue',_0x838673);logger[_0x89dd('0x12')](_0x89dd('0x25'),_0x838673,JSON[_0x89dd('0x14')](_0x4d4101));_0xa87051(_0x4d4101);})[_0x89dd('0x19')](function(_0x3b3e5a){logger[_0x89dd('0x15')]('ShowFaxQueue',_0x3b3e5a['message'],_0x838673);_0x46938b(_0x204c06[_0x89dd('0x15')](0x1f4,_0x3b3e5a['message']));});});};
\ No newline at end of file
index 23394db..2438c4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15d7=['save','remove','update','emit','removeListener','register','length','faxQueue:','./faxQueue.events'];(function(_0x3d30c4,_0x4c996b){var _0x48cc87=function(_0x205584){while(--_0x205584){_0x3d30c4['push'](_0x3d30c4['shift']());}};_0x48cc87(++_0x4c996b);}(_0x15d7,0x19d));var _0x715d=function(_0x1fb62b,_0x2bf720){_0x1fb62b=_0x1fb62b-0x0;var _0x513d9d=_0x15d7[_0x1fb62b];return _0x513d9d;};'use strict';var FaxQueueEvents=require(_0x715d('0x0'));var events=[_0x715d('0x1'),_0x715d('0x2'),_0x715d('0x3')];function createListener(_0x3da0d7,_0x4d3d68){return function(_0x4fe476){_0x4d3d68[_0x715d('0x4')](_0x3da0d7,_0x4fe476);};}function removeListener(_0xa1d850,_0x3c4e6b){return function(){FaxQueueEvents[_0x715d('0x5')](_0xa1d850,_0x3c4e6b);};}exports[_0x715d('0x6')]=function(_0x214d3c){for(var _0xee5e43=0x0,_0x31debf=events[_0x715d('0x7')];_0xee5e43<_0x31debf;_0xee5e43++){var _0x3fbb70=events[_0xee5e43];var _0x15e447=createListener(_0x715d('0x8')+_0x3fbb70,_0x214d3c);FaxQueueEvents['on'](_0x3fbb70,_0x15e447);}};
\ No newline at end of file
+var _0xbeb0=['save','removeListener','register','length','faxQueue:','./faxQueue.events'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0xbeb0,0x15b));var _0x0beb=function(_0x2c4c79,_0x35630d){_0x2c4c79=_0x2c4c79-0x0;var _0x11eb0f=_0xbeb0[_0x2c4c79];return _0x11eb0f;};'use strict';var FaxQueueEvents=require(_0x0beb('0x0'));var events=[_0x0beb('0x1'),'remove','update'];function createListener(_0x4c0b0c,_0x1f8007){return function(_0x3d023b){_0x1f8007['emit'](_0x4c0b0c,_0x3d023b);};}function removeListener(_0x210308,_0x5e7076){return function(){FaxQueueEvents[_0x0beb('0x2')](_0x210308,_0x5e7076);};}exports[_0x0beb('0x3')]=function(_0x3384d2){for(var _0x401d80=0x0,_0x4f577a=events[_0x0beb('0x4')];_0x401d80<_0x4f577a;_0x401d80++){var _0x48b727=events[_0x401d80];var _0x328fe7=createListener(_0x0beb('0x5')+_0x48b727,_0x3384d2);FaxQueueEvents['on'](_0x48b727,_0x328fe7);}};
\ No newline at end of file
index 822f003..c24737b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe944=['/:id/teams','getTeams','/:id/users','create','post','addAgents','put','update','delete','destroy','removeTeams','exports','multer','connect-timeout','fs-extra','../../config/environment','./faxQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members'];(function(_0x5e7c68,_0x5f32fe){var _0x3673ff=function(_0x1f4045){while(--_0x1f4045){_0x5e7c68['push'](_0x5e7c68['shift']());}};_0x3673ff(++_0x5f32fe);}(_0xe944,0x174));var _0x4e94=function(_0x312ac6,_0x2e1df5){_0x312ac6=_0x312ac6-0x0;var _0x26f6e6=_0xe944[_0x312ac6];return _0x26f6e6;};'use strict';var multer=require(_0x4e94('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4e94('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4e94('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4e94('0x3'));var controller=require(_0x4e94('0x4'));router[_0x4e94('0x5')]('/',auth[_0x4e94('0x6')](),controller['index']);router[_0x4e94('0x5')](_0x4e94('0x7'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x8')]);router['get'](_0x4e94('0x9'),auth['isAuthenticated'](),controller[_0x4e94('0xa')]);router[_0x4e94('0x5')](_0x4e94('0xb'),auth[_0x4e94('0x6')](),controller['getMembers']);router[_0x4e94('0x5')](_0x4e94('0xc'),auth[_0x4e94('0x6')](),controller[_0x4e94('0xd')]);router[_0x4e94('0x5')](_0x4e94('0xe'),auth[_0x4e94('0x6')](),controller['getAgents']);router['post']('/',auth[_0x4e94('0x6')](),controller[_0x4e94('0xf')]);router[_0x4e94('0x10')](_0x4e94('0xc'),auth[_0x4e94('0x6')](),controller['addTeams']);router[_0x4e94('0x10')](_0x4e94('0xe'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x11')]);router[_0x4e94('0x12')](_0x4e94('0x9'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x13')]);router[_0x4e94('0x14')](_0x4e94('0x9'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x15')]);router['delete']('/:id/teams',auth[_0x4e94('0x6')](),controller[_0x4e94('0x16')]);router[_0x4e94('0x14')](_0x4e94('0xe'),auth[_0x4e94('0x6')](),controller['removeAgents']);module[_0x4e94('0x17')]=router;
\ No newline at end of file
+var _0x1967=['getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','removeAgents','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','/:id/teams'];(function(_0x4099ee,_0x38495a){var _0x1b7bfc=function(_0x5f5388){while(--_0x5f5388){_0x4099ee['push'](_0x4099ee['shift']());}};_0x1b7bfc(++_0x38495a);}(_0x1967,0x173));var _0x7196=function(_0x3c03d0,_0x4b7798){_0x3c03d0=_0x3c03d0-0x0;var _0x56341c=_0x1967[_0x3c03d0];return _0x56341c;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0xc')](_0x7196('0x11'),auth['isAuthenticated'](),controller['getMembers']);router[_0x7196('0xc')](_0x7196('0x12'),auth[_0x7196('0xa')](),controller[_0x7196('0x13')]);router[_0x7196('0xc')](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x15')]);router[_0x7196('0x16')]('/',auth[_0x7196('0xa')](),controller[_0x7196('0x17')]);router['post'](_0x7196('0x12'),auth[_0x7196('0xa')](),controller[_0x7196('0x18')]);router[_0x7196('0x16')]('/:id/users',auth[_0x7196('0xa')](),controller['addAgents']);router[_0x7196('0x19')](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x1a')]);router[_0x7196('0x1b')](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x1c')]);router[_0x7196('0x1b')](_0x7196('0x12'),auth[_0x7196('0xa')](),controller['removeTeams']);router['delete'](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x1d')]);module['exports']=router;
\ No newline at end of file
index 5ce43f4..5050f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41df=['moment','STRING','DATE'];(function(_0xac5d7a,_0x5a3a86){var _0x7919d1=function(_0x361898){while(--_0x361898){_0xac5d7a['push'](_0xac5d7a['shift']());}};_0x7919d1(++_0x5a3a86);}(_0x41df,0x1da));var _0xf41d=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0x41df[_0x8de54f];return _0x14cba4;};'use strict';var moment=require(_0xf41d('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xf41d('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xf41d('0x1')]},'joinAt':{'type':Sequelize[_0xf41d('0x2')]},'leaveAt':{'type':Sequelize[_0xf41d('0x2')]},'acceptAt':{'type':Sequelize[_0xf41d('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x95bb=['STRING','DATE','moment','sequelize','exports'];(function(_0x5d07ff,_0x1f976f){var _0x5226ad=function(_0x1653a4){while(--_0x1653a4){_0x5d07ff['push'](_0x5d07ff['shift']());}};_0x5226ad(++_0x1f976f);}(_0x95bb,0xed));var _0xb95b=function(_0x2bb1a2,_0x3a05b4){_0x2bb1a2=_0x2bb1a2-0x0;var _0x37067b=_0x95bb[_0x2bb1a2];return _0x37067b;};'use strict';var moment=require(_0xb95b('0x0'));var Sequelize=require(_0xb95b('0x1'));module[_0xb95b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xb95b('0x3')]},'joinAt':{'type':Sequelize[_0xb95b('0x4')]},'leaveAt':{'type':Sequelize[_0xb95b('0x4')]},'acceptAt':{'type':Sequelize[_0xb95b('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xb95b('0x3')]}};
\ No newline at end of file
index 51a21db..e3ff2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd49c=['request-promise','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/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','FaxQueueReport','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','keys','length','include','options','find','create','update','params','body','describe','rimraf','fast-json-patch'];(function(_0x555db2,_0x35f487){var _0x19e312=function(_0x397395){while(--_0x397395){_0x555db2['push'](_0x555db2['shift']());}};_0x19e312(++_0x35f487);}(_0xd49c,0x1d8));var _0xcd49=function(_0x5f3777,_0x4cdb8a){_0x5f3777=_0x5f3777-0x0;var _0x398fb6=_0xd49c[_0x5f3777];return _0x398fb6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcd49('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcd49('0x1'));var rp=require(_0xcd49('0x2'));var moment=require('moment');var BPromise=require(_0xcd49('0x3'));var Mustache=require('mustache');var util=require(_0xcd49('0x4'));var path=require('path');var sox=require(_0xcd49('0x5'));var csv=require(_0xcd49('0x6'));var ejs=require(_0xcd49('0x7'));var fs=require('fs');var fs_extra=require(_0xcd49('0x8'));var _=require(_0xcd49('0x9'));var squel=require(_0xcd49('0xa'));var crypto=require(_0xcd49('0xb'));var jsforce=require(_0xcd49('0xc'));var deskjs=require(_0xcd49('0xd'));var toCsv=require(_0xcd49('0x6'));var querystring=require(_0xcd49('0xe'));var Papa=require('papaparse');var Redis=require(_0xcd49('0xf'));var authService=require(_0xcd49('0x10'));var qs=require(_0xcd49('0x11'));var as=require(_0xcd49('0x12'));var hardwareService=require(_0xcd49('0x13'));var logger=require(_0xcd49('0x14'))(_0xcd49('0x15'));var utils=require(_0xcd49('0x16'));var config=require(_0xcd49('0x17'));var licenseUtil=require(_0xcd49('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5782e2,_0x5b8c8d){_0x5b8c8d=_0x5b8c8d||0xcc;return function(_0x2e817d){if(_0x2e817d){return _0x5782e2[_0xcd49('0x19')](_0x5b8c8d);}return _0x5782e2['status'](_0x5b8c8d)[_0xcd49('0x1a')]();};}function respondWithResult(_0x4bed3d,_0x5c7d8c){_0x5c7d8c=_0x5c7d8c||0xc8;return function(_0x26f20){if(_0x26f20){return _0x4bed3d[_0xcd49('0x1b')](_0x5c7d8c)[_0xcd49('0x1c')](_0x26f20);}};}function respondWithFilteredResult(_0x3f23e9,_0x1e2275){return function(_0x328755){if(_0x328755){var _0x5a0c6e=typeof _0x1e2275['offset']==='undefined'&&typeof _0x1e2275['limit']===_0xcd49('0x1d');var _0xd0043=_0x328755[_0xcd49('0x1e')];var _0x484900=_0x5a0c6e?0x0:_0x1e2275[_0xcd49('0x1f')];var _0x5f2ecb=_0x5a0c6e?_0x328755[_0xcd49('0x1e')]:_0x1e2275['offset']+_0x1e2275[_0xcd49('0x20')];var _0x78aff9;if(_0x5f2ecb>=_0xd0043){_0x5f2ecb=_0xd0043;_0x78aff9=0xc8;}else{_0x78aff9=0xce;}_0x3f23e9[_0xcd49('0x1b')](_0x78aff9);return _0x3f23e9[_0xcd49('0x21')](_0xcd49('0x22'),_0x484900+'-'+_0x5f2ecb+'/'+_0xd0043)[_0xcd49('0x1c')](_0x328755);}return null;};}function patchUpdates(_0x1c40a6){return function(_0x9475c1){try{jsonpatch[_0xcd49('0x23')](_0x9475c1,_0x1c40a6,!![]);}catch(_0x5b54bc){return BPromise[_0xcd49('0x24')](_0x5b54bc);}return _0x9475c1[_0xcd49('0x25')]();};}function saveUpdates(_0x37aea4,_0x5829d1){return function(_0x4fdab7){if(_0x4fdab7){return _0x4fdab7['update'](_0x37aea4)[_0xcd49('0x26')](function(_0x35d6b5){return _0x35d6b5;});}return null;};}function removeEntity(_0x57bc92,_0x1f649c){return function(_0x400669){if(_0x400669){return _0x400669[_0xcd49('0x27')]()['then'](function(){_0x57bc92[_0xcd49('0x1b')](0xcc)[_0xcd49('0x1a')]();});}};}function handleEntityNotFound(_0x56fcc0,_0x38d05a){return function(_0x22c0ed){if(!_0x22c0ed){_0x56fcc0['sendStatus'](0x194);}return _0x22c0ed;};}function handleError(_0x1ca798,_0xc3897c){_0xc3897c=_0xc3897c||0x1f4;return function(_0x77a7eb){logger[_0xcd49('0x28')](_0x77a7eb[_0xcd49('0x29')]);if(_0x77a7eb[_0xcd49('0x2a')]){delete _0x77a7eb[_0xcd49('0x2a')];}_0x1ca798[_0xcd49('0x1b')](_0xc3897c)[_0xcd49('0x2b')](_0x77a7eb);};}exports[_0xcd49('0x2c')]=function(_0x442c26,_0x5cb1c8){var _0x3be5e6={},_0x567557={},_0x43a448={'count':0x0,'rows':[]};var _0x468029=_['map'](db[_0xcd49('0x2d')][_0xcd49('0x2e')],function(_0x5a5603){return{'name':_0x5a5603[_0xcd49('0x2f')],'type':_0x5a5603[_0xcd49('0x30')][_0xcd49('0x31')]};});_0x567557[_0xcd49('0x32')]=_[_0xcd49('0x33')](_0x468029,_0xcd49('0x2a'));_0x567557['query']=_['keys'](_0x442c26[_0xcd49('0x34')]);_0x567557[_0xcd49('0x35')]=_[_0xcd49('0x36')](_0x567557[_0xcd49('0x32')],_0x567557[_0xcd49('0x34')]);_0x3be5e6[_0xcd49('0x37')]=_[_0xcd49('0x36')](_0x567557[_0xcd49('0x32')],qs[_0xcd49('0x38')](_0x442c26[_0xcd49('0x34')][_0xcd49('0x38')]));_0x3be5e6[_0xcd49('0x37')]=_0x3be5e6[_0xcd49('0x37')]['length']?_0x3be5e6[_0xcd49('0x37')]:_0x567557[_0xcd49('0x32')];if(!_0x442c26['query']['hasOwnProperty'](_0xcd49('0x39'))){_0x3be5e6[_0xcd49('0x20')]=qs['limit'](_0x442c26[_0xcd49('0x34')][_0xcd49('0x20')]);_0x3be5e6[_0xcd49('0x1f')]=qs[_0xcd49('0x1f')](_0x442c26[_0xcd49('0x34')][_0xcd49('0x1f')]);}_0x3be5e6[_0xcd49('0x3a')]=qs['sort'](_0x442c26[_0xcd49('0x34')][_0xcd49('0x3b')]);_0x3be5e6[_0xcd49('0x3c')]=qs[_0xcd49('0x35')](_[_0xcd49('0x3d')](_0x442c26[_0xcd49('0x34')],_0x567557['filters']),_0x468029);if(_0x442c26[_0xcd49('0x34')][_0xcd49('0x3e')]){_0x3be5e6[_0xcd49('0x3c')]=_['merge'](_0x3be5e6[_0xcd49('0x3c')],{'$or':_[_0xcd49('0x33')](_0x468029,function(_0x1893c6){if(_0x1893c6[_0xcd49('0x30')]!==_0xcd49('0x3f')){var _0x2e4e18={};_0x2e4e18[_0x1893c6[_0xcd49('0x2a')]]={'$like':'%'+_0x442c26[_0xcd49('0x34')][_0xcd49('0x3e')]+'%'};return _0x2e4e18;}})});}_0x3be5e6=_[_0xcd49('0x40')]({},_0x3be5e6,_0x442c26['options']);var _0x4c2103={'where':_0x3be5e6[_0xcd49('0x3c')]};return db[_0xcd49('0x2d')][_0xcd49('0x1e')](_0x4c2103)[_0xcd49('0x26')](function(_0x1c6534){_0x43a448['count']=_0x1c6534;if(_0x442c26[_0xcd49('0x34')][_0xcd49('0x41')]){_0x3be5e6['include']=[{'all':!![]}];}return db[_0xcd49('0x2d')][_0xcd49('0x42')](_0x3be5e6);})[_0xcd49('0x26')](function(_0x2ebfb9){_0x43a448[_0xcd49('0x43')]=_0x2ebfb9;return _0x43a448;})[_0xcd49('0x26')](respondWithFilteredResult(_0x5cb1c8,_0x3be5e6))[_0xcd49('0x44')](handleError(_0x5cb1c8,null));};exports['show']=function(_0x1c4832,_0x4f3dd7){var _0x470e4d={'raw':!![],'where':{'id':_0x1c4832['params']['id']}},_0x1a8685={};_0x1a8685[_0xcd49('0x32')]=_[_0xcd49('0x45')](db['FaxQueueReport'][_0xcd49('0x2e')]);_0x1a8685['query']=_[_0xcd49('0x45')](_0x1c4832[_0xcd49('0x34')]);_0x1a8685[_0xcd49('0x35')]=_['intersection'](_0x1a8685[_0xcd49('0x32')],_0x1a8685['query']);_0x470e4d['attributes']=_[_0xcd49('0x36')](_0x1a8685[_0xcd49('0x32')],qs['fields'](_0x1c4832[_0xcd49('0x34')][_0xcd49('0x38')]));_0x470e4d[_0xcd49('0x37')]=_0x470e4d[_0xcd49('0x37')][_0xcd49('0x46')]?_0x470e4d['attributes']:_0x1a8685[_0xcd49('0x32')];if(_0x1c4832[_0xcd49('0x34')][_0xcd49('0x41')]){_0x470e4d[_0xcd49('0x47')]=[{'all':!![]}];}_0x470e4d=_['merge']({},_0x470e4d,_0x1c4832[_0xcd49('0x48')]);return db[_0xcd49('0x2d')][_0xcd49('0x49')](_0x470e4d)[_0xcd49('0x26')](handleEntityNotFound(_0x4f3dd7,null))[_0xcd49('0x26')](respondWithResult(_0x4f3dd7,null))[_0xcd49('0x44')](handleError(_0x4f3dd7,null));};exports[_0xcd49('0x4a')]=function(_0x2c8457,_0x38676b){return db['FaxQueueReport'][_0xcd49('0x4a')](_0x2c8457['body'],{})[_0xcd49('0x26')](respondWithResult(_0x38676b,0xc9))[_0xcd49('0x44')](handleError(_0x38676b,null));};exports[_0xcd49('0x4b')]=function(_0x37f1e9,_0x268cc1){if(_0x37f1e9['body']['id']){delete _0x37f1e9['body']['id'];}return db['FaxQueueReport'][_0xcd49('0x49')]({'where':{'id':_0x37f1e9[_0xcd49('0x4c')]['id']}})['then'](handleEntityNotFound(_0x268cc1,null))[_0xcd49('0x26')](saveUpdates(_0x37f1e9[_0xcd49('0x4d')],null))[_0xcd49('0x26')](respondWithResult(_0x268cc1,null))['catch'](handleError(_0x268cc1,null));};exports['destroy']=function(_0xcb2b2e,_0x5b47d3){return db[_0xcd49('0x2d')][_0xcd49('0x49')]({'where':{'id':_0xcb2b2e[_0xcd49('0x4c')]['id']}})[_0xcd49('0x26')](handleEntityNotFound(_0x5b47d3,null))[_0xcd49('0x26')](removeEntity(_0x5b47d3,null))['catch'](handleError(_0x5b47d3,null));};exports[_0xcd49('0x4e')]=function(_0x17886b,_0x4cbb15){return db[_0xcd49('0x2d')]['describe']()[_0xcd49('0x26')](respondWithResult(_0x4cbb15,null))[_0xcd49('0x44')](handleError(_0x4cbb15,null));};
\ No newline at end of file
+var _0xd404=['update','then','destroy','error','stack','name','send','index','map','FaxQueueReport','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll','include','findAll','rows','catch','params','rawAttributes','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','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','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x109b93,_0x1c3808){var _0x28938f=function(_0x4ffd3c){while(--_0x4ffd3c){_0x109b93['push'](_0x109b93['shift']());}};_0x28938f(++_0x1c3808);}(_0xd404,0x15b));var _0x4d40=function(_0x200e70,_0x2c7a75){_0x200e70=_0x200e70-0x0;var _0x590f23=_0xd404[_0x200e70];return _0x590f23;};'use strict';var emlformat=require(_0x4d40('0x0'));var rimraf=require(_0x4d40('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d40('0x2'));var rp=require(_0x4d40('0x3'));var moment=require('moment');var BPromise=require(_0x4d40('0x4'));var Mustache=require(_0x4d40('0x5'));var util=require(_0x4d40('0x6'));var path=require(_0x4d40('0x7'));var sox=require(_0x4d40('0x8'));var csv=require(_0x4d40('0x9'));var ejs=require(_0x4d40('0xa'));var fs=require('fs');var fs_extra=require(_0x4d40('0xb'));var _=require(_0x4d40('0xc'));var squel=require('squel');var crypto=require(_0x4d40('0xd'));var jsforce=require(_0x4d40('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4d40('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4d40('0xf'));var authService=require(_0x4d40('0x10'));var qs=require(_0x4d40('0x11'));var as=require(_0x4d40('0x12'));var hardwareService=require(_0x4d40('0x13'));var logger=require(_0x4d40('0x14'))(_0x4d40('0x15'));var utils=require(_0x4d40('0x16'));var config=require(_0x4d40('0x17'));var licenseUtil=require(_0x4d40('0x18'));var db=require(_0x4d40('0x19'))['db'];function respondWithStatusCode(_0x3c3b7e,_0x28e5bf){_0x28e5bf=_0x28e5bf||0xcc;return function(_0x42a621){if(_0x42a621){return _0x3c3b7e['sendStatus'](_0x28e5bf);}return _0x3c3b7e[_0x4d40('0x1a')](_0x28e5bf)[_0x4d40('0x1b')]();};}function respondWithResult(_0x3b071b,_0x2083bd){_0x2083bd=_0x2083bd||0xc8;return function(_0x477a91){if(_0x477a91){return _0x3b071b['status'](_0x2083bd)[_0x4d40('0x1c')](_0x477a91);}};}function respondWithFilteredResult(_0x4077ce,_0x20bc1b){return function(_0xcee25a){if(_0xcee25a){var _0x453857=typeof _0x20bc1b[_0x4d40('0x1d')]===_0x4d40('0x1e')&&typeof _0x20bc1b[_0x4d40('0x1f')]===_0x4d40('0x1e');var _0x4b5d23=_0xcee25a['count'];var _0x1ae5c7=_0x453857?0x0:_0x20bc1b[_0x4d40('0x1d')];var _0x4e505f=_0x453857?_0xcee25a[_0x4d40('0x20')]:_0x20bc1b[_0x4d40('0x1d')]+_0x20bc1b['limit'];var _0x36d031;if(_0x4e505f>=_0x4b5d23){_0x4e505f=_0x4b5d23;_0x36d031=0xc8;}else{_0x36d031=0xce;}_0x4077ce['status'](_0x36d031);return _0x4077ce[_0x4d40('0x21')](_0x4d40('0x22'),_0x1ae5c7+'-'+_0x4e505f+'/'+_0x4b5d23)['json'](_0xcee25a);}return null;};}function patchUpdates(_0x57c997){return function(_0x375ce0){try{jsonpatch[_0x4d40('0x23')](_0x375ce0,_0x57c997,!![]);}catch(_0x4d52ce){return BPromise[_0x4d40('0x24')](_0x4d52ce);}return _0x375ce0[_0x4d40('0x25')]();};}function saveUpdates(_0x30f058,_0x5d4c24){return function(_0x356fd6){if(_0x356fd6){return _0x356fd6[_0x4d40('0x26')](_0x30f058)[_0x4d40('0x27')](function(_0x5ca0a0){return _0x5ca0a0;});}return null;};}function removeEntity(_0x4eebc3,_0x2df33a){return function(_0x90b652){if(_0x90b652){return _0x90b652[_0x4d40('0x28')]()[_0x4d40('0x27')](function(){_0x4eebc3[_0x4d40('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbcd540,_0x1f5e5b){return function(_0x560df8){if(!_0x560df8){_0xbcd540['sendStatus'](0x194);}return _0x560df8;};}function handleError(_0x274d44,_0x2a0c82){_0x2a0c82=_0x2a0c82||0x1f4;return function(_0x3fa83e){logger[_0x4d40('0x29')](_0x3fa83e[_0x4d40('0x2a')]);if(_0x3fa83e[_0x4d40('0x2b')]){delete _0x3fa83e[_0x4d40('0x2b')];}_0x274d44[_0x4d40('0x1a')](_0x2a0c82)[_0x4d40('0x2c')](_0x3fa83e);};}exports[_0x4d40('0x2d')]=function(_0x1c0fcf,_0x4ca431){var _0x4e4e61={},_0x52f706={},_0x158a86={'count':0x0,'rows':[]};var _0x350488=_[_0x4d40('0x2e')](db[_0x4d40('0x2f')]['rawAttributes'],function(_0x18e601){return{'name':_0x18e601[_0x4d40('0x30')],'type':_0x18e601[_0x4d40('0x31')]['key']};});_0x52f706[_0x4d40('0x32')]=_[_0x4d40('0x2e')](_0x350488,_0x4d40('0x2b'));_0x52f706[_0x4d40('0x33')]=_[_0x4d40('0x34')](_0x1c0fcf['query']);_0x52f706[_0x4d40('0x35')]=_['intersection'](_0x52f706[_0x4d40('0x32')],_0x52f706[_0x4d40('0x33')]);_0x4e4e61[_0x4d40('0x36')]=_[_0x4d40('0x37')](_0x52f706['model'],qs['fields'](_0x1c0fcf[_0x4d40('0x33')][_0x4d40('0x38')]));_0x4e4e61[_0x4d40('0x36')]=_0x4e4e61[_0x4d40('0x36')]['length']?_0x4e4e61[_0x4d40('0x36')]:_0x52f706['model'];if(!_0x1c0fcf[_0x4d40('0x33')][_0x4d40('0x39')](_0x4d40('0x3a'))){_0x4e4e61[_0x4d40('0x1f')]=qs[_0x4d40('0x1f')](_0x1c0fcf[_0x4d40('0x33')][_0x4d40('0x1f')]);_0x4e4e61[_0x4d40('0x1d')]=qs[_0x4d40('0x1d')](_0x1c0fcf[_0x4d40('0x33')]['offset']);}_0x4e4e61[_0x4d40('0x3b')]=qs[_0x4d40('0x3c')](_0x1c0fcf['query']['sort']);_0x4e4e61['where']=qs[_0x4d40('0x35')](_[_0x4d40('0x3d')](_0x1c0fcf['query'],_0x52f706[_0x4d40('0x35')]),_0x350488);if(_0x1c0fcf[_0x4d40('0x33')][_0x4d40('0x3e')]){_0x4e4e61[_0x4d40('0x3f')]=_[_0x4d40('0x40')](_0x4e4e61['where'],{'$or':_[_0x4d40('0x2e')](_0x350488,function(_0x21a4ec){if(_0x21a4ec['type']!=='VIRTUAL'){var _0x3a4924={};_0x3a4924[_0x21a4ec[_0x4d40('0x2b')]]={'$like':'%'+_0x1c0fcf['query'][_0x4d40('0x3e')]+'%'};return _0x3a4924;}})});}_0x4e4e61=_[_0x4d40('0x40')]({},_0x4e4e61,_0x1c0fcf['options']);var _0x1e8427={'where':_0x4e4e61[_0x4d40('0x3f')]};return db['FaxQueueReport'][_0x4d40('0x20')](_0x1e8427)[_0x4d40('0x27')](function(_0x4841ac){_0x158a86[_0x4d40('0x20')]=_0x4841ac;if(_0x1c0fcf['query'][_0x4d40('0x41')]){_0x4e4e61[_0x4d40('0x42')]=[{'all':!![]}];}return db[_0x4d40('0x2f')][_0x4d40('0x43')](_0x4e4e61);})[_0x4d40('0x27')](function(_0x2ef0ca){_0x158a86[_0x4d40('0x44')]=_0x2ef0ca;return _0x158a86;})[_0x4d40('0x27')](respondWithFilteredResult(_0x4ca431,_0x4e4e61))[_0x4d40('0x45')](handleError(_0x4ca431,null));};exports['show']=function(_0x250847,_0x3718a8){var _0x1c2fa8={'raw':!![],'where':{'id':_0x250847[_0x4d40('0x46')]['id']}},_0xcdde22={};_0xcdde22['model']=_[_0x4d40('0x34')](db['FaxQueueReport'][_0x4d40('0x47')]);_0xcdde22[_0x4d40('0x33')]=_[_0x4d40('0x34')](_0x250847[_0x4d40('0x33')]);_0xcdde22['filters']=_[_0x4d40('0x37')](_0xcdde22[_0x4d40('0x32')],_0xcdde22['query']);_0x1c2fa8[_0x4d40('0x36')]=_['intersection'](_0xcdde22[_0x4d40('0x32')],qs[_0x4d40('0x38')](_0x250847[_0x4d40('0x33')][_0x4d40('0x38')]));_0x1c2fa8['attributes']=_0x1c2fa8[_0x4d40('0x36')]['length']?_0x1c2fa8[_0x4d40('0x36')]:_0xcdde22[_0x4d40('0x32')];if(_0x250847[_0x4d40('0x33')][_0x4d40('0x41')]){_0x1c2fa8['include']=[{'all':!![]}];}_0x1c2fa8=_[_0x4d40('0x40')]({},_0x1c2fa8,_0x250847[_0x4d40('0x48')]);return db[_0x4d40('0x2f')][_0x4d40('0x49')](_0x1c2fa8)['then'](handleEntityNotFound(_0x3718a8,null))[_0x4d40('0x27')](respondWithResult(_0x3718a8,null))[_0x4d40('0x45')](handleError(_0x3718a8,null));};exports['create']=function(_0x200d29,_0x493d8e){return db[_0x4d40('0x2f')][_0x4d40('0x4a')](_0x200d29[_0x4d40('0x4b')],{})[_0x4d40('0x27')](respondWithResult(_0x493d8e,0xc9))[_0x4d40('0x45')](handleError(_0x493d8e,null));};exports[_0x4d40('0x26')]=function(_0x30be7b,_0x37b6bf){if(_0x30be7b[_0x4d40('0x4b')]['id']){delete _0x30be7b['body']['id'];}return db[_0x4d40('0x2f')][_0x4d40('0x49')]({'where':{'id':_0x30be7b[_0x4d40('0x46')]['id']}})[_0x4d40('0x27')](handleEntityNotFound(_0x37b6bf,null))[_0x4d40('0x27')](saveUpdates(_0x30be7b['body'],null))[_0x4d40('0x27')](respondWithResult(_0x37b6bf,null))[_0x4d40('0x45')](handleError(_0x37b6bf,null));};exports['destroy']=function(_0xdf0235,_0x48ffd7){return db[_0x4d40('0x2f')][_0x4d40('0x49')]({'where':{'id':_0xdf0235[_0x4d40('0x46')]['id']}})['then'](handleEntityNotFound(_0x48ffd7,null))[_0x4d40('0x27')](removeEntity(_0x48ffd7,null))[_0x4d40('0x45')](handleError(_0x48ffd7,null));};exports[_0x4d40('0x4c')]=function(_0x55df43,_0xd3e7cd){return db['FaxQueueReport'][_0x4d40('0x4c')]()[_0x4d40('0x27')](respondWithResult(_0xd3e7cd,null))['catch'](handleError(_0xd3e7cd,null));};
\ No newline at end of file
index 9334e08..5cd746f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','define','report_fax_queue','uniqueid','util'];(function(_0xb1ed68,_0x1f2606){var _0x456735=function(_0x339539){while(--_0x339539){_0xb1ed68['push'](_0xb1ed68['shift']());}};_0x456735(++_0x1f2606);}(_0x1261,0x144));var _0x1126=function(_0x2c34ff,_0x1e8bee){_0x2c34ff=_0x2c34ff-0x0;var _0x476508=_0x1261[_0x2c34ff];return _0x476508;};'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')]('FaxQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','util'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0x814b,0x1a2));var _0xb814=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x814b[_0x17d9e3];return _0x14192d;};'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_fax_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 7543cb2..a8d393b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d6=['request\x20sent','debug','stringify','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','where','attributes','UpdateFaxQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','then','info','FaxQueueReport,\x20%s,\x20%s'];(function(_0x4446f0,_0x1dcec1){var _0x5cc013=function(_0x1138fd){while(--_0x1138fd){_0x4446f0['push'](_0x4446f0['shift']());}};_0x5cc013(++_0x1dcec1);}(_0x55d6,0xbe));var _0x655d=function(_0x2f37a8,_0x1a4cd9){_0x2f37a8=_0x2f37a8-0x0;var _0x11155f=_0x55d6[_0x2f37a8];return _0x11155f;};'use strict';var _=require(_0x655d('0x0'));var util=require('util');var moment=require(_0x655d('0x1'));var BPromise=require(_0x655d('0x2'));var rs=require(_0x655d('0x3'));var fs=require('fs');var Redis=require(_0x655d('0x4'));var db=require(_0x655d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x655d('0x6'))('rpc');var config=require(_0x655d('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x655d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x13f129,_0x546f31,_0x29e1d9){return new BPromise(function(_0x451f0f,_0x23da42){return client[_0x655d('0x9')](_0x13f129,_0x29e1d9)[_0x655d('0xa')](function(_0x439873){logger[_0x655d('0xb')](_0x655d('0xc'),_0x546f31,_0x655d('0xd'));logger[_0x655d('0xe')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x546f31,_0x655d('0xd'),JSON[_0x655d('0xf')](_0x439873));if(_0x439873[_0x655d('0x10')]){if(_0x439873[_0x655d('0x10')][_0x655d('0x11')]===0x1f4){logger[_0x655d('0x10')](_0x655d('0xc'),_0x546f31,_0x439873[_0x655d('0x10')][_0x655d('0x12')]);return _0x23da42(_0x439873['error'][_0x655d('0x12')]);}logger['error'](_0x655d('0xc'),_0x546f31,_0x439873[_0x655d('0x10')]['message']);return _0x451f0f(_0x439873['error'][_0x655d('0x12')]);}else{logger[_0x655d('0xb')](_0x655d('0xc'),_0x546f31,_0x655d('0xd'));_0x451f0f(_0x439873['result']['message']);}})[_0x655d('0x13')](function(_0x131839){logger[_0x655d('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x546f31,_0x131839);_0x23da42(_0x131839);});});}exports[_0x655d('0x14')]=function(_0x566499){var _0x13a2a2=this;return new Promise(function(_0x11b9aa,_0x1eea84){return db[_0x655d('0x15')][_0x655d('0x16')](_0x566499[_0x655d('0x17')],{'raw':_0x566499[_0x655d('0x18')]?_0x566499['options'][_0x655d('0x19')]===undefined?!![]:![]:!![]})[_0x655d('0xa')](function(_0x3feee6){logger[_0x655d('0xb')](_0x655d('0x14'),_0x566499);logger['debug'](_0x655d('0x14'),_0x566499,JSON[_0x655d('0xf')](_0x3feee6));_0x11b9aa(_0x3feee6);})[_0x655d('0x13')](function(_0x510fc5){logger[_0x655d('0x10')](_0x655d('0x14'),_0x510fc5[_0x655d('0x12')],_0x566499);_0x1eea84(_0x13a2a2['error'](0x1f4,_0x510fc5[_0x655d('0x12')]));});});};exports['UpdateFaxQueueReport']=function(_0x5794b8){var _0x272415=this;return new Promise(function(_0x3c9fa3,_0xbd1dab){return db['FaxQueueReport']['update'](_0x5794b8[_0x655d('0x17')],{'raw':_0x5794b8['options']?_0x5794b8[_0x655d('0x18')][_0x655d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5794b8['options']?_0x5794b8['options'][_0x655d('0x1a')]||null:null,'attributes':_0x5794b8[_0x655d('0x18')]?_0x5794b8[_0x655d('0x18')][_0x655d('0x1b')]||null:null,'limit':_0x5794b8[_0x655d('0x18')]?_0x5794b8[_0x655d('0x18')]['limit']||null:null})['then'](function(_0x5f3ba8){logger[_0x655d('0xb')](_0x655d('0x1c'),_0x5794b8);logger['debug'](_0x655d('0x1c'),_0x5794b8,JSON['stringify'](_0x5f3ba8));_0x3c9fa3(_0x5f3ba8);})[_0x655d('0x13')](function(_0x5f263b){logger[_0x655d('0x10')](_0x655d('0x1c'),_0x5f263b['message'],_0x5794b8);_0xbd1dab(_0x272415['error'](0x1f4,_0x5f263b[_0x655d('0x12')]));});});};
\ No newline at end of file
+var _0x18ca=['util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','options','raw','UpdateFaxQueueReport','update','body','where','attributes','limit','lodash'];(function(_0x52b23b,_0x378054){var _0x1c2126=function(_0xf21258){while(--_0xf21258){_0x52b23b['push'](_0x52b23b['shift']());}};_0x1c2126(++_0x378054);}(_0x18ca,0x153));var _0xa18c=function(_0x524bcd,_0x1925d5){_0x524bcd=_0x524bcd-0x0;var _0x39dc21=_0x18ca[_0x524bcd];return _0x39dc21;};'use strict';var _=require(_0xa18c('0x0'));var util=require(_0xa18c('0x1'));var moment=require(_0xa18c('0x2'));var BPromise=require(_0xa18c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa18c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa18c('0x5'));var logger=require(_0xa18c('0x6'))(_0xa18c('0x7'));var config=require(_0xa18c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa18c('0x9')][_0xa18c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf1191a,_0x5001a6,_0x3d3f6d){return new BPromise(function(_0x3d3cd8,_0x2c18b8){return client[_0xa18c('0xb')](_0xf1191a,_0x3d3f6d)[_0xa18c('0xc')](function(_0x225ffd){logger[_0xa18c('0xd')](_0xa18c('0xe'),_0x5001a6,_0xa18c('0xf'));logger[_0xa18c('0x10')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x5001a6,_0xa18c('0xf'),JSON[_0xa18c('0x11')](_0x225ffd));if(_0x225ffd['error']){if(_0x225ffd[_0xa18c('0x12')][_0xa18c('0x13')]===0x1f4){logger['error'](_0xa18c('0xe'),_0x5001a6,_0x225ffd[_0xa18c('0x12')][_0xa18c('0x14')]);return _0x2c18b8(_0x225ffd[_0xa18c('0x12')][_0xa18c('0x14')]);}logger[_0xa18c('0x12')](_0xa18c('0xe'),_0x5001a6,_0x225ffd['error'][_0xa18c('0x14')]);return _0x3d3cd8(_0x225ffd['error'][_0xa18c('0x14')]);}else{logger[_0xa18c('0xd')]('FaxQueueReport,\x20%s,\x20%s',_0x5001a6,_0xa18c('0xf'));_0x3d3cd8(_0x225ffd[_0xa18c('0x15')]['message']);}})[_0xa18c('0x16')](function(_0x211d9b){logger[_0xa18c('0x12')](_0xa18c('0xe'),_0x5001a6,_0x211d9b);_0x2c18b8(_0x211d9b);});});}exports[_0xa18c('0x17')]=function(_0x1ef1df){var _0x4b716c=this;return new Promise(function(_0xe5c81e,_0x4c9e06){return db[_0xa18c('0x18')][_0xa18c('0x19')](_0x1ef1df['body'],{'raw':_0x1ef1df[_0xa18c('0x1a')]?_0x1ef1df[_0xa18c('0x1a')][_0xa18c('0x1b')]===undefined?!![]:![]:!![]})[_0xa18c('0xc')](function(_0x47d58a){logger[_0xa18c('0xd')](_0xa18c('0x17'),_0x1ef1df);logger[_0xa18c('0x10')](_0xa18c('0x17'),_0x1ef1df,JSON[_0xa18c('0x11')](_0x47d58a));_0xe5c81e(_0x47d58a);})[_0xa18c('0x16')](function(_0x5350b9){logger[_0xa18c('0x12')](_0xa18c('0x17'),_0x5350b9['message'],_0x1ef1df);_0x4c9e06(_0x4b716c['error'](0x1f4,_0x5350b9['message']));});});};exports[_0xa18c('0x1c')]=function(_0x4befd5){var _0x5470ca=this;return new Promise(function(_0x1b44e0,_0x46500e){return db[_0xa18c('0x18')][_0xa18c('0x1d')](_0x4befd5[_0xa18c('0x1e')],{'raw':_0x4befd5[_0xa18c('0x1a')]?_0x4befd5[_0xa18c('0x1a')][_0xa18c('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4befd5[_0xa18c('0x1a')]?_0x4befd5[_0xa18c('0x1a')][_0xa18c('0x1f')]||null:null,'attributes':_0x4befd5['options']?_0x4befd5['options'][_0xa18c('0x20')]||null:null,'limit':_0x4befd5['options']?_0x4befd5[_0xa18c('0x1a')][_0xa18c('0x21')]||null:null})[_0xa18c('0xc')](function(_0x87a70b){logger[_0xa18c('0xd')](_0xa18c('0x1c'),_0x4befd5);logger[_0xa18c('0x10')](_0xa18c('0x1c'),_0x4befd5,JSON[_0xa18c('0x11')](_0x87a70b));_0x1b44e0(_0x87a70b);})[_0xa18c('0x16')](function(_0x505d02){logger[_0xa18c('0x12')](_0xa18c('0x1c'),_0x505d02['message'],_0x4befd5);_0x46500e(_0x5470ca[_0xa18c('0x12')](0x1f4,_0x505d02[_0xa18c('0x14')]));});});};
\ No newline at end of file
index d38f939..a45cd16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda77=['util','path','connect-timeout','express','fs-extra','./faxQueueReport.controller','index','get','/describe','isAuthenticated','/:id','show','put','update','destroy','multer'];(function(_0x1b62b8,_0x3e78d9){var _0x47a5a0=function(_0x479a5b){while(--_0x479a5b){_0x1b62b8['push'](_0x1b62b8['shift']());}};_0x47a5a0(++_0x3e78d9);}(_0xda77,0x19f));var _0x7da7=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xda77[_0x263a74];return _0x2aa86c;};'use strict';var multer=require(_0x7da7('0x0'));var util=require(_0x7da7('0x1'));var path=require(_0x7da7('0x2'));var timeout=require(_0x7da7('0x3'));var express=require(_0x7da7('0x4'));var router=express['Router']();var fs_extra=require(_0x7da7('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7da7('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7da7('0x7')]);router[_0x7da7('0x8')](_0x7da7('0x9'),auth[_0x7da7('0xa')](),controller['describe']);router['get'](_0x7da7('0xb'),auth[_0x7da7('0xa')](),controller[_0x7da7('0xc')]);router['post']('/',auth[_0x7da7('0xa')](),controller['create']);router[_0x7da7('0xd')](_0x7da7('0xb'),auth[_0x7da7('0xa')](),controller[_0x7da7('0xe')]);router['delete'](_0x7da7('0xb'),auth[_0x7da7('0xa')](),controller[_0x7da7('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xd6cc=['show','post','create','update','delete','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','describe','/:id'];(function(_0xce3465,_0x2299f7){var _0x329e9e=function(_0x2eb64e){while(--_0x2eb64e){_0xce3465['push'](_0xce3465['shift']());}};_0x329e9e(++_0x2299f7);}(_0xd6cc,0x18c));var _0xcd6c=function(_0x72bb0a,_0x25fd1c){_0x72bb0a=_0x72bb0a-0x0;var _0xf67a70=_0xd6cc[_0x72bb0a];return _0xf67a70;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xcd6c('0x0'));var express=require(_0xcd6c('0x1'));var router=express[_0xcd6c('0x2')]();var fs_extra=require(_0xcd6c('0x3'));var auth=require(_0xcd6c('0x4'));var interaction=require(_0xcd6c('0x5'));var config=require(_0xcd6c('0x6'));var controller=require(_0xcd6c('0x7'));router[_0xcd6c('0x8')]('/',auth[_0xcd6c('0x9')](),controller['index']);router[_0xcd6c('0x8')]('/describe',auth[_0xcd6c('0x9')](),controller[_0xcd6c('0xa')]);router['get'](_0xcd6c('0xb'),auth[_0xcd6c('0x9')](),controller[_0xcd6c('0xc')]);router[_0xcd6c('0xd')]('/',auth[_0xcd6c('0x9')](),controller[_0xcd6c('0xe')]);router['put'](_0xcd6c('0xb'),auth[_0xcd6c('0x9')](),controller[_0xcd6c('0xf')]);router[_0xcd6c('0x10')](_0xcd6c('0xb'),auth[_0xcd6c('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 76d7401..aa804fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x2899e4,_0x45a511){var _0x11d791=function(_0x53c8a2){while(--_0x53c8a2){_0x2899e4['push'](_0x2899e4['shift']());}};_0x11d791(++_0x45a511);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x4dd479,_0x26d87a){var _0x1b6807=function(_0x2bec19){while(--_0x2bec19){_0x4dd479['push'](_0x4dd479['shift']());}};_0x1b6807(++_0x26d87a);}(_0xb43b,0x1b2));var _0xbb43=function(_0x33811a,_0x2d0469){_0x33811a=_0x33811a-0x0;var _0x283270=_0xb43b[_0x33811a];return _0x283270;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index b52ed53..fe01def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67e2=['error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','order','sort','where','pick','filter','VIRTUAL','merge','findAll','rows','catch','show','FaxTransferReport','length','include','options','find','then','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','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/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','apply','update','destroy','end','sendStatus'];(function(_0x324eb8,_0x38e919){var _0x337a40=function(_0x283393){while(--_0x283393){_0x324eb8['push'](_0x324eb8['shift']());}};_0x337a40(++_0x38e919);}(_0x67e2,0xc3));var _0x267e=function(_0x4cea3c,_0x407da8){_0x4cea3c=_0x4cea3c-0x0;var _0x32c9bb=_0x67e2[_0x4cea3c];return _0x32c9bb;};'use strict';var emlformat=require(_0x267e('0x0'));var rimraf=require(_0x267e('0x1'));var zipdir=require(_0x267e('0x2'));var jsonpatch=require(_0x267e('0x3'));var rp=require(_0x267e('0x4'));var moment=require(_0x267e('0x5'));var BPromise=require(_0x267e('0x6'));var Mustache=require(_0x267e('0x7'));var util=require(_0x267e('0x8'));var path=require(_0x267e('0x9'));var sox=require(_0x267e('0xa'));var csv=require(_0x267e('0xb'));var ejs=require(_0x267e('0xc'));var fs=require('fs');var fs_extra=require(_0x267e('0xd'));var _=require(_0x267e('0xe'));var squel=require('squel');var crypto=require(_0x267e('0xf'));var jsforce=require(_0x267e('0x10'));var deskjs=require(_0x267e('0x11'));var toCsv=require(_0x267e('0xb'));var querystring=require(_0x267e('0x12'));var Papa=require(_0x267e('0x13'));var Redis=require(_0x267e('0x14'));var authService=require(_0x267e('0x15'));var qs=require(_0x267e('0x16'));var as=require(_0x267e('0x17'));var hardwareService=require(_0x267e('0x18'));var logger=require(_0x267e('0x19'))(_0x267e('0x1a'));var utils=require(_0x267e('0x1b'));var config=require(_0x267e('0x1c'));var licenseUtil=require(_0x267e('0x1d'));var db=require(_0x267e('0x1e'))['db'];function respondWithStatusCode(_0x4f3102,_0x10c34f){_0x10c34f=_0x10c34f||0xcc;return function(_0x1b675f){if(_0x1b675f){return _0x4f3102['sendStatus'](_0x10c34f);}return _0x4f3102[_0x267e('0x1f')](_0x10c34f)['end']();};}function respondWithResult(_0x657dcd,_0x56dbe7){_0x56dbe7=_0x56dbe7||0xc8;return function(_0x43e604){if(_0x43e604){return _0x657dcd[_0x267e('0x1f')](_0x56dbe7)['json'](_0x43e604);}};}function respondWithFilteredResult(_0x45736d,_0x236212){return function(_0x204127){if(_0x204127){var _0x3f0f5f=typeof _0x236212[_0x267e('0x20')]===_0x267e('0x21')&&typeof _0x236212[_0x267e('0x22')]===_0x267e('0x21');var _0x4bb19e=_0x204127[_0x267e('0x23')];var _0x208270=_0x3f0f5f?0x0:_0x236212[_0x267e('0x20')];var _0x5696de=_0x3f0f5f?_0x204127[_0x267e('0x23')]:_0x236212['offset']+_0x236212['limit'];var _0x4f5b82;if(_0x5696de>=_0x4bb19e){_0x5696de=_0x4bb19e;_0x4f5b82=0xc8;}else{_0x4f5b82=0xce;}_0x45736d[_0x267e('0x1f')](_0x4f5b82);return _0x45736d[_0x267e('0x24')]('Content-Range',_0x208270+'-'+_0x5696de+'/'+_0x4bb19e)['json'](_0x204127);}return null;};}function patchUpdates(_0x3e7749){return function(_0x58e242){try{jsonpatch[_0x267e('0x25')](_0x58e242,_0x3e7749,!![]);}catch(_0x2bce7b){return BPromise['reject'](_0x2bce7b);}return _0x58e242['save']();};}function saveUpdates(_0x256890,_0x47aede){return function(_0x2a12f4){if(_0x2a12f4){return _0x2a12f4[_0x267e('0x26')](_0x256890)['then'](function(_0x27d69c){return _0x27d69c;});}return null;};}function removeEntity(_0x1bd7c6,_0x3f01aa){return function(_0x547a46){if(_0x547a46){return _0x547a46[_0x267e('0x27')]()['then'](function(){_0x1bd7c6['status'](0xcc)[_0x267e('0x28')]();});}};}function handleEntityNotFound(_0x521f95,_0x2fd744){return function(_0x34c3ba){if(!_0x34c3ba){_0x521f95[_0x267e('0x29')](0x194);}return _0x34c3ba;};}function handleError(_0x5db037,_0x2a2e20){_0x2a2e20=_0x2a2e20||0x1f4;return function(_0x5ec0c0){logger[_0x267e('0x2a')](_0x5ec0c0[_0x267e('0x2b')]);if(_0x5ec0c0['name']){delete _0x5ec0c0[_0x267e('0x2c')];}_0x5db037['status'](_0x2a2e20)['send'](_0x5ec0c0);};}exports[_0x267e('0x2d')]=function(_0x18e373,_0x2d2bb5){var _0x5b3ef6={},_0x4f4cc8={},_0x4efe21={'count':0x0,'rows':[]};var _0x13e716=_[_0x267e('0x2e')](db['FaxTransferReport'][_0x267e('0x2f')],function(_0x543c74){return{'name':_0x543c74[_0x267e('0x30')],'type':_0x543c74[_0x267e('0x31')][_0x267e('0x32')]};});_0x4f4cc8[_0x267e('0x33')]=_[_0x267e('0x2e')](_0x13e716,_0x267e('0x2c'));_0x4f4cc8[_0x267e('0x34')]=_[_0x267e('0x35')](_0x18e373['query']);_0x4f4cc8[_0x267e('0x36')]=_['intersection'](_0x4f4cc8[_0x267e('0x33')],_0x4f4cc8['query']);_0x5b3ef6[_0x267e('0x37')]=_[_0x267e('0x38')](_0x4f4cc8['model'],qs[_0x267e('0x39')](_0x18e373[_0x267e('0x34')]['fields']));_0x5b3ef6[_0x267e('0x37')]=_0x5b3ef6[_0x267e('0x37')]['length']?_0x5b3ef6[_0x267e('0x37')]:_0x4f4cc8[_0x267e('0x33')];if(!_0x18e373[_0x267e('0x34')]['hasOwnProperty']('nolimit')){_0x5b3ef6['limit']=qs['limit'](_0x18e373[_0x267e('0x34')][_0x267e('0x22')]);_0x5b3ef6['offset']=qs['offset'](_0x18e373[_0x267e('0x34')][_0x267e('0x20')]);}_0x5b3ef6[_0x267e('0x3a')]=qs[_0x267e('0x3b')](_0x18e373['query'][_0x267e('0x3b')]);_0x5b3ef6[_0x267e('0x3c')]=qs[_0x267e('0x36')](_[_0x267e('0x3d')](_0x18e373[_0x267e('0x34')],_0x4f4cc8[_0x267e('0x36')]),_0x13e716);if(_0x18e373[_0x267e('0x34')][_0x267e('0x3e')]){_0x5b3ef6[_0x267e('0x3c')]=_['merge'](_0x5b3ef6['where'],{'$or':_[_0x267e('0x2e')](_0x13e716,function(_0x48d6a4){if(_0x48d6a4[_0x267e('0x31')]!==_0x267e('0x3f')){var _0x44b192={};_0x44b192[_0x48d6a4[_0x267e('0x2c')]]={'$like':'%'+_0x18e373['query'][_0x267e('0x3e')]+'%'};return _0x44b192;}})});}_0x5b3ef6=_[_0x267e('0x40')]({},_0x5b3ef6,_0x18e373['options']);var _0x5a3301={'where':_0x5b3ef6[_0x267e('0x3c')]};return db['FaxTransferReport']['count'](_0x5a3301)['then'](function(_0x102faa){_0x4efe21[_0x267e('0x23')]=_0x102faa;if(_0x18e373[_0x267e('0x34')]['includeAll']){_0x5b3ef6['include']=[{'all':!![]}];}return db['FaxTransferReport'][_0x267e('0x41')](_0x5b3ef6);})['then'](function(_0x3478a5){_0x4efe21[_0x267e('0x42')]=_0x3478a5;return _0x4efe21;})['then'](respondWithFilteredResult(_0x2d2bb5,_0x5b3ef6))[_0x267e('0x43')](handleError(_0x2d2bb5,null));};exports[_0x267e('0x44')]=function(_0x48943e,_0x36cf52){var _0x1236bb={'raw':!![],'where':{'id':_0x48943e['params']['id']}},_0x4accf5={};_0x4accf5[_0x267e('0x33')]=_['keys'](db[_0x267e('0x45')][_0x267e('0x2f')]);_0x4accf5[_0x267e('0x34')]=_[_0x267e('0x35')](_0x48943e[_0x267e('0x34')]);_0x4accf5[_0x267e('0x36')]=_[_0x267e('0x38')](_0x4accf5[_0x267e('0x33')],_0x4accf5['query']);_0x1236bb[_0x267e('0x37')]=_[_0x267e('0x38')](_0x4accf5[_0x267e('0x33')],qs[_0x267e('0x39')](_0x48943e[_0x267e('0x34')][_0x267e('0x39')]));_0x1236bb[_0x267e('0x37')]=_0x1236bb[_0x267e('0x37')][_0x267e('0x46')]?_0x1236bb['attributes']:_0x4accf5[_0x267e('0x33')];if(_0x48943e[_0x267e('0x34')]['includeAll']){_0x1236bb[_0x267e('0x47')]=[{'all':!![]}];}_0x1236bb=_['merge']({},_0x1236bb,_0x48943e[_0x267e('0x48')]);return db[_0x267e('0x45')][_0x267e('0x49')](_0x1236bb)[_0x267e('0x4a')](handleEntityNotFound(_0x36cf52,null))['then'](respondWithResult(_0x36cf52,null))[_0x267e('0x43')](handleError(_0x36cf52,null));};exports[_0x267e('0x4b')]=function(_0x2c4add,_0x159cff){return db['FaxTransferReport'][_0x267e('0x4b')](_0x2c4add[_0x267e('0x4c')],{})[_0x267e('0x4a')](respondWithResult(_0x159cff,0xc9))[_0x267e('0x43')](handleError(_0x159cff,null));};exports[_0x267e('0x26')]=function(_0x1d710c,_0x32e44f){if(_0x1d710c[_0x267e('0x4c')]['id']){delete _0x1d710c[_0x267e('0x4c')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x1d710c[_0x267e('0x4d')]['id']}})[_0x267e('0x4a')](handleEntityNotFound(_0x32e44f,null))[_0x267e('0x4a')](saveUpdates(_0x1d710c[_0x267e('0x4c')],null))['then'](respondWithResult(_0x32e44f,null))[_0x267e('0x43')](handleError(_0x32e44f,null));};exports[_0x267e('0x27')]=function(_0x191c39,_0x4cbe7d){return db[_0x267e('0x45')][_0x267e('0x49')]({'where':{'id':_0x191c39[_0x267e('0x4d')]['id']}})[_0x267e('0x4a')](handleEntityNotFound(_0x4cbe7d,null))[_0x267e('0x4a')](removeEntity(_0x4cbe7d,null))['catch'](handleError(_0x4cbe7d,null));};exports[_0x267e('0x4e')]=function(_0x1092c8,_0x53dcd8){return db[_0x267e('0x45')][_0x267e('0x4e')]()[_0x267e('0x4a')](respondWithResult(_0x53dcd8,null))[_0x267e('0x43')](handleError(_0x53dcd8,null));};
\ No newline at end of file
+var _0x08cf=['VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','to-csv','ejs','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','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','destroy','then','error','stack','name','map','FaxTransferReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','nolimit','limit','sort','where','pick','filter','merge'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x08cf,0x1d0));var _0xf08c=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x08cf[_0x422905];return _0x33dc6c;};'use strict';var emlformat=require(_0xf08c('0x0'));var rimraf=require(_0xf08c('0x1'));var zipdir=require(_0xf08c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf08c('0x3'));var moment=require('moment');var BPromise=require(_0xf08c('0x4'));var Mustache=require(_0xf08c('0x5'));var util=require('util');var path=require(_0xf08c('0x6'));var sox=require('sox');var csv=require(_0xf08c('0x7'));var ejs=require(_0xf08c('0x8'));var fs=require('fs');var fs_extra=require(_0xf08c('0x9'));var _=require(_0xf08c('0xa'));var squel=require(_0xf08c('0xb'));var crypto=require(_0xf08c('0xc'));var jsforce=require(_0xf08c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf08c('0x7'));var querystring=require(_0xf08c('0xe'));var Papa=require(_0xf08c('0xf'));var Redis=require(_0xf08c('0x10'));var authService=require(_0xf08c('0x11'));var qs=require(_0xf08c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf08c('0x13'));var logger=require(_0xf08c('0x14'))(_0xf08c('0x15'));var utils=require(_0xf08c('0x16'));var config=require(_0xf08c('0x17'));var licenseUtil=require(_0xf08c('0x18'));var db=require(_0xf08c('0x19'))['db'];function respondWithStatusCode(_0x389039,_0x3f0f1d){_0x3f0f1d=_0x3f0f1d||0xcc;return function(_0x5cc6f2){if(_0x5cc6f2){return _0x389039[_0xf08c('0x1a')](_0x3f0f1d);}return _0x389039[_0xf08c('0x1b')](_0x3f0f1d)[_0xf08c('0x1c')]();};}function respondWithResult(_0x141702,_0x5bb3da){_0x5bb3da=_0x5bb3da||0xc8;return function(_0x2f58c6){if(_0x2f58c6){return _0x141702[_0xf08c('0x1b')](_0x5bb3da)[_0xf08c('0x1d')](_0x2f58c6);}};}function respondWithFilteredResult(_0x394718,_0x3060c4){return function(_0x5b28d0){if(_0x5b28d0){var _0x1a99e5=typeof _0x3060c4['offset']===_0xf08c('0x1e')&&typeof _0x3060c4['limit']==='undefined';var _0x344b09=_0x5b28d0[_0xf08c('0x1f')];var _0x568ca3=_0x1a99e5?0x0:_0x3060c4[_0xf08c('0x20')];var _0x2b1069=_0x1a99e5?_0x5b28d0[_0xf08c('0x1f')]:_0x3060c4['offset']+_0x3060c4['limit'];var _0x41c53e;if(_0x2b1069>=_0x344b09){_0x2b1069=_0x344b09;_0x41c53e=0xc8;}else{_0x41c53e=0xce;}_0x394718[_0xf08c('0x1b')](_0x41c53e);return _0x394718[_0xf08c('0x21')](_0xf08c('0x22'),_0x568ca3+'-'+_0x2b1069+'/'+_0x344b09)['json'](_0x5b28d0);}return null;};}function patchUpdates(_0x4812dc){return function(_0x4d34f9){try{jsonpatch['apply'](_0x4d34f9,_0x4812dc,!![]);}catch(_0x41cfe5){return BPromise[_0xf08c('0x23')](_0x41cfe5);}return _0x4d34f9[_0xf08c('0x24')]();};}function saveUpdates(_0x540d30,_0x4eae32){return function(_0x5170de){if(_0x5170de){return _0x5170de[_0xf08c('0x25')](_0x540d30)['then'](function(_0x29b940){return _0x29b940;});}return null;};}function removeEntity(_0x5131f1,_0x5d522f){return function(_0x349a40){if(_0x349a40){return _0x349a40[_0xf08c('0x26')]()[_0xf08c('0x27')](function(){_0x5131f1[_0xf08c('0x1b')](0xcc)[_0xf08c('0x1c')]();});}};}function handleEntityNotFound(_0x4247bd,_0xd4706a){return function(_0x2dd91d){if(!_0x2dd91d){_0x4247bd[_0xf08c('0x1a')](0x194);}return _0x2dd91d;};}function handleError(_0xdf67c7,_0x26ee2a){_0x26ee2a=_0x26ee2a||0x1f4;return function(_0x33be9b){logger[_0xf08c('0x28')](_0x33be9b[_0xf08c('0x29')]);if(_0x33be9b[_0xf08c('0x2a')]){delete _0x33be9b['name'];}_0xdf67c7[_0xf08c('0x1b')](_0x26ee2a)['send'](_0x33be9b);};}exports['index']=function(_0x2a0e56,_0x25c479){var _0x2a1b1c={},_0x1486fe={},_0x567fdc={'count':0x0,'rows':[]};var _0x31c7d2=_[_0xf08c('0x2b')](db[_0xf08c('0x2c')][_0xf08c('0x2d')],function(_0xb1d8a8){return{'name':_0xb1d8a8[_0xf08c('0x2e')],'type':_0xb1d8a8['type'][_0xf08c('0x2f')]};});_0x1486fe[_0xf08c('0x30')]=_[_0xf08c('0x2b')](_0x31c7d2,_0xf08c('0x2a'));_0x1486fe[_0xf08c('0x31')]=_[_0xf08c('0x32')](_0x2a0e56[_0xf08c('0x31')]);_0x1486fe[_0xf08c('0x33')]=_[_0xf08c('0x34')](_0x1486fe[_0xf08c('0x30')],_0x1486fe[_0xf08c('0x31')]);_0x2a1b1c[_0xf08c('0x35')]=_['intersection'](_0x1486fe[_0xf08c('0x30')],qs['fields'](_0x2a0e56['query']['fields']));_0x2a1b1c[_0xf08c('0x35')]=_0x2a1b1c[_0xf08c('0x35')]['length']?_0x2a1b1c[_0xf08c('0x35')]:_0x1486fe[_0xf08c('0x30')];if(!_0x2a0e56[_0xf08c('0x31')]['hasOwnProperty'](_0xf08c('0x36'))){_0x2a1b1c[_0xf08c('0x37')]=qs[_0xf08c('0x37')](_0x2a0e56['query'][_0xf08c('0x37')]);_0x2a1b1c[_0xf08c('0x20')]=qs['offset'](_0x2a0e56[_0xf08c('0x31')][_0xf08c('0x20')]);}_0x2a1b1c['order']=qs[_0xf08c('0x38')](_0x2a0e56['query']['sort']);_0x2a1b1c[_0xf08c('0x39')]=qs[_0xf08c('0x33')](_[_0xf08c('0x3a')](_0x2a0e56[_0xf08c('0x31')],_0x1486fe[_0xf08c('0x33')]),_0x31c7d2);if(_0x2a0e56[_0xf08c('0x31')][_0xf08c('0x3b')]){_0x2a1b1c['where']=_[_0xf08c('0x3c')](_0x2a1b1c['where'],{'$or':_[_0xf08c('0x2b')](_0x31c7d2,function(_0x2cea52){if(_0x2cea52['type']!==_0xf08c('0x3d')){var _0x16b424={};_0x16b424[_0x2cea52[_0xf08c('0x2a')]]={'$like':'%'+_0x2a0e56[_0xf08c('0x31')][_0xf08c('0x3b')]+'%'};return _0x16b424;}})});}_0x2a1b1c=_['merge']({},_0x2a1b1c,_0x2a0e56['options']);var _0x143100={'where':_0x2a1b1c[_0xf08c('0x39')]};return db[_0xf08c('0x2c')][_0xf08c('0x1f')](_0x143100)[_0xf08c('0x27')](function(_0x4ac2a4){_0x567fdc[_0xf08c('0x1f')]=_0x4ac2a4;if(_0x2a0e56[_0xf08c('0x31')][_0xf08c('0x3e')]){_0x2a1b1c[_0xf08c('0x3f')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xf08c('0x40')](_0x2a1b1c);})['then'](function(_0x4ad4bc){_0x567fdc[_0xf08c('0x41')]=_0x4ad4bc;return _0x567fdc;})[_0xf08c('0x27')](respondWithFilteredResult(_0x25c479,_0x2a1b1c))[_0xf08c('0x42')](handleError(_0x25c479,null));};exports[_0xf08c('0x43')]=function(_0x4c4e56,_0x57f4da){var _0x5a32db={'raw':!![],'where':{'id':_0x4c4e56[_0xf08c('0x44')]['id']}},_0x36f9c6={};_0x36f9c6['model']=_['keys'](db[_0xf08c('0x2c')]['rawAttributes']);_0x36f9c6[_0xf08c('0x31')]=_['keys'](_0x4c4e56[_0xf08c('0x31')]);_0x36f9c6[_0xf08c('0x33')]=_[_0xf08c('0x34')](_0x36f9c6[_0xf08c('0x30')],_0x36f9c6[_0xf08c('0x31')]);_0x5a32db[_0xf08c('0x35')]=_[_0xf08c('0x34')](_0x36f9c6[_0xf08c('0x30')],qs[_0xf08c('0x45')](_0x4c4e56[_0xf08c('0x31')][_0xf08c('0x45')]));_0x5a32db[_0xf08c('0x35')]=_0x5a32db[_0xf08c('0x35')][_0xf08c('0x46')]?_0x5a32db[_0xf08c('0x35')]:_0x36f9c6[_0xf08c('0x30')];if(_0x4c4e56[_0xf08c('0x31')]['includeAll']){_0x5a32db['include']=[{'all':!![]}];}_0x5a32db=_[_0xf08c('0x3c')]({},_0x5a32db,_0x4c4e56['options']);return db[_0xf08c('0x2c')][_0xf08c('0x47')](_0x5a32db)['then'](handleEntityNotFound(_0x57f4da,null))['then'](respondWithResult(_0x57f4da,null))['catch'](handleError(_0x57f4da,null));};exports[_0xf08c('0x48')]=function(_0xbc6de3,_0x4f3ea3){return db['FaxTransferReport'][_0xf08c('0x48')](_0xbc6de3[_0xf08c('0x49')],{})[_0xf08c('0x27')](respondWithResult(_0x4f3ea3,0xc9))['catch'](handleError(_0x4f3ea3,null));};exports[_0xf08c('0x25')]=function(_0x18cb07,_0x1aa242){if(_0x18cb07[_0xf08c('0x49')]['id']){delete _0x18cb07[_0xf08c('0x49')]['id'];}return db['FaxTransferReport'][_0xf08c('0x47')]({'where':{'id':_0x18cb07[_0xf08c('0x44')]['id']}})[_0xf08c('0x27')](handleEntityNotFound(_0x1aa242,null))[_0xf08c('0x27')](saveUpdates(_0x18cb07[_0xf08c('0x49')],null))[_0xf08c('0x27')](respondWithResult(_0x1aa242,null))[_0xf08c('0x42')](handleError(_0x1aa242,null));};exports[_0xf08c('0x26')]=function(_0x47a91a,_0x3a6f66){return db[_0xf08c('0x2c')]['find']({'where':{'id':_0x47a91a[_0xf08c('0x44')]['id']}})[_0xf08c('0x27')](handleEntityNotFound(_0x3a6f66,null))[_0xf08c('0x27')](removeEntity(_0x3a6f66,null))[_0xf08c('0x42')](handleError(_0x3a6f66,null));};exports[_0xf08c('0x4a')]=function(_0x343109,_0x3238d3){return db[_0xf08c('0x2c')][_0xf08c('0x4a')]()[_0xf08c('0x27')](respondWithResult(_0x3238d3,null))[_0xf08c('0x42')](handleError(_0x3238d3,null));};
\ No newline at end of file
index cc95a0a..31ae0ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c2=['api','request-promise','path','rimraf','exports','report_fax_transfer','uniqueid','lodash','util','../../config/logger'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x61c2,0x11f));var _0x261c=function(_0x453cab,_0x101992){_0x453cab=_0x453cab-0x0;var _0x5dba36=_0x61c2[_0x453cab];return _0x5dba36;};'use strict';var _=require(_0x261c('0x0'));var util=require(_0x261c('0x1'));var logger=require(_0x261c('0x2'))(_0x261c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x261c('0x4'));var fs=require('fs');var path=require(_0x261c('0x5'));var rimraf=require(_0x261c('0x6'));var config=require('../../config/environment');var attributes=require('./faxTransferReport.attributes');module[_0x261c('0x7')]=function(_0x5e5c91,_0x2f0551){return _0x5e5c91['define']('FaxTransferReport',attributes,{'tableName':_0x261c('0x8'),'paranoid':![],'indexes':[{'name':_0x261c('0x9'),'fields':[_0x261c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5333=['util','api','moment','bluebird','request-promise','path','rimraf','./faxTransferReport.attributes','FaxTransferReport','report_fax_transfer','uniqueid'];(function(_0x926d4b,_0x4efaa7){var _0x14b207=function(_0x26e9d3){while(--_0x26e9d3){_0x926d4b['push'](_0x926d4b['shift']());}};_0x14b207(++_0x4efaa7);}(_0x5333,0x1ef));var _0x3533=function(_0x103e88,_0x5de603){_0x103e88=_0x103e88-0x0;var _0x3262ee=_0x5333[_0x103e88];return _0x3262ee;};'use strict';var _=require('lodash');var util=require(_0x3533('0x0'));var logger=require('../../config/logger')(_0x3533('0x1'));var moment=require(_0x3533('0x2'));var BPromise=require(_0x3533('0x3'));var rp=require(_0x3533('0x4'));var fs=require('fs');var path=require(_0x3533('0x5'));var rimraf=require(_0x3533('0x6'));var config=require('../../config/environment');var attributes=require(_0x3533('0x7'));module['exports']=function(_0x39ee8e,_0x4c9efc){return _0x39ee8e['define'](_0x3533('0x8'),attributes,{'tableName':_0x3533('0x9'),'paranoid':![],'indexes':[{'name':_0x3533('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1ed4dcc..7e83163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x387a=['bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x387a,0x10b));var _0xa387=function(_0x38080d,_0x4c6217){_0x38080d=_0x38080d-0x0;var _0x25af29=_0x387a[_0x38080d];return _0x25af29;};'use strict';var _=require(_0xa387('0x0'));var util=require(_0xa387('0x1'));var moment=require(_0xa387('0x2'));var BPromise=require(_0xa387('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa387('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa387('0x5'))('rpc');var config=require(_0xa387('0x6'));var jayson=require(_0xa387('0x7'));var client=jayson[_0xa387('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52b253,_0x18dfbc,_0x4bc861){return new BPromise(function(_0x1c4a10,_0x17b155){return client['request'](_0x52b253,_0x4bc861)[_0xa387('0x9')](function(_0xe1549f){logger[_0xa387('0xa')](_0xa387('0xb'),_0x18dfbc,_0xa387('0xc'));logger['debug'](_0xa387('0xd'),_0x18dfbc,_0xa387('0xc'),JSON['stringify'](_0xe1549f));if(_0xe1549f[_0xa387('0xe')]){if(_0xe1549f[_0xa387('0xe')]['code']===0x1f4){logger[_0xa387('0xe')](_0xa387('0xb'),_0x18dfbc,_0xe1549f[_0xa387('0xe')]['message']);return _0x17b155(_0xe1549f[_0xa387('0xe')]['message']);}logger[_0xa387('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x18dfbc,_0xe1549f[_0xa387('0xe')][_0xa387('0xf')]);return _0x1c4a10(_0xe1549f[_0xa387('0xe')][_0xa387('0xf')]);}else{logger[_0xa387('0xa')]('FaxTransferReport,\x20%s,\x20%s',_0x18dfbc,_0xa387('0xc'));_0x1c4a10(_0xe1549f[_0xa387('0x10')]['message']);}})[_0xa387('0x11')](function(_0x43653e){logger[_0xa387('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x18dfbc,_0x43653e);_0x17b155(_0x43653e);});});}
\ No newline at end of file
+var _0xe317=['then','info','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','FaxTransferReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x19a17b,_0x5ae2cf){var _0x3ab04e=function(_0x58e110){while(--_0x58e110){_0x19a17b['push'](_0x19a17b['shift']());}};_0x3ab04e(++_0x5ae2cf);}(_0xe317,0x164));var _0x7e31=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xe317[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var util=require(_0x7e31('0x0'));var moment=require(_0x7e31('0x1'));var BPromise=require(_0x7e31('0x2'));var rs=require(_0x7e31('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7e31('0x4'))['db'];var utils=require(_0x7e31('0x5'));var logger=require(_0x7e31('0x6'))(_0x7e31('0x7'));var config=require('../../config/environment');var jayson=require(_0x7e31('0x8'));var client=jayson[_0x7e31('0x9')][_0x7e31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c7250,_0x447f99,_0x1fe36b){return new BPromise(function(_0x27bbed,_0x22a43f){return client[_0x7e31('0xb')](_0x3c7250,_0x1fe36b)[_0x7e31('0xc')](function(_0x48687a){logger[_0x7e31('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x447f99,_0x7e31('0xe'));logger[_0x7e31('0xf')](_0x7e31('0x10'),_0x447f99,_0x7e31('0xe'),JSON[_0x7e31('0x11')](_0x48687a));if(_0x48687a[_0x7e31('0x12')]){if(_0x48687a[_0x7e31('0x12')]['code']===0x1f4){logger[_0x7e31('0x12')](_0x7e31('0x13'),_0x447f99,_0x48687a[_0x7e31('0x12')][_0x7e31('0x14')]);return _0x22a43f(_0x48687a[_0x7e31('0x12')]['message']);}logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x447f99,_0x48687a[_0x7e31('0x12')][_0x7e31('0x14')]);return _0x27bbed(_0x48687a[_0x7e31('0x12')][_0x7e31('0x14')]);}else{logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x447f99,'request\x20sent');_0x27bbed(_0x48687a[_0x7e31('0x15')]['message']);}})[_0x7e31('0x16')](function(_0x448ef8){logger['error'](_0x7e31('0x13'),_0x447f99,_0x448ef8);_0x22a43f(_0x448ef8);});});}
\ No newline at end of file
index 6ad6ba7..9cce616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f15=['index','/describe','show','post','create','put','/:id','delete','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated'];(function(_0x13c70c,_0x546b34){var _0x50f0f2=function(_0x2a2991){while(--_0x2a2991){_0x13c70c['push'](_0x13c70c['shift']());}};_0x50f0f2(++_0x546b34);}(_0x2f15,0x1e4));var _0x52f1=function(_0x1230b9,_0xc27ede){_0x1230b9=_0x1230b9-0x0;var _0x34ebec=_0x2f15[_0x1230b9];return _0x34ebec;};'use strict';var multer=require('multer');var util=require(_0x52f1('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x52f1('0x1'));var router=express[_0x52f1('0x2')]();var fs_extra=require(_0x52f1('0x3'));var auth=require(_0x52f1('0x4'));var interaction=require(_0x52f1('0x5'));var config=require(_0x52f1('0x6'));var controller=require(_0x52f1('0x7'));router[_0x52f1('0x8')]('/',auth[_0x52f1('0x9')](),controller[_0x52f1('0xa')]);router[_0x52f1('0x8')](_0x52f1('0xb'),auth[_0x52f1('0x9')](),controller['describe']);router[_0x52f1('0x8')]('/:id',auth[_0x52f1('0x9')](),controller[_0x52f1('0xc')]);router[_0x52f1('0xd')]('/',auth['isAuthenticated'](),controller[_0x52f1('0xe')]);router[_0x52f1('0xf')](_0x52f1('0x10'),auth[_0x52f1('0x9')](),controller['update']);router[_0x52f1('0x11')](_0x52f1('0x10'),auth[_0x52f1('0x9')](),controller[_0x52f1('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x7e40=['Router','../../components/auth/service','../../components/interaction/service','index','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7e40,0x1dc));var _0x07e4=function(_0x2c3f35,_0x57221b){_0x2c3f35=_0x2c3f35-0x0;var _0xf9105e=_0x7e40[_0x2c3f35];return _0xf9105e;};'use strict';var multer=require(_0x07e4('0x0'));var util=require('util');var path=require(_0x07e4('0x1'));var timeout=require(_0x07e4('0x2'));var express=require(_0x07e4('0x3'));var router=express[_0x07e4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x07e4('0x5'));var interaction=require(_0x07e4('0x6'));var config=require('../../config/environment');var controller=require('./faxTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x07e4('0x7')]);router[_0x07e4('0x8')](_0x07e4('0x9'),auth[_0x07e4('0xa')](),controller[_0x07e4('0xb')]);router[_0x07e4('0x8')](_0x07e4('0xc'),auth['isAuthenticated'](),controller[_0x07e4('0xd')]);router[_0x07e4('0xe')]('/',auth[_0x07e4('0xa')](),controller[_0x07e4('0xf')]);router[_0x07e4('0x10')](_0x07e4('0xc'),auth[_0x07e4('0xa')](),controller[_0x07e4('0x11')]);router[_0x07e4('0x12')](_0x07e4('0xc'),auth[_0x07e4('0xa')](),controller[_0x07e4('0x13')]);module['exports']=router;
\ No newline at end of file
index 721d688..06c6e6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cac=['../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','post','addConfiguration','put','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x3f6ae9,_0x250970){var _0x1a3047=function(_0x516ac8){while(--_0x516ac8){_0x3f6ae9['push'](_0x3f6ae9['shift']());}};_0x1a3047(++_0x250970);}(_0x3cac,0x177));var _0xc3ca=function(_0x341fb7,_0x539206){_0x341fb7=_0x341fb7-0x0;var _0x4e1799=_0x3cac[_0x341fb7];return _0x4e1799;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc3ca('0x0'));var timeout=require(_0xc3ca('0x1'));var express=require(_0xc3ca('0x2'));var router=express['Router']();var fs_extra=require(_0xc3ca('0x3'));var auth=require(_0xc3ca('0x4'));var interaction=require(_0xc3ca('0x5'));var config=require(_0xc3ca('0x6'));var controller=require(_0xc3ca('0x7'));router[_0xc3ca('0x8')]('/',auth[_0xc3ca('0x9')](),controller['index']);router[_0xc3ca('0x8')](_0xc3ca('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0xc3ca('0xb'),auth[_0xc3ca('0x9')](),controller[_0xc3ca('0xc')]);router[_0xc3ca('0x8')]('/:id/fields',auth[_0xc3ca('0x9')](),controller['getFields']);router[_0xc3ca('0xd')]('/',auth[_0xc3ca('0x9')](),controller['create']);router[_0xc3ca('0xd')](_0xc3ca('0xb'),auth[_0xc3ca('0x9')](),controller[_0xc3ca('0xe')]);router[_0xc3ca('0xf')]('/:id',auth[_0xc3ca('0x9')](),controller[_0xc3ca('0x10')]);router['delete'](_0xc3ca('0xa'),auth[_0xc3ca('0x9')](),controller[_0xc3ca('0x11')]);module[_0xc3ca('0x12')]=router;
\ No newline at end of file
+var _0x5bcf=['/:id/configurations','addConfiguration','put','update','delete','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','isAuthenticated','get','/:id','show','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x3250a2,_0x32aa66){var _0x2804e7=function(_0x278428){while(--_0x278428){_0x3250a2['push'](_0x3250a2['shift']());}};_0x2804e7(++_0x32aa66);}(_0x5bcf,0x9f));var _0xf5bc=function(_0x4d2ed7,_0x1999e5){_0x4d2ed7=_0x4d2ed7-0x0;var _0x12af27=_0x5bcf[_0x4d2ed7];return _0x12af27;};'use strict';var multer=require(_0xf5bc('0x0'));var util=require('util');var path=require(_0xf5bc('0x1'));var timeout=require('connect-timeout');var express=require(_0xf5bc('0x2'));var router=express[_0xf5bc('0x3')]();var fs_extra=require(_0xf5bc('0x4'));var auth=require(_0xf5bc('0x5'));var interaction=require(_0xf5bc('0x6'));var config=require('../../config/environment');var controller=require(_0xf5bc('0x7'));router['get']('/',auth[_0xf5bc('0x8')](),controller['index']);router[_0xf5bc('0x9')](_0xf5bc('0xa'),auth['isAuthenticated'](),controller[_0xf5bc('0xb')]);router[_0xf5bc('0x9')]('/:id/configurations',auth[_0xf5bc('0x8')](),controller[_0xf5bc('0xc')]);router[_0xf5bc('0x9')](_0xf5bc('0xd'),auth[_0xf5bc('0x8')](),controller[_0xf5bc('0xe')]);router[_0xf5bc('0xf')]('/',auth['isAuthenticated'](),controller[_0xf5bc('0x10')]);router[_0xf5bc('0xf')](_0xf5bc('0x11'),auth[_0xf5bc('0x8')](),controller[_0xf5bc('0x12')]);router[_0xf5bc('0x13')]('/:id',auth[_0xf5bc('0x8')](),controller[_0xf5bc('0x14')]);router[_0xf5bc('0x15')](_0xf5bc('0xa'),auth[_0xf5bc('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ea47c48..d737379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be3=['STRING','basic','ENUM','integrationTab','newTab','sequelize','exports'];(function(_0x5f0a1a,_0x32c021){var _0x1fa80b=function(_0x258136){while(--_0x258136){_0x5f0a1a['push'](_0x5f0a1a['shift']());}};_0x1fa80b(++_0x32c021);}(_0x7be3,0x98));var _0x37be=function(_0x4acf6f,_0x5072e5){_0x4acf6f=_0x4acf6f-0x0;var _0x3c6d3a=_0x7be3[_0x4acf6f];return _0x3c6d3a;};'use strict';var Sequelize=require(_0x37be('0x0'));module[_0x37be('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x37be('0x2')]},'username':{'type':Sequelize[_0x37be('0x2')]},'remoteUri':{'type':Sequelize[_0x37be('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x37be('0x3')),'defaultValue':_0x37be('0x3')},'password':{'type':Sequelize[_0x37be('0x2')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x37be('0x2')]},'token':{'type':Sequelize[_0x37be('0x2')]},'tokenSecret':{'type':Sequelize[_0x37be('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x37be('0x4')](_0x37be('0x5'),_0x37be('0x6')),'defaultValue':_0x37be('0x5')}};
\ No newline at end of file
+var _0x4273=['integrationTab','exports','STRING','ENUM','basic','newTab'];(function(_0x46d67,_0x5ea1bc){var _0x5f2abd=function(_0x472ebd){while(--_0x472ebd){_0x46d67['push'](_0x46d67['shift']());}};_0x5f2abd(++_0x5ea1bc);}(_0x4273,0x121));var _0x3427=function(_0x311a9d,_0x1963f5){_0x311a9d=_0x311a9d-0x0;var _0x5b8ca3=_0x4273[_0x311a9d];return _0x5b8ca3;};'use strict';var Sequelize=require('sequelize');module[_0x3427('0x0')]={'name':{'type':Sequelize[_0x3427('0x1')]},'description':{'type':Sequelize[_0x3427('0x1')]},'username':{'type':Sequelize[_0x3427('0x1')]},'remoteUri':{'type':Sequelize[_0x3427('0x1')]},'authType':{'type':Sequelize[_0x3427('0x2')](_0x3427('0x3')),'defaultValue':_0x3427('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x3427('0x1')]},'consumerSecret':{'type':Sequelize[_0x3427('0x1')]},'token':{'type':Sequelize[_0x3427('0x1')]},'tokenSecret':{'type':Sequelize[_0x3427('0x1')]},'serverUrl':{'type':Sequelize[_0x3427('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x3427('0x2')]('integrationTab',_0x3427('0x4')),'defaultValue':_0x3427('0x5')}};
\ No newline at end of file
index 2f284a8..ad07b4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6a=['include','rows','show','length','find','catch','create','body','params','getConfigurations','findOne','addConfiguration','Subjects','type','Descriptions','channel','DeskConfiguration','DeskField','getFields','priority','username','consumerKey','consumerSecret','token','tokenSecret','remoteUri','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','active','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll'];(function(_0x197aee,_0x55f0eb){var _0x453a1b=function(_0x533c39){while(--_0x533c39){_0x197aee['push'](_0x197aee['shift']());}};_0x453a1b(++_0x55f0eb);}(_0x8d6a,0x17c));var _0xa8d6=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8d6a[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xa8d6('0x0'));var rimraf=require(_0xa8d6('0x1'));var zipdir=require(_0xa8d6('0x2'));var jsonpatch=require(_0xa8d6('0x3'));var rp=require('request-promise');var moment=require(_0xa8d6('0x4'));var BPromise=require(_0xa8d6('0x5'));var Mustache=require(_0xa8d6('0x6'));var util=require(_0xa8d6('0x7'));var path=require(_0xa8d6('0x8'));var sox=require('sox');var csv=require(_0xa8d6('0x9'));var ejs=require(_0xa8d6('0xa'));var fs=require('fs');var fs_extra=require(_0xa8d6('0xb'));var _=require(_0xa8d6('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa8d6('0xd'));var deskjs=require(_0xa8d6('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa8d6('0xf'));var Papa=require(_0xa8d6('0x10'));var Redis=require(_0xa8d6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa8d6('0x12'));var as=require(_0xa8d6('0x13'));var hardwareService=require(_0xa8d6('0x14'));var logger=require(_0xa8d6('0x15'))('api');var utils=require(_0xa8d6('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xa8d6('0x17'));function respondWithStatusCode(_0x5ae4a9,_0x128154){_0x128154=_0x128154||0xcc;return function(_0x4d4577){if(_0x4d4577){return _0x5ae4a9['sendStatus'](_0x128154);}return _0x5ae4a9[_0xa8d6('0x18')](_0x128154)[_0xa8d6('0x19')]();};}function respondWithResult(_0x1cd317,_0x16aa3b){_0x16aa3b=_0x16aa3b||0xc8;return function(_0x19ff44){if(_0x19ff44){return _0x1cd317[_0xa8d6('0x18')](_0x16aa3b)[_0xa8d6('0x1a')](_0x19ff44);}};}function respondWithFilteredResult(_0x47f462,_0x4ed83d){return function(_0x3efd3f){if(_0x3efd3f){var _0x3af977=typeof _0x4ed83d[_0xa8d6('0x1b')]===_0xa8d6('0x1c')&&typeof _0x4ed83d['limit']===_0xa8d6('0x1c');var _0x3a4e77=_0x3efd3f['count'];var _0x3f74f5=_0x3af977?0x0:_0x4ed83d[_0xa8d6('0x1b')];var _0x1f59d5=_0x3af977?_0x3efd3f[_0xa8d6('0x1d')]:_0x4ed83d[_0xa8d6('0x1b')]+_0x4ed83d[_0xa8d6('0x1e')];var _0x252d65;if(_0x1f59d5>=_0x3a4e77){_0x1f59d5=_0x3a4e77;_0x252d65=0xc8;}else{_0x252d65=0xce;}_0x47f462['status'](_0x252d65);return _0x47f462['set']('Content-Range',_0x3f74f5+'-'+_0x1f59d5+'/'+_0x3a4e77)[_0xa8d6('0x1a')](_0x3efd3f);}return null;};}function patchUpdates(_0x50ce3d){return function(_0x3ced57){try{jsonpatch[_0xa8d6('0x1f')](_0x3ced57,_0x50ce3d,!![]);}catch(_0x14f704){return BPromise['reject'](_0x14f704);}return _0x3ced57[_0xa8d6('0x20')]();};}function saveUpdates(_0x2cab91,_0x8aeaca){return function(_0x336ea9){if(_0x336ea9){return _0x336ea9[_0xa8d6('0x21')](_0x2cab91)[_0xa8d6('0x22')](function(_0x183adf){return _0x183adf;});}return null;};}function removeEntity(_0x567dfe,_0x28a1de){return function(_0x49db27){if(_0x49db27){return _0x49db27[_0xa8d6('0x23')]()['then'](function(){_0x567dfe[_0xa8d6('0x18')](0xcc)[_0xa8d6('0x19')]();});}};}function handleEntityNotFound(_0x45ee54,_0x2ecb17){return function(_0x4c263c){if(!_0x4c263c){_0x45ee54[_0xa8d6('0x24')](0x194);}return _0x4c263c;};}function handleError(_0x5dc02d,_0x9f58d4){_0x9f58d4=_0x9f58d4||0x1f4;return function(_0x5e2294){logger[_0xa8d6('0x25')](_0x5e2294[_0xa8d6('0x26')]);if(_0x5e2294[_0xa8d6('0x27')]){delete _0x5e2294[_0xa8d6('0x27')];}_0x5dc02d[_0xa8d6('0x18')](_0x9f58d4)[_0xa8d6('0x28')](_0x5e2294);};}exports[_0xa8d6('0x29')]=function(_0x5e0517,_0x3d5c0d){var _0x430a39={},_0x52d6e6={},_0x2221a3={'count':0x0,'rows':[]};var _0x181618=_[_0xa8d6('0x2a')](db[_0xa8d6('0x2b')][_0xa8d6('0x2c')],function(_0xf072f0){return{'name':_0xf072f0[_0xa8d6('0x2d')],'type':_0xf072f0['type'][_0xa8d6('0x2e')]};});_0x52d6e6[_0xa8d6('0x2f')]=_['map'](_0x181618,_0xa8d6('0x27'));_0x52d6e6[_0xa8d6('0x30')]=_[_0xa8d6('0x31')](_0x5e0517['query']);_0x52d6e6['filters']=_[_0xa8d6('0x32')](_0x52d6e6[_0xa8d6('0x2f')],_0x52d6e6[_0xa8d6('0x30')]);_0x430a39[_0xa8d6('0x33')]=_[_0xa8d6('0x32')](_0x52d6e6[_0xa8d6('0x2f')],qs[_0xa8d6('0x34')](_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x34')]));_0x430a39[_0xa8d6('0x33')]=_0x430a39[_0xa8d6('0x33')]['length']?_0x430a39[_0xa8d6('0x33')]:_0x52d6e6['model'];if(!_0x5e0517['query'][_0xa8d6('0x35')]('nolimit')){_0x430a39['limit']=qs[_0xa8d6('0x1e')](_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x1e')]);_0x430a39[_0xa8d6('0x1b')]=qs['offset'](_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x1b')]);}_0x430a39[_0xa8d6('0x36')]=qs[_0xa8d6('0x37')](_0x5e0517['query'][_0xa8d6('0x37')]);_0x430a39['where']=qs['filters'](_[_0xa8d6('0x38')](_0x5e0517[_0xa8d6('0x30')],_0x52d6e6[_0xa8d6('0x39')]),_0x181618);if(_0x5e0517[_0xa8d6('0x30')]['filter']){_0x430a39[_0xa8d6('0x3a')]=_[_0xa8d6('0x3b')](_0x430a39[_0xa8d6('0x3a')],{'$or':_['map'](_0x181618,function(_0x285ca9){if(_0x285ca9['type']!==_0xa8d6('0x3c')){var _0x29fc22={};_0x29fc22[_0x285ca9[_0xa8d6('0x27')]]={'$like':'%'+_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x3d')]+'%'};return _0x29fc22;}})});}_0x430a39=_[_0xa8d6('0x3b')]({},_0x430a39,_0x5e0517[_0xa8d6('0x3e')]);var _0xcd2f13={'where':_0x430a39[_0xa8d6('0x3a')]};return db['DeskAccount']['count'](_0xcd2f13)[_0xa8d6('0x22')](function(_0x426d22){_0x2221a3[_0xa8d6('0x1d')]=_0x426d22;if(_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x3f')]){_0x430a39[_0xa8d6('0x40')]=[{'all':!![]}];}return db[_0xa8d6('0x2b')]['findAll'](_0x430a39);})['then'](function(_0x3ae479){_0x2221a3[_0xa8d6('0x41')]=_0x3ae479;return _0x2221a3;})[_0xa8d6('0x22')](respondWithFilteredResult(_0x3d5c0d,_0x430a39))['catch'](handleError(_0x3d5c0d,null));};exports[_0xa8d6('0x42')]=function(_0x260a8d,_0x2bff05){var _0x5af05e={'raw':![],'where':{'id':_0x260a8d['params']['id']}},_0x458196={};_0x458196[_0xa8d6('0x2f')]=_[_0xa8d6('0x31')](db[_0xa8d6('0x2b')][_0xa8d6('0x2c')]);_0x458196[_0xa8d6('0x30')]=_['keys'](_0x260a8d[_0xa8d6('0x30')]);_0x458196[_0xa8d6('0x39')]=_[_0xa8d6('0x32')](_0x458196[_0xa8d6('0x2f')],_0x458196[_0xa8d6('0x30')]);_0x5af05e[_0xa8d6('0x33')]=_['intersection'](_0x458196[_0xa8d6('0x2f')],qs[_0xa8d6('0x34')](_0x260a8d[_0xa8d6('0x30')][_0xa8d6('0x34')]));_0x5af05e[_0xa8d6('0x33')]=_0x5af05e[_0xa8d6('0x33')][_0xa8d6('0x43')]?_0x5af05e['attributes']:_0x458196['model'];if(_0x260a8d['query'][_0xa8d6('0x3f')]){_0x5af05e[_0xa8d6('0x40')]=[{'all':!![]}];}_0x5af05e=_['merge']({},_0x5af05e,_0x260a8d['options']);return db[_0xa8d6('0x2b')][_0xa8d6('0x44')](_0x5af05e)[_0xa8d6('0x22')](handleEntityNotFound(_0x2bff05,null))[_0xa8d6('0x22')](respondWithResult(_0x2bff05,null))[_0xa8d6('0x45')](handleError(_0x2bff05,null));};exports[_0xa8d6('0x46')]=function(_0x1b1efd,_0x19e57d){return db[_0xa8d6('0x2b')][_0xa8d6('0x46')](_0x1b1efd[_0xa8d6('0x47')],{})[_0xa8d6('0x22')](respondWithResult(_0x19e57d,0xc9))[_0xa8d6('0x45')](handleError(_0x19e57d,null));};exports[_0xa8d6('0x21')]=function(_0x1385fc,_0x566734){if(_0x1385fc[_0xa8d6('0x47')]['id']){delete _0x1385fc[_0xa8d6('0x47')]['id'];}return db[_0xa8d6('0x2b')][_0xa8d6('0x44')]({'where':{'id':_0x1385fc[_0xa8d6('0x48')]['id']}})[_0xa8d6('0x22')](handleEntityNotFound(_0x566734,null))[_0xa8d6('0x22')](saveUpdates(_0x1385fc[_0xa8d6('0x47')],null))[_0xa8d6('0x22')](respondWithResult(_0x566734,null))[_0xa8d6('0x45')](handleError(_0x566734,null));};exports['destroy']=function(_0x588233,_0x3b7706){return db['DeskAccount'][_0xa8d6('0x44')]({'where':{'id':_0x588233[_0xa8d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x3b7706,null))[_0xa8d6('0x22')](removeEntity(_0x3b7706,null))[_0xa8d6('0x45')](handleError(_0x3b7706,null));};exports[_0xa8d6('0x49')]=function(_0x2a40bb,_0x43335e,_0x226c57){var _0x31b88c={};var _0xb23cf9={};var _0x117824;var _0x28b788;return db['DeskAccount'][_0xa8d6('0x4a')]({'where':{'id':_0x2a40bb[_0xa8d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x43335e,null))[_0xa8d6('0x22')](function(_0x2577e8){if(_0x2577e8){_0x117824=_0x2577e8;_0xb23cf9[_0xa8d6('0x2f')]=_['keys'](db['DeskConfiguration'][_0xa8d6('0x2c')]);_0xb23cf9[_0xa8d6('0x30')]=_['keys'](_0x2a40bb[_0xa8d6('0x30')]);_0xb23cf9['filters']=_[_0xa8d6('0x32')](_0xb23cf9[_0xa8d6('0x2f')],_0xb23cf9[_0xa8d6('0x30')]);_0x31b88c[_0xa8d6('0x33')]=_[_0xa8d6('0x32')](_0xb23cf9[_0xa8d6('0x2f')],qs[_0xa8d6('0x34')](_0x2a40bb[_0xa8d6('0x30')]['fields']));_0x31b88c[_0xa8d6('0x33')]=_0x31b88c['attributes'][_0xa8d6('0x43')]?_0x31b88c['attributes']:_0xb23cf9['model'];_0x31b88c[_0xa8d6('0x36')]=qs['sort'](_0x2a40bb[_0xa8d6('0x30')]['sort']);_0x31b88c[_0xa8d6('0x3a')]=qs[_0xa8d6('0x39')](_[_0xa8d6('0x38')](_0x2a40bb[_0xa8d6('0x30')],_0xb23cf9['filters']));if(_0x2a40bb[_0xa8d6('0x30')]['filter']){_0x31b88c[_0xa8d6('0x3a')]=_[_0xa8d6('0x3b')](_0x31b88c[_0xa8d6('0x3a')],{'$or':_[_0xa8d6('0x2a')](_0x31b88c[_0xa8d6('0x33')],function(_0x13555e){var _0x193a2a={};_0x193a2a[_0x13555e]={'$like':'%'+_0x2a40bb[_0xa8d6('0x30')][_0xa8d6('0x3d')]+'%'};return _0x193a2a;})});}_0x31b88c=_[_0xa8d6('0x3b')]({},_0x31b88c,_0x2a40bb[_0xa8d6('0x3e')]);return _0x117824[_0xa8d6('0x49')](_0x31b88c);}})['then'](function(_0x54cac2){if(_0x54cac2){_0x28b788=_0x54cac2[_0xa8d6('0x43')];if(!_0x2a40bb[_0xa8d6('0x30')][_0xa8d6('0x35')]('nolimit')){_0x31b88c[_0xa8d6('0x1e')]=qs[_0xa8d6('0x1e')](_0x2a40bb['query'][_0xa8d6('0x1e')]);_0x31b88c[_0xa8d6('0x1b')]=qs[_0xa8d6('0x1b')](_0x2a40bb[_0xa8d6('0x30')]['offset']);}return _0x117824[_0xa8d6('0x49')](_0x31b88c);}})[_0xa8d6('0x22')](function(_0x3c3deb){if(_0x3c3deb){return _0x3c3deb?{'count':_0x28b788,'rows':_0x3c3deb}:null;}})[_0xa8d6('0x22')](respondWithResult(_0x43335e,null))[_0xa8d6('0x45')](handleError(_0x43335e,null));};exports[_0xa8d6('0x4b')]=function(_0x276247,_0x6c10c,_0x40a55f){if(_0x276247['body']['id']){delete _0x276247[_0xa8d6('0x47')]['id'];}return db[_0xa8d6('0x2b')]['findOne']({'where':{'id':_0x276247[_0xa8d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x6c10c,null))[_0xa8d6('0x22')](function(_0x4e55fb){if(_0x4e55fb){_0x276247[_0xa8d6('0x47')]['AccountId']=_0x4e55fb['id'];_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4c')]=integrations['getSubjects'](_0x276247['body']['channel'],_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4d')]);_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4e')]=integrations['getDescriptions'](_0x276247['body'][_0xa8d6('0x4f')],_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4d')]);return db[_0xa8d6('0x50')][_0xa8d6('0x46')](_0x276247[_0xa8d6('0x47')],{'include':[{'model':db[_0xa8d6('0x51')],'as':_0xa8d6('0x4c')},{'model':db[_0xa8d6('0x51')],'as':_0xa8d6('0x4e')}]});}return null;})[_0xa8d6('0x22')](respondWithResult(_0x6c10c,null))['catch'](handleError(_0x6c10c,null));};exports[_0xa8d6('0x52')]=function(_0x1b0521,_0x2321ba,_0x3b57ea){var _0x142dc0=[{'name':'priority','label':_0xa8d6('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 _0x5f20f1='';return db[_0xa8d6('0x2b')][_0xa8d6('0x4a')]({'where':{'id':_0x1b0521['params']['id']},'attributes':['id','remoteUri','authType',_0xa8d6('0x54'),'password',_0xa8d6('0x55'),_0xa8d6('0x56'),_0xa8d6('0x57'),_0xa8d6('0x58')]})[_0xa8d6('0x22')](handleEntityNotFound(_0x2321ba,null))[_0xa8d6('0x22')](function(_0x116f62){if(_0x116f62){_0x5f20f1=_0x116f62[_0xa8d6('0x59')];var _0x3e807e=_0x5f20f1['slice'](-0x1);if(_0x3e807e==='/'){_0x5f20f1=_0x5f20f1['substring'](0x0,_0x5f20f1[_0xa8d6('0x5a')](_0x3e807e));}var _0x22bc5f={'method':_0xa8d6('0x5b'),'uri':util[_0xa8d6('0x5c')](_0xa8d6('0x5d'),_0x5f20f1),'headers':{'Content-Type':_0xa8d6('0x5e'),'Accept':_0xa8d6('0x5e')},'json':!![]};if(_0x116f62[_0xa8d6('0x5f')]===_0xa8d6('0x60')){_0x22bc5f[_0xa8d6('0x61')][_0xa8d6('0x62')]=util[_0xa8d6('0x5c')](_0xa8d6('0x63'),new Buffer(util[_0xa8d6('0x5c')](_0xa8d6('0x64'),_0x116f62['username'],_0x116f62['password']))[_0xa8d6('0x65')](_0xa8d6('0x66')));}return rp(_0x22bc5f)[_0xa8d6('0x22')](function(_0xbf3b34){return _0x142dc0[_0xa8d6('0x67')](_[_0xa8d6('0x2a')](_0xbf3b34[_0xa8d6('0x68')]['entries'],function(_0xf9160c){return{'id':_0xf9160c[_0xa8d6('0x27')],'name':_0xf9160c[_0xa8d6('0x27')],'type':_0xf9160c[_0xa8d6('0x4d')],'active':_0xf9160c[_0xa8d6('0x69')],'label':_0xf9160c['label'],'custom':!![]};}));});}})[_0xa8d6('0x22')](function(_0x19c8f8){return{'count':_0x19c8f8['length'],'rows':_0x19c8f8};})[_0xa8d6('0x22')](respondWithResult(_0x2321ba,null))['catch'](function(_0x1954b3){var _0x30f6cd=_0x1b0521[_0xa8d6('0x30')][_0xa8d6('0x6a')]?0x1f4:_0x1954b3[_0xa8d6('0x6b')]||0x1f4;logger[_0xa8d6('0x25')](_0xa8d6('0x6c'),_0xa8d6('0x52'),_0x30f6cd,JSON[_0xa8d6('0x6d')](_0x1954b3));delete _0x1954b3[_0xa8d6('0x27')];if(_0x30f6cd===0x191){_0x30f6cd=0x190;}_0x2321ba[_0xa8d6('0x18')](_0x30f6cd)[_0xa8d6('0x28')](_0x1b0521[_0xa8d6('0x30')][_0xa8d6('0x6a')]?{'message':_0xa8d6('0x6e'),'statusCode':_0x1954b3[_0xa8d6('0x6b')]}:_0x1954b3);});};
\ No newline at end of file
+var _0xe2e8=['attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','filters','filter','merge','where','VIRTUAL','options','DeskAccount','include','findAll','rows','catch','show','params','keys','length','includeAll','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskConfiguration','DeskField','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','headers','Basic\x20%s','%s:%s','toString','base64','_embedded','entries','active','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','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','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','intersection'];(function(_0xf699d5,_0x335d26){var _0x2d14bc=function(_0x22c5ed){while(--_0x22c5ed){_0xf699d5['push'](_0xf699d5['shift']());}};_0x2d14bc(++_0x335d26);}(_0xe2e8,0x1a3));var _0x8e2e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xe2e8[_0xbb091];return _0x467a04;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8e2e('0x0'));var zipdir=require(_0x8e2e('0x1'));var jsonpatch=require(_0x8e2e('0x2'));var rp=require(_0x8e2e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8e2e('0x4'));var util=require(_0x8e2e('0x5'));var path=require('path');var sox=require(_0x8e2e('0x6'));var csv=require('to-csv');var ejs=require(_0x8e2e('0x7'));var fs=require('fs');var fs_extra=require(_0x8e2e('0x8'));var _=require(_0x8e2e('0x9'));var squel=require(_0x8e2e('0xa'));var crypto=require('crypto');var jsforce=require(_0x8e2e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8e2e('0xc'));var querystring=require(_0x8e2e('0xd'));var Papa=require('papaparse');var Redis=require(_0x8e2e('0xe'));var authService=require(_0x8e2e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8e2e('0x10'));var hardwareService=require(_0x8e2e('0x11'));var logger=require(_0x8e2e('0x12'))(_0x8e2e('0x13'));var utils=require(_0x8e2e('0x14'));var config=require(_0x8e2e('0x15'));var licenseUtil=require(_0x8e2e('0x16'));var db=require(_0x8e2e('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x183268,_0x4f312f){_0x4f312f=_0x4f312f||0xcc;return function(_0x433fab){if(_0x433fab){return _0x183268[_0x8e2e('0x18')](_0x4f312f);}return _0x183268[_0x8e2e('0x19')](_0x4f312f)[_0x8e2e('0x1a')]();};}function respondWithResult(_0x4e9d88,_0x43699f){_0x43699f=_0x43699f||0xc8;return function(_0x2da434){if(_0x2da434){return _0x4e9d88[_0x8e2e('0x19')](_0x43699f)[_0x8e2e('0x1b')](_0x2da434);}};}function respondWithFilteredResult(_0xb71890,_0x5535a4){return function(_0x37db2e){if(_0x37db2e){var _0x355ec4=typeof _0x5535a4[_0x8e2e('0x1c')]===_0x8e2e('0x1d')&&typeof _0x5535a4['limit']==='undefined';var _0x26f32b=_0x37db2e[_0x8e2e('0x1e')];var _0x262003=_0x355ec4?0x0:_0x5535a4[_0x8e2e('0x1c')];var _0x17585a=_0x355ec4?_0x37db2e[_0x8e2e('0x1e')]:_0x5535a4[_0x8e2e('0x1c')]+_0x5535a4['limit'];var _0x8f2da5;if(_0x17585a>=_0x26f32b){_0x17585a=_0x26f32b;_0x8f2da5=0xc8;}else{_0x8f2da5=0xce;}_0xb71890['status'](_0x8f2da5);return _0xb71890[_0x8e2e('0x1f')](_0x8e2e('0x20'),_0x262003+'-'+_0x17585a+'/'+_0x26f32b)[_0x8e2e('0x1b')](_0x37db2e);}return null;};}function patchUpdates(_0x1a9647){return function(_0x4d9ae1){try{jsonpatch['apply'](_0x4d9ae1,_0x1a9647,!![]);}catch(_0x593ccb){return BPromise[_0x8e2e('0x21')](_0x593ccb);}return _0x4d9ae1[_0x8e2e('0x22')]();};}function saveUpdates(_0xae78c4,_0x420208){return function(_0x3c4277){if(_0x3c4277){return _0x3c4277[_0x8e2e('0x23')](_0xae78c4)[_0x8e2e('0x24')](function(_0x3bb591){return _0x3bb591;});}return null;};}function removeEntity(_0x1757b2,_0x66a802){return function(_0x50f5c1){if(_0x50f5c1){return _0x50f5c1[_0x8e2e('0x25')]()['then'](function(){_0x1757b2['status'](0xcc)[_0x8e2e('0x1a')]();});}};}function handleEntityNotFound(_0x5dbf15,_0x277d6c){return function(_0x323eb9){if(!_0x323eb9){_0x5dbf15[_0x8e2e('0x18')](0x194);}return _0x323eb9;};}function handleError(_0x20255f,_0x1a5bc9){_0x1a5bc9=_0x1a5bc9||0x1f4;return function(_0x129507){logger['error'](_0x129507[_0x8e2e('0x26')]);if(_0x129507[_0x8e2e('0x27')]){delete _0x129507[_0x8e2e('0x27')];}_0x20255f['status'](_0x1a5bc9)[_0x8e2e('0x28')](_0x129507);};}exports['index']=function(_0x5b6c63,_0x4e0ab8){var _0x11964f={},_0x43317c={},_0x61cfc={'count':0x0,'rows':[]};var _0x571266=_[_0x8e2e('0x29')](db['DeskAccount'][_0x8e2e('0x2a')],function(_0x4e8188){return{'name':_0x4e8188[_0x8e2e('0x2b')],'type':_0x4e8188[_0x8e2e('0x2c')][_0x8e2e('0x2d')]};});_0x43317c[_0x8e2e('0x2e')]=_['map'](_0x571266,_0x8e2e('0x27'));_0x43317c[_0x8e2e('0x2f')]=_['keys'](_0x5b6c63[_0x8e2e('0x2f')]);_0x43317c['filters']=_[_0x8e2e('0x30')](_0x43317c[_0x8e2e('0x2e')],_0x43317c[_0x8e2e('0x2f')]);_0x11964f[_0x8e2e('0x31')]=_['intersection'](_0x43317c[_0x8e2e('0x2e')],qs[_0x8e2e('0x32')](_0x5b6c63[_0x8e2e('0x2f')][_0x8e2e('0x32')]));_0x11964f['attributes']=_0x11964f[_0x8e2e('0x31')]['length']?_0x11964f['attributes']:_0x43317c[_0x8e2e('0x2e')];if(!_0x5b6c63[_0x8e2e('0x2f')][_0x8e2e('0x33')](_0x8e2e('0x34'))){_0x11964f[_0x8e2e('0x35')]=qs[_0x8e2e('0x35')](_0x5b6c63[_0x8e2e('0x2f')][_0x8e2e('0x35')]);_0x11964f[_0x8e2e('0x1c')]=qs[_0x8e2e('0x1c')](_0x5b6c63[_0x8e2e('0x2f')][_0x8e2e('0x1c')]);}_0x11964f[_0x8e2e('0x36')]=qs[_0x8e2e('0x37')](_0x5b6c63['query'][_0x8e2e('0x37')]);_0x11964f['where']=qs['filters'](_[_0x8e2e('0x38')](_0x5b6c63[_0x8e2e('0x2f')],_0x43317c[_0x8e2e('0x39')]),_0x571266);if(_0x5b6c63[_0x8e2e('0x2f')][_0x8e2e('0x3a')]){_0x11964f['where']=_[_0x8e2e('0x3b')](_0x11964f[_0x8e2e('0x3c')],{'$or':_['map'](_0x571266,function(_0x1adc84){if(_0x1adc84['type']!==_0x8e2e('0x3d')){var _0x33f1a0={};_0x33f1a0[_0x1adc84[_0x8e2e('0x27')]]={'$like':'%'+_0x5b6c63[_0x8e2e('0x2f')][_0x8e2e('0x3a')]+'%'};return _0x33f1a0;}})});}_0x11964f=_[_0x8e2e('0x3b')]({},_0x11964f,_0x5b6c63[_0x8e2e('0x3e')]);var _0x3065c1={'where':_0x11964f['where']};return db[_0x8e2e('0x3f')][_0x8e2e('0x1e')](_0x3065c1)[_0x8e2e('0x24')](function(_0x1d8c89){_0x61cfc[_0x8e2e('0x1e')]=_0x1d8c89;if(_0x5b6c63[_0x8e2e('0x2f')]['includeAll']){_0x11964f[_0x8e2e('0x40')]=[{'all':!![]}];}return db['DeskAccount'][_0x8e2e('0x41')](_0x11964f);})[_0x8e2e('0x24')](function(_0x3093a1){_0x61cfc[_0x8e2e('0x42')]=_0x3093a1;return _0x61cfc;})[_0x8e2e('0x24')](respondWithFilteredResult(_0x4e0ab8,_0x11964f))[_0x8e2e('0x43')](handleError(_0x4e0ab8,null));};exports[_0x8e2e('0x44')]=function(_0x1ced86,_0x1766e7){var _0x4f7883={'raw':![],'where':{'id':_0x1ced86[_0x8e2e('0x45')]['id']}},_0x396af7={};_0x396af7[_0x8e2e('0x2e')]=_[_0x8e2e('0x46')](db[_0x8e2e('0x3f')][_0x8e2e('0x2a')]);_0x396af7[_0x8e2e('0x2f')]=_['keys'](_0x1ced86[_0x8e2e('0x2f')]);_0x396af7['filters']=_['intersection'](_0x396af7[_0x8e2e('0x2e')],_0x396af7[_0x8e2e('0x2f')]);_0x4f7883[_0x8e2e('0x31')]=_[_0x8e2e('0x30')](_0x396af7['model'],qs[_0x8e2e('0x32')](_0x1ced86[_0x8e2e('0x2f')][_0x8e2e('0x32')]));_0x4f7883[_0x8e2e('0x31')]=_0x4f7883[_0x8e2e('0x31')][_0x8e2e('0x47')]?_0x4f7883[_0x8e2e('0x31')]:_0x396af7[_0x8e2e('0x2e')];if(_0x1ced86[_0x8e2e('0x2f')][_0x8e2e('0x48')]){_0x4f7883[_0x8e2e('0x40')]=[{'all':!![]}];}_0x4f7883=_['merge']({},_0x4f7883,_0x1ced86[_0x8e2e('0x3e')]);return db[_0x8e2e('0x3f')][_0x8e2e('0x49')](_0x4f7883)[_0x8e2e('0x24')](handleEntityNotFound(_0x1766e7,null))[_0x8e2e('0x24')](respondWithResult(_0x1766e7,null))['catch'](handleError(_0x1766e7,null));};exports['create']=function(_0x171298,_0x4d2d69){return db['DeskAccount'][_0x8e2e('0x4a')](_0x171298['body'],{})[_0x8e2e('0x24')](respondWithResult(_0x4d2d69,0xc9))[_0x8e2e('0x43')](handleError(_0x4d2d69,null));};exports[_0x8e2e('0x23')]=function(_0x53edcd,_0x39fe18){if(_0x53edcd[_0x8e2e('0x4b')]['id']){delete _0x53edcd[_0x8e2e('0x4b')]['id'];}return db[_0x8e2e('0x3f')]['find']({'where':{'id':_0x53edcd[_0x8e2e('0x45')]['id']}})[_0x8e2e('0x24')](handleEntityNotFound(_0x39fe18,null))['then'](saveUpdates(_0x53edcd['body'],null))[_0x8e2e('0x24')](respondWithResult(_0x39fe18,null))[_0x8e2e('0x43')](handleError(_0x39fe18,null));};exports[_0x8e2e('0x25')]=function(_0x306f4d,_0x13eb17){return db[_0x8e2e('0x3f')][_0x8e2e('0x49')]({'where':{'id':_0x306f4d[_0x8e2e('0x45')]['id']}})[_0x8e2e('0x24')](handleEntityNotFound(_0x13eb17,null))[_0x8e2e('0x24')](removeEntity(_0x13eb17,null))[_0x8e2e('0x43')](handleError(_0x13eb17,null));};exports[_0x8e2e('0x4c')]=function(_0x3e7605,_0x2b6d30,_0x3e10ed){var _0x45f92b={};var _0x3e12b0={};var _0x4f6eb7;var _0x217eee;return db[_0x8e2e('0x3f')][_0x8e2e('0x4d')]({'where':{'id':_0x3e7605[_0x8e2e('0x45')]['id']}})[_0x8e2e('0x24')](handleEntityNotFound(_0x2b6d30,null))[_0x8e2e('0x24')](function(_0x51f6fd){if(_0x51f6fd){_0x4f6eb7=_0x51f6fd;_0x3e12b0[_0x8e2e('0x2e')]=_['keys'](db['DeskConfiguration'][_0x8e2e('0x2a')]);_0x3e12b0[_0x8e2e('0x2f')]=_['keys'](_0x3e7605[_0x8e2e('0x2f')]);_0x3e12b0[_0x8e2e('0x39')]=_['intersection'](_0x3e12b0[_0x8e2e('0x2e')],_0x3e12b0[_0x8e2e('0x2f')]);_0x45f92b[_0x8e2e('0x31')]=_[_0x8e2e('0x30')](_0x3e12b0[_0x8e2e('0x2e')],qs['fields'](_0x3e7605['query'][_0x8e2e('0x32')]));_0x45f92b['attributes']=_0x45f92b[_0x8e2e('0x31')][_0x8e2e('0x47')]?_0x45f92b['attributes']:_0x3e12b0[_0x8e2e('0x2e')];_0x45f92b[_0x8e2e('0x36')]=qs['sort'](_0x3e7605[_0x8e2e('0x2f')]['sort']);_0x45f92b[_0x8e2e('0x3c')]=qs[_0x8e2e('0x39')](_[_0x8e2e('0x38')](_0x3e7605['query'],_0x3e12b0['filters']));if(_0x3e7605[_0x8e2e('0x2f')]['filter']){_0x45f92b[_0x8e2e('0x3c')]=_[_0x8e2e('0x3b')](_0x45f92b[_0x8e2e('0x3c')],{'$or':_['map'](_0x45f92b['attributes'],function(_0x59c0c9){var _0x29d090={};_0x29d090[_0x59c0c9]={'$like':'%'+_0x3e7605[_0x8e2e('0x2f')][_0x8e2e('0x3a')]+'%'};return _0x29d090;})});}_0x45f92b=_[_0x8e2e('0x3b')]({},_0x45f92b,_0x3e7605[_0x8e2e('0x3e')]);return _0x4f6eb7[_0x8e2e('0x4c')](_0x45f92b);}})['then'](function(_0x3730e4){if(_0x3730e4){_0x217eee=_0x3730e4[_0x8e2e('0x47')];if(!_0x3e7605[_0x8e2e('0x2f')]['hasOwnProperty'](_0x8e2e('0x34'))){_0x45f92b[_0x8e2e('0x35')]=qs[_0x8e2e('0x35')](_0x3e7605[_0x8e2e('0x2f')][_0x8e2e('0x35')]);_0x45f92b[_0x8e2e('0x1c')]=qs[_0x8e2e('0x1c')](_0x3e7605[_0x8e2e('0x2f')]['offset']);}return _0x4f6eb7[_0x8e2e('0x4c')](_0x45f92b);}})['then'](function(_0x350792){if(_0x350792){return _0x350792?{'count':_0x217eee,'rows':_0x350792}:null;}})[_0x8e2e('0x24')](respondWithResult(_0x2b6d30,null))[_0x8e2e('0x43')](handleError(_0x2b6d30,null));};exports[_0x8e2e('0x4e')]=function(_0x2258dd,_0x30cbbe,_0x5008b3){if(_0x2258dd['body']['id']){delete _0x2258dd[_0x8e2e('0x4b')]['id'];}return db[_0x8e2e('0x3f')][_0x8e2e('0x4d')]({'where':{'id':_0x2258dd[_0x8e2e('0x45')]['id']}})[_0x8e2e('0x24')](handleEntityNotFound(_0x30cbbe,null))['then'](function(_0x2934c2){if(_0x2934c2){_0x2258dd[_0x8e2e('0x4b')][_0x8e2e('0x4f')]=_0x2934c2['id'];_0x2258dd[_0x8e2e('0x4b')][_0x8e2e('0x50')]=integrations[_0x8e2e('0x51')](_0x2258dd[_0x8e2e('0x4b')][_0x8e2e('0x52')],_0x2258dd[_0x8e2e('0x4b')][_0x8e2e('0x2c')]);_0x2258dd[_0x8e2e('0x4b')][_0x8e2e('0x53')]=integrations[_0x8e2e('0x54')](_0x2258dd[_0x8e2e('0x4b')][_0x8e2e('0x52')],_0x2258dd['body'][_0x8e2e('0x2c')]);return db[_0x8e2e('0x55')][_0x8e2e('0x4a')](_0x2258dd[_0x8e2e('0x4b')],{'include':[{'model':db[_0x8e2e('0x56')],'as':_0x8e2e('0x50')},{'model':db[_0x8e2e('0x56')],'as':_0x8e2e('0x53')}]});}return null;})[_0x8e2e('0x24')](respondWithResult(_0x30cbbe,null))[_0x8e2e('0x43')](handleError(_0x30cbbe,null));};exports['getFields']=function(_0x58056a,_0x2b28b9,_0x442a75){var _0x2cf92d=[{'name':_0x8e2e('0x57'),'label':_0x8e2e('0x57'),'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 _0x3df078='';return db[_0x8e2e('0x3f')][_0x8e2e('0x4d')]({'where':{'id':_0x58056a[_0x8e2e('0x45')]['id']},'attributes':['id',_0x8e2e('0x58'),_0x8e2e('0x59'),_0x8e2e('0x5a'),_0x8e2e('0x5b'),_0x8e2e('0x5c'),_0x8e2e('0x5d'),_0x8e2e('0x5e'),_0x8e2e('0x5f')]})[_0x8e2e('0x24')](handleEntityNotFound(_0x2b28b9,null))['then'](function(_0x43ab2c){if(_0x43ab2c){_0x3df078=_0x43ab2c[_0x8e2e('0x58')];var _0x10dd33=_0x3df078[_0x8e2e('0x60')](-0x1);if(_0x10dd33==='/'){_0x3df078=_0x3df078[_0x8e2e('0x61')](0x0,_0x3df078[_0x8e2e('0x62')](_0x10dd33));}var _0x487449={'method':'GET','uri':util[_0x8e2e('0x63')](_0x8e2e('0x64'),_0x3df078),'headers':{'Content-Type':_0x8e2e('0x65'),'Accept':_0x8e2e('0x65')},'json':!![]};if(_0x43ab2c[_0x8e2e('0x59')]==='basic'){_0x487449[_0x8e2e('0x66')]['Authorization']=util[_0x8e2e('0x63')](_0x8e2e('0x67'),new Buffer(util['format'](_0x8e2e('0x68'),_0x43ab2c[_0x8e2e('0x5a')],_0x43ab2c[_0x8e2e('0x5b')]))[_0x8e2e('0x69')](_0x8e2e('0x6a')));}return rp(_0x487449)[_0x8e2e('0x24')](function(_0x2e698e){return _0x2cf92d['concat'](_['map'](_0x2e698e[_0x8e2e('0x6b')][_0x8e2e('0x6c')],function(_0x6a34ec){return{'id':_0x6a34ec[_0x8e2e('0x27')],'name':_0x6a34ec[_0x8e2e('0x27')],'type':_0x6a34ec['type'],'active':_0x6a34ec[_0x8e2e('0x6d')],'label':_0x6a34ec[_0x8e2e('0x6e')],'custom':!![]};}));});}})[_0x8e2e('0x24')](function(_0x46d5bc){return{'count':_0x46d5bc[_0x8e2e('0x47')],'rows':_0x46d5bc};})[_0x8e2e('0x24')](respondWithResult(_0x2b28b9,null))[_0x8e2e('0x43')](function(_0x30a7c3){var _0x3111d5=_0x58056a[_0x8e2e('0x2f')][_0x8e2e('0x6f')]?0x1f4:_0x30a7c3[_0x8e2e('0x70')]||0x1f4;logger[_0x8e2e('0x71')](_0x8e2e('0x72'),_0x8e2e('0x73'),_0x3111d5,JSON['stringify'](_0x30a7c3));delete _0x30a7c3[_0x8e2e('0x27')];if(_0x3111d5===0x191){_0x3111d5=0x190;}_0x2b28b9[_0x8e2e('0x19')](_0x3111d5)[_0x8e2e('0x28')](_0x58056a[_0x8e2e('0x2f')][_0x8e2e('0x6f')]?{'message':_0x8e2e('0x74'),'statusCode':_0x30a7c3[_0x8e2e('0x70')]}:_0x30a7c3);});};
\ No newline at end of file
index 95e05df..ccedc2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45cc=['../../config/environment','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x457b70,_0x4ad72e){var _0x478e0b=function(_0x7c807d){while(--_0x7c807d){_0x457b70['push'](_0x457b70['shift']());}};_0x478e0b(++_0x4ad72e);}(_0x45cc,0xbc));var _0xc45c=function(_0x33f54b,_0x41df7d){_0x33f54b=_0x33f54b-0x0;var _0x191255=_0x45cc[_0x33f54b];return _0x191255;};'use strict';var _=require(_0xc45c('0x0'));var util=require(_0xc45c('0x1'));var logger=require(_0xc45c('0x2'))(_0xc45c('0x3'));var moment=require(_0xc45c('0x4'));var BPromise=require('bluebird');var rp=require(_0xc45c('0x5'));var fs=require('fs');var path=require(_0xc45c('0x6'));var rimraf=require(_0xc45c('0x7'));var config=require(_0xc45c('0x8'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xc45c('0x9'));module[_0xc45c('0xa')]=function(_0x153d71,_0x13950d){return _0x153d71[_0xc45c('0xb')](_0xc45c('0xc'),attributes,{'tableName':_0xc45c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7acc=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','../../config/logger','api','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7acc,0x1b8));var _0xc7ac=function(_0x47b9b9,_0x983930){_0x47b9b9=_0x47b9b9-0x0;var _0x35073b=_0x7acc[_0x47b9b9];return _0x35073b;};'use strict';var _=require(_0xc7ac('0x0'));var util=require('util');var logger=require(_0xc7ac('0x1'))(_0xc7ac('0x2'));var moment=require('moment');var BPromise=require(_0xc7ac('0x3'));var rp=require(_0xc7ac('0x4'));var fs=require('fs');var path=require(_0xc7ac('0x5'));var rimraf=require(_0xc7ac('0x6'));var config=require(_0xc7ac('0x7'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xc7ac('0x8'));module['exports']=function(_0x410508,_0x1a818f){return _0x410508[_0xc7ac('0x9')](_0xc7ac('0xa'),attributes,{'tableName':_0xc7ac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 52071dd..540472c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2379=['debug','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','DeskAccount','findAll','options','raw','where','attributes','limit','include','model','map','GetDeskAccount','stringify','ShowDeskAccount','find'];(function(_0x5b480b,_0x220ed3){var _0x37cea2=function(_0x5381cf){while(--_0x5381cf){_0x5b480b['push'](_0x5b480b['shift']());}};_0x37cea2(++_0x220ed3);}(_0x2379,0x1a5));var _0x9237=function(_0x39b514,_0xc6897c){_0x39b514=_0x39b514-0x0;var _0x1d8416=_0x2379[_0x39b514];return _0x1d8416;};'use strict';var _=require(_0x9237('0x0'));var util=require('util');var moment=require(_0x9237('0x1'));var BPromise=require('bluebird');var rs=require(_0x9237('0x2'));var fs=require('fs');var Redis=require(_0x9237('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9237('0x4'));var logger=require('../../config/logger')(_0x9237('0x5'));var config=require(_0x9237('0x6'));var jayson=require(_0x9237('0x7'));var client=jayson[_0x9237('0x8')][_0x9237('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c765f,_0x310e4e,_0x58330b){return new BPromise(function(_0x2c59f0,_0x2235a2){return client[_0x9237('0xa')](_0x3c765f,_0x58330b)[_0x9237('0xb')](function(_0x576a26){logger[_0x9237('0xc')](_0x9237('0xd'),_0x310e4e,'request\x20sent');logger['debug'](_0x9237('0xe'),_0x310e4e,_0x9237('0xf'),JSON['stringify'](_0x576a26));if(_0x576a26['error']){if(_0x576a26[_0x9237('0x10')]['code']===0x1f4){logger[_0x9237('0x10')](_0x9237('0xd'),_0x310e4e,_0x576a26[_0x9237('0x10')][_0x9237('0x11')]);return _0x2235a2(_0x576a26[_0x9237('0x10')]['message']);}logger[_0x9237('0x10')](_0x9237('0xd'),_0x310e4e,_0x576a26[_0x9237('0x10')][_0x9237('0x11')]);return _0x2c59f0(_0x576a26[_0x9237('0x10')][_0x9237('0x11')]);}else{logger[_0x9237('0xc')]('DeskAccount,\x20%s,\x20%s',_0x310e4e,_0x9237('0xf'));_0x2c59f0(_0x576a26[_0x9237('0x12')][_0x9237('0x11')]);}})[_0x9237('0x13')](function(_0x5be431){logger[_0x9237('0x10')](_0x9237('0xd'),_0x310e4e,_0x5be431);_0x2235a2(_0x5be431);});});}exports['GetDeskAccount']=function(_0x2d457f){var _0x3afe19=this;return new Promise(function(_0x59b11d,_0x5855e2){return db[_0x9237('0x14')][_0x9237('0x15')]({'raw':_0x2d457f[_0x9237('0x16')]?_0x2d457f[_0x9237('0x16')][_0x9237('0x17')]===undefined?!![]:![]:!![],'where':_0x2d457f[_0x9237('0x16')]?_0x2d457f['options'][_0x9237('0x18')]||null:null,'attributes':_0x2d457f['options']?_0x2d457f[_0x9237('0x16')][_0x9237('0x19')]||null:null,'limit':_0x2d457f[_0x9237('0x16')]?_0x2d457f[_0x9237('0x16')][_0x9237('0x1a')]||null:null,'include':_0x2d457f[_0x9237('0x16')]?_0x2d457f['options'][_0x9237('0x1b')]?_['map'](_0x2d457f['options']['include'],function(_0x562b7a){return{'model':db[_0x562b7a[_0x9237('0x1c')]],'as':_0x562b7a['as'],'attributes':_0x562b7a[_0x9237('0x19')],'include':_0x562b7a[_0x9237('0x1b')]?_[_0x9237('0x1d')](_0x562b7a[_0x9237('0x1b')],function(_0x36f63c){return{'model':db[_0x36f63c[_0x9237('0x1c')]],'as':_0x36f63c['as'],'attributes':_0x36f63c[_0x9237('0x19')],'include':_0x36f63c['include']?_['map'](_0x36f63c[_0x9237('0x1b')],function(_0xea16aa){return{'model':db[_0xea16aa[_0x9237('0x1c')]],'as':_0xea16aa['as'],'attributes':_0xea16aa[_0x9237('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9237('0xb')](function(_0x58d5fb){logger[_0x9237('0xc')](_0x9237('0x1e'),_0x2d457f);logger['debug'](_0x9237('0x1e'),_0x2d457f,JSON[_0x9237('0x1f')](_0x58d5fb));_0x59b11d(_0x58d5fb);})['catch'](function(_0x5f2d3d){logger[_0x9237('0x10')](_0x9237('0x1e'),_0x5f2d3d['message'],_0x2d457f);_0x5855e2(_0x3afe19[_0x9237('0x10')](0x1f4,_0x5f2d3d[_0x9237('0x11')]));});});};exports[_0x9237('0x20')]=function(_0x16c3c6){var _0x4f5460=this;return new Promise(function(_0x11e9d7,_0x3bee56){return db[_0x9237('0x14')][_0x9237('0x21')]({'raw':_0x16c3c6[_0x9237('0x16')]?_0x16c3c6[_0x9237('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x16c3c6[_0x9237('0x16')]?_0x16c3c6[_0x9237('0x16')]['where']||null:null,'attributes':_0x16c3c6[_0x9237('0x16')]?_0x16c3c6[_0x9237('0x16')][_0x9237('0x19')]||null:null,'include':_0x16c3c6['options']?_0x16c3c6[_0x9237('0x16')][_0x9237('0x1b')]?_[_0x9237('0x1d')](_0x16c3c6['options'][_0x9237('0x1b')],function(_0x8e0774){return{'model':db[_0x8e0774[_0x9237('0x1c')]],'as':_0x8e0774['as'],'attributes':_0x8e0774[_0x9237('0x19')],'include':_0x8e0774[_0x9237('0x1b')]?_['map'](_0x8e0774['include'],function(_0x1ac7cb){return{'model':db[_0x1ac7cb[_0x9237('0x1c')]],'as':_0x1ac7cb['as'],'attributes':_0x1ac7cb['attributes'],'include':_0x1ac7cb[_0x9237('0x1b')]?_[_0x9237('0x1d')](_0x1ac7cb[_0x9237('0x1b')],function(_0x407c5d){return{'model':db[_0x407c5d[_0x9237('0x1c')]],'as':_0x407c5d['as'],'attributes':_0x407c5d[_0x9237('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9237('0xb')](function(_0x308dcf){logger['info'](_0x9237('0x20'),_0x16c3c6);logger[_0x9237('0x22')](_0x9237('0x20'),_0x16c3c6,JSON[_0x9237('0x1f')](_0x308dcf));_0x11e9d7(_0x308dcf);})['catch'](function(_0x49b84c){logger[_0x9237('0x10')]('ShowDeskAccount',_0x49b84c[_0x9237('0x11')],_0x16c3c6);_0x3bee56(_0x4f5460[_0x9237('0x10')](0x1f4,_0x49b84c[_0x9237('0x11')]));});});};
\ No newline at end of file
+var _0x92a8=['error','DeskAccount,\x20%s,\x20%s','message','info','DeskAccount','options','raw','where','attributes','include','model','map','GetDeskAccount','catch','ShowDeskAccount','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','stringify'];(function(_0x4e71f7,_0x147594){var _0x29970b=function(_0x42d937){while(--_0x42d937){_0x4e71f7['push'](_0x4e71f7['shift']());}};_0x29970b(++_0x147594);}(_0x92a8,0x70));var _0x892a=function(_0x18776a,_0x4fecab){_0x18776a=_0x18776a-0x0;var _0x484e4a=_0x92a8[_0x18776a];return _0x484e4a;};'use strict';var _=require(_0x892a('0x0'));var util=require(_0x892a('0x1'));var moment=require(_0x892a('0x2'));var BPromise=require('bluebird');var rs=require(_0x892a('0x3'));var fs=require('fs');var Redis=require(_0x892a('0x4'));var db=require(_0x892a('0x5'))['db'];var utils=require(_0x892a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x892a('0x7'));var jayson=require(_0x892a('0x8'));var client=jayson[_0x892a('0x9')][_0x892a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e4c10,_0x31bce5,_0x369270){return new BPromise(function(_0x4d5669,_0x57864f){return client[_0x892a('0xb')](_0x3e4c10,_0x369270)[_0x892a('0xc')](function(_0x226875){logger['info']('DeskAccount,\x20%s,\x20%s',_0x31bce5,_0x892a('0xd'));logger[_0x892a('0xe')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x31bce5,_0x892a('0xd'),JSON[_0x892a('0xf')](_0x226875));if(_0x226875[_0x892a('0x10')]){if(_0x226875[_0x892a('0x10')]['code']===0x1f4){logger[_0x892a('0x10')](_0x892a('0x11'),_0x31bce5,_0x226875[_0x892a('0x10')][_0x892a('0x12')]);return _0x57864f(_0x226875[_0x892a('0x10')]['message']);}logger[_0x892a('0x10')](_0x892a('0x11'),_0x31bce5,_0x226875['error'][_0x892a('0x12')]);return _0x4d5669(_0x226875['error']['message']);}else{logger[_0x892a('0x13')]('DeskAccount,\x20%s,\x20%s',_0x31bce5,_0x892a('0xd'));_0x4d5669(_0x226875['result']['message']);}})['catch'](function(_0x47d97c){logger[_0x892a('0x10')](_0x892a('0x11'),_0x31bce5,_0x47d97c);_0x57864f(_0x47d97c);});});}exports['GetDeskAccount']=function(_0x1dd75f){var _0x369c47=this;return new Promise(function(_0x14ea38,_0x53e9f1){return db[_0x892a('0x14')]['findAll']({'raw':_0x1dd75f[_0x892a('0x15')]?_0x1dd75f[_0x892a('0x15')][_0x892a('0x16')]===undefined?!![]:![]:!![],'where':_0x1dd75f[_0x892a('0x15')]?_0x1dd75f[_0x892a('0x15')][_0x892a('0x17')]||null:null,'attributes':_0x1dd75f[_0x892a('0x15')]?_0x1dd75f[_0x892a('0x15')][_0x892a('0x18')]||null:null,'limit':_0x1dd75f[_0x892a('0x15')]?_0x1dd75f[_0x892a('0x15')]['limit']||null:null,'include':_0x1dd75f['options']?_0x1dd75f['options'][_0x892a('0x19')]?_['map'](_0x1dd75f[_0x892a('0x15')][_0x892a('0x19')],function(_0x4ce9d7){return{'model':db[_0x4ce9d7[_0x892a('0x1a')]],'as':_0x4ce9d7['as'],'attributes':_0x4ce9d7[_0x892a('0x18')],'include':_0x4ce9d7[_0x892a('0x19')]?_[_0x892a('0x1b')](_0x4ce9d7['include'],function(_0x4ce815){return{'model':db[_0x4ce815[_0x892a('0x1a')]],'as':_0x4ce815['as'],'attributes':_0x4ce815[_0x892a('0x18')],'include':_0x4ce815[_0x892a('0x19')]?_['map'](_0x4ce815[_0x892a('0x19')],function(_0x18c98e){return{'model':db[_0x18c98e[_0x892a('0x1a')]],'as':_0x18c98e['as'],'attributes':_0x18c98e[_0x892a('0x18')]};}):[]};}):[]};}):[]:[]})[_0x892a('0xc')](function(_0x72f6dc){logger['info'](_0x892a('0x1c'),_0x1dd75f);logger[_0x892a('0xe')](_0x892a('0x1c'),_0x1dd75f,JSON[_0x892a('0xf')](_0x72f6dc));_0x14ea38(_0x72f6dc);})[_0x892a('0x1d')](function(_0x3e9f85){logger[_0x892a('0x10')](_0x892a('0x1c'),_0x3e9f85[_0x892a('0x12')],_0x1dd75f);_0x53e9f1(_0x369c47[_0x892a('0x10')](0x1f4,_0x3e9f85[_0x892a('0x12')]));});});};exports[_0x892a('0x1e')]=function(_0x3fe244){var _0x57968f=this;return new Promise(function(_0x338ab7,_0x5f4abc){return db[_0x892a('0x14')][_0x892a('0x1f')]({'raw':_0x3fe244[_0x892a('0x15')]?_0x3fe244[_0x892a('0x15')][_0x892a('0x16')]===undefined?!![]:![]:!![],'where':_0x3fe244[_0x892a('0x15')]?_0x3fe244[_0x892a('0x15')]['where']||null:null,'attributes':_0x3fe244[_0x892a('0x15')]?_0x3fe244[_0x892a('0x15')][_0x892a('0x18')]||null:null,'include':_0x3fe244[_0x892a('0x15')]?_0x3fe244[_0x892a('0x15')][_0x892a('0x19')]?_[_0x892a('0x1b')](_0x3fe244['options'][_0x892a('0x19')],function(_0x5ec034){return{'model':db[_0x5ec034['model']],'as':_0x5ec034['as'],'attributes':_0x5ec034[_0x892a('0x18')],'include':_0x5ec034[_0x892a('0x19')]?_[_0x892a('0x1b')](_0x5ec034[_0x892a('0x19')],function(_0x11ed6d){return{'model':db[_0x11ed6d[_0x892a('0x1a')]],'as':_0x11ed6d['as'],'attributes':_0x11ed6d['attributes'],'include':_0x11ed6d['include']?_[_0x892a('0x1b')](_0x11ed6d[_0x892a('0x19')],function(_0xcd5fe8){return{'model':db[_0xcd5fe8[_0x892a('0x1a')]],'as':_0xcd5fe8['as'],'attributes':_0xcd5fe8['attributes']};}):[]};}):[]};}):[]:[]})[_0x892a('0xc')](function(_0x608c2d){logger['info'](_0x892a('0x1e'),_0x3fe244);logger[_0x892a('0xe')](_0x892a('0x1e'),_0x3fe244,JSON[_0x892a('0xf')](_0x608c2d));_0x338ab7(_0x608c2d);})['catch'](function(_0x585884){logger[_0x892a('0x10')](_0x892a('0x1e'),_0x585884['message'],_0x3fe244);_0x5f4abc(_0x57968f[_0x892a('0x10')](0x1f4,_0x585884[_0x892a('0x12')]));});});};
\ No newline at end of file
index e8491c7..6d2a9b9 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(_0x1569cf,_0x19aae6){var _0x16faed=function(_0x3a1919){while(--_0x3a1919){_0x1569cf['push'](_0x1569cf['shift']());}};_0x16faed(++_0x19aae6);}(_0x3e74,0x175));var _0x43e7=function(_0x451da3,_0x1eb95c){_0x451da3=_0x451da3-0x0;var _0x10aef0=_0x3e74[_0x451da3];return _0x10aef0;};'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(_0x1c1784,_0x5e3ad5){var _0x356e09=function(_0x43edd3){while(--_0x43edd3){_0x1c1784['push'](_0x1c1784['shift']());}};_0x356e09(++_0x5e3ad5);}(_0x3e74,0x175));var _0x43e7=function(_0x376637,_0x39bffb){_0x376637=_0x376637-0x0;var _0x362b3b=_0x3e74[_0x376637];return _0x362b3b;};'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 9eb127a..f6f3dbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb6=['exports','STRING'];(function(_0x453f54,_0x3f7ff0){var _0x4a1a06=function(_0x5a72d9){while(--_0x5a72d9){_0x453f54['push'](_0x453f54['shift']());}};_0x4a1a06(++_0x3f7ff0);}(_0xcbb6,0x126));var _0x6cbb=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xcbb6[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0x6cbb('0x0')]={'name':{'type':Sequelize[_0x6cbb('0x1')]},'description':{'type':Sequelize[_0x6cbb('0x1')]}};
\ No newline at end of file
+var _0x4921=['STRING','exports'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x4921,0x121));var _0x1492=function(_0x22b6e5,_0x2819c8){_0x22b6e5=_0x22b6e5-0x0;var _0x1c21e5=_0x4921[_0x22b6e5];return _0x1c21e5;};'use strict';var Sequelize=require('sequelize');module[_0x1492('0x0')]={'name':{'type':Sequelize[_0x1492('0x1')]},'description':{'type':Sequelize[_0x1492('0x1')]}};
\ No newline at end of file
index f57e343..03e7b77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf53=['include','find','create','body','catch','findOne','DeskField','filter','getFields','getSubjects','pick','getDescriptions','nolimit','getTags','setTags','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','DeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','model','fields','attributes','length','hasOwnProperty','order','sort','merge','where','map','VIRTUAL','options','includeAll','findAll','show','params','intersection'];(function(_0x4b4277,_0x22676f){var _0x1ff405=function(_0x2fa9e2){while(--_0x2fa9e2){_0x4b4277['push'](_0x4b4277['shift']());}};_0x1ff405(++_0x22676f);}(_0xbf53,0x15f));var _0x3bf5=function(_0x25a66a,_0x5f0501){_0x25a66a=_0x25a66a-0x0;var _0x26d7a9=_0xbf53[_0x25a66a];return _0x26d7a9;};'use strict';var emlformat=require(_0x3bf5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3bf5('0x1'));var jsonpatch=require(_0x3bf5('0x2'));var rp=require(_0x3bf5('0x3'));var moment=require('moment');var BPromise=require(_0x3bf5('0x4'));var Mustache=require('mustache');var util=require(_0x3bf5('0x5'));var path=require(_0x3bf5('0x6'));var sox=require(_0x3bf5('0x7'));var csv=require('to-csv');var ejs=require(_0x3bf5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bf5('0x9'));var squel=require(_0x3bf5('0xa'));var crypto=require(_0x3bf5('0xb'));var jsforce=require(_0x3bf5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3bf5('0xd'));var querystring=require(_0x3bf5('0xe'));var Papa=require(_0x3bf5('0xf'));var Redis=require(_0x3bf5('0x10'));var authService=require(_0x3bf5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3bf5('0x12'));var hardwareService=require(_0x3bf5('0x13'));var logger=require(_0x3bf5('0x14'))(_0x3bf5('0x15'));var utils=require(_0x3bf5('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3bf5('0x17'));var db=require(_0x3bf5('0x18'))['db'];function respondWithStatusCode(_0x5ceffb,_0xe784db){_0xe784db=_0xe784db||0xcc;return function(_0x5a1522){if(_0x5a1522){return _0x5ceffb[_0x3bf5('0x19')](_0xe784db);}return _0x5ceffb[_0x3bf5('0x1a')](_0xe784db)[_0x3bf5('0x1b')]();};}function respondWithResult(_0x4f17f6,_0x2feaa7){_0x2feaa7=_0x2feaa7||0xc8;return function(_0x22ea39){if(_0x22ea39){return _0x4f17f6[_0x3bf5('0x1a')](_0x2feaa7)[_0x3bf5('0x1c')](_0x22ea39);}};}function respondWithFilteredResult(_0x42ca06,_0x243d51){return function(_0x3f9bfe){if(_0x3f9bfe){var _0x53693b=typeof _0x243d51[_0x3bf5('0x1d')]==='undefined'&&typeof _0x243d51['limit']==='undefined';var _0x3afef5=_0x3f9bfe[_0x3bf5('0x1e')];var _0xf2e99a=_0x53693b?0x0:_0x243d51[_0x3bf5('0x1d')];var _0x57e0cf=_0x53693b?_0x3f9bfe[_0x3bf5('0x1e')]:_0x243d51[_0x3bf5('0x1d')]+_0x243d51[_0x3bf5('0x1f')];var _0xc9e9ad;if(_0x57e0cf>=_0x3afef5){_0x57e0cf=_0x3afef5;_0xc9e9ad=0xc8;}else{_0xc9e9ad=0xce;}_0x42ca06[_0x3bf5('0x1a')](_0xc9e9ad);return _0x42ca06[_0x3bf5('0x20')](_0x3bf5('0x21'),_0xf2e99a+'-'+_0x57e0cf+'/'+_0x3afef5)[_0x3bf5('0x1c')](_0x3f9bfe);}return null;};}function patchUpdates(_0x11ff3b){return function(_0x268d69){try{jsonpatch[_0x3bf5('0x22')](_0x268d69,_0x11ff3b,!![]);}catch(_0x5ca947){return BPromise[_0x3bf5('0x23')](_0x5ca947);}return _0x268d69[_0x3bf5('0x24')]();};}function saveUpdates(_0x274fa4,_0xd2ce93){return function(_0x111b10){if(_0x111b10){return _0x111b10['update'](_0x274fa4)[_0x3bf5('0x25')](function(_0x19d60f){return _0x19d60f;});}return null;};}function removeEntity(_0x56bf8b,_0x4b4874){return function(_0x1b7686){if(_0x1b7686){return _0x1b7686[_0x3bf5('0x26')]()[_0x3bf5('0x25')](function(){_0x56bf8b['status'](0xcc)[_0x3bf5('0x1b')]();});}};}function handleEntityNotFound(_0x22ec0e,_0x512c18){return function(_0x11f011){if(!_0x11f011){_0x22ec0e[_0x3bf5('0x19')](0x194);}return _0x11f011;};}function handleError(_0x4bf93c,_0x5cb890){_0x5cb890=_0x5cb890||0x1f4;return function(_0x246c7c){logger[_0x3bf5('0x27')](_0x246c7c[_0x3bf5('0x28')]);if(_0x246c7c[_0x3bf5('0x29')]){delete _0x246c7c[_0x3bf5('0x29')];}_0x4bf93c[_0x3bf5('0x1a')](_0x5cb890)[_0x3bf5('0x2a')](_0x246c7c);};}exports[_0x3bf5('0x2b')]=function(_0x1d8832,_0x2df9df){var _0x46526d={},_0x587d00={},_0x32aae0={'count':0x0,'rows':[]};var _0x3801fa=_['map'](db[_0x3bf5('0x2c')][_0x3bf5('0x2d')],function(_0x406926){return{'name':_0x406926[_0x3bf5('0x2e')],'type':_0x406926[_0x3bf5('0x2f')][_0x3bf5('0x30')]};});_0x587d00['model']=_['map'](_0x3801fa,'name');_0x587d00[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0x1d8832[_0x3bf5('0x31')]);_0x587d00[_0x3bf5('0x33')]=_['intersection'](_0x587d00[_0x3bf5('0x34')],_0x587d00['query']);_0x46526d['attributes']=_['intersection'](_0x587d00[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0x1d8832['query'][_0x3bf5('0x35')]));_0x46526d[_0x3bf5('0x36')]=_0x46526d[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x46526d[_0x3bf5('0x36')]:_0x587d00[_0x3bf5('0x34')];if(!_0x1d8832[_0x3bf5('0x31')][_0x3bf5('0x38')]('nolimit')){_0x46526d[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x1d8832[_0x3bf5('0x31')]['limit']);_0x46526d[_0x3bf5('0x1d')]=qs['offset'](_0x1d8832['query'][_0x3bf5('0x1d')]);}_0x46526d[_0x3bf5('0x39')]=qs['sort'](_0x1d8832[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x46526d['where']=qs[_0x3bf5('0x33')](_['pick'](_0x1d8832[_0x3bf5('0x31')],_0x587d00[_0x3bf5('0x33')]),_0x3801fa);if(_0x1d8832[_0x3bf5('0x31')]['filter']){_0x46526d['where']=_[_0x3bf5('0x3b')](_0x46526d[_0x3bf5('0x3c')],{'$or':_[_0x3bf5('0x3d')](_0x3801fa,function(_0x1b9b4a){if(_0x1b9b4a[_0x3bf5('0x2f')]!==_0x3bf5('0x3e')){var _0x586abd={};_0x586abd[_0x1b9b4a[_0x3bf5('0x29')]]={'$like':'%'+_0x1d8832[_0x3bf5('0x31')]['filter']+'%'};return _0x586abd;}})});}_0x46526d=_[_0x3bf5('0x3b')]({},_0x46526d,_0x1d8832[_0x3bf5('0x3f')]);var _0x429c9d={'where':_0x46526d[_0x3bf5('0x3c')]};return db[_0x3bf5('0x2c')]['count'](_0x429c9d)[_0x3bf5('0x25')](function(_0x1925d0){_0x32aae0['count']=_0x1925d0;if(_0x1d8832[_0x3bf5('0x31')][_0x3bf5('0x40')]){_0x46526d['include']=[{'all':!![]}];}return db['DeskConfiguration'][_0x3bf5('0x41')](_0x46526d);})['then'](function(_0x4695a8){_0x32aae0['rows']=_0x4695a8;return _0x32aae0;})[_0x3bf5('0x25')](respondWithFilteredResult(_0x2df9df,_0x46526d))['catch'](handleError(_0x2df9df,null));};exports[_0x3bf5('0x42')]=function(_0xc7903b,_0xa54e9e){var _0x38dbe1={'raw':![],'where':{'id':_0xc7903b[_0x3bf5('0x43')]['id']}},_0x30a23e={};_0x30a23e['model']=_['keys'](db['DeskConfiguration'][_0x3bf5('0x2d')]);_0x30a23e[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0xc7903b[_0x3bf5('0x31')]);_0x30a23e['filters']=_[_0x3bf5('0x44')](_0x30a23e['model'],_0x30a23e[_0x3bf5('0x31')]);_0x38dbe1[_0x3bf5('0x36')]=_[_0x3bf5('0x44')](_0x30a23e[_0x3bf5('0x34')],qs['fields'](_0xc7903b[_0x3bf5('0x31')][_0x3bf5('0x35')]));_0x38dbe1[_0x3bf5('0x36')]=_0x38dbe1[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x38dbe1[_0x3bf5('0x36')]:_0x30a23e[_0x3bf5('0x34')];if(_0xc7903b[_0x3bf5('0x31')][_0x3bf5('0x40')]){_0x38dbe1[_0x3bf5('0x45')]=[{'all':!![]}];}_0x38dbe1=_[_0x3bf5('0x3b')]({},_0x38dbe1,_0xc7903b[_0x3bf5('0x3f')]);return db[_0x3bf5('0x2c')][_0x3bf5('0x46')](_0x38dbe1)['then'](handleEntityNotFound(_0xa54e9e,null))['then'](respondWithResult(_0xa54e9e,null))['catch'](handleError(_0xa54e9e,null));};exports[_0x3bf5('0x47')]=function(_0x101615,_0x4c5be0){return db[_0x3bf5('0x2c')][_0x3bf5('0x47')](_0x101615[_0x3bf5('0x48')],{})[_0x3bf5('0x25')](respondWithResult(_0x4c5be0,0xc9))[_0x3bf5('0x49')](handleError(_0x4c5be0,null));};exports['update']=function(_0x4ae114,_0x4a7fe3){if(_0x4ae114[_0x3bf5('0x48')]['id']){delete _0x4ae114[_0x3bf5('0x48')]['id'];}return db[_0x3bf5('0x2c')][_0x3bf5('0x46')]({'where':{'id':_0x4ae114[_0x3bf5('0x43')]['id']}})['then'](handleEntityNotFound(_0x4a7fe3,null))[_0x3bf5('0x25')](saveUpdates(_0x4ae114[_0x3bf5('0x48')],null))[_0x3bf5('0x25')](respondWithResult(_0x4a7fe3,null))[_0x3bf5('0x49')](handleError(_0x4a7fe3,null));};exports[_0x3bf5('0x26')]=function(_0x4a35d9,_0x43730c){return db[_0x3bf5('0x2c')][_0x3bf5('0x46')]({'where':{'id':_0x4a35d9[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x43730c,null))[_0x3bf5('0x25')](removeEntity(_0x43730c,null))['catch'](handleError(_0x43730c,null));};exports['getFields']=function(_0x26fe2e,_0x4bb463,_0x1a21d2){var _0x1cf801={};var _0x476ad7={};var _0x13982c;var _0x494fea;return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x26fe2e[_0x3bf5('0x43')]['id']}})['then'](handleEntityNotFound(_0x4bb463,null))['then'](function(_0x479c81){if(_0x479c81){_0x13982c=_0x479c81;_0x476ad7[_0x3bf5('0x34')]=_['keys'](db[_0x3bf5('0x4b')]['rawAttributes']);_0x476ad7['query']=_['keys'](_0x26fe2e['query']);_0x476ad7[_0x3bf5('0x33')]=_[_0x3bf5('0x44')](_0x476ad7['model'],_0x476ad7[_0x3bf5('0x31')]);_0x1cf801[_0x3bf5('0x36')]=_['intersection'](_0x476ad7[_0x3bf5('0x34')],qs['fields'](_0x26fe2e['query'][_0x3bf5('0x35')]));_0x1cf801[_0x3bf5('0x36')]=_0x1cf801[_0x3bf5('0x36')]['length']?_0x1cf801[_0x3bf5('0x36')]:_0x476ad7[_0x3bf5('0x34')];_0x1cf801['order']=qs['sort'](_0x26fe2e['query']['sort']);_0x1cf801[_0x3bf5('0x3c')]=qs[_0x3bf5('0x33')](_['pick'](_0x26fe2e[_0x3bf5('0x31')],_0x476ad7[_0x3bf5('0x33')]));if(_0x26fe2e[_0x3bf5('0x31')][_0x3bf5('0x4c')]){_0x1cf801['where']=_['merge'](_0x1cf801['where'],{'$or':_[_0x3bf5('0x3d')](_0x1cf801[_0x3bf5('0x36')],function(_0x30a391){var _0x4496b3={};_0x4496b3[_0x30a391]={'$like':'%'+_0x26fe2e[_0x3bf5('0x31')][_0x3bf5('0x4c')]+'%'};return _0x4496b3;})});}_0x1cf801=_[_0x3bf5('0x3b')]({},_0x1cf801,_0x26fe2e[_0x3bf5('0x3f')]);return _0x13982c['getFields'](_0x1cf801);}})[_0x3bf5('0x25')](function(_0x2487b2){if(_0x2487b2){_0x494fea=_0x2487b2[_0x3bf5('0x37')];if(!_0x26fe2e[_0x3bf5('0x31')]['hasOwnProperty']('nolimit')){_0x1cf801[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x26fe2e['query'][_0x3bf5('0x1f')]);_0x1cf801['offset']=qs[_0x3bf5('0x1d')](_0x26fe2e[_0x3bf5('0x31')][_0x3bf5('0x1d')]);}return _0x13982c[_0x3bf5('0x4d')](_0x1cf801);}})['then'](function(_0x27341e){if(_0x27341e){return _0x27341e?{'count':_0x494fea,'rows':_0x27341e}:null;}})['then'](respondWithResult(_0x4bb463,null))[_0x3bf5('0x49')](handleError(_0x4bb463,null));};exports[_0x3bf5('0x4e')]=function(_0x3e51fe,_0x3ef92a,_0x1ff75b){var _0x3d7633={};var _0x1efb39={};var _0x59db75;var _0x4a9d79;return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x3e51fe[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x3ef92a,null))['then'](function(_0x1eb31d){if(_0x1eb31d){_0x59db75=_0x1eb31d;_0x1efb39[_0x3bf5('0x34')]=_[_0x3bf5('0x32')](db[_0x3bf5('0x4b')]['rawAttributes']);_0x1efb39[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0x3e51fe[_0x3bf5('0x31')]);_0x1efb39[_0x3bf5('0x33')]=_['intersection'](_0x1efb39['model'],_0x1efb39[_0x3bf5('0x31')]);_0x3d7633[_0x3bf5('0x36')]=_[_0x3bf5('0x44')](_0x1efb39[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0x3e51fe[_0x3bf5('0x31')][_0x3bf5('0x35')]));_0x3d7633[_0x3bf5('0x36')]=_0x3d7633[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x3d7633[_0x3bf5('0x36')]:_0x1efb39[_0x3bf5('0x34')];_0x3d7633['order']=qs[_0x3bf5('0x3a')](_0x3e51fe[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x3d7633['where']=qs[_0x3bf5('0x33')](_[_0x3bf5('0x4f')](_0x3e51fe[_0x3bf5('0x31')],_0x1efb39[_0x3bf5('0x33')]));if(_0x3e51fe['query']['filter']){_0x3d7633[_0x3bf5('0x3c')]=_[_0x3bf5('0x3b')](_0x3d7633[_0x3bf5('0x3c')],{'$or':_[_0x3bf5('0x3d')](_0x3d7633[_0x3bf5('0x36')],function(_0x35558c){var _0x4a76cc={};_0x4a76cc[_0x35558c]={'$like':'%'+_0x3e51fe[_0x3bf5('0x31')][_0x3bf5('0x4c')]+'%'};return _0x4a76cc;})});}_0x3d7633=_[_0x3bf5('0x3b')]({},_0x3d7633,_0x3e51fe[_0x3bf5('0x3f')]);return _0x59db75[_0x3bf5('0x4e')](_0x3d7633);}})[_0x3bf5('0x25')](function(_0x15a57c){if(_0x15a57c){_0x4a9d79=_0x15a57c[_0x3bf5('0x37')];if(!_0x3e51fe['query'][_0x3bf5('0x38')]('nolimit')){_0x3d7633[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x3e51fe[_0x3bf5('0x31')]['limit']);_0x3d7633['offset']=qs[_0x3bf5('0x1d')](_0x3e51fe['query'][_0x3bf5('0x1d')]);}return _0x59db75[_0x3bf5('0x4e')](_0x3d7633);}})[_0x3bf5('0x25')](function(_0x502e21){if(_0x502e21){return _0x502e21?{'count':_0x4a9d79,'rows':_0x502e21}:null;}})[_0x3bf5('0x25')](respondWithResult(_0x3ef92a,null))[_0x3bf5('0x49')](handleError(_0x3ef92a,null));};exports[_0x3bf5('0x50')]=function(_0xc6185e,_0x47eae6,_0x592327){var _0x376e2f={};var _0xed3d61={};var _0x577b16;var _0x1a75e4;return db[_0x3bf5('0x2c')]['findOne']({'where':{'id':_0xc6185e[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x47eae6,null))[_0x3bf5('0x25')](function(_0x269af6){if(_0x269af6){_0x577b16=_0x269af6;_0xed3d61[_0x3bf5('0x34')]=_[_0x3bf5('0x32')](db[_0x3bf5('0x4b')]['rawAttributes']);_0xed3d61['query']=_['keys'](_0xc6185e[_0x3bf5('0x31')]);_0xed3d61['filters']=_[_0x3bf5('0x44')](_0xed3d61[_0x3bf5('0x34')],_0xed3d61['query']);_0x376e2f['attributes']=_['intersection'](_0xed3d61[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x35')]));_0x376e2f[_0x3bf5('0x36')]=_0x376e2f[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x376e2f[_0x3bf5('0x36')]:_0xed3d61[_0x3bf5('0x34')];_0x376e2f[_0x3bf5('0x39')]=qs[_0x3bf5('0x3a')](_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x376e2f[_0x3bf5('0x3c')]=qs['filters'](_[_0x3bf5('0x4f')](_0xc6185e['query'],_0xed3d61[_0x3bf5('0x33')]));if(_0xc6185e[_0x3bf5('0x31')]['filter']){_0x376e2f['where']=_['merge'](_0x376e2f['where'],{'$or':_[_0x3bf5('0x3d')](_0x376e2f[_0x3bf5('0x36')],function(_0x555917){var _0x4c976e={};_0x4c976e[_0x555917]={'$like':'%'+_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x4c')]+'%'};return _0x4c976e;})});}_0x376e2f=_[_0x3bf5('0x3b')]({},_0x376e2f,_0xc6185e['options']);return _0x577b16[_0x3bf5('0x50')](_0x376e2f);}})['then'](function(_0x391f5e){if(_0x391f5e){_0x1a75e4=_0x391f5e[_0x3bf5('0x37')];if(!_0xc6185e[_0x3bf5('0x31')]['hasOwnProperty'](_0x3bf5('0x51'))){_0x376e2f['limit']=qs[_0x3bf5('0x1f')](_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x1f')]);_0x376e2f[_0x3bf5('0x1d')]=qs[_0x3bf5('0x1d')](_0xc6185e['query'][_0x3bf5('0x1d')]);}return _0x577b16['getDescriptions'](_0x376e2f);}})[_0x3bf5('0x25')](function(_0x10bd44){if(_0x10bd44){return _0x10bd44?{'count':_0x1a75e4,'rows':_0x10bd44}:null;}})[_0x3bf5('0x25')](respondWithResult(_0x47eae6,null))[_0x3bf5('0x49')](handleError(_0x47eae6,null));};exports[_0x3bf5('0x52')]=function(_0x4f28e4,_0x267157,_0x10bf66){var _0x4cd62f={};var _0x1b54fc={};var _0x1d75fc;var _0x3989d7;return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x4f28e4['params']['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x267157,null))['then'](function(_0x535332){if(_0x535332){_0x1d75fc=_0x535332;_0x1b54fc[_0x3bf5('0x34')]=_[_0x3bf5('0x32')](db['Tag'][_0x3bf5('0x2d')]);_0x1b54fc[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0x4f28e4[_0x3bf5('0x31')]);_0x1b54fc[_0x3bf5('0x33')]=_[_0x3bf5('0x44')](_0x1b54fc[_0x3bf5('0x34')],_0x1b54fc[_0x3bf5('0x31')]);_0x4cd62f[_0x3bf5('0x36')]=_[_0x3bf5('0x44')](_0x1b54fc[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0x4f28e4['query'][_0x3bf5('0x35')]));_0x4cd62f[_0x3bf5('0x36')]=_0x4cd62f['attributes'][_0x3bf5('0x37')]?_0x4cd62f[_0x3bf5('0x36')]:_0x1b54fc[_0x3bf5('0x34')];_0x4cd62f[_0x3bf5('0x39')]=qs[_0x3bf5('0x3a')](_0x4f28e4[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x4cd62f['where']=qs[_0x3bf5('0x33')](_[_0x3bf5('0x4f')](_0x4f28e4['query'],_0x1b54fc['filters']));if(_0x4f28e4['query']['filter']){_0x4cd62f['where']=_[_0x3bf5('0x3b')](_0x4cd62f['where'],{'$or':_['map'](_0x4cd62f[_0x3bf5('0x36')],function(_0x15183e){var _0xa1fc0c={};_0xa1fc0c[_0x15183e]={'$like':'%'+_0x4f28e4[_0x3bf5('0x31')]['filter']+'%'};return _0xa1fc0c;})});}_0x4cd62f=_[_0x3bf5('0x3b')]({},_0x4cd62f,_0x4f28e4[_0x3bf5('0x3f')]);return _0x1d75fc[_0x3bf5('0x52')](_0x4cd62f);}})[_0x3bf5('0x25')](function(_0x1d2513){if(_0x1d2513){_0x3989d7=_0x1d2513[_0x3bf5('0x37')];if(!_0x4f28e4['query'][_0x3bf5('0x38')](_0x3bf5('0x51'))){_0x4cd62f[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x4f28e4[_0x3bf5('0x31')][_0x3bf5('0x1f')]);_0x4cd62f['offset']=qs[_0x3bf5('0x1d')](_0x4f28e4['query'][_0x3bf5('0x1d')]);}return _0x1d75fc['getTags'](_0x4cd62f);}})['then'](function(_0x388e67){if(_0x388e67){return _0x388e67?{'count':_0x3989d7,'rows':_0x388e67}:null;}})[_0x3bf5('0x25')](respondWithResult(_0x267157,null))[_0x3bf5('0x49')](handleError(_0x267157,null));};exports[_0x3bf5('0x53')]=function(_0x5358c1,_0x4e9968,_0x4d985d){if(_0x5358c1[_0x3bf5('0x48')]['id']){delete _0x5358c1[_0x3bf5('0x48')]['id'];}return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x5358c1[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x4e9968,null))[_0x3bf5('0x25')](function(_0x55b5b2){if(_0x55b5b2){return _0x55b5b2['setTags'](_0x5358c1[_0x3bf5('0x48')]['ids']||[]);}return null;})[_0x3bf5('0x25')](respondWithResult(_0x4e9968,null))[_0x3bf5('0x49')](handleError(_0x4e9968,null));};
\ No newline at end of file
+var _0x80a6=['key','keys','filters','intersection','model','fields','query','attributes','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','body','update','find','getFields','DeskField','nolimit','findOne','getSubjects','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','save','destroy','then','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','type'];(function(_0x42540c,_0x2327cd){var _0x1aaa11=function(_0x3e8e54){while(--_0x3e8e54){_0x42540c['push'](_0x42540c['shift']());}};_0x1aaa11(++_0x2327cd);}(_0x80a6,0x172));var _0x680a=function(_0x29d4dd,_0x2606a3){_0x29d4dd=_0x29d4dd-0x0;var _0x2671c8=_0x80a6[_0x29d4dd];return _0x2671c8;};'use strict';var emlformat=require(_0x680a('0x0'));var rimraf=require(_0x680a('0x1'));var zipdir=require(_0x680a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x680a('0x3'));var moment=require(_0x680a('0x4'));var BPromise=require(_0x680a('0x5'));var Mustache=require(_0x680a('0x6'));var util=require('util');var path=require(_0x680a('0x7'));var sox=require(_0x680a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x680a('0x9'));var _=require('lodash');var squel=require(_0x680a('0xa'));var crypto=require(_0x680a('0xb'));var jsforce=require(_0x680a('0xc'));var deskjs=require(_0x680a('0xd'));var toCsv=require(_0x680a('0xe'));var querystring=require('querystring');var Papa=require(_0x680a('0xf'));var Redis=require(_0x680a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x680a('0x11'));var as=require(_0x680a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x680a('0x13'))(_0x680a('0x14'));var utils=require(_0x680a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x680a('0x16'));var db=require(_0x680a('0x17'))['db'];function respondWithStatusCode(_0x57450e,_0x14d7ad){_0x14d7ad=_0x14d7ad||0xcc;return function(_0x4ad574){if(_0x4ad574){return _0x57450e[_0x680a('0x18')](_0x14d7ad);}return _0x57450e[_0x680a('0x19')](_0x14d7ad)[_0x680a('0x1a')]();};}function respondWithResult(_0x32979f,_0x496aaa){_0x496aaa=_0x496aaa||0xc8;return function(_0x5eea74){if(_0x5eea74){return _0x32979f[_0x680a('0x19')](_0x496aaa)[_0x680a('0x1b')](_0x5eea74);}};}function respondWithFilteredResult(_0x345e93,_0x3aedef){return function(_0x43a393){if(_0x43a393){var _0x2b9f82=typeof _0x3aedef['offset']===_0x680a('0x1c')&&typeof _0x3aedef[_0x680a('0x1d')]==='undefined';var _0x4f03c5=_0x43a393[_0x680a('0x1e')];var _0x4bda21=_0x2b9f82?0x0:_0x3aedef['offset'];var _0x516003=_0x2b9f82?_0x43a393['count']:_0x3aedef['offset']+_0x3aedef['limit'];var _0x3ccdd7;if(_0x516003>=_0x4f03c5){_0x516003=_0x4f03c5;_0x3ccdd7=0xc8;}else{_0x3ccdd7=0xce;}_0x345e93[_0x680a('0x19')](_0x3ccdd7);return _0x345e93[_0x680a('0x1f')](_0x680a('0x20'),_0x4bda21+'-'+_0x516003+'/'+_0x4f03c5)[_0x680a('0x1b')](_0x43a393);}return null;};}function patchUpdates(_0x2cc7ba){return function(_0x5b41bb){try{jsonpatch[_0x680a('0x21')](_0x5b41bb,_0x2cc7ba,!![]);}catch(_0x2b077b){return BPromise['reject'](_0x2b077b);}return _0x5b41bb[_0x680a('0x22')]();};}function saveUpdates(_0x3b704d,_0x114b4a){return function(_0x4f32a9){if(_0x4f32a9){return _0x4f32a9['update'](_0x3b704d)['then'](function(_0x237175){return _0x237175;});}return null;};}function removeEntity(_0x57c704,_0x2d7e74){return function(_0x508f4e){if(_0x508f4e){return _0x508f4e[_0x680a('0x23')]()[_0x680a('0x24')](function(){_0x57c704[_0x680a('0x19')](0xcc)[_0x680a('0x1a')]();});}};}function handleEntityNotFound(_0x3406d8,_0x3b9543){return function(_0x1ec32a){if(!_0x1ec32a){_0x3406d8[_0x680a('0x18')](0x194);}return _0x1ec32a;};}function handleError(_0x34ca28,_0x10b2c7){_0x10b2c7=_0x10b2c7||0x1f4;return function(_0x4f263e){logger['error'](_0x4f263e[_0x680a('0x25')]);if(_0x4f263e[_0x680a('0x26')]){delete _0x4f263e[_0x680a('0x26')];}_0x34ca28[_0x680a('0x19')](_0x10b2c7)[_0x680a('0x27')](_0x4f263e);};}exports['index']=function(_0x4757ef,_0x1b4ba5){var _0x349f49={},_0x53de6b={},_0x375799={'count':0x0,'rows':[]};var _0x280969=_[_0x680a('0x28')](db[_0x680a('0x29')][_0x680a('0x2a')],function(_0x54710e){return{'name':_0x54710e[_0x680a('0x2b')],'type':_0x54710e[_0x680a('0x2c')][_0x680a('0x2d')]};});_0x53de6b['model']=_[_0x680a('0x28')](_0x280969,_0x680a('0x26'));_0x53de6b['query']=_[_0x680a('0x2e')](_0x4757ef['query']);_0x53de6b[_0x680a('0x2f')]=_[_0x680a('0x30')](_0x53de6b[_0x680a('0x31')],_0x53de6b['query']);_0x349f49['attributes']=_[_0x680a('0x30')](_0x53de6b[_0x680a('0x31')],qs[_0x680a('0x32')](_0x4757ef[_0x680a('0x33')][_0x680a('0x32')]));_0x349f49[_0x680a('0x34')]=_0x349f49[_0x680a('0x34')]['length']?_0x349f49[_0x680a('0x34')]:_0x53de6b[_0x680a('0x31')];if(!_0x4757ef['query'][_0x680a('0x35')]('nolimit')){_0x349f49[_0x680a('0x1d')]=qs[_0x680a('0x1d')](_0x4757ef['query']['limit']);_0x349f49[_0x680a('0x36')]=qs[_0x680a('0x36')](_0x4757ef[_0x680a('0x33')][_0x680a('0x36')]);}_0x349f49[_0x680a('0x37')]=qs['sort'](_0x4757ef[_0x680a('0x33')][_0x680a('0x38')]);_0x349f49[_0x680a('0x39')]=qs['filters'](_[_0x680a('0x3a')](_0x4757ef['query'],_0x53de6b[_0x680a('0x2f')]),_0x280969);if(_0x4757ef[_0x680a('0x33')][_0x680a('0x3b')]){_0x349f49[_0x680a('0x39')]=_[_0x680a('0x3c')](_0x349f49[_0x680a('0x39')],{'$or':_[_0x680a('0x28')](_0x280969,function(_0xd65989){if(_0xd65989[_0x680a('0x2c')]!==_0x680a('0x3d')){var _0x1ac904={};_0x1ac904[_0xd65989[_0x680a('0x26')]]={'$like':'%'+_0x4757ef['query'][_0x680a('0x3b')]+'%'};return _0x1ac904;}})});}_0x349f49=_[_0x680a('0x3c')]({},_0x349f49,_0x4757ef['options']);var _0x5cecee={'where':_0x349f49[_0x680a('0x39')]};return db['DeskConfiguration']['count'](_0x5cecee)['then'](function(_0x14c817){_0x375799[_0x680a('0x1e')]=_0x14c817;if(_0x4757ef[_0x680a('0x33')][_0x680a('0x3e')]){_0x349f49['include']=[{'all':!![]}];}return db['DeskConfiguration'][_0x680a('0x3f')](_0x349f49);})['then'](function(_0x9bd62a){_0x375799[_0x680a('0x40')]=_0x9bd62a;return _0x375799;})[_0x680a('0x24')](respondWithFilteredResult(_0x1b4ba5,_0x349f49))[_0x680a('0x41')](handleError(_0x1b4ba5,null));};exports[_0x680a('0x42')]=function(_0x28cd8f,_0x7308dd){var _0x19c1b6={'raw':![],'where':{'id':_0x28cd8f[_0x680a('0x43')]['id']}},_0x2e8c0f={};_0x2e8c0f['model']=_[_0x680a('0x2e')](db['DeskConfiguration'][_0x680a('0x2a')]);_0x2e8c0f[_0x680a('0x33')]=_[_0x680a('0x2e')](_0x28cd8f[_0x680a('0x33')]);_0x2e8c0f[_0x680a('0x2f')]=_['intersection'](_0x2e8c0f['model'],_0x2e8c0f[_0x680a('0x33')]);_0x19c1b6['attributes']=_['intersection'](_0x2e8c0f[_0x680a('0x31')],qs['fields'](_0x28cd8f['query']['fields']));_0x19c1b6[_0x680a('0x34')]=_0x19c1b6['attributes'][_0x680a('0x44')]?_0x19c1b6['attributes']:_0x2e8c0f['model'];if(_0x28cd8f[_0x680a('0x33')][_0x680a('0x3e')]){_0x19c1b6[_0x680a('0x45')]=[{'all':!![]}];}_0x19c1b6=_[_0x680a('0x3c')]({},_0x19c1b6,_0x28cd8f[_0x680a('0x46')]);return db['DeskConfiguration']['find'](_0x19c1b6)['then'](handleEntityNotFound(_0x7308dd,null))[_0x680a('0x24')](respondWithResult(_0x7308dd,null))[_0x680a('0x41')](handleError(_0x7308dd,null));};exports['create']=function(_0x5e95ab,_0x3dff09){return db[_0x680a('0x29')]['create'](_0x5e95ab[_0x680a('0x47')],{})[_0x680a('0x24')](respondWithResult(_0x3dff09,0xc9))[_0x680a('0x41')](handleError(_0x3dff09,null));};exports[_0x680a('0x48')]=function(_0x167154,_0x35c21f){if(_0x167154[_0x680a('0x47')]['id']){delete _0x167154[_0x680a('0x47')]['id'];}return db[_0x680a('0x29')][_0x680a('0x49')]({'where':{'id':_0x167154['params']['id']}})[_0x680a('0x24')](handleEntityNotFound(_0x35c21f,null))['then'](saveUpdates(_0x167154['body'],null))[_0x680a('0x24')](respondWithResult(_0x35c21f,null))[_0x680a('0x41')](handleError(_0x35c21f,null));};exports[_0x680a('0x23')]=function(_0x5ea67f,_0x879394){return db[_0x680a('0x29')][_0x680a('0x49')]({'where':{'id':_0x5ea67f[_0x680a('0x43')]['id']}})[_0x680a('0x24')](handleEntityNotFound(_0x879394,null))[_0x680a('0x24')](removeEntity(_0x879394,null))['catch'](handleError(_0x879394,null));};exports[_0x680a('0x4a')]=function(_0x2109de,_0x760b4d,_0x47bc20){var _0x2f5e19={};var _0x16c0e6={};var _0x53b33e;var _0x12e4f7;return db[_0x680a('0x29')]['findOne']({'where':{'id':_0x2109de['params']['id']}})[_0x680a('0x24')](handleEntityNotFound(_0x760b4d,null))[_0x680a('0x24')](function(_0x423014){if(_0x423014){_0x53b33e=_0x423014;_0x16c0e6[_0x680a('0x31')]=_[_0x680a('0x2e')](db[_0x680a('0x4b')][_0x680a('0x2a')]);_0x16c0e6[_0x680a('0x33')]=_['keys'](_0x2109de[_0x680a('0x33')]);_0x16c0e6[_0x680a('0x2f')]=_[_0x680a('0x30')](_0x16c0e6[_0x680a('0x31')],_0x16c0e6['query']);_0x2f5e19[_0x680a('0x34')]=_[_0x680a('0x30')](_0x16c0e6[_0x680a('0x31')],qs[_0x680a('0x32')](_0x2109de[_0x680a('0x33')][_0x680a('0x32')]));_0x2f5e19[_0x680a('0x34')]=_0x2f5e19[_0x680a('0x34')][_0x680a('0x44')]?_0x2f5e19[_0x680a('0x34')]:_0x16c0e6['model'];_0x2f5e19[_0x680a('0x37')]=qs['sort'](_0x2109de[_0x680a('0x33')][_0x680a('0x38')]);_0x2f5e19[_0x680a('0x39')]=qs['filters'](_[_0x680a('0x3a')](_0x2109de[_0x680a('0x33')],_0x16c0e6['filters']));if(_0x2109de['query'][_0x680a('0x3b')]){_0x2f5e19[_0x680a('0x39')]=_['merge'](_0x2f5e19[_0x680a('0x39')],{'$or':_[_0x680a('0x28')](_0x2f5e19[_0x680a('0x34')],function(_0x263b6b){var _0x31a239={};_0x31a239[_0x263b6b]={'$like':'%'+_0x2109de[_0x680a('0x33')][_0x680a('0x3b')]+'%'};return _0x31a239;})});}_0x2f5e19=_[_0x680a('0x3c')]({},_0x2f5e19,_0x2109de[_0x680a('0x46')]);return _0x53b33e[_0x680a('0x4a')](_0x2f5e19);}})[_0x680a('0x24')](function(_0x1a03bb){if(_0x1a03bb){_0x12e4f7=_0x1a03bb[_0x680a('0x44')];if(!_0x2109de['query'][_0x680a('0x35')](_0x680a('0x4c'))){_0x2f5e19['limit']=qs[_0x680a('0x1d')](_0x2109de[_0x680a('0x33')][_0x680a('0x1d')]);_0x2f5e19[_0x680a('0x36')]=qs[_0x680a('0x36')](_0x2109de[_0x680a('0x33')][_0x680a('0x36')]);}return _0x53b33e[_0x680a('0x4a')](_0x2f5e19);}})[_0x680a('0x24')](function(_0x3fc57d){if(_0x3fc57d){return _0x3fc57d?{'count':_0x12e4f7,'rows':_0x3fc57d}:null;}})[_0x680a('0x24')](respondWithResult(_0x760b4d,null))['catch'](handleError(_0x760b4d,null));};exports['getSubjects']=function(_0x9dde02,_0x15fe9a,_0x178662){var _0x4f6fe6={};var _0x4caa32={};var _0x174dc5;var _0x24bf47;return db[_0x680a('0x29')][_0x680a('0x4d')]({'where':{'id':_0x9dde02[_0x680a('0x43')]['id']}})[_0x680a('0x24')](handleEntityNotFound(_0x15fe9a,null))['then'](function(_0x8cc33c){if(_0x8cc33c){_0x174dc5=_0x8cc33c;_0x4caa32[_0x680a('0x31')]=_[_0x680a('0x2e')](db['DeskField'][_0x680a('0x2a')]);_0x4caa32[_0x680a('0x33')]=_['keys'](_0x9dde02[_0x680a('0x33')]);_0x4caa32[_0x680a('0x2f')]=_[_0x680a('0x30')](_0x4caa32[_0x680a('0x31')],_0x4caa32[_0x680a('0x33')]);_0x4f6fe6[_0x680a('0x34')]=_[_0x680a('0x30')](_0x4caa32[_0x680a('0x31')],qs[_0x680a('0x32')](_0x9dde02['query'][_0x680a('0x32')]));_0x4f6fe6['attributes']=_0x4f6fe6['attributes'][_0x680a('0x44')]?_0x4f6fe6[_0x680a('0x34')]:_0x4caa32['model'];_0x4f6fe6[_0x680a('0x37')]=qs[_0x680a('0x38')](_0x9dde02[_0x680a('0x33')][_0x680a('0x38')]);_0x4f6fe6[_0x680a('0x39')]=qs['filters'](_[_0x680a('0x3a')](_0x9dde02['query'],_0x4caa32['filters']));if(_0x9dde02['query']['filter']){_0x4f6fe6[_0x680a('0x39')]=_[_0x680a('0x3c')](_0x4f6fe6[_0x680a('0x39')],{'$or':_['map'](_0x4f6fe6['attributes'],function(_0x55cf8f){var _0x260c5f={};_0x260c5f[_0x55cf8f]={'$like':'%'+_0x9dde02['query']['filter']+'%'};return _0x260c5f;})});}_0x4f6fe6=_[_0x680a('0x3c')]({},_0x4f6fe6,_0x9dde02['options']);return _0x174dc5[_0x680a('0x4e')](_0x4f6fe6);}})[_0x680a('0x24')](function(_0xdbd2f5){if(_0xdbd2f5){_0x24bf47=_0xdbd2f5['length'];if(!_0x9dde02[_0x680a('0x33')]['hasOwnProperty'](_0x680a('0x4c'))){_0x4f6fe6[_0x680a('0x1d')]=qs['limit'](_0x9dde02[_0x680a('0x33')][_0x680a('0x1d')]);_0x4f6fe6['offset']=qs['offset'](_0x9dde02[_0x680a('0x33')][_0x680a('0x36')]);}return _0x174dc5[_0x680a('0x4e')](_0x4f6fe6);}})[_0x680a('0x24')](function(_0x18cb6e){if(_0x18cb6e){return _0x18cb6e?{'count':_0x24bf47,'rows':_0x18cb6e}:null;}})[_0x680a('0x24')](respondWithResult(_0x15fe9a,null))[_0x680a('0x41')](handleError(_0x15fe9a,null));};exports[_0x680a('0x4f')]=function(_0x229781,_0xf84dae,_0x391194){var _0x5b0da7={};var _0x179130={};var _0xc1f906;var _0xa10133;return db[_0x680a('0x29')]['findOne']({'where':{'id':_0x229781[_0x680a('0x43')]['id']}})[_0x680a('0x24')](handleEntityNotFound(_0xf84dae,null))[_0x680a('0x24')](function(_0x37b2cc){if(_0x37b2cc){_0xc1f906=_0x37b2cc;_0x179130[_0x680a('0x31')]=_[_0x680a('0x2e')](db[_0x680a('0x4b')][_0x680a('0x2a')]);_0x179130['query']=_['keys'](_0x229781[_0x680a('0x33')]);_0x179130[_0x680a('0x2f')]=_[_0x680a('0x30')](_0x179130[_0x680a('0x31')],_0x179130[_0x680a('0x33')]);_0x5b0da7[_0x680a('0x34')]=_[_0x680a('0x30')](_0x179130[_0x680a('0x31')],qs[_0x680a('0x32')](_0x229781[_0x680a('0x33')][_0x680a('0x32')]));_0x5b0da7[_0x680a('0x34')]=_0x5b0da7[_0x680a('0x34')][_0x680a('0x44')]?_0x5b0da7[_0x680a('0x34')]:_0x179130['model'];_0x5b0da7[_0x680a('0x37')]=qs['sort'](_0x229781[_0x680a('0x33')][_0x680a('0x38')]);_0x5b0da7['where']=qs['filters'](_[_0x680a('0x3a')](_0x229781[_0x680a('0x33')],_0x179130[_0x680a('0x2f')]));if(_0x229781[_0x680a('0x33')][_0x680a('0x3b')]){_0x5b0da7[_0x680a('0x39')]=_['merge'](_0x5b0da7[_0x680a('0x39')],{'$or':_[_0x680a('0x28')](_0x5b0da7[_0x680a('0x34')],function(_0x5e313a){var _0x16bc0a={};_0x16bc0a[_0x5e313a]={'$like':'%'+_0x229781[_0x680a('0x33')][_0x680a('0x3b')]+'%'};return _0x16bc0a;})});}_0x5b0da7=_[_0x680a('0x3c')]({},_0x5b0da7,_0x229781[_0x680a('0x46')]);return _0xc1f906['getDescriptions'](_0x5b0da7);}})[_0x680a('0x24')](function(_0x55e4c6){if(_0x55e4c6){_0xa10133=_0x55e4c6[_0x680a('0x44')];if(!_0x229781[_0x680a('0x33')][_0x680a('0x35')](_0x680a('0x4c'))){_0x5b0da7[_0x680a('0x1d')]=qs[_0x680a('0x1d')](_0x229781['query'][_0x680a('0x1d')]);_0x5b0da7[_0x680a('0x36')]=qs['offset'](_0x229781[_0x680a('0x33')]['offset']);}return _0xc1f906[_0x680a('0x4f')](_0x5b0da7);}})[_0x680a('0x24')](function(_0x2daecf){if(_0x2daecf){return _0x2daecf?{'count':_0xa10133,'rows':_0x2daecf}:null;}})['then'](respondWithResult(_0xf84dae,null))['catch'](handleError(_0xf84dae,null));};exports[_0x680a('0x50')]=function(_0x3fb054,_0x2477bc,_0x1f6150){var _0x1682ec={};var _0x5defd8={};var _0x336bde;var _0x130a49;return db[_0x680a('0x29')]['findOne']({'where':{'id':_0x3fb054[_0x680a('0x43')]['id']}})[_0x680a('0x24')](handleEntityNotFound(_0x2477bc,null))['then'](function(_0x5c585b){if(_0x5c585b){_0x336bde=_0x5c585b;_0x5defd8[_0x680a('0x31')]=_['keys'](db['Tag'][_0x680a('0x2a')]);_0x5defd8['query']=_[_0x680a('0x2e')](_0x3fb054[_0x680a('0x33')]);_0x5defd8[_0x680a('0x2f')]=_[_0x680a('0x30')](_0x5defd8[_0x680a('0x31')],_0x5defd8[_0x680a('0x33')]);_0x1682ec[_0x680a('0x34')]=_[_0x680a('0x30')](_0x5defd8['model'],qs[_0x680a('0x32')](_0x3fb054[_0x680a('0x33')][_0x680a('0x32')]));_0x1682ec[_0x680a('0x34')]=_0x1682ec[_0x680a('0x34')][_0x680a('0x44')]?_0x1682ec[_0x680a('0x34')]:_0x5defd8[_0x680a('0x31')];_0x1682ec[_0x680a('0x37')]=qs[_0x680a('0x38')](_0x3fb054['query'][_0x680a('0x38')]);_0x1682ec['where']=qs[_0x680a('0x2f')](_[_0x680a('0x3a')](_0x3fb054[_0x680a('0x33')],_0x5defd8[_0x680a('0x2f')]));if(_0x3fb054[_0x680a('0x33')][_0x680a('0x3b')]){_0x1682ec[_0x680a('0x39')]=_[_0x680a('0x3c')](_0x1682ec['where'],{'$or':_[_0x680a('0x28')](_0x1682ec['attributes'],function(_0x21c514){var _0x122b94={};_0x122b94[_0x21c514]={'$like':'%'+_0x3fb054[_0x680a('0x33')]['filter']+'%'};return _0x122b94;})});}_0x1682ec=_[_0x680a('0x3c')]({},_0x1682ec,_0x3fb054['options']);return _0x336bde[_0x680a('0x50')](_0x1682ec);}})['then'](function(_0x25bd09){if(_0x25bd09){_0x130a49=_0x25bd09[_0x680a('0x44')];if(!_0x3fb054[_0x680a('0x33')]['hasOwnProperty'](_0x680a('0x4c'))){_0x1682ec[_0x680a('0x1d')]=qs['limit'](_0x3fb054[_0x680a('0x33')][_0x680a('0x1d')]);_0x1682ec[_0x680a('0x36')]=qs['offset'](_0x3fb054[_0x680a('0x33')][_0x680a('0x36')]);}return _0x336bde[_0x680a('0x50')](_0x1682ec);}})[_0x680a('0x24')](function(_0x596e54){if(_0x596e54){return _0x596e54?{'count':_0x130a49,'rows':_0x596e54}:null;}})['then'](respondWithResult(_0x2477bc,null))['catch'](handleError(_0x2477bc,null));};exports[_0x680a('0x51')]=function(_0x249f2b,_0x422f82,_0x34eb14){if(_0x249f2b['body']['id']){delete _0x249f2b[_0x680a('0x47')]['id'];}return db[_0x680a('0x29')][_0x680a('0x4d')]({'where':{'id':_0x249f2b[_0x680a('0x43')]['id']}})[_0x680a('0x24')](handleEntityNotFound(_0x422f82,null))[_0x680a('0x24')](function(_0x319648){if(_0x319648){return _0x319648['setTags'](_0x249f2b[_0x680a('0x47')][_0x680a('0x52')]||[]);}return null;})[_0x680a('0x24')](respondWithResult(_0x422f82,null))[_0x680a('0x41')](handleError(_0x422f82,null));};
\ No newline at end of file
index 6dcdc90..6323be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff6d=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','int_desk_configurations','lodash','util'];(function(_0x1c83c9,_0x2a0efc){var _0x49c840=function(_0x2945e2){while(--_0x2945e2){_0x1c83c9['push'](_0x1c83c9['shift']());}};_0x49c840(++_0x2a0efc);}(_0xff6d,0xe8));var _0xdff6=function(_0x510f5d,_0x4ac744){_0x510f5d=_0x510f5d-0x0;var _0x1692a7=_0xff6d[_0x510f5d];return _0x1692a7;};'use strict';var _=require(_0xdff6('0x0'));var util=require(_0xdff6('0x1'));var logger=require(_0xdff6('0x2'))('api');var moment=require(_0xdff6('0x3'));var BPromise=require(_0xdff6('0x4'));var rp=require(_0xdff6('0x5'));var fs=require('fs');var path=require(_0xdff6('0x6'));var rimraf=require(_0xdff6('0x7'));var config=require(_0xdff6('0x8'));var attributes=require(_0xdff6('0x9'));module[_0xdff6('0xa')]=function(_0x199459,_0x56a686){return _0x199459[_0xdff6('0xb')]('DeskConfiguration',attributes,{'tableName':_0xdff6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf194=['define','lodash','util','../../config/logger','api','bluebird','../../config/environment','./intDeskConfiguration.attributes','exports'];(function(_0x4a4300,_0x1980d5){var _0x3958e5=function(_0x34bacf){while(--_0x34bacf){_0x4a4300['push'](_0x4a4300['shift']());}};_0x3958e5(++_0x1980d5);}(_0xf194,0x91));var _0x4f19=function(_0xf3a12f,_0x188fb8){_0xf3a12f=_0xf3a12f-0x0;var _0x13f02f=_0xf194[_0xf3a12f];return _0x13f02f;};'use strict';var _=require(_0x4f19('0x0'));var util=require(_0x4f19('0x1'));var logger=require(_0x4f19('0x2'))(_0x4f19('0x3'));var moment=require('moment');var BPromise=require(_0x4f19('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4f19('0x5'));var attributes=require(_0x4f19('0x6'));module[_0x4f19('0x7')]=function(_0x57c148,_0x1fbd23){return _0x57c148[_0x4f19('0x8')]('DeskConfiguration',attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b59cf44..a29dca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3d=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x3b9715,_0x5542ed){var _0x52058a=function(_0x4eb028){while(--_0x4eb028){_0x3b9715['push'](_0x3b9715['shift']());}};_0x52058a(++_0x5542ed);}(_0xcf3d,0x19e));var _0xdcf3=function(_0x4683ee,_0x24696d){_0x4683ee=_0x4683ee-0x0;var _0x1a2b1a=_0xcf3d[_0x4683ee];return _0x1a2b1a;};'use strict';var _=require(_0xdcf3('0x0'));var util=require(_0xdcf3('0x1'));var moment=require(_0xdcf3('0x2'));var BPromise=require(_0xdcf3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdcf3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdcf3('0x5'));var logger=require(_0xdcf3('0x6'))(_0xdcf3('0x7'));var config=require(_0xdcf3('0x8'));var jayson=require(_0xdcf3('0x9'));var client=jayson[_0xdcf3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43f8d5,_0x47dde8,_0x2cd0af){return new BPromise(function(_0x45c5bd,_0x55fe3a){return client['request'](_0x43f8d5,_0x2cd0af)['then'](function(_0x4515a2){logger[_0xdcf3('0xb')](_0xdcf3('0xc'),_0x47dde8,_0xdcf3('0xd'));logger[_0xdcf3('0xe')](_0xdcf3('0xf'),_0x47dde8,_0xdcf3('0xd'),JSON[_0xdcf3('0x10')](_0x4515a2));if(_0x4515a2[_0xdcf3('0x11')]){if(_0x4515a2['error'][_0xdcf3('0x12')]===0x1f4){logger[_0xdcf3('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x47dde8,_0x4515a2[_0xdcf3('0x11')][_0xdcf3('0x13')]);return _0x55fe3a(_0x4515a2[_0xdcf3('0x11')][_0xdcf3('0x13')]);}logger['error'](_0xdcf3('0xc'),_0x47dde8,_0x4515a2[_0xdcf3('0x11')]['message']);return _0x45c5bd(_0x4515a2[_0xdcf3('0x11')]['message']);}else{logger[_0xdcf3('0xb')](_0xdcf3('0xc'),_0x47dde8,_0xdcf3('0xd'));_0x45c5bd(_0x4515a2[_0xdcf3('0x14')]['message']);}})[_0xdcf3('0x15')](function(_0x24cce5){logger['error'](_0xdcf3('0xc'),_0x47dde8,_0x24cce5);_0x55fe3a(_0x24cce5);});});}
\ No newline at end of file
+var _0x0648=['catch','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x424977,_0x37fe0e){var _0x283b5e=function(_0x12786f){while(--_0x12786f){_0x424977['push'](_0x424977['shift']());}};_0x283b5e(++_0x37fe0e);}(_0x0648,0x1a5));var _0x8064=function(_0x65e216,_0x568bd5){_0x65e216=_0x65e216-0x0;var _0x4e3e06=_0x0648[_0x65e216];return _0x4e3e06;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8064('0x0'));var BPromise=require(_0x8064('0x1'));var rs=require(_0x8064('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8064('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x8064('0x4'))(_0x8064('0x5'));var config=require(_0x8064('0x6'));var jayson=require(_0x8064('0x7'));var client=jayson[_0x8064('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a866b,_0x3a875d,_0x31f6ea){return new BPromise(function(_0x4a58a2,_0x467b24){return client[_0x8064('0x9')](_0x3a866b,_0x31f6ea)['then'](function(_0x3c1fb1){logger[_0x8064('0xa')](_0x8064('0xb'),_0x3a875d,_0x8064('0xc'));logger[_0x8064('0xd')](_0x8064('0xe'),_0x3a875d,_0x8064('0xc'),JSON[_0x8064('0xf')](_0x3c1fb1));if(_0x3c1fb1[_0x8064('0x10')]){if(_0x3c1fb1[_0x8064('0x10')][_0x8064('0x11')]===0x1f4){logger[_0x8064('0x10')](_0x8064('0xb'),_0x3a875d,_0x3c1fb1[_0x8064('0x10')][_0x8064('0x12')]);return _0x467b24(_0x3c1fb1[_0x8064('0x10')]['message']);}logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x3a875d,_0x3c1fb1['error'][_0x8064('0x12')]);return _0x4a58a2(_0x3c1fb1['error'][_0x8064('0x12')]);}else{logger[_0x8064('0xa')](_0x8064('0xb'),_0x3a875d,_0x8064('0xc'));_0x4a58a2(_0x3c1fb1[_0x8064('0x13')][_0x8064('0x12')]);}})[_0x8064('0x14')](function(_0x1038a5){logger[_0x8064('0x10')](_0x8064('0xb'),_0x3a875d,_0x1038a5);_0x467b24(_0x1038a5);});});}
\ No newline at end of file
index 65cd59a..326a0e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa2=['destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete'];(function(_0x40b520,_0x1b198b){var _0x171cb4=function(_0x537f4e){while(--_0x537f4e){_0x40b520['push'](_0x40b520['shift']());}};_0x171cb4(++_0x1b198b);}(_0x1aa2,0x1b7));var _0x21aa=function(_0x19159a,_0x1cb5c3){_0x19159a=_0x19159a-0x0;var _0xa677f4=_0x1aa2[_0x19159a];return _0xa677f4;};'use strict';var multer=require('multer');var util=require(_0x21aa('0x0'));var path=require(_0x21aa('0x1'));var timeout=require('connect-timeout');var express=require(_0x21aa('0x2'));var router=express[_0x21aa('0x3')]();var fs_extra=require(_0x21aa('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x21aa('0x5'));var config=require(_0x21aa('0x6'));var controller=require(_0x21aa('0x7'));router[_0x21aa('0x8')]('/',auth['isAuthenticated'](),controller[_0x21aa('0x9')]);router[_0x21aa('0x8')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller['show']);router[_0x21aa('0xc')]('/',auth[_0x21aa('0xb')](),controller[_0x21aa('0xd')]);router[_0x21aa('0xe')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller[_0x21aa('0xf')]);router[_0x21aa('0x10')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller[_0x21aa('0x11')]);module[_0x21aa('0x12')]=router;
\ No newline at end of file
+var _0xf2d3=['./intDeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x26bf51,_0x5e261a){var _0x503415=function(_0x92b028){while(--_0x92b028){_0x26bf51['push'](_0x26bf51['shift']());}};_0x503415(++_0x5e261a);}(_0xf2d3,0x1ec));var _0x3f2d=function(_0x3de2b9,_0x3be071){_0x3de2b9=_0x3de2b9-0x0;var _0x464642=_0xf2d3[_0x3de2b9];return _0x464642;};'use strict';var multer=require(_0x3f2d('0x0'));var util=require(_0x3f2d('0x1'));var path=require(_0x3f2d('0x2'));var timeout=require('connect-timeout');var express=require(_0x3f2d('0x3'));var router=express['Router']();var fs_extra=require(_0x3f2d('0x4'));var auth=require(_0x3f2d('0x5'));var interaction=require(_0x3f2d('0x6'));var config=require(_0x3f2d('0x7'));var controller=require(_0x3f2d('0x8'));router[_0x3f2d('0x9')]('/',auth[_0x3f2d('0xa')](),controller[_0x3f2d('0xb')]);router[_0x3f2d('0x9')](_0x3f2d('0xc'),auth['isAuthenticated'](),controller[_0x3f2d('0xd')]);router[_0x3f2d('0xe')]('/',auth[_0x3f2d('0xa')](),controller[_0x3f2d('0xf')]);router[_0x3f2d('0x10')](_0x3f2d('0xc'),auth[_0x3f2d('0xa')](),controller[_0x3f2d('0x11')]);router[_0x3f2d('0x12')]('/:id',auth[_0x3f2d('0xa')](),controller[_0x3f2d('0x13')]);module['exports']=router;
\ No newline at end of file
index a8b7440..6825a78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ae=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x320f31,_0x433146){var _0x3c8b72=function(_0x3f02c4){while(--_0x3f02c4){_0x320f31['push'](_0x320f31['shift']());}};_0x3c8b72(++_0x433146);}(_0x15ae,0xbb));var _0xe15a=function(_0x4b06e2,_0x2b1e4a){_0x4b06e2=_0x4b06e2-0x0;var _0x22d4f2=_0x15ae[_0x4b06e2];return _0x22d4f2;};'use strict';var Sequelize=require(_0xe15a('0x0'));module[_0xe15a('0x1')]={'type':{'type':Sequelize[_0xe15a('0x2')](_0xe15a('0x3'),_0xe15a('0x4'),_0xe15a('0x5'),_0xe15a('0x6'),_0xe15a('0x7')),'defaultValue':_0xe15a('0x3')},'content':{'type':Sequelize[_0xe15a('0x8')]},'key':{'type':Sequelize[_0xe15a('0x8')]},'keyType':{'type':Sequelize[_0xe15a('0x2')](_0xe15a('0x3'),_0xe15a('0x4'),_0xe15a('0x5'))},'keyContent':{'type':Sequelize[_0xe15a('0x8')]},'idField':{'type':Sequelize[_0xe15a('0x8')]},'nameField':{'type':Sequelize[_0xe15a('0x8')]},'customField':{'type':Sequelize[_0xe15a('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe15a('0x8')]}};
\ No newline at end of file
+var _0x4bff=['ENUM','BOOLEAN','sequelize','variable','customVariable','keyValue','picklist','STRING'];(function(_0x38be50,_0x519b50){var _0x2c7195=function(_0x1f2f99){while(--_0x1f2f99){_0x38be50['push'](_0x38be50['shift']());}};_0x2c7195(++_0x519b50);}(_0x4bff,0x122));var _0xf4bf=function(_0x5d860f,_0x467498){_0x5d860f=_0x5d860f-0x0;var _0x236490=_0x4bff[_0x5d860f];return _0x236490;};'use strict';var Sequelize=require(_0xf4bf('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0xf4bf('0x1'),_0xf4bf('0x2'),_0xf4bf('0x3'),_0xf4bf('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf4bf('0x5')]},'key':{'type':Sequelize[_0xf4bf('0x5')]},'keyType':{'type':Sequelize[_0xf4bf('0x6')]('string',_0xf4bf('0x1'),'customVariable')},'keyContent':{'type':Sequelize[_0xf4bf('0x5')]},'idField':{'type':Sequelize[_0xf4bf('0x5')]},'nameField':{'type':Sequelize[_0xf4bf('0x5')]},'customField':{'type':Sequelize[_0xf4bf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf4bf('0x5')]}};
\ No newline at end of file
index bfe1da7..3e8b5a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x598a=['name','send','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','filter','options','DeskField','include','findAll','rows','show','rawAttributes','includeAll','find','create','body','catch','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error'];(function(_0x323d64,_0x3c698e){var _0x46a468=function(_0x550560){while(--_0x550560){_0x323d64['push'](_0x323d64['shift']());}};_0x46a468(++_0x3c698e);}(_0x598a,0xfb));var _0xa598=function(_0x4a8ddb,_0x4e65e8){_0x4a8ddb=_0x4a8ddb-0x0;var _0x11f103=_0x598a[_0x4a8ddb];return _0x11f103;};'use strict';var emlformat=require(_0xa598('0x0'));var rimraf=require(_0xa598('0x1'));var zipdir=require(_0xa598('0x2'));var jsonpatch=require(_0xa598('0x3'));var rp=require(_0xa598('0x4'));var moment=require('moment');var BPromise=require(_0xa598('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xa598('0x6'));var csv=require(_0xa598('0x7'));var ejs=require(_0xa598('0x8'));var fs=require('fs');var fs_extra=require(_0xa598('0x9'));var _=require(_0xa598('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa598('0xb'));var deskjs=require(_0xa598('0xc'));var toCsv=require(_0xa598('0x7'));var querystring=require(_0xa598('0xd'));var Papa=require(_0xa598('0xe'));var Redis=require(_0xa598('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa598('0x10'));var hardwareService=require(_0xa598('0x11'));var logger=require(_0xa598('0x12'))(_0xa598('0x13'));var utils=require(_0xa598('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa598('0x15'));var db=require(_0xa598('0x16'))['db'];function respondWithStatusCode(_0x468710,_0x5041d4){_0x5041d4=_0x5041d4||0xcc;return function(_0xe8f905){if(_0xe8f905){return _0x468710['sendStatus'](_0x5041d4);}return _0x468710[_0xa598('0x17')](_0x5041d4)[_0xa598('0x18')]();};}function respondWithResult(_0xb3288a,_0x38afa9){_0x38afa9=_0x38afa9||0xc8;return function(_0x1949b5){if(_0x1949b5){return _0xb3288a[_0xa598('0x17')](_0x38afa9)[_0xa598('0x19')](_0x1949b5);}};}function respondWithFilteredResult(_0x41d3fe,_0x28534a){return function(_0x4b100b){if(_0x4b100b){var _0x88df86=typeof _0x28534a[_0xa598('0x1a')]===_0xa598('0x1b')&&typeof _0x28534a[_0xa598('0x1c')]===_0xa598('0x1b');var _0xecb39d=_0x4b100b[_0xa598('0x1d')];var _0x2746e3=_0x88df86?0x0:_0x28534a[_0xa598('0x1a')];var _0x44c872=_0x88df86?_0x4b100b['count']:_0x28534a[_0xa598('0x1a')]+_0x28534a[_0xa598('0x1c')];var _0x3fd5a4;if(_0x44c872>=_0xecb39d){_0x44c872=_0xecb39d;_0x3fd5a4=0xc8;}else{_0x3fd5a4=0xce;}_0x41d3fe[_0xa598('0x17')](_0x3fd5a4);return _0x41d3fe[_0xa598('0x1e')](_0xa598('0x1f'),_0x2746e3+'-'+_0x44c872+'/'+_0xecb39d)['json'](_0x4b100b);}return null;};}function patchUpdates(_0x56fc63){return function(_0x2923d5){try{jsonpatch['apply'](_0x2923d5,_0x56fc63,!![]);}catch(_0x3ac469){return BPromise[_0xa598('0x20')](_0x3ac469);}return _0x2923d5[_0xa598('0x21')]();};}function saveUpdates(_0x2222b0,_0x261868){return function(_0x24f4f0){if(_0x24f4f0){return _0x24f4f0['update'](_0x2222b0)[_0xa598('0x22')](function(_0x46d225){return _0x46d225;});}return null;};}function removeEntity(_0x470663,_0x14643d){return function(_0x802679){if(_0x802679){return _0x802679[_0xa598('0x23')]()[_0xa598('0x22')](function(){_0x470663[_0xa598('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x473d07,_0x414d2c){return function(_0x499565){if(!_0x499565){_0x473d07['sendStatus'](0x194);}return _0x499565;};}function handleError(_0x35b669,_0x559038){_0x559038=_0x559038||0x1f4;return function(_0x527c9f){logger[_0xa598('0x24')](_0x527c9f['stack']);if(_0x527c9f[_0xa598('0x25')]){delete _0x527c9f['name'];}_0x35b669['status'](_0x559038)[_0xa598('0x26')](_0x527c9f);};}exports[_0xa598('0x27')]=function(_0x554d3b,_0x16f00d){var _0x2823f7={},_0x3cdc59={},_0x29bfe3={'count':0x0,'rows':[]};var _0x523392=_[_0xa598('0x28')](db['DeskField']['rawAttributes'],function(_0x587d11){return{'name':_0x587d11[_0xa598('0x29')],'type':_0x587d11['type'][_0xa598('0x2a')]};});_0x3cdc59[_0xa598('0x2b')]=_[_0xa598('0x28')](_0x523392,'name');_0x3cdc59[_0xa598('0x2c')]=_[_0xa598('0x2d')](_0x554d3b[_0xa598('0x2c')]);_0x3cdc59[_0xa598('0x2e')]=_[_0xa598('0x2f')](_0x3cdc59['model'],_0x3cdc59[_0xa598('0x2c')]);_0x2823f7[_0xa598('0x30')]=_[_0xa598('0x2f')](_0x3cdc59[_0xa598('0x2b')],qs['fields'](_0x554d3b[_0xa598('0x2c')][_0xa598('0x31')]));_0x2823f7['attributes']=_0x2823f7['attributes'][_0xa598('0x32')]?_0x2823f7[_0xa598('0x30')]:_0x3cdc59[_0xa598('0x2b')];if(!_0x554d3b['query'][_0xa598('0x33')](_0xa598('0x34'))){_0x2823f7['limit']=qs[_0xa598('0x1c')](_0x554d3b['query'][_0xa598('0x1c')]);_0x2823f7[_0xa598('0x1a')]=qs['offset'](_0x554d3b[_0xa598('0x2c')][_0xa598('0x1a')]);}_0x2823f7['order']=qs[_0xa598('0x35')](_0x554d3b[_0xa598('0x2c')][_0xa598('0x35')]);_0x2823f7['where']=qs[_0xa598('0x2e')](_[_0xa598('0x36')](_0x554d3b[_0xa598('0x2c')],_0x3cdc59['filters']),_0x523392);if(_0x554d3b[_0xa598('0x2c')]['filter']){_0x2823f7[_0xa598('0x37')]=_[_0xa598('0x38')](_0x2823f7[_0xa598('0x37')],{'$or':_['map'](_0x523392,function(_0x5bd98a){if(_0x5bd98a['type']!=='VIRTUAL'){var _0x3358ad={};_0x3358ad[_0x5bd98a[_0xa598('0x25')]]={'$like':'%'+_0x554d3b[_0xa598('0x2c')][_0xa598('0x39')]+'%'};return _0x3358ad;}})});}_0x2823f7=_[_0xa598('0x38')]({},_0x2823f7,_0x554d3b[_0xa598('0x3a')]);var _0x4526d7={'where':_0x2823f7[_0xa598('0x37')]};return db[_0xa598('0x3b')][_0xa598('0x1d')](_0x4526d7)['then'](function(_0x1833fb){_0x29bfe3[_0xa598('0x1d')]=_0x1833fb;if(_0x554d3b[_0xa598('0x2c')]['includeAll']){_0x2823f7[_0xa598('0x3c')]=[{'all':!![]}];}return db[_0xa598('0x3b')][_0xa598('0x3d')](_0x2823f7);})[_0xa598('0x22')](function(_0x307497){_0x29bfe3[_0xa598('0x3e')]=_0x307497;return _0x29bfe3;})['then'](respondWithFilteredResult(_0x16f00d,_0x2823f7))['catch'](handleError(_0x16f00d,null));};exports[_0xa598('0x3f')]=function(_0x10f2f7,_0x5a772d){var _0x45bc68={'raw':!![],'where':{'id':_0x10f2f7['params']['id']}},_0x54bb73={};_0x54bb73[_0xa598('0x2b')]=_['keys'](db[_0xa598('0x3b')][_0xa598('0x40')]);_0x54bb73[_0xa598('0x2c')]=_[_0xa598('0x2d')](_0x10f2f7[_0xa598('0x2c')]);_0x54bb73[_0xa598('0x2e')]=_[_0xa598('0x2f')](_0x54bb73[_0xa598('0x2b')],_0x54bb73[_0xa598('0x2c')]);_0x45bc68[_0xa598('0x30')]=_['intersection'](_0x54bb73[_0xa598('0x2b')],qs[_0xa598('0x31')](_0x10f2f7[_0xa598('0x2c')][_0xa598('0x31')]));_0x45bc68[_0xa598('0x30')]=_0x45bc68[_0xa598('0x30')][_0xa598('0x32')]?_0x45bc68['attributes']:_0x54bb73[_0xa598('0x2b')];if(_0x10f2f7[_0xa598('0x2c')][_0xa598('0x41')]){_0x45bc68[_0xa598('0x3c')]=[{'all':!![]}];}_0x45bc68=_[_0xa598('0x38')]({},_0x45bc68,_0x10f2f7[_0xa598('0x3a')]);return db[_0xa598('0x3b')][_0xa598('0x42')](_0x45bc68)['then'](handleEntityNotFound(_0x5a772d,null))[_0xa598('0x22')](respondWithResult(_0x5a772d,null))['catch'](handleError(_0x5a772d,null));};exports[_0xa598('0x43')]=function(_0x1ec7d8,_0x2710d){return db[_0xa598('0x3b')][_0xa598('0x43')](_0x1ec7d8[_0xa598('0x44')],{})[_0xa598('0x22')](respondWithResult(_0x2710d,0xc9))[_0xa598('0x45')](handleError(_0x2710d,null));};exports[_0xa598('0x46')]=function(_0x51e0e9,_0x57e82c){if(_0x51e0e9[_0xa598('0x44')]['id']){delete _0x51e0e9[_0xa598('0x44')]['id'];}return db[_0xa598('0x3b')][_0xa598('0x42')]({'where':{'id':_0x51e0e9['params']['id']}})['then'](handleEntityNotFound(_0x57e82c,null))['then'](saveUpdates(_0x51e0e9[_0xa598('0x44')],null))[_0xa598('0x22')](respondWithResult(_0x57e82c,null))['catch'](handleError(_0x57e82c,null));};exports['destroy']=function(_0x54b287,_0x315a01){return db[_0xa598('0x3b')][_0xa598('0x42')]({'where':{'id':_0x54b287[_0xa598('0x47')]['id']}})['then'](handleEntityNotFound(_0x315a01,null))[_0xa598('0x22')](removeEntity(_0x315a01,null))[_0xa598('0x45')](handleError(_0x315a01,null));};
\ No newline at end of file
+var _0x2b34=['offset','undefined','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','DeskField','includeAll','include','findAll','rows','params','options','find','catch','create','body','destroy','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x3a6df8,_0x4dafe2){var _0x130847=function(_0x2460a5){while(--_0x2460a5){_0x3a6df8['push'](_0x3a6df8['shift']());}};_0x130847(++_0x4dafe2);}(_0x2b34,0x165));var _0x42b3=function(_0x4ff239,_0x9da7c9){_0x4ff239=_0x4ff239-0x0;var _0x4cdd91=_0x2b34[_0x4ff239];return _0x4cdd91;};'use strict';var emlformat=require(_0x42b3('0x0'));var rimraf=require(_0x42b3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x42b3('0x2'));var rp=require('request-promise');var moment=require(_0x42b3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x42b3('0x4'));var util=require(_0x42b3('0x5'));var path=require(_0x42b3('0x6'));var sox=require(_0x42b3('0x7'));var csv=require(_0x42b3('0x8'));var ejs=require(_0x42b3('0x9'));var fs=require('fs');var fs_extra=require(_0x42b3('0xa'));var _=require(_0x42b3('0xb'));var squel=require(_0x42b3('0xc'));var crypto=require(_0x42b3('0xd'));var jsforce=require(_0x42b3('0xe'));var deskjs=require(_0x42b3('0xf'));var toCsv=require(_0x42b3('0x8'));var querystring=require('querystring');var Papa=require(_0x42b3('0x10'));var Redis=require(_0x42b3('0x11'));var authService=require(_0x42b3('0x12'));var qs=require(_0x42b3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x42b3('0x14'));var logger=require('../../config/logger')(_0x42b3('0x15'));var utils=require('../../config/utils');var config=require(_0x42b3('0x16'));var licenseUtil=require(_0x42b3('0x17'));var db=require(_0x42b3('0x18'))['db'];function respondWithStatusCode(_0x1d83de,_0xc39e66){_0xc39e66=_0xc39e66||0xcc;return function(_0x179f31){if(_0x179f31){return _0x1d83de[_0x42b3('0x19')](_0xc39e66);}return _0x1d83de[_0x42b3('0x1a')](_0xc39e66)[_0x42b3('0x1b')]();};}function respondWithResult(_0xb70257,_0xb44fd8){_0xb44fd8=_0xb44fd8||0xc8;return function(_0x16c6aa){if(_0x16c6aa){return _0xb70257['status'](_0xb44fd8)['json'](_0x16c6aa);}};}function respondWithFilteredResult(_0x587abf,_0x59ffda){return function(_0x476a45){if(_0x476a45){var _0x5706c3=typeof _0x59ffda[_0x42b3('0x1c')]===_0x42b3('0x1d')&&typeof _0x59ffda['limit']===_0x42b3('0x1d');var _0x24de80=_0x476a45[_0x42b3('0x1e')];var _0x24b218=_0x5706c3?0x0:_0x59ffda[_0x42b3('0x1c')];var _0x37bda3=_0x5706c3?_0x476a45[_0x42b3('0x1e')]:_0x59ffda[_0x42b3('0x1c')]+_0x59ffda['limit'];var _0x539f21;if(_0x37bda3>=_0x24de80){_0x37bda3=_0x24de80;_0x539f21=0xc8;}else{_0x539f21=0xce;}_0x587abf[_0x42b3('0x1a')](_0x539f21);return _0x587abf[_0x42b3('0x1f')](_0x42b3('0x20'),_0x24b218+'-'+_0x37bda3+'/'+_0x24de80)[_0x42b3('0x21')](_0x476a45);}return null;};}function patchUpdates(_0x4baa33){return function(_0x3a458c){try{jsonpatch[_0x42b3('0x22')](_0x3a458c,_0x4baa33,!![]);}catch(_0x41d4d5){return BPromise[_0x42b3('0x23')](_0x41d4d5);}return _0x3a458c[_0x42b3('0x24')]();};}function saveUpdates(_0x3be7a1,_0x29cede){return function(_0x3e3ad4){if(_0x3e3ad4){return _0x3e3ad4['update'](_0x3be7a1)[_0x42b3('0x25')](function(_0x412ddd){return _0x412ddd;});}return null;};}function removeEntity(_0xd79d67,_0x13b6de){return function(_0x5b03eb){if(_0x5b03eb){return _0x5b03eb['destroy']()[_0x42b3('0x25')](function(){_0xd79d67['status'](0xcc)[_0x42b3('0x1b')]();});}};}function handleEntityNotFound(_0x51b860,_0x5f20c0){return function(_0x738025){if(!_0x738025){_0x51b860[_0x42b3('0x19')](0x194);}return _0x738025;};}function handleError(_0x247dc1,_0x2c9471){_0x2c9471=_0x2c9471||0x1f4;return function(_0x2c2f1e){logger[_0x42b3('0x26')](_0x2c2f1e[_0x42b3('0x27')]);if(_0x2c2f1e[_0x42b3('0x28')]){delete _0x2c2f1e[_0x42b3('0x28')];}_0x247dc1['status'](_0x2c9471)[_0x42b3('0x29')](_0x2c2f1e);};}exports[_0x42b3('0x2a')]=function(_0x59b772,_0x486deb){var _0x4f4ca3={},_0x229df1={},_0x1447a8={'count':0x0,'rows':[]};var _0x44a372=_[_0x42b3('0x2b')](db['DeskField'][_0x42b3('0x2c')],function(_0x4022a5){return{'name':_0x4022a5[_0x42b3('0x2d')],'type':_0x4022a5['type'][_0x42b3('0x2e')]};});_0x229df1[_0x42b3('0x2f')]=_[_0x42b3('0x2b')](_0x44a372,_0x42b3('0x28'));_0x229df1[_0x42b3('0x30')]=_[_0x42b3('0x31')](_0x59b772[_0x42b3('0x30')]);_0x229df1['filters']=_[_0x42b3('0x32')](_0x229df1[_0x42b3('0x2f')],_0x229df1[_0x42b3('0x30')]);_0x4f4ca3[_0x42b3('0x33')]=_[_0x42b3('0x32')](_0x229df1[_0x42b3('0x2f')],qs[_0x42b3('0x34')](_0x59b772[_0x42b3('0x30')][_0x42b3('0x34')]));_0x4f4ca3['attributes']=_0x4f4ca3['attributes'][_0x42b3('0x35')]?_0x4f4ca3[_0x42b3('0x33')]:_0x229df1[_0x42b3('0x2f')];if(!_0x59b772[_0x42b3('0x30')][_0x42b3('0x36')](_0x42b3('0x37'))){_0x4f4ca3[_0x42b3('0x38')]=qs[_0x42b3('0x38')](_0x59b772['query'][_0x42b3('0x38')]);_0x4f4ca3[_0x42b3('0x1c')]=qs[_0x42b3('0x1c')](_0x59b772['query'][_0x42b3('0x1c')]);}_0x4f4ca3[_0x42b3('0x39')]=qs[_0x42b3('0x3a')](_0x59b772[_0x42b3('0x30')][_0x42b3('0x3a')]);_0x4f4ca3[_0x42b3('0x3b')]=qs[_0x42b3('0x3c')](_[_0x42b3('0x3d')](_0x59b772[_0x42b3('0x30')],_0x229df1[_0x42b3('0x3c')]),_0x44a372);if(_0x59b772[_0x42b3('0x30')][_0x42b3('0x3e')]){_0x4f4ca3[_0x42b3('0x3b')]=_[_0x42b3('0x3f')](_0x4f4ca3['where'],{'$or':_[_0x42b3('0x2b')](_0x44a372,function(_0x33ade6){if(_0x33ade6['type']!==_0x42b3('0x40')){var _0x384289={};_0x384289[_0x33ade6[_0x42b3('0x28')]]={'$like':'%'+_0x59b772[_0x42b3('0x30')]['filter']+'%'};return _0x384289;}})});}_0x4f4ca3=_[_0x42b3('0x3f')]({},_0x4f4ca3,_0x59b772['options']);var _0x218034={'where':_0x4f4ca3[_0x42b3('0x3b')]};return db[_0x42b3('0x41')][_0x42b3('0x1e')](_0x218034)['then'](function(_0x32c695){_0x1447a8['count']=_0x32c695;if(_0x59b772[_0x42b3('0x30')][_0x42b3('0x42')]){_0x4f4ca3[_0x42b3('0x43')]=[{'all':!![]}];}return db[_0x42b3('0x41')][_0x42b3('0x44')](_0x4f4ca3);})[_0x42b3('0x25')](function(_0x4d8899){_0x1447a8[_0x42b3('0x45')]=_0x4d8899;return _0x1447a8;})['then'](respondWithFilteredResult(_0x486deb,_0x4f4ca3))['catch'](handleError(_0x486deb,null));};exports['show']=function(_0xc703bb,_0x27fd62){var _0x194693={'raw':!![],'where':{'id':_0xc703bb[_0x42b3('0x46')]['id']}},_0x483d6d={};_0x483d6d[_0x42b3('0x2f')]=_['keys'](db[_0x42b3('0x41')]['rawAttributes']);_0x483d6d[_0x42b3('0x30')]=_[_0x42b3('0x31')](_0xc703bb['query']);_0x483d6d['filters']=_[_0x42b3('0x32')](_0x483d6d[_0x42b3('0x2f')],_0x483d6d['query']);_0x194693[_0x42b3('0x33')]=_['intersection'](_0x483d6d[_0x42b3('0x2f')],qs[_0x42b3('0x34')](_0xc703bb[_0x42b3('0x30')][_0x42b3('0x34')]));_0x194693['attributes']=_0x194693[_0x42b3('0x33')][_0x42b3('0x35')]?_0x194693[_0x42b3('0x33')]:_0x483d6d[_0x42b3('0x2f')];if(_0xc703bb[_0x42b3('0x30')][_0x42b3('0x42')]){_0x194693[_0x42b3('0x43')]=[{'all':!![]}];}_0x194693=_['merge']({},_0x194693,_0xc703bb[_0x42b3('0x47')]);return db[_0x42b3('0x41')][_0x42b3('0x48')](_0x194693)[_0x42b3('0x25')](handleEntityNotFound(_0x27fd62,null))[_0x42b3('0x25')](respondWithResult(_0x27fd62,null))[_0x42b3('0x49')](handleError(_0x27fd62,null));};exports[_0x42b3('0x4a')]=function(_0x24175d,_0x46163f){return db['DeskField'][_0x42b3('0x4a')](_0x24175d[_0x42b3('0x4b')],{})[_0x42b3('0x25')](respondWithResult(_0x46163f,0xc9))[_0x42b3('0x49')](handleError(_0x46163f,null));};exports['update']=function(_0xef46f4,_0x37fb17){if(_0xef46f4[_0x42b3('0x4b')]['id']){delete _0xef46f4[_0x42b3('0x4b')]['id'];}return db[_0x42b3('0x41')]['find']({'where':{'id':_0xef46f4[_0x42b3('0x46')]['id']}})[_0x42b3('0x25')](handleEntityNotFound(_0x37fb17,null))[_0x42b3('0x25')](saveUpdates(_0xef46f4['body'],null))[_0x42b3('0x25')](respondWithResult(_0x37fb17,null))['catch'](handleError(_0x37fb17,null));};exports[_0x42b3('0x4c')]=function(_0x3e1a5a,_0x21fdd1){return db[_0x42b3('0x41')]['find']({'where':{'id':_0x3e1a5a[_0x42b3('0x46')]['id']}})[_0x42b3('0x25')](handleEntityNotFound(_0x21fdd1,null))['then'](removeEntity(_0x21fdd1,null))[_0x42b3('0x49')](handleError(_0x21fdd1,null));};
\ No newline at end of file
index c127c2e..313219e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ef9=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','lodash'];(function(_0x17e5a6,_0x57c514){var _0x1fcfde=function(_0x4ba07e){while(--_0x4ba07e){_0x17e5a6['push'](_0x17e5a6['shift']());}};_0x1fcfde(++_0x57c514);}(_0x3ef9,0x8b));var _0x93ef=function(_0x4a2b7a,_0x1494c8){_0x4a2b7a=_0x4a2b7a-0x0;var _0x5de1be=_0x3ef9[_0x4a2b7a];return _0x5de1be;};'use strict';var _=require(_0x93ef('0x0'));var util=require(_0x93ef('0x1'));var logger=require(_0x93ef('0x2'))(_0x93ef('0x3'));var moment=require(_0x93ef('0x4'));var BPromise=require('bluebird');var rp=require(_0x93ef('0x5'));var fs=require('fs');var path=require(_0x93ef('0x6'));var rimraf=require('rimraf');var config=require(_0x93ef('0x7'));var attributes=require(_0x93ef('0x8'));module[_0x93ef('0x9')]=function(_0x4b5fd8,_0xe78265){return _0x4b5fd8[_0x93ef('0xa')]('DeskField',attributes,{'tableName':_0x93ef('0xb'),'paranoid':![],'indexes':[{'name':_0x93ef('0xc'),'fields':[_0x93ef('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7954=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','DeskField','desk_unique_index','FieldId','lodash','util'];(function(_0x464469,_0x4fc494){var _0x248c52=function(_0x2e2d00){while(--_0x2e2d00){_0x464469['push'](_0x464469['shift']());}};_0x248c52(++_0x4fc494);}(_0x7954,0xb4));var _0x4795=function(_0x4de950,_0x2bc8f8){_0x4de950=_0x4de950-0x0;var _0x312e51=_0x7954[_0x4de950];return _0x312e51;};'use strict';var _=require(_0x4795('0x0'));var util=require(_0x4795('0x1'));var logger=require(_0x4795('0x2'))('api');var moment=require(_0x4795('0x3'));var BPromise=require(_0x4795('0x4'));var rp=require(_0x4795('0x5'));var fs=require('fs');var path=require(_0x4795('0x6'));var rimraf=require(_0x4795('0x7'));var config=require(_0x4795('0x8'));var attributes=require('./intDeskField.attributes');module[_0x4795('0x9')]=function(_0x4fd713,_0x36d372){return _0x4fd713[_0x4795('0xa')](_0x4795('0xb'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x4795('0xc'),'fields':['idField',_0x4795('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ef9e2b4..21409e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ba=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x476c1d,_0x5488e9){var _0x345068=function(_0x5c7632){while(--_0x5c7632){_0x476c1d['push'](_0x476c1d['shift']());}};_0x345068(++_0x5488e9);}(_0x06ba,0x147));var _0xa06b=function(_0x276132,_0xe8959c){_0x276132=_0x276132-0x0;var _0x464be8=_0x06ba[_0x276132];return _0x464be8;};'use strict';var _=require(_0xa06b('0x0'));var util=require(_0xa06b('0x1'));var moment=require(_0xa06b('0x2'));var BPromise=require(_0xa06b('0x3'));var rs=require(_0xa06b('0x4'));var fs=require('fs');var Redis=require(_0xa06b('0x5'));var db=require(_0xa06b('0x6'))['db'];var utils=require(_0xa06b('0x7'));var logger=require(_0xa06b('0x8'))(_0xa06b('0x9'));var config=require(_0xa06b('0xa'));var jayson=require(_0xa06b('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xa080e9,_0x2a88a3,_0x374573){return new BPromise(function(_0x27a868,_0x4af073){return client['request'](_0xa080e9,_0x374573)[_0xa06b('0xc')](function(_0x397b60){logger[_0xa06b('0xd')](_0xa06b('0xe'),_0x2a88a3,_0xa06b('0xf'));logger[_0xa06b('0x10')]('DeskField,\x20%s,\x20%s,\x20%s',_0x2a88a3,_0xa06b('0xf'),JSON[_0xa06b('0x11')](_0x397b60));if(_0x397b60[_0xa06b('0x12')]){if(_0x397b60[_0xa06b('0x12')][_0xa06b('0x13')]===0x1f4){logger[_0xa06b('0x12')]('DeskField,\x20%s,\x20%s',_0x2a88a3,_0x397b60[_0xa06b('0x12')][_0xa06b('0x14')]);return _0x4af073(_0x397b60[_0xa06b('0x12')][_0xa06b('0x14')]);}logger[_0xa06b('0x12')](_0xa06b('0xe'),_0x2a88a3,_0x397b60[_0xa06b('0x12')]['message']);return _0x27a868(_0x397b60[_0xa06b('0x12')]['message']);}else{logger[_0xa06b('0xd')](_0xa06b('0xe'),_0x2a88a3,_0xa06b('0xf'));_0x27a868(_0x397b60['result']['message']);}})[_0xa06b('0x15')](function(_0x59d767){logger[_0xa06b('0x12')]('DeskField,\x20%s,\x20%s',_0x2a88a3,_0x59d767);_0x4af073(_0x59d767);});});}
\ No newline at end of file
+var _0x3e9a=['rpc','../../config/environment','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../config/logger'];(function(_0x74f90a,_0xd6abdf){var _0x4b3991=function(_0x1c5fcc){while(--_0x1c5fcc){_0x74f90a['push'](_0x74f90a['shift']());}};_0x4b3991(++_0xd6abdf);}(_0x3e9a,0x1dd));var _0xa3e9=function(_0x22a44e,_0x17f97e){_0x22a44e=_0x22a44e-0x0;var _0x6d3862=_0x3e9a[_0x22a44e];return _0x6d3862;};'use strict';var _=require('lodash');var util=require(_0xa3e9('0x0'));var moment=require(_0xa3e9('0x1'));var BPromise=require(_0xa3e9('0x2'));var rs=require(_0xa3e9('0x3'));var fs=require('fs');var Redis=require(_0xa3e9('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa3e9('0x5'))(_0xa3e9('0x6'));var config=require(_0xa3e9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa3e9('0x8')][_0xa3e9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4bfbb2,_0x452766,_0x57edd3){return new BPromise(function(_0x19b6bc,_0x5ce965){return client[_0xa3e9('0xa')](_0x4bfbb2,_0x57edd3)[_0xa3e9('0xb')](function(_0xf64dea){logger[_0xa3e9('0xc')](_0xa3e9('0xd'),_0x452766,_0xa3e9('0xe'));logger['debug'](_0xa3e9('0xf'),_0x452766,_0xa3e9('0xe'),JSON[_0xa3e9('0x10')](_0xf64dea));if(_0xf64dea['error']){if(_0xf64dea[_0xa3e9('0x11')][_0xa3e9('0x12')]===0x1f4){logger[_0xa3e9('0x11')]('DeskField,\x20%s,\x20%s',_0x452766,_0xf64dea[_0xa3e9('0x11')][_0xa3e9('0x13')]);return _0x5ce965(_0xf64dea['error']['message']);}logger['error'](_0xa3e9('0xd'),_0x452766,_0xf64dea[_0xa3e9('0x11')][_0xa3e9('0x13')]);return _0x19b6bc(_0xf64dea[_0xa3e9('0x11')][_0xa3e9('0x13')]);}else{logger[_0xa3e9('0xc')](_0xa3e9('0xd'),_0x452766,_0xa3e9('0xe'));_0x19b6bc(_0xf64dea[_0xa3e9('0x14')][_0xa3e9('0x13')]);}})['catch'](function(_0x534ed0){logger[_0xa3e9('0x11')](_0xa3e9('0xd'),_0x452766,_0x534ed0);_0x5ce965(_0x534ed0);});});}
\ No newline at end of file
index cc9a8c1..8c797ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc873=['fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields','create','/:id/configurations','put','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4f5ab8,_0x5822b4){var _0x35f8e1=function(_0x4c4422){while(--_0x4c4422){_0x4f5ab8['push'](_0x4f5ab8['shift']());}};_0x35f8e1(++_0x5822b4);}(_0xc873,0x10c));var _0x3c87=function(_0x294bf7,_0x2e8656){_0x294bf7=_0x294bf7-0x0;var _0x16a32e=_0xc873[_0x294bf7];return _0x16a32e;};'use strict';var multer=require(_0x3c87('0x0'));var util=require(_0x3c87('0x1'));var path=require(_0x3c87('0x2'));var timeout=require(_0x3c87('0x3'));var express=require(_0x3c87('0x4'));var router=express['Router']();var fs_extra=require(_0x3c87('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3c87('0x6'));var config=require(_0x3c87('0x7'));var controller=require(_0x3c87('0x8'));router[_0x3c87('0x9')]('/',auth[_0x3c87('0xa')](),controller[_0x3c87('0xb')]);router[_0x3c87('0x9')](_0x3c87('0xc'),auth[_0x3c87('0xa')](),controller['show']);router[_0x3c87('0x9')]('/:id/configurations',auth[_0x3c87('0xa')](),controller[_0x3c87('0xd')]);router[_0x3c87('0x9')](_0x3c87('0xe'),auth[_0x3c87('0xa')](),controller[_0x3c87('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3c87('0x10')]);router['post'](_0x3c87('0x11'),auth[_0x3c87('0xa')](),controller['addConfiguration']);router[_0x3c87('0x12')](_0x3c87('0xc'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3c87('0x13')]);module[_0x3c87('0x14')]=router;
\ No newline at end of file
+var _0xb9c9=['getFields','post','/:id/configurations','addConfiguration','put','update','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','index','/:id','isAuthenticated','getConfigurations','/:id/fields'];(function(_0x132787,_0x49aebb){var _0x281428=function(_0x5e354e){while(--_0x5e354e){_0x132787['push'](_0x132787['shift']());}};_0x281428(++_0x49aebb);}(_0xb9c9,0x1d6));var _0x9b9c=function(_0x2b6b67,_0x4729f7){_0x2b6b67=_0x2b6b67-0x0;var _0x215366=_0xb9c9[_0x2b6b67];return _0x215366;};'use strict';var multer=require(_0x9b9c('0x0'));var util=require(_0x9b9c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9b9c('0x2'));var router=express['Router']();var fs_extra=require(_0x9b9c('0x3'));var auth=require(_0x9b9c('0x4'));var interaction=require(_0x9b9c('0x5'));var config=require(_0x9b9c('0x6'));var controller=require(_0x9b9c('0x7'));router[_0x9b9c('0x8')]('/',auth['isAuthenticated'](),controller[_0x9b9c('0x9')]);router[_0x9b9c('0x8')](_0x9b9c('0xa'),auth[_0x9b9c('0xb')](),controller['show']);router['get']('/:id/configurations',auth[_0x9b9c('0xb')](),controller[_0x9b9c('0xc')]);router[_0x9b9c('0x8')](_0x9b9c('0xd'),auth['isAuthenticated'](),controller[_0x9b9c('0xe')]);router[_0x9b9c('0xf')]('/',auth[_0x9b9c('0xb')](),controller['create']);router[_0x9b9c('0xf')](_0x9b9c('0x10'),auth[_0x9b9c('0xb')](),controller[_0x9b9c('0x11')]);router[_0x9b9c('0x12')](_0x9b9c('0xa'),auth[_0x9b9c('0xb')](),controller[_0x9b9c('0x13')]);router['delete'](_0x9b9c('0xa'),auth[_0x9b9c('0xb')](),controller[_0x9b9c('0x14')]);module[_0x9b9c('0x15')]=router;
\ No newline at end of file
index 2a89dc2..8e89db3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd448=['exports','STRING'];(function(_0x3fbc21,_0x4c9f2c){var _0x38bad8=function(_0x121ce5){while(--_0x121ce5){_0x3fbc21['push'](_0x3fbc21['shift']());}};_0x38bad8(++_0x4c9f2c);}(_0xd448,0x172));var _0x8d44=function(_0x140a7a,_0xa77344){_0x140a7a=_0x140a7a-0x0;var _0x274da4=_0xd448[_0x140a7a];return _0x274da4;};'use strict';var Sequelize=require('sequelize');module[_0x8d44('0x0')]={'name':{'type':Sequelize[_0x8d44('0x1')]},'username':{'type':Sequelize[_0x8d44('0x1')]},'password':{'type':Sequelize[_0x8d44('0x1')]},'remoteUri':{'type':Sequelize[_0x8d44('0x1')]},'tenantId':{'type':Sequelize[_0x8d44('0x1')]},'clientId':{'type':Sequelize[_0x8d44('0x1')]},'clientSecret':{'type':Sequelize[_0x8d44('0x1')]},'serverUrl':{'type':Sequelize[_0x8d44('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x8d44('0x1')]}};
\ No newline at end of file
+var _0xc8d2=['STRING','sequelize','exports'];(function(_0x4e639b,_0x41adda){var _0x2396ec=function(_0x4553c0){while(--_0x4553c0){_0x4e639b['push'](_0x4e639b['shift']());}};_0x2396ec(++_0x41adda);}(_0xc8d2,0xf7));var _0x2c8d=function(_0x203d15,_0x1d65b4){_0x203d15=_0x203d15-0x0;var _0x1f4acc=_0xc8d2[_0x203d15];return _0x1f4acc;};'use strict';var Sequelize=require(_0x2c8d('0x0'));module[_0x2c8d('0x1')]={'name':{'type':Sequelize[_0x2c8d('0x2')]},'username':{'type':Sequelize[_0x2c8d('0x2')]},'password':{'type':Sequelize[_0x2c8d('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x2c8d('0x2')]},'clientId':{'type':Sequelize[_0x2c8d('0x2')]},'clientSecret':{'type':Sequelize[_0x2c8d('0x2')]},'serverUrl':{'type':Sequelize[_0x2c8d('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2c8d('0x2')]}};
\ No newline at end of file
index 9742147..06cc7a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f8=['model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','merge','where','type','VIRTUAL','filter','options','Dynamics365Account','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','getConfigurations','findOne','order','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Dynamics365Configuration','Dynamics365Field','Subjects','getFields','incident','Incident','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyname','createdonbehalfbyname','customeridname','customeridtype','escalatedon','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responsiblecontactidname','sentimentvalue','slainvokedidname','socialprofileidname','statecode','statuscode','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','tenantId','clientId','clientSecret','remoteUri','format','POST','https://login.microsoftonline.com/','/oauth2/token','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','@odata.type','substring','lastIndexOf','PicklistAttributeMetadata','push','forEach','all','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','EntityDefinitions(',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','DisplayName','OptionSet','TrueOption','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','reject','update','then','error','name','send','index','map','rawAttributes','fieldName','key'];(function(_0x594867,_0x2ee5d3){var _0x9ac5b1=function(_0x4609ec){while(--_0x4609ec){_0x594867['push'](_0x594867['shift']());}};_0x9ac5b1(++_0x2ee5d3);}(_0x87f8,0x152));var _0x887f=function(_0x384ac3,_0x327f9){_0x384ac3=_0x384ac3-0x0;var _0x4cf673=_0x87f8[_0x384ac3];return _0x4cf673;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x887f('0x0'));var rp=require(_0x887f('0x1'));var moment=require('moment');var BPromise=require(_0x887f('0x2'));var Mustache=require('mustache');var util=require(_0x887f('0x3'));var path=require(_0x887f('0x4'));var sox=require(_0x887f('0x5'));var csv=require(_0x887f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x887f('0x7'));var _=require(_0x887f('0x8'));var squel=require(_0x887f('0x9'));var crypto=require(_0x887f('0xa'));var jsforce=require(_0x887f('0xb'));var deskjs=require(_0x887f('0xc'));var toCsv=require(_0x887f('0x6'));var querystring=require('querystring');var Papa=require(_0x887f('0xd'));var Redis=require('ioredis');var authService=require(_0x887f('0xe'));var qs=require(_0x887f('0xf'));var as=require(_0x887f('0x10'));var hardwareService=require(_0x887f('0x11'));var logger=require('../../config/logger')(_0x887f('0x12'));var utils=require(_0x887f('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x887f('0x14'))['db'];var integrations=require(_0x887f('0x15'));function respondWithStatusCode(_0x32e050,_0x589e92){_0x589e92=_0x589e92||0xcc;return function(_0x259198){if(_0x259198){return _0x32e050[_0x887f('0x16')](_0x589e92);}return _0x32e050['status'](_0x589e92)[_0x887f('0x17')]();};}function respondWithResult(_0x58152e,_0x59b7ab){_0x59b7ab=_0x59b7ab||0xc8;return function(_0xabcefd){if(_0xabcefd){return _0x58152e[_0x887f('0x18')](_0x59b7ab)['json'](_0xabcefd);}};}function respondWithFilteredResult(_0x3f189a,_0xf69779){return function(_0x9f5d78){if(_0x9f5d78){var _0x486b46=typeof _0xf69779[_0x887f('0x19')]===_0x887f('0x1a')&&typeof _0xf69779['limit']===_0x887f('0x1a');var _0x618c59=_0x9f5d78[_0x887f('0x1b')];var _0x3d3b0c=_0x486b46?0x0:_0xf69779[_0x887f('0x19')];var _0x19a134=_0x486b46?_0x9f5d78[_0x887f('0x1b')]:_0xf69779[_0x887f('0x19')]+_0xf69779[_0x887f('0x1c')];var _0x3964d6;if(_0x19a134>=_0x618c59){_0x19a134=_0x618c59;_0x3964d6=0xc8;}else{_0x3964d6=0xce;}_0x3f189a[_0x887f('0x18')](_0x3964d6);return _0x3f189a[_0x887f('0x1d')](_0x887f('0x1e'),_0x3d3b0c+'-'+_0x19a134+'/'+_0x618c59)['json'](_0x9f5d78);}return null;};}function patchUpdates(_0x129106){return function(_0x3c96c5){try{jsonpatch['apply'](_0x3c96c5,_0x129106,!![]);}catch(_0x11479b){return BPromise[_0x887f('0x1f')](_0x11479b);}return _0x3c96c5['save']();};}function saveUpdates(_0xc09608,_0x56beaa){return function(_0x2234ca){if(_0x2234ca){return _0x2234ca[_0x887f('0x20')](_0xc09608)['then'](function(_0x338777){return _0x338777;});}return null;};}function removeEntity(_0x3af68e,_0x3d6948){return function(_0x9f7131){if(_0x9f7131){return _0x9f7131['destroy']()[_0x887f('0x21')](function(){_0x3af68e[_0x887f('0x18')](0xcc)[_0x887f('0x17')]();});}};}function handleEntityNotFound(_0x1a1657,_0x42c8bd){return function(_0x4fbf9a){if(!_0x4fbf9a){_0x1a1657[_0x887f('0x16')](0x194);}return _0x4fbf9a;};}function handleError(_0x7eef96,_0x108890){_0x108890=_0x108890||0x1f4;return function(_0x4f25b1){logger[_0x887f('0x22')](_0x4f25b1['stack']);if(_0x4f25b1['name']){delete _0x4f25b1[_0x887f('0x23')];}_0x7eef96[_0x887f('0x18')](_0x108890)[_0x887f('0x24')](_0x4f25b1);};}exports[_0x887f('0x25')]=function(_0x1c5ce3,_0x4e1fe1){var _0x59d489={},_0x4238e0={},_0xca31ec={'count':0x0,'rows':[]};var _0x286b0d=_[_0x887f('0x26')](db['Dynamics365Account'][_0x887f('0x27')],function(_0x555db0){return{'name':_0x555db0[_0x887f('0x28')],'type':_0x555db0['type'][_0x887f('0x29')]};});_0x4238e0[_0x887f('0x2a')]=_[_0x887f('0x26')](_0x286b0d,_0x887f('0x23'));_0x4238e0[_0x887f('0x2b')]=_[_0x887f('0x2c')](_0x1c5ce3[_0x887f('0x2b')]);_0x4238e0[_0x887f('0x2d')]=_['intersection'](_0x4238e0[_0x887f('0x2a')],_0x4238e0[_0x887f('0x2b')]);_0x59d489[_0x887f('0x2e')]=_[_0x887f('0x2f')](_0x4238e0[_0x887f('0x2a')],qs[_0x887f('0x30')](_0x1c5ce3['query'][_0x887f('0x30')]));_0x59d489[_0x887f('0x2e')]=_0x59d489[_0x887f('0x2e')][_0x887f('0x31')]?_0x59d489[_0x887f('0x2e')]:_0x4238e0['model'];if(!_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x32')]('nolimit')){_0x59d489[_0x887f('0x1c')]=qs[_0x887f('0x1c')](_0x1c5ce3[_0x887f('0x2b')]['limit']);_0x59d489[_0x887f('0x19')]=qs[_0x887f('0x19')](_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x19')]);}_0x59d489['order']=qs[_0x887f('0x33')](_0x1c5ce3[_0x887f('0x2b')]['sort']);_0x59d489['where']=qs[_0x887f('0x2d')](_[_0x887f('0x34')](_0x1c5ce3[_0x887f('0x2b')],_0x4238e0['filters']),_0x286b0d);if(_0x1c5ce3[_0x887f('0x2b')]['filter']){_0x59d489['where']=_[_0x887f('0x35')](_0x59d489[_0x887f('0x36')],{'$or':_[_0x887f('0x26')](_0x286b0d,function(_0x5e9782){if(_0x5e9782[_0x887f('0x37')]!==_0x887f('0x38')){var _0x2867e6={};_0x2867e6[_0x5e9782['name']]={'$like':'%'+_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x39')]+'%'};return _0x2867e6;}})});}_0x59d489=_['merge']({},_0x59d489,_0x1c5ce3[_0x887f('0x3a')]);var _0x22d90d={'where':_0x59d489[_0x887f('0x36')]};return db[_0x887f('0x3b')][_0x887f('0x1b')](_0x22d90d)[_0x887f('0x21')](function(_0x5b59bd){_0xca31ec[_0x887f('0x1b')]=_0x5b59bd;if(_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x3c')]){_0x59d489[_0x887f('0x3d')]=[{'all':!![]}];}return db[_0x887f('0x3b')][_0x887f('0x3e')](_0x59d489);})[_0x887f('0x21')](function(_0x5ae680){_0xca31ec[_0x887f('0x3f')]=_0x5ae680;return _0xca31ec;})[_0x887f('0x21')](respondWithFilteredResult(_0x4e1fe1,_0x59d489))[_0x887f('0x40')](handleError(_0x4e1fe1,null));};exports[_0x887f('0x41')]=function(_0x55e700,_0x134f2e){var _0x79cf46={'raw':![],'where':{'id':_0x55e700[_0x887f('0x42')]['id']}},_0x4c8cfd={};_0x4c8cfd['model']=_['keys'](db[_0x887f('0x3b')][_0x887f('0x27')]);_0x4c8cfd[_0x887f('0x2b')]=_[_0x887f('0x2c')](_0x55e700[_0x887f('0x2b')]);_0x4c8cfd[_0x887f('0x2d')]=_['intersection'](_0x4c8cfd[_0x887f('0x2a')],_0x4c8cfd[_0x887f('0x2b')]);_0x79cf46[_0x887f('0x2e')]=_[_0x887f('0x2f')](_0x4c8cfd[_0x887f('0x2a')],qs[_0x887f('0x30')](_0x55e700[_0x887f('0x2b')][_0x887f('0x30')]));_0x79cf46[_0x887f('0x2e')]=_0x79cf46[_0x887f('0x2e')]['length']?_0x79cf46[_0x887f('0x2e')]:_0x4c8cfd[_0x887f('0x2a')];if(_0x55e700[_0x887f('0x2b')]['includeAll']){_0x79cf46[_0x887f('0x3d')]=[{'all':!![]}];}_0x79cf46=_[_0x887f('0x35')]({},_0x79cf46,_0x55e700['options']);return db[_0x887f('0x3b')][_0x887f('0x43')](_0x79cf46)[_0x887f('0x21')](handleEntityNotFound(_0x134f2e,null))[_0x887f('0x21')](respondWithResult(_0x134f2e,null))[_0x887f('0x40')](handleError(_0x134f2e,null));};exports[_0x887f('0x44')]=function(_0x22b11f,_0x514e59){return db['Dynamics365Account'][_0x887f('0x44')](_0x22b11f[_0x887f('0x45')],{})['then'](respondWithResult(_0x514e59,0xc9))[_0x887f('0x40')](handleError(_0x514e59,null));};exports[_0x887f('0x20')]=function(_0x2bdd65,_0x26a960){if(_0x2bdd65[_0x887f('0x45')]['id']){delete _0x2bdd65[_0x887f('0x45')]['id'];}return db['Dynamics365Account']['find']({'where':{'id':_0x2bdd65[_0x887f('0x42')]['id']}})['then'](handleEntityNotFound(_0x26a960,null))[_0x887f('0x21')](saveUpdates(_0x2bdd65['body'],null))[_0x887f('0x21')](respondWithResult(_0x26a960,null))[_0x887f('0x40')](handleError(_0x26a960,null));};exports[_0x887f('0x46')]=function(_0x417c8d,_0x4138c2){return db['Dynamics365Account'][_0x887f('0x43')]({'where':{'id':_0x417c8d[_0x887f('0x42')]['id']}})[_0x887f('0x21')](handleEntityNotFound(_0x4138c2,null))[_0x887f('0x21')](removeEntity(_0x4138c2,null))[_0x887f('0x40')](handleError(_0x4138c2,null));};exports[_0x887f('0x47')]=function(_0x320f54,_0xfc352a,_0x4fbdfb){var _0x3c9506={};var _0x39c4f1={};var _0x1cd395;var _0xea296b;return db[_0x887f('0x3b')][_0x887f('0x48')]({'where':{'id':_0x320f54[_0x887f('0x42')]['id']}})[_0x887f('0x21')](handleEntityNotFound(_0xfc352a,null))['then'](function(_0x1a7560){if(_0x1a7560){_0x1cd395=_0x1a7560;_0x39c4f1['model']=_['keys'](db['Dynamics365Configuration']['rawAttributes']);_0x39c4f1['query']=_['keys'](_0x320f54['query']);_0x39c4f1[_0x887f('0x2d')]=_['intersection'](_0x39c4f1[_0x887f('0x2a')],_0x39c4f1[_0x887f('0x2b')]);_0x3c9506['attributes']=_['intersection'](_0x39c4f1['model'],qs[_0x887f('0x30')](_0x320f54[_0x887f('0x2b')][_0x887f('0x30')]));_0x3c9506['attributes']=_0x3c9506[_0x887f('0x2e')]['length']?_0x3c9506[_0x887f('0x2e')]:_0x39c4f1['model'];_0x3c9506[_0x887f('0x49')]=qs['sort'](_0x320f54[_0x887f('0x2b')]['sort']);_0x3c9506['where']=qs[_0x887f('0x2d')](_[_0x887f('0x34')](_0x320f54[_0x887f('0x2b')],_0x39c4f1['filters']));if(_0x320f54[_0x887f('0x2b')][_0x887f('0x39')]){_0x3c9506[_0x887f('0x36')]=_[_0x887f('0x35')](_0x3c9506[_0x887f('0x36')],{'$or':_[_0x887f('0x26')](_0x3c9506[_0x887f('0x2e')],function(_0x43db9c){var _0x172840={};_0x172840[_0x43db9c]={'$like':'%'+_0x320f54[_0x887f('0x2b')][_0x887f('0x39')]+'%'};return _0x172840;})});}_0x3c9506=_[_0x887f('0x35')]({},_0x3c9506,_0x320f54[_0x887f('0x3a')]);return _0x1cd395[_0x887f('0x47')](_0x3c9506);}})[_0x887f('0x21')](function(_0x495f5d){if(_0x495f5d){_0xea296b=_0x495f5d[_0x887f('0x31')];if(!_0x320f54[_0x887f('0x2b')][_0x887f('0x32')]('nolimit')){_0x3c9506['limit']=qs[_0x887f('0x1c')](_0x320f54[_0x887f('0x2b')][_0x887f('0x1c')]);_0x3c9506['offset']=qs[_0x887f('0x19')](_0x320f54[_0x887f('0x2b')][_0x887f('0x19')]);}return _0x1cd395[_0x887f('0x47')](_0x3c9506);}})[_0x887f('0x21')](function(_0x3cfce6){if(_0x3cfce6){return _0x3cfce6?{'count':_0xea296b,'rows':_0x3cfce6}:null;}})[_0x887f('0x21')](respondWithResult(_0xfc352a,null))['catch'](handleError(_0xfc352a,null));};exports[_0x887f('0x4a')]=function(_0x35f98f,_0xe157d1,_0x1f66ca){if(_0x35f98f['body']['id']){delete _0x35f98f[_0x887f('0x45')]['id'];}return db[_0x887f('0x3b')][_0x887f('0x48')]({'where':{'id':_0x35f98f[_0x887f('0x42')]['id']}})[_0x887f('0x21')](handleEntityNotFound(_0xe157d1,null))[_0x887f('0x21')](function(_0x36a8df){if(_0x36a8df){_0x35f98f['body'][_0x887f('0x4b')]=_0x36a8df['id'];_0x35f98f[_0x887f('0x45')]['Subjects']=integrations[_0x887f('0x4c')](_0x35f98f[_0x887f('0x45')][_0x887f('0x4d')],_0x35f98f[_0x887f('0x45')][_0x887f('0x37')]);_0x35f98f[_0x887f('0x45')]['Descriptions']=integrations[_0x887f('0x4e')](_0x35f98f[_0x887f('0x45')]['channel'],_0x35f98f['body'][_0x887f('0x37')]);return db[_0x887f('0x4f')]['create'](_0x35f98f['body'],{'include':[{'model':db[_0x887f('0x50')],'as':_0x887f('0x51')},{'model':db[_0x887f('0x50')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0xe157d1,null))[_0x887f('0x40')](handleError(_0xe157d1,null));};exports[_0x887f('0x52')]=function(_0x5a91f1,_0xf77802,_0xc376cc){var _0x5773a8=_0x5a91f1[_0x887f('0x2b')]['ticketType'];var _0x1ff973=_0x5773a8===_0x887f('0x53')?_0x887f('0x54'):'PhoneCall';var _0x231522='';var _0x3f03b7='';var _0x22a9e9='';var _0x13596f='';var _0x12dde3='';var _0x1fa578='';var _0x19d028='';var _0x72f49f='';var _0x49c2bd=[_0x887f('0x55'),_0x887f('0x56'),_0x887f('0x57'),_0x887f('0x58'),_0x887f('0x59'),_0x887f('0x5a'),_0x887f('0x5b'),_0x887f('0x5c'),'directioncode','phonecall_activity_parties'];var _0x3abf35=['accountidname',_0x887f('0x5d'),_0x887f('0x5e'),_0x887f('0x5f'),_0x887f('0x60'),_0x887f('0x61'),_0x887f('0x62'),'contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame',_0x887f('0x63'),'createdbyyominame','createdon',_0x887f('0x64'),'createdonbehalfbyyominame',_0x887f('0x65'),_0x887f('0x66'),'customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url',_0x887f('0x67'),_0x887f('0x68'),_0x887f('0x69'),'followupby',_0x887f('0x6a'),_0x887f('0x6b'),_0x887f('0x6c'),'lastonholdtime',_0x887f('0x6d'),'modifiedbyexternalpartyname',_0x887f('0x6e'),'modifiedbyname',_0x887f('0x6f'),_0x887f('0x70'),'modifiedonbehalfbyname',_0x887f('0x71'),_0x887f('0x72'),_0x887f('0x73'),_0x887f('0x74'),_0x887f('0x75'),_0x887f('0x76'),_0x887f('0x77'),_0x887f('0x78'),_0x887f('0x79'),_0x887f('0x7a'),'primarycontactidname',_0x887f('0x7b'),_0x887f('0x7c'),_0x887f('0x7d'),_0x887f('0x7e'),_0x887f('0x7f'),_0x887f('0x80'),'responseby',_0x887f('0x81'),'responsiblecontactidyominame',_0x887f('0x82'),_0x887f('0x83'),'slaname',_0x887f('0x84'),_0x887f('0x85'),_0x887f('0x86'),'subjectidname','ticketnumber',_0x887f('0x87'),'transactioncurrencyidname',_0x887f('0x88'),_0x887f('0x89'),_0x887f('0x8a')];var _0x173ab6=_0x49c2bd[_0x887f('0x8b')](_0x3abf35);return db[_0x887f('0x3b')]['findOne']({'where':{'id':_0x5a91f1[_0x887f('0x42')]['id']},'attributes':['id',_0x887f('0x8c'),'password','remoteUri',_0x887f('0x8d'),_0x887f('0x8e'),_0x887f('0x8f')]})[_0x887f('0x21')](handleEntityNotFound(_0xf77802,null))['then'](function(_0x3c326f){if(_0x3c326f){_0x72f49f=_0x3c326f[_0x887f('0x90')];var _0x59d1fc=_0x72f49f['slice'](-0x1);if(_0x59d1fc==='/'){_0x72f49f=_0x72f49f['substring'](0x0,_0x72f49f['lastIndexOf'](_0x59d1fc));}_0x19d028=util[_0x887f('0x91')]('%s/api/data/v9.0/',_0x72f49f);var _0x5bf1d7={'method':_0x887f('0x92'),'uri':_0x887f('0x93')+_0x3c326f['tenantId']+_0x887f('0x94'),'form':{'client_id':_0x3c326f[_0x887f('0x8e')],'resource':_0x72f49f,'username':_0x3c326f[_0x887f('0x8c')],'password':_0x3c326f[_0x887f('0x95')],'grant_type':_0x887f('0x95'),'client_secret':_0x3c326f[_0x887f('0x8f')]},'json':!![]};return rp(_0x5bf1d7);}})[_0x887f('0x21')](function(_0x34deea){_0x1fa578=_0x34deea[_0x887f('0x96')];var _0x1a20a4={'method':'GET','uri':encodeURI(_0x19d028+_0x887f('0x97')+_0x1ff973+'\x27'),'headers':{'Authorization':_0x887f('0x98')+_0x1fa578,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x1a20a4);})[_0x887f('0x21')](function(_0x597bcb){var _0x4464d1=_0x597bcb[_0x887f('0x9a')][0x0];var _0x51abab=_0x4464d1[_0x887f('0x9b')];var _0x2fb5bb={'method':_0x887f('0x9c'),'uri':_0x19d028+'EntityDefinitions('+_0x51abab+_0x887f('0x9d'),'headers':{'Authorization':'Bearer\x20'+_0x1fa578,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x2fb5bb);})[_0x887f('0x21')](function(_0x1d8109){_0x231522=_0x1d8109;_0x3f03b7=_0x231522[_0x887f('0x9e')];_0x3f03b7=_[_0x887f('0x9f')](_0x3f03b7,function(_0x1c9553){return!_0x173ab6[_0x887f('0xa0')](_0x1c9553[_0x887f('0xa1')]);});var _0x56bfd7=[];var _0x5eb8c6=[];_0x3f03b7['forEach'](function(_0x1e7d76){if(_0x1e7d76['@odata.type']){var _0x5d046c=_0x1e7d76[_0x887f('0xa2')][_0x887f('0xa3')](_0x1e7d76[_0x887f('0xa2')][_0x887f('0xa4')]('.')+0x1);if(_0x5d046c===_0x887f('0xa5')){_0x56bfd7[_0x887f('0xa6')](getSelectList(_0x19d028,_0x5773a8,_0x5eb8c6,_0x231522[_0x887f('0x9b')],_0x1e7d76[_0x887f('0x9b')],_0x1fa578));}}});return Promise['all'](_0x56bfd7);})['then'](function(_0x58232b){_0x22a9e9=_0x58232b[0x0];var _0x1c489f=[];var _0x3ab267=[];_0x3f03b7[_0x887f('0xa7')](function(_0x337fba){if(!_['isNil'](_0x337fba[_0x887f('0xa2')])){var _0x1df446=_0x337fba['@odata.type'][_0x887f('0xa3')](_0x337fba[_0x887f('0xa2')][_0x887f('0xa4')]('.')+0x1);if(_0x1df446==='BooleanAttributeMetadata'){_0x1c489f[_0x887f('0xa6')](getBooleanList(_0x19d028,_0x5773a8,_0x3ab267,_0x231522[_0x887f('0x9b')],_0x337fba[_0x887f('0x9b')],_0x1fa578));}}});return Promise[_0x887f('0xa8')](_0x1c489f);})[_0x887f('0x21')](function(_0x5aa8a0){_0x13596f=_0x5aa8a0[0x0];var _0x698520=[];var _0x30e62e=[];_0x3f03b7[_0x887f('0xa7')](function(_0x1b5e14){if(_0x1b5e14[_0x887f('0xa2')]){var _0x707e97=_0x1b5e14[_0x887f('0xa2')]['substring'](_0x1b5e14['@odata.type']['lastIndexOf']('.')+0x1);if(_0x707e97===_0x887f('0xa9')||_0x707e97==='DoubleAttributeMetadata'||_0x707e97===_0x887f('0xaa')||_0x707e97===_0x887f('0xab')||_0x707e97===_0x887f('0xac')||_0x707e97==='DateTimeAttributeMetadata'||_0x707e97===_0x887f('0xad')||_0x707e97===_0x887f('0xae')||_0x707e97===_0x887f('0xaf')||_0x707e97===_0x887f('0xb0')){_0x698520[_0x887f('0xa6')](getInputList(_0x19d028,_0x5773a8,_0x707e97,_0x30e62e,_0x231522['MetadataId'],_0x1b5e14[_0x887f('0x9b')],_0x1fa578));}}});return Promise[_0x887f('0xa8')](_0x698520);})[_0x887f('0x21')](function(_0x595de2){_0x12dde3=_0x595de2[0x0];var _0x1851d6=_0x22a9e9[_0x887f('0x8b')](_0x13596f)[_0x887f('0x8b')](_0x12dde3);var _0x244a66={'count':_0x1851d6[_0x887f('0x31')],'rows':_0x1851d6};return _0x244a66;})['then'](respondWithResult(_0xf77802,null))[_0x887f('0x40')](function(_0x5ac951){var _0x1daf1d=_0x5a91f1['query'][_0x887f('0xb1')]?0x1f4:_0x5ac951['statusCode']||0x1f4;logger[_0x887f('0x22')](_0x5ac951['stack']);delete _0x5ac951[_0x887f('0x23')];if(_0x1daf1d===0x191){_0x1daf1d=0x190;}_0xf77802[_0x887f('0x18')](_0x1daf1d)[_0x887f('0x24')](_0x5a91f1['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x5ac951['statusCode']}:_0x5ac951);});};function getSelectList(_0x234d80,_0x4f7d9c,_0x5dcb52,_0xa4e75a,_0x3cb13d,_0x309bdb){var _0x4dc65b={'method':_0x887f('0x9c'),'uri':_0x234d80+_0x887f('0xb2')+_0xa4e75a+_0x887f('0xb3')+_0x3cb13d+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x887f('0xb4'),'headers':{'Authorization':'Bearer\x20'+_0x309bdb,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4dc65b)[_0x887f('0x21')](function(_0x25905e){var _0x47c043=[];var _0xaeae2c=_0x25905e['OptionSet'][_0x887f('0xb5')];_0xaeae2c['forEach'](function(_0x5e0cf8){_0x47c043[_0x887f('0xa6')]({'name':_0x5e0cf8[_0x887f('0xb6')][_0x887f('0xb7')]['Label'],'value':String(_0x5e0cf8['Value'])});});var _0x11b579={'id':_0x4f7d9c+'_'+_0x25905e['LogicalName'],'name':_0x25905e[_0x887f('0xb8')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x47c043};_0x5dcb52['push'](_0x11b579);return _0x5dcb52;});}function getBooleanList(_0x4ad359,_0x3bd0dc,_0x29f385,_0x43bcc8,_0x323ef2,_0x47ed3a){var _0x186cff={'method':_0x887f('0x9c'),'uri':_0x4ad359+'EntityDefinitions('+_0x43bcc8+')/Attributes('+_0x323ef2+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':'Bearer\x20'+_0x47ed3a,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x186cff)['then'](function(_0x430786){var _0x24d106=[];_0x24d106[_0x887f('0xa6')]({'name':_0x430786[_0x887f('0xb9')][_0x887f('0xba')][_0x887f('0xb6')][_0x887f('0xb7')][_0x887f('0xb6')],'value':'true'},{'name':_0x430786[_0x887f('0xb9')][_0x887f('0xbb')][_0x887f('0xb6')]['UserLocalizedLabel'][_0x887f('0xb6')],'value':'false'});var _0x1a82a6={'id':_0x3bd0dc+'_'+_0x430786[_0x887f('0xa1')],'name':_0x430786[_0x887f('0xb8')][_0x887f('0xb7')]['Label'],'custom':![],'options':_0x24d106};_0x29f385[_0x887f('0xa6')](_0x1a82a6);return _0x29f385;});}function getInputList(_0xc722d3,_0xb81cbe,_0xe7f623,_0x4dfaee,_0x38de69,_0x58a150,_0x2bcce9){var _0x2c5103={'method':_0x887f('0x9c'),'uri':_0xc722d3+'EntityDefinitions('+_0x38de69+')/Attributes('+_0x58a150+_0x887f('0xbc')+_0xe7f623+_0x887f('0xbd'),'headers':{'Authorization':_0x887f('0x98')+_0x2bcce9,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x2c5103)[_0x887f('0x21')](function(_0x5091ca){var _0x55277a={'id':_0xb81cbe+'_'+_0x5091ca[_0x887f('0xa1')],'name':_0x5091ca['DisplayName'][_0x887f('0xb7')]?_0x5091ca[_0x887f('0xb8')][_0x887f('0xb7')][_0x887f('0xb6')]:_0x5091ca[_0x887f('0xa1')],'custom':![],'options':[]};_0x4dfaee['push'](_0x55277a);return _0x4dfaee;});}
\ No newline at end of file
+var _0xaeab=['find','create','body','params','destroy','findOne','Dynamics365Configuration','length','order','getConfigurations','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','title','description','ownerid','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','username','password','tenantId','clientId','clientSecret','remoteUri','substring','lastIndexOf','format','%s/api/data/v9.0/','https://login.microsoftonline.com/','/oauth2/token','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(','4.0','Attributes','remove','forEach','@odata.type','push','all','isNil','BooleanAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','error',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','UserLocalizedLabel','Label','Value','LogicalName','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','end','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll'];(function(_0x238ef9,_0x10a11b){var _0x1b5746=function(_0x341d69){while(--_0x341d69){_0x238ef9['push'](_0x238ef9['shift']());}};_0x1b5746(++_0x10a11b);}(_0xaeab,0x91));var _0xbaea=function(_0x34d517,_0x8d0815){_0x34d517=_0x34d517-0x0;var _0x2ca52b=_0xaeab[_0x34d517];return _0x2ca52b;};'use strict';var emlformat=require(_0xbaea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbaea('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbaea('0x2'));var moment=require(_0xbaea('0x3'));var BPromise=require(_0xbaea('0x4'));var Mustache=require(_0xbaea('0x5'));var util=require(_0xbaea('0x6'));var path=require(_0xbaea('0x7'));var sox=require(_0xbaea('0x8'));var csv=require(_0xbaea('0x9'));var ejs=require(_0xbaea('0xa'));var fs=require('fs');var fs_extra=require(_0xbaea('0xb'));var _=require('lodash');var squel=require(_0xbaea('0xc'));var crypto=require(_0xbaea('0xd'));var jsforce=require(_0xbaea('0xe'));var deskjs=require(_0xbaea('0xf'));var toCsv=require(_0xbaea('0x9'));var querystring=require(_0xbaea('0x10'));var Papa=require(_0xbaea('0x11'));var Redis=require(_0xbaea('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xbaea('0x13'));var as=require(_0xbaea('0x14'));var hardwareService=require(_0xbaea('0x15'));var logger=require(_0xbaea('0x16'))(_0xbaea('0x17'));var utils=require('../../config/utils');var config=require(_0xbaea('0x18'));var licenseUtil=require(_0xbaea('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbaea('0x1a'));function respondWithStatusCode(_0x3d85f5,_0x330416){_0x330416=_0x330416||0xcc;return function(_0x2e901a){if(_0x2e901a){return _0x3d85f5[_0xbaea('0x1b')](_0x330416);}return _0x3d85f5[_0xbaea('0x1c')](_0x330416)['end']();};}function respondWithResult(_0x5a3ffd,_0x813650){_0x813650=_0x813650||0xc8;return function(_0x2b6bfd){if(_0x2b6bfd){return _0x5a3ffd[_0xbaea('0x1c')](_0x813650)[_0xbaea('0x1d')](_0x2b6bfd);}};}function respondWithFilteredResult(_0x3c7ee7,_0x48db73){return function(_0x51cdae){if(_0x51cdae){var _0x275526=typeof _0x48db73[_0xbaea('0x1e')]==='undefined'&&typeof _0x48db73[_0xbaea('0x1f')]===_0xbaea('0x20');var _0x28e71c=_0x51cdae[_0xbaea('0x21')];var _0x33fa58=_0x275526?0x0:_0x48db73[_0xbaea('0x1e')];var _0x4dfd59=_0x275526?_0x51cdae['count']:_0x48db73['offset']+_0x48db73['limit'];var _0x33503d;if(_0x4dfd59>=_0x28e71c){_0x4dfd59=_0x28e71c;_0x33503d=0xc8;}else{_0x33503d=0xce;}_0x3c7ee7[_0xbaea('0x1c')](_0x33503d);return _0x3c7ee7[_0xbaea('0x22')](_0xbaea('0x23'),_0x33fa58+'-'+_0x4dfd59+'/'+_0x28e71c)[_0xbaea('0x1d')](_0x51cdae);}return null;};}function patchUpdates(_0x57adc2){return function(_0x11dfef){try{jsonpatch[_0xbaea('0x24')](_0x11dfef,_0x57adc2,!![]);}catch(_0x5e5e36){return BPromise[_0xbaea('0x25')](_0x5e5e36);}return _0x11dfef[_0xbaea('0x26')]();};}function saveUpdates(_0xe4916,_0xddfd0f){return function(_0x28fd44){if(_0x28fd44){return _0x28fd44['update'](_0xe4916)[_0xbaea('0x27')](function(_0x5a430d){return _0x5a430d;});}return null;};}function removeEntity(_0x121007,_0x3dc02b){return function(_0x5977ec){if(_0x5977ec){return _0x5977ec['destroy']()['then'](function(){_0x121007[_0xbaea('0x1c')](0xcc)[_0xbaea('0x28')]();});}};}function handleEntityNotFound(_0x3b7d1d,_0x39fd77){return function(_0x28ec49){if(!_0x28ec49){_0x3b7d1d[_0xbaea('0x1b')](0x194);}return _0x28ec49;};}function handleError(_0x5c8e10,_0x46ae89){_0x46ae89=_0x46ae89||0x1f4;return function(_0xbc9b0d){logger['error'](_0xbc9b0d[_0xbaea('0x29')]);if(_0xbc9b0d[_0xbaea('0x2a')]){delete _0xbc9b0d[_0xbaea('0x2a')];}_0x5c8e10[_0xbaea('0x1c')](_0x46ae89)[_0xbaea('0x2b')](_0xbc9b0d);};}exports[_0xbaea('0x2c')]=function(_0x86d381,_0x3ad6eb){var _0x10af62={},_0x208677={},_0x8d2c5f={'count':0x0,'rows':[]};var _0x38bc79=_['map'](db[_0xbaea('0x2d')][_0xbaea('0x2e')],function(_0xa473a8){return{'name':_0xa473a8[_0xbaea('0x2f')],'type':_0xa473a8[_0xbaea('0x30')][_0xbaea('0x31')]};});_0x208677['model']=_[_0xbaea('0x32')](_0x38bc79,'name');_0x208677[_0xbaea('0x33')]=_[_0xbaea('0x34')](_0x86d381[_0xbaea('0x33')]);_0x208677[_0xbaea('0x35')]=_[_0xbaea('0x36')](_0x208677[_0xbaea('0x37')],_0x208677[_0xbaea('0x33')]);_0x10af62[_0xbaea('0x38')]=_[_0xbaea('0x36')](_0x208677[_0xbaea('0x37')],qs[_0xbaea('0x39')](_0x86d381[_0xbaea('0x33')][_0xbaea('0x39')]));_0x10af62['attributes']=_0x10af62[_0xbaea('0x38')]['length']?_0x10af62[_0xbaea('0x38')]:_0x208677[_0xbaea('0x37')];if(!_0x86d381['query'][_0xbaea('0x3a')](_0xbaea('0x3b'))){_0x10af62['limit']=qs['limit'](_0x86d381[_0xbaea('0x33')][_0xbaea('0x1f')]);_0x10af62[_0xbaea('0x1e')]=qs[_0xbaea('0x1e')](_0x86d381[_0xbaea('0x33')][_0xbaea('0x1e')]);}_0x10af62['order']=qs['sort'](_0x86d381[_0xbaea('0x33')][_0xbaea('0x3c')]);_0x10af62[_0xbaea('0x3d')]=qs[_0xbaea('0x35')](_[_0xbaea('0x3e')](_0x86d381['query'],_0x208677[_0xbaea('0x35')]),_0x38bc79);if(_0x86d381[_0xbaea('0x33')][_0xbaea('0x3f')]){_0x10af62['where']=_[_0xbaea('0x40')](_0x10af62[_0xbaea('0x3d')],{'$or':_[_0xbaea('0x32')](_0x38bc79,function(_0x1c4a97){if(_0x1c4a97['type']!==_0xbaea('0x41')){var _0x229b55={};_0x229b55[_0x1c4a97[_0xbaea('0x2a')]]={'$like':'%'+_0x86d381[_0xbaea('0x33')]['filter']+'%'};return _0x229b55;}})});}_0x10af62=_[_0xbaea('0x40')]({},_0x10af62,_0x86d381[_0xbaea('0x42')]);var _0x337389={'where':_0x10af62['where']};return db[_0xbaea('0x2d')][_0xbaea('0x21')](_0x337389)[_0xbaea('0x27')](function(_0x1937a0){_0x8d2c5f[_0xbaea('0x21')]=_0x1937a0;if(_0x86d381[_0xbaea('0x33')]['includeAll']){_0x10af62[_0xbaea('0x43')]=[{'all':!![]}];}return db['Dynamics365Account'][_0xbaea('0x44')](_0x10af62);})[_0xbaea('0x27')](function(_0x4222a1){_0x8d2c5f[_0xbaea('0x45')]=_0x4222a1;return _0x8d2c5f;})[_0xbaea('0x27')](respondWithFilteredResult(_0x3ad6eb,_0x10af62))[_0xbaea('0x46')](handleError(_0x3ad6eb,null));};exports[_0xbaea('0x47')]=function(_0x4c08c6,_0xfb376e){var _0x381fcd={'raw':![],'where':{'id':_0x4c08c6['params']['id']}},_0x58c565={};_0x58c565[_0xbaea('0x37')]=_[_0xbaea('0x34')](db[_0xbaea('0x2d')][_0xbaea('0x2e')]);_0x58c565[_0xbaea('0x33')]=_[_0xbaea('0x34')](_0x4c08c6[_0xbaea('0x33')]);_0x58c565[_0xbaea('0x35')]=_[_0xbaea('0x36')](_0x58c565[_0xbaea('0x37')],_0x58c565[_0xbaea('0x33')]);_0x381fcd[_0xbaea('0x38')]=_[_0xbaea('0x36')](_0x58c565[_0xbaea('0x37')],qs['fields'](_0x4c08c6[_0xbaea('0x33')]['fields']));_0x381fcd['attributes']=_0x381fcd[_0xbaea('0x38')]['length']?_0x381fcd['attributes']:_0x58c565['model'];if(_0x4c08c6[_0xbaea('0x33')][_0xbaea('0x48')]){_0x381fcd[_0xbaea('0x43')]=[{'all':!![]}];}_0x381fcd=_[_0xbaea('0x40')]({},_0x381fcd,_0x4c08c6[_0xbaea('0x42')]);return db[_0xbaea('0x2d')][_0xbaea('0x49')](_0x381fcd)[_0xbaea('0x27')](handleEntityNotFound(_0xfb376e,null))[_0xbaea('0x27')](respondWithResult(_0xfb376e,null))[_0xbaea('0x46')](handleError(_0xfb376e,null));};exports[_0xbaea('0x4a')]=function(_0x52c096,_0x25e385){return db[_0xbaea('0x2d')][_0xbaea('0x4a')](_0x52c096[_0xbaea('0x4b')],{})[_0xbaea('0x27')](respondWithResult(_0x25e385,0xc9))[_0xbaea('0x46')](handleError(_0x25e385,null));};exports['update']=function(_0x5f2e8d,_0x412595){if(_0x5f2e8d[_0xbaea('0x4b')]['id']){delete _0x5f2e8d[_0xbaea('0x4b')]['id'];}return db[_0xbaea('0x2d')][_0xbaea('0x49')]({'where':{'id':_0x5f2e8d[_0xbaea('0x4c')]['id']}})[_0xbaea('0x27')](handleEntityNotFound(_0x412595,null))[_0xbaea('0x27')](saveUpdates(_0x5f2e8d['body'],null))[_0xbaea('0x27')](respondWithResult(_0x412595,null))[_0xbaea('0x46')](handleError(_0x412595,null));};exports[_0xbaea('0x4d')]=function(_0x4a388f,_0x27ef8b){return db['Dynamics365Account'][_0xbaea('0x49')]({'where':{'id':_0x4a388f[_0xbaea('0x4c')]['id']}})[_0xbaea('0x27')](handleEntityNotFound(_0x27ef8b,null))[_0xbaea('0x27')](removeEntity(_0x27ef8b,null))[_0xbaea('0x46')](handleError(_0x27ef8b,null));};exports['getConfigurations']=function(_0x208b08,_0x37b7bb,_0x477177){var _0x4a1bf6={};var _0x22d609={};var _0x2e89b4;var _0x59716d;return db['Dynamics365Account'][_0xbaea('0x4e')]({'where':{'id':_0x208b08[_0xbaea('0x4c')]['id']}})[_0xbaea('0x27')](handleEntityNotFound(_0x37b7bb,null))[_0xbaea('0x27')](function(_0x29c84d){if(_0x29c84d){_0x2e89b4=_0x29c84d;_0x22d609[_0xbaea('0x37')]=_['keys'](db[_0xbaea('0x4f')][_0xbaea('0x2e')]);_0x22d609[_0xbaea('0x33')]=_[_0xbaea('0x34')](_0x208b08[_0xbaea('0x33')]);_0x22d609[_0xbaea('0x35')]=_['intersection'](_0x22d609[_0xbaea('0x37')],_0x22d609[_0xbaea('0x33')]);_0x4a1bf6[_0xbaea('0x38')]=_[_0xbaea('0x36')](_0x22d609[_0xbaea('0x37')],qs['fields'](_0x208b08[_0xbaea('0x33')][_0xbaea('0x39')]));_0x4a1bf6['attributes']=_0x4a1bf6[_0xbaea('0x38')][_0xbaea('0x50')]?_0x4a1bf6['attributes']:_0x22d609[_0xbaea('0x37')];_0x4a1bf6[_0xbaea('0x51')]=qs[_0xbaea('0x3c')](_0x208b08[_0xbaea('0x33')]['sort']);_0x4a1bf6[_0xbaea('0x3d')]=qs[_0xbaea('0x35')](_[_0xbaea('0x3e')](_0x208b08[_0xbaea('0x33')],_0x22d609[_0xbaea('0x35')]));if(_0x208b08['query'][_0xbaea('0x3f')]){_0x4a1bf6[_0xbaea('0x3d')]=_[_0xbaea('0x40')](_0x4a1bf6[_0xbaea('0x3d')],{'$or':_[_0xbaea('0x32')](_0x4a1bf6[_0xbaea('0x38')],function(_0x29d0e0){var _0x1d229f={};_0x1d229f[_0x29d0e0]={'$like':'%'+_0x208b08[_0xbaea('0x33')]['filter']+'%'};return _0x1d229f;})});}_0x4a1bf6=_[_0xbaea('0x40')]({},_0x4a1bf6,_0x208b08[_0xbaea('0x42')]);return _0x2e89b4['getConfigurations'](_0x4a1bf6);}})['then'](function(_0x160981){if(_0x160981){_0x59716d=_0x160981[_0xbaea('0x50')];if(!_0x208b08['query'][_0xbaea('0x3a')](_0xbaea('0x3b'))){_0x4a1bf6[_0xbaea('0x1f')]=qs['limit'](_0x208b08[_0xbaea('0x33')][_0xbaea('0x1f')]);_0x4a1bf6[_0xbaea('0x1e')]=qs['offset'](_0x208b08['query']['offset']);}return _0x2e89b4[_0xbaea('0x52')](_0x4a1bf6);}})[_0xbaea('0x27')](function(_0x599e1b){if(_0x599e1b){return _0x599e1b?{'count':_0x59716d,'rows':_0x599e1b}:null;}})[_0xbaea('0x27')](respondWithResult(_0x37b7bb,null))[_0xbaea('0x46')](handleError(_0x37b7bb,null));};exports[_0xbaea('0x53')]=function(_0x4f0592,_0x3b4e78,_0x255f2c){if(_0x4f0592[_0xbaea('0x4b')]['id']){delete _0x4f0592['body']['id'];}return db[_0xbaea('0x2d')]['findOne']({'where':{'id':_0x4f0592['params']['id']}})['then'](handleEntityNotFound(_0x3b4e78,null))[_0xbaea('0x27')](function(_0x29d7b5){if(_0x29d7b5){_0x4f0592[_0xbaea('0x4b')]['AccountId']=_0x29d7b5['id'];_0x4f0592[_0xbaea('0x4b')][_0xbaea('0x54')]=integrations[_0xbaea('0x55')](_0x4f0592['body'][_0xbaea('0x56')],_0x4f0592[_0xbaea('0x4b')]['type']);_0x4f0592[_0xbaea('0x4b')][_0xbaea('0x57')]=integrations[_0xbaea('0x58')](_0x4f0592[_0xbaea('0x4b')][_0xbaea('0x56')],_0x4f0592[_0xbaea('0x4b')][_0xbaea('0x30')]);return db['Dynamics365Configuration']['create'](_0x4f0592['body'],{'include':[{'model':db[_0xbaea('0x59')],'as':_0xbaea('0x54')},{'model':db[_0xbaea('0x59')],'as':_0xbaea('0x57')}]});}return null;})[_0xbaea('0x27')](respondWithResult(_0x3b4e78,null))[_0xbaea('0x46')](handleError(_0x3b4e78,null));};exports[_0xbaea('0x5a')]=function(_0x35845e,_0x3fde99,_0x197f35){var _0x25fc7b=_0x35845e['query'][_0xbaea('0x5b')];var _0x43c578=_0x25fc7b===_0xbaea('0x5c')?_0xbaea('0x5d'):_0xbaea('0x5e');var _0x34cde3='';var _0x55587e='';var _0xfef447='';var _0x28dd41='';var _0x261fb4='';var _0x402701='';var _0xc7eebb='';var _0x3972ff='';var _0x3ec323=[_0xbaea('0x5f'),_0xbaea('0x60'),'customerid',_0xbaea('0x61'),'caseorigincode',_0xbaea('0x62'),_0xbaea('0x63'),_0xbaea('0x64'),_0xbaea('0x65'),_0xbaea('0x66')];var _0x365601=[_0xbaea('0x67'),_0xbaea('0x68'),_0xbaea('0x69'),_0xbaea('0x6a'),_0xbaea('0x6b'),'contactidyominame',_0xbaea('0x6c'),_0xbaea('0x6d'),_0xbaea('0x6e'),_0xbaea('0x6f'),'createdbyname',_0xbaea('0x70'),'createdon',_0xbaea('0x71'),_0xbaea('0x72'),_0xbaea('0x73'),_0xbaea('0x74'),_0xbaea('0x75'),_0xbaea('0x76'),_0xbaea('0x77'),_0xbaea('0x78'),_0xbaea('0x79'),_0xbaea('0x7a'),_0xbaea('0x7b'),_0xbaea('0x7c'),_0xbaea('0x7d'),_0xbaea('0x7e'),'influencescore',_0xbaea('0x7f'),'lastonholdtime',_0xbaea('0x80'),_0xbaea('0x81'),_0xbaea('0x82'),_0xbaea('0x83'),_0xbaea('0x84'),_0xbaea('0x85'),_0xbaea('0x86'),_0xbaea('0x87'),_0xbaea('0x88'),_0xbaea('0x89'),_0xbaea('0x8a'),_0xbaea('0x8b'),_0xbaea('0x8c'),_0xbaea('0x8d'),'owneridtype',_0xbaea('0x8e'),_0xbaea('0x8f'),'primarycontactidname',_0xbaea('0x90'),_0xbaea('0x91'),_0xbaea('0x92'),'productserialnumber','resolveby',_0xbaea('0x93'),'responseby',_0xbaea('0x94'),_0xbaea('0x95'),_0xbaea('0x96'),_0xbaea('0x97'),_0xbaea('0x98'),'socialprofileidname',_0xbaea('0x99'),_0xbaea('0x9a'),_0xbaea('0x9b'),_0xbaea('0x9c'),_0xbaea('0x9d'),_0xbaea('0x9e'),'traversedpath',_0xbaea('0x9f'),_0xbaea('0xa0')];var _0x11e2b9=_0x3ec323['concat'](_0x365601);return db[_0xbaea('0x2d')][_0xbaea('0x4e')]({'where':{'id':_0x35845e[_0xbaea('0x4c')]['id']},'attributes':['id',_0xbaea('0xa1'),_0xbaea('0xa2'),'remoteUri',_0xbaea('0xa3'),_0xbaea('0xa4'),_0xbaea('0xa5')]})[_0xbaea('0x27')](handleEntityNotFound(_0x3fde99,null))[_0xbaea('0x27')](function(_0x1b3fab){if(_0x1b3fab){_0x3972ff=_0x1b3fab[_0xbaea('0xa6')];var _0x5c14d5=_0x3972ff['slice'](-0x1);if(_0x5c14d5==='/'){_0x3972ff=_0x3972ff[_0xbaea('0xa7')](0x0,_0x3972ff[_0xbaea('0xa8')](_0x5c14d5));}_0xc7eebb=util[_0xbaea('0xa9')](_0xbaea('0xaa'),_0x3972ff);var _0x368b49={'method':'POST','uri':_0xbaea('0xab')+_0x1b3fab[_0xbaea('0xa3')]+_0xbaea('0xac'),'form':{'client_id':_0x1b3fab['clientId'],'resource':_0x3972ff,'username':_0x1b3fab['username'],'password':_0x1b3fab[_0xbaea('0xa2')],'grant_type':_0xbaea('0xa2'),'client_secret':_0x1b3fab[_0xbaea('0xa5')]},'json':!![]};return rp(_0x368b49);}})[_0xbaea('0x27')](function(_0x568a8b){_0x402701=_0x568a8b[_0xbaea('0xad')];var _0x497659={'method':_0xbaea('0xae'),'uri':encodeURI(_0xc7eebb+_0xbaea('0xaf')+_0x43c578+'\x27'),'headers':{'Authorization':_0xbaea('0xb0')+_0x402701,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x497659);})[_0xbaea('0x27')](function(_0x85fb88){var _0x1a4b08=_0x85fb88[_0xbaea('0xb1')][0x0];var _0x290dc7=_0x1a4b08[_0xbaea('0xb2')];var _0x13fba9={'method':_0xbaea('0xae'),'uri':_0xc7eebb+_0xbaea('0xb3')+_0x290dc7+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0xbaea('0xb0')+_0x402701,'If-None-Match':null,'OData-Version':_0xbaea('0xb4')},'json':!![]};return rp(_0x13fba9);})['then'](function(_0xb6710c){_0x34cde3=_0xb6710c;_0x55587e=_0x34cde3[_0xbaea('0xb5')];_0x55587e=_[_0xbaea('0xb6')](_0x55587e,function(_0x4d5f5e){return!_0x11e2b9['includes'](_0x4d5f5e['LogicalName']);});var _0x26928f=[];var _0x3e6012=[];_0x55587e[_0xbaea('0xb7')](function(_0x30cdef){if(_0x30cdef['@odata.type']){var _0x599af5=_0x30cdef['@odata.type'][_0xbaea('0xa7')](_0x30cdef[_0xbaea('0xb8')][_0xbaea('0xa8')]('.')+0x1);if(_0x599af5==='PicklistAttributeMetadata'){_0x26928f[_0xbaea('0xb9')](getSelectList(_0xc7eebb,_0x25fc7b,_0x3e6012,_0x34cde3['MetadataId'],_0x30cdef[_0xbaea('0xb2')],_0x402701));}}});return Promise[_0xbaea('0xba')](_0x26928f);})[_0xbaea('0x27')](function(_0x2068a3){_0xfef447=_0x2068a3[0x0];var _0x1de395=[];var _0x1695e7=[];_0x55587e['forEach'](function(_0x462f40){if(!_[_0xbaea('0xbb')](_0x462f40[_0xbaea('0xb8')])){var _0x58358e=_0x462f40[_0xbaea('0xb8')][_0xbaea('0xa7')](_0x462f40[_0xbaea('0xb8')]['lastIndexOf']('.')+0x1);if(_0x58358e===_0xbaea('0xbc')){_0x1de395['push'](getBooleanList(_0xc7eebb,_0x25fc7b,_0x1695e7,_0x34cde3['MetadataId'],_0x462f40[_0xbaea('0xb2')],_0x402701));}}});return Promise[_0xbaea('0xba')](_0x1de395);})[_0xbaea('0x27')](function(_0x47d1f4){_0x28dd41=_0x47d1f4[0x0];var _0x366c86=[];var _0x363aaf=[];_0x55587e[_0xbaea('0xb7')](function(_0x308d01){if(_0x308d01[_0xbaea('0xb8')]){var _0x519475=_0x308d01[_0xbaea('0xb8')]['substring'](_0x308d01[_0xbaea('0xb8')][_0xbaea('0xa8')]('.')+0x1);if(_0x519475==='StringAttributeMetadata'||_0x519475===_0xbaea('0xbd')||_0x519475===_0xbaea('0xbe')||_0x519475===_0xbaea('0xbf')||_0x519475===_0xbaea('0xc0')||_0x519475===_0xbaea('0xc1')||_0x519475===_0xbaea('0xc2')||_0x519475===_0xbaea('0xc3')||_0x519475==='StateAttributeMetadata'||_0x519475===_0xbaea('0xc4')){_0x366c86[_0xbaea('0xb9')](getInputList(_0xc7eebb,_0x25fc7b,_0x519475,_0x363aaf,_0x34cde3[_0xbaea('0xb2')],_0x308d01[_0xbaea('0xb2')],_0x402701));}}});return Promise[_0xbaea('0xba')](_0x366c86);})[_0xbaea('0x27')](function(_0x46d2a5){_0x261fb4=_0x46d2a5[0x0];var _0x3e06e6=_0xfef447[_0xbaea('0xc5')](_0x28dd41)[_0xbaea('0xc5')](_0x261fb4);var _0x3337e9={'count':_0x3e06e6[_0xbaea('0x50')],'rows':_0x3e06e6};return _0x3337e9;})[_0xbaea('0x27')](respondWithResult(_0x3fde99,null))[_0xbaea('0x46')](function(_0x51bff8){var _0x46423d=_0x35845e[_0xbaea('0x33')][_0xbaea('0xc6')]?0x1f4:_0x51bff8[_0xbaea('0xc7')]||0x1f4;logger[_0xbaea('0xc8')](_0x51bff8[_0xbaea('0x29')]);delete _0x51bff8[_0xbaea('0x2a')];if(_0x46423d===0x191){_0x46423d=0x190;}_0x3fde99['status'](_0x46423d)[_0xbaea('0x2b')](_0x35845e[_0xbaea('0x33')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x51bff8[_0xbaea('0xc7')]}:_0x51bff8);});};function getSelectList(_0x29530b,_0x4c57df,_0x11dbfa,_0x204470,_0x2fc244,_0x469465){var _0x819560={'method':_0xbaea('0xae'),'uri':_0x29530b+'EntityDefinitions('+_0x204470+_0xbaea('0xc9')+_0x2fc244+_0xbaea('0xca')+_0xbaea('0xcb'),'headers':{'Authorization':_0xbaea('0xb0')+_0x469465,'If-None-Match':null,'OData-Version':_0xbaea('0xb4')},'json':!![]};return rp(_0x819560)[_0xbaea('0x27')](function(_0xc0b7d8){var _0x40e279=[];var _0x46b567=_0xc0b7d8[_0xbaea('0xcc')][_0xbaea('0xcd')];_0x46b567[_0xbaea('0xb7')](function(_0x4f7a20){_0x40e279[_0xbaea('0xb9')]({'name':_0x4f7a20['Label'][_0xbaea('0xce')][_0xbaea('0xcf')],'value':String(_0x4f7a20[_0xbaea('0xd0')])});});var _0x425512={'id':_0x4c57df+'_'+_0xc0b7d8[_0xbaea('0xd1')],'name':_0xc0b7d8[_0xbaea('0xd2')]['UserLocalizedLabel'][_0xbaea('0xcf')],'custom':![],'options':_0x40e279};_0x11dbfa[_0xbaea('0xb9')](_0x425512);return _0x11dbfa;});}function getBooleanList(_0x31e6cc,_0x4d82e0,_0x2a82cd,_0x330bde,_0x1bdb29,_0x21a39f){var _0x100934={'method':_0xbaea('0xae'),'uri':_0x31e6cc+_0xbaea('0xb3')+_0x330bde+_0xbaea('0xc9')+_0x1bdb29+_0xbaea('0xd3'),'headers':{'Authorization':_0xbaea('0xb0')+_0x21a39f,'If-None-Match':null,'OData-Version':_0xbaea('0xb4')},'json':!![]};return rp(_0x100934)[_0xbaea('0x27')](function(_0x3625e2){var _0x192ca3=[];_0x192ca3[_0xbaea('0xb9')]({'name':_0x3625e2['OptionSet'][_0xbaea('0xd4')]['Label']['UserLocalizedLabel'][_0xbaea('0xcf')],'value':_0xbaea('0xd5')},{'name':_0x3625e2[_0xbaea('0xcc')][_0xbaea('0xd6')][_0xbaea('0xcf')][_0xbaea('0xce')][_0xbaea('0xcf')],'value':_0xbaea('0xd7')});var _0x10d572={'id':_0x4d82e0+'_'+_0x3625e2[_0xbaea('0xd1')],'name':_0x3625e2[_0xbaea('0xd2')][_0xbaea('0xce')][_0xbaea('0xcf')],'custom':![],'options':_0x192ca3};_0x2a82cd[_0xbaea('0xb9')](_0x10d572);return _0x2a82cd;});}function getInputList(_0x3c1ea2,_0x5dd05f,_0x516132,_0x172792,_0x428b9c,_0x16b05a,_0x20d050){var _0x4697b4={'method':_0xbaea('0xae'),'uri':_0x3c1ea2+_0xbaea('0xb3')+_0x428b9c+_0xbaea('0xc9')+_0x16b05a+_0xbaea('0xd8')+_0x516132+_0xbaea('0xd9'),'headers':{'Authorization':_0xbaea('0xb0')+_0x20d050,'If-None-Match':null,'OData-Version':_0xbaea('0xb4')},'json':!![]};return rp(_0x4697b4)['then'](function(_0xcce3aa){var _0x738832={'id':_0x5dd05f+'_'+_0xcce3aa[_0xbaea('0xd1')],'name':_0xcce3aa[_0xbaea('0xd2')][_0xbaea('0xce')]?_0xcce3aa[_0xbaea('0xd2')][_0xbaea('0xce')][_0xbaea('0xcf')]:_0xcce3aa[_0xbaea('0xd1')],'custom':![],'options':[]};_0x172792[_0xbaea('0xb9')](_0x738832);return _0x172792;});}
\ No newline at end of file
index 351c38e..c1f1d9d 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(_0x5e59bc,_0x5418f8){var _0x3c47fa=function(_0x1e87e0){while(--_0x1e87e0){_0x5e59bc['push'](_0x5e59bc['shift']());}};_0x3c47fa(++_0x5418f8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4409e7,_0x307f17){_0x4409e7=_0x4409e7-0x0;var _0x24c751=_0xcb91[_0x4409e7];return _0x24c751;};'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 _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x11224c,_0x5c59dd){var _0x4b39b7=function(_0x4d7232){while(--_0x4d7232){_0x11224c['push'](_0x11224c['shift']());}};_0x4b39b7(++_0x5c59dd);}(_0xe706,0xa3));var _0x6e70=function(_0xdae8e6,_0x34854a){_0xdae8e6=_0xdae8e6-0x0;var _0x24c7a7=_0xe706[_0xdae8e6];return _0x24c7a7;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55372f5..77a08e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab5e=['client','http','request','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','options','where','limit','map','include','model','attributes','stringify','catch','GetDynamics365Account','ShowDynamics365Account','find','raw','info','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xab5e,0x16d));var _0xeab5=function(_0x36e8c5,_0x287662){_0x36e8c5=_0x36e8c5-0x0;var _0x230ccc=_0xab5e[_0x36e8c5];return _0x230ccc;};'use strict';var _=require(_0xeab5('0x0'));var util=require(_0xeab5('0x1'));var moment=require(_0xeab5('0x2'));var BPromise=require(_0xeab5('0x3'));var rs=require(_0xeab5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeab5('0x5'))(_0xeab5('0x6'));var config=require(_0xeab5('0x7'));var jayson=require(_0xeab5('0x8'));var client=jayson[_0xeab5('0x9')][_0xeab5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37a56f,_0x5b2b1d,_0x4c3190){return new BPromise(function(_0x304bdf,_0x3c256b){return client[_0xeab5('0xb')](_0x37a56f,_0x4c3190)[_0xeab5('0xc')](function(_0x945e66){logger['info'](_0xeab5('0xd'),_0x5b2b1d,_0xeab5('0xe'));logger[_0xeab5('0xf')](_0xeab5('0x10'),_0x5b2b1d,'request\x20sent',JSON['stringify'](_0x945e66));if(_0x945e66[_0xeab5('0x11')]){if(_0x945e66['error'][_0xeab5('0x12')]===0x1f4){logger[_0xeab5('0x11')]('Dynamics365Account,\x20%s,\x20%s',_0x5b2b1d,_0x945e66['error'][_0xeab5('0x13')]);return _0x3c256b(_0x945e66[_0xeab5('0x11')]['message']);}logger[_0xeab5('0x11')](_0xeab5('0xd'),_0x5b2b1d,_0x945e66[_0xeab5('0x11')]['message']);return _0x304bdf(_0x945e66['error'][_0xeab5('0x13')]);}else{logger['info']('Dynamics365Account,\x20%s,\x20%s',_0x5b2b1d,_0xeab5('0xe'));_0x304bdf(_0x945e66['result'][_0xeab5('0x13')]);}})['catch'](function(_0x2fb279){logger[_0xeab5('0x11')](_0xeab5('0xd'),_0x5b2b1d,_0x2fb279);_0x3c256b(_0x2fb279);});});}exports['GetDynamics365Account']=function(_0x2d5a62){var _0x3a4393=this;return new Promise(function(_0x2b4dad,_0x5cf83d){return db['Dynamics365Account']['findAll']({'raw':_0x2d5a62['options']?_0x2d5a62['options']['raw']===undefined?!![]:![]:!![],'where':_0x2d5a62['options']?_0x2d5a62[_0xeab5('0x14')][_0xeab5('0x15')]||null:null,'attributes':_0x2d5a62[_0xeab5('0x14')]?_0x2d5a62[_0xeab5('0x14')]['attributes']||null:null,'limit':_0x2d5a62[_0xeab5('0x14')]?_0x2d5a62['options'][_0xeab5('0x16')]||null:null,'include':_0x2d5a62['options']?_0x2d5a62[_0xeab5('0x14')]['include']?_[_0xeab5('0x17')](_0x2d5a62[_0xeab5('0x14')][_0xeab5('0x18')],function(_0x2b2afe){return{'model':db[_0x2b2afe[_0xeab5('0x19')]],'as':_0x2b2afe['as'],'attributes':_0x2b2afe['attributes'],'include':_0x2b2afe[_0xeab5('0x18')]?_[_0xeab5('0x17')](_0x2b2afe[_0xeab5('0x18')],function(_0x5e26b2){return{'model':db[_0x5e26b2['model']],'as':_0x5e26b2['as'],'attributes':_0x5e26b2[_0xeab5('0x1a')],'include':_0x5e26b2[_0xeab5('0x18')]?_[_0xeab5('0x17')](_0x5e26b2[_0xeab5('0x18')],function(_0x431d3d){return{'model':db[_0x431d3d[_0xeab5('0x19')]],'as':_0x431d3d['as'],'attributes':_0x431d3d[_0xeab5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xeab5('0xc')](function(_0x59e318){logger['info']('GetDynamics365Account',_0x2d5a62);logger[_0xeab5('0xf')]('GetDynamics365Account',_0x2d5a62,JSON[_0xeab5('0x1b')](_0x59e318));_0x2b4dad(_0x59e318);})[_0xeab5('0x1c')](function(_0x56ec52){logger[_0xeab5('0x11')](_0xeab5('0x1d'),_0x56ec52[_0xeab5('0x13')],_0x2d5a62);_0x5cf83d(_0x3a4393[_0xeab5('0x11')](0x1f4,_0x56ec52['message']));});});};exports[_0xeab5('0x1e')]=function(_0x5f49ee){var _0x5a0fd0=this;return new Promise(function(_0x2af581,_0x516c65){return db['Dynamics365Account'][_0xeab5('0x1f')]({'raw':_0x5f49ee[_0xeab5('0x14')]?_0x5f49ee[_0xeab5('0x14')][_0xeab5('0x20')]===undefined?!![]:![]:!![],'where':_0x5f49ee[_0xeab5('0x14')]?_0x5f49ee[_0xeab5('0x14')][_0xeab5('0x15')]||null:null,'attributes':_0x5f49ee['options']?_0x5f49ee[_0xeab5('0x14')]['attributes']||null:null,'include':_0x5f49ee[_0xeab5('0x14')]?_0x5f49ee['options'][_0xeab5('0x18')]?_['map'](_0x5f49ee[_0xeab5('0x14')]['include'],function(_0x5dcc71){return{'model':db[_0x5dcc71[_0xeab5('0x19')]],'as':_0x5dcc71['as'],'attributes':_0x5dcc71[_0xeab5('0x1a')],'include':_0x5dcc71[_0xeab5('0x18')]?_['map'](_0x5dcc71['include'],function(_0x3d59e5){return{'model':db[_0x3d59e5[_0xeab5('0x19')]],'as':_0x3d59e5['as'],'attributes':_0x3d59e5['attributes'],'include':_0x3d59e5[_0xeab5('0x18')]?_[_0xeab5('0x17')](_0x3d59e5['include'],function(_0x3c2864){return{'model':db[_0x3c2864['model']],'as':_0x3c2864['as'],'attributes':_0x3c2864[_0xeab5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xeab5('0xc')](function(_0x12e0d){logger[_0xeab5('0x21')](_0xeab5('0x1e'),_0x5f49ee);logger[_0xeab5('0xf')]('ShowDynamics365Account',_0x5f49ee,JSON[_0xeab5('0x1b')](_0x12e0d));_0x2af581(_0x12e0d);})[_0xeab5('0x1c')](function(_0x5330df){logger[_0xeab5('0x11')]('ShowDynamics365Account',_0x5330df[_0xeab5('0x13')],_0x5f49ee);_0x516c65(_0x5a0fd0[_0xeab5('0x11')](0x1f4,_0x5330df['message']));});});};
\ No newline at end of file
+var _0x47d0=['model','ShowDynamics365Account','find','attributes','moment','bluebird','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message','Dynamics365Account,\x20%s,\x20%s','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','limit','include','map'];(function(_0x83cc7b,_0x337a6b){var _0x77e5ab=function(_0xe70954){while(--_0xe70954){_0x83cc7b['push'](_0x83cc7b['shift']());}};_0x77e5ab(++_0x337a6b);}(_0x47d0,0x1e4));var _0x047d=function(_0x33ff07,_0x4082ed){_0x33ff07=_0x33ff07-0x0;var _0x4d96ef=_0x47d0[_0x33ff07];return _0x4d96ef;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x047d('0x0'));var BPromise=require(_0x047d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x047d('0x2'))(_0x047d('0x3'));var config=require(_0x047d('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x047d('0x5')][_0x047d('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x335588,_0x240956,_0x36d3e6){return new BPromise(function(_0x48ceb5,_0x20a154){return client[_0x047d('0x7')](_0x335588,_0x36d3e6)[_0x047d('0x8')](function(_0x1f3765){logger[_0x047d('0x9')]('Dynamics365Account,\x20%s,\x20%s',_0x240956,_0x047d('0xa'));logger[_0x047d('0xb')](_0x047d('0xc'),_0x240956,'request\x20sent',JSON[_0x047d('0xd')](_0x1f3765));if(_0x1f3765[_0x047d('0xe')]){if(_0x1f3765[_0x047d('0xe')]['code']===0x1f4){logger[_0x047d('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x240956,_0x1f3765[_0x047d('0xe')][_0x047d('0xf')]);return _0x20a154(_0x1f3765['error'][_0x047d('0xf')]);}logger[_0x047d('0xe')](_0x047d('0x10'),_0x240956,_0x1f3765[_0x047d('0xe')][_0x047d('0xf')]);return _0x48ceb5(_0x1f3765[_0x047d('0xe')][_0x047d('0xf')]);}else{logger[_0x047d('0x9')](_0x047d('0x10'),_0x240956,'request\x20sent');_0x48ceb5(_0x1f3765[_0x047d('0x11')][_0x047d('0xf')]);}})[_0x047d('0x12')](function(_0x42f4df){logger[_0x047d('0xe')](_0x047d('0x10'),_0x240956,_0x42f4df);_0x20a154(_0x42f4df);});});}exports[_0x047d('0x13')]=function(_0x333f4e){var _0x1febc9=this;return new Promise(function(_0x346b35,_0x4ccbe4){return db[_0x047d('0x14')][_0x047d('0x15')]({'raw':_0x333f4e[_0x047d('0x16')]?_0x333f4e['options'][_0x047d('0x17')]===undefined?!![]:![]:!![],'where':_0x333f4e[_0x047d('0x16')]?_0x333f4e[_0x047d('0x16')][_0x047d('0x18')]||null:null,'attributes':_0x333f4e[_0x047d('0x16')]?_0x333f4e[_0x047d('0x16')]['attributes']||null:null,'limit':_0x333f4e[_0x047d('0x16')]?_0x333f4e[_0x047d('0x16')][_0x047d('0x19')]||null:null,'include':_0x333f4e[_0x047d('0x16')]?_0x333f4e[_0x047d('0x16')][_0x047d('0x1a')]?_[_0x047d('0x1b')](_0x333f4e[_0x047d('0x16')][_0x047d('0x1a')],function(_0x219073){return{'model':db[_0x219073[_0x047d('0x1c')]],'as':_0x219073['as'],'attributes':_0x219073['attributes'],'include':_0x219073[_0x047d('0x1a')]?_['map'](_0x219073[_0x047d('0x1a')],function(_0x50163c){return{'model':db[_0x50163c[_0x047d('0x1c')]],'as':_0x50163c['as'],'attributes':_0x50163c['attributes'],'include':_0x50163c['include']?_[_0x047d('0x1b')](_0x50163c[_0x047d('0x1a')],function(_0x5b61c2){return{'model':db[_0x5b61c2[_0x047d('0x1c')]],'as':_0x5b61c2['as'],'attributes':_0x5b61c2['attributes']};}):[]};}):[]};}):[]:[]})[_0x047d('0x8')](function(_0x446bdc){logger[_0x047d('0x9')](_0x047d('0x13'),_0x333f4e);logger[_0x047d('0xb')](_0x047d('0x13'),_0x333f4e,JSON['stringify'](_0x446bdc));_0x346b35(_0x446bdc);})['catch'](function(_0x506d34){logger['error'](_0x047d('0x13'),_0x506d34[_0x047d('0xf')],_0x333f4e);_0x4ccbe4(_0x1febc9['error'](0x1f4,_0x506d34[_0x047d('0xf')]));});});};exports[_0x047d('0x1d')]=function(_0x16650a){var _0x524d90=this;return new Promise(function(_0x5578bc,_0x289c8a){return db[_0x047d('0x14')][_0x047d('0x1e')]({'raw':_0x16650a[_0x047d('0x16')]?_0x16650a[_0x047d('0x16')][_0x047d('0x17')]===undefined?!![]:![]:!![],'where':_0x16650a[_0x047d('0x16')]?_0x16650a[_0x047d('0x16')]['where']||null:null,'attributes':_0x16650a[_0x047d('0x16')]?_0x16650a[_0x047d('0x16')][_0x047d('0x1f')]||null:null,'include':_0x16650a[_0x047d('0x16')]?_0x16650a[_0x047d('0x16')][_0x047d('0x1a')]?_['map'](_0x16650a[_0x047d('0x16')][_0x047d('0x1a')],function(_0x50a2f8){return{'model':db[_0x50a2f8[_0x047d('0x1c')]],'as':_0x50a2f8['as'],'attributes':_0x50a2f8[_0x047d('0x1f')],'include':_0x50a2f8['include']?_[_0x047d('0x1b')](_0x50a2f8[_0x047d('0x1a')],function(_0x173dd4){return{'model':db[_0x173dd4[_0x047d('0x1c')]],'as':_0x173dd4['as'],'attributes':_0x173dd4[_0x047d('0x1f')],'include':_0x173dd4[_0x047d('0x1a')]?_[_0x047d('0x1b')](_0x173dd4['include'],function(_0x4a7b36){return{'model':db[_0x4a7b36[_0x047d('0x1c')]],'as':_0x4a7b36['as'],'attributes':_0x4a7b36['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x24d71f){logger['info'](_0x047d('0x1d'),_0x16650a);logger[_0x047d('0xb')](_0x047d('0x1d'),_0x16650a,JSON[_0x047d('0xd')](_0x24d71f));_0x5578bc(_0x24d71f);})[_0x047d('0x12')](function(_0x1aced){logger[_0x047d('0xe')](_0x047d('0x1d'),_0x1aced[_0x047d('0xf')],_0x16650a);_0x289c8a(_0x524d90['error'](0x1f4,_0x1aced['message']));});});};
\ No newline at end of file
index 70949ac..8764202 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa97d=['update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','create','put'];(function(_0x96aed7,_0x2432cb){var _0x4d5678=function(_0x2f4b23){while(--_0x2f4b23){_0x96aed7['push'](_0x96aed7['shift']());}};_0x4d5678(++_0x2432cb);}(_0xa97d,0x88));var _0xda97=function(_0x16c619,_0x6cac5){_0x16c619=_0x16c619-0x0;var _0x87d66c=_0xa97d[_0x16c619];return _0x87d66c;};'use strict';var multer=require(_0xda97('0x0'));var util=require(_0xda97('0x1'));var path=require(_0xda97('0x2'));var timeout=require(_0xda97('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xda97('0x4'));var auth=require(_0xda97('0x5'));var interaction=require(_0xda97('0x6'));var config=require('../../config/environment');var controller=require('./intDynamics365Configuration.controller');router[_0xda97('0x7')]('/',auth['isAuthenticated'](),controller[_0xda97('0x8')]);router[_0xda97('0x7')](_0xda97('0x9'),auth[_0xda97('0xa')](),controller[_0xda97('0xb')]);router[_0xda97('0x7')](_0xda97('0xc'),auth[_0xda97('0xa')](),controller[_0xda97('0xd')]);router[_0xda97('0x7')](_0xda97('0xe'),auth[_0xda97('0xa')](),controller[_0xda97('0xf')]);router[_0xda97('0x7')]('/:id/descriptions',auth[_0xda97('0xa')](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0xda97('0x10')]);router[_0xda97('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xda97('0x12')]);router[_0xda97('0x13')]('/:id',auth[_0xda97('0xa')](),controller[_0xda97('0x14')]);module[_0xda97('0x15')]=router;
\ No newline at end of file
+var _0xeca8=['./intDynamics365Configuration.controller','get','index','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x2a0183,_0x3fc93c){var _0x158c3a=function(_0x57a903){while(--_0x57a903){_0x2a0183['push'](_0x2a0183['shift']());}};_0x158c3a(++_0x3fc93c);}(_0xeca8,0x1f2));var _0x8eca=function(_0x35b4e2,_0x2a288e){_0x35b4e2=_0x35b4e2-0x0;var _0x62dbec=_0xeca8[_0x35b4e2];return _0x62dbec;};'use strict';var multer=require(_0x8eca('0x0'));var util=require(_0x8eca('0x1'));var path=require(_0x8eca('0x2'));var timeout=require(_0x8eca('0x3'));var express=require(_0x8eca('0x4'));var router=express[_0x8eca('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8eca('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8eca('0x7'));var controller=require(_0x8eca('0x8'));router[_0x8eca('0x9')]('/',auth['isAuthenticated'](),controller[_0x8eca('0xa')]);router[_0x8eca('0x9')](_0x8eca('0xb'),auth[_0x8eca('0xc')](),controller[_0x8eca('0xd')]);router[_0x8eca('0x9')]('/:id/fields',auth[_0x8eca('0xc')](),controller[_0x8eca('0xe')]);router[_0x8eca('0x9')](_0x8eca('0xf'),auth[_0x8eca('0xc')](),controller[_0x8eca('0x10')]);router[_0x8eca('0x9')](_0x8eca('0x11'),auth[_0x8eca('0xc')](),controller[_0x8eca('0x12')]);router['post']('/',auth[_0x8eca('0xc')](),controller['create']);router[_0x8eca('0x13')](_0x8eca('0xb'),auth['isAuthenticated'](),controller[_0x8eca('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x8eca('0x15')]);module[_0x8eca('0x16')]=router;
\ No newline at end of file
index d164fda..595626d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eac=['ENUM','exports','STRING'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x9eac,0x181));var _0xc9ea=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x9eac[_0x20ef64];return _0x3707d8;};'use strict';var Sequelize=require('sequelize');module[_0xc9ea('0x0')]={'name':{'type':Sequelize[_0xc9ea('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc9ea('0x2')]('incident','phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
+var _0xf15d=['STRING','ENUM','incident','exports'];(function(_0x164908,_0x3ddb07){var _0x4f2e7f=function(_0x5340cd){while(--_0x5340cd){_0x164908['push'](_0x164908['shift']());}};_0x4f2e7f(++_0x3ddb07);}(_0xf15d,0x167));var _0xdf15=function(_0x1cebe7,_0x513377){_0x1cebe7=_0x1cebe7-0x0;var _0x291250=_0xf15d[_0x1cebe7];return _0x291250;};'use strict';var Sequelize=require('sequelize');module[_0xdf15('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xdf15('0x1')]},'ticketType':{'type':Sequelize[_0xdf15('0x2')](_0xdf15('0x3'),'phonecall'),'defaultValue':_0xdf15('0x3')}};
\ No newline at end of file
index fd135e2..5c813a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f77=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','type','key','model','keys','filters','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','findAll','catch','params','rawAttributes','intersection','options','find','create','body','getFields','Dynamics365Field','order','findOne','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util'];(function(_0x4b590c,_0x2614e3){var _0x4e6432=function(_0x1fcbc8){while(--_0x1fcbc8){_0x4b590c['push'](_0x4b590c['shift']());}};_0x4e6432(++_0x2614e3);}(_0x1f77,0x1cd));var _0x71f7=function(_0x178705,_0x56d05c){_0x178705=_0x178705-0x0;var _0x1234fc=_0x1f77[_0x178705];return _0x1234fc;};'use strict';var emlformat=require(_0x71f7('0x0'));var rimraf=require(_0x71f7('0x1'));var zipdir=require(_0x71f7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x71f7('0x3'));var moment=require(_0x71f7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x71f7('0x5'));var util=require(_0x71f7('0x6'));var path=require(_0x71f7('0x7'));var sox=require('sox');var csv=require(_0x71f7('0x8'));var ejs=require(_0x71f7('0x9'));var fs=require('fs');var fs_extra=require(_0x71f7('0xa'));var _=require(_0x71f7('0xb'));var squel=require(_0x71f7('0xc'));var crypto=require(_0x71f7('0xd'));var jsforce=require(_0x71f7('0xe'));var deskjs=require(_0x71f7('0xf'));var toCsv=require(_0x71f7('0x8'));var querystring=require(_0x71f7('0x10'));var Papa=require(_0x71f7('0x11'));var Redis=require('ioredis');var authService=require(_0x71f7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x71f7('0x13'));var hardwareService=require(_0x71f7('0x14'));var logger=require('../../config/logger')(_0x71f7('0x15'));var utils=require('../../config/utils');var config=require(_0x71f7('0x16'));var licenseUtil=require(_0x71f7('0x17'));var db=require(_0x71f7('0x18'))['db'];function respondWithStatusCode(_0x425cbc,_0x224878){_0x224878=_0x224878||0xcc;return function(_0x1556ff){if(_0x1556ff){return _0x425cbc['sendStatus'](_0x224878);}return _0x425cbc[_0x71f7('0x19')](_0x224878)['end']();};}function respondWithResult(_0x138366,_0x4c78c4){_0x4c78c4=_0x4c78c4||0xc8;return function(_0x12341b){if(_0x12341b){return _0x138366['status'](_0x4c78c4)[_0x71f7('0x1a')](_0x12341b);}};}function respondWithFilteredResult(_0x28382c,_0x1c7d8d){return function(_0x3cca43){if(_0x3cca43){var _0x4041a4=typeof _0x1c7d8d[_0x71f7('0x1b')]===_0x71f7('0x1c')&&typeof _0x1c7d8d['limit']==='undefined';var _0x1c1847=_0x3cca43[_0x71f7('0x1d')];var _0x223cd7=_0x4041a4?0x0:_0x1c7d8d[_0x71f7('0x1b')];var _0x2b157b=_0x4041a4?_0x3cca43[_0x71f7('0x1d')]:_0x1c7d8d['offset']+_0x1c7d8d[_0x71f7('0x1e')];var _0x3e78a;if(_0x2b157b>=_0x1c1847){_0x2b157b=_0x1c1847;_0x3e78a=0xc8;}else{_0x3e78a=0xce;}_0x28382c[_0x71f7('0x19')](_0x3e78a);return _0x28382c['set'](_0x71f7('0x1f'),_0x223cd7+'-'+_0x2b157b+'/'+_0x1c1847)[_0x71f7('0x1a')](_0x3cca43);}return null;};}function patchUpdates(_0x381897){return function(_0x153497){try{jsonpatch[_0x71f7('0x20')](_0x153497,_0x381897,!![]);}catch(_0x5127bc){return BPromise['reject'](_0x5127bc);}return _0x153497[_0x71f7('0x21')]();};}function saveUpdates(_0xa294b0,_0x154d6a){return function(_0x420b0c){if(_0x420b0c){return _0x420b0c[_0x71f7('0x22')](_0xa294b0)[_0x71f7('0x23')](function(_0x1ec953){return _0x1ec953;});}return null;};}function removeEntity(_0x253747,_0x5a5d43){return function(_0x6a62c1){if(_0x6a62c1){return _0x6a62c1[_0x71f7('0x24')]()[_0x71f7('0x23')](function(){_0x253747[_0x71f7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eae57,_0x35bb61){return function(_0x49c1d0){if(!_0x49c1d0){_0x5eae57[_0x71f7('0x25')](0x194);}return _0x49c1d0;};}function handleError(_0xc0c709,_0x2a9cd1){_0x2a9cd1=_0x2a9cd1||0x1f4;return function(_0xeb67b5){logger[_0x71f7('0x26')](_0xeb67b5[_0x71f7('0x27')]);if(_0xeb67b5['name']){delete _0xeb67b5[_0x71f7('0x28')];}_0xc0c709[_0x71f7('0x19')](_0x2a9cd1)[_0x71f7('0x29')](_0xeb67b5);};}exports[_0x71f7('0x2a')]=function(_0x2cfd10,_0x32ec55){var _0x22bc48={},_0xb88dd1={},_0x5e3594={'count':0x0,'rows':[]};var _0x205efe=_[_0x71f7('0x2b')](db[_0x71f7('0x2c')]['rawAttributes'],function(_0x497db6){return{'name':_0x497db6['fieldName'],'type':_0x497db6[_0x71f7('0x2d')][_0x71f7('0x2e')]};});_0xb88dd1[_0x71f7('0x2f')]=_[_0x71f7('0x2b')](_0x205efe,_0x71f7('0x28'));_0xb88dd1['query']=_[_0x71f7('0x30')](_0x2cfd10['query']);_0xb88dd1[_0x71f7('0x31')]=_['intersection'](_0xb88dd1[_0x71f7('0x2f')],_0xb88dd1[_0x71f7('0x32')]);_0x22bc48[_0x71f7('0x33')]=_['intersection'](_0xb88dd1[_0x71f7('0x2f')],qs[_0x71f7('0x34')](_0x2cfd10['query'][_0x71f7('0x34')]));_0x22bc48[_0x71f7('0x33')]=_0x22bc48[_0x71f7('0x33')][_0x71f7('0x35')]?_0x22bc48[_0x71f7('0x33')]:_0xb88dd1[_0x71f7('0x2f')];if(!_0x2cfd10['query'][_0x71f7('0x36')](_0x71f7('0x37'))){_0x22bc48[_0x71f7('0x1e')]=qs['limit'](_0x2cfd10[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x22bc48[_0x71f7('0x1b')]=qs['offset'](_0x2cfd10['query'][_0x71f7('0x1b')]);}_0x22bc48['order']=qs[_0x71f7('0x38')](_0x2cfd10['query'][_0x71f7('0x38')]);_0x22bc48[_0x71f7('0x39')]=qs[_0x71f7('0x31')](_[_0x71f7('0x3a')](_0x2cfd10[_0x71f7('0x32')],_0xb88dd1[_0x71f7('0x31')]),_0x205efe);if(_0x2cfd10[_0x71f7('0x32')]['filter']){_0x22bc48['where']=_[_0x71f7('0x3b')](_0x22bc48[_0x71f7('0x39')],{'$or':_[_0x71f7('0x2b')](_0x205efe,function(_0x1adf43){if(_0x1adf43[_0x71f7('0x2d')]!=='VIRTUAL'){var _0xbda1ac={};_0xbda1ac[_0x1adf43[_0x71f7('0x28')]]={'$like':'%'+_0x2cfd10[_0x71f7('0x32')][_0x71f7('0x3c')]+'%'};return _0xbda1ac;}})});}_0x22bc48=_[_0x71f7('0x3b')]({},_0x22bc48,_0x2cfd10['options']);var _0x5595c9={'where':_0x22bc48[_0x71f7('0x39')]};return db['Dynamics365Configuration'][_0x71f7('0x1d')](_0x5595c9)[_0x71f7('0x23')](function(_0xd9e090){_0x5e3594[_0x71f7('0x1d')]=_0xd9e090;if(_0x2cfd10['query'][_0x71f7('0x3d')]){_0x22bc48[_0x71f7('0x3e')]=[{'all':!![]}];}return db[_0x71f7('0x2c')][_0x71f7('0x3f')](_0x22bc48);})[_0x71f7('0x23')](function(_0x4ecd62){_0x5e3594['rows']=_0x4ecd62;return _0x5e3594;})[_0x71f7('0x23')](respondWithFilteredResult(_0x32ec55,_0x22bc48))[_0x71f7('0x40')](handleError(_0x32ec55,null));};exports['show']=function(_0x47bb9e,_0x101040){var _0x145236={'raw':![],'where':{'id':_0x47bb9e[_0x71f7('0x41')]['id']}},_0x5216ea={};_0x5216ea[_0x71f7('0x2f')]=_['keys'](db[_0x71f7('0x2c')][_0x71f7('0x42')]);_0x5216ea['query']=_['keys'](_0x47bb9e[_0x71f7('0x32')]);_0x5216ea['filters']=_[_0x71f7('0x43')](_0x5216ea[_0x71f7('0x2f')],_0x5216ea[_0x71f7('0x32')]);_0x145236[_0x71f7('0x33')]=_[_0x71f7('0x43')](_0x5216ea[_0x71f7('0x2f')],qs[_0x71f7('0x34')](_0x47bb9e[_0x71f7('0x32')][_0x71f7('0x34')]));_0x145236['attributes']=_0x145236['attributes']['length']?_0x145236[_0x71f7('0x33')]:_0x5216ea[_0x71f7('0x2f')];if(_0x47bb9e['query']['includeAll']){_0x145236[_0x71f7('0x3e')]=[{'all':!![]}];}_0x145236=_[_0x71f7('0x3b')]({},_0x145236,_0x47bb9e[_0x71f7('0x44')]);return db[_0x71f7('0x2c')][_0x71f7('0x45')](_0x145236)[_0x71f7('0x23')](handleEntityNotFound(_0x101040,null))[_0x71f7('0x23')](respondWithResult(_0x101040,null))[_0x71f7('0x40')](handleError(_0x101040,null));};exports['create']=function(_0x4d4024,_0x4742b1){return db[_0x71f7('0x2c')][_0x71f7('0x46')](_0x4d4024[_0x71f7('0x47')],{})[_0x71f7('0x23')](respondWithResult(_0x4742b1,0xc9))[_0x71f7('0x40')](handleError(_0x4742b1,null));};exports[_0x71f7('0x22')]=function(_0x122d46,_0x58527d){if(_0x122d46['body']['id']){delete _0x122d46[_0x71f7('0x47')]['id'];}return db[_0x71f7('0x2c')][_0x71f7('0x45')]({'where':{'id':_0x122d46[_0x71f7('0x41')]['id']}})[_0x71f7('0x23')](handleEntityNotFound(_0x58527d,null))[_0x71f7('0x23')](saveUpdates(_0x122d46[_0x71f7('0x47')],null))[_0x71f7('0x23')](respondWithResult(_0x58527d,null))['catch'](handleError(_0x58527d,null));};exports[_0x71f7('0x24')]=function(_0x3d792f,_0x28bbe6){return db['Dynamics365Configuration'][_0x71f7('0x45')]({'where':{'id':_0x3d792f[_0x71f7('0x41')]['id']}})[_0x71f7('0x23')](handleEntityNotFound(_0x28bbe6,null))[_0x71f7('0x23')](removeEntity(_0x28bbe6,null))[_0x71f7('0x40')](handleError(_0x28bbe6,null));};exports[_0x71f7('0x48')]=function(_0x5cf48e,_0x28a0ed,_0x58d7a3){var _0x376c9f={};var _0x5923ce={};var _0x4a9d58;var _0x5c32b6;return db[_0x71f7('0x2c')]['findOne']({'where':{'id':_0x5cf48e[_0x71f7('0x41')]['id']}})['then'](handleEntityNotFound(_0x28a0ed,null))[_0x71f7('0x23')](function(_0x152b1d){if(_0x152b1d){_0x4a9d58=_0x152b1d;_0x5923ce['model']=_['keys'](db[_0x71f7('0x49')][_0x71f7('0x42')]);_0x5923ce[_0x71f7('0x32')]=_[_0x71f7('0x30')](_0x5cf48e[_0x71f7('0x32')]);_0x5923ce['filters']=_[_0x71f7('0x43')](_0x5923ce[_0x71f7('0x2f')],_0x5923ce[_0x71f7('0x32')]);_0x376c9f['attributes']=_[_0x71f7('0x43')](_0x5923ce[_0x71f7('0x2f')],qs['fields'](_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x34')]));_0x376c9f[_0x71f7('0x33')]=_0x376c9f['attributes']['length']?_0x376c9f[_0x71f7('0x33')]:_0x5923ce['model'];_0x376c9f[_0x71f7('0x4a')]=qs[_0x71f7('0x38')](_0x5cf48e['query']['sort']);_0x376c9f['where']=qs['filters'](_['pick'](_0x5cf48e[_0x71f7('0x32')],_0x5923ce[_0x71f7('0x31')]));if(_0x5cf48e[_0x71f7('0x32')]['filter']){_0x376c9f['where']=_['merge'](_0x376c9f[_0x71f7('0x39')],{'$or':_[_0x71f7('0x2b')](_0x376c9f[_0x71f7('0x33')],function(_0x170c60){var _0x374567={};_0x374567[_0x170c60]={'$like':'%'+_0x5cf48e['query']['filter']+'%'};return _0x374567;})});}_0x376c9f=_['merge']({},_0x376c9f,_0x5cf48e[_0x71f7('0x44')]);return _0x4a9d58[_0x71f7('0x48')](_0x376c9f);}})['then'](function(_0x1b391d){if(_0x1b391d){_0x5c32b6=_0x1b391d['length'];if(!_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x36')](_0x71f7('0x37'))){_0x376c9f[_0x71f7('0x1e')]=qs[_0x71f7('0x1e')](_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x376c9f[_0x71f7('0x1b')]=qs[_0x71f7('0x1b')](_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x1b')]);}return _0x4a9d58[_0x71f7('0x48')](_0x376c9f);}})[_0x71f7('0x23')](function(_0x28632e){if(_0x28632e){return _0x28632e?{'count':_0x5c32b6,'rows':_0x28632e}:null;}})[_0x71f7('0x23')](respondWithResult(_0x28a0ed,null))[_0x71f7('0x40')](handleError(_0x28a0ed,null));};exports['getSubjects']=function(_0x2ed940,_0x2c07ef,_0x2e1cbd){var _0x7b6517={};var _0x1a35fa={};var _0x3ffbc7;var _0x2101f2;return db[_0x71f7('0x2c')][_0x71f7('0x4b')]({'where':{'id':_0x2ed940['params']['id']}})['then'](handleEntityNotFound(_0x2c07ef,null))['then'](function(_0x19cdff){if(_0x19cdff){_0x3ffbc7=_0x19cdff;_0x1a35fa['model']=_[_0x71f7('0x30')](db['Dynamics365Field'][_0x71f7('0x42')]);_0x1a35fa[_0x71f7('0x32')]=_['keys'](_0x2ed940[_0x71f7('0x32')]);_0x1a35fa[_0x71f7('0x31')]=_['intersection'](_0x1a35fa[_0x71f7('0x2f')],_0x1a35fa[_0x71f7('0x32')]);_0x7b6517[_0x71f7('0x33')]=_[_0x71f7('0x43')](_0x1a35fa['model'],qs[_0x71f7('0x34')](_0x2ed940[_0x71f7('0x32')][_0x71f7('0x34')]));_0x7b6517['attributes']=_0x7b6517[_0x71f7('0x33')][_0x71f7('0x35')]?_0x7b6517[_0x71f7('0x33')]:_0x1a35fa[_0x71f7('0x2f')];_0x7b6517['order']=qs[_0x71f7('0x38')](_0x2ed940[_0x71f7('0x32')][_0x71f7('0x38')]);_0x7b6517[_0x71f7('0x39')]=qs[_0x71f7('0x31')](_['pick'](_0x2ed940[_0x71f7('0x32')],_0x1a35fa['filters']));if(_0x2ed940['query'][_0x71f7('0x3c')]){_0x7b6517['where']=_[_0x71f7('0x3b')](_0x7b6517['where'],{'$or':_[_0x71f7('0x2b')](_0x7b6517[_0x71f7('0x33')],function(_0x9b2ab2){var _0x5e82f4={};_0x5e82f4[_0x9b2ab2]={'$like':'%'+_0x2ed940[_0x71f7('0x32')][_0x71f7('0x3c')]+'%'};return _0x5e82f4;})});}_0x7b6517=_[_0x71f7('0x3b')]({},_0x7b6517,_0x2ed940[_0x71f7('0x44')]);return _0x3ffbc7[_0x71f7('0x4c')](_0x7b6517);}})[_0x71f7('0x23')](function(_0x54e217){if(_0x54e217){_0x2101f2=_0x54e217[_0x71f7('0x35')];if(!_0x2ed940[_0x71f7('0x32')][_0x71f7('0x36')](_0x71f7('0x37'))){_0x7b6517['limit']=qs[_0x71f7('0x1e')](_0x2ed940[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x7b6517[_0x71f7('0x1b')]=qs[_0x71f7('0x1b')](_0x2ed940[_0x71f7('0x32')]['offset']);}return _0x3ffbc7[_0x71f7('0x4c')](_0x7b6517);}})[_0x71f7('0x23')](function(_0xe31ac8){if(_0xe31ac8){return _0xe31ac8?{'count':_0x2101f2,'rows':_0xe31ac8}:null;}})[_0x71f7('0x23')](respondWithResult(_0x2c07ef,null))[_0x71f7('0x40')](handleError(_0x2c07ef,null));};exports[_0x71f7('0x4d')]=function(_0x65e67b,_0x179cdb,_0x8477df){var _0x83a41a={};var _0x3f736b={};var _0x123a59;var _0x107a7c;return db['Dynamics365Configuration'][_0x71f7('0x4b')]({'where':{'id':_0x65e67b[_0x71f7('0x41')]['id']}})[_0x71f7('0x23')](handleEntityNotFound(_0x179cdb,null))[_0x71f7('0x23')](function(_0x47ce15){if(_0x47ce15){_0x123a59=_0x47ce15;_0x3f736b[_0x71f7('0x2f')]=_[_0x71f7('0x30')](db[_0x71f7('0x49')][_0x71f7('0x42')]);_0x3f736b['query']=_[_0x71f7('0x30')](_0x65e67b[_0x71f7('0x32')]);_0x3f736b[_0x71f7('0x31')]=_[_0x71f7('0x43')](_0x3f736b[_0x71f7('0x2f')],_0x3f736b[_0x71f7('0x32')]);_0x83a41a['attributes']=_[_0x71f7('0x43')](_0x3f736b['model'],qs[_0x71f7('0x34')](_0x65e67b[_0x71f7('0x32')][_0x71f7('0x34')]));_0x83a41a[_0x71f7('0x33')]=_0x83a41a[_0x71f7('0x33')][_0x71f7('0x35')]?_0x83a41a['attributes']:_0x3f736b['model'];_0x83a41a['order']=qs[_0x71f7('0x38')](_0x65e67b[_0x71f7('0x32')][_0x71f7('0x38')]);_0x83a41a[_0x71f7('0x39')]=qs[_0x71f7('0x31')](_[_0x71f7('0x3a')](_0x65e67b[_0x71f7('0x32')],_0x3f736b[_0x71f7('0x31')]));if(_0x65e67b[_0x71f7('0x32')][_0x71f7('0x3c')]){_0x83a41a[_0x71f7('0x39')]=_['merge'](_0x83a41a[_0x71f7('0x39')],{'$or':_['map'](_0x83a41a[_0x71f7('0x33')],function(_0x5c4e0e){var _0xc6e0d9={};_0xc6e0d9[_0x5c4e0e]={'$like':'%'+_0x65e67b['query']['filter']+'%'};return _0xc6e0d9;})});}_0x83a41a=_[_0x71f7('0x3b')]({},_0x83a41a,_0x65e67b[_0x71f7('0x44')]);return _0x123a59[_0x71f7('0x4d')](_0x83a41a);}})[_0x71f7('0x23')](function(_0x81068b){if(_0x81068b){_0x107a7c=_0x81068b['length'];if(!_0x65e67b['query'][_0x71f7('0x36')](_0x71f7('0x37'))){_0x83a41a[_0x71f7('0x1e')]=qs[_0x71f7('0x1e')](_0x65e67b[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x83a41a['offset']=qs['offset'](_0x65e67b[_0x71f7('0x32')]['offset']);}return _0x123a59[_0x71f7('0x4d')](_0x83a41a);}})[_0x71f7('0x23')](function(_0xfc4956){if(_0xfc4956){return _0xfc4956?{'count':_0x107a7c,'rows':_0xfc4956}:null;}})[_0x71f7('0x23')](respondWithResult(_0x179cdb,null))[_0x71f7('0x40')](handleError(_0x179cdb,null));};
\ No newline at end of file
+var _0x431b=['filters','intersection','fields','length','attributes','nolimit','order','sort','where','pick','filter','VIRTUAL','options','include','catch','show','params','keys','find','create','body','findOne','Dynamics365Field','getFields','hasOwnProperty','merge','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','stack','name','index','map','Dynamics365Configuration','rawAttributes','type','key','model','query'];(function(_0x1df9f4,_0x27c693){var _0x29f9c5=function(_0x264487){while(--_0x264487){_0x1df9f4['push'](_0x1df9f4['shift']());}};_0x29f9c5(++_0x27c693);}(_0x431b,0x19d));var _0xb431=function(_0x237587,_0x3922b7){_0x237587=_0x237587-0x0;var _0x485bd9=_0x431b[_0x237587];return _0x485bd9;};'use strict';var emlformat=require(_0xb431('0x0'));var rimraf=require(_0xb431('0x1'));var zipdir=require(_0xb431('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb431('0x3'));var moment=require(_0xb431('0x4'));var BPromise=require(_0xb431('0x5'));var Mustache=require(_0xb431('0x6'));var util=require(_0xb431('0x7'));var path=require('path');var sox=require(_0xb431('0x8'));var csv=require(_0xb431('0x9'));var ejs=require(_0xb431('0xa'));var fs=require('fs');var fs_extra=require(_0xb431('0xb'));var _=require('lodash');var squel=require(_0xb431('0xc'));var crypto=require(_0xb431('0xd'));var jsforce=require(_0xb431('0xe'));var deskjs=require(_0xb431('0xf'));var toCsv=require(_0xb431('0x9'));var querystring=require(_0xb431('0x10'));var Papa=require('papaparse');var Redis=require(_0xb431('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb431('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb431('0x13'));var logger=require(_0xb431('0x14'))('api');var utils=require(_0xb431('0x15'));var config=require(_0xb431('0x16'));var licenseUtil=require(_0xb431('0x17'));var db=require(_0xb431('0x18'))['db'];function respondWithStatusCode(_0x23d0f9,_0x2a6d7c){_0x2a6d7c=_0x2a6d7c||0xcc;return function(_0x18a248){if(_0x18a248){return _0x23d0f9[_0xb431('0x19')](_0x2a6d7c);}return _0x23d0f9['status'](_0x2a6d7c)[_0xb431('0x1a')]();};}function respondWithResult(_0x3a86f1,_0x11032b){_0x11032b=_0x11032b||0xc8;return function(_0x21d8ee){if(_0x21d8ee){return _0x3a86f1[_0xb431('0x1b')](_0x11032b)[_0xb431('0x1c')](_0x21d8ee);}};}function respondWithFilteredResult(_0x4b28b0,_0x697091){return function(_0x285a3b){if(_0x285a3b){var _0x2768b8=typeof _0x697091[_0xb431('0x1d')]===_0xb431('0x1e')&&typeof _0x697091[_0xb431('0x1f')]===_0xb431('0x1e');var _0x5d0f3a=_0x285a3b[_0xb431('0x20')];var _0x1f714c=_0x2768b8?0x0:_0x697091[_0xb431('0x1d')];var _0x423dbc=_0x2768b8?_0x285a3b[_0xb431('0x20')]:_0x697091['offset']+_0x697091[_0xb431('0x1f')];var _0x4a4c37;if(_0x423dbc>=_0x5d0f3a){_0x423dbc=_0x5d0f3a;_0x4a4c37=0xc8;}else{_0x4a4c37=0xce;}_0x4b28b0[_0xb431('0x1b')](_0x4a4c37);return _0x4b28b0['set']('Content-Range',_0x1f714c+'-'+_0x423dbc+'/'+_0x5d0f3a)['json'](_0x285a3b);}return null;};}function patchUpdates(_0x29310c){return function(_0x177a39){try{jsonpatch[_0xb431('0x21')](_0x177a39,_0x29310c,!![]);}catch(_0x277ae3){return BPromise[_0xb431('0x22')](_0x277ae3);}return _0x177a39[_0xb431('0x23')]();};}function saveUpdates(_0x1346d0,_0x57dfb6){return function(_0x2fab4c){if(_0x2fab4c){return _0x2fab4c[_0xb431('0x24')](_0x1346d0)[_0xb431('0x25')](function(_0x26452f){return _0x26452f;});}return null;};}function removeEntity(_0x3e5ac6,_0x5aa475){return function(_0x1d42c3){if(_0x1d42c3){return _0x1d42c3[_0xb431('0x26')]()['then'](function(){_0x3e5ac6[_0xb431('0x1b')](0xcc)[_0xb431('0x1a')]();});}};}function handleEntityNotFound(_0x484016,_0x385c24){return function(_0x3d5562){if(!_0x3d5562){_0x484016['sendStatus'](0x194);}return _0x3d5562;};}function handleError(_0x39420b,_0x56c2f4){_0x56c2f4=_0x56c2f4||0x1f4;return function(_0x25c0f2){logger['error'](_0x25c0f2[_0xb431('0x27')]);if(_0x25c0f2[_0xb431('0x28')]){delete _0x25c0f2[_0xb431('0x28')];}_0x39420b[_0xb431('0x1b')](_0x56c2f4)['send'](_0x25c0f2);};}exports[_0xb431('0x29')]=function(_0x5010b5,_0x416af6){var _0x50e1b7={},_0x4aa85d={},_0x3445a0={'count':0x0,'rows':[]};var _0x1bb638=_[_0xb431('0x2a')](db[_0xb431('0x2b')][_0xb431('0x2c')],function(_0x1dafca){return{'name':_0x1dafca['fieldName'],'type':_0x1dafca[_0xb431('0x2d')][_0xb431('0x2e')]};});_0x4aa85d[_0xb431('0x2f')]=_['map'](_0x1bb638,_0xb431('0x28'));_0x4aa85d[_0xb431('0x30')]=_['keys'](_0x5010b5[_0xb431('0x30')]);_0x4aa85d[_0xb431('0x31')]=_[_0xb431('0x32')](_0x4aa85d[_0xb431('0x2f')],_0x4aa85d[_0xb431('0x30')]);_0x50e1b7['attributes']=_[_0xb431('0x32')](_0x4aa85d[_0xb431('0x2f')],qs[_0xb431('0x33')](_0x5010b5[_0xb431('0x30')][_0xb431('0x33')]));_0x50e1b7['attributes']=_0x50e1b7['attributes'][_0xb431('0x34')]?_0x50e1b7[_0xb431('0x35')]:_0x4aa85d[_0xb431('0x2f')];if(!_0x5010b5[_0xb431('0x30')]['hasOwnProperty'](_0xb431('0x36'))){_0x50e1b7[_0xb431('0x1f')]=qs[_0xb431('0x1f')](_0x5010b5[_0xb431('0x30')][_0xb431('0x1f')]);_0x50e1b7['offset']=qs['offset'](_0x5010b5[_0xb431('0x30')][_0xb431('0x1d')]);}_0x50e1b7[_0xb431('0x37')]=qs[_0xb431('0x38')](_0x5010b5['query'][_0xb431('0x38')]);_0x50e1b7[_0xb431('0x39')]=qs[_0xb431('0x31')](_[_0xb431('0x3a')](_0x5010b5['query'],_0x4aa85d[_0xb431('0x31')]),_0x1bb638);if(_0x5010b5[_0xb431('0x30')][_0xb431('0x3b')]){_0x50e1b7[_0xb431('0x39')]=_['merge'](_0x50e1b7[_0xb431('0x39')],{'$or':_[_0xb431('0x2a')](_0x1bb638,function(_0x3f7cb7){if(_0x3f7cb7[_0xb431('0x2d')]!==_0xb431('0x3c')){var _0x416fd1={};_0x416fd1[_0x3f7cb7['name']]={'$like':'%'+_0x5010b5[_0xb431('0x30')]['filter']+'%'};return _0x416fd1;}})});}_0x50e1b7=_['merge']({},_0x50e1b7,_0x5010b5[_0xb431('0x3d')]);var _0x178ed1={'where':_0x50e1b7[_0xb431('0x39')]};return db[_0xb431('0x2b')][_0xb431('0x20')](_0x178ed1)[_0xb431('0x25')](function(_0x47df72){_0x3445a0[_0xb431('0x20')]=_0x47df72;if(_0x5010b5['query']['includeAll']){_0x50e1b7[_0xb431('0x3e')]=[{'all':!![]}];}return db[_0xb431('0x2b')]['findAll'](_0x50e1b7);})[_0xb431('0x25')](function(_0x4f1c12){_0x3445a0['rows']=_0x4f1c12;return _0x3445a0;})[_0xb431('0x25')](respondWithFilteredResult(_0x416af6,_0x50e1b7))[_0xb431('0x3f')](handleError(_0x416af6,null));};exports[_0xb431('0x40')]=function(_0x55315f,_0x538f91){var _0x1376b4={'raw':![],'where':{'id':_0x55315f[_0xb431('0x41')]['id']}},_0x31f448={};_0x31f448[_0xb431('0x2f')]=_[_0xb431('0x42')](db['Dynamics365Configuration'][_0xb431('0x2c')]);_0x31f448[_0xb431('0x30')]=_[_0xb431('0x42')](_0x55315f[_0xb431('0x30')]);_0x31f448[_0xb431('0x31')]=_[_0xb431('0x32')](_0x31f448['model'],_0x31f448[_0xb431('0x30')]);_0x1376b4[_0xb431('0x35')]=_['intersection'](_0x31f448[_0xb431('0x2f')],qs[_0xb431('0x33')](_0x55315f[_0xb431('0x30')]['fields']));_0x1376b4[_0xb431('0x35')]=_0x1376b4[_0xb431('0x35')][_0xb431('0x34')]?_0x1376b4[_0xb431('0x35')]:_0x31f448[_0xb431('0x2f')];if(_0x55315f['query']['includeAll']){_0x1376b4[_0xb431('0x3e')]=[{'all':!![]}];}_0x1376b4=_['merge']({},_0x1376b4,_0x55315f[_0xb431('0x3d')]);return db[_0xb431('0x2b')][_0xb431('0x43')](_0x1376b4)[_0xb431('0x25')](handleEntityNotFound(_0x538f91,null))['then'](respondWithResult(_0x538f91,null))['catch'](handleError(_0x538f91,null));};exports[_0xb431('0x44')]=function(_0x4b933b,_0x151fba){return db[_0xb431('0x2b')][_0xb431('0x44')](_0x4b933b[_0xb431('0x45')],{})[_0xb431('0x25')](respondWithResult(_0x151fba,0xc9))[_0xb431('0x3f')](handleError(_0x151fba,null));};exports[_0xb431('0x24')]=function(_0x32d4c7,_0x54c3c9){if(_0x32d4c7[_0xb431('0x45')]['id']){delete _0x32d4c7[_0xb431('0x45')]['id'];}return db[_0xb431('0x2b')][_0xb431('0x43')]({'where':{'id':_0x32d4c7[_0xb431('0x41')]['id']}})[_0xb431('0x25')](handleEntityNotFound(_0x54c3c9,null))[_0xb431('0x25')](saveUpdates(_0x32d4c7[_0xb431('0x45')],null))[_0xb431('0x25')](respondWithResult(_0x54c3c9,null))[_0xb431('0x3f')](handleError(_0x54c3c9,null));};exports[_0xb431('0x26')]=function(_0x4e331d,_0x547e68){return db[_0xb431('0x2b')][_0xb431('0x43')]({'where':{'id':_0x4e331d[_0xb431('0x41')]['id']}})['then'](handleEntityNotFound(_0x547e68,null))[_0xb431('0x25')](removeEntity(_0x547e68,null))[_0xb431('0x3f')](handleError(_0x547e68,null));};exports['getFields']=function(_0x4e02ee,_0x5d86da,_0x467752){var _0x566a5f={};var _0x4afb07={};var _0x2fcf88;var _0x1bb69e;return db[_0xb431('0x2b')][_0xb431('0x46')]({'where':{'id':_0x4e02ee[_0xb431('0x41')]['id']}})['then'](handleEntityNotFound(_0x5d86da,null))['then'](function(_0x54cb0a){if(_0x54cb0a){_0x2fcf88=_0x54cb0a;_0x4afb07[_0xb431('0x2f')]=_['keys'](db[_0xb431('0x47')][_0xb431('0x2c')]);_0x4afb07[_0xb431('0x30')]=_[_0xb431('0x42')](_0x4e02ee[_0xb431('0x30')]);_0x4afb07[_0xb431('0x31')]=_['intersection'](_0x4afb07['model'],_0x4afb07[_0xb431('0x30')]);_0x566a5f[_0xb431('0x35')]=_[_0xb431('0x32')](_0x4afb07['model'],qs[_0xb431('0x33')](_0x4e02ee[_0xb431('0x30')]['fields']));_0x566a5f[_0xb431('0x35')]=_0x566a5f[_0xb431('0x35')][_0xb431('0x34')]?_0x566a5f[_0xb431('0x35')]:_0x4afb07[_0xb431('0x2f')];_0x566a5f[_0xb431('0x37')]=qs[_0xb431('0x38')](_0x4e02ee[_0xb431('0x30')]['sort']);_0x566a5f['where']=qs['filters'](_[_0xb431('0x3a')](_0x4e02ee[_0xb431('0x30')],_0x4afb07['filters']));if(_0x4e02ee[_0xb431('0x30')][_0xb431('0x3b')]){_0x566a5f[_0xb431('0x39')]=_['merge'](_0x566a5f['where'],{'$or':_['map'](_0x566a5f[_0xb431('0x35')],function(_0x276374){var _0xffba00={};_0xffba00[_0x276374]={'$like':'%'+_0x4e02ee['query'][_0xb431('0x3b')]+'%'};return _0xffba00;})});}_0x566a5f=_['merge']({},_0x566a5f,_0x4e02ee[_0xb431('0x3d')]);return _0x2fcf88[_0xb431('0x48')](_0x566a5f);}})['then'](function(_0x45ae97){if(_0x45ae97){_0x1bb69e=_0x45ae97[_0xb431('0x34')];if(!_0x4e02ee[_0xb431('0x30')][_0xb431('0x49')]('nolimit')){_0x566a5f[_0xb431('0x1f')]=qs['limit'](_0x4e02ee[_0xb431('0x30')][_0xb431('0x1f')]);_0x566a5f[_0xb431('0x1d')]=qs['offset'](_0x4e02ee[_0xb431('0x30')][_0xb431('0x1d')]);}return _0x2fcf88[_0xb431('0x48')](_0x566a5f);}})[_0xb431('0x25')](function(_0x450af8){if(_0x450af8){return _0x450af8?{'count':_0x1bb69e,'rows':_0x450af8}:null;}})[_0xb431('0x25')](respondWithResult(_0x5d86da,null))['catch'](handleError(_0x5d86da,null));};exports['getSubjects']=function(_0x593070,_0x5af6ef,_0x8b7505){var _0x351ff1={};var _0x487a28={};var _0x8a5e8c;var _0x3fd973;return db['Dynamics365Configuration'][_0xb431('0x46')]({'where':{'id':_0x593070[_0xb431('0x41')]['id']}})[_0xb431('0x25')](handleEntityNotFound(_0x5af6ef,null))[_0xb431('0x25')](function(_0x1b41ed){if(_0x1b41ed){_0x8a5e8c=_0x1b41ed;_0x487a28[_0xb431('0x2f')]=_[_0xb431('0x42')](db[_0xb431('0x47')][_0xb431('0x2c')]);_0x487a28['query']=_[_0xb431('0x42')](_0x593070['query']);_0x487a28[_0xb431('0x31')]=_[_0xb431('0x32')](_0x487a28[_0xb431('0x2f')],_0x487a28['query']);_0x351ff1[_0xb431('0x35')]=_['intersection'](_0x487a28['model'],qs['fields'](_0x593070[_0xb431('0x30')][_0xb431('0x33')]));_0x351ff1[_0xb431('0x35')]=_0x351ff1[_0xb431('0x35')][_0xb431('0x34')]?_0x351ff1[_0xb431('0x35')]:_0x487a28[_0xb431('0x2f')];_0x351ff1[_0xb431('0x37')]=qs['sort'](_0x593070['query'][_0xb431('0x38')]);_0x351ff1[_0xb431('0x39')]=qs[_0xb431('0x31')](_[_0xb431('0x3a')](_0x593070[_0xb431('0x30')],_0x487a28[_0xb431('0x31')]));if(_0x593070[_0xb431('0x30')][_0xb431('0x3b')]){_0x351ff1[_0xb431('0x39')]=_[_0xb431('0x4a')](_0x351ff1[_0xb431('0x39')],{'$or':_[_0xb431('0x2a')](_0x351ff1[_0xb431('0x35')],function(_0x51f524){var _0x58b865={};_0x58b865[_0x51f524]={'$like':'%'+_0x593070[_0xb431('0x30')][_0xb431('0x3b')]+'%'};return _0x58b865;})});}_0x351ff1=_[_0xb431('0x4a')]({},_0x351ff1,_0x593070[_0xb431('0x3d')]);return _0x8a5e8c[_0xb431('0x4b')](_0x351ff1);}})[_0xb431('0x25')](function(_0x2d1d6f){if(_0x2d1d6f){_0x3fd973=_0x2d1d6f[_0xb431('0x34')];if(!_0x593070[_0xb431('0x30')][_0xb431('0x49')](_0xb431('0x36'))){_0x351ff1[_0xb431('0x1f')]=qs[_0xb431('0x1f')](_0x593070[_0xb431('0x30')][_0xb431('0x1f')]);_0x351ff1[_0xb431('0x1d')]=qs['offset'](_0x593070[_0xb431('0x30')]['offset']);}return _0x8a5e8c[_0xb431('0x4b')](_0x351ff1);}})[_0xb431('0x25')](function(_0x44e635){if(_0x44e635){return _0x44e635?{'count':_0x3fd973,'rows':_0x44e635}:null;}})[_0xb431('0x25')](respondWithResult(_0x5af6ef,null))[_0xb431('0x3f')](handleError(_0x5af6ef,null));};exports[_0xb431('0x4c')]=function(_0x1d6152,_0x4cc177,_0x28df58){var _0x539d96={};var _0x15199c={};var _0x3e3f2f;var _0x5e01cf;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x1d6152['params']['id']}})[_0xb431('0x25')](handleEntityNotFound(_0x4cc177,null))['then'](function(_0x2be84b){if(_0x2be84b){_0x3e3f2f=_0x2be84b;_0x15199c[_0xb431('0x2f')]=_[_0xb431('0x42')](db[_0xb431('0x47')][_0xb431('0x2c')]);_0x15199c[_0xb431('0x30')]=_[_0xb431('0x42')](_0x1d6152[_0xb431('0x30')]);_0x15199c['filters']=_['intersection'](_0x15199c[_0xb431('0x2f')],_0x15199c[_0xb431('0x30')]);_0x539d96[_0xb431('0x35')]=_[_0xb431('0x32')](_0x15199c[_0xb431('0x2f')],qs[_0xb431('0x33')](_0x1d6152[_0xb431('0x30')][_0xb431('0x33')]));_0x539d96[_0xb431('0x35')]=_0x539d96['attributes'][_0xb431('0x34')]?_0x539d96[_0xb431('0x35')]:_0x15199c['model'];_0x539d96[_0xb431('0x37')]=qs['sort'](_0x1d6152['query']['sort']);_0x539d96[_0xb431('0x39')]=qs['filters'](_['pick'](_0x1d6152[_0xb431('0x30')],_0x15199c[_0xb431('0x31')]));if(_0x1d6152[_0xb431('0x30')]['filter']){_0x539d96[_0xb431('0x39')]=_[_0xb431('0x4a')](_0x539d96['where'],{'$or':_[_0xb431('0x2a')](_0x539d96['attributes'],function(_0x57400d){var _0x3028a9={};_0x3028a9[_0x57400d]={'$like':'%'+_0x1d6152[_0xb431('0x30')]['filter']+'%'};return _0x3028a9;})});}_0x539d96=_[_0xb431('0x4a')]({},_0x539d96,_0x1d6152[_0xb431('0x3d')]);return _0x3e3f2f[_0xb431('0x4c')](_0x539d96);}})[_0xb431('0x25')](function(_0x4f8a1b){if(_0x4f8a1b){_0x5e01cf=_0x4f8a1b[_0xb431('0x34')];if(!_0x1d6152[_0xb431('0x30')]['hasOwnProperty'](_0xb431('0x36'))){_0x539d96[_0xb431('0x1f')]=qs[_0xb431('0x1f')](_0x1d6152[_0xb431('0x30')][_0xb431('0x1f')]);_0x539d96['offset']=qs['offset'](_0x1d6152[_0xb431('0x30')][_0xb431('0x1d')]);}return _0x3e3f2f[_0xb431('0x4c')](_0x539d96);}})[_0xb431('0x25')](function(_0x2d7eb3){if(_0x2d7eb3){return _0x2d7eb3?{'count':_0x5e01cf,'rows':_0x2d7eb3}:null;}})[_0xb431('0x25')](respondWithResult(_0x4cc177,null))[_0xb431('0x3f')](handleError(_0x4cc177,null));};
\ No newline at end of file
index c4927e1..69ae92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','Dynamics365Configuration','int_dynamics365_configurations','lodash'];(function(_0x187c77,_0x5e1b37){var _0x53fac2=function(_0x2df714){while(--_0x2df714){_0x187c77['push'](_0x187c77['shift']());}};_0x53fac2(++_0x5e1b37);}(_0xdace,0xc5));var _0xedac=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0xdace[_0x30faec];return _0x29484f;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));var moment=require(_0xedac('0x3'));var BPromise=require('bluebird');var rp=require(_0xedac('0x4'));var fs=require('fs');var path=require(_0xedac('0x5'));var rimraf=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var attributes=require('./intDynamics365Configuration.attributes');module[_0xedac('0x8')]=function(_0x1cba89,_0x39328a){return _0x1cba89['define'](_0xedac('0x9'),attributes,{'tableName':_0xedac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf3cd=['path','rimraf','../../config/environment','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x188a42,_0x92debe){var _0x215dfe=function(_0x69ed21){while(--_0x69ed21){_0x188a42['push'](_0x188a42['shift']());}};_0x215dfe(++_0x92debe);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x49ed67,_0x290989){_0x49ed67=_0x49ed67-0x0;var _0x1523d5=_0xf3cd[_0x49ed67];return _0x1523d5;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var logger=require(_0xdf3c('0x2'))(_0xdf3c('0x3'));var moment=require(_0xdf3c('0x4'));var BPromise=require(_0xdf3c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdf3c('0x6'));var rimraf=require(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var attributes=require('./intDynamics365Configuration.attributes');module[_0xdf3c('0x9')]=function(_0x17d42a,_0x1313d5){return _0x17d42a[_0xdf3c('0xa')](_0xdf3c('0xb'),attributes,{'tableName':_0xdf3c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c84577b..6a2d394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d8=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment'];(function(_0x229144,_0x5303ad){var _0x2c0bf2=function(_0xac4f6f){while(--_0xac4f6f){_0x229144['push'](_0x229144['shift']());}};_0x2c0bf2(++_0x5303ad);}(_0xe4d8,0xbd));var _0x8e4d=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xe4d8[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8e4d('0x0'));var BPromise=require('bluebird');var rs=require(_0x8e4d('0x1'));var fs=require('fs');var Redis=require(_0x8e4d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8e4d('0x3'));var logger=require(_0x8e4d('0x4'))('rpc');var config=require(_0x8e4d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8e4d('0x6')][_0x8e4d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x207998,_0x4854f0,_0x2accfe){return new BPromise(function(_0x1866db,_0x4eec42){return client[_0x8e4d('0x8')](_0x207998,_0x2accfe)[_0x8e4d('0x9')](function(_0x3e6072){logger['info'](_0x8e4d('0xa'),_0x4854f0,_0x8e4d('0xb'));logger[_0x8e4d('0xc')](_0x8e4d('0xd'),_0x4854f0,_0x8e4d('0xb'),JSON[_0x8e4d('0xe')](_0x3e6072));if(_0x3e6072[_0x8e4d('0xf')]){if(_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x10')]===0x1f4){logger[_0x8e4d('0xf')](_0x8e4d('0xa'),_0x4854f0,_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);return _0x4eec42(_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);}logger[_0x8e4d('0xf')](_0x8e4d('0xa'),_0x4854f0,_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);return _0x1866db(_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);}else{logger['info'](_0x8e4d('0xa'),_0x4854f0,'request\x20sent');_0x1866db(_0x3e6072['result'][_0x8e4d('0x11')]);}})[_0x8e4d('0x12')](function(_0x782f71){logger[_0x8e4d('0xf')](_0x8e4d('0xa'),_0x4854f0,_0x782f71);_0x4eec42(_0x782f71);});});}
\ No newline at end of file
+var _0x70b7=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb'];(function(_0x24563c,_0x49d7cd){var _0x14796e=function(_0x3ab3d9){while(--_0x3ab3d9){_0x24563c['push'](_0x24563c['shift']());}};_0x14796e(++_0x49d7cd);}(_0x70b7,0x85));var _0x770b=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0x70b7[_0x14fad0];return _0x5c665f;};'use strict';var _=require(_0x770b('0x0'));var util=require(_0x770b('0x1'));var moment=require(_0x770b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x770b('0x3'));var db=require(_0x770b('0x4'))['db'];var utils=require(_0x770b('0x5'));var logger=require(_0x770b('0x6'))('rpc');var config=require(_0x770b('0x7'));var jayson=require(_0x770b('0x8'));var client=jayson['client'][_0x770b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f9ecb,_0x1fd613,_0x315018){return new BPromise(function(_0x19988f,_0x20d139){return client[_0x770b('0xa')](_0x1f9ecb,_0x315018)[_0x770b('0xb')](function(_0x579347){logger[_0x770b('0xc')](_0x770b('0xd'),_0x1fd613,_0x770b('0xe'));logger[_0x770b('0xf')](_0x770b('0x10'),_0x1fd613,'request\x20sent',JSON[_0x770b('0x11')](_0x579347));if(_0x579347[_0x770b('0x12')]){if(_0x579347['error'][_0x770b('0x13')]===0x1f4){logger[_0x770b('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x1fd613,_0x579347[_0x770b('0x12')][_0x770b('0x14')]);return _0x20d139(_0x579347[_0x770b('0x12')][_0x770b('0x14')]);}logger[_0x770b('0x12')](_0x770b('0xd'),_0x1fd613,_0x579347['error'][_0x770b('0x14')]);return _0x19988f(_0x579347['error']['message']);}else{logger[_0x770b('0xc')](_0x770b('0xd'),_0x1fd613,_0x770b('0xe'));_0x19988f(_0x579347[_0x770b('0x15')][_0x770b('0x14')]);}})[_0x770b('0x16')](function(_0x260fcc){logger[_0x770b('0x12')](_0x770b('0xd'),_0x1fd613,_0x260fcc);_0x20d139(_0x260fcc);});});}
\ No newline at end of file
index a829382..2ad17ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a1=['/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x30a1,0xa9));var _0x130a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x30a1[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x130a('0x0'));var util=require(_0x130a('0x1'));var path=require(_0x130a('0x2'));var timeout=require(_0x130a('0x3'));var express=require(_0x130a('0x4'));var router=express[_0x130a('0x5')]();var fs_extra=require(_0x130a('0x6'));var auth=require(_0x130a('0x7'));var interaction=require(_0x130a('0x8'));var config=require(_0x130a('0x9'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x130a('0xa')]);router['get'](_0x130a('0xb'),auth[_0x130a('0xc')](),controller[_0x130a('0xd')]);router[_0x130a('0xe')]('/',auth[_0x130a('0xc')](),controller[_0x130a('0xf')]);router[_0x130a('0x10')](_0x130a('0xb'),auth[_0x130a('0xc')](),controller[_0x130a('0x11')]);router['delete'](_0x130a('0xb'),auth['isAuthenticated'](),controller[_0x130a('0x12')]);module[_0x130a('0x13')]=router;
\ No newline at end of file
+var _0xf7dd=['isAuthenticated','show','create','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','get','index','/:id'];(function(_0x4fec19,_0x52e80c){var _0x40295b=function(_0x4bbbb5){while(--_0x4bbbb5){_0x4fec19['push'](_0x4fec19['shift']());}};_0x40295b(++_0x52e80c);}(_0xf7dd,0x85));var _0xdf7d=function(_0x256823,_0x2392df){_0x256823=_0x256823-0x0;var _0x5db66b=_0xf7dd[_0x256823];return _0x5db66b;};'use strict';var multer=require(_0xdf7d('0x0'));var util=require(_0xdf7d('0x1'));var path=require('path');var timeout=require(_0xdf7d('0x2'));var express=require('express');var router=express[_0xdf7d('0x3')]();var fs_extra=require(_0xdf7d('0x4'));var auth=require(_0xdf7d('0x5'));var interaction=require(_0xdf7d('0x6'));var config=require('../../config/environment');var controller=require(_0xdf7d('0x7'));router[_0xdf7d('0x8')]('/',auth['isAuthenticated'](),controller[_0xdf7d('0x9')]);router['get'](_0xdf7d('0xa'),auth[_0xdf7d('0xb')](),controller[_0xdf7d('0xc')]);router['post']('/',auth[_0xdf7d('0xb')](),controller[_0xdf7d('0xd')]);router['put'](_0xdf7d('0xa'),auth[_0xdf7d('0xb')](),controller[_0xdf7d('0xe')]);router[_0xdf7d('0xf')](_0xdf7d('0xa'),auth['isAuthenticated'](),controller[_0xdf7d('0x10')]);module[_0xdf7d('0x11')]=router;
\ No newline at end of file
index 8d69753..236117b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffd9=['STRING','BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x2a1faf,_0x4185ff){var _0x28b3d9=function(_0x2a9715){while(--_0x2a9715){_0x2a1faf['push'](_0x2a1faf['shift']());}};_0x28b3d9(++_0x4185ff);}(_0xffd9,0x17a));var _0x9ffd=function(_0x310956,_0x33f891){_0x310956=_0x310956-0x0;var _0x384f63=_0xffd9[_0x310956];return _0x384f63;};'use strict';var Sequelize=require('sequelize');module[_0x9ffd('0x0')]={'type':{'type':Sequelize[_0x9ffd('0x1')](_0x9ffd('0x2'),_0x9ffd('0x3'),_0x9ffd('0x4'),_0x9ffd('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x9ffd('0x6')]},'key':{'type':Sequelize[_0x9ffd('0x6')]},'keyType':{'type':Sequelize[_0x9ffd('0x1')]('string',_0x9ffd('0x3'),_0x9ffd('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x9ffd('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x9ffd('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4b62=['string','variable','customVariable','STRING','ENUM','sequelize','exports'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x4b62,0x1e1));var _0x24b6=function(_0x479408,_0xcfad7){_0x479408=_0x479408-0x0;var _0x576123=_0x4b62[_0x479408];return _0x576123;};'use strict';var Sequelize=require(_0x24b6('0x0'));module[_0x24b6('0x1')]={'type':{'type':Sequelize['ENUM'](_0x24b6('0x2'),_0x24b6('0x3'),_0x24b6('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x24b6('0x5')]},'key':{'type':Sequelize[_0x24b6('0x5')]},'keyType':{'type':Sequelize[_0x24b6('0x6')](_0x24b6('0x2'),_0x24b6('0x3'),_0x24b6('0x4'))},'keyContent':{'type':Sequelize[_0x24b6('0x5')]},'idField':{'type':Sequelize[_0x24b6('0x5')]},'nameField':{'type':Sequelize[_0x24b6('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x24b6('0x5')]}};
\ No newline at end of file
index e564bef..4ca0602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa243=['fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','create','body','destroy','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','Dynamics365Field','fieldName','key','model','query','keys','filters','intersection','attributes'];(function(_0xf5ce92,_0x3cc383){var _0xf5846b=function(_0x34c3bf){while(--_0x34c3bf){_0xf5ce92['push'](_0xf5ce92['shift']());}};_0xf5846b(++_0x3cc383);}(_0xa243,0x14a));var _0x3a24=function(_0x14e920,_0x49e89c){_0x14e920=_0x14e920-0x0;var _0xd7b508=_0xa243[_0x14e920];return _0xd7b508;};'use strict';var emlformat=require(_0x3a24('0x0'));var rimraf=require(_0x3a24('0x1'));var zipdir=require(_0x3a24('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3a24('0x3'));var moment=require('moment');var BPromise=require(_0x3a24('0x4'));var Mustache=require(_0x3a24('0x5'));var util=require(_0x3a24('0x6'));var path=require(_0x3a24('0x7'));var sox=require(_0x3a24('0x8'));var csv=require(_0x3a24('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3a24('0xa'));var _=require('lodash');var squel=require(_0x3a24('0xb'));var crypto=require(_0x3a24('0xc'));var jsforce=require(_0x3a24('0xd'));var deskjs=require(_0x3a24('0xe'));var toCsv=require(_0x3a24('0x9'));var querystring=require(_0x3a24('0xf'));var Papa=require(_0x3a24('0x10'));var Redis=require('ioredis');var authService=require(_0x3a24('0x11'));var qs=require(_0x3a24('0x12'));var as=require(_0x3a24('0x13'));var hardwareService=require(_0x3a24('0x14'));var logger=require('../../config/logger')(_0x3a24('0x15'));var utils=require(_0x3a24('0x16'));var config=require(_0x3a24('0x17'));var licenseUtil=require(_0x3a24('0x18'));var db=require(_0x3a24('0x19'))['db'];function respondWithStatusCode(_0x5bd172,_0xef8d1a){_0xef8d1a=_0xef8d1a||0xcc;return function(_0x52cbc2){if(_0x52cbc2){return _0x5bd172[_0x3a24('0x1a')](_0xef8d1a);}return _0x5bd172[_0x3a24('0x1b')](_0xef8d1a)[_0x3a24('0x1c')]();};}function respondWithResult(_0x5189d7,_0x334830){_0x334830=_0x334830||0xc8;return function(_0x21be02){if(_0x21be02){return _0x5189d7[_0x3a24('0x1b')](_0x334830)[_0x3a24('0x1d')](_0x21be02);}};}function respondWithFilteredResult(_0x3e2f19,_0x39241c){return function(_0x2e3c45){if(_0x2e3c45){var _0x693d0f=typeof _0x39241c[_0x3a24('0x1e')]==='undefined'&&typeof _0x39241c[_0x3a24('0x1f')]===_0x3a24('0x20');var _0x527923=_0x2e3c45['count'];var _0x3cfb0d=_0x693d0f?0x0:_0x39241c[_0x3a24('0x1e')];var _0x661e11=_0x693d0f?_0x2e3c45[_0x3a24('0x21')]:_0x39241c[_0x3a24('0x1e')]+_0x39241c['limit'];var _0x1e3643;if(_0x661e11>=_0x527923){_0x661e11=_0x527923;_0x1e3643=0xc8;}else{_0x1e3643=0xce;}_0x3e2f19[_0x3a24('0x1b')](_0x1e3643);return _0x3e2f19['set'](_0x3a24('0x22'),_0x3cfb0d+'-'+_0x661e11+'/'+_0x527923)[_0x3a24('0x1d')](_0x2e3c45);}return null;};}function patchUpdates(_0x1d07af){return function(_0x55729d){try{jsonpatch[_0x3a24('0x23')](_0x55729d,_0x1d07af,!![]);}catch(_0x1cc25e){return BPromise[_0x3a24('0x24')](_0x1cc25e);}return _0x55729d[_0x3a24('0x25')]();};}function saveUpdates(_0x11bec0,_0x444c52){return function(_0x45de48){if(_0x45de48){return _0x45de48[_0x3a24('0x26')](_0x11bec0)[_0x3a24('0x27')](function(_0x3c71be){return _0x3c71be;});}return null;};}function removeEntity(_0x1fc153,_0x5e6e2d){return function(_0x543e34){if(_0x543e34){return _0x543e34['destroy']()[_0x3a24('0x27')](function(){_0x1fc153[_0x3a24('0x1b')](0xcc)[_0x3a24('0x1c')]();});}};}function handleEntityNotFound(_0x45d20a,_0x524f7b){return function(_0x358f9b){if(!_0x358f9b){_0x45d20a[_0x3a24('0x1a')](0x194);}return _0x358f9b;};}function handleError(_0x5adf6b,_0x5e94a7){_0x5e94a7=_0x5e94a7||0x1f4;return function(_0xe16e4){logger[_0x3a24('0x28')](_0xe16e4[_0x3a24('0x29')]);if(_0xe16e4['name']){delete _0xe16e4[_0x3a24('0x2a')];}_0x5adf6b[_0x3a24('0x1b')](_0x5e94a7)[_0x3a24('0x2b')](_0xe16e4);};}exports[_0x3a24('0x2c')]=function(_0x3afc86,_0x394868){var _0x10d923={},_0x2cf561={},_0x48aae9={'count':0x0,'rows':[]};var _0x48749b=_[_0x3a24('0x2d')](db[_0x3a24('0x2e')]['rawAttributes'],function(_0x130ec9){return{'name':_0x130ec9[_0x3a24('0x2f')],'type':_0x130ec9['type'][_0x3a24('0x30')]};});_0x2cf561[_0x3a24('0x31')]=_[_0x3a24('0x2d')](_0x48749b,_0x3a24('0x2a'));_0x2cf561[_0x3a24('0x32')]=_[_0x3a24('0x33')](_0x3afc86[_0x3a24('0x32')]);_0x2cf561[_0x3a24('0x34')]=_[_0x3a24('0x35')](_0x2cf561[_0x3a24('0x31')],_0x2cf561['query']);_0x10d923[_0x3a24('0x36')]=_['intersection'](_0x2cf561['model'],qs[_0x3a24('0x37')](_0x3afc86[_0x3a24('0x32')]['fields']));_0x10d923[_0x3a24('0x36')]=_0x10d923['attributes'][_0x3a24('0x38')]?_0x10d923['attributes']:_0x2cf561[_0x3a24('0x31')];if(!_0x3afc86[_0x3a24('0x32')]['hasOwnProperty'](_0x3a24('0x39'))){_0x10d923[_0x3a24('0x1f')]=qs[_0x3a24('0x1f')](_0x3afc86[_0x3a24('0x32')]['limit']);_0x10d923[_0x3a24('0x1e')]=qs[_0x3a24('0x1e')](_0x3afc86[_0x3a24('0x32')]['offset']);}_0x10d923[_0x3a24('0x3a')]=qs[_0x3a24('0x3b')](_0x3afc86[_0x3a24('0x32')][_0x3a24('0x3b')]);_0x10d923['where']=qs[_0x3a24('0x34')](_[_0x3a24('0x3c')](_0x3afc86['query'],_0x2cf561['filters']),_0x48749b);if(_0x3afc86[_0x3a24('0x32')][_0x3a24('0x3d')]){_0x10d923[_0x3a24('0x3e')]=_['merge'](_0x10d923[_0x3a24('0x3e')],{'$or':_[_0x3a24('0x2d')](_0x48749b,function(_0x29a51e){if(_0x29a51e['type']!==_0x3a24('0x3f')){var _0x445c1f={};_0x445c1f[_0x29a51e[_0x3a24('0x2a')]]={'$like':'%'+_0x3afc86[_0x3a24('0x32')][_0x3a24('0x3d')]+'%'};return _0x445c1f;}})});}_0x10d923=_[_0x3a24('0x40')]({},_0x10d923,_0x3afc86[_0x3a24('0x41')]);var _0x151615={'where':_0x10d923['where']};return db[_0x3a24('0x2e')]['count'](_0x151615)[_0x3a24('0x27')](function(_0x1394af){_0x48aae9[_0x3a24('0x21')]=_0x1394af;if(_0x3afc86['query'][_0x3a24('0x42')]){_0x10d923['include']=[{'all':!![]}];}return db[_0x3a24('0x2e')][_0x3a24('0x43')](_0x10d923);})['then'](function(_0x305881){_0x48aae9[_0x3a24('0x44')]=_0x305881;return _0x48aae9;})[_0x3a24('0x27')](respondWithFilteredResult(_0x394868,_0x10d923))[_0x3a24('0x45')](handleError(_0x394868,null));};exports[_0x3a24('0x46')]=function(_0x497ae3,_0x336da5){var _0x1a7e3d={'raw':!![],'where':{'id':_0x497ae3[_0x3a24('0x47')]['id']}},_0x4a65cc={};_0x4a65cc[_0x3a24('0x31')]=_[_0x3a24('0x33')](db[_0x3a24('0x2e')][_0x3a24('0x48')]);_0x4a65cc[_0x3a24('0x32')]=_['keys'](_0x497ae3['query']);_0x4a65cc[_0x3a24('0x34')]=_[_0x3a24('0x35')](_0x4a65cc['model'],_0x4a65cc[_0x3a24('0x32')]);_0x1a7e3d[_0x3a24('0x36')]=_['intersection'](_0x4a65cc[_0x3a24('0x31')],qs[_0x3a24('0x37')](_0x497ae3[_0x3a24('0x32')][_0x3a24('0x37')]));_0x1a7e3d[_0x3a24('0x36')]=_0x1a7e3d[_0x3a24('0x36')]['length']?_0x1a7e3d[_0x3a24('0x36')]:_0x4a65cc[_0x3a24('0x31')];if(_0x497ae3[_0x3a24('0x32')]['includeAll']){_0x1a7e3d['include']=[{'all':!![]}];}_0x1a7e3d=_['merge']({},_0x1a7e3d,_0x497ae3[_0x3a24('0x41')]);return db[_0x3a24('0x2e')]['find'](_0x1a7e3d)[_0x3a24('0x27')](handleEntityNotFound(_0x336da5,null))[_0x3a24('0x27')](respondWithResult(_0x336da5,null))[_0x3a24('0x45')](handleError(_0x336da5,null));};exports[_0x3a24('0x49')]=function(_0x4dfb8f,_0x44a54f){return db[_0x3a24('0x2e')][_0x3a24('0x49')](_0x4dfb8f[_0x3a24('0x4a')],{})[_0x3a24('0x27')](respondWithResult(_0x44a54f,0xc9))[_0x3a24('0x45')](handleError(_0x44a54f,null));};exports[_0x3a24('0x26')]=function(_0x198a75,_0x1994f3){if(_0x198a75[_0x3a24('0x4a')]['id']){delete _0x198a75[_0x3a24('0x4a')]['id'];}return db[_0x3a24('0x2e')]['find']({'where':{'id':_0x198a75[_0x3a24('0x47')]['id']}})['then'](handleEntityNotFound(_0x1994f3,null))[_0x3a24('0x27')](saveUpdates(_0x198a75[_0x3a24('0x4a')],null))[_0x3a24('0x27')](respondWithResult(_0x1994f3,null))[_0x3a24('0x45')](handleError(_0x1994f3,null));};exports[_0x3a24('0x4b')]=function(_0x5decee,_0x2a88a0){return db[_0x3a24('0x2e')][_0x3a24('0x4c')]({'where':{'id':_0x5decee[_0x3a24('0x47')]['id']}})[_0x3a24('0x27')](handleEntityNotFound(_0x2a88a0,null))[_0x3a24('0x27')](removeEntity(_0x2a88a0,null))[_0x3a24('0x45')](handleError(_0x2a88a0,null));};
\ No newline at end of file
+var _0x36f1=['name','map','rawAttributes','key','model','query','keys','fields','attributes','length','hasOwnProperty','sort','where','filters','filter','merge','type','Dynamics365Field','includeAll','include','findAll','rows','catch','show','intersection','options','find','create','body','params','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','error'];(function(_0x38a960,_0x4f6b6c){var _0x331d4d=function(_0x42305a){while(--_0x42305a){_0x38a960['push'](_0x38a960['shift']());}};_0x331d4d(++_0x4f6b6c);}(_0x36f1,0x13a));var _0x136f=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36f1[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x136f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x136f('0x1'));var rp=require(_0x136f('0x2'));var moment=require(_0x136f('0x3'));var BPromise=require(_0x136f('0x4'));var Mustache=require(_0x136f('0x5'));var util=require(_0x136f('0x6'));var path=require(_0x136f('0x7'));var sox=require(_0x136f('0x8'));var csv=require(_0x136f('0x9'));var ejs=require(_0x136f('0xa'));var fs=require('fs');var fs_extra=require(_0x136f('0xb'));var _=require(_0x136f('0xc'));var squel=require(_0x136f('0xd'));var crypto=require('crypto');var jsforce=require(_0x136f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x136f('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x136f('0xf'));var qs=require(_0x136f('0x10'));var as=require(_0x136f('0x11'));var hardwareService=require(_0x136f('0x12'));var logger=require(_0x136f('0x13'))('api');var utils=require(_0x136f('0x14'));var config=require(_0x136f('0x15'));var licenseUtil=require(_0x136f('0x16'));var db=require(_0x136f('0x17'))['db'];function respondWithStatusCode(_0x541326,_0x43db1c){_0x43db1c=_0x43db1c||0xcc;return function(_0x3987e0){if(_0x3987e0){return _0x541326[_0x136f('0x18')](_0x43db1c);}return _0x541326['status'](_0x43db1c)[_0x136f('0x19')]();};}function respondWithResult(_0x3873db,_0x38e89b){_0x38e89b=_0x38e89b||0xc8;return function(_0x4acd49){if(_0x4acd49){return _0x3873db[_0x136f('0x1a')](_0x38e89b)[_0x136f('0x1b')](_0x4acd49);}};}function respondWithFilteredResult(_0x46bd61,_0x55625f){return function(_0x336a96){if(_0x336a96){var _0x39b853=typeof _0x55625f['offset']===_0x136f('0x1c')&&typeof _0x55625f['limit']===_0x136f('0x1c');var _0x74a353=_0x336a96['count'];var _0x9ec2d=_0x39b853?0x0:_0x55625f[_0x136f('0x1d')];var _0x140d58=_0x39b853?_0x336a96[_0x136f('0x1e')]:_0x55625f['offset']+_0x55625f[_0x136f('0x1f')];var _0x34f890;if(_0x140d58>=_0x74a353){_0x140d58=_0x74a353;_0x34f890=0xc8;}else{_0x34f890=0xce;}_0x46bd61[_0x136f('0x1a')](_0x34f890);return _0x46bd61[_0x136f('0x20')](_0x136f('0x21'),_0x9ec2d+'-'+_0x140d58+'/'+_0x74a353)[_0x136f('0x1b')](_0x336a96);}return null;};}function patchUpdates(_0x13ace6){return function(_0x44fb94){try{jsonpatch[_0x136f('0x22')](_0x44fb94,_0x13ace6,!![]);}catch(_0x1f0b23){return BPromise[_0x136f('0x23')](_0x1f0b23);}return _0x44fb94[_0x136f('0x24')]();};}function saveUpdates(_0x2097bc,_0x134703){return function(_0x314363){if(_0x314363){return _0x314363[_0x136f('0x25')](_0x2097bc)['then'](function(_0x445a86){return _0x445a86;});}return null;};}function removeEntity(_0x1bed8b,_0x3d35b7){return function(_0x35da45){if(_0x35da45){return _0x35da45[_0x136f('0x26')]()[_0x136f('0x27')](function(){_0x1bed8b[_0x136f('0x1a')](0xcc)[_0x136f('0x19')]();});}};}function handleEntityNotFound(_0x557c19,_0x1620e4){return function(_0xfe355e){if(!_0xfe355e){_0x557c19[_0x136f('0x18')](0x194);}return _0xfe355e;};}function handleError(_0x562179,_0x31e954){_0x31e954=_0x31e954||0x1f4;return function(_0x114c75){logger[_0x136f('0x28')](_0x114c75['stack']);if(_0x114c75[_0x136f('0x29')]){delete _0x114c75[_0x136f('0x29')];}_0x562179[_0x136f('0x1a')](_0x31e954)['send'](_0x114c75);};}exports['index']=function(_0x15172d,_0x184aaa){var _0x5cd3d3={},_0x5b601a={},_0x148807={'count':0x0,'rows':[]};var _0xa6c682=_[_0x136f('0x2a')](db['Dynamics365Field'][_0x136f('0x2b')],function(_0x585a62){return{'name':_0x585a62['fieldName'],'type':_0x585a62['type'][_0x136f('0x2c')]};});_0x5b601a[_0x136f('0x2d')]=_[_0x136f('0x2a')](_0xa6c682,_0x136f('0x29'));_0x5b601a[_0x136f('0x2e')]=_[_0x136f('0x2f')](_0x15172d['query']);_0x5b601a['filters']=_['intersection'](_0x5b601a[_0x136f('0x2d')],_0x5b601a[_0x136f('0x2e')]);_0x5cd3d3['attributes']=_['intersection'](_0x5b601a[_0x136f('0x2d')],qs[_0x136f('0x30')](_0x15172d['query'][_0x136f('0x30')]));_0x5cd3d3[_0x136f('0x31')]=_0x5cd3d3[_0x136f('0x31')][_0x136f('0x32')]?_0x5cd3d3[_0x136f('0x31')]:_0x5b601a[_0x136f('0x2d')];if(!_0x15172d[_0x136f('0x2e')][_0x136f('0x33')]('nolimit')){_0x5cd3d3[_0x136f('0x1f')]=qs[_0x136f('0x1f')](_0x15172d[_0x136f('0x2e')][_0x136f('0x1f')]);_0x5cd3d3[_0x136f('0x1d')]=qs[_0x136f('0x1d')](_0x15172d[_0x136f('0x2e')][_0x136f('0x1d')]);}_0x5cd3d3['order']=qs[_0x136f('0x34')](_0x15172d[_0x136f('0x2e')]['sort']);_0x5cd3d3[_0x136f('0x35')]=qs[_0x136f('0x36')](_['pick'](_0x15172d[_0x136f('0x2e')],_0x5b601a[_0x136f('0x36')]),_0xa6c682);if(_0x15172d[_0x136f('0x2e')][_0x136f('0x37')]){_0x5cd3d3[_0x136f('0x35')]=_[_0x136f('0x38')](_0x5cd3d3[_0x136f('0x35')],{'$or':_['map'](_0xa6c682,function(_0x4d7146){if(_0x4d7146[_0x136f('0x39')]!=='VIRTUAL'){var _0x341d44={};_0x341d44[_0x4d7146[_0x136f('0x29')]]={'$like':'%'+_0x15172d[_0x136f('0x2e')][_0x136f('0x37')]+'%'};return _0x341d44;}})});}_0x5cd3d3=_[_0x136f('0x38')]({},_0x5cd3d3,_0x15172d['options']);var _0x320285={'where':_0x5cd3d3[_0x136f('0x35')]};return db[_0x136f('0x3a')][_0x136f('0x1e')](_0x320285)['then'](function(_0x173c8c){_0x148807[_0x136f('0x1e')]=_0x173c8c;if(_0x15172d[_0x136f('0x2e')][_0x136f('0x3b')]){_0x5cd3d3[_0x136f('0x3c')]=[{'all':!![]}];}return db[_0x136f('0x3a')][_0x136f('0x3d')](_0x5cd3d3);})[_0x136f('0x27')](function(_0x7fd51c){_0x148807[_0x136f('0x3e')]=_0x7fd51c;return _0x148807;})[_0x136f('0x27')](respondWithFilteredResult(_0x184aaa,_0x5cd3d3))[_0x136f('0x3f')](handleError(_0x184aaa,null));};exports[_0x136f('0x40')]=function(_0x5b0547,_0x59f257){var _0x5f136e={'raw':!![],'where':{'id':_0x5b0547['params']['id']}},_0x5b937d={};_0x5b937d[_0x136f('0x2d')]=_[_0x136f('0x2f')](db[_0x136f('0x3a')]['rawAttributes']);_0x5b937d['query']=_[_0x136f('0x2f')](_0x5b0547[_0x136f('0x2e')]);_0x5b937d[_0x136f('0x36')]=_[_0x136f('0x41')](_0x5b937d[_0x136f('0x2d')],_0x5b937d[_0x136f('0x2e')]);_0x5f136e[_0x136f('0x31')]=_['intersection'](_0x5b937d[_0x136f('0x2d')],qs[_0x136f('0x30')](_0x5b0547['query'][_0x136f('0x30')]));_0x5f136e['attributes']=_0x5f136e[_0x136f('0x31')]['length']?_0x5f136e[_0x136f('0x31')]:_0x5b937d['model'];if(_0x5b0547[_0x136f('0x2e')][_0x136f('0x3b')]){_0x5f136e[_0x136f('0x3c')]=[{'all':!![]}];}_0x5f136e=_[_0x136f('0x38')]({},_0x5f136e,_0x5b0547[_0x136f('0x42')]);return db[_0x136f('0x3a')][_0x136f('0x43')](_0x5f136e)[_0x136f('0x27')](handleEntityNotFound(_0x59f257,null))[_0x136f('0x27')](respondWithResult(_0x59f257,null))['catch'](handleError(_0x59f257,null));};exports[_0x136f('0x44')]=function(_0x25b205,_0x4dfdd7){return db[_0x136f('0x3a')]['create'](_0x25b205['body'],{})[_0x136f('0x27')](respondWithResult(_0x4dfdd7,0xc9))[_0x136f('0x3f')](handleError(_0x4dfdd7,null));};exports[_0x136f('0x25')]=function(_0x2fb805,_0x42995e){if(_0x2fb805[_0x136f('0x45')]['id']){delete _0x2fb805[_0x136f('0x45')]['id'];}return db[_0x136f('0x3a')]['find']({'where':{'id':_0x2fb805['params']['id']}})[_0x136f('0x27')](handleEntityNotFound(_0x42995e,null))[_0x136f('0x27')](saveUpdates(_0x2fb805[_0x136f('0x45')],null))[_0x136f('0x27')](respondWithResult(_0x42995e,null))[_0x136f('0x3f')](handleError(_0x42995e,null));};exports[_0x136f('0x26')]=function(_0xa0ae59,_0x79631){return db[_0x136f('0x3a')]['find']({'where':{'id':_0xa0ae59[_0x136f('0x46')]['id']}})['then'](handleEntityNotFound(_0x79631,null))[_0x136f('0x27')](removeEntity(_0x79631,null))[_0x136f('0x3f')](handleError(_0x79631,null));};
\ No newline at end of file
index 68ae56d..4bddfd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cfb=['dynamics365_unique_index','FieldId','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x3cfb,0x113));var _0xb3cf=function(_0x3493cb,_0x3a246e){_0x3493cb=_0x3493cb-0x0;var _0x2356a5=_0x3cfb[_0x3493cb];return _0x2356a5;};'use strict';var _=require(_0xb3cf('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb3cf('0x1'));var moment=require(_0xb3cf('0x2'));var BPromise=require(_0xb3cf('0x3'));var rp=require(_0xb3cf('0x4'));var fs=require('fs');var path=require(_0xb3cf('0x5'));var rimraf=require('rimraf');var config=require(_0xb3cf('0x6'));var attributes=require(_0xb3cf('0x7'));module[_0xb3cf('0x8')]=function(_0x5aafd7,_0x70a89f){return _0x5aafd7[_0xb3cf('0x9')](_0xb3cf('0xa'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xb3cf('0xb'),'fields':['idField',_0xb3cf('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa43a=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Dynamics365Field','int_dynamics365_fields','FieldId','util','../../config/logger','api','moment'];(function(_0xe4a60d,_0x19c9c7){var _0x355882=function(_0xc3f7a){while(--_0xc3f7a){_0xe4a60d['push'](_0xe4a60d['shift']());}};_0x355882(++_0x19c9c7);}(_0xa43a,0x88));var _0xaa43=function(_0x17ce4c,_0x334562){_0x17ce4c=_0x17ce4c-0x0;var _0x484a33=_0xa43a[_0x17ce4c];return _0x484a33;};'use strict';var _=require('lodash');var util=require(_0xaa43('0x0'));var logger=require(_0xaa43('0x1'))(_0xaa43('0x2'));var moment=require(_0xaa43('0x3'));var BPromise=require(_0xaa43('0x4'));var rp=require(_0xaa43('0x5'));var fs=require('fs');var path=require(_0xaa43('0x6'));var rimraf=require(_0xaa43('0x7'));var config=require(_0xaa43('0x8'));var attributes=require('./intDynamics365Field.attributes');module[_0xaa43('0x9')]=function(_0x3eaf78,_0xffa67b){return _0x3eaf78[_0xaa43('0xa')](_0xaa43('0xb'),attributes,{'tableName':_0xaa43('0xc'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':['idField',_0xaa43('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 17c8f14..f231a17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae5a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','request','then','info','Dynamics365Field,\x20%s,\x20%s','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x37fdd0,_0x5d522d){var _0x1c927c=function(_0xde8082){while(--_0xde8082){_0x37fdd0['push'](_0x37fdd0['shift']());}};_0x1c927c(++_0x5d522d);}(_0xae5a,0x110));var _0xaae5=function(_0x20b34f,_0x587b6){_0x20b34f=_0x20b34f-0x0;var _0x374c87=_0xae5a[_0x20b34f];return _0x374c87;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xaae5('0x0'));var BPromise=require(_0xaae5('0x1'));var rs=require(_0xaae5('0x2'));var fs=require('fs');var Redis=require(_0xaae5('0x3'));var db=require(_0xaae5('0x4'))['db'];var utils=require(_0xaae5('0x5'));var logger=require(_0xaae5('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaae5('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x265832,_0x314347,_0x19aa9f){return new BPromise(function(_0x3a82ae,_0x4dfacb){return client[_0xaae5('0x8')](_0x265832,_0x19aa9f)[_0xaae5('0x9')](function(_0x16a8ee){logger[_0xaae5('0xa')](_0xaae5('0xb'),_0x314347,'request\x20sent');logger['debug'](_0xaae5('0xc'),_0x314347,_0xaae5('0xd'),JSON[_0xaae5('0xe')](_0x16a8ee));if(_0x16a8ee[_0xaae5('0xf')]){if(_0x16a8ee[_0xaae5('0xf')]['code']===0x1f4){logger[_0xaae5('0xf')](_0xaae5('0xb'),_0x314347,_0x16a8ee['error'][_0xaae5('0x10')]);return _0x4dfacb(_0x16a8ee[_0xaae5('0xf')][_0xaae5('0x10')]);}logger[_0xaae5('0xf')]('Dynamics365Field,\x20%s,\x20%s',_0x314347,_0x16a8ee['error']['message']);return _0x3a82ae(_0x16a8ee['error'][_0xaae5('0x10')]);}else{logger['info'](_0xaae5('0xb'),_0x314347,_0xaae5('0xd'));_0x3a82ae(_0x16a8ee['result'][_0xaae5('0x10')]);}})['catch'](function(_0x1b3744){logger[_0xaae5('0xf')](_0xaae5('0xb'),_0x314347,_0x1b3744);_0x4dfacb(_0x1b3744);});});}
\ No newline at end of file
+var _0xe425=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Field,\x20%s,\x20%s','message','result','catch','lodash','randomstring'];(function(_0x3381c2,_0x1ef60a){var _0x216a83=function(_0x59d1dc){while(--_0x59d1dc){_0x3381c2['push'](_0x3381c2['shift']());}};_0x216a83(++_0x1ef60a);}(_0xe425,0x96));var _0x5e42=function(_0x1abf8c,_0x1f8fda){_0x1abf8c=_0x1abf8c-0x0;var _0x18c6a3=_0xe425[_0x1abf8c];return _0x18c6a3;};'use strict';var _=require(_0x5e42('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5e42('0x1'));var fs=require('fs');var Redis=require(_0x5e42('0x2'));var db=require(_0x5e42('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5e42('0x4'))('rpc');var config=require(_0x5e42('0x5'));var jayson=require(_0x5e42('0x6'));var client=jayson[_0x5e42('0x7')][_0x5e42('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b51ff,_0x1457f9,_0xd45dcb){return new BPromise(function(_0x225433,_0x48bf0e){return client[_0x5e42('0x9')](_0x1b51ff,_0xd45dcb)['then'](function(_0x358b1e){logger[_0x5e42('0xa')]('Dynamics365Field,\x20%s,\x20%s',_0x1457f9,'request\x20sent');logger['debug'](_0x5e42('0xb'),_0x1457f9,'request\x20sent',JSON[_0x5e42('0xc')](_0x358b1e));if(_0x358b1e[_0x5e42('0xd')]){if(_0x358b1e[_0x5e42('0xd')][_0x5e42('0xe')]===0x1f4){logger[_0x5e42('0xd')](_0x5e42('0xf'),_0x1457f9,_0x358b1e[_0x5e42('0xd')][_0x5e42('0x10')]);return _0x48bf0e(_0x358b1e['error'][_0x5e42('0x10')]);}logger['error'](_0x5e42('0xf'),_0x1457f9,_0x358b1e['error'][_0x5e42('0x10')]);return _0x225433(_0x358b1e[_0x5e42('0xd')][_0x5e42('0x10')]);}else{logger[_0x5e42('0xa')](_0x5e42('0xf'),_0x1457f9,'request\x20sent');_0x225433(_0x358b1e[_0x5e42('0x11')][_0x5e42('0x10')]);}})[_0x5e42('0x12')](function(_0x263b71){logger[_0x5e42('0xd')](_0x5e42('0xf'),_0x1457f9,_0x263b71);_0x48bf0e(_0x263b71);});});}
\ No newline at end of file
index 4eb4f89..71dc328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a8=['express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','destroy','exports','multer','util','path','connect-timeout'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x93a8,0x188));var _0x893a=function(_0x15f4b5,_0x20d1f7){_0x15f4b5=_0x15f4b5-0x0;var _0xfc2e40=_0x93a8[_0x15f4b5];return _0xfc2e40;};'use strict';var multer=require(_0x893a('0x0'));var util=require(_0x893a('0x1'));var path=require(_0x893a('0x2'));var timeout=require(_0x893a('0x3'));var express=require(_0x893a('0x4'));var router=express['Router']();var fs_extra=require(_0x893a('0x5'));var auth=require(_0x893a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x893a('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0x893a('0x8')]('/',auth[_0x893a('0x9')](),controller[_0x893a('0xa')]);router[_0x893a('0x8')](_0x893a('0xb'),auth[_0x893a('0x9')](),controller[_0x893a('0xc')]);router[_0x893a('0x8')](_0x893a('0xd'),auth[_0x893a('0x9')](),controller[_0x893a('0xe')]);router[_0x893a('0x8')](_0x893a('0xf'),auth['isAuthenticated'](),controller[_0x893a('0x10')]);router[_0x893a('0x11')]('/',auth[_0x893a('0x9')](),controller[_0x893a('0x12')]);router[_0x893a('0x11')](_0x893a('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x893a('0x13')](_0x893a('0xb'),auth[_0x893a('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x893a('0x14')]);module[_0x893a('0x15')]=router;
\ No newline at end of file
+var _0x00b8=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getFields','post','create','addConfiguration','put','update','delete','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x00b8,0x145));var _0x800b=function(_0x326181,_0x144bfe){_0x326181=_0x326181-0x0;var _0x4ef942=_0x00b8[_0x326181];return _0x4ef942;};'use strict';var multer=require(_0x800b('0x0'));var util=require(_0x800b('0x1'));var path=require(_0x800b('0x2'));var timeout=require(_0x800b('0x3'));var express=require(_0x800b('0x4'));var router=express[_0x800b('0x5')]();var fs_extra=require(_0x800b('0x6'));var auth=require(_0x800b('0x7'));var interaction=require(_0x800b('0x8'));var config=require(_0x800b('0x9'));var controller=require(_0x800b('0xa'));router[_0x800b('0xb')]('/',auth[_0x800b('0xc')](),controller[_0x800b('0xd')]);router[_0x800b('0xb')](_0x800b('0xe'),auth[_0x800b('0xc')](),controller[_0x800b('0xf')]);router[_0x800b('0xb')](_0x800b('0x10'),auth[_0x800b('0xc')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x800b('0xc')](),controller[_0x800b('0x11')]);router[_0x800b('0x12')]('/',auth[_0x800b('0xc')](),controller[_0x800b('0x13')]);router['post'](_0x800b('0x10'),auth[_0x800b('0xc')](),controller[_0x800b('0x14')]);router[_0x800b('0x15')](_0x800b('0xe'),auth[_0x800b('0xc')](),controller[_0x800b('0x16')]);router[_0x800b('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x800b('0x18')]);module['exports']=router;
\ No newline at end of file
index 90712ef..bbe78d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['exports','STRING','username','remoteUri','sequelize'];(function(_0x1b12f8,_0x17deb4){var _0x1e46c2=function(_0x4279b5){while(--_0x4279b5){_0x1b12f8['push'](_0x1b12f8['shift']());}};_0x1e46c2(++_0x17deb4);}(_0xd824,0xc2));var _0x4d82=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xd824[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x3')},'apiKey':{'type':Sequelize[_0x4d82('0x2')]},'remoteUri':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x4')},'serverUrl':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa30a=['sequelize','exports','STRING','username','remoteUri'];(function(_0xba594f,_0x33f1b1){var _0x268d25=function(_0x8606d5){while(--_0x8606d5){_0xba594f['push'](_0xba594f['shift']());}};_0x268d25(++_0x33f1b1);}(_0xa30a,0xd7));var _0xaa30=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa30a[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xaa30('0x0'));module[_0xaa30('0x1')]={'name':{'type':Sequelize[_0xaa30('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xaa30('0x2')],'unique':_0xaa30('0x3')},'apiKey':{'type':Sequelize[_0xaa30('0x2')]},'remoteUri':{'type':Sequelize[_0xaa30('0x2')],'unique':_0xaa30('0x4')},'serverUrl':{'type':Sequelize[_0xaa30('0x2')],'allowNull':![]}};
\ No newline at end of file
index c706e09..2b76027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1120=['undefined','count','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','attributes','intersection','fields','length','model','hasOwnProperty','limit','order','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','FreshdeskAccount','findAll','catch','show','keys','include','find','create','body','destroy','getConfigurations','params','filter','findOne','AccountId','Subjects','Descriptions','getDescriptions','channel','FreshdeskField','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','toString','base64','requester','subject','agent','description','priority','source','ticket_type','group','company','remove','default','custom_dropdown','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','end','status','json','offset'];(function(_0x5773ed,_0x2270ce){var _0x4a75d9=function(_0x31a9a3){while(--_0x31a9a3){_0x5773ed['push'](_0x5773ed['shift']());}};_0x4a75d9(++_0x2270ce);}(_0x1120,0x140));var _0x0112=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0x1120[_0x5d80de];return _0x1c7556;};'use strict';var emlformat=require(_0x0112('0x0'));var rimraf=require(_0x0112('0x1'));var zipdir=require(_0x0112('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0112('0x3'));var util=require(_0x0112('0x4'));var path=require(_0x0112('0x5'));var sox=require(_0x0112('0x6'));var csv=require(_0x0112('0x7'));var ejs=require(_0x0112('0x8'));var fs=require('fs');var fs_extra=require(_0x0112('0x9'));var _=require(_0x0112('0xa'));var squel=require(_0x0112('0xb'));var crypto=require(_0x0112('0xc'));var jsforce=require(_0x0112('0xd'));var deskjs=require(_0x0112('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0112('0xf'));var Papa=require(_0x0112('0x10'));var Redis=require(_0x0112('0x11'));var authService=require(_0x0112('0x12'));var qs=require(_0x0112('0x13'));var as=require(_0x0112('0x14'));var hardwareService=require(_0x0112('0x15'));var logger=require('../../config/logger')(_0x0112('0x16'));var utils=require(_0x0112('0x17'));var config=require(_0x0112('0x18'));var licenseUtil=require(_0x0112('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0112('0x1a'));function respondWithStatusCode(_0x394926,_0xb58a0b){_0xb58a0b=_0xb58a0b||0xcc;return function(_0x140750){if(_0x140750){return _0x394926['sendStatus'](_0xb58a0b);}return _0x394926['status'](_0xb58a0b)[_0x0112('0x1b')]();};}function respondWithResult(_0x4d591e,_0x19dd06){_0x19dd06=_0x19dd06||0xc8;return function(_0x4a5758){if(_0x4a5758){return _0x4d591e[_0x0112('0x1c')](_0x19dd06)[_0x0112('0x1d')](_0x4a5758);}};}function respondWithFilteredResult(_0xe2ec19,_0x1a2549){return function(_0x54269a){if(_0x54269a){var _0x3544bd=typeof _0x1a2549[_0x0112('0x1e')]===_0x0112('0x1f')&&typeof _0x1a2549['limit']==='undefined';var _0xb3e59c=_0x54269a['count'];var _0x5c2236=_0x3544bd?0x0:_0x1a2549['offset'];var _0x19f10e=_0x3544bd?_0x54269a[_0x0112('0x20')]:_0x1a2549['offset']+_0x1a2549['limit'];var _0x63114;if(_0x19f10e>=_0xb3e59c){_0x19f10e=_0xb3e59c;_0x63114=0xc8;}else{_0x63114=0xce;}_0xe2ec19[_0x0112('0x1c')](_0x63114);return _0xe2ec19['set'](_0x0112('0x21'),_0x5c2236+'-'+_0x19f10e+'/'+_0xb3e59c)['json'](_0x54269a);}return null;};}function patchUpdates(_0x51ac2d){return function(_0x57a7a2){try{jsonpatch[_0x0112('0x22')](_0x57a7a2,_0x51ac2d,!![]);}catch(_0x18d8e5){return BPromise[_0x0112('0x23')](_0x18d8e5);}return _0x57a7a2['save']();};}function saveUpdates(_0x3dd2aa,_0xf92cb4){return function(_0x8a6919){if(_0x8a6919){return _0x8a6919[_0x0112('0x24')](_0x3dd2aa)['then'](function(_0x33cb56){return _0x33cb56;});}return null;};}function removeEntity(_0x408bb8,_0x2d99c1){return function(_0x54fa8b){if(_0x54fa8b){return _0x54fa8b['destroy']()[_0x0112('0x25')](function(){_0x408bb8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x27252e,_0x4a583e){return function(_0x82541c){if(!_0x82541c){_0x27252e['sendStatus'](0x194);}return _0x82541c;};}function handleError(_0x32035e,_0x58e5){_0x58e5=_0x58e5||0x1f4;return function(_0x2cb207){logger[_0x0112('0x26')](_0x2cb207[_0x0112('0x27')]);if(_0x2cb207[_0x0112('0x28')]){delete _0x2cb207[_0x0112('0x28')];}_0x32035e[_0x0112('0x1c')](_0x58e5)[_0x0112('0x29')](_0x2cb207);};}exports[_0x0112('0x2a')]=function(_0x36669c,_0x52aabd){var _0x6d44bb={},_0x51d4fe={},_0x1a13d8={'count':0x0,'rows':[]};var _0x4682be=_[_0x0112('0x2b')](db['FreshdeskAccount'][_0x0112('0x2c')],function(_0x4a7dc7){return{'name':_0x4a7dc7[_0x0112('0x2d')],'type':_0x4a7dc7[_0x0112('0x2e')][_0x0112('0x2f')]};});_0x51d4fe['model']=_['map'](_0x4682be,'name');_0x51d4fe[_0x0112('0x30')]=_['keys'](_0x36669c['query']);_0x51d4fe['filters']=_['intersection'](_0x51d4fe['model'],_0x51d4fe[_0x0112('0x30')]);_0x6d44bb[_0x0112('0x31')]=_[_0x0112('0x32')](_0x51d4fe['model'],qs[_0x0112('0x33')](_0x36669c[_0x0112('0x30')]['fields']));_0x6d44bb[_0x0112('0x31')]=_0x6d44bb['attributes'][_0x0112('0x34')]?_0x6d44bb['attributes']:_0x51d4fe[_0x0112('0x35')];if(!_0x36669c[_0x0112('0x30')][_0x0112('0x36')]('nolimit')){_0x6d44bb['limit']=qs['limit'](_0x36669c['query'][_0x0112('0x37')]);_0x6d44bb[_0x0112('0x1e')]=qs[_0x0112('0x1e')](_0x36669c[_0x0112('0x30')][_0x0112('0x1e')]);}_0x6d44bb[_0x0112('0x38')]=qs[_0x0112('0x39')](_0x36669c[_0x0112('0x30')][_0x0112('0x39')]);_0x6d44bb[_0x0112('0x3a')]=qs[_0x0112('0x3b')](_[_0x0112('0x3c')](_0x36669c[_0x0112('0x30')],_0x51d4fe[_0x0112('0x3b')]),_0x4682be);if(_0x36669c['query']['filter']){_0x6d44bb['where']=_['merge'](_0x6d44bb[_0x0112('0x3a')],{'$or':_['map'](_0x4682be,function(_0x464554){if(_0x464554['type']!==_0x0112('0x3d')){var _0x8e29fc={};_0x8e29fc[_0x464554[_0x0112('0x28')]]={'$like':'%'+_0x36669c[_0x0112('0x30')]['filter']+'%'};return _0x8e29fc;}})});}_0x6d44bb=_[_0x0112('0x3e')]({},_0x6d44bb,_0x36669c[_0x0112('0x3f')]);var _0x468efb={'where':_0x6d44bb[_0x0112('0x3a')]};return db['FreshdeskAccount']['count'](_0x468efb)['then'](function(_0x34bb6e){_0x1a13d8[_0x0112('0x20')]=_0x34bb6e;if(_0x36669c[_0x0112('0x30')][_0x0112('0x40')]){_0x6d44bb['include']=[{'all':!![]}];}return db[_0x0112('0x41')][_0x0112('0x42')](_0x6d44bb);})[_0x0112('0x25')](function(_0x1cad31){_0x1a13d8['rows']=_0x1cad31;return _0x1a13d8;})[_0x0112('0x25')](respondWithFilteredResult(_0x52aabd,_0x6d44bb))[_0x0112('0x43')](handleError(_0x52aabd,null));};exports[_0x0112('0x44')]=function(_0x5782d5,_0x934ee6){var _0x143e00={'raw':![],'where':{'id':_0x5782d5['params']['id']}},_0x223e11={};_0x223e11[_0x0112('0x35')]=_[_0x0112('0x45')](db[_0x0112('0x41')][_0x0112('0x2c')]);_0x223e11[_0x0112('0x30')]=_[_0x0112('0x45')](_0x5782d5['query']);_0x223e11[_0x0112('0x3b')]=_['intersection'](_0x223e11[_0x0112('0x35')],_0x223e11[_0x0112('0x30')]);_0x143e00[_0x0112('0x31')]=_[_0x0112('0x32')](_0x223e11[_0x0112('0x35')],qs['fields'](_0x5782d5['query']['fields']));_0x143e00['attributes']=_0x143e00[_0x0112('0x31')][_0x0112('0x34')]?_0x143e00['attributes']:_0x223e11[_0x0112('0x35')];if(_0x5782d5[_0x0112('0x30')][_0x0112('0x40')]){_0x143e00[_0x0112('0x46')]=[{'all':!![]}];}_0x143e00=_['merge']({},_0x143e00,_0x5782d5[_0x0112('0x3f')]);return db[_0x0112('0x41')][_0x0112('0x47')](_0x143e00)[_0x0112('0x25')](handleEntityNotFound(_0x934ee6,null))['then'](respondWithResult(_0x934ee6,null))['catch'](handleError(_0x934ee6,null));};exports[_0x0112('0x48')]=function(_0x3016ec,_0x166ac9){return db['FreshdeskAccount'][_0x0112('0x48')](_0x3016ec[_0x0112('0x49')],{})[_0x0112('0x25')](respondWithResult(_0x166ac9,0xc9))[_0x0112('0x43')](handleError(_0x166ac9,null));};exports['update']=function(_0x2962d6,_0x337edf){if(_0x2962d6[_0x0112('0x49')]['id']){delete _0x2962d6['body']['id'];}return db[_0x0112('0x41')][_0x0112('0x47')]({'where':{'id':_0x2962d6['params']['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x337edf,null))[_0x0112('0x25')](saveUpdates(_0x2962d6['body'],null))['then'](respondWithResult(_0x337edf,null))['catch'](handleError(_0x337edf,null));};exports[_0x0112('0x4a')]=function(_0x51a56c,_0x218363){return db['FreshdeskAccount']['find']({'where':{'id':_0x51a56c['params']['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x218363,null))[_0x0112('0x25')](removeEntity(_0x218363,null))['catch'](handleError(_0x218363,null));};exports[_0x0112('0x4b')]=function(_0x402580,_0x198cb4,_0x2b181c){var _0x13f61b={};var _0x5896e7={};var _0x50d6b0;var _0x5c0a67;return db[_0x0112('0x41')]['findOne']({'where':{'id':_0x402580[_0x0112('0x4c')]['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x198cb4,null))[_0x0112('0x25')](function(_0x235671){if(_0x235671){_0x50d6b0=_0x235671;_0x5896e7[_0x0112('0x35')]=_[_0x0112('0x45')](db['FreshdeskConfiguration']['rawAttributes']);_0x5896e7[_0x0112('0x30')]=_[_0x0112('0x45')](_0x402580['query']);_0x5896e7[_0x0112('0x3b')]=_[_0x0112('0x32')](_0x5896e7[_0x0112('0x35')],_0x5896e7['query']);_0x13f61b[_0x0112('0x31')]=_[_0x0112('0x32')](_0x5896e7[_0x0112('0x35')],qs['fields'](_0x402580['query']['fields']));_0x13f61b['attributes']=_0x13f61b[_0x0112('0x31')][_0x0112('0x34')]?_0x13f61b[_0x0112('0x31')]:_0x5896e7['model'];_0x13f61b[_0x0112('0x38')]=qs[_0x0112('0x39')](_0x402580[_0x0112('0x30')][_0x0112('0x39')]);_0x13f61b['where']=qs[_0x0112('0x3b')](_['pick'](_0x402580[_0x0112('0x30')],_0x5896e7[_0x0112('0x3b')]));if(_0x402580[_0x0112('0x30')][_0x0112('0x4d')]){_0x13f61b[_0x0112('0x3a')]=_['merge'](_0x13f61b['where'],{'$or':_[_0x0112('0x2b')](_0x13f61b['attributes'],function(_0x465755){var _0xf32135={};_0xf32135[_0x465755]={'$like':'%'+_0x402580[_0x0112('0x30')][_0x0112('0x4d')]+'%'};return _0xf32135;})});}_0x13f61b=_['merge']({},_0x13f61b,_0x402580[_0x0112('0x3f')]);return _0x50d6b0[_0x0112('0x4b')](_0x13f61b);}})[_0x0112('0x25')](function(_0x267bde){if(_0x267bde){_0x5c0a67=_0x267bde[_0x0112('0x34')];if(!_0x402580[_0x0112('0x30')][_0x0112('0x36')]('nolimit')){_0x13f61b['limit']=qs[_0x0112('0x37')](_0x402580[_0x0112('0x30')]['limit']);_0x13f61b['offset']=qs['offset'](_0x402580[_0x0112('0x30')][_0x0112('0x1e')]);}return _0x50d6b0['getConfigurations'](_0x13f61b);}})[_0x0112('0x25')](function(_0x4bc323){if(_0x4bc323){return _0x4bc323?{'count':_0x5c0a67,'rows':_0x4bc323}:null;}})[_0x0112('0x25')](respondWithResult(_0x198cb4,null))[_0x0112('0x43')](handleError(_0x198cb4,null));};exports['addConfiguration']=function(_0x390e34,_0x2e299d,_0x107e9c){if(_0x390e34[_0x0112('0x49')]['id']){delete _0x390e34['body']['id'];}return db[_0x0112('0x41')][_0x0112('0x4e')]({'where':{'id':_0x390e34[_0x0112('0x4c')]['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x2e299d,null))[_0x0112('0x25')](function(_0x12aa2f){if(_0x12aa2f){_0x390e34[_0x0112('0x49')][_0x0112('0x4f')]=_0x12aa2f['id'];_0x390e34['body'][_0x0112('0x50')]=integrations['getSubjects'](_0x390e34[_0x0112('0x49')]['channel'],_0x390e34[_0x0112('0x49')]['type']);_0x390e34[_0x0112('0x49')][_0x0112('0x51')]=integrations[_0x0112('0x52')](_0x390e34[_0x0112('0x49')][_0x0112('0x53')],_0x390e34['body'][_0x0112('0x2e')]);return db['FreshdeskConfiguration'][_0x0112('0x48')](_0x390e34[_0x0112('0x49')],{'include':[{'model':db[_0x0112('0x54')],'as':_0x0112('0x50')},{'model':db[_0x0112('0x54')],'as':_0x0112('0x51')}]});}return null;})[_0x0112('0x25')](respondWithResult(_0x2e299d,null))[_0x0112('0x43')](handleError(_0x2e299d,null));};exports[_0x0112('0x55')]=function(_0x3d14e5,_0x35fc57,_0x27c223){var _0x399a92='';return db[_0x0112('0x41')]['findOne']({'where':{'id':_0x3d14e5[_0x0112('0x4c')]['id']},'attributes':['id','remoteUri',_0x0112('0x56')]})[_0x0112('0x25')](handleEntityNotFound(_0x35fc57,null))[_0x0112('0x25')](function(_0x38acf3){if(_0x38acf3){_0x399a92=_0x38acf3[_0x0112('0x57')];var _0x51327d=_0x399a92[_0x0112('0x58')](-0x1);if(_0x51327d==='/'){_0x399a92=_0x399a92[_0x0112('0x59')](0x0,_0x399a92[_0x0112('0x5a')](_0x51327d));}return rp({'method':_0x0112('0x5b'),'uri':util[_0x0112('0x5c')](_0x0112('0x5d'),_0x399a92,_0x0112('0x5e')),'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x0112('0x5c')]('%s:X',_0x38acf3[_0x0112('0x56')]))[_0x0112('0x5f')](_0x0112('0x60')))},'json':!![]});}})[_0x0112('0x25')](function(_0x4a3f5a){if(_0x4a3f5a){var _0x26b845=[_0x0112('0x61'),_0x0112('0x62'),_0x0112('0x63'),_0x0112('0x64'),_0x0112('0x1c'),_0x0112('0x65'),'group',_0x0112('0x66'),_0x0112('0x67'),_0x0112('0x68'),_0x0112('0x69')];_[_0x0112('0x6a')](_0x4a3f5a,function(_0x55b1fb){return _0x26b845['includes'](_0x55b1fb['name'])||!_0x55b1fb[_0x0112('0x6b')]&&_0x55b1fb['type']!=='custom_text'&&_0x55b1fb['type']!==_0x0112('0x6c');});return{'count':_0x4a3f5a[_0x0112('0x34')],'rows':_['map'](_0x4a3f5a,function(_0x2b69f9){return{'id':_0x2b69f9[_0x0112('0x28')],'name':_0x2b69f9[_0x0112('0x6d')],'custom':!_0x2b69f9['default'],'options':_0x2b69f9[_0x0112('0x6e')]?_[_0x0112('0x2b')](_0x2b69f9['choices'],function(_0x444dcc){return{'name':_[_0x0112('0x6f')](_0x444dcc),'value':_0x444dcc};}):[]};})};}})['then'](respondWithResult(_0x35fc57,null))[_0x0112('0x43')](function(_0x45bdbb){var _0x11ae68=_0x3d14e5[_0x0112('0x30')][_0x0112('0x70')]?0x1f4:_0x45bdbb[_0x0112('0x71')]||0x1f4;logger[_0x0112('0x26')](_0x0112('0x72'),_0x0112('0x55'),_0x11ae68,JSON[_0x0112('0x73')](_0x45bdbb));delete _0x45bdbb['name'];if(_0x11ae68===0x191){_0x11ae68=0x190;}_0x35fc57[_0x0112('0x1c')](_0x11ae68)[_0x0112('0x29')](_0x3d14e5['query'][_0x0112('0x70')]?{'message':_0x0112('0x74'),'statusCode':_0x45bdbb[_0x0112('0x71')]}:_0x45bdbb);});};
\ No newline at end of file
+var _0x0487=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','save','update','then','error','name','index','map','FreshdeskAccount','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','destroy','order','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','description','priority','group','source','ticket_type','company','default','custom_text','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring'];(function(_0x17ee40,_0x54a70d){var _0x3a8aa1=function(_0x4dea29){while(--_0x4dea29){_0x17ee40['push'](_0x17ee40['shift']());}};_0x3a8aa1(++_0x54a70d);}(_0x0487,0x14f));var _0x7048=function(_0x1406ae,_0x292395){_0x1406ae=_0x1406ae-0x0;var _0x23a076=_0x0487[_0x1406ae];return _0x23a076;};'use strict';var emlformat=require(_0x7048('0x0'));var rimraf=require(_0x7048('0x1'));var zipdir=require(_0x7048('0x2'));var jsonpatch=require(_0x7048('0x3'));var rp=require(_0x7048('0x4'));var moment=require(_0x7048('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7048('0x6'));var util=require('util');var path=require(_0x7048('0x7'));var sox=require(_0x7048('0x8'));var csv=require(_0x7048('0x9'));var ejs=require(_0x7048('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7048('0xb'));var squel=require(_0x7048('0xc'));var crypto=require(_0x7048('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7048('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7048('0xf'));var Papa=require(_0x7048('0x10'));var Redis=require(_0x7048('0x11'));var authService=require(_0x7048('0x12'));var qs=require(_0x7048('0x13'));var as=require(_0x7048('0x14'));var hardwareService=require(_0x7048('0x15'));var logger=require('../../config/logger')(_0x7048('0x16'));var utils=require(_0x7048('0x17'));var config=require(_0x7048('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x7048('0x19'))['db'];var integrations=require(_0x7048('0x1a'));function respondWithStatusCode(_0x59542b,_0x116386){_0x116386=_0x116386||0xcc;return function(_0xeba050){if(_0xeba050){return _0x59542b[_0x7048('0x1b')](_0x116386);}return _0x59542b[_0x7048('0x1c')](_0x116386)[_0x7048('0x1d')]();};}function respondWithResult(_0x546c51,_0x1072d0){_0x1072d0=_0x1072d0||0xc8;return function(_0x493067){if(_0x493067){return _0x546c51[_0x7048('0x1c')](_0x1072d0)[_0x7048('0x1e')](_0x493067);}};}function respondWithFilteredResult(_0x6a2a55,_0x2b9800){return function(_0x4ec491){if(_0x4ec491){var _0x24a6f9=typeof _0x2b9800['offset']===_0x7048('0x1f')&&typeof _0x2b9800[_0x7048('0x20')]==='undefined';var _0x4b7b1e=_0x4ec491[_0x7048('0x21')];var _0xbef931=_0x24a6f9?0x0:_0x2b9800[_0x7048('0x22')];var _0xe5fd91=_0x24a6f9?_0x4ec491['count']:_0x2b9800[_0x7048('0x22')]+_0x2b9800['limit'];var _0x521a61;if(_0xe5fd91>=_0x4b7b1e){_0xe5fd91=_0x4b7b1e;_0x521a61=0xc8;}else{_0x521a61=0xce;}_0x6a2a55['status'](_0x521a61);return _0x6a2a55[_0x7048('0x23')](_0x7048('0x24'),_0xbef931+'-'+_0xe5fd91+'/'+_0x4b7b1e)[_0x7048('0x1e')](_0x4ec491);}return null;};}function patchUpdates(_0x4b9def){return function(_0x14a7d2){try{jsonpatch['apply'](_0x14a7d2,_0x4b9def,!![]);}catch(_0xe33081){return BPromise['reject'](_0xe33081);}return _0x14a7d2[_0x7048('0x25')]();};}function saveUpdates(_0x43a621,_0x31c5dc){return function(_0x248142){if(_0x248142){return _0x248142[_0x7048('0x26')](_0x43a621)[_0x7048('0x27')](function(_0x5a683d){return _0x5a683d;});}return null;};}function removeEntity(_0x4c8709,_0x519649){return function(_0x2422db){if(_0x2422db){return _0x2422db['destroy']()[_0x7048('0x27')](function(){_0x4c8709[_0x7048('0x1c')](0xcc)[_0x7048('0x1d')]();});}};}function handleEntityNotFound(_0x4fc143,_0x1e0c61){return function(_0x4ff0a8){if(!_0x4ff0a8){_0x4fc143[_0x7048('0x1b')](0x194);}return _0x4ff0a8;};}function handleError(_0x4a0f3b,_0xe3b552){_0xe3b552=_0xe3b552||0x1f4;return function(_0x2186a5){logger[_0x7048('0x28')](_0x2186a5['stack']);if(_0x2186a5[_0x7048('0x29')]){delete _0x2186a5['name'];}_0x4a0f3b[_0x7048('0x1c')](_0xe3b552)['send'](_0x2186a5);};}exports[_0x7048('0x2a')]=function(_0x5ee10a,_0x30d90b){var _0x3ccc34={},_0x52e437={},_0x5f2459={'count':0x0,'rows':[]};var _0x5ccd85=_[_0x7048('0x2b')](db[_0x7048('0x2c')]['rawAttributes'],function(_0x1d5889){return{'name':_0x1d5889['fieldName'],'type':_0x1d5889['type'][_0x7048('0x2d')]};});_0x52e437['model']=_[_0x7048('0x2b')](_0x5ccd85,_0x7048('0x29'));_0x52e437[_0x7048('0x2e')]=_[_0x7048('0x2f')](_0x5ee10a[_0x7048('0x2e')]);_0x52e437[_0x7048('0x30')]=_[_0x7048('0x31')](_0x52e437[_0x7048('0x32')],_0x52e437[_0x7048('0x2e')]);_0x3ccc34['attributes']=_['intersection'](_0x52e437[_0x7048('0x32')],qs[_0x7048('0x33')](_0x5ee10a[_0x7048('0x2e')]['fields']));_0x3ccc34[_0x7048('0x34')]=_0x3ccc34[_0x7048('0x34')][_0x7048('0x35')]?_0x3ccc34[_0x7048('0x34')]:_0x52e437[_0x7048('0x32')];if(!_0x5ee10a[_0x7048('0x2e')][_0x7048('0x36')](_0x7048('0x37'))){_0x3ccc34[_0x7048('0x20')]=qs[_0x7048('0x20')](_0x5ee10a[_0x7048('0x2e')]['limit']);_0x3ccc34['offset']=qs[_0x7048('0x22')](_0x5ee10a['query'][_0x7048('0x22')]);}_0x3ccc34['order']=qs[_0x7048('0x38')](_0x5ee10a[_0x7048('0x2e')][_0x7048('0x38')]);_0x3ccc34[_0x7048('0x39')]=qs['filters'](_[_0x7048('0x3a')](_0x5ee10a[_0x7048('0x2e')],_0x52e437[_0x7048('0x30')]),_0x5ccd85);if(_0x5ee10a[_0x7048('0x2e')]['filter']){_0x3ccc34['where']=_[_0x7048('0x3b')](_0x3ccc34[_0x7048('0x39')],{'$or':_[_0x7048('0x2b')](_0x5ccd85,function(_0x305720){if(_0x305720[_0x7048('0x3c')]!==_0x7048('0x3d')){var _0x19bf2e={};_0x19bf2e[_0x305720[_0x7048('0x29')]]={'$like':'%'+_0x5ee10a['query'][_0x7048('0x3e')]+'%'};return _0x19bf2e;}})});}_0x3ccc34=_['merge']({},_0x3ccc34,_0x5ee10a[_0x7048('0x3f')]);var _0x2e4918={'where':_0x3ccc34['where']};return db[_0x7048('0x2c')][_0x7048('0x21')](_0x2e4918)[_0x7048('0x27')](function(_0x5d268b){_0x5f2459[_0x7048('0x21')]=_0x5d268b;if(_0x5ee10a[_0x7048('0x2e')]['includeAll']){_0x3ccc34[_0x7048('0x40')]=[{'all':!![]}];}return db[_0x7048('0x2c')][_0x7048('0x41')](_0x3ccc34);})[_0x7048('0x27')](function(_0x16df50){_0x5f2459[_0x7048('0x42')]=_0x16df50;return _0x5f2459;})['then'](respondWithFilteredResult(_0x30d90b,_0x3ccc34))[_0x7048('0x43')](handleError(_0x30d90b,null));};exports[_0x7048('0x44')]=function(_0x52afa9,_0x5b23d0){var _0x360bd9={'raw':![],'where':{'id':_0x52afa9[_0x7048('0x45')]['id']}},_0x159598={};_0x159598[_0x7048('0x32')]=_[_0x7048('0x2f')](db[_0x7048('0x2c')][_0x7048('0x46')]);_0x159598[_0x7048('0x2e')]=_['keys'](_0x52afa9[_0x7048('0x2e')]);_0x159598[_0x7048('0x30')]=_[_0x7048('0x31')](_0x159598[_0x7048('0x32')],_0x159598[_0x7048('0x2e')]);_0x360bd9['attributes']=_[_0x7048('0x31')](_0x159598[_0x7048('0x32')],qs[_0x7048('0x33')](_0x52afa9[_0x7048('0x2e')]['fields']));_0x360bd9[_0x7048('0x34')]=_0x360bd9[_0x7048('0x34')][_0x7048('0x35')]?_0x360bd9['attributes']:_0x159598[_0x7048('0x32')];if(_0x52afa9['query'][_0x7048('0x47')]){_0x360bd9['include']=[{'all':!![]}];}_0x360bd9=_['merge']({},_0x360bd9,_0x52afa9[_0x7048('0x3f')]);return db[_0x7048('0x2c')][_0x7048('0x48')](_0x360bd9)[_0x7048('0x27')](handleEntityNotFound(_0x5b23d0,null))[_0x7048('0x27')](respondWithResult(_0x5b23d0,null))['catch'](handleError(_0x5b23d0,null));};exports[_0x7048('0x49')]=function(_0x2c579a,_0x3640d5){return db['FreshdeskAccount'][_0x7048('0x49')](_0x2c579a['body'],{})[_0x7048('0x27')](respondWithResult(_0x3640d5,0xc9))['catch'](handleError(_0x3640d5,null));};exports[_0x7048('0x26')]=function(_0x213d74,_0x4176e6){if(_0x213d74['body']['id']){delete _0x213d74[_0x7048('0x4a')]['id'];}return db[_0x7048('0x2c')]['find']({'where':{'id':_0x213d74['params']['id']}})['then'](handleEntityNotFound(_0x4176e6,null))['then'](saveUpdates(_0x213d74[_0x7048('0x4a')],null))[_0x7048('0x27')](respondWithResult(_0x4176e6,null))[_0x7048('0x43')](handleError(_0x4176e6,null));};exports[_0x7048('0x4b')]=function(_0x5799dc,_0x16aa5f){return db[_0x7048('0x2c')][_0x7048('0x48')]({'where':{'id':_0x5799dc[_0x7048('0x45')]['id']}})[_0x7048('0x27')](handleEntityNotFound(_0x16aa5f,null))['then'](removeEntity(_0x16aa5f,null))[_0x7048('0x43')](handleError(_0x16aa5f,null));};exports['getConfigurations']=function(_0x38b0d9,_0x3d30f3,_0x4e155c){var _0x544e2e={};var _0x21188={};var _0x48201d;var _0x2324e1;return db['FreshdeskAccount']['findOne']({'where':{'id':_0x38b0d9[_0x7048('0x45')]['id']}})[_0x7048('0x27')](handleEntityNotFound(_0x3d30f3,null))[_0x7048('0x27')](function(_0x27111b){if(_0x27111b){_0x48201d=_0x27111b;_0x21188[_0x7048('0x32')]=_['keys'](db['FreshdeskConfiguration']['rawAttributes']);_0x21188[_0x7048('0x2e')]=_['keys'](_0x38b0d9['query']);_0x21188['filters']=_['intersection'](_0x21188[_0x7048('0x32')],_0x21188[_0x7048('0x2e')]);_0x544e2e[_0x7048('0x34')]=_[_0x7048('0x31')](_0x21188['model'],qs[_0x7048('0x33')](_0x38b0d9['query'][_0x7048('0x33')]));_0x544e2e['attributes']=_0x544e2e['attributes']['length']?_0x544e2e['attributes']:_0x21188[_0x7048('0x32')];_0x544e2e[_0x7048('0x4c')]=qs['sort'](_0x38b0d9[_0x7048('0x2e')]['sort']);_0x544e2e[_0x7048('0x39')]=qs['filters'](_[_0x7048('0x3a')](_0x38b0d9[_0x7048('0x2e')],_0x21188[_0x7048('0x30')]));if(_0x38b0d9['query'][_0x7048('0x3e')]){_0x544e2e[_0x7048('0x39')]=_['merge'](_0x544e2e[_0x7048('0x39')],{'$or':_[_0x7048('0x2b')](_0x544e2e[_0x7048('0x34')],function(_0x5a965b){var _0x49f460={};_0x49f460[_0x5a965b]={'$like':'%'+_0x38b0d9[_0x7048('0x2e')]['filter']+'%'};return _0x49f460;})});}_0x544e2e=_[_0x7048('0x3b')]({},_0x544e2e,_0x38b0d9['options']);return _0x48201d[_0x7048('0x4d')](_0x544e2e);}})[_0x7048('0x27')](function(_0x25c161){if(_0x25c161){_0x2324e1=_0x25c161[_0x7048('0x35')];if(!_0x38b0d9[_0x7048('0x2e')][_0x7048('0x36')](_0x7048('0x37'))){_0x544e2e[_0x7048('0x20')]=qs['limit'](_0x38b0d9[_0x7048('0x2e')]['limit']);_0x544e2e[_0x7048('0x22')]=qs[_0x7048('0x22')](_0x38b0d9[_0x7048('0x2e')][_0x7048('0x22')]);}return _0x48201d[_0x7048('0x4d')](_0x544e2e);}})['then'](function(_0x477297){if(_0x477297){return _0x477297?{'count':_0x2324e1,'rows':_0x477297}:null;}})['then'](respondWithResult(_0x3d30f3,null))[_0x7048('0x43')](handleError(_0x3d30f3,null));};exports[_0x7048('0x4e')]=function(_0x582e5f,_0x14aa99,_0x3edca3){if(_0x582e5f[_0x7048('0x4a')]['id']){delete _0x582e5f[_0x7048('0x4a')]['id'];}return db[_0x7048('0x2c')][_0x7048('0x4f')]({'where':{'id':_0x582e5f[_0x7048('0x45')]['id']}})[_0x7048('0x27')](handleEntityNotFound(_0x14aa99,null))[_0x7048('0x27')](function(_0x111f5a){if(_0x111f5a){_0x582e5f[_0x7048('0x4a')][_0x7048('0x50')]=_0x111f5a['id'];_0x582e5f[_0x7048('0x4a')][_0x7048('0x51')]=integrations[_0x7048('0x52')](_0x582e5f['body'][_0x7048('0x53')],_0x582e5f['body']['type']);_0x582e5f[_0x7048('0x4a')][_0x7048('0x54')]=integrations[_0x7048('0x55')](_0x582e5f[_0x7048('0x4a')][_0x7048('0x53')],_0x582e5f[_0x7048('0x4a')]['type']);return db['FreshdeskConfiguration'][_0x7048('0x49')](_0x582e5f['body'],{'include':[{'model':db['FreshdeskField'],'as':_0x7048('0x51')},{'model':db[_0x7048('0x56')],'as':_0x7048('0x54')}]});}return null;})[_0x7048('0x27')](respondWithResult(_0x14aa99,null))[_0x7048('0x43')](handleError(_0x14aa99,null));};exports[_0x7048('0x57')]=function(_0x58f607,_0x4af837,_0x58bf48){var _0x30c96b='';return db['FreshdeskAccount'][_0x7048('0x4f')]({'where':{'id':_0x58f607[_0x7048('0x45')]['id']},'attributes':['id',_0x7048('0x58'),_0x7048('0x59')]})[_0x7048('0x27')](handleEntityNotFound(_0x4af837,null))[_0x7048('0x27')](function(_0x111b68){if(_0x111b68){_0x30c96b=_0x111b68[_0x7048('0x58')];var _0x407db1=_0x30c96b[_0x7048('0x5a')](-0x1);if(_0x407db1==='/'){_0x30c96b=_0x30c96b['substring'](0x0,_0x30c96b['lastIndexOf'](_0x407db1));}return rp({'method':_0x7048('0x5b'),'uri':util[_0x7048('0x5c')](_0x7048('0x5d'),_0x30c96b,_0x7048('0x5e')),'headers':{'Authorization':util[_0x7048('0x5c')](_0x7048('0x5f'),new Buffer(util[_0x7048('0x5c')](_0x7048('0x60'),_0x111b68['apiKey']))[_0x7048('0x61')](_0x7048('0x62')))},'json':!![]});}})['then'](function(_0x4896bd){if(_0x4896bd){var _0x370d58=[_0x7048('0x63'),_0x7048('0x64'),_0x7048('0x65'),_0x7048('0x66'),_0x7048('0x1c'),_0x7048('0x67'),_0x7048('0x68'),_0x7048('0x69'),_0x7048('0x6a'),_0x7048('0x68'),_0x7048('0x6b')];_['remove'](_0x4896bd,function(_0x1a1d71){return _0x370d58['includes'](_0x1a1d71[_0x7048('0x29')])||!_0x1a1d71[_0x7048('0x6c')]&&_0x1a1d71[_0x7048('0x3c')]!==_0x7048('0x6d')&&_0x1a1d71[_0x7048('0x3c')]!=='custom_dropdown';});return{'count':_0x4896bd[_0x7048('0x35')],'rows':_[_0x7048('0x2b')](_0x4896bd,function(_0x53a614){return{'id':_0x53a614['name'],'name':_0x53a614[_0x7048('0x6e')],'custom':!_0x53a614['default'],'options':_0x53a614[_0x7048('0x6f')]?_['map'](_0x53a614['choices'],function(_0x58c87a){return{'name':_[_0x7048('0x70')](_0x58c87a),'value':_0x58c87a};}):[]};})};}})[_0x7048('0x27')](respondWithResult(_0x4af837,null))[_0x7048('0x43')](function(_0x3e134f){var _0x82c690=_0x58f607['query'][_0x7048('0x71')]?0x1f4:_0x3e134f[_0x7048('0x72')]||0x1f4;logger['error'](_0x7048('0x73'),_0x7048('0x57'),_0x82c690,JSON['stringify'](_0x3e134f));delete _0x3e134f[_0x7048('0x29')];if(_0x82c690===0x191){_0x82c690=0x190;}_0x4af837[_0x7048('0x1c')](_0x82c690)['send'](_0x58f607[_0x7048('0x2e')][_0x7048('0x71')]?{'message':_0x7048('0x74'),'statusCode':_0x3e134f[_0x7048('0x72')]}:_0x3e134f);});};
\ No newline at end of file
index 15e75db..860e499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac85=['int_freshdesk_accounts','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','FreshdeskAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac85,0x1c9));var _0x5ac8=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xac85[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x5ac8('0x0'));var util=require('util');var logger=require(_0x5ac8('0x1'))(_0x5ac8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5ac8('0x3'));var fs=require('fs');var path=require(_0x5ac8('0x4'));var rimraf=require(_0x5ac8('0x5'));var config=require(_0x5ac8('0x6'));var attributes=require(_0x5ac8('0x7'));var integrations=require(_0x5ac8('0x8'));module[_0x5ac8('0x9')]=function(_0x4a247c,_0x2805f8){return _0x4a247c['define'](_0x5ac8('0xa'),attributes,{'tableName':_0x5ac8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b8d=['./intFreshdeskAccount.attributes','define','int_freshdesk_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x2b8d,0x93));var _0xd2b8=function(_0x36f284,_0x24cbd1){_0x36f284=_0x36f284-0x0;var _0x4ea099=_0x2b8d[_0x36f284];return _0x4ea099;};'use strict';var _=require(_0xd2b8('0x0'));var util=require(_0xd2b8('0x1'));var logger=require('../../config/logger')(_0xd2b8('0x2'));var moment=require(_0xd2b8('0x3'));var BPromise=require(_0xd2b8('0x4'));var rp=require(_0xd2b8('0x5'));var fs=require('fs');var path=require(_0xd2b8('0x6'));var rimraf=require(_0xd2b8('0x7'));var config=require(_0xd2b8('0x8'));var attributes=require(_0xd2b8('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x4468f8,_0x5d03e3){return _0x4468f8[_0xd2b8('0xa')]('FreshdeskAccount',attributes,{'tableName':_0xd2b8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9162cd..e926e82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca9=['stringify','error','code','message','result','catch','FreshdeskAccount','findAll','options','raw','where','limit','map','include','attributes','model','GetFreshdeskAccount','debug','ShowFreshdeskAccount','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s'];(function(_0x11651a,_0x2635bc){var _0x276916=function(_0x32bec0){while(--_0x32bec0){_0x11651a['push'](_0x11651a['shift']());}};_0x276916(++_0x2635bc);}(_0x8ca9,0x101));var _0x98ca=function(_0x3c73b3,_0x4618bb){_0x3c73b3=_0x3c73b3-0x0;var _0x5ac5e8=_0x8ca9[_0x3c73b3];return _0x5ac5e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x98ca('0x0'));var rs=require(_0x98ca('0x1'));var fs=require('fs');var Redis=require(_0x98ca('0x2'));var db=require(_0x98ca('0x3'))['db'];var utils=require(_0x98ca('0x4'));var logger=require(_0x98ca('0x5'))(_0x98ca('0x6'));var config=require(_0x98ca('0x7'));var jayson=require(_0x98ca('0x8'));var client=jayson[_0x98ca('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x92d5ee,_0x3993a1,_0x53a101){return new BPromise(function(_0x39bcbf,_0x3755e6){return client['request'](_0x92d5ee,_0x53a101)[_0x98ca('0xa')](function(_0x1673e3){logger[_0x98ca('0xb')](_0x98ca('0xc'),_0x3993a1,_0x98ca('0xd'));logger['debug'](_0x98ca('0xe'),_0x3993a1,_0x98ca('0xd'),JSON[_0x98ca('0xf')](_0x1673e3));if(_0x1673e3['error']){if(_0x1673e3[_0x98ca('0x10')][_0x98ca('0x11')]===0x1f4){logger[_0x98ca('0x10')](_0x98ca('0xc'),_0x3993a1,_0x1673e3[_0x98ca('0x10')][_0x98ca('0x12')]);return _0x3755e6(_0x1673e3['error'][_0x98ca('0x12')]);}logger['error'](_0x98ca('0xc'),_0x3993a1,_0x1673e3['error'][_0x98ca('0x12')]);return _0x39bcbf(_0x1673e3[_0x98ca('0x10')][_0x98ca('0x12')]);}else{logger[_0x98ca('0xb')](_0x98ca('0xc'),_0x3993a1,_0x98ca('0xd'));_0x39bcbf(_0x1673e3[_0x98ca('0x13')][_0x98ca('0x12')]);}})[_0x98ca('0x14')](function(_0x1d2e65){logger['error'](_0x98ca('0xc'),_0x3993a1,_0x1d2e65);_0x3755e6(_0x1d2e65);});});}exports['GetFreshdeskAccount']=function(_0x8f59e5){var _0x1dfe72=this;return new Promise(function(_0x112016,_0x3d6be7){return db[_0x98ca('0x15')][_0x98ca('0x16')]({'raw':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5['options'][_0x98ca('0x18')]===undefined?!![]:![]:!![],'where':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5[_0x98ca('0x17')][_0x98ca('0x19')]||null:null,'attributes':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5[_0x98ca('0x17')]['attributes']||null:null,'limit':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5[_0x98ca('0x17')][_0x98ca('0x1a')]||null:null,'include':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5['options']['include']?_[_0x98ca('0x1b')](_0x8f59e5[_0x98ca('0x17')][_0x98ca('0x1c')],function(_0x1e4557){return{'model':db[_0x1e4557['model']],'as':_0x1e4557['as'],'attributes':_0x1e4557[_0x98ca('0x1d')],'include':_0x1e4557[_0x98ca('0x1c')]?_[_0x98ca('0x1b')](_0x1e4557[_0x98ca('0x1c')],function(_0x26596e){return{'model':db[_0x26596e[_0x98ca('0x1e')]],'as':_0x26596e['as'],'attributes':_0x26596e[_0x98ca('0x1d')],'include':_0x26596e['include']?_[_0x98ca('0x1b')](_0x26596e['include'],function(_0x13f5c7){return{'model':db[_0x13f5c7['model']],'as':_0x13f5c7['as'],'attributes':_0x13f5c7['attributes']};}):[]};}):[]};}):[]:[]})[_0x98ca('0xa')](function(_0x47f0e5){logger['info'](_0x98ca('0x1f'),_0x8f59e5);logger[_0x98ca('0x20')](_0x98ca('0x1f'),_0x8f59e5,JSON[_0x98ca('0xf')](_0x47f0e5));_0x112016(_0x47f0e5);})[_0x98ca('0x14')](function(_0x21a05f){logger['error'](_0x98ca('0x1f'),_0x21a05f[_0x98ca('0x12')],_0x8f59e5);_0x3d6be7(_0x1dfe72['error'](0x1f4,_0x21a05f[_0x98ca('0x12')]));});});};exports[_0x98ca('0x21')]=function(_0x21f9ea){var _0x4c0f1e=this;return new Promise(function(_0x267770,_0x188515){return db['FreshdeskAccount']['find']({'raw':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea['options'][_0x98ca('0x18')]===undefined?!![]:![]:!![],'where':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea['options'][_0x98ca('0x19')]||null:null,'attributes':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea[_0x98ca('0x17')]['attributes']||null:null,'include':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea['options'][_0x98ca('0x1c')]?_[_0x98ca('0x1b')](_0x21f9ea[_0x98ca('0x17')][_0x98ca('0x1c')],function(_0x115b55){return{'model':db[_0x115b55[_0x98ca('0x1e')]],'as':_0x115b55['as'],'attributes':_0x115b55[_0x98ca('0x1d')],'include':_0x115b55['include']?_[_0x98ca('0x1b')](_0x115b55[_0x98ca('0x1c')],function(_0x49eca5){return{'model':db[_0x49eca5[_0x98ca('0x1e')]],'as':_0x49eca5['as'],'attributes':_0x49eca5[_0x98ca('0x1d')],'include':_0x49eca5[_0x98ca('0x1c')]?_[_0x98ca('0x1b')](_0x49eca5['include'],function(_0x49fa0e){return{'model':db[_0x49fa0e[_0x98ca('0x1e')]],'as':_0x49fa0e['as'],'attributes':_0x49fa0e[_0x98ca('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3848a3){logger[_0x98ca('0xb')](_0x98ca('0x21'),_0x21f9ea);logger[_0x98ca('0x20')](_0x98ca('0x21'),_0x21f9ea,JSON[_0x98ca('0xf')](_0x3848a3));_0x267770(_0x3848a3);})['catch'](function(_0x53eda7){logger[_0x98ca('0x10')]('ShowFreshdeskAccount',_0x53eda7[_0x98ca('0x12')],_0x21f9ea);_0x188515(_0x4c0f1e['error'](0x1f4,_0x53eda7[_0x98ca('0x12')]));});});};
\ No newline at end of file
+var _0x8630=['model','then','find','raw','ShowFreshdeskAccount','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','options','where','attributes','limit','include','map'];(function(_0x5976f8,_0x1265b7){var _0x179715=function(_0x2b2c4b){while(--_0x2b2c4b){_0x5976f8['push'](_0x5976f8['shift']());}};_0x179715(++_0x1265b7);}(_0x8630,0x177));var _0x0863=function(_0xf4fd0c,_0x24073f){_0xf4fd0c=_0xf4fd0c-0x0;var _0x3373ce=_0x8630[_0xf4fd0c];return _0x3373ce;};'use strict';var _=require(_0x0863('0x0'));var util=require(_0x0863('0x1'));var moment=require(_0x0863('0x2'));var BPromise=require(_0x0863('0x3'));var rs=require(_0x0863('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0863('0x5'));var logger=require(_0x0863('0x6'))(_0x0863('0x7'));var config=require(_0x0863('0x8'));var jayson=require(_0x0863('0x9'));var client=jayson[_0x0863('0xa')][_0x0863('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45aa04,_0x49caed,_0x3f1935){return new BPromise(function(_0x45e698,_0x584ea3){return client[_0x0863('0xc')](_0x45aa04,_0x3f1935)['then'](function(_0x34060d){logger[_0x0863('0xd')](_0x0863('0xe'),_0x49caed,'request\x20sent');logger[_0x0863('0xf')](_0x0863('0x10'),_0x49caed,_0x0863('0x11'),JSON[_0x0863('0x12')](_0x34060d));if(_0x34060d[_0x0863('0x13')]){if(_0x34060d['error'][_0x0863('0x14')]===0x1f4){logger[_0x0863('0x13')](_0x0863('0xe'),_0x49caed,_0x34060d[_0x0863('0x13')][_0x0863('0x15')]);return _0x584ea3(_0x34060d['error'][_0x0863('0x15')]);}logger[_0x0863('0x13')]('FreshdeskAccount,\x20%s,\x20%s',_0x49caed,_0x34060d[_0x0863('0x13')][_0x0863('0x15')]);return _0x45e698(_0x34060d[_0x0863('0x13')][_0x0863('0x15')]);}else{logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x49caed,_0x0863('0x11'));_0x45e698(_0x34060d[_0x0863('0x16')]['message']);}})[_0x0863('0x17')](function(_0x3b580b){logger[_0x0863('0x13')](_0x0863('0xe'),_0x49caed,_0x3b580b);_0x584ea3(_0x3b580b);});});}exports[_0x0863('0x18')]=function(_0x4aaadc){var _0x4ffe68=this;return new Promise(function(_0x5ca41b,_0x10c801){return db[_0x0863('0x19')]['findAll']({'raw':_0x4aaadc[_0x0863('0x1a')]?_0x4aaadc[_0x0863('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4aaadc['options']?_0x4aaadc[_0x0863('0x1a')][_0x0863('0x1b')]||null:null,'attributes':_0x4aaadc[_0x0863('0x1a')]?_0x4aaadc[_0x0863('0x1a')][_0x0863('0x1c')]||null:null,'limit':_0x4aaadc[_0x0863('0x1a')]?_0x4aaadc['options'][_0x0863('0x1d')]||null:null,'include':_0x4aaadc[_0x0863('0x1a')]?_0x4aaadc[_0x0863('0x1a')][_0x0863('0x1e')]?_[_0x0863('0x1f')](_0x4aaadc['options']['include'],function(_0x34f79c){return{'model':db[_0x34f79c[_0x0863('0x20')]],'as':_0x34f79c['as'],'attributes':_0x34f79c[_0x0863('0x1c')],'include':_0x34f79c['include']?_[_0x0863('0x1f')](_0x34f79c['include'],function(_0xef648f){return{'model':db[_0xef648f[_0x0863('0x20')]],'as':_0xef648f['as'],'attributes':_0xef648f[_0x0863('0x1c')],'include':_0xef648f['include']?_['map'](_0xef648f[_0x0863('0x1e')],function(_0xa6acf4){return{'model':db[_0xa6acf4[_0x0863('0x20')]],'as':_0xa6acf4['as'],'attributes':_0xa6acf4[_0x0863('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x0863('0x21')](function(_0x4384cb){logger[_0x0863('0xd')](_0x0863('0x18'),_0x4aaadc);logger[_0x0863('0xf')](_0x0863('0x18'),_0x4aaadc,JSON[_0x0863('0x12')](_0x4384cb));_0x5ca41b(_0x4384cb);})[_0x0863('0x17')](function(_0x291903){logger[_0x0863('0x13')](_0x0863('0x18'),_0x291903[_0x0863('0x15')],_0x4aaadc);_0x10c801(_0x4ffe68[_0x0863('0x13')](0x1f4,_0x291903['message']));});});};exports['ShowFreshdeskAccount']=function(_0x592b53){var _0x385079=this;return new Promise(function(_0x275a66,_0x443286){return db[_0x0863('0x19')][_0x0863('0x22')]({'raw':_0x592b53['options']?_0x592b53['options'][_0x0863('0x23')]===undefined?!![]:![]:!![],'where':_0x592b53[_0x0863('0x1a')]?_0x592b53['options']['where']||null:null,'attributes':_0x592b53[_0x0863('0x1a')]?_0x592b53['options']['attributes']||null:null,'include':_0x592b53[_0x0863('0x1a')]?_0x592b53['options'][_0x0863('0x1e')]?_[_0x0863('0x1f')](_0x592b53[_0x0863('0x1a')][_0x0863('0x1e')],function(_0x337737){return{'model':db[_0x337737[_0x0863('0x20')]],'as':_0x337737['as'],'attributes':_0x337737[_0x0863('0x1c')],'include':_0x337737['include']?_[_0x0863('0x1f')](_0x337737[_0x0863('0x1e')],function(_0xff18ba){return{'model':db[_0xff18ba[_0x0863('0x20')]],'as':_0xff18ba['as'],'attributes':_0xff18ba[_0x0863('0x1c')],'include':_0xff18ba[_0x0863('0x1e')]?_[_0x0863('0x1f')](_0xff18ba[_0x0863('0x1e')],function(_0x17222b){return{'model':db[_0x17222b[_0x0863('0x20')]],'as':_0x17222b['as'],'attributes':_0x17222b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x30a08a){logger['info'](_0x0863('0x24'),_0x592b53);logger[_0x0863('0xf')]('ShowFreshdeskAccount',_0x592b53,JSON[_0x0863('0x12')](_0x30a08a));_0x275a66(_0x30a08a);})['catch'](function(_0x52e817){logger[_0x0863('0x13')](_0x0863('0x24'),_0x52e817[_0x0863('0x15')],_0x592b53);_0x443286(_0x385079[_0x0863('0x13')](0x1f4,_0x52e817['message']));});});};
\ No newline at end of file
index e83915a..168f04a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69c0=['/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','create','setTags','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated'];(function(_0x527293,_0x57bde0){var _0x482d4e=function(_0x499cee){while(--_0x499cee){_0x527293['push'](_0x527293['shift']());}};_0x482d4e(++_0x57bde0);}(_0x69c0,0xef));var _0x069c=function(_0x52b37a,_0x100dee){_0x52b37a=_0x52b37a-0x0;var _0x2c1790=_0x69c0[_0x52b37a];return _0x2c1790;};'use strict';var multer=require(_0x069c('0x0'));var util=require(_0x069c('0x1'));var path=require(_0x069c('0x2'));var timeout=require(_0x069c('0x3'));var express=require(_0x069c('0x4'));var router=express[_0x069c('0x5')]();var fs_extra=require(_0x069c('0x6'));var auth=require(_0x069c('0x7'));var interaction=require(_0x069c('0x8'));var config=require(_0x069c('0x9'));var controller=require(_0x069c('0xa'));router[_0x069c('0xb')]('/',auth[_0x069c('0xc')](),controller['index']);router[_0x069c('0xb')](_0x069c('0xd'),auth[_0x069c('0xc')](),controller['show']);router[_0x069c('0xb')](_0x069c('0xe'),auth[_0x069c('0xc')](),controller[_0x069c('0xf')]);router['get'](_0x069c('0x10'),auth['isAuthenticated'](),controller[_0x069c('0x11')]);router[_0x069c('0xb')](_0x069c('0x12'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x069c('0xb')](_0x069c('0x13'),auth[_0x069c('0xc')](),controller[_0x069c('0x14')]);router[_0x069c('0x15')]('/',auth[_0x069c('0xc')](),controller[_0x069c('0x16')]);router[_0x069c('0x15')](_0x069c('0x13'),auth[_0x069c('0xc')](),controller[_0x069c('0x17')]);router[_0x069c('0x18')](_0x069c('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x069c('0x19')](_0x069c('0xd'),auth['isAuthenticated'](),controller[_0x069c('0x1a')]);module[_0x069c('0x1b')]=router;
\ No newline at end of file
+var _0xcb34=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getTags','create','post','/:id/tags','put','/:id','destroy','exports','multer','util','path'];(function(_0xcd0918,_0x56bdf9){var _0x250704=function(_0x56788e){while(--_0x56788e){_0xcd0918['push'](_0xcd0918['shift']());}};_0x250704(++_0x56bdf9);}(_0xcb34,0xd5));var _0x4cb3=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0xcb34[_0x39e283];return _0x7de89f;};'use strict';var multer=require(_0x4cb3('0x0'));var util=require(_0x4cb3('0x1'));var path=require(_0x4cb3('0x2'));var timeout=require(_0x4cb3('0x3'));var express=require(_0x4cb3('0x4'));var router=express[_0x4cb3('0x5')]();var fs_extra=require(_0x4cb3('0x6'));var auth=require(_0x4cb3('0x7'));var interaction=require(_0x4cb3('0x8'));var config=require(_0x4cb3('0x9'));var controller=require(_0x4cb3('0xa'));router['get']('/',auth[_0x4cb3('0xb')](),controller[_0x4cb3('0xc')]);router[_0x4cb3('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x4cb3('0xe')]);router[_0x4cb3('0xd')](_0x4cb3('0xf'),auth[_0x4cb3('0xb')](),controller['getFields']);router[_0x4cb3('0xd')](_0x4cb3('0x10'),auth[_0x4cb3('0xb')](),controller[_0x4cb3('0x11')]);router[_0x4cb3('0xd')](_0x4cb3('0x12'),auth[_0x4cb3('0xb')](),controller['getDescriptions']);router[_0x4cb3('0xd')]('/:id/tags',auth[_0x4cb3('0xb')](),controller[_0x4cb3('0x13')]);router['post']('/',auth[_0x4cb3('0xb')](),controller[_0x4cb3('0x14')]);router[_0x4cb3('0x15')](_0x4cb3('0x16'),auth[_0x4cb3('0xb')](),controller['setTags']);router[_0x4cb3('0x17')](_0x4cb3('0x18'),auth[_0x4cb3('0xb')](),controller['update']);router['delete'](_0x4cb3('0x18'),auth[_0x4cb3('0xb')](),controller[_0x4cb3('0x19')]);module[_0x4cb3('0x1a')]=router;
\ No newline at end of file
index a0968c8..475e5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9393=['exports','STRING','sequelize'];(function(_0x31fcd8,_0x1f65c6){var _0x2439f5=function(_0x323a7a){while(--_0x323a7a){_0x31fcd8['push'](_0x31fcd8['shift']());}};_0x2439f5(++_0x1f65c6);}(_0x9393,0x137));var _0x3939=function(_0x47e1b1,_0x47a7cc){_0x47e1b1=_0x47e1b1-0x0;var _0x105afd=_0x9393[_0x47e1b1];return _0x105afd;};'use strict';var Sequelize=require(_0x3939('0x0'));module[_0x3939('0x1')]={'name':{'type':Sequelize[_0x3939('0x2')]},'description':{'type':Sequelize[_0x3939('0x2')]}};
\ No newline at end of file
+var _0xd508=['STRING','sequelize'];(function(_0x4dab10,_0x4b3811){var _0x155bca=function(_0x15ebdc){while(--_0x15ebdc){_0x4dab10['push'](_0x4dab10['shift']());}};_0x155bca(++_0x4b3811);}(_0xd508,0x1cd));var _0x8d50=function(_0x36c46c,_0x5b8bcd){_0x36c46c=_0x36c46c-0x0;var _0x3c45f2=_0xd508[_0x36c46c];return _0x3c45f2;};'use strict';var Sequelize=require(_0x8d50('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8d50('0x1')]}};
\ No newline at end of file
index a40f3fb..e6898a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf245=['rows','catch','params','model','find','create','body','getFields','FreshdeskField','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','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','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','reject','save','update','then','error','name','index','FreshdeskConfiguration','rawAttributes','fieldName','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include'];(function(_0x47004b,_0x5be232){var _0x346ba8=function(_0x3da14e){while(--_0x3da14e){_0x47004b['push'](_0x47004b['shift']());}};_0x346ba8(++_0x5be232);}(_0xf245,0xab));var _0x5f24=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xf245[_0x87b0ff];return _0x3bc0b2;};'use strict';var emlformat=require(_0x5f24('0x0'));var rimraf=require(_0x5f24('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5f24('0x2'));var rp=require(_0x5f24('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5f24('0x4'));var util=require('util');var path=require(_0x5f24('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5f24('0x6'));var fs=require('fs');var fs_extra=require(_0x5f24('0x7'));var _=require(_0x5f24('0x8'));var squel=require(_0x5f24('0x9'));var crypto=require('crypto');var jsforce=require(_0x5f24('0xa'));var deskjs=require(_0x5f24('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5f24('0xc'));var Papa=require(_0x5f24('0xd'));var Redis=require(_0x5f24('0xe'));var authService=require(_0x5f24('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5f24('0x10'));var hardwareService=require(_0x5f24('0x11'));var logger=require(_0x5f24('0x12'))('api');var utils=require(_0x5f24('0x13'));var config=require(_0x5f24('0x14'));var licenseUtil=require(_0x5f24('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2218cd,_0x3af57d){_0x3af57d=_0x3af57d||0xcc;return function(_0x2fca96){if(_0x2fca96){return _0x2218cd[_0x5f24('0x16')](_0x3af57d);}return _0x2218cd['status'](_0x3af57d)[_0x5f24('0x17')]();};}function respondWithResult(_0xcf1f42,_0x54e4cc){_0x54e4cc=_0x54e4cc||0xc8;return function(_0x1cda73){if(_0x1cda73){return _0xcf1f42[_0x5f24('0x18')](_0x54e4cc)[_0x5f24('0x19')](_0x1cda73);}};}function respondWithFilteredResult(_0x1e446a,_0xfc8a18){return function(_0xfe36dd){if(_0xfe36dd){var _0x458823=typeof _0xfc8a18[_0x5f24('0x1a')]===_0x5f24('0x1b')&&typeof _0xfc8a18[_0x5f24('0x1c')]==='undefined';var _0xb6318a=_0xfe36dd['count'];var _0x17e01a=_0x458823?0x0:_0xfc8a18['offset'];var _0x4a7653=_0x458823?_0xfe36dd['count']:_0xfc8a18[_0x5f24('0x1a')]+_0xfc8a18['limit'];var _0xbb276e;if(_0x4a7653>=_0xb6318a){_0x4a7653=_0xb6318a;_0xbb276e=0xc8;}else{_0xbb276e=0xce;}_0x1e446a[_0x5f24('0x18')](_0xbb276e);return _0x1e446a[_0x5f24('0x1d')](_0x5f24('0x1e'),_0x17e01a+'-'+_0x4a7653+'/'+_0xb6318a)[_0x5f24('0x19')](_0xfe36dd);}return null;};}function patchUpdates(_0x2b5752){return function(_0x848224){try{jsonpatch['apply'](_0x848224,_0x2b5752,!![]);}catch(_0x598532){return BPromise[_0x5f24('0x1f')](_0x598532);}return _0x848224[_0x5f24('0x20')]();};}function saveUpdates(_0x51d82c,_0x23f917){return function(_0xe66f2b){if(_0xe66f2b){return _0xe66f2b[_0x5f24('0x21')](_0x51d82c)[_0x5f24('0x22')](function(_0x44ca71){return _0x44ca71;});}return null;};}function removeEntity(_0x156af2,_0x508d21){return function(_0x26c527){if(_0x26c527){return _0x26c527['destroy']()['then'](function(){_0x156af2[_0x5f24('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x562f32,_0x416f89){return function(_0x3c6b89){if(!_0x3c6b89){_0x562f32[_0x5f24('0x16')](0x194);}return _0x3c6b89;};}function handleError(_0x445ec8,_0x1b5373){_0x1b5373=_0x1b5373||0x1f4;return function(_0x525cae){logger[_0x5f24('0x23')](_0x525cae['stack']);if(_0x525cae[_0x5f24('0x24')]){delete _0x525cae[_0x5f24('0x24')];}_0x445ec8[_0x5f24('0x18')](_0x1b5373)['send'](_0x525cae);};}exports[_0x5f24('0x25')]=function(_0x47759c,_0x3c1381){var _0x2648d3={},_0x1b308b={},_0x5885c2={'count':0x0,'rows':[]};var _0x206e9e=_['map'](db[_0x5f24('0x26')][_0x5f24('0x27')],function(_0xaf4414){return{'name':_0xaf4414[_0x5f24('0x28')],'type':_0xaf4414['type']['key']};});_0x1b308b['model']=_[_0x5f24('0x29')](_0x206e9e,'name');_0x1b308b[_0x5f24('0x2a')]=_[_0x5f24('0x2b')](_0x47759c['query']);_0x1b308b['filters']=_[_0x5f24('0x2c')](_0x1b308b['model'],_0x1b308b[_0x5f24('0x2a')]);_0x2648d3['attributes']=_[_0x5f24('0x2c')](_0x1b308b['model'],qs[_0x5f24('0x2d')](_0x47759c[_0x5f24('0x2a')][_0x5f24('0x2d')]));_0x2648d3['attributes']=_0x2648d3[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x2648d3[_0x5f24('0x2e')]:_0x1b308b['model'];if(!_0x47759c['query'][_0x5f24('0x30')](_0x5f24('0x31'))){_0x2648d3[_0x5f24('0x1c')]=qs[_0x5f24('0x1c')](_0x47759c[_0x5f24('0x2a')]['limit']);_0x2648d3[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x47759c[_0x5f24('0x2a')][_0x5f24('0x1a')]);}_0x2648d3[_0x5f24('0x32')]=qs[_0x5f24('0x33')](_0x47759c[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x2648d3[_0x5f24('0x34')]=qs[_0x5f24('0x35')](_[_0x5f24('0x36')](_0x47759c[_0x5f24('0x2a')],_0x1b308b[_0x5f24('0x35')]),_0x206e9e);if(_0x47759c[_0x5f24('0x2a')][_0x5f24('0x37')]){_0x2648d3[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x2648d3[_0x5f24('0x34')],{'$or':_['map'](_0x206e9e,function(_0x1c3217){if(_0x1c3217[_0x5f24('0x39')]!==_0x5f24('0x3a')){var _0x469b15={};_0x469b15[_0x1c3217[_0x5f24('0x24')]]={'$like':'%'+_0x47759c[_0x5f24('0x2a')][_0x5f24('0x37')]+'%'};return _0x469b15;}})});}_0x2648d3=_[_0x5f24('0x38')]({},_0x2648d3,_0x47759c[_0x5f24('0x3b')]);var _0x31d867={'where':_0x2648d3[_0x5f24('0x34')]};return db[_0x5f24('0x26')][_0x5f24('0x3c')](_0x31d867)[_0x5f24('0x22')](function(_0x4690f6){_0x5885c2['count']=_0x4690f6;if(_0x47759c['query'][_0x5f24('0x3d')]){_0x2648d3[_0x5f24('0x3e')]=[{'all':!![]}];}return db['FreshdeskConfiguration']['findAll'](_0x2648d3);})['then'](function(_0x637209){_0x5885c2[_0x5f24('0x3f')]=_0x637209;return _0x5885c2;})[_0x5f24('0x22')](respondWithFilteredResult(_0x3c1381,_0x2648d3))[_0x5f24('0x40')](handleError(_0x3c1381,null));};exports['show']=function(_0x4df73b,_0x44749f){var _0x4400a9={'raw':![],'where':{'id':_0x4df73b[_0x5f24('0x41')]['id']}},_0x33354a={};_0x33354a['model']=_[_0x5f24('0x2b')](db[_0x5f24('0x26')][_0x5f24('0x27')]);_0x33354a['query']=_['keys'](_0x4df73b[_0x5f24('0x2a')]);_0x33354a[_0x5f24('0x35')]=_[_0x5f24('0x2c')](_0x33354a[_0x5f24('0x42')],_0x33354a[_0x5f24('0x2a')]);_0x4400a9[_0x5f24('0x2e')]=_[_0x5f24('0x2c')](_0x33354a['model'],qs[_0x5f24('0x2d')](_0x4df73b[_0x5f24('0x2a')]['fields']));_0x4400a9[_0x5f24('0x2e')]=_0x4400a9['attributes'][_0x5f24('0x2f')]?_0x4400a9[_0x5f24('0x2e')]:_0x33354a[_0x5f24('0x42')];if(_0x4df73b[_0x5f24('0x2a')][_0x5f24('0x3d')]){_0x4400a9[_0x5f24('0x3e')]=[{'all':!![]}];}_0x4400a9=_[_0x5f24('0x38')]({},_0x4400a9,_0x4df73b[_0x5f24('0x3b')]);return db[_0x5f24('0x26')][_0x5f24('0x43')](_0x4400a9)['then'](handleEntityNotFound(_0x44749f,null))[_0x5f24('0x22')](respondWithResult(_0x44749f,null))[_0x5f24('0x40')](handleError(_0x44749f,null));};exports[_0x5f24('0x44')]=function(_0x5508d2,_0x1e3ff1){return db[_0x5f24('0x26')][_0x5f24('0x44')](_0x5508d2['body'],{})[_0x5f24('0x22')](respondWithResult(_0x1e3ff1,0xc9))['catch'](handleError(_0x1e3ff1,null));};exports[_0x5f24('0x21')]=function(_0x4cfd6e,_0x18d2fc){if(_0x4cfd6e[_0x5f24('0x45')]['id']){delete _0x4cfd6e['body']['id'];}return db[_0x5f24('0x26')]['find']({'where':{'id':_0x4cfd6e['params']['id']}})['then'](handleEntityNotFound(_0x18d2fc,null))[_0x5f24('0x22')](saveUpdates(_0x4cfd6e[_0x5f24('0x45')],null))[_0x5f24('0x22')](respondWithResult(_0x18d2fc,null))[_0x5f24('0x40')](handleError(_0x18d2fc,null));};exports['destroy']=function(_0x5ad39c,_0x4fdec9){return db[_0x5f24('0x26')][_0x5f24('0x43')]({'where':{'id':_0x5ad39c[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x4fdec9,null))[_0x5f24('0x22')](removeEntity(_0x4fdec9,null))['catch'](handleError(_0x4fdec9,null));};exports[_0x5f24('0x46')]=function(_0x27349a,_0x344599,_0x2729a4){var _0x131b63={};var _0x487f72={};var _0x30045a;var _0x5ee7b6;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x27349a['params']['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x344599,null))[_0x5f24('0x22')](function(_0x1343f9){if(_0x1343f9){_0x30045a=_0x1343f9;_0x487f72['model']=_['keys'](db[_0x5f24('0x47')][_0x5f24('0x27')]);_0x487f72[_0x5f24('0x2a')]=_['keys'](_0x27349a[_0x5f24('0x2a')]);_0x487f72[_0x5f24('0x35')]=_['intersection'](_0x487f72['model'],_0x487f72['query']);_0x131b63[_0x5f24('0x2e')]=_[_0x5f24('0x2c')](_0x487f72[_0x5f24('0x42')],qs['fields'](_0x27349a['query'][_0x5f24('0x2d')]));_0x131b63[_0x5f24('0x2e')]=_0x131b63[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x131b63[_0x5f24('0x2e')]:_0x487f72[_0x5f24('0x42')];_0x131b63[_0x5f24('0x32')]=qs['sort'](_0x27349a[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x131b63[_0x5f24('0x34')]=qs[_0x5f24('0x35')](_['pick'](_0x27349a[_0x5f24('0x2a')],_0x487f72[_0x5f24('0x35')]));if(_0x27349a[_0x5f24('0x2a')][_0x5f24('0x37')]){_0x131b63['where']=_['merge'](_0x131b63['where'],{'$or':_[_0x5f24('0x29')](_0x131b63['attributes'],function(_0x11336d){var _0x3d7ed7={};_0x3d7ed7[_0x11336d]={'$like':'%'+_0x27349a[_0x5f24('0x2a')]['filter']+'%'};return _0x3d7ed7;})});}_0x131b63=_[_0x5f24('0x38')]({},_0x131b63,_0x27349a[_0x5f24('0x3b')]);return _0x30045a[_0x5f24('0x46')](_0x131b63);}})[_0x5f24('0x22')](function(_0x1c4de0){if(_0x1c4de0){_0x5ee7b6=_0x1c4de0[_0x5f24('0x2f')];if(!_0x27349a[_0x5f24('0x2a')]['hasOwnProperty'](_0x5f24('0x31'))){_0x131b63[_0x5f24('0x1c')]=qs[_0x5f24('0x1c')](_0x27349a[_0x5f24('0x2a')][_0x5f24('0x1c')]);_0x131b63[_0x5f24('0x1a')]=qs['offset'](_0x27349a[_0x5f24('0x2a')][_0x5f24('0x1a')]);}return _0x30045a[_0x5f24('0x46')](_0x131b63);}})['then'](function(_0x4b0fc1){if(_0x4b0fc1){return _0x4b0fc1?{'count':_0x5ee7b6,'rows':_0x4b0fc1}:null;}})[_0x5f24('0x22')](respondWithResult(_0x344599,null))[_0x5f24('0x40')](handleError(_0x344599,null));};exports[_0x5f24('0x48')]=function(_0x1c6f98,_0x643348,_0x98e44e){var _0x1f1466={};var _0x5e34f4={};var _0x3b54ff;var _0x5c0eff;return db['FreshdeskConfiguration'][_0x5f24('0x49')]({'where':{'id':_0x1c6f98['params']['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x643348,null))[_0x5f24('0x22')](function(_0x1d565f){if(_0x1d565f){_0x3b54ff=_0x1d565f;_0x5e34f4[_0x5f24('0x42')]=_[_0x5f24('0x2b')](db['FreshdeskField'][_0x5f24('0x27')]);_0x5e34f4[_0x5f24('0x2a')]=_[_0x5f24('0x2b')](_0x1c6f98[_0x5f24('0x2a')]);_0x5e34f4[_0x5f24('0x35')]=_['intersection'](_0x5e34f4['model'],_0x5e34f4['query']);_0x1f1466[_0x5f24('0x2e')]=_[_0x5f24('0x2c')](_0x5e34f4[_0x5f24('0x42')],qs['fields'](_0x1c6f98['query'][_0x5f24('0x2d')]));_0x1f1466['attributes']=_0x1f1466[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x1f1466[_0x5f24('0x2e')]:_0x5e34f4[_0x5f24('0x42')];_0x1f1466[_0x5f24('0x32')]=qs['sort'](_0x1c6f98[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x1f1466[_0x5f24('0x34')]=qs['filters'](_[_0x5f24('0x36')](_0x1c6f98[_0x5f24('0x2a')],_0x5e34f4[_0x5f24('0x35')]));if(_0x1c6f98['query'][_0x5f24('0x37')]){_0x1f1466[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x1f1466[_0x5f24('0x34')],{'$or':_['map'](_0x1f1466[_0x5f24('0x2e')],function(_0x52b5ea){var _0x19c813={};_0x19c813[_0x52b5ea]={'$like':'%'+_0x1c6f98[_0x5f24('0x2a')][_0x5f24('0x37')]+'%'};return _0x19c813;})});}_0x1f1466=_[_0x5f24('0x38')]({},_0x1f1466,_0x1c6f98['options']);return _0x3b54ff[_0x5f24('0x48')](_0x1f1466);}})[_0x5f24('0x22')](function(_0x30511d){if(_0x30511d){_0x5c0eff=_0x30511d['length'];if(!_0x1c6f98['query']['hasOwnProperty'](_0x5f24('0x31'))){_0x1f1466[_0x5f24('0x1c')]=qs[_0x5f24('0x1c')](_0x1c6f98['query']['limit']);_0x1f1466[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x1c6f98[_0x5f24('0x2a')]['offset']);}return _0x3b54ff[_0x5f24('0x48')](_0x1f1466);}})[_0x5f24('0x22')](function(_0x561f99){if(_0x561f99){return _0x561f99?{'count':_0x5c0eff,'rows':_0x561f99}:null;}})[_0x5f24('0x22')](respondWithResult(_0x643348,null))[_0x5f24('0x40')](handleError(_0x643348,null));};exports[_0x5f24('0x4a')]=function(_0x9d46b7,_0xb283a1,_0x48353d){var _0x324018={};var _0x2e5713={};var _0x2d1cb1;var _0x4fa2c3;return db['FreshdeskConfiguration'][_0x5f24('0x49')]({'where':{'id':_0x9d46b7[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0xb283a1,null))[_0x5f24('0x22')](function(_0x338cbe){if(_0x338cbe){_0x2d1cb1=_0x338cbe;_0x2e5713[_0x5f24('0x42')]=_[_0x5f24('0x2b')](db[_0x5f24('0x47')][_0x5f24('0x27')]);_0x2e5713['query']=_[_0x5f24('0x2b')](_0x9d46b7[_0x5f24('0x2a')]);_0x2e5713[_0x5f24('0x35')]=_[_0x5f24('0x2c')](_0x2e5713[_0x5f24('0x42')],_0x2e5713['query']);_0x324018['attributes']=_['intersection'](_0x2e5713[_0x5f24('0x42')],qs['fields'](_0x9d46b7[_0x5f24('0x2a')]['fields']));_0x324018[_0x5f24('0x2e')]=_0x324018[_0x5f24('0x2e')]['length']?_0x324018[_0x5f24('0x2e')]:_0x2e5713[_0x5f24('0x42')];_0x324018[_0x5f24('0x32')]=qs['sort'](_0x9d46b7['query'][_0x5f24('0x33')]);_0x324018[_0x5f24('0x34')]=qs[_0x5f24('0x35')](_[_0x5f24('0x36')](_0x9d46b7[_0x5f24('0x2a')],_0x2e5713[_0x5f24('0x35')]));if(_0x9d46b7[_0x5f24('0x2a')][_0x5f24('0x37')]){_0x324018[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x324018[_0x5f24('0x34')],{'$or':_[_0x5f24('0x29')](_0x324018[_0x5f24('0x2e')],function(_0x2eb651){var _0x15bbe8={};_0x15bbe8[_0x2eb651]={'$like':'%'+_0x9d46b7['query'][_0x5f24('0x37')]+'%'};return _0x15bbe8;})});}_0x324018=_[_0x5f24('0x38')]({},_0x324018,_0x9d46b7['options']);return _0x2d1cb1['getDescriptions'](_0x324018);}})[_0x5f24('0x22')](function(_0x3bff0d){if(_0x3bff0d){_0x4fa2c3=_0x3bff0d[_0x5f24('0x2f')];if(!_0x9d46b7[_0x5f24('0x2a')][_0x5f24('0x30')](_0x5f24('0x31'))){_0x324018['limit']=qs[_0x5f24('0x1c')](_0x9d46b7[_0x5f24('0x2a')]['limit']);_0x324018[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x9d46b7['query'][_0x5f24('0x1a')]);}return _0x2d1cb1[_0x5f24('0x4a')](_0x324018);}})[_0x5f24('0x22')](function(_0x3df139){if(_0x3df139){return _0x3df139?{'count':_0x4fa2c3,'rows':_0x3df139}:null;}})['then'](respondWithResult(_0xb283a1,null))[_0x5f24('0x40')](handleError(_0xb283a1,null));};exports[_0x5f24('0x4b')]=function(_0x202e9c,_0x27cd6c,_0x3616e8){var _0x1f4d83={};var _0x453d33={};var _0x167fe2;var _0x49ab72;return db[_0x5f24('0x26')][_0x5f24('0x49')]({'where':{'id':_0x202e9c[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x27cd6c,null))[_0x5f24('0x22')](function(_0x111697){if(_0x111697){_0x167fe2=_0x111697;_0x453d33[_0x5f24('0x42')]=_[_0x5f24('0x2b')](db[_0x5f24('0x4c')][_0x5f24('0x27')]);_0x453d33[_0x5f24('0x2a')]=_['keys'](_0x202e9c['query']);_0x453d33[_0x5f24('0x35')]=_[_0x5f24('0x2c')](_0x453d33[_0x5f24('0x42')],_0x453d33[_0x5f24('0x2a')]);_0x1f4d83[_0x5f24('0x2e')]=_['intersection'](_0x453d33[_0x5f24('0x42')],qs[_0x5f24('0x2d')](_0x202e9c['query'][_0x5f24('0x2d')]));_0x1f4d83[_0x5f24('0x2e')]=_0x1f4d83[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x1f4d83[_0x5f24('0x2e')]:_0x453d33[_0x5f24('0x42')];_0x1f4d83[_0x5f24('0x32')]=qs[_0x5f24('0x33')](_0x202e9c[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x1f4d83['where']=qs[_0x5f24('0x35')](_[_0x5f24('0x36')](_0x202e9c[_0x5f24('0x2a')],_0x453d33[_0x5f24('0x35')]));if(_0x202e9c['query'][_0x5f24('0x37')]){_0x1f4d83[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x1f4d83['where'],{'$or':_[_0x5f24('0x29')](_0x1f4d83[_0x5f24('0x2e')],function(_0x1d5209){var _0xf9b335={};_0xf9b335[_0x1d5209]={'$like':'%'+_0x202e9c['query'][_0x5f24('0x37')]+'%'};return _0xf9b335;})});}_0x1f4d83=_[_0x5f24('0x38')]({},_0x1f4d83,_0x202e9c[_0x5f24('0x3b')]);return _0x167fe2[_0x5f24('0x4b')](_0x1f4d83);}})['then'](function(_0x245462){if(_0x245462){_0x49ab72=_0x245462[_0x5f24('0x2f')];if(!_0x202e9c[_0x5f24('0x2a')][_0x5f24('0x30')]('nolimit')){_0x1f4d83[_0x5f24('0x1c')]=qs['limit'](_0x202e9c['query']['limit']);_0x1f4d83[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x202e9c[_0x5f24('0x2a')][_0x5f24('0x1a')]);}return _0x167fe2[_0x5f24('0x4b')](_0x1f4d83);}})[_0x5f24('0x22')](function(_0x531d09){if(_0x531d09){return _0x531d09?{'count':_0x49ab72,'rows':_0x531d09}:null;}})[_0x5f24('0x22')](respondWithResult(_0x27cd6c,null))[_0x5f24('0x40')](handleError(_0x27cd6c,null));};exports['setTags']=function(_0x473669,_0x4684dc,_0x1a757f){if(_0x473669[_0x5f24('0x45')]['id']){delete _0x473669['body']['id'];}return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x473669[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x4684dc,null))[_0x5f24('0x22')](function(_0x53858f){if(_0x53858f){return _0x53858f[_0x5f24('0x4d')](_0x473669[_0x5f24('0x45')]['ids']||[]);}return null;})['then'](respondWithResult(_0x4684dc,null))['catch'](handleError(_0x4684dc,null));};
\ No newline at end of file
+var _0xb03f=['reject','save','update','name','send','FreshdeskConfiguration','rawAttributes','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','destroy','FreshdeskField','pick','getFields','nolimit','getSubjects','findOne','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0xb03f,0x167));var _0xfb03=function(_0x4de1c3,_0xbe77b9){_0x4de1c3=_0x4de1c3-0x0;var _0x26acfe=_0xb03f[_0x4de1c3];return _0x26acfe;};'use strict';var emlformat=require(_0xfb03('0x0'));var rimraf=require(_0xfb03('0x1'));var zipdir=require(_0xfb03('0x2'));var jsonpatch=require(_0xfb03('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfb03('0x4'));var Mustache=require(_0xfb03('0x5'));var util=require(_0xfb03('0x6'));var path=require(_0xfb03('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfb03('0x8'));var _=require(_0xfb03('0x9'));var squel=require(_0xfb03('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfb03('0xb'));var toCsv=require(_0xfb03('0xc'));var querystring=require(_0xfb03('0xd'));var Papa=require(_0xfb03('0xe'));var Redis=require(_0xfb03('0xf'));var authService=require(_0xfb03('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfb03('0x11'));var logger=require('../../config/logger')(_0xfb03('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfb03('0x13'));var db=require(_0xfb03('0x14'))['db'];function respondWithStatusCode(_0x497962,_0x48b628){_0x48b628=_0x48b628||0xcc;return function(_0x171d45){if(_0x171d45){return _0x497962[_0xfb03('0x15')](_0x48b628);}return _0x497962[_0xfb03('0x16')](_0x48b628)[_0xfb03('0x17')]();};}function respondWithResult(_0x17b203,_0x2fbe28){_0x2fbe28=_0x2fbe28||0xc8;return function(_0x179ea4){if(_0x179ea4){return _0x17b203[_0xfb03('0x16')](_0x2fbe28)[_0xfb03('0x18')](_0x179ea4);}};}function respondWithFilteredResult(_0x1e666d,_0x3379a6){return function(_0x46072d){if(_0x46072d){var _0x32a3e4=typeof _0x3379a6[_0xfb03('0x19')]===_0xfb03('0x1a')&&typeof _0x3379a6['limit']===_0xfb03('0x1a');var _0x48ac8b=_0x46072d[_0xfb03('0x1b')];var _0x38955e=_0x32a3e4?0x0:_0x3379a6[_0xfb03('0x19')];var _0x313d2d=_0x32a3e4?_0x46072d[_0xfb03('0x1b')]:_0x3379a6['offset']+_0x3379a6[_0xfb03('0x1c')];var _0x2ebfbe;if(_0x313d2d>=_0x48ac8b){_0x313d2d=_0x48ac8b;_0x2ebfbe=0xc8;}else{_0x2ebfbe=0xce;}_0x1e666d['status'](_0x2ebfbe);return _0x1e666d[_0xfb03('0x1d')](_0xfb03('0x1e'),_0x38955e+'-'+_0x313d2d+'/'+_0x48ac8b)[_0xfb03('0x18')](_0x46072d);}return null;};}function patchUpdates(_0x2a6e30){return function(_0x3e0e29){try{jsonpatch['apply'](_0x3e0e29,_0x2a6e30,!![]);}catch(_0x1d719b){return BPromise[_0xfb03('0x1f')](_0x1d719b);}return _0x3e0e29[_0xfb03('0x20')]();};}function saveUpdates(_0x2ce9de,_0x4d9bea){return function(_0x16ed25){if(_0x16ed25){return _0x16ed25[_0xfb03('0x21')](_0x2ce9de)['then'](function(_0x4f39b9){return _0x4f39b9;});}return null;};}function removeEntity(_0x1b5206,_0x40b05a){return function(_0x1462a7){if(_0x1462a7){return _0x1462a7['destroy']()['then'](function(){_0x1b5206[_0xfb03('0x16')](0xcc)[_0xfb03('0x17')]();});}};}function handleEntityNotFound(_0x154f41,_0x1ee3bd){return function(_0x512157){if(!_0x512157){_0x154f41[_0xfb03('0x15')](0x194);}return _0x512157;};}function handleError(_0x1ed8da,_0x4ea1a0){_0x4ea1a0=_0x4ea1a0||0x1f4;return function(_0x4a205f){logger['error'](_0x4a205f['stack']);if(_0x4a205f[_0xfb03('0x22')]){delete _0x4a205f[_0xfb03('0x22')];}_0x1ed8da[_0xfb03('0x16')](_0x4ea1a0)[_0xfb03('0x23')](_0x4a205f);};}exports['index']=function(_0x3619c2,_0xf5fa14){var _0x547422={},_0x181587={},_0x27e5b1={'count':0x0,'rows':[]};var _0x3ddacc=_['map'](db[_0xfb03('0x24')][_0xfb03('0x25')],function(_0x76d55e){return{'name':_0x76d55e['fieldName'],'type':_0x76d55e[_0xfb03('0x26')][_0xfb03('0x27')]};});_0x181587[_0xfb03('0x28')]=_[_0xfb03('0x29')](_0x3ddacc,_0xfb03('0x22'));_0x181587[_0xfb03('0x2a')]=_[_0xfb03('0x2b')](_0x3619c2[_0xfb03('0x2a')]);_0x181587['filters']=_[_0xfb03('0x2c')](_0x181587[_0xfb03('0x28')],_0x181587[_0xfb03('0x2a')]);_0x547422[_0xfb03('0x2d')]=_[_0xfb03('0x2c')](_0x181587['model'],qs[_0xfb03('0x2e')](_0x3619c2['query'][_0xfb03('0x2e')]));_0x547422[_0xfb03('0x2d')]=_0x547422['attributes']['length']?_0x547422[_0xfb03('0x2d')]:_0x181587['model'];if(!_0x3619c2[_0xfb03('0x2a')][_0xfb03('0x2f')]('nolimit')){_0x547422[_0xfb03('0x1c')]=qs[_0xfb03('0x1c')](_0x3619c2[_0xfb03('0x2a')][_0xfb03('0x1c')]);_0x547422[_0xfb03('0x19')]=qs[_0xfb03('0x19')](_0x3619c2['query'][_0xfb03('0x19')]);}_0x547422[_0xfb03('0x30')]=qs['sort'](_0x3619c2[_0xfb03('0x2a')][_0xfb03('0x31')]);_0x547422[_0xfb03('0x32')]=qs[_0xfb03('0x33')](_['pick'](_0x3619c2['query'],_0x181587[_0xfb03('0x33')]),_0x3ddacc);if(_0x3619c2[_0xfb03('0x2a')][_0xfb03('0x34')]){_0x547422[_0xfb03('0x32')]=_[_0xfb03('0x35')](_0x547422[_0xfb03('0x32')],{'$or':_[_0xfb03('0x29')](_0x3ddacc,function(_0x30a608){if(_0x30a608['type']!==_0xfb03('0x36')){var _0x293d42={};_0x293d42[_0x30a608[_0xfb03('0x22')]]={'$like':'%'+_0x3619c2[_0xfb03('0x2a')]['filter']+'%'};return _0x293d42;}})});}_0x547422=_['merge']({},_0x547422,_0x3619c2[_0xfb03('0x37')]);var _0x1e7bc3={'where':_0x547422[_0xfb03('0x32')]};return db[_0xfb03('0x24')][_0xfb03('0x1b')](_0x1e7bc3)[_0xfb03('0x38')](function(_0x6bd176){_0x27e5b1['count']=_0x6bd176;if(_0x3619c2[_0xfb03('0x2a')][_0xfb03('0x39')]){_0x547422[_0xfb03('0x3a')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0xfb03('0x3b')](_0x547422);})[_0xfb03('0x38')](function(_0x2279a5){_0x27e5b1[_0xfb03('0x3c')]=_0x2279a5;return _0x27e5b1;})[_0xfb03('0x38')](respondWithFilteredResult(_0xf5fa14,_0x547422))[_0xfb03('0x3d')](handleError(_0xf5fa14,null));};exports[_0xfb03('0x3e')]=function(_0x1bd930,_0x413f80){var _0x5e3dd2={'raw':![],'where':{'id':_0x1bd930[_0xfb03('0x3f')]['id']}},_0x54af57={};_0x54af57[_0xfb03('0x28')]=_['keys'](db[_0xfb03('0x24')][_0xfb03('0x25')]);_0x54af57[_0xfb03('0x2a')]=_[_0xfb03('0x2b')](_0x1bd930[_0xfb03('0x2a')]);_0x54af57[_0xfb03('0x33')]=_[_0xfb03('0x2c')](_0x54af57[_0xfb03('0x28')],_0x54af57[_0xfb03('0x2a')]);_0x5e3dd2[_0xfb03('0x2d')]=_['intersection'](_0x54af57['model'],qs[_0xfb03('0x2e')](_0x1bd930[_0xfb03('0x2a')][_0xfb03('0x2e')]));_0x5e3dd2[_0xfb03('0x2d')]=_0x5e3dd2[_0xfb03('0x2d')][_0xfb03('0x40')]?_0x5e3dd2['attributes']:_0x54af57[_0xfb03('0x28')];if(_0x1bd930['query'][_0xfb03('0x39')]){_0x5e3dd2['include']=[{'all':!![]}];}_0x5e3dd2=_[_0xfb03('0x35')]({},_0x5e3dd2,_0x1bd930[_0xfb03('0x37')]);return db[_0xfb03('0x24')][_0xfb03('0x41')](_0x5e3dd2)[_0xfb03('0x38')](handleEntityNotFound(_0x413f80,null))[_0xfb03('0x38')](respondWithResult(_0x413f80,null))['catch'](handleError(_0x413f80,null));};exports[_0xfb03('0x42')]=function(_0x4ac9f8,_0x567d69){return db[_0xfb03('0x24')][_0xfb03('0x42')](_0x4ac9f8[_0xfb03('0x43')],{})['then'](respondWithResult(_0x567d69,0xc9))['catch'](handleError(_0x567d69,null));};exports[_0xfb03('0x21')]=function(_0x3a1579,_0x51ef2a){if(_0x3a1579[_0xfb03('0x43')]['id']){delete _0x3a1579[_0xfb03('0x43')]['id'];}return db[_0xfb03('0x24')][_0xfb03('0x41')]({'where':{'id':_0x3a1579[_0xfb03('0x3f')]['id']}})[_0xfb03('0x38')](handleEntityNotFound(_0x51ef2a,null))['then'](saveUpdates(_0x3a1579['body'],null))['then'](respondWithResult(_0x51ef2a,null))[_0xfb03('0x3d')](handleError(_0x51ef2a,null));};exports[_0xfb03('0x44')]=function(_0x377bc7,_0x544bb9){return db['FreshdeskConfiguration']['find']({'where':{'id':_0x377bc7[_0xfb03('0x3f')]['id']}})[_0xfb03('0x38')](handleEntityNotFound(_0x544bb9,null))[_0xfb03('0x38')](removeEntity(_0x544bb9,null))[_0xfb03('0x3d')](handleError(_0x544bb9,null));};exports['getFields']=function(_0x2e7c3a,_0x152f3a,_0x56fceb){var _0x52bede={};var _0x34cac7={};var _0x41e3da;var _0x5ec5e7;return db[_0xfb03('0x24')]['findOne']({'where':{'id':_0x2e7c3a[_0xfb03('0x3f')]['id']}})[_0xfb03('0x38')](handleEntityNotFound(_0x152f3a,null))[_0xfb03('0x38')](function(_0x5ea28f){if(_0x5ea28f){_0x41e3da=_0x5ea28f;_0x34cac7[_0xfb03('0x28')]=_['keys'](db[_0xfb03('0x45')][_0xfb03('0x25')]);_0x34cac7[_0xfb03('0x2a')]=_['keys'](_0x2e7c3a['query']);_0x34cac7[_0xfb03('0x33')]=_[_0xfb03('0x2c')](_0x34cac7[_0xfb03('0x28')],_0x34cac7[_0xfb03('0x2a')]);_0x52bede[_0xfb03('0x2d')]=_[_0xfb03('0x2c')](_0x34cac7['model'],qs['fields'](_0x2e7c3a[_0xfb03('0x2a')][_0xfb03('0x2e')]));_0x52bede[_0xfb03('0x2d')]=_0x52bede[_0xfb03('0x2d')]['length']?_0x52bede['attributes']:_0x34cac7['model'];_0x52bede[_0xfb03('0x30')]=qs[_0xfb03('0x31')](_0x2e7c3a[_0xfb03('0x2a')][_0xfb03('0x31')]);_0x52bede[_0xfb03('0x32')]=qs['filters'](_[_0xfb03('0x46')](_0x2e7c3a['query'],_0x34cac7[_0xfb03('0x33')]));if(_0x2e7c3a[_0xfb03('0x2a')][_0xfb03('0x34')]){_0x52bede[_0xfb03('0x32')]=_[_0xfb03('0x35')](_0x52bede[_0xfb03('0x32')],{'$or':_[_0xfb03('0x29')](_0x52bede['attributes'],function(_0x189be6){var _0x2fe182={};_0x2fe182[_0x189be6]={'$like':'%'+_0x2e7c3a[_0xfb03('0x2a')]['filter']+'%'};return _0x2fe182;})});}_0x52bede=_['merge']({},_0x52bede,_0x2e7c3a[_0xfb03('0x37')]);return _0x41e3da[_0xfb03('0x47')](_0x52bede);}})[_0xfb03('0x38')](function(_0x5c7ed8){if(_0x5c7ed8){_0x5ec5e7=_0x5c7ed8['length'];if(!_0x2e7c3a['query'][_0xfb03('0x2f')](_0xfb03('0x48'))){_0x52bede[_0xfb03('0x1c')]=qs[_0xfb03('0x1c')](_0x2e7c3a['query'][_0xfb03('0x1c')]);_0x52bede['offset']=qs[_0xfb03('0x19')](_0x2e7c3a[_0xfb03('0x2a')][_0xfb03('0x19')]);}return _0x41e3da[_0xfb03('0x47')](_0x52bede);}})[_0xfb03('0x38')](function(_0x5893cd){if(_0x5893cd){return _0x5893cd?{'count':_0x5ec5e7,'rows':_0x5893cd}:null;}})[_0xfb03('0x38')](respondWithResult(_0x152f3a,null))[_0xfb03('0x3d')](handleError(_0x152f3a,null));};exports[_0xfb03('0x49')]=function(_0x325258,_0x177bce,_0x4d1c45){var _0x149e13={};var _0x3a63f7={};var _0x3ef99e;var _0x5afca7;return db[_0xfb03('0x24')][_0xfb03('0x4a')]({'where':{'id':_0x325258[_0xfb03('0x3f')]['id']}})[_0xfb03('0x38')](handleEntityNotFound(_0x177bce,null))['then'](function(_0x4bd818){if(_0x4bd818){_0x3ef99e=_0x4bd818;_0x3a63f7[_0xfb03('0x28')]=_[_0xfb03('0x2b')](db['FreshdeskField'][_0xfb03('0x25')]);_0x3a63f7['query']=_[_0xfb03('0x2b')](_0x325258[_0xfb03('0x2a')]);_0x3a63f7[_0xfb03('0x33')]=_[_0xfb03('0x2c')](_0x3a63f7[_0xfb03('0x28')],_0x3a63f7[_0xfb03('0x2a')]);_0x149e13['attributes']=_['intersection'](_0x3a63f7[_0xfb03('0x28')],qs['fields'](_0x325258['query']['fields']));_0x149e13['attributes']=_0x149e13[_0xfb03('0x2d')]['length']?_0x149e13[_0xfb03('0x2d')]:_0x3a63f7[_0xfb03('0x28')];_0x149e13[_0xfb03('0x30')]=qs[_0xfb03('0x31')](_0x325258[_0xfb03('0x2a')][_0xfb03('0x31')]);_0x149e13[_0xfb03('0x32')]=qs[_0xfb03('0x33')](_[_0xfb03('0x46')](_0x325258[_0xfb03('0x2a')],_0x3a63f7['filters']));if(_0x325258[_0xfb03('0x2a')][_0xfb03('0x34')]){_0x149e13[_0xfb03('0x32')]=_[_0xfb03('0x35')](_0x149e13['where'],{'$or':_[_0xfb03('0x29')](_0x149e13['attributes'],function(_0x381c96){var _0x1fac49={};_0x1fac49[_0x381c96]={'$like':'%'+_0x325258['query'][_0xfb03('0x34')]+'%'};return _0x1fac49;})});}_0x149e13=_[_0xfb03('0x35')]({},_0x149e13,_0x325258[_0xfb03('0x37')]);return _0x3ef99e[_0xfb03('0x49')](_0x149e13);}})[_0xfb03('0x38')](function(_0x4b05d8){if(_0x4b05d8){_0x5afca7=_0x4b05d8[_0xfb03('0x40')];if(!_0x325258[_0xfb03('0x2a')][_0xfb03('0x2f')]('nolimit')){_0x149e13[_0xfb03('0x1c')]=qs[_0xfb03('0x1c')](_0x325258[_0xfb03('0x2a')]['limit']);_0x149e13[_0xfb03('0x19')]=qs[_0xfb03('0x19')](_0x325258['query'][_0xfb03('0x19')]);}return _0x3ef99e[_0xfb03('0x49')](_0x149e13);}})[_0xfb03('0x38')](function(_0x26a243){if(_0x26a243){return _0x26a243?{'count':_0x5afca7,'rows':_0x26a243}:null;}})[_0xfb03('0x38')](respondWithResult(_0x177bce,null))[_0xfb03('0x3d')](handleError(_0x177bce,null));};exports['getDescriptions']=function(_0x37b29b,_0x173802,_0x5a9900){var _0x3c90f6={};var _0x406d16={};var _0x180967;var _0x2ef7e9;return db[_0xfb03('0x24')][_0xfb03('0x4a')]({'where':{'id':_0x37b29b['params']['id']}})['then'](handleEntityNotFound(_0x173802,null))[_0xfb03('0x38')](function(_0x442af2){if(_0x442af2){_0x180967=_0x442af2;_0x406d16[_0xfb03('0x28')]=_[_0xfb03('0x2b')](db['FreshdeskField'][_0xfb03('0x25')]);_0x406d16[_0xfb03('0x2a')]=_[_0xfb03('0x2b')](_0x37b29b[_0xfb03('0x2a')]);_0x406d16[_0xfb03('0x33')]=_['intersection'](_0x406d16[_0xfb03('0x28')],_0x406d16[_0xfb03('0x2a')]);_0x3c90f6['attributes']=_[_0xfb03('0x2c')](_0x406d16['model'],qs[_0xfb03('0x2e')](_0x37b29b[_0xfb03('0x2a')][_0xfb03('0x2e')]));_0x3c90f6[_0xfb03('0x2d')]=_0x3c90f6[_0xfb03('0x2d')][_0xfb03('0x40')]?_0x3c90f6[_0xfb03('0x2d')]:_0x406d16[_0xfb03('0x28')];_0x3c90f6[_0xfb03('0x30')]=qs[_0xfb03('0x31')](_0x37b29b[_0xfb03('0x2a')][_0xfb03('0x31')]);_0x3c90f6[_0xfb03('0x32')]=qs[_0xfb03('0x33')](_[_0xfb03('0x46')](_0x37b29b['query'],_0x406d16[_0xfb03('0x33')]));if(_0x37b29b[_0xfb03('0x2a')][_0xfb03('0x34')]){_0x3c90f6[_0xfb03('0x32')]=_[_0xfb03('0x35')](_0x3c90f6[_0xfb03('0x32')],{'$or':_[_0xfb03('0x29')](_0x3c90f6[_0xfb03('0x2d')],function(_0x393200){var _0x4f1db7={};_0x4f1db7[_0x393200]={'$like':'%'+_0x37b29b[_0xfb03('0x2a')]['filter']+'%'};return _0x4f1db7;})});}_0x3c90f6=_['merge']({},_0x3c90f6,_0x37b29b[_0xfb03('0x37')]);return _0x180967[_0xfb03('0x4b')](_0x3c90f6);}})[_0xfb03('0x38')](function(_0x30fc8e){if(_0x30fc8e){_0x2ef7e9=_0x30fc8e[_0xfb03('0x40')];if(!_0x37b29b['query'][_0xfb03('0x2f')](_0xfb03('0x48'))){_0x3c90f6['limit']=qs[_0xfb03('0x1c')](_0x37b29b[_0xfb03('0x2a')][_0xfb03('0x1c')]);_0x3c90f6[_0xfb03('0x19')]=qs['offset'](_0x37b29b['query'][_0xfb03('0x19')]);}return _0x180967[_0xfb03('0x4b')](_0x3c90f6);}})[_0xfb03('0x38')](function(_0x46741b){if(_0x46741b){return _0x46741b?{'count':_0x2ef7e9,'rows':_0x46741b}:null;}})[_0xfb03('0x38')](respondWithResult(_0x173802,null))[_0xfb03('0x3d')](handleError(_0x173802,null));};exports[_0xfb03('0x4c')]=function(_0x422f4f,_0x134951,_0x53f983){var _0x3fbfe7={};var _0x3ac0db={};var _0x548918;var _0x3f6366;return db[_0xfb03('0x24')]['findOne']({'where':{'id':_0x422f4f[_0xfb03('0x3f')]['id']}})[_0xfb03('0x38')](handleEntityNotFound(_0x134951,null))[_0xfb03('0x38')](function(_0x1077e1){if(_0x1077e1){_0x548918=_0x1077e1;_0x3ac0db[_0xfb03('0x28')]=_[_0xfb03('0x2b')](db['Tag'][_0xfb03('0x25')]);_0x3ac0db['query']=_[_0xfb03('0x2b')](_0x422f4f[_0xfb03('0x2a')]);_0x3ac0db['filters']=_[_0xfb03('0x2c')](_0x3ac0db['model'],_0x3ac0db['query']);_0x3fbfe7[_0xfb03('0x2d')]=_[_0xfb03('0x2c')](_0x3ac0db[_0xfb03('0x28')],qs[_0xfb03('0x2e')](_0x422f4f['query'][_0xfb03('0x2e')]));_0x3fbfe7[_0xfb03('0x2d')]=_0x3fbfe7[_0xfb03('0x2d')][_0xfb03('0x40')]?_0x3fbfe7[_0xfb03('0x2d')]:_0x3ac0db['model'];_0x3fbfe7[_0xfb03('0x30')]=qs[_0xfb03('0x31')](_0x422f4f[_0xfb03('0x2a')][_0xfb03('0x31')]);_0x3fbfe7[_0xfb03('0x32')]=qs[_0xfb03('0x33')](_[_0xfb03('0x46')](_0x422f4f['query'],_0x3ac0db[_0xfb03('0x33')]));if(_0x422f4f[_0xfb03('0x2a')]['filter']){_0x3fbfe7[_0xfb03('0x32')]=_[_0xfb03('0x35')](_0x3fbfe7[_0xfb03('0x32')],{'$or':_[_0xfb03('0x29')](_0x3fbfe7[_0xfb03('0x2d')],function(_0x223441){var _0x1e89cf={};_0x1e89cf[_0x223441]={'$like':'%'+_0x422f4f[_0xfb03('0x2a')][_0xfb03('0x34')]+'%'};return _0x1e89cf;})});}_0x3fbfe7=_[_0xfb03('0x35')]({},_0x3fbfe7,_0x422f4f['options']);return _0x548918[_0xfb03('0x4c')](_0x3fbfe7);}})['then'](function(_0x54a836){if(_0x54a836){_0x3f6366=_0x54a836[_0xfb03('0x40')];if(!_0x422f4f[_0xfb03('0x2a')]['hasOwnProperty'](_0xfb03('0x48'))){_0x3fbfe7[_0xfb03('0x1c')]=qs[_0xfb03('0x1c')](_0x422f4f[_0xfb03('0x2a')][_0xfb03('0x1c')]);_0x3fbfe7[_0xfb03('0x19')]=qs[_0xfb03('0x19')](_0x422f4f[_0xfb03('0x2a')][_0xfb03('0x19')]);}return _0x548918[_0xfb03('0x4c')](_0x3fbfe7);}})[_0xfb03('0x38')](function(_0x35104a){if(_0x35104a){return _0x35104a?{'count':_0x3f6366,'rows':_0x35104a}:null;}})[_0xfb03('0x38')](respondWithResult(_0x134951,null))['catch'](handleError(_0x134951,null));};exports[_0xfb03('0x4d')]=function(_0x46e649,_0x46ce75,_0x28fac2){if(_0x46e649[_0xfb03('0x43')]['id']){delete _0x46e649[_0xfb03('0x43')]['id'];}return db[_0xfb03('0x24')][_0xfb03('0x4a')]({'where':{'id':_0x46e649[_0xfb03('0x3f')]['id']}})[_0xfb03('0x38')](handleEntityNotFound(_0x46ce75,null))['then'](function(_0x39ad59){if(_0x39ad59){return _0x39ad59['setTags'](_0x46e649[_0xfb03('0x43')]['ids']||[]);}return null;})[_0xfb03('0x38')](respondWithResult(_0x46ce75,null))[_0xfb03('0x3d')](handleError(_0x46ce75,null));};
\ No newline at end of file
index 29bbb3d..c86323d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9a7=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','FreshdeskConfiguration','int_freshdesk_configurations'];(function(_0x3a0a22,_0x184628){var _0x56fff4=function(_0x2de863){while(--_0x2de863){_0x3a0a22['push'](_0x3a0a22['shift']());}};_0x56fff4(++_0x184628);}(_0xf9a7,0x152));var _0x7f9a=function(_0x1c0bf6,_0x4ee3bd){_0x1c0bf6=_0x1c0bf6-0x0;var _0x25cfde=_0xf9a7[_0x1c0bf6];return _0x25cfde;};'use strict';var _=require('lodash');var util=require(_0x7f9a('0x0'));var logger=require(_0x7f9a('0x1'))(_0x7f9a('0x2'));var moment=require(_0x7f9a('0x3'));var BPromise=require(_0x7f9a('0x4'));var rp=require(_0x7f9a('0x5'));var fs=require('fs');var path=require(_0x7f9a('0x6'));var rimraf=require(_0x7f9a('0x7'));var config=require(_0x7f9a('0x8'));var attributes=require(_0x7f9a('0x9'));module[_0x7f9a('0xa')]=function(_0x5b45bc,_0x5965ff){return _0x5b45bc['define'](_0x7f9a('0xb'),attributes,{'tableName':_0x7f9a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1393=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration'];(function(_0xa4c921,_0x4f9170){var _0x5ad7ee=function(_0x184eff){while(--_0x184eff){_0xa4c921['push'](_0xa4c921['shift']());}};_0x5ad7ee(++_0x4f9170);}(_0x1393,0xdd));var _0x3139=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x1393[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x3139('0x0'));var util=require(_0x3139('0x1'));var logger=require(_0x3139('0x2'))(_0x3139('0x3'));var moment=require('moment');var BPromise=require(_0x3139('0x4'));var rp=require(_0x3139('0x5'));var fs=require('fs');var path=require(_0x3139('0x6'));var rimraf=require(_0x3139('0x7'));var config=require(_0x3139('0x8'));var attributes=require(_0x3139('0x9'));module[_0x3139('0xa')]=function(_0x4a3ba9,_0x180ddd){return _0x4a3ba9[_0x3139('0xb')](_0x3139('0xc'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 27674d1..38ba558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf53b=['randomstring','../../config/logger','../../config/environment','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','catch','moment','bluebird'];(function(_0x4e4b44,_0x47da36){var _0x339077=function(_0x4f3cb2){while(--_0x4f3cb2){_0x4e4b44['push'](_0x4e4b44['shift']());}};_0x339077(++_0x47da36);}(_0xf53b,0x152));var _0xbf53=function(_0x547f26,_0x51e4c1){_0x547f26=_0x547f26-0x0;var _0x39af3a=_0xf53b[_0x547f26];return _0x39af3a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbf53('0x0'));var BPromise=require(_0xbf53('0x1'));var rs=require(_0xbf53('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf53('0x3'))('rpc');var config=require(_0xbf53('0x4'));var jayson=require(_0xbf53('0x5'));var client=jayson[_0xbf53('0x6')][_0xbf53('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2cb0e0,_0x1a96a4,_0x56f68a){return new BPromise(function(_0x24de3a,_0x11e161){return client[_0xbf53('0x8')](_0x2cb0e0,_0x56f68a)[_0xbf53('0x9')](function(_0x32181d){logger[_0xbf53('0xa')](_0xbf53('0xb'),_0x1a96a4,_0xbf53('0xc'));logger[_0xbf53('0xd')](_0xbf53('0xe'),_0x1a96a4,_0xbf53('0xc'),JSON[_0xbf53('0xf')](_0x32181d));if(_0x32181d[_0xbf53('0x10')]){if(_0x32181d[_0xbf53('0x10')][_0xbf53('0x11')]===0x1f4){logger[_0xbf53('0x10')](_0xbf53('0xb'),_0x1a96a4,_0x32181d[_0xbf53('0x10')]['message']);return _0x11e161(_0x32181d[_0xbf53('0x10')][_0xbf53('0x12')]);}logger[_0xbf53('0x10')](_0xbf53('0xb'),_0x1a96a4,_0x32181d['error'][_0xbf53('0x12')]);return _0x24de3a(_0x32181d[_0xbf53('0x10')][_0xbf53('0x12')]);}else{logger[_0xbf53('0xa')](_0xbf53('0xb'),_0x1a96a4,_0xbf53('0xc'));_0x24de3a(_0x32181d['result']['message']);}})[_0xbf53('0x13')](function(_0x47f15a){logger[_0xbf53('0x10')](_0xbf53('0xb'),_0x1a96a4,_0x47f15a);_0x11e161(_0x47f15a);});});}
\ No newline at end of file
+var _0x4182=['info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x5bdb29,_0x2f1959){var _0x5ebd13=function(_0xbc22bc){while(--_0xbc22bc){_0x5bdb29['push'](_0x5bdb29['shift']());}};_0x5ebd13(++_0x2f1959);}(_0x4182,0x136));var _0x2418=function(_0x1d04b5,_0x30792c){_0x1d04b5=_0x1d04b5-0x0;var _0x161342=_0x4182[_0x1d04b5];return _0x161342;};'use strict';var _=require(_0x2418('0x0'));var util=require(_0x2418('0x1'));var moment=require('moment');var BPromise=require(_0x2418('0x2'));var rs=require(_0x2418('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2418('0x4'));var logger=require(_0x2418('0x5'))(_0x2418('0x6'));var config=require(_0x2418('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2418('0x8')][_0x2418('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ce779,_0x14f0f1,_0x2bfde9){return new BPromise(function(_0x15f5ea,_0xbcaf27){return client[_0x2418('0xa')](_0x3ce779,_0x2bfde9)[_0x2418('0xb')](function(_0x3b8fdd){logger[_0x2418('0xc')](_0x2418('0xd'),_0x14f0f1,_0x2418('0xe'));logger[_0x2418('0xf')](_0x2418('0x10'),_0x14f0f1,_0x2418('0xe'),JSON[_0x2418('0x11')](_0x3b8fdd));if(_0x3b8fdd[_0x2418('0x12')]){if(_0x3b8fdd[_0x2418('0x12')][_0x2418('0x13')]===0x1f4){logger[_0x2418('0x12')](_0x2418('0xd'),_0x14f0f1,_0x3b8fdd[_0x2418('0x12')][_0x2418('0x14')]);return _0xbcaf27(_0x3b8fdd['error'][_0x2418('0x14')]);}logger[_0x2418('0x12')](_0x2418('0xd'),_0x14f0f1,_0x3b8fdd[_0x2418('0x12')][_0x2418('0x14')]);return _0x15f5ea(_0x3b8fdd[_0x2418('0x12')][_0x2418('0x14')]);}else{logger[_0x2418('0xc')](_0x2418('0xd'),_0x14f0f1,_0x2418('0xe'));_0x15f5ea(_0x3b8fdd[_0x2418('0x15')][_0x2418('0x14')]);}})[_0x2418('0x16')](function(_0x4bd4f9){logger[_0x2418('0x12')](_0x2418('0xd'),_0x14f0f1,_0x4bd4f9);_0xbcaf27(_0x4bd4f9);});});}
\ No newline at end of file
index 5dd3afd..2f3088a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd125=['show','post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id'];(function(_0x1336e2,_0x1a6903){var _0x517d1d=function(_0x2f48b4){while(--_0x2f48b4){_0x1336e2['push'](_0x1336e2['shift']());}};_0x517d1d(++_0x1a6903);}(_0xd125,0x1bf));var _0x5d12=function(_0x20eca8,_0x4b92ef){_0x20eca8=_0x20eca8-0x0;var _0x9bb131=_0xd125[_0x20eca8];return _0x9bb131;};'use strict';var multer=require(_0x5d12('0x0'));var util=require(_0x5d12('0x1'));var path=require(_0x5d12('0x2'));var timeout=require(_0x5d12('0x3'));var express=require(_0x5d12('0x4'));var router=express[_0x5d12('0x5')]();var fs_extra=require(_0x5d12('0x6'));var auth=require(_0x5d12('0x7'));var interaction=require(_0x5d12('0x8'));var config=require(_0x5d12('0x9'));var controller=require(_0x5d12('0xa'));router[_0x5d12('0xb')]('/',auth[_0x5d12('0xc')](),controller[_0x5d12('0xd')]);router[_0x5d12('0xb')](_0x5d12('0xe'),auth['isAuthenticated'](),controller[_0x5d12('0xf')]);router[_0x5d12('0x10')]('/',auth[_0x5d12('0xc')](),controller['create']);router[_0x5d12('0x11')](_0x5d12('0xe'),auth[_0x5d12('0xc')](),controller[_0x5d12('0x12')]);router['delete'](_0x5d12('0xe'),auth[_0x5d12('0xc')](),controller[_0x5d12('0x13')]);module[_0x5d12('0x14')]=router;
\ No newline at end of file
+var _0xbd9a=['index','/:id','post','put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated'];(function(_0x562f0f,_0x5967bf){var _0x2b7d66=function(_0x2cb09e){while(--_0x2cb09e){_0x562f0f['push'](_0x562f0f['shift']());}};_0x2b7d66(++_0x5967bf);}(_0xbd9a,0xc7));var _0xabd9=function(_0x23634a,_0x1871ce){_0x23634a=_0x23634a-0x0;var _0x5b4dae=_0xbd9a[_0x23634a];return _0x5b4dae;};'use strict';var multer=require(_0xabd9('0x0'));var util=require(_0xabd9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xabd9('0x2'));var router=express[_0xabd9('0x3')]();var fs_extra=require(_0xabd9('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xabd9('0x5'));var controller=require(_0xabd9('0x6'));router[_0xabd9('0x7')]('/',auth[_0xabd9('0x8')](),controller[_0xabd9('0x9')]);router[_0xabd9('0x7')](_0xabd9('0xa'),auth[_0xabd9('0x8')](),controller['show']);router[_0xabd9('0xb')]('/',auth[_0xabd9('0x8')](),controller['create']);router[_0xabd9('0xc')](_0xabd9('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xabd9('0xd')](_0xabd9('0xa'),auth[_0xabd9('0x8')](),controller[_0xabd9('0xe')]);module[_0xabd9('0xf')]=router;
\ No newline at end of file
index 16e1119..f6038fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e8d=['keyValue','STRING','customVariable','BOOLEAN','sequelize','ENUM','string','variable'];(function(_0x23b30c,_0x1e9bbd){var _0x436d01=function(_0x54c3ac){while(--_0x54c3ac){_0x23b30c['push'](_0x23b30c['shift']());}};_0x436d01(++_0x1e9bbd);}(_0x4e8d,0x1a4));var _0xd4e8=function(_0x30a4a3,_0x32ad36){_0x30a4a3=_0x30a4a3-0x0;var _0x348f29=_0x4e8d[_0x30a4a3];return _0x348f29;};'use strict';var Sequelize=require(_0xd4e8('0x0'));module['exports']={'type':{'type':Sequelize[_0xd4e8('0x1')](_0xd4e8('0x2'),_0xd4e8('0x3'),'customVariable',_0xd4e8('0x4'),'picklist'),'defaultValue':_0xd4e8('0x2')},'content':{'type':Sequelize[_0xd4e8('0x5')]},'key':{'type':Sequelize[_0xd4e8('0x5')]},'keyType':{'type':Sequelize[_0xd4e8('0x1')](_0xd4e8('0x2'),_0xd4e8('0x3'),_0xd4e8('0x6'))},'keyContent':{'type':Sequelize[_0xd4e8('0x5')]},'idField':{'type':Sequelize[_0xd4e8('0x5')]},'nameField':{'type':Sequelize[_0xd4e8('0x5')]},'customField':{'type':Sequelize[_0xd4e8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd4e8('0x5')]}};
\ No newline at end of file
+var _0xbd7c=['variable','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0x1be88a,_0x1b325a){var _0x513f33=function(_0x11ca80){while(--_0x11ca80){_0x1be88a['push'](_0x1be88a['shift']());}};_0x513f33(++_0x1b325a);}(_0xbd7c,0x7f));var _0xcbd7=function(_0x546c77,_0x450d10){_0x546c77=_0x546c77-0x0;var _0x354ce0=_0xbd7c[_0x546c77];return _0x354ce0;};'use strict';var Sequelize=require(_0xcbd7('0x0'));module[_0xcbd7('0x1')]={'type':{'type':Sequelize[_0xcbd7('0x2')](_0xcbd7('0x3'),'variable',_0xcbd7('0x4'),_0xcbd7('0x5'),_0xcbd7('0x6')),'defaultValue':_0xcbd7('0x3')},'content':{'type':Sequelize[_0xcbd7('0x7')]},'key':{'type':Sequelize[_0xcbd7('0x7')]},'keyType':{'type':Sequelize[_0xcbd7('0x2')](_0xcbd7('0x3'),_0xcbd7('0x8'),_0xcbd7('0x4'))},'keyContent':{'type':Sequelize[_0xcbd7('0x7')]},'idField':{'type':Sequelize[_0xcbd7('0x7')]},'nameField':{'type':Sequelize[_0xcbd7('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcbd7('0x7')]}};
\ No newline at end of file
index 4f697bb..04bc22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad95=['offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','end','error','name','send','index','map','FreshdeskField','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','catch','show','keys','find','create','body','params','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json'];(function(_0x3d1257,_0x182816){var _0x2dd9bb=function(_0x154115){while(--_0x154115){_0x3d1257['push'](_0x3d1257['shift']());}};_0x2dd9bb(++_0x182816);}(_0xad95,0x70));var _0x5ad9=function(_0x5ed0d8,_0x1b8a22){_0x5ed0d8=_0x5ed0d8-0x0;var _0x311a12=_0xad95[_0x5ed0d8];return _0x311a12;};'use strict';var emlformat=require(_0x5ad9('0x0'));var rimraf=require(_0x5ad9('0x1'));var zipdir=require(_0x5ad9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5ad9('0x3'));var BPromise=require(_0x5ad9('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5ad9('0x5'));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(_0x5ad9('0x6'));var squel=require(_0x5ad9('0x7'));var crypto=require(_0x5ad9('0x8'));var jsforce=require(_0x5ad9('0x9'));var deskjs=require(_0x5ad9('0xa'));var toCsv=require('to-csv');var querystring=require(_0x5ad9('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5ad9('0xc'));var qs=require(_0x5ad9('0xd'));var as=require(_0x5ad9('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5ad9('0xf'))(_0x5ad9('0x10'));var utils=require('../../config/utils');var config=require(_0x5ad9('0x11'));var licenseUtil=require(_0x5ad9('0x12'));var db=require(_0x5ad9('0x13'))['db'];function respondWithStatusCode(_0x3b2718,_0x262ce4){_0x262ce4=_0x262ce4||0xcc;return function(_0xc7e5e9){if(_0xc7e5e9){return _0x3b2718['sendStatus'](_0x262ce4);}return _0x3b2718['status'](_0x262ce4)['end']();};}function respondWithResult(_0x431358,_0x4519ad){_0x4519ad=_0x4519ad||0xc8;return function(_0x52cb37){if(_0x52cb37){return _0x431358[_0x5ad9('0x14')](_0x4519ad)[_0x5ad9('0x15')](_0x52cb37);}};}function respondWithFilteredResult(_0x3f16ef,_0x543743){return function(_0x3da125){if(_0x3da125){var _0x32b0bd=typeof _0x543743[_0x5ad9('0x16')]===_0x5ad9('0x17')&&typeof _0x543743[_0x5ad9('0x18')]===_0x5ad9('0x17');var _0x521cc3=_0x3da125[_0x5ad9('0x19')];var _0x54f392=_0x32b0bd?0x0:_0x543743[_0x5ad9('0x16')];var _0x28682f=_0x32b0bd?_0x3da125[_0x5ad9('0x19')]:_0x543743[_0x5ad9('0x16')]+_0x543743[_0x5ad9('0x18')];var _0x2ba5c0;if(_0x28682f>=_0x521cc3){_0x28682f=_0x521cc3;_0x2ba5c0=0xc8;}else{_0x2ba5c0=0xce;}_0x3f16ef[_0x5ad9('0x14')](_0x2ba5c0);return _0x3f16ef['set'](_0x5ad9('0x1a'),_0x54f392+'-'+_0x28682f+'/'+_0x521cc3)['json'](_0x3da125);}return null;};}function patchUpdates(_0x49363b){return function(_0x3356e5){try{jsonpatch['apply'](_0x3356e5,_0x49363b,!![]);}catch(_0xded166){return BPromise[_0x5ad9('0x1b')](_0xded166);}return _0x3356e5[_0x5ad9('0x1c')]();};}function saveUpdates(_0xebbe63,_0x1274f7){return function(_0x57b2ba){if(_0x57b2ba){return _0x57b2ba[_0x5ad9('0x1d')](_0xebbe63)['then'](function(_0x807b05){return _0x807b05;});}return null;};}function removeEntity(_0x5b816d,_0x570d3c){return function(_0x524249){if(_0x524249){return _0x524249[_0x5ad9('0x1e')]()[_0x5ad9('0x1f')](function(){_0x5b816d[_0x5ad9('0x14')](0xcc)[_0x5ad9('0x20')]();});}};}function handleEntityNotFound(_0x1252e6,_0x36da5f){return function(_0x11d919){if(!_0x11d919){_0x1252e6['sendStatus'](0x194);}return _0x11d919;};}function handleError(_0x54e9dd,_0xe6540f){_0xe6540f=_0xe6540f||0x1f4;return function(_0x4f3889){logger[_0x5ad9('0x21')](_0x4f3889['stack']);if(_0x4f3889[_0x5ad9('0x22')]){delete _0x4f3889['name'];}_0x54e9dd['status'](_0xe6540f)[_0x5ad9('0x23')](_0x4f3889);};}exports[_0x5ad9('0x24')]=function(_0x49b3df,_0x509d41){var _0x3942fa={},_0x129804={},_0x1b6faf={'count':0x0,'rows':[]};var _0x2ad078=_[_0x5ad9('0x25')](db[_0x5ad9('0x26')]['rawAttributes'],function(_0x132ec6){return{'name':_0x132ec6[_0x5ad9('0x27')],'type':_0x132ec6[_0x5ad9('0x28')][_0x5ad9('0x29')]};});_0x129804['model']=_['map'](_0x2ad078,_0x5ad9('0x22'));_0x129804[_0x5ad9('0x2a')]=_['keys'](_0x49b3df['query']);_0x129804['filters']=_[_0x5ad9('0x2b')](_0x129804[_0x5ad9('0x2c')],_0x129804['query']);_0x3942fa[_0x5ad9('0x2d')]=_[_0x5ad9('0x2b')](_0x129804[_0x5ad9('0x2c')],qs[_0x5ad9('0x2e')](_0x49b3df['query']['fields']));_0x3942fa[_0x5ad9('0x2d')]=_0x3942fa[_0x5ad9('0x2d')][_0x5ad9('0x2f')]?_0x3942fa[_0x5ad9('0x2d')]:_0x129804[_0x5ad9('0x2c')];if(!_0x49b3df['query'][_0x5ad9('0x30')](_0x5ad9('0x31'))){_0x3942fa[_0x5ad9('0x18')]=qs[_0x5ad9('0x18')](_0x49b3df[_0x5ad9('0x2a')][_0x5ad9('0x18')]);_0x3942fa['offset']=qs[_0x5ad9('0x16')](_0x49b3df[_0x5ad9('0x2a')]['offset']);}_0x3942fa[_0x5ad9('0x32')]=qs[_0x5ad9('0x33')](_0x49b3df['query'][_0x5ad9('0x33')]);_0x3942fa[_0x5ad9('0x34')]=qs[_0x5ad9('0x35')](_['pick'](_0x49b3df[_0x5ad9('0x2a')],_0x129804[_0x5ad9('0x35')]),_0x2ad078);if(_0x49b3df[_0x5ad9('0x2a')][_0x5ad9('0x36')]){_0x3942fa['where']=_[_0x5ad9('0x37')](_0x3942fa[_0x5ad9('0x34')],{'$or':_[_0x5ad9('0x25')](_0x2ad078,function(_0x143700){if(_0x143700[_0x5ad9('0x28')]!==_0x5ad9('0x38')){var _0x1f0c06={};_0x1f0c06[_0x143700[_0x5ad9('0x22')]]={'$like':'%'+_0x49b3df[_0x5ad9('0x2a')]['filter']+'%'};return _0x1f0c06;}})});}_0x3942fa=_[_0x5ad9('0x37')]({},_0x3942fa,_0x49b3df[_0x5ad9('0x39')]);var _0x41d733={'where':_0x3942fa[_0x5ad9('0x34')]};return db[_0x5ad9('0x26')]['count'](_0x41d733)[_0x5ad9('0x1f')](function(_0xbbfaa0){_0x1b6faf[_0x5ad9('0x19')]=_0xbbfaa0;if(_0x49b3df['query'][_0x5ad9('0x3a')]){_0x3942fa[_0x5ad9('0x3b')]=[{'all':!![]}];}return db[_0x5ad9('0x26')]['findAll'](_0x3942fa);})[_0x5ad9('0x1f')](function(_0x5cfe5b){_0x1b6faf['rows']=_0x5cfe5b;return _0x1b6faf;})[_0x5ad9('0x1f')](respondWithFilteredResult(_0x509d41,_0x3942fa))[_0x5ad9('0x3c')](handleError(_0x509d41,null));};exports[_0x5ad9('0x3d')]=function(_0x24f377,_0x5b8608){var _0x526fda={'raw':!![],'where':{'id':_0x24f377['params']['id']}},_0x552c39={};_0x552c39[_0x5ad9('0x2c')]=_['keys'](db[_0x5ad9('0x26')]['rawAttributes']);_0x552c39[_0x5ad9('0x2a')]=_[_0x5ad9('0x3e')](_0x24f377[_0x5ad9('0x2a')]);_0x552c39[_0x5ad9('0x35')]=_[_0x5ad9('0x2b')](_0x552c39[_0x5ad9('0x2c')],_0x552c39[_0x5ad9('0x2a')]);_0x526fda[_0x5ad9('0x2d')]=_[_0x5ad9('0x2b')](_0x552c39['model'],qs[_0x5ad9('0x2e')](_0x24f377[_0x5ad9('0x2a')][_0x5ad9('0x2e')]));_0x526fda[_0x5ad9('0x2d')]=_0x526fda[_0x5ad9('0x2d')]['length']?_0x526fda[_0x5ad9('0x2d')]:_0x552c39['model'];if(_0x24f377['query']['includeAll']){_0x526fda[_0x5ad9('0x3b')]=[{'all':!![]}];}_0x526fda=_[_0x5ad9('0x37')]({},_0x526fda,_0x24f377[_0x5ad9('0x39')]);return db['FreshdeskField'][_0x5ad9('0x3f')](_0x526fda)[_0x5ad9('0x1f')](handleEntityNotFound(_0x5b8608,null))[_0x5ad9('0x1f')](respondWithResult(_0x5b8608,null))[_0x5ad9('0x3c')](handleError(_0x5b8608,null));};exports['create']=function(_0x126086,_0x420677){return db[_0x5ad9('0x26')][_0x5ad9('0x40')](_0x126086['body'],{})[_0x5ad9('0x1f')](respondWithResult(_0x420677,0xc9))[_0x5ad9('0x3c')](handleError(_0x420677,null));};exports[_0x5ad9('0x1d')]=function(_0x1e03f,_0x479bbc){if(_0x1e03f[_0x5ad9('0x41')]['id']){delete _0x1e03f[_0x5ad9('0x41')]['id'];}return db['FreshdeskField'][_0x5ad9('0x3f')]({'where':{'id':_0x1e03f['params']['id']}})[_0x5ad9('0x1f')](handleEntityNotFound(_0x479bbc,null))[_0x5ad9('0x1f')](saveUpdates(_0x1e03f[_0x5ad9('0x41')],null))[_0x5ad9('0x1f')](respondWithResult(_0x479bbc,null))[_0x5ad9('0x3c')](handleError(_0x479bbc,null));};exports[_0x5ad9('0x1e')]=function(_0xa0f426,_0x2c3945){return db[_0x5ad9('0x26')][_0x5ad9('0x3f')]({'where':{'id':_0xa0f426[_0x5ad9('0x42')]['id']}})[_0x5ad9('0x1f')](handleEntityNotFound(_0x2c3945,null))[_0x5ad9('0x1f')](removeEntity(_0x2c3945,null))[_0x5ad9('0x3c')](handleError(_0x2c3945,null));};
\ No newline at end of file
+var _0x55ea=['sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','index','FreshdeskField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','rows','show','params','keys','length','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x55ea,0xc9));var _0xa55e=function(_0xfc0ea1,_0x2c4757){_0xfc0ea1=_0xfc0ea1-0x0;var _0x5f317f=_0x55ea[_0xfc0ea1];return _0x5f317f;};'use strict';var emlformat=require(_0xa55e('0x0'));var rimraf=require(_0xa55e('0x1'));var zipdir=require(_0xa55e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa55e('0x3'));var moment=require(_0xa55e('0x4'));var BPromise=require(_0xa55e('0x5'));var Mustache=require(_0xa55e('0x6'));var util=require(_0xa55e('0x7'));var path=require('path');var sox=require(_0xa55e('0x8'));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(_0xa55e('0x9'));var crypto=require(_0xa55e('0xa'));var jsforce=require(_0xa55e('0xb'));var deskjs=require(_0xa55e('0xc'));var toCsv=require(_0xa55e('0xd'));var querystring=require(_0xa55e('0xe'));var Papa=require(_0xa55e('0xf'));var Redis=require(_0xa55e('0x10'));var authService=require(_0xa55e('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa55e('0x12'));var logger=require(_0xa55e('0x13'))(_0xa55e('0x14'));var utils=require(_0xa55e('0x15'));var config=require(_0xa55e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa55e('0x17'))['db'];function respondWithStatusCode(_0x5b69cc,_0x3f5178){_0x3f5178=_0x3f5178||0xcc;return function(_0x1d45c1){if(_0x1d45c1){return _0x5b69cc[_0xa55e('0x18')](_0x3f5178);}return _0x5b69cc[_0xa55e('0x19')](_0x3f5178)[_0xa55e('0x1a')]();};}function respondWithResult(_0x20e138,_0x15a283){_0x15a283=_0x15a283||0xc8;return function(_0x27746c){if(_0x27746c){return _0x20e138[_0xa55e('0x19')](_0x15a283)['json'](_0x27746c);}};}function respondWithFilteredResult(_0x1fcee6,_0x30738d){return function(_0x25fa30){if(_0x25fa30){var _0x12895e=typeof _0x30738d[_0xa55e('0x1b')]===_0xa55e('0x1c')&&typeof _0x30738d['limit']===_0xa55e('0x1c');var _0x5dbfe6=_0x25fa30['count'];var _0x4599b9=_0x12895e?0x0:_0x30738d[_0xa55e('0x1b')];var _0x30854e=_0x12895e?_0x25fa30[_0xa55e('0x1d')]:_0x30738d[_0xa55e('0x1b')]+_0x30738d['limit'];var _0x42d2d0;if(_0x30854e>=_0x5dbfe6){_0x30854e=_0x5dbfe6;_0x42d2d0=0xc8;}else{_0x42d2d0=0xce;}_0x1fcee6['status'](_0x42d2d0);return _0x1fcee6['set'](_0xa55e('0x1e'),_0x4599b9+'-'+_0x30854e+'/'+_0x5dbfe6)[_0xa55e('0x1f')](_0x25fa30);}return null;};}function patchUpdates(_0x262f6c){return function(_0x1033c0){try{jsonpatch[_0xa55e('0x20')](_0x1033c0,_0x262f6c,!![]);}catch(_0x438707){return BPromise[_0xa55e('0x21')](_0x438707);}return _0x1033c0[_0xa55e('0x22')]();};}function saveUpdates(_0x9594a3,_0x5b0e74){return function(_0x53a2f9){if(_0x53a2f9){return _0x53a2f9[_0xa55e('0x23')](_0x9594a3)['then'](function(_0xaaf2f1){return _0xaaf2f1;});}return null;};}function removeEntity(_0x31c4ac,_0x801fec){return function(_0x2842a6){if(_0x2842a6){return _0x2842a6[_0xa55e('0x24')]()[_0xa55e('0x25')](function(){_0x31c4ac[_0xa55e('0x19')](0xcc)[_0xa55e('0x1a')]();});}};}function handleEntityNotFound(_0x231333,_0x3627e8){return function(_0x3c519d){if(!_0x3c519d){_0x231333[_0xa55e('0x18')](0x194);}return _0x3c519d;};}function handleError(_0xa05c41,_0x25142c){_0x25142c=_0x25142c||0x1f4;return function(_0xa57293){logger[_0xa55e('0x26')](_0xa57293[_0xa55e('0x27')]);if(_0xa57293[_0xa55e('0x28')]){delete _0xa57293[_0xa55e('0x28')];}_0xa05c41['status'](_0x25142c)['send'](_0xa57293);};}exports[_0xa55e('0x29')]=function(_0x4ebcbd,_0x286f95){var _0x58fc30={},_0x2fe4e9={},_0x4d9634={'count':0x0,'rows':[]};var _0x2758ca=_['map'](db[_0xa55e('0x2a')][_0xa55e('0x2b')],function(_0x4a03ef){return{'name':_0x4a03ef[_0xa55e('0x2c')],'type':_0x4a03ef[_0xa55e('0x2d')][_0xa55e('0x2e')]};});_0x2fe4e9[_0xa55e('0x2f')]=_['map'](_0x2758ca,_0xa55e('0x28'));_0x2fe4e9[_0xa55e('0x30')]=_['keys'](_0x4ebcbd[_0xa55e('0x30')]);_0x2fe4e9[_0xa55e('0x31')]=_[_0xa55e('0x32')](_0x2fe4e9[_0xa55e('0x2f')],_0x2fe4e9['query']);_0x58fc30[_0xa55e('0x33')]=_['intersection'](_0x2fe4e9[_0xa55e('0x2f')],qs['fields'](_0x4ebcbd[_0xa55e('0x30')][_0xa55e('0x34')]));_0x58fc30[_0xa55e('0x33')]=_0x58fc30[_0xa55e('0x33')]['length']?_0x58fc30[_0xa55e('0x33')]:_0x2fe4e9['model'];if(!_0x4ebcbd[_0xa55e('0x30')][_0xa55e('0x35')](_0xa55e('0x36'))){_0x58fc30['limit']=qs[_0xa55e('0x37')](_0x4ebcbd[_0xa55e('0x30')][_0xa55e('0x37')]);_0x58fc30[_0xa55e('0x1b')]=qs[_0xa55e('0x1b')](_0x4ebcbd[_0xa55e('0x30')]['offset']);}_0x58fc30['order']=qs[_0xa55e('0x38')](_0x4ebcbd[_0xa55e('0x30')][_0xa55e('0x38')]);_0x58fc30[_0xa55e('0x39')]=qs[_0xa55e('0x31')](_[_0xa55e('0x3a')](_0x4ebcbd[_0xa55e('0x30')],_0x2fe4e9['filters']),_0x2758ca);if(_0x4ebcbd['query'][_0xa55e('0x3b')]){_0x58fc30[_0xa55e('0x39')]=_[_0xa55e('0x3c')](_0x58fc30[_0xa55e('0x39')],{'$or':_[_0xa55e('0x3d')](_0x2758ca,function(_0x41444d){if(_0x41444d[_0xa55e('0x2d')]!==_0xa55e('0x3e')){var _0x29e0c2={};_0x29e0c2[_0x41444d[_0xa55e('0x28')]]={'$like':'%'+_0x4ebcbd[_0xa55e('0x30')]['filter']+'%'};return _0x29e0c2;}})});}_0x58fc30=_[_0xa55e('0x3c')]({},_0x58fc30,_0x4ebcbd[_0xa55e('0x3f')]);var _0x2982db={'where':_0x58fc30['where']};return db[_0xa55e('0x2a')]['count'](_0x2982db)[_0xa55e('0x25')](function(_0x4e97de){_0x4d9634[_0xa55e('0x1d')]=_0x4e97de;if(_0x4ebcbd[_0xa55e('0x30')][_0xa55e('0x40')]){_0x58fc30[_0xa55e('0x41')]=[{'all':!![]}];}return db[_0xa55e('0x2a')]['findAll'](_0x58fc30);})['then'](function(_0x3d9fe9){_0x4d9634[_0xa55e('0x42')]=_0x3d9fe9;return _0x4d9634;})[_0xa55e('0x25')](respondWithFilteredResult(_0x286f95,_0x58fc30))['catch'](handleError(_0x286f95,null));};exports[_0xa55e('0x43')]=function(_0x2d4d27,_0x1c7d18){var _0xb43d62={'raw':!![],'where':{'id':_0x2d4d27[_0xa55e('0x44')]['id']}},_0x43c887={};_0x43c887[_0xa55e('0x2f')]=_[_0xa55e('0x45')](db['FreshdeskField']['rawAttributes']);_0x43c887[_0xa55e('0x30')]=_[_0xa55e('0x45')](_0x2d4d27[_0xa55e('0x30')]);_0x43c887[_0xa55e('0x31')]=_[_0xa55e('0x32')](_0x43c887[_0xa55e('0x2f')],_0x43c887[_0xa55e('0x30')]);_0xb43d62[_0xa55e('0x33')]=_['intersection'](_0x43c887['model'],qs[_0xa55e('0x34')](_0x2d4d27['query'][_0xa55e('0x34')]));_0xb43d62['attributes']=_0xb43d62['attributes'][_0xa55e('0x46')]?_0xb43d62[_0xa55e('0x33')]:_0x43c887['model'];if(_0x2d4d27['query'][_0xa55e('0x40')]){_0xb43d62[_0xa55e('0x41')]=[{'all':!![]}];}_0xb43d62=_[_0xa55e('0x3c')]({},_0xb43d62,_0x2d4d27[_0xa55e('0x3f')]);return db[_0xa55e('0x2a')][_0xa55e('0x47')](_0xb43d62)['then'](handleEntityNotFound(_0x1c7d18,null))['then'](respondWithResult(_0x1c7d18,null))[_0xa55e('0x48')](handleError(_0x1c7d18,null));};exports[_0xa55e('0x49')]=function(_0x31458d,_0x259cb3){return db[_0xa55e('0x2a')][_0xa55e('0x49')](_0x31458d['body'],{})[_0xa55e('0x25')](respondWithResult(_0x259cb3,0xc9))[_0xa55e('0x48')](handleError(_0x259cb3,null));};exports[_0xa55e('0x23')]=function(_0x1de3a8,_0x338018){if(_0x1de3a8[_0xa55e('0x4a')]['id']){delete _0x1de3a8['body']['id'];}return db['FreshdeskField'][_0xa55e('0x47')]({'where':{'id':_0x1de3a8['params']['id']}})[_0xa55e('0x25')](handleEntityNotFound(_0x338018,null))['then'](saveUpdates(_0x1de3a8[_0xa55e('0x4a')],null))[_0xa55e('0x25')](respondWithResult(_0x338018,null))[_0xa55e('0x48')](handleError(_0x338018,null));};exports[_0xa55e('0x24')]=function(_0x2c35a8,_0x63aa32){return db[_0xa55e('0x2a')][_0xa55e('0x47')]({'where':{'id':_0x2c35a8['params']['id']}})[_0xa55e('0x25')](handleEntityNotFound(_0x63aa32,null))[_0xa55e('0x25')](removeEntity(_0x63aa32,null))[_0xa55e('0x48')](handleError(_0x63aa32,null));};
\ No newline at end of file
index fd16d9f..f25ed2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c3=['idField','FieldId','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index'];(function(_0xd66cf0,_0x280a1a){var _0x2ce916=function(_0x545ca4){while(--_0x545ca4){_0xd66cf0['push'](_0xd66cf0['shift']());}};_0x2ce916(++_0x280a1a);}(_0x81c3,0xd2));var _0x381c=function(_0x57edf1,_0x99b7d){_0x57edf1=_0x57edf1-0x0;var _0x488dcb=_0x81c3[_0x57edf1];return _0x488dcb;};'use strict';var _=require('lodash');var util=require(_0x381c('0x0'));var logger=require(_0x381c('0x1'))('api');var moment=require(_0x381c('0x2'));var BPromise=require(_0x381c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x381c('0x4'));var config=require(_0x381c('0x5'));var attributes=require('./intFreshdeskField.attributes');module[_0x381c('0x6')]=function(_0x4639ea,_0x9c02e5){return _0x4639ea[_0x381c('0x7')](_0x381c('0x8'),attributes,{'tableName':_0x381c('0x9'),'paranoid':![],'indexes':[{'name':_0x381c('0xa'),'fields':[_0x381c('0xb'),_0x381c('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd59a=['api','bluebird','path','rimraf','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','lodash','util','../../config/logger'];(function(_0x594ece,_0x2a1f27){var _0x471bc4=function(_0x31941c){while(--_0x31941c){_0x594ece['push'](_0x594ece['shift']());}};_0x471bc4(++_0x2a1f27);}(_0xd59a,0x17d));var _0xad59=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd59a[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xad59('0x0'));var util=require(_0xad59('0x1'));var logger=require(_0xad59('0x2'))(_0xad59('0x3'));var moment=require('moment');var BPromise=require(_0xad59('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xad59('0x5'));var rimraf=require(_0xad59('0x6'));var config=require('../../config/environment');var attributes=require('./intFreshdeskField.attributes');module[_0xad59('0x7')]=function(_0x3cf16f,_0x50f1bf){return _0x3cf16f[_0xad59('0x8')](_0xad59('0x9'),attributes,{'tableName':_0xad59('0xa'),'paranoid':![],'indexes':[{'name':_0xad59('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 87002d7..f694355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0d5=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0xb0d5,0x193));var _0x5b0d=function(_0x37bc10,_0x528f6f){_0x37bc10=_0x37bc10-0x0;var _0x10fff1=_0xb0d5[_0x37bc10];return _0x10fff1;};'use strict';var _=require(_0x5b0d('0x0'));var util=require(_0x5b0d('0x1'));var moment=require(_0x5b0d('0x2'));var BPromise=require(_0x5b0d('0x3'));var rs=require(_0x5b0d('0x4'));var fs=require('fs');var Redis=require(_0x5b0d('0x5'));var db=require(_0x5b0d('0x6'))['db'];var utils=require(_0x5b0d('0x7'));var logger=require('../../config/logger')(_0x5b0d('0x8'));var config=require(_0x5b0d('0x9'));var jayson=require(_0x5b0d('0xa'));var client=jayson[_0x5b0d('0xb')][_0x5b0d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x16e387,_0x4a1cd0,_0x450494){return new BPromise(function(_0x3abbf7,_0x13b940){return client['request'](_0x16e387,_0x450494)[_0x5b0d('0xd')](function(_0x4b5419){logger['info'](_0x5b0d('0xe'),_0x4a1cd0,_0x5b0d('0xf'));logger['debug'](_0x5b0d('0x10'),_0x4a1cd0,'request\x20sent',JSON['stringify'](_0x4b5419));if(_0x4b5419[_0x5b0d('0x11')]){if(_0x4b5419[_0x5b0d('0x11')]['code']===0x1f4){logger[_0x5b0d('0x11')]('FreshdeskField,\x20%s,\x20%s',_0x4a1cd0,_0x4b5419[_0x5b0d('0x11')][_0x5b0d('0x12')]);return _0x13b940(_0x4b5419['error'][_0x5b0d('0x12')]);}logger[_0x5b0d('0x11')](_0x5b0d('0xe'),_0x4a1cd0,_0x4b5419[_0x5b0d('0x11')][_0x5b0d('0x12')]);return _0x3abbf7(_0x4b5419[_0x5b0d('0x11')]['message']);}else{logger['info']('FreshdeskField,\x20%s,\x20%s',_0x4a1cd0,_0x5b0d('0xf'));_0x3abbf7(_0x4b5419['result'][_0x5b0d('0x12')]);}})[_0x5b0d('0x13')](function(_0x813526){logger[_0x5b0d('0x11')](_0x5b0d('0xe'),_0x4a1cd0,_0x813526);_0x13b940(_0x813526);});});}
\ No newline at end of file
+var _0x659e=['client','http','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x2f890d,_0x41d4a7){var _0x57e3e9=function(_0x5466b0){while(--_0x5466b0){_0x2f890d['push'](_0x2f890d['shift']());}};_0x57e3e9(++_0x41d4a7);}(_0x659e,0x1ee));var _0xe659=function(_0x1d16b4,_0x241ab7){_0x1d16b4=_0x1d16b4-0x0;var _0x40e2dd=_0x659e[_0x1d16b4];return _0x40e2dd;};'use strict';var _=require(_0xe659('0x0'));var util=require(_0xe659('0x1'));var moment=require(_0xe659('0x2'));var BPromise=require(_0xe659('0x3'));var rs=require(_0xe659('0x4'));var fs=require('fs');var Redis=require(_0xe659('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe659('0x6'));var logger=require(_0xe659('0x7'))('rpc');var config=require(_0xe659('0x8'));var jayson=require(_0xe659('0x9'));var client=jayson[_0xe659('0xa')][_0xe659('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d8023,_0x112451,_0x22cf0f){return new BPromise(function(_0x5ad324,_0x293e12){return client['request'](_0x1d8023,_0x22cf0f)[_0xe659('0xc')](function(_0x545545){logger[_0xe659('0xd')](_0xe659('0xe'),_0x112451,_0xe659('0xf'));logger[_0xe659('0x10')](_0xe659('0x11'),_0x112451,_0xe659('0xf'),JSON['stringify'](_0x545545));if(_0x545545[_0xe659('0x12')]){if(_0x545545['error']['code']===0x1f4){logger['error'](_0xe659('0xe'),_0x112451,_0x545545[_0xe659('0x12')][_0xe659('0x13')]);return _0x293e12(_0x545545[_0xe659('0x12')][_0xe659('0x13')]);}logger[_0xe659('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x112451,_0x545545[_0xe659('0x12')][_0xe659('0x13')]);return _0x5ad324(_0x545545[_0xe659('0x12')][_0xe659('0x13')]);}else{logger[_0xe659('0xd')](_0xe659('0xe'),_0x112451,_0xe659('0xf'));_0x5ad324(_0x545545[_0xe659('0x14')][_0xe659('0x13')]);}})['catch'](function(_0x4c2e1c){logger['error'](_0xe659('0xe'),_0x112451,_0x4c2e1c);_0x293e12(_0x4c2e1c);});});}
\ No newline at end of file
index 6cd2bc6..d0ff9e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['put','update','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','index','get','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','getFields','post','create','addConfiguration'];(function(_0x4e7abc,_0x2aeca1){var _0x428796=function(_0xa2c1d){while(--_0xa2c1d){_0x4e7abc['push'](_0x4e7abc['shift']());}};_0x428796(++_0x2aeca1);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xb7e7[_0x3e5086];return _0xfeb102;};'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('0x10')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x11')]);router[_0x7b7e('0x10')](_0x7b7e('0xb'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x12')]);router[_0x7b7e('0x13')]('/:id',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x14')]);router['delete'](_0x7b7e('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x7b7e('0x15')]=router;
\ No newline at end of file
+var _0x3f8c=['index','/:id','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','destroy','exports','path','connect-timeout','express','Router','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3f8c,0x104));var _0xc3f8=function(_0x12fc61,_0x192b02){_0x12fc61=_0x12fc61-0x0;var _0x364b7c=_0x3f8c[_0x12fc61];return _0x364b7c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc3f8('0x0'));var timeout=require(_0xc3f8('0x1'));var express=require(_0xc3f8('0x2'));var router=express[_0xc3f8('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('./intFreshsalesAccount.controller');router[_0xc3f8('0x4')]('/',auth[_0xc3f8('0x5')](),controller[_0xc3f8('0x6')]);router[_0xc3f8('0x4')](_0xc3f8('0x7'),auth[_0xc3f8('0x5')](),controller['show']);router[_0xc3f8('0x4')](_0xc3f8('0x8'),auth[_0xc3f8('0x5')](),controller[_0xc3f8('0x9')]);router[_0xc3f8('0x4')](_0xc3f8('0xa'),auth[_0xc3f8('0x5')](),controller['getFields']);router[_0xc3f8('0xb')]('/',auth[_0xc3f8('0x5')](),controller[_0xc3f8('0xc')]);router[_0xc3f8('0xb')]('/:id/configurations',auth[_0xc3f8('0x5')](),controller[_0xc3f8('0xd')]);router[_0xc3f8('0xe')](_0xc3f8('0x7'),auth['isAuthenticated'](),controller[_0xc3f8('0xf')]);router[_0xc3f8('0x10')](_0xc3f8('0x7'),auth[_0xc3f8('0x5')](),controller[_0xc3f8('0x11')]);module[_0xc3f8('0x12')]=router;
\ No newline at end of file
index 8489ced..1c52560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['exports','STRING','remoteUri'];(function(_0x18a436,_0x1dbe06){var _0x5c2cf8=function(_0x4712d1){while(--_0x4712d1){_0x18a436['push'](_0x18a436['shift']());}};_0x5c2cf8(++_0x1dbe06);}(_0x6d38,0x1ef));var _0x86d3=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x6d38[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require('sequelize');module[_0x86d3('0x0')]={'name':{'type':Sequelize[_0x86d3('0x1')]},'description':{'type':Sequelize[_0x86d3('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'apiKey':{'type':Sequelize[_0x86d3('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x86d3('0x2')},'serverUrl':{'type':Sequelize[_0x86d3('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x4213=['exports','STRING','username','remoteUri','sequelize'];(function(_0xe6be60,_0x489711){var _0x193676=function(_0x51f0b0){while(--_0x51f0b0){_0xe6be60['push'](_0xe6be60['shift']());}};_0x193676(++_0x489711);}(_0x4213,0x77));var _0x3421=function(_0x22f048,_0x20c372){_0x22f048=_0x22f048-0x0;var _0xda0bfa=_0x4213[_0x22f048];return _0xda0bfa;};'use strict';var Sequelize=require(_0x3421('0x0'));module[_0x3421('0x1')]={'name':{'type':Sequelize[_0x3421('0x2')]},'description':{'type':Sequelize[_0x3421('0x2')]},'username':{'type':Sequelize[_0x3421('0x2')],'unique':_0x3421('0x3')},'apiKey':{'type':Sequelize[_0x3421('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x3421('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index ce502c9..fdbc881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d45=['getFields','username','remoteUri','slice','substring','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','update','destroy','then','error','name','send','FreshsalesAccount','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','params','keys','options','find','create','body','findOne','hasOwnProperty','nolimit','getConfigurations','addConfiguration','AccountId','getSubjects','Descriptions','getDescriptions','FreshsalesField','Subjects'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x2d45,0x1aa));var _0x52d4=function(_0x2c157f,_0x459f72){_0x2c157f=_0x2c157f-0x0;var _0x40d7c9=_0x2d45[_0x2c157f];return _0x40d7c9;};'use strict';var emlformat=require(_0x52d4('0x0'));var rimraf=require(_0x52d4('0x1'));var zipdir=require(_0x52d4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x52d4('0x3'));var BPromise=require(_0x52d4('0x4'));var Mustache=require(_0x52d4('0x5'));var util=require(_0x52d4('0x6'));var path=require('path');var sox=require(_0x52d4('0x7'));var csv=require('to-csv');var ejs=require(_0x52d4('0x8'));var fs=require('fs');var fs_extra=require(_0x52d4('0x9'));var _=require('lodash');var squel=require(_0x52d4('0xa'));var crypto=require('crypto');var jsforce=require(_0x52d4('0xb'));var deskjs=require(_0x52d4('0xc'));var toCsv=require(_0x52d4('0xd'));var querystring=require(_0x52d4('0xe'));var Papa=require(_0x52d4('0xf'));var Redis=require('ioredis');var authService=require(_0x52d4('0x10'));var qs=require(_0x52d4('0x11'));var as=require(_0x52d4('0x12'));var hardwareService=require(_0x52d4('0x13'));var logger=require('../../config/logger')(_0x52d4('0x14'));var utils=require('../../config/utils');var config=require(_0x52d4('0x15'));var licenseUtil=require(_0x52d4('0x16'));var db=require(_0x52d4('0x17'))['db'];var integrations=require(_0x52d4('0x18'));function respondWithStatusCode(_0x3f2580,_0x10bba6){_0x10bba6=_0x10bba6||0xcc;return function(_0x3aec10){if(_0x3aec10){return _0x3f2580[_0x52d4('0x19')](_0x10bba6);}return _0x3f2580[_0x52d4('0x1a')](_0x10bba6)[_0x52d4('0x1b')]();};}function respondWithResult(_0x5d424d,_0x3002dc){_0x3002dc=_0x3002dc||0xc8;return function(_0x27a16e){if(_0x27a16e){return _0x5d424d[_0x52d4('0x1a')](_0x3002dc)['json'](_0x27a16e);}};}function respondWithFilteredResult(_0x30864f,_0x322e7d){return function(_0x54558f){if(_0x54558f){var _0x1bbe75=typeof _0x322e7d['offset']===_0x52d4('0x1c')&&typeof _0x322e7d[_0x52d4('0x1d')]===_0x52d4('0x1c');var _0x4a1729=_0x54558f['count'];var _0x3a78f7=_0x1bbe75?0x0:_0x322e7d[_0x52d4('0x1e')];var _0x5d8fe0=_0x1bbe75?_0x54558f[_0x52d4('0x1f')]:_0x322e7d[_0x52d4('0x1e')]+_0x322e7d[_0x52d4('0x1d')];var _0x464fff;if(_0x5d8fe0>=_0x4a1729){_0x5d8fe0=_0x4a1729;_0x464fff=0xc8;}else{_0x464fff=0xce;}_0x30864f['status'](_0x464fff);return _0x30864f['set'](_0x52d4('0x20'),_0x3a78f7+'-'+_0x5d8fe0+'/'+_0x4a1729)[_0x52d4('0x21')](_0x54558f);}return null;};}function patchUpdates(_0x59a199){return function(_0x3f5678){try{jsonpatch[_0x52d4('0x22')](_0x3f5678,_0x59a199,!![]);}catch(_0x52f586){return BPromise[_0x52d4('0x23')](_0x52f586);}return _0x3f5678[_0x52d4('0x24')]();};}function saveUpdates(_0x188887,_0x32d6d3){return function(_0x5ac615){if(_0x5ac615){return _0x5ac615[_0x52d4('0x25')](_0x188887)['then'](function(_0x6f8d6e){return _0x6f8d6e;});}return null;};}function removeEntity(_0x83ec00,_0x448f25){return function(_0x4420dd){if(_0x4420dd){return _0x4420dd[_0x52d4('0x26')]()[_0x52d4('0x27')](function(){_0x83ec00[_0x52d4('0x1a')](0xcc)[_0x52d4('0x1b')]();});}};}function handleEntityNotFound(_0x2dbb57,_0x2af09d){return function(_0x2a1a8c){if(!_0x2a1a8c){_0x2dbb57[_0x52d4('0x19')](0x194);}return _0x2a1a8c;};}function handleError(_0x47b51a,_0x2e6050){_0x2e6050=_0x2e6050||0x1f4;return function(_0xfb3882){logger[_0x52d4('0x28')](_0xfb3882['stack']);if(_0xfb3882[_0x52d4('0x29')]){delete _0xfb3882['name'];}_0x47b51a[_0x52d4('0x1a')](_0x2e6050)[_0x52d4('0x2a')](_0xfb3882);};}exports['index']=function(_0x3e8223,_0x445b7e){var _0xf6a828={},_0xdb8cf2={},_0x536e4b={'count':0x0,'rows':[]};var _0x355fca=_['map'](db[_0x52d4('0x2b')][_0x52d4('0x2c')],function(_0x4f1209){return{'name':_0x4f1209[_0x52d4('0x2d')],'type':_0x4f1209[_0x52d4('0x2e')][_0x52d4('0x2f')]};});_0xdb8cf2[_0x52d4('0x30')]=_[_0x52d4('0x31')](_0x355fca,_0x52d4('0x29'));_0xdb8cf2['query']=_['keys'](_0x3e8223[_0x52d4('0x32')]);_0xdb8cf2[_0x52d4('0x33')]=_[_0x52d4('0x34')](_0xdb8cf2[_0x52d4('0x30')],_0xdb8cf2[_0x52d4('0x32')]);_0xf6a828[_0x52d4('0x35')]=_[_0x52d4('0x34')](_0xdb8cf2['model'],qs['fields'](_0x3e8223[_0x52d4('0x32')][_0x52d4('0x36')]));_0xf6a828[_0x52d4('0x35')]=_0xf6a828['attributes'][_0x52d4('0x37')]?_0xf6a828[_0x52d4('0x35')]:_0xdb8cf2[_0x52d4('0x30')];if(!_0x3e8223[_0x52d4('0x32')]['hasOwnProperty']('nolimit')){_0xf6a828[_0x52d4('0x1d')]=qs[_0x52d4('0x1d')](_0x3e8223['query']['limit']);_0xf6a828[_0x52d4('0x1e')]=qs[_0x52d4('0x1e')](_0x3e8223['query'][_0x52d4('0x1e')]);}_0xf6a828[_0x52d4('0x38')]=qs[_0x52d4('0x39')](_0x3e8223['query']['sort']);_0xf6a828[_0x52d4('0x3a')]=qs[_0x52d4('0x33')](_[_0x52d4('0x3b')](_0x3e8223[_0x52d4('0x32')],_0xdb8cf2[_0x52d4('0x33')]),_0x355fca);if(_0x3e8223['query'][_0x52d4('0x3c')]){_0xf6a828[_0x52d4('0x3a')]=_[_0x52d4('0x3d')](_0xf6a828[_0x52d4('0x3a')],{'$or':_[_0x52d4('0x31')](_0x355fca,function(_0x2ad8a2){if(_0x2ad8a2[_0x52d4('0x2e')]!=='VIRTUAL'){var _0x9737a4={};_0x9737a4[_0x2ad8a2[_0x52d4('0x29')]]={'$like':'%'+_0x3e8223[_0x52d4('0x32')][_0x52d4('0x3c')]+'%'};return _0x9737a4;}})});}_0xf6a828=_['merge']({},_0xf6a828,_0x3e8223['options']);var _0x4dd1ab={'where':_0xf6a828[_0x52d4('0x3a')]};return db[_0x52d4('0x2b')][_0x52d4('0x1f')](_0x4dd1ab)[_0x52d4('0x27')](function(_0x4f9d38){_0x536e4b[_0x52d4('0x1f')]=_0x4f9d38;if(_0x3e8223[_0x52d4('0x32')][_0x52d4('0x3e')]){_0xf6a828[_0x52d4('0x3f')]=[{'all':!![]}];}return db[_0x52d4('0x2b')][_0x52d4('0x40')](_0xf6a828);})[_0x52d4('0x27')](function(_0x58c411){_0x536e4b[_0x52d4('0x41')]=_0x58c411;return _0x536e4b;})[_0x52d4('0x27')](respondWithFilteredResult(_0x445b7e,_0xf6a828))[_0x52d4('0x42')](handleError(_0x445b7e,null));};exports['show']=function(_0x2c6280,_0x4cc276){var _0x134b4f={'raw':![],'where':{'id':_0x2c6280[_0x52d4('0x43')]['id']}},_0x4b8a4c={};_0x4b8a4c[_0x52d4('0x30')]=_['keys'](db[_0x52d4('0x2b')][_0x52d4('0x2c')]);_0x4b8a4c[_0x52d4('0x32')]=_[_0x52d4('0x44')](_0x2c6280[_0x52d4('0x32')]);_0x4b8a4c[_0x52d4('0x33')]=_[_0x52d4('0x34')](_0x4b8a4c[_0x52d4('0x30')],_0x4b8a4c[_0x52d4('0x32')]);_0x134b4f[_0x52d4('0x35')]=_[_0x52d4('0x34')](_0x4b8a4c['model'],qs[_0x52d4('0x36')](_0x2c6280[_0x52d4('0x32')][_0x52d4('0x36')]));_0x134b4f[_0x52d4('0x35')]=_0x134b4f[_0x52d4('0x35')][_0x52d4('0x37')]?_0x134b4f[_0x52d4('0x35')]:_0x4b8a4c['model'];if(_0x2c6280[_0x52d4('0x32')]['includeAll']){_0x134b4f['include']=[{'all':!![]}];}_0x134b4f=_[_0x52d4('0x3d')]({},_0x134b4f,_0x2c6280[_0x52d4('0x45')]);return db['FreshsalesAccount'][_0x52d4('0x46')](_0x134b4f)[_0x52d4('0x27')](handleEntityNotFound(_0x4cc276,null))[_0x52d4('0x27')](respondWithResult(_0x4cc276,null))[_0x52d4('0x42')](handleError(_0x4cc276,null));};exports[_0x52d4('0x47')]=function(_0x59e551,_0x2a88ea){return db[_0x52d4('0x2b')]['create'](_0x59e551[_0x52d4('0x48')],{})[_0x52d4('0x27')](respondWithResult(_0x2a88ea,0xc9))[_0x52d4('0x42')](handleError(_0x2a88ea,null));};exports[_0x52d4('0x25')]=function(_0xb4f746,_0x59b3f6){if(_0xb4f746[_0x52d4('0x48')]['id']){delete _0xb4f746['body']['id'];}return db[_0x52d4('0x2b')][_0x52d4('0x46')]({'where':{'id':_0xb4f746[_0x52d4('0x43')]['id']}})[_0x52d4('0x27')](handleEntityNotFound(_0x59b3f6,null))[_0x52d4('0x27')](saveUpdates(_0xb4f746[_0x52d4('0x48')],null))['then'](respondWithResult(_0x59b3f6,null))[_0x52d4('0x42')](handleError(_0x59b3f6,null));};exports[_0x52d4('0x26')]=function(_0x25aa27,_0x15b27a){return db[_0x52d4('0x2b')][_0x52d4('0x46')]({'where':{'id':_0x25aa27[_0x52d4('0x43')]['id']}})['then'](handleEntityNotFound(_0x15b27a,null))[_0x52d4('0x27')](removeEntity(_0x15b27a,null))['catch'](handleError(_0x15b27a,null));};exports['getConfigurations']=function(_0x363023,_0x1ed8c8,_0x5a553d){var _0x215d95={};var _0x15710d={};var _0x3eebd8;var _0x584891;return db['FreshsalesAccount'][_0x52d4('0x49')]({'where':{'id':_0x363023[_0x52d4('0x43')]['id']}})['then'](handleEntityNotFound(_0x1ed8c8,null))[_0x52d4('0x27')](function(_0x2abec4){if(_0x2abec4){_0x3eebd8=_0x2abec4;_0x15710d[_0x52d4('0x30')]=_[_0x52d4('0x44')](db['FreshsalesConfiguration'][_0x52d4('0x2c')]);_0x15710d[_0x52d4('0x32')]=_[_0x52d4('0x44')](_0x363023[_0x52d4('0x32')]);_0x15710d['filters']=_['intersection'](_0x15710d[_0x52d4('0x30')],_0x15710d[_0x52d4('0x32')]);_0x215d95['attributes']=_[_0x52d4('0x34')](_0x15710d[_0x52d4('0x30')],qs['fields'](_0x363023[_0x52d4('0x32')][_0x52d4('0x36')]));_0x215d95[_0x52d4('0x35')]=_0x215d95[_0x52d4('0x35')]['length']?_0x215d95[_0x52d4('0x35')]:_0x15710d[_0x52d4('0x30')];_0x215d95[_0x52d4('0x38')]=qs['sort'](_0x363023[_0x52d4('0x32')][_0x52d4('0x39')]);_0x215d95[_0x52d4('0x3a')]=qs[_0x52d4('0x33')](_['pick'](_0x363023[_0x52d4('0x32')],_0x15710d[_0x52d4('0x33')]));if(_0x363023[_0x52d4('0x32')]['filter']){_0x215d95[_0x52d4('0x3a')]=_[_0x52d4('0x3d')](_0x215d95[_0x52d4('0x3a')],{'$or':_[_0x52d4('0x31')](_0x215d95[_0x52d4('0x35')],function(_0x64cc51){var _0xa981a5={};_0xa981a5[_0x64cc51]={'$like':'%'+_0x363023[_0x52d4('0x32')][_0x52d4('0x3c')]+'%'};return _0xa981a5;})});}_0x215d95=_[_0x52d4('0x3d')]({},_0x215d95,_0x363023[_0x52d4('0x45')]);return _0x3eebd8['getConfigurations'](_0x215d95);}})['then'](function(_0x4e59d2){if(_0x4e59d2){_0x584891=_0x4e59d2['length'];if(!_0x363023[_0x52d4('0x32')][_0x52d4('0x4a')](_0x52d4('0x4b'))){_0x215d95[_0x52d4('0x1d')]=qs['limit'](_0x363023[_0x52d4('0x32')]['limit']);_0x215d95[_0x52d4('0x1e')]=qs['offset'](_0x363023['query'][_0x52d4('0x1e')]);}return _0x3eebd8[_0x52d4('0x4c')](_0x215d95);}})['then'](function(_0x2f5900){if(_0x2f5900){return _0x2f5900?{'count':_0x584891,'rows':_0x2f5900}:null;}})[_0x52d4('0x27')](respondWithResult(_0x1ed8c8,null))['catch'](handleError(_0x1ed8c8,null));};exports[_0x52d4('0x4d')]=function(_0x4ff279,_0x14eea1,_0xe1bb37){if(_0x4ff279['body']['id']){delete _0x4ff279[_0x52d4('0x48')]['id'];}return db[_0x52d4('0x2b')][_0x52d4('0x49')]({'where':{'id':_0x4ff279[_0x52d4('0x43')]['id']}})['then'](handleEntityNotFound(_0x14eea1,null))[_0x52d4('0x27')](function(_0x347a6f){if(_0x347a6f){_0x4ff279['body'][_0x52d4('0x4e')]=_0x347a6f['id'];_0x4ff279['body']['Subjects']=integrations[_0x52d4('0x4f')](_0x4ff279[_0x52d4('0x48')]['channel'],_0x4ff279[_0x52d4('0x48')][_0x52d4('0x2e')]);_0x4ff279['body'][_0x52d4('0x50')]=integrations[_0x52d4('0x51')](_0x4ff279[_0x52d4('0x48')]['channel'],_0x4ff279[_0x52d4('0x48')][_0x52d4('0x2e')]);return db['FreshsalesConfiguration'][_0x52d4('0x47')](_0x4ff279[_0x52d4('0x48')],{'include':[{'model':db[_0x52d4('0x52')],'as':_0x52d4('0x53')},{'model':db[_0x52d4('0x52')],'as':_0x52d4('0x50')}]});}return null;})[_0x52d4('0x27')](respondWithResult(_0x14eea1,null))[_0x52d4('0x42')](handleError(_0x14eea1,null));};exports[_0x52d4('0x54')]=function(_0x189425,_0x4e8be7,_0x305b8c){var _0x5c4b50='';var _0xcc2746='';return db[_0x52d4('0x2b')][_0x52d4('0x49')]({'where':{'id':_0x189425[_0x52d4('0x43')]['id']},'attributes':['id',_0x52d4('0x55'),'remoteUri','apiKey']})[_0x52d4('0x27')](handleEntityNotFound(_0x4e8be7,null))['then'](function(_0x50e2a6){if(_0x50e2a6){_0xcc2746=_0x50e2a6[_0x52d4('0x55')];_0x5c4b50=_0x50e2a6['remoteUri'];var _0x33dc23=_0x50e2a6[_0x52d4('0x56')][_0x52d4('0x57')](-0x1);if(_0x33dc23==='/'){_0x5c4b50=_0x5c4b50[_0x52d4('0x58')](0x0,_0x5c4b50[_0x52d4('0x59')](_0x33dc23));}return rp({'method':'GET','uri':util[_0x52d4('0x5a')](_0x52d4('0x5b'),_0x5c4b50,_0x52d4('0x5c')),'headers':{'Authorization':_0x52d4('0x5d')+_0x50e2a6['apiKey']},'json':!![]});}})['then'](function(_0x5893de){if(_0x5893de){var _0x3c79fe=_0x5893de[_0x52d4('0x5e')];var _0xbccadb=![];var _0x3ed3cd=null;for(_0x3ed3cd=0x0;_0x3ed3cd<_0x3c79fe[_0x52d4('0x37')];_0x3ed3cd++){if(_0x3c79fe[_0x3ed3cd][_0x52d4('0x5f')]===_0xcc2746){_0xbccadb=!![];}}if(_0xbccadb){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x52d4('0x60')});}}})[_0x52d4('0x27')](respondWithResult(_0x4e8be7,null))['catch'](function(_0x36389a){var _0x3b48bc=_0x189425['query']['test']?0x1f4:_0x36389a[_0x52d4('0x61')]||0x1f4;logger[_0x52d4('0x28')](_0x52d4('0x62'),_0x52d4('0x54'),_0x3b48bc,JSON[_0x52d4('0x63')](_0x36389a));delete _0x36389a[_0x52d4('0x29')];if(_0x3b48bc===0x191){_0x3b48bc=0x190;}_0x4e8be7[_0x52d4('0x1a')](_0x3b48bc)[_0x52d4('0x2a')](_0x189425['query'][_0x52d4('0x64')]?{'message':_0x52d4('0x65'),'statusCode':_0x36389a['statusCode']}:_0x36389a);});};
\ No newline at end of file
+var _0x0d4d=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','include','create','body','find','findOne','order','getConfigurations','addConfiguration','AccountId','getSubjects','Descriptions','getDescriptions','channel','FreshsalesField','getFields','remoteUri','apiKey','username','slice','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','moment','util','path','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','error','stack','name','send','map','FreshsalesAccount','type','key','model','query'];(function(_0x33b16d,_0x20ed8a){var _0x288dae=function(_0x588fb7){while(--_0x588fb7){_0x33b16d['push'](_0x33b16d['shift']());}};_0x288dae(++_0x20ed8a);}(_0x0d4d,0xf2));var _0xd0d4=function(_0x57fe4f,_0x20635c){_0x57fe4f=_0x57fe4f-0x0;var _0x270166=_0x0d4d[_0x57fe4f];return _0x270166;};'use strict';var emlformat=require(_0xd0d4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd0d4('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd0d4('0x2'));var path=require(_0xd0d4('0x3'));var sox=require(_0xd0d4('0x4'));var csv=require('to-csv');var ejs=require(_0xd0d4('0x5'));var fs=require('fs');var fs_extra=require(_0xd0d4('0x6'));var _=require('lodash');var squel=require(_0xd0d4('0x7'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd0d4('0x8'));var toCsv=require(_0xd0d4('0x9'));var querystring=require(_0xd0d4('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd0d4('0xb'));var qs=require(_0xd0d4('0xc'));var as=require(_0xd0d4('0xd'));var hardwareService=require(_0xd0d4('0xe'));var logger=require(_0xd0d4('0xf'))('api');var utils=require('../../config/utils');var config=require(_0xd0d4('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0xd0d4('0x11'))['db'];var integrations=require(_0xd0d4('0x12'));function respondWithStatusCode(_0x148562,_0x15cb12){_0x15cb12=_0x15cb12||0xcc;return function(_0x4aa6a4){if(_0x4aa6a4){return _0x148562[_0xd0d4('0x13')](_0x15cb12);}return _0x148562['status'](_0x15cb12)[_0xd0d4('0x14')]();};}function respondWithResult(_0xd49c88,_0x50bfdc){_0x50bfdc=_0x50bfdc||0xc8;return function(_0x3d633f){if(_0x3d633f){return _0xd49c88[_0xd0d4('0x15')](_0x50bfdc)[_0xd0d4('0x16')](_0x3d633f);}};}function respondWithFilteredResult(_0x506a29,_0x2611ba){return function(_0x340638){if(_0x340638){var _0x36c08e=typeof _0x2611ba[_0xd0d4('0x17')]===_0xd0d4('0x18')&&typeof _0x2611ba[_0xd0d4('0x19')]==='undefined';var _0x5d77b0=_0x340638[_0xd0d4('0x1a')];var _0x536a1e=_0x36c08e?0x0:_0x2611ba[_0xd0d4('0x17')];var _0x56d5fe=_0x36c08e?_0x340638[_0xd0d4('0x1a')]:_0x2611ba[_0xd0d4('0x17')]+_0x2611ba[_0xd0d4('0x19')];var _0x32ebe6;if(_0x56d5fe>=_0x5d77b0){_0x56d5fe=_0x5d77b0;_0x32ebe6=0xc8;}else{_0x32ebe6=0xce;}_0x506a29['status'](_0x32ebe6);return _0x506a29[_0xd0d4('0x1b')]('Content-Range',_0x536a1e+'-'+_0x56d5fe+'/'+_0x5d77b0)[_0xd0d4('0x16')](_0x340638);}return null;};}function patchUpdates(_0x34c844){return function(_0x264e1f){try{jsonpatch[_0xd0d4('0x1c')](_0x264e1f,_0x34c844,!![]);}catch(_0x52501c){return BPromise[_0xd0d4('0x1d')](_0x52501c);}return _0x264e1f['save']();};}function saveUpdates(_0x40c484,_0x341a65){return function(_0xa3dd6e){if(_0xa3dd6e){return _0xa3dd6e[_0xd0d4('0x1e')](_0x40c484)[_0xd0d4('0x1f')](function(_0x529e13){return _0x529e13;});}return null;};}function removeEntity(_0x41c002,_0x330d83){return function(_0x3d794f){if(_0x3d794f){return _0x3d794f[_0xd0d4('0x20')]()[_0xd0d4('0x1f')](function(){_0x41c002[_0xd0d4('0x15')](0xcc)[_0xd0d4('0x14')]();});}};}function handleEntityNotFound(_0x5c2778,_0x5e0e8f){return function(_0x32243e){if(!_0x32243e){_0x5c2778[_0xd0d4('0x13')](0x194);}return _0x32243e;};}function handleError(_0x3e5a3d,_0x5acbed){_0x5acbed=_0x5acbed||0x1f4;return function(_0x38de72){logger[_0xd0d4('0x21')](_0x38de72[_0xd0d4('0x22')]);if(_0x38de72['name']){delete _0x38de72[_0xd0d4('0x23')];}_0x3e5a3d[_0xd0d4('0x15')](_0x5acbed)[_0xd0d4('0x24')](_0x38de72);};}exports['index']=function(_0x1436c0,_0x36778c){var _0x3557fd={},_0x263da2={},_0x5beb5c={'count':0x0,'rows':[]};var _0x8c5b3f=_[_0xd0d4('0x25')](db[_0xd0d4('0x26')]['rawAttributes'],function(_0x6855a7){return{'name':_0x6855a7['fieldName'],'type':_0x6855a7[_0xd0d4('0x27')][_0xd0d4('0x28')]};});_0x263da2[_0xd0d4('0x29')]=_[_0xd0d4('0x25')](_0x8c5b3f,_0xd0d4('0x23'));_0x263da2[_0xd0d4('0x2a')]=_['keys'](_0x1436c0[_0xd0d4('0x2a')]);_0x263da2[_0xd0d4('0x2b')]=_[_0xd0d4('0x2c')](_0x263da2[_0xd0d4('0x29')],_0x263da2['query']);_0x3557fd[_0xd0d4('0x2d')]=_[_0xd0d4('0x2c')](_0x263da2[_0xd0d4('0x29')],qs[_0xd0d4('0x2e')](_0x1436c0[_0xd0d4('0x2a')][_0xd0d4('0x2e')]));_0x3557fd['attributes']=_0x3557fd[_0xd0d4('0x2d')][_0xd0d4('0x2f')]?_0x3557fd[_0xd0d4('0x2d')]:_0x263da2['model'];if(!_0x1436c0[_0xd0d4('0x2a')][_0xd0d4('0x30')](_0xd0d4('0x31'))){_0x3557fd[_0xd0d4('0x19')]=qs['limit'](_0x1436c0[_0xd0d4('0x2a')][_0xd0d4('0x19')]);_0x3557fd[_0xd0d4('0x17')]=qs[_0xd0d4('0x17')](_0x1436c0['query'][_0xd0d4('0x17')]);}_0x3557fd['order']=qs['sort'](_0x1436c0['query'][_0xd0d4('0x32')]);_0x3557fd['where']=qs[_0xd0d4('0x2b')](_[_0xd0d4('0x33')](_0x1436c0[_0xd0d4('0x2a')],_0x263da2[_0xd0d4('0x2b')]),_0x8c5b3f);if(_0x1436c0[_0xd0d4('0x2a')][_0xd0d4('0x34')]){_0x3557fd[_0xd0d4('0x35')]=_[_0xd0d4('0x36')](_0x3557fd['where'],{'$or':_['map'](_0x8c5b3f,function(_0x5a1b5b){if(_0x5a1b5b[_0xd0d4('0x27')]!==_0xd0d4('0x37')){var _0x1a3d17={};_0x1a3d17[_0x5a1b5b[_0xd0d4('0x23')]]={'$like':'%'+_0x1436c0[_0xd0d4('0x2a')]['filter']+'%'};return _0x1a3d17;}})});}_0x3557fd=_[_0xd0d4('0x36')]({},_0x3557fd,_0x1436c0[_0xd0d4('0x38')]);var _0x49eb85={'where':_0x3557fd['where']};return db[_0xd0d4('0x26')][_0xd0d4('0x1a')](_0x49eb85)[_0xd0d4('0x1f')](function(_0x8b6c96){_0x5beb5c[_0xd0d4('0x1a')]=_0x8b6c96;if(_0x1436c0[_0xd0d4('0x2a')][_0xd0d4('0x39')]){_0x3557fd['include']=[{'all':!![]}];}return db['FreshsalesAccount'][_0xd0d4('0x3a')](_0x3557fd);})[_0xd0d4('0x1f')](function(_0x3041e8){_0x5beb5c[_0xd0d4('0x3b')]=_0x3041e8;return _0x5beb5c;})[_0xd0d4('0x1f')](respondWithFilteredResult(_0x36778c,_0x3557fd))[_0xd0d4('0x3c')](handleError(_0x36778c,null));};exports['show']=function(_0x923e8d,_0x4d811c){var _0x20457b={'raw':![],'where':{'id':_0x923e8d[_0xd0d4('0x3d')]['id']}},_0x5bd4ef={};_0x5bd4ef[_0xd0d4('0x29')]=_[_0xd0d4('0x3e')](db[_0xd0d4('0x26')][_0xd0d4('0x3f')]);_0x5bd4ef[_0xd0d4('0x2a')]=_[_0xd0d4('0x3e')](_0x923e8d['query']);_0x5bd4ef[_0xd0d4('0x2b')]=_[_0xd0d4('0x2c')](_0x5bd4ef[_0xd0d4('0x29')],_0x5bd4ef[_0xd0d4('0x2a')]);_0x20457b['attributes']=_[_0xd0d4('0x2c')](_0x5bd4ef['model'],qs[_0xd0d4('0x2e')](_0x923e8d[_0xd0d4('0x2a')][_0xd0d4('0x2e')]));_0x20457b[_0xd0d4('0x2d')]=_0x20457b[_0xd0d4('0x2d')]['length']?_0x20457b[_0xd0d4('0x2d')]:_0x5bd4ef[_0xd0d4('0x29')];if(_0x923e8d['query']['includeAll']){_0x20457b[_0xd0d4('0x40')]=[{'all':!![]}];}_0x20457b=_[_0xd0d4('0x36')]({},_0x20457b,_0x923e8d[_0xd0d4('0x38')]);return db[_0xd0d4('0x26')]['find'](_0x20457b)[_0xd0d4('0x1f')](handleEntityNotFound(_0x4d811c,null))[_0xd0d4('0x1f')](respondWithResult(_0x4d811c,null))[_0xd0d4('0x3c')](handleError(_0x4d811c,null));};exports[_0xd0d4('0x41')]=function(_0x81847a,_0x3bf4fc){return db[_0xd0d4('0x26')][_0xd0d4('0x41')](_0x81847a[_0xd0d4('0x42')],{})[_0xd0d4('0x1f')](respondWithResult(_0x3bf4fc,0xc9))[_0xd0d4('0x3c')](handleError(_0x3bf4fc,null));};exports[_0xd0d4('0x1e')]=function(_0x4800fa,_0x91b6f7){if(_0x4800fa[_0xd0d4('0x42')]['id']){delete _0x4800fa[_0xd0d4('0x42')]['id'];}return db[_0xd0d4('0x26')][_0xd0d4('0x43')]({'where':{'id':_0x4800fa[_0xd0d4('0x3d')]['id']}})[_0xd0d4('0x1f')](handleEntityNotFound(_0x91b6f7,null))[_0xd0d4('0x1f')](saveUpdates(_0x4800fa[_0xd0d4('0x42')],null))[_0xd0d4('0x1f')](respondWithResult(_0x91b6f7,null))[_0xd0d4('0x3c')](handleError(_0x91b6f7,null));};exports['destroy']=function(_0x50a008,_0x227f33){return db[_0xd0d4('0x26')][_0xd0d4('0x43')]({'where':{'id':_0x50a008[_0xd0d4('0x3d')]['id']}})[_0xd0d4('0x1f')](handleEntityNotFound(_0x227f33,null))[_0xd0d4('0x1f')](removeEntity(_0x227f33,null))[_0xd0d4('0x3c')](handleError(_0x227f33,null));};exports['getConfigurations']=function(_0x583b5e,_0x10dd83,_0x232509){var _0x4b86ab={};var _0x35ca40={};var _0x181d32;var _0x26278e;return db[_0xd0d4('0x26')][_0xd0d4('0x44')]({'where':{'id':_0x583b5e[_0xd0d4('0x3d')]['id']}})[_0xd0d4('0x1f')](handleEntityNotFound(_0x10dd83,null))[_0xd0d4('0x1f')](function(_0x52c2ea){if(_0x52c2ea){_0x181d32=_0x52c2ea;_0x35ca40[_0xd0d4('0x29')]=_[_0xd0d4('0x3e')](db['FreshsalesConfiguration'][_0xd0d4('0x3f')]);_0x35ca40[_0xd0d4('0x2a')]=_['keys'](_0x583b5e[_0xd0d4('0x2a')]);_0x35ca40['filters']=_[_0xd0d4('0x2c')](_0x35ca40['model'],_0x35ca40['query']);_0x4b86ab['attributes']=_[_0xd0d4('0x2c')](_0x35ca40[_0xd0d4('0x29')],qs[_0xd0d4('0x2e')](_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x2e')]));_0x4b86ab['attributes']=_0x4b86ab[_0xd0d4('0x2d')][_0xd0d4('0x2f')]?_0x4b86ab[_0xd0d4('0x2d')]:_0x35ca40['model'];_0x4b86ab[_0xd0d4('0x45')]=qs[_0xd0d4('0x32')](_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x32')]);_0x4b86ab['where']=qs[_0xd0d4('0x2b')](_[_0xd0d4('0x33')](_0x583b5e[_0xd0d4('0x2a')],_0x35ca40[_0xd0d4('0x2b')]));if(_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x34')]){_0x4b86ab[_0xd0d4('0x35')]=_[_0xd0d4('0x36')](_0x4b86ab['where'],{'$or':_[_0xd0d4('0x25')](_0x4b86ab[_0xd0d4('0x2d')],function(_0x1496d7){var _0x4e0190={};_0x4e0190[_0x1496d7]={'$like':'%'+_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x34')]+'%'};return _0x4e0190;})});}_0x4b86ab=_[_0xd0d4('0x36')]({},_0x4b86ab,_0x583b5e[_0xd0d4('0x38')]);return _0x181d32[_0xd0d4('0x46')](_0x4b86ab);}})[_0xd0d4('0x1f')](function(_0x311fd8){if(_0x311fd8){_0x26278e=_0x311fd8[_0xd0d4('0x2f')];if(!_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x30')](_0xd0d4('0x31'))){_0x4b86ab['limit']=qs[_0xd0d4('0x19')](_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x19')]);_0x4b86ab[_0xd0d4('0x17')]=qs[_0xd0d4('0x17')](_0x583b5e[_0xd0d4('0x2a')][_0xd0d4('0x17')]);}return _0x181d32[_0xd0d4('0x46')](_0x4b86ab);}})[_0xd0d4('0x1f')](function(_0x1c405a){if(_0x1c405a){return _0x1c405a?{'count':_0x26278e,'rows':_0x1c405a}:null;}})[_0xd0d4('0x1f')](respondWithResult(_0x10dd83,null))[_0xd0d4('0x3c')](handleError(_0x10dd83,null));};exports[_0xd0d4('0x47')]=function(_0x2a12ba,_0x5de440,_0x28c7b0){if(_0x2a12ba[_0xd0d4('0x42')]['id']){delete _0x2a12ba['body']['id'];}return db[_0xd0d4('0x26')]['findOne']({'where':{'id':_0x2a12ba[_0xd0d4('0x3d')]['id']}})['then'](handleEntityNotFound(_0x5de440,null))[_0xd0d4('0x1f')](function(_0x160056){if(_0x160056){_0x2a12ba[_0xd0d4('0x42')][_0xd0d4('0x48')]=_0x160056['id'];_0x2a12ba[_0xd0d4('0x42')]['Subjects']=integrations[_0xd0d4('0x49')](_0x2a12ba['body']['channel'],_0x2a12ba[_0xd0d4('0x42')]['type']);_0x2a12ba[_0xd0d4('0x42')][_0xd0d4('0x4a')]=integrations[_0xd0d4('0x4b')](_0x2a12ba['body'][_0xd0d4('0x4c')],_0x2a12ba['body'][_0xd0d4('0x27')]);return db['FreshsalesConfiguration'][_0xd0d4('0x41')](_0x2a12ba[_0xd0d4('0x42')],{'include':[{'model':db[_0xd0d4('0x4d')],'as':'Subjects'},{'model':db[_0xd0d4('0x4d')],'as':_0xd0d4('0x4a')}]});}return null;})['then'](respondWithResult(_0x5de440,null))[_0xd0d4('0x3c')](handleError(_0x5de440,null));};exports[_0xd0d4('0x4e')]=function(_0x49e036,_0x121ab1,_0x1a6671){var _0x3925ec='';var _0x3c46e7='';return db[_0xd0d4('0x26')][_0xd0d4('0x44')]({'where':{'id':_0x49e036['params']['id']},'attributes':['id','username',_0xd0d4('0x4f'),_0xd0d4('0x50')]})[_0xd0d4('0x1f')](handleEntityNotFound(_0x121ab1,null))[_0xd0d4('0x1f')](function(_0x3efb09){if(_0x3efb09){_0x3c46e7=_0x3efb09[_0xd0d4('0x51')];_0x3925ec=_0x3efb09['remoteUri'];var _0x1666bd=_0x3efb09[_0xd0d4('0x4f')][_0xd0d4('0x52')](-0x1);if(_0x1666bd==='/'){_0x3925ec=_0x3925ec['substring'](0x0,_0x3925ec[_0xd0d4('0x53')](_0x1666bd));}return rp({'method':_0xd0d4('0x54'),'uri':util[_0xd0d4('0x55')](_0xd0d4('0x56'),_0x3925ec,_0xd0d4('0x57')),'headers':{'Authorization':_0xd0d4('0x58')+_0x3efb09[_0xd0d4('0x50')]},'json':!![]});}})[_0xd0d4('0x1f')](function(_0x4052bf){if(_0x4052bf){var _0x1a13e9=_0x4052bf[_0xd0d4('0x59')];var _0x1ffe1d=![];var _0x3617d2=null;for(_0x3617d2=0x0;_0x3617d2<_0x1a13e9[_0xd0d4('0x2f')];_0x3617d2++){if(_0x1a13e9[_0x3617d2]['email']===_0x3c46e7){_0x1ffe1d=!![];}}if(_0x1ffe1d){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xd0d4('0x1f')](respondWithResult(_0x121ab1,null))[_0xd0d4('0x3c')](function(_0x45efcd){var _0x20e5ec=_0x49e036[_0xd0d4('0x2a')]['test']?0x1f4:_0x45efcd[_0xd0d4('0x5a')]||0x1f4;logger['error'](_0xd0d4('0x5b'),_0xd0d4('0x4e'),_0x20e5ec,JSON[_0xd0d4('0x5c')](_0x45efcd));delete _0x45efcd[_0xd0d4('0x23')];if(_0x20e5ec===0x191){_0x20e5ec=0x190;}_0x121ab1[_0xd0d4('0x15')](_0x20e5ec)['send'](_0x49e036[_0xd0d4('0x2a')][_0xd0d4('0x5d')]?{'message':_0xd0d4('0x5e'),'statusCode':_0x45efcd[_0xd0d4('0x5a')]}:_0x45efcd);});};
\ No newline at end of file
index 1e774f8..3627e39 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','./intFreshsalesAccount.attributes','FreshsalesAccount','int_freshsales_accounts'];(function(_0x793f11,_0x3d34b0){var _0x2040e4=function(_0x589906){while(--_0x589906){_0x793f11['push'](_0x793f11['shift']());}};_0x2040e4(++_0x3d34b0);}(_0x1261,0x144));var _0x1126=function(_0x1ad5a2,_0x45632b){_0x1ad5a2=_0x1ad5a2-0x0;var _0x51eba3=_0x1261[_0x1ad5a2];return _0x51eba3;};'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'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x40ba58,_0x907180){return _0x40ba58['define'](_0x1126('0xa'),attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2272=['request-promise','path','rimraf','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x30ac59,_0x12c676){var _0x1c1683=function(_0x378c03){while(--_0x378c03){_0x30ac59['push'](_0x30ac59['shift']());}};_0x1c1683(++_0x12c676);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var logger=require(_0x2227('0x2'))(_0x2227('0x3'));var moment=require(_0x2227('0x4'));var BPromise=require('bluebird');var rp=require(_0x2227('0x5'));var fs=require('fs');var path=require(_0x2227('0x6'));var rimraf=require(_0x2227('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x2227('0x8'));module[_0x2227('0x9')]=function(_0xb33647,_0x2591db){return _0xb33647[_0x2227('0xa')](_0x2227('0xb'),attributes,{'tableName':_0x2227('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93f7fc5..acd101c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['client','http','request','info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetFreshsalesAccount','FreshsalesAccount','options','attributes','limit','include','map','model','then','catch','ShowFreshsalesAccount','find','raw','where','util','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x27a0,0xbf));var _0x027a=function(_0x50be8c,_0x5ccbb8){_0x50be8c=_0x50be8c-0x0;var _0x1b9f68=_0x27a0[_0x50be8c];return _0x1b9f68;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var moment=require(_0x027a('0x1'));var BPromise=require(_0x027a('0x2'));var rs=require(_0x027a('0x3'));var fs=require('fs');var Redis=require(_0x027a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x027a('0x5'));var jayson=require(_0x027a('0x6'));var client=jayson[_0x027a('0x7')][_0x027a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe233ed,_0x3c7d67,_0x550fbb){return new BPromise(function(_0x3d1429,_0x271dfe){return client[_0x027a('0x9')](_0xe233ed,_0x550fbb)['then'](function(_0x44c56a){logger[_0x027a('0xa')](_0x027a('0xb'),_0x3c7d67,'request\x20sent');logger[_0x027a('0xc')](_0x027a('0xd'),_0x3c7d67,_0x027a('0xe'),JSON[_0x027a('0xf')](_0x44c56a));if(_0x44c56a[_0x027a('0x10')]){if(_0x44c56a[_0x027a('0x10')][_0x027a('0x11')]===0x1f4){logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x271dfe(_0x44c56a['error'][_0x027a('0x12')]);}logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x3d1429(_0x44c56a['error']['message']);}else{logger[_0x027a('0xa')]('FreshsalesAccount,\x20%s,\x20%s',_0x3c7d67,_0x027a('0xe'));_0x3d1429(_0x44c56a['result'][_0x027a('0x12')]);}})['catch'](function(_0x4dc3ab){logger['error'](_0x027a('0xb'),_0x3c7d67,_0x4dc3ab);_0x271dfe(_0x4dc3ab);});});}exports[_0x027a('0x13')]=function(_0x826d19){var _0x1fb40b=this;return new Promise(function(_0x52125e,_0x282e70){return db[_0x027a('0x14')]['findAll']({'raw':_0x826d19['options']?_0x826d19[_0x027a('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x826d19[_0x027a('0x15')]?_0x826d19['options']['where']||null:null,'attributes':_0x826d19['options']?_0x826d19['options'][_0x027a('0x16')]||null:null,'limit':_0x826d19[_0x027a('0x15')]?_0x826d19[_0x027a('0x15')][_0x027a('0x17')]||null:null,'include':_0x826d19['options']?_0x826d19[_0x027a('0x15')][_0x027a('0x18')]?_[_0x027a('0x19')](_0x826d19[_0x027a('0x15')][_0x027a('0x18')],function(_0x3bbd46){return{'model':db[_0x3bbd46['model']],'as':_0x3bbd46['as'],'attributes':_0x3bbd46[_0x027a('0x16')],'include':_0x3bbd46['include']?_[_0x027a('0x19')](_0x3bbd46[_0x027a('0x18')],function(_0x1b1a13){return{'model':db[_0x1b1a13[_0x027a('0x1a')]],'as':_0x1b1a13['as'],'attributes':_0x1b1a13['attributes'],'include':_0x1b1a13['include']?_[_0x027a('0x19')](_0x1b1a13[_0x027a('0x18')],function(_0x338141){return{'model':db[_0x338141[_0x027a('0x1a')]],'as':_0x338141['as'],'attributes':_0x338141['attributes']};}):[]};}):[]};}):[]:[]})[_0x027a('0x1b')](function(_0x55a8cd){logger[_0x027a('0xa')]('GetFreshsalesAccount',_0x826d19);logger[_0x027a('0xc')]('GetFreshsalesAccount',_0x826d19,JSON['stringify'](_0x55a8cd));_0x52125e(_0x55a8cd);})[_0x027a('0x1c')](function(_0x5782ac){logger['error'](_0x027a('0x13'),_0x5782ac['message'],_0x826d19);_0x282e70(_0x1fb40b[_0x027a('0x10')](0x1f4,_0x5782ac['message']));});});};exports[_0x027a('0x1d')]=function(_0xc99acc){var _0x4d9a29=this;return new Promise(function(_0xe4ea7d,_0x4b4ac4){return db[_0x027a('0x14')][_0x027a('0x1e')]({'raw':_0xc99acc[_0x027a('0x15')]?_0xc99acc[_0x027a('0x15')][_0x027a('0x1f')]===undefined?!![]:![]:!![],'where':_0xc99acc[_0x027a('0x15')]?_0xc99acc['options'][_0x027a('0x20')]||null:null,'attributes':_0xc99acc['options']?_0xc99acc[_0x027a('0x15')]['attributes']||null:null,'include':_0xc99acc[_0x027a('0x15')]?_0xc99acc[_0x027a('0x15')][_0x027a('0x18')]?_[_0x027a('0x19')](_0xc99acc[_0x027a('0x15')]['include'],function(_0x1274e1){return{'model':db[_0x1274e1[_0x027a('0x1a')]],'as':_0x1274e1['as'],'attributes':_0x1274e1[_0x027a('0x16')],'include':_0x1274e1[_0x027a('0x18')]?_[_0x027a('0x19')](_0x1274e1[_0x027a('0x18')],function(_0x1bc29f){return{'model':db[_0x1bc29f[_0x027a('0x1a')]],'as':_0x1bc29f['as'],'attributes':_0x1bc29f[_0x027a('0x16')],'include':_0x1bc29f[_0x027a('0x18')]?_[_0x027a('0x19')](_0x1bc29f['include'],function(_0x29dc8f){return{'model':db[_0x29dc8f[_0x027a('0x1a')]],'as':_0x29dc8f['as'],'attributes':_0x29dc8f[_0x027a('0x16')]};}):[]};}):[]};}):[]:[]})[_0x027a('0x1b')](function(_0x19b476){logger[_0x027a('0xa')](_0x027a('0x1d'),_0xc99acc);logger['debug'](_0x027a('0x1d'),_0xc99acc,JSON[_0x027a('0xf')](_0x19b476));_0xe4ea7d(_0x19b476);})[_0x027a('0x1c')](function(_0x5e9130){logger[_0x027a('0x10')]('ShowFreshsalesAccount',_0x5e9130[_0x027a('0x12')],_0xc99acc);_0x4b4ac4(_0x4d9a29[_0x027a('0x10')](0x1f4,_0x5e9130[_0x027a('0x12')]));});});};
\ No newline at end of file
+var _0x0295=['find','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','FreshsalesAccount,\x20%s,\x20%s','message','result','catch','FreshsalesAccount','findAll','options','raw','where','include','map','model','attributes','GetFreshsalesAccount','ShowFreshsalesAccount'];(function(_0x18f174,_0xd21d7d){var _0x94f7f7=function(_0x44981b){while(--_0x44981b){_0x18f174['push'](_0x18f174['shift']());}};_0x94f7f7(++_0xd21d7d);}(_0x0295,0x1f0));var _0x5029=function(_0x250b8b,_0x1d3b34){_0x250b8b=_0x250b8b-0x0;var _0x458585=_0x0295[_0x250b8b];return _0x458585;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('FreshsalesAccount,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}exports['GetFreshsalesAccount']=function(_0x1ed567){var _0x31a155=this;return new Promise(function(_0x35de81,_0x4902f3){return db[_0x5029('0x15')][_0x5029('0x16')]({'raw':_0x1ed567[_0x5029('0x17')]?_0x1ed567['options'][_0x5029('0x18')]===undefined?!![]:![]:!![],'where':_0x1ed567['options']?_0x1ed567[_0x5029('0x17')][_0x5029('0x19')]||null:null,'attributes':_0x1ed567[_0x5029('0x17')]?_0x1ed567[_0x5029('0x17')]['attributes']||null:null,'limit':_0x1ed567['options']?_0x1ed567[_0x5029('0x17')]['limit']||null:null,'include':_0x1ed567[_0x5029('0x17')]?_0x1ed567[_0x5029('0x17')][_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x1ed567[_0x5029('0x17')][_0x5029('0x1a')],function(_0x125c26){return{'model':db[_0x125c26[_0x5029('0x1c')]],'as':_0x125c26['as'],'attributes':_0x125c26[_0x5029('0x1d')],'include':_0x125c26['include']?_['map'](_0x125c26['include'],function(_0x588d90){return{'model':db[_0x588d90[_0x5029('0x1c')]],'as':_0x588d90['as'],'attributes':_0x588d90['attributes'],'include':_0x588d90['include']?_[_0x5029('0x1b')](_0x588d90[_0x5029('0x1a')],function(_0x36d810){return{'model':db[_0x36d810['model']],'as':_0x36d810['as'],'attributes':_0x36d810[_0x5029('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5029('0xa')](function(_0x5e45c4){logger[_0x5029('0xb')](_0x5029('0x1e'),_0x1ed567);logger[_0x5029('0xd')]('GetFreshsalesAccount',_0x1ed567,JSON[_0x5029('0xf')](_0x5e45c4));_0x35de81(_0x5e45c4);})[_0x5029('0x14')](function(_0xe5313e){logger['error'](_0x5029('0x1e'),_0xe5313e[_0x5029('0x12')],_0x1ed567);_0x4902f3(_0x31a155['error'](0x1f4,_0xe5313e[_0x5029('0x12')]));});});};exports[_0x5029('0x1f')]=function(_0x4434ff){var _0x1c3dd9=this;return new Promise(function(_0x196830,_0x2a1ed6){return db[_0x5029('0x15')][_0x5029('0x20')]({'raw':_0x4434ff[_0x5029('0x17')]?_0x4434ff[_0x5029('0x17')][_0x5029('0x18')]===undefined?!![]:![]:!![],'where':_0x4434ff[_0x5029('0x17')]?_0x4434ff['options'][_0x5029('0x19')]||null:null,'attributes':_0x4434ff['options']?_0x4434ff[_0x5029('0x17')]['attributes']||null:null,'include':_0x4434ff['options']?_0x4434ff[_0x5029('0x17')][_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x4434ff['options'][_0x5029('0x1a')],function(_0x15d882){return{'model':db[_0x15d882[_0x5029('0x1c')]],'as':_0x15d882['as'],'attributes':_0x15d882[_0x5029('0x1d')],'include':_0x15d882[_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x15d882[_0x5029('0x1a')],function(_0x22205e){return{'model':db[_0x22205e[_0x5029('0x1c')]],'as':_0x22205e['as'],'attributes':_0x22205e['attributes'],'include':_0x22205e[_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x22205e[_0x5029('0x1a')],function(_0x1b3817){return{'model':db[_0x1b3817['model']],'as':_0x1b3817['as'],'attributes':_0x1b3817[_0x5029('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5029('0xa')](function(_0x3e2d88){logger['info']('ShowFreshsalesAccount',_0x4434ff);logger[_0x5029('0xd')](_0x5029('0x1f'),_0x4434ff,JSON['stringify'](_0x3e2d88));_0x196830(_0x3e2d88);})['catch'](function(_0x9656f2){logger[_0x5029('0x10')](_0x5029('0x1f'),_0x9656f2[_0x5029('0x12')],_0x4434ff);_0x2a1ed6(_0x1c3dd9[_0x5029('0x10')](0x1f4,_0x9656f2[_0x5029('0x12')]));});});};
\ No newline at end of file
index 65a6bda..d4905ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c70=['/:id','show','get','getSubjects','/:id/descriptions','/:id/fields','post','create','put','delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x15fce8,_0x7612b7){var _0x3f54aa=function(_0x4c1752){while(--_0x4c1752){_0x15fce8['push'](_0x15fce8['shift']());}};_0x3f54aa(++_0x7612b7);}(_0x7c70,0x1c0));var _0x07c7=function(_0x429e7e,_0x5ae693){_0x429e7e=_0x429e7e-0x0;var _0x22c7d7=_0x7c70[_0x429e7e];return _0x22c7d7;};'use strict';var multer=require(_0x07c7('0x0'));var util=require(_0x07c7('0x1'));var path=require('path');var timeout=require(_0x07c7('0x2'));var express=require('express');var router=express[_0x07c7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x07c7('0x4'));var interaction=require(_0x07c7('0x5'));var config=require(_0x07c7('0x6'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth[_0x07c7('0x7')](),controller['index']);router['get'](_0x07c7('0x8'),auth[_0x07c7('0x7')](),controller[_0x07c7('0x9')]);router[_0x07c7('0xa')]('/:id/subjects',auth[_0x07c7('0x7')](),controller[_0x07c7('0xb')]);router[_0x07c7('0xa')](_0x07c7('0xc'),auth['isAuthenticated'](),controller['getDescriptions']);router['get'](_0x07c7('0xd'),auth[_0x07c7('0x7')](),controller['getFields']);router[_0x07c7('0xe')]('/',auth[_0x07c7('0x7')](),controller[_0x07c7('0xf')]);router[_0x07c7('0x10')]('/:id',auth[_0x07c7('0x7')](),controller['update']);router[_0x07c7('0x11')](_0x07c7('0x8'),auth[_0x07c7('0x7')](),controller[_0x07c7('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa274=['show','/:id/subjects','/:id/descriptions','getFields','create','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated'];(function(_0x426711,_0x12264c){var _0x592991=function(_0x564614){while(--_0x564614){_0x426711['push'](_0x426711['shift']());}};_0x592991(++_0x12264c);}(_0xa274,0xbd));var _0x4a27=function(_0x44044a,_0x3a0097){_0x44044a=_0x44044a-0x0;var _0x43bb6e=_0xa274[_0x44044a];return _0x43bb6e;};'use strict';var multer=require(_0x4a27('0x0'));var util=require('util');var path=require(_0x4a27('0x1'));var timeout=require('connect-timeout');var express=require(_0x4a27('0x2'));var router=express[_0x4a27('0x3')]();var fs_extra=require(_0x4a27('0x4'));var auth=require(_0x4a27('0x5'));var interaction=require(_0x4a27('0x6'));var config=require('../../config/environment');var controller=require('./intFreshsalesConfiguration.controller');router[_0x4a27('0x7')]('/',auth['isAuthenticated'](),controller[_0x4a27('0x8')]);router[_0x4a27('0x7')](_0x4a27('0x9'),auth[_0x4a27('0xa')](),controller[_0x4a27('0xb')]);router[_0x4a27('0x7')](_0x4a27('0xc'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x4a27('0x7')](_0x4a27('0xd'),auth[_0x4a27('0xa')](),controller['getDescriptions']);router[_0x4a27('0x7')]('/:id/fields',auth[_0x4a27('0xa')](),controller[_0x4a27('0xe')]);router['post']('/',auth[_0x4a27('0xa')](),controller[_0x4a27('0xf')]);router['put'](_0x4a27('0x9'),auth[_0x4a27('0xa')](),controller[_0x4a27('0x10')]);router[_0x4a27('0x11')](_0x4a27('0x9'),auth[_0x4a27('0xa')](),controller[_0x4a27('0x12')]);module[_0x4a27('0x13')]=router;
\ No newline at end of file
index a47d1e3..9584fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaf4=['STRING','sequelize','exports'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xeaf4,0xf7));var _0x4eaf=function(_0x3a0f2a,_0x44a36a){_0x3a0f2a=_0x3a0f2a-0x0;var _0x3d5953=_0xeaf4[_0x3a0f2a];return _0x3d5953;};'use strict';var Sequelize=require(_0x4eaf('0x0'));module[_0x4eaf('0x1')]={'name':{'type':Sequelize[_0x4eaf('0x2')]},'description':{'type':Sequelize[_0x4eaf('0x2')]}};
\ No newline at end of file
+var _0x8fe0=['STRING','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8fe0,0x10b));var _0x08fe=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x8fe0[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require('sequelize');module[_0x08fe('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x08fe('0x1')]}};
\ No newline at end of file
index 5889fa1..6abc0e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe196=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','merge','options','FreshsalesConfiguration','include','findAll','rows','catch','show','keys','rawAttributes','length','includeAll','create','body','find','params','getSubjects','findOne','FreshsalesField','filter','getDescriptions','getFields','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe196,0x1ec));var _0x6e19=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe196[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x6e19('0x0'));var rimraf=require(_0x6e19('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6e19('0x2'));var rp=require('request-promise');var moment=require(_0x6e19('0x3'));var BPromise=require(_0x6e19('0x4'));var Mustache=require(_0x6e19('0x5'));var util=require(_0x6e19('0x6'));var path=require(_0x6e19('0x7'));var sox=require(_0x6e19('0x8'));var csv=require(_0x6e19('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e19('0xa'));var _=require(_0x6e19('0xb'));var squel=require(_0x6e19('0xc'));var crypto=require(_0x6e19('0xd'));var jsforce=require(_0x6e19('0xe'));var deskjs=require(_0x6e19('0xf'));var toCsv=require(_0x6e19('0x9'));var querystring=require(_0x6e19('0x10'));var Papa=require(_0x6e19('0x11'));var Redis=require(_0x6e19('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6e19('0x13'));var as=require(_0x6e19('0x14'));var hardwareService=require(_0x6e19('0x15'));var logger=require(_0x6e19('0x16'))('api');var utils=require(_0x6e19('0x17'));var config=require(_0x6e19('0x18'));var licenseUtil=require(_0x6e19('0x19'));var db=require(_0x6e19('0x1a'))['db'];function respondWithStatusCode(_0x9196e5,_0x4dbc67){_0x4dbc67=_0x4dbc67||0xcc;return function(_0x33c686){if(_0x33c686){return _0x9196e5['sendStatus'](_0x4dbc67);}return _0x9196e5[_0x6e19('0x1b')](_0x4dbc67)[_0x6e19('0x1c')]();};}function respondWithResult(_0x4042ec,_0x3f69b2){_0x3f69b2=_0x3f69b2||0xc8;return function(_0x20cc90){if(_0x20cc90){return _0x4042ec[_0x6e19('0x1b')](_0x3f69b2)[_0x6e19('0x1d')](_0x20cc90);}};}function respondWithFilteredResult(_0x2b5fc0,_0x428a7b){return function(_0x14d5e6){if(_0x14d5e6){var _0x173bf7=typeof _0x428a7b[_0x6e19('0x1e')]==='undefined'&&typeof _0x428a7b[_0x6e19('0x1f')]===_0x6e19('0x20');var _0x1942d4=_0x14d5e6[_0x6e19('0x21')];var _0x50a335=_0x173bf7?0x0:_0x428a7b[_0x6e19('0x1e')];var _0x385aac=_0x173bf7?_0x14d5e6[_0x6e19('0x21')]:_0x428a7b[_0x6e19('0x1e')]+_0x428a7b[_0x6e19('0x1f')];var _0x13d254;if(_0x385aac>=_0x1942d4){_0x385aac=_0x1942d4;_0x13d254=0xc8;}else{_0x13d254=0xce;}_0x2b5fc0[_0x6e19('0x1b')](_0x13d254);return _0x2b5fc0[_0x6e19('0x22')](_0x6e19('0x23'),_0x50a335+'-'+_0x385aac+'/'+_0x1942d4)[_0x6e19('0x1d')](_0x14d5e6);}return null;};}function patchUpdates(_0x1c95c3){return function(_0x17771a){try{jsonpatch[_0x6e19('0x24')](_0x17771a,_0x1c95c3,!![]);}catch(_0x3ab18d){return BPromise[_0x6e19('0x25')](_0x3ab18d);}return _0x17771a[_0x6e19('0x26')]();};}function saveUpdates(_0x52f6ca,_0x2be3ed){return function(_0x56c86a){if(_0x56c86a){return _0x56c86a[_0x6e19('0x27')](_0x52f6ca)[_0x6e19('0x28')](function(_0x24a465){return _0x24a465;});}return null;};}function removeEntity(_0x53565b,_0x27166d){return function(_0x17d76c){if(_0x17d76c){return _0x17d76c[_0x6e19('0x29')]()[_0x6e19('0x28')](function(){_0x53565b[_0x6e19('0x1b')](0xcc)[_0x6e19('0x1c')]();});}};}function handleEntityNotFound(_0x3ead62,_0xada22e){return function(_0x30e9ca){if(!_0x30e9ca){_0x3ead62[_0x6e19('0x2a')](0x194);}return _0x30e9ca;};}function handleError(_0x5c9eac,_0x1060f4){_0x1060f4=_0x1060f4||0x1f4;return function(_0xbf3928){logger[_0x6e19('0x2b')](_0xbf3928[_0x6e19('0x2c')]);if(_0xbf3928['name']){delete _0xbf3928[_0x6e19('0x2d')];}_0x5c9eac[_0x6e19('0x1b')](_0x1060f4)[_0x6e19('0x2e')](_0xbf3928);};}exports['index']=function(_0xf8ced7,_0x5b3597){var _0x532b52={},_0x26b1f8={},_0x5200ac={'count':0x0,'rows':[]};var _0x3ff238=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x2599c6){return{'name':_0x2599c6[_0x6e19('0x2f')],'type':_0x2599c6[_0x6e19('0x30')][_0x6e19('0x31')]};});_0x26b1f8[_0x6e19('0x32')]=_[_0x6e19('0x33')](_0x3ff238,_0x6e19('0x2d'));_0x26b1f8[_0x6e19('0x34')]=_['keys'](_0xf8ced7[_0x6e19('0x34')]);_0x26b1f8[_0x6e19('0x35')]=_[_0x6e19('0x36')](_0x26b1f8['model'],_0x26b1f8[_0x6e19('0x34')]);_0x532b52[_0x6e19('0x37')]=_['intersection'](_0x26b1f8[_0x6e19('0x32')],qs['fields'](_0xf8ced7['query'][_0x6e19('0x38')]));_0x532b52[_0x6e19('0x37')]=_0x532b52[_0x6e19('0x37')]['length']?_0x532b52['attributes']:_0x26b1f8['model'];if(!_0xf8ced7[_0x6e19('0x34')][_0x6e19('0x39')](_0x6e19('0x3a'))){_0x532b52[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0xf8ced7[_0x6e19('0x34')]['limit']);_0x532b52[_0x6e19('0x1e')]=qs[_0x6e19('0x1e')](_0xf8ced7[_0x6e19('0x34')][_0x6e19('0x1e')]);}_0x532b52[_0x6e19('0x3b')]=qs['sort'](_0xf8ced7['query'][_0x6e19('0x3c')]);_0x532b52['where']=qs['filters'](_[_0x6e19('0x3d')](_0xf8ced7[_0x6e19('0x34')],_0x26b1f8[_0x6e19('0x35')]),_0x3ff238);if(_0xf8ced7['query']['filter']){_0x532b52['where']=_['merge'](_0x532b52[_0x6e19('0x3e')],{'$or':_[_0x6e19('0x33')](_0x3ff238,function(_0x1905d7){if(_0x1905d7[_0x6e19('0x30')]!==_0x6e19('0x3f')){var _0x11373a={};_0x11373a[_0x1905d7[_0x6e19('0x2d')]]={'$like':'%'+_0xf8ced7[_0x6e19('0x34')]['filter']+'%'};return _0x11373a;}})});}_0x532b52=_[_0x6e19('0x40')]({},_0x532b52,_0xf8ced7[_0x6e19('0x41')]);var _0x504fee={'where':_0x532b52[_0x6e19('0x3e')]};return db[_0x6e19('0x42')][_0x6e19('0x21')](_0x504fee)[_0x6e19('0x28')](function(_0x5cedde){_0x5200ac[_0x6e19('0x21')]=_0x5cedde;if(_0xf8ced7[_0x6e19('0x34')]['includeAll']){_0x532b52[_0x6e19('0x43')]=[{'all':!![]}];}return db[_0x6e19('0x42')][_0x6e19('0x44')](_0x532b52);})[_0x6e19('0x28')](function(_0x189079){_0x5200ac[_0x6e19('0x45')]=_0x189079;return _0x5200ac;})[_0x6e19('0x28')](respondWithFilteredResult(_0x5b3597,_0x532b52))[_0x6e19('0x46')](handleError(_0x5b3597,null));};exports[_0x6e19('0x47')]=function(_0x5005e2,_0x246df5){var _0x355703={'raw':![],'where':{'id':_0x5005e2['params']['id']}},_0x313075={};_0x313075[_0x6e19('0x32')]=_[_0x6e19('0x48')](db['FreshsalesConfiguration'][_0x6e19('0x49')]);_0x313075['query']=_[_0x6e19('0x48')](_0x5005e2[_0x6e19('0x34')]);_0x313075[_0x6e19('0x35')]=_[_0x6e19('0x36')](_0x313075[_0x6e19('0x32')],_0x313075[_0x6e19('0x34')]);_0x355703['attributes']=_[_0x6e19('0x36')](_0x313075['model'],qs[_0x6e19('0x38')](_0x5005e2[_0x6e19('0x34')]['fields']));_0x355703[_0x6e19('0x37')]=_0x355703['attributes'][_0x6e19('0x4a')]?_0x355703[_0x6e19('0x37')]:_0x313075['model'];if(_0x5005e2[_0x6e19('0x34')][_0x6e19('0x4b')]){_0x355703[_0x6e19('0x43')]=[{'all':!![]}];}_0x355703=_[_0x6e19('0x40')]({},_0x355703,_0x5005e2[_0x6e19('0x41')]);return db[_0x6e19('0x42')]['find'](_0x355703)[_0x6e19('0x28')](handleEntityNotFound(_0x246df5,null))[_0x6e19('0x28')](respondWithResult(_0x246df5,null))[_0x6e19('0x46')](handleError(_0x246df5,null));};exports[_0x6e19('0x4c')]=function(_0x37b394,_0x561f3c){return db[_0x6e19('0x42')][_0x6e19('0x4c')](_0x37b394['body'],{})[_0x6e19('0x28')](respondWithResult(_0x561f3c,0xc9))[_0x6e19('0x46')](handleError(_0x561f3c,null));};exports[_0x6e19('0x27')]=function(_0x288eee,_0x1d1a08){if(_0x288eee[_0x6e19('0x4d')]['id']){delete _0x288eee[_0x6e19('0x4d')]['id'];}return db[_0x6e19('0x42')][_0x6e19('0x4e')]({'where':{'id':_0x288eee[_0x6e19('0x4f')]['id']}})[_0x6e19('0x28')](handleEntityNotFound(_0x1d1a08,null))[_0x6e19('0x28')](saveUpdates(_0x288eee[_0x6e19('0x4d')],null))['then'](respondWithResult(_0x1d1a08,null))[_0x6e19('0x46')](handleError(_0x1d1a08,null));};exports[_0x6e19('0x29')]=function(_0x25cb1c,_0x20344b){return db['FreshsalesConfiguration'][_0x6e19('0x4e')]({'where':{'id':_0x25cb1c['params']['id']}})['then'](handleEntityNotFound(_0x20344b,null))[_0x6e19('0x28')](removeEntity(_0x20344b,null))[_0x6e19('0x46')](handleError(_0x20344b,null));};exports[_0x6e19('0x50')]=function(_0x429676,_0x3c7bcd,_0x53c2ff){var _0x133f8c={};var _0x5dab0a={};var _0x475ee6;var _0x319b7;return db['FreshsalesConfiguration'][_0x6e19('0x51')]({'where':{'id':_0x429676['params']['id']}})['then'](handleEntityNotFound(_0x3c7bcd,null))[_0x6e19('0x28')](function(_0x1dca6a){if(_0x1dca6a){_0x475ee6=_0x1dca6a;_0x5dab0a[_0x6e19('0x32')]=_[_0x6e19('0x48')](db[_0x6e19('0x52')][_0x6e19('0x49')]);_0x5dab0a['query']=_['keys'](_0x429676['query']);_0x5dab0a['filters']=_[_0x6e19('0x36')](_0x5dab0a[_0x6e19('0x32')],_0x5dab0a[_0x6e19('0x34')]);_0x133f8c[_0x6e19('0x37')]=_[_0x6e19('0x36')](_0x5dab0a[_0x6e19('0x32')],qs[_0x6e19('0x38')](_0x429676[_0x6e19('0x34')][_0x6e19('0x38')]));_0x133f8c[_0x6e19('0x37')]=_0x133f8c[_0x6e19('0x37')]['length']?_0x133f8c['attributes']:_0x5dab0a['model'];_0x133f8c[_0x6e19('0x3b')]=qs['sort'](_0x429676[_0x6e19('0x34')]['sort']);_0x133f8c[_0x6e19('0x3e')]=qs['filters'](_[_0x6e19('0x3d')](_0x429676[_0x6e19('0x34')],_0x5dab0a[_0x6e19('0x35')]));if(_0x429676[_0x6e19('0x34')][_0x6e19('0x53')]){_0x133f8c['where']=_[_0x6e19('0x40')](_0x133f8c['where'],{'$or':_[_0x6e19('0x33')](_0x133f8c[_0x6e19('0x37')],function(_0x4bce36){var _0xa701af={};_0xa701af[_0x4bce36]={'$like':'%'+_0x429676['query']['filter']+'%'};return _0xa701af;})});}_0x133f8c=_[_0x6e19('0x40')]({},_0x133f8c,_0x429676[_0x6e19('0x41')]);return _0x475ee6[_0x6e19('0x50')](_0x133f8c);}})[_0x6e19('0x28')](function(_0x214601){if(_0x214601){_0x319b7=_0x214601['length'];if(!_0x429676[_0x6e19('0x34')][_0x6e19('0x39')](_0x6e19('0x3a'))){_0x133f8c[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0x429676[_0x6e19('0x34')]['limit']);_0x133f8c[_0x6e19('0x1e')]=qs['offset'](_0x429676[_0x6e19('0x34')]['offset']);}return _0x475ee6['getSubjects'](_0x133f8c);}})['then'](function(_0x57a85c){if(_0x57a85c){return _0x57a85c?{'count':_0x319b7,'rows':_0x57a85c}:null;}})[_0x6e19('0x28')](respondWithResult(_0x3c7bcd,null))[_0x6e19('0x46')](handleError(_0x3c7bcd,null));};exports[_0x6e19('0x54')]=function(_0x373565,_0x5e4ed2,_0x5ba0c1){var _0x30c843={};var _0x4dcafe={};var _0x167da1;var _0x988969;return db[_0x6e19('0x42')][_0x6e19('0x51')]({'where':{'id':_0x373565[_0x6e19('0x4f')]['id']}})[_0x6e19('0x28')](handleEntityNotFound(_0x5e4ed2,null))[_0x6e19('0x28')](function(_0x10b11c){if(_0x10b11c){_0x167da1=_0x10b11c;_0x4dcafe['model']=_[_0x6e19('0x48')](db[_0x6e19('0x52')][_0x6e19('0x49')]);_0x4dcafe[_0x6e19('0x34')]=_[_0x6e19('0x48')](_0x373565[_0x6e19('0x34')]);_0x4dcafe[_0x6e19('0x35')]=_[_0x6e19('0x36')](_0x4dcafe['model'],_0x4dcafe[_0x6e19('0x34')]);_0x30c843[_0x6e19('0x37')]=_[_0x6e19('0x36')](_0x4dcafe[_0x6e19('0x32')],qs[_0x6e19('0x38')](_0x373565[_0x6e19('0x34')]['fields']));_0x30c843[_0x6e19('0x37')]=_0x30c843[_0x6e19('0x37')][_0x6e19('0x4a')]?_0x30c843[_0x6e19('0x37')]:_0x4dcafe[_0x6e19('0x32')];_0x30c843[_0x6e19('0x3b')]=qs[_0x6e19('0x3c')](_0x373565['query'][_0x6e19('0x3c')]);_0x30c843['where']=qs[_0x6e19('0x35')](_[_0x6e19('0x3d')](_0x373565[_0x6e19('0x34')],_0x4dcafe[_0x6e19('0x35')]));if(_0x373565[_0x6e19('0x34')][_0x6e19('0x53')]){_0x30c843[_0x6e19('0x3e')]=_[_0x6e19('0x40')](_0x30c843[_0x6e19('0x3e')],{'$or':_[_0x6e19('0x33')](_0x30c843['attributes'],function(_0x42b52b){var _0x36942e={};_0x36942e[_0x42b52b]={'$like':'%'+_0x373565[_0x6e19('0x34')][_0x6e19('0x53')]+'%'};return _0x36942e;})});}_0x30c843=_[_0x6e19('0x40')]({},_0x30c843,_0x373565[_0x6e19('0x41')]);return _0x167da1['getDescriptions'](_0x30c843);}})[_0x6e19('0x28')](function(_0x53ab24){if(_0x53ab24){_0x988969=_0x53ab24['length'];if(!_0x373565[_0x6e19('0x34')][_0x6e19('0x39')](_0x6e19('0x3a'))){_0x30c843[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0x373565[_0x6e19('0x34')][_0x6e19('0x1f')]);_0x30c843[_0x6e19('0x1e')]=qs[_0x6e19('0x1e')](_0x373565[_0x6e19('0x34')][_0x6e19('0x1e')]);}return _0x167da1[_0x6e19('0x54')](_0x30c843);}})[_0x6e19('0x28')](function(_0x549bf7){if(_0x549bf7){return _0x549bf7?{'count':_0x988969,'rows':_0x549bf7}:null;}})[_0x6e19('0x28')](respondWithResult(_0x5e4ed2,null))[_0x6e19('0x46')](handleError(_0x5e4ed2,null));};exports[_0x6e19('0x55')]=function(_0x40eb6e,_0x3371f9,_0x35cb6f){var _0x4e16a2={};var _0x148936={};var _0x5dcb1d;var _0x1b28eb;return db[_0x6e19('0x42')][_0x6e19('0x51')]({'where':{'id':_0x40eb6e[_0x6e19('0x4f')]['id']}})[_0x6e19('0x28')](handleEntityNotFound(_0x3371f9,null))[_0x6e19('0x28')](function(_0x8ce1af){if(_0x8ce1af){_0x5dcb1d=_0x8ce1af;_0x148936['model']=_[_0x6e19('0x48')](db[_0x6e19('0x52')][_0x6e19('0x49')]);_0x148936['query']=_[_0x6e19('0x48')](_0x40eb6e[_0x6e19('0x34')]);_0x148936['filters']=_[_0x6e19('0x36')](_0x148936[_0x6e19('0x32')],_0x148936[_0x6e19('0x34')]);_0x4e16a2['attributes']=_[_0x6e19('0x36')](_0x148936[_0x6e19('0x32')],qs[_0x6e19('0x38')](_0x40eb6e[_0x6e19('0x34')]['fields']));_0x4e16a2[_0x6e19('0x37')]=_0x4e16a2['attributes'][_0x6e19('0x4a')]?_0x4e16a2[_0x6e19('0x37')]:_0x148936[_0x6e19('0x32')];_0x4e16a2['order']=qs[_0x6e19('0x3c')](_0x40eb6e['query'][_0x6e19('0x3c')]);_0x4e16a2['where']=qs[_0x6e19('0x35')](_[_0x6e19('0x3d')](_0x40eb6e[_0x6e19('0x34')],_0x148936[_0x6e19('0x35')]));if(_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x53')]){_0x4e16a2[_0x6e19('0x3e')]=_[_0x6e19('0x40')](_0x4e16a2[_0x6e19('0x3e')],{'$or':_['map'](_0x4e16a2['attributes'],function(_0x3038fa){var _0x4bb764={};_0x4bb764[_0x3038fa]={'$like':'%'+_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x53')]+'%'};return _0x4bb764;})});}_0x4e16a2=_[_0x6e19('0x40')]({},_0x4e16a2,_0x40eb6e['options']);return _0x5dcb1d[_0x6e19('0x55')](_0x4e16a2);}})[_0x6e19('0x28')](function(_0xd870df){if(_0xd870df){_0x1b28eb=_0xd870df['length'];if(!_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x39')]('nolimit')){_0x4e16a2[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x1f')]);_0x4e16a2[_0x6e19('0x1e')]=qs[_0x6e19('0x1e')](_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x1e')]);}return _0x5dcb1d[_0x6e19('0x55')](_0x4e16a2);}})[_0x6e19('0x28')](function(_0x357b9a){if(_0x357b9a){return _0x357b9a?{'count':_0x1b28eb,'rows':_0x357b9a}:null;}})[_0x6e19('0x28')](respondWithResult(_0x3371f9,null))[_0x6e19('0x46')](handleError(_0x3371f9,null));};
\ No newline at end of file
+var _0x1e30=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','json','apply','reject','save','update','destroy','error','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','hasOwnProperty','order','sort','filter','where','merge','type','VIRTUAL','then','includeAll','include','findAll','rows','catch','show','params','fields','length','options','create','body','find','FreshsalesField','getSubjects','nolimit','getDescriptions','pick','getFields','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x589771,_0x3af8ad){var _0x433fd7=function(_0x5bd396){while(--_0x5bd396){_0x589771['push'](_0x589771['shift']());}};_0x433fd7(++_0x3af8ad);}(_0x1e30,0x136));var _0x01e3=function(_0x22e11c,_0x32ef49){_0x22e11c=_0x22e11c-0x0;var _0x4fd8ed=_0x1e30[_0x22e11c];return _0x4fd8ed;};'use strict';var emlformat=require(_0x01e3('0x0'));var rimraf=require(_0x01e3('0x1'));var zipdir=require(_0x01e3('0x2'));var jsonpatch=require(_0x01e3('0x3'));var rp=require('request-promise');var moment=require(_0x01e3('0x4'));var BPromise=require(_0x01e3('0x5'));var Mustache=require(_0x01e3('0x6'));var util=require(_0x01e3('0x7'));var path=require(_0x01e3('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x01e3('0x9'));var fs=require('fs');var fs_extra=require(_0x01e3('0xa'));var _=require(_0x01e3('0xb'));var squel=require(_0x01e3('0xc'));var crypto=require(_0x01e3('0xd'));var jsforce=require(_0x01e3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x01e3('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x01e3('0x10'));var authService=require(_0x01e3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x01e3('0x12'));var hardwareService=require(_0x01e3('0x13'));var logger=require(_0x01e3('0x14'))(_0x01e3('0x15'));var utils=require(_0x01e3('0x16'));var config=require(_0x01e3('0x17'));var licenseUtil=require(_0x01e3('0x18'));var db=require(_0x01e3('0x19'))['db'];function respondWithStatusCode(_0x21d616,_0x5e959f){_0x5e959f=_0x5e959f||0xcc;return function(_0x264606){if(_0x264606){return _0x21d616[_0x01e3('0x1a')](_0x5e959f);}return _0x21d616[_0x01e3('0x1b')](_0x5e959f)[_0x01e3('0x1c')]();};}function respondWithResult(_0x80a661,_0x20c52d){_0x20c52d=_0x20c52d||0xc8;return function(_0x115d31){if(_0x115d31){return _0x80a661['status'](_0x20c52d)['json'](_0x115d31);}};}function respondWithFilteredResult(_0x24da54,_0x2e02bb){return function(_0x497a54){if(_0x497a54){var _0x55eafc=typeof _0x2e02bb['offset']===_0x01e3('0x1d')&&typeof _0x2e02bb[_0x01e3('0x1e')]===_0x01e3('0x1d');var _0x3a4fbb=_0x497a54['count'];var _0x3ef28d=_0x55eafc?0x0:_0x2e02bb[_0x01e3('0x1f')];var _0x5f1e19=_0x55eafc?_0x497a54[_0x01e3('0x20')]:_0x2e02bb[_0x01e3('0x1f')]+_0x2e02bb[_0x01e3('0x1e')];var _0xd6a279;if(_0x5f1e19>=_0x3a4fbb){_0x5f1e19=_0x3a4fbb;_0xd6a279=0xc8;}else{_0xd6a279=0xce;}_0x24da54['status'](_0xd6a279);return _0x24da54[_0x01e3('0x21')]('Content-Range',_0x3ef28d+'-'+_0x5f1e19+'/'+_0x3a4fbb)[_0x01e3('0x22')](_0x497a54);}return null;};}function patchUpdates(_0x13ecf9){return function(_0x3f353e){try{jsonpatch[_0x01e3('0x23')](_0x3f353e,_0x13ecf9,!![]);}catch(_0x5b6f7d){return BPromise[_0x01e3('0x24')](_0x5b6f7d);}return _0x3f353e[_0x01e3('0x25')]();};}function saveUpdates(_0x5b6afa,_0x4e7ee1){return function(_0x3f0539){if(_0x3f0539){return _0x3f0539[_0x01e3('0x26')](_0x5b6afa)['then'](function(_0x4cd996){return _0x4cd996;});}return null;};}function removeEntity(_0x285a87,_0x541ea2){return function(_0x2ebedd){if(_0x2ebedd){return _0x2ebedd[_0x01e3('0x27')]()['then'](function(){_0x285a87['status'](0xcc)[_0x01e3('0x1c')]();});}};}function handleEntityNotFound(_0x38a557,_0x32887c){return function(_0x1358bf){if(!_0x1358bf){_0x38a557['sendStatus'](0x194);}return _0x1358bf;};}function handleError(_0xe4b656,_0x1d1052){_0x1d1052=_0x1d1052||0x1f4;return function(_0x3a094b){logger[_0x01e3('0x28')](_0x3a094b['stack']);if(_0x3a094b[_0x01e3('0x29')]){delete _0x3a094b[_0x01e3('0x29')];}_0xe4b656[_0x01e3('0x1b')](_0x1d1052)[_0x01e3('0x2a')](_0x3a094b);};}exports[_0x01e3('0x2b')]=function(_0x53a95c,_0x10850a){var _0x409fff={},_0x56f481={},_0x35097f={'count':0x0,'rows':[]};var _0x56a767=_[_0x01e3('0x2c')](db[_0x01e3('0x2d')][_0x01e3('0x2e')],function(_0xa13d9d){return{'name':_0xa13d9d[_0x01e3('0x2f')],'type':_0xa13d9d['type'][_0x01e3('0x30')]};});_0x56f481['model']=_[_0x01e3('0x2c')](_0x56a767,_0x01e3('0x29'));_0x56f481[_0x01e3('0x31')]=_[_0x01e3('0x32')](_0x53a95c['query']);_0x56f481[_0x01e3('0x33')]=_[_0x01e3('0x34')](_0x56f481[_0x01e3('0x35')],_0x56f481[_0x01e3('0x31')]);_0x409fff['attributes']=_[_0x01e3('0x34')](_0x56f481['model'],qs['fields'](_0x53a95c['query']['fields']));_0x409fff[_0x01e3('0x36')]=_0x409fff[_0x01e3('0x36')]['length']?_0x409fff[_0x01e3('0x36')]:_0x56f481[_0x01e3('0x35')];if(!_0x53a95c[_0x01e3('0x31')][_0x01e3('0x37')]('nolimit')){_0x409fff[_0x01e3('0x1e')]=qs[_0x01e3('0x1e')](_0x53a95c[_0x01e3('0x31')][_0x01e3('0x1e')]);_0x409fff['offset']=qs[_0x01e3('0x1f')](_0x53a95c['query'][_0x01e3('0x1f')]);}_0x409fff[_0x01e3('0x38')]=qs[_0x01e3('0x39')](_0x53a95c[_0x01e3('0x31')]['sort']);_0x409fff['where']=qs[_0x01e3('0x33')](_['pick'](_0x53a95c[_0x01e3('0x31')],_0x56f481[_0x01e3('0x33')]),_0x56a767);if(_0x53a95c['query'][_0x01e3('0x3a')]){_0x409fff[_0x01e3('0x3b')]=_[_0x01e3('0x3c')](_0x409fff[_0x01e3('0x3b')],{'$or':_['map'](_0x56a767,function(_0xe73af8){if(_0xe73af8[_0x01e3('0x3d')]!==_0x01e3('0x3e')){var _0x44189f={};_0x44189f[_0xe73af8[_0x01e3('0x29')]]={'$like':'%'+_0x53a95c[_0x01e3('0x31')][_0x01e3('0x3a')]+'%'};return _0x44189f;}})});}_0x409fff=_[_0x01e3('0x3c')]({},_0x409fff,_0x53a95c['options']);var _0x47781b={'where':_0x409fff[_0x01e3('0x3b')]};return db[_0x01e3('0x2d')][_0x01e3('0x20')](_0x47781b)[_0x01e3('0x3f')](function(_0x53cfef){_0x35097f['count']=_0x53cfef;if(_0x53a95c['query'][_0x01e3('0x40')]){_0x409fff[_0x01e3('0x41')]=[{'all':!![]}];}return db[_0x01e3('0x2d')][_0x01e3('0x42')](_0x409fff);})[_0x01e3('0x3f')](function(_0x281d7c){_0x35097f[_0x01e3('0x43')]=_0x281d7c;return _0x35097f;})[_0x01e3('0x3f')](respondWithFilteredResult(_0x10850a,_0x409fff))[_0x01e3('0x44')](handleError(_0x10850a,null));};exports[_0x01e3('0x45')]=function(_0x34fe7a,_0x2e372b){var _0x457331={'raw':![],'where':{'id':_0x34fe7a[_0x01e3('0x46')]['id']}},_0x158b48={};_0x158b48[_0x01e3('0x35')]=_[_0x01e3('0x32')](db[_0x01e3('0x2d')][_0x01e3('0x2e')]);_0x158b48['query']=_[_0x01e3('0x32')](_0x34fe7a[_0x01e3('0x31')]);_0x158b48[_0x01e3('0x33')]=_[_0x01e3('0x34')](_0x158b48[_0x01e3('0x35')],_0x158b48[_0x01e3('0x31')]);_0x457331['attributes']=_[_0x01e3('0x34')](_0x158b48[_0x01e3('0x35')],qs[_0x01e3('0x47')](_0x34fe7a[_0x01e3('0x31')][_0x01e3('0x47')]));_0x457331[_0x01e3('0x36')]=_0x457331[_0x01e3('0x36')][_0x01e3('0x48')]?_0x457331[_0x01e3('0x36')]:_0x158b48['model'];if(_0x34fe7a['query'][_0x01e3('0x40')]){_0x457331['include']=[{'all':!![]}];}_0x457331=_[_0x01e3('0x3c')]({},_0x457331,_0x34fe7a[_0x01e3('0x49')]);return db[_0x01e3('0x2d')]['find'](_0x457331)[_0x01e3('0x3f')](handleEntityNotFound(_0x2e372b,null))[_0x01e3('0x3f')](respondWithResult(_0x2e372b,null))[_0x01e3('0x44')](handleError(_0x2e372b,null));};exports[_0x01e3('0x4a')]=function(_0x4e2a87,_0x540a27){return db['FreshsalesConfiguration']['create'](_0x4e2a87['body'],{})[_0x01e3('0x3f')](respondWithResult(_0x540a27,0xc9))[_0x01e3('0x44')](handleError(_0x540a27,null));};exports[_0x01e3('0x26')]=function(_0x2b20a3,_0x3819ac){if(_0x2b20a3[_0x01e3('0x4b')]['id']){delete _0x2b20a3['body']['id'];}return db[_0x01e3('0x2d')][_0x01e3('0x4c')]({'where':{'id':_0x2b20a3['params']['id']}})[_0x01e3('0x3f')](handleEntityNotFound(_0x3819ac,null))['then'](saveUpdates(_0x2b20a3['body'],null))[_0x01e3('0x3f')](respondWithResult(_0x3819ac,null))[_0x01e3('0x44')](handleError(_0x3819ac,null));};exports[_0x01e3('0x27')]=function(_0x168bb4,_0x59ad21){return db[_0x01e3('0x2d')]['find']({'where':{'id':_0x168bb4[_0x01e3('0x46')]['id']}})[_0x01e3('0x3f')](handleEntityNotFound(_0x59ad21,null))[_0x01e3('0x3f')](removeEntity(_0x59ad21,null))[_0x01e3('0x44')](handleError(_0x59ad21,null));};exports['getSubjects']=function(_0x48bc71,_0x5626a8,_0x326109){var _0xb0b0c6={};var _0x38acf2={};var _0x96ea8c;var _0x575632;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x48bc71[_0x01e3('0x46')]['id']}})[_0x01e3('0x3f')](handleEntityNotFound(_0x5626a8,null))['then'](function(_0xf39a38){if(_0xf39a38){_0x96ea8c=_0xf39a38;_0x38acf2[_0x01e3('0x35')]=_[_0x01e3('0x32')](db[_0x01e3('0x4d')][_0x01e3('0x2e')]);_0x38acf2['query']=_[_0x01e3('0x32')](_0x48bc71[_0x01e3('0x31')]);_0x38acf2['filters']=_[_0x01e3('0x34')](_0x38acf2['model'],_0x38acf2['query']);_0xb0b0c6[_0x01e3('0x36')]=_[_0x01e3('0x34')](_0x38acf2[_0x01e3('0x35')],qs[_0x01e3('0x47')](_0x48bc71[_0x01e3('0x31')][_0x01e3('0x47')]));_0xb0b0c6[_0x01e3('0x36')]=_0xb0b0c6[_0x01e3('0x36')]['length']?_0xb0b0c6['attributes']:_0x38acf2['model'];_0xb0b0c6[_0x01e3('0x38')]=qs[_0x01e3('0x39')](_0x48bc71[_0x01e3('0x31')][_0x01e3('0x39')]);_0xb0b0c6['where']=qs[_0x01e3('0x33')](_['pick'](_0x48bc71['query'],_0x38acf2['filters']));if(_0x48bc71['query'][_0x01e3('0x3a')]){_0xb0b0c6[_0x01e3('0x3b')]=_['merge'](_0xb0b0c6['where'],{'$or':_[_0x01e3('0x2c')](_0xb0b0c6[_0x01e3('0x36')],function(_0x228051){var _0x28dd7e={};_0x28dd7e[_0x228051]={'$like':'%'+_0x48bc71[_0x01e3('0x31')][_0x01e3('0x3a')]+'%'};return _0x28dd7e;})});}_0xb0b0c6=_[_0x01e3('0x3c')]({},_0xb0b0c6,_0x48bc71['options']);return _0x96ea8c[_0x01e3('0x4e')](_0xb0b0c6);}})[_0x01e3('0x3f')](function(_0x13fef2){if(_0x13fef2){_0x575632=_0x13fef2[_0x01e3('0x48')];if(!_0x48bc71['query']['hasOwnProperty'](_0x01e3('0x4f'))){_0xb0b0c6[_0x01e3('0x1e')]=qs[_0x01e3('0x1e')](_0x48bc71['query'][_0x01e3('0x1e')]);_0xb0b0c6['offset']=qs['offset'](_0x48bc71[_0x01e3('0x31')]['offset']);}return _0x96ea8c[_0x01e3('0x4e')](_0xb0b0c6);}})[_0x01e3('0x3f')](function(_0xd3f0e){if(_0xd3f0e){return _0xd3f0e?{'count':_0x575632,'rows':_0xd3f0e}:null;}})[_0x01e3('0x3f')](respondWithResult(_0x5626a8,null))[_0x01e3('0x44')](handleError(_0x5626a8,null));};exports[_0x01e3('0x50')]=function(_0x275bea,_0xa77a88,_0x142f05){var _0x1fe440={};var _0x3f37a1={};var _0x4f9604;var _0x9a0773;return db[_0x01e3('0x2d')]['findOne']({'where':{'id':_0x275bea[_0x01e3('0x46')]['id']}})[_0x01e3('0x3f')](handleEntityNotFound(_0xa77a88,null))[_0x01e3('0x3f')](function(_0x316e88){if(_0x316e88){_0x4f9604=_0x316e88;_0x3f37a1[_0x01e3('0x35')]=_['keys'](db[_0x01e3('0x4d')][_0x01e3('0x2e')]);_0x3f37a1[_0x01e3('0x31')]=_[_0x01e3('0x32')](_0x275bea[_0x01e3('0x31')]);_0x3f37a1[_0x01e3('0x33')]=_['intersection'](_0x3f37a1[_0x01e3('0x35')],_0x3f37a1[_0x01e3('0x31')]);_0x1fe440[_0x01e3('0x36')]=_['intersection'](_0x3f37a1[_0x01e3('0x35')],qs[_0x01e3('0x47')](_0x275bea['query'][_0x01e3('0x47')]));_0x1fe440[_0x01e3('0x36')]=_0x1fe440[_0x01e3('0x36')]['length']?_0x1fe440[_0x01e3('0x36')]:_0x3f37a1[_0x01e3('0x35')];_0x1fe440['order']=qs['sort'](_0x275bea['query'][_0x01e3('0x39')]);_0x1fe440[_0x01e3('0x3b')]=qs[_0x01e3('0x33')](_[_0x01e3('0x51')](_0x275bea[_0x01e3('0x31')],_0x3f37a1[_0x01e3('0x33')]));if(_0x275bea[_0x01e3('0x31')]['filter']){_0x1fe440[_0x01e3('0x3b')]=_[_0x01e3('0x3c')](_0x1fe440['where'],{'$or':_[_0x01e3('0x2c')](_0x1fe440['attributes'],function(_0x4998e3){var _0x47b604={};_0x47b604[_0x4998e3]={'$like':'%'+_0x275bea[_0x01e3('0x31')][_0x01e3('0x3a')]+'%'};return _0x47b604;})});}_0x1fe440=_[_0x01e3('0x3c')]({},_0x1fe440,_0x275bea[_0x01e3('0x49')]);return _0x4f9604[_0x01e3('0x50')](_0x1fe440);}})[_0x01e3('0x3f')](function(_0x1c5c19){if(_0x1c5c19){_0x9a0773=_0x1c5c19['length'];if(!_0x275bea[_0x01e3('0x31')][_0x01e3('0x37')](_0x01e3('0x4f'))){_0x1fe440[_0x01e3('0x1e')]=qs[_0x01e3('0x1e')](_0x275bea['query'][_0x01e3('0x1e')]);_0x1fe440[_0x01e3('0x1f')]=qs[_0x01e3('0x1f')](_0x275bea[_0x01e3('0x31')]['offset']);}return _0x4f9604[_0x01e3('0x50')](_0x1fe440);}})[_0x01e3('0x3f')](function(_0x4dec08){if(_0x4dec08){return _0x4dec08?{'count':_0x9a0773,'rows':_0x4dec08}:null;}})[_0x01e3('0x3f')](respondWithResult(_0xa77a88,null))[_0x01e3('0x44')](handleError(_0xa77a88,null));};exports[_0x01e3('0x52')]=function(_0x47dfbd,_0x48a41f,_0x398754){var _0x25d95c={};var _0x3343c7={};var _0x29f8f7;var _0x3b62d5;return db[_0x01e3('0x2d')]['findOne']({'where':{'id':_0x47dfbd[_0x01e3('0x46')]['id']}})[_0x01e3('0x3f')](handleEntityNotFound(_0x48a41f,null))['then'](function(_0x5d64fe){if(_0x5d64fe){_0x29f8f7=_0x5d64fe;_0x3343c7['model']=_[_0x01e3('0x32')](db['FreshsalesField'][_0x01e3('0x2e')]);_0x3343c7[_0x01e3('0x31')]=_[_0x01e3('0x32')](_0x47dfbd[_0x01e3('0x31')]);_0x3343c7[_0x01e3('0x33')]=_[_0x01e3('0x34')](_0x3343c7[_0x01e3('0x35')],_0x3343c7[_0x01e3('0x31')]);_0x25d95c['attributes']=_['intersection'](_0x3343c7['model'],qs['fields'](_0x47dfbd[_0x01e3('0x31')]['fields']));_0x25d95c['attributes']=_0x25d95c[_0x01e3('0x36')][_0x01e3('0x48')]?_0x25d95c[_0x01e3('0x36')]:_0x3343c7[_0x01e3('0x35')];_0x25d95c[_0x01e3('0x38')]=qs[_0x01e3('0x39')](_0x47dfbd[_0x01e3('0x31')][_0x01e3('0x39')]);_0x25d95c[_0x01e3('0x3b')]=qs[_0x01e3('0x33')](_[_0x01e3('0x51')](_0x47dfbd[_0x01e3('0x31')],_0x3343c7['filters']));if(_0x47dfbd[_0x01e3('0x31')]['filter']){_0x25d95c[_0x01e3('0x3b')]=_[_0x01e3('0x3c')](_0x25d95c[_0x01e3('0x3b')],{'$or':_[_0x01e3('0x2c')](_0x25d95c['attributes'],function(_0x46e960){var _0x51bc55={};_0x51bc55[_0x46e960]={'$like':'%'+_0x47dfbd[_0x01e3('0x31')][_0x01e3('0x3a')]+'%'};return _0x51bc55;})});}_0x25d95c=_[_0x01e3('0x3c')]({},_0x25d95c,_0x47dfbd['options']);return _0x29f8f7[_0x01e3('0x52')](_0x25d95c);}})[_0x01e3('0x3f')](function(_0x2a587a){if(_0x2a587a){_0x3b62d5=_0x2a587a[_0x01e3('0x48')];if(!_0x47dfbd[_0x01e3('0x31')][_0x01e3('0x37')](_0x01e3('0x4f'))){_0x25d95c[_0x01e3('0x1e')]=qs['limit'](_0x47dfbd['query']['limit']);_0x25d95c[_0x01e3('0x1f')]=qs[_0x01e3('0x1f')](_0x47dfbd[_0x01e3('0x31')][_0x01e3('0x1f')]);}return _0x29f8f7[_0x01e3('0x52')](_0x25d95c);}})[_0x01e3('0x3f')](function(_0x20a27a){if(_0x20a27a){return _0x20a27a?{'count':_0x3b62d5,'rows':_0x20a27a}:null;}})[_0x01e3('0x3f')](respondWithResult(_0x48a41f,null))[_0x01e3('0x44')](handleError(_0x48a41f,null));};
\ No newline at end of file
index dc294a0..e5f186b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90f=['rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x35d775,_0x25431e){var _0x59384d=function(_0x1a0c15){while(--_0x1a0c15){_0x35d775['push'](_0x35d775['shift']());}};_0x59384d(++_0x25431e);}(_0xb90f,0xfc));var _0xfb90=function(_0x5e1ddb,_0x32c8bc){_0x5e1ddb=_0x5e1ddb-0x0;var _0x1f3932=_0xb90f[_0x5e1ddb];return _0x1f3932;};'use strict';var _=require(_0xfb90('0x0'));var util=require(_0xfb90('0x1'));var logger=require(_0xfb90('0x2'))(_0xfb90('0x3'));var moment=require(_0xfb90('0x4'));var BPromise=require(_0xfb90('0x5'));var rp=require(_0xfb90('0x6'));var fs=require('fs');var path=require(_0xfb90('0x7'));var rimraf=require(_0xfb90('0x8'));var config=require(_0xfb90('0x9'));var attributes=require(_0xfb90('0xa'));module['exports']=function(_0x1a7058,_0x18bd25){return _0x1a7058[_0xfb90('0xb')]('FreshsalesConfiguration',attributes,{'tableName':_0xfb90('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb1e3=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','lodash'];(function(_0xcad26d,_0x5c216f){var _0x47b50e=function(_0x1b74f5){while(--_0x1b74f5){_0xcad26d['push'](_0xcad26d['shift']());}};_0x47b50e(++_0x5c216f);}(_0xb1e3,0xb5));var _0x3b1e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb1e3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3b1e('0x0'));var util=require(_0x3b1e('0x1'));var logger=require(_0x3b1e('0x2'))(_0x3b1e('0x3'));var moment=require(_0x3b1e('0x4'));var BPromise=require(_0x3b1e('0x5'));var rp=require(_0x3b1e('0x6'));var fs=require('fs');var path=require(_0x3b1e('0x7'));var rimraf=require(_0x3b1e('0x8'));var config=require(_0x3b1e('0x9'));var attributes=require(_0x3b1e('0xa'));module[_0x3b1e('0xb')]=function(_0x1d26a3,_0x5bd08c){return _0x1d26a3[_0x3b1e('0xc')](_0x3b1e('0xd'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9359097..e592468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27dc=['jayson/promise','client','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1a120a,_0x21808c){var _0x1b58d4=function(_0x2807ef){while(--_0x2807ef){_0x1a120a['push'](_0x1a120a['shift']());}};_0x1b58d4(++_0x21808c);}(_0x27dc,0xa0));var _0xc27d=function(_0x5ed228,_0x588d8e){_0x5ed228=_0x5ed228-0x0;var _0x11f912=_0x27dc[_0x5ed228];return _0x11f912;};'use strict';var _=require(_0xc27d('0x0'));var util=require(_0xc27d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc27d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc27d('0x3'))['db'];var utils=require(_0xc27d('0x4'));var logger=require(_0xc27d('0x5'))(_0xc27d('0x6'));var config=require(_0xc27d('0x7'));var jayson=require(_0xc27d('0x8'));var client=jayson[_0xc27d('0x9')][_0xc27d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2815fe,_0x1e588c,_0x247855){return new BPromise(function(_0x525f7b,_0x36bff4){return client[_0xc27d('0xb')](_0x2815fe,_0x247855)['then'](function(_0x1df794){logger[_0xc27d('0xc')](_0xc27d('0xd'),_0x1e588c,_0xc27d('0xe'));logger['debug']('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x1e588c,_0xc27d('0xe'),JSON[_0xc27d('0xf')](_0x1df794));if(_0x1df794[_0xc27d('0x10')]){if(_0x1df794[_0xc27d('0x10')][_0xc27d('0x11')]===0x1f4){logger[_0xc27d('0x10')](_0xc27d('0xd'),_0x1e588c,_0x1df794[_0xc27d('0x10')][_0xc27d('0x12')]);return _0x36bff4(_0x1df794[_0xc27d('0x10')][_0xc27d('0x12')]);}logger[_0xc27d('0x10')](_0xc27d('0xd'),_0x1e588c,_0x1df794['error'][_0xc27d('0x12')]);return _0x525f7b(_0x1df794[_0xc27d('0x10')]['message']);}else{logger[_0xc27d('0xc')](_0xc27d('0xd'),_0x1e588c,'request\x20sent');_0x525f7b(_0x1df794[_0xc27d('0x13')][_0xc27d('0x12')]);}})[_0xc27d('0x14')](function(_0x9d4f5f){logger['error'](_0xc27d('0xd'),_0x1e588c,_0x9d4f5f);_0x36bff4(_0x9d4f5f);});});}
\ No newline at end of file
+var _0x12f8=['FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x100c6f,_0x22f27f){var _0x5f3328=function(_0x33531a){while(--_0x33531a){_0x100c6f['push'](_0x100c6f['shift']());}};_0x5f3328(++_0x22f27f);}(_0x12f8,0xce));var _0x812f=function(_0x2500de,_0x3e00aa){_0x2500de=_0x2500de-0x0;var _0xca1f09=_0x12f8[_0x2500de];return _0xca1f09;};'use strict';var _=require(_0x812f('0x0'));var util=require(_0x812f('0x1'));var moment=require(_0x812f('0x2'));var BPromise=require(_0x812f('0x3'));var rs=require(_0x812f('0x4'));var fs=require('fs');var Redis=require(_0x812f('0x5'));var db=require(_0x812f('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x812f('0x7'))('rpc');var config=require(_0x812f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x812f('0x9')][_0x812f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x22aa47,_0x23205c,_0xd0a168){return new BPromise(function(_0x5024f5,_0x3ec5cb){return client[_0x812f('0xb')](_0x22aa47,_0xd0a168)[_0x812f('0xc')](function(_0x42a6e7){logger[_0x812f('0xd')](_0x812f('0xe'),_0x23205c,_0x812f('0xf'));logger[_0x812f('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x23205c,_0x812f('0xf'),JSON[_0x812f('0x11')](_0x42a6e7));if(_0x42a6e7['error']){if(_0x42a6e7['error'][_0x812f('0x12')]===0x1f4){logger[_0x812f('0x13')](_0x812f('0xe'),_0x23205c,_0x42a6e7['error'][_0x812f('0x14')]);return _0x3ec5cb(_0x42a6e7[_0x812f('0x13')][_0x812f('0x14')]);}logger[_0x812f('0x13')](_0x812f('0xe'),_0x23205c,_0x42a6e7[_0x812f('0x13')]['message']);return _0x5024f5(_0x42a6e7[_0x812f('0x13')]['message']);}else{logger[_0x812f('0xd')](_0x812f('0xe'),_0x23205c,'request\x20sent');_0x5024f5(_0x42a6e7['result'][_0x812f('0x14')]);}})[_0x812f('0x15')](function(_0x5e2766){logger[_0x812f('0x13')](_0x812f('0xe'),_0x23205c,_0x5e2766);_0x3ec5cb(_0x5e2766);});});}
\ No newline at end of file
index 6e916d2..6eccb4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0d=['put','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','isAuthenticated','get','/:id','show','create'];(function(_0x1753e6,_0x291a9f){var _0x3f153d=function(_0x3b64b9){while(--_0x3b64b9){_0x1753e6['push'](_0x1753e6['shift']());}};_0x3f153d(++_0x291a9f);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x1733aa,_0x18d844){_0x1733aa=_0x1733aa-0x0;var _0x1db9a1=_0x6f0d[_0x1733aa];return _0x1db9a1;};'use strict';var multer=require('multer');var util=require(_0xd6f0('0x0'));var path=require(_0xd6f0('0x1'));var timeout=require(_0xd6f0('0x2'));var express=require(_0xd6f0('0x3'));var router=express['Router']();var fs_extra=require(_0xd6f0('0x4'));var auth=require(_0xd6f0('0x5'));var interaction=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var controller=require(_0xd6f0('0x8'));router['get']('/',auth[_0xd6f0('0x9')](),controller['index']);router[_0xd6f0('0xa')](_0xd6f0('0xb'),auth[_0xd6f0('0x9')](),controller[_0xd6f0('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd6f0('0xd')]);router[_0xd6f0('0xe')](_0xd6f0('0xb'),auth[_0xd6f0('0x9')](),controller[_0xd6f0('0xf')]);router['delete'](_0xd6f0('0xb'),auth[_0xd6f0('0x9')](),controller[_0xd6f0('0x10')]);module[_0xd6f0('0x11')]=router;
\ No newline at end of file
+var _0x1948=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','post','update','delete'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x1948,0x145));var _0x8194=function(_0x4b851a,_0x4f505d){_0x4b851a=_0x4b851a-0x0;var _0x3cc8f2=_0x1948[_0x4b851a];return _0x3cc8f2;};'use strict';var multer=require(_0x8194('0x0'));var util=require(_0x8194('0x1'));var path=require(_0x8194('0x2'));var timeout=require(_0x8194('0x3'));var express=require(_0x8194('0x4'));var router=express['Router']();var fs_extra=require(_0x8194('0x5'));var auth=require(_0x8194('0x6'));var interaction=require(_0x8194('0x7'));var config=require(_0x8194('0x8'));var controller=require(_0x8194('0x9'));router[_0x8194('0xa')]('/',auth[_0x8194('0xb')](),controller[_0x8194('0xc')]);router['get'](_0x8194('0xd'),auth[_0x8194('0xb')](),controller['show']);router[_0x8194('0xe')]('/',auth[_0x8194('0xb')](),controller['create']);router['put'](_0x8194('0xd'),auth[_0x8194('0xb')](),controller[_0x8194('0xf')]);router[_0x8194('0x10')](_0x8194('0xd'),auth['isAuthenticated'](),controller[_0x8194('0x11')]);module[_0x8194('0x12')]=router;
\ No newline at end of file
index 8dbd80e..68ccb07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ef=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3c34a8,_0x11ab31){var _0x51d18a=function(_0x7ccab8){while(--_0x7ccab8){_0x3c34a8['push'](_0x3c34a8['shift']());}};_0x51d18a(++_0x11ab31);}(_0x26ef,0x105));var _0xf26e=function(_0x497c77,_0xe88a97){_0x497c77=_0x497c77-0x0;var _0x222b77=_0x26ef[_0x497c77];return _0x222b77;};'use strict';var Sequelize=require(_0xf26e('0x0'));module[_0xf26e('0x1')]={'type':{'type':Sequelize[_0xf26e('0x2')](_0xf26e('0x3'),_0xf26e('0x4'),_0xf26e('0x5'),_0xf26e('0x6'),_0xf26e('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf26e('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xf26e('0x3'),_0xf26e('0x4'),_0xf26e('0x5'))},'keyContent':{'type':Sequelize[_0xf26e('0x8')]},'idField':{'type':Sequelize[_0xf26e('0x8')]},'nameField':{'type':Sequelize[_0xf26e('0x8')]},'customField':{'type':Sequelize[_0xf26e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6260=['STRING','exports','ENUM','string','variable','keyValue','picklist'];(function(_0x564185,_0x33b762){var _0x5e59d8=function(_0x372e56){while(--_0x372e56){_0x564185['push'](_0x564185['shift']());}};_0x5e59d8(++_0x33b762);}(_0x6260,0x1cf));var _0x0626=function(_0x218ca4,_0x41cc40){_0x218ca4=_0x218ca4-0x0;var _0x1b3ff9=_0x6260[_0x218ca4];return _0x1b3ff9;};'use strict';var Sequelize=require('sequelize');module[_0x0626('0x0')]={'type':{'type':Sequelize[_0x0626('0x1')](_0x0626('0x2'),_0x0626('0x3'),'customVariable',_0x0626('0x4'),_0x0626('0x5')),'defaultValue':_0x0626('0x2')},'content':{'type':Sequelize[_0x0626('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0626('0x1')]('string',_0x0626('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x0626('0x6')]},'idField':{'type':Sequelize[_0x0626('0x6')]},'nameField':{'type':Sequelize[_0x0626('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0626('0x6')]}};
\ No newline at end of file
index 6fe57fc..806b830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x045a=['key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','length','catch','create','body','update','params','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','destroy','then','error','stack','name','index','map','FreshsalesField','rawAttributes','fieldName'];(function(_0x1df291,_0x5d1aba){var _0x10b214=function(_0x19dfe6){while(--_0x19dfe6){_0x1df291['push'](_0x1df291['shift']());}};_0x10b214(++_0x5d1aba);}(_0x045a,0x6b));var _0xa045=function(_0x8d4c97,_0x3cf763){_0x8d4c97=_0x8d4c97-0x0;var _0x1c1941=_0x045a[_0x8d4c97];return _0x1c1941;};'use strict';var emlformat=require(_0xa045('0x0'));var rimraf=require(_0xa045('0x1'));var zipdir=require(_0xa045('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa045('0x3'));var moment=require('moment');var BPromise=require(_0xa045('0x4'));var Mustache=require(_0xa045('0x5'));var util=require(_0xa045('0x6'));var path=require(_0xa045('0x7'));var sox=require('sox');var csv=require(_0xa045('0x8'));var ejs=require(_0xa045('0x9'));var fs=require('fs');var fs_extra=require(_0xa045('0xa'));var _=require(_0xa045('0xb'));var squel=require(_0xa045('0xc'));var crypto=require(_0xa045('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa045('0xe'));var Papa=require(_0xa045('0xf'));var Redis=require(_0xa045('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa045('0x11'));var as=require(_0xa045('0x12'));var hardwareService=require(_0xa045('0x13'));var logger=require(_0xa045('0x14'))(_0xa045('0x15'));var utils=require(_0xa045('0x16'));var config=require(_0xa045('0x17'));var licenseUtil=require(_0xa045('0x18'));var db=require(_0xa045('0x19'))['db'];function respondWithStatusCode(_0x857dc8,_0x104d7c){_0x104d7c=_0x104d7c||0xcc;return function(_0xf20b62){if(_0xf20b62){return _0x857dc8[_0xa045('0x1a')](_0x104d7c);}return _0x857dc8[_0xa045('0x1b')](_0x104d7c)[_0xa045('0x1c')]();};}function respondWithResult(_0x20dcd6,_0x34b56a){_0x34b56a=_0x34b56a||0xc8;return function(_0x3707fe){if(_0x3707fe){return _0x20dcd6['status'](_0x34b56a)[_0xa045('0x1d')](_0x3707fe);}};}function respondWithFilteredResult(_0x1b62cf,_0x170fa8){return function(_0x2822a2){if(_0x2822a2){var _0x23b19a=typeof _0x170fa8['offset']===_0xa045('0x1e')&&typeof _0x170fa8[_0xa045('0x1f')]===_0xa045('0x1e');var _0xb296e4=_0x2822a2[_0xa045('0x20')];var _0x32be37=_0x23b19a?0x0:_0x170fa8[_0xa045('0x21')];var _0x2a6a06=_0x23b19a?_0x2822a2[_0xa045('0x20')]:_0x170fa8[_0xa045('0x21')]+_0x170fa8['limit'];var _0x23dd84;if(_0x2a6a06>=_0xb296e4){_0x2a6a06=_0xb296e4;_0x23dd84=0xc8;}else{_0x23dd84=0xce;}_0x1b62cf[_0xa045('0x1b')](_0x23dd84);return _0x1b62cf[_0xa045('0x22')](_0xa045('0x23'),_0x32be37+'-'+_0x2a6a06+'/'+_0xb296e4)[_0xa045('0x1d')](_0x2822a2);}return null;};}function patchUpdates(_0x4aa57b){return function(_0x410bae){try{jsonpatch[_0xa045('0x24')](_0x410bae,_0x4aa57b,!![]);}catch(_0x3088cc){return BPromise['reject'](_0x3088cc);}return _0x410bae['save']();};}function saveUpdates(_0x2d5cd6,_0x221133){return function(_0x3a2ed1){if(_0x3a2ed1){return _0x3a2ed1['update'](_0x2d5cd6)['then'](function(_0x49dec2){return _0x49dec2;});}return null;};}function removeEntity(_0x2a71a4,_0x1ec943){return function(_0x3a0bbf){if(_0x3a0bbf){return _0x3a0bbf[_0xa045('0x25')]()[_0xa045('0x26')](function(){_0x2a71a4[_0xa045('0x1b')](0xcc)[_0xa045('0x1c')]();});}};}function handleEntityNotFound(_0x342a5d,_0x3e1148){return function(_0x108214){if(!_0x108214){_0x342a5d[_0xa045('0x1a')](0x194);}return _0x108214;};}function handleError(_0x3a0ea0,_0x4e88d2){_0x4e88d2=_0x4e88d2||0x1f4;return function(_0x557cd6){logger[_0xa045('0x27')](_0x557cd6[_0xa045('0x28')]);if(_0x557cd6['name']){delete _0x557cd6[_0xa045('0x29')];}_0x3a0ea0[_0xa045('0x1b')](_0x4e88d2)['send'](_0x557cd6);};}exports[_0xa045('0x2a')]=function(_0x81695a,_0xd44e55){var _0x2292b4={},_0x3df39b={},_0x517bc6={'count':0x0,'rows':[]};var _0x4cd20b=_[_0xa045('0x2b')](db[_0xa045('0x2c')][_0xa045('0x2d')],function(_0xc3f540){return{'name':_0xc3f540[_0xa045('0x2e')],'type':_0xc3f540['type'][_0xa045('0x2f')]};});_0x3df39b[_0xa045('0x30')]=_[_0xa045('0x2b')](_0x4cd20b,_0xa045('0x29'));_0x3df39b[_0xa045('0x31')]=_[_0xa045('0x32')](_0x81695a[_0xa045('0x31')]);_0x3df39b[_0xa045('0x33')]=_[_0xa045('0x34')](_0x3df39b['model'],_0x3df39b[_0xa045('0x31')]);_0x2292b4[_0xa045('0x35')]=_[_0xa045('0x34')](_0x3df39b[_0xa045('0x30')],qs[_0xa045('0x36')](_0x81695a[_0xa045('0x31')][_0xa045('0x36')]));_0x2292b4[_0xa045('0x35')]=_0x2292b4['attributes']['length']?_0x2292b4[_0xa045('0x35')]:_0x3df39b['model'];if(!_0x81695a[_0xa045('0x31')][_0xa045('0x37')](_0xa045('0x38'))){_0x2292b4[_0xa045('0x1f')]=qs[_0xa045('0x1f')](_0x81695a[_0xa045('0x31')]['limit']);_0x2292b4[_0xa045('0x21')]=qs[_0xa045('0x21')](_0x81695a['query']['offset']);}_0x2292b4[_0xa045('0x39')]=qs[_0xa045('0x3a')](_0x81695a[_0xa045('0x31')][_0xa045('0x3a')]);_0x2292b4[_0xa045('0x3b')]=qs[_0xa045('0x33')](_[_0xa045('0x3c')](_0x81695a[_0xa045('0x31')],_0x3df39b[_0xa045('0x33')]),_0x4cd20b);if(_0x81695a[_0xa045('0x31')][_0xa045('0x3d')]){_0x2292b4[_0xa045('0x3b')]=_[_0xa045('0x3e')](_0x2292b4[_0xa045('0x3b')],{'$or':_['map'](_0x4cd20b,function(_0x3e498c){if(_0x3e498c[_0xa045('0x3f')]!==_0xa045('0x40')){var _0x2ffdd3={};_0x2ffdd3[_0x3e498c['name']]={'$like':'%'+_0x81695a[_0xa045('0x31')]['filter']+'%'};return _0x2ffdd3;}})});}_0x2292b4=_[_0xa045('0x3e')]({},_0x2292b4,_0x81695a[_0xa045('0x41')]);var _0x293797={'where':_0x2292b4[_0xa045('0x3b')]};return db[_0xa045('0x2c')][_0xa045('0x20')](_0x293797)[_0xa045('0x26')](function(_0x47b4f1){_0x517bc6[_0xa045('0x20')]=_0x47b4f1;if(_0x81695a['query'][_0xa045('0x42')]){_0x2292b4[_0xa045('0x43')]=[{'all':!![]}];}return db[_0xa045('0x2c')][_0xa045('0x44')](_0x2292b4);})['then'](function(_0x22583c){_0x517bc6[_0xa045('0x45')]=_0x22583c;return _0x517bc6;})['then'](respondWithFilteredResult(_0xd44e55,_0x2292b4))['catch'](handleError(_0xd44e55,null));};exports['show']=function(_0x3194d4,_0x55a072){var _0x57f106={'raw':!![],'where':{'id':_0x3194d4['params']['id']}},_0x374e87={};_0x374e87['model']=_[_0xa045('0x32')](db[_0xa045('0x2c')][_0xa045('0x2d')]);_0x374e87[_0xa045('0x31')]=_[_0xa045('0x32')](_0x3194d4['query']);_0x374e87['filters']=_[_0xa045('0x34')](_0x374e87[_0xa045('0x30')],_0x374e87[_0xa045('0x31')]);_0x57f106[_0xa045('0x35')]=_[_0xa045('0x34')](_0x374e87[_0xa045('0x30')],qs[_0xa045('0x36')](_0x3194d4[_0xa045('0x31')][_0xa045('0x36')]));_0x57f106[_0xa045('0x35')]=_0x57f106[_0xa045('0x35')][_0xa045('0x46')]?_0x57f106[_0xa045('0x35')]:_0x374e87[_0xa045('0x30')];if(_0x3194d4[_0xa045('0x31')][_0xa045('0x42')]){_0x57f106[_0xa045('0x43')]=[{'all':!![]}];}_0x57f106=_[_0xa045('0x3e')]({},_0x57f106,_0x3194d4[_0xa045('0x41')]);return db[_0xa045('0x2c')]['find'](_0x57f106)['then'](handleEntityNotFound(_0x55a072,null))[_0xa045('0x26')](respondWithResult(_0x55a072,null))[_0xa045('0x47')](handleError(_0x55a072,null));};exports['create']=function(_0x351286,_0x155045){return db[_0xa045('0x2c')][_0xa045('0x48')](_0x351286[_0xa045('0x49')],{})[_0xa045('0x26')](respondWithResult(_0x155045,0xc9))[_0xa045('0x47')](handleError(_0x155045,null));};exports[_0xa045('0x4a')]=function(_0xf2ea31,_0x5e28a1){if(_0xf2ea31['body']['id']){delete _0xf2ea31[_0xa045('0x49')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0xf2ea31[_0xa045('0x4b')]['id']}})[_0xa045('0x26')](handleEntityNotFound(_0x5e28a1,null))[_0xa045('0x26')](saveUpdates(_0xf2ea31[_0xa045('0x49')],null))[_0xa045('0x26')](respondWithResult(_0x5e28a1,null))[_0xa045('0x47')](handleError(_0x5e28a1,null));};exports[_0xa045('0x25')]=function(_0x3db6ed,_0x1949d1){return db[_0xa045('0x2c')][_0xa045('0x4c')]({'where':{'id':_0x3db6ed[_0xa045('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1949d1,null))['then'](removeEntity(_0x1949d1,null))[_0xa045('0x47')](handleError(_0x1949d1,null));};
\ No newline at end of file
+var _0xf560=['key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','FreshsalesField','findAll','rows','catch','show','include','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','../../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','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','type'];(function(_0x2d5a5b,_0x4e9ec7){var _0x1850a6=function(_0x3de2f6){while(--_0x3de2f6){_0x2d5a5b['push'](_0x2d5a5b['shift']());}};_0x1850a6(++_0x4e9ec7);}(_0xf560,0x104));var _0x0f56=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf560[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x0f56('0x0'));var rimraf=require(_0x0f56('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f56('0x2'));var rp=require(_0x0f56('0x3'));var moment=require(_0x0f56('0x4'));var BPromise=require(_0x0f56('0x5'));var Mustache=require(_0x0f56('0x6'));var util=require(_0x0f56('0x7'));var path=require(_0x0f56('0x8'));var sox=require(_0x0f56('0x9'));var csv=require('to-csv');var ejs=require(_0x0f56('0xa'));var fs=require('fs');var fs_extra=require(_0x0f56('0xb'));var _=require(_0x0f56('0xc'));var squel=require(_0x0f56('0xd'));var crypto=require('crypto');var jsforce=require(_0x0f56('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0f56('0xf'));var querystring=require(_0x0f56('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0f56('0x11'));var qs=require(_0x0f56('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0f56('0x13'));var logger=require(_0x0f56('0x14'))(_0x0f56('0x15'));var utils=require('../../config/utils');var config=require(_0x0f56('0x16'));var licenseUtil=require(_0x0f56('0x17'));var db=require(_0x0f56('0x18'))['db'];function respondWithStatusCode(_0x42f957,_0x1205f2){_0x1205f2=_0x1205f2||0xcc;return function(_0x397f47){if(_0x397f47){return _0x42f957[_0x0f56('0x19')](_0x1205f2);}return _0x42f957[_0x0f56('0x1a')](_0x1205f2)[_0x0f56('0x1b')]();};}function respondWithResult(_0x32c1f5,_0x15f316){_0x15f316=_0x15f316||0xc8;return function(_0x44d8ec){if(_0x44d8ec){return _0x32c1f5[_0x0f56('0x1a')](_0x15f316)['json'](_0x44d8ec);}};}function respondWithFilteredResult(_0x4bf27c,_0x5da33b){return function(_0x2852c7){if(_0x2852c7){var _0x8b1317=typeof _0x5da33b[_0x0f56('0x1c')]===_0x0f56('0x1d')&&typeof _0x5da33b[_0x0f56('0x1e')]===_0x0f56('0x1d');var _0x2adfbf=_0x2852c7[_0x0f56('0x1f')];var _0x3434a0=_0x8b1317?0x0:_0x5da33b[_0x0f56('0x1c')];var _0x24a2a8=_0x8b1317?_0x2852c7['count']:_0x5da33b[_0x0f56('0x1c')]+_0x5da33b[_0x0f56('0x1e')];var _0x4c3373;if(_0x24a2a8>=_0x2adfbf){_0x24a2a8=_0x2adfbf;_0x4c3373=0xc8;}else{_0x4c3373=0xce;}_0x4bf27c[_0x0f56('0x1a')](_0x4c3373);return _0x4bf27c[_0x0f56('0x20')](_0x0f56('0x21'),_0x3434a0+'-'+_0x24a2a8+'/'+_0x2adfbf)[_0x0f56('0x22')](_0x2852c7);}return null;};}function patchUpdates(_0x48487f){return function(_0x3fab98){try{jsonpatch[_0x0f56('0x23')](_0x3fab98,_0x48487f,!![]);}catch(_0x4ca9a1){return BPromise[_0x0f56('0x24')](_0x4ca9a1);}return _0x3fab98[_0x0f56('0x25')]();};}function saveUpdates(_0x3a7a1e,_0xef093f){return function(_0x323a9a){if(_0x323a9a){return _0x323a9a[_0x0f56('0x26')](_0x3a7a1e)[_0x0f56('0x27')](function(_0x5c92fd){return _0x5c92fd;});}return null;};}function removeEntity(_0x11592f,_0x438099){return function(_0x2fe236){if(_0x2fe236){return _0x2fe236[_0x0f56('0x28')]()[_0x0f56('0x27')](function(){_0x11592f[_0x0f56('0x1a')](0xcc)[_0x0f56('0x1b')]();});}};}function handleEntityNotFound(_0xd388c0,_0xe46193){return function(_0x458058){if(!_0x458058){_0xd388c0['sendStatus'](0x194);}return _0x458058;};}function handleError(_0x3e03d8,_0x50125f){_0x50125f=_0x50125f||0x1f4;return function(_0x46855d){logger['error'](_0x46855d[_0x0f56('0x29')]);if(_0x46855d[_0x0f56('0x2a')]){delete _0x46855d['name'];}_0x3e03d8['status'](_0x50125f)[_0x0f56('0x2b')](_0x46855d);};}exports[_0x0f56('0x2c')]=function(_0x24d81d,_0x542499){var _0x54203a={},_0x56c988={},_0x47f033={'count':0x0,'rows':[]};var _0x289dbb=_[_0x0f56('0x2d')](db['FreshsalesField'][_0x0f56('0x2e')],function(_0x136b08){return{'name':_0x136b08['fieldName'],'type':_0x136b08[_0x0f56('0x2f')][_0x0f56('0x30')]};});_0x56c988[_0x0f56('0x31')]=_['map'](_0x289dbb,'name');_0x56c988[_0x0f56('0x32')]=_[_0x0f56('0x33')](_0x24d81d[_0x0f56('0x32')]);_0x56c988['filters']=_['intersection'](_0x56c988[_0x0f56('0x31')],_0x56c988[_0x0f56('0x32')]);_0x54203a[_0x0f56('0x34')]=_[_0x0f56('0x35')](_0x56c988['model'],qs['fields'](_0x24d81d[_0x0f56('0x32')][_0x0f56('0x36')]));_0x54203a['attributes']=_0x54203a['attributes'][_0x0f56('0x37')]?_0x54203a[_0x0f56('0x34')]:_0x56c988[_0x0f56('0x31')];if(!_0x24d81d[_0x0f56('0x32')][_0x0f56('0x38')](_0x0f56('0x39'))){_0x54203a[_0x0f56('0x1e')]=qs['limit'](_0x24d81d[_0x0f56('0x32')][_0x0f56('0x1e')]);_0x54203a[_0x0f56('0x1c')]=qs[_0x0f56('0x1c')](_0x24d81d[_0x0f56('0x32')][_0x0f56('0x1c')]);}_0x54203a[_0x0f56('0x3a')]=qs['sort'](_0x24d81d[_0x0f56('0x32')][_0x0f56('0x3b')]);_0x54203a[_0x0f56('0x3c')]=qs['filters'](_['pick'](_0x24d81d['query'],_0x56c988[_0x0f56('0x3d')]),_0x289dbb);if(_0x24d81d['query'][_0x0f56('0x3e')]){_0x54203a[_0x0f56('0x3c')]=_[_0x0f56('0x3f')](_0x54203a[_0x0f56('0x3c')],{'$or':_['map'](_0x289dbb,function(_0x5d149b){if(_0x5d149b[_0x0f56('0x2f')]!==_0x0f56('0x40')){var _0x193fc1={};_0x193fc1[_0x5d149b[_0x0f56('0x2a')]]={'$like':'%'+_0x24d81d[_0x0f56('0x32')]['filter']+'%'};return _0x193fc1;}})});}_0x54203a=_[_0x0f56('0x3f')]({},_0x54203a,_0x24d81d[_0x0f56('0x41')]);var _0x6e2d20={'where':_0x54203a['where']};return db['FreshsalesField'][_0x0f56('0x1f')](_0x6e2d20)[_0x0f56('0x27')](function(_0x2f5006){_0x47f033[_0x0f56('0x1f')]=_0x2f5006;if(_0x24d81d[_0x0f56('0x32')][_0x0f56('0x42')]){_0x54203a['include']=[{'all':!![]}];}return db[_0x0f56('0x43')][_0x0f56('0x44')](_0x54203a);})['then'](function(_0x218986){_0x47f033[_0x0f56('0x45')]=_0x218986;return _0x47f033;})[_0x0f56('0x27')](respondWithFilteredResult(_0x542499,_0x54203a))[_0x0f56('0x46')](handleError(_0x542499,null));};exports[_0x0f56('0x47')]=function(_0x5bb0f0,_0x2490cf){var _0x3b8e9d={'raw':!![],'where':{'id':_0x5bb0f0['params']['id']}},_0xa2c513={};_0xa2c513[_0x0f56('0x31')]=_[_0x0f56('0x33')](db[_0x0f56('0x43')][_0x0f56('0x2e')]);_0xa2c513[_0x0f56('0x32')]=_[_0x0f56('0x33')](_0x5bb0f0[_0x0f56('0x32')]);_0xa2c513[_0x0f56('0x3d')]=_[_0x0f56('0x35')](_0xa2c513[_0x0f56('0x31')],_0xa2c513['query']);_0x3b8e9d['attributes']=_['intersection'](_0xa2c513[_0x0f56('0x31')],qs[_0x0f56('0x36')](_0x5bb0f0[_0x0f56('0x32')][_0x0f56('0x36')]));_0x3b8e9d[_0x0f56('0x34')]=_0x3b8e9d[_0x0f56('0x34')][_0x0f56('0x37')]?_0x3b8e9d[_0x0f56('0x34')]:_0xa2c513['model'];if(_0x5bb0f0[_0x0f56('0x32')][_0x0f56('0x42')]){_0x3b8e9d[_0x0f56('0x48')]=[{'all':!![]}];}_0x3b8e9d=_[_0x0f56('0x3f')]({},_0x3b8e9d,_0x5bb0f0['options']);return db[_0x0f56('0x43')][_0x0f56('0x49')](_0x3b8e9d)[_0x0f56('0x27')](handleEntityNotFound(_0x2490cf,null))[_0x0f56('0x27')](respondWithResult(_0x2490cf,null))[_0x0f56('0x46')](handleError(_0x2490cf,null));};exports[_0x0f56('0x4a')]=function(_0x744e3c,_0x3b938d){return db[_0x0f56('0x43')][_0x0f56('0x4a')](_0x744e3c['body'],{})[_0x0f56('0x27')](respondWithResult(_0x3b938d,0xc9))['catch'](handleError(_0x3b938d,null));};exports['update']=function(_0x532031,_0x121569){if(_0x532031[_0x0f56('0x4b')]['id']){delete _0x532031[_0x0f56('0x4b')]['id'];}return db[_0x0f56('0x43')][_0x0f56('0x49')]({'where':{'id':_0x532031['params']['id']}})[_0x0f56('0x27')](handleEntityNotFound(_0x121569,null))[_0x0f56('0x27')](saveUpdates(_0x532031[_0x0f56('0x4b')],null))[_0x0f56('0x27')](respondWithResult(_0x121569,null))[_0x0f56('0x46')](handleError(_0x121569,null));};exports[_0x0f56('0x28')]=function(_0x382aaa,_0x573972){return db[_0x0f56('0x43')][_0x0f56('0x49')]({'where':{'id':_0x382aaa[_0x0f56('0x4c')]['id']}})[_0x0f56('0x27')](handleEntityNotFound(_0x573972,null))[_0x0f56('0x27')](removeEntity(_0x573972,null))[_0x0f56('0x46')](handleError(_0x573972,null));};
\ No newline at end of file
index b992131..62d719b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88c3=['idField','FieldId','lodash','../../config/logger','bluebird','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','FreshsalesField','int_freshsales_fields','freshsales_unique_index'];(function(_0x5d7305,_0x55556e){var _0x37bd44=function(_0x4b20f5){while(--_0x4b20f5){_0x5d7305['push'](_0x5d7305['shift']());}};_0x37bd44(++_0x55556e);}(_0x88c3,0x1ee));var _0x388c=function(_0x341ff5,_0x3cdec8){_0x341ff5=_0x341ff5-0x0;var _0x1ef1f9=_0x88c3[_0x341ff5];return _0x1ef1f9;};'use strict';var _=require(_0x388c('0x0'));var util=require('util');var logger=require(_0x388c('0x1'))('api');var moment=require('moment');var BPromise=require(_0x388c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x388c('0x3'));var config=require(_0x388c('0x4'));var attributes=require(_0x388c('0x5'));module[_0x388c('0x6')]=function(_0x28ed4d,_0x23199c){return _0x28ed4d['define'](_0x388c('0x7'),attributes,{'tableName':_0x388c('0x8'),'paranoid':![],'indexes':[{'name':_0x388c('0x9'),'fields':[_0x388c('0xa'),_0x388c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe458=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId'];(function(_0x2ffdd1,_0x58dbc9){var _0x5004eb=function(_0x3c82dd){while(--_0x3c82dd){_0x2ffdd1['push'](_0x2ffdd1['shift']());}};_0x5004eb(++_0x58dbc9);}(_0xe458,0x160));var _0x8e45=function(_0x225819,_0x305ae3){_0x225819=_0x225819-0x0;var _0x34f551=_0xe458[_0x225819];return _0x34f551;};'use strict';var _=require(_0x8e45('0x0'));var util=require(_0x8e45('0x1'));var logger=require('../../config/logger')(_0x8e45('0x2'));var moment=require(_0x8e45('0x3'));var BPromise=require(_0x8e45('0x4'));var rp=require(_0x8e45('0x5'));var fs=require('fs');var path=require(_0x8e45('0x6'));var rimraf=require(_0x8e45('0x7'));var config=require(_0x8e45('0x8'));var attributes=require(_0x8e45('0x9'));module['exports']=function(_0x4a9756,_0x3aea2b){return _0x4a9756[_0x8e45('0xa')](_0x8e45('0xb'),attributes,{'tableName':_0x8e45('0xc'),'paranoid':![],'indexes':[{'name':_0x8e45('0xd'),'fields':[_0x8e45('0xe'),_0x8e45('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3c5633a..2795cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshsalesField,\x20%s,\x20%s'];(function(_0x217594,_0x312457){var _0xdf7167=function(_0x223b88){while(--_0x223b88){_0x217594['push'](_0x217594['shift']());}};_0xdf7167(++_0x312457);}(_0x9536,0x179));var _0x6953=function(_0x51fe5f,_0x1d8632){_0x51fe5f=_0x51fe5f-0x0;var _0x4abce9=_0x9536[_0x51fe5f];return _0x4abce9;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var moment=require(_0x6953('0x2'));var BPromise=require(_0x6953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6953('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6953('0x5'));var logger=require(_0x6953('0x6'))(_0x6953('0x7'));var config=require(_0x6953('0x8'));var jayson=require(_0x6953('0x9'));var client=jayson['client'][_0x6953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bb026,_0x385f2d,_0x3e1aff){return new BPromise(function(_0x1c8225,_0x58ac30){return client[_0x6953('0xb')](_0x2bb026,_0x3e1aff)[_0x6953('0xc')](function(_0x449acb){logger['info'](_0x6953('0xd'),_0x385f2d,_0x6953('0xe'));logger[_0x6953('0xf')](_0x6953('0x10'),_0x385f2d,_0x6953('0xe'),JSON[_0x6953('0x11')](_0x449acb));if(_0x449acb[_0x6953('0x12')]){if(_0x449acb[_0x6953('0x12')][_0x6953('0x13')]===0x1f4){logger['error'](_0x6953('0xd'),_0x385f2d,_0x449acb['error'][_0x6953('0x14')]);return _0x58ac30(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}logger[_0x6953('0x12')](_0x6953('0xd'),_0x385f2d,_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);return _0x1c8225(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}else{logger[_0x6953('0x15')](_0x6953('0xd'),_0x385f2d,'request\x20sent');_0x1c8225(_0x449acb['result'][_0x6953('0x14')]);}})[_0x6953('0x16')](function(_0x16b79b){logger[_0x6953('0x12')]('FreshsalesField,\x20%s,\x20%s',_0x385f2d,_0x16b79b);_0x58ac30(_0x16b79b);});});}
\ No newline at end of file
+var _0xd117=['request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FreshsalesField,\x20%s,\x20%s','debug','stringify','code','error','message'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xd117,0x182));var _0x7d11=function(_0x2f37e0,_0x393ef9){_0x2f37e0=_0x2f37e0-0x0;var _0x43ccce=_0xd117[_0x2f37e0];return _0x43ccce;};'use strict';var _=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var moment=require(_0x7d11('0x2'));var BPromise=require(_0x7d11('0x3'));var rs=require(_0x7d11('0x4'));var fs=require('fs');var Redis=require(_0x7d11('0x5'));var db=require(_0x7d11('0x6'))['db'];var utils=require(_0x7d11('0x7'));var logger=require(_0x7d11('0x8'))(_0x7d11('0x9'));var config=require(_0x7d11('0xa'));var jayson=require(_0x7d11('0xb'));var client=jayson[_0x7d11('0xc')][_0x7d11('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x345602,_0x3c8d66,_0x47b5e6){return new BPromise(function(_0x3803b5,_0xffd020){return client[_0x7d11('0xe')](_0x345602,_0x47b5e6)['then'](function(_0x305eef){logger[_0x7d11('0xf')](_0x7d11('0x10'),_0x3c8d66,'request\x20sent');logger[_0x7d11('0x11')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x3c8d66,'request\x20sent',JSON[_0x7d11('0x12')](_0x305eef));if(_0x305eef['error']){if(_0x305eef['error'][_0x7d11('0x13')]===0x1f4){logger['error'](_0x7d11('0x10'),_0x3c8d66,_0x305eef[_0x7d11('0x14')]['message']);return _0xffd020(_0x305eef[_0x7d11('0x14')][_0x7d11('0x15')]);}logger['error'](_0x7d11('0x10'),_0x3c8d66,_0x305eef[_0x7d11('0x14')][_0x7d11('0x15')]);return _0x3803b5(_0x305eef[_0x7d11('0x14')][_0x7d11('0x15')]);}else{logger[_0x7d11('0xf')](_0x7d11('0x10'),_0x3c8d66,_0x7d11('0x16'));_0x3803b5(_0x305eef['result'][_0x7d11('0x15')]);}})[_0x7d11('0x17')](function(_0x169733){logger[_0x7d11('0x14')](_0x7d11('0x10'),_0x3c8d66,_0x169733);_0xffd020(_0x169733);});});}
\ No newline at end of file
index 83122e8..00b7e0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x28aafc,_0x34bf37){var _0xdcb4f4=function(_0x5528dc){while(--_0x5528dc){_0x28aafc['push'](_0x28aafc['shift']());}};_0xdcb4f4(++_0x34bf37);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0xfb98ce,_0x2397ea){var _0x4c1a8f=function(_0x38450d){while(--_0x38450d){_0xfb98ce['push'](_0xfb98ce['shift']());}};_0x4c1a8f(++_0x2397ea);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index fab1f52..e2daf28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc74c=['integrationTab','sequelize','exports','STRING','username','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc74c,0x163));var _0xcc74=function(_0x2f4dde,_0x34e19b){_0x2f4dde=_0x2f4dde-0x0;var _0x4c7fbd=_0xc74c[_0x2f4dde];return _0x4c7fbd;};'use strict';var Sequelize=require(_0xcc74('0x0'));module[_0xcc74('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xcc74('0x2')],'unique':_0xcc74('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xcc74('0x2')]},'clientId':{'type':Sequelize[_0xcc74('0x2')]},'clientSecret':{'type':Sequelize[_0xcc74('0x2')]},'securityToken':{'type':Sequelize[_0xcc74('0x2')]},'serverUrl':{'type':Sequelize[_0xcc74('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xcc74('0x4')](_0xcc74('0x5'),'newTab'),'defaultValue':_0xcc74('0x5')}};
\ No newline at end of file
+var _0xc110=['newTab','sequelize','exports','STRING','username','ENUM','integrationTab'];(function(_0x538375,_0x365e8d){var _0x1c3531=function(_0x7dc57f){while(--_0x7dc57f){_0x538375['push'](_0x538375['shift']());}};_0x1c3531(++_0x365e8d);}(_0xc110,0x1c1));var _0x0c11=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc110[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0c11('0x0'));module[_0x0c11('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0c11('0x2')]},'username':{'type':Sequelize[_0x0c11('0x2')],'unique':_0x0c11('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x0c11('0x2')]},'clientId':{'type':Sequelize[_0x0c11('0x2')]},'clientSecret':{'type':Sequelize[_0x0c11('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x0c11('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0c11('0x4')](_0x0c11('0x5'),_0x0c11('0x6')),'defaultValue':_0x0c11('0x5')}};
\ No newline at end of file
index f905942..9339165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e92=['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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','error','stack','name','map','SalesforceAccount','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','include','catch','show','options','create','body','destroy','find','params','getConfigurations','findOne','SalesforceConfiguration','Subjects','channel','Descriptions','getDescriptions','getFields','Task','clientId','clientSecret','username','securityToken','remoteUri','slice','substring','lastIndexOf','Connection','login','password','concat','ticketType','sobject','describe','OwnerId','IsReminderSet','IsRecurrence','Description','string','boolean','email','textarea','remove','includes','label','custom','picklistValues','value','True','true','False','false','statusCode','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0xa161ca,_0x387006){var _0x2197c1=function(_0x4a535c){while(--_0x4a535c){_0xa161ca['push'](_0xa161ca['shift']());}};_0x2197c1(++_0x387006);}(_0x6e92,0x16d));var _0x26e9=function(_0xacabb,_0x1fbcd9){_0xacabb=_0xacabb-0x0;var _0x2b4a14=_0x6e92[_0xacabb];return _0x2b4a14;};'use strict';var emlformat=require(_0x26e9('0x0'));var rimraf=require(_0x26e9('0x1'));var zipdir=require(_0x26e9('0x2'));var jsonpatch=require(_0x26e9('0x3'));var rp=require(_0x26e9('0x4'));var moment=require(_0x26e9('0x5'));var BPromise=require(_0x26e9('0x6'));var Mustache=require(_0x26e9('0x7'));var util=require(_0x26e9('0x8'));var path=require(_0x26e9('0x9'));var sox=require(_0x26e9('0xa'));var csv=require(_0x26e9('0xb'));var ejs=require(_0x26e9('0xc'));var fs=require('fs');var fs_extra=require(_0x26e9('0xd'));var _=require(_0x26e9('0xe'));var squel=require(_0x26e9('0xf'));var crypto=require(_0x26e9('0x10'));var jsforce=require(_0x26e9('0x11'));var deskjs=require(_0x26e9('0x12'));var toCsv=require(_0x26e9('0xb'));var querystring=require(_0x26e9('0x13'));var Papa=require('papaparse');var Redis=require(_0x26e9('0x14'));var authService=require(_0x26e9('0x15'));var qs=require(_0x26e9('0x16'));var as=require(_0x26e9('0x17'));var hardwareService=require(_0x26e9('0x18'));var logger=require(_0x26e9('0x19'))(_0x26e9('0x1a'));var utils=require(_0x26e9('0x1b'));var config=require(_0x26e9('0x1c'));var licenseUtil=require(_0x26e9('0x1d'));var db=require(_0x26e9('0x1e'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x127668,_0x767b26){_0x767b26=_0x767b26||0xcc;return function(_0x2441bf){if(_0x2441bf){return _0x127668[_0x26e9('0x1f')](_0x767b26);}return _0x127668[_0x26e9('0x20')](_0x767b26)['end']();};}function respondWithResult(_0x1fa416,_0x33f561){_0x33f561=_0x33f561||0xc8;return function(_0x23483e){if(_0x23483e){return _0x1fa416['status'](_0x33f561)['json'](_0x23483e);}};}function respondWithFilteredResult(_0x223f46,_0x7eaad1){return function(_0x3a9394){if(_0x3a9394){var _0x357bfa=typeof _0x7eaad1[_0x26e9('0x21')]===_0x26e9('0x22')&&typeof _0x7eaad1[_0x26e9('0x23')]===_0x26e9('0x22');var _0x2a52fa=_0x3a9394[_0x26e9('0x24')];var _0x13ef2b=_0x357bfa?0x0:_0x7eaad1['offset'];var _0x43db90=_0x357bfa?_0x3a9394[_0x26e9('0x24')]:_0x7eaad1[_0x26e9('0x21')]+_0x7eaad1[_0x26e9('0x23')];var _0x179d34;if(_0x43db90>=_0x2a52fa){_0x43db90=_0x2a52fa;_0x179d34=0xc8;}else{_0x179d34=0xce;}_0x223f46[_0x26e9('0x20')](_0x179d34);return _0x223f46[_0x26e9('0x25')](_0x26e9('0x26'),_0x13ef2b+'-'+_0x43db90+'/'+_0x2a52fa)[_0x26e9('0x27')](_0x3a9394);}return null;};}function patchUpdates(_0x3c37d3){return function(_0x2b8af9){try{jsonpatch[_0x26e9('0x28')](_0x2b8af9,_0x3c37d3,!![]);}catch(_0x43aed0){return BPromise[_0x26e9('0x29')](_0x43aed0);}return _0x2b8af9['save']();};}function saveUpdates(_0x337106,_0xe2e365){return function(_0x15b7d4){if(_0x15b7d4){return _0x15b7d4[_0x26e9('0x2a')](_0x337106)['then'](function(_0x376a94){return _0x376a94;});}return null;};}function removeEntity(_0x47fd25,_0xd04145){return function(_0x21c5c7){if(_0x21c5c7){return _0x21c5c7['destroy']()[_0x26e9('0x2b')](function(){_0x47fd25[_0x26e9('0x20')](0xcc)[_0x26e9('0x2c')]();});}};}function handleEntityNotFound(_0x583b4c,_0x1e894b){return function(_0x2c40b3){if(!_0x2c40b3){_0x583b4c['sendStatus'](0x194);}return _0x2c40b3;};}function handleError(_0x3d266b,_0x41adf4){_0x41adf4=_0x41adf4||0x1f4;return function(_0x464eec){logger[_0x26e9('0x2d')](_0x464eec[_0x26e9('0x2e')]);if(_0x464eec[_0x26e9('0x2f')]){delete _0x464eec['name'];}_0x3d266b['status'](_0x41adf4)['send'](_0x464eec);};}exports['index']=function(_0x593a37,_0x49bb1f){var _0x2a2639={},_0x1fc56d={},_0xf14ce2={'count':0x0,'rows':[]};var _0x3d5af4=_[_0x26e9('0x30')](db[_0x26e9('0x31')][_0x26e9('0x32')],function(_0x5c1d6e){return{'name':_0x5c1d6e[_0x26e9('0x33')],'type':_0x5c1d6e[_0x26e9('0x34')][_0x26e9('0x35')]};});_0x1fc56d['model']=_['map'](_0x3d5af4,_0x26e9('0x2f'));_0x1fc56d[_0x26e9('0x36')]=_[_0x26e9('0x37')](_0x593a37['query']);_0x1fc56d[_0x26e9('0x38')]=_['intersection'](_0x1fc56d[_0x26e9('0x39')],_0x1fc56d[_0x26e9('0x36')]);_0x2a2639['attributes']=_[_0x26e9('0x3a')](_0x1fc56d['model'],qs[_0x26e9('0x3b')](_0x593a37[_0x26e9('0x36')]['fields']));_0x2a2639[_0x26e9('0x3c')]=_0x2a2639[_0x26e9('0x3c')][_0x26e9('0x3d')]?_0x2a2639[_0x26e9('0x3c')]:_0x1fc56d[_0x26e9('0x39')];if(!_0x593a37[_0x26e9('0x36')][_0x26e9('0x3e')](_0x26e9('0x3f'))){_0x2a2639[_0x26e9('0x23')]=qs[_0x26e9('0x23')](_0x593a37['query'][_0x26e9('0x23')]);_0x2a2639[_0x26e9('0x21')]=qs[_0x26e9('0x21')](_0x593a37[_0x26e9('0x36')]['offset']);}_0x2a2639[_0x26e9('0x40')]=qs[_0x26e9('0x41')](_0x593a37['query'][_0x26e9('0x41')]);_0x2a2639['where']=qs['filters'](_[_0x26e9('0x42')](_0x593a37['query'],_0x1fc56d[_0x26e9('0x38')]),_0x3d5af4);if(_0x593a37[_0x26e9('0x36')][_0x26e9('0x43')]){_0x2a2639['where']=_[_0x26e9('0x44')](_0x2a2639[_0x26e9('0x45')],{'$or':_[_0x26e9('0x30')](_0x3d5af4,function(_0x472eea){if(_0x472eea[_0x26e9('0x34')]!=='VIRTUAL'){var _0xde2556={};_0xde2556[_0x472eea[_0x26e9('0x2f')]]={'$like':'%'+_0x593a37['query']['filter']+'%'};return _0xde2556;}})});}_0x2a2639=_[_0x26e9('0x44')]({},_0x2a2639,_0x593a37['options']);var _0x2576eb={'where':_0x2a2639[_0x26e9('0x45')]};return db[_0x26e9('0x31')][_0x26e9('0x24')](_0x2576eb)[_0x26e9('0x2b')](function(_0x2a734e){_0xf14ce2[_0x26e9('0x24')]=_0x2a734e;if(_0x593a37[_0x26e9('0x36')]['includeAll']){_0x2a2639[_0x26e9('0x46')]=[{'all':!![]}];}return db[_0x26e9('0x31')]['findAll'](_0x2a2639);})[_0x26e9('0x2b')](function(_0x3da4fa){_0xf14ce2['rows']=_0x3da4fa;return _0xf14ce2;})['then'](respondWithFilteredResult(_0x49bb1f,_0x2a2639))[_0x26e9('0x47')](handleError(_0x49bb1f,null));};exports[_0x26e9('0x48')]=function(_0x4c64c6,_0x8739f7){var _0x451337={'raw':![],'where':{'id':_0x4c64c6['params']['id']}},_0x43413c={};_0x43413c['model']=_[_0x26e9('0x37')](db[_0x26e9('0x31')][_0x26e9('0x32')]);_0x43413c[_0x26e9('0x36')]=_[_0x26e9('0x37')](_0x4c64c6[_0x26e9('0x36')]);_0x43413c[_0x26e9('0x38')]=_[_0x26e9('0x3a')](_0x43413c['model'],_0x43413c[_0x26e9('0x36')]);_0x451337['attributes']=_[_0x26e9('0x3a')](_0x43413c['model'],qs['fields'](_0x4c64c6[_0x26e9('0x36')][_0x26e9('0x3b')]));_0x451337[_0x26e9('0x3c')]=_0x451337[_0x26e9('0x3c')][_0x26e9('0x3d')]?_0x451337[_0x26e9('0x3c')]:_0x43413c[_0x26e9('0x39')];if(_0x4c64c6['query']['includeAll']){_0x451337['include']=[{'all':!![]}];}_0x451337=_[_0x26e9('0x44')]({},_0x451337,_0x4c64c6[_0x26e9('0x49')]);return db[_0x26e9('0x31')]['find'](_0x451337)['then'](handleEntityNotFound(_0x8739f7,null))[_0x26e9('0x2b')](respondWithResult(_0x8739f7,null))[_0x26e9('0x47')](handleError(_0x8739f7,null));};exports[_0x26e9('0x4a')]=function(_0x3b343c,_0x36d9f2){return db['SalesforceAccount'][_0x26e9('0x4a')](_0x3b343c[_0x26e9('0x4b')],{})[_0x26e9('0x2b')](respondWithResult(_0x36d9f2,0xc9))[_0x26e9('0x47')](handleError(_0x36d9f2,null));};exports[_0x26e9('0x2a')]=function(_0x1d4986,_0x145173){if(_0x1d4986[_0x26e9('0x4b')]['id']){delete _0x1d4986['body']['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x1d4986['params']['id']}})['then'](handleEntityNotFound(_0x145173,null))['then'](saveUpdates(_0x1d4986[_0x26e9('0x4b')],null))['then'](respondWithResult(_0x145173,null))[_0x26e9('0x47')](handleError(_0x145173,null));};exports[_0x26e9('0x4c')]=function(_0x1d6aa6,_0x111cf4){return db[_0x26e9('0x31')][_0x26e9('0x4d')]({'where':{'id':_0x1d6aa6[_0x26e9('0x4e')]['id']}})['then'](handleEntityNotFound(_0x111cf4,null))[_0x26e9('0x2b')](removeEntity(_0x111cf4,null))[_0x26e9('0x47')](handleError(_0x111cf4,null));};exports[_0x26e9('0x4f')]=function(_0x9f5e90,_0x26e3ea,_0x9d7ca3){var _0x1a5e52={};var _0x5a5016={};var _0x336969;var _0x125e2e;return db[_0x26e9('0x31')][_0x26e9('0x50')]({'where':{'id':_0x9f5e90[_0x26e9('0x4e')]['id']}})[_0x26e9('0x2b')](handleEntityNotFound(_0x26e3ea,null))[_0x26e9('0x2b')](function(_0x599c79){if(_0x599c79){_0x336969=_0x599c79;_0x5a5016[_0x26e9('0x39')]=_[_0x26e9('0x37')](db[_0x26e9('0x51')][_0x26e9('0x32')]);_0x5a5016['query']=_['keys'](_0x9f5e90['query']);_0x5a5016[_0x26e9('0x38')]=_['intersection'](_0x5a5016[_0x26e9('0x39')],_0x5a5016[_0x26e9('0x36')]);_0x1a5e52['attributes']=_[_0x26e9('0x3a')](_0x5a5016[_0x26e9('0x39')],qs[_0x26e9('0x3b')](_0x9f5e90['query'][_0x26e9('0x3b')]));_0x1a5e52[_0x26e9('0x3c')]=_0x1a5e52[_0x26e9('0x3c')][_0x26e9('0x3d')]?_0x1a5e52[_0x26e9('0x3c')]:_0x5a5016[_0x26e9('0x39')];_0x1a5e52[_0x26e9('0x40')]=qs['sort'](_0x9f5e90[_0x26e9('0x36')]['sort']);_0x1a5e52[_0x26e9('0x45')]=qs['filters'](_['pick'](_0x9f5e90['query'],_0x5a5016[_0x26e9('0x38')]));if(_0x9f5e90[_0x26e9('0x36')][_0x26e9('0x43')]){_0x1a5e52[_0x26e9('0x45')]=_[_0x26e9('0x44')](_0x1a5e52['where'],{'$or':_[_0x26e9('0x30')](_0x1a5e52[_0x26e9('0x3c')],function(_0x3b5bf6){var _0x33beea={};_0x33beea[_0x3b5bf6]={'$like':'%'+_0x9f5e90['query']['filter']+'%'};return _0x33beea;})});}_0x1a5e52=_[_0x26e9('0x44')]({},_0x1a5e52,_0x9f5e90[_0x26e9('0x49')]);return _0x336969[_0x26e9('0x4f')](_0x1a5e52);}})[_0x26e9('0x2b')](function(_0x5e4016){if(_0x5e4016){_0x125e2e=_0x5e4016[_0x26e9('0x3d')];if(!_0x9f5e90[_0x26e9('0x36')]['hasOwnProperty'](_0x26e9('0x3f'))){_0x1a5e52[_0x26e9('0x23')]=qs[_0x26e9('0x23')](_0x9f5e90[_0x26e9('0x36')][_0x26e9('0x23')]);_0x1a5e52[_0x26e9('0x21')]=qs['offset'](_0x9f5e90[_0x26e9('0x36')][_0x26e9('0x21')]);}return _0x336969[_0x26e9('0x4f')](_0x1a5e52);}})[_0x26e9('0x2b')](function(_0x54def3){if(_0x54def3){return _0x54def3?{'count':_0x125e2e,'rows':_0x54def3}:null;}})['then'](respondWithResult(_0x26e3ea,null))[_0x26e9('0x47')](handleError(_0x26e3ea,null));};exports['addConfiguration']=function(_0x43ea1c,_0x3d5d34,_0x2769b9){if(_0x43ea1c[_0x26e9('0x4b')]['id']){delete _0x43ea1c[_0x26e9('0x4b')]['id'];}return db[_0x26e9('0x31')][_0x26e9('0x50')]({'where':{'id':_0x43ea1c[_0x26e9('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3d5d34,null))[_0x26e9('0x2b')](function(_0x406d25){if(_0x406d25){_0x43ea1c[_0x26e9('0x4b')]['AccountId']=_0x406d25['id'];_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x52')]=integrations['getSubjects'](_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x53')],_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x34')]);_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x54')]=integrations[_0x26e9('0x55')](_0x43ea1c[_0x26e9('0x4b')]['channel'],_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x34')]);return db[_0x26e9('0x51')][_0x26e9('0x4a')](_0x43ea1c[_0x26e9('0x4b')],{'include':[{'model':db['SalesforceField'],'as':_0x26e9('0x52')},{'model':db['SalesforceField'],'as':_0x26e9('0x54')}]});}return null;})[_0x26e9('0x2b')](respondWithResult(_0x3d5d34,null))['catch'](handleError(_0x3d5d34,null));};exports[_0x26e9('0x56')]=function(_0x1a273b,_0x2a4100,_0x36218d){var _0x2a7fb0;var _0x489e75='';var _0x3d5001=_0x26e9('0x57');return db[_0x26e9('0x31')]['findOne']({'where':{'id':_0x1a273b[_0x26e9('0x4e')]['id']},'attributes':['id','remoteUri',_0x26e9('0x58'),_0x26e9('0x59'),_0x26e9('0x5a'),'password',_0x26e9('0x5b')]})['then'](handleEntityNotFound(_0x2a4100,null))[_0x26e9('0x2b')](function(_0x5998a7){if(_0x5998a7){_0x489e75=_0x5998a7[_0x26e9('0x5c')];var _0x518950=_0x489e75[_0x26e9('0x5d')](-0x1);if(_0x518950==='/'){_0x489e75=_0x489e75[_0x26e9('0x5e')](0x0,_0x489e75[_0x26e9('0x5f')](_0x518950));}_0x2a7fb0=new jsforce[(_0x26e9('0x60'))]({'oauth2':{'loginUrl':_0x489e75,'clientId':_0x5998a7[_0x26e9('0x58')],'clientSecret':_0x5998a7[_0x26e9('0x59')]}});return _0x2a7fb0[_0x26e9('0x61')](_0x5998a7[_0x26e9('0x5a')],_0x5998a7[_0x26e9('0x62')][_0x26e9('0x63')](_0x5998a7['securityToken']));}})[_0x26e9('0x2b')](function(_0x356b63){if(_0x356b63){if(!_['isNil'](_0x1a273b[_0x26e9('0x36')][_0x26e9('0x64')])){_0x3d5001=_0x1a273b[_0x26e9('0x36')][_0x26e9('0x64')];}return _0x2a7fb0[_0x26e9('0x65')](_0x3d5001)[_0x26e9('0x66')]();}})[_0x26e9('0x2b')](function(_0x4f4948){var _0x27bdbb=[_0x26e9('0x67'),'ActivityDate',_0x26e9('0x68'),_0x26e9('0x69'),'Subject',_0x26e9('0x6a')];var _0x51d341=[_0x26e9('0x6b'),'int','picklist',_0x26e9('0x6c'),_0x26e9('0x6d'),_0x26e9('0x6e'),'phone'];if(_0x4f4948){_[_0x26e9('0x6f')](_0x4f4948[_0x26e9('0x3b')],function(_0x5dd397){return _0x27bdbb[_0x26e9('0x70')](_0x5dd397[_0x26e9('0x2f')])||!_0x51d341[_0x26e9('0x70')](_0x5dd397['type']);});return{'count':_0x4f4948[_0x26e9('0x3b')][_0x26e9('0x3d')],'rows':_['map'](_0x4f4948[_0x26e9('0x3b')],function(_0x3e7e1d){return{'id':_0x3e7e1d[_0x26e9('0x2f')],'name':_0x3e7e1d[_0x26e9('0x71')],'custom':_0x3e7e1d[_0x26e9('0x72')],'options':_0x3e7e1d[_0x26e9('0x73')][_0x26e9('0x3d')]>0x0?_[_0x26e9('0x30')](_0x3e7e1d['picklistValues'],function(_0x4787ba){return{'name':_0x4787ba['label'],'value':_0x4787ba[_0x26e9('0x74')]};}):_0x3e7e1d['type']==_0x26e9('0x6c')?[{'name':_0x26e9('0x75'),'value':_0x26e9('0x76')},{'name':_0x26e9('0x77'),'value':_0x26e9('0x78')}]:[]};})};}})[_0x26e9('0x2b')](respondWithResult(_0x2a4100,null))[_0x26e9('0x47')](function(_0x5bda66){var _0x486448=_0x1a273b[_0x26e9('0x36')]['test']?0x1f4:_0x5bda66[_0x26e9('0x79')]||0x1f4;logger[_0x26e9('0x2d')]('getFields,\x20%s,\x20%s,\x20%s',_0x26e9('0x56'),_0x486448,JSON['stringify'](_0x5bda66));delete _0x5bda66[_0x26e9('0x2f')];if(_0x486448===0x191){_0x486448=0x190;}_0x2a4100[_0x26e9('0x20')](_0x486448)[_0x26e9('0x7a')](_0x1a273b['query'][_0x26e9('0x7b')]?{'message':_0x26e9('0x7c'),'statusCode':_0x5bda66['statusCode']}:_0x5bda66);});};
\ No newline at end of file
+var _0xd08e=['zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','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','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','then','destroy','error','name','send','index','map','SalesforceAccount','rawAttributes','type','key','keys','query','filters','model','attributes','intersection','fields','length','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','show','find','create','body','catch','params','getConfigurations','findOne','pick','hasOwnProperty','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','getFields','Task','remoteUri','clientSecret','slice','lastIndexOf','Connection','clientId','login','concat','securityToken','ticketType','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','int','boolean','email','textarea','phone','remove','includes','label','picklistValues','value','True','true','False','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xd08e,0xf4));var _0xed08=function(_0x2f5a22,_0x5e9f03){_0x2f5a22=_0x2f5a22-0x0;var _0x326b70=_0xd08e[_0x2f5a22];return _0x326b70;};'use strict';var emlformat=require(_0xed08('0x0'));var rimraf=require(_0xed08('0x1'));var zipdir=require(_0xed08('0x2'));var jsonpatch=require(_0xed08('0x3'));var rp=require('request-promise');var moment=require(_0xed08('0x4'));var BPromise=require(_0xed08('0x5'));var Mustache=require(_0xed08('0x6'));var util=require(_0xed08('0x7'));var path=require(_0xed08('0x8'));var sox=require(_0xed08('0x9'));var csv=require(_0xed08('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed08('0xb'));var _=require(_0xed08('0xc'));var squel=require(_0xed08('0xd'));var crypto=require(_0xed08('0xe'));var jsforce=require(_0xed08('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xed08('0xa'));var querystring=require(_0xed08('0x10'));var Papa=require(_0xed08('0x11'));var Redis=require('ioredis');var authService=require(_0xed08('0x12'));var qs=require(_0xed08('0x13'));var as=require(_0xed08('0x14'));var hardwareService=require(_0xed08('0x15'));var logger=require(_0xed08('0x16'))(_0xed08('0x17'));var utils=require(_0xed08('0x18'));var config=require(_0xed08('0x19'));var licenseUtil=require(_0xed08('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0xed08('0x1b'));function respondWithStatusCode(_0x5a04a8,_0x52545a){_0x52545a=_0x52545a||0xcc;return function(_0x542878){if(_0x542878){return _0x5a04a8[_0xed08('0x1c')](_0x52545a);}return _0x5a04a8[_0xed08('0x1d')](_0x52545a)[_0xed08('0x1e')]();};}function respondWithResult(_0x10a04c,_0x5e4458){_0x5e4458=_0x5e4458||0xc8;return function(_0xb81a12){if(_0xb81a12){return _0x10a04c['status'](_0x5e4458)['json'](_0xb81a12);}};}function respondWithFilteredResult(_0x3bd396,_0x9bd37a){return function(_0x80b11c){if(_0x80b11c){var _0x47acef=typeof _0x9bd37a[_0xed08('0x1f')]===_0xed08('0x20')&&typeof _0x9bd37a[_0xed08('0x21')]==='undefined';var _0x5b5884=_0x80b11c[_0xed08('0x22')];var _0x4ccebb=_0x47acef?0x0:_0x9bd37a[_0xed08('0x1f')];var _0x1a5274=_0x47acef?_0x80b11c[_0xed08('0x22')]:_0x9bd37a[_0xed08('0x1f')]+_0x9bd37a[_0xed08('0x21')];var _0x244c8b;if(_0x1a5274>=_0x5b5884){_0x1a5274=_0x5b5884;_0x244c8b=0xc8;}else{_0x244c8b=0xce;}_0x3bd396['status'](_0x244c8b);return _0x3bd396[_0xed08('0x23')]('Content-Range',_0x4ccebb+'-'+_0x1a5274+'/'+_0x5b5884)[_0xed08('0x24')](_0x80b11c);}return null;};}function patchUpdates(_0xa06f94){return function(_0x55fbcf){try{jsonpatch[_0xed08('0x25')](_0x55fbcf,_0xa06f94,!![]);}catch(_0x40781e){return BPromise['reject'](_0x40781e);}return _0x55fbcf['save']();};}function saveUpdates(_0x1e12c7,_0x520a11){return function(_0x21d87a){if(_0x21d87a){return _0x21d87a['update'](_0x1e12c7)[_0xed08('0x26')](function(_0x3a187a){return _0x3a187a;});}return null;};}function removeEntity(_0x11d702,_0x329cda){return function(_0x47cbd7){if(_0x47cbd7){return _0x47cbd7[_0xed08('0x27')]()[_0xed08('0x26')](function(){_0x11d702[_0xed08('0x1d')](0xcc)[_0xed08('0x1e')]();});}};}function handleEntityNotFound(_0x272008,_0x5366d7){return function(_0x281f67){if(!_0x281f67){_0x272008[_0xed08('0x1c')](0x194);}return _0x281f67;};}function handleError(_0x181992,_0x4fbe43){_0x4fbe43=_0x4fbe43||0x1f4;return function(_0x1ecddb){logger[_0xed08('0x28')](_0x1ecddb['stack']);if(_0x1ecddb[_0xed08('0x29')]){delete _0x1ecddb[_0xed08('0x29')];}_0x181992[_0xed08('0x1d')](_0x4fbe43)[_0xed08('0x2a')](_0x1ecddb);};}exports[_0xed08('0x2b')]=function(_0x56c6cb,_0x41e083){var _0x338f06={},_0x54d587={},_0xadfe63={'count':0x0,'rows':[]};var _0x2183e2=_[_0xed08('0x2c')](db[_0xed08('0x2d')][_0xed08('0x2e')],function(_0x26ed64){return{'name':_0x26ed64['fieldName'],'type':_0x26ed64[_0xed08('0x2f')][_0xed08('0x30')]};});_0x54d587['model']=_[_0xed08('0x2c')](_0x2183e2,_0xed08('0x29'));_0x54d587['query']=_[_0xed08('0x31')](_0x56c6cb[_0xed08('0x32')]);_0x54d587[_0xed08('0x33')]=_['intersection'](_0x54d587[_0xed08('0x34')],_0x54d587[_0xed08('0x32')]);_0x338f06[_0xed08('0x35')]=_[_0xed08('0x36')](_0x54d587[_0xed08('0x34')],qs['fields'](_0x56c6cb[_0xed08('0x32')][_0xed08('0x37')]));_0x338f06['attributes']=_0x338f06[_0xed08('0x35')][_0xed08('0x38')]?_0x338f06[_0xed08('0x35')]:_0x54d587[_0xed08('0x34')];if(!_0x56c6cb['query']['hasOwnProperty']('nolimit')){_0x338f06[_0xed08('0x21')]=qs[_0xed08('0x21')](_0x56c6cb[_0xed08('0x32')][_0xed08('0x21')]);_0x338f06[_0xed08('0x1f')]=qs[_0xed08('0x1f')](_0x56c6cb[_0xed08('0x32')][_0xed08('0x1f')]);}_0x338f06[_0xed08('0x39')]=qs[_0xed08('0x3a')](_0x56c6cb[_0xed08('0x32')][_0xed08('0x3a')]);_0x338f06[_0xed08('0x3b')]=qs[_0xed08('0x33')](_['pick'](_0x56c6cb[_0xed08('0x32')],_0x54d587[_0xed08('0x33')]),_0x2183e2);if(_0x56c6cb[_0xed08('0x32')][_0xed08('0x3c')]){_0x338f06[_0xed08('0x3b')]=_['merge'](_0x338f06[_0xed08('0x3b')],{'$or':_[_0xed08('0x2c')](_0x2183e2,function(_0x2a2aac){if(_0x2a2aac[_0xed08('0x2f')]!==_0xed08('0x3d')){var _0x41d312={};_0x41d312[_0x2a2aac[_0xed08('0x29')]]={'$like':'%'+_0x56c6cb[_0xed08('0x32')][_0xed08('0x3c')]+'%'};return _0x41d312;}})});}_0x338f06=_[_0xed08('0x3e')]({},_0x338f06,_0x56c6cb[_0xed08('0x3f')]);var _0xaf3378={'where':_0x338f06[_0xed08('0x3b')]};return db[_0xed08('0x2d')]['count'](_0xaf3378)[_0xed08('0x26')](function(_0x5794d8){_0xadfe63[_0xed08('0x22')]=_0x5794d8;if(_0x56c6cb[_0xed08('0x32')][_0xed08('0x40')]){_0x338f06[_0xed08('0x41')]=[{'all':!![]}];}return db['SalesforceAccount']['findAll'](_0x338f06);})['then'](function(_0x3d48e2){_0xadfe63[_0xed08('0x42')]=_0x3d48e2;return _0xadfe63;})[_0xed08('0x26')](respondWithFilteredResult(_0x41e083,_0x338f06))['catch'](handleError(_0x41e083,null));};exports[_0xed08('0x43')]=function(_0x371569,_0x5c15fd){var _0x522a39={'raw':![],'where':{'id':_0x371569['params']['id']}},_0x431937={};_0x431937[_0xed08('0x34')]=_[_0xed08('0x31')](db['SalesforceAccount'][_0xed08('0x2e')]);_0x431937[_0xed08('0x32')]=_[_0xed08('0x31')](_0x371569[_0xed08('0x32')]);_0x431937[_0xed08('0x33')]=_[_0xed08('0x36')](_0x431937[_0xed08('0x34')],_0x431937[_0xed08('0x32')]);_0x522a39[_0xed08('0x35')]=_[_0xed08('0x36')](_0x431937[_0xed08('0x34')],qs[_0xed08('0x37')](_0x371569[_0xed08('0x32')]['fields']));_0x522a39[_0xed08('0x35')]=_0x522a39[_0xed08('0x35')][_0xed08('0x38')]?_0x522a39[_0xed08('0x35')]:_0x431937['model'];if(_0x371569[_0xed08('0x32')][_0xed08('0x40')]){_0x522a39['include']=[{'all':!![]}];}_0x522a39=_['merge']({},_0x522a39,_0x371569[_0xed08('0x3f')]);return db[_0xed08('0x2d')][_0xed08('0x44')](_0x522a39)[_0xed08('0x26')](handleEntityNotFound(_0x5c15fd,null))[_0xed08('0x26')](respondWithResult(_0x5c15fd,null))['catch'](handleError(_0x5c15fd,null));};exports[_0xed08('0x45')]=function(_0x33962c,_0x42d568){return db['SalesforceAccount'][_0xed08('0x45')](_0x33962c[_0xed08('0x46')],{})['then'](respondWithResult(_0x42d568,0xc9))[_0xed08('0x47')](handleError(_0x42d568,null));};exports['update']=function(_0x4c5af0,_0x29ef11){if(_0x4c5af0[_0xed08('0x46')]['id']){delete _0x4c5af0[_0xed08('0x46')]['id'];}return db[_0xed08('0x2d')][_0xed08('0x44')]({'where':{'id':_0x4c5af0[_0xed08('0x48')]['id']}})[_0xed08('0x26')](handleEntityNotFound(_0x29ef11,null))[_0xed08('0x26')](saveUpdates(_0x4c5af0[_0xed08('0x46')],null))[_0xed08('0x26')](respondWithResult(_0x29ef11,null))[_0xed08('0x47')](handleError(_0x29ef11,null));};exports[_0xed08('0x27')]=function(_0x27d68d,_0x263f3b){return db['SalesforceAccount']['find']({'where':{'id':_0x27d68d[_0xed08('0x48')]['id']}})['then'](handleEntityNotFound(_0x263f3b,null))[_0xed08('0x26')](removeEntity(_0x263f3b,null))[_0xed08('0x47')](handleError(_0x263f3b,null));};exports[_0xed08('0x49')]=function(_0x3bd699,_0x2bc385,_0x516aaa){var _0x42734a={};var _0xdfcbf4={};var _0x3615b3;var _0x454e32;return db[_0xed08('0x2d')][_0xed08('0x4a')]({'where':{'id':_0x3bd699[_0xed08('0x48')]['id']}})[_0xed08('0x26')](handleEntityNotFound(_0x2bc385,null))[_0xed08('0x26')](function(_0x384b22){if(_0x384b22){_0x3615b3=_0x384b22;_0xdfcbf4[_0xed08('0x34')]=_['keys'](db['SalesforceConfiguration'][_0xed08('0x2e')]);_0xdfcbf4[_0xed08('0x32')]=_['keys'](_0x3bd699[_0xed08('0x32')]);_0xdfcbf4[_0xed08('0x33')]=_[_0xed08('0x36')](_0xdfcbf4['model'],_0xdfcbf4['query']);_0x42734a[_0xed08('0x35')]=_[_0xed08('0x36')](_0xdfcbf4[_0xed08('0x34')],qs[_0xed08('0x37')](_0x3bd699[_0xed08('0x32')]['fields']));_0x42734a['attributes']=_0x42734a['attributes'][_0xed08('0x38')]?_0x42734a['attributes']:_0xdfcbf4['model'];_0x42734a['order']=qs[_0xed08('0x3a')](_0x3bd699['query'][_0xed08('0x3a')]);_0x42734a[_0xed08('0x3b')]=qs['filters'](_[_0xed08('0x4b')](_0x3bd699[_0xed08('0x32')],_0xdfcbf4[_0xed08('0x33')]));if(_0x3bd699[_0xed08('0x32')][_0xed08('0x3c')]){_0x42734a[_0xed08('0x3b')]=_['merge'](_0x42734a['where'],{'$or':_[_0xed08('0x2c')](_0x42734a['attributes'],function(_0x1ad05e){var _0x504ef7={};_0x504ef7[_0x1ad05e]={'$like':'%'+_0x3bd699['query'][_0xed08('0x3c')]+'%'};return _0x504ef7;})});}_0x42734a=_['merge']({},_0x42734a,_0x3bd699[_0xed08('0x3f')]);return _0x3615b3['getConfigurations'](_0x42734a);}})[_0xed08('0x26')](function(_0x1fc3e7){if(_0x1fc3e7){_0x454e32=_0x1fc3e7[_0xed08('0x38')];if(!_0x3bd699['query'][_0xed08('0x4c')](_0xed08('0x4d'))){_0x42734a[_0xed08('0x21')]=qs['limit'](_0x3bd699[_0xed08('0x32')][_0xed08('0x21')]);_0x42734a[_0xed08('0x1f')]=qs[_0xed08('0x1f')](_0x3bd699[_0xed08('0x32')][_0xed08('0x1f')]);}return _0x3615b3['getConfigurations'](_0x42734a);}})[_0xed08('0x26')](function(_0x2d486e){if(_0x2d486e){return _0x2d486e?{'count':_0x454e32,'rows':_0x2d486e}:null;}})['then'](respondWithResult(_0x2bc385,null))['catch'](handleError(_0x2bc385,null));};exports['addConfiguration']=function(_0xd1373c,_0x48058a,_0x4812d0){if(_0xd1373c[_0xed08('0x46')]['id']){delete _0xd1373c['body']['id'];}return db[_0xed08('0x2d')][_0xed08('0x4a')]({'where':{'id':_0xd1373c[_0xed08('0x48')]['id']}})[_0xed08('0x26')](handleEntityNotFound(_0x48058a,null))[_0xed08('0x26')](function(_0x324fe8){if(_0x324fe8){_0xd1373c[_0xed08('0x46')][_0xed08('0x4e')]=_0x324fe8['id'];_0xd1373c[_0xed08('0x46')][_0xed08('0x4f')]=integrations[_0xed08('0x50')](_0xd1373c['body'][_0xed08('0x51')],_0xd1373c[_0xed08('0x46')]['type']);_0xd1373c[_0xed08('0x46')][_0xed08('0x52')]=integrations[_0xed08('0x53')](_0xd1373c[_0xed08('0x46')][_0xed08('0x51')],_0xd1373c[_0xed08('0x46')][_0xed08('0x2f')]);return db[_0xed08('0x54')]['create'](_0xd1373c[_0xed08('0x46')],{'include':[{'model':db[_0xed08('0x55')],'as':_0xed08('0x4f')},{'model':db[_0xed08('0x55')],'as':_0xed08('0x52')}]});}return null;})[_0xed08('0x26')](respondWithResult(_0x48058a,null))[_0xed08('0x47')](handleError(_0x48058a,null));};exports[_0xed08('0x56')]=function(_0x3eab07,_0xc9ee0d,_0xb5c7c1){var _0x28b39a;var _0x5bd6aa='';var _0x1d06c0=_0xed08('0x57');return db[_0xed08('0x2d')][_0xed08('0x4a')]({'where':{'id':_0x3eab07[_0xed08('0x48')]['id']},'attributes':['id',_0xed08('0x58'),'clientId',_0xed08('0x59'),'username','password','securityToken']})[_0xed08('0x26')](handleEntityNotFound(_0xc9ee0d,null))[_0xed08('0x26')](function(_0x4ba950){if(_0x4ba950){_0x5bd6aa=_0x4ba950['remoteUri'];var _0x563239=_0x5bd6aa[_0xed08('0x5a')](-0x1);if(_0x563239==='/'){_0x5bd6aa=_0x5bd6aa['substring'](0x0,_0x5bd6aa[_0xed08('0x5b')](_0x563239));}_0x28b39a=new jsforce[(_0xed08('0x5c'))]({'oauth2':{'loginUrl':_0x5bd6aa,'clientId':_0x4ba950[_0xed08('0x5d')],'clientSecret':_0x4ba950[_0xed08('0x59')]}});return _0x28b39a[_0xed08('0x5e')](_0x4ba950['username'],_0x4ba950['password'][_0xed08('0x5f')](_0x4ba950[_0xed08('0x60')]));}})['then'](function(_0x4daf3a){if(_0x4daf3a){if(!_['isNil'](_0x3eab07[_0xed08('0x32')]['ticketType'])){_0x1d06c0=_0x3eab07[_0xed08('0x32')][_0xed08('0x61')];}return _0x28b39a['sobject'](_0x1d06c0)[_0xed08('0x62')]();}})[_0xed08('0x26')](function(_0x3bc96f){var _0xdbb3ad=[_0xed08('0x63'),_0xed08('0x64'),_0xed08('0x65'),_0xed08('0x66'),_0xed08('0x67'),_0xed08('0x68')];var _0x1c59be=['string',_0xed08('0x69'),'picklist',_0xed08('0x6a'),_0xed08('0x6b'),_0xed08('0x6c'),_0xed08('0x6d')];if(_0x3bc96f){_[_0xed08('0x6e')](_0x3bc96f[_0xed08('0x37')],function(_0x549009){return _0xdbb3ad[_0xed08('0x6f')](_0x549009[_0xed08('0x29')])||!_0x1c59be[_0xed08('0x6f')](_0x549009[_0xed08('0x2f')]);});return{'count':_0x3bc96f['fields']['length'],'rows':_[_0xed08('0x2c')](_0x3bc96f['fields'],function(_0x14cb4e){return{'id':_0x14cb4e[_0xed08('0x29')],'name':_0x14cb4e[_0xed08('0x70')],'custom':_0x14cb4e['custom'],'options':_0x14cb4e[_0xed08('0x71')]['length']>0x0?_['map'](_0x14cb4e[_0xed08('0x71')],function(_0x169ee3){return{'name':_0x169ee3[_0xed08('0x70')],'value':_0x169ee3[_0xed08('0x72')]};}):_0x14cb4e[_0xed08('0x2f')]==_0xed08('0x6a')?[{'name':_0xed08('0x73'),'value':_0xed08('0x74')},{'name':_0xed08('0x75'),'value':'false'}]:[]};})};}})[_0xed08('0x26')](respondWithResult(_0xc9ee0d,null))[_0xed08('0x47')](function(_0x97634){var _0x2c90bc=_0x3eab07[_0xed08('0x32')][_0xed08('0x76')]?0x1f4:_0x97634[_0xed08('0x77')]||0x1f4;logger[_0xed08('0x28')](_0xed08('0x78'),'getFields',_0x2c90bc,JSON[_0xed08('0x79')](_0x97634));delete _0x97634[_0xed08('0x29')];if(_0x2c90bc===0x191){_0x2c90bc=0x190;}_0xc9ee0d[_0xed08('0x1d')](_0x2c90bc)[_0xed08('0x2a')](_0x3eab07[_0xed08('0x32')][_0xed08('0x76')]?{'message':_0xed08('0x7a'),'statusCode':_0x97634['statusCode']}:_0x97634);});};
\ No newline at end of file
index 149b0c0..a44674a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e37=['rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','SalesforceAccount','int_salesforce_accounts','lodash','moment','bluebird','request-promise'];(function(_0x18a229,_0x3c2dfd){var _0x1237a2=function(_0x32204a){while(--_0x32204a){_0x18a229['push'](_0x18a229['shift']());}};_0x1237a2(++_0x3c2dfd);}(_0x4e37,0xd8));var _0x74e3=function(_0x4a3b28,_0x41fc7c){_0x4a3b28=_0x4a3b28-0x0;var _0x394c74=_0x4e37[_0x4a3b28];return _0x394c74;};'use strict';var _=require(_0x74e3('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x74e3('0x1'));var BPromise=require(_0x74e3('0x2'));var rp=require(_0x74e3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x74e3('0x4'));var config=require(_0x74e3('0x5'));var attributes=require(_0x74e3('0x6'));var integrations=require(_0x74e3('0x7'));module[_0x74e3('0x8')]=function(_0x8c2f4c,_0x4ef4a5){return _0x8c2f4c['define'](_0x74e3('0x9'),attributes,{'tableName':_0x74e3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8ba=['define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x3e29c4,_0x22e6e9){var _0x5adaee=function(_0x1ed936){while(--_0x1ed936){_0x3e29c4['push'](_0x3e29c4['shift']());}};_0x5adaee(++_0x22e6e9);}(_0xd8ba,0x12f));var _0xad8b=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xd8ba[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xad8b('0x0'));var util=require(_0xad8b('0x1'));var logger=require(_0xad8b('0x2'))(_0xad8b('0x3'));var moment=require(_0xad8b('0x4'));var BPromise=require(_0xad8b('0x5'));var rp=require(_0xad8b('0x6'));var fs=require('fs');var path=require(_0xad8b('0x7'));var rimraf=require(_0xad8b('0x8'));var config=require('../../config/environment');var attributes=require(_0xad8b('0x9'));var integrations=require(_0xad8b('0xa'));module[_0xad8b('0xb')]=function(_0xe4c3c1,_0x3c7474){return _0xe4c3c1[_0xad8b('0xc')](_0xad8b('0xd'),attributes,{'tableName':_0xad8b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6768078..6a618ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadbb=['include','map','model','stringify','catch','SalesforceAccount','ShowSalesforceAccount','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetSalesforceAccount','findAll','options','where','attributes','limit'];(function(_0x1ac495,_0x2d0989){var _0xf8490b=function(_0x4b718c){while(--_0x4b718c){_0x1ac495['push'](_0x1ac495['shift']());}};_0xf8490b(++_0x2d0989);}(_0xadbb,0x97));var _0xbadb=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xadbb[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xbadb('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbadb('0x1'));var rs=require(_0xbadb('0x2'));var fs=require('fs');var Redis=require(_0xbadb('0x3'));var db=require(_0xbadb('0x4'))['db'];var utils=require(_0xbadb('0x5'));var logger=require(_0xbadb('0x6'))(_0xbadb('0x7'));var config=require(_0xbadb('0x8'));var jayson=require(_0xbadb('0x9'));var client=jayson[_0xbadb('0xa')][_0xbadb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12e390,_0x431db8,_0x1e54ca){return new BPromise(function(_0x5e7830,_0xd23c3a){return client[_0xbadb('0xc')](_0x12e390,_0x1e54ca)[_0xbadb('0xd')](function(_0x52185d){logger[_0xbadb('0xe')](_0xbadb('0xf'),_0x431db8,_0xbadb('0x10'));logger[_0xbadb('0x11')](_0xbadb('0x12'),_0x431db8,_0xbadb('0x10'),JSON['stringify'](_0x52185d));if(_0x52185d['error']){if(_0x52185d[_0xbadb('0x13')][_0xbadb('0x14')]===0x1f4){logger[_0xbadb('0x13')](_0xbadb('0xf'),_0x431db8,_0x52185d['error'][_0xbadb('0x15')]);return _0xd23c3a(_0x52185d[_0xbadb('0x13')][_0xbadb('0x15')]);}logger[_0xbadb('0x13')](_0xbadb('0xf'),_0x431db8,_0x52185d[_0xbadb('0x13')][_0xbadb('0x15')]);return _0x5e7830(_0x52185d[_0xbadb('0x13')]['message']);}else{logger[_0xbadb('0xe')](_0xbadb('0xf'),_0x431db8,_0xbadb('0x10'));_0x5e7830(_0x52185d[_0xbadb('0x16')][_0xbadb('0x15')]);}})['catch'](function(_0xbc3143){logger[_0xbadb('0x13')](_0xbadb('0xf'),_0x431db8,_0xbc3143);_0xd23c3a(_0xbc3143);});});}exports[_0xbadb('0x17')]=function(_0x5ae0c6){var _0x505c85=this;return new Promise(function(_0xa77dea,_0xfc94d5){return db['SalesforceAccount'][_0xbadb('0x18')]({'raw':_0x5ae0c6['options']?_0x5ae0c6[_0xbadb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6['options'][_0xbadb('0x1a')]||null:null,'attributes':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6[_0xbadb('0x19')][_0xbadb('0x1b')]||null:null,'limit':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6['options'][_0xbadb('0x1c')]||null:null,'include':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6['options'][_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0x5ae0c6[_0xbadb('0x19')][_0xbadb('0x1d')],function(_0x51bdf4){return{'model':db[_0x51bdf4[_0xbadb('0x1f')]],'as':_0x51bdf4['as'],'attributes':_0x51bdf4[_0xbadb('0x1b')],'include':_0x51bdf4['include']?_['map'](_0x51bdf4[_0xbadb('0x1d')],function(_0xd68974){return{'model':db[_0xd68974[_0xbadb('0x1f')]],'as':_0xd68974['as'],'attributes':_0xd68974['attributes'],'include':_0xd68974[_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0xd68974[_0xbadb('0x1d')],function(_0x1f54f9){return{'model':db[_0x1f54f9[_0xbadb('0x1f')]],'as':_0x1f54f9['as'],'attributes':_0x1f54f9[_0xbadb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbadb('0xd')](function(_0x596216){logger[_0xbadb('0xe')](_0xbadb('0x17'),_0x5ae0c6);logger[_0xbadb('0x11')](_0xbadb('0x17'),_0x5ae0c6,JSON[_0xbadb('0x20')](_0x596216));_0xa77dea(_0x596216);})[_0xbadb('0x21')](function(_0x7db56b){logger[_0xbadb('0x13')](_0xbadb('0x17'),_0x7db56b[_0xbadb('0x15')],_0x5ae0c6);_0xfc94d5(_0x505c85[_0xbadb('0x13')](0x1f4,_0x7db56b[_0xbadb('0x15')]));});});};exports['ShowSalesforceAccount']=function(_0x86c375){var _0x14ddd5=this;return new Promise(function(_0x23408b,_0x58ea4e){return db[_0xbadb('0x22')]['find']({'raw':_0x86c375[_0xbadb('0x19')]?_0x86c375[_0xbadb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x86c375[_0xbadb('0x19')]?_0x86c375[_0xbadb('0x19')]['where']||null:null,'attributes':_0x86c375[_0xbadb('0x19')]?_0x86c375['options'][_0xbadb('0x1b')]||null:null,'include':_0x86c375[_0xbadb('0x19')]?_0x86c375['options'][_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0x86c375[_0xbadb('0x19')][_0xbadb('0x1d')],function(_0x165364){return{'model':db[_0x165364[_0xbadb('0x1f')]],'as':_0x165364['as'],'attributes':_0x165364[_0xbadb('0x1b')],'include':_0x165364[_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0x165364[_0xbadb('0x1d')],function(_0x37e803){return{'model':db[_0x37e803['model']],'as':_0x37e803['as'],'attributes':_0x37e803[_0xbadb('0x1b')],'include':_0x37e803['include']?_['map'](_0x37e803['include'],function(_0x3ff84d){return{'model':db[_0x3ff84d[_0xbadb('0x1f')]],'as':_0x3ff84d['as'],'attributes':_0x3ff84d[_0xbadb('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5aefc1){logger['info'](_0xbadb('0x23'),_0x86c375);logger['debug'](_0xbadb('0x23'),_0x86c375,JSON['stringify'](_0x5aefc1));_0x23408b(_0x5aefc1);})[_0xbadb('0x21')](function(_0x205aa7){logger['error'](_0xbadb('0x23'),_0x205aa7['message'],_0x86c375);_0x58ea4e(_0x14ddd5[_0xbadb('0x13')](0x1f4,_0x205aa7[_0xbadb('0x15')]));});});};
\ No newline at end of file
+var _0x71b4=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','info','result','catch','GetSalesforceAccount','SalesforceAccount','options','attributes','limit','include','map','model','ShowSalesforceAccount','find','raw','where','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x5f93ad,_0x232da5){var _0x14b3fe=function(_0x3ce522){while(--_0x3ce522){_0x5f93ad['push'](_0x5f93ad['shift']());}};_0x14b3fe(++_0x232da5);}(_0x71b4,0x7e));var _0x471b=function(_0x54277c,_0x574ff8){_0x54277c=_0x54277c-0x0;var _0x1d1ccd=_0x71b4[_0x54277c];return _0x1d1ccd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x471b('0x0'));var BPromise=require('bluebird');var rs=require(_0x471b('0x1'));var fs=require('fs');var Redis=require(_0x471b('0x2'));var db=require(_0x471b('0x3'))['db'];var utils=require(_0x471b('0x4'));var logger=require('../../config/logger')(_0x471b('0x5'));var config=require(_0x471b('0x6'));var jayson=require(_0x471b('0x7'));var client=jayson[_0x471b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x45cde7,_0x2c5e6d,_0x5ab745){return new BPromise(function(_0x2bf11f,_0x153818){return client[_0x471b('0x9')](_0x45cde7,_0x5ab745)[_0x471b('0xa')](function(_0x53a1b9){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x2c5e6d,_0x471b('0xb'));logger[_0x471b('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x2c5e6d,'request\x20sent',JSON[_0x471b('0xd')](_0x53a1b9));if(_0x53a1b9[_0x471b('0xe')]){if(_0x53a1b9['error'][_0x471b('0xf')]===0x1f4){logger[_0x471b('0xe')](_0x471b('0x10'),_0x2c5e6d,_0x53a1b9[_0x471b('0xe')][_0x471b('0x11')]);return _0x153818(_0x53a1b9[_0x471b('0xe')][_0x471b('0x11')]);}logger[_0x471b('0xe')](_0x471b('0x10'),_0x2c5e6d,_0x53a1b9[_0x471b('0xe')][_0x471b('0x11')]);return _0x2bf11f(_0x53a1b9[_0x471b('0xe')]['message']);}else{logger[_0x471b('0x12')](_0x471b('0x10'),_0x2c5e6d,_0x471b('0xb'));_0x2bf11f(_0x53a1b9[_0x471b('0x13')][_0x471b('0x11')]);}})[_0x471b('0x14')](function(_0x11e41d){logger['error'](_0x471b('0x10'),_0x2c5e6d,_0x11e41d);_0x153818(_0x11e41d);});});}exports[_0x471b('0x15')]=function(_0x3f9458){var _0x13434d=this;return new Promise(function(_0x5c6808,_0x5441c9){return db[_0x471b('0x16')]['findAll']({'raw':_0x3f9458['options']?_0x3f9458[_0x471b('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x3f9458[_0x471b('0x17')]?_0x3f9458[_0x471b('0x17')]['where']||null:null,'attributes':_0x3f9458[_0x471b('0x17')]?_0x3f9458['options'][_0x471b('0x18')]||null:null,'limit':_0x3f9458[_0x471b('0x17')]?_0x3f9458[_0x471b('0x17')][_0x471b('0x19')]||null:null,'include':_0x3f9458[_0x471b('0x17')]?_0x3f9458[_0x471b('0x17')][_0x471b('0x1a')]?_[_0x471b('0x1b')](_0x3f9458[_0x471b('0x17')][_0x471b('0x1a')],function(_0x372805){return{'model':db[_0x372805['model']],'as':_0x372805['as'],'attributes':_0x372805['attributes'],'include':_0x372805[_0x471b('0x1a')]?_[_0x471b('0x1b')](_0x372805[_0x471b('0x1a')],function(_0x3684d5){return{'model':db[_0x3684d5[_0x471b('0x1c')]],'as':_0x3684d5['as'],'attributes':_0x3684d5[_0x471b('0x18')],'include':_0x3684d5[_0x471b('0x1a')]?_[_0x471b('0x1b')](_0x3684d5[_0x471b('0x1a')],function(_0x171c67){return{'model':db[_0x171c67[_0x471b('0x1c')]],'as':_0x171c67['as'],'attributes':_0x171c67[_0x471b('0x18')]};}):[]};}):[]};}):[]:[]})[_0x471b('0xa')](function(_0x4bd2b7){logger[_0x471b('0x12')](_0x471b('0x15'),_0x3f9458);logger[_0x471b('0xc')](_0x471b('0x15'),_0x3f9458,JSON[_0x471b('0xd')](_0x4bd2b7));_0x5c6808(_0x4bd2b7);})['catch'](function(_0xd320b4){logger['error'](_0x471b('0x15'),_0xd320b4['message'],_0x3f9458);_0x5441c9(_0x13434d[_0x471b('0xe')](0x1f4,_0xd320b4['message']));});});};exports[_0x471b('0x1d')]=function(_0x33cc7b){var _0x44213f=this;return new Promise(function(_0x4a79e7,_0x7a7dbb){return db['SalesforceAccount'][_0x471b('0x1e')]({'raw':_0x33cc7b[_0x471b('0x17')]?_0x33cc7b[_0x471b('0x17')][_0x471b('0x1f')]===undefined?!![]:![]:!![],'where':_0x33cc7b['options']?_0x33cc7b[_0x471b('0x17')][_0x471b('0x20')]||null:null,'attributes':_0x33cc7b[_0x471b('0x17')]?_0x33cc7b[_0x471b('0x17')][_0x471b('0x18')]||null:null,'include':_0x33cc7b[_0x471b('0x17')]?_0x33cc7b[_0x471b('0x17')][_0x471b('0x1a')]?_['map'](_0x33cc7b[_0x471b('0x17')][_0x471b('0x1a')],function(_0x55073e){return{'model':db[_0x55073e[_0x471b('0x1c')]],'as':_0x55073e['as'],'attributes':_0x55073e[_0x471b('0x18')],'include':_0x55073e['include']?_['map'](_0x55073e[_0x471b('0x1a')],function(_0x340829){return{'model':db[_0x340829[_0x471b('0x1c')]],'as':_0x340829['as'],'attributes':_0x340829[_0x471b('0x18')],'include':_0x340829['include']?_[_0x471b('0x1b')](_0x340829[_0x471b('0x1a')],function(_0x3e3e12){return{'model':db[_0x3e3e12['model']],'as':_0x3e3e12['as'],'attributes':_0x3e3e12[_0x471b('0x18')]};}):[]};}):[]};}):[]:[]})[_0x471b('0xa')](function(_0x189b2d){logger[_0x471b('0x12')](_0x471b('0x1d'),_0x33cc7b);logger[_0x471b('0xc')]('ShowSalesforceAccount',_0x33cc7b,JSON['stringify'](_0x189b2d));_0x4a79e7(_0x189b2d);})[_0x471b('0x14')](function(_0x5c6c25){logger[_0x471b('0xe')](_0x471b('0x1d'),_0x5c6c25[_0x471b('0x11')],_0x33cc7b);_0x7a7dbb(_0x44213f['error'](0x1f4,_0x5c6c25[_0x471b('0x11')]));});});};
\ No newline at end of file
index c4b6cca..d80ae51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xdb28,0x106));var _0x8db2=function(_0x40da94,_0x45ec0e){_0x40da94=_0x40da94-0x0;var _0x2dd0be=_0xdb28[_0x40da94];return _0x2dd0be;};'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('./intSalesforceConfiguration.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['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
+var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x28fe5f,_0x2cb57){var _0x5cc0e6=function(_0x4dbe3e){while(--_0x4dbe3e){_0x28fe5f['push'](_0x28fe5f['shift']());}};_0x5cc0e6(++_0x2cb57);}(_0xadb5,0xad));var _0x5adb=function(_0x3893ba,_0x1250ee){_0x3893ba=_0x3893ba-0x0;var _0x17660f=_0xadb5[_0x3893ba];return _0x17660f;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
index abbc3b4..9f9762c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f37=['contact','account','exports','STRING','ENUM','Task','contact_lead','lead','account_contact_lead','nothing'];(function(_0x57a50d,_0x2871f8){var _0x1b25b3=function(_0x45691e){while(--_0x45691e){_0x57a50d['push'](_0x57a50d['shift']());}};_0x1b25b3(++_0x2871f8);}(_0x0f37,0x1c4));var _0x70f3=function(_0x313c92,_0x5d9943){_0x313c92=_0x313c92-0x0;var _0x8ddf39=_0x0f37[_0x313c92];return _0x8ddf39;};'use strict';var Sequelize=require('sequelize');module[_0x70f3('0x0')]={'name':{'type':Sequelize[_0x70f3('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x70f3('0x2')]('Task','Case'),'defaultValue':_0x70f3('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0x70f3('0x4'),'contact',_0x70f3('0x5'),_0x70f3('0x6'),'account'),'defaultValue':_0x70f3('0x4')},'moduleCreate':{'type':Sequelize[_0x70f3('0x2')](_0x70f3('0x7'),_0x70f3('0x8'),_0x70f3('0x5'),_0x70f3('0x9')),'defaultValue':_0x70f3('0x5')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x70f3('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x09e1=['Task','Case','contact_lead','lead','account','nothing','contact','sequelize','STRING','ENUM'];(function(_0x5a7cc5,_0x55f5cc){var _0x19ad2d=function(_0x11d735){while(--_0x11d735){_0x5a7cc5['push'](_0x5a7cc5['shift']());}};_0x19ad2d(++_0x55f5cc);}(_0x09e1,0x9d));var _0x109e=function(_0x165f27,_0x112d63){_0x165f27=_0x165f27-0x0;var _0x277503=_0x09e1[_0x165f27];return _0x277503;};'use strict';var Sequelize=require(_0x109e('0x0'));module['exports']={'name':{'type':Sequelize[_0x109e('0x1')]},'description':{'type':Sequelize[_0x109e('0x1')]},'ticketType':{'type':Sequelize[_0x109e('0x2')](_0x109e('0x3'),_0x109e('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0x109e('0x2')](_0x109e('0x5'),'contact',_0x109e('0x6'),'account_contact_lead',_0x109e('0x7')),'defaultValue':_0x109e('0x5')},'moduleCreate':{'type':Sequelize[_0x109e('0x2')](_0x109e('0x8'),_0x109e('0x9'),_0x109e('0x6'),_0x109e('0x7')),'defaultValue':_0x109e('0x6')},'leadId':{'type':Sequelize[_0x109e('0x1')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0x109e('0x1')]}};
\ No newline at end of file
index 72deee3..5d7137f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2acf=['map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','SalesforceConfiguration','findAll','rows','catch','show','length','find','create','body','params','findOne','SalesforceField','pick','getFields','hasOwnProperty','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model'];(function(_0x152dd4,_0xcd8dce){var _0x507a18=function(_0x58e631){while(--_0x58e631){_0x152dd4['push'](_0x152dd4['shift']());}};_0x507a18(++_0xcd8dce);}(_0x2acf,0x118));var _0xf2ac=function(_0xfbe06e,_0x2fb7ab){_0xfbe06e=_0xfbe06e-0x0;var _0x24e5b6=_0x2acf[_0xfbe06e];return _0x24e5b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf2ac('0x0'));var zipdir=require(_0xf2ac('0x1'));var jsonpatch=require(_0xf2ac('0x2'));var rp=require(_0xf2ac('0x3'));var moment=require('moment');var BPromise=require(_0xf2ac('0x4'));var Mustache=require(_0xf2ac('0x5'));var util=require(_0xf2ac('0x6'));var path=require(_0xf2ac('0x7'));var sox=require(_0xf2ac('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2ac('0x9'));var squel=require(_0xf2ac('0xa'));var crypto=require(_0xf2ac('0xb'));var jsforce=require(_0xf2ac('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf2ac('0xd'));var Papa=require(_0xf2ac('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf2ac('0xf'));var as=require(_0xf2ac('0x10'));var hardwareService=require(_0xf2ac('0x11'));var logger=require(_0xf2ac('0x12'))(_0xf2ac('0x13'));var utils=require(_0xf2ac('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf2ac('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58352c,_0x1ecf46){_0x1ecf46=_0x1ecf46||0xcc;return function(_0x4b0853){if(_0x4b0853){return _0x58352c[_0xf2ac('0x16')](_0x1ecf46);}return _0x58352c[_0xf2ac('0x17')](_0x1ecf46)[_0xf2ac('0x18')]();};}function respondWithResult(_0x4ad81d,_0x30b217){_0x30b217=_0x30b217||0xc8;return function(_0xab27bf){if(_0xab27bf){return _0x4ad81d[_0xf2ac('0x17')](_0x30b217)[_0xf2ac('0x19')](_0xab27bf);}};}function respondWithFilteredResult(_0x1f40eb,_0x1dfe23){return function(_0xae9e94){if(_0xae9e94){var _0x501c69=typeof _0x1dfe23[_0xf2ac('0x1a')]===_0xf2ac('0x1b')&&typeof _0x1dfe23['limit']===_0xf2ac('0x1b');var _0x134af6=_0xae9e94[_0xf2ac('0x1c')];var _0x54be33=_0x501c69?0x0:_0x1dfe23['offset'];var _0x876a90=_0x501c69?_0xae9e94[_0xf2ac('0x1c')]:_0x1dfe23[_0xf2ac('0x1a')]+_0x1dfe23[_0xf2ac('0x1d')];var _0x5f3354;if(_0x876a90>=_0x134af6){_0x876a90=_0x134af6;_0x5f3354=0xc8;}else{_0x5f3354=0xce;}_0x1f40eb[_0xf2ac('0x17')](_0x5f3354);return _0x1f40eb[_0xf2ac('0x1e')](_0xf2ac('0x1f'),_0x54be33+'-'+_0x876a90+'/'+_0x134af6)[_0xf2ac('0x19')](_0xae9e94);}return null;};}function patchUpdates(_0x5ddbe2){return function(_0x3753f6){try{jsonpatch[_0xf2ac('0x20')](_0x3753f6,_0x5ddbe2,!![]);}catch(_0x5c4257){return BPromise[_0xf2ac('0x21')](_0x5c4257);}return _0x3753f6[_0xf2ac('0x22')]();};}function saveUpdates(_0x62a5b6,_0x4022d5){return function(_0x4bd5b9){if(_0x4bd5b9){return _0x4bd5b9[_0xf2ac('0x23')](_0x62a5b6)[_0xf2ac('0x24')](function(_0x45b93b){return _0x45b93b;});}return null;};}function removeEntity(_0x5a8231,_0xe1daed){return function(_0x481689){if(_0x481689){return _0x481689[_0xf2ac('0x25')]()[_0xf2ac('0x24')](function(){_0x5a8231[_0xf2ac('0x17')](0xcc)[_0xf2ac('0x18')]();});}};}function handleEntityNotFound(_0x14be7a,_0x440c11){return function(_0x2cb3a4){if(!_0x2cb3a4){_0x14be7a[_0xf2ac('0x16')](0x194);}return _0x2cb3a4;};}function handleError(_0x68847,_0x16f2f6){_0x16f2f6=_0x16f2f6||0x1f4;return function(_0x4155ff){logger[_0xf2ac('0x26')](_0x4155ff[_0xf2ac('0x27')]);if(_0x4155ff[_0xf2ac('0x28')]){delete _0x4155ff[_0xf2ac('0x28')];}_0x68847['status'](_0x16f2f6)[_0xf2ac('0x29')](_0x4155ff);};}exports[_0xf2ac('0x2a')]=function(_0x36c676,_0x2b5e83){var _0x5ea4c5={},_0x351ca5={},_0x33e3a7={'count':0x0,'rows':[]};var _0x310f2b=_['map'](db['SalesforceConfiguration'][_0xf2ac('0x2b')],function(_0x323c96){return{'name':_0x323c96[_0xf2ac('0x2c')],'type':_0x323c96[_0xf2ac('0x2d')][_0xf2ac('0x2e')]};});_0x351ca5[_0xf2ac('0x2f')]=_[_0xf2ac('0x30')](_0x310f2b,_0xf2ac('0x28'));_0x351ca5[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x36c676[_0xf2ac('0x31')]);_0x351ca5[_0xf2ac('0x33')]=_[_0xf2ac('0x34')](_0x351ca5[_0xf2ac('0x2f')],_0x351ca5['query']);_0x5ea4c5[_0xf2ac('0x35')]=_['intersection'](_0x351ca5[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x36')]));_0x5ea4c5['attributes']=_0x5ea4c5[_0xf2ac('0x35')]['length']?_0x5ea4c5[_0xf2ac('0x35')]:_0x351ca5[_0xf2ac('0x2f')];if(!_0x36c676['query']['hasOwnProperty'](_0xf2ac('0x37'))){_0x5ea4c5[_0xf2ac('0x1d')]=qs['limit'](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x5ea4c5[_0xf2ac('0x1a')]=qs[_0xf2ac('0x1a')](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x1a')]);}_0x5ea4c5[_0xf2ac('0x38')]=qs[_0xf2ac('0x39')](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x39')]);_0x5ea4c5[_0xf2ac('0x3a')]=qs['filters'](_['pick'](_0x36c676['query'],_0x351ca5[_0xf2ac('0x33')]),_0x310f2b);if(_0x36c676[_0xf2ac('0x31')]['filter']){_0x5ea4c5['where']=_[_0xf2ac('0x3b')](_0x5ea4c5[_0xf2ac('0x3a')],{'$or':_['map'](_0x310f2b,function(_0x2fd25f){if(_0x2fd25f[_0xf2ac('0x2d')]!==_0xf2ac('0x3c')){var _0x43710b={};_0x43710b[_0x2fd25f[_0xf2ac('0x28')]]={'$like':'%'+_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0x43710b;}})});}_0x5ea4c5=_[_0xf2ac('0x3b')]({},_0x5ea4c5,_0x36c676[_0xf2ac('0x3e')]);var _0x5249db={'where':_0x5ea4c5[_0xf2ac('0x3a')]};return db['SalesforceConfiguration'][_0xf2ac('0x1c')](_0x5249db)['then'](function(_0x54475a){_0x33e3a7[_0xf2ac('0x1c')]=_0x54475a;if(_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x3f')]){_0x5ea4c5[_0xf2ac('0x40')]=[{'all':!![]}];}return db[_0xf2ac('0x41')][_0xf2ac('0x42')](_0x5ea4c5);})[_0xf2ac('0x24')](function(_0x58225a){_0x33e3a7[_0xf2ac('0x43')]=_0x58225a;return _0x33e3a7;})['then'](respondWithFilteredResult(_0x2b5e83,_0x5ea4c5))[_0xf2ac('0x44')](handleError(_0x2b5e83,null));};exports[_0xf2ac('0x45')]=function(_0x4e41cf,_0x26af7b){var _0x47af36={'raw':![],'where':{'id':_0x4e41cf['params']['id']}},_0x46c6c0={};_0x46c6c0[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x41')][_0xf2ac('0x2b')]);_0x46c6c0[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x4e41cf[_0xf2ac('0x31')]);_0x46c6c0[_0xf2ac('0x33')]=_['intersection'](_0x46c6c0[_0xf2ac('0x2f')],_0x46c6c0[_0xf2ac('0x31')]);_0x47af36[_0xf2ac('0x35')]=_[_0xf2ac('0x34')](_0x46c6c0[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0x4e41cf['query'][_0xf2ac('0x36')]));_0x47af36['attributes']=_0x47af36[_0xf2ac('0x35')][_0xf2ac('0x46')]?_0x47af36['attributes']:_0x46c6c0[_0xf2ac('0x2f')];if(_0x4e41cf['query'][_0xf2ac('0x3f')]){_0x47af36['include']=[{'all':!![]}];}_0x47af36=_['merge']({},_0x47af36,_0x4e41cf[_0xf2ac('0x3e')]);return db['SalesforceConfiguration'][_0xf2ac('0x47')](_0x47af36)['then'](handleEntityNotFound(_0x26af7b,null))[_0xf2ac('0x24')](respondWithResult(_0x26af7b,null))[_0xf2ac('0x44')](handleError(_0x26af7b,null));};exports[_0xf2ac('0x48')]=function(_0x3edba5,_0x2d3c63){return db[_0xf2ac('0x41')][_0xf2ac('0x48')](_0x3edba5[_0xf2ac('0x49')],{})[_0xf2ac('0x24')](respondWithResult(_0x2d3c63,0xc9))['catch'](handleError(_0x2d3c63,null));};exports[_0xf2ac('0x23')]=function(_0x4f2fb3,_0x44c1e0){if(_0x4f2fb3[_0xf2ac('0x49')]['id']){delete _0x4f2fb3[_0xf2ac('0x49')]['id'];}return db['SalesforceConfiguration']['find']({'where':{'id':_0x4f2fb3['params']['id']}})[_0xf2ac('0x24')](handleEntityNotFound(_0x44c1e0,null))[_0xf2ac('0x24')](saveUpdates(_0x4f2fb3['body'],null))[_0xf2ac('0x24')](respondWithResult(_0x44c1e0,null))[_0xf2ac('0x44')](handleError(_0x44c1e0,null));};exports[_0xf2ac('0x25')]=function(_0x5488b9,_0x2069af){return db[_0xf2ac('0x41')]['find']({'where':{'id':_0x5488b9[_0xf2ac('0x4a')]['id']}})[_0xf2ac('0x24')](handleEntityNotFound(_0x2069af,null))['then'](removeEntity(_0x2069af,null))[_0xf2ac('0x44')](handleError(_0x2069af,null));};exports['getFields']=function(_0x100f83,_0x22e3f7,_0x1b0788){var _0x4d36c4={};var _0x206721={};var _0x1dc91c;var _0xb28354;return db['SalesforceConfiguration'][_0xf2ac('0x4b')]({'where':{'id':_0x100f83['params']['id']}})['then'](handleEntityNotFound(_0x22e3f7,null))[_0xf2ac('0x24')](function(_0x167c32){if(_0x167c32){_0x1dc91c=_0x167c32;_0x206721[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x4c')][_0xf2ac('0x2b')]);_0x206721[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x100f83[_0xf2ac('0x31')]);_0x206721['filters']=_['intersection'](_0x206721[_0xf2ac('0x2f')],_0x206721[_0xf2ac('0x31')]);_0x4d36c4[_0xf2ac('0x35')]=_[_0xf2ac('0x34')](_0x206721[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x36')]));_0x4d36c4[_0xf2ac('0x35')]=_0x4d36c4[_0xf2ac('0x35')]['length']?_0x4d36c4[_0xf2ac('0x35')]:_0x206721['model'];_0x4d36c4[_0xf2ac('0x38')]=qs['sort'](_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x39')]);_0x4d36c4['where']=qs[_0xf2ac('0x33')](_[_0xf2ac('0x4d')](_0x100f83[_0xf2ac('0x31')],_0x206721['filters']));if(_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x3d')]){_0x4d36c4['where']=_[_0xf2ac('0x3b')](_0x4d36c4[_0xf2ac('0x3a')],{'$or':_[_0xf2ac('0x30')](_0x4d36c4['attributes'],function(_0x454900){var _0x2853b2={};_0x2853b2[_0x454900]={'$like':'%'+_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0x2853b2;})});}_0x4d36c4=_['merge']({},_0x4d36c4,_0x100f83[_0xf2ac('0x3e')]);return _0x1dc91c[_0xf2ac('0x4e')](_0x4d36c4);}})[_0xf2ac('0x24')](function(_0x115ce6){if(_0x115ce6){_0xb28354=_0x115ce6[_0xf2ac('0x46')];if(!_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x4f')](_0xf2ac('0x37'))){_0x4d36c4[_0xf2ac('0x1d')]=qs[_0xf2ac('0x1d')](_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x4d36c4['offset']=qs[_0xf2ac('0x1a')](_0x100f83[_0xf2ac('0x31')]['offset']);}return _0x1dc91c[_0xf2ac('0x4e')](_0x4d36c4);}})[_0xf2ac('0x24')](function(_0xadc204){if(_0xadc204){return _0xadc204?{'count':_0xb28354,'rows':_0xadc204}:null;}})[_0xf2ac('0x24')](respondWithResult(_0x22e3f7,null))['catch'](handleError(_0x22e3f7,null));};exports[_0xf2ac('0x50')]=function(_0x36c41c,_0x4cdaba,_0x496a20){var _0x4cd0bc={};var _0x3b44ac={};var _0x450096;var _0x513618;return db['SalesforceConfiguration'][_0xf2ac('0x4b')]({'where':{'id':_0x36c41c[_0xf2ac('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4cdaba,null))[_0xf2ac('0x24')](function(_0x21e841){if(_0x21e841){_0x450096=_0x21e841;_0x3b44ac[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x4c')]['rawAttributes']);_0x3b44ac[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x36c41c['query']);_0x3b44ac[_0xf2ac('0x33')]=_[_0xf2ac('0x34')](_0x3b44ac[_0xf2ac('0x2f')],_0x3b44ac[_0xf2ac('0x31')]);_0x4cd0bc[_0xf2ac('0x35')]=_[_0xf2ac('0x34')](_0x3b44ac[_0xf2ac('0x2f')],qs['fields'](_0x36c41c[_0xf2ac('0x31')]['fields']));_0x4cd0bc[_0xf2ac('0x35')]=_0x4cd0bc[_0xf2ac('0x35')][_0xf2ac('0x46')]?_0x4cd0bc[_0xf2ac('0x35')]:_0x3b44ac[_0xf2ac('0x2f')];_0x4cd0bc['order']=qs[_0xf2ac('0x39')](_0x36c41c['query'][_0xf2ac('0x39')]);_0x4cd0bc['where']=qs[_0xf2ac('0x33')](_[_0xf2ac('0x4d')](_0x36c41c[_0xf2ac('0x31')],_0x3b44ac[_0xf2ac('0x33')]));if(_0x36c41c['query'][_0xf2ac('0x3d')]){_0x4cd0bc[_0xf2ac('0x3a')]=_[_0xf2ac('0x3b')](_0x4cd0bc[_0xf2ac('0x3a')],{'$or':_[_0xf2ac('0x30')](_0x4cd0bc[_0xf2ac('0x35')],function(_0x1230f7){var _0x4e29bc={};_0x4e29bc[_0x1230f7]={'$like':'%'+_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0x4e29bc;})});}_0x4cd0bc=_['merge']({},_0x4cd0bc,_0x36c41c[_0xf2ac('0x3e')]);return _0x450096[_0xf2ac('0x50')](_0x4cd0bc);}})['then'](function(_0x21cd45){if(_0x21cd45){_0x513618=_0x21cd45[_0xf2ac('0x46')];if(!_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x4f')]('nolimit')){_0x4cd0bc[_0xf2ac('0x1d')]=qs[_0xf2ac('0x1d')](_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x4cd0bc[_0xf2ac('0x1a')]=qs[_0xf2ac('0x1a')](_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x1a')]);}return _0x450096[_0xf2ac('0x50')](_0x4cd0bc);}})['then'](function(_0x45acdc){if(_0x45acdc){return _0x45acdc?{'count':_0x513618,'rows':_0x45acdc}:null;}})['then'](respondWithResult(_0x4cdaba,null))[_0xf2ac('0x44')](handleError(_0x4cdaba,null));};exports[_0xf2ac('0x51')]=function(_0xf375ef,_0x28fba3,_0x6fd0ca){var _0x3e395f={};var _0x40f51c={};var _0xcc27e9;var _0x7a8f78;return db['SalesforceConfiguration'][_0xf2ac('0x4b')]({'where':{'id':_0xf375ef[_0xf2ac('0x4a')]['id']}})[_0xf2ac('0x24')](handleEntityNotFound(_0x28fba3,null))['then'](function(_0x570aea){if(_0x570aea){_0xcc27e9=_0x570aea;_0x40f51c[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x4c')][_0xf2ac('0x2b')]);_0x40f51c[_0xf2ac('0x31')]=_['keys'](_0xf375ef[_0xf2ac('0x31')]);_0x40f51c[_0xf2ac('0x33')]=_[_0xf2ac('0x34')](_0x40f51c[_0xf2ac('0x2f')],_0x40f51c[_0xf2ac('0x31')]);_0x3e395f['attributes']=_[_0xf2ac('0x34')](_0x40f51c[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x36')]));_0x3e395f['attributes']=_0x3e395f[_0xf2ac('0x35')]['length']?_0x3e395f[_0xf2ac('0x35')]:_0x40f51c[_0xf2ac('0x2f')];_0x3e395f[_0xf2ac('0x38')]=qs[_0xf2ac('0x39')](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x39')]);_0x3e395f[_0xf2ac('0x3a')]=qs[_0xf2ac('0x33')](_[_0xf2ac('0x4d')](_0xf375ef[_0xf2ac('0x31')],_0x40f51c[_0xf2ac('0x33')]));if(_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x3d')]){_0x3e395f[_0xf2ac('0x3a')]=_[_0xf2ac('0x3b')](_0x3e395f[_0xf2ac('0x3a')],{'$or':_['map'](_0x3e395f[_0xf2ac('0x35')],function(_0x536ee0){var _0xb1ece8={};_0xb1ece8[_0x536ee0]={'$like':'%'+_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0xb1ece8;})});}_0x3e395f=_[_0xf2ac('0x3b')]({},_0x3e395f,_0xf375ef[_0xf2ac('0x3e')]);return _0xcc27e9[_0xf2ac('0x51')](_0x3e395f);}})[_0xf2ac('0x24')](function(_0x4e4a63){if(_0x4e4a63){_0x7a8f78=_0x4e4a63[_0xf2ac('0x46')];if(!_0xf375ef['query'][_0xf2ac('0x4f')](_0xf2ac('0x37'))){_0x3e395f[_0xf2ac('0x1d')]=qs['limit'](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x3e395f[_0xf2ac('0x1a')]=qs[_0xf2ac('0x1a')](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x1a')]);}return _0xcc27e9[_0xf2ac('0x51')](_0x3e395f);}})[_0xf2ac('0x24')](function(_0x39e1c3){if(_0x39e1c3){return _0x39e1c3?{'count':_0x7a8f78,'rows':_0x39e1c3}:null;}})[_0xf2ac('0x24')](respondWithResult(_0x28fba3,null))[_0xf2ac('0x44')](handleError(_0x28fba3,null));};
\ No newline at end of file
+var _0x772d=['sort','pick','filter','where','merge','options','include','findAll','rows','catch','show','params','includeAll','create','body','update','getFields','findOne','SalesforceField','hasOwnProperty','getSubjects','getDescriptions','rimraf','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','undefined','limit','count','set','apply','reject','save','destroy','then','error','stack','name','send','map','SalesforceConfiguration','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order'];(function(_0x164af1,_0x3cf772){var _0x5d81a2=function(_0xa57547){while(--_0xa57547){_0x164af1['push'](_0x164af1['shift']());}};_0x5d81a2(++_0x3cf772);}(_0x772d,0x197));var _0xd772=function(_0x24c3c1,_0x4434af){_0x24c3c1=_0x24c3c1-0x0;var _0x431f92=_0x772d[_0x24c3c1];return _0x431f92;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd772('0x0'));var zipdir=require(_0xd772('0x1'));var jsonpatch=require(_0xd772('0x2'));var rp=require(_0xd772('0x3'));var moment=require(_0xd772('0x4'));var BPromise=require(_0xd772('0x5'));var Mustache=require(_0xd772('0x6'));var util=require(_0xd772('0x7'));var path=require(_0xd772('0x8'));var sox=require(_0xd772('0x9'));var csv=require(_0xd772('0xa'));var ejs=require(_0xd772('0xb'));var fs=require('fs');var fs_extra=require(_0xd772('0xc'));var _=require(_0xd772('0xd'));var squel=require('squel');var crypto=require(_0xd772('0xe'));var jsforce=require(_0xd772('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xd772('0xa'));var querystring=require('querystring');var Papa=require(_0xd772('0x10'));var Redis=require(_0xd772('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xd772('0x12'));var as=require(_0xd772('0x13'));var hardwareService=require(_0xd772('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd772('0x15'));var config=require(_0xd772('0x16'));var licenseUtil=require(_0xd772('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58cbc7,_0x8a619d){_0x8a619d=_0x8a619d||0xcc;return function(_0x4b257c){if(_0x4b257c){return _0x58cbc7[_0xd772('0x18')](_0x8a619d);}return _0x58cbc7[_0xd772('0x19')](_0x8a619d)[_0xd772('0x1a')]();};}function respondWithResult(_0x1ac591,_0x3c9697){_0x3c9697=_0x3c9697||0xc8;return function(_0x55b3ff){if(_0x55b3ff){return _0x1ac591[_0xd772('0x19')](_0x3c9697)['json'](_0x55b3ff);}};}function respondWithFilteredResult(_0x118e3f,_0x122386){return function(_0x494c27){if(_0x494c27){var _0x3fc84c=typeof _0x122386[_0xd772('0x1b')]===_0xd772('0x1c')&&typeof _0x122386[_0xd772('0x1d')]===_0xd772('0x1c');var _0x43bb10=_0x494c27[_0xd772('0x1e')];var _0x3838c7=_0x3fc84c?0x0:_0x122386[_0xd772('0x1b')];var _0x55461c=_0x3fc84c?_0x494c27[_0xd772('0x1e')]:_0x122386['offset']+_0x122386[_0xd772('0x1d')];var _0x506353;if(_0x55461c>=_0x43bb10){_0x55461c=_0x43bb10;_0x506353=0xc8;}else{_0x506353=0xce;}_0x118e3f['status'](_0x506353);return _0x118e3f[_0xd772('0x1f')]('Content-Range',_0x3838c7+'-'+_0x55461c+'/'+_0x43bb10)['json'](_0x494c27);}return null;};}function patchUpdates(_0x1609e3){return function(_0x17cd64){try{jsonpatch[_0xd772('0x20')](_0x17cd64,_0x1609e3,!![]);}catch(_0x237cf7){return BPromise[_0xd772('0x21')](_0x237cf7);}return _0x17cd64[_0xd772('0x22')]();};}function saveUpdates(_0x375b8e,_0x4bf703){return function(_0x2f25cd){if(_0x2f25cd){return _0x2f25cd['update'](_0x375b8e)['then'](function(_0x12a566){return _0x12a566;});}return null;};}function removeEntity(_0x5613df,_0x2052ab){return function(_0x32002b){if(_0x32002b){return _0x32002b[_0xd772('0x23')]()[_0xd772('0x24')](function(){_0x5613df[_0xd772('0x19')](0xcc)[_0xd772('0x1a')]();});}};}function handleEntityNotFound(_0x3d1fba,_0x4ccc75){return function(_0x3c535c){if(!_0x3c535c){_0x3d1fba[_0xd772('0x18')](0x194);}return _0x3c535c;};}function handleError(_0x588e55,_0x1b866a){_0x1b866a=_0x1b866a||0x1f4;return function(_0x6da654){logger[_0xd772('0x25')](_0x6da654[_0xd772('0x26')]);if(_0x6da654['name']){delete _0x6da654[_0xd772('0x27')];}_0x588e55['status'](_0x1b866a)[_0xd772('0x28')](_0x6da654);};}exports['index']=function(_0x113acd,_0x22109d){var _0x35445f={},_0x47bd9e={},_0x783b07={'count':0x0,'rows':[]};var _0xbcd33b=_[_0xd772('0x29')](db[_0xd772('0x2a')][_0xd772('0x2b')],function(_0x22e2ef){return{'name':_0x22e2ef['fieldName'],'type':_0x22e2ef['type'][_0xd772('0x2c')]};});_0x47bd9e[_0xd772('0x2d')]=_[_0xd772('0x29')](_0xbcd33b,'name');_0x47bd9e[_0xd772('0x2e')]=_[_0xd772('0x2f')](_0x113acd[_0xd772('0x2e')]);_0x47bd9e[_0xd772('0x30')]=_[_0xd772('0x31')](_0x47bd9e['model'],_0x47bd9e[_0xd772('0x2e')]);_0x35445f[_0xd772('0x32')]=_[_0xd772('0x31')](_0x47bd9e[_0xd772('0x2d')],qs[_0xd772('0x33')](_0x113acd['query'][_0xd772('0x33')]));_0x35445f['attributes']=_0x35445f['attributes'][_0xd772('0x34')]?_0x35445f[_0xd772('0x32')]:_0x47bd9e['model'];if(!_0x113acd[_0xd772('0x2e')]['hasOwnProperty'](_0xd772('0x35'))){_0x35445f[_0xd772('0x1d')]=qs[_0xd772('0x1d')](_0x113acd[_0xd772('0x2e')][_0xd772('0x1d')]);_0x35445f[_0xd772('0x1b')]=qs[_0xd772('0x1b')](_0x113acd[_0xd772('0x2e')][_0xd772('0x1b')]);}_0x35445f[_0xd772('0x36')]=qs[_0xd772('0x37')](_0x113acd[_0xd772('0x2e')]['sort']);_0x35445f['where']=qs['filters'](_[_0xd772('0x38')](_0x113acd[_0xd772('0x2e')],_0x47bd9e[_0xd772('0x30')]),_0xbcd33b);if(_0x113acd[_0xd772('0x2e')][_0xd772('0x39')]){_0x35445f[_0xd772('0x3a')]=_[_0xd772('0x3b')](_0x35445f['where'],{'$or':_[_0xd772('0x29')](_0xbcd33b,function(_0x2b3f36){if(_0x2b3f36['type']!=='VIRTUAL'){var _0x1855c1={};_0x1855c1[_0x2b3f36[_0xd772('0x27')]]={'$like':'%'+_0x113acd[_0xd772('0x2e')]['filter']+'%'};return _0x1855c1;}})});}_0x35445f=_['merge']({},_0x35445f,_0x113acd[_0xd772('0x3c')]);var _0x5cebee={'where':_0x35445f[_0xd772('0x3a')]};return db[_0xd772('0x2a')][_0xd772('0x1e')](_0x5cebee)[_0xd772('0x24')](function(_0x498d8b){_0x783b07[_0xd772('0x1e')]=_0x498d8b;if(_0x113acd[_0xd772('0x2e')]['includeAll']){_0x35445f[_0xd772('0x3d')]=[{'all':!![]}];}return db[_0xd772('0x2a')][_0xd772('0x3e')](_0x35445f);})[_0xd772('0x24')](function(_0x19054a){_0x783b07[_0xd772('0x3f')]=_0x19054a;return _0x783b07;})['then'](respondWithFilteredResult(_0x22109d,_0x35445f))[_0xd772('0x40')](handleError(_0x22109d,null));};exports[_0xd772('0x41')]=function(_0x15354d,_0x331a26){var _0x14f6e2={'raw':![],'where':{'id':_0x15354d[_0xd772('0x42')]['id']}},_0x10b6a6={};_0x10b6a6[_0xd772('0x2d')]=_['keys'](db[_0xd772('0x2a')][_0xd772('0x2b')]);_0x10b6a6[_0xd772('0x2e')]=_[_0xd772('0x2f')](_0x15354d[_0xd772('0x2e')]);_0x10b6a6[_0xd772('0x30')]=_[_0xd772('0x31')](_0x10b6a6[_0xd772('0x2d')],_0x10b6a6['query']);_0x14f6e2[_0xd772('0x32')]=_[_0xd772('0x31')](_0x10b6a6[_0xd772('0x2d')],qs[_0xd772('0x33')](_0x15354d[_0xd772('0x2e')][_0xd772('0x33')]));_0x14f6e2['attributes']=_0x14f6e2[_0xd772('0x32')][_0xd772('0x34')]?_0x14f6e2[_0xd772('0x32')]:_0x10b6a6[_0xd772('0x2d')];if(_0x15354d['query'][_0xd772('0x43')]){_0x14f6e2[_0xd772('0x3d')]=[{'all':!![]}];}_0x14f6e2=_[_0xd772('0x3b')]({},_0x14f6e2,_0x15354d['options']);return db[_0xd772('0x2a')]['find'](_0x14f6e2)[_0xd772('0x24')](handleEntityNotFound(_0x331a26,null))[_0xd772('0x24')](respondWithResult(_0x331a26,null))[_0xd772('0x40')](handleError(_0x331a26,null));};exports[_0xd772('0x44')]=function(_0x218021,_0x3ae553){return db[_0xd772('0x2a')][_0xd772('0x44')](_0x218021[_0xd772('0x45')],{})[_0xd772('0x24')](respondWithResult(_0x3ae553,0xc9))[_0xd772('0x40')](handleError(_0x3ae553,null));};exports[_0xd772('0x46')]=function(_0x576e89,_0x500535){if(_0x576e89[_0xd772('0x45')]['id']){delete _0x576e89[_0xd772('0x45')]['id'];}return db[_0xd772('0x2a')]['find']({'where':{'id':_0x576e89[_0xd772('0x42')]['id']}})['then'](handleEntityNotFound(_0x500535,null))[_0xd772('0x24')](saveUpdates(_0x576e89[_0xd772('0x45')],null))[_0xd772('0x24')](respondWithResult(_0x500535,null))['catch'](handleError(_0x500535,null));};exports[_0xd772('0x23')]=function(_0x5458d3,_0x32df00){return db['SalesforceConfiguration']['find']({'where':{'id':_0x5458d3[_0xd772('0x42')]['id']}})[_0xd772('0x24')](handleEntityNotFound(_0x32df00,null))[_0xd772('0x24')](removeEntity(_0x32df00,null))[_0xd772('0x40')](handleError(_0x32df00,null));};exports[_0xd772('0x47')]=function(_0x4fb2f9,_0x1711fb,_0x5b26a5){var _0xf5b669={};var _0x3cfeb8={};var _0x1570ee;var _0x571d5c;return db[_0xd772('0x2a')][_0xd772('0x48')]({'where':{'id':_0x4fb2f9['params']['id']}})[_0xd772('0x24')](handleEntityNotFound(_0x1711fb,null))[_0xd772('0x24')](function(_0x1ec415){if(_0x1ec415){_0x1570ee=_0x1ec415;_0x3cfeb8['model']=_[_0xd772('0x2f')](db[_0xd772('0x49')][_0xd772('0x2b')]);_0x3cfeb8[_0xd772('0x2e')]=_[_0xd772('0x2f')](_0x4fb2f9[_0xd772('0x2e')]);_0x3cfeb8[_0xd772('0x30')]=_['intersection'](_0x3cfeb8[_0xd772('0x2d')],_0x3cfeb8[_0xd772('0x2e')]);_0xf5b669[_0xd772('0x32')]=_[_0xd772('0x31')](_0x3cfeb8[_0xd772('0x2d')],qs['fields'](_0x4fb2f9[_0xd772('0x2e')]['fields']));_0xf5b669[_0xd772('0x32')]=_0xf5b669[_0xd772('0x32')][_0xd772('0x34')]?_0xf5b669[_0xd772('0x32')]:_0x3cfeb8[_0xd772('0x2d')];_0xf5b669['order']=qs[_0xd772('0x37')](_0x4fb2f9[_0xd772('0x2e')][_0xd772('0x37')]);_0xf5b669[_0xd772('0x3a')]=qs['filters'](_['pick'](_0x4fb2f9['query'],_0x3cfeb8['filters']));if(_0x4fb2f9['query']['filter']){_0xf5b669[_0xd772('0x3a')]=_[_0xd772('0x3b')](_0xf5b669[_0xd772('0x3a')],{'$or':_[_0xd772('0x29')](_0xf5b669[_0xd772('0x32')],function(_0x36bd60){var _0x27a79e={};_0x27a79e[_0x36bd60]={'$like':'%'+_0x4fb2f9[_0xd772('0x2e')][_0xd772('0x39')]+'%'};return _0x27a79e;})});}_0xf5b669=_['merge']({},_0xf5b669,_0x4fb2f9[_0xd772('0x3c')]);return _0x1570ee[_0xd772('0x47')](_0xf5b669);}})[_0xd772('0x24')](function(_0x37c9b7){if(_0x37c9b7){_0x571d5c=_0x37c9b7[_0xd772('0x34')];if(!_0x4fb2f9[_0xd772('0x2e')][_0xd772('0x4a')]('nolimit')){_0xf5b669[_0xd772('0x1d')]=qs[_0xd772('0x1d')](_0x4fb2f9[_0xd772('0x2e')]['limit']);_0xf5b669[_0xd772('0x1b')]=qs['offset'](_0x4fb2f9[_0xd772('0x2e')]['offset']);}return _0x1570ee[_0xd772('0x47')](_0xf5b669);}})[_0xd772('0x24')](function(_0x4e18c2){if(_0x4e18c2){return _0x4e18c2?{'count':_0x571d5c,'rows':_0x4e18c2}:null;}})[_0xd772('0x24')](respondWithResult(_0x1711fb,null))[_0xd772('0x40')](handleError(_0x1711fb,null));};exports['getSubjects']=function(_0x56c4bb,_0x44ce7e,_0x197788){var _0x1ac9d4={};var _0x750beb={};var _0x13a39e;var _0x35795a;return db['SalesforceConfiguration'][_0xd772('0x48')]({'where':{'id':_0x56c4bb[_0xd772('0x42')]['id']}})[_0xd772('0x24')](handleEntityNotFound(_0x44ce7e,null))['then'](function(_0x4e1b78){if(_0x4e1b78){_0x13a39e=_0x4e1b78;_0x750beb['model']=_[_0xd772('0x2f')](db[_0xd772('0x49')][_0xd772('0x2b')]);_0x750beb[_0xd772('0x2e')]=_[_0xd772('0x2f')](_0x56c4bb[_0xd772('0x2e')]);_0x750beb['filters']=_['intersection'](_0x750beb[_0xd772('0x2d')],_0x750beb[_0xd772('0x2e')]);_0x1ac9d4[_0xd772('0x32')]=_[_0xd772('0x31')](_0x750beb[_0xd772('0x2d')],qs[_0xd772('0x33')](_0x56c4bb[_0xd772('0x2e')]['fields']));_0x1ac9d4[_0xd772('0x32')]=_0x1ac9d4['attributes'][_0xd772('0x34')]?_0x1ac9d4[_0xd772('0x32')]:_0x750beb[_0xd772('0x2d')];_0x1ac9d4[_0xd772('0x36')]=qs[_0xd772('0x37')](_0x56c4bb[_0xd772('0x2e')][_0xd772('0x37')]);_0x1ac9d4[_0xd772('0x3a')]=qs[_0xd772('0x30')](_[_0xd772('0x38')](_0x56c4bb[_0xd772('0x2e')],_0x750beb[_0xd772('0x30')]));if(_0x56c4bb[_0xd772('0x2e')]['filter']){_0x1ac9d4[_0xd772('0x3a')]=_[_0xd772('0x3b')](_0x1ac9d4[_0xd772('0x3a')],{'$or':_['map'](_0x1ac9d4[_0xd772('0x32')],function(_0x375003){var _0x15489d={};_0x15489d[_0x375003]={'$like':'%'+_0x56c4bb[_0xd772('0x2e')][_0xd772('0x39')]+'%'};return _0x15489d;})});}_0x1ac9d4=_[_0xd772('0x3b')]({},_0x1ac9d4,_0x56c4bb[_0xd772('0x3c')]);return _0x13a39e[_0xd772('0x4b')](_0x1ac9d4);}})['then'](function(_0x42f12f){if(_0x42f12f){_0x35795a=_0x42f12f[_0xd772('0x34')];if(!_0x56c4bb[_0xd772('0x2e')][_0xd772('0x4a')](_0xd772('0x35'))){_0x1ac9d4['limit']=qs[_0xd772('0x1d')](_0x56c4bb[_0xd772('0x2e')]['limit']);_0x1ac9d4['offset']=qs[_0xd772('0x1b')](_0x56c4bb[_0xd772('0x2e')][_0xd772('0x1b')]);}return _0x13a39e['getSubjects'](_0x1ac9d4);}})[_0xd772('0x24')](function(_0x11c7d7){if(_0x11c7d7){return _0x11c7d7?{'count':_0x35795a,'rows':_0x11c7d7}:null;}})[_0xd772('0x24')](respondWithResult(_0x44ce7e,null))[_0xd772('0x40')](handleError(_0x44ce7e,null));};exports[_0xd772('0x4c')]=function(_0x4ad7c8,_0x42ae0f,_0x55fb04){var _0x2aecf1={};var _0x29a06c={};var _0x12217e;var _0x87ba86;return db[_0xd772('0x2a')]['findOne']({'where':{'id':_0x4ad7c8[_0xd772('0x42')]['id']}})['then'](handleEntityNotFound(_0x42ae0f,null))[_0xd772('0x24')](function(_0x365f9c){if(_0x365f9c){_0x12217e=_0x365f9c;_0x29a06c[_0xd772('0x2d')]=_['keys'](db['SalesforceField']['rawAttributes']);_0x29a06c[_0xd772('0x2e')]=_[_0xd772('0x2f')](_0x4ad7c8[_0xd772('0x2e')]);_0x29a06c['filters']=_[_0xd772('0x31')](_0x29a06c[_0xd772('0x2d')],_0x29a06c[_0xd772('0x2e')]);_0x2aecf1[_0xd772('0x32')]=_['intersection'](_0x29a06c[_0xd772('0x2d')],qs['fields'](_0x4ad7c8[_0xd772('0x2e')]['fields']));_0x2aecf1[_0xd772('0x32')]=_0x2aecf1['attributes'][_0xd772('0x34')]?_0x2aecf1['attributes']:_0x29a06c[_0xd772('0x2d')];_0x2aecf1['order']=qs[_0xd772('0x37')](_0x4ad7c8['query'][_0xd772('0x37')]);_0x2aecf1[_0xd772('0x3a')]=qs[_0xd772('0x30')](_[_0xd772('0x38')](_0x4ad7c8['query'],_0x29a06c[_0xd772('0x30')]));if(_0x4ad7c8[_0xd772('0x2e')][_0xd772('0x39')]){_0x2aecf1[_0xd772('0x3a')]=_[_0xd772('0x3b')](_0x2aecf1['where'],{'$or':_[_0xd772('0x29')](_0x2aecf1[_0xd772('0x32')],function(_0x5b6e6c){var _0x41edc1={};_0x41edc1[_0x5b6e6c]={'$like':'%'+_0x4ad7c8[_0xd772('0x2e')]['filter']+'%'};return _0x41edc1;})});}_0x2aecf1=_[_0xd772('0x3b')]({},_0x2aecf1,_0x4ad7c8[_0xd772('0x3c')]);return _0x12217e[_0xd772('0x4c')](_0x2aecf1);}})[_0xd772('0x24')](function(_0x383967){if(_0x383967){_0x87ba86=_0x383967[_0xd772('0x34')];if(!_0x4ad7c8[_0xd772('0x2e')][_0xd772('0x4a')]('nolimit')){_0x2aecf1[_0xd772('0x1d')]=qs[_0xd772('0x1d')](_0x4ad7c8[_0xd772('0x2e')][_0xd772('0x1d')]);_0x2aecf1['offset']=qs[_0xd772('0x1b')](_0x4ad7c8[_0xd772('0x2e')][_0xd772('0x1b')]);}return _0x12217e[_0xd772('0x4c')](_0x2aecf1);}})[_0xd772('0x24')](function(_0x39a377){if(_0x39a377){return _0x39a377?{'count':_0x87ba86,'rows':_0x39a377}:null;}})[_0xd772('0x24')](respondWithResult(_0x42ae0f,null))[_0xd772('0x40')](handleError(_0x42ae0f,null));};
\ No newline at end of file
index a10c640..7dc0360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x436a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SalesforceConfiguration','int_salesforce_configurations','../../config/logger'];(function(_0x287406,_0x40c4b2){var _0x2f0b18=function(_0x392cc5){while(--_0x392cc5){_0x287406['push'](_0x287406['shift']());}};_0x2f0b18(++_0x40c4b2);}(_0x436a,0xf1));var _0xa436=function(_0x2eab12,_0xbc1637){_0x2eab12=_0x2eab12-0x0;var _0x348fb=_0x436a[_0x2eab12];return _0x348fb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa436('0x0'))(_0xa436('0x1'));var moment=require(_0xa436('0x2'));var BPromise=require(_0xa436('0x3'));var rp=require(_0xa436('0x4'));var fs=require('fs');var path=require(_0xa436('0x5'));var rimraf=require(_0xa436('0x6'));var config=require(_0xa436('0x7'));var attributes=require('./intSalesforceConfiguration.attributes');module['exports']=function(_0x3677d0,_0x196c27){return _0x3677d0[_0xa436('0x8')](_0xa436('0x9'),attributes,{'tableName':_0xa436('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd5b8=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','../../config/logger','api','moment','request-promise'];(function(_0x1be351,_0x4b2b07){var _0x18aff4=function(_0x414354){while(--_0x414354){_0x1be351['push'](_0x1be351['shift']());}};_0x18aff4(++_0x4b2b07);}(_0xd5b8,0x8b));var _0x8d5b=function(_0x340224,_0x247c64){_0x340224=_0x340224-0x0;var _0x54e01d=_0xd5b8[_0x340224];return _0x54e01d;};'use strict';var _=require(_0x8d5b('0x0'));var util=require('util');var logger=require(_0x8d5b('0x1'))(_0x8d5b('0x2'));var moment=require(_0x8d5b('0x3'));var BPromise=require('bluebird');var rp=require(_0x8d5b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8d5b('0x5'));var config=require(_0x8d5b('0x6'));var attributes=require(_0x8d5b('0x7'));module[_0x8d5b('0x8')]=function(_0x3bf957,_0x560ac7){return _0x3bf957[_0x8d5b('0x9')](_0x8d5b('0xa'),attributes,{'tableName':_0x8d5b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 201ca23..f356a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa0=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x487a22,_0x3ca9f3){var _0x717f5f=function(_0x3c3853){while(--_0x3c3853){_0x487a22['push'](_0x487a22['shift']());}};_0x717f5f(++_0x3ca9f3);}(_0x0aa0,0xb3));var _0x00aa=function(_0x201ea7,_0x4d6f28){_0x201ea7=_0x201ea7-0x0;var _0x1787ba=_0x0aa0[_0x201ea7];return _0x1787ba;};'use strict';var _=require(_0x00aa('0x0'));var util=require(_0x00aa('0x1'));var moment=require(_0x00aa('0x2'));var BPromise=require(_0x00aa('0x3'));var rs=require(_0x00aa('0x4'));var fs=require('fs');var Redis=require(_0x00aa('0x5'));var db=require(_0x00aa('0x6'))['db'];var utils=require(_0x00aa('0x7'));var logger=require(_0x00aa('0x8'))(_0x00aa('0x9'));var config=require(_0x00aa('0xa'));var jayson=require(_0x00aa('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4fb867,_0xfae3ee,_0x53e57c){return new BPromise(function(_0x4cba3f,_0x1c6efe){return client['request'](_0x4fb867,_0x53e57c)[_0x00aa('0xc')](function(_0x5046da){logger[_0x00aa('0xd')](_0x00aa('0xe'),_0xfae3ee,_0x00aa('0xf'));logger['debug'](_0x00aa('0x10'),_0xfae3ee,_0x00aa('0xf'),JSON[_0x00aa('0x11')](_0x5046da));if(_0x5046da[_0x00aa('0x12')]){if(_0x5046da[_0x00aa('0x12')][_0x00aa('0x13')]===0x1f4){logger[_0x00aa('0x12')](_0x00aa('0xe'),_0xfae3ee,_0x5046da[_0x00aa('0x12')][_0x00aa('0x14')]);return _0x1c6efe(_0x5046da['error'][_0x00aa('0x14')]);}logger[_0x00aa('0x12')](_0x00aa('0xe'),_0xfae3ee,_0x5046da[_0x00aa('0x12')]['message']);return _0x4cba3f(_0x5046da[_0x00aa('0x12')]['message']);}else{logger[_0x00aa('0xd')](_0x00aa('0xe'),_0xfae3ee,_0x00aa('0xf'));_0x4cba3f(_0x5046da[_0x00aa('0x15')][_0x00aa('0x14')]);}})[_0x00aa('0x16')](function(_0x171709){logger[_0x00aa('0x12')]('SalesforceConfiguration,\x20%s,\x20%s',_0xfae3ee,_0x171709);_0x1c6efe(_0x171709);});});}
\ No newline at end of file
+var _0x6a72=['stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x59adc3,_0x13f103){var _0x559e59=function(_0x57646c){while(--_0x57646c){_0x59adc3['push'](_0x59adc3['shift']());}};_0x559e59(++_0x13f103);}(_0x6a72,0xf5));var _0x26a7=function(_0x4da7da,_0x17974b){_0x4da7da=_0x4da7da-0x0;var _0x30485d=_0x6a72[_0x4da7da];return _0x30485d;};'use strict';var _=require(_0x26a7('0x0'));var util=require(_0x26a7('0x1'));var moment=require(_0x26a7('0x2'));var BPromise=require(_0x26a7('0x3'));var rs=require(_0x26a7('0x4'));var fs=require('fs');var Redis=require(_0x26a7('0x5'));var db=require(_0x26a7('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x26a7('0x7'))(_0x26a7('0x8'));var config=require(_0x26a7('0x9'));var jayson=require(_0x26a7('0xa'));var client=jayson[_0x26a7('0xb')][_0x26a7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x18491f,_0x20c552,_0x35bfcd){return new BPromise(function(_0x40ca30,_0x1149c7){return client[_0x26a7('0xd')](_0x18491f,_0x35bfcd)[_0x26a7('0xe')](function(_0x5f3e88){logger[_0x26a7('0xf')](_0x26a7('0x10'),_0x20c552,'request\x20sent');logger['debug'](_0x26a7('0x11'),_0x20c552,_0x26a7('0x12'),JSON[_0x26a7('0x13')](_0x5f3e88));if(_0x5f3e88[_0x26a7('0x14')]){if(_0x5f3e88[_0x26a7('0x14')]['code']===0x1f4){logger[_0x26a7('0x14')]('SalesforceConfiguration,\x20%s,\x20%s',_0x20c552,_0x5f3e88[_0x26a7('0x14')][_0x26a7('0x15')]);return _0x1149c7(_0x5f3e88[_0x26a7('0x14')][_0x26a7('0x15')]);}logger[_0x26a7('0x14')](_0x26a7('0x10'),_0x20c552,_0x5f3e88['error'][_0x26a7('0x15')]);return _0x40ca30(_0x5f3e88[_0x26a7('0x14')][_0x26a7('0x15')]);}else{logger['info'](_0x26a7('0x10'),_0x20c552,'request\x20sent');_0x40ca30(_0x5f3e88[_0x26a7('0x16')]['message']);}})[_0x26a7('0x17')](function(_0x4f935e){logger['error'](_0x26a7('0x10'),_0x20c552,_0x4f935e);_0x1149c7(_0x4f935e);});});}
\ No newline at end of file
index d535f8c..9b51ed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e4=['/:id','show','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x30044c,_0x270f89){var _0xcedea2=function(_0x4b7e0a){while(--_0x4b7e0a){_0x30044c['push'](_0x30044c['shift']());}};_0xcedea2(++_0x270f89);}(_0x10e4,0x68));var _0x410e=function(_0x123541,_0x7fc0c0){_0x123541=_0x123541-0x0;var _0x1d5c21=_0x10e4[_0x123541];return _0x1d5c21;};'use strict';var multer=require(_0x410e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x410e('0x1'));var express=require(_0x410e('0x2'));var router=express[_0x410e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x410e('0x4'));var interaction=require(_0x410e('0x5'));var config=require(_0x410e('0x6'));var controller=require('./intSalesforceField.controller');router[_0x410e('0x7')]('/',auth[_0x410e('0x8')](),controller[_0x410e('0x9')]);router[_0x410e('0x7')](_0x410e('0xa'),auth[_0x410e('0x8')](),controller[_0x410e('0xb')]);router[_0x410e('0xc')]('/',auth[_0x410e('0x8')](),controller[_0x410e('0xd')]);router[_0x410e('0xe')](_0x410e('0xa'),auth[_0x410e('0x8')](),controller[_0x410e('0xf')]);router[_0x410e('0x10')](_0x410e('0xa'),auth[_0x410e('0x8')](),controller[_0x410e('0x11')]);module[_0x410e('0x12')]=router;
\ No newline at end of file
+var _0x76ee=['create','update','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x390307,_0x2ae2ca){var _0x2c0596=function(_0x4cad6c){while(--_0x4cad6c){_0x390307['push'](_0x390307['shift']());}};_0x2c0596(++_0x2ae2ca);}(_0x76ee,0x82));var _0xe76e=function(_0x46403d,_0x2c7e9f){_0x46403d=_0x46403d-0x0;var _0x46a3d6=_0x76ee[_0x46403d];return _0x46a3d6;};'use strict';var multer=require(_0xe76e('0x0'));var util=require(_0xe76e('0x1'));var path=require('path');var timeout=require(_0xe76e('0x2'));var express=require('express');var router=express[_0xe76e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe76e('0x4'));var interaction=require(_0xe76e('0x5'));var config=require(_0xe76e('0x6'));var controller=require(_0xe76e('0x7'));router[_0xe76e('0x8')]('/',auth[_0xe76e('0x9')](),controller[_0xe76e('0xa')]);router[_0xe76e('0x8')](_0xe76e('0xb'),auth[_0xe76e('0x9')](),controller[_0xe76e('0xc')]);router[_0xe76e('0xd')]('/',auth[_0xe76e('0x9')](),controller[_0xe76e('0xe')]);router['put'](_0xe76e('0xb'),auth[_0xe76e('0x9')](),controller[_0xe76e('0xf')]);router['delete']('/:id',auth[_0xe76e('0x9')](),controller[_0xe76e('0x10')]);module[_0xe76e('0x11')]=router;
\ No newline at end of file
index b8ce18d..a2f0bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeab7=['STRING','sequelize','exports','ENUM','variable','customVariable','picklist','string'];(function(_0x1178a3,_0xf7b8a8){var _0x4b8fd8=function(_0x417485){while(--_0x417485){_0x1178a3['push'](_0x1178a3['shift']());}};_0x4b8fd8(++_0xf7b8a8);}(_0xeab7,0x149));var _0x7eab=function(_0x45a039,_0x5091dd){_0x45a039=_0x45a039-0x0;var _0x22ba40=_0xeab7[_0x45a039];return _0x22ba40;};'use strict';var Sequelize=require(_0x7eab('0x0'));module[_0x7eab('0x1')]={'type':{'type':Sequelize[_0x7eab('0x2')]('string',_0x7eab('0x3'),_0x7eab('0x4'),'keyValue',_0x7eab('0x5')),'defaultValue':_0x7eab('0x6')},'content':{'type':Sequelize[_0x7eab('0x7')]},'key':{'type':Sequelize[_0x7eab('0x7')]},'keyType':{'type':Sequelize[_0x7eab('0x2')](_0x7eab('0x6'),_0x7eab('0x3'),_0x7eab('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7eab('0x7')]},'variableName':{'type':Sequelize[_0x7eab('0x7')]}};
\ No newline at end of file
+var _0xc26c=['string','variable','customVariable','keyValue','picklist','STRING','sequelize','ENUM'];(function(_0x1d029d,_0x12c34f){var _0x1b6df4=function(_0xa8d1be){while(--_0xa8d1be){_0x1d029d['push'](_0x1d029d['shift']());}};_0x1b6df4(++_0x12c34f);}(_0xc26c,0x1d6));var _0xcc26=function(_0x54905a,_0x5d0408){_0x54905a=_0x54905a-0x0;var _0x531bbd=_0xc26c[_0x54905a];return _0x531bbd;};'use strict';var Sequelize=require(_0xcc26('0x0'));module['exports']={'type':{'type':Sequelize[_0xcc26('0x1')](_0xcc26('0x2'),_0xcc26('0x3'),_0xcc26('0x4'),_0xcc26('0x5'),_0xcc26('0x6')),'defaultValue':_0xcc26('0x2')},'content':{'type':Sequelize[_0xcc26('0x7')]},'key':{'type':Sequelize[_0xcc26('0x7')]},'keyType':{'type':Sequelize[_0xcc26('0x1')]('string',_0xcc26('0x3'),_0xcc26('0x4'))},'keyContent':{'type':Sequelize[_0xcc26('0x7')]},'idField':{'type':Sequelize[_0xcc26('0x7')]},'variableName':{'type':Sequelize[_0xcc26('0x7')]}};
\ No newline at end of file
index e0681e4..76a6ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90de=['findAll','rows','keys','fields','includeAll','find','create','body','catch','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','name','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','include'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x90de,0x94));var _0xe90d=function(_0x9c8c83,_0x16ebdd){_0x9c8c83=_0x9c8c83-0x0;var _0x4636ac=_0x90de[_0x9c8c83];return _0x4636ac;};'use strict';var emlformat=require(_0xe90d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe90d('0x1'));var jsonpatch=require(_0xe90d('0x2'));var rp=require(_0xe90d('0x3'));var moment=require(_0xe90d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe90d('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe90d('0x6'));var fs=require('fs');var fs_extra=require(_0xe90d('0x7'));var _=require(_0xe90d('0x8'));var squel=require(_0xe90d('0x9'));var crypto=require('crypto');var jsforce=require(_0xe90d('0xa'));var deskjs=require(_0xe90d('0xb'));var toCsv=require(_0xe90d('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe90d('0xd'));var authService=require(_0xe90d('0xe'));var qs=require(_0xe90d('0xf'));var as=require(_0xe90d('0x10'));var hardwareService=require(_0xe90d('0x11'));var logger=require(_0xe90d('0x12'))(_0xe90d('0x13'));var utils=require(_0xe90d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xe90d('0x15'));var db=require(_0xe90d('0x16'))['db'];function respondWithStatusCode(_0x312869,_0x2273d4){_0x2273d4=_0x2273d4||0xcc;return function(_0x155955){if(_0x155955){return _0x312869[_0xe90d('0x17')](_0x2273d4);}return _0x312869[_0xe90d('0x18')](_0x2273d4)[_0xe90d('0x19')]();};}function respondWithResult(_0x155e80,_0x2a8a36){_0x2a8a36=_0x2a8a36||0xc8;return function(_0x2c281a){if(_0x2c281a){return _0x155e80['status'](_0x2a8a36)[_0xe90d('0x1a')](_0x2c281a);}};}function respondWithFilteredResult(_0x25cf4d,_0x52131b){return function(_0x406e7e){if(_0x406e7e){var _0x31cc0a=typeof _0x52131b[_0xe90d('0x1b')]===_0xe90d('0x1c')&&typeof _0x52131b[_0xe90d('0x1d')]===_0xe90d('0x1c');var _0x4845c2=_0x406e7e[_0xe90d('0x1e')];var _0x50c311=_0x31cc0a?0x0:_0x52131b[_0xe90d('0x1b')];var _0x2c7772=_0x31cc0a?_0x406e7e[_0xe90d('0x1e')]:_0x52131b[_0xe90d('0x1b')]+_0x52131b[_0xe90d('0x1d')];var _0xd364e8;if(_0x2c7772>=_0x4845c2){_0x2c7772=_0x4845c2;_0xd364e8=0xc8;}else{_0xd364e8=0xce;}_0x25cf4d[_0xe90d('0x18')](_0xd364e8);return _0x25cf4d[_0xe90d('0x1f')](_0xe90d('0x20'),_0x50c311+'-'+_0x2c7772+'/'+_0x4845c2)[_0xe90d('0x1a')](_0x406e7e);}return null;};}function patchUpdates(_0x3b3831){return function(_0x5381a7){try{jsonpatch[_0xe90d('0x21')](_0x5381a7,_0x3b3831,!![]);}catch(_0x54ad7c){return BPromise['reject'](_0x54ad7c);}return _0x5381a7[_0xe90d('0x22')]();};}function saveUpdates(_0x357504,_0x491501){return function(_0x3d6300){if(_0x3d6300){return _0x3d6300[_0xe90d('0x23')](_0x357504)['then'](function(_0x5a7b38){return _0x5a7b38;});}return null;};}function removeEntity(_0xc09084,_0x3820ef){return function(_0x2c9746){if(_0x2c9746){return _0x2c9746[_0xe90d('0x24')]()[_0xe90d('0x25')](function(){_0xc09084['status'](0xcc)[_0xe90d('0x19')]();});}};}function handleEntityNotFound(_0x4410fc,_0x5758b8){return function(_0x48ab7b){if(!_0x48ab7b){_0x4410fc[_0xe90d('0x17')](0x194);}return _0x48ab7b;};}function handleError(_0x2fb147,_0x6c7613){_0x6c7613=_0x6c7613||0x1f4;return function(_0x1b08cf){logger[_0xe90d('0x26')](_0x1b08cf['stack']);if(_0x1b08cf[_0xe90d('0x27')]){delete _0x1b08cf[_0xe90d('0x27')];}_0x2fb147['status'](_0x6c7613)['send'](_0x1b08cf);};}exports['index']=function(_0x4aff82,_0x1323f6){var _0x38a0fe={},_0x58883e={},_0x4b9b4d={'count':0x0,'rows':[]};var _0x19c96c=_[_0xe90d('0x28')](db[_0xe90d('0x29')][_0xe90d('0x2a')],function(_0x34112d){return{'name':_0x34112d[_0xe90d('0x2b')],'type':_0x34112d[_0xe90d('0x2c')][_0xe90d('0x2d')]};});_0x58883e[_0xe90d('0x2e')]=_[_0xe90d('0x28')](_0x19c96c,'name');_0x58883e[_0xe90d('0x2f')]=_['keys'](_0x4aff82[_0xe90d('0x2f')]);_0x58883e[_0xe90d('0x30')]=_['intersection'](_0x58883e[_0xe90d('0x2e')],_0x58883e['query']);_0x38a0fe['attributes']=_[_0xe90d('0x31')](_0x58883e[_0xe90d('0x2e')],qs['fields'](_0x4aff82[_0xe90d('0x2f')]['fields']));_0x38a0fe['attributes']=_0x38a0fe[_0xe90d('0x32')]['length']?_0x38a0fe[_0xe90d('0x32')]:_0x58883e[_0xe90d('0x2e')];if(!_0x4aff82['query'][_0xe90d('0x33')](_0xe90d('0x34'))){_0x38a0fe[_0xe90d('0x1d')]=qs[_0xe90d('0x1d')](_0x4aff82[_0xe90d('0x2f')]['limit']);_0x38a0fe[_0xe90d('0x1b')]=qs[_0xe90d('0x1b')](_0x4aff82[_0xe90d('0x2f')]['offset']);}_0x38a0fe[_0xe90d('0x35')]=qs['sort'](_0x4aff82[_0xe90d('0x2f')]['sort']);_0x38a0fe[_0xe90d('0x36')]=qs[_0xe90d('0x30')](_[_0xe90d('0x37')](_0x4aff82['query'],_0x58883e[_0xe90d('0x30')]),_0x19c96c);if(_0x4aff82[_0xe90d('0x2f')][_0xe90d('0x38')]){_0x38a0fe[_0xe90d('0x36')]=_['merge'](_0x38a0fe[_0xe90d('0x36')],{'$or':_['map'](_0x19c96c,function(_0x742db6){if(_0x742db6[_0xe90d('0x2c')]!==_0xe90d('0x39')){var _0x237abb={};_0x237abb[_0x742db6[_0xe90d('0x27')]]={'$like':'%'+_0x4aff82[_0xe90d('0x2f')][_0xe90d('0x38')]+'%'};return _0x237abb;}})});}_0x38a0fe=_['merge']({},_0x38a0fe,_0x4aff82['options']);var _0x5ccddd={'where':_0x38a0fe[_0xe90d('0x36')]};return db['SalesforceField'][_0xe90d('0x1e')](_0x5ccddd)['then'](function(_0x40d0c5){_0x4b9b4d[_0xe90d('0x1e')]=_0x40d0c5;if(_0x4aff82[_0xe90d('0x2f')]['includeAll']){_0x38a0fe[_0xe90d('0x3a')]=[{'all':!![]}];}return db['SalesforceField'][_0xe90d('0x3b')](_0x38a0fe);})['then'](function(_0x45ccce){_0x4b9b4d[_0xe90d('0x3c')]=_0x45ccce;return _0x4b9b4d;})[_0xe90d('0x25')](respondWithFilteredResult(_0x1323f6,_0x38a0fe))['catch'](handleError(_0x1323f6,null));};exports['show']=function(_0x132381,_0x72714f){var _0x49a80d={'raw':!![],'where':{'id':_0x132381['params']['id']}},_0x322539={};_0x322539[_0xe90d('0x2e')]=_['keys'](db[_0xe90d('0x29')]['rawAttributes']);_0x322539[_0xe90d('0x2f')]=_[_0xe90d('0x3d')](_0x132381[_0xe90d('0x2f')]);_0x322539[_0xe90d('0x30')]=_[_0xe90d('0x31')](_0x322539[_0xe90d('0x2e')],_0x322539[_0xe90d('0x2f')]);_0x49a80d[_0xe90d('0x32')]=_[_0xe90d('0x31')](_0x322539[_0xe90d('0x2e')],qs[_0xe90d('0x3e')](_0x132381['query'][_0xe90d('0x3e')]));_0x49a80d[_0xe90d('0x32')]=_0x49a80d[_0xe90d('0x32')]['length']?_0x49a80d[_0xe90d('0x32')]:_0x322539[_0xe90d('0x2e')];if(_0x132381[_0xe90d('0x2f')][_0xe90d('0x3f')]){_0x49a80d['include']=[{'all':!![]}];}_0x49a80d=_['merge']({},_0x49a80d,_0x132381['options']);return db['SalesforceField'][_0xe90d('0x40')](_0x49a80d)['then'](handleEntityNotFound(_0x72714f,null))[_0xe90d('0x25')](respondWithResult(_0x72714f,null))['catch'](handleError(_0x72714f,null));};exports[_0xe90d('0x41')]=function(_0x26ca76,_0x7e4207){return db[_0xe90d('0x29')][_0xe90d('0x41')](_0x26ca76[_0xe90d('0x42')],{})['then'](respondWithResult(_0x7e4207,0xc9))[_0xe90d('0x43')](handleError(_0x7e4207,null));};exports[_0xe90d('0x23')]=function(_0x12fd86,_0x524213){if(_0x12fd86[_0xe90d('0x42')]['id']){delete _0x12fd86[_0xe90d('0x42')]['id'];}return db[_0xe90d('0x29')]['find']({'where':{'id':_0x12fd86[_0xe90d('0x44')]['id']}})[_0xe90d('0x25')](handleEntityNotFound(_0x524213,null))[_0xe90d('0x25')](saveUpdates(_0x12fd86['body'],null))[_0xe90d('0x25')](respondWithResult(_0x524213,null))['catch'](handleError(_0x524213,null));};exports[_0xe90d('0x24')]=function(_0x4bf517,_0x43f844){return db[_0xe90d('0x29')][_0xe90d('0x40')]({'where':{'id':_0x4bf517[_0xe90d('0x44')]['id']}})[_0xe90d('0x25')](handleEntityNotFound(_0x43f844,null))[_0xe90d('0x25')](removeEntity(_0x43f844,null))[_0xe90d('0x43')](handleError(_0x43f844,null));};
\ No newline at end of file
+var _0x4c35=['ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','keys','create','body','find','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x2307d3,_0x3743ed){var _0x5828df=function(_0x523a8f){while(--_0x523a8f){_0x2307d3['push'](_0x2307d3['shift']());}};_0x5828df(++_0x3743ed);}(_0x4c35,0x178));var _0x54c3=function(_0x44c974,_0x1bcfde){_0x44c974=_0x44c974-0x0;var _0x5214c6=_0x4c35[_0x44c974];return _0x5214c6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x54c3('0x0'));var zipdir=require(_0x54c3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x54c3('0x2'));var BPromise=require(_0x54c3('0x3'));var Mustache=require(_0x54c3('0x4'));var util=require(_0x54c3('0x5'));var path=require(_0x54c3('0x6'));var sox=require(_0x54c3('0x7'));var csv=require(_0x54c3('0x8'));var ejs=require(_0x54c3('0x9'));var fs=require('fs');var fs_extra=require(_0x54c3('0xa'));var _=require(_0x54c3('0xb'));var squel=require(_0x54c3('0xc'));var crypto=require(_0x54c3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x54c3('0xe'));var toCsv=require(_0x54c3('0x8'));var querystring=require(_0x54c3('0xf'));var Papa=require(_0x54c3('0x10'));var Redis=require(_0x54c3('0x11'));var authService=require(_0x54c3('0x12'));var qs=require(_0x54c3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x54c3('0x14'))(_0x54c3('0x15'));var utils=require(_0x54c3('0x16'));var config=require(_0x54c3('0x17'));var licenseUtil=require(_0x54c3('0x18'));var db=require(_0x54c3('0x19'))['db'];function respondWithStatusCode(_0x20ae31,_0x1fe72c){_0x1fe72c=_0x1fe72c||0xcc;return function(_0x36e1d8){if(_0x36e1d8){return _0x20ae31[_0x54c3('0x1a')](_0x1fe72c);}return _0x20ae31[_0x54c3('0x1b')](_0x1fe72c)[_0x54c3('0x1c')]();};}function respondWithResult(_0x4afdcb,_0x4d7234){_0x4d7234=_0x4d7234||0xc8;return function(_0x4a52e3){if(_0x4a52e3){return _0x4afdcb['status'](_0x4d7234)[_0x54c3('0x1d')](_0x4a52e3);}};}function respondWithFilteredResult(_0x249d51,_0x3aa1a6){return function(_0x595459){if(_0x595459){var _0x7e262d=typeof _0x3aa1a6[_0x54c3('0x1e')]===_0x54c3('0x1f')&&typeof _0x3aa1a6[_0x54c3('0x20')]===_0x54c3('0x1f');var _0x4ec46f=_0x595459['count'];var _0x177d3e=_0x7e262d?0x0:_0x3aa1a6['offset'];var _0xde781f=_0x7e262d?_0x595459['count']:_0x3aa1a6[_0x54c3('0x1e')]+_0x3aa1a6['limit'];var _0x2c0ffc;if(_0xde781f>=_0x4ec46f){_0xde781f=_0x4ec46f;_0x2c0ffc=0xc8;}else{_0x2c0ffc=0xce;}_0x249d51[_0x54c3('0x1b')](_0x2c0ffc);return _0x249d51['set'](_0x54c3('0x21'),_0x177d3e+'-'+_0xde781f+'/'+_0x4ec46f)['json'](_0x595459);}return null;};}function patchUpdates(_0x34084b){return function(_0x2080da){try{jsonpatch[_0x54c3('0x22')](_0x2080da,_0x34084b,!![]);}catch(_0x29a0a3){return BPromise[_0x54c3('0x23')](_0x29a0a3);}return _0x2080da[_0x54c3('0x24')]();};}function saveUpdates(_0x3a37b6,_0x1c73c6){return function(_0x41d9f9){if(_0x41d9f9){return _0x41d9f9[_0x54c3('0x25')](_0x3a37b6)[_0x54c3('0x26')](function(_0x52093b){return _0x52093b;});}return null;};}function removeEntity(_0x2a8721,_0x35fa93){return function(_0xc5a3e1){if(_0xc5a3e1){return _0xc5a3e1[_0x54c3('0x27')]()['then'](function(){_0x2a8721['status'](0xcc)[_0x54c3('0x1c')]();});}};}function handleEntityNotFound(_0x47bc4e,_0x28e6e0){return function(_0x1489fd){if(!_0x1489fd){_0x47bc4e[_0x54c3('0x1a')](0x194);}return _0x1489fd;};}function handleError(_0x13ca78,_0x18a9da){_0x18a9da=_0x18a9da||0x1f4;return function(_0x180749){logger[_0x54c3('0x28')](_0x180749[_0x54c3('0x29')]);if(_0x180749[_0x54c3('0x2a')]){delete _0x180749[_0x54c3('0x2a')];}_0x13ca78['status'](_0x18a9da)[_0x54c3('0x2b')](_0x180749);};}exports[_0x54c3('0x2c')]=function(_0x304d91,_0x21973d){var _0x101e8b={},_0x24e185={},_0x5704ca={'count':0x0,'rows':[]};var _0x15df1c=_[_0x54c3('0x2d')](db[_0x54c3('0x2e')][_0x54c3('0x2f')],function(_0x5d55d1){return{'name':_0x5d55d1[_0x54c3('0x30')],'type':_0x5d55d1['type'][_0x54c3('0x31')]};});_0x24e185[_0x54c3('0x32')]=_[_0x54c3('0x2d')](_0x15df1c,_0x54c3('0x2a'));_0x24e185['query']=_['keys'](_0x304d91[_0x54c3('0x33')]);_0x24e185[_0x54c3('0x34')]=_[_0x54c3('0x35')](_0x24e185[_0x54c3('0x32')],_0x24e185[_0x54c3('0x33')]);_0x101e8b['attributes']=_[_0x54c3('0x35')](_0x24e185[_0x54c3('0x32')],qs[_0x54c3('0x36')](_0x304d91[_0x54c3('0x33')][_0x54c3('0x36')]));_0x101e8b[_0x54c3('0x37')]=_0x101e8b[_0x54c3('0x37')][_0x54c3('0x38')]?_0x101e8b[_0x54c3('0x37')]:_0x24e185['model'];if(!_0x304d91['query'][_0x54c3('0x39')]('nolimit')){_0x101e8b[_0x54c3('0x20')]=qs[_0x54c3('0x20')](_0x304d91['query'][_0x54c3('0x20')]);_0x101e8b[_0x54c3('0x1e')]=qs['offset'](_0x304d91['query'][_0x54c3('0x1e')]);}_0x101e8b[_0x54c3('0x3a')]=qs['sort'](_0x304d91[_0x54c3('0x33')]['sort']);_0x101e8b[_0x54c3('0x3b')]=qs['filters'](_[_0x54c3('0x3c')](_0x304d91[_0x54c3('0x33')],_0x24e185['filters']),_0x15df1c);if(_0x304d91[_0x54c3('0x33')][_0x54c3('0x3d')]){_0x101e8b['where']=_[_0x54c3('0x3e')](_0x101e8b[_0x54c3('0x3b')],{'$or':_[_0x54c3('0x2d')](_0x15df1c,function(_0x2aec40){if(_0x2aec40[_0x54c3('0x3f')]!==_0x54c3('0x40')){var _0x4e049c={};_0x4e049c[_0x2aec40['name']]={'$like':'%'+_0x304d91['query'][_0x54c3('0x3d')]+'%'};return _0x4e049c;}})});}_0x101e8b=_[_0x54c3('0x3e')]({},_0x101e8b,_0x304d91[_0x54c3('0x41')]);var _0x49cd7e={'where':_0x101e8b['where']};return db[_0x54c3('0x2e')][_0x54c3('0x42')](_0x49cd7e)[_0x54c3('0x26')](function(_0x5c7673){_0x5704ca[_0x54c3('0x42')]=_0x5c7673;if(_0x304d91['query'][_0x54c3('0x43')]){_0x101e8b[_0x54c3('0x44')]=[{'all':!![]}];}return db[_0x54c3('0x2e')][_0x54c3('0x45')](_0x101e8b);})['then'](function(_0x5bbefa){_0x5704ca['rows']=_0x5bbefa;return _0x5704ca;})[_0x54c3('0x26')](respondWithFilteredResult(_0x21973d,_0x101e8b))[_0x54c3('0x46')](handleError(_0x21973d,null));};exports[_0x54c3('0x47')]=function(_0x429f2b,_0xc3406f){var _0xfd6936={'raw':!![],'where':{'id':_0x429f2b[_0x54c3('0x48')]['id']}},_0x376be4={};_0x376be4[_0x54c3('0x32')]=_['keys'](db[_0x54c3('0x2e')][_0x54c3('0x2f')]);_0x376be4[_0x54c3('0x33')]=_[_0x54c3('0x49')](_0x429f2b[_0x54c3('0x33')]);_0x376be4['filters']=_[_0x54c3('0x35')](_0x376be4[_0x54c3('0x32')],_0x376be4[_0x54c3('0x33')]);_0xfd6936[_0x54c3('0x37')]=_['intersection'](_0x376be4[_0x54c3('0x32')],qs['fields'](_0x429f2b['query']['fields']));_0xfd6936[_0x54c3('0x37')]=_0xfd6936[_0x54c3('0x37')][_0x54c3('0x38')]?_0xfd6936[_0x54c3('0x37')]:_0x376be4['model'];if(_0x429f2b[_0x54c3('0x33')]['includeAll']){_0xfd6936[_0x54c3('0x44')]=[{'all':!![]}];}_0xfd6936=_['merge']({},_0xfd6936,_0x429f2b[_0x54c3('0x41')]);return db[_0x54c3('0x2e')]['find'](_0xfd6936)[_0x54c3('0x26')](handleEntityNotFound(_0xc3406f,null))['then'](respondWithResult(_0xc3406f,null))['catch'](handleError(_0xc3406f,null));};exports[_0x54c3('0x4a')]=function(_0x4ebc10,_0x3e8ebf){return db[_0x54c3('0x2e')][_0x54c3('0x4a')](_0x4ebc10['body'],{})['then'](respondWithResult(_0x3e8ebf,0xc9))[_0x54c3('0x46')](handleError(_0x3e8ebf,null));};exports[_0x54c3('0x25')]=function(_0x4419ec,_0xb112e2){if(_0x4419ec[_0x54c3('0x4b')]['id']){delete _0x4419ec[_0x54c3('0x4b')]['id'];}return db[_0x54c3('0x2e')][_0x54c3('0x4c')]({'where':{'id':_0x4419ec[_0x54c3('0x48')]['id']}})[_0x54c3('0x26')](handleEntityNotFound(_0xb112e2,null))[_0x54c3('0x26')](saveUpdates(_0x4419ec[_0x54c3('0x4b')],null))['then'](respondWithResult(_0xb112e2,null))['catch'](handleError(_0xb112e2,null));};exports[_0x54c3('0x27')]=function(_0x15fbbc,_0x44f3ba){return db[_0x54c3('0x2e')][_0x54c3('0x4c')]({'where':{'id':_0x15fbbc[_0x54c3('0x48')]['id']}})[_0x54c3('0x26')](handleEntityNotFound(_0x44f3ba,null))[_0x54c3('0x26')](removeEntity(_0x44f3ba,null))[_0x54c3('0x46')](handleError(_0x44f3ba,null));};
\ No newline at end of file
index c8bdc09..82940a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc23f=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports'];(function(_0x297314,_0x518c38){var _0x4cff6b=function(_0x521693){while(--_0x521693){_0x297314['push'](_0x297314['shift']());}};_0x4cff6b(++_0x518c38);}(_0xc23f,0x93));var _0xfc23=function(_0x4d4ad4,_0x32eb89){_0x4d4ad4=_0x4d4ad4-0x0;var _0x174aa1=_0xc23f[_0x4d4ad4];return _0x174aa1;};'use strict';var _=require(_0xfc23('0x0'));var util=require('util');var logger=require(_0xfc23('0x1'))('api');var moment=require('moment');var BPromise=require(_0xfc23('0x2'));var rp=require(_0xfc23('0x3'));var fs=require('fs');var path=require(_0xfc23('0x4'));var rimraf=require(_0xfc23('0x5'));var config=require(_0xfc23('0x6'));var attributes=require(_0xfc23('0x7'));module[_0xfc23('0x8')]=function(_0x262620,_0x442426){return _0x262620['define']('SalesforceField',attributes,{'tableName':_0xfc23('0x9'),'paranoid':![],'indexes':[{'name':_0xfc23('0xa'),'fields':[_0xfc23('0xb'),_0xfc23('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb66b=['../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','SalesforceField','FieldId','lodash','util'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb66b,0x8d));var _0xbb66=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb66b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xbb66('0x0'));var util=require(_0xbb66('0x1'));var logger=require(_0xbb66('0x2'))('api');var moment=require(_0xbb66('0x3'));var BPromise=require(_0xbb66('0x4'));var rp=require(_0xbb66('0x5'));var fs=require('fs');var path=require(_0xbb66('0x6'));var rimraf=require(_0xbb66('0x7'));var config=require('../../config/environment');var attributes=require('./intSalesforceField.attributes');module[_0xbb66('0x8')]=function(_0x463ae7,_0xea2e00){return _0x463ae7['define'](_0xbb66('0x9'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':['idField',_0xbb66('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1504839..613b0f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a18=['then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x61eac5,_0x160f72){var _0x3e6bad=function(_0x1dd90c){while(--_0x1dd90c){_0x61eac5['push'](_0x61eac5['shift']());}};_0x3e6bad(++_0x160f72);}(_0x7a18,0x79));var _0x87a1=function(_0xf34b0a,_0x11e116){_0xf34b0a=_0xf34b0a-0x0;var _0x5021e1=_0x7a18[_0xf34b0a];return _0x5021e1;};'use strict';var _=require(_0x87a1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x87a1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x87a1('0x2'));var db=require(_0x87a1('0x3'))['db'];var utils=require(_0x87a1('0x4'));var logger=require(_0x87a1('0x5'))(_0x87a1('0x6'));var config=require(_0x87a1('0x7'));var jayson=require(_0x87a1('0x8'));var client=jayson[_0x87a1('0x9')][_0x87a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28d2e,_0xa481,_0x386721){return new BPromise(function(_0x94d72,_0x4aa618){return client['request'](_0x28d2e,_0x386721)[_0x87a1('0xb')](function(_0x170c12){logger[_0x87a1('0xc')](_0x87a1('0xd'),_0xa481,_0x87a1('0xe'));logger[_0x87a1('0xf')](_0x87a1('0x10'),_0xa481,_0x87a1('0xe'),JSON[_0x87a1('0x11')](_0x170c12));if(_0x170c12[_0x87a1('0x12')]){if(_0x170c12['error'][_0x87a1('0x13')]===0x1f4){logger['error'](_0x87a1('0xd'),_0xa481,_0x170c12[_0x87a1('0x12')][_0x87a1('0x14')]);return _0x4aa618(_0x170c12[_0x87a1('0x12')]['message']);}logger['error'](_0x87a1('0xd'),_0xa481,_0x170c12[_0x87a1('0x12')]['message']);return _0x94d72(_0x170c12[_0x87a1('0x12')][_0x87a1('0x14')]);}else{logger[_0x87a1('0xc')](_0x87a1('0xd'),_0xa481,_0x87a1('0xe'));_0x94d72(_0x170c12['result'][_0x87a1('0x14')]);}})[_0x87a1('0x15')](function(_0x5b920e){logger[_0x87a1('0x12')](_0x87a1('0xd'),_0xa481,_0x5b920e);_0x4aa618(_0x5b920e);});});}
\ No newline at end of file
+var _0xe409=['SalesforceField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x4c1e6b,_0x5389a5){var _0x598046=function(_0x3617f5){while(--_0x3617f5){_0x4c1e6b['push'](_0x4c1e6b['shift']());}};_0x598046(++_0x5389a5);}(_0xe409,0x1c1));var _0x9e40=function(_0x3bcfa6,_0x1b04cf){_0x3bcfa6=_0x3bcfa6-0x0;var _0x453d1b=_0xe409[_0x3bcfa6];return _0x453d1b;};'use strict';var _=require(_0x9e40('0x0'));var util=require('util');var moment=require(_0x9e40('0x1'));var BPromise=require(_0x9e40('0x2'));var rs=require(_0x9e40('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9e40('0x4'));var logger=require(_0x9e40('0x5'))(_0x9e40('0x6'));var config=require(_0x9e40('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9e40('0x8')][_0x9e40('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2179cd,_0x1ce588,_0x2c7058){return new BPromise(function(_0x5007aa,_0x5eac20){return client[_0x9e40('0xa')](_0x2179cd,_0x2c7058)[_0x9e40('0xb')](function(_0x3d4c1e){logger[_0x9e40('0xc')](_0x9e40('0xd'),_0x1ce588,_0x9e40('0xe'));logger['debug']('SalesforceField,\x20%s,\x20%s,\x20%s',_0x1ce588,_0x9e40('0xe'),JSON[_0x9e40('0xf')](_0x3d4c1e));if(_0x3d4c1e[_0x9e40('0x10')]){if(_0x3d4c1e[_0x9e40('0x10')][_0x9e40('0x11')]===0x1f4){logger['error'](_0x9e40('0xd'),_0x1ce588,_0x3d4c1e['error'][_0x9e40('0x12')]);return _0x5eac20(_0x3d4c1e[_0x9e40('0x10')][_0x9e40('0x12')]);}logger[_0x9e40('0x10')](_0x9e40('0xd'),_0x1ce588,_0x3d4c1e[_0x9e40('0x10')]['message']);return _0x5007aa(_0x3d4c1e['error']['message']);}else{logger[_0x9e40('0xc')](_0x9e40('0xd'),_0x1ce588,_0x9e40('0xe'));_0x5007aa(_0x3d4c1e[_0x9e40('0x13')][_0x9e40('0x12')]);}})[_0x9e40('0x14')](function(_0xacffa7){logger[_0x9e40('0x10')]('SalesforceField,\x20%s,\x20%s',_0x1ce588,_0xacffa7);_0x5eac20(_0xacffa7);});});}
\ No newline at end of file
index d1408da..dacf0b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0849=['put','update','delete','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0849,0xca));var _0x9084=function(_0xfed299,_0x21b8d0){_0xfed299=_0xfed299-0x0;var _0x4ef1f2=_0x0849[_0xfed299];return _0x4ef1f2;};'use strict';var multer=require(_0x9084('0x0'));var util=require(_0x9084('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9084('0x2'));var router=express[_0x9084('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9084('0x4'));var interaction=require(_0x9084('0x5'));var config=require(_0x9084('0x6'));var controller=require(_0x9084('0x7'));router['get']('/',auth[_0x9084('0x8')](),controller[_0x9084('0x9')]);router[_0x9084('0xa')](_0x9084('0xb'),auth[_0x9084('0x8')](),controller['show']);router[_0x9084('0xa')]('/:id/configurations',auth[_0x9084('0x8')](),controller['getConfigurations']);router['get'](_0x9084('0xc'),auth[_0x9084('0x8')](),controller[_0x9084('0xd')]);router[_0x9084('0xe')]('/',auth[_0x9084('0x8')](),controller[_0x9084('0xf')]);router[_0x9084('0xe')](_0x9084('0x10'),auth[_0x9084('0x8')](),controller[_0x9084('0x11')]);router[_0x9084('0x12')]('/:id',auth[_0x9084('0x8')](),controller[_0x9084('0x13')]);router[_0x9084('0x14')]('/:id',auth[_0x9084('0x8')](),controller['destroy']);module[_0x9084('0x15')]=router;
\ No newline at end of file
+var _0x07f4=['create','addConfiguration','delete','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','/:id/fields','getFields','post'];(function(_0x1c1739,_0x2857ac){var _0x16a7d7=function(_0x20c517){while(--_0x20c517){_0x1c1739['push'](_0x1c1739['shift']());}};_0x16a7d7(++_0x2857ac);}(_0x07f4,0xe7));var _0x407f=function(_0x161e97,_0x18b498){_0x161e97=_0x161e97-0x0;var _0x27b267=_0x07f4[_0x161e97];return _0x27b267;};'use strict';var multer=require(_0x407f('0x0'));var util=require('util');var path=require(_0x407f('0x1'));var timeout=require('connect-timeout');var express=require(_0x407f('0x2'));var router=express['Router']();var fs_extra=require(_0x407f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x407f('0x4'));var config=require(_0x407f('0x5'));var controller=require(_0x407f('0x6'));router['get']('/',auth[_0x407f('0x7')](),controller[_0x407f('0x8')]);router[_0x407f('0x9')](_0x407f('0xa'),auth[_0x407f('0x7')](),controller[_0x407f('0xb')]);router[_0x407f('0x9')](_0x407f('0xc'),auth[_0x407f('0x7')](),controller['getConfigurations']);router[_0x407f('0x9')](_0x407f('0xd'),auth[_0x407f('0x7')](),controller[_0x407f('0xe')]);router[_0x407f('0xf')]('/',auth[_0x407f('0x7')](),controller[_0x407f('0x10')]);router[_0x407f('0xf')]('/:id/configurations',auth[_0x407f('0x7')](),controller[_0x407f('0x11')]);router['put'](_0x407f('0xa'),auth[_0x407f('0x7')](),controller['update']);router[_0x407f('0x12')](_0x407f('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4582102..c530952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69f8=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3b3ada,_0x476383){var _0x5f124d=function(_0x56c5eb){while(--_0x56c5eb){_0x3b3ada['push'](_0x3b3ada['shift']());}};_0x5f124d(++_0x476383);}(_0x69f8,0x1af));var _0x869f=function(_0x596507,_0x51f430){_0x596507=_0x596507-0x0;var _0x30e58f=_0x69f8[_0x596507];return _0x30e58f;};'use strict';var Sequelize=require(_0x869f('0x0'));module[_0x869f('0x1')]={'name':{'type':Sequelize[_0x869f('0x2')]},'description':{'type':Sequelize[_0x869f('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x869f('0x3')},'password':{'type':Sequelize[_0x869f('0x2')]},'email':{'type':Sequelize[_0x869f('0x2')]},'remoteUri':{'type':Sequelize[_0x869f('0x2')],'unique':_0x869f('0x4')},'serverUrl':{'type':Sequelize[_0x869f('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x0b30=['sequelize','exports','STRING','username','remoteUri'];(function(_0x391e9c,_0x3b4958){var _0x1807da=function(_0x2a1884){while(--_0x2a1884){_0x391e9c['push'](_0x391e9c['shift']());}};_0x1807da(++_0x3b4958);}(_0x0b30,0x1e5));var _0x00b3=function(_0x3e3f67,_0x4fb188){_0x3e3f67=_0x3e3f67-0x0;var _0x24f3c8=_0x0b30[_0x3e3f67];return _0x24f3c8;};'use strict';var Sequelize=require(_0x00b3('0x0'));module[_0x00b3('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x00b3('0x2')],'unique':_0x00b3('0x3')},'password':{'type':Sequelize[_0x00b3('0x2')]},'email':{'type':Sequelize[_0x00b3('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x00b3('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index d9bda9c..9119fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d9f=['close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','child_incidents','number','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','opened_at','group_list','work_end','reopened_time','resolved_at','work_notes','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','contact_type','reopened_by','incident_state','urgency','problem_id','company','activity_due','assigned_to','comments','sla_due','approval','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','location','username','remoteUri','serverUrl','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','includes','forEach','push','label','all','concat','ServiceNow\x20error:\x20','statusCode','stack','test','boolean','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','end','sendStatus','error','name','index','ServicenowAccount','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','map','options','includeAll','include','findAll','rows','show','merge','find','create','catch','body','params','findOne','ServicenowConfiguration','filter','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','ServicenowField','getFields','made_sla','knowledge','subcategory'];(function(_0x233afd,_0x4bcde9){var _0x44e8bd=function(_0x3ce961){while(--_0x3ce961){_0x233afd['push'](_0x233afd['shift']());}};_0x44e8bd(++_0x4bcde9);}(_0x2d9f,0x111));var _0xf2d9=function(_0x463f44,_0xc071ff){_0x463f44=_0x463f44-0x0;var _0x304163=_0x2d9f[_0x463f44];return _0x304163;};'use strict';var emlformat=require(_0xf2d9('0x0'));var rimraf=require(_0xf2d9('0x1'));var zipdir=require(_0xf2d9('0x2'));var jsonpatch=require(_0xf2d9('0x3'));var rp=require(_0xf2d9('0x4'));var moment=require(_0xf2d9('0x5'));var BPromise=require(_0xf2d9('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf2d9('0x7'));var csv=require(_0xf2d9('0x8'));var ejs=require(_0xf2d9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2d9('0xa'));var squel=require('squel');var crypto=require(_0xf2d9('0xb'));var jsforce=require(_0xf2d9('0xc'));var deskjs=require(_0xf2d9('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf2d9('0xe'));var Redis=require(_0xf2d9('0xf'));var authService=require(_0xf2d9('0x10'));var qs=require(_0xf2d9('0x11'));var as=require(_0xf2d9('0x12'));var hardwareService=require(_0xf2d9('0x13'));var logger=require(_0xf2d9('0x14'))(_0xf2d9('0x15'));var utils=require(_0xf2d9('0x16'));var config=require(_0xf2d9('0x17'));var licenseUtil=require(_0xf2d9('0x18'));var db=require(_0xf2d9('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x31cc04,_0x37be00){_0x37be00=_0x37be00||0xcc;return function(_0xfee826){if(_0xfee826){return _0x31cc04['sendStatus'](_0x37be00);}return _0x31cc04[_0xf2d9('0x1a')](_0x37be00)['end']();};}function respondWithResult(_0x448e76,_0x2c5d98){_0x2c5d98=_0x2c5d98||0xc8;return function(_0xe49ee6){if(_0xe49ee6){return _0x448e76[_0xf2d9('0x1a')](_0x2c5d98)['json'](_0xe49ee6);}};}function respondWithFilteredResult(_0x411408,_0x37ab49){return function(_0x1b9a23){if(_0x1b9a23){var _0x51ec4d=typeof _0x37ab49[_0xf2d9('0x1b')]===_0xf2d9('0x1c')&&typeof _0x37ab49[_0xf2d9('0x1d')]==='undefined';var _0x2fa09a=_0x1b9a23[_0xf2d9('0x1e')];var _0x56f254=_0x51ec4d?0x0:_0x37ab49[_0xf2d9('0x1b')];var _0x2181bd=_0x51ec4d?_0x1b9a23[_0xf2d9('0x1e')]:_0x37ab49[_0xf2d9('0x1b')]+_0x37ab49[_0xf2d9('0x1d')];var _0x61da00;if(_0x2181bd>=_0x2fa09a){_0x2181bd=_0x2fa09a;_0x61da00=0xc8;}else{_0x61da00=0xce;}_0x411408[_0xf2d9('0x1a')](_0x61da00);return _0x411408[_0xf2d9('0x1f')]('Content-Range',_0x56f254+'-'+_0x2181bd+'/'+_0x2fa09a)[_0xf2d9('0x20')](_0x1b9a23);}return null;};}function patchUpdates(_0x832805){return function(_0x43bcf0){try{jsonpatch[_0xf2d9('0x21')](_0x43bcf0,_0x832805,!![]);}catch(_0x5ba43e){return BPromise[_0xf2d9('0x22')](_0x5ba43e);}return _0x43bcf0[_0xf2d9('0x23')]();};}function saveUpdates(_0x38cc55,_0x1d7851){return function(_0x20e1b8){if(_0x20e1b8){return _0x20e1b8[_0xf2d9('0x24')](_0x38cc55)[_0xf2d9('0x25')](function(_0x379ff7){return _0x379ff7;});}return null;};}function removeEntity(_0x1354c3,_0x8f22e9){return function(_0x3108ee){if(_0x3108ee){return _0x3108ee[_0xf2d9('0x26')]()['then'](function(){_0x1354c3['status'](0xcc)[_0xf2d9('0x27')]();});}};}function handleEntityNotFound(_0x16867c,_0x2bd465){return function(_0x109f4b){if(!_0x109f4b){_0x16867c[_0xf2d9('0x28')](0x194);}return _0x109f4b;};}function handleError(_0x3f9cfd,_0x50cb93){_0x50cb93=_0x50cb93||0x1f4;return function(_0x49568e){logger[_0xf2d9('0x29')](_0x49568e['stack']);if(_0x49568e[_0xf2d9('0x2a')]){delete _0x49568e['name'];}_0x3f9cfd['status'](_0x50cb93)['send'](_0x49568e);};}exports[_0xf2d9('0x2b')]=function(_0x18bfb2,_0x597cc9){var _0xa7170d={},_0x49259d={},_0x3135dd={'count':0x0,'rows':[]};var _0x119498=_['map'](db[_0xf2d9('0x2c')][_0xf2d9('0x2d')],function(_0x155522){return{'name':_0x155522[_0xf2d9('0x2e')],'type':_0x155522[_0xf2d9('0x2f')][_0xf2d9('0x30')]};});_0x49259d['model']=_['map'](_0x119498,_0xf2d9('0x2a'));_0x49259d['query']=_[_0xf2d9('0x31')](_0x18bfb2[_0xf2d9('0x32')]);_0x49259d[_0xf2d9('0x33')]=_[_0xf2d9('0x34')](_0x49259d['model'],_0x49259d[_0xf2d9('0x32')]);_0xa7170d['attributes']=_[_0xf2d9('0x34')](_0x49259d[_0xf2d9('0x35')],qs[_0xf2d9('0x36')](_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x36')]));_0xa7170d['attributes']=_0xa7170d[_0xf2d9('0x37')][_0xf2d9('0x38')]?_0xa7170d[_0xf2d9('0x37')]:_0x49259d[_0xf2d9('0x35')];if(!_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x39')](_0xf2d9('0x3a'))){_0xa7170d[_0xf2d9('0x1d')]=qs[_0xf2d9('0x1d')](_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x1d')]);_0xa7170d[_0xf2d9('0x1b')]=qs[_0xf2d9('0x1b')](_0x18bfb2['query'][_0xf2d9('0x1b')]);}_0xa7170d['order']=qs['sort'](_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x3b')]);_0xa7170d[_0xf2d9('0x3c')]=qs[_0xf2d9('0x33')](_[_0xf2d9('0x3d')](_0x18bfb2[_0xf2d9('0x32')],_0x49259d['filters']),_0x119498);if(_0x18bfb2[_0xf2d9('0x32')]['filter']){_0xa7170d[_0xf2d9('0x3c')]=_['merge'](_0xa7170d['where'],{'$or':_[_0xf2d9('0x3e')](_0x119498,function(_0x261779){if(_0x261779[_0xf2d9('0x2f')]!=='VIRTUAL'){var _0x423b63={};_0x423b63[_0x261779[_0xf2d9('0x2a')]]={'$like':'%'+_0x18bfb2[_0xf2d9('0x32')]['filter']+'%'};return _0x423b63;}})});}_0xa7170d=_['merge']({},_0xa7170d,_0x18bfb2[_0xf2d9('0x3f')]);var _0x59bce9={'where':_0xa7170d[_0xf2d9('0x3c')]};return db[_0xf2d9('0x2c')]['count'](_0x59bce9)[_0xf2d9('0x25')](function(_0x1f0d88){_0x3135dd[_0xf2d9('0x1e')]=_0x1f0d88;if(_0x18bfb2['query'][_0xf2d9('0x40')]){_0xa7170d[_0xf2d9('0x41')]=[{'all':!![]}];}return db[_0xf2d9('0x2c')][_0xf2d9('0x42')](_0xa7170d);})[_0xf2d9('0x25')](function(_0x2a3f07){_0x3135dd[_0xf2d9('0x43')]=_0x2a3f07;return _0x3135dd;})[_0xf2d9('0x25')](respondWithFilteredResult(_0x597cc9,_0xa7170d))['catch'](handleError(_0x597cc9,null));};exports[_0xf2d9('0x44')]=function(_0x580ebf,_0x4148f5){var _0x538ca8={'raw':![],'where':{'id':_0x580ebf['params']['id']}},_0x1ff645={};_0x1ff645['model']=_['keys'](db[_0xf2d9('0x2c')][_0xf2d9('0x2d')]);_0x1ff645['query']=_['keys'](_0x580ebf[_0xf2d9('0x32')]);_0x1ff645[_0xf2d9('0x33')]=_['intersection'](_0x1ff645[_0xf2d9('0x35')],_0x1ff645[_0xf2d9('0x32')]);_0x538ca8[_0xf2d9('0x37')]=_[_0xf2d9('0x34')](_0x1ff645[_0xf2d9('0x35')],qs[_0xf2d9('0x36')](_0x580ebf[_0xf2d9('0x32')][_0xf2d9('0x36')]));_0x538ca8[_0xf2d9('0x37')]=_0x538ca8['attributes'][_0xf2d9('0x38')]?_0x538ca8[_0xf2d9('0x37')]:_0x1ff645[_0xf2d9('0x35')];if(_0x580ebf['query'][_0xf2d9('0x40')]){_0x538ca8[_0xf2d9('0x41')]=[{'all':!![]}];}_0x538ca8=_[_0xf2d9('0x45')]({},_0x538ca8,_0x580ebf[_0xf2d9('0x3f')]);return db[_0xf2d9('0x2c')][_0xf2d9('0x46')](_0x538ca8)['then'](handleEntityNotFound(_0x4148f5,null))[_0xf2d9('0x25')](respondWithResult(_0x4148f5,null))['catch'](handleError(_0x4148f5,null));};exports[_0xf2d9('0x47')]=function(_0x1d3506,_0x1d38be){return db[_0xf2d9('0x2c')][_0xf2d9('0x47')](_0x1d3506['body'],{})[_0xf2d9('0x25')](respondWithResult(_0x1d38be,0xc9))[_0xf2d9('0x48')](handleError(_0x1d38be,null));};exports[_0xf2d9('0x24')]=function(_0x3fb5a5,_0x52a743){if(_0x3fb5a5['body']['id']){delete _0x3fb5a5[_0xf2d9('0x49')]['id'];}return db[_0xf2d9('0x2c')][_0xf2d9('0x46')]({'where':{'id':_0x3fb5a5[_0xf2d9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x52a743,null))[_0xf2d9('0x25')](saveUpdates(_0x3fb5a5[_0xf2d9('0x49')],null))['then'](respondWithResult(_0x52a743,null))['catch'](handleError(_0x52a743,null));};exports[_0xf2d9('0x26')]=function(_0x98934,_0x2c1b4b){return db[_0xf2d9('0x2c')][_0xf2d9('0x46')]({'where':{'id':_0x98934[_0xf2d9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c1b4b,null))[_0xf2d9('0x25')](removeEntity(_0x2c1b4b,null))[_0xf2d9('0x48')](handleError(_0x2c1b4b,null));};exports['getConfigurations']=function(_0x3dabd,_0x4bd373,_0x8a4d3d){var _0x5709d6={};var _0x2050e9={};var _0x2c4a50;var _0x6c399d;return db[_0xf2d9('0x2c')][_0xf2d9('0x4b')]({'where':{'id':_0x3dabd['params']['id']}})[_0xf2d9('0x25')](handleEntityNotFound(_0x4bd373,null))[_0xf2d9('0x25')](function(_0xf07f8){if(_0xf07f8){_0x2c4a50=_0xf07f8;_0x2050e9[_0xf2d9('0x35')]=_[_0xf2d9('0x31')](db[_0xf2d9('0x4c')][_0xf2d9('0x2d')]);_0x2050e9[_0xf2d9('0x32')]=_[_0xf2d9('0x31')](_0x3dabd[_0xf2d9('0x32')]);_0x2050e9[_0xf2d9('0x33')]=_['intersection'](_0x2050e9[_0xf2d9('0x35')],_0x2050e9[_0xf2d9('0x32')]);_0x5709d6[_0xf2d9('0x37')]=_[_0xf2d9('0x34')](_0x2050e9[_0xf2d9('0x35')],qs[_0xf2d9('0x36')](_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x36')]));_0x5709d6[_0xf2d9('0x37')]=_0x5709d6[_0xf2d9('0x37')][_0xf2d9('0x38')]?_0x5709d6[_0xf2d9('0x37')]:_0x2050e9[_0xf2d9('0x35')];_0x5709d6['order']=qs['sort'](_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x3b')]);_0x5709d6[_0xf2d9('0x3c')]=qs[_0xf2d9('0x33')](_['pick'](_0x3dabd[_0xf2d9('0x32')],_0x2050e9['filters']));if(_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x4d')]){_0x5709d6[_0xf2d9('0x3c')]=_[_0xf2d9('0x45')](_0x5709d6['where'],{'$or':_[_0xf2d9('0x3e')](_0x5709d6[_0xf2d9('0x37')],function(_0x27ca69){var _0x403e0b={};_0x403e0b[_0x27ca69]={'$like':'%'+_0x3dabd['query'][_0xf2d9('0x4d')]+'%'};return _0x403e0b;})});}_0x5709d6=_[_0xf2d9('0x45')]({},_0x5709d6,_0x3dabd['options']);return _0x2c4a50[_0xf2d9('0x4e')](_0x5709d6);}})['then'](function(_0x1c7243){if(_0x1c7243){_0x6c399d=_0x1c7243['length'];if(!_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x39')](_0xf2d9('0x3a'))){_0x5709d6['limit']=qs[_0xf2d9('0x1d')](_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x1d')]);_0x5709d6['offset']=qs[_0xf2d9('0x1b')](_0x3dabd['query']['offset']);}return _0x2c4a50[_0xf2d9('0x4e')](_0x5709d6);}})['then'](function(_0x3760a0){if(_0x3760a0){return _0x3760a0?{'count':_0x6c399d,'rows':_0x3760a0}:null;}})['then'](respondWithResult(_0x4bd373,null))['catch'](handleError(_0x4bd373,null));};exports['addConfiguration']=function(_0x2c74ed,_0x4fe6c0,_0x175486){if(_0x2c74ed[_0xf2d9('0x49')]['id']){delete _0x2c74ed['body']['id'];}return db[_0xf2d9('0x2c')][_0xf2d9('0x4b')]({'where':{'id':_0x2c74ed[_0xf2d9('0x4a')]['id']}})[_0xf2d9('0x25')](handleEntityNotFound(_0x4fe6c0,null))[_0xf2d9('0x25')](function(_0x3f209c){if(_0x3f209c){_0x2c74ed[_0xf2d9('0x49')][_0xf2d9('0x4f')]=_0x3f209c['id'];_0x2c74ed['body'][_0xf2d9('0x50')]=integrations[_0xf2d9('0x51')](_0x2c74ed['body'][_0xf2d9('0x52')],_0x2c74ed['body'][_0xf2d9('0x2f')]);_0x2c74ed[_0xf2d9('0x49')][_0xf2d9('0x53')]=integrations['getDescriptions'](_0x2c74ed[_0xf2d9('0x49')]['channel'],_0x2c74ed['body'][_0xf2d9('0x2f')]);return db[_0xf2d9('0x4c')]['create'](_0x2c74ed[_0xf2d9('0x49')],{'include':[{'model':db[_0xf2d9('0x54')],'as':_0xf2d9('0x50')},{'model':db[_0xf2d9('0x54')],'as':_0xf2d9('0x53')}]});}return null;})[_0xf2d9('0x25')](respondWithResult(_0x4fe6c0,null))[_0xf2d9('0x48')](handleError(_0x4fe6c0,null));};exports[_0xf2d9('0x55')]=function(_0x58528a,_0x11724c,_0x392b5e){var _0x4d3abf=[_0xf2d9('0x56'),'hold_reason',_0xf2d9('0x57'),_0xf2d9('0x58'),_0xf2d9('0x59'),_0xf2d9('0x5a'),'incident_state',_0xf2d9('0x5b'),_0xf2d9('0x5c')];var _0x11af21=[_0xf2d9('0x5d'),_0xf2d9('0x56'),_0xf2d9('0x5e'),_0xf2d9('0x5f'),_0xf2d9('0x60'),'sys_updated_on',_0xf2d9('0x61'),'hold_reason','approval_history',_0xf2d9('0x62'),'resolved_by',_0xf2d9('0x63'),_0xf2d9('0x64'),_0xf2d9('0x65'),_0xf2d9('0x66'),'sys_domain',_0xf2d9('0x67'),_0xf2d9('0x68'),_0xf2d9('0x57'),'order',_0xf2d9('0x69'),_0xf2d9('0x6a'),_0xf2d9('0x6b'),_0xf2d9('0x6c'),_0xf2d9('0x6d'),_0xf2d9('0x6e'),_0xf2d9('0x6f'),_0xf2d9('0x70'),_0xf2d9('0x71'),_0xf2d9('0x72'),_0xf2d9('0x73'),_0xf2d9('0x74'),'expected_start',_0xf2d9('0x75'),'business_duration',_0xf2d9('0x76'),_0xf2d9('0x77'),_0xf2d9('0x78'),_0xf2d9('0x79'),'caller_id','approval_set',_0xf2d9('0x58'),_0xf2d9('0x7a'),'short_description',_0xf2d9('0x59'),_0xf2d9('0x7b'),_0xf2d9('0x7c'),'work_start',_0xf2d9('0x7d'),_0xf2d9('0x7e'),_0xf2d9('0x7f'),_0xf2d9('0x80'),_0xf2d9('0x81'),'notify',_0xf2d9('0x82'),_0xf2d9('0x83'),_0xf2d9('0x84'),_0xf2d9('0x85'),'parent_incident','sys_id',_0xf2d9('0x86'),_0xf2d9('0x87'),_0xf2d9('0x88'),_0xf2d9('0x89'),_0xf2d9('0x8a'),_0xf2d9('0x8b'),'reassignment_count',_0xf2d9('0x8c'),_0xf2d9('0x8d'),_0xf2d9('0x5b'),_0xf2d9('0x8e'),_0xf2d9('0x8f'),_0xf2d9('0x90'),'comments_and_work_notes','due_date',_0xf2d9('0x91'),_0xf2d9('0x92'),_0xf2d9('0x93'),_0xf2d9('0x94'),_0xf2d9('0x95'),'correlation_id',_0xf2d9('0x96'),_0xf2d9('0x5c')];var _0x2fbf66='';var _0x3ea91b='';var _0x4d3547=[];var _0x81b417='';var _0xb8774c='';var _0x1fc8dd=[];var _0x41cc8e='';var _0x53e742='';var _0x2f3a0f={};var _0x561074='';return db[_0xf2d9('0x2c')][_0xf2d9('0x4b')]({'where':{'id':_0x58528a[_0xf2d9('0x4a')]['id']},'attributes':['id',_0xf2d9('0x97'),'password','email',_0xf2d9('0x98'),_0xf2d9('0x99')]})['then'](handleEntityNotFound(_0x11724c,null))[_0xf2d9('0x25')](function(_0x6615ed){if(_0x6615ed){_0x561074=_0x6615ed[_0xf2d9('0x98')];var _0x5e9e11=_0x561074['slice'](-0x1);if(_0x5e9e11==='/'){_0x561074=_0x561074[_0xf2d9('0x9a')](0x0,_0x561074[_0xf2d9('0x9b')](_0x5e9e11));}_0x53e742=util[_0xf2d9('0x9c')](_0xf2d9('0x9d'),_0x561074);_0x41cc8e=util[_0xf2d9('0x9c')]('%s/api/now/table/',_0x561074);_0x2f3a0f={'user':_0x6615ed[_0xf2d9('0x97')],'pass':_0x6615ed['password']};var _0xc26288={'method':_0xf2d9('0x9e'),'uri':_0x53e742+_0xf2d9('0x9f'),'auth':_0x2f3a0f,'json':!![]};return rp(_0xc26288);}})[_0xf2d9('0x25')](function(_0x27483a){if(_0x27483a[_0xf2d9('0xa0')][_0xf2d9('0x38')]>0x0){_0x2fbf66=_0x27483a[_0xf2d9('0xa0')];}console[_0xf2d9('0xa1')](_0xf2d9('0xa2'),_0x2fbf66);_0x1fc8dd=[];_0x3ea91b=Object['assign']([],_0x2fbf66);_[_0xf2d9('0xa3')](_0x3ea91b,function(_0x20b192){return!_0x4d3abf[_0xf2d9('0xa4')](_0x20b192[_0xf2d9('0x2a')]);});_0x3ea91b[_0xf2d9('0xa5')](function(_0x2ef28a){var _0x86fa34=createFieldObject(_0x41cc8e,_0x2f3a0f,_0x2ef28a['internalType'],_0x2ef28a[_0xf2d9('0x2a')],_0x2ef28a['label'],![]);_0x1fc8dd[_0xf2d9('0xa6')](_0x86fa34);});return Promise['all'](_0x1fc8dd);})[_0xf2d9('0x25')](function(_0x39c1f5){_0x4d3547=_0x39c1f5;_0x81b417=Object['assign']([],_0x2fbf66);console[_0xf2d9('0xa1')]('TCL:\x20_object',_0x2fbf66);_[_0xf2d9('0xa3')](_0x81b417,function(_0x2134dc){return _0x11af21['includes'](_0x2134dc['name']);});console['log']('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x81b417);_0x1fc8dd=[];_0x81b417[_0xf2d9('0xa5')](function(_0x16dee3){var _0x52bbae=createFieldObject(_0x41cc8e,_0x2f3a0f,_0x16dee3['internalType'],_0x16dee3[_0xf2d9('0x2a')],_0x16dee3[_0xf2d9('0xa7')],!![]);_0x1fc8dd[_0xf2d9('0xa6')](_0x52bbae);});return Promise[_0xf2d9('0xa8')](_0x1fc8dd);})[_0xf2d9('0x25')](function(_0xfce155){_0xb8774c=_0xfce155;var _0x2bf966=_0x4d3547[_0xf2d9('0xa9')](_0xb8774c);return{'count':_0x2bf966[_0xf2d9('0x38')],'rows':_0x2bf966};})[_0xf2d9('0x25')](respondWithResult(_0x11724c,null))['catch'](function(_0x20e2bc){console[_0xf2d9('0xa1')](_0xf2d9('0xaa')+_0x20e2bc);var _0x371a9b=_0x58528a[_0xf2d9('0x32')]['test']?0x1f4:_0x20e2bc[_0xf2d9('0xab')]||0x1f4;logger[_0xf2d9('0x29')](_0x20e2bc[_0xf2d9('0xac')]);delete _0x20e2bc[_0xf2d9('0x2a')];if(_0x371a9b===0x191){_0x371a9b=0x190;}_0x11724c[_0xf2d9('0x1a')](_0x371a9b)['send'](_0x58528a[_0xf2d9('0x32')][_0xf2d9('0xad')]?{'message':'Wrong\x20credentials','statusCode':_0x20e2bc[_0xf2d9('0xab')]}:_0x20e2bc);});};function createFieldObject(_0x32fd1b,_0x30d18f,_0x3e31f9,_0x5ba013,_0x5e2beb,_0x4c939f){return new Promise(function(_0x524372,_0x6137eb){var _0x3b4be1={'id':_0x5ba013,'name':_0x5e2beb,'custom':_0x4c939f};if(_0x3e31f9===_0xf2d9('0xae')){_0x3b4be1[_0xf2d9('0x3f')]=[{'name':_0xf2d9('0xaf'),'value':_0xf2d9('0xb0')},{'name':_0xf2d9('0xb1'),'value':'false'}];_0x524372(_0x3b4be1);}else{var _0x44705f={'method':_0xf2d9('0x9e'),'uri':_0x32fd1b+_0xf2d9('0xb2')+_0x5ba013,'auth':_0x30d18f,'json':!![]};return rp(_0x44705f)[_0xf2d9('0x25')](function(_0xe350da){var _0x1dd4e9=[];if(_0xe350da[_0xf2d9('0xa0')][_0xf2d9('0x38')]>0x0){_0xe350da[_0xf2d9('0xa0')][_0xf2d9('0xa5')](function(_0xb27aad){if(_0xb27aad[_0xf2d9('0xb3')]==='false'){var _0x16b250={'name':_0xb27aad[_0xf2d9('0xa7')],'value':_0xb27aad[_0xf2d9('0xb4')]};_0x1dd4e9[_0xf2d9('0xa6')](_0x16b250);}});}_0x3b4be1['options']=_0x1dd4e9;if(_0x3b4be1[_0xf2d9('0x3f')][_0xf2d9('0x38')]>0x0){_0x524372(_0x3b4be1);}else{if(_0x4c939f==![]){_0x524372();}else{_0x524372(_0x3b4be1);}}});}});}
\ No newline at end of file
+var _0xb7a1=['../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','destroy','error','stack','name','send','map','ServicenowAccount','rawAttributes','fieldName','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','findAll','rows','catch','show','params','length','find','create','body','getConfigurations','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','ServicenowConfiguration','ServicenowField','getFields','made_sla','knowledge','incident_state','severity','category','parent','caused_by','upon_reject','sys_updated_on','child_incidents','hold_reason','approval_history','number','sys_updated_by','user_input','sys_created_on','sys_domain','state','sys_created_by','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','sys_domain_path','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','close_code','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','activity_due','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','remoteUri','serverUrl','slice','%s/api/now/doc/table/schema/','%s/api/now/table/','username','password','result','log','incident\x20table\x20objects','remove','includes','forEach','internalType','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','test','Wrong\x20credentials','statusCode','boolean','True','true','False','false','GET','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x5f553b,_0x39f5ce){var _0x231fae=function(_0x1955b3){while(--_0x1955b3){_0x5f553b['push'](_0x5f553b['shift']());}};_0x231fae(++_0x39f5ce);}(_0xb7a1,0xa1));var _0x1b7a=function(_0x277e26,_0x19b85e){_0x277e26=_0x277e26-0x0;var _0xd99367=_0xb7a1[_0x277e26];return _0xd99367;};'use strict';var emlformat=require(_0x1b7a('0x0'));var rimraf=require(_0x1b7a('0x1'));var zipdir=require(_0x1b7a('0x2'));var jsonpatch=require(_0x1b7a('0x3'));var rp=require(_0x1b7a('0x4'));var moment=require(_0x1b7a('0x5'));var BPromise=require(_0x1b7a('0x6'));var Mustache=require(_0x1b7a('0x7'));var util=require(_0x1b7a('0x8'));var path=require('path');var sox=require(_0x1b7a('0x9'));var csv=require(_0x1b7a('0xa'));var ejs=require(_0x1b7a('0xb'));var fs=require('fs');var fs_extra=require(_0x1b7a('0xc'));var _=require('lodash');var squel=require(_0x1b7a('0xd'));var crypto=require(_0x1b7a('0xe'));var jsforce=require(_0x1b7a('0xf'));var deskjs=require(_0x1b7a('0x10'));var toCsv=require(_0x1b7a('0xa'));var querystring=require(_0x1b7a('0x11'));var Papa=require(_0x1b7a('0x12'));var Redis=require(_0x1b7a('0x13'));var authService=require(_0x1b7a('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1b7a('0x15'));var logger=require(_0x1b7a('0x16'))(_0x1b7a('0x17'));var utils=require(_0x1b7a('0x18'));var config=require(_0x1b7a('0x19'));var licenseUtil=require(_0x1b7a('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x1b7a('0x1b'));function respondWithStatusCode(_0x2adb12,_0x1da300){_0x1da300=_0x1da300||0xcc;return function(_0x572302){if(_0x572302){return _0x2adb12[_0x1b7a('0x1c')](_0x1da300);}return _0x2adb12[_0x1b7a('0x1d')](_0x1da300)[_0x1b7a('0x1e')]();};}function respondWithResult(_0x39a551,_0x22afc9){_0x22afc9=_0x22afc9||0xc8;return function(_0x2be335){if(_0x2be335){return _0x39a551[_0x1b7a('0x1d')](_0x22afc9)[_0x1b7a('0x1f')](_0x2be335);}};}function respondWithFilteredResult(_0x3daa25,_0x222ebb){return function(_0x2d622b){if(_0x2d622b){var _0x11fba8=typeof _0x222ebb[_0x1b7a('0x20')]===_0x1b7a('0x21')&&typeof _0x222ebb['limit']===_0x1b7a('0x21');var _0x57f40c=_0x2d622b['count'];var _0x8067ff=_0x11fba8?0x0:_0x222ebb['offset'];var _0x8c0d13=_0x11fba8?_0x2d622b[_0x1b7a('0x22')]:_0x222ebb[_0x1b7a('0x20')]+_0x222ebb['limit'];var _0x50b842;if(_0x8c0d13>=_0x57f40c){_0x8c0d13=_0x57f40c;_0x50b842=0xc8;}else{_0x50b842=0xce;}_0x3daa25[_0x1b7a('0x1d')](_0x50b842);return _0x3daa25[_0x1b7a('0x23')](_0x1b7a('0x24'),_0x8067ff+'-'+_0x8c0d13+'/'+_0x57f40c)['json'](_0x2d622b);}return null;};}function patchUpdates(_0x43345a){return function(_0x1419aa){try{jsonpatch['apply'](_0x1419aa,_0x43345a,!![]);}catch(_0x6a6843){return BPromise[_0x1b7a('0x25')](_0x6a6843);}return _0x1419aa[_0x1b7a('0x26')]();};}function saveUpdates(_0x246ffb,_0x5a8f5c){return function(_0x5a4e92){if(_0x5a4e92){return _0x5a4e92[_0x1b7a('0x27')](_0x246ffb)['then'](function(_0x55ebd0){return _0x55ebd0;});}return null;};}function removeEntity(_0x1977c8,_0x3e1dec){return function(_0x1efd41){if(_0x1efd41){return _0x1efd41[_0x1b7a('0x28')]()['then'](function(){_0x1977c8[_0x1b7a('0x1d')](0xcc)[_0x1b7a('0x1e')]();});}};}function handleEntityNotFound(_0x13cba5,_0x2122af){return function(_0x12f899){if(!_0x12f899){_0x13cba5[_0x1b7a('0x1c')](0x194);}return _0x12f899;};}function handleError(_0x2ee5a2,_0x58d637){_0x58d637=_0x58d637||0x1f4;return function(_0x439187){logger[_0x1b7a('0x29')](_0x439187[_0x1b7a('0x2a')]);if(_0x439187['name']){delete _0x439187[_0x1b7a('0x2b')];}_0x2ee5a2[_0x1b7a('0x1d')](_0x58d637)[_0x1b7a('0x2c')](_0x439187);};}exports['index']=function(_0x3425b5,_0x1b9ce5){var _0x160e39={},_0x1e218d={},_0x4499f8={'count':0x0,'rows':[]};var _0xb02821=_[_0x1b7a('0x2d')](db[_0x1b7a('0x2e')][_0x1b7a('0x2f')],function(_0x5d8cd4){return{'name':_0x5d8cd4[_0x1b7a('0x30')],'type':_0x5d8cd4['type']['key']};});_0x1e218d['model']=_[_0x1b7a('0x2d')](_0xb02821,'name');_0x1e218d['query']=_[_0x1b7a('0x31')](_0x3425b5[_0x1b7a('0x32')]);_0x1e218d[_0x1b7a('0x33')]=_[_0x1b7a('0x34')](_0x1e218d[_0x1b7a('0x35')],_0x1e218d['query']);_0x160e39[_0x1b7a('0x36')]=_[_0x1b7a('0x34')](_0x1e218d['model'],qs['fields'](_0x3425b5[_0x1b7a('0x32')][_0x1b7a('0x37')]));_0x160e39['attributes']=_0x160e39[_0x1b7a('0x36')]['length']?_0x160e39[_0x1b7a('0x36')]:_0x1e218d[_0x1b7a('0x35')];if(!_0x3425b5[_0x1b7a('0x32')][_0x1b7a('0x38')](_0x1b7a('0x39'))){_0x160e39[_0x1b7a('0x3a')]=qs[_0x1b7a('0x3a')](_0x3425b5[_0x1b7a('0x32')]['limit']);_0x160e39[_0x1b7a('0x20')]=qs['offset'](_0x3425b5['query'][_0x1b7a('0x20')]);}_0x160e39[_0x1b7a('0x3b')]=qs[_0x1b7a('0x3c')](_0x3425b5[_0x1b7a('0x32')]['sort']);_0x160e39[_0x1b7a('0x3d')]=qs['filters'](_[_0x1b7a('0x3e')](_0x3425b5[_0x1b7a('0x32')],_0x1e218d['filters']),_0xb02821);if(_0x3425b5[_0x1b7a('0x32')][_0x1b7a('0x3f')]){_0x160e39['where']=_[_0x1b7a('0x40')](_0x160e39[_0x1b7a('0x3d')],{'$or':_[_0x1b7a('0x2d')](_0xb02821,function(_0x56408a){if(_0x56408a[_0x1b7a('0x41')]!==_0x1b7a('0x42')){var _0x98f5c4={};_0x98f5c4[_0x56408a[_0x1b7a('0x2b')]]={'$like':'%'+_0x3425b5[_0x1b7a('0x32')][_0x1b7a('0x3f')]+'%'};return _0x98f5c4;}})});}_0x160e39=_[_0x1b7a('0x40')]({},_0x160e39,_0x3425b5[_0x1b7a('0x43')]);var _0x492b47={'where':_0x160e39[_0x1b7a('0x3d')]};return db[_0x1b7a('0x2e')][_0x1b7a('0x22')](_0x492b47)[_0x1b7a('0x44')](function(_0x4316f8){_0x4499f8[_0x1b7a('0x22')]=_0x4316f8;if(_0x3425b5['query'][_0x1b7a('0x45')]){_0x160e39['include']=[{'all':!![]}];}return db[_0x1b7a('0x2e')][_0x1b7a('0x46')](_0x160e39);})['then'](function(_0x4cd994){_0x4499f8[_0x1b7a('0x47')]=_0x4cd994;return _0x4499f8;})[_0x1b7a('0x44')](respondWithFilteredResult(_0x1b9ce5,_0x160e39))[_0x1b7a('0x48')](handleError(_0x1b9ce5,null));};exports[_0x1b7a('0x49')]=function(_0x15a82d,_0x892667){var _0x36b803={'raw':![],'where':{'id':_0x15a82d[_0x1b7a('0x4a')]['id']}},_0x1c8d29={};_0x1c8d29[_0x1b7a('0x35')]=_[_0x1b7a('0x31')](db[_0x1b7a('0x2e')][_0x1b7a('0x2f')]);_0x1c8d29['query']=_[_0x1b7a('0x31')](_0x15a82d['query']);_0x1c8d29[_0x1b7a('0x33')]=_[_0x1b7a('0x34')](_0x1c8d29[_0x1b7a('0x35')],_0x1c8d29[_0x1b7a('0x32')]);_0x36b803[_0x1b7a('0x36')]=_[_0x1b7a('0x34')](_0x1c8d29[_0x1b7a('0x35')],qs[_0x1b7a('0x37')](_0x15a82d[_0x1b7a('0x32')][_0x1b7a('0x37')]));_0x36b803[_0x1b7a('0x36')]=_0x36b803[_0x1b7a('0x36')][_0x1b7a('0x4b')]?_0x36b803[_0x1b7a('0x36')]:_0x1c8d29['model'];if(_0x15a82d['query'][_0x1b7a('0x45')]){_0x36b803['include']=[{'all':!![]}];}_0x36b803=_[_0x1b7a('0x40')]({},_0x36b803,_0x15a82d[_0x1b7a('0x43')]);return db[_0x1b7a('0x2e')][_0x1b7a('0x4c')](_0x36b803)[_0x1b7a('0x44')](handleEntityNotFound(_0x892667,null))[_0x1b7a('0x44')](respondWithResult(_0x892667,null))[_0x1b7a('0x48')](handleError(_0x892667,null));};exports[_0x1b7a('0x4d')]=function(_0x96fd64,_0x35dabe){return db['ServicenowAccount'][_0x1b7a('0x4d')](_0x96fd64['body'],{})['then'](respondWithResult(_0x35dabe,0xc9))[_0x1b7a('0x48')](handleError(_0x35dabe,null));};exports['update']=function(_0x959adf,_0x7299af){if(_0x959adf['body']['id']){delete _0x959adf[_0x1b7a('0x4e')]['id'];}return db[_0x1b7a('0x2e')][_0x1b7a('0x4c')]({'where':{'id':_0x959adf[_0x1b7a('0x4a')]['id']}})[_0x1b7a('0x44')](handleEntityNotFound(_0x7299af,null))['then'](saveUpdates(_0x959adf['body'],null))[_0x1b7a('0x44')](respondWithResult(_0x7299af,null))['catch'](handleError(_0x7299af,null));};exports[_0x1b7a('0x28')]=function(_0x478dd1,_0x3cde8a){return db['ServicenowAccount'][_0x1b7a('0x4c')]({'where':{'id':_0x478dd1[_0x1b7a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3cde8a,null))[_0x1b7a('0x44')](removeEntity(_0x3cde8a,null))['catch'](handleError(_0x3cde8a,null));};exports[_0x1b7a('0x4f')]=function(_0xdaeb13,_0x413378,_0x176755){var _0x344928={};var _0x173bb4={};var _0x487f32;var _0x31f091;return db[_0x1b7a('0x2e')][_0x1b7a('0x50')]({'where':{'id':_0xdaeb13[_0x1b7a('0x4a')]['id']}})[_0x1b7a('0x44')](handleEntityNotFound(_0x413378,null))[_0x1b7a('0x44')](function(_0x35408f){if(_0x35408f){_0x487f32=_0x35408f;_0x173bb4[_0x1b7a('0x35')]=_[_0x1b7a('0x31')](db['ServicenowConfiguration'][_0x1b7a('0x2f')]);_0x173bb4[_0x1b7a('0x32')]=_[_0x1b7a('0x31')](_0xdaeb13['query']);_0x173bb4[_0x1b7a('0x33')]=_[_0x1b7a('0x34')](_0x173bb4[_0x1b7a('0x35')],_0x173bb4['query']);_0x344928[_0x1b7a('0x36')]=_[_0x1b7a('0x34')](_0x173bb4[_0x1b7a('0x35')],qs['fields'](_0xdaeb13[_0x1b7a('0x32')][_0x1b7a('0x37')]));_0x344928['attributes']=_0x344928[_0x1b7a('0x36')][_0x1b7a('0x4b')]?_0x344928[_0x1b7a('0x36')]:_0x173bb4[_0x1b7a('0x35')];_0x344928['order']=qs[_0x1b7a('0x3c')](_0xdaeb13[_0x1b7a('0x32')]['sort']);_0x344928[_0x1b7a('0x3d')]=qs[_0x1b7a('0x33')](_['pick'](_0xdaeb13[_0x1b7a('0x32')],_0x173bb4[_0x1b7a('0x33')]));if(_0xdaeb13['query'][_0x1b7a('0x3f')]){_0x344928['where']=_['merge'](_0x344928[_0x1b7a('0x3d')],{'$or':_[_0x1b7a('0x2d')](_0x344928[_0x1b7a('0x36')],function(_0x47b3b5){var _0x1bd423={};_0x1bd423[_0x47b3b5]={'$like':'%'+_0xdaeb13[_0x1b7a('0x32')]['filter']+'%'};return _0x1bd423;})});}_0x344928=_[_0x1b7a('0x40')]({},_0x344928,_0xdaeb13[_0x1b7a('0x43')]);return _0x487f32['getConfigurations'](_0x344928);}})[_0x1b7a('0x44')](function(_0x273f2e){if(_0x273f2e){_0x31f091=_0x273f2e[_0x1b7a('0x4b')];if(!_0xdaeb13[_0x1b7a('0x32')]['hasOwnProperty'](_0x1b7a('0x39'))){_0x344928['limit']=qs[_0x1b7a('0x3a')](_0xdaeb13[_0x1b7a('0x32')][_0x1b7a('0x3a')]);_0x344928[_0x1b7a('0x20')]=qs['offset'](_0xdaeb13[_0x1b7a('0x32')]['offset']);}return _0x487f32[_0x1b7a('0x4f')](_0x344928);}})[_0x1b7a('0x44')](function(_0x629456){if(_0x629456){return _0x629456?{'count':_0x31f091,'rows':_0x629456}:null;}})['then'](respondWithResult(_0x413378,null))[_0x1b7a('0x48')](handleError(_0x413378,null));};exports['addConfiguration']=function(_0x127147,_0x37c352,_0x2ae280){if(_0x127147[_0x1b7a('0x4e')]['id']){delete _0x127147['body']['id'];}return db[_0x1b7a('0x2e')][_0x1b7a('0x50')]({'where':{'id':_0x127147[_0x1b7a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x37c352,null))[_0x1b7a('0x44')](function(_0x1a902f){if(_0x1a902f){_0x127147[_0x1b7a('0x4e')][_0x1b7a('0x51')]=_0x1a902f['id'];_0x127147['body'][_0x1b7a('0x52')]=integrations[_0x1b7a('0x53')](_0x127147[_0x1b7a('0x4e')][_0x1b7a('0x54')],_0x127147[_0x1b7a('0x4e')][_0x1b7a('0x41')]);_0x127147[_0x1b7a('0x4e')][_0x1b7a('0x55')]=integrations['getDescriptions'](_0x127147['body'][_0x1b7a('0x54')],_0x127147['body'][_0x1b7a('0x41')]);return db[_0x1b7a('0x56')][_0x1b7a('0x4d')](_0x127147[_0x1b7a('0x4e')],{'include':[{'model':db[_0x1b7a('0x57')],'as':_0x1b7a('0x52')},{'model':db[_0x1b7a('0x57')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x37c352,null))[_0x1b7a('0x48')](handleError(_0x37c352,null));};exports[_0x1b7a('0x58')]=function(_0x1f340f,_0x1968e3,_0x12b1e3){var _0x4f249b=[_0x1b7a('0x59'),'hold_reason',_0x1b7a('0x5a'),'subcategory','close_code','notify',_0x1b7a('0x5b'),_0x1b7a('0x5c'),_0x1b7a('0x5d')];var _0x40bacb=[_0x1b7a('0x5e'),'made_sla',_0x1b7a('0x5f'),'watch_list',_0x1b7a('0x60'),_0x1b7a('0x61'),_0x1b7a('0x62'),_0x1b7a('0x63'),_0x1b7a('0x64'),_0x1b7a('0x65'),'resolved_by',_0x1b7a('0x66'),'opened_by',_0x1b7a('0x67'),_0x1b7a('0x68'),_0x1b7a('0x69'),_0x1b7a('0x6a'),_0x1b7a('0x6b'),'knowledge',_0x1b7a('0x3b'),'calendar_stc',_0x1b7a('0x6c'),_0x1b7a('0x6d'),_0x1b7a('0x6e'),_0x1b7a('0x6f'),_0x1b7a('0x70'),_0x1b7a('0x71'),_0x1b7a('0x72'),'priority',_0x1b7a('0x73'),'rfc',_0x1b7a('0x74'),_0x1b7a('0x75'),_0x1b7a('0x76'),_0x1b7a('0x77'),_0x1b7a('0x78'),'work_end',_0x1b7a('0x79'),_0x1b7a('0x7a'),_0x1b7a('0x7b'),_0x1b7a('0x7c'),'subcategory',_0x1b7a('0x7d'),_0x1b7a('0x7e'),_0x1b7a('0x7f'),'correlation_display','delivery_task',_0x1b7a('0x80'),_0x1b7a('0x81'),_0x1b7a('0x82'),_0x1b7a('0x83'),_0x1b7a('0x84'),_0x1b7a('0x85'),_0x1b7a('0x86'),_0x1b7a('0x87'),_0x1b7a('0x88'),_0x1b7a('0x89'),_0x1b7a('0x8a'),_0x1b7a('0x8b'),_0x1b7a('0x8c'),_0x1b7a('0x8d'),_0x1b7a('0x8e'),_0x1b7a('0x5b'),'urgency','problem_id','company','reassignment_count',_0x1b7a('0x8f'),'assigned_to',_0x1b7a('0x5c'),_0x1b7a('0x90'),_0x1b7a('0x91'),_0x1b7a('0x92'),_0x1b7a('0x93'),_0x1b7a('0x94'),_0x1b7a('0x95'),_0x1b7a('0x96'),_0x1b7a('0x97'),_0x1b7a('0x98'),_0x1b7a('0x99'),_0x1b7a('0x9a'),_0x1b7a('0x9b'),_0x1b7a('0x5d')];var _0x357f1b='';var _0x2bdbd8='';var _0x3779b3=[];var _0xaad193='';var _0x5a4bdc='';var _0x3cf62f=[];var _0x53afba='';var _0x110692='';var _0x13789b={};var _0x21c892='';return db[_0x1b7a('0x2e')]['findOne']({'where':{'id':_0x1f340f[_0x1b7a('0x4a')]['id']},'attributes':['id','username','password','email',_0x1b7a('0x9c'),_0x1b7a('0x9d')]})[_0x1b7a('0x44')](handleEntityNotFound(_0x1968e3,null))[_0x1b7a('0x44')](function(_0x72f324){if(_0x72f324){_0x21c892=_0x72f324[_0x1b7a('0x9c')];var _0x44a521=_0x21c892[_0x1b7a('0x9e')](-0x1);if(_0x44a521==='/'){_0x21c892=_0x21c892['substring'](0x0,_0x21c892['lastIndexOf'](_0x44a521));}_0x110692=util['format'](_0x1b7a('0x9f'),_0x21c892);_0x53afba=util['format'](_0x1b7a('0xa0'),_0x21c892);_0x13789b={'user':_0x72f324[_0x1b7a('0xa1')],'pass':_0x72f324[_0x1b7a('0xa2')]};var _0x1adad2={'method':'GET','uri':_0x110692+'incident?sysparm_display_value=all','auth':_0x13789b,'json':!![]};return rp(_0x1adad2);}})[_0x1b7a('0x44')](function(_0x2b9731){if(_0x2b9731[_0x1b7a('0xa3')]['length']>0x0){_0x357f1b=_0x2b9731[_0x1b7a('0xa3')];}console[_0x1b7a('0xa4')](_0x1b7a('0xa5'),_0x357f1b);_0x3cf62f=[];_0x2bdbd8=Object['assign']([],_0x357f1b);_[_0x1b7a('0xa6')](_0x2bdbd8,function(_0x165961){return!_0x4f249b[_0x1b7a('0xa7')](_0x165961[_0x1b7a('0x2b')]);});_0x2bdbd8[_0x1b7a('0xa8')](function(_0x369bd9){var _0x3b0669=createFieldObject(_0x53afba,_0x13789b,_0x369bd9[_0x1b7a('0xa9')],_0x369bd9[_0x1b7a('0x2b')],_0x369bd9[_0x1b7a('0xaa')],![]);_0x3cf62f[_0x1b7a('0xab')](_0x3b0669);});return Promise[_0x1b7a('0xac')](_0x3cf62f);})['then'](function(_0x24a643){_0x3779b3=_0x24a643;_0xaad193=Object['assign']([],_0x357f1b);console[_0x1b7a('0xa4')](_0x1b7a('0xad'),_0x357f1b);_['remove'](_0xaad193,function(_0x494222){return _0x40bacb[_0x1b7a('0xa7')](_0x494222[_0x1b7a('0x2b')]);});console[_0x1b7a('0xa4')](_0x1b7a('0xae'),_0xaad193);_0x3cf62f=[];_0xaad193[_0x1b7a('0xa8')](function(_0x2baf03){var _0x34d354=createFieldObject(_0x53afba,_0x13789b,_0x2baf03['internalType'],_0x2baf03['name'],_0x2baf03['label'],!![]);_0x3cf62f['push'](_0x34d354);});return Promise[_0x1b7a('0xac')](_0x3cf62f);})[_0x1b7a('0x44')](function(_0x41bf5a){_0x5a4bdc=_0x41bf5a;var _0x4d1918=_0x3779b3[_0x1b7a('0xaf')](_0x5a4bdc);return{'count':_0x4d1918[_0x1b7a('0x4b')],'rows':_0x4d1918};})[_0x1b7a('0x44')](respondWithResult(_0x1968e3,null))[_0x1b7a('0x48')](function(_0x4ec0dc){console[_0x1b7a('0xa4')]('ServiceNow\x20error:\x20'+_0x4ec0dc);var _0x210b8e=_0x1f340f[_0x1b7a('0x32')][_0x1b7a('0xb0')]?0x1f4:_0x4ec0dc['statusCode']||0x1f4;logger[_0x1b7a('0x29')](_0x4ec0dc['stack']);delete _0x4ec0dc['name'];if(_0x210b8e===0x191){_0x210b8e=0x190;}_0x1968e3['status'](_0x210b8e)[_0x1b7a('0x2c')](_0x1f340f[_0x1b7a('0x32')][_0x1b7a('0xb0')]?{'message':_0x1b7a('0xb1'),'statusCode':_0x4ec0dc[_0x1b7a('0xb2')]}:_0x4ec0dc);});};function createFieldObject(_0x1cef61,_0x966fe8,_0x35bb86,_0x5ff270,_0x53428a,_0x5e8262){return new Promise(function(_0x4796d,_0x279400){var _0x3bb441={'id':_0x5ff270,'name':_0x53428a,'custom':_0x5e8262};if(_0x35bb86===_0x1b7a('0xb3')){_0x3bb441['options']=[{'name':_0x1b7a('0xb4'),'value':_0x1b7a('0xb5')},{'name':_0x1b7a('0xb6'),'value':_0x1b7a('0xb7')}];_0x4796d(_0x3bb441);}else{var _0x4a79b3={'method':_0x1b7a('0xb8'),'uri':_0x1cef61+_0x1b7a('0xb9')+_0x5ff270,'auth':_0x966fe8,'json':!![]};return rp(_0x4a79b3)['then'](function(_0x1f20f8){var _0xbb9f37=[];if(_0x1f20f8[_0x1b7a('0xa3')][_0x1b7a('0x4b')]>0x0){_0x1f20f8[_0x1b7a('0xa3')][_0x1b7a('0xa8')](function(_0x136a93){if(_0x136a93[_0x1b7a('0xba')]==='false'){var _0x43635e={'name':_0x136a93[_0x1b7a('0xaa')],'value':_0x136a93[_0x1b7a('0xbb')]};_0xbb9f37[_0x1b7a('0xab')](_0x43635e);}});}_0x3bb441[_0x1b7a('0x43')]=_0xbb9f37;if(_0x3bb441['options'][_0x1b7a('0x4b')]>0x0){_0x4796d(_0x3bb441);}else{if(_0x5e8262==![]){_0x4796d();}else{_0x4796d(_0x3bb441);}}});}});}
\ No newline at end of file
index 7bd5930..e211cfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['exports','define','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x12546c,_0x4678e2){_0x12546c=_0x12546c-0x0;var _0x49815b=_0x3f8a[_0x12546c];return _0x49815b;};'use strict';var _=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var logger=require(_0xa3f8('0x2'))(_0xa3f8('0x3'));var moment=require('moment');var BPromise=require(_0xa3f8('0x4'));var rp=require(_0xa3f8('0x5'));var fs=require('fs');var path=require(_0xa3f8('0x6'));var rimraf=require(_0xa3f8('0x7'));var config=require(_0xa3f8('0x8'));var attributes=require(_0xa3f8('0x9'));var integrations=require(_0xa3f8('0xa'));module[_0xa3f8('0xb')]=function(_0x1f160a,_0xf895d9){return _0x1f160a[_0xa3f8('0xc')](_0xa3f8('0xd'),attributes,{'tableName':_0xa3f8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c09=['rimraf','../../config/environment','./intServicenowAccount.attributes','define','ServicenowAccount','int_servicenow_accounts','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x34646f,_0x55a313){var _0x490624=function(_0x327c4f){while(--_0x327c4f){_0x34646f['push'](_0x34646f['shift']());}};_0x490624(++_0x55a313);}(_0x7c09,0x102));var _0x97c0=function(_0x1d3a31,_0xc57aec){_0x1d3a31=_0x1d3a31-0x0;var _0x8a808e=_0x7c09[_0x1d3a31];return _0x8a808e;};'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'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x590368,_0x46fdd9){return _0x590368[_0x97c0('0x9')](_0x97c0('0xa'),attributes,{'tableName':_0x97c0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df9a63e..ccf3ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a8=['ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ServicenowAccount','findAll','options','raw','limit','include','map','model','attributes','then','ShowServicenowAccount','find','where','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','info'];(function(_0x34f1c4,_0x1d0736){var _0x5d7051=function(_0x2a58ce){while(--_0x2a58ce){_0x34f1c4['push'](_0x34f1c4['shift']());}};_0x5d7051(++_0x1d0736);}(_0x15a8,0x7a));var _0x815a=function(_0x527cf0,_0x329e83){_0x527cf0=_0x527cf0-0x0;var _0x2db70e=_0x15a8[_0x527cf0];return _0x2db70e;};'use strict';var _=require(_0x815a('0x0'));var util=require('util');var moment=require(_0x815a('0x1'));var BPromise=require('bluebird');var rs=require(_0x815a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x815a('0x3'))['db'];var utils=require(_0x815a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x815a('0x5'));var jayson=require(_0x815a('0x6'));var client=jayson[_0x815a('0x7')][_0x815a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dc0a2,_0x39f205,_0x3bb60e){return new BPromise(function(_0x1ac219,_0x2638f1){return client['request'](_0x4dc0a2,_0x3bb60e)['then'](function(_0x2b0190){logger[_0x815a('0x9')](_0x815a('0xa'),_0x39f205,_0x815a('0xb'));logger[_0x815a('0xc')](_0x815a('0xd'),_0x39f205,_0x815a('0xb'),JSON[_0x815a('0xe')](_0x2b0190));if(_0x2b0190[_0x815a('0xf')]){if(_0x2b0190['error'][_0x815a('0x10')]===0x1f4){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x39f205,_0x2b0190[_0x815a('0xf')][_0x815a('0x11')]);return _0x2638f1(_0x2b0190[_0x815a('0xf')]['message']);}logger[_0x815a('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0x39f205,_0x2b0190['error']['message']);return _0x1ac219(_0x2b0190[_0x815a('0xf')][_0x815a('0x11')]);}else{logger[_0x815a('0x9')](_0x815a('0xa'),_0x39f205,'request\x20sent');_0x1ac219(_0x2b0190[_0x815a('0x12')][_0x815a('0x11')]);}})[_0x815a('0x13')](function(_0x417bc2){logger[_0x815a('0xf')](_0x815a('0xa'),_0x39f205,_0x417bc2);_0x2638f1(_0x417bc2);});});}exports['GetServicenowAccount']=function(_0x528fbd){var _0x2e96e8=this;return new Promise(function(_0xd563b6,_0x4c77dd){return db[_0x815a('0x14')][_0x815a('0x15')]({'raw':_0x528fbd['options']?_0x528fbd[_0x815a('0x16')][_0x815a('0x17')]===undefined?!![]:![]:!![],'where':_0x528fbd[_0x815a('0x16')]?_0x528fbd['options']['where']||null:null,'attributes':_0x528fbd[_0x815a('0x16')]?_0x528fbd[_0x815a('0x16')]['attributes']||null:null,'limit':_0x528fbd[_0x815a('0x16')]?_0x528fbd[_0x815a('0x16')][_0x815a('0x18')]||null:null,'include':_0x528fbd['options']?_0x528fbd[_0x815a('0x16')][_0x815a('0x19')]?_[_0x815a('0x1a')](_0x528fbd[_0x815a('0x16')][_0x815a('0x19')],function(_0xf17c87){return{'model':db[_0xf17c87[_0x815a('0x1b')]],'as':_0xf17c87['as'],'attributes':_0xf17c87[_0x815a('0x1c')],'include':_0xf17c87[_0x815a('0x19')]?_['map'](_0xf17c87[_0x815a('0x19')],function(_0x82e532){return{'model':db[_0x82e532[_0x815a('0x1b')]],'as':_0x82e532['as'],'attributes':_0x82e532['attributes'],'include':_0x82e532[_0x815a('0x19')]?_['map'](_0x82e532['include'],function(_0x36bafb){return{'model':db[_0x36bafb['model']],'as':_0x36bafb['as'],'attributes':_0x36bafb[_0x815a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x815a('0x1d')](function(_0x14995c){logger[_0x815a('0x9')]('GetServicenowAccount',_0x528fbd);logger[_0x815a('0xc')]('GetServicenowAccount',_0x528fbd,JSON[_0x815a('0xe')](_0x14995c));_0xd563b6(_0x14995c);})['catch'](function(_0x381d86){logger[_0x815a('0xf')]('GetServicenowAccount',_0x381d86[_0x815a('0x11')],_0x528fbd);_0x4c77dd(_0x2e96e8['error'](0x1f4,_0x381d86['message']));});});};exports[_0x815a('0x1e')]=function(_0x49b852){var _0x49617e=this;return new Promise(function(_0x213abb,_0x253647){return db['ServicenowAccount'][_0x815a('0x1f')]({'raw':_0x49b852[_0x815a('0x16')]?_0x49b852['options'][_0x815a('0x17')]===undefined?!![]:![]:!![],'where':_0x49b852[_0x815a('0x16')]?_0x49b852[_0x815a('0x16')][_0x815a('0x20')]||null:null,'attributes':_0x49b852['options']?_0x49b852[_0x815a('0x16')][_0x815a('0x1c')]||null:null,'include':_0x49b852[_0x815a('0x16')]?_0x49b852[_0x815a('0x16')][_0x815a('0x19')]?_[_0x815a('0x1a')](_0x49b852[_0x815a('0x16')][_0x815a('0x19')],function(_0x45d0ee){return{'model':db[_0x45d0ee[_0x815a('0x1b')]],'as':_0x45d0ee['as'],'attributes':_0x45d0ee[_0x815a('0x1c')],'include':_0x45d0ee[_0x815a('0x19')]?_[_0x815a('0x1a')](_0x45d0ee['include'],function(_0x3bcaba){return{'model':db[_0x3bcaba[_0x815a('0x1b')]],'as':_0x3bcaba['as'],'attributes':_0x3bcaba[_0x815a('0x1c')],'include':_0x3bcaba[_0x815a('0x19')]?_[_0x815a('0x1a')](_0x3bcaba['include'],function(_0x1b6417){return{'model':db[_0x1b6417[_0x815a('0x1b')]],'as':_0x1b6417['as'],'attributes':_0x1b6417['attributes']};}):[]};}):[]};}):[]:[]})[_0x815a('0x1d')](function(_0x13bc34){logger[_0x815a('0x9')](_0x815a('0x1e'),_0x49b852);logger[_0x815a('0xc')]('ShowServicenowAccount',_0x49b852,JSON[_0x815a('0xe')](_0x13bc34));_0x213abb(_0x13bc34);})[_0x815a('0x13')](function(_0x15653d){logger[_0x815a('0xf')](_0x815a('0x1e'),_0x15653d[_0x815a('0x11')],_0x49b852);_0x253647(_0x49617e[_0x815a('0xf')](0x1f4,_0x15653d[_0x815a('0x11')]));});});};
\ No newline at end of file
+var _0xdc4a=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','map','include','model','attributes','then','catch','ShowServicenowAccount','find','lodash','randomstring'];(function(_0x2f3837,_0x468309){var _0x528df5=function(_0x1a7171){while(--_0x1a7171){_0x2f3837['push'](_0x2f3837['shift']());}};_0x528df5(++_0x468309);}(_0xdc4a,0x9e));var _0xadc4=function(_0x407de2,_0x1f3992){_0x407de2=_0x407de2-0x0;var _0xfd6d4b=_0xdc4a[_0x407de2];return _0xfd6d4b;};'use strict';var _=require(_0xadc4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xadc4('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xadc4('0x2'))['db'];var utils=require(_0xadc4('0x3'));var logger=require(_0xadc4('0x4'))('rpc');var config=require(_0xadc4('0x5'));var jayson=require(_0xadc4('0x6'));var client=jayson[_0xadc4('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2784c2,_0x4cff0a,_0x4de259){return new BPromise(function(_0x2b4d19,_0x49364f){return client[_0xadc4('0x8')](_0x2784c2,_0x4de259)['then'](function(_0x4008b6){logger[_0xadc4('0x9')](_0xadc4('0xa'),_0x4cff0a,_0xadc4('0xb'));logger[_0xadc4('0xc')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x4cff0a,_0xadc4('0xb'),JSON[_0xadc4('0xd')](_0x4008b6));if(_0x4008b6[_0xadc4('0xe')]){if(_0x4008b6[_0xadc4('0xe')][_0xadc4('0xf')]===0x1f4){logger[_0xadc4('0xe')](_0xadc4('0xa'),_0x4cff0a,_0x4008b6[_0xadc4('0xe')]['message']);return _0x49364f(_0x4008b6['error'][_0xadc4('0x10')]);}logger[_0xadc4('0xe')](_0xadc4('0xa'),_0x4cff0a,_0x4008b6[_0xadc4('0xe')]['message']);return _0x2b4d19(_0x4008b6['error']['message']);}else{logger[_0xadc4('0x9')](_0xadc4('0xa'),_0x4cff0a,'request\x20sent');_0x2b4d19(_0x4008b6[_0xadc4('0x11')][_0xadc4('0x10')]);}})['catch'](function(_0x1d58d8){logger[_0xadc4('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x4cff0a,_0x1d58d8);_0x49364f(_0x1d58d8);});});}exports[_0xadc4('0x12')]=function(_0x4a84c6){var _0x2c3635=this;return new Promise(function(_0x20080f,_0x49f011){return db[_0xadc4('0x13')][_0xadc4('0x14')]({'raw':_0x4a84c6[_0xadc4('0x15')]?_0x4a84c6[_0xadc4('0x15')][_0xadc4('0x16')]===undefined?!![]:![]:!![],'where':_0x4a84c6[_0xadc4('0x15')]?_0x4a84c6[_0xadc4('0x15')][_0xadc4('0x17')]||null:null,'attributes':_0x4a84c6[_0xadc4('0x15')]?_0x4a84c6[_0xadc4('0x15')]['attributes']||null:null,'limit':_0x4a84c6[_0xadc4('0x15')]?_0x4a84c6[_0xadc4('0x15')]['limit']||null:null,'include':_0x4a84c6[_0xadc4('0x15')]?_0x4a84c6[_0xadc4('0x15')]['include']?_[_0xadc4('0x18')](_0x4a84c6[_0xadc4('0x15')][_0xadc4('0x19')],function(_0x26ddac){return{'model':db[_0x26ddac[_0xadc4('0x1a')]],'as':_0x26ddac['as'],'attributes':_0x26ddac[_0xadc4('0x1b')],'include':_0x26ddac['include']?_[_0xadc4('0x18')](_0x26ddac['include'],function(_0x26682b){return{'model':db[_0x26682b[_0xadc4('0x1a')]],'as':_0x26682b['as'],'attributes':_0x26682b[_0xadc4('0x1b')],'include':_0x26682b['include']?_['map'](_0x26682b['include'],function(_0x181a65){return{'model':db[_0x181a65[_0xadc4('0x1a')]],'as':_0x181a65['as'],'attributes':_0x181a65[_0xadc4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xadc4('0x1c')](function(_0x1fd8d5){logger['info'](_0xadc4('0x12'),_0x4a84c6);logger[_0xadc4('0xc')]('GetServicenowAccount',_0x4a84c6,JSON[_0xadc4('0xd')](_0x1fd8d5));_0x20080f(_0x1fd8d5);})[_0xadc4('0x1d')](function(_0x2d7b67){logger[_0xadc4('0xe')](_0xadc4('0x12'),_0x2d7b67['message'],_0x4a84c6);_0x49f011(_0x2c3635['error'](0x1f4,_0x2d7b67[_0xadc4('0x10')]));});});};exports[_0xadc4('0x1e')]=function(_0x3a48cd){var _0x49fef3=this;return new Promise(function(_0x41c4e4,_0x4bc4f2){return db[_0xadc4('0x13')][_0xadc4('0x1f')]({'raw':_0x3a48cd[_0xadc4('0x15')]?_0x3a48cd[_0xadc4('0x15')][_0xadc4('0x16')]===undefined?!![]:![]:!![],'where':_0x3a48cd[_0xadc4('0x15')]?_0x3a48cd[_0xadc4('0x15')]['where']||null:null,'attributes':_0x3a48cd['options']?_0x3a48cd['options'][_0xadc4('0x1b')]||null:null,'include':_0x3a48cd['options']?_0x3a48cd[_0xadc4('0x15')][_0xadc4('0x19')]?_[_0xadc4('0x18')](_0x3a48cd['options'][_0xadc4('0x19')],function(_0x115d86){return{'model':db[_0x115d86['model']],'as':_0x115d86['as'],'attributes':_0x115d86['attributes'],'include':_0x115d86['include']?_[_0xadc4('0x18')](_0x115d86[_0xadc4('0x19')],function(_0x344d8e){return{'model':db[_0x344d8e['model']],'as':_0x344d8e['as'],'attributes':_0x344d8e['attributes'],'include':_0x344d8e['include']?_[_0xadc4('0x18')](_0x344d8e[_0xadc4('0x19')],function(_0x5e818e){return{'model':db[_0x5e818e[_0xadc4('0x1a')]],'as':_0x5e818e['as'],'attributes':_0x5e818e['attributes']};}):[]};}):[]};}):[]:[]})[_0xadc4('0x1c')](function(_0x1f381a){logger['info'](_0xadc4('0x1e'),_0x3a48cd);logger[_0xadc4('0xc')](_0xadc4('0x1e'),_0x3a48cd,JSON[_0xadc4('0xd')](_0x1f381a));_0x41c4e4(_0x1f381a);})[_0xadc4('0x1d')](function(_0x54a309){logger['error'](_0xadc4('0x1e'),_0x54a309[_0xadc4('0x10')],_0x3a48cd);_0x4bc4f2(_0x49fef3[_0xadc4('0xe')](0x1f4,_0x54a309['message']));});});};
\ No newline at end of file
index 14bef22..088d85d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe30a=['update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./intServicenowConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xe30a,0x10b));var _0xae30=function(_0x470fb4,_0xb22632){_0x470fb4=_0x470fb4-0x0;var _0x3101dc=_0xe30a[_0x470fb4];return _0x3101dc;};'use strict';var multer=require('multer');var util=require(_0xae30('0x0'));var path=require(_0xae30('0x1'));var timeout=require(_0xae30('0x2'));var express=require(_0xae30('0x3'));var router=express['Router']();var fs_extra=require(_0xae30('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xae30('0x5'));var controller=require(_0xae30('0x6'));router['get']('/',auth[_0xae30('0x7')](),controller[_0xae30('0x8')]);router[_0xae30('0x9')](_0xae30('0xa'),auth['isAuthenticated'](),controller[_0xae30('0xb')]);router['get'](_0xae30('0xc'),auth[_0xae30('0x7')](),controller[_0xae30('0xd')]);router[_0xae30('0x9')](_0xae30('0xe'),auth[_0xae30('0x7')](),controller['getSubjects']);router['get'](_0xae30('0xf'),auth[_0xae30('0x7')](),controller[_0xae30('0x10')]);router[_0xae30('0x11')]('/',auth['isAuthenticated'](),controller[_0xae30('0x12')]);router['put'](_0xae30('0xa'),auth[_0xae30('0x7')](),controller[_0xae30('0x13')]);router['delete'](_0xae30('0xa'),auth['isAuthenticated'](),controller[_0xae30('0x14')]);module[_0xae30('0x15')]=router;
\ No newline at end of file
+var _0xc581=['update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','post'];(function(_0x49218e,_0x1973d2){var _0x176463=function(_0x1e6dde){while(--_0x1e6dde){_0x49218e['push'](_0x49218e['shift']());}};_0x176463(++_0x1973d2);}(_0xc581,0x13c));var _0x1c58=function(_0x98e242,_0x1d25a0){_0x98e242=_0x98e242-0x0;var _0x592809=_0xc581[_0x98e242];return _0x592809;};'use strict';var multer=require(_0x1c58('0x0'));var util=require(_0x1c58('0x1'));var path=require(_0x1c58('0x2'));var timeout=require(_0x1c58('0x3'));var express=require(_0x1c58('0x4'));var router=express[_0x1c58('0x5')]();var fs_extra=require(_0x1c58('0x6'));var auth=require(_0x1c58('0x7'));var interaction=require(_0x1c58('0x8'));var config=require('../../config/environment');var controller=require(_0x1c58('0x9'));router['get']('/',auth[_0x1c58('0xa')](),controller[_0x1c58('0xb')]);router[_0x1c58('0xc')](_0x1c58('0xd'),auth[_0x1c58('0xa')](),controller[_0x1c58('0xe')]);router[_0x1c58('0xc')](_0x1c58('0xf'),auth['isAuthenticated'](),controller['getFields']);router[_0x1c58('0xc')](_0x1c58('0x10'),auth[_0x1c58('0xa')](),controller[_0x1c58('0x11')]);router[_0x1c58('0xc')]('/:id/descriptions',auth[_0x1c58('0xa')](),controller[_0x1c58('0x12')]);router[_0x1c58('0x13')]('/',auth[_0x1c58('0xa')](),controller['create']);router['put'](_0x1c58('0xd'),auth[_0x1c58('0xa')](),controller[_0x1c58('0x14')]);router['delete']('/:id',auth[_0x1c58('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7565ec5..cfa56e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fb3=['STRING','sequelize','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8fb3,0x139));var _0x38fb=function(_0x2b7599,_0x4dd37e){_0x2b7599=_0x2b7599-0x0;var _0x107c71=_0x8fb3[_0x2b7599];return _0x107c71;};'use strict';var Sequelize=require(_0x38fb('0x0'));module[_0x38fb('0x1')]={'name':{'type':Sequelize[_0x38fb('0x2')]},'description':{'type':Sequelize[_0x38fb('0x2')]}};
\ No newline at end of file
+var _0x43f4=['STRING','sequelize','exports'];(function(_0x2a79f5,_0x46eca9){var _0x53ab55=function(_0x3edd97){while(--_0x3edd97){_0x2a79f5['push'](_0x2a79f5['shift']());}};_0x53ab55(++_0x46eca9);}(_0x43f4,0x16c));var _0x443f=function(_0x2ab5c2,_0x25d2cc){_0x2ab5c2=_0x2ab5c2-0x0;var _0x5367d4=_0x43f4[_0x2ab5c2];return _0x5367d4;};'use strict';var Sequelize=require(_0x443f('0x0'));module[_0x443f('0x1')]={'name':{'type':Sequelize[_0x443f('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c09d9d4..977b96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b5e=['then','error','stack','name','send','index','map','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','ServicenowConfiguration','include','findAll','rows','catch','show','includeAll','options','find','create','body','params','getFields','findOne','rawAttributes','getSubjects','getDescriptions','ServicenowField','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','update','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3b5e,0x7e));var _0xe3b5=function(_0x1b33bc,_0x282af6){_0x1b33bc=_0x1b33bc-0x0;var _0x23b81c=_0x3b5e[_0x1b33bc];return _0x23b81c;};'use strict';var emlformat=require(_0xe3b5('0x0'));var rimraf=require(_0xe3b5('0x1'));var zipdir=require(_0xe3b5('0x2'));var jsonpatch=require(_0xe3b5('0x3'));var rp=require(_0xe3b5('0x4'));var moment=require(_0xe3b5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe3b5('0x6'));var util=require(_0xe3b5('0x7'));var path=require(_0xe3b5('0x8'));var sox=require(_0xe3b5('0x9'));var csv=require(_0xe3b5('0xa'));var ejs=require(_0xe3b5('0xb'));var fs=require('fs');var fs_extra=require(_0xe3b5('0xc'));var _=require('lodash');var squel=require(_0xe3b5('0xd'));var crypto=require(_0xe3b5('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe3b5('0xa'));var querystring=require(_0xe3b5('0xf'));var Papa=require(_0xe3b5('0x10'));var Redis=require(_0xe3b5('0x11'));var authService=require(_0xe3b5('0x12'));var qs=require(_0xe3b5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe3b5('0x14'));var logger=require(_0xe3b5('0x15'))(_0xe3b5('0x16'));var utils=require(_0xe3b5('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe3b5('0x18'))['db'];function respondWithStatusCode(_0x24780a,_0x32ab61){_0x32ab61=_0x32ab61||0xcc;return function(_0x3fc4df){if(_0x3fc4df){return _0x24780a[_0xe3b5('0x19')](_0x32ab61);}return _0x24780a['status'](_0x32ab61)[_0xe3b5('0x1a')]();};}function respondWithResult(_0x2b456d,_0x1f66c3){_0x1f66c3=_0x1f66c3||0xc8;return function(_0x460a90){if(_0x460a90){return _0x2b456d['status'](_0x1f66c3)[_0xe3b5('0x1b')](_0x460a90);}};}function respondWithFilteredResult(_0x42608d,_0x382d6a){return function(_0x4a2ae2){if(_0x4a2ae2){var _0x48a602=typeof _0x382d6a[_0xe3b5('0x1c')]===_0xe3b5('0x1d')&&typeof _0x382d6a[_0xe3b5('0x1e')]==='undefined';var _0x4170ae=_0x4a2ae2[_0xe3b5('0x1f')];var _0x42adf2=_0x48a602?0x0:_0x382d6a['offset'];var _0x306951=_0x48a602?_0x4a2ae2[_0xe3b5('0x1f')]:_0x382d6a[_0xe3b5('0x1c')]+_0x382d6a[_0xe3b5('0x1e')];var _0x595afe;if(_0x306951>=_0x4170ae){_0x306951=_0x4170ae;_0x595afe=0xc8;}else{_0x595afe=0xce;}_0x42608d[_0xe3b5('0x20')](_0x595afe);return _0x42608d['set']('Content-Range',_0x42adf2+'-'+_0x306951+'/'+_0x4170ae)[_0xe3b5('0x1b')](_0x4a2ae2);}return null;};}function patchUpdates(_0x54d95b){return function(_0x2d84c1){try{jsonpatch[_0xe3b5('0x21')](_0x2d84c1,_0x54d95b,!![]);}catch(_0x5449cf){return BPromise[_0xe3b5('0x22')](_0x5449cf);}return _0x2d84c1[_0xe3b5('0x23')]();};}function saveUpdates(_0x53ce0d,_0x549fb0){return function(_0x2c1c52){if(_0x2c1c52){return _0x2c1c52[_0xe3b5('0x24')](_0x53ce0d)['then'](function(_0x9ccfba){return _0x9ccfba;});}return null;};}function removeEntity(_0x26147d,_0x994ec5){return function(_0x28adbf){if(_0x28adbf){return _0x28adbf[_0xe3b5('0x25')]()[_0xe3b5('0x26')](function(){_0x26147d[_0xe3b5('0x20')](0xcc)[_0xe3b5('0x1a')]();});}};}function handleEntityNotFound(_0x5c8912,_0x25a312){return function(_0x2ce112){if(!_0x2ce112){_0x5c8912[_0xe3b5('0x19')](0x194);}return _0x2ce112;};}function handleError(_0x9e4c30,_0x59035c){_0x59035c=_0x59035c||0x1f4;return function(_0x9d97f9){logger[_0xe3b5('0x27')](_0x9d97f9[_0xe3b5('0x28')]);if(_0x9d97f9['name']){delete _0x9d97f9[_0xe3b5('0x29')];}_0x9e4c30[_0xe3b5('0x20')](_0x59035c)[_0xe3b5('0x2a')](_0x9d97f9);};}exports[_0xe3b5('0x2b')]=function(_0x1a1101,_0x3cb1bd){var _0x261578={},_0x5a3ff7={},_0x2cc08d={'count':0x0,'rows':[]};var _0x225029=_[_0xe3b5('0x2c')](db['ServicenowConfiguration']['rawAttributes'],function(_0x4fdd19){return{'name':_0x4fdd19[_0xe3b5('0x2d')],'type':_0x4fdd19['type'][_0xe3b5('0x2e')]};});_0x5a3ff7[_0xe3b5('0x2f')]=_[_0xe3b5('0x2c')](_0x225029,_0xe3b5('0x29'));_0x5a3ff7['query']=_[_0xe3b5('0x30')](_0x1a1101[_0xe3b5('0x31')]);_0x5a3ff7[_0xe3b5('0x32')]=_[_0xe3b5('0x33')](_0x5a3ff7[_0xe3b5('0x2f')],_0x5a3ff7[_0xe3b5('0x31')]);_0x261578[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x5a3ff7['model'],qs[_0xe3b5('0x35')](_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x35')]));_0x261578[_0xe3b5('0x34')]=_0x261578['attributes'][_0xe3b5('0x36')]?_0x261578[_0xe3b5('0x34')]:_0x5a3ff7['model'];if(!_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x37')](_0xe3b5('0x38'))){_0x261578[_0xe3b5('0x1e')]=qs[_0xe3b5('0x1e')](_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x261578[_0xe3b5('0x1c')]=qs['offset'](_0x1a1101['query'][_0xe3b5('0x1c')]);}_0x261578[_0xe3b5('0x39')]=qs[_0xe3b5('0x3a')](_0x1a1101['query'][_0xe3b5('0x3a')]);_0x261578['where']=qs['filters'](_[_0xe3b5('0x3b')](_0x1a1101['query'],_0x5a3ff7['filters']),_0x225029);if(_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x3c')]){_0x261578['where']=_['merge'](_0x261578[_0xe3b5('0x3d')],{'$or':_[_0xe3b5('0x2c')](_0x225029,function(_0x31eb83){if(_0x31eb83[_0xe3b5('0x3e')]!=='VIRTUAL'){var _0x146cce={};_0x146cce[_0x31eb83[_0xe3b5('0x29')]]={'$like':'%'+_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x3c')]+'%'};return _0x146cce;}})});}_0x261578=_[_0xe3b5('0x3f')]({},_0x261578,_0x1a1101['options']);var _0x5cbfdb={'where':_0x261578['where']};return db[_0xe3b5('0x40')]['count'](_0x5cbfdb)['then'](function(_0x4ecadb){_0x2cc08d[_0xe3b5('0x1f')]=_0x4ecadb;if(_0x1a1101[_0xe3b5('0x31')]['includeAll']){_0x261578[_0xe3b5('0x41')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xe3b5('0x42')](_0x261578);})['then'](function(_0x515a05){_0x2cc08d[_0xe3b5('0x43')]=_0x515a05;return _0x2cc08d;})[_0xe3b5('0x26')](respondWithFilteredResult(_0x3cb1bd,_0x261578))[_0xe3b5('0x44')](handleError(_0x3cb1bd,null));};exports[_0xe3b5('0x45')]=function(_0x4e81ff,_0x39f92c){var _0x592708={'raw':![],'where':{'id':_0x4e81ff['params']['id']}},_0x1f8124={};_0x1f8124[_0xe3b5('0x2f')]=_[_0xe3b5('0x30')](db[_0xe3b5('0x40')]['rawAttributes']);_0x1f8124[_0xe3b5('0x31')]=_['keys'](_0x4e81ff['query']);_0x1f8124['filters']=_[_0xe3b5('0x33')](_0x1f8124[_0xe3b5('0x2f')],_0x1f8124[_0xe3b5('0x31')]);_0x592708[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x1f8124[_0xe3b5('0x2f')],qs[_0xe3b5('0x35')](_0x4e81ff[_0xe3b5('0x31')]['fields']));_0x592708[_0xe3b5('0x34')]=_0x592708[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x592708['attributes']:_0x1f8124[_0xe3b5('0x2f')];if(_0x4e81ff[_0xe3b5('0x31')][_0xe3b5('0x46')]){_0x592708[_0xe3b5('0x41')]=[{'all':!![]}];}_0x592708=_['merge']({},_0x592708,_0x4e81ff[_0xe3b5('0x47')]);return db[_0xe3b5('0x40')][_0xe3b5('0x48')](_0x592708)[_0xe3b5('0x26')](handleEntityNotFound(_0x39f92c,null))[_0xe3b5('0x26')](respondWithResult(_0x39f92c,null))['catch'](handleError(_0x39f92c,null));};exports[_0xe3b5('0x49')]=function(_0x53c942,_0xa51bdd){return db['ServicenowConfiguration'][_0xe3b5('0x49')](_0x53c942['body'],{})['then'](respondWithResult(_0xa51bdd,0xc9))['catch'](handleError(_0xa51bdd,null));};exports[_0xe3b5('0x24')]=function(_0xf86182,_0x277135){if(_0xf86182['body']['id']){delete _0xf86182[_0xe3b5('0x4a')]['id'];}return db[_0xe3b5('0x40')][_0xe3b5('0x48')]({'where':{'id':_0xf86182[_0xe3b5('0x4b')]['id']}})[_0xe3b5('0x26')](handleEntityNotFound(_0x277135,null))['then'](saveUpdates(_0xf86182[_0xe3b5('0x4a')],null))[_0xe3b5('0x26')](respondWithResult(_0x277135,null))[_0xe3b5('0x44')](handleError(_0x277135,null));};exports[_0xe3b5('0x25')]=function(_0x10e77c,_0x5b0641){return db[_0xe3b5('0x40')][_0xe3b5('0x48')]({'where':{'id':_0x10e77c[_0xe3b5('0x4b')]['id']}})[_0xe3b5('0x26')](handleEntityNotFound(_0x5b0641,null))[_0xe3b5('0x26')](removeEntity(_0x5b0641,null))[_0xe3b5('0x44')](handleError(_0x5b0641,null));};exports[_0xe3b5('0x4c')]=function(_0x1c713d,_0x134734,_0x5dd166){var _0x2b72a3={};var _0x4fac98={};var _0x297e9d;var _0x320e91;return db[_0xe3b5('0x40')][_0xe3b5('0x4d')]({'where':{'id':_0x1c713d[_0xe3b5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x134734,null))[_0xe3b5('0x26')](function(_0x4559e7){if(_0x4559e7){_0x297e9d=_0x4559e7;_0x4fac98['model']=_[_0xe3b5('0x30')](db['ServicenowField'][_0xe3b5('0x4e')]);_0x4fac98[_0xe3b5('0x31')]=_[_0xe3b5('0x30')](_0x1c713d[_0xe3b5('0x31')]);_0x4fac98[_0xe3b5('0x32')]=_[_0xe3b5('0x33')](_0x4fac98['model'],_0x4fac98['query']);_0x2b72a3[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x4fac98['model'],qs[_0xe3b5('0x35')](_0x1c713d[_0xe3b5('0x31')]['fields']));_0x2b72a3['attributes']=_0x2b72a3[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x2b72a3['attributes']:_0x4fac98[_0xe3b5('0x2f')];_0x2b72a3['order']=qs[_0xe3b5('0x3a')](_0x1c713d[_0xe3b5('0x31')]['sort']);_0x2b72a3[_0xe3b5('0x3d')]=qs[_0xe3b5('0x32')](_[_0xe3b5('0x3b')](_0x1c713d['query'],_0x4fac98[_0xe3b5('0x32')]));if(_0x1c713d[_0xe3b5('0x31')]['filter']){_0x2b72a3[_0xe3b5('0x3d')]=_['merge'](_0x2b72a3['where'],{'$or':_[_0xe3b5('0x2c')](_0x2b72a3[_0xe3b5('0x34')],function(_0x413a75){var _0x887819={};_0x887819[_0x413a75]={'$like':'%'+_0x1c713d['query'][_0xe3b5('0x3c')]+'%'};return _0x887819;})});}_0x2b72a3=_[_0xe3b5('0x3f')]({},_0x2b72a3,_0x1c713d[_0xe3b5('0x47')]);return _0x297e9d[_0xe3b5('0x4c')](_0x2b72a3);}})[_0xe3b5('0x26')](function(_0x54e5be){if(_0x54e5be){_0x320e91=_0x54e5be[_0xe3b5('0x36')];if(!_0x1c713d[_0xe3b5('0x31')][_0xe3b5('0x37')]('nolimit')){_0x2b72a3[_0xe3b5('0x1e')]=qs[_0xe3b5('0x1e')](_0x1c713d[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x2b72a3[_0xe3b5('0x1c')]=qs[_0xe3b5('0x1c')](_0x1c713d[_0xe3b5('0x31')][_0xe3b5('0x1c')]);}return _0x297e9d[_0xe3b5('0x4c')](_0x2b72a3);}})[_0xe3b5('0x26')](function(_0x532149){if(_0x532149){return _0x532149?{'count':_0x320e91,'rows':_0x532149}:null;}})['then'](respondWithResult(_0x134734,null))[_0xe3b5('0x44')](handleError(_0x134734,null));};exports[_0xe3b5('0x4f')]=function(_0x4b24af,_0x42c121,_0x1adcf7){var _0x4f0e3e={};var _0x529444={};var _0x520d4e;var _0x5de040;return db[_0xe3b5('0x40')]['findOne']({'where':{'id':_0x4b24af[_0xe3b5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x42c121,null))[_0xe3b5('0x26')](function(_0x534d3b){if(_0x534d3b){_0x520d4e=_0x534d3b;_0x529444['model']=_['keys'](db['ServicenowField'][_0xe3b5('0x4e')]);_0x529444[_0xe3b5('0x31')]=_['keys'](_0x4b24af[_0xe3b5('0x31')]);_0x529444['filters']=_[_0xe3b5('0x33')](_0x529444[_0xe3b5('0x2f')],_0x529444[_0xe3b5('0x31')]);_0x4f0e3e[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x529444[_0xe3b5('0x2f')],qs['fields'](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x35')]));_0x4f0e3e['attributes']=_0x4f0e3e[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x4f0e3e['attributes']:_0x529444[_0xe3b5('0x2f')];_0x4f0e3e[_0xe3b5('0x39')]=qs[_0xe3b5('0x3a')](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x3a')]);_0x4f0e3e[_0xe3b5('0x3d')]=qs[_0xe3b5('0x32')](_[_0xe3b5('0x3b')](_0x4b24af['query'],_0x529444['filters']));if(_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x3c')]){_0x4f0e3e['where']=_[_0xe3b5('0x3f')](_0x4f0e3e['where'],{'$or':_[_0xe3b5('0x2c')](_0x4f0e3e[_0xe3b5('0x34')],function(_0x7ccfd8){var _0x55e0dd={};_0x55e0dd[_0x7ccfd8]={'$like':'%'+_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x3c')]+'%'};return _0x55e0dd;})});}_0x4f0e3e=_['merge']({},_0x4f0e3e,_0x4b24af[_0xe3b5('0x47')]);return _0x520d4e['getSubjects'](_0x4f0e3e);}})['then'](function(_0x3d6f1b){if(_0x3d6f1b){_0x5de040=_0x3d6f1b['length'];if(!_0x4b24af['query'][_0xe3b5('0x37')](_0xe3b5('0x38'))){_0x4f0e3e[_0xe3b5('0x1e')]=qs[_0xe3b5('0x1e')](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x4f0e3e['offset']=qs['offset'](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x1c')]);}return _0x520d4e[_0xe3b5('0x4f')](_0x4f0e3e);}})[_0xe3b5('0x26')](function(_0x44a171){if(_0x44a171){return _0x44a171?{'count':_0x5de040,'rows':_0x44a171}:null;}})[_0xe3b5('0x26')](respondWithResult(_0x42c121,null))[_0xe3b5('0x44')](handleError(_0x42c121,null));};exports[_0xe3b5('0x50')]=function(_0x4c9f09,_0x589650,_0x5efc55){var _0x3fa6ce={};var _0x9ba06f={};var _0x18a071;var _0x2cc394;return db[_0xe3b5('0x40')][_0xe3b5('0x4d')]({'where':{'id':_0x4c9f09[_0xe3b5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x589650,null))['then'](function(_0x41189c){if(_0x41189c){_0x18a071=_0x41189c;_0x9ba06f[_0xe3b5('0x2f')]=_[_0xe3b5('0x30')](db[_0xe3b5('0x51')]['rawAttributes']);_0x9ba06f[_0xe3b5('0x31')]=_[_0xe3b5('0x30')](_0x4c9f09[_0xe3b5('0x31')]);_0x9ba06f['filters']=_[_0xe3b5('0x33')](_0x9ba06f[_0xe3b5('0x2f')],_0x9ba06f['query']);_0x3fa6ce[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x9ba06f[_0xe3b5('0x2f')],qs['fields'](_0x4c9f09['query'][_0xe3b5('0x35')]));_0x3fa6ce['attributes']=_0x3fa6ce[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x3fa6ce['attributes']:_0x9ba06f[_0xe3b5('0x2f')];_0x3fa6ce[_0xe3b5('0x39')]=qs['sort'](_0x4c9f09[_0xe3b5('0x31')]['sort']);_0x3fa6ce[_0xe3b5('0x3d')]=qs[_0xe3b5('0x32')](_['pick'](_0x4c9f09[_0xe3b5('0x31')],_0x9ba06f['filters']));if(_0x4c9f09[_0xe3b5('0x31')]['filter']){_0x3fa6ce[_0xe3b5('0x3d')]=_['merge'](_0x3fa6ce['where'],{'$or':_['map'](_0x3fa6ce[_0xe3b5('0x34')],function(_0x3d3a5a){var _0x5daf98={};_0x5daf98[_0x3d3a5a]={'$like':'%'+_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x3c')]+'%'};return _0x5daf98;})});}_0x3fa6ce=_[_0xe3b5('0x3f')]({},_0x3fa6ce,_0x4c9f09[_0xe3b5('0x47')]);return _0x18a071[_0xe3b5('0x50')](_0x3fa6ce);}})['then'](function(_0x4517c6){if(_0x4517c6){_0x2cc394=_0x4517c6['length'];if(!_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x37')](_0xe3b5('0x38'))){_0x3fa6ce['limit']=qs['limit'](_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x3fa6ce['offset']=qs['offset'](_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x1c')]);}return _0x18a071[_0xe3b5('0x50')](_0x3fa6ce);}})['then'](function(_0x581dc5){if(_0x581dc5){return _0x581dc5?{'count':_0x2cc394,'rows':_0x581dc5}:null;}})[_0xe3b5('0x26')](respondWithResult(_0x589650,null))[_0xe3b5('0x44')](handleError(_0x589650,null));};
\ No newline at end of file
+var _0xd608=['json','offset','undefined','limit','count','reject','save','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','ServicenowConfiguration','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','ServicenowField','pick','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status'];(function(_0x23a3fa,_0x1cf13e){var _0x1104b1=function(_0x5b71e7){while(--_0x5b71e7){_0x23a3fa['push'](_0x23a3fa['shift']());}};_0x1104b1(++_0x1cf13e);}(_0xd608,0xd3));var _0x8d60=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd608[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x8d60('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8d60('0x1'));var jsonpatch=require(_0x8d60('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8d60('0x3'));var Mustache=require(_0x8d60('0x4'));var util=require(_0x8d60('0x5'));var path=require(_0x8d60('0x6'));var sox=require('sox');var csv=require(_0x8d60('0x7'));var ejs=require(_0x8d60('0x8'));var fs=require('fs');var fs_extra=require(_0x8d60('0x9'));var _=require(_0x8d60('0xa'));var squel=require(_0x8d60('0xb'));var crypto=require('crypto');var jsforce=require(_0x8d60('0xc'));var deskjs=require(_0x8d60('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8d60('0xe'));var Redis=require(_0x8d60('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8d60('0x10'));var as=require(_0x8d60('0x11'));var hardwareService=require(_0x8d60('0x12'));var logger=require(_0x8d60('0x13'))(_0x8d60('0x14'));var utils=require(_0x8d60('0x15'));var config=require(_0x8d60('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8d60('0x17'))['db'];function respondWithStatusCode(_0x2e946a,_0x48053f){_0x48053f=_0x48053f||0xcc;return function(_0xc53356){if(_0xc53356){return _0x2e946a[_0x8d60('0x18')](_0x48053f);}return _0x2e946a['status'](_0x48053f)['end']();};}function respondWithResult(_0x5d7139,_0x29035a){_0x29035a=_0x29035a||0xc8;return function(_0x3734a8){if(_0x3734a8){return _0x5d7139[_0x8d60('0x19')](_0x29035a)[_0x8d60('0x1a')](_0x3734a8);}};}function respondWithFilteredResult(_0x59680c,_0x321741){return function(_0x316bce){if(_0x316bce){var _0x1380ba=typeof _0x321741[_0x8d60('0x1b')]===_0x8d60('0x1c')&&typeof _0x321741[_0x8d60('0x1d')]===_0x8d60('0x1c');var _0x289ad1=_0x316bce[_0x8d60('0x1e')];var _0x433f00=_0x1380ba?0x0:_0x321741[_0x8d60('0x1b')];var _0x3a2cc2=_0x1380ba?_0x316bce[_0x8d60('0x1e')]:_0x321741[_0x8d60('0x1b')]+_0x321741[_0x8d60('0x1d')];var _0x488b17;if(_0x3a2cc2>=_0x289ad1){_0x3a2cc2=_0x289ad1;_0x488b17=0xc8;}else{_0x488b17=0xce;}_0x59680c[_0x8d60('0x19')](_0x488b17);return _0x59680c['set']('Content-Range',_0x433f00+'-'+_0x3a2cc2+'/'+_0x289ad1)[_0x8d60('0x1a')](_0x316bce);}return null;};}function patchUpdates(_0x2fa5df){return function(_0x32b880){try{jsonpatch['apply'](_0x32b880,_0x2fa5df,!![]);}catch(_0x245450){return BPromise[_0x8d60('0x1f')](_0x245450);}return _0x32b880[_0x8d60('0x20')]();};}function saveUpdates(_0x22ccb7,_0x5c8074){return function(_0x8f0818){if(_0x8f0818){return _0x8f0818[_0x8d60('0x21')](_0x22ccb7)['then'](function(_0x166c71){return _0x166c71;});}return null;};}function removeEntity(_0x15fe63,_0x491c78){return function(_0x1d5771){if(_0x1d5771){return _0x1d5771[_0x8d60('0x22')]()[_0x8d60('0x23')](function(){_0x15fe63[_0x8d60('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5224d9,_0x518f8e){return function(_0x522df3){if(!_0x522df3){_0x5224d9[_0x8d60('0x18')](0x194);}return _0x522df3;};}function handleError(_0x102c51,_0x29dbcb){_0x29dbcb=_0x29dbcb||0x1f4;return function(_0xec7e0f){logger['error'](_0xec7e0f[_0x8d60('0x24')]);if(_0xec7e0f[_0x8d60('0x25')]){delete _0xec7e0f[_0x8d60('0x25')];}_0x102c51[_0x8d60('0x19')](_0x29dbcb)[_0x8d60('0x26')](_0xec7e0f);};}exports[_0x8d60('0x27')]=function(_0x524fc0,_0x44ae2e){var _0x1103e9={},_0x43d092={},_0x565480={'count':0x0,'rows':[]};var _0x404240=_[_0x8d60('0x28')](db['ServicenowConfiguration'][_0x8d60('0x29')],function(_0x3c5079){return{'name':_0x3c5079[_0x8d60('0x2a')],'type':_0x3c5079[_0x8d60('0x2b')][_0x8d60('0x2c')]};});_0x43d092[_0x8d60('0x2d')]=_[_0x8d60('0x28')](_0x404240,_0x8d60('0x25'));_0x43d092[_0x8d60('0x2e')]=_[_0x8d60('0x2f')](_0x524fc0[_0x8d60('0x2e')]);_0x43d092[_0x8d60('0x30')]=_[_0x8d60('0x31')](_0x43d092[_0x8d60('0x2d')],_0x43d092['query']);_0x1103e9['attributes']=_[_0x8d60('0x31')](_0x43d092[_0x8d60('0x2d')],qs[_0x8d60('0x32')](_0x524fc0[_0x8d60('0x2e')][_0x8d60('0x32')]));_0x1103e9[_0x8d60('0x33')]=_0x1103e9['attributes'][_0x8d60('0x34')]?_0x1103e9[_0x8d60('0x33')]:_0x43d092['model'];if(!_0x524fc0['query'][_0x8d60('0x35')](_0x8d60('0x36'))){_0x1103e9[_0x8d60('0x1d')]=qs['limit'](_0x524fc0['query'][_0x8d60('0x1d')]);_0x1103e9[_0x8d60('0x1b')]=qs[_0x8d60('0x1b')](_0x524fc0['query'][_0x8d60('0x1b')]);}_0x1103e9[_0x8d60('0x37')]=qs[_0x8d60('0x38')](_0x524fc0[_0x8d60('0x2e')]['sort']);_0x1103e9[_0x8d60('0x39')]=qs['filters'](_['pick'](_0x524fc0[_0x8d60('0x2e')],_0x43d092[_0x8d60('0x30')]),_0x404240);if(_0x524fc0[_0x8d60('0x2e')]['filter']){_0x1103e9[_0x8d60('0x39')]=_[_0x8d60('0x3a')](_0x1103e9[_0x8d60('0x39')],{'$or':_['map'](_0x404240,function(_0x32d034){if(_0x32d034['type']!==_0x8d60('0x3b')){var _0x12c943={};_0x12c943[_0x32d034[_0x8d60('0x25')]]={'$like':'%'+_0x524fc0[_0x8d60('0x2e')][_0x8d60('0x3c')]+'%'};return _0x12c943;}})});}_0x1103e9=_['merge']({},_0x1103e9,_0x524fc0[_0x8d60('0x3d')]);var _0x1afd81={'where':_0x1103e9[_0x8d60('0x39')]};return db[_0x8d60('0x3e')][_0x8d60('0x1e')](_0x1afd81)[_0x8d60('0x23')](function(_0x5a7924){_0x565480[_0x8d60('0x1e')]=_0x5a7924;if(_0x524fc0[_0x8d60('0x2e')][_0x8d60('0x3f')]){_0x1103e9[_0x8d60('0x40')]=[{'all':!![]}];}return db[_0x8d60('0x3e')][_0x8d60('0x41')](_0x1103e9);})['then'](function(_0x968e20){_0x565480[_0x8d60('0x42')]=_0x968e20;return _0x565480;})[_0x8d60('0x23')](respondWithFilteredResult(_0x44ae2e,_0x1103e9))[_0x8d60('0x43')](handleError(_0x44ae2e,null));};exports[_0x8d60('0x44')]=function(_0x5b7ecd,_0x3f4286){var _0x327165={'raw':![],'where':{'id':_0x5b7ecd['params']['id']}},_0x4e0efe={};_0x4e0efe[_0x8d60('0x2d')]=_['keys'](db[_0x8d60('0x3e')][_0x8d60('0x29')]);_0x4e0efe['query']=_[_0x8d60('0x2f')](_0x5b7ecd[_0x8d60('0x2e')]);_0x4e0efe[_0x8d60('0x30')]=_['intersection'](_0x4e0efe[_0x8d60('0x2d')],_0x4e0efe[_0x8d60('0x2e')]);_0x327165['attributes']=_[_0x8d60('0x31')](_0x4e0efe[_0x8d60('0x2d')],qs[_0x8d60('0x32')](_0x5b7ecd[_0x8d60('0x2e')][_0x8d60('0x32')]));_0x327165[_0x8d60('0x33')]=_0x327165[_0x8d60('0x33')][_0x8d60('0x34')]?_0x327165['attributes']:_0x4e0efe['model'];if(_0x5b7ecd[_0x8d60('0x2e')][_0x8d60('0x3f')]){_0x327165['include']=[{'all':!![]}];}_0x327165=_[_0x8d60('0x3a')]({},_0x327165,_0x5b7ecd[_0x8d60('0x3d')]);return db['ServicenowConfiguration'][_0x8d60('0x45')](_0x327165)['then'](handleEntityNotFound(_0x3f4286,null))[_0x8d60('0x23')](respondWithResult(_0x3f4286,null))[_0x8d60('0x43')](handleError(_0x3f4286,null));};exports[_0x8d60('0x46')]=function(_0x452fc5,_0x138cb4){return db[_0x8d60('0x3e')]['create'](_0x452fc5[_0x8d60('0x47')],{})['then'](respondWithResult(_0x138cb4,0xc9))[_0x8d60('0x43')](handleError(_0x138cb4,null));};exports[_0x8d60('0x21')]=function(_0xd7316a,_0x5d5e6f){if(_0xd7316a['body']['id']){delete _0xd7316a['body']['id'];}return db['ServicenowConfiguration'][_0x8d60('0x45')]({'where':{'id':_0xd7316a[_0x8d60('0x48')]['id']}})[_0x8d60('0x23')](handleEntityNotFound(_0x5d5e6f,null))['then'](saveUpdates(_0xd7316a[_0x8d60('0x47')],null))[_0x8d60('0x23')](respondWithResult(_0x5d5e6f,null))[_0x8d60('0x43')](handleError(_0x5d5e6f,null));};exports[_0x8d60('0x22')]=function(_0x39b1b9,_0x120589){return db[_0x8d60('0x3e')][_0x8d60('0x45')]({'where':{'id':_0x39b1b9[_0x8d60('0x48')]['id']}})['then'](handleEntityNotFound(_0x120589,null))[_0x8d60('0x23')](removeEntity(_0x120589,null))[_0x8d60('0x43')](handleError(_0x120589,null));};exports[_0x8d60('0x49')]=function(_0x264b95,_0x213d14,_0xc97235){var _0xbfd054={};var _0x83057d={};var _0x1772cc;var _0x3784e0;return db[_0x8d60('0x3e')][_0x8d60('0x4a')]({'where':{'id':_0x264b95[_0x8d60('0x48')]['id']}})[_0x8d60('0x23')](handleEntityNotFound(_0x213d14,null))[_0x8d60('0x23')](function(_0x50f191){if(_0x50f191){_0x1772cc=_0x50f191;_0x83057d[_0x8d60('0x2d')]=_[_0x8d60('0x2f')](db[_0x8d60('0x4b')][_0x8d60('0x29')]);_0x83057d[_0x8d60('0x2e')]=_['keys'](_0x264b95[_0x8d60('0x2e')]);_0x83057d[_0x8d60('0x30')]=_[_0x8d60('0x31')](_0x83057d[_0x8d60('0x2d')],_0x83057d[_0x8d60('0x2e')]);_0xbfd054[_0x8d60('0x33')]=_[_0x8d60('0x31')](_0x83057d[_0x8d60('0x2d')],qs[_0x8d60('0x32')](_0x264b95['query']['fields']));_0xbfd054['attributes']=_0xbfd054['attributes']['length']?_0xbfd054[_0x8d60('0x33')]:_0x83057d[_0x8d60('0x2d')];_0xbfd054[_0x8d60('0x37')]=qs[_0x8d60('0x38')](_0x264b95[_0x8d60('0x2e')][_0x8d60('0x38')]);_0xbfd054[_0x8d60('0x39')]=qs[_0x8d60('0x30')](_[_0x8d60('0x4c')](_0x264b95['query'],_0x83057d[_0x8d60('0x30')]));if(_0x264b95[_0x8d60('0x2e')]['filter']){_0xbfd054[_0x8d60('0x39')]=_[_0x8d60('0x3a')](_0xbfd054[_0x8d60('0x39')],{'$or':_[_0x8d60('0x28')](_0xbfd054[_0x8d60('0x33')],function(_0x2f4261){var _0x3375de={};_0x3375de[_0x2f4261]={'$like':'%'+_0x264b95['query'][_0x8d60('0x3c')]+'%'};return _0x3375de;})});}_0xbfd054=_['merge']({},_0xbfd054,_0x264b95['options']);return _0x1772cc['getFields'](_0xbfd054);}})['then'](function(_0x245bee){if(_0x245bee){_0x3784e0=_0x245bee[_0x8d60('0x34')];if(!_0x264b95[_0x8d60('0x2e')]['hasOwnProperty'](_0x8d60('0x36'))){_0xbfd054[_0x8d60('0x1d')]=qs[_0x8d60('0x1d')](_0x264b95[_0x8d60('0x2e')]['limit']);_0xbfd054[_0x8d60('0x1b')]=qs[_0x8d60('0x1b')](_0x264b95['query'][_0x8d60('0x1b')]);}return _0x1772cc[_0x8d60('0x49')](_0xbfd054);}})[_0x8d60('0x23')](function(_0x16a022){if(_0x16a022){return _0x16a022?{'count':_0x3784e0,'rows':_0x16a022}:null;}})[_0x8d60('0x23')](respondWithResult(_0x213d14,null))['catch'](handleError(_0x213d14,null));};exports[_0x8d60('0x4d')]=function(_0x32657b,_0x2d4937,_0x185593){var _0x2dc4ae={};var _0xebb9c={};var _0x46352d;var _0x8b67a0;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x32657b[_0x8d60('0x48')]['id']}})[_0x8d60('0x23')](handleEntityNotFound(_0x2d4937,null))[_0x8d60('0x23')](function(_0x423b43){if(_0x423b43){_0x46352d=_0x423b43;_0xebb9c[_0x8d60('0x2d')]=_['keys'](db[_0x8d60('0x4b')][_0x8d60('0x29')]);_0xebb9c['query']=_[_0x8d60('0x2f')](_0x32657b[_0x8d60('0x2e')]);_0xebb9c[_0x8d60('0x30')]=_['intersection'](_0xebb9c[_0x8d60('0x2d')],_0xebb9c[_0x8d60('0x2e')]);_0x2dc4ae['attributes']=_['intersection'](_0xebb9c[_0x8d60('0x2d')],qs[_0x8d60('0x32')](_0x32657b[_0x8d60('0x2e')][_0x8d60('0x32')]));_0x2dc4ae[_0x8d60('0x33')]=_0x2dc4ae[_0x8d60('0x33')][_0x8d60('0x34')]?_0x2dc4ae['attributes']:_0xebb9c['model'];_0x2dc4ae[_0x8d60('0x37')]=qs[_0x8d60('0x38')](_0x32657b[_0x8d60('0x2e')]['sort']);_0x2dc4ae[_0x8d60('0x39')]=qs['filters'](_[_0x8d60('0x4c')](_0x32657b[_0x8d60('0x2e')],_0xebb9c[_0x8d60('0x30')]));if(_0x32657b['query'][_0x8d60('0x3c')]){_0x2dc4ae[_0x8d60('0x39')]=_[_0x8d60('0x3a')](_0x2dc4ae[_0x8d60('0x39')],{'$or':_[_0x8d60('0x28')](_0x2dc4ae['attributes'],function(_0x2de1e5){var _0x5b74bf={};_0x5b74bf[_0x2de1e5]={'$like':'%'+_0x32657b[_0x8d60('0x2e')][_0x8d60('0x3c')]+'%'};return _0x5b74bf;})});}_0x2dc4ae=_[_0x8d60('0x3a')]({},_0x2dc4ae,_0x32657b[_0x8d60('0x3d')]);return _0x46352d[_0x8d60('0x4d')](_0x2dc4ae);}})[_0x8d60('0x23')](function(_0x48528a){if(_0x48528a){_0x8b67a0=_0x48528a[_0x8d60('0x34')];if(!_0x32657b[_0x8d60('0x2e')][_0x8d60('0x35')](_0x8d60('0x36'))){_0x2dc4ae[_0x8d60('0x1d')]=qs[_0x8d60('0x1d')](_0x32657b[_0x8d60('0x2e')][_0x8d60('0x1d')]);_0x2dc4ae['offset']=qs['offset'](_0x32657b['query'][_0x8d60('0x1b')]);}return _0x46352d[_0x8d60('0x4d')](_0x2dc4ae);}})['then'](function(_0x16cfbc){if(_0x16cfbc){return _0x16cfbc?{'count':_0x8b67a0,'rows':_0x16cfbc}:null;}})['then'](respondWithResult(_0x2d4937,null))[_0x8d60('0x43')](handleError(_0x2d4937,null));};exports[_0x8d60('0x4e')]=function(_0xe47e8d,_0x5bc592,_0x3ba59){var _0x20d8f9={};var _0x70d7d2={};var _0x28b2c9;var _0x8419a6;return db[_0x8d60('0x3e')][_0x8d60('0x4a')]({'where':{'id':_0xe47e8d[_0x8d60('0x48')]['id']}})[_0x8d60('0x23')](handleEntityNotFound(_0x5bc592,null))[_0x8d60('0x23')](function(_0x880ba1){if(_0x880ba1){_0x28b2c9=_0x880ba1;_0x70d7d2['model']=_[_0x8d60('0x2f')](db['ServicenowField'][_0x8d60('0x29')]);_0x70d7d2[_0x8d60('0x2e')]=_[_0x8d60('0x2f')](_0xe47e8d[_0x8d60('0x2e')]);_0x70d7d2['filters']=_[_0x8d60('0x31')](_0x70d7d2[_0x8d60('0x2d')],_0x70d7d2[_0x8d60('0x2e')]);_0x20d8f9['attributes']=_[_0x8d60('0x31')](_0x70d7d2[_0x8d60('0x2d')],qs['fields'](_0xe47e8d[_0x8d60('0x2e')][_0x8d60('0x32')]));_0x20d8f9[_0x8d60('0x33')]=_0x20d8f9[_0x8d60('0x33')]['length']?_0x20d8f9[_0x8d60('0x33')]:_0x70d7d2['model'];_0x20d8f9[_0x8d60('0x37')]=qs[_0x8d60('0x38')](_0xe47e8d['query'][_0x8d60('0x38')]);_0x20d8f9[_0x8d60('0x39')]=qs['filters'](_[_0x8d60('0x4c')](_0xe47e8d[_0x8d60('0x2e')],_0x70d7d2[_0x8d60('0x30')]));if(_0xe47e8d[_0x8d60('0x2e')][_0x8d60('0x3c')]){_0x20d8f9[_0x8d60('0x39')]=_[_0x8d60('0x3a')](_0x20d8f9[_0x8d60('0x39')],{'$or':_[_0x8d60('0x28')](_0x20d8f9['attributes'],function(_0x2265b){var _0x1bb6d7={};_0x1bb6d7[_0x2265b]={'$like':'%'+_0xe47e8d[_0x8d60('0x2e')][_0x8d60('0x3c')]+'%'};return _0x1bb6d7;})});}_0x20d8f9=_[_0x8d60('0x3a')]({},_0x20d8f9,_0xe47e8d[_0x8d60('0x3d')]);return _0x28b2c9[_0x8d60('0x4e')](_0x20d8f9);}})[_0x8d60('0x23')](function(_0x1d87c5){if(_0x1d87c5){_0x8419a6=_0x1d87c5['length'];if(!_0xe47e8d[_0x8d60('0x2e')]['hasOwnProperty'](_0x8d60('0x36'))){_0x20d8f9[_0x8d60('0x1d')]=qs[_0x8d60('0x1d')](_0xe47e8d[_0x8d60('0x2e')]['limit']);_0x20d8f9[_0x8d60('0x1b')]=qs[_0x8d60('0x1b')](_0xe47e8d[_0x8d60('0x2e')][_0x8d60('0x1b')]);}return _0x28b2c9[_0x8d60('0x4e')](_0x20d8f9);}})[_0x8d60('0x23')](function(_0x40e28b){if(_0x40e28b){return _0x40e28b?{'count':_0x8419a6,'rows':_0x40e28b}:null;}})[_0x8d60('0x23')](respondWithResult(_0x5bc592,null))['catch'](handleError(_0x5bc592,null));};
\ No newline at end of file
index 7e90ea6..80803b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e7=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','ServicenowConfiguration','int_servicenow_configurations','util'];(function(_0x16852f,_0x4e8e3e){var _0x13e242=function(_0xf77f45){while(--_0xf77f45){_0x16852f['push'](_0x16852f['shift']());}};_0x13e242(++_0x4e8e3e);}(_0xb9e7,0x1df));var _0x7b9e=function(_0x2c9b79,_0x7cf58b){_0x2c9b79=_0x2c9b79-0x0;var _0x265032=_0xb9e7[_0x2c9b79];return _0x265032;};'use strict';var _=require('lodash');var util=require(_0x7b9e('0x0'));var logger=require(_0x7b9e('0x1'))(_0x7b9e('0x2'));var moment=require(_0x7b9e('0x3'));var BPromise=require(_0x7b9e('0x4'));var rp=require(_0x7b9e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b9e('0x6'));var config=require(_0x7b9e('0x7'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x7b9e('0x8')]=function(_0x51a0ca,_0x3a9c5e){return _0x51a0ca[_0x7b9e('0x9')](_0x7b9e('0xa'),attributes,{'tableName':_0x7b9e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72fa=['lodash','util','api','moment','bluebird','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0x30ba6c,_0x234a17){var _0x9c7617=function(_0x166660){while(--_0x166660){_0x30ba6c['push'](_0x30ba6c['shift']());}};_0x9c7617(++_0x234a17);}(_0x72fa,0x78));var _0xa72f=function(_0x113bc1,_0x200ad4){_0x113bc1=_0x113bc1-0x0;var _0x39abbe=_0x72fa[_0x113bc1];return _0x39abbe;};'use strict';var _=require(_0xa72f('0x0'));var util=require(_0xa72f('0x1'));var logger=require('../../config/logger')(_0xa72f('0x2'));var moment=require(_0xa72f('0x3'));var BPromise=require(_0xa72f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa72f('0x5'));var config=require(_0xa72f('0x6'));var attributes=require(_0xa72f('0x7'));module[_0xa72f('0x8')]=function(_0x649c2d,_0x411f02){return _0x649c2d[_0xa72f('0x9')](_0xa72f('0xa'),attributes,{'tableName':_0xa72f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca14b6b..ad1d5ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819e=['debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','message','info','result','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x444629,_0x149f20){var _0x4d61cc=function(_0x25b934){while(--_0x25b934){_0x444629['push'](_0x444629['shift']());}};_0x4d61cc(++_0x149f20);}(_0x819e,0x141));var _0xe819=function(_0x3cbb14,_0x3c95a7){_0x3cbb14=_0x3cbb14-0x0;var _0x2bfb35=_0x819e[_0x3cbb14];return _0x2bfb35;};'use strict';var _=require('lodash');var util=require(_0xe819('0x0'));var moment=require(_0xe819('0x1'));var BPromise=require(_0xe819('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe819('0x3'));var db=require(_0xe819('0x4'))['db'];var utils=require(_0xe819('0x5'));var logger=require('../../config/logger')(_0xe819('0x6'));var config=require(_0xe819('0x7'));var jayson=require(_0xe819('0x8'));var client=jayson[_0xe819('0x9')][_0xe819('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5886f1,_0x55f12f,_0x41e0a2){return new BPromise(function(_0x365c63,_0x4148e6){return client[_0xe819('0xb')](_0x5886f1,_0x41e0a2)[_0xe819('0xc')](function(_0x486ca5){logger['info'](_0xe819('0xd'),_0x55f12f,_0xe819('0xe'));logger[_0xe819('0xf')](_0xe819('0x10'),_0x55f12f,_0xe819('0xe'),JSON['stringify'](_0x486ca5));if(_0x486ca5['error']){if(_0x486ca5[_0xe819('0x11')]['code']===0x1f4){logger['error'](_0xe819('0xd'),_0x55f12f,_0x486ca5[_0xe819('0x11')][_0xe819('0x12')]);return _0x4148e6(_0x486ca5[_0xe819('0x11')][_0xe819('0x12')]);}logger['error'](_0xe819('0xd'),_0x55f12f,_0x486ca5[_0xe819('0x11')][_0xe819('0x12')]);return _0x365c63(_0x486ca5['error'][_0xe819('0x12')]);}else{logger[_0xe819('0x13')](_0xe819('0xd'),_0x55f12f,_0xe819('0xe'));_0x365c63(_0x486ca5[_0xe819('0x14')][_0xe819('0x12')]);}})['catch'](function(_0x1d01f0){logger[_0xe819('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0x55f12f,_0x1d01f0);_0x4148e6(_0x1d01f0);});});}
\ No newline at end of file
+var _0x27a0=['message','util','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','http','request','info','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x1dac81,_0x1e025d){var _0x523188=function(_0x11ab26){while(--_0x11ab26){_0x1dac81['push'](_0x1dac81['shift']());}};_0x523188(++_0x1e025d);}(_0x27a0,0xbf));var _0x027a=function(_0x213f76,_0x434095){_0x213f76=_0x213f76-0x0;var _0x4ef93f=_0x27a0[_0x213f76];return _0x4ef93f;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var moment=require(_0x027a('0x1'));var BPromise=require(_0x027a('0x2'));var rs=require(_0x027a('0x3'));var fs=require('fs');var Redis=require(_0x027a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x027a('0x5'));var jayson=require(_0x027a('0x6'));var client=jayson[_0x027a('0x7')][_0x027a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe233ed,_0x3c7d67,_0x550fbb){return new BPromise(function(_0x3d1429,_0x271dfe){return client[_0x027a('0x9')](_0xe233ed,_0x550fbb)['then'](function(_0x44c56a){logger[_0x027a('0xa')](_0x027a('0xb'),_0x3c7d67,'request\x20sent');logger[_0x027a('0xc')](_0x027a('0xd'),_0x3c7d67,_0x027a('0xe'),JSON[_0x027a('0xf')](_0x44c56a));if(_0x44c56a[_0x027a('0x10')]){if(_0x44c56a[_0x027a('0x10')][_0x027a('0x11')]===0x1f4){logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x271dfe(_0x44c56a['error'][_0x027a('0x12')]);}logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x3d1429(_0x44c56a['error']['message']);}else{logger[_0x027a('0xa')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c7d67,_0x027a('0xe'));_0x3d1429(_0x44c56a['result'][_0x027a('0x12')]);}})['catch'](function(_0x4dc3ab){logger['error'](_0x027a('0xb'),_0x3c7d67,_0x4dc3ab);_0x271dfe(_0x4dc3ab);});});}
\ No newline at end of file
index f696d18..ab5e842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cea=['index','get','/:id','show','post','create','put','delete','isAuthenticated','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller'];(function(_0x32a41c,_0xa57f57){var _0xcab33b=function(_0x84a75b){while(--_0x84a75b){_0x32a41c['push'](_0x32a41c['shift']());}};_0xcab33b(++_0xa57f57);}(_0x0cea,0x69));var _0xa0ce=function(_0x1dc64f,_0x36da12){_0x1dc64f=_0x1dc64f-0x0;var _0x27963c=_0x0cea[_0x1dc64f];return _0x27963c;};'use strict';var multer=require(_0xa0ce('0x0'));var util=require(_0xa0ce('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa0ce('0x2'));var router=express[_0xa0ce('0x3')]();var fs_extra=require(_0xa0ce('0x4'));var auth=require(_0xa0ce('0x5'));var interaction=require(_0xa0ce('0x6'));var config=require(_0xa0ce('0x7'));var controller=require(_0xa0ce('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xa0ce('0x9')]);router[_0xa0ce('0xa')](_0xa0ce('0xb'),auth['isAuthenticated'](),controller[_0xa0ce('0xc')]);router[_0xa0ce('0xd')]('/',auth['isAuthenticated'](),controller[_0xa0ce('0xe')]);router[_0xa0ce('0xf')](_0xa0ce('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xa0ce('0x10')](_0xa0ce('0xb'),auth[_0xa0ce('0x11')](),controller[_0xa0ce('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x437d=['post','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index'];(function(_0x412d0d,_0x58eb6f){var _0x507f71=function(_0x530bac){while(--_0x530bac){_0x412d0d['push'](_0x412d0d['shift']());}};_0x507f71(++_0x58eb6f);}(_0x437d,0x1e0));var _0xd437=function(_0x53a0ab,_0xd4ec94){_0x53a0ab=_0x53a0ab-0x0;var _0x185634=_0x437d[_0x53a0ab];return _0x185634;};'use strict';var multer=require(_0xd437('0x0'));var util=require(_0xd437('0x1'));var path=require(_0xd437('0x2'));var timeout=require(_0xd437('0x3'));var express=require(_0xd437('0x4'));var router=express[_0xd437('0x5')]();var fs_extra=require(_0xd437('0x6'));var auth=require(_0xd437('0x7'));var interaction=require(_0xd437('0x8'));var config=require(_0xd437('0x9'));var controller=require(_0xd437('0xa'));router[_0xd437('0xb')]('/',auth[_0xd437('0xc')](),controller[_0xd437('0xd')]);router['get']('/:id',auth[_0xd437('0xc')](),controller['show']);router[_0xd437('0xe')]('/',auth[_0xd437('0xc')](),controller['create']);router[_0xd437('0xf')](_0xd437('0x10'),auth[_0xd437('0xc')](),controller['update']);router[_0xd437('0x11')](_0xd437('0x10'),auth[_0xd437('0xc')](),controller[_0xd437('0x12')]);module['exports']=router;
\ No newline at end of file
index b59cae2..aa36526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741c=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x257022,_0x509758){var _0x4ae481=function(_0x1ba426){while(--_0x1ba426){_0x257022['push'](_0x257022['shift']());}};_0x4ae481(++_0x509758);}(_0x741c,0x1b1));var _0xc741=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x741c[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xc741('0x0'));module[_0xc741('0x1')]={'type':{'type':Sequelize[_0xc741('0x2')](_0xc741('0x3'),_0xc741('0x4'),_0xc741('0x5'),_0xc741('0x6'),'picklist'),'defaultValue':_0xc741('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xc741('0x2')](_0xc741('0x3'),_0xc741('0x4'),_0xc741('0x5'))},'keyContent':{'type':Sequelize[_0xc741('0x7')]},'idField':{'type':Sequelize[_0xc741('0x7')]},'nameField':{'type':Sequelize[_0xc741('0x7')]},'customField':{'type':Sequelize[_0xc741('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc741('0x7')]}};
\ No newline at end of file
+var _0x1572=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x19af0a,_0x5e5f05){var _0x3491ea=function(_0x197002){while(--_0x197002){_0x19af0a['push'](_0x19af0a['shift']());}};_0x3491ea(++_0x5e5f05);}(_0x1572,0xed));var _0x2157=function(_0x29b9f2,_0x3c0a61){_0x29b9f2=_0x29b9f2-0x0;var _0x3e6dd2=_0x1572[_0x29b9f2];return _0x3e6dd2;};'use strict';var Sequelize=require(_0x2157('0x0'));module[_0x2157('0x1')]={'type':{'type':Sequelize[_0x2157('0x2')](_0x2157('0x3'),_0x2157('0x4'),_0x2157('0x5'),_0x2157('0x6'),_0x2157('0x7')),'defaultValue':_0x2157('0x3')},'content':{'type':Sequelize[_0x2157('0x8')]},'key':{'type':Sequelize[_0x2157('0x8')]},'keyType':{'type':Sequelize[_0x2157('0x2')]('string',_0x2157('0x4'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x2157('0x8')]},'nameField':{'type':Sequelize[_0x2157('0x8')]},'customField':{'type':Sequelize[_0x2157('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5f9d42e..91597d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f5=['undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','options','findAll','rows','catch','show','params','keys','length','includeAll','include','find','create','body','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe3f5,0x1a2));var _0x5e3f=function(_0x5e12e4,_0x52ba3c){_0x5e12e4=_0x5e12e4-0x0;var _0x53c6cb=_0xe3f5[_0x5e12e4];return _0x53c6cb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e3f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5e3f('0x1'));var BPromise=require(_0x5e3f('0x2'));var Mustache=require('mustache');var util=require(_0x5e3f('0x3'));var path=require(_0x5e3f('0x4'));var sox=require(_0x5e3f('0x5'));var csv=require(_0x5e3f('0x6'));var ejs=require(_0x5e3f('0x7'));var fs=require('fs');var fs_extra=require(_0x5e3f('0x8'));var _=require(_0x5e3f('0x9'));var squel=require('squel');var crypto=require(_0x5e3f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5e3f('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5e3f('0xc'));var Redis=require(_0x5e3f('0xd'));var authService=require(_0x5e3f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x5e3f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e3f('0x10'))(_0x5e3f('0x11'));var utils=require(_0x5e3f('0x12'));var config=require(_0x5e3f('0x13'));var licenseUtil=require(_0x5e3f('0x14'));var db=require(_0x5e3f('0x15'))['db'];function respondWithStatusCode(_0x2aa991,_0x28419d){_0x28419d=_0x28419d||0xcc;return function(_0x99024a){if(_0x99024a){return _0x2aa991[_0x5e3f('0x16')](_0x28419d);}return _0x2aa991[_0x5e3f('0x17')](_0x28419d)[_0x5e3f('0x18')]();};}function respondWithResult(_0x5ca8c5,_0x52b7ed){_0x52b7ed=_0x52b7ed||0xc8;return function(_0x5f4b5e){if(_0x5f4b5e){return _0x5ca8c5['status'](_0x52b7ed)[_0x5e3f('0x19')](_0x5f4b5e);}};}function respondWithFilteredResult(_0x39e048,_0x1141f3){return function(_0x4f793e){if(_0x4f793e){var _0x2e355d=typeof _0x1141f3['offset']===_0x5e3f('0x1a')&&typeof _0x1141f3[_0x5e3f('0x1b')]===_0x5e3f('0x1a');var _0x1c8782=_0x4f793e['count'];var _0x18d30a=_0x2e355d?0x0:_0x1141f3['offset'];var _0x35c486=_0x2e355d?_0x4f793e[_0x5e3f('0x1c')]:_0x1141f3['offset']+_0x1141f3['limit'];var _0x569179;if(_0x35c486>=_0x1c8782){_0x35c486=_0x1c8782;_0x569179=0xc8;}else{_0x569179=0xce;}_0x39e048[_0x5e3f('0x17')](_0x569179);return _0x39e048[_0x5e3f('0x1d')](_0x5e3f('0x1e'),_0x18d30a+'-'+_0x35c486+'/'+_0x1c8782)[_0x5e3f('0x19')](_0x4f793e);}return null;};}function patchUpdates(_0x31349e){return function(_0x31a0e3){try{jsonpatch[_0x5e3f('0x1f')](_0x31a0e3,_0x31349e,!![]);}catch(_0x1a6fce){return BPromise['reject'](_0x1a6fce);}return _0x31a0e3[_0x5e3f('0x20')]();};}function saveUpdates(_0x797e10,_0x26d606){return function(_0x46cf77){if(_0x46cf77){return _0x46cf77[_0x5e3f('0x21')](_0x797e10)[_0x5e3f('0x22')](function(_0x276125){return _0x276125;});}return null;};}function removeEntity(_0x5a3f6b,_0x22546b){return function(_0x528b4d){if(_0x528b4d){return _0x528b4d['destroy']()[_0x5e3f('0x22')](function(){_0x5a3f6b[_0x5e3f('0x17')](0xcc)[_0x5e3f('0x18')]();});}};}function handleEntityNotFound(_0xac75df,_0x3f2e20){return function(_0x19b4c5){if(!_0x19b4c5){_0xac75df[_0x5e3f('0x16')](0x194);}return _0x19b4c5;};}function handleError(_0x15f222,_0x288ad1){_0x288ad1=_0x288ad1||0x1f4;return function(_0x3abf3f){logger[_0x5e3f('0x23')](_0x3abf3f['stack']);if(_0x3abf3f[_0x5e3f('0x24')]){delete _0x3abf3f[_0x5e3f('0x24')];}_0x15f222[_0x5e3f('0x17')](_0x288ad1)[_0x5e3f('0x25')](_0x3abf3f);};}exports[_0x5e3f('0x26')]=function(_0x4c7535,_0x198828){var _0x28e1fb={},_0x244d75={},_0x1384ae={'count':0x0,'rows':[]};var _0xfd29e9=_['map'](db[_0x5e3f('0x27')][_0x5e3f('0x28')],function(_0x314928){return{'name':_0x314928[_0x5e3f('0x29')],'type':_0x314928[_0x5e3f('0x2a')][_0x5e3f('0x2b')]};});_0x244d75['model']=_[_0x5e3f('0x2c')](_0xfd29e9,_0x5e3f('0x24'));_0x244d75['query']=_['keys'](_0x4c7535[_0x5e3f('0x2d')]);_0x244d75[_0x5e3f('0x2e')]=_['intersection'](_0x244d75[_0x5e3f('0x2f')],_0x244d75['query']);_0x28e1fb[_0x5e3f('0x30')]=_[_0x5e3f('0x31')](_0x244d75[_0x5e3f('0x2f')],qs[_0x5e3f('0x32')](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x32')]));_0x28e1fb['attributes']=_0x28e1fb['attributes']['length']?_0x28e1fb['attributes']:_0x244d75['model'];if(!_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x33')](_0x5e3f('0x34'))){_0x28e1fb[_0x5e3f('0x1b')]=qs['limit'](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x1b')]);_0x28e1fb[_0x5e3f('0x35')]=qs[_0x5e3f('0x35')](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x35')]);}_0x28e1fb[_0x5e3f('0x36')]=qs[_0x5e3f('0x37')](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x37')]);_0x28e1fb['where']=qs[_0x5e3f('0x2e')](_[_0x5e3f('0x38')](_0x4c7535[_0x5e3f('0x2d')],_0x244d75[_0x5e3f('0x2e')]),_0xfd29e9);if(_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x39')]){_0x28e1fb[_0x5e3f('0x3a')]=_[_0x5e3f('0x3b')](_0x28e1fb[_0x5e3f('0x3a')],{'$or':_['map'](_0xfd29e9,function(_0x1c13ab){if(_0x1c13ab[_0x5e3f('0x2a')]!==_0x5e3f('0x3c')){var _0x5a15aa={};_0x5a15aa[_0x1c13ab[_0x5e3f('0x24')]]={'$like':'%'+_0x4c7535[_0x5e3f('0x2d')]['filter']+'%'};return _0x5a15aa;}})});}_0x28e1fb=_[_0x5e3f('0x3b')]({},_0x28e1fb,_0x4c7535[_0x5e3f('0x3d')]);var _0x538981={'where':_0x28e1fb[_0x5e3f('0x3a')]};return db[_0x5e3f('0x27')][_0x5e3f('0x1c')](_0x538981)[_0x5e3f('0x22')](function(_0x271499){_0x1384ae[_0x5e3f('0x1c')]=_0x271499;if(_0x4c7535[_0x5e3f('0x2d')]['includeAll']){_0x28e1fb['include']=[{'all':!![]}];}return db[_0x5e3f('0x27')][_0x5e3f('0x3e')](_0x28e1fb);})[_0x5e3f('0x22')](function(_0x352b81){_0x1384ae[_0x5e3f('0x3f')]=_0x352b81;return _0x1384ae;})['then'](respondWithFilteredResult(_0x198828,_0x28e1fb))[_0x5e3f('0x40')](handleError(_0x198828,null));};exports[_0x5e3f('0x41')]=function(_0x1c4ef4,_0x119adf){var _0x27a63b={'raw':!![],'where':{'id':_0x1c4ef4[_0x5e3f('0x42')]['id']}},_0x4f04df={};_0x4f04df[_0x5e3f('0x2f')]=_[_0x5e3f('0x43')](db[_0x5e3f('0x27')][_0x5e3f('0x28')]);_0x4f04df['query']=_[_0x5e3f('0x43')](_0x1c4ef4[_0x5e3f('0x2d')]);_0x4f04df[_0x5e3f('0x2e')]=_[_0x5e3f('0x31')](_0x4f04df[_0x5e3f('0x2f')],_0x4f04df[_0x5e3f('0x2d')]);_0x27a63b[_0x5e3f('0x30')]=_[_0x5e3f('0x31')](_0x4f04df[_0x5e3f('0x2f')],qs[_0x5e3f('0x32')](_0x1c4ef4[_0x5e3f('0x2d')][_0x5e3f('0x32')]));_0x27a63b['attributes']=_0x27a63b[_0x5e3f('0x30')][_0x5e3f('0x44')]?_0x27a63b[_0x5e3f('0x30')]:_0x4f04df[_0x5e3f('0x2f')];if(_0x1c4ef4['query'][_0x5e3f('0x45')]){_0x27a63b[_0x5e3f('0x46')]=[{'all':!![]}];}_0x27a63b=_[_0x5e3f('0x3b')]({},_0x27a63b,_0x1c4ef4[_0x5e3f('0x3d')]);return db['ServicenowField'][_0x5e3f('0x47')](_0x27a63b)[_0x5e3f('0x22')](handleEntityNotFound(_0x119adf,null))[_0x5e3f('0x22')](respondWithResult(_0x119adf,null))[_0x5e3f('0x40')](handleError(_0x119adf,null));};exports[_0x5e3f('0x48')]=function(_0x374852,_0x23756c){return db[_0x5e3f('0x27')][_0x5e3f('0x48')](_0x374852['body'],{})[_0x5e3f('0x22')](respondWithResult(_0x23756c,0xc9))['catch'](handleError(_0x23756c,null));};exports[_0x5e3f('0x21')]=function(_0x12abf6,_0xee093){if(_0x12abf6[_0x5e3f('0x49')]['id']){delete _0x12abf6['body']['id'];}return db[_0x5e3f('0x27')]['find']({'where':{'id':_0x12abf6[_0x5e3f('0x42')]['id']}})[_0x5e3f('0x22')](handleEntityNotFound(_0xee093,null))['then'](saveUpdates(_0x12abf6[_0x5e3f('0x49')],null))[_0x5e3f('0x22')](respondWithResult(_0xee093,null))[_0x5e3f('0x40')](handleError(_0xee093,null));};exports['destroy']=function(_0x344eda,_0x565cd2){return db['ServicenowField'][_0x5e3f('0x47')]({'where':{'id':_0x344eda[_0x5e3f('0x42')]['id']}})['then'](handleEntityNotFound(_0x565cd2,null))['then'](removeEntity(_0x565cd2,null))['catch'](handleError(_0x565cd2,null));};
\ No newline at end of file
+var _0x8a88=['status','json','offset','undefined','limit','count','set','apply','save','update','end','error','stack','name','index','map','ServicenowField','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','then','includeAll','include','findAll','rows','catch','show','find','create','body','params','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x5f49a2,_0x54b7ed){var _0x2e49ac=function(_0x5d3c59){while(--_0x5d3c59){_0x5f49a2['push'](_0x5f49a2['shift']());}};_0x2e49ac(++_0x54b7ed);}(_0x8a88,0xbe));var _0x88a8=function(_0x409ad2,_0x5129c1){_0x409ad2=_0x409ad2-0x0;var _0x595b5f=_0x8a88[_0x409ad2];return _0x595b5f;};'use strict';var emlformat=require(_0x88a8('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x88a8('0x1'));var rp=require(_0x88a8('0x2'));var moment=require(_0x88a8('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x88a8('0x4'));var util=require(_0x88a8('0x5'));var path=require(_0x88a8('0x6'));var sox=require(_0x88a8('0x7'));var csv=require(_0x88a8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x88a8('0x9'));var squel=require('squel');var crypto=require(_0x88a8('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x88a8('0xb'));var toCsv=require(_0x88a8('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x88a8('0xc'));var authService=require(_0x88a8('0xd'));var qs=require(_0x88a8('0xe'));var as=require(_0x88a8('0xf'));var hardwareService=require(_0x88a8('0x10'));var logger=require(_0x88a8('0x11'))(_0x88a8('0x12'));var utils=require(_0x88a8('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x88a8('0x14'));var db=require(_0x88a8('0x15'))['db'];function respondWithStatusCode(_0x1b63ba,_0x1a897c){_0x1a897c=_0x1a897c||0xcc;return function(_0x16c88d){if(_0x16c88d){return _0x1b63ba[_0x88a8('0x16')](_0x1a897c);}return _0x1b63ba[_0x88a8('0x17')](_0x1a897c)['end']();};}function respondWithResult(_0x5399eb,_0x5d7167){_0x5d7167=_0x5d7167||0xc8;return function(_0x43f767){if(_0x43f767){return _0x5399eb[_0x88a8('0x17')](_0x5d7167)[_0x88a8('0x18')](_0x43f767);}};}function respondWithFilteredResult(_0xd6c3f1,_0x1144ee){return function(_0x2a72d5){if(_0x2a72d5){var _0x561248=typeof _0x1144ee[_0x88a8('0x19')]===_0x88a8('0x1a')&&typeof _0x1144ee[_0x88a8('0x1b')]===_0x88a8('0x1a');var _0x2a8285=_0x2a72d5[_0x88a8('0x1c')];var _0x1b58b5=_0x561248?0x0:_0x1144ee[_0x88a8('0x19')];var _0x5df75b=_0x561248?_0x2a72d5[_0x88a8('0x1c')]:_0x1144ee[_0x88a8('0x19')]+_0x1144ee[_0x88a8('0x1b')];var _0x36d718;if(_0x5df75b>=_0x2a8285){_0x5df75b=_0x2a8285;_0x36d718=0xc8;}else{_0x36d718=0xce;}_0xd6c3f1[_0x88a8('0x17')](_0x36d718);return _0xd6c3f1[_0x88a8('0x1d')]('Content-Range',_0x1b58b5+'-'+_0x5df75b+'/'+_0x2a8285)[_0x88a8('0x18')](_0x2a72d5);}return null;};}function patchUpdates(_0x449f47){return function(_0x4cd536){try{jsonpatch[_0x88a8('0x1e')](_0x4cd536,_0x449f47,!![]);}catch(_0x57b095){return BPromise['reject'](_0x57b095);}return _0x4cd536[_0x88a8('0x1f')]();};}function saveUpdates(_0x2bafed,_0x2497f8){return function(_0x5bf631){if(_0x5bf631){return _0x5bf631[_0x88a8('0x20')](_0x2bafed)['then'](function(_0x39c5e4){return _0x39c5e4;});}return null;};}function removeEntity(_0x33f2e0,_0x29db1f){return function(_0x425650){if(_0x425650){return _0x425650['destroy']()['then'](function(){_0x33f2e0[_0x88a8('0x17')](0xcc)[_0x88a8('0x21')]();});}};}function handleEntityNotFound(_0x7189b8,_0x299444){return function(_0x238c9b){if(!_0x238c9b){_0x7189b8['sendStatus'](0x194);}return _0x238c9b;};}function handleError(_0x5bdbb4,_0x496178){_0x496178=_0x496178||0x1f4;return function(_0x55b054){logger[_0x88a8('0x22')](_0x55b054[_0x88a8('0x23')]);if(_0x55b054['name']){delete _0x55b054[_0x88a8('0x24')];}_0x5bdbb4[_0x88a8('0x17')](_0x496178)['send'](_0x55b054);};}exports[_0x88a8('0x25')]=function(_0x5075ce,_0x13a7d5){var _0xfe59c5={},_0xe461a8={},_0x12d6a6={'count':0x0,'rows':[]};var _0x1519a8=_[_0x88a8('0x26')](db[_0x88a8('0x27')][_0x88a8('0x28')],function(_0xf50ded){return{'name':_0xf50ded[_0x88a8('0x29')],'type':_0xf50ded[_0x88a8('0x2a')][_0x88a8('0x2b')]};});_0xe461a8['model']=_['map'](_0x1519a8,_0x88a8('0x24'));_0xe461a8[_0x88a8('0x2c')]=_[_0x88a8('0x2d')](_0x5075ce[_0x88a8('0x2c')]);_0xe461a8['filters']=_[_0x88a8('0x2e')](_0xe461a8[_0x88a8('0x2f')],_0xe461a8[_0x88a8('0x2c')]);_0xfe59c5['attributes']=_[_0x88a8('0x2e')](_0xe461a8[_0x88a8('0x2f')],qs[_0x88a8('0x30')](_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x30')]));_0xfe59c5[_0x88a8('0x31')]=_0xfe59c5[_0x88a8('0x31')][_0x88a8('0x32')]?_0xfe59c5[_0x88a8('0x31')]:_0xe461a8[_0x88a8('0x2f')];if(!_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x33')](_0x88a8('0x34'))){_0xfe59c5[_0x88a8('0x1b')]=qs[_0x88a8('0x1b')](_0x5075ce['query'][_0x88a8('0x1b')]);_0xfe59c5['offset']=qs['offset'](_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x19')]);}_0xfe59c5[_0x88a8('0x35')]=qs['sort'](_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x36')]);_0xfe59c5[_0x88a8('0x37')]=qs[_0x88a8('0x38')](_['pick'](_0x5075ce[_0x88a8('0x2c')],_0xe461a8['filters']),_0x1519a8);if(_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x39')]){_0xfe59c5[_0x88a8('0x37')]=_[_0x88a8('0x3a')](_0xfe59c5[_0x88a8('0x37')],{'$or':_[_0x88a8('0x26')](_0x1519a8,function(_0x1666ed){if(_0x1666ed[_0x88a8('0x2a')]!=='VIRTUAL'){var _0x1aa063={};_0x1aa063[_0x1666ed[_0x88a8('0x24')]]={'$like':'%'+_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x39')]+'%'};return _0x1aa063;}})});}_0xfe59c5=_[_0x88a8('0x3a')]({},_0xfe59c5,_0x5075ce[_0x88a8('0x3b')]);var _0x4d5661={'where':_0xfe59c5[_0x88a8('0x37')]};return db['ServicenowField'][_0x88a8('0x1c')](_0x4d5661)[_0x88a8('0x3c')](function(_0x49bc5b){_0x12d6a6[_0x88a8('0x1c')]=_0x49bc5b;if(_0x5075ce[_0x88a8('0x2c')][_0x88a8('0x3d')]){_0xfe59c5[_0x88a8('0x3e')]=[{'all':!![]}];}return db[_0x88a8('0x27')][_0x88a8('0x3f')](_0xfe59c5);})['then'](function(_0x4813e9){_0x12d6a6[_0x88a8('0x40')]=_0x4813e9;return _0x12d6a6;})[_0x88a8('0x3c')](respondWithFilteredResult(_0x13a7d5,_0xfe59c5))[_0x88a8('0x41')](handleError(_0x13a7d5,null));};exports[_0x88a8('0x42')]=function(_0x2745c0,_0x30f5ba){var _0x241e4e={'raw':!![],'where':{'id':_0x2745c0['params']['id']}},_0x5d69da={};_0x5d69da['model']=_['keys'](db[_0x88a8('0x27')]['rawAttributes']);_0x5d69da['query']=_['keys'](_0x2745c0[_0x88a8('0x2c')]);_0x5d69da['filters']=_['intersection'](_0x5d69da[_0x88a8('0x2f')],_0x5d69da[_0x88a8('0x2c')]);_0x241e4e['attributes']=_[_0x88a8('0x2e')](_0x5d69da[_0x88a8('0x2f')],qs[_0x88a8('0x30')](_0x2745c0[_0x88a8('0x2c')][_0x88a8('0x30')]));_0x241e4e['attributes']=_0x241e4e[_0x88a8('0x31')][_0x88a8('0x32')]?_0x241e4e[_0x88a8('0x31')]:_0x5d69da[_0x88a8('0x2f')];if(_0x2745c0[_0x88a8('0x2c')][_0x88a8('0x3d')]){_0x241e4e[_0x88a8('0x3e')]=[{'all':!![]}];}_0x241e4e=_['merge']({},_0x241e4e,_0x2745c0[_0x88a8('0x3b')]);return db[_0x88a8('0x27')][_0x88a8('0x43')](_0x241e4e)['then'](handleEntityNotFound(_0x30f5ba,null))[_0x88a8('0x3c')](respondWithResult(_0x30f5ba,null))[_0x88a8('0x41')](handleError(_0x30f5ba,null));};exports[_0x88a8('0x44')]=function(_0x21e092,_0x182186){return db['ServicenowField']['create'](_0x21e092[_0x88a8('0x45')],{})['then'](respondWithResult(_0x182186,0xc9))[_0x88a8('0x41')](handleError(_0x182186,null));};exports['update']=function(_0x38acf0,_0x4205b4){if(_0x38acf0[_0x88a8('0x45')]['id']){delete _0x38acf0[_0x88a8('0x45')]['id'];}return db[_0x88a8('0x27')]['find']({'where':{'id':_0x38acf0[_0x88a8('0x46')]['id']}})[_0x88a8('0x3c')](handleEntityNotFound(_0x4205b4,null))['then'](saveUpdates(_0x38acf0[_0x88a8('0x45')],null))[_0x88a8('0x3c')](respondWithResult(_0x4205b4,null))[_0x88a8('0x41')](handleError(_0x4205b4,null));};exports['destroy']=function(_0x43ec35,_0x23c101){return db[_0x88a8('0x27')]['find']({'where':{'id':_0x43ec35[_0x88a8('0x46')]['id']}})[_0x88a8('0x3c')](handleEntityNotFound(_0x23c101,null))[_0x88a8('0x3c')](removeEntity(_0x23c101,null))['catch'](handleError(_0x23c101,null));};
\ No newline at end of file
index eba54b6..bb916e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb312=['request-promise','path','rimraf','../../config/environment','exports','ServicenowField','servicenow_unique_index','idField','lodash','../../config/logger','api','moment'];(function(_0x532af5,_0xc1a14f){var _0x55ca01=function(_0xedd524){while(--_0xedd524){_0x532af5['push'](_0x532af5['shift']());}};_0x55ca01(++_0xc1a14f);}(_0xb312,0xec));var _0x2b31=function(_0x5861d7,_0x3f9d0e){_0x5861d7=_0x5861d7-0x0;var _0x234f4e=_0xb312[_0x5861d7];return _0x234f4e;};'use strict';var _=require(_0x2b31('0x0'));var util=require('util');var logger=require(_0x2b31('0x1'))(_0x2b31('0x2'));var moment=require(_0x2b31('0x3'));var BPromise=require('bluebird');var rp=require(_0x2b31('0x4'));var fs=require('fs');var path=require(_0x2b31('0x5'));var rimraf=require(_0x2b31('0x6'));var config=require(_0x2b31('0x7'));var attributes=require('./intServicenowField.attributes');module[_0x2b31('0x8')]=function(_0x164b59,_0x2e75c7){return _0x164b59['define'](_0x2b31('0x9'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x2b31('0xa'),'fields':[_0x2b31('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e3=['path','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','lodash','util','api','bluebird','request-promise'];(function(_0x1c7e86,_0x24906b){var _0x238734=function(_0x4940dd){while(--_0x4940dd){_0x1c7e86['push'](_0x1c7e86['shift']());}};_0x238734(++_0x24906b);}(_0xa9e3,0x187));var _0x3a9e=function(_0x44636e,_0x1d257a){_0x44636e=_0x44636e-0x0;var _0x30fd87=_0xa9e3[_0x44636e];return _0x30fd87;};'use strict';var _=require(_0x3a9e('0x0'));var util=require(_0x3a9e('0x1'));var logger=require('../../config/logger')(_0x3a9e('0x2'));var moment=require('moment');var BPromise=require(_0x3a9e('0x3'));var rp=require(_0x3a9e('0x4'));var fs=require('fs');var path=require(_0x3a9e('0x5'));var rimraf=require('rimraf');var config=require(_0x3a9e('0x6'));var attributes=require(_0x3a9e('0x7'));module[_0x3a9e('0x8')]=function(_0x43e755,_0x1fbac1){return _0x43e755[_0x3a9e('0x9')](_0x3a9e('0xa'),attributes,{'tableName':_0x3a9e('0xb'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 92578b7..ea81e8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2d7fe2,_0x45ea5a){var _0x3ba5ac=function(_0xd001d1){while(--_0xd001d1){_0x2d7fe2['push'](_0x2d7fe2['shift']());}};_0x3ba5ac(++_0x45ea5a);}(_0x70e0,0x17b));var _0x070e=function(_0x350459,_0x8b3a7a){_0x350459=_0x350459-0x0;var _0x2cf06e=_0x70e0[_0x350459];return _0x2cf06e;};'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')]('ServicenowField,\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')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('ServicenowField,\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
+var _0xb7e7=['ServicenowField,\x20%s,\x20%s','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x274fd3,_0x4216bd){var _0x516ca9=function(_0x1c96d9){while(--_0x1c96d9){_0x274fd3['push'](_0x274fd3['shift']());}};_0x516ca9(++_0x4216bd);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5834bc,_0x3d4801){_0x5834bc=_0x5834bc-0x0;var _0x3e183a=_0xb7e7[_0x5834bc];return _0x3e183a;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}
\ No newline at end of file
index 81ca843..41d0220 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(_0x2ac383,_0x12c989){var _0x539034=function(_0xa4ddea){while(--_0xa4ddea){_0x2ac383['push'](_0x2ac383['shift']());}};_0x539034(++_0x12c989);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x131390,_0x134909){var _0x599c5b=function(_0x4a35db){while(--_0x4a35db){_0x131390['push'](_0x131390['shift']());}};_0x599c5b(++_0x134909);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index d9c4db4..a01c4eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x54bff1,_0x9ae796){var _0x42fd12=function(_0x5ff185){while(--_0x5ff185){_0x54bff1['push'](_0x54bff1['shift']());}};_0x42fd12(++_0x9ae796);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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(_0xd12170,_0x364abd){var _0x4590c6=function(_0x39ede3){while(--_0x39ede3){_0xd12170['push'](_0xd12170['shift']());}};_0x4590c6(++_0x364abd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 731cac0..23d63c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xface=['lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','remove','includes','label','endsWith','values','test','statusCode','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','destroy','error','stack','name','send','index','SugarcrmAccount','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','then','catch','show','keys','create','body','update','find','params','findOne','SugarcrmConfiguration','order','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','substring'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xface,0x8f));var _0xefac=function(_0x8c7c56,_0x3887b9){_0x8c7c56=_0x8c7c56-0x0;var _0xdd8216=_0xface[_0x8c7c56];return _0xdd8216;};'use strict';var emlformat=require(_0xefac('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xefac('0x1'));var jsonpatch=require(_0xefac('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xefac('0x3'));var Mustache=require(_0xefac('0x4'));var util=require('util');var path=require(_0xefac('0x5'));var sox=require(_0xefac('0x6'));var csv=require(_0xefac('0x7'));var ejs=require(_0xefac('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xefac('0x9'));var squel=require(_0xefac('0xa'));var crypto=require(_0xefac('0xb'));var jsforce=require(_0xefac('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xefac('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xefac('0xd'));var authService=require(_0xefac('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xefac('0xf'));var hardwareService=require(_0xefac('0x10'));var logger=require(_0xefac('0x11'))(_0xefac('0x12'));var utils=require('../../config/utils');var config=require(_0xefac('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xefac('0x14'));function respondWithStatusCode(_0x3e67e6,_0x357b46){_0x357b46=_0x357b46||0xcc;return function(_0x599527){if(_0x599527){return _0x3e67e6[_0xefac('0x15')](_0x357b46);}return _0x3e67e6[_0xefac('0x16')](_0x357b46)[_0xefac('0x17')]();};}function respondWithResult(_0x3bfa89,_0x4cebed){_0x4cebed=_0x4cebed||0xc8;return function(_0x469d2f){if(_0x469d2f){return _0x3bfa89['status'](_0x4cebed)[_0xefac('0x18')](_0x469d2f);}};}function respondWithFilteredResult(_0x26f775,_0x3a2367){return function(_0x4d40cb){if(_0x4d40cb){var _0x2061a0=typeof _0x3a2367['offset']==='undefined'&&typeof _0x3a2367[_0xefac('0x19')]===_0xefac('0x1a');var _0x49c305=_0x4d40cb[_0xefac('0x1b')];var _0x33a925=_0x2061a0?0x0:_0x3a2367[_0xefac('0x1c')];var _0x3ab731=_0x2061a0?_0x4d40cb[_0xefac('0x1b')]:_0x3a2367[_0xefac('0x1c')]+_0x3a2367[_0xefac('0x19')];var _0x5bc1b1;if(_0x3ab731>=_0x49c305){_0x3ab731=_0x49c305;_0x5bc1b1=0xc8;}else{_0x5bc1b1=0xce;}_0x26f775[_0xefac('0x16')](_0x5bc1b1);return _0x26f775[_0xefac('0x1d')](_0xefac('0x1e'),_0x33a925+'-'+_0x3ab731+'/'+_0x49c305)['json'](_0x4d40cb);}return null;};}function patchUpdates(_0x462829){return function(_0x1cd7cc){try{jsonpatch[_0xefac('0x1f')](_0x1cd7cc,_0x462829,!![]);}catch(_0x55af97){return BPromise['reject'](_0x55af97);}return _0x1cd7cc[_0xefac('0x20')]();};}function saveUpdates(_0x6aeb61,_0x5f50e6){return function(_0x29c63d){if(_0x29c63d){return _0x29c63d['update'](_0x6aeb61)['then'](function(_0xb3c2d){return _0xb3c2d;});}return null;};}function removeEntity(_0x110d68,_0x4dcbbb){return function(_0x44f042){if(_0x44f042){return _0x44f042[_0xefac('0x21')]()['then'](function(){_0x110d68[_0xefac('0x16')](0xcc)[_0xefac('0x17')]();});}};}function handleEntityNotFound(_0x29a999,_0x1361a6){return function(_0x157ea1){if(!_0x157ea1){_0x29a999[_0xefac('0x15')](0x194);}return _0x157ea1;};}function handleError(_0xa2639a,_0x30e968){_0x30e968=_0x30e968||0x1f4;return function(_0x13ec0e){logger[_0xefac('0x22')](_0x13ec0e[_0xefac('0x23')]);if(_0x13ec0e[_0xefac('0x24')]){delete _0x13ec0e[_0xefac('0x24')];}_0xa2639a[_0xefac('0x16')](_0x30e968)[_0xefac('0x25')](_0x13ec0e);};}exports[_0xefac('0x26')]=function(_0x24fb9f,_0x27e7b8){var _0x5f36cd={},_0x5c4c1a={},_0x1b354d={'count':0x0,'rows':[]};var _0x16ad69=_['map'](db[_0xefac('0x27')][_0xefac('0x28')],function(_0x45ad68){return{'name':_0x45ad68['fieldName'],'type':_0x45ad68[_0xefac('0x29')][_0xefac('0x2a')]};});_0x5c4c1a[_0xefac('0x2b')]=_[_0xefac('0x2c')](_0x16ad69,_0xefac('0x24'));_0x5c4c1a[_0xefac('0x2d')]=_['keys'](_0x24fb9f[_0xefac('0x2d')]);_0x5c4c1a[_0xefac('0x2e')]=_[_0xefac('0x2f')](_0x5c4c1a[_0xefac('0x2b')],_0x5c4c1a[_0xefac('0x2d')]);_0x5f36cd['attributes']=_[_0xefac('0x2f')](_0x5c4c1a[_0xefac('0x2b')],qs[_0xefac('0x30')](_0x24fb9f['query']['fields']));_0x5f36cd[_0xefac('0x31')]=_0x5f36cd[_0xefac('0x31')][_0xefac('0x32')]?_0x5f36cd['attributes']:_0x5c4c1a['model'];if(!_0x24fb9f['query'][_0xefac('0x33')]('nolimit')){_0x5f36cd[_0xefac('0x19')]=qs[_0xefac('0x19')](_0x24fb9f[_0xefac('0x2d')][_0xefac('0x19')]);_0x5f36cd['offset']=qs[_0xefac('0x1c')](_0x24fb9f['query']['offset']);}_0x5f36cd['order']=qs[_0xefac('0x34')](_0x24fb9f[_0xefac('0x2d')]['sort']);_0x5f36cd[_0xefac('0x35')]=qs['filters'](_[_0xefac('0x36')](_0x24fb9f['query'],_0x5c4c1a[_0xefac('0x2e')]),_0x16ad69);if(_0x24fb9f[_0xefac('0x2d')][_0xefac('0x37')]){_0x5f36cd[_0xefac('0x35')]=_[_0xefac('0x38')](_0x5f36cd[_0xefac('0x35')],{'$or':_['map'](_0x16ad69,function(_0x4dff5b){if(_0x4dff5b['type']!==_0xefac('0x39')){var _0x3c4863={};_0x3c4863[_0x4dff5b[_0xefac('0x24')]]={'$like':'%'+_0x24fb9f['query'][_0xefac('0x37')]+'%'};return _0x3c4863;}})});}_0x5f36cd=_[_0xefac('0x38')]({},_0x5f36cd,_0x24fb9f[_0xefac('0x3a')]);var _0x5bb800={'where':_0x5f36cd[_0xefac('0x35')]};return db['SugarcrmAccount'][_0xefac('0x1b')](_0x5bb800)['then'](function(_0x2539d5){_0x1b354d[_0xefac('0x1b')]=_0x2539d5;if(_0x24fb9f[_0xefac('0x2d')][_0xefac('0x3b')]){_0x5f36cd[_0xefac('0x3c')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xefac('0x3d')](_0x5f36cd);})['then'](function(_0xa2b7e){_0x1b354d[_0xefac('0x3e')]=_0xa2b7e;return _0x1b354d;})[_0xefac('0x3f')](respondWithFilteredResult(_0x27e7b8,_0x5f36cd))[_0xefac('0x40')](handleError(_0x27e7b8,null));};exports[_0xefac('0x41')]=function(_0xd3e9a1,_0x319b6c){var _0x5aaa8a={'raw':![],'where':{'id':_0xd3e9a1['params']['id']}},_0x35e0ab={};_0x35e0ab[_0xefac('0x2b')]=_['keys'](db['SugarcrmAccount'][_0xefac('0x28')]);_0x35e0ab[_0xefac('0x2d')]=_[_0xefac('0x42')](_0xd3e9a1[_0xefac('0x2d')]);_0x35e0ab['filters']=_['intersection'](_0x35e0ab[_0xefac('0x2b')],_0x35e0ab['query']);_0x5aaa8a[_0xefac('0x31')]=_['intersection'](_0x35e0ab[_0xefac('0x2b')],qs[_0xefac('0x30')](_0xd3e9a1[_0xefac('0x2d')][_0xefac('0x30')]));_0x5aaa8a[_0xefac('0x31')]=_0x5aaa8a[_0xefac('0x31')][_0xefac('0x32')]?_0x5aaa8a['attributes']:_0x35e0ab['model'];if(_0xd3e9a1['query']['includeAll']){_0x5aaa8a[_0xefac('0x3c')]=[{'all':!![]}];}_0x5aaa8a=_[_0xefac('0x38')]({},_0x5aaa8a,_0xd3e9a1['options']);return db[_0xefac('0x27')]['find'](_0x5aaa8a)[_0xefac('0x3f')](handleEntityNotFound(_0x319b6c,null))[_0xefac('0x3f')](respondWithResult(_0x319b6c,null))[_0xefac('0x40')](handleError(_0x319b6c,null));};exports[_0xefac('0x43')]=function(_0x422322,_0x147de2){return db['SugarcrmAccount'][_0xefac('0x43')](_0x422322[_0xefac('0x44')],{})[_0xefac('0x3f')](respondWithResult(_0x147de2,0xc9))[_0xefac('0x40')](handleError(_0x147de2,null));};exports[_0xefac('0x45')]=function(_0x5ba7dc,_0x45f734){if(_0x5ba7dc[_0xefac('0x44')]['id']){delete _0x5ba7dc[_0xefac('0x44')]['id'];}return db[_0xefac('0x27')][_0xefac('0x46')]({'where':{'id':_0x5ba7dc[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x45f734,null))[_0xefac('0x3f')](saveUpdates(_0x5ba7dc['body'],null))[_0xefac('0x3f')](respondWithResult(_0x45f734,null))[_0xefac('0x40')](handleError(_0x45f734,null));};exports[_0xefac('0x21')]=function(_0x15e8db,_0x18e6ec){return db[_0xefac('0x27')][_0xefac('0x46')]({'where':{'id':_0x15e8db[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x18e6ec,null))[_0xefac('0x3f')](removeEntity(_0x18e6ec,null))[_0xefac('0x40')](handleError(_0x18e6ec,null));};exports['getConfigurations']=function(_0x35c443,_0x1cc1fc,_0x222dd6){var _0x7c5029={};var _0x473d3e={};var _0x14b578;var _0x254d9e;return db[_0xefac('0x27')][_0xefac('0x48')]({'where':{'id':_0x35c443[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x1cc1fc,null))[_0xefac('0x3f')](function(_0x8841f0){if(_0x8841f0){_0x14b578=_0x8841f0;_0x473d3e[_0xefac('0x2b')]=_[_0xefac('0x42')](db[_0xefac('0x49')][_0xefac('0x28')]);_0x473d3e[_0xefac('0x2d')]=_[_0xefac('0x42')](_0x35c443['query']);_0x473d3e[_0xefac('0x2e')]=_['intersection'](_0x473d3e[_0xefac('0x2b')],_0x473d3e[_0xefac('0x2d')]);_0x7c5029[_0xefac('0x31')]=_[_0xefac('0x2f')](_0x473d3e[_0xefac('0x2b')],qs[_0xefac('0x30')](_0x35c443[_0xefac('0x2d')][_0xefac('0x30')]));_0x7c5029[_0xefac('0x31')]=_0x7c5029[_0xefac('0x31')]['length']?_0x7c5029['attributes']:_0x473d3e[_0xefac('0x2b')];_0x7c5029[_0xefac('0x4a')]=qs['sort'](_0x35c443[_0xefac('0x2d')][_0xefac('0x34')]);_0x7c5029[_0xefac('0x35')]=qs['filters'](_['pick'](_0x35c443[_0xefac('0x2d')],_0x473d3e[_0xefac('0x2e')]));if(_0x35c443['query'][_0xefac('0x37')]){_0x7c5029[_0xefac('0x35')]=_[_0xefac('0x38')](_0x7c5029['where'],{'$or':_[_0xefac('0x2c')](_0x7c5029[_0xefac('0x31')],function(_0x339167){var _0x1afadd={};_0x1afadd[_0x339167]={'$like':'%'+_0x35c443['query']['filter']+'%'};return _0x1afadd;})});}_0x7c5029=_[_0xefac('0x38')]({},_0x7c5029,_0x35c443['options']);return _0x14b578[_0xefac('0x4b')](_0x7c5029);}})['then'](function(_0x3cedbf){if(_0x3cedbf){_0x254d9e=_0x3cedbf[_0xefac('0x32')];if(!_0x35c443['query'][_0xefac('0x33')](_0xefac('0x4c'))){_0x7c5029[_0xefac('0x19')]=qs[_0xefac('0x19')](_0x35c443[_0xefac('0x2d')][_0xefac('0x19')]);_0x7c5029['offset']=qs[_0xefac('0x1c')](_0x35c443[_0xefac('0x2d')][_0xefac('0x1c')]);}return _0x14b578['getConfigurations'](_0x7c5029);}})['then'](function(_0x10ac21){if(_0x10ac21){return _0x10ac21?{'count':_0x254d9e,'rows':_0x10ac21}:null;}})[_0xefac('0x3f')](respondWithResult(_0x1cc1fc,null))[_0xefac('0x40')](handleError(_0x1cc1fc,null));};exports[_0xefac('0x4d')]=function(_0x1b4717,_0x1fc451,_0x80b5b0){if(_0x1b4717[_0xefac('0x44')]['id']){delete _0x1b4717['body']['id'];}return db['SugarcrmAccount'][_0xefac('0x48')]({'where':{'id':_0x1b4717[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x1fc451,null))[_0xefac('0x3f')](function(_0x462d99){if(_0x462d99){_0x1b4717[_0xefac('0x44')][_0xefac('0x4e')]=_0x462d99['id'];_0x1b4717[_0xefac('0x44')][_0xefac('0x4f')]=integrations['getSubjects'](_0x1b4717[_0xefac('0x44')][_0xefac('0x50')],_0x1b4717['body'][_0xefac('0x29')]);_0x1b4717[_0xefac('0x44')][_0xefac('0x51')]=integrations[_0xefac('0x52')](_0x1b4717['body'][_0xefac('0x50')],_0x1b4717[_0xefac('0x44')][_0xefac('0x29')]);return db[_0xefac('0x49')][_0xefac('0x43')](_0x1b4717[_0xefac('0x44')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db[_0xefac('0x53')],'as':'Descriptions'}]});}return null;})[_0xefac('0x3f')](respondWithResult(_0x1fc451,null))[_0xefac('0x40')](handleError(_0x1fc451,null));};exports[_0xefac('0x54')]=function(_0x93b416,_0x2de28e,_0x1b9730){var _0x3dc050='';var _0x4f3bf4=['id',_0xefac('0x24'),_0xefac('0x55'),_0xefac('0x56'),_0xefac('0x57'),_0xefac('0x58'),'duration_hours','duration_minutes',_0xefac('0x59'),_0xefac('0x5a'),_0xefac('0x5b'),_0xefac('0x5c')];return db['SugarcrmAccount'][_0xefac('0x48')]({'where':{'id':_0x93b416[_0xefac('0x47')]['id']},'attributes':['id',_0xefac('0x5d'),'password',_0xefac('0x5e')]})[_0xefac('0x3f')](handleEntityNotFound(_0x2de28e,null))[_0xefac('0x3f')](function(_0x3bfe26){if(_0x3bfe26){_0x3dc050=_0x3bfe26[_0xefac('0x5e')];var _0x1bbe8e=_0x3dc050[_0xefac('0x5f')](-0x1);if(_0x1bbe8e==='/'){_0x3dc050=_0x3dc050[_0xefac('0x60')](0x0,_0x3dc050[_0xefac('0x61')](_0x1bbe8e));}return rp({'method':_0xefac('0x62'),'uri':util[_0xefac('0x63')](_0xefac('0x64'),_0x3dc050,_0xefac('0x65')),'json':!![],'form':{'method':_0xefac('0x66'),'input_type':_0xefac('0x67'),'response_type':'JSON','rest_data':JSON[_0xefac('0x68')]({'user_auth':{'user_name':_0x3bfe26[_0xefac('0x5d')],'password':_0x3bfe26[_0xefac('0x69')],'encryption':_0xefac('0x6a')},'application':_0xefac('0x6b')})}});}})['then'](function(_0x18b3b5){if(_0x18b3b5&&_0x18b3b5[_0xefac('0x24')]!==_0xefac('0x6c')&&_0x18b3b5[_0xefac('0x24')]!==_0xefac('0x6d')){return rp({'method':'POST','uri':util['format'](_0xefac('0x64'),_0x3dc050,_0xefac('0x65')),'json':!![],'form':{'method':_0xefac('0x6e'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xefac('0x68')]({'session':_0x18b3b5['id'],'module_name':_0xefac('0x6f')})}})[_0xefac('0x3f')](function(_0x571b19){if(_0x571b19){var _0x959319=_['values'](_0x571b19['module_fields']);_[_0xefac('0x70')](_0x959319,function(_0x4ef3c3){return _0x4f3bf4[_0xefac('0x71')](_0x4ef3c3[_0xefac('0x24')]);});return{'count':_0x959319['length'],'rows':_[_0xefac('0x2c')](_0x959319,function(_0x2eeb44){return{'id':_0x2eeb44[_0xefac('0x24')],'name':_0x2eeb44[_0xefac('0x72')],'custom':_[_0xefac('0x73')](_0x2eeb44['name'],'_c')?!![]:![],'options':_0x2eeb44[_0xefac('0x3a')]?_[_0xefac('0x2c')](_[_0xefac('0x74')](_0x2eeb44[_0xefac('0x3a')]),function(_0x929831){return{'name':_0x929831['value'],'value':_0x929831[_0xefac('0x24')]};}):[]};})};}})[_0xefac('0x3f')](respondWithResult(_0x2de28e,null))[_0xefac('0x40')](function(_0x15eec4){var _0xcaeda6=_0x93b416['query'][_0xefac('0x75')]?0x1f4:_0x15eec4[_0xefac('0x76')]||0x1f4;logger[_0xefac('0x22')]('getFields,\x20%s,\x20%s,\x20%s',_0xefac('0x54'),_0xcaeda6,JSON['stringify'](_0x15eec4));delete _0x15eec4[_0xefac('0x24')];if(_0xcaeda6===0x191){_0xcaeda6=0x190;}_0x2de28e[_0xefac('0x16')](_0xcaeda6)[_0xefac('0x25')](_0x93b416[_0xefac('0x2d')]['test']?{'message':_0xefac('0x77'),'statusCode':_0x15eec4[_0xefac('0x76')]}:_0x15eec4);});}else{var _0x12b4eb=0x1f4;_0x2de28e['status'](_0x12b4eb)['send']({'message':_0xefac('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xc878=['direction','username','password','remoteUri','lastIndexOf','format','/service/v4_1/rest.php','login','stringify','PLAIN','Invalid\x20Login','Password\x20Expired','POST','%s%s','get_module_fields','JSON','Calls','values','module_fields','remove','includes','label','endsWith','value','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','reject','save','update','then','destroy','stack','name','send','index','SugarcrmAccount','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','created_by','date_start','parent_id','parent_type','parent_name'];(function(_0x19a0c1,_0x410cff){var _0x195cc8=function(_0x42058c){while(--_0x42058c){_0x19a0c1['push'](_0x19a0c1['shift']());}};_0x195cc8(++_0x410cff);}(_0xc878,0x10f));var _0x8c87=function(_0x277107,_0x3420dc){_0x277107=_0x277107-0x0;var _0x1da046=_0xc878[_0x277107];return _0x1da046;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8c87('0x0'));var jsonpatch=require(_0x8c87('0x1'));var rp=require(_0x8c87('0x2'));var moment=require('moment');var BPromise=require(_0x8c87('0x3'));var Mustache=require('mustache');var util=require(_0x8c87('0x4'));var path=require(_0x8c87('0x5'));var sox=require(_0x8c87('0x6'));var csv=require(_0x8c87('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8c87('0x8'));var _=require(_0x8c87('0x9'));var squel=require(_0x8c87('0xa'));var crypto=require(_0x8c87('0xb'));var jsforce=require(_0x8c87('0xc'));var deskjs=require(_0x8c87('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8c87('0xe'));var Papa=require(_0x8c87('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8c87('0x10'));var as=require(_0x8c87('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8c87('0x12'))(_0x8c87('0x13'));var utils=require(_0x8c87('0x14'));var config=require(_0x8c87('0x15'));var licenseUtil=require(_0x8c87('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x10fb96,_0x319b30){_0x319b30=_0x319b30||0xcc;return function(_0x257e42){if(_0x257e42){return _0x10fb96[_0x8c87('0x17')](_0x319b30);}return _0x10fb96[_0x8c87('0x18')](_0x319b30)[_0x8c87('0x19')]();};}function respondWithResult(_0x4f99d0,_0x15811f){_0x15811f=_0x15811f||0xc8;return function(_0x2939d8){if(_0x2939d8){return _0x4f99d0[_0x8c87('0x18')](_0x15811f)['json'](_0x2939d8);}};}function respondWithFilteredResult(_0x3a300d,_0x351df8){return function(_0x543f36){if(_0x543f36){var _0x563bc1=typeof _0x351df8['offset']===_0x8c87('0x1a')&&typeof _0x351df8['limit']===_0x8c87('0x1a');var _0x3b7fd3=_0x543f36[_0x8c87('0x1b')];var _0x27d4c7=_0x563bc1?0x0:_0x351df8[_0x8c87('0x1c')];var _0x1f372e=_0x563bc1?_0x543f36[_0x8c87('0x1b')]:_0x351df8['offset']+_0x351df8[_0x8c87('0x1d')];var _0x152e9b;if(_0x1f372e>=_0x3b7fd3){_0x1f372e=_0x3b7fd3;_0x152e9b=0xc8;}else{_0x152e9b=0xce;}_0x3a300d['status'](_0x152e9b);return _0x3a300d[_0x8c87('0x1e')](_0x8c87('0x1f'),_0x27d4c7+'-'+_0x1f372e+'/'+_0x3b7fd3)[_0x8c87('0x20')](_0x543f36);}return null;};}function patchUpdates(_0x2f1285){return function(_0x2a411b){try{jsonpatch['apply'](_0x2a411b,_0x2f1285,!![]);}catch(_0x268c59){return BPromise[_0x8c87('0x21')](_0x268c59);}return _0x2a411b[_0x8c87('0x22')]();};}function saveUpdates(_0x374a0c,_0x3991fc){return function(_0x17b9e3){if(_0x17b9e3){return _0x17b9e3[_0x8c87('0x23')](_0x374a0c)[_0x8c87('0x24')](function(_0x1c5907){return _0x1c5907;});}return null;};}function removeEntity(_0x2e378b,_0x234eeb){return function(_0x9e1df4){if(_0x9e1df4){return _0x9e1df4[_0x8c87('0x25')]()['then'](function(){_0x2e378b[_0x8c87('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4eeb7b,_0x52e68d){return function(_0x1c0465){if(!_0x1c0465){_0x4eeb7b['sendStatus'](0x194);}return _0x1c0465;};}function handleError(_0x1d4b40,_0x1c65a9){_0x1c65a9=_0x1c65a9||0x1f4;return function(_0x2e79b2){logger['error'](_0x2e79b2[_0x8c87('0x26')]);if(_0x2e79b2[_0x8c87('0x27')]){delete _0x2e79b2[_0x8c87('0x27')];}_0x1d4b40[_0x8c87('0x18')](_0x1c65a9)[_0x8c87('0x28')](_0x2e79b2);};}exports[_0x8c87('0x29')]=function(_0x50cdad,_0x55a78b){var _0x7b9cf8={},_0x3906f8={},_0x470040={'count':0x0,'rows':[]};var _0x5dcb36=_['map'](db[_0x8c87('0x2a')][_0x8c87('0x2b')],function(_0x3288ff){return{'name':_0x3288ff[_0x8c87('0x2c')],'type':_0x3288ff['type'][_0x8c87('0x2d')]};});_0x3906f8[_0x8c87('0x2e')]=_[_0x8c87('0x2f')](_0x5dcb36,_0x8c87('0x27'));_0x3906f8[_0x8c87('0x30')]=_[_0x8c87('0x31')](_0x50cdad['query']);_0x3906f8[_0x8c87('0x32')]=_[_0x8c87('0x33')](_0x3906f8[_0x8c87('0x2e')],_0x3906f8['query']);_0x7b9cf8[_0x8c87('0x34')]=_[_0x8c87('0x33')](_0x3906f8[_0x8c87('0x2e')],qs['fields'](_0x50cdad[_0x8c87('0x30')][_0x8c87('0x35')]));_0x7b9cf8[_0x8c87('0x34')]=_0x7b9cf8['attributes'][_0x8c87('0x36')]?_0x7b9cf8['attributes']:_0x3906f8[_0x8c87('0x2e')];if(!_0x50cdad[_0x8c87('0x30')][_0x8c87('0x37')](_0x8c87('0x38'))){_0x7b9cf8[_0x8c87('0x1d')]=qs['limit'](_0x50cdad[_0x8c87('0x30')][_0x8c87('0x1d')]);_0x7b9cf8[_0x8c87('0x1c')]=qs[_0x8c87('0x1c')](_0x50cdad[_0x8c87('0x30')][_0x8c87('0x1c')]);}_0x7b9cf8[_0x8c87('0x39')]=qs[_0x8c87('0x3a')](_0x50cdad[_0x8c87('0x30')][_0x8c87('0x3a')]);_0x7b9cf8[_0x8c87('0x3b')]=qs[_0x8c87('0x32')](_[_0x8c87('0x3c')](_0x50cdad[_0x8c87('0x30')],_0x3906f8[_0x8c87('0x32')]),_0x5dcb36);if(_0x50cdad['query'][_0x8c87('0x3d')]){_0x7b9cf8[_0x8c87('0x3b')]=_[_0x8c87('0x3e')](_0x7b9cf8[_0x8c87('0x3b')],{'$or':_[_0x8c87('0x2f')](_0x5dcb36,function(_0x5ca7ac){if(_0x5ca7ac[_0x8c87('0x3f')]!==_0x8c87('0x40')){var _0x333259={};_0x333259[_0x5ca7ac['name']]={'$like':'%'+_0x50cdad[_0x8c87('0x30')]['filter']+'%'};return _0x333259;}})});}_0x7b9cf8=_[_0x8c87('0x3e')]({},_0x7b9cf8,_0x50cdad[_0x8c87('0x41')]);var _0x2edd1b={'where':_0x7b9cf8[_0x8c87('0x3b')]};return db[_0x8c87('0x2a')]['count'](_0x2edd1b)[_0x8c87('0x24')](function(_0x18de8b){_0x470040[_0x8c87('0x1b')]=_0x18de8b;if(_0x50cdad[_0x8c87('0x30')][_0x8c87('0x42')]){_0x7b9cf8['include']=[{'all':!![]}];}return db[_0x8c87('0x2a')][_0x8c87('0x43')](_0x7b9cf8);})[_0x8c87('0x24')](function(_0x59a30d){_0x470040[_0x8c87('0x44')]=_0x59a30d;return _0x470040;})[_0x8c87('0x24')](respondWithFilteredResult(_0x55a78b,_0x7b9cf8))[_0x8c87('0x45')](handleError(_0x55a78b,null));};exports[_0x8c87('0x46')]=function(_0xcc5fac,_0x3b8688){var _0x45c075={'raw':![],'where':{'id':_0xcc5fac[_0x8c87('0x47')]['id']}},_0x3a100e={};_0x3a100e[_0x8c87('0x2e')]=_[_0x8c87('0x31')](db['SugarcrmAccount']['rawAttributes']);_0x3a100e['query']=_[_0x8c87('0x31')](_0xcc5fac[_0x8c87('0x30')]);_0x3a100e[_0x8c87('0x32')]=_['intersection'](_0x3a100e[_0x8c87('0x2e')],_0x3a100e[_0x8c87('0x30')]);_0x45c075[_0x8c87('0x34')]=_['intersection'](_0x3a100e[_0x8c87('0x2e')],qs[_0x8c87('0x35')](_0xcc5fac[_0x8c87('0x30')][_0x8c87('0x35')]));_0x45c075[_0x8c87('0x34')]=_0x45c075[_0x8c87('0x34')][_0x8c87('0x36')]?_0x45c075[_0x8c87('0x34')]:_0x3a100e[_0x8c87('0x2e')];if(_0xcc5fac[_0x8c87('0x30')][_0x8c87('0x42')]){_0x45c075['include']=[{'all':!![]}];}_0x45c075=_['merge']({},_0x45c075,_0xcc5fac[_0x8c87('0x41')]);return db[_0x8c87('0x2a')][_0x8c87('0x48')](_0x45c075)[_0x8c87('0x24')](handleEntityNotFound(_0x3b8688,null))[_0x8c87('0x24')](respondWithResult(_0x3b8688,null))['catch'](handleError(_0x3b8688,null));};exports[_0x8c87('0x49')]=function(_0x453a82,_0x1365d8){return db['SugarcrmAccount'][_0x8c87('0x49')](_0x453a82[_0x8c87('0x4a')],{})['then'](respondWithResult(_0x1365d8,0xc9))['catch'](handleError(_0x1365d8,null));};exports[_0x8c87('0x23')]=function(_0x4f7469,_0x1d28b1){if(_0x4f7469[_0x8c87('0x4a')]['id']){delete _0x4f7469[_0x8c87('0x4a')]['id'];}return db['SugarcrmAccount'][_0x8c87('0x48')]({'where':{'id':_0x4f7469['params']['id']}})['then'](handleEntityNotFound(_0x1d28b1,null))[_0x8c87('0x24')](saveUpdates(_0x4f7469[_0x8c87('0x4a')],null))[_0x8c87('0x24')](respondWithResult(_0x1d28b1,null))[_0x8c87('0x45')](handleError(_0x1d28b1,null));};exports['destroy']=function(_0xd80a33,_0x70d83c){return db['SugarcrmAccount'][_0x8c87('0x48')]({'where':{'id':_0xd80a33[_0x8c87('0x47')]['id']}})['then'](handleEntityNotFound(_0x70d83c,null))[_0x8c87('0x24')](removeEntity(_0x70d83c,null))['catch'](handleError(_0x70d83c,null));};exports[_0x8c87('0x4b')]=function(_0x1ca4d7,_0x48bfa4,_0x41125e){var _0x2ddb72={};var _0x30296a={};var _0x46a678;var _0x2a2d95;return db[_0x8c87('0x2a')][_0x8c87('0x4c')]({'where':{'id':_0x1ca4d7[_0x8c87('0x47')]['id']}})['then'](handleEntityNotFound(_0x48bfa4,null))[_0x8c87('0x24')](function(_0x505bec){if(_0x505bec){_0x46a678=_0x505bec;_0x30296a['model']=_[_0x8c87('0x31')](db[_0x8c87('0x4d')][_0x8c87('0x2b')]);_0x30296a[_0x8c87('0x30')]=_['keys'](_0x1ca4d7[_0x8c87('0x30')]);_0x30296a['filters']=_[_0x8c87('0x33')](_0x30296a[_0x8c87('0x2e')],_0x30296a['query']);_0x2ddb72[_0x8c87('0x34')]=_['intersection'](_0x30296a['model'],qs[_0x8c87('0x35')](_0x1ca4d7[_0x8c87('0x30')][_0x8c87('0x35')]));_0x2ddb72[_0x8c87('0x34')]=_0x2ddb72[_0x8c87('0x34')][_0x8c87('0x36')]?_0x2ddb72[_0x8c87('0x34')]:_0x30296a[_0x8c87('0x2e')];_0x2ddb72[_0x8c87('0x39')]=qs['sort'](_0x1ca4d7[_0x8c87('0x30')][_0x8c87('0x3a')]);_0x2ddb72[_0x8c87('0x3b')]=qs[_0x8c87('0x32')](_[_0x8c87('0x3c')](_0x1ca4d7[_0x8c87('0x30')],_0x30296a[_0x8c87('0x32')]));if(_0x1ca4d7[_0x8c87('0x30')][_0x8c87('0x3d')]){_0x2ddb72['where']=_[_0x8c87('0x3e')](_0x2ddb72[_0x8c87('0x3b')],{'$or':_['map'](_0x2ddb72[_0x8c87('0x34')],function(_0x2c275a){var _0x21633c={};_0x21633c[_0x2c275a]={'$like':'%'+_0x1ca4d7[_0x8c87('0x30')][_0x8c87('0x3d')]+'%'};return _0x21633c;})});}_0x2ddb72=_['merge']({},_0x2ddb72,_0x1ca4d7[_0x8c87('0x41')]);return _0x46a678[_0x8c87('0x4b')](_0x2ddb72);}})[_0x8c87('0x24')](function(_0x4de05e){if(_0x4de05e){_0x2a2d95=_0x4de05e['length'];if(!_0x1ca4d7[_0x8c87('0x30')]['hasOwnProperty'](_0x8c87('0x38'))){_0x2ddb72['limit']=qs[_0x8c87('0x1d')](_0x1ca4d7['query']['limit']);_0x2ddb72[_0x8c87('0x1c')]=qs[_0x8c87('0x1c')](_0x1ca4d7[_0x8c87('0x30')][_0x8c87('0x1c')]);}return _0x46a678['getConfigurations'](_0x2ddb72);}})['then'](function(_0x1cfe8f){if(_0x1cfe8f){return _0x1cfe8f?{'count':_0x2a2d95,'rows':_0x1cfe8f}:null;}})[_0x8c87('0x24')](respondWithResult(_0x48bfa4,null))[_0x8c87('0x45')](handleError(_0x48bfa4,null));};exports[_0x8c87('0x4e')]=function(_0x13fde9,_0x9f230d,_0x45cad8){if(_0x13fde9[_0x8c87('0x4a')]['id']){delete _0x13fde9[_0x8c87('0x4a')]['id'];}return db[_0x8c87('0x2a')][_0x8c87('0x4c')]({'where':{'id':_0x13fde9[_0x8c87('0x47')]['id']}})[_0x8c87('0x24')](handleEntityNotFound(_0x9f230d,null))[_0x8c87('0x24')](function(_0x598805){if(_0x598805){_0x13fde9[_0x8c87('0x4a')][_0x8c87('0x4f')]=_0x598805['id'];_0x13fde9[_0x8c87('0x4a')][_0x8c87('0x50')]=integrations[_0x8c87('0x51')](_0x13fde9[_0x8c87('0x4a')][_0x8c87('0x52')],_0x13fde9[_0x8c87('0x4a')][_0x8c87('0x3f')]);_0x13fde9[_0x8c87('0x4a')][_0x8c87('0x53')]=integrations[_0x8c87('0x54')](_0x13fde9[_0x8c87('0x4a')][_0x8c87('0x52')],_0x13fde9[_0x8c87('0x4a')]['type']);return db[_0x8c87('0x4d')]['create'](_0x13fde9[_0x8c87('0x4a')],{'include':[{'model':db[_0x8c87('0x55')],'as':_0x8c87('0x50')},{'model':db['SugarcrmField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x9f230d,null))[_0x8c87('0x45')](handleError(_0x9f230d,null));};exports[_0x8c87('0x56')]=function(_0x5b6dd6,_0x36a780,_0x40eb6e){var _0x54f743='';var _0x3e35b4=['id',_0x8c87('0x27'),'assigned_user_id',_0x8c87('0x57'),'description',_0x8c87('0x58'),'duration_hours','duration_minutes',_0x8c87('0x59'),_0x8c87('0x5a'),_0x8c87('0x5b'),_0x8c87('0x5c')];return db[_0x8c87('0x2a')][_0x8c87('0x4c')]({'where':{'id':_0x5b6dd6[_0x8c87('0x47')]['id']},'attributes':['id',_0x8c87('0x5d'),_0x8c87('0x5e'),_0x8c87('0x5f')]})[_0x8c87('0x24')](handleEntityNotFound(_0x36a780,null))[_0x8c87('0x24')](function(_0x48dc25){if(_0x48dc25){_0x54f743=_0x48dc25[_0x8c87('0x5f')];var _0x4ec6ea=_0x54f743['slice'](-0x1);if(_0x4ec6ea==='/'){_0x54f743=_0x54f743['substring'](0x0,_0x54f743[_0x8c87('0x60')](_0x4ec6ea));}return rp({'method':'POST','uri':util[_0x8c87('0x61')]('%s%s',_0x54f743,_0x8c87('0x62')),'json':!![],'form':{'method':_0x8c87('0x63'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x8c87('0x64')]({'user_auth':{'user_name':_0x48dc25['username'],'password':_0x48dc25['password'],'encryption':_0x8c87('0x65')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x8c87('0x24')](function(_0x3b5c82){if(_0x3b5c82&&_0x3b5c82[_0x8c87('0x27')]!==_0x8c87('0x66')&&_0x3b5c82[_0x8c87('0x27')]!==_0x8c87('0x67')){return rp({'method':_0x8c87('0x68'),'uri':util['format'](_0x8c87('0x69'),_0x54f743,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x8c87('0x6a'),'input_type':_0x8c87('0x6b'),'response_type':_0x8c87('0x6b'),'rest_data':JSON[_0x8c87('0x64')]({'session':_0x3b5c82['id'],'module_name':_0x8c87('0x6c')})}})['then'](function(_0x1160ea){if(_0x1160ea){var _0xd0a206=_[_0x8c87('0x6d')](_0x1160ea[_0x8c87('0x6e')]);_[_0x8c87('0x6f')](_0xd0a206,function(_0x5575cb){return _0x3e35b4[_0x8c87('0x70')](_0x5575cb[_0x8c87('0x27')]);});return{'count':_0xd0a206['length'],'rows':_[_0x8c87('0x2f')](_0xd0a206,function(_0x425980){return{'id':_0x425980[_0x8c87('0x27')],'name':_0x425980[_0x8c87('0x71')],'custom':_[_0x8c87('0x72')](_0x425980[_0x8c87('0x27')],'_c')?!![]:![],'options':_0x425980[_0x8c87('0x41')]?_[_0x8c87('0x2f')](_[_0x8c87('0x6d')](_0x425980[_0x8c87('0x41')]),function(_0x26a53a){return{'name':_0x26a53a[_0x8c87('0x73')],'value':_0x26a53a['name']};}):[]};})};}})[_0x8c87('0x24')](respondWithResult(_0x36a780,null))[_0x8c87('0x45')](function(_0x432b56){var _0x1cc428=_0x5b6dd6[_0x8c87('0x30')]['test']?0x1f4:_0x432b56[_0x8c87('0x74')]||0x1f4;logger[_0x8c87('0x75')](_0x8c87('0x76'),_0x8c87('0x56'),_0x1cc428,JSON[_0x8c87('0x64')](_0x432b56));delete _0x432b56[_0x8c87('0x27')];if(_0x1cc428===0x191){_0x1cc428=0x190;}_0x36a780[_0x8c87('0x18')](_0x1cc428)[_0x8c87('0x28')](_0x5b6dd6[_0x8c87('0x30')][_0x8c87('0x77')]?{'message':_0x8c87('0x78'),'statusCode':_0x432b56[_0x8c87('0x74')]}:_0x432b56);});}else{var _0xa8d125=0x1f4;_0x36a780[_0x8c87('0x18')](_0xa8d125)[_0x8c87('0x28')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index afd7f8b..cc1978b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3278=['../../config/environment','./intSugarcrmAccount.attributes','exports','int_sugarcrm_accounts','../../config/logger','api','bluebird','path'];(function(_0x1c1081,_0xe2cb8c){var _0x506a1a=function(_0x16dede){while(--_0x16dede){_0x1c1081['push'](_0x1c1081['shift']());}};_0x506a1a(++_0xe2cb8c);}(_0x3278,0x11c));var _0x8327=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3278[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8327('0x0'))(_0x8327('0x1'));var moment=require('moment');var BPromise=require(_0x8327('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8327('0x3'));var rimraf=require('rimraf');var config=require(_0x8327('0x4'));var attributes=require(_0x8327('0x5'));var integrations=require('../../components/integrations/configuration');module[_0x8327('0x6')]=function(_0x471056,_0x52c4d5){return _0x471056['define']('SugarcrmAccount',attributes,{'tableName':_0x8327('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf21=['path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','int_sugarcrm_accounts','lodash','util','../../config/logger','moment'];(function(_0x318256,_0xa773f3){var _0xb1e352=function(_0x4bb14e){while(--_0x4bb14e){_0x318256['push'](_0x318256['shift']());}};_0xb1e352(++_0xa773f3);}(_0xbf21,0xec));var _0x1bf2=function(_0x41698d,_0x430142){_0x41698d=_0x41698d-0x0;var _0x50f4c0=_0xbf21[_0x41698d];return _0x50f4c0;};'use strict';var _=require(_0x1bf2('0x0'));var util=require(_0x1bf2('0x1'));var logger=require(_0x1bf2('0x2'))('api');var moment=require(_0x1bf2('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1bf2('0x4'));var rimraf=require(_0x1bf2('0x5'));var config=require(_0x1bf2('0x6'));var attributes=require(_0x1bf2('0x7'));var integrations=require(_0x1bf2('0x8'));module[_0x1bf2('0x9')]=function(_0x2e2640,_0x397ae6){return _0x2e2640[_0x1bf2('0xa')]('SugarcrmAccount',attributes,{'tableName':_0x1bf2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca777f9..b031a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e4=['http','request','then','SugarcrmAccount,\x20%s,\x20%s','debug','error','code','message','info','request\x20sent','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','limit','include','map','attributes','model','stringify','catch','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client'];(function(_0x339842,_0x3ef886){var _0x3acc91=function(_0x1ce2e4){while(--_0x1ce2e4){_0x339842['push'](_0x339842['shift']());}};_0x3acc91(++_0x3ef886);}(_0x83e4,0x1c5));var _0x483e=function(_0xcb71e1,_0x35adbc){_0xcb71e1=_0xcb71e1-0x0;var _0x269570=_0x83e4[_0xcb71e1];return _0x269570;};'use strict';var _=require(_0x483e('0x0'));var util=require(_0x483e('0x1'));var moment=require(_0x483e('0x2'));var BPromise=require(_0x483e('0x3'));var rs=require(_0x483e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x483e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x483e('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x483e('0x7'));var client=jayson[_0x483e('0x8')][_0x483e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e836c,_0x308610,_0x1d1df6){return new BPromise(function(_0x1e3991,_0x348325){return client[_0x483e('0xa')](_0x2e836c,_0x1d1df6)[_0x483e('0xb')](function(_0x2fe692){logger['info'](_0x483e('0xc'),_0x308610,'request\x20sent');logger[_0x483e('0xd')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x308610,'request\x20sent',JSON['stringify'](_0x2fe692));if(_0x2fe692[_0x483e('0xe')]){if(_0x2fe692[_0x483e('0xe')][_0x483e('0xf')]===0x1f4){logger[_0x483e('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x308610,_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);return _0x348325(_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);}logger[_0x483e('0xe')](_0x483e('0xc'),_0x308610,_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);return _0x1e3991(_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);}else{logger[_0x483e('0x11')](_0x483e('0xc'),_0x308610,_0x483e('0x12'));_0x1e3991(_0x2fe692[_0x483e('0x13')]['message']);}})['catch'](function(_0x3560b9){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x308610,_0x3560b9);_0x348325(_0x3560b9);});});}exports[_0x483e('0x14')]=function(_0xc0a4a1){var _0x39e9b5=this;return new Promise(function(_0x151fff,_0x2604fd){return db[_0x483e('0x15')][_0x483e('0x16')]({'raw':_0xc0a4a1['options']?_0xc0a4a1[_0x483e('0x17')][_0x483e('0x18')]===undefined?!![]:![]:!![],'where':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1[_0x483e('0x17')]['where']||null:null,'attributes':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1[_0x483e('0x17')]['attributes']||null:null,'limit':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1['options'][_0x483e('0x19')]||null:null,'include':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1[_0x483e('0x17')][_0x483e('0x1a')]?_[_0x483e('0x1b')](_0xc0a4a1[_0x483e('0x17')][_0x483e('0x1a')],function(_0x387509){return{'model':db[_0x387509['model']],'as':_0x387509['as'],'attributes':_0x387509[_0x483e('0x1c')],'include':_0x387509[_0x483e('0x1a')]?_['map'](_0x387509[_0x483e('0x1a')],function(_0x1478f9){return{'model':db[_0x1478f9[_0x483e('0x1d')]],'as':_0x1478f9['as'],'attributes':_0x1478f9['attributes'],'include':_0x1478f9['include']?_[_0x483e('0x1b')](_0x1478f9[_0x483e('0x1a')],function(_0x4473b6){return{'model':db[_0x4473b6[_0x483e('0x1d')]],'as':_0x4473b6['as'],'attributes':_0x4473b6[_0x483e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x483e('0xb')](function(_0x5462a0){logger[_0x483e('0x11')](_0x483e('0x14'),_0xc0a4a1);logger[_0x483e('0xd')]('GetSugarcrmAccount',_0xc0a4a1,JSON[_0x483e('0x1e')](_0x5462a0));_0x151fff(_0x5462a0);})[_0x483e('0x1f')](function(_0x45e4d3){logger[_0x483e('0xe')](_0x483e('0x14'),_0x45e4d3[_0x483e('0x10')],_0xc0a4a1);_0x2604fd(_0x39e9b5[_0x483e('0xe')](0x1f4,_0x45e4d3['message']));});});};exports['ShowSugarcrmAccount']=function(_0x57d333){var _0xca0693=this;return new Promise(function(_0x5a9f81,_0x6241e){return db[_0x483e('0x15')]['find']({'raw':_0x57d333[_0x483e('0x17')]?_0x57d333[_0x483e('0x17')][_0x483e('0x18')]===undefined?!![]:![]:!![],'where':_0x57d333['options']?_0x57d333[_0x483e('0x17')]['where']||null:null,'attributes':_0x57d333[_0x483e('0x17')]?_0x57d333[_0x483e('0x17')][_0x483e('0x1c')]||null:null,'include':_0x57d333[_0x483e('0x17')]?_0x57d333[_0x483e('0x17')][_0x483e('0x1a')]?_[_0x483e('0x1b')](_0x57d333[_0x483e('0x17')][_0x483e('0x1a')],function(_0x24d50d){return{'model':db[_0x24d50d[_0x483e('0x1d')]],'as':_0x24d50d['as'],'attributes':_0x24d50d[_0x483e('0x1c')],'include':_0x24d50d[_0x483e('0x1a')]?_[_0x483e('0x1b')](_0x24d50d[_0x483e('0x1a')],function(_0x24b733){return{'model':db[_0x24b733['model']],'as':_0x24b733['as'],'attributes':_0x24b733[_0x483e('0x1c')],'include':_0x24b733['include']?_[_0x483e('0x1b')](_0x24b733[_0x483e('0x1a')],function(_0x15484b){return{'model':db[_0x15484b[_0x483e('0x1d')]],'as':_0x15484b['as'],'attributes':_0x15484b[_0x483e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x483e('0xb')](function(_0x3a64b1){logger[_0x483e('0x11')]('ShowSugarcrmAccount',_0x57d333);logger['debug'](_0x483e('0x20'),_0x57d333,JSON[_0x483e('0x1e')](_0x3a64b1));_0x5a9f81(_0x3a64b1);})[_0x483e('0x1f')](function(_0x2bb7a7){logger[_0x483e('0xe')](_0x483e('0x20'),_0x2bb7a7[_0x483e('0x10')],_0x57d333);_0x6241e(_0xca0693[_0x483e('0xe')](0x1f4,_0x2bb7a7[_0x483e('0x10')]));});});};
\ No newline at end of file
+var _0xac0e=['raw','where','attributes','limit','include','map','model','find','ShowSugarcrmAccount','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options'];(function(_0x3f70ad,_0x512be4){var _0x12ba75=function(_0x46ce4c){while(--_0x46ce4c){_0x3f70ad['push'](_0x3f70ad['shift']());}};_0x12ba75(++_0x512be4);}(_0xac0e,0xbd));var _0xeac0=function(_0xfb9b03,_0x25bff5){_0xfb9b03=_0xfb9b03-0x0;var _0x311de4=_0xac0e[_0xfb9b03];return _0x311de4;};'use strict';var _=require(_0xeac0('0x0'));var util=require(_0xeac0('0x1'));var moment=require(_0xeac0('0x2'));var BPromise=require('bluebird');var rs=require(_0xeac0('0x3'));var fs=require('fs');var Redis=require(_0xeac0('0x4'));var db=require(_0xeac0('0x5'))['db'];var utils=require(_0xeac0('0x6'));var logger=require(_0xeac0('0x7'))(_0xeac0('0x8'));var config=require(_0xeac0('0x9'));var jayson=require(_0xeac0('0xa'));var client=jayson[_0xeac0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3cbfeb,_0x4443b2,_0x57f339){return new BPromise(function(_0xde0f65,_0x532d48){return client[_0xeac0('0xc')](_0x3cbfeb,_0x57f339)[_0xeac0('0xd')](function(_0x5595d3){logger['info'](_0xeac0('0xe'),_0x4443b2,_0xeac0('0xf'));logger['debug'](_0xeac0('0x10'),_0x4443b2,_0xeac0('0xf'),JSON[_0xeac0('0x11')](_0x5595d3));if(_0x5595d3['error']){if(_0x5595d3[_0xeac0('0x12')][_0xeac0('0x13')]===0x1f4){logger[_0xeac0('0x12')](_0xeac0('0xe'),_0x4443b2,_0x5595d3[_0xeac0('0x12')][_0xeac0('0x14')]);return _0x532d48(_0x5595d3['error'][_0xeac0('0x14')]);}logger[_0xeac0('0x12')](_0xeac0('0xe'),_0x4443b2,_0x5595d3[_0xeac0('0x12')][_0xeac0('0x14')]);return _0xde0f65(_0x5595d3[_0xeac0('0x12')]['message']);}else{logger[_0xeac0('0x15')](_0xeac0('0xe'),_0x4443b2,'request\x20sent');_0xde0f65(_0x5595d3['result'][_0xeac0('0x14')]);}})[_0xeac0('0x16')](function(_0x6d86fc){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x4443b2,_0x6d86fc);_0x532d48(_0x6d86fc);});});}exports[_0xeac0('0x17')]=function(_0x55c0e5){var _0x3c4083=this;return new Promise(function(_0x880d5a,_0xab887d){return db[_0xeac0('0x18')][_0xeac0('0x19')]({'raw':_0x55c0e5[_0xeac0('0x1a')]?_0x55c0e5[_0xeac0('0x1a')][_0xeac0('0x1b')]===undefined?!![]:![]:!![],'where':_0x55c0e5['options']?_0x55c0e5[_0xeac0('0x1a')][_0xeac0('0x1c')]||null:null,'attributes':_0x55c0e5[_0xeac0('0x1a')]?_0x55c0e5[_0xeac0('0x1a')][_0xeac0('0x1d')]||null:null,'limit':_0x55c0e5['options']?_0x55c0e5[_0xeac0('0x1a')][_0xeac0('0x1e')]||null:null,'include':_0x55c0e5[_0xeac0('0x1a')]?_0x55c0e5[_0xeac0('0x1a')][_0xeac0('0x1f')]?_[_0xeac0('0x20')](_0x55c0e5['options'][_0xeac0('0x1f')],function(_0x924e1c){return{'model':db[_0x924e1c[_0xeac0('0x21')]],'as':_0x924e1c['as'],'attributes':_0x924e1c[_0xeac0('0x1d')],'include':_0x924e1c[_0xeac0('0x1f')]?_[_0xeac0('0x20')](_0x924e1c[_0xeac0('0x1f')],function(_0x2daecf){return{'model':db[_0x2daecf[_0xeac0('0x21')]],'as':_0x2daecf['as'],'attributes':_0x2daecf['attributes'],'include':_0x2daecf['include']?_[_0xeac0('0x20')](_0x2daecf[_0xeac0('0x1f')],function(_0x4b9bea){return{'model':db[_0x4b9bea['model']],'as':_0x4b9bea['as'],'attributes':_0x4b9bea[_0xeac0('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xeac0('0xd')](function(_0x5bc8ed){logger['info'](_0xeac0('0x17'),_0x55c0e5);logger['debug']('GetSugarcrmAccount',_0x55c0e5,JSON['stringify'](_0x5bc8ed));_0x880d5a(_0x5bc8ed);})[_0xeac0('0x16')](function(_0x2385d7){logger[_0xeac0('0x12')](_0xeac0('0x17'),_0x2385d7[_0xeac0('0x14')],_0x55c0e5);_0xab887d(_0x3c4083[_0xeac0('0x12')](0x1f4,_0x2385d7[_0xeac0('0x14')]));});});};exports['ShowSugarcrmAccount']=function(_0x1ba7a9){var _0x33a4f6=this;return new Promise(function(_0x1947d5,_0x48585c){return db[_0xeac0('0x18')][_0xeac0('0x22')]({'raw':_0x1ba7a9[_0xeac0('0x1a')]?_0x1ba7a9[_0xeac0('0x1a')][_0xeac0('0x1b')]===undefined?!![]:![]:!![],'where':_0x1ba7a9[_0xeac0('0x1a')]?_0x1ba7a9[_0xeac0('0x1a')][_0xeac0('0x1c')]||null:null,'attributes':_0x1ba7a9[_0xeac0('0x1a')]?_0x1ba7a9[_0xeac0('0x1a')][_0xeac0('0x1d')]||null:null,'include':_0x1ba7a9[_0xeac0('0x1a')]?_0x1ba7a9['options']['include']?_[_0xeac0('0x20')](_0x1ba7a9[_0xeac0('0x1a')]['include'],function(_0x1f3141){return{'model':db[_0x1f3141['model']],'as':_0x1f3141['as'],'attributes':_0x1f3141[_0xeac0('0x1d')],'include':_0x1f3141[_0xeac0('0x1f')]?_[_0xeac0('0x20')](_0x1f3141[_0xeac0('0x1f')],function(_0x1fbe0e){return{'model':db[_0x1fbe0e['model']],'as':_0x1fbe0e['as'],'attributes':_0x1fbe0e['attributes'],'include':_0x1fbe0e[_0xeac0('0x1f')]?_[_0xeac0('0x20')](_0x1fbe0e[_0xeac0('0x1f')],function(_0x8a9d56){return{'model':db[_0x8a9d56['model']],'as':_0x8a9d56['as'],'attributes':_0x8a9d56[_0xeac0('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xeac0('0xd')](function(_0x1f4a5b){logger[_0xeac0('0x15')](_0xeac0('0x23'),_0x1ba7a9);logger['debug'](_0xeac0('0x23'),_0x1ba7a9,JSON[_0xeac0('0x11')](_0x1f4a5b));_0x1947d5(_0x1f4a5b);})[_0xeac0('0x16')](function(_0x4f3799){logger[_0xeac0('0x12')](_0xeac0('0x23'),_0x4f3799[_0xeac0('0x14')],_0x1ba7a9);_0x48585c(_0x33a4f6[_0xeac0('0x12')](0x1f4,_0x4f3799['message']));});});};
\ No newline at end of file
index d46f81f..5148644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e4=['util','path','express','Router','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','multer'];(function(_0x1e2aae,_0x2349e3){var _0x4d8a43=function(_0x305d4c){while(--_0x305d4c){_0x1e2aae['push'](_0x1e2aae['shift']());}};_0x4d8a43(++_0x2349e3);}(_0x97e4,0xd7));var _0x497e=function(_0x5f2327,_0x123bcd){_0x5f2327=_0x5f2327-0x0;var _0x304698=_0x97e4[_0x5f2327];return _0x304698;};'use strict';var multer=require(_0x497e('0x0'));var util=require(_0x497e('0x1'));var path=require(_0x497e('0x2'));var timeout=require('connect-timeout');var express=require(_0x497e('0x3'));var router=express[_0x497e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x497e('0x5'));var interaction=require(_0x497e('0x6'));var config=require('../../config/environment');var controller=require(_0x497e('0x7'));router['get']('/',auth[_0x497e('0x8')](),controller[_0x497e('0x9')]);router[_0x497e('0xa')](_0x497e('0xb'),auth['isAuthenticated'](),controller[_0x497e('0xc')]);router[_0x497e('0xa')](_0x497e('0xd'),auth[_0x497e('0x8')](),controller['getFields']);router[_0x497e('0xa')](_0x497e('0xe'),auth['isAuthenticated'](),controller[_0x497e('0xf')]);router['get'](_0x497e('0x10'),auth[_0x497e('0x8')](),controller[_0x497e('0x11')]);router[_0x497e('0x12')]('/',auth['isAuthenticated'](),controller[_0x497e('0x13')]);router['put'](_0x497e('0xb'),auth[_0x497e('0x8')](),controller[_0x497e('0x14')]);router[_0x497e('0x15')](_0x497e('0xb'),auth[_0x497e('0x8')](),controller[_0x497e('0x16')]);module[_0x497e('0x17')]=router;
\ No newline at end of file
+var _0x67cf=['delete','/:id','exports','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update'];(function(_0x1d63ce,_0x3d2475){var _0x4af0f1=function(_0x16aff2){while(--_0x16aff2){_0x1d63ce['push'](_0x1d63ce['shift']());}};_0x4af0f1(++_0x3d2475);}(_0x67cf,0x121));var _0xf67c=function(_0x12c280,_0x51dd07){_0x12c280=_0x12c280-0x0;var _0x3638d3=_0x67cf[_0x12c280];return _0x3638d3;};'use strict';var multer=require('multer');var util=require(_0xf67c('0x0'));var path=require(_0xf67c('0x1'));var timeout=require('connect-timeout');var express=require(_0xf67c('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf67c('0x3'));var interaction=require(_0xf67c('0x4'));var config=require(_0xf67c('0x5'));var controller=require(_0xf67c('0x6'));router[_0xf67c('0x7')]('/',auth[_0xf67c('0x8')](),controller[_0xf67c('0x9')]);router[_0xf67c('0x7')]('/:id',auth[_0xf67c('0x8')](),controller[_0xf67c('0xa')]);router['get']('/:id/fields',auth[_0xf67c('0x8')](),controller['getFields']);router['get'](_0xf67c('0xb'),auth[_0xf67c('0x8')](),controller[_0xf67c('0xc')]);router['get'](_0xf67c('0xd'),auth[_0xf67c('0x8')](),controller[_0xf67c('0xe')]);router[_0xf67c('0xf')]('/',auth[_0xf67c('0x8')](),controller[_0xf67c('0x10')]);router[_0xf67c('0x11')]('/:id',auth[_0xf67c('0x8')](),controller[_0xf67c('0x12')]);router[_0xf67c('0x13')](_0xf67c('0x14'),auth[_0xf67c('0x8')](),controller['destroy']);module[_0xf67c('0x15')]=router;
\ No newline at end of file
index 7a12cc2..ab1fedd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2394=['STRING','exports'];(function(_0x5a90d2,_0x5f5b3b){var _0x1f7655=function(_0x18cf57){while(--_0x18cf57){_0x5a90d2['push'](_0x5a90d2['shift']());}};_0x1f7655(++_0x5f5b3b);}(_0x2394,0x13d));var _0x4239=function(_0x16b11a,_0xec18fe){_0x16b11a=_0x16b11a-0x0;var _0x48dbbe=_0x2394[_0x16b11a];return _0x48dbbe;};'use strict';var Sequelize=require('sequelize');module[_0x4239('0x0')]={'name':{'type':Sequelize[_0x4239('0x1')]},'description':{'type':Sequelize[_0x4239('0x1')]}};
\ No newline at end of file
+var _0xd4ff=['STRING','sequelize','exports'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0xd4ff,0xbb));var _0xfd4f=function(_0xd8d758,_0x153ed5){_0xd8d758=_0xd8d758-0x0;var _0x55628d=_0xd4ff[_0xd8d758];return _0x55628d;};'use strict';var Sequelize=require(_0xfd4f('0x0'));module[_0xfd4f('0x1')]={'name':{'type':Sequelize[_0xfd4f('0x2')]},'description':{'type':Sequelize[_0xfd4f('0x2')]}};
\ No newline at end of file
index 035b55a..8e377a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc32f=['order','where','filter','merge','VIRTUAL','SugarcrmConfiguration','includeAll','findAll','rows','catch','show','keys','include','options','find','create','body','findOne','params','SugarcrmField','sort','pick','getSubjects','getDescriptions','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','Content-Range','update','then','destroy','stack','name','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x30993b,_0x47c852){var _0x2bb1b6=function(_0x1d0c0a){while(--_0x1d0c0a){_0x30993b['push'](_0x30993b['shift']());}};_0x2bb1b6(++_0x47c852);}(_0xc32f,0x194));var _0xfc32=function(_0x29ef7e,_0x554118){_0x29ef7e=_0x29ef7e-0x0;var _0x127b5d=_0xc32f[_0x29ef7e];return _0x127b5d;};'use strict';var emlformat=require(_0xfc32('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc32('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfc32('0x2'));var moment=require(_0xfc32('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfc32('0x4'));var util=require(_0xfc32('0x5'));var path=require('path');var sox=require(_0xfc32('0x6'));var csv=require(_0xfc32('0x7'));var ejs=require(_0xfc32('0x8'));var fs=require('fs');var fs_extra=require(_0xfc32('0x9'));var _=require(_0xfc32('0xa'));var squel=require(_0xfc32('0xb'));var crypto=require(_0xfc32('0xc'));var jsforce=require(_0xfc32('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfc32('0xe'));var authService=require(_0xfc32('0xf'));var qs=require(_0xfc32('0x10'));var as=require(_0xfc32('0x11'));var hardwareService=require(_0xfc32('0x12'));var logger=require(_0xfc32('0x13'))(_0xfc32('0x14'));var utils=require(_0xfc32('0x15'));var config=require(_0xfc32('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc32('0x17'))['db'];function respondWithStatusCode(_0x21fdbc,_0x46328c){_0x46328c=_0x46328c||0xcc;return function(_0x15b8a6){if(_0x15b8a6){return _0x21fdbc[_0xfc32('0x18')](_0x46328c);}return _0x21fdbc['status'](_0x46328c)[_0xfc32('0x19')]();};}function respondWithResult(_0x33b209,_0x2e90da){_0x2e90da=_0x2e90da||0xc8;return function(_0xd38f21){if(_0xd38f21){return _0x33b209[_0xfc32('0x1a')](_0x2e90da)[_0xfc32('0x1b')](_0xd38f21);}};}function respondWithFilteredResult(_0x49c7e9,_0xb31fe){return function(_0x4bb386){if(_0x4bb386){var _0x138e82=typeof _0xb31fe[_0xfc32('0x1c')]==='undefined'&&typeof _0xb31fe[_0xfc32('0x1d')]==='undefined';var _0xb81190=_0x4bb386[_0xfc32('0x1e')];var _0x369802=_0x138e82?0x0:_0xb31fe[_0xfc32('0x1c')];var _0x1e7f03=_0x138e82?_0x4bb386[_0xfc32('0x1e')]:_0xb31fe['offset']+_0xb31fe[_0xfc32('0x1d')];var _0x2091b2;if(_0x1e7f03>=_0xb81190){_0x1e7f03=_0xb81190;_0x2091b2=0xc8;}else{_0x2091b2=0xce;}_0x49c7e9[_0xfc32('0x1a')](_0x2091b2);return _0x49c7e9[_0xfc32('0x1f')](_0xfc32('0x20'),_0x369802+'-'+_0x1e7f03+'/'+_0xb81190)[_0xfc32('0x1b')](_0x4bb386);}return null;};}function patchUpdates(_0x5c32b9){return function(_0x3cd2d9){try{jsonpatch['apply'](_0x3cd2d9,_0x5c32b9,!![]);}catch(_0x4ee7ce){return BPromise['reject'](_0x4ee7ce);}return _0x3cd2d9['save']();};}function saveUpdates(_0x706b12,_0x7283e5){return function(_0x436be2){if(_0x436be2){return _0x436be2[_0xfc32('0x21')](_0x706b12)[_0xfc32('0x22')](function(_0x280067){return _0x280067;});}return null;};}function removeEntity(_0x5ccf04,_0x3be85f){return function(_0x509c4f){if(_0x509c4f){return _0x509c4f[_0xfc32('0x23')]()[_0xfc32('0x22')](function(){_0x5ccf04[_0xfc32('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe2c03e,_0x58bcf1){return function(_0x237a92){if(!_0x237a92){_0xe2c03e['sendStatus'](0x194);}return _0x237a92;};}function handleError(_0x3c2b72,_0x1b9585){_0x1b9585=_0x1b9585||0x1f4;return function(_0x260ebc){logger['error'](_0x260ebc[_0xfc32('0x24')]);if(_0x260ebc[_0xfc32('0x25')]){delete _0x260ebc[_0xfc32('0x25')];}_0x3c2b72['status'](_0x1b9585)['send'](_0x260ebc);};}exports[_0xfc32('0x26')]=function(_0x3dcce4,_0x3821f0){var _0x1ff5e1={},_0x3f3577={},_0x4cd416={'count':0x0,'rows':[]};var _0x3d63f1=_[_0xfc32('0x27')](db['SugarcrmConfiguration'][_0xfc32('0x28')],function(_0x2fc9bc){return{'name':_0x2fc9bc['fieldName'],'type':_0x2fc9bc[_0xfc32('0x29')][_0xfc32('0x2a')]};});_0x3f3577[_0xfc32('0x2b')]=_[_0xfc32('0x27')](_0x3d63f1,'name');_0x3f3577['query']=_['keys'](_0x3dcce4[_0xfc32('0x2c')]);_0x3f3577[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x3f3577[_0xfc32('0x2b')],_0x3f3577[_0xfc32('0x2c')]);_0x1ff5e1[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x3f3577[_0xfc32('0x2b')],qs[_0xfc32('0x30')](_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x30')]));_0x1ff5e1[_0xfc32('0x2f')]=_0x1ff5e1[_0xfc32('0x2f')][_0xfc32('0x31')]?_0x1ff5e1[_0xfc32('0x2f')]:_0x3f3577[_0xfc32('0x2b')];if(!_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x32')](_0xfc32('0x33'))){_0x1ff5e1[_0xfc32('0x1d')]=qs[_0xfc32('0x1d')](_0x3dcce4[_0xfc32('0x2c')]['limit']);_0x1ff5e1[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x3dcce4[_0xfc32('0x2c')]['offset']);}_0x1ff5e1[_0xfc32('0x34')]=qs['sort'](_0x3dcce4[_0xfc32('0x2c')]['sort']);_0x1ff5e1[_0xfc32('0x35')]=qs['filters'](_['pick'](_0x3dcce4['query'],_0x3f3577[_0xfc32('0x2d')]),_0x3d63f1);if(_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x36')]){_0x1ff5e1[_0xfc32('0x35')]=_[_0xfc32('0x37')](_0x1ff5e1[_0xfc32('0x35')],{'$or':_[_0xfc32('0x27')](_0x3d63f1,function(_0x787cd7){if(_0x787cd7[_0xfc32('0x29')]!==_0xfc32('0x38')){var _0x5be7a7={};_0x5be7a7[_0x787cd7[_0xfc32('0x25')]]={'$like':'%'+_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x5be7a7;}})});}_0x1ff5e1=_['merge']({},_0x1ff5e1,_0x3dcce4['options']);var _0x200c5f={'where':_0x1ff5e1[_0xfc32('0x35')]};return db[_0xfc32('0x39')][_0xfc32('0x1e')](_0x200c5f)['then'](function(_0x55ada3){_0x4cd416[_0xfc32('0x1e')]=_0x55ada3;if(_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x3a')]){_0x1ff5e1['include']=[{'all':!![]}];}return db[_0xfc32('0x39')][_0xfc32('0x3b')](_0x1ff5e1);})[_0xfc32('0x22')](function(_0x50b18d){_0x4cd416[_0xfc32('0x3c')]=_0x50b18d;return _0x4cd416;})['then'](respondWithFilteredResult(_0x3821f0,_0x1ff5e1))[_0xfc32('0x3d')](handleError(_0x3821f0,null));};exports[_0xfc32('0x3e')]=function(_0x143430,_0x4c2685){var _0x4fbd86={'raw':![],'where':{'id':_0x143430['params']['id']}},_0x3692ff={};_0x3692ff['model']=_[_0xfc32('0x3f')](db[_0xfc32('0x39')][_0xfc32('0x28')]);_0x3692ff[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x143430[_0xfc32('0x2c')]);_0x3692ff[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x3692ff[_0xfc32('0x2b')],_0x3692ff[_0xfc32('0x2c')]);_0x4fbd86[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x3692ff['model'],qs[_0xfc32('0x30')](_0x143430['query'][_0xfc32('0x30')]));_0x4fbd86[_0xfc32('0x2f')]=_0x4fbd86['attributes'][_0xfc32('0x31')]?_0x4fbd86[_0xfc32('0x2f')]:_0x3692ff[_0xfc32('0x2b')];if(_0x143430[_0xfc32('0x2c')]['includeAll']){_0x4fbd86[_0xfc32('0x40')]=[{'all':!![]}];}_0x4fbd86=_[_0xfc32('0x37')]({},_0x4fbd86,_0x143430[_0xfc32('0x41')]);return db[_0xfc32('0x39')][_0xfc32('0x42')](_0x4fbd86)[_0xfc32('0x22')](handleEntityNotFound(_0x4c2685,null))['then'](respondWithResult(_0x4c2685,null))[_0xfc32('0x3d')](handleError(_0x4c2685,null));};exports['create']=function(_0x476016,_0x59a739){return db[_0xfc32('0x39')][_0xfc32('0x43')](_0x476016['body'],{})[_0xfc32('0x22')](respondWithResult(_0x59a739,0xc9))[_0xfc32('0x3d')](handleError(_0x59a739,null));};exports[_0xfc32('0x21')]=function(_0x1b6fc9,_0x1c2294){if(_0x1b6fc9['body']['id']){delete _0x1b6fc9[_0xfc32('0x44')]['id'];}return db[_0xfc32('0x39')]['find']({'where':{'id':_0x1b6fc9['params']['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x1c2294,null))[_0xfc32('0x22')](saveUpdates(_0x1b6fc9[_0xfc32('0x44')],null))['then'](respondWithResult(_0x1c2294,null))['catch'](handleError(_0x1c2294,null));};exports['destroy']=function(_0x5ab6ef,_0x1ced4a){return db['SugarcrmConfiguration'][_0xfc32('0x42')]({'where':{'id':_0x5ab6ef['params']['id']}})['then'](handleEntityNotFound(_0x1ced4a,null))['then'](removeEntity(_0x1ced4a,null))[_0xfc32('0x3d')](handleError(_0x1ced4a,null));};exports['getFields']=function(_0x595137,_0x1044bf,_0x1c38e0){var _0x31de6a={};var _0x23ebfb={};var _0x228677;var _0x38bd37;return db[_0xfc32('0x39')][_0xfc32('0x45')]({'where':{'id':_0x595137[_0xfc32('0x46')]['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x1044bf,null))['then'](function(_0x41b8da){if(_0x41b8da){_0x228677=_0x41b8da;_0x23ebfb[_0xfc32('0x2b')]=_[_0xfc32('0x3f')](db[_0xfc32('0x47')][_0xfc32('0x28')]);_0x23ebfb[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x595137['query']);_0x23ebfb[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x23ebfb['model'],_0x23ebfb['query']);_0x31de6a[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x23ebfb[_0xfc32('0x2b')],qs['fields'](_0x595137[_0xfc32('0x2c')][_0xfc32('0x30')]));_0x31de6a['attributes']=_0x31de6a['attributes'][_0xfc32('0x31')]?_0x31de6a[_0xfc32('0x2f')]:_0x23ebfb[_0xfc32('0x2b')];_0x31de6a['order']=qs['sort'](_0x595137['query'][_0xfc32('0x48')]);_0x31de6a['where']=qs[_0xfc32('0x2d')](_[_0xfc32('0x49')](_0x595137[_0xfc32('0x2c')],_0x23ebfb[_0xfc32('0x2d')]));if(_0x595137[_0xfc32('0x2c')]['filter']){_0x31de6a[_0xfc32('0x35')]=_['merge'](_0x31de6a[_0xfc32('0x35')],{'$or':_[_0xfc32('0x27')](_0x31de6a['attributes'],function(_0x1ed975){var _0x2a8eb0={};_0x2a8eb0[_0x1ed975]={'$like':'%'+_0x595137[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x2a8eb0;})});}_0x31de6a=_[_0xfc32('0x37')]({},_0x31de6a,_0x595137[_0xfc32('0x41')]);return _0x228677['getFields'](_0x31de6a);}})[_0xfc32('0x22')](function(_0x592bf6){if(_0x592bf6){_0x38bd37=_0x592bf6[_0xfc32('0x31')];if(!_0x595137[_0xfc32('0x2c')][_0xfc32('0x32')](_0xfc32('0x33'))){_0x31de6a[_0xfc32('0x1d')]=qs['limit'](_0x595137['query'][_0xfc32('0x1d')]);_0x31de6a[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x595137[_0xfc32('0x2c')][_0xfc32('0x1c')]);}return _0x228677['getFields'](_0x31de6a);}})[_0xfc32('0x22')](function(_0x2b03bb){if(_0x2b03bb){return _0x2b03bb?{'count':_0x38bd37,'rows':_0x2b03bb}:null;}})[_0xfc32('0x22')](respondWithResult(_0x1044bf,null))[_0xfc32('0x3d')](handleError(_0x1044bf,null));};exports[_0xfc32('0x4a')]=function(_0x26e141,_0x50bc21,_0x1d5f79){var _0x143398={};var _0x1e1a44={};var _0x1bb142;var _0x39e757;return db['SugarcrmConfiguration'][_0xfc32('0x45')]({'where':{'id':_0x26e141[_0xfc32('0x46')]['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x50bc21,null))[_0xfc32('0x22')](function(_0x39779a){if(_0x39779a){_0x1bb142=_0x39779a;_0x1e1a44[_0xfc32('0x2b')]=_[_0xfc32('0x3f')](db[_0xfc32('0x47')]['rawAttributes']);_0x1e1a44[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x26e141['query']);_0x1e1a44[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x1e1a44[_0xfc32('0x2b')],_0x1e1a44[_0xfc32('0x2c')]);_0x143398[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x1e1a44[_0xfc32('0x2b')],qs['fields'](_0x26e141[_0xfc32('0x2c')]['fields']));_0x143398[_0xfc32('0x2f')]=_0x143398['attributes'][_0xfc32('0x31')]?_0x143398[_0xfc32('0x2f')]:_0x1e1a44[_0xfc32('0x2b')];_0x143398['order']=qs[_0xfc32('0x48')](_0x26e141[_0xfc32('0x2c')]['sort']);_0x143398[_0xfc32('0x35')]=qs[_0xfc32('0x2d')](_['pick'](_0x26e141[_0xfc32('0x2c')],_0x1e1a44['filters']));if(_0x26e141[_0xfc32('0x2c')][_0xfc32('0x36')]){_0x143398[_0xfc32('0x35')]=_[_0xfc32('0x37')](_0x143398[_0xfc32('0x35')],{'$or':_[_0xfc32('0x27')](_0x143398[_0xfc32('0x2f')],function(_0x4978f5){var _0x368b17={};_0x368b17[_0x4978f5]={'$like':'%'+_0x26e141[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x368b17;})});}_0x143398=_[_0xfc32('0x37')]({},_0x143398,_0x26e141['options']);return _0x1bb142['getSubjects'](_0x143398);}})[_0xfc32('0x22')](function(_0x525673){if(_0x525673){_0x39e757=_0x525673[_0xfc32('0x31')];if(!_0x26e141[_0xfc32('0x2c')]['hasOwnProperty']('nolimit')){_0x143398[_0xfc32('0x1d')]=qs[_0xfc32('0x1d')](_0x26e141[_0xfc32('0x2c')][_0xfc32('0x1d')]);_0x143398[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x26e141[_0xfc32('0x2c')][_0xfc32('0x1c')]);}return _0x1bb142['getSubjects'](_0x143398);}})['then'](function(_0x318587){if(_0x318587){return _0x318587?{'count':_0x39e757,'rows':_0x318587}:null;}})[_0xfc32('0x22')](respondWithResult(_0x50bc21,null))[_0xfc32('0x3d')](handleError(_0x50bc21,null));};exports['getDescriptions']=function(_0x288c33,_0x544929,_0x5d76fd){var _0x33df7e={};var _0x3eae54={};var _0x20b3eb;var _0x510d96;return db[_0xfc32('0x39')][_0xfc32('0x45')]({'where':{'id':_0x288c33[_0xfc32('0x46')]['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x544929,null))[_0xfc32('0x22')](function(_0x431db1){if(_0x431db1){_0x20b3eb=_0x431db1;_0x3eae54[_0xfc32('0x2b')]=_['keys'](db['SugarcrmField']['rawAttributes']);_0x3eae54[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x288c33[_0xfc32('0x2c')]);_0x3eae54[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x3eae54[_0xfc32('0x2b')],_0x3eae54[_0xfc32('0x2c')]);_0x33df7e[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x3eae54[_0xfc32('0x2b')],qs[_0xfc32('0x30')](_0x288c33['query']['fields']));_0x33df7e[_0xfc32('0x2f')]=_0x33df7e[_0xfc32('0x2f')][_0xfc32('0x31')]?_0x33df7e['attributes']:_0x3eae54[_0xfc32('0x2b')];_0x33df7e['order']=qs[_0xfc32('0x48')](_0x288c33[_0xfc32('0x2c')]['sort']);_0x33df7e[_0xfc32('0x35')]=qs[_0xfc32('0x2d')](_[_0xfc32('0x49')](_0x288c33[_0xfc32('0x2c')],_0x3eae54['filters']));if(_0x288c33['query'][_0xfc32('0x36')]){_0x33df7e[_0xfc32('0x35')]=_[_0xfc32('0x37')](_0x33df7e[_0xfc32('0x35')],{'$or':_['map'](_0x33df7e[_0xfc32('0x2f')],function(_0x1c78a1){var _0x321aa0={};_0x321aa0[_0x1c78a1]={'$like':'%'+_0x288c33[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x321aa0;})});}_0x33df7e=_[_0xfc32('0x37')]({},_0x33df7e,_0x288c33[_0xfc32('0x41')]);return _0x20b3eb[_0xfc32('0x4b')](_0x33df7e);}})[_0xfc32('0x22')](function(_0x591c6d){if(_0x591c6d){_0x510d96=_0x591c6d['length'];if(!_0x288c33['query'][_0xfc32('0x32')](_0xfc32('0x33'))){_0x33df7e[_0xfc32('0x1d')]=qs[_0xfc32('0x1d')](_0x288c33[_0xfc32('0x2c')]['limit']);_0x33df7e[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x288c33[_0xfc32('0x2c')][_0xfc32('0x1c')]);}return _0x20b3eb[_0xfc32('0x4b')](_0x33df7e);}})['then'](function(_0xfbaa50){if(_0xfbaa50){return _0xfbaa50?{'count':_0x510d96,'rows':_0xfbaa50}:null;}})[_0xfc32('0x22')](respondWithResult(_0x544929,null))[_0xfc32('0x3d')](handleError(_0x544929,null));};
\ No newline at end of file
+var _0xd9ec=['status','end','json','offset','undefined','limit','Content-Range','apply','save','update','then','stack','name','send','SugarcrmConfiguration','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','count','includeAll','include','findAll','catch','keys','length','find','create','body','params','getFields','SugarcrmField','getSubjects','findOne','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus'];(function(_0xca3f4c,_0x4e1b29){var _0x28a5ac=function(_0x4d1403){while(--_0x4d1403){_0xca3f4c['push'](_0xca3f4c['shift']());}};_0x28a5ac(++_0x4e1b29);}(_0xd9ec,0x7e));var _0xcd9e=function(_0x4bd88c,_0x33642d){_0x4bd88c=_0x4bd88c-0x0;var _0x1124f9=_0xd9ec[_0x4bd88c];return _0x1124f9;};'use strict';var emlformat=require(_0xcd9e('0x0'));var rimraf=require(_0xcd9e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcd9e('0x2'));var rp=require(_0xcd9e('0x3'));var moment=require(_0xcd9e('0x4'));var BPromise=require(_0xcd9e('0x5'));var Mustache=require('mustache');var util=require(_0xcd9e('0x6'));var path=require(_0xcd9e('0x7'));var sox=require(_0xcd9e('0x8'));var csv=require(_0xcd9e('0x9'));var ejs=require(_0xcd9e('0xa'));var fs=require('fs');var fs_extra=require(_0xcd9e('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xcd9e('0xc'));var jsforce=require(_0xcd9e('0xd'));var deskjs=require(_0xcd9e('0xe'));var toCsv=require(_0xcd9e('0x9'));var querystring=require(_0xcd9e('0xf'));var Papa=require(_0xcd9e('0x10'));var Redis=require('ioredis');var authService=require(_0xcd9e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xcd9e('0x12'));var hardwareService=require(_0xcd9e('0x13'));var logger=require(_0xcd9e('0x14'))(_0xcd9e('0x15'));var utils=require(_0xcd9e('0x16'));var config=require(_0xcd9e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xcd9e('0x18'))['db'];function respondWithStatusCode(_0x338ed8,_0x3cd5e0){_0x3cd5e0=_0x3cd5e0||0xcc;return function(_0x29893e){if(_0x29893e){return _0x338ed8[_0xcd9e('0x19')](_0x3cd5e0);}return _0x338ed8[_0xcd9e('0x1a')](_0x3cd5e0)[_0xcd9e('0x1b')]();};}function respondWithResult(_0x58af6f,_0x26512a){_0x26512a=_0x26512a||0xc8;return function(_0x272f8a){if(_0x272f8a){return _0x58af6f[_0xcd9e('0x1a')](_0x26512a)[_0xcd9e('0x1c')](_0x272f8a);}};}function respondWithFilteredResult(_0x1495e9,_0xf45251){return function(_0x246b2d){if(_0x246b2d){var _0xe19bd8=typeof _0xf45251[_0xcd9e('0x1d')]==='undefined'&&typeof _0xf45251['limit']===_0xcd9e('0x1e');var _0x107209=_0x246b2d['count'];var _0x493782=_0xe19bd8?0x0:_0xf45251[_0xcd9e('0x1d')];var _0x4351c6=_0xe19bd8?_0x246b2d['count']:_0xf45251[_0xcd9e('0x1d')]+_0xf45251[_0xcd9e('0x1f')];var _0x40c4e1;if(_0x4351c6>=_0x107209){_0x4351c6=_0x107209;_0x40c4e1=0xc8;}else{_0x40c4e1=0xce;}_0x1495e9[_0xcd9e('0x1a')](_0x40c4e1);return _0x1495e9['set'](_0xcd9e('0x20'),_0x493782+'-'+_0x4351c6+'/'+_0x107209)[_0xcd9e('0x1c')](_0x246b2d);}return null;};}function patchUpdates(_0x302fb2){return function(_0x284c58){try{jsonpatch[_0xcd9e('0x21')](_0x284c58,_0x302fb2,!![]);}catch(_0x98c138){return BPromise['reject'](_0x98c138);}return _0x284c58[_0xcd9e('0x22')]();};}function saveUpdates(_0x48e88f,_0x4b9218){return function(_0x33981a){if(_0x33981a){return _0x33981a[_0xcd9e('0x23')](_0x48e88f)[_0xcd9e('0x24')](function(_0x1e141e){return _0x1e141e;});}return null;};}function removeEntity(_0xab7cf6,_0x246f5a){return function(_0x473e51){if(_0x473e51){return _0x473e51['destroy']()[_0xcd9e('0x24')](function(){_0xab7cf6['status'](0xcc)[_0xcd9e('0x1b')]();});}};}function handleEntityNotFound(_0x2b78bb,_0x4d101f){return function(_0x1abc37){if(!_0x1abc37){_0x2b78bb[_0xcd9e('0x19')](0x194);}return _0x1abc37;};}function handleError(_0x2c7bf5,_0x581635){_0x581635=_0x581635||0x1f4;return function(_0x3327f2){logger['error'](_0x3327f2[_0xcd9e('0x25')]);if(_0x3327f2[_0xcd9e('0x26')]){delete _0x3327f2[_0xcd9e('0x26')];}_0x2c7bf5[_0xcd9e('0x1a')](_0x581635)[_0xcd9e('0x27')](_0x3327f2);};}exports['index']=function(_0x441436,_0x370aff){var _0x402d23={},_0xae700b={},_0xa31848={'count':0x0,'rows':[]};var _0x42f953=_['map'](db[_0xcd9e('0x28')][_0xcd9e('0x29')],function(_0x566329){return{'name':_0x566329['fieldName'],'type':_0x566329[_0xcd9e('0x2a')][_0xcd9e('0x2b')]};});_0xae700b[_0xcd9e('0x2c')]=_[_0xcd9e('0x2d')](_0x42f953,_0xcd9e('0x26'));_0xae700b[_0xcd9e('0x2e')]=_['keys'](_0x441436[_0xcd9e('0x2e')]);_0xae700b[_0xcd9e('0x2f')]=_[_0xcd9e('0x30')](_0xae700b[_0xcd9e('0x2c')],_0xae700b[_0xcd9e('0x2e')]);_0x402d23['attributes']=_['intersection'](_0xae700b[_0xcd9e('0x2c')],qs[_0xcd9e('0x31')](_0x441436[_0xcd9e('0x2e')][_0xcd9e('0x31')]));_0x402d23['attributes']=_0x402d23[_0xcd9e('0x32')]['length']?_0x402d23['attributes']:_0xae700b[_0xcd9e('0x2c')];if(!_0x441436['query'][_0xcd9e('0x33')](_0xcd9e('0x34'))){_0x402d23[_0xcd9e('0x1f')]=qs[_0xcd9e('0x1f')](_0x441436[_0xcd9e('0x2e')]['limit']);_0x402d23[_0xcd9e('0x1d')]=qs['offset'](_0x441436[_0xcd9e('0x2e')][_0xcd9e('0x1d')]);}_0x402d23[_0xcd9e('0x35')]=qs['sort'](_0x441436[_0xcd9e('0x2e')][_0xcd9e('0x36')]);_0x402d23['where']=qs[_0xcd9e('0x2f')](_[_0xcd9e('0x37')](_0x441436[_0xcd9e('0x2e')],_0xae700b[_0xcd9e('0x2f')]),_0x42f953);if(_0x441436['query']['filter']){_0x402d23[_0xcd9e('0x38')]=_[_0xcd9e('0x39')](_0x402d23[_0xcd9e('0x38')],{'$or':_['map'](_0x42f953,function(_0x4fb4a8){if(_0x4fb4a8[_0xcd9e('0x2a')]!=='VIRTUAL'){var _0x5cd550={};_0x5cd550[_0x4fb4a8[_0xcd9e('0x26')]]={'$like':'%'+_0x441436[_0xcd9e('0x2e')][_0xcd9e('0x3a')]+'%'};return _0x5cd550;}})});}_0x402d23=_[_0xcd9e('0x39')]({},_0x402d23,_0x441436[_0xcd9e('0x3b')]);var _0x15baf3={'where':_0x402d23[_0xcd9e('0x38')]};return db[_0xcd9e('0x28')][_0xcd9e('0x3c')](_0x15baf3)[_0xcd9e('0x24')](function(_0x9341e1){_0xa31848[_0xcd9e('0x3c')]=_0x9341e1;if(_0x441436[_0xcd9e('0x2e')][_0xcd9e('0x3d')]){_0x402d23[_0xcd9e('0x3e')]=[{'all':!![]}];}return db[_0xcd9e('0x28')][_0xcd9e('0x3f')](_0x402d23);})['then'](function(_0x1235ea){_0xa31848['rows']=_0x1235ea;return _0xa31848;})[_0xcd9e('0x24')](respondWithFilteredResult(_0x370aff,_0x402d23))[_0xcd9e('0x40')](handleError(_0x370aff,null));};exports['show']=function(_0x2fe367,_0xd8470){var _0x52baf3={'raw':![],'where':{'id':_0x2fe367['params']['id']}},_0x4404ae={};_0x4404ae[_0xcd9e('0x2c')]=_[_0xcd9e('0x41')](db['SugarcrmConfiguration'][_0xcd9e('0x29')]);_0x4404ae[_0xcd9e('0x2e')]=_[_0xcd9e('0x41')](_0x2fe367[_0xcd9e('0x2e')]);_0x4404ae[_0xcd9e('0x2f')]=_[_0xcd9e('0x30')](_0x4404ae['model'],_0x4404ae['query']);_0x52baf3[_0xcd9e('0x32')]=_[_0xcd9e('0x30')](_0x4404ae[_0xcd9e('0x2c')],qs[_0xcd9e('0x31')](_0x2fe367[_0xcd9e('0x2e')][_0xcd9e('0x31')]));_0x52baf3[_0xcd9e('0x32')]=_0x52baf3[_0xcd9e('0x32')][_0xcd9e('0x42')]?_0x52baf3['attributes']:_0x4404ae[_0xcd9e('0x2c')];if(_0x2fe367[_0xcd9e('0x2e')][_0xcd9e('0x3d')]){_0x52baf3[_0xcd9e('0x3e')]=[{'all':!![]}];}_0x52baf3=_[_0xcd9e('0x39')]({},_0x52baf3,_0x2fe367['options']);return db['SugarcrmConfiguration'][_0xcd9e('0x43')](_0x52baf3)['then'](handleEntityNotFound(_0xd8470,null))[_0xcd9e('0x24')](respondWithResult(_0xd8470,null))['catch'](handleError(_0xd8470,null));};exports[_0xcd9e('0x44')]=function(_0x5e7c9f,_0x5afcde){return db[_0xcd9e('0x28')][_0xcd9e('0x44')](_0x5e7c9f['body'],{})[_0xcd9e('0x24')](respondWithResult(_0x5afcde,0xc9))[_0xcd9e('0x40')](handleError(_0x5afcde,null));};exports[_0xcd9e('0x23')]=function(_0x1769bf,_0x538823){if(_0x1769bf[_0xcd9e('0x45')]['id']){delete _0x1769bf[_0xcd9e('0x45')]['id'];}return db['SugarcrmConfiguration'][_0xcd9e('0x43')]({'where':{'id':_0x1769bf[_0xcd9e('0x46')]['id']}})['then'](handleEntityNotFound(_0x538823,null))[_0xcd9e('0x24')](saveUpdates(_0x1769bf[_0xcd9e('0x45')],null))['then'](respondWithResult(_0x538823,null))['catch'](handleError(_0x538823,null));};exports['destroy']=function(_0x56e0df,_0x21e8c9){return db[_0xcd9e('0x28')][_0xcd9e('0x43')]({'where':{'id':_0x56e0df[_0xcd9e('0x46')]['id']}})[_0xcd9e('0x24')](handleEntityNotFound(_0x21e8c9,null))[_0xcd9e('0x24')](removeEntity(_0x21e8c9,null))[_0xcd9e('0x40')](handleError(_0x21e8c9,null));};exports[_0xcd9e('0x47')]=function(_0xdf632b,_0xe74559,_0xf85808){var _0x4e1bf8={};var _0xf24043={};var _0x501b1f;var _0x4f6275;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0xdf632b[_0xcd9e('0x46')]['id']}})[_0xcd9e('0x24')](handleEntityNotFound(_0xe74559,null))[_0xcd9e('0x24')](function(_0x5803eb){if(_0x5803eb){_0x501b1f=_0x5803eb;_0xf24043[_0xcd9e('0x2c')]=_[_0xcd9e('0x41')](db[_0xcd9e('0x48')]['rawAttributes']);_0xf24043[_0xcd9e('0x2e')]=_[_0xcd9e('0x41')](_0xdf632b[_0xcd9e('0x2e')]);_0xf24043[_0xcd9e('0x2f')]=_[_0xcd9e('0x30')](_0xf24043['model'],_0xf24043[_0xcd9e('0x2e')]);_0x4e1bf8[_0xcd9e('0x32')]=_[_0xcd9e('0x30')](_0xf24043['model'],qs[_0xcd9e('0x31')](_0xdf632b[_0xcd9e('0x2e')][_0xcd9e('0x31')]));_0x4e1bf8['attributes']=_0x4e1bf8[_0xcd9e('0x32')][_0xcd9e('0x42')]?_0x4e1bf8[_0xcd9e('0x32')]:_0xf24043[_0xcd9e('0x2c')];_0x4e1bf8[_0xcd9e('0x35')]=qs['sort'](_0xdf632b[_0xcd9e('0x2e')][_0xcd9e('0x36')]);_0x4e1bf8[_0xcd9e('0x38')]=qs[_0xcd9e('0x2f')](_['pick'](_0xdf632b['query'],_0xf24043[_0xcd9e('0x2f')]));if(_0xdf632b['query'][_0xcd9e('0x3a')]){_0x4e1bf8[_0xcd9e('0x38')]=_[_0xcd9e('0x39')](_0x4e1bf8[_0xcd9e('0x38')],{'$or':_[_0xcd9e('0x2d')](_0x4e1bf8[_0xcd9e('0x32')],function(_0x333264){var _0x51c5d2={};_0x51c5d2[_0x333264]={'$like':'%'+_0xdf632b[_0xcd9e('0x2e')]['filter']+'%'};return _0x51c5d2;})});}_0x4e1bf8=_[_0xcd9e('0x39')]({},_0x4e1bf8,_0xdf632b[_0xcd9e('0x3b')]);return _0x501b1f[_0xcd9e('0x47')](_0x4e1bf8);}})['then'](function(_0x249434){if(_0x249434){_0x4f6275=_0x249434['length'];if(!_0xdf632b[_0xcd9e('0x2e')]['hasOwnProperty']('nolimit')){_0x4e1bf8['limit']=qs[_0xcd9e('0x1f')](_0xdf632b[_0xcd9e('0x2e')][_0xcd9e('0x1f')]);_0x4e1bf8[_0xcd9e('0x1d')]=qs[_0xcd9e('0x1d')](_0xdf632b[_0xcd9e('0x2e')][_0xcd9e('0x1d')]);}return _0x501b1f['getFields'](_0x4e1bf8);}})[_0xcd9e('0x24')](function(_0x199662){if(_0x199662){return _0x199662?{'count':_0x4f6275,'rows':_0x199662}:null;}})[_0xcd9e('0x24')](respondWithResult(_0xe74559,null))['catch'](handleError(_0xe74559,null));};exports[_0xcd9e('0x49')]=function(_0x2d7cb5,_0x5625f0,_0x4fc33b){var _0xc3a7cc={};var _0x2a5087={};var _0x4bdabe;var _0x1c9d95;return db['SugarcrmConfiguration'][_0xcd9e('0x4a')]({'where':{'id':_0x2d7cb5[_0xcd9e('0x46')]['id']}})[_0xcd9e('0x24')](handleEntityNotFound(_0x5625f0,null))[_0xcd9e('0x24')](function(_0xcd401b){if(_0xcd401b){_0x4bdabe=_0xcd401b;_0x2a5087[_0xcd9e('0x2c')]=_[_0xcd9e('0x41')](db['SugarcrmField'][_0xcd9e('0x29')]);_0x2a5087['query']=_[_0xcd9e('0x41')](_0x2d7cb5['query']);_0x2a5087[_0xcd9e('0x2f')]=_['intersection'](_0x2a5087[_0xcd9e('0x2c')],_0x2a5087[_0xcd9e('0x2e')]);_0xc3a7cc['attributes']=_[_0xcd9e('0x30')](_0x2a5087[_0xcd9e('0x2c')],qs[_0xcd9e('0x31')](_0x2d7cb5[_0xcd9e('0x2e')][_0xcd9e('0x31')]));_0xc3a7cc[_0xcd9e('0x32')]=_0xc3a7cc['attributes']['length']?_0xc3a7cc[_0xcd9e('0x32')]:_0x2a5087[_0xcd9e('0x2c')];_0xc3a7cc[_0xcd9e('0x35')]=qs[_0xcd9e('0x36')](_0x2d7cb5[_0xcd9e('0x2e')][_0xcd9e('0x36')]);_0xc3a7cc[_0xcd9e('0x38')]=qs['filters'](_[_0xcd9e('0x37')](_0x2d7cb5['query'],_0x2a5087[_0xcd9e('0x2f')]));if(_0x2d7cb5[_0xcd9e('0x2e')][_0xcd9e('0x3a')]){_0xc3a7cc['where']=_[_0xcd9e('0x39')](_0xc3a7cc[_0xcd9e('0x38')],{'$or':_['map'](_0xc3a7cc['attributes'],function(_0x2dd731){var _0x4dce84={};_0x4dce84[_0x2dd731]={'$like':'%'+_0x2d7cb5[_0xcd9e('0x2e')][_0xcd9e('0x3a')]+'%'};return _0x4dce84;})});}_0xc3a7cc=_[_0xcd9e('0x39')]({},_0xc3a7cc,_0x2d7cb5['options']);return _0x4bdabe[_0xcd9e('0x49')](_0xc3a7cc);}})[_0xcd9e('0x24')](function(_0x58e7c6){if(_0x58e7c6){_0x1c9d95=_0x58e7c6[_0xcd9e('0x42')];if(!_0x2d7cb5['query']['hasOwnProperty'](_0xcd9e('0x34'))){_0xc3a7cc[_0xcd9e('0x1f')]=qs['limit'](_0x2d7cb5[_0xcd9e('0x2e')][_0xcd9e('0x1f')]);_0xc3a7cc[_0xcd9e('0x1d')]=qs['offset'](_0x2d7cb5[_0xcd9e('0x2e')]['offset']);}return _0x4bdabe[_0xcd9e('0x49')](_0xc3a7cc);}})[_0xcd9e('0x24')](function(_0x5ecb7d){if(_0x5ecb7d){return _0x5ecb7d?{'count':_0x1c9d95,'rows':_0x5ecb7d}:null;}})[_0xcd9e('0x24')](respondWithResult(_0x5625f0,null))[_0xcd9e('0x40')](handleError(_0x5625f0,null));};exports['getDescriptions']=function(_0x4945b5,_0x2fa485,_0x3ab4a6){var _0x28898b={};var _0x1ba96c={};var _0xdfa1c9;var _0x1f6d36;return db['SugarcrmConfiguration'][_0xcd9e('0x4a')]({'where':{'id':_0x4945b5['params']['id']}})[_0xcd9e('0x24')](handleEntityNotFound(_0x2fa485,null))[_0xcd9e('0x24')](function(_0x5a810d){if(_0x5a810d){_0xdfa1c9=_0x5a810d;_0x1ba96c['model']=_[_0xcd9e('0x41')](db[_0xcd9e('0x48')][_0xcd9e('0x29')]);_0x1ba96c['query']=_[_0xcd9e('0x41')](_0x4945b5[_0xcd9e('0x2e')]);_0x1ba96c['filters']=_['intersection'](_0x1ba96c['model'],_0x1ba96c[_0xcd9e('0x2e')]);_0x28898b[_0xcd9e('0x32')]=_['intersection'](_0x1ba96c[_0xcd9e('0x2c')],qs[_0xcd9e('0x31')](_0x4945b5[_0xcd9e('0x2e')][_0xcd9e('0x31')]));_0x28898b[_0xcd9e('0x32')]=_0x28898b[_0xcd9e('0x32')]['length']?_0x28898b[_0xcd9e('0x32')]:_0x1ba96c[_0xcd9e('0x2c')];_0x28898b[_0xcd9e('0x35')]=qs[_0xcd9e('0x36')](_0x4945b5[_0xcd9e('0x2e')]['sort']);_0x28898b['where']=qs[_0xcd9e('0x2f')](_[_0xcd9e('0x37')](_0x4945b5[_0xcd9e('0x2e')],_0x1ba96c[_0xcd9e('0x2f')]));if(_0x4945b5[_0xcd9e('0x2e')][_0xcd9e('0x3a')]){_0x28898b[_0xcd9e('0x38')]=_[_0xcd9e('0x39')](_0x28898b[_0xcd9e('0x38')],{'$or':_[_0xcd9e('0x2d')](_0x28898b[_0xcd9e('0x32')],function(_0xf9e5c7){var _0x516da8={};_0x516da8[_0xf9e5c7]={'$like':'%'+_0x4945b5[_0xcd9e('0x2e')][_0xcd9e('0x3a')]+'%'};return _0x516da8;})});}_0x28898b=_['merge']({},_0x28898b,_0x4945b5['options']);return _0xdfa1c9[_0xcd9e('0x4b')](_0x28898b);}})[_0xcd9e('0x24')](function(_0x8871b7){if(_0x8871b7){_0x1f6d36=_0x8871b7[_0xcd9e('0x42')];if(!_0x4945b5[_0xcd9e('0x2e')][_0xcd9e('0x33')](_0xcd9e('0x34'))){_0x28898b[_0xcd9e('0x1f')]=qs[_0xcd9e('0x1f')](_0x4945b5[_0xcd9e('0x2e')][_0xcd9e('0x1f')]);_0x28898b[_0xcd9e('0x1d')]=qs['offset'](_0x4945b5[_0xcd9e('0x2e')][_0xcd9e('0x1d')]);}return _0xdfa1c9['getDescriptions'](_0x28898b);}})[_0xcd9e('0x24')](function(_0x1eaad1){if(_0x1eaad1){return _0x1eaad1?{'count':_0x1f6d36,'rows':_0x1eaad1}:null;}})[_0xcd9e('0x24')](respondWithResult(_0x2fa485,null))[_0xcd9e('0x40')](handleError(_0x2fa485,null));};
\ No newline at end of file
index f8ca834..d52d822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e75=['path','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','../../config/logger','moment','bluebird','request-promise'];(function(_0x315e98,_0x2f1693){var _0x3c3b60=function(_0x439bd8){while(--_0x439bd8){_0x315e98['push'](_0x315e98['shift']());}};_0x3c3b60(++_0x2f1693);}(_0x1e75,0x9e));var _0x51e7=function(_0x5d38ed,_0x2fa1b3){_0x5d38ed=_0x5d38ed-0x0;var _0x4dc588=_0x1e75[_0x5d38ed];return _0x4dc588;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x51e7('0x0'))('api');var moment=require(_0x51e7('0x1'));var BPromise=require(_0x51e7('0x2'));var rp=require(_0x51e7('0x3'));var fs=require('fs');var path=require(_0x51e7('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x51e7('0x5')]=function(_0x3f7b41,_0x1b7b5c){return _0x3f7b41[_0x51e7('0x6')](_0x51e7('0x7'),attributes,{'tableName':_0x51e7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2910=['bluebird','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api'];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0x2910,0x193));var _0x0291=function(_0x103ac4,_0x137d0c){_0x103ac4=_0x103ac4-0x0;var _0x39d4c0=_0x2910[_0x103ac4];return _0x39d4c0;};'use strict';var _=require(_0x0291('0x0'));var util=require(_0x0291('0x1'));var logger=require(_0x0291('0x2'))(_0x0291('0x3'));var moment=require('moment');var BPromise=require(_0x0291('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0291('0x5'));var config=require(_0x0291('0x6'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x0291('0x7')]=function(_0x2181eb,_0x4df9c6){return _0x2181eb[_0x0291('0x8')](_0x0291('0x9'),attributes,{'tableName':_0x0291('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f325a63..a35a8a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x550b=['lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x180ac2,_0x219d65){var _0xfcaede=function(_0x728ebe){while(--_0x728ebe){_0x180ac2['push'](_0x180ac2['shift']());}};_0xfcaede(++_0x219d65);}(_0x550b,0xdc));var _0xb550=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0x550b[_0x4ae625];return _0x31accf;};'use strict';var _=require(_0xb550('0x0'));var util=require(_0xb550('0x1'));var moment=require('moment');var BPromise=require(_0xb550('0x2'));var rs=require(_0xb550('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb550('0x4'));var logger=require(_0xb550('0x5'))('rpc');var config=require(_0xb550('0x6'));var jayson=require(_0xb550('0x7'));var client=jayson[_0xb550('0x8')][_0xb550('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x343b88,_0x54bc97,_0x4fd874){return new BPromise(function(_0x71bcc3,_0x1f88f9){return client['request'](_0x343b88,_0x4fd874)[_0xb550('0xa')](function(_0x3b17f0){logger[_0xb550('0xb')](_0xb550('0xc'),_0x54bc97,'request\x20sent');logger[_0xb550('0xd')](_0xb550('0xe'),_0x54bc97,'request\x20sent',JSON[_0xb550('0xf')](_0x3b17f0));if(_0x3b17f0['error']){if(_0x3b17f0[_0xb550('0x10')][_0xb550('0x11')]===0x1f4){logger[_0xb550('0x10')](_0xb550('0xc'),_0x54bc97,_0x3b17f0['error']['message']);return _0x1f88f9(_0x3b17f0[_0xb550('0x10')]['message']);}logger[_0xb550('0x10')](_0xb550('0xc'),_0x54bc97,_0x3b17f0[_0xb550('0x10')][_0xb550('0x12')]);return _0x71bcc3(_0x3b17f0[_0xb550('0x10')][_0xb550('0x12')]);}else{logger[_0xb550('0xb')](_0xb550('0xc'),_0x54bc97,_0xb550('0x13'));_0x71bcc3(_0x3b17f0[_0xb550('0x14')][_0xb550('0x12')]);}})[_0xb550('0x15')](function(_0x522f5e){logger['error'](_0xb550('0xc'),_0x54bc97,_0x522f5e);_0x1f88f9(_0x522f5e);});});}
\ No newline at end of file
+var _0xce63=['../../config/environment','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x51a6d6,_0x3c9c49){var _0x5ef1a8=function(_0x8ff84a){while(--_0x8ff84a){_0x51a6d6['push'](_0x51a6d6['shift']());}};_0x5ef1a8(++_0x3c9c49);}(_0xce63,0xb6));var _0x3ce6=function(_0x46a3ff,_0x470b9a){_0x46a3ff=_0x46a3ff-0x0;var _0x404bc2=_0xce63[_0x46a3ff];return _0x404bc2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3ce6('0x0'));var BPromise=require(_0x3ce6('0x1'));var rs=require(_0x3ce6('0x2'));var fs=require('fs');var Redis=require(_0x3ce6('0x3'));var db=require(_0x3ce6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3ce6('0x5'))(_0x3ce6('0x6'));var config=require(_0x3ce6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3ce6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe3dd9d,_0x55c3da,_0x3bfca9){return new BPromise(function(_0x3642de,_0x39a88c){return client[_0x3ce6('0x9')](_0xe3dd9d,_0x3bfca9)[_0x3ce6('0xa')](function(_0x3bfe6e){logger[_0x3ce6('0xb')](_0x3ce6('0xc'),_0x55c3da,'request\x20sent');logger[_0x3ce6('0xd')](_0x3ce6('0xe'),_0x55c3da,_0x3ce6('0xf'),JSON['stringify'](_0x3bfe6e));if(_0x3bfe6e[_0x3ce6('0x10')]){if(_0x3bfe6e[_0x3ce6('0x10')][_0x3ce6('0x11')]===0x1f4){logger[_0x3ce6('0x10')](_0x3ce6('0xc'),_0x55c3da,_0x3bfe6e['error'][_0x3ce6('0x12')]);return _0x39a88c(_0x3bfe6e['error'][_0x3ce6('0x12')]);}logger[_0x3ce6('0x10')](_0x3ce6('0xc'),_0x55c3da,_0x3bfe6e[_0x3ce6('0x10')][_0x3ce6('0x12')]);return _0x3642de(_0x3bfe6e[_0x3ce6('0x10')][_0x3ce6('0x12')]);}else{logger[_0x3ce6('0xb')](_0x3ce6('0xc'),_0x55c3da,_0x3ce6('0xf'));_0x3642de(_0x3bfe6e[_0x3ce6('0x13')]['message']);}})[_0x3ce6('0x14')](function(_0x4ca11b){logger[_0x3ce6('0x10')](_0x3ce6('0xc'),_0x55c3da,_0x4ca11b);_0x39a88c(_0x4ca11b);});});}
\ No newline at end of file
index dcce183..6774e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7638=['multer','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x34d38c,_0x4f1295){var _0x4be108=function(_0x263e0f){while(--_0x263e0f){_0x34d38c['push'](_0x34d38c['shift']());}};_0x4be108(++_0x4f1295);}(_0x7638,0x10e));var _0x8763=function(_0x48dabb,_0xe8f39a){_0x48dabb=_0x48dabb-0x0;var _0x1a8809=_0x7638[_0x48dabb];return _0x1a8809;};'use strict';var multer=require(_0x8763('0x0'));var util=require('util');var path=require(_0x8763('0x1'));var timeout=require(_0x8763('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8763('0x3'));var auth=require(_0x8763('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8763('0x5'));var controller=require(_0x8763('0x6'));router[_0x8763('0x7')]('/',auth[_0x8763('0x8')](),controller['index']);router[_0x8763('0x7')](_0x8763('0x9'),auth[_0x8763('0x8')](),controller[_0x8763('0xa')]);router[_0x8763('0xb')]('/',auth[_0x8763('0x8')](),controller[_0x8763('0xc')]);router[_0x8763('0xd')](_0x8763('0x9'),auth[_0x8763('0x8')](),controller[_0x8763('0xe')]);router[_0x8763('0xf')](_0x8763('0x9'),auth[_0x8763('0x8')](),controller[_0x8763('0x10')]);module[_0x8763('0x11')]=router;
\ No newline at end of file
+var _0xc891=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','delete','/:id','destroy','exports','util'];(function(_0x27fc43,_0x226bb8){var _0x1c0bee=function(_0x570054){while(--_0x570054){_0x27fc43['push'](_0x27fc43['shift']());}};_0x1c0bee(++_0x226bb8);}(_0xc891,0xdc));var _0x1c89=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xc891[_0x5c3c0b];return _0x52ecd2;};'use strict';var multer=require('multer');var util=require(_0x1c89('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1c89('0x1')]();var fs_extra=require(_0x1c89('0x2'));var auth=require(_0x1c89('0x3'));var interaction=require(_0x1c89('0x4'));var config=require(_0x1c89('0x5'));var controller=require('./intSugarcrmField.controller');router[_0x1c89('0x6')]('/',auth[_0x1c89('0x7')](),controller[_0x1c89('0x8')]);router[_0x1c89('0x6')]('/:id',auth[_0x1c89('0x7')](),controller[_0x1c89('0x9')]);router[_0x1c89('0xa')]('/',auth[_0x1c89('0x7')](),controller[_0x1c89('0xb')]);router[_0x1c89('0xc')]('/:id',auth[_0x1c89('0x7')](),controller['update']);router[_0x1c89('0xd')](_0x1c89('0xe'),auth[_0x1c89('0x7')](),controller[_0x1c89('0xf')]);module[_0x1c89('0x10')]=router;
\ No newline at end of file
index c333351..8067c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb3e=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist','STRING'];(function(_0x31767b,_0x263f29){var _0x216f86=function(_0x5dcb0d){while(--_0x5dcb0d){_0x31767b['push'](_0x31767b['shift']());}};_0x216f86(++_0x263f29);}(_0xfb3e,0x17b));var _0xefb3=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xfb3e[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0xefb3('0x0'));module[_0xefb3('0x1')]={'type':{'type':Sequelize[_0xefb3('0x2')](_0xefb3('0x3'),_0xefb3('0x4'),_0xefb3('0x5'),'keyValue',_0xefb3('0x6')),'defaultValue':_0xefb3('0x3')},'content':{'type':Sequelize[_0xefb3('0x7')]},'key':{'type':Sequelize[_0xefb3('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xefb3('0x3'),_0xefb3('0x4'),_0xefb3('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xefb3('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xefb3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xefb3('0x7')]}};
\ No newline at end of file
+var _0x04a1=['string','STRING','ENUM','customVariable','BOOLEAN','exports','picklist'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x04a1,0x163));var _0x104a=function(_0x50d0dd,_0x57e457){_0x50d0dd=_0x50d0dd-0x0;var _0x555c62=_0x04a1[_0x50d0dd];return _0x555c62;};'use strict';var Sequelize=require('sequelize');module[_0x104a('0x0')]={'type':{'type':Sequelize['ENUM']('string','variable','customVariable','keyValue',_0x104a('0x1')),'defaultValue':_0x104a('0x2')},'content':{'type':Sequelize[_0x104a('0x3')]},'key':{'type':Sequelize[_0x104a('0x3')]},'keyType':{'type':Sequelize[_0x104a('0x4')]('string','variable',_0x104a('0x5'))},'keyContent':{'type':Sequelize[_0x104a('0x3')]},'idField':{'type':Sequelize[_0x104a('0x3')]},'nameField':{'type':Sequelize[_0x104a('0x3')]},'customField':{'type':Sequelize[_0x104a('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x104a('0x3')]}};
\ No newline at end of file
index 75ce6c3..85b7a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2e8=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','include','rows','catch','params','create','body','find','eml-format','rimraf','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','error','stack','name','send','map','SugarcrmField','rawAttributes'];(function(_0x41d349,_0x383a7d){var _0x49ade5=function(_0x105062){while(--_0x105062){_0x41d349['push'](_0x41d349['shift']());}};_0x49ade5(++_0x383a7d);}(_0xc2e8,0xef));var _0x8c2e=function(_0x53b4dc,_0x51f549){_0x53b4dc=_0x53b4dc-0x0;var _0x3b2b68=_0xc2e8[_0x53b4dc];return _0x3b2b68;};'use strict';var emlformat=require(_0x8c2e('0x0'));var rimraf=require(_0x8c2e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8c2e('0x2'));var moment=require(_0x8c2e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8c2e('0x4'));var util=require('util');var path=require(_0x8c2e('0x5'));var sox=require('sox');var csv=require(_0x8c2e('0x6'));var ejs=require(_0x8c2e('0x7'));var fs=require('fs');var fs_extra=require(_0x8c2e('0x8'));var _=require(_0x8c2e('0x9'));var squel=require('squel');var crypto=require(_0x8c2e('0xa'));var jsforce=require(_0x8c2e('0xb'));var deskjs=require(_0x8c2e('0xc'));var toCsv=require(_0x8c2e('0x6'));var querystring=require(_0x8c2e('0xd'));var Papa=require(_0x8c2e('0xe'));var Redis=require(_0x8c2e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8c2e('0x10'));var hardwareService=require(_0x8c2e('0x11'));var logger=require(_0x8c2e('0x12'))(_0x8c2e('0x13'));var utils=require(_0x8c2e('0x14'));var config=require(_0x8c2e('0x15'));var licenseUtil=require(_0x8c2e('0x16'));var db=require(_0x8c2e('0x17'))['db'];function respondWithStatusCode(_0x18238c,_0x2e3f39){_0x2e3f39=_0x2e3f39||0xcc;return function(_0x16dc64){if(_0x16dc64){return _0x18238c[_0x8c2e('0x18')](_0x2e3f39);}return _0x18238c[_0x8c2e('0x19')](_0x2e3f39)['end']();};}function respondWithResult(_0x45482a,_0x49e6dd){_0x49e6dd=_0x49e6dd||0xc8;return function(_0xca184b){if(_0xca184b){return _0x45482a[_0x8c2e('0x19')](_0x49e6dd)[_0x8c2e('0x1a')](_0xca184b);}};}function respondWithFilteredResult(_0x4ca187,_0x501721){return function(_0x4b243b){if(_0x4b243b){var _0x166b58=typeof _0x501721[_0x8c2e('0x1b')]===_0x8c2e('0x1c')&&typeof _0x501721[_0x8c2e('0x1d')]===_0x8c2e('0x1c');var _0x5620df=_0x4b243b[_0x8c2e('0x1e')];var _0x2ffca7=_0x166b58?0x0:_0x501721['offset'];var _0x5b66c8=_0x166b58?_0x4b243b[_0x8c2e('0x1e')]:_0x501721[_0x8c2e('0x1b')]+_0x501721[_0x8c2e('0x1d')];var _0x1e0bf1;if(_0x5b66c8>=_0x5620df){_0x5b66c8=_0x5620df;_0x1e0bf1=0xc8;}else{_0x1e0bf1=0xce;}_0x4ca187[_0x8c2e('0x19')](_0x1e0bf1);return _0x4ca187[_0x8c2e('0x1f')]('Content-Range',_0x2ffca7+'-'+_0x5b66c8+'/'+_0x5620df)[_0x8c2e('0x1a')](_0x4b243b);}return null;};}function patchUpdates(_0x1d20ea){return function(_0x5a9a09){try{jsonpatch[_0x8c2e('0x20')](_0x5a9a09,_0x1d20ea,!![]);}catch(_0x23f6ee){return BPromise[_0x8c2e('0x21')](_0x23f6ee);}return _0x5a9a09[_0x8c2e('0x22')]();};}function saveUpdates(_0x11f67a,_0x327edd){return function(_0x5b6c64){if(_0x5b6c64){return _0x5b6c64['update'](_0x11f67a)['then'](function(_0x1c044b){return _0x1c044b;});}return null;};}function removeEntity(_0x17e89f,_0x2e83f2){return function(_0x536ce9){if(_0x536ce9){return _0x536ce9[_0x8c2e('0x23')]()[_0x8c2e('0x24')](function(){_0x17e89f[_0x8c2e('0x19')](0xcc)[_0x8c2e('0x25')]();});}};}function handleEntityNotFound(_0x48140c,_0x49fea7){return function(_0x4bd894){if(!_0x4bd894){_0x48140c[_0x8c2e('0x18')](0x194);}return _0x4bd894;};}function handleError(_0x1753fc,_0x206352){_0x206352=_0x206352||0x1f4;return function(_0x250226){logger[_0x8c2e('0x26')](_0x250226[_0x8c2e('0x27')]);if(_0x250226[_0x8c2e('0x28')]){delete _0x250226[_0x8c2e('0x28')];}_0x1753fc[_0x8c2e('0x19')](_0x206352)[_0x8c2e('0x29')](_0x250226);};}exports['index']=function(_0x55a0a0,_0x52f82d){var _0x1689fe={},_0x5880e6={},_0x11e05f={'count':0x0,'rows':[]};var _0x6a1219=_[_0x8c2e('0x2a')](db[_0x8c2e('0x2b')][_0x8c2e('0x2c')],function(_0x7a7422){return{'name':_0x7a7422[_0x8c2e('0x2d')],'type':_0x7a7422[_0x8c2e('0x2e')][_0x8c2e('0x2f')]};});_0x5880e6[_0x8c2e('0x30')]=_[_0x8c2e('0x2a')](_0x6a1219,_0x8c2e('0x28'));_0x5880e6[_0x8c2e('0x31')]=_[_0x8c2e('0x32')](_0x55a0a0[_0x8c2e('0x31')]);_0x5880e6[_0x8c2e('0x33')]=_[_0x8c2e('0x34')](_0x5880e6[_0x8c2e('0x30')],_0x5880e6[_0x8c2e('0x31')]);_0x1689fe[_0x8c2e('0x35')]=_[_0x8c2e('0x34')](_0x5880e6[_0x8c2e('0x30')],qs[_0x8c2e('0x36')](_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x36')]));_0x1689fe[_0x8c2e('0x35')]=_0x1689fe[_0x8c2e('0x35')][_0x8c2e('0x37')]?_0x1689fe[_0x8c2e('0x35')]:_0x5880e6[_0x8c2e('0x30')];if(!_0x55a0a0[_0x8c2e('0x31')]['hasOwnProperty'](_0x8c2e('0x38'))){_0x1689fe[_0x8c2e('0x1d')]=qs[_0x8c2e('0x1d')](_0x55a0a0['query'][_0x8c2e('0x1d')]);_0x1689fe[_0x8c2e('0x1b')]=qs[_0x8c2e('0x1b')](_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x1b')]);}_0x1689fe[_0x8c2e('0x39')]=qs[_0x8c2e('0x3a')](_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x3a')]);_0x1689fe[_0x8c2e('0x3b')]=qs['filters'](_[_0x8c2e('0x3c')](_0x55a0a0['query'],_0x5880e6[_0x8c2e('0x33')]),_0x6a1219);if(_0x55a0a0[_0x8c2e('0x31')]['filter']){_0x1689fe[_0x8c2e('0x3b')]=_[_0x8c2e('0x3d')](_0x1689fe[_0x8c2e('0x3b')],{'$or':_[_0x8c2e('0x2a')](_0x6a1219,function(_0x3e420c){if(_0x3e420c['type']!==_0x8c2e('0x3e')){var _0x2e8be4={};_0x2e8be4[_0x3e420c[_0x8c2e('0x28')]]={'$like':'%'+_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x3f')]+'%'};return _0x2e8be4;}})});}_0x1689fe=_['merge']({},_0x1689fe,_0x55a0a0['options']);var _0x55e87c={'where':_0x1689fe[_0x8c2e('0x3b')]};return db[_0x8c2e('0x2b')][_0x8c2e('0x1e')](_0x55e87c)[_0x8c2e('0x24')](function(_0x3e450e){_0x11e05f[_0x8c2e('0x1e')]=_0x3e450e;if(_0x55a0a0[_0x8c2e('0x31')]['includeAll']){_0x1689fe[_0x8c2e('0x40')]=[{'all':!![]}];}return db[_0x8c2e('0x2b')]['findAll'](_0x1689fe);})[_0x8c2e('0x24')](function(_0x2fcd0){_0x11e05f[_0x8c2e('0x41')]=_0x2fcd0;return _0x11e05f;})[_0x8c2e('0x24')](respondWithFilteredResult(_0x52f82d,_0x1689fe))[_0x8c2e('0x42')](handleError(_0x52f82d,null));};exports['show']=function(_0x5cee67,_0x47d994){var _0x5e4e0c={'raw':!![],'where':{'id':_0x5cee67[_0x8c2e('0x43')]['id']}},_0x3e0e34={};_0x3e0e34[_0x8c2e('0x30')]=_[_0x8c2e('0x32')](db[_0x8c2e('0x2b')][_0x8c2e('0x2c')]);_0x3e0e34[_0x8c2e('0x31')]=_['keys'](_0x5cee67[_0x8c2e('0x31')]);_0x3e0e34[_0x8c2e('0x33')]=_['intersection'](_0x3e0e34[_0x8c2e('0x30')],_0x3e0e34[_0x8c2e('0x31')]);_0x5e4e0c['attributes']=_[_0x8c2e('0x34')](_0x3e0e34[_0x8c2e('0x30')],qs[_0x8c2e('0x36')](_0x5cee67[_0x8c2e('0x31')][_0x8c2e('0x36')]));_0x5e4e0c[_0x8c2e('0x35')]=_0x5e4e0c[_0x8c2e('0x35')]['length']?_0x5e4e0c['attributes']:_0x3e0e34[_0x8c2e('0x30')];if(_0x5cee67['query']['includeAll']){_0x5e4e0c[_0x8c2e('0x40')]=[{'all':!![]}];}_0x5e4e0c=_[_0x8c2e('0x3d')]({},_0x5e4e0c,_0x5cee67['options']);return db['SugarcrmField']['find'](_0x5e4e0c)[_0x8c2e('0x24')](handleEntityNotFound(_0x47d994,null))['then'](respondWithResult(_0x47d994,null))[_0x8c2e('0x42')](handleError(_0x47d994,null));};exports['create']=function(_0x5e5bc5,_0x588075){return db[_0x8c2e('0x2b')][_0x8c2e('0x44')](_0x5e5bc5['body'],{})[_0x8c2e('0x24')](respondWithResult(_0x588075,0xc9))[_0x8c2e('0x42')](handleError(_0x588075,null));};exports['update']=function(_0x41612e,_0x347f15){if(_0x41612e[_0x8c2e('0x45')]['id']){delete _0x41612e['body']['id'];}return db[_0x8c2e('0x2b')][_0x8c2e('0x46')]({'where':{'id':_0x41612e[_0x8c2e('0x43')]['id']}})[_0x8c2e('0x24')](handleEntityNotFound(_0x347f15,null))['then'](saveUpdates(_0x41612e[_0x8c2e('0x45')],null))[_0x8c2e('0x24')](respondWithResult(_0x347f15,null))['catch'](handleError(_0x347f15,null));};exports['destroy']=function(_0x2f577f,_0x5ec234){return db['SugarcrmField'][_0x8c2e('0x46')]({'where':{'id':_0x2f577f[_0x8c2e('0x43')]['id']}})[_0x8c2e('0x24')](handleEntityNotFound(_0x5ec234,null))[_0x8c2e('0x24')](removeEntity(_0x5ec234,null))[_0x8c2e('0x42')](handleError(_0x5ec234,null));};
\ No newline at end of file
+var _0xfab4=['SugarcrmField','rawAttributes','fieldName','type','map','query','keys','filters','model','attributes','intersection','length','nolimit','order','sort','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','name','send'];(function(_0xc8a1d2,_0x54e81e){var _0x2a268d=function(_0xf4984f){while(--_0xf4984f){_0xc8a1d2['push'](_0xc8a1d2['shift']());}};_0x2a268d(++_0x54e81e);}(_0xfab4,0x68));var _0x4fab=function(_0x14c380,_0x2bb592){_0x14c380=_0x14c380-0x0;var _0x31cac8=_0xfab4[_0x14c380];return _0x31cac8;};'use strict';var emlformat=require(_0x4fab('0x0'));var rimraf=require(_0x4fab('0x1'));var zipdir=require(_0x4fab('0x2'));var jsonpatch=require(_0x4fab('0x3'));var rp=require(_0x4fab('0x4'));var moment=require(_0x4fab('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4fab('0x6'));var path=require(_0x4fab('0x7'));var sox=require(_0x4fab('0x8'));var csv=require(_0x4fab('0x9'));var ejs=require(_0x4fab('0xa'));var fs=require('fs');var fs_extra=require(_0x4fab('0xb'));var _=require(_0x4fab('0xc'));var squel=require('squel');var crypto=require(_0x4fab('0xd'));var jsforce=require(_0x4fab('0xe'));var deskjs=require(_0x4fab('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4fab('0x10'));var Papa=require(_0x4fab('0x11'));var Redis=require(_0x4fab('0x12'));var authService=require(_0x4fab('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4fab('0x14'));var hardwareService=require(_0x4fab('0x15'));var logger=require('../../config/logger')(_0x4fab('0x16'));var utils=require('../../config/utils');var config=require(_0x4fab('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4fab('0x18'))['db'];function respondWithStatusCode(_0x19c68b,_0x2a0859){_0x2a0859=_0x2a0859||0xcc;return function(_0x586c4b){if(_0x586c4b){return _0x19c68b[_0x4fab('0x19')](_0x2a0859);}return _0x19c68b['status'](_0x2a0859)['end']();};}function respondWithResult(_0x19d113,_0x56cf40){_0x56cf40=_0x56cf40||0xc8;return function(_0x25335d){if(_0x25335d){return _0x19d113[_0x4fab('0x1a')](_0x56cf40)[_0x4fab('0x1b')](_0x25335d);}};}function respondWithFilteredResult(_0x234a8e,_0x4ec750){return function(_0x221901){if(_0x221901){var _0x375f82=typeof _0x4ec750[_0x4fab('0x1c')]===_0x4fab('0x1d')&&typeof _0x4ec750[_0x4fab('0x1e')]===_0x4fab('0x1d');var _0x285517=_0x221901[_0x4fab('0x1f')];var _0xa814c6=_0x375f82?0x0:_0x4ec750['offset'];var _0x55cc01=_0x375f82?_0x221901[_0x4fab('0x1f')]:_0x4ec750[_0x4fab('0x1c')]+_0x4ec750[_0x4fab('0x1e')];var _0x193696;if(_0x55cc01>=_0x285517){_0x55cc01=_0x285517;_0x193696=0xc8;}else{_0x193696=0xce;}_0x234a8e[_0x4fab('0x1a')](_0x193696);return _0x234a8e[_0x4fab('0x20')]('Content-Range',_0xa814c6+'-'+_0x55cc01+'/'+_0x285517)[_0x4fab('0x1b')](_0x221901);}return null;};}function patchUpdates(_0x39231e){return function(_0x47e960){try{jsonpatch[_0x4fab('0x21')](_0x47e960,_0x39231e,!![]);}catch(_0x32f232){return BPromise[_0x4fab('0x22')](_0x32f232);}return _0x47e960[_0x4fab('0x23')]();};}function saveUpdates(_0x1cf257,_0x4058b8){return function(_0x310eaf){if(_0x310eaf){return _0x310eaf[_0x4fab('0x24')](_0x1cf257)[_0x4fab('0x25')](function(_0xe6f748){return _0xe6f748;});}return null;};}function removeEntity(_0x2f6f11,_0x5056ff){return function(_0xadacc5){if(_0xadacc5){return _0xadacc5[_0x4fab('0x26')]()['then'](function(){_0x2f6f11[_0x4fab('0x1a')](0xcc)[_0x4fab('0x27')]();});}};}function handleEntityNotFound(_0x35ab3c,_0x243433){return function(_0x2eab89){if(!_0x2eab89){_0x35ab3c[_0x4fab('0x19')](0x194);}return _0x2eab89;};}function handleError(_0xee90ae,_0x5293f0){_0x5293f0=_0x5293f0||0x1f4;return function(_0x5869f4){logger['error'](_0x5869f4['stack']);if(_0x5869f4[_0x4fab('0x28')]){delete _0x5869f4[_0x4fab('0x28')];}_0xee90ae[_0x4fab('0x1a')](_0x5293f0)[_0x4fab('0x29')](_0x5869f4);};}exports['index']=function(_0x2f3ffa,_0x1413be){var _0x507dc7={},_0x552ee2={},_0x30e8d3={'count':0x0,'rows':[]};var _0x261bd2=_['map'](db[_0x4fab('0x2a')][_0x4fab('0x2b')],function(_0x455e02){return{'name':_0x455e02[_0x4fab('0x2c')],'type':_0x455e02[_0x4fab('0x2d')]['key']};});_0x552ee2['model']=_[_0x4fab('0x2e')](_0x261bd2,'name');_0x552ee2[_0x4fab('0x2f')]=_[_0x4fab('0x30')](_0x2f3ffa['query']);_0x552ee2[_0x4fab('0x31')]=_['intersection'](_0x552ee2[_0x4fab('0x32')],_0x552ee2[_0x4fab('0x2f')]);_0x507dc7[_0x4fab('0x33')]=_[_0x4fab('0x34')](_0x552ee2[_0x4fab('0x32')],qs['fields'](_0x2f3ffa[_0x4fab('0x2f')]['fields']));_0x507dc7[_0x4fab('0x33')]=_0x507dc7[_0x4fab('0x33')][_0x4fab('0x35')]?_0x507dc7[_0x4fab('0x33')]:_0x552ee2[_0x4fab('0x32')];if(!_0x2f3ffa[_0x4fab('0x2f')]['hasOwnProperty'](_0x4fab('0x36'))){_0x507dc7[_0x4fab('0x1e')]=qs[_0x4fab('0x1e')](_0x2f3ffa[_0x4fab('0x2f')][_0x4fab('0x1e')]);_0x507dc7[_0x4fab('0x1c')]=qs[_0x4fab('0x1c')](_0x2f3ffa[_0x4fab('0x2f')][_0x4fab('0x1c')]);}_0x507dc7[_0x4fab('0x37')]=qs[_0x4fab('0x38')](_0x2f3ffa['query'][_0x4fab('0x38')]);_0x507dc7['where']=qs[_0x4fab('0x31')](_[_0x4fab('0x39')](_0x2f3ffa[_0x4fab('0x2f')],_0x552ee2[_0x4fab('0x31')]),_0x261bd2);if(_0x2f3ffa[_0x4fab('0x2f')][_0x4fab('0x3a')]){_0x507dc7[_0x4fab('0x3b')]=_['merge'](_0x507dc7[_0x4fab('0x3b')],{'$or':_[_0x4fab('0x2e')](_0x261bd2,function(_0x77eccb){if(_0x77eccb['type']!==_0x4fab('0x3c')){var _0x2291e0={};_0x2291e0[_0x77eccb[_0x4fab('0x28')]]={'$like':'%'+_0x2f3ffa[_0x4fab('0x2f')]['filter']+'%'};return _0x2291e0;}})});}_0x507dc7=_['merge']({},_0x507dc7,_0x2f3ffa[_0x4fab('0x3d')]);var _0x54b0b3={'where':_0x507dc7[_0x4fab('0x3b')]};return db['SugarcrmField']['count'](_0x54b0b3)['then'](function(_0x1d81d4){_0x30e8d3[_0x4fab('0x1f')]=_0x1d81d4;if(_0x2f3ffa[_0x4fab('0x2f')][_0x4fab('0x3e')]){_0x507dc7[_0x4fab('0x3f')]=[{'all':!![]}];}return db[_0x4fab('0x2a')][_0x4fab('0x40')](_0x507dc7);})[_0x4fab('0x25')](function(_0x1125db){_0x30e8d3[_0x4fab('0x41')]=_0x1125db;return _0x30e8d3;})[_0x4fab('0x25')](respondWithFilteredResult(_0x1413be,_0x507dc7))[_0x4fab('0x42')](handleError(_0x1413be,null));};exports[_0x4fab('0x43')]=function(_0x4f7133,_0x3dff8c){var _0x56ec8f={'raw':!![],'where':{'id':_0x4f7133[_0x4fab('0x44')]['id']}},_0x376403={};_0x376403[_0x4fab('0x32')]=_[_0x4fab('0x30')](db[_0x4fab('0x2a')][_0x4fab('0x2b')]);_0x376403['query']=_['keys'](_0x4f7133[_0x4fab('0x2f')]);_0x376403['filters']=_[_0x4fab('0x34')](_0x376403['model'],_0x376403[_0x4fab('0x2f')]);_0x56ec8f[_0x4fab('0x33')]=_['intersection'](_0x376403[_0x4fab('0x32')],qs[_0x4fab('0x45')](_0x4f7133[_0x4fab('0x2f')][_0x4fab('0x45')]));_0x56ec8f[_0x4fab('0x33')]=_0x56ec8f[_0x4fab('0x33')][_0x4fab('0x35')]?_0x56ec8f[_0x4fab('0x33')]:_0x376403[_0x4fab('0x32')];if(_0x4f7133[_0x4fab('0x2f')][_0x4fab('0x3e')]){_0x56ec8f[_0x4fab('0x3f')]=[{'all':!![]}];}_0x56ec8f=_['merge']({},_0x56ec8f,_0x4f7133[_0x4fab('0x3d')]);return db[_0x4fab('0x2a')][_0x4fab('0x46')](_0x56ec8f)[_0x4fab('0x25')](handleEntityNotFound(_0x3dff8c,null))[_0x4fab('0x25')](respondWithResult(_0x3dff8c,null))[_0x4fab('0x42')](handleError(_0x3dff8c,null));};exports[_0x4fab('0x47')]=function(_0x12c50e,_0x1b211f){return db[_0x4fab('0x2a')]['create'](_0x12c50e[_0x4fab('0x48')],{})[_0x4fab('0x25')](respondWithResult(_0x1b211f,0xc9))['catch'](handleError(_0x1b211f,null));};exports[_0x4fab('0x24')]=function(_0xa15a59,_0x50ae49){if(_0xa15a59[_0x4fab('0x48')]['id']){delete _0xa15a59[_0x4fab('0x48')]['id'];}return db[_0x4fab('0x2a')]['find']({'where':{'id':_0xa15a59[_0x4fab('0x44')]['id']}})['then'](handleEntityNotFound(_0x50ae49,null))[_0x4fab('0x25')](saveUpdates(_0xa15a59[_0x4fab('0x48')],null))['then'](respondWithResult(_0x50ae49,null))[_0x4fab('0x42')](handleError(_0x50ae49,null));};exports[_0x4fab('0x26')]=function(_0x571954,_0x506cca){return db[_0x4fab('0x2a')]['find']({'where':{'id':_0x571954[_0x4fab('0x44')]['id']}})[_0x4fab('0x25')](handleEntityNotFound(_0x506cca,null))[_0x4fab('0x25')](removeEntity(_0x506cca,null))[_0x4fab('0x42')](handleError(_0x506cca,null));};
\ No newline at end of file
index dda8f8f..de97605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32c=['../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x2d4421,_0x15a84f){var _0x2d3b01=function(_0xb9e94c){while(--_0xb9e94c){_0x2d4421['push'](_0x2d4421['shift']());}};_0x2d3b01(++_0x15a84f);}(_0xb32c,0x125));var _0xcb32=function(_0x4079f2,_0x18d82f){_0x4079f2=_0x4079f2-0x0;var _0x37daea=_0xb32c[_0x4079f2];return _0x37daea;};'use strict';var _=require(_0xcb32('0x0'));var util=require('util');var logger=require(_0xcb32('0x1'))(_0xcb32('0x2'));var moment=require(_0xcb32('0x3'));var BPromise=require('bluebird');var rp=require(_0xcb32('0x4'));var fs=require('fs');var path=require(_0xcb32('0x5'));var rimraf=require(_0xcb32('0x6'));var config=require(_0xcb32('0x7'));var attributes=require(_0xcb32('0x8'));module[_0xcb32('0x9')]=function(_0x50a88e,_0x100d08){return _0x50a88e[_0xcb32('0xa')]('SugarcrmField',attributes,{'tableName':_0xcb32('0xb'),'paranoid':![],'indexes':[{'name':_0xcb32('0xc'),'fields':[_0xcb32('0xd'),_0xcb32('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a4d=['idField','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','SugarcrmField','int_sugarcrm_fields'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8a4d,0x1d5));var _0xd8a4=function(_0xe4d6c6,_0x3bdbf2){_0xe4d6c6=_0xe4d6c6-0x0;var _0x3a8935=_0x8a4d[_0xe4d6c6];return _0x3a8935;};'use strict';var _=require(_0xd8a4('0x0'));var util=require(_0xd8a4('0x1'));var logger=require(_0xd8a4('0x2'))(_0xd8a4('0x3'));var moment=require(_0xd8a4('0x4'));var BPromise=require(_0xd8a4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd8a4('0x6'));var config=require(_0xd8a4('0x7'));var attributes=require(_0xd8a4('0x8'));module[_0xd8a4('0x9')]=function(_0x277a56,_0x5106b2){return _0x277a56['define'](_0xd8a4('0xa'),attributes,{'tableName':_0xd8a4('0xb'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0xd8a4('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 06ddfb0..d544cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718a=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2eb5bc,_0x4634c6){var _0x51c7b1=function(_0x1af430){while(--_0x1af430){_0x2eb5bc['push'](_0x2eb5bc['shift']());}};_0x51c7b1(++_0x4634c6);}(_0x718a,0x1e5));var _0xa718=function(_0x105912,_0x3a1ce1){_0x105912=_0x105912-0x0;var _0xbede54=_0x718a[_0x105912];return _0xbede54;};'use strict';var _=require(_0xa718('0x0'));var util=require('util');var moment=require(_0xa718('0x1'));var BPromise=require(_0xa718('0x2'));var rs=require(_0xa718('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa718('0x4'))['db'];var utils=require(_0xa718('0x5'));var logger=require(_0xa718('0x6'))(_0xa718('0x7'));var config=require('../../config/environment');var jayson=require(_0xa718('0x8'));var client=jayson[_0xa718('0x9')][_0xa718('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1941dd,_0xa8cdf9,_0x51e68e){return new BPromise(function(_0xe6a68,_0x5b9950){return client['request'](_0x1941dd,_0x51e68e)[_0xa718('0xb')](function(_0x361f44){logger[_0xa718('0xc')](_0xa718('0xd'),_0xa8cdf9,_0xa718('0xe'));logger[_0xa718('0xf')](_0xa718('0x10'),_0xa8cdf9,_0xa718('0xe'),JSON[_0xa718('0x11')](_0x361f44));if(_0x361f44['error']){if(_0x361f44[_0xa718('0x12')][_0xa718('0x13')]===0x1f4){logger[_0xa718('0x12')](_0xa718('0xd'),_0xa8cdf9,_0x361f44['error'][_0xa718('0x14')]);return _0x5b9950(_0x361f44[_0xa718('0x12')][_0xa718('0x14')]);}logger[_0xa718('0x12')](_0xa718('0xd'),_0xa8cdf9,_0x361f44['error'][_0xa718('0x14')]);return _0xe6a68(_0x361f44[_0xa718('0x12')]['message']);}else{logger[_0xa718('0xc')](_0xa718('0xd'),_0xa8cdf9,_0xa718('0xe'));_0xe6a68(_0x361f44['result'][_0xa718('0x14')]);}})[_0xa718('0x15')](function(_0x53522f){logger[_0xa718('0x12')](_0xa718('0xd'),_0xa8cdf9,_0x53522f);_0x5b9950(_0x53522f);});});}
\ No newline at end of file
+var _0x7bde=['error','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x35c384,_0x3aead7){var _0x49ce5e=function(_0x1dd7f3){while(--_0x1dd7f3){_0x35c384['push'](_0x35c384['shift']());}};_0x49ce5e(++_0x3aead7);}(_0x7bde,0xf3));var _0xe7bd=function(_0x58bec1,_0x42c53f){_0x58bec1=_0x58bec1-0x0;var _0x16439f=_0x7bde[_0x58bec1];return _0x16439f;};'use strict';var _=require(_0xe7bd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe7bd('0x1'));var rs=require(_0xe7bd('0x2'));var fs=require('fs');var Redis=require(_0xe7bd('0x3'));var db=require(_0xe7bd('0x4'))['db'];var utils=require(_0xe7bd('0x5'));var logger=require(_0xe7bd('0x6'))(_0xe7bd('0x7'));var config=require('../../config/environment');var jayson=require(_0xe7bd('0x8'));var client=jayson[_0xe7bd('0x9')][_0xe7bd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23924d,_0x44dea4,_0x5d5347){return new BPromise(function(_0x2f4f9a,_0x3aa3fb){return client['request'](_0x23924d,_0x5d5347)['then'](function(_0x5288b7){logger[_0xe7bd('0xb')](_0xe7bd('0xc'),_0x44dea4,'request\x20sent');logger[_0xe7bd('0xd')](_0xe7bd('0xe'),_0x44dea4,_0xe7bd('0xf'),JSON[_0xe7bd('0x10')](_0x5288b7));if(_0x5288b7[_0xe7bd('0x11')]){if(_0x5288b7[_0xe7bd('0x11')]['code']===0x1f4){logger['error'](_0xe7bd('0xc'),_0x44dea4,_0x5288b7[_0xe7bd('0x11')]['message']);return _0x3aa3fb(_0x5288b7[_0xe7bd('0x11')][_0xe7bd('0x12')]);}logger[_0xe7bd('0x11')](_0xe7bd('0xc'),_0x44dea4,_0x5288b7['error'][_0xe7bd('0x12')]);return _0x2f4f9a(_0x5288b7[_0xe7bd('0x11')][_0xe7bd('0x12')]);}else{logger[_0xe7bd('0xb')](_0xe7bd('0xc'),_0x44dea4,_0xe7bd('0xf'));_0x2f4f9a(_0x5288b7['result'][_0xe7bd('0x12')]);}})[_0xe7bd('0x13')](function(_0x4a497f){logger[_0xe7bd('0x11')](_0xe7bd('0xc'),_0x44dea4,_0x4a497f);_0x3aa3fb(_0x4a497f);});});}
\ No newline at end of file
index 56dc11d..83d31c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc737=['put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','getConfigurations','/:id/fields','post','create','/:id/configurations','addConfiguration'];(function(_0x5a4e37,_0x32223e){var _0xb3f809=function(_0x31c1eb){while(--_0x31c1eb){_0x5a4e37['push'](_0x5a4e37['shift']());}};_0xb3f809(++_0x32223e);}(_0xc737,0x8e));var _0x7c73=function(_0x4e6ca2,_0x135ba1){_0x4e6ca2=_0x4e6ca2-0x0;var _0x1e92c8=_0xc737[_0x4e6ca2];return _0x1e92c8;};'use strict';var multer=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var path=require('path');var timeout=require(_0x7c73('0x2'));var express=require(_0x7c73('0x3'));var router=express[_0x7c73('0x4')]();var fs_extra=require(_0x7c73('0x5'));var auth=require(_0x7c73('0x6'));var interaction=require(_0x7c73('0x7'));var config=require(_0x7c73('0x8'));var controller=require('./intVtigerAccount.controller');router['get']('/',auth[_0x7c73('0x9')](),controller[_0x7c73('0xa')]);router[_0x7c73('0xb')](_0x7c73('0xc'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x7c73('0xd')]);router[_0x7c73('0xb')](_0x7c73('0xe'),auth[_0x7c73('0x9')](),controller['getFields']);router[_0x7c73('0xf')]('/',auth['isAuthenticated'](),controller[_0x7c73('0x10')]);router[_0x7c73('0xf')](_0x7c73('0x11'),auth['isAuthenticated'](),controller[_0x7c73('0x12')]);router[_0x7c73('0x13')](_0x7c73('0xc'),auth[_0x7c73('0x9')](),controller[_0x7c73('0x14')]);router[_0x7c73('0x15')](_0x7c73('0xc'),auth[_0x7c73('0x9')](),controller['destroy']);module[_0x7c73('0x16')]=router;
\ No newline at end of file
+var _0x2bc6=['delete','destroy','exports','multer','util','path','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update'];(function(_0x3a1a7e,_0x5b2ba2){var _0x3dd1ca=function(_0x106bbd){while(--_0x106bbd){_0x3a1a7e['push'](_0x3a1a7e['shift']());}};_0x3dd1ca(++_0x5b2ba2);}(_0x2bc6,0x163));var _0x62bc=function(_0x299e08,_0x16434c){_0x299e08=_0x299e08-0x0;var _0x15a309=_0x2bc6[_0x299e08];return _0x15a309;};'use strict';var multer=require(_0x62bc('0x0'));var util=require(_0x62bc('0x1'));var path=require(_0x62bc('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x62bc('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x62bc('0x4'));var controller=require(_0x62bc('0x5'));router['get']('/',auth[_0x62bc('0x6')](),controller[_0x62bc('0x7')]);router[_0x62bc('0x8')](_0x62bc('0x9'),auth[_0x62bc('0x6')](),controller[_0x62bc('0xa')]);router['get'](_0x62bc('0xb'),auth[_0x62bc('0x6')](),controller[_0x62bc('0xc')]);router[_0x62bc('0x8')]('/:id/fields',auth[_0x62bc('0x6')](),controller[_0x62bc('0xd')]);router[_0x62bc('0xe')]('/',auth['isAuthenticated'](),controller[_0x62bc('0xf')]);router[_0x62bc('0xe')](_0x62bc('0xb'),auth[_0x62bc('0x6')](),controller[_0x62bc('0x10')]);router[_0x62bc('0x11')](_0x62bc('0x9'),auth['isAuthenticated'](),controller[_0x62bc('0x12')]);router[_0x62bc('0x13')]('/:id',auth[_0x62bc('0x6')](),controller[_0x62bc('0x14')]);module[_0x62bc('0x15')]=router;
\ No newline at end of file
index b579264..6e700a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d0=['HelpDesk','sequelize','exports','STRING'];(function(_0x293440,_0x357eff){var _0x596af9=function(_0x37d50c){while(--_0x37d50c){_0x293440['push'](_0x293440['shift']());}};_0x596af9(++_0x357eff);}(_0xb2d0,0x10d));var _0x0b2d=function(_0x2f9695,_0x4f18a0){_0x2f9695=_0x2f9695-0x0;var _0x5e22aa=_0xb2d0[_0x2f9695];return _0x5e22aa;};'use strict';var Sequelize=require(_0x0b2d('0x0'));module[_0x0b2d('0x1')]={'name':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0b2d('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![],'defaultValue':_0x0b2d('0x3')},'remoteUri':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xe919=['STRING','sequelize','exports'];(function(_0xb548c6,_0x17d878){var _0x12c8e7=function(_0x3f08a6){while(--_0x3f08a6){_0xb548c6['push'](_0xb548c6['shift']());}};_0x12c8e7(++_0x17d878);}(_0xe919,0x9d));var _0x9e91=function(_0x33b986,_0x40da5f){_0x33b986=_0x33b986-0x0;var _0x4ddaca=_0xe919[_0x33b986];return _0x4ddaca;};'use strict';var Sequelize=require(_0x9e91('0x0'));module[_0x9e91('0x1')]={'name':{'type':Sequelize[_0x9e91('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9e91('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x9e91('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0x9e91('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x9e91('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x9e91('0x2')],'allowNull':![]}};
\ No newline at end of file
index 513c330..d0e77f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd65=['VtigerAccount','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','body','update','getConfigurations','findOne','AccountId','getSubjects','channel','type','Descriptions','getDescriptions','VtigerConfiguration','create','VtigerField','Subjects','md5','getFields','username','description','remoteUri','accessKey','moduleName','slice','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','login','result','token','describe','sessionName','autogenerated','reference','remove','includes','editable','false','label','startsWith','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','Wrong\x20credentials','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','destroy','sendStatus','error','name','index','map'];(function(_0x22e085,_0x5c183a){var _0x206355=function(_0x452278){while(--_0x452278){_0x22e085['push'](_0x22e085['shift']());}};_0x206355(++_0x5c183a);}(_0xdd65,0x148));var _0x5dd6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xdd65[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dd6('0x0'));var zipdir=require(_0x5dd6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5dd6('0x2'));var moment=require(_0x5dd6('0x3'));var BPromise=require(_0x5dd6('0x4'));var Mustache=require(_0x5dd6('0x5'));var util=require(_0x5dd6('0x6'));var path=require(_0x5dd6('0x7'));var sox=require(_0x5dd6('0x8'));var csv=require(_0x5dd6('0x9'));var ejs=require(_0x5dd6('0xa'));var fs=require('fs');var fs_extra=require(_0x5dd6('0xb'));var _=require(_0x5dd6('0xc'));var squel=require(_0x5dd6('0xd'));var crypto=require(_0x5dd6('0xe'));var jsforce=require(_0x5dd6('0xf'));var deskjs=require(_0x5dd6('0x10'));var toCsv=require(_0x5dd6('0x9'));var querystring=require(_0x5dd6('0x11'));var Papa=require(_0x5dd6('0x12'));var Redis=require(_0x5dd6('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x5dd6('0x14'));var as=require(_0x5dd6('0x15'));var hardwareService=require(_0x5dd6('0x16'));var logger=require(_0x5dd6('0x17'))('api');var utils=require(_0x5dd6('0x18'));var config=require(_0x5dd6('0x19'));var licenseUtil=require(_0x5dd6('0x1a'));var db=require(_0x5dd6('0x1b'))['db'];var integrations=require(_0x5dd6('0x1c'));function respondWithStatusCode(_0x5e241f,_0x31b983){_0x31b983=_0x31b983||0xcc;return function(_0x9ad9be){if(_0x9ad9be){return _0x5e241f['sendStatus'](_0x31b983);}return _0x5e241f[_0x5dd6('0x1d')](_0x31b983)[_0x5dd6('0x1e')]();};}function respondWithResult(_0x5be953,_0x42a723){_0x42a723=_0x42a723||0xc8;return function(_0x286523){if(_0x286523){return _0x5be953[_0x5dd6('0x1d')](_0x42a723)[_0x5dd6('0x1f')](_0x286523);}};}function respondWithFilteredResult(_0x18ca74,_0x64b676){return function(_0x2fdc97){if(_0x2fdc97){var _0x2932e8=typeof _0x64b676['offset']===_0x5dd6('0x20')&&typeof _0x64b676[_0x5dd6('0x21')]===_0x5dd6('0x20');var _0x238334=_0x2fdc97[_0x5dd6('0x22')];var _0x52a874=_0x2932e8?0x0:_0x64b676[_0x5dd6('0x23')];var _0x1130ad=_0x2932e8?_0x2fdc97[_0x5dd6('0x22')]:_0x64b676['offset']+_0x64b676[_0x5dd6('0x21')];var _0x5a500f;if(_0x1130ad>=_0x238334){_0x1130ad=_0x238334;_0x5a500f=0xc8;}else{_0x5a500f=0xce;}_0x18ca74[_0x5dd6('0x1d')](_0x5a500f);return _0x18ca74[_0x5dd6('0x24')](_0x5dd6('0x25'),_0x52a874+'-'+_0x1130ad+'/'+_0x238334)['json'](_0x2fdc97);}return null;};}function patchUpdates(_0x542c60){return function(_0x593722){try{jsonpatch['apply'](_0x593722,_0x542c60,!![]);}catch(_0x454c3b){return BPromise[_0x5dd6('0x26')](_0x454c3b);}return _0x593722[_0x5dd6('0x27')]();};}function saveUpdates(_0x5e0b55,_0x51541d){return function(_0x23c036){if(_0x23c036){return _0x23c036['update'](_0x5e0b55)[_0x5dd6('0x28')](function(_0x15460f){return _0x15460f;});}return null;};}function removeEntity(_0x590883,_0x17df15){return function(_0x283a59){if(_0x283a59){return _0x283a59[_0x5dd6('0x29')]()[_0x5dd6('0x28')](function(){_0x590883[_0x5dd6('0x1d')](0xcc)[_0x5dd6('0x1e')]();});}};}function handleEntityNotFound(_0x59f6ad,_0x22fab3){return function(_0x19ca49){if(!_0x19ca49){_0x59f6ad[_0x5dd6('0x2a')](0x194);}return _0x19ca49;};}function handleError(_0xc2fbb8,_0x102b03){_0x102b03=_0x102b03||0x1f4;return function(_0x5d3f5b){logger[_0x5dd6('0x2b')](_0x5d3f5b['stack']);if(_0x5d3f5b[_0x5dd6('0x2c')]){delete _0x5d3f5b[_0x5dd6('0x2c')];}_0xc2fbb8[_0x5dd6('0x1d')](_0x102b03)['send'](_0x5d3f5b);};}exports[_0x5dd6('0x2d')]=function(_0x5cb1cc,_0x310f41){var _0x5ad6ec={},_0xb9b4d4={},_0x3eda98={'count':0x0,'rows':[]};var _0x51bfa8=_[_0x5dd6('0x2e')](db[_0x5dd6('0x2f')][_0x5dd6('0x30')],function(_0x181e45){return{'name':_0x181e45['fieldName'],'type':_0x181e45['type'][_0x5dd6('0x31')]};});_0xb9b4d4[_0x5dd6('0x32')]=_[_0x5dd6('0x2e')](_0x51bfa8,_0x5dd6('0x2c'));_0xb9b4d4[_0x5dd6('0x33')]=_[_0x5dd6('0x34')](_0x5cb1cc[_0x5dd6('0x33')]);_0xb9b4d4[_0x5dd6('0x35')]=_['intersection'](_0xb9b4d4[_0x5dd6('0x32')],_0xb9b4d4[_0x5dd6('0x33')]);_0x5ad6ec[_0x5dd6('0x36')]=_['intersection'](_0xb9b4d4[_0x5dd6('0x32')],qs[_0x5dd6('0x37')](_0x5cb1cc['query']['fields']));_0x5ad6ec['attributes']=_0x5ad6ec[_0x5dd6('0x36')][_0x5dd6('0x38')]?_0x5ad6ec[_0x5dd6('0x36')]:_0xb9b4d4[_0x5dd6('0x32')];if(!_0x5cb1cc[_0x5dd6('0x33')][_0x5dd6('0x39')](_0x5dd6('0x3a'))){_0x5ad6ec[_0x5dd6('0x21')]=qs['limit'](_0x5cb1cc[_0x5dd6('0x33')]['limit']);_0x5ad6ec[_0x5dd6('0x23')]=qs[_0x5dd6('0x23')](_0x5cb1cc['query']['offset']);}_0x5ad6ec[_0x5dd6('0x3b')]=qs[_0x5dd6('0x3c')](_0x5cb1cc['query'][_0x5dd6('0x3c')]);_0x5ad6ec[_0x5dd6('0x3d')]=qs[_0x5dd6('0x35')](_[_0x5dd6('0x3e')](_0x5cb1cc[_0x5dd6('0x33')],_0xb9b4d4['filters']),_0x51bfa8);if(_0x5cb1cc[_0x5dd6('0x33')][_0x5dd6('0x3f')]){_0x5ad6ec[_0x5dd6('0x3d')]=_['merge'](_0x5ad6ec[_0x5dd6('0x3d')],{'$or':_[_0x5dd6('0x2e')](_0x51bfa8,function(_0x1b2b3e){if(_0x1b2b3e['type']!==_0x5dd6('0x40')){var _0x4d425f={};_0x4d425f[_0x1b2b3e[_0x5dd6('0x2c')]]={'$like':'%'+_0x5cb1cc['query'][_0x5dd6('0x3f')]+'%'};return _0x4d425f;}})});}_0x5ad6ec=_[_0x5dd6('0x41')]({},_0x5ad6ec,_0x5cb1cc[_0x5dd6('0x42')]);var _0x1e9296={'where':_0x5ad6ec['where']};return db[_0x5dd6('0x2f')][_0x5dd6('0x22')](_0x1e9296)[_0x5dd6('0x28')](function(_0x10e015){_0x3eda98[_0x5dd6('0x22')]=_0x10e015;if(_0x5cb1cc[_0x5dd6('0x33')][_0x5dd6('0x43')]){_0x5ad6ec[_0x5dd6('0x44')]=[{'all':!![]}];}return db[_0x5dd6('0x2f')][_0x5dd6('0x45')](_0x5ad6ec);})[_0x5dd6('0x28')](function(_0x4479b5){_0x3eda98[_0x5dd6('0x46')]=_0x4479b5;return _0x3eda98;})['then'](respondWithFilteredResult(_0x310f41,_0x5ad6ec))[_0x5dd6('0x47')](handleError(_0x310f41,null));};exports[_0x5dd6('0x48')]=function(_0x19decf,_0x5ba7c6){var _0x2555fd={'raw':![],'where':{'id':_0x19decf[_0x5dd6('0x49')]['id']}},_0x10c4df={};_0x10c4df[_0x5dd6('0x32')]=_['keys'](db[_0x5dd6('0x2f')][_0x5dd6('0x30')]);_0x10c4df[_0x5dd6('0x33')]=_[_0x5dd6('0x34')](_0x19decf[_0x5dd6('0x33')]);_0x10c4df[_0x5dd6('0x35')]=_[_0x5dd6('0x4a')](_0x10c4df[_0x5dd6('0x32')],_0x10c4df[_0x5dd6('0x33')]);_0x2555fd[_0x5dd6('0x36')]=_['intersection'](_0x10c4df[_0x5dd6('0x32')],qs[_0x5dd6('0x37')](_0x19decf['query'][_0x5dd6('0x37')]));_0x2555fd[_0x5dd6('0x36')]=_0x2555fd[_0x5dd6('0x36')][_0x5dd6('0x38')]?_0x2555fd[_0x5dd6('0x36')]:_0x10c4df[_0x5dd6('0x32')];if(_0x19decf[_0x5dd6('0x33')][_0x5dd6('0x43')]){_0x2555fd[_0x5dd6('0x44')]=[{'all':!![]}];}_0x2555fd=_[_0x5dd6('0x41')]({},_0x2555fd,_0x19decf[_0x5dd6('0x42')]);return db[_0x5dd6('0x2f')][_0x5dd6('0x4b')](_0x2555fd)[_0x5dd6('0x28')](handleEntityNotFound(_0x5ba7c6,null))['then'](respondWithResult(_0x5ba7c6,null))[_0x5dd6('0x47')](handleError(_0x5ba7c6,null));};exports['create']=function(_0x2b9f90,_0x4b0952){return db['VtigerAccount']['create'](_0x2b9f90[_0x5dd6('0x4c')],{})[_0x5dd6('0x28')](respondWithResult(_0x4b0952,0xc9))[_0x5dd6('0x47')](handleError(_0x4b0952,null));};exports[_0x5dd6('0x4d')]=function(_0x2df24b,_0x107ba8){if(_0x2df24b[_0x5dd6('0x4c')]['id']){delete _0x2df24b[_0x5dd6('0x4c')]['id'];}return db[_0x5dd6('0x2f')][_0x5dd6('0x4b')]({'where':{'id':_0x2df24b[_0x5dd6('0x49')]['id']}})[_0x5dd6('0x28')](handleEntityNotFound(_0x107ba8,null))[_0x5dd6('0x28')](saveUpdates(_0x2df24b[_0x5dd6('0x4c')],null))[_0x5dd6('0x28')](respondWithResult(_0x107ba8,null))[_0x5dd6('0x47')](handleError(_0x107ba8,null));};exports[_0x5dd6('0x29')]=function(_0x20b881,_0x2c205e){return db[_0x5dd6('0x2f')]['find']({'where':{'id':_0x20b881[_0x5dd6('0x49')]['id']}})[_0x5dd6('0x28')](handleEntityNotFound(_0x2c205e,null))[_0x5dd6('0x28')](removeEntity(_0x2c205e,null))[_0x5dd6('0x47')](handleError(_0x2c205e,null));};exports[_0x5dd6('0x4e')]=function(_0x102ca6,_0x3de968,_0x36fa63){var _0x17ea20={};var _0x314a76={};var _0x325039;var _0x2e93ef;return db[_0x5dd6('0x2f')]['findOne']({'where':{'id':_0x102ca6[_0x5dd6('0x49')]['id']}})['then'](handleEntityNotFound(_0x3de968,null))['then'](function(_0x2ffe51){if(_0x2ffe51){_0x325039=_0x2ffe51;_0x314a76[_0x5dd6('0x32')]=_['keys'](db['VtigerConfiguration'][_0x5dd6('0x30')]);_0x314a76[_0x5dd6('0x33')]=_[_0x5dd6('0x34')](_0x102ca6[_0x5dd6('0x33')]);_0x314a76[_0x5dd6('0x35')]=_[_0x5dd6('0x4a')](_0x314a76[_0x5dd6('0x32')],_0x314a76[_0x5dd6('0x33')]);_0x17ea20[_0x5dd6('0x36')]=_[_0x5dd6('0x4a')](_0x314a76[_0x5dd6('0x32')],qs[_0x5dd6('0x37')](_0x102ca6['query']['fields']));_0x17ea20[_0x5dd6('0x36')]=_0x17ea20[_0x5dd6('0x36')][_0x5dd6('0x38')]?_0x17ea20['attributes']:_0x314a76[_0x5dd6('0x32')];_0x17ea20[_0x5dd6('0x3b')]=qs[_0x5dd6('0x3c')](_0x102ca6[_0x5dd6('0x33')][_0x5dd6('0x3c')]);_0x17ea20[_0x5dd6('0x3d')]=qs[_0x5dd6('0x35')](_[_0x5dd6('0x3e')](_0x102ca6[_0x5dd6('0x33')],_0x314a76[_0x5dd6('0x35')]));if(_0x102ca6['query']['filter']){_0x17ea20[_0x5dd6('0x3d')]=_[_0x5dd6('0x41')](_0x17ea20['where'],{'$or':_[_0x5dd6('0x2e')](_0x17ea20[_0x5dd6('0x36')],function(_0x4f1ed6){var _0x260025={};_0x260025[_0x4f1ed6]={'$like':'%'+_0x102ca6[_0x5dd6('0x33')][_0x5dd6('0x3f')]+'%'};return _0x260025;})});}_0x17ea20=_[_0x5dd6('0x41')]({},_0x17ea20,_0x102ca6[_0x5dd6('0x42')]);return _0x325039['getConfigurations'](_0x17ea20);}})[_0x5dd6('0x28')](function(_0x231744){if(_0x231744){_0x2e93ef=_0x231744['length'];if(!_0x102ca6[_0x5dd6('0x33')][_0x5dd6('0x39')](_0x5dd6('0x3a'))){_0x17ea20[_0x5dd6('0x21')]=qs[_0x5dd6('0x21')](_0x102ca6['query'][_0x5dd6('0x21')]);_0x17ea20['offset']=qs[_0x5dd6('0x23')](_0x102ca6['query'][_0x5dd6('0x23')]);}return _0x325039[_0x5dd6('0x4e')](_0x17ea20);}})[_0x5dd6('0x28')](function(_0x2551bc){if(_0x2551bc){return _0x2551bc?{'count':_0x2e93ef,'rows':_0x2551bc}:null;}})[_0x5dd6('0x28')](respondWithResult(_0x3de968,null))[_0x5dd6('0x47')](handleError(_0x3de968,null));};exports['addConfiguration']=function(_0x12f7ca,_0x34a209,_0x27c794){if(_0x12f7ca['body']['id']){delete _0x12f7ca[_0x5dd6('0x4c')]['id'];}return db['VtigerAccount'][_0x5dd6('0x4f')]({'where':{'id':_0x12f7ca[_0x5dd6('0x49')]['id']}})[_0x5dd6('0x28')](handleEntityNotFound(_0x34a209,null))[_0x5dd6('0x28')](function(_0x1195e8){if(_0x1195e8){_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x50')]=_0x1195e8['id'];_0x12f7ca[_0x5dd6('0x4c')]['Subjects']=integrations[_0x5dd6('0x51')](_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x52')],_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x53')]);_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x54')]=integrations[_0x5dd6('0x55')](_0x12f7ca[_0x5dd6('0x4c')]['channel'],_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x53')]);return db[_0x5dd6('0x56')][_0x5dd6('0x57')](_0x12f7ca['body'],{'include':[{'model':db[_0x5dd6('0x58')],'as':_0x5dd6('0x59')},{'model':db[_0x5dd6('0x58')],'as':_0x5dd6('0x54')}]});}return null;})[_0x5dd6('0x28')](respondWithResult(_0x34a209,null))[_0x5dd6('0x47')](handleError(_0x34a209,null));};var md5=require(_0x5dd6('0x5a'));exports[_0x5dd6('0x5b')]=function(_0x282984,_0x352482,_0xf54835){var _0x37a15d=null;var _0x318604=null;var _0x10a85c=null;var _0x24ae1f=null;var _0x5253d1='';return db[_0x5dd6('0x2f')]['findOne']({'where':{'id':_0x282984['params']['id']},'attributes':['id',_0x5dd6('0x2c'),_0x5dd6('0x5c'),_0x5dd6('0x5d'),'moduleName',_0x5dd6('0x5e'),'serverUrl',_0x5dd6('0x5f')]})['then'](handleEntityNotFound(_0x352482,null))[_0x5dd6('0x28')](function(_0x207989){if(_0x207989){_0x37a15d=_0x207989[_0x5dd6('0x5c')];_0x318604=_0x207989[_0x5dd6('0x5f')];_0x10a85c=_0x207989[_0x5dd6('0x60')];_0x5253d1=_0x207989[_0x5dd6('0x5e')];var _0x1e7e0a=_0x5253d1[_0x5dd6('0x61')](-0x1);if(_0x1e7e0a==='/'){_0x5253d1=_0x5253d1['substring'](0x0,_0x5253d1[_0x5dd6('0x62')](_0x1e7e0a));}_0x24ae1f=util[_0x5dd6('0x63')](_0x5dd6('0x64'),_0x5253d1);var _0x4a0dfe={'method':_0x5dd6('0x65'),'uri':_0x24ae1f,'qs':{'operation':_0x5dd6('0x66'),'username':_0x207989[_0x5dd6('0x5c')]},'json':!![]};return rp(_0x4a0dfe);}})[_0x5dd6('0x28')](function(_0x14849e){if(_0x14849e[_0x5dd6('0x67')]){var _0x2b7bcd={'method':'POST','uri':_0x24ae1f,'form':{'operation':_0x5dd6('0x68'),'username':_0x37a15d,'accessKey':md5(_0x14849e[_0x5dd6('0x69')][_0x5dd6('0x6a')]+_0x318604)},'json':!![]};return rp(_0x2b7bcd);}})[_0x5dd6('0x28')](function(_0x2d9091){if(_0x2d9091['success']){var _0x218aba={'method':'GET','uri':_0x24ae1f,'qs':{'operation':_0x5dd6('0x6b'),'username':_0x37a15d,'sessionName':_0x2d9091[_0x5dd6('0x69')][_0x5dd6('0x6c')],'elementType':_0x10a85c},'json':!![]};return rp(_0x218aba);}})['then'](function(_0xf5d5b1){if(_0xf5d5b1[_0x5dd6('0x67')]){var _0x173e24=[_0x5dd6('0x6d'),_0x5dd6('0x6e'),'owner'];_[_0x5dd6('0x6f')](_0xf5d5b1[_0x5dd6('0x69')][_0x5dd6('0x37')],function(_0x2c5dca){return _0x173e24[_0x5dd6('0x70')](_0x2c5dca['type'][_0x5dd6('0x2c')]);});_['remove'](_0xf5d5b1[_0x5dd6('0x69')][_0x5dd6('0x37')],function(_0x5cf98c){return _0x5cf98c[_0x5dd6('0x71')]===_0x5dd6('0x72');});return{'count':_0xf5d5b1['result'][_0x5dd6('0x37')][_0x5dd6('0x38')],'rows':_[_0x5dd6('0x2e')](_0xf5d5b1[_0x5dd6('0x69')][_0x5dd6('0x37')],function(_0x38df53){return{'id':_0x38df53['name'],'name':_0x38df53[_0x5dd6('0x73')],'custom':_[_0x5dd6('0x74')](_0x38df53[_0x5dd6('0x2c')],'cf_')?!![]:![],'options':_0x38df53[_0x5dd6('0x53')][_0x5dd6('0x2c')]===_0x5dd6('0x75')&&_0x38df53[_0x5dd6('0x53')][_0x5dd6('0x76')][_0x5dd6('0x38')]>0x0?_[_0x5dd6('0x2e')](_0x38df53[_0x5dd6('0x53')]['picklistValues'],function(_0x282ace){return{'name':_0x282ace[_0x5dd6('0x73')],'value':_0x282ace[_0x5dd6('0x77')]};}):[]};})};}})[_0x5dd6('0x28')](respondWithResult(_0x352482,null))[_0x5dd6('0x47')](function(_0x4d64ec){console[_0x5dd6('0x78')](_0x5dd6('0x79')+_0x4d64ec);var _0x438195=_0x282984[_0x5dd6('0x33')][_0x5dd6('0x7a')]?0x1f4:_0x4d64ec[_0x5dd6('0x7b')]||0x1f4;logger[_0x5dd6('0x2b')]('getFields,\x20%s,\x20%s,\x20%s',_0x5dd6('0x5b'),_0x438195,JSON['stringify'](_0x4d64ec));delete _0x4d64ec['name'];if(_0x438195===0x191){_0x438195=0x190;}_0x352482['status'](_0x438195)['send'](_0x282984[_0x5dd6('0x33')][_0x5dd6('0x7a')]?{'message':_0x5dd6('0x7c'),'statusCode':_0x4d64ec['statusCode']}:_0x4d64ec);});};
\ No newline at end of file
+var _0x8ced=['create','body','findOne','VtigerConfiguration','order','pick','options','getConfigurations','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','remoteUri','serverUrl','accessKey','slice','lastIndexOf','format','%s/webservice.php','getchallenge','success','login','token','GET','describe','result','sessionName','autogenerated','reference','owner','remove','includes','false','label','startsWith','cf_','picklist','picklistValues','value','test','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','statusCode','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','apply','update','destroy','then','error','stack','name','index','map','VtigerAccount','rawAttributes','fieldName','type','model','keys','intersection','fields','query','attributes','length','hasOwnProperty','sort','filters','filter','where','merge','VIRTUAL','includeAll','findAll','catch','show','params','include','find'];(function(_0x3b2474,_0x14f508){var _0x2a9fe5=function(_0x414b61){while(--_0x414b61){_0x3b2474['push'](_0x3b2474['shift']());}};_0x2a9fe5(++_0x14f508);}(_0x8ced,0x119));var _0xd8ce=function(_0x1f54d7,_0xafc682){_0x1f54d7=_0x1f54d7-0x0;var _0x355fc0=_0x8ced[_0x1f54d7];return _0x355fc0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd8ce('0x0'));var jsonpatch=require(_0xd8ce('0x1'));var rp=require(_0xd8ce('0x2'));var moment=require(_0xd8ce('0x3'));var BPromise=require(_0xd8ce('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8ce('0x5'));var sox=require(_0xd8ce('0x6'));var csv=require(_0xd8ce('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd8ce('0x8'));var _=require(_0xd8ce('0x9'));var squel=require(_0xd8ce('0xa'));var crypto=require(_0xd8ce('0xb'));var jsforce=require(_0xd8ce('0xc'));var deskjs=require(_0xd8ce('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd8ce('0xe'));var Papa=require(_0xd8ce('0xf'));var Redis=require(_0xd8ce('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd8ce('0x11'));var logger=require(_0xd8ce('0x12'))(_0xd8ce('0x13'));var utils=require(_0xd8ce('0x14'));var config=require(_0xd8ce('0x15'));var licenseUtil=require(_0xd8ce('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x43b5d6,_0x583384){_0x583384=_0x583384||0xcc;return function(_0x1a8f98){if(_0x1a8f98){return _0x43b5d6[_0xd8ce('0x17')](_0x583384);}return _0x43b5d6[_0xd8ce('0x18')](_0x583384)[_0xd8ce('0x19')]();};}function respondWithResult(_0x4f85f1,_0x359370){_0x359370=_0x359370||0xc8;return function(_0x492789){if(_0x492789){return _0x4f85f1[_0xd8ce('0x18')](_0x359370)[_0xd8ce('0x1a')](_0x492789);}};}function respondWithFilteredResult(_0x423019,_0x9b0207){return function(_0x59f271){if(_0x59f271){var _0x42fce6=typeof _0x9b0207[_0xd8ce('0x1b')]==='undefined'&&typeof _0x9b0207[_0xd8ce('0x1c')]==='undefined';var _0x2e1b60=_0x59f271['count'];var _0x5e7e7f=_0x42fce6?0x0:_0x9b0207['offset'];var _0x5b9ec3=_0x42fce6?_0x59f271[_0xd8ce('0x1d')]:_0x9b0207[_0xd8ce('0x1b')]+_0x9b0207[_0xd8ce('0x1c')];var _0x3e2942;if(_0x5b9ec3>=_0x2e1b60){_0x5b9ec3=_0x2e1b60;_0x3e2942=0xc8;}else{_0x3e2942=0xce;}_0x423019[_0xd8ce('0x18')](_0x3e2942);return _0x423019['set']('Content-Range',_0x5e7e7f+'-'+_0x5b9ec3+'/'+_0x2e1b60)[_0xd8ce('0x1a')](_0x59f271);}return null;};}function patchUpdates(_0x5678e6){return function(_0x50819b){try{jsonpatch[_0xd8ce('0x1e')](_0x50819b,_0x5678e6,!![]);}catch(_0x332f10){return BPromise['reject'](_0x332f10);}return _0x50819b['save']();};}function saveUpdates(_0x44ea00,_0x11c67b){return function(_0x3a91a8){if(_0x3a91a8){return _0x3a91a8[_0xd8ce('0x1f')](_0x44ea00)['then'](function(_0x1e64f6){return _0x1e64f6;});}return null;};}function removeEntity(_0x2fc78f,_0x4f02c9){return function(_0x420c64){if(_0x420c64){return _0x420c64[_0xd8ce('0x20')]()[_0xd8ce('0x21')](function(){_0x2fc78f['status'](0xcc)[_0xd8ce('0x19')]();});}};}function handleEntityNotFound(_0x459e01,_0x5c3b02){return function(_0x3a0c24){if(!_0x3a0c24){_0x459e01[_0xd8ce('0x17')](0x194);}return _0x3a0c24;};}function handleError(_0x5eef2c,_0x548f40){_0x548f40=_0x548f40||0x1f4;return function(_0x29dff6){logger[_0xd8ce('0x22')](_0x29dff6[_0xd8ce('0x23')]);if(_0x29dff6['name']){delete _0x29dff6[_0xd8ce('0x24')];}_0x5eef2c[_0xd8ce('0x18')](_0x548f40)['send'](_0x29dff6);};}exports[_0xd8ce('0x25')]=function(_0x176c57,_0x3c8072){var _0x5684f6={},_0x1d8e33={},_0x583892={'count':0x0,'rows':[]};var _0x498aac=_[_0xd8ce('0x26')](db[_0xd8ce('0x27')][_0xd8ce('0x28')],function(_0x49b790){return{'name':_0x49b790[_0xd8ce('0x29')],'type':_0x49b790[_0xd8ce('0x2a')]['key']};});_0x1d8e33[_0xd8ce('0x2b')]=_['map'](_0x498aac,_0xd8ce('0x24'));_0x1d8e33['query']=_[_0xd8ce('0x2c')](_0x176c57['query']);_0x1d8e33['filters']=_[_0xd8ce('0x2d')](_0x1d8e33[_0xd8ce('0x2b')],_0x1d8e33['query']);_0x5684f6['attributes']=_['intersection'](_0x1d8e33['model'],qs[_0xd8ce('0x2e')](_0x176c57[_0xd8ce('0x2f')][_0xd8ce('0x2e')]));_0x5684f6[_0xd8ce('0x30')]=_0x5684f6['attributes'][_0xd8ce('0x31')]?_0x5684f6[_0xd8ce('0x30')]:_0x1d8e33[_0xd8ce('0x2b')];if(!_0x176c57[_0xd8ce('0x2f')][_0xd8ce('0x32')]('nolimit')){_0x5684f6[_0xd8ce('0x1c')]=qs[_0xd8ce('0x1c')](_0x176c57[_0xd8ce('0x2f')][_0xd8ce('0x1c')]);_0x5684f6[_0xd8ce('0x1b')]=qs[_0xd8ce('0x1b')](_0x176c57[_0xd8ce('0x2f')]['offset']);}_0x5684f6['order']=qs[_0xd8ce('0x33')](_0x176c57['query'][_0xd8ce('0x33')]);_0x5684f6['where']=qs[_0xd8ce('0x34')](_['pick'](_0x176c57[_0xd8ce('0x2f')],_0x1d8e33[_0xd8ce('0x34')]),_0x498aac);if(_0x176c57['query'][_0xd8ce('0x35')]){_0x5684f6[_0xd8ce('0x36')]=_[_0xd8ce('0x37')](_0x5684f6[_0xd8ce('0x36')],{'$or':_['map'](_0x498aac,function(_0x4e3cd1){if(_0x4e3cd1[_0xd8ce('0x2a')]!==_0xd8ce('0x38')){var _0xc75bf6={};_0xc75bf6[_0x4e3cd1[_0xd8ce('0x24')]]={'$like':'%'+_0x176c57['query'][_0xd8ce('0x35')]+'%'};return _0xc75bf6;}})});}_0x5684f6=_[_0xd8ce('0x37')]({},_0x5684f6,_0x176c57['options']);var _0x647a29={'where':_0x5684f6[_0xd8ce('0x36')]};return db[_0xd8ce('0x27')]['count'](_0x647a29)[_0xd8ce('0x21')](function(_0x54fde4){_0x583892[_0xd8ce('0x1d')]=_0x54fde4;if(_0x176c57[_0xd8ce('0x2f')][_0xd8ce('0x39')]){_0x5684f6['include']=[{'all':!![]}];}return db[_0xd8ce('0x27')][_0xd8ce('0x3a')](_0x5684f6);})['then'](function(_0x1dccce){_0x583892['rows']=_0x1dccce;return _0x583892;})['then'](respondWithFilteredResult(_0x3c8072,_0x5684f6))[_0xd8ce('0x3b')](handleError(_0x3c8072,null));};exports[_0xd8ce('0x3c')]=function(_0xc7ab5c,_0x1448ba){var _0x104ff2={'raw':![],'where':{'id':_0xc7ab5c[_0xd8ce('0x3d')]['id']}},_0xc5923a={};_0xc5923a['model']=_[_0xd8ce('0x2c')](db[_0xd8ce('0x27')][_0xd8ce('0x28')]);_0xc5923a[_0xd8ce('0x2f')]=_[_0xd8ce('0x2c')](_0xc7ab5c[_0xd8ce('0x2f')]);_0xc5923a[_0xd8ce('0x34')]=_['intersection'](_0xc5923a[_0xd8ce('0x2b')],_0xc5923a[_0xd8ce('0x2f')]);_0x104ff2[_0xd8ce('0x30')]=_['intersection'](_0xc5923a['model'],qs[_0xd8ce('0x2e')](_0xc7ab5c[_0xd8ce('0x2f')][_0xd8ce('0x2e')]));_0x104ff2[_0xd8ce('0x30')]=_0x104ff2[_0xd8ce('0x30')][_0xd8ce('0x31')]?_0x104ff2[_0xd8ce('0x30')]:_0xc5923a[_0xd8ce('0x2b')];if(_0xc7ab5c['query'][_0xd8ce('0x39')]){_0x104ff2[_0xd8ce('0x3e')]=[{'all':!![]}];}_0x104ff2=_[_0xd8ce('0x37')]({},_0x104ff2,_0xc7ab5c['options']);return db[_0xd8ce('0x27')][_0xd8ce('0x3f')](_0x104ff2)[_0xd8ce('0x21')](handleEntityNotFound(_0x1448ba,null))[_0xd8ce('0x21')](respondWithResult(_0x1448ba,null))[_0xd8ce('0x3b')](handleError(_0x1448ba,null));};exports[_0xd8ce('0x40')]=function(_0x48e9c1,_0x3b7664){return db[_0xd8ce('0x27')][_0xd8ce('0x40')](_0x48e9c1[_0xd8ce('0x41')],{})[_0xd8ce('0x21')](respondWithResult(_0x3b7664,0xc9))[_0xd8ce('0x3b')](handleError(_0x3b7664,null));};exports[_0xd8ce('0x1f')]=function(_0x572c14,_0x520c87){if(_0x572c14['body']['id']){delete _0x572c14[_0xd8ce('0x41')]['id'];}return db['VtigerAccount'][_0xd8ce('0x3f')]({'where':{'id':_0x572c14['params']['id']}})[_0xd8ce('0x21')](handleEntityNotFound(_0x520c87,null))[_0xd8ce('0x21')](saveUpdates(_0x572c14[_0xd8ce('0x41')],null))[_0xd8ce('0x21')](respondWithResult(_0x520c87,null))['catch'](handleError(_0x520c87,null));};exports['destroy']=function(_0x4bdd3f,_0x3af7b9){return db['VtigerAccount'][_0xd8ce('0x3f')]({'where':{'id':_0x4bdd3f[_0xd8ce('0x3d')]['id']}})[_0xd8ce('0x21')](handleEntityNotFound(_0x3af7b9,null))[_0xd8ce('0x21')](removeEntity(_0x3af7b9,null))[_0xd8ce('0x3b')](handleError(_0x3af7b9,null));};exports['getConfigurations']=function(_0x48329e,_0x2a7693,_0x57da42){var _0x4713e4={};var _0x599156={};var _0x494532;var _0x3e7e5e;return db[_0xd8ce('0x27')][_0xd8ce('0x42')]({'where':{'id':_0x48329e[_0xd8ce('0x3d')]['id']}})[_0xd8ce('0x21')](handleEntityNotFound(_0x2a7693,null))[_0xd8ce('0x21')](function(_0x4f1cbf){if(_0x4f1cbf){_0x494532=_0x4f1cbf;_0x599156[_0xd8ce('0x2b')]=_['keys'](db[_0xd8ce('0x43')]['rawAttributes']);_0x599156[_0xd8ce('0x2f')]=_['keys'](_0x48329e[_0xd8ce('0x2f')]);_0x599156[_0xd8ce('0x34')]=_[_0xd8ce('0x2d')](_0x599156[_0xd8ce('0x2b')],_0x599156[_0xd8ce('0x2f')]);_0x4713e4[_0xd8ce('0x30')]=_[_0xd8ce('0x2d')](_0x599156[_0xd8ce('0x2b')],qs[_0xd8ce('0x2e')](_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x2e')]));_0x4713e4[_0xd8ce('0x30')]=_0x4713e4[_0xd8ce('0x30')][_0xd8ce('0x31')]?_0x4713e4[_0xd8ce('0x30')]:_0x599156[_0xd8ce('0x2b')];_0x4713e4[_0xd8ce('0x44')]=qs[_0xd8ce('0x33')](_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x33')]);_0x4713e4['where']=qs['filters'](_[_0xd8ce('0x45')](_0x48329e[_0xd8ce('0x2f')],_0x599156[_0xd8ce('0x34')]));if(_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x35')]){_0x4713e4['where']=_[_0xd8ce('0x37')](_0x4713e4['where'],{'$or':_['map'](_0x4713e4[_0xd8ce('0x30')],function(_0xa4751f){var _0x2c9350={};_0x2c9350[_0xa4751f]={'$like':'%'+_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x35')]+'%'};return _0x2c9350;})});}_0x4713e4=_[_0xd8ce('0x37')]({},_0x4713e4,_0x48329e[_0xd8ce('0x46')]);return _0x494532[_0xd8ce('0x47')](_0x4713e4);}})[_0xd8ce('0x21')](function(_0x3236ff){if(_0x3236ff){_0x3e7e5e=_0x3236ff[_0xd8ce('0x31')];if(!_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x32')](_0xd8ce('0x48'))){_0x4713e4[_0xd8ce('0x1c')]=qs[_0xd8ce('0x1c')](_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x1c')]);_0x4713e4[_0xd8ce('0x1b')]=qs[_0xd8ce('0x1b')](_0x48329e[_0xd8ce('0x2f')][_0xd8ce('0x1b')]);}return _0x494532[_0xd8ce('0x47')](_0x4713e4);}})[_0xd8ce('0x21')](function(_0x188d3b){if(_0x188d3b){return _0x188d3b?{'count':_0x3e7e5e,'rows':_0x188d3b}:null;}})[_0xd8ce('0x21')](respondWithResult(_0x2a7693,null))['catch'](handleError(_0x2a7693,null));};exports['addConfiguration']=function(_0x5da10f,_0x47945b,_0x412795){if(_0x5da10f[_0xd8ce('0x41')]['id']){delete _0x5da10f[_0xd8ce('0x41')]['id'];}return db[_0xd8ce('0x27')][_0xd8ce('0x42')]({'where':{'id':_0x5da10f[_0xd8ce('0x3d')]['id']}})['then'](handleEntityNotFound(_0x47945b,null))[_0xd8ce('0x21')](function(_0xe83bc7){if(_0xe83bc7){_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x49')]=_0xe83bc7['id'];_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x4a')]=integrations[_0xd8ce('0x4b')](_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x4c')],_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x2a')]);_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x4d')]=integrations[_0xd8ce('0x4e')](_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x4c')],_0x5da10f[_0xd8ce('0x41')][_0xd8ce('0x2a')]);return db[_0xd8ce('0x43')][_0xd8ce('0x40')](_0x5da10f[_0xd8ce('0x41')],{'include':[{'model':db[_0xd8ce('0x4f')],'as':_0xd8ce('0x4a')},{'model':db[_0xd8ce('0x4f')],'as':_0xd8ce('0x4d')}]});}return null;})['then'](respondWithResult(_0x47945b,null))['catch'](handleError(_0x47945b,null));};var md5=require(_0xd8ce('0x50'));exports[_0xd8ce('0x51')]=function(_0x2d11ec,_0x4b0b67,_0x597fc){var _0x178904=null;var _0x3ec64c=null;var _0x507f6f=null;var _0x264d17=null;var _0x3efaa4='';return db[_0xd8ce('0x27')][_0xd8ce('0x42')]({'where':{'id':_0x2d11ec[_0xd8ce('0x3d')]['id']},'attributes':['id','name',_0xd8ce('0x52'),'description','moduleName',_0xd8ce('0x53'),_0xd8ce('0x54'),'accessKey']})[_0xd8ce('0x21')](handleEntityNotFound(_0x4b0b67,null))[_0xd8ce('0x21')](function(_0x2ba85f){if(_0x2ba85f){_0x178904=_0x2ba85f['username'];_0x3ec64c=_0x2ba85f[_0xd8ce('0x55')];_0x507f6f=_0x2ba85f['moduleName'];_0x3efaa4=_0x2ba85f['remoteUri'];var _0x3bd656=_0x3efaa4[_0xd8ce('0x56')](-0x1);if(_0x3bd656==='/'){_0x3efaa4=_0x3efaa4['substring'](0x0,_0x3efaa4[_0xd8ce('0x57')](_0x3bd656));}_0x264d17=util[_0xd8ce('0x58')](_0xd8ce('0x59'),_0x3efaa4);var _0x24e583={'method':'GET','uri':_0x264d17,'qs':{'operation':_0xd8ce('0x5a'),'username':_0x2ba85f[_0xd8ce('0x52')]},'json':!![]};return rp(_0x24e583);}})[_0xd8ce('0x21')](function(_0x4874f6){if(_0x4874f6[_0xd8ce('0x5b')]){var _0x27ee70={'method':'POST','uri':_0x264d17,'form':{'operation':_0xd8ce('0x5c'),'username':_0x178904,'accessKey':md5(_0x4874f6['result'][_0xd8ce('0x5d')]+_0x3ec64c)},'json':!![]};return rp(_0x27ee70);}})[_0xd8ce('0x21')](function(_0x3e5d9e){if(_0x3e5d9e[_0xd8ce('0x5b')]){var _0x468aef={'method':_0xd8ce('0x5e'),'uri':_0x264d17,'qs':{'operation':_0xd8ce('0x5f'),'username':_0x178904,'sessionName':_0x3e5d9e[_0xd8ce('0x60')][_0xd8ce('0x61')],'elementType':_0x507f6f},'json':!![]};return rp(_0x468aef);}})['then'](function(_0x2908e1){if(_0x2908e1['success']){var _0x4b33e5=[_0xd8ce('0x62'),_0xd8ce('0x63'),_0xd8ce('0x64')];_[_0xd8ce('0x65')](_0x2908e1[_0xd8ce('0x60')][_0xd8ce('0x2e')],function(_0x459028){return _0x4b33e5[_0xd8ce('0x66')](_0x459028[_0xd8ce('0x2a')][_0xd8ce('0x24')]);});_[_0xd8ce('0x65')](_0x2908e1[_0xd8ce('0x60')]['fields'],function(_0x34056e){return _0x34056e['editable']===_0xd8ce('0x67');});return{'count':_0x2908e1[_0xd8ce('0x60')][_0xd8ce('0x2e')][_0xd8ce('0x31')],'rows':_[_0xd8ce('0x26')](_0x2908e1[_0xd8ce('0x60')][_0xd8ce('0x2e')],function(_0x3eb0ba){return{'id':_0x3eb0ba[_0xd8ce('0x24')],'name':_0x3eb0ba[_0xd8ce('0x68')],'custom':_[_0xd8ce('0x69')](_0x3eb0ba[_0xd8ce('0x24')],_0xd8ce('0x6a'))?!![]:![],'options':_0x3eb0ba['type']['name']===_0xd8ce('0x6b')&&_0x3eb0ba[_0xd8ce('0x2a')][_0xd8ce('0x6c')][_0xd8ce('0x31')]>0x0?_[_0xd8ce('0x26')](_0x3eb0ba['type'][_0xd8ce('0x6c')],function(_0x1c5878){return{'name':_0x1c5878[_0xd8ce('0x68')],'value':_0x1c5878[_0xd8ce('0x6d')]};}):[]};})};}})[_0xd8ce('0x21')](respondWithResult(_0x4b0b67,null))[_0xd8ce('0x3b')](function(_0x36d712){console['log']('vTiger\x20error:\x20'+_0x36d712);var _0x2b5acc=_0x2d11ec[_0xd8ce('0x2f')][_0xd8ce('0x6e')]?0x1f4:_0x36d712['statusCode']||0x1f4;logger[_0xd8ce('0x22')](_0xd8ce('0x6f'),'getFields',_0x2b5acc,JSON['stringify'](_0x36d712));delete _0x36d712['name'];if(_0x2b5acc===0x191){_0x2b5acc=0x190;}_0x4b0b67[_0xd8ce('0x18')](_0x2b5acc)[_0xd8ce('0x70')](_0x2d11ec['query'][_0xd8ce('0x6e')]?{'message':_0xd8ce('0x71'),'statusCode':_0x36d712[_0xd8ce('0x72')]}:_0x36d712);});};
\ No newline at end of file
index 186d1f2..15cc0b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6caa=['./intVtigerAccount.attributes','define','VtigerAccount','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x483604,_0x3ab47f){var _0x13f3f0=function(_0x3451a3){while(--_0x3451a3){_0x483604['push'](_0x483604['shift']());}};_0x13f3f0(++_0x3ab47f);}(_0x6caa,0x133));var _0xa6ca=function(_0x174165,_0x490685){_0x174165=_0x174165-0x0;var _0x125f48=_0x6caa[_0x174165];return _0x125f48;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa6ca('0x0'))(_0xa6ca('0x1'));var moment=require(_0xa6ca('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa6ca('0x3'));var config=require(_0xa6ca('0x4'));var attributes=require(_0xa6ca('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x4658e1,_0x48bd6f){return _0x4658e1[_0xa6ca('0x6')](_0xa6ca('0x7'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x534c=['VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','define'];(function(_0x3f1b70,_0x52affe){var _0x373e90=function(_0x99c3d1){while(--_0x99c3d1){_0x3f1b70['push'](_0x3f1b70['shift']());}};_0x373e90(++_0x52affe);}(_0x534c,0x13a));var _0xc534=function(_0x4bef71,_0x548ba6){_0x4bef71=_0x4bef71-0x0;var _0x3f3792=_0x534c[_0x4bef71];return _0x3f3792;};'use strict';var _=require(_0xc534('0x0'));var util=require('util');var logger=require(_0xc534('0x1'))(_0xc534('0x2'));var moment=require(_0xc534('0x3'));var BPromise=require(_0xc534('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc534('0x5'));var rimraf=require(_0xc534('0x6'));var config=require(_0xc534('0x7'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0xc534('0x8'));module['exports']=function(_0x37ec43,_0x26dbcc){return _0x37ec43[_0xc534('0x9')](_0xc534('0xa'),attributes,{'tableName':_0xc534('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ceaab90..cbfa3ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','include','map','model','debug','catch','ShowVtigerAccount','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x25eda7,_0x2c5134){var _0x285a58=function(_0x297ad5){while(--_0x297ad5){_0x25eda7['push'](_0x25eda7['shift']());}};_0x285a58(++_0x2c5134);}(_0xb10b,0x12a));var _0xbb10=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0xb10b[_0xa79977];return _0x109f10;};'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,'limit':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['limit']||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x407cb4){return{'model':db[_0x407cb4[_0xbb10('0x1e')]],'as':_0x407cb4['as'],'attributes':_0x407cb4[_0xbb10('0x1b')],'include':_0x407cb4[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x407cb4[_0xbb10('0x1c')],function(_0x537898){return{'model':db[_0x537898['model']],'as':_0x537898['as'],'attributes':_0x537898['attributes'],'include':_0x537898[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x537898[_0xbb10('0x1c')],function(_0x4e25ff){return{'model':db[_0x4e25ff[_0xbb10('0x1e')]],'as':_0x4e25ff['as'],'attributes':_0x4e25ff[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x1d5e95){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')]('GetVtigerAccount',_0x378da8,JSON[_0xbb10('0x11')](_0x1d5e95));_0x575cca(_0x1d5e95);})[_0xbb10('0x20')](function(_0xfc3595){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0xfc3595[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4['error'](0x1f4,_0xfc3595[_0xbb10('0x13')]));});});};exports['ShowVtigerAccount']=function(_0x448d5c){var _0x56f2da=this;return new Promise(function(_0x16ad2a,_0x1dcc9c){return db[_0xbb10('0x16')]['find']({'raw':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1b')]||null:null,'include':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')]['include']?_[_0xbb10('0x1d')](_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x8c1ce6){return{'model':db[_0x8c1ce6[_0xbb10('0x1e')]],'as':_0x8c1ce6['as'],'attributes':_0x8c1ce6[_0xbb10('0x1b')],'include':_0x8c1ce6[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x8c1ce6[_0xbb10('0x1c')],function(_0x56943c){return{'model':db[_0x56943c[_0xbb10('0x1e')]],'as':_0x56943c['as'],'attributes':_0x56943c[_0xbb10('0x1b')],'include':_0x56943c[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x56943c['include'],function(_0x111762){return{'model':db[_0x111762['model']],'as':_0x111762['as'],'attributes':_0x111762['attributes']};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x40c164){logger[_0xbb10('0xd')](_0xbb10('0x21'),_0x448d5c);logger[_0xbb10('0x1f')](_0xbb10('0x21'),_0x448d5c,JSON['stringify'](_0x40c164));_0x16ad2a(_0x40c164);})[_0xbb10('0x20')](function(_0x25d72f){logger['error']('ShowVtigerAccount',_0x25d72f['message'],_0x448d5c);_0x1dcc9c(_0x56f2da[_0xbb10('0x12')](0x1f4,_0x25d72f[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x36ee=['message','info','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','include','map','model','find','ShowVtigerAccount','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x14cf90,_0x25d9fc){var _0x8cb8ea=function(_0x1ac83c){while(--_0x1ac83c){_0x14cf90['push'](_0x14cf90['shift']());}};_0x8cb8ea(++_0x25d9fc);}(_0x36ee,0xe8));var _0xe36e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x36ee[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe36e('0x0'));var BPromise=require('bluebird');var rs=require(_0xe36e('0x1'));var fs=require('fs');var Redis=require(_0xe36e('0x2'));var db=require(_0xe36e('0x3'))['db'];var utils=require(_0xe36e('0x4'));var logger=require(_0xe36e('0x5'))(_0xe36e('0x6'));var config=require(_0xe36e('0x7'));var jayson=require(_0xe36e('0x8'));var client=jayson[_0xe36e('0x9')][_0xe36e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21be0b,_0x1aa596,_0x51b4bd){return new BPromise(function(_0x74b4b7,_0x4aebdd){return client[_0xe36e('0xb')](_0x21be0b,_0x51b4bd)[_0xe36e('0xc')](function(_0x46f239){logger['info'](_0xe36e('0xd'),_0x1aa596,'request\x20sent');logger[_0xe36e('0xe')](_0xe36e('0xf'),_0x1aa596,_0xe36e('0x10'),JSON[_0xe36e('0x11')](_0x46f239));if(_0x46f239[_0xe36e('0x12')]){if(_0x46f239[_0xe36e('0x12')][_0xe36e('0x13')]===0x1f4){logger[_0xe36e('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x1aa596,_0x46f239[_0xe36e('0x12')][_0xe36e('0x14')]);return _0x4aebdd(_0x46f239[_0xe36e('0x12')][_0xe36e('0x14')]);}logger['error'](_0xe36e('0xd'),_0x1aa596,_0x46f239['error']['message']);return _0x74b4b7(_0x46f239[_0xe36e('0x12')][_0xe36e('0x14')]);}else{logger[_0xe36e('0x15')](_0xe36e('0xd'),_0x1aa596,_0xe36e('0x10'));_0x74b4b7(_0x46f239[_0xe36e('0x16')][_0xe36e('0x14')]);}})[_0xe36e('0x17')](function(_0x387c37){logger[_0xe36e('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x1aa596,_0x387c37);_0x4aebdd(_0x387c37);});});}exports[_0xe36e('0x18')]=function(_0x2184ae){var _0x56c019=this;return new Promise(function(_0x21d9a3,_0x533c06){return db[_0xe36e('0x19')][_0xe36e('0x1a')]({'raw':_0x2184ae['options']?_0x2184ae[_0xe36e('0x1b')][_0xe36e('0x1c')]===undefined?!![]:![]:!![],'where':_0x2184ae[_0xe36e('0x1b')]?_0x2184ae['options'][_0xe36e('0x1d')]||null:null,'attributes':_0x2184ae[_0xe36e('0x1b')]?_0x2184ae[_0xe36e('0x1b')][_0xe36e('0x1e')]||null:null,'limit':_0x2184ae[_0xe36e('0x1b')]?_0x2184ae[_0xe36e('0x1b')]['limit']||null:null,'include':_0x2184ae[_0xe36e('0x1b')]?_0x2184ae[_0xe36e('0x1b')][_0xe36e('0x1f')]?_[_0xe36e('0x20')](_0x2184ae[_0xe36e('0x1b')]['include'],function(_0x598a7a){return{'model':db[_0x598a7a[_0xe36e('0x21')]],'as':_0x598a7a['as'],'attributes':_0x598a7a[_0xe36e('0x1e')],'include':_0x598a7a[_0xe36e('0x1f')]?_[_0xe36e('0x20')](_0x598a7a[_0xe36e('0x1f')],function(_0x1507f9){return{'model':db[_0x1507f9[_0xe36e('0x21')]],'as':_0x1507f9['as'],'attributes':_0x1507f9['attributes'],'include':_0x1507f9[_0xe36e('0x1f')]?_[_0xe36e('0x20')](_0x1507f9[_0xe36e('0x1f')],function(_0x262caa){return{'model':db[_0x262caa['model']],'as':_0x262caa['as'],'attributes':_0x262caa[_0xe36e('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf7b02e){logger['info'](_0xe36e('0x18'),_0x2184ae);logger['debug'](_0xe36e('0x18'),_0x2184ae,JSON['stringify'](_0xf7b02e));_0x21d9a3(_0xf7b02e);})[_0xe36e('0x17')](function(_0x59548b){logger['error']('GetVtigerAccount',_0x59548b['message'],_0x2184ae);_0x533c06(_0x56c019[_0xe36e('0x12')](0x1f4,_0x59548b[_0xe36e('0x14')]));});});};exports['ShowVtigerAccount']=function(_0x4ac819){var _0x1fa1ec=this;return new Promise(function(_0xb8d44e,_0x259e19){return db[_0xe36e('0x19')][_0xe36e('0x22')]({'raw':_0x4ac819[_0xe36e('0x1b')]?_0x4ac819['options'][_0xe36e('0x1c')]===undefined?!![]:![]:!![],'where':_0x4ac819[_0xe36e('0x1b')]?_0x4ac819['options'][_0xe36e('0x1d')]||null:null,'attributes':_0x4ac819[_0xe36e('0x1b')]?_0x4ac819[_0xe36e('0x1b')][_0xe36e('0x1e')]||null:null,'include':_0x4ac819[_0xe36e('0x1b')]?_0x4ac819[_0xe36e('0x1b')][_0xe36e('0x1f')]?_[_0xe36e('0x20')](_0x4ac819[_0xe36e('0x1b')][_0xe36e('0x1f')],function(_0xf808f5){return{'model':db[_0xf808f5['model']],'as':_0xf808f5['as'],'attributes':_0xf808f5[_0xe36e('0x1e')],'include':_0xf808f5['include']?_['map'](_0xf808f5[_0xe36e('0x1f')],function(_0x4f620d){return{'model':db[_0x4f620d[_0xe36e('0x21')]],'as':_0x4f620d['as'],'attributes':_0x4f620d[_0xe36e('0x1e')],'include':_0x4f620d[_0xe36e('0x1f')]?_[_0xe36e('0x20')](_0x4f620d['include'],function(_0x56135c){return{'model':db[_0x56135c[_0xe36e('0x21')]],'as':_0x56135c['as'],'attributes':_0x56135c[_0xe36e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xe36e('0xc')](function(_0x243338){logger['info'](_0xe36e('0x23'),_0x4ac819);logger[_0xe36e('0xe')](_0xe36e('0x23'),_0x4ac819,JSON['stringify'](_0x243338));_0xb8d44e(_0x243338);})[_0xe36e('0x17')](function(_0x2ff8f4){logger['error'](_0xe36e('0x23'),_0x2ff8f4[_0xe36e('0x14')],_0x4ac819);_0x259e19(_0x1fa1ec[_0xe36e('0x12')](0x1f4,_0x2ff8f4[_0xe36e('0x14')]));});});};
\ No newline at end of file
index aa4d5fc..9a4a194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9b9=['post','put','update','delete','destroy','multer','util','connect-timeout','express','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','get','getDescriptions'];(function(_0x2d038a,_0x46c80e){var _0x43fff7=function(_0x524afd){while(--_0x524afd){_0x2d038a['push'](_0x2d038a['shift']());}};_0x43fff7(++_0x46c80e);}(_0xb9b9,0x17f));var _0x9b9b=function(_0x3486d8,_0x1268ac){_0x3486d8=_0x3486d8-0x0;var _0x3f6522=_0xb9b9[_0x3486d8];return _0x3f6522;};'use strict';var multer=require(_0x9b9b('0x0'));var util=require(_0x9b9b('0x1'));var path=require('path');var timeout=require(_0x9b9b('0x2'));var express=require(_0x9b9b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9b9b('0x4'));var config=require(_0x9b9b('0x5'));var controller=require('./intVtigerConfiguration.controller');router['get']('/',auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x7')]);router['get'](_0x9b9b('0x8'),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x9')]);router['get'](_0x9b9b('0xa'),auth['isAuthenticated'](),controller[_0x9b9b('0xb')]);router['get'](_0x9b9b('0xc'),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0xd')]);router[_0x9b9b('0xe')]('/:id/descriptions',auth[_0x9b9b('0x6')](),controller[_0x9b9b('0xf')]);router[_0x9b9b('0x10')]('/',auth[_0x9b9b('0x6')](),controller['create']);router[_0x9b9b('0x11')](_0x9b9b('0x8'),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x12')]);router[_0x9b9b('0x13')](_0x9b9b('0x8'),auth['isAuthenticated'](),controller[_0x9b9b('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xabf5=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','delete','destroy','exports'];(function(_0x59a9bd,_0x376f3a){var _0x452496=function(_0x43f822){while(--_0x43f822){_0x59a9bd['push'](_0x59a9bd['shift']());}};_0x452496(++_0x376f3a);}(_0xabf5,0x186));var _0x5abf=function(_0x3dbb6b,_0x5d0de7){_0x3dbb6b=_0x3dbb6b-0x0;var _0xf309e7=_0xabf5[_0x3dbb6b];return _0xf309e7;};'use strict';var multer=require(_0x5abf('0x0'));var util=require(_0x5abf('0x1'));var path=require(_0x5abf('0x2'));var timeout=require(_0x5abf('0x3'));var express=require('express');var router=express[_0x5abf('0x4')]();var fs_extra=require(_0x5abf('0x5'));var auth=require(_0x5abf('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5abf('0x7'));var controller=require(_0x5abf('0x8'));router[_0x5abf('0x9')]('/',auth[_0x5abf('0xa')](),controller[_0x5abf('0xb')]);router[_0x5abf('0x9')]('/:id',auth[_0x5abf('0xa')](),controller[_0x5abf('0xc')]);router[_0x5abf('0x9')](_0x5abf('0xd'),auth[_0x5abf('0xa')](),controller[_0x5abf('0xe')]);router[_0x5abf('0x9')](_0x5abf('0xf'),auth[_0x5abf('0xa')](),controller[_0x5abf('0x10')]);router[_0x5abf('0x9')](_0x5abf('0x11'),auth[_0x5abf('0xa')](),controller[_0x5abf('0x12')]);router[_0x5abf('0x13')]('/',auth[_0x5abf('0xa')](),controller[_0x5abf('0x14')]);router[_0x5abf('0x15')](_0x5abf('0x16'),auth[_0x5abf('0xa')](),controller['update']);router[_0x5abf('0x17')]('/:id',auth[_0x5abf('0xa')](),controller[_0x5abf('0x18')]);module[_0x5abf('0x19')]=router;
\ No newline at end of file
index 8f8f4b3..79b1e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64e7=['STRING','sequelize','exports'];(function(_0xd5010e,_0x4914f9){var _0x2f4ab3=function(_0x5bcfa7){while(--_0x5bcfa7){_0xd5010e['push'](_0xd5010e['shift']());}};_0x2f4ab3(++_0x4914f9);}(_0x64e7,0x190));var _0x764e=function(_0x1e188a,_0x5a8636){_0x1e188a=_0x1e188a-0x0;var _0x57586e=_0x64e7[_0x1e188a];return _0x57586e;};'use strict';var Sequelize=require(_0x764e('0x0'));module[_0x764e('0x1')]={'name':{'type':Sequelize[_0x764e('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfc73=['STRING','sequelize','exports'];(function(_0x208ff7,_0x12129a){var _0x266751=function(_0xc816a1){while(--_0xc816a1){_0x208ff7['push'](_0x208ff7['shift']());}};_0x266751(++_0x12129a);}(_0xfc73,0xee));var _0x3fc7=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xfc73[_0x243b59];return _0x3e1676;};'use strict';var Sequelize=require(_0x3fc7('0x0'));module[_0x3fc7('0x1')]={'name':{'type':Sequelize[_0x3fc7('0x2')]},'description':{'type':Sequelize[_0x3fc7('0x2')]}};
\ No newline at end of file
index c72b80a..77d34ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc173=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','end','error','stack','name','send','VtigerConfiguration','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','options','find','create','body','update','params','findOne','getFields','hasOwnProperty','getSubjects','VtigerField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox'];(function(_0x5be40e,_0x12997e){var _0x3db6e1=function(_0x3fa7c8){while(--_0x3fa7c8){_0x5be40e['push'](_0x5be40e['shift']());}};_0x3db6e1(++_0x12997e);}(_0xc173,0x9b));var _0x3c17=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc173[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x3c17('0x0'));var rimraf=require(_0x3c17('0x1'));var zipdir=require(_0x3c17('0x2'));var jsonpatch=require(_0x3c17('0x3'));var rp=require(_0x3c17('0x4'));var moment=require('moment');var BPromise=require(_0x3c17('0x5'));var Mustache=require(_0x3c17('0x6'));var util=require('util');var path=require(_0x3c17('0x7'));var sox=require(_0x3c17('0x8'));var csv=require(_0x3c17('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3c17('0xa'));var _=require(_0x3c17('0xb'));var squel=require(_0x3c17('0xc'));var crypto=require(_0x3c17('0xd'));var jsforce=require(_0x3c17('0xe'));var deskjs=require(_0x3c17('0xf'));var toCsv=require(_0x3c17('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3c17('0x10'));var authService=require(_0x3c17('0x11'));var qs=require(_0x3c17('0x12'));var as=require(_0x3c17('0x13'));var hardwareService=require(_0x3c17('0x14'));var logger=require(_0x3c17('0x15'))('api');var utils=require(_0x3c17('0x16'));var config=require(_0x3c17('0x17'));var licenseUtil=require(_0x3c17('0x18'));var db=require(_0x3c17('0x19'))['db'];function respondWithStatusCode(_0xc2294,_0xe40168){_0xe40168=_0xe40168||0xcc;return function(_0x4db3db){if(_0x4db3db){return _0xc2294['sendStatus'](_0xe40168);}return _0xc2294[_0x3c17('0x1a')](_0xe40168)['end']();};}function respondWithResult(_0x492096,_0x148700){_0x148700=_0x148700||0xc8;return function(_0xcf43b3){if(_0xcf43b3){return _0x492096['status'](_0x148700)['json'](_0xcf43b3);}};}function respondWithFilteredResult(_0x7f74f,_0x4a1854){return function(_0x568ccb){if(_0x568ccb){var _0x11f456=typeof _0x4a1854[_0x3c17('0x1b')]===_0x3c17('0x1c')&&typeof _0x4a1854[_0x3c17('0x1d')]===_0x3c17('0x1c');var _0x4dfbb1=_0x568ccb[_0x3c17('0x1e')];var _0x1c8494=_0x11f456?0x0:_0x4a1854['offset'];var _0x4bbf9c=_0x11f456?_0x568ccb[_0x3c17('0x1e')]:_0x4a1854[_0x3c17('0x1b')]+_0x4a1854['limit'];var _0x3b2e56;if(_0x4bbf9c>=_0x4dfbb1){_0x4bbf9c=_0x4dfbb1;_0x3b2e56=0xc8;}else{_0x3b2e56=0xce;}_0x7f74f[_0x3c17('0x1a')](_0x3b2e56);return _0x7f74f[_0x3c17('0x1f')](_0x3c17('0x20'),_0x1c8494+'-'+_0x4bbf9c+'/'+_0x4dfbb1)[_0x3c17('0x21')](_0x568ccb);}return null;};}function patchUpdates(_0x892e05){return function(_0x2a0836){try{jsonpatch[_0x3c17('0x22')](_0x2a0836,_0x892e05,!![]);}catch(_0x472ab8){return BPromise[_0x3c17('0x23')](_0x472ab8);}return _0x2a0836['save']();};}function saveUpdates(_0x4a4c68,_0x557e77){return function(_0x66b766){if(_0x66b766){return _0x66b766['update'](_0x4a4c68)[_0x3c17('0x24')](function(_0xbacba4){return _0xbacba4;});}return null;};}function removeEntity(_0x51285b,_0x5096b1){return function(_0x3110ab){if(_0x3110ab){return _0x3110ab[_0x3c17('0x25')]()[_0x3c17('0x24')](function(){_0x51285b[_0x3c17('0x1a')](0xcc)[_0x3c17('0x26')]();});}};}function handleEntityNotFound(_0xe169a5,_0x67c1e2){return function(_0x52cf71){if(!_0x52cf71){_0xe169a5['sendStatus'](0x194);}return _0x52cf71;};}function handleError(_0x12cd49,_0x2783e6){_0x2783e6=_0x2783e6||0x1f4;return function(_0x1111f5){logger[_0x3c17('0x27')](_0x1111f5[_0x3c17('0x28')]);if(_0x1111f5[_0x3c17('0x29')]){delete _0x1111f5[_0x3c17('0x29')];}_0x12cd49[_0x3c17('0x1a')](_0x2783e6)[_0x3c17('0x2a')](_0x1111f5);};}exports['index']=function(_0x595dd5,_0x5747a4){var _0x180100={},_0x2e923d={},_0x1fcc0a={'count':0x0,'rows':[]};var _0x1ce443=_['map'](db[_0x3c17('0x2b')][_0x3c17('0x2c')],function(_0x34e8de){return{'name':_0x34e8de[_0x3c17('0x2d')],'type':_0x34e8de[_0x3c17('0x2e')]['key']};});_0x2e923d[_0x3c17('0x2f')]=_[_0x3c17('0x30')](_0x1ce443,_0x3c17('0x29'));_0x2e923d['query']=_[_0x3c17('0x31')](_0x595dd5[_0x3c17('0x32')]);_0x2e923d[_0x3c17('0x33')]=_['intersection'](_0x2e923d[_0x3c17('0x2f')],_0x2e923d[_0x3c17('0x32')]);_0x180100[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x2e923d[_0x3c17('0x2f')],qs[_0x3c17('0x36')](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x36')]));_0x180100[_0x3c17('0x34')]=_0x180100[_0x3c17('0x34')][_0x3c17('0x37')]?_0x180100[_0x3c17('0x34')]:_0x2e923d[_0x3c17('0x2f')];if(!_0x595dd5['query']['hasOwnProperty'](_0x3c17('0x38'))){_0x180100['limit']=qs['limit'](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x1d')]);_0x180100[_0x3c17('0x1b')]=qs[_0x3c17('0x1b')](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x1b')]);}_0x180100[_0x3c17('0x39')]=qs['sort'](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x3a')]);_0x180100['where']=qs[_0x3c17('0x33')](_[_0x3c17('0x3b')](_0x595dd5[_0x3c17('0x32')],_0x2e923d[_0x3c17('0x33')]),_0x1ce443);if(_0x595dd5[_0x3c17('0x32')]['filter']){_0x180100[_0x3c17('0x3c')]=_[_0x3c17('0x3d')](_0x180100['where'],{'$or':_[_0x3c17('0x30')](_0x1ce443,function(_0xc06b8c){if(_0xc06b8c['type']!==_0x3c17('0x3e')){var _0x42da22={};_0x42da22[_0xc06b8c[_0x3c17('0x29')]]={'$like':'%'+_0x595dd5[_0x3c17('0x32')][_0x3c17('0x3f')]+'%'};return _0x42da22;}})});}_0x180100=_[_0x3c17('0x3d')]({},_0x180100,_0x595dd5['options']);var _0x121aa8={'where':_0x180100[_0x3c17('0x3c')]};return db[_0x3c17('0x2b')][_0x3c17('0x1e')](_0x121aa8)['then'](function(_0x283f9e){_0x1fcc0a[_0x3c17('0x1e')]=_0x283f9e;if(_0x595dd5[_0x3c17('0x32')][_0x3c17('0x40')]){_0x180100[_0x3c17('0x41')]=[{'all':!![]}];}return db[_0x3c17('0x2b')][_0x3c17('0x42')](_0x180100);})[_0x3c17('0x24')](function(_0x22f27d){_0x1fcc0a[_0x3c17('0x43')]=_0x22f27d;return _0x1fcc0a;})['then'](respondWithFilteredResult(_0x5747a4,_0x180100))[_0x3c17('0x44')](handleError(_0x5747a4,null));};exports[_0x3c17('0x45')]=function(_0x555d65,_0x1f2618){var _0x5781b8={'raw':![],'where':{'id':_0x555d65['params']['id']}},_0x5a014d={};_0x5a014d['model']=_[_0x3c17('0x31')](db[_0x3c17('0x2b')][_0x3c17('0x2c')]);_0x5a014d[_0x3c17('0x32')]=_['keys'](_0x555d65[_0x3c17('0x32')]);_0x5a014d[_0x3c17('0x33')]=_[_0x3c17('0x35')](_0x5a014d[_0x3c17('0x2f')],_0x5a014d[_0x3c17('0x32')]);_0x5781b8[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x5a014d[_0x3c17('0x2f')],qs['fields'](_0x555d65[_0x3c17('0x32')][_0x3c17('0x36')]));_0x5781b8[_0x3c17('0x34')]=_0x5781b8[_0x3c17('0x34')][_0x3c17('0x37')]?_0x5781b8['attributes']:_0x5a014d[_0x3c17('0x2f')];if(_0x555d65['query'][_0x3c17('0x40')]){_0x5781b8[_0x3c17('0x41')]=[{'all':!![]}];}_0x5781b8=_[_0x3c17('0x3d')]({},_0x5781b8,_0x555d65[_0x3c17('0x46')]);return db['VtigerConfiguration'][_0x3c17('0x47')](_0x5781b8)[_0x3c17('0x24')](handleEntityNotFound(_0x1f2618,null))[_0x3c17('0x24')](respondWithResult(_0x1f2618,null))[_0x3c17('0x44')](handleError(_0x1f2618,null));};exports['create']=function(_0x3c8c5b,_0x33acc6){return db[_0x3c17('0x2b')][_0x3c17('0x48')](_0x3c8c5b[_0x3c17('0x49')],{})['then'](respondWithResult(_0x33acc6,0xc9))['catch'](handleError(_0x33acc6,null));};exports[_0x3c17('0x4a')]=function(_0x3e6e5a,_0x1b09de){if(_0x3e6e5a[_0x3c17('0x49')]['id']){delete _0x3e6e5a[_0x3c17('0x49')]['id'];}return db['VtigerConfiguration'][_0x3c17('0x47')]({'where':{'id':_0x3e6e5a[_0x3c17('0x4b')]['id']}})[_0x3c17('0x24')](handleEntityNotFound(_0x1b09de,null))[_0x3c17('0x24')](saveUpdates(_0x3e6e5a[_0x3c17('0x49')],null))[_0x3c17('0x24')](respondWithResult(_0x1b09de,null))[_0x3c17('0x44')](handleError(_0x1b09de,null));};exports[_0x3c17('0x25')]=function(_0x2f4000,_0x4cb2f5){return db[_0x3c17('0x2b')][_0x3c17('0x47')]({'where':{'id':_0x2f4000['params']['id']}})[_0x3c17('0x24')](handleEntityNotFound(_0x4cb2f5,null))['then'](removeEntity(_0x4cb2f5,null))[_0x3c17('0x44')](handleError(_0x4cb2f5,null));};exports['getFields']=function(_0x387a7b,_0x3385af,_0x3b5c22){var _0x25d753={};var _0x20c38c={};var _0x12ad5c;var _0x4e0f45;return db[_0x3c17('0x2b')][_0x3c17('0x4c')]({'where':{'id':_0x387a7b['params']['id']}})['then'](handleEntityNotFound(_0x3385af,null))[_0x3c17('0x24')](function(_0x173957){if(_0x173957){_0x12ad5c=_0x173957;_0x20c38c['model']=_[_0x3c17('0x31')](db['VtigerField']['rawAttributes']);_0x20c38c[_0x3c17('0x32')]=_[_0x3c17('0x31')](_0x387a7b[_0x3c17('0x32')]);_0x20c38c[_0x3c17('0x33')]=_[_0x3c17('0x35')](_0x20c38c[_0x3c17('0x2f')],_0x20c38c[_0x3c17('0x32')]);_0x25d753[_0x3c17('0x34')]=_['intersection'](_0x20c38c['model'],qs['fields'](_0x387a7b[_0x3c17('0x32')]['fields']));_0x25d753['attributes']=_0x25d753['attributes'][_0x3c17('0x37')]?_0x25d753[_0x3c17('0x34')]:_0x20c38c['model'];_0x25d753[_0x3c17('0x39')]=qs[_0x3c17('0x3a')](_0x387a7b['query'][_0x3c17('0x3a')]);_0x25d753[_0x3c17('0x3c')]=qs[_0x3c17('0x33')](_[_0x3c17('0x3b')](_0x387a7b[_0x3c17('0x32')],_0x20c38c[_0x3c17('0x33')]));if(_0x387a7b[_0x3c17('0x32')][_0x3c17('0x3f')]){_0x25d753['where']=_[_0x3c17('0x3d')](_0x25d753['where'],{'$or':_[_0x3c17('0x30')](_0x25d753[_0x3c17('0x34')],function(_0x3542de){var _0x5bf33b={};_0x5bf33b[_0x3542de]={'$like':'%'+_0x387a7b['query'][_0x3c17('0x3f')]+'%'};return _0x5bf33b;})});}_0x25d753=_[_0x3c17('0x3d')]({},_0x25d753,_0x387a7b['options']);return _0x12ad5c[_0x3c17('0x4d')](_0x25d753);}})['then'](function(_0x4ea741){if(_0x4ea741){_0x4e0f45=_0x4ea741[_0x3c17('0x37')];if(!_0x387a7b[_0x3c17('0x32')][_0x3c17('0x4e')](_0x3c17('0x38'))){_0x25d753[_0x3c17('0x1d')]=qs[_0x3c17('0x1d')](_0x387a7b[_0x3c17('0x32')]['limit']);_0x25d753[_0x3c17('0x1b')]=qs[_0x3c17('0x1b')](_0x387a7b[_0x3c17('0x32')][_0x3c17('0x1b')]);}return _0x12ad5c[_0x3c17('0x4d')](_0x25d753);}})[_0x3c17('0x24')](function(_0x397947){if(_0x397947){return _0x397947?{'count':_0x4e0f45,'rows':_0x397947}:null;}})[_0x3c17('0x24')](respondWithResult(_0x3385af,null))[_0x3c17('0x44')](handleError(_0x3385af,null));};exports[_0x3c17('0x4f')]=function(_0x557a77,_0x3ec7b5,_0x391efb){var _0x14a9b2={};var _0x374579={};var _0x3a6a20;var _0x5e805a;return db[_0x3c17('0x2b')][_0x3c17('0x4c')]({'where':{'id':_0x557a77[_0x3c17('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3ec7b5,null))['then'](function(_0x1c9dc3){if(_0x1c9dc3){_0x3a6a20=_0x1c9dc3;_0x374579['model']=_[_0x3c17('0x31')](db[_0x3c17('0x50')]['rawAttributes']);_0x374579[_0x3c17('0x32')]=_['keys'](_0x557a77[_0x3c17('0x32')]);_0x374579['filters']=_[_0x3c17('0x35')](_0x374579['model'],_0x374579['query']);_0x14a9b2[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x374579[_0x3c17('0x2f')],qs[_0x3c17('0x36')](_0x557a77[_0x3c17('0x32')][_0x3c17('0x36')]));_0x14a9b2[_0x3c17('0x34')]=_0x14a9b2[_0x3c17('0x34')]['length']?_0x14a9b2[_0x3c17('0x34')]:_0x374579[_0x3c17('0x2f')];_0x14a9b2[_0x3c17('0x39')]=qs[_0x3c17('0x3a')](_0x557a77[_0x3c17('0x32')]['sort']);_0x14a9b2[_0x3c17('0x3c')]=qs[_0x3c17('0x33')](_[_0x3c17('0x3b')](_0x557a77[_0x3c17('0x32')],_0x374579[_0x3c17('0x33')]));if(_0x557a77['query'][_0x3c17('0x3f')]){_0x14a9b2[_0x3c17('0x3c')]=_[_0x3c17('0x3d')](_0x14a9b2['where'],{'$or':_['map'](_0x14a9b2['attributes'],function(_0x12a5a3){var _0x3c93da={};_0x3c93da[_0x12a5a3]={'$like':'%'+_0x557a77['query'][_0x3c17('0x3f')]+'%'};return _0x3c93da;})});}_0x14a9b2=_[_0x3c17('0x3d')]({},_0x14a9b2,_0x557a77[_0x3c17('0x46')]);return _0x3a6a20[_0x3c17('0x4f')](_0x14a9b2);}})[_0x3c17('0x24')](function(_0x2e395c){if(_0x2e395c){_0x5e805a=_0x2e395c[_0x3c17('0x37')];if(!_0x557a77['query'][_0x3c17('0x4e')](_0x3c17('0x38'))){_0x14a9b2[_0x3c17('0x1d')]=qs['limit'](_0x557a77[_0x3c17('0x32')][_0x3c17('0x1d')]);_0x14a9b2['offset']=qs[_0x3c17('0x1b')](_0x557a77['query'][_0x3c17('0x1b')]);}return _0x3a6a20['getSubjects'](_0x14a9b2);}})[_0x3c17('0x24')](function(_0x35bd85){if(_0x35bd85){return _0x35bd85?{'count':_0x5e805a,'rows':_0x35bd85}:null;}})[_0x3c17('0x24')](respondWithResult(_0x3ec7b5,null))[_0x3c17('0x44')](handleError(_0x3ec7b5,null));};exports[_0x3c17('0x51')]=function(_0x31e870,_0x5d6ee5,_0x53b5ac){var _0x2fdf2a={};var _0x1e8b3a={};var _0x39cc32;var _0x2f55e9;return db[_0x3c17('0x2b')][_0x3c17('0x4c')]({'where':{'id':_0x31e870[_0x3c17('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5d6ee5,null))[_0x3c17('0x24')](function(_0x54b1ce){if(_0x54b1ce){_0x39cc32=_0x54b1ce;_0x1e8b3a[_0x3c17('0x2f')]=_[_0x3c17('0x31')](db[_0x3c17('0x50')][_0x3c17('0x2c')]);_0x1e8b3a[_0x3c17('0x32')]=_[_0x3c17('0x31')](_0x31e870[_0x3c17('0x32')]);_0x1e8b3a['filters']=_[_0x3c17('0x35')](_0x1e8b3a[_0x3c17('0x2f')],_0x1e8b3a[_0x3c17('0x32')]);_0x2fdf2a[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x1e8b3a[_0x3c17('0x2f')],qs[_0x3c17('0x36')](_0x31e870[_0x3c17('0x32')][_0x3c17('0x36')]));_0x2fdf2a['attributes']=_0x2fdf2a[_0x3c17('0x34')][_0x3c17('0x37')]?_0x2fdf2a[_0x3c17('0x34')]:_0x1e8b3a[_0x3c17('0x2f')];_0x2fdf2a['order']=qs[_0x3c17('0x3a')](_0x31e870[_0x3c17('0x32')][_0x3c17('0x3a')]);_0x2fdf2a[_0x3c17('0x3c')]=qs['filters'](_['pick'](_0x31e870[_0x3c17('0x32')],_0x1e8b3a[_0x3c17('0x33')]));if(_0x31e870['query'][_0x3c17('0x3f')]){_0x2fdf2a[_0x3c17('0x3c')]=_[_0x3c17('0x3d')](_0x2fdf2a['where'],{'$or':_[_0x3c17('0x30')](_0x2fdf2a[_0x3c17('0x34')],function(_0x72d7c){var _0x4f51ee={};_0x4f51ee[_0x72d7c]={'$like':'%'+_0x31e870['query']['filter']+'%'};return _0x4f51ee;})});}_0x2fdf2a=_[_0x3c17('0x3d')]({},_0x2fdf2a,_0x31e870[_0x3c17('0x46')]);return _0x39cc32[_0x3c17('0x51')](_0x2fdf2a);}})[_0x3c17('0x24')](function(_0x41b3c3){if(_0x41b3c3){_0x2f55e9=_0x41b3c3[_0x3c17('0x37')];if(!_0x31e870[_0x3c17('0x32')][_0x3c17('0x4e')](_0x3c17('0x38'))){_0x2fdf2a['limit']=qs[_0x3c17('0x1d')](_0x31e870['query'][_0x3c17('0x1d')]);_0x2fdf2a[_0x3c17('0x1b')]=qs[_0x3c17('0x1b')](_0x31e870['query'][_0x3c17('0x1b')]);}return _0x39cc32[_0x3c17('0x51')](_0x2fdf2a);}})[_0x3c17('0x24')](function(_0x444eb3){if(_0x444eb3){return _0x444eb3?{'count':_0x2f55e9,'rows':_0x444eb3}:null;}})[_0x3c17('0x24')](respondWithResult(_0x5d6ee5,null))[_0x3c17('0x44')](handleError(_0x5d6ee5,null));};
\ No newline at end of file
+var _0x1802=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','stack','name','send','index','VtigerConfiguration','rawAttributes','fieldName','type','model','map','keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','include','catch','show','params','includeAll','options','find','create','body','getFields','findOne','VtigerField','hasOwnProperty','getSubjects','getDescriptions','zip-dir'];(function(_0x4d3b24,_0x32d325){var _0x45eab1=function(_0x479e53){while(--_0x479e53){_0x4d3b24['push'](_0x4d3b24['shift']());}};_0x45eab1(++_0x32d325);}(_0x1802,0x9b));var _0x2180=function(_0x334629,_0x3e0a25){_0x334629=_0x334629-0x0;var _0x6d4bc1=_0x1802[_0x334629];return _0x6d4bc1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2180('0x0'));var jsonpatch=require(_0x2180('0x1'));var rp=require(_0x2180('0x2'));var moment=require(_0x2180('0x3'));var BPromise=require(_0x2180('0x4'));var Mustache=require(_0x2180('0x5'));var util=require(_0x2180('0x6'));var path=require(_0x2180('0x7'));var sox=require(_0x2180('0x8'));var csv=require(_0x2180('0x9'));var ejs=require(_0x2180('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2180('0xb'));var squel=require(_0x2180('0xc'));var crypto=require(_0x2180('0xd'));var jsforce=require(_0x2180('0xe'));var deskjs=require(_0x2180('0xf'));var toCsv=require(_0x2180('0x9'));var querystring=require(_0x2180('0x10'));var Papa=require(_0x2180('0x11'));var Redis=require('ioredis');var authService=require(_0x2180('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2180('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2180('0x14'))('api');var utils=require(_0x2180('0x15'));var config=require(_0x2180('0x16'));var licenseUtil=require(_0x2180('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x36aa16,_0x19cc5f){_0x19cc5f=_0x19cc5f||0xcc;return function(_0x54f941){if(_0x54f941){return _0x36aa16[_0x2180('0x18')](_0x19cc5f);}return _0x36aa16[_0x2180('0x19')](_0x19cc5f)[_0x2180('0x1a')]();};}function respondWithResult(_0x39b1d5,_0x34e13f){_0x34e13f=_0x34e13f||0xc8;return function(_0x32bd5c){if(_0x32bd5c){return _0x39b1d5[_0x2180('0x19')](_0x34e13f)[_0x2180('0x1b')](_0x32bd5c);}};}function respondWithFilteredResult(_0x52df41,_0x2a29da){return function(_0x4adb2f){if(_0x4adb2f){var _0x1e881b=typeof _0x2a29da[_0x2180('0x1c')]===_0x2180('0x1d')&&typeof _0x2a29da[_0x2180('0x1e')]===_0x2180('0x1d');var _0x4beac4=_0x4adb2f[_0x2180('0x1f')];var _0x2d040f=_0x1e881b?0x0:_0x2a29da['offset'];var _0x2e51c7=_0x1e881b?_0x4adb2f[_0x2180('0x1f')]:_0x2a29da[_0x2180('0x1c')]+_0x2a29da['limit'];var _0x174592;if(_0x2e51c7>=_0x4beac4){_0x2e51c7=_0x4beac4;_0x174592=0xc8;}else{_0x174592=0xce;}_0x52df41['status'](_0x174592);return _0x52df41[_0x2180('0x20')]('Content-Range',_0x2d040f+'-'+_0x2e51c7+'/'+_0x4beac4)['json'](_0x4adb2f);}return null;};}function patchUpdates(_0xd3cd94){return function(_0x210bd6){try{jsonpatch[_0x2180('0x21')](_0x210bd6,_0xd3cd94,!![]);}catch(_0x578731){return BPromise[_0x2180('0x22')](_0x578731);}return _0x210bd6[_0x2180('0x23')]();};}function saveUpdates(_0x459ad5,_0xf9d5ec){return function(_0x47ce84){if(_0x47ce84){return _0x47ce84['update'](_0x459ad5)[_0x2180('0x24')](function(_0x5c8434){return _0x5c8434;});}return null;};}function removeEntity(_0x573477,_0x51c9a6){return function(_0x3a903f){if(_0x3a903f){return _0x3a903f[_0x2180('0x25')]()[_0x2180('0x24')](function(){_0x573477[_0x2180('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x34f69a,_0x1faa1f){return function(_0x2adb7f){if(!_0x2adb7f){_0x34f69a[_0x2180('0x18')](0x194);}return _0x2adb7f;};}function handleError(_0x2befe6,_0x1c80f3){_0x1c80f3=_0x1c80f3||0x1f4;return function(_0x3d75fb){logger['error'](_0x3d75fb[_0x2180('0x26')]);if(_0x3d75fb[_0x2180('0x27')]){delete _0x3d75fb['name'];}_0x2befe6[_0x2180('0x19')](_0x1c80f3)[_0x2180('0x28')](_0x3d75fb);};}exports[_0x2180('0x29')]=function(_0x142b48,_0x5cf625){var _0x2c7e46={},_0x354a57={},_0x2fa0ec={'count':0x0,'rows':[]};var _0x4300b4=_['map'](db[_0x2180('0x2a')][_0x2180('0x2b')],function(_0x5c0d7c){return{'name':_0x5c0d7c[_0x2180('0x2c')],'type':_0x5c0d7c[_0x2180('0x2d')]['key']};});_0x354a57[_0x2180('0x2e')]=_[_0x2180('0x2f')](_0x4300b4,'name');_0x354a57['query']=_[_0x2180('0x30')](_0x142b48[_0x2180('0x31')]);_0x354a57['filters']=_[_0x2180('0x32')](_0x354a57[_0x2180('0x2e')],_0x354a57['query']);_0x2c7e46['attributes']=_[_0x2180('0x32')](_0x354a57[_0x2180('0x2e')],qs[_0x2180('0x33')](_0x142b48[_0x2180('0x31')][_0x2180('0x33')]));_0x2c7e46[_0x2180('0x34')]=_0x2c7e46[_0x2180('0x34')][_0x2180('0x35')]?_0x2c7e46[_0x2180('0x34')]:_0x354a57[_0x2180('0x2e')];if(!_0x142b48[_0x2180('0x31')]['hasOwnProperty'](_0x2180('0x36'))){_0x2c7e46[_0x2180('0x1e')]=qs[_0x2180('0x1e')](_0x142b48[_0x2180('0x31')][_0x2180('0x1e')]);_0x2c7e46[_0x2180('0x1c')]=qs[_0x2180('0x1c')](_0x142b48[_0x2180('0x31')]['offset']);}_0x2c7e46[_0x2180('0x37')]=qs[_0x2180('0x38')](_0x142b48[_0x2180('0x31')]['sort']);_0x2c7e46[_0x2180('0x39')]=qs[_0x2180('0x3a')](_[_0x2180('0x3b')](_0x142b48[_0x2180('0x31')],_0x354a57[_0x2180('0x3a')]),_0x4300b4);if(_0x142b48[_0x2180('0x31')][_0x2180('0x3c')]){_0x2c7e46['where']=_[_0x2180('0x3d')](_0x2c7e46[_0x2180('0x39')],{'$or':_['map'](_0x4300b4,function(_0x38fc99){if(_0x38fc99[_0x2180('0x2d')]!==_0x2180('0x3e')){var _0x2e21e2={};_0x2e21e2[_0x38fc99[_0x2180('0x27')]]={'$like':'%'+_0x142b48[_0x2180('0x31')][_0x2180('0x3c')]+'%'};return _0x2e21e2;}})});}_0x2c7e46=_[_0x2180('0x3d')]({},_0x2c7e46,_0x142b48['options']);var _0x4133f9={'where':_0x2c7e46[_0x2180('0x39')]};return db['VtigerConfiguration'][_0x2180('0x1f')](_0x4133f9)[_0x2180('0x24')](function(_0x303e50){_0x2fa0ec[_0x2180('0x1f')]=_0x303e50;if(_0x142b48[_0x2180('0x31')]['includeAll']){_0x2c7e46[_0x2180('0x3f')]=[{'all':!![]}];}return db[_0x2180('0x2a')]['findAll'](_0x2c7e46);})[_0x2180('0x24')](function(_0x2782e9){_0x2fa0ec['rows']=_0x2782e9;return _0x2fa0ec;})[_0x2180('0x24')](respondWithFilteredResult(_0x5cf625,_0x2c7e46))[_0x2180('0x40')](handleError(_0x5cf625,null));};exports[_0x2180('0x41')]=function(_0x305b2e,_0x3b8fce){var _0xc4c684={'raw':![],'where':{'id':_0x305b2e[_0x2180('0x42')]['id']}},_0x4033ab={};_0x4033ab[_0x2180('0x2e')]=_['keys'](db[_0x2180('0x2a')]['rawAttributes']);_0x4033ab[_0x2180('0x31')]=_[_0x2180('0x30')](_0x305b2e[_0x2180('0x31')]);_0x4033ab[_0x2180('0x3a')]=_[_0x2180('0x32')](_0x4033ab['model'],_0x4033ab[_0x2180('0x31')]);_0xc4c684[_0x2180('0x34')]=_[_0x2180('0x32')](_0x4033ab[_0x2180('0x2e')],qs[_0x2180('0x33')](_0x305b2e[_0x2180('0x31')][_0x2180('0x33')]));_0xc4c684['attributes']=_0xc4c684['attributes'][_0x2180('0x35')]?_0xc4c684[_0x2180('0x34')]:_0x4033ab['model'];if(_0x305b2e['query'][_0x2180('0x43')]){_0xc4c684[_0x2180('0x3f')]=[{'all':!![]}];}_0xc4c684=_[_0x2180('0x3d')]({},_0xc4c684,_0x305b2e[_0x2180('0x44')]);return db['VtigerConfiguration'][_0x2180('0x45')](_0xc4c684)['then'](handleEntityNotFound(_0x3b8fce,null))[_0x2180('0x24')](respondWithResult(_0x3b8fce,null))['catch'](handleError(_0x3b8fce,null));};exports[_0x2180('0x46')]=function(_0x51a45a,_0x51be1d){return db['VtigerConfiguration'][_0x2180('0x46')](_0x51a45a[_0x2180('0x47')],{})[_0x2180('0x24')](respondWithResult(_0x51be1d,0xc9))[_0x2180('0x40')](handleError(_0x51be1d,null));};exports['update']=function(_0x4315f0,_0x5d8a75){if(_0x4315f0[_0x2180('0x47')]['id']){delete _0x4315f0[_0x2180('0x47')]['id'];}return db[_0x2180('0x2a')][_0x2180('0x45')]({'where':{'id':_0x4315f0[_0x2180('0x42')]['id']}})['then'](handleEntityNotFound(_0x5d8a75,null))[_0x2180('0x24')](saveUpdates(_0x4315f0['body'],null))[_0x2180('0x24')](respondWithResult(_0x5d8a75,null))['catch'](handleError(_0x5d8a75,null));};exports['destroy']=function(_0x134744,_0x24c3e3){return db[_0x2180('0x2a')][_0x2180('0x45')]({'where':{'id':_0x134744[_0x2180('0x42')]['id']}})[_0x2180('0x24')](handleEntityNotFound(_0x24c3e3,null))[_0x2180('0x24')](removeEntity(_0x24c3e3,null))['catch'](handleError(_0x24c3e3,null));};exports[_0x2180('0x48')]=function(_0x1fe1bb,_0x3a7790,_0x53b043){var _0x2c28b7={};var _0x31f9c8={};var _0x218964;var _0xd1dab4;return db[_0x2180('0x2a')][_0x2180('0x49')]({'where':{'id':_0x1fe1bb[_0x2180('0x42')]['id']}})[_0x2180('0x24')](handleEntityNotFound(_0x3a7790,null))[_0x2180('0x24')](function(_0x2be6de){if(_0x2be6de){_0x218964=_0x2be6de;_0x31f9c8[_0x2180('0x2e')]=_[_0x2180('0x30')](db[_0x2180('0x4a')][_0x2180('0x2b')]);_0x31f9c8['query']=_['keys'](_0x1fe1bb['query']);_0x31f9c8[_0x2180('0x3a')]=_['intersection'](_0x31f9c8[_0x2180('0x2e')],_0x31f9c8[_0x2180('0x31')]);_0x2c28b7['attributes']=_[_0x2180('0x32')](_0x31f9c8['model'],qs['fields'](_0x1fe1bb[_0x2180('0x31')][_0x2180('0x33')]));_0x2c28b7[_0x2180('0x34')]=_0x2c28b7[_0x2180('0x34')][_0x2180('0x35')]?_0x2c28b7['attributes']:_0x31f9c8[_0x2180('0x2e')];_0x2c28b7['order']=qs[_0x2180('0x38')](_0x1fe1bb['query'][_0x2180('0x38')]);_0x2c28b7['where']=qs[_0x2180('0x3a')](_[_0x2180('0x3b')](_0x1fe1bb[_0x2180('0x31')],_0x31f9c8['filters']));if(_0x1fe1bb[_0x2180('0x31')][_0x2180('0x3c')]){_0x2c28b7[_0x2180('0x39')]=_['merge'](_0x2c28b7[_0x2180('0x39')],{'$or':_[_0x2180('0x2f')](_0x2c28b7[_0x2180('0x34')],function(_0x3af287){var _0x4d19f6={};_0x4d19f6[_0x3af287]={'$like':'%'+_0x1fe1bb[_0x2180('0x31')][_0x2180('0x3c')]+'%'};return _0x4d19f6;})});}_0x2c28b7=_['merge']({},_0x2c28b7,_0x1fe1bb['options']);return _0x218964[_0x2180('0x48')](_0x2c28b7);}})[_0x2180('0x24')](function(_0x51b18d){if(_0x51b18d){_0xd1dab4=_0x51b18d[_0x2180('0x35')];if(!_0x1fe1bb[_0x2180('0x31')][_0x2180('0x4b')](_0x2180('0x36'))){_0x2c28b7[_0x2180('0x1e')]=qs[_0x2180('0x1e')](_0x1fe1bb[_0x2180('0x31')]['limit']);_0x2c28b7['offset']=qs[_0x2180('0x1c')](_0x1fe1bb[_0x2180('0x31')][_0x2180('0x1c')]);}return _0x218964[_0x2180('0x48')](_0x2c28b7);}})[_0x2180('0x24')](function(_0x370187){if(_0x370187){return _0x370187?{'count':_0xd1dab4,'rows':_0x370187}:null;}})['then'](respondWithResult(_0x3a7790,null))[_0x2180('0x40')](handleError(_0x3a7790,null));};exports[_0x2180('0x4c')]=function(_0x4839c5,_0x52d9c2,_0x36eab1){var _0x370e70={};var _0x5671a2={};var _0x11317f;var _0x2aa044;return db['VtigerConfiguration'][_0x2180('0x49')]({'where':{'id':_0x4839c5[_0x2180('0x42')]['id']}})['then'](handleEntityNotFound(_0x52d9c2,null))['then'](function(_0x5c522c){if(_0x5c522c){_0x11317f=_0x5c522c;_0x5671a2[_0x2180('0x2e')]=_[_0x2180('0x30')](db[_0x2180('0x4a')][_0x2180('0x2b')]);_0x5671a2[_0x2180('0x31')]=_[_0x2180('0x30')](_0x4839c5['query']);_0x5671a2[_0x2180('0x3a')]=_[_0x2180('0x32')](_0x5671a2[_0x2180('0x2e')],_0x5671a2[_0x2180('0x31')]);_0x370e70[_0x2180('0x34')]=_[_0x2180('0x32')](_0x5671a2[_0x2180('0x2e')],qs[_0x2180('0x33')](_0x4839c5[_0x2180('0x31')][_0x2180('0x33')]));_0x370e70[_0x2180('0x34')]=_0x370e70[_0x2180('0x34')][_0x2180('0x35')]?_0x370e70['attributes']:_0x5671a2[_0x2180('0x2e')];_0x370e70[_0x2180('0x37')]=qs['sort'](_0x4839c5['query'][_0x2180('0x38')]);_0x370e70[_0x2180('0x39')]=qs[_0x2180('0x3a')](_[_0x2180('0x3b')](_0x4839c5['query'],_0x5671a2[_0x2180('0x3a')]));if(_0x4839c5[_0x2180('0x31')]['filter']){_0x370e70[_0x2180('0x39')]=_[_0x2180('0x3d')](_0x370e70[_0x2180('0x39')],{'$or':_[_0x2180('0x2f')](_0x370e70['attributes'],function(_0x33c310){var _0x3c26f1={};_0x3c26f1[_0x33c310]={'$like':'%'+_0x4839c5[_0x2180('0x31')][_0x2180('0x3c')]+'%'};return _0x3c26f1;})});}_0x370e70=_[_0x2180('0x3d')]({},_0x370e70,_0x4839c5[_0x2180('0x44')]);return _0x11317f[_0x2180('0x4c')](_0x370e70);}})['then'](function(_0x3d0141){if(_0x3d0141){_0x2aa044=_0x3d0141[_0x2180('0x35')];if(!_0x4839c5[_0x2180('0x31')][_0x2180('0x4b')](_0x2180('0x36'))){_0x370e70['limit']=qs[_0x2180('0x1e')](_0x4839c5['query'][_0x2180('0x1e')]);_0x370e70[_0x2180('0x1c')]=qs[_0x2180('0x1c')](_0x4839c5['query'][_0x2180('0x1c')]);}return _0x11317f[_0x2180('0x4c')](_0x370e70);}})['then'](function(_0x3b042f){if(_0x3b042f){return _0x3b042f?{'count':_0x2aa044,'rows':_0x3b042f}:null;}})[_0x2180('0x24')](respondWithResult(_0x52d9c2,null))[_0x2180('0x40')](handleError(_0x52d9c2,null));};exports[_0x2180('0x4d')]=function(_0x9a860d,_0x5d220f,_0x40fa3d){var _0x2e81b3={};var _0x499f02={};var _0x2e1e5d;var _0x392860;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x9a860d['params']['id']}})['then'](handleEntityNotFound(_0x5d220f,null))['then'](function(_0x1b9707){if(_0x1b9707){_0x2e1e5d=_0x1b9707;_0x499f02[_0x2180('0x2e')]=_[_0x2180('0x30')](db[_0x2180('0x4a')][_0x2180('0x2b')]);_0x499f02['query']=_['keys'](_0x9a860d['query']);_0x499f02[_0x2180('0x3a')]=_[_0x2180('0x32')](_0x499f02['model'],_0x499f02[_0x2180('0x31')]);_0x2e81b3['attributes']=_[_0x2180('0x32')](_0x499f02[_0x2180('0x2e')],qs['fields'](_0x9a860d[_0x2180('0x31')]['fields']));_0x2e81b3[_0x2180('0x34')]=_0x2e81b3[_0x2180('0x34')]['length']?_0x2e81b3[_0x2180('0x34')]:_0x499f02['model'];_0x2e81b3[_0x2180('0x37')]=qs[_0x2180('0x38')](_0x9a860d[_0x2180('0x31')][_0x2180('0x38')]);_0x2e81b3[_0x2180('0x39')]=qs[_0x2180('0x3a')](_['pick'](_0x9a860d[_0x2180('0x31')],_0x499f02[_0x2180('0x3a')]));if(_0x9a860d['query'][_0x2180('0x3c')]){_0x2e81b3[_0x2180('0x39')]=_[_0x2180('0x3d')](_0x2e81b3[_0x2180('0x39')],{'$or':_['map'](_0x2e81b3[_0x2180('0x34')],function(_0x39f093){var _0x1b7b3b={};_0x1b7b3b[_0x39f093]={'$like':'%'+_0x9a860d[_0x2180('0x31')][_0x2180('0x3c')]+'%'};return _0x1b7b3b;})});}_0x2e81b3=_[_0x2180('0x3d')]({},_0x2e81b3,_0x9a860d[_0x2180('0x44')]);return _0x2e1e5d[_0x2180('0x4d')](_0x2e81b3);}})['then'](function(_0x20e375){if(_0x20e375){_0x392860=_0x20e375[_0x2180('0x35')];if(!_0x9a860d[_0x2180('0x31')][_0x2180('0x4b')](_0x2180('0x36'))){_0x2e81b3[_0x2180('0x1e')]=qs[_0x2180('0x1e')](_0x9a860d[_0x2180('0x31')][_0x2180('0x1e')]);_0x2e81b3[_0x2180('0x1c')]=qs[_0x2180('0x1c')](_0x9a860d['query'][_0x2180('0x1c')]);}return _0x2e1e5d[_0x2180('0x4d')](_0x2e81b3);}})[_0x2180('0x24')](function(_0x24a596){if(_0x24a596){return _0x24a596?{'count':_0x392860,'rows':_0x24a596}:null;}})[_0x2180('0x24')](respondWithResult(_0x5d220f,null))[_0x2180('0x40')](handleError(_0x5d220f,null));};
\ No newline at end of file
index 43a9d43..d4715cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa0=['lodash','api','bluebird','path','../../config/environment','./intVtigerConfiguration.attributes','define','VtigerConfiguration','int_vtiger_configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbaa0,0x144));var _0x0baa=function(_0x3ab159,_0x293a05){_0x3ab159=_0x3ab159-0x0;var _0x241b6d=_0xbaa0[_0x3ab159];return _0x241b6d;};'use strict';var _=require(_0x0baa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0baa('0x1'));var moment=require('moment');var BPromise=require(_0x0baa('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0baa('0x3'));var rimraf=require('rimraf');var config=require(_0x0baa('0x4'));var attributes=require(_0x0baa('0x5'));module['exports']=function(_0x2d5642,_0x2cc589){return _0x2d5642[_0x0baa('0x6')](_0x0baa('0x7'),attributes,{'tableName':_0x0baa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5802=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger'];(function(_0x58105c,_0x339376){var _0x3c75c3=function(_0x79bbda){while(--_0x79bbda){_0x58105c['push'](_0x58105c['shift']());}};_0x3c75c3(++_0x339376);}(_0x5802,0x1d1));var _0x2580=function(_0x2df2d0,_0x1d6ea8){_0x2df2d0=_0x2df2d0-0x0;var _0x3c4438=_0x5802[_0x2df2d0];return _0x3c4438;};'use strict';var _=require(_0x2580('0x0'));var util=require(_0x2580('0x1'));var logger=require(_0x2580('0x2'))(_0x2580('0x3'));var moment=require(_0x2580('0x4'));var BPromise=require(_0x2580('0x5'));var rp=require(_0x2580('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2580('0x7'));var config=require(_0x2580('0x8'));var attributes=require('./intVtigerConfiguration.attributes');module[_0x2580('0x9')]=function(_0x41ee98,_0x33fbfc){return _0x41ee98['define'](_0x2580('0xa'),attributes,{'tableName':_0x2580('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f059512..269042e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a11=['stringify','error','code','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a11,0x101));var _0x17a1=function(_0x9b6a52,_0x3cb0ab){_0x9b6a52=_0x9b6a52-0x0;var _0x5c5c6f=_0x7a11[_0x9b6a52];return _0x5c5c6f;};'use strict';var _=require(_0x17a1('0x0'));var util=require('util');var moment=require(_0x17a1('0x1'));var BPromise=require(_0x17a1('0x2'));var rs=require(_0x17a1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x17a1('0x4'))['db'];var utils=require(_0x17a1('0x5'));var logger=require(_0x17a1('0x6'))(_0x17a1('0x7'));var config=require(_0x17a1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x17a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d5c79,_0x566c34,_0x3764e1){return new BPromise(function(_0x54da8c,_0x52ffeb){return client['request'](_0x3d5c79,_0x3764e1)[_0x17a1('0xa')](function(_0x4225eb){logger[_0x17a1('0xb')](_0x17a1('0xc'),_0x566c34,_0x17a1('0xd'));logger[_0x17a1('0xe')](_0x17a1('0xf'),_0x566c34,_0x17a1('0xd'),JSON[_0x17a1('0x10')](_0x4225eb));if(_0x4225eb['error']){if(_0x4225eb[_0x17a1('0x11')][_0x17a1('0x12')]===0x1f4){logger[_0x17a1('0x11')](_0x17a1('0xc'),_0x566c34,_0x4225eb[_0x17a1('0x11')]['message']);return _0x52ffeb(_0x4225eb['error'][_0x17a1('0x13')]);}logger[_0x17a1('0x11')](_0x17a1('0xc'),_0x566c34,_0x4225eb[_0x17a1('0x11')][_0x17a1('0x13')]);return _0x54da8c(_0x4225eb['error']['message']);}else{logger[_0x17a1('0xb')](_0x17a1('0xc'),_0x566c34,'request\x20sent');_0x54da8c(_0x4225eb[_0x17a1('0x14')]['message']);}})['catch'](function(_0x76c2b1){logger[_0x17a1('0x11')](_0x17a1('0xc'),_0x566c34,_0x76c2b1);_0x52ffeb(_0x76c2b1);});});}
\ No newline at end of file
+var _0xc854=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','error','VtigerConfiguration,\x20%s,\x20%s','message','result'];(function(_0x4f48a0,_0x107661){var _0x180e4d=function(_0x42d582){while(--_0x42d582){_0x4f48a0['push'](_0x4f48a0['shift']());}};_0x180e4d(++_0x107661);}(_0xc854,0x1e6));var _0x4c85=function(_0x38381f,_0x4eff8a){_0x38381f=_0x38381f-0x0;var _0x1c1631=_0xc854[_0x38381f];return _0x1c1631;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x4c85('0x0'));var rs=require(_0x4c85('0x1'));var fs=require('fs');var Redis=require(_0x4c85('0x2'));var db=require(_0x4c85('0x3'))['db'];var utils=require(_0x4c85('0x4'));var logger=require(_0x4c85('0x5'))(_0x4c85('0x6'));var config=require(_0x4c85('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4c85('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34906f,_0x3d605f,_0x3da7a3){return new BPromise(function(_0x5376e0,_0x4ad7d9){return client[_0x4c85('0x9')](_0x34906f,_0x3da7a3)[_0x4c85('0xa')](function(_0x34d826){logger[_0x4c85('0xb')]('VtigerConfiguration,\x20%s,\x20%s',_0x3d605f,_0x4c85('0xc'));logger[_0x4c85('0xd')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x3d605f,_0x4c85('0xc'),JSON['stringify'](_0x34d826));if(_0x34d826['error']){if(_0x34d826[_0x4c85('0xe')]['code']===0x1f4){logger['error'](_0x4c85('0xf'),_0x3d605f,_0x34d826[_0x4c85('0xe')][_0x4c85('0x10')]);return _0x4ad7d9(_0x34d826[_0x4c85('0xe')][_0x4c85('0x10')]);}logger['error'](_0x4c85('0xf'),_0x3d605f,_0x34d826[_0x4c85('0xe')][_0x4c85('0x10')]);return _0x5376e0(_0x34d826['error'][_0x4c85('0x10')]);}else{logger['info'](_0x4c85('0xf'),_0x3d605f,_0x4c85('0xc'));_0x5376e0(_0x34d826[_0x4c85('0x11')][_0x4c85('0x10')]);}})['catch'](function(_0x4cd00c){logger[_0x4c85('0xe')]('VtigerConfiguration,\x20%s,\x20%s',_0x3d605f,_0x4cd00c);_0x4ad7d9(_0x4cd00c);});});}
\ No newline at end of file
index e77fe02..2ba0568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4873=['post','create','update','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','show'];(function(_0x3abbb6,_0x59425d){var _0x407791=function(_0x4df8a2){while(--_0x4df8a2){_0x3abbb6['push'](_0x3abbb6['shift']());}};_0x407791(++_0x59425d);}(_0x4873,0xca));var _0x3487=function(_0x5478e4,_0x5a3f21){_0x5478e4=_0x5478e4-0x0;var _0x30fda9=_0x4873[_0x5478e4];return _0x30fda9;};'use strict';var multer=require('multer');var util=require(_0x3487('0x0'));var path=require(_0x3487('0x1'));var timeout=require('connect-timeout');var express=require(_0x3487('0x2'));var router=express[_0x3487('0x3')]();var fs_extra=require(_0x3487('0x4'));var auth=require(_0x3487('0x5'));var interaction=require(_0x3487('0x6'));var config=require(_0x3487('0x7'));var controller=require(_0x3487('0x8'));router[_0x3487('0x9')]('/',auth[_0x3487('0xa')](),controller[_0x3487('0xb')]);router[_0x3487('0x9')](_0x3487('0xc'),auth[_0x3487('0xa')](),controller[_0x3487('0xd')]);router[_0x3487('0xe')]('/',auth[_0x3487('0xa')](),controller[_0x3487('0xf')]);router['put'](_0x3487('0xc'),auth['isAuthenticated'](),controller[_0x3487('0x10')]);router['delete']('/:id',auth[_0x3487('0xa')](),controller['destroy']);module[_0x3487('0x11')]=router;
\ No newline at end of file
+var _0x820d=['../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x57f220,_0x56c47a){var _0x5c80c9=function(_0x4287e9){while(--_0x4287e9){_0x57f220['push'](_0x57f220['shift']());}};_0x5c80c9(++_0x56c47a);}(_0x820d,0xa2));var _0xd820=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x820d[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require('multer');var util=require(_0xd820('0x0'));var path=require('path');var timeout=require(_0xd820('0x1'));var express=require(_0xd820('0x2'));var router=express[_0xd820('0x3')]();var fs_extra=require(_0xd820('0x4'));var auth=require(_0xd820('0x5'));var interaction=require(_0xd820('0x6'));var config=require(_0xd820('0x7'));var controller=require(_0xd820('0x8'));router[_0xd820('0x9')]('/',auth[_0xd820('0xa')](),controller[_0xd820('0xb')]);router[_0xd820('0x9')](_0xd820('0xc'),auth[_0xd820('0xa')](),controller[_0xd820('0xd')]);router[_0xd820('0xe')]('/',auth[_0xd820('0xa')](),controller[_0xd820('0xf')]);router[_0xd820('0x10')](_0xd820('0xc'),auth[_0xd820('0xa')](),controller[_0xd820('0x11')]);router[_0xd820('0x12')](_0xd820('0xc'),auth['isAuthenticated'](),controller[_0xd820('0x13')]);module[_0xd820('0x14')]=router;
\ No newline at end of file
index d2693d5..5d80fb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdded=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports'];(function(_0x1ac4da,_0x46ee02){var _0x279d64=function(_0x17b8d8){while(--_0x17b8d8){_0x1ac4da['push'](_0x1ac4da['shift']());}};_0x279d64(++_0x46ee02);}(_0xdded,0xf2));var _0xddde=function(_0x2c3041,_0x9733f3){_0x2c3041=_0x2c3041-0x0;var _0x2f3118=_0xdded[_0x2c3041];return _0x2f3118;};'use strict';var Sequelize=require('sequelize');module[_0xddde('0x0')]={'type':{'type':Sequelize[_0xddde('0x1')](_0xddde('0x2'),_0xddde('0x3'),_0xddde('0x4'),_0xddde('0x5'),_0xddde('0x6')),'defaultValue':_0xddde('0x2')},'content':{'type':Sequelize[_0xddde('0x7')]},'key':{'type':Sequelize[_0xddde('0x7')]},'keyType':{'type':Sequelize[_0xddde('0x1')](_0xddde('0x2'),_0xddde('0x3'),_0xddde('0x4'))},'keyContent':{'type':Sequelize[_0xddde('0x7')]},'idField':{'type':Sequelize[_0xddde('0x7')]},'nameField':{'type':Sequelize[_0xddde('0x7')]},'customField':{'type':Sequelize[_0xddde('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xddde('0x7')]}};
\ No newline at end of file
+var _0x40f1=['BOOLEAN','sequelize','ENUM','keyValue','picklist','STRING','string','variable'];(function(_0x8b4f03,_0x2f2506){var _0x660420=function(_0x12ce1e){while(--_0x12ce1e){_0x8b4f03['push'](_0x8b4f03['shift']());}};_0x660420(++_0x2f2506);}(_0x40f1,0x79));var _0x140f=function(_0x36d8e0,_0x350f55){_0x36d8e0=_0x36d8e0-0x0;var _0x6b3fea=_0x40f1[_0x36d8e0];return _0x6b3fea;};'use strict';var Sequelize=require(_0x140f('0x0'));module['exports']={'type':{'type':Sequelize[_0x140f('0x1')]('string','variable','customVariable',_0x140f('0x2'),_0x140f('0x3')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x140f('0x4')]},'keyType':{'type':Sequelize[_0x140f('0x1')](_0x140f('0x5'),_0x140f('0x6'),'customVariable')},'keyContent':{'type':Sequelize[_0x140f('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x140f('0x4')]},'customField':{'type':Sequelize[_0x140f('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x140f('0x4')]}};
\ No newline at end of file
index 131c48c..382819d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb72a=['destroy','error','name','send','index','map','VtigerField','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','zip-dir','fast-json-patch','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','json','apply','reject','save','update','then'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb72a,0x18d));var _0xab72=function(_0xd256b8,_0x4d5223){_0xd256b8=_0xd256b8-0x0;var _0x6b2c67=_0xb72a[_0xd256b8];return _0x6b2c67;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xab72('0x0'));var jsonpatch=require(_0xab72('0x1'));var rp=require('request-promise');var moment=require(_0xab72('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xab72('0x3'));var util=require(_0xab72('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xab72('0x5'));var ejs=require(_0xab72('0x6'));var fs=require('fs');var fs_extra=require(_0xab72('0x7'));var _=require(_0xab72('0x8'));var squel=require(_0xab72('0x9'));var crypto=require('crypto');var jsforce=require(_0xab72('0xa'));var deskjs=require(_0xab72('0xb'));var toCsv=require(_0xab72('0x5'));var querystring=require(_0xab72('0xc'));var Papa=require(_0xab72('0xd'));var Redis=require(_0xab72('0xe'));var authService=require(_0xab72('0xf'));var qs=require(_0xab72('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xab72('0x11'));var logger=require('../../config/logger')(_0xab72('0x12'));var utils=require(_0xab72('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xab72('0x14'));var db=require(_0xab72('0x15'))['db'];function respondWithStatusCode(_0x1b90ba,_0x3a99d2){_0x3a99d2=_0x3a99d2||0xcc;return function(_0x932103){if(_0x932103){return _0x1b90ba[_0xab72('0x16')](_0x3a99d2);}return _0x1b90ba[_0xab72('0x17')](_0x3a99d2)[_0xab72('0x18')]();};}function respondWithResult(_0x25bf81,_0x441ade){_0x441ade=_0x441ade||0xc8;return function(_0x3fe31b){if(_0x3fe31b){return _0x25bf81[_0xab72('0x17')](_0x441ade)['json'](_0x3fe31b);}};}function respondWithFilteredResult(_0x2d0f4f,_0x55d4c5){return function(_0x28cf17){if(_0x28cf17){var _0x561d19=typeof _0x55d4c5['offset']===_0xab72('0x19')&&typeof _0x55d4c5['limit']==='undefined';var _0x174b46=_0x28cf17[_0xab72('0x1a')];var _0x136385=_0x561d19?0x0:_0x55d4c5[_0xab72('0x1b')];var _0x32073f=_0x561d19?_0x28cf17['count']:_0x55d4c5[_0xab72('0x1b')]+_0x55d4c5[_0xab72('0x1c')];var _0x1c7c45;if(_0x32073f>=_0x174b46){_0x32073f=_0x174b46;_0x1c7c45=0xc8;}else{_0x1c7c45=0xce;}_0x2d0f4f[_0xab72('0x17')](_0x1c7c45);return _0x2d0f4f['set']('Content-Range',_0x136385+'-'+_0x32073f+'/'+_0x174b46)[_0xab72('0x1d')](_0x28cf17);}return null;};}function patchUpdates(_0x5c1369){return function(_0x20e339){try{jsonpatch[_0xab72('0x1e')](_0x20e339,_0x5c1369,!![]);}catch(_0x37e7fe){return BPromise[_0xab72('0x1f')](_0x37e7fe);}return _0x20e339[_0xab72('0x20')]();};}function saveUpdates(_0xaad3f,_0x4915c5){return function(_0x247629){if(_0x247629){return _0x247629[_0xab72('0x21')](_0xaad3f)[_0xab72('0x22')](function(_0x1f395a){return _0x1f395a;});}return null;};}function removeEntity(_0x53c380,_0x4c463c){return function(_0x3f6c40){if(_0x3f6c40){return _0x3f6c40[_0xab72('0x23')]()['then'](function(){_0x53c380[_0xab72('0x17')](0xcc)[_0xab72('0x18')]();});}};}function handleEntityNotFound(_0x3b530c,_0x51724c){return function(_0x1233ca){if(!_0x1233ca){_0x3b530c['sendStatus'](0x194);}return _0x1233ca;};}function handleError(_0x1c9401,_0x4367a9){_0x4367a9=_0x4367a9||0x1f4;return function(_0x174b71){logger[_0xab72('0x24')](_0x174b71['stack']);if(_0x174b71[_0xab72('0x25')]){delete _0x174b71[_0xab72('0x25')];}_0x1c9401[_0xab72('0x17')](_0x4367a9)[_0xab72('0x26')](_0x174b71);};}exports[_0xab72('0x27')]=function(_0x4b0131,_0xae8c23){var _0x17e5cb={},_0xe46b85={},_0x369f7e={'count':0x0,'rows':[]};var _0x19cf48=_[_0xab72('0x28')](db[_0xab72('0x29')][_0xab72('0x2a')],function(_0x3f02ed){return{'name':_0x3f02ed[_0xab72('0x2b')],'type':_0x3f02ed['type']['key']};});_0xe46b85[_0xab72('0x2c')]=_[_0xab72('0x28')](_0x19cf48,_0xab72('0x25'));_0xe46b85['query']=_[_0xab72('0x2d')](_0x4b0131[_0xab72('0x2e')]);_0xe46b85[_0xab72('0x2f')]=_['intersection'](_0xe46b85['model'],_0xe46b85['query']);_0x17e5cb[_0xab72('0x30')]=_[_0xab72('0x31')](_0xe46b85[_0xab72('0x2c')],qs['fields'](_0x4b0131[_0xab72('0x2e')][_0xab72('0x32')]));_0x17e5cb[_0xab72('0x30')]=_0x17e5cb[_0xab72('0x30')][_0xab72('0x33')]?_0x17e5cb['attributes']:_0xe46b85[_0xab72('0x2c')];if(!_0x4b0131[_0xab72('0x2e')][_0xab72('0x34')](_0xab72('0x35'))){_0x17e5cb['limit']=qs['limit'](_0x4b0131[_0xab72('0x2e')][_0xab72('0x1c')]);_0x17e5cb[_0xab72('0x1b')]=qs[_0xab72('0x1b')](_0x4b0131[_0xab72('0x2e')][_0xab72('0x1b')]);}_0x17e5cb[_0xab72('0x36')]=qs[_0xab72('0x37')](_0x4b0131[_0xab72('0x2e')][_0xab72('0x37')]);_0x17e5cb[_0xab72('0x38')]=qs['filters'](_[_0xab72('0x39')](_0x4b0131[_0xab72('0x2e')],_0xe46b85['filters']),_0x19cf48);if(_0x4b0131[_0xab72('0x2e')][_0xab72('0x3a')]){_0x17e5cb[_0xab72('0x38')]=_[_0xab72('0x3b')](_0x17e5cb[_0xab72('0x38')],{'$or':_[_0xab72('0x28')](_0x19cf48,function(_0x4d29b1){if(_0x4d29b1[_0xab72('0x3c')]!==_0xab72('0x3d')){var _0x372efa={};_0x372efa[_0x4d29b1['name']]={'$like':'%'+_0x4b0131[_0xab72('0x2e')][_0xab72('0x3a')]+'%'};return _0x372efa;}})});}_0x17e5cb=_[_0xab72('0x3b')]({},_0x17e5cb,_0x4b0131[_0xab72('0x3e')]);var _0x39e79b={'where':_0x17e5cb[_0xab72('0x38')]};return db[_0xab72('0x29')][_0xab72('0x1a')](_0x39e79b)[_0xab72('0x22')](function(_0x2bf19d){_0x369f7e[_0xab72('0x1a')]=_0x2bf19d;if(_0x4b0131['query'][_0xab72('0x3f')]){_0x17e5cb[_0xab72('0x40')]=[{'all':!![]}];}return db[_0xab72('0x29')][_0xab72('0x41')](_0x17e5cb);})['then'](function(_0x18408a){_0x369f7e['rows']=_0x18408a;return _0x369f7e;})[_0xab72('0x22')](respondWithFilteredResult(_0xae8c23,_0x17e5cb))[_0xab72('0x42')](handleError(_0xae8c23,null));};exports[_0xab72('0x43')]=function(_0x248fc3,_0x320dd6){var _0x1b95b9={'raw':!![],'where':{'id':_0x248fc3[_0xab72('0x44')]['id']}},_0x34ec8d={};_0x34ec8d[_0xab72('0x2c')]=_['keys'](db[_0xab72('0x29')][_0xab72('0x2a')]);_0x34ec8d[_0xab72('0x2e')]=_[_0xab72('0x2d')](_0x248fc3['query']);_0x34ec8d[_0xab72('0x2f')]=_[_0xab72('0x31')](_0x34ec8d[_0xab72('0x2c')],_0x34ec8d[_0xab72('0x2e')]);_0x1b95b9[_0xab72('0x30')]=_[_0xab72('0x31')](_0x34ec8d[_0xab72('0x2c')],qs[_0xab72('0x32')](_0x248fc3['query'][_0xab72('0x32')]));_0x1b95b9[_0xab72('0x30')]=_0x1b95b9[_0xab72('0x30')][_0xab72('0x33')]?_0x1b95b9[_0xab72('0x30')]:_0x34ec8d[_0xab72('0x2c')];if(_0x248fc3[_0xab72('0x2e')][_0xab72('0x3f')]){_0x1b95b9[_0xab72('0x40')]=[{'all':!![]}];}_0x1b95b9=_[_0xab72('0x3b')]({},_0x1b95b9,_0x248fc3['options']);return db['VtigerField'][_0xab72('0x45')](_0x1b95b9)[_0xab72('0x22')](handleEntityNotFound(_0x320dd6,null))[_0xab72('0x22')](respondWithResult(_0x320dd6,null))[_0xab72('0x42')](handleError(_0x320dd6,null));};exports[_0xab72('0x46')]=function(_0x4610d4,_0x3373ec){return db[_0xab72('0x29')]['create'](_0x4610d4[_0xab72('0x47')],{})[_0xab72('0x22')](respondWithResult(_0x3373ec,0xc9))['catch'](handleError(_0x3373ec,null));};exports[_0xab72('0x21')]=function(_0x2444d9,_0x14044e){if(_0x2444d9[_0xab72('0x47')]['id']){delete _0x2444d9[_0xab72('0x47')]['id'];}return db[_0xab72('0x29')][_0xab72('0x45')]({'where':{'id':_0x2444d9[_0xab72('0x44')]['id']}})[_0xab72('0x22')](handleEntityNotFound(_0x14044e,null))['then'](saveUpdates(_0x2444d9['body'],null))[_0xab72('0x22')](respondWithResult(_0x14044e,null))[_0xab72('0x42')](handleError(_0x14044e,null));};exports[_0xab72('0x23')]=function(_0x4dc3a4,_0x9f382b){return db[_0xab72('0x29')][_0xab72('0x45')]({'where':{'id':_0x4dc3a4['params']['id']}})['then'](handleEntityNotFound(_0x9f382b,null))[_0xab72('0x22')](removeEntity(_0x9f382b,null))[_0xab72('0x42')](handleError(_0x9f382b,null));};
\ No newline at end of file
+var _0xa9a2=['index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','rows','show','params','keys','intersection','include','find','catch','create','body','eml-format','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','error','name','send'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9a2,0xf0));var _0x2a9a=function(_0x371a1d,_0x3591f3){_0x371a1d=_0x371a1d-0x0;var _0x4ba340=_0xa9a2[_0x371a1d];return _0x4ba340;};'use strict';var emlformat=require(_0x2a9a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2a9a('0x1'));var Mustache=require(_0x2a9a('0x2'));var util=require(_0x2a9a('0x3'));var path=require(_0x2a9a('0x4'));var sox=require('sox');var csv=require(_0x2a9a('0x5'));var ejs=require(_0x2a9a('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2a9a('0x7'));var squel=require(_0x2a9a('0x8'));var crypto=require(_0x2a9a('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2a9a('0x5'));var querystring=require(_0x2a9a('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2a9a('0xb'));var qs=require(_0x2a9a('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2a9a('0xd'));var logger=require(_0x2a9a('0xe'))('api');var utils=require(_0x2a9a('0xf'));var config=require('../../config/environment');var licenseUtil=require(_0x2a9a('0x10'));var db=require(_0x2a9a('0x11'))['db'];function respondWithStatusCode(_0x141030,_0x4f2e2c){_0x4f2e2c=_0x4f2e2c||0xcc;return function(_0x25d926){if(_0x25d926){return _0x141030[_0x2a9a('0x12')](_0x4f2e2c);}return _0x141030[_0x2a9a('0x13')](_0x4f2e2c)['end']();};}function respondWithResult(_0x115a61,_0x266d44){_0x266d44=_0x266d44||0xc8;return function(_0x215c0e){if(_0x215c0e){return _0x115a61[_0x2a9a('0x13')](_0x266d44)[_0x2a9a('0x14')](_0x215c0e);}};}function respondWithFilteredResult(_0x38d80a,_0x94950e){return function(_0x777cd8){if(_0x777cd8){var _0x301196=typeof _0x94950e[_0x2a9a('0x15')]===_0x2a9a('0x16')&&typeof _0x94950e[_0x2a9a('0x17')]===_0x2a9a('0x16');var _0x4df421=_0x777cd8[_0x2a9a('0x18')];var _0x870cb6=_0x301196?0x0:_0x94950e['offset'];var _0x4d2f28=_0x301196?_0x777cd8['count']:_0x94950e[_0x2a9a('0x15')]+_0x94950e[_0x2a9a('0x17')];var _0xbf907;if(_0x4d2f28>=_0x4df421){_0x4d2f28=_0x4df421;_0xbf907=0xc8;}else{_0xbf907=0xce;}_0x38d80a['status'](_0xbf907);return _0x38d80a[_0x2a9a('0x19')]('Content-Range',_0x870cb6+'-'+_0x4d2f28+'/'+_0x4df421)[_0x2a9a('0x14')](_0x777cd8);}return null;};}function patchUpdates(_0x365a34){return function(_0xbe8c1a){try{jsonpatch[_0x2a9a('0x1a')](_0xbe8c1a,_0x365a34,!![]);}catch(_0x44b3d5){return BPromise[_0x2a9a('0x1b')](_0x44b3d5);}return _0xbe8c1a[_0x2a9a('0x1c')]();};}function saveUpdates(_0x803fe,_0x1b3c99){return function(_0x8f7b23){if(_0x8f7b23){return _0x8f7b23[_0x2a9a('0x1d')](_0x803fe)[_0x2a9a('0x1e')](function(_0x55d9de){return _0x55d9de;});}return null;};}function removeEntity(_0x2f73cb,_0x2ab00f){return function(_0xfab513){if(_0xfab513){return _0xfab513[_0x2a9a('0x1f')]()[_0x2a9a('0x1e')](function(){_0x2f73cb[_0x2a9a('0x13')](0xcc)[_0x2a9a('0x20')]();});}};}function handleEntityNotFound(_0x4ae7bc,_0x2086b1){return function(_0x465279){if(!_0x465279){_0x4ae7bc[_0x2a9a('0x12')](0x194);}return _0x465279;};}function handleError(_0x591287,_0x3fa19c){_0x3fa19c=_0x3fa19c||0x1f4;return function(_0x4748b8){logger[_0x2a9a('0x21')](_0x4748b8['stack']);if(_0x4748b8[_0x2a9a('0x22')]){delete _0x4748b8[_0x2a9a('0x22')];}_0x591287[_0x2a9a('0x13')](_0x3fa19c)[_0x2a9a('0x23')](_0x4748b8);};}exports[_0x2a9a('0x24')]=function(_0x56a662,_0x52023d){var _0x17a26c={},_0x48fa1b={},_0x381bdc={'count':0x0,'rows':[]};var _0x34a1cf=_[_0x2a9a('0x25')](db[_0x2a9a('0x26')][_0x2a9a('0x27')],function(_0x5d3403){return{'name':_0x5d3403[_0x2a9a('0x28')],'type':_0x5d3403[_0x2a9a('0x29')][_0x2a9a('0x2a')]};});_0x48fa1b[_0x2a9a('0x2b')]=_[_0x2a9a('0x25')](_0x34a1cf,_0x2a9a('0x22'));_0x48fa1b['query']=_['keys'](_0x56a662[_0x2a9a('0x2c')]);_0x48fa1b[_0x2a9a('0x2d')]=_['intersection'](_0x48fa1b[_0x2a9a('0x2b')],_0x48fa1b['query']);_0x17a26c['attributes']=_['intersection'](_0x48fa1b[_0x2a9a('0x2b')],qs[_0x2a9a('0x2e')](_0x56a662[_0x2a9a('0x2c')][_0x2a9a('0x2e')]));_0x17a26c[_0x2a9a('0x2f')]=_0x17a26c[_0x2a9a('0x2f')][_0x2a9a('0x30')]?_0x17a26c[_0x2a9a('0x2f')]:_0x48fa1b[_0x2a9a('0x2b')];if(!_0x56a662['query'][_0x2a9a('0x31')](_0x2a9a('0x32'))){_0x17a26c['limit']=qs[_0x2a9a('0x17')](_0x56a662[_0x2a9a('0x2c')]['limit']);_0x17a26c[_0x2a9a('0x15')]=qs['offset'](_0x56a662[_0x2a9a('0x2c')][_0x2a9a('0x15')]);}_0x17a26c[_0x2a9a('0x33')]=qs[_0x2a9a('0x34')](_0x56a662[_0x2a9a('0x2c')][_0x2a9a('0x34')]);_0x17a26c[_0x2a9a('0x35')]=qs[_0x2a9a('0x2d')](_[_0x2a9a('0x36')](_0x56a662[_0x2a9a('0x2c')],_0x48fa1b[_0x2a9a('0x2d')]),_0x34a1cf);if(_0x56a662[_0x2a9a('0x2c')][_0x2a9a('0x37')]){_0x17a26c[_0x2a9a('0x35')]=_[_0x2a9a('0x38')](_0x17a26c[_0x2a9a('0x35')],{'$or':_[_0x2a9a('0x25')](_0x34a1cf,function(_0x4b31cd){if(_0x4b31cd[_0x2a9a('0x29')]!=='VIRTUAL'){var _0x325a15={};_0x325a15[_0x4b31cd[_0x2a9a('0x22')]]={'$like':'%'+_0x56a662[_0x2a9a('0x2c')]['filter']+'%'};return _0x325a15;}})});}_0x17a26c=_['merge']({},_0x17a26c,_0x56a662[_0x2a9a('0x39')]);var _0x4a60a8={'where':_0x17a26c[_0x2a9a('0x35')]};return db['VtigerField'][_0x2a9a('0x18')](_0x4a60a8)[_0x2a9a('0x1e')](function(_0x4cff68){_0x381bdc[_0x2a9a('0x18')]=_0x4cff68;if(_0x56a662[_0x2a9a('0x2c')][_0x2a9a('0x3a')]){_0x17a26c['include']=[{'all':!![]}];}return db['VtigerField']['findAll'](_0x17a26c);})[_0x2a9a('0x1e')](function(_0x1a860a){_0x381bdc[_0x2a9a('0x3b')]=_0x1a860a;return _0x381bdc;})[_0x2a9a('0x1e')](respondWithFilteredResult(_0x52023d,_0x17a26c))['catch'](handleError(_0x52023d,null));};exports[_0x2a9a('0x3c')]=function(_0x2c6a2a,_0x97db30){var _0x1bda5d={'raw':!![],'where':{'id':_0x2c6a2a[_0x2a9a('0x3d')]['id']}},_0x3796f8={};_0x3796f8['model']=_[_0x2a9a('0x3e')](db['VtigerField'][_0x2a9a('0x27')]);_0x3796f8[_0x2a9a('0x2c')]=_[_0x2a9a('0x3e')](_0x2c6a2a[_0x2a9a('0x2c')]);_0x3796f8['filters']=_[_0x2a9a('0x3f')](_0x3796f8[_0x2a9a('0x2b')],_0x3796f8[_0x2a9a('0x2c')]);_0x1bda5d[_0x2a9a('0x2f')]=_['intersection'](_0x3796f8[_0x2a9a('0x2b')],qs[_0x2a9a('0x2e')](_0x2c6a2a[_0x2a9a('0x2c')][_0x2a9a('0x2e')]));_0x1bda5d[_0x2a9a('0x2f')]=_0x1bda5d[_0x2a9a('0x2f')][_0x2a9a('0x30')]?_0x1bda5d[_0x2a9a('0x2f')]:_0x3796f8['model'];if(_0x2c6a2a[_0x2a9a('0x2c')][_0x2a9a('0x3a')]){_0x1bda5d[_0x2a9a('0x40')]=[{'all':!![]}];}_0x1bda5d=_[_0x2a9a('0x38')]({},_0x1bda5d,_0x2c6a2a['options']);return db[_0x2a9a('0x26')][_0x2a9a('0x41')](_0x1bda5d)['then'](handleEntityNotFound(_0x97db30,null))[_0x2a9a('0x1e')](respondWithResult(_0x97db30,null))[_0x2a9a('0x42')](handleError(_0x97db30,null));};exports[_0x2a9a('0x43')]=function(_0x2b0377,_0x10d82b){return db['VtigerField'][_0x2a9a('0x43')](_0x2b0377['body'],{})[_0x2a9a('0x1e')](respondWithResult(_0x10d82b,0xc9))['catch'](handleError(_0x10d82b,null));};exports['update']=function(_0x248b4f,_0x1a2d99){if(_0x248b4f['body']['id']){delete _0x248b4f[_0x2a9a('0x44')]['id'];}return db[_0x2a9a('0x26')][_0x2a9a('0x41')]({'where':{'id':_0x248b4f['params']['id']}})[_0x2a9a('0x1e')](handleEntityNotFound(_0x1a2d99,null))[_0x2a9a('0x1e')](saveUpdates(_0x248b4f[_0x2a9a('0x44')],null))['then'](respondWithResult(_0x1a2d99,null))['catch'](handleError(_0x1a2d99,null));};exports[_0x2a9a('0x1f')]=function(_0x419eb1,_0x4a4f05){return db[_0x2a9a('0x26')][_0x2a9a('0x41')]({'where':{'id':_0x419eb1['params']['id']}})[_0x2a9a('0x1e')](handleEntityNotFound(_0x4a4f05,null))[_0x2a9a('0x1e')](removeEntity(_0x4a4f05,null))['catch'](handleError(_0x4a4f05,null));};
\ No newline at end of file
index f0c9283..801dc2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a64=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','int_vtiger_fields','vtiger_unique_index','idField'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x2a64,0x71));var _0x42a6=function(_0x3c64ce,_0x2d99f9){_0x3c64ce=_0x3c64ce-0x0;var _0x5a4e51=_0x2a64[_0x3c64ce];return _0x5a4e51;};'use strict';var _=require(_0x42a6('0x0'));var util=require(_0x42a6('0x1'));var logger=require(_0x42a6('0x2'))(_0x42a6('0x3'));var moment=require(_0x42a6('0x4'));var BPromise=require(_0x42a6('0x5'));var rp=require(_0x42a6('0x6'));var fs=require('fs');var path=require(_0x42a6('0x7'));var rimraf=require('rimraf');var config=require(_0x42a6('0x8'));var attributes=require('./intVtigerField.attributes');module['exports']=function(_0xb2f46b,_0xf11b19){return _0xb2f46b[_0x42a6('0x9')]('VtigerField',attributes,{'tableName':_0x42a6('0xa'),'paranoid':![],'indexes':[{'name':_0x42a6('0xb'),'fields':[_0x42a6('0xc'),_0x42a6('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9d34=['exports','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intVtigerField.attributes'];(function(_0x5ddd06,_0x58691d){var _0x11a97a=function(_0x58a870){while(--_0x58a870){_0x5ddd06['push'](_0x5ddd06['shift']());}};_0x11a97a(++_0x58691d);}(_0x9d34,0x1a9));var _0x49d3=function(_0x5b64a1,_0x2ec810){_0x5b64a1=_0x5b64a1-0x0;var _0x4b6f55=_0x9d34[_0x5b64a1];return _0x4b6f55;};'use strict';var _=require('lodash');var util=require(_0x49d3('0x0'));var logger=require(_0x49d3('0x1'))(_0x49d3('0x2'));var moment=require(_0x49d3('0x3'));var BPromise=require(_0x49d3('0x4'));var rp=require(_0x49d3('0x5'));var fs=require('fs');var path=require(_0x49d3('0x6'));var rimraf=require(_0x49d3('0x7'));var config=require('../../config/environment');var attributes=require(_0x49d3('0x8'));module[_0x49d3('0x9')]=function(_0x18a418,_0xae86a8){return _0x18a418['define'](_0x49d3('0xa'),attributes,{'tableName':_0x49d3('0xb'),'paranoid':![],'indexes':[{'name':_0x49d3('0xc'),'fields':[_0x49d3('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 978c17c..8c37160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d12=['client','http','request','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x6d12,0x1ef));var _0x26d1=function(_0x353a30,_0x50c68a){_0x353a30=_0x353a30-0x0;var _0x213161=_0x6d12[_0x353a30];return _0x213161;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x26d1('0x0'));var BPromise=require('bluebird');var rs=require(_0x26d1('0x1'));var fs=require('fs');var Redis=require(_0x26d1('0x2'));var db=require(_0x26d1('0x3'))['db'];var utils=require(_0x26d1('0x4'));var logger=require(_0x26d1('0x5'))(_0x26d1('0x6'));var config=require(_0x26d1('0x7'));var jayson=require(_0x26d1('0x8'));var client=jayson[_0x26d1('0x9')][_0x26d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf010ee,_0x1308de,_0x50a0e0){return new BPromise(function(_0x114b24,_0x5c3236){return client[_0x26d1('0xb')](_0xf010ee,_0x50a0e0)['then'](function(_0x13f552){logger[_0x26d1('0xc')](_0x26d1('0xd'),_0x1308de,'request\x20sent');logger[_0x26d1('0xe')](_0x26d1('0xf'),_0x1308de,'request\x20sent',JSON[_0x26d1('0x10')](_0x13f552));if(_0x13f552[_0x26d1('0x11')]){if(_0x13f552[_0x26d1('0x11')][_0x26d1('0x12')]===0x1f4){logger[_0x26d1('0x11')](_0x26d1('0xd'),_0x1308de,_0x13f552[_0x26d1('0x11')][_0x26d1('0x13')]);return _0x5c3236(_0x13f552[_0x26d1('0x11')][_0x26d1('0x13')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x1308de,_0x13f552[_0x26d1('0x11')][_0x26d1('0x13')]);return _0x114b24(_0x13f552[_0x26d1('0x11')]['message']);}else{logger[_0x26d1('0xc')](_0x26d1('0xd'),_0x1308de,_0x26d1('0x14'));_0x114b24(_0x13f552['result'][_0x26d1('0x13')]);}})['catch'](function(_0x475566){logger['error'](_0x26d1('0xd'),_0x1308de,_0x475566);_0x5c3236(_0x475566);});});}
\ No newline at end of file
+var _0x4a96=['../../config/utils','rpc','jayson/promise','http','info','VtigerField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring'];(function(_0x1443eb,_0x203408){var _0x2b8810=function(_0x48bc4e){while(--_0x48bc4e){_0x1443eb['push'](_0x1443eb['shift']());}};_0x2b8810(++_0x203408);}(_0x4a96,0x19d));var _0x64a9=function(_0x34cf97,_0x1eb06e){_0x34cf97=_0x34cf97-0x0;var _0x5b83cc=_0x4a96[_0x34cf97];return _0x5b83cc;};'use strict';var _=require(_0x64a9('0x0'));var util=require(_0x64a9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x64a9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x64a9('0x3'));var logger=require('../../config/logger')(_0x64a9('0x4'));var config=require('../../config/environment');var jayson=require(_0x64a9('0x5'));var client=jayson['client'][_0x64a9('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x700b39,_0x3b9a73,_0x35f5f0){return new BPromise(function(_0x212e7b,_0x25f0c1){return client['request'](_0x700b39,_0x35f5f0)['then'](function(_0x501083){logger[_0x64a9('0x7')](_0x64a9('0x8'),_0x3b9a73,'request\x20sent');logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x3b9a73,_0x64a9('0x9'),JSON[_0x64a9('0xa')](_0x501083));if(_0x501083[_0x64a9('0xb')]){if(_0x501083[_0x64a9('0xb')][_0x64a9('0xc')]===0x1f4){logger[_0x64a9('0xb')](_0x64a9('0x8'),_0x3b9a73,_0x501083[_0x64a9('0xb')]['message']);return _0x25f0c1(_0x501083[_0x64a9('0xb')][_0x64a9('0xd')]);}logger[_0x64a9('0xb')](_0x64a9('0x8'),_0x3b9a73,_0x501083[_0x64a9('0xb')][_0x64a9('0xd')]);return _0x212e7b(_0x501083[_0x64a9('0xb')][_0x64a9('0xd')]);}else{logger['info'](_0x64a9('0x8'),_0x3b9a73,_0x64a9('0x9'));_0x212e7b(_0x501083[_0x64a9('0xe')][_0x64a9('0xd')]);}})[_0x64a9('0xf')](function(_0x19b10c){logger[_0x64a9('0xb')](_0x64a9('0x8'),_0x3b9a73,_0x19b10c);_0x25f0c1(_0x19b10c);});});}
\ No newline at end of file
index 1bbd36d..4a8d2a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaac=['./intZendeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','/:id','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5f2481,_0x313fd9){var _0x49f81f=function(_0x3af35b){while(--_0x3af35b){_0x5f2481['push'](_0x5f2481['shift']());}};_0x49f81f(++_0x313fd9);}(_0xfaac,0x6b));var _0xcfaa=function(_0x4cd200,_0x137372){_0x4cd200=_0x4cd200-0x0;var _0x1f2caa=_0xfaac[_0x4cd200];return _0x1f2caa;};'use strict';var multer=require('multer');var util=require(_0xcfaa('0x0'));var path=require('path');var timeout=require(_0xcfaa('0x1'));var express=require(_0xcfaa('0x2'));var router=express[_0xcfaa('0x3')]();var fs_extra=require(_0xcfaa('0x4'));var auth=require(_0xcfaa('0x5'));var interaction=require(_0xcfaa('0x6'));var config=require(_0xcfaa('0x7'));var controller=require(_0xcfaa('0x8'));router[_0xcfaa('0x9')]('/',auth[_0xcfaa('0xa')](),controller[_0xcfaa('0xb')]);router[_0xcfaa('0x9')]('/:id',auth[_0xcfaa('0xa')](),controller[_0xcfaa('0xc')]);router[_0xcfaa('0x9')](_0xcfaa('0xd'),auth['isAuthenticated'](),controller[_0xcfaa('0xe')]);router[_0xcfaa('0x9')](_0xcfaa('0xf'),auth[_0xcfaa('0xa')](),controller['getFields']);router[_0xcfaa('0x10')]('/',auth[_0xcfaa('0xa')](),controller[_0xcfaa('0x11')]);router[_0xcfaa('0x10')](_0xcfaa('0xd'),auth[_0xcfaa('0xa')](),controller[_0xcfaa('0x12')]);router[_0xcfaa('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xcfaa('0x14')]);router['delete'](_0xcfaa('0x15'),auth[_0xcfaa('0xa')](),controller['destroy']);module[_0xcfaa('0x16')]=router;
\ No newline at end of file
+var _0x8ade=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0x8ade,0xda));var _0xe8ad=function(_0x4f10af,_0x3f626b){_0x4f10af=_0x4f10af-0x0;var _0x180de5=_0x8ade[_0x4f10af];return _0x180de5;};'use strict';var multer=require(_0xe8ad('0x0'));var util=require(_0xe8ad('0x1'));var path=require(_0xe8ad('0x2'));var timeout=require(_0xe8ad('0x3'));var express=require(_0xe8ad('0x4'));var router=express[_0xe8ad('0x5')]();var fs_extra=require(_0xe8ad('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe8ad('0x7'));var config=require(_0xe8ad('0x8'));var controller=require(_0xe8ad('0x9'));router[_0xe8ad('0xa')]('/',auth[_0xe8ad('0xb')](),controller[_0xe8ad('0xc')]);router[_0xe8ad('0xa')](_0xe8ad('0xd'),auth['isAuthenticated'](),controller[_0xe8ad('0xe')]);router[_0xe8ad('0xa')](_0xe8ad('0xf'),auth[_0xe8ad('0xb')](),controller[_0xe8ad('0x10')]);router[_0xe8ad('0xa')](_0xe8ad('0x11'),auth[_0xe8ad('0xb')](),controller[_0xe8ad('0x12')]);router[_0xe8ad('0x13')]('/',auth[_0xe8ad('0xb')](),controller[_0xe8ad('0x14')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0xe8ad('0x15')]);router[_0xe8ad('0x16')](_0xe8ad('0xd'),auth['isAuthenticated'](),controller[_0xe8ad('0x17')]);router[_0xe8ad('0x18')](_0xe8ad('0xd'),auth[_0xe8ad('0xb')](),controller[_0xe8ad('0x19')]);module[_0xe8ad('0x1a')]=router;
\ No newline at end of file
index bbe3858..a811f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6050=['STRING','username','remoteUri','password','newTab','integrationTab','sequelize','exports'];(function(_0x1b0597,_0xeffacc){var _0x2b6a2a=function(_0x4da070){while(--_0x4da070){_0x1b0597['push'](_0x1b0597['shift']());}};_0x2b6a2a(++_0xeffacc);}(_0x6050,0x196));var _0x0605=function(_0x103357,_0x19a09c){_0x103357=_0x103357-0x0;var _0x518fcb=_0x6050[_0x103357];return _0x518fcb;};'use strict';var Sequelize=require(_0x0605('0x0'));module[_0x0605('0x1')]={'name':{'type':Sequelize[_0x0605('0x2')]},'description':{'type':Sequelize[_0x0605('0x2')]},'username':{'type':Sequelize[_0x0605('0x2')],'unique':_0x0605('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x0605('0x2')]},'remoteUri':{'type':Sequelize[_0x0605('0x2')],'unique':_0x0605('0x4')},'authType':{'type':Sequelize['ENUM']('password','token'),'defaultValue':_0x0605('0x5')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x0605('0x6')),'defaultValue':_0x0605('0x7')}};
\ No newline at end of file
+var _0xce68=['username','remoteUri','ENUM','token','password','integrationTab','newTab','sequelize','STRING'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xce68,0x10c));var _0x8ce6=function(_0x11dcc3,_0x4b6a66){_0x11dcc3=_0x11dcc3-0x0;var _0x3fe920=_0xce68[_0x11dcc3];return _0x3fe920;};'use strict';var Sequelize=require(_0x8ce6('0x0'));module['exports']={'name':{'type':Sequelize[_0x8ce6('0x1')]},'description':{'type':Sequelize[_0x8ce6('0x1')]},'username':{'type':Sequelize[_0x8ce6('0x1')],'unique':_0x8ce6('0x2')},'password':{'type':Sequelize[_0x8ce6('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x8ce6('0x1')],'unique':_0x8ce6('0x3')},'authType':{'type':Sequelize[_0x8ce6('0x4')]('password',_0x8ce6('0x5')),'defaultValue':_0x8ce6('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8ce6('0x7'),_0x8ce6('0x8')),'defaultValue':_0x8ce6('0x7')}};
\ No newline at end of file
index 873a24f..8782b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fa=['send','ZendeskAccount','fieldName','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','map','type','VIRTUAL','options','include','findAll','catch','show','params','keys','rawAttributes','includeAll','find','create','body','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','getDescriptions','ZendeskField','Subjects','Descriptions','getFields','username','password','token','remoteUri','lastIndexOf','GET','format','%s/%s','headers','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','ticket_fields','includes','position','title','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','then','stack','name'];(function(_0x399f45,_0x228896){var _0xc0915b=function(_0xc7c779){while(--_0xc7c779){_0x399f45['push'](_0x399f45['shift']());}};_0xc0915b(++_0x228896);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x358125,_0x45326f){_0x358125=_0x358125-0x0;var _0x118f28=_0xa5fa[_0x358125];return _0x118f28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa5f('0x0'));var zipdir=require(_0xaa5f('0x1'));var jsonpatch=require(_0xaa5f('0x2'));var rp=require(_0xaa5f('0x3'));var moment=require('moment');var BPromise=require(_0xaa5f('0x4'));var Mustache=require(_0xaa5f('0x5'));var util=require('util');var path=require(_0xaa5f('0x6'));var sox=require(_0xaa5f('0x7'));var csv=require(_0xaa5f('0x8'));var ejs=require(_0xaa5f('0x9'));var fs=require('fs');var fs_extra=require(_0xaa5f('0xa'));var _=require(_0xaa5f('0xb'));var squel=require(_0xaa5f('0xc'));var crypto=require(_0xaa5f('0xd'));var jsforce=require(_0xaa5f('0xe'));var deskjs=require(_0xaa5f('0xf'));var toCsv=require(_0xaa5f('0x8'));var querystring=require('querystring');var Papa=require(_0xaa5f('0x10'));var Redis=require(_0xaa5f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaa5f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaa5f('0x13'));var utils=require('../../config/utils');var config=require(_0xaa5f('0x14'));var licenseUtil=require(_0xaa5f('0x15'));var db=require(_0xaa5f('0x16'))['db'];var integrations=require(_0xaa5f('0x17'));function respondWithStatusCode(_0x252ae0,_0x48d1d3){_0x48d1d3=_0x48d1d3||0xcc;return function(_0xbd4e10){if(_0xbd4e10){return _0x252ae0['sendStatus'](_0x48d1d3);}return _0x252ae0[_0xaa5f('0x18')](_0x48d1d3)[_0xaa5f('0x19')]();};}function respondWithResult(_0x31eabc,_0x19aa27){_0x19aa27=_0x19aa27||0xc8;return function(_0x2e1ca5){if(_0x2e1ca5){return _0x31eabc['status'](_0x19aa27)['json'](_0x2e1ca5);}};}function respondWithFilteredResult(_0x1f37fb,_0x291042){return function(_0xb0bfb6){if(_0xb0bfb6){var _0x4265ab=typeof _0x291042[_0xaa5f('0x1a')]===_0xaa5f('0x1b')&&typeof _0x291042[_0xaa5f('0x1c')]===_0xaa5f('0x1b');var _0x202ea8=_0xb0bfb6[_0xaa5f('0x1d')];var _0x22175f=_0x4265ab?0x0:_0x291042[_0xaa5f('0x1a')];var _0x4f4cd5=_0x4265ab?_0xb0bfb6[_0xaa5f('0x1d')]:_0x291042[_0xaa5f('0x1a')]+_0x291042[_0xaa5f('0x1c')];var _0x358d2e;if(_0x4f4cd5>=_0x202ea8){_0x4f4cd5=_0x202ea8;_0x358d2e=0xc8;}else{_0x358d2e=0xce;}_0x1f37fb[_0xaa5f('0x18')](_0x358d2e);return _0x1f37fb[_0xaa5f('0x1e')](_0xaa5f('0x1f'),_0x22175f+'-'+_0x4f4cd5+'/'+_0x202ea8)[_0xaa5f('0x20')](_0xb0bfb6);}return null;};}function patchUpdates(_0x2d8fc3){return function(_0xe3d7d){try{jsonpatch[_0xaa5f('0x21')](_0xe3d7d,_0x2d8fc3,!![]);}catch(_0x10f287){return BPromise[_0xaa5f('0x22')](_0x10f287);}return _0xe3d7d['save']();};}function saveUpdates(_0x1e917d,_0x57082c){return function(_0x2e04e6){if(_0x2e04e6){return _0x2e04e6[_0xaa5f('0x23')](_0x1e917d)['then'](function(_0x1baa2e){return _0x1baa2e;});}return null;};}function removeEntity(_0x1032ce,_0x5b9f0b){return function(_0xf6a8c3){if(_0xf6a8c3){return _0xf6a8c3[_0xaa5f('0x24')]()[_0xaa5f('0x25')](function(){_0x1032ce[_0xaa5f('0x18')](0xcc)[_0xaa5f('0x19')]();});}};}function handleEntityNotFound(_0xacbded,_0x3d7bca){return function(_0x2fba7d){if(!_0x2fba7d){_0xacbded['sendStatus'](0x194);}return _0x2fba7d;};}function handleError(_0x2445a6,_0x3a66e8){_0x3a66e8=_0x3a66e8||0x1f4;return function(_0x1ed8eb){logger['error'](_0x1ed8eb[_0xaa5f('0x26')]);if(_0x1ed8eb[_0xaa5f('0x27')]){delete _0x1ed8eb[_0xaa5f('0x27')];}_0x2445a6['status'](_0x3a66e8)[_0xaa5f('0x28')](_0x1ed8eb);};}exports['index']=function(_0x5990d2,_0x27d1a4){var _0x50998f={},_0x1bffec={},_0x4e0ec9={'count':0x0,'rows':[]};var _0x4c5dc0=_['map'](db[_0xaa5f('0x29')]['rawAttributes'],function(_0x310828){return{'name':_0x310828[_0xaa5f('0x2a')],'type':_0x310828['type']['key']};});_0x1bffec[_0xaa5f('0x2b')]=_['map'](_0x4c5dc0,_0xaa5f('0x27'));_0x1bffec[_0xaa5f('0x2c')]=_['keys'](_0x5990d2[_0xaa5f('0x2c')]);_0x1bffec[_0xaa5f('0x2d')]=_[_0xaa5f('0x2e')](_0x1bffec['model'],_0x1bffec[_0xaa5f('0x2c')]);_0x50998f[_0xaa5f('0x2f')]=_['intersection'](_0x1bffec['model'],qs['fields'](_0x5990d2['query'][_0xaa5f('0x30')]));_0x50998f[_0xaa5f('0x2f')]=_0x50998f[_0xaa5f('0x2f')][_0xaa5f('0x31')]?_0x50998f[_0xaa5f('0x2f')]:_0x1bffec[_0xaa5f('0x2b')];if(!_0x5990d2[_0xaa5f('0x2c')]['hasOwnProperty'](_0xaa5f('0x32'))){_0x50998f[_0xaa5f('0x1c')]=qs[_0xaa5f('0x1c')](_0x5990d2[_0xaa5f('0x2c')][_0xaa5f('0x1c')]);_0x50998f[_0xaa5f('0x1a')]=qs['offset'](_0x5990d2[_0xaa5f('0x2c')][_0xaa5f('0x1a')]);}_0x50998f[_0xaa5f('0x33')]=qs[_0xaa5f('0x34')](_0x5990d2[_0xaa5f('0x2c')]['sort']);_0x50998f['where']=qs[_0xaa5f('0x2d')](_[_0xaa5f('0x35')](_0x5990d2[_0xaa5f('0x2c')],_0x1bffec[_0xaa5f('0x2d')]),_0x4c5dc0);if(_0x5990d2['query'][_0xaa5f('0x36')]){_0x50998f[_0xaa5f('0x37')]=_[_0xaa5f('0x38')](_0x50998f[_0xaa5f('0x37')],{'$or':_[_0xaa5f('0x39')](_0x4c5dc0,function(_0x1869c2){if(_0x1869c2[_0xaa5f('0x3a')]!==_0xaa5f('0x3b')){var _0xc6deec={};_0xc6deec[_0x1869c2[_0xaa5f('0x27')]]={'$like':'%'+_0x5990d2[_0xaa5f('0x2c')]['filter']+'%'};return _0xc6deec;}})});}_0x50998f=_[_0xaa5f('0x38')]({},_0x50998f,_0x5990d2[_0xaa5f('0x3c')]);var _0xcd9c30={'where':_0x50998f[_0xaa5f('0x37')]};return db[_0xaa5f('0x29')][_0xaa5f('0x1d')](_0xcd9c30)[_0xaa5f('0x25')](function(_0xa490d9){_0x4e0ec9[_0xaa5f('0x1d')]=_0xa490d9;if(_0x5990d2[_0xaa5f('0x2c')]['includeAll']){_0x50998f[_0xaa5f('0x3d')]=[{'all':!![]}];}return db['ZendeskAccount'][_0xaa5f('0x3e')](_0x50998f);})[_0xaa5f('0x25')](function(_0x17bb4d){_0x4e0ec9['rows']=_0x17bb4d;return _0x4e0ec9;})[_0xaa5f('0x25')](respondWithFilteredResult(_0x27d1a4,_0x50998f))[_0xaa5f('0x3f')](handleError(_0x27d1a4,null));};exports[_0xaa5f('0x40')]=function(_0x528b08,_0x12a8e4){var _0x179be8={'raw':![],'where':{'id':_0x528b08[_0xaa5f('0x41')]['id']}},_0x1ac9b6={};_0x1ac9b6['model']=_[_0xaa5f('0x42')](db[_0xaa5f('0x29')][_0xaa5f('0x43')]);_0x1ac9b6[_0xaa5f('0x2c')]=_[_0xaa5f('0x42')](_0x528b08[_0xaa5f('0x2c')]);_0x1ac9b6[_0xaa5f('0x2d')]=_[_0xaa5f('0x2e')](_0x1ac9b6['model'],_0x1ac9b6[_0xaa5f('0x2c')]);_0x179be8['attributes']=_[_0xaa5f('0x2e')](_0x1ac9b6['model'],qs[_0xaa5f('0x30')](_0x528b08[_0xaa5f('0x2c')]['fields']));_0x179be8[_0xaa5f('0x2f')]=_0x179be8[_0xaa5f('0x2f')][_0xaa5f('0x31')]?_0x179be8['attributes']:_0x1ac9b6['model'];if(_0x528b08['query'][_0xaa5f('0x44')]){_0x179be8['include']=[{'all':!![]}];}_0x179be8=_[_0xaa5f('0x38')]({},_0x179be8,_0x528b08[_0xaa5f('0x3c')]);return db[_0xaa5f('0x29')][_0xaa5f('0x45')](_0x179be8)['then'](handleEntityNotFound(_0x12a8e4,null))[_0xaa5f('0x25')](respondWithResult(_0x12a8e4,null))[_0xaa5f('0x3f')](handleError(_0x12a8e4,null));};exports[_0xaa5f('0x46')]=function(_0x231ad1,_0x27ea4b){return db[_0xaa5f('0x29')][_0xaa5f('0x46')](_0x231ad1[_0xaa5f('0x47')],{})[_0xaa5f('0x25')](respondWithResult(_0x27ea4b,0xc9))[_0xaa5f('0x3f')](handleError(_0x27ea4b,null));};exports[_0xaa5f('0x23')]=function(_0x2de737,_0x2be44d){if(_0x2de737[_0xaa5f('0x47')]['id']){delete _0x2de737[_0xaa5f('0x47')]['id'];}return db[_0xaa5f('0x29')]['find']({'where':{'id':_0x2de737[_0xaa5f('0x41')]['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x2be44d,null))[_0xaa5f('0x25')](saveUpdates(_0x2de737[_0xaa5f('0x47')],null))[_0xaa5f('0x25')](respondWithResult(_0x2be44d,null))[_0xaa5f('0x3f')](handleError(_0x2be44d,null));};exports[_0xaa5f('0x24')]=function(_0x4aa556,_0xf5a6b6){return db[_0xaa5f('0x29')][_0xaa5f('0x45')]({'where':{'id':_0x4aa556[_0xaa5f('0x41')]['id']}})['then'](handleEntityNotFound(_0xf5a6b6,null))[_0xaa5f('0x25')](removeEntity(_0xf5a6b6,null))[_0xaa5f('0x3f')](handleError(_0xf5a6b6,null));};exports[_0xaa5f('0x48')]=function(_0x575803,_0x5bbdce,_0x506dce){var _0x56cdd6={};var _0x585559={};var _0x509c61;var _0x1f47a0;return db[_0xaa5f('0x29')][_0xaa5f('0x49')]({'where':{'id':_0x575803[_0xaa5f('0x41')]['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x5bbdce,null))[_0xaa5f('0x25')](function(_0x48c473){if(_0x48c473){_0x509c61=_0x48c473;_0x585559['model']=_[_0xaa5f('0x42')](db[_0xaa5f('0x4a')]['rawAttributes']);_0x585559[_0xaa5f('0x2c')]=_[_0xaa5f('0x42')](_0x575803[_0xaa5f('0x2c')]);_0x585559[_0xaa5f('0x2d')]=_[_0xaa5f('0x2e')](_0x585559[_0xaa5f('0x2b')],_0x585559[_0xaa5f('0x2c')]);_0x56cdd6['attributes']=_['intersection'](_0x585559[_0xaa5f('0x2b')],qs[_0xaa5f('0x30')](_0x575803['query']['fields']));_0x56cdd6['attributes']=_0x56cdd6[_0xaa5f('0x2f')]['length']?_0x56cdd6[_0xaa5f('0x2f')]:_0x585559['model'];_0x56cdd6['order']=qs[_0xaa5f('0x34')](_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x34')]);_0x56cdd6['where']=qs[_0xaa5f('0x2d')](_[_0xaa5f('0x35')](_0x575803[_0xaa5f('0x2c')],_0x585559['filters']));if(_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x36')]){_0x56cdd6['where']=_[_0xaa5f('0x38')](_0x56cdd6[_0xaa5f('0x37')],{'$or':_[_0xaa5f('0x39')](_0x56cdd6[_0xaa5f('0x2f')],function(_0x334282){var _0x178d90={};_0x178d90[_0x334282]={'$like':'%'+_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x36')]+'%'};return _0x178d90;})});}_0x56cdd6=_[_0xaa5f('0x38')]({},_0x56cdd6,_0x575803['options']);return _0x509c61[_0xaa5f('0x48')](_0x56cdd6);}})[_0xaa5f('0x25')](function(_0x1d02af){if(_0x1d02af){_0x1f47a0=_0x1d02af[_0xaa5f('0x31')];if(!_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x4b')](_0xaa5f('0x32'))){_0x56cdd6[_0xaa5f('0x1c')]=qs['limit'](_0x575803[_0xaa5f('0x2c')]['limit']);_0x56cdd6[_0xaa5f('0x1a')]=qs[_0xaa5f('0x1a')](_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x1a')]);}return _0x509c61['getConfigurations'](_0x56cdd6);}})[_0xaa5f('0x25')](function(_0x1bc0e7){if(_0x1bc0e7){return _0x1bc0e7?{'count':_0x1f47a0,'rows':_0x1bc0e7}:null;}})[_0xaa5f('0x25')](respondWithResult(_0x5bbdce,null))['catch'](handleError(_0x5bbdce,null));};exports[_0xaa5f('0x4c')]=function(_0x524f42,_0x42ea3b,_0x5e7a74){if(_0x524f42[_0xaa5f('0x47')]['id']){delete _0x524f42[_0xaa5f('0x47')]['id'];}return db[_0xaa5f('0x29')][_0xaa5f('0x49')]({'where':{'id':_0x524f42['params']['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x42ea3b,null))[_0xaa5f('0x25')](function(_0x47a160){if(_0x47a160){_0x524f42['body'][_0xaa5f('0x4d')]=_0x47a160['id'];_0x524f42[_0xaa5f('0x47')]['Subjects']=integrations[_0xaa5f('0x4e')](_0x524f42[_0xaa5f('0x47')][_0xaa5f('0x4f')],_0x524f42['body'][_0xaa5f('0x3a')]);_0x524f42[_0xaa5f('0x47')]['Descriptions']=integrations[_0xaa5f('0x50')](_0x524f42[_0xaa5f('0x47')][_0xaa5f('0x4f')],_0x524f42['body'][_0xaa5f('0x3a')]);return db[_0xaa5f('0x4a')]['create'](_0x524f42[_0xaa5f('0x47')],{'include':[{'model':db[_0xaa5f('0x51')],'as':_0xaa5f('0x52')},{'model':db[_0xaa5f('0x51')],'as':_0xaa5f('0x53')}]});}return null;})['then'](respondWithResult(_0x42ea3b,null))[_0xaa5f('0x3f')](handleError(_0x42ea3b,null));};exports[_0xaa5f('0x54')]=function(_0x464ac7,_0x216399,_0x2a1049){var _0x508fe7='';return db[_0xaa5f('0x29')]['findOne']({'where':{'id':_0x464ac7[_0xaa5f('0x41')]['id']},'attributes':['id',_0xaa5f('0x55'),_0xaa5f('0x56'),_0xaa5f('0x57'),'authType',_0xaa5f('0x58')]})[_0xaa5f('0x25')](handleEntityNotFound(_0x216399,null))[_0xaa5f('0x25')](function(_0x424b43){if(_0x424b43){_0x508fe7=_0x424b43[_0xaa5f('0x58')];var _0x201b8b=_0x508fe7['slice'](-0x1);if(_0x201b8b==='/'){_0x508fe7=_0x508fe7['substring'](0x0,_0x508fe7[_0xaa5f('0x59')](_0x201b8b));}var _0x300350={'method':_0xaa5f('0x5a'),'uri':util[_0xaa5f('0x5b')](_0xaa5f('0x5c'),_0x508fe7,'ticket_fields'),'json':!![]};switch(_0x424b43['authType']){case _0xaa5f('0x56'):_0x300350[_0xaa5f('0x5d')]={'Authorization':util['format'](_0xaa5f('0x5e'),new Buffer(util['format'](_0xaa5f('0x5f'),_0x424b43[_0xaa5f('0x55')],_0x424b43['password']))[_0xaa5f('0x60')](_0xaa5f('0x61')))};break;case _0xaa5f('0x57'):_0x300350[_0xaa5f('0x5d')]={'Authorization':util[_0xaa5f('0x5b')](_0xaa5f('0x5e'),new Buffer(util[_0xaa5f('0x5b')]('%s/token:%s',_0x424b43[_0xaa5f('0x55')],_0x424b43[_0xaa5f('0x57')]))[_0xaa5f('0x60')]('base64'))};break;default:throw new db[(_0xaa5f('0x62'))][(_0xaa5f('0x63'))](_0xaa5f('0x64'));}return rp(_0x300350);}})[_0xaa5f('0x25')](function(_0x281004){if(_0x281004){var _0x5d4cab=[_0xaa5f('0x65'),_0xaa5f('0x66'),_0xaa5f('0x67'),_0xaa5f('0x68')];_[_0xaa5f('0x69')](_0x281004[_0xaa5f('0x6a')],function(_0x155eb4){return _0x5d4cab[_0xaa5f('0x6b')](_0x155eb4[_0xaa5f('0x3a')]);});return{'count':_0x281004[_0xaa5f('0x6a')]['length'],'rows':_['map'](_0x281004[_0xaa5f('0x6a')],function(_0xa7ecc9){return{'id':_0xa7ecc9['id'],'name':_0xa7ecc9[_0xaa5f('0x6c')]>0x7?_0xa7ecc9[_0xaa5f('0x6d')]:_0xa7ecc9[_0xaa5f('0x3a')],'custom':_0xa7ecc9[_0xaa5f('0x6c')]>0x7?!![]:![],'options':_0xa7ecc9[_0xaa5f('0x6e')]?_0xa7ecc9[_0xaa5f('0x6e')]:_0xa7ecc9['custom_field_options']?_0xa7ecc9[_0xaa5f('0x6f')]:[]};})};}})[_0xaa5f('0x25')](respondWithResult(_0x216399,null))[_0xaa5f('0x3f')](function(_0x5f2484){var _0x55a3f9=_0x464ac7[_0xaa5f('0x2c')][_0xaa5f('0x70')]?0x1f4:_0x5f2484[_0xaa5f('0x71')]||0x1f4;logger[_0xaa5f('0x72')](_0xaa5f('0x73'),_0xaa5f('0x54'),_0x55a3f9,JSON[_0xaa5f('0x74')](_0x5f2484));delete _0x5f2484[_0xaa5f('0x27')];if(_0x55a3f9===0x191){_0x55a3f9=0x190;}_0x216399[_0xaa5f('0x18')](_0x55a3f9)[_0xaa5f('0x28')](_0x464ac7['query'][_0xaa5f('0x70')]?{'message':_0xaa5f('0x75'),'statusCode':_0x5f2484[_0xaa5f('0x71')]}:_0x5f2484);});};
\ No newline at end of file
+var _0xe1e3=['assignee','remove','includes','position','title','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','end','json','undefined','count','offset','status','set','apply','save','then','destroy','name','send','ZendeskAccount','type','map','query','keys','attributes','intersection','model','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','includeAll','findAll','rows','catch','show','params','rawAttributes','merge','find','create','body','update','ZendeskConfiguration','length','getConfigurations','AccountId','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','Subjects','getFields','findOne','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','Basic\x20%s','%s:%s','username','base64','headers','%s/token:%s','ValidationError','Unknown\x20authentication\x20type','subject','group'];(function(_0x4ab9b4,_0x13fcfa){var _0xe734ca=function(_0x1fb4f4){while(--_0x1fb4f4){_0x4ab9b4['push'](_0x4ab9b4['shift']());}};_0xe734ca(++_0x13fcfa);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x5745ea,_0x48509d){_0x5745ea=_0x5745ea-0x0;var _0xd1a6ae=_0xe1e3[_0x5745ea];return _0xd1a6ae;};'use strict';var emlformat=require(_0x3e1e('0x0'));var rimraf=require(_0x3e1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3e1e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3e1e('0x3'));var Mustache=require('mustache');var util=require(_0x3e1e('0x4'));var path=require(_0x3e1e('0x5'));var sox=require(_0x3e1e('0x6'));var csv=require(_0x3e1e('0x7'));var ejs=require(_0x3e1e('0x8'));var fs=require('fs');var fs_extra=require(_0x3e1e('0x9'));var _=require('lodash');var squel=require(_0x3e1e('0xa'));var crypto=require(_0x3e1e('0xb'));var jsforce=require(_0x3e1e('0xc'));var deskjs=require(_0x3e1e('0xd'));var toCsv=require(_0x3e1e('0x7'));var querystring=require(_0x3e1e('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3e1e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e1e('0x10'));var logger=require(_0x3e1e('0x11'))(_0x3e1e('0x12'));var utils=require('../../config/utils');var config=require(_0x3e1e('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x536129,_0x5c09a2){_0x5c09a2=_0x5c09a2||0xcc;return function(_0x14ad58){if(_0x14ad58){return _0x536129['sendStatus'](_0x5c09a2);}return _0x536129['status'](_0x5c09a2)[_0x3e1e('0x14')]();};}function respondWithResult(_0x8bd4cd,_0x78ee54){_0x78ee54=_0x78ee54||0xc8;return function(_0x50f221){if(_0x50f221){return _0x8bd4cd['status'](_0x78ee54)[_0x3e1e('0x15')](_0x50f221);}};}function respondWithFilteredResult(_0x1b62e6,_0x4dca60){return function(_0x26cb35){if(_0x26cb35){var _0x1f0af9=typeof _0x4dca60['offset']===_0x3e1e('0x16')&&typeof _0x4dca60['limit']===_0x3e1e('0x16');var _0x247daa=_0x26cb35[_0x3e1e('0x17')];var _0x39eaa7=_0x1f0af9?0x0:_0x4dca60[_0x3e1e('0x18')];var _0x1c181b=_0x1f0af9?_0x26cb35['count']:_0x4dca60['offset']+_0x4dca60['limit'];var _0x428e4e;if(_0x1c181b>=_0x247daa){_0x1c181b=_0x247daa;_0x428e4e=0xc8;}else{_0x428e4e=0xce;}_0x1b62e6[_0x3e1e('0x19')](_0x428e4e);return _0x1b62e6[_0x3e1e('0x1a')]('Content-Range',_0x39eaa7+'-'+_0x1c181b+'/'+_0x247daa)[_0x3e1e('0x15')](_0x26cb35);}return null;};}function patchUpdates(_0x530815){return function(_0x228991){try{jsonpatch[_0x3e1e('0x1b')](_0x228991,_0x530815,!![]);}catch(_0x474085){return BPromise['reject'](_0x474085);}return _0x228991[_0x3e1e('0x1c')]();};}function saveUpdates(_0x96396,_0xefa098){return function(_0x55dc62){if(_0x55dc62){return _0x55dc62['update'](_0x96396)[_0x3e1e('0x1d')](function(_0x1b5097){return _0x1b5097;});}return null;};}function removeEntity(_0x488f9f,_0x60e6bc){return function(_0x56ae51){if(_0x56ae51){return _0x56ae51[_0x3e1e('0x1e')]()[_0x3e1e('0x1d')](function(){_0x488f9f[_0x3e1e('0x19')](0xcc)[_0x3e1e('0x14')]();});}};}function handleEntityNotFound(_0x43d583,_0x21c898){return function(_0x4ee2b5){if(!_0x4ee2b5){_0x43d583['sendStatus'](0x194);}return _0x4ee2b5;};}function handleError(_0x44e419,_0x541ef1){_0x541ef1=_0x541ef1||0x1f4;return function(_0x55db8f){logger['error'](_0x55db8f['stack']);if(_0x55db8f[_0x3e1e('0x1f')]){delete _0x55db8f[_0x3e1e('0x1f')];}_0x44e419['status'](_0x541ef1)[_0x3e1e('0x20')](_0x55db8f);};}exports['index']=function(_0xdfcd93,_0x176bb4){var _0x53a6ff={},_0x43e029={},_0x210a84={'count':0x0,'rows':[]};var _0x45ed0e=_['map'](db[_0x3e1e('0x21')]['rawAttributes'],function(_0x591c36){return{'name':_0x591c36['fieldName'],'type':_0x591c36[_0x3e1e('0x22')]['key']};});_0x43e029['model']=_[_0x3e1e('0x23')](_0x45ed0e,_0x3e1e('0x1f'));_0x43e029[_0x3e1e('0x24')]=_[_0x3e1e('0x25')](_0xdfcd93[_0x3e1e('0x24')]);_0x43e029['filters']=_['intersection'](_0x43e029['model'],_0x43e029['query']);_0x53a6ff[_0x3e1e('0x26')]=_[_0x3e1e('0x27')](_0x43e029[_0x3e1e('0x28')],qs[_0x3e1e('0x29')](_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x29')]));_0x53a6ff[_0x3e1e('0x26')]=_0x53a6ff[_0x3e1e('0x26')]['length']?_0x53a6ff[_0x3e1e('0x26')]:_0x43e029[_0x3e1e('0x28')];if(!_0xdfcd93['query'][_0x3e1e('0x2a')](_0x3e1e('0x2b'))){_0x53a6ff[_0x3e1e('0x2c')]=qs[_0x3e1e('0x2c')](_0xdfcd93['query']['limit']);_0x53a6ff[_0x3e1e('0x18')]=qs[_0x3e1e('0x18')](_0xdfcd93['query'][_0x3e1e('0x18')]);}_0x53a6ff[_0x3e1e('0x2d')]=qs['sort'](_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x2e')]);_0x53a6ff[_0x3e1e('0x2f')]=qs[_0x3e1e('0x30')](_[_0x3e1e('0x31')](_0xdfcd93['query'],_0x43e029[_0x3e1e('0x30')]),_0x45ed0e);if(_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x32')]){_0x53a6ff[_0x3e1e('0x2f')]=_['merge'](_0x53a6ff[_0x3e1e('0x2f')],{'$or':_[_0x3e1e('0x23')](_0x45ed0e,function(_0x111da4){if(_0x111da4[_0x3e1e('0x22')]!==_0x3e1e('0x33')){var _0x25a95b={};_0x25a95b[_0x111da4[_0x3e1e('0x1f')]]={'$like':'%'+_0xdfcd93['query'][_0x3e1e('0x32')]+'%'};return _0x25a95b;}})});}_0x53a6ff=_['merge']({},_0x53a6ff,_0xdfcd93['options']);var _0x4f598e={'where':_0x53a6ff[_0x3e1e('0x2f')]};return db[_0x3e1e('0x21')]['count'](_0x4f598e)[_0x3e1e('0x1d')](function(_0xb030eb){_0x210a84['count']=_0xb030eb;if(_0xdfcd93[_0x3e1e('0x24')][_0x3e1e('0x34')]){_0x53a6ff['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0x3e1e('0x35')](_0x53a6ff);})['then'](function(_0x4ff868){_0x210a84[_0x3e1e('0x36')]=_0x4ff868;return _0x210a84;})[_0x3e1e('0x1d')](respondWithFilteredResult(_0x176bb4,_0x53a6ff))[_0x3e1e('0x37')](handleError(_0x176bb4,null));};exports[_0x3e1e('0x38')]=function(_0x377a06,_0x55ea1d){var _0x5b32ad={'raw':![],'where':{'id':_0x377a06[_0x3e1e('0x39')]['id']}},_0x24b2ad={};_0x24b2ad[_0x3e1e('0x28')]=_['keys'](db[_0x3e1e('0x21')][_0x3e1e('0x3a')]);_0x24b2ad[_0x3e1e('0x24')]=_['keys'](_0x377a06[_0x3e1e('0x24')]);_0x24b2ad['filters']=_['intersection'](_0x24b2ad[_0x3e1e('0x28')],_0x24b2ad[_0x3e1e('0x24')]);_0x5b32ad[_0x3e1e('0x26')]=_[_0x3e1e('0x27')](_0x24b2ad['model'],qs['fields'](_0x377a06['query']['fields']));_0x5b32ad[_0x3e1e('0x26')]=_0x5b32ad[_0x3e1e('0x26')]['length']?_0x5b32ad['attributes']:_0x24b2ad[_0x3e1e('0x28')];if(_0x377a06[_0x3e1e('0x24')][_0x3e1e('0x34')]){_0x5b32ad['include']=[{'all':!![]}];}_0x5b32ad=_[_0x3e1e('0x3b')]({},_0x5b32ad,_0x377a06['options']);return db[_0x3e1e('0x21')][_0x3e1e('0x3c')](_0x5b32ad)[_0x3e1e('0x1d')](handleEntityNotFound(_0x55ea1d,null))[_0x3e1e('0x1d')](respondWithResult(_0x55ea1d,null))[_0x3e1e('0x37')](handleError(_0x55ea1d,null));};exports[_0x3e1e('0x3d')]=function(_0x53d32b,_0x2f14b3){return db[_0x3e1e('0x21')]['create'](_0x53d32b[_0x3e1e('0x3e')],{})[_0x3e1e('0x1d')](respondWithResult(_0x2f14b3,0xc9))['catch'](handleError(_0x2f14b3,null));};exports[_0x3e1e('0x3f')]=function(_0x347b3f,_0x2e286f){if(_0x347b3f[_0x3e1e('0x3e')]['id']){delete _0x347b3f['body']['id'];}return db[_0x3e1e('0x21')][_0x3e1e('0x3c')]({'where':{'id':_0x347b3f[_0x3e1e('0x39')]['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x2e286f,null))['then'](saveUpdates(_0x347b3f[_0x3e1e('0x3e')],null))[_0x3e1e('0x1d')](respondWithResult(_0x2e286f,null))[_0x3e1e('0x37')](handleError(_0x2e286f,null));};exports[_0x3e1e('0x1e')]=function(_0xe2516c,_0x1df5a8){return db[_0x3e1e('0x21')][_0x3e1e('0x3c')]({'where':{'id':_0xe2516c['params']['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x1df5a8,null))['then'](removeEntity(_0x1df5a8,null))['catch'](handleError(_0x1df5a8,null));};exports['getConfigurations']=function(_0x1c4269,_0x17641c,_0x5147a2){var _0x13b076={};var _0x592733={};var _0x5b2416;var _0x3eaf76;return db['ZendeskAccount']['findOne']({'where':{'id':_0x1c4269['params']['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x17641c,null))[_0x3e1e('0x1d')](function(_0x1334c8){if(_0x1334c8){_0x5b2416=_0x1334c8;_0x592733[_0x3e1e('0x28')]=_[_0x3e1e('0x25')](db[_0x3e1e('0x40')][_0x3e1e('0x3a')]);_0x592733['query']=_[_0x3e1e('0x25')](_0x1c4269['query']);_0x592733[_0x3e1e('0x30')]=_[_0x3e1e('0x27')](_0x592733[_0x3e1e('0x28')],_0x592733['query']);_0x13b076['attributes']=_[_0x3e1e('0x27')](_0x592733[_0x3e1e('0x28')],qs['fields'](_0x1c4269[_0x3e1e('0x24')]['fields']));_0x13b076['attributes']=_0x13b076[_0x3e1e('0x26')][_0x3e1e('0x41')]?_0x13b076['attributes']:_0x592733[_0x3e1e('0x28')];_0x13b076['order']=qs['sort'](_0x1c4269[_0x3e1e('0x24')]['sort']);_0x13b076[_0x3e1e('0x2f')]=qs['filters'](_[_0x3e1e('0x31')](_0x1c4269['query'],_0x592733[_0x3e1e('0x30')]));if(_0x1c4269[_0x3e1e('0x24')]['filter']){_0x13b076['where']=_['merge'](_0x13b076[_0x3e1e('0x2f')],{'$or':_[_0x3e1e('0x23')](_0x13b076[_0x3e1e('0x26')],function(_0x588189){var _0x1b04ce={};_0x1b04ce[_0x588189]={'$like':'%'+_0x1c4269[_0x3e1e('0x24')][_0x3e1e('0x32')]+'%'};return _0x1b04ce;})});}_0x13b076=_['merge']({},_0x13b076,_0x1c4269['options']);return _0x5b2416[_0x3e1e('0x42')](_0x13b076);}})['then'](function(_0x3b97a2){if(_0x3b97a2){_0x3eaf76=_0x3b97a2[_0x3e1e('0x41')];if(!_0x1c4269[_0x3e1e('0x24')]['hasOwnProperty'](_0x3e1e('0x2b'))){_0x13b076['limit']=qs[_0x3e1e('0x2c')](_0x1c4269[_0x3e1e('0x24')]['limit']);_0x13b076[_0x3e1e('0x18')]=qs['offset'](_0x1c4269[_0x3e1e('0x24')]['offset']);}return _0x5b2416[_0x3e1e('0x42')](_0x13b076);}})['then'](function(_0x31062e){if(_0x31062e){return _0x31062e?{'count':_0x3eaf76,'rows':_0x31062e}:null;}})[_0x3e1e('0x1d')](respondWithResult(_0x17641c,null))[_0x3e1e('0x37')](handleError(_0x17641c,null));};exports['addConfiguration']=function(_0x11cab1,_0x1fbcfc,_0x4e6957){if(_0x11cab1[_0x3e1e('0x3e')]['id']){delete _0x11cab1['body']['id'];}return db['ZendeskAccount']['findOne']({'where':{'id':_0x11cab1[_0x3e1e('0x39')]['id']}})[_0x3e1e('0x1d')](handleEntityNotFound(_0x1fbcfc,null))[_0x3e1e('0x1d')](function(_0x4b0944){if(_0x4b0944){_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x43')]=_0x4b0944['id'];_0x11cab1[_0x3e1e('0x3e')]['Subjects']=integrations[_0x3e1e('0x44')](_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x45')],_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x22')]);_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x46')]=integrations[_0x3e1e('0x47')](_0x11cab1['body']['channel'],_0x11cab1[_0x3e1e('0x3e')][_0x3e1e('0x22')]);return db[_0x3e1e('0x40')][_0x3e1e('0x3d')](_0x11cab1[_0x3e1e('0x3e')],{'include':[{'model':db[_0x3e1e('0x48')],'as':_0x3e1e('0x49')},{'model':db[_0x3e1e('0x48')],'as':_0x3e1e('0x46')}]});}return null;})[_0x3e1e('0x1d')](respondWithResult(_0x1fbcfc,null))[_0x3e1e('0x37')](handleError(_0x1fbcfc,null));};exports[_0x3e1e('0x4a')]=function(_0x5e148e,_0x5581ee,_0x20bc4d){var _0x29ddc4='';return db[_0x3e1e('0x21')][_0x3e1e('0x4b')]({'where':{'id':_0x5e148e[_0x3e1e('0x39')]['id']},'attributes':['id','username',_0x3e1e('0x4c'),_0x3e1e('0x4d'),_0x3e1e('0x4e'),_0x3e1e('0x4f')]})[_0x3e1e('0x1d')](handleEntityNotFound(_0x5581ee,null))['then'](function(_0x8b6b28){if(_0x8b6b28){_0x29ddc4=_0x8b6b28[_0x3e1e('0x4f')];var _0xc60340=_0x29ddc4[_0x3e1e('0x50')](-0x1);if(_0xc60340==='/'){_0x29ddc4=_0x29ddc4[_0x3e1e('0x51')](0x0,_0x29ddc4[_0x3e1e('0x52')](_0xc60340));}var _0x4d0854={'method':_0x3e1e('0x53'),'uri':util[_0x3e1e('0x54')](_0x3e1e('0x55'),_0x29ddc4,_0x3e1e('0x56')),'json':!![]};switch(_0x8b6b28[_0x3e1e('0x4e')]){case _0x3e1e('0x4c'):_0x4d0854['headers']={'Authorization':util[_0x3e1e('0x54')](_0x3e1e('0x57'),new Buffer(util[_0x3e1e('0x54')](_0x3e1e('0x58'),_0x8b6b28[_0x3e1e('0x59')],_0x8b6b28[_0x3e1e('0x4c')]))['toString'](_0x3e1e('0x5a')))};break;case'token':_0x4d0854[_0x3e1e('0x5b')]={'Authorization':util[_0x3e1e('0x54')]('Basic\x20%s',new Buffer(util[_0x3e1e('0x54')](_0x3e1e('0x5c'),_0x8b6b28[_0x3e1e('0x59')],_0x8b6b28[_0x3e1e('0x4d')]))['toString'](_0x3e1e('0x5a')))};break;default:throw new db['Sequelize'][(_0x3e1e('0x5d'))](_0x3e1e('0x5e'));}return rp(_0x4d0854);}})[_0x3e1e('0x1d')](function(_0x632f99){if(_0x632f99){var _0x2ef476=[_0x3e1e('0x5f'),'description',_0x3e1e('0x60'),_0x3e1e('0x61')];_[_0x3e1e('0x62')](_0x632f99[_0x3e1e('0x56')],function(_0x4b4fd4){return _0x2ef476[_0x3e1e('0x63')](_0x4b4fd4[_0x3e1e('0x22')]);});return{'count':_0x632f99[_0x3e1e('0x56')][_0x3e1e('0x41')],'rows':_['map'](_0x632f99[_0x3e1e('0x56')],function(_0x41d98f){return{'id':_0x41d98f['id'],'name':_0x41d98f[_0x3e1e('0x64')]>0x7?_0x41d98f[_0x3e1e('0x65')]:_0x41d98f[_0x3e1e('0x22')],'custom':_0x41d98f[_0x3e1e('0x64')]>0x7?!![]:![],'options':_0x41d98f['system_field_options']?_0x41d98f['system_field_options']:_0x41d98f['custom_field_options']?_0x41d98f[_0x3e1e('0x66')]:[]};})};}})['then'](respondWithResult(_0x5581ee,null))[_0x3e1e('0x37')](function(_0x5f436f){var _0x32b5ef=_0x5e148e[_0x3e1e('0x24')][_0x3e1e('0x67')]?0x1f4:_0x5f436f[_0x3e1e('0x68')]||0x1f4;logger['error'](_0x3e1e('0x69'),'getFields',_0x32b5ef,JSON[_0x3e1e('0x6a')](_0x5f436f));delete _0x5f436f['name'];if(_0x32b5ef===0x191){_0x32b5ef=0x190;}_0x5581ee[_0x3e1e('0x19')](_0x32b5ef)[_0x3e1e('0x20')](_0x5e148e['query'][_0x3e1e('0x67')]?{'message':_0x3e1e('0x6b'),'statusCode':_0x5f436f[_0x3e1e('0x68')]}:_0x5f436f);});};
\ No newline at end of file
index 70de646..49846e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dd9=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','lodash','util'];(function(_0x2c5322,_0x203341){var _0x5c19a2=function(_0x35becc){while(--_0x35becc){_0x2c5322['push'](_0x2c5322['shift']());}};_0x5c19a2(++_0x203341);}(_0x1dd9,0x196));var _0x91dd=function(_0xbcbe82,_0x27146d){_0xbcbe82=_0xbcbe82-0x0;var _0xcdee18=_0x1dd9[_0xbcbe82];return _0xcdee18;};'use strict';var _=require(_0x91dd('0x0'));var util=require(_0x91dd('0x1'));var logger=require(_0x91dd('0x2'))(_0x91dd('0x3'));var moment=require(_0x91dd('0x4'));var BPromise=require(_0x91dd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91dd('0x6'));var rimraf=require(_0x91dd('0x7'));var config=require(_0x91dd('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x91dd('0x9'));module[_0x91dd('0xa')]=function(_0x5e63fd,_0x1f3295){return _0x5e63fd[_0x91dd('0xb')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa67b=['path','../../config/environment','../../components/integrations/configuration','exports','define','ZendeskAccount','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4cbe2e,_0x12c0a6){var _0x33e106=function(_0x171dae){while(--_0x171dae){_0x4cbe2e['push'](_0x4cbe2e['shift']());}};_0x33e106(++_0x12c0a6);}(_0xa67b,0x10e));var _0xba67=function(_0x338f3a,_0x3d8e57){_0x338f3a=_0x338f3a-0x0;var _0x405bb9=_0xa67b[_0x338f3a];return _0x405bb9;};'use strict';var _=require(_0xba67('0x0'));var util=require(_0xba67('0x1'));var logger=require(_0xba67('0x2'))('api');var moment=require(_0xba67('0x3'));var BPromise=require(_0xba67('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba67('0x5'));var rimraf=require('rimraf');var config=require(_0xba67('0x6'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xba67('0x7'));module[_0xba67('0x8')]=function(_0x15daa7,_0x12a1dc){return _0x15daa7[_0xba67('0x9')](_0xba67('0xa'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36ac87d..1e9394e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0351=['info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','limit','include','model','find','raw','map','ShowZendeskAccount','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x0351,0x128));var _0x1035=function(_0x54acc2,_0xa08fa7){_0x54acc2=_0x54acc2-0x0;var _0x1f5f7f=_0x0351[_0x54acc2];return _0x1f5f7f;};'use strict';var _=require('lodash');var util=require(_0x1035('0x0'));var moment=require(_0x1035('0x1'));var BPromise=require(_0x1035('0x2'));var rs=require(_0x1035('0x3'));var fs=require('fs');var Redis=require(_0x1035('0x4'));var db=require(_0x1035('0x5'))['db'];var utils=require(_0x1035('0x6'));var logger=require(_0x1035('0x7'))('rpc');var config=require(_0x1035('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1035('0x9')][_0x1035('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5aa292,_0x13cab8,_0x301b07){return new BPromise(function(_0x5d9857,_0x49e38f){return client['request'](_0x5aa292,_0x301b07)[_0x1035('0xb')](function(_0x5cfc36){logger['info'](_0x1035('0xc'),_0x13cab8,_0x1035('0xd'));logger[_0x1035('0xe')](_0x1035('0xf'),_0x13cab8,'request\x20sent',JSON[_0x1035('0x10')](_0x5cfc36));if(_0x5cfc36['error']){if(_0x5cfc36[_0x1035('0x11')]['code']===0x1f4){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x13cab8,_0x5cfc36[_0x1035('0x11')][_0x1035('0x12')]);return _0x49e38f(_0x5cfc36['error'][_0x1035('0x12')]);}logger[_0x1035('0x11')](_0x1035('0xc'),_0x13cab8,_0x5cfc36[_0x1035('0x11')][_0x1035('0x12')]);return _0x5d9857(_0x5cfc36['error'][_0x1035('0x12')]);}else{logger[_0x1035('0x13')]('ZendeskAccount,\x20%s,\x20%s',_0x13cab8,_0x1035('0xd'));_0x5d9857(_0x5cfc36[_0x1035('0x14')][_0x1035('0x12')]);}})[_0x1035('0x15')](function(_0x197b85){logger['error'](_0x1035('0xc'),_0x13cab8,_0x197b85);_0x49e38f(_0x197b85);});});}exports[_0x1035('0x16')]=function(_0x4b4e74){var _0x57031b=this;return new Promise(function(_0x25f1ab,_0x31b382){return db[_0x1035('0x17')][_0x1035('0x18')]({'raw':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74[_0x1035('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74[_0x1035('0x19')][_0x1035('0x1a')]||null:null,'attributes':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74['options'][_0x1035('0x1b')]||null:null,'limit':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74['options'][_0x1035('0x1c')]||null:null,'include':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74[_0x1035('0x19')][_0x1035('0x1d')]?_['map'](_0x4b4e74['options']['include'],function(_0x58518b){return{'model':db[_0x58518b[_0x1035('0x1e')]],'as':_0x58518b['as'],'attributes':_0x58518b['attributes'],'include':_0x58518b[_0x1035('0x1d')]?_['map'](_0x58518b[_0x1035('0x1d')],function(_0x210ed0){return{'model':db[_0x210ed0[_0x1035('0x1e')]],'as':_0x210ed0['as'],'attributes':_0x210ed0[_0x1035('0x1b')],'include':_0x210ed0['include']?_['map'](_0x210ed0[_0x1035('0x1d')],function(_0xebff31){return{'model':db[_0xebff31[_0x1035('0x1e')]],'as':_0xebff31['as'],'attributes':_0xebff31[_0x1035('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x1035('0xb')](function(_0x362c13){logger[_0x1035('0x13')](_0x1035('0x16'),_0x4b4e74);logger[_0x1035('0xe')](_0x1035('0x16'),_0x4b4e74,JSON[_0x1035('0x10')](_0x362c13));_0x25f1ab(_0x362c13);})[_0x1035('0x15')](function(_0x37204c){logger[_0x1035('0x11')](_0x1035('0x16'),_0x37204c[_0x1035('0x12')],_0x4b4e74);_0x31b382(_0x57031b['error'](0x1f4,_0x37204c[_0x1035('0x12')]));});});};exports['ShowZendeskAccount']=function(_0x365563){var _0x2e0d15=this;return new Promise(function(_0x576054,_0x57b16f){return db[_0x1035('0x17')][_0x1035('0x1f')]({'raw':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x20')]===undefined?!![]:![]:!![],'where':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x1a')]||null:null,'attributes':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x1b')]||null:null,'include':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x1d')]?_[_0x1035('0x21')](_0x365563[_0x1035('0x19')][_0x1035('0x1d')],function(_0xe24f01){return{'model':db[_0xe24f01[_0x1035('0x1e')]],'as':_0xe24f01['as'],'attributes':_0xe24f01[_0x1035('0x1b')],'include':_0xe24f01[_0x1035('0x1d')]?_[_0x1035('0x21')](_0xe24f01[_0x1035('0x1d')],function(_0x218be7){return{'model':db[_0x218be7[_0x1035('0x1e')]],'as':_0x218be7['as'],'attributes':_0x218be7[_0x1035('0x1b')],'include':_0x218be7[_0x1035('0x1d')]?_[_0x1035('0x21')](_0x218be7[_0x1035('0x1d')],function(_0x5d51b5){return{'model':db[_0x5d51b5[_0x1035('0x1e')]],'as':_0x5d51b5['as'],'attributes':_0x5d51b5['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ffca7){logger[_0x1035('0x13')](_0x1035('0x22'),_0x365563);logger[_0x1035('0xe')]('ShowZendeskAccount',_0x365563,JSON['stringify'](_0x1ffca7));_0x576054(_0x1ffca7);})[_0x1035('0x15')](function(_0x1ee795){logger['error']('ShowZendeskAccount',_0x1ee795[_0x1035('0x12')],_0x365563);_0x57b16f(_0x2e0d15[_0x1035('0x11')](0x1f4,_0x1ee795[_0x1035('0x12')]));});});};
\ No newline at end of file
+var _0x361b=['ZendeskAccount','options','raw','where','include','map','model','attributes','GetZendeskAccount','ShowZendeskAccount','find','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','catch'];(function(_0xd3bdab,_0x5d784a){var _0x1c3178=function(_0x4f7ef4){while(--_0x4f7ef4){_0xd3bdab['push'](_0xd3bdab['shift']());}};_0x1c3178(++_0x5d784a);}(_0x361b,0x97));var _0xb361=function(_0x4c7d7e,_0x3450a1){_0x4c7d7e=_0x4c7d7e-0x0;var _0x2a8d94=_0x361b[_0x4c7d7e];return _0x2a8d94;};'use strict';var _=require(_0xb361('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb361('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb361('0x2'));var db=require(_0xb361('0x3'))['db'];var utils=require(_0xb361('0x4'));var logger=require(_0xb361('0x5'))(_0xb361('0x6'));var config=require(_0xb361('0x7'));var jayson=require(_0xb361('0x8'));var client=jayson[_0xb361('0x9')][_0xb361('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32a10f,_0x413f23,_0x4d9bae){return new BPromise(function(_0x553d93,_0x546a1c){return client[_0xb361('0xb')](_0x32a10f,_0x4d9bae)[_0xb361('0xc')](function(_0x46bec2){logger[_0xb361('0xd')]('ZendeskAccount,\x20%s,\x20%s',_0x413f23,_0xb361('0xe'));logger[_0xb361('0xf')](_0xb361('0x10'),_0x413f23,_0xb361('0xe'),JSON[_0xb361('0x11')](_0x46bec2));if(_0x46bec2['error']){if(_0x46bec2[_0xb361('0x12')][_0xb361('0x13')]===0x1f4){logger['error'](_0xb361('0x14'),_0x413f23,_0x46bec2['error'][_0xb361('0x15')]);return _0x546a1c(_0x46bec2['error'][_0xb361('0x15')]);}logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x413f23,_0x46bec2[_0xb361('0x12')][_0xb361('0x15')]);return _0x553d93(_0x46bec2[_0xb361('0x12')][_0xb361('0x15')]);}else{logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x413f23,'request\x20sent');_0x553d93(_0x46bec2[_0xb361('0x16')][_0xb361('0x15')]);}})[_0xb361('0x17')](function(_0x114d23){logger[_0xb361('0x12')](_0xb361('0x14'),_0x413f23,_0x114d23);_0x546a1c(_0x114d23);});});}exports['GetZendeskAccount']=function(_0x21b876){var _0x272ae3=this;return new Promise(function(_0x15e06c,_0x4bd488){return db[_0xb361('0x18')]['findAll']({'raw':_0x21b876[_0xb361('0x19')]?_0x21b876['options'][_0xb361('0x1a')]===undefined?!![]:![]:!![],'where':_0x21b876[_0xb361('0x19')]?_0x21b876[_0xb361('0x19')][_0xb361('0x1b')]||null:null,'attributes':_0x21b876['options']?_0x21b876[_0xb361('0x19')]['attributes']||null:null,'limit':_0x21b876['options']?_0x21b876[_0xb361('0x19')]['limit']||null:null,'include':_0x21b876[_0xb361('0x19')]?_0x21b876['options'][_0xb361('0x1c')]?_[_0xb361('0x1d')](_0x21b876['options'][_0xb361('0x1c')],function(_0x125608){return{'model':db[_0x125608['model']],'as':_0x125608['as'],'attributes':_0x125608['attributes'],'include':_0x125608[_0xb361('0x1c')]?_[_0xb361('0x1d')](_0x125608[_0xb361('0x1c')],function(_0x417d90){return{'model':db[_0x417d90[_0xb361('0x1e')]],'as':_0x417d90['as'],'attributes':_0x417d90[_0xb361('0x1f')],'include':_0x417d90[_0xb361('0x1c')]?_[_0xb361('0x1d')](_0x417d90[_0xb361('0x1c')],function(_0x472f0c){return{'model':db[_0x472f0c[_0xb361('0x1e')]],'as':_0x472f0c['as'],'attributes':_0x472f0c[_0xb361('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb361('0xc')](function(_0x449164){logger[_0xb361('0xd')](_0xb361('0x20'),_0x21b876);logger['debug']('GetZendeskAccount',_0x21b876,JSON[_0xb361('0x11')](_0x449164));_0x15e06c(_0x449164);})[_0xb361('0x17')](function(_0x3c4711){logger['error'](_0xb361('0x20'),_0x3c4711[_0xb361('0x15')],_0x21b876);_0x4bd488(_0x272ae3['error'](0x1f4,_0x3c4711[_0xb361('0x15')]));});});};exports[_0xb361('0x21')]=function(_0x29eac0){var _0x4d6f4f=this;return new Promise(function(_0x2b44ae,_0x5c5959){return db[_0xb361('0x18')][_0xb361('0x22')]({'raw':_0x29eac0[_0xb361('0x19')]?_0x29eac0[_0xb361('0x19')][_0xb361('0x1a')]===undefined?!![]:![]:!![],'where':_0x29eac0['options']?_0x29eac0[_0xb361('0x19')][_0xb361('0x1b')]||null:null,'attributes':_0x29eac0[_0xb361('0x19')]?_0x29eac0[_0xb361('0x19')]['attributes']||null:null,'include':_0x29eac0[_0xb361('0x19')]?_0x29eac0[_0xb361('0x19')][_0xb361('0x1c')]?_[_0xb361('0x1d')](_0x29eac0[_0xb361('0x19')]['include'],function(_0x50e2af){return{'model':db[_0x50e2af[_0xb361('0x1e')]],'as':_0x50e2af['as'],'attributes':_0x50e2af[_0xb361('0x1f')],'include':_0x50e2af[_0xb361('0x1c')]?_[_0xb361('0x1d')](_0x50e2af[_0xb361('0x1c')],function(_0x6fdd3e){return{'model':db[_0x6fdd3e[_0xb361('0x1e')]],'as':_0x6fdd3e['as'],'attributes':_0x6fdd3e[_0xb361('0x1f')],'include':_0x6fdd3e['include']?_[_0xb361('0x1d')](_0x6fdd3e['include'],function(_0x110531){return{'model':db[_0x110531[_0xb361('0x1e')]],'as':_0x110531['as'],'attributes':_0x110531[_0xb361('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb361('0xc')](function(_0x23cbea){logger[_0xb361('0xd')]('ShowZendeskAccount',_0x29eac0);logger[_0xb361('0xf')](_0xb361('0x21'),_0x29eac0,JSON[_0xb361('0x11')](_0x23cbea));_0x2b44ae(_0x23cbea);})[_0xb361('0x17')](function(_0x29c844){logger[_0xb361('0x12')](_0xb361('0x21'),_0x29c844[_0xb361('0x15')],_0x29eac0);_0x5c5959(_0x4d6f4f[_0xb361('0x12')](0x1f4,_0x29c844[_0xb361('0x15')]));});});};
\ No newline at end of file
index 57298b9..bae8a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags'];(function(_0x42d80a,_0x3b76fb){var _0x56a4b7=function(_0x312582){while(--_0x312582){_0x42d80a['push'](_0x42d80a['shift']());}};_0x56a4b7(++_0x3b76fb);}(_0x0bb5,0x148));var _0x50bb=function(_0x766bf4,_0x138b96){_0x766bf4=_0x766bf4-0x0;var _0x531ace=_0x0bb5[_0x766bf4];return _0x531ace;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id/fields',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x9')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x9')](_0x50bb('0x12'),auth['isAuthenticated'](),controller[_0x50bb('0x13')]);router['post']('/',auth[_0x50bb('0xb')](),controller[_0x50bb('0x14')]);router[_0x50bb('0x15')]('/:id/tags',auth[_0x50bb('0xb')](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')]('/:id',auth[_0x50bb('0xb')](),controller['update']);router[_0x50bb('0x18')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x19')]);module[_0x50bb('0x1a')]=router;
\ No newline at end of file
+var _0x5eb8=['getTags','post','/:id/tags','setTags','put','update','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x1e0c7f,_0x5f01a5){var _0x2f6fe6=function(_0xfed846){while(--_0xfed846){_0x1e0c7f['push'](_0x1e0c7f['shift']());}};_0x2f6fe6(++_0x5f01a5);}(_0x5eb8,0xb0));var _0x85eb=function(_0x3c4dad,_0x25ffd5){_0x3c4dad=_0x3c4dad-0x0;var _0x1a4f49=_0x5eb8[_0x3c4dad];return _0x1a4f49;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['get'](_0x85eb('0xe'),auth['isAuthenticated'](),controller[_0x85eb('0xf')]);router[_0x85eb('0x9')](_0x85eb('0x10'),auth[_0x85eb('0xa')](),controller[_0x85eb('0x11')]);router[_0x85eb('0x9')](_0x85eb('0x12'),auth['isAuthenticated'](),controller[_0x85eb('0x13')]);router[_0x85eb('0x9')]('/:id/tags',auth[_0x85eb('0xa')](),controller[_0x85eb('0x14')]);router[_0x85eb('0x15')]('/',auth[_0x85eb('0xa')](),controller['create']);router['post'](_0x85eb('0x16'),auth['isAuthenticated'](),controller[_0x85eb('0x17')]);router[_0x85eb('0x18')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0x19')]);router['delete'](_0x85eb('0xc'),auth['isAuthenticated'](),controller[_0x85eb('0x1a')]);module[_0x85eb('0x1b')]=router;
\ No newline at end of file
index add70c9..dae3c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x476f=['exports'];(function(_0x2bbd2d,_0x37c3c4){var _0x257dc9=function(_0x1928ff){while(--_0x1928ff){_0x2bbd2d['push'](_0x2bbd2d['shift']());}};_0x257dc9(++_0x37c3c4);}(_0x476f,0x73));var _0xf476=function(_0x4b6a9a,_0x38b0c1){_0x4b6a9a=_0x4b6a9a-0x0;var _0x3a4fa7=_0x476f[_0x4b6a9a];return _0x3a4fa7;};'use strict';var Sequelize=require('sequelize');module[_0xf476('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x69f4=['STRING','exports'];(function(_0x1a8e56,_0x5da73d){var _0x12ebc1=function(_0x5ad5b6){while(--_0x5ad5b6){_0x1a8e56['push'](_0x1a8e56['shift']());}};_0x12ebc1(++_0x5da73d);}(_0x69f4,0x6d));var _0x469f=function(_0x4d5c23,_0x27d341){_0x4d5c23=_0x4d5c23-0x0;var _0x522834=_0x69f4[_0x4d5c23];return _0x522834;};'use strict';var Sequelize=require('sequelize');module[_0x469f('0x0')]={'name':{'type':Sequelize[_0x469f('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b4df874..f8b6fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfd=['VIRTUAL','options','includeAll','rows','show','params','fields','include','find','catch','create','body','findOne','ZendeskField','order','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge'];(function(_0x25a51a,_0x52cc6c){var _0x333647=function(_0x21e302){while(--_0x21e302){_0x25a51a['push'](_0x25a51a['shift']());}};_0x333647(++_0x52cc6c);}(_0x0cfd,0xbb));var _0xd0cf=function(_0x1920d4,_0x148a71){_0x1920d4=_0x1920d4-0x0;var _0x578571=_0x0cfd[_0x1920d4];return _0x578571;};'use strict';var emlformat=require(_0xd0cf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd0cf('0x1'));var rp=require(_0xd0cf('0x2'));var moment=require(_0xd0cf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd0cf('0x4'));var util=require(_0xd0cf('0x5'));var path=require('path');var sox=require(_0xd0cf('0x6'));var csv=require(_0xd0cf('0x7'));var ejs=require(_0xd0cf('0x8'));var fs=require('fs');var fs_extra=require(_0xd0cf('0x9'));var _=require(_0xd0cf('0xa'));var squel=require(_0xd0cf('0xb'));var crypto=require('crypto');var jsforce=require(_0xd0cf('0xc'));var deskjs=require(_0xd0cf('0xd'));var toCsv=require(_0xd0cf('0x7'));var querystring=require('querystring');var Papa=require(_0xd0cf('0xe'));var Redis=require(_0xd0cf('0xf'));var authService=require(_0xd0cf('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd0cf('0x11'));var hardwareService=require(_0xd0cf('0x12'));var logger=require(_0xd0cf('0x13'))(_0xd0cf('0x14'));var utils=require(_0xd0cf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd0cf('0x16'));var db=require(_0xd0cf('0x17'))['db'];function respondWithStatusCode(_0x184e97,_0x1bc963){_0x1bc963=_0x1bc963||0xcc;return function(_0xb8abbe){if(_0xb8abbe){return _0x184e97[_0xd0cf('0x18')](_0x1bc963);}return _0x184e97[_0xd0cf('0x19')](_0x1bc963)[_0xd0cf('0x1a')]();};}function respondWithResult(_0x554dfa,_0x1946f3){_0x1946f3=_0x1946f3||0xc8;return function(_0x34903e){if(_0x34903e){return _0x554dfa[_0xd0cf('0x19')](_0x1946f3)[_0xd0cf('0x1b')](_0x34903e);}};}function respondWithFilteredResult(_0x35e982,_0xbba5c2){return function(_0x10e7c1){if(_0x10e7c1){var _0x4bacea=typeof _0xbba5c2[_0xd0cf('0x1c')]===_0xd0cf('0x1d')&&typeof _0xbba5c2[_0xd0cf('0x1e')]==='undefined';var _0x238f04=_0x10e7c1[_0xd0cf('0x1f')];var _0x4ff948=_0x4bacea?0x0:_0xbba5c2[_0xd0cf('0x1c')];var _0x10474c=_0x4bacea?_0x10e7c1[_0xd0cf('0x1f')]:_0xbba5c2[_0xd0cf('0x1c')]+_0xbba5c2[_0xd0cf('0x1e')];var _0x267ec3;if(_0x10474c>=_0x238f04){_0x10474c=_0x238f04;_0x267ec3=0xc8;}else{_0x267ec3=0xce;}_0x35e982['status'](_0x267ec3);return _0x35e982['set'](_0xd0cf('0x20'),_0x4ff948+'-'+_0x10474c+'/'+_0x238f04)[_0xd0cf('0x1b')](_0x10e7c1);}return null;};}function patchUpdates(_0x1056c2){return function(_0x3d065a){try{jsonpatch[_0xd0cf('0x21')](_0x3d065a,_0x1056c2,!![]);}catch(_0x12bb18){return BPromise[_0xd0cf('0x22')](_0x12bb18);}return _0x3d065a[_0xd0cf('0x23')]();};}function saveUpdates(_0x48ccb5,_0x21375c){return function(_0x611cd6){if(_0x611cd6){return _0x611cd6[_0xd0cf('0x24')](_0x48ccb5)['then'](function(_0x3f130e){return _0x3f130e;});}return null;};}function removeEntity(_0x4ab31c,_0x49edae){return function(_0x2e01a3){if(_0x2e01a3){return _0x2e01a3[_0xd0cf('0x25')]()[_0xd0cf('0x26')](function(){_0x4ab31c[_0xd0cf('0x19')](0xcc)[_0xd0cf('0x1a')]();});}};}function handleEntityNotFound(_0x2bc41d,_0x3654b9){return function(_0x2bf0ff){if(!_0x2bf0ff){_0x2bc41d[_0xd0cf('0x18')](0x194);}return _0x2bf0ff;};}function handleError(_0x330317,_0x5ad037){_0x5ad037=_0x5ad037||0x1f4;return function(_0x1900d9){logger['error'](_0x1900d9[_0xd0cf('0x27')]);if(_0x1900d9[_0xd0cf('0x28')]){delete _0x1900d9['name'];}_0x330317[_0xd0cf('0x19')](_0x5ad037)[_0xd0cf('0x29')](_0x1900d9);};}exports['index']=function(_0xb4344c,_0x38a085){var _0x349e9a={},_0x510107={},_0x2847c1={'count':0x0,'rows':[]};var _0x27f34f=_['map'](db[_0xd0cf('0x2a')][_0xd0cf('0x2b')],function(_0x5e2cc6){return{'name':_0x5e2cc6[_0xd0cf('0x2c')],'type':_0x5e2cc6[_0xd0cf('0x2d')][_0xd0cf('0x2e')]};});_0x510107[_0xd0cf('0x2f')]=_[_0xd0cf('0x30')](_0x27f34f,_0xd0cf('0x28'));_0x510107[_0xd0cf('0x31')]=_[_0xd0cf('0x32')](_0xb4344c[_0xd0cf('0x31')]);_0x510107['filters']=_[_0xd0cf('0x33')](_0x510107['model'],_0x510107[_0xd0cf('0x31')]);_0x349e9a[_0xd0cf('0x34')]=_[_0xd0cf('0x33')](_0x510107[_0xd0cf('0x2f')],qs['fields'](_0xb4344c[_0xd0cf('0x31')]['fields']));_0x349e9a[_0xd0cf('0x34')]=_0x349e9a[_0xd0cf('0x34')][_0xd0cf('0x35')]?_0x349e9a['attributes']:_0x510107[_0xd0cf('0x2f')];if(!_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x349e9a[_0xd0cf('0x1e')]=qs[_0xd0cf('0x1e')](_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x349e9a['offset']=qs[_0xd0cf('0x1c')](_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}_0x349e9a['order']=qs[_0xd0cf('0x38')](_0xb4344c['query']['sort']);_0x349e9a[_0xd0cf('0x39')]=qs['filters'](_[_0xd0cf('0x3a')](_0xb4344c['query'],_0x510107[_0xd0cf('0x3b')]),_0x27f34f);if(_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x3c')]){_0x349e9a[_0xd0cf('0x39')]=_[_0xd0cf('0x3d')](_0x349e9a['where'],{'$or':_[_0xd0cf('0x30')](_0x27f34f,function(_0x15a248){if(_0x15a248['type']!==_0xd0cf('0x3e')){var _0x26e0e6={};_0x26e0e6[_0x15a248[_0xd0cf('0x28')]]={'$like':'%'+_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x3c')]+'%'};return _0x26e0e6;}})});}_0x349e9a=_[_0xd0cf('0x3d')]({},_0x349e9a,_0xb4344c[_0xd0cf('0x3f')]);var _0x1e7b46={'where':_0x349e9a[_0xd0cf('0x39')]};return db[_0xd0cf('0x2a')][_0xd0cf('0x1f')](_0x1e7b46)[_0xd0cf('0x26')](function(_0x56b5ba){_0x2847c1[_0xd0cf('0x1f')]=_0x56b5ba;if(_0xb4344c['query'][_0xd0cf('0x40')]){_0x349e9a['include']=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x349e9a);})[_0xd0cf('0x26')](function(_0x4ed7be){_0x2847c1[_0xd0cf('0x41')]=_0x4ed7be;return _0x2847c1;})[_0xd0cf('0x26')](respondWithFilteredResult(_0x38a085,_0x349e9a))['catch'](handleError(_0x38a085,null));};exports[_0xd0cf('0x42')]=function(_0x78b1cf,_0x527c52){var _0x43b6da={'raw':![],'where':{'id':_0x78b1cf[_0xd0cf('0x43')]['id']}},_0x4fcb12={};_0x4fcb12[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db['ZendeskConfiguration'][_0xd0cf('0x2b')]);_0x4fcb12['query']=_[_0xd0cf('0x32')](_0x78b1cf[_0xd0cf('0x31')]);_0x4fcb12[_0xd0cf('0x3b')]=_[_0xd0cf('0x33')](_0x4fcb12['model'],_0x4fcb12[_0xd0cf('0x31')]);_0x43b6da[_0xd0cf('0x34')]=_[_0xd0cf('0x33')](_0x4fcb12[_0xd0cf('0x2f')],qs[_0xd0cf('0x44')](_0x78b1cf[_0xd0cf('0x31')][_0xd0cf('0x44')]));_0x43b6da[_0xd0cf('0x34')]=_0x43b6da[_0xd0cf('0x34')]['length']?_0x43b6da[_0xd0cf('0x34')]:_0x4fcb12[_0xd0cf('0x2f')];if(_0x78b1cf[_0xd0cf('0x31')][_0xd0cf('0x40')]){_0x43b6da[_0xd0cf('0x45')]=[{'all':!![]}];}_0x43b6da=_[_0xd0cf('0x3d')]({},_0x43b6da,_0x78b1cf[_0xd0cf('0x3f')]);return db['ZendeskConfiguration'][_0xd0cf('0x46')](_0x43b6da)[_0xd0cf('0x26')](handleEntityNotFound(_0x527c52,null))[_0xd0cf('0x26')](respondWithResult(_0x527c52,null))[_0xd0cf('0x47')](handleError(_0x527c52,null));};exports[_0xd0cf('0x48')]=function(_0x43b9ee,_0x193492){return db['ZendeskConfiguration'][_0xd0cf('0x48')](_0x43b9ee[_0xd0cf('0x49')],{})[_0xd0cf('0x26')](respondWithResult(_0x193492,0xc9))[_0xd0cf('0x47')](handleError(_0x193492,null));};exports['update']=function(_0x28d71c,_0x260b19){if(_0x28d71c['body']['id']){delete _0x28d71c[_0xd0cf('0x49')]['id'];}return db[_0xd0cf('0x2a')]['find']({'where':{'id':_0x28d71c[_0xd0cf('0x43')]['id']}})['then'](handleEntityNotFound(_0x260b19,null))[_0xd0cf('0x26')](saveUpdates(_0x28d71c[_0xd0cf('0x49')],null))['then'](respondWithResult(_0x260b19,null))[_0xd0cf('0x47')](handleError(_0x260b19,null));};exports[_0xd0cf('0x25')]=function(_0x4d6e3b,_0x44f8b9){return db[_0xd0cf('0x2a')]['find']({'where':{'id':_0x4d6e3b['params']['id']}})['then'](handleEntityNotFound(_0x44f8b9,null))[_0xd0cf('0x26')](removeEntity(_0x44f8b9,null))[_0xd0cf('0x47')](handleError(_0x44f8b9,null));};exports['getFields']=function(_0x3db9c1,_0x79a66a,_0x1d7109){var _0x568cd0={};var _0x615312={};var _0x35fcdb;var _0x4c1ec0;return db['ZendeskConfiguration'][_0xd0cf('0x4a')]({'where':{'id':_0x3db9c1[_0xd0cf('0x43')]['id']}})['then'](handleEntityNotFound(_0x79a66a,null))['then'](function(_0x14bacc){if(_0x14bacc){_0x35fcdb=_0x14bacc;_0x615312[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db[_0xd0cf('0x4b')][_0xd0cf('0x2b')]);_0x615312[_0xd0cf('0x31')]=_['keys'](_0x3db9c1[_0xd0cf('0x31')]);_0x615312[_0xd0cf('0x3b')]=_[_0xd0cf('0x33')](_0x615312['model'],_0x615312[_0xd0cf('0x31')]);_0x568cd0[_0xd0cf('0x34')]=_['intersection'](_0x615312[_0xd0cf('0x2f')],qs[_0xd0cf('0x44')](_0x3db9c1[_0xd0cf('0x31')]['fields']));_0x568cd0[_0xd0cf('0x34')]=_0x568cd0[_0xd0cf('0x34')][_0xd0cf('0x35')]?_0x568cd0[_0xd0cf('0x34')]:_0x615312[_0xd0cf('0x2f')];_0x568cd0[_0xd0cf('0x4c')]=qs[_0xd0cf('0x38')](_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x38')]);_0x568cd0[_0xd0cf('0x39')]=qs[_0xd0cf('0x3b')](_['pick'](_0x3db9c1['query'],_0x615312['filters']));if(_0x3db9c1[_0xd0cf('0x31')]['filter']){_0x568cd0['where']=_[_0xd0cf('0x3d')](_0x568cd0[_0xd0cf('0x39')],{'$or':_[_0xd0cf('0x30')](_0x568cd0[_0xd0cf('0x34')],function(_0xc937cd){var _0x182510={};_0x182510[_0xc937cd]={'$like':'%'+_0x3db9c1['query'][_0xd0cf('0x3c')]+'%'};return _0x182510;})});}_0x568cd0=_['merge']({},_0x568cd0,_0x3db9c1[_0xd0cf('0x3f')]);return _0x35fcdb[_0xd0cf('0x4d')](_0x568cd0);}})[_0xd0cf('0x26')](function(_0x30531b){if(_0x30531b){_0x4c1ec0=_0x30531b[_0xd0cf('0x35')];if(!_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x568cd0[_0xd0cf('0x1e')]=qs[_0xd0cf('0x1e')](_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x568cd0[_0xd0cf('0x1c')]=qs['offset'](_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x35fcdb[_0xd0cf('0x4d')](_0x568cd0);}})[_0xd0cf('0x26')](function(_0x3a9b6b){if(_0x3a9b6b){return _0x3a9b6b?{'count':_0x4c1ec0,'rows':_0x3a9b6b}:null;}})[_0xd0cf('0x26')](respondWithResult(_0x79a66a,null))[_0xd0cf('0x47')](handleError(_0x79a66a,null));};exports[_0xd0cf('0x4e')]=function(_0x144f6e,_0xc681fa,_0x5baafa){var _0x5255a0={};var _0x1be46c={};var _0x1f3055;var _0x1569d9;return db[_0xd0cf('0x2a')]['findOne']({'where':{'id':_0x144f6e[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0xc681fa,null))[_0xd0cf('0x26')](function(_0x182ca0){if(_0x182ca0){_0x1f3055=_0x182ca0;_0x1be46c[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db[_0xd0cf('0x4b')][_0xd0cf('0x2b')]);_0x1be46c[_0xd0cf('0x31')]=_[_0xd0cf('0x32')](_0x144f6e[_0xd0cf('0x31')]);_0x1be46c['filters']=_[_0xd0cf('0x33')](_0x1be46c['model'],_0x1be46c['query']);_0x5255a0[_0xd0cf('0x34')]=_[_0xd0cf('0x33')](_0x1be46c['model'],qs['fields'](_0x144f6e['query']['fields']));_0x5255a0[_0xd0cf('0x34')]=_0x5255a0['attributes'][_0xd0cf('0x35')]?_0x5255a0[_0xd0cf('0x34')]:_0x1be46c[_0xd0cf('0x2f')];_0x5255a0['order']=qs[_0xd0cf('0x38')](_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x38')]);_0x5255a0[_0xd0cf('0x39')]=qs[_0xd0cf('0x3b')](_[_0xd0cf('0x3a')](_0x144f6e['query'],_0x1be46c[_0xd0cf('0x3b')]));if(_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x3c')]){_0x5255a0['where']=_[_0xd0cf('0x3d')](_0x5255a0[_0xd0cf('0x39')],{'$or':_['map'](_0x5255a0[_0xd0cf('0x34')],function(_0x3b7acd){var _0x3254b4={};_0x3254b4[_0x3b7acd]={'$like':'%'+_0x144f6e['query'][_0xd0cf('0x3c')]+'%'};return _0x3254b4;})});}_0x5255a0=_[_0xd0cf('0x3d')]({},_0x5255a0,_0x144f6e[_0xd0cf('0x3f')]);return _0x1f3055[_0xd0cf('0x4e')](_0x5255a0);}})[_0xd0cf('0x26')](function(_0x11f673){if(_0x11f673){_0x1569d9=_0x11f673[_0xd0cf('0x35')];if(!_0x144f6e['query'][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x5255a0[_0xd0cf('0x1e')]=qs[_0xd0cf('0x1e')](_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x5255a0[_0xd0cf('0x1c')]=qs['offset'](_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x1f3055['getSubjects'](_0x5255a0);}})['then'](function(_0x5ada54){if(_0x5ada54){return _0x5ada54?{'count':_0x1569d9,'rows':_0x5ada54}:null;}})[_0xd0cf('0x26')](respondWithResult(_0xc681fa,null))[_0xd0cf('0x47')](handleError(_0xc681fa,null));};exports[_0xd0cf('0x4f')]=function(_0x3f71bb,_0x47c2c5,_0xebc4da){var _0x2e8fd3={};var _0x11f43d={};var _0x1f242e;var _0x809cd2;return db['ZendeskConfiguration'][_0xd0cf('0x4a')]({'where':{'id':_0x3f71bb[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0x47c2c5,null))[_0xd0cf('0x26')](function(_0x53051e){if(_0x53051e){_0x1f242e=_0x53051e;_0x11f43d[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db['ZendeskField'][_0xd0cf('0x2b')]);_0x11f43d['query']=_[_0xd0cf('0x32')](_0x3f71bb[_0xd0cf('0x31')]);_0x11f43d[_0xd0cf('0x3b')]=_['intersection'](_0x11f43d[_0xd0cf('0x2f')],_0x11f43d[_0xd0cf('0x31')]);_0x2e8fd3[_0xd0cf('0x34')]=_['intersection'](_0x11f43d[_0xd0cf('0x2f')],qs[_0xd0cf('0x44')](_0x3f71bb[_0xd0cf('0x31')]['fields']));_0x2e8fd3[_0xd0cf('0x34')]=_0x2e8fd3[_0xd0cf('0x34')]['length']?_0x2e8fd3[_0xd0cf('0x34')]:_0x11f43d[_0xd0cf('0x2f')];_0x2e8fd3['order']=qs['sort'](_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x38')]);_0x2e8fd3[_0xd0cf('0x39')]=qs['filters'](_[_0xd0cf('0x3a')](_0x3f71bb[_0xd0cf('0x31')],_0x11f43d[_0xd0cf('0x3b')]));if(_0x3f71bb['query'][_0xd0cf('0x3c')]){_0x2e8fd3[_0xd0cf('0x39')]=_[_0xd0cf('0x3d')](_0x2e8fd3[_0xd0cf('0x39')],{'$or':_[_0xd0cf('0x30')](_0x2e8fd3[_0xd0cf('0x34')],function(_0x406ea7){var _0x3923d2={};_0x3923d2[_0x406ea7]={'$like':'%'+_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x3c')]+'%'};return _0x3923d2;})});}_0x2e8fd3=_[_0xd0cf('0x3d')]({},_0x2e8fd3,_0x3f71bb[_0xd0cf('0x3f')]);return _0x1f242e[_0xd0cf('0x4f')](_0x2e8fd3);}})['then'](function(_0x5d3054){if(_0x5d3054){_0x809cd2=_0x5d3054[_0xd0cf('0x35')];if(!_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x36')]('nolimit')){_0x2e8fd3['limit']=qs['limit'](_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x2e8fd3[_0xd0cf('0x1c')]=qs['offset'](_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x1f242e[_0xd0cf('0x4f')](_0x2e8fd3);}})[_0xd0cf('0x26')](function(_0x840898){if(_0x840898){return _0x840898?{'count':_0x809cd2,'rows':_0x840898}:null;}})['then'](respondWithResult(_0x47c2c5,null))[_0xd0cf('0x47')](handleError(_0x47c2c5,null));};exports[_0xd0cf('0x50')]=function(_0x156b6f,_0x1f8ef2,_0x1ac09b){var _0x24ab7f={};var _0xf69fa4={};var _0x16c2f8;var _0x399b47;return db[_0xd0cf('0x2a')][_0xd0cf('0x4a')]({'where':{'id':_0x156b6f[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0x1f8ef2,null))[_0xd0cf('0x26')](function(_0x39d6c3){if(_0x39d6c3){_0x16c2f8=_0x39d6c3;_0xf69fa4[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db[_0xd0cf('0x51')]['rawAttributes']);_0xf69fa4[_0xd0cf('0x31')]=_['keys'](_0x156b6f[_0xd0cf('0x31')]);_0xf69fa4[_0xd0cf('0x3b')]=_['intersection'](_0xf69fa4[_0xd0cf('0x2f')],_0xf69fa4[_0xd0cf('0x31')]);_0x24ab7f['attributes']=_['intersection'](_0xf69fa4['model'],qs[_0xd0cf('0x44')](_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x44')]));_0x24ab7f[_0xd0cf('0x34')]=_0x24ab7f[_0xd0cf('0x34')][_0xd0cf('0x35')]?_0x24ab7f[_0xd0cf('0x34')]:_0xf69fa4['model'];_0x24ab7f['order']=qs[_0xd0cf('0x38')](_0x156b6f['query'][_0xd0cf('0x38')]);_0x24ab7f[_0xd0cf('0x39')]=qs[_0xd0cf('0x3b')](_[_0xd0cf('0x3a')](_0x156b6f[_0xd0cf('0x31')],_0xf69fa4[_0xd0cf('0x3b')]));if(_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x3c')]){_0x24ab7f[_0xd0cf('0x39')]=_['merge'](_0x24ab7f[_0xd0cf('0x39')],{'$or':_[_0xd0cf('0x30')](_0x24ab7f[_0xd0cf('0x34')],function(_0x33e0c5){var _0x56c83a={};_0x56c83a[_0x33e0c5]={'$like':'%'+_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x3c')]+'%'};return _0x56c83a;})});}_0x24ab7f=_[_0xd0cf('0x3d')]({},_0x24ab7f,_0x156b6f['options']);return _0x16c2f8[_0xd0cf('0x50')](_0x24ab7f);}})['then'](function(_0x44639e){if(_0x44639e){_0x399b47=_0x44639e[_0xd0cf('0x35')];if(!_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x24ab7f['limit']=qs['limit'](_0x156b6f[_0xd0cf('0x31')]['limit']);_0x24ab7f['offset']=qs['offset'](_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x16c2f8[_0xd0cf('0x50')](_0x24ab7f);}})['then'](function(_0x6156e9){if(_0x6156e9){return _0x6156e9?{'count':_0x399b47,'rows':_0x6156e9}:null;}})[_0xd0cf('0x26')](respondWithResult(_0x1f8ef2,null))['catch'](handleError(_0x1f8ef2,null));};exports[_0xd0cf('0x52')]=function(_0x336292,_0x81f188,_0x4a7b7c){if(_0x336292[_0xd0cf('0x49')]['id']){delete _0x336292['body']['id'];}return db[_0xd0cf('0x2a')][_0xd0cf('0x4a')]({'where':{'id':_0x336292[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0x81f188,null))['then'](function(_0x398235){if(_0x398235){return _0x398235[_0xd0cf('0x52')](_0x336292[_0xd0cf('0x49')]['ids']||[]);}return null;})[_0xd0cf('0x26')](respondWithResult(_0x81f188,null))[_0xd0cf('0x47')](handleError(_0x81f188,null));};
\ No newline at end of file
+var _0xa5cd=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','show','catch','create','body','params','destroy','find','getFields','findOne','ZendeskField','pick','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','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','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','reject','save','then','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa5cd,0xd0));var _0xda5c=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xa5cd[_0x13b8f3];return _0x1a6d06;};'use strict';var emlformat=require(_0xda5c('0x0'));var rimraf=require(_0xda5c('0x1'));var zipdir=require(_0xda5c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xda5c('0x3'));var moment=require(_0xda5c('0x4'));var BPromise=require(_0xda5c('0x5'));var Mustache=require('mustache');var util=require(_0xda5c('0x6'));var path=require(_0xda5c('0x7'));var sox=require(_0xda5c('0x8'));var csv=require(_0xda5c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda5c('0xa'));var squel=require(_0xda5c('0xb'));var crypto=require(_0xda5c('0xc'));var jsforce=require(_0xda5c('0xd'));var deskjs=require(_0xda5c('0xe'));var toCsv=require(_0xda5c('0x9'));var querystring=require(_0xda5c('0xf'));var Papa=require(_0xda5c('0x10'));var Redis=require(_0xda5c('0x11'));var authService=require(_0xda5c('0x12'));var qs=require(_0xda5c('0x13'));var as=require(_0xda5c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xda5c('0x15'))(_0xda5c('0x16'));var utils=require(_0xda5c('0x17'));var config=require(_0xda5c('0x18'));var licenseUtil=require(_0xda5c('0x19'));var db=require(_0xda5c('0x1a'))['db'];function respondWithStatusCode(_0x3fdf9f,_0x4d4399){_0x4d4399=_0x4d4399||0xcc;return function(_0x1f8144){if(_0x1f8144){return _0x3fdf9f[_0xda5c('0x1b')](_0x4d4399);}return _0x3fdf9f[_0xda5c('0x1c')](_0x4d4399)[_0xda5c('0x1d')]();};}function respondWithResult(_0x5e70f5,_0x1e8757){_0x1e8757=_0x1e8757||0xc8;return function(_0x3fc6a3){if(_0x3fc6a3){return _0x5e70f5[_0xda5c('0x1c')](_0x1e8757)['json'](_0x3fc6a3);}};}function respondWithFilteredResult(_0xb6a5df,_0x564b00){return function(_0x49b3de){if(_0x49b3de){var _0x450dcc=typeof _0x564b00[_0xda5c('0x1e')]==='undefined'&&typeof _0x564b00['limit']===_0xda5c('0x1f');var _0x3464dd=_0x49b3de[_0xda5c('0x20')];var _0x55af8d=_0x450dcc?0x0:_0x564b00[_0xda5c('0x1e')];var _0x9ec536=_0x450dcc?_0x49b3de[_0xda5c('0x20')]:_0x564b00['offset']+_0x564b00[_0xda5c('0x21')];var _0x4b351b;if(_0x9ec536>=_0x3464dd){_0x9ec536=_0x3464dd;_0x4b351b=0xc8;}else{_0x4b351b=0xce;}_0xb6a5df[_0xda5c('0x1c')](_0x4b351b);return _0xb6a5df['set'](_0xda5c('0x22'),_0x55af8d+'-'+_0x9ec536+'/'+_0x3464dd)[_0xda5c('0x23')](_0x49b3de);}return null;};}function patchUpdates(_0xc929de){return function(_0x5d6bcd){try{jsonpatch['apply'](_0x5d6bcd,_0xc929de,!![]);}catch(_0x29cc99){return BPromise[_0xda5c('0x24')](_0x29cc99);}return _0x5d6bcd[_0xda5c('0x25')]();};}function saveUpdates(_0x101b6f,_0x8f35ef){return function(_0xb875ec){if(_0xb875ec){return _0xb875ec['update'](_0x101b6f)['then'](function(_0xd0ff52){return _0xd0ff52;});}return null;};}function removeEntity(_0x420357,_0x46a989){return function(_0x23696b){if(_0x23696b){return _0x23696b['destroy']()[_0xda5c('0x26')](function(){_0x420357['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2198e9,_0x54b6b1){return function(_0x394853){if(!_0x394853){_0x2198e9['sendStatus'](0x194);}return _0x394853;};}function handleError(_0x2c1643,_0x3ce5ae){_0x3ce5ae=_0x3ce5ae||0x1f4;return function(_0x2b0690){logger['error'](_0x2b0690[_0xda5c('0x27')]);if(_0x2b0690[_0xda5c('0x28')]){delete _0x2b0690[_0xda5c('0x28')];}_0x2c1643['status'](_0x3ce5ae)[_0xda5c('0x29')](_0x2b0690);};}exports[_0xda5c('0x2a')]=function(_0x3f6bd2,_0x57807c){var _0x4f4bc4={},_0x3f739e={},_0x2fef35={'count':0x0,'rows':[]};var _0x6a8e89=_[_0xda5c('0x2b')](db[_0xda5c('0x2c')][_0xda5c('0x2d')],function(_0x4b10ad){return{'name':_0x4b10ad[_0xda5c('0x2e')],'type':_0x4b10ad[_0xda5c('0x2f')][_0xda5c('0x30')]};});_0x3f739e[_0xda5c('0x31')]=_[_0xda5c('0x2b')](_0x6a8e89,'name');_0x3f739e[_0xda5c('0x32')]=_[_0xda5c('0x33')](_0x3f6bd2[_0xda5c('0x32')]);_0x3f739e[_0xda5c('0x34')]=_[_0xda5c('0x35')](_0x3f739e[_0xda5c('0x31')],_0x3f739e[_0xda5c('0x32')]);_0x4f4bc4[_0xda5c('0x36')]=_['intersection'](_0x3f739e['model'],qs[_0xda5c('0x37')](_0x3f6bd2['query'][_0xda5c('0x37')]));_0x4f4bc4[_0xda5c('0x36')]=_0x4f4bc4[_0xda5c('0x36')][_0xda5c('0x38')]?_0x4f4bc4[_0xda5c('0x36')]:_0x3f739e[_0xda5c('0x31')];if(!_0x3f6bd2['query'][_0xda5c('0x39')]('nolimit')){_0x4f4bc4[_0xda5c('0x21')]=qs[_0xda5c('0x21')](_0x3f6bd2[_0xda5c('0x32')][_0xda5c('0x21')]);_0x4f4bc4[_0xda5c('0x1e')]=qs[_0xda5c('0x1e')](_0x3f6bd2[_0xda5c('0x32')][_0xda5c('0x1e')]);}_0x4f4bc4[_0xda5c('0x3a')]=qs['sort'](_0x3f6bd2[_0xda5c('0x32')][_0xda5c('0x3b')]);_0x4f4bc4[_0xda5c('0x3c')]=qs[_0xda5c('0x34')](_['pick'](_0x3f6bd2['query'],_0x3f739e[_0xda5c('0x34')]),_0x6a8e89);if(_0x3f6bd2[_0xda5c('0x32')][_0xda5c('0x3d')]){_0x4f4bc4[_0xda5c('0x3c')]=_[_0xda5c('0x3e')](_0x4f4bc4['where'],{'$or':_['map'](_0x6a8e89,function(_0x31f7b2){if(_0x31f7b2[_0xda5c('0x2f')]!==_0xda5c('0x3f')){var _0x4c47fd={};_0x4c47fd[_0x31f7b2[_0xda5c('0x28')]]={'$like':'%'+_0x3f6bd2[_0xda5c('0x32')][_0xda5c('0x3d')]+'%'};return _0x4c47fd;}})});}_0x4f4bc4=_[_0xda5c('0x3e')]({},_0x4f4bc4,_0x3f6bd2[_0xda5c('0x40')]);var _0x2e0173={'where':_0x4f4bc4[_0xda5c('0x3c')]};return db[_0xda5c('0x2c')][_0xda5c('0x20')](_0x2e0173)[_0xda5c('0x26')](function(_0x1634d6){_0x2fef35[_0xda5c('0x20')]=_0x1634d6;if(_0x3f6bd2[_0xda5c('0x32')][_0xda5c('0x41')]){_0x4f4bc4[_0xda5c('0x42')]=[{'all':!![]}];}return db[_0xda5c('0x2c')]['findAll'](_0x4f4bc4);})[_0xda5c('0x26')](function(_0xb8cd71){_0x2fef35[_0xda5c('0x43')]=_0xb8cd71;return _0x2fef35;})[_0xda5c('0x26')](respondWithFilteredResult(_0x57807c,_0x4f4bc4))['catch'](handleError(_0x57807c,null));};exports[_0xda5c('0x44')]=function(_0x388469,_0x1e03d9){var _0x507106={'raw':![],'where':{'id':_0x388469['params']['id']}},_0x5237f3={};_0x5237f3[_0xda5c('0x31')]=_[_0xda5c('0x33')](db[_0xda5c('0x2c')][_0xda5c('0x2d')]);_0x5237f3[_0xda5c('0x32')]=_[_0xda5c('0x33')](_0x388469[_0xda5c('0x32')]);_0x5237f3['filters']=_[_0xda5c('0x35')](_0x5237f3['model'],_0x5237f3[_0xda5c('0x32')]);_0x507106[_0xda5c('0x36')]=_[_0xda5c('0x35')](_0x5237f3[_0xda5c('0x31')],qs['fields'](_0x388469[_0xda5c('0x32')][_0xda5c('0x37')]));_0x507106[_0xda5c('0x36')]=_0x507106[_0xda5c('0x36')][_0xda5c('0x38')]?_0x507106['attributes']:_0x5237f3[_0xda5c('0x31')];if(_0x388469['query'][_0xda5c('0x41')]){_0x507106[_0xda5c('0x42')]=[{'all':!![]}];}_0x507106=_[_0xda5c('0x3e')]({},_0x507106,_0x388469[_0xda5c('0x40')]);return db['ZendeskConfiguration']['find'](_0x507106)[_0xda5c('0x26')](handleEntityNotFound(_0x1e03d9,null))['then'](respondWithResult(_0x1e03d9,null))[_0xda5c('0x45')](handleError(_0x1e03d9,null));};exports[_0xda5c('0x46')]=function(_0x224288,_0x48d13d){return db[_0xda5c('0x2c')][_0xda5c('0x46')](_0x224288[_0xda5c('0x47')],{})[_0xda5c('0x26')](respondWithResult(_0x48d13d,0xc9))['catch'](handleError(_0x48d13d,null));};exports['update']=function(_0x59a083,_0x2cb710){if(_0x59a083[_0xda5c('0x47')]['id']){delete _0x59a083[_0xda5c('0x47')]['id'];}return db[_0xda5c('0x2c')]['find']({'where':{'id':_0x59a083[_0xda5c('0x48')]['id']}})['then'](handleEntityNotFound(_0x2cb710,null))[_0xda5c('0x26')](saveUpdates(_0x59a083[_0xda5c('0x47')],null))[_0xda5c('0x26')](respondWithResult(_0x2cb710,null))['catch'](handleError(_0x2cb710,null));};exports[_0xda5c('0x49')]=function(_0x3ed5ab,_0x424a48){return db[_0xda5c('0x2c')][_0xda5c('0x4a')]({'where':{'id':_0x3ed5ab['params']['id']}})['then'](handleEntityNotFound(_0x424a48,null))[_0xda5c('0x26')](removeEntity(_0x424a48,null))[_0xda5c('0x45')](handleError(_0x424a48,null));};exports[_0xda5c('0x4b')]=function(_0x20651c,_0x47c0f6,_0xc30ad3){var _0x3f46cc={};var _0x7f0436={};var _0x356e40;var _0x312b9e;return db[_0xda5c('0x2c')][_0xda5c('0x4c')]({'where':{'id':_0x20651c[_0xda5c('0x48')]['id']}})[_0xda5c('0x26')](handleEntityNotFound(_0x47c0f6,null))[_0xda5c('0x26')](function(_0x44ab84){if(_0x44ab84){_0x356e40=_0x44ab84;_0x7f0436[_0xda5c('0x31')]=_[_0xda5c('0x33')](db[_0xda5c('0x4d')][_0xda5c('0x2d')]);_0x7f0436[_0xda5c('0x32')]=_[_0xda5c('0x33')](_0x20651c[_0xda5c('0x32')]);_0x7f0436['filters']=_[_0xda5c('0x35')](_0x7f0436['model'],_0x7f0436[_0xda5c('0x32')]);_0x3f46cc[_0xda5c('0x36')]=_['intersection'](_0x7f0436[_0xda5c('0x31')],qs[_0xda5c('0x37')](_0x20651c[_0xda5c('0x32')][_0xda5c('0x37')]));_0x3f46cc['attributes']=_0x3f46cc[_0xda5c('0x36')][_0xda5c('0x38')]?_0x3f46cc[_0xda5c('0x36')]:_0x7f0436[_0xda5c('0x31')];_0x3f46cc['order']=qs['sort'](_0x20651c[_0xda5c('0x32')][_0xda5c('0x3b')]);_0x3f46cc['where']=qs[_0xda5c('0x34')](_[_0xda5c('0x4e')](_0x20651c[_0xda5c('0x32')],_0x7f0436[_0xda5c('0x34')]));if(_0x20651c['query'][_0xda5c('0x3d')]){_0x3f46cc[_0xda5c('0x3c')]=_[_0xda5c('0x3e')](_0x3f46cc[_0xda5c('0x3c')],{'$or':_[_0xda5c('0x2b')](_0x3f46cc[_0xda5c('0x36')],function(_0x58dd85){var _0x44f038={};_0x44f038[_0x58dd85]={'$like':'%'+_0x20651c[_0xda5c('0x32')]['filter']+'%'};return _0x44f038;})});}_0x3f46cc=_[_0xda5c('0x3e')]({},_0x3f46cc,_0x20651c[_0xda5c('0x40')]);return _0x356e40[_0xda5c('0x4b')](_0x3f46cc);}})[_0xda5c('0x26')](function(_0x314d56){if(_0x314d56){_0x312b9e=_0x314d56[_0xda5c('0x38')];if(!_0x20651c[_0xda5c('0x32')][_0xda5c('0x39')](_0xda5c('0x4f'))){_0x3f46cc[_0xda5c('0x21')]=qs['limit'](_0x20651c['query'][_0xda5c('0x21')]);_0x3f46cc[_0xda5c('0x1e')]=qs[_0xda5c('0x1e')](_0x20651c['query'][_0xda5c('0x1e')]);}return _0x356e40[_0xda5c('0x4b')](_0x3f46cc);}})[_0xda5c('0x26')](function(_0x52048a){if(_0x52048a){return _0x52048a?{'count':_0x312b9e,'rows':_0x52048a}:null;}})[_0xda5c('0x26')](respondWithResult(_0x47c0f6,null))[_0xda5c('0x45')](handleError(_0x47c0f6,null));};exports['getSubjects']=function(_0x31ad95,_0x2d7c5d,_0x24f3ae){var _0x430482={};var _0x495e1c={};var _0x25ccad;var _0x57dc70;return db[_0xda5c('0x2c')][_0xda5c('0x4c')]({'where':{'id':_0x31ad95[_0xda5c('0x48')]['id']}})['then'](handleEntityNotFound(_0x2d7c5d,null))[_0xda5c('0x26')](function(_0x4100b8){if(_0x4100b8){_0x25ccad=_0x4100b8;_0x495e1c[_0xda5c('0x31')]=_['keys'](db[_0xda5c('0x4d')][_0xda5c('0x2d')]);_0x495e1c[_0xda5c('0x32')]=_[_0xda5c('0x33')](_0x31ad95[_0xda5c('0x32')]);_0x495e1c[_0xda5c('0x34')]=_['intersection'](_0x495e1c[_0xda5c('0x31')],_0x495e1c[_0xda5c('0x32')]);_0x430482['attributes']=_['intersection'](_0x495e1c[_0xda5c('0x31')],qs[_0xda5c('0x37')](_0x31ad95[_0xda5c('0x32')][_0xda5c('0x37')]));_0x430482[_0xda5c('0x36')]=_0x430482[_0xda5c('0x36')][_0xda5c('0x38')]?_0x430482['attributes']:_0x495e1c['model'];_0x430482[_0xda5c('0x3a')]=qs['sort'](_0x31ad95[_0xda5c('0x32')][_0xda5c('0x3b')]);_0x430482['where']=qs[_0xda5c('0x34')](_[_0xda5c('0x4e')](_0x31ad95['query'],_0x495e1c[_0xda5c('0x34')]));if(_0x31ad95['query'][_0xda5c('0x3d')]){_0x430482[_0xda5c('0x3c')]=_['merge'](_0x430482[_0xda5c('0x3c')],{'$or':_['map'](_0x430482[_0xda5c('0x36')],function(_0x45faa3){var _0x12bdd3={};_0x12bdd3[_0x45faa3]={'$like':'%'+_0x31ad95[_0xda5c('0x32')][_0xda5c('0x3d')]+'%'};return _0x12bdd3;})});}_0x430482=_[_0xda5c('0x3e')]({},_0x430482,_0x31ad95[_0xda5c('0x40')]);return _0x25ccad[_0xda5c('0x50')](_0x430482);}})['then'](function(_0x473c61){if(_0x473c61){_0x57dc70=_0x473c61[_0xda5c('0x38')];if(!_0x31ad95[_0xda5c('0x32')][_0xda5c('0x39')]('nolimit')){_0x430482[_0xda5c('0x21')]=qs[_0xda5c('0x21')](_0x31ad95[_0xda5c('0x32')][_0xda5c('0x21')]);_0x430482[_0xda5c('0x1e')]=qs['offset'](_0x31ad95[_0xda5c('0x32')][_0xda5c('0x1e')]);}return _0x25ccad[_0xda5c('0x50')](_0x430482);}})['then'](function(_0x39e481){if(_0x39e481){return _0x39e481?{'count':_0x57dc70,'rows':_0x39e481}:null;}})[_0xda5c('0x26')](respondWithResult(_0x2d7c5d,null))[_0xda5c('0x45')](handleError(_0x2d7c5d,null));};exports['getDescriptions']=function(_0x2dbaf3,_0x7d48c3,_0x3dba1c){var _0x277109={};var _0xc7c30b={};var _0x534e28;var _0x34cbd8;return db[_0xda5c('0x2c')][_0xda5c('0x4c')]({'where':{'id':_0x2dbaf3[_0xda5c('0x48')]['id']}})[_0xda5c('0x26')](handleEntityNotFound(_0x7d48c3,null))[_0xda5c('0x26')](function(_0x152af5){if(_0x152af5){_0x534e28=_0x152af5;_0xc7c30b['model']=_['keys'](db['ZendeskField'][_0xda5c('0x2d')]);_0xc7c30b[_0xda5c('0x32')]=_[_0xda5c('0x33')](_0x2dbaf3[_0xda5c('0x32')]);_0xc7c30b[_0xda5c('0x34')]=_[_0xda5c('0x35')](_0xc7c30b['model'],_0xc7c30b[_0xda5c('0x32')]);_0x277109[_0xda5c('0x36')]=_[_0xda5c('0x35')](_0xc7c30b[_0xda5c('0x31')],qs[_0xda5c('0x37')](_0x2dbaf3[_0xda5c('0x32')][_0xda5c('0x37')]));_0x277109['attributes']=_0x277109[_0xda5c('0x36')][_0xda5c('0x38')]?_0x277109[_0xda5c('0x36')]:_0xc7c30b[_0xda5c('0x31')];_0x277109[_0xda5c('0x3a')]=qs[_0xda5c('0x3b')](_0x2dbaf3['query'][_0xda5c('0x3b')]);_0x277109['where']=qs[_0xda5c('0x34')](_['pick'](_0x2dbaf3[_0xda5c('0x32')],_0xc7c30b[_0xda5c('0x34')]));if(_0x2dbaf3[_0xda5c('0x32')][_0xda5c('0x3d')]){_0x277109[_0xda5c('0x3c')]=_[_0xda5c('0x3e')](_0x277109[_0xda5c('0x3c')],{'$or':_['map'](_0x277109[_0xda5c('0x36')],function(_0x31e7d9){var _0x533d2a={};_0x533d2a[_0x31e7d9]={'$like':'%'+_0x2dbaf3[_0xda5c('0x32')][_0xda5c('0x3d')]+'%'};return _0x533d2a;})});}_0x277109=_[_0xda5c('0x3e')]({},_0x277109,_0x2dbaf3[_0xda5c('0x40')]);return _0x534e28[_0xda5c('0x51')](_0x277109);}})[_0xda5c('0x26')](function(_0x1eed56){if(_0x1eed56){_0x34cbd8=_0x1eed56['length'];if(!_0x2dbaf3[_0xda5c('0x32')][_0xda5c('0x39')](_0xda5c('0x4f'))){_0x277109[_0xda5c('0x21')]=qs['limit'](_0x2dbaf3[_0xda5c('0x32')][_0xda5c('0x21')]);_0x277109['offset']=qs[_0xda5c('0x1e')](_0x2dbaf3[_0xda5c('0x32')][_0xda5c('0x1e')]);}return _0x534e28['getDescriptions'](_0x277109);}})[_0xda5c('0x26')](function(_0x2d46e1){if(_0x2d46e1){return _0x2d46e1?{'count':_0x34cbd8,'rows':_0x2d46e1}:null;}})[_0xda5c('0x26')](respondWithResult(_0x7d48c3,null))[_0xda5c('0x45')](handleError(_0x7d48c3,null));};exports[_0xda5c('0x52')]=function(_0x32336e,_0x3f9c93,_0x306210){var _0x38e66b={};var _0x3b9374={};var _0x1926f8;var _0x306ea8;return db[_0xda5c('0x2c')][_0xda5c('0x4c')]({'where':{'id':_0x32336e[_0xda5c('0x48')]['id']}})[_0xda5c('0x26')](handleEntityNotFound(_0x3f9c93,null))[_0xda5c('0x26')](function(_0x39cf6f){if(_0x39cf6f){_0x1926f8=_0x39cf6f;_0x3b9374[_0xda5c('0x31')]=_[_0xda5c('0x33')](db[_0xda5c('0x53')][_0xda5c('0x2d')]);_0x3b9374[_0xda5c('0x32')]=_[_0xda5c('0x33')](_0x32336e[_0xda5c('0x32')]);_0x3b9374['filters']=_['intersection'](_0x3b9374[_0xda5c('0x31')],_0x3b9374[_0xda5c('0x32')]);_0x38e66b[_0xda5c('0x36')]=_['intersection'](_0x3b9374[_0xda5c('0x31')],qs[_0xda5c('0x37')](_0x32336e[_0xda5c('0x32')]['fields']));_0x38e66b[_0xda5c('0x36')]=_0x38e66b[_0xda5c('0x36')][_0xda5c('0x38')]?_0x38e66b[_0xda5c('0x36')]:_0x3b9374['model'];_0x38e66b['order']=qs[_0xda5c('0x3b')](_0x32336e[_0xda5c('0x32')][_0xda5c('0x3b')]);_0x38e66b[_0xda5c('0x3c')]=qs[_0xda5c('0x34')](_['pick'](_0x32336e[_0xda5c('0x32')],_0x3b9374[_0xda5c('0x34')]));if(_0x32336e[_0xda5c('0x32')][_0xda5c('0x3d')]){_0x38e66b['where']=_[_0xda5c('0x3e')](_0x38e66b[_0xda5c('0x3c')],{'$or':_[_0xda5c('0x2b')](_0x38e66b[_0xda5c('0x36')],function(_0x2102af){var _0x338004={};_0x338004[_0x2102af]={'$like':'%'+_0x32336e[_0xda5c('0x32')][_0xda5c('0x3d')]+'%'};return _0x338004;})});}_0x38e66b=_[_0xda5c('0x3e')]({},_0x38e66b,_0x32336e[_0xda5c('0x40')]);return _0x1926f8[_0xda5c('0x52')](_0x38e66b);}})['then'](function(_0x30047a){if(_0x30047a){_0x306ea8=_0x30047a[_0xda5c('0x38')];if(!_0x32336e['query'][_0xda5c('0x39')](_0xda5c('0x4f'))){_0x38e66b[_0xda5c('0x21')]=qs['limit'](_0x32336e[_0xda5c('0x32')][_0xda5c('0x21')]);_0x38e66b[_0xda5c('0x1e')]=qs['offset'](_0x32336e[_0xda5c('0x32')][_0xda5c('0x1e')]);}return _0x1926f8['getTags'](_0x38e66b);}})[_0xda5c('0x26')](function(_0x22ed32){if(_0x22ed32){return _0x22ed32?{'count':_0x306ea8,'rows':_0x22ed32}:null;}})['then'](respondWithResult(_0x3f9c93,null))[_0xda5c('0x45')](handleError(_0x3f9c93,null));};exports[_0xda5c('0x54')]=function(_0x3cea84,_0xcccc24,_0x5a0a6a){if(_0x3cea84[_0xda5c('0x47')]['id']){delete _0x3cea84[_0xda5c('0x47')]['id'];}return db[_0xda5c('0x2c')][_0xda5c('0x4c')]({'where':{'id':_0x3cea84[_0xda5c('0x48')]['id']}})[_0xda5c('0x26')](handleEntityNotFound(_0xcccc24,null))['then'](function(_0x51e4cb){if(_0x51e4cb){return _0x51e4cb[_0xda5c('0x54')](_0x3cea84[_0xda5c('0x47')][_0xda5c('0x55')]||[]);}return null;})[_0xda5c('0x26')](respondWithResult(_0xcccc24,null))['catch'](handleError(_0xcccc24,null));};
\ No newline at end of file
index b94e510..e09b9d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['rimraf','../../config/environment','ZendeskConfiguration','int_zendesk_configurations','lodash','util','moment','bluebird','request-promise','path'];(function(_0x4e08f1,_0x5ee219){var _0xf23cb9=function(_0x4b9765){while(--_0x4b9765){_0x4e08f1['push'](_0x4e08f1['shift']());}};_0xf23cb9(++_0x5ee219);}(_0xd824,0xc2));var _0x4d82=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd824[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x4d82('0x0'));var util=require(_0x4d82('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4d82('0x2'));var BPromise=require(_0x4d82('0x3'));var rp=require(_0x4d82('0x4'));var fs=require('fs');var path=require(_0x4d82('0x5'));var rimraf=require(_0x4d82('0x6'));var config=require(_0x4d82('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0xd00023,_0x583c7c){return _0xd00023['define'](_0x4d82('0x8'),attributes,{'tableName':_0x4d82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x373d=['define','ZendeskConfiguration','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x373d,0x1e2));var _0xd373=function(_0x2aad77,_0x4338df){_0x2aad77=_0x2aad77-0x0;var _0x4cd514=_0x373d[_0x2aad77];return _0x4cd514;};'use strict';var _=require(_0xd373('0x0'));var util=require('util');var logger=require(_0xd373('0x1'))(_0xd373('0x2'));var moment=require(_0xd373('0x3'));var BPromise=require(_0xd373('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd373('0x5'));var rimraf=require(_0xd373('0x6'));var config=require(_0xd373('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x31a0fb,_0x3e4443){return _0x31a0fb[_0xd373('0x8')](_0xd373('0x9'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93f0041..ed85609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74a5=['ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0xe288ab,_0x184588){var _0x4ef31b=function(_0x4455c4){while(--_0x4455c4){_0xe288ab['push'](_0xe288ab['shift']());}};_0x4ef31b(++_0x184588);}(_0x74a5,0x1ea));var _0x574a=function(_0x431714,_0x5867ea){_0x431714=_0x431714-0x0;var _0x4c4a46=_0x74a5[_0x431714];return _0x4c4a46;};'use strict';var _=require(_0x574a('0x0'));var util=require(_0x574a('0x1'));var moment=require(_0x574a('0x2'));var BPromise=require(_0x574a('0x3'));var rs=require(_0x574a('0x4'));var fs=require('fs');var Redis=require(_0x574a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x574a('0x6'));var logger=require('../../config/logger')(_0x574a('0x7'));var config=require(_0x574a('0x8'));var jayson=require(_0x574a('0x9'));var client=jayson[_0x574a('0xa')][_0x574a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1dd50b,_0x2187a1,_0x8b8c72){return new BPromise(function(_0x5070ae,_0x5528d9){return client[_0x574a('0xc')](_0x1dd50b,_0x8b8c72)[_0x574a('0xd')](function(_0x164ead){logger['info'](_0x574a('0xe'),_0x2187a1,_0x574a('0xf'));logger['debug'](_0x574a('0x10'),_0x2187a1,_0x574a('0xf'),JSON[_0x574a('0x11')](_0x164ead));if(_0x164ead[_0x574a('0x12')]){if(_0x164ead[_0x574a('0x12')][_0x574a('0x13')]===0x1f4){logger[_0x574a('0x12')](_0x574a('0xe'),_0x2187a1,_0x164ead[_0x574a('0x12')][_0x574a('0x14')]);return _0x5528d9(_0x164ead[_0x574a('0x12')][_0x574a('0x14')]);}logger[_0x574a('0x12')](_0x574a('0xe'),_0x2187a1,_0x164ead[_0x574a('0x12')][_0x574a('0x14')]);return _0x5070ae(_0x164ead['error']['message']);}else{logger['info'](_0x574a('0xe'),_0x2187a1,'request\x20sent');_0x5070ae(_0x164ead[_0x574a('0x15')][_0x574a('0x14')]);}})[_0x574a('0x16')](function(_0xb281b9){logger[_0x574a('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2187a1,_0xb281b9);_0x5528d9(_0xb281b9);});});}
\ No newline at end of file
+var _0x79c5=['../../config/logger','rpc','client','http','request','then','info','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskConfiguration,\x20%s,\x20%s','message','result','lodash','randomstring','../../mysqldb'];(function(_0x38ff0f,_0x58fc59){var _0x597aa2=function(_0x4ccce6){while(--_0x4ccce6){_0x38ff0f['push'](_0x38ff0f['shift']());}};_0x597aa2(++_0x58fc59);}(_0x79c5,0x162));var _0x579c=function(_0x580cea,_0x41fab5){_0x580cea=_0x580cea-0x0;var _0x5311c8=_0x79c5[_0x580cea];return _0x5311c8;};'use strict';var _=require(_0x579c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x579c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x579c('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x579c('0x3'))(_0x579c('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x579c('0x5')][_0x579c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x332f3a,_0x320f22,_0x1d8696){return new BPromise(function(_0x2f81c9,_0x4ceb76){return client[_0x579c('0x7')](_0x332f3a,_0x1d8696)[_0x579c('0x8')](function(_0x2c8c76){logger[_0x579c('0x9')]('ZendeskConfiguration,\x20%s,\x20%s',_0x320f22,'request\x20sent');logger[_0x579c('0xa')](_0x579c('0xb'),_0x320f22,'request\x20sent',JSON[_0x579c('0xc')](_0x2c8c76));if(_0x2c8c76['error']){if(_0x2c8c76[_0x579c('0xd')]['code']===0x1f4){logger[_0x579c('0xd')](_0x579c('0xe'),_0x320f22,_0x2c8c76['error'][_0x579c('0xf')]);return _0x4ceb76(_0x2c8c76['error'][_0x579c('0xf')]);}logger[_0x579c('0xd')](_0x579c('0xe'),_0x320f22,_0x2c8c76[_0x579c('0xd')][_0x579c('0xf')]);return _0x2f81c9(_0x2c8c76[_0x579c('0xd')][_0x579c('0xf')]);}else{logger[_0x579c('0x9')](_0x579c('0xe'),_0x320f22,'request\x20sent');_0x2f81c9(_0x2c8c76[_0x579c('0x10')]['message']);}})['catch'](function(_0x3d7947){logger[_0x579c('0xd')](_0x579c('0xe'),_0x320f22,_0x3d7947);_0x4ceb76(_0x3d7947);});});}
\ No newline at end of file
index 2fc1308..73afdd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de7=['./intZendeskField.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x49856d,_0x3f9353){var _0x9b4f5e=function(_0x34c891){while(--_0x34c891){_0x49856d['push'](_0x49856d['shift']());}};_0x9b4f5e(++_0x3f9353);}(_0x4de7,0x1e5));var _0x74de=function(_0xf05757,_0x34a0bf){_0xf05757=_0xf05757-0x0;var _0x31ec32=_0x4de7[_0xf05757];return _0x31ec32;};'use strict';var multer=require(_0x74de('0x0'));var util=require(_0x74de('0x1'));var path=require(_0x74de('0x2'));var timeout=require(_0x74de('0x3'));var express=require('express');var router=express[_0x74de('0x4')]();var fs_extra=require(_0x74de('0x5'));var auth=require(_0x74de('0x6'));var interaction=require(_0x74de('0x7'));var config=require(_0x74de('0x8'));var controller=require(_0x74de('0x9'));router[_0x74de('0xa')]('/',auth[_0x74de('0xb')](),controller[_0x74de('0xc')]);router['get']('/:id',auth[_0x74de('0xb')](),controller[_0x74de('0xd')]);router[_0x74de('0xe')]('/',auth[_0x74de('0xb')](),controller[_0x74de('0xf')]);router[_0x74de('0x10')](_0x74de('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x74de('0x12')](_0x74de('0x11'),auth[_0x74de('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe911=['get','isAuthenticated','index','/:id','show','post','put','update','destroy','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./intZendeskField.controller'];(function(_0x3ccd1d,_0x2a0ccd){var _0x367aa8=function(_0xce5bd8){while(--_0xce5bd8){_0x3ccd1d['push'](_0x3ccd1d['shift']());}};_0x367aa8(++_0x2a0ccd);}(_0xe911,0x109));var _0x1e91=function(_0x1ce0eb,_0x5363c4){_0x1ce0eb=_0x1ce0eb-0x0;var _0x4a75c6=_0xe911[_0x1ce0eb];return _0x4a75c6;};'use strict';var multer=require('multer');var util=require(_0x1e91('0x0'));var path=require(_0x1e91('0x1'));var timeout=require('connect-timeout');var express=require(_0x1e91('0x2'));var router=express['Router']();var fs_extra=require(_0x1e91('0x3'));var auth=require(_0x1e91('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1e91('0x5'));var controller=require(_0x1e91('0x6'));router[_0x1e91('0x7')]('/',auth[_0x1e91('0x8')](),controller[_0x1e91('0x9')]);router['get'](_0x1e91('0xa'),auth['isAuthenticated'](),controller[_0x1e91('0xb')]);router[_0x1e91('0xc')]('/',auth[_0x1e91('0x8')](),controller['create']);router[_0x1e91('0xd')](_0x1e91('0xa'),auth[_0x1e91('0x8')](),controller[_0x1e91('0xe')]);router['delete']('/:id',auth[_0x1e91('0x8')](),controller[_0x1e91('0xf')]);module['exports']=router;
\ No newline at end of file
index d76e581..c977538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3442=['sequelize','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN'];(function(_0x34deae,_0x451c98){var _0x4a3b76=function(_0x300dc6){while(--_0x300dc6){_0x34deae['push'](_0x34deae['shift']());}};_0x4a3b76(++_0x451c98);}(_0x3442,0xfc));var _0x2344=function(_0x41429a,_0x1a9849){_0x41429a=_0x41429a-0x0;var _0x4c20de=_0x3442[_0x41429a];return _0x4c20de;};'use strict';var Sequelize=require(_0x2344('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x2344('0x1'),_0x2344('0x2'),_0x2344('0x3'),_0x2344('0x4'),_0x2344('0x5')),'defaultValue':_0x2344('0x1')},'content':{'type':Sequelize[_0x2344('0x6')]},'key':{'type':Sequelize[_0x2344('0x6')]},'keyType':{'type':Sequelize[_0x2344('0x7')]('string',_0x2344('0x2'),_0x2344('0x3'))},'keyContent':{'type':Sequelize[_0x2344('0x6')]},'idField':{'type':Sequelize[_0x2344('0x6')]},'nameField':{'type':Sequelize[_0x2344('0x6')]},'customField':{'type':Sequelize[_0x2344('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2344('0x6')]}};
\ No newline at end of file
+var _0xfd8d=['string','variable','customVariable','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x297eea,_0x5060be){var _0x1c42d2=function(_0x3afff4){while(--_0x3afff4){_0x297eea['push'](_0x297eea['shift']());}};_0x1c42d2(++_0x5060be);}(_0xfd8d,0x99));var _0xdfd8=function(_0x1fd3b7,_0x13d9c1){_0x1fd3b7=_0x1fd3b7-0x0;var _0x5750db=_0xfd8d[_0x1fd3b7];return _0x5750db;};'use strict';var Sequelize=require(_0xdfd8('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xdfd8('0x1'),_0xdfd8('0x2'),_0xdfd8('0x3'),'keyValue','picklist'),'defaultValue':_0xdfd8('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xdfd8('0x4')]},'keyType':{'type':Sequelize[_0xdfd8('0x5')](_0xdfd8('0x1'),_0xdfd8('0x2'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xdfd8('0x4')]},'customField':{'type':Sequelize[_0xdfd8('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f6069e4..af15d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdafa=['where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','intersection','find','create','body','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xdafa,0x1c5));var _0xadaf=function(_0xd69c1b,_0x47af31){_0xd69c1b=_0xd69c1b-0x0;var _0x56762c=_0xdafa[_0xd69c1b];return _0x56762c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xadaf('0x0'));var rp=require(_0xadaf('0x1'));var moment=require(_0xadaf('0x2'));var BPromise=require(_0xadaf('0x3'));var Mustache=require(_0xadaf('0x4'));var util=require(_0xadaf('0x5'));var path=require(_0xadaf('0x6'));var sox=require('sox');var csv=require(_0xadaf('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xadaf('0x8'));var squel=require('squel');var crypto=require(_0xadaf('0x9'));var jsforce=require(_0xadaf('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xadaf('0x7'));var querystring=require(_0xadaf('0xb'));var Papa=require(_0xadaf('0xc'));var Redis=require('ioredis');var authService=require(_0xadaf('0xd'));var qs=require(_0xadaf('0xe'));var as=require(_0xadaf('0xf'));var hardwareService=require(_0xadaf('0x10'));var logger=require(_0xadaf('0x11'))('api');var utils=require(_0xadaf('0x12'));var config=require(_0xadaf('0x13'));var licenseUtil=require(_0xadaf('0x14'));var db=require(_0xadaf('0x15'))['db'];function respondWithStatusCode(_0x5c9879,_0x5664e0){_0x5664e0=_0x5664e0||0xcc;return function(_0x340cf1){if(_0x340cf1){return _0x5c9879[_0xadaf('0x16')](_0x5664e0);}return _0x5c9879['status'](_0x5664e0)[_0xadaf('0x17')]();};}function respondWithResult(_0x26fbec,_0x3557be){_0x3557be=_0x3557be||0xc8;return function(_0x23f6d4){if(_0x23f6d4){return _0x26fbec[_0xadaf('0x18')](_0x3557be)[_0xadaf('0x19')](_0x23f6d4);}};}function respondWithFilteredResult(_0x3b1ca5,_0x5e54f3){return function(_0x8f3be2){if(_0x8f3be2){var _0xf65a31=typeof _0x5e54f3['offset']===_0xadaf('0x1a')&&typeof _0x5e54f3['limit']===_0xadaf('0x1a');var _0x4d2882=_0x8f3be2[_0xadaf('0x1b')];var _0x107120=_0xf65a31?0x0:_0x5e54f3[_0xadaf('0x1c')];var _0x1523fb=_0xf65a31?_0x8f3be2[_0xadaf('0x1b')]:_0x5e54f3[_0xadaf('0x1c')]+_0x5e54f3[_0xadaf('0x1d')];var _0x184fe9;if(_0x1523fb>=_0x4d2882){_0x1523fb=_0x4d2882;_0x184fe9=0xc8;}else{_0x184fe9=0xce;}_0x3b1ca5['status'](_0x184fe9);return _0x3b1ca5[_0xadaf('0x1e')](_0xadaf('0x1f'),_0x107120+'-'+_0x1523fb+'/'+_0x4d2882)[_0xadaf('0x19')](_0x8f3be2);}return null;};}function patchUpdates(_0x15013e){return function(_0x3dc5b5){try{jsonpatch[_0xadaf('0x20')](_0x3dc5b5,_0x15013e,!![]);}catch(_0x363a6c){return BPromise['reject'](_0x363a6c);}return _0x3dc5b5[_0xadaf('0x21')]();};}function saveUpdates(_0x521264,_0x34f616){return function(_0x2a75e1){if(_0x2a75e1){return _0x2a75e1[_0xadaf('0x22')](_0x521264)[_0xadaf('0x23')](function(_0x4aea06){return _0x4aea06;});}return null;};}function removeEntity(_0x30abf8,_0x3264f7){return function(_0x26f03a){if(_0x26f03a){return _0x26f03a[_0xadaf('0x24')]()[_0xadaf('0x23')](function(){_0x30abf8[_0xadaf('0x18')](0xcc)[_0xadaf('0x17')]();});}};}function handleEntityNotFound(_0x31d183,_0xfcf83a){return function(_0x587593){if(!_0x587593){_0x31d183['sendStatus'](0x194);}return _0x587593;};}function handleError(_0x43848b,_0xff8ee9){_0xff8ee9=_0xff8ee9||0x1f4;return function(_0x372e19){logger[_0xadaf('0x25')](_0x372e19[_0xadaf('0x26')]);if(_0x372e19[_0xadaf('0x27')]){delete _0x372e19[_0xadaf('0x27')];}_0x43848b[_0xadaf('0x18')](_0xff8ee9)[_0xadaf('0x28')](_0x372e19);};}exports[_0xadaf('0x29')]=function(_0x38b928,_0x29ad8c){var _0x47615b={},_0x871d64={},_0x422413={'count':0x0,'rows':[]};var _0x1c7373=_[_0xadaf('0x2a')](db[_0xadaf('0x2b')][_0xadaf('0x2c')],function(_0x59c64a){return{'name':_0x59c64a[_0xadaf('0x2d')],'type':_0x59c64a[_0xadaf('0x2e')][_0xadaf('0x2f')]};});_0x871d64[_0xadaf('0x30')]=_['map'](_0x1c7373,_0xadaf('0x27'));_0x871d64['query']=_[_0xadaf('0x31')](_0x38b928[_0xadaf('0x32')]);_0x871d64[_0xadaf('0x33')]=_['intersection'](_0x871d64[_0xadaf('0x30')],_0x871d64[_0xadaf('0x32')]);_0x47615b[_0xadaf('0x34')]=_['intersection'](_0x871d64[_0xadaf('0x30')],qs[_0xadaf('0x35')](_0x38b928[_0xadaf('0x32')][_0xadaf('0x35')]));_0x47615b[_0xadaf('0x34')]=_0x47615b[_0xadaf('0x34')][_0xadaf('0x36')]?_0x47615b['attributes']:_0x871d64[_0xadaf('0x30')];if(!_0x38b928['query'][_0xadaf('0x37')]('nolimit')){_0x47615b[_0xadaf('0x1d')]=qs['limit'](_0x38b928[_0xadaf('0x32')][_0xadaf('0x1d')]);_0x47615b[_0xadaf('0x1c')]=qs['offset'](_0x38b928[_0xadaf('0x32')][_0xadaf('0x1c')]);}_0x47615b[_0xadaf('0x38')]=qs[_0xadaf('0x39')](_0x38b928[_0xadaf('0x32')][_0xadaf('0x39')]);_0x47615b[_0xadaf('0x3a')]=qs[_0xadaf('0x33')](_[_0xadaf('0x3b')](_0x38b928['query'],_0x871d64['filters']),_0x1c7373);if(_0x38b928[_0xadaf('0x32')]['filter']){_0x47615b[_0xadaf('0x3a')]=_[_0xadaf('0x3c')](_0x47615b[_0xadaf('0x3a')],{'$or':_[_0xadaf('0x2a')](_0x1c7373,function(_0x4187cd){if(_0x4187cd['type']!==_0xadaf('0x3d')){var _0x1f0eb2={};_0x1f0eb2[_0x4187cd[_0xadaf('0x27')]]={'$like':'%'+_0x38b928[_0xadaf('0x32')]['filter']+'%'};return _0x1f0eb2;}})});}_0x47615b=_[_0xadaf('0x3c')]({},_0x47615b,_0x38b928[_0xadaf('0x3e')]);var _0x4a048c={'where':_0x47615b['where']};return db[_0xadaf('0x2b')]['count'](_0x4a048c)[_0xadaf('0x23')](function(_0x548889){_0x422413[_0xadaf('0x1b')]=_0x548889;if(_0x38b928[_0xadaf('0x32')][_0xadaf('0x3f')]){_0x47615b[_0xadaf('0x40')]=[{'all':!![]}];}return db['ZendeskField'][_0xadaf('0x41')](_0x47615b);})[_0xadaf('0x23')](function(_0x1690a7){_0x422413[_0xadaf('0x42')]=_0x1690a7;return _0x422413;})['then'](respondWithFilteredResult(_0x29ad8c,_0x47615b))[_0xadaf('0x43')](handleError(_0x29ad8c,null));};exports['show']=function(_0xe0e94a,_0x35c334){var _0x3fee95={'raw':!![],'where':{'id':_0xe0e94a[_0xadaf('0x44')]['id']}},_0x57fe85={};_0x57fe85[_0xadaf('0x30')]=_[_0xadaf('0x31')](db[_0xadaf('0x2b')][_0xadaf('0x2c')]);_0x57fe85[_0xadaf('0x32')]=_[_0xadaf('0x31')](_0xe0e94a[_0xadaf('0x32')]);_0x57fe85[_0xadaf('0x33')]=_[_0xadaf('0x45')](_0x57fe85[_0xadaf('0x30')],_0x57fe85['query']);_0x3fee95['attributes']=_['intersection'](_0x57fe85[_0xadaf('0x30')],qs['fields'](_0xe0e94a[_0xadaf('0x32')]['fields']));_0x3fee95['attributes']=_0x3fee95[_0xadaf('0x34')][_0xadaf('0x36')]?_0x3fee95['attributes']:_0x57fe85['model'];if(_0xe0e94a[_0xadaf('0x32')][_0xadaf('0x3f')]){_0x3fee95['include']=[{'all':!![]}];}_0x3fee95=_['merge']({},_0x3fee95,_0xe0e94a[_0xadaf('0x3e')]);return db[_0xadaf('0x2b')][_0xadaf('0x46')](_0x3fee95)[_0xadaf('0x23')](handleEntityNotFound(_0x35c334,null))[_0xadaf('0x23')](respondWithResult(_0x35c334,null))[_0xadaf('0x43')](handleError(_0x35c334,null));};exports[_0xadaf('0x47')]=function(_0x1806d5,_0x195d2a){return db[_0xadaf('0x2b')][_0xadaf('0x47')](_0x1806d5['body'],{})[_0xadaf('0x23')](respondWithResult(_0x195d2a,0xc9))[_0xadaf('0x43')](handleError(_0x195d2a,null));};exports['update']=function(_0x1ca8d6,_0xcab6d0){if(_0x1ca8d6['body']['id']){delete _0x1ca8d6[_0xadaf('0x48')]['id'];}return db[_0xadaf('0x2b')]['find']({'where':{'id':_0x1ca8d6[_0xadaf('0x44')]['id']}})[_0xadaf('0x23')](handleEntityNotFound(_0xcab6d0,null))[_0xadaf('0x23')](saveUpdates(_0x1ca8d6[_0xadaf('0x48')],null))[_0xadaf('0x23')](respondWithResult(_0xcab6d0,null))[_0xadaf('0x43')](handleError(_0xcab6d0,null));};exports[_0xadaf('0x24')]=function(_0x5b8c32,_0x423bc6){return db[_0xadaf('0x2b')][_0xadaf('0x46')]({'where':{'id':_0x5b8c32[_0xadaf('0x44')]['id']}})[_0xadaf('0x23')](handleEntityNotFound(_0x423bc6,null))[_0xadaf('0x23')](removeEntity(_0x423bc6,null))['catch'](handleError(_0x423bc6,null));};
\ No newline at end of file
+var _0x409b=['../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','update','then','destroy','error','stack','name','send','map','ZendeskField','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0xe968ba,_0x33502d){var _0x3a0fff=function(_0x237367){while(--_0x237367){_0xe968ba['push'](_0xe968ba['shift']());}};_0x3a0fff(++_0x33502d);}(_0x409b,0x14a));var _0xb409=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x409b[_0x16b9ed];return _0x66b1f8;};'use strict';var emlformat=require(_0xb409('0x0'));var rimraf=require(_0xb409('0x1'));var zipdir=require(_0xb409('0x2'));var jsonpatch=require(_0xb409('0x3'));var rp=require(_0xb409('0x4'));var moment=require(_0xb409('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb409('0x6'));var util=require(_0xb409('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb409('0x8'));var fs=require('fs');var fs_extra=require(_0xb409('0x9'));var _=require(_0xb409('0xa'));var squel=require(_0xb409('0xb'));var crypto=require(_0xb409('0xc'));var jsforce=require(_0xb409('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb409('0xe'));var querystring=require(_0xb409('0xf'));var Papa=require(_0xb409('0x10'));var Redis=require('ioredis');var authService=require(_0xb409('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb409('0x12'));var hardwareService=require(_0xb409('0x13'));var logger=require(_0xb409('0x14'))('api');var utils=require(_0xb409('0x15'));var config=require(_0xb409('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb409('0x17'))['db'];function respondWithStatusCode(_0x21fa25,_0x23bd15){_0x23bd15=_0x23bd15||0xcc;return function(_0x6b563c){if(_0x6b563c){return _0x21fa25[_0xb409('0x18')](_0x23bd15);}return _0x21fa25[_0xb409('0x19')](_0x23bd15)['end']();};}function respondWithResult(_0x1e6895,_0x75b07e){_0x75b07e=_0x75b07e||0xc8;return function(_0x128035){if(_0x128035){return _0x1e6895[_0xb409('0x19')](_0x75b07e)[_0xb409('0x1a')](_0x128035);}};}function respondWithFilteredResult(_0x4f596b,_0xd19d17){return function(_0x58bb54){if(_0x58bb54){var _0x32c205=typeof _0xd19d17[_0xb409('0x1b')]===_0xb409('0x1c')&&typeof _0xd19d17[_0xb409('0x1d')]===_0xb409('0x1c');var _0x3975d0=_0x58bb54[_0xb409('0x1e')];var _0x12b1de=_0x32c205?0x0:_0xd19d17[_0xb409('0x1b')];var _0xf4a437=_0x32c205?_0x58bb54[_0xb409('0x1e')]:_0xd19d17[_0xb409('0x1b')]+_0xd19d17[_0xb409('0x1d')];var _0x1dd011;if(_0xf4a437>=_0x3975d0){_0xf4a437=_0x3975d0;_0x1dd011=0xc8;}else{_0x1dd011=0xce;}_0x4f596b[_0xb409('0x19')](_0x1dd011);return _0x4f596b['set']('Content-Range',_0x12b1de+'-'+_0xf4a437+'/'+_0x3975d0)[_0xb409('0x1a')](_0x58bb54);}return null;};}function patchUpdates(_0x24af7d){return function(_0x22d9ed){try{jsonpatch['apply'](_0x22d9ed,_0x24af7d,!![]);}catch(_0x4df44e){return BPromise['reject'](_0x4df44e);}return _0x22d9ed['save']();};}function saveUpdates(_0x443563,_0x437d9f){return function(_0x406324){if(_0x406324){return _0x406324[_0xb409('0x1f')](_0x443563)[_0xb409('0x20')](function(_0x17a506){return _0x17a506;});}return null;};}function removeEntity(_0x3b629f,_0x12789d){return function(_0x45979e){if(_0x45979e){return _0x45979e[_0xb409('0x21')]()[_0xb409('0x20')](function(){_0x3b629f[_0xb409('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x306511,_0x33cca3){return function(_0x3768b6){if(!_0x3768b6){_0x306511['sendStatus'](0x194);}return _0x3768b6;};}function handleError(_0x5ad721,_0x1b7a09){_0x1b7a09=_0x1b7a09||0x1f4;return function(_0x4369fa){logger[_0xb409('0x22')](_0x4369fa[_0xb409('0x23')]);if(_0x4369fa[_0xb409('0x24')]){delete _0x4369fa[_0xb409('0x24')];}_0x5ad721[_0xb409('0x19')](_0x1b7a09)[_0xb409('0x25')](_0x4369fa);};}exports['index']=function(_0x5343b8,_0x73f750){var _0x35b8d2={},_0xe59562={},_0x5ad46d={'count':0x0,'rows':[]};var _0x40b67d=_[_0xb409('0x26')](db[_0xb409('0x27')][_0xb409('0x28')],function(_0x3b403a){return{'name':_0x3b403a[_0xb409('0x29')],'type':_0x3b403a[_0xb409('0x2a')][_0xb409('0x2b')]};});_0xe59562[_0xb409('0x2c')]=_[_0xb409('0x26')](_0x40b67d,_0xb409('0x24'));_0xe59562['query']=_[_0xb409('0x2d')](_0x5343b8['query']);_0xe59562[_0xb409('0x2e')]=_[_0xb409('0x2f')](_0xe59562[_0xb409('0x2c')],_0xe59562[_0xb409('0x30')]);_0x35b8d2[_0xb409('0x31')]=_['intersection'](_0xe59562[_0xb409('0x2c')],qs[_0xb409('0x32')](_0x5343b8[_0xb409('0x30')][_0xb409('0x32')]));_0x35b8d2[_0xb409('0x31')]=_0x35b8d2[_0xb409('0x31')][_0xb409('0x33')]?_0x35b8d2[_0xb409('0x31')]:_0xe59562['model'];if(!_0x5343b8['query'][_0xb409('0x34')](_0xb409('0x35'))){_0x35b8d2['limit']=qs[_0xb409('0x1d')](_0x5343b8[_0xb409('0x30')][_0xb409('0x1d')]);_0x35b8d2[_0xb409('0x1b')]=qs[_0xb409('0x1b')](_0x5343b8[_0xb409('0x30')][_0xb409('0x1b')]);}_0x35b8d2[_0xb409('0x36')]=qs['sort'](_0x5343b8[_0xb409('0x30')]['sort']);_0x35b8d2[_0xb409('0x37')]=qs[_0xb409('0x2e')](_[_0xb409('0x38')](_0x5343b8[_0xb409('0x30')],_0xe59562['filters']),_0x40b67d);if(_0x5343b8[_0xb409('0x30')][_0xb409('0x39')]){_0x35b8d2[_0xb409('0x37')]=_[_0xb409('0x3a')](_0x35b8d2[_0xb409('0x37')],{'$or':_[_0xb409('0x26')](_0x40b67d,function(_0x268b46){if(_0x268b46[_0xb409('0x2a')]!==_0xb409('0x3b')){var _0x5e320f={};_0x5e320f[_0x268b46[_0xb409('0x24')]]={'$like':'%'+_0x5343b8[_0xb409('0x30')][_0xb409('0x39')]+'%'};return _0x5e320f;}})});}_0x35b8d2=_[_0xb409('0x3a')]({},_0x35b8d2,_0x5343b8[_0xb409('0x3c')]);var _0x107a76={'where':_0x35b8d2[_0xb409('0x37')]};return db['ZendeskField'][_0xb409('0x1e')](_0x107a76)[_0xb409('0x20')](function(_0x31202c){_0x5ad46d[_0xb409('0x1e')]=_0x31202c;if(_0x5343b8[_0xb409('0x30')]['includeAll']){_0x35b8d2[_0xb409('0x3d')]=[{'all':!![]}];}return db[_0xb409('0x27')]['findAll'](_0x35b8d2);})['then'](function(_0x33d3a6){_0x5ad46d[_0xb409('0x3e')]=_0x33d3a6;return _0x5ad46d;})[_0xb409('0x20')](respondWithFilteredResult(_0x73f750,_0x35b8d2))[_0xb409('0x3f')](handleError(_0x73f750,null));};exports[_0xb409('0x40')]=function(_0x4897eb,_0x5341ec){var _0x285c7e={'raw':!![],'where':{'id':_0x4897eb['params']['id']}},_0x17e804={};_0x17e804[_0xb409('0x2c')]=_[_0xb409('0x2d')](db[_0xb409('0x27')][_0xb409('0x28')]);_0x17e804[_0xb409('0x30')]=_[_0xb409('0x2d')](_0x4897eb[_0xb409('0x30')]);_0x17e804[_0xb409('0x2e')]=_['intersection'](_0x17e804[_0xb409('0x2c')],_0x17e804[_0xb409('0x30')]);_0x285c7e[_0xb409('0x31')]=_[_0xb409('0x2f')](_0x17e804['model'],qs[_0xb409('0x32')](_0x4897eb[_0xb409('0x30')][_0xb409('0x32')]));_0x285c7e[_0xb409('0x31')]=_0x285c7e[_0xb409('0x31')][_0xb409('0x33')]?_0x285c7e['attributes']:_0x17e804[_0xb409('0x2c')];if(_0x4897eb['query'][_0xb409('0x41')]){_0x285c7e[_0xb409('0x3d')]=[{'all':!![]}];}_0x285c7e=_[_0xb409('0x3a')]({},_0x285c7e,_0x4897eb['options']);return db[_0xb409('0x27')][_0xb409('0x42')](_0x285c7e)['then'](handleEntityNotFound(_0x5341ec,null))[_0xb409('0x20')](respondWithResult(_0x5341ec,null))['catch'](handleError(_0x5341ec,null));};exports[_0xb409('0x43')]=function(_0x1c0eb0,_0x140e2c){return db[_0xb409('0x27')][_0xb409('0x43')](_0x1c0eb0[_0xb409('0x44')],{})['then'](respondWithResult(_0x140e2c,0xc9))['catch'](handleError(_0x140e2c,null));};exports[_0xb409('0x1f')]=function(_0x7f59a6,_0x541c95){if(_0x7f59a6[_0xb409('0x44')]['id']){delete _0x7f59a6['body']['id'];}return db['ZendeskField'][_0xb409('0x42')]({'where':{'id':_0x7f59a6[_0xb409('0x45')]['id']}})[_0xb409('0x20')](handleEntityNotFound(_0x541c95,null))[_0xb409('0x20')](saveUpdates(_0x7f59a6['body'],null))[_0xb409('0x20')](respondWithResult(_0x541c95,null))[_0xb409('0x3f')](handleError(_0x541c95,null));};exports[_0xb409('0x21')]=function(_0x6c49,_0x23a210){return db[_0xb409('0x27')][_0xb409('0x42')]({'where':{'id':_0x6c49[_0xb409('0x45')]['id']}})[_0xb409('0x20')](handleEntityNotFound(_0x23a210,null))[_0xb409('0x20')](removeEntity(_0x23a210,null))['catch'](handleError(_0x23a210,null));};
\ No newline at end of file
index a169081..5bb17f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3644=['../../config/logger','bluebird','path','rimraf','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','util'];(function(_0x2ade64,_0x2783da){var _0x3e1da4=function(_0x2bb957){while(--_0x2bb957){_0x2ade64['push'](_0x2ade64['shift']());}};_0x3e1da4(++_0x2783da);}(_0x3644,0x113));var _0x4364=function(_0x1a1941,_0x5f5d9f){_0x1a1941=_0x1a1941-0x0;var _0x5ceab3=_0x3644[_0x1a1941];return _0x5ceab3;};'use strict';var _=require('lodash');var util=require(_0x4364('0x0'));var logger=require(_0x4364('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4364('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4364('0x3'));var rimraf=require(_0x4364('0x4'));var config=require('../../config/environment');var attributes=require(_0x4364('0x5'));module[_0x4364('0x6')]=function(_0x1a2c08,_0x3d8bda){return _0x1a2c08[_0x4364('0x7')](_0x4364('0x8'),attributes,{'tableName':_0x4364('0x9'),'paranoid':![],'indexes':[{'name':_0x4364('0xa'),'fields':[_0x4364('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4120=['FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./intZendeskField.attributes','define','ZendeskField','idField'];(function(_0x4ebf7c,_0x44bb57){var _0x2e4c66=function(_0x225016){while(--_0x225016){_0x4ebf7c['push'](_0x4ebf7c['shift']());}};_0x2e4c66(++_0x44bb57);}(_0x4120,0xcd));var _0x0412=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x4120[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x0412('0x0'));var util=require(_0x0412('0x1'));var logger=require(_0x0412('0x2'))('api');var moment=require(_0x0412('0x3'));var BPromise=require(_0x0412('0x4'));var rp=require(_0x0412('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0412('0x6'));var config=require('../../config/environment');var attributes=require(_0x0412('0x7'));module['exports']=function(_0x271684,_0xf8076f){return _0x271684[_0x0412('0x8')](_0x0412('0x9'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x0412('0xa'),_0x0412('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3fcb086..b478a9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b87=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x37512d,_0x44495e){var _0x133f49=function(_0x10b685){while(--_0x10b685){_0x37512d['push'](_0x37512d['shift']());}};_0x133f49(++_0x44495e);}(_0x6b87,0x75));var _0x76b8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6b87[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x76b8('0x0'));var util=require(_0x76b8('0x1'));var moment=require(_0x76b8('0x2'));var BPromise=require(_0x76b8('0x3'));var rs=require(_0x76b8('0x4'));var fs=require('fs');var Redis=require(_0x76b8('0x5'));var db=require(_0x76b8('0x6'))['db'];var utils=require(_0x76b8('0x7'));var logger=require(_0x76b8('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x76b8('0x9'));var client=jayson['client'][_0x76b8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc1c991,_0x85667e,_0x3637c4){return new BPromise(function(_0x36c639,_0x3147d9){return client[_0x76b8('0xb')](_0xc1c991,_0x3637c4)[_0x76b8('0xc')](function(_0x57c33a){logger[_0x76b8('0xd')]('ZendeskField,\x20%s,\x20%s',_0x85667e,_0x76b8('0xe'));logger[_0x76b8('0xf')](_0x76b8('0x10'),_0x85667e,'request\x20sent',JSON[_0x76b8('0x11')](_0x57c33a));if(_0x57c33a[_0x76b8('0x12')]){if(_0x57c33a[_0x76b8('0x12')][_0x76b8('0x13')]===0x1f4){logger['error'](_0x76b8('0x14'),_0x85667e,_0x57c33a['error'][_0x76b8('0x15')]);return _0x3147d9(_0x57c33a[_0x76b8('0x12')][_0x76b8('0x15')]);}logger[_0x76b8('0x12')]('ZendeskField,\x20%s,\x20%s',_0x85667e,_0x57c33a[_0x76b8('0x12')][_0x76b8('0x15')]);return _0x36c639(_0x57c33a['error']['message']);}else{logger[_0x76b8('0xd')](_0x76b8('0x14'),_0x85667e,'request\x20sent');_0x36c639(_0x57c33a[_0x76b8('0x16')]['message']);}})[_0x76b8('0x17')](function(_0xd6a869){logger[_0x76b8('0x12')](_0x76b8('0x14'),_0x85667e,_0xd6a869);_0x3147d9(_0xd6a869);});});}
\ No newline at end of file
+var _0xbd5a=['../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xbd5a,0x19c));var _0xabd5=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbd5a[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xabd5('0x0'));var util=require(_0xabd5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xabd5('0x2'));var fs=require('fs');var Redis=require(_0xabd5('0x3'));var db=require(_0xabd5('0x4'))['db'];var utils=require(_0xabd5('0x5'));var logger=require(_0xabd5('0x6'))(_0xabd5('0x7'));var config=require(_0xabd5('0x8'));var jayson=require(_0xabd5('0x9'));var client=jayson[_0xabd5('0xa')][_0xabd5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x244686,_0x42f2bc,_0x29511b){return new BPromise(function(_0x2ee2d3,_0x3880e1){return client[_0xabd5('0xc')](_0x244686,_0x29511b)[_0xabd5('0xd')](function(_0x1f0fcd){logger[_0xabd5('0xe')](_0xabd5('0xf'),_0x42f2bc,'request\x20sent');logger[_0xabd5('0x10')](_0xabd5('0x11'),_0x42f2bc,_0xabd5('0x12'),JSON['stringify'](_0x1f0fcd));if(_0x1f0fcd['error']){if(_0x1f0fcd[_0xabd5('0x13')]['code']===0x1f4){logger[_0xabd5('0x13')]('ZendeskField,\x20%s,\x20%s',_0x42f2bc,_0x1f0fcd[_0xabd5('0x13')][_0xabd5('0x14')]);return _0x3880e1(_0x1f0fcd[_0xabd5('0x13')][_0xabd5('0x14')]);}logger[_0xabd5('0x13')](_0xabd5('0xf'),_0x42f2bc,_0x1f0fcd[_0xabd5('0x13')][_0xabd5('0x14')]);return _0x2ee2d3(_0x1f0fcd['error'][_0xabd5('0x14')]);}else{logger[_0xabd5('0xe')](_0xabd5('0xf'),_0x42f2bc,'request\x20sent');_0x2ee2d3(_0x1f0fcd['result'][_0xabd5('0x14')]);}})['catch'](function(_0x4ebf41){logger['error'](_0xabd5('0xf'),_0x42f2bc,_0x4ebf41);_0x3880e1(_0x4ebf41);});});}
\ No newline at end of file
index 3dd41aa..0855e20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f26=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4ebbec,_0x55b0aa){var _0x2feefe=function(_0x9ceef2){while(--_0x9ceef2){_0x4ebbec['push'](_0x4ebbec['shift']());}};_0x2feefe(++_0x55b0aa);}(_0x5f26,0xc3));var _0x65f2=function(_0x3fcf7a,_0x599ecc){_0x3fcf7a=_0x3fcf7a-0x0;var _0x34cc20=_0x5f26[_0x3fcf7a];return _0x34cc20;};'use strict';var multer=require(_0x65f2('0x0'));var util=require(_0x65f2('0x1'));var path=require(_0x65f2('0x2'));var timeout=require(_0x65f2('0x3'));var express=require(_0x65f2('0x4'));var router=express[_0x65f2('0x5')]();var fs_extra=require(_0x65f2('0x6'));var auth=require(_0x65f2('0x7'));var interaction=require(_0x65f2('0x8'));var config=require(_0x65f2('0x9'));var controller=require(_0x65f2('0xa'));router[_0x65f2('0xb')]('/',auth[_0x65f2('0xc')](),controller[_0x65f2('0xd')]);router[_0x65f2('0xb')](_0x65f2('0xe'),auth[_0x65f2('0xc')](),controller['show']);router[_0x65f2('0xb')](_0x65f2('0xf'),auth[_0x65f2('0xc')](),controller['getConfigurations']);router[_0x65f2('0xb')](_0x65f2('0x10'),auth[_0x65f2('0xc')](),controller[_0x65f2('0x11')]);router[_0x65f2('0x12')]('/',auth[_0x65f2('0xc')](),controller[_0x65f2('0x13')]);router[_0x65f2('0x12')](_0x65f2('0xf'),auth[_0x65f2('0xc')](),controller['addConfiguration']);router[_0x65f2('0x14')](_0x65f2('0xe'),auth[_0x65f2('0xc')](),controller[_0x65f2('0x15')]);router[_0x65f2('0x16')](_0x65f2('0xe'),auth[_0x65f2('0xc')](),controller[_0x65f2('0x17')]);module[_0x65f2('0x18')]=router;
\ No newline at end of file
+var _0xce14=['./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','delete','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x553aac,_0x345f4b){var _0x5e60ca=function(_0x4e1bc7){while(--_0x4e1bc7){_0x553aac['push'](_0x553aac['shift']());}};_0x5e60ca(++_0x345f4b);}(_0xce14,0x124));var _0x4ce1=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xce14[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x4ce1('0x0'));var util=require(_0x4ce1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4ce1('0x2'));var router=express[_0x4ce1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4ce1('0x4'));var interaction=require(_0x4ce1('0x5'));var config=require(_0x4ce1('0x6'));var controller=require(_0x4ce1('0x7'));router[_0x4ce1('0x8')]('/',auth[_0x4ce1('0x9')](),controller[_0x4ce1('0xa')]);router['get'](_0x4ce1('0xb'),auth[_0x4ce1('0x9')](),controller[_0x4ce1('0xc')]);router['get'](_0x4ce1('0xd'),auth['isAuthenticated'](),controller[_0x4ce1('0xe')]);router[_0x4ce1('0x8')](_0x4ce1('0xf'),auth[_0x4ce1('0x9')](),controller[_0x4ce1('0x10')]);router[_0x4ce1('0x11')]('/',auth[_0x4ce1('0x9')](),controller[_0x4ce1('0x12')]);router[_0x4ce1('0x11')]('/:id/configurations',auth[_0x4ce1('0x9')](),controller[_0x4ce1('0x13')]);router[_0x4ce1('0x14')](_0x4ce1('0xb'),auth[_0x4ce1('0x9')](),controller['update']);router[_0x4ce1('0x15')](_0x4ce1('0xb'),auth[_0x4ce1('0x9')](),controller['destroy']);module[_0x4ce1('0x16')]=router;
\ No newline at end of file
index e10bc75..150ac21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['STRING','sequelize','exports'];(function(_0x5245bc,_0x55e740){var _0x2acb9a=function(_0x4fd1e6){while(--_0x4fd1e6){_0x5245bc['push'](_0x5245bc['shift']());}};_0x2acb9a(++_0x55e740);}(_0x54ef,0x112));var _0xf54e=function(_0x4f45aa,_0x2694a5){_0x4f45aa=_0x4f45aa-0x0;var _0x4586c2=_0x54ef[_0x4f45aa];return _0x4586c2;};'use strict';var Sequelize=require(_0xf54e('0x0'));module[_0xf54e('0x1')]={'name':{'type':Sequelize[_0xf54e('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xf54e('0x2')]},'zone':{'type':Sequelize[_0xf54e('0x2')]},'clientId':{'type':Sequelize[_0xf54e('0x2')]},'clientSecret':{'type':Sequelize[_0xf54e('0x2')]},'serverUrl':{'type':Sequelize[_0xf54e('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xf54e('0x2')]},'refreshToken':{'type':Sequelize[_0xf54e('0x2')]}};
\ No newline at end of file
+var _0x702d=['sequelize','exports','STRING'];(function(_0x192873,_0x57a1e5){var _0x245d6c=function(_0xfc361f){while(--_0xfc361f){_0x192873['push'](_0x192873['shift']());}};_0x245d6c(++_0x57a1e5);}(_0x702d,0x147));var _0xd702=function(_0x3d2db2,_0xde3961){_0x3d2db2=_0x3d2db2-0x0;var _0x319d3f=_0x702d[_0x3d2db2];return _0x319d3f;};'use strict';var Sequelize=require(_0xd702('0x0'));module[_0xd702('0x1')]={'name':{'type':Sequelize[_0xd702('0x2')]},'description':{'type':Sequelize[_0xd702('0x2')]},'host':{'type':Sequelize[_0xd702('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xd702('0x2')]},'clientSecret':{'type':Sequelize[_0xd702('0x2')]},'serverUrl':{'type':Sequelize[_0xd702('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xd702('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6aa4d73..815b74a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec1=['query','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','getConfigurations','length','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','clientId','serverUrl','code','zoho.eu','substring','lastIndexOf','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','Description','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','end','stack','name','send','index','map','fieldName','type','key'];(function(_0xdd7410,_0x45333d){var _0x2ef78d=function(_0x157a28){while(--_0x157a28){_0xdd7410['push'](_0xdd7410['shift']());}};_0x2ef78d(++_0x45333d);}(_0xeec1,0xe1));var _0x1eec=function(_0x1c3839,_0x7792a3){_0x1c3839=_0x1c3839-0x0;var _0x222f58=_0xeec1[_0x1c3839];return _0x222f58;};'use strict';var emlformat=require(_0x1eec('0x0'));var rimraf=require(_0x1eec('0x1'));var zipdir=require(_0x1eec('0x2'));var jsonpatch=require(_0x1eec('0x3'));var rp=require(_0x1eec('0x4'));var moment=require(_0x1eec('0x5'));var BPromise=require(_0x1eec('0x6'));var Mustache=require('mustache');var util=require(_0x1eec('0x7'));var path=require(_0x1eec('0x8'));var sox=require('sox');var csv=require(_0x1eec('0x9'));var ejs=require(_0x1eec('0xa'));var fs=require('fs');var fs_extra=require(_0x1eec('0xb'));var _=require(_0x1eec('0xc'));var squel=require('squel');var crypto=require(_0x1eec('0xd'));var jsforce=require(_0x1eec('0xe'));var deskjs=require(_0x1eec('0xf'));var toCsv=require(_0x1eec('0x9'));var querystring=require(_0x1eec('0x10'));var Papa=require('papaparse');var Redis=require(_0x1eec('0x11'));var authService=require(_0x1eec('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1eec('0x13'));var logger=require(_0x1eec('0x14'))(_0x1eec('0x15'));var utils=require(_0x1eec('0x16'));var config=require(_0x1eec('0x17'));var licenseUtil=require(_0x1eec('0x18'));var db=require(_0x1eec('0x19'))['db'];var integrations=require(_0x1eec('0x1a'));function respondWithStatusCode(_0x5df426,_0x2ff156){_0x2ff156=_0x2ff156||0xcc;return function(_0x2ed270){if(_0x2ed270){return _0x5df426[_0x1eec('0x1b')](_0x2ff156);}return _0x5df426[_0x1eec('0x1c')](_0x2ff156)['end']();};}function respondWithResult(_0x38628e,_0x5693d5){_0x5693d5=_0x5693d5||0xc8;return function(_0x539d9f){if(_0x539d9f){return _0x38628e[_0x1eec('0x1c')](_0x5693d5)[_0x1eec('0x1d')](_0x539d9f);}};}function respondWithFilteredResult(_0x3c363a,_0x23e679){return function(_0x1be111){if(_0x1be111){var _0x590540=typeof _0x23e679[_0x1eec('0x1e')]==='undefined'&&typeof _0x23e679[_0x1eec('0x1f')]==='undefined';var _0x5ae5e5=_0x1be111[_0x1eec('0x20')];var _0x2dc520=_0x590540?0x0:_0x23e679[_0x1eec('0x1e')];var _0x5ccd5d=_0x590540?_0x1be111[_0x1eec('0x20')]:_0x23e679[_0x1eec('0x1e')]+_0x23e679[_0x1eec('0x1f')];var _0xbeafe1;if(_0x5ccd5d>=_0x5ae5e5){_0x5ccd5d=_0x5ae5e5;_0xbeafe1=0xc8;}else{_0xbeafe1=0xce;}_0x3c363a['status'](_0xbeafe1);return _0x3c363a[_0x1eec('0x21')](_0x1eec('0x22'),_0x2dc520+'-'+_0x5ccd5d+'/'+_0x5ae5e5)['json'](_0x1be111);}return null;};}function patchUpdates(_0x56a164){return function(_0x27ae76){try{jsonpatch['apply'](_0x27ae76,_0x56a164,!![]);}catch(_0x547a47){return BPromise[_0x1eec('0x23')](_0x547a47);}return _0x27ae76[_0x1eec('0x24')]();};}function saveUpdates(_0x19eb15,_0x220de0){return function(_0x2367de){if(_0x2367de){return _0x2367de[_0x1eec('0x25')](_0x19eb15)[_0x1eec('0x26')](function(_0x2f2b3e){return _0x2f2b3e;});}return null;};}function removeEntity(_0x2ffafa,_0x40f7e4){return function(_0x3a2387){if(_0x3a2387){return _0x3a2387[_0x1eec('0x27')]()[_0x1eec('0x26')](function(){_0x2ffafa[_0x1eec('0x1c')](0xcc)[_0x1eec('0x28')]();});}};}function handleEntityNotFound(_0x191e60,_0x3a9342){return function(_0x42ebe3){if(!_0x42ebe3){_0x191e60['sendStatus'](0x194);}return _0x42ebe3;};}function handleError(_0x29df41,_0x5869a3){_0x5869a3=_0x5869a3||0x1f4;return function(_0x2f6798){logger['error'](_0x2f6798[_0x1eec('0x29')]);if(_0x2f6798[_0x1eec('0x2a')]){delete _0x2f6798[_0x1eec('0x2a')];}_0x29df41['status'](_0x5869a3)[_0x1eec('0x2b')](_0x2f6798);};}exports[_0x1eec('0x2c')]=function(_0x2514b1,_0x541689){var _0x398f02={},_0x41c742={},_0x399d61={'count':0x0,'rows':[]};var _0x103dea=_[_0x1eec('0x2d')](db['ZohoAccount']['rawAttributes'],function(_0x30a2ed){return{'name':_0x30a2ed[_0x1eec('0x2e')],'type':_0x30a2ed[_0x1eec('0x2f')][_0x1eec('0x30')]};});_0x41c742['model']=_[_0x1eec('0x2d')](_0x103dea,_0x1eec('0x2a'));_0x41c742[_0x1eec('0x31')]=_['keys'](_0x2514b1['query']);_0x41c742[_0x1eec('0x32')]=_['intersection'](_0x41c742[_0x1eec('0x33')],_0x41c742[_0x1eec('0x31')]);_0x398f02['attributes']=_[_0x1eec('0x34')](_0x41c742[_0x1eec('0x33')],qs[_0x1eec('0x35')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x35')]));_0x398f02[_0x1eec('0x36')]=_0x398f02[_0x1eec('0x36')]['length']?_0x398f02[_0x1eec('0x36')]:_0x41c742['model'];if(!_0x2514b1[_0x1eec('0x31')][_0x1eec('0x37')](_0x1eec('0x38'))){_0x398f02[_0x1eec('0x1f')]=qs[_0x1eec('0x1f')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x1f')]);_0x398f02[_0x1eec('0x1e')]=qs[_0x1eec('0x1e')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x1e')]);}_0x398f02['order']=qs[_0x1eec('0x39')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x39')]);_0x398f02[_0x1eec('0x3a')]=qs['filters'](_[_0x1eec('0x3b')](_0x2514b1[_0x1eec('0x31')],_0x41c742[_0x1eec('0x32')]),_0x103dea);if(_0x2514b1[_0x1eec('0x31')][_0x1eec('0x3c')]){_0x398f02[_0x1eec('0x3a')]=_[_0x1eec('0x3d')](_0x398f02[_0x1eec('0x3a')],{'$or':_[_0x1eec('0x2d')](_0x103dea,function(_0x47b2da){if(_0x47b2da[_0x1eec('0x2f')]!==_0x1eec('0x3e')){var _0x5253bf={};_0x5253bf[_0x47b2da[_0x1eec('0x2a')]]={'$like':'%'+_0x2514b1[_0x1eec('0x31')][_0x1eec('0x3c')]+'%'};return _0x5253bf;}})});}_0x398f02=_[_0x1eec('0x3d')]({},_0x398f02,_0x2514b1[_0x1eec('0x3f')]);var _0x19196a={'where':_0x398f02[_0x1eec('0x3a')]};return db[_0x1eec('0x40')][_0x1eec('0x20')](_0x19196a)['then'](function(_0x594258){_0x399d61[_0x1eec('0x20')]=_0x594258;if(_0x2514b1['query'][_0x1eec('0x41')]){_0x398f02['include']=[{'all':!![]}];}return db['ZohoAccount'][_0x1eec('0x42')](_0x398f02);})[_0x1eec('0x26')](function(_0xfe6033){_0x399d61[_0x1eec('0x43')]=_0xfe6033;return _0x399d61;})[_0x1eec('0x26')](respondWithFilteredResult(_0x541689,_0x398f02))[_0x1eec('0x44')](handleError(_0x541689,null));};exports[_0x1eec('0x45')]=function(_0x1fc92f,_0x125700){var _0x2522d0={'raw':![],'where':{'id':_0x1fc92f[_0x1eec('0x46')]['id']}},_0x39a580={};_0x39a580[_0x1eec('0x33')]=_[_0x1eec('0x47')](db[_0x1eec('0x40')][_0x1eec('0x48')]);_0x39a580['query']=_['keys'](_0x1fc92f[_0x1eec('0x31')]);_0x39a580['filters']=_[_0x1eec('0x34')](_0x39a580[_0x1eec('0x33')],_0x39a580[_0x1eec('0x31')]);_0x2522d0[_0x1eec('0x36')]=_['intersection'](_0x39a580[_0x1eec('0x33')],qs[_0x1eec('0x35')](_0x1fc92f[_0x1eec('0x31')]['fields']));_0x2522d0[_0x1eec('0x36')]=_0x2522d0[_0x1eec('0x36')]['length']?_0x2522d0[_0x1eec('0x36')]:_0x39a580[_0x1eec('0x33')];if(_0x1fc92f[_0x1eec('0x31')][_0x1eec('0x41')]){_0x2522d0['include']=[{'all':!![]}];}_0x2522d0=_[_0x1eec('0x3d')]({},_0x2522d0,_0x1fc92f[_0x1eec('0x3f')]);return db['ZohoAccount'][_0x1eec('0x49')](_0x2522d0)[_0x1eec('0x26')](handleEntityNotFound(_0x125700,null))['then'](respondWithResult(_0x125700,null))['catch'](handleError(_0x125700,null));};exports[_0x1eec('0x4a')]=function(_0x47a517,_0x22b9a1){return db[_0x1eec('0x40')][_0x1eec('0x4a')](_0x47a517['body'],{})[_0x1eec('0x26')](respondWithResult(_0x22b9a1,0xc9))[_0x1eec('0x44')](handleError(_0x22b9a1,null));};exports[_0x1eec('0x25')]=function(_0x3e18ea,_0x2cad49){if(_0x3e18ea['body']['id']){delete _0x3e18ea[_0x1eec('0x4b')]['id'];}return db[_0x1eec('0x40')]['find']({'where':{'id':_0x3e18ea['params']['id']}})[_0x1eec('0x26')](handleEntityNotFound(_0x2cad49,null))['then'](saveUpdates(_0x3e18ea['body'],null))[_0x1eec('0x26')](respondWithResult(_0x2cad49,null))['catch'](handleError(_0x2cad49,null));};exports['destroy']=function(_0x21eedd,_0x2ee2dd){return db['ZohoAccount'][_0x1eec('0x49')]({'where':{'id':_0x21eedd[_0x1eec('0x46')]['id']}})['then'](handleEntityNotFound(_0x2ee2dd,null))[_0x1eec('0x26')](removeEntity(_0x2ee2dd,null))[_0x1eec('0x44')](handleError(_0x2ee2dd,null));};exports[_0x1eec('0x4c')]=function(_0x139df3,_0x4d7526,_0xa6bbca){var _0x5693ae={};var _0x1fe2be={};var _0x84b99e;var _0x5e5a65;return db['ZohoAccount']['findOne']({'where':{'id':_0x139df3[_0x1eec('0x46')]['id']}})[_0x1eec('0x26')](handleEntityNotFound(_0x4d7526,null))['then'](function(_0x2ba58a){if(_0x2ba58a){_0x84b99e=_0x2ba58a;_0x1fe2be[_0x1eec('0x33')]=_[_0x1eec('0x47')](db['ZohoConfiguration'][_0x1eec('0x48')]);_0x1fe2be[_0x1eec('0x31')]=_[_0x1eec('0x47')](_0x139df3[_0x1eec('0x31')]);_0x1fe2be[_0x1eec('0x32')]=_[_0x1eec('0x34')](_0x1fe2be['model'],_0x1fe2be[_0x1eec('0x31')]);_0x5693ae['attributes']=_[_0x1eec('0x34')](_0x1fe2be['model'],qs['fields'](_0x139df3[_0x1eec('0x31')][_0x1eec('0x35')]));_0x5693ae[_0x1eec('0x36')]=_0x5693ae['attributes'][_0x1eec('0x4d')]?_0x5693ae[_0x1eec('0x36')]:_0x1fe2be['model'];_0x5693ae[_0x1eec('0x4e')]=qs[_0x1eec('0x39')](_0x139df3[_0x1eec('0x31')][_0x1eec('0x39')]);_0x5693ae['where']=qs[_0x1eec('0x32')](_[_0x1eec('0x3b')](_0x139df3[_0x1eec('0x31')],_0x1fe2be[_0x1eec('0x32')]));if(_0x139df3[_0x1eec('0x31')][_0x1eec('0x3c')]){_0x5693ae[_0x1eec('0x3a')]=_[_0x1eec('0x3d')](_0x5693ae[_0x1eec('0x3a')],{'$or':_[_0x1eec('0x2d')](_0x5693ae[_0x1eec('0x36')],function(_0x566c73){var _0x2c78c1={};_0x2c78c1[_0x566c73]={'$like':'%'+_0x139df3[_0x1eec('0x31')][_0x1eec('0x3c')]+'%'};return _0x2c78c1;})});}_0x5693ae=_['merge']({},_0x5693ae,_0x139df3['options']);return _0x84b99e[_0x1eec('0x4c')](_0x5693ae);}})['then'](function(_0x108480){if(_0x108480){_0x5e5a65=_0x108480[_0x1eec('0x4d')];if(!_0x139df3[_0x1eec('0x31')][_0x1eec('0x37')]('nolimit')){_0x5693ae[_0x1eec('0x1f')]=qs[_0x1eec('0x1f')](_0x139df3[_0x1eec('0x31')][_0x1eec('0x1f')]);_0x5693ae[_0x1eec('0x1e')]=qs[_0x1eec('0x1e')](_0x139df3['query'][_0x1eec('0x1e')]);}return _0x84b99e[_0x1eec('0x4c')](_0x5693ae);}})[_0x1eec('0x26')](function(_0x76434b){if(_0x76434b){return _0x76434b?{'count':_0x5e5a65,'rows':_0x76434b}:null;}})[_0x1eec('0x26')](respondWithResult(_0x4d7526,null))[_0x1eec('0x44')](handleError(_0x4d7526,null));};exports['addConfiguration']=function(_0x35d4d0,_0x582213,_0x8c805){if(_0x35d4d0[_0x1eec('0x4b')]['id']){delete _0x35d4d0[_0x1eec('0x4b')]['id'];}return db['ZohoAccount'][_0x1eec('0x4f')]({'where':{'id':_0x35d4d0[_0x1eec('0x46')]['id']}})['then'](handleEntityNotFound(_0x582213,null))['then'](function(_0x55cbbf){if(_0x55cbbf){_0x35d4d0['body'][_0x1eec('0x50')]=_0x55cbbf['id'];_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x51')]=integrations[_0x1eec('0x52')](_0x35d4d0['body'][_0x1eec('0x53')],_0x35d4d0['body'][_0x1eec('0x2f')]);_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x54')]=integrations[_0x1eec('0x55')](_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x53')],_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x2f')]);return db[_0x1eec('0x56')][_0x1eec('0x4a')](_0x35d4d0[_0x1eec('0x4b')],{'include':[{'model':db['ZohoField'],'as':_0x1eec('0x51')},{'model':db[_0x1eec('0x57')],'as':_0x1eec('0x54')}]});}return null;})[_0x1eec('0x26')](respondWithResult(_0x582213,null))['catch'](handleError(_0x582213,null));};function getAccessToken(_0x1dceba){return new Promise(function(_0x57a3aa,_0x2cda06){var _0x1ad5ef;switch(_0x1dceba[_0x1eec('0x58')]){case'US':_0x1ad5ef=_0x1eec('0x59');break;case'AU':_0x1ad5ef=_0x1eec('0x5a');break;case'EU':_0x1ad5ef=_0x1eec('0x5b');break;case'IN':_0x1ad5ef=_0x1eec('0x5c');break;case'CN':_0x1ad5ef=_0x1eec('0x5d');break;default:_0x1ad5ef='https://accounts.zoho.eu';break;}var _0x2a1cc={'method':_0x1eec('0x5e'),'uri':_0x1ad5ef+_0x1eec('0x5f'),'qs':{'refresh_token':_0x1dceba[_0x1eec('0x60')],'client_id':_0x1dceba['clientId'],'client_secret':_0x1dceba[_0x1eec('0x61')],'grant_type':_0x1eec('0x62')},'json':!![]};return rp(_0x2a1cc)[_0x1eec('0x26')](function(_0x65ae07){if(_0x65ae07[_0x1eec('0x63')]){_0x57a3aa(_0x65ae07[_0x1eec('0x63')]);}else{_0x2cda06(_0x1eec('0x64'));}})['catch'](function(_0x2b3cd1){_0x2cda06(_0x2b3cd1);});});}exports['getFields']=function(_0x335a24,_0x28bad3,_0x25eb41){var _0x20cd7f,_0xeb962b,_0xcfe5df,_0x2b300d,_0x4f13ef;return db[_0x1eec('0x40')][_0x1eec('0x4f')]({'where':{'id':_0x335a24[_0x1eec('0x46')]['id']},'attributes':['id',_0x1eec('0x65'),_0x1eec('0x58'),_0x1eec('0x66'),_0x1eec('0x61'),_0x1eec('0x67'),_0x1eec('0x68'),'refreshToken']})['then'](handleEntityNotFound(_0x28bad3,null))[_0x1eec('0x26')](function(_0x518c46){_0x4f13ef=_0x518c46;_0x20cd7f=_0x4f13ef[_0x1eec('0x65')];_0xeb962b=_0x20cd7f===_0x1eec('0x69')?'eu':'com';_0xcfe5df=_0x4f13ef[_0x1eec('0x67')];var _0xa4a792=_0xcfe5df['slice'](-0x1);if(_0xa4a792==='/'||_0xa4a792==='\x5c'||_0xa4a792===':'){_0xcfe5df=_0xcfe5df[_0x1eec('0x6a')](0x0,_0xcfe5df[_0x1eec('0x6b')](_0xa4a792));}if(!_0x4f13ef[_0x1eec('0x60')]){throw new Error(_0x1eec('0x6c'));}return getAccessToken(_0x4f13ef);})[_0x1eec('0x26')](function(_0x14a0d8){if(_0x14a0d8){return rp({'method':_0x1eec('0x6d'),'uri':util[_0x1eec('0x6e')](_0x1eec('0x6f'),_0xeb962b),'qs':{'module':_0x1eec('0x70')},'headers':{'Authorization':_0x1eec('0x71')+_0x14a0d8},'json':!![]});}})['then'](function(_0x401768){if(_0x401768){if(_0x401768[_0x1eec('0x72')]&&_0x401768[_0x1eec('0x72')][_0x1eec('0x73')]){throw new Error(_0x401768[_0x1eec('0x72')][_0x1eec('0x73')][_0x1eec('0x74')]);}var _0x320e49=[];var _0x4cdbb7=[];var _0x52bcbe=[_0x1eec('0x75'),_0x1eec('0x76'),_0x1eec('0x77'),_0x1eec('0x78'),'Call_Duration',_0x1eec('0x79'),_0x1eec('0x7a'),_0x1eec('0x7b')];_0x4cdbb7=_[_0x1eec('0x7c')](_0x401768[_0x1eec('0x35')],function(_0x24b296){return _0x52bcbe[_0x1eec('0x7d')](_0x24b296[_0x1eec('0x7e')]);});for(var _0x54228a=0x0;_0x54228a<_0x4cdbb7['length'];_0x54228a++){if(_0x4cdbb7[_0x54228a]['system_mandatory']===![]){_0x320e49[_0x1eec('0x7f')]({'id':_0x4cdbb7[_0x54228a]['id'],'name':_0x4cdbb7[_0x54228a][_0x1eec('0x80')],'custom':_0x4cdbb7[_0x54228a][_0x1eec('0x81')],'options':_0x4cdbb7[_0x54228a]['data_type']===_0x1eec('0x82')&&_0x4cdbb7[_0x54228a]['pick_list_values'][_0x1eec('0x4d')]>-0x1?_[_0x1eec('0x2d')](_0x4cdbb7[_0x54228a][_0x1eec('0x83')],function(_0x901e98){return{'name':_0x901e98,'value':_0x901e98};}):[]});}}return{'count':_0x320e49[_0x1eec('0x4d')],'rows':_0x320e49};}else{return{'count':0x0,'rows':[]};}})[_0x1eec('0x26')](respondWithResult(_0x28bad3,null))['catch'](function(_0x3bf85e){var _0x3ed974=_0x335a24['query'][_0x1eec('0x84')]?0x1f4:_0x3bf85e[_0x1eec('0x85')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x1eec('0x86'),_0x3ed974,JSON[_0x1eec('0x87')](_0x3bf85e));delete _0x3bf85e[_0x1eec('0x2a')];if(_0x3ed974===0x191){_0x3ed974=0x190;}_0x28bad3[_0x1eec('0x1c')](_0x3ed974)[_0x1eec('0x2b')](_0x335a24[_0x1eec('0x31')][_0x1eec('0x84')]?{'message':_0x1eec('0x88'),'statusCode':_0x3bf85e[_0x1eec('0x85')]}:_0x3bf85e);});};
\ No newline at end of file
+var _0x4d0a=['Call_Duration','Call_Result','Call_Start_Time','Call_Type','includes','api_name','system_mandatory','push','display_label','custom_field','picklist','pick_list_values','statusCode','stringify','test','Wrong\x20credentials','zip-dir','fast-json-patch','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','api','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','ZohoAccount','rawAttributes','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','getConfigurations','findOne','ZohoConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','zoho.eu','com','serverUrl','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','Owner','Subject','WhoId'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x4d0a,0x199));var _0xa4d0=function(_0x435a5a,_0x6d2c39){_0x435a5a=_0x435a5a-0x0;var _0x93c827=_0x4d0a[_0x435a5a];return _0x93c827;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa4d0('0x0'));var jsonpatch=require(_0xa4d0('0x1'));var rp=require(_0xa4d0('0x2'));var moment=require(_0xa4d0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa4d0('0x4'));var util=require(_0xa4d0('0x5'));var path=require('path');var sox=require(_0xa4d0('0x6'));var csv=require(_0xa4d0('0x7'));var ejs=require(_0xa4d0('0x8'));var fs=require('fs');var fs_extra=require(_0xa4d0('0x9'));var _=require(_0xa4d0('0xa'));var squel=require(_0xa4d0('0xb'));var crypto=require('crypto');var jsforce=require(_0xa4d0('0xc'));var deskjs=require(_0xa4d0('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa4d0('0xe'));var Papa=require(_0xa4d0('0xf'));var Redis=require(_0xa4d0('0x10'));var authService=require(_0xa4d0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa4d0('0x12'));var hardwareService=require(_0xa4d0('0x13'));var logger=require('../../config/logger')(_0xa4d0('0x14'));var utils=require('../../config/utils');var config=require(_0xa4d0('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa4d0('0x16'))['db'];var integrations=require(_0xa4d0('0x17'));function respondWithStatusCode(_0x5b67d1,_0x30d6a3){_0x30d6a3=_0x30d6a3||0xcc;return function(_0x122be5){if(_0x122be5){return _0x5b67d1[_0xa4d0('0x18')](_0x30d6a3);}return _0x5b67d1[_0xa4d0('0x19')](_0x30d6a3)[_0xa4d0('0x1a')]();};}function respondWithResult(_0x5e77b6,_0x517d99){_0x517d99=_0x517d99||0xc8;return function(_0x1763e0){if(_0x1763e0){return _0x5e77b6[_0xa4d0('0x19')](_0x517d99)[_0xa4d0('0x1b')](_0x1763e0);}};}function respondWithFilteredResult(_0x780f3c,_0x11f892){return function(_0x298c4e){if(_0x298c4e){var _0x2b8d86=typeof _0x11f892[_0xa4d0('0x1c')]===_0xa4d0('0x1d')&&typeof _0x11f892[_0xa4d0('0x1e')]==='undefined';var _0xef8761=_0x298c4e[_0xa4d0('0x1f')];var _0x38adec=_0x2b8d86?0x0:_0x11f892[_0xa4d0('0x1c')];var _0x1813be=_0x2b8d86?_0x298c4e[_0xa4d0('0x1f')]:_0x11f892['offset']+_0x11f892[_0xa4d0('0x1e')];var _0x37e5fc;if(_0x1813be>=_0xef8761){_0x1813be=_0xef8761;_0x37e5fc=0xc8;}else{_0x37e5fc=0xce;}_0x780f3c[_0xa4d0('0x19')](_0x37e5fc);return _0x780f3c[_0xa4d0('0x20')](_0xa4d0('0x21'),_0x38adec+'-'+_0x1813be+'/'+_0xef8761)['json'](_0x298c4e);}return null;};}function patchUpdates(_0x345a15){return function(_0x33ddb7){try{jsonpatch[_0xa4d0('0x22')](_0x33ddb7,_0x345a15,!![]);}catch(_0x401c98){return BPromise[_0xa4d0('0x23')](_0x401c98);}return _0x33ddb7['save']();};}function saveUpdates(_0x455943,_0x3ac5e6){return function(_0x21d36b){if(_0x21d36b){return _0x21d36b[_0xa4d0('0x24')](_0x455943)[_0xa4d0('0x25')](function(_0x5856c4){return _0x5856c4;});}return null;};}function removeEntity(_0x14560a,_0x128559){return function(_0x4e47ac){if(_0x4e47ac){return _0x4e47ac[_0xa4d0('0x26')]()['then'](function(){_0x14560a[_0xa4d0('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ece33,_0x58d465){return function(_0x46701b){if(!_0x46701b){_0x1ece33[_0xa4d0('0x18')](0x194);}return _0x46701b;};}function handleError(_0x1383e4,_0x452c13){_0x452c13=_0x452c13||0x1f4;return function(_0x35c175){logger[_0xa4d0('0x27')](_0x35c175[_0xa4d0('0x28')]);if(_0x35c175[_0xa4d0('0x29')]){delete _0x35c175[_0xa4d0('0x29')];}_0x1383e4[_0xa4d0('0x19')](_0x452c13)['send'](_0x35c175);};}exports[_0xa4d0('0x2a')]=function(_0x43918d,_0x2f3a2a){var _0x4812fd={},_0x139c47={},_0x4a4665={'count':0x0,'rows':[]};var _0x17cbb9=_[_0xa4d0('0x2b')](db[_0xa4d0('0x2c')][_0xa4d0('0x2d')],function(_0x2b3271){return{'name':_0x2b3271[_0xa4d0('0x2e')],'type':_0x2b3271[_0xa4d0('0x2f')][_0xa4d0('0x30')]};});_0x139c47['model']=_[_0xa4d0('0x2b')](_0x17cbb9,_0xa4d0('0x29'));_0x139c47['query']=_[_0xa4d0('0x31')](_0x43918d['query']);_0x139c47[_0xa4d0('0x32')]=_[_0xa4d0('0x33')](_0x139c47[_0xa4d0('0x34')],_0x139c47[_0xa4d0('0x35')]);_0x4812fd[_0xa4d0('0x36')]=_[_0xa4d0('0x33')](_0x139c47['model'],qs['fields'](_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x37')]));_0x4812fd[_0xa4d0('0x36')]=_0x4812fd[_0xa4d0('0x36')][_0xa4d0('0x38')]?_0x4812fd[_0xa4d0('0x36')]:_0x139c47[_0xa4d0('0x34')];if(!_0x43918d[_0xa4d0('0x35')]['hasOwnProperty']('nolimit')){_0x4812fd[_0xa4d0('0x1e')]=qs[_0xa4d0('0x1e')](_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x1e')]);_0x4812fd[_0xa4d0('0x1c')]=qs[_0xa4d0('0x1c')](_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x1c')]);}_0x4812fd[_0xa4d0('0x39')]=qs[_0xa4d0('0x3a')](_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x3a')]);_0x4812fd[_0xa4d0('0x3b')]=qs['filters'](_[_0xa4d0('0x3c')](_0x43918d[_0xa4d0('0x35')],_0x139c47[_0xa4d0('0x32')]),_0x17cbb9);if(_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x3d')]){_0x4812fd[_0xa4d0('0x3b')]=_[_0xa4d0('0x3e')](_0x4812fd[_0xa4d0('0x3b')],{'$or':_['map'](_0x17cbb9,function(_0xbdb2c3){if(_0xbdb2c3[_0xa4d0('0x2f')]!==_0xa4d0('0x3f')){var _0x21eac2={};_0x21eac2[_0xbdb2c3[_0xa4d0('0x29')]]={'$like':'%'+_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x3d')]+'%'};return _0x21eac2;}})});}_0x4812fd=_[_0xa4d0('0x3e')]({},_0x4812fd,_0x43918d[_0xa4d0('0x40')]);var _0x1edf77={'where':_0x4812fd['where']};return db[_0xa4d0('0x2c')][_0xa4d0('0x1f')](_0x1edf77)[_0xa4d0('0x25')](function(_0x363f2b){_0x4a4665[_0xa4d0('0x1f')]=_0x363f2b;if(_0x43918d[_0xa4d0('0x35')][_0xa4d0('0x41')]){_0x4812fd[_0xa4d0('0x42')]=[{'all':!![]}];}return db['ZohoAccount'][_0xa4d0('0x43')](_0x4812fd);})[_0xa4d0('0x25')](function(_0x1a6937){_0x4a4665[_0xa4d0('0x44')]=_0x1a6937;return _0x4a4665;})[_0xa4d0('0x25')](respondWithFilteredResult(_0x2f3a2a,_0x4812fd))[_0xa4d0('0x45')](handleError(_0x2f3a2a,null));};exports[_0xa4d0('0x46')]=function(_0x9764c7,_0xada49f){var _0x348cae={'raw':![],'where':{'id':_0x9764c7['params']['id']}},_0x944247={};_0x944247[_0xa4d0('0x34')]=_['keys'](db[_0xa4d0('0x2c')][_0xa4d0('0x2d')]);_0x944247[_0xa4d0('0x35')]=_['keys'](_0x9764c7['query']);_0x944247[_0xa4d0('0x32')]=_[_0xa4d0('0x33')](_0x944247[_0xa4d0('0x34')],_0x944247[_0xa4d0('0x35')]);_0x348cae[_0xa4d0('0x36')]=_[_0xa4d0('0x33')](_0x944247[_0xa4d0('0x34')],qs[_0xa4d0('0x37')](_0x9764c7[_0xa4d0('0x35')][_0xa4d0('0x37')]));_0x348cae[_0xa4d0('0x36')]=_0x348cae[_0xa4d0('0x36')][_0xa4d0('0x38')]?_0x348cae[_0xa4d0('0x36')]:_0x944247[_0xa4d0('0x34')];if(_0x9764c7[_0xa4d0('0x35')][_0xa4d0('0x41')]){_0x348cae['include']=[{'all':!![]}];}_0x348cae=_['merge']({},_0x348cae,_0x9764c7[_0xa4d0('0x40')]);return db[_0xa4d0('0x2c')][_0xa4d0('0x47')](_0x348cae)[_0xa4d0('0x25')](handleEntityNotFound(_0xada49f,null))[_0xa4d0('0x25')](respondWithResult(_0xada49f,null))[_0xa4d0('0x45')](handleError(_0xada49f,null));};exports[_0xa4d0('0x48')]=function(_0x59ef35,_0xa7437d){return db['ZohoAccount'][_0xa4d0('0x48')](_0x59ef35[_0xa4d0('0x49')],{})['then'](respondWithResult(_0xa7437d,0xc9))[_0xa4d0('0x45')](handleError(_0xa7437d,null));};exports['update']=function(_0x52b544,_0x1381c5){if(_0x52b544[_0xa4d0('0x49')]['id']){delete _0x52b544[_0xa4d0('0x49')]['id'];}return db[_0xa4d0('0x2c')][_0xa4d0('0x47')]({'where':{'id':_0x52b544[_0xa4d0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1381c5,null))[_0xa4d0('0x25')](saveUpdates(_0x52b544[_0xa4d0('0x49')],null))[_0xa4d0('0x25')](respondWithResult(_0x1381c5,null))['catch'](handleError(_0x1381c5,null));};exports[_0xa4d0('0x26')]=function(_0x5e4e22,_0x3e6c18){return db[_0xa4d0('0x2c')][_0xa4d0('0x47')]({'where':{'id':_0x5e4e22[_0xa4d0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e6c18,null))[_0xa4d0('0x25')](removeEntity(_0x3e6c18,null))[_0xa4d0('0x45')](handleError(_0x3e6c18,null));};exports[_0xa4d0('0x4b')]=function(_0x53c42d,_0x3faef6,_0x1dc6c3){var _0x2a3d6e={};var _0x565efb={};var _0x576d4a;var _0x3700fe;return db[_0xa4d0('0x2c')][_0xa4d0('0x4c')]({'where':{'id':_0x53c42d[_0xa4d0('0x4a')]['id']}})[_0xa4d0('0x25')](handleEntityNotFound(_0x3faef6,null))[_0xa4d0('0x25')](function(_0x258a33){if(_0x258a33){_0x576d4a=_0x258a33;_0x565efb[_0xa4d0('0x34')]=_[_0xa4d0('0x31')](db[_0xa4d0('0x4d')][_0xa4d0('0x2d')]);_0x565efb['query']=_[_0xa4d0('0x31')](_0x53c42d[_0xa4d0('0x35')]);_0x565efb[_0xa4d0('0x32')]=_['intersection'](_0x565efb[_0xa4d0('0x34')],_0x565efb[_0xa4d0('0x35')]);_0x2a3d6e['attributes']=_[_0xa4d0('0x33')](_0x565efb['model'],qs[_0xa4d0('0x37')](_0x53c42d[_0xa4d0('0x35')][_0xa4d0('0x37')]));_0x2a3d6e['attributes']=_0x2a3d6e[_0xa4d0('0x36')][_0xa4d0('0x38')]?_0x2a3d6e[_0xa4d0('0x36')]:_0x565efb[_0xa4d0('0x34')];_0x2a3d6e[_0xa4d0('0x39')]=qs[_0xa4d0('0x3a')](_0x53c42d[_0xa4d0('0x35')][_0xa4d0('0x3a')]);_0x2a3d6e[_0xa4d0('0x3b')]=qs[_0xa4d0('0x32')](_[_0xa4d0('0x3c')](_0x53c42d[_0xa4d0('0x35')],_0x565efb[_0xa4d0('0x32')]));if(_0x53c42d['query'][_0xa4d0('0x3d')]){_0x2a3d6e[_0xa4d0('0x3b')]=_[_0xa4d0('0x3e')](_0x2a3d6e[_0xa4d0('0x3b')],{'$or':_[_0xa4d0('0x2b')](_0x2a3d6e[_0xa4d0('0x36')],function(_0x508b37){var _0x2c3c4e={};_0x2c3c4e[_0x508b37]={'$like':'%'+_0x53c42d[_0xa4d0('0x35')][_0xa4d0('0x3d')]+'%'};return _0x2c3c4e;})});}_0x2a3d6e=_['merge']({},_0x2a3d6e,_0x53c42d[_0xa4d0('0x40')]);return _0x576d4a['getConfigurations'](_0x2a3d6e);}})[_0xa4d0('0x25')](function(_0xcaddb4){if(_0xcaddb4){_0x3700fe=_0xcaddb4[_0xa4d0('0x38')];if(!_0x53c42d[_0xa4d0('0x35')][_0xa4d0('0x4e')](_0xa4d0('0x4f'))){_0x2a3d6e[_0xa4d0('0x1e')]=qs[_0xa4d0('0x1e')](_0x53c42d[_0xa4d0('0x35')][_0xa4d0('0x1e')]);_0x2a3d6e['offset']=qs[_0xa4d0('0x1c')](_0x53c42d[_0xa4d0('0x35')]['offset']);}return _0x576d4a[_0xa4d0('0x4b')](_0x2a3d6e);}})[_0xa4d0('0x25')](function(_0x25e4ca){if(_0x25e4ca){return _0x25e4ca?{'count':_0x3700fe,'rows':_0x25e4ca}:null;}})[_0xa4d0('0x25')](respondWithResult(_0x3faef6,null))['catch'](handleError(_0x3faef6,null));};exports[_0xa4d0('0x50')]=function(_0x4d4dac,_0x3cecdd,_0x2e70f6){if(_0x4d4dac[_0xa4d0('0x49')]['id']){delete _0x4d4dac[_0xa4d0('0x49')]['id'];}return db[_0xa4d0('0x2c')][_0xa4d0('0x4c')]({'where':{'id':_0x4d4dac['params']['id']}})['then'](handleEntityNotFound(_0x3cecdd,null))[_0xa4d0('0x25')](function(_0x5dc010){if(_0x5dc010){_0x4d4dac[_0xa4d0('0x49')][_0xa4d0('0x51')]=_0x5dc010['id'];_0x4d4dac[_0xa4d0('0x49')][_0xa4d0('0x52')]=integrations[_0xa4d0('0x53')](_0x4d4dac['body'][_0xa4d0('0x54')],_0x4d4dac[_0xa4d0('0x49')]['type']);_0x4d4dac[_0xa4d0('0x49')][_0xa4d0('0x55')]=integrations['getDescriptions'](_0x4d4dac[_0xa4d0('0x49')][_0xa4d0('0x54')],_0x4d4dac[_0xa4d0('0x49')][_0xa4d0('0x2f')]);return db[_0xa4d0('0x4d')]['create'](_0x4d4dac[_0xa4d0('0x49')],{'include':[{'model':db[_0xa4d0('0x56')],'as':_0xa4d0('0x52')},{'model':db[_0xa4d0('0x56')],'as':_0xa4d0('0x55')}]});}return null;})[_0xa4d0('0x25')](respondWithResult(_0x3cecdd,null))[_0xa4d0('0x45')](handleError(_0x3cecdd,null));};function getAccessToken(_0x4423eb){return new Promise(function(_0x4035ce,_0x2cc1ca){var _0x5d30d8;switch(_0x4423eb[_0xa4d0('0x57')]){case'US':_0x5d30d8=_0xa4d0('0x58');break;case'AU':_0x5d30d8=_0xa4d0('0x59');break;case'EU':_0x5d30d8=_0xa4d0('0x5a');break;case'IN':_0x5d30d8=_0xa4d0('0x5b');break;case'CN':_0x5d30d8=_0xa4d0('0x5c');break;default:_0x5d30d8='https://accounts.zoho.eu';break;}var _0x35c35c={'method':'POST','uri':_0x5d30d8+_0xa4d0('0x5d'),'qs':{'refresh_token':_0x4423eb[_0xa4d0('0x5e')],'client_id':_0x4423eb[_0xa4d0('0x5f')],'client_secret':_0x4423eb[_0xa4d0('0x60')],'grant_type':_0xa4d0('0x61')},'json':!![]};return rp(_0x35c35c)[_0xa4d0('0x25')](function(_0x10c275){if(_0x10c275['access_token']){_0x4035ce(_0x10c275[_0xa4d0('0x62')]);}else{_0x2cc1ca(_0xa4d0('0x63'));}})[_0xa4d0('0x45')](function(_0x3edf2e){_0x2cc1ca(_0x3edf2e);});});}exports[_0xa4d0('0x64')]=function(_0x980128,_0x581262,_0x540dda){var _0x2a0fc6,_0x4d11db,_0x3dfbbb,_0x30b938,_0x569dec;return db[_0xa4d0('0x2c')][_0xa4d0('0x4c')]({'where':{'id':_0x980128[_0xa4d0('0x4a')]['id']},'attributes':['id','host','zone',_0xa4d0('0x5f'),'clientSecret','serverUrl','code',_0xa4d0('0x5e')]})[_0xa4d0('0x25')](handleEntityNotFound(_0x581262,null))[_0xa4d0('0x25')](function(_0x405c75){_0x569dec=_0x405c75;_0x2a0fc6=_0x569dec['host'];_0x4d11db=_0x2a0fc6===_0xa4d0('0x65')?'eu':_0xa4d0('0x66');_0x3dfbbb=_0x569dec[_0xa4d0('0x67')];var _0x29f802=_0x3dfbbb[_0xa4d0('0x68')](-0x1);if(_0x29f802==='/'||_0x29f802==='\x5c'||_0x29f802===':'){_0x3dfbbb=_0x3dfbbb[_0xa4d0('0x69')](0x0,_0x3dfbbb['lastIndexOf'](_0x29f802));}if(!_0x569dec[_0xa4d0('0x5e')]){throw new Error(_0xa4d0('0x6a'));}return getAccessToken(_0x569dec);})['then'](function(_0x29211a){if(_0x29211a){return rp({'method':_0xa4d0('0x6b'),'uri':util[_0xa4d0('0x6c')](_0xa4d0('0x6d'),_0x4d11db),'qs':{'module':'Calls'},'headers':{'Authorization':_0xa4d0('0x6e')+_0x29211a},'json':!![]});}})[_0xa4d0('0x25')](function(_0x5317e0){if(_0x5317e0){if(_0x5317e0[_0xa4d0('0x6f')]&&_0x5317e0[_0xa4d0('0x6f')][_0xa4d0('0x27')]){throw new Error(_0x5317e0[_0xa4d0('0x6f')][_0xa4d0('0x27')]['message']);}var _0x182deb=[];var _0x27193a=[];var _0x152c5f=[_0xa4d0('0x70'),_0xa4d0('0x71'),'Description',_0xa4d0('0x72'),_0xa4d0('0x73'),_0xa4d0('0x74'),_0xa4d0('0x75'),_0xa4d0('0x76')];_0x27193a=_['remove'](_0x5317e0['fields'],function(_0xf4580){return _0x152c5f[_0xa4d0('0x77')](_0xf4580[_0xa4d0('0x78')]);});for(var _0x354694=0x0;_0x354694<_0x27193a[_0xa4d0('0x38')];_0x354694++){if(_0x27193a[_0x354694][_0xa4d0('0x79')]===![]){_0x182deb[_0xa4d0('0x7a')]({'id':_0x27193a[_0x354694]['id'],'name':_0x27193a[_0x354694][_0xa4d0('0x7b')],'custom':_0x27193a[_0x354694][_0xa4d0('0x7c')],'options':_0x27193a[_0x354694]['data_type']===_0xa4d0('0x7d')&&_0x27193a[_0x354694][_0xa4d0('0x7e')]['length']>-0x1?_[_0xa4d0('0x2b')](_0x27193a[_0x354694][_0xa4d0('0x7e')],function(_0x1c384d){return{'name':_0x1c384d,'value':_0x1c384d};}):[]});}}return{'count':_0x182deb[_0xa4d0('0x38')],'rows':_0x182deb};}else{return{'count':0x0,'rows':[]};}})[_0xa4d0('0x25')](respondWithResult(_0x581262,null))['catch'](function(_0x66fcaf){var _0x1e78ba=_0x980128[_0xa4d0('0x35')]['test']?0x1f4:_0x66fcaf[_0xa4d0('0x7f')]||0x1f4;logger[_0xa4d0('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0xa4d0('0x64'),_0x1e78ba,JSON[_0xa4d0('0x80')](_0x66fcaf));delete _0x66fcaf['name'];if(_0x1e78ba===0x191){_0x1e78ba=0x190;}_0x581262[_0xa4d0('0x19')](_0x1e78ba)['send'](_0x980128[_0xa4d0('0x35')][_0xa4d0('0x81')]?{'message':_0xa4d0('0x82'),'statusCode':_0x66fcaf['statusCode']}:_0x66fcaf);});};
\ No newline at end of file
index bfe0788..00e8d53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2af4=['error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','zone','host','application/x-www-form-urlencoded','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intZohoAccount.attributes','exports','int_zoho_accounts','changed','serverUrl','clientId','clientSecret','slice','substring','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','code','then','parse','refresh_token','refreshToken','format'];(function(_0x3ff20a,_0x544c65){var _0x2f9cff=function(_0x4bbfbb){while(--_0x4bbfbb){_0x3ff20a['push'](_0x3ff20a['shift']());}};_0x2f9cff(++_0x544c65);}(_0x2af4,0x17b));var _0x42af=function(_0x1c716f,_0x3c0810){_0x1c716f=_0x1c716f-0x0;var _0x215b8b=_0x2af4[_0x1c716f];return _0x215b8b;};'use strict';var _=require(_0x42af('0x0'));var util=require(_0x42af('0x1'));var logger=require('../../config/logger')(_0x42af('0x2'));var moment=require(_0x42af('0x3'));var BPromise=require(_0x42af('0x4'));var rp=require(_0x42af('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x42af('0x6'));var config=require(_0x42af('0x7'));var attributes=require(_0x42af('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x42af('0x9')]=function(_0x56c733,_0x285196){return _0x56c733['define']('ZohoAccount',attributes,{'tableName':_0x42af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4d1d52,_0x304ead,_0x26f764){if(_0x4d1d52[_0x42af('0xb')]('zone')||_0x4d1d52[_0x42af('0xb')](_0x42af('0xc'))||_0x4d1d52['changed'](_0x42af('0xd'))||_0x4d1d52[_0x42af('0xb')](_0x42af('0xe'))||_0x4d1d52['changed']('code')||_0x4d1d52[_0x42af('0xb')]('host')){var _0x3fdaec,_0x5559d7;_0x3fdaec=_0x4d1d52[_0x42af('0xc')];var _0x22de9a=_0x3fdaec[_0x42af('0xf')](-0x1);if(_0x22de9a==='/'||_0x22de9a==='\x5c'||_0x22de9a===':'){_0x3fdaec=_0x3fdaec[_0x42af('0x10')](0x0,_0x3fdaec[_0x42af('0x11')](_0x22de9a));}switch(_0x4d1d52['zone']){case'US':_0x5559d7='https://accounts.zoho.com';break;case'AU':_0x5559d7=_0x42af('0x12');break;case'IN':_0x5559d7=_0x42af('0x13');break;case'CN':_0x5559d7=_0x42af('0x14');break;default:_0x5559d7=_0x42af('0x15');break;}var _0x3eac41={'method':_0x42af('0x16'),'uri':_0x5559d7+_0x42af('0x17'),'form':{'grant_type':_0x42af('0x18'),'client_id':_0x4d1d52[_0x42af('0xd')],'client_secret':_0x4d1d52[_0x42af('0xe')],'redirect_uri':_0x4d1d52[_0x42af('0xc')],'code':_0x4d1d52[_0x42af('0x19')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3eac41)[_0x42af('0x1a')](function(_0x2ce89e){var _0x18d510=JSON[_0x42af('0x1b')](_0x2ce89e);if(_0x18d510[_0x42af('0x1c')]){_0x4d1d52[_0x42af('0x1d')]=_0x18d510[_0x42af('0x1c')];logger['info'](util[_0x42af('0x1e')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4d1d52['name'],_0x4d1d52['id']));}else{logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x4d1d52[_0x42af('0x21')],_0x4d1d52['id']),util[_0x42af('0x22')](_0x18d510,{'showHidden':![],'depth':null}));}return _0x26f764(null,_0x304ead);})[_0x42af('0x23')](function(_0x1fe4c8){logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x4d1d52['name'],_0x4d1d52['id']),util[_0x42af('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x26f764(_0x1fe4c8);});}else{return _0x26f764(null,_0x304ead);}},'beforeUpdate':function(_0x270940,_0x22f42d,_0x5f3f53){if(_0x270940[_0x42af('0xb')](_0x42af('0x24'))||_0x270940['changed']('serverUrl')||_0x270940['changed']('clientId')||_0x270940[_0x42af('0xb')](_0x42af('0xe'))||_0x270940[_0x42af('0xb')](_0x42af('0x19'))||_0x270940[_0x42af('0xb')](_0x42af('0x25'))){var _0x5bec1d,_0x10019e;_0x5bec1d=_0x270940[_0x42af('0xc')];var _0x455da6=_0x5bec1d['slice'](-0x1);if(_0x455da6==='/'||_0x455da6==='\x5c'||_0x455da6===':'){_0x5bec1d=_0x5bec1d[_0x42af('0x10')](0x0,_0x5bec1d[_0x42af('0x11')](_0x455da6));}switch(_0x270940[_0x42af('0x24')]){case'US':_0x10019e='https://accounts.zoho.com';break;case'AU':_0x10019e=_0x42af('0x12');break;case'IN':_0x10019e=_0x42af('0x13');break;case'CN':_0x10019e='https://accounts.zoho.com.cn';break;default:_0x10019e='https://accounts.zoho.eu';break;}var _0x17404={'method':'POST','uri':_0x10019e+_0x42af('0x17'),'form':{'grant_type':_0x42af('0x18'),'client_id':_0x270940[_0x42af('0xd')],'client_secret':_0x270940[_0x42af('0xe')],'redirect_uri':_0x270940['serverUrl'],'code':_0x270940[_0x42af('0x19')]},'headers':{'Content-Type':_0x42af('0x26')}};return rp(_0x17404)['then'](function(_0x513d21){var _0x341fb2=JSON[_0x42af('0x1b')](_0x513d21);if(_0x341fb2['refresh_token']){_0x270940[_0x42af('0x1d')]=_0x341fb2['refresh_token'];logger[_0x42af('0x27')](util[_0x42af('0x1e')](_0x42af('0x28'),_0x270940[_0x42af('0x21')],_0x270940['id']));}else{logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x270940[_0x42af('0x21')],_0x270940['id']),util[_0x42af('0x22')](_0x341fb2,{'showHidden':![],'depth':null}));}return _0x5f3f53(null,_0x22f42d);})['catch'](function(_0x52cde4){logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x270940[_0x42af('0x21')],_0x270940['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x5f3f53(_0x52cde4);});}else{return _0x5f3f53(null,_0x22f42d);}}}});};
\ No newline at end of file
+var _0x61ef=['format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','inspect','catch','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','slice','https://accounts.zoho.in','authorization_code','parse','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','../../components/integrations/configuration','exports','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','host','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','application/x-www-form-urlencoded','then','refreshToken','refresh_token','info'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x61ef,0x1ce));var _0xf61e=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x61ef[_0x1203f];return _0x365f0a;};'use strict';var _=require(_0xf61e('0x0'));var util=require(_0xf61e('0x1'));var logger=require(_0xf61e('0x2'))(_0xf61e('0x3'));var moment=require(_0xf61e('0x4'));var BPromise=require(_0xf61e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf61e('0x6'));var config=require(_0xf61e('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0xf61e('0x8'));module[_0xf61e('0x9')]=function(_0x485426,_0x4f247c){return _0x485426['define']('ZohoAccount',attributes,{'tableName':_0xf61e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4630f4,_0x447c08,_0x2a64a5){if(_0x4630f4[_0xf61e('0xb')](_0xf61e('0xc'))||_0x4630f4[_0xf61e('0xb')](_0xf61e('0xd'))||_0x4630f4['changed'](_0xf61e('0xe'))||_0x4630f4[_0xf61e('0xb')](_0xf61e('0xf'))||_0x4630f4['changed'](_0xf61e('0x10'))||_0x4630f4[_0xf61e('0xb')](_0xf61e('0x11'))){var _0x452ded,_0x2e067b;_0x452ded=_0x4630f4[_0xf61e('0xd')];var _0x5f43df=_0x452ded['slice'](-0x1);if(_0x5f43df==='/'||_0x5f43df==='\x5c'||_0x5f43df===':'){_0x452ded=_0x452ded['substring'](0x0,_0x452ded[_0xf61e('0x12')](_0x5f43df));}switch(_0x4630f4[_0xf61e('0xc')]){case'US':_0x2e067b=_0xf61e('0x13');break;case'AU':_0x2e067b=_0xf61e('0x14');break;case'IN':_0x2e067b='https://accounts.zoho.in';break;case'CN':_0x2e067b=_0xf61e('0x15');break;default:_0x2e067b=_0xf61e('0x16');break;}var _0x77e8ac={'method':_0xf61e('0x17'),'uri':_0x2e067b+_0xf61e('0x18'),'form':{'grant_type':'authorization_code','client_id':_0x4630f4[_0xf61e('0xe')],'client_secret':_0x4630f4[_0xf61e('0xf')],'redirect_uri':_0x4630f4[_0xf61e('0xd')],'code':_0x4630f4[_0xf61e('0x10')]},'headers':{'Content-Type':_0xf61e('0x19')}};return rp(_0x77e8ac)[_0xf61e('0x1a')](function(_0xd74382){var _0x4b07f8=JSON['parse'](_0xd74382);if(_0x4b07f8['refresh_token']){_0x4630f4[_0xf61e('0x1b')]=_0x4b07f8[_0xf61e('0x1c')];logger[_0xf61e('0x1d')](util[_0xf61e('0x1e')](_0xf61e('0x1f'),_0x4630f4[_0xf61e('0x20')],_0x4630f4['id']));}else{logger[_0xf61e('0x21')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4630f4[_0xf61e('0x20')],_0x4630f4['id']),util[_0xf61e('0x22')](_0x4b07f8,{'showHidden':![],'depth':null}));}return _0x2a64a5(null,_0x447c08);})[_0xf61e('0x23')](function(_0x297f92){logger['error'](util['format'](_0xf61e('0x24'),_0x4630f4[_0xf61e('0x20')],_0x4630f4['id']),util[_0xf61e('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x2a64a5(_0x297f92);});}else{return _0x2a64a5(null,_0x447c08);}},'beforeUpdate':function(_0x5ab8af,_0x591a2c,_0xed0622){if(_0x5ab8af[_0xf61e('0xb')](_0xf61e('0xc'))||_0x5ab8af[_0xf61e('0xb')](_0xf61e('0xd'))||_0x5ab8af[_0xf61e('0xb')]('clientId')||_0x5ab8af[_0xf61e('0xb')](_0xf61e('0xf'))||_0x5ab8af[_0xf61e('0xb')](_0xf61e('0x10'))||_0x5ab8af[_0xf61e('0xb')]('host')){var _0x4fd46f,_0x34c7df;_0x4fd46f=_0x5ab8af[_0xf61e('0xd')];var _0x521cfb=_0x4fd46f[_0xf61e('0x25')](-0x1);if(_0x521cfb==='/'||_0x521cfb==='\x5c'||_0x521cfb===':'){_0x4fd46f=_0x4fd46f['substring'](0x0,_0x4fd46f[_0xf61e('0x12')](_0x521cfb));}switch(_0x5ab8af[_0xf61e('0xc')]){case'US':_0x34c7df='https://accounts.zoho.com';break;case'AU':_0x34c7df=_0xf61e('0x14');break;case'IN':_0x34c7df=_0xf61e('0x26');break;case'CN':_0x34c7df=_0xf61e('0x15');break;default:_0x34c7df=_0xf61e('0x16');break;}var _0x359172={'method':_0xf61e('0x17'),'uri':_0x34c7df+'/oauth/v2/token','form':{'grant_type':_0xf61e('0x27'),'client_id':_0x5ab8af['clientId'],'client_secret':_0x5ab8af['clientSecret'],'redirect_uri':_0x5ab8af[_0xf61e('0xd')],'code':_0x5ab8af[_0xf61e('0x10')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x359172)[_0xf61e('0x1a')](function(_0x190c83){var _0x1f38e9=JSON[_0xf61e('0x28')](_0x190c83);if(_0x1f38e9['refresh_token']){_0x5ab8af[_0xf61e('0x1b')]=_0x1f38e9['refresh_token'];logger[_0xf61e('0x1d')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5ab8af[_0xf61e('0x20')],_0x5ab8af['id']));}else{logger['error'](util[_0xf61e('0x1e')](_0xf61e('0x24'),_0x5ab8af[_0xf61e('0x20')],_0x5ab8af['id']),util[_0xf61e('0x22')](_0x1f38e9,{'showHidden':![],'depth':null}));}return _0xed0622(null,_0x591a2c);})['catch'](function(_0x57b4e6){logger[_0xf61e('0x21')](util[_0xf61e('0x1e')](_0xf61e('0x24'),_0x5ab8af[_0xf61e('0x20')],_0x5ab8af['id']),util[_0xf61e('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0xed0622(_0x57b4e6);});}else{return _0xed0622(null,_0x591a2c);}}}});};
\ No newline at end of file
index d028833..885230e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','where','attributes','limit','include','map','model','raw','ShowZohoAccount'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2591db,_0xaec623,_0x1413d2){return new BPromise(function(_0x41fc3f,_0x34bdd0){return client[_0x2227('0xb')](_0x2591db,_0x1413d2)[_0x2227('0xc')](function(_0x496bbd){logger[_0x2227('0xd')]('ZohoAccount,\x20%s,\x20%s',_0xaec623,_0x2227('0xe'));logger[_0x2227('0xf')](_0x2227('0x10'),_0xaec623,_0x2227('0xe'),JSON[_0x2227('0x11')](_0x496bbd));if(_0x496bbd['error']){if(_0x496bbd[_0x2227('0x12')][_0x2227('0x13')]===0x1f4){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x496bbd[_0x2227('0x12')][_0x2227('0x15')]);return _0x34bdd0(_0x496bbd['error']['message']);}logger['error'](_0x2227('0x14'),_0xaec623,_0x496bbd['error'][_0x2227('0x15')]);return _0x41fc3f(_0x496bbd[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0x14'),_0xaec623,_0x2227('0xe'));_0x41fc3f(_0x496bbd[_0x2227('0x16')][_0x2227('0x15')]);}})[_0x2227('0x17')](function(_0x508e92){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x508e92);_0x34bdd0(_0x508e92);});});}exports[_0x2227('0x18')]=function(_0x531f75){var _0x11bf80=this;return new Promise(function(_0x620012,_0x65e3b6){return db[_0x2227('0x19')][_0x2227('0x1a')]({'raw':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x531f75[_0x2227('0x1b')]?_0x531f75['options'][_0x2227('0x1c')]||null:null,'attributes':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1d')]||null:null,'limit':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1e')]||null:null,'include':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1f')]?_[_0x2227('0x20')](_0x531f75['options'][_0x2227('0x1f')],function(_0x42d500){return{'model':db[_0x42d500['model']],'as':_0x42d500['as'],'attributes':_0x42d500[_0x2227('0x1d')],'include':_0x42d500[_0x2227('0x1f')]?_['map'](_0x42d500['include'],function(_0x17c7a4){return{'model':db[_0x17c7a4[_0x2227('0x21')]],'as':_0x17c7a4['as'],'attributes':_0x17c7a4[_0x2227('0x1d')],'include':_0x17c7a4[_0x2227('0x1f')]?_['map'](_0x17c7a4[_0x2227('0x1f')],function(_0x301304){return{'model':db[_0x301304[_0x2227('0x21')]],'as':_0x301304['as'],'attributes':_0x301304[_0x2227('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x204def){logger[_0x2227('0xd')](_0x2227('0x18'),_0x531f75);logger[_0x2227('0xf')](_0x2227('0x18'),_0x531f75,JSON['stringify'](_0x204def));_0x620012(_0x204def);})['catch'](function(_0x5d1d56){logger[_0x2227('0x12')]('GetZohoAccount',_0x5d1d56[_0x2227('0x15')],_0x531f75);_0x65e3b6(_0x11bf80[_0x2227('0x12')](0x1f4,_0x5d1d56['message']));});});};exports['ShowZohoAccount']=function(_0x1f1ba7){var _0x1818ba=this;return new Promise(function(_0x21838a,_0x4cc1e1){return db[_0x2227('0x19')]['find']({'raw':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x22')]===undefined?!![]:![]:!![],'where':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1c')]||null:null,'attributes':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1d')]||null:null,'include':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')]['include']?_[_0x2227('0x20')](_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1f')],function(_0x6cd5d7){return{'model':db[_0x6cd5d7['model']],'as':_0x6cd5d7['as'],'attributes':_0x6cd5d7[_0x2227('0x1d')],'include':_0x6cd5d7[_0x2227('0x1f')]?_[_0x2227('0x20')](_0x6cd5d7[_0x2227('0x1f')],function(_0x5186a6){return{'model':db[_0x5186a6[_0x2227('0x21')]],'as':_0x5186a6['as'],'attributes':_0x5186a6[_0x2227('0x1d')],'include':_0x5186a6[_0x2227('0x1f')]?_['map'](_0x5186a6['include'],function(_0x35d9f1){return{'model':db[_0x35d9f1[_0x2227('0x21')]],'as':_0x35d9f1['as'],'attributes':_0x35d9f1['attributes']};}):[]};}):[]};}):[]:[]})[_0x2227('0xc')](function(_0x9a8cc3){logger['info'](_0x2227('0x23'),_0x1f1ba7);logger['debug'](_0x2227('0x23'),_0x1f1ba7,JSON[_0x2227('0x11')](_0x9a8cc3));_0x21838a(_0x9a8cc3);})[_0x2227('0x17')](function(_0x36db00){logger['error'](_0x2227('0x23'),_0x36db00['message'],_0x1f1ba7);_0x4cc1e1(_0x1818ba[_0x2227('0x12')](0x1f4,_0x36db00[_0x2227('0x15')]));});});};
\ No newline at end of file
+var _0xd26f=['GetZohoAccount','ZohoAccount','raw','options','limit','map','model','include','attributes','then','ShowZohoAccount','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x3c77c1,_0x4d0da1){var _0x3d5cad=function(_0xf68fd5){while(--_0xf68fd5){_0x3c77c1['push'](_0x3c77c1['shift']());}};_0x3d5cad(++_0x4d0da1);}(_0xd26f,0x113));var _0xfd26=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xd26f[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xfd26('0x0'));var util=require(_0xfd26('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfd26('0x2'));var fs=require('fs');var Redis=require(_0xfd26('0x3'));var db=require(_0xfd26('0x4'))['db'];var utils=require(_0xfd26('0x5'));var logger=require(_0xfd26('0x6'))(_0xfd26('0x7'));var config=require(_0xfd26('0x8'));var jayson=require(_0xfd26('0x9'));var client=jayson[_0xfd26('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22b353,_0x3c148d,_0x1905a2){return new BPromise(function(_0x3d405f,_0x3c9154){return client[_0xfd26('0xb')](_0x22b353,_0x1905a2)['then'](function(_0xcf2fdb){logger[_0xfd26('0xc')](_0xfd26('0xd'),_0x3c148d,_0xfd26('0xe'));logger[_0xfd26('0xf')](_0xfd26('0x10'),_0x3c148d,'request\x20sent',JSON[_0xfd26('0x11')](_0xcf2fdb));if(_0xcf2fdb['error']){if(_0xcf2fdb[_0xfd26('0x12')]['code']===0x1f4){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x3c148d,_0xcf2fdb['error']['message']);return _0x3c9154(_0xcf2fdb[_0xfd26('0x12')][_0xfd26('0x13')]);}logger[_0xfd26('0x12')](_0xfd26('0xd'),_0x3c148d,_0xcf2fdb[_0xfd26('0x12')][_0xfd26('0x13')]);return _0x3d405f(_0xcf2fdb[_0xfd26('0x12')][_0xfd26('0x13')]);}else{logger[_0xfd26('0xc')](_0xfd26('0xd'),_0x3c148d,_0xfd26('0xe'));_0x3d405f(_0xcf2fdb[_0xfd26('0x14')][_0xfd26('0x13')]);}})[_0xfd26('0x15')](function(_0x2f9b37){logger['error'](_0xfd26('0xd'),_0x3c148d,_0x2f9b37);_0x3c9154(_0x2f9b37);});});}exports[_0xfd26('0x16')]=function(_0xeb7aeb){var _0x210dd4=this;return new Promise(function(_0x36a275,_0x5b3e8b){return db[_0xfd26('0x17')]['findAll']({'raw':_0xeb7aeb['options']?_0xeb7aeb['options'][_0xfd26('0x18')]===undefined?!![]:![]:!![],'where':_0xeb7aeb[_0xfd26('0x19')]?_0xeb7aeb['options']['where']||null:null,'attributes':_0xeb7aeb[_0xfd26('0x19')]?_0xeb7aeb[_0xfd26('0x19')]['attributes']||null:null,'limit':_0xeb7aeb[_0xfd26('0x19')]?_0xeb7aeb['options'][_0xfd26('0x1a')]||null:null,'include':_0xeb7aeb['options']?_0xeb7aeb[_0xfd26('0x19')]['include']?_[_0xfd26('0x1b')](_0xeb7aeb[_0xfd26('0x19')]['include'],function(_0x5f5d51){return{'model':db[_0x5f5d51[_0xfd26('0x1c')]],'as':_0x5f5d51['as'],'attributes':_0x5f5d51['attributes'],'include':_0x5f5d51[_0xfd26('0x1d')]?_[_0xfd26('0x1b')](_0x5f5d51[_0xfd26('0x1d')],function(_0x20be94){return{'model':db[_0x20be94[_0xfd26('0x1c')]],'as':_0x20be94['as'],'attributes':_0x20be94['attributes'],'include':_0x20be94[_0xfd26('0x1d')]?_['map'](_0x20be94[_0xfd26('0x1d')],function(_0x217a38){return{'model':db[_0x217a38['model']],'as':_0x217a38['as'],'attributes':_0x217a38[_0xfd26('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfd26('0x1f')](function(_0x375c98){logger[_0xfd26('0xc')](_0xfd26('0x16'),_0xeb7aeb);logger[_0xfd26('0xf')](_0xfd26('0x16'),_0xeb7aeb,JSON[_0xfd26('0x11')](_0x375c98));_0x36a275(_0x375c98);})[_0xfd26('0x15')](function(_0x5b3be9){logger['error']('GetZohoAccount',_0x5b3be9['message'],_0xeb7aeb);_0x5b3e8b(_0x210dd4[_0xfd26('0x12')](0x1f4,_0x5b3be9['message']));});});};exports[_0xfd26('0x20')]=function(_0x944d20){var _0x481b18=this;return new Promise(function(_0x5d8dab,_0x2b166c){return db['ZohoAccount']['find']({'raw':_0x944d20[_0xfd26('0x19')]?_0x944d20[_0xfd26('0x19')][_0xfd26('0x18')]===undefined?!![]:![]:!![],'where':_0x944d20[_0xfd26('0x19')]?_0x944d20[_0xfd26('0x19')]['where']||null:null,'attributes':_0x944d20[_0xfd26('0x19')]?_0x944d20[_0xfd26('0x19')][_0xfd26('0x1e')]||null:null,'include':_0x944d20[_0xfd26('0x19')]?_0x944d20[_0xfd26('0x19')]['include']?_[_0xfd26('0x1b')](_0x944d20['options'][_0xfd26('0x1d')],function(_0x1f1e63){return{'model':db[_0x1f1e63[_0xfd26('0x1c')]],'as':_0x1f1e63['as'],'attributes':_0x1f1e63['attributes'],'include':_0x1f1e63[_0xfd26('0x1d')]?_[_0xfd26('0x1b')](_0x1f1e63[_0xfd26('0x1d')],function(_0xd76274){return{'model':db[_0xd76274['model']],'as':_0xd76274['as'],'attributes':_0xd76274['attributes'],'include':_0xd76274[_0xfd26('0x1d')]?_['map'](_0xd76274[_0xfd26('0x1d')],function(_0x57a5a4){return{'model':db[_0x57a5a4[_0xfd26('0x1c')]],'as':_0x57a5a4['as'],'attributes':_0x57a5a4[_0xfd26('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfd26('0x1f')](function(_0x5ed9de){logger[_0xfd26('0xc')](_0xfd26('0x20'),_0x944d20);logger[_0xfd26('0xf')](_0xfd26('0x20'),_0x944d20,JSON['stringify'](_0x5ed9de));_0x5d8dab(_0x5ed9de);})[_0xfd26('0x15')](function(_0x50cca5){logger[_0xfd26('0x12')]('ShowZohoAccount',_0x50cca5[_0xfd26('0x13')],_0x944d20);_0x2b166c(_0x481b18[_0xfd26('0x12')](0x1f4,_0x50cca5[_0xfd26('0x13')]));});});};
\ No newline at end of file
index ed795a9..d5455ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca01=['/:id','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../config/environment','./intZohoConfiguration.controller','index','get','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put'];(function(_0x5ccb02,_0x3588fb){var _0x52a833=function(_0x1b61d5){while(--_0x1b61d5){_0x5ccb02['push'](_0x5ccb02['shift']());}};_0x52a833(++_0x3588fb);}(_0xca01,0xea));var _0x1ca0=function(_0x599b01,_0x30ffcb){_0x599b01=_0x599b01-0x0;var _0x1f9578=_0xca01[_0x599b01];return _0x1f9578;};'use strict';var multer=require(_0x1ca0('0x0'));var util=require(_0x1ca0('0x1'));var path=require('path');var timeout=require(_0x1ca0('0x2'));var express=require(_0x1ca0('0x3'));var router=express['Router']();var fs_extra=require(_0x1ca0('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1ca0('0x5'));var controller=require(_0x1ca0('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x1ca0('0x7')]);router[_0x1ca0('0x8')]('/:id',auth[_0x1ca0('0x9')](),controller[_0x1ca0('0xa')]);router[_0x1ca0('0x8')](_0x1ca0('0xb'),auth[_0x1ca0('0x9')](),controller[_0x1ca0('0xc')]);router[_0x1ca0('0x8')](_0x1ca0('0xd'),auth[_0x1ca0('0x9')](),controller['getSubjects']);router[_0x1ca0('0x8')](_0x1ca0('0xe'),auth[_0x1ca0('0x9')](),controller[_0x1ca0('0xf')]);router[_0x1ca0('0x10')]('/',auth[_0x1ca0('0x9')](),controller[_0x1ca0('0x11')]);router[_0x1ca0('0x12')](_0x1ca0('0x13'),auth[_0x1ca0('0x9')](),controller[_0x1ca0('0x14')]);router['delete'](_0x1ca0('0x13'),auth['isAuthenticated'](),controller[_0x1ca0('0x15')]);module[_0x1ca0('0x16')]=router;
\ No newline at end of file
+var _0x3ec0=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','index','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','/:id','destroy','exports','multer'];(function(_0x2e3e48,_0x4a3fe9){var _0xb208e5=function(_0x1503dd){while(--_0x1503dd){_0x2e3e48['push'](_0x2e3e48['shift']());}};_0xb208e5(++_0x4a3fe9);}(_0x3ec0,0xc7));var _0x03ec=function(_0x57c4b9,_0x45bf80){_0x57c4b9=_0x57c4b9-0x0;var _0x2834c0=_0x3ec0[_0x57c4b9];return _0x2834c0;};'use strict';var multer=require(_0x03ec('0x0'));var util=require(_0x03ec('0x1'));var path=require(_0x03ec('0x2'));var timeout=require(_0x03ec('0x3'));var express=require(_0x03ec('0x4'));var router=express[_0x03ec('0x5')]();var fs_extra=require(_0x03ec('0x6'));var auth=require(_0x03ec('0x7'));var interaction=require(_0x03ec('0x8'));var config=require(_0x03ec('0x9'));var controller=require(_0x03ec('0xa'));router[_0x03ec('0xb')]('/',auth['isAuthenticated'](),controller[_0x03ec('0xc')]);router[_0x03ec('0xb')]('/:id',auth[_0x03ec('0xd')](),controller[_0x03ec('0xe')]);router[_0x03ec('0xb')]('/:id/fields',auth[_0x03ec('0xd')](),controller[_0x03ec('0xf')]);router['get'](_0x03ec('0x10'),auth[_0x03ec('0xd')](),controller[_0x03ec('0x11')]);router[_0x03ec('0xb')](_0x03ec('0x12'),auth[_0x03ec('0xd')](),controller[_0x03ec('0x13')]);router['post']('/',auth[_0x03ec('0xd')](),controller['create']);router[_0x03ec('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x03ec('0x15')]);router['delete'](_0x03ec('0x16'),auth['isAuthenticated'](),controller[_0x03ec('0x17')]);module[_0x03ec('0x18')]=router;
\ No newline at end of file
index 9d89152..ca56834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1976=['exports','ENUM','contact','nothing','lead','contact_lead','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1976,0x1e3));var _0x6197=function(_0x2f5d4d,_0x4e4c9){_0x2f5d4d=_0x2f5d4d-0x0;var _0x3aae68=_0x1976[_0x2f5d4d];return _0x3aae68;};'use strict';var Sequelize=require('sequelize');module[_0x6197('0x0')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x6197('0x1')]('lead',_0x6197('0x2'),_0x6197('0x3')),'defaultValue':_0x6197('0x4')},'moduleSearch':{'type':Sequelize[_0x6197('0x1')](_0x6197('0x5'),'contact',_0x6197('0x4')),'defaultValue':_0x6197('0x5')},'description':{'type':Sequelize[_0x6197('0x6')]}};
\ No newline at end of file
+var _0x67b6=['contact_lead','lead','STRING','contact','nothing','ENUM'];(function(_0x4ccb06,_0x1980d4){var _0x39f3c5=function(_0x195f23){while(--_0x195f23){_0x4ccb06['push'](_0x4ccb06['shift']());}};_0x39f3c5(++_0x1980d4);}(_0x67b6,0x1f4));var _0x667b=function(_0x308c09,_0x1be3ee){_0x308c09=_0x308c09-0x0;var _0x964cc7=_0x67b6[_0x308c09];return _0x964cc7;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x667b('0x0')]},'moduleCreate':{'type':Sequelize['ENUM']('lead',_0x667b('0x1'),_0x667b('0x2')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x667b('0x3')](_0x667b('0x4'),'contact',_0x667b('0x5')),'defaultValue':_0x667b('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6d21ed4..be3eeff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee71=['rows','catch','params','includeAll','create','body','find','ZohoField','getFields','findOne','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','index','map','ZohoConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll'];(function(_0x418549,_0x11b13d){var _0x288826=function(_0x3c0411){while(--_0x3c0411){_0x418549['push'](_0x418549['shift']());}};_0x288826(++_0x11b13d);}(_0xee71,0xb2));var _0x1ee7=function(_0x3270f7,_0x4a28b7){_0x3270f7=_0x3270f7-0x0;var _0x189aa1=_0xee71[_0x3270f7];return _0x189aa1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1ee7('0x0'));var zipdir=require(_0x1ee7('0x1'));var jsonpatch=require(_0x1ee7('0x2'));var rp=require(_0x1ee7('0x3'));var moment=require(_0x1ee7('0x4'));var BPromise=require(_0x1ee7('0x5'));var Mustache=require(_0x1ee7('0x6'));var util=require('util');var path=require(_0x1ee7('0x7'));var sox=require(_0x1ee7('0x8'));var csv=require(_0x1ee7('0x9'));var ejs=require(_0x1ee7('0xa'));var fs=require('fs');var fs_extra=require(_0x1ee7('0xb'));var _=require(_0x1ee7('0xc'));var squel=require(_0x1ee7('0xd'));var crypto=require(_0x1ee7('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x1ee7('0xf'));var toCsv=require(_0x1ee7('0x9'));var querystring=require('querystring');var Papa=require(_0x1ee7('0x10'));var Redis=require(_0x1ee7('0x11'));var authService=require(_0x1ee7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1ee7('0x13'));var hardwareService=require(_0x1ee7('0x14'));var logger=require(_0x1ee7('0x15'))(_0x1ee7('0x16'));var utils=require(_0x1ee7('0x17'));var config=require(_0x1ee7('0x18'));var licenseUtil=require(_0x1ee7('0x19'));var db=require(_0x1ee7('0x1a'))['db'];function respondWithStatusCode(_0x5d0b3d,_0x3cf833){_0x3cf833=_0x3cf833||0xcc;return function(_0x290746){if(_0x290746){return _0x5d0b3d[_0x1ee7('0x1b')](_0x3cf833);}return _0x5d0b3d['status'](_0x3cf833)[_0x1ee7('0x1c')]();};}function respondWithResult(_0xcc238b,_0x164e7d){_0x164e7d=_0x164e7d||0xc8;return function(_0x739e76){if(_0x739e76){return _0xcc238b[_0x1ee7('0x1d')](_0x164e7d)['json'](_0x739e76);}};}function respondWithFilteredResult(_0xf14c3b,_0x38f051){return function(_0x392f9e){if(_0x392f9e){var _0x17adea=typeof _0x38f051[_0x1ee7('0x1e')]==='undefined'&&typeof _0x38f051[_0x1ee7('0x1f')]===_0x1ee7('0x20');var _0x2bf7ff=_0x392f9e[_0x1ee7('0x21')];var _0x5ecfe2=_0x17adea?0x0:_0x38f051['offset'];var _0x2350c2=_0x17adea?_0x392f9e['count']:_0x38f051[_0x1ee7('0x1e')]+_0x38f051[_0x1ee7('0x1f')];var _0x38fba9;if(_0x2350c2>=_0x2bf7ff){_0x2350c2=_0x2bf7ff;_0x38fba9=0xc8;}else{_0x38fba9=0xce;}_0xf14c3b[_0x1ee7('0x1d')](_0x38fba9);return _0xf14c3b[_0x1ee7('0x22')](_0x1ee7('0x23'),_0x5ecfe2+'-'+_0x2350c2+'/'+_0x2bf7ff)[_0x1ee7('0x24')](_0x392f9e);}return null;};}function patchUpdates(_0xadf921){return function(_0x31efe8){try{jsonpatch[_0x1ee7('0x25')](_0x31efe8,_0xadf921,!![]);}catch(_0x45fcca){return BPromise[_0x1ee7('0x26')](_0x45fcca);}return _0x31efe8[_0x1ee7('0x27')]();};}function saveUpdates(_0x3879c3,_0x4f87b6){return function(_0xb3f105){if(_0xb3f105){return _0xb3f105['update'](_0x3879c3)[_0x1ee7('0x28')](function(_0x3c7ce8){return _0x3c7ce8;});}return null;};}function removeEntity(_0x1c375f,_0x381dd1){return function(_0x337827){if(_0x337827){return _0x337827[_0x1ee7('0x29')]()[_0x1ee7('0x28')](function(){_0x1c375f['status'](0xcc)[_0x1ee7('0x1c')]();});}};}function handleEntityNotFound(_0x426b4c,_0x4c73e3){return function(_0x5d307f){if(!_0x5d307f){_0x426b4c['sendStatus'](0x194);}return _0x5d307f;};}function handleError(_0x9974d6,_0x22b958){_0x22b958=_0x22b958||0x1f4;return function(_0x412dab){logger[_0x1ee7('0x2a')](_0x412dab[_0x1ee7('0x2b')]);if(_0x412dab[_0x1ee7('0x2c')]){delete _0x412dab[_0x1ee7('0x2c')];}_0x9974d6['status'](_0x22b958)['send'](_0x412dab);};}exports[_0x1ee7('0x2d')]=function(_0x3c22b6,_0x47f9e4){var _0x3e5458={},_0x4fc1dd={},_0x25949d={'count':0x0,'rows':[]};var _0x73e685=_[_0x1ee7('0x2e')](db[_0x1ee7('0x2f')][_0x1ee7('0x30')],function(_0x2e2cb9){return{'name':_0x2e2cb9['fieldName'],'type':_0x2e2cb9[_0x1ee7('0x31')][_0x1ee7('0x32')]};});_0x4fc1dd[_0x1ee7('0x33')]=_[_0x1ee7('0x2e')](_0x73e685,_0x1ee7('0x2c'));_0x4fc1dd[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x3c22b6[_0x1ee7('0x34')]);_0x4fc1dd[_0x1ee7('0x36')]=_[_0x1ee7('0x37')](_0x4fc1dd[_0x1ee7('0x33')],_0x4fc1dd[_0x1ee7('0x34')]);_0x3e5458[_0x1ee7('0x38')]=_[_0x1ee7('0x37')](_0x4fc1dd['model'],qs[_0x1ee7('0x39')](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x39')]));_0x3e5458['attributes']=_0x3e5458[_0x1ee7('0x38')][_0x1ee7('0x3a')]?_0x3e5458[_0x1ee7('0x38')]:_0x4fc1dd['model'];if(!_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x3b')](_0x1ee7('0x3c'))){_0x3e5458[_0x1ee7('0x1f')]=qs['limit'](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x1f')]);_0x3e5458[_0x1ee7('0x1e')]=qs[_0x1ee7('0x1e')](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x1e')]);}_0x3e5458[_0x1ee7('0x3d')]=qs[_0x1ee7('0x3e')](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x3e')]);_0x3e5458[_0x1ee7('0x3f')]=qs[_0x1ee7('0x36')](_[_0x1ee7('0x40')](_0x3c22b6[_0x1ee7('0x34')],_0x4fc1dd[_0x1ee7('0x36')]),_0x73e685);if(_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x41')]){_0x3e5458['where']=_['merge'](_0x3e5458[_0x1ee7('0x3f')],{'$or':_['map'](_0x73e685,function(_0x28ffc1){if(_0x28ffc1[_0x1ee7('0x31')]!==_0x1ee7('0x42')){var _0x5909e0={};_0x5909e0[_0x28ffc1[_0x1ee7('0x2c')]]={'$like':'%'+_0x3c22b6[_0x1ee7('0x34')]['filter']+'%'};return _0x5909e0;}})});}_0x3e5458=_[_0x1ee7('0x43')]({},_0x3e5458,_0x3c22b6[_0x1ee7('0x44')]);var _0x1cb5b6={'where':_0x3e5458[_0x1ee7('0x3f')]};return db[_0x1ee7('0x2f')][_0x1ee7('0x21')](_0x1cb5b6)[_0x1ee7('0x28')](function(_0x2f80db){_0x25949d[_0x1ee7('0x21')]=_0x2f80db;if(_0x3c22b6[_0x1ee7('0x34')]['includeAll']){_0x3e5458[_0x1ee7('0x45')]=[{'all':!![]}];}return db[_0x1ee7('0x2f')][_0x1ee7('0x46')](_0x3e5458);})[_0x1ee7('0x28')](function(_0x402f36){_0x25949d[_0x1ee7('0x47')]=_0x402f36;return _0x25949d;})[_0x1ee7('0x28')](respondWithFilteredResult(_0x47f9e4,_0x3e5458))[_0x1ee7('0x48')](handleError(_0x47f9e4,null));};exports['show']=function(_0x2c9d27,_0x541822){var _0x5a8bc2={'raw':![],'where':{'id':_0x2c9d27[_0x1ee7('0x49')]['id']}},_0x7b9a0c={};_0x7b9a0c[_0x1ee7('0x33')]=_[_0x1ee7('0x35')](db[_0x1ee7('0x2f')]['rawAttributes']);_0x7b9a0c[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x2c9d27[_0x1ee7('0x34')]);_0x7b9a0c[_0x1ee7('0x36')]=_['intersection'](_0x7b9a0c[_0x1ee7('0x33')],_0x7b9a0c[_0x1ee7('0x34')]);_0x5a8bc2['attributes']=_[_0x1ee7('0x37')](_0x7b9a0c[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x2c9d27[_0x1ee7('0x34')][_0x1ee7('0x39')]));_0x5a8bc2[_0x1ee7('0x38')]=_0x5a8bc2['attributes'][_0x1ee7('0x3a')]?_0x5a8bc2[_0x1ee7('0x38')]:_0x7b9a0c['model'];if(_0x2c9d27[_0x1ee7('0x34')][_0x1ee7('0x4a')]){_0x5a8bc2[_0x1ee7('0x45')]=[{'all':!![]}];}_0x5a8bc2=_[_0x1ee7('0x43')]({},_0x5a8bc2,_0x2c9d27[_0x1ee7('0x44')]);return db[_0x1ee7('0x2f')]['find'](_0x5a8bc2)[_0x1ee7('0x28')](handleEntityNotFound(_0x541822,null))[_0x1ee7('0x28')](respondWithResult(_0x541822,null))[_0x1ee7('0x48')](handleError(_0x541822,null));};exports['create']=function(_0x17befa,_0x4eed4){return db['ZohoConfiguration'][_0x1ee7('0x4b')](_0x17befa[_0x1ee7('0x4c')],{})[_0x1ee7('0x28')](respondWithResult(_0x4eed4,0xc9))[_0x1ee7('0x48')](handleError(_0x4eed4,null));};exports['update']=function(_0x222882,_0x5419ca){if(_0x222882[_0x1ee7('0x4c')]['id']){delete _0x222882['body']['id'];}return db[_0x1ee7('0x2f')][_0x1ee7('0x4d')]({'where':{'id':_0x222882[_0x1ee7('0x49')]['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x5419ca,null))[_0x1ee7('0x28')](saveUpdates(_0x222882[_0x1ee7('0x4c')],null))[_0x1ee7('0x28')](respondWithResult(_0x5419ca,null))['catch'](handleError(_0x5419ca,null));};exports['destroy']=function(_0x1d4b01,_0x1f52d8){return db[_0x1ee7('0x2f')][_0x1ee7('0x4d')]({'where':{'id':_0x1d4b01[_0x1ee7('0x49')]['id']}})['then'](handleEntityNotFound(_0x1f52d8,null))[_0x1ee7('0x28')](removeEntity(_0x1f52d8,null))[_0x1ee7('0x48')](handleError(_0x1f52d8,null));};exports['getFields']=function(_0x15bf68,_0x6445c,_0x3d7f5b){var _0x47a8ff={};var _0x53d096={};var _0x1f49f4;var _0xd3b018;return db[_0x1ee7('0x2f')]['findOne']({'where':{'id':_0x15bf68['params']['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x6445c,null))[_0x1ee7('0x28')](function(_0x248457){if(_0x248457){_0x1f49f4=_0x248457;_0x53d096[_0x1ee7('0x33')]=_['keys'](db[_0x1ee7('0x4e')][_0x1ee7('0x30')]);_0x53d096[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x15bf68[_0x1ee7('0x34')]);_0x53d096[_0x1ee7('0x36')]=_['intersection'](_0x53d096[_0x1ee7('0x33')],_0x53d096['query']);_0x47a8ff[_0x1ee7('0x38')]=_['intersection'](_0x53d096[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x15bf68['query'][_0x1ee7('0x39')]));_0x47a8ff[_0x1ee7('0x38')]=_0x47a8ff[_0x1ee7('0x38')][_0x1ee7('0x3a')]?_0x47a8ff['attributes']:_0x53d096[_0x1ee7('0x33')];_0x47a8ff[_0x1ee7('0x3d')]=qs['sort'](_0x15bf68[_0x1ee7('0x34')]['sort']);_0x47a8ff[_0x1ee7('0x3f')]=qs[_0x1ee7('0x36')](_[_0x1ee7('0x40')](_0x15bf68['query'],_0x53d096[_0x1ee7('0x36')]));if(_0x15bf68[_0x1ee7('0x34')]['filter']){_0x47a8ff[_0x1ee7('0x3f')]=_[_0x1ee7('0x43')](_0x47a8ff['where'],{'$or':_[_0x1ee7('0x2e')](_0x47a8ff[_0x1ee7('0x38')],function(_0x27215c){var _0xb7fdfb={};_0xb7fdfb[_0x27215c]={'$like':'%'+_0x15bf68[_0x1ee7('0x34')]['filter']+'%'};return _0xb7fdfb;})});}_0x47a8ff=_['merge']({},_0x47a8ff,_0x15bf68[_0x1ee7('0x44')]);return _0x1f49f4[_0x1ee7('0x4f')](_0x47a8ff);}})[_0x1ee7('0x28')](function(_0x8233e8){if(_0x8233e8){_0xd3b018=_0x8233e8[_0x1ee7('0x3a')];if(!_0x15bf68['query']['hasOwnProperty'](_0x1ee7('0x3c'))){_0x47a8ff['limit']=qs['limit'](_0x15bf68[_0x1ee7('0x34')][_0x1ee7('0x1f')]);_0x47a8ff[_0x1ee7('0x1e')]=qs[_0x1ee7('0x1e')](_0x15bf68[_0x1ee7('0x34')][_0x1ee7('0x1e')]);}return _0x1f49f4['getFields'](_0x47a8ff);}})['then'](function(_0x18d7f5){if(_0x18d7f5){return _0x18d7f5?{'count':_0xd3b018,'rows':_0x18d7f5}:null;}})[_0x1ee7('0x28')](respondWithResult(_0x6445c,null))[_0x1ee7('0x48')](handleError(_0x6445c,null));};exports['getSubjects']=function(_0x1a739d,_0x119147,_0x629de5){var _0x4ad264={};var _0x74b69c={};var _0x3d985f;var _0x2c249a;return db[_0x1ee7('0x2f')][_0x1ee7('0x50')]({'where':{'id':_0x1a739d[_0x1ee7('0x49')]['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x119147,null))['then'](function(_0x41a98f){if(_0x41a98f){_0x3d985f=_0x41a98f;_0x74b69c[_0x1ee7('0x33')]=_[_0x1ee7('0x35')](db[_0x1ee7('0x4e')][_0x1ee7('0x30')]);_0x74b69c['query']=_[_0x1ee7('0x35')](_0x1a739d[_0x1ee7('0x34')]);_0x74b69c[_0x1ee7('0x36')]=_[_0x1ee7('0x37')](_0x74b69c['model'],_0x74b69c[_0x1ee7('0x34')]);_0x4ad264[_0x1ee7('0x38')]=_['intersection'](_0x74b69c[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x1a739d['query']['fields']));_0x4ad264[_0x1ee7('0x38')]=_0x4ad264['attributes'][_0x1ee7('0x3a')]?_0x4ad264['attributes']:_0x74b69c['model'];_0x4ad264[_0x1ee7('0x3d')]=qs[_0x1ee7('0x3e')](_0x1a739d[_0x1ee7('0x34')][_0x1ee7('0x3e')]);_0x4ad264['where']=qs[_0x1ee7('0x36')](_['pick'](_0x1a739d[_0x1ee7('0x34')],_0x74b69c[_0x1ee7('0x36')]));if(_0x1a739d[_0x1ee7('0x34')]['filter']){_0x4ad264[_0x1ee7('0x3f')]=_[_0x1ee7('0x43')](_0x4ad264[_0x1ee7('0x3f')],{'$or':_['map'](_0x4ad264[_0x1ee7('0x38')],function(_0x441da3){var _0x522f60={};_0x522f60[_0x441da3]={'$like':'%'+_0x1a739d[_0x1ee7('0x34')][_0x1ee7('0x41')]+'%'};return _0x522f60;})});}_0x4ad264=_[_0x1ee7('0x43')]({},_0x4ad264,_0x1a739d[_0x1ee7('0x44')]);return _0x3d985f['getSubjects'](_0x4ad264);}})['then'](function(_0x273346){if(_0x273346){_0x2c249a=_0x273346[_0x1ee7('0x3a')];if(!_0x1a739d[_0x1ee7('0x34')]['hasOwnProperty'](_0x1ee7('0x3c'))){_0x4ad264['limit']=qs['limit'](_0x1a739d['query'][_0x1ee7('0x1f')]);_0x4ad264[_0x1ee7('0x1e')]=qs['offset'](_0x1a739d['query']['offset']);}return _0x3d985f[_0x1ee7('0x51')](_0x4ad264);}})[_0x1ee7('0x28')](function(_0x129e02){if(_0x129e02){return _0x129e02?{'count':_0x2c249a,'rows':_0x129e02}:null;}})[_0x1ee7('0x28')](respondWithResult(_0x119147,null))[_0x1ee7('0x48')](handleError(_0x119147,null));};exports['getDescriptions']=function(_0x88abdc,_0x44a6b5,_0x256f8d){var _0x15b688={};var _0x1101a2={};var _0x59c42a;var _0x195c24;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x88abdc[_0x1ee7('0x49')]['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x44a6b5,null))[_0x1ee7('0x28')](function(_0x641533){if(_0x641533){_0x59c42a=_0x641533;_0x1101a2[_0x1ee7('0x33')]=_[_0x1ee7('0x35')](db[_0x1ee7('0x4e')][_0x1ee7('0x30')]);_0x1101a2[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x88abdc[_0x1ee7('0x34')]);_0x1101a2[_0x1ee7('0x36')]=_['intersection'](_0x1101a2[_0x1ee7('0x33')],_0x1101a2[_0x1ee7('0x34')]);_0x15b688[_0x1ee7('0x38')]=_[_0x1ee7('0x37')](_0x1101a2[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x88abdc['query'][_0x1ee7('0x39')]));_0x15b688['attributes']=_0x15b688[_0x1ee7('0x38')][_0x1ee7('0x3a')]?_0x15b688[_0x1ee7('0x38')]:_0x1101a2[_0x1ee7('0x33')];_0x15b688['order']=qs[_0x1ee7('0x3e')](_0x88abdc[_0x1ee7('0x34')]['sort']);_0x15b688[_0x1ee7('0x3f')]=qs['filters'](_[_0x1ee7('0x40')](_0x88abdc[_0x1ee7('0x34')],_0x1101a2[_0x1ee7('0x36')]));if(_0x88abdc[_0x1ee7('0x34')][_0x1ee7('0x41')]){_0x15b688[_0x1ee7('0x3f')]=_[_0x1ee7('0x43')](_0x15b688['where'],{'$or':_[_0x1ee7('0x2e')](_0x15b688[_0x1ee7('0x38')],function(_0x5b9f52){var _0x258c71={};_0x258c71[_0x5b9f52]={'$like':'%'+_0x88abdc[_0x1ee7('0x34')]['filter']+'%'};return _0x258c71;})});}_0x15b688=_[_0x1ee7('0x43')]({},_0x15b688,_0x88abdc[_0x1ee7('0x44')]);return _0x59c42a[_0x1ee7('0x52')](_0x15b688);}})[_0x1ee7('0x28')](function(_0x149440){if(_0x149440){_0x195c24=_0x149440[_0x1ee7('0x3a')];if(!_0x88abdc['query'][_0x1ee7('0x3b')](_0x1ee7('0x3c'))){_0x15b688[_0x1ee7('0x1f')]=qs[_0x1ee7('0x1f')](_0x88abdc[_0x1ee7('0x34')][_0x1ee7('0x1f')]);_0x15b688['offset']=qs[_0x1ee7('0x1e')](_0x88abdc['query'][_0x1ee7('0x1e')]);}return _0x59c42a['getDescriptions'](_0x15b688);}})[_0x1ee7('0x28')](function(_0x1ccdcb){if(_0x1ccdcb){return _0x1ccdcb?{'count':_0x195c24,'rows':_0x1ccdcb}:null;}})[_0x1ee7('0x28')](respondWithResult(_0x44a6b5,null))[_0x1ee7('0x48')](handleError(_0x44a6b5,null));};
\ No newline at end of file
+var _0x45f1=['offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','map','ZohoConfiguration','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','findAll','rows','catch','show','params','includeAll','include','options','find','body','getFields','findOne','ZohoField','length','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json'];(function(_0x553326,_0x516140){var _0x1a98ce=function(_0x56190a){while(--_0x56190a){_0x553326['push'](_0x553326['shift']());}};_0x1a98ce(++_0x516140);}(_0x45f1,0x83));var _0x145f=function(_0x2f0524,_0x30a24b){_0x2f0524=_0x2f0524-0x0;var _0x176f40=_0x45f1[_0x2f0524];return _0x176f40;};'use strict';var emlformat=require(_0x145f('0x0'));var rimraf=require(_0x145f('0x1'));var zipdir=require(_0x145f('0x2'));var jsonpatch=require(_0x145f('0x3'));var rp=require(_0x145f('0x4'));var moment=require(_0x145f('0x5'));var BPromise=require(_0x145f('0x6'));var Mustache=require(_0x145f('0x7'));var util=require(_0x145f('0x8'));var path=require(_0x145f('0x9'));var sox=require(_0x145f('0xa'));var csv=require(_0x145f('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x145f('0xc'));var _=require(_0x145f('0xd'));var squel=require(_0x145f('0xe'));var crypto=require(_0x145f('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x145f('0x10'));var toCsv=require(_0x145f('0xb'));var querystring=require('querystring');var Papa=require(_0x145f('0x11'));var Redis=require('ioredis');var authService=require(_0x145f('0x12'));var qs=require(_0x145f('0x13'));var as=require(_0x145f('0x14'));var hardwareService=require(_0x145f('0x15'));var logger=require(_0x145f('0x16'))(_0x145f('0x17'));var utils=require(_0x145f('0x18'));var config=require(_0x145f('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x304a25,_0x53bfb7){_0x53bfb7=_0x53bfb7||0xcc;return function(_0x336dbb){if(_0x336dbb){return _0x304a25['sendStatus'](_0x53bfb7);}return _0x304a25[_0x145f('0x1a')](_0x53bfb7)[_0x145f('0x1b')]();};}function respondWithResult(_0x559c1a,_0x47c63f){_0x47c63f=_0x47c63f||0xc8;return function(_0x3898b1){if(_0x3898b1){return _0x559c1a[_0x145f('0x1a')](_0x47c63f)[_0x145f('0x1c')](_0x3898b1);}};}function respondWithFilteredResult(_0x182c6a,_0x31b9bc){return function(_0x441f7b){if(_0x441f7b){var _0x13f64c=typeof _0x31b9bc[_0x145f('0x1d')]===_0x145f('0x1e')&&typeof _0x31b9bc[_0x145f('0x1f')]===_0x145f('0x1e');var _0x36dbd0=_0x441f7b[_0x145f('0x20')];var _0x138a85=_0x13f64c?0x0:_0x31b9bc[_0x145f('0x1d')];var _0x11f9ea=_0x13f64c?_0x441f7b[_0x145f('0x20')]:_0x31b9bc['offset']+_0x31b9bc[_0x145f('0x1f')];var _0x2614d3;if(_0x11f9ea>=_0x36dbd0){_0x11f9ea=_0x36dbd0;_0x2614d3=0xc8;}else{_0x2614d3=0xce;}_0x182c6a['status'](_0x2614d3);return _0x182c6a[_0x145f('0x21')]('Content-Range',_0x138a85+'-'+_0x11f9ea+'/'+_0x36dbd0)[_0x145f('0x1c')](_0x441f7b);}return null;};}function patchUpdates(_0x1e0832){return function(_0x21939f){try{jsonpatch[_0x145f('0x22')](_0x21939f,_0x1e0832,!![]);}catch(_0x1e92ea){return BPromise[_0x145f('0x23')](_0x1e92ea);}return _0x21939f[_0x145f('0x24')]();};}function saveUpdates(_0x1b99bf,_0x2f6b8e){return function(_0x532942){if(_0x532942){return _0x532942[_0x145f('0x25')](_0x1b99bf)[_0x145f('0x26')](function(_0x42d93f){return _0x42d93f;});}return null;};}function removeEntity(_0x4b8a23,_0x2a43fe){return function(_0x42042c){if(_0x42042c){return _0x42042c[_0x145f('0x27')]()[_0x145f('0x26')](function(){_0x4b8a23['status'](0xcc)[_0x145f('0x1b')]();});}};}function handleEntityNotFound(_0x6b1630,_0x28ff68){return function(_0x47824a){if(!_0x47824a){_0x6b1630[_0x145f('0x28')](0x194);}return _0x47824a;};}function handleError(_0x557e2e,_0x5cfb87){_0x5cfb87=_0x5cfb87||0x1f4;return function(_0x4f19c3){logger['error'](_0x4f19c3[_0x145f('0x29')]);if(_0x4f19c3[_0x145f('0x2a')]){delete _0x4f19c3[_0x145f('0x2a')];}_0x557e2e[_0x145f('0x1a')](_0x5cfb87)[_0x145f('0x2b')](_0x4f19c3);};}exports['index']=function(_0x1807e1,_0x4a99de){var _0x567b4b={},_0x47c6be={},_0x164988={'count':0x0,'rows':[]};var _0x3bbbb7=_[_0x145f('0x2c')](db[_0x145f('0x2d')][_0x145f('0x2e')],function(_0x4c5f1d){return{'name':_0x4c5f1d['fieldName'],'type':_0x4c5f1d[_0x145f('0x2f')][_0x145f('0x30')]};});_0x47c6be[_0x145f('0x31')]=_[_0x145f('0x2c')](_0x3bbbb7,_0x145f('0x2a'));_0x47c6be[_0x145f('0x32')]=_[_0x145f('0x33')](_0x1807e1[_0x145f('0x32')]);_0x47c6be['filters']=_['intersection'](_0x47c6be[_0x145f('0x31')],_0x47c6be[_0x145f('0x32')]);_0x567b4b[_0x145f('0x34')]=_[_0x145f('0x35')](_0x47c6be['model'],qs['fields'](_0x1807e1[_0x145f('0x32')][_0x145f('0x36')]));_0x567b4b['attributes']=_0x567b4b[_0x145f('0x34')]['length']?_0x567b4b[_0x145f('0x34')]:_0x47c6be[_0x145f('0x31')];if(!_0x1807e1[_0x145f('0x32')][_0x145f('0x37')](_0x145f('0x38'))){_0x567b4b[_0x145f('0x1f')]=qs[_0x145f('0x1f')](_0x1807e1[_0x145f('0x32')][_0x145f('0x1f')]);_0x567b4b[_0x145f('0x1d')]=qs['offset'](_0x1807e1[_0x145f('0x32')][_0x145f('0x1d')]);}_0x567b4b[_0x145f('0x39')]=qs[_0x145f('0x3a')](_0x1807e1[_0x145f('0x32')][_0x145f('0x3a')]);_0x567b4b['where']=qs['filters'](_['pick'](_0x1807e1[_0x145f('0x32')],_0x47c6be[_0x145f('0x3b')]),_0x3bbbb7);if(_0x1807e1[_0x145f('0x32')][_0x145f('0x3c')]){_0x567b4b[_0x145f('0x3d')]=_[_0x145f('0x3e')](_0x567b4b[_0x145f('0x3d')],{'$or':_['map'](_0x3bbbb7,function(_0x3a60b9){if(_0x3a60b9[_0x145f('0x2f')]!=='VIRTUAL'){var _0x32e720={};_0x32e720[_0x3a60b9[_0x145f('0x2a')]]={'$like':'%'+_0x1807e1[_0x145f('0x32')][_0x145f('0x3c')]+'%'};return _0x32e720;}})});}_0x567b4b=_[_0x145f('0x3e')]({},_0x567b4b,_0x1807e1['options']);var _0x1aa83e={'where':_0x567b4b['where']};return db[_0x145f('0x2d')]['count'](_0x1aa83e)[_0x145f('0x26')](function(_0x17f028){_0x164988['count']=_0x17f028;if(_0x1807e1[_0x145f('0x32')]['includeAll']){_0x567b4b['include']=[{'all':!![]}];}return db[_0x145f('0x2d')][_0x145f('0x3f')](_0x567b4b);})[_0x145f('0x26')](function(_0x2c842c){_0x164988[_0x145f('0x40')]=_0x2c842c;return _0x164988;})[_0x145f('0x26')](respondWithFilteredResult(_0x4a99de,_0x567b4b))[_0x145f('0x41')](handleError(_0x4a99de,null));};exports[_0x145f('0x42')]=function(_0x25aa51,_0x5a5477){var _0xcc94a2={'raw':![],'where':{'id':_0x25aa51[_0x145f('0x43')]['id']}},_0x253771={};_0x253771[_0x145f('0x31')]=_['keys'](db[_0x145f('0x2d')][_0x145f('0x2e')]);_0x253771[_0x145f('0x32')]=_[_0x145f('0x33')](_0x25aa51[_0x145f('0x32')]);_0x253771[_0x145f('0x3b')]=_['intersection'](_0x253771['model'],_0x253771[_0x145f('0x32')]);_0xcc94a2[_0x145f('0x34')]=_[_0x145f('0x35')](_0x253771[_0x145f('0x31')],qs['fields'](_0x25aa51['query']['fields']));_0xcc94a2['attributes']=_0xcc94a2[_0x145f('0x34')]['length']?_0xcc94a2[_0x145f('0x34')]:_0x253771[_0x145f('0x31')];if(_0x25aa51['query'][_0x145f('0x44')]){_0xcc94a2[_0x145f('0x45')]=[{'all':!![]}];}_0xcc94a2=_[_0x145f('0x3e')]({},_0xcc94a2,_0x25aa51[_0x145f('0x46')]);return db['ZohoConfiguration'][_0x145f('0x47')](_0xcc94a2)[_0x145f('0x26')](handleEntityNotFound(_0x5a5477,null))[_0x145f('0x26')](respondWithResult(_0x5a5477,null))[_0x145f('0x41')](handleError(_0x5a5477,null));};exports['create']=function(_0x38c3c0,_0x483395){return db[_0x145f('0x2d')]['create'](_0x38c3c0[_0x145f('0x48')],{})[_0x145f('0x26')](respondWithResult(_0x483395,0xc9))[_0x145f('0x41')](handleError(_0x483395,null));};exports[_0x145f('0x25')]=function(_0x3dcacc,_0x4ae55b){if(_0x3dcacc['body']['id']){delete _0x3dcacc[_0x145f('0x48')]['id'];}return db[_0x145f('0x2d')][_0x145f('0x47')]({'where':{'id':_0x3dcacc['params']['id']}})[_0x145f('0x26')](handleEntityNotFound(_0x4ae55b,null))[_0x145f('0x26')](saveUpdates(_0x3dcacc[_0x145f('0x48')],null))[_0x145f('0x26')](respondWithResult(_0x4ae55b,null))[_0x145f('0x41')](handleError(_0x4ae55b,null));};exports[_0x145f('0x27')]=function(_0x2913bc,_0x1b16b3){return db[_0x145f('0x2d')]['find']({'where':{'id':_0x2913bc['params']['id']}})[_0x145f('0x26')](handleEntityNotFound(_0x1b16b3,null))[_0x145f('0x26')](removeEntity(_0x1b16b3,null))[_0x145f('0x41')](handleError(_0x1b16b3,null));};exports[_0x145f('0x49')]=function(_0x3c4c02,_0x3ac522,_0x3364ea){var _0xd13b85={};var _0x5a9f52={};var _0x5eeee4;var _0x1b3691;return db[_0x145f('0x2d')][_0x145f('0x4a')]({'where':{'id':_0x3c4c02[_0x145f('0x43')]['id']}})[_0x145f('0x26')](handleEntityNotFound(_0x3ac522,null))[_0x145f('0x26')](function(_0x209179){if(_0x209179){_0x5eeee4=_0x209179;_0x5a9f52['model']=_[_0x145f('0x33')](db[_0x145f('0x4b')][_0x145f('0x2e')]);_0x5a9f52[_0x145f('0x32')]=_['keys'](_0x3c4c02[_0x145f('0x32')]);_0x5a9f52['filters']=_[_0x145f('0x35')](_0x5a9f52[_0x145f('0x31')],_0x5a9f52[_0x145f('0x32')]);_0xd13b85[_0x145f('0x34')]=_['intersection'](_0x5a9f52[_0x145f('0x31')],qs[_0x145f('0x36')](_0x3c4c02[_0x145f('0x32')][_0x145f('0x36')]));_0xd13b85[_0x145f('0x34')]=_0xd13b85[_0x145f('0x34')][_0x145f('0x4c')]?_0xd13b85[_0x145f('0x34')]:_0x5a9f52['model'];_0xd13b85[_0x145f('0x39')]=qs['sort'](_0x3c4c02[_0x145f('0x32')][_0x145f('0x3a')]);_0xd13b85[_0x145f('0x3d')]=qs[_0x145f('0x3b')](_[_0x145f('0x4d')](_0x3c4c02[_0x145f('0x32')],_0x5a9f52[_0x145f('0x3b')]));if(_0x3c4c02['query'][_0x145f('0x3c')]){_0xd13b85[_0x145f('0x3d')]=_['merge'](_0xd13b85[_0x145f('0x3d')],{'$or':_[_0x145f('0x2c')](_0xd13b85['attributes'],function(_0x13178f){var _0xa0e7b2={};_0xa0e7b2[_0x13178f]={'$like':'%'+_0x3c4c02[_0x145f('0x32')][_0x145f('0x3c')]+'%'};return _0xa0e7b2;})});}_0xd13b85=_['merge']({},_0xd13b85,_0x3c4c02[_0x145f('0x46')]);return _0x5eeee4[_0x145f('0x49')](_0xd13b85);}})[_0x145f('0x26')](function(_0x1dd66c){if(_0x1dd66c){_0x1b3691=_0x1dd66c[_0x145f('0x4c')];if(!_0x3c4c02['query'][_0x145f('0x37')]('nolimit')){_0xd13b85['limit']=qs[_0x145f('0x1f')](_0x3c4c02[_0x145f('0x32')][_0x145f('0x1f')]);_0xd13b85[_0x145f('0x1d')]=qs['offset'](_0x3c4c02[_0x145f('0x32')][_0x145f('0x1d')]);}return _0x5eeee4[_0x145f('0x49')](_0xd13b85);}})[_0x145f('0x26')](function(_0x34195f){if(_0x34195f){return _0x34195f?{'count':_0x1b3691,'rows':_0x34195f}:null;}})[_0x145f('0x26')](respondWithResult(_0x3ac522,null))[_0x145f('0x41')](handleError(_0x3ac522,null));};exports['getSubjects']=function(_0x4f2136,_0x48eb63,_0x527729){var _0x1fc743={};var _0x2bdd9a={};var _0x2b436f;var _0x4406fa;return db[_0x145f('0x2d')][_0x145f('0x4a')]({'where':{'id':_0x4f2136['params']['id']}})[_0x145f('0x26')](handleEntityNotFound(_0x48eb63,null))[_0x145f('0x26')](function(_0x23307a){if(_0x23307a){_0x2b436f=_0x23307a;_0x2bdd9a[_0x145f('0x31')]=_[_0x145f('0x33')](db[_0x145f('0x4b')][_0x145f('0x2e')]);_0x2bdd9a[_0x145f('0x32')]=_[_0x145f('0x33')](_0x4f2136[_0x145f('0x32')]);_0x2bdd9a[_0x145f('0x3b')]=_[_0x145f('0x35')](_0x2bdd9a[_0x145f('0x31')],_0x2bdd9a[_0x145f('0x32')]);_0x1fc743[_0x145f('0x34')]=_[_0x145f('0x35')](_0x2bdd9a[_0x145f('0x31')],qs[_0x145f('0x36')](_0x4f2136[_0x145f('0x32')]['fields']));_0x1fc743[_0x145f('0x34')]=_0x1fc743[_0x145f('0x34')][_0x145f('0x4c')]?_0x1fc743[_0x145f('0x34')]:_0x2bdd9a[_0x145f('0x31')];_0x1fc743[_0x145f('0x39')]=qs[_0x145f('0x3a')](_0x4f2136[_0x145f('0x32')][_0x145f('0x3a')]);_0x1fc743[_0x145f('0x3d')]=qs['filters'](_[_0x145f('0x4d')](_0x4f2136['query'],_0x2bdd9a[_0x145f('0x3b')]));if(_0x4f2136[_0x145f('0x32')][_0x145f('0x3c')]){_0x1fc743[_0x145f('0x3d')]=_[_0x145f('0x3e')](_0x1fc743[_0x145f('0x3d')],{'$or':_[_0x145f('0x2c')](_0x1fc743['attributes'],function(_0x3ade3a){var _0x3abd19={};_0x3abd19[_0x3ade3a]={'$like':'%'+_0x4f2136['query'][_0x145f('0x3c')]+'%'};return _0x3abd19;})});}_0x1fc743=_[_0x145f('0x3e')]({},_0x1fc743,_0x4f2136['options']);return _0x2b436f['getSubjects'](_0x1fc743);}})[_0x145f('0x26')](function(_0x13dc7a){if(_0x13dc7a){_0x4406fa=_0x13dc7a[_0x145f('0x4c')];if(!_0x4f2136[_0x145f('0x32')][_0x145f('0x37')](_0x145f('0x38'))){_0x1fc743[_0x145f('0x1f')]=qs[_0x145f('0x1f')](_0x4f2136[_0x145f('0x32')]['limit']);_0x1fc743[_0x145f('0x1d')]=qs[_0x145f('0x1d')](_0x4f2136['query'][_0x145f('0x1d')]);}return _0x2b436f[_0x145f('0x4e')](_0x1fc743);}})[_0x145f('0x26')](function(_0x4d2b53){if(_0x4d2b53){return _0x4d2b53?{'count':_0x4406fa,'rows':_0x4d2b53}:null;}})[_0x145f('0x26')](respondWithResult(_0x48eb63,null))[_0x145f('0x41')](handleError(_0x48eb63,null));};exports[_0x145f('0x4f')]=function(_0x1e3431,_0x82a187,_0x225ffa){var _0x1abf21={};var _0x54c971={};var _0x4db4e8;var _0x406cea;return db[_0x145f('0x2d')][_0x145f('0x4a')]({'where':{'id':_0x1e3431[_0x145f('0x43')]['id']}})['then'](handleEntityNotFound(_0x82a187,null))[_0x145f('0x26')](function(_0x17a668){if(_0x17a668){_0x4db4e8=_0x17a668;_0x54c971[_0x145f('0x31')]=_[_0x145f('0x33')](db[_0x145f('0x4b')][_0x145f('0x2e')]);_0x54c971[_0x145f('0x32')]=_[_0x145f('0x33')](_0x1e3431[_0x145f('0x32')]);_0x54c971[_0x145f('0x3b')]=_[_0x145f('0x35')](_0x54c971['model'],_0x54c971['query']);_0x1abf21[_0x145f('0x34')]=_['intersection'](_0x54c971[_0x145f('0x31')],qs[_0x145f('0x36')](_0x1e3431[_0x145f('0x32')][_0x145f('0x36')]));_0x1abf21[_0x145f('0x34')]=_0x1abf21['attributes'][_0x145f('0x4c')]?_0x1abf21[_0x145f('0x34')]:_0x54c971[_0x145f('0x31')];_0x1abf21[_0x145f('0x39')]=qs['sort'](_0x1e3431[_0x145f('0x32')][_0x145f('0x3a')]);_0x1abf21[_0x145f('0x3d')]=qs['filters'](_[_0x145f('0x4d')](_0x1e3431[_0x145f('0x32')],_0x54c971[_0x145f('0x3b')]));if(_0x1e3431[_0x145f('0x32')][_0x145f('0x3c')]){_0x1abf21[_0x145f('0x3d')]=_[_0x145f('0x3e')](_0x1abf21[_0x145f('0x3d')],{'$or':_['map'](_0x1abf21[_0x145f('0x34')],function(_0x432c1a){var _0x3d5ba4={};_0x3d5ba4[_0x432c1a]={'$like':'%'+_0x1e3431[_0x145f('0x32')][_0x145f('0x3c')]+'%'};return _0x3d5ba4;})});}_0x1abf21=_['merge']({},_0x1abf21,_0x1e3431[_0x145f('0x46')]);return _0x4db4e8['getDescriptions'](_0x1abf21);}})[_0x145f('0x26')](function(_0x154885){if(_0x154885){_0x406cea=_0x154885[_0x145f('0x4c')];if(!_0x1e3431[_0x145f('0x32')][_0x145f('0x37')](_0x145f('0x38'))){_0x1abf21[_0x145f('0x1f')]=qs[_0x145f('0x1f')](_0x1e3431[_0x145f('0x32')]['limit']);_0x1abf21[_0x145f('0x1d')]=qs[_0x145f('0x1d')](_0x1e3431[_0x145f('0x32')][_0x145f('0x1d')]);}return _0x4db4e8['getDescriptions'](_0x1abf21);}})['then'](function(_0x32ea5f){if(_0x32ea5f){return _0x32ea5f?{'count':_0x406cea,'rows':_0x32ea5f}:null;}})[_0x145f('0x26')](respondWithResult(_0x82a187,null))[_0x145f('0x41')](handleError(_0x82a187,null));};
\ No newline at end of file
index 73d0dd3..795985a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3238=['api','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger'];(function(_0x209d8a,_0x38c581){var _0x3712d7=function(_0x13a8a1){while(--_0x13a8a1){_0x209d8a['push'](_0x209d8a['shift']());}};_0x3712d7(++_0x38c581);}(_0x3238,0x15d));var _0x8323=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3238[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8323('0x0'));var util=require('util');var logger=require(_0x8323('0x1'))(_0x8323('0x2'));var moment=require('moment');var BPromise=require(_0x8323('0x3'));var rp=require(_0x8323('0x4'));var fs=require('fs');var path=require(_0x8323('0x5'));var rimraf=require(_0x8323('0x6'));var config=require(_0x8323('0x7'));var attributes=require(_0x8323('0x8'));module[_0x8323('0x9')]=function(_0x4aef3f,_0x595d90){return _0x4aef3f[_0x8323('0xa')](_0x8323('0xb'),attributes,{'tableName':_0x8323('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x836a=['define','ZohoConfiguration','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports'];(function(_0x684fbe,_0x350e7a){var _0xd99d95=function(_0x4d9c2a){while(--_0x4d9c2a){_0x684fbe['push'](_0x684fbe['shift']());}};_0xd99d95(++_0x350e7a);}(_0x836a,0x12e));var _0xa836=function(_0x5d61b4,_0x4f7b91){_0x5d61b4=_0x5d61b4-0x0;var _0x183fc5=_0x836a[_0x5d61b4];return _0x183fc5;};'use strict';var _=require(_0xa836('0x0'));var util=require(_0xa836('0x1'));var logger=require(_0xa836('0x2'))(_0xa836('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa836('0x4'));var fs=require('fs');var path=require(_0xa836('0x5'));var rimraf=require(_0xa836('0x6'));var config=require(_0xa836('0x7'));var attributes=require(_0xa836('0x8'));module[_0xa836('0x9')]=function(_0x10ff50,_0x3c6171){return _0x10ff50[_0xa836('0xa')](_0xa836('0xb'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c50e076..29586d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc554=['moment','bluebird','randomstring','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc554,0x154));var _0x4c55=function(_0x366e99,_0x15d82d){_0x366e99=_0x366e99-0x0;var _0x180bbe=_0xc554[_0x366e99];return _0x180bbe;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4c55('0x0'));var BPromise=require(_0x4c55('0x1'));var rs=require(_0x4c55('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4c55('0x3'));var config=require(_0x4c55('0x4'));var jayson=require(_0x4c55('0x5'));var client=jayson[_0x4c55('0x6')][_0x4c55('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x696cbc,_0xee014e,_0x2a0327){return new BPromise(function(_0x23b7f5,_0x350b81){return client[_0x4c55('0x8')](_0x696cbc,_0x2a0327)[_0x4c55('0x9')](function(_0x4afa38){logger[_0x4c55('0xa')](_0x4c55('0xb'),_0xee014e,_0x4c55('0xc'));logger[_0x4c55('0xd')](_0x4c55('0xe'),_0xee014e,_0x4c55('0xc'),JSON[_0x4c55('0xf')](_0x4afa38));if(_0x4afa38[_0x4c55('0x10')]){if(_0x4afa38['error'][_0x4c55('0x11')]===0x1f4){logger[_0x4c55('0x10')](_0x4c55('0xb'),_0xee014e,_0x4afa38['error'][_0x4c55('0x12')]);return _0x350b81(_0x4afa38[_0x4c55('0x10')][_0x4c55('0x12')]);}logger['error'](_0x4c55('0xb'),_0xee014e,_0x4afa38[_0x4c55('0x10')][_0x4c55('0x12')]);return _0x23b7f5(_0x4afa38[_0x4c55('0x10')][_0x4c55('0x12')]);}else{logger['info'](_0x4c55('0xb'),_0xee014e,_0x4c55('0xc'));_0x23b7f5(_0x4afa38['result'][_0x4c55('0x12')]);}})[_0x4c55('0x13')](function(_0x343fdb){logger['error'](_0x4c55('0xb'),_0xee014e,_0x343fdb);_0x350b81(_0x343fdb);});});}
\ No newline at end of file
+var _0xab46=['info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x5530b7,_0x3527c6){var _0x3faf9b=function(_0x5a71c6){while(--_0x5a71c6){_0x5530b7['push'](_0x5530b7['shift']());}};_0x3faf9b(++_0x3527c6);}(_0xab46,0x1d9));var _0x6ab4=function(_0x3feb8a,_0x47c784){_0x3feb8a=_0x3feb8a-0x0;var _0x4523ca=_0xab46[_0x3feb8a];return _0x4523ca;};'use strict';var _=require(_0x6ab4('0x0'));var util=require(_0x6ab4('0x1'));var moment=require(_0x6ab4('0x2'));var BPromise=require(_0x6ab4('0x3'));var rs=require(_0x6ab4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6ab4('0x5'))['db'];var utils=require(_0x6ab4('0x6'));var logger=require('../../config/logger')(_0x6ab4('0x7'));var config=require(_0x6ab4('0x8'));var jayson=require(_0x6ab4('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3aba27,_0x5c9ae0,_0x12f860){return new BPromise(function(_0x5aac35,_0x45b544){return client['request'](_0x3aba27,_0x12f860)['then'](function(_0x315269){logger[_0x6ab4('0xa')](_0x6ab4('0xb'),_0x5c9ae0,_0x6ab4('0xc'));logger[_0x6ab4('0xd')](_0x6ab4('0xe'),_0x5c9ae0,_0x6ab4('0xc'),JSON[_0x6ab4('0xf')](_0x315269));if(_0x315269[_0x6ab4('0x10')]){if(_0x315269[_0x6ab4('0x10')][_0x6ab4('0x11')]===0x1f4){logger['error'](_0x6ab4('0xb'),_0x5c9ae0,_0x315269[_0x6ab4('0x10')][_0x6ab4('0x12')]);return _0x45b544(_0x315269[_0x6ab4('0x10')]['message']);}logger[_0x6ab4('0x10')](_0x6ab4('0xb'),_0x5c9ae0,_0x315269[_0x6ab4('0x10')]['message']);return _0x5aac35(_0x315269[_0x6ab4('0x10')]['message']);}else{logger[_0x6ab4('0xa')](_0x6ab4('0xb'),_0x5c9ae0,_0x6ab4('0xc'));_0x5aac35(_0x315269[_0x6ab4('0x13')][_0x6ab4('0x12')]);}})[_0x6ab4('0x14')](function(_0x4ce60e){logger[_0x6ab4('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x5c9ae0,_0x4ce60e);_0x45b544(_0x4ce60e);});});}
\ No newline at end of file
index c5b8ad3..ea59e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c28=['../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x273b7e,_0x1b642f){var _0x5df145=function(_0x58e003){while(--_0x58e003){_0x273b7e['push'](_0x273b7e['shift']());}};_0x5df145(++_0x1b642f);}(_0x3c28,0x7e));var _0x83c2=function(_0x5db010,_0x13e363){_0x5db010=_0x5db010-0x0;var _0x593905=_0x3c28[_0x5db010];return _0x593905;};'use strict';var multer=require('multer');var util=require(_0x83c2('0x0'));var path=require(_0x83c2('0x1'));var timeout=require(_0x83c2('0x2'));var express=require(_0x83c2('0x3'));var router=express[_0x83c2('0x4')]();var fs_extra=require(_0x83c2('0x5'));var auth=require(_0x83c2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x83c2('0x7'));var controller=require(_0x83c2('0x8'));router[_0x83c2('0x9')]('/',auth[_0x83c2('0xa')](),controller[_0x83c2('0xb')]);router['get'](_0x83c2('0xc'),auth['isAuthenticated'](),controller[_0x83c2('0xd')]);router[_0x83c2('0xe')]('/',auth['isAuthenticated'](),controller[_0x83c2('0xf')]);router['put']('/:id',auth[_0x83c2('0xa')](),controller['update']);router[_0x83c2('0x10')](_0x83c2('0xc'),auth['isAuthenticated'](),controller[_0x83c2('0x11')]);module[_0x83c2('0x12')]=router;
\ No newline at end of file
+var _0x80f0=['fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','isAuthenticated','index','/:id','post','delete','destroy','multer','connect-timeout','express','Router'];(function(_0x3825e6,_0x396ed8){var _0x49e119=function(_0xa1904){while(--_0xa1904){_0x3825e6['push'](_0x3825e6['shift']());}};_0x49e119(++_0x396ed8);}(_0x80f0,0x184));var _0x080f=function(_0x3f972e,_0x4040b1){_0x3f972e=_0x3f972e-0x0;var _0x9244df=_0x80f0[_0x3f972e];return _0x9244df;};'use strict';var multer=require(_0x080f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x080f('0x1'));var express=require(_0x080f('0x2'));var router=express[_0x080f('0x3')]();var fs_extra=require(_0x080f('0x4'));var auth=require(_0x080f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x080f('0x6'));var controller=require(_0x080f('0x7'));router['get']('/',auth[_0x080f('0x8')](),controller[_0x080f('0x9')]);router['get'](_0x080f('0xa'),auth[_0x080f('0x8')](),controller['show']);router[_0x080f('0xb')]('/',auth[_0x080f('0x8')](),controller['create']);router['put'](_0x080f('0xa'),auth[_0x080f('0x8')](),controller['update']);router[_0x080f('0xc')](_0x080f('0xa'),auth['isAuthenticated'](),controller[_0x080f('0xd')]);module['exports']=router;
\ No newline at end of file
index 98d029e..c1ad116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87be=['BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','STRING'];(function(_0x5d903a,_0x1cae68){var _0x3e972d=function(_0x2b2ae5){while(--_0x2b2ae5){_0x5d903a['push'](_0x5d903a['shift']());}};_0x3e972d(++_0x1cae68);}(_0x87be,0xf9));var _0xe87b=function(_0x1bea0a,_0x496033){_0x1bea0a=_0x1bea0a-0x0;var _0x51f31c=_0x87be[_0x1bea0a];return _0x51f31c;};'use strict';var Sequelize=require(_0xe87b('0x0'));module[_0xe87b('0x1')]={'type':{'type':Sequelize[_0xe87b('0x2')](_0xe87b('0x3'),'variable',_0xe87b('0x4'),_0xe87b('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xe87b('0x6')]},'key':{'type':Sequelize[_0xe87b('0x6')]},'keyType':{'type':Sequelize[_0xe87b('0x2')]('string','variable',_0xe87b('0x4'))},'keyContent':{'type':Sequelize[_0xe87b('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xe87b('0x6')]},'customField':{'type':Sequelize[_0xe87b('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x99b5=['exports','ENUM','string','variable','STRING','BOOLEAN'];(function(_0x1dabea,_0x5395c0){var _0x10a588=function(_0x4f683f){while(--_0x4f683f){_0x1dabea['push'](_0x1dabea['shift']());}};_0x10a588(++_0x5395c0);}(_0x99b5,0xfc));var _0x599b=function(_0x188c55,_0x47dd4b){_0x188c55=_0x188c55-0x0;var _0x849ca8=_0x99b5[_0x188c55];return _0x849ca8;};'use strict';var Sequelize=require('sequelize');module[_0x599b('0x0')]={'type':{'type':Sequelize[_0x599b('0x1')](_0x599b('0x2'),_0x599b('0x3'),'customVariable','keyValue','picklist'),'defaultValue':_0x599b('0x2')},'content':{'type':Sequelize[_0x599b('0x4')]},'key':{'type':Sequelize[_0x599b('0x4')]},'keyType':{'type':Sequelize[_0x599b('0x1')]('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x599b('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x599b('0x4')]},'customField':{'type':Sequelize[_0x599b('0x5')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x599b('0x4')]}};
\ No newline at end of file
index 7b71699..d1d7f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x537a=['keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','findAll','rows','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','lodash','squel','crypto','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','sendStatus','status','json','limit','undefined','count','offset','Content-Range','save','update','destroy','then','end','error','stack','name','send','index','ZohoField','rawAttributes','fieldName','key','model','query'];(function(_0x4164ab,_0x46b3be){var _0x4f7810=function(_0x3d2520){while(--_0x3d2520){_0x4164ab['push'](_0x4164ab['shift']());}};_0x4f7810(++_0x46b3be);}(_0x537a,0x17f));var _0xa537=function(_0x18ab1f,_0xc910d){_0x18ab1f=_0x18ab1f-0x0;var _0x453af5=_0x537a[_0x18ab1f];return _0x453af5;};'use strict';var emlformat=require(_0xa537('0x0'));var rimraf=require(_0xa537('0x1'));var zipdir=require(_0xa537('0x2'));var jsonpatch=require(_0xa537('0x3'));var rp=require(_0xa537('0x4'));var moment=require(_0xa537('0x5'));var BPromise=require(_0xa537('0x6'));var Mustache=require('mustache');var util=require(_0xa537('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa537('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa537('0x9'));var squel=require(_0xa537('0xa'));var crypto=require(_0xa537('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa537('0xc'));var querystring=require(_0xa537('0xd'));var Papa=require('papaparse');var Redis=require(_0xa537('0xe'));var authService=require(_0xa537('0xf'));var qs=require(_0xa537('0x10'));var as=require(_0xa537('0x11'));var hardwareService=require(_0xa537('0x12'));var logger=require(_0xa537('0x13'))(_0xa537('0x14'));var utils=require(_0xa537('0x15'));var config=require(_0xa537('0x16'));var licenseUtil=require(_0xa537('0x17'));var db=require(_0xa537('0x18'))['db'];function respondWithStatusCode(_0x4de8bd,_0x5dec42){_0x5dec42=_0x5dec42||0xcc;return function(_0x3f43ad){if(_0x3f43ad){return _0x4de8bd[_0xa537('0x19')](_0x5dec42);}return _0x4de8bd[_0xa537('0x1a')](_0x5dec42)['end']();};}function respondWithResult(_0x37ce9f,_0x4b285d){_0x4b285d=_0x4b285d||0xc8;return function(_0x421be2){if(_0x421be2){return _0x37ce9f[_0xa537('0x1a')](_0x4b285d)[_0xa537('0x1b')](_0x421be2);}};}function respondWithFilteredResult(_0x84fe2d,_0x1a4124){return function(_0x5d2a8a){if(_0x5d2a8a){var _0x34e8f3=typeof _0x1a4124['offset']==='undefined'&&typeof _0x1a4124[_0xa537('0x1c')]===_0xa537('0x1d');var _0x162450=_0x5d2a8a[_0xa537('0x1e')];var _0x47137b=_0x34e8f3?0x0:_0x1a4124[_0xa537('0x1f')];var _0x590600=_0x34e8f3?_0x5d2a8a['count']:_0x1a4124[_0xa537('0x1f')]+_0x1a4124[_0xa537('0x1c')];var _0x26239f;if(_0x590600>=_0x162450){_0x590600=_0x162450;_0x26239f=0xc8;}else{_0x26239f=0xce;}_0x84fe2d['status'](_0x26239f);return _0x84fe2d['set'](_0xa537('0x20'),_0x47137b+'-'+_0x590600+'/'+_0x162450)[_0xa537('0x1b')](_0x5d2a8a);}return null;};}function patchUpdates(_0x103a6e){return function(_0x2400f4){try{jsonpatch['apply'](_0x2400f4,_0x103a6e,!![]);}catch(_0x2f23a0){return BPromise['reject'](_0x2f23a0);}return _0x2400f4[_0xa537('0x21')]();};}function saveUpdates(_0x140e12,_0x4b8984){return function(_0x1d09d1){if(_0x1d09d1){return _0x1d09d1[_0xa537('0x22')](_0x140e12)['then'](function(_0x382cb8){return _0x382cb8;});}return null;};}function removeEntity(_0x15cf74,_0x31f895){return function(_0xd65ed4){if(_0xd65ed4){return _0xd65ed4[_0xa537('0x23')]()[_0xa537('0x24')](function(){_0x15cf74[_0xa537('0x1a')](0xcc)[_0xa537('0x25')]();});}};}function handleEntityNotFound(_0x1d5639,_0xd86183){return function(_0x3047bb){if(!_0x3047bb){_0x1d5639[_0xa537('0x19')](0x194);}return _0x3047bb;};}function handleError(_0x2c1931,_0x171ff5){_0x171ff5=_0x171ff5||0x1f4;return function(_0x81af81){logger[_0xa537('0x26')](_0x81af81[_0xa537('0x27')]);if(_0x81af81[_0xa537('0x28')]){delete _0x81af81[_0xa537('0x28')];}_0x2c1931[_0xa537('0x1a')](_0x171ff5)[_0xa537('0x29')](_0x81af81);};}exports[_0xa537('0x2a')]=function(_0xca68c9,_0x1438ce){var _0x13b37e={},_0x52b368={},_0x403908={'count':0x0,'rows':[]};var _0x15405e=_['map'](db[_0xa537('0x2b')][_0xa537('0x2c')],function(_0x14e6ff){return{'name':_0x14e6ff[_0xa537('0x2d')],'type':_0x14e6ff['type'][_0xa537('0x2e')]};});_0x52b368[_0xa537('0x2f')]=_['map'](_0x15405e,_0xa537('0x28'));_0x52b368[_0xa537('0x30')]=_[_0xa537('0x31')](_0xca68c9[_0xa537('0x30')]);_0x52b368[_0xa537('0x32')]=_['intersection'](_0x52b368[_0xa537('0x2f')],_0x52b368[_0xa537('0x30')]);_0x13b37e[_0xa537('0x33')]=_[_0xa537('0x34')](_0x52b368[_0xa537('0x2f')],qs[_0xa537('0x35')](_0xca68c9['query'][_0xa537('0x35')]));_0x13b37e[_0xa537('0x33')]=_0x13b37e[_0xa537('0x33')]['length']?_0x13b37e[_0xa537('0x33')]:_0x52b368[_0xa537('0x2f')];if(!_0xca68c9[_0xa537('0x30')][_0xa537('0x36')](_0xa537('0x37'))){_0x13b37e[_0xa537('0x1c')]=qs['limit'](_0xca68c9[_0xa537('0x30')][_0xa537('0x1c')]);_0x13b37e[_0xa537('0x1f')]=qs[_0xa537('0x1f')](_0xca68c9['query'][_0xa537('0x1f')]);}_0x13b37e[_0xa537('0x38')]=qs[_0xa537('0x39')](_0xca68c9[_0xa537('0x30')][_0xa537('0x39')]);_0x13b37e[_0xa537('0x3a')]=qs[_0xa537('0x32')](_[_0xa537('0x3b')](_0xca68c9[_0xa537('0x30')],_0x52b368[_0xa537('0x32')]),_0x15405e);if(_0xca68c9['query'][_0xa537('0x3c')]){_0x13b37e[_0xa537('0x3a')]=_[_0xa537('0x3d')](_0x13b37e[_0xa537('0x3a')],{'$or':_[_0xa537('0x3e')](_0x15405e,function(_0x850a55){if(_0x850a55['type']!=='VIRTUAL'){var _0x468c4e={};_0x468c4e[_0x850a55[_0xa537('0x28')]]={'$like':'%'+_0xca68c9['query']['filter']+'%'};return _0x468c4e;}})});}_0x13b37e=_['merge']({},_0x13b37e,_0xca68c9[_0xa537('0x3f')]);var _0x1050fc={'where':_0x13b37e[_0xa537('0x3a')]};return db[_0xa537('0x2b')][_0xa537('0x1e')](_0x1050fc)[_0xa537('0x24')](function(_0x58410f){_0x403908['count']=_0x58410f;if(_0xca68c9[_0xa537('0x30')][_0xa537('0x40')]){_0x13b37e['include']=[{'all':!![]}];}return db[_0xa537('0x2b')][_0xa537('0x41')](_0x13b37e);})[_0xa537('0x24')](function(_0xe23269){_0x403908[_0xa537('0x42')]=_0xe23269;return _0x403908;})[_0xa537('0x24')](respondWithFilteredResult(_0x1438ce,_0x13b37e))['catch'](handleError(_0x1438ce,null));};exports['show']=function(_0x461796,_0x543c88){var _0x5c931a={'raw':!![],'where':{'id':_0x461796['params']['id']}},_0x4b9c73={};_0x4b9c73['model']=_[_0xa537('0x31')](db[_0xa537('0x2b')][_0xa537('0x2c')]);_0x4b9c73['query']=_[_0xa537('0x31')](_0x461796['query']);_0x4b9c73[_0xa537('0x32')]=_[_0xa537('0x34')](_0x4b9c73[_0xa537('0x2f')],_0x4b9c73['query']);_0x5c931a[_0xa537('0x33')]=_[_0xa537('0x34')](_0x4b9c73[_0xa537('0x2f')],qs[_0xa537('0x35')](_0x461796[_0xa537('0x30')][_0xa537('0x35')]));_0x5c931a[_0xa537('0x33')]=_0x5c931a[_0xa537('0x33')]['length']?_0x5c931a[_0xa537('0x33')]:_0x4b9c73['model'];if(_0x461796[_0xa537('0x30')][_0xa537('0x40')]){_0x5c931a['include']=[{'all':!![]}];}_0x5c931a=_[_0xa537('0x3d')]({},_0x5c931a,_0x461796['options']);return db[_0xa537('0x2b')][_0xa537('0x43')](_0x5c931a)[_0xa537('0x24')](handleEntityNotFound(_0x543c88,null))[_0xa537('0x24')](respondWithResult(_0x543c88,null))[_0xa537('0x44')](handleError(_0x543c88,null));};exports[_0xa537('0x45')]=function(_0xe0696a,_0x4dc233){return db[_0xa537('0x2b')][_0xa537('0x45')](_0xe0696a[_0xa537('0x46')],{})['then'](respondWithResult(_0x4dc233,0xc9))[_0xa537('0x44')](handleError(_0x4dc233,null));};exports[_0xa537('0x22')]=function(_0x133324,_0x315455){if(_0x133324[_0xa537('0x46')]['id']){delete _0x133324['body']['id'];}return db[_0xa537('0x2b')][_0xa537('0x43')]({'where':{'id':_0x133324[_0xa537('0x47')]['id']}})['then'](handleEntityNotFound(_0x315455,null))[_0xa537('0x24')](saveUpdates(_0x133324[_0xa537('0x46')],null))[_0xa537('0x24')](respondWithResult(_0x315455,null))[_0xa537('0x44')](handleError(_0x315455,null));};exports['destroy']=function(_0x4585c3,_0x19a90b){return db[_0xa537('0x2b')]['find']({'where':{'id':_0x4585c3[_0xa537('0x47')]['id']}})[_0xa537('0x24')](handleEntityNotFound(_0x19a90b,null))[_0xa537('0x24')](removeEntity(_0x19a90b,null))['catch'](handleError(_0x19a90b,null));};
\ No newline at end of file
+var _0x920b=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','ZohoField','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','include','rows','show','keys','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x2cb7bd,_0x22f222){var _0x3d152e=function(_0x38e95e){while(--_0x38e95e){_0x2cb7bd['push'](_0x2cb7bd['shift']());}};_0x3d152e(++_0x22f222);}(_0x920b,0x11d));var _0xb920=function(_0x2ed0bc,_0x4a9204){_0x2ed0bc=_0x2ed0bc-0x0;var _0x1128c=_0x920b[_0x2ed0bc];return _0x1128c;};'use strict';var emlformat=require(_0xb920('0x0'));var rimraf=require(_0xb920('0x1'));var zipdir=require(_0xb920('0x2'));var jsonpatch=require(_0xb920('0x3'));var rp=require(_0xb920('0x4'));var moment=require(_0xb920('0x5'));var BPromise=require(_0xb920('0x6'));var Mustache=require(_0xb920('0x7'));var util=require('util');var path=require(_0xb920('0x8'));var sox=require(_0xb920('0x9'));var csv=require(_0xb920('0xa'));var ejs=require(_0xb920('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb920('0xc'));var squel=require('squel');var crypto=require(_0xb920('0xd'));var jsforce=require(_0xb920('0xe'));var deskjs=require(_0xb920('0xf'));var toCsv=require(_0xb920('0xa'));var querystring=require(_0xb920('0x10'));var Papa=require(_0xb920('0x11'));var Redis=require(_0xb920('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb920('0x13'));var as=require(_0xb920('0x14'));var hardwareService=require(_0xb920('0x15'));var logger=require(_0xb920('0x16'))(_0xb920('0x17'));var utils=require(_0xb920('0x18'));var config=require(_0xb920('0x19'));var licenseUtil=require(_0xb920('0x1a'));var db=require(_0xb920('0x1b'))['db'];function respondWithStatusCode(_0x1ce6ff,_0x4c3fe8){_0x4c3fe8=_0x4c3fe8||0xcc;return function(_0x4b5df3){if(_0x4b5df3){return _0x1ce6ff['sendStatus'](_0x4c3fe8);}return _0x1ce6ff[_0xb920('0x1c')](_0x4c3fe8)['end']();};}function respondWithResult(_0x17a477,_0x189847){_0x189847=_0x189847||0xc8;return function(_0x5595b0){if(_0x5595b0){return _0x17a477[_0xb920('0x1c')](_0x189847)[_0xb920('0x1d')](_0x5595b0);}};}function respondWithFilteredResult(_0x8e3e75,_0x1bb1e9){return function(_0x7d1091){if(_0x7d1091){var _0x1e95ca=typeof _0x1bb1e9[_0xb920('0x1e')]===_0xb920('0x1f')&&typeof _0x1bb1e9[_0xb920('0x20')]===_0xb920('0x1f');var _0x2560cd=_0x7d1091[_0xb920('0x21')];var _0x2707e3=_0x1e95ca?0x0:_0x1bb1e9[_0xb920('0x1e')];var _0x2406b9=_0x1e95ca?_0x7d1091[_0xb920('0x21')]:_0x1bb1e9[_0xb920('0x1e')]+_0x1bb1e9['limit'];var _0x589815;if(_0x2406b9>=_0x2560cd){_0x2406b9=_0x2560cd;_0x589815=0xc8;}else{_0x589815=0xce;}_0x8e3e75[_0xb920('0x1c')](_0x589815);return _0x8e3e75[_0xb920('0x22')]('Content-Range',_0x2707e3+'-'+_0x2406b9+'/'+_0x2560cd)[_0xb920('0x1d')](_0x7d1091);}return null;};}function patchUpdates(_0x11f1b1){return function(_0x3dd7a3){try{jsonpatch[_0xb920('0x23')](_0x3dd7a3,_0x11f1b1,!![]);}catch(_0x55ad3b){return BPromise[_0xb920('0x24')](_0x55ad3b);}return _0x3dd7a3[_0xb920('0x25')]();};}function saveUpdates(_0xa24399,_0x34cc4f){return function(_0x325d0d){if(_0x325d0d){return _0x325d0d[_0xb920('0x26')](_0xa24399)[_0xb920('0x27')](function(_0x4e2b8f){return _0x4e2b8f;});}return null;};}function removeEntity(_0x8bfc26,_0x3ec4ef){return function(_0x20867c){if(_0x20867c){return _0x20867c[_0xb920('0x28')]()['then'](function(){_0x8bfc26[_0xb920('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x301128,_0x56db4d){return function(_0x2832d0){if(!_0x2832d0){_0x301128[_0xb920('0x29')](0x194);}return _0x2832d0;};}function handleError(_0x47b48f,_0x163ff9){_0x163ff9=_0x163ff9||0x1f4;return function(_0x5c658f){logger[_0xb920('0x2a')](_0x5c658f[_0xb920('0x2b')]);if(_0x5c658f[_0xb920('0x2c')]){delete _0x5c658f[_0xb920('0x2c')];}_0x47b48f[_0xb920('0x1c')](_0x163ff9)[_0xb920('0x2d')](_0x5c658f);};}exports[_0xb920('0x2e')]=function(_0x2ab7bb,_0x3ef6d6){var _0x12a702={},_0x5d7a9e={},_0x200600={'count':0x0,'rows':[]};var _0x9fa1f7=_['map'](db[_0xb920('0x2f')][_0xb920('0x30')],function(_0x3e9ee3){return{'name':_0x3e9ee3['fieldName'],'type':_0x3e9ee3[_0xb920('0x31')][_0xb920('0x32')]};});_0x5d7a9e[_0xb920('0x33')]=_[_0xb920('0x34')](_0x9fa1f7,_0xb920('0x2c'));_0x5d7a9e['query']=_['keys'](_0x2ab7bb[_0xb920('0x35')]);_0x5d7a9e[_0xb920('0x36')]=_[_0xb920('0x37')](_0x5d7a9e[_0xb920('0x33')],_0x5d7a9e[_0xb920('0x35')]);_0x12a702['attributes']=_[_0xb920('0x37')](_0x5d7a9e[_0xb920('0x33')],qs[_0xb920('0x38')](_0x2ab7bb[_0xb920('0x35')][_0xb920('0x38')]));_0x12a702[_0xb920('0x39')]=_0x12a702[_0xb920('0x39')][_0xb920('0x3a')]?_0x12a702[_0xb920('0x39')]:_0x5d7a9e['model'];if(!_0x2ab7bb[_0xb920('0x35')][_0xb920('0x3b')](_0xb920('0x3c'))){_0x12a702['limit']=qs[_0xb920('0x20')](_0x2ab7bb[_0xb920('0x35')][_0xb920('0x20')]);_0x12a702[_0xb920('0x1e')]=qs[_0xb920('0x1e')](_0x2ab7bb[_0xb920('0x35')][_0xb920('0x1e')]);}_0x12a702[_0xb920('0x3d')]=qs[_0xb920('0x3e')](_0x2ab7bb[_0xb920('0x35')][_0xb920('0x3e')]);_0x12a702['where']=qs[_0xb920('0x36')](_[_0xb920('0x3f')](_0x2ab7bb[_0xb920('0x35')],_0x5d7a9e[_0xb920('0x36')]),_0x9fa1f7);if(_0x2ab7bb[_0xb920('0x35')]['filter']){_0x12a702[_0xb920('0x40')]=_[_0xb920('0x41')](_0x12a702[_0xb920('0x40')],{'$or':_[_0xb920('0x34')](_0x9fa1f7,function(_0xfb3c55){if(_0xfb3c55[_0xb920('0x31')]!==_0xb920('0x42')){var _0x44252f={};_0x44252f[_0xfb3c55[_0xb920('0x2c')]]={'$like':'%'+_0x2ab7bb[_0xb920('0x35')]['filter']+'%'};return _0x44252f;}})});}_0x12a702=_[_0xb920('0x41')]({},_0x12a702,_0x2ab7bb['options']);var _0x193f28={'where':_0x12a702['where']};return db[_0xb920('0x2f')][_0xb920('0x21')](_0x193f28)[_0xb920('0x27')](function(_0x14c55e){_0x200600['count']=_0x14c55e;if(_0x2ab7bb['query']['includeAll']){_0x12a702[_0xb920('0x43')]=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x12a702);})[_0xb920('0x27')](function(_0x58fb37){_0x200600[_0xb920('0x44')]=_0x58fb37;return _0x200600;})[_0xb920('0x27')](respondWithFilteredResult(_0x3ef6d6,_0x12a702))['catch'](handleError(_0x3ef6d6,null));};exports[_0xb920('0x45')]=function(_0x1aa160,_0x264a7e){var _0x2b9c03={'raw':!![],'where':{'id':_0x1aa160['params']['id']}},_0x32baf1={};_0x32baf1[_0xb920('0x33')]=_[_0xb920('0x46')](db[_0xb920('0x2f')][_0xb920('0x30')]);_0x32baf1['query']=_[_0xb920('0x46')](_0x1aa160[_0xb920('0x35')]);_0x32baf1[_0xb920('0x36')]=_[_0xb920('0x37')](_0x32baf1[_0xb920('0x33')],_0x32baf1['query']);_0x2b9c03[_0xb920('0x39')]=_['intersection'](_0x32baf1['model'],qs['fields'](_0x1aa160[_0xb920('0x35')][_0xb920('0x38')]));_0x2b9c03[_0xb920('0x39')]=_0x2b9c03[_0xb920('0x39')]['length']?_0x2b9c03[_0xb920('0x39')]:_0x32baf1[_0xb920('0x33')];if(_0x1aa160[_0xb920('0x35')][_0xb920('0x47')]){_0x2b9c03[_0xb920('0x43')]=[{'all':!![]}];}_0x2b9c03=_[_0xb920('0x41')]({},_0x2b9c03,_0x1aa160['options']);return db[_0xb920('0x2f')][_0xb920('0x48')](_0x2b9c03)[_0xb920('0x27')](handleEntityNotFound(_0x264a7e,null))[_0xb920('0x27')](respondWithResult(_0x264a7e,null))[_0xb920('0x49')](handleError(_0x264a7e,null));};exports[_0xb920('0x4a')]=function(_0x427afc,_0x48288f){return db[_0xb920('0x2f')]['create'](_0x427afc[_0xb920('0x4b')],{})[_0xb920('0x27')](respondWithResult(_0x48288f,0xc9))[_0xb920('0x49')](handleError(_0x48288f,null));};exports[_0xb920('0x26')]=function(_0x1056aa,_0x58e402){if(_0x1056aa['body']['id']){delete _0x1056aa[_0xb920('0x4b')]['id'];}return db[_0xb920('0x2f')][_0xb920('0x48')]({'where':{'id':_0x1056aa['params']['id']}})[_0xb920('0x27')](handleEntityNotFound(_0x58e402,null))['then'](saveUpdates(_0x1056aa[_0xb920('0x4b')],null))[_0xb920('0x27')](respondWithResult(_0x58e402,null))[_0xb920('0x49')](handleError(_0x58e402,null));};exports[_0xb920('0x28')]=function(_0x3d7c82,_0x54877d){return db['ZohoField'][_0xb920('0x48')]({'where':{'id':_0x3d7c82['params']['id']}})[_0xb920('0x27')](handleEntityNotFound(_0x54877d,null))[_0xb920('0x27')](removeEntity(_0x54877d,null))[_0xb920('0x49')](handleError(_0x54877d,null));};
\ No newline at end of file
index d6270d8..6d1a345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x1b5aea,_0x1afe6f){var _0x51cae9=function(_0x1494a6){while(--_0x1494a6){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x51cae9(++_0x1afe6f);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8e3f[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var logger=require(_0xf8e3('0x2'))('api');var moment=require(_0xf8e3('0x3'));var BPromise=require(_0xf8e3('0x4'));var rp=require(_0xf8e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var attributes=require('./intZohoField.attributes');module[_0xf8e3('0x8')]=function(_0xb21f8d,_0x2621c5){return _0xb21f8d[_0xf8e3('0x9')]('ZohoField',attributes,{'tableName':_0xf8e3('0xa'),'paranoid':![],'indexes':[{'name':_0xf8e3('0xb'),'fields':[_0xf8e3('0xc'),_0xf8e3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x71ab=['rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','util','api','bluebird','request-promise','path'];(function(_0x2e249d,_0x41b7e7){var _0x1faa37=function(_0x1422b4){while(--_0x1422b4){_0x2e249d['push'](_0x2e249d['shift']());}};_0x1faa37(++_0x41b7e7);}(_0x71ab,0x64));var _0xb71a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x71ab[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var logger=require('../../config/logger')(_0xb71a('0x1'));var moment=require('moment');var BPromise=require(_0xb71a('0x2'));var rp=require(_0xb71a('0x3'));var fs=require('fs');var path=require(_0xb71a('0x4'));var rimraf=require(_0xb71a('0x5'));var config=require(_0xb71a('0x6'));var attributes=require(_0xb71a('0x7'));module[_0xb71a('0x8')]=function(_0x38d931,_0x22c072){return _0x38d931[_0xb71a('0x9')](_0xb71a('0xa'),attributes,{'tableName':_0xb71a('0xb'),'paranoid':![],'indexes':[{'name':_0xb71a('0xc'),'fields':[_0xb71a('0xd'),_0xb71a('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 264575c..c5351ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4018=['message','result','lodash','util','moment','bluebird','ioredis','rpc','../../config/environment','jayson/promise','client','request','then','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4132c1,_0xca8387){var _0x5860af=function(_0x3ec1a1){while(--_0x3ec1a1){_0x4132c1['push'](_0x4132c1['shift']());}};_0x5860af(++_0xca8387);}(_0x4018,0x106));var _0x8401=function(_0x8e4445,_0x48e7fc){_0x8e4445=_0x8e4445-0x0;var _0x111540=_0x4018[_0x8e4445];return _0x111540;};'use strict';var _=require(_0x8401('0x0'));var util=require(_0x8401('0x1'));var moment=require(_0x8401('0x2'));var BPromise=require(_0x8401('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8401('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8401('0x5'));var config=require(_0x8401('0x6'));var jayson=require(_0x8401('0x7'));var client=jayson[_0x8401('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fd9cb,_0x3cbe3a,_0x54cf8e){return new BPromise(function(_0x313d04,_0x3a19d1){return client[_0x8401('0x9')](_0x2fd9cb,_0x54cf8e)[_0x8401('0xa')](function(_0x2ae87f){logger['info'](_0x8401('0xb'),_0x3cbe3a,'request\x20sent');logger[_0x8401('0xc')](_0x8401('0xd'),_0x3cbe3a,_0x8401('0xe'),JSON[_0x8401('0xf')](_0x2ae87f));if(_0x2ae87f['error']){if(_0x2ae87f[_0x8401('0x10')][_0x8401('0x11')]===0x1f4){logger[_0x8401('0x10')](_0x8401('0xb'),_0x3cbe3a,_0x2ae87f['error'][_0x8401('0x12')]);return _0x3a19d1(_0x2ae87f[_0x8401('0x10')][_0x8401('0x12')]);}logger[_0x8401('0x10')](_0x8401('0xb'),_0x3cbe3a,_0x2ae87f[_0x8401('0x10')][_0x8401('0x12')]);return _0x313d04(_0x2ae87f[_0x8401('0x10')][_0x8401('0x12')]);}else{logger['info'](_0x8401('0xb'),_0x3cbe3a,_0x8401('0xe'));_0x313d04(_0x2ae87f[_0x8401('0x13')][_0x8401('0x12')]);}})['catch'](function(_0x368f6c){logger[_0x8401('0x10')]('ZohoField,\x20%s,\x20%s',_0x3cbe3a,_0x368f6c);_0x3a19d1(_0x368f6c);});});}
\ No newline at end of file
+var _0x8cbc=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird','ioredis'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x8cbc,0x177));var _0xc8cb=function(_0x120d9f,_0xc31e02){_0x120d9f=_0x120d9f-0x0;var _0x128f0d=_0x8cbc[_0x120d9f];return _0x128f0d;};'use strict';var _=require('lodash');var util=require(_0xc8cb('0x0'));var moment=require('moment');var BPromise=require(_0xc8cb('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc8cb('0x2'));var db=require(_0xc8cb('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc8cb('0x4'))(_0xc8cb('0x5'));var config=require('../../config/environment');var jayson=require(_0xc8cb('0x6'));var client=jayson[_0xc8cb('0x7')][_0xc8cb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x91ba51,_0x44a010,_0x3e6269){return new BPromise(function(_0x4950fe,_0x5452c3){return client[_0xc8cb('0x9')](_0x91ba51,_0x3e6269)[_0xc8cb('0xa')](function(_0x15c991){logger[_0xc8cb('0xb')](_0xc8cb('0xc'),_0x44a010,_0xc8cb('0xd'));logger[_0xc8cb('0xe')](_0xc8cb('0xf'),_0x44a010,_0xc8cb('0xd'),JSON[_0xc8cb('0x10')](_0x15c991));if(_0x15c991['error']){if(_0x15c991[_0xc8cb('0x11')]['code']===0x1f4){logger['error'](_0xc8cb('0xc'),_0x44a010,_0x15c991[_0xc8cb('0x11')][_0xc8cb('0x12')]);return _0x5452c3(_0x15c991[_0xc8cb('0x11')]['message']);}logger[_0xc8cb('0x11')](_0xc8cb('0xc'),_0x44a010,_0x15c991[_0xc8cb('0x11')][_0xc8cb('0x12')]);return _0x4950fe(_0x15c991[_0xc8cb('0x11')][_0xc8cb('0x12')]);}else{logger[_0xc8cb('0xb')](_0xc8cb('0xc'),_0x44a010,_0xc8cb('0xd'));_0x4950fe(_0x15c991[_0xc8cb('0x13')][_0xc8cb('0x12')]);}})[_0xc8cb('0x14')](function(_0x4cac91){logger['error'](_0xc8cb('0xc'),_0x44a010,_0x4cac91);_0x5452c3(_0x4cac91);});});}
\ No newline at end of file
index eb6e5be..4844dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x17b562,_0x18dc49){var _0x2afdc4=function(_0x1dd209){while(--_0x1dd209){_0x17b562['push'](_0x17b562['shift']());}};_0x2afdc4(++_0x18dc49);}(_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
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x1cbbaf,_0x35eee9){var _0x2ab9bc=function(_0x5cbfc0){while(--_0x5cbfc0){_0x1cbbaf['push'](_0x1cbbaf['shift']());}};_0x2ab9bc(++_0x35eee9);}(_0xe706,0xa3));var _0x6e70=function(_0x257c0e,_0x4631da){_0x257c0e=_0x257c0e-0x0;var _0x393c16=_0xe706[_0x257c0e];return _0x393c16;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 2825ba3..2022e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7109=['BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version','app.js'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x7109,0xd4));var _0x9710=function(_0x4c2f30,_0xa91340){_0x4c2f30=_0x4c2f30-0x0;var _0xb8854d=_0x7109[_0x4c2f30];return _0xb8854d;};'use strict';var Sequelize=require(_0x9710('0x0'));module[_0x9710('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x9710('0x2')],'allowNull':![],'unique':_0x9710('0x3')},'main':{'type':Sequelize[_0x9710('0x2')],'defaultValue':_0x9710('0x4')},'filename':{'type':Sequelize[_0x9710('0x2')]},'path':{'type':Sequelize[_0x9710('0x2')]},'type':{'type':Sequelize[_0x9710('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x9710('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x9710('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x9710('0x2')],'unique':_0x9710('0x6')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x9710('0x2')]},'link':{'type':Sequelize[_0x9710('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xd8af=['INTEGER','state','sequelize','exports','STRING','unique_name_and_version','app.js'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xd8af,0x1a6));var _0xfd8a=function(_0x1b9705,_0x114491){_0x1b9705=_0x1b9705-0x0;var _0x27979f=_0xd8af[_0x1b9705];return _0x27979f;};'use strict';var Sequelize=require(_0xfd8a('0x0'));module[_0xfd8a('0x1')]={'name':{'type':Sequelize[_0xfd8a('0x2')],'allowNull':![],'unique':_0xfd8a('0x3')},'version':{'type':Sequelize[_0xfd8a('0x2')],'allowNull':![],'unique':_0xfd8a('0x3')},'main':{'type':Sequelize[_0xfd8a('0x2')],'defaultValue':_0xfd8a('0x4')},'filename':{'type':Sequelize[_0xfd8a('0x2')]},'path':{'type':Sequelize[_0xfd8a('0x2')]},'type':{'type':Sequelize[_0xfd8a('0x2')]},'size':{'type':Sequelize[_0xfd8a('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0xfd8a('0x2')]},'logo':{'type':Sequelize[_0xfd8a('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0xfd8a('0x6')},'description':{'type':Sequelize[_0xfd8a('0x2')]},'title':{'type':Sequelize[_0xfd8a('0x2')]},'remoteUri':{'type':Sequelize[_0xfd8a('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index 033438b..144e91b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['map','Integration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','name','send','index'];(function(_0x5a7beb,_0xd7e3fe){var _0x5e557d=function(_0x16ce1d){while(--_0x16ce1d){_0x5a7beb['push'](_0x5a7beb['shift']());}};_0x5e557d(++_0xd7e3fe);}(_0x4137,0xf8));var _0x7413=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4137[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require(_0x7413('0x0'));var rimraf=require(_0x7413('0x1'));var zipdir=require(_0x7413('0x2'));var jsonpatch=require(_0x7413('0x3'));var rp=require(_0x7413('0x4'));var moment=require(_0x7413('0x5'));var BPromise=require(_0x7413('0x6'));var Mustache=require(_0x7413('0x7'));var util=require(_0x7413('0x8'));var path=require(_0x7413('0x9'));var sox=require(_0x7413('0xa'));var csv=require(_0x7413('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7413('0xc'));var _=require(_0x7413('0xd'));var squel=require(_0x7413('0xe'));var crypto=require(_0x7413('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7413('0x10'));var toCsv=require(_0x7413('0xb'));var querystring=require('querystring');var Papa=require(_0x7413('0x11'));var Redis=require(_0x7413('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7413('0x13'));var as=require(_0x7413('0x14'));var hardwareService=require(_0x7413('0x15'));var logger=require(_0x7413('0x16'))(_0x7413('0x17'));var utils=require('../../config/utils');var config=require(_0x7413('0x18'));var licenseUtil=require(_0x7413('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18a874,_0xa26ca4){_0xa26ca4=_0xa26ca4||0xcc;return function(_0x13e6bd){if(_0x13e6bd){return _0x18a874['sendStatus'](_0xa26ca4);}return _0x18a874['status'](_0xa26ca4)['end']();};}function respondWithResult(_0x2267f6,_0x336c4c){_0x336c4c=_0x336c4c||0xc8;return function(_0x49f0f6){if(_0x49f0f6){return _0x2267f6[_0x7413('0x1a')](_0x336c4c)[_0x7413('0x1b')](_0x49f0f6);}};}function respondWithFilteredResult(_0x4955d3,_0x38b3d1){return function(_0x50f301){if(_0x50f301){var _0x4b9a5b=typeof _0x38b3d1[_0x7413('0x1c')]==='undefined'&&typeof _0x38b3d1[_0x7413('0x1d')]==='undefined';var _0x2036b6=_0x50f301[_0x7413('0x1e')];var _0x19157f=_0x4b9a5b?0x0:_0x38b3d1[_0x7413('0x1c')];var _0x2a3417=_0x4b9a5b?_0x50f301[_0x7413('0x1e')]:_0x38b3d1['offset']+_0x38b3d1[_0x7413('0x1d')];var _0x17c062;if(_0x2a3417>=_0x2036b6){_0x2a3417=_0x2036b6;_0x17c062=0xc8;}else{_0x17c062=0xce;}_0x4955d3[_0x7413('0x1a')](_0x17c062);return _0x4955d3[_0x7413('0x1f')]('Content-Range',_0x19157f+'-'+_0x2a3417+'/'+_0x2036b6)[_0x7413('0x1b')](_0x50f301);}return null;};}function patchUpdates(_0x12d94d){return function(_0x206afc){try{jsonpatch[_0x7413('0x20')](_0x206afc,_0x12d94d,!![]);}catch(_0x409392){return BPromise[_0x7413('0x21')](_0x409392);}return _0x206afc[_0x7413('0x22')]();};}function saveUpdates(_0x4e18cb,_0x56a06a){return function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0x7413('0x23')](_0x4e18cb)['then'](function(_0x1585ba){return _0x1585ba;});}return null;};}function removeEntity(_0x372944,_0x3b0c81){return function(_0x2fc0f4){if(_0x2fc0f4){return _0x2fc0f4[_0x7413('0x24')]()[_0x7413('0x25')](function(){_0x372944[_0x7413('0x1a')](0xcc)[_0x7413('0x26')]();});}};}function handleEntityNotFound(_0x1d455b,_0x5a8329){return function(_0x5cb15f){if(!_0x5cb15f){_0x1d455b[_0x7413('0x27')](0x194);}return _0x5cb15f;};}function handleError(_0x48c2dc,_0x46c895){_0x46c895=_0x46c895||0x1f4;return function(_0x71cbb4){logger[_0x7413('0x28')](_0x71cbb4['stack']);if(_0x71cbb4[_0x7413('0x29')]){delete _0x71cbb4[_0x7413('0x29')];}_0x48c2dc[_0x7413('0x1a')](_0x46c895)[_0x7413('0x2a')](_0x71cbb4);};}exports[_0x7413('0x2b')]=function(_0x2e521f,_0x5eb4d9){var _0x24dce7={},_0x4ed662={},_0x1d0bde={'count':0x0,'rows':[]};var _0x23e682=_[_0x7413('0x2c')](db[_0x7413('0x2d')][_0x7413('0x2e')],function(_0x2004ea){return{'name':_0x2004ea['fieldName'],'type':_0x2004ea[_0x7413('0x2f')][_0x7413('0x30')]};});_0x4ed662[_0x7413('0x31')]=_[_0x7413('0x2c')](_0x23e682,_0x7413('0x29'));_0x4ed662[_0x7413('0x32')]=_[_0x7413('0x33')](_0x2e521f['query']);_0x4ed662[_0x7413('0x34')]=_[_0x7413('0x35')](_0x4ed662[_0x7413('0x31')],_0x4ed662[_0x7413('0x32')]);_0x24dce7[_0x7413('0x36')]=_['intersection'](_0x4ed662[_0x7413('0x31')],qs['fields'](_0x2e521f[_0x7413('0x32')][_0x7413('0x37')]));_0x24dce7[_0x7413('0x36')]=_0x24dce7['attributes'][_0x7413('0x38')]?_0x24dce7['attributes']:_0x4ed662[_0x7413('0x31')];if(!_0x2e521f[_0x7413('0x32')]['hasOwnProperty']('nolimit')){_0x24dce7[_0x7413('0x1d')]=qs[_0x7413('0x1d')](_0x2e521f[_0x7413('0x32')]['limit']);_0x24dce7['offset']=qs[_0x7413('0x1c')](_0x2e521f['query']['offset']);}_0x24dce7[_0x7413('0x39')]=qs['sort'](_0x2e521f[_0x7413('0x32')][_0x7413('0x3a')]);_0x24dce7[_0x7413('0x3b')]=qs[_0x7413('0x34')](_[_0x7413('0x3c')](_0x2e521f['query'],_0x4ed662[_0x7413('0x34')]),_0x23e682);if(_0x2e521f[_0x7413('0x32')][_0x7413('0x3d')]){_0x24dce7[_0x7413('0x3b')]=_[_0x7413('0x3e')](_0x24dce7[_0x7413('0x3b')],{'$or':_[_0x7413('0x2c')](_0x23e682,function(_0x385156){if(_0x385156[_0x7413('0x2f')]!==_0x7413('0x3f')){var _0x5c03eb={};_0x5c03eb[_0x385156[_0x7413('0x29')]]={'$like':'%'+_0x2e521f['query'][_0x7413('0x3d')]+'%'};return _0x5c03eb;}})});}_0x24dce7=_['merge']({},_0x24dce7,_0x2e521f['options']);var _0x5b592c={'where':_0x24dce7['where']};return db['Integration'][_0x7413('0x1e')](_0x5b592c)['then'](function(_0x535e49){_0x1d0bde[_0x7413('0x1e')]=_0x535e49;if(_0x2e521f['query']['includeAll']){_0x24dce7[_0x7413('0x40')]=[{'all':!![]}];}return db[_0x7413('0x2d')][_0x7413('0x41')](_0x24dce7);})[_0x7413('0x25')](function(_0x8049c0){_0x1d0bde['rows']=_0x8049c0;return _0x1d0bde;})[_0x7413('0x25')](respondWithFilteredResult(_0x5eb4d9,_0x24dce7))['catch'](handleError(_0x5eb4d9,null));};exports[_0x7413('0x42')]=function(_0x1d8219,_0xa063d1){var _0xfe0daa={'raw':![],'where':{'id':_0x1d8219[_0x7413('0x43')]['id']}},_0x3f7da2={};_0x3f7da2[_0x7413('0x31')]=_[_0x7413('0x33')](db[_0x7413('0x2d')][_0x7413('0x2e')]);_0x3f7da2[_0x7413('0x32')]=_[_0x7413('0x33')](_0x1d8219[_0x7413('0x32')]);_0x3f7da2['filters']=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],_0x3f7da2[_0x7413('0x32')]);_0xfe0daa[_0x7413('0x36')]=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],qs[_0x7413('0x37')](_0x1d8219[_0x7413('0x32')][_0x7413('0x37')]));_0xfe0daa[_0x7413('0x36')]=_0xfe0daa[_0x7413('0x36')]['length']?_0xfe0daa[_0x7413('0x36')]:_0x3f7da2['model'];if(_0x1d8219[_0x7413('0x32')][_0x7413('0x44')]){_0xfe0daa[_0x7413('0x40')]=[{'all':!![]}];}_0xfe0daa=_[_0x7413('0x3e')]({},_0xfe0daa,_0x1d8219[_0x7413('0x45')]);return db[_0x7413('0x2d')][_0x7413('0x46')](_0xfe0daa)[_0x7413('0x25')](handleEntityNotFound(_0xa063d1,null))[_0x7413('0x25')](respondWithResult(_0xa063d1,null))[_0x7413('0x47')](handleError(_0xa063d1,null));};exports['create']=function(_0x513657,_0x3c1f1a){return db['Integration']['create'](_0x513657[_0x7413('0x48')],{})[_0x7413('0x25')](respondWithResult(_0x3c1f1a,0xc9))['catch'](handleError(_0x3c1f1a,null));};exports[_0x7413('0x23')]=function(_0x586d25,_0x562bae){if(_0x586d25[_0x7413('0x48')]['id']){delete _0x586d25['body']['id'];}return db[_0x7413('0x2d')][_0x7413('0x46')]({'where':{'id':_0x586d25[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x562bae,null))[_0x7413('0x25')](saveUpdates(_0x586d25[_0x7413('0x48')],null))[_0x7413('0x25')](respondWithResult(_0x562bae,null))[_0x7413('0x47')](handleError(_0x562bae,null));};exports[_0x7413('0x24')]=function(_0x2031e3,_0x50a27d){return db[_0x7413('0x2d')]['find']({'where':{'id':_0x2031e3['params']['id']}})['then'](handleEntityNotFound(_0x50a27d,null))[_0x7413('0x25')](removeEntity(_0x50a27d,null))[_0x7413('0x47')](handleError(_0x50a27d,null));};
\ No newline at end of file
+var _0x33af=['merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','length','include','create','body','find','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','Integration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where'];(function(_0x5ed07e,_0x35fff8){var _0x527413=function(_0x574921){while(--_0x574921){_0x5ed07e['push'](_0x5ed07e['shift']());}};_0x527413(++_0x35fff8);}(_0x33af,0xec));var _0xf33a=function(_0x3810f6,_0x41f38f){_0x3810f6=_0x3810f6-0x0;var _0x442125=_0x33af[_0x3810f6];return _0x442125;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf33a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf33a('0x1'));var rp=require(_0xf33a('0x2'));var moment=require(_0xf33a('0x3'));var BPromise=require(_0xf33a('0x4'));var Mustache=require(_0xf33a('0x5'));var util=require(_0xf33a('0x6'));var path=require('path');var sox=require(_0xf33a('0x7'));var csv=require(_0xf33a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf33a('0x9'));var _=require(_0xf33a('0xa'));var squel=require(_0xf33a('0xb'));var crypto=require(_0xf33a('0xc'));var jsforce=require(_0xf33a('0xd'));var deskjs=require(_0xf33a('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf33a('0xf'));var Papa=require(_0xf33a('0x10'));var Redis=require(_0xf33a('0x11'));var authService=require(_0xf33a('0x12'));var qs=require(_0xf33a('0x13'));var as=require(_0xf33a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf33a('0x15'));var utils=require(_0xf33a('0x16'));var config=require(_0xf33a('0x17'));var licenseUtil=require(_0xf33a('0x18'));var db=require(_0xf33a('0x19'))['db'];function respondWithStatusCode(_0x5959c9,_0x9f87bc){_0x9f87bc=_0x9f87bc||0xcc;return function(_0x21b80e){if(_0x21b80e){return _0x5959c9['sendStatus'](_0x9f87bc);}return _0x5959c9['status'](_0x9f87bc)[_0xf33a('0x1a')]();};}function respondWithResult(_0x1b3bf0,_0x17043){_0x17043=_0x17043||0xc8;return function(_0x153bda){if(_0x153bda){return _0x1b3bf0[_0xf33a('0x1b')](_0x17043)[_0xf33a('0x1c')](_0x153bda);}};}function respondWithFilteredResult(_0x45e311,_0x1f2b1b){return function(_0x507cb9){if(_0x507cb9){var _0x441f59=typeof _0x1f2b1b['offset']===_0xf33a('0x1d')&&typeof _0x1f2b1b[_0xf33a('0x1e')]==='undefined';var _0x37e76c=_0x507cb9[_0xf33a('0x1f')];var _0x524109=_0x441f59?0x0:_0x1f2b1b[_0xf33a('0x20')];var _0x23d9e2=_0x441f59?_0x507cb9[_0xf33a('0x1f')]:_0x1f2b1b[_0xf33a('0x20')]+_0x1f2b1b['limit'];var _0x11efa0;if(_0x23d9e2>=_0x37e76c){_0x23d9e2=_0x37e76c;_0x11efa0=0xc8;}else{_0x11efa0=0xce;}_0x45e311[_0xf33a('0x1b')](_0x11efa0);return _0x45e311[_0xf33a('0x21')](_0xf33a('0x22'),_0x524109+'-'+_0x23d9e2+'/'+_0x37e76c)[_0xf33a('0x1c')](_0x507cb9);}return null;};}function patchUpdates(_0x6cdf7b){return function(_0x19986f){try{jsonpatch[_0xf33a('0x23')](_0x19986f,_0x6cdf7b,!![]);}catch(_0x19055e){return BPromise[_0xf33a('0x24')](_0x19055e);}return _0x19986f['save']();};}function saveUpdates(_0x3854b4,_0x272e60){return function(_0x1bf9bc){if(_0x1bf9bc){return _0x1bf9bc[_0xf33a('0x25')](_0x3854b4)[_0xf33a('0x26')](function(_0x51d3fd){return _0x51d3fd;});}return null;};}function removeEntity(_0x44654c,_0x5882ba){return function(_0x492986){if(_0x492986){return _0x492986[_0xf33a('0x27')]()[_0xf33a('0x26')](function(){_0x44654c[_0xf33a('0x1b')](0xcc)[_0xf33a('0x1a')]();});}};}function handleEntityNotFound(_0x4b9801,_0x57cb1d){return function(_0x393005){if(!_0x393005){_0x4b9801['sendStatus'](0x194);}return _0x393005;};}function handleError(_0x4af24a,_0x16ef31){_0x16ef31=_0x16ef31||0x1f4;return function(_0x5f0a53){logger['error'](_0x5f0a53[_0xf33a('0x28')]);if(_0x5f0a53['name']){delete _0x5f0a53[_0xf33a('0x29')];}_0x4af24a['status'](_0x16ef31)[_0xf33a('0x2a')](_0x5f0a53);};}exports[_0xf33a('0x2b')]=function(_0x469741,_0x729fca){var _0x4552c9={},_0x3068a9={},_0x1d19ee={'count':0x0,'rows':[]};var _0x1246ff=_[_0xf33a('0x2c')](db[_0xf33a('0x2d')][_0xf33a('0x2e')],function(_0x8f8ddc){return{'name':_0x8f8ddc[_0xf33a('0x2f')],'type':_0x8f8ddc[_0xf33a('0x30')][_0xf33a('0x31')]};});_0x3068a9['model']=_[_0xf33a('0x2c')](_0x1246ff,_0xf33a('0x29'));_0x3068a9[_0xf33a('0x32')]=_[_0xf33a('0x33')](_0x469741['query']);_0x3068a9[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x3068a9[_0xf33a('0x36')],_0x3068a9[_0xf33a('0x32')]);_0x4552c9[_0xf33a('0x37')]=_[_0xf33a('0x35')](_0x3068a9['model'],qs[_0xf33a('0x38')](_0x469741[_0xf33a('0x32')][_0xf33a('0x38')]));_0x4552c9[_0xf33a('0x37')]=_0x4552c9[_0xf33a('0x37')]['length']?_0x4552c9['attributes']:_0x3068a9[_0xf33a('0x36')];if(!_0x469741['query']['hasOwnProperty']('nolimit')){_0x4552c9[_0xf33a('0x1e')]=qs[_0xf33a('0x1e')](_0x469741['query'][_0xf33a('0x1e')]);_0x4552c9['offset']=qs[_0xf33a('0x20')](_0x469741[_0xf33a('0x32')][_0xf33a('0x20')]);}_0x4552c9[_0xf33a('0x39')]=qs[_0xf33a('0x3a')](_0x469741[_0xf33a('0x32')]['sort']);_0x4552c9[_0xf33a('0x3b')]=qs[_0xf33a('0x34')](_['pick'](_0x469741[_0xf33a('0x32')],_0x3068a9[_0xf33a('0x34')]),_0x1246ff);if(_0x469741[_0xf33a('0x32')]['filter']){_0x4552c9[_0xf33a('0x3b')]=_[_0xf33a('0x3c')](_0x4552c9[_0xf33a('0x3b')],{'$or':_[_0xf33a('0x2c')](_0x1246ff,function(_0x3ec562){if(_0x3ec562[_0xf33a('0x30')]!==_0xf33a('0x3d')){var _0x128baf={};_0x128baf[_0x3ec562[_0xf33a('0x29')]]={'$like':'%'+_0x469741['query'][_0xf33a('0x3e')]+'%'};return _0x128baf;}})});}_0x4552c9=_[_0xf33a('0x3c')]({},_0x4552c9,_0x469741['options']);var _0x1e8800={'where':_0x4552c9['where']};return db['Integration'][_0xf33a('0x1f')](_0x1e8800)[_0xf33a('0x26')](function(_0x4dada1){_0x1d19ee[_0xf33a('0x1f')]=_0x4dada1;if(_0x469741[_0xf33a('0x32')][_0xf33a('0x3f')]){_0x4552c9['include']=[{'all':!![]}];}return db[_0xf33a('0x2d')][_0xf33a('0x40')](_0x4552c9);})['then'](function(_0x1e9748){_0x1d19ee[_0xf33a('0x41')]=_0x1e9748;return _0x1d19ee;})[_0xf33a('0x26')](respondWithFilteredResult(_0x729fca,_0x4552c9))[_0xf33a('0x42')](handleError(_0x729fca,null));};exports[_0xf33a('0x43')]=function(_0x5044f9,_0x45ae15){var _0x1722e5={'raw':![],'where':{'id':_0x5044f9[_0xf33a('0x44')]['id']}},_0x2325eb={};_0x2325eb[_0xf33a('0x36')]=_['keys'](db[_0xf33a('0x2d')][_0xf33a('0x2e')]);_0x2325eb[_0xf33a('0x32')]=_['keys'](_0x5044f9[_0xf33a('0x32')]);_0x2325eb[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x2325eb[_0xf33a('0x36')],_0x2325eb[_0xf33a('0x32')]);_0x1722e5[_0xf33a('0x37')]=_['intersection'](_0x2325eb[_0xf33a('0x36')],qs[_0xf33a('0x38')](_0x5044f9[_0xf33a('0x32')][_0xf33a('0x38')]));_0x1722e5[_0xf33a('0x37')]=_0x1722e5['attributes'][_0xf33a('0x45')]?_0x1722e5[_0xf33a('0x37')]:_0x2325eb[_0xf33a('0x36')];if(_0x5044f9['query'][_0xf33a('0x3f')]){_0x1722e5[_0xf33a('0x46')]=[{'all':!![]}];}_0x1722e5=_['merge']({},_0x1722e5,_0x5044f9['options']);return db[_0xf33a('0x2d')]['find'](_0x1722e5)[_0xf33a('0x26')](handleEntityNotFound(_0x45ae15,null))[_0xf33a('0x26')](respondWithResult(_0x45ae15,null))[_0xf33a('0x42')](handleError(_0x45ae15,null));};exports[_0xf33a('0x47')]=function(_0xecc82f,_0x1a98f9){return db[_0xf33a('0x2d')][_0xf33a('0x47')](_0xecc82f[_0xf33a('0x48')],{})[_0xf33a('0x26')](respondWithResult(_0x1a98f9,0xc9))[_0xf33a('0x42')](handleError(_0x1a98f9,null));};exports[_0xf33a('0x25')]=function(_0x190a2b,_0x6b79da){if(_0x190a2b[_0xf33a('0x48')]['id']){delete _0x190a2b[_0xf33a('0x48')]['id'];}return db[_0xf33a('0x2d')][_0xf33a('0x49')]({'where':{'id':_0x190a2b[_0xf33a('0x44')]['id']}})[_0xf33a('0x26')](handleEntityNotFound(_0x6b79da,null))[_0xf33a('0x26')](saveUpdates(_0x190a2b[_0xf33a('0x48')],null))[_0xf33a('0x26')](respondWithResult(_0x6b79da,null))[_0xf33a('0x42')](handleError(_0x6b79da,null));};exports[_0xf33a('0x27')]=function(_0x1b15a1,_0x3bab07){return db[_0xf33a('0x2d')][_0xf33a('0x49')]({'where':{'id':_0x1b15a1['params']['id']}})[_0xf33a('0x26')](handleEntityNotFound(_0x3bab07,null))[_0xf33a('0x26')](removeEntity(_0x3bab07,null))['catch'](handleError(_0x3bab07,null));};
\ No newline at end of file
index e110b0f..47cbcd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47ac=['lodash','util','api','moment','request-promise','path','define','Integration'];(function(_0x56fa59,_0x1870a8){var _0x38c3d5=function(_0x1860b7){while(--_0x1860b7){_0x56fa59['push'](_0x56fa59['shift']());}};_0x38c3d5(++_0x1870a8);}(_0x47ac,0xe8));var _0xc47a=function(_0x5edeb4,_0x267260){_0x5edeb4=_0x5edeb4-0x0;var _0x37a567=_0x47ac[_0x5edeb4];return _0x37a567;};'use strict';var _=require(_0xc47a('0x0'));var util=require(_0xc47a('0x1'));var logger=require('../../config/logger')(_0xc47a('0x2'));var moment=require(_0xc47a('0x3'));var BPromise=require('bluebird');var rp=require(_0xc47a('0x4'));var fs=require('fs');var path=require(_0xc47a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./integration.attributes');module['exports']=function(_0x4841c6,_0x45f90c){return _0x4841c6[_0xc47a('0x6')](_0xc47a('0x7'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7c8=['bluebird','request-promise','path','rimraf','../../config/environment','exports','Integration','integrations','lodash','../../config/logger','api'];(function(_0x40015a,_0x415db5){var _0x42f8a4=function(_0x5685ad){while(--_0x5685ad){_0x40015a['push'](_0x40015a['shift']());}};_0x42f8a4(++_0x415db5);}(_0xb7c8,0x1e1));var _0x8b7c=function(_0x5042b4,_0x4f7009){_0x5042b4=_0x5042b4-0x0;var _0x22c2b3=_0xb7c8[_0x5042b4];return _0x22c2b3;};'use strict';var _=require(_0x8b7c('0x0'));var util=require('util');var logger=require(_0x8b7c('0x1'))(_0x8b7c('0x2'));var moment=require('moment');var BPromise=require(_0x8b7c('0x3'));var rp=require(_0x8b7c('0x4'));var fs=require('fs');var path=require(_0x8b7c('0x5'));var rimraf=require(_0x8b7c('0x6'));var config=require(_0x8b7c('0x7'));var attributes=require('./integration.attributes');module[_0x8b7c('0x8')]=function(_0x4d5b78,_0x3707a8){return _0x4d5b78['define'](_0x8b7c('0x9'),attributes,{'tableName':_0x8b7c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 79b73a6..74940bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','then','debug','request\x20sent','stringify','error','code','Integration,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x2b7cad,_0x3f915b){var _0x51f303=function(_0x53b60e){while(--_0x53b60e){_0x2b7cad['push'](_0x2b7cad['shift']());}};_0x51f303(++_0x3f915b);}(_0x14a0,0x8e));var _0x014a=function(_0x5de82f,_0x12bd7a){_0x5de82f=_0x5de82f-0x0;var _0x4a39c8=_0x14a0[_0x5de82f];return _0x4a39c8;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var moment=require(_0x014a('0x1'));var BPromise=require(_0x014a('0x2'));var rs=require(_0x014a('0x3'));var fs=require('fs');var Redis=require(_0x014a('0x4'));var db=require(_0x014a('0x5'))['db'];var utils=require(_0x014a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x014a('0x7'));var jayson=require(_0x014a('0x8'));var client=jayson[_0x014a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a61ac,_0x11b8ce,_0x6d05f2){return new BPromise(function(_0x22f17c,_0x4d943b){return client['request'](_0x5a61ac,_0x6d05f2)[_0x014a('0xa')](function(_0x4f5506){logger['info']('Integration,\x20%s,\x20%s',_0x11b8ce,'request\x20sent');logger[_0x014a('0xb')]('Integration,\x20%s,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'),JSON[_0x014a('0xd')](_0x4f5506));if(_0x4f5506['error']){if(_0x4f5506[_0x014a('0xe')][_0x014a('0xf')]===0x1f4){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x4d943b(_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);}logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x22f17c(_0x4f5506['error'][_0x014a('0x11')]);}else{logger[_0x014a('0x12')]('Integration,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'));_0x22f17c(_0x4f5506[_0x014a('0x13')]['message']);}})[_0x014a('0x14')](function(_0x17e4be){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x17e4be);_0x4d943b(_0x17e4be);});});}
\ No newline at end of file
+var _0x0b0e=['Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','debug'];(function(_0x26f1b2,_0x33d843){var _0x1624a4=function(_0x58dfb7){while(--_0x58dfb7){_0x26f1b2['push'](_0x26f1b2['shift']());}};_0x1624a4(++_0x33d843);}(_0x0b0e,0x187));var _0xe0b0=function(_0xf7bf02,_0x13da13){_0xf7bf02=_0xf7bf02-0x0;var _0x4f263f=_0x0b0e[_0xf7bf02];return _0x4f263f;};'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});function respondWithRpcPromise(_0x219b1c,_0x5cf9cc,_0x50be7f){return new BPromise(function(_0x11effc,_0x435060){return client[_0xe0b0('0xc')](_0x219b1c,_0x50be7f)[_0xe0b0('0xd')](function(_0x4c24f9){logger[_0xe0b0('0xe')](_0xe0b0('0xf'),_0x5cf9cc,'request\x20sent');logger[_0xe0b0('0x10')](_0xe0b0('0x11'),_0x5cf9cc,'request\x20sent',JSON[_0xe0b0('0x12')](_0x4c24f9));if(_0x4c24f9[_0xe0b0('0x13')]){if(_0x4c24f9[_0xe0b0('0x13')]['code']===0x1f4){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x435060(_0x4c24f9[_0xe0b0('0x13')]['message']);}logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x11effc(_0x4c24f9[_0xe0b0('0x13')]['message']);}else{logger[_0xe0b0('0xe')]('Integration,\x20%s,\x20%s',_0x5cf9cc,_0xe0b0('0x15'));_0x11effc(_0x4c24f9[_0xe0b0('0x16')]['message']);}})[_0xe0b0('0x17')](function(_0x4a4cc0){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4a4cc0);_0x435060(_0x4a4cc0);});});}
\ No newline at end of file
index 6f7044c..4d5f757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x9a825b,_0x35c63e){var _0x4e5706=function(_0x20e4f2){while(--_0x20e4f2){_0x9a825b['push'](_0x9a825b['shift']());}};_0x4e5706(++_0x35c63e);}(_0x187d,0x93));var _0xd187=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x187d[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0xd187('0x0'));var util=require('util');var path=require(_0xd187('0x1'));var timeout=require(_0xd187('0x2'));var express=require(_0xd187('0x3'));var router=express[_0xd187('0x4')]();var fs_extra=require(_0xd187('0x5'));var auth=require(_0xd187('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd187('0x7'));var controller=require(_0xd187('0x8'));router['get']('/',auth[_0xd187('0x9')](),controller[_0xd187('0xa')]);router[_0xd187('0xb')](_0xd187('0xc'),auth[_0xd187('0x9')](),controller[_0xd187('0xd')]);router[_0xd187('0xb')](_0xd187('0xe'),auth['isAuthenticated'](),controller[_0xd187('0xf')]);router[_0xd187('0x10')]('/',auth[_0xd187('0x9')](),controller[_0xd187('0x11')]);router[_0xd187('0x12')](_0xd187('0xe'),auth['isAuthenticated'](),controller[_0xd187('0x13')]);router[_0xd187('0x14')](_0xd187('0xe'),auth['isAuthenticated'](),controller[_0xd187('0x15')]);module[_0xd187('0x16')]=router;
\ No newline at end of file
+var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x3d827f,_0x25a1c0){var _0xb3007=function(_0x31b603){while(--_0x31b603){_0x3d827f['push'](_0x3d827f['shift']());}};_0xb3007(++_0x25a1c0);}(_0x4975,0x86));var _0x5497=function(_0x32c8ce,_0x598fa6){_0x32c8ce=_0x32c8ce-0x0;var _0x18f9c2=_0x4975[_0x32c8ce];return _0x18f9c2;};'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('0xf'),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 d629315..469d21d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6415=['SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM'];(function(_0x382f4b,_0x1db4bd){var _0x4317f0=function(_0x3eb770){while(--_0x3eb770){_0x382f4b['push'](_0x382f4b['shift']());}};_0x4317f0(++_0x1db4bd);}(_0x6415,0x1c6));var _0x5641=function(_0x17989d,_0x4e0de2){_0x17989d=_0x17989d-0x0;var _0x537438=_0x6415[_0x17989d];return _0x537438;};'use strict';var Sequelize=require(_0x5641('0x0'));module[_0x5641('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x5641('0x2')]},'ticketId':{'type':Sequelize[_0x5641('0x2')]},'integrationId':{'type':Sequelize[_0x5641('0x3')]},'contacts':{'type':Sequelize[_0x5641('0x2')]},'uniqueid':{'type':Sequelize[_0x5641('0x2')]},'calleridnum':{'type':Sequelize[_0x5641('0x2')]},'calleridname':{'type':Sequelize[_0x5641('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x5641('0x2')]},'membername':{'type':Sequelize[_0x5641('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x5641('0x4')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x5641('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x5641('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x5641('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x5641('0x4')]},'lastevent':{'type':Sequelize[_0x5641('0x2')]},'channel':{'type':Sequelize[_0x5641('0x2')]},'channelstate':{'type':Sequelize[_0x5641('0x3')]},'channelstatedesc':{'type':Sequelize[_0x5641('0x2')]},'connectedlinenum':{'type':Sequelize[_0x5641('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5641('0x2')]},'context':{'type':Sequelize[_0x5641('0x2')]},'exten':{'type':Sequelize[_0x5641('0x2')]},'priority':{'type':Sequelize[_0x5641('0x2')]},'destchannel':{'type':Sequelize[_0x5641('0x2')]},'destchannelstate':{'type':Sequelize[_0x5641('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x5641('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x5641('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x5641('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x5641('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x5641('0x2')]},'destcontext':{'type':Sequelize[_0x5641('0x2')]},'destexten':{'type':Sequelize[_0x5641('0x2')]},'destpriority':{'type':Sequelize[_0x5641('0x2')]},'destuniqueid':{'type':Sequelize[_0x5641('0x2')]},'messageId':{'type':Sequelize[_0x5641('0x2')]},'inReplyTo':{'type':Sequelize[_0x5641('0x2')]},'subject':{'type':Sequelize[_0x5641('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x5641('0x6')]},'html':{'type':Sequelize[_0x5641('0x6')]},'text':{'type':Sequelize[_0x5641('0x6')]},'status':{'type':Sequelize[_0x5641('0x7')]('SENT',_0x5641('0x8'),_0x5641('0x9'),_0x5641('0xa'))},'url':{'type':Sequelize[_0x5641('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x5641('0x3')]}};
\ No newline at end of file
+var _0x237f=['BOOLEAN','DATE','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0x237f,0x104));var _0xf237=function(_0x2aefff,_0x26a24b){_0x2aefff=_0x2aefff-0x0;var _0x4e4534=_0x237f[_0x2aefff];return _0x4e4534;};'use strict';var Sequelize=require(_0xf237('0x0'));module[_0xf237('0x1')]={'integration':{'type':Sequelize[_0xf237('0x2')]},'eventChannel':{'type':Sequelize[_0xf237('0x2')]},'exitStatus':{'type':Sequelize[_0xf237('0x2')]},'ticketId':{'type':Sequelize[_0xf237('0x2')]},'integrationId':{'type':Sequelize[_0xf237('0x3')]},'contacts':{'type':Sequelize[_0xf237('0x2')]},'uniqueid':{'type':Sequelize[_0xf237('0x2')]},'calleridnum':{'type':Sequelize[_0xf237('0x2')]},'calleridname':{'type':Sequelize[_0xf237('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xf237('0x2')]},'membername':{'type':Sequelize[_0xf237('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xf237('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xf237('0x5')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xf237('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf237('0x3')]},'reason':{'type':Sequelize[_0xf237('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xf237('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xf237('0x5')]},'agentdump':{'type':Sequelize[_0xf237('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf237('0x2')]},'channelstate':{'type':Sequelize[_0xf237('0x3')]},'channelstatedesc':{'type':Sequelize[_0xf237('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xf237('0x2')]},'context':{'type':Sequelize[_0xf237('0x2')]},'exten':{'type':Sequelize[_0xf237('0x2')]},'priority':{'type':Sequelize[_0xf237('0x2')]},'destchannel':{'type':Sequelize[_0xf237('0x2')]},'destchannelstate':{'type':Sequelize[_0xf237('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xf237('0x2')]},'destcalleridnum':{'type':Sequelize[_0xf237('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xf237('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf237('0x2')]},'destlanguage':{'type':Sequelize[_0xf237('0x2')]},'destaccountcode':{'type':Sequelize[_0xf237('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xf237('0x2')]},'destpriority':{'type':Sequelize[_0xf237('0x2')]},'destuniqueid':{'type':Sequelize[_0xf237('0x2')]},'messageId':{'type':Sequelize[_0xf237('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0xf237('0x2')]},'to':{'type':Sequelize[_0xf237('0x2')]},'cc':{'type':Sequelize[_0xf237('0x2')]},'attachment':{'type':Sequelize[_0xf237('0x6')]},'html':{'type':Sequelize[_0xf237('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0xf237('0x7')](_0xf237('0x8'),_0xf237('0x9'),_0xf237('0xa'),_0xf237('0xb'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0xf237('0x2')]},'appdata':{'type':Sequelize[_0xf237('0x2')]},'projectId':{'type':Sequelize[_0xf237('0x3')]}};
\ No newline at end of file
index 50bac7f..0f665f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ed3=['order','sort','pick','filter','VIRTUAL','includeAll','findAll','show','params','include','merge','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','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','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','IntegrationReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x16a786,_0x14a448){var _0xf881ef=function(_0x56e39e){while(--_0x56e39e){_0x16a786['push'](_0x16a786['shift']());}};_0xf881ef(++_0x14a448);}(_0x6ed3,0xfd));var _0x36ed=function(_0x5064a3,_0x5ec65c){_0x5064a3=_0x5064a3-0x0;var _0x1eade5=_0x6ed3[_0x5064a3];return _0x1eade5;};'use strict';var emlformat=require(_0x36ed('0x0'));var rimraf=require(_0x36ed('0x1'));var zipdir=require(_0x36ed('0x2'));var jsonpatch=require(_0x36ed('0x3'));var rp=require('request-promise');var moment=require(_0x36ed('0x4'));var BPromise=require(_0x36ed('0x5'));var Mustache=require(_0x36ed('0x6'));var util=require(_0x36ed('0x7'));var path=require(_0x36ed('0x8'));var sox=require(_0x36ed('0x9'));var csv=require(_0x36ed('0xa'));var ejs=require(_0x36ed('0xb'));var fs=require('fs');var fs_extra=require(_0x36ed('0xc'));var _=require(_0x36ed('0xd'));var squel=require('squel');var crypto=require(_0x36ed('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x36ed('0xf'));var toCsv=require(_0x36ed('0xa'));var querystring=require(_0x36ed('0x10'));var Papa=require(_0x36ed('0x11'));var Redis=require(_0x36ed('0x12'));var authService=require(_0x36ed('0x13'));var qs=require(_0x36ed('0x14'));var as=require(_0x36ed('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x36ed('0x16'))(_0x36ed('0x17'));var utils=require(_0x36ed('0x18'));var config=require(_0x36ed('0x19'));var licenseUtil=require(_0x36ed('0x1a'));var db=require(_0x36ed('0x1b'))['db'];function respondWithStatusCode(_0x75e3bd,_0x29306c){_0x29306c=_0x29306c||0xcc;return function(_0x410693){if(_0x410693){return _0x75e3bd[_0x36ed('0x1c')](_0x29306c);}return _0x75e3bd[_0x36ed('0x1d')](_0x29306c)[_0x36ed('0x1e')]();};}function respondWithResult(_0x3bf207,_0x302e0a){_0x302e0a=_0x302e0a||0xc8;return function(_0x16322b){if(_0x16322b){return _0x3bf207[_0x36ed('0x1d')](_0x302e0a)[_0x36ed('0x1f')](_0x16322b);}};}function respondWithFilteredResult(_0xc481e0,_0x2a86d3){return function(_0x380627){if(_0x380627){var _0x1327fb=typeof _0x2a86d3[_0x36ed('0x20')]===_0x36ed('0x21')&&typeof _0x2a86d3[_0x36ed('0x22')]===_0x36ed('0x21');var _0x43c892=_0x380627[_0x36ed('0x23')];var _0x5b1cec=_0x1327fb?0x0:_0x2a86d3[_0x36ed('0x20')];var _0x167e8c=_0x1327fb?_0x380627[_0x36ed('0x23')]:_0x2a86d3[_0x36ed('0x20')]+_0x2a86d3['limit'];var _0xa19711;if(_0x167e8c>=_0x43c892){_0x167e8c=_0x43c892;_0xa19711=0xc8;}else{_0xa19711=0xce;}_0xc481e0['status'](_0xa19711);return _0xc481e0[_0x36ed('0x24')]('Content-Range',_0x5b1cec+'-'+_0x167e8c+'/'+_0x43c892)[_0x36ed('0x1f')](_0x380627);}return null;};}function patchUpdates(_0x3e2845){return function(_0x572a96){try{jsonpatch[_0x36ed('0x25')](_0x572a96,_0x3e2845,!![]);}catch(_0x2398f9){return BPromise[_0x36ed('0x26')](_0x2398f9);}return _0x572a96[_0x36ed('0x27')]();};}function saveUpdates(_0xf0a73c,_0x3b1267){return function(_0x3b825d){if(_0x3b825d){return _0x3b825d[_0x36ed('0x28')](_0xf0a73c)[_0x36ed('0x29')](function(_0x4103dc){return _0x4103dc;});}return null;};}function removeEntity(_0x39f185,_0xacc709){return function(_0x58c7ae){if(_0x58c7ae){return _0x58c7ae[_0x36ed('0x2a')]()[_0x36ed('0x29')](function(){_0x39f185['status'](0xcc)[_0x36ed('0x1e')]();});}};}function handleEntityNotFound(_0x4167a1,_0x50164a){return function(_0x5753bc){if(!_0x5753bc){_0x4167a1[_0x36ed('0x1c')](0x194);}return _0x5753bc;};}function handleError(_0x29a575,_0x18c6cd){_0x18c6cd=_0x18c6cd||0x1f4;return function(_0x2203f1){logger[_0x36ed('0x2b')](_0x2203f1[_0x36ed('0x2c')]);if(_0x2203f1[_0x36ed('0x2d')]){delete _0x2203f1[_0x36ed('0x2d')];}_0x29a575[_0x36ed('0x1d')](_0x18c6cd)['send'](_0x2203f1);};}exports[_0x36ed('0x2e')]=function(_0x559b3b,_0x4aae8c){var _0x385266={},_0x3ba19d={},_0x2e5f2f={'count':0x0,'rows':[]};var _0x26b2fa=_[_0x36ed('0x2f')](db[_0x36ed('0x30')][_0x36ed('0x31')],function(_0x3aa70f){return{'name':_0x3aa70f[_0x36ed('0x32')],'type':_0x3aa70f[_0x36ed('0x33')][_0x36ed('0x34')]};});_0x3ba19d[_0x36ed('0x35')]=_[_0x36ed('0x2f')](_0x26b2fa,'name');_0x3ba19d[_0x36ed('0x36')]=_[_0x36ed('0x37')](_0x559b3b[_0x36ed('0x36')]);_0x3ba19d[_0x36ed('0x38')]=_[_0x36ed('0x39')](_0x3ba19d[_0x36ed('0x35')],_0x3ba19d[_0x36ed('0x36')]);_0x385266[_0x36ed('0x3a')]=_['intersection'](_0x3ba19d[_0x36ed('0x35')],qs[_0x36ed('0x3b')](_0x559b3b[_0x36ed('0x36')][_0x36ed('0x3b')]));_0x385266[_0x36ed('0x3a')]=_0x385266['attributes'][_0x36ed('0x3c')]?_0x385266[_0x36ed('0x3a')]:_0x3ba19d[_0x36ed('0x35')];if(!_0x559b3b[_0x36ed('0x36')][_0x36ed('0x3d')](_0x36ed('0x3e'))){_0x385266['limit']=qs[_0x36ed('0x22')](_0x559b3b[_0x36ed('0x36')][_0x36ed('0x22')]);_0x385266[_0x36ed('0x20')]=qs[_0x36ed('0x20')](_0x559b3b['query']['offset']);}_0x385266[_0x36ed('0x3f')]=qs[_0x36ed('0x40')](_0x559b3b['query']['sort']);_0x385266['where']=qs['filters'](_[_0x36ed('0x41')](_0x559b3b[_0x36ed('0x36')],_0x3ba19d[_0x36ed('0x38')]),_0x26b2fa);if(_0x559b3b[_0x36ed('0x36')][_0x36ed('0x42')]){_0x385266['where']=_['merge'](_0x385266['where'],{'$or':_[_0x36ed('0x2f')](_0x26b2fa,function(_0x20e9dd){if(_0x20e9dd[_0x36ed('0x33')]!==_0x36ed('0x43')){var _0x15add6={};_0x15add6[_0x20e9dd['name']]={'$like':'%'+_0x559b3b['query'][_0x36ed('0x42')]+'%'};return _0x15add6;}})});}_0x385266=_['merge']({},_0x385266,_0x559b3b['options']);var _0x24f4d4={'where':_0x385266['where']};return db[_0x36ed('0x30')][_0x36ed('0x23')](_0x24f4d4)[_0x36ed('0x29')](function(_0x5117c7){_0x2e5f2f[_0x36ed('0x23')]=_0x5117c7;if(_0x559b3b[_0x36ed('0x36')][_0x36ed('0x44')]){_0x385266['include']=[{'all':!![]}];}return db[_0x36ed('0x30')][_0x36ed('0x45')](_0x385266);})['then'](function(_0x306f9b){_0x2e5f2f['rows']=_0x306f9b;return _0x2e5f2f;})[_0x36ed('0x29')](respondWithFilteredResult(_0x4aae8c,_0x385266))['catch'](handleError(_0x4aae8c,null));};exports[_0x36ed('0x46')]=function(_0x1e2201,_0x29647d){var _0x48706f={'raw':![],'where':{'id':_0x1e2201[_0x36ed('0x47')]['id']}},_0x5aa889={};_0x5aa889['model']=_[_0x36ed('0x37')](db[_0x36ed('0x30')][_0x36ed('0x31')]);_0x5aa889[_0x36ed('0x36')]=_[_0x36ed('0x37')](_0x1e2201[_0x36ed('0x36')]);_0x5aa889[_0x36ed('0x38')]=_[_0x36ed('0x39')](_0x5aa889[_0x36ed('0x35')],_0x5aa889['query']);_0x48706f['attributes']=_[_0x36ed('0x39')](_0x5aa889[_0x36ed('0x35')],qs[_0x36ed('0x3b')](_0x1e2201['query'][_0x36ed('0x3b')]));_0x48706f[_0x36ed('0x3a')]=_0x48706f[_0x36ed('0x3a')]['length']?_0x48706f[_0x36ed('0x3a')]:_0x5aa889[_0x36ed('0x35')];if(_0x1e2201[_0x36ed('0x36')][_0x36ed('0x44')]){_0x48706f[_0x36ed('0x48')]=[{'all':!![]}];}_0x48706f=_[_0x36ed('0x49')]({},_0x48706f,_0x1e2201['options']);return db[_0x36ed('0x30')][_0x36ed('0x4a')](_0x48706f)[_0x36ed('0x29')](handleEntityNotFound(_0x29647d,null))[_0x36ed('0x29')](respondWithResult(_0x29647d,null))[_0x36ed('0x4b')](handleError(_0x29647d,null));};exports['create']=function(_0x55caad,_0x1ca3b8){return db[_0x36ed('0x30')][_0x36ed('0x4c')](_0x55caad[_0x36ed('0x4d')],{})[_0x36ed('0x29')](respondWithResult(_0x1ca3b8,0xc9))[_0x36ed('0x4b')](handleError(_0x1ca3b8,null));};exports[_0x36ed('0x28')]=function(_0xa8907d,_0x442255){if(_0xa8907d[_0x36ed('0x4d')]['id']){delete _0xa8907d[_0x36ed('0x4d')]['id'];}return db[_0x36ed('0x30')][_0x36ed('0x4a')]({'where':{'id':_0xa8907d['params']['id']}})[_0x36ed('0x29')](handleEntityNotFound(_0x442255,null))[_0x36ed('0x29')](saveUpdates(_0xa8907d[_0x36ed('0x4d')],null))[_0x36ed('0x29')](respondWithResult(_0x442255,null))['catch'](handleError(_0x442255,null));};exports[_0x36ed('0x2a')]=function(_0x1c39bc,_0x2534be){return db['IntegrationReport'][_0x36ed('0x4a')]({'where':{'id':_0x1c39bc['params']['id']}})[_0x36ed('0x29')](handleEntityNotFound(_0x2534be,null))[_0x36ed('0x29')](removeEntity(_0x2534be,null))['catch'](handleError(_0x2534be,null));};exports[_0x36ed('0x4e')]=function(_0x1c3f47,_0x3fa2a9){return db['IntegrationReport'][_0x36ed('0x4e')]()[_0x36ed('0x29')](respondWithResult(_0x3fa2a9,null))['catch'](handleError(_0x3fa2a9,null));};
\ No newline at end of file
+var _0xfd89=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','count','offset','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','IntegrationReport','fieldName','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','keys','create','body','find','destroy','describe','catch','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x209f41,_0x10d7c3){var _0x323b6f=function(_0x585b6a){while(--_0x585b6a){_0x209f41['push'](_0x209f41['shift']());}};_0x323b6f(++_0x10d7c3);}(_0xfd89,0x173));var _0x9fd8=function(_0x2808bb,_0x51869a){_0x2808bb=_0x2808bb-0x0;var _0x5be4bf=_0xfd89[_0x2808bb];return _0x5be4bf;};'use strict';var emlformat=require(_0x9fd8('0x0'));var rimraf=require(_0x9fd8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9fd8('0x2'));var rp=require('request-promise');var moment=require(_0x9fd8('0x3'));var BPromise=require(_0x9fd8('0x4'));var Mustache=require(_0x9fd8('0x5'));var util=require(_0x9fd8('0x6'));var path=require('path');var sox=require(_0x9fd8('0x7'));var csv=require(_0x9fd8('0x8'));var ejs=require(_0x9fd8('0x9'));var fs=require('fs');var fs_extra=require(_0x9fd8('0xa'));var _=require(_0x9fd8('0xb'));var squel=require(_0x9fd8('0xc'));var crypto=require(_0x9fd8('0xd'));var jsforce=require(_0x9fd8('0xe'));var deskjs=require(_0x9fd8('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9fd8('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9fd8('0x11'));var qs=require(_0x9fd8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9fd8('0x13'))(_0x9fd8('0x14'));var utils=require(_0x9fd8('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9fd8('0x16'));var db=require(_0x9fd8('0x17'))['db'];function respondWithStatusCode(_0x1fe927,_0x4905ad){_0x4905ad=_0x4905ad||0xcc;return function(_0x7887d0){if(_0x7887d0){return _0x1fe927[_0x9fd8('0x18')](_0x4905ad);}return _0x1fe927[_0x9fd8('0x19')](_0x4905ad)['end']();};}function respondWithResult(_0x282e2c,_0x248dd0){_0x248dd0=_0x248dd0||0xc8;return function(_0x19eeda){if(_0x19eeda){return _0x282e2c[_0x9fd8('0x19')](_0x248dd0)[_0x9fd8('0x1a')](_0x19eeda);}};}function respondWithFilteredResult(_0x73375d,_0x5edbd8){return function(_0x10a525){if(_0x10a525){var _0x3d8dee=typeof _0x5edbd8['offset']==='undefined'&&typeof _0x5edbd8[_0x9fd8('0x1b')]==='undefined';var _0x25ba80=_0x10a525[_0x9fd8('0x1c')];var _0x235676=_0x3d8dee?0x0:_0x5edbd8['offset'];var _0x439d3e=_0x3d8dee?_0x10a525['count']:_0x5edbd8[_0x9fd8('0x1d')]+_0x5edbd8[_0x9fd8('0x1b')];var _0x5baa3c;if(_0x439d3e>=_0x25ba80){_0x439d3e=_0x25ba80;_0x5baa3c=0xc8;}else{_0x5baa3c=0xce;}_0x73375d[_0x9fd8('0x19')](_0x5baa3c);return _0x73375d['set'](_0x9fd8('0x1e'),_0x235676+'-'+_0x439d3e+'/'+_0x25ba80)['json'](_0x10a525);}return null;};}function patchUpdates(_0x1c1751){return function(_0x2fa4e5){try{jsonpatch[_0x9fd8('0x1f')](_0x2fa4e5,_0x1c1751,!![]);}catch(_0x3544d1){return BPromise[_0x9fd8('0x20')](_0x3544d1);}return _0x2fa4e5[_0x9fd8('0x21')]();};}function saveUpdates(_0x10d61f,_0x5eed3f){return function(_0x52929b){if(_0x52929b){return _0x52929b[_0x9fd8('0x22')](_0x10d61f)['then'](function(_0x59c8bb){return _0x59c8bb;});}return null;};}function removeEntity(_0x159282,_0x2fdbcf){return function(_0x5dbf73){if(_0x5dbf73){return _0x5dbf73['destroy']()[_0x9fd8('0x23')](function(){_0x159282[_0x9fd8('0x19')](0xcc)[_0x9fd8('0x24')]();});}};}function handleEntityNotFound(_0x471163,_0x511131){return function(_0x1fccc0){if(!_0x1fccc0){_0x471163[_0x9fd8('0x18')](0x194);}return _0x1fccc0;};}function handleError(_0x161834,_0x3b4771){_0x3b4771=_0x3b4771||0x1f4;return function(_0x1d76c2){logger[_0x9fd8('0x25')](_0x1d76c2[_0x9fd8('0x26')]);if(_0x1d76c2[_0x9fd8('0x27')]){delete _0x1d76c2[_0x9fd8('0x27')];}_0x161834['status'](_0x3b4771)[_0x9fd8('0x28')](_0x1d76c2);};}exports[_0x9fd8('0x29')]=function(_0x495690,_0x35c734){var _0x50f4e3={},_0x2485ee={},_0x5db888={'count':0x0,'rows':[]};var _0x57ddce=_[_0x9fd8('0x2a')](db[_0x9fd8('0x2b')]['rawAttributes'],function(_0x16f4d8){return{'name':_0x16f4d8[_0x9fd8('0x2c')],'type':_0x16f4d8['type'][_0x9fd8('0x2d')]};});_0x2485ee[_0x9fd8('0x2e')]=_[_0x9fd8('0x2a')](_0x57ddce,_0x9fd8('0x27'));_0x2485ee['query']=_['keys'](_0x495690[_0x9fd8('0x2f')]);_0x2485ee['filters']=_['intersection'](_0x2485ee[_0x9fd8('0x2e')],_0x2485ee[_0x9fd8('0x2f')]);_0x50f4e3['attributes']=_[_0x9fd8('0x30')](_0x2485ee[_0x9fd8('0x2e')],qs[_0x9fd8('0x31')](_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x31')]));_0x50f4e3[_0x9fd8('0x32')]=_0x50f4e3[_0x9fd8('0x32')][_0x9fd8('0x33')]?_0x50f4e3[_0x9fd8('0x32')]:_0x2485ee['model'];if(!_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x34')](_0x9fd8('0x35'))){_0x50f4e3['limit']=qs[_0x9fd8('0x1b')](_0x495690['query'][_0x9fd8('0x1b')]);_0x50f4e3['offset']=qs[_0x9fd8('0x1d')](_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x1d')]);}_0x50f4e3['order']=qs[_0x9fd8('0x36')](_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x36')]);_0x50f4e3[_0x9fd8('0x37')]=qs['filters'](_[_0x9fd8('0x38')](_0x495690[_0x9fd8('0x2f')],_0x2485ee['filters']),_0x57ddce);if(_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x39')]){_0x50f4e3[_0x9fd8('0x37')]=_['merge'](_0x50f4e3[_0x9fd8('0x37')],{'$or':_[_0x9fd8('0x2a')](_0x57ddce,function(_0x1a822c){if(_0x1a822c[_0x9fd8('0x3a')]!==_0x9fd8('0x3b')){var _0x23b34f={};_0x23b34f[_0x1a822c[_0x9fd8('0x27')]]={'$like':'%'+_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x39')]+'%'};return _0x23b34f;}})});}_0x50f4e3=_[_0x9fd8('0x3c')]({},_0x50f4e3,_0x495690[_0x9fd8('0x3d')]);var _0x207286={'where':_0x50f4e3[_0x9fd8('0x37')]};return db[_0x9fd8('0x2b')][_0x9fd8('0x1c')](_0x207286)['then'](function(_0x2c75b8){_0x5db888[_0x9fd8('0x1c')]=_0x2c75b8;if(_0x495690[_0x9fd8('0x2f')][_0x9fd8('0x3e')]){_0x50f4e3[_0x9fd8('0x3f')]=[{'all':!![]}];}return db['IntegrationReport'][_0x9fd8('0x40')](_0x50f4e3);})[_0x9fd8('0x23')](function(_0x300c15){_0x5db888[_0x9fd8('0x41')]=_0x300c15;return _0x5db888;})[_0x9fd8('0x23')](respondWithFilteredResult(_0x35c734,_0x50f4e3))['catch'](handleError(_0x35c734,null));};exports[_0x9fd8('0x42')]=function(_0x295945,_0x279cde){var _0x96f10={'raw':![],'where':{'id':_0x295945[_0x9fd8('0x43')]['id']}},_0x36bdbf={};_0x36bdbf['model']=_['keys'](db['IntegrationReport'][_0x9fd8('0x44')]);_0x36bdbf['query']=_[_0x9fd8('0x45')](_0x295945[_0x9fd8('0x2f')]);_0x36bdbf['filters']=_[_0x9fd8('0x30')](_0x36bdbf[_0x9fd8('0x2e')],_0x36bdbf[_0x9fd8('0x2f')]);_0x96f10[_0x9fd8('0x32')]=_[_0x9fd8('0x30')](_0x36bdbf['model'],qs[_0x9fd8('0x31')](_0x295945[_0x9fd8('0x2f')]['fields']));_0x96f10['attributes']=_0x96f10[_0x9fd8('0x32')][_0x9fd8('0x33')]?_0x96f10[_0x9fd8('0x32')]:_0x36bdbf[_0x9fd8('0x2e')];if(_0x295945['query'][_0x9fd8('0x3e')]){_0x96f10['include']=[{'all':!![]}];}_0x96f10=_[_0x9fd8('0x3c')]({},_0x96f10,_0x295945[_0x9fd8('0x3d')]);return db[_0x9fd8('0x2b')]['find'](_0x96f10)[_0x9fd8('0x23')](handleEntityNotFound(_0x279cde,null))[_0x9fd8('0x23')](respondWithResult(_0x279cde,null))['catch'](handleError(_0x279cde,null));};exports['create']=function(_0x3c2bff,_0x2c42c7){return db['IntegrationReport'][_0x9fd8('0x46')](_0x3c2bff[_0x9fd8('0x47')],{})[_0x9fd8('0x23')](respondWithResult(_0x2c42c7,0xc9))['catch'](handleError(_0x2c42c7,null));};exports[_0x9fd8('0x22')]=function(_0x5d4230,_0x565550){if(_0x5d4230[_0x9fd8('0x47')]['id']){delete _0x5d4230[_0x9fd8('0x47')]['id'];}return db[_0x9fd8('0x2b')][_0x9fd8('0x48')]({'where':{'id':_0x5d4230[_0x9fd8('0x43')]['id']}})[_0x9fd8('0x23')](handleEntityNotFound(_0x565550,null))['then'](saveUpdates(_0x5d4230[_0x9fd8('0x47')],null))['then'](respondWithResult(_0x565550,null))['catch'](handleError(_0x565550,null));};exports[_0x9fd8('0x49')]=function(_0x56d984,_0x438957){return db[_0x9fd8('0x2b')]['find']({'where':{'id':_0x56d984[_0x9fd8('0x43')]['id']}})[_0x9fd8('0x23')](handleEntityNotFound(_0x438957,null))['then'](removeEntity(_0x438957,null))['catch'](handleError(_0x438957,null));};exports[_0x9fd8('0x4a')]=function(_0xb63b1,_0x37f515){return db['IntegrationReport'][_0x9fd8('0x4a')]()[_0x9fd8('0x23')](respondWithResult(_0x37f515,null))[_0x9fd8('0x4b')](handleError(_0x37f515,null));};
\ No newline at end of file
index f5d80ad..ff52c28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbca=['exports','define','IntegrationReport','util','../../config/logger','api','bluebird','request-promise','rimraf','./integrationReport.attributes'];(function(_0x160148,_0x5c0639){var _0x5d4a2c=function(_0x4e4317){while(--_0x4e4317){_0x160148['push'](_0x160148['shift']());}};_0x5d4a2c(++_0x5c0639);}(_0xcbca,0xf3));var _0xacbc=function(_0x5281b5,_0x11da97){_0x5281b5=_0x5281b5-0x0;var _0x2300cc=_0xcbca[_0x5281b5];return _0x2300cc;};'use strict';var _=require('lodash');var util=require(_0xacbc('0x0'));var logger=require(_0xacbc('0x1'))(_0xacbc('0x2'));var moment=require('moment');var BPromise=require(_0xacbc('0x3'));var rp=require(_0xacbc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xacbc('0x5'));var config=require('../../config/environment');var attributes=require(_0xacbc('0x6'));module[_0xacbc('0x7')]=function(_0x5dac27,_0x4a0179){return _0x5dac27[_0xacbc('0x8')](_0xacbc('0x9'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d11=['./integrationReport.attributes','exports','define','IntegrationReport','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x372f27,_0x1395fc){var _0x12b5f4=function(_0x461c8f){while(--_0x461c8f){_0x372f27['push'](_0x372f27['shift']());}};_0x12b5f4(++_0x1395fc);}(_0x6d11,0x70));var _0x16d1=function(_0x2b8c31,_0x1c23fc){_0x2b8c31=_0x2b8c31-0x0;var _0x40da08=_0x6d11[_0x2b8c31];return _0x40da08;};'use strict';var _=require(_0x16d1('0x0'));var util=require('util');var logger=require(_0x16d1('0x1'))(_0x16d1('0x2'));var moment=require(_0x16d1('0x3'));var BPromise=require(_0x16d1('0x4'));var rp=require(_0x16d1('0x5'));var fs=require('fs');var path=require(_0x16d1('0x6'));var rimraf=require('rimraf');var config=require(_0x16d1('0x7'));var attributes=require(_0x16d1('0x8'));module[_0x16d1('0x9')]=function(_0x4be6c6,_0x139204){return _0x4be6c6[_0x16d1('0xa')](_0x16d1('0xb'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b975be..c8ac454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x2ec806,_0x7f3355){var _0x25e206=function(_0x5e29d7){while(--_0x5e29d7){_0x2ec806['push'](_0x2ec806['shift']());}};_0x25e206(++_0x7f3355);}(_0xdb28,0x106));var _0x8db2=function(_0x92206a,_0xca6433){_0x92206a=_0x92206a-0x0;var _0x59713c=_0xdb28[_0x92206a];return _0x59713c;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x53ec,0x192));var _0xc53e=function(_0x4aa78a,_0x15c09c){_0x4aa78a=_0x4aa78a-0x0;var _0x444b3b=_0x53ec[_0x4aa78a];return _0x444b3b;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
index c6bd788..9b53d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e8=['create','addInterval','/:id/sub_intervals/create_many','addIntervals','update','delete','destroy','multer','util','path','express','fs-extra','../../config/environment','./interval.controller','get','index','/:id','isAuthenticated','show','/:id/sub_intervals','getIntervals','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07e8,0x10f));var _0x807e=function(_0x452427,_0x23a6ac){_0x452427=_0x452427-0x0;var _0x1f8c4a=_0x07e8[_0x452427];return _0x1f8c4a;};'use strict';var multer=require(_0x807e('0x0'));var util=require(_0x807e('0x1'));var path=require(_0x807e('0x2'));var timeout=require('connect-timeout');var express=require(_0x807e('0x3'));var router=express['Router']();var fs_extra=require(_0x807e('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x807e('0x5'));var controller=require(_0x807e('0x6'));router[_0x807e('0x7')]('/',auth['isAuthenticated'](),controller[_0x807e('0x8')]);router[_0x807e('0x7')](_0x807e('0x9'),auth[_0x807e('0xa')](),controller[_0x807e('0xb')]);router['get'](_0x807e('0xc'),auth[_0x807e('0xa')](),controller[_0x807e('0xd')]);router[_0x807e('0xe')]('/',auth[_0x807e('0xa')](),controller[_0x807e('0xf')]);router[_0x807e('0xe')](_0x807e('0xc'),auth[_0x807e('0xa')](),controller[_0x807e('0x10')]);router[_0x807e('0xe')](_0x807e('0x11'),auth[_0x807e('0xa')](),controller[_0x807e('0x12')]);router['put'](_0x807e('0x9'),auth[_0x807e('0xa')](),controller[_0x807e('0x13')]);router[_0x807e('0x14')](_0x807e('0x9'),auth[_0x807e('0xa')](),controller[_0x807e('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xc01b=['exports','multer','util','path','connect-timeout','Router','fs-extra','./interval.controller','get','/:id','isAuthenticated','show','/:id/sub_intervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete'];(function(_0x26a10d,_0xe5c001){var _0xf90201=function(_0x48535b){while(--_0x48535b){_0x26a10d['push'](_0x26a10d['shift']());}};_0xf90201(++_0xe5c001);}(_0xc01b,0x65));var _0xbc01=function(_0x2728c7,_0x187296){_0x2728c7=_0x2728c7-0x0;var _0xb52b9d=_0xc01b[_0x2728c7];return _0xb52b9d;};'use strict';var multer=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var path=require(_0xbc01('0x2'));var timeout=require(_0xbc01('0x3'));var express=require('express');var router=express[_0xbc01('0x4')]();var fs_extra=require(_0xbc01('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbc01('0x6'));router[_0xbc01('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xbc01('0x7')](_0xbc01('0x8'),auth[_0xbc01('0x9')](),controller[_0xbc01('0xa')]);router[_0xbc01('0x7')](_0xbc01('0xb'),auth[_0xbc01('0x9')](),controller['getIntervals']);router[_0xbc01('0xc')]('/',auth[_0xbc01('0x9')](),controller[_0xbc01('0xd')]);router[_0xbc01('0xc')](_0xbc01('0xb'),auth[_0xbc01('0x9')](),controller[_0xbc01('0xe')]);router[_0xbc01('0xc')](_0xbc01('0xf'),auth[_0xbc01('0x9')](),controller[_0xbc01('0x10')]);router[_0xbc01('0x11')](_0xbc01('0x8'),auth[_0xbc01('0x9')](),controller['update']);router[_0xbc01('0x12')](_0xbc01('0x8'),auth[_0xbc01('0x9')](),controller['destroy']);module[_0xbc01('0x13')]=router;
\ No newline at end of file
index 658a07c..6785e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd917=['exports','STRING','sequelize'];(function(_0xcee874,_0x48f5c9){var _0x1a7242=function(_0x2f1970){while(--_0x2f1970){_0xcee874['push'](_0xcee874['shift']());}};_0x1a7242(++_0x48f5c9);}(_0xd917,0x1d9));var _0x7d91=function(_0x1b4b77,_0x220206){_0x1b4b77=_0x1b4b77-0x0;var _0x17ece0=_0xd917[_0x1b4b77];return _0x17ece0;};'use strict';var Sequelize=require(_0x7d91('0x0'));module[_0x7d91('0x1')]={'name':{'type':Sequelize[_0x7d91('0x2')]},'description':{'type':Sequelize[_0x7d91('0x2')]},'interval':{'type':Sequelize[_0x7d91('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x21c1=['exports','STRING','sequelize'];(function(_0x38b541,_0x5526a3){var _0x2ddfe5=function(_0x5fd075){while(--_0x5fd075){_0x38b541['push'](_0x38b541['shift']());}};_0x2ddfe5(++_0x5526a3);}(_0x21c1,0x92));var _0x121c=function(_0x1afec1,_0x11d707){_0x1afec1=_0x1afec1-0x0;var _0x507489=_0x21c1[_0x1afec1];return _0x507489;};'use strict';var Sequelize=require(_0x121c('0x0'));module[_0x121c('0x1')]={'name':{'type':Sequelize[_0x121c('0x2')]},'description':{'type':Sequelize[_0x121c('0x2')]},'interval':{'type':Sequelize[_0x121c('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 0eb930b..29a66cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7dc=['Intervals','error','name','send','index','map','Interval','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','catch','show','params','includeAll','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','destroy','addInterval','IntervalId','findOne','getIntervals','addIntervals','sequelize','findAll','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','get'];(function(_0xa3463d,_0x32f8da){var _0x50fd67=function(_0xb984fd){while(--_0xb984fd){_0xa3463d['push'](_0xa3463d['shift']());}};_0x50fd67(++_0x32f8da);}(_0xd7dc,0x88));var _0xcd7d=function(_0x12019a,_0x407485){_0x12019a=_0x12019a-0x0;var _0x49520a=_0xd7dc[_0x12019a];return _0x49520a;};'use strict';var emlformat=require(_0xcd7d('0x0'));var rimraf=require(_0xcd7d('0x1'));var zipdir=require(_0xcd7d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcd7d('0x3'));var moment=require(_0xcd7d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcd7d('0x5'));var path=require(_0xcd7d('0x6'));var sox=require('sox');var csv=require(_0xcd7d('0x7'));var ejs=require(_0xcd7d('0x8'));var fs=require('fs');var fs_extra=require(_0xcd7d('0x9'));var _=require(_0xcd7d('0xa'));var squel=require(_0xcd7d('0xb'));var crypto=require(_0xcd7d('0xc'));var jsforce=require(_0xcd7d('0xd'));var deskjs=require(_0xcd7d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcd7d('0xf'));var Papa=require(_0xcd7d('0x10'));var Redis=require(_0xcd7d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcd7d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcd7d('0x13'));var logger=require(_0xcd7d('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xcd7d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xcd7d('0x16'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0xfe993c,_0x113c3a){_0x113c3a=_0x113c3a||0xcc;return function(_0x563252){if(_0x563252){return _0xfe993c[_0xcd7d('0x17')](_0x113c3a);}return _0xfe993c[_0xcd7d('0x18')](_0x113c3a)[_0xcd7d('0x19')]();};}function respondWithResult(_0xe3dc72,_0x13a674){_0x13a674=_0x13a674||0xc8;return function(_0x46c618){if(_0x46c618){return _0xe3dc72[_0xcd7d('0x18')](_0x13a674)[_0xcd7d('0x1a')](_0x46c618);}};}function respondWithFilteredResult(_0x5bfec9,_0x32f423){return function(_0x2f19ea){if(_0x2f19ea){var _0x541cbd=typeof _0x32f423[_0xcd7d('0x1b')]===_0xcd7d('0x1c')&&typeof _0x32f423['limit']===_0xcd7d('0x1c');var _0xd8053=_0x2f19ea[_0xcd7d('0x1d')];var _0x451977=_0x541cbd?0x0:_0x32f423[_0xcd7d('0x1b')];var _0xf8a10=_0x541cbd?_0x2f19ea[_0xcd7d('0x1d')]:_0x32f423[_0xcd7d('0x1b')]+_0x32f423[_0xcd7d('0x1e')];var _0xf6ffb6;if(_0xf8a10>=_0xd8053){_0xf8a10=_0xd8053;_0xf6ffb6=0xc8;}else{_0xf6ffb6=0xce;}_0x5bfec9['status'](_0xf6ffb6);return _0x5bfec9[_0xcd7d('0x1f')](_0xcd7d('0x20'),_0x451977+'-'+_0xf8a10+'/'+_0xd8053)['json'](_0x2f19ea);}return null;};}function patchUpdates(_0x3751f5){return function(_0x23624a){try{jsonpatch[_0xcd7d('0x21')](_0x23624a,_0x3751f5,!![]);}catch(_0x16105c){return BPromise[_0xcd7d('0x22')](_0x16105c);}return _0x23624a['save']();};}function saveUpdates(_0x3975a3,_0x5ad536){return function(_0x8ed80c){if(_0x8ed80c){return _0x8ed80c[_0xcd7d('0x23')](_0x3975a3)[_0xcd7d('0x24')](function(_0x111026){return _0x111026;});}return null;};}function removeEntity(_0x2efa8d,_0x22df9e){return function(_0x77d234){if(_0x77d234){return _0x77d234['destroy']()['then'](function(){var _0x42ba6c=_0x77d234[_0xcd7d('0x25')]({'plain':!![]});var _0x1e3bfe=_0xcd7d('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x1e3bfe,'resourceId':_0x42ba6c['id']}})['then'](function(){return _0x77d234;});})[_0xcd7d('0x24')](function(){_0x2efa8d[_0xcd7d('0x18')](0xcc)[_0xcd7d('0x19')]();});}};}function handleEntityNotFound(_0x5c015b,_0x3f4f7d){return function(_0x376e9e){if(!_0x376e9e){_0x5c015b[_0xcd7d('0x17')](0x194);}return _0x376e9e;};}function handleError(_0x49e00e,_0x18ef9a){_0x18ef9a=_0x18ef9a||0x1f4;return function(_0x4abf65){logger[_0xcd7d('0x27')](_0x4abf65['stack']);if(_0x4abf65[_0xcd7d('0x28')]){delete _0x4abf65[_0xcd7d('0x28')];}_0x49e00e[_0xcd7d('0x18')](_0x18ef9a)[_0xcd7d('0x29')](_0x4abf65);};}exports[_0xcd7d('0x2a')]=function(_0x42e13a,_0xeb30cd){var _0x1c505d={},_0x5735eb={},_0xcb12d2={'count':0x0,'rows':[]};var _0x266197=_[_0xcd7d('0x2b')](db[_0xcd7d('0x2c')]['rawAttributes'],function(_0x38df8c){return{'name':_0x38df8c[_0xcd7d('0x2d')],'type':_0x38df8c[_0xcd7d('0x2e')][_0xcd7d('0x2f')]};});_0x5735eb[_0xcd7d('0x30')]=_['map'](_0x266197,_0xcd7d('0x28'));_0x5735eb[_0xcd7d('0x31')]=_[_0xcd7d('0x32')](_0x42e13a['query']);_0x5735eb[_0xcd7d('0x33')]=_[_0xcd7d('0x34')](_0x5735eb[_0xcd7d('0x30')],_0x5735eb[_0xcd7d('0x31')]);_0x1c505d[_0xcd7d('0x35')]=_[_0xcd7d('0x34')](_0x5735eb[_0xcd7d('0x30')],qs['fields'](_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x36')]));_0x1c505d['attributes']=_0x1c505d[_0xcd7d('0x35')][_0xcd7d('0x37')]?_0x1c505d[_0xcd7d('0x35')]:_0x5735eb[_0xcd7d('0x30')];if(!_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x38')](_0xcd7d('0x39'))){_0x1c505d['limit']=qs['limit'](_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x1e')]);_0x1c505d[_0xcd7d('0x1b')]=qs[_0xcd7d('0x1b')](_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x1b')]);}_0x1c505d[_0xcd7d('0x3a')]=qs[_0xcd7d('0x3b')](_0x42e13a['query']['sort']);_0x1c505d[_0xcd7d('0x3c')]=qs[_0xcd7d('0x33')](_[_0xcd7d('0x3d')](_0x42e13a[_0xcd7d('0x31')],_0x5735eb[_0xcd7d('0x33')]),_0x266197);if(_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x3e')]){_0x1c505d[_0xcd7d('0x3c')]=_['merge'](_0x1c505d['where'],{'$or':_[_0xcd7d('0x2b')](_0x266197,function(_0x2bbbf1){if(_0x2bbbf1[_0xcd7d('0x2e')]!==_0xcd7d('0x3f')){var _0x478ad2={};_0x478ad2[_0x2bbbf1[_0xcd7d('0x28')]]={'$like':'%'+_0x42e13a['query']['filter']+'%'};return _0x478ad2;}})});}_0x1c505d=_[_0xcd7d('0x40')]({},_0x1c505d,_0x42e13a[_0xcd7d('0x41')]);var _0x51610c={'where':_0x1c505d[_0xcd7d('0x3c')]};return db[_0xcd7d('0x2c')][_0xcd7d('0x1d')](_0x51610c)[_0xcd7d('0x24')](function(_0x2b53c3){_0xcb12d2[_0xcd7d('0x1d')]=_0x2b53c3;if(_0x42e13a[_0xcd7d('0x31')]['includeAll']){_0x1c505d['include']=[{'all':!![]}];}return db['Interval']['findAll'](_0x1c505d);})['then'](function(_0x32d6ef){_0xcb12d2['rows']=_0x32d6ef;return _0xcb12d2;})['then'](respondWithFilteredResult(_0xeb30cd,_0x1c505d))[_0xcd7d('0x42')](handleError(_0xeb30cd,null));};exports[_0xcd7d('0x43')]=function(_0x572bda,_0x556116){var _0x39c9e1={'raw':!![],'where':{'id':_0x572bda[_0xcd7d('0x44')]['id']}},_0x27270f={};_0x27270f[_0xcd7d('0x30')]=_['keys'](db[_0xcd7d('0x2c')]['rawAttributes']);_0x27270f[_0xcd7d('0x31')]=_['keys'](_0x572bda[_0xcd7d('0x31')]);_0x27270f[_0xcd7d('0x33')]=_[_0xcd7d('0x34')](_0x27270f[_0xcd7d('0x30')],_0x27270f['query']);_0x39c9e1[_0xcd7d('0x35')]=_[_0xcd7d('0x34')](_0x27270f['model'],qs['fields'](_0x572bda[_0xcd7d('0x31')][_0xcd7d('0x36')]));_0x39c9e1['attributes']=_0x39c9e1[_0xcd7d('0x35')][_0xcd7d('0x37')]?_0x39c9e1[_0xcd7d('0x35')]:_0x27270f['model'];if(_0x572bda[_0xcd7d('0x31')][_0xcd7d('0x45')]){_0x39c9e1[_0xcd7d('0x46')]=[{'all':!![]}];}_0x39c9e1=_['merge']({},_0x39c9e1,_0x572bda['options']);return db[_0xcd7d('0x2c')]['find'](_0x39c9e1)[_0xcd7d('0x24')](handleEntityNotFound(_0x556116,null))[_0xcd7d('0x24')](respondWithResult(_0x556116,null))[_0xcd7d('0x42')](handleError(_0x556116,null));};exports[_0xcd7d('0x47')]=function(_0x22c701,_0x2c085d){return db[_0xcd7d('0x2c')]['create'](_0x22c701[_0xcd7d('0x48')],{})['then'](function(_0xaffe17){var _0x3b5305=_0x22c701[_0xcd7d('0x49')][_0xcd7d('0x25')]({'plain':!![]});if(!_0x3b5305)throw new Error(_0xcd7d('0x4a'));if(_0x3b5305[_0xcd7d('0x4b')]==='user'){var _0x4e04ee=_0xaffe17['get']({'plain':!![]});var _0x3a213d=_0xcd7d('0x26');return db['UserProfileSection']['find']({'where':{'name':_0x3a213d,'userProfileId':_0x3b5305['userProfileId']},'raw':!![]})[_0xcd7d('0x24')](function(_0x2a59f2){if(_0x2a59f2&&_0x2a59f2[_0xcd7d('0x4c')]===0x0){return db['UserProfileResource'][_0xcd7d('0x47')]({'name':_0x4e04ee['name'],'resourceId':_0x4e04ee['id'],'type':_0x2a59f2['name'],'sectionId':_0x2a59f2['id']},{})[_0xcd7d('0x24')](function(){return _0xaffe17;});}else{return _0xaffe17;}})[_0xcd7d('0x42')](function(_0x1edaea){logger[_0xcd7d('0x27')](_0xcd7d('0x4d'),_0x1edaea);throw _0x1edaea;});}return _0xaffe17;})['then'](respondWithResult(_0x2c085d,0xc9))[_0xcd7d('0x42')](handleError(_0x2c085d,null));};exports[_0xcd7d('0x23')]=function(_0x1d7e64,_0x4b3706){if(_0x1d7e64['body']['id']){delete _0x1d7e64['body']['id'];}return db[_0xcd7d('0x2c')][_0xcd7d('0x4e')]({'where':{'id':_0x1d7e64[_0xcd7d('0x44')]['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0x4b3706,null))[_0xcd7d('0x24')](saveUpdates(_0x1d7e64['body'],null))[_0xcd7d('0x24')](respondWithResult(_0x4b3706,null))[_0xcd7d('0x42')](handleError(_0x4b3706,null));};exports[_0xcd7d('0x4f')]=function(_0x3ee4b2,_0x257bf1){return db[_0xcd7d('0x2c')][_0xcd7d('0x4e')]({'where':{'id':_0x3ee4b2[_0xcd7d('0x44')]['id']}})['then'](handleEntityNotFound(_0x257bf1,null))['then'](removeEntity(_0x257bf1,null))[_0xcd7d('0x42')](handleError(_0x257bf1,null));};exports[_0xcd7d('0x50')]=function(_0x15a929,_0x445591,_0x198de9){if(_0x15a929[_0xcd7d('0x48')]['id']){delete _0x15a929[_0xcd7d('0x48')]['id'];}return db[_0xcd7d('0x2c')][_0xcd7d('0x4e')]({'where':{'id':_0x15a929[_0xcd7d('0x44')]['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0x445591,null))[_0xcd7d('0x24')](function(_0x11d863){if(_0x11d863){_0x15a929['body'][_0xcd7d('0x51')]=_0x11d863['id'];return db['Interval'][_0xcd7d('0x47')](_0x15a929[_0xcd7d('0x48')]);}})['then'](respondWithResult(_0x445591,null))[_0xcd7d('0x42')](handleError(_0x445591,null));};exports['getIntervals']=function(_0x5f4b36,_0x1afb2a,_0xb3331a){var _0x5bc9e8={};var _0x4058b7={};var _0x5346b0;var _0x4f0840;return db[_0xcd7d('0x2c')][_0xcd7d('0x52')]({'where':{'id':_0x5f4b36[_0xcd7d('0x44')]['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0x1afb2a,null))[_0xcd7d('0x24')](function(_0x22f6d7){if(_0x22f6d7){_0x5346b0=_0x22f6d7;_0x4058b7['model']=_['keys'](db[_0xcd7d('0x2c')]['rawAttributes']);_0x4058b7[_0xcd7d('0x31')]=_['keys'](_0x5f4b36['query']);_0x4058b7[_0xcd7d('0x33')]=_['intersection'](_0x4058b7[_0xcd7d('0x30')],_0x4058b7[_0xcd7d('0x31')]);_0x5bc9e8[_0xcd7d('0x35')]=_[_0xcd7d('0x34')](_0x4058b7[_0xcd7d('0x30')],qs['fields'](_0x5f4b36['query'][_0xcd7d('0x36')]));_0x5bc9e8[_0xcd7d('0x35')]=_0x5bc9e8[_0xcd7d('0x35')][_0xcd7d('0x37')]?_0x5bc9e8[_0xcd7d('0x35')]:_0x4058b7[_0xcd7d('0x30')];_0x5bc9e8['order']=qs[_0xcd7d('0x3b')](_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x3b')]);_0x5bc9e8[_0xcd7d('0x3c')]=qs[_0xcd7d('0x33')](_[_0xcd7d('0x3d')](_0x5f4b36[_0xcd7d('0x31')],_0x4058b7[_0xcd7d('0x33')]));if(_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x3e')]){_0x5bc9e8[_0xcd7d('0x3c')]=_['merge'](_0x5bc9e8[_0xcd7d('0x3c')],{'$or':_['map'](_0x5bc9e8[_0xcd7d('0x35')],function(_0x7f07a8){var _0x4faa83={};_0x4faa83[_0x7f07a8]={'$like':'%'+_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x3e')]+'%'};return _0x4faa83;})});}_0x5bc9e8=_[_0xcd7d('0x40')]({},_0x5bc9e8,_0x5f4b36[_0xcd7d('0x41')]);return _0x5346b0['getIntervals'](_0x5bc9e8);}})['then'](function(_0x2680a6){if(_0x2680a6){_0x4f0840=_0x2680a6[_0xcd7d('0x37')];if(!_0x5f4b36[_0xcd7d('0x31')]['hasOwnProperty']('nolimit')){_0x5bc9e8[_0xcd7d('0x1e')]=qs[_0xcd7d('0x1e')](_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x1e')]);_0x5bc9e8['offset']=qs[_0xcd7d('0x1b')](_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x1b')]);}return _0x5346b0[_0xcd7d('0x53')](_0x5bc9e8);}})['then'](function(_0x6def57){if(_0x6def57){return _0x6def57?{'count':_0x4f0840,'rows':_0x6def57}:null;}})[_0xcd7d('0x24')](respondWithResult(_0x1afb2a,null))[_0xcd7d('0x42')](handleError(_0x1afb2a,null));};exports[_0xcd7d('0x54')]=function(_0xbb9b09,_0xd18619,_0x6835d6){return db[_0xcd7d('0x2c')][_0xcd7d('0x52')]({'where':{'id':_0xbb9b09['params']['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0xd18619,null))[_0xcd7d('0x24')](function(_0x2113e3){if(_0x2113e3){return db[_0xcd7d('0x55')]['transaction'](function(_0x371646){return db[_0xcd7d('0x2c')]['destroy']({'where':{'IntervalId':_0xbb9b09[_0xcd7d('0x44')]['id']},'transaction':_0x371646})[_0xcd7d('0x24')](function(_0x4c6bfc){var _0x459dc1=_[_0xcd7d('0x2b')](_0xbb9b09[_0xcd7d('0x48')],function(_0x43080c){delete _0x43080c['id'];_0x43080c[_0xcd7d('0x51')]=_0xbb9b09[_0xcd7d('0x44')]['id'];return _0x43080c;});return db[_0xcd7d('0x2c')]['bulkCreate'](_0x459dc1,{'transaction':_0x371646});});})['then'](function(){return db[_0xcd7d('0x2c')][_0xcd7d('0x56')]({'where':{'IntervalId':_0xbb9b09['params']['id']}});});}})[_0xcd7d('0x24')](respondWithResult(_0xd18619,null))['catch'](handleError(_0xd18619,null));};
\ No newline at end of file
+var _0xf698=['options','addIntervals','sequelize','transaction','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/extensions/rewrite','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','then','get','Intervals','UserProfileResource','destroy','end','error','name','send','index','map','Interval','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','include','findAll','params','keys','catch','create','user','role','UserProfileSection','find','userProfileId','autoAssociation','update','body','addInterval','IntervalId','getIntervals','findOne'];(function(_0x38854e,_0x23cbc9){var _0x3f8415=function(_0x4e493e){while(--_0x4e493e){_0x38854e['push'](_0x38854e['shift']());}};_0x3f8415(++_0x23cbc9);}(_0xf698,0x171));var _0x8f69=function(_0x258fb0,_0x5362dc){_0x258fb0=_0x258fb0-0x0;var _0x4d1afe=_0xf698[_0x258fb0];return _0x4d1afe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8f69('0x0'));var zipdir=require(_0x8f69('0x1'));var jsonpatch=require(_0x8f69('0x2'));var rp=require(_0x8f69('0x3'));var moment=require(_0x8f69('0x4'));var BPromise=require(_0x8f69('0x5'));var Mustache=require(_0x8f69('0x6'));var util=require(_0x8f69('0x7'));var path=require(_0x8f69('0x8'));var sox=require(_0x8f69('0x9'));var csv=require('to-csv');var ejs=require(_0x8f69('0xa'));var fs=require('fs');var fs_extra=require(_0x8f69('0xb'));var _=require(_0x8f69('0xc'));var squel=require('squel');var crypto=require(_0x8f69('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8f69('0xe'));var toCsv=require(_0x8f69('0xf'));var querystring=require(_0x8f69('0x10'));var Papa=require(_0x8f69('0x11'));var Redis=require(_0x8f69('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x8f69('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8f69('0x14'));var logger=require(_0x8f69('0x15'))(_0x8f69('0x16'));var utils=require(_0x8f69('0x17'));var config=require(_0x8f69('0x18'));var licenseUtil=require(_0x8f69('0x19'));var db=require('../../mysqldb')['db'];var extensions=require(_0x8f69('0x1a'));function respondWithStatusCode(_0x4f23dd,_0x3f6981){_0x3f6981=_0x3f6981||0xcc;return function(_0x4d5865){if(_0x4d5865){return _0x4f23dd[_0x8f69('0x1b')](_0x3f6981);}return _0x4f23dd[_0x8f69('0x1c')](_0x3f6981)['end']();};}function respondWithResult(_0x507de2,_0xb5b55c){_0xb5b55c=_0xb5b55c||0xc8;return function(_0x3d3b8a){if(_0x3d3b8a){return _0x507de2[_0x8f69('0x1c')](_0xb5b55c)[_0x8f69('0x1d')](_0x3d3b8a);}};}function respondWithFilteredResult(_0x2969fe,_0x5b3143){return function(_0x8eeae6){if(_0x8eeae6){var _0x4ff991=typeof _0x5b3143[_0x8f69('0x1e')]==='undefined'&&typeof _0x5b3143[_0x8f69('0x1f')]===_0x8f69('0x20');var _0x410287=_0x8eeae6[_0x8f69('0x21')];var _0x52c780=_0x4ff991?0x0:_0x5b3143['offset'];var _0x4fa990=_0x4ff991?_0x8eeae6['count']:_0x5b3143['offset']+_0x5b3143[_0x8f69('0x1f')];var _0x26bef0;if(_0x4fa990>=_0x410287){_0x4fa990=_0x410287;_0x26bef0=0xc8;}else{_0x26bef0=0xce;}_0x2969fe[_0x8f69('0x1c')](_0x26bef0);return _0x2969fe[_0x8f69('0x22')](_0x8f69('0x23'),_0x52c780+'-'+_0x4fa990+'/'+_0x410287)[_0x8f69('0x1d')](_0x8eeae6);}return null;};}function patchUpdates(_0x40b180){return function(_0x550fb8){try{jsonpatch[_0x8f69('0x24')](_0x550fb8,_0x40b180,!![]);}catch(_0x2ac444){return BPromise['reject'](_0x2ac444);}return _0x550fb8[_0x8f69('0x25')]();};}function saveUpdates(_0x40059b,_0x350e9c){return function(_0x513814){if(_0x513814){return _0x513814['update'](_0x40059b)[_0x8f69('0x26')](function(_0x3716a1){return _0x3716a1;});}return null;};}function removeEntity(_0x9fb0dd,_0x268ddc){return function(_0x5f5399){if(_0x5f5399){return _0x5f5399['destroy']()[_0x8f69('0x26')](function(){var _0xa85ced=_0x5f5399[_0x8f69('0x27')]({'plain':!![]});var _0x4499e9=_0x8f69('0x28');return db[_0x8f69('0x29')][_0x8f69('0x2a')]({'where':{'type':_0x4499e9,'resourceId':_0xa85ced['id']}})[_0x8f69('0x26')](function(){return _0x5f5399;});})[_0x8f69('0x26')](function(){_0x9fb0dd[_0x8f69('0x1c')](0xcc)[_0x8f69('0x2b')]();});}};}function handleEntityNotFound(_0xbaf7fb,_0x35745b){return function(_0x6419ee){if(!_0x6419ee){_0xbaf7fb[_0x8f69('0x1b')](0x194);}return _0x6419ee;};}function handleError(_0x50e02e,_0x492ac4){_0x492ac4=_0x492ac4||0x1f4;return function(_0x54365c){logger[_0x8f69('0x2c')](_0x54365c['stack']);if(_0x54365c['name']){delete _0x54365c[_0x8f69('0x2d')];}_0x50e02e[_0x8f69('0x1c')](_0x492ac4)[_0x8f69('0x2e')](_0x54365c);};}exports[_0x8f69('0x2f')]=function(_0x9e449f,_0x23cdcf){var _0x5043b5={},_0x23a6c9={},_0x8ce5f4={'count':0x0,'rows':[]};var _0x1d235e=_[_0x8f69('0x30')](db[_0x8f69('0x31')][_0x8f69('0x32')],function(_0x334657){return{'name':_0x334657[_0x8f69('0x33')],'type':_0x334657['type'][_0x8f69('0x34')]};});_0x23a6c9[_0x8f69('0x35')]=_[_0x8f69('0x30')](_0x1d235e,_0x8f69('0x2d'));_0x23a6c9[_0x8f69('0x36')]=_['keys'](_0x9e449f['query']);_0x23a6c9[_0x8f69('0x37')]=_['intersection'](_0x23a6c9[_0x8f69('0x35')],_0x23a6c9[_0x8f69('0x36')]);_0x5043b5['attributes']=_[_0x8f69('0x38')](_0x23a6c9[_0x8f69('0x35')],qs[_0x8f69('0x39')](_0x9e449f[_0x8f69('0x36')][_0x8f69('0x39')]));_0x5043b5[_0x8f69('0x3a')]=_0x5043b5[_0x8f69('0x3a')][_0x8f69('0x3b')]?_0x5043b5[_0x8f69('0x3a')]:_0x23a6c9[_0x8f69('0x35')];if(!_0x9e449f['query'][_0x8f69('0x3c')](_0x8f69('0x3d'))){_0x5043b5['limit']=qs['limit'](_0x9e449f[_0x8f69('0x36')][_0x8f69('0x1f')]);_0x5043b5[_0x8f69('0x1e')]=qs['offset'](_0x9e449f[_0x8f69('0x36')][_0x8f69('0x1e')]);}_0x5043b5[_0x8f69('0x3e')]=qs[_0x8f69('0x3f')](_0x9e449f[_0x8f69('0x36')][_0x8f69('0x3f')]);_0x5043b5['where']=qs[_0x8f69('0x37')](_[_0x8f69('0x40')](_0x9e449f[_0x8f69('0x36')],_0x23a6c9[_0x8f69('0x37')]),_0x1d235e);if(_0x9e449f[_0x8f69('0x36')][_0x8f69('0x41')]){_0x5043b5[_0x8f69('0x42')]=_[_0x8f69('0x43')](_0x5043b5[_0x8f69('0x42')],{'$or':_[_0x8f69('0x30')](_0x1d235e,function(_0x48738e){if(_0x48738e['type']!=='VIRTUAL'){var _0x56f125={};_0x56f125[_0x48738e[_0x8f69('0x2d')]]={'$like':'%'+_0x9e449f[_0x8f69('0x36')][_0x8f69('0x41')]+'%'};return _0x56f125;}})});}_0x5043b5=_[_0x8f69('0x43')]({},_0x5043b5,_0x9e449f['options']);var _0xb1979e={'where':_0x5043b5[_0x8f69('0x42')]};return db[_0x8f69('0x31')][_0x8f69('0x21')](_0xb1979e)[_0x8f69('0x26')](function(_0x3d59c4){_0x8ce5f4[_0x8f69('0x21')]=_0x3d59c4;if(_0x9e449f['query']['includeAll']){_0x5043b5[_0x8f69('0x44')]=[{'all':!![]}];}return db[_0x8f69('0x31')][_0x8f69('0x45')](_0x5043b5);})[_0x8f69('0x26')](function(_0x91f710){_0x8ce5f4['rows']=_0x91f710;return _0x8ce5f4;})[_0x8f69('0x26')](respondWithFilteredResult(_0x23cdcf,_0x5043b5))['catch'](handleError(_0x23cdcf,null));};exports['show']=function(_0x2ef134,_0xd69b1b){var _0x511cdb={'raw':!![],'where':{'id':_0x2ef134[_0x8f69('0x46')]['id']}},_0x55f868={};_0x55f868[_0x8f69('0x35')]=_[_0x8f69('0x47')](db[_0x8f69('0x31')]['rawAttributes']);_0x55f868[_0x8f69('0x36')]=_['keys'](_0x2ef134[_0x8f69('0x36')]);_0x55f868[_0x8f69('0x37')]=_['intersection'](_0x55f868[_0x8f69('0x35')],_0x55f868[_0x8f69('0x36')]);_0x511cdb[_0x8f69('0x3a')]=_[_0x8f69('0x38')](_0x55f868['model'],qs[_0x8f69('0x39')](_0x2ef134[_0x8f69('0x36')][_0x8f69('0x39')]));_0x511cdb[_0x8f69('0x3a')]=_0x511cdb[_0x8f69('0x3a')][_0x8f69('0x3b')]?_0x511cdb['attributes']:_0x55f868[_0x8f69('0x35')];if(_0x2ef134[_0x8f69('0x36')]['includeAll']){_0x511cdb[_0x8f69('0x44')]=[{'all':!![]}];}_0x511cdb=_[_0x8f69('0x43')]({},_0x511cdb,_0x2ef134['options']);return db[_0x8f69('0x31')]['find'](_0x511cdb)[_0x8f69('0x26')](handleEntityNotFound(_0xd69b1b,null))[_0x8f69('0x26')](respondWithResult(_0xd69b1b,null))[_0x8f69('0x48')](handleError(_0xd69b1b,null));};exports[_0x8f69('0x49')]=function(_0x5be12a,_0x473b16){return db[_0x8f69('0x31')][_0x8f69('0x49')](_0x5be12a['body'],{})['then'](function(_0x3fd362){var _0x262197=_0x5be12a[_0x8f69('0x4a')]['get']({'plain':!![]});if(!_0x262197)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x262197[_0x8f69('0x4b')]===_0x8f69('0x4a')){var _0x469525=_0x3fd362[_0x8f69('0x27')]({'plain':!![]});var _0x546b87='Intervals';return db[_0x8f69('0x4c')][_0x8f69('0x4d')]({'where':{'name':_0x546b87,'userProfileId':_0x262197[_0x8f69('0x4e')]},'raw':!![]})[_0x8f69('0x26')](function(_0x45ac77){if(_0x45ac77&&_0x45ac77[_0x8f69('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x469525[_0x8f69('0x2d')],'resourceId':_0x469525['id'],'type':_0x45ac77[_0x8f69('0x2d')],'sectionId':_0x45ac77['id']},{})[_0x8f69('0x26')](function(){return _0x3fd362;});}else{return _0x3fd362;}})[_0x8f69('0x48')](function(_0x599823){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x599823);throw _0x599823;});}return _0x3fd362;})[_0x8f69('0x26')](respondWithResult(_0x473b16,0xc9))['catch'](handleError(_0x473b16,null));};exports[_0x8f69('0x50')]=function(_0x190e93,_0x2b5b59){if(_0x190e93[_0x8f69('0x51')]['id']){delete _0x190e93[_0x8f69('0x51')]['id'];}return db[_0x8f69('0x31')][_0x8f69('0x4d')]({'where':{'id':_0x190e93[_0x8f69('0x46')]['id']}})['then'](handleEntityNotFound(_0x2b5b59,null))[_0x8f69('0x26')](saveUpdates(_0x190e93[_0x8f69('0x51')],null))['then'](respondWithResult(_0x2b5b59,null))[_0x8f69('0x48')](handleError(_0x2b5b59,null));};exports['destroy']=function(_0x3ffadd,_0x428868){return db[_0x8f69('0x31')][_0x8f69('0x4d')]({'where':{'id':_0x3ffadd['params']['id']}})[_0x8f69('0x26')](handleEntityNotFound(_0x428868,null))[_0x8f69('0x26')](removeEntity(_0x428868,null))['catch'](handleError(_0x428868,null));};exports[_0x8f69('0x52')]=function(_0x3c7da3,_0x4213cb,_0x489963){if(_0x3c7da3[_0x8f69('0x51')]['id']){delete _0x3c7da3['body']['id'];}return db[_0x8f69('0x31')][_0x8f69('0x4d')]({'where':{'id':_0x3c7da3[_0x8f69('0x46')]['id']}})[_0x8f69('0x26')](handleEntityNotFound(_0x4213cb,null))['then'](function(_0x166c11){if(_0x166c11){_0x3c7da3[_0x8f69('0x51')][_0x8f69('0x53')]=_0x166c11['id'];return db[_0x8f69('0x31')][_0x8f69('0x49')](_0x3c7da3[_0x8f69('0x51')]);}})[_0x8f69('0x26')](respondWithResult(_0x4213cb,null))['catch'](handleError(_0x4213cb,null));};exports[_0x8f69('0x54')]=function(_0x32d211,_0xf7c1fb,_0x5aac9a){var _0xeca23d={};var _0x2de866={};var _0xedb9d2;var _0x20dc88;return db['Interval'][_0x8f69('0x55')]({'where':{'id':_0x32d211[_0x8f69('0x46')]['id']}})[_0x8f69('0x26')](handleEntityNotFound(_0xf7c1fb,null))[_0x8f69('0x26')](function(_0x27df44){if(_0x27df44){_0xedb9d2=_0x27df44;_0x2de866[_0x8f69('0x35')]=_['keys'](db[_0x8f69('0x31')][_0x8f69('0x32')]);_0x2de866['query']=_['keys'](_0x32d211[_0x8f69('0x36')]);_0x2de866[_0x8f69('0x37')]=_['intersection'](_0x2de866[_0x8f69('0x35')],_0x2de866[_0x8f69('0x36')]);_0xeca23d[_0x8f69('0x3a')]=_[_0x8f69('0x38')](_0x2de866[_0x8f69('0x35')],qs[_0x8f69('0x39')](_0x32d211['query'][_0x8f69('0x39')]));_0xeca23d[_0x8f69('0x3a')]=_0xeca23d[_0x8f69('0x3a')][_0x8f69('0x3b')]?_0xeca23d[_0x8f69('0x3a')]:_0x2de866['model'];_0xeca23d[_0x8f69('0x3e')]=qs['sort'](_0x32d211[_0x8f69('0x36')][_0x8f69('0x3f')]);_0xeca23d['where']=qs[_0x8f69('0x37')](_[_0x8f69('0x40')](_0x32d211[_0x8f69('0x36')],_0x2de866[_0x8f69('0x37')]));if(_0x32d211[_0x8f69('0x36')][_0x8f69('0x41')]){_0xeca23d['where']=_[_0x8f69('0x43')](_0xeca23d['where'],{'$or':_[_0x8f69('0x30')](_0xeca23d[_0x8f69('0x3a')],function(_0x4ed277){var _0x2dab13={};_0x2dab13[_0x4ed277]={'$like':'%'+_0x32d211[_0x8f69('0x36')][_0x8f69('0x41')]+'%'};return _0x2dab13;})});}_0xeca23d=_[_0x8f69('0x43')]({},_0xeca23d,_0x32d211[_0x8f69('0x56')]);return _0xedb9d2[_0x8f69('0x54')](_0xeca23d);}})[_0x8f69('0x26')](function(_0x3df421){if(_0x3df421){_0x20dc88=_0x3df421[_0x8f69('0x3b')];if(!_0x32d211['query'][_0x8f69('0x3c')](_0x8f69('0x3d'))){_0xeca23d['limit']=qs[_0x8f69('0x1f')](_0x32d211[_0x8f69('0x36')][_0x8f69('0x1f')]);_0xeca23d[_0x8f69('0x1e')]=qs['offset'](_0x32d211[_0x8f69('0x36')][_0x8f69('0x1e')]);}return _0xedb9d2[_0x8f69('0x54')](_0xeca23d);}})[_0x8f69('0x26')](function(_0x4d4010){if(_0x4d4010){return _0x4d4010?{'count':_0x20dc88,'rows':_0x4d4010}:null;}})[_0x8f69('0x26')](respondWithResult(_0xf7c1fb,null))['catch'](handleError(_0xf7c1fb,null));};exports[_0x8f69('0x57')]=function(_0x580c48,_0x5387b6,_0x43eec2){return db[_0x8f69('0x31')][_0x8f69('0x55')]({'where':{'id':_0x580c48[_0x8f69('0x46')]['id']}})['then'](handleEntityNotFound(_0x5387b6,null))['then'](function(_0x5a9015){if(_0x5a9015){return db[_0x8f69('0x58')][_0x8f69('0x59')](function(_0x2aa6aa){return db[_0x8f69('0x31')][_0x8f69('0x2a')]({'where':{'IntervalId':_0x580c48[_0x8f69('0x46')]['id']},'transaction':_0x2aa6aa})[_0x8f69('0x26')](function(_0x33e259){var _0x54f450=_[_0x8f69('0x30')](_0x580c48[_0x8f69('0x51')],function(_0xc1c4a7){delete _0xc1c4a7['id'];_0xc1c4a7[_0x8f69('0x53')]=_0x580c48[_0x8f69('0x46')]['id'];return _0xc1c4a7;});return db[_0x8f69('0x31')][_0x8f69('0x5a')](_0x54f450,{'transaction':_0x2aa6aa});});})[_0x8f69('0x26')](function(){return db[_0x8f69('0x31')]['findAll']({'where':{'IntervalId':_0x580c48[_0x8f69('0x46')]['id']}});});}})[_0x8f69('0x26')](respondWithResult(_0x5387b6,null))['catch'](handleError(_0x5387b6,null));};
\ No newline at end of file
index 83a3fdb..33cd469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa105=['../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x331af8,_0x186cfe){var _0xcc317e=function(_0x1f6baf){while(--_0x1f6baf){_0x331af8['push'](_0x331af8['shift']());}};_0xcc317e(++_0x186cfe);}(_0xa105,0xd8));var _0x5a10=function(_0x1df9bc,_0x299a8a){_0x1df9bc=_0x1df9bc-0x0;var _0x2c578e=_0xa105[_0x1df9bc];return _0x2c578e;};'use strict';var _=require(_0x5a10('0x0'));var util=require('util');var logger=require(_0x5a10('0x1'))(_0x5a10('0x2'));var moment=require(_0x5a10('0x3'));var BPromise=require('bluebird');var rp=require(_0x5a10('0x4'));var fs=require('fs');var path=require(_0x5a10('0x5'));var rimraf=require(_0x5a10('0x6'));var config=require(_0x5a10('0x7'));var attributes=require('./interval.attributes');var extensions=require(_0x5a10('0x8'));module[_0x5a10('0x9')]=function(_0x9ebdf9,_0x70d28){return _0x9ebdf9[_0x5a10('0xa')](_0x5a10('0xb'),attributes,{'tableName':_0x5a10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x31c58f,_0x476d55){extensions[_0x5a10('0xd')](_0x9ebdf9,_0x31c58f);},'afterBulkCreate':function(_0x1eb5c1,_0x2b1a66,_0x402446){_0x402446();extensions[_0x5a10('0xd')](_0x9ebdf9,_0x1eb5c1[0x0]);},'afterUpdate':function(_0x12f73b,_0x476414){extensions[_0x5a10('0xd')](_0x9ebdf9,_0x12f73b);},'afterDestroy':function(_0x573e20,_0x459b34){extensions[_0x5a10('0xd')](_0x9ebdf9,_0x573e20);}}});};
\ No newline at end of file
+var _0x9b85=['api','moment','bluebird','request-promise','./interval.attributes','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','util'];(function(_0x40b61c,_0x13015c){var _0x29ea9b=function(_0xfcadb6){while(--_0xfcadb6){_0x40b61c['push'](_0x40b61c['shift']());}};_0x29ea9b(++_0x13015c);}(_0x9b85,0xd7));var _0x59b8=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x9b85[_0x487b0c];return _0x1adbdc;};'use strict';var _=require('lodash');var util=require(_0x59b8('0x0'));var logger=require('../../config/logger')(_0x59b8('0x1'));var moment=require(_0x59b8('0x2'));var BPromise=require(_0x59b8('0x3'));var rp=require(_0x59b8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x59b8('0x5'));var extensions=require(_0x59b8('0x6'));module[_0x59b8('0x7')]=function(_0x1fc8c9,_0x200a6c){return _0x1fc8c9[_0x59b8('0x8')](_0x59b8('0x9'),attributes,{'tableName':_0x59b8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x548ff4,_0x598d6a){extensions['rewrite'](_0x1fc8c9,_0x548ff4);},'afterBulkCreate':function(_0x5c6e27,_0x37edf1,_0x3c9585){_0x3c9585();extensions[_0x59b8('0xb')](_0x1fc8c9,_0x5c6e27[0x0]);},'afterUpdate':function(_0x3daf72,_0x79e9b7){extensions[_0x59b8('0xb')](_0x1fc8c9,_0x3daf72);},'afterDestroy':function(_0x20ae6c,_0x1c3182){extensions['rewrite'](_0x1fc8c9,_0x20ae6c);}}});};
\ No newline at end of file
index 257fa3f..3202698 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(_0xab9f3d,_0xb336fa){var _0x5283bf=function(_0x505e6c){while(--_0x505e6c){_0xab9f3d['push'](_0xab9f3d['shift']());}};_0x5283bf(++_0xb336fa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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(_0x485abd,_0x32c7c1){var _0x3379f1=function(_0x36b528){while(--_0x36b528){_0x485abd['push'](_0x485abd['shift']());}};_0x3379f1(++_0x32c7c1);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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 5397af3..2fc379f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x1ceece,_0x253c49){var _0x1c79cd=function(_0x4559e6){while(--_0x4559e6){_0x1ceece['push'](_0x1ceece['shift']());}};_0x1c79cd(++_0x253c49);}(_0xdb28,0x106));var _0x8db2=function(_0x354453,_0x21a966){_0x354453=_0x354453-0x0;var _0x7ffb47=_0xdb28[_0x354453];return _0x7ffb47;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
+var _0x5f2f=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller','post'];(function(_0x47c28c,_0x52f17e){var _0x13c2ec=function(_0xf21752){while(--_0xf21752){_0x47c28c['push'](_0x47c28c['shift']());}};_0x13c2ec(++_0x52f17e);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2ce999,_0x38311c){_0x2ce999=_0x2ce999-0x0;var _0x2406df=_0x5f2f[_0x2ce999];return _0x2406df;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);module[_0xf5f2('0x7')]=router;
\ No newline at end of file
index f477990..cb48817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d4=['customfield_11501','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','POST','application/json','toString','base64','request','setEncoding','utf8','data','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','send','body','headers','x-forwarded-for','connection','socket','remoteAddress','bluebird','https','../../config/logger','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email'];(function(_0x569086,_0x33ee33){var _0x6af6ad=function(_0x2a8386){while(--_0x2a8386){_0x569086['push'](_0x569086['shift']());}};_0x6af6ad(++_0x33ee33);}(_0x85d4,0x1e4));var _0x485d=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x85d4[_0x55f8b4];return _0x2475f9;};'use strict';var BPromise=require(_0x485d('0x0'));var https=require(_0x485d('0x1'));var logger=require(_0x485d('0x2'))('api');var USERNAME=_0x485d('0x3');var PASSWORD=_0x485d('0x4');function openIssue(_0x243b61,_0x1c2299){var _0x1b71c3={'fields':{'project':{'key':_0x243b61[_0x485d('0x5')]||'MOTGUI'},'summary':(_0x243b61[_0x485d('0x6')]||_0x485d('0x7'))+_0x485d('0x8')+_0x243b61['ip'],'description':_0x243b61[_0x485d('0x9')]||JSON[_0x485d('0xa')](_0x243b61),'issuetype':{'name':_0x243b61[_0x485d('0xb')]||_0x485d('0xc')}}};_0x1b71c3[_0x485d('0xd')][_0x485d('0xe')]=_0x243b61[_0x485d('0xf')];_0x1b71c3['fields'][_0x485d('0x10')]=_0x243b61['oldToken'];_0x1b71c3['fields'][_0x485d('0x11')]=_0x243b61[_0x485d('0x12')];_0x1b71c3[_0x485d('0xd')][_0x485d('0x13')]=_0x243b61[_0x485d('0x14')];_0x1b71c3['fields'][_0x485d('0x15')]=_0x243b61[_0x485d('0x16')];_0x1b71c3[_0x485d('0xd')][_0x485d('0x17')]=_0x243b61['ip'];var _0x6986dd={'host':_0x485d('0x18'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x485d('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x485d('0x1a'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x485d('0x1b')](_0x485d('0x1c'))}};var _0xa9b676=JSON[_0x485d('0xa')](_0x1b71c3);var _0x3d8bf2=https[_0x485d('0x1d')](_0x6986dd,function(_0x28862f){_0x28862f[_0x485d('0x1e')](_0x485d('0x1f'));var _0x5a6f86='';_0x28862f['on'](_0x485d('0x20'),function(_0x16a924){_0x5a6f86+=_0x16a924;});_0x28862f['on']('end',function(){if(_0x1c2299){return _0x1c2299[_0x485d('0x21')](_0x28862f[_0x485d('0x22')])[_0x485d('0x23')](JSON[_0x485d('0x24')](_0x5a6f86));}});});_0x3d8bf2['on'](_0x485d('0x25'),function(_0x1da430){if(_0x1c2299){return _0x1c2299[_0x485d('0x21')](0x1f4)[_0x485d('0x23')]({'errors':[{'message':_0x485d('0x26'),'type':_0x485d('0x27')}]});}});_0x3d8bf2[_0x485d('0x28')](_0xa9b676);_0x3d8bf2[_0x485d('0x29')]();}exports[_0x485d('0x2a')]=openIssue;exports[_0x485d('0x2b')]=function(_0x51e1fd,_0xa15a50){_0x51e1fd[_0x485d('0x2c')]['ip']=_0x51e1fd[_0x485d('0x2d')][_0x485d('0x2e')]||_0x51e1fd[_0x485d('0x2f')]['remoteAddress']||_0x51e1fd[_0x485d('0x30')][_0x485d('0x31')]||_0x51e1fd[_0x485d('0x2f')]['socket']['remoteAddress'];return openIssue(_0x51e1fd[_0x485d('0x2c')],_0xa15a50);};
\ No newline at end of file
+var _0xab3b=['description','stringify','issuetype','Bug','customfield_11500','email','customfield_11501','fields','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','track.xcallymotion.com','POST','application/json','Basic\x20','base64','request','setEncoding','utf8','data','end','status','error','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','body','headers','connection','remoteAddress','socket','../../config/logger','api','support','MOTGUI','Report','\x20from\x20'];(function(_0x5d4116,_0x2aafc5){var _0x5cd415=function(_0x3b4012){while(--_0x3b4012){_0x5d4116['push'](_0x5d4116['shift']());}};_0x5cd415(++_0x2aafc5);}(_0xab3b,0xf6));var _0xbab3=function(_0x10fe6f,_0x452156){_0x10fe6f=_0x10fe6f-0x0;var _0x516add=_0xab3b[_0x10fe6f];return _0x516add;};'use strict';var BPromise=require('bluebird');var https=require('https');var logger=require(_0xbab3('0x0'))(_0xbab3('0x1'));var USERNAME=_0xbab3('0x2');var PASSWORD='3eAmWpBVP0';function openIssue(_0x3dbbf5,_0x2e21e9){var _0x38d76a={'fields':{'project':{'key':_0x3dbbf5['key']||_0xbab3('0x3')},'summary':(_0x3dbbf5['summary']||_0xbab3('0x4'))+_0xbab3('0x5')+_0x3dbbf5['ip'],'description':_0x3dbbf5[_0xbab3('0x6')]||JSON[_0xbab3('0x7')](_0x3dbbf5),'issuetype':{'name':_0x3dbbf5[_0xbab3('0x8')]||_0xbab3('0x9')}}};_0x38d76a['fields'][_0xbab3('0xa')]=_0x3dbbf5[_0xbab3('0xb')];_0x38d76a['fields'][_0xbab3('0xc')]=_0x3dbbf5['oldToken'];_0x38d76a[_0xbab3('0xd')][_0xbab3('0xe')]=_0x3dbbf5[_0xbab3('0xf')];_0x38d76a[_0xbab3('0xd')][_0xbab3('0x10')]=_0x3dbbf5[_0xbab3('0x11')];_0x38d76a['fields'][_0xbab3('0x12')]=_0x3dbbf5[_0xbab3('0x13')];_0x38d76a[_0xbab3('0xd')]['customfield_10102']=_0x3dbbf5['ip'];var _0x4a1cb9={'host':_0xbab3('0x14'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xbab3('0x15'),'timeout':0x4e20,'headers':{'Content-Type':_0xbab3('0x16'),'Authorization':_0xbab3('0x17')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0xbab3('0x18'))}};var _0x4b15b5=JSON['stringify'](_0x38d76a);var _0x358b5f=https[_0xbab3('0x19')](_0x4a1cb9,function(_0xb18089){_0xb18089[_0xbab3('0x1a')](_0xbab3('0x1b'));var _0x37fc36='';_0xb18089['on'](_0xbab3('0x1c'),function(_0x5e1049){_0x37fc36+=_0x5e1049;});_0xb18089['on'](_0xbab3('0x1d'),function(){if(_0x2e21e9){return _0x2e21e9[_0xbab3('0x1e')](_0xb18089['statusCode'])['json'](JSON['parse'](_0x37fc36));}});});_0x358b5f['on'](_0xbab3('0x1f'),function(_0xeb0096){if(_0x2e21e9){return _0x2e21e9['status'](0x1f4)[_0xbab3('0x20')]({'errors':[{'message':_0xbab3('0x21'),'type':_0xbab3('0x22')}]});}});_0x358b5f[_0xbab3('0x23')](_0x4b15b5);_0x358b5f[_0xbab3('0x1d')]();}exports[_0xbab3('0x24')]=openIssue;exports['send']=function(_0x234e1c,_0xabaf9c){_0x234e1c[_0xbab3('0x25')]['ip']=_0x234e1c[_0xbab3('0x26')]['x-forwarded-for']||_0x234e1c[_0xbab3('0x27')]['remoteAddress']||_0x234e1c['socket'][_0xbab3('0x28')]||_0x234e1c[_0xbab3('0x27')][_0xbab3('0x29')]['remoteAddress'];return openIssue(_0x234e1c[_0xbab3('0x25')],_0xabaf9c);};
\ No newline at end of file
index 5682510..772a3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x22b1d8,_0x566b63){var _0x380692=function(_0x145800){while(--_0x145800){_0x22b1d8['push'](_0x22b1d8['shift']());}};_0x380692(++_0x566b63);}(_0xe706,0xa3));var _0x6e70=function(_0x5234a6,_0x314a5d){_0x5234a6=_0x5234a6-0x0;var _0x1f8955=_0xe706[_0x5234a6];return _0x1f8955;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0x9f62=['../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','describe','post','/:id','delete','util','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x2bd861,_0x54cb3e){var _0x2a602e=function(_0x319786){while(--_0x319786){_0x2bd861['push'](_0x2bd861['shift']());}};_0x2a602e(++_0x54cb3e);}(_0x9f62,0x154));var _0x29f6=function(_0x493c19,_0x1f99cd){_0x493c19=_0x493c19-0x0;var _0x32aa61=_0x9f62[_0x493c19];return _0x32aa61;};'use strict';var multer=require('multer');var util=require(_0x29f6('0x0'));var path=require('path');var timeout=require(_0x29f6('0x1'));var express=require(_0x29f6('0x2'));var router=express[_0x29f6('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var controller=require(_0x29f6('0x6'));router[_0x29f6('0x7')]('/',auth['isAuthenticated'](),controller[_0x29f6('0x8')]);router[_0x29f6('0x7')](_0x29f6('0x9'),auth[_0x29f6('0xa')](),controller[_0x29f6('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x29f6('0xc')]('/',auth[_0x29f6('0xa')](),controller['create']);router['put'](_0x29f6('0xd'),auth[_0x29f6('0xa')](),controller['update']);router[_0x29f6('0xe')](_0x29f6('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5795563..a3f72c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x7a54,0x106));var _0x47a5=function(_0x2a5805,_0x5434b3){_0x2a5805=_0x2a5805-0x0;var _0x37f584=_0x7a54[_0x2a5805];return _0x37f584;};'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(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x7a54,0x106));var _0x47a5=function(_0x5365af,_0x3fde40){_0x5365af=_0x5365af-0x0;var _0x34ccdd=_0x7a54[_0x5365af];return _0x34ccdd;};'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 9e125b1..7aacc42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7e6=['json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','map','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','JscriptyAnswerReport','include','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x30b248,_0x16a6f5){var _0x394551=function(_0x41c9ba){while(--_0x41c9ba){_0x30b248['push'](_0x30b248['shift']());}};_0x394551(++_0x16a6f5);}(_0xa7e6,0x74));var _0x6a7e=function(_0x34882f,_0x601a99){_0x34882f=_0x34882f-0x0;var _0x455929=_0xa7e6[_0x34882f];return _0x455929;};'use strict';var emlformat=require(_0x6a7e('0x0'));var rimraf=require(_0x6a7e('0x1'));var zipdir=require(_0x6a7e('0x2'));var jsonpatch=require(_0x6a7e('0x3'));var rp=require(_0x6a7e('0x4'));var moment=require(_0x6a7e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6a7e('0x6'));var util=require(_0x6a7e('0x7'));var path=require(_0x6a7e('0x8'));var sox=require(_0x6a7e('0x9'));var csv=require(_0x6a7e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6a7e('0xb'));var _=require(_0x6a7e('0xc'));var squel=require(_0x6a7e('0xd'));var crypto=require(_0x6a7e('0xe'));var jsforce=require(_0x6a7e('0xf'));var deskjs=require(_0x6a7e('0x10'));var toCsv=require(_0x6a7e('0xa'));var querystring=require(_0x6a7e('0x11'));var Papa=require(_0x6a7e('0x12'));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(_0x6a7e('0x13'));var logger=require(_0x6a7e('0x14'))(_0x6a7e('0x15'));var utils=require(_0x6a7e('0x16'));var config=require(_0x6a7e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6a7e('0x18'))['db'];function respondWithStatusCode(_0x4754ef,_0x5c0c74){_0x5c0c74=_0x5c0c74||0xcc;return function(_0x50dcc1){if(_0x50dcc1){return _0x4754ef[_0x6a7e('0x19')](_0x5c0c74);}return _0x4754ef[_0x6a7e('0x1a')](_0x5c0c74)[_0x6a7e('0x1b')]();};}function respondWithResult(_0x374763,_0x4faca9){_0x4faca9=_0x4faca9||0xc8;return function(_0x3137bc){if(_0x3137bc){return _0x374763[_0x6a7e('0x1a')](_0x4faca9)[_0x6a7e('0x1c')](_0x3137bc);}};}function respondWithFilteredResult(_0x4576fe,_0x465566){return function(_0x4b0893){if(_0x4b0893){var _0x16c9a5=typeof _0x465566['offset']==='undefined'&&typeof _0x465566[_0x6a7e('0x1d')]==='undefined';var _0x1d2abb=_0x4b0893[_0x6a7e('0x1e')];var _0x470197=_0x16c9a5?0x0:_0x465566[_0x6a7e('0x1f')];var _0x20e90a=_0x16c9a5?_0x4b0893['count']:_0x465566['offset']+_0x465566['limit'];var _0x102e83;if(_0x20e90a>=_0x1d2abb){_0x20e90a=_0x1d2abb;_0x102e83=0xc8;}else{_0x102e83=0xce;}_0x4576fe[_0x6a7e('0x1a')](_0x102e83);return _0x4576fe[_0x6a7e('0x20')](_0x6a7e('0x21'),_0x470197+'-'+_0x20e90a+'/'+_0x1d2abb)[_0x6a7e('0x1c')](_0x4b0893);}return null;};}function patchUpdates(_0x35b0ff){return function(_0x42eccc){try{jsonpatch[_0x6a7e('0x22')](_0x42eccc,_0x35b0ff,!![]);}catch(_0x5d5cbf){return BPromise[_0x6a7e('0x23')](_0x5d5cbf);}return _0x42eccc[_0x6a7e('0x24')]();};}function saveUpdates(_0x4f53c5,_0x3e1e64){return function(_0x3d0971){if(_0x3d0971){return _0x3d0971[_0x6a7e('0x25')](_0x4f53c5)['then'](function(_0x40c7f6){return _0x40c7f6;});}return null;};}function removeEntity(_0xd045ca,_0x4ee914){return function(_0x18f5e2){if(_0x18f5e2){return _0x18f5e2['destroy']()[_0x6a7e('0x26')](function(){_0xd045ca[_0x6a7e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29db13,_0x956eb6){return function(_0x46a15f){if(!_0x46a15f){_0x29db13[_0x6a7e('0x19')](0x194);}return _0x46a15f;};}function handleError(_0x3498c5,_0x380f2f){_0x380f2f=_0x380f2f||0x1f4;return function(_0x573bdc){logger[_0x6a7e('0x27')](_0x573bdc[_0x6a7e('0x28')]);if(_0x573bdc[_0x6a7e('0x29')]){delete _0x573bdc[_0x6a7e('0x29')];}_0x3498c5[_0x6a7e('0x1a')](_0x380f2f)['send'](_0x573bdc);};}exports['index']=function(_0x8b0439,_0x2e86f8){var _0x2723d0={},_0x525376={},_0xa324d0={'count':0x0,'rows':[]};var _0x57e642=_[_0x6a7e('0x2a')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x15c2b8){return{'name':_0x15c2b8['fieldName'],'type':_0x15c2b8[_0x6a7e('0x2b')]['key']};});_0x525376['model']=_[_0x6a7e('0x2a')](_0x57e642,_0x6a7e('0x29'));_0x525376[_0x6a7e('0x2c')]=_[_0x6a7e('0x2d')](_0x8b0439[_0x6a7e('0x2c')]);_0x525376[_0x6a7e('0x2e')]=_[_0x6a7e('0x2f')](_0x525376[_0x6a7e('0x30')],_0x525376[_0x6a7e('0x2c')]);_0x2723d0[_0x6a7e('0x31')]=_[_0x6a7e('0x2f')](_0x525376[_0x6a7e('0x30')],qs['fields'](_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x32')]));_0x2723d0[_0x6a7e('0x31')]=_0x2723d0['attributes'][_0x6a7e('0x33')]?_0x2723d0[_0x6a7e('0x31')]:_0x525376[_0x6a7e('0x30')];if(!_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x34')](_0x6a7e('0x35'))){_0x2723d0['limit']=qs['limit'](_0x8b0439[_0x6a7e('0x2c')]['limit']);_0x2723d0[_0x6a7e('0x1f')]=qs[_0x6a7e('0x1f')](_0x8b0439['query']['offset']);}_0x2723d0['order']=qs[_0x6a7e('0x36')](_0x8b0439['query']['sort']);_0x2723d0['where']=qs['filters'](_[_0x6a7e('0x37')](_0x8b0439['query'],_0x525376[_0x6a7e('0x2e')]),_0x57e642);if(_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x38')]){_0x2723d0[_0x6a7e('0x39')]=_[_0x6a7e('0x3a')](_0x2723d0['where'],{'$or':_[_0x6a7e('0x2a')](_0x57e642,function(_0x1db4e3){if(_0x1db4e3['type']!==_0x6a7e('0x3b')){var _0x2f58ac={};_0x2f58ac[_0x1db4e3['name']]={'$like':'%'+_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x38')]+'%'};return _0x2f58ac;}})});}_0x2723d0=_[_0x6a7e('0x3a')]({},_0x2723d0,_0x8b0439[_0x6a7e('0x3c')]);var _0x2827f7={'where':_0x2723d0[_0x6a7e('0x39')]};return db[_0x6a7e('0x3d')][_0x6a7e('0x1e')](_0x2827f7)[_0x6a7e('0x26')](function(_0x27434a){_0xa324d0[_0x6a7e('0x1e')]=_0x27434a;if(_0x8b0439['query']['includeAll']){_0x2723d0[_0x6a7e('0x3e')]=[{'all':!![]}];}return db[_0x6a7e('0x3d')]['findAll'](_0x2723d0);})[_0x6a7e('0x26')](function(_0x46799d){_0xa324d0[_0x6a7e('0x3f')]=_0x46799d;return _0xa324d0;})[_0x6a7e('0x26')](respondWithFilteredResult(_0x2e86f8,_0x2723d0))[_0x6a7e('0x40')](handleError(_0x2e86f8,null));};exports[_0x6a7e('0x41')]=function(_0x3d7266,_0x14cae5){var _0x2a3d31={'raw':!![],'where':{'id':_0x3d7266[_0x6a7e('0x42')]['id']}},_0x247efb={};_0x247efb[_0x6a7e('0x30')]=_[_0x6a7e('0x2d')](db[_0x6a7e('0x3d')]['rawAttributes']);_0x247efb['query']=_[_0x6a7e('0x2d')](_0x3d7266[_0x6a7e('0x2c')]);_0x247efb[_0x6a7e('0x2e')]=_[_0x6a7e('0x2f')](_0x247efb[_0x6a7e('0x30')],_0x247efb[_0x6a7e('0x2c')]);_0x2a3d31[_0x6a7e('0x31')]=_[_0x6a7e('0x2f')](_0x247efb['model'],qs[_0x6a7e('0x32')](_0x3d7266['query'][_0x6a7e('0x32')]));_0x2a3d31[_0x6a7e('0x31')]=_0x2a3d31[_0x6a7e('0x31')][_0x6a7e('0x33')]?_0x2a3d31['attributes']:_0x247efb[_0x6a7e('0x30')];if(_0x3d7266[_0x6a7e('0x2c')][_0x6a7e('0x43')]){_0x2a3d31['include']=[{'all':!![]}];}_0x2a3d31=_[_0x6a7e('0x3a')]({},_0x2a3d31,_0x3d7266['options']);return db[_0x6a7e('0x3d')][_0x6a7e('0x44')](_0x2a3d31)[_0x6a7e('0x26')](handleEntityNotFound(_0x14cae5,null))[_0x6a7e('0x26')](respondWithResult(_0x14cae5,null))['catch'](handleError(_0x14cae5,null));};exports[_0x6a7e('0x45')]=function(_0x47369f,_0x188ab5){return db[_0x6a7e('0x3d')]['create'](_0x47369f[_0x6a7e('0x46')],{})['then'](respondWithResult(_0x188ab5,0xc9))[_0x6a7e('0x40')](handleError(_0x188ab5,null));};exports[_0x6a7e('0x25')]=function(_0x25c2bb,_0x4a7465){if(_0x25c2bb[_0x6a7e('0x46')]['id']){delete _0x25c2bb['body']['id'];}return db[_0x6a7e('0x3d')]['find']({'where':{'id':_0x25c2bb[_0x6a7e('0x42')]['id']}})[_0x6a7e('0x26')](handleEntityNotFound(_0x4a7465,null))[_0x6a7e('0x26')](saveUpdates(_0x25c2bb[_0x6a7e('0x46')],null))[_0x6a7e('0x26')](respondWithResult(_0x4a7465,null))[_0x6a7e('0x40')](handleError(_0x4a7465,null));};exports['destroy']=function(_0x3d4395,_0x54f72b){return db[_0x6a7e('0x3d')][_0x6a7e('0x44')]({'where':{'id':_0x3d4395['params']['id']}})['then'](handleEntityNotFound(_0x54f72b,null))[_0x6a7e('0x26')](removeEntity(_0x54f72b,null))[_0x6a7e('0x40')](handleError(_0x54f72b,null));};exports[_0x6a7e('0x47')]=function(_0x251076,_0x43f5ac){return db['JscriptyAnswerReport'][_0x6a7e('0x47')]()[_0x6a7e('0x26')](respondWithResult(_0x43f5ac,null))[_0x6a7e('0x40')](handleError(_0x43f5ac,null));};
\ No newline at end of file
+var _0x5353=['update','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','then','error','stack','name','send','index','map','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','type','VIRTUAL','filter','includeAll','JscriptyAnswerReport','findAll','rows','catch','show','params','include','create','body'];(function(_0x70fd53,_0x2a95a6){var _0x4b71c5=function(_0x4b349d){while(--_0x4b349d){_0x70fd53['push'](_0x70fd53['shift']());}};_0x4b71c5(++_0x2a95a6);}(_0x5353,0x12f));var _0x3535=function(_0x35ef59,_0xd693fe){_0x35ef59=_0x35ef59-0x0;var _0x4f68b4=_0x5353[_0x35ef59];return _0x4f68b4;};'use strict';var emlformat=require(_0x3535('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3535('0x1'));var jsonpatch=require(_0x3535('0x2'));var rp=require(_0x3535('0x3'));var moment=require(_0x3535('0x4'));var BPromise=require(_0x3535('0x5'));var Mustache=require(_0x3535('0x6'));var util=require(_0x3535('0x7'));var path=require(_0x3535('0x8'));var sox=require(_0x3535('0x9'));var csv=require(_0x3535('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3535('0xb'));var _=require('lodash');var squel=require(_0x3535('0xc'));var crypto=require(_0x3535('0xd'));var jsforce=require(_0x3535('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3535('0xa'));var querystring=require(_0x3535('0xf'));var Papa=require(_0x3535('0x10'));var Redis=require(_0x3535('0x11'));var authService=require(_0x3535('0x12'));var qs=require(_0x3535('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3535('0x14'));var logger=require(_0x3535('0x15'))('api');var utils=require(_0x3535('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3535('0x17'))['db'];function respondWithStatusCode(_0xff9aa8,_0xe7c052){_0xe7c052=_0xe7c052||0xcc;return function(_0x46b5c1){if(_0x46b5c1){return _0xff9aa8[_0x3535('0x18')](_0xe7c052);}return _0xff9aa8[_0x3535('0x19')](_0xe7c052)[_0x3535('0x1a')]();};}function respondWithResult(_0x5115bd,_0x2f4e64){_0x2f4e64=_0x2f4e64||0xc8;return function(_0x501016){if(_0x501016){return _0x5115bd[_0x3535('0x19')](_0x2f4e64)[_0x3535('0x1b')](_0x501016);}};}function respondWithFilteredResult(_0xf87404,_0x4c704f){return function(_0x1f18da){if(_0x1f18da){var _0x4b7c81=typeof _0x4c704f[_0x3535('0x1c')]==='undefined'&&typeof _0x4c704f['limit']===_0x3535('0x1d');var _0x222937=_0x1f18da[_0x3535('0x1e')];var _0x298235=_0x4b7c81?0x0:_0x4c704f[_0x3535('0x1c')];var _0x2a1705=_0x4b7c81?_0x1f18da[_0x3535('0x1e')]:_0x4c704f[_0x3535('0x1c')]+_0x4c704f[_0x3535('0x1f')];var _0x1fca4f;if(_0x2a1705>=_0x222937){_0x2a1705=_0x222937;_0x1fca4f=0xc8;}else{_0x1fca4f=0xce;}_0xf87404[_0x3535('0x19')](_0x1fca4f);return _0xf87404[_0x3535('0x20')]('Content-Range',_0x298235+'-'+_0x2a1705+'/'+_0x222937)['json'](_0x1f18da);}return null;};}function patchUpdates(_0xfea414){return function(_0x4e76c5){try{jsonpatch['apply'](_0x4e76c5,_0xfea414,!![]);}catch(_0x23f5b6){return BPromise[_0x3535('0x21')](_0x23f5b6);}return _0x4e76c5[_0x3535('0x22')]();};}function saveUpdates(_0x56db66,_0x52f0e3){return function(_0x3d73d2){if(_0x3d73d2){return _0x3d73d2['update'](_0x56db66)[_0x3535('0x23')](function(_0x542372){return _0x542372;});}return null;};}function removeEntity(_0x44fc44,_0x4d372e){return function(_0x450250){if(_0x450250){return _0x450250['destroy']()['then'](function(){_0x44fc44[_0x3535('0x19')](0xcc)[_0x3535('0x1a')]();});}};}function handleEntityNotFound(_0x5a25d1,_0x14e803){return function(_0x213f35){if(!_0x213f35){_0x5a25d1[_0x3535('0x18')](0x194);}return _0x213f35;};}function handleError(_0xefa28c,_0x51ba08){_0x51ba08=_0x51ba08||0x1f4;return function(_0x2bbe00){logger[_0x3535('0x24')](_0x2bbe00[_0x3535('0x25')]);if(_0x2bbe00[_0x3535('0x26')]){delete _0x2bbe00[_0x3535('0x26')];}_0xefa28c[_0x3535('0x19')](_0x51ba08)[_0x3535('0x27')](_0x2bbe00);};}exports[_0x3535('0x28')]=function(_0x4c993a,_0x167e64){var _0x17e2a0={},_0x4cf180={},_0x2594d7={'count':0x0,'rows':[]};var _0x2a84e0=_[_0x3535('0x29')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x3e8a1e){return{'name':_0x3e8a1e[_0x3535('0x2a')],'type':_0x3e8a1e['type'][_0x3535('0x2b')]};});_0x4cf180[_0x3535('0x2c')]=_[_0x3535('0x29')](_0x2a84e0,_0x3535('0x26'));_0x4cf180['query']=_[_0x3535('0x2d')](_0x4c993a[_0x3535('0x2e')]);_0x4cf180['filters']=_[_0x3535('0x2f')](_0x4cf180[_0x3535('0x2c')],_0x4cf180[_0x3535('0x2e')]);_0x17e2a0[_0x3535('0x30')]=_[_0x3535('0x2f')](_0x4cf180[_0x3535('0x2c')],qs[_0x3535('0x31')](_0x4c993a['query']['fields']));_0x17e2a0[_0x3535('0x30')]=_0x17e2a0[_0x3535('0x30')][_0x3535('0x32')]?_0x17e2a0[_0x3535('0x30')]:_0x4cf180[_0x3535('0x2c')];if(!_0x4c993a[_0x3535('0x2e')][_0x3535('0x33')](_0x3535('0x34'))){_0x17e2a0['limit']=qs[_0x3535('0x1f')](_0x4c993a[_0x3535('0x2e')][_0x3535('0x1f')]);_0x17e2a0[_0x3535('0x1c')]=qs[_0x3535('0x1c')](_0x4c993a[_0x3535('0x2e')]['offset']);}_0x17e2a0[_0x3535('0x35')]=qs['sort'](_0x4c993a[_0x3535('0x2e')][_0x3535('0x36')]);_0x17e2a0['where']=qs[_0x3535('0x37')](_[_0x3535('0x38')](_0x4c993a[_0x3535('0x2e')],_0x4cf180[_0x3535('0x37')]),_0x2a84e0);if(_0x4c993a['query']['filter']){_0x17e2a0[_0x3535('0x39')]=_[_0x3535('0x3a')](_0x17e2a0[_0x3535('0x39')],{'$or':_[_0x3535('0x29')](_0x2a84e0,function(_0x32d907){if(_0x32d907[_0x3535('0x3b')]!==_0x3535('0x3c')){var _0x396fd9={};_0x396fd9[_0x32d907[_0x3535('0x26')]]={'$like':'%'+_0x4c993a[_0x3535('0x2e')][_0x3535('0x3d')]+'%'};return _0x396fd9;}})});}_0x17e2a0=_[_0x3535('0x3a')]({},_0x17e2a0,_0x4c993a['options']);var _0x46aabb={'where':_0x17e2a0[_0x3535('0x39')]};return db['JscriptyAnswerReport'][_0x3535('0x1e')](_0x46aabb)[_0x3535('0x23')](function(_0x5c4c2f){_0x2594d7[_0x3535('0x1e')]=_0x5c4c2f;if(_0x4c993a[_0x3535('0x2e')][_0x3535('0x3e')]){_0x17e2a0['include']=[{'all':!![]}];}return db[_0x3535('0x3f')][_0x3535('0x40')](_0x17e2a0);})[_0x3535('0x23')](function(_0x5258cc){_0x2594d7[_0x3535('0x41')]=_0x5258cc;return _0x2594d7;})[_0x3535('0x23')](respondWithFilteredResult(_0x167e64,_0x17e2a0))[_0x3535('0x42')](handleError(_0x167e64,null));};exports[_0x3535('0x43')]=function(_0x6c896c,_0x139ed6){var _0x347777={'raw':!![],'where':{'id':_0x6c896c[_0x3535('0x44')]['id']}},_0x2d12cc={};_0x2d12cc[_0x3535('0x2c')]=_[_0x3535('0x2d')](db[_0x3535('0x3f')]['rawAttributes']);_0x2d12cc[_0x3535('0x2e')]=_['keys'](_0x6c896c[_0x3535('0x2e')]);_0x2d12cc['filters']=_[_0x3535('0x2f')](_0x2d12cc[_0x3535('0x2c')],_0x2d12cc[_0x3535('0x2e')]);_0x347777[_0x3535('0x30')]=_[_0x3535('0x2f')](_0x2d12cc['model'],qs[_0x3535('0x31')](_0x6c896c[_0x3535('0x2e')]['fields']));_0x347777[_0x3535('0x30')]=_0x347777[_0x3535('0x30')][_0x3535('0x32')]?_0x347777[_0x3535('0x30')]:_0x2d12cc[_0x3535('0x2c')];if(_0x6c896c[_0x3535('0x2e')]['includeAll']){_0x347777[_0x3535('0x45')]=[{'all':!![]}];}_0x347777=_[_0x3535('0x3a')]({},_0x347777,_0x6c896c['options']);return db[_0x3535('0x3f')]['find'](_0x347777)[_0x3535('0x23')](handleEntityNotFound(_0x139ed6,null))[_0x3535('0x23')](respondWithResult(_0x139ed6,null))[_0x3535('0x42')](handleError(_0x139ed6,null));};exports[_0x3535('0x46')]=function(_0x2d8769,_0x45eb1b){return db[_0x3535('0x3f')][_0x3535('0x46')](_0x2d8769[_0x3535('0x47')],{})[_0x3535('0x23')](respondWithResult(_0x45eb1b,0xc9))[_0x3535('0x42')](handleError(_0x45eb1b,null));};exports[_0x3535('0x48')]=function(_0x5c881d,_0x2bd81b){if(_0x5c881d[_0x3535('0x47')]['id']){delete _0x5c881d[_0x3535('0x47')]['id'];}return db['JscriptyAnswerReport']['find']({'where':{'id':_0x5c881d[_0x3535('0x44')]['id']}})[_0x3535('0x23')](handleEntityNotFound(_0x2bd81b,null))[_0x3535('0x23')](saveUpdates(_0x5c881d[_0x3535('0x47')],null))[_0x3535('0x23')](respondWithResult(_0x2bd81b,null))[_0x3535('0x42')](handleError(_0x2bd81b,null));};exports['destroy']=function(_0x1f17ed,_0x399f30){return db[_0x3535('0x3f')][_0x3535('0x49')]({'where':{'id':_0x1f17ed['params']['id']}})['then'](handleEntityNotFound(_0x399f30,null))['then'](removeEntity(_0x399f30,null))[_0x3535('0x42')](handleError(_0x399f30,null));};exports[_0x3535('0x4a')]=function(_0x10d4e6,_0x1c17f4){return db[_0x3535('0x3f')][_0x3535('0x4a')]()[_0x3535('0x23')](respondWithResult(_0x1c17f4,null))[_0x3535('0x42')](handleError(_0x1c17f4,null));};
\ No newline at end of file
index 1f54c64..339c9bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d77=['request-promise','path','rimraf','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','api','moment','bluebird'];(function(_0x2b6ef9,_0x172741){var _0x5a9e51=function(_0x1d5d38){while(--_0x1d5d38){_0x2b6ef9['push'](_0x2b6ef9['shift']());}};_0x5a9e51(++_0x172741);}(_0x0d77,0x158));var _0x70d7=function(_0x405a33,_0x5b204b){_0x405a33=_0x405a33-0x0;var _0x4ae606=_0x0d77[_0x405a33];return _0x4ae606;};'use strict';var _=require(_0x70d7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x70d7('0x1'));var moment=require(_0x70d7('0x2'));var BPromise=require(_0x70d7('0x3'));var rp=require(_0x70d7('0x4'));var fs=require('fs');var path=require(_0x70d7('0x5'));var rimraf=require(_0x70d7('0x6'));var config=require('../../config/environment');var attributes=require(_0x70d7('0x7'));module[_0x70d7('0x8')]=function(_0x2f91aa,_0x3588dc){return _0x2f91aa[_0x70d7('0x9')](_0x70d7('0xa'),attributes,{'tableName':_0x70d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0849=['JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x0849,0x1d6));var _0x9084=function(_0xf8f2cd,_0x5d8184){_0xf8f2cd=_0xf8f2cd-0x0;var _0x57f325=_0x0849[_0xf8f2cd];return _0x57f325;};'use strict';var _=require(_0x9084('0x0'));var util=require(_0x9084('0x1'));var logger=require(_0x9084('0x2'))(_0x9084('0x3'));var moment=require('moment');var BPromise=require(_0x9084('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9084('0x5'));var rimraf=require(_0x9084('0x6'));var config=require(_0x9084('0x7'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0x9084('0x8')]=function(_0x345e69,_0x82fdb7){return _0x345e69[_0x9084('0x9')](_0x9084('0xa'),attributes,{'tableName':_0x9084('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 73bc136..5c42148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1a5=['request\x20sent','debug','stringify','error','code','message','info','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x441424,_0x5c4774){var _0x2ebd0b=function(_0x181336){while(--_0x181336){_0x441424['push'](_0x441424['shift']());}};_0x2ebd0b(++_0x5c4774);}(_0xc1a5,0x1ec));var _0x5c1a=function(_0x5443ca,_0x5ad082){_0x5443ca=_0x5443ca-0x0;var _0x505ade=_0xc1a5[_0x5443ca];return _0x505ade;};'use strict';var _=require('lodash');var util=require(_0x5c1a('0x0'));var moment=require('moment');var BPromise=require(_0x5c1a('0x1'));var rs=require(_0x5c1a('0x2'));var fs=require('fs');var Redis=require(_0x5c1a('0x3'));var db=require(_0x5c1a('0x4'))['db'];var utils=require(_0x5c1a('0x5'));var logger=require(_0x5c1a('0x6'))(_0x5c1a('0x7'));var config=require(_0x5c1a('0x8'));var jayson=require(_0x5c1a('0x9'));var client=jayson[_0x5c1a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3bce6d,_0x58bfbf,_0x101938){return new BPromise(function(_0x36c22b,_0x1831a0){return client[_0x5c1a('0xb')](_0x3bce6d,_0x101938)[_0x5c1a('0xc')](function(_0x3e52ec){logger['info'](_0x5c1a('0xd'),_0x58bfbf,_0x5c1a('0xe'));logger[_0x5c1a('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x58bfbf,_0x5c1a('0xe'),JSON[_0x5c1a('0x10')](_0x3e52ec));if(_0x3e52ec[_0x5c1a('0x11')]){if(_0x3e52ec[_0x5c1a('0x11')][_0x5c1a('0x12')]===0x1f4){logger[_0x5c1a('0x11')](_0x5c1a('0xd'),_0x58bfbf,_0x3e52ec[_0x5c1a('0x11')]['message']);return _0x1831a0(_0x3e52ec[_0x5c1a('0x11')][_0x5c1a('0x13')]);}logger['error'](_0x5c1a('0xd'),_0x58bfbf,_0x3e52ec['error']['message']);return _0x36c22b(_0x3e52ec['error'][_0x5c1a('0x13')]);}else{logger[_0x5c1a('0x14')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x58bfbf,_0x5c1a('0xe'));_0x36c22b(_0x3e52ec[_0x5c1a('0x15')][_0x5c1a('0x13')]);}})[_0x5c1a('0x16')](function(_0x440eec){logger[_0x5c1a('0x11')](_0x5c1a('0xd'),_0x58bfbf,_0x440eec);_0x1831a0(_0x440eec);});});}
\ No newline at end of file
+var _0x3b9b=['error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','info','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','debug','request\x20sent','stringify'];(function(_0x1efb8e,_0x2c8fb1){var _0x5bf4ba=function(_0x359653){while(--_0x359653){_0x1efb8e['push'](_0x1efb8e['shift']());}};_0x5bf4ba(++_0x2c8fb1);}(_0x3b9b,0x8a));var _0xb3b9=function(_0x1d7922,_0x555e36){_0x1d7922=_0x1d7922-0x0;var _0x5d15ff=_0x3b9b[_0x1d7922];return _0x5d15ff;};'use strict';var _=require(_0xb3b9('0x0'));var util=require(_0xb3b9('0x1'));var moment=require(_0xb3b9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb3b9('0x3'));var db=require(_0xb3b9('0x4'))['db'];var utils=require(_0xb3b9('0x5'));var logger=require(_0xb3b9('0x6'))('rpc');var config=require(_0xb3b9('0x7'));var jayson=require(_0xb3b9('0x8'));var client=jayson['client'][_0xb3b9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d49d4,_0x1d03a4,_0x46aee6){return new BPromise(function(_0x1c0c76,_0x21a033){return client['request'](_0x4d49d4,_0x46aee6)[_0xb3b9('0xa')](function(_0x428d7f){logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x1d03a4,'request\x20sent');logger[_0xb3b9('0xb')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x1d03a4,_0xb3b9('0xc'),JSON[_0xb3b9('0xd')](_0x428d7f));if(_0x428d7f[_0xb3b9('0xe')]){if(_0x428d7f['error'][_0xb3b9('0xf')]===0x1f4){logger[_0xb3b9('0xe')](_0xb3b9('0x10'),_0x1d03a4,_0x428d7f[_0xb3b9('0xe')][_0xb3b9('0x11')]);return _0x21a033(_0x428d7f[_0xb3b9('0xe')][_0xb3b9('0x11')]);}logger[_0xb3b9('0xe')](_0xb3b9('0x10'),_0x1d03a4,_0x428d7f[_0xb3b9('0xe')][_0xb3b9('0x11')]);return _0x1c0c76(_0x428d7f['error'][_0xb3b9('0x11')]);}else{logger[_0xb3b9('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x1d03a4,_0xb3b9('0xc'));_0x1c0c76(_0x428d7f['result'][_0xb3b9('0x11')]);}})['catch'](function(_0xaa9a09){logger['error'](_0xb3b9('0x10'),_0x1d03a4,_0xaa9a09);_0x21a033(_0xaa9a09);});});}
\ No newline at end of file
index a6a01a1..6f1054f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3d=['/:id/summary','30s','getSummary','post','create','/:id/clone','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/:id','show','get','/:id/sessions','getSessions','/:id/answers','getAnswers'];(function(_0x517183,_0x3d35a3){var _0x32f908=function(_0x5ad8eb){while(--_0x5ad8eb){_0x517183['push'](_0x517183['shift']());}};_0x32f908(++_0x3d35a3);}(_0xeb3d,0x15a));var _0xdeb3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xeb3d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xdeb3('0x0'));var util=require(_0xdeb3('0x1'));var path=require(_0xdeb3('0x2'));var timeout=require(_0xdeb3('0x3'));var express=require(_0xdeb3('0x4'));var router=express[_0xdeb3('0x5')]();var fs_extra=require(_0xdeb3('0x6'));var auth=require(_0xdeb3('0x7'));var interaction=require(_0xdeb3('0x8'));var config=require(_0xdeb3('0x9'));var controller=require('./jscriptyProject.controller');router['get']('/',auth[_0xdeb3('0xa')](),controller['index']);router['get'](_0xdeb3('0xb'),auth['isAuthenticated'](),controller[_0xdeb3('0xc')]);router[_0xdeb3('0xd')](_0xdeb3('0xe'),auth['isAuthenticated'](),controller[_0xdeb3('0xf')]);router[_0xdeb3('0xd')](_0xdeb3('0x10'),auth[_0xdeb3('0xa')](),controller[_0xdeb3('0x11')]);router[_0xdeb3('0xd')](_0xdeb3('0x12'),auth[_0xdeb3('0xa')](),timeout(_0xdeb3('0x13')),controller[_0xdeb3('0x14')]);router[_0xdeb3('0x15')]('/',auth[_0xdeb3('0xa')](),controller[_0xdeb3('0x16')]);router['post'](_0xdeb3('0x17'),auth[_0xdeb3('0xa')](),controller['clone']);router['put'](_0xdeb3('0xb'),auth[_0xdeb3('0xa')](),controller[_0xdeb3('0x18')]);router[_0xdeb3('0x19')](_0xdeb3('0xb'),auth['isAuthenticated'](),controller[_0xdeb3('0x1a')]);module[_0xdeb3('0x1b')]=router;
\ No newline at end of file
+var _0xdad7=['./jscriptyProject.controller','get','index','isAuthenticated','getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','/:id','update','delete','destroy','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3fa479,_0x3613aa){var _0x5ce5ba=function(_0x550e0e){while(--_0x550e0e){_0x3fa479['push'](_0x3fa479['shift']());}};_0x5ce5ba(++_0x3613aa);}(_0xdad7,0xf4));var _0x7dad=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xdad7[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x7dad('0x0'));var util=require(_0x7dad('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x7dad('0x2'));var auth=require(_0x7dad('0x3'));var interaction=require(_0x7dad('0x4'));var config=require(_0x7dad('0x5'));var controller=require(_0x7dad('0x6'));router[_0x7dad('0x7')]('/',auth['isAuthenticated'](),controller[_0x7dad('0x8')]);router['get']('/:id',auth[_0x7dad('0x9')](),controller['show']);router[_0x7dad('0x7')]('/:id/sessions',auth[_0x7dad('0x9')](),controller[_0x7dad('0xa')]);router[_0x7dad('0x7')](_0x7dad('0xb'),auth[_0x7dad('0x9')](),controller[_0x7dad('0xc')]);router[_0x7dad('0x7')](_0x7dad('0xd'),auth[_0x7dad('0x9')](),timeout(_0x7dad('0xe')),controller[_0x7dad('0xf')]);router[_0x7dad('0x10')]('/',auth[_0x7dad('0x9')](),controller[_0x7dad('0x11')]);router[_0x7dad('0x10')](_0x7dad('0x12'),auth['isAuthenticated'](),controller[_0x7dad('0x13')]);router[_0x7dad('0x14')](_0x7dad('0x15'),auth[_0x7dad('0x9')](),controller[_0x7dad('0x16')]);router[_0x7dad('0x17')](_0x7dad('0x15'),auth[_0x7dad('0x9')](),controller[_0x7dad('0x18')]);module['exports']=router;
\ No newline at end of file
index 3096ebc..48bbe46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9df=['TEXT','long','isObjectLike','setDataValue','formData','stringify','getDataValue','name','description','BOOLEAN','sequelize','lodash','exports','STRING'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xc9df,0x14c));var _0xfc9d=function(_0x212eaf,_0x8078a4){_0x212eaf=_0x212eaf-0x0;var _0xacaaa0=_0xc9df[_0x212eaf];return _0xacaaa0;};'use strict';var Sequelize=require(_0xfc9d('0x0'));var _=require(_0xfc9d('0x1'));var util=require('util');module[_0xfc9d('0x2')]={'name':{'type':Sequelize[_0xfc9d('0x3')],'unique':'name'},'description':{'type':Sequelize[_0xfc9d('0x3')]},'formData':{'type':Sequelize[_0xfc9d('0x4')](_0xfc9d('0x5')),'set':function(_0xcf7477){if(_[_0xfc9d('0x6')](_0xcf7477)){this[_0xfc9d('0x7')](_0xfc9d('0x8'),JSON[_0xfc9d('0x9')](_0xcf7477));}else if(_['isString'](_0xcf7477)){this[_0xfc9d('0x7')](_0xfc9d('0x8'),_0xcf7477);}else{this['setDataValue'](_0xfc9d('0x8'),util['format']('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0xfc9d('0xa')](_0xfc9d('0xb'))||'',this[_0xfc9d('0xa')](_0xfc9d('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xfc9d('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x72a9=['description','sequelize','lodash','util','exports','STRING','TEXT','long','setDataValue','formData','stringify','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue'];(function(_0x121411,_0x364511){var _0x5fd4d0=function(_0x1bcf17){while(--_0x1bcf17){_0x121411['push'](_0x121411['shift']());}};_0x5fd4d0(++_0x364511);}(_0x72a9,0x7f));var _0x972a=function(_0x56b926,_0x14f730){_0x56b926=_0x56b926-0x0;var _0x4f963f=_0x72a9[_0x56b926];return _0x4f963f;};'use strict';var Sequelize=require(_0x972a('0x0'));var _=require(_0x972a('0x1'));var util=require(_0x972a('0x2'));module[_0x972a('0x3')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize[_0x972a('0x4')]},'formData':{'type':Sequelize[_0x972a('0x5')](_0x972a('0x6')),'set':function(_0x4e4abf){if(_['isObjectLike'](_0x4e4abf)){this[_0x972a('0x7')](_0x972a('0x8'),JSON[_0x972a('0x9')](_0x4e4abf));}else if(_['isString'](_0x4e4abf)){this[_0x972a('0x7')](_0x972a('0x8'),_0x4e4abf);}else{this['setDataValue'](_0x972a('0x8'),util[_0x972a('0xa')](_0x972a('0xb'),this[_0x972a('0xc')]('name')||'',this[_0x972a('0xc')](_0x972a('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index baaf94f..c2547ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a4d=['include','findAll','catch','show','params','rawAttributes','keys','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','omit','UserProfileSection','autoAssociation','update','getSessions','hasOwnProperty','ProjectId','JscriptySessionReport','rows','findOne','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','name','send','map','JscriptyProject','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x3d07cc,_0x39be0b){var _0x144136=function(_0x2187d9){while(--_0x2187d9){_0x3d07cc['push'](_0x3d07cc['shift']());}};_0x144136(++_0x39be0b);}(_0x1a4d,0x12e));var _0xd1a4=function(_0x2b7177,_0x17b23f){_0x2b7177=_0x2b7177-0x0;var _0xf3efac=_0x1a4d[_0x2b7177];return _0xf3efac;};'use strict';var emlformat=require(_0xd1a4('0x0'));var rimraf=require(_0xd1a4('0x1'));var zipdir=require(_0xd1a4('0x2'));var jsonpatch=require(_0xd1a4('0x3'));var rp=require('request-promise');var moment=require(_0xd1a4('0x4'));var BPromise=require(_0xd1a4('0x5'));var Mustache=require(_0xd1a4('0x6'));var util=require(_0xd1a4('0x7'));var path=require(_0xd1a4('0x8'));var sox=require('sox');var csv=require(_0xd1a4('0x9'));var ejs=require(_0xd1a4('0xa'));var fs=require('fs');var fs_extra=require(_0xd1a4('0xb'));var _=require(_0xd1a4('0xc'));var squel=require(_0xd1a4('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd1a4('0xe'));var toCsv=require(_0xd1a4('0x9'));var querystring=require('querystring');var Papa=require(_0xd1a4('0xf'));var Redis=require(_0xd1a4('0x10'));var authService=require(_0xd1a4('0x11'));var qs=require(_0xd1a4('0x12'));var as=require(_0xd1a4('0x13'));var hardwareService=require(_0xd1a4('0x14'));var logger=require(_0xd1a4('0x15'))(_0xd1a4('0x16'));var utils=require(_0xd1a4('0x17'));var config=require(_0xd1a4('0x18'));var licenseUtil=require(_0xd1a4('0x19'));var db=require(_0xd1a4('0x1a'))['db'];function respondWithStatusCode(_0x518a95,_0x47f3f0){_0x47f3f0=_0x47f3f0||0xcc;return function(_0x28f41e){if(_0x28f41e){return _0x518a95[_0xd1a4('0x1b')](_0x47f3f0);}return _0x518a95['status'](_0x47f3f0)[_0xd1a4('0x1c')]();};}function respondWithResult(_0x5ae214,_0x24508d){_0x24508d=_0x24508d||0xc8;return function(_0x4d65fc){if(_0x4d65fc){return _0x5ae214[_0xd1a4('0x1d')](_0x24508d)[_0xd1a4('0x1e')](_0x4d65fc);}};}function respondWithFilteredResult(_0x28da5d,_0x104c05){return function(_0x2d2524){if(_0x2d2524){var _0x28b5b8=typeof _0x104c05['offset']===_0xd1a4('0x1f')&&typeof _0x104c05[_0xd1a4('0x20')]==='undefined';var _0x472708=_0x2d2524[_0xd1a4('0x21')];var _0xfbb192=_0x28b5b8?0x0:_0x104c05[_0xd1a4('0x22')];var _0x2e2009=_0x28b5b8?_0x2d2524[_0xd1a4('0x21')]:_0x104c05[_0xd1a4('0x22')]+_0x104c05['limit'];var _0x2bbd71;if(_0x2e2009>=_0x472708){_0x2e2009=_0x472708;_0x2bbd71=0xc8;}else{_0x2bbd71=0xce;}_0x28da5d[_0xd1a4('0x1d')](_0x2bbd71);return _0x28da5d['set'](_0xd1a4('0x23'),_0xfbb192+'-'+_0x2e2009+'/'+_0x472708)[_0xd1a4('0x1e')](_0x2d2524);}return null;};}function patchUpdates(_0x3cc430){return function(_0x23788e){try{jsonpatch[_0xd1a4('0x24')](_0x23788e,_0x3cc430,!![]);}catch(_0x1ae1f2){return BPromise[_0xd1a4('0x25')](_0x1ae1f2);}return _0x23788e[_0xd1a4('0x26')]();};}function saveUpdates(_0x2c1ee9,_0x2c0fac){return function(_0x40ff0d){if(_0x40ff0d){return _0x40ff0d['update'](_0x2c1ee9)[_0xd1a4('0x27')](function(_0x16355a){return _0x16355a;});}return null;};}function removeEntity(_0x436f52,_0x1de3a0){return function(_0x480c83){if(_0x480c83){return _0x480c83[_0xd1a4('0x28')]()[_0xd1a4('0x27')](function(){var _0x1d0f82=_0x480c83[_0xd1a4('0x29')]({'plain':!![]});var _0x40b654='Projects';return db[_0xd1a4('0x2a')][_0xd1a4('0x28')]({'where':{'type':_0x40b654,'resourceId':_0x1d0f82['id']}})['then'](function(){return _0x480c83;});})['then'](function(){_0x436f52[_0xd1a4('0x1d')](0xcc)[_0xd1a4('0x1c')]();});}};}function handleEntityNotFound(_0x3f2df1,_0x16bbee){return function(_0x2ccdce){if(!_0x2ccdce){_0x3f2df1['sendStatus'](0x194);}return _0x2ccdce;};}function handleError(_0x32a9cf,_0x4dbb02){_0x4dbb02=_0x4dbb02||0x1f4;return function(_0x43e949){logger[_0xd1a4('0x2b')](_0x43e949['stack']);if(_0x43e949[_0xd1a4('0x2c')]){delete _0x43e949[_0xd1a4('0x2c')];}_0x32a9cf[_0xd1a4('0x1d')](_0x4dbb02)[_0xd1a4('0x2d')](_0x43e949);};}exports['index']=function(_0x5d4d81,_0x210a1d){var _0x2f7116={},_0x2233de={},_0xee6318={'count':0x0,'rows':[]};var _0x2a0a47=_[_0xd1a4('0x2e')](db[_0xd1a4('0x2f')]['rawAttributes'],function(_0x582ebb){return{'name':_0x582ebb[_0xd1a4('0x30')],'type':_0x582ebb[_0xd1a4('0x31')][_0xd1a4('0x32')]};});_0x2233de[_0xd1a4('0x33')]=_[_0xd1a4('0x2e')](_0x2a0a47,_0xd1a4('0x2c'));_0x2233de['query']=_['keys'](_0x5d4d81[_0xd1a4('0x34')]);_0x2233de[_0xd1a4('0x35')]=_[_0xd1a4('0x36')](_0x2233de[_0xd1a4('0x33')],_0x2233de[_0xd1a4('0x34')]);_0x2f7116[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x2233de[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x5d4d81[_0xd1a4('0x34')]['fields']));_0x2f7116[_0xd1a4('0x37')]=_0x2f7116[_0xd1a4('0x37')]['length']?_0x2f7116['attributes']:_0x2233de[_0xd1a4('0x33')];if(!_0x5d4d81[_0xd1a4('0x34')]['hasOwnProperty'](_0xd1a4('0x39'))){_0x2f7116[_0xd1a4('0x20')]=qs['limit'](_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x20')]);_0x2f7116['offset']=qs[_0xd1a4('0x22')](_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x22')]);}_0x2f7116[_0xd1a4('0x3a')]=qs[_0xd1a4('0x3b')](_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x3b')]);_0x2f7116[_0xd1a4('0x3c')]=qs[_0xd1a4('0x35')](_[_0xd1a4('0x3d')](_0x5d4d81[_0xd1a4('0x34')],_0x2233de[_0xd1a4('0x35')]),_0x2a0a47);if(_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x3e')]){_0x2f7116[_0xd1a4('0x3c')]=_[_0xd1a4('0x3f')](_0x2f7116[_0xd1a4('0x3c')],{'$or':_[_0xd1a4('0x2e')](_0x2a0a47,function(_0x476c38){if(_0x476c38['type']!==_0xd1a4('0x40')){var _0x8e0c2d={};_0x8e0c2d[_0x476c38[_0xd1a4('0x2c')]]={'$like':'%'+_0x5d4d81['query'][_0xd1a4('0x3e')]+'%'};return _0x8e0c2d;}})});}_0x2f7116=_[_0xd1a4('0x3f')]({},_0x2f7116,_0x5d4d81[_0xd1a4('0x41')]);var _0xb2d4eb={'where':_0x2f7116[_0xd1a4('0x3c')]};return db[_0xd1a4('0x2f')]['count'](_0xb2d4eb)[_0xd1a4('0x27')](function(_0x59559d){_0xee6318[_0xd1a4('0x21')]=_0x59559d;if(_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x2f7116[_0xd1a4('0x43')]=[{'all':!![]}];}return db[_0xd1a4('0x2f')][_0xd1a4('0x44')](_0x2f7116);})[_0xd1a4('0x27')](function(_0x4c908b){_0xee6318['rows']=_0x4c908b;return _0xee6318;})[_0xd1a4('0x27')](respondWithFilteredResult(_0x210a1d,_0x2f7116))[_0xd1a4('0x45')](handleError(_0x210a1d,null));};exports[_0xd1a4('0x46')]=function(_0x4c8bf0,_0x3c27d9){var _0x16ca90={'raw':![],'where':{'id':_0x4c8bf0[_0xd1a4('0x47')]['id']}},_0x225772={};_0x225772[_0xd1a4('0x33')]=_['keys'](db['JscriptyProject'][_0xd1a4('0x48')]);_0x225772[_0xd1a4('0x34')]=_[_0xd1a4('0x49')](_0x4c8bf0[_0xd1a4('0x34')]);_0x225772[_0xd1a4('0x35')]=_[_0xd1a4('0x36')](_0x225772['model'],_0x225772[_0xd1a4('0x34')]);_0x16ca90['attributes']=_[_0xd1a4('0x36')](_0x225772[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x4c8bf0[_0xd1a4('0x34')][_0xd1a4('0x38')]));_0x16ca90[_0xd1a4('0x37')]=_0x16ca90[_0xd1a4('0x37')][_0xd1a4('0x4a')]?_0x16ca90[_0xd1a4('0x37')]:_0x225772[_0xd1a4('0x33')];if(_0x4c8bf0[_0xd1a4('0x34')]['includeAll']){_0x16ca90[_0xd1a4('0x43')]=[{'all':!![]}];}_0x16ca90=_[_0xd1a4('0x3f')]({},_0x16ca90,_0x4c8bf0[_0xd1a4('0x41')]);return db[_0xd1a4('0x2f')]['find'](_0x16ca90)['then'](handleEntityNotFound(_0x3c27d9,null))[_0xd1a4('0x27')](respondWithResult(_0x3c27d9,null))[_0xd1a4('0x45')](handleError(_0x3c27d9,null));};exports[_0xd1a4('0x4b')]=function(_0x2d8109,_0x1e34bf){return db['JscriptyProject']['create'](_0x2d8109[_0xd1a4('0x4c')],{})[_0xd1a4('0x27')](function(_0x332e53){var _0x1cfd0d=_0x2d8109[_0xd1a4('0x4d')][_0xd1a4('0x29')]({'plain':!![]});if(!_0x1cfd0d)throw new Error(_0xd1a4('0x4e'));if(_0x1cfd0d[_0xd1a4('0x4f')]===_0xd1a4('0x4d')){var _0x27d9cd=_0x332e53[_0xd1a4('0x29')]({'plain':!![]});var _0x1e1771=_0xd1a4('0x50');return db['UserProfileSection'][_0xd1a4('0x51')]({'where':{'name':_0x1e1771,'userProfileId':_0x1cfd0d[_0xd1a4('0x52')]},'raw':!![]})['then'](function(_0x91d11c){if(_0x91d11c&&_0x91d11c['autoAssociation']===0x0){return db[_0xd1a4('0x2a')]['create']({'name':_0x27d9cd['name'],'resourceId':_0x27d9cd['id'],'type':_0x91d11c[_0xd1a4('0x2c')],'sectionId':_0x91d11c['id']},{})['then'](function(){return _0x332e53;});}else{return _0x332e53;}})['catch'](function(_0x3da019){logger['error'](_0xd1a4('0x53'),_0x3da019);throw _0x3da019;});}return _0x332e53;})[_0xd1a4('0x27')](respondWithResult(_0x1e34bf,0xc9))[_0xd1a4('0x45')](handleError(_0x1e34bf,null));};exports['clone']=function(_0x28ef89,_0x3903aa){var _0x4da563={'where':{'id':_0x28ef89[_0xd1a4('0x47')]['id']}},_0x1f0756={};_0x1f0756[_0xd1a4('0x33')]=_[_0xd1a4('0x49')](db[_0xd1a4('0x2f')][_0xd1a4('0x48')]);_0x4da563[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x1f0756[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x28ef89[_0xd1a4('0x34')][_0xd1a4('0x38')]));_0x4da563[_0xd1a4('0x37')]=_0x4da563[_0xd1a4('0x37')][_0xd1a4('0x4a')]?_0x4da563[_0xd1a4('0x37')]:_0x1f0756[_0xd1a4('0x33')];if(_0x28ef89[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x4da563['include']=[{'all':!![]}];}_0x4da563=_[_0xd1a4('0x3f')]({},_0x4da563,_0x28ef89[_0xd1a4('0x41')]);return db[_0xd1a4('0x2f')][_0xd1a4('0x51')](_0x4da563)[_0xd1a4('0x27')](handleEntityNotFound(_0x3903aa,null))[_0xd1a4('0x27')](function(_0x9ade84){if(_0x9ade84){var _0xeab7be=_0x9ade84[_0xd1a4('0x29')]({'plain':!![]});_0xeab7be=qs['omit'](_0xeab7be,['id',_0xd1a4('0x54'),_0xd1a4('0x55')]);_0x28ef89[_0xd1a4('0x4c')]=_[_0xd1a4('0x56')](_0x28ef89[_0xd1a4('0x4c')],['id',_0xd1a4('0x54'),_0xd1a4('0x55')]);return db['JscriptyProject'][_0xd1a4('0x4b')](_[_0xd1a4('0x3f')](_0xeab7be,_0x28ef89[_0xd1a4('0x4c')]),{'include':_0x28ef89['query'][_0xd1a4('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x327e12){var _0x4bbb28=_0x28ef89[_0xd1a4('0x4d')]['get']({'plain':!![]});if(!_0x4bbb28)throw new Error(_0xd1a4('0x4e'));if(_0x4bbb28[_0xd1a4('0x4f')]===_0xd1a4('0x4d')){var _0x1442be=_0x327e12[_0xd1a4('0x29')]({'plain':!![]});var _0x41d7d2=_0xd1a4('0x50');return db[_0xd1a4('0x57')][_0xd1a4('0x51')]({'where':{'name':_0x41d7d2,'userProfileId':_0x4bbb28[_0xd1a4('0x52')]},'raw':!![]})[_0xd1a4('0x27')](function(_0x1e72bb){if(_0x1e72bb&&_0x1e72bb[_0xd1a4('0x58')]===0x0){return db[_0xd1a4('0x2a')][_0xd1a4('0x4b')]({'name':_0x1442be[_0xd1a4('0x2c')],'resourceId':_0x1442be['id'],'type':_0x1e72bb['name'],'sectionId':_0x1e72bb['id']},{})['then'](function(){return _0x327e12;});}else{return _0x327e12;}})['catch'](function(_0x1dee2c){logger[_0xd1a4('0x2b')](_0xd1a4('0x53'),_0x1dee2c);throw _0x1dee2c;});}return _0x327e12;});}})[_0xd1a4('0x27')](respondWithResult(_0x3903aa,0xc9))['catch'](handleError(_0x3903aa,null));};exports[_0xd1a4('0x59')]=function(_0x10eddc,_0x49fa9c){if(_0x10eddc[_0xd1a4('0x4c')]['id']){delete _0x10eddc[_0xd1a4('0x4c')]['id'];}return db[_0xd1a4('0x2f')]['find']({'where':{'id':_0x10eddc[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x49fa9c,null))[_0xd1a4('0x27')](saveUpdates(_0x10eddc['body'],null))[_0xd1a4('0x27')](respondWithResult(_0x49fa9c,null))['catch'](handleError(_0x49fa9c,null));};exports['destroy']=function(_0x2e0b01,_0x46fed6){return db[_0xd1a4('0x2f')]['find']({'where':{'id':_0x2e0b01[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x46fed6,null))['then'](removeEntity(_0x46fed6,null))[_0xd1a4('0x45')](handleError(_0x46fed6,null));};exports[_0xd1a4('0x5a')]=function(_0x75859,_0x5f2302,_0xa97492){var _0x4a1095={'raw':!![],'where':{}};var _0x1e3625={};var _0x54359f={'count':0x0,'rows':[]};return db[_0xd1a4('0x2f')]['findOne']({'where':{'id':_0x75859[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x5f2302,null))[_0xd1a4('0x27')](function(_0x5dfc3c){if(_0x5dfc3c){_0x1e3625[_0xd1a4('0x33')]=_[_0xd1a4('0x49')](db['JscriptySessionReport'][_0xd1a4('0x48')]);_0x1e3625['query']=_[_0xd1a4('0x49')](_0x75859['query']);_0x1e3625[_0xd1a4('0x35')]=_['intersection'](_0x1e3625[_0xd1a4('0x33')],_0x1e3625[_0xd1a4('0x34')]);_0x4a1095[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x1e3625[_0xd1a4('0x33')],qs['fields'](_0x75859['query'][_0xd1a4('0x38')]));_0x4a1095['attributes']=_0x4a1095[_0xd1a4('0x37')]['length']?_0x4a1095['attributes']:_0x1e3625[_0xd1a4('0x33')];if(!_0x75859[_0xd1a4('0x34')][_0xd1a4('0x5b')]('nolimit')){_0x4a1095['limit']=qs[_0xd1a4('0x20')](_0x75859[_0xd1a4('0x34')][_0xd1a4('0x20')]);_0x4a1095[_0xd1a4('0x22')]=qs[_0xd1a4('0x22')](_0x75859['query']['offset']);}_0x4a1095[_0xd1a4('0x3a')]=qs[_0xd1a4('0x3b')](_0x75859['query'][_0xd1a4('0x3b')]);_0x4a1095[_0xd1a4('0x3c')]=qs['filters'](_[_0xd1a4('0x3d')](_0x75859[_0xd1a4('0x34')],_0x1e3625[_0xd1a4('0x35')]));_0x4a1095[_0xd1a4('0x3c')][_0xd1a4('0x5c')]=_0x5dfc3c['id'];if(_0x75859[_0xd1a4('0x34')]['filter']){_0x4a1095[_0xd1a4('0x3c')]=_['merge'](_0x4a1095[_0xd1a4('0x3c')],{'$or':_['map'](_0x4a1095[_0xd1a4('0x37')],function(_0x5c7d8a){var _0xfbbcd6={};_0xfbbcd6[_0x5c7d8a]={'$like':'%'+_0x75859[_0xd1a4('0x34')][_0xd1a4('0x3e')]+'%'};return _0xfbbcd6;})});}_0x4a1095=_[_0xd1a4('0x3f')]({},_0x4a1095,_0x75859[_0xd1a4('0x41')]);return db[_0xd1a4('0x5d')][_0xd1a4('0x21')]({'where':_0x4a1095[_0xd1a4('0x3c')]})['then'](function(_0x16d327){_0x54359f[_0xd1a4('0x21')]=_0x16d327;if(_0x75859[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x4a1095[_0xd1a4('0x43')]=[{'all':!![]}];}return db[_0xd1a4('0x5d')][_0xd1a4('0x44')](_0x4a1095);})['then'](function(_0x2e3d9a){_0x54359f[_0xd1a4('0x5e')]=_0x2e3d9a;return _0x54359f;});}})[_0xd1a4('0x27')](respondWithFilteredResult(_0x5f2302,_0x4a1095))[_0xd1a4('0x45')](handleError(_0x5f2302,null));};exports['getAnswers']=function(_0x29acc3,_0x4cee12,_0x3f4f7d){var _0x2660b6={'raw':!![],'where':{}};var _0x3be463={};var _0x46c308={'count':0x0,'rows':[]};return db[_0xd1a4('0x2f')][_0xd1a4('0x5f')]({'where':{'id':_0x29acc3[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x4cee12,null))[_0xd1a4('0x27')](function(_0x1fa81d){if(_0x1fa81d){_0x3be463[_0xd1a4('0x33')]=_['keys'](db[_0xd1a4('0x60')][_0xd1a4('0x48')]);_0x3be463[_0xd1a4('0x34')]=_[_0xd1a4('0x49')](_0x29acc3[_0xd1a4('0x34')]);_0x3be463['filters']=_[_0xd1a4('0x36')](_0x3be463['model'],_0x3be463['query']);_0x2660b6[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x3be463[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x38')]));_0x2660b6[_0xd1a4('0x37')]=_0x2660b6[_0xd1a4('0x37')][_0xd1a4('0x4a')]?_0x2660b6[_0xd1a4('0x37')]:_0x3be463[_0xd1a4('0x33')];if(!_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x5b')](_0xd1a4('0x39'))){_0x2660b6['limit']=qs[_0xd1a4('0x20')](_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x20')]);_0x2660b6['offset']=qs[_0xd1a4('0x22')](_0x29acc3['query'][_0xd1a4('0x22')]);}_0x2660b6[_0xd1a4('0x3a')]=qs['sort'](_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x3b')]);_0x2660b6['where']=qs[_0xd1a4('0x35')](_['pick'](_0x29acc3[_0xd1a4('0x34')],_0x3be463[_0xd1a4('0x35')]));_0x2660b6[_0xd1a4('0x3c')][_0xd1a4('0x5c')]=_0x1fa81d['id'];if(_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x3e')]){_0x2660b6['where']=_[_0xd1a4('0x3f')](_0x2660b6['where'],{'$or':_[_0xd1a4('0x2e')](_0x2660b6['attributes'],function(_0x17c234){var _0x80611a={};_0x80611a[_0x17c234]={'$like':'%'+_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x3e')]+'%'};return _0x80611a;})});}_0x2660b6=_[_0xd1a4('0x3f')]({},_0x2660b6,_0x29acc3['options']);return db[_0xd1a4('0x60')]['count']({'where':_0x2660b6['where']})[_0xd1a4('0x27')](function(_0x2fbeaa){_0x46c308[_0xd1a4('0x21')]=_0x2fbeaa;if(_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x2660b6[_0xd1a4('0x43')]=[{'all':!![]}];}return db[_0xd1a4('0x60')]['findAll'](_0x2660b6);})[_0xd1a4('0x27')](function(_0x5525ee){_0x46c308[_0xd1a4('0x5e')]=_0x5525ee;return _0x46c308;});}})['then'](respondWithFilteredResult(_0x4cee12,_0x2660b6))[_0xd1a4('0x45')](handleError(_0x4cee12,null));};function char(_0x104031){return _0xd1a4('0x61')===typeof _0x104031?String['fromCharCode'][_0xd1a4('0x24')](null,arguments):_0x104031;}function needsEncapsulation(_0x76c7d9){return!!_0x76c7d9&&(_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0xd))>=0x0||_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0xa))>=0x0||_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0x2c))>=0x0||_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0x22))>=0x0);}function encapsulate(_0x484bc2){var _0x5ca5df=char(0x22),_0x37f039='\x5c'+char(0x22),_0x942a9d=_0x484bc2[_0xd1a4('0x62')]()[_0xd1a4('0x64')](new RegExp(_0x5ca5df,'g'),_0x37f039);return _0x5ca5df+_0x942a9d+_0x5ca5df;}exports[_0xd1a4('0x65')]=function(_0x54f112,_0x51a878,_0x426f57){var _0x3d5f59,_0x3947f5;var _0xe8f23a={'where':{'ProjectId':_0x54f112[_0xd1a4('0x47')]['id']}};if(_0x54f112['query']['startTime']){_0xe8f23a[_0xd1a4('0x3c')][_0xd1a4('0x66')]=JSON[_0xd1a4('0x67')](_0x54f112[_0xd1a4('0x34')][_0xd1a4('0x68')]);}return db[_0xd1a4('0x5d')]['findAll'](_0xe8f23a)[_0xd1a4('0x27')](handleEntityNotFound(_0x51a878,null))['then'](function(_0x4d7b58){if(_0x4d7b58){_0x3d5f59=_0x4d7b58;return db[_0xd1a4('0x69')][_0xd1a4('0x44')]({'where':{'SessionId':{'$in':_[_0xd1a4('0x2e')](_0x3d5f59,'id')},'ProjectId':_0x54f112['params']['id']},'order':_0xd1a4('0x6a')});}})[_0xd1a4('0x27')](handleEntityNotFound(_0x51a878,null))[_0xd1a4('0x27')](function(_0x892476){if(_0x892476){_0x3947f5=_0x892476;var _0x1248aa={};for(var _0x154c12=0x0,_0x361b13=_0x3947f5[_0xd1a4('0x4a')];_0x154c12<_0x361b13;_0x154c12++){if(!_0x1248aa[_0xd1a4('0x5b')](_0x3947f5[_0x154c12][_0xd1a4('0x6b')])){_0x1248aa[_0x3947f5[_0x154c12][_0xd1a4('0x6b')]]=needsEncapsulation(_0x3947f5[_0x154c12][_0xd1a4('0x6c')])?encapsulate(_0x3947f5[_0x154c12]['question']):_0x3947f5[_0x154c12][_0xd1a4('0x6c')];}}var _0x48acfc=[],_0x2ba9c9={};for(var _0x13075e=0x0,_0x9c83f0=_0x3d5f59[_0xd1a4('0x4a')];_0x13075e<_0x9c83f0;_0x13075e++){_0x2ba9c9={'ProjectId':_0x54f112['params']['id'],'SessionId':_0x3d5f59[_0x13075e]['id'],'StartTime':moment(_0x3d5f59[_0x13075e][_0xd1a4('0x66')])['format'](_0xd1a4('0x6d'))};for(var _0x4ebc7a=0x0,_0x2681f6=_0x3947f5['length'];_0x4ebc7a<_0x2681f6;_0x4ebc7a++){if(_0x3947f5[_0x4ebc7a][_0xd1a4('0x6e')]==_0x3d5f59[_0x13075e]['id']&&_0x1248aa[_0xd1a4('0x5b')](_0x3947f5[_0x4ebc7a][_0xd1a4('0x6b')])){_0x2ba9c9[_0x1248aa[_0x3947f5[_0x4ebc7a][_0xd1a4('0x6b')]]]=_0x3947f5[_0x4ebc7a][_0xd1a4('0x6f')];}}for(var _0xd1c758 in _0x1248aa){if(!_0x2ba9c9[_0xd1a4('0x5b')](_0x1248aa[_0xd1c758])){_0x2ba9c9[_0x1248aa[_0xd1c758]]=null;}}_0x48acfc['push'](_0x2ba9c9);}return _0x48acfc;}})['then'](function(_0x47a1e3){if(!_[_0xd1a4('0x70')](_0x47a1e3)){var _0x1842fa=toCsv(_0x47a1e3);var _0xc46894=Date['now']();fs[_0xd1a4('0x71')](util[_0xd1a4('0x72')](_0xd1a4('0x73'),_0x54f112[_0xd1a4('0x47')]['id'],_0xc46894),_0x1842fa);_0x51a878['setHeader'](_0xd1a4('0x74'),_0xd1a4('0x75')+util[_0xd1a4('0x72')](_0xd1a4('0x76'),_0x54f112[_0xd1a4('0x47')]['id'],_0xc46894));_0x51a878[_0xd1a4('0x77')](_0xd1a4('0x78'),_0xd1a4('0x79'));return _0x51a878[_0xd1a4('0x7a')](util[_0xd1a4('0x72')](_0xd1a4('0x73'),_0x54f112[_0xd1a4('0x47')]['id'],_0xc46894));}else{return _0x51a878[_0xd1a4('0x1b')](0xcc);}})[_0xd1a4('0x45')](handleError(_0x51a878,null));};
\ No newline at end of file
+var _0x42f4=['include','rows','show','params','includeAll','find','catch','create','body','role','user','get','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','UserProfileSection','getSessions','findOne','ProjectId','JscriptySessionReport','findAll','getAnswers','JscriptyAnswerReport','nolimit','number','fromCharCode','toString','indexOf','replace','startTime','starttime','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../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','limit','count','set','apply','save','update','then','destroy','Projects','UserProfileResource','stack','name','send','index','JscriptyProject','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options'];(function(_0x181f15,_0x208566){var _0x48c090=function(_0x140fdc){while(--_0x140fdc){_0x181f15['push'](_0x181f15['shift']());}};_0x48c090(++_0x208566);}(_0x42f4,0x19d));var _0x442f=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0x42f4[_0x33fcbb];return _0x2efe40;};'use strict';var emlformat=require(_0x442f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x442f('0x1'));var jsonpatch=require(_0x442f('0x2'));var rp=require(_0x442f('0x3'));var moment=require(_0x442f('0x4'));var BPromise=require(_0x442f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x442f('0x6'));var csv=require(_0x442f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x442f('0x8'));var _=require(_0x442f('0x9'));var squel=require(_0x442f('0xa'));var crypto=require(_0x442f('0xb'));var jsforce=require(_0x442f('0xc'));var deskjs=require(_0x442f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x442f('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x442f('0xf'));var as=require(_0x442f('0x10'));var hardwareService=require(_0x442f('0x11'));var logger=require(_0x442f('0x12'))(_0x442f('0x13'));var utils=require(_0x442f('0x14'));var config=require(_0x442f('0x15'));var licenseUtil=require(_0x442f('0x16'));var db=require(_0x442f('0x17'))['db'];function respondWithStatusCode(_0x300506,_0x481fa5){_0x481fa5=_0x481fa5||0xcc;return function(_0x370d73){if(_0x370d73){return _0x300506[_0x442f('0x18')](_0x481fa5);}return _0x300506[_0x442f('0x19')](_0x481fa5)[_0x442f('0x1a')]();};}function respondWithResult(_0xc9ed61,_0x3ce63d){_0x3ce63d=_0x3ce63d||0xc8;return function(_0x444fac){if(_0x444fac){return _0xc9ed61[_0x442f('0x19')](_0x3ce63d)[_0x442f('0x1b')](_0x444fac);}};}function respondWithFilteredResult(_0x30ebbe,_0x369e45){return function(_0x3d075a){if(_0x3d075a){var _0x42fb1b=typeof _0x369e45[_0x442f('0x1c')]===_0x442f('0x1d')&&typeof _0x369e45[_0x442f('0x1e')]==='undefined';var _0xa37e23=_0x3d075a['count'];var _0x54c48a=_0x42fb1b?0x0:_0x369e45['offset'];var _0x5e3dda=_0x42fb1b?_0x3d075a[_0x442f('0x1f')]:_0x369e45[_0x442f('0x1c')]+_0x369e45[_0x442f('0x1e')];var _0x46d2ef;if(_0x5e3dda>=_0xa37e23){_0x5e3dda=_0xa37e23;_0x46d2ef=0xc8;}else{_0x46d2ef=0xce;}_0x30ebbe[_0x442f('0x19')](_0x46d2ef);return _0x30ebbe[_0x442f('0x20')]('Content-Range',_0x54c48a+'-'+_0x5e3dda+'/'+_0xa37e23)[_0x442f('0x1b')](_0x3d075a);}return null;};}function patchUpdates(_0x552f81){return function(_0x364ada){try{jsonpatch[_0x442f('0x21')](_0x364ada,_0x552f81,!![]);}catch(_0x33966c){return BPromise['reject'](_0x33966c);}return _0x364ada[_0x442f('0x22')]();};}function saveUpdates(_0xe3fad6,_0x5dd019){return function(_0x51c5e1){if(_0x51c5e1){return _0x51c5e1[_0x442f('0x23')](_0xe3fad6)[_0x442f('0x24')](function(_0x37d5d6){return _0x37d5d6;});}return null;};}function removeEntity(_0x4004e9,_0x2a2ae7){return function(_0x127b9c){if(_0x127b9c){return _0x127b9c[_0x442f('0x25')]()[_0x442f('0x24')](function(){var _0x1eae0a=_0x127b9c['get']({'plain':!![]});var _0x393eed=_0x442f('0x26');return db[_0x442f('0x27')][_0x442f('0x25')]({'where':{'type':_0x393eed,'resourceId':_0x1eae0a['id']}})['then'](function(){return _0x127b9c;});})[_0x442f('0x24')](function(){_0x4004e9[_0x442f('0x19')](0xcc)[_0x442f('0x1a')]();});}};}function handleEntityNotFound(_0x3bcae2,_0x55c9dc){return function(_0x5ee478){if(!_0x5ee478){_0x3bcae2[_0x442f('0x18')](0x194);}return _0x5ee478;};}function handleError(_0x3d3ccc,_0x541a19){_0x541a19=_0x541a19||0x1f4;return function(_0x37da9d){logger['error'](_0x37da9d[_0x442f('0x28')]);if(_0x37da9d[_0x442f('0x29')]){delete _0x37da9d[_0x442f('0x29')];}_0x3d3ccc['status'](_0x541a19)[_0x442f('0x2a')](_0x37da9d);};}exports[_0x442f('0x2b')]=function(_0x16a369,_0x422019){var _0x3f8aa6={},_0x59d0d8={},_0x487491={'count':0x0,'rows':[]};var _0x3cc574=_['map'](db[_0x442f('0x2c')][_0x442f('0x2d')],function(_0x2c3845){return{'name':_0x2c3845[_0x442f('0x2e')],'type':_0x2c3845[_0x442f('0x2f')][_0x442f('0x30')]};});_0x59d0d8[_0x442f('0x31')]=_[_0x442f('0x32')](_0x3cc574,_0x442f('0x29'));_0x59d0d8['query']=_[_0x442f('0x33')](_0x16a369['query']);_0x59d0d8[_0x442f('0x34')]=_[_0x442f('0x35')](_0x59d0d8['model'],_0x59d0d8[_0x442f('0x36')]);_0x3f8aa6[_0x442f('0x37')]=_[_0x442f('0x35')](_0x59d0d8[_0x442f('0x31')],qs[_0x442f('0x38')](_0x16a369['query'][_0x442f('0x38')]));_0x3f8aa6[_0x442f('0x37')]=_0x3f8aa6[_0x442f('0x37')][_0x442f('0x39')]?_0x3f8aa6[_0x442f('0x37')]:_0x59d0d8['model'];if(!_0x16a369[_0x442f('0x36')][_0x442f('0x3a')]('nolimit')){_0x3f8aa6[_0x442f('0x1e')]=qs[_0x442f('0x1e')](_0x16a369['query'][_0x442f('0x1e')]);_0x3f8aa6[_0x442f('0x1c')]=qs[_0x442f('0x1c')](_0x16a369[_0x442f('0x36')][_0x442f('0x1c')]);}_0x3f8aa6[_0x442f('0x3b')]=qs[_0x442f('0x3c')](_0x16a369['query'][_0x442f('0x3c')]);_0x3f8aa6[_0x442f('0x3d')]=qs['filters'](_[_0x442f('0x3e')](_0x16a369['query'],_0x59d0d8[_0x442f('0x34')]),_0x3cc574);if(_0x16a369[_0x442f('0x36')][_0x442f('0x3f')]){_0x3f8aa6['where']=_['merge'](_0x3f8aa6['where'],{'$or':_[_0x442f('0x32')](_0x3cc574,function(_0x23b7da){if(_0x23b7da[_0x442f('0x2f')]!==_0x442f('0x40')){var _0x18c921={};_0x18c921[_0x23b7da[_0x442f('0x29')]]={'$like':'%'+_0x16a369['query'][_0x442f('0x3f')]+'%'};return _0x18c921;}})});}_0x3f8aa6=_[_0x442f('0x41')]({},_0x3f8aa6,_0x16a369[_0x442f('0x42')]);var _0x3644f4={'where':_0x3f8aa6[_0x442f('0x3d')]};return db['JscriptyProject']['count'](_0x3644f4)['then'](function(_0x599ce7){_0x487491[_0x442f('0x1f')]=_0x599ce7;if(_0x16a369[_0x442f('0x36')]['includeAll']){_0x3f8aa6[_0x442f('0x43')]=[{'all':!![]}];}return db[_0x442f('0x2c')]['findAll'](_0x3f8aa6);})[_0x442f('0x24')](function(_0x479bcf){_0x487491[_0x442f('0x44')]=_0x479bcf;return _0x487491;})[_0x442f('0x24')](respondWithFilteredResult(_0x422019,_0x3f8aa6))['catch'](handleError(_0x422019,null));};exports[_0x442f('0x45')]=function(_0x2333f2,_0x1f40e7){var _0x381996={'raw':![],'where':{'id':_0x2333f2[_0x442f('0x46')]['id']}},_0xeefc91={};_0xeefc91[_0x442f('0x31')]=_['keys'](db[_0x442f('0x2c')][_0x442f('0x2d')]);_0xeefc91[_0x442f('0x36')]=_[_0x442f('0x33')](_0x2333f2[_0x442f('0x36')]);_0xeefc91[_0x442f('0x34')]=_[_0x442f('0x35')](_0xeefc91[_0x442f('0x31')],_0xeefc91[_0x442f('0x36')]);_0x381996[_0x442f('0x37')]=_[_0x442f('0x35')](_0xeefc91[_0x442f('0x31')],qs['fields'](_0x2333f2[_0x442f('0x36')][_0x442f('0x38')]));_0x381996[_0x442f('0x37')]=_0x381996[_0x442f('0x37')][_0x442f('0x39')]?_0x381996[_0x442f('0x37')]:_0xeefc91[_0x442f('0x31')];if(_0x2333f2[_0x442f('0x36')][_0x442f('0x47')]){_0x381996[_0x442f('0x43')]=[{'all':!![]}];}_0x381996=_[_0x442f('0x41')]({},_0x381996,_0x2333f2[_0x442f('0x42')]);return db[_0x442f('0x2c')][_0x442f('0x48')](_0x381996)[_0x442f('0x24')](handleEntityNotFound(_0x1f40e7,null))['then'](respondWithResult(_0x1f40e7,null))[_0x442f('0x49')](handleError(_0x1f40e7,null));};exports[_0x442f('0x4a')]=function(_0x50c8bc,_0x1214c8){return db[_0x442f('0x2c')]['create'](_0x50c8bc[_0x442f('0x4b')],{})[_0x442f('0x24')](function(_0x192f16){var _0x1eaa09=_0x50c8bc['user']['get']({'plain':!![]});if(!_0x1eaa09)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1eaa09[_0x442f('0x4c')]===_0x442f('0x4d')){var _0x2e2991=_0x192f16[_0x442f('0x4e')]({'plain':!![]});var _0xd5ecbb=_0x442f('0x26');return db['UserProfileSection'][_0x442f('0x48')]({'where':{'name':_0xd5ecbb,'userProfileId':_0x1eaa09[_0x442f('0x4f')]},'raw':!![]})[_0x442f('0x24')](function(_0x2167c9){if(_0x2167c9&&_0x2167c9[_0x442f('0x50')]===0x0){return db[_0x442f('0x27')][_0x442f('0x4a')]({'name':_0x2e2991[_0x442f('0x29')],'resourceId':_0x2e2991['id'],'type':_0x2167c9[_0x442f('0x29')],'sectionId':_0x2167c9['id']},{})['then'](function(){return _0x192f16;});}else{return _0x192f16;}})[_0x442f('0x49')](function(_0x26f37c){logger[_0x442f('0x51')](_0x442f('0x52'),_0x26f37c);throw _0x26f37c;});}return _0x192f16;})[_0x442f('0x24')](respondWithResult(_0x1214c8,0xc9))['catch'](handleError(_0x1214c8,null));};exports[_0x442f('0x53')]=function(_0x258300,_0x3a5076){var _0x541190={'where':{'id':_0x258300[_0x442f('0x46')]['id']}},_0x25a676={};_0x25a676[_0x442f('0x31')]=_['keys'](db[_0x442f('0x2c')]['rawAttributes']);_0x541190[_0x442f('0x37')]=_[_0x442f('0x35')](_0x25a676[_0x442f('0x31')],qs[_0x442f('0x38')](_0x258300[_0x442f('0x36')][_0x442f('0x38')]));_0x541190[_0x442f('0x37')]=_0x541190[_0x442f('0x37')][_0x442f('0x39')]?_0x541190['attributes']:_0x25a676[_0x442f('0x31')];if(_0x258300['query'][_0x442f('0x47')]){_0x541190[_0x442f('0x43')]=[{'all':!![]}];}_0x541190=_['merge']({},_0x541190,_0x258300['options']);return db[_0x442f('0x2c')][_0x442f('0x48')](_0x541190)[_0x442f('0x24')](handleEntityNotFound(_0x3a5076,null))[_0x442f('0x24')](function(_0x4e878f){if(_0x4e878f){var _0x5345f1=_0x4e878f[_0x442f('0x4e')]({'plain':!![]});_0x5345f1=qs[_0x442f('0x54')](_0x5345f1,['id','createdAt',_0x442f('0x55')]);_0x258300[_0x442f('0x4b')]=_[_0x442f('0x54')](_0x258300[_0x442f('0x4b')],['id',_0x442f('0x56'),'updatedAt']);return db[_0x442f('0x2c')][_0x442f('0x4a')](_['merge'](_0x5345f1,_0x258300['body']),{'include':_0x258300[_0x442f('0x36')][_0x442f('0x47')]?[{'all':!![]}]:undefined})[_0x442f('0x24')](function(_0x4830e3){var _0x14f455=_0x258300[_0x442f('0x4d')][_0x442f('0x4e')]({'plain':!![]});if(!_0x14f455)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x14f455[_0x442f('0x4c')]==='user'){var _0x499e6e=_0x4830e3['get']({'plain':!![]});var _0x50e616=_0x442f('0x26');return db[_0x442f('0x57')][_0x442f('0x48')]({'where':{'name':_0x50e616,'userProfileId':_0x14f455[_0x442f('0x4f')]},'raw':!![]})[_0x442f('0x24')](function(_0x2bdd05){if(_0x2bdd05&&_0x2bdd05[_0x442f('0x50')]===0x0){return db[_0x442f('0x27')]['create']({'name':_0x499e6e[_0x442f('0x29')],'resourceId':_0x499e6e['id'],'type':_0x2bdd05[_0x442f('0x29')],'sectionId':_0x2bdd05['id']},{})[_0x442f('0x24')](function(){return _0x4830e3;});}else{return _0x4830e3;}})[_0x442f('0x49')](function(_0x65d706){logger[_0x442f('0x51')](_0x442f('0x52'),_0x65d706);throw _0x65d706;});}return _0x4830e3;});}})[_0x442f('0x24')](respondWithResult(_0x3a5076,0xc9))[_0x442f('0x49')](handleError(_0x3a5076,null));};exports['update']=function(_0x35cf32,_0x354a99){if(_0x35cf32[_0x442f('0x4b')]['id']){delete _0x35cf32[_0x442f('0x4b')]['id'];}return db[_0x442f('0x2c')][_0x442f('0x48')]({'where':{'id':_0x35cf32[_0x442f('0x46')]['id']}})['then'](handleEntityNotFound(_0x354a99,null))['then'](saveUpdates(_0x35cf32[_0x442f('0x4b')],null))[_0x442f('0x24')](respondWithResult(_0x354a99,null))[_0x442f('0x49')](handleError(_0x354a99,null));};exports[_0x442f('0x25')]=function(_0x36a680,_0x4f2295){return db[_0x442f('0x2c')][_0x442f('0x48')]({'where':{'id':_0x36a680[_0x442f('0x46')]['id']}})[_0x442f('0x24')](handleEntityNotFound(_0x4f2295,null))['then'](removeEntity(_0x4f2295,null))[_0x442f('0x49')](handleError(_0x4f2295,null));};exports[_0x442f('0x58')]=function(_0x51342d,_0x4c119f,_0x544da1){var _0x19b48a={'raw':!![],'where':{}};var _0x45b432={};var _0x3ff603={'count':0x0,'rows':[]};return db[_0x442f('0x2c')][_0x442f('0x59')]({'where':{'id':_0x51342d[_0x442f('0x46')]['id']}})[_0x442f('0x24')](handleEntityNotFound(_0x4c119f,null))[_0x442f('0x24')](function(_0xb958fb){if(_0xb958fb){_0x45b432[_0x442f('0x31')]=_[_0x442f('0x33')](db['JscriptySessionReport'][_0x442f('0x2d')]);_0x45b432['query']=_['keys'](_0x51342d[_0x442f('0x36')]);_0x45b432[_0x442f('0x34')]=_[_0x442f('0x35')](_0x45b432['model'],_0x45b432['query']);_0x19b48a[_0x442f('0x37')]=_[_0x442f('0x35')](_0x45b432[_0x442f('0x31')],qs[_0x442f('0x38')](_0x51342d[_0x442f('0x36')][_0x442f('0x38')]));_0x19b48a[_0x442f('0x37')]=_0x19b48a[_0x442f('0x37')]['length']?_0x19b48a['attributes']:_0x45b432[_0x442f('0x31')];if(!_0x51342d[_0x442f('0x36')][_0x442f('0x3a')]('nolimit')){_0x19b48a[_0x442f('0x1e')]=qs['limit'](_0x51342d['query'][_0x442f('0x1e')]);_0x19b48a[_0x442f('0x1c')]=qs[_0x442f('0x1c')](_0x51342d[_0x442f('0x36')][_0x442f('0x1c')]);}_0x19b48a[_0x442f('0x3b')]=qs[_0x442f('0x3c')](_0x51342d[_0x442f('0x36')][_0x442f('0x3c')]);_0x19b48a[_0x442f('0x3d')]=qs[_0x442f('0x34')](_['pick'](_0x51342d[_0x442f('0x36')],_0x45b432[_0x442f('0x34')]));_0x19b48a['where'][_0x442f('0x5a')]=_0xb958fb['id'];if(_0x51342d[_0x442f('0x36')][_0x442f('0x3f')]){_0x19b48a[_0x442f('0x3d')]=_[_0x442f('0x41')](_0x19b48a[_0x442f('0x3d')],{'$or':_[_0x442f('0x32')](_0x19b48a['attributes'],function(_0xd8beb3){var _0x47a117={};_0x47a117[_0xd8beb3]={'$like':'%'+_0x51342d[_0x442f('0x36')][_0x442f('0x3f')]+'%'};return _0x47a117;})});}_0x19b48a=_[_0x442f('0x41')]({},_0x19b48a,_0x51342d[_0x442f('0x42')]);return db[_0x442f('0x5b')][_0x442f('0x1f')]({'where':_0x19b48a[_0x442f('0x3d')]})[_0x442f('0x24')](function(_0x432345){_0x3ff603[_0x442f('0x1f')]=_0x432345;if(_0x51342d[_0x442f('0x36')]['includeAll']){_0x19b48a[_0x442f('0x43')]=[{'all':!![]}];}return db[_0x442f('0x5b')][_0x442f('0x5c')](_0x19b48a);})[_0x442f('0x24')](function(_0x456af9){_0x3ff603[_0x442f('0x44')]=_0x456af9;return _0x3ff603;});}})[_0x442f('0x24')](respondWithFilteredResult(_0x4c119f,_0x19b48a))['catch'](handleError(_0x4c119f,null));};exports[_0x442f('0x5d')]=function(_0x3cca02,_0x44c487,_0x477c0a){var _0x32c75c={'raw':!![],'where':{}};var _0x2a2459={};var _0x333bdb={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x442f('0x59')]({'where':{'id':_0x3cca02[_0x442f('0x46')]['id']}})[_0x442f('0x24')](handleEntityNotFound(_0x44c487,null))[_0x442f('0x24')](function(_0x27fd9a){if(_0x27fd9a){_0x2a2459[_0x442f('0x31')]=_[_0x442f('0x33')](db[_0x442f('0x5e')]['rawAttributes']);_0x2a2459[_0x442f('0x36')]=_[_0x442f('0x33')](_0x3cca02[_0x442f('0x36')]);_0x2a2459[_0x442f('0x34')]=_[_0x442f('0x35')](_0x2a2459['model'],_0x2a2459[_0x442f('0x36')]);_0x32c75c[_0x442f('0x37')]=_[_0x442f('0x35')](_0x2a2459[_0x442f('0x31')],qs['fields'](_0x3cca02[_0x442f('0x36')][_0x442f('0x38')]));_0x32c75c[_0x442f('0x37')]=_0x32c75c[_0x442f('0x37')]['length']?_0x32c75c[_0x442f('0x37')]:_0x2a2459['model'];if(!_0x3cca02['query'][_0x442f('0x3a')](_0x442f('0x5f'))){_0x32c75c[_0x442f('0x1e')]=qs['limit'](_0x3cca02[_0x442f('0x36')][_0x442f('0x1e')]);_0x32c75c[_0x442f('0x1c')]=qs[_0x442f('0x1c')](_0x3cca02[_0x442f('0x36')]['offset']);}_0x32c75c[_0x442f('0x3b')]=qs[_0x442f('0x3c')](_0x3cca02[_0x442f('0x36')][_0x442f('0x3c')]);_0x32c75c[_0x442f('0x3d')]=qs['filters'](_['pick'](_0x3cca02[_0x442f('0x36')],_0x2a2459[_0x442f('0x34')]));_0x32c75c[_0x442f('0x3d')][_0x442f('0x5a')]=_0x27fd9a['id'];if(_0x3cca02[_0x442f('0x36')][_0x442f('0x3f')]){_0x32c75c[_0x442f('0x3d')]=_[_0x442f('0x41')](_0x32c75c[_0x442f('0x3d')],{'$or':_[_0x442f('0x32')](_0x32c75c[_0x442f('0x37')],function(_0x4674b1){var _0x47da45={};_0x47da45[_0x4674b1]={'$like':'%'+_0x3cca02[_0x442f('0x36')]['filter']+'%'};return _0x47da45;})});}_0x32c75c=_[_0x442f('0x41')]({},_0x32c75c,_0x3cca02[_0x442f('0x42')]);return db[_0x442f('0x5e')][_0x442f('0x1f')]({'where':_0x32c75c[_0x442f('0x3d')]})[_0x442f('0x24')](function(_0x2b19bf){_0x333bdb['count']=_0x2b19bf;if(_0x3cca02[_0x442f('0x36')][_0x442f('0x47')]){_0x32c75c[_0x442f('0x43')]=[{'all':!![]}];}return db[_0x442f('0x5e')][_0x442f('0x5c')](_0x32c75c);})[_0x442f('0x24')](function(_0xcae86c){_0x333bdb[_0x442f('0x44')]=_0xcae86c;return _0x333bdb;});}})['then'](respondWithFilteredResult(_0x44c487,_0x32c75c))[_0x442f('0x49')](handleError(_0x44c487,null));};function char(_0x3c8a2c){return _0x442f('0x60')===typeof _0x3c8a2c?String[_0x442f('0x61')][_0x442f('0x21')](null,arguments):_0x3c8a2c;}function needsEncapsulation(_0x902e81){return!!_0x902e81&&(_0x902e81[_0x442f('0x62')]()[_0x442f('0x63')](char(0xd))>=0x0||_0x902e81[_0x442f('0x62')]()[_0x442f('0x63')](char(0xa))>=0x0||_0x902e81['toString']()['indexOf'](char(0x2c))>=0x0||_0x902e81[_0x442f('0x62')]()[_0x442f('0x63')](char(0x22))>=0x0);}function encapsulate(_0x39e9f9){var _0x510bb4=char(0x22),_0x919876='\x5c'+char(0x22),_0x59fd37=_0x39e9f9[_0x442f('0x62')]()[_0x442f('0x64')](new RegExp(_0x510bb4,'g'),_0x919876);return _0x510bb4+_0x59fd37+_0x510bb4;}exports['getSummary']=function(_0x4d19ca,_0x379da5,_0x2c6f03){var _0x97cf26,_0x1ba3a8;var _0xe3d133={'where':{'ProjectId':_0x4d19ca[_0x442f('0x46')]['id']}};if(_0x4d19ca[_0x442f('0x36')][_0x442f('0x65')]){_0xe3d133[_0x442f('0x3d')][_0x442f('0x66')]=JSON['parse'](_0x4d19ca[_0x442f('0x36')][_0x442f('0x65')]);}return db[_0x442f('0x5b')]['findAll'](_0xe3d133)[_0x442f('0x24')](handleEntityNotFound(_0x379da5,null))[_0x442f('0x24')](function(_0x577454){if(_0x577454){_0x97cf26=_0x577454;return db[_0x442f('0x67')][_0x442f('0x5c')]({'where':{'SessionId':{'$in':_[_0x442f('0x32')](_0x97cf26,'id')},'ProjectId':_0x4d19ca[_0x442f('0x46')]['id']},'order':'-createdAt'});}})[_0x442f('0x24')](handleEntityNotFound(_0x379da5,null))[_0x442f('0x24')](function(_0x395832){if(_0x395832){_0x1ba3a8=_0x395832;var _0x3a2318={};for(var _0x1043bd=0x0,_0x3b558d=_0x1ba3a8[_0x442f('0x39')];_0x1043bd<_0x3b558d;_0x1043bd++){if(!_0x3a2318[_0x442f('0x3a')](_0x1ba3a8[_0x1043bd][_0x442f('0x68')])){_0x3a2318[_0x1ba3a8[_0x1043bd][_0x442f('0x68')]]=needsEncapsulation(_0x1ba3a8[_0x1043bd][_0x442f('0x69')])?encapsulate(_0x1ba3a8[_0x1043bd]['question']):_0x1ba3a8[_0x1043bd][_0x442f('0x69')];}}var _0x5d7f74=[],_0x1500e5={};for(var _0x203ead=0x0,_0x5e6f50=_0x97cf26[_0x442f('0x39')];_0x203ead<_0x5e6f50;_0x203ead++){_0x1500e5={'ProjectId':_0x4d19ca[_0x442f('0x46')]['id'],'SessionId':_0x97cf26[_0x203ead]['id'],'StartTime':moment(_0x97cf26[_0x203ead][_0x442f('0x66')])[_0x442f('0x6a')](_0x442f('0x6b'))};for(var _0xe5d254=0x0,_0x1a2e78=_0x1ba3a8['length'];_0xe5d254<_0x1a2e78;_0xe5d254++){if(_0x1ba3a8[_0xe5d254][_0x442f('0x6c')]==_0x97cf26[_0x203ead]['id']&&_0x3a2318[_0x442f('0x3a')](_0x1ba3a8[_0xe5d254][_0x442f('0x68')])){_0x1500e5[_0x3a2318[_0x1ba3a8[_0xe5d254][_0x442f('0x68')]]]=_0x1ba3a8[_0xe5d254][_0x442f('0x6d')];}}for(var _0x324677 in _0x3a2318){if(!_0x1500e5[_0x442f('0x3a')](_0x3a2318[_0x324677])){_0x1500e5[_0x3a2318[_0x324677]]=null;}}_0x5d7f74[_0x442f('0x6e')](_0x1500e5);}return _0x5d7f74;}})[_0x442f('0x24')](function(_0x4aa9ae){if(!_[_0x442f('0x6f')](_0x4aa9ae)){var _0x3b4e16=toCsv(_0x4aa9ae);var _0x32433e=Date[_0x442f('0x70')]();fs[_0x442f('0x71')](util[_0x442f('0x6a')](_0x442f('0x72'),_0x4d19ca[_0x442f('0x46')]['id'],_0x32433e),_0x3b4e16);_0x379da5[_0x442f('0x73')]('Content-disposition',_0x442f('0x74')+util['format'](_0x442f('0x75'),_0x4d19ca[_0x442f('0x46')]['id'],_0x32433e));_0x379da5['setHeader'](_0x442f('0x76'),'text/csv');return _0x379da5[_0x442f('0x77')](util[_0x442f('0x6a')](_0x442f('0x72'),_0x4d19ca['params']['id'],_0x32433e));}else{return _0x379da5[_0x442f('0x18')](0xcc);}})[_0x442f('0x49')](handleError(_0x379da5,null));};
\ No newline at end of file
index b4d090e..54ebe7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8819=['moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyProject.attributes','exports','JscriptyProject','../../config/logger','api'];(function(_0x48e716,_0x18a621){var _0x25d6dd=function(_0x15d875){while(--_0x15d875){_0x48e716['push'](_0x48e716['shift']());}};_0x25d6dd(++_0x18a621);}(_0x8819,0x94));var _0x9881=function(_0x5e8bd1,_0x470d7a){_0x5e8bd1=_0x5e8bd1-0x0;var _0x5406a2=_0x8819[_0x5e8bd1];return _0x5406a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9881('0x0'))(_0x9881('0x1'));var moment=require(_0x9881('0x2'));var BPromise=require(_0x9881('0x3'));var rp=require(_0x9881('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9881('0x5'));var config=require(_0x9881('0x6'));var attributes=require(_0x9881('0x7'));module[_0x9881('0x8')]=function(_0x1791fd,_0x2a3664){return _0x1791fd['define'](_0x9881('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7ce=['define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api','request-promise','./jscriptyProject.attributes','exports'];(function(_0x25af0f,_0x266a35){var _0x474463=function(_0x491eba){while(--_0x491eba){_0x25af0f['push'](_0x25af0f['shift']());}};_0x474463(++_0x266a35);}(_0xd7ce,0x16b));var _0xed7c=function(_0x5f5cce,_0x138cc5){_0x5f5cce=_0x5f5cce-0x0;var _0x705ecf=_0xd7ce[_0x5f5cce];return _0x705ecf;};'use strict';var _=require(_0xed7c('0x0'));var util=require(_0xed7c('0x1'));var logger=require(_0xed7c('0x2'))(_0xed7c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xed7c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xed7c('0x5'));module[_0xed7c('0x6')]=function(_0x194d4b,_0x1aa7a0){return _0x194d4b[_0xed7c('0x7')](_0xed7c('0x8'),attributes,{'tableName':_0xed7c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c38184..56b87c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['rpc','../../config/environment','http','request','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','JscriptyProject,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x73195a,_0x2119bc){var _0x369804=function(_0x1061f4){while(--_0x1061f4){_0x73195a['push'](_0x73195a['shift']());}};_0x369804(++_0x2119bc);}(_0xb43b,0x1b2));var _0xbb43=function(_0x1aa97c,_0x2c8640){_0x1aa97c=_0x1aa97c-0x0;var _0x1cd0ea=_0xb43b[_0x1aa97c];return _0x1cd0ea;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var moment=require('moment');var BPromise=require(_0xbb43('0x2'));var rs=require(_0xbb43('0x3'));var fs=require('fs');var Redis=require(_0xbb43('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb43('0x5'));var logger=require(_0xbb43('0x6'))(_0xbb43('0x7'));var config=require(_0xbb43('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x553520,_0x80fe61,_0x1ccd49){return new BPromise(function(_0x2a2f11,_0x29ae1a){return client[_0xbb43('0xa')](_0x553520,_0x1ccd49)['then'](function(_0x208c2b){logger[_0xbb43('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0xbb43('0xc'));logger[_0xbb43('0xd')](_0xbb43('0xe'),_0x80fe61,_0xbb43('0xc'),JSON[_0xbb43('0xf')](_0x208c2b));if(_0x208c2b[_0xbb43('0x10')]){if(_0x208c2b['error'][_0xbb43('0x11')]===0x1f4){logger[_0xbb43('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b['error'][_0xbb43('0x12')]);return _0x29ae1a(_0x208c2b['error']['message']);}logger[_0xbb43('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b[_0xbb43('0x10')][_0xbb43('0x12')]);return _0x2a2f11(_0x208c2b['error']['message']);}else{logger['info'](_0xbb43('0x13'),_0x80fe61,_0xbb43('0xc'));_0x2a2f11(_0x208c2b['result']['message']);}})[_0xbb43('0x14')](function(_0x563ce1){logger['error'](_0xbb43('0x13'),_0x80fe61,_0x563ce1);_0x29ae1a(_0x563ce1);});});}
\ No newline at end of file
+var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x12ded6,_0x3d0d78){var _0x25ccc3=function(_0x63a3a4){while(--_0x63a3a4){_0x12ded6['push'](_0x12ded6['shift']());}};_0x25ccc3(++_0x3d0d78);}(_0x70e0,0x17b));var _0x070e=function(_0x52d20c,_0x4e43fe){_0x52d20c=_0x52d20c-0x0;var _0x3b02f8=_0x70e0[_0x52d20c];return _0x3b02f8;};'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')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\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 c52b4a6..f5ec9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1188=['post','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x42fc8e,_0x26620d){var _0x4ad7b5=function(_0x4b217b){while(--_0x4b217b){_0x42fc8e['push'](_0x42fc8e['shift']());}};_0x4ad7b5(++_0x26620d);}(_0x1188,0xae));var _0x8118=function(_0x38a367,_0x51957a){_0x38a367=_0x38a367-0x0;var _0x378517=_0x1188[_0x38a367];return _0x378517;};'use strict';var multer=require(_0x8118('0x0'));var util=require(_0x8118('0x1'));var path=require('path');var timeout=require(_0x8118('0x2'));var express=require(_0x8118('0x3'));var router=express['Router']();var fs_extra=require(_0x8118('0x4'));var auth=require(_0x8118('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8118('0x6'));var controller=require(_0x8118('0x7'));router[_0x8118('0x8')]('/',auth[_0x8118('0x9')](),controller[_0x8118('0xa')]);router['get'](_0x8118('0xb'),auth[_0x8118('0x9')](),controller[_0x8118('0xc')]);router[_0x8118('0x8')](_0x8118('0xd'),auth[_0x8118('0x9')](),controller[_0x8118('0xe')]);router[_0x8118('0xf')]('/',auth[_0x8118('0x9')](),controller['create']);router[_0x8118('0x10')]('/:id',auth[_0x8118('0x9')](),controller[_0x8118('0x11')]);router[_0x8118('0x12')](_0x8118('0xd'),auth[_0x8118('0x9')](),controller[_0x8118('0x13')]);module[_0x8118('0x14')]=router;
\ No newline at end of file
+var _0xa402=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','destroy'];(function(_0x8e8080,_0x4d8d02){var _0x39d5f0=function(_0x568968){while(--_0x568968){_0x8e8080['push'](_0x8e8080['shift']());}};_0x39d5f0(++_0x4d8d02);}(_0xa402,0x190));var _0x2a40=function(_0x241500,_0x10ed3f){_0x241500=_0x241500-0x0;var _0x219020=_0xa402[_0x241500];return _0x219020;};'use strict';var multer=require(_0x2a40('0x0'));var util=require(_0x2a40('0x1'));var path=require(_0x2a40('0x2'));var timeout=require('connect-timeout');var express=require(_0x2a40('0x3'));var router=express[_0x2a40('0x4')]();var fs_extra=require(_0x2a40('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2a40('0x6'));var config=require(_0x2a40('0x7'));var controller=require('./jscriptyQuestionReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x2a40('0x8')]);router[_0x2a40('0x9')](_0x2a40('0xa'),auth[_0x2a40('0xb')](),controller[_0x2a40('0xc')]);router['get']('/:id',auth[_0x2a40('0xb')](),controller[_0x2a40('0xd')]);router[_0x2a40('0xe')]('/',auth['isAuthenticated'](),controller[_0x2a40('0xf')]);router[_0x2a40('0x10')](_0x2a40('0x11'),auth[_0x2a40('0xb')](),controller[_0x2a40('0x12')]);router['delete'](_0x2a40('0x11'),auth[_0x2a40('0xb')](),controller[_0x2a40('0x13')]);module[_0x2a40('0x14')]=router;
\ No newline at end of file
index c3114eb..7873fb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x7a54,0x106));var _0x47a5=function(_0x233fd1,_0x4fd509){_0x233fd1=_0x233fd1-0x0;var _0x4dd5fa=_0x7a54[_0x233fd1];return _0x4dd5fa;};'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(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x7a54,0x106));var _0x47a5=function(_0x231209,_0x264513){_0x231209=_0x231209-0x0;var _0x486d57=_0x7a54[_0x231209];return _0x486d57;};'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 aea6b55..c528671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1a8=['catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','show','params','fields','find'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe1a8,0x96));var _0x8e1a=function(_0x19540f,_0x49cc71){_0x19540f=_0x19540f-0x0;var _0x4350d0=_0xe1a8[_0x19540f];return _0x4350d0;};'use strict';var emlformat=require(_0x8e1a('0x0'));var rimraf=require(_0x8e1a('0x1'));var zipdir=require(_0x8e1a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8e1a('0x3'));var moment=require('moment');var BPromise=require(_0x8e1a('0x4'));var Mustache=require(_0x8e1a('0x5'));var util=require(_0x8e1a('0x6'));var path=require(_0x8e1a('0x7'));var sox=require(_0x8e1a('0x8'));var csv=require('to-csv');var ejs=require(_0x8e1a('0x9'));var fs=require('fs');var fs_extra=require(_0x8e1a('0xa'));var _=require('lodash');var squel=require(_0x8e1a('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8e1a('0xc'));var toCsv=require(_0x8e1a('0xd'));var querystring=require(_0x8e1a('0xe'));var Papa=require(_0x8e1a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8e1a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e1a('0x11'))('api');var utils=require(_0x8e1a('0x12'));var config=require(_0x8e1a('0x13'));var licenseUtil=require(_0x8e1a('0x14'));var db=require(_0x8e1a('0x15'))['db'];function respondWithStatusCode(_0x5ec29f,_0x299ddf){_0x299ddf=_0x299ddf||0xcc;return function(_0x32203d){if(_0x32203d){return _0x5ec29f[_0x8e1a('0x16')](_0x299ddf);}return _0x5ec29f[_0x8e1a('0x17')](_0x299ddf)[_0x8e1a('0x18')]();};}function respondWithResult(_0x3f5a9c,_0x140f4d){_0x140f4d=_0x140f4d||0xc8;return function(_0x1c72ab){if(_0x1c72ab){return _0x3f5a9c[_0x8e1a('0x17')](_0x140f4d)[_0x8e1a('0x19')](_0x1c72ab);}};}function respondWithFilteredResult(_0x4ac203,_0x312daa){return function(_0x382a48){if(_0x382a48){var _0x46da89=typeof _0x312daa[_0x8e1a('0x1a')]===_0x8e1a('0x1b')&&typeof _0x312daa[_0x8e1a('0x1c')]===_0x8e1a('0x1b');var _0x35df75=_0x382a48[_0x8e1a('0x1d')];var _0x54ffa0=_0x46da89?0x0:_0x312daa[_0x8e1a('0x1a')];var _0x2fe2c4=_0x46da89?_0x382a48[_0x8e1a('0x1d')]:_0x312daa['offset']+_0x312daa[_0x8e1a('0x1c')];var _0x1d6e20;if(_0x2fe2c4>=_0x35df75){_0x2fe2c4=_0x35df75;_0x1d6e20=0xc8;}else{_0x1d6e20=0xce;}_0x4ac203[_0x8e1a('0x17')](_0x1d6e20);return _0x4ac203['set'](_0x8e1a('0x1e'),_0x54ffa0+'-'+_0x2fe2c4+'/'+_0x35df75)['json'](_0x382a48);}return null;};}function patchUpdates(_0x4698ac){return function(_0x2c6d90){try{jsonpatch[_0x8e1a('0x1f')](_0x2c6d90,_0x4698ac,!![]);}catch(_0x465a83){return BPromise[_0x8e1a('0x20')](_0x465a83);}return _0x2c6d90['save']();};}function saveUpdates(_0x284bf5,_0x4221b6){return function(_0x4fb5f3){if(_0x4fb5f3){return _0x4fb5f3[_0x8e1a('0x21')](_0x284bf5)[_0x8e1a('0x22')](function(_0x4fb993){return _0x4fb993;});}return null;};}function removeEntity(_0x1ac4d1,_0x3854cb){return function(_0x2ee971){if(_0x2ee971){return _0x2ee971[_0x8e1a('0x23')]()[_0x8e1a('0x22')](function(){_0x1ac4d1[_0x8e1a('0x17')](0xcc)[_0x8e1a('0x18')]();});}};}function handleEntityNotFound(_0x4fa3dc,_0x299179){return function(_0x446e10){if(!_0x446e10){_0x4fa3dc[_0x8e1a('0x16')](0x194);}return _0x446e10;};}function handleError(_0x513825,_0x172cf7){_0x172cf7=_0x172cf7||0x1f4;return function(_0x35588a){logger[_0x8e1a('0x24')](_0x35588a[_0x8e1a('0x25')]);if(_0x35588a[_0x8e1a('0x26')]){delete _0x35588a[_0x8e1a('0x26')];}_0x513825[_0x8e1a('0x17')](_0x172cf7)['send'](_0x35588a);};}exports[_0x8e1a('0x27')]=function(_0x1ec450,_0x2395c2){var _0xc9edd4={},_0x34a6bd={},_0x1dea99={'count':0x0,'rows':[]};var _0x140e2c=_[_0x8e1a('0x28')](db[_0x8e1a('0x29')][_0x8e1a('0x2a')],function(_0x3117d6){return{'name':_0x3117d6[_0x8e1a('0x2b')],'type':_0x3117d6[_0x8e1a('0x2c')][_0x8e1a('0x2d')]};});_0x34a6bd['model']=_[_0x8e1a('0x28')](_0x140e2c,_0x8e1a('0x26'));_0x34a6bd[_0x8e1a('0x2e')]=_[_0x8e1a('0x2f')](_0x1ec450[_0x8e1a('0x2e')]);_0x34a6bd[_0x8e1a('0x30')]=_[_0x8e1a('0x31')](_0x34a6bd[_0x8e1a('0x32')],_0x34a6bd[_0x8e1a('0x2e')]);_0xc9edd4['attributes']=_[_0x8e1a('0x31')](_0x34a6bd[_0x8e1a('0x32')],qs['fields'](_0x1ec450[_0x8e1a('0x2e')]['fields']));_0xc9edd4['attributes']=_0xc9edd4[_0x8e1a('0x33')][_0x8e1a('0x34')]?_0xc9edd4[_0x8e1a('0x33')]:_0x34a6bd[_0x8e1a('0x32')];if(!_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x35')](_0x8e1a('0x36'))){_0xc9edd4[_0x8e1a('0x1c')]=qs[_0x8e1a('0x1c')](_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x1c')]);_0xc9edd4[_0x8e1a('0x1a')]=qs['offset'](_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x1a')]);}_0xc9edd4[_0x8e1a('0x37')]=qs['sort'](_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x38')]);_0xc9edd4[_0x8e1a('0x39')]=qs['filters'](_['pick'](_0x1ec450[_0x8e1a('0x2e')],_0x34a6bd[_0x8e1a('0x30')]),_0x140e2c);if(_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x3a')]){_0xc9edd4[_0x8e1a('0x39')]=_['merge'](_0xc9edd4[_0x8e1a('0x39')],{'$or':_[_0x8e1a('0x28')](_0x140e2c,function(_0x3b46bd){if(_0x3b46bd['type']!==_0x8e1a('0x3b')){var _0x1b89a4={};_0x1b89a4[_0x3b46bd[_0x8e1a('0x26')]]={'$like':'%'+_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x3a')]+'%'};return _0x1b89a4;}})});}_0xc9edd4=_[_0x8e1a('0x3c')]({},_0xc9edd4,_0x1ec450[_0x8e1a('0x3d')]);var _0x4508f6={'where':_0xc9edd4[_0x8e1a('0x39')]};return db[_0x8e1a('0x29')][_0x8e1a('0x1d')](_0x4508f6)[_0x8e1a('0x22')](function(_0x4c6fa1){_0x1dea99[_0x8e1a('0x1d')]=_0x4c6fa1;if(_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x3e')]){_0xc9edd4[_0x8e1a('0x3f')]=[{'all':!![]}];}return db[_0x8e1a('0x29')]['findAll'](_0xc9edd4);})[_0x8e1a('0x22')](function(_0x408f63){_0x1dea99[_0x8e1a('0x40')]=_0x408f63;return _0x1dea99;})[_0x8e1a('0x22')](respondWithFilteredResult(_0x2395c2,_0xc9edd4))['catch'](handleError(_0x2395c2,null));};exports[_0x8e1a('0x41')]=function(_0x5ae598,_0x425ce7){var _0x48b5c9={'raw':!![],'where':{'id':_0x5ae598[_0x8e1a('0x42')]['id']}},_0x23f3a2={};_0x23f3a2[_0x8e1a('0x32')]=_[_0x8e1a('0x2f')](db['JscriptyQuestionReport'][_0x8e1a('0x2a')]);_0x23f3a2[_0x8e1a('0x2e')]=_[_0x8e1a('0x2f')](_0x5ae598[_0x8e1a('0x2e')]);_0x23f3a2[_0x8e1a('0x30')]=_[_0x8e1a('0x31')](_0x23f3a2['model'],_0x23f3a2['query']);_0x48b5c9[_0x8e1a('0x33')]=_[_0x8e1a('0x31')](_0x23f3a2[_0x8e1a('0x32')],qs[_0x8e1a('0x43')](_0x5ae598[_0x8e1a('0x2e')][_0x8e1a('0x43')]));_0x48b5c9['attributes']=_0x48b5c9['attributes']['length']?_0x48b5c9['attributes']:_0x23f3a2[_0x8e1a('0x32')];if(_0x5ae598[_0x8e1a('0x2e')]['includeAll']){_0x48b5c9[_0x8e1a('0x3f')]=[{'all':!![]}];}_0x48b5c9=_[_0x8e1a('0x3c')]({},_0x48b5c9,_0x5ae598[_0x8e1a('0x3d')]);return db[_0x8e1a('0x29')][_0x8e1a('0x44')](_0x48b5c9)['then'](handleEntityNotFound(_0x425ce7,null))[_0x8e1a('0x22')](respondWithResult(_0x425ce7,null))[_0x8e1a('0x45')](handleError(_0x425ce7,null));};exports[_0x8e1a('0x46')]=function(_0x3367d5,_0x3f474e){return db[_0x8e1a('0x29')]['create'](_0x3367d5[_0x8e1a('0x47')],{})[_0x8e1a('0x22')](respondWithResult(_0x3f474e,0xc9))[_0x8e1a('0x45')](handleError(_0x3f474e,null));};exports[_0x8e1a('0x21')]=function(_0xd8a4f6,_0x4811f2){if(_0xd8a4f6['body']['id']){delete _0xd8a4f6[_0x8e1a('0x47')]['id'];}return db['JscriptyQuestionReport'][_0x8e1a('0x44')]({'where':{'id':_0xd8a4f6[_0x8e1a('0x42')]['id']}})[_0x8e1a('0x22')](handleEntityNotFound(_0x4811f2,null))['then'](saveUpdates(_0xd8a4f6[_0x8e1a('0x47')],null))[_0x8e1a('0x22')](respondWithResult(_0x4811f2,null))[_0x8e1a('0x45')](handleError(_0x4811f2,null));};exports[_0x8e1a('0x23')]=function(_0x236a7e,_0x2a63ae){return db[_0x8e1a('0x29')]['find']({'where':{'id':_0x236a7e[_0x8e1a('0x42')]['id']}})[_0x8e1a('0x22')](handleEntityNotFound(_0x2a63ae,null))[_0x8e1a('0x22')](removeEntity(_0x2a63ae,null))['catch'](handleError(_0x2a63ae,null));};exports[_0x8e1a('0x48')]=function(_0x348a0b,_0x13ccba){return db[_0x8e1a('0x29')][_0x8e1a('0x48')]()['then'](respondWithResult(_0x13ccba,null))[_0x8e1a('0x45')](handleError(_0x13ccba,null));};
\ No newline at end of file
+var _0x21fe=['rawAttributes','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','map','JscriptyQuestionReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','includeAll','include','findAll','catch','params'];(function(_0x513bfc,_0x1f6e4a){var _0x50d776=function(_0x48e5a2){while(--_0x48e5a2){_0x513bfc['push'](_0x513bfc['shift']());}};_0x50d776(++_0x1f6e4a);}(_0x21fe,0xd5));var _0xe21f=function(_0x4a82b6,_0xdf9e94){_0x4a82b6=_0x4a82b6-0x0;var _0x506ea5=_0x21fe[_0x4a82b6];return _0x506ea5;};'use strict';var emlformat=require(_0xe21f('0x0'));var rimraf=require(_0xe21f('0x1'));var zipdir=require(_0xe21f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe21f('0x3'));var moment=require(_0xe21f('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe21f('0x5'));var path=require(_0xe21f('0x6'));var sox=require(_0xe21f('0x7'));var csv=require('to-csv');var ejs=require(_0xe21f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xe21f('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe21f('0xa'));var querystring=require(_0xe21f('0xb'));var Papa=require('papaparse');var Redis=require(_0xe21f('0xc'));var authService=require(_0xe21f('0xd'));var qs=require(_0xe21f('0xe'));var as=require(_0xe21f('0xf'));var hardwareService=require(_0xe21f('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xe21f('0x11'));var config=require(_0xe21f('0x12'));var licenseUtil=require(_0xe21f('0x13'));var db=require(_0xe21f('0x14'))['db'];function respondWithStatusCode(_0x47a527,_0xcf97db){_0xcf97db=_0xcf97db||0xcc;return function(_0x4e0088){if(_0x4e0088){return _0x47a527[_0xe21f('0x15')](_0xcf97db);}return _0x47a527[_0xe21f('0x16')](_0xcf97db)[_0xe21f('0x17')]();};}function respondWithResult(_0x12e8ec,_0x230ee8){_0x230ee8=_0x230ee8||0xc8;return function(_0x46edd1){if(_0x46edd1){return _0x12e8ec[_0xe21f('0x16')](_0x230ee8)['json'](_0x46edd1);}};}function respondWithFilteredResult(_0x36ccac,_0xe017a5){return function(_0x32455f){if(_0x32455f){var _0x3b0c44=typeof _0xe017a5['offset']==='undefined'&&typeof _0xe017a5['limit']===_0xe21f('0x18');var _0x14cba5=_0x32455f[_0xe21f('0x19')];var _0x44dcec=_0x3b0c44?0x0:_0xe017a5['offset'];var _0x4d2dc2=_0x3b0c44?_0x32455f[_0xe21f('0x19')]:_0xe017a5[_0xe21f('0x1a')]+_0xe017a5[_0xe21f('0x1b')];var _0x25bd0e;if(_0x4d2dc2>=_0x14cba5){_0x4d2dc2=_0x14cba5;_0x25bd0e=0xc8;}else{_0x25bd0e=0xce;}_0x36ccac[_0xe21f('0x16')](_0x25bd0e);return _0x36ccac[_0xe21f('0x1c')](_0xe21f('0x1d'),_0x44dcec+'-'+_0x4d2dc2+'/'+_0x14cba5)[_0xe21f('0x1e')](_0x32455f);}return null;};}function patchUpdates(_0x182e74){return function(_0x31c05e){try{jsonpatch[_0xe21f('0x1f')](_0x31c05e,_0x182e74,!![]);}catch(_0x475a5d){return BPromise[_0xe21f('0x20')](_0x475a5d);}return _0x31c05e[_0xe21f('0x21')]();};}function saveUpdates(_0x196140,_0x445658){return function(_0x50eaf0){if(_0x50eaf0){return _0x50eaf0[_0xe21f('0x22')](_0x196140)[_0xe21f('0x23')](function(_0x26bc24){return _0x26bc24;});}return null;};}function removeEntity(_0x369699,_0x311c7b){return function(_0x16018c){if(_0x16018c){return _0x16018c['destroy']()[_0xe21f('0x23')](function(){_0x369699[_0xe21f('0x16')](0xcc)[_0xe21f('0x17')]();});}};}function handleEntityNotFound(_0xf16ac5,_0x520c06){return function(_0x419b5f){if(!_0x419b5f){_0xf16ac5[_0xe21f('0x15')](0x194);}return _0x419b5f;};}function handleError(_0x3f64f5,_0xb33908){_0xb33908=_0xb33908||0x1f4;return function(_0x2d3e6e){logger[_0xe21f('0x24')](_0x2d3e6e[_0xe21f('0x25')]);if(_0x2d3e6e[_0xe21f('0x26')]){delete _0x2d3e6e[_0xe21f('0x26')];}_0x3f64f5['status'](_0xb33908)[_0xe21f('0x27')](_0x2d3e6e);};}exports['index']=function(_0x17012d,_0xb6ec64){var _0x3e023c={},_0x45fbdc={},_0x17b939={'count':0x0,'rows':[]};var _0x434a55=_[_0xe21f('0x28')](db[_0xe21f('0x29')]['rawAttributes'],function(_0x4d5802){return{'name':_0x4d5802[_0xe21f('0x2a')],'type':_0x4d5802[_0xe21f('0x2b')]['key']};});_0x45fbdc[_0xe21f('0x2c')]=_[_0xe21f('0x28')](_0x434a55,_0xe21f('0x26'));_0x45fbdc[_0xe21f('0x2d')]=_[_0xe21f('0x2e')](_0x17012d[_0xe21f('0x2d')]);_0x45fbdc[_0xe21f('0x2f')]=_[_0xe21f('0x30')](_0x45fbdc[_0xe21f('0x2c')],_0x45fbdc['query']);_0x3e023c[_0xe21f('0x31')]=_[_0xe21f('0x30')](_0x45fbdc[_0xe21f('0x2c')],qs[_0xe21f('0x32')](_0x17012d[_0xe21f('0x2d')][_0xe21f('0x32')]));_0x3e023c[_0xe21f('0x31')]=_0x3e023c[_0xe21f('0x31')][_0xe21f('0x33')]?_0x3e023c[_0xe21f('0x31')]:_0x45fbdc['model'];if(!_0x17012d[_0xe21f('0x2d')]['hasOwnProperty'](_0xe21f('0x34'))){_0x3e023c['limit']=qs[_0xe21f('0x1b')](_0x17012d[_0xe21f('0x2d')][_0xe21f('0x1b')]);_0x3e023c[_0xe21f('0x1a')]=qs['offset'](_0x17012d[_0xe21f('0x2d')][_0xe21f('0x1a')]);}_0x3e023c['order']=qs[_0xe21f('0x35')](_0x17012d['query']['sort']);_0x3e023c[_0xe21f('0x36')]=qs[_0xe21f('0x2f')](_[_0xe21f('0x37')](_0x17012d[_0xe21f('0x2d')],_0x45fbdc['filters']),_0x434a55);if(_0x17012d['query'][_0xe21f('0x38')]){_0x3e023c['where']=_[_0xe21f('0x39')](_0x3e023c[_0xe21f('0x36')],{'$or':_[_0xe21f('0x28')](_0x434a55,function(_0x577ec5){if(_0x577ec5[_0xe21f('0x2b')]!=='VIRTUAL'){var _0x414167={};_0x414167[_0x577ec5[_0xe21f('0x26')]]={'$like':'%'+_0x17012d[_0xe21f('0x2d')]['filter']+'%'};return _0x414167;}})});}_0x3e023c=_['merge']({},_0x3e023c,_0x17012d['options']);var _0x28c219={'where':_0x3e023c[_0xe21f('0x36')]};return db[_0xe21f('0x29')]['count'](_0x28c219)[_0xe21f('0x23')](function(_0x1eb617){_0x17b939[_0xe21f('0x19')]=_0x1eb617;if(_0x17012d['query'][_0xe21f('0x3a')]){_0x3e023c[_0xe21f('0x3b')]=[{'all':!![]}];}return db[_0xe21f('0x29')][_0xe21f('0x3c')](_0x3e023c);})[_0xe21f('0x23')](function(_0x1706db){_0x17b939['rows']=_0x1706db;return _0x17b939;})['then'](respondWithFilteredResult(_0xb6ec64,_0x3e023c))[_0xe21f('0x3d')](handleError(_0xb6ec64,null));};exports['show']=function(_0x1cbf3b,_0x4eb455){var _0x355ac4={'raw':!![],'where':{'id':_0x1cbf3b[_0xe21f('0x3e')]['id']}},_0x1b14e9={};_0x1b14e9[_0xe21f('0x2c')]=_['keys'](db[_0xe21f('0x29')][_0xe21f('0x3f')]);_0x1b14e9[_0xe21f('0x2d')]=_[_0xe21f('0x2e')](_0x1cbf3b['query']);_0x1b14e9[_0xe21f('0x2f')]=_[_0xe21f('0x30')](_0x1b14e9[_0xe21f('0x2c')],_0x1b14e9[_0xe21f('0x2d')]);_0x355ac4[_0xe21f('0x31')]=_[_0xe21f('0x30')](_0x1b14e9[_0xe21f('0x2c')],qs[_0xe21f('0x32')](_0x1cbf3b[_0xe21f('0x2d')]['fields']));_0x355ac4[_0xe21f('0x31')]=_0x355ac4[_0xe21f('0x31')][_0xe21f('0x33')]?_0x355ac4[_0xe21f('0x31')]:_0x1b14e9[_0xe21f('0x2c')];if(_0x1cbf3b['query']['includeAll']){_0x355ac4['include']=[{'all':!![]}];}_0x355ac4=_[_0xe21f('0x39')]({},_0x355ac4,_0x1cbf3b['options']);return db[_0xe21f('0x29')]['find'](_0x355ac4)[_0xe21f('0x23')](handleEntityNotFound(_0x4eb455,null))[_0xe21f('0x23')](respondWithResult(_0x4eb455,null))['catch'](handleError(_0x4eb455,null));};exports[_0xe21f('0x40')]=function(_0x1a05b9,_0x383379){return db[_0xe21f('0x29')][_0xe21f('0x40')](_0x1a05b9[_0xe21f('0x41')],{})['then'](respondWithResult(_0x383379,0xc9))['catch'](handleError(_0x383379,null));};exports[_0xe21f('0x22')]=function(_0x5bcfe0,_0x108f3a){if(_0x5bcfe0['body']['id']){delete _0x5bcfe0[_0xe21f('0x41')]['id'];}return db['JscriptyQuestionReport'][_0xe21f('0x42')]({'where':{'id':_0x5bcfe0[_0xe21f('0x3e')]['id']}})[_0xe21f('0x23')](handleEntityNotFound(_0x108f3a,null))['then'](saveUpdates(_0x5bcfe0['body'],null))[_0xe21f('0x23')](respondWithResult(_0x108f3a,null))['catch'](handleError(_0x108f3a,null));};exports[_0xe21f('0x43')]=function(_0x3ff7ac,_0x2fc613){return db['JscriptyQuestionReport']['find']({'where':{'id':_0x3ff7ac[_0xe21f('0x3e')]['id']}})[_0xe21f('0x23')](handleEntityNotFound(_0x2fc613,null))[_0xe21f('0x23')](removeEntity(_0x2fc613,null))['catch'](handleError(_0x2fc613,null));};exports[_0xe21f('0x44')]=function(_0x53c420,_0x416101){return db[_0xe21f('0x29')][_0xe21f('0x44')]()[_0xe21f('0x23')](respondWithResult(_0x416101,null))['catch'](handleError(_0x416101,null));};
\ No newline at end of file
index 75fa249..214f2d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4fa=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x11c5e0,_0x482d0c){var _0x251020=function(_0x521961){while(--_0x521961){_0x11c5e0['push'](_0x11c5e0['shift']());}};_0x251020(++_0x482d0c);}(_0xf4fa,0x1ae));var _0xaf4f=function(_0xab2560,_0x4edaaa){_0xab2560=_0xab2560-0x0;var _0x3c1337=_0xf4fa[_0xab2560];return _0x3c1337;};'use strict';var _=require(_0xaf4f('0x0'));var util=require(_0xaf4f('0x1'));var logger=require('../../config/logger')(_0xaf4f('0x2'));var moment=require(_0xaf4f('0x3'));var BPromise=require(_0xaf4f('0x4'));var rp=require(_0xaf4f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf4f('0x6'));var config=require(_0xaf4f('0x7'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0xaf4f('0x8')]=function(_0xcac767,_0x689f83){return _0xcac767[_0xaf4f('0x9')]('JscriptyQuestionReport',attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4e3a=['lodash','util','api','moment','bluebird','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions'];(function(_0x4d2ce0,_0x1d7d76){var _0x2adab1=function(_0x28589c){while(--_0x28589c){_0x4d2ce0['push'](_0x4d2ce0['shift']());}};_0x2adab1(++_0x1d7d76);}(_0x4e3a,0x1ec));var _0xa4e3=function(_0x1a93a5,_0x13f256){_0x1a93a5=_0x1a93a5-0x0;var _0x4893a2=_0x4e3a[_0x1a93a5];return _0x4893a2;};'use strict';var _=require(_0xa4e3('0x0'));var util=require(_0xa4e3('0x1'));var logger=require('../../config/logger')(_0xa4e3('0x2'));var moment=require(_0xa4e3('0x3'));var BPromise=require(_0xa4e3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa4e3('0x5'));var config=require(_0xa4e3('0x6'));var attributes=require(_0xa4e3('0x7'));module[_0xa4e3('0x8')]=function(_0x2c8a00,_0x2dd641){return _0x2c8a00[_0xa4e3('0x9')](_0xa4e3('0xa'),attributes,{'tableName':_0xa4e3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7f335f9..a8fa29c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x421dbb,_0x3b03bf){var _0x5822d5=function(_0x46ded2){while(--_0x46ded2){_0x421dbb['push'](_0x421dbb['shift']());}};_0x5822d5(++_0x3b03bf);}(_0xf65f,0x14a));var _0xff65=function(_0x21ceaf,_0x35fd2c){_0x21ceaf=_0x21ceaf-0x0;var _0x50bb12=_0xf65f[_0x21ceaf];return _0x50bb12;};'use strict';var _=require(_0xff65('0x0'));var util=require('util');var moment=require(_0xff65('0x1'));var BPromise=require(_0xff65('0x2'));var rs=require(_0xff65('0x3'));var fs=require('fs');var Redis=require(_0xff65('0x4'));var db=require(_0xff65('0x5'))['db'];var utils=require(_0xff65('0x6'));var logger=require(_0xff65('0x7'))(_0xff65('0x8'));var config=require(_0xff65('0x9'));var jayson=require(_0xff65('0xa'));var client=jayson[_0xff65('0xb')][_0xff65('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12e4b8,_0x250319,_0x5e0507){return new BPromise(function(_0x35ed8b,_0x736585){return client[_0xff65('0xd')](_0x12e4b8,_0x5e0507)['then'](function(_0x5f129e){logger[_0xff65('0xe')](_0xff65('0xf'),_0x250319,'request\x20sent');logger[_0xff65('0x10')](_0xff65('0x11'),_0x250319,_0xff65('0x12'),JSON['stringify'](_0x5f129e));if(_0x5f129e[_0xff65('0x13')]){if(_0x5f129e[_0xff65('0x13')][_0xff65('0x14')]===0x1f4){logger[_0xff65('0x13')](_0xff65('0xf'),_0x250319,_0x5f129e[_0xff65('0x13')][_0xff65('0x15')]);return _0x736585(_0x5f129e[_0xff65('0x13')][_0xff65('0x15')]);}logger[_0xff65('0x13')](_0xff65('0xf'),_0x250319,_0x5f129e[_0xff65('0x13')][_0xff65('0x15')]);return _0x35ed8b(_0x5f129e['error'][_0xff65('0x15')]);}else{logger[_0xff65('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x250319,'request\x20sent');_0x35ed8b(_0x5f129e[_0xff65('0x16')][_0xff65('0x15')]);}})[_0xff65('0x17')](function(_0x3ab927){logger[_0xff65('0x13')](_0xff65('0xf'),_0x250319,_0x3ab927);_0x736585(_0x3ab927);});});}
\ No newline at end of file
+var _0x18cd=['ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x388b47,_0x5cdac5){var _0x4859df=function(_0x466a16){while(--_0x466a16){_0x388b47['push'](_0x388b47['shift']());}};_0x4859df(++_0x5cdac5);}(_0x18cd,0x1ef));var _0xd18c=function(_0x1b4071,_0x4c616c){_0x1b4071=_0x1b4071-0x0;var _0x3f9141=_0x18cd[_0x1b4071];return _0x3f9141;};'use strict';var _=require(_0xd18c('0x0'));var util=require(_0xd18c('0x1'));var moment=require(_0xd18c('0x2'));var BPromise=require(_0xd18c('0x3'));var rs=require(_0xd18c('0x4'));var fs=require('fs');var Redis=require(_0xd18c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd18c('0x6'));var logger=require('../../config/logger')(_0xd18c('0x7'));var config=require(_0xd18c('0x8'));var jayson=require(_0xd18c('0x9'));var client=jayson[_0xd18c('0xa')][_0xd18c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55c433,_0x6dbd9a,_0x3df0e6){return new BPromise(function(_0x2b9210,_0x53e04d){return client[_0xd18c('0xc')](_0x55c433,_0x3df0e6)[_0xd18c('0xd')](function(_0x39f782){logger[_0xd18c('0xe')](_0xd18c('0xf'),_0x6dbd9a,_0xd18c('0x10'));logger[_0xd18c('0x11')](_0xd18c('0x12'),_0x6dbd9a,'request\x20sent',JSON[_0xd18c('0x13')](_0x39f782));if(_0x39f782[_0xd18c('0x14')]){if(_0x39f782[_0xd18c('0x14')][_0xd18c('0x15')]===0x1f4){logger[_0xd18c('0x14')](_0xd18c('0xf'),_0x6dbd9a,_0x39f782[_0xd18c('0x14')][_0xd18c('0x16')]);return _0x53e04d(_0x39f782[_0xd18c('0x14')][_0xd18c('0x16')]);}logger[_0xd18c('0x14')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x6dbd9a,_0x39f782[_0xd18c('0x14')][_0xd18c('0x16')]);return _0x2b9210(_0x39f782[_0xd18c('0x14')][_0xd18c('0x16')]);}else{logger[_0xd18c('0xe')](_0xd18c('0xf'),_0x6dbd9a,'request\x20sent');_0x2b9210(_0x39f782[_0xd18c('0x17')][_0xd18c('0x16')]);}})[_0xd18c('0x18')](function(_0x4b7669){logger[_0xd18c('0x14')](_0xd18c('0xf'),_0x6dbd9a,_0x4b7669);_0x53e04d(_0x4b7669);});});}
\ No newline at end of file
index 3452132..d85cd44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc3d=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','show','/:id/questions','getQuestions','post','create','put','/:id','delete','destroy','exports','multer','path'];(function(_0x1f5549,_0x3af54f){var _0x2936a1=function(_0x11457a){while(--_0x11457a){_0x1f5549['push'](_0x1f5549['shift']());}};_0x2936a1(++_0x3af54f);}(_0xcc3d,0x166));var _0xdcc3=function(_0x485f8e,_0x5773c0){_0x485f8e=_0x485f8e-0x0;var _0x3a6c58=_0xcc3d[_0x485f8e];return _0x3a6c58;};'use strict';var multer=require(_0xdcc3('0x0'));var util=require('util');var path=require(_0xdcc3('0x1'));var timeout=require(_0xdcc3('0x2'));var express=require('express');var router=express[_0xdcc3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdcc3('0x4'));var interaction=require(_0xdcc3('0x5'));var config=require(_0xdcc3('0x6'));var controller=require('./jscriptySessionReport.controller');router[_0xdcc3('0x7')]('/',auth[_0xdcc3('0x8')](),controller['index']);router[_0xdcc3('0x7')]('/describe',auth['isAuthenticated'](),controller[_0xdcc3('0x9')]);router[_0xdcc3('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xdcc3('0xa')]);router[_0xdcc3('0x7')](_0xdcc3('0xb'),auth['isAuthenticated'](),controller[_0xdcc3('0xc')]);router[_0xdcc3('0xd')]('/',auth['isAuthenticated'](),controller[_0xdcc3('0xe')]);router[_0xdcc3('0xf')](_0xdcc3('0x10'),auth['isAuthenticated'](),controller['update']);router[_0xdcc3('0x11')](_0xdcc3('0x10'),auth[_0xdcc3('0x8')](),controller[_0xdcc3('0x12')]);module[_0xdcc3('0x13')]=router;
\ No newline at end of file
+var _0xf3e9=['put','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','create'];(function(_0x1cfdbf,_0x1bc6d4){var _0x8df4e6=function(_0x5de057){while(--_0x5de057){_0x1cfdbf['push'](_0x1cfdbf['shift']());}};_0x8df4e6(++_0x1bc6d4);}(_0xf3e9,0x1ca));var _0x9f3e=function(_0xa059b6,_0x1f8e28){_0xa059b6=_0xa059b6-0x0;var _0x2e1739=_0xf3e9[_0xa059b6];return _0x2e1739;};'use strict';var multer=require(_0x9f3e('0x0'));var util=require('util');var path=require(_0x9f3e('0x1'));var timeout=require('connect-timeout');var express=require(_0x9f3e('0x2'));var router=express[_0x9f3e('0x3')]();var fs_extra=require(_0x9f3e('0x4'));var auth=require(_0x9f3e('0x5'));var interaction=require(_0x9f3e('0x6'));var config=require('../../config/environment');var controller=require(_0x9f3e('0x7'));router[_0x9f3e('0x8')]('/',auth[_0x9f3e('0x9')](),controller['index']);router[_0x9f3e('0x8')]('/describe',auth[_0x9f3e('0x9')](),controller[_0x9f3e('0xa')]);router[_0x9f3e('0x8')](_0x9f3e('0xb'),auth[_0x9f3e('0x9')](),controller[_0x9f3e('0xc')]);router[_0x9f3e('0x8')](_0x9f3e('0xd'),auth['isAuthenticated'](),controller[_0x9f3e('0xe')]);router[_0x9f3e('0xf')]('/',auth[_0x9f3e('0x9')](),controller[_0x9f3e('0x10')]);router[_0x9f3e('0x11')](_0x9f3e('0xb'),auth[_0x9f3e('0x9')](),controller['update']);router['delete'](_0x9f3e('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x9f3e('0x12')]=router;
\ No newline at end of file
index cc1afdc..6b5b519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf59d=['sequelize','exports','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment'];(function(_0x15c25c,_0x43e172){var _0x41ae4d=function(_0x3acff1){while(--_0x3acff1){_0x15c25c['push'](_0x15c25c['shift']());}};_0x41ae4d(++_0x43e172);}(_0xf59d,0x95));var _0xdf59=function(_0x26f866,_0x1900bc){_0x26f866=_0x26f866-0x0;var _0x1abef3=_0xf59d[_0x26f866];return _0x1abef3;};'use strict';var moment=require(_0xdf59('0x0'));var Sequelize=require(_0xdf59('0x1'));module[_0xdf59('0x2')]={'starttime':{'type':Sequelize[_0xdf59('0x3')],'set':function(_0x48c7f6){this[_0xdf59('0x4')](_0xdf59('0x5'),_0x48c7f6);this[_0xdf59('0x4')](_0xdf59('0x6'),moment()[_0xdf59('0x7')](_0xdf59('0x8')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xdf59('0x9')]},'projectname':{'type':Sequelize[_0xdf59('0x9')]},'queue':{'type':Sequelize[_0xdf59('0x9')]},'uniqueid':{'type':Sequelize[_0xdf59('0x9')]},'calleridname':{'type':Sequelize[_0xdf59('0x9')]},'calleridnum':{'type':Sequelize[_0xdf59('0x9')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x3f71=['sequelize','exports','DATE','setDataValue','starttime','endtime','format','STRING','BOOLEAN','moment'];(function(_0x43ea14,_0x4c8e4f){var _0x1fae21=function(_0x3d4d9c){while(--_0x3d4d9c){_0x43ea14['push'](_0x43ea14['shift']());}};_0x1fae21(++_0x4c8e4f);}(_0x3f71,0x10d));var _0x13f7=function(_0x51fe5f,_0x1d8632){_0x51fe5f=_0x51fe5f-0x0;var _0x4abce9=_0x3f71[_0x51fe5f];return _0x4abce9;};'use strict';var moment=require(_0x13f7('0x0'));var Sequelize=require(_0x13f7('0x1'));module[_0x13f7('0x2')]={'starttime':{'type':Sequelize[_0x13f7('0x3')],'set':function(_0x1a2945){this[_0x13f7('0x4')](_0x13f7('0x5'),_0x1a2945);this[_0x13f7('0x4')](_0x13f7('0x6'),moment()[_0x13f7('0x7')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x13f7('0x3')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x13f7('0x8')]},'queue':{'type':Sequelize[_0x13f7('0x8')]},'uniqueid':{'type':Sequelize[_0x13f7('0x8')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x13f7('0x8')]},'completed':{'type':Sequelize[_0x13f7('0x9')],'defaultValue':![]}};
\ No newline at end of file
index 7a78ef2..3339eed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8345=['nolimit','order','sort','where','filter','merge','options','includeAll','rows','catch','params','find','create','update','body','describe','getQuestions','findOne','JscriptyQuestionReport','pick','SessionId','include','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','map','JscriptySessionReport','rawAttributes','fieldName','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8345,0x1a7));var _0x5834=function(_0xa62163,_0x4a26fb){_0xa62163=_0xa62163-0x0;var _0x46b4fb=_0x8345[_0xa62163];return _0x46b4fb;};'use strict';var emlformat=require(_0x5834('0x0'));var rimraf=require(_0x5834('0x1'));var zipdir=require(_0x5834('0x2'));var jsonpatch=require(_0x5834('0x3'));var rp=require('request-promise');var moment=require(_0x5834('0x4'));var BPromise=require(_0x5834('0x5'));var Mustache=require(_0x5834('0x6'));var util=require(_0x5834('0x7'));var path=require('path');var sox=require(_0x5834('0x8'));var csv=require('to-csv');var ejs=require(_0x5834('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5834('0xa'));var squel=require(_0x5834('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5834('0xc'));var toCsv=require(_0x5834('0xd'));var querystring=require(_0x5834('0xe'));var Papa=require(_0x5834('0xf'));var Redis=require(_0x5834('0x10'));var authService=require(_0x5834('0x11'));var qs=require(_0x5834('0x12'));var as=require(_0x5834('0x13'));var hardwareService=require(_0x5834('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x5834('0x15'));var config=require(_0x5834('0x16'));var licenseUtil=require(_0x5834('0x17'));var db=require(_0x5834('0x18'))['db'];function respondWithStatusCode(_0x3ca13c,_0x3ca2cf){_0x3ca2cf=_0x3ca2cf||0xcc;return function(_0x2f0ad4){if(_0x2f0ad4){return _0x3ca13c['sendStatus'](_0x3ca2cf);}return _0x3ca13c[_0x5834('0x19')](_0x3ca2cf)[_0x5834('0x1a')]();};}function respondWithResult(_0x420e19,_0x367493){_0x367493=_0x367493||0xc8;return function(_0x216988){if(_0x216988){return _0x420e19[_0x5834('0x19')](_0x367493)[_0x5834('0x1b')](_0x216988);}};}function respondWithFilteredResult(_0x2e21a4,_0x526ccf){return function(_0x23906e){if(_0x23906e){var _0x41eb15=typeof _0x526ccf[_0x5834('0x1c')]==='undefined'&&typeof _0x526ccf[_0x5834('0x1d')]===_0x5834('0x1e');var _0x33562f=_0x23906e[_0x5834('0x1f')];var _0x228e05=_0x41eb15?0x0:_0x526ccf[_0x5834('0x1c')];var _0x562d05=_0x41eb15?_0x23906e[_0x5834('0x1f')]:_0x526ccf[_0x5834('0x1c')]+_0x526ccf[_0x5834('0x1d')];var _0x3a2f42;if(_0x562d05>=_0x33562f){_0x562d05=_0x33562f;_0x3a2f42=0xc8;}else{_0x3a2f42=0xce;}_0x2e21a4[_0x5834('0x19')](_0x3a2f42);return _0x2e21a4[_0x5834('0x20')](_0x5834('0x21'),_0x228e05+'-'+_0x562d05+'/'+_0x33562f)[_0x5834('0x1b')](_0x23906e);}return null;};}function patchUpdates(_0x3725b3){return function(_0x1a74a6){try{jsonpatch[_0x5834('0x22')](_0x1a74a6,_0x3725b3,!![]);}catch(_0x56de2f){return BPromise[_0x5834('0x23')](_0x56de2f);}return _0x1a74a6[_0x5834('0x24')]();};}function saveUpdates(_0x5f443f,_0x252c0b){return function(_0x32b7d8){if(_0x32b7d8){return _0x32b7d8['update'](_0x5f443f)[_0x5834('0x25')](function(_0x355bf0){return _0x355bf0;});}return null;};}function removeEntity(_0x281cdc,_0x22cf83){return function(_0x265940){if(_0x265940){return _0x265940[_0x5834('0x26')]()[_0x5834('0x25')](function(){_0x281cdc[_0x5834('0x19')](0xcc)[_0x5834('0x1a')]();});}};}function handleEntityNotFound(_0x1a4414,_0x266231){return function(_0x481976){if(!_0x481976){_0x1a4414[_0x5834('0x27')](0x194);}return _0x481976;};}function handleError(_0x190c42,_0x59e8ad){_0x59e8ad=_0x59e8ad||0x1f4;return function(_0x4ce7fa){logger[_0x5834('0x28')](_0x4ce7fa['stack']);if(_0x4ce7fa[_0x5834('0x29')]){delete _0x4ce7fa[_0x5834('0x29')];}_0x190c42[_0x5834('0x19')](_0x59e8ad)[_0x5834('0x2a')](_0x4ce7fa);};}exports['index']=function(_0x2cff4d,_0x96a7d2){var _0x421540={},_0x504489={},_0x27190d={'count':0x0,'rows':[]};var _0x51d492=_[_0x5834('0x2b')](db[_0x5834('0x2c')][_0x5834('0x2d')],function(_0x1063d0){return{'name':_0x1063d0[_0x5834('0x2e')],'type':_0x1063d0[_0x5834('0x2f')]['key']};});_0x504489['model']=_['map'](_0x51d492,_0x5834('0x29'));_0x504489['query']=_[_0x5834('0x30')](_0x2cff4d[_0x5834('0x31')]);_0x504489[_0x5834('0x32')]=_['intersection'](_0x504489[_0x5834('0x33')],_0x504489[_0x5834('0x31')]);_0x421540['attributes']=_[_0x5834('0x34')](_0x504489[_0x5834('0x33')],qs[_0x5834('0x35')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x35')]));_0x421540[_0x5834('0x36')]=_0x421540[_0x5834('0x36')][_0x5834('0x37')]?_0x421540[_0x5834('0x36')]:_0x504489[_0x5834('0x33')];if(!_0x2cff4d[_0x5834('0x31')][_0x5834('0x38')](_0x5834('0x39'))){_0x421540[_0x5834('0x1d')]=qs[_0x5834('0x1d')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x1d')]);_0x421540[_0x5834('0x1c')]=qs[_0x5834('0x1c')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x1c')]);}_0x421540[_0x5834('0x3a')]=qs[_0x5834('0x3b')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x3b')]);_0x421540[_0x5834('0x3c')]=qs[_0x5834('0x32')](_['pick'](_0x2cff4d[_0x5834('0x31')],_0x504489[_0x5834('0x32')]),_0x51d492);if(_0x2cff4d[_0x5834('0x31')][_0x5834('0x3d')]){_0x421540[_0x5834('0x3c')]=_[_0x5834('0x3e')](_0x421540[_0x5834('0x3c')],{'$or':_['map'](_0x51d492,function(_0x26f7db){if(_0x26f7db['type']!=='VIRTUAL'){var _0x5289c1={};_0x5289c1[_0x26f7db[_0x5834('0x29')]]={'$like':'%'+_0x2cff4d['query']['filter']+'%'};return _0x5289c1;}})});}_0x421540=_[_0x5834('0x3e')]({},_0x421540,_0x2cff4d[_0x5834('0x3f')]);var _0x471023={'where':_0x421540[_0x5834('0x3c')]};return db[_0x5834('0x2c')][_0x5834('0x1f')](_0x471023)[_0x5834('0x25')](function(_0x5c9530){_0x27190d[_0x5834('0x1f')]=_0x5c9530;if(_0x2cff4d[_0x5834('0x31')][_0x5834('0x40')]){_0x421540['include']=[{'all':!![]}];}return db[_0x5834('0x2c')]['findAll'](_0x421540);})[_0x5834('0x25')](function(_0xa784e2){_0x27190d[_0x5834('0x41')]=_0xa784e2;return _0x27190d;})[_0x5834('0x25')](respondWithFilteredResult(_0x96a7d2,_0x421540))[_0x5834('0x42')](handleError(_0x96a7d2,null));};exports['show']=function(_0xa0a13c,_0x17b181){var _0x3d11d0={'raw':!![],'where':{'id':_0xa0a13c[_0x5834('0x43')]['id']}},_0x4cc40c={};_0x4cc40c[_0x5834('0x33')]=_[_0x5834('0x30')](db[_0x5834('0x2c')]['rawAttributes']);_0x4cc40c[_0x5834('0x31')]=_[_0x5834('0x30')](_0xa0a13c[_0x5834('0x31')]);_0x4cc40c[_0x5834('0x32')]=_[_0x5834('0x34')](_0x4cc40c[_0x5834('0x33')],_0x4cc40c[_0x5834('0x31')]);_0x3d11d0[_0x5834('0x36')]=_[_0x5834('0x34')](_0x4cc40c['model'],qs[_0x5834('0x35')](_0xa0a13c[_0x5834('0x31')]['fields']));_0x3d11d0[_0x5834('0x36')]=_0x3d11d0[_0x5834('0x36')][_0x5834('0x37')]?_0x3d11d0['attributes']:_0x4cc40c[_0x5834('0x33')];if(_0xa0a13c['query'][_0x5834('0x40')]){_0x3d11d0['include']=[{'all':!![]}];}_0x3d11d0=_[_0x5834('0x3e')]({},_0x3d11d0,_0xa0a13c[_0x5834('0x3f')]);return db[_0x5834('0x2c')][_0x5834('0x44')](_0x3d11d0)[_0x5834('0x25')](handleEntityNotFound(_0x17b181,null))[_0x5834('0x25')](respondWithResult(_0x17b181,null))['catch'](handleError(_0x17b181,null));};exports[_0x5834('0x45')]=function(_0x2e6d67,_0xcce2f5){return db[_0x5834('0x2c')][_0x5834('0x45')](_0x2e6d67['body'],{})[_0x5834('0x25')](respondWithResult(_0xcce2f5,0xc9))[_0x5834('0x42')](handleError(_0xcce2f5,null));};exports[_0x5834('0x46')]=function(_0x19560e,_0x5c6999){if(_0x19560e[_0x5834('0x47')]['id']){delete _0x19560e[_0x5834('0x47')]['id'];}return db[_0x5834('0x2c')][_0x5834('0x44')]({'where':{'id':_0x19560e[_0x5834('0x43')]['id']}})['then'](handleEntityNotFound(_0x5c6999,null))['then'](saveUpdates(_0x19560e[_0x5834('0x47')],null))[_0x5834('0x25')](respondWithResult(_0x5c6999,null))[_0x5834('0x42')](handleError(_0x5c6999,null));};exports[_0x5834('0x26')]=function(_0x256fe2,_0xe15ac5){return db[_0x5834('0x2c')][_0x5834('0x44')]({'where':{'id':_0x256fe2[_0x5834('0x43')]['id']}})['then'](handleEntityNotFound(_0xe15ac5,null))[_0x5834('0x25')](removeEntity(_0xe15ac5,null))[_0x5834('0x42')](handleError(_0xe15ac5,null));};exports[_0x5834('0x48')]=function(_0x37f4fc,_0x5c6eed){return db[_0x5834('0x2c')]['describe']()[_0x5834('0x25')](respondWithResult(_0x5c6eed,null))[_0x5834('0x42')](handleError(_0x5c6eed,null));};exports[_0x5834('0x49')]=function(_0x3c7e8e,_0x464f55,_0x1671a1){var _0xd34b7b={'raw':!![],'where':{}};var _0x36461a={};var _0x344f84={'count':0x0,'rows':[]};return db[_0x5834('0x2c')][_0x5834('0x4a')]({'where':{'id':_0x3c7e8e[_0x5834('0x43')]['id']}})[_0x5834('0x25')](handleEntityNotFound(_0x464f55,null))[_0x5834('0x25')](function(_0x50c63d){if(_0x50c63d){_0x36461a['model']=_[_0x5834('0x30')](db[_0x5834('0x4b')][_0x5834('0x2d')]);_0x36461a[_0x5834('0x31')]=_['keys'](_0x3c7e8e[_0x5834('0x31')]);_0x36461a[_0x5834('0x32')]=_[_0x5834('0x34')](_0x36461a['model'],_0x36461a[_0x5834('0x31')]);_0xd34b7b[_0x5834('0x36')]=_[_0x5834('0x34')](_0x36461a['model'],qs[_0x5834('0x35')](_0x3c7e8e[_0x5834('0x31')]['fields']));_0xd34b7b[_0x5834('0x36')]=_0xd34b7b[_0x5834('0x36')][_0x5834('0x37')]?_0xd34b7b[_0x5834('0x36')]:_0x36461a[_0x5834('0x33')];if(!_0x3c7e8e[_0x5834('0x31')][_0x5834('0x38')](_0x5834('0x39'))){_0xd34b7b[_0x5834('0x1d')]=qs[_0x5834('0x1d')](_0x3c7e8e[_0x5834('0x31')][_0x5834('0x1d')]);_0xd34b7b[_0x5834('0x1c')]=qs['offset'](_0x3c7e8e[_0x5834('0x31')]['offset']);}_0xd34b7b[_0x5834('0x3a')]=qs[_0x5834('0x3b')](_0x3c7e8e[_0x5834('0x31')][_0x5834('0x3b')]);_0xd34b7b[_0x5834('0x3c')]=qs['filters'](_[_0x5834('0x4c')](_0x3c7e8e[_0x5834('0x31')],_0x36461a['filters']));_0xd34b7b[_0x5834('0x3c')][_0x5834('0x4d')]=_0x50c63d['id'];if(_0x3c7e8e['query']['filter']){_0xd34b7b[_0x5834('0x3c')]=_[_0x5834('0x3e')](_0xd34b7b['where'],{'$or':_['map'](_0xd34b7b['attributes'],function(_0x1cc984){var _0x45cba7={};_0x45cba7[_0x1cc984]={'$like':'%'+_0x3c7e8e[_0x5834('0x31')][_0x5834('0x3d')]+'%'};return _0x45cba7;})});}_0xd34b7b=_[_0x5834('0x3e')]({},_0xd34b7b,_0x3c7e8e[_0x5834('0x3f')]);return db[_0x5834('0x4b')][_0x5834('0x1f')]({'where':_0xd34b7b['where']})['then'](function(_0x5d2c30){_0x344f84[_0x5834('0x1f')]=_0x5d2c30;if(_0x3c7e8e[_0x5834('0x31')][_0x5834('0x40')]){_0xd34b7b[_0x5834('0x4e')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x5834('0x4f')](_0xd34b7b);})[_0x5834('0x25')](function(_0x4bc028){_0x344f84[_0x5834('0x41')]=_0x4bc028;return _0x344f84;});}})[_0x5834('0x25')](respondWithFilteredResult(_0x464f55,_0xd34b7b))['catch'](handleError(_0x464f55,null));};
\ No newline at end of file
+var _0xace4=['findOne','JscriptyQuestionReport','SessionId','options','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','status','send','index','map','JscriptySessionReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe'];(function(_0x55be65,_0x339ad1){var _0x7bc3b9=function(_0x171e59){while(--_0x171e59){_0x55be65['push'](_0x55be65['shift']());}};_0x7bc3b9(++_0x339ad1);}(_0xace4,0xa2));var _0x4ace=function(_0x4b26b5,_0x4f71fd){_0x4b26b5=_0x4b26b5-0x0;var _0x4dec71=_0xace4[_0x4b26b5];return _0x4dec71;};'use strict';var emlformat=require(_0x4ace('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4ace('0x1'));var jsonpatch=require(_0x4ace('0x2'));var rp=require(_0x4ace('0x3'));var moment=require('moment');var BPromise=require(_0x4ace('0x4'));var Mustache=require(_0x4ace('0x5'));var util=require(_0x4ace('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4ace('0x7'));var ejs=require(_0x4ace('0x8'));var fs=require('fs');var fs_extra=require(_0x4ace('0x9'));var _=require(_0x4ace('0xa'));var squel=require(_0x4ace('0xb'));var crypto=require(_0x4ace('0xc'));var jsforce=require(_0x4ace('0xd'));var deskjs=require(_0x4ace('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4ace('0xf'));var Redis=require(_0x4ace('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4ace('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4ace('0x12'));var utils=require(_0x4ace('0x13'));var config=require(_0x4ace('0x14'));var licenseUtil=require(_0x4ace('0x15'));var db=require(_0x4ace('0x16'))['db'];function respondWithStatusCode(_0x5ce893,_0x25aaa8){_0x25aaa8=_0x25aaa8||0xcc;return function(_0x322cba){if(_0x322cba){return _0x5ce893[_0x4ace('0x17')](_0x25aaa8);}return _0x5ce893['status'](_0x25aaa8)[_0x4ace('0x18')]();};}function respondWithResult(_0x58a298,_0x396b18){_0x396b18=_0x396b18||0xc8;return function(_0x2528a0){if(_0x2528a0){return _0x58a298['status'](_0x396b18)['json'](_0x2528a0);}};}function respondWithFilteredResult(_0x438484,_0x442e20){return function(_0x59c1f1){if(_0x59c1f1){var _0xf7fd0b=typeof _0x442e20[_0x4ace('0x19')]===_0x4ace('0x1a')&&typeof _0x442e20['limit']===_0x4ace('0x1a');var _0x3b6c11=_0x59c1f1[_0x4ace('0x1b')];var _0xa979f5=_0xf7fd0b?0x0:_0x442e20['offset'];var _0x1baea8=_0xf7fd0b?_0x59c1f1['count']:_0x442e20['offset']+_0x442e20[_0x4ace('0x1c')];var _0x10e01f;if(_0x1baea8>=_0x3b6c11){_0x1baea8=_0x3b6c11;_0x10e01f=0xc8;}else{_0x10e01f=0xce;}_0x438484['status'](_0x10e01f);return _0x438484[_0x4ace('0x1d')](_0x4ace('0x1e'),_0xa979f5+'-'+_0x1baea8+'/'+_0x3b6c11)[_0x4ace('0x1f')](_0x59c1f1);}return null;};}function patchUpdates(_0x5d3dc3){return function(_0x4d486b){try{jsonpatch[_0x4ace('0x20')](_0x4d486b,_0x5d3dc3,!![]);}catch(_0x540cc1){return BPromise[_0x4ace('0x21')](_0x540cc1);}return _0x4d486b[_0x4ace('0x22')]();};}function saveUpdates(_0x12f34c,_0x2e9a14){return function(_0x1aca4c){if(_0x1aca4c){return _0x1aca4c[_0x4ace('0x23')](_0x12f34c)[_0x4ace('0x24')](function(_0x1e03c8){return _0x1e03c8;});}return null;};}function removeEntity(_0x432425,_0xd11c2a){return function(_0x482cde){if(_0x482cde){return _0x482cde[_0x4ace('0x25')]()[_0x4ace('0x24')](function(){_0x432425['status'](0xcc)[_0x4ace('0x18')]();});}};}function handleEntityNotFound(_0x1e2591,_0x4ccc1a){return function(_0xae6b6b){if(!_0xae6b6b){_0x1e2591[_0x4ace('0x17')](0x194);}return _0xae6b6b;};}function handleError(_0xa9771a,_0x4e6e64){_0x4e6e64=_0x4e6e64||0x1f4;return function(_0x282272){logger['error'](_0x282272[_0x4ace('0x26')]);if(_0x282272['name']){delete _0x282272[_0x4ace('0x27')];}_0xa9771a[_0x4ace('0x28')](_0x4e6e64)[_0x4ace('0x29')](_0x282272);};}exports[_0x4ace('0x2a')]=function(_0x440a29,_0x4ce151){var _0x1c9598={},_0x4a50f0={},_0x50a01e={'count':0x0,'rows':[]};var _0x35a559=_[_0x4ace('0x2b')](db[_0x4ace('0x2c')][_0x4ace('0x2d')],function(_0x253035){return{'name':_0x253035['fieldName'],'type':_0x253035['type'][_0x4ace('0x2e')]};});_0x4a50f0[_0x4ace('0x2f')]=_[_0x4ace('0x2b')](_0x35a559,_0x4ace('0x27'));_0x4a50f0[_0x4ace('0x30')]=_[_0x4ace('0x31')](_0x440a29[_0x4ace('0x30')]);_0x4a50f0[_0x4ace('0x32')]=_[_0x4ace('0x33')](_0x4a50f0['model'],_0x4a50f0[_0x4ace('0x30')]);_0x1c9598[_0x4ace('0x34')]=_[_0x4ace('0x33')](_0x4a50f0[_0x4ace('0x2f')],qs[_0x4ace('0x35')](_0x440a29[_0x4ace('0x30')][_0x4ace('0x35')]));_0x1c9598['attributes']=_0x1c9598[_0x4ace('0x34')][_0x4ace('0x36')]?_0x1c9598['attributes']:_0x4a50f0[_0x4ace('0x2f')];if(!_0x440a29[_0x4ace('0x30')][_0x4ace('0x37')](_0x4ace('0x38'))){_0x1c9598[_0x4ace('0x1c')]=qs['limit'](_0x440a29[_0x4ace('0x30')][_0x4ace('0x1c')]);_0x1c9598['offset']=qs[_0x4ace('0x19')](_0x440a29['query'][_0x4ace('0x19')]);}_0x1c9598[_0x4ace('0x39')]=qs[_0x4ace('0x3a')](_0x440a29[_0x4ace('0x30')][_0x4ace('0x3a')]);_0x1c9598[_0x4ace('0x3b')]=qs['filters'](_[_0x4ace('0x3c')](_0x440a29[_0x4ace('0x30')],_0x4a50f0[_0x4ace('0x32')]),_0x35a559);if(_0x440a29[_0x4ace('0x30')][_0x4ace('0x3d')]){_0x1c9598[_0x4ace('0x3b')]=_[_0x4ace('0x3e')](_0x1c9598['where'],{'$or':_[_0x4ace('0x2b')](_0x35a559,function(_0x4f1ca8){if(_0x4f1ca8['type']!==_0x4ace('0x3f')){var _0x4fa4e4={};_0x4fa4e4[_0x4f1ca8[_0x4ace('0x27')]]={'$like':'%'+_0x440a29[_0x4ace('0x30')][_0x4ace('0x3d')]+'%'};return _0x4fa4e4;}})});}_0x1c9598=_['merge']({},_0x1c9598,_0x440a29['options']);var _0x361e22={'where':_0x1c9598[_0x4ace('0x3b')]};return db[_0x4ace('0x2c')]['count'](_0x361e22)[_0x4ace('0x24')](function(_0xddc32){_0x50a01e[_0x4ace('0x1b')]=_0xddc32;if(_0x440a29[_0x4ace('0x30')][_0x4ace('0x40')]){_0x1c9598[_0x4ace('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x4ace('0x42')](_0x1c9598);})[_0x4ace('0x24')](function(_0x4fb1eb){_0x50a01e[_0x4ace('0x43')]=_0x4fb1eb;return _0x50a01e;})[_0x4ace('0x24')](respondWithFilteredResult(_0x4ce151,_0x1c9598))[_0x4ace('0x44')](handleError(_0x4ce151,null));};exports[_0x4ace('0x45')]=function(_0xa6dc38,_0x3322b4){var _0x22553e={'raw':!![],'where':{'id':_0xa6dc38[_0x4ace('0x46')]['id']}},_0x48af86={};_0x48af86[_0x4ace('0x2f')]=_[_0x4ace('0x31')](db['JscriptySessionReport'][_0x4ace('0x2d')]);_0x48af86[_0x4ace('0x30')]=_[_0x4ace('0x31')](_0xa6dc38[_0x4ace('0x30')]);_0x48af86[_0x4ace('0x32')]=_[_0x4ace('0x33')](_0x48af86[_0x4ace('0x2f')],_0x48af86[_0x4ace('0x30')]);_0x22553e[_0x4ace('0x34')]=_['intersection'](_0x48af86[_0x4ace('0x2f')],qs['fields'](_0xa6dc38[_0x4ace('0x30')][_0x4ace('0x35')]));_0x22553e['attributes']=_0x22553e[_0x4ace('0x34')][_0x4ace('0x36')]?_0x22553e[_0x4ace('0x34')]:_0x48af86[_0x4ace('0x2f')];if(_0xa6dc38[_0x4ace('0x30')]['includeAll']){_0x22553e[_0x4ace('0x41')]=[{'all':!![]}];}_0x22553e=_[_0x4ace('0x3e')]({},_0x22553e,_0xa6dc38['options']);return db[_0x4ace('0x2c')][_0x4ace('0x47')](_0x22553e)[_0x4ace('0x24')](handleEntityNotFound(_0x3322b4,null))[_0x4ace('0x24')](respondWithResult(_0x3322b4,null))['catch'](handleError(_0x3322b4,null));};exports['create']=function(_0x4db511,_0x5dcda7){return db['JscriptySessionReport'][_0x4ace('0x48')](_0x4db511[_0x4ace('0x49')],{})[_0x4ace('0x24')](respondWithResult(_0x5dcda7,0xc9))[_0x4ace('0x44')](handleError(_0x5dcda7,null));};exports['update']=function(_0x2a4fd7,_0x23d6ac){if(_0x2a4fd7[_0x4ace('0x49')]['id']){delete _0x2a4fd7[_0x4ace('0x49')]['id'];}return db[_0x4ace('0x2c')]['find']({'where':{'id':_0x2a4fd7['params']['id']}})[_0x4ace('0x24')](handleEntityNotFound(_0x23d6ac,null))[_0x4ace('0x24')](saveUpdates(_0x2a4fd7[_0x4ace('0x49')],null))['then'](respondWithResult(_0x23d6ac,null))[_0x4ace('0x44')](handleError(_0x23d6ac,null));};exports[_0x4ace('0x25')]=function(_0x2cbfd7,_0x5b41b0){return db[_0x4ace('0x2c')]['find']({'where':{'id':_0x2cbfd7[_0x4ace('0x46')]['id']}})[_0x4ace('0x24')](handleEntityNotFound(_0x5b41b0,null))[_0x4ace('0x24')](removeEntity(_0x5b41b0,null))[_0x4ace('0x44')](handleError(_0x5b41b0,null));};exports[_0x4ace('0x4a')]=function(_0x10fbf0,_0x19b1e4){return db[_0x4ace('0x2c')]['describe']()[_0x4ace('0x24')](respondWithResult(_0x19b1e4,null))[_0x4ace('0x44')](handleError(_0x19b1e4,null));};exports['getQuestions']=function(_0x347ae8,_0x54c245,_0x121b2b){var _0x2d7e24={'raw':!![],'where':{}};var _0x2cb1da={};var _0x170b12={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x4ace('0x4b')]({'where':{'id':_0x347ae8[_0x4ace('0x46')]['id']}})['then'](handleEntityNotFound(_0x54c245,null))[_0x4ace('0x24')](function(_0x428302){if(_0x428302){_0x2cb1da[_0x4ace('0x2f')]=_['keys'](db[_0x4ace('0x4c')][_0x4ace('0x2d')]);_0x2cb1da[_0x4ace('0x30')]=_[_0x4ace('0x31')](_0x347ae8[_0x4ace('0x30')]);_0x2cb1da[_0x4ace('0x32')]=_[_0x4ace('0x33')](_0x2cb1da[_0x4ace('0x2f')],_0x2cb1da[_0x4ace('0x30')]);_0x2d7e24[_0x4ace('0x34')]=_[_0x4ace('0x33')](_0x2cb1da[_0x4ace('0x2f')],qs[_0x4ace('0x35')](_0x347ae8[_0x4ace('0x30')]['fields']));_0x2d7e24['attributes']=_0x2d7e24[_0x4ace('0x34')][_0x4ace('0x36')]?_0x2d7e24['attributes']:_0x2cb1da[_0x4ace('0x2f')];if(!_0x347ae8['query'][_0x4ace('0x37')](_0x4ace('0x38'))){_0x2d7e24[_0x4ace('0x1c')]=qs[_0x4ace('0x1c')](_0x347ae8[_0x4ace('0x30')][_0x4ace('0x1c')]);_0x2d7e24['offset']=qs[_0x4ace('0x19')](_0x347ae8[_0x4ace('0x30')][_0x4ace('0x19')]);}_0x2d7e24[_0x4ace('0x39')]=qs[_0x4ace('0x3a')](_0x347ae8[_0x4ace('0x30')]['sort']);_0x2d7e24[_0x4ace('0x3b')]=qs[_0x4ace('0x32')](_['pick'](_0x347ae8['query'],_0x2cb1da['filters']));_0x2d7e24['where'][_0x4ace('0x4d')]=_0x428302['id'];if(_0x347ae8[_0x4ace('0x30')][_0x4ace('0x3d')]){_0x2d7e24['where']=_['merge'](_0x2d7e24[_0x4ace('0x3b')],{'$or':_[_0x4ace('0x2b')](_0x2d7e24[_0x4ace('0x34')],function(_0x47d535){var _0x5d364a={};_0x5d364a[_0x47d535]={'$like':'%'+_0x347ae8[_0x4ace('0x30')][_0x4ace('0x3d')]+'%'};return _0x5d364a;})});}_0x2d7e24=_[_0x4ace('0x3e')]({},_0x2d7e24,_0x347ae8[_0x4ace('0x4e')]);return db['JscriptyQuestionReport'][_0x4ace('0x1b')]({'where':_0x2d7e24['where']})[_0x4ace('0x24')](function(_0x549e43){_0x170b12[_0x4ace('0x1b')]=_0x549e43;if(_0x347ae8[_0x4ace('0x30')][_0x4ace('0x40')]){_0x2d7e24[_0x4ace('0x41')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x4ace('0x42')](_0x2d7e24);})[_0x4ace('0x24')](function(_0x476a35){_0x170b12['rows']=_0x476a35;return _0x170b12;});}})['then'](respondWithFilteredResult(_0x54c245,_0x2d7e24))[_0x4ace('0x44')](handleError(_0x54c245,null));};
\ No newline at end of file
index 6fcd0f2..9c82eba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6c=['rimraf','../../config/environment','exports','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x343865,_0x12e575){_0x343865=_0x343865-0x0;var _0x4a7533=_0x3c6c[_0x343865];return _0x4a7533;};'use strict';var _=require(_0xc3c6('0x0'));var util=require('util');var logger=require(_0xc3c6('0x1'))(_0xc3c6('0x2'));var moment=require(_0xc3c6('0x3'));var BPromise=require(_0xc3c6('0x4'));var rp=require(_0xc3c6('0x5'));var fs=require('fs');var path=require(_0xc3c6('0x6'));var rimraf=require(_0xc3c6('0x7'));var config=require(_0xc3c6('0x8'));var attributes=require('./jscriptySessionReport.attributes');module[_0xc3c6('0x9')]=function(_0x4a2ca1,_0xe7731e){return _0x4a2ca1['define']('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','JscriptySessionReport','report_jscripty_sessions','lodash','util'];(function(_0x2d1bb6,_0x143353){var _0x163b98=function(_0x8a31df){while(--_0x8a31df){_0x2d1bb6['push'](_0x2d1bb6['shift']());}};_0x163b98(++_0x143353);}(_0x7a54,0x106));var _0x47a5=function(_0x23d4f3,_0x42630a){_0x23d4f3=_0x23d4f3-0x0;var _0x43f6a7=_0x7a54[_0x23d4f3];return _0x43f6a7;};'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 a3588be..c06ac34 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','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1431fa,_0x161c6f){var _0x29fdef=function(_0x40f71b){while(--_0x40f71b){_0x1431fa['push'](_0x1431fa['shift']());}};_0x29fdef(++_0x161c6f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xc4aa[_0x2e4aa2];return _0x5e6092;};'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')]('JscriptySessionReport,\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 _0xa456=['message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x169045,_0x36511c){var _0x5a78ef=function(_0x21ccd0){while(--_0x21ccd0){_0x169045['push'](_0x169045['shift']());}};_0x5a78ef(++_0x36511c);}(_0xa456,0x142));var _0x6a45=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0xa456[_0x3e44fa];return _0x2a0aba;};'use strict';var _=require(_0x6a45('0x0'));var util=require(_0x6a45('0x1'));var moment=require(_0x6a45('0x2'));var BPromise=require(_0x6a45('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a45('0x4'));var db=require(_0x6a45('0x5'))['db'];var utils=require(_0x6a45('0x6'));var logger=require('../../config/logger')(_0x6a45('0x7'));var config=require(_0x6a45('0x8'));var jayson=require(_0x6a45('0x9'));var client=jayson[_0x6a45('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25cf8d,_0x26bfc0,_0x214514){return new BPromise(function(_0x19e67c,_0x3deb09){return client['request'](_0x25cf8d,_0x214514)[_0x6a45('0xb')](function(_0x517040){logger[_0x6a45('0xc')](_0x6a45('0xd'),_0x26bfc0,_0x6a45('0xe'));logger[_0x6a45('0xf')](_0x6a45('0x10'),_0x26bfc0,'request\x20sent',JSON['stringify'](_0x517040));if(_0x517040[_0x6a45('0x11')]){if(_0x517040[_0x6a45('0x11')]['code']===0x1f4){logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x26bfc0,_0x517040[_0x6a45('0x11')][_0x6a45('0x12')]);return _0x3deb09(_0x517040[_0x6a45('0x11')][_0x6a45('0x12')]);}logger[_0x6a45('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x26bfc0,_0x517040['error'][_0x6a45('0x12')]);return _0x19e67c(_0x517040[_0x6a45('0x11')]['message']);}else{logger[_0x6a45('0xc')](_0x6a45('0xd'),_0x26bfc0,_0x6a45('0xe'));_0x19e67c(_0x517040[_0x6a45('0x13')]['message']);}})['catch'](function(_0x49023f){logger[_0x6a45('0x11')](_0x6a45('0xd'),_0x26bfc0,_0x49023f);_0x3deb09(_0x49023f);});});}
\ No newline at end of file
index 02091b7..61d8d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46fc=['isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','put','/:id'];(function(_0x4a53e2,_0x13321e){var _0x3f2d76=function(_0x50c5cf){while(--_0x50c5cf){_0x4a53e2['push'](_0x4a53e2['shift']());}};_0x3f2d76(++_0x13321e);}(_0x46fc,0x103));var _0xc46f=function(_0x419ce6,_0x15df62){_0x419ce6=_0x419ce6-0x0;var _0x1c64ca=_0x46fc[_0x419ce6];return _0x1c64ca;};'use strict';var multer=require(_0xc46f('0x0'));var util=require(_0xc46f('0x1'));var path=require(_0xc46f('0x2'));var timeout=require(_0xc46f('0x3'));var express=require(_0xc46f('0x4'));var router=express[_0xc46f('0x5')]();var fs_extra=require(_0xc46f('0x6'));var auth=require(_0xc46f('0x7'));var interaction=require(_0xc46f('0x8'));var config=require('../../config/environment');var controller=require('./license.controller');router[_0xc46f('0x9')]('/',controller[_0xc46f('0xa')]);router[_0xc46f('0xb')](_0xc46f('0xc'),auth[_0xc46f('0xd')](),controller[_0xc46f('0xe')]);module[_0xc46f('0xf')]=router;
\ No newline at end of file
+var _0x4677=['get','index','put','/:id','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller'];(function(_0x3c9e55,_0x9467b5){var _0x4fbbe0=function(_0x31cc0c){while(--_0x31cc0c){_0x3c9e55['push'](_0x3c9e55['shift']());}};_0x4fbbe0(++_0x9467b5);}(_0x4677,0x155));var _0x7467=function(_0x46db71,_0x56c50e){_0x46db71=_0x46db71-0x0;var _0x494405=_0x4677[_0x46db71];return _0x494405;};'use strict';var multer=require(_0x7467('0x0'));var util=require('util');var path=require(_0x7467('0x1'));var timeout=require(_0x7467('0x2'));var express=require(_0x7467('0x3'));var router=express['Router']();var fs_extra=require(_0x7467('0x4'));var auth=require(_0x7467('0x5'));var interaction=require(_0x7467('0x6'));var config=require(_0x7467('0x7'));var controller=require(_0x7467('0x8'));router[_0x7467('0x9')]('/',controller[_0x7467('0xa')]);router[_0x7467('0xb')](_0x7467('0xc'),auth['isAuthenticated'](),controller['update']);module[_0x7467('0xd')]=router;
\ No newline at end of file
index 4b57c64..2f5331e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac81=['STRING','INTEGER','exports','TEXT'];(function(_0x2e4a42,_0x38d181){var _0x109f87=function(_0x5ab685){while(--_0x5ab685){_0x2e4a42['push'](_0x2e4a42['shift']());}};_0x109f87(++_0x38d181);}(_0xac81,0x17a));var _0x1ac8=function(_0x542f6f,_0x85f9d9){_0x542f6f=_0x542f6f-0x0;var _0x45da64=_0xac81[_0x542f6f];return _0x45da64;};'use strict';var Sequelize=require('sequelize');module[_0x1ac8('0x0')]={'license':{'type':Sequelize[_0x1ac8('0x1')]},'data1':{'type':Sequelize[_0x1ac8('0x2')]},'data2':{'type':Sequelize[_0x1ac8('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x1ac8('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbb9d=['INTEGER','sequelize','exports','TEXT','STRING'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xbb9d,0xd3));var _0xdbb9=function(_0x303391,_0x23fda1){_0x303391=_0x303391-0x0;var _0x743207=_0xbb9d[_0x303391];return _0x743207;};'use strict';var Sequelize=require(_0xdbb9('0x0'));module[_0xdbb9('0x1')]={'license':{'type':Sequelize[_0xdbb9('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xdbb9('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xdbb9('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 29f1349..839a7a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','options','getLicense','catch','body','License','find','checkLicense','key','demo','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x326f,0xd1));var _0xf326=function(_0x136d7f,_0x488574){_0x136d7f=_0x136d7f-0x0;var _0x119bdb=_0x326f[_0x136d7f];return _0x119bdb;};'use strict';var emlformat=require(_0xf326('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf326('0x1'));var rp=require(_0xf326('0x2'));var moment=require(_0xf326('0x3'));var BPromise=require(_0xf326('0x4'));var Mustache=require(_0xf326('0x5'));var util=require(_0xf326('0x6'));var path=require(_0xf326('0x7'));var sox=require(_0xf326('0x8'));var csv=require(_0xf326('0x9'));var ejs=require(_0xf326('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf326('0xb'));var squel=require(_0xf326('0xc'));var crypto=require(_0xf326('0xd'));var jsforce=require(_0xf326('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf326('0xf'));var Redis=require(_0xf326('0x10'));var authService=require(_0xf326('0x11'));var qs=require(_0xf326('0x12'));var as=require(_0xf326('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf326('0x14'))('api');var utils=require(_0xf326('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf326('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3162f9,_0x9ed463){_0x9ed463=_0x9ed463||0xcc;return function(_0x4b3966){if(_0x4b3966){return _0x3162f9[_0xf326('0x17')](_0x9ed463);}return _0x3162f9[_0xf326('0x18')](_0x9ed463)[_0xf326('0x19')]();};}function respondWithResult(_0x17a098,_0x5c8483){_0x5c8483=_0x5c8483||0xc8;return function(_0x45c1b6){if(_0x45c1b6){return _0x17a098['status'](_0x5c8483)['json'](_0x45c1b6);}};}function respondWithFilteredResult(_0xdf21d9,_0x11f6d2){return function(_0x1f2e5a){if(_0x1f2e5a){var _0xa63d1a=typeof _0x11f6d2[_0xf326('0x1a')]===_0xf326('0x1b')&&typeof _0x11f6d2[_0xf326('0x1c')]===_0xf326('0x1b');var _0x5a682a=_0x1f2e5a[_0xf326('0x1d')];var _0x453100=_0xa63d1a?0x0:_0x11f6d2[_0xf326('0x1a')];var _0x31ffb9=_0xa63d1a?_0x1f2e5a[_0xf326('0x1d')]:_0x11f6d2[_0xf326('0x1a')]+_0x11f6d2['limit'];var _0x4a5b6c;if(_0x31ffb9>=_0x5a682a){_0x31ffb9=_0x5a682a;_0x4a5b6c=0xc8;}else{_0x4a5b6c=0xce;}_0xdf21d9['status'](_0x4a5b6c);return _0xdf21d9[_0xf326('0x1e')](_0xf326('0x1f'),_0x453100+'-'+_0x31ffb9+'/'+_0x5a682a)['json'](_0x1f2e5a);}return null;};}function patchUpdates(_0x4cabce){return function(_0x128c68){try{jsonpatch['apply'](_0x128c68,_0x4cabce,!![]);}catch(_0x5b6d3c){return BPromise[_0xf326('0x20')](_0x5b6d3c);}return _0x128c68[_0xf326('0x21')]();};}function saveUpdates(_0x549b46,_0x5aa184){return function(_0x19b8ba){if(_0x19b8ba){return _0x19b8ba[_0xf326('0x22')](_0x549b46)['then'](function(_0x337ed5){return _0x337ed5;});}return null;};}function removeEntity(_0x1b9039,_0x43c53e){return function(_0x295752){if(_0x295752){return _0x295752[_0xf326('0x23')]()[_0xf326('0x24')](function(){_0x1b9039['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f31f6,_0x520d85){return function(_0x1a2c4e){if(!_0x1a2c4e){_0x4f31f6[_0xf326('0x17')](0x194);}return _0x1a2c4e;};}function handleError(_0x1ff2b5,_0x148953){_0x148953=_0x148953||0x1f4;return function(_0x410237){logger['error'](_0x410237[_0xf326('0x25')]);if(_0x410237[_0xf326('0x26')]){delete _0x410237[_0xf326('0x26')];}_0x1ff2b5['status'](_0x148953)[_0xf326('0x27')](_0x410237);};}var utilLicense=require('../../config/license/util');exports['index']=function(_0x6a8e89,_0x1ae23a){var _0x2fa28e={'raw':!![],'where':{'id':0x1}},_0x5dbe63={};_0x5dbe63[_0xf326('0x28')]=_[_0xf326('0x29')](db['License'][_0xf326('0x2a')]);_0x5dbe63[_0xf326('0x2b')]=_[_0xf326('0x29')](_0x6a8e89[_0xf326('0x2b')]);_0x5dbe63[_0xf326('0x2c')]=_[_0xf326('0x2d')](_0x5dbe63[_0xf326('0x28')],_0x5dbe63[_0xf326('0x2b')]);_0x2fa28e[_0xf326('0x2e')]=_[_0xf326('0x2d')](_0x5dbe63['model'],qs[_0xf326('0x2f')](_0x6a8e89[_0xf326('0x2b')][_0xf326('0x2f')]));_0x2fa28e['attributes']=_0x2fa28e[_0xf326('0x2e')][_0xf326('0x30')]?_0x2fa28e[_0xf326('0x2e')]:_0x5dbe63['model'];_0x2fa28e=_['merge']({},_0x2fa28e,_0x6a8e89[_0xf326('0x31')]);return utilLicense[_0xf326('0x32')](_0x2fa28e)[_0xf326('0x24')](respondWithResult(_0x1ae23a,null))[_0xf326('0x33')](handleError(_0x1ae23a,null));};exports[_0xf326('0x22')]=function(_0x2e8a64,_0x62585a){if(_0x2e8a64[_0xf326('0x34')]['id']){delete _0x2e8a64['body']['id'];}return db[_0xf326('0x35')][_0xf326('0x36')]({'where':{'id':_0x2e8a64['params']['id']}})[_0xf326('0x24')](handleEntityNotFound(_0x62585a,null))['then'](function(_0xce1cbb){var _0x481b64=_0xce1cbb['get']({'plain':!![]});return utilLicense[_0xf326('0x37')](_0x481b64,_0x2e8a64['body'][_0xf326('0x38')]);})['then'](function(_0x310dbb){if(!_0x310dbb[_0xf326('0x39')]){return saveUpdates(_0x2e8a64[_0xf326('0x34')],null);}return _0x310dbb;})['then'](respondWithResult(_0x62585a,null))[_0xf326('0x33')](handleError(_0x62585a,null));};
\ No newline at end of file
+var _0xf494=['fields','length','merge','options','getLicense','body','License','find','params','get','key','demo','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','../../config/license/util','index','model','rawAttributes','query','keys','filters','intersection','attributes'];(function(_0x5317b5,_0x4dfd6e){var _0x3b7ce2=function(_0xc146d6){while(--_0xc146d6){_0x5317b5['push'](_0x5317b5['shift']());}};_0x3b7ce2(++_0x4dfd6e);}(_0xf494,0x1c6));var _0x4f49=function(_0x2e6a69,_0x1ba014){_0x2e6a69=_0x2e6a69-0x0;var _0x583b2a=_0xf494[_0x2e6a69];return _0x583b2a;};'use strict';var emlformat=require(_0x4f49('0x0'));var rimraf=require(_0x4f49('0x1'));var zipdir=require(_0x4f49('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4f49('0x3'));var moment=require(_0x4f49('0x4'));var BPromise=require(_0x4f49('0x5'));var Mustache=require(_0x4f49('0x6'));var util=require(_0x4f49('0x7'));var path=require(_0x4f49('0x8'));var sox=require(_0x4f49('0x9'));var csv=require(_0x4f49('0xa'));var ejs=require(_0x4f49('0xb'));var fs=require('fs');var fs_extra=require(_0x4f49('0xc'));var _=require(_0x4f49('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4f49('0xe'));var deskjs=require(_0x4f49('0xf'));var toCsv=require(_0x4f49('0xa'));var querystring=require(_0x4f49('0x10'));var Papa=require(_0x4f49('0x11'));var Redis=require(_0x4f49('0x12'));var authService=require(_0x4f49('0x13'));var qs=require(_0x4f49('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4f49('0x15'));var logger=require(_0x4f49('0x16'))('api');var utils=require(_0x4f49('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4f49('0x18'))['db'];function respondWithStatusCode(_0x12527d,_0x4bf89f){_0x4bf89f=_0x4bf89f||0xcc;return function(_0x1e1c37){if(_0x1e1c37){return _0x12527d[_0x4f49('0x19')](_0x4bf89f);}return _0x12527d[_0x4f49('0x1a')](_0x4bf89f)[_0x4f49('0x1b')]();};}function respondWithResult(_0x1a0f1e,_0x2f0131){_0x2f0131=_0x2f0131||0xc8;return function(_0xfdb477){if(_0xfdb477){return _0x1a0f1e['status'](_0x2f0131)[_0x4f49('0x1c')](_0xfdb477);}};}function respondWithFilteredResult(_0x1f2d0d,_0x415e83){return function(_0x5878f4){if(_0x5878f4){var _0x5bdfaf=typeof _0x415e83[_0x4f49('0x1d')]===_0x4f49('0x1e')&&typeof _0x415e83[_0x4f49('0x1f')]==='undefined';var _0x1dccfd=_0x5878f4[_0x4f49('0x20')];var _0x4e85df=_0x5bdfaf?0x0:_0x415e83['offset'];var _0x5bb23b=_0x5bdfaf?_0x5878f4['count']:_0x415e83['offset']+_0x415e83[_0x4f49('0x1f')];var _0x1834f4;if(_0x5bb23b>=_0x1dccfd){_0x5bb23b=_0x1dccfd;_0x1834f4=0xc8;}else{_0x1834f4=0xce;}_0x1f2d0d[_0x4f49('0x1a')](_0x1834f4);return _0x1f2d0d[_0x4f49('0x21')]('Content-Range',_0x4e85df+'-'+_0x5bb23b+'/'+_0x1dccfd)[_0x4f49('0x1c')](_0x5878f4);}return null;};}function patchUpdates(_0x2aed27){return function(_0x197a49){try{jsonpatch[_0x4f49('0x22')](_0x197a49,_0x2aed27,!![]);}catch(_0xea82f8){return BPromise['reject'](_0xea82f8);}return _0x197a49[_0x4f49('0x23')]();};}function saveUpdates(_0x357446,_0x3ae590){return function(_0x53b57d){if(_0x53b57d){return _0x53b57d[_0x4f49('0x24')](_0x357446)[_0x4f49('0x25')](function(_0x32ca7b){return _0x32ca7b;});}return null;};}function removeEntity(_0x43c458,_0x9d30aa){return function(_0x36187b){if(_0x36187b){return _0x36187b['destroy']()['then'](function(){_0x43c458[_0x4f49('0x1a')](0xcc)[_0x4f49('0x1b')]();});}};}function handleEntityNotFound(_0x4fedbb,_0x408552){return function(_0x2c1519){if(!_0x2c1519){_0x4fedbb[_0x4f49('0x19')](0x194);}return _0x2c1519;};}function handleError(_0x525950,_0xc54070){_0xc54070=_0xc54070||0x1f4;return function(_0x2eed1c){logger[_0x4f49('0x26')](_0x2eed1c[_0x4f49('0x27')]);if(_0x2eed1c[_0x4f49('0x28')]){delete _0x2eed1c[_0x4f49('0x28')];}_0x525950['status'](_0xc54070)['send'](_0x2eed1c);};}var utilLicense=require(_0x4f49('0x29'));exports[_0x4f49('0x2a')]=function(_0x605c91,_0x560050){var _0x3cbfbd={'raw':!![],'where':{'id':0x1}},_0x206203={};_0x206203[_0x4f49('0x2b')]=_['keys'](db['License'][_0x4f49('0x2c')]);_0x206203[_0x4f49('0x2d')]=_[_0x4f49('0x2e')](_0x605c91['query']);_0x206203[_0x4f49('0x2f')]=_[_0x4f49('0x30')](_0x206203[_0x4f49('0x2b')],_0x206203[_0x4f49('0x2d')]);_0x3cbfbd[_0x4f49('0x31')]=_[_0x4f49('0x30')](_0x206203[_0x4f49('0x2b')],qs[_0x4f49('0x32')](_0x605c91[_0x4f49('0x2d')][_0x4f49('0x32')]));_0x3cbfbd[_0x4f49('0x31')]=_0x3cbfbd[_0x4f49('0x31')][_0x4f49('0x33')]?_0x3cbfbd[_0x4f49('0x31')]:_0x206203[_0x4f49('0x2b')];_0x3cbfbd=_[_0x4f49('0x34')]({},_0x3cbfbd,_0x605c91[_0x4f49('0x35')]);return utilLicense[_0x4f49('0x36')](_0x3cbfbd)[_0x4f49('0x25')](respondWithResult(_0x560050,null))['catch'](handleError(_0x560050,null));};exports[_0x4f49('0x24')]=function(_0x46b7ba,_0x24f568){if(_0x46b7ba[_0x4f49('0x37')]['id']){delete _0x46b7ba[_0x4f49('0x37')]['id'];}return db[_0x4f49('0x38')][_0x4f49('0x39')]({'where':{'id':_0x46b7ba[_0x4f49('0x3a')]['id']}})[_0x4f49('0x25')](handleEntityNotFound(_0x24f568,null))[_0x4f49('0x25')](function(_0x44e6a0){var _0x343365=_0x44e6a0[_0x4f49('0x3b')]({'plain':!![]});return utilLicense['checkLicense'](_0x343365,_0x46b7ba[_0x4f49('0x37')][_0x4f49('0x3c')]);})[_0x4f49('0x25')](function(_0x26014f){if(!_0x26014f[_0x4f49('0x3d')]){return saveUpdates(_0x46b7ba[_0x4f49('0x37')],null);}return _0x26014f;})[_0x4f49('0x25')](respondWithResult(_0x24f568,null))[_0x4f49('0x3e')](handleError(_0x24f568,null));};
\ No newline at end of file
index 2d75a1f..5d019d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7741=['define','License','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./license.attributes'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0x7741,0x1af));var _0x1774=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x7741[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0x1774('0x0'));var util=require(_0x1774('0x1'));var logger=require(_0x1774('0x2'))(_0x1774('0x3'));var moment=require(_0x1774('0x4'));var BPromise=require(_0x1774('0x5'));var rp=require(_0x1774('0x6'));var fs=require('fs');var path=require(_0x1774('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1774('0x8'));module['exports']=function(_0x3d2853,_0x290449){return _0x3d2853[_0x1774('0x9')](_0x1774('0xa'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa788=['rimraf','./license.attributes','exports','define','license','lodash','util','api','bluebird','request-promise','path'];(function(_0x2d8d86,_0x16e75d){var _0x4d91a4=function(_0x557136){while(--_0x557136){_0x2d8d86['push'](_0x2d8d86['shift']());}};_0x4d91a4(++_0x16e75d);}(_0xa788,0xec));var _0x8a78=function(_0x4c5355,_0x5b6c9c){_0x4c5355=_0x4c5355-0x0;var _0xa46102=_0xa788[_0x4c5355];return _0xa46102;};'use strict';var _=require(_0x8a78('0x0'));var util=require(_0x8a78('0x1'));var logger=require('../../config/logger')(_0x8a78('0x2'));var moment=require('moment');var BPromise=require(_0x8a78('0x3'));var rp=require(_0x8a78('0x4'));var fs=require('fs');var path=require(_0x8a78('0x5'));var rimraf=require(_0x8a78('0x6'));var config=require('../../config/environment');var attributes=require(_0x8a78('0x7'));module[_0x8a78('0x8')]=function(_0x23da82,_0x7c9914){return _0x23da82[_0x8a78('0x9')]('License',attributes,{'tableName':_0x8a78('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e60013..1696980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc816=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','License,\x20%s,\x20%s','request\x20sent','License,\x20%s,\x20%s,\x20%s'];(function(_0x499e28,_0x2d0c3e){var _0x4b8c09=function(_0x2aa2ac){while(--_0x2aa2ac){_0x499e28['push'](_0x499e28['shift']());}};_0x4b8c09(++_0x2d0c3e);}(_0xc816,0x1ea));var _0x6c81=function(_0x3632ee,_0x33d413){_0x3632ee=_0x3632ee-0x0;var _0x306dab=_0xc816[_0x3632ee];return _0x306dab;};'use strict';var _=require(_0x6c81('0x0'));var util=require(_0x6c81('0x1'));var moment=require(_0x6c81('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c81('0x3'));var fs=require('fs');var Redis=require(_0x6c81('0x4'));var db=require(_0x6c81('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6c81('0x6'))(_0x6c81('0x7'));var config=require(_0x6c81('0x8'));var jayson=require(_0x6c81('0x9'));var client=jayson[_0x6c81('0xa')][_0x6c81('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2037ba,_0x2aa8af,_0x1f8e13){return new BPromise(function(_0x169a8d,_0x4871d2){return client[_0x6c81('0xc')](_0x2037ba,_0x1f8e13)['then'](function(_0x540251){logger['info'](_0x6c81('0xd'),_0x2aa8af,_0x6c81('0xe'));logger['debug'](_0x6c81('0xf'),_0x2aa8af,_0x6c81('0xe'),JSON[_0x6c81('0x10')](_0x540251));if(_0x540251[_0x6c81('0x11')]){if(_0x540251[_0x6c81('0x11')][_0x6c81('0x12')]===0x1f4){logger['error'](_0x6c81('0xd'),_0x2aa8af,_0x540251[_0x6c81('0x11')][_0x6c81('0x13')]);return _0x4871d2(_0x540251['error'][_0x6c81('0x13')]);}logger[_0x6c81('0x11')](_0x6c81('0xd'),_0x2aa8af,_0x540251[_0x6c81('0x11')]['message']);return _0x169a8d(_0x540251['error'][_0x6c81('0x13')]);}else{logger['info'](_0x6c81('0xd'),_0x2aa8af,'request\x20sent');_0x169a8d(_0x540251[_0x6c81('0x14')][_0x6c81('0x13')]);}})[_0x6c81('0x15')](function(_0x447fde){logger[_0x6c81('0x11')](_0x6c81('0xd'),_0x2aa8af,_0x447fde);_0x4871d2(_0x447fde);});});}
\ No newline at end of file
+var _0xf2c8=['catch','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','debug','request\x20sent','stringify','error','code','License,\x20%s,\x20%s','message','result'];(function(_0x3787b0,_0x213623){var _0x37f354=function(_0x21878c){while(--_0x21878c){_0x3787b0['push'](_0x3787b0['shift']());}};_0x37f354(++_0x213623);}(_0xf2c8,0xe5));var _0x8f2c=function(_0x1270b7,_0x1b0ad5){_0x1270b7=_0x1270b7-0x0;var _0x351c18=_0xf2c8[_0x1270b7];return _0x351c18;};'use strict';var _=require(_0x8f2c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8f2c('0x1'));var db=require(_0x8f2c('0x2'))['db'];var utils=require(_0x8f2c('0x3'));var logger=require(_0x8f2c('0x4'))(_0x8f2c('0x5'));var config=require('../../config/environment');var jayson=require(_0x8f2c('0x6'));var client=jayson[_0x8f2c('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x220b82,_0x216a38,_0x3f3b3f){return new BPromise(function(_0x2a438a,_0x4ef2bc){return client[_0x8f2c('0x8')](_0x220b82,_0x3f3b3f)['then'](function(_0x87fa76){logger[_0x8f2c('0x9')]('License,\x20%s,\x20%s',_0x216a38,'request\x20sent');logger[_0x8f2c('0xa')]('License,\x20%s,\x20%s,\x20%s',_0x216a38,_0x8f2c('0xb'),JSON[_0x8f2c('0xc')](_0x87fa76));if(_0x87fa76['error']){if(_0x87fa76[_0x8f2c('0xd')][_0x8f2c('0xe')]===0x1f4){logger[_0x8f2c('0xd')](_0x8f2c('0xf'),_0x216a38,_0x87fa76['error'][_0x8f2c('0x10')]);return _0x4ef2bc(_0x87fa76[_0x8f2c('0xd')][_0x8f2c('0x10')]);}logger['error'](_0x8f2c('0xf'),_0x216a38,_0x87fa76[_0x8f2c('0xd')]['message']);return _0x2a438a(_0x87fa76[_0x8f2c('0xd')][_0x8f2c('0x10')]);}else{logger[_0x8f2c('0x9')](_0x8f2c('0xf'),_0x216a38,'request\x20sent');_0x2a438a(_0x87fa76[_0x8f2c('0x11')][_0x8f2c('0x10')]);}})[_0x8f2c('0x12')](function(_0xe4edc2){logger[_0x8f2c('0xd')]('License,\x20%s,\x20%s',_0x216a38,_0xe4edc2);_0x4ef2bc(_0xe4edc2);});});}
\ No newline at end of file
index 8e88b9b..32151c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07f1=['./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getInteractions','getApplications','/:id/messages','getMessages','verifySmtp','/:id/users','addDisposition','post','addAnswer','create','addImap','addSmtp','addInteraction','/:id/applications','addApplications','send','addAgents','put','update','delete','/:id/canned_answers','removeImap','destroy','removeAgents','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x11e254,_0x4387aa){var _0x2e73e9=function(_0x4278f3){while(--_0x4278f3){_0x11e254['push'](_0x11e254['shift']());}};_0x2e73e9(++_0x4387aa);}(_0x07f1,0xaf));var _0x107f=function(_0x226af5,_0x299ba5){_0x226af5=_0x226af5-0x0;var _0x1ef295=_0x07f1[_0x226af5];return _0x1ef295;};'use strict';var multer=require(_0x107f('0x0'));var util=require(_0x107f('0x1'));var path=require(_0x107f('0x2'));var timeout=require('connect-timeout');var express=require(_0x107f('0x3'));var router=express[_0x107f('0x4')]();var fs_extra=require(_0x107f('0x5'));var auth=require(_0x107f('0x6'));var interaction=require(_0x107f('0x7'));var config=require(_0x107f('0x8'));var controller=require(_0x107f('0x9'));router[_0x107f('0xa')]('/',auth[_0x107f('0xb')](),controller[_0x107f('0xc')]);router[_0x107f('0xa')](_0x107f('0xd'),auth[_0x107f('0xb')](),controller[_0x107f('0xe')]);router[_0x107f('0xa')](_0x107f('0xf'),auth[_0x107f('0xb')](),controller['show']);router[_0x107f('0xa')](_0x107f('0x10'),auth[_0x107f('0xb')](),controller[_0x107f('0x11')]);router[_0x107f('0xa')]('/:id/canned_answers',auth[_0x107f('0xb')](),controller[_0x107f('0x12')]);router[_0x107f('0xa')](_0x107f('0x13'),auth[_0x107f('0xb')](),controller[_0x107f('0x14')]);router[_0x107f('0xa')](_0x107f('0x15'),auth['isAuthenticated'](),controller['getSmtp']);router[_0x107f('0xa')]('/:id/interactions',auth[_0x107f('0xb')](),controller[_0x107f('0x16')]);router['get']('/:id/applications',auth['isAuthenticated'](),controller[_0x107f('0x17')]);router['get'](_0x107f('0x18'),auth[_0x107f('0xb')](),controller[_0x107f('0x19')]);router['get']('/:id/verify',auth['isAuthenticated'](),controller[_0x107f('0x1a')]);router[_0x107f('0xa')](_0x107f('0x1b'),auth[_0x107f('0xb')](),controller['getAgents']);router['post']('/:id/dispositions',auth[_0x107f('0xb')](),controller[_0x107f('0x1c')]);router[_0x107f('0x1d')]('/:id/canned_answers',auth[_0x107f('0xb')](),controller[_0x107f('0x1e')]);router[_0x107f('0x1d')]('/',auth[_0x107f('0xb')](),controller[_0x107f('0x1f')]);router[_0x107f('0x1d')](_0x107f('0x13'),auth['isAuthenticated'](),controller[_0x107f('0x20')]);router[_0x107f('0x1d')](_0x107f('0x15'),auth['isAuthenticated'](),controller[_0x107f('0x21')]);router[_0x107f('0x1d')]('/:id/interactions',auth[_0x107f('0xb')](),controller[_0x107f('0x22')]);router['post'](_0x107f('0x23'),auth['isAuthenticated'](),controller[_0x107f('0x24')]);router[_0x107f('0x1d')]('/:id/send',auth['isAuthenticated'](),controller[_0x107f('0x25')]);router['post'](_0x107f('0x1b'),auth[_0x107f('0xb')](),controller[_0x107f('0x26')]);router[_0x107f('0x27')](_0x107f('0xf'),auth[_0x107f('0xb')](),controller[_0x107f('0x28')]);router[_0x107f('0x29')](_0x107f('0x10'),auth[_0x107f('0xb')](),controller['removeDispositions']);router[_0x107f('0x29')](_0x107f('0x2a'),auth[_0x107f('0xb')](),controller['removeAnswers']);router['delete'](_0x107f('0x13'),auth[_0x107f('0xb')](),controller[_0x107f('0x2b')]);router[_0x107f('0x29')](_0x107f('0x15'),auth[_0x107f('0xb')](),controller['removeSmtp']);router[_0x107f('0x29')](_0x107f('0xf'),auth[_0x107f('0xb')](),controller[_0x107f('0x2c')]);router[_0x107f('0x29')](_0x107f('0x1b'),auth[_0x107f('0xb')](),controller[_0x107f('0x2d')]);module['exports']=router;
\ No newline at end of file
+var _0x117d=['/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','verifySmtp','/:id/users','getAgents','post','/:id/canned_answers','addAnswer','create','addImap','addSmtp','addInteraction','send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp'];(function(_0x1e61fa,_0x20207e){var _0x214ffa=function(_0x570d68){while(--_0x570d68){_0x1e61fa['push'](_0x1e61fa['shift']());}};_0x214ffa(++_0x20207e);}(_0x117d,0x1d3));var _0xd117=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0x117d[_0x21f9c2];return _0x3da17f;};'use strict';var multer=require(_0xd117('0x0'));var util=require(_0xd117('0x1'));var path=require(_0xd117('0x2'));var timeout=require(_0xd117('0x3'));var express=require(_0xd117('0x4'));var router=express[_0xd117('0x5')]();var fs_extra=require(_0xd117('0x6'));var auth=require(_0xd117('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd117('0x8'));var controller=require(_0xd117('0x9'));router[_0xd117('0xa')]('/',auth[_0xd117('0xb')](),controller[_0xd117('0xc')]);router[_0xd117('0xa')]('/describe',auth[_0xd117('0xb')](),controller[_0xd117('0xd')]);router[_0xd117('0xa')](_0xd117('0xe'),auth[_0xd117('0xb')](),controller[_0xd117('0xf')]);router['get'](_0xd117('0x10'),auth[_0xd117('0xb')](),controller[_0xd117('0x11')]);router['get']('/:id/canned_answers',auth[_0xd117('0xb')](),controller[_0xd117('0x12')]);router[_0xd117('0xa')](_0xd117('0x13'),auth[_0xd117('0xb')](),controller[_0xd117('0x14')]);router[_0xd117('0xa')](_0xd117('0x15'),auth['isAuthenticated'](),controller[_0xd117('0x16')]);router[_0xd117('0xa')](_0xd117('0x17'),auth['isAuthenticated'](),controller['getInteractions']);router[_0xd117('0xa')](_0xd117('0x18'),auth[_0xd117('0xb')](),controller[_0xd117('0x19')]);router['get'](_0xd117('0x1a'),auth[_0xd117('0xb')](),controller[_0xd117('0x1b')]);router[_0xd117('0xa')]('/:id/verify',auth[_0xd117('0xb')](),controller[_0xd117('0x1c')]);router['get'](_0xd117('0x1d'),auth[_0xd117('0xb')](),controller[_0xd117('0x1e')]);router[_0xd117('0x1f')](_0xd117('0x10'),auth[_0xd117('0xb')](),controller['addDisposition']);router[_0xd117('0x1f')](_0xd117('0x20'),auth[_0xd117('0xb')](),controller[_0xd117('0x21')]);router[_0xd117('0x1f')]('/',auth[_0xd117('0xb')](),controller[_0xd117('0x22')]);router['post'](_0xd117('0x13'),auth[_0xd117('0xb')](),controller[_0xd117('0x23')]);router[_0xd117('0x1f')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0xd117('0x24')]);router[_0xd117('0x1f')](_0xd117('0x17'),auth[_0xd117('0xb')](),controller[_0xd117('0x25')]);router[_0xd117('0x1f')](_0xd117('0x18'),auth[_0xd117('0xb')](),controller['addApplications']);router['post']('/:id/send',auth['isAuthenticated'](),controller[_0xd117('0x26')]);router[_0xd117('0x1f')](_0xd117('0x1d'),auth[_0xd117('0xb')](),controller[_0xd117('0x27')]);router[_0xd117('0x28')](_0xd117('0xe'),auth['isAuthenticated'](),controller[_0xd117('0x29')]);router[_0xd117('0x2a')](_0xd117('0x10'),auth['isAuthenticated'](),controller[_0xd117('0x2b')]);router[_0xd117('0x2a')](_0xd117('0x20'),auth[_0xd117('0xb')](),controller[_0xd117('0x2c')]);router[_0xd117('0x2a')]('/:id/in_servers',auth[_0xd117('0xb')](),controller[_0xd117('0x2d')]);router[_0xd117('0x2a')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0xd117('0x2e')]);router[_0xd117('0x2a')](_0xd117('0xe'),auth['isAuthenticated'](),controller[_0xd117('0x2f')]);router[_0xd117('0x2a')]('/:id/users',auth[_0xd117('0xb')](),controller['removeAgents']);module[_0xd117('0x30')]=router;
\ No newline at end of file
index cfc55f5..a9e7148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d2=['exports','STRING','BOOLEAN','TEXT','INTEGER','UNSIGNED','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','mandatoryDisposition','sequelize'];(function(_0x1716ee,_0x4233a4){var _0xded661=function(_0x1b7197){while(--_0x1b7197){_0x1716ee['push'](_0x1716ee['shift']());}};_0xded661(++_0x4233a4);}(_0xd6d2,0xcb));var _0x2d6d=function(_0x214159,_0x654444){_0x214159=_0x214159-0x0;var _0x384963=_0xd6d2[_0x214159];return _0x384963;};'use strict';var Sequelize=require(_0x2d6d('0x0'));module[_0x2d6d('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x2d6d('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0x2d6d('0x4')]},'markAsUnread':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x2d6d('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x2d6d('0x5')](0x2)[_0x2d6d('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x2d6d('0x4')],'defaultValue':function(){return _0x2d6d('0x7');}},'notificationSound':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2d6d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2d6d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2d6d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x2d6d('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![],'comment':_0x2d6d('0x9'),'set':function(_0x3cc2fa){if(!_0x3cc2fa)this[_0x2d6d('0xa')]('mandatoryDispositionPauseId',null);this[_0x2d6d('0xa')](_0x2d6d('0xb'),_0x3cc2fa);}}};
\ No newline at end of file
+var _0x093a=['setDataValue','mandatoryDispositionPauseId','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}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x4bc4c8,_0x3139d3){var _0x3bb121=function(_0x95ad12){while(--_0x95ad12){_0x4bc4c8['push'](_0x4bc4c8['shift']());}};_0x3bb121(++_0x3139d3);}(_0x093a,0x16a));var _0xa093=function(_0x644ecd,_0x397f36){_0x644ecd=_0x644ecd-0x0;var _0x1c66ce=_0x093a[_0x644ecd];return _0x1c66ce;};'use strict';var Sequelize=require('sequelize');module[_0xa093('0x0')]={'description':{'type':Sequelize[_0xa093('0x1')]},'name':{'type':Sequelize[_0xa093('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xa093('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0xa093('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0xa093('0x3')]},'markAsUnread':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xa093('0x1')],'allowNull':![],'defaultValue':_0xa093('0x4')},'fontSize':{'type':Sequelize[_0xa093('0x5')](0x2)[_0xa093('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xa093('0x3')],'defaultValue':function(){return _0xa093('0x7');}},'notificationSound':{'type':Sequelize[_0xa093('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa093('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa093('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa093('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa093('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xa093('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![],'comment':_0xa093('0x9'),'set':function(_0x488dc9){if(!_0x488dc9)this[_0xa093('0xa')](_0xa093('0xb'),null);this[_0xa093('0xa')]('mandatoryDisposition',_0x488dc9);}}};
\ No newline at end of file
index e63038a..0688451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa3=['localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','status','json','limit','undefined','count','offset','set','apply','reject','save','then','destroy','get','UserProfileResource','end','stack','name','send','index','MailServerIn','Imap','MailServerOut','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','options','includeAll','include','findAll','rows','show','params','Smtp','Pause','merge','find','body','update','describe','addDisposition','MailAccountId','create','findOne','Disposition','nolimit','filter','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','key','email','isNil','active','description','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','cservice','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','getSmtp','addSmtp','removeSmtp','addInteraction','omit','MailInteraction','CmContact','Contact','User','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','getApplications','MailMessage','$gte','split','inlineCss','true','CmList','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','root','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','List','ListId','messageId','subject','attach','out','format','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','html-to-text','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x1e7f38,_0x573b2d){var _0xa32701=function(_0x27b71c){while(--_0x27b71c){_0x1e7f38['push'](_0x1e7f38['shift']());}};_0xa32701(++_0x573b2d);}(_0xaaa3,0x16e));var _0x3aaa=function(_0x42b1dc,_0x286ff0){_0x42b1dc=_0x42b1dc-0x0;var _0x3eb277=_0xaaa3[_0x42b1dc];return _0x3eb277;};'use strict';var emlformat=require(_0x3aaa('0x0'));var rimraf=require(_0x3aaa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3aaa('0x2'));var rp=require('request-promise');var moment=require(_0x3aaa('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3aaa('0x4'));var path=require(_0x3aaa('0x5'));var sox=require(_0x3aaa('0x6'));var csv=require(_0x3aaa('0x7'));var ejs=require(_0x3aaa('0x8'));var fs=require('fs');var fs_extra=require(_0x3aaa('0x9'));var _=require(_0x3aaa('0xa'));var squel=require(_0x3aaa('0xb'));var crypto=require(_0x3aaa('0xc'));var jsforce=require(_0x3aaa('0xd'));var deskjs=require(_0x3aaa('0xe'));var toCsv=require(_0x3aaa('0x7'));var querystring=require('querystring');var Papa=require(_0x3aaa('0xf'));var htmlToText=require(_0x3aaa('0x10'));var juice=require('juice');var Redis=require(_0x3aaa('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3aaa('0x12'));var as=require(_0x3aaa('0x13'));var hardwareService=require(_0x3aaa('0x14'));var logger=require('../../config/logger')(_0x3aaa('0x15'));var utils=require(_0x3aaa('0x16'));var config=require(_0x3aaa('0x17'));var licenseUtil=require(_0x3aaa('0x18'));var db=require(_0x3aaa('0x19'))['db'];config[_0x3aaa('0x1a')]=_[_0x3aaa('0x1b')](config[_0x3aaa('0x1a')],{'host':_0x3aaa('0x1c'),'port':0x18eb});var socket=require(_0x3aaa('0x1d'))(new Redis(config['redis']));require('./mailAccount.socket')[_0x3aaa('0x1e')](socket);var jayson=require(_0x3aaa('0x1f'));var client=jayson[_0x3aaa('0x20')][_0x3aaa('0x21')]({'port':0x232b});function respondWithRpcPromise(_0x495206,_0x1cb0de,_0x565756,_0x432887){return new BPromise(function(_0x2e54d0,_0x32ab42){var _0x14271c=_0x432887||client;return _0x14271c[_0x3aaa('0x22')](_0x495206,_0x565756)['then'](function(_0x43075e){logger[_0x3aaa('0x23')](_0x3aaa('0x24'),_0x1cb0de,'request\x20sent');logger[_0x3aaa('0x25')](_0x3aaa('0x26'),_0x1cb0de,_0x3aaa('0x27'),JSON[_0x3aaa('0x28')](_0x43075e));if(_0x43075e[_0x3aaa('0x29')]){if(_0x43075e[_0x3aaa('0x29')]['code']===0x1f4){logger['error'](_0x3aaa('0x24'),_0x1cb0de,_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);return _0x32ab42(_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);}logger[_0x3aaa('0x29')](_0x3aaa('0x24'),_0x1cb0de,_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);return _0x2e54d0(_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);}else{logger['info'](_0x3aaa('0x24'),_0x1cb0de,_0x3aaa('0x27'));_0x2e54d0(_0x43075e['result']['message']);}})[_0x3aaa('0x2b')](function(_0x38e40f){logger[_0x3aaa('0x29')](_0x3aaa('0x24'),_0x1cb0de,_0x38e40f);_0x32ab42(_0x38e40f);});});}function respondWithStatusCode(_0x3ca120,_0x5f4cf0){_0x5f4cf0=_0x5f4cf0||0xcc;return function(_0x236ca2){if(_0x236ca2){return _0x3ca120['sendStatus'](_0x5f4cf0);}return _0x3ca120[_0x3aaa('0x2c')](_0x5f4cf0)['end']();};}function respondWithResult(_0x290b4a,_0x4c341b){_0x4c341b=_0x4c341b||0xc8;return function(_0x421612){if(_0x421612){return _0x290b4a[_0x3aaa('0x2c')](_0x4c341b)[_0x3aaa('0x2d')](_0x421612);}};}function respondWithFilteredResult(_0x1ffc39,_0x89e261){return function(_0x8d2488){if(_0x8d2488){var _0x5c9dee=typeof _0x89e261['offset']==='undefined'&&typeof _0x89e261[_0x3aaa('0x2e')]===_0x3aaa('0x2f');var _0x364ddd=_0x8d2488[_0x3aaa('0x30')];var _0x5aa459=_0x5c9dee?0x0:_0x89e261[_0x3aaa('0x31')];var _0x591a73=_0x5c9dee?_0x8d2488[_0x3aaa('0x30')]:_0x89e261[_0x3aaa('0x31')]+_0x89e261[_0x3aaa('0x2e')];var _0x299601;if(_0x591a73>=_0x364ddd){_0x591a73=_0x364ddd;_0x299601=0xc8;}else{_0x299601=0xce;}_0x1ffc39['status'](_0x299601);return _0x1ffc39[_0x3aaa('0x32')]('Content-Range',_0x5aa459+'-'+_0x591a73+'/'+_0x364ddd)[_0x3aaa('0x2d')](_0x8d2488);}return null;};}function patchUpdates(_0x590240){return function(_0x52f9c0){try{jsonpatch[_0x3aaa('0x33')](_0x52f9c0,_0x590240,!![]);}catch(_0x2df7c8){return BPromise[_0x3aaa('0x34')](_0x2df7c8);}return _0x52f9c0[_0x3aaa('0x35')]();};}function saveUpdates(_0x1f8135,_0xf42be0){return function(_0xff7f08){if(_0xff7f08){return _0xff7f08['update'](_0x1f8135)[_0x3aaa('0x36')](function(_0x5705d0){return _0x5705d0;});}return null;};}function removeEntity(_0xa1f5d4,_0x1a56e6){return function(_0x28e1cf){if(_0x28e1cf){return _0x28e1cf[_0x3aaa('0x37')]()[_0x3aaa('0x36')](function(){var _0x3f84f3=_0x28e1cf[_0x3aaa('0x38')]({'plain':!![]});var _0x1c26c1='MailAccounts';return db[_0x3aaa('0x39')][_0x3aaa('0x37')]({'where':{'type':_0x1c26c1,'resourceId':_0x3f84f3['id']}})['then'](function(){return _0x28e1cf;});})['then'](function(){_0xa1f5d4[_0x3aaa('0x2c')](0xcc)[_0x3aaa('0x3a')]();});}};}function handleEntityNotFound(_0x257800,_0x466c86){return function(_0x260bf1){if(!_0x260bf1){_0x257800['sendStatus'](0x194);}return _0x260bf1;};}function handleError(_0x3d821d,_0x44506d){_0x44506d=_0x44506d||0x1f4;return function(_0x498eee){logger[_0x3aaa('0x29')](_0x498eee[_0x3aaa('0x3b')]);if(_0x498eee[_0x3aaa('0x3c')]){delete _0x498eee[_0x3aaa('0x3c')];}_0x3d821d[_0x3aaa('0x2c')](_0x44506d)[_0x3aaa('0x3d')](_0x498eee);};}exports[_0x3aaa('0x3e')]=function(_0x5ca11c,_0x5a3888){var _0x28a071={'include':[{'model':db[_0x3aaa('0x3f')],'as':_0x3aaa('0x40')},{'model':db[_0x3aaa('0x41')],'as':'Smtp'},{'model':db['Pause'],'as':_0x3aaa('0x42')}]},_0x5e3cbd={},_0x543d00={'count':0x0,'rows':[]};var _0x2bcf1d=_[_0x3aaa('0x43')](db[_0x3aaa('0x44')][_0x3aaa('0x45')],function(_0x59f63b){return{'name':_0x59f63b[_0x3aaa('0x46')],'type':_0x59f63b['type']['key']};});_0x5e3cbd[_0x3aaa('0x47')]=_[_0x3aaa('0x43')](_0x2bcf1d,_0x3aaa('0x3c'));_0x5e3cbd[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x5ca11c[_0x3aaa('0x48')]);_0x5e3cbd[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x5e3cbd[_0x3aaa('0x47')],_0x5e3cbd[_0x3aaa('0x48')]);_0x28a071[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x5e3cbd['model'],qs[_0x3aaa('0x4d')](_0x5ca11c[_0x3aaa('0x48')]['fields']));_0x28a071[_0x3aaa('0x4c')]=_0x28a071[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x28a071[_0x3aaa('0x4c')]:_0x5e3cbd['model'];if(!_0x5ca11c[_0x3aaa('0x48')][_0x3aaa('0x4f')]('nolimit')){_0x28a071[_0x3aaa('0x2e')]=qs['limit'](_0x5ca11c['query'][_0x3aaa('0x2e')]);_0x28a071['offset']=qs['offset'](_0x5ca11c['query'][_0x3aaa('0x31')]);}_0x28a071[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x5ca11c['query'][_0x3aaa('0x51')]);_0x28a071[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x5ca11c[_0x3aaa('0x48')],_0x5e3cbd[_0x3aaa('0x4a')]),_0x2bcf1d);if(_0x5ca11c[_0x3aaa('0x48')]['filter']){_0x28a071[_0x3aaa('0x52')]=_['merge'](_0x28a071['where'],{'$or':_[_0x3aaa('0x43')](_0x2bcf1d,function(_0x25f8da){if(_0x25f8da['type']!=='VIRTUAL'){var _0x47bf03={};_0x47bf03[_0x25f8da[_0x3aaa('0x3c')]]={'$like':'%'+_0x5ca11c[_0x3aaa('0x48')]['filter']+'%'};return _0x47bf03;}})});}_0x28a071=_['merge']({},_0x28a071,_0x5ca11c[_0x3aaa('0x54')]);var _0x887a9d={'where':_0x28a071[_0x3aaa('0x52')]};return db[_0x3aaa('0x44')][_0x3aaa('0x30')](_0x887a9d)[_0x3aaa('0x36')](function(_0x13c3c9){_0x543d00[_0x3aaa('0x30')]=_0x13c3c9;if(_0x5ca11c[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x28a071[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x44')][_0x3aaa('0x57')](_0x28a071);})[_0x3aaa('0x36')](function(_0x26bff6){_0x543d00[_0x3aaa('0x58')]=_0x26bff6;return _0x543d00;})[_0x3aaa('0x36')](respondWithFilteredResult(_0x5a3888,_0x28a071))[_0x3aaa('0x2b')](handleError(_0x5a3888,null));};exports[_0x3aaa('0x59')]=function(_0x1fd21a,_0x5b0cec){var _0x12039c={'raw':![],'where':{'id':_0x1fd21a[_0x3aaa('0x5a')]['id']},'include':[{'model':db[_0x3aaa('0x3f')],'as':_0x3aaa('0x40')},{'model':db[_0x3aaa('0x41')],'as':_0x3aaa('0x5b')},{'model':db[_0x3aaa('0x5c')],'as':_0x3aaa('0x42')}]},_0x2343b2={};_0x2343b2[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x44')][_0x3aaa('0x45')]);_0x2343b2[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x1fd21a[_0x3aaa('0x48')]);_0x2343b2[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x2343b2[_0x3aaa('0x47')],_0x2343b2[_0x3aaa('0x48')]);_0x12039c[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x2343b2[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x1fd21a[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x12039c[_0x3aaa('0x4c')]=_0x12039c[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x12039c[_0x3aaa('0x4c')]:_0x2343b2[_0x3aaa('0x47')];if(_0x1fd21a[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x12039c[_0x3aaa('0x56')]=[{'all':!![]}];}_0x12039c=_[_0x3aaa('0x5d')]({},_0x12039c,_0x1fd21a[_0x3aaa('0x54')]);return db[_0x3aaa('0x44')]['find'](_0x12039c)[_0x3aaa('0x36')](handleEntityNotFound(_0x5b0cec,null))[_0x3aaa('0x36')](respondWithResult(_0x5b0cec,null))[_0x3aaa('0x2b')](handleError(_0x5b0cec,null));};exports['update']=function(_0xb80af2,_0x44003b){if(_0xb80af2['body']['id']){delete _0xb80af2['body']['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0xb80af2[_0x3aaa('0x5a')]['id']},'include':[{'model':db[_0x3aaa('0x3f')],'as':_0x3aaa('0x40')},{'model':db[_0x3aaa('0x41')],'as':'Smtp'},{'model':db[_0x3aaa('0x5c')],'as':_0x3aaa('0x42')}]})['then'](handleEntityNotFound(_0x44003b,null))['then'](saveUpdates(_0xb80af2[_0x3aaa('0x5f')],null))[_0x3aaa('0x36')](function(_0x3b0c24){if(_0x3b0c24&&_0xb80af2[_0x3aaa('0x5f')][_0x3aaa('0x40')]){return db[_0x3aaa('0x3f')][_0x3aaa('0x60')](_0xb80af2[_0x3aaa('0x5f')]['Imap'],{'where':{'MailAccountId':_0x3b0c24['id']}})['then'](function(){return _0x3b0c24;});}return _0x3b0c24;})['then'](function(_0x4cf502){if(_0x4cf502&&_0xb80af2['body'][_0x3aaa('0x5b')]){return db[_0x3aaa('0x41')][_0x3aaa('0x60')](_0xb80af2['body'][_0x3aaa('0x5b')],{'where':{'MailAccountId':_0x4cf502['id']}})[_0x3aaa('0x36')](function(){return _0x4cf502;});}return _0x4cf502;})[_0x3aaa('0x36')](respondWithResult(_0x44003b,null))[_0x3aaa('0x2b')](handleError(_0x44003b,null));};exports[_0x3aaa('0x61')]=function(_0x2194d8,_0x51e6f9){return db['MailAccount'][_0x3aaa('0x61')]()[_0x3aaa('0x36')](respondWithResult(_0x51e6f9,null))[_0x3aaa('0x2b')](handleError(_0x51e6f9,null));};exports[_0x3aaa('0x62')]=function(_0x1ca3e4,_0x18b03f,_0x1b1380){if(_0x1ca3e4[_0x3aaa('0x5f')]['id']){delete _0x1ca3e4[_0x3aaa('0x5f')]['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x1ca3e4[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x18b03f,null))[_0x3aaa('0x36')](function(_0x32a921){if(_0x32a921){_0x1ca3e4[_0x3aaa('0x5f')][_0x3aaa('0x63')]=_0x32a921['id'];return db['Disposition'][_0x3aaa('0x64')](_0x1ca3e4['body']);}})['then'](respondWithResult(_0x18b03f,null))[_0x3aaa('0x2b')](handleError(_0x18b03f,null));};exports['getDispositions']=function(_0x218fa9,_0x16b197,_0x17be2c){var _0xc400a8={'raw':![],'where':{}};var _0x7d7702={};var _0x42ecca={'count':0x0,'rows':[]};return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x218fa9['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x16b197,null))[_0x3aaa('0x36')](function(_0x44be40){if(_0x44be40){_0x7d7702[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x66')][_0x3aaa('0x45')]);_0x7d7702['query']=_[_0x3aaa('0x49')](_0x218fa9[_0x3aaa('0x48')]);_0x7d7702[_0x3aaa('0x4a')]=_['intersection'](_0x7d7702[_0x3aaa('0x47')],_0x7d7702[_0x3aaa('0x48')]);_0xc400a8[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x7d7702[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x218fa9[_0x3aaa('0x48')]['fields']));_0xc400a8[_0x3aaa('0x4c')]=_0xc400a8[_0x3aaa('0x4c')]['length']?_0xc400a8[_0x3aaa('0x4c')]:_0x7d7702[_0x3aaa('0x47')];if(!_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x4f')](_0x3aaa('0x67'))){_0xc400a8[_0x3aaa('0x2e')]=qs[_0x3aaa('0x2e')](_0x218fa9[_0x3aaa('0x48')]['limit']);_0xc400a8[_0x3aaa('0x31')]=qs['offset'](_0x218fa9['query'][_0x3aaa('0x31')]);}_0xc400a8[_0x3aaa('0x50')]=qs['sort'](_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x51')]);_0xc400a8[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x218fa9[_0x3aaa('0x48')],_0x7d7702[_0x3aaa('0x4a')]));_0xc400a8[_0x3aaa('0x52')][_0x3aaa('0x63')]=_0x44be40['id'];if(_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x68')]){_0xc400a8[_0x3aaa('0x52')]=_['merge'](_0xc400a8[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0xc400a8[_0x3aaa('0x4c')],function(_0x3d2a09){var _0x3bcb26={};_0x3bcb26[_0x3d2a09]={'$like':'%'+_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x3bcb26;})});}_0xc400a8=_[_0x3aaa('0x5d')]({},_0xc400a8,_0x218fa9[_0x3aaa('0x54')]);return db[_0x3aaa('0x66')][_0x3aaa('0x30')]({'where':_0xc400a8[_0x3aaa('0x52')]})[_0x3aaa('0x36')](function(_0x25b344){_0x42ecca['count']=_0x25b344;if(_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0xc400a8[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x66')]['findAll'](_0xc400a8);})[_0x3aaa('0x36')](function(_0x338143){_0x42ecca[_0x3aaa('0x58')]=_0x338143;return _0x42ecca;});}})[_0x3aaa('0x36')](respondWithFilteredResult(_0x16b197,_0xc400a8))[_0x3aaa('0x2b')](handleError(_0x16b197,null));};exports[_0x3aaa('0x69')]=function(_0x18cc5c,_0x43c5e8,_0x1cf4c1){return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x18cc5c[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x43c5e8,null))[_0x3aaa('0x36')](function(_0x22eae1){if(_0x22eae1){return _0x22eae1[_0x3aaa('0x69')](_0x18cc5c[_0x3aaa('0x48')][_0x3aaa('0x6a')]);}})['then'](respondWithStatusCode(_0x43c5e8,null))[_0x3aaa('0x2b')](handleError(_0x43c5e8,null));};exports[_0x3aaa('0x6b')]=function(_0xdb0596,_0x1b2fc5,_0x349345){if(_0xdb0596[_0x3aaa('0x5f')]['id']){delete _0xdb0596[_0x3aaa('0x5f')]['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0xdb0596['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x1b2fc5,null))['then'](function(_0x3680a9){if(_0x3680a9){_0xdb0596['body'][_0x3aaa('0x63')]=_0x3680a9['id'];return db[_0x3aaa('0x6c')][_0x3aaa('0x64')](_0xdb0596[_0x3aaa('0x5f')]);}})[_0x3aaa('0x36')](respondWithResult(_0x1b2fc5,null))[_0x3aaa('0x2b')](handleError(_0x1b2fc5,null));};exports[_0x3aaa('0x6d')]=function(_0xf772fb,_0x2956e0,_0xf9b25){var _0x1b17cd={'raw':![],'where':{}};var _0x42231f={};var _0x16f363={'count':0x0,'rows':[]};return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0xf772fb[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x2956e0,null))[_0x3aaa('0x36')](function(_0x10dcd7){if(_0x10dcd7){_0x42231f[_0x3aaa('0x47')]=_['keys'](db['CannedAnswer'][_0x3aaa('0x45')]);_0x42231f[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0xf772fb[_0x3aaa('0x48')]);_0x42231f[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x42231f[_0x3aaa('0x47')],_0x42231f[_0x3aaa('0x48')]);_0x1b17cd['attributes']=_[_0x3aaa('0x4b')](_0x42231f['model'],qs[_0x3aaa('0x4d')](_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x1b17cd[_0x3aaa('0x4c')]=_0x1b17cd[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x1b17cd[_0x3aaa('0x4c')]:_0x42231f[_0x3aaa('0x47')];if(!_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x4f')](_0x3aaa('0x67'))){_0x1b17cd[_0x3aaa('0x2e')]=qs[_0x3aaa('0x2e')](_0xf772fb['query'][_0x3aaa('0x2e')]);_0x1b17cd[_0x3aaa('0x31')]=qs[_0x3aaa('0x31')](_0xf772fb['query'][_0x3aaa('0x31')]);}_0x1b17cd['order']=qs[_0x3aaa('0x51')](_0xf772fb['query'][_0x3aaa('0x51')]);_0x1b17cd[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0xf772fb['query'],_0x42231f[_0x3aaa('0x4a')]));_0x1b17cd[_0x3aaa('0x52')][_0x3aaa('0x63')]=_0x10dcd7['id'];if(_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x68')]){_0x1b17cd[_0x3aaa('0x52')]=_['merge'](_0x1b17cd['where'],{'$or':_[_0x3aaa('0x43')](_0x1b17cd[_0x3aaa('0x4c')],function(_0x62bcb5){var _0x2a9f23={};_0x2a9f23[_0x62bcb5]={'$like':'%'+_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x2a9f23;})});}_0x1b17cd=_[_0x3aaa('0x5d')]({},_0x1b17cd,_0xf772fb['options']);return db[_0x3aaa('0x6c')]['count']({'where':_0x1b17cd[_0x3aaa('0x52')]})['then'](function(_0x50ed21){_0x16f363[_0x3aaa('0x30')]=_0x50ed21;if(_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x1b17cd[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x6c')][_0x3aaa('0x57')](_0x1b17cd);})['then'](function(_0x2653f7){_0x16f363['rows']=_0x2653f7;return _0x16f363;});}})[_0x3aaa('0x36')](respondWithFilteredResult(_0x2956e0,_0x1b17cd))[_0x3aaa('0x2b')](handleError(_0x2956e0,null));};exports[_0x3aaa('0x6e')]=function(_0x49201b,_0x4da104,_0xe909a3){return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x49201b['params']['id']}})['then'](handleEntityNotFound(_0x4da104,null))[_0x3aaa('0x36')](function(_0x598bd7){if(_0x598bd7){return _0x598bd7[_0x3aaa('0x6e')](_0x49201b[_0x3aaa('0x48')][_0x3aaa('0x6a')]);}})[_0x3aaa('0x36')](respondWithStatusCode(_0x4da104,null))[_0x3aaa('0x2b')](handleError(_0x4da104,null));};exports['create']=function(_0x4d2fe3,_0x3e1fa1){var _0xfde7={'name':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x3c')],'key':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x6f')],'email':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x70')],'ListId':_0x4d2fe3[_0x3aaa('0x5f')]['ListId'],'active':!_[_0x3aaa('0x71')](_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x72')])?_0x4d2fe3['body'][_0x3aaa('0x72')]:!![],'description':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x73')]||null,'Imap':{},'Smtp':{}};if(_[_0x3aaa('0x71')](_0x4d2fe3[_0x3aaa('0x5f')]['cservice'])){if(_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x74')]){_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x75')]=_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x75')]=_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x76')];_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x77')]=_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x78')]=_0x4d2fe3['body'][_0x3aaa('0x79')];}else{_0xfde7[_0x3aaa('0x40')]['authentication']=_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x7a')]=![];}_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x7b')]=_0x4d2fe3[_0x3aaa('0x5f')]['Imap'][_0x3aaa('0x7b')];_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x7c')]=_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x40')][_0x3aaa('0x7c')];_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x7b')]=_0x4d2fe3[_0x3aaa('0x5f')]['Smtp'][_0x3aaa('0x7b')];_0xfde7['Smtp'][_0x3aaa('0x7c')]=_0x4d2fe3['body'][_0x3aaa('0x5b')][_0x3aaa('0x7c')];}else{_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x7d')]=_0xfde7[_0x3aaa('0x5b')]['service']=_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x7e')];_0xfde7[_0x3aaa('0x40')]['user']=_0xfde7[_0x3aaa('0x5b')]['user']=_0x4d2fe3[_0x3aaa('0x5f')]['cuser'];_0xfde7[_0x3aaa('0x40')]['password']=_0xfde7[_0x3aaa('0x5b')]['pass']=_0x4d2fe3['body'][_0x3aaa('0x79')];}return db['MailAccount']['create'](_0xfde7,{'include':[{'model':db[_0x3aaa('0x41')],'as':_0x3aaa('0x5b')},{'model':db['MailServerIn'],'as':_0x3aaa('0x40')}]})[_0x3aaa('0x36')](function(_0x29b407){var _0x267d3d=_0x4d2fe3[_0x3aaa('0x75')][_0x3aaa('0x38')]({'plain':!![]});if(!_0x267d3d)throw new Error(_0x3aaa('0x7f'));if(_0x267d3d['role']===_0x3aaa('0x75')){var _0x11eaba=_0x29b407[_0x3aaa('0x38')]({'plain':!![]});return db[_0x3aaa('0x80')]['find']({'where':{'name':_0x3aaa('0x81'),'userProfileId':_0x267d3d[_0x3aaa('0x82')]},'raw':!![]})['then'](function(_0x3809d7){if(_0x3809d7&&_0x3809d7[_0x3aaa('0x83')]===0x0){return db[_0x3aaa('0x39')]['create']({'name':_0x11eaba[_0x3aaa('0x3c')],'resourceId':_0x11eaba['id'],'type':_0x3809d7[_0x3aaa('0x3c')],'sectionId':_0x3809d7['id']},{})[_0x3aaa('0x36')](function(){return _0x29b407;});}else{return _0x29b407;}})[_0x3aaa('0x2b')](function(_0x3c8e7b){logger[_0x3aaa('0x29')](_0x3aaa('0x84'),_0x3c8e7b);throw _0x3c8e7b;});}return _0x29b407;})['then'](respondWithResult(_0x3e1fa1,0xc9))[_0x3aaa('0x2b')](handleError(_0x3e1fa1,null));};exports['getImap']=function(_0x282d08,_0x4c2a9b,_0x2c42a3){return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x282d08[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x4c2a9b,null))[_0x3aaa('0x36')](function(_0x422dce){if(_0x422dce){return _0x422dce[_0x3aaa('0x85')]();}return null;})[_0x3aaa('0x36')](respondWithResult(_0x4c2a9b,null))[_0x3aaa('0x2b')](handleError(_0x4c2a9b,null));};exports['addImap']=function(_0x23fd79,_0x5475d2,_0x75290b){if(_0x23fd79[_0x3aaa('0x5f')]['id']){delete _0x23fd79[_0x3aaa('0x5f')]['id'];}return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x23fd79[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x5475d2,null))[_0x3aaa('0x36')](function(_0x5958f7){if(_0x5958f7){_0x23fd79[_0x3aaa('0x5f')][_0x3aaa('0x63')]=_0x5958f7['id'];return db['MailServerIn'][_0x3aaa('0x64')](_0x23fd79[_0x3aaa('0x5f')]);}})['then'](respondWithResult(_0x5475d2,null))[_0x3aaa('0x2b')](handleError(_0x5475d2,null));};exports[_0x3aaa('0x86')]=function(_0x2b737a,_0x46e6be,_0xab12dd){return db['MailAccount']['findOne']({'where':{'id':_0x2b737a[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x46e6be,null))[_0x3aaa('0x36')](function(_0x1ec553){if(_0x1ec553){return _0x1ec553['setImap'](null);}return null;})['then'](respondWithStatusCode(_0x46e6be,null))['catch'](handleError(_0x46e6be,null));};exports[_0x3aaa('0x87')]=function(_0x25af01,_0x59e5e9,_0x601a5){return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x25af01[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x59e5e9,null))[_0x3aaa('0x36')](function(_0x4516ee){if(_0x4516ee){return _0x4516ee['getSmtp']();}return null;})[_0x3aaa('0x36')](respondWithResult(_0x59e5e9,null))[_0x3aaa('0x2b')](handleError(_0x59e5e9,null));};exports[_0x3aaa('0x88')]=function(_0x5025b6,_0x2ed27b,_0x1b4943){if(_0x5025b6[_0x3aaa('0x5f')]['id']){delete _0x5025b6[_0x3aaa('0x5f')]['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x5025b6['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x2ed27b,null))[_0x3aaa('0x36')](function(_0x3417ae){if(_0x3417ae){_0x5025b6['body']['MailAccountId']=_0x3417ae['id'];return db[_0x3aaa('0x41')][_0x3aaa('0x64')](_0x5025b6[_0x3aaa('0x5f')]);}})[_0x3aaa('0x36')](respondWithResult(_0x2ed27b,null))[_0x3aaa('0x2b')](handleError(_0x2ed27b,null));};exports[_0x3aaa('0x89')]=function(_0x3929a2,_0x2f1d1f,_0xcf5428){return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x3929a2['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x2f1d1f,null))[_0x3aaa('0x36')](function(_0x1fc05b){if(_0x1fc05b){return _0x1fc05b['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x2f1d1f,null))['catch'](handleError(_0x2f1d1f,null));};exports['addInteraction']=function(_0x159804,_0xfaf934,_0xb7006e){return db['MailInteraction']['find']({'where':{'id':_0x159804[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0xfaf934,null))[_0x3aaa('0x36')](function(_0x120dab){if(_0x120dab){return _0x120dab[_0x3aaa('0x8a')](_0x159804['body'][_0x3aaa('0x6a')],_[_0x3aaa('0x8b')](_0x159804['body'],['ids','id'])||{});}})['then'](respondWithResult(_0xfaf934,null))[_0x3aaa('0x2b')](handleError(_0xfaf934,null));};exports['getInteractions']=function(_0x3e3900,_0x499358,_0x14ccae){var _0x547027={'raw':![],'where':{}};var _0x4ad7d7={};var _0x4fd757={'count':0x0,'rows':[]};return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x3e3900[_0x3aaa('0x5a')]['id']}})['then'](handleEntityNotFound(_0x499358,null))[_0x3aaa('0x36')](function(_0x13dc38){if(_0x13dc38){_0x4ad7d7[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x8c')][_0x3aaa('0x45')]);_0x4ad7d7[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x3e3900['query']);_0x4ad7d7[_0x3aaa('0x4a')]=_['intersection'](_0x4ad7d7[_0x3aaa('0x47')],_0x4ad7d7[_0x3aaa('0x48')]);_0x547027[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x4ad7d7[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x547027[_0x3aaa('0x4c')]=_0x547027[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x547027[_0x3aaa('0x4c')]:_0x4ad7d7[_0x3aaa('0x47')];if(!_0x3e3900['query']['hasOwnProperty']('nolimit')){_0x547027['limit']=qs[_0x3aaa('0x2e')](_0x3e3900['query'][_0x3aaa('0x2e')]);_0x547027['offset']=qs[_0x3aaa('0x31')](_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x31')]);}_0x547027[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x3e3900['query'][_0x3aaa('0x51')]);_0x547027[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_['pick'](_0x3e3900[_0x3aaa('0x48')],_0x4ad7d7[_0x3aaa('0x4a')]));_0x547027[_0x3aaa('0x52')]['MailAccountId']=_0x13dc38['id'];if(_0x3e3900[_0x3aaa('0x48')]['filter']){_0x547027[_0x3aaa('0x52')]=_[_0x3aaa('0x5d')](_0x547027[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0x547027[_0x3aaa('0x4c')],function(_0x215556){var _0x163c87={};_0x163c87[_0x215556]={'$like':'%'+_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x163c87;})});}_0x547027=_['merge']({},_0x547027,_0x3e3900['options']);return db[_0x3aaa('0x8c')][_0x3aaa('0x30')]({'where':_0x547027['where']})[_0x3aaa('0x36')](function(_0x4e0fd5){_0x4fd757[_0x3aaa('0x30')]=_0x4e0fd5;if(_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x547027[_0x3aaa('0x56')]=[{'model':db[_0x3aaa('0x8d')],'as':_0x3aaa('0x8e'),'required':![]},{'model':db[_0x3aaa('0x8f')],'as':_0x3aaa('0x90'),'attributes':[_0x3aaa('0x3c'),_0x3aaa('0x91'),_0x3aaa('0x92')],'required':![]},{'model':db['Tag'],'as':_0x3aaa('0x93'),'attributes':['id','name',_0x3aaa('0x94')],'where':_0x3e3900['query'][_0x3aaa('0x95')]?{'id':_0x3e3900[_0x3aaa('0x48')]['tag']}:undefined,'required':_0x3e3900[_0x3aaa('0x48')]['tag']?!![]:![]}];}return db[_0x3aaa('0x8c')][_0x3aaa('0x57')](_0x547027);})[_0x3aaa('0x36')](function(_0x449c27){_0x4fd757[_0x3aaa('0x58')]=_0x449c27;return _0x4fd757;});}})['then'](respondWithFilteredResult(_0x499358,_0x547027))['catch'](handleError(_0x499358,null));};exports[_0x3aaa('0x96')]=function(_0x442ebe,_0x50aa51,_0x311ada){return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x442ebe[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x50aa51,null))[_0x3aaa('0x36')](function(_0x101a2e){if(_0x101a2e){return db[_0x3aaa('0x97')][_0x3aaa('0x98')](function(_0x1ae1da){return db[_0x3aaa('0x99')][_0x3aaa('0x37')]({'where':{'MailAccountId':_0x442ebe[_0x3aaa('0x5a')]['id']},'transaction':_0x1ae1da})[_0x3aaa('0x36')](function(_0x2837e8){var _0x1d41fb=_[_0x3aaa('0x43')](_0x442ebe['body'],function(_0x89b2bf){_0x89b2bf[_0x3aaa('0x63')]=_0x442ebe[_0x3aaa('0x5a')]['id'];return _0x89b2bf;});return db[_0x3aaa('0x99')][_0x3aaa('0x9a')](_0x1d41fb,{'transaction':_0x1ae1da});});})[_0x3aaa('0x36')](function(){return db[_0x3aaa('0x99')][_0x3aaa('0x9b')]({'where':{'MailAccountId':_0x442ebe['params']['id']},'order':'priority'});});}})[_0x3aaa('0x36')](respondWithResult(_0x50aa51,null))[_0x3aaa('0x2b')](handleError(_0x50aa51,null));};exports['getApplications']=function(_0x5c1faa,_0xb7499b,_0x18456){var _0x3ad76a={};var _0x390e18={};var _0x3607fb;var _0x2126c8;return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x5c1faa['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0xb7499b,null))[_0x3aaa('0x36')](function(_0x2bdf91){if(_0x2bdf91){_0x3607fb=_0x2bdf91;_0x390e18['model']=_['keys'](db[_0x3aaa('0x99')]['rawAttributes']);_0x390e18[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x5c1faa[_0x3aaa('0x48')]);_0x390e18[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x390e18[_0x3aaa('0x47')],_0x390e18[_0x3aaa('0x48')]);_0x3ad76a['attributes']=_[_0x3aaa('0x4b')](_0x390e18['model'],qs['fields'](_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x3ad76a[_0x3aaa('0x4c')]=_0x3ad76a[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x3ad76a['attributes']:_0x390e18['model'];_0x3ad76a[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x51')]);_0x3ad76a[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x5c1faa['query'],_0x390e18[_0x3aaa('0x4a')]));if(_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x68')]){_0x3ad76a[_0x3aaa('0x52')]=_[_0x3aaa('0x5d')](_0x3ad76a['where'],{'$or':_[_0x3aaa('0x43')](_0x3ad76a[_0x3aaa('0x4c')],function(_0x32a8b0){var _0x4193e0={};_0x4193e0[_0x32a8b0]={'$like':'%'+_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x4193e0;})});}_0x3ad76a=_[_0x3aaa('0x5d')]({},_0x3ad76a,_0x5c1faa[_0x3aaa('0x54')]);return _0x3607fb[_0x3aaa('0x9c')](_0x3ad76a);}})[_0x3aaa('0x36')](function(_0xda8ed2){if(_0xda8ed2){_0x2126c8=_0xda8ed2[_0x3aaa('0x4e')];if(!_0x5c1faa[_0x3aaa('0x48')]['hasOwnProperty'](_0x3aaa('0x67'))){_0x3ad76a[_0x3aaa('0x2e')]=qs['limit'](_0x5c1faa['query'][_0x3aaa('0x2e')]);_0x3ad76a[_0x3aaa('0x31')]=qs['offset'](_0x5c1faa['query'][_0x3aaa('0x31')]);}return _0x3607fb[_0x3aaa('0x9c')](_0x3ad76a);}})['then'](function(_0x497ae2){if(_0x497ae2){return _0x497ae2?{'count':_0x2126c8,'rows':_0x497ae2}:null;}})[_0x3aaa('0x36')](respondWithResult(_0xb7499b,null))[_0x3aaa('0x2b')](handleError(_0xb7499b,null));};exports['getMessages']=function(_0x3a7aad,_0x84be4,_0x2fef2d){var _0x452785={'raw':!![],'where':{}};var _0x2a4188={};var _0x58350e={'count':0x0,'rows':[]};return db['MailAccount'][_0x3aaa('0x65')]({'where':{'id':_0x3a7aad[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x84be4,null))['then'](function(_0x34d9a3){if(_0x34d9a3){_0x2a4188[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x9d')]['rawAttributes']);_0x2a4188['query']=_[_0x3aaa('0x49')](_0x3a7aad[_0x3aaa('0x48')]);_0x2a4188[_0x3aaa('0x4a')]=_['intersection'](_0x2a4188[_0x3aaa('0x47')],_0x2a4188['query']);_0x452785[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x2a4188[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x452785[_0x3aaa('0x4c')]=_0x452785[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x452785[_0x3aaa('0x4c')]:_0x2a4188[_0x3aaa('0x47')];if(!_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x4f')]('nolimit')){_0x452785['limit']=qs[_0x3aaa('0x2e')](_0x3a7aad[_0x3aaa('0x48')]['limit']);_0x452785[_0x3aaa('0x31')]=qs[_0x3aaa('0x31')](_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x31')]);}_0x452785[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x51')]);_0x452785[_0x3aaa('0x52')]=qs['filters'](_[_0x3aaa('0x53')](_0x3a7aad['query'],_0x2a4188[_0x3aaa('0x4a')]));_0x452785[_0x3aaa('0x52')][_0x3aaa('0x63')]=_0x34d9a3['id'];if(_0x3a7aad['query']['filter']){_0x452785[_0x3aaa('0x52')]=_[_0x3aaa('0x5d')](_0x452785[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0x452785[_0x3aaa('0x4c')],function(_0x291277){var _0x477366={};_0x477366[_0x291277]={'$like':'%'+_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x477366;})});}if(_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x9e')]){var _0x551772=_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x9e')][_0x3aaa('0x9f')](',');var _0x15f621={};_0x15f621[_0x551772[0x0]]={'$gte':moment(_0x551772[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x452785['where']=_[_0x3aaa('0x5d')](_0x452785['where'],_0x15f621);}_0x452785=_[_0x3aaa('0x5d')]({},_0x452785,_0x3a7aad[_0x3aaa('0x54')]);return db['MailMessage'][_0x3aaa('0x30')]({'where':_0x452785['where']})[_0x3aaa('0x36')](function(_0x1862b6){_0x58350e[_0x3aaa('0x30')]=_0x1862b6;if(_0x3a7aad['query'][_0x3aaa('0x55')]){_0x452785[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x9d')]['findAll'](_0x452785);})[_0x3aaa('0x36')](function(_0x27fc13){if(_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0xa0')]===_0x3aaa('0xa1')){for(var _0x1ca3e8=0x0;_0x1ca3e8<_0x27fc13[_0x3aaa('0x4e')];_0x1ca3e8++){_0x27fc13[_0x1ca3e8][_0x3aaa('0x5f')]=juice(_0x27fc13[_0x1ca3e8]['body']);}}_0x58350e[_0x3aaa('0x58')]=_0x27fc13;return _0x58350e;});}})[_0x3aaa('0x36')](respondWithFilteredResult(_0x84be4,_0x452785))[_0x3aaa('0x2b')](handleError(_0x84be4,null));};exports[_0x3aaa('0x3d')]=function(_0x1d6ee8,_0x48afbb,_0x1fcf12){var _0x536214,_0x15298c={},_0x1ff03c;if(_0x1d6ee8[_0x3aaa('0x5f')]['to']){_0x1ff03c=_0x1d6ee8['body']['to'][_0x3aaa('0x9f')](',')[0x0];}return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x1d6ee8[_0x3aaa('0x5a')]['id']},'include':[{'model':db[_0x3aaa('0xa2')],'as':'List','include':[{'model':db[_0x3aaa('0x8d')],'as':_0x3aaa('0xa3'),'where':{'email':_0x1ff03c},'limit':0x1,'order':[[_0x3aaa('0xa4'),_0x3aaa('0xa5')]]}]},{'model':db[_0x3aaa('0x41')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x48afbb,null))[_0x3aaa('0x36')](function(_0x3f5045){if(_0x3f5045){_0x536214=_0x3f5045;if(_0x3f5045[_0x3aaa('0x5b')]){if(_['isNil'](_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa6')])){_0x1d6ee8['body'][_0x3aaa('0xa6')]=util['format'](_0x3aaa('0xa7'),_0x3f5045[_0x3aaa('0x3c')],_0x3f5045[_0x3aaa('0x70')]||_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x75')]);}if(_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa8')]&&_0x1d6ee8['body'][_0x3aaa('0xa8')][_0x3aaa('0x4e')]){for(var _0x3dc074=0x0;_0x3dc074<_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa8')]['length'];_0x3dc074+=0x1){_0x1d6ee8[_0x3aaa('0x5f')]['attachments'][_0x3dc074]={'filename':_0x1d6ee8[_0x3aaa('0x5f')]['attachments'][_0x3dc074][_0x3aaa('0x3c')],'path':path['join'](config[_0x3aaa('0xa9')],'server/files/attachments',_0x1d6ee8[_0x3aaa('0x5f')]['attachments'][_0x3dc074][_0x3aaa('0xaa')])};}}var _0x1046af={'tls':{'rejectUnauthorized':![]}};if(_[_0x3aaa('0x71')](_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7d')])){if(_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7a')]){_0x1046af[_0x3aaa('0xab')]={'user':_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x75')],'pass':_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x78')]};}_0x1046af[_0x3aaa('0x7b')]=_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7b')];_0x1046af[_0x3aaa('0x7c')]=_0x3f5045[_0x3aaa('0x5b')]['port'];_0x1046af[_0x3aaa('0xac')]=_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0xac')];}else{_0x1046af['service']=_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7d')];_0x1046af[_0x3aaa('0xab')]={'user':_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x75')],'pass':_0x3f5045['Smtp'][_0x3aaa('0x78')]};}return respondWithRpcPromise(_0x3aaa('0xad'),_0x3aaa('0xae'),{'account':_0x1046af,'message':_0x1d6ee8['body']});}else{throw new Error(_0x3aaa('0xaf'));}}})[_0x3aaa('0x36')](function(_0x17e73a){if(_0x17e73a){_0x15298c=_0x17e73a;if(_0x536214[_0x3aaa('0xb0')]){if(_0x536214[_0x3aaa('0xb0')]['Contacts'][_0x3aaa('0x4e')]){return _0x536214[_0x3aaa('0xb0')][_0x3aaa('0xa3')][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x1d6ee8['body'],{'firstName':_0x1d6ee8['body']['to'],'email':_0x1d6ee8[_0x3aaa('0x5f')]['to'],'phone':_0x1d6ee8['body']['to'],'ListId':_0x536214[_0x3aaa('0xb1')]}));}}else{throw new Error(_0x3aaa('0xaf'));}}})['then'](function(_0x3786e4){if(_0x3786e4){var _0x10e3f4={'UserId':_0x1d6ee8['user']['id'],'ContactId':_0x3786e4['id'],'MailAccountId':_0x536214['id'],'inReplyTo':_0x15298c[_0x3aaa('0xb2')],'to':_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa6')],'cc':_0x1d6ee8[_0x3aaa('0x5f')]['cc'],'subject':_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xb3')],'attach':_0x1d6ee8['body'][_0x3aaa('0xb4')],'firstMsgDirection':_0x3aaa('0xb5'),'lastMsgAt':moment()[_0x3aaa('0xb6')](_0x3aaa('0xb7')),'lastMsgDirection':_0x3aaa('0xb5'),'Messages':[_[_0x3aaa('0x5d')](_0x1d6ee8[_0x3aaa('0x5f')],{'messageId':_0x15298c[_0x3aaa('0xb2')],'sentAt':moment()[_0x3aaa('0xb6')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x536214['id'],'UserId':_0x1d6ee8[_0x3aaa('0x75')]['id'],'ContactId':_0x3786e4['id']})]};if(_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xb8')]){_0x10e3f4=_[_0x3aaa('0x5d')](_0x10e3f4,_0x1d6ee8[_0x3aaa('0x5f')]['Interaction']);}return db[_0x3aaa('0x8c')]['create'](_0x10e3f4,{'include':[{'model':db['MailMessage'],'as':_0x3aaa('0xb9')}]});}})[_0x3aaa('0x36')](respondWithResult(_0x48afbb,null))['catch'](handleError(_0x48afbb,null));};exports[_0x3aaa('0xba')]=function(_0x149d46,_0x2a0e2d,_0x3fdcb0){return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x149d46['params']['id']},'include':[{'model':db[_0x3aaa('0x41')],'as':_0x3aaa('0x5b'),'raw':!![]}]})[_0x3aaa('0x36')](handleEntityNotFound(_0x2a0e2d,null))['then'](function(_0x4cc350){if(_0x4cc350&&_0x4cc350[_0x3aaa('0x5b')]){var _0x3eee54={'id':_0x4cc350['id'],'tls':{'rejectUnauthorized':![]}};if(_0x4cc350['Smtp'][_0x3aaa('0x7d')]){_0x3eee54[_0x3aaa('0x7d')]=_0x4cc350[_0x3aaa('0x5b')][_0x3aaa('0x7d')];}else{_0x3eee54['host']=_0x4cc350['Smtp']['host'];_0x3eee54['port']=_0x4cc350['Smtp']['port'];_0x3eee54[_0x3aaa('0xac')]=_0x4cc350[_0x3aaa('0x5b')]['secure'];}if(_0x4cc350['Smtp'][_0x3aaa('0x7a')]){_0x3eee54[_0x3aaa('0xab')]={'user':_0x4cc350[_0x3aaa('0x5b')][_0x3aaa('0x75')],'pass':_0x4cc350[_0x3aaa('0x5b')][_0x3aaa('0x78')]};}return respondWithRpcPromise(_0x3aaa('0xbb'),_0x3aaa('0xba'),{'account':_0x3eee54});}})[_0x3aaa('0x36')](respondWithResult(_0x2a0e2d,null))[_0x3aaa('0x2b')](handleError(_0x2a0e2d,null));};exports['destroy']=function(_0x1beaff,_0x427b0d){return db[_0x3aaa('0x44')]['find']({'where':{'id':_0x1beaff[_0x3aaa('0x5a')]['id']}})['then'](handleEntityNotFound(_0x427b0d,null))[_0x3aaa('0x36')](function(_0x28e112){if(_0x28e112&&_0x28e112[_0x3aaa('0x7d')]){throw new db[(_0x3aaa('0xbc'))]['ValidationError'](_0x3aaa('0xbd'));}return _0x28e112;})['then'](removeEntity(_0x427b0d,null))[_0x3aaa('0x2b')](handleError(_0x427b0d,null));};exports[_0x3aaa('0xbe')]=function(_0x2e71e1,_0x3452d7,_0x507557){return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x2e71e1[_0x3aaa('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3452d7,null))[_0x3aaa('0x36')](function(_0x3b77b6){if(_0x3b77b6){return _0x3b77b6['addAgents'](_0x2e71e1[_0x3aaa('0x5f')][_0x3aaa('0x6a')],_[_0x3aaa('0x8b')](_0x2e71e1[_0x3aaa('0x5f')],[_0x3aaa('0x6a'),'id'])||{})['spread'](function(_0x4b3759){for(var _0x550224=0x0;_0x550224<_0x2e71e1['body'][_0x3aaa('0x6a')]['length'];_0x550224+=0x1){socket[_0x3aaa('0xbf')](_0x3aaa('0xc0'),{'UserId':Number(_0x2e71e1['body'][_0x3aaa('0x6a')][_0x550224]),'MailAccountId':Number(_0x2e71e1[_0x3aaa('0x5a')]['id'])});}return _0x4b3759;});}})[_0x3aaa('0x36')](respondWithResult(_0x3452d7,null))[_0x3aaa('0x2b')](handleError(_0x3452d7,null));};exports[_0x3aaa('0xc1')]=function(_0xf8377,_0x5d269b,_0x3e5ad4){return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0xf8377[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x5d269b,null))['then'](function(_0x5c6ee5){if(_0x5c6ee5){return _0x5c6ee5[_0x3aaa('0xc1')](_0xf8377[_0x3aaa('0x48')][_0x3aaa('0x6a')])[_0x3aaa('0x36')](function(){if(_[_0x3aaa('0xc2')](_0xf8377[_0x3aaa('0x48')]['ids'])){for(var _0x20b850=0x0;_0x20b850<_0xf8377[_0x3aaa('0x48')][_0x3aaa('0x6a')][_0x3aaa('0x4e')];_0x20b850+=0x1){socket[_0x3aaa('0xbf')](_0x3aaa('0xc3'),{'UserId':Number(_0xf8377[_0x3aaa('0x48')][_0x3aaa('0x6a')][_0x20b850]),'MailAccountId':Number(_0xf8377['params']['id'])});}}else{socket[_0x3aaa('0xbf')]('userMailAccount:remove',{'UserId':Number(_0xf8377[_0x3aaa('0x48')]['ids']),'MailAccountId':Number(_0xf8377['params']['id'])});}});}})[_0x3aaa('0x36')](respondWithStatusCode(_0x5d269b,null))[_0x3aaa('0x2b')](handleError(_0x5d269b,null));};exports['getAgents']=function(_0x3f1d3a,_0x26463a,_0x456bb8){var _0x5e9668={};var _0x15b794={};var _0x5cb00d;var _0x491bba;return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x3f1d3a[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x26463a,null))[_0x3aaa('0x36')](function(_0x46fe33){if(_0x46fe33){_0x5cb00d=_0x46fe33;_0x15b794[_0x3aaa('0x47')]=_['keys'](db[_0x3aaa('0x8f')][_0x3aaa('0x45')]);_0x15b794[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x3f1d3a[_0x3aaa('0x48')]);_0x15b794[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x15b794[_0x3aaa('0x47')],_0x15b794[_0x3aaa('0x48')]);_0x5e9668[_0x3aaa('0x4c')]=_['intersection'](_0x15b794[_0x3aaa('0x47')],qs['fields'](_0x3f1d3a['query']['fields']));_0x5e9668['attributes']=_0x5e9668[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x5e9668[_0x3aaa('0x4c')]:_0x15b794[_0x3aaa('0x47')];_0x5e9668[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x3f1d3a[_0x3aaa('0x48')]['sort']);_0x5e9668['where']=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x3f1d3a[_0x3aaa('0x48')],_0x15b794['filters']));if(_0x3f1d3a['query'][_0x3aaa('0x68')]){_0x5e9668[_0x3aaa('0x52')]=_['merge'](_0x5e9668[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0x5e9668[_0x3aaa('0x4c')],function(_0x451135){var _0x31d03c={};_0x31d03c[_0x451135]={'$like':'%'+_0x3f1d3a['query']['filter']+'%'};return _0x31d03c;})});}_0x5e9668=_['merge']({},_0x5e9668,_0x3f1d3a[_0x3aaa('0x54')]);return _0x5cb00d[_0x3aaa('0xc4')](_0x5e9668);}})[_0x3aaa('0x36')](function(_0x189571){if(_0x189571){_0x491bba=_0x189571[_0x3aaa('0x4e')];if(!_0x3f1d3a[_0x3aaa('0x48')][_0x3aaa('0x4f')](_0x3aaa('0x67'))){_0x5e9668[_0x3aaa('0x2e')]=qs[_0x3aaa('0x2e')](_0x3f1d3a[_0x3aaa('0x48')][_0x3aaa('0x2e')]);_0x5e9668['offset']=qs[_0x3aaa('0x31')](_0x3f1d3a[_0x3aaa('0x48')][_0x3aaa('0x31')]);}return _0x5cb00d[_0x3aaa('0xc4')](_0x5e9668);}})[_0x3aaa('0x36')](function(_0x452b89){if(_0x452b89){return _0x452b89?{'count':_0x491bba,'rows':_0x452b89}:null;}})[_0x3aaa('0x36')](respondWithResult(_0x26463a,null))[_0x3aaa('0x2b')](handleError(_0x26463a,null));};
\ No newline at end of file
+var _0xc54c=['MailAccount','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','Pause','mandatoryDispositionPause','include','find','update','body','describe','MailAccountId','Disposition','create','getDispositions','findOne','hasOwnProperty','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','active','description','isNil','cservice','cauthentication','user','password','pass','authentication','host','port','service','cpassword','UserProfileSection','userProfileId','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','setSmtp','addInteraction','MailInteraction','getInteractions','CmContact','Contact','User','internal','Tags','color','tag','addApplications','MailApplication','bulkCreate','findAndCountAll','priority','getApplications','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','true','send','split','CmList','List','Contacts','DESC','from','%s\x20<%s>','email','attachments','join','root','basename','secure','sendMail','List\x20not\x20found','ListId','messageId','subject','out','Interaction','Messages','verifySmtp','auth','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','papaparse','html-to-text','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./mailAccount.socket','client','http','request','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','destroy','get','MailAccounts','sendStatus','stack','name','index','MailServerIn','Imap','MailServerOut','Smtp','map'];(function(_0x49c6cc,_0x308bdb){var _0x22e239=function(_0x48507d){while(--_0x48507d){_0x49c6cc['push'](_0x49c6cc['shift']());}};_0x22e239(++_0x308bdb);}(_0xc54c,0x78));var _0xcc54=function(_0x23be51,_0xc02a1b){_0x23be51=_0x23be51-0x0;var _0x47a26d=_0xc54c[_0x23be51];return _0x47a26d;};'use strict';var emlformat=require(_0xcc54('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcc54('0x1'));var jsonpatch=require(_0xcc54('0x2'));var rp=require('request-promise');var moment=require(_0xcc54('0x3'));var BPromise=require(_0xcc54('0x4'));var Mustache=require(_0xcc54('0x5'));var util=require(_0xcc54('0x6'));var path=require('path');var sox=require(_0xcc54('0x7'));var csv=require('to-csv');var ejs=require(_0xcc54('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcc54('0x9'));var squel=require(_0xcc54('0xa'));var crypto=require(_0xcc54('0xb'));var jsforce=require(_0xcc54('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcc54('0xd'));var htmlToText=require(_0xcc54('0xe'));var juice=require('juice');var Redis=require(_0xcc54('0xf'));var authService=require(_0xcc54('0x10'));var qs=require(_0xcc54('0x11'));var as=require(_0xcc54('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xcc54('0x13'));var utils=require(_0xcc54('0x14'));var config=require(_0xcc54('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xcc54('0x16'))['db'];config[_0xcc54('0x17')]=_[_0xcc54('0x18')](config[_0xcc54('0x17')],{'host':_0xcc54('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcc54('0x17')]));require(_0xcc54('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xcc54('0x1b')][_0xcc54('0x1c')]({'port':0x232b});function respondWithRpcPromise(_0x5ccabe,_0x3dab11,_0xde9669,_0x4780cd){return new BPromise(function(_0x1e82b7,_0x557ee8){var _0x24fa0a=_0x4780cd||client;return _0x24fa0a[_0xcc54('0x1d')](_0x5ccabe,_0xde9669)[_0xcc54('0x1e')](function(_0x2882e7){logger[_0xcc54('0x1f')]('MailAccount,\x20%s,\x20%s',_0x3dab11,_0xcc54('0x20'));logger[_0xcc54('0x21')](_0xcc54('0x22'),_0x3dab11,_0xcc54('0x20'),JSON[_0xcc54('0x23')](_0x2882e7));if(_0x2882e7[_0xcc54('0x24')]){if(_0x2882e7['error'][_0xcc54('0x25')]===0x1f4){logger[_0xcc54('0x24')](_0xcc54('0x26'),_0x3dab11,_0x2882e7[_0xcc54('0x24')]['message']);return _0x557ee8(_0x2882e7[_0xcc54('0x24')]['message']);}logger[_0xcc54('0x24')](_0xcc54('0x26'),_0x3dab11,_0x2882e7[_0xcc54('0x24')][_0xcc54('0x27')]);return _0x1e82b7(_0x2882e7[_0xcc54('0x24')][_0xcc54('0x27')]);}else{logger[_0xcc54('0x1f')](_0xcc54('0x26'),_0x3dab11,_0xcc54('0x20'));_0x1e82b7(_0x2882e7[_0xcc54('0x28')][_0xcc54('0x27')]);}})[_0xcc54('0x29')](function(_0x58eabd){logger[_0xcc54('0x24')](_0xcc54('0x26'),_0x3dab11,_0x58eabd);_0x557ee8(_0x58eabd);});});}function respondWithStatusCode(_0x2f9800,_0x275b7b){_0x275b7b=_0x275b7b||0xcc;return function(_0x2acb5b){if(_0x2acb5b){return _0x2f9800['sendStatus'](_0x275b7b);}return _0x2f9800[_0xcc54('0x2a')](_0x275b7b)[_0xcc54('0x2b')]();};}function respondWithResult(_0x385422,_0x3c8a05){_0x3c8a05=_0x3c8a05||0xc8;return function(_0x5e8fc5){if(_0x5e8fc5){return _0x385422[_0xcc54('0x2a')](_0x3c8a05)['json'](_0x5e8fc5);}};}function respondWithFilteredResult(_0x4aa35a,_0x5f5b9d){return function(_0x30a86d){if(_0x30a86d){var _0x199b86=typeof _0x5f5b9d[_0xcc54('0x2c')]==='undefined'&&typeof _0x5f5b9d['limit']===_0xcc54('0x2d');var _0x150126=_0x30a86d['count'];var _0x220229=_0x199b86?0x0:_0x5f5b9d[_0xcc54('0x2c')];var _0x5199b0=_0x199b86?_0x30a86d[_0xcc54('0x2e')]:_0x5f5b9d[_0xcc54('0x2c')]+_0x5f5b9d[_0xcc54('0x2f')];var _0x315440;if(_0x5199b0>=_0x150126){_0x5199b0=_0x150126;_0x315440=0xc8;}else{_0x315440=0xce;}_0x4aa35a[_0xcc54('0x2a')](_0x315440);return _0x4aa35a['set'](_0xcc54('0x30'),_0x220229+'-'+_0x5199b0+'/'+_0x150126)[_0xcc54('0x31')](_0x30a86d);}return null;};}function patchUpdates(_0x436fdf){return function(_0x4c1fdd){try{jsonpatch[_0xcc54('0x32')](_0x4c1fdd,_0x436fdf,!![]);}catch(_0x4e8b6d){return BPromise[_0xcc54('0x33')](_0x4e8b6d);}return _0x4c1fdd[_0xcc54('0x34')]();};}function saveUpdates(_0x4ab6e8,_0x47e684){return function(_0x31d9ec){if(_0x31d9ec){return _0x31d9ec['update'](_0x4ab6e8)[_0xcc54('0x1e')](function(_0x38d8b4){return _0x38d8b4;});}return null;};}function removeEntity(_0x1a0a92,_0x32f7af){return function(_0x231dd8){if(_0x231dd8){return _0x231dd8[_0xcc54('0x35')]()[_0xcc54('0x1e')](function(){var _0x464ff7=_0x231dd8[_0xcc54('0x36')]({'plain':!![]});var _0x5edd7a=_0xcc54('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x5edd7a,'resourceId':_0x464ff7['id']}})[_0xcc54('0x1e')](function(){return _0x231dd8;});})[_0xcc54('0x1e')](function(){_0x1a0a92['status'](0xcc)[_0xcc54('0x2b')]();});}};}function handleEntityNotFound(_0x22d7b2,_0x5e4250){return function(_0x2e2707){if(!_0x2e2707){_0x22d7b2[_0xcc54('0x38')](0x194);}return _0x2e2707;};}function handleError(_0x5a0a62,_0x46ff5b){_0x46ff5b=_0x46ff5b||0x1f4;return function(_0x4609d3){logger['error'](_0x4609d3[_0xcc54('0x39')]);if(_0x4609d3[_0xcc54('0x3a')]){delete _0x4609d3['name'];}_0x5a0a62[_0xcc54('0x2a')](_0x46ff5b)['send'](_0x4609d3);};}exports[_0xcc54('0x3b')]=function(_0x57fa95,_0x1228dc){var _0x146cc1={'include':[{'model':db[_0xcc54('0x3c')],'as':_0xcc54('0x3d')},{'model':db[_0xcc54('0x3e')],'as':_0xcc54('0x3f')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1b28d9={},_0x590dff={'count':0x0,'rows':[]};var _0x20d1ec=_[_0xcc54('0x40')](db[_0xcc54('0x41')][_0xcc54('0x42')],function(_0x5a8dd6){return{'name':_0x5a8dd6['fieldName'],'type':_0x5a8dd6[_0xcc54('0x43')][_0xcc54('0x44')]};});_0x1b28d9[_0xcc54('0x45')]=_[_0xcc54('0x40')](_0x20d1ec,_0xcc54('0x3a'));_0x1b28d9[_0xcc54('0x46')]=_[_0xcc54('0x47')](_0x57fa95[_0xcc54('0x46')]);_0x1b28d9['filters']=_[_0xcc54('0x48')](_0x1b28d9['model'],_0x1b28d9[_0xcc54('0x46')]);_0x146cc1[_0xcc54('0x49')]=_[_0xcc54('0x48')](_0x1b28d9[_0xcc54('0x45')],qs['fields'](_0x57fa95[_0xcc54('0x46')][_0xcc54('0x4a')]));_0x146cc1[_0xcc54('0x49')]=_0x146cc1[_0xcc54('0x49')][_0xcc54('0x4b')]?_0x146cc1[_0xcc54('0x49')]:_0x1b28d9[_0xcc54('0x45')];if(!_0x57fa95['query']['hasOwnProperty'](_0xcc54('0x4c'))){_0x146cc1[_0xcc54('0x2f')]=qs[_0xcc54('0x2f')](_0x57fa95[_0xcc54('0x46')][_0xcc54('0x2f')]);_0x146cc1['offset']=qs[_0xcc54('0x2c')](_0x57fa95['query']['offset']);}_0x146cc1[_0xcc54('0x4d')]=qs[_0xcc54('0x4e')](_0x57fa95[_0xcc54('0x46')][_0xcc54('0x4e')]);_0x146cc1[_0xcc54('0x4f')]=qs[_0xcc54('0x50')](_[_0xcc54('0x51')](_0x57fa95[_0xcc54('0x46')],_0x1b28d9['filters']),_0x20d1ec);if(_0x57fa95[_0xcc54('0x46')][_0xcc54('0x52')]){_0x146cc1[_0xcc54('0x4f')]=_[_0xcc54('0x53')](_0x146cc1[_0xcc54('0x4f')],{'$or':_[_0xcc54('0x40')](_0x20d1ec,function(_0x38e2d2){if(_0x38e2d2[_0xcc54('0x43')]!==_0xcc54('0x54')){var _0x17f311={};_0x17f311[_0x38e2d2[_0xcc54('0x3a')]]={'$like':'%'+_0x57fa95[_0xcc54('0x46')]['filter']+'%'};return _0x17f311;}})});}_0x146cc1=_[_0xcc54('0x53')]({},_0x146cc1,_0x57fa95[_0xcc54('0x55')]);var _0x32027f={'where':_0x146cc1[_0xcc54('0x4f')]};return db['MailAccount'][_0xcc54('0x2e')](_0x32027f)[_0xcc54('0x1e')](function(_0x2a1530){_0x590dff[_0xcc54('0x2e')]=_0x2a1530;if(_0x57fa95[_0xcc54('0x46')][_0xcc54('0x56')]){_0x146cc1['include']=[{'all':!![]}];}return db[_0xcc54('0x41')][_0xcc54('0x57')](_0x146cc1);})[_0xcc54('0x1e')](function(_0x476bc4){_0x590dff[_0xcc54('0x58')]=_0x476bc4;return _0x590dff;})[_0xcc54('0x1e')](respondWithFilteredResult(_0x1228dc,_0x146cc1))[_0xcc54('0x29')](handleError(_0x1228dc,null));};exports[_0xcc54('0x59')]=function(_0x10d93f,_0x1294f6){var _0x5924e4={'raw':![],'where':{'id':_0x10d93f[_0xcc54('0x5a')]['id']},'include':[{'model':db[_0xcc54('0x3c')],'as':'Imap'},{'model':db[_0xcc54('0x3e')],'as':'Smtp'},{'model':db[_0xcc54('0x5b')],'as':_0xcc54('0x5c')}]},_0x4b664d={};_0x4b664d[_0xcc54('0x45')]=_[_0xcc54('0x47')](db[_0xcc54('0x41')][_0xcc54('0x42')]);_0x4b664d['query']=_[_0xcc54('0x47')](_0x10d93f['query']);_0x4b664d['filters']=_[_0xcc54('0x48')](_0x4b664d[_0xcc54('0x45')],_0x4b664d[_0xcc54('0x46')]);_0x5924e4[_0xcc54('0x49')]=_['intersection'](_0x4b664d[_0xcc54('0x45')],qs[_0xcc54('0x4a')](_0x10d93f[_0xcc54('0x46')][_0xcc54('0x4a')]));_0x5924e4[_0xcc54('0x49')]=_0x5924e4[_0xcc54('0x49')][_0xcc54('0x4b')]?_0x5924e4[_0xcc54('0x49')]:_0x4b664d[_0xcc54('0x45')];if(_0x10d93f['query']['includeAll']){_0x5924e4[_0xcc54('0x5d')]=[{'all':!![]}];}_0x5924e4=_[_0xcc54('0x53')]({},_0x5924e4,_0x10d93f['options']);return db[_0xcc54('0x41')][_0xcc54('0x5e')](_0x5924e4)[_0xcc54('0x1e')](handleEntityNotFound(_0x1294f6,null))['then'](respondWithResult(_0x1294f6,null))[_0xcc54('0x29')](handleError(_0x1294f6,null));};exports[_0xcc54('0x5f')]=function(_0x44ff93,_0x3940fd){if(_0x44ff93['body']['id']){delete _0x44ff93[_0xcc54('0x60')]['id'];}return db['MailAccount'][_0xcc54('0x5e')]({'where':{'id':_0x44ff93[_0xcc54('0x5a')]['id']},'include':[{'model':db[_0xcc54('0x3c')],'as':_0xcc54('0x3d')},{'model':db['MailServerOut'],'as':_0xcc54('0x3f')},{'model':db[_0xcc54('0x5b')],'as':_0xcc54('0x5c')}]})['then'](handleEntityNotFound(_0x3940fd,null))[_0xcc54('0x1e')](saveUpdates(_0x44ff93[_0xcc54('0x60')],null))[_0xcc54('0x1e')](function(_0xd76b2b){if(_0xd76b2b&&_0x44ff93[_0xcc54('0x60')][_0xcc54('0x3d')]){return db[_0xcc54('0x3c')][_0xcc54('0x5f')](_0x44ff93['body']['Imap'],{'where':{'MailAccountId':_0xd76b2b['id']}})['then'](function(){return _0xd76b2b;});}return _0xd76b2b;})['then'](function(_0x2098e8){if(_0x2098e8&&_0x44ff93[_0xcc54('0x60')][_0xcc54('0x3f')]){return db[_0xcc54('0x3e')]['update'](_0x44ff93[_0xcc54('0x60')][_0xcc54('0x3f')],{'where':{'MailAccountId':_0x2098e8['id']}})[_0xcc54('0x1e')](function(){return _0x2098e8;});}return _0x2098e8;})[_0xcc54('0x1e')](respondWithResult(_0x3940fd,null))[_0xcc54('0x29')](handleError(_0x3940fd,null));};exports[_0xcc54('0x61')]=function(_0x557b38,_0x46f5c2){return db[_0xcc54('0x41')]['describe']()[_0xcc54('0x1e')](respondWithResult(_0x46f5c2,null))['catch'](handleError(_0x46f5c2,null));};exports['addDisposition']=function(_0x4eb57a,_0x31dea2,_0x2f8843){if(_0x4eb57a[_0xcc54('0x60')]['id']){delete _0x4eb57a[_0xcc54('0x60')]['id'];}return db[_0xcc54('0x41')][_0xcc54('0x5e')]({'where':{'id':_0x4eb57a[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x31dea2,null))['then'](function(_0x4478f0){if(_0x4478f0){_0x4eb57a[_0xcc54('0x60')][_0xcc54('0x62')]=_0x4478f0['id'];return db[_0xcc54('0x63')][_0xcc54('0x64')](_0x4eb57a[_0xcc54('0x60')]);}})['then'](respondWithResult(_0x31dea2,null))[_0xcc54('0x29')](handleError(_0x31dea2,null));};exports[_0xcc54('0x65')]=function(_0x815221,_0x1ad879,_0x1341cc){var _0x4e16ee={'raw':![],'where':{}};var _0x1d530d={};var _0x374a5d={'count':0x0,'rows':[]};return db['MailAccount'][_0xcc54('0x66')]({'where':{'id':_0x815221[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x1ad879,null))[_0xcc54('0x1e')](function(_0x2c0439){if(_0x2c0439){_0x1d530d[_0xcc54('0x45')]=_['keys'](db[_0xcc54('0x63')][_0xcc54('0x42')]);_0x1d530d[_0xcc54('0x46')]=_[_0xcc54('0x47')](_0x815221[_0xcc54('0x46')]);_0x1d530d['filters']=_[_0xcc54('0x48')](_0x1d530d['model'],_0x1d530d[_0xcc54('0x46')]);_0x4e16ee[_0xcc54('0x49')]=_[_0xcc54('0x48')](_0x1d530d[_0xcc54('0x45')],qs['fields'](_0x815221[_0xcc54('0x46')][_0xcc54('0x4a')]));_0x4e16ee[_0xcc54('0x49')]=_0x4e16ee[_0xcc54('0x49')][_0xcc54('0x4b')]?_0x4e16ee[_0xcc54('0x49')]:_0x1d530d[_0xcc54('0x45')];if(!_0x815221[_0xcc54('0x46')][_0xcc54('0x67')](_0xcc54('0x4c'))){_0x4e16ee[_0xcc54('0x2f')]=qs['limit'](_0x815221[_0xcc54('0x46')]['limit']);_0x4e16ee['offset']=qs[_0xcc54('0x2c')](_0x815221[_0xcc54('0x46')][_0xcc54('0x2c')]);}_0x4e16ee[_0xcc54('0x4d')]=qs[_0xcc54('0x4e')](_0x815221['query'][_0xcc54('0x4e')]);_0x4e16ee[_0xcc54('0x4f')]=qs[_0xcc54('0x50')](_['pick'](_0x815221[_0xcc54('0x46')],_0x1d530d[_0xcc54('0x50')]));_0x4e16ee[_0xcc54('0x4f')][_0xcc54('0x62')]=_0x2c0439['id'];if(_0x815221[_0xcc54('0x46')][_0xcc54('0x52')]){_0x4e16ee[_0xcc54('0x4f')]=_[_0xcc54('0x53')](_0x4e16ee[_0xcc54('0x4f')],{'$or':_[_0xcc54('0x40')](_0x4e16ee[_0xcc54('0x49')],function(_0x22dd19){var _0x2b6b90={};_0x2b6b90[_0x22dd19]={'$like':'%'+_0x815221[_0xcc54('0x46')][_0xcc54('0x52')]+'%'};return _0x2b6b90;})});}_0x4e16ee=_[_0xcc54('0x53')]({},_0x4e16ee,_0x815221[_0xcc54('0x55')]);return db[_0xcc54('0x63')][_0xcc54('0x2e')]({'where':_0x4e16ee['where']})[_0xcc54('0x1e')](function(_0x1e55bb){_0x374a5d[_0xcc54('0x2e')]=_0x1e55bb;if(_0x815221[_0xcc54('0x46')][_0xcc54('0x56')]){_0x4e16ee['include']=[{'all':!![]}];}return db[_0xcc54('0x63')][_0xcc54('0x57')](_0x4e16ee);})['then'](function(_0x4fd579){_0x374a5d['rows']=_0x4fd579;return _0x374a5d;});}})['then'](respondWithFilteredResult(_0x1ad879,_0x4e16ee))[_0xcc54('0x29')](handleError(_0x1ad879,null));};exports['removeDispositions']=function(_0x16ffd8,_0x3137b9,_0x195334){return db['MailAccount'][_0xcc54('0x5e')]({'where':{'id':_0x16ffd8[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x3137b9,null))[_0xcc54('0x1e')](function(_0x396577){if(_0x396577){return _0x396577[_0xcc54('0x68')](_0x16ffd8[_0xcc54('0x46')][_0xcc54('0x69')]);}})['then'](respondWithStatusCode(_0x3137b9,null))[_0xcc54('0x29')](handleError(_0x3137b9,null));};exports['addAnswer']=function(_0x2eab21,_0x45b32c,_0x540e1f){if(_0x2eab21['body']['id']){delete _0x2eab21[_0xcc54('0x60')]['id'];}return db['MailAccount'][_0xcc54('0x5e')]({'where':{'id':_0x2eab21[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x45b32c,null))['then'](function(_0xd1978e){if(_0xd1978e){_0x2eab21['body'][_0xcc54('0x62')]=_0xd1978e['id'];return db[_0xcc54('0x6a')][_0xcc54('0x64')](_0x2eab21[_0xcc54('0x60')]);}})[_0xcc54('0x1e')](respondWithResult(_0x45b32c,null))['catch'](handleError(_0x45b32c,null));};exports[_0xcc54('0x6b')]=function(_0x7ef928,_0x5964bb,_0x2bee48){var _0x42c0f7={'raw':![],'where':{}};var _0x41b3ec={};var _0x346d68={'count':0x0,'rows':[]};return db['MailAccount'][_0xcc54('0x66')]({'where':{'id':_0x7ef928[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x5964bb,null))[_0xcc54('0x1e')](function(_0xa9e9f6){if(_0xa9e9f6){_0x41b3ec[_0xcc54('0x45')]=_[_0xcc54('0x47')](db[_0xcc54('0x6a')][_0xcc54('0x42')]);_0x41b3ec[_0xcc54('0x46')]=_[_0xcc54('0x47')](_0x7ef928[_0xcc54('0x46')]);_0x41b3ec[_0xcc54('0x50')]=_[_0xcc54('0x48')](_0x41b3ec[_0xcc54('0x45')],_0x41b3ec['query']);_0x42c0f7['attributes']=_[_0xcc54('0x48')](_0x41b3ec[_0xcc54('0x45')],qs[_0xcc54('0x4a')](_0x7ef928[_0xcc54('0x46')]['fields']));_0x42c0f7[_0xcc54('0x49')]=_0x42c0f7[_0xcc54('0x49')][_0xcc54('0x4b')]?_0x42c0f7['attributes']:_0x41b3ec[_0xcc54('0x45')];if(!_0x7ef928[_0xcc54('0x46')]['hasOwnProperty']('nolimit')){_0x42c0f7[_0xcc54('0x2f')]=qs['limit'](_0x7ef928[_0xcc54('0x46')][_0xcc54('0x2f')]);_0x42c0f7[_0xcc54('0x2c')]=qs[_0xcc54('0x2c')](_0x7ef928[_0xcc54('0x46')][_0xcc54('0x2c')]);}_0x42c0f7[_0xcc54('0x4d')]=qs['sort'](_0x7ef928['query'][_0xcc54('0x4e')]);_0x42c0f7[_0xcc54('0x4f')]=qs[_0xcc54('0x50')](_[_0xcc54('0x51')](_0x7ef928[_0xcc54('0x46')],_0x41b3ec['filters']));_0x42c0f7[_0xcc54('0x4f')][_0xcc54('0x62')]=_0xa9e9f6['id'];if(_0x7ef928[_0xcc54('0x46')][_0xcc54('0x52')]){_0x42c0f7['where']=_[_0xcc54('0x53')](_0x42c0f7[_0xcc54('0x4f')],{'$or':_['map'](_0x42c0f7[_0xcc54('0x49')],function(_0xc8a225){var _0x52ed12={};_0x52ed12[_0xc8a225]={'$like':'%'+_0x7ef928[_0xcc54('0x46')][_0xcc54('0x52')]+'%'};return _0x52ed12;})});}_0x42c0f7=_[_0xcc54('0x53')]({},_0x42c0f7,_0x7ef928[_0xcc54('0x55')]);return db['CannedAnswer']['count']({'where':_0x42c0f7[_0xcc54('0x4f')]})[_0xcc54('0x1e')](function(_0x2b5ed8){_0x346d68[_0xcc54('0x2e')]=_0x2b5ed8;if(_0x7ef928['query'][_0xcc54('0x56')]){_0x42c0f7[_0xcc54('0x5d')]=[{'all':!![]}];}return db[_0xcc54('0x6a')][_0xcc54('0x57')](_0x42c0f7);})[_0xcc54('0x1e')](function(_0x48fd57){_0x346d68[_0xcc54('0x58')]=_0x48fd57;return _0x346d68;});}})[_0xcc54('0x1e')](respondWithFilteredResult(_0x5964bb,_0x42c0f7))[_0xcc54('0x29')](handleError(_0x5964bb,null));};exports[_0xcc54('0x6c')]=function(_0x14c5a4,_0x2f046b,_0x4723f3){return db[_0xcc54('0x41')][_0xcc54('0x5e')]({'where':{'id':_0x14c5a4[_0xcc54('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2f046b,null))['then'](function(_0x2d29a7){if(_0x2d29a7){return _0x2d29a7['removeAnswers'](_0x14c5a4[_0xcc54('0x46')][_0xcc54('0x69')]);}})[_0xcc54('0x1e')](respondWithStatusCode(_0x2f046b,null))['catch'](handleError(_0x2f046b,null));};exports[_0xcc54('0x64')]=function(_0x131398,_0x535132){var _0x29c978={'name':_0x131398[_0xcc54('0x60')][_0xcc54('0x3a')],'key':_0x131398[_0xcc54('0x60')][_0xcc54('0x44')],'email':_0x131398[_0xcc54('0x60')]['email'],'ListId':_0x131398[_0xcc54('0x60')]['ListId'],'active':!_['isNil'](_0x131398['body'][_0xcc54('0x6d')])?_0x131398[_0xcc54('0x60')]['active']:!![],'description':_0x131398[_0xcc54('0x60')][_0xcc54('0x6e')]||null,'Imap':{},'Smtp':{}};if(_[_0xcc54('0x6f')](_0x131398[_0xcc54('0x60')][_0xcc54('0x70')])){if(_0x131398['body'][_0xcc54('0x71')]){_0x29c978[_0xcc54('0x3d')][_0xcc54('0x72')]=_0x29c978[_0xcc54('0x3f')]['user']=_0x131398[_0xcc54('0x60')]['cuser'];_0x29c978[_0xcc54('0x3d')][_0xcc54('0x73')]=_0x29c978['Smtp'][_0xcc54('0x74')]=_0x131398[_0xcc54('0x60')]['cpassword'];}else{_0x29c978[_0xcc54('0x3d')][_0xcc54('0x75')]=_0x29c978['Smtp'][_0xcc54('0x75')]=![];}_0x29c978[_0xcc54('0x3d')][_0xcc54('0x76')]=_0x131398[_0xcc54('0x60')][_0xcc54('0x3d')][_0xcc54('0x76')];_0x29c978[_0xcc54('0x3d')][_0xcc54('0x77')]=_0x131398['body']['Imap'][_0xcc54('0x77')];_0x29c978['Smtp'][_0xcc54('0x76')]=_0x131398[_0xcc54('0x60')][_0xcc54('0x3f')][_0xcc54('0x76')];_0x29c978[_0xcc54('0x3f')][_0xcc54('0x77')]=_0x131398['body'][_0xcc54('0x3f')][_0xcc54('0x77')];}else{_0x29c978[_0xcc54('0x3d')]['service']=_0x29c978[_0xcc54('0x3f')][_0xcc54('0x78')]=_0x131398['body']['cservice'];_0x29c978[_0xcc54('0x3d')][_0xcc54('0x72')]=_0x29c978['Smtp']['user']=_0x131398[_0xcc54('0x60')]['cuser'];_0x29c978['Imap'][_0xcc54('0x73')]=_0x29c978[_0xcc54('0x3f')][_0xcc54('0x74')]=_0x131398[_0xcc54('0x60')][_0xcc54('0x79')];}return db['MailAccount'][_0xcc54('0x64')](_0x29c978,{'include':[{'model':db[_0xcc54('0x3e')],'as':_0xcc54('0x3f')},{'model':db['MailServerIn'],'as':'Imap'}]})[_0xcc54('0x1e')](function(_0x395fe1){var _0x22c488=_0x131398['user']['get']({'plain':!![]});if(!_0x22c488)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x22c488['role']==='user'){var _0x36d4b4=_0x395fe1[_0xcc54('0x36')]({'plain':!![]});return db[_0xcc54('0x7a')][_0xcc54('0x5e')]({'where':{'name':_0xcc54('0x37'),'userProfileId':_0x22c488[_0xcc54('0x7b')]},'raw':!![]})[_0xcc54('0x1e')](function(_0x4e3aaa){if(_0x4e3aaa&&_0x4e3aaa['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x36d4b4[_0xcc54('0x3a')],'resourceId':_0x36d4b4['id'],'type':_0x4e3aaa[_0xcc54('0x3a')],'sectionId':_0x4e3aaa['id']},{})[_0xcc54('0x1e')](function(){return _0x395fe1;});}else{return _0x395fe1;}})[_0xcc54('0x29')](function(_0x23f3f7){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23f3f7);throw _0x23f3f7;});}return _0x395fe1;})['then'](respondWithResult(_0x535132,0xc9))[_0xcc54('0x29')](handleError(_0x535132,null));};exports[_0xcc54('0x7c')]=function(_0x9585ee,_0x233827,_0x472aaa){return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x9585ee[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x233827,null))[_0xcc54('0x1e')](function(_0xc90651){if(_0xc90651){return _0xc90651[_0xcc54('0x7c')]();}return null;})[_0xcc54('0x1e')](respondWithResult(_0x233827,null))[_0xcc54('0x29')](handleError(_0x233827,null));};exports[_0xcc54('0x7d')]=function(_0x298a5c,_0x45492a,_0x4b59df){if(_0x298a5c[_0xcc54('0x60')]['id']){delete _0x298a5c[_0xcc54('0x60')]['id'];}return db['MailAccount'][_0xcc54('0x5e')]({'where':{'id':_0x298a5c[_0xcc54('0x5a')]['id']}})['then'](handleEntityNotFound(_0x45492a,null))[_0xcc54('0x1e')](function(_0x3271c9){if(_0x3271c9){_0x298a5c[_0xcc54('0x60')][_0xcc54('0x62')]=_0x3271c9['id'];return db[_0xcc54('0x3c')][_0xcc54('0x64')](_0x298a5c['body']);}})['then'](respondWithResult(_0x45492a,null))[_0xcc54('0x29')](handleError(_0x45492a,null));};exports[_0xcc54('0x7e')]=function(_0x522f6b,_0x1bb5a1,_0x106bc2){return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x522f6b['params']['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x1bb5a1,null))[_0xcc54('0x1e')](function(_0xdc988d){if(_0xdc988d){return _0xdc988d[_0xcc54('0x7f')](null);}return null;})[_0xcc54('0x1e')](respondWithStatusCode(_0x1bb5a1,null))[_0xcc54('0x29')](handleError(_0x1bb5a1,null));};exports[_0xcc54('0x80')]=function(_0x41745b,_0x2c8d20,_0x150760){return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x41745b[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x2c8d20,null))['then'](function(_0x33f4fc){if(_0x33f4fc){return _0x33f4fc[_0xcc54('0x80')]();}return null;})[_0xcc54('0x1e')](respondWithResult(_0x2c8d20,null))[_0xcc54('0x29')](handleError(_0x2c8d20,null));};exports[_0xcc54('0x81')]=function(_0x556172,_0x29f227,_0x33f255){if(_0x556172[_0xcc54('0x60')]['id']){delete _0x556172[_0xcc54('0x60')]['id'];}return db[_0xcc54('0x41')][_0xcc54('0x5e')]({'where':{'id':_0x556172[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x29f227,null))[_0xcc54('0x1e')](function(_0x4e957e){if(_0x4e957e){_0x556172[_0xcc54('0x60')]['MailAccountId']=_0x4e957e['id'];return db[_0xcc54('0x3e')]['create'](_0x556172[_0xcc54('0x60')]);}})[_0xcc54('0x1e')](respondWithResult(_0x29f227,null))['catch'](handleError(_0x29f227,null));};exports['removeSmtp']=function(_0x290a8b,_0xa5208a,_0x4c0211){return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x290a8b[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0xa5208a,null))[_0xcc54('0x1e')](function(_0x480f58){if(_0x480f58){return _0x480f58[_0xcc54('0x82')](null);}return null;})[_0xcc54('0x1e')](respondWithStatusCode(_0xa5208a,null))['catch'](handleError(_0xa5208a,null));};exports[_0xcc54('0x83')]=function(_0x3a0fdf,_0x2d289c,_0x572574){return db[_0xcc54('0x84')][_0xcc54('0x5e')]({'where':{'id':_0x3a0fdf[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x2d289c,null))[_0xcc54('0x1e')](function(_0x17400d){if(_0x17400d){return _0x17400d[_0xcc54('0x83')](_0x3a0fdf[_0xcc54('0x60')][_0xcc54('0x69')],_['omit'](_0x3a0fdf[_0xcc54('0x60')],[_0xcc54('0x69'),'id'])||{});}})[_0xcc54('0x1e')](respondWithResult(_0x2d289c,null))[_0xcc54('0x29')](handleError(_0x2d289c,null));};exports[_0xcc54('0x85')]=function(_0x594621,_0x3f2f37,_0x2ce449){var _0x1c29be={'raw':![],'where':{}};var _0x28c0aa={};var _0x30de4e={'count':0x0,'rows':[]};return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x594621[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x3f2f37,null))[_0xcc54('0x1e')](function(_0x4178af){if(_0x4178af){_0x28c0aa[_0xcc54('0x45')]=_[_0xcc54('0x47')](db[_0xcc54('0x84')]['rawAttributes']);_0x28c0aa[_0xcc54('0x46')]=_[_0xcc54('0x47')](_0x594621[_0xcc54('0x46')]);_0x28c0aa['filters']=_[_0xcc54('0x48')](_0x28c0aa[_0xcc54('0x45')],_0x28c0aa[_0xcc54('0x46')]);_0x1c29be['attributes']=_[_0xcc54('0x48')](_0x28c0aa['model'],qs[_0xcc54('0x4a')](_0x594621[_0xcc54('0x46')][_0xcc54('0x4a')]));_0x1c29be['attributes']=_0x1c29be[_0xcc54('0x49')][_0xcc54('0x4b')]?_0x1c29be['attributes']:_0x28c0aa['model'];if(!_0x594621[_0xcc54('0x46')][_0xcc54('0x67')](_0xcc54('0x4c'))){_0x1c29be[_0xcc54('0x2f')]=qs['limit'](_0x594621[_0xcc54('0x46')]['limit']);_0x1c29be[_0xcc54('0x2c')]=qs[_0xcc54('0x2c')](_0x594621[_0xcc54('0x46')][_0xcc54('0x2c')]);}_0x1c29be[_0xcc54('0x4d')]=qs['sort'](_0x594621['query'][_0xcc54('0x4e')]);_0x1c29be[_0xcc54('0x4f')]=qs[_0xcc54('0x50')](_['pick'](_0x594621[_0xcc54('0x46')],_0x28c0aa[_0xcc54('0x50')]));_0x1c29be[_0xcc54('0x4f')]['MailAccountId']=_0x4178af['id'];if(_0x594621[_0xcc54('0x46')]['filter']){_0x1c29be[_0xcc54('0x4f')]=_['merge'](_0x1c29be[_0xcc54('0x4f')],{'$or':_[_0xcc54('0x40')](_0x1c29be['attributes'],function(_0x2fec16){var _0x2dace4={};_0x2dace4[_0x2fec16]={'$like':'%'+_0x594621[_0xcc54('0x46')]['filter']+'%'};return _0x2dace4;})});}_0x1c29be=_[_0xcc54('0x53')]({},_0x1c29be,_0x594621[_0xcc54('0x55')]);return db['MailInteraction'][_0xcc54('0x2e')]({'where':_0x1c29be[_0xcc54('0x4f')]})['then'](function(_0x2646b2){_0x30de4e['count']=_0x2646b2;if(_0x594621['query'][_0xcc54('0x56')]){_0x1c29be[_0xcc54('0x5d')]=[{'model':db[_0xcc54('0x86')],'as':_0xcc54('0x87'),'required':![]},{'model':db[_0xcc54('0x88')],'as':'Owner','attributes':['name','fullname',_0xcc54('0x89')],'required':![]},{'model':db['Tag'],'as':_0xcc54('0x8a'),'attributes':['id',_0xcc54('0x3a'),_0xcc54('0x8b')],'where':_0x594621['query'][_0xcc54('0x8c')]?{'id':_0x594621[_0xcc54('0x46')]['tag']}:undefined,'required':_0x594621[_0xcc54('0x46')][_0xcc54('0x8c')]?!![]:![]}];}return db['MailInteraction'][_0xcc54('0x57')](_0x1c29be);})[_0xcc54('0x1e')](function(_0x23cbd0){_0x30de4e[_0xcc54('0x58')]=_0x23cbd0;return _0x30de4e;});}})[_0xcc54('0x1e')](respondWithFilteredResult(_0x3f2f37,_0x1c29be))[_0xcc54('0x29')](handleError(_0x3f2f37,null));};exports[_0xcc54('0x8d')]=function(_0x33dc60,_0x1e8275,_0x14f603){return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x33dc60[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x1e8275,null))[_0xcc54('0x1e')](function(_0x362e3d){if(_0x362e3d){return db['sequelize']['transaction'](function(_0x20bf14){return db['MailApplication']['destroy']({'where':{'MailAccountId':_0x33dc60[_0xcc54('0x5a')]['id']},'transaction':_0x20bf14})[_0xcc54('0x1e')](function(_0x3b16f1){var _0x280230=_['map'](_0x33dc60[_0xcc54('0x60')],function(_0x26d71d){_0x26d71d[_0xcc54('0x62')]=_0x33dc60[_0xcc54('0x5a')]['id'];return _0x26d71d;});return db[_0xcc54('0x8e')][_0xcc54('0x8f')](_0x280230,{'transaction':_0x20bf14});});})[_0xcc54('0x1e')](function(){return db[_0xcc54('0x8e')][_0xcc54('0x90')]({'where':{'MailAccountId':_0x33dc60[_0xcc54('0x5a')]['id']},'order':_0xcc54('0x91')});});}})['then'](respondWithResult(_0x1e8275,null))[_0xcc54('0x29')](handleError(_0x1e8275,null));};exports['getApplications']=function(_0x43372d,_0x1a4ef9,_0x53da69){var _0x20878b={};var _0x4e973d={};var _0x3f16dc;var _0x225868;return db[_0xcc54('0x41')][_0xcc54('0x66')]({'where':{'id':_0x43372d[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x1a4ef9,null))[_0xcc54('0x1e')](function(_0x2eaf51){if(_0x2eaf51){_0x3f16dc=_0x2eaf51;_0x4e973d['model']=_[_0xcc54('0x47')](db[_0xcc54('0x8e')][_0xcc54('0x42')]);_0x4e973d[_0xcc54('0x46')]=_[_0xcc54('0x47')](_0x43372d[_0xcc54('0x46')]);_0x4e973d['filters']=_[_0xcc54('0x48')](_0x4e973d[_0xcc54('0x45')],_0x4e973d[_0xcc54('0x46')]);_0x20878b['attributes']=_[_0xcc54('0x48')](_0x4e973d[_0xcc54('0x45')],qs[_0xcc54('0x4a')](_0x43372d[_0xcc54('0x46')][_0xcc54('0x4a')]));_0x20878b['attributes']=_0x20878b[_0xcc54('0x49')][_0xcc54('0x4b')]?_0x20878b['attributes']:_0x4e973d[_0xcc54('0x45')];_0x20878b[_0xcc54('0x4d')]=qs[_0xcc54('0x4e')](_0x43372d['query'][_0xcc54('0x4e')]);_0x20878b[_0xcc54('0x4f')]=qs[_0xcc54('0x50')](_[_0xcc54('0x51')](_0x43372d[_0xcc54('0x46')],_0x4e973d[_0xcc54('0x50')]));if(_0x43372d['query']['filter']){_0x20878b[_0xcc54('0x4f')]=_[_0xcc54('0x53')](_0x20878b[_0xcc54('0x4f')],{'$or':_[_0xcc54('0x40')](_0x20878b[_0xcc54('0x49')],function(_0x3c0b0d){var _0x1a2932={};_0x1a2932[_0x3c0b0d]={'$like':'%'+_0x43372d['query'][_0xcc54('0x52')]+'%'};return _0x1a2932;})});}_0x20878b=_[_0xcc54('0x53')]({},_0x20878b,_0x43372d[_0xcc54('0x55')]);return _0x3f16dc[_0xcc54('0x92')](_0x20878b);}})['then'](function(_0x50dc21){if(_0x50dc21){_0x225868=_0x50dc21['length'];if(!_0x43372d[_0xcc54('0x46')][_0xcc54('0x67')](_0xcc54('0x4c'))){_0x20878b[_0xcc54('0x2f')]=qs[_0xcc54('0x2f')](_0x43372d['query']['limit']);_0x20878b['offset']=qs[_0xcc54('0x2c')](_0x43372d['query'][_0xcc54('0x2c')]);}return _0x3f16dc[_0xcc54('0x92')](_0x20878b);}})['then'](function(_0x4ae33d){if(_0x4ae33d){return _0x4ae33d?{'count':_0x225868,'rows':_0x4ae33d}:null;}})[_0xcc54('0x1e')](respondWithResult(_0x1a4ef9,null))[_0xcc54('0x29')](handleError(_0x1a4ef9,null));};exports[_0xcc54('0x93')]=function(_0x34f851,_0x47a36a,_0x137491){var _0x11ae4c={'raw':!![],'where':{}};var _0x4bcf0c={};var _0x131e9f={'count':0x0,'rows':[]};return db['MailAccount'][_0xcc54('0x66')]({'where':{'id':_0x34f851[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x47a36a,null))[_0xcc54('0x1e')](function(_0x8cbca9){if(_0x8cbca9){_0x4bcf0c[_0xcc54('0x45')]=_[_0xcc54('0x47')](db['MailMessage']['rawAttributes']);_0x4bcf0c['query']=_[_0xcc54('0x47')](_0x34f851[_0xcc54('0x46')]);_0x4bcf0c[_0xcc54('0x50')]=_[_0xcc54('0x48')](_0x4bcf0c[_0xcc54('0x45')],_0x4bcf0c[_0xcc54('0x46')]);_0x11ae4c[_0xcc54('0x49')]=_[_0xcc54('0x48')](_0x4bcf0c[_0xcc54('0x45')],qs[_0xcc54('0x4a')](_0x34f851[_0xcc54('0x46')]['fields']));_0x11ae4c[_0xcc54('0x49')]=_0x11ae4c[_0xcc54('0x49')]['length']?_0x11ae4c[_0xcc54('0x49')]:_0x4bcf0c[_0xcc54('0x45')];if(!_0x34f851[_0xcc54('0x46')][_0xcc54('0x67')]('nolimit')){_0x11ae4c[_0xcc54('0x2f')]=qs[_0xcc54('0x2f')](_0x34f851['query']['limit']);_0x11ae4c[_0xcc54('0x2c')]=qs[_0xcc54('0x2c')](_0x34f851['query'][_0xcc54('0x2c')]);}_0x11ae4c[_0xcc54('0x4d')]=qs['sort'](_0x34f851[_0xcc54('0x46')]['sort']);_0x11ae4c[_0xcc54('0x4f')]=qs['filters'](_[_0xcc54('0x51')](_0x34f851[_0xcc54('0x46')],_0x4bcf0c['filters']));_0x11ae4c[_0xcc54('0x4f')][_0xcc54('0x62')]=_0x8cbca9['id'];if(_0x34f851['query']['filter']){_0x11ae4c['where']=_['merge'](_0x11ae4c['where'],{'$or':_[_0xcc54('0x40')](_0x11ae4c[_0xcc54('0x49')],function(_0x1cc10b){var _0x3a466e={};_0x3a466e[_0x1cc10b]={'$like':'%'+_0x34f851[_0xcc54('0x46')][_0xcc54('0x52')]+'%'};return _0x3a466e;})});}if(_0x34f851['query'][_0xcc54('0x94')]){var _0x3b0294=_0x34f851[_0xcc54('0x46')][_0xcc54('0x94')]['split'](',');var _0x5f3ae7={};_0x5f3ae7[_0x3b0294[0x0]]={'$gte':moment(_0x3b0294[0x1])[_0xcc54('0x95')](_0xcc54('0x96'))};_0x11ae4c[_0xcc54('0x4f')]=_['merge'](_0x11ae4c['where'],_0x5f3ae7);}_0x11ae4c=_[_0xcc54('0x53')]({},_0x11ae4c,_0x34f851[_0xcc54('0x55')]);return db[_0xcc54('0x97')][_0xcc54('0x2e')]({'where':_0x11ae4c[_0xcc54('0x4f')]})[_0xcc54('0x1e')](function(_0x5ae731){_0x131e9f[_0xcc54('0x2e')]=_0x5ae731;if(_0x34f851['query'][_0xcc54('0x56')]){_0x11ae4c[_0xcc54('0x5d')]=[{'all':!![]}];}return db[_0xcc54('0x97')][_0xcc54('0x57')](_0x11ae4c);})[_0xcc54('0x1e')](function(_0x24b608){if(_0x34f851[_0xcc54('0x46')][_0xcc54('0x98')]===_0xcc54('0x99')){for(var _0x120930=0x0;_0x120930<_0x24b608['length'];_0x120930++){_0x24b608[_0x120930][_0xcc54('0x60')]=juice(_0x24b608[_0x120930]['body']);}}_0x131e9f[_0xcc54('0x58')]=_0x24b608;return _0x131e9f;});}})[_0xcc54('0x1e')](respondWithFilteredResult(_0x47a36a,_0x11ae4c))['catch'](handleError(_0x47a36a,null));};exports[_0xcc54('0x9a')]=function(_0x573082,_0x6b465d,_0x2693f1){var _0xb0fcb,_0xf10936={},_0x5d4fd8;if(_0x573082['body']['to']){_0x5d4fd8=_0x573082[_0xcc54('0x60')]['to'][_0xcc54('0x9b')](',')[0x0];}return db[_0xcc54('0x41')][_0xcc54('0x5e')]({'where':{'id':_0x573082[_0xcc54('0x5a')]['id']},'include':[{'model':db[_0xcc54('0x9c')],'as':_0xcc54('0x9d'),'include':[{'model':db[_0xcc54('0x86')],'as':_0xcc54('0x9e'),'where':{'email':_0x5d4fd8},'limit':0x1,'order':[['updatedAt',_0xcc54('0x9f')]]}]},{'model':db['MailServerOut'],'as':_0xcc54('0x3f'),'raw':!![]}]})[_0xcc54('0x1e')](handleEntityNotFound(_0x6b465d,null))[_0xcc54('0x1e')](function(_0xa43aba){if(_0xa43aba){_0xb0fcb=_0xa43aba;if(_0xa43aba[_0xcc54('0x3f')]){if(_[_0xcc54('0x6f')](_0x573082[_0xcc54('0x60')][_0xcc54('0xa0')])){_0x573082[_0xcc54('0x60')]['from']=util[_0xcc54('0x95')](_0xcc54('0xa1'),_0xa43aba[_0xcc54('0x3a')],_0xa43aba[_0xcc54('0xa2')]||_0xa43aba[_0xcc54('0x3f')]['user']);}if(_0x573082[_0xcc54('0x60')][_0xcc54('0xa3')]&&_0x573082[_0xcc54('0x60')][_0xcc54('0xa3')][_0xcc54('0x4b')]){for(var _0x1d18fc=0x0;_0x1d18fc<_0x573082[_0xcc54('0x60')][_0xcc54('0xa3')]['length'];_0x1d18fc+=0x1){_0x573082[_0xcc54('0x60')]['attachments'][_0x1d18fc]={'filename':_0x573082[_0xcc54('0x60')][_0xcc54('0xa3')][_0x1d18fc][_0xcc54('0x3a')],'path':path[_0xcc54('0xa4')](config[_0xcc54('0xa5')],'server/files/attachments',_0x573082['body']['attachments'][_0x1d18fc][_0xcc54('0xa6')])};}}var _0xbfde06={'tls':{'rejectUnauthorized':![]}};if(_[_0xcc54('0x6f')](_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x78')])){if(_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x75')]){_0xbfde06['auth']={'user':_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x72')],'pass':_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x74')]};}_0xbfde06[_0xcc54('0x76')]=_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x76')];_0xbfde06[_0xcc54('0x77')]=_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x77')];_0xbfde06[_0xcc54('0xa7')]=_0xa43aba[_0xcc54('0x3f')][_0xcc54('0xa7')];}else{_0xbfde06['service']=_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x78')];_0xbfde06['auth']={'user':_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x72')],'pass':_0xa43aba[_0xcc54('0x3f')][_0xcc54('0x74')]};}return respondWithRpcPromise('SendMail',_0xcc54('0xa8'),{'account':_0xbfde06,'message':_0x573082[_0xcc54('0x60')]});}else{throw new Error(_0xcc54('0xa9'));}}})[_0xcc54('0x1e')](function(_0x248bcd){if(_0x248bcd){_0xf10936=_0x248bcd;if(_0xb0fcb['List']){if(_0xb0fcb['List']['Contacts'][_0xcc54('0x4b')]){return _0xb0fcb['List'][_0xcc54('0x9e')][0x0];}else{return db[_0xcc54('0x86')][_0xcc54('0x64')](_[_0xcc54('0x18')](_0x573082[_0xcc54('0x60')],{'firstName':_0x573082['body']['to'],'email':_0x573082['body']['to'],'phone':_0x573082[_0xcc54('0x60')]['to'],'ListId':_0xb0fcb[_0xcc54('0xaa')]}));}}else{throw new Error(_0xcc54('0xa9'));}}})[_0xcc54('0x1e')](function(_0xdb9ab9){if(_0xdb9ab9){var _0x5e15a0={'UserId':_0x573082[_0xcc54('0x72')]['id'],'ContactId':_0xdb9ab9['id'],'MailAccountId':_0xb0fcb['id'],'inReplyTo':_0xf10936[_0xcc54('0xab')],'to':_0x573082['body'][_0xcc54('0xa0')],'cc':_0x573082['body']['cc'],'subject':_0x573082[_0xcc54('0x60')][_0xcc54('0xac')],'attach':_0x573082[_0xcc54('0x60')]['attach'],'firstMsgDirection':'out','lastMsgAt':moment()[_0xcc54('0x95')](_0xcc54('0x96')),'lastMsgDirection':_0xcc54('0xad'),'Messages':[_[_0xcc54('0x53')](_0x573082['body'],{'messageId':_0xf10936[_0xcc54('0xab')],'sentAt':moment()[_0xcc54('0x95')](_0xcc54('0x96')),'read':!![],'MailAccountId':_0xb0fcb['id'],'UserId':_0x573082[_0xcc54('0x72')]['id'],'ContactId':_0xdb9ab9['id']})]};if(_0x573082[_0xcc54('0x60')][_0xcc54('0xae')]){_0x5e15a0=_['merge'](_0x5e15a0,_0x573082['body'][_0xcc54('0xae')]);}return db[_0xcc54('0x84')][_0xcc54('0x64')](_0x5e15a0,{'include':[{'model':db[_0xcc54('0x97')],'as':_0xcc54('0xaf')}]});}})['then'](respondWithResult(_0x6b465d,null))[_0xcc54('0x29')](handleError(_0x6b465d,null));};exports[_0xcc54('0xb0')]=function(_0x33c24,_0x150a96,_0x5f2855){return db[_0xcc54('0x41')][_0xcc54('0x5e')]({'where':{'id':_0x33c24[_0xcc54('0x5a')]['id']},'include':[{'model':db['MailServerOut'],'as':_0xcc54('0x3f'),'raw':!![]}]})[_0xcc54('0x1e')](handleEntityNotFound(_0x150a96,null))['then'](function(_0x8fff38){if(_0x8fff38&&_0x8fff38[_0xcc54('0x3f')]){var _0x3c8e0f={'id':_0x8fff38['id'],'tls':{'rejectUnauthorized':![]}};if(_0x8fff38[_0xcc54('0x3f')][_0xcc54('0x78')]){_0x3c8e0f[_0xcc54('0x78')]=_0x8fff38[_0xcc54('0x3f')][_0xcc54('0x78')];}else{_0x3c8e0f[_0xcc54('0x76')]=_0x8fff38[_0xcc54('0x3f')]['host'];_0x3c8e0f[_0xcc54('0x77')]=_0x8fff38[_0xcc54('0x3f')][_0xcc54('0x77')];_0x3c8e0f['secure']=_0x8fff38[_0xcc54('0x3f')][_0xcc54('0xa7')];}if(_0x8fff38[_0xcc54('0x3f')][_0xcc54('0x75')]){_0x3c8e0f[_0xcc54('0xb1')]={'user':_0x8fff38['Smtp'][_0xcc54('0x72')],'pass':_0x8fff38[_0xcc54('0x3f')][_0xcc54('0x74')]};}return respondWithRpcPromise('VerifySmtp',_0xcc54('0xb0'),{'account':_0x3c8e0f});}})[_0xcc54('0x1e')](respondWithResult(_0x150a96,null))[_0xcc54('0x29')](handleError(_0x150a96,null));};exports[_0xcc54('0x35')]=function(_0x4ac1ac,_0x587da4){return db['MailAccount']['find']({'where':{'id':_0x4ac1ac[_0xcc54('0x5a')]['id']}})['then'](handleEntityNotFound(_0x587da4,null))['then'](function(_0x4f498a){if(_0x4f498a&&_0x4f498a[_0xcc54('0x78')]){throw new db['Sequelize'][(_0xcc54('0xb2'))](_0xcc54('0xb3'));}return _0x4f498a;})[_0xcc54('0x1e')](removeEntity(_0x587da4,null))['catch'](handleError(_0x587da4,null));};exports[_0xcc54('0xb4')]=function(_0x4bfb64,_0x57c1c1,_0xed9aaf){return db[_0xcc54('0x41')]['find']({'where':{'id':_0x4bfb64[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x57c1c1,null))['then'](function(_0x437017){if(_0x437017){return _0x437017['addAgents'](_0x4bfb64[_0xcc54('0x60')][_0xcc54('0x69')],_['omit'](_0x4bfb64['body'],[_0xcc54('0x69'),'id'])||{})['spread'](function(_0x201625){for(var _0x276cd8=0x0;_0x276cd8<_0x4bfb64[_0xcc54('0x60')][_0xcc54('0x69')][_0xcc54('0x4b')];_0x276cd8+=0x1){socket[_0xcc54('0xb5')]('userMailAccount:save',{'UserId':Number(_0x4bfb64[_0xcc54('0x60')][_0xcc54('0x69')][_0x276cd8]),'MailAccountId':Number(_0x4bfb64['params']['id'])});}return _0x201625;});}})[_0xcc54('0x1e')](respondWithResult(_0x57c1c1,null))[_0xcc54('0x29')](handleError(_0x57c1c1,null));};exports[_0xcc54('0xb6')]=function(_0x25b028,_0x3f5fd8,_0x25d693){return db[_0xcc54('0x41')][_0xcc54('0x5e')]({'where':{'id':_0x25b028[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x3f5fd8,null))['then'](function(_0x3d26e6){if(_0x3d26e6){return _0x3d26e6['removeAgents'](_0x25b028[_0xcc54('0x46')]['ids'])['then'](function(){if(_[_0xcc54('0xb7')](_0x25b028[_0xcc54('0x46')][_0xcc54('0x69')])){for(var _0x19d8e6=0x0;_0x19d8e6<_0x25b028[_0xcc54('0x46')][_0xcc54('0x69')]['length'];_0x19d8e6+=0x1){socket[_0xcc54('0xb5')]('userMailAccount:remove',{'UserId':Number(_0x25b028[_0xcc54('0x46')][_0xcc54('0x69')][_0x19d8e6]),'MailAccountId':Number(_0x25b028['params']['id'])});}}else{socket['emit']('userMailAccount:remove',{'UserId':Number(_0x25b028[_0xcc54('0x46')][_0xcc54('0x69')]),'MailAccountId':Number(_0x25b028['params']['id'])});}});}})[_0xcc54('0x1e')](respondWithStatusCode(_0x3f5fd8,null))[_0xcc54('0x29')](handleError(_0x3f5fd8,null));};exports['getAgents']=function(_0x309a15,_0x5c68a7,_0x167173){var _0xfb2025={};var _0x51fbaf={};var _0x51ce8e;var _0x2eb153;return db['MailAccount'][_0xcc54('0x66')]({'where':{'id':_0x309a15[_0xcc54('0x5a')]['id']}})[_0xcc54('0x1e')](handleEntityNotFound(_0x5c68a7,null))[_0xcc54('0x1e')](function(_0x4c6927){if(_0x4c6927){_0x51ce8e=_0x4c6927;_0x51fbaf['model']=_[_0xcc54('0x47')](db['User'][_0xcc54('0x42')]);_0x51fbaf[_0xcc54('0x46')]=_[_0xcc54('0x47')](_0x309a15[_0xcc54('0x46')]);_0x51fbaf[_0xcc54('0x50')]=_[_0xcc54('0x48')](_0x51fbaf[_0xcc54('0x45')],_0x51fbaf[_0xcc54('0x46')]);_0xfb2025[_0xcc54('0x49')]=_['intersection'](_0x51fbaf[_0xcc54('0x45')],qs[_0xcc54('0x4a')](_0x309a15[_0xcc54('0x46')][_0xcc54('0x4a')]));_0xfb2025[_0xcc54('0x49')]=_0xfb2025[_0xcc54('0x49')]['length']?_0xfb2025[_0xcc54('0x49')]:_0x51fbaf[_0xcc54('0x45')];_0xfb2025[_0xcc54('0x4d')]=qs[_0xcc54('0x4e')](_0x309a15['query'][_0xcc54('0x4e')]);_0xfb2025[_0xcc54('0x4f')]=qs[_0xcc54('0x50')](_[_0xcc54('0x51')](_0x309a15[_0xcc54('0x46')],_0x51fbaf[_0xcc54('0x50')]));if(_0x309a15[_0xcc54('0x46')][_0xcc54('0x52')]){_0xfb2025['where']=_[_0xcc54('0x53')](_0xfb2025[_0xcc54('0x4f')],{'$or':_['map'](_0xfb2025['attributes'],function(_0x311d07){var _0x10746e={};_0x10746e[_0x311d07]={'$like':'%'+_0x309a15['query'][_0xcc54('0x52')]+'%'};return _0x10746e;})});}_0xfb2025=_['merge']({},_0xfb2025,_0x309a15[_0xcc54('0x55')]);return _0x51ce8e[_0xcc54('0xb8')](_0xfb2025);}})[_0xcc54('0x1e')](function(_0x141531){if(_0x141531){_0x2eb153=_0x141531[_0xcc54('0x4b')];if(!_0x309a15[_0xcc54('0x46')][_0xcc54('0x67')](_0xcc54('0x4c'))){_0xfb2025['limit']=qs['limit'](_0x309a15[_0xcc54('0x46')]['limit']);_0xfb2025[_0xcc54('0x2c')]=qs['offset'](_0x309a15['query'][_0xcc54('0x2c')]);}return _0x51ce8e['getAgents'](_0xfb2025);}})[_0xcc54('0x1e')](function(_0x1bdba0){if(_0x1bdba0){return _0x1bdba0?{'count':_0x2eb153,'rows':_0x1bdba0}:null;}})[_0xcc54('0x1e')](respondWithResult(_0x5c68a7,null))[_0xcc54('0x29')](handleError(_0x5c68a7,null));};
\ No newline at end of file
index 93a68ae..a66422d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61c=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount'];(function(_0x30e48b,_0x43b4a6){var _0x2f83fc=function(_0x375af7){while(--_0x375af7){_0x30e48b['push'](_0x30e48b['shift']());}};_0x2f83fc(++_0x43b4a6);}(_0xd61c,0xb1));var _0xcd61=function(_0x48d811,_0x350513){_0x48d811=_0x48d811-0x0;var _0x3852cc=_0xd61c[_0x48d811];return _0x3852cc;};'use strict';var EventEmitter=require(_0xcd61('0x0'));var MailAccount=require(_0xcd61('0x1'))['db'][_0xcd61('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcd61('0x3'),'afterUpdate':'update','afterDestroy':_0xcd61('0x4')};function emitEvent(_0x244dad){return function(_0x26b81a,_0x3be823,_0x16c4c3){MailAccountEvents[_0xcd61('0x5')](_0x244dad+':'+_0x26b81a['id'],_0x26b81a);MailAccountEvents[_0xcd61('0x5')](_0x244dad,_0x26b81a);_0x16c4c3(null);};}for(var e in events){if(events[_0xcd61('0x6')](e)){var event=events[e];MailAccount[_0xcd61('0x7')](e,emitEvent(event));}}module[_0xcd61('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0xe528=['../../mysqldb','MailAccount','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xe528,0x167));var _0x8e52=function(_0x24e509,_0x25db6a){_0x24e509=_0x24e509-0x0;var _0x414e34=_0xe528[_0x24e509];return _0x414e34;};'use strict';var EventEmitter=require(_0x8e52('0x0'));var MailAccount=require(_0x8e52('0x1'))['db'][_0x8e52('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x8e52('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8e52('0x4'),'afterDestroy':_0x8e52('0x5')};function emitEvent(_0x4dfac1){return function(_0x23b7e4,_0x3321b5,_0x1856dd){MailAccountEvents[_0x8e52('0x6')](_0x4dfac1+':'+_0x23b7e4['id'],_0x23b7e4);MailAccountEvents[_0x8e52('0x6')](_0x4dfac1,_0x23b7e4);_0x1856dd(null);};}for(var e in events){if(events[_0x8e52('0x7')](e)){var event=events[e];MailAccount[_0x8e52('0x8')](e,emitEvent(event));}}module[_0x8e52('0x9')]=MailAccountEvents;
\ No newline at end of file
index 6b3fd0c..2d0004f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e06=['rimraf','../../config/environment','./mailAccount.attributes','define','MailAccount','mail_accounts','api','moment','bluebird','request-promise','path'];(function(_0x251a18,_0x57a948){var _0x52f3db=function(_0x37f304){while(--_0x37f304){_0x251a18['push'](_0x251a18['shift']());}};_0x52f3db(++_0x57a948);}(_0x9e06,0x95));var _0x69e0=function(_0x1fb7a7,_0x28de91){_0x1fb7a7=_0x1fb7a7-0x0;var _0x286149=_0x9e06[_0x1fb7a7];return _0x286149;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x69e0('0x0'));var moment=require(_0x69e0('0x1'));var BPromise=require(_0x69e0('0x2'));var rp=require(_0x69e0('0x3'));var fs=require('fs');var path=require(_0x69e0('0x4'));var rimraf=require(_0x69e0('0x5'));var config=require(_0x69e0('0x6'));var attributes=require(_0x69e0('0x7'));module['exports']=function(_0x213797,_0x5bbcf1){return _0x213797[_0x69e0('0x8')](_0x69e0('0x9'),attributes,{'tableName':_0x69e0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x723f=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','define','MailAccount','mail_accounts','lodash','util'];(function(_0x20068f,_0x10d855){var _0x1eb4ce=function(_0x36b9fe){while(--_0x36b9fe){_0x20068f['push'](_0x20068f['shift']());}};_0x1eb4ce(++_0x10d855);}(_0x723f,0xc1));var _0xf723=function(_0x2bdcc2,_0x4ae3bd){_0x2bdcc2=_0x2bdcc2-0x0;var _0x4f44ac=_0x723f[_0x2bdcc2];return _0x4f44ac;};'use strict';var _=require(_0xf723('0x0'));var util=require(_0xf723('0x1'));var logger=require(_0xf723('0x2'))('api');var moment=require(_0xf723('0x3'));var BPromise=require(_0xf723('0x4'));var rp=require(_0xf723('0x5'));var fs=require('fs');var path=require(_0xf723('0x6'));var rimraf=require(_0xf723('0x7'));var config=require(_0xf723('0x8'));var attributes=require(_0xf723('0x9'));module['exports']=function(_0xd010bc,_0x377268){return _0xd010bc[_0xf723('0xa')](_0xf723('0xb'),attributes,{'tableName':_0xf723('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 31e3907..945fff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf693=['bcc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetMailAccount','ShowMailAccount','find','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','List','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','get','omit','applications','list','orderBy','priority','asc','autoclose','push','close','*,*,*,*','create','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','format','interaction','originTo','originCc'];(function(_0x2ba5f7,_0x493cb8){var _0x2f2368=function(_0x58f00f){while(--_0x58f00f){_0x2ba5f7['push'](_0x2ba5f7['shift']());}};_0x2f2368(++_0x493cb8);}(_0xf693,0xe8));var _0x3f69=function(_0xd5f76,_0x21411a){_0xd5f76=_0xd5f76-0x0;var _0x1ace93=_0xf693[_0xd5f76];return _0x1ace93;};'use strict';var _=require(_0x3f69('0x0'));var util=require('util');var moment=require(_0x3f69('0x1'));var BPromise=require(_0x3f69('0x2'));var rs=require(_0x3f69('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3f69('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3f69('0x5'));var config=require('../../config/environment');var jayson=require(_0x3f69('0x6'));var client=jayson[_0x3f69('0x7')]['http']({'port':0x232c});config[_0x3f69('0x8')]=_[_0x3f69('0x9')](config[_0x3f69('0x8')],{'host':_0x3f69('0xa'),'port':0x18eb});var socket=require(_0x3f69('0xb'))(new Redis(config[_0x3f69('0x8')]));require(_0x3f69('0xc'))[_0x3f69('0xd')](socket);function respondWithRpcPromise(_0x5baf01,_0x2646f0,_0xf56d3){return new BPromise(function(_0xe024ff,_0x10d134){return client[_0x3f69('0xe')](_0x5baf01,_0xf56d3)[_0x3f69('0xf')](function(_0x5518ee){logger[_0x3f69('0x10')]('MailAccount,\x20%s,\x20%s',_0x2646f0,_0x3f69('0x11'));logger[_0x3f69('0x12')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x2646f0,_0x3f69('0x11'),JSON[_0x3f69('0x13')](_0x5518ee));if(_0x5518ee[_0x3f69('0x14')]){if(_0x5518ee['error'][_0x3f69('0x15')]===0x1f4){logger['error'](_0x3f69('0x16'),_0x2646f0,_0x5518ee[_0x3f69('0x14')][_0x3f69('0x17')]);return _0x10d134(_0x5518ee[_0x3f69('0x14')]['message']);}logger['error'](_0x3f69('0x16'),_0x2646f0,_0x5518ee[_0x3f69('0x14')][_0x3f69('0x17')]);return _0xe024ff(_0x5518ee[_0x3f69('0x14')][_0x3f69('0x17')]);}else{logger[_0x3f69('0x10')](_0x3f69('0x16'),_0x2646f0,_0x3f69('0x11'));_0xe024ff(_0x5518ee[_0x3f69('0x18')]['message']);}})[_0x3f69('0x19')](function(_0x4f92d7){logger[_0x3f69('0x14')]('MailAccount,\x20%s,\x20%s',_0x2646f0,_0x4f92d7);_0x10d134(_0x4f92d7);});});}exports['GetMailAccount']=function(_0x335505){var _0xc2f8a=this;return new Promise(function(_0x33eb5a,_0x3d34db){return db[_0x3f69('0x1a')][_0x3f69('0x1b')]({'raw':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x1d')]===undefined?!![]:![]:!![],'where':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x1e')]||null:null,'attributes':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x1f')]||null:null,'limit':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x20')]||null:null,'include':_0x335505[_0x3f69('0x1c')]?_0x335505['options'][_0x3f69('0x21')]?_[_0x3f69('0x22')](_0x335505[_0x3f69('0x1c')][_0x3f69('0x21')],function(_0x34ebd1){return{'model':db[_0x34ebd1[_0x3f69('0x23')]],'as':_0x34ebd1['as'],'attributes':_0x34ebd1[_0x3f69('0x1f')],'include':_0x34ebd1[_0x3f69('0x21')]?_['map'](_0x34ebd1[_0x3f69('0x21')],function(_0x71f375){return{'model':db[_0x71f375['model']],'as':_0x71f375['as'],'attributes':_0x71f375['attributes'],'include':_0x71f375[_0x3f69('0x21')]?_[_0x3f69('0x22')](_0x71f375[_0x3f69('0x21')],function(_0x22641a){return{'model':db[_0x22641a[_0x3f69('0x23')]],'as':_0x22641a['as'],'attributes':_0x22641a[_0x3f69('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3f69('0xf')](function(_0x448f72){logger[_0x3f69('0x10')](_0x3f69('0x24'),_0x335505);logger[_0x3f69('0x12')](_0x3f69('0x24'),_0x335505,JSON[_0x3f69('0x13')](_0x448f72));_0x33eb5a(_0x448f72);})[_0x3f69('0x19')](function(_0x3c2b63){logger['error'](_0x3f69('0x24'),_0x3c2b63[_0x3f69('0x17')],_0x335505);_0x3d34db(_0xc2f8a[_0x3f69('0x14')](0x1f4,_0x3c2b63[_0x3f69('0x17')]));});});};exports[_0x3f69('0x25')]=function(_0xb91bac){var _0x2023c0=this;return new Promise(function(_0x3172f8,_0x52ba90){return db[_0x3f69('0x1a')][_0x3f69('0x26')]({'raw':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac['options'][_0x3f69('0x1d')]===undefined?!![]:![]:!![],'where':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac[_0x3f69('0x1c')][_0x3f69('0x1e')]||null:null,'attributes':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac['options']['attributes']||null:null,'include':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac[_0x3f69('0x1c')][_0x3f69('0x21')]?_[_0x3f69('0x22')](_0xb91bac[_0x3f69('0x1c')]['include'],function(_0x25666a){return{'model':db[_0x25666a[_0x3f69('0x23')]],'as':_0x25666a['as'],'attributes':_0x25666a['attributes'],'include':_0x25666a[_0x3f69('0x21')]?_[_0x3f69('0x22')](_0x25666a[_0x3f69('0x21')],function(_0x5dbfcd){return{'model':db[_0x5dbfcd['model']],'as':_0x5dbfcd['as'],'attributes':_0x5dbfcd[_0x3f69('0x1f')],'include':_0x5dbfcd[_0x3f69('0x21')]?_['map'](_0x5dbfcd['include'],function(_0x4cae27){return{'model':db[_0x4cae27[_0x3f69('0x23')]],'as':_0x4cae27['as'],'attributes':_0x4cae27[_0x3f69('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3f69('0xf')](function(_0x4b455d){logger[_0x3f69('0x10')](_0x3f69('0x25'),_0xb91bac);logger[_0x3f69('0x12')](_0x3f69('0x25'),_0xb91bac,JSON['stringify'](_0x4b455d));_0x3172f8(_0x4b455d);})['catch'](function(_0x596c00){logger[_0x3f69('0x14')]('ShowMailAccount',_0x596c00[_0x3f69('0x17')],_0xb91bac);_0x52ba90(_0x2023c0[_0x3f69('0x14')](0x1f4,_0x596c00[_0x3f69('0x17')]));});});};exports[_0x3f69('0x27')]=function(_0x5ade7a){var _0x3e3187=this;return new Promise(function(_0x39be06,_0x303825){var _0x289148={'body':_0x5ade7a[_0x3f69('0x28')],'channel':_0x3f69('0x29')};var _0x425e3b=_[_0x3f69('0x2a')](_[_0x3f69('0x2b')](db[_0x3f69('0x2c')][_0x3f69('0x2d')]),[_0x3f69('0x2e'),_0x3f69('0x2f'),_0x3f69('0x30'),_0x3f69('0x31')]);var _0x2aed2b=![];if(_0x5ade7a[_0x3f69('0x28')]['id']){delete _0x5ade7a[_0x3f69('0x28')]['id'];}if(_[_0x3f69('0x32')](_0x5ade7a[_0x3f69('0x28')]['from'])){return _0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,_0x3f69('0x33')));}if(_[_0x3f69('0x32')](_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x28')])||_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x28')]===''){return _0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x3f69('0x32')](_0x5ade7a['body']['mapKey'])){return _0x303825(_0x3e3187['error'](0x1f4,_0x3f69('0x34')+_0x425e3b));}if(!_[_0x3f69('0x35')](_0x425e3b,_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x36')])){return _0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,_0x3f69('0x37')+_0x425e3b));}var _0x35540e={};_0x35540e[_0x5ade7a['body'][_0x3f69('0x36')]]=_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x38')];return db[_0x3f69('0x1a')][_0x3f69('0x26')]({'where':{'id':_0x5ade7a[_0x3f69('0x39')]['id']},'include':[{'model':db[_0x3f69('0x3a')],'as':_0x3f69('0x3b'),'include':[{'model':db[_0x3f69('0x2c')],'as':_0x3f69('0x3c'),'where':_0x35540e,'limit':0x1,'order':[[_0x3f69('0x2f'),_0x3f69('0x3d')]]}]},{'model':db[_0x3f69('0x3e')],'as':_0x3f69('0x3f')},{'model':db[_0x3f69('0x40')],'as':_0x3f69('0x41')}]})['then'](function(_0x521b3a){if(_0x521b3a&&_0x521b3a[_0x3f69('0x3b')]){var _0x335ef2=_0x521b3a[_0x3f69('0x42')]({'plain':!![]});_0x289148[_0x3f69('0x39')]=_[_0x3f69('0x43')](_0x335ef2,[_0x3f69('0x3f'),_0x3f69('0x3b')]);_0x289148[_0x3f69('0x44')]=_0x335ef2['Applications'];_0x289148[_0x3f69('0x45')]=_0x335ef2[_0x3f69('0x3b')];_0x289148[_0x3f69('0x44')]=_[_0x3f69('0x46')](_0x289148[_0x3f69('0x44')],[_0x3f69('0x47')],[_0x3f69('0x48')]);if(_0x289148[_0x3f69('0x39')]&&_0x289148[_0x3f69('0x39')][_0x3f69('0x49')]){_0x289148[_0x3f69('0x44')][_0x3f69('0x4a')]({'id':0x0,'priority':_0x289148[_0x3f69('0x44')]['length']+0x1,'app':_0x3f69('0x4b'),'appdata':_0x3f69('0x49'),'interval':_0x3f69('0x4c')});}if(_0x289148[_0x3f69('0x39')][_0x3f69('0x3f')]){delete _0x289148[_0x3f69('0x39')][_0x3f69('0x3f')];}if(_0x289148['account'][_0x3f69('0x3b')]){delete _0x289148[_0x3f69('0x39')][_0x3f69('0x3b')];}if(_0x335ef2['List']['Contacts']['length']){return _0x335ef2['List'][_0x3f69('0x3c')][0x0];}var _0x56128a=_['defaults'](_0x5ade7a[_0x3f69('0x28')],{'firstName':_0x5ade7a[_0x3f69('0x28')]['from'],'ListId':_0x335ef2['ListId']});_0x56128a[_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x36')]]=_0x5ade7a['body'][_0x3f69('0x38')];return db['CmContact'][_0x3f69('0x4d')](_0x56128a);}else{throw new Error(_0x3f69('0x4e'));}})[_0x3f69('0xf')](function(_0x56465e){_0x289148[_0x3f69('0x4f')]=_0x56465e;if(_0x56465e){if(!_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x50')]){_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x50')]=rs[_0x3f69('0x51')]()+'\x20'+_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x38')];}var _0x2f5ce6={'ContactId':_0x56465e['id'],'MailAccountId':_0x5ade7a[_0x3f69('0x39')]['id'],'inReplyTo':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['messageId'],'to':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x38')],'cc':_0x5ade7a[_0x3f69('0x28')]['message']['cc'],'subject':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x52')],'attach':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x53')],'lastMsgAt':moment()['format'](_0x3f69('0x54')),'lastMsgDirection':'in'};return db[_0x3f69('0x55')]['find']({'where':{'closed':![],'MailAccountId':_0x5ade7a[_0x3f69('0x39')]['id']},'include':[{'model':db[_0x3f69('0x56')],'as':_0x3f69('0x57'),'attributes':[_0x3f69('0x50')],'where':{'messageId':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x58')]}}]})[_0x3f69('0xf')](function(_0x47c09f){if(_0x47c09f){return[_0x47c09f,![]];}return db['MailInteraction'][_0x3f69('0x4d')](_0x2f5ce6)['then'](function(_0x2dc0aa){return[_0x2dc0aa,!![]];});});}else{throw new Error(_0x3f69('0x59'));}})[_0x3f69('0x5a')](function(_0x50a3c2,_0x49d8ab){if(_0x50a3c2){_0x2aed2b=_0x49d8ab;if(!_0x49d8ab){return _0x50a3c2['update']({'inReplyTo':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x50')],'to':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x38')],'cc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['cc'],'subject':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['subject'],'attach':_0x50a3c2[_0x3f69('0x53')]?_0x50a3c2[_0x3f69('0x53')]:_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x53')],'substatus':null,'substatusAt':moment()[_0x3f69('0x5b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x3f69('0x5b')](_0x3f69('0x54')),'lastMsgDirection':'in'});}else{return _0x50a3c2;}}})[_0x3f69('0xf')](function(_0x534664){_0x289148[_0x3f69('0x5c')]=_0x534664[_0x3f69('0x42')]({'plain':!![]});_0x289148[_0x3f69('0x5c')]['created']=_0x2aed2b;return db[_0x3f69('0x56')][_0x3f69('0x4d')]({'body':_0x5ade7a['body'][_0x3f69('0x28')],'MailAccountId':_0x5ade7a[_0x3f69('0x39')]['id'],'MailInteractionId':_0x534664['id'],'direction':'in','ContactId':_0x289148[_0x3f69('0x4f')]['id'],'messageId':_0x5ade7a['body'][_0x3f69('0x17')]['messageId'],'from':_0x5ade7a['body']['message'][_0x3f69('0x38')],'to':_0x5ade7a[_0x3f69('0x28')]['message']['to'],'cc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['cc'],'subject':_0x5ade7a['body']['message']['subject'],'attach':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x53')],'Attachments':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['attachments'],'originTo':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x5d')],'originCc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x5e')],'bcc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x5f')],'ChatWebsiteId':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x60')]||null,'originChannel':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x61')]||'Email','ChatOfflineMessageId':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x62')]||null},{'include':[{'model':db[_0x3f69('0x63')],'as':_0x3f69('0x64')}]});})[_0x3f69('0xf')](function(_0x2f17be){_0x289148[_0x3f69('0x17')]=_0x2f17be;if(_0x289148[_0x3f69('0x5c')][_0x3f69('0x65')]){return db[_0x3f69('0x66')][_0x3f69('0x26')]({'attributes':['id',_0x3f69('0x67')],'where':{'id':_0x289148[_0x3f69('0x5c')]['UserId']}})[_0x3f69('0xf')](function(_0x298bec){if(_0x298bec){_0x289148[_0x3f69('0x44')][_0x3f69('0x68')]({'id':0x0,'priority':0x0,'app':_0x3f69('0x69'),'appdata':_0x298bec[_0x3f69('0x67')]+','+(_0x289148[_0x3f69('0x39')][_0x3f69('0x6a')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x3f69('0x6b'),_0x3f69('0x6c'),_0x289148);});}return respondWithRpcPromise(_0x3f69('0x6b'),_0x3f69('0x6c'),_0x289148);})[_0x3f69('0xf')](function(_0x2ca227){_0x39be06(_0x2ca227);})['catch'](function(_0x33530f){_0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,_0x33530f[_0x3f69('0x17')]));});});};
\ No newline at end of file
+var _0x080f=['model','stringify','ShowMailAccount','find','NotifyMailAccount','body','mail','difference','CmContact','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','MailApplication','Applications','MailServerOut','get','omit','list','applications','asc','autoclose','push','length','close','*,*,*,*','from','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','interaction','created','originTo','originCc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachments','UserId','User','name','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','include','map'];(function(_0x3207fa,_0x4fdba0){var _0x1b4868=function(_0xc6de31){while(--_0xc6de31){_0x3207fa['push'](_0x3207fa['shift']());}};_0x1b4868(++_0x4fdba0);}(_0x080f,0xaa));var _0xf080=function(_0x40717c,_0x15d6d3){_0x40717c=_0x40717c-0x0;var _0xf5a4a7=_0x080f[_0x40717c];return _0xf5a4a7;};'use strict';var _=require('lodash');var util=require(_0xf080('0x0'));var moment=require(_0xf080('0x1'));var BPromise=require(_0xf080('0x2'));var rs=require(_0xf080('0x3'));var fs=require('fs');var Redis=require(_0xf080('0x4'));var db=require(_0xf080('0x5'))['db'];var utils=require(_0xf080('0x6'));var logger=require(_0xf080('0x7'))(_0xf080('0x8'));var config=require(_0xf080('0x9'));var jayson=require(_0xf080('0xa'));var client=jayson[_0xf080('0xb')][_0xf080('0xc')]({'port':0x232c});config[_0xf080('0xd')]=_[_0xf080('0xe')](config[_0xf080('0xd')],{'host':_0xf080('0xf'),'port':0x18eb});var socket=require(_0xf080('0x10'))(new Redis(config[_0xf080('0xd')]));require(_0xf080('0x11'))['register'](socket);function respondWithRpcPromise(_0x4d19ab,_0x54a16a,_0xaf5fc9){return new BPromise(function(_0x3ba25e,_0xde4507){return client[_0xf080('0x12')](_0x4d19ab,_0xaf5fc9)[_0xf080('0x13')](function(_0x6effce){logger['info'](_0xf080('0x14'),_0x54a16a,_0xf080('0x15'));logger[_0xf080('0x16')](_0xf080('0x17'),_0x54a16a,_0xf080('0x15'),JSON['stringify'](_0x6effce));if(_0x6effce[_0xf080('0x18')]){if(_0x6effce[_0xf080('0x18')]['code']===0x1f4){logger[_0xf080('0x18')](_0xf080('0x14'),_0x54a16a,_0x6effce['error']['message']);return _0xde4507(_0x6effce[_0xf080('0x18')]['message']);}logger[_0xf080('0x18')](_0xf080('0x14'),_0x54a16a,_0x6effce[_0xf080('0x18')]['message']);return _0x3ba25e(_0x6effce[_0xf080('0x18')][_0xf080('0x19')]);}else{logger[_0xf080('0x1a')](_0xf080('0x14'),_0x54a16a,'request\x20sent');_0x3ba25e(_0x6effce[_0xf080('0x1b')][_0xf080('0x19')]);}})[_0xf080('0x1c')](function(_0xb16bf1){logger[_0xf080('0x18')]('MailAccount,\x20%s,\x20%s',_0x54a16a,_0xb16bf1);_0xde4507(_0xb16bf1);});});}exports[_0xf080('0x1d')]=function(_0x38101c){var _0x47b71c=this;return new Promise(function(_0x5efdb3,_0xbf9d5b){return db[_0xf080('0x1e')][_0xf080('0x1f')]({'raw':_0x38101c[_0xf080('0x20')]?_0x38101c[_0xf080('0x20')][_0xf080('0x21')]===undefined?!![]:![]:!![],'where':_0x38101c['options']?_0x38101c[_0xf080('0x20')][_0xf080('0x22')]||null:null,'attributes':_0x38101c['options']?_0x38101c[_0xf080('0x20')][_0xf080('0x23')]||null:null,'limit':_0x38101c[_0xf080('0x20')]?_0x38101c['options']['limit']||null:null,'include':_0x38101c[_0xf080('0x20')]?_0x38101c[_0xf080('0x20')][_0xf080('0x24')]?_[_0xf080('0x25')](_0x38101c[_0xf080('0x20')][_0xf080('0x24')],function(_0x4f883f){return{'model':db[_0x4f883f[_0xf080('0x26')]],'as':_0x4f883f['as'],'attributes':_0x4f883f[_0xf080('0x23')],'include':_0x4f883f[_0xf080('0x24')]?_['map'](_0x4f883f[_0xf080('0x24')],function(_0x2597bd){return{'model':db[_0x2597bd['model']],'as':_0x2597bd['as'],'attributes':_0x2597bd[_0xf080('0x23')],'include':_0x2597bd[_0xf080('0x24')]?_[_0xf080('0x25')](_0x2597bd[_0xf080('0x24')],function(_0x4a192c){return{'model':db[_0x4a192c[_0xf080('0x26')]],'as':_0x4a192c['as'],'attributes':_0x4a192c[_0xf080('0x23')]};}):[]};}):[]};}):[]:[]})[_0xf080('0x13')](function(_0x1e0594){logger[_0xf080('0x1a')](_0xf080('0x1d'),_0x38101c);logger[_0xf080('0x16')]('GetMailAccount',_0x38101c,JSON[_0xf080('0x27')](_0x1e0594));_0x5efdb3(_0x1e0594);})[_0xf080('0x1c')](function(_0x1b6733){logger[_0xf080('0x18')](_0xf080('0x1d'),_0x1b6733['message'],_0x38101c);_0xbf9d5b(_0x47b71c['error'](0x1f4,_0x1b6733[_0xf080('0x19')]));});});};exports[_0xf080('0x28')]=function(_0xb93d0){var _0x3a9f0e=this;return new Promise(function(_0x516b9c,_0x26b205){return db['MailAccount'][_0xf080('0x29')]({'raw':_0xb93d0['options']?_0xb93d0[_0xf080('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0xb93d0[_0xf080('0x20')]?_0xb93d0[_0xf080('0x20')][_0xf080('0x22')]||null:null,'attributes':_0xb93d0[_0xf080('0x20')]?_0xb93d0[_0xf080('0x20')][_0xf080('0x23')]||null:null,'include':_0xb93d0[_0xf080('0x20')]?_0xb93d0['options'][_0xf080('0x24')]?_['map'](_0xb93d0[_0xf080('0x20')][_0xf080('0x24')],function(_0x53780f){return{'model':db[_0x53780f[_0xf080('0x26')]],'as':_0x53780f['as'],'attributes':_0x53780f[_0xf080('0x23')],'include':_0x53780f['include']?_['map'](_0x53780f['include'],function(_0x33fe67){return{'model':db[_0x33fe67[_0xf080('0x26')]],'as':_0x33fe67['as'],'attributes':_0x33fe67['attributes'],'include':_0x33fe67[_0xf080('0x24')]?_[_0xf080('0x25')](_0x33fe67[_0xf080('0x24')],function(_0x3242cd){return{'model':db[_0x3242cd[_0xf080('0x26')]],'as':_0x3242cd['as'],'attributes':_0x3242cd['attributes']};}):[]};}):[]};}):[]:[]})[_0xf080('0x13')](function(_0x25e20c){logger[_0xf080('0x1a')](_0xf080('0x28'),_0xb93d0);logger[_0xf080('0x16')]('ShowMailAccount',_0xb93d0,JSON[_0xf080('0x27')](_0x25e20c));_0x516b9c(_0x25e20c);})[_0xf080('0x1c')](function(_0x42259d){logger['error'](_0xf080('0x28'),_0x42259d[_0xf080('0x19')],_0xb93d0);_0x26b205(_0x3a9f0e['error'](0x1f4,_0x42259d[_0xf080('0x19')]));});});};exports[_0xf080('0x2a')]=function(_0x56d52a){var _0x45e96f=this;return new Promise(function(_0x303c65,_0x42c262){var _0x469303={'body':_0x56d52a[_0xf080('0x2b')],'channel':_0xf080('0x2c')};var _0x42c56c=_[_0xf080('0x2d')](_['keys'](db[_0xf080('0x2e')]['rawAttributes']),['createdAt',_0xf080('0x2f'),_0xf080('0x30'),_0xf080('0x31')]);var _0xa6e1c9=![];if(_0x56d52a[_0xf080('0x2b')]['id']){delete _0x56d52a['body']['id'];}if(_[_0xf080('0x32')](_0x56d52a[_0xf080('0x2b')]['from'])){return _0x42c262(_0x45e96f['error'](0x1f4,_0xf080('0x33')));}if(_[_0xf080('0x32')](_0x56d52a[_0xf080('0x2b')]['body'])||_0x56d52a[_0xf080('0x2b')]['body']===''){return _0x42c262(_0x45e96f[_0xf080('0x18')](0x1f4,_0xf080('0x34')));}if(_[_0xf080('0x32')](_0x56d52a[_0xf080('0x2b')][_0xf080('0x35')])){return _0x42c262(_0x45e96f[_0xf080('0x18')](0x1f4,_0xf080('0x36')+_0x42c56c));}if(!_[_0xf080('0x37')](_0x42c56c,_0x56d52a['body'][_0xf080('0x35')])){return _0x42c262(_0x45e96f[_0xf080('0x18')](0x1f4,_0xf080('0x38')+_0x42c56c));}var _0x54b458={};_0x54b458[_0x56d52a[_0xf080('0x2b')][_0xf080('0x35')]]=_0x56d52a[_0xf080('0x2b')]['from'];return db['MailAccount']['find']({'where':{'id':_0x56d52a[_0xf080('0x39')]['id']},'include':[{'model':db[_0xf080('0x3a')],'as':_0xf080('0x3b'),'include':[{'model':db[_0xf080('0x2e')],'as':_0xf080('0x3c'),'where':_0x54b458,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xf080('0x3d')],'as':_0xf080('0x3e')},{'model':db[_0xf080('0x3f')],'as':'Smtp'}]})[_0xf080('0x13')](function(_0x24cb5e){if(_0x24cb5e&&_0x24cb5e['List']){var _0x5f41ff=_0x24cb5e[_0xf080('0x40')]({'plain':!![]});_0x469303[_0xf080('0x39')]=_[_0xf080('0x41')](_0x5f41ff,[_0xf080('0x3e'),'List']);_0x469303['applications']=_0x5f41ff[_0xf080('0x3e')];_0x469303[_0xf080('0x42')]=_0x5f41ff[_0xf080('0x3b')];_0x469303[_0xf080('0x43')]=_['orderBy'](_0x469303['applications'],['priority'],[_0xf080('0x44')]);if(_0x469303[_0xf080('0x39')]&&_0x469303[_0xf080('0x39')][_0xf080('0x45')]){_0x469303[_0xf080('0x43')][_0xf080('0x46')]({'id':0x0,'priority':_0x469303[_0xf080('0x43')][_0xf080('0x47')]+0x1,'app':_0xf080('0x48'),'appdata':_0xf080('0x45'),'interval':_0xf080('0x49')});}if(_0x469303[_0xf080('0x39')][_0xf080('0x3e')]){delete _0x469303[_0xf080('0x39')][_0xf080('0x3e')];}if(_0x469303[_0xf080('0x39')]['List']){delete _0x469303[_0xf080('0x39')]['List'];}if(_0x5f41ff['List'][_0xf080('0x3c')][_0xf080('0x47')]){return _0x5f41ff['List'][_0xf080('0x3c')][0x0];}var _0xd1d673=_[_0xf080('0xe')](_0x56d52a['body'],{'firstName':_0x56d52a[_0xf080('0x2b')][_0xf080('0x4a')],'ListId':_0x5f41ff[_0xf080('0x31')]});_0xd1d673[_0x56d52a[_0xf080('0x2b')][_0xf080('0x35')]]=_0x56d52a[_0xf080('0x2b')][_0xf080('0x4a')];return db[_0xf080('0x2e')][_0xf080('0x4b')](_0xd1d673);}else{throw new Error(_0xf080('0x4c'));}})[_0xf080('0x13')](function(_0x3e7150){_0x469303[_0xf080('0x4d')]=_0x3e7150;if(_0x3e7150){if(!_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x4e')]){_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x4e')]=rs[_0xf080('0x4f')]()+'\x20'+_0x56d52a['body'][_0xf080('0x19')][_0xf080('0x4a')];}var _0x5bec96={'ContactId':_0x3e7150['id'],'MailAccountId':_0x56d52a[_0xf080('0x39')]['id'],'inReplyTo':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')]['messageId'],'to':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x4a')],'cc':_0x56d52a[_0xf080('0x2b')]['message']['cc'],'subject':_0x56d52a[_0xf080('0x2b')]['message'][_0xf080('0x50')],'attach':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x51')],'lastMsgAt':moment()[_0xf080('0x52')](_0xf080('0x53')),'lastMsgDirection':'in'};return db[_0xf080('0x54')][_0xf080('0x29')]({'where':{'closed':![],'MailAccountId':_0x56d52a[_0xf080('0x39')]['id']},'include':[{'model':db[_0xf080('0x55')],'as':_0xf080('0x56'),'attributes':['messageId'],'where':{'messageId':_0x56d52a['body'][_0xf080('0x19')][_0xf080('0x57')]}}]})['then'](function(_0x1f5fa6){if(_0x1f5fa6){return[_0x1f5fa6,![]];}return db[_0xf080('0x54')][_0xf080('0x4b')](_0x5bec96)[_0xf080('0x13')](function(_0x1a6c3b){return[_0x1a6c3b,!![]];});});}else{throw new Error(_0xf080('0x58'));}})['spread'](function(_0x515278,_0x1d4021){if(_0x515278){_0xa6e1c9=_0x1d4021;if(!_0x1d4021){return _0x515278['update']({'inReplyTo':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x4e')],'to':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x4a')],'cc':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')]['cc'],'subject':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')]['subject'],'attach':_0x515278[_0xf080('0x51')]?_0x515278[_0xf080('0x51')]:_0x56d52a[_0xf080('0x2b')]['message'][_0xf080('0x51')],'substatus':null,'substatusAt':moment()[_0xf080('0x52')](_0xf080('0x53')),'lastMsgAt':moment()[_0xf080('0x52')](_0xf080('0x53')),'lastMsgDirection':'in'});}else{return _0x515278;}}})[_0xf080('0x13')](function(_0x4919dd){_0x469303[_0xf080('0x59')]=_0x4919dd[_0xf080('0x40')]({'plain':!![]});_0x469303[_0xf080('0x59')][_0xf080('0x5a')]=_0xa6e1c9;return db['MailMessage'][_0xf080('0x4b')]({'body':_0x56d52a[_0xf080('0x2b')]['body'],'MailAccountId':_0x56d52a[_0xf080('0x39')]['id'],'MailInteractionId':_0x4919dd['id'],'direction':'in','ContactId':_0x469303[_0xf080('0x4d')]['id'],'messageId':_0x56d52a[_0xf080('0x2b')]['message'][_0xf080('0x4e')],'from':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')]['from'],'to':_0x56d52a['body']['message']['to'],'cc':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')]['cc'],'subject':_0x56d52a[_0xf080('0x2b')]['message'][_0xf080('0x50')],'attach':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x51')],'Attachments':_0x56d52a['body'][_0xf080('0x19')]['attachments'],'originTo':_0x56d52a[_0xf080('0x2b')]['message'][_0xf080('0x5b')],'originCc':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x5c')],'bcc':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')]['bcc'],'ChatWebsiteId':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x5d')]||null,'originChannel':_0x56d52a[_0xf080('0x2b')]['message']['originChannel']||_0xf080('0x5e'),'ChatOfflineMessageId':_0x56d52a[_0xf080('0x2b')][_0xf080('0x19')][_0xf080('0x5f')]||null},{'include':[{'model':db['Attachment'],'as':_0xf080('0x60')}]});})[_0xf080('0x13')](function(_0x51cc2b){_0x469303[_0xf080('0x19')]=_0x51cc2b;if(_0x469303[_0xf080('0x59')][_0xf080('0x61')]){return db[_0xf080('0x62')][_0xf080('0x29')]({'attributes':['id',_0xf080('0x63')],'where':{'id':_0x469303[_0xf080('0x59')][_0xf080('0x61')]}})[_0xf080('0x13')](function(_0x64d766){if(_0x64d766){_0x469303[_0xf080('0x43')]['unshift']({'id':0x0,'priority':0x0,'app':_0xf080('0x64'),'appdata':_0x64d766[_0xf080('0x63')]+','+(_0x469303[_0xf080('0x39')][_0xf080('0x65')]||0xa),'interval':_0xf080('0x49')});}return respondWithRpcPromise(_0xf080('0x66'),_0xf080('0x67'),_0x469303);});}return respondWithRpcPromise('Start','startRouting',_0x469303);})[_0xf080('0x13')](function(_0x1a45bb){_0x303c65(_0x1a45bb);})[_0xf080('0x1c')](function(_0x4ad45e){_0x42c262(_0x45e96f['error'](0x1f4,_0x4ad45e[_0xf080('0x19')]));});});};
\ No newline at end of file
index bbebe68..591175c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe203=['register','mailAccount:','./mailAccount.events','save','remove','update'];(function(_0x20501a,_0x374dfa){var _0x110d64=function(_0x5ab3c6){while(--_0x5ab3c6){_0x20501a['push'](_0x20501a['shift']());}};_0x110d64(++_0x374dfa);}(_0xe203,0x1be));var _0x3e20=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe203[_0x3dd15e];return _0x231fd0;};'use strict';var MailAccountEvents=require(_0x3e20('0x0'));var events=[_0x3e20('0x1'),_0x3e20('0x2'),_0x3e20('0x3')];function createListener(_0x48c31b,_0x2c2963){return function(_0x5703c6){_0x2c2963['emit'](_0x48c31b,_0x5703c6);};}function removeListener(_0x409b11,_0x3d433b){return function(){MailAccountEvents['removeListener'](_0x409b11,_0x3d433b);};}exports[_0x3e20('0x4')]=function(_0x5c00a8){for(var _0x39e0d9=0x0,_0x57249a=events['length'];_0x39e0d9<_0x57249a;_0x39e0d9++){var _0x3e384e=events[_0x39e0d9];var _0x467332=createListener(_0x3e20('0x5')+_0x3e384e,_0x5c00a8);MailAccountEvents['on'](_0x3e384e,_0x467332);}};
\ No newline at end of file
+var _0x939a=['removeListener','register','length','mailAccount:','./mailAccount.events','save','remove','update','emit'];(function(_0xbe4c61,_0x24e06a){var _0x35076d=function(_0x126a03){while(--_0x126a03){_0xbe4c61['push'](_0xbe4c61['shift']());}};_0x35076d(++_0x24e06a);}(_0x939a,0x12d));var _0xa939=function(_0x1f8bfb,_0x3f285d){_0x1f8bfb=_0x1f8bfb-0x0;var _0x2f50f7=_0x939a[_0x1f8bfb];return _0x2f50f7;};'use strict';var MailAccountEvents=require(_0xa939('0x0'));var events=[_0xa939('0x1'),_0xa939('0x2'),_0xa939('0x3')];function createListener(_0x1fe7b6,_0x8d678){return function(_0x5d1305){_0x8d678[_0xa939('0x4')](_0x1fe7b6,_0x5d1305);};}function removeListener(_0x564b5c,_0x1bc30a){return function(){MailAccountEvents[_0xa939('0x5')](_0x564b5c,_0x1bc30a);};}exports[_0xa939('0x6')]=function(_0x2debc4){for(var _0x50ddc4=0x0,_0x5f1bb8=events[_0xa939('0x7')];_0x50ddc4<_0x5f1bb8;_0x50ddc4++){var _0x2288c6=events[_0x50ddc4];var _0x173a84=createListener(_0xa939('0x8')+_0x2288c6,_0x2debc4);MailAccountEvents['on'](_0x2288c6,_0x173a84);}};
\ No newline at end of file
index b45e589..e7b23db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3441=['get','/:id','isAuthenticated','put','update','delete','destroy','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller'];(function(_0xd75658,_0x3693c8){var _0x3c07bb=function(_0x1e5b86){while(--_0x1e5b86){_0xd75658['push'](_0xd75658['shift']());}};_0x3c07bb(++_0x3693c8);}(_0x3441,0x134));var _0x1344=function(_0x3489dc,_0x5c9f11){_0x3489dc=_0x3489dc-0x0;var _0x53b272=_0x3441[_0x3489dc];return _0x53b272;};'use strict';var multer=require(_0x1344('0x0'));var util=require('util');var path=require(_0x1344('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1344('0x2'));var auth=require(_0x1344('0x3'));var interaction=require(_0x1344('0x4'));var config=require(_0x1344('0x5'));var controller=require(_0x1344('0x6'));router[_0x1344('0x7')](_0x1344('0x8'),auth[_0x1344('0x9')](),controller['show']);router[_0x1344('0xa')](_0x1344('0x8'),auth[_0x1344('0x9')](),controller[_0x1344('0xb')]);router[_0x1344('0xc')](_0x1344('0x8'),auth[_0x1344('0x9')](),controller[_0x1344('0xd')]);module[_0x1344('0xe')]=router;
\ No newline at end of file
+var _0x72b4=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','exports','multer','util','path'];(function(_0x30e703,_0x192567){var _0x21f6e7=function(_0x4e5b96){while(--_0x4e5b96){_0x30e703['push'](_0x30e703['shift']());}};_0x21f6e7(++_0x192567);}(_0x72b4,0xed));var _0x472b=function(_0x520ce8,_0x445e56){_0x520ce8=_0x520ce8-0x0;var _0x64369e=_0x72b4[_0x520ce8];return _0x64369e;};'use strict';var multer=require(_0x472b('0x0'));var util=require(_0x472b('0x1'));var path=require(_0x472b('0x2'));var timeout=require('connect-timeout');var express=require(_0x472b('0x3'));var router=express[_0x472b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x472b('0x5'));var interaction=require(_0x472b('0x6'));var config=require(_0x472b('0x7'));var controller=require(_0x472b('0x8'));router[_0x472b('0x9')](_0x472b('0xa'),auth[_0x472b('0xb')](),controller[_0x472b('0xc')]);router[_0x472b('0xd')](_0x472b('0xa'),auth['isAuthenticated'](),controller[_0x472b('0xe')]);router['delete'](_0x472b('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x472b('0xf')]=router;
\ No newline at end of file
index 51a599d..5a40778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b2a=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x1346db,_0x3b5b3a){var _0x2c600a=function(_0x436258){while(--_0x436258){_0x1346db['push'](_0x1346db['shift']());}};_0x2c600a(++_0x3b5b3a);}(_0x5b2a,0x1bd));var _0xa5b2=function(_0x1d5ba8,_0x412a52){_0x1d5ba8=_0x1d5ba8-0x0;var _0x1022a2=_0x5b2a[_0x1d5ba8];return _0x1022a2;};'use strict';var Sequelize=require(_0xa5b2('0x0'));module[_0xa5b2('0x1')]={'priority':{'type':Sequelize[_0xa5b2('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa5b2('0x3')],'allowNull':![],'defaultValue':_0xa5b2('0x4')},'appdata':{'type':Sequelize[_0xa5b2('0x5')]()},'description':{'type':Sequelize[_0xa5b2('0x3')]},'interval':{'type':Sequelize[_0xa5b2('0x3')],'defaultValue':_0xa5b2('0x6')}};
\ No newline at end of file
+var _0x8475=['*,*,*,*','sequelize','exports','noop','TEXT','STRING'];(function(_0x5555e1,_0x303eef){var _0x614cd7=function(_0x51529a){while(--_0x51529a){_0x5555e1['push'](_0x5555e1['shift']());}};_0x614cd7(++_0x303eef);}(_0x8475,0x1c3));var _0x5847=function(_0x5d1202,_0x543b16){_0x5d1202=_0x5d1202-0x0;var _0x4b059d=_0x8475[_0x5d1202];return _0x4b059d;};'use strict';var Sequelize=require(_0x5847('0x0'));module[_0x5847('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5847('0x2')},'appdata':{'type':Sequelize[_0x5847('0x3')]()},'description':{'type':Sequelize[_0x5847('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x5847('0x5')}};
\ No newline at end of file
index 49f084e..94af349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','show','params','model','rawAttributes','query','keys','filters','intersection','attributes','fields','length','merge','options','MailApplication','find','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x57fd2a,_0x19d5ca){var _0x416a50=function(_0x8b1eac){while(--_0x8b1eac){_0x57fd2a['push'](_0x57fd2a['shift']());}};_0x416a50(++_0x19d5ca);}(_0x54ef,0x112));var _0xf54e=function(_0x3936f9,_0x420945){_0x3936f9=_0x3936f9-0x0;var _0x14d47d=_0x54ef[_0x3936f9];return _0x14d47d;};'use strict';var emlformat=require(_0xf54e('0x0'));var rimraf=require(_0xf54e('0x1'));var zipdir=require(_0xf54e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf54e('0x3'));var moment=require(_0xf54e('0x4'));var BPromise=require(_0xf54e('0x5'));var Mustache=require(_0xf54e('0x6'));var util=require(_0xf54e('0x7'));var path=require(_0xf54e('0x8'));var sox=require(_0xf54e('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf54e('0xa'));var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var authService=require(_0xf54e('0x11'));var qs=require(_0xf54e('0x12'));var as=require(_0xf54e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf54e('0x14'))(_0xf54e('0x15'));var utils=require(_0xf54e('0x16'));var config=require(_0xf54e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf54e('0x18'))['db'];function respondWithStatusCode(_0x4b0ee1,_0x4bd828){_0x4bd828=_0x4bd828||0xcc;return function(_0x15a9d4){if(_0x15a9d4){return _0x4b0ee1[_0xf54e('0x19')](_0x4bd828);}return _0x4b0ee1[_0xf54e('0x1a')](_0x4bd828)[_0xf54e('0x1b')]();};}function respondWithResult(_0x5644aa,_0x331732){_0x331732=_0x331732||0xc8;return function(_0x1bbeaa){if(_0x1bbeaa){return _0x5644aa[_0xf54e('0x1a')](_0x331732)[_0xf54e('0x1c')](_0x1bbeaa);}};}function respondWithFilteredResult(_0x56828e,_0x2366ee){return function(_0x389abc){if(_0x389abc){var _0x3eb415=typeof _0x2366ee['offset']==='undefined'&&typeof _0x2366ee[_0xf54e('0x1d')]===_0xf54e('0x1e');var _0x1c02e7=_0x389abc[_0xf54e('0x1f')];var _0x15cc48=_0x3eb415?0x0:_0x2366ee[_0xf54e('0x20')];var _0x2e27b6=_0x3eb415?_0x389abc[_0xf54e('0x1f')]:_0x2366ee[_0xf54e('0x20')]+_0x2366ee[_0xf54e('0x1d')];var _0x226c96;if(_0x2e27b6>=_0x1c02e7){_0x2e27b6=_0x1c02e7;_0x226c96=0xc8;}else{_0x226c96=0xce;}_0x56828e['status'](_0x226c96);return _0x56828e['set'](_0xf54e('0x21'),_0x15cc48+'-'+_0x2e27b6+'/'+_0x1c02e7)['json'](_0x389abc);}return null;};}function patchUpdates(_0x3e1556){return function(_0x1bfe99){try{jsonpatch[_0xf54e('0x22')](_0x1bfe99,_0x3e1556,!![]);}catch(_0x9903fc){return BPromise[_0xf54e('0x23')](_0x9903fc);}return _0x1bfe99[_0xf54e('0x24')]();};}function saveUpdates(_0x388aa0,_0x11985e){return function(_0x3c0169){if(_0x3c0169){return _0x3c0169[_0xf54e('0x25')](_0x388aa0)[_0xf54e('0x26')](function(_0x5b83df){return _0x5b83df;});}return null;};}function removeEntity(_0x6f6d29,_0x54f914){return function(_0x264a8f){if(_0x264a8f){return _0x264a8f[_0xf54e('0x27')]()[_0xf54e('0x26')](function(){_0x6f6d29[_0xf54e('0x1a')](0xcc)[_0xf54e('0x1b')]();});}};}function handleEntityNotFound(_0x160160,_0x1e08d1){return function(_0x43488d){if(!_0x43488d){_0x160160[_0xf54e('0x19')](0x194);}return _0x43488d;};}function handleError(_0x33457f,_0xf6cdd7){_0xf6cdd7=_0xf6cdd7||0x1f4;return function(_0x39c0ae){logger[_0xf54e('0x28')](_0x39c0ae['stack']);if(_0x39c0ae[_0xf54e('0x29')]){delete _0x39c0ae['name'];}_0x33457f[_0xf54e('0x1a')](_0xf6cdd7)['send'](_0x39c0ae);};}exports[_0xf54e('0x2a')]=function(_0x269f47,_0x21ba00){var _0xa13cd0={'raw':!![],'where':{'id':_0x269f47[_0xf54e('0x2b')]['id']}},_0x25b643={};_0x25b643[_0xf54e('0x2c')]=_['keys'](db['MailApplication'][_0xf54e('0x2d')]);_0x25b643[_0xf54e('0x2e')]=_[_0xf54e('0x2f')](_0x269f47[_0xf54e('0x2e')]);_0x25b643[_0xf54e('0x30')]=_[_0xf54e('0x31')](_0x25b643[_0xf54e('0x2c')],_0x25b643[_0xf54e('0x2e')]);_0xa13cd0[_0xf54e('0x32')]=_[_0xf54e('0x31')](_0x25b643['model'],qs['fields'](_0x269f47[_0xf54e('0x2e')][_0xf54e('0x33')]));_0xa13cd0['attributes']=_0xa13cd0[_0xf54e('0x32')][_0xf54e('0x34')]?_0xa13cd0[_0xf54e('0x32')]:_0x25b643[_0xf54e('0x2c')];if(_0x269f47['query']['includeAll']){_0xa13cd0['include']=[{'all':!![]}];}_0xa13cd0=_[_0xf54e('0x35')]({},_0xa13cd0,_0x269f47[_0xf54e('0x36')]);return db[_0xf54e('0x37')][_0xf54e('0x38')](_0xa13cd0)[_0xf54e('0x26')](handleEntityNotFound(_0x21ba00,null))[_0xf54e('0x26')](respondWithResult(_0x21ba00,null))['catch'](handleError(_0x21ba00,null));};exports['update']=function(_0x530cee,_0xc04e04){if(_0x530cee[_0xf54e('0x39')]['id']){delete _0x530cee['body']['id'];}return db['MailApplication'][_0xf54e('0x38')]({'where':{'id':_0x530cee[_0xf54e('0x2b')]['id']}})[_0xf54e('0x26')](handleEntityNotFound(_0xc04e04,null))['then'](saveUpdates(_0x530cee[_0xf54e('0x39')],null))[_0xf54e('0x26')](respondWithResult(_0xc04e04,null))['catch'](handleError(_0xc04e04,null));};exports[_0xf54e('0x27')]=function(_0x6e5bdf,_0x5af03){return db[_0xf54e('0x37')][_0xf54e('0x38')]({'where':{'id':_0x6e5bdf[_0xf54e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5af03,null))['then'](removeEntity(_0x5af03,null))[_0xf54e('0x3a')](handleError(_0x5af03,null));};
\ No newline at end of file
+var _0xedd9=['query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','show','params','keys','MailApplication','rawAttributes'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xedd9,0xfc));var _0x9edd=function(_0x261ae4,_0x5be223){_0x261ae4=_0x261ae4-0x0;var _0x4d1c52=_0xedd9[_0x261ae4];return _0x4d1c52;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={'raw':!![],'where':{'id':_0x52746a[_0x9edd('0x27')]['id']}},_0x2ae8dd={};_0x2ae8dd['model']=_[_0x9edd('0x28')](db[_0x9edd('0x29')][_0x9edd('0x2a')]);_0x2ae8dd[_0x9edd('0x2b')]=_[_0x9edd('0x28')](_0x52746a[_0x9edd('0x2b')]);_0x2ae8dd[_0x9edd('0x2c')]=_[_0x9edd('0x2d')](_0x2ae8dd[_0x9edd('0x2e')],_0x2ae8dd[_0x9edd('0x2b')]);_0x28cfae[_0x9edd('0x2f')]=_[_0x9edd('0x2d')](_0x2ae8dd[_0x9edd('0x2e')],qs[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2b')]['fields']));_0x28cfae[_0x9edd('0x2f')]=_0x28cfae[_0x9edd('0x2f')][_0x9edd('0x31')]?_0x28cfae['attributes']:_0x2ae8dd[_0x9edd('0x2e')];if(_0x52746a[_0x9edd('0x2b')][_0x9edd('0x32')]){_0x28cfae[_0x9edd('0x33')]=[{'all':!![]}];}_0x28cfae=_[_0x9edd('0x34')]({},_0x28cfae,_0x52746a[_0x9edd('0x35')]);return db[_0x9edd('0x29')][_0x9edd('0x36')](_0x28cfae)[_0x9edd('0x21')](handleEntityNotFound(_0x238b22,null))[_0x9edd('0x21')](respondWithResult(_0x238b22,null))[_0x9edd('0x37')](handleError(_0x238b22,null));};exports[_0x9edd('0x38')]=function(_0x27eb7e,_0x14f780){if(_0x27eb7e['body']['id']){delete _0x27eb7e[_0x9edd('0x39')]['id'];}return db['MailApplication'][_0x9edd('0x36')]({'where':{'id':_0x27eb7e[_0x9edd('0x27')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x14f780,null))[_0x9edd('0x21')](saveUpdates(_0x27eb7e[_0x9edd('0x39')],null))['then'](respondWithResult(_0x14f780,null))[_0x9edd('0x37')](handleError(_0x14f780,null));};exports[_0x9edd('0x3a')]=function(_0x2b3469,_0x38e9be){return db[_0x9edd('0x29')][_0x9edd('0x36')]({'where':{'id':_0x2b3469[_0x9edd('0x27')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x38e9be,null))[_0x9edd('0x21')](removeEntity(_0x38e9be,null))[_0x9edd('0x37')](handleError(_0x38e9be,null));};
\ No newline at end of file
index 8c9d05c..c4576a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x171e=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','lodash','util'];(function(_0xefba94,_0x5dfd6e){var _0x3d6fb5=function(_0x4dfdae){while(--_0x4dfdae){_0xefba94['push'](_0xefba94['shift']());}};_0x3d6fb5(++_0x5dfd6e);}(_0x171e,0x14e));var _0xe171=function(_0x717fa,_0x441fee){_0x717fa=_0x717fa-0x0;var _0x10cb8a=_0x171e[_0x717fa];return _0x10cb8a;};'use strict';var _=require(_0xe171('0x0'));var util=require(_0xe171('0x1'));var logger=require(_0xe171('0x2'))(_0xe171('0x3'));var moment=require('moment');var BPromise=require(_0xe171('0x4'));var rp=require(_0xe171('0x5'));var fs=require('fs');var path=require(_0xe171('0x6'));var rimraf=require(_0xe171('0x7'));var config=require(_0xe171('0x8'));var attributes=require(_0xe171('0x9'));module[_0xe171('0xa')]=function(_0x44c91f,_0x212d34){return _0x44c91f[_0xe171('0xb')](_0xe171('0xc'),attributes,{'tableName':_0xe171('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb69d=['bluebird','path','rimraf','../../config/environment','./mailApplication.attributes','MailApplication','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment'];(function(_0x4eafed,_0x26e2bc){var _0x159c85=function(_0x6f129f){while(--_0x6f129f){_0x4eafed['push'](_0x4eafed['shift']());}};_0x159c85(++_0x26e2bc);}(_0xb69d,0x1c0));var _0xdb69=function(_0x159ae5,_0x45d057){_0x159ae5=_0x159ae5-0x0;var _0x437588=_0xb69d[_0x159ae5];return _0x437588;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdb69('0x0'))('api');var moment=require(_0xdb69('0x1'));var BPromise=require(_0xdb69('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdb69('0x3'));var rimraf=require(_0xdb69('0x4'));var config=require(_0xdb69('0x5'));var attributes=require(_0xdb69('0x6'));module['exports']=function(_0x2b107f,_0x1f8b19){return _0x2b107f['define'](_0xdb69('0x7'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdb69('0x8'),'collate':_0xdb69('0x9')});};
\ No newline at end of file
index 6e90857..4b070a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4437=['stringify','error','code','message','UpdateMailApplication','MailApplication','update','body','options','raw','where','attributes','then','catch','util','moment','bluebird','randomstring','../../config/logger','jayson/promise','client','http','request','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s'];(function(_0x27768b,_0x29ab00){var _0x7d7156=function(_0x2d58ef){while(--_0x2d58ef){_0x27768b['push'](_0x27768b['shift']());}};_0x7d7156(++_0x29ab00);}(_0x4437,0x142));var _0x7443=function(_0x36de03,_0x2ab0bb){_0x36de03=_0x36de03-0x0;var _0x4abe0d=_0x4437[_0x36de03];return _0x4abe0d;};'use strict';var _=require('lodash');var util=require(_0x7443('0x0'));var moment=require(_0x7443('0x1'));var BPromise=require(_0x7443('0x2'));var rs=require(_0x7443('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7443('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7443('0x5'));var client=jayson[_0x7443('0x6')][_0x7443('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4fb4b4,_0x28c07b,_0x24c4d5){return new BPromise(function(_0x7ef687,_0x32be24){return client[_0x7443('0x8')](_0x4fb4b4,_0x24c4d5)['then'](function(_0x685d3d){logger[_0x7443('0x9')](_0x7443('0xa'),_0x28c07b,_0x7443('0xb'));logger[_0x7443('0xc')](_0x7443('0xd'),_0x28c07b,_0x7443('0xb'),JSON[_0x7443('0xe')](_0x685d3d));if(_0x685d3d[_0x7443('0xf')]){if(_0x685d3d[_0x7443('0xf')][_0x7443('0x10')]===0x1f4){logger[_0x7443('0xf')](_0x7443('0xa'),_0x28c07b,_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);return _0x32be24(_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);}logger['error'](_0x7443('0xa'),_0x28c07b,_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);return _0x7ef687(_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);}else{logger[_0x7443('0x9')]('MailApplication,\x20%s,\x20%s',_0x28c07b,'request\x20sent');_0x7ef687(_0x685d3d['result'][_0x7443('0x11')]);}})['catch'](function(_0x2edd5b){logger[_0x7443('0xf')]('MailApplication,\x20%s,\x20%s',_0x28c07b,_0x2edd5b);_0x32be24(_0x2edd5b);});});}exports[_0x7443('0x12')]=function(_0x15023e){var _0x41c326=this;return new Promise(function(_0x55d9b8,_0x4bf19c){return db[_0x7443('0x13')][_0x7443('0x14')](_0x15023e[_0x7443('0x15')],{'raw':_0x15023e[_0x7443('0x16')]?_0x15023e[_0x7443('0x16')][_0x7443('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15023e[_0x7443('0x16')]?_0x15023e[_0x7443('0x16')][_0x7443('0x18')]||null:null,'attributes':_0x15023e[_0x7443('0x16')]?_0x15023e[_0x7443('0x16')][_0x7443('0x19')]||null:null,'limit':_0x15023e[_0x7443('0x16')]?_0x15023e['options']['limit']||null:null})[_0x7443('0x1a')](function(_0x234e42){logger[_0x7443('0x9')](_0x7443('0x12'),_0x15023e);logger[_0x7443('0xc')](_0x7443('0x12'),_0x15023e,JSON['stringify'](_0x234e42));_0x55d9b8(_0x234e42);})[_0x7443('0x1b')](function(_0x3bb777){logger[_0x7443('0xf')](_0x7443('0x12'),_0x3bb777['message'],_0x15023e);_0x4bf19c(_0x41c326['error'](0x1f4,_0x3bb777[_0x7443('0x11')]));});});};
\ No newline at end of file
+var _0xc344=['stringify','error','code','MailApplication,\x20%s,\x20%s','message','catch','MailApplication','update','body','raw','options','where','attributes','limit','UpdateMailApplication','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug'];(function(_0x4f6163,_0x46d168){var _0x23bec9=function(_0x3d8ee7){while(--_0x3d8ee7){_0x4f6163['push'](_0x4f6163['shift']());}};_0x23bec9(++_0x46d168);}(_0xc344,0x117));var _0x4c34=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xc344[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0x4c34('0x0'));var util=require(_0x4c34('0x1'));var moment=require(_0x4c34('0x2'));var BPromise=require('bluebird');var rs=require(_0x4c34('0x3'));var fs=require('fs');var Redis=require(_0x4c34('0x4'));var db=require(_0x4c34('0x5'))['db'];var utils=require(_0x4c34('0x6'));var logger=require(_0x4c34('0x7'))(_0x4c34('0x8'));var config=require(_0x4c34('0x9'));var jayson=require(_0x4c34('0xa'));var client=jayson[_0x4c34('0xb')][_0x4c34('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3e2b95,_0x3aab9f,_0x240c90){return new BPromise(function(_0x1d9dd1,_0x12a695){return client[_0x4c34('0xd')](_0x3e2b95,_0x240c90)[_0x4c34('0xe')](function(_0x1e99db){logger[_0x4c34('0xf')]('MailApplication,\x20%s,\x20%s',_0x3aab9f,_0x4c34('0x10'));logger[_0x4c34('0x11')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x3aab9f,'request\x20sent',JSON[_0x4c34('0x12')](_0x1e99db));if(_0x1e99db['error']){if(_0x1e99db[_0x4c34('0x13')][_0x4c34('0x14')]===0x1f4){logger['error'](_0x4c34('0x15'),_0x3aab9f,_0x1e99db[_0x4c34('0x13')][_0x4c34('0x16')]);return _0x12a695(_0x1e99db[_0x4c34('0x13')][_0x4c34('0x16')]);}logger[_0x4c34('0x13')](_0x4c34('0x15'),_0x3aab9f,_0x1e99db[_0x4c34('0x13')][_0x4c34('0x16')]);return _0x1d9dd1(_0x1e99db[_0x4c34('0x13')]['message']);}else{logger['info'](_0x4c34('0x15'),_0x3aab9f,'request\x20sent');_0x1d9dd1(_0x1e99db['result'][_0x4c34('0x16')]);}})[_0x4c34('0x17')](function(_0x2fb624){logger[_0x4c34('0x13')](_0x4c34('0x15'),_0x3aab9f,_0x2fb624);_0x12a695(_0x2fb624);});});}exports['UpdateMailApplication']=function(_0x1027e3){var _0x3c3811=this;return new Promise(function(_0x20de1d,_0x451924){return db[_0x4c34('0x18')][_0x4c34('0x19')](_0x1027e3[_0x4c34('0x1a')],{'raw':_0x1027e3['options']?_0x1027e3['options'][_0x4c34('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1027e3[_0x4c34('0x1c')]?_0x1027e3[_0x4c34('0x1c')][_0x4c34('0x1d')]||null:null,'attributes':_0x1027e3['options']?_0x1027e3[_0x4c34('0x1c')][_0x4c34('0x1e')]||null:null,'limit':_0x1027e3[_0x4c34('0x1c')]?_0x1027e3[_0x4c34('0x1c')][_0x4c34('0x1f')]||null:null})[_0x4c34('0xe')](function(_0x491145){logger[_0x4c34('0xf')](_0x4c34('0x20'),_0x1027e3);logger['debug'](_0x4c34('0x20'),_0x1027e3,JSON['stringify'](_0x491145));_0x20de1d(_0x491145);})['catch'](function(_0x193269){logger[_0x4c34('0x13')](_0x4c34('0x20'),_0x193269[_0x4c34('0x16')],_0x1027e3);_0x451924(_0x3c3811[_0x4c34('0x13')](0x1f4,_0x193269[_0x4c34('0x16')]));});});};
\ No newline at end of file
index 5369830..d6c7d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01e2=['mailinteraction:update','update','delete','mailinteraction:destroy','/:id/tags','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','download','post','create','addMessage','tracked','mailinteraction:addtags','addTags','mail'];(function(_0x15b66f,_0x3da7c3){var _0x574602=function(_0x29f9bf){while(--_0x29f9bf){_0x15b66f['push'](_0x15b66f['shift']());}};_0x574602(++_0x3da7c3);}(_0x01e2,0x13b));var _0x201e=function(_0xbdd42e,_0x58d9b1){_0xbdd42e=_0xbdd42e-0x0;var _0x3bc8e2=_0x01e2[_0xbdd42e];return _0x3bc8e2;};'use strict';var express=require(_0x201e('0x0'));var router=express[_0x201e('0x1')]();var auth=require(_0x201e('0x2'));var interaction=require(_0x201e('0x3'));var controller=require(_0x201e('0x4'));router[_0x201e('0x5')]('/',auth[_0x201e('0x6')](),controller[_0x201e('0x7')]);router['get'](_0x201e('0x8'),auth[_0x201e('0x6')](),controller[_0x201e('0x9')]);router[_0x201e('0x5')](_0x201e('0xa'),auth[_0x201e('0x6')](),controller[_0x201e('0xb')]);router[_0x201e('0x5')](_0x201e('0xc'),auth[_0x201e('0x6')](),controller['getMessages']);router[_0x201e('0x5')]('/:id/download',auth[_0x201e('0x6')](),controller[_0x201e('0xd')]);router[_0x201e('0xe')]('/',auth[_0x201e('0x6')](),controller[_0x201e('0xf')]);router[_0x201e('0xe')](_0x201e('0xc'),auth[_0x201e('0x6')](),controller[_0x201e('0x10')]);router[_0x201e('0xe')]('/:id/tags',auth[_0x201e('0x6')](),interaction[_0x201e('0x11')]('mail',_0x201e('0x12')),controller[_0x201e('0x13')]);router['put'](_0x201e('0xa'),auth[_0x201e('0x6')](),interaction[_0x201e('0x11')](_0x201e('0x14'),_0x201e('0x15')),controller[_0x201e('0x16')]);router[_0x201e('0x17')]('/:id',auth[_0x201e('0x6')](),interaction[_0x201e('0x11')](_0x201e('0x14'),_0x201e('0x18')),controller['destroy']);router[_0x201e('0x17')](_0x201e('0x19'),auth[_0x201e('0x6')](),controller[_0x201e('0x1a')]);module[_0x201e('0x1b')]=router;
\ No newline at end of file
+var _0x25cc=['exports','express','./mailInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','post','create','/:id/tags','tracked','mail','mailinteraction:addtags','put','mailinteraction:update','update','mailinteraction:destroy','destroy','delete','removeTags'];(function(_0x21348d,_0xe6d480){var _0x637f19=function(_0x2428e2){while(--_0x2428e2){_0x21348d['push'](_0x21348d['shift']());}};_0x637f19(++_0xe6d480);}(_0x25cc,0xa9));var _0xc25c=function(_0x5df4f5,_0x23ad70){_0x5df4f5=_0x5df4f5-0x0;var _0x2930a2=_0x25cc[_0x5df4f5];return _0x2930a2;};'use strict';var express=require(_0xc25c('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var controller=require(_0xc25c('0x1'));router[_0xc25c('0x2')]('/',auth[_0xc25c('0x3')](),controller[_0xc25c('0x4')]);router[_0xc25c('0x2')](_0xc25c('0x5'),auth[_0xc25c('0x3')](),controller['describe']);router[_0xc25c('0x2')](_0xc25c('0x6'),auth[_0xc25c('0x3')](),controller[_0xc25c('0x7')]);router['get'](_0xc25c('0x8'),auth['isAuthenticated'](),controller[_0xc25c('0x9')]);router[_0xc25c('0x2')]('/:id/download',auth[_0xc25c('0x3')](),controller['download']);router[_0xc25c('0xa')]('/',auth[_0xc25c('0x3')](),controller[_0xc25c('0xb')]);router[_0xc25c('0xa')](_0xc25c('0x8'),auth[_0xc25c('0x3')](),controller['addMessage']);router['post'](_0xc25c('0xc'),auth['isAuthenticated'](),interaction[_0xc25c('0xd')](_0xc25c('0xe'),_0xc25c('0xf')),controller['addTags']);router[_0xc25c('0x10')](_0xc25c('0x6'),auth[_0xc25c('0x3')](),interaction[_0xc25c('0xd')](_0xc25c('0xe'),_0xc25c('0x11')),controller[_0xc25c('0x12')]);router['delete'](_0xc25c('0x6'),auth['isAuthenticated'](),interaction[_0xc25c('0xd')](_0xc25c('0xe'),_0xc25c('0x13')),controller[_0xc25c('0x14')]);router[_0xc25c('0x15')](_0xc25c('0xc'),auth[_0xc25c('0x3')](),controller[_0xc25c('0x16')]);module[_0xc25c('0x17')]=router;
\ No newline at end of file
index 424e209..345b7cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb82=['BOOLEAN','ENUM','out','sequelize','iconv','exports','DATE','STRING','TEXT','long'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xfb82,0x17f));var _0x2fb8=function(_0x1264c2,_0x282862){_0x1264c2=_0x1264c2-0x0;var _0x50b4d1=_0xfb82[_0x1264c2];return _0x50b4d1;};'use strict';var Sequelize=require(_0x2fb8('0x0'));var iconv=require(_0x2fb8('0x1'));module[_0x2fb8('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2fb8('0x3')]},'disposition':{'type':Sequelize[_0x2fb8('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x2fb8('0x4')]},'note':{'type':Sequelize[_0x2fb8('0x4')]},'inReplyTo':{'type':Sequelize[_0x2fb8('0x4')](0x1fe)},'to':{'type':Sequelize[_0x2fb8('0x4')]},'cc':{'type':Sequelize[_0x2fb8('0x5')](_0x2fb8('0x6'))},'subject':{'type':Sequelize[_0x2fb8('0x5')]()},'attach':{'type':Sequelize[_0x2fb8('0x7')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x2fb8('0x3')]},'substatus':{'type':Sequelize[_0x2fb8('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x2fb8('0x8')]('in',_0x2fb8('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2fb8('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x2fb8('0x8')]('in',_0x2fb8('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2fb8('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdb0b=['STRING','long','TEXT','BOOLEAN','ENUM','out','iconv','DATE'];(function(_0x20601b,_0x2afde0){var _0x166cec=function(_0x2b5d81){while(--_0x2b5d81){_0x20601b['push'](_0x20601b['shift']());}};_0x166cec(++_0x2afde0);}(_0xdb0b,0xae));var _0xbdb0=function(_0x2e9625,_0x5770cd){_0x2e9625=_0x2e9625-0x0;var _0x11f0c6=_0xdb0b[_0x2e9625];return _0x11f0c6;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0xbdb0('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xbdb0('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xbdb0('0x2')]},'note':{'type':Sequelize[_0xbdb0('0x2')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT'](_0xbdb0('0x3'))},'subject':{'type':Sequelize[_0xbdb0('0x4')]()},'attach':{'type':Sequelize[_0xbdb0('0x5')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xbdb0('0x1')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xbdb0('0x6')]('in',_0xbdb0('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xbdb0('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xbdb0('0x6')]('in',_0xbdb0('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 499fdc8..96e15f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','show','params','rawAttributes','includeAll','include','merge','options','create','body','describe','addMessage','ids','omit','getMessages','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','stack','name','send','fullname','TagIds','Tags','split','forEach','push','MailMessage','out','-id','trimStart','plainBody','catch','index','map','MailInteraction','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','field','color','tools_tags','u.id','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','length','find','unreadMessages','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)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','Contact.firstName','c.email'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xb10b,0x12a));var _0xbb10=function(_0x2b12a8,_0x52f321){_0x2b12a8=_0x2b12a8-0x0;var _0xd38ecc=_0xb10b[_0x2b12a8];return _0xd38ecc;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var BPromise=require(_0xbb10('0x3'));var util=require('util');var path=require(_0xbb10('0x4'));var fs=require('fs');var _=require(_0xbb10('0x5'));var squel=require(_0xbb10('0x6'));var juice=require(_0xbb10('0x7'));var Redis=require(_0xbb10('0x8'));var qs=require(_0xbb10('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbb10('0xa'))(_0xbb10('0xb'));var config=require('../../config/environment');var db=require(_0xbb10('0xc'))['db'];config[_0xbb10('0xd')]=_[_0xbb10('0xe')](config[_0xbb10('0xd')],{'host':_0xbb10('0xf'),'port':0x18eb});var socket=require(_0xbb10('0x10'))(new Redis(config[_0xbb10('0xd')]));require(_0xbb10('0x11'))['register'](socket);function respondWithStatusCode(_0x4e47f8,_0x20bd61){_0x20bd61=_0x20bd61||0xcc;return function(_0x118a74){if(_0x118a74){return _0x4e47f8[_0xbb10('0x12')](_0x20bd61);}return _0x4e47f8['status'](_0x20bd61)[_0xbb10('0x13')]();};}function respondWithResult(_0x5be7e0,_0x44fb19){_0x44fb19=_0x44fb19||0xc8;return function(_0x916a32){if(_0x916a32){return _0x5be7e0[_0xbb10('0x14')](_0x44fb19)[_0xbb10('0x15')](_0x916a32);}};}function respondWithFilteredResult(_0x442548,_0x147230){return function(_0x58a612){if(_0x58a612){var _0x26e021=typeof _0x147230[_0xbb10('0x16')]===_0xbb10('0x17')&&typeof _0x147230[_0xbb10('0x18')]===_0xbb10('0x17');var _0x2f2ebf=_0x58a612[_0xbb10('0x19')];var _0x36b5e8=_0x26e021?0x0:_0x147230[_0xbb10('0x16')];var _0x2b184e=_0x26e021?_0x58a612['count']:_0x147230[_0xbb10('0x16')]+_0x147230[_0xbb10('0x18')];var _0x133ac2;if(_0x2b184e>=_0x2f2ebf){_0x2b184e=_0x2f2ebf;_0x133ac2=0xc8;}else{_0x133ac2=0xce;}_0x442548[_0xbb10('0x14')](_0x133ac2);return _0x442548[_0xbb10('0x1a')](_0xbb10('0x1b'),_0x36b5e8+'-'+_0x2b184e+'/'+_0x2f2ebf)[_0xbb10('0x15')](_0x58a612);}return null;};}function saveUpdates(_0x30efc6){return function(_0xbf2906){if(_0xbf2906){return _0xbf2906[_0xbb10('0x1c')](_0x30efc6)['then'](function(_0x5ff0cf){return _0x5ff0cf;});}return null;};}function removeEntity(_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x1d')]()[_0xbb10('0x1e')](function(){_0x19f48d[_0xbb10('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12f888){return function(_0x12ef77){if(!_0x12ef77){_0x12f888['sendStatus'](0x194);}return _0x12ef77;};}function handleError(_0x4c4b0d,_0x8e2b97){_0x8e2b97=_0x8e2b97||0x1f4;return function(_0x311abe){logger[_0xbb10('0x1f')](_0x311abe[_0xbb10('0x20')]);if(_0x311abe[_0xbb10('0x21')]){delete _0x311abe[_0xbb10('0x21')];}_0x4c4b0d[_0xbb10('0x14')](_0x8e2b97)[_0xbb10('0x22')](_0x311abe);};}function getInteractionUsers(_0x7f2377,_0x395404){return new BPromise(function(_0x3ba6cd,_0x26ad93){try{if(_0x395404[_0x7f2377['id']]){_0x7f2377['Users']=_['map'](_0x395404[_0x7f2377['id']],function(_0x4fb5e0){return{'id':_0x4fb5e0['id'],'fullname':_0x4fb5e0[_0xbb10('0x23')]};});}}catch(_0x3c5ae7){_0x26ad93(_0x3c5ae7);}_0x3ba6cd(_0x7f2377);});}function getInteractionTags(_0x2c89b9,_0x4e25ff){return new BPromise(function(_0x2fdde9,_0x24d586){try{if(_0x2c89b9[_0xbb10('0x24')]){_0x2c89b9[_0xbb10('0x25')]=[];_0x2c89b9[_0xbb10('0x24')][_0xbb10('0x26')](',')[_0xbb10('0x27')](function(_0x4aabb9){_0x2c89b9[_0xbb10('0x25')][_0xbb10('0x28')](_0x4e25ff[_0x4aabb9]);});}delete _0x2c89b9[_0xbb10('0x24')];}catch(_0x2e0249){_0x24d586(_0x2e0249);}_0x2fdde9(_0x2c89b9);});}function getLastMessageText(_0x1d30aa){return new BPromise(function(_0x2ff4c1,_0x5d5c80){return db[_0xbb10('0x29')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d30aa['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb10('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xbb10('0x2b'),'raw':!![]})[_0xbb10('0x1e')](function(_0x1b59f9){if(_0x1b59f9&&_0x1b59f9['plainBody']){_0x1d30aa['lastMsgText']=_[_0xbb10('0x2c')](_0x1b59f9[_0xbb10('0x2d')]);}_0x2ff4c1(_0x1d30aa);})['catch'](function(_0x359ad4){_0x5d5c80(_0x359ad4);});});}function updateMailInteraction(_0x37dde7,_0x2f653f,_0x1c0b57,_0x37a83f){return new BPromise(function(_0x138bc6,_0xf85197){return getInteractionUsers(_0x37dde7,_0x1c0b57)['then'](function(_0x25acb3){return getInteractionTags(_0x25acb3,_0x2f653f);})[_0xbb10('0x1e')](function(_0x441d15){if(_0x37a83f){_0x138bc6(getLastMessageText(_0x441d15));}else{_0x138bc6(_0x441d15);}})[_0xbb10('0x2e')](function(_0xfb2c5e){_0xf85197(_0xfb2c5e);});});}exports[_0xbb10('0x2f')]=function(_0x188cbd,_0x10202c){var _0x3c8d7d={},_0x56943c={},_0x2b5352={'count':0x0,'rows':[]};var _0x150107=_[_0xbb10('0x30')](db[_0xbb10('0x31')]['rawAttributes'],function(_0x111762){return{'name':_0x111762['fieldName'],'type':_0x111762['type'][_0xbb10('0x32')]};});_0x56943c[_0xbb10('0x33')]=_[_0xbb10('0x30')](_0x150107,_0xbb10('0x21'));_0x56943c[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x188cbd['query']);_0x56943c[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x56943c['model'],_0x56943c['query']);_0x3c8d7d['attributes']=_[_0xbb10('0x37')](_0x56943c[_0xbb10('0x33')],qs[_0xbb10('0x38')](_0x188cbd['query'][_0xbb10('0x38')]));_0x3c8d7d[_0xbb10('0x39')]=_0x3c8d7d[_0xbb10('0x39')]['length']?_0x3c8d7d[_0xbb10('0x39')]:_0x56943c[_0xbb10('0x33')];if(!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3a')]('nolimit')){_0x3c8d7d[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0x188cbd['query'][_0xbb10('0x18')]);_0x3c8d7d[_0xbb10('0x16')]=qs[_0xbb10('0x16')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x16')]);}_0x3c8d7d[_0xbb10('0x3b')]=qs['sort'](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x3c8d7d[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_['pick'](_0x188cbd[_0xbb10('0x34')],_0x56943c[_0xbb10('0x36')]),_0x150107);var _0x23dc18=[];var _0x403beb=squel['select']()[_0xbb10('0x3e')]('id')[_0xbb10('0x3e')]('name')['field'](_0xbb10('0x3f'))['from'](_0xbb10('0x40'));var _0x180933=squel['select']()[_0xbb10('0x3e')](_0xbb10('0x41'))[_0xbb10('0x3e')]('u.fullname')[_0xbb10('0x3e')](_0xbb10('0x42'))[_0xbb10('0x43')](_0xbb10('0x44'),'ui')[_0xbb10('0x45')](_0xbb10('0x46'),'u',_0xbb10('0x47'));var _0x3efa96=squel[_0xbb10('0x48')]()[_0xbb10('0x43')](_0xbb10('0x49'),'i')[_0xbb10('0x45')]('cm_contacts','c',_0xbb10('0x4a'))[_0xbb10('0x45')]('users','o',_0xbb10('0x4b'))[_0xbb10('0x45')](_0xbb10('0x4c'),'a',_0xbb10('0x4d'))[_0xbb10('0x45')](_0xbb10('0x4e'),'me',_0xbb10('0x4f'))['left_join']('mail_interaction_has_tags','it',_0xbb10('0x50'))[_0xbb10('0x45')](_0xbb10('0x40'),'t','t.id\x20=\x20it.TagId');var _0x5f0c12=squel[_0xbb10('0x51')]();var _0x34cf4e=[];var _0x1bd054=squel[_0xbb10('0x51')]();var _0x10159b;if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]){_0x10159b=as[_0xbb10('0x53')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]);var _0x550111=_0x10159b['sqlOperator'];for(var _0x412e13=0x0;_0x412e13<_0x10159b[_0xbb10('0x54')][_0xbb10('0x55')];_0x412e13++){var _0xb014b0=_0x10159b[_0xbb10('0x54')][_0x412e13];var _0x440f9e='i';var _0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),_0xb014b0[_0xbb10('0x3e')]]);if(!_0x358e7e){switch(_0xb014b0[_0xbb10('0x3e')]){case _0xbb10('0x57'):if(_0xb014b0[_0xbb10('0x58')]==0x1){_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0[_0xbb10('0x3e')]+'`\x20=\x200');}else{_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0['field']+_0xbb10('0x5a'));}break;case _0xbb10('0x5b'):if(_0xb014b0[_0xbb10('0x5c')]===_0xbb10('0x5d')){if(_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')]('\x20')[_0xbb10('0x55')]>0x1){_0x5f0c12[_0x550111](_0xbb10('0x5e'),qs[_0xbb10('0x5f')](_0xb014b0[_0xbb10('0x58')]),null);}else{var _0x44a056='%'+_0xb014b0[_0xbb10('0x58')]+'%';_0x5f0c12[_0x550111](_0xbb10('0x60'),_0x44a056,_0x44a056,_0x44a056);}}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'ContactId']);_0xb014b0[_0xbb10('0x3e')]=_0xbb10('0x61');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')]['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);}break;case _0xbb10('0x65'):var _0x14fed3=_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')](',')[_0xbb10('0x30')](function(_0x12ec18){return Number(_0x12ec18);});_0x14fed3[_0xbb10('0x27')](function(_0x40c4fb){_0x1bd054['or'](_0xbb10('0x66'),'%,'+_0x40c4fb+',%');});_0x34cf4e=_[_0xbb10('0x67')](_0x34cf4e,_0x14fed3);break;case _0xbb10('0x68'):if(_0xb014b0['operator']==='$substring'){_0x5f0c12[_0x550111](_0xbb10('0x69'),'%'+_0xb014b0[_0xbb10('0x58')]+'%',null);}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'UserId']);_0xb014b0['field']=_0xbb10('0x6a');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}break;case _0xbb10('0x2d'):_0x155dc5=as[_0xbb10('0x62')]('me',null,_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5['value']['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);break;}}else{var _0x155dc5=as['buildExpression'](_0x440f9e,_0x358e7e['type'],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}}}else{var _0xa1bbd9=_(_0x188cbd[_0xbb10('0x34')])['keys']()['map'](function(_0x27d7b9){return _[_0xbb10('0x6c')](_0x150107,[_0xbb10('0x21'),_0x27d7b9])?_0x27d7b9:undefined;})[_0xbb10('0x6d')]()['value']();if(!_[_0xbb10('0x6e')](_0xa1bbd9)){_0xa1bbd9[_0xbb10('0x27')](function(_0xa7179d){if(_0xa7179d==='MailAccountId'){_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),[][_0xbb10('0x70')](_0x188cbd['query'][_0xa7179d]));}else if(_0xa7179d===_0xbb10('0x71')){var _0x31e85e=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])['$gte'];var _0x251417=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])[_0xbb10('0x73')];_0x3efa96['where'](_0xbb10('0x74'),_0x31e85e,_0x251417);}else{if(_0x188cbd[_0xbb10('0x34')][_0xa7179d]===_0xbb10('0x75')){_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x76'));}else{_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x77'),_0x188cbd['query'][_0xa7179d]);}}});}if(_0x188cbd['query']['read']){if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x78')]==0x1){_0x3efa96[_0xbb10('0x59')]('`unreadMessages`\x20=\x200');}else{_0x3efa96['having'](_0xbb10('0x79'));}}if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]){_0x34cf4e=_[_0xbb10('0x7b')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')])?_0x188cbd['query'][_0xbb10('0x7a')]:new Array(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]);_0x34cf4e[_0xbb10('0x27')](function(_0x2aaaa6){_0x1bd054['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2aaaa6+',%');});}if(_0x188cbd['query']['filter']){var _0x329da7=_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7c')][_0xbb10('0x7d')]('\x5c','\x5c\x5c')[_0xbb10('0x7d')](/'/g,'\x27\x27');if(qs[_0xbb10('0x7e')](_0x329da7)){_0x5f0c12['or']('i.id\x20LIKE\x20?',_0x329da7+'%');}else if(qs[_0xbb10('0x7f')](_0x329da7)){_0x5f0c12['or']('c.email\x20LIKE\x20?',_0x329da7+'%');}else{_0x5f0c12['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x329da7))['or'](_0xbb10('0x80'),qs[_0xbb10('0x5f')](_0x329da7));}}}_0x3efa96[_0xbb10('0x3d')](_0x5f0c12);_0x3efa96[_0xbb10('0x81')]('i.id');var _0x122d38={'type':db['Sequelize']['QueryTypes'][_0xbb10('0x82')],'raw':!![]};var _0xfe3db0=_0x3efa96[_0xbb10('0x83')]();_0xfe3db0[_0xbb10('0x3e')](_0xbb10('0x84'));_0xfe3db0['field'](_0xbb10('0x85'),_0xbb10('0x57'));if(_0x3c8d7d[_0xbb10('0x3b')]){_0x3c8d7d[_0xbb10('0x3b')][_0xbb10('0x27')](function(_0x27f42f){var _0x174395=_0x27f42f[0x0]==='contactName'?_0x27f42f[0x0]:'i.'+_0x27f42f[0x0];_0x3efa96[_0xbb10('0x3b')](_0x174395,_0x27f42f[0x1]===_0xbb10('0x86')?![]:!![]);});}if(!_[_0xbb10('0x6e')](_0x34cf4e)){_0x3efa96[_0xbb10('0x59')](_0x1bd054);_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x87'),_0x34cf4e);}BPromise[_0xbb10('0x88')]()[_0xbb10('0x1e')](function(){if(!_0x10159b){if(_0x188cbd['query'][_0xbb10('0x89')])return;_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8a'));_0x3efa96['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x188cbd['user'][_0xbb10('0x8b')]!=='agent')return;return _0x188cbd['user'][_0xbb10('0x8c')]({'attributes':['id'],'raw':!![]})[_0xbb10('0x1e')](function(_0x33ff06){if(_[_0xbb10('0x6e')](_0x33ff06)){_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8d'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x8d'));}else{_0xfe3db0[_0xbb10('0x3d')]('i.MailAccountId\x20IN\x20?',_[_0xbb10('0x30')](_0x33ff06,'id'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),_[_0xbb10('0x30')](_0x33ff06,'id'));}});})['then'](function(){if(_0x188cbd['user'][_0xbb10('0x8b')]===_0xbb10('0x8e')&&!_0x10159b&&!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x89')])return[];return db['sequelize'][_0xbb10('0x34')](_0xfe3db0[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0xf7b3e1){_0x2b5352[_0xbb10('0x19')]=_0xf7b3e1['length'];if(_0x2b5352['count']===0x0)return[];return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x403beb[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x256b35){_0x23dc18=_[_0xbb10('0x91')](_0x256b35,'id');_0x122d38=_['merge'](_0x122d38,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x38')]){_0x3c8d7d[_0xbb10('0x39')]['forEach'](function(_0x32d5a5){_0x3efa96[_0xbb10('0x3e')]('i.'+_0x32d5a5);});}else{_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x85'),_0xbb10('0x57'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x92'),_0xbb10('0x93'));_0x3efa96[_0xbb10('0x3e')]('a.mandatoryDisposition',_0xbb10('0x94'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x95'),_0xbb10('0x96'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x84'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x97'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x98'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x99'));_0x3efa96['field']('i.closedAt');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9a'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9b'));_0x3efa96[_0xbb10('0x3e')]('i.lastMsgDirection');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9c'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9d'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9e'));_0x3efa96['field'](_0xbb10('0x9f'));_0x3efa96[_0xbb10('0x3e')]('i.substatus');_0x3efa96[_0xbb10('0x3e')]('i.to');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa0'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa1'));_0x3efa96[_0xbb10('0x3e')]('i.UserId');_0x3efa96[_0xbb10('0x3e')]('c.firstName',_0xbb10('0xa2'));_0x3efa96[_0xbb10('0x3e')]('c.lastName','Contact.lastName');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa3'),_0xbb10('0xa4'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa5'),_0xbb10('0xa6'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa7'),_0xbb10('0xa8'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa9'),'Contact.fax');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xaa'),_0xbb10('0xab'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xac'),_0xbb10('0xad'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xae'),_0xbb10('0x24'));}if(_0x3c8d7d[_0xbb10('0x18')])_0x3efa96[_0xbb10('0x18')](_0x3c8d7d[_0xbb10('0x18')]);if(_0x3c8d7d['offset'])_0x3efa96[_0xbb10('0x16')](_0x3c8d7d['offset']);return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x3efa96[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0x38d369){if(_0x38d369['length']>0x0)_0x180933[_0xbb10('0x3d')](_0xbb10('0xaf'),_[_0xbb10('0x30')](_0x38d369,'id'));return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x180933[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x4bd470){var _0x5cc9d7=_[_0xbb10('0xb0')](_0x4bd470,_0xbb10('0xb1'));var _0x57d5a1=[];return db[_0xbb10('0xb2')][_0xbb10('0xb3')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xbb10('0x1e')](function(_0xaede56){var _0x5642c3=_0xaede56[_0xbb10('0xb4')];_0x38d369['forEach'](function(_0x34cec7){_0x57d5a1[_0xbb10('0x28')](updateMailInteraction(_0x34cec7,_0x23dc18,_0x5cc9d7,_0x5642c3));});return BPromise['all'](_0x57d5a1);});});});})[_0xbb10('0x1e')](function(_0x28cc74){_0x2b5352['rows']=_0x28cc74;return _0x2b5352;})['then'](respondWithFilteredResult(_0x10202c,_0x3c8d7d))[_0xbb10('0x2e')](handleError(_0x10202c,null));};exports[_0xbb10('0xb5')]=function(_0x3e0e34,_0x3299bc){var _0x3ceb77={'raw':![],'where':{'id':_0x3e0e34[_0xbb10('0xb6')]['id']}},_0x4c3bdc={};_0x4c3bdc[_0xbb10('0x33')]=_[_0xbb10('0x35')](db['MailInteraction'][_0xbb10('0xb7')]);_0x4c3bdc[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x3e0e34[_0xbb10('0x34')]);_0x4c3bdc[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x4c3bdc[_0xbb10('0x33')],_0x4c3bdc[_0xbb10('0x34')]);_0x3ceb77[_0xbb10('0x39')]=_['intersection'](_0x4c3bdc['model'],qs[_0xbb10('0x38')](_0x3e0e34[_0xbb10('0x34')][_0xbb10('0x38')]));_0x3ceb77[_0xbb10('0x39')]=_0x3ceb77[_0xbb10('0x39')][_0xbb10('0x55')]?_0x3ceb77[_0xbb10('0x39')]:_0x4c3bdc[_0xbb10('0x33')];if(_0x3e0e34[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x3ceb77[_0xbb10('0xb9')]=[{'all':!![]}];}_0x3ceb77=_[_0xbb10('0xba')]({},_0x3ceb77,_0x3e0e34[_0xbb10('0xbb')]);return db['MailInteraction'][_0xbb10('0x56')](_0x3ceb77)[_0xbb10('0x1e')](handleEntityNotFound(_0x3299bc,null))[_0xbb10('0x1e')](respondWithResult(_0x3299bc,null))[_0xbb10('0x2e')](handleError(_0x3299bc,null));};exports[_0xbb10('0xbc')]=function(_0xd9284e,_0x4258fc){return db[_0xbb10('0x31')][_0xbb10('0xbc')](_0xd9284e[_0xbb10('0xbd')],{})[_0xbb10('0x1e')](respondWithResult(_0x4258fc,0xc9))['catch'](handleError(_0x4258fc,null));};exports[_0xbb10('0x1c')]=function(_0x5e1ac5,_0x3faaca){if(_0x5e1ac5[_0xbb10('0xbd')]['id']){delete _0x5e1ac5[_0xbb10('0xbd')]['id'];}return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x5e1ac5[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x3faaca,null))[_0xbb10('0x1e')](saveUpdates(_0x5e1ac5['body'],null))[_0xbb10('0x1e')](respondWithResult(_0x3faaca,null))[_0xbb10('0x2e')](handleError(_0x3faaca,null));};exports[_0xbb10('0x1d')]=function(_0x576bb6,_0x2b652c){return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x576bb6[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x2b652c,null))[_0xbb10('0x1e')](removeEntity(_0x2b652c,null))[_0xbb10('0x2e')](handleError(_0x2b652c,null));};exports[_0xbb10('0xbe')]=function(_0x589565,_0x3696b3){return db['MailInteraction'][_0xbb10('0xbe')]()[_0xbb10('0x1e')](respondWithResult(_0x3696b3,null))[_0xbb10('0x2e')](handleError(_0x3696b3,null));};exports[_0xbb10('0xbf')]=function(_0x44c229,_0x40271f){return db[_0xbb10('0x29')]['find']({'where':{'id':_0x44c229[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x40271f,null))['then'](function(_0x1513e0){if(_0x1513e0){return _0x1513e0[_0xbb10('0xbf')](_0x44c229[_0xbb10('0xbd')][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x44c229[_0xbb10('0xbd')],['ids','id'])||{});}})[_0xbb10('0x1e')](respondWithResult(_0x40271f,null))[_0xbb10('0x2e')](handleError(_0x40271f,null));};exports[_0xbb10('0xc2')]=function(_0xb1b7c8,_0x136520){var _0x28127c={'raw':![],'where':{}};var _0x528aff={};var _0xdfdc42={'count':0x0,'rows':[]};return db[_0xbb10('0x31')][_0xbb10('0xb3')]({'where':{'id':_0xb1b7c8[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x136520,null))[_0xbb10('0x1e')](function(_0x2764e1){if(_0x2764e1){_0x528aff['model']=_[_0xbb10('0x35')](db['MailMessage'][_0xbb10('0xb7')]);_0x528aff['query']=_['keys'](_0xb1b7c8[_0xbb10('0x34')]);_0x528aff[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x528aff[_0xbb10('0x33')],_0x528aff[_0xbb10('0x34')]);_0x28127c['attributes']=_[_0xbb10('0x37')](_0x528aff['model'],qs['fields'](_0xb1b7c8['query'][_0xbb10('0x38')]));_0x28127c[_0xbb10('0x39')]=_0x28127c[_0xbb10('0x39')][_0xbb10('0x55')]?_0x28127c[_0xbb10('0x39')]:_0x528aff['model'];if(!_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3a')](_0xbb10('0xc3'))){_0x28127c[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x18')]);_0x28127c['offset']=qs['offset'](_0xb1b7c8['query'][_0xbb10('0x16')]);}_0x28127c[_0xbb10('0x3b')]=qs[_0xbb10('0x3c')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x28127c[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_[_0xbb10('0xc4')](_0xb1b7c8[_0xbb10('0x34')],_0x528aff[_0xbb10('0x36')]));_0x28127c['where']['MailInteractionId']=_0x2764e1['id'];if(_0xb1b7c8['query'][_0xbb10('0x7c')]){_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c['where'],{'$or':_[_0xbb10('0x30')](_0x28127c[_0xbb10('0x39')],function(_0x2c638d){var _0x290280={};_0x290280[_0x2c638d]={'$like':'%'+_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x7c')]+'%'};return _0x290280;})});}if(_0xb1b7c8['query']['$gte']){var _0x356660=_0xb1b7c8['query'][_0xbb10('0xc5')][_0xbb10('0x26')](',');var _0x152ca9={};_0x152ca9[_0x356660[0x0]]={'$gte':moment(_0x356660[0x1])[_0xbb10('0xc6')](_0xbb10('0xc7'))};_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c[_0xbb10('0x3d')],_0x152ca9);}_0x28127c=_[_0xbb10('0xba')]({},_0x28127c,_0xb1b7c8[_0xbb10('0xbb')]);return db['MailMessage'][_0xbb10('0x19')]({'where':_0x28127c['where']})[_0xbb10('0x1e')](function(_0x5547fa){_0xdfdc42[_0xbb10('0x19')]=_0x5547fa;if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x28127c[_0xbb10('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0xbb10('0xc8')](_0x28127c);})['then'](function(_0xfe1154){if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xc9')]==='true'){for(var _0x298167=0x0;_0x298167<_0xfe1154[_0xbb10('0x55')];_0x298167++){_0xfe1154[_0x298167][_0xbb10('0xbd')]=juice(_0xfe1154[_0x298167][_0xbb10('0xbd')]);}}_0xdfdc42[_0xbb10('0xca')]=_0xfe1154;return _0xdfdc42;});}})[_0xbb10('0x1e')](respondWithFilteredResult(_0x136520,_0x28127c))['catch'](handleError(_0x136520,null));};exports['addTags']=function(_0x522a88,_0x26a752){return db['MailInteraction'][_0xbb10('0x56')]({'where':{'id':_0x522a88['params']['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x26a752,null))[_0xbb10('0x1e')](function(_0x385ad3){if(_0x385ad3){return _0x385ad3['setTags'](_0x522a88['body'][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x522a88[_0xbb10('0xbd')],['ids','id'])||{})[_0xbb10('0xcb')](function(){return db[_0xbb10('0x65')][_0xbb10('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x522a88['body'][_0xbb10('0xc0')]}});})['then'](function(_0x3dfbcd){socket[_0xbb10('0xcc')](_0xbb10('0xcd'),{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]});return{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]};});}})[_0xbb10('0x1e')](respondWithResult(_0x26a752,null))[_0xbb10('0x2e')](handleError(_0x26a752,null));};exports[_0xbb10('0xce')]=function(_0x2746eb,_0x431792){return db[_0xbb10('0x31')]['find']({'where':{'id':_0x2746eb[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x431792,null))['then'](function(_0x14ef50){if(_0x14ef50){return _0x14ef50['removeTags'](_0x2746eb['query'][_0xbb10('0xc0')]);}})[_0xbb10('0x1e')](respondWithStatusCode(_0x431792,null))[_0xbb10('0x2e')](handleError(_0x431792,null));};exports[_0xbb10('0xcf')]=function(_0x99c4,_0x4ca4ce){var _0x161171=moment()[_0xbb10('0xd0')]()['toString']();var _0xa45726=path[_0xbb10('0xd1')](config['root'],_0xbb10('0xd2'),'files',_0xbb10('0xd3'));var _0x8e8049=path[_0xbb10('0xd1')](config[_0xbb10('0xd4')],_0xbb10('0xd2'),_0xbb10('0xd5'),_0xbb10('0xd6'));var _0x56f902=path[_0xbb10('0xd1')](_0xa45726,_0x161171);var _0x4720a1=util[_0xbb10('0xc6')](_0xbb10('0xd7'),_0x99c4[_0xbb10('0xb6')]['id'],_0x161171);var _0x1301e3=path['join'](_0xa45726,_0x4720a1);var _0x550301=[];if(_0x99c4['query'][_0xbb10('0xd6')]){_0x550301[_0xbb10('0x28')]({'model':db[_0xbb10('0xd8')],'as':_0xbb10('0xd9'),'raw':!![]});}var _0x57700b=[{'model':db[_0xbb10('0x29')],'as':_0xbb10('0xda'),'attributes':['id',_0xbb10('0xbd'),'from','to','cc','bcc',_0xbb10('0xdb'),'createdAt'],'where':{'secret':![]},'order':qs[_0xbb10('0x3c')]('id'),'include':_0x550301}];return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x99c4[_0xbb10('0xb6')]['id']},'include':_0x57700b})[_0xbb10('0x1e')](handleEntityNotFound(_0x4ca4ce,null))[_0xbb10('0x1e')](function(_0x1fe250){if(_0x1fe250&&_0x1fe250['Messages']){var _0x424371=_0x1fe250[_0xbb10('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x56f902);return BPromise[_0xbb10('0xdd')](_0x424371[_0xbb10('0xda')],function(_0x32f261,_0x5b11a2){var _0x4b490a={'from':_0x32f261['from'],'to':_0x32f261['to'],'subject':_0x32f261[_0xbb10('0xdb')],'html':_0x32f261[_0xbb10('0xbd')],'headers':{'Date':moment(_0x32f261['createdAt'])[_0xbb10('0xc6')](_0xbb10('0xde'))},'attachments':[]};if(_0x32f261['cc']){_0x4b490a[_0xbb10('0xdf')]['Cc']=_0x32f261['cc'];}if(_0x32f261[_0xbb10('0xe0')]){_0x4b490a[_0xbb10('0xdf')][_0xbb10('0xe1')]=_0x32f261[_0xbb10('0xe0')];}return new BPromise(function(_0x48f0eb,_0x304603){if(_0x32f261['Attachments']){for(var _0x5a7c4e=0x0;_0x5a7c4e<_0x32f261['Attachments'][_0xbb10('0x55')];_0x5a7c4e++){var _0x572d73=_0x32f261['Attachments'][_0x5a7c4e];var _0x1f09f1=path['join'](_0x8e8049,_0x572d73[_0xbb10('0xe2')]);if(fs[_0xbb10('0xe3')](_0x1f09f1)){_0x4b490a[_0xbb10('0xd6')]['push']({'name':_0x572d73['name'],'contentType':_0x572d73[_0xbb10('0x63')],'data':fs['readFileSync'](_0x1f09f1)});}}}emlformat[_0xbb10('0xe4')](_0x4b490a,function(_0x211172,_0x589ecb){if(_0x211172)return _0x304603(_0x211172);fs['writeFileSync'](path[_0xbb10('0xd1')](_0x56f902,util[_0xbb10('0xc6')](_0xbb10('0xe5'),_0x5b11a2)),_0x589ecb);return _0x48f0eb(_0x589ecb);});});})['then'](function(){return new BPromise(function(_0x4f4aa8,_0x426a4f){zipdir(_0x56f902,{'saveTo':_0x1301e3},function(_0x22f153,_0x4d47cc){if(_0x22f153)return _0x426a4f(_0x22f153);return _0x4f4aa8(_0x4d47cc);});})[_0xbb10('0x1e')](function(){return new BPromise(function(_0x203e5a,_0xe88e90){rimraf(_0x56f902,function(_0x4845b5){if(_0x4845b5)_0xe88e90(_0x4845b5);return _0x203e5a();});});})[_0xbb10('0x1e')](function(){return _0x4ca4ce[_0xbb10('0xcf')](_0x1301e3,_0x4720a1,function(_0x166f4f){if(!_0x166f4f)fs[_0xbb10('0xe6')](_0x1301e3);});});});}else{return _0x4ca4ce[_0xbb10('0x12')](0xc8);}})[_0xbb10('0x2e')](handleError(_0x4ca4ce,null));};
\ No newline at end of file
+var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$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','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','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','isArray','tag','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','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x1de98c,_0x288537){var _0x163794=function(_0x9f870c){while(--_0x9f870c){_0x1de98c['push'](_0x1de98c['shift']());}};_0x163794(++_0x288537);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['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','contactName');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
index dafc907..ecc5fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1974=['unreadMessages','length','emit','catch','exports','MailInteraction','MailMessage','setMaxListeners','update','remove','getUsers','then','setDataValue','findAll'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1974,0x1d3));var _0x4197=function(_0x3609ce,_0x1741c5){_0x3609ce=_0x3609ce-0x0;var _0x2c383a=_0x1974[_0x3609ce];return _0x2c383a;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0x4197('0x0')];var MailMessage=require('../../mysqldb')['db'][_0x4197('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x4197('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4197('0x3'),'afterDestroy':_0x4197('0x4')};function emitEvent(_0x28ca14){return function(_0x444225,_0x3671c6,_0x43687d){_0x444225[_0x4197('0x5')]({'attributes':['id'],'raw':!![]})[_0x4197('0x6')](function(_0x365e15){_0x444225[_0x4197('0x7')]('Users',_0x365e15['map'](function(_0x39cd6f){return{'id':_0x39cd6f['id']};}));return MailMessage[_0x4197('0x8')]({'where':{'MailInteractionId':_0x444225['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4197('0x6')](function(_0x26eefb){_0x444225[_0x4197('0x7')](_0x4197('0x9'),_0x26eefb[_0x4197('0xa')]);MailInteractionEvents['emit'](_0x28ca14+':'+_0x444225['id'],_0x444225);MailInteractionEvents[_0x4197('0xb')](_0x28ca14,_0x444225);_0x43687d(null);})[_0x4197('0xc')](_0x43687d(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x4197('0xd')]=MailInteractionEvents;
\ No newline at end of file
+var _0x23cd=['remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hook','events','../../mysqldb','MailMessage','setMaxListeners','save'];(function(_0x5740cd,_0x170333){var _0x22994d=function(_0x4364a1){while(--_0x4364a1){_0x5740cd['push'](_0x5740cd['shift']());}};_0x22994d(++_0x170333);}(_0x23cd,0x11b));var _0xd23c=function(_0x547167,_0x2fcb6e){_0x547167=_0x547167-0x0;var _0x53df17=_0x23cd[_0x547167];return _0x53df17;};'use strict';var EventEmitter=require(_0xd23c('0x0'));var MailInteraction=require(_0xd23c('0x1'))['db']['MailInteraction'];var MailMessage=require(_0xd23c('0x1'))['db'][_0xd23c('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xd23c('0x3')](0x0);var events={'afterCreate':_0xd23c('0x4'),'afterUpdate':'update','afterDestroy':_0xd23c('0x5')};function emitEvent(_0x1f42c9){return function(_0x3dfbe4,_0x3489bc,_0x18b971){_0x3dfbe4[_0xd23c('0x6')]({'attributes':['id'],'raw':!![]})[_0xd23c('0x7')](function(_0x45b84c){_0x3dfbe4[_0xd23c('0x8')]('Users',_0x45b84c[_0xd23c('0x9')](function(_0x4536b3){return{'id':_0x4536b3['id']};}));return MailMessage[_0xd23c('0xa')]({'where':{'MailInteractionId':_0x3dfbe4['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd23c('0x7')](function(_0x20fe3f){_0x3dfbe4[_0xd23c('0x8')](_0xd23c('0xb'),_0x20fe3f[_0xd23c('0xc')]);MailInteractionEvents['emit'](_0x1f42c9+':'+_0x3dfbe4['id'],_0x3dfbe4);MailInteractionEvents[_0xd23c('0xd')](_0x1f42c9,_0x3dfbe4);_0x18b971(null);})[_0xd23c('0xe')](_0x18b971(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0xd23c('0xf')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 353ee2c..d2ca041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a7=['api','moment','bluebird','path','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','models','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x2f982e,_0x36b665){var _0x12cf04=function(_0x1e87df){while(--_0x1e87df){_0x2f982e['push'](_0x2f982e['shift']());}};_0x12cf04(++_0x36b665);}(_0xf7a7,0x89));var _0x7f7a=function(_0x2c6587,_0x53a72d){_0x2c6587=_0x2c6587-0x0;var _0x556216=_0xf7a7[_0x2c6587];return _0x556216;};'use strict';var _=require(_0x7f7a('0x0'));var util=require(_0x7f7a('0x1'));var logger=require(_0x7f7a('0x2'))(_0x7f7a('0x3'));var moment=require(_0x7f7a('0x4'));var BPromise=require(_0x7f7a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f7a('0x6'));var rimraf=require('rimraf');var config=require(_0x7f7a('0x7'));var attributes=require(_0x7f7a('0x8'));module[_0x7f7a('0x9')]=function(_0x3fa11d,_0x30a40f){return _0x3fa11d[_0x7f7a('0xa')]('MailInteraction',attributes,{'tableName':_0x7f7a('0xb'),'paranoid':![],'indexes':[{'name':_0x7f7a('0xc'),'fields':[_0x7f7a('0xd'),'to'],'type':_0x7f7a('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4882bb,_0x27aa44,_0x19333d){if(_0x4882bb[_0x7f7a('0xf')]){_0x4882bb[_0x7f7a('0x10')]=moment()['format'](_0x7f7a('0x11'));}if(_0x4882bb[_0x7f7a('0x12')]){_0x4882bb[_0x7f7a('0x13')]=moment()[_0x7f7a('0x14')]('YYYY-MM-DD\x20HH:mm:ss');}_0x19333d(null,_0x27aa44);},'beforeUpdate':function(_0xe21c63,_0x37494c,_0x137e9a){if(_0xe21c63[_0x7f7a('0x15')]('substatus')){_0xe21c63[_0x7f7a('0x10')]=_0xe21c63[_0x7f7a('0xf')]?moment()[_0x7f7a('0x14')](_0x7f7a('0x11')):null;}if(_0xe21c63[_0x7f7a('0x15')]('closed')){_0xe21c63[_0x7f7a('0x13')]=moment()[_0x7f7a('0x14')](_0x7f7a('0x11'));_0xe21c63[_0x7f7a('0xf')]=null;_0xe21c63[_0x7f7a('0x10')]=null;}_0x137e9a(null,_0xe21c63);},'afterUpdate':function(_0x27b8cf,_0x55c1f8,_0x5e1a09){var _0x574233=_0x3fa11d[_0x7f7a('0x16')];var _0x527828=_0x27b8cf['get']({'plain':!![]});if(_0x527828[_0x7f7a('0x12')]){return _0x574233['MailMessage'][_0x7f7a('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x527828['id']}})[_0x7f7a('0x18')](function(){_0x5e1a09();})[_0x7f7a('0x19')](function(_0x6a4a72){_0x5e1a09(_0x6a4a72);});}else{_0x5e1a09();}}},'charset':_0x7f7a('0x1a'),'collate':_0x7f7a('0x1b')});};
\ No newline at end of file
+var _0xfcd5=['./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','changed','closedAt','get','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x1fb47b,_0x137599){var _0x672f84=function(_0x2fae88){while(--_0x2fae88){_0x1fb47b['push'](_0x1fb47b['shift']());}};_0x672f84(++_0x137599);}(_0xfcd5,0x1ab));var _0x5fcd=function(_0x4099ee,_0x38495a){_0x4099ee=_0x4099ee-0x0;var _0x1b7bfc=_0xfcd5[_0x4099ee];return _0x1b7bfc;};'use strict';var _=require(_0x5fcd('0x0'));var util=require('util');var logger=require(_0x5fcd('0x1'))(_0x5fcd('0x2'));var moment=require(_0x5fcd('0x3'));var BPromise=require(_0x5fcd('0x4'));var rp=require(_0x5fcd('0x5'));var fs=require('fs');var path=require(_0x5fcd('0x6'));var rimraf=require('rimraf');var config=require(_0x5fcd('0x7'));var attributes=require(_0x5fcd('0x8'));module[_0x5fcd('0x9')]=function(_0x203f67,_0x2a0d3d){return _0x203f67[_0x5fcd('0xa')](_0x5fcd('0xb'),attributes,{'tableName':_0x5fcd('0xc'),'paranoid':![],'indexes':[{'name':_0x5fcd('0xd'),'fields':['subject','to'],'type':_0x5fcd('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2ad62f,_0x27daa9,_0x1a4786){if(_0x2ad62f[_0x5fcd('0xf')]){_0x2ad62f[_0x5fcd('0x10')]=moment()[_0x5fcd('0x11')](_0x5fcd('0x12'));}if(_0x2ad62f[_0x5fcd('0x13')]){_0x2ad62f['closedAt']=moment()[_0x5fcd('0x11')](_0x5fcd('0x12'));}_0x1a4786(null,_0x27daa9);},'beforeUpdate':function(_0x3189cb,_0x122212,_0x44bb9f){if(_0x3189cb[_0x5fcd('0x14')](_0x5fcd('0xf'))){_0x3189cb[_0x5fcd('0x10')]=_0x3189cb['substatus']?moment()['format'](_0x5fcd('0x12')):null;}if(_0x3189cb[_0x5fcd('0x14')](_0x5fcd('0x13'))){_0x3189cb[_0x5fcd('0x15')]=moment()[_0x5fcd('0x11')](_0x5fcd('0x12'));_0x3189cb[_0x5fcd('0xf')]=null;_0x3189cb[_0x5fcd('0x10')]=null;}_0x44bb9f(null,_0x3189cb);},'afterUpdate':function(_0x574acb,_0x1506ea,_0x5aae55){var _0x5f199b=_0x203f67['models'];var _0x4cd9d4=_0x574acb[_0x5fcd('0x16')]({'plain':!![]});if(_0x4cd9d4[_0x5fcd('0x13')]){return _0x5f199b[_0x5fcd('0x17')][_0x5fcd('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x4cd9d4['id']}})[_0x5fcd('0x19')](function(){_0x5aae55();})[_0x5fcd('0x1a')](function(_0x523882){_0x5aae55(_0x523882);});}else{_0x5aae55();}}},'charset':_0x5fcd('0x1b'),'collate':_0x5fcd('0x1c')});};
\ No newline at end of file
index d222689..a285ef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b6e=['MailInteraction','update','options','raw','where','attributes','limit','then','debug','stringify','AddTagsToMailInteraction','addTags','body','ids','omit','AddTags','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis','./mailInteraction.socket','register','request','info','MailInteraction,\x20%s,\x20%s','request\x20sent','error','message','catch'];(function(_0x39f7c6,_0x3e1616){var _0x51f856=function(_0x566a48){while(--_0x566a48){_0x39f7c6['push'](_0x39f7c6['shift']());}};_0x51f856(++_0x3e1616);}(_0x3b6e,0xfe));var _0xe3b6=function(_0x9f754c,_0x407338){_0x9f754c=_0x9f754c-0x0;var _0x7e6761=_0x3b6e[_0x9f754c];return _0x7e6761;};'use strict';var _=require(_0xe3b6('0x0'));var util=require(_0xe3b6('0x1'));var moment=require('moment');var BPromise=require(_0xe3b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe3b6('0x3'))['db'];var utils=require(_0xe3b6('0x4'));var logger=require('../../config/logger')(_0xe3b6('0x5'));var config=require(_0xe3b6('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe3b6('0x7')]['http']({'port':0x232a});config[_0xe3b6('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe3b6('0x8')]));require(_0xe3b6('0x9'))[_0xe3b6('0xa')](socket);function respondWithRpcPromise(_0x2a0ce2,_0x844089,_0x5be6b0){return new BPromise(function(_0x110cc7,_0x20f538){return client[_0xe3b6('0xb')](_0x2a0ce2,_0x5be6b0)['then'](function(_0x36c0d5){logger[_0xe3b6('0xc')](_0xe3b6('0xd'),_0x844089,_0xe3b6('0xe'));logger['debug']('MailInteraction,\x20%s,\x20%s,\x20%s',_0x844089,_0xe3b6('0xe'),JSON['stringify'](_0x36c0d5));if(_0x36c0d5['error']){if(_0x36c0d5[_0xe3b6('0xf')]['code']===0x1f4){logger[_0xe3b6('0xf')](_0xe3b6('0xd'),_0x844089,_0x36c0d5['error']['message']);return _0x20f538(_0x36c0d5[_0xe3b6('0xf')][_0xe3b6('0x10')]);}logger['error'](_0xe3b6('0xd'),_0x844089,_0x36c0d5[_0xe3b6('0xf')]['message']);return _0x110cc7(_0x36c0d5['error'][_0xe3b6('0x10')]);}else{logger[_0xe3b6('0xc')](_0xe3b6('0xd'),_0x844089,_0xe3b6('0xe'));_0x110cc7(_0x36c0d5['result'][_0xe3b6('0x10')]);}})[_0xe3b6('0x11')](function(_0x461f5f){logger['error'](_0xe3b6('0xd'),_0x844089,_0x461f5f);_0x20f538(_0x461f5f);});});}exports['UpdateMailInteraction']=function(_0x514286){var _0x1ce6af=this;return new Promise(function(_0x566e38,_0x4240ef){return db[_0xe3b6('0x12')][_0xe3b6('0x13')](_0x514286['body'],{'raw':_0x514286['options']?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x514286[_0xe3b6('0x14')]?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x16')]||null:null,'attributes':_0x514286[_0xe3b6('0x14')]?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x17')]||null:null,'limit':_0x514286[_0xe3b6('0x14')]?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x18')]||null:null})[_0xe3b6('0x19')](function(_0x264f02){logger[_0xe3b6('0xc')]('UpdateMailInteraction',_0x514286);logger[_0xe3b6('0x1a')]('UpdateMailInteraction',_0x514286,JSON[_0xe3b6('0x1b')](_0x264f02));_0x566e38(_0x264f02);})[_0xe3b6('0x11')](function(_0x332d67){logger[_0xe3b6('0xf')]('UpdateMailInteraction',_0x332d67[_0xe3b6('0x10')],_0x514286);_0x4240ef(_0x1ce6af['error'](0x1f4,_0x332d67[_0xe3b6('0x10')]));});});};exports[_0xe3b6('0x1c')]=function(_0x296f6f){return new Promise(function(_0x1e3286,_0x288b89){return db[_0xe3b6('0x12')]['find']({'where':_0x296f6f[_0xe3b6('0x14')]?_0x296f6f[_0xe3b6('0x14')][_0xe3b6('0x16')]||null:null})[_0xe3b6('0x19')](function(_0x3fc98d){if(_0x3fc98d){return _0x3fc98d[_0xe3b6('0x1d')](_0x296f6f[_0xe3b6('0x1e')][_0xe3b6('0x1f')],_[_0xe3b6('0x20')](_0x296f6f[_0xe3b6('0x1e')],[_0xe3b6('0x1f'),'id'])||{});}})['spread'](function(_0x555df0){logger[_0xe3b6('0xc')](_0xe3b6('0x21'),_0x296f6f);logger['debug'](_0xe3b6('0x21'),_0x296f6f,JSON[_0xe3b6('0x1b')](_0x555df0));_0x1e3286(_0x555df0);})['catch'](function(_0x2ff0b){logger[_0xe3b6('0xf')](_0xe3b6('0x21'),_0x2ff0b[_0xe3b6('0x10')],_0x296f6f);_0x288b89(_this[_0xe3b6('0xf')](0x1f4,_0x2ff0b['message']));});});};
\ No newline at end of file
+var _0xee3b=['./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','attributes','limit','AddTagsToMailInteraction','addTags','ids','omit','AddTags','lodash','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter'];(function(_0x1918a3,_0x1f9a32){var _0x4f36f9=function(_0x5b1435){while(--_0x5b1435){_0x1918a3['push'](_0x1918a3['shift']());}};_0x4f36f9(++_0x1f9a32);}(_0xee3b,0xfd));var _0xbee3=function(_0x2d0e3c,_0x1e2224){_0x2d0e3c=_0x2d0e3c-0x0;var _0x348d2c=_0xee3b[_0x2d0e3c];return _0x348d2c;};'use strict';var _=require(_0xbee3('0x0'));var util=require('util');var moment=require(_0xbee3('0x1'));var BPromise=require(_0xbee3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbee3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xbee3('0x4'))(_0xbee3('0x5'));var config=require(_0xbee3('0x6'));var jayson=require(_0xbee3('0x7'));var client=jayson[_0xbee3('0x8')][_0xbee3('0x9')]({'port':0x232a});config['redis']=_[_0xbee3('0xa')](config[_0xbee3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xbee3('0xc'))(new Redis(config[_0xbee3('0xb')]));require(_0xbee3('0xd'))[_0xbee3('0xe')](socket);function respondWithRpcPromise(_0x234291,_0x12ff04,_0xeb53a6){return new BPromise(function(_0x200ddc,_0x49ed33){return client[_0xbee3('0xf')](_0x234291,_0xeb53a6)[_0xbee3('0x10')](function(_0x9a0667){logger[_0xbee3('0x11')](_0xbee3('0x12'),_0x12ff04,_0xbee3('0x13'));logger[_0xbee3('0x14')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x12ff04,_0xbee3('0x13'),JSON[_0xbee3('0x15')](_0x9a0667));if(_0x9a0667[_0xbee3('0x16')]){if(_0x9a0667[_0xbee3('0x16')]['code']===0x1f4){logger['error'](_0xbee3('0x12'),_0x12ff04,_0x9a0667[_0xbee3('0x16')][_0xbee3('0x17')]);return _0x49ed33(_0x9a0667[_0xbee3('0x16')][_0xbee3('0x17')]);}logger[_0xbee3('0x16')](_0xbee3('0x12'),_0x12ff04,_0x9a0667[_0xbee3('0x16')][_0xbee3('0x17')]);return _0x200ddc(_0x9a0667[_0xbee3('0x16')]['message']);}else{logger[_0xbee3('0x11')](_0xbee3('0x12'),_0x12ff04,_0xbee3('0x13'));_0x200ddc(_0x9a0667[_0xbee3('0x18')][_0xbee3('0x17')]);}})[_0xbee3('0x19')](function(_0x2a33e5){logger[_0xbee3('0x16')](_0xbee3('0x12'),_0x12ff04,_0x2a33e5);_0x49ed33(_0x2a33e5);});});}exports[_0xbee3('0x1a')]=function(_0x48e47a){var _0x5ce9f2=this;return new Promise(function(_0x5c7eed,_0x47da15){return db[_0xbee3('0x1b')][_0xbee3('0x1c')](_0x48e47a[_0xbee3('0x1d')],{'raw':_0x48e47a[_0xbee3('0x1e')]?_0x48e47a['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48e47a[_0xbee3('0x1e')]?_0x48e47a[_0xbee3('0x1e')]['where']||null:null,'attributes':_0x48e47a[_0xbee3('0x1e')]?_0x48e47a[_0xbee3('0x1e')][_0xbee3('0x1f')]||null:null,'limit':_0x48e47a[_0xbee3('0x1e')]?_0x48e47a['options'][_0xbee3('0x20')]||null:null})[_0xbee3('0x10')](function(_0x550f8c){logger[_0xbee3('0x11')](_0xbee3('0x1a'),_0x48e47a);logger['debug'](_0xbee3('0x1a'),_0x48e47a,JSON[_0xbee3('0x15')](_0x550f8c));_0x5c7eed(_0x550f8c);})[_0xbee3('0x19')](function(_0x498376){logger[_0xbee3('0x16')](_0xbee3('0x1a'),_0x498376[_0xbee3('0x17')],_0x48e47a);_0x47da15(_0x5ce9f2['error'](0x1f4,_0x498376[_0xbee3('0x17')]));});});};exports[_0xbee3('0x21')]=function(_0x115034){return new Promise(function(_0x43d679,_0x11d0c5){return db['MailInteraction']['find']({'where':_0x115034[_0xbee3('0x1e')]?_0x115034[_0xbee3('0x1e')]['where']||null:null})[_0xbee3('0x10')](function(_0x4e0a1f){if(_0x4e0a1f){return _0x4e0a1f[_0xbee3('0x22')](_0x115034[_0xbee3('0x1d')][_0xbee3('0x23')],_[_0xbee3('0x24')](_0x115034[_0xbee3('0x1d')],[_0xbee3('0x23'),'id'])||{});}})['spread'](function(_0x232908){logger[_0xbee3('0x11')](_0xbee3('0x25'),_0x115034);logger[_0xbee3('0x14')](_0xbee3('0x25'),_0x115034,JSON[_0xbee3('0x15')](_0x232908));_0x43d679(_0x232908);})[_0xbee3('0x19')](function(_0xdb4517){logger[_0xbee3('0x16')](_0xbee3('0x25'),_0xdb4517['message'],_0x115034);_0x11d0c5(_this[_0xbee3('0x16')](0x1f4,_0xdb4517[_0xbee3('0x17')]));});});};
\ No newline at end of file
index 8a0c872..d4294a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3409=['register','length','mailInteraction:','./mailInteraction.events','save','remove','emit'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x3409,0x1e6));var _0x9340=function(_0x2ec5f3,_0x478354){_0x2ec5f3=_0x2ec5f3-0x0;var _0x11cc00=_0x3409[_0x2ec5f3];return _0x11cc00;};'use strict';var MailInteractionEvents=require(_0x9340('0x0'));var events=[_0x9340('0x1'),_0x9340('0x2'),'update'];function createListener(_0x2e279c,_0x295f08){return function(_0x4e1e48){_0x295f08[_0x9340('0x3')](_0x2e279c,_0x4e1e48);};}function removeListener(_0x556f7d,_0x19acc5){return function(){MailInteractionEvents['removeListener'](_0x556f7d,_0x19acc5);};}exports[_0x9340('0x4')]=function(_0xedc124){for(var _0x974a99=0x0,_0x82d727=events[_0x9340('0x5')];_0x974a99<_0x82d727;_0x974a99++){var _0x3b7244=events[_0x974a99];var _0x1d926f=createListener(_0x9340('0x6')+_0x3b7244,_0xedc124);MailInteractionEvents['on'](_0x3b7244,_0x1d926f);}};
\ No newline at end of file
+var _0xdeab=['emit','register','length','mailInteraction:','./mailInteraction.events','remove','update'];(function(_0x1940b6,_0x40bf25){var _0x4f6faa=function(_0x4b479d){while(--_0x4b479d){_0x1940b6['push'](_0x1940b6['shift']());}};_0x4f6faa(++_0x40bf25);}(_0xdeab,0xeb));var _0xbdea=function(_0x43dbc8,_0x2d26bc){_0x43dbc8=_0x43dbc8-0x0;var _0x56b6ad=_0xdeab[_0x43dbc8];return _0x56b6ad;};'use strict';var MailInteractionEvents=require(_0xbdea('0x0'));var events=['save',_0xbdea('0x1'),_0xbdea('0x2')];function createListener(_0x5348c5,_0x3242ba){return function(_0x56892a){_0x3242ba[_0xbdea('0x3')](_0x5348c5,_0x56892a);};}function removeListener(_0x28f704,_0xc90305){return function(){MailInteractionEvents['removeListener'](_0x28f704,_0xc90305);};}exports[_0xbdea('0x4')]=function(_0x466c8a){for(var _0x426052=0x0,_0x55f8cc=events[_0xbdea('0x5')];_0x426052<_0x55f8cc;_0x426052++){var _0x49a234=events[_0x426052];var _0x35bbd7=createListener(_0xbdea('0x6')+_0x49a234,_0x466c8a);MailInteractionEvents['on'](_0x49a234,_0x35bbd7);}};
\ No newline at end of file
index 4c504c6..1e89fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9000=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','index','/describe','isAuthenticated','describe','show','/:id/download','download','tracked','mail','mailmessage:create','create','put','/:id','update','accept','/:id/reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x9000,0x19e));var _0x0900=function(_0x114bf1,_0x16ac4a){_0x114bf1=_0x114bf1-0x0;var _0x58072f=_0x9000[_0x114bf1];return _0x58072f;};'use strict';var multer=require(_0x0900('0x0'));var util=require(_0x0900('0x1'));var path=require('path');var timeout=require(_0x0900('0x2'));var express=require(_0x0900('0x3'));var router=express[_0x0900('0x4')]();var fs_extra=require(_0x0900('0x5'));var auth=require(_0x0900('0x6'));var interaction=require(_0x0900('0x7'));var config=require(_0x0900('0x8'));var controller=require(_0x0900('0x9'));router[_0x0900('0xa')]('/',auth['isAuthenticated'](),controller[_0x0900('0xb')]);router['get'](_0x0900('0xc'),auth[_0x0900('0xd')](),controller[_0x0900('0xe')]);router['get']('/:id',auth[_0x0900('0xd')](),controller[_0x0900('0xf')]);router[_0x0900('0xa')](_0x0900('0x10'),auth[_0x0900('0xd')](),controller[_0x0900('0x11')]);router['post']('/',auth[_0x0900('0xd')](),interaction[_0x0900('0x12')](_0x0900('0x13'),_0x0900('0x14')),controller[_0x0900('0x15')]);router[_0x0900('0x16')](_0x0900('0x17'),auth[_0x0900('0xd')](),controller[_0x0900('0x18')]);router[_0x0900('0x16')]('/:id/accept',auth[_0x0900('0xd')](),controller[_0x0900('0x19')]);router['put'](_0x0900('0x1a'),auth[_0x0900('0xd')](),controller['reject']);router[_0x0900('0x1b')]('/:id',auth[_0x0900('0xd')](),controller[_0x0900('0x1c')]);module[_0x0900('0x1d')]=router;
\ No newline at end of file
+var _0x2d93=['/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','create','update','put','/:id/accept','accept'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d93,0xf3));var _0x32d9=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0x2d93[_0xd39959];return _0x1ff69c;};'use strict';var multer=require(_0x32d9('0x0'));var util=require(_0x32d9('0x1'));var path=require(_0x32d9('0x2'));var timeout=require(_0x32d9('0x3'));var express=require(_0x32d9('0x4'));var router=express[_0x32d9('0x5')]();var fs_extra=require(_0x32d9('0x6'));var auth=require(_0x32d9('0x7'));var interaction=require(_0x32d9('0x8'));var config=require(_0x32d9('0x9'));var controller=require(_0x32d9('0xa'));router[_0x32d9('0xb')]('/',auth[_0x32d9('0xc')](),controller[_0x32d9('0xd')]);router['get'](_0x32d9('0xe'),auth[_0x32d9('0xc')](),controller[_0x32d9('0xf')]);router[_0x32d9('0xb')](_0x32d9('0x10'),auth['isAuthenticated'](),controller[_0x32d9('0x11')]);router[_0x32d9('0xb')](_0x32d9('0x12'),auth[_0x32d9('0xc')](),controller[_0x32d9('0x13')]);router[_0x32d9('0x14')]('/',auth[_0x32d9('0xc')](),interaction[_0x32d9('0x15')](_0x32d9('0x16'),_0x32d9('0x17')),controller[_0x32d9('0x18')]);router['put']('/:id',auth[_0x32d9('0xc')](),controller[_0x32d9('0x19')]);router[_0x32d9('0x1a')](_0x32d9('0x1b'),auth[_0x32d9('0xc')](),controller[_0x32d9('0x1c')]);router[_0x32d9('0x1a')](_0x32d9('0x1d'),auth[_0x32d9('0xc')](),controller[_0x32d9('0x1e')]);router[_0x32d9('0x1f')](_0x32d9('0x10'),auth['isAuthenticated'](),controller[_0x32d9('0x20')]);module[_0x32d9('0x21')]=router;
\ No newline at end of file
index 720f976..38de341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2baa=['sequelize','lodash','exports','TEXT','long','BOOLEAN','ENUM','out','STRING','INTEGER','DATE','Email','Chat'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x2baa,0xdd));var _0xa2ba=function(_0x3daa1e,_0x8909be){_0x3daa1e=_0x3daa1e-0x0;var _0xe85332=_0x2baa[_0x3daa1e];return _0xe85332;};'use strict';var Sequelize=require(_0xa2ba('0x0'));var _=require(_0xa2ba('0x1'));module[_0xa2ba('0x2')]={'body':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xa2ba('0x3')]('medium')},'read':{'type':Sequelize[_0xa2ba('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa2ba('0x6')]('in',_0xa2ba('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xa2ba('0x8')](0x1fe)},'from':{'type':Sequelize[_0xa2ba('0x8')]},'to':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'cc':{'type':Sequelize['TEXT'](_0xa2ba('0x4'))},'bcc':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'subject':{'type':Sequelize[_0xa2ba('0x3')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0xa2ba('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xa2ba('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xa2ba('0xa')]},'originTo':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'originCc':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'originChannel':{'type':Sequelize[_0xa2ba('0x6')](_0xa2ba('0xb'),_0xa2ba('0xc')),'defaultValue':_0xa2ba('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x1318=['BOOLEAN','Email','Chat','lodash','long','TEXT','medium','ENUM','out','STRING','DATE','INTEGER'];(function(_0x56f416,_0x2a7bde){var _0x2484d1=function(_0x3055c6){while(--_0x3055c6){_0x56f416['push'](_0x56f416['shift']());}};_0x2484d1(++_0x2a7bde);}(_0x1318,0x87));var _0x8131=function(_0x418fc5,_0x4f39fc){_0x418fc5=_0x418fc5-0x0;var _0x15f809=_0x1318[_0x418fc5];return _0x15f809;};'use strict';var Sequelize=require('sequelize');var _=require(_0x8131('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x8131('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x8131('0x2')](_0x8131('0x3'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x8131('0x4')]('in','out'),'defaultValue':_0x8131('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8131('0x6')](0x1fe)},'from':{'type':Sequelize[_0x8131('0x6')]},'to':{'type':Sequelize[_0x8131('0x2')](_0x8131('0x1'))},'cc':{'type':Sequelize['TEXT'](_0x8131('0x1'))},'bcc':{'type':Sequelize['TEXT'](_0x8131('0x1'))},'subject':{'type':Sequelize[_0x8131('0x2')]},'sentAt':{'type':Sequelize[_0x8131('0x7')]},'attach':{'type':Sequelize[_0x8131('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x8131('0x9')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x8131('0x2')](_0x8131('0x1'))},'originCc':{'type':Sequelize[_0x8131('0x2')](_0x8131('0x1'))},'originChannel':{'type':Sequelize[_0x8131('0x4')](_0x8131('0xa'),_0x8131('0xb')),'defaultValue':_0x8131('0xa'),'allowNull':![]}};
\ No newline at end of file
index 685193d..8b58b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['params','describe','create','secret','split','MailAccount','MailAccountId','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','isNil','port','secure','authentication','auth','service','user','pass','attachments','join','server/files/attachments','defaults','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','agent','UserId','MailInteraction','MailInteractionId','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','reject','fromString','rejectmessage','unix','toString','root','server','files','tmp','message-%s.eml','from','subject','createdAt','headers','bcc','Bcc','Attachments','basename','existsSync','readFileSync','build','download','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','redis','localhost','socket.io-emitter','register','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','json','undefined','limit','count','offset','Content-Range','update','then','destroy','status','end','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','filters','find','body'];(function(_0x160ef7,_0x376b49){var _0x4580a7=function(_0x5a5b82){while(--_0x5a5b82){_0x160ef7['push'](_0x160ef7['shift']());}};_0x4580a7(++_0x376b49);}(_0xedd9,0xfc));var _0x9edd=function(_0x3cb34f,_0x19c741){_0x3cb34f=_0x3cb34f-0x0;var _0x5e153d=_0xedd9[_0x3cb34f];return _0x5e153d;};'use strict';var emlformat=require('eml-format');var moment=require(_0x9edd('0x0'));var BPromise=require(_0x9edd('0x1'));var util=require(_0x9edd('0x2'));var path=require(_0x9edd('0x3'));var fs=require('fs');var _=require(_0x9edd('0x4'));var Redis=require(_0x9edd('0x5'));var htmlToText=require(_0x9edd('0x6'));var qs=require(_0x9edd('0x7'));var logger=require('../../config/logger')(_0x9edd('0x8'));var interaction_log=require(_0x9edd('0x9'))(_0x9edd('0xa'));var config=require(_0x9edd('0xb'));var db=require('../../mysqldb')['db'];config[_0x9edd('0xc')]=_['defaults'](config[_0x9edd('0xc')],{'host':_0x9edd('0xd'),'port':0x18eb});var socket=require(_0x9edd('0xe'))(new Redis(config[_0x9edd('0xc')]));require('./mailMessage.socket')[_0x9edd('0xf')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9edd('0x10')][_0x9edd('0x11')]({'port':0x232c});var client9003=jayson['client'][_0x9edd('0x11')]({'port':0x232b});var client9002=jayson[_0x9edd('0x10')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30c0d7,_0x1b73d1,_0x25e64c,_0xfd544a){return new BPromise(function(_0x287ddd,_0x3a7b84){var _0xfca576=_0xfd544a||client;return _0xfca576[_0x9edd('0x12')](_0x30c0d7,_0x25e64c)['then'](function(_0x176bfa){logger[_0x9edd('0x13')](_0x9edd('0x14'),_0x1b73d1,_0x9edd('0x15'));logger[_0x9edd('0x16')](_0x9edd('0x17'),_0x1b73d1,_0x9edd('0x15'),JSON[_0x9edd('0x18')](_0x176bfa));if(_0x176bfa['error']){if(_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1a')]===0x1f4){logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x3a7b84(_0x176bfa[_0x9edd('0x19')]['message']);}logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x287ddd(_0x176bfa['error']['message']);}else{logger[_0x9edd('0x13')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x9edd('0x15'));_0x287ddd(_0x176bfa['result']['message']);}})[_0x9edd('0x1c')](function(_0x1c46a8){logger['error']('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x1c46a8);_0x3a7b84(_0x1c46a8);});});}function respondWithResult(_0x341d67,_0x186186){_0x186186=_0x186186||0xc8;return function(_0x477878){if(_0x477878){return _0x341d67['status'](_0x186186)[_0x9edd('0x1d')](_0x477878);}};}function respondWithFilteredResult(_0x1dca43,_0x44a6c1){return function(_0x2ca65f){if(_0x2ca65f){var _0x339a0d=typeof _0x44a6c1['offset']===_0x9edd('0x1e')&&typeof _0x44a6c1[_0x9edd('0x1f')]===_0x9edd('0x1e');var _0x2f9f86=_0x2ca65f[_0x9edd('0x20')];var _0x4d507f=_0x339a0d?0x0:_0x44a6c1['offset'];var _0x3276ee=_0x339a0d?_0x2ca65f[_0x9edd('0x20')]:_0x44a6c1[_0x9edd('0x21')]+_0x44a6c1[_0x9edd('0x1f')];var _0x3c2227;if(_0x3276ee>=_0x2f9f86){_0x3276ee=_0x2f9f86;_0x3c2227=0xc8;}else{_0x3c2227=0xce;}_0x1dca43['status'](_0x3c2227);return _0x1dca43['set'](_0x9edd('0x22'),_0x4d507f+'-'+_0x3276ee+'/'+_0x2f9f86)[_0x9edd('0x1d')](_0x2ca65f);}return null;};}function saveUpdates(_0x1c762c){return function(_0x52746a){if(_0x52746a){return _0x52746a[_0x9edd('0x23')](_0x1c762c)[_0x9edd('0x24')](function(_0x2ae8dd){return _0x2ae8dd;});}return null;};}function removeEntity(_0x41af53){return function(_0x5eccfb){if(_0x5eccfb){return _0x5eccfb[_0x9edd('0x25')]()[_0x9edd('0x24')](function(){_0x41af53[_0x9edd('0x26')](0xcc)[_0x9edd('0x27')]();});}};}function handleEntityNotFound(_0xbbf08f){return function(_0x42e664){if(!_0x42e664){_0xbbf08f[_0x9edd('0x28')](0x194);}return _0x42e664;};}function handleError(_0x1fba7b,_0x19b6c1){_0x19b6c1=_0x19b6c1||0x1f4;return function(_0x1c2e2b){logger[_0x9edd('0x19')](_0x1c2e2b[_0x9edd('0x29')]);if(_0x1c2e2b[_0x9edd('0x2a')]){delete _0x1c2e2b[_0x9edd('0x2a')];}_0x1fba7b[_0x9edd('0x26')](_0x19b6c1)['send'](_0x1c2e2b);};}exports[_0x9edd('0x2b')]=function(_0x259259,_0x267c74){var _0x5d1707={},_0x2d2f88={},_0x3990fb={'count':0x0,'rows':[]};var _0xde9b13=_[_0x9edd('0x2c')](db[_0x9edd('0x2d')][_0x9edd('0x2e')],function(_0x473068){return{'name':_0x473068[_0x9edd('0x2f')],'type':_0x473068[_0x9edd('0x30')][_0x9edd('0x31')]};});_0x2d2f88[_0x9edd('0x32')]=_[_0x9edd('0x2c')](_0xde9b13,_0x9edd('0x2a'));_0x2d2f88[_0x9edd('0x33')]=_['keys'](_0x259259[_0x9edd('0x33')]);_0x2d2f88['filters']=_[_0x9edd('0x34')](_0x2d2f88[_0x9edd('0x32')],_0x2d2f88[_0x9edd('0x33')]);_0x5d1707[_0x9edd('0x35')]=_[_0x9edd('0x34')](_0x2d2f88['model'],qs[_0x9edd('0x36')](_0x259259[_0x9edd('0x33')][_0x9edd('0x36')]));_0x5d1707[_0x9edd('0x35')]=_0x5d1707[_0x9edd('0x35')][_0x9edd('0x37')]?_0x5d1707[_0x9edd('0x35')]:_0x2d2f88[_0x9edd('0x32')];if(!_0x259259[_0x9edd('0x33')][_0x9edd('0x38')]('nolimit')){_0x5d1707[_0x9edd('0x1f')]=qs['limit'](_0x259259[_0x9edd('0x33')]['limit']);_0x5d1707[_0x9edd('0x21')]=qs[_0x9edd('0x21')](_0x259259[_0x9edd('0x33')]['offset']);}_0x5d1707[_0x9edd('0x39')]=qs[_0x9edd('0x3a')](_0x259259[_0x9edd('0x33')]['sort']);_0x5d1707[_0x9edd('0x3b')]=qs['filters'](_[_0x9edd('0x3c')](_0x259259[_0x9edd('0x33')],_0x2d2f88['filters']),_0xde9b13);if(_0x259259[_0x9edd('0x33')][_0x9edd('0x3d')]){_0x5d1707[_0x9edd('0x3b')]=_[_0x9edd('0x3e')](_0x5d1707['where'],{'$or':_[_0x9edd('0x2c')](_0xde9b13,function(_0x5bbdf8){if(_0x5bbdf8[_0x9edd('0x30')]!==_0x9edd('0x3f')){var _0x587d74={};_0x587d74[_0x5bbdf8[_0x9edd('0x2a')]]={'$like':'%'+_0x259259['query']['filter']+'%'};return _0x587d74;}})});}_0x5d1707=_[_0x9edd('0x3e')]({},_0x5d1707,_0x259259[_0x9edd('0x40')]);var _0x1f276b={'where':_0x5d1707[_0x9edd('0x3b')]};return db[_0x9edd('0x2d')][_0x9edd('0x20')](_0x1f276b)[_0x9edd('0x24')](function(_0x75efbe){_0x3990fb[_0x9edd('0x20')]=_0x75efbe;if(_0x259259[_0x9edd('0x33')][_0x9edd('0x41')]){_0x5d1707[_0x9edd('0x42')]=[{'all':!![]}];}return db[_0x9edd('0x2d')][_0x9edd('0x43')](_0x5d1707);})[_0x9edd('0x24')](function(_0x5416f8){_0x3990fb[_0x9edd('0x44')]=_0x5416f8;return _0x3990fb;})[_0x9edd('0x24')](respondWithFilteredResult(_0x267c74,_0x5d1707))[_0x9edd('0x1c')](handleError(_0x267c74,null));};exports[_0x9edd('0x45')]=function(_0x241929,_0x3ecdfd){var _0x10d41e={'raw':!![],'where':{'id':_0x241929['params']['id']}},_0x4e9ad1={};_0x4e9ad1['model']=_[_0x9edd('0x46')](db['MailMessage'][_0x9edd('0x2e')]);_0x4e9ad1[_0x9edd('0x33')]=_[_0x9edd('0x46')](_0x241929[_0x9edd('0x33')]);_0x4e9ad1[_0x9edd('0x47')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],_0x4e9ad1[_0x9edd('0x33')]);_0x10d41e[_0x9edd('0x35')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],qs[_0x9edd('0x36')](_0x241929[_0x9edd('0x33')][_0x9edd('0x36')]));_0x10d41e[_0x9edd('0x35')]=_0x10d41e[_0x9edd('0x35')]['length']?_0x10d41e[_0x9edd('0x35')]:_0x4e9ad1[_0x9edd('0x32')];if(_0x241929['query'][_0x9edd('0x41')]){_0x10d41e[_0x9edd('0x42')]=[{'all':!![]}];}_0x10d41e=_['merge']({},_0x10d41e,_0x241929[_0x9edd('0x40')]);return db[_0x9edd('0x2d')][_0x9edd('0x48')](_0x10d41e)['then'](handleEntityNotFound(_0x3ecdfd,null))[_0x9edd('0x24')](respondWithResult(_0x3ecdfd,null))[_0x9edd('0x1c')](handleError(_0x3ecdfd,null));};exports[_0x9edd('0x23')]=function(_0x28c7bd,_0x53f6e3){if(_0x28c7bd[_0x9edd('0x49')]['id']){delete _0x28c7bd[_0x9edd('0x49')]['id'];}return db[_0x9edd('0x2d')]['find']({'where':{'id':_0x28c7bd[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x53f6e3,null))['then'](saveUpdates(_0x28c7bd[_0x9edd('0x49')],null))['then'](respondWithResult(_0x53f6e3,null))[_0x9edd('0x1c')](handleError(_0x53f6e3,null));};exports[_0x9edd('0x25')]=function(_0x24245f,_0x3fcdf5){return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x24245f[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x3fcdf5,null))[_0x9edd('0x24')](removeEntity(_0x3fcdf5,null))[_0x9edd('0x1c')](handleError(_0x3fcdf5,null));};exports[_0x9edd('0x4b')]=function(_0x5a3b1d,_0x161bea){return db[_0x9edd('0x2d')][_0x9edd('0x4b')]()['then'](respondWithResult(_0x161bea,null))[_0x9edd('0x1c')](handleError(_0x161bea,null));};exports['create']=function(_0x54d83d,_0x54ecfa){return db[_0x9edd('0x2d')][_0x9edd('0x4c')](_0x54d83d[_0x9edd('0x49')])[_0x9edd('0x24')](function(_0x48a900){if(_0x48a900){if(_0x48a900['direction']==='out'&&!_0x48a900[_0x9edd('0x4d')]){var _0x5f666b,_0xd5090a,_0x1091ff;if(_0x54d83d[_0x9edd('0x49')]['to']){_0xd5090a=_0x54d83d[_0x9edd('0x49')]['to'][_0x9edd('0x4e')](',')[0x0];}return db[_0x9edd('0x4f')]['findOne']({'where':{'id':_0x48a900[_0x9edd('0x50')]},'include':[{'model':db['CmList'],'as':_0x9edd('0x51'),'include':[{'model':db[_0x9edd('0x52')],'as':'Contacts','where':{'email':_0xd5090a},'limit':0x1,'order':[[_0x9edd('0x53'),_0x9edd('0x54')]]}]},{'model':db[_0x9edd('0x55')],'as':'Smtp','raw':!![]}]})[_0x9edd('0x24')](function(_0x2e1ce3){_0x5f666b=_0x2e1ce3;if(_0x5f666b&&_0x5f666b[_0x9edd('0x56')]){var _0x15ebfa={'tls':{'rejectUnauthorized':![]}};if(_[_0x9edd('0x57')](_0x5f666b[_0x9edd('0x56')]['service'])){_0x15ebfa['host']=_0x5f666b[_0x9edd('0x56')]['host'];_0x15ebfa[_0x9edd('0x58')]=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x58')];_0x15ebfa[_0x9edd('0x59')]=_0x5f666b['Smtp'][_0x9edd('0x59')];if(_0x5f666b['Smtp'][_0x9edd('0x5a')]){_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b[_0x9edd('0x56')]['user'],'pass':_0x5f666b[_0x9edd('0x56')]['pass']};}}else{_0x15ebfa[_0x9edd('0x5c')]=_0x5f666b[_0x9edd('0x56')]['service'];_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b['Smtp'][_0x9edd('0x5d')],'pass':_0x5f666b[_0x9edd('0x56')][_0x9edd('0x5e')]};_0x15ebfa['secure']=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x59')];}if(_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')]&&_0x54d83d[_0x9edd('0x49')]['attachments']['length']){for(var _0x2e1a96=0x0;_0x2e1a96<_0x54d83d[_0x9edd('0x49')]['attachments']['length'];_0x2e1a96+=0x1){_0x54d83d['body'][_0x9edd('0x5f')][_0x2e1a96]={'filename':_0x54d83d['body']['attachments'][_0x2e1a96][_0x9edd('0x2a')],'path':path[_0x9edd('0x60')](config['root'],_0x9edd('0x61'),_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')][_0x2e1a96]['basename'])};}}_0x1091ff={'account':_0x15ebfa,'message':_0x54d83d[_0x9edd('0x49')]};return;}})['then'](function(){if(_0x5f666b[_0x9edd('0x51')]){if(_0x5f666b[_0x9edd('0x51')]['Contacts'][_0x9edd('0x37')]){return _0x5f666b[_0x9edd('0x51')]['Contacts'][0x0];}else{return db[_0x9edd('0x52')][_0x9edd('0x4c')](_[_0x9edd('0x62')](_0x54d83d[_0x9edd('0x49')],{'firstName':_0x54d83d['body']['to'],'email':_0x54d83d[_0x9edd('0x49')]['to'],'phone':_0x54d83d['body']['to'],'ListId':_0x5f666b[_0x9edd('0x63')]}));}}else{throw new Error(_0x9edd('0x64'));}})[_0x9edd('0x24')](function(){if(_0x1091ff){return respondWithRpcPromise('SendMail',_0x9edd('0x65'),_0x1091ff,client9003)[_0x9edd('0x24')](function(_0x130dba){return _0x48a900[_0x9edd('0x23')]({'read':!![],'messageId':_0x130dba[_0x9edd('0x66')],'sentAt':moment()[_0x9edd('0x67')](_0x9edd('0x68'))});})['catch'](function(_0x5e29d0){logger[_0x9edd('0x19')]('%s',JSON[_0x9edd('0x18')](_0x5e29d0));return _0x48a900;});}return _0x48a900;});}return _0x48a900;}})[_0x9edd('0x24')](respondWithResult(_0x54ecfa,0xc9))[_0x9edd('0x1c')](handleError(_0x54ecfa,null));};exports[_0x9edd('0x69')]=function(_0x52f6f3,_0x2e40c8){var _0x5d56a={'agent':{},'channel':_0x9edd('0x6a')};if(_0x52f6f3['body']['id']){delete _0x52f6f3[_0x9edd('0x49')]['id'];}_0x52f6f3[_0x9edd('0x49')]['read']=!![];_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6b')]=moment()['format'](_0x9edd('0x68'));_0x52f6f3[_0x9edd('0x49')]['UserId']=_0x52f6f3[_0x9edd('0x49')]['UserId']||_0x52f6f3['user']['id'];_0x5d56a[_0x9edd('0x6c')]['id']=_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')];return db['MailMessage'][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x4a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](saveUpdates(_0x52f6f3[_0x9edd('0x49')],null))[_0x9edd('0x24')](function(_0x1ad198){if(_0x1ad198){_0x5d56a['message']=_0x1ad198['get']({'plain':!![]});return db[_0x9edd('0x6e')]['find']({'where':{'id':_0x1ad198[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](function(_0x3cfd35){if(_0x3cfd35){return _0x3cfd35[_0x9edd('0x23')]({'UserId':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'read1stAt':_[_0x9edd('0x57')](_0x3cfd35[_0x9edd('0x70')])?moment()['format'](_0x9edd('0x68')):undefined});}return null;})[_0x9edd('0x24')](function(_0x2c7562){if(_0x2c7562){_0x5d56a[_0x9edd('0x71')]=_0x2c7562[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x73'),_0x52f6f3['user']['id'],_0x52f6f3[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x52f6f3['user'][_0x9edd('0x74')],_0x5d56a[_0x9edd('0x71')]['id'],_0x52f6f3['body']?JSON[_0x9edd('0x18')](_0x52f6f3[_0x9edd('0x49')]):_0x9edd('0x75'));return respondWithRpcPromise('AcceptMessage',_0x9edd('0x76'),_0x5d56a);}return null;})[_0x9edd('0x24')](function(_0x3f04d3){var _0x5a7de3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3f04d3['message']['ContactId'];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x5a7de3,{'type':db[_0x9edd('0x78')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x56d794){return _0x56d794;});})[_0x9edd('0x24')](function(_0x20762d){if(_0x20762d){_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x79')]=_0x20762d[0x0];if(!_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')])return;return db[_0x9edd('0x7a')][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id','name',_0x9edd('0x7b'),_0x9edd('0x7c'),_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x104afc){if(!_0x104afc)return null;_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x104afc;return _0x5d56a;})[_0x9edd('0x24')](function(_0x4a7889){if(_0x4a7889){if(_0x52f6f3['body'][_0x9edd('0x7e')]){_0x5d56a['message'][_0x9edd('0x7f')]=util['format'](_0x9edd('0x80'),_0x52f6f3[_0x9edd('0x5d')]['name']);_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x5d56a['channel'];_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x69');_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText['fromString'](_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]);return respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x84'),'message':_0x5d56a['message']},client9002)['then'](function(){return _0x5d56a;});}return _0x5d56a;}return null;})['then'](respondWithResult(_0x2e40c8,null))['catch'](handleError(_0x2e40c8,null));};exports['reject']=function(_0x2da088,_0x5d566e){var _0x58cb3f={'agent':{},'channel':_0x9edd('0x6a')};if(_0x2da088[_0x9edd('0x49')]['id']){delete _0x2da088[_0x9edd('0x49')]['id'];}_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]=_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]||_0x2da088[_0x9edd('0x5d')]['id'];_0x58cb3f[_0x9edd('0x6c')]['id']=_0x2da088[_0x9edd('0x49')]['UserId'];return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x4a')]['id'],'UserId':null}})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x23e925){if(_0x23e925){_0x58cb3f[_0x9edd('0x1b')]=_0x23e925[_0x9edd('0x72')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x23e925[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x120d0f){if(_0x120d0f){_0x58cb3f[_0x9edd('0x71')]=_0x120d0f[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x85'),_0x2da088[_0x9edd('0x5d')]['id'],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x74')],_0x58cb3f[_0x9edd('0x71')]['id'],_0x2da088['body']?JSON[_0x9edd('0x18')](_0x2da088[_0x9edd('0x49')]):'null');return respondWithRpcPromise(_0x9edd('0x86'),_0x9edd('0x87'),_0x58cb3f);}return null;})[_0x9edd('0x24')](function(_0x2b4d4c){var _0x559503=_0x9edd('0x88')+_0x2b4d4c[_0x9edd('0x1b')][_0x9edd('0x89')];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x559503,{'type':db['Sequelize'][_0x9edd('0x8a')][_0x9edd('0x8b')],'raw':!![]})[_0x9edd('0x24')](function(_0x4633eb){return _0x4633eb;});})[_0x9edd('0x24')](function(_0x59927d){if(_0x59927d){_0x58cb3f['message'][_0x9edd('0x79')]=_0x59927d[0x0];if(!_0x2da088['body'][_0x9edd('0x6d')])return;return db['User'][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id',_0x9edd('0x2a'),_0x9edd('0x7b'),'email',_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x3aae72){if(!_0x3aae72)return null;_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x3aae72;return _0x58cb3f;})[_0x9edd('0x24')](function(_0x2f8fb6){if(_0x2f8fb6){_0x2f8fb6[_0x9edd('0x1b')]['interface']=util[_0x9edd('0x67')](_0x9edd('0x80'),_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')]);_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x58cb3f[_0x9edd('0x81')];_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x8c');_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText[_0x9edd('0x8d')](_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x49')]);respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x8e'),'message':_0x2f8fb6[_0x9edd('0x1b')]},client9002);return _0x58cb3f;}return null;})[_0x9edd('0x24')](respondWithResult(_0x5d566e,null))[_0x9edd('0x1c')](handleError(_0x5d566e,null));};exports['download']=function(_0xa704eb,_0x553018){var _0x4ca7e4=moment()[_0x9edd('0x8f')]()[_0x9edd('0x90')]();var _0x220c00=path[_0x9edd('0x60')](config[_0x9edd('0x91')],_0x9edd('0x92'),_0x9edd('0x93'),_0x9edd('0x94'));var _0x3e5a45=path[_0x9edd('0x60')](config['root'],_0x9edd('0x92'),_0x9edd('0x93'),'attachments');var _0x568067=util[_0x9edd('0x67')](_0x9edd('0x95'),_0x4ca7e4);return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0xa704eb['params']['id']},'attributes':['id','body',_0x9edd('0x96'),'to','cc','bcc',_0x9edd('0x97'),_0x9edd('0x98')],'include':_0xa704eb[_0x9edd('0x33')]['attachments']?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0x9edd('0x24')](handleEntityNotFound(_0x553018,null))[_0x9edd('0x24')](function(_0x7b0fc8){if(_0x7b0fc8){var _0x5bfbfd=_0x7b0fc8;var _0xb2e72={'from':_0x5bfbfd[_0x9edd('0x96')],'to':_0x5bfbfd['to'],'subject':_0x5bfbfd['subject'],'html':_0x5bfbfd[_0x9edd('0x49')],'headers':{'Date':moment(_0x5bfbfd[_0x9edd('0x98')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x7b0fc8['cc']){_0xb2e72[_0x9edd('0x99')]['Cc']=_0x7b0fc8['cc'];}if(_0x7b0fc8[_0x9edd('0x9a')]){_0xb2e72['headers'][_0x9edd('0x9b')]=_0x7b0fc8[_0x9edd('0x9a')];}return new BPromise(function(_0x54c6a0,_0x201d76){if(_0x7b0fc8['Attachments']){for(var _0x308a0f=0x0;_0x308a0f<_0x7b0fc8[_0x9edd('0x9c')][_0x9edd('0x37')];_0x308a0f++){var _0x742e13=_0x7b0fc8[_0x9edd('0x9c')][_0x308a0f];var _0x3e6426=path['join'](_0x3e5a45,_0x742e13[_0x9edd('0x9d')]);if(fs[_0x9edd('0x9e')](_0x3e6426)){_0xb2e72[_0x9edd('0x5f')]['push']({'name':_0x742e13[_0x9edd('0x2a')],'contentType':_0x742e13['type'],'data':fs[_0x9edd('0x9f')](_0x3e6426)});}}}emlformat[_0x9edd('0xa0')](_0xb2e72,function(_0x25da04,_0x41b0ea){if(_0x25da04)return _0x201d76(_0x25da04);fs['writeFileSync'](path['join'](_0x220c00,_0x568067),_0x41b0ea);return _0x54c6a0(_0x41b0ea);});});}})['then'](function(_0x12dcfa){if(_0x12dcfa){return _0x553018[_0x9edd('0xa1')](path[_0x9edd('0x60')](_0x220c00,_0x568067),_0x568067,function(_0x50af78){if(!_0x50af78)fs[_0x9edd('0xa2')](path[_0x9edd('0x60')](_0x220c00,_0x568067));});}})[_0x9edd('0x1c')](handleError(_0x553018,null));};
\ No newline at end of file
+var _0x375d=['attachments','join','basename','Contacts','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','read','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','mail','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','email','reject','fromString','rejectmessage','download','unix','toString','server','files','tmp','root','message-%s.eml','from','subject','createdAt','Attachment','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','push','readFileSync','build','writeFileSync','eml-format','moment','bluebird','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','http','client','request','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','end','sendStatus','stack','name','send','index','rawAttributes','fieldName','type','key','map','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','MailMessage','find','body','create','direction','out','secret','MailAccount','findOne','MailAccountId','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','isNil','host','port','secure','auth','user','pass','service'];(function(_0x193a6e,_0x45dd00){var _0x599a9b=function(_0x37a9e2){while(--_0x37a9e2){_0x193a6e['push'](_0x193a6e['shift']());}};_0x599a9b(++_0x45dd00);}(_0x375d,0x193));var _0xd375=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x375d[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xd375('0x0'));var moment=require(_0xd375('0x1'));var BPromise=require(_0xd375('0x2'));var util=require(_0xd375('0x3'));var path=require(_0xd375('0x4'));var fs=require('fs');var _=require(_0xd375('0x5'));var Redis=require('ioredis');var htmlToText=require(_0xd375('0x6'));var qs=require(_0xd375('0x7'));var logger=require('../../config/logger')('api');var interaction_log=require(_0xd375('0x8'))(_0xd375('0x9'));var config=require(_0xd375('0xa'));var db=require('../../mysqldb')['db'];config[_0xd375('0xb')]=_[_0xd375('0xc')](config[_0xd375('0xb')],{'host':_0xd375('0xd'),'port':0x18eb});var socket=require(_0xd375('0xe'))(new Redis(config['redis']));require('./mailMessage.socket')[_0xd375('0xf')](socket);var jayson=require(_0xd375('0x10'));var client=jayson['client'][_0xd375('0x11')]({'port':0x232c});var client9003=jayson[_0xd375('0x12')][_0xd375('0x11')]({'port':0x232b});var client9002=jayson['client'][_0xd375('0x11')]({'port':0x232a});function respondWithRpcPromise(_0x34040b,_0x1b8741,_0x273f48,_0x5c793a){return new BPromise(function(_0x5e134d,_0x21a9e9){var _0x126ea8=_0x5c793a||client;return _0x126ea8[_0xd375('0x13')](_0x34040b,_0x273f48)['then'](function(_0x5448ce){logger[_0xd375('0x14')](_0xd375('0x15'),_0x1b8741,'request\x20sent');logger[_0xd375('0x16')](_0xd375('0x17'),_0x1b8741,_0xd375('0x18'),JSON[_0xd375('0x19')](_0x5448ce));if(_0x5448ce['error']){if(_0x5448ce[_0xd375('0x1a')][_0xd375('0x1b')]===0x1f4){logger[_0xd375('0x1a')](_0xd375('0x15'),_0x1b8741,_0x5448ce[_0xd375('0x1a')][_0xd375('0x1c')]);return _0x21a9e9(_0x5448ce['error'][_0xd375('0x1c')]);}logger[_0xd375('0x1a')]('MailMessage,\x20%s,\x20%s',_0x1b8741,_0x5448ce[_0xd375('0x1a')][_0xd375('0x1c')]);return _0x5e134d(_0x5448ce['error']['message']);}else{logger[_0xd375('0x14')](_0xd375('0x15'),_0x1b8741,_0xd375('0x18'));_0x5e134d(_0x5448ce[_0xd375('0x1d')][_0xd375('0x1c')]);}})[_0xd375('0x1e')](function(_0x3ea75b){logger['error'](_0xd375('0x15'),_0x1b8741,_0x3ea75b);_0x21a9e9(_0x3ea75b);});});}function respondWithResult(_0x3f5826,_0x1feaad){_0x1feaad=_0x1feaad||0xc8;return function(_0x438c92){if(_0x438c92){return _0x3f5826[_0xd375('0x1f')](_0x1feaad)[_0xd375('0x20')](_0x438c92);}};}function respondWithFilteredResult(_0x8f3f74,_0x21eba9){return function(_0x47e012){if(_0x47e012){var _0x383440=typeof _0x21eba9[_0xd375('0x21')]===_0xd375('0x22')&&typeof _0x21eba9[_0xd375('0x23')]==='undefined';var _0x1a7441=_0x47e012[_0xd375('0x24')];var _0x2ad737=_0x383440?0x0:_0x21eba9['offset'];var _0x59a6c3=_0x383440?_0x47e012[_0xd375('0x24')]:_0x21eba9[_0xd375('0x21')]+_0x21eba9[_0xd375('0x23')];var _0x5a6976;if(_0x59a6c3>=_0x1a7441){_0x59a6c3=_0x1a7441;_0x5a6976=0xc8;}else{_0x5a6976=0xce;}_0x8f3f74[_0xd375('0x1f')](_0x5a6976);return _0x8f3f74[_0xd375('0x25')](_0xd375('0x26'),_0x2ad737+'-'+_0x59a6c3+'/'+_0x1a7441)[_0xd375('0x20')](_0x47e012);}return null;};}function saveUpdates(_0x2161fb){return function(_0x2eac35){if(_0x2eac35){return _0x2eac35[_0xd375('0x27')](_0x2161fb)['then'](function(_0x40b072){return _0x40b072;});}return null;};}function removeEntity(_0x14288e){return function(_0x201f6e){if(_0x201f6e){return _0x201f6e[_0xd375('0x28')]()[_0xd375('0x29')](function(){_0x14288e['status'](0xcc)[_0xd375('0x2a')]();});}};}function handleEntityNotFound(_0x5d16de){return function(_0x1b6231){if(!_0x1b6231){_0x5d16de[_0xd375('0x2b')](0x194);}return _0x1b6231;};}function handleError(_0xfec717,_0x2c448b){_0x2c448b=_0x2c448b||0x1f4;return function(_0x310505){logger['error'](_0x310505[_0xd375('0x2c')]);if(_0x310505[_0xd375('0x2d')]){delete _0x310505[_0xd375('0x2d')];}_0xfec717[_0xd375('0x1f')](_0x2c448b)[_0xd375('0x2e')](_0x310505);};}exports[_0xd375('0x2f')]=function(_0x1cf587,_0x5d6a87){var _0x108a2b={},_0x1952cc={},_0x562d14={'count':0x0,'rows':[]};var _0x446414=_['map'](db['MailMessage'][_0xd375('0x30')],function(_0x5d16a9){return{'name':_0x5d16a9[_0xd375('0x31')],'type':_0x5d16a9[_0xd375('0x32')][_0xd375('0x33')]};});_0x1952cc['model']=_[_0xd375('0x34')](_0x446414,_0xd375('0x2d'));_0x1952cc['query']=_[_0xd375('0x35')](_0x1cf587[_0xd375('0x36')]);_0x1952cc[_0xd375('0x37')]=_['intersection'](_0x1952cc[_0xd375('0x38')],_0x1952cc[_0xd375('0x36')]);_0x108a2b[_0xd375('0x39')]=_[_0xd375('0x3a')](_0x1952cc[_0xd375('0x38')],qs[_0xd375('0x3b')](_0x1cf587[_0xd375('0x36')][_0xd375('0x3b')]));_0x108a2b[_0xd375('0x39')]=_0x108a2b[_0xd375('0x39')][_0xd375('0x3c')]?_0x108a2b[_0xd375('0x39')]:_0x1952cc[_0xd375('0x38')];if(!_0x1cf587[_0xd375('0x36')][_0xd375('0x3d')]('nolimit')){_0x108a2b[_0xd375('0x23')]=qs[_0xd375('0x23')](_0x1cf587['query'][_0xd375('0x23')]);_0x108a2b['offset']=qs['offset'](_0x1cf587[_0xd375('0x36')]['offset']);}_0x108a2b['order']=qs['sort'](_0x1cf587[_0xd375('0x36')][_0xd375('0x3e')]);_0x108a2b[_0xd375('0x3f')]=qs[_0xd375('0x37')](_[_0xd375('0x40')](_0x1cf587['query'],_0x1952cc[_0xd375('0x37')]),_0x446414);if(_0x1cf587[_0xd375('0x36')][_0xd375('0x41')]){_0x108a2b['where']=_[_0xd375('0x42')](_0x108a2b['where'],{'$or':_[_0xd375('0x34')](_0x446414,function(_0x4ba560){if(_0x4ba560[_0xd375('0x32')]!==_0xd375('0x43')){var _0x529ee6={};_0x529ee6[_0x4ba560['name']]={'$like':'%'+_0x1cf587[_0xd375('0x36')][_0xd375('0x41')]+'%'};return _0x529ee6;}})});}_0x108a2b=_[_0xd375('0x42')]({},_0x108a2b,_0x1cf587[_0xd375('0x44')]);var _0x36e2d8={'where':_0x108a2b['where']};return db['MailMessage'][_0xd375('0x24')](_0x36e2d8)['then'](function(_0x51c1b6){_0x562d14[_0xd375('0x24')]=_0x51c1b6;if(_0x1cf587[_0xd375('0x36')][_0xd375('0x45')]){_0x108a2b[_0xd375('0x46')]=[{'all':!![]}];}return db['MailMessage'][_0xd375('0x47')](_0x108a2b);})['then'](function(_0x5afb85){_0x562d14[_0xd375('0x48')]=_0x5afb85;return _0x562d14;})[_0xd375('0x29')](respondWithFilteredResult(_0x5d6a87,_0x108a2b))[_0xd375('0x1e')](handleError(_0x5d6a87,null));};exports['show']=function(_0x552363,_0x2503ec){var _0x1baa4b={'raw':!![],'where':{'id':_0x552363[_0xd375('0x49')]['id']}},_0x1bbd70={};_0x1bbd70[_0xd375('0x38')]=_[_0xd375('0x35')](db['MailMessage'][_0xd375('0x30')]);_0x1bbd70[_0xd375('0x36')]=_[_0xd375('0x35')](_0x552363[_0xd375('0x36')]);_0x1bbd70[_0xd375('0x37')]=_['intersection'](_0x1bbd70[_0xd375('0x38')],_0x1bbd70['query']);_0x1baa4b[_0xd375('0x39')]=_['intersection'](_0x1bbd70[_0xd375('0x38')],qs[_0xd375('0x3b')](_0x552363[_0xd375('0x36')]['fields']));_0x1baa4b[_0xd375('0x39')]=_0x1baa4b[_0xd375('0x39')][_0xd375('0x3c')]?_0x1baa4b[_0xd375('0x39')]:_0x1bbd70[_0xd375('0x38')];if(_0x552363['query']['includeAll']){_0x1baa4b[_0xd375('0x46')]=[{'all':!![]}];}_0x1baa4b=_[_0xd375('0x42')]({},_0x1baa4b,_0x552363[_0xd375('0x44')]);return db[_0xd375('0x4a')][_0xd375('0x4b')](_0x1baa4b)['then'](handleEntityNotFound(_0x2503ec,null))[_0xd375('0x29')](respondWithResult(_0x2503ec,null))[_0xd375('0x1e')](handleError(_0x2503ec,null));};exports['update']=function(_0x49bc58,_0x4891e8){if(_0x49bc58['body']['id']){delete _0x49bc58[_0xd375('0x4c')]['id'];}return db[_0xd375('0x4a')][_0xd375('0x4b')]({'where':{'id':_0x49bc58[_0xd375('0x49')]['id']}})[_0xd375('0x29')](handleEntityNotFound(_0x4891e8,null))[_0xd375('0x29')](saveUpdates(_0x49bc58[_0xd375('0x4c')],null))[_0xd375('0x29')](respondWithResult(_0x4891e8,null))[_0xd375('0x1e')](handleError(_0x4891e8,null));};exports[_0xd375('0x28')]=function(_0x318d16,_0x5361af){return db[_0xd375('0x4a')][_0xd375('0x4b')]({'where':{'id':_0x318d16[_0xd375('0x49')]['id']}})[_0xd375('0x29')](handleEntityNotFound(_0x5361af,null))[_0xd375('0x29')](removeEntity(_0x5361af,null))[_0xd375('0x1e')](handleError(_0x5361af,null));};exports['describe']=function(_0x1c8934,_0x1189fd){return db[_0xd375('0x4a')]['describe']()[_0xd375('0x29')](respondWithResult(_0x1189fd,null))[_0xd375('0x1e')](handleError(_0x1189fd,null));};exports[_0xd375('0x4d')]=function(_0x54777d,_0x45e0bc){return db['MailMessage'][_0xd375('0x4d')](_0x54777d[_0xd375('0x4c')])[_0xd375('0x29')](function(_0x1a53db){if(_0x1a53db){if(_0x1a53db[_0xd375('0x4e')]===_0xd375('0x4f')&&!_0x1a53db[_0xd375('0x50')]){var _0x3f3483,_0x37bea9,_0x4bf2e2;if(_0x54777d[_0xd375('0x4c')]['to']){_0x37bea9=_0x54777d['body']['to']['split'](',')[0x0];}return db[_0xd375('0x51')][_0xd375('0x52')]({'where':{'id':_0x1a53db[_0xd375('0x53')]},'include':[{'model':db['CmList'],'as':_0xd375('0x54'),'include':[{'model':db[_0xd375('0x55')],'as':'Contacts','where':{'email':_0x37bea9},'limit':0x1,'order':[[_0xd375('0x56'),_0xd375('0x57')]]}]},{'model':db[_0xd375('0x58')],'as':_0xd375('0x59'),'raw':!![]}]})[_0xd375('0x29')](function(_0x5461bc){_0x3f3483=_0x5461bc;if(_0x3f3483&&_0x3f3483['Smtp']){var _0x147fc3={'tls':{'rejectUnauthorized':![]}};if(_[_0xd375('0x5a')](_0x3f3483[_0xd375('0x59')]['service'])){_0x147fc3[_0xd375('0x5b')]=_0x3f3483['Smtp']['host'];_0x147fc3[_0xd375('0x5c')]=_0x3f3483[_0xd375('0x59')][_0xd375('0x5c')];_0x147fc3[_0xd375('0x5d')]=_0x3f3483[_0xd375('0x59')][_0xd375('0x5d')];if(_0x3f3483[_0xd375('0x59')]['authentication']){_0x147fc3[_0xd375('0x5e')]={'user':_0x3f3483[_0xd375('0x59')][_0xd375('0x5f')],'pass':_0x3f3483[_0xd375('0x59')][_0xd375('0x60')]};}}else{_0x147fc3[_0xd375('0x61')]=_0x3f3483[_0xd375('0x59')][_0xd375('0x61')];_0x147fc3['auth']={'user':_0x3f3483[_0xd375('0x59')][_0xd375('0x5f')],'pass':_0x3f3483[_0xd375('0x59')][_0xd375('0x60')]};_0x147fc3[_0xd375('0x5d')]=_0x3f3483[_0xd375('0x59')]['secure'];}if(_0x54777d['body'][_0xd375('0x62')]&&_0x54777d['body'][_0xd375('0x62')]['length']){for(var _0x3cf94c=0x0;_0x3cf94c<_0x54777d[_0xd375('0x4c')][_0xd375('0x62')][_0xd375('0x3c')];_0x3cf94c+=0x1){_0x54777d[_0xd375('0x4c')][_0xd375('0x62')][_0x3cf94c]={'filename':_0x54777d[_0xd375('0x4c')][_0xd375('0x62')][_0x3cf94c][_0xd375('0x2d')],'path':path[_0xd375('0x63')](config['root'],'server/files/attachments',_0x54777d[_0xd375('0x4c')]['attachments'][_0x3cf94c][_0xd375('0x64')])};}}_0x4bf2e2={'account':_0x147fc3,'message':_0x54777d[_0xd375('0x4c')]};return;}})[_0xd375('0x29')](function(){if(_0x3f3483[_0xd375('0x54')]){if(_0x3f3483[_0xd375('0x54')][_0xd375('0x65')]['length']){return _0x3f3483[_0xd375('0x54')][_0xd375('0x65')][0x0];}else{return db[_0xd375('0x55')]['create'](_['defaults'](_0x54777d[_0xd375('0x4c')],{'firstName':_0x54777d[_0xd375('0x4c')]['to'],'email':_0x54777d[_0xd375('0x4c')]['to'],'phone':_0x54777d[_0xd375('0x4c')]['to'],'ListId':_0x3f3483[_0xd375('0x66')]}));}}else{throw new Error(_0xd375('0x67'));}})[_0xd375('0x29')](function(){if(_0x4bf2e2){return respondWithRpcPromise('SendMail',_0xd375('0x68'),_0x4bf2e2,client9003)['then'](function(_0x3b59e2){return _0x1a53db['update']({'read':!![],'messageId':_0x3b59e2[_0xd375('0x69')],'sentAt':moment()[_0xd375('0x6a')](_0xd375('0x6b'))});})['catch'](function(_0x105e58){logger[_0xd375('0x1a')]('%s',JSON[_0xd375('0x19')](_0x105e58));return _0x1a53db;});}return _0x1a53db;});}return _0x1a53db;}})['then'](respondWithResult(_0x45e0bc,0xc9))[_0xd375('0x1e')](handleError(_0x45e0bc,null));};exports['accept']=function(_0x3bc039,_0x3bd561){var _0x3589ef={'agent':{},'channel':'mail'};if(_0x3bc039['body']['id']){delete _0x3bc039[_0xd375('0x4c')]['id'];}_0x3bc039[_0xd375('0x4c')][_0xd375('0x6c')]=!![];_0x3bc039['body']['readAt']=moment()[_0xd375('0x6a')]('YYYY-MM-DD\x20HH:mm:ss');_0x3bc039[_0xd375('0x4c')][_0xd375('0x6d')]=_0x3bc039[_0xd375('0x4c')][_0xd375('0x6d')]||_0x3bc039['user']['id'];_0x3589ef[_0xd375('0x6e')]['id']=_0x3bc039[_0xd375('0x4c')]['UserId'];return db[_0xd375('0x4a')]['find']({'where':{'id':_0x3bc039['params']['id'],'UserId':null}})[_0xd375('0x29')](handleEntityNotFound(_0x3bd561,null))[_0xd375('0x29')](saveUpdates(_0x3bc039[_0xd375('0x4c')],null))[_0xd375('0x29')](function(_0x5e14b8){if(_0x5e14b8){_0x3589ef[_0xd375('0x1c')]=_0x5e14b8[_0xd375('0x6f')]({'plain':!![]});return db[_0xd375('0x70')][_0xd375('0x4b')]({'where':{'id':_0x5e14b8[_0xd375('0x71')]}});}return null;})['then'](handleEntityNotFound(_0x3bd561,null))[_0xd375('0x29')](function(_0x9bf0ee){if(_0x9bf0ee){return _0x9bf0ee[_0xd375('0x27')]({'UserId':_0x3bc039[_0xd375('0x4c')][_0xd375('0x6d')],'read1stAt':_[_0xd375('0x5a')](_0x9bf0ee[_0xd375('0x72')])?moment()['format'](_0xd375('0x6b')):undefined});}return null;})['then'](function(_0x120ace){if(_0x120ace){_0x3589ef[_0xd375('0x73')]=_0x120ace['get']({'plain':!![]});interaction_log[_0xd375('0x14')](_0xd375('0x74'),_0x3bc039['user']['id'],_0x3bc039[_0xd375('0x5f')][_0xd375('0x2d')],_0x3bc039[_0xd375('0x5f')]['role'],_0x3589ef[_0xd375('0x73')]['id'],_0x3bc039[_0xd375('0x4c')]?JSON[_0xd375('0x19')](_0x3bc039[_0xd375('0x4c')]):_0xd375('0x75'));return respondWithRpcPromise(_0xd375('0x76'),_0xd375('0x77'),_0x3589ef);}return null;})['then'](function(_0x221902){var _0x27ee64=_0xd375('0x78')+_0x221902[_0xd375('0x1c')][_0xd375('0x79')];return db[_0xd375('0x7a')][_0xd375('0x36')](_0x27ee64,{'type':db[_0xd375('0x7b')][_0xd375('0x7c')][_0xd375('0x7d')],'raw':!![]})[_0xd375('0x29')](function(_0x4ba69c){return _0x4ba69c;});})[_0xd375('0x29')](function(_0x397e23){if(_0x397e23){_0x3589ef[_0xd375('0x1c')][_0xd375('0x7e')]=_0x397e23[0x0];if(!_0x3bc039['body'][_0xd375('0x6d')])return;return db[_0xd375('0x7f')][_0xd375('0x4b')]({'where':{'id':_0x3bc039[_0xd375('0x4c')][_0xd375('0x6d')],'role':_0xd375('0x6e')},'attributes':['id','name',_0xd375('0x80'),'email',_0xd375('0x81')],'raw':!![]});}return null;})[_0xd375('0x29')](function(_0x39e5ce){if(!_0x39e5ce)return null;_0x3589ef[_0xd375('0x1c')][_0xd375('0x6e')]=_0x39e5ce;return _0x3589ef;})['then'](function(_0x1a2107){if(_0x1a2107){if(_0x3bc039['body'][_0xd375('0x82')]){_0x3589ef[_0xd375('0x1c')][_0xd375('0x83')]=util[_0xd375('0x6a')](_0xd375('0x84'),_0x3bc039[_0xd375('0x5f')][_0xd375('0x2d')]);_0x3589ef[_0xd375('0x1c')][_0xd375('0x85')]=_0x3589ef['channel'];_0x3589ef[_0xd375('0x1c')][_0xd375('0x86')]=_0x3589ef[_0xd375('0x85')];_0x3589ef[_0xd375('0x1c')][_0xd375('0x87')]=_0xd375('0x88');_0x3589ef[_0xd375('0x1c')]['body']=htmlToText['fromString'](_0x3589ef[_0xd375('0x1c')][_0xd375('0x4c')]);return respondWithRpcPromise(_0xd375('0x89'),_0xd375('0x89'),{'event':_0xd375('0x8a'),'message':_0x3589ef[_0xd375('0x1c')]},client9002)[_0xd375('0x29')](function(){return _0x3589ef;});}return _0x3589ef;}return null;})[_0xd375('0x29')](respondWithResult(_0x3bd561,null))[_0xd375('0x1e')](handleError(_0x3bd561,null));};exports['reject']=function(_0x1626be,_0x14fd8c){var _0x85d862={'agent':{},'channel':_0xd375('0x8b')};if(_0x1626be[_0xd375('0x4c')]['id']){delete _0x1626be[_0xd375('0x4c')]['id'];}_0x1626be[_0xd375('0x4c')][_0xd375('0x6d')]=_0x1626be['body']['UserId']||_0x1626be[_0xd375('0x5f')]['id'];_0x85d862['agent']['id']=_0x1626be[_0xd375('0x4c')][_0xd375('0x6d')];return db[_0xd375('0x4a')]['find']({'where':{'id':_0x1626be[_0xd375('0x49')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x14fd8c,null))[_0xd375('0x29')](function(_0x22fd01){if(_0x22fd01){_0x85d862[_0xd375('0x1c')]=_0x22fd01['get']({'plain':!![]});return db[_0xd375('0x70')][_0xd375('0x4b')]({'where':{'id':_0x22fd01[_0xd375('0x71')]}});}return null;})[_0xd375('0x29')](handleEntityNotFound(_0x14fd8c,null))['then'](function(_0xeeaf0c){if(_0xeeaf0c){_0x85d862[_0xd375('0x73')]=_0xeeaf0c[_0xd375('0x6f')]({'plain':!![]});interaction_log[_0xd375('0x14')](_0xd375('0x8c'),_0x1626be['user']['id'],_0x1626be['user'][_0xd375('0x2d')],_0x1626be[_0xd375('0x5f')]['role'],_0x85d862[_0xd375('0x73')]['id'],_0x1626be[_0xd375('0x4c')]?JSON[_0xd375('0x19')](_0x1626be[_0xd375('0x4c')]):_0xd375('0x75'));return respondWithRpcPromise(_0xd375('0x8d'),'rejectMessage',_0x85d862);}return null;})['then'](function(_0x343a11){var _0x146696=_0xd375('0x78')+_0x343a11[_0xd375('0x1c')][_0xd375('0x79')];return db['sequelize'][_0xd375('0x36')](_0x146696,{'type':db[_0xd375('0x7b')][_0xd375('0x7c')][_0xd375('0x7d')],'raw':!![]})[_0xd375('0x29')](function(_0x3b0a7c){return _0x3b0a7c;});})[_0xd375('0x29')](function(_0x14e9ea){if(_0x14e9ea){_0x85d862[_0xd375('0x1c')][_0xd375('0x7e')]=_0x14e9ea[0x0];if(!_0x1626be['body']['UserId'])return;return db['User'][_0xd375('0x4b')]({'where':{'id':_0x1626be[_0xd375('0x4c')][_0xd375('0x6d')],'role':_0xd375('0x6e')},'attributes':['id',_0xd375('0x2d'),_0xd375('0x80'),_0xd375('0x8e'),'internal'],'raw':!![]});}return null;})[_0xd375('0x29')](function(_0x4d62d3){if(!_0x4d62d3)return null;_0x85d862[_0xd375('0x1c')][_0xd375('0x6e')]=_0x4d62d3;return _0x85d862;})[_0xd375('0x29')](function(_0x3cd28d){if(_0x3cd28d){_0x3cd28d[_0xd375('0x1c')][_0xd375('0x83')]=util[_0xd375('0x6a')]('SIP/%s',_0x1626be[_0xd375('0x5f')]['name']);_0x3cd28d[_0xd375('0x1c')]['channel']=_0x85d862[_0xd375('0x85')];_0x3cd28d[_0xd375('0x1c')][_0xd375('0x86')]=_0x85d862['channel'];_0x3cd28d[_0xd375('0x1c')][_0xd375('0x87')]=_0xd375('0x8f');_0x3cd28d[_0xd375('0x1c')]['body']=htmlToText[_0xd375('0x90')](_0x85d862[_0xd375('0x1c')]['body']);respondWithRpcPromise('EventManager',_0xd375('0x89'),{'event':_0xd375('0x91'),'message':_0x3cd28d[_0xd375('0x1c')]},client9002);return _0x85d862;}return null;})[_0xd375('0x29')](respondWithResult(_0x14fd8c,null))['catch'](handleError(_0x14fd8c,null));};exports[_0xd375('0x92')]=function(_0x33a86a,_0x4093d2){var _0x494214=moment()[_0xd375('0x93')]()[_0xd375('0x94')]();var _0x1cf3b3=path[_0xd375('0x63')](config['root'],_0xd375('0x95'),_0xd375('0x96'),_0xd375('0x97'));var _0x5e3655=path[_0xd375('0x63')](config[_0xd375('0x98')],_0xd375('0x95'),_0xd375('0x96'),'attachments');var _0x341416=util['format'](_0xd375('0x99'),_0x494214);return db[_0xd375('0x4a')]['find']({'where':{'id':_0x33a86a[_0xd375('0x49')]['id']},'attributes':['id',_0xd375('0x4c'),_0xd375('0x9a'),'to','cc','bcc',_0xd375('0x9b'),_0xd375('0x9c')],'include':_0x33a86a[_0xd375('0x36')]['attachments']?[{'model':db[_0xd375('0x9d')],'as':'Attachments'}]:undefined})[_0xd375('0x29')](handleEntityNotFound(_0x4093d2,null))[_0xd375('0x29')](function(_0x3150a2){if(_0x3150a2){var _0x62c8c6=_0x3150a2;var _0x216678={'from':_0x62c8c6['from'],'to':_0x62c8c6['to'],'subject':_0x62c8c6[_0xd375('0x9b')],'html':_0x62c8c6[_0xd375('0x4c')],'headers':{'Date':moment(_0x62c8c6[_0xd375('0x9c')])[_0xd375('0x6a')](_0xd375('0x9e'))},'attachments':[]};if(_0x3150a2['cc']){_0x216678[_0xd375('0x9f')]['Cc']=_0x3150a2['cc'];}if(_0x3150a2['bcc']){_0x216678[_0xd375('0x9f')][_0xd375('0xa0')]=_0x3150a2['bcc'];}return new BPromise(function(_0x3eb77c,_0x2cda9a){if(_0x3150a2[_0xd375('0xa1')]){for(var _0x2a55e7=0x0;_0x2a55e7<_0x3150a2[_0xd375('0xa1')][_0xd375('0x3c')];_0x2a55e7++){var _0x21ac44=_0x3150a2[_0xd375('0xa1')][_0x2a55e7];var _0xbcabda=path[_0xd375('0x63')](_0x5e3655,_0x21ac44[_0xd375('0x64')]);if(fs[_0xd375('0xa2')](_0xbcabda)){_0x216678[_0xd375('0x62')][_0xd375('0xa3')]({'name':_0x21ac44[_0xd375('0x2d')],'contentType':_0x21ac44['type'],'data':fs[_0xd375('0xa4')](_0xbcabda)});}}}emlformat[_0xd375('0xa5')](_0x216678,function(_0x465c26,_0x3bd806){if(_0x465c26)return _0x2cda9a(_0x465c26);fs[_0xd375('0xa6')](path[_0xd375('0x63')](_0x1cf3b3,_0x341416),_0x3bd806);return _0x3eb77c(_0x3bd806);});});}})[_0xd375('0x29')](function(_0x36fee6){if(_0x36fee6){return _0x4093d2[_0xd375('0x92')](path[_0xd375('0x63')](_0x1cf3b3,_0x341416),_0x341416,function(_0x191e32){if(!_0x191e32)fs['unlinkSync'](path[_0xd375('0x63')](_0x1cf3b3,_0x341416));});}})[_0xd375('0x1e')](handleError(_0x4093d2,null));};
\ No newline at end of file
index e9cdecb..e0ce88d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1464=['emit','hasOwnProperty','hook','events','save','update','remove'];(function(_0x4d08a2,_0x4364f0){var _0x19f095=function(_0x223565){while(--_0x223565){_0x4d08a2['push'](_0x4d08a2['shift']());}};_0x19f095(++_0x4364f0);}(_0x1464,0x8f));var _0x4146=function(_0xedad0f,_0xd2a73d){_0xedad0f=_0xedad0f-0x0;var _0x1d657e=_0x1464[_0xedad0f];return _0x1d657e;};'use strict';var EventEmitter=require(_0x4146('0x0'));var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4146('0x1'),'afterUpdate':_0x4146('0x2'),'afterDestroy':_0x4146('0x3')};function emitEvent(_0xf32156){return function(_0x193fa0,_0x114f16,_0x1935b7){MailMessageEvents['emit'](_0xf32156+':'+_0x193fa0['id'],_0x193fa0);MailMessageEvents[_0x4146('0x4')](_0xf32156,_0x193fa0);_0x1935b7(null);};}for(var e in events){if(events[_0x4146('0x5')](e)){var event=events[e];MailMessage[_0x4146('0x6')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
+var _0xa741=['save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xa741,0x76));var _0x1a74=function(_0x4da6d2,_0x811b9a){_0x4da6d2=_0x4da6d2-0x0;var _0x278f55=_0xa741[_0x4da6d2];return _0x278f55;};'use strict';var EventEmitter=require(_0x1a74('0x0'));var MailMessage=require(_0x1a74('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1a74('0x2'),'afterUpdate':_0x1a74('0x3'),'afterDestroy':_0x1a74('0x4')};function emitEvent(_0xf64812){return function(_0x14f8e0,_0x528368,_0x300e25){MailMessageEvents[_0x1a74('0x5')](_0xf64812+':'+_0x14f8e0['id'],_0x14f8e0);MailMessageEvents['emit'](_0xf64812,_0x14f8e0);_0x300e25(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0x1a74('0x6')](e,emitEvent(event));}}module[_0x1a74('0x7')]=MailMessageEvents;
\ No newline at end of file
index a115c30..b7db99b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73bd=['FULLTEXT','body','fromString','models','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','../../config/environment','./mailMessage.attributes','exports','define','messageId','plainBody','subject'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x73bd,0x1aa));var _0xd73b=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x73bd[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xd73b('0x0'));var util=require(_0xd73b('0x1'));var logger=require(_0xd73b('0x2'))(_0xd73b('0x3'));var moment=require(_0xd73b('0x4'));var BPromise=require(_0xd73b('0x5'));var rp=require(_0xd73b('0x6'));var htmlToText=require(_0xd73b('0x7'));var fs=require('fs');var path=require(_0xd73b('0x8'));var rimraf=require('rimraf');var config=require(_0xd73b('0x9'));var attributes=require(_0xd73b('0xa'));module[_0xd73b('0xb')]=function(_0x4a407e,_0x203efa){return _0x4a407e[_0xd73b('0xc')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0xd73b('0xd')]},{'name':'fti_mail_messages','fields':[_0xd73b('0xe'),_0xd73b('0xf')],'type':_0xd73b('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xe4099c,_0x20407f,_0x26c081){if(_0xe4099c[_0xd73b('0x11')]){_0xe4099c[_0xd73b('0xe')]=htmlToText[_0xd73b('0x12')](_0xe4099c[_0xd73b('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x26c081(null,_0x20407f);},'afterCreate':function(_0x419267,_0x2de7aa,_0x6f4563){var _0x4e5f42=_0x4a407e[_0xd73b('0x13')];var _0x19016e=_0x419267[_0xd73b('0x14')]({'plain':!![]});if(_0x19016e[_0xd73b('0x15')][_0xd73b('0x16')]()==='in'||_0x19016e[_0xd73b('0x15')]['toLowerCase']()===_0xd73b('0x17')&&!_0x19016e['secret']&&!_[_0xd73b('0x18')](_0x19016e[_0xd73b('0x19')])){_0x4e5f42[_0xd73b('0x1a')][_0xd73b('0x1b')]({'where':{'id':_0x19016e[_0xd73b('0x1c')]}})[_0xd73b('0x1d')](function(_0x5ab9ed){if(_0x5ab9ed){_0x5ab9ed[_0xd73b('0x1e')]({'lastMsgAt':_0x19016e['createdAt'],'lastMsgDirection':_0x19016e[_0xd73b('0x15')][_0xd73b('0x16')]()});}})['catch'](function(_0x45dd61){console[_0xd73b('0x1f')](_0x45dd61);});}_0x6f4563();}},'charset':_0xd73b('0x20'),'collate':_0xd73b('0x21')});};
\ No newline at end of file
+var _0xfed2=['secret','MailInteractionId','then','createdAt','catch','error','lodash','util','../../config/logger','api','moment','request-promise','html-to-text','path','../../config/environment','exports','define','MailMessage','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase'];(function(_0x175756,_0x4450bc){var _0x3be0a6=function(_0x3fb180){while(--_0x3fb180){_0x175756['push'](_0x175756['shift']());}};_0x3be0a6(++_0x4450bc);}(_0xfed2,0x128));var _0x2fed=function(_0x409720,_0x20b465){_0x409720=_0x409720-0x0;var _0x3dbc3c=_0xfed2[_0x409720];return _0x3dbc3c;};'use strict';var _=require(_0x2fed('0x0'));var util=require(_0x2fed('0x1'));var logger=require(_0x2fed('0x2'))(_0x2fed('0x3'));var moment=require(_0x2fed('0x4'));var BPromise=require('bluebird');var rp=require(_0x2fed('0x5'));var htmlToText=require(_0x2fed('0x6'));var fs=require('fs');var path=require(_0x2fed('0x7'));var rimraf=require('rimraf');var config=require(_0x2fed('0x8'));var attributes=require('./mailMessage.attributes');module[_0x2fed('0x9')]=function(_0x37ca02,_0x47ea1d){return _0x37ca02[_0x2fed('0xa')](_0x2fed('0xb'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x2fed('0xc')]},{'name':_0x2fed('0xd'),'fields':[_0x2fed('0xe'),_0x2fed('0xf')],'type':_0x2fed('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xc5b412,_0x41cf5c,_0x4f7e2c){if(_0xc5b412[_0x2fed('0x11')]){_0xc5b412[_0x2fed('0xe')]=htmlToText[_0x2fed('0x12')](_0xc5b412[_0x2fed('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4f7e2c(null,_0x41cf5c);},'afterCreate':function(_0x2cb29c,_0x1096c7,_0x1313f3){var _0x4b9c93=_0x37ca02[_0x2fed('0x13')];var _0x2a60d6=_0x2cb29c[_0x2fed('0x14')]({'plain':!![]});if(_0x2a60d6[_0x2fed('0x15')][_0x2fed('0x16')]()==='in'||_0x2a60d6[_0x2fed('0x15')][_0x2fed('0x16')]()==='out'&&!_0x2a60d6[_0x2fed('0x17')]&&!_['isNil'](_0x2a60d6['UserId'])){_0x4b9c93['MailInteraction']['findOne']({'where':{'id':_0x2a60d6[_0x2fed('0x18')]}})[_0x2fed('0x19')](function(_0x371b4d){if(_0x371b4d){_0x371b4d['update']({'lastMsgAt':_0x2a60d6[_0x2fed('0x1a')],'lastMsgDirection':_0x2a60d6[_0x2fed('0x15')][_0x2fed('0x16')]()});}})[_0x2fed('0x1b')](function(_0x3d67eb){console[_0x2fed('0x1c')](_0x3d67eb);});}_0x1313f3();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a151d6c..452e2ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ed=['create','options','raw','stringify','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','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','code','error','message','result','catch','CreateMailMessage','MailMessage'];(function(_0x4b3f33,_0x8154e0){var _0x5e8656=function(_0x503015){while(--_0x503015){_0x4b3f33['push'](_0x4b3f33['shift']());}};_0x5e8656(++_0x8154e0);}(_0x80ed,0x11c));var _0xd80e=function(_0x2e6af6,_0xc597c5){_0x2e6af6=_0x2e6af6-0x0;var _0x286db0=_0x80ed[_0x2e6af6];return _0x286db0;};'use strict';var _=require(_0xd80e('0x0'));var util=require('util');var moment=require(_0xd80e('0x1'));var BPromise=require(_0xd80e('0x2'));var rs=require(_0xd80e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd80e('0x4'))['db'];var utils=require(_0xd80e('0x5'));var logger=require(_0xd80e('0x6'))(_0xd80e('0x7'));var config=require('../../config/environment');var jayson=require(_0xd80e('0x8'));var client=jayson[_0xd80e('0x9')][_0xd80e('0xa')]({'port':0x232a});config['redis']=_[_0xd80e('0xb')](config[_0xd80e('0xc')],{'host':_0xd80e('0xd'),'port':0x18eb});var socket=require(_0xd80e('0xe'))(new Redis(config[_0xd80e('0xc')]));require(_0xd80e('0xf'))[_0xd80e('0x10')](socket);function respondWithRpcPromise(_0x2457f5,_0x68625,_0x7f93b4){return new BPromise(function(_0x4eee08,_0x450b44){return client[_0xd80e('0x11')](_0x2457f5,_0x7f93b4)[_0xd80e('0x12')](function(_0x30c9d0){logger[_0xd80e('0x13')](_0xd80e('0x14'),_0x68625,_0xd80e('0x15'));logger[_0xd80e('0x16')](_0xd80e('0x17'),_0x68625,'request\x20sent',JSON['stringify'](_0x30c9d0));if(_0x30c9d0['error']){if(_0x30c9d0['error'][_0xd80e('0x18')]===0x1f4){logger[_0xd80e('0x19')](_0xd80e('0x14'),_0x68625,_0x30c9d0[_0xd80e('0x19')][_0xd80e('0x1a')]);return _0x450b44(_0x30c9d0['error'][_0xd80e('0x1a')]);}logger[_0xd80e('0x19')](_0xd80e('0x14'),_0x68625,_0x30c9d0[_0xd80e('0x19')][_0xd80e('0x1a')]);return _0x4eee08(_0x30c9d0[_0xd80e('0x19')][_0xd80e('0x1a')]);}else{logger[_0xd80e('0x13')]('MailMessage,\x20%s,\x20%s',_0x68625,_0xd80e('0x15'));_0x4eee08(_0x30c9d0[_0xd80e('0x1b')][_0xd80e('0x1a')]);}})[_0xd80e('0x1c')](function(_0x593af6){logger[_0xd80e('0x19')](_0xd80e('0x14'),_0x68625,_0x593af6);_0x450b44(_0x593af6);});});}exports[_0xd80e('0x1d')]=function(_0x527237){var _0x41417d=this;return new Promise(function(_0x2ef8a1,_0x2765ea){return db[_0xd80e('0x1e')][_0xd80e('0x1f')](_0x527237['body'],{'raw':_0x527237['options']?_0x527237[_0xd80e('0x20')][_0xd80e('0x21')]===undefined?!![]:![]:!![]})[_0xd80e('0x12')](function(_0x2d46e7){logger[_0xd80e('0x13')](_0xd80e('0x1d'),_0x527237);logger[_0xd80e('0x16')]('CreateMailMessage',_0x527237,JSON[_0xd80e('0x22')](_0x2d46e7));_0x2ef8a1(_0x2d46e7);})[_0xd80e('0x1c')](function(_0x170109){logger['error'](_0xd80e('0x1d'),_0x170109[_0xd80e('0x1a')],_0x527237);_0x2765ea(_0x41417d[_0xd80e('0x19')](0x1f4,_0x170109['message']));});});};
\ No newline at end of file
+var _0x4cf8=['./mailMessage.socket','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateMailMessage','MailMessage','create','body','options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost'];(function(_0x39c596,_0x36a037){var _0x1f3922=function(_0x2c8955){while(--_0x2c8955){_0x39c596['push'](_0x39c596['shift']());}};_0x1f3922(++_0x36a037);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x45a7a6,_0x380289){_0x45a7a6=_0x45a7a6-0x0;var _0x514f51=_0x4cf8[_0x45a7a6];return _0x514f51;};'use strict';var _=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var moment=require(_0x84cf('0x2'));var BPromise=require(_0x84cf('0x3'));var rs=require(_0x84cf('0x4'));var fs=require('fs');var Redis=require(_0x84cf('0x5'));var db=require(_0x84cf('0x6'))['db'];var utils=require(_0x84cf('0x7'));var logger=require(_0x84cf('0x8'))(_0x84cf('0x9'));var config=require(_0x84cf('0xa'));var jayson=require(_0x84cf('0xb'));var client=jayson['client']['http']({'port':0x232a});config[_0x84cf('0xc')]=_['defaults'](config[_0x84cf('0xc')],{'host':_0x84cf('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x84cf('0xc')]));require(_0x84cf('0xe'))['register'](socket);function respondWithRpcPromise(_0xfb5398,_0x1b223d,_0x390ce9){return new BPromise(function(_0x369ce6,_0x50d667){return client[_0x84cf('0xf')](_0xfb5398,_0x390ce9)[_0x84cf('0x10')](function(_0x4db0a7){logger['info'](_0x84cf('0x11'),_0x1b223d,_0x84cf('0x12'));logger[_0x84cf('0x13')](_0x84cf('0x14'),_0x1b223d,_0x84cf('0x12'),JSON[_0x84cf('0x15')](_0x4db0a7));if(_0x4db0a7[_0x84cf('0x16')]){if(_0x4db0a7[_0x84cf('0x16')][_0x84cf('0x17')]===0x1f4){logger[_0x84cf('0x16')](_0x84cf('0x11'),_0x1b223d,_0x4db0a7[_0x84cf('0x16')][_0x84cf('0x18')]);return _0x50d667(_0x4db0a7[_0x84cf('0x16')][_0x84cf('0x18')]);}logger[_0x84cf('0x16')](_0x84cf('0x11'),_0x1b223d,_0x4db0a7[_0x84cf('0x16')][_0x84cf('0x18')]);return _0x369ce6(_0x4db0a7['error'][_0x84cf('0x18')]);}else{logger[_0x84cf('0x19')](_0x84cf('0x11'),_0x1b223d,_0x84cf('0x12'));_0x369ce6(_0x4db0a7[_0x84cf('0x1a')][_0x84cf('0x18')]);}})[_0x84cf('0x1b')](function(_0x5d5650){logger['error'](_0x84cf('0x11'),_0x1b223d,_0x5d5650);_0x50d667(_0x5d5650);});});}exports[_0x84cf('0x1c')]=function(_0x346b43){var _0x3e65e3=this;return new Promise(function(_0x219afa,_0x5dda3f){return db[_0x84cf('0x1d')][_0x84cf('0x1e')](_0x346b43[_0x84cf('0x1f')],{'raw':_0x346b43[_0x84cf('0x20')]?_0x346b43[_0x84cf('0x20')]['raw']===undefined?!![]:![]:!![]})[_0x84cf('0x10')](function(_0x160f86){logger[_0x84cf('0x19')](_0x84cf('0x1c'),_0x346b43);logger[_0x84cf('0x13')](_0x84cf('0x1c'),_0x346b43,JSON[_0x84cf('0x15')](_0x160f86));_0x219afa(_0x160f86);})['catch'](function(_0x2b2c90){logger[_0x84cf('0x16')](_0x84cf('0x1c'),_0x2b2c90[_0x84cf('0x18')],_0x346b43);_0x5dda3f(_0x3e65e3[_0x84cf('0x16')](0x1f4,_0x2b2c90[_0x84cf('0x18')]));});});};
\ No newline at end of file
index dfad38e..6f02f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa91=['remove','removeListener','length','./mailMessage.events','save'];(function(_0xa220f7,_0x25b950){var _0x2649e0=function(_0x4b744f){while(--_0x4b744f){_0xa220f7['push'](_0xa220f7['shift']());}};_0x2649e0(++_0x25b950);}(_0xaa91,0xd0));var _0x1aa9=function(_0x14fb00,_0x47888f){_0x14fb00=_0x14fb00-0x0;var _0x26bf77=_0xaa91[_0x14fb00];return _0x26bf77;};'use strict';var MailMessageEvents=require(_0x1aa9('0x0'));var events=[_0x1aa9('0x1'),_0x1aa9('0x2'),'update'];function createListener(_0x4bc027,_0x503d49){return function(_0x345907){_0x503d49['emit'](_0x4bc027,_0x345907);};}function removeListener(_0x492cd0,_0x359aa3){return function(){MailMessageEvents[_0x1aa9('0x3')](_0x492cd0,_0x359aa3);};}exports['register']=function(_0x4e4a94){for(var _0x3cdc2f=0x0,_0x1d0585=events[_0x1aa9('0x4')];_0x3cdc2f<_0x1d0585;_0x3cdc2f++){var _0x4df835=events[_0x3cdc2f];var _0x1aebd8=createListener('mailMessage:'+_0x4df835,_0x4e4a94);MailMessageEvents['on'](_0x4df835,_0x1aebd8);}};
\ No newline at end of file
+var _0xb28a=['removeListener','register','length','mailMessage:','save','remove'];(function(_0x1c546c,_0x5c57cb){var _0x2cc384=function(_0x4dee11){while(--_0x4dee11){_0x1c546c['push'](_0x1c546c['shift']());}};_0x2cc384(++_0x5c57cb);}(_0xb28a,0x166));var _0xab28=function(_0x1540fe,_0x7e20aa){_0x1540fe=_0x1540fe-0x0;var _0x4adf4b=_0xb28a[_0x1540fe];return _0x4adf4b;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xab28('0x0'),_0xab28('0x1'),'update'];function createListener(_0x45d26d,_0x4cb73b){return function(_0x5ae2aa){_0x4cb73b['emit'](_0x45d26d,_0x5ae2aa);};}function removeListener(_0x451fc9,_0x1cdc41){return function(){MailMessageEvents[_0xab28('0x2')](_0x451fc9,_0x1cdc41);};}exports[_0xab28('0x3')]=function(_0x133169){for(var _0x128a13=0x0,_0x450e5b=events[_0xab28('0x4')];_0x128a13<_0x450e5b;_0x128a13++){var _0x48949b=events[_0x128a13];var _0x479267=createListener(_0xab28('0x5')+_0x48949b,_0x133169);MailMessageEvents['on'](_0x48949b,_0x479267);}};
\ No newline at end of file
index cd207a7..5b08c13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515c=['/describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','put','delete','destroy','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','./mailQueue.controller','isAuthenticated','index','get'];(function(_0x15182d,_0x1f4cfc){var _0x255b75=function(_0x392b1f){while(--_0x392b1f){_0x15182d['push'](_0x15182d['shift']());}};_0x255b75(++_0x1f4cfc);}(_0x515c,0xac));var _0xc515=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x515c[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0xc515('0x0'));var util=require(_0xc515('0x1'));var path=require('path');var timeout=require(_0xc515('0x2'));var express=require('express');var router=express[_0xc515('0x3')]();var fs_extra=require(_0xc515('0x4'));var auth=require(_0xc515('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc515('0x6'));router['get']('/',auth[_0xc515('0x7')](),controller[_0xc515('0x8')]);router[_0xc515('0x9')](_0xc515('0xa'),auth[_0xc515('0x7')](),controller['describe']);router[_0xc515('0x9')](_0xc515('0xb'),auth[_0xc515('0x7')](),controller[_0xc515('0xc')]);router[_0xc515('0x9')]('/:id/members',auth[_0xc515('0x7')](),controller[_0xc515('0xd')]);router['get'](_0xc515('0xe'),auth[_0xc515('0x7')](),controller[_0xc515('0xf')]);router['get'](_0xc515('0x10'),auth['isAuthenticated'](),controller[_0xc515('0x11')]);router['post']('/',auth[_0xc515('0x7')](),controller[_0xc515('0x12')]);router[_0xc515('0x13')](_0xc515('0xe'),auth[_0xc515('0x7')](),controller[_0xc515('0x14')]);router[_0xc515('0x13')](_0xc515('0x10'),auth[_0xc515('0x7')](),controller['addAgents']);router[_0xc515('0x15')]('/:id',auth[_0xc515('0x7')](),controller['update']);router[_0xc515('0x16')](_0xc515('0xb'),auth[_0xc515('0x7')](),controller[_0xc515('0x17')]);router[_0xc515('0x16')](_0xc515('0xe'),auth[_0xc515('0x7')](),controller['removeTeams']);router[_0xc515('0x16')](_0xc515('0x10'),auth['isAuthenticated'](),controller[_0xc515('0x18')]);module[_0xc515('0x19')]=router;
\ No newline at end of file
+var _0xd4df=['/:id','update','delete','exports','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','index','/describe','describe','isAuthenticated','/:id/members','getMembers','getTeams','getAgents','post','create','/:id/teams','addTeams','/:id/users','addAgents'];(function(_0x3012df,_0x4e6d14){var _0x489b7f=function(_0x20145a){while(--_0x20145a){_0x3012df['push'](_0x3012df['shift']());}};_0x489b7f(++_0x4e6d14);}(_0xd4df,0x18a));var _0xfd4d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd4df[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0xfd4d('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfd4d('0x1')]();var fs_extra=require(_0xfd4d('0x2'));var auth=require(_0xfd4d('0x3'));var interaction=require(_0xfd4d('0x4'));var config=require(_0xfd4d('0x5'));var controller=require(_0xfd4d('0x6'));router[_0xfd4d('0x7')]('/',auth['isAuthenticated'](),controller[_0xfd4d('0x8')]);router['get'](_0xfd4d('0x9'),auth['isAuthenticated'](),controller[_0xfd4d('0xa')]);router[_0xfd4d('0x7')]('/:id',auth[_0xfd4d('0xb')](),controller['show']);router[_0xfd4d('0x7')](_0xfd4d('0xc'),auth[_0xfd4d('0xb')](),controller[_0xfd4d('0xd')]);router['get']('/:id/teams',auth[_0xfd4d('0xb')](),controller[_0xfd4d('0xe')]);router[_0xfd4d('0x7')]('/:id/users',auth[_0xfd4d('0xb')](),controller[_0xfd4d('0xf')]);router[_0xfd4d('0x10')]('/',auth[_0xfd4d('0xb')](),controller[_0xfd4d('0x11')]);router[_0xfd4d('0x10')](_0xfd4d('0x12'),auth[_0xfd4d('0xb')](),controller[_0xfd4d('0x13')]);router[_0xfd4d('0x10')](_0xfd4d('0x14'),auth[_0xfd4d('0xb')](),controller[_0xfd4d('0x15')]);router['put'](_0xfd4d('0x16'),auth[_0xfd4d('0xb')](),controller[_0xfd4d('0x17')]);router[_0xfd4d('0x18')](_0xfd4d('0x16'),auth[_0xfd4d('0xb')](),controller['destroy']);router[_0xfd4d('0x18')]('/:id/teams',auth[_0xfd4d('0xb')](),controller['removeTeams']);router['delete'](_0xfd4d('0x14'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xfd4d('0x19')]=router;
\ No newline at end of file
index bd5f743..1cc83a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf21e=['sequelize','exports','STRING','ENUM','rrmemory','beepall','roundrobin'];(function(_0x5e0bfe,_0x747312){var _0x6468b8=function(_0x20e5e0){while(--_0x20e5e0){_0x5e0bfe['push'](_0x5e0bfe['shift']());}};_0x6468b8(++_0x747312);}(_0xf21e,0xaf));var _0xef21=function(_0x2ae7b9,_0x26a049){_0x2ae7b9=_0x2ae7b9-0x0;var _0x311fa3=_0xf21e[_0x2ae7b9];return _0x311fa3;};'use strict';var Sequelize=require(_0xef21('0x0'));module[_0xef21('0x1')]={'name':{'type':Sequelize[_0xef21('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xef21('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xef21('0x3')](_0xef21('0x4'),_0xef21('0x5'),_0xef21('0x6'))}};
\ No newline at end of file
+var _0x5bd5=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5bd5,0x1f3));var _0x55bd=function(_0x10df1e,_0xf56f85){_0x10df1e=_0x10df1e-0x0;var _0x3e24fb=_0x5bd5[_0x10df1e];return _0x3e24fb;};'use strict';var Sequelize=require(_0x55bd('0x0'));module[_0x55bd('0x1')]={'name':{'type':Sequelize[_0x55bd('0x2')],'unique':_0x55bd('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x55bd('0x2')]},'timeout':{'type':Sequelize[_0x55bd('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x55bd('0x5')](_0x55bd('0x6'),_0x55bd('0x7'),_0x55bd('0x8'))}};
\ No newline at end of file
index 293dc55..baead67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea2=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserMailQueue','intersection','MailQueueId','findAll','User','findAndCountAll','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','userMailQueue:save','removeTeams','ids','select','field','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','push','every','includes','all','union','compact','value','removeAgents','emit','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','nolimit','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','error','stack','name','send','index','map','MailQueue','rawAttributes','fieldName','key','model','query','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','options','include','rows','catch','show','keys','length','includeAll'];(function(_0x85193f,_0x368163){var _0x3f1991=function(_0xca1a33){while(--_0xca1a33){_0x85193f['push'](_0x85193f['shift']());}};_0x3f1991(++_0x368163);}(_0xeea2,0xce));var _0x2eea=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0xeea2[_0x220f3f];return _0x1f170e;};'use strict';var emlformat=require(_0x2eea('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2eea('0x1'));var rp=require(_0x2eea('0x2'));var moment=require(_0x2eea('0x3'));var BPromise=require(_0x2eea('0x4'));var Mustache=require('mustache');var util=require(_0x2eea('0x5'));var path=require(_0x2eea('0x6'));var sox=require(_0x2eea('0x7'));var csv=require(_0x2eea('0x8'));var ejs=require(_0x2eea('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2eea('0xa'));var squel=require(_0x2eea('0xb'));var crypto=require(_0x2eea('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2eea('0xd'));var toCsv=require(_0x2eea('0x8'));var querystring=require(_0x2eea('0xe'));var Papa=require(_0x2eea('0xf'));var Redis=require(_0x2eea('0x10'));var authService=require(_0x2eea('0x11'));var qs=require(_0x2eea('0x12'));var as=require(_0x2eea('0x13'));var hardwareService=require(_0x2eea('0x14'));var logger=require(_0x2eea('0x15'))('api');var utils=require(_0x2eea('0x16'));var config=require(_0x2eea('0x17'));var licenseUtil=require(_0x2eea('0x18'));var db=require('../../mysqldb')['db'];config[_0x2eea('0x19')]=_[_0x2eea('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2eea('0x1b'))(new Redis(config[_0x2eea('0x19')]));require(_0x2eea('0x1c'))[_0x2eea('0x1d')](socket);function respondWithStatusCode(_0x3513ee,_0x537ea2){_0x537ea2=_0x537ea2||0xcc;return function(_0x5888c7){if(_0x5888c7){return _0x3513ee[_0x2eea('0x1e')](_0x537ea2);}return _0x3513ee[_0x2eea('0x1f')](_0x537ea2)[_0x2eea('0x20')]();};}function respondWithResult(_0x468f5b,_0x4c8a56){_0x4c8a56=_0x4c8a56||0xc8;return function(_0x18ec72){if(_0x18ec72){return _0x468f5b[_0x2eea('0x1f')](_0x4c8a56)[_0x2eea('0x21')](_0x18ec72);}};}function respondWithFilteredResult(_0x155486,_0x54c49f){return function(_0x363805){if(_0x363805){var _0x5d529f=typeof _0x54c49f[_0x2eea('0x22')]===_0x2eea('0x23')&&typeof _0x54c49f[_0x2eea('0x24')]===_0x2eea('0x23');var _0x35c712=_0x363805[_0x2eea('0x25')];var _0x26b08d=_0x5d529f?0x0:_0x54c49f[_0x2eea('0x22')];var _0x218e3d=_0x5d529f?_0x363805[_0x2eea('0x25')]:_0x54c49f[_0x2eea('0x22')]+_0x54c49f[_0x2eea('0x24')];var _0x25057c;if(_0x218e3d>=_0x35c712){_0x218e3d=_0x35c712;_0x25057c=0xc8;}else{_0x25057c=0xce;}_0x155486['status'](_0x25057c);return _0x155486[_0x2eea('0x26')](_0x2eea('0x27'),_0x26b08d+'-'+_0x218e3d+'/'+_0x35c712)[_0x2eea('0x21')](_0x363805);}return null;};}function patchUpdates(_0xd7a34){return function(_0x153428){try{jsonpatch[_0x2eea('0x28')](_0x153428,_0xd7a34,!![]);}catch(_0x1c6ca2){return BPromise[_0x2eea('0x29')](_0x1c6ca2);}return _0x153428['save']();};}function saveUpdates(_0x1e887c,_0x1d5842){return function(_0x4c787c){if(_0x4c787c){return _0x4c787c['update'](_0x1e887c)[_0x2eea('0x2a')](function(_0x7969bb){return _0x7969bb;});}return null;};}function removeEntity(_0x133e03,_0x27f5ff){return function(_0x1f7cd9){if(_0x1f7cd9){return _0x1f7cd9[_0x2eea('0x2b')]()[_0x2eea('0x2a')](function(){var _0x118b02=_0x1f7cd9[_0x2eea('0x2c')]({'plain':!![]});var _0x458758='MailQueues';return db['UserProfileResource'][_0x2eea('0x2b')]({'where':{'type':_0x458758,'resourceId':_0x118b02['id']}})[_0x2eea('0x2a')](function(){return _0x1f7cd9;});})[_0x2eea('0x2a')](function(){_0x133e03[_0x2eea('0x1f')](0xcc)[_0x2eea('0x20')]();});}};}function handleEntityNotFound(_0x2c72c8,_0x25108c){return function(_0x14e615){if(!_0x14e615){_0x2c72c8[_0x2eea('0x1e')](0x194);}return _0x14e615;};}function handleError(_0x431156,_0x57d2fe){_0x57d2fe=_0x57d2fe||0x1f4;return function(_0x440c6f){logger[_0x2eea('0x2d')](_0x440c6f[_0x2eea('0x2e')]);if(_0x440c6f[_0x2eea('0x2f')]){delete _0x440c6f[_0x2eea('0x2f')];}_0x431156[_0x2eea('0x1f')](_0x57d2fe)[_0x2eea('0x30')](_0x440c6f);};}exports[_0x2eea('0x31')]=function(_0x17fbda,_0x223d44){var _0x5e6ed1={},_0x4829be={},_0x157d3b={'count':0x0,'rows':[]};var _0x2e29e4=_[_0x2eea('0x32')](db[_0x2eea('0x33')][_0x2eea('0x34')],function(_0x30fd53){return{'name':_0x30fd53[_0x2eea('0x35')],'type':_0x30fd53['type'][_0x2eea('0x36')]};});_0x4829be[_0x2eea('0x37')]=_[_0x2eea('0x32')](_0x2e29e4,_0x2eea('0x2f'));_0x4829be[_0x2eea('0x38')]=_['keys'](_0x17fbda[_0x2eea('0x38')]);_0x4829be['filters']=_['intersection'](_0x4829be[_0x2eea('0x37')],_0x4829be[_0x2eea('0x38')]);_0x5e6ed1[_0x2eea('0x39')]=_['intersection'](_0x4829be[_0x2eea('0x37')],qs[_0x2eea('0x3a')](_0x17fbda[_0x2eea('0x38')][_0x2eea('0x3a')]));_0x5e6ed1[_0x2eea('0x39')]=_0x5e6ed1[_0x2eea('0x39')]['length']?_0x5e6ed1[_0x2eea('0x39')]:_0x4829be[_0x2eea('0x37')];if(!_0x17fbda[_0x2eea('0x38')][_0x2eea('0x3b')]('nolimit')){_0x5e6ed1[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x17fbda[_0x2eea('0x38')]['limit']);_0x5e6ed1[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x17fbda[_0x2eea('0x38')][_0x2eea('0x22')]);}_0x5e6ed1[_0x2eea('0x3c')]=qs['sort'](_0x17fbda[_0x2eea('0x38')][_0x2eea('0x3d')]);_0x5e6ed1[_0x2eea('0x3e')]=qs[_0x2eea('0x3f')](_[_0x2eea('0x40')](_0x17fbda[_0x2eea('0x38')],_0x4829be[_0x2eea('0x3f')]),_0x2e29e4);if(_0x17fbda[_0x2eea('0x38')][_0x2eea('0x41')]){_0x5e6ed1[_0x2eea('0x3e')]=_[_0x2eea('0x42')](_0x5e6ed1[_0x2eea('0x3e')],{'$or':_[_0x2eea('0x32')](_0x2e29e4,function(_0x1b75c3){if(_0x1b75c3[_0x2eea('0x43')]!=='VIRTUAL'){var _0x152692={};_0x152692[_0x1b75c3[_0x2eea('0x2f')]]={'$like':'%'+_0x17fbda[_0x2eea('0x38')][_0x2eea('0x41')]+'%'};return _0x152692;}})});}_0x5e6ed1=_[_0x2eea('0x42')]({},_0x5e6ed1,_0x17fbda[_0x2eea('0x44')]);var _0x30503a={'where':_0x5e6ed1['where']};return db[_0x2eea('0x33')][_0x2eea('0x25')](_0x30503a)[_0x2eea('0x2a')](function(_0x588901){_0x157d3b[_0x2eea('0x25')]=_0x588901;if(_0x17fbda['query']['includeAll']){_0x5e6ed1[_0x2eea('0x45')]=[{'all':!![]}];}return db[_0x2eea('0x33')]['findAll'](_0x5e6ed1);})[_0x2eea('0x2a')](function(_0x5d3e8c){_0x157d3b[_0x2eea('0x46')]=_0x5d3e8c;return _0x157d3b;})[_0x2eea('0x2a')](respondWithFilteredResult(_0x223d44,_0x5e6ed1))[_0x2eea('0x47')](handleError(_0x223d44,null));};exports[_0x2eea('0x48')]=function(_0x3c7637,_0x3a86a0){var _0x4b7883={'raw':!![],'where':{'id':_0x3c7637['params']['id']}},_0x37f6eb={};_0x37f6eb[_0x2eea('0x37')]=_['keys'](db[_0x2eea('0x33')]['rawAttributes']);_0x37f6eb[_0x2eea('0x38')]=_[_0x2eea('0x49')](_0x3c7637[_0x2eea('0x38')]);_0x37f6eb['filters']=_['intersection'](_0x37f6eb[_0x2eea('0x37')],_0x37f6eb['query']);_0x4b7883[_0x2eea('0x39')]=_['intersection'](_0x37f6eb['model'],qs[_0x2eea('0x3a')](_0x3c7637['query']['fields']));_0x4b7883['attributes']=_0x4b7883[_0x2eea('0x39')][_0x2eea('0x4a')]?_0x4b7883[_0x2eea('0x39')]:_0x37f6eb[_0x2eea('0x37')];if(_0x3c7637['query'][_0x2eea('0x4b')]){_0x4b7883[_0x2eea('0x45')]=[{'all':!![]}];}_0x4b7883=_[_0x2eea('0x42')]({},_0x4b7883,_0x3c7637[_0x2eea('0x44')]);return db['MailQueue'][_0x2eea('0x4c')](_0x4b7883)[_0x2eea('0x2a')](handleEntityNotFound(_0x3a86a0,null))['then'](respondWithResult(_0x3a86a0,null))[_0x2eea('0x47')](handleError(_0x3a86a0,null));};exports[_0x2eea('0x4d')]=function(_0x5d7fc1,_0x55b3bd){return db['MailQueue'][_0x2eea('0x4d')](_0x5d7fc1[_0x2eea('0x4e')],{})[_0x2eea('0x2a')](function(_0x49f8d4){var _0x49db7b=_0x5d7fc1[_0x2eea('0x4f')]['get']({'plain':!![]});if(!_0x49db7b)throw new Error(_0x2eea('0x50'));if(_0x49db7b[_0x2eea('0x51')]===_0x2eea('0x4f')){var _0x33b583=_0x49f8d4[_0x2eea('0x2c')]({'plain':!![]});var _0x3b38b2=_0x2eea('0x52');return db['UserProfileSection'][_0x2eea('0x4c')]({'where':{'name':_0x3b38b2,'userProfileId':_0x49db7b[_0x2eea('0x53')]},'raw':!![]})[_0x2eea('0x2a')](function(_0x2d7b4c){if(_0x2d7b4c&&_0x2d7b4c[_0x2eea('0x54')]===0x0){return db[_0x2eea('0x55')][_0x2eea('0x4d')]({'name':_0x33b583[_0x2eea('0x2f')],'resourceId':_0x33b583['id'],'type':_0x2d7b4c[_0x2eea('0x2f')],'sectionId':_0x2d7b4c['id']},{})[_0x2eea('0x2a')](function(){return _0x49f8d4;});}else{return _0x49f8d4;}})[_0x2eea('0x47')](function(_0x2d54a2){logger['error'](_0x2eea('0x56'),_0x2d54a2);throw _0x2d54a2;});}return _0x49f8d4;})[_0x2eea('0x2a')](respondWithResult(_0x55b3bd,0xc9))['catch'](handleError(_0x55b3bd,null));};exports['update']=function(_0xbd45a4,_0x2f7e66){if(_0xbd45a4[_0x2eea('0x4e')]['id']){delete _0xbd45a4[_0x2eea('0x4e')]['id'];}return db['MailQueue'][_0x2eea('0x4c')]({'where':{'id':_0xbd45a4[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x2f7e66,null))[_0x2eea('0x2a')](saveUpdates(_0xbd45a4['body'],null))[_0x2eea('0x2a')](respondWithResult(_0x2f7e66,null))[_0x2eea('0x47')](handleError(_0x2f7e66,null));};exports['destroy']=function(_0x48aebb,_0x5c98f5){return db[_0x2eea('0x33')][_0x2eea('0x4c')]({'where':{'id':_0x48aebb[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x5c98f5,null))['then'](removeEntity(_0x5c98f5,null))['catch'](handleError(_0x5c98f5,null));};exports[_0x2eea('0x58')]=function(_0x118688,_0x162ba2){return db[_0x2eea('0x33')]['describe']()[_0x2eea('0x2a')](respondWithResult(_0x162ba2,null))[_0x2eea('0x47')](handleError(_0x162ba2,null));};exports[_0x2eea('0x59')]=function(_0x328601,_0x4b3665,_0x554497){var _0x32424b={'raw':!![],'where':{}},_0x1ea118={},_0x555882;return db[_0x2eea('0x33')]['findOne']({'where':{'id':_0x328601[_0x2eea('0x57')]['id']}})['then'](handleEntityNotFound(_0x4b3665,null))[_0x2eea('0x2a')](function(_0x5f4846){if(_0x5f4846){_0x555882=_0x5f4846['get']({'plain':!![]});_0x1ea118['model']=_[_0x2eea('0x49')](db[_0x2eea('0x5a')]['rawAttributes']);_0x1ea118[_0x2eea('0x38')]=_[_0x2eea('0x49')](_0x328601[_0x2eea('0x38')]);_0x1ea118[_0x2eea('0x3f')]=_['intersection'](_0x1ea118[_0x2eea('0x37')],_0x1ea118[_0x2eea('0x38')]);_0x32424b[_0x2eea('0x39')]=_[_0x2eea('0x5b')](_0x1ea118['model'],qs['fields'](_0x328601[_0x2eea('0x38')][_0x2eea('0x3a')]));_0x32424b[_0x2eea('0x39')]=_0x32424b['attributes'][_0x2eea('0x4a')]?_0x32424b[_0x2eea('0x39')]:_0x1ea118['model'];if(!_0x328601[_0x2eea('0x38')][_0x2eea('0x3b')]('nolimit')){_0x32424b[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x328601[_0x2eea('0x38')]['limit']);_0x32424b[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x328601[_0x2eea('0x38')][_0x2eea('0x22')]);}_0x32424b[_0x2eea('0x3c')]=qs[_0x2eea('0x3d')](_0x328601['query']['sort']);_0x32424b[_0x2eea('0x3e')]=qs[_0x2eea('0x3f')](_['pick'](_0x328601[_0x2eea('0x38')],_0x1ea118[_0x2eea('0x3f')]));_0x32424b['where'][_0x2eea('0x5c')]=_0x5f4846['id'];if(_0x328601['query']['filter']){_0x32424b['where']=_[_0x2eea('0x42')](_0x32424b[_0x2eea('0x3e')],{'$or':_[_0x2eea('0x32')](_0x32424b['attributes'],function(_0x435110){var _0x47535a={};_0x47535a[_0x435110]={'$like':'%'+_0x328601[_0x2eea('0x38')][_0x2eea('0x41')]+'%'};return _0x47535a;})});}_0x32424b=_[_0x2eea('0x42')]({},_0x32424b,_0x328601[_0x2eea('0x44')]);return db[_0x2eea('0x5a')][_0x2eea('0x5d')](_0x32424b);}})[_0x2eea('0x2a')](function(_0x37332e){if(_0x37332e){return db[_0x2eea('0x5e')][_0x2eea('0x5f')]({'where':{'id':_[_0x2eea('0x32')](_0x37332e,'UserId'),'role':_0x2eea('0x60')},'attributes':['id',_0x2eea('0x2f'),_0x2eea('0x61'),_0x2eea('0x62'),_0x2eea('0x63')]});}})[_0x2eea('0x2a')](function(_0x40ad3a){if(_0x40ad3a){return{'count':_0x40ad3a['count'],'rows':_['map'](_0x40ad3a[_0x2eea('0x46')],function(_0x219482){return{'membername':_0x219482[_0x2eea('0x2f')],'UserId':_0x219482['id'],'queue_name':_0x555882[_0x2eea('0x2f')],'MailQueueId':_0x555882['id'],'interface':util[_0x2eea('0x64')](_0x2eea('0x65'),_0x2eea('0x66'),_0x219482[_0x2eea('0x2f')]),'penalty':0x0,'paused':_0x219482[_0x2eea('0x61')],'createdAt':_0x219482['createdAt'],'updatedAt':_0x219482[_0x2eea('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2eea('0x2a')](respondWithFilteredResult(_0x4b3665,_0x32424b))[_0x2eea('0x47')](handleError(_0x4b3665,null));};exports['getTeams']=function(_0x20f128,_0x312986,_0x2472ad){var _0x354921={};var _0x11d44f={};var _0x3acd3a;var _0x1211ee;return db[_0x2eea('0x33')]['findOne']({'where':{'id':_0x20f128[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x312986,null))[_0x2eea('0x2a')](function(_0x34835a){if(_0x34835a){_0x3acd3a=_0x34835a;_0x11d44f[_0x2eea('0x37')]=_['keys'](db[_0x2eea('0x67')][_0x2eea('0x34')]);_0x11d44f[_0x2eea('0x38')]=_['keys'](_0x20f128[_0x2eea('0x38')]);_0x11d44f['filters']=_[_0x2eea('0x5b')](_0x11d44f[_0x2eea('0x37')],_0x11d44f[_0x2eea('0x38')]);_0x354921[_0x2eea('0x39')]=_[_0x2eea('0x5b')](_0x11d44f['model'],qs[_0x2eea('0x3a')](_0x20f128[_0x2eea('0x38')]['fields']));_0x354921[_0x2eea('0x39')]=_0x354921[_0x2eea('0x39')][_0x2eea('0x4a')]?_0x354921[_0x2eea('0x39')]:_0x11d44f['model'];_0x354921[_0x2eea('0x3c')]=qs[_0x2eea('0x3d')](_0x20f128[_0x2eea('0x38')][_0x2eea('0x3d')]);_0x354921['where']=qs[_0x2eea('0x3f')](_['pick'](_0x20f128[_0x2eea('0x38')],_0x11d44f[_0x2eea('0x3f')]));if(_0x20f128[_0x2eea('0x38')][_0x2eea('0x41')]){_0x354921[_0x2eea('0x3e')]=_['merge'](_0x354921[_0x2eea('0x3e')],{'$or':_[_0x2eea('0x32')](_0x354921['attributes'],function(_0x55ff74){var _0x19db63={};_0x19db63[_0x55ff74]={'$like':'%'+_0x20f128['query'][_0x2eea('0x41')]+'%'};return _0x19db63;})});}_0x354921=_[_0x2eea('0x42')]({},_0x354921,_0x20f128[_0x2eea('0x44')]);return _0x3acd3a[_0x2eea('0x68')](_0x354921);}})['then'](function(_0x4bb01d){if(_0x4bb01d){_0x1211ee=_0x4bb01d[_0x2eea('0x4a')];if(!_0x20f128[_0x2eea('0x38')]['hasOwnProperty']('nolimit')){_0x354921[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x20f128[_0x2eea('0x38')][_0x2eea('0x24')]);_0x354921[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x20f128[_0x2eea('0x38')]['offset']);}return _0x3acd3a['getTeams'](_0x354921);}})[_0x2eea('0x2a')](function(_0x374e2a){if(_0x374e2a){return _0x374e2a?{'count':_0x1211ee,'rows':_0x374e2a}:null;}})[_0x2eea('0x2a')](respondWithResult(_0x312986,null))[_0x2eea('0x47')](handleError(_0x312986,null));};exports[_0x2eea('0x69')]=function(_0x549561,_0x45a149,_0xd3f598){var _0x5bac00=_0x549561['body']['ids'];return db[_0x2eea('0x67')]['findAll']({'where':{'id':_0x5bac00},'attributes':['id'],'include':[{'model':db[_0x2eea('0x5e')],'as':_0x2eea('0x6a'),'attributes':['id','name',_0x2eea('0x6b'),_0x2eea('0x6c'),_0x2eea('0x6d')],'raw':!![]}]})[_0x2eea('0x2a')](function(_0x6aeda7){if(_0x6aeda7){var _0x1bd052=_[_0x2eea('0x6e')](_0x6aeda7,function(_0x356078){var _0x54ea3f=_0x356078['get']({'plain':!![]});return _0x54ea3f[_0x2eea('0x6a')];});return db[_0x2eea('0x33')]['find']({'where':{'id':_0x549561[_0x2eea('0x57')]['id']}})['then'](function(_0x3d5098){return db[_0x2eea('0x6f')][_0x2eea('0x70')](function(_0x5294cb){return _0x3d5098[_0x2eea('0x69')](_0x5bac00,{'transaction':_0x5294cb})[_0x2eea('0x2a')](function(){return BPromise['each'](_0x1bd052,function(_0x599371){return db[_0x2eea('0x5a')][_0x2eea('0x71')]({'where':{'UserId':_0x599371['id'],'MailQueueId':_0x549561[_0x2eea('0x57')]['id']},'transaction':_0x5294cb});});})['then'](function(){_0x1bd052[_0x2eea('0x72')](function(_0x23a024){socket['emit'](_0x2eea('0x73'),{'UserId':_0x23a024['id'],'MailQueueId':_0x3d5098['id']});});});});});}})[_0x2eea('0x2a')](respondWithStatusCode(_0x45a149,null))[_0x2eea('0x47')](handleError(_0x45a149,null));};exports[_0x2eea('0x74')]=function(_0x2ac1cf,_0x4f85b0,_0x368c54){return db[_0x2eea('0x67')]['findAll']({'where':{'id':_0x2ac1cf[_0x2eea('0x38')][_0x2eea('0x75')]},'attributes':['id'],'include':[{'model':db[_0x2eea('0x5e')],'as':_0x2eea('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4f85b0,null))[_0x2eea('0x2a')](function(_0x5ad0ca){var _0x8f5cfe=_[_0x2eea('0x32')](_0x5ad0ca,'id');var _0x39e93c=[];var _0x201811=[];var _0x173ab9=squel[_0x2eea('0x76')]();_0x173ab9[_0x2eea('0x77')]('tq.TeamId')['from'](_0x2eea('0x78'),'tq')[_0x2eea('0x79')]('user_has_teams','ut',_0x2eea('0x7a'))[_0x2eea('0x3e')](_0x2eea('0x7b'),_0x2ac1cf[_0x2eea('0x57')]['id']);for(var _0x4431da=0x0;_0x4431da<_0x5ad0ca['length'];_0x4431da+=0x1){let _0x13a137=_0x5ad0ca[_0x4431da];for(var _0x3c2a4e=0x0;_0x3c2a4e<_0x13a137[_0x2eea('0x6a')][_0x2eea('0x4a')];_0x3c2a4e+=0x1){let _0x52c81c=_0x13a137[_0x2eea('0x6a')][_0x3c2a4e];var _0x29a26b=_0x173ab9[_0x2eea('0x7c')]();_0x29a26b[_0x2eea('0x3e')]('ut.UserId\x20=\x20?',_0x52c81c['id']);_0x201811[_0x2eea('0x7d')](db[_0x2eea('0x6f')][_0x2eea('0x38')](_0x29a26b['toString'](),{'type':db[_0x2eea('0x6f')]['QueryTypes']['SELECT']})[_0x2eea('0x2a')](function(_0x11a194){if(_0x11a194[_0x2eea('0x4a')]===0x1){return _0x52c81c['id'];}else{var _0x404fb7=_[_0x2eea('0x7e')](_[_0x2eea('0x32')](_0x11a194,'TeamId'),function(_0x2ea99d){return _[_0x2eea('0x7f')](_0x8f5cfe,_0x2ea99d);});if(_0x404fb7){return _0x52c81c['id'];}}}));}}return BPromise[_0x2eea('0x80')](_0x201811)[_0x2eea('0x2a')](function(_0x57d08d){_0x39e93c=_(_0x39e93c)[_0x2eea('0x81')](_0x57d08d)[_0x2eea('0x82')]()[_0x2eea('0x83')]();return db['MailQueue'][_0x2eea('0x4c')]({'where':{'id':_0x2ac1cf[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](function(_0x456ba7){return db[_0x2eea('0x6f')]['transaction'](function(_0x2a3f81){return _0x456ba7[_0x2eea('0x74')](_0x2ac1cf[_0x2eea('0x38')][_0x2eea('0x75')],{'transaction':_0x2a3f81})['then'](function(){if(!_['isEmpty'](_0x39e93c)){return _0x456ba7[_0x2eea('0x84')](_0x39e93c,{'transaction':_0x2a3f81});}})[_0x2eea('0x2a')](function(){_0x39e93c[_0x2eea('0x72')](function(_0x177788){socket[_0x2eea('0x85')](_0x2eea('0x86'),{'UserId':_0x177788,'MailQueueId':_0x456ba7['id']});});});});});});})[_0x2eea('0x2a')](respondWithStatusCode(_0x4f85b0,null))[_0x2eea('0x47')](handleError(_0x4f85b0,null));};exports[_0x2eea('0x87')]=function(_0x2b8e8f,_0x451f53,_0x34a51d){return db['MailQueue']['find']({'where':{'id':_0x2b8e8f[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x451f53,null))['then'](function(_0x2e18e7){if(_0x2e18e7){return _0x2e18e7[_0x2eea('0x87')](_0x2b8e8f[_0x2eea('0x4e')]['ids'],_[_0x2eea('0x88')](_0x2b8e8f[_0x2eea('0x4e')],[_0x2eea('0x75'),'id'])||{})[_0x2eea('0x89')](function(_0x52c7da){for(var _0x53ee6e=0x0;_0x53ee6e<_0x2b8e8f['body'][_0x2eea('0x75')][_0x2eea('0x4a')];_0x53ee6e+=0x1){socket[_0x2eea('0x85')](_0x2eea('0x73'),{'UserId':Number(_0x2b8e8f[_0x2eea('0x4e')][_0x2eea('0x75')][_0x53ee6e]),'MailQueueId':Number(_0x2b8e8f[_0x2eea('0x57')]['id'])});}return _0x52c7da;});}})['then'](respondWithResult(_0x451f53,null))[_0x2eea('0x47')](handleError(_0x451f53,null));};exports[_0x2eea('0x84')]=function(_0x519891,_0x4ff1f1,_0x56a544){return db['MailQueue'][_0x2eea('0x4c')]({'where':{'id':_0x519891[_0x2eea('0x57')]['id']}})['then'](handleEntityNotFound(_0x4ff1f1,null))['then'](function(_0x1fd157){if(_0x1fd157){return _0x1fd157[_0x2eea('0x84')](_0x519891['query'][_0x2eea('0x75')])[_0x2eea('0x2a')](function(){if(_[_0x2eea('0x8a')](_0x519891['query'][_0x2eea('0x75')])){for(var _0x379b40=0x0;_0x379b40<_0x519891['query'][_0x2eea('0x75')]['length'];_0x379b40+=0x1){socket[_0x2eea('0x85')]('userMailQueue:remove',{'UserId':Number(_0x519891[_0x2eea('0x38')][_0x2eea('0x75')][_0x379b40]),'MailQueueId':Number(_0x519891[_0x2eea('0x57')]['id'])});}}else{socket[_0x2eea('0x85')](_0x2eea('0x86'),{'UserId':Number(_0x519891[_0x2eea('0x38')][_0x2eea('0x75')]),'MailQueueId':Number(_0x519891[_0x2eea('0x57')]['id'])});}});}})[_0x2eea('0x2a')](respondWithStatusCode(_0x4ff1f1,null))[_0x2eea('0x47')](handleError(_0x4ff1f1,null));};exports[_0x2eea('0x8b')]=function(_0x2a62a1,_0x3423ec,_0x28021c){var _0x76eda={};var _0x1c1012={};var _0x2933fd;var _0x26b674;return db[_0x2eea('0x33')]['findOne']({'where':{'id':_0x2a62a1[_0x2eea('0x57')]['id']}})['then'](handleEntityNotFound(_0x3423ec,null))['then'](function(_0x1315f9){if(_0x1315f9){_0x2933fd=_0x1315f9;_0x1c1012[_0x2eea('0x37')]=_[_0x2eea('0x49')](db[_0x2eea('0x5e')]['rawAttributes']);_0x1c1012[_0x2eea('0x38')]=_['keys'](_0x2a62a1[_0x2eea('0x38')]);_0x1c1012[_0x2eea('0x3f')]=_[_0x2eea('0x5b')](_0x1c1012[_0x2eea('0x37')],_0x1c1012[_0x2eea('0x38')]);_0x76eda[_0x2eea('0x39')]=_[_0x2eea('0x5b')](_0x1c1012[_0x2eea('0x37')],qs[_0x2eea('0x3a')](_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x3a')]));_0x76eda['attributes']=_0x76eda['attributes'][_0x2eea('0x4a')]?_0x76eda[_0x2eea('0x39')]:_0x1c1012[_0x2eea('0x37')];_0x76eda[_0x2eea('0x3c')]=qs['sort'](_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x3d')]);_0x76eda[_0x2eea('0x3e')]=qs[_0x2eea('0x3f')](_['pick'](_0x2a62a1[_0x2eea('0x38')],_0x1c1012[_0x2eea('0x3f')]));if(_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x41')]){_0x76eda[_0x2eea('0x3e')]=_[_0x2eea('0x42')](_0x76eda['where'],{'$or':_[_0x2eea('0x32')](_0x76eda[_0x2eea('0x39')],function(_0x258d7d){var _0xbf329c={};_0xbf329c[_0x258d7d]={'$like':'%'+_0x2a62a1[_0x2eea('0x38')]['filter']+'%'};return _0xbf329c;})});}_0x76eda=_[_0x2eea('0x42')]({},_0x76eda,_0x2a62a1[_0x2eea('0x44')]);return _0x2933fd[_0x2eea('0x8b')](_0x76eda);}})[_0x2eea('0x2a')](function(_0x48c230){if(_0x48c230){_0x26b674=_0x48c230['length'];if(!_0x2a62a1['query'][_0x2eea('0x3b')](_0x2eea('0x8c'))){_0x76eda[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x2a62a1['query']['limit']);_0x76eda[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x22')]);}return _0x2933fd[_0x2eea('0x8b')](_0x76eda);}})['then'](function(_0xa4d8a0){if(_0xa4d8a0){return _0xa4d8a0?{'count':_0x26b674,'rows':_0xa4d8a0}:null;}})[_0x2eea('0x2a')](respondWithResult(_0x3423ec,null))[_0x2eea('0x47')](handleError(_0x3423ec,null));};
\ No newline at end of file
+var _0x8cd9=['ids','Team','Agents','interface','flatMap','sequelize','each','findOrCreate','forEach','userMailQueue:save','removeTeams','select','tq.TeamId','from','join','user_has_teams','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','emit','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','includeAll','options','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserMailQueue','MailQueueId','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','addTeams'];(function(_0x324fe8,_0x1ccb46){var _0x4a1cd9=function(_0x506af2){while(--_0x506af2){_0x324fe8['push'](_0x324fe8['shift']());}};_0x4a1cd9(++_0x1ccb46);}(_0x8cd9,0x1c7));var _0x98cd=function(_0x55855e,_0x3c3af8){_0x55855e=_0x55855e-0x0;var _0x56a13f=_0x8cd9[_0x55855e];return _0x56a13f;};'use strict';var emlformat=require(_0x98cd('0x0'));var rimraf=require(_0x98cd('0x1'));var zipdir=require(_0x98cd('0x2'));var jsonpatch=require(_0x98cd('0x3'));var rp=require('request-promise');var moment=require(_0x98cd('0x4'));var BPromise=require(_0x98cd('0x5'));var Mustache=require(_0x98cd('0x6'));var util=require(_0x98cd('0x7'));var path=require(_0x98cd('0x8'));var sox=require('sox');var csv=require(_0x98cd('0x9'));var ejs=require(_0x98cd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x98cd('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x98cd('0xc'));var toCsv=require(_0x98cd('0x9'));var querystring=require('querystring');var Papa=require(_0x98cd('0xd'));var Redis=require('ioredis');var authService=require(_0x98cd('0xe'));var qs=require(_0x98cd('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x98cd('0x10'));var logger=require(_0x98cd('0x11'))(_0x98cd('0x12'));var utils=require(_0x98cd('0x13'));var config=require(_0x98cd('0x14'));var licenseUtil=require(_0x98cd('0x15'));var db=require(_0x98cd('0x16'))['db'];config[_0x98cd('0x17')]=_[_0x98cd('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x98cd('0x19'))(new Redis(config['redis']));require(_0x98cd('0x1a'))[_0x98cd('0x1b')](socket);function respondWithStatusCode(_0x434098,_0x474c9f){_0x474c9f=_0x474c9f||0xcc;return function(_0x112b8d){if(_0x112b8d){return _0x434098[_0x98cd('0x1c')](_0x474c9f);}return _0x434098[_0x98cd('0x1d')](_0x474c9f)['end']();};}function respondWithResult(_0x16edfc,_0x4706dc){_0x4706dc=_0x4706dc||0xc8;return function(_0x28e1a4){if(_0x28e1a4){return _0x16edfc['status'](_0x4706dc)[_0x98cd('0x1e')](_0x28e1a4);}};}function respondWithFilteredResult(_0x14a873,_0x2b179c){return function(_0x69e1fd){if(_0x69e1fd){var _0x2ff909=typeof _0x2b179c['offset']===_0x98cd('0x1f')&&typeof _0x2b179c[_0x98cd('0x20')]==='undefined';var _0x4ac3da=_0x69e1fd[_0x98cd('0x21')];var _0x125dbd=_0x2ff909?0x0:_0x2b179c['offset'];var _0x4ded6c=_0x2ff909?_0x69e1fd[_0x98cd('0x21')]:_0x2b179c[_0x98cd('0x22')]+_0x2b179c[_0x98cd('0x20')];var _0x4b4a5c;if(_0x4ded6c>=_0x4ac3da){_0x4ded6c=_0x4ac3da;_0x4b4a5c=0xc8;}else{_0x4b4a5c=0xce;}_0x14a873[_0x98cd('0x1d')](_0x4b4a5c);return _0x14a873['set'](_0x98cd('0x23'),_0x125dbd+'-'+_0x4ded6c+'/'+_0x4ac3da)['json'](_0x69e1fd);}return null;};}function patchUpdates(_0x18be61){return function(_0x4c86d0){try{jsonpatch[_0x98cd('0x24')](_0x4c86d0,_0x18be61,!![]);}catch(_0x448103){return BPromise[_0x98cd('0x25')](_0x448103);}return _0x4c86d0[_0x98cd('0x26')]();};}function saveUpdates(_0x4c7774,_0x47476a){return function(_0x540013){if(_0x540013){return _0x540013[_0x98cd('0x27')](_0x4c7774)[_0x98cd('0x28')](function(_0x887c12){return _0x887c12;});}return null;};}function removeEntity(_0x339710,_0x573b1d){return function(_0xe36ab7){if(_0xe36ab7){return _0xe36ab7[_0x98cd('0x29')]()[_0x98cd('0x28')](function(){var _0x4e86ba=_0xe36ab7[_0x98cd('0x2a')]({'plain':!![]});var _0x573f62=_0x98cd('0x2b');return db[_0x98cd('0x2c')]['destroy']({'where':{'type':_0x573f62,'resourceId':_0x4e86ba['id']}})[_0x98cd('0x28')](function(){return _0xe36ab7;});})[_0x98cd('0x28')](function(){_0x339710[_0x98cd('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x405af8,_0x146213){return function(_0x3dde4c){if(!_0x3dde4c){_0x405af8['sendStatus'](0x194);}return _0x3dde4c;};}function handleError(_0x4e8216,_0x3f30d5){_0x3f30d5=_0x3f30d5||0x1f4;return function(_0x21bde6){logger['error'](_0x21bde6['stack']);if(_0x21bde6[_0x98cd('0x2d')]){delete _0x21bde6[_0x98cd('0x2d')];}_0x4e8216[_0x98cd('0x1d')](_0x3f30d5)[_0x98cd('0x2e')](_0x21bde6);};}exports[_0x98cd('0x2f')]=function(_0x13238d,_0x2643ce){var _0x37c6a2={},_0x15169b={},_0xf41751={'count':0x0,'rows':[]};var _0x520c2c=_[_0x98cd('0x30')](db[_0x98cd('0x31')][_0x98cd('0x32')],function(_0x5beaac){return{'name':_0x5beaac[_0x98cd('0x33')],'type':_0x5beaac[_0x98cd('0x34')][_0x98cd('0x35')]};});_0x15169b[_0x98cd('0x36')]=_['map'](_0x520c2c,_0x98cd('0x2d'));_0x15169b[_0x98cd('0x37')]=_[_0x98cd('0x38')](_0x13238d['query']);_0x15169b[_0x98cd('0x39')]=_[_0x98cd('0x3a')](_0x15169b[_0x98cd('0x36')],_0x15169b[_0x98cd('0x37')]);_0x37c6a2[_0x98cd('0x3b')]=_['intersection'](_0x15169b[_0x98cd('0x36')],qs[_0x98cd('0x3c')](_0x13238d['query'][_0x98cd('0x3c')]));_0x37c6a2[_0x98cd('0x3b')]=_0x37c6a2[_0x98cd('0x3b')][_0x98cd('0x3d')]?_0x37c6a2[_0x98cd('0x3b')]:_0x15169b[_0x98cd('0x36')];if(!_0x13238d[_0x98cd('0x37')][_0x98cd('0x3e')](_0x98cd('0x3f'))){_0x37c6a2[_0x98cd('0x20')]=qs[_0x98cd('0x20')](_0x13238d[_0x98cd('0x37')][_0x98cd('0x20')]);_0x37c6a2[_0x98cd('0x22')]=qs[_0x98cd('0x22')](_0x13238d[_0x98cd('0x37')]['offset']);}_0x37c6a2[_0x98cd('0x40')]=qs['sort'](_0x13238d[_0x98cd('0x37')][_0x98cd('0x41')]);_0x37c6a2[_0x98cd('0x42')]=qs[_0x98cd('0x39')](_[_0x98cd('0x43')](_0x13238d[_0x98cd('0x37')],_0x15169b[_0x98cd('0x39')]),_0x520c2c);if(_0x13238d[_0x98cd('0x37')][_0x98cd('0x44')]){_0x37c6a2['where']=_[_0x98cd('0x45')](_0x37c6a2[_0x98cd('0x42')],{'$or':_[_0x98cd('0x30')](_0x520c2c,function(_0x242b95){if(_0x242b95[_0x98cd('0x34')]!==_0x98cd('0x46')){var _0x39b197={};_0x39b197[_0x242b95[_0x98cd('0x2d')]]={'$like':'%'+_0x13238d[_0x98cd('0x37')]['filter']+'%'};return _0x39b197;}})});}_0x37c6a2=_['merge']({},_0x37c6a2,_0x13238d['options']);var _0x28658c={'where':_0x37c6a2[_0x98cd('0x42')]};return db[_0x98cd('0x31')][_0x98cd('0x21')](_0x28658c)[_0x98cd('0x28')](function(_0x24fb93){_0xf41751[_0x98cd('0x21')]=_0x24fb93;if(_0x13238d[_0x98cd('0x37')]['includeAll']){_0x37c6a2[_0x98cd('0x47')]=[{'all':!![]}];}return db['MailQueue'][_0x98cd('0x48')](_0x37c6a2);})[_0x98cd('0x28')](function(_0x2e7e23){_0xf41751[_0x98cd('0x49')]=_0x2e7e23;return _0xf41751;})[_0x98cd('0x28')](respondWithFilteredResult(_0x2643ce,_0x37c6a2))['catch'](handleError(_0x2643ce,null));};exports['show']=function(_0x163f69,_0x415c49){var _0x43f06d={'raw':!![],'where':{'id':_0x163f69['params']['id']}},_0x3860c0={};_0x3860c0['model']=_[_0x98cd('0x38')](db[_0x98cd('0x31')]['rawAttributes']);_0x3860c0['query']=_[_0x98cd('0x38')](_0x163f69['query']);_0x3860c0[_0x98cd('0x39')]=_['intersection'](_0x3860c0[_0x98cd('0x36')],_0x3860c0[_0x98cd('0x37')]);_0x43f06d[_0x98cd('0x3b')]=_[_0x98cd('0x3a')](_0x3860c0[_0x98cd('0x36')],qs[_0x98cd('0x3c')](_0x163f69['query'][_0x98cd('0x3c')]));_0x43f06d[_0x98cd('0x3b')]=_0x43f06d['attributes']['length']?_0x43f06d[_0x98cd('0x3b')]:_0x3860c0['model'];if(_0x163f69[_0x98cd('0x37')][_0x98cd('0x4a')]){_0x43f06d['include']=[{'all':!![]}];}_0x43f06d=_[_0x98cd('0x45')]({},_0x43f06d,_0x163f69[_0x98cd('0x4b')]);return db[_0x98cd('0x31')]['find'](_0x43f06d)[_0x98cd('0x28')](handleEntityNotFound(_0x415c49,null))['then'](respondWithResult(_0x415c49,null))[_0x98cd('0x4c')](handleError(_0x415c49,null));};exports[_0x98cd('0x4d')]=function(_0x43a0e0,_0x3c292b){return db['MailQueue'][_0x98cd('0x4d')](_0x43a0e0[_0x98cd('0x4e')],{})[_0x98cd('0x28')](function(_0x5ecf48){var _0x537153=_0x43a0e0[_0x98cd('0x4f')]['get']({'plain':!![]});if(!_0x537153)throw new Error(_0x98cd('0x50'));if(_0x537153[_0x98cd('0x51')]===_0x98cd('0x4f')){var _0x11fd44=_0x5ecf48[_0x98cd('0x2a')]({'plain':!![]});var _0x196671='MailQueues';return db[_0x98cd('0x52')][_0x98cd('0x53')]({'where':{'name':_0x196671,'userProfileId':_0x537153['userProfileId']},'raw':!![]})[_0x98cd('0x28')](function(_0x5745ca){if(_0x5745ca&&_0x5745ca[_0x98cd('0x54')]===0x0){return db[_0x98cd('0x2c')][_0x98cd('0x4d')]({'name':_0x11fd44['name'],'resourceId':_0x11fd44['id'],'type':_0x5745ca['name'],'sectionId':_0x5745ca['id']},{})[_0x98cd('0x28')](function(){return _0x5ecf48;});}else{return _0x5ecf48;}})[_0x98cd('0x4c')](function(_0x58fcd5){logger[_0x98cd('0x55')](_0x98cd('0x56'),_0x58fcd5);throw _0x58fcd5;});}return _0x5ecf48;})[_0x98cd('0x28')](respondWithResult(_0x3c292b,0xc9))[_0x98cd('0x4c')](handleError(_0x3c292b,null));};exports[_0x98cd('0x27')]=function(_0x5edd44,_0x47bdb2){if(_0x5edd44[_0x98cd('0x4e')]['id']){delete _0x5edd44[_0x98cd('0x4e')]['id'];}return db[_0x98cd('0x31')][_0x98cd('0x53')]({'where':{'id':_0x5edd44[_0x98cd('0x57')]['id']}})['then'](handleEntityNotFound(_0x47bdb2,null))['then'](saveUpdates(_0x5edd44['body'],null))[_0x98cd('0x28')](respondWithResult(_0x47bdb2,null))[_0x98cd('0x4c')](handleError(_0x47bdb2,null));};exports[_0x98cd('0x29')]=function(_0x6d18e9,_0x1c469f){return db[_0x98cd('0x31')][_0x98cd('0x53')]({'where':{'id':_0x6d18e9[_0x98cd('0x57')]['id']}})[_0x98cd('0x28')](handleEntityNotFound(_0x1c469f,null))['then'](removeEntity(_0x1c469f,null))[_0x98cd('0x4c')](handleError(_0x1c469f,null));};exports[_0x98cd('0x58')]=function(_0x3db236,_0x3fa94a){return db['MailQueue'][_0x98cd('0x58')]()['then'](respondWithResult(_0x3fa94a,null))[_0x98cd('0x4c')](handleError(_0x3fa94a,null));};exports[_0x98cd('0x59')]=function(_0x2bda18,_0x12cca4,_0x687e44){var _0x398b49={'raw':!![],'where':{}},_0x9920a0={},_0x286457;return db['MailQueue']['findOne']({'where':{'id':_0x2bda18[_0x98cd('0x57')]['id']}})[_0x98cd('0x28')](handleEntityNotFound(_0x12cca4,null))[_0x98cd('0x28')](function(_0x5967aa){if(_0x5967aa){_0x286457=_0x5967aa[_0x98cd('0x2a')]({'plain':!![]});_0x9920a0[_0x98cd('0x36')]=_['keys'](db[_0x98cd('0x5a')]['rawAttributes']);_0x9920a0[_0x98cd('0x37')]=_[_0x98cd('0x38')](_0x2bda18[_0x98cd('0x37')]);_0x9920a0['filters']=_[_0x98cd('0x3a')](_0x9920a0[_0x98cd('0x36')],_0x9920a0[_0x98cd('0x37')]);_0x398b49[_0x98cd('0x3b')]=_[_0x98cd('0x3a')](_0x9920a0[_0x98cd('0x36')],qs[_0x98cd('0x3c')](_0x2bda18['query'][_0x98cd('0x3c')]));_0x398b49[_0x98cd('0x3b')]=_0x398b49[_0x98cd('0x3b')]['length']?_0x398b49['attributes']:_0x9920a0[_0x98cd('0x36')];if(!_0x2bda18[_0x98cd('0x37')][_0x98cd('0x3e')](_0x98cd('0x3f'))){_0x398b49[_0x98cd('0x20')]=qs[_0x98cd('0x20')](_0x2bda18['query'][_0x98cd('0x20')]);_0x398b49[_0x98cd('0x22')]=qs[_0x98cd('0x22')](_0x2bda18[_0x98cd('0x37')]['offset']);}_0x398b49['order']=qs['sort'](_0x2bda18[_0x98cd('0x37')][_0x98cd('0x41')]);_0x398b49[_0x98cd('0x42')]=qs[_0x98cd('0x39')](_[_0x98cd('0x43')](_0x2bda18['query'],_0x9920a0[_0x98cd('0x39')]));_0x398b49['where'][_0x98cd('0x5b')]=_0x5967aa['id'];if(_0x2bda18['query']['filter']){_0x398b49[_0x98cd('0x42')]=_[_0x98cd('0x45')](_0x398b49['where'],{'$or':_[_0x98cd('0x30')](_0x398b49[_0x98cd('0x3b')],function(_0x2c51a8){var _0x331a7c={};_0x331a7c[_0x2c51a8]={'$like':'%'+_0x2bda18[_0x98cd('0x37')]['filter']+'%'};return _0x331a7c;})});}_0x398b49=_[_0x98cd('0x45')]({},_0x398b49,_0x2bda18[_0x98cd('0x4b')]);return db[_0x98cd('0x5a')][_0x98cd('0x48')](_0x398b49);}})[_0x98cd('0x28')](function(_0x4f0fee){if(_0x4f0fee){return db[_0x98cd('0x5c')][_0x98cd('0x5d')]({'where':{'id':_[_0x98cd('0x30')](_0x4f0fee,_0x98cd('0x5e')),'role':_0x98cd('0x5f')},'attributes':['id',_0x98cd('0x2d'),_0x98cd('0x60'),_0x98cd('0x61'),_0x98cd('0x62')]});}})[_0x98cd('0x28')](function(_0x5c29fb){if(_0x5c29fb){return{'count':_0x5c29fb[_0x98cd('0x21')],'rows':_[_0x98cd('0x30')](_0x5c29fb[_0x98cd('0x49')],function(_0x104cef){return{'membername':_0x104cef[_0x98cd('0x2d')],'UserId':_0x104cef['id'],'queue_name':_0x286457[_0x98cd('0x2d')],'MailQueueId':_0x286457['id'],'interface':util[_0x98cd('0x63')](_0x98cd('0x64'),_0x98cd('0x65'),_0x104cef['name']),'penalty':0x0,'paused':_0x104cef[_0x98cd('0x60')],'createdAt':_0x104cef[_0x98cd('0x62')],'updatedAt':_0x104cef[_0x98cd('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x98cd('0x28')](respondWithFilteredResult(_0x12cca4,_0x398b49))[_0x98cd('0x4c')](handleError(_0x12cca4,null));};exports[_0x98cd('0x66')]=function(_0x11184e,_0xbbbaf3,_0x33deae){var _0x3481ed={};var _0x256992={};var _0x449358;var _0x7deec4;return db[_0x98cd('0x31')][_0x98cd('0x67')]({'where':{'id':_0x11184e[_0x98cd('0x57')]['id']}})[_0x98cd('0x28')](handleEntityNotFound(_0xbbbaf3,null))['then'](function(_0x1cf019){if(_0x1cf019){_0x449358=_0x1cf019;_0x256992['model']=_[_0x98cd('0x38')](db['Team'][_0x98cd('0x32')]);_0x256992[_0x98cd('0x37')]=_[_0x98cd('0x38')](_0x11184e[_0x98cd('0x37')]);_0x256992[_0x98cd('0x39')]=_[_0x98cd('0x3a')](_0x256992[_0x98cd('0x36')],_0x256992[_0x98cd('0x37')]);_0x3481ed['attributes']=_['intersection'](_0x256992['model'],qs[_0x98cd('0x3c')](_0x11184e[_0x98cd('0x37')][_0x98cd('0x3c')]));_0x3481ed[_0x98cd('0x3b')]=_0x3481ed[_0x98cd('0x3b')][_0x98cd('0x3d')]?_0x3481ed[_0x98cd('0x3b')]:_0x256992[_0x98cd('0x36')];_0x3481ed[_0x98cd('0x40')]=qs[_0x98cd('0x41')](_0x11184e['query'][_0x98cd('0x41')]);_0x3481ed[_0x98cd('0x42')]=qs[_0x98cd('0x39')](_[_0x98cd('0x43')](_0x11184e[_0x98cd('0x37')],_0x256992[_0x98cd('0x39')]));if(_0x11184e['query'][_0x98cd('0x44')]){_0x3481ed[_0x98cd('0x42')]=_[_0x98cd('0x45')](_0x3481ed[_0x98cd('0x42')],{'$or':_[_0x98cd('0x30')](_0x3481ed[_0x98cd('0x3b')],function(_0x20ed50){var _0x2635fe={};_0x2635fe[_0x20ed50]={'$like':'%'+_0x11184e[_0x98cd('0x37')]['filter']+'%'};return _0x2635fe;})});}_0x3481ed=_[_0x98cd('0x45')]({},_0x3481ed,_0x11184e[_0x98cd('0x4b')]);return _0x449358[_0x98cd('0x66')](_0x3481ed);}})[_0x98cd('0x28')](function(_0x1fee4d){if(_0x1fee4d){_0x7deec4=_0x1fee4d['length'];if(!_0x11184e[_0x98cd('0x37')][_0x98cd('0x3e')](_0x98cd('0x3f'))){_0x3481ed[_0x98cd('0x20')]=qs[_0x98cd('0x20')](_0x11184e['query']['limit']);_0x3481ed[_0x98cd('0x22')]=qs[_0x98cd('0x22')](_0x11184e[_0x98cd('0x37')]['offset']);}return _0x449358[_0x98cd('0x66')](_0x3481ed);}})[_0x98cd('0x28')](function(_0x32fc86){if(_0x32fc86){return _0x32fc86?{'count':_0x7deec4,'rows':_0x32fc86}:null;}})[_0x98cd('0x28')](respondWithResult(_0xbbbaf3,null))[_0x98cd('0x4c')](handleError(_0xbbbaf3,null));};exports[_0x98cd('0x68')]=function(_0x572fc8,_0x3aa445,_0x597d89){var _0x47ca12=_0x572fc8[_0x98cd('0x4e')][_0x98cd('0x69')];return db[_0x98cd('0x6a')]['findAll']({'where':{'id':_0x47ca12},'attributes':['id'],'include':[{'model':db[_0x98cd('0x5c')],'as':_0x98cd('0x6b'),'attributes':['id',_0x98cd('0x2d'),'online','voicePause',_0x98cd('0x6c')],'raw':!![]}]})[_0x98cd('0x28')](function(_0x1a16a0){if(_0x1a16a0){var _0x48fafa=_[_0x98cd('0x6d')](_0x1a16a0,function(_0x2cd5c6){var _0x2e6bf1=_0x2cd5c6[_0x98cd('0x2a')]({'plain':!![]});return _0x2e6bf1['Agents'];});return db[_0x98cd('0x31')][_0x98cd('0x53')]({'where':{'id':_0x572fc8[_0x98cd('0x57')]['id']}})['then'](function(_0xa86db0){return db[_0x98cd('0x6e')]['transaction'](function(_0x4953a6){return _0xa86db0[_0x98cd('0x68')](_0x47ca12,{'transaction':_0x4953a6})[_0x98cd('0x28')](function(){return BPromise[_0x98cd('0x6f')](_0x48fafa,function(_0x59bb78){return db[_0x98cd('0x5a')][_0x98cd('0x70')]({'where':{'UserId':_0x59bb78['id'],'MailQueueId':_0x572fc8[_0x98cd('0x57')]['id']},'transaction':_0x4953a6});});})[_0x98cd('0x28')](function(){_0x48fafa[_0x98cd('0x71')](function(_0x573afc){socket['emit'](_0x98cd('0x72'),{'UserId':_0x573afc['id'],'MailQueueId':_0xa86db0['id']});});});});});}})[_0x98cd('0x28')](respondWithStatusCode(_0x3aa445,null))[_0x98cd('0x4c')](handleError(_0x3aa445,null));};exports[_0x98cd('0x73')]=function(_0x16defc,_0x295ff0,_0x37cec6){return db[_0x98cd('0x6a')][_0x98cd('0x48')]({'where':{'id':_0x16defc['query'][_0x98cd('0x69')]},'attributes':['id'],'include':[{'model':db[_0x98cd('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x98cd('0x28')](handleEntityNotFound(_0x295ff0,null))[_0x98cd('0x28')](function(_0x5540ce){var _0x1ffd02=_[_0x98cd('0x30')](_0x5540ce,'id');var _0x6f7930=[];var _0x4f5ac7=[];var _0x15c67d=squel[_0x98cd('0x74')]();_0x15c67d['field'](_0x98cd('0x75'))[_0x98cd('0x76')]('team_has_mail_queues','tq')[_0x98cd('0x77')](_0x98cd('0x78'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x98cd('0x42')]('MailQueueId\x20=\x20?',_0x16defc[_0x98cd('0x57')]['id']);for(var _0x2bfee3=0x0;_0x2bfee3<_0x5540ce[_0x98cd('0x3d')];_0x2bfee3+=0x1){let _0x41ef3c=_0x5540ce[_0x2bfee3];for(var _0x2aef14=0x0;_0x2aef14<_0x41ef3c[_0x98cd('0x6b')][_0x98cd('0x3d')];_0x2aef14+=0x1){let _0x2c35aa=_0x41ef3c[_0x98cd('0x6b')][_0x2aef14];var _0x3f55de=_0x15c67d[_0x98cd('0x79')]();_0x3f55de[_0x98cd('0x42')](_0x98cd('0x7a'),_0x2c35aa['id']);_0x4f5ac7['push'](db[_0x98cd('0x6e')][_0x98cd('0x37')](_0x3f55de[_0x98cd('0x7b')](),{'type':db[_0x98cd('0x6e')][_0x98cd('0x7c')][_0x98cd('0x7d')]})[_0x98cd('0x28')](function(_0x509265){if(_0x509265[_0x98cd('0x3d')]===0x1){return _0x2c35aa['id'];}else{var _0xf5dbdd=_[_0x98cd('0x7e')](_['map'](_0x509265,_0x98cd('0x7f')),function(_0x47981f){return _[_0x98cd('0x80')](_0x1ffd02,_0x47981f);});if(_0xf5dbdd){return _0x2c35aa['id'];}}}));}}return BPromise[_0x98cd('0x81')](_0x4f5ac7)[_0x98cd('0x28')](function(_0x170703){_0x6f7930=_(_0x6f7930)[_0x98cd('0x82')](_0x170703)[_0x98cd('0x83')]()['value']();return db['MailQueue'][_0x98cd('0x53')]({'where':{'id':_0x16defc[_0x98cd('0x57')]['id']}})[_0x98cd('0x28')](function(_0x5e484a){return db[_0x98cd('0x6e')][_0x98cd('0x84')](function(_0x427e02){return _0x5e484a[_0x98cd('0x73')](_0x16defc[_0x98cd('0x37')][_0x98cd('0x69')],{'transaction':_0x427e02})[_0x98cd('0x28')](function(){if(!_[_0x98cd('0x85')](_0x6f7930)){return _0x5e484a[_0x98cd('0x86')](_0x6f7930,{'transaction':_0x427e02});}})['then'](function(){_0x6f7930[_0x98cd('0x71')](function(_0x1d1133){socket['emit'](_0x98cd('0x87'),{'UserId':_0x1d1133,'MailQueueId':_0x5e484a['id']});});});});});});})['then'](respondWithStatusCode(_0x295ff0,null))[_0x98cd('0x4c')](handleError(_0x295ff0,null));};exports['addAgents']=function(_0x48f01b,_0xa2a08c,_0x4d8798){return db['MailQueue']['find']({'where':{'id':_0x48f01b['params']['id']}})[_0x98cd('0x28')](handleEntityNotFound(_0xa2a08c,null))[_0x98cd('0x28')](function(_0x188cd3){if(_0x188cd3){return _0x188cd3[_0x98cd('0x88')](_0x48f01b['body'][_0x98cd('0x69')],_[_0x98cd('0x89')](_0x48f01b[_0x98cd('0x4e')],[_0x98cd('0x69'),'id'])||{})[_0x98cd('0x8a')](function(_0x4f681c){for(var _0x25a234=0x0;_0x25a234<_0x48f01b[_0x98cd('0x4e')][_0x98cd('0x69')]['length'];_0x25a234+=0x1){socket[_0x98cd('0x8b')](_0x98cd('0x72'),{'UserId':Number(_0x48f01b[_0x98cd('0x4e')]['ids'][_0x25a234]),'MailQueueId':Number(_0x48f01b[_0x98cd('0x57')]['id'])});}return _0x4f681c;});}})['then'](respondWithResult(_0xa2a08c,null))[_0x98cd('0x4c')](handleError(_0xa2a08c,null));};exports[_0x98cd('0x86')]=function(_0x5159a8,_0x44519f,_0x211e54){return db[_0x98cd('0x31')][_0x98cd('0x53')]({'where':{'id':_0x5159a8[_0x98cd('0x57')]['id']}})[_0x98cd('0x28')](handleEntityNotFound(_0x44519f,null))[_0x98cd('0x28')](function(_0x2bd536){if(_0x2bd536){return _0x2bd536['removeAgents'](_0x5159a8[_0x98cd('0x37')]['ids'])['then'](function(){if(_['isArray'](_0x5159a8[_0x98cd('0x37')][_0x98cd('0x69')])){for(var _0x45459b=0x0;_0x45459b<_0x5159a8[_0x98cd('0x37')][_0x98cd('0x69')][_0x98cd('0x3d')];_0x45459b+=0x1){socket['emit']('userMailQueue:remove',{'UserId':Number(_0x5159a8[_0x98cd('0x37')][_0x98cd('0x69')][_0x45459b]),'MailQueueId':Number(_0x5159a8[_0x98cd('0x57')]['id'])});}}else{socket[_0x98cd('0x8b')](_0x98cd('0x87'),{'UserId':Number(_0x5159a8[_0x98cd('0x37')][_0x98cd('0x69')]),'MailQueueId':Number(_0x5159a8[_0x98cd('0x57')]['id'])});}});}})[_0x98cd('0x28')](respondWithStatusCode(_0x44519f,null))[_0x98cd('0x4c')](handleError(_0x44519f,null));};exports['getAgents']=function(_0x5d325a,_0x39f134,_0xf8d144){var _0x4b0fa4={};var _0x5b5324={};var _0x57f85c;var _0x295f9c;return db[_0x98cd('0x31')][_0x98cd('0x67')]({'where':{'id':_0x5d325a['params']['id']}})[_0x98cd('0x28')](handleEntityNotFound(_0x39f134,null))[_0x98cd('0x28')](function(_0x2eff6d){if(_0x2eff6d){_0x57f85c=_0x2eff6d;_0x5b5324[_0x98cd('0x36')]=_[_0x98cd('0x38')](db['User'][_0x98cd('0x32')]);_0x5b5324[_0x98cd('0x37')]=_[_0x98cd('0x38')](_0x5d325a[_0x98cd('0x37')]);_0x5b5324['filters']=_[_0x98cd('0x3a')](_0x5b5324[_0x98cd('0x36')],_0x5b5324[_0x98cd('0x37')]);_0x4b0fa4[_0x98cd('0x3b')]=_[_0x98cd('0x3a')](_0x5b5324['model'],qs[_0x98cd('0x3c')](_0x5d325a[_0x98cd('0x37')][_0x98cd('0x3c')]));_0x4b0fa4[_0x98cd('0x3b')]=_0x4b0fa4[_0x98cd('0x3b')][_0x98cd('0x3d')]?_0x4b0fa4['attributes']:_0x5b5324['model'];_0x4b0fa4[_0x98cd('0x40')]=qs[_0x98cd('0x41')](_0x5d325a['query']['sort']);_0x4b0fa4[_0x98cd('0x42')]=qs['filters'](_['pick'](_0x5d325a[_0x98cd('0x37')],_0x5b5324[_0x98cd('0x39')]));if(_0x5d325a[_0x98cd('0x37')][_0x98cd('0x44')]){_0x4b0fa4[_0x98cd('0x42')]=_[_0x98cd('0x45')](_0x4b0fa4[_0x98cd('0x42')],{'$or':_[_0x98cd('0x30')](_0x4b0fa4[_0x98cd('0x3b')],function(_0x515fb0){var _0x37af88={};_0x37af88[_0x515fb0]={'$like':'%'+_0x5d325a[_0x98cd('0x37')][_0x98cd('0x44')]+'%'};return _0x37af88;})});}_0x4b0fa4=_[_0x98cd('0x45')]({},_0x4b0fa4,_0x5d325a[_0x98cd('0x4b')]);return _0x57f85c['getAgents'](_0x4b0fa4);}})[_0x98cd('0x28')](function(_0x9f59e4){if(_0x9f59e4){_0x295f9c=_0x9f59e4[_0x98cd('0x3d')];if(!_0x5d325a[_0x98cd('0x37')][_0x98cd('0x3e')]('nolimit')){_0x4b0fa4[_0x98cd('0x20')]=qs[_0x98cd('0x20')](_0x5d325a['query'][_0x98cd('0x20')]);_0x4b0fa4[_0x98cd('0x22')]=qs[_0x98cd('0x22')](_0x5d325a[_0x98cd('0x37')][_0x98cd('0x22')]);}return _0x57f85c['getAgents'](_0x4b0fa4);}})[_0x98cd('0x28')](function(_0x1b35db){if(_0x1b35db){return _0x1b35db?{'count':_0x295f9c,'rows':_0x1b35db}:null;}})[_0x98cd('0x28')](respondWithResult(_0x39f134,null))[_0x98cd('0x4c')](handleError(_0x39f134,null));};
\ No newline at end of file
index 120746f..8a28033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad80=['hasOwnProperty','hook','exports','events','setMaxListeners','save','update','remove','emit'];(function(_0x285f9b,_0xfcae6c){var _0x32dd58=function(_0x392920){while(--_0x392920){_0x285f9b['push'](_0x285f9b['shift']());}};_0x32dd58(++_0xfcae6c);}(_0xad80,0x1c5));var _0x0ad8=function(_0x5315f4,_0x2de36d){_0x5315f4=_0x5315f4-0x0;var _0x44dba8=_0xad80[_0x5315f4];return _0x44dba8;};'use strict';var EventEmitter=require(_0x0ad8('0x0'));var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x0ad8('0x1')](0x0);var events={'afterCreate':_0x0ad8('0x2'),'afterUpdate':_0x0ad8('0x3'),'afterDestroy':_0x0ad8('0x4')};function emitEvent(_0x5a4f30){return function(_0x2ad4dd,_0x2b5b6f,_0x55351c){MailQueueEvents['emit'](_0x5a4f30+':'+_0x2ad4dd['id'],_0x2ad4dd);MailQueueEvents[_0x0ad8('0x5')](_0x5a4f30,_0x2ad4dd);_0x55351c(null);};}for(var e in events){if(events[_0x0ad8('0x6')](e)){var event=events[e];MailQueue[_0x0ad8('0x7')](e,emitEvent(event));}}module[_0x0ad8('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x9584=['../../mysqldb','MailQueue','save','remove','emit','hook','exports','events'];(function(_0x29f31c,_0x46bbdf){var _0x3b6b8a=function(_0x557471){while(--_0x557471){_0x29f31c['push'](_0x29f31c['shift']());}};_0x3b6b8a(++_0x46bbdf);}(_0x9584,0x15f));var _0x4958=function(_0x3785df,_0x138ef9){_0x3785df=_0x3785df-0x0;var _0x4d8d0e=_0x9584[_0x3785df];return _0x4d8d0e;};'use strict';var EventEmitter=require(_0x4958('0x0'));var MailQueue=require(_0x4958('0x1'))['db'][_0x4958('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4958('0x3'),'afterUpdate':'update','afterDestroy':_0x4958('0x4')};function emitEvent(_0x5c4f55){return function(_0x59ca82,_0x3554f6,_0x14c557){MailQueueEvents[_0x4958('0x5')](_0x5c4f55+':'+_0x59ca82['id'],_0x59ca82);MailQueueEvents[_0x4958('0x5')](_0x5c4f55,_0x59ca82);_0x14c557(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x4958('0x6')](e,emitEvent(event));}}module[_0x4958('0x7')]=MailQueueEvents;
\ No newline at end of file
index 8378a0e..e119951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c5=['define','mail_queues','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./mailQueue.attributes'];(function(_0x3238ea,_0x91809d){var _0x4aaac2=function(_0xc5b102){while(--_0xc5b102){_0x3238ea['push'](_0x3238ea['shift']());}};_0x4aaac2(++_0x91809d);}(_0x93c5,0x14c));var _0x593c=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x93c5[_0x513aa5];return _0x1a1a7c;};'use strict';var _=require('lodash');var util=require(_0x593c('0x0'));var logger=require(_0x593c('0x1'))(_0x593c('0x2'));var moment=require(_0x593c('0x3'));var BPromise=require('bluebird');var rp=require(_0x593c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x593c('0x5'));var config=require(_0x593c('0x6'));var attributes=require(_0x593c('0x7'));module['exports']=function(_0x513fa0,_0x2d83f2){return _0x513fa0[_0x593c('0x8')]('MailQueue',attributes,{'tableName':_0x593c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7917=['util','../../config/logger','bluebird','rimraf','../../config/environment','exports','MailQueue','mail_queues','lodash'];(function(_0x1412ce,_0x532fa7){var _0xe87ef4=function(_0x504115){while(--_0x504115){_0x1412ce['push'](_0x1412ce['shift']());}};_0xe87ef4(++_0x532fa7);}(_0x7917,0xa1));var _0x7791=function(_0x1a99d1,_0x37c71a){_0x1a99d1=_0x1a99d1-0x0;var _0xe861e4=_0x7917[_0x1a99d1];return _0xe861e4;};'use strict';var _=require(_0x7791('0x0'));var util=require(_0x7791('0x1'));var logger=require(_0x7791('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7791('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7791('0x4'));var config=require(_0x7791('0x5'));var attributes=require('./mailQueue.attributes');module[_0x7791('0x6')]=function(_0x20ff62,_0x1b40ed){return _0x20ff62['define'](_0x7791('0x7'),attributes,{'tableName':_0x7791('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ffcc208..4e9ed79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a9=['../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','./mailQueue.socket','then','info','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','MailQueue','findAll','options','raw','where','attributes','map','include','model','GetMailQueue','stringify','ShowMailQueue','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5ecc89,_0x163e7b){var _0x184108=function(_0x3def1f){while(--_0x3def1f){_0x5ecc89['push'](_0x5ecc89['shift']());}};_0x184108(++_0x163e7b);}(_0x18a9,0x17e));var _0x918a=function(_0x278ca2,_0x21e911){_0x278ca2=_0x278ca2-0x0;var _0x39ae01=_0x18a9[_0x278ca2];return _0x39ae01;};'use strict';var _=require(_0x918a('0x0'));var util=require('util');var moment=require(_0x918a('0x1'));var BPromise=require('bluebird');var rs=require(_0x918a('0x2'));var fs=require('fs');var Redis=require(_0x918a('0x3'));var db=require(_0x918a('0x4'))['db'];var utils=require(_0x918a('0x5'));var logger=require(_0x918a('0x6'))(_0x918a('0x7'));var config=require(_0x918a('0x8'));var jayson=require(_0x918a('0x9'));var client=jayson[_0x918a('0xa')][_0x918a('0xb')]({'port':0x232a});config['redis']=_[_0x918a('0xc')](config['redis'],{'host':_0x918a('0xd'),'port':0x18eb});var socket=require(_0x918a('0xe'))(new Redis(config['redis']));require(_0x918a('0xf'))['register'](socket);function respondWithRpcPromise(_0x1a19ad,_0x45b3a9,_0x35e72e){return new BPromise(function(_0x1d098c,_0x5b49f8){return client['request'](_0x1a19ad,_0x35e72e)[_0x918a('0x10')](function(_0x299b7f){logger[_0x918a('0x11')](_0x918a('0x12'),_0x45b3a9,'request\x20sent');logger[_0x918a('0x13')](_0x918a('0x14'),_0x45b3a9,_0x918a('0x15'),JSON['stringify'](_0x299b7f));if(_0x299b7f[_0x918a('0x16')]){if(_0x299b7f[_0x918a('0x16')][_0x918a('0x17')]===0x1f4){logger['error'](_0x918a('0x12'),_0x45b3a9,_0x299b7f[_0x918a('0x16')]['message']);return _0x5b49f8(_0x299b7f['error'][_0x918a('0x18')]);}logger[_0x918a('0x16')](_0x918a('0x12'),_0x45b3a9,_0x299b7f['error'][_0x918a('0x18')]);return _0x1d098c(_0x299b7f[_0x918a('0x16')]['message']);}else{logger[_0x918a('0x11')](_0x918a('0x12'),_0x45b3a9,_0x918a('0x15'));_0x1d098c(_0x299b7f['result'][_0x918a('0x18')]);}})[_0x918a('0x19')](function(_0x5266bb){logger[_0x918a('0x16')]('MailQueue,\x20%s,\x20%s',_0x45b3a9,_0x5266bb);_0x5b49f8(_0x5266bb);});});}exports['GetMailQueue']=function(_0x568464){var _0x298d0d=this;return new Promise(function(_0x407d1f,_0x5e2cb0){return db[_0x918a('0x1a')][_0x918a('0x1b')]({'raw':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')][_0x918a('0x1d')]===undefined?!![]:![]:!![],'where':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')][_0x918a('0x1e')]||null:null,'attributes':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')][_0x918a('0x1f')]||null:null,'limit':_0x568464['options']?_0x568464[_0x918a('0x1c')]['limit']||null:null,'include':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')]['include']?_[_0x918a('0x20')](_0x568464[_0x918a('0x1c')][_0x918a('0x21')],function(_0x3b065a){return{'model':db[_0x3b065a['model']],'as':_0x3b065a['as'],'attributes':_0x3b065a[_0x918a('0x1f')],'include':_0x3b065a[_0x918a('0x21')]?_['map'](_0x3b065a[_0x918a('0x21')],function(_0x1604fd){return{'model':db[_0x1604fd['model']],'as':_0x1604fd['as'],'attributes':_0x1604fd[_0x918a('0x1f')],'include':_0x1604fd[_0x918a('0x21')]?_[_0x918a('0x20')](_0x1604fd['include'],function(_0x3a2fe2){return{'model':db[_0x3a2fe2[_0x918a('0x22')]],'as':_0x3a2fe2['as'],'attributes':_0x3a2fe2[_0x918a('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x37e968){logger['info'](_0x918a('0x23'),_0x568464);logger[_0x918a('0x13')](_0x918a('0x23'),_0x568464,JSON[_0x918a('0x24')](_0x37e968));_0x407d1f(_0x37e968);})[_0x918a('0x19')](function(_0x2b9d34){logger[_0x918a('0x16')](_0x918a('0x23'),_0x2b9d34['message'],_0x568464);_0x5e2cb0(_0x298d0d[_0x918a('0x16')](0x1f4,_0x2b9d34[_0x918a('0x18')]));});});};exports[_0x918a('0x25')]=function(_0x5f4110){var _0x2d1b2d=this;return new Promise(function(_0x8e83a8,_0xfb5f9b){return db[_0x918a('0x1a')][_0x918a('0x26')]({'raw':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')][_0x918a('0x1e')]||null:null,'attributes':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')][_0x918a('0x1f')]||null:null,'include':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')][_0x918a('0x21')]?_[_0x918a('0x20')](_0x5f4110[_0x918a('0x1c')]['include'],function(_0x63366){return{'model':db[_0x63366['model']],'as':_0x63366['as'],'attributes':_0x63366[_0x918a('0x1f')],'include':_0x63366[_0x918a('0x21')]?_[_0x918a('0x20')](_0x63366[_0x918a('0x21')],function(_0x1d6577){return{'model':db[_0x1d6577[_0x918a('0x22')]],'as':_0x1d6577['as'],'attributes':_0x1d6577['attributes'],'include':_0x1d6577[_0x918a('0x21')]?_[_0x918a('0x20')](_0x1d6577['include'],function(_0x1c928d){return{'model':db[_0x1c928d[_0x918a('0x22')]],'as':_0x1c928d['as'],'attributes':_0x1c928d[_0x918a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x918a('0x10')](function(_0x7d3775){logger[_0x918a('0x11')](_0x918a('0x25'),_0x5f4110);logger[_0x918a('0x13')]('ShowMailQueue',_0x5f4110,JSON[_0x918a('0x24')](_0x7d3775));_0x8e83a8(_0x7d3775);})['catch'](function(_0x1f9c08){logger[_0x918a('0x16')]('ShowMailQueue',_0x1f9c08[_0x918a('0x18')],_0x5f4110);_0xfb5f9b(_0x2d1b2d[_0x918a('0x16')](0x1f4,_0x1f9c08[_0x918a('0x18')]));});});};
\ No newline at end of file
+var _0x151a=['redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','MailQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','GetMailQueue','MailQueue','findAll','options','raw','limit','include','map','attributes','model','stringify','find','where','ShowMailQueue','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client'];(function(_0x34e3b1,_0x43bfec){var _0x21d4b2=function(_0x159009){while(--_0x159009){_0x34e3b1['push'](_0x34e3b1['shift']());}};_0x21d4b2(++_0x43bfec);}(_0x151a,0x12f));var _0xa151=function(_0x2d1dcd,_0x20ae0f){_0x2d1dcd=_0x2d1dcd-0x0;var _0x2a5a40=_0x151a[_0x2d1dcd];return _0x2a5a40;};'use strict';var _=require(_0xa151('0x0'));var util=require(_0xa151('0x1'));var moment=require(_0xa151('0x2'));var BPromise=require(_0xa151('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa151('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa151('0x5'));var logger=require('../../config/logger')(_0xa151('0x6'));var config=require(_0xa151('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa151('0x8')]['http']({'port':0x232a});config[_0xa151('0x9')]=_[_0xa151('0xa')](config[_0xa151('0x9')],{'host':_0xa151('0xb'),'port':0x18eb});var socket=require(_0xa151('0xc'))(new Redis(config['redis']));require(_0xa151('0xd'))[_0xa151('0xe')](socket);function respondWithRpcPromise(_0x391d4a,_0x1ff93d,_0x225163){return new BPromise(function(_0x182ab8,_0x38e5ab){return client[_0xa151('0xf')](_0x391d4a,_0x225163)[_0xa151('0x10')](function(_0x2f1d86){logger['info'](_0xa151('0x11'),_0x1ff93d,_0xa151('0x12'));logger[_0xa151('0x13')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x1ff93d,_0xa151('0x12'),JSON['stringify'](_0x2f1d86));if(_0x2f1d86[_0xa151('0x14')]){if(_0x2f1d86[_0xa151('0x14')][_0xa151('0x15')]===0x1f4){logger[_0xa151('0x14')](_0xa151('0x11'),_0x1ff93d,_0x2f1d86[_0xa151('0x14')][_0xa151('0x16')]);return _0x38e5ab(_0x2f1d86['error'][_0xa151('0x16')]);}logger['error'](_0xa151('0x11'),_0x1ff93d,_0x2f1d86[_0xa151('0x14')]['message']);return _0x182ab8(_0x2f1d86[_0xa151('0x14')][_0xa151('0x16')]);}else{logger[_0xa151('0x17')](_0xa151('0x11'),_0x1ff93d,_0xa151('0x12'));_0x182ab8(_0x2f1d86['result'][_0xa151('0x16')]);}})[_0xa151('0x18')](function(_0x295f7d){logger[_0xa151('0x14')](_0xa151('0x11'),_0x1ff93d,_0x295f7d);_0x38e5ab(_0x295f7d);});});}exports[_0xa151('0x19')]=function(_0x5315f0){var _0x3b66c9=this;return new Promise(function(_0x3a3802,_0x409e0a){return db[_0xa151('0x1a')][_0xa151('0x1b')]({'raw':_0x5315f0[_0xa151('0x1c')]?_0x5315f0[_0xa151('0x1c')][_0xa151('0x1d')]===undefined?!![]:![]:!![],'where':_0x5315f0[_0xa151('0x1c')]?_0x5315f0['options']['where']||null:null,'attributes':_0x5315f0[_0xa151('0x1c')]?_0x5315f0['options']['attributes']||null:null,'limit':_0x5315f0['options']?_0x5315f0['options'][_0xa151('0x1e')]||null:null,'include':_0x5315f0[_0xa151('0x1c')]?_0x5315f0[_0xa151('0x1c')][_0xa151('0x1f')]?_[_0xa151('0x20')](_0x5315f0[_0xa151('0x1c')][_0xa151('0x1f')],function(_0x188203){return{'model':db[_0x188203['model']],'as':_0x188203['as'],'attributes':_0x188203[_0xa151('0x21')],'include':_0x188203[_0xa151('0x1f')]?_[_0xa151('0x20')](_0x188203['include'],function(_0x1a3f12){return{'model':db[_0x1a3f12[_0xa151('0x22')]],'as':_0x1a3f12['as'],'attributes':_0x1a3f12[_0xa151('0x21')],'include':_0x1a3f12[_0xa151('0x1f')]?_[_0xa151('0x20')](_0x1a3f12[_0xa151('0x1f')],function(_0x63446){return{'model':db[_0x63446[_0xa151('0x22')]],'as':_0x63446['as'],'attributes':_0x63446[_0xa151('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa151('0x10')](function(_0x283b35){logger['info'](_0xa151('0x19'),_0x5315f0);logger[_0xa151('0x13')](_0xa151('0x19'),_0x5315f0,JSON[_0xa151('0x23')](_0x283b35));_0x3a3802(_0x283b35);})[_0xa151('0x18')](function(_0x21a16d){logger['error'](_0xa151('0x19'),_0x21a16d[_0xa151('0x16')],_0x5315f0);_0x409e0a(_0x3b66c9['error'](0x1f4,_0x21a16d[_0xa151('0x16')]));});});};exports['ShowMailQueue']=function(_0x3c4007){var _0x45ebb4=this;return new Promise(function(_0x3177da,_0xfecd4c){return db['MailQueue'][_0xa151('0x24')]({'raw':_0x3c4007['options']?_0x3c4007['options'][_0xa151('0x1d')]===undefined?!![]:![]:!![],'where':_0x3c4007[_0xa151('0x1c')]?_0x3c4007[_0xa151('0x1c')][_0xa151('0x25')]||null:null,'attributes':_0x3c4007['options']?_0x3c4007['options']['attributes']||null:null,'include':_0x3c4007['options']?_0x3c4007[_0xa151('0x1c')][_0xa151('0x1f')]?_['map'](_0x3c4007[_0xa151('0x1c')][_0xa151('0x1f')],function(_0x30fba4){return{'model':db[_0x30fba4['model']],'as':_0x30fba4['as'],'attributes':_0x30fba4[_0xa151('0x21')],'include':_0x30fba4['include']?_[_0xa151('0x20')](_0x30fba4['include'],function(_0x2edc50){return{'model':db[_0x2edc50['model']],'as':_0x2edc50['as'],'attributes':_0x2edc50[_0xa151('0x21')],'include':_0x2edc50[_0xa151('0x1f')]?_[_0xa151('0x20')](_0x2edc50['include'],function(_0x36a4e7){return{'model':db[_0x36a4e7['model']],'as':_0x36a4e7['as'],'attributes':_0x36a4e7['attributes']};}):[]};}):[]};}):[]:[]})[_0xa151('0x10')](function(_0x1ebed9){logger['info']('ShowMailQueue',_0x3c4007);logger[_0xa151('0x13')](_0xa151('0x26'),_0x3c4007,JSON[_0xa151('0x23')](_0x1ebed9));_0x3177da(_0x1ebed9);})['catch'](function(_0x47fb3f){logger[_0xa151('0x14')](_0xa151('0x26'),_0x47fb3f['message'],_0x3c4007);_0xfecd4c(_0x45ebb4['error'](0x1f4,_0x47fb3f[_0xa151('0x16')]));});});};
\ No newline at end of file
index e41c523..a090c92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a84=['./mailQueue.events','save','update','emit','removeListener','register','length','mailQueue:'];(function(_0x360eff,_0x24c91b){var _0x3a640c=function(_0x506a06){while(--_0x506a06){_0x360eff['push'](_0x360eff['shift']());}};_0x3a640c(++_0x24c91b);}(_0x2a84,0x170));var _0x42a8=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2a84[_0x501510];return _0x1e6ee5;};'use strict';var MailQueueEvents=require(_0x42a8('0x0'));var events=[_0x42a8('0x1'),'remove',_0x42a8('0x2')];function createListener(_0x129919,_0x31508f){return function(_0x5c08b6){_0x31508f[_0x42a8('0x3')](_0x129919,_0x5c08b6);};}function removeListener(_0x49dca9,_0xea116f){return function(){MailQueueEvents[_0x42a8('0x4')](_0x49dca9,_0xea116f);};}exports[_0x42a8('0x5')]=function(_0x59505e){for(var _0x593b3a=0x0,_0x4b17b7=events[_0x42a8('0x6')];_0x593b3a<_0x4b17b7;_0x593b3a++){var _0x10c2fe=events[_0x593b3a];var _0x4ff8e0=createListener(_0x42a8('0x7')+_0x10c2fe,_0x59505e);MailQueueEvents['on'](_0x10c2fe,_0x4ff8e0);}};
\ No newline at end of file
+var _0x8d41=['save','remove','update','emit','length','mailQueue:','./mailQueue.events'];(function(_0x41cf46,_0x28f112){var _0x5da203=function(_0x2207df){while(--_0x2207df){_0x41cf46['push'](_0x41cf46['shift']());}};_0x5da203(++_0x28f112);}(_0x8d41,0x12c));var _0x18d4=function(_0x29bef7,_0x5127f0){_0x29bef7=_0x29bef7-0x0;var _0x1ba0c1=_0x8d41[_0x29bef7];return _0x1ba0c1;};'use strict';var MailQueueEvents=require(_0x18d4('0x0'));var events=[_0x18d4('0x1'),_0x18d4('0x2'),_0x18d4('0x3')];function createListener(_0x3e818f,_0x1f25d2){return function(_0x1fca28){_0x1f25d2[_0x18d4('0x4')](_0x3e818f,_0x1fca28);};}function removeListener(_0x20c75,_0x14a477){return function(){MailQueueEvents['removeListener'](_0x20c75,_0x14a477);};}exports['register']=function(_0x1a3811){for(var _0xad1c6d=0x0,_0x20275f=events[_0x18d4('0x5')];_0xad1c6d<_0x20275f;_0xad1c6d++){var _0x81d9bf=events[_0xad1c6d];var _0x1b0f97=createListener(_0x18d4('0x6')+_0x81d9bf,_0x1a3811);MailQueueEvents['on'](_0x81d9bf,_0x1b0f97);}};
\ No newline at end of file
index 6197d06..6ee3424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f63=['get','isAuthenticated','/describe','describe','/:id','create','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./mailQueueReport.controller'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x4f63,0x80));var _0x34f6=function(_0x409f3f,_0x476945){_0x409f3f=_0x409f3f-0x0;var _0x5753c8=_0x4f63[_0x409f3f];return _0x5753c8;};'use strict';var multer=require(_0x34f6('0x0'));var util=require(_0x34f6('0x1'));var path=require(_0x34f6('0x2'));var timeout=require(_0x34f6('0x3'));var express=require(_0x34f6('0x4'));var router=express['Router']();var fs_extra=require(_0x34f6('0x5'));var auth=require(_0x34f6('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34f6('0x7'));router[_0x34f6('0x8')]('/',auth[_0x34f6('0x9')](),controller['index']);router[_0x34f6('0x8')](_0x34f6('0xa'),auth['isAuthenticated'](),controller[_0x34f6('0xb')]);router[_0x34f6('0x8')](_0x34f6('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x34f6('0x9')](),controller[_0x34f6('0xd')]);router['put'](_0x34f6('0xc'),auth[_0x34f6('0x9')](),controller[_0x34f6('0xe')]);router[_0x34f6('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x34f6('0x10')]=router;
\ No newline at end of file
+var _0x5fef=['fs-extra','../../components/auth/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x24087b,_0x10c09a){var _0x1ba8e4=function(_0x519f32){while(--_0x519f32){_0x24087b['push'](_0x24087b['shift']());}};_0x1ba8e4(++_0x10c09a);}(_0x5fef,0xe1));var _0xf5fe=function(_0x12b071,_0x16d8f0){_0x12b071=_0x12b071-0x0;var _0x38f9e9=_0x5fef[_0x12b071];return _0x38f9e9;};'use strict';var multer=require(_0xf5fe('0x0'));var util=require(_0xf5fe('0x1'));var path=require(_0xf5fe('0x2'));var timeout=require('connect-timeout');var express=require(_0xf5fe('0x3'));var router=express[_0xf5fe('0x4')]();var fs_extra=require(_0xf5fe('0x5'));var auth=require(_0xf5fe('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf5fe('0x7'));var controller=require(_0xf5fe('0x8'));router['get']('/',auth[_0xf5fe('0x9')](),controller[_0xf5fe('0xa')]);router[_0xf5fe('0xb')](_0xf5fe('0xc'),auth['isAuthenticated'](),controller[_0xf5fe('0xd')]);router[_0xf5fe('0xb')](_0xf5fe('0xe'),auth[_0xf5fe('0x9')](),controller[_0xf5fe('0xf')]);router[_0xf5fe('0x10')]('/',auth[_0xf5fe('0x9')](),controller[_0xf5fe('0x11')]);router[_0xf5fe('0x12')](_0xf5fe('0xe'),auth[_0xf5fe('0x9')](),controller[_0xf5fe('0x13')]);router[_0xf5fe('0x14')](_0xf5fe('0xe'),auth[_0xf5fe('0x9')](),controller[_0xf5fe('0x15')]);module[_0xf5fe('0x16')]=router;
\ No newline at end of file
index f441c56..d68e81f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6395=['moment','exports','STRING','DATE'];(function(_0x414f67,_0x861aed){var _0x338537=function(_0x4696fd){while(--_0x4696fd){_0x414f67['push'](_0x414f67['shift']());}};_0x338537(++_0x861aed);}(_0x6395,0xc8));var _0x5639=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x6395[_0x17d9e3];return _0x14192d;};'use strict';var moment=require(_0x5639('0x0'));var Sequelize=require('sequelize');module[_0x5639('0x1')]={'uniqueid':{'type':Sequelize[_0x5639('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x5639('0x2')]},'joinAt':{'type':Sequelize[_0x5639('0x3')]},'leaveAt':{'type':Sequelize[_0x5639('0x3')]},'acceptAt':{'type':Sequelize[_0x5639('0x3')]},'exitAt':{'type':Sequelize[_0x5639('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0c3f=['sequelize','STRING','DATE','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c3f,0xb3));var _0xf0c3=function(_0x49f41d,_0x3da4c0){_0x49f41d=_0x49f41d-0x0;var _0x2b34eb=_0x0c3f[_0x49f41d];return _0x2b34eb;};'use strict';var moment=require(_0xf0c3('0x0'));var Sequelize=require(_0xf0c3('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xf0c3('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xf0c3('0x3')]},'leaveAt':{'type':Sequelize[_0xf0c3('0x3')]},'acceptAt':{'type':Sequelize[_0xf0c3('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 85e968e..102fd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','map','VIRTUAL','filter','merge','count','includeAll','include','findAll','show','params','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','MailQueueReport','rawAttributes','fieldName','type','key','model'];(function(_0x2e3e32,_0x569c41){var _0x2f0ce1=function(_0x449e60){while(--_0x449e60){_0x2e3e32['push'](_0x2e3e32['shift']());}};_0x2f0ce1(++_0x569c41);}(_0x47c5,0x165));var _0x547c=function(_0x2c2d99,_0x1a61ce){_0x2c2d99=_0x2c2d99-0x0;var _0xc9af40=_0x47c5[_0x2c2d99];return _0xc9af40;};'use strict';var emlformat=require(_0x547c('0x0'));var rimraf=require(_0x547c('0x1'));var zipdir=require(_0x547c('0x2'));var jsonpatch=require(_0x547c('0x3'));var rp=require(_0x547c('0x4'));var moment=require(_0x547c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x547c('0x6'));var util=require(_0x547c('0x7'));var path=require('path');var sox=require(_0x547c('0x8'));var csv=require(_0x547c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x547c('0xa'));var _=require(_0x547c('0xb'));var squel=require(_0x547c('0xc'));var crypto=require(_0x547c('0xd'));var jsforce=require(_0x547c('0xe'));var deskjs=require(_0x547c('0xf'));var toCsv=require(_0x547c('0x9'));var querystring=require(_0x547c('0x10'));var Papa=require(_0x547c('0x11'));var Redis=require(_0x547c('0x12'));var authService=require(_0x547c('0x13'));var qs=require(_0x547c('0x14'));var as=require(_0x547c('0x15'));var hardwareService=require(_0x547c('0x16'));var logger=require(_0x547c('0x17'))(_0x547c('0x18'));var utils=require(_0x547c('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x547c('0x1a'));var db=require(_0x547c('0x1b'))['db'];function respondWithStatusCode(_0x5eea67,_0x436c19){_0x436c19=_0x436c19||0xcc;return function(_0x201d95){if(_0x201d95){return _0x5eea67[_0x547c('0x1c')](_0x436c19);}return _0x5eea67[_0x547c('0x1d')](_0x436c19)[_0x547c('0x1e')]();};}function respondWithResult(_0x150317,_0x2bc289){_0x2bc289=_0x2bc289||0xc8;return function(_0xa3c7b0){if(_0xa3c7b0){return _0x150317[_0x547c('0x1d')](_0x2bc289)[_0x547c('0x1f')](_0xa3c7b0);}};}function respondWithFilteredResult(_0x240243,_0x103455){return function(_0x39f316){if(_0x39f316){var _0x23644b=typeof _0x103455[_0x547c('0x20')]===_0x547c('0x21')&&typeof _0x103455[_0x547c('0x22')]===_0x547c('0x21');var _0x49acca=_0x39f316['count'];var _0x23fa9e=_0x23644b?0x0:_0x103455[_0x547c('0x20')];var _0xeb059e=_0x23644b?_0x39f316['count']:_0x103455[_0x547c('0x20')]+_0x103455[_0x547c('0x22')];var _0x1ddbd3;if(_0xeb059e>=_0x49acca){_0xeb059e=_0x49acca;_0x1ddbd3=0xc8;}else{_0x1ddbd3=0xce;}_0x240243['status'](_0x1ddbd3);return _0x240243[_0x547c('0x23')](_0x547c('0x24'),_0x23fa9e+'-'+_0xeb059e+'/'+_0x49acca)['json'](_0x39f316);}return null;};}function patchUpdates(_0x5453f9){return function(_0x35040a){try{jsonpatch[_0x547c('0x25')](_0x35040a,_0x5453f9,!![]);}catch(_0x4f20c1){return BPromise[_0x547c('0x26')](_0x4f20c1);}return _0x35040a[_0x547c('0x27')]();};}function saveUpdates(_0x592e46,_0x2e317a){return function(_0x17fd97){if(_0x17fd97){return _0x17fd97[_0x547c('0x28')](_0x592e46)['then'](function(_0x3a55a0){return _0x3a55a0;});}return null;};}function removeEntity(_0x361c5c,_0x470694){return function(_0x26823c){if(_0x26823c){return _0x26823c[_0x547c('0x29')]()[_0x547c('0x2a')](function(){_0x361c5c[_0x547c('0x1d')](0xcc)[_0x547c('0x1e')]();});}};}function handleEntityNotFound(_0x507895,_0x39c5f9){return function(_0x4c66b9){if(!_0x4c66b9){_0x507895['sendStatus'](0x194);}return _0x4c66b9;};}function handleError(_0x4855fd,_0x478f04){_0x478f04=_0x478f04||0x1f4;return function(_0x2c725d){logger['error'](_0x2c725d[_0x547c('0x2b')]);if(_0x2c725d['name']){delete _0x2c725d[_0x547c('0x2c')];}_0x4855fd['status'](_0x478f04)[_0x547c('0x2d')](_0x2c725d);};}exports[_0x547c('0x2e')]=function(_0x2389de,_0x30a96c){var _0x198afb={},_0x569924={},_0x575c74={'count':0x0,'rows':[]};var _0x28c282=_['map'](db[_0x547c('0x2f')][_0x547c('0x30')],function(_0x3e7652){return{'name':_0x3e7652[_0x547c('0x31')],'type':_0x3e7652[_0x547c('0x32')][_0x547c('0x33')]};});_0x569924[_0x547c('0x34')]=_['map'](_0x28c282,'name');_0x569924[_0x547c('0x35')]=_[_0x547c('0x36')](_0x2389de[_0x547c('0x35')]);_0x569924[_0x547c('0x37')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],_0x569924[_0x547c('0x35')]);_0x198afb[_0x547c('0x39')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],qs[_0x547c('0x3a')](_0x2389de[_0x547c('0x35')][_0x547c('0x3a')]));_0x198afb[_0x547c('0x39')]=_0x198afb['attributes'][_0x547c('0x3b')]?_0x198afb['attributes']:_0x569924['model'];if(!_0x2389de['query'][_0x547c('0x3c')](_0x547c('0x3d'))){_0x198afb[_0x547c('0x22')]=qs[_0x547c('0x22')](_0x2389de[_0x547c('0x35')][_0x547c('0x22')]);_0x198afb['offset']=qs['offset'](_0x2389de['query'][_0x547c('0x20')]);}_0x198afb[_0x547c('0x3e')]=qs[_0x547c('0x3f')](_0x2389de[_0x547c('0x35')][_0x547c('0x3f')]);_0x198afb[_0x547c('0x40')]=qs['filters'](_[_0x547c('0x41')](_0x2389de['query'],_0x569924[_0x547c('0x37')]),_0x28c282);if(_0x2389de[_0x547c('0x35')]['filter']){_0x198afb[_0x547c('0x40')]=_['merge'](_0x198afb['where'],{'$or':_[_0x547c('0x42')](_0x28c282,function(_0x281d52){if(_0x281d52[_0x547c('0x32')]!==_0x547c('0x43')){var _0x4c36b9={};_0x4c36b9[_0x281d52['name']]={'$like':'%'+_0x2389de[_0x547c('0x35')][_0x547c('0x44')]+'%'};return _0x4c36b9;}})});}_0x198afb=_[_0x547c('0x45')]({},_0x198afb,_0x2389de['options']);var _0x3886ae={'where':_0x198afb[_0x547c('0x40')]};return db[_0x547c('0x2f')]['count'](_0x3886ae)[_0x547c('0x2a')](function(_0x3a6a0a){_0x575c74[_0x547c('0x46')]=_0x3a6a0a;if(_0x2389de['query'][_0x547c('0x47')]){_0x198afb[_0x547c('0x48')]=[{'all':!![]}];}return db['MailQueueReport'][_0x547c('0x49')](_0x198afb);})[_0x547c('0x2a')](function(_0x9c3cb2){_0x575c74['rows']=_0x9c3cb2;return _0x575c74;})[_0x547c('0x2a')](respondWithFilteredResult(_0x30a96c,_0x198afb))['catch'](handleError(_0x30a96c,null));};exports[_0x547c('0x4a')]=function(_0x5393a2,_0xb86f5f){var _0x414b9d={'raw':!![],'where':{'id':_0x5393a2[_0x547c('0x4b')]['id']}},_0x3d37d7={};_0x3d37d7[_0x547c('0x34')]=_[_0x547c('0x36')](db['MailQueueReport']['rawAttributes']);_0x3d37d7[_0x547c('0x35')]=_[_0x547c('0x36')](_0x5393a2[_0x547c('0x35')]);_0x3d37d7['filters']=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],_0x3d37d7[_0x547c('0x35')]);_0x414b9d[_0x547c('0x39')]=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],qs['fields'](_0x5393a2[_0x547c('0x35')][_0x547c('0x3a')]));_0x414b9d[_0x547c('0x39')]=_0x414b9d['attributes'][_0x547c('0x3b')]?_0x414b9d[_0x547c('0x39')]:_0x3d37d7[_0x547c('0x34')];if(_0x5393a2[_0x547c('0x35')]['includeAll']){_0x414b9d[_0x547c('0x48')]=[{'all':!![]}];}_0x414b9d=_['merge']({},_0x414b9d,_0x5393a2[_0x547c('0x4c')]);return db['MailQueueReport'][_0x547c('0x4d')](_0x414b9d)[_0x547c('0x2a')](handleEntityNotFound(_0xb86f5f,null))['then'](respondWithResult(_0xb86f5f,null))[_0x547c('0x4e')](handleError(_0xb86f5f,null));};exports[_0x547c('0x4f')]=function(_0xa005cc,_0x1ddf30){return db['MailQueueReport'][_0x547c('0x4f')](_0xa005cc['body'],{})['then'](respondWithResult(_0x1ddf30,0xc9))[_0x547c('0x4e')](handleError(_0x1ddf30,null));};exports[_0x547c('0x28')]=function(_0x3e3f52,_0x11a878){if(_0x3e3f52[_0x547c('0x50')]['id']){delete _0x3e3f52[_0x547c('0x50')]['id'];}return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x3e3f52[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x11a878,null))[_0x547c('0x2a')](saveUpdates(_0x3e3f52[_0x547c('0x50')],null))['then'](respondWithResult(_0x11a878,null))['catch'](handleError(_0x11a878,null));};exports[_0x547c('0x29')]=function(_0x21ea26,_0x48de6e){return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x21ea26[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x48de6e,null))[_0x547c('0x2a')](removeEntity(_0x48de6e,null))[_0x547c('0x4e')](handleError(_0x48de6e,null));};exports['describe']=function(_0x152982,_0x5258cf){return db[_0x547c('0x2f')][_0x547c('0x51')]()[_0x547c('0x2a')](respondWithResult(_0x5258cf,null))['catch'](handleError(_0x5258cf,null));};
\ No newline at end of file
+var _0xadb5=['intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','describe','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','MailQueueReport','fieldName','type','key','model','query','keys'];(function(_0x10d1bf,_0x3b6413){var _0x305c6e=function(_0xc3c60e){while(--_0xc3c60e){_0x10d1bf['push'](_0x10d1bf['shift']());}};_0x305c6e(++_0x3b6413);}(_0xadb5,0xad));var _0x5adb=function(_0x2108f1,_0xd16c4e){_0x2108f1=_0x2108f1-0x0;var _0x479b04=_0xadb5[_0x2108f1];return _0x479b04;};'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['MailQueueReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['MailQueueReport'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['MailQueueReport'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};exports['describe']=function(_0x36b847,_0x3a5703){return db[_0x5adb('0x2a')][_0x5adb('0x49')]()['then'](respondWithResult(_0x3a5703,null))[_0x5adb('0x42')](handleError(_0x3a5703,null));};
\ No newline at end of file
index 9a99308..0b2353e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd8b=['define','MailQueueReport','report_mail_queue','uniqueid','util','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports'];(function(_0x55f3f0,_0x1f4ad1){var _0x2c218b=function(_0x531d06){while(--_0x531d06){_0x55f3f0['push'](_0x55f3f0['shift']());}};_0x2c218b(++_0x1f4ad1);}(_0xfd8b,0x72));var _0xbfd8=function(_0x17de0a,_0x2514a9){_0x17de0a=_0x17de0a-0x0;var _0x18cf68=_0xfd8b[_0x17de0a];return _0x18cf68;};'use strict';var _=require('lodash');var util=require(_0xbfd8('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbfd8('0x1'));var fs=require('fs');var path=require(_0xbfd8('0x2'));var rimraf=require(_0xbfd8('0x3'));var config=require(_0xbfd8('0x4'));var attributes=require(_0xbfd8('0x5'));module[_0xbfd8('0x6')]=function(_0x4ce252,_0x511954){return _0x4ce252[_0xbfd8('0x7')](_0xbfd8('0x8'),attributes,{'tableName':_0xbfd8('0x9'),'paranoid':![],'indexes':[{'name':_0xbfd8('0xa'),'fields':[_0xbfd8('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d4e=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailQueueReport.attributes','define','MailQueueReport','report_mail_queue','uniqueid','util'];(function(_0x217f77,_0x2b17ed){var _0x43d08d=function(_0x2d6ada){while(--_0x2d6ada){_0x217f77['push'](_0x217f77['shift']());}};_0x43d08d(++_0x2b17ed);}(_0x1d4e,0x137));var _0xe1d4=function(_0x219562,_0x18399f){_0x219562=_0x219562-0x0;var _0x4f182e=_0x1d4e[_0x219562];return _0x4f182e;};'use strict';var _=require('lodash');var util=require(_0xe1d4('0x0'));var logger=require(_0xe1d4('0x1'))(_0xe1d4('0x2'));var moment=require(_0xe1d4('0x3'));var BPromise=require(_0xe1d4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe1d4('0x5'));var rimraf=require(_0xe1d4('0x6'));var config=require(_0xe1d4('0x7'));var attributes=require(_0xe1d4('0x8'));module['exports']=function(_0x5bd87d,_0xb3ff5e){return _0x5bd87d[_0xe1d4('0x9')](_0xe1d4('0xa'),attributes,{'tableName':_0xe1d4('0xb'),'paranoid':![],'indexes':[{'name':_0xe1d4('0xc'),'fields':[_0xe1d4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 293f4ac..b5ac0a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x2e8775,_0x310049){var _0x4cbf35=function(_0x103483){while(--_0x103483){_0x2e8775['push'](_0x2e8775['shift']());}};_0x4cbf35(++_0x310049);}(_0x2ef3,0xba));var _0x32ef=function(_0x194b6e,_0x201257){_0x194b6e=_0x194b6e-0x0;var _0x28bd64=_0x2ef3[_0x194b6e];return _0x28bd64;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x19146a,_0x1c29d5){var _0x1edabb=function(_0x117f5f){while(--_0x117f5f){_0x19146a['push'](_0x19146a['shift']());}};_0x1edabb(++_0x1c29d5);}(_0x7a54,0x106));var _0x47a5=function(_0x579660,_0x30c68b){_0x579660=_0x579660-0x0;var _0x14e6ab=_0x7a54[_0x579660];return _0x14e6ab;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 3ee4c55..481930c 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(_0xcf82b2,_0x49ab9a){var _0x4275e9=function(_0x5b768f){while(--_0x5b768f){_0xcf82b2['push'](_0xcf82b2['shift']());}};_0x4275e9(++_0x49ab9a);}(_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(_0x9844c2,_0x4a6e0a){var _0x425407=function(_0x36141d){while(--_0x36141d){_0x9844c2['push'](_0x9844c2['shift']());}};_0x425407(++_0x4a6e0a);}(_0x9c44,0x178));var _0x49c4=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x9c44[_0x50a0c2];return _0x5ebadd;};'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 67390c1..7270cc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['BOOLEAN','INBOX','STRING','INTEGER'];(function(_0x162bc9,_0x5c117e){var _0x475e2d=function(_0x18c0e7){while(--_0x18c0e7){_0x162bc9['push'](_0x162bc9['shift']());}};_0x475e2d(++_0x5c117e);}(_0xa74f,0x9a));var _0xfa74=function(_0x95411e,_0x38b4c3){_0x95411e=_0x95411e-0x0;var _0x2c8718=_0xa74f[_0x95411e];return _0x2c8718;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xfa74('0x0')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xfa74('0x0')]},'password':{'type':Sequelize[_0xfa74('0x0')]},'port':{'type':Sequelize[_0xfa74('0x1')]},'tls':{'type':Sequelize[_0xfa74('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0xfa74('0x3')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xfa74('0x0')]}};
\ No newline at end of file
+var _0xf7b4=['BOOLEAN','INTEGER','INBOX','sequelize','STRING'];(function(_0x396009,_0x409127){var _0x589e7e=function(_0x376bca){while(--_0x376bca){_0x396009['push'](_0x396009['shift']());}};_0x589e7e(++_0x409127);}(_0xf7b4,0x152));var _0x4f7b=function(_0x26a749,_0x57d9de){_0x26a749=_0x26a749-0x0;var _0x1b81be=_0xf7b4[_0x26a749];return _0x1b81be;};'use strict';var Sequelize=require(_0x4f7b('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x4f7b('0x1')]},'authentication':{'type':Sequelize[_0x4f7b('0x2')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x4f7b('0x3')]},'tls':{'type':Sequelize[_0x4f7b('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x4f7b('0x1')],'defaultValue':_0x4f7b('0x4')},'connTimeout':{'type':Sequelize[_0x4f7b('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x4f7b('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x4f7b('0x1')]}};
\ No newline at end of file
index dc3d510..5252681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5c0=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','MailServerIn','mail_servers_in'];(function(_0x4f3398,_0x420c6a){var _0x4136c1=function(_0x4c00df){while(--_0x4c00df){_0x4f3398['push'](_0x4f3398['shift']());}};_0x4136c1(++_0x420c6a);}(_0xd5c0,0xf0));var _0x0d5c=function(_0x236470,_0x752a84){_0x236470=_0x236470-0x0;var _0x2b858d=_0xd5c0[_0x236470];return _0x2b858d;};'use strict';var _=require('lodash');var util=require(_0x0d5c('0x0'));var logger=require(_0x0d5c('0x1'))(_0x0d5c('0x2'));var moment=require(_0x0d5c('0x3'));var BPromise=require(_0x0d5c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d5c('0x5'));var rimraf=require(_0x0d5c('0x6'));var config=require(_0x0d5c('0x7'));var attributes=require(_0x0d5c('0x8'));module[_0x0d5c('0x9')]=function(_0x20c2c9,_0x35bae0){return _0x20c2c9['define'](_0x0d5c('0xa'),attributes,{'tableName':_0x0d5c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x237b=['lodash','util','../../config/logger','api','request-promise','path','../../config/environment','exports','MailServerIn','mail_servers_in'];(function(_0x30376b,_0x2db182){var _0x43ee42=function(_0x479312){while(--_0x479312){_0x30376b['push'](_0x30376b['shift']());}};_0x43ee42(++_0x2db182);}(_0x237b,0x1ae));var _0xb237=function(_0xecb2a6,_0x5e6969){_0xecb2a6=_0xecb2a6-0x0;var _0x509607=_0x237b[_0xecb2a6];return _0x509607;};'use strict';var _=require(_0xb237('0x0'));var util=require(_0xb237('0x1'));var logger=require(_0xb237('0x2'))(_0xb237('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb237('0x4'));var fs=require('fs');var path=require(_0xb237('0x5'));var rimraf=require('rimraf');var config=require(_0xb237('0x6'));var attributes=require('./mailServerIn.attributes');module[_0xb237('0x7')]=function(_0xa24905,_0x743eca){return _0xa24905['define'](_0xb237('0x8'),attributes,{'tableName':_0xb237('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ccbec7..955f45f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa902=['error','message','result','catch','GetMailServerIn','findAll','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xa902,0x8d));var _0x2a90=function(_0x33996f,_0x260902){_0x33996f=_0x33996f-0x0;var _0x5cf03c=_0xa902[_0x33996f];return _0x5cf03c;};'use strict';var _=require(_0x2a90('0x0'));var util=require(_0x2a90('0x1'));var moment=require(_0x2a90('0x2'));var BPromise=require(_0x2a90('0x3'));var rs=require(_0x2a90('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2a90('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a90('0x6'));var config=require(_0x2a90('0x7'));var jayson=require(_0x2a90('0x8'));var client=jayson[_0x2a90('0x9')][_0x2a90('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25bcfc,_0x58369a,_0x4109e6){return new BPromise(function(_0x570659,_0x5ec2b9){return client[_0x2a90('0xb')](_0x25bcfc,_0x4109e6)[_0x2a90('0xc')](function(_0xe500bc){logger[_0x2a90('0xd')](_0x2a90('0xe'),_0x58369a,'request\x20sent');logger[_0x2a90('0xf')](_0x2a90('0x10'),_0x58369a,_0x2a90('0x11'),JSON[_0x2a90('0x12')](_0xe500bc));if(_0xe500bc['error']){if(_0xe500bc[_0x2a90('0x13')]['code']===0x1f4){logger[_0x2a90('0x13')]('MailServerIn,\x20%s,\x20%s',_0x58369a,_0xe500bc[_0x2a90('0x13')]['message']);return _0x5ec2b9(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}logger[_0x2a90('0x13')]('MailServerIn,\x20%s,\x20%s',_0x58369a,_0xe500bc['error']['message']);return _0x570659(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}else{logger['info'](_0x2a90('0xe'),_0x58369a,_0x2a90('0x11'));_0x570659(_0xe500bc[_0x2a90('0x15')][_0x2a90('0x14')]);}})[_0x2a90('0x16')](function(_0x37858e){logger[_0x2a90('0x13')](_0x2a90('0xe'),_0x58369a,_0x37858e);_0x5ec2b9(_0x37858e);});});}exports[_0x2a90('0x17')]=function(_0x5c3e4b){var _0x162f0b=this;return new Promise(function(_0x1d9a28,_0x4190ff){return db['MailServerIn'][_0x2a90('0x18')]({'raw':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1a')]===undefined?!![]:![]:!![],'where':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1b')]||null:null,'attributes':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1c')]||null:null,'limit':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')]['limit']||null:null,'include':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0x5c3e4b['options'][_0x2a90('0x1d')],function(_0xd033d){return{'model':db[_0xd033d['model']],'as':_0xd033d['as'],'attributes':_0xd033d[_0x2a90('0x1c')],'include':_0xd033d[_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0xd033d[_0x2a90('0x1d')],function(_0x2a212c){return{'model':db[_0x2a212c[_0x2a90('0x1f')]],'as':_0x2a212c['as'],'attributes':_0x2a212c[_0x2a90('0x1c')],'include':_0x2a212c[_0x2a90('0x1d')]?_['map'](_0x2a212c[_0x2a90('0x1d')],function(_0x17f978){return{'model':db[_0x17f978[_0x2a90('0x1f')]],'as':_0x17f978['as'],'attributes':_0x17f978[_0x2a90('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2a90('0xc')](function(_0x5208d8){logger['info'](_0x2a90('0x17'),_0x5c3e4b);logger['debug']('GetMailServerIn',_0x5c3e4b,JSON['stringify'](_0x5208d8));_0x1d9a28(_0x5208d8);})[_0x2a90('0x16')](function(_0x3c78f5){logger['error']('GetMailServerIn',_0x3c78f5[_0x2a90('0x14')],_0x5c3e4b);_0x4190ff(_0x162f0b['error'](0x1f4,_0x3c78f5[_0x2a90('0x14')]));});});};
\ No newline at end of file
+var _0xfc82=['request','then','info','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','MailServerIn,\x20%s,\x20%s','result','catch','GetMailServerIn','findAll','options','raw','where','attributes','limit','include','model','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0x48a9fb,_0x3c153d){var _0x14c476=function(_0x5d70c1){while(--_0x5d70c1){_0x48a9fb['push'](_0x48a9fb['shift']());}};_0x14c476(++_0x3c153d);}(_0xfc82,0xe9));var _0x2fc8=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xfc82[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x2fc8('0x0'));var util=require(_0x2fc8('0x1'));var moment=require(_0x2fc8('0x2'));var BPromise=require(_0x2fc8('0x3'));var rs=require(_0x2fc8('0x4'));var fs=require('fs');var Redis=require(_0x2fc8('0x5'));var db=require(_0x2fc8('0x6'))['db'];var utils=require(_0x2fc8('0x7'));var logger=require(_0x2fc8('0x8'))('rpc');var config=require(_0x2fc8('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2fc8('0xa')][_0x2fc8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20d5e0,_0x19cb36,_0x16d78b){return new BPromise(function(_0xcce6c6,_0x3afd07){return client[_0x2fc8('0xc')](_0x20d5e0,_0x16d78b)[_0x2fc8('0xd')](function(_0x4f7e86){logger[_0x2fc8('0xe')]('MailServerIn,\x20%s,\x20%s',_0x19cb36,'request\x20sent');logger[_0x2fc8('0xf')](_0x2fc8('0x10'),_0x19cb36,_0x2fc8('0x11'),JSON[_0x2fc8('0x12')](_0x4f7e86));if(_0x4f7e86[_0x2fc8('0x13')]){if(_0x4f7e86[_0x2fc8('0x13')][_0x2fc8('0x14')]===0x1f4){logger[_0x2fc8('0x13')]('MailServerIn,\x20%s,\x20%s',_0x19cb36,_0x4f7e86[_0x2fc8('0x13')][_0x2fc8('0x15')]);return _0x3afd07(_0x4f7e86['error'][_0x2fc8('0x15')]);}logger[_0x2fc8('0x13')](_0x2fc8('0x16'),_0x19cb36,_0x4f7e86[_0x2fc8('0x13')][_0x2fc8('0x15')]);return _0xcce6c6(_0x4f7e86[_0x2fc8('0x13')][_0x2fc8('0x15')]);}else{logger[_0x2fc8('0xe')](_0x2fc8('0x16'),_0x19cb36,_0x2fc8('0x11'));_0xcce6c6(_0x4f7e86[_0x2fc8('0x17')][_0x2fc8('0x15')]);}})[_0x2fc8('0x18')](function(_0x133d04){logger[_0x2fc8('0x13')](_0x2fc8('0x16'),_0x19cb36,_0x133d04);_0x3afd07(_0x133d04);});});}exports[_0x2fc8('0x19')]=function(_0x11c5f2){var _0x961c43=this;return new Promise(function(_0x4ee90a,_0x58c9d5){return db['MailServerIn'][_0x2fc8('0x1a')]({'raw':_0x11c5f2[_0x2fc8('0x1b')]?_0x11c5f2[_0x2fc8('0x1b')][_0x2fc8('0x1c')]===undefined?!![]:![]:!![],'where':_0x11c5f2['options']?_0x11c5f2[_0x2fc8('0x1b')][_0x2fc8('0x1d')]||null:null,'attributes':_0x11c5f2[_0x2fc8('0x1b')]?_0x11c5f2[_0x2fc8('0x1b')][_0x2fc8('0x1e')]||null:null,'limit':_0x11c5f2['options']?_0x11c5f2[_0x2fc8('0x1b')][_0x2fc8('0x1f')]||null:null,'include':_0x11c5f2['options']?_0x11c5f2[_0x2fc8('0x1b')][_0x2fc8('0x20')]?_['map'](_0x11c5f2[_0x2fc8('0x1b')][_0x2fc8('0x20')],function(_0x191a4e){return{'model':db[_0x191a4e[_0x2fc8('0x21')]],'as':_0x191a4e['as'],'attributes':_0x191a4e[_0x2fc8('0x1e')],'include':_0x191a4e[_0x2fc8('0x20')]?_[_0x2fc8('0x22')](_0x191a4e[_0x2fc8('0x20')],function(_0x5c5d2e){return{'model':db[_0x5c5d2e[_0x2fc8('0x21')]],'as':_0x5c5d2e['as'],'attributes':_0x5c5d2e['attributes'],'include':_0x5c5d2e['include']?_[_0x2fc8('0x22')](_0x5c5d2e[_0x2fc8('0x20')],function(_0x33b6c3){return{'model':db[_0x33b6c3['model']],'as':_0x33b6c3['as'],'attributes':_0x33b6c3[_0x2fc8('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2895bd){logger['info'](_0x2fc8('0x19'),_0x11c5f2);logger['debug'](_0x2fc8('0x19'),_0x11c5f2,JSON[_0x2fc8('0x12')](_0x2895bd));_0x4ee90a(_0x2895bd);})['catch'](function(_0x300068){logger[_0x2fc8('0x13')](_0x2fc8('0x19'),_0x300068[_0x2fc8('0x15')],_0x11c5f2);_0x58c9d5(_0x961c43[_0x2fc8('0x13')](0x1f4,_0x300068['message']));});});};
\ No newline at end of file
index 0bd7168..e815e7d 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(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x7a54,0x106));var _0x47a5=function(_0x31c00e,_0x2df2b4){_0x31c00e=_0x31c00e-0x0;var _0x570bfc=_0x7a54[_0x31c00e];return _0x570bfc;};'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(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_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('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 6429a88..6406760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3441=['BOOLEAN','sequelize','STRING','INTEGER'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0x3441,0xf9));var _0x1344=function(_0xccd329,_0xc7b4d6){_0xccd329=_0xccd329-0x0;var _0x1f815b=_0x3441[_0xccd329];return _0x1f815b;};'use strict';var Sequelize=require(_0x1344('0x0'));module['exports']={'description':{'type':Sequelize[_0x1344('0x1')]},'host':{'type':Sequelize[_0x1344('0x1')]},'user':{'type':Sequelize[_0x1344('0x1')]},'pass':{'type':Sequelize[_0x1344('0x1')]},'port':{'type':Sequelize[_0x1344('0x2')]},'secure':{'type':Sequelize[_0x1344('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x1344('0x1')]},'authentication':{'type':Sequelize[_0x1344('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc2e3=['exports','STRING','BOOLEAN'];(function(_0x5180bf,_0x24a7f4){var _0x375902=function(_0x55bc5c){while(--_0x55bc5c){_0x5180bf['push'](_0x5180bf['shift']());}};_0x375902(++_0x24a7f4);}(_0xc2e3,0x156));var _0x3c2e=function(_0x17104c,_0x2b8a80){_0x17104c=_0x17104c-0x0;var _0x1f65ba=_0xc2e3[_0x17104c];return _0x1f65ba;};'use strict';var Sequelize=require('sequelize');module[_0x3c2e('0x0')]={'description':{'type':Sequelize[_0x3c2e('0x1')]},'host':{'type':Sequelize[_0x3c2e('0x1')]},'user':{'type':Sequelize[_0x3c2e('0x1')]},'pass':{'type':Sequelize[_0x3c2e('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x3c2e('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0x3c2e('0x1')]},'authentication':{'type':Sequelize[_0x3c2e('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 7468b62..a67a2cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8120=['lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','set','json','apply','reject','save','update','destroy','then','error','stack','send','map','MailServerOut','rawAttributes','fieldName','type','model','name','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filters','filter','where','merge','options','count','includeAll','include','findAll','catch','show','keys','create','body','find','params','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x8120,0x15e));var _0x0812=function(_0x57b2c3,_0x1232f1){_0x57b2c3=_0x57b2c3-0x0;var _0x482fcc=_0x8120[_0x57b2c3];return _0x482fcc;};'use strict';var emlformat=require(_0x0812('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0812('0x1'));var rp=require(_0x0812('0x2'));var moment=require(_0x0812('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0812('0x4'));var util=require(_0x0812('0x5'));var path=require('path');var sox=require(_0x0812('0x6'));var csv=require(_0x0812('0x7'));var ejs=require(_0x0812('0x8'));var fs=require('fs');var fs_extra=require(_0x0812('0x9'));var _=require(_0x0812('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0812('0xb'));var deskjs=require(_0x0812('0xc'));var toCsv=require(_0x0812('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0812('0xd'));var authService=require(_0x0812('0xe'));var qs=require(_0x0812('0xf'));var as=require(_0x0812('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0812('0x11'))(_0x0812('0x12'));var utils=require(_0x0812('0x13'));var config=require(_0x0812('0x14'));var licenseUtil=require(_0x0812('0x15'));var db=require(_0x0812('0x16'))['db'];function respondWithStatusCode(_0x1f619c,_0x4a71eb){_0x4a71eb=_0x4a71eb||0xcc;return function(_0x25f3d6){if(_0x25f3d6){return _0x1f619c[_0x0812('0x17')](_0x4a71eb);}return _0x1f619c['status'](_0x4a71eb)[_0x0812('0x18')]();};}function respondWithResult(_0x4cea0c,_0xfbd73c){_0xfbd73c=_0xfbd73c||0xc8;return function(_0x384cf3){if(_0x384cf3){return _0x4cea0c[_0x0812('0x19')](_0xfbd73c)['json'](_0x384cf3);}};}function respondWithFilteredResult(_0x2a77db,_0x3129c4){return function(_0x47ce25){if(_0x47ce25){var _0x498f33=typeof _0x3129c4[_0x0812('0x1a')]==='undefined'&&typeof _0x3129c4[_0x0812('0x1b')]===_0x0812('0x1c');var _0x1fbe7e=_0x47ce25['count'];var _0x1cc69d=_0x498f33?0x0:_0x3129c4[_0x0812('0x1a')];var _0x3c8c13=_0x498f33?_0x47ce25['count']:_0x3129c4[_0x0812('0x1a')]+_0x3129c4[_0x0812('0x1b')];var _0x2384bf;if(_0x3c8c13>=_0x1fbe7e){_0x3c8c13=_0x1fbe7e;_0x2384bf=0xc8;}else{_0x2384bf=0xce;}_0x2a77db[_0x0812('0x19')](_0x2384bf);return _0x2a77db[_0x0812('0x1d')]('Content-Range',_0x1cc69d+'-'+_0x3c8c13+'/'+_0x1fbe7e)[_0x0812('0x1e')](_0x47ce25);}return null;};}function patchUpdates(_0x3d7102){return function(_0x1af390){try{jsonpatch[_0x0812('0x1f')](_0x1af390,_0x3d7102,!![]);}catch(_0x5578c7){return BPromise[_0x0812('0x20')](_0x5578c7);}return _0x1af390[_0x0812('0x21')]();};}function saveUpdates(_0x31ee3b,_0x1083ee){return function(_0x8fcf50){if(_0x8fcf50){return _0x8fcf50[_0x0812('0x22')](_0x31ee3b)['then'](function(_0x1929ec){return _0x1929ec;});}return null;};}function removeEntity(_0x25b406,_0x458e76){return function(_0x43d82e){if(_0x43d82e){return _0x43d82e[_0x0812('0x23')]()[_0x0812('0x24')](function(){_0x25b406[_0x0812('0x19')](0xcc)[_0x0812('0x18')]();});}};}function handleEntityNotFound(_0x15228c,_0x227623){return function(_0x4399c8){if(!_0x4399c8){_0x15228c[_0x0812('0x17')](0x194);}return _0x4399c8;};}function handleError(_0x56f54a,_0x5f4424){_0x5f4424=_0x5f4424||0x1f4;return function(_0x50c0e1){logger[_0x0812('0x25')](_0x50c0e1[_0x0812('0x26')]);if(_0x50c0e1['name']){delete _0x50c0e1['name'];}_0x56f54a[_0x0812('0x19')](_0x5f4424)[_0x0812('0x27')](_0x50c0e1);};}exports['index']=function(_0x3190cd,_0x3d47a0){var _0x33d7b5={},_0x439ea8={},_0x377eae={'count':0x0,'rows':[]};var _0x5b6d3f=_[_0x0812('0x28')](db[_0x0812('0x29')][_0x0812('0x2a')],function(_0x366779){return{'name':_0x366779[_0x0812('0x2b')],'type':_0x366779[_0x0812('0x2c')]['key']};});_0x439ea8[_0x0812('0x2d')]=_[_0x0812('0x28')](_0x5b6d3f,_0x0812('0x2e'));_0x439ea8[_0x0812('0x2f')]=_['keys'](_0x3190cd['query']);_0x439ea8['filters']=_[_0x0812('0x30')](_0x439ea8[_0x0812('0x2d')],_0x439ea8[_0x0812('0x2f')]);_0x33d7b5[_0x0812('0x31')]=_[_0x0812('0x30')](_0x439ea8[_0x0812('0x2d')],qs[_0x0812('0x32')](_0x3190cd[_0x0812('0x2f')]['fields']));_0x33d7b5['attributes']=_0x33d7b5[_0x0812('0x31')][_0x0812('0x33')]?_0x33d7b5[_0x0812('0x31')]:_0x439ea8[_0x0812('0x2d')];if(!_0x3190cd[_0x0812('0x2f')][_0x0812('0x34')]('nolimit')){_0x33d7b5['limit']=qs[_0x0812('0x1b')](_0x3190cd[_0x0812('0x2f')][_0x0812('0x1b')]);_0x33d7b5[_0x0812('0x1a')]=qs['offset'](_0x3190cd['query'][_0x0812('0x1a')]);}_0x33d7b5[_0x0812('0x35')]=qs[_0x0812('0x36')](_0x3190cd[_0x0812('0x2f')][_0x0812('0x36')]);_0x33d7b5['where']=qs['filters'](_[_0x0812('0x37')](_0x3190cd[_0x0812('0x2f')],_0x439ea8[_0x0812('0x38')]),_0x5b6d3f);if(_0x3190cd[_0x0812('0x2f')][_0x0812('0x39')]){_0x33d7b5[_0x0812('0x3a')]=_[_0x0812('0x3b')](_0x33d7b5[_0x0812('0x3a')],{'$or':_['map'](_0x5b6d3f,function(_0x4d67ec){if(_0x4d67ec[_0x0812('0x2c')]!=='VIRTUAL'){var _0x35f478={};_0x35f478[_0x4d67ec['name']]={'$like':'%'+_0x3190cd['query']['filter']+'%'};return _0x35f478;}})});}_0x33d7b5=_['merge']({},_0x33d7b5,_0x3190cd[_0x0812('0x3c')]);var _0x299e62={'where':_0x33d7b5[_0x0812('0x3a')]};return db[_0x0812('0x29')]['count'](_0x299e62)['then'](function(_0x5c0c70){_0x377eae[_0x0812('0x3d')]=_0x5c0c70;if(_0x3190cd['query'][_0x0812('0x3e')]){_0x33d7b5[_0x0812('0x3f')]=[{'all':!![]}];}return db[_0x0812('0x29')][_0x0812('0x40')](_0x33d7b5);})[_0x0812('0x24')](function(_0x12b5dc){_0x377eae['rows']=_0x12b5dc;return _0x377eae;})[_0x0812('0x24')](respondWithFilteredResult(_0x3d47a0,_0x33d7b5))[_0x0812('0x41')](handleError(_0x3d47a0,null));};exports[_0x0812('0x42')]=function(_0x395b98,_0x3dad3e){var _0x3fdd3d={'raw':!![],'where':{'id':_0x395b98['params']['id']}},_0x544152={};_0x544152['model']=_[_0x0812('0x43')](db['MailServerOut'][_0x0812('0x2a')]);_0x544152[_0x0812('0x2f')]=_['keys'](_0x395b98[_0x0812('0x2f')]);_0x544152['filters']=_['intersection'](_0x544152[_0x0812('0x2d')],_0x544152[_0x0812('0x2f')]);_0x3fdd3d[_0x0812('0x31')]=_[_0x0812('0x30')](_0x544152[_0x0812('0x2d')],qs[_0x0812('0x32')](_0x395b98['query']['fields']));_0x3fdd3d[_0x0812('0x31')]=_0x3fdd3d[_0x0812('0x31')][_0x0812('0x33')]?_0x3fdd3d[_0x0812('0x31')]:_0x544152[_0x0812('0x2d')];if(_0x395b98[_0x0812('0x2f')]['includeAll']){_0x3fdd3d[_0x0812('0x3f')]=[{'all':!![]}];}_0x3fdd3d=_['merge']({},_0x3fdd3d,_0x395b98[_0x0812('0x3c')]);return db[_0x0812('0x29')]['find'](_0x3fdd3d)[_0x0812('0x24')](handleEntityNotFound(_0x3dad3e,null))[_0x0812('0x24')](respondWithResult(_0x3dad3e,null))[_0x0812('0x41')](handleError(_0x3dad3e,null));};exports[_0x0812('0x44')]=function(_0x4800f3,_0x21df0d){return db[_0x0812('0x29')][_0x0812('0x44')](_0x4800f3['body'],{})[_0x0812('0x24')](respondWithResult(_0x21df0d,0xc9))['catch'](handleError(_0x21df0d,null));};exports['update']=function(_0xad93f7,_0x40f234){if(_0xad93f7[_0x0812('0x45')]['id']){delete _0xad93f7[_0x0812('0x45')]['id'];}return db[_0x0812('0x29')][_0x0812('0x46')]({'where':{'id':_0xad93f7[_0x0812('0x47')]['id']}})[_0x0812('0x24')](handleEntityNotFound(_0x40f234,null))[_0x0812('0x24')](saveUpdates(_0xad93f7[_0x0812('0x45')],null))[_0x0812('0x24')](respondWithResult(_0x40f234,null))[_0x0812('0x41')](handleError(_0x40f234,null));};exports[_0x0812('0x23')]=function(_0x59ed45,_0x5823ce){return db[_0x0812('0x29')]['find']({'where':{'id':_0x59ed45[_0x0812('0x47')]['id']}})[_0x0812('0x24')](handleEntityNotFound(_0x5823ce,null))[_0x0812('0x24')](removeEntity(_0x5823ce,null))['catch'](handleError(_0x5823ce,null));};
\ No newline at end of file
+var _0x964a=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','stack','name','index','MailServerOut','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x964a,0xcd));var _0xa964=function(_0x1e3e6c,_0x4c985c){_0x1e3e6c=_0x1e3e6c-0x0;var _0x1975a0=_0x964a[_0x1e3e6c];return _0x1975a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa964('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa964('0x1'));var rp=require(_0xa964('0x2'));var moment=require(_0xa964('0x3'));var BPromise=require(_0xa964('0x4'));var Mustache=require('mustache');var util=require(_0xa964('0x5'));var path=require(_0xa964('0x6'));var sox=require(_0xa964('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa964('0x8'));var _=require(_0xa964('0x9'));var squel=require(_0xa964('0xa'));var crypto=require(_0xa964('0xb'));var jsforce=require(_0xa964('0xc'));var deskjs=require(_0xa964('0xd'));var toCsv=require(_0xa964('0xe'));var querystring=require(_0xa964('0xf'));var Papa=require(_0xa964('0x10'));var Redis=require(_0xa964('0x11'));var authService=require(_0xa964('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa964('0x13'));var hardwareService=require(_0xa964('0x14'));var logger=require('../../config/logger')(_0xa964('0x15'));var utils=require('../../config/utils');var config=require(_0xa964('0x16'));var licenseUtil=require(_0xa964('0x17'));var db=require(_0xa964('0x18'))['db'];function respondWithStatusCode(_0x1fbd6a,_0x5f284d){_0x5f284d=_0x5f284d||0xcc;return function(_0x556aaf){if(_0x556aaf){return _0x1fbd6a[_0xa964('0x19')](_0x5f284d);}return _0x1fbd6a[_0xa964('0x1a')](_0x5f284d)[_0xa964('0x1b')]();};}function respondWithResult(_0x20dcd9,_0x5799f2){_0x5799f2=_0x5799f2||0xc8;return function(_0x1f570e){if(_0x1f570e){return _0x20dcd9[_0xa964('0x1a')](_0x5799f2)[_0xa964('0x1c')](_0x1f570e);}};}function respondWithFilteredResult(_0x144531,_0x3a3d43){return function(_0x3ae404){if(_0x3ae404){var _0x277512=typeof _0x3a3d43[_0xa964('0x1d')]===_0xa964('0x1e')&&typeof _0x3a3d43[_0xa964('0x1f')]===_0xa964('0x1e');var _0x33cae6=_0x3ae404['count'];var _0x5eb43a=_0x277512?0x0:_0x3a3d43[_0xa964('0x1d')];var _0x11a1de=_0x277512?_0x3ae404[_0xa964('0x20')]:_0x3a3d43['offset']+_0x3a3d43[_0xa964('0x1f')];var _0x37eb66;if(_0x11a1de>=_0x33cae6){_0x11a1de=_0x33cae6;_0x37eb66=0xc8;}else{_0x37eb66=0xce;}_0x144531[_0xa964('0x1a')](_0x37eb66);return _0x144531[_0xa964('0x21')](_0xa964('0x22'),_0x5eb43a+'-'+_0x11a1de+'/'+_0x33cae6)[_0xa964('0x1c')](_0x3ae404);}return null;};}function patchUpdates(_0x175f21){return function(_0x4f7169){try{jsonpatch['apply'](_0x4f7169,_0x175f21,!![]);}catch(_0x3b6d8d){return BPromise[_0xa964('0x23')](_0x3b6d8d);}return _0x4f7169[_0xa964('0x24')]();};}function saveUpdates(_0x2f6cf7,_0x415260){return function(_0x510c21){if(_0x510c21){return _0x510c21[_0xa964('0x25')](_0x2f6cf7)[_0xa964('0x26')](function(_0x2068ad){return _0x2068ad;});}return null;};}function removeEntity(_0x4052ec,_0x4cf6b0){return function(_0x3736d8){if(_0x3736d8){return _0x3736d8['destroy']()[_0xa964('0x26')](function(){_0x4052ec[_0xa964('0x1a')](0xcc)[_0xa964('0x1b')]();});}};}function handleEntityNotFound(_0x387709,_0x222940){return function(_0x570309){if(!_0x570309){_0x387709['sendStatus'](0x194);}return _0x570309;};}function handleError(_0x58c989,_0x1738e4){_0x1738e4=_0x1738e4||0x1f4;return function(_0x51be55){logger['error'](_0x51be55[_0xa964('0x27')]);if(_0x51be55[_0xa964('0x28')]){delete _0x51be55[_0xa964('0x28')];}_0x58c989[_0xa964('0x1a')](_0x1738e4)['send'](_0x51be55);};}exports[_0xa964('0x29')]=function(_0x35eb84,_0x204a13){var _0x53f43d={},_0x3fe96e={},_0x419971={'count':0x0,'rows':[]};var _0x4680d2=_['map'](db[_0xa964('0x2a')][_0xa964('0x2b')],function(_0x3424e0){return{'name':_0x3424e0['fieldName'],'type':_0x3424e0[_0xa964('0x2c')][_0xa964('0x2d')]};});_0x3fe96e[_0xa964('0x2e')]=_[_0xa964('0x2f')](_0x4680d2,_0xa964('0x28'));_0x3fe96e[_0xa964('0x30')]=_[_0xa964('0x31')](_0x35eb84[_0xa964('0x30')]);_0x3fe96e[_0xa964('0x32')]=_[_0xa964('0x33')](_0x3fe96e[_0xa964('0x2e')],_0x3fe96e[_0xa964('0x30')]);_0x53f43d[_0xa964('0x34')]=_[_0xa964('0x33')](_0x3fe96e[_0xa964('0x2e')],qs[_0xa964('0x35')](_0x35eb84[_0xa964('0x30')][_0xa964('0x35')]));_0x53f43d['attributes']=_0x53f43d[_0xa964('0x34')][_0xa964('0x36')]?_0x53f43d['attributes']:_0x3fe96e[_0xa964('0x2e')];if(!_0x35eb84['query'][_0xa964('0x37')](_0xa964('0x38'))){_0x53f43d[_0xa964('0x1f')]=qs[_0xa964('0x1f')](_0x35eb84['query'][_0xa964('0x1f')]);_0x53f43d[_0xa964('0x1d')]=qs[_0xa964('0x1d')](_0x35eb84[_0xa964('0x30')]['offset']);}_0x53f43d[_0xa964('0x39')]=qs[_0xa964('0x3a')](_0x35eb84['query']['sort']);_0x53f43d[_0xa964('0x3b')]=qs['filters'](_[_0xa964('0x3c')](_0x35eb84[_0xa964('0x30')],_0x3fe96e['filters']),_0x4680d2);if(_0x35eb84['query'][_0xa964('0x3d')]){_0x53f43d[_0xa964('0x3b')]=_['merge'](_0x53f43d[_0xa964('0x3b')],{'$or':_['map'](_0x4680d2,function(_0x2ab955){if(_0x2ab955[_0xa964('0x2c')]!==_0xa964('0x3e')){var _0x41ad57={};_0x41ad57[_0x2ab955[_0xa964('0x28')]]={'$like':'%'+_0x35eb84[_0xa964('0x30')][_0xa964('0x3d')]+'%'};return _0x41ad57;}})});}_0x53f43d=_[_0xa964('0x3f')]({},_0x53f43d,_0x35eb84[_0xa964('0x40')]);var _0xff74f5={'where':_0x53f43d[_0xa964('0x3b')]};return db[_0xa964('0x2a')][_0xa964('0x20')](_0xff74f5)[_0xa964('0x26')](function(_0x5d3296){_0x419971[_0xa964('0x20')]=_0x5d3296;if(_0x35eb84['query']['includeAll']){_0x53f43d[_0xa964('0x41')]=[{'all':!![]}];}return db[_0xa964('0x2a')][_0xa964('0x42')](_0x53f43d);})[_0xa964('0x26')](function(_0x48b1b5){_0x419971[_0xa964('0x43')]=_0x48b1b5;return _0x419971;})[_0xa964('0x26')](respondWithFilteredResult(_0x204a13,_0x53f43d))[_0xa964('0x44')](handleError(_0x204a13,null));};exports[_0xa964('0x45')]=function(_0x4effa2,_0x5105d0){var _0x311627={'raw':!![],'where':{'id':_0x4effa2[_0xa964('0x46')]['id']}},_0x497a20={};_0x497a20[_0xa964('0x2e')]=_[_0xa964('0x31')](db[_0xa964('0x2a')][_0xa964('0x2b')]);_0x497a20[_0xa964('0x30')]=_[_0xa964('0x31')](_0x4effa2['query']);_0x497a20[_0xa964('0x32')]=_[_0xa964('0x33')](_0x497a20[_0xa964('0x2e')],_0x497a20[_0xa964('0x30')]);_0x311627['attributes']=_['intersection'](_0x497a20['model'],qs['fields'](_0x4effa2[_0xa964('0x30')][_0xa964('0x35')]));_0x311627[_0xa964('0x34')]=_0x311627[_0xa964('0x34')][_0xa964('0x36')]?_0x311627[_0xa964('0x34')]:_0x497a20[_0xa964('0x2e')];if(_0x4effa2[_0xa964('0x30')]['includeAll']){_0x311627[_0xa964('0x41')]=[{'all':!![]}];}_0x311627=_[_0xa964('0x3f')]({},_0x311627,_0x4effa2['options']);return db[_0xa964('0x2a')][_0xa964('0x47')](_0x311627)['then'](handleEntityNotFound(_0x5105d0,null))[_0xa964('0x26')](respondWithResult(_0x5105d0,null))[_0xa964('0x44')](handleError(_0x5105d0,null));};exports[_0xa964('0x48')]=function(_0x100b07,_0x1100f5){return db[_0xa964('0x2a')]['create'](_0x100b07[_0xa964('0x49')],{})[_0xa964('0x26')](respondWithResult(_0x1100f5,0xc9))[_0xa964('0x44')](handleError(_0x1100f5,null));};exports[_0xa964('0x25')]=function(_0x1da18d,_0x1c6fc0){if(_0x1da18d[_0xa964('0x49')]['id']){delete _0x1da18d[_0xa964('0x49')]['id'];}return db[_0xa964('0x2a')][_0xa964('0x47')]({'where':{'id':_0x1da18d[_0xa964('0x46')]['id']}})[_0xa964('0x26')](handleEntityNotFound(_0x1c6fc0,null))[_0xa964('0x26')](saveUpdates(_0x1da18d['body'],null))['then'](respondWithResult(_0x1c6fc0,null))[_0xa964('0x44')](handleError(_0x1c6fc0,null));};exports['destroy']=function(_0x135d9b,_0x26feaa){return db[_0xa964('0x2a')][_0xa964('0x47')]({'where':{'id':_0x135d9b[_0xa964('0x46')]['id']}})[_0xa964('0x26')](handleEntityNotFound(_0x26feaa,null))[_0xa964('0x26')](removeEntity(_0x26feaa,null))['catch'](handleError(_0x26feaa,null));};
\ No newline at end of file
index 3909fd3..f161f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cc2=['path','rimraf','../../config/environment','./mailServerOut.attributes','define','MailServerOut','util','api','moment','bluebird','request-promise'];(function(_0x38d6d1,_0x482b6d){var _0x163388=function(_0x2db4c1){while(--_0x2db4c1){_0x38d6d1['push'](_0x38d6d1['shift']());}};_0x163388(++_0x482b6d);}(_0x3cc2,0x124));var _0x23cc=function(_0x2f9a8d,_0xf9d32a){_0x2f9a8d=_0x2f9a8d-0x0;var _0xf8dc7e=_0x3cc2[_0x2f9a8d];return _0xf8dc7e;};'use strict';var _=require('lodash');var util=require(_0x23cc('0x0'));var logger=require('../../config/logger')(_0x23cc('0x1'));var moment=require(_0x23cc('0x2'));var BPromise=require(_0x23cc('0x3'));var rp=require(_0x23cc('0x4'));var fs=require('fs');var path=require(_0x23cc('0x5'));var rimraf=require(_0x23cc('0x6'));var config=require(_0x23cc('0x7'));var attributes=require(_0x23cc('0x8'));module['exports']=function(_0x3691ae,_0xe21510){return _0x3691ae[_0x23cc('0x9')](_0x23cc('0xa'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x469e=['./mailServerOut.attributes','exports','define','mail_servers_out','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x2ea14a,_0x55c465){var _0x50db5c=function(_0x3ef962){while(--_0x3ef962){_0x2ea14a['push'](_0x2ea14a['shift']());}};_0x50db5c(++_0x55c465);}(_0x469e,0x19b));var _0xe469=function(_0x25ede0,_0x29dc39){_0x25ede0=_0x25ede0-0x0;var _0x16fc37=_0x469e[_0x25ede0];return _0x16fc37;};'use strict';var _=require('lodash');var util=require(_0xe469('0x0'));var logger=require(_0xe469('0x1'))('api');var moment=require(_0xe469('0x2'));var BPromise=require('bluebird');var rp=require(_0xe469('0x3'));var fs=require('fs');var path=require(_0xe469('0x4'));var rimraf=require(_0xe469('0x5'));var config=require(_0xe469('0x6'));var attributes=require(_0xe469('0x7'));module[_0xe469('0x8')]=function(_0x313f5e,_0x1996ea){return _0x313f5e[_0xe469('0x9')]('MailServerOut',attributes,{'tableName':_0xe469('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 993e6dd..8246c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x133608,_0x1006e4){var _0x284c57=function(_0x3b69c9){while(--_0x3b69c9){_0x133608['push'](_0x133608['shift']());}};_0x284c57(++_0x1006e4);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x49f98e,_0x5144ec){var _0x2de2ca=function(_0x3c5e4d){while(--_0x3c5e4d){_0x49f98e['push'](_0x49f98e['shift']());}};_0x2de2ca(++_0x5144ec);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xc4aa[_0x68c979];return _0x4f0001;};'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')]('MailServerOut,\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
index 9bc10ed..524c8f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f8=['describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','./mailSubstatus.controller','get','isAuthenticated','index','/describe'];(function(_0x30bccc,_0x3dca5c){var _0x137dcb=function(_0x4ad7d7){while(--_0x4ad7d7){_0x30bccc['push'](_0x30bccc['shift']());}};_0x137dcb(++_0x3dca5c);}(_0x00f8,0xaa));var _0x800f=function(_0x57306c,_0xdeff85){_0x57306c=_0x57306c-0x0;var _0x413cfb=_0x00f8[_0x57306c];return _0x413cfb;};'use strict';var multer=require('multer');var util=require(_0x800f('0x0'));var path=require(_0x800f('0x1'));var timeout=require(_0x800f('0x2'));var express=require(_0x800f('0x3'));var router=express[_0x800f('0x4')]();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(_0x800f('0x5'));router[_0x800f('0x6')]('/',auth[_0x800f('0x7')](),controller[_0x800f('0x8')]);router['get'](_0x800f('0x9'),auth[_0x800f('0x7')](),controller[_0x800f('0xa')]);router[_0x800f('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x800f('0xb')]);router[_0x800f('0xc')]('/',auth[_0x800f('0x7')](),controller[_0x800f('0xd')]);router[_0x800f('0xe')](_0x800f('0xf'),auth['isAuthenticated'](),controller[_0x800f('0x10')]);router[_0x800f('0x11')](_0x800f('0xf'),auth['isAuthenticated'](),controller[_0x800f('0x12')]);module[_0x800f('0x13')]=router;
\ No newline at end of file
+var _0xf96d=['create','update','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0xf96d,0x146));var _0xdf96=function(_0x33f5b8,_0x5dcde0){_0x33f5b8=_0x33f5b8-0x0;var _0x476674=_0xf96d[_0x33f5b8];return _0x476674;};'use strict';var multer=require('multer');var util=require(_0xdf96('0x0'));var path=require(_0xdf96('0x1'));var timeout=require('connect-timeout');var express=require(_0xdf96('0x2'));var router=express[_0xdf96('0x3')]();var fs_extra=require(_0xdf96('0x4'));var auth=require(_0xdf96('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdf96('0x6'));var controller=require(_0xdf96('0x7'));router[_0xdf96('0x8')]('/',auth[_0xdf96('0x9')](),controller[_0xdf96('0xa')]);router['get'](_0xdf96('0xb'),auth[_0xdf96('0x9')](),controller[_0xdf96('0xc')]);router[_0xdf96('0x8')](_0xdf96('0xd'),auth[_0xdf96('0x9')](),controller[_0xdf96('0xe')]);router[_0xdf96('0xf')]('/',auth['isAuthenticated'](),controller[_0xdf96('0x10')]);router['put'](_0xdf96('0xd'),auth['isAuthenticated'](),controller[_0xdf96('0x11')]);router['delete'](_0xdf96('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xdf96('0x12')]=router;
\ No newline at end of file
index 241e50c..6f8c5a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc46=['name','sequelize','STRING'];(function(_0x2d2282,_0x1b736d){var _0x2eafea=function(_0x13a89b){while(--_0x13a89b){_0x2d2282['push'](_0x2d2282['shift']());}};_0x2eafea(++_0x1b736d);}(_0xfc46,0x9a));var _0x6fc4=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xfc46[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require(_0x6fc4('0x0'));module['exports']={'name':{'type':Sequelize[_0x6fc4('0x1')],'unique':_0x6fc4('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x6fc4('0x1')]}};
\ No newline at end of file
+var _0x53ec=['STRING','name','sequelize','exports'];(function(_0x47b31c,_0x5c8e1b){var _0x5a9a0d=function(_0x30973a){while(--_0x30973a){_0x47b31c['push'](_0x47b31c['shift']());}};_0x5a9a0d(++_0x5c8e1b);}(_0x53ec,0x192));var _0xc53e=function(_0x37c07d,_0xdbdb5f){_0x37c07d=_0x37c07d-0x0;var _0x10dadc=_0x53ec[_0x37c07d];return _0x10dadc;};'use strict';var Sequelize=require(_0xc53e('0x0'));module[_0xc53e('0x1')]={'name':{'type':Sequelize[_0xc53e('0x2')],'unique':_0xc53e('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xc53e('0x2')]}};
\ No newline at end of file
index e524e98..7e4a40a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a50=['MailSubstatus','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','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','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x2a50,0x106));var _0x02a5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a50[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x02a5('0x0'));var zipdir=require(_0x02a5('0x1'));var jsonpatch=require(_0x02a5('0x2'));var rp=require(_0x02a5('0x3'));var moment=require(_0x02a5('0x4'));var BPromise=require(_0x02a5('0x5'));var Mustache=require('mustache');var util=require(_0x02a5('0x6'));var path=require(_0x02a5('0x7'));var sox=require('sox');var csv=require(_0x02a5('0x8'));var ejs=require(_0x02a5('0x9'));var fs=require('fs');var fs_extra=require(_0x02a5('0xa'));var _=require(_0x02a5('0xb'));var squel=require(_0x02a5('0xc'));var crypto=require('crypto');var jsforce=require(_0x02a5('0xd'));var deskjs=require(_0x02a5('0xe'));var toCsv=require(_0x02a5('0x8'));var querystring=require(_0x02a5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x02a5('0x10'));var qs=require(_0x02a5('0x11'));var as=require(_0x02a5('0x12'));var hardwareService=require(_0x02a5('0x13'));var logger=require(_0x02a5('0x14'))(_0x02a5('0x15'));var utils=require(_0x02a5('0x16'));var config=require(_0x02a5('0x17'));var licenseUtil=require(_0x02a5('0x18'));var db=require(_0x02a5('0x19'))['db'];function respondWithStatusCode(_0x4c1be4,_0x466090){_0x466090=_0x466090||0xcc;return function(_0x9f4478){if(_0x9f4478){return _0x4c1be4[_0x02a5('0x1a')](_0x466090);}return _0x4c1be4['status'](_0x466090)[_0x02a5('0x1b')]();};}function respondWithResult(_0x219b99,_0x1af199){_0x1af199=_0x1af199||0xc8;return function(_0x5cfc94){if(_0x5cfc94){return _0x219b99[_0x02a5('0x1c')](_0x1af199)[_0x02a5('0x1d')](_0x5cfc94);}};}function respondWithFilteredResult(_0x56bb05,_0x5e4e83){return function(_0x458c46){if(_0x458c46){var _0x515cb1=typeof _0x5e4e83[_0x02a5('0x1e')]==='undefined'&&typeof _0x5e4e83[_0x02a5('0x1f')]===_0x02a5('0x20');var _0x35a086=_0x458c46[_0x02a5('0x21')];var _0x5e9852=_0x515cb1?0x0:_0x5e4e83['offset'];var _0x4fbd9e=_0x515cb1?_0x458c46['count']:_0x5e4e83[_0x02a5('0x1e')]+_0x5e4e83[_0x02a5('0x1f')];var _0x28b5c6;if(_0x4fbd9e>=_0x35a086){_0x4fbd9e=_0x35a086;_0x28b5c6=0xc8;}else{_0x28b5c6=0xce;}_0x56bb05[_0x02a5('0x1c')](_0x28b5c6);return _0x56bb05[_0x02a5('0x22')](_0x02a5('0x23'),_0x5e9852+'-'+_0x4fbd9e+'/'+_0x35a086)[_0x02a5('0x1d')](_0x458c46);}return null;};}function patchUpdates(_0x350407){return function(_0x4d47a6){try{jsonpatch[_0x02a5('0x24')](_0x4d47a6,_0x350407,!![]);}catch(_0x113bfb){return BPromise[_0x02a5('0x25')](_0x113bfb);}return _0x4d47a6[_0x02a5('0x26')]();};}function saveUpdates(_0x4a6f17,_0x355ccc){return function(_0x4023d5){if(_0x4023d5){return _0x4023d5['update'](_0x4a6f17)[_0x02a5('0x27')](function(_0x5998e3){return _0x5998e3;});}return null;};}function removeEntity(_0x524cb,_0x5eb14f){return function(_0x4aac6c){if(_0x4aac6c){return _0x4aac6c[_0x02a5('0x28')]()[_0x02a5('0x27')](function(){_0x524cb[_0x02a5('0x1c')](0xcc)[_0x02a5('0x1b')]();});}};}function handleEntityNotFound(_0x334776,_0x30a8ea){return function(_0x33e3e4){if(!_0x33e3e4){_0x334776[_0x02a5('0x1a')](0x194);}return _0x33e3e4;};}function handleError(_0x4cf6b8,_0x159d2e){_0x159d2e=_0x159d2e||0x1f4;return function(_0x577aee){logger[_0x02a5('0x29')](_0x577aee[_0x02a5('0x2a')]);if(_0x577aee[_0x02a5('0x2b')]){delete _0x577aee[_0x02a5('0x2b')];}_0x4cf6b8[_0x02a5('0x1c')](_0x159d2e)[_0x02a5('0x2c')](_0x577aee);};}exports['index']=function(_0x35a3e9,_0x3ad5d3){var _0x9c43a={},_0x43643d={},_0x4b5290={'count':0x0,'rows':[]};var _0x2a6966=_[_0x02a5('0x2d')](db[_0x02a5('0x2e')][_0x02a5('0x2f')],function(_0x2ff561){return{'name':_0x2ff561[_0x02a5('0x30')],'type':_0x2ff561['type'][_0x02a5('0x31')]};});_0x43643d[_0x02a5('0x32')]=_[_0x02a5('0x2d')](_0x2a6966,_0x02a5('0x2b'));_0x43643d[_0x02a5('0x33')]=_['keys'](_0x35a3e9[_0x02a5('0x33')]);_0x43643d[_0x02a5('0x34')]=_['intersection'](_0x43643d[_0x02a5('0x32')],_0x43643d[_0x02a5('0x33')]);_0x9c43a[_0x02a5('0x35')]=_[_0x02a5('0x36')](_0x43643d[_0x02a5('0x32')],qs[_0x02a5('0x37')](_0x35a3e9[_0x02a5('0x33')][_0x02a5('0x37')]));_0x9c43a['attributes']=_0x9c43a[_0x02a5('0x35')][_0x02a5('0x38')]?_0x9c43a[_0x02a5('0x35')]:_0x43643d[_0x02a5('0x32')];if(!_0x35a3e9['query'][_0x02a5('0x39')]('nolimit')){_0x9c43a[_0x02a5('0x1f')]=qs['limit'](_0x35a3e9[_0x02a5('0x33')]['limit']);_0x9c43a[_0x02a5('0x1e')]=qs[_0x02a5('0x1e')](_0x35a3e9[_0x02a5('0x33')]['offset']);}_0x9c43a['order']=qs[_0x02a5('0x3a')](_0x35a3e9[_0x02a5('0x33')][_0x02a5('0x3a')]);_0x9c43a['where']=qs[_0x02a5('0x34')](_['pick'](_0x35a3e9['query'],_0x43643d[_0x02a5('0x34')]),_0x2a6966);if(_0x35a3e9['query'][_0x02a5('0x3b')]){_0x9c43a[_0x02a5('0x3c')]=_[_0x02a5('0x3d')](_0x9c43a[_0x02a5('0x3c')],{'$or':_[_0x02a5('0x2d')](_0x2a6966,function(_0x19ba86){if(_0x19ba86[_0x02a5('0x3e')]!==_0x02a5('0x3f')){var _0x4abc6e={};_0x4abc6e[_0x19ba86[_0x02a5('0x2b')]]={'$like':'%'+_0x35a3e9['query']['filter']+'%'};return _0x4abc6e;}})});}_0x9c43a=_['merge']({},_0x9c43a,_0x35a3e9['options']);var _0x1bea9c={'where':_0x9c43a[_0x02a5('0x3c')]};return db[_0x02a5('0x2e')]['count'](_0x1bea9c)['then'](function(_0x701f4f){_0x4b5290[_0x02a5('0x21')]=_0x701f4f;if(_0x35a3e9[_0x02a5('0x33')][_0x02a5('0x40')]){_0x9c43a[_0x02a5('0x41')]=[{'all':!![]}];}return db['MailSubstatus'][_0x02a5('0x42')](_0x9c43a);})['then'](function(_0x4fa379){_0x4b5290[_0x02a5('0x43')]=_0x4fa379;return _0x4b5290;})[_0x02a5('0x27')](respondWithFilteredResult(_0x3ad5d3,_0x9c43a))[_0x02a5('0x44')](handleError(_0x3ad5d3,null));};exports[_0x02a5('0x45')]=function(_0xe22d98,_0x2d68e0){var _0x52f61e={'raw':!![],'where':{'id':_0xe22d98[_0x02a5('0x46')]['id']}},_0x57ed7e={};_0x57ed7e[_0x02a5('0x32')]=_[_0x02a5('0x47')](db[_0x02a5('0x2e')][_0x02a5('0x2f')]);_0x57ed7e['query']=_['keys'](_0xe22d98[_0x02a5('0x33')]);_0x57ed7e['filters']=_[_0x02a5('0x36')](_0x57ed7e[_0x02a5('0x32')],_0x57ed7e[_0x02a5('0x33')]);_0x52f61e['attributes']=_[_0x02a5('0x36')](_0x57ed7e[_0x02a5('0x32')],qs[_0x02a5('0x37')](_0xe22d98[_0x02a5('0x33')][_0x02a5('0x37')]));_0x52f61e['attributes']=_0x52f61e[_0x02a5('0x35')][_0x02a5('0x38')]?_0x52f61e[_0x02a5('0x35')]:_0x57ed7e[_0x02a5('0x32')];if(_0xe22d98[_0x02a5('0x33')][_0x02a5('0x40')]){_0x52f61e[_0x02a5('0x41')]=[{'all':!![]}];}_0x52f61e=_[_0x02a5('0x3d')]({},_0x52f61e,_0xe22d98[_0x02a5('0x48')]);return db[_0x02a5('0x2e')][_0x02a5('0x49')](_0x52f61e)[_0x02a5('0x27')](handleEntityNotFound(_0x2d68e0,null))[_0x02a5('0x27')](respondWithResult(_0x2d68e0,null))[_0x02a5('0x44')](handleError(_0x2d68e0,null));};exports[_0x02a5('0x4a')]=function(_0x4f4e9e,_0x2b755e){return db[_0x02a5('0x2e')][_0x02a5('0x4a')](_0x4f4e9e[_0x02a5('0x4b')],{})[_0x02a5('0x27')](respondWithResult(_0x2b755e,0xc9))[_0x02a5('0x44')](handleError(_0x2b755e,null));};exports['update']=function(_0x54e811,_0x33462b){if(_0x54e811[_0x02a5('0x4b')]['id']){delete _0x54e811[_0x02a5('0x4b')]['id'];}return db[_0x02a5('0x2e')][_0x02a5('0x49')]({'where':{'id':_0x54e811[_0x02a5('0x46')]['id']}})[_0x02a5('0x27')](handleEntityNotFound(_0x33462b,null))[_0x02a5('0x27')](saveUpdates(_0x54e811[_0x02a5('0x4b')],null))[_0x02a5('0x27')](respondWithResult(_0x33462b,null))[_0x02a5('0x44')](handleError(_0x33462b,null));};exports[_0x02a5('0x28')]=function(_0x459363,_0x2ddf3b){return db[_0x02a5('0x2e')]['find']({'where':{'id':_0x459363[_0x02a5('0x46')]['id']}})[_0x02a5('0x27')](handleEntityNotFound(_0x2ddf3b,null))[_0x02a5('0x27')](removeEntity(_0x2ddf3b,null))['catch'](handleError(_0x2ddf3b,null));};exports[_0x02a5('0x4c')]=function(_0x2b2c7b,_0x53bf96){return db[_0x02a5('0x2e')][_0x02a5('0x4c')]()[_0x02a5('0x27')](respondWithResult(_0x53bf96,null))[_0x02a5('0x44')](handleError(_0x53bf96,null));};
\ No newline at end of file
+var _0x8f63=['length','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','error','name','send','index','MailSubstatus','rawAttributes','fieldName','type','key','map','filters','intersection','model','query','attributes','fields','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','params','keys'];(function(_0x502fdf,_0x42f553){var _0x26c343=function(_0x56b3e5){while(--_0x56b3e5){_0x502fdf['push'](_0x502fdf['shift']());}};_0x26c343(++_0x42f553);}(_0x8f63,0xe2));var _0x38f6=function(_0x35a140,_0x3aeac6){_0x35a140=_0x35a140-0x0;var _0x30ab82=_0x8f63[_0x35a140];return _0x30ab82;};'use strict';var emlformat=require(_0x38f6('0x0'));var rimraf=require(_0x38f6('0x1'));var zipdir=require(_0x38f6('0x2'));var jsonpatch=require(_0x38f6('0x3'));var rp=require(_0x38f6('0x4'));var moment=require(_0x38f6('0x5'));var BPromise=require(_0x38f6('0x6'));var Mustache=require(_0x38f6('0x7'));var util=require(_0x38f6('0x8'));var path=require(_0x38f6('0x9'));var sox=require(_0x38f6('0xa'));var csv=require(_0x38f6('0xb'));var ejs=require(_0x38f6('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x38f6('0xd'));var jsforce=require(_0x38f6('0xe'));var deskjs=require(_0x38f6('0xf'));var toCsv=require(_0x38f6('0xb'));var querystring=require(_0x38f6('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x38f6('0x11'));var as=require(_0x38f6('0x12'));var hardwareService=require(_0x38f6('0x13'));var logger=require(_0x38f6('0x14'))('api');var utils=require(_0x38f6('0x15'));var config=require(_0x38f6('0x16'));var licenseUtil=require(_0x38f6('0x17'));var db=require(_0x38f6('0x18'))['db'];function respondWithStatusCode(_0x5a9a65,_0x38bf7b){_0x38bf7b=_0x38bf7b||0xcc;return function(_0x265763){if(_0x265763){return _0x5a9a65[_0x38f6('0x19')](_0x38bf7b);}return _0x5a9a65[_0x38f6('0x1a')](_0x38bf7b)[_0x38f6('0x1b')]();};}function respondWithResult(_0x258e4b,_0x1ca342){_0x1ca342=_0x1ca342||0xc8;return function(_0xdb03c3){if(_0xdb03c3){return _0x258e4b[_0x38f6('0x1a')](_0x1ca342)[_0x38f6('0x1c')](_0xdb03c3);}};}function respondWithFilteredResult(_0x4243c0,_0x56acba){return function(_0x4cee75){if(_0x4cee75){var _0x2f538d=typeof _0x56acba[_0x38f6('0x1d')]===_0x38f6('0x1e')&&typeof _0x56acba[_0x38f6('0x1f')]===_0x38f6('0x1e');var _0x1c1bc7=_0x4cee75[_0x38f6('0x20')];var _0x3cfadb=_0x2f538d?0x0:_0x56acba[_0x38f6('0x1d')];var _0x3cd662=_0x2f538d?_0x4cee75[_0x38f6('0x20')]:_0x56acba['offset']+_0x56acba[_0x38f6('0x1f')];var _0x4ad0b3;if(_0x3cd662>=_0x1c1bc7){_0x3cd662=_0x1c1bc7;_0x4ad0b3=0xc8;}else{_0x4ad0b3=0xce;}_0x4243c0['status'](_0x4ad0b3);return _0x4243c0['set'](_0x38f6('0x21'),_0x3cfadb+'-'+_0x3cd662+'/'+_0x1c1bc7)[_0x38f6('0x1c')](_0x4cee75);}return null;};}function patchUpdates(_0x2c25c1){return function(_0xc644a7){try{jsonpatch[_0x38f6('0x22')](_0xc644a7,_0x2c25c1,!![]);}catch(_0x1dfc67){return BPromise['reject'](_0x1dfc67);}return _0xc644a7[_0x38f6('0x23')]();};}function saveUpdates(_0x83e831,_0x54be97){return function(_0x4ee209){if(_0x4ee209){return _0x4ee209['update'](_0x83e831)['then'](function(_0x10961a){return _0x10961a;});}return null;};}function removeEntity(_0x2e00b4,_0xa8b62e){return function(_0x3f6f47){if(_0x3f6f47){return _0x3f6f47['destroy']()[_0x38f6('0x24')](function(){_0x2e00b4[_0x38f6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32957a,_0x5c76c5){return function(_0x16ccfb){if(!_0x16ccfb){_0x32957a[_0x38f6('0x19')](0x194);}return _0x16ccfb;};}function handleError(_0x573147,_0x261be4){_0x261be4=_0x261be4||0x1f4;return function(_0x1ef5b2){logger[_0x38f6('0x25')](_0x1ef5b2['stack']);if(_0x1ef5b2['name']){delete _0x1ef5b2[_0x38f6('0x26')];}_0x573147[_0x38f6('0x1a')](_0x261be4)[_0x38f6('0x27')](_0x1ef5b2);};}exports[_0x38f6('0x28')]=function(_0x161a3c,_0x105568){var _0x40463d={},_0x36b1c3={},_0x497a09={'count':0x0,'rows':[]};var _0x50478a=_['map'](db[_0x38f6('0x29')][_0x38f6('0x2a')],function(_0x19dc02){return{'name':_0x19dc02[_0x38f6('0x2b')],'type':_0x19dc02[_0x38f6('0x2c')][_0x38f6('0x2d')]};});_0x36b1c3['model']=_[_0x38f6('0x2e')](_0x50478a,_0x38f6('0x26'));_0x36b1c3['query']=_['keys'](_0x161a3c['query']);_0x36b1c3[_0x38f6('0x2f')]=_[_0x38f6('0x30')](_0x36b1c3[_0x38f6('0x31')],_0x36b1c3[_0x38f6('0x32')]);_0x40463d[_0x38f6('0x33')]=_[_0x38f6('0x30')](_0x36b1c3[_0x38f6('0x31')],qs[_0x38f6('0x34')](_0x161a3c['query'][_0x38f6('0x34')]));_0x40463d[_0x38f6('0x33')]=_0x40463d['attributes']['length']?_0x40463d['attributes']:_0x36b1c3[_0x38f6('0x31')];if(!_0x161a3c['query']['hasOwnProperty'](_0x38f6('0x35'))){_0x40463d[_0x38f6('0x1f')]=qs[_0x38f6('0x1f')](_0x161a3c[_0x38f6('0x32')][_0x38f6('0x1f')]);_0x40463d[_0x38f6('0x1d')]=qs[_0x38f6('0x1d')](_0x161a3c['query'][_0x38f6('0x1d')]);}_0x40463d[_0x38f6('0x36')]=qs['sort'](_0x161a3c[_0x38f6('0x32')][_0x38f6('0x37')]);_0x40463d[_0x38f6('0x38')]=qs[_0x38f6('0x2f')](_[_0x38f6('0x39')](_0x161a3c[_0x38f6('0x32')],_0x36b1c3[_0x38f6('0x2f')]),_0x50478a);if(_0x161a3c[_0x38f6('0x32')][_0x38f6('0x3a')]){_0x40463d[_0x38f6('0x38')]=_[_0x38f6('0x3b')](_0x40463d[_0x38f6('0x38')],{'$or':_[_0x38f6('0x2e')](_0x50478a,function(_0x4a3c10){if(_0x4a3c10[_0x38f6('0x2c')]!=='VIRTUAL'){var _0x41fcb4={};_0x41fcb4[_0x4a3c10[_0x38f6('0x26')]]={'$like':'%'+_0x161a3c[_0x38f6('0x32')][_0x38f6('0x3a')]+'%'};return _0x41fcb4;}})});}_0x40463d=_['merge']({},_0x40463d,_0x161a3c[_0x38f6('0x3c')]);var _0x2b9b48={'where':_0x40463d[_0x38f6('0x38')]};return db['MailSubstatus'][_0x38f6('0x20')](_0x2b9b48)[_0x38f6('0x24')](function(_0x59fbcf){_0x497a09[_0x38f6('0x20')]=_0x59fbcf;if(_0x161a3c[_0x38f6('0x32')]['includeAll']){_0x40463d[_0x38f6('0x3d')]=[{'all':!![]}];}return db[_0x38f6('0x29')][_0x38f6('0x3e')](_0x40463d);})[_0x38f6('0x24')](function(_0x3ec4ed){_0x497a09[_0x38f6('0x3f')]=_0x3ec4ed;return _0x497a09;})[_0x38f6('0x24')](respondWithFilteredResult(_0x105568,_0x40463d))['catch'](handleError(_0x105568,null));};exports['show']=function(_0x41ba03,_0x2c31f1){var _0x507c27={'raw':!![],'where':{'id':_0x41ba03[_0x38f6('0x40')]['id']}},_0x2d5dbb={};_0x2d5dbb[_0x38f6('0x31')]=_[_0x38f6('0x41')](db['MailSubstatus'][_0x38f6('0x2a')]);_0x2d5dbb['query']=_[_0x38f6('0x41')](_0x41ba03[_0x38f6('0x32')]);_0x2d5dbb['filters']=_[_0x38f6('0x30')](_0x2d5dbb[_0x38f6('0x31')],_0x2d5dbb[_0x38f6('0x32')]);_0x507c27['attributes']=_[_0x38f6('0x30')](_0x2d5dbb[_0x38f6('0x31')],qs[_0x38f6('0x34')](_0x41ba03['query'][_0x38f6('0x34')]));_0x507c27[_0x38f6('0x33')]=_0x507c27[_0x38f6('0x33')][_0x38f6('0x42')]?_0x507c27[_0x38f6('0x33')]:_0x2d5dbb[_0x38f6('0x31')];if(_0x41ba03['query']['includeAll']){_0x507c27[_0x38f6('0x3d')]=[{'all':!![]}];}_0x507c27=_[_0x38f6('0x3b')]({},_0x507c27,_0x41ba03['options']);return db[_0x38f6('0x29')][_0x38f6('0x43')](_0x507c27)['then'](handleEntityNotFound(_0x2c31f1,null))['then'](respondWithResult(_0x2c31f1,null))[_0x38f6('0x44')](handleError(_0x2c31f1,null));};exports[_0x38f6('0x45')]=function(_0x2db9ed,_0x5d6cb6){return db[_0x38f6('0x29')][_0x38f6('0x45')](_0x2db9ed[_0x38f6('0x46')],{})[_0x38f6('0x24')](respondWithResult(_0x5d6cb6,0xc9))[_0x38f6('0x44')](handleError(_0x5d6cb6,null));};exports['update']=function(_0x8e9b51,_0x3333c7){if(_0x8e9b51[_0x38f6('0x46')]['id']){delete _0x8e9b51['body']['id'];}return db['MailSubstatus'][_0x38f6('0x43')]({'where':{'id':_0x8e9b51[_0x38f6('0x40')]['id']}})['then'](handleEntityNotFound(_0x3333c7,null))[_0x38f6('0x24')](saveUpdates(_0x8e9b51[_0x38f6('0x46')],null))[_0x38f6('0x24')](respondWithResult(_0x3333c7,null))[_0x38f6('0x44')](handleError(_0x3333c7,null));};exports[_0x38f6('0x47')]=function(_0x762bc5,_0x1e10fd){return db[_0x38f6('0x29')][_0x38f6('0x43')]({'where':{'id':_0x762bc5[_0x38f6('0x40')]['id']}})[_0x38f6('0x24')](handleEntityNotFound(_0x1e10fd,null))['then'](removeEntity(_0x1e10fd,null))[_0x38f6('0x44')](handleError(_0x1e10fd,null));};exports[_0x38f6('0x48')]=function(_0x3d8513,_0x205093){return db[_0x38f6('0x29')][_0x38f6('0x48')]()[_0x38f6('0x24')](respondWithResult(_0x205093,null))['catch'](handleError(_0x205093,null));};
\ No newline at end of file
index 979a8ab..77a0a24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a6=['bluebird','request-promise','path','../../config/environment','exports','define','MailSubstatus','mail_substatuses','lodash','util','api','moment'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x15a6,0x110));var _0x615a=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x15a6[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x615a('0x0'));var util=require(_0x615a('0x1'));var logger=require('../../config/logger')(_0x615a('0x2'));var moment=require(_0x615a('0x3'));var BPromise=require(_0x615a('0x4'));var rp=require(_0x615a('0x5'));var fs=require('fs');var path=require(_0x615a('0x6'));var rimraf=require('rimraf');var config=require(_0x615a('0x7'));var attributes=require('./mailSubstatus.attributes');module[_0x615a('0x8')]=function(_0x4e2951,_0x43c044){return _0x4e2951[_0x615a('0x9')](_0x615a('0xa'),attributes,{'tableName':_0x615a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c2e=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailSubstatus.attributes','define','mail_substatuses','lodash'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x2c2e,0x167));var _0xe2c2=function(_0x518179,_0x44cc63){_0x518179=_0x518179-0x0;var _0x1059fb=_0x2c2e[_0x518179];return _0x1059fb;};'use strict';var _=require(_0xe2c2('0x0'));var util=require(_0xe2c2('0x1'));var logger=require(_0xe2c2('0x2'))(_0xe2c2('0x3'));var moment=require(_0xe2c2('0x4'));var BPromise=require(_0xe2c2('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe2c2('0x6'));var rimraf=require(_0xe2c2('0x7'));var config=require(_0xe2c2('0x8'));var attributes=require(_0xe2c2('0x9'));module['exports']=function(_0x59ac48,_0x2fbfab){return _0x59ac48[_0xe2c2('0xa')]('MailSubstatus',attributes,{'tableName':_0xe2c2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f56e0a..d221797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c4=['request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x209429,_0x5a6bbf){var _0x29adf0=function(_0xeaeba7){while(--_0xeaeba7){_0x209429['push'](_0x209429['shift']());}};_0x29adf0(++_0x5a6bbf);}(_0xa5c4,0xdd));var _0x4a5c=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0xa5c4[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0x4a5c('0x0'));var util=require(_0x4a5c('0x1'));var moment=require('moment');var BPromise=require(_0x4a5c('0x2'));var rs=require(_0x4a5c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a5c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a5c('0x5'))(_0x4a5c('0x6'));var config=require(_0x4a5c('0x7'));var jayson=require(_0x4a5c('0x8'));var client=jayson[_0x4a5c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59bafc,_0x6ea7ab,_0x4b5018){return new BPromise(function(_0x27c917,_0xd83918){return client[_0x4a5c('0xa')](_0x59bafc,_0x4b5018)[_0x4a5c('0xb')](function(_0x274d8c){logger['info'](_0x4a5c('0xc'),_0x6ea7ab,_0x4a5c('0xd'));logger[_0x4a5c('0xe')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x6ea7ab,_0x4a5c('0xd'),JSON[_0x4a5c('0xf')](_0x274d8c));if(_0x274d8c[_0x4a5c('0x10')]){if(_0x274d8c[_0x4a5c('0x10')][_0x4a5c('0x11')]===0x1f4){logger[_0x4a5c('0x10')](_0x4a5c('0xc'),_0x6ea7ab,_0x274d8c['error'][_0x4a5c('0x12')]);return _0xd83918(_0x274d8c['error'][_0x4a5c('0x12')]);}logger['error'](_0x4a5c('0xc'),_0x6ea7ab,_0x274d8c['error']['message']);return _0x27c917(_0x274d8c[_0x4a5c('0x10')][_0x4a5c('0x12')]);}else{logger[_0x4a5c('0x13')](_0x4a5c('0xc'),_0x6ea7ab,_0x4a5c('0xd'));_0x27c917(_0x274d8c[_0x4a5c('0x14')]['message']);}})['catch'](function(_0x4211da){logger[_0x4a5c('0x10')](_0x4a5c('0xc'),_0x6ea7ab,_0x4211da);_0xd83918(_0x4211da);});});}
\ No newline at end of file
+var _0x6107=['error','code','message','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0x6107,0x16c));var _0x7610=function(_0x3a2cb3,_0x1edf13){_0x3a2cb3=_0x3a2cb3-0x0;var _0x1d3dab=_0x6107[_0x3a2cb3];return _0x1d3dab;};'use strict';var _=require('lodash');var util=require(_0x7610('0x0'));var moment=require('moment');var BPromise=require(_0x7610('0x1'));var rs=require(_0x7610('0x2'));var fs=require('fs');var Redis=require(_0x7610('0x3'));var db=require(_0x7610('0x4'))['db'];var utils=require(_0x7610('0x5'));var logger=require(_0x7610('0x6'))(_0x7610('0x7'));var config=require(_0x7610('0x8'));var jayson=require(_0x7610('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x27f389,_0x414b59,_0x5db52d){return new BPromise(function(_0x9abcd3,_0x261096){return client[_0x7610('0xa')](_0x27f389,_0x5db52d)['then'](function(_0x45148c){logger[_0x7610('0xb')](_0x7610('0xc'),_0x414b59,_0x7610('0xd'));logger[_0x7610('0xe')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x414b59,_0x7610('0xd'),JSON[_0x7610('0xf')](_0x45148c));if(_0x45148c[_0x7610('0x10')]){if(_0x45148c['error'][_0x7610('0x11')]===0x1f4){logger[_0x7610('0x10')](_0x7610('0xc'),_0x414b59,_0x45148c[_0x7610('0x10')][_0x7610('0x12')]);return _0x261096(_0x45148c[_0x7610('0x10')][_0x7610('0x12')]);}logger[_0x7610('0x10')](_0x7610('0xc'),_0x414b59,_0x45148c[_0x7610('0x10')]['message']);return _0x9abcd3(_0x45148c['error'][_0x7610('0x12')]);}else{logger['info'](_0x7610('0xc'),_0x414b59,'request\x20sent');_0x9abcd3(_0x45148c['result'][_0x7610('0x12')]);}})[_0x7610('0x13')](function(_0x582163){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x414b59,_0x582163);_0x261096(_0x582163);});});}
\ No newline at end of file
index 14c9f26..bafe96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7d=['delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x17e57f,_0x400a02){var _0x2611ba=function(_0x2c42d9){while(--_0x2c42d9){_0x17e57f['push'](_0x17e57f['shift']());}};_0x2611ba(++_0x400a02);}(_0xea7d,0xd4));var _0xdea7=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xea7d[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xdea7('0x0'));var util=require(_0xdea7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdea7('0x2'));var router=express[_0xdea7('0x3')]();var fs_extra=require(_0xdea7('0x4'));var auth=require(_0xdea7('0x5'));var interaction=require(_0xdea7('0x6'));var config=require(_0xdea7('0x7'));var controller=require('./mailTransferReport.controller');router[_0xdea7('0x8')]('/',auth[_0xdea7('0x9')](),controller[_0xdea7('0xa')]);router[_0xdea7('0x8')](_0xdea7('0xb'),auth[_0xdea7('0x9')](),controller[_0xdea7('0xc')]);router[_0xdea7('0x8')](_0xdea7('0xd'),auth[_0xdea7('0x9')](),controller[_0xdea7('0xe')]);router[_0xdea7('0xf')]('/',auth[_0xdea7('0x9')](),controller[_0xdea7('0x10')]);router[_0xdea7('0x11')](_0xdea7('0xd'),auth[_0xdea7('0x9')](),controller[_0xdea7('0x12')]);router[_0xdea7('0x13')](_0xdea7('0xd'),auth[_0xdea7('0x9')](),controller[_0xdea7('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x7185=['update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','show','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7185,0x168));var _0x5718=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x7185[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0x5718('0x0'));var util=require(_0x5718('0x1'));var path=require(_0x5718('0x2'));var timeout=require(_0x5718('0x3'));var express=require(_0x5718('0x4'));var router=express[_0x5718('0x5')]();var fs_extra=require(_0x5718('0x6'));var auth=require(_0x5718('0x7'));var interaction=require(_0x5718('0x8'));var config=require(_0x5718('0x9'));var controller=require(_0x5718('0xa'));router[_0x5718('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5718('0xb')](_0x5718('0xc'),auth[_0x5718('0xd')](),controller[_0x5718('0xe')]);router['get'](_0x5718('0xf'),auth[_0x5718('0xd')](),controller[_0x5718('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5718('0x11')]);router['put'](_0x5718('0xf'),auth['isAuthenticated'](),controller[_0x5718('0x12')]);router[_0x5718('0x13')](_0x5718('0xf'),auth[_0x5718('0xd')](),controller['destroy']);module[_0x5718('0x14')]=router;
\ No newline at end of file
index b1f7edd..8e0670b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x2c2abc,_0x87a32c){var _0x27777a=function(_0x1d6c80){while(--_0x1d6c80){_0x2c2abc['push'](_0x2c2abc['shift']());}};_0x27777a(++_0x87a32c);}(_0x70e0,0x17b));var _0x070e=function(_0x49e1bd,_0x5c1f02){_0x49e1bd=_0x49e1bd-0x0;var _0x568399=_0x70e0[_0x49e1bd];return _0x568399;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x284efa,_0x7e30ad){var _0x395144=function(_0x5e1b04){while(--_0x5e1b04){_0x284efa['push'](_0x284efa['shift']());}};_0x395144(++_0x7e30ad);}(_0xedd9,0xfc));var _0x9edd=function(_0x20dbe3,_0x2cc5b3){_0x20dbe3=_0x20dbe3-0x0;var _0x57b693=_0xedd9[_0x20dbe3];return _0x57b693;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 1236cc8..cacea8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6c=['squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x8d6c,0x127));var _0xc8d6=function(_0x8c2e4e,_0x3c105b){_0x8c2e4e=_0x8c2e4e-0x0;var _0x2286bb=_0x8d6c[_0x8c2e4e];return _0x2286bb;};'use strict';var emlformat=require(_0xc8d6('0x0'));var rimraf=require(_0xc8d6('0x1'));var zipdir=require(_0xc8d6('0x2'));var jsonpatch=require(_0xc8d6('0x3'));var rp=require(_0xc8d6('0x4'));var moment=require(_0xc8d6('0x5'));var BPromise=require(_0xc8d6('0x6'));var Mustache=require('mustache');var util=require(_0xc8d6('0x7'));var path=require('path');var sox=require(_0xc8d6('0x8'));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(_0xc8d6('0x9'));var crypto=require(_0xc8d6('0xa'));var jsforce=require(_0xc8d6('0xb'));var deskjs=require(_0xc8d6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xc8d6('0xd'));var Papa=require(_0xc8d6('0xe'));var Redis=require('ioredis');var authService=require(_0xc8d6('0xf'));var qs=require(_0xc8d6('0x10'));var as=require(_0xc8d6('0x11'));var hardwareService=require(_0xc8d6('0x12'));var logger=require('../../config/logger')(_0xc8d6('0x13'));var utils=require(_0xc8d6('0x14'));var config=require(_0xc8d6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc8d6('0x16'))['db'];function respondWithStatusCode(_0x3738c3,_0x47674e){_0x47674e=_0x47674e||0xcc;return function(_0x390178){if(_0x390178){return _0x3738c3[_0xc8d6('0x17')](_0x47674e);}return _0x3738c3['status'](_0x47674e)[_0xc8d6('0x18')]();};}function respondWithResult(_0x5f4f4e,_0x41f56d){_0x41f56d=_0x41f56d||0xc8;return function(_0x5ed33d){if(_0x5ed33d){return _0x5f4f4e[_0xc8d6('0x19')](_0x41f56d)[_0xc8d6('0x1a')](_0x5ed33d);}};}function respondWithFilteredResult(_0x425c62,_0xec8638){return function(_0x30e91b){if(_0x30e91b){var _0xbcf630=typeof _0xec8638['offset']==='undefined'&&typeof _0xec8638[_0xc8d6('0x1b')]===_0xc8d6('0x1c');var _0x1c7ba0=_0x30e91b[_0xc8d6('0x1d')];var _0x3e7e4c=_0xbcf630?0x0:_0xec8638[_0xc8d6('0x1e')];var _0x45e28e=_0xbcf630?_0x30e91b[_0xc8d6('0x1d')]:_0xec8638[_0xc8d6('0x1e')]+_0xec8638['limit'];var _0x53fbe7;if(_0x45e28e>=_0x1c7ba0){_0x45e28e=_0x1c7ba0;_0x53fbe7=0xc8;}else{_0x53fbe7=0xce;}_0x425c62['status'](_0x53fbe7);return _0x425c62[_0xc8d6('0x1f')](_0xc8d6('0x20'),_0x3e7e4c+'-'+_0x45e28e+'/'+_0x1c7ba0)[_0xc8d6('0x1a')](_0x30e91b);}return null;};}function patchUpdates(_0xba5845){return function(_0x8257e6){try{jsonpatch[_0xc8d6('0x21')](_0x8257e6,_0xba5845,!![]);}catch(_0x316deb){return BPromise[_0xc8d6('0x22')](_0x316deb);}return _0x8257e6[_0xc8d6('0x23')]();};}function saveUpdates(_0x3dbfcf,_0x1ade55){return function(_0x52735b){if(_0x52735b){return _0x52735b[_0xc8d6('0x24')](_0x3dbfcf)[_0xc8d6('0x25')](function(_0x217d5b){return _0x217d5b;});}return null;};}function removeEntity(_0x4ce139,_0x43bb32){return function(_0x50fa04){if(_0x50fa04){return _0x50fa04['destroy']()['then'](function(){_0x4ce139['status'](0xcc)[_0xc8d6('0x18')]();});}};}function handleEntityNotFound(_0x295a0b,_0x419aa2){return function(_0x1c9ece){if(!_0x1c9ece){_0x295a0b[_0xc8d6('0x17')](0x194);}return _0x1c9ece;};}function handleError(_0x1371ca,_0x290a9e){_0x290a9e=_0x290a9e||0x1f4;return function(_0x4502fc){logger['error'](_0x4502fc[_0xc8d6('0x26')]);if(_0x4502fc['name']){delete _0x4502fc[_0xc8d6('0x27')];}_0x1371ca['status'](_0x290a9e)[_0xc8d6('0x28')](_0x4502fc);};}exports[_0xc8d6('0x29')]=function(_0x406fe7,_0xdf0c68){var _0x3ec2c0={},_0x57090f={},_0x846951={'count':0x0,'rows':[]};var _0x4923ce=_[_0xc8d6('0x2a')](db[_0xc8d6('0x2b')][_0xc8d6('0x2c')],function(_0x293d11){return{'name':_0x293d11[_0xc8d6('0x2d')],'type':_0x293d11[_0xc8d6('0x2e')][_0xc8d6('0x2f')]};});_0x57090f[_0xc8d6('0x30')]=_['map'](_0x4923ce,_0xc8d6('0x27'));_0x57090f[_0xc8d6('0x31')]=_[_0xc8d6('0x32')](_0x406fe7['query']);_0x57090f[_0xc8d6('0x33')]=_[_0xc8d6('0x34')](_0x57090f[_0xc8d6('0x30')],_0x57090f[_0xc8d6('0x31')]);_0x3ec2c0[_0xc8d6('0x35')]=_[_0xc8d6('0x34')](_0x57090f['model'],qs[_0xc8d6('0x36')](_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x36')]));_0x3ec2c0['attributes']=_0x3ec2c0[_0xc8d6('0x35')][_0xc8d6('0x37')]?_0x3ec2c0['attributes']:_0x57090f[_0xc8d6('0x30')];if(!_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x38')](_0xc8d6('0x39'))){_0x3ec2c0[_0xc8d6('0x1b')]=qs[_0xc8d6('0x1b')](_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x1b')]);_0x3ec2c0['offset']=qs[_0xc8d6('0x1e')](_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x1e')]);}_0x3ec2c0[_0xc8d6('0x3a')]=qs[_0xc8d6('0x3b')](_0x406fe7[_0xc8d6('0x31')]['sort']);_0x3ec2c0['where']=qs[_0xc8d6('0x33')](_[_0xc8d6('0x3c')](_0x406fe7[_0xc8d6('0x31')],_0x57090f[_0xc8d6('0x33')]),_0x4923ce);if(_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x3d')]){_0x3ec2c0[_0xc8d6('0x3e')]=_[_0xc8d6('0x3f')](_0x3ec2c0[_0xc8d6('0x3e')],{'$or':_['map'](_0x4923ce,function(_0xd03211){if(_0xd03211[_0xc8d6('0x2e')]!=='VIRTUAL'){var _0x5c3fc1={};_0x5c3fc1[_0xd03211[_0xc8d6('0x27')]]={'$like':'%'+_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x3d')]+'%'};return _0x5c3fc1;}})});}_0x3ec2c0=_[_0xc8d6('0x3f')]({},_0x3ec2c0,_0x406fe7[_0xc8d6('0x40')]);var _0x2ce481={'where':_0x3ec2c0[_0xc8d6('0x3e')]};return db['MailTransferReport'][_0xc8d6('0x1d')](_0x2ce481)['then'](function(_0x204411){_0x846951[_0xc8d6('0x1d')]=_0x204411;if(_0x406fe7['query'][_0xc8d6('0x41')]){_0x3ec2c0['include']=[{'all':!![]}];}return db['MailTransferReport'][_0xc8d6('0x42')](_0x3ec2c0);})[_0xc8d6('0x25')](function(_0x383eeb){_0x846951[_0xc8d6('0x43')]=_0x383eeb;return _0x846951;})[_0xc8d6('0x25')](respondWithFilteredResult(_0xdf0c68,_0x3ec2c0))[_0xc8d6('0x44')](handleError(_0xdf0c68,null));};exports[_0xc8d6('0x45')]=function(_0x2b2216,_0x41435c){var _0x28b0a0={'raw':!![],'where':{'id':_0x2b2216[_0xc8d6('0x46')]['id']}},_0x36df06={};_0x36df06[_0xc8d6('0x30')]=_[_0xc8d6('0x32')](db[_0xc8d6('0x2b')][_0xc8d6('0x2c')]);_0x36df06[_0xc8d6('0x31')]=_[_0xc8d6('0x32')](_0x2b2216[_0xc8d6('0x31')]);_0x36df06['filters']=_[_0xc8d6('0x34')](_0x36df06['model'],_0x36df06[_0xc8d6('0x31')]);_0x28b0a0['attributes']=_['intersection'](_0x36df06[_0xc8d6('0x30')],qs[_0xc8d6('0x36')](_0x2b2216[_0xc8d6('0x31')][_0xc8d6('0x36')]));_0x28b0a0[_0xc8d6('0x35')]=_0x28b0a0[_0xc8d6('0x35')][_0xc8d6('0x37')]?_0x28b0a0[_0xc8d6('0x35')]:_0x36df06[_0xc8d6('0x30')];if(_0x2b2216[_0xc8d6('0x31')][_0xc8d6('0x41')]){_0x28b0a0['include']=[{'all':!![]}];}_0x28b0a0=_[_0xc8d6('0x3f')]({},_0x28b0a0,_0x2b2216['options']);return db[_0xc8d6('0x2b')][_0xc8d6('0x47')](_0x28b0a0)[_0xc8d6('0x25')](handleEntityNotFound(_0x41435c,null))['then'](respondWithResult(_0x41435c,null))[_0xc8d6('0x44')](handleError(_0x41435c,null));};exports[_0xc8d6('0x48')]=function(_0x6025b2,_0x572e20){return db[_0xc8d6('0x2b')][_0xc8d6('0x48')](_0x6025b2['body'],{})['then'](respondWithResult(_0x572e20,0xc9))[_0xc8d6('0x44')](handleError(_0x572e20,null));};exports[_0xc8d6('0x24')]=function(_0x201202,_0x4ca8f2){if(_0x201202[_0xc8d6('0x49')]['id']){delete _0x201202[_0xc8d6('0x49')]['id'];}return db[_0xc8d6('0x2b')][_0xc8d6('0x47')]({'where':{'id':_0x201202[_0xc8d6('0x46')]['id']}})[_0xc8d6('0x25')](handleEntityNotFound(_0x4ca8f2,null))['then'](saveUpdates(_0x201202[_0xc8d6('0x49')],null))[_0xc8d6('0x25')](respondWithResult(_0x4ca8f2,null))[_0xc8d6('0x44')](handleError(_0x4ca8f2,null));};exports[_0xc8d6('0x4a')]=function(_0x5376b1,_0x4a5efd){return db[_0xc8d6('0x2b')]['find']({'where':{'id':_0x5376b1[_0xc8d6('0x46')]['id']}})[_0xc8d6('0x25')](handleEntityNotFound(_0x4a5efd,null))[_0xc8d6('0x25')](removeEntity(_0x4a5efd,null))['catch'](handleError(_0x4a5efd,null));};exports[_0xc8d6('0x4b')]=function(_0x3892ff,_0x4f9df9){return db[_0xc8d6('0x2b')][_0xc8d6('0x4b')]()[_0xc8d6('0x25')](respondWithResult(_0x4f9df9,null))[_0xc8d6('0x44')](handleError(_0x4f9df9,null));};
\ No newline at end of file
+var _0x57e3=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','include','catch','show','keys','includeAll','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x36f9fc,_0x10b9e3){var _0xa748e6=function(_0x2d84d2){while(--_0x2d84d2){_0x36f9fc['push'](_0x36f9fc['shift']());}};_0xa748e6(++_0x10b9e3);}(_0x57e3,0x8c));var _0x357e=function(_0x30f52d,_0x20cc2c){_0x30f52d=_0x30f52d-0x0;var _0x3bcce6=_0x57e3[_0x30f52d];return _0x3bcce6;};'use strict';var emlformat=require(_0x357e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x357e('0x1'));var jsonpatch=require(_0x357e('0x2'));var rp=require(_0x357e('0x3'));var moment=require(_0x357e('0x4'));var BPromise=require(_0x357e('0x5'));var Mustache=require('mustache');var util=require(_0x357e('0x6'));var path=require(_0x357e('0x7'));var sox=require('sox');var csv=require(_0x357e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x357e('0x9'));var _=require(_0x357e('0xa'));var squel=require(_0x357e('0xb'));var crypto=require(_0x357e('0xc'));var jsforce=require(_0x357e('0xd'));var deskjs=require(_0x357e('0xe'));var toCsv=require(_0x357e('0x8'));var querystring=require(_0x357e('0xf'));var Papa=require(_0x357e('0x10'));var Redis=require(_0x357e('0x11'));var authService=require(_0x357e('0x12'));var qs=require(_0x357e('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x357e('0x14'));var logger=require(_0x357e('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x357e('0x16'));var licenseUtil=require(_0x357e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47affc,_0x116311){_0x116311=_0x116311||0xcc;return function(_0x185062){if(_0x185062){return _0x47affc[_0x357e('0x18')](_0x116311);}return _0x47affc['status'](_0x116311)[_0x357e('0x19')]();};}function respondWithResult(_0x5136ac,_0x137333){_0x137333=_0x137333||0xc8;return function(_0x3533dc){if(_0x3533dc){return _0x5136ac[_0x357e('0x1a')](_0x137333)[_0x357e('0x1b')](_0x3533dc);}};}function respondWithFilteredResult(_0xf03258,_0x15bd3e){return function(_0x22ba78){if(_0x22ba78){var _0x22cba4=typeof _0x15bd3e[_0x357e('0x1c')]==='undefined'&&typeof _0x15bd3e[_0x357e('0x1d')]==='undefined';var _0x35863b=_0x22ba78[_0x357e('0x1e')];var _0x3588f9=_0x22cba4?0x0:_0x15bd3e['offset'];var _0x58bb04=_0x22cba4?_0x22ba78['count']:_0x15bd3e[_0x357e('0x1c')]+_0x15bd3e['limit'];var _0x549bc2;if(_0x58bb04>=_0x35863b){_0x58bb04=_0x35863b;_0x549bc2=0xc8;}else{_0x549bc2=0xce;}_0xf03258['status'](_0x549bc2);return _0xf03258['set'](_0x357e('0x1f'),_0x3588f9+'-'+_0x58bb04+'/'+_0x35863b)[_0x357e('0x1b')](_0x22ba78);}return null;};}function patchUpdates(_0xd1c82c){return function(_0xd40d4b){try{jsonpatch[_0x357e('0x20')](_0xd40d4b,_0xd1c82c,!![]);}catch(_0x39a1e5){return BPromise[_0x357e('0x21')](_0x39a1e5);}return _0xd40d4b[_0x357e('0x22')]();};}function saveUpdates(_0x19654b,_0x47ae49){return function(_0x1eae79){if(_0x1eae79){return _0x1eae79[_0x357e('0x23')](_0x19654b)[_0x357e('0x24')](function(_0x467308){return _0x467308;});}return null;};}function removeEntity(_0x2357af,_0x2cea80){return function(_0x9cd31){if(_0x9cd31){return _0x9cd31[_0x357e('0x25')]()['then'](function(){_0x2357af[_0x357e('0x1a')](0xcc)[_0x357e('0x19')]();});}};}function handleEntityNotFound(_0x471d4d,_0x1677c1){return function(_0x57982e){if(!_0x57982e){_0x471d4d['sendStatus'](0x194);}return _0x57982e;};}function handleError(_0x55f969,_0x1d9168){_0x1d9168=_0x1d9168||0x1f4;return function(_0x3c963c){logger[_0x357e('0x26')](_0x3c963c[_0x357e('0x27')]);if(_0x3c963c['name']){delete _0x3c963c[_0x357e('0x28')];}_0x55f969[_0x357e('0x1a')](_0x1d9168)[_0x357e('0x29')](_0x3c963c);};}exports[_0x357e('0x2a')]=function(_0x2b2d46,_0x366beb){var _0x25b77f={},_0x40ca4d={},_0x54a387={'count':0x0,'rows':[]};var _0x405ee8=_[_0x357e('0x2b')](db[_0x357e('0x2c')][_0x357e('0x2d')],function(_0x575bea){return{'name':_0x575bea[_0x357e('0x2e')],'type':_0x575bea[_0x357e('0x2f')][_0x357e('0x30')]};});_0x40ca4d[_0x357e('0x31')]=_['map'](_0x405ee8,_0x357e('0x28'));_0x40ca4d[_0x357e('0x32')]=_['keys'](_0x2b2d46[_0x357e('0x32')]);_0x40ca4d[_0x357e('0x33')]=_[_0x357e('0x34')](_0x40ca4d['model'],_0x40ca4d[_0x357e('0x32')]);_0x25b77f[_0x357e('0x35')]=_[_0x357e('0x34')](_0x40ca4d[_0x357e('0x31')],qs[_0x357e('0x36')](_0x2b2d46[_0x357e('0x32')][_0x357e('0x36')]));_0x25b77f['attributes']=_0x25b77f['attributes'][_0x357e('0x37')]?_0x25b77f['attributes']:_0x40ca4d['model'];if(!_0x2b2d46[_0x357e('0x32')]['hasOwnProperty'](_0x357e('0x38'))){_0x25b77f[_0x357e('0x1d')]=qs[_0x357e('0x1d')](_0x2b2d46['query'][_0x357e('0x1d')]);_0x25b77f[_0x357e('0x1c')]=qs[_0x357e('0x1c')](_0x2b2d46[_0x357e('0x32')][_0x357e('0x1c')]);}_0x25b77f['order']=qs[_0x357e('0x39')](_0x2b2d46[_0x357e('0x32')][_0x357e('0x39')]);_0x25b77f['where']=qs[_0x357e('0x33')](_[_0x357e('0x3a')](_0x2b2d46[_0x357e('0x32')],_0x40ca4d[_0x357e('0x33')]),_0x405ee8);if(_0x2b2d46[_0x357e('0x32')]['filter']){_0x25b77f[_0x357e('0x3b')]=_[_0x357e('0x3c')](_0x25b77f['where'],{'$or':_[_0x357e('0x2b')](_0x405ee8,function(_0x2b4c8f){if(_0x2b4c8f[_0x357e('0x2f')]!==_0x357e('0x3d')){var _0x432d07={};_0x432d07[_0x2b4c8f[_0x357e('0x28')]]={'$like':'%'+_0x2b2d46['query'][_0x357e('0x3e')]+'%'};return _0x432d07;}})});}_0x25b77f=_['merge']({},_0x25b77f,_0x2b2d46[_0x357e('0x3f')]);var _0x411634={'where':_0x25b77f[_0x357e('0x3b')]};return db[_0x357e('0x2c')][_0x357e('0x1e')](_0x411634)['then'](function(_0x3da7ed){_0x54a387[_0x357e('0x1e')]=_0x3da7ed;if(_0x2b2d46[_0x357e('0x32')]['includeAll']){_0x25b77f[_0x357e('0x40')]=[{'all':!![]}];}return db[_0x357e('0x2c')]['findAll'](_0x25b77f);})['then'](function(_0x5bb2bb){_0x54a387['rows']=_0x5bb2bb;return _0x54a387;})['then'](respondWithFilteredResult(_0x366beb,_0x25b77f))[_0x357e('0x41')](handleError(_0x366beb,null));};exports[_0x357e('0x42')]=function(_0x5cfd35,_0xdc0938){var _0x2628c5={'raw':!![],'where':{'id':_0x5cfd35['params']['id']}},_0x5a967c={};_0x5a967c['model']=_[_0x357e('0x43')](db[_0x357e('0x2c')][_0x357e('0x2d')]);_0x5a967c[_0x357e('0x32')]=_[_0x357e('0x43')](_0x5cfd35[_0x357e('0x32')]);_0x5a967c[_0x357e('0x33')]=_[_0x357e('0x34')](_0x5a967c['model'],_0x5a967c[_0x357e('0x32')]);_0x2628c5[_0x357e('0x35')]=_['intersection'](_0x5a967c[_0x357e('0x31')],qs[_0x357e('0x36')](_0x5cfd35['query'][_0x357e('0x36')]));_0x2628c5[_0x357e('0x35')]=_0x2628c5[_0x357e('0x35')]['length']?_0x2628c5[_0x357e('0x35')]:_0x5a967c[_0x357e('0x31')];if(_0x5cfd35[_0x357e('0x32')][_0x357e('0x44')]){_0x2628c5['include']=[{'all':!![]}];}_0x2628c5=_[_0x357e('0x3c')]({},_0x2628c5,_0x5cfd35[_0x357e('0x3f')]);return db[_0x357e('0x2c')][_0x357e('0x45')](_0x2628c5)[_0x357e('0x24')](handleEntityNotFound(_0xdc0938,null))[_0x357e('0x24')](respondWithResult(_0xdc0938,null))['catch'](handleError(_0xdc0938,null));};exports[_0x357e('0x46')]=function(_0x49f48d,_0x92f722){return db[_0x357e('0x2c')][_0x357e('0x46')](_0x49f48d[_0x357e('0x47')],{})[_0x357e('0x24')](respondWithResult(_0x92f722,0xc9))['catch'](handleError(_0x92f722,null));};exports[_0x357e('0x23')]=function(_0x369624,_0x2f162b){if(_0x369624[_0x357e('0x47')]['id']){delete _0x369624[_0x357e('0x47')]['id'];}return db[_0x357e('0x2c')][_0x357e('0x45')]({'where':{'id':_0x369624[_0x357e('0x48')]['id']}})[_0x357e('0x24')](handleEntityNotFound(_0x2f162b,null))[_0x357e('0x24')](saveUpdates(_0x369624[_0x357e('0x47')],null))[_0x357e('0x24')](respondWithResult(_0x2f162b,null))[_0x357e('0x41')](handleError(_0x2f162b,null));};exports[_0x357e('0x25')]=function(_0x45bb64,_0x247b59){return db['MailTransferReport'][_0x357e('0x45')]({'where':{'id':_0x45bb64[_0x357e('0x48')]['id']}})[_0x357e('0x24')](handleEntityNotFound(_0x247b59,null))[_0x357e('0x24')](removeEntity(_0x247b59,null))['catch'](handleError(_0x247b59,null));};exports[_0x357e('0x49')]=function(_0x2c97cd,_0x479223){return db['MailTransferReport'][_0x357e('0x49')]()[_0x357e('0x24')](respondWithResult(_0x479223,null))[_0x357e('0x41')](handleError(_0x479223,null));};
\ No newline at end of file
index b334ea3..7ab182e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x229a=['moment','bluebird','request-promise','path','../../config/environment','exports','define','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x2d2f1a,_0x57b966){var _0x55d9db=function(_0x15771f){while(--_0x15771f){_0x2d2f1a['push'](_0x2d2f1a['shift']());}};_0x55d9db(++_0x57b966);}(_0x229a,0x1ea));var _0xa229=function(_0x5e1100,_0xd61de7){_0x5e1100=_0x5e1100-0x0;var _0x1ee552=_0x229a[_0x5e1100];return _0x1ee552;};'use strict';var _=require(_0xa229('0x0'));var util=require(_0xa229('0x1'));var logger=require(_0xa229('0x2'))(_0xa229('0x3'));var moment=require(_0xa229('0x4'));var BPromise=require(_0xa229('0x5'));var rp=require(_0xa229('0x6'));var fs=require('fs');var path=require(_0xa229('0x7'));var rimraf=require('rimraf');var config=require(_0xa229('0x8'));var attributes=require('./mailTransferReport.attributes');module[_0xa229('0x9')]=function(_0x6b31c9,_0x24bad7){return _0x6b31c9[_0xa229('0xa')]('MailTransferReport',attributes,{'tableName':_0xa229('0xb'),'paranoid':![],'indexes':[{'name':_0xa229('0xc'),'fields':[_0xa229('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a0f=['uniqueid','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer'];(function(_0x294828,_0x46895b){var _0x970342=function(_0x278524){while(--_0x278524){_0x294828['push'](_0x294828['shift']());}};_0x970342(++_0x46895b);}(_0x3a0f,0x145));var _0xf3a0=function(_0x4e6934,_0x221680){_0x4e6934=_0x4e6934-0x0;var _0x17c8a4=_0x3a0f[_0x4e6934];return _0x17c8a4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf3a0('0x0'))('api');var moment=require('moment');var BPromise=require(_0xf3a0('0x1'));var rp=require(_0xf3a0('0x2'));var fs=require('fs');var path=require(_0xf3a0('0x3'));var rimraf=require(_0xf3a0('0x4'));var config=require(_0xf3a0('0x5'));var attributes=require(_0xf3a0('0x6'));module[_0xf3a0('0x7')]=function(_0x3bc431,_0x48e423){return _0x3bc431[_0xf3a0('0x8')](_0xf3a0('0x9'),attributes,{'tableName':_0xf3a0('0xa'),'paranoid':![],'indexes':[{'name':_0xf3a0('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 91c4614..3d164bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5bd=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x12321d,_0x1cf3bf){var _0x18fec7=function(_0x4b21c9){while(--_0x4b21c9){_0x12321d['push'](_0x12321d['shift']());}};_0x18fec7(++_0x1cf3bf);}(_0xa5bd,0xc2));var _0xda5b=function(_0x5e7f24,_0x7b595){_0x5e7f24=_0x5e7f24-0x0;var _0x11d440=_0xa5bd[_0x5e7f24];return _0x11d440;};'use strict';var _=require(_0xda5b('0x0'));var util=require('util');var moment=require(_0xda5b('0x1'));var BPromise=require(_0xda5b('0x2'));var rs=require(_0xda5b('0x3'));var fs=require('fs');var Redis=require(_0xda5b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xda5b('0x5'));var logger=require(_0xda5b('0x6'))(_0xda5b('0x7'));var config=require(_0xda5b('0x8'));var jayson=require(_0xda5b('0x9'));var client=jayson[_0xda5b('0xa')][_0xda5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x491174,_0x5c0c5a,_0x57ab84){return new BPromise(function(_0x5772ab,_0x3f8f1b){return client[_0xda5b('0xc')](_0x491174,_0x57ab84)[_0xda5b('0xd')](function(_0x1132c7){logger['info'](_0xda5b('0xe'),_0x5c0c5a,_0xda5b('0xf'));logger[_0xda5b('0x10')](_0xda5b('0x11'),_0x5c0c5a,'request\x20sent',JSON[_0xda5b('0x12')](_0x1132c7));if(_0x1132c7[_0xda5b('0x13')]){if(_0x1132c7[_0xda5b('0x13')][_0xda5b('0x14')]===0x1f4){logger[_0xda5b('0x13')](_0xda5b('0xe'),_0x5c0c5a,_0x1132c7[_0xda5b('0x13')]['message']);return _0x3f8f1b(_0x1132c7['error'][_0xda5b('0x15')]);}logger['error'](_0xda5b('0xe'),_0x5c0c5a,_0x1132c7[_0xda5b('0x13')][_0xda5b('0x15')]);return _0x5772ab(_0x1132c7[_0xda5b('0x13')][_0xda5b('0x15')]);}else{logger[_0xda5b('0x16')](_0xda5b('0xe'),_0x5c0c5a,_0xda5b('0xf'));_0x5772ab(_0x1132c7[_0xda5b('0x17')]['message']);}})[_0xda5b('0x18')](function(_0xf789a0){logger[_0xda5b('0x13')](_0xda5b('0xe'),_0x5c0c5a,_0xf789a0);_0x3f8f1b(_0xf789a0);});});}
\ No newline at end of file
+var _0x6eb2=['../../config/logger','rpc','../../config/environment','client','request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0xc03ea6,_0x23e402){var _0x5a0085=function(_0xc4937e){while(--_0xc4937e){_0xc03ea6['push'](_0xc03ea6['shift']());}};_0x5a0085(++_0x23e402);}(_0x6eb2,0x19d));var _0x26eb=function(_0x5668db,_0x149b9a){_0x5668db=_0x5668db-0x0;var _0x9335dc=_0x6eb2[_0x5668db];return _0x9335dc;};'use strict';var _=require(_0x26eb('0x0'));var util=require(_0x26eb('0x1'));var moment=require('moment');var BPromise=require(_0x26eb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x26eb('0x3'));var db=require(_0x26eb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x26eb('0x5'))(_0x26eb('0x6'));var config=require(_0x26eb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x26eb('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x78b9b1,_0x58557c,_0x1ab845){return new BPromise(function(_0x48c8b9,_0x5c3bdf){return client[_0x26eb('0x9')](_0x78b9b1,_0x1ab845)['then'](function(_0x1ad9bc){logger[_0x26eb('0xa')](_0x26eb('0xb'),_0x58557c,_0x26eb('0xc'));logger['debug'](_0x26eb('0xd'),_0x58557c,_0x26eb('0xc'),JSON[_0x26eb('0xe')](_0x1ad9bc));if(_0x1ad9bc[_0x26eb('0xf')]){if(_0x1ad9bc[_0x26eb('0xf')][_0x26eb('0x10')]===0x1f4){logger[_0x26eb('0xf')](_0x26eb('0xb'),_0x58557c,_0x1ad9bc[_0x26eb('0xf')]['message']);return _0x5c3bdf(_0x1ad9bc[_0x26eb('0xf')][_0x26eb('0x11')]);}logger['error'](_0x26eb('0xb'),_0x58557c,_0x1ad9bc['error'][_0x26eb('0x11')]);return _0x48c8b9(_0x1ad9bc[_0x26eb('0xf')]['message']);}else{logger['info'](_0x26eb('0xb'),_0x58557c,_0x26eb('0xc'));_0x48c8b9(_0x1ad9bc['result'][_0x26eb('0x11')]);}})[_0x26eb('0x12')](function(_0x940d89){logger[_0x26eb('0xf')](_0x26eb('0xb'),_0x58557c,_0x940d89);_0x5c3bdf(_0x940d89);});});}
\ No newline at end of file
index 05d77ba..5ea7b41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb5=['describe','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated'];(function(_0x435117,_0x2b9bad){var _0x585a63=function(_0x32c270){while(--_0x32c270){_0x435117['push'](_0x435117['shift']());}};_0x585a63(++_0x2b9bad);}(_0x9bb5,0xbc));var _0x59bb=function(_0xfad14f,_0x3daf22){_0xfad14f=_0xfad14f-0x0;var _0x3ca4d2=_0x9bb5[_0xfad14f];return _0x3ca4d2;};'use strict';var multer=require('multer');var util=require(_0x59bb('0x0'));var path=require(_0x59bb('0x1'));var timeout=require(_0x59bb('0x2'));var express=require(_0x59bb('0x3'));var router=express[_0x59bb('0x4')]();var fs_extra=require(_0x59bb('0x5'));var auth=require(_0x59bb('0x6'));var interaction=require(_0x59bb('0x7'));var config=require(_0x59bb('0x8'));var controller=require('./memberReport.controller');router[_0x59bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x59bb('0x9')](_0x59bb('0xa'),auth[_0x59bb('0xb')](),controller[_0x59bb('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x59bb('0xd')]('/',auth[_0x59bb('0xb')](),controller[_0x59bb('0xe')]);router[_0x59bb('0xf')]('/:id',auth[_0x59bb('0xb')](),controller[_0x59bb('0x10')]);router[_0x59bb('0x11')]('/:id',auth[_0x59bb('0xb')](),controller[_0x59bb('0x12')]);module[_0x59bb('0x13')]=router;
\ No newline at end of file
+var _0xd43d=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','create'];(function(_0x52804f,_0x53399e){var _0x32769a=function(_0x1a413e){while(--_0x1a413e){_0x52804f['push'](_0x52804f['shift']());}};_0x32769a(++_0x53399e);}(_0xd43d,0xd6));var _0xdd43=function(_0x232b5c,_0x25b62b){_0x232b5c=_0x232b5c-0x0;var _0x1ffb96=_0xd43d[_0x232b5c];return _0x1ffb96;};'use strict';var multer=require(_0xdd43('0x0'));var util=require('util');var path=require(_0xdd43('0x1'));var timeout=require(_0xdd43('0x2'));var express=require(_0xdd43('0x3'));var router=express[_0xdd43('0x4')]();var fs_extra=require(_0xdd43('0x5'));var auth=require(_0xdd43('0x6'));var interaction=require(_0xdd43('0x7'));var config=require(_0xdd43('0x8'));var controller=require(_0xdd43('0x9'));router[_0xdd43('0xa')]('/',auth[_0xdd43('0xb')](),controller[_0xdd43('0xc')]);router[_0xdd43('0xa')](_0xdd43('0xd'),auth[_0xdd43('0xb')](),controller[_0xdd43('0xe')]);router[_0xdd43('0xa')](_0xdd43('0xf'),auth[_0xdd43('0xb')](),controller['show']);router['post']('/',auth[_0xdd43('0xb')](),controller[_0xdd43('0x10')]);router['put'](_0xdd43('0xf'),auth[_0xdd43('0xb')](),controller[_0xdd43('0x11')]);router[_0xdd43('0x12')](_0xdd43('0xf'),auth[_0xdd43('0xb')](),controller[_0xdd43('0x13')]);module[_0xdd43('0x14')]=router;
\ No newline at end of file
index 5d83083..dc97105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3dc=['seconds','setDataValue','exitAt','duration','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','enterAt','diff'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xf3dc,0x9c));var _0xcf3d=function(_0xa4f047,_0x30cffe){_0xa4f047=_0xa4f047-0x0;var _0x280a03=_0xf3dc[_0xa4f047];return _0x280a03;};'use strict';var Sequelize=require(_0xcf3d('0x0'));var moment=require(_0xcf3d('0x1'));module[_0xcf3d('0x2')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xcf3d('0x3')]},'interface':{'type':Sequelize[_0xcf3d('0x3')]},'type':{'type':Sequelize[_0xcf3d('0x3')],'defaultValue':_0xcf3d('0x4'),'comment':_0xcf3d('0x5')},'duration':{'type':Sequelize[_0xcf3d('0x6')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x55074b){var _0x5b1441=moment(_0x55074b);var _0x4e3427=moment(this['getDataValue'](_0xcf3d('0x7')));var _0x10d808=_0x5b1441[_0xcf3d('0x8')](_0x4e3427,_0xcf3d('0x9'));this[_0xcf3d('0xa')](_0xcf3d('0xb'),_0x55074b);this[_0xcf3d('0xa')](_0xcf3d('0xc'),_0x10d808||null);}},'data1':{'type':Sequelize[_0xcf3d('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize['STRING'],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xcf3d('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xcf3d('0x3')],'comment':_0xcf3d('0xd')},'data5':{'type':Sequelize[_0xcf3d('0x3')],'comment':_0xcf3d('0xe')},'role':{'type':Sequelize[_0xcf3d('0x3')]},'internal':{'type':Sequelize[_0xcf3d('0x6')]},'uniqueid':{'type':Sequelize[_0xcf3d('0x3')]}};
\ No newline at end of file
+var _0x0dba=['talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','seconds','setDataValue','exitAt'];(function(_0x2096b2,_0x53c8bd){var _0x540b16=function(_0x4f7d38){while(--_0x4f7d38){_0x2096b2['push'](_0x2096b2['shift']());}};_0x540b16(++_0x53c8bd);}(_0x0dba,0x136));var _0xa0db=function(_0x4c198f,_0x120c04){_0x4c198f=_0x4c198f-0x0;var _0x3e0fbc=_0x0dba[_0x4c198f];return _0x3e0fbc;};'use strict';var Sequelize=require(_0xa0db('0x0'));var moment=require(_0xa0db('0x1'));module[_0xa0db('0x2')]={'channel':{'type':Sequelize[_0xa0db('0x3')]},'membername':{'type':Sequelize[_0xa0db('0x3')]},'interface':{'type':Sequelize[_0xa0db('0x3')]},'type':{'type':Sequelize[_0xa0db('0x3')],'defaultValue':_0xa0db('0x4'),'comment':_0xa0db('0x5')},'duration':{'type':Sequelize[_0xa0db('0x6')]},'enterAt':{'type':Sequelize[_0xa0db('0x7')]},'exitAt':{'type':Sequelize[_0xa0db('0x7')],'set':function(_0x4d6ece){var _0x53472e=moment(_0x4d6ece);var _0x5b77ce=moment(this[_0xa0db('0x8')](_0xa0db('0x9')));var _0x1fd7ed=_0x53472e['diff'](_0x5b77ce,_0xa0db('0xa'));this[_0xa0db('0xb')](_0xa0db('0xc'),_0x4d6ece);this[_0xa0db('0xb')]('duration',_0x1fd7ed||null);}},'data1':{'type':Sequelize[_0xa0db('0x3')],'comment':_0xa0db('0xd')},'data2':{'type':Sequelize['STRING'],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xa0db('0x3')],'comment':_0xa0db('0xe')},'data4':{'type':Sequelize[_0xa0db('0x3')],'comment':_0xa0db('0xf')},'data5':{'type':Sequelize['STRING'],'comment':_0xa0db('0x10')},'role':{'type':Sequelize[_0xa0db('0x3')]},'internal':{'type':Sequelize[_0xa0db('0x6')]},'uniqueid':{'type':Sequelize[_0xa0db('0x3')]}};
\ No newline at end of file
index 046419f..ae3e8e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','MemberReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x336376,_0xe4b28d){var _0x1d2a8e=function(_0x3afe68){while(--_0x3afe68){_0x336376['push'](_0x336376['shift']());}};_0x1d2a8e(++_0xe4b28d);}(_0x34e8,0x12c));var _0x834e=function(_0x1dab35,_0x1c407d){_0x1dab35=_0x1dab35-0x0;var _0x2e5098=_0x34e8[_0x1dab35];return _0x2e5098;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e5b6d,_0x6cd9b9){_0x6cd9b9=_0x6cd9b9||0xcc;return function(_0x58a27e){if(_0x58a27e){return _0x5e5b6d[_0x834e('0x1c')](_0x6cd9b9);}return _0x5e5b6d[_0x834e('0x1d')](_0x6cd9b9)[_0x834e('0x1e')]();};}function respondWithResult(_0x21cc0a,_0x50e860){_0x50e860=_0x50e860||0xc8;return function(_0x43156c){if(_0x43156c){return _0x21cc0a[_0x834e('0x1d')](_0x50e860)['json'](_0x43156c);}};}function respondWithFilteredResult(_0x316205,_0x4a9cdc){return function(_0x38a8cd){if(_0x38a8cd){var _0x36d443=typeof _0x4a9cdc['offset']===_0x834e('0x1f')&&typeof _0x4a9cdc[_0x834e('0x20')]===_0x834e('0x1f');var _0x50b3f6=_0x38a8cd[_0x834e('0x21')];var _0x211e9a=_0x36d443?0x0:_0x4a9cdc[_0x834e('0x22')];var _0xb993a1=_0x36d443?_0x38a8cd[_0x834e('0x21')]:_0x4a9cdc[_0x834e('0x22')]+_0x4a9cdc[_0x834e('0x20')];var _0x595515;if(_0xb993a1>=_0x50b3f6){_0xb993a1=_0x50b3f6;_0x595515=0xc8;}else{_0x595515=0xce;}_0x316205[_0x834e('0x1d')](_0x595515);return _0x316205[_0x834e('0x23')](_0x834e('0x24'),_0x211e9a+'-'+_0xb993a1+'/'+_0x50b3f6)[_0x834e('0x25')](_0x38a8cd);}return null;};}function patchUpdates(_0x4ab05d){return function(_0x45a630){try{jsonpatch[_0x834e('0x26')](_0x45a630,_0x4ab05d,!![]);}catch(_0x5a05c0){return BPromise[_0x834e('0x27')](_0x5a05c0);}return _0x45a630[_0x834e('0x28')]();};}function saveUpdates(_0x8d406e,_0x5c55ca){return function(_0x4e3f48){if(_0x4e3f48){return _0x4e3f48[_0x834e('0x29')](_0x8d406e)[_0x834e('0x2a')](function(_0x589dde){return _0x589dde;});}return null;};}function removeEntity(_0x25ee1d,_0x1dc1e0){return function(_0x58f4fd){if(_0x58f4fd){return _0x58f4fd[_0x834e('0x2b')]()[_0x834e('0x2a')](function(){_0x25ee1d[_0x834e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fcf7,_0x3e310f){return function(_0x5e1cc5){if(!_0x5e1cc5){_0x24fcf7['sendStatus'](0x194);}return _0x5e1cc5;};}function handleError(_0x1e713a,_0x508a1d){_0x508a1d=_0x508a1d||0x1f4;return function(_0x2826ec){logger[_0x834e('0x2c')](_0x2826ec[_0x834e('0x2d')]);if(_0x2826ec[_0x834e('0x2e')]){delete _0x2826ec[_0x834e('0x2e')];}_0x1e713a[_0x834e('0x1d')](_0x508a1d)['send'](_0x2826ec);};}exports['index']=function(_0x4dc64a,_0x58c1d7){var _0x2c7a8d={},_0x567cea={},_0x106d6a={'count':0x0,'rows':[]};var _0x5dacc1=_[_0x834e('0x2f')](db[_0x834e('0x30')][_0x834e('0x31')],function(_0x1e026a){return{'name':_0x1e026a[_0x834e('0x32')],'type':_0x1e026a[_0x834e('0x33')][_0x834e('0x34')]};});_0x567cea[_0x834e('0x35')]=_[_0x834e('0x2f')](_0x5dacc1,'name');_0x567cea[_0x834e('0x36')]=_['keys'](_0x4dc64a[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],_0x567cea[_0x834e('0x36')]);_0x2c7a8d[_0x834e('0x39')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x4dc64a[_0x834e('0x36')]['fields']));_0x2c7a8d[_0x834e('0x39')]=_0x2c7a8d[_0x834e('0x39')][_0x834e('0x3b')]?_0x2c7a8d[_0x834e('0x39')]:_0x567cea['model'];if(!_0x4dc64a[_0x834e('0x36')][_0x834e('0x3c')]('nolimit')){_0x2c7a8d['limit']=qs['limit'](_0x4dc64a[_0x834e('0x36')][_0x834e('0x20')]);_0x2c7a8d[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4dc64a[_0x834e('0x36')][_0x834e('0x22')]);}_0x2c7a8d['order']=qs[_0x834e('0x3d')](_0x4dc64a['query'][_0x834e('0x3d')]);_0x2c7a8d[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x4dc64a[_0x834e('0x36')],_0x567cea['filters']),_0x5dacc1);if(_0x4dc64a['query'][_0x834e('0x40')]){_0x2c7a8d[_0x834e('0x3e')]=_[_0x834e('0x41')](_0x2c7a8d[_0x834e('0x3e')],{'$or':_[_0x834e('0x2f')](_0x5dacc1,function(_0x4ca43c){if(_0x4ca43c[_0x834e('0x33')]!=='VIRTUAL'){var _0x50c243={};_0x50c243[_0x4ca43c[_0x834e('0x2e')]]={'$like':'%'+_0x4dc64a['query'][_0x834e('0x40')]+'%'};return _0x50c243;}})});}_0x2c7a8d=_[_0x834e('0x41')]({},_0x2c7a8d,_0x4dc64a[_0x834e('0x42')]);var _0x3c59af={'where':_0x2c7a8d[_0x834e('0x3e')]};return db['MemberReport'][_0x834e('0x21')](_0x3c59af)[_0x834e('0x2a')](function(_0x38f266){_0x106d6a['count']=_0x38f266;if(_0x4dc64a[_0x834e('0x36')][_0x834e('0x43')]){_0x2c7a8d['include']=[{'all':!![]}];}return db[_0x834e('0x30')]['findAll'](_0x2c7a8d);})[_0x834e('0x2a')](function(_0x585335){_0x106d6a['rows']=_0x585335;return _0x106d6a;})['then'](respondWithFilteredResult(_0x58c1d7,_0x2c7a8d))[_0x834e('0x44')](handleError(_0x58c1d7,null));};exports[_0x834e('0x45')]=function(_0x3bcbf4,_0xbc1571){var _0x8ad264={'raw':!![],'where':{'id':_0x3bcbf4[_0x834e('0x46')]['id']}},_0x23feea={};_0x23feea['model']=_[_0x834e('0x47')](db['MemberReport'][_0x834e('0x31')]);_0x23feea['query']=_[_0x834e('0x47')](_0x3bcbf4['query']);_0x23feea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x23feea['model'],_0x23feea[_0x834e('0x36')]);_0x8ad264[_0x834e('0x39')]=_[_0x834e('0x38')](_0x23feea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x3bcbf4[_0x834e('0x36')][_0x834e('0x3a')]));_0x8ad264[_0x834e('0x39')]=_0x8ad264[_0x834e('0x39')][_0x834e('0x3b')]?_0x8ad264['attributes']:_0x23feea[_0x834e('0x35')];if(_0x3bcbf4[_0x834e('0x36')]['includeAll']){_0x8ad264[_0x834e('0x48')]=[{'all':!![]}];}_0x8ad264=_[_0x834e('0x41')]({},_0x8ad264,_0x3bcbf4[_0x834e('0x42')]);return db[_0x834e('0x30')][_0x834e('0x49')](_0x8ad264)[_0x834e('0x2a')](handleEntityNotFound(_0xbc1571,null))['then'](respondWithResult(_0xbc1571,null))['catch'](handleError(_0xbc1571,null));};exports[_0x834e('0x4a')]=function(_0x1a5444,_0x30568e){return db[_0x834e('0x30')][_0x834e('0x4a')](_0x1a5444[_0x834e('0x4b')],{})[_0x834e('0x2a')](respondWithResult(_0x30568e,0xc9))[_0x834e('0x44')](handleError(_0x30568e,null));};exports[_0x834e('0x29')]=function(_0x390c45,_0xf02f0d){if(_0x390c45[_0x834e('0x4b')]['id']){delete _0x390c45[_0x834e('0x4b')]['id'];}return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x390c45[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0xf02f0d,null))[_0x834e('0x2a')](saveUpdates(_0x390c45[_0x834e('0x4b')],null))[_0x834e('0x2a')](respondWithResult(_0xf02f0d,null))['catch'](handleError(_0xf02f0d,null));};exports[_0x834e('0x2b')]=function(_0x1f08b9,_0x4e73e0){return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x1f08b9['params']['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x4e73e0,null))[_0x834e('0x2a')](removeEntity(_0x4e73e0,null))[_0x834e('0x44')](handleError(_0x4e73e0,null));};exports[_0x834e('0x4c')]=function(_0x4288e4,_0xb77aab){return db[_0x834e('0x30')]['describe']()[_0x834e('0x2a')](respondWithResult(_0xb77aab,null))[_0x834e('0x44')](handleError(_0xb77aab,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(_0x33298f,_0x6c28fe){var _0x1224be=function(_0xbb872){while(--_0xbb872){_0x33298f['push'](_0x33298f['shift']());}};_0x1224be(++_0x6c28fe);}(_0x008c,0x188));var _0xc008=function(_0x593f03,_0x4af84a){_0x593f03=_0x593f03-0x0;var _0x178299=_0x008c[_0x593f03];return _0x178299;};'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 b1e7e2c..378987a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9567=['../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','util'];(function(_0x1119db,_0x54f40b){var _0x3d5806=function(_0x27eafb){while(--_0x27eafb){_0x1119db['push'](_0x1119db['shift']());}};_0x3d5806(++_0x54f40b);}(_0x9567,0x67));var _0x7956=function(_0x4ac090,_0x421ff1){_0x4ac090=_0x4ac090-0x0;var _0x592f58=_0x9567[_0x4ac090];return _0x592f58;};'use strict';var _=require('lodash');var util=require(_0x7956('0x0'));var logger=require(_0x7956('0x1'))('api');var moment=require('moment');var BPromise=require(_0x7956('0x2'));var rp=require(_0x7956('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7956('0x4'));var config=require(_0x7956('0x5'));var attributes=require(_0x7956('0x6'));module[_0x7956('0x7')]=function(_0x2f4c9d,_0x4d3e98){return _0x2f4c9d[_0x7956('0x8')](_0x7956('0x9'),attributes,{'tableName':_0x7956('0xa'),'paranoid':![],'indexes':[{'name':_0x7956('0xb'),'fields':[_0x7956('0xc'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x598f=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','MemberReport','report_member','membername_interface','interface','lodash','util'];(function(_0x2554c3,_0x4eaf22){var _0x2bdae6=function(_0x11e84c){while(--_0x11e84c){_0x2554c3['push'](_0x2554c3['shift']());}};_0x2bdae6(++_0x4eaf22);}(_0x598f,0x1cf));var _0xf598=function(_0x32bc65,_0x10982c){_0x32bc65=_0x32bc65-0x0;var _0x55cffd=_0x598f[_0x32bc65];return _0x55cffd;};'use strict';var _=require(_0xf598('0x0'));var util=require(_0xf598('0x1'));var logger=require(_0xf598('0x2'))(_0xf598('0x3'));var moment=require(_0xf598('0x4'));var BPromise=require(_0xf598('0x5'));var rp=require(_0xf598('0x6'));var fs=require('fs');var path=require(_0xf598('0x7'));var rimraf=require(_0xf598('0x8'));var config=require(_0xf598('0x9'));var attributes=require('./memberReport.attributes');module['exports']=function(_0x41b1f8,_0x32be03){return _0x41b1f8[_0xf598('0xa')](_0xf598('0xb'),attributes,{'tableName':_0xf598('0xc'),'paranoid':![],'indexes':[{'name':_0xf598('0xd'),'fields':['membername',_0xf598('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index e16f8cc..1c4a31b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d9=['body','update','where','UpdateMemberReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMemberReport','findAll','options','raw','attributes','limit','include','model','map','CreateMemberReport','MemberReport','create'];(function(_0x36b037,_0x2b234e){var _0x409194=function(_0xddc9dc){while(--_0xddc9dc){_0x36b037['push'](_0x36b037['shift']());}};_0x409194(++_0x2b234e);}(_0x41d9,0x13c));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x941d('0x0'));var util=require(_0x941d('0x1'));var moment=require(_0x941d('0x2'));var BPromise=require(_0x941d('0x3'));var rs=require(_0x941d('0x4'));var fs=require('fs');var Redis=require(_0x941d('0x5'));var db=require(_0x941d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x941d('0x7'))(_0x941d('0x8'));var config=require('../../config/environment');var jayson=require(_0x941d('0x9'));var client=jayson[_0x941d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x179094,_0x5b100e,_0x3825df){return new BPromise(function(_0xa9021c,_0x33b259){return client[_0x941d('0xb')](_0x179094,_0x3825df)[_0x941d('0xc')](function(_0x546a1a){logger[_0x941d('0xd')](_0x941d('0xe'),_0x5b100e,_0x941d('0xf'));logger[_0x941d('0x10')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x5b100e,_0x941d('0xf'),JSON[_0x941d('0x11')](_0x546a1a));if(_0x546a1a[_0x941d('0x12')]){if(_0x546a1a[_0x941d('0x12')][_0x941d('0x13')]===0x1f4){logger[_0x941d('0x12')]('MemberReport,\x20%s,\x20%s',_0x5b100e,_0x546a1a[_0x941d('0x12')]['message']);return _0x33b259(_0x546a1a['error'][_0x941d('0x14')]);}logger[_0x941d('0x12')](_0x941d('0xe'),_0x5b100e,_0x546a1a[_0x941d('0x12')][_0x941d('0x14')]);return _0xa9021c(_0x546a1a[_0x941d('0x12')][_0x941d('0x14')]);}else{logger[_0x941d('0xd')](_0x941d('0xe'),_0x5b100e,_0x941d('0xf'));_0xa9021c(_0x546a1a[_0x941d('0x15')]['message']);}})[_0x941d('0x16')](function(_0x244d96){logger[_0x941d('0x12')](_0x941d('0xe'),_0x5b100e,_0x244d96);_0x33b259(_0x244d96);});});}exports[_0x941d('0x17')]=function(_0x3ac25f){var _0x3c1e1a=this;return new Promise(function(_0x2c6ce5,_0x4417fb){return db['MemberReport'][_0x941d('0x18')]({'raw':_0x3ac25f['options']?_0x3ac25f[_0x941d('0x19')][_0x941d('0x1a')]===undefined?!![]:![]:!![],'where':_0x3ac25f['options']?_0x3ac25f[_0x941d('0x19')]['where']||null:null,'attributes':_0x3ac25f['options']?_0x3ac25f[_0x941d('0x19')][_0x941d('0x1b')]||null:null,'limit':_0x3ac25f[_0x941d('0x19')]?_0x3ac25f['options'][_0x941d('0x1c')]||null:null,'include':_0x3ac25f[_0x941d('0x19')]?_0x3ac25f[_0x941d('0x19')]['include']?_['map'](_0x3ac25f[_0x941d('0x19')][_0x941d('0x1d')],function(_0x26b7b6){return{'model':db[_0x26b7b6[_0x941d('0x1e')]],'as':_0x26b7b6['as'],'attributes':_0x26b7b6[_0x941d('0x1b')],'include':_0x26b7b6[_0x941d('0x1d')]?_['map'](_0x26b7b6[_0x941d('0x1d')],function(_0x43a443){return{'model':db[_0x43a443[_0x941d('0x1e')]],'as':_0x43a443['as'],'attributes':_0x43a443['attributes'],'include':_0x43a443[_0x941d('0x1d')]?_[_0x941d('0x1f')](_0x43a443[_0x941d('0x1d')],function(_0x3a72d7){return{'model':db[_0x3a72d7[_0x941d('0x1e')]],'as':_0x3a72d7['as'],'attributes':_0x3a72d7[_0x941d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x941d('0xc')](function(_0x2f20b3){logger[_0x941d('0xd')](_0x941d('0x17'),_0x3ac25f);logger[_0x941d('0x10')](_0x941d('0x17'),_0x3ac25f,JSON['stringify'](_0x2f20b3));_0x2c6ce5(_0x2f20b3);})[_0x941d('0x16')](function(_0x42050d){logger['error'](_0x941d('0x17'),_0x42050d[_0x941d('0x14')],_0x3ac25f);_0x4417fb(_0x3c1e1a[_0x941d('0x12')](0x1f4,_0x42050d[_0x941d('0x14')]));});});};exports[_0x941d('0x20')]=function(_0x17e60d){var _0x406f8b=this;return new Promise(function(_0x596d0b,_0x59297e){return db[_0x941d('0x21')][_0x941d('0x22')](_0x17e60d[_0x941d('0x23')],{'raw':_0x17e60d['options']?_0x17e60d['options'][_0x941d('0x1a')]===undefined?!![]:![]:!![]})[_0x941d('0xc')](function(_0x150e14){logger['info'](_0x941d('0x20'),_0x17e60d);logger[_0x941d('0x10')](_0x941d('0x20'),_0x17e60d,JSON[_0x941d('0x11')](_0x150e14));_0x596d0b(_0x150e14);})['catch'](function(_0x4362f2){logger[_0x941d('0x12')](_0x941d('0x20'),_0x4362f2[_0x941d('0x14')],_0x17e60d);_0x59297e(_0x406f8b[_0x941d('0x12')](0x1f4,_0x4362f2[_0x941d('0x14')]));});});};exports['UpdateMemberReport']=function(_0x5e21e0){var _0x530a4b=this;return new Promise(function(_0x109a8d,_0x558846){return db[_0x941d('0x21')][_0x941d('0x24')](_0x5e21e0[_0x941d('0x23')],{'raw':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0[_0x941d('0x19')][_0x941d('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0[_0x941d('0x19')][_0x941d('0x25')]||null:null,'attributes':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0['options'][_0x941d('0x1b')]||null:null,'limit':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0[_0x941d('0x19')][_0x941d('0x1c')]||null:null})[_0x941d('0xc')](function(_0x1b03ac){logger[_0x941d('0xd')](_0x941d('0x26'),_0x5e21e0);logger[_0x941d('0x10')](_0x941d('0x26'),_0x5e21e0,JSON[_0x941d('0x11')](_0x1b03ac));_0x109a8d(_0x1b03ac);})[_0x941d('0x16')](function(_0x1401d4){logger['error']('UpdateMemberReport',_0x1401d4[_0x941d('0x14')],_0x5e21e0);_0x558846(_0x530a4b[_0x941d('0x12')](0x1f4,_0x1401d4['message']));});});};
\ No newline at end of file
+var _0x99fb=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','message','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','catch','CreateMemberReport','create','UpdateMemberReport','update','body','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x99fb,0x92));var _0xb99f=function(_0x1e2901,_0x5e3380){_0x1e2901=_0x1e2901-0x0;var _0x52640e=_0x99fb[_0x1e2901];return _0x52640e;};'use strict';var _=require(_0xb99f('0x0'));var util=require('util');var moment=require(_0xb99f('0x1'));var BPromise=require(_0xb99f('0x2'));var rs=require(_0xb99f('0x3'));var fs=require('fs');var Redis=require(_0xb99f('0x4'));var db=require(_0xb99f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb99f('0x6'))(_0xb99f('0x7'));var config=require('../../config/environment');var jayson=require(_0xb99f('0x8'));var client=jayson[_0xb99f('0x9')][_0xb99f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f264e,_0x182c0c,_0x479d65){return new BPromise(function(_0xe317ff,_0x57b816){return client[_0xb99f('0xb')](_0x5f264e,_0x479d65)[_0xb99f('0xc')](function(_0x5e944b){logger[_0xb99f('0xd')](_0xb99f('0xe'),_0x182c0c,_0xb99f('0xf'));logger[_0xb99f('0x10')](_0xb99f('0x11'),_0x182c0c,_0xb99f('0xf'),JSON[_0xb99f('0x12')](_0x5e944b));if(_0x5e944b['error']){if(_0x5e944b[_0xb99f('0x13')]['code']===0x1f4){logger['error'](_0xb99f('0xe'),_0x182c0c,_0x5e944b[_0xb99f('0x13')][_0xb99f('0x14')]);return _0x57b816(_0x5e944b[_0xb99f('0x13')][_0xb99f('0x14')]);}logger['error'](_0xb99f('0xe'),_0x182c0c,_0x5e944b['error'][_0xb99f('0x14')]);return _0xe317ff(_0x5e944b[_0xb99f('0x13')]['message']);}else{logger[_0xb99f('0xd')]('MemberReport,\x20%s,\x20%s',_0x182c0c,_0xb99f('0xf'));_0xe317ff(_0x5e944b['result'][_0xb99f('0x14')]);}})['catch'](function(_0x37a14c){logger['error'](_0xb99f('0xe'),_0x182c0c,_0x37a14c);_0x57b816(_0x37a14c);});});}exports[_0xb99f('0x15')]=function(_0x472957){var _0x1b3b25=this;return new Promise(function(_0xb38912,_0x33dcf0){return db[_0xb99f('0x16')][_0xb99f('0x17')]({'raw':_0x472957[_0xb99f('0x18')]?_0x472957[_0xb99f('0x18')][_0xb99f('0x19')]===undefined?!![]:![]:!![],'where':_0x472957[_0xb99f('0x18')]?_0x472957[_0xb99f('0x18')][_0xb99f('0x1a')]||null:null,'attributes':_0x472957['options']?_0x472957['options'][_0xb99f('0x1b')]||null:null,'limit':_0x472957[_0xb99f('0x18')]?_0x472957[_0xb99f('0x18')][_0xb99f('0x1c')]||null:null,'include':_0x472957[_0xb99f('0x18')]?_0x472957[_0xb99f('0x18')][_0xb99f('0x1d')]?_[_0xb99f('0x1e')](_0x472957[_0xb99f('0x18')][_0xb99f('0x1d')],function(_0x1a90ad){return{'model':db[_0x1a90ad['model']],'as':_0x1a90ad['as'],'attributes':_0x1a90ad[_0xb99f('0x1b')],'include':_0x1a90ad[_0xb99f('0x1d')]?_[_0xb99f('0x1e')](_0x1a90ad[_0xb99f('0x1d')],function(_0x480f00){return{'model':db[_0x480f00['model']],'as':_0x480f00['as'],'attributes':_0x480f00[_0xb99f('0x1b')],'include':_0x480f00[_0xb99f('0x1d')]?_['map'](_0x480f00[_0xb99f('0x1d')],function(_0x3f77cb){return{'model':db[_0x3f77cb[_0xb99f('0x1f')]],'as':_0x3f77cb['as'],'attributes':_0x3f77cb[_0xb99f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb99f('0xc')](function(_0x3dde95){logger[_0xb99f('0xd')](_0xb99f('0x15'),_0x472957);logger['debug'](_0xb99f('0x15'),_0x472957,JSON['stringify'](_0x3dde95));_0xb38912(_0x3dde95);})[_0xb99f('0x20')](function(_0x154acb){logger[_0xb99f('0x13')](_0xb99f('0x15'),_0x154acb[_0xb99f('0x14')],_0x472957);_0x33dcf0(_0x1b3b25[_0xb99f('0x13')](0x1f4,_0x154acb[_0xb99f('0x14')]));});});};exports[_0xb99f('0x21')]=function(_0x48e8bb){var _0x4d447b=this;return new Promise(function(_0x1a5b8a,_0x3db95d){return db[_0xb99f('0x16')][_0xb99f('0x22')](_0x48e8bb['body'],{'raw':_0x48e8bb[_0xb99f('0x18')]?_0x48e8bb[_0xb99f('0x18')][_0xb99f('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1f970d){logger[_0xb99f('0xd')](_0xb99f('0x21'),_0x48e8bb);logger[_0xb99f('0x10')](_0xb99f('0x21'),_0x48e8bb,JSON[_0xb99f('0x12')](_0x1f970d));_0x1a5b8a(_0x1f970d);})['catch'](function(_0x40285a){logger[_0xb99f('0x13')](_0xb99f('0x21'),_0x40285a[_0xb99f('0x14')],_0x48e8bb);_0x3db95d(_0x4d447b[_0xb99f('0x13')](0x1f4,_0x40285a['message']));});});};exports[_0xb99f('0x23')]=function(_0x5ca55d){var _0x125e46=this;return new Promise(function(_0x1271fc,_0x4cc467){return db[_0xb99f('0x16')][_0xb99f('0x24')](_0x5ca55d[_0xb99f('0x25')],{'raw':_0x5ca55d[_0xb99f('0x18')]?_0x5ca55d[_0xb99f('0x18')][_0xb99f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ca55d[_0xb99f('0x18')]?_0x5ca55d['options']['where']||null:null,'attributes':_0x5ca55d['options']?_0x5ca55d['options'][_0xb99f('0x1b')]||null:null,'limit':_0x5ca55d[_0xb99f('0x18')]?_0x5ca55d[_0xb99f('0x18')]['limit']||null:null})[_0xb99f('0xc')](function(_0x4bcb20){logger[_0xb99f('0xd')](_0xb99f('0x23'),_0x5ca55d);logger[_0xb99f('0x10')]('UpdateMemberReport',_0x5ca55d,JSON[_0xb99f('0x12')](_0x4bcb20));_0x1271fc(_0x4bcb20);})[_0xb99f('0x20')](function(_0x7bf04a){logger[_0xb99f('0x13')](_0xb99f('0x23'),_0x7bf04a[_0xb99f('0x14')],_0x5ca55d);_0x4cc467(_0x125e46[_0xb99f('0x13')](0x1f4,_0x7bf04a[_0xb99f('0x14')]));});});};
\ No newline at end of file
index 404e26d..2a16bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x521f=['./migration.controller','get','index','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x9859ce,_0xbff7eb){var _0x5afdf0=function(_0xbe361f){while(--_0xbe361f){_0x9859ce['push'](_0x9859ce['shift']());}};_0x5afdf0(++_0xbff7eb);}(_0x521f,0xe8));var _0xf521=function(_0xd73884,_0x2ca96d){_0xd73884=_0xd73884-0x0;var _0x16b79c=_0x521f[_0xd73884];return _0x16b79c;};'use strict';var multer=require(_0xf521('0x0'));var util=require(_0xf521('0x1'));var path=require('path');var timeout=require(_0xf521('0x2'));var express=require(_0xf521('0x3'));var router=express[_0xf521('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf521('0x5'));var interaction=require(_0xf521('0x6'));var config=require(_0xf521('0x7'));var controller=require(_0xf521('0x8'));router[_0xf521('0x9')]('/',controller[_0xf521('0xa')]);module[_0xf521('0xb')]=router;
\ No newline at end of file
+var _0x7985=['./migration.controller','index','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x492bfc,_0x57e49a){var _0x44af9b=function(_0xc27587){while(--_0xc27587){_0x492bfc['push'](_0x492bfc['shift']());}};_0x44af9b(++_0x57e49a);}(_0x7985,0x15f));var _0x5798=function(_0x51f5f7,_0x4e1492){_0x51f5f7=_0x51f5f7-0x0;var _0x6afaa=_0x7985[_0x51f5f7];return _0x6afaa;};'use strict';var multer=require(_0x5798('0x0'));var util=require(_0x5798('0x1'));var path=require(_0x5798('0x2'));var timeout=require(_0x5798('0x3'));var express=require(_0x5798('0x4'));var router=express[_0x5798('0x5')]();var fs_extra=require(_0x5798('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5798('0x7'));var config=require(_0x5798('0x8'));var controller=require(_0x5798('0x9'));router['get']('/',controller[_0x5798('0xa')]);module[_0x5798('0xb')]=router;
\ No newline at end of file
index 4c1f157..1baf9d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8680=['exports','STRING'];(function(_0x265f54,_0x335e64){var _0x4d6f78=function(_0x4373a2){while(--_0x4373a2){_0x265f54['push'](_0x265f54['shift']());}};_0x4d6f78(++_0x335e64);}(_0x8680,0xe6));var _0x0868=function(_0x11b253,_0x43117d){_0x11b253=_0x11b253-0x0;var _0x16c3f7=_0x8680[_0x11b253];return _0x16c3f7;};'use strict';var Sequelize=require('sequelize');module[_0x0868('0x0')]={'version':{'type':Sequelize[_0x0868('0x1')],'unique':'version'}};
\ No newline at end of file
+var _0xbfa0=['STRING','version','sequelize','exports'];(function(_0x32bd9a,_0x565294){var _0x171076=function(_0x28986e){while(--_0x28986e){_0x32bd9a['push'](_0x32bd9a['shift']());}};_0x171076(++_0x565294);}(_0xbfa0,0x10e));var _0x0bfa=function(_0xe151a8,_0x348dd8){_0xe151a8=_0xe151a8-0x0;var _0x40257c=_0xbfa0[_0xe151a8];return _0x40257c;};'use strict';var Sequelize=require(_0x0bfa('0x0'));module[_0x0bfa('0x1')]={'version':{'type':Sequelize[_0x0bfa('0x2')],'unique':_0x0bfa('0x3')}};
\ No newline at end of file
index beb3a3a..25faf56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf7=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','sendStatus','stack','name','send','index','map','Migration','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','catch','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x1a2011,_0x2957be){var _0x2568fa=function(_0xee34da){while(--_0xee34da){_0x1a2011['push'](_0x1a2011['shift']());}};_0x2568fa(++_0x2957be);}(_0xbaf7,0x142));var _0x7baf=function(_0x2b1259,_0x433c7a){_0x2b1259=_0x2b1259-0x0;var _0x1fb510=_0xbaf7[_0x2b1259];return _0x1fb510;};'use strict';var emlformat=require(_0x7baf('0x0'));var rimraf=require(_0x7baf('0x1'));var zipdir=require(_0x7baf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7baf('0x3'));var moment=require('moment');var BPromise=require(_0x7baf('0x4'));var Mustache=require(_0x7baf('0x5'));var util=require(_0x7baf('0x6'));var path=require(_0x7baf('0x7'));var sox=require(_0x7baf('0x8'));var csv=require(_0x7baf('0x9'));var ejs=require(_0x7baf('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7baf('0xb'));var squel=require(_0x7baf('0xc'));var crypto=require(_0x7baf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7baf('0xe'));var toCsv=require(_0x7baf('0x9'));var querystring=require(_0x7baf('0xf'));var Papa=require(_0x7baf('0x10'));var Redis=require(_0x7baf('0x11'));var authService=require(_0x7baf('0x12'));var qs=require(_0x7baf('0x13'));var as=require(_0x7baf('0x14'));var hardwareService=require(_0x7baf('0x15'));var logger=require(_0x7baf('0x16'))(_0x7baf('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1434c5,_0x50896e){_0x50896e=_0x50896e||0xcc;return function(_0x3701ca){if(_0x3701ca){return _0x1434c5['sendStatus'](_0x50896e);}return _0x1434c5[_0x7baf('0x18')](_0x50896e)[_0x7baf('0x19')]();};}function respondWithResult(_0x2705a9,_0x475e48){_0x475e48=_0x475e48||0xc8;return function(_0x1a1800){if(_0x1a1800){return _0x2705a9['status'](_0x475e48)['json'](_0x1a1800);}};}function respondWithFilteredResult(_0xc48014,_0x18d0de){return function(_0x21cd60){if(_0x21cd60){var _0x544091=typeof _0x18d0de[_0x7baf('0x1a')]===_0x7baf('0x1b')&&typeof _0x18d0de[_0x7baf('0x1c')]===_0x7baf('0x1b');var _0x1827f0=_0x21cd60[_0x7baf('0x1d')];var _0x5bd369=_0x544091?0x0:_0x18d0de[_0x7baf('0x1a')];var _0x170de8=_0x544091?_0x21cd60[_0x7baf('0x1d')]:_0x18d0de[_0x7baf('0x1a')]+_0x18d0de[_0x7baf('0x1c')];var _0x55bf1e;if(_0x170de8>=_0x1827f0){_0x170de8=_0x1827f0;_0x55bf1e=0xc8;}else{_0x55bf1e=0xce;}_0xc48014[_0x7baf('0x18')](_0x55bf1e);return _0xc48014[_0x7baf('0x1e')](_0x7baf('0x1f'),_0x5bd369+'-'+_0x170de8+'/'+_0x1827f0)[_0x7baf('0x20')](_0x21cd60);}return null;};}function patchUpdates(_0x20e31f){return function(_0x5b7011){try{jsonpatch['apply'](_0x5b7011,_0x20e31f,!![]);}catch(_0x193e5a){return BPromise['reject'](_0x193e5a);}return _0x5b7011['save']();};}function saveUpdates(_0x358644,_0x4de87d){return function(_0x27c0cc){if(_0x27c0cc){return _0x27c0cc[_0x7baf('0x21')](_0x358644)[_0x7baf('0x22')](function(_0x22124b){return _0x22124b;});}return null;};}function removeEntity(_0x4eac16,_0x24fe1f){return function(_0x5aa860){if(_0x5aa860){return _0x5aa860[_0x7baf('0x23')]()['then'](function(){_0x4eac16[_0x7baf('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46f4a4,_0xc7f416){return function(_0x675097){if(!_0x675097){_0x46f4a4[_0x7baf('0x24')](0x194);}return _0x675097;};}function handleError(_0x4cca46,_0x56fcad){_0x56fcad=_0x56fcad||0x1f4;return function(_0x5716f6){logger['error'](_0x5716f6[_0x7baf('0x25')]);if(_0x5716f6[_0x7baf('0x26')]){delete _0x5716f6[_0x7baf('0x26')];}_0x4cca46[_0x7baf('0x18')](_0x56fcad)[_0x7baf('0x27')](_0x5716f6);};}exports[_0x7baf('0x28')]=function(_0x55d4c1,_0xf291b1){var _0x1e4475={},_0x46cabf={},_0x5bef93={'count':0x0,'rows':[]};var _0x1f6600=_[_0x7baf('0x29')](db[_0x7baf('0x2a')][_0x7baf('0x2b')],function(_0x30caad){return{'name':_0x30caad['fieldName'],'type':_0x30caad[_0x7baf('0x2c')][_0x7baf('0x2d')]};});_0x46cabf['model']=_['map'](_0x1f6600,_0x7baf('0x26'));_0x46cabf[_0x7baf('0x2e')]=_[_0x7baf('0x2f')](_0x55d4c1[_0x7baf('0x2e')]);_0x46cabf[_0x7baf('0x30')]=_[_0x7baf('0x31')](_0x46cabf[_0x7baf('0x32')],_0x46cabf[_0x7baf('0x2e')]);_0x1e4475['attributes']=_[_0x7baf('0x31')](_0x46cabf['model'],qs[_0x7baf('0x33')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x33')]));_0x1e4475['attributes']=_0x1e4475[_0x7baf('0x34')][_0x7baf('0x35')]?_0x1e4475[_0x7baf('0x34')]:_0x46cabf['model'];if(!_0x55d4c1['query'][_0x7baf('0x36')](_0x7baf('0x37'))){_0x1e4475[_0x7baf('0x1c')]=qs[_0x7baf('0x1c')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x1c')]);_0x1e4475[_0x7baf('0x1a')]=qs[_0x7baf('0x1a')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x1a')]);}_0x1e4475[_0x7baf('0x38')]=qs[_0x7baf('0x39')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x39')]);_0x1e4475['where']=qs[_0x7baf('0x30')](_[_0x7baf('0x3a')](_0x55d4c1[_0x7baf('0x2e')],_0x46cabf[_0x7baf('0x30')]),_0x1f6600);if(_0x55d4c1['query'][_0x7baf('0x3b')]){_0x1e4475['where']=_[_0x7baf('0x3c')](_0x1e4475[_0x7baf('0x3d')],{'$or':_['map'](_0x1f6600,function(_0xf0b83a){if(_0xf0b83a[_0x7baf('0x2c')]!==_0x7baf('0x3e')){var _0x244508={};_0x244508[_0xf0b83a[_0x7baf('0x26')]]={'$like':'%'+_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x3b')]+'%'};return _0x244508;}})});}_0x1e4475=_[_0x7baf('0x3c')]({},_0x1e4475,_0x55d4c1[_0x7baf('0x3f')]);var _0x47e4fa={'where':_0x1e4475[_0x7baf('0x3d')]};return db[_0x7baf('0x2a')][_0x7baf('0x1d')](_0x47e4fa)[_0x7baf('0x22')](function(_0x620278){_0x5bef93[_0x7baf('0x1d')]=_0x620278;if(_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x40')]){_0x1e4475[_0x7baf('0x41')]=[{'all':!![]}];}return db[_0x7baf('0x2a')][_0x7baf('0x42')](_0x1e4475);})['then'](function(_0x1c191f){_0x5bef93['rows']=_0x1c191f;return _0x5bef93;})['then'](respondWithFilteredResult(_0xf291b1,_0x1e4475))[_0x7baf('0x43')](handleError(_0xf291b1,null));};
\ No newline at end of file
+var _0x34cc=['keys','query','filters','model','attributes','fields','nolimit','limit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','squel','crypto','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','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Migration','rawAttributes','fieldName'];(function(_0x534902,_0x49ee75){var _0x5f16bb=function(_0x32822e){while(--_0x32822e){_0x534902['push'](_0x534902['shift']());}};_0x5f16bb(++_0x49ee75);}(_0x34cc,0x1e1));var _0xc34c=function(_0x1b9a57,_0x438c5b){_0x1b9a57=_0x1b9a57-0x0;var _0x13c644=_0x34cc[_0x1b9a57];return _0x13c644;};'use strict';var emlformat=require(_0xc34c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc34c('0x1'));var jsonpatch=require(_0xc34c('0x2'));var rp=require(_0xc34c('0x3'));var moment=require(_0xc34c('0x4'));var BPromise=require(_0xc34c('0x5'));var Mustache=require('mustache');var util=require(_0xc34c('0x6'));var path=require(_0xc34c('0x7'));var sox=require(_0xc34c('0x8'));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(_0xc34c('0x9'));var crypto=require(_0xc34c('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc34c('0xb'));var querystring=require(_0xc34c('0xc'));var Papa=require('papaparse');var Redis=require(_0xc34c('0xd'));var authService=require(_0xc34c('0xe'));var qs=require(_0xc34c('0xf'));var as=require(_0xc34c('0x10'));var hardwareService=require(_0xc34c('0x11'));var logger=require(_0xc34c('0x12'))(_0xc34c('0x13'));var utils=require('../../config/utils');var config=require(_0xc34c('0x14'));var licenseUtil=require(_0xc34c('0x15'));var db=require(_0xc34c('0x16'))['db'];function respondWithStatusCode(_0x209e25,_0x2a4ae4){_0x2a4ae4=_0x2a4ae4||0xcc;return function(_0x5a6397){if(_0x5a6397){return _0x209e25[_0xc34c('0x17')](_0x2a4ae4);}return _0x209e25[_0xc34c('0x18')](_0x2a4ae4)[_0xc34c('0x19')]();};}function respondWithResult(_0x41273e,_0x2e3593){_0x2e3593=_0x2e3593||0xc8;return function(_0x19eaa3){if(_0x19eaa3){return _0x41273e[_0xc34c('0x18')](_0x2e3593)[_0xc34c('0x1a')](_0x19eaa3);}};}function respondWithFilteredResult(_0x27c666,_0x222d86){return function(_0xbdaf17){if(_0xbdaf17){var _0x1d52cb=typeof _0x222d86[_0xc34c('0x1b')]===_0xc34c('0x1c')&&typeof _0x222d86['limit']===_0xc34c('0x1c');var _0x5bd51d=_0xbdaf17[_0xc34c('0x1d')];var _0x6493a8=_0x1d52cb?0x0:_0x222d86[_0xc34c('0x1b')];var _0x150c0b=_0x1d52cb?_0xbdaf17[_0xc34c('0x1d')]:_0x222d86[_0xc34c('0x1b')]+_0x222d86['limit'];var _0x5920c8;if(_0x150c0b>=_0x5bd51d){_0x150c0b=_0x5bd51d;_0x5920c8=0xc8;}else{_0x5920c8=0xce;}_0x27c666[_0xc34c('0x18')](_0x5920c8);return _0x27c666[_0xc34c('0x1e')](_0xc34c('0x1f'),_0x6493a8+'-'+_0x150c0b+'/'+_0x5bd51d)['json'](_0xbdaf17);}return null;};}function patchUpdates(_0x11c025){return function(_0x42ed10){try{jsonpatch[_0xc34c('0x20')](_0x42ed10,_0x11c025,!![]);}catch(_0x24e1eb){return BPromise[_0xc34c('0x21')](_0x24e1eb);}return _0x42ed10[_0xc34c('0x22')]();};}function saveUpdates(_0x2bacfb,_0x27af50){return function(_0x5c9f32){if(_0x5c9f32){return _0x5c9f32[_0xc34c('0x23')](_0x2bacfb)[_0xc34c('0x24')](function(_0x550b8e){return _0x550b8e;});}return null;};}function removeEntity(_0x5f36c8,_0x3e231c){return function(_0x1772be){if(_0x1772be){return _0x1772be[_0xc34c('0x25')]()['then'](function(){_0x5f36c8[_0xc34c('0x18')](0xcc)[_0xc34c('0x19')]();});}};}function handleEntityNotFound(_0x2e141d,_0x4ad1da){return function(_0x328030){if(!_0x328030){_0x2e141d[_0xc34c('0x17')](0x194);}return _0x328030;};}function handleError(_0x5dc9b0,_0x4f5904){_0x4f5904=_0x4f5904||0x1f4;return function(_0x5d66d4){logger[_0xc34c('0x26')](_0x5d66d4[_0xc34c('0x27')]);if(_0x5d66d4[_0xc34c('0x28')]){delete _0x5d66d4[_0xc34c('0x28')];}_0x5dc9b0['status'](_0x4f5904)[_0xc34c('0x29')](_0x5d66d4);};}exports[_0xc34c('0x2a')]=function(_0x3e2b7e,_0x444ba7){var _0x16c809={},_0x55921a={},_0x1c296c={'count':0x0,'rows':[]};var _0x208dbf=_[_0xc34c('0x2b')](db[_0xc34c('0x2c')][_0xc34c('0x2d')],function(_0x39c36c){return{'name':_0x39c36c[_0xc34c('0x2e')],'type':_0x39c36c['type']['key']};});_0x55921a['model']=_[_0xc34c('0x2b')](_0x208dbf,_0xc34c('0x28'));_0x55921a['query']=_[_0xc34c('0x2f')](_0x3e2b7e[_0xc34c('0x30')]);_0x55921a[_0xc34c('0x31')]=_['intersection'](_0x55921a[_0xc34c('0x32')],_0x55921a[_0xc34c('0x30')]);_0x16c809[_0xc34c('0x33')]=_['intersection'](_0x55921a[_0xc34c('0x32')],qs[_0xc34c('0x34')](_0x3e2b7e[_0xc34c('0x30')][_0xc34c('0x34')]));_0x16c809['attributes']=_0x16c809['attributes']['length']?_0x16c809['attributes']:_0x55921a['model'];if(!_0x3e2b7e['query']['hasOwnProperty'](_0xc34c('0x35'))){_0x16c809[_0xc34c('0x36')]=qs['limit'](_0x3e2b7e['query'][_0xc34c('0x36')]);_0x16c809[_0xc34c('0x1b')]=qs[_0xc34c('0x1b')](_0x3e2b7e['query'][_0xc34c('0x1b')]);}_0x16c809['order']=qs[_0xc34c('0x37')](_0x3e2b7e['query'][_0xc34c('0x37')]);_0x16c809[_0xc34c('0x38')]=qs[_0xc34c('0x31')](_['pick'](_0x3e2b7e[_0xc34c('0x30')],_0x55921a[_0xc34c('0x31')]),_0x208dbf);if(_0x3e2b7e[_0xc34c('0x30')][_0xc34c('0x39')]){_0x16c809[_0xc34c('0x38')]=_[_0xc34c('0x3a')](_0x16c809[_0xc34c('0x38')],{'$or':_[_0xc34c('0x2b')](_0x208dbf,function(_0x505ff1){if(_0x505ff1['type']!==_0xc34c('0x3b')){var _0x1c606d={};_0x1c606d[_0x505ff1[_0xc34c('0x28')]]={'$like':'%'+_0x3e2b7e[_0xc34c('0x30')][_0xc34c('0x39')]+'%'};return _0x1c606d;}})});}_0x16c809=_[_0xc34c('0x3a')]({},_0x16c809,_0x3e2b7e[_0xc34c('0x3c')]);var _0xd517c5={'where':_0x16c809['where']};return db[_0xc34c('0x2c')]['count'](_0xd517c5)[_0xc34c('0x24')](function(_0x707279){_0x1c296c[_0xc34c('0x1d')]=_0x707279;if(_0x3e2b7e['query'][_0xc34c('0x3d')]){_0x16c809[_0xc34c('0x3e')]=[{'all':!![]}];}return db[_0xc34c('0x2c')][_0xc34c('0x3f')](_0x16c809);})[_0xc34c('0x24')](function(_0x2b313e){_0x1c296c[_0xc34c('0x40')]=_0x2b313e;return _0x1c296c;})[_0xc34c('0x24')](respondWithFilteredResult(_0x444ba7,_0x16c809))[_0xc34c('0x41')](handleError(_0x444ba7,null));};
\ No newline at end of file
index 30202b2..7be5eca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d5=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations'];(function(_0x486f4a,_0x478dc7){var _0x135d99=function(_0x434008){while(--_0x434008){_0x486f4a['push'](_0x486f4a['shift']());}};_0x135d99(++_0x478dc7);}(_0x98d5,0x188));var _0x598d=function(_0x22f6de,_0x464538){_0x22f6de=_0x22f6de-0x0;var _0x1861fb=_0x98d5[_0x22f6de];return _0x1861fb;};'use strict';var _=require(_0x598d('0x0'));var util=require(_0x598d('0x1'));var logger=require(_0x598d('0x2'))(_0x598d('0x3'));var moment=require('moment');var BPromise=require(_0x598d('0x4'));var rp=require(_0x598d('0x5'));var fs=require('fs');var path=require(_0x598d('0x6'));var rimraf=require(_0x598d('0x7'));var config=require(_0x598d('0x8'));var attributes=require(_0x598d('0x9'));module[_0x598d('0xa')]=function(_0x65db4,_0x16a64d){return _0x65db4[_0x598d('0xb')](_0x598d('0xc'),attributes,{'tableName':_0x598d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xad7f=['request-promise','rimraf','../../config/environment','./migration.attributes','exports','Migration','migrations','lodash','util','../../config/logger','api','bluebird'];(function(_0x21f9c2,_0x2b3d2a){var _0x3da17f=function(_0x57e2b9){while(--_0x57e2b9){_0x21f9c2['push'](_0x21f9c2['shift']());}};_0x3da17f(++_0x2b3d2a);}(_0xad7f,0x16f));var _0xfad7=function(_0x2b63a0,_0x14fc48){_0x2b63a0=_0x2b63a0-0x0;var _0x4f0434=_0xad7f[_0x2b63a0];return _0x4f0434;};'use strict';var _=require(_0xfad7('0x0'));var util=require(_0xfad7('0x1'));var logger=require(_0xfad7('0x2'))(_0xfad7('0x3'));var moment=require('moment');var BPromise=require(_0xfad7('0x4'));var rp=require(_0xfad7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfad7('0x6'));var config=require(_0xfad7('0x7'));var attributes=require(_0xfad7('0x8'));module[_0xfad7('0x9')]=function(_0x29067d,_0x1dd3b3){return _0x29067d['define'](_0xfad7('0xa'),attributes,{'tableName':_0xfad7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b7a653d..8844593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eec=['debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','Migration,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x3eec,0x1e9));var _0xc3ee=function(_0x1cf4b5,_0x1782b0){_0x1cf4b5=_0x1cf4b5-0x0;var _0x2e60a4=_0x3eec[_0x1cf4b5];return _0x2e60a4;};'use strict';var _=require(_0xc3ee('0x0'));var util=require(_0xc3ee('0x1'));var moment=require(_0xc3ee('0x2'));var BPromise=require(_0xc3ee('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3ee('0x4'));var db=require(_0xc3ee('0x5'))['db'];var utils=require(_0xc3ee('0x6'));var logger=require(_0xc3ee('0x7'))(_0xc3ee('0x8'));var config=require(_0xc3ee('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc3ee('0xa')][_0xc3ee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xea4318,_0x2cc750,_0x356374){return new BPromise(function(_0x3d74c0,_0xd88f6){return client[_0xc3ee('0xc')](_0xea4318,_0x356374)[_0xc3ee('0xd')](function(_0x23e9c0){logger['info']('Migration,\x20%s,\x20%s',_0x2cc750,_0xc3ee('0xe'));logger[_0xc3ee('0xf')](_0xc3ee('0x10'),_0x2cc750,_0xc3ee('0xe'),JSON['stringify'](_0x23e9c0));if(_0x23e9c0[_0xc3ee('0x11')]){if(_0x23e9c0['error'][_0xc3ee('0x12')]===0x1f4){logger[_0xc3ee('0x11')]('Migration,\x20%s,\x20%s',_0x2cc750,_0x23e9c0['error'][_0xc3ee('0x13')]);return _0xd88f6(_0x23e9c0['error'][_0xc3ee('0x13')]);}logger['error'](_0xc3ee('0x14'),_0x2cc750,_0x23e9c0['error'][_0xc3ee('0x13')]);return _0x3d74c0(_0x23e9c0[_0xc3ee('0x11')][_0xc3ee('0x13')]);}else{logger[_0xc3ee('0x15')](_0xc3ee('0x14'),_0x2cc750,_0xc3ee('0xe'));_0x3d74c0(_0x23e9c0[_0xc3ee('0x16')]['message']);}})[_0xc3ee('0x17')](function(_0x4eea89){logger[_0xc3ee('0x11')](_0xc3ee('0x14'),_0x2cc750,_0x4eea89);_0xd88f6(_0x4eea89);});});}
\ No newline at end of file
+var _0x24a6=['jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x315d09,_0xfb5449){var _0x10b81a=function(_0x3805f5){while(--_0x3805f5){_0x315d09['push'](_0x315d09['shift']());}};_0x10b81a(++_0xfb5449);}(_0x24a6,0x14f));var _0x624a=function(_0x54a5ba,_0x159231){_0x54a5ba=_0x54a5ba-0x0;var _0x48d302=_0x24a6[_0x54a5ba];return _0x48d302;};'use strict';var _=require(_0x624a('0x0'));var util=require('util');var moment=require(_0x624a('0x1'));var BPromise=require(_0x624a('0x2'));var rs=require(_0x624a('0x3'));var fs=require('fs');var Redis=require(_0x624a('0x4'));var db=require(_0x624a('0x5'))['db'];var utils=require(_0x624a('0x6'));var logger=require(_0x624a('0x7'))(_0x624a('0x8'));var config=require(_0x624a('0x9'));var jayson=require(_0x624a('0xa'));var client=jayson[_0x624a('0xb')][_0x624a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1af370,_0x3b0720,_0x58243){return new BPromise(function(_0x40cb85,_0x159187){return client[_0x624a('0xd')](_0x1af370,_0x58243)[_0x624a('0xe')](function(_0x159240){logger[_0x624a('0xf')](_0x624a('0x10'),_0x3b0720,_0x624a('0x11'));logger['debug']('Migration,\x20%s,\x20%s,\x20%s',_0x3b0720,_0x624a('0x11'),JSON[_0x624a('0x12')](_0x159240));if(_0x159240[_0x624a('0x13')]){if(_0x159240['error'][_0x624a('0x14')]===0x1f4){logger[_0x624a('0x13')]('Migration,\x20%s,\x20%s',_0x3b0720,_0x159240['error']['message']);return _0x159187(_0x159240[_0x624a('0x13')]['message']);}logger[_0x624a('0x13')](_0x624a('0x10'),_0x3b0720,_0x159240[_0x624a('0x13')][_0x624a('0x15')]);return _0x40cb85(_0x159240['error'][_0x624a('0x15')]);}else{logger['info'](_0x624a('0x10'),_0x3b0720,_0x624a('0x11'));_0x40cb85(_0x159240['result'][_0x624a('0x15')]);}})[_0x624a('0x16')](function(_0x3b6414){logger[_0x624a('0x13')](_0x624a('0x10'),_0x3b0720,_0x3b6414);_0x159187(_0x3b6414);});});}
\ No newline at end of file
index dbf29c2..ddbf92e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b6=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','post','put','update','delete'];(function(_0xf16cc,_0x46f9d0){var _0x4ab02e=function(_0x4c2fb2){while(--_0x4c2fb2){_0xf16cc['push'](_0xf16cc['shift']());}};_0x4ab02e(++_0x46f9d0);}(_0x29b6,0x17e));var _0x629b=function(_0x11c5da,_0x5799cf){_0x11c5da=_0x11c5da-0x0;var _0x5cfbf1=_0x29b6[_0x11c5da];return _0x5cfbf1;};'use strict';var multer=require(_0x629b('0x0'));var util=require(_0x629b('0x1'));var path=require(_0x629b('0x2'));var timeout=require(_0x629b('0x3'));var express=require(_0x629b('0x4'));var router=express[_0x629b('0x5')]();var fs_extra=require(_0x629b('0x6'));var auth=require(_0x629b('0x7'));var interaction=require(_0x629b('0x8'));var config=require(_0x629b('0x9'));var controller=require('./network.controller');router[_0x629b('0xa')]('/',auth['isAuthenticated'](),controller[_0x629b('0xb')]);router[_0x629b('0xa')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller['show']);router[_0x629b('0xe')]('/',auth[_0x629b('0xd')](),controller['create']);router[_0x629b('0xf')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller[_0x629b('0x10')]);router[_0x629b('0x11')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller[_0x629b('0x12')]);module[_0x629b('0x13')]=router;
\ No newline at end of file
+var _0xcded=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcded,0x64));var _0xdcde=function(_0xbaeba7,_0x578dfa){_0xbaeba7=_0xbaeba7-0x0;var _0x4b42e7=_0xcded[_0xbaeba7];return _0x4b42e7;};'use strict';var multer=require('multer');var util=require(_0xdcde('0x0'));var path=require(_0xdcde('0x1'));var timeout=require('connect-timeout');var express=require(_0xdcde('0x2'));var router=express[_0xdcde('0x3')]();var fs_extra=require(_0xdcde('0x4'));var auth=require(_0xdcde('0x5'));var interaction=require(_0xdcde('0x6'));var config=require(_0xdcde('0x7'));var controller=require(_0xdcde('0x8'));router['get']('/',auth[_0xdcde('0x9')](),controller[_0xdcde('0xa')]);router[_0xdcde('0xb')](_0xdcde('0xc'),auth[_0xdcde('0x9')](),controller[_0xdcde('0xd')]);router[_0xdcde('0xe')]('/',auth[_0xdcde('0x9')](),controller[_0xdcde('0xf')]);router[_0xdcde('0x10')]('/:id',auth[_0xdcde('0x9')](),controller[_0xdcde('0x11')]);router[_0xdcde('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xdcde('0x13')]=router;
\ No newline at end of file
index 030fa72..a7d4f37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd007=['exports','ENUM','localnet','turn','STRING'];(function(_0x262baa,_0x283058){var _0x4f2257=function(_0x2cd1c6){while(--_0x2cd1c6){_0x262baa['push'](_0x262baa['shift']());}};_0x4f2257(++_0x283058);}(_0xd007,0x1a9));var _0x7d00=function(_0x2811c5,_0xfb138c){_0x2811c5=_0x2811c5-0x0;var _0x11c0c5=_0xd007[_0x2811c5];return _0x11c0c5;};'use strict';var Sequelize=require('sequelize');module[_0x7d00('0x0')]={'type':{'type':Sequelize[_0x7d00('0x1')](_0x7d00('0x2'),'externip','stun',_0x7d00('0x3'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x7d00('0x4')]},'password':{'type':Sequelize[_0x7d00('0x4')]}};
\ No newline at end of file
+var _0x6256=['ENUM','externip','STRING','exports'];(function(_0x547cd9,_0x2917ed){var _0x123418=function(_0xabb0df){while(--_0xabb0df){_0x547cd9['push'](_0x547cd9['shift']());}};_0x123418(++_0x2917ed);}(_0x6256,0x17b));var _0x6625=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x6256[_0x342baa];return _0x1208f3;};'use strict';var Sequelize=require('sequelize');module[_0x6625('0x0')]={'type':{'type':Sequelize[_0x6625('0x1')]('localnet',_0x6625('0x2'),'stun','turn')},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x6625('0x3')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0eb1804..bc8baa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb205=['server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','params','body','type','server/files/templates/stun_multiple.ejs','res_stun_monitor.so','chan_sip.so','destroy','server/files/templates/turn_multiple.ejs','eml-format','zip-dir','fast-json-patch','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','../../config/logger','api','../../config/license/util','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','end','stack','name','send','index','map','Network','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','show','include','find','create','sequelize','transaction','findAll','toUpperCase','STUN','join','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','readFileSync','root','/etc/asterisk/turn_xcally.conf'];(function(_0x540a33,_0x43d10d){var _0x20309e=function(_0x4bde12){while(--_0x4bde12){_0x540a33['push'](_0x540a33['shift']());}};_0x20309e(++_0x43d10d);}(_0xb205,0x156));var _0x5b20=function(_0x305913,_0x15fffa){_0x305913=_0x305913-0x0;var _0x56ef4d=_0xb205[_0x305913];return _0x56ef4d;};'use strict';var emlformat=require(_0x5b20('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5b20('0x1'));var jsonpatch=require(_0x5b20('0x2'));var rp=require('request-promise');var moment=require(_0x5b20('0x3'));var BPromise=require(_0x5b20('0x4'));var Mustache=require('mustache');var util=require(_0x5b20('0x5'));var path=require(_0x5b20('0x6'));var sox=require(_0x5b20('0x7'));var csv=require(_0x5b20('0x8'));var ejs=require(_0x5b20('0x9'));var fs=require('fs');var fs_extra=require(_0x5b20('0xa'));var _=require(_0x5b20('0xb'));var squel=require(_0x5b20('0xc'));var crypto=require(_0x5b20('0xd'));var jsforce=require(_0x5b20('0xe'));var deskjs=require(_0x5b20('0xf'));var toCsv=require(_0x5b20('0x8'));var querystring=require(_0x5b20('0x10'));var Papa=require('papaparse');var Redis=require(_0x5b20('0x11'));var authService=require(_0x5b20('0x12'));var qs=require(_0x5b20('0x13'));var as=require(_0x5b20('0x14'));var hardwareService=require(_0x5b20('0x15'));var logger=require(_0x5b20('0x16'))(_0x5b20('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5b20('0x18'));var db=require('../../mysqldb')['db'];var jayson=require(_0x5b20('0x19'));var client=jayson[_0x5b20('0x1a')][_0x5b20('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x3841bd,_0x554394,_0xa9f77e,_0x8f72aa){return new BPromise(function(_0x24d338,_0x23ced2){var _0x348d01=_0x8f72aa||client;return _0x348d01['request'](_0x3841bd,_0xa9f77e)[_0x5b20('0x1c')](function(_0x3f3230){logger[_0x5b20('0x1d')](_0x5b20('0x1e'),_0x554394,_0x5b20('0x1f'));logger[_0x5b20('0x20')](_0x5b20('0x21'),_0x554394,_0x5b20('0x1f'),JSON[_0x5b20('0x22')](_0x3f3230));if(_0x3f3230['error']){if(_0x3f3230[_0x5b20('0x23')][_0x5b20('0x24')]===0x1f4){logger[_0x5b20('0x23')](_0x5b20('0x1e'),_0x554394,_0x3f3230[_0x5b20('0x23')][_0x5b20('0x25')]);return _0x23ced2(_0x3f3230['error'][_0x5b20('0x25')]);}logger[_0x5b20('0x23')]('Network,\x20%s,\x20%s',_0x554394,_0x3f3230[_0x5b20('0x23')][_0x5b20('0x25')]);return _0x24d338(_0x3f3230[_0x5b20('0x23')]['message']);}else{logger['info'](_0x5b20('0x1e'),_0x554394,'request\x20sent');_0x24d338(_0x3f3230[_0x5b20('0x26')]['message']);}})[_0x5b20('0x27')](function(_0x523b2c){logger['error']('Network,\x20%s,\x20%s',_0x554394,_0x523b2c);_0x23ced2(_0x523b2c);});});}function respondWithStatusCode(_0x3b4143,_0x2d21c9){_0x2d21c9=_0x2d21c9||0xcc;return function(_0x193d92){if(_0x193d92){return _0x3b4143[_0x5b20('0x28')](_0x2d21c9);}return _0x3b4143[_0x5b20('0x29')](_0x2d21c9)['end']();};}function respondWithResult(_0x352791,_0x49dd97){_0x49dd97=_0x49dd97||0xc8;return function(_0x4ba73b){if(_0x4ba73b){return _0x352791[_0x5b20('0x29')](_0x49dd97)[_0x5b20('0x2a')](_0x4ba73b);}};}function respondWithFilteredResult(_0x2bb48f,_0x232a34){return function(_0x342ba8){if(_0x342ba8){var _0x2fd4b8=typeof _0x232a34[_0x5b20('0x2b')]===_0x5b20('0x2c')&&typeof _0x232a34[_0x5b20('0x2d')]===_0x5b20('0x2c');var _0x23a7fe=_0x342ba8[_0x5b20('0x2e')];var _0x540117=_0x2fd4b8?0x0:_0x232a34[_0x5b20('0x2b')];var _0x44d9e0=_0x2fd4b8?_0x342ba8['count']:_0x232a34['offset']+_0x232a34[_0x5b20('0x2d')];var _0x4568db;if(_0x44d9e0>=_0x23a7fe){_0x44d9e0=_0x23a7fe;_0x4568db=0xc8;}else{_0x4568db=0xce;}_0x2bb48f['status'](_0x4568db);return _0x2bb48f[_0x5b20('0x2f')]('Content-Range',_0x540117+'-'+_0x44d9e0+'/'+_0x23a7fe)[_0x5b20('0x2a')](_0x342ba8);}return null;};}function patchUpdates(_0x3769fc){return function(_0x3d3406){try{jsonpatch[_0x5b20('0x30')](_0x3d3406,_0x3769fc,!![]);}catch(_0x16d8e6){return BPromise[_0x5b20('0x31')](_0x16d8e6);}return _0x3d3406[_0x5b20('0x32')]();};}function saveUpdates(_0x1ad5b2,_0x375a16){return function(_0x5900fa){if(_0x5900fa){return _0x5900fa[_0x5b20('0x33')](_0x1ad5b2)[_0x5b20('0x1c')](function(_0x4ca8bf){return _0x4ca8bf;});}return null;};}function removeEntity(_0x3c1a80,_0x2701b5){return function(_0x501b80){if(_0x501b80){return _0x501b80['destroy']()['then'](function(){_0x3c1a80['status'](0xcc)[_0x5b20('0x34')]();});}};}function handleEntityNotFound(_0x5b8ac7,_0x4c25e6){return function(_0x5d2761){if(!_0x5d2761){_0x5b8ac7['sendStatus'](0x194);}return _0x5d2761;};}function handleError(_0x1c87ee,_0x50cdbc){_0x50cdbc=_0x50cdbc||0x1f4;return function(_0x32005c){logger['error'](_0x32005c[_0x5b20('0x35')]);if(_0x32005c['name']){delete _0x32005c[_0x5b20('0x36')];}_0x1c87ee[_0x5b20('0x29')](_0x50cdbc)[_0x5b20('0x37')](_0x32005c);};}exports[_0x5b20('0x38')]=function(_0x1c803b,_0x2445e1){var _0xe9bc3d={},_0x654e86={},_0x737060={'count':0x0,'rows':[]};var _0x1bd0a=_[_0x5b20('0x39')](db[_0x5b20('0x3a')][_0x5b20('0x3b')],function(_0x3db4d8){return{'name':_0x3db4d8[_0x5b20('0x3c')],'type':_0x3db4d8['type'][_0x5b20('0x3d')]};});_0x654e86[_0x5b20('0x3e')]=_[_0x5b20('0x39')](_0x1bd0a,'name');_0x654e86[_0x5b20('0x3f')]=_[_0x5b20('0x40')](_0x1c803b[_0x5b20('0x3f')]);_0x654e86[_0x5b20('0x41')]=_['intersection'](_0x654e86[_0x5b20('0x3e')],_0x654e86[_0x5b20('0x3f')]);_0xe9bc3d[_0x5b20('0x42')]=_[_0x5b20('0x43')](_0x654e86[_0x5b20('0x3e')],qs[_0x5b20('0x44')](_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x44')]));_0xe9bc3d[_0x5b20('0x42')]=_0xe9bc3d[_0x5b20('0x42')]['length']?_0xe9bc3d[_0x5b20('0x42')]:_0x654e86[_0x5b20('0x3e')];if(!_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x45')]('nolimit')){_0xe9bc3d[_0x5b20('0x2d')]=qs[_0x5b20('0x2d')](_0x1c803b['query'][_0x5b20('0x2d')]);_0xe9bc3d[_0x5b20('0x2b')]=qs[_0x5b20('0x2b')](_0x1c803b[_0x5b20('0x3f')]['offset']);}_0xe9bc3d[_0x5b20('0x46')]=qs['sort'](_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x47')]);_0xe9bc3d[_0x5b20('0x48')]=qs[_0x5b20('0x41')](_[_0x5b20('0x49')](_0x1c803b[_0x5b20('0x3f')],_0x654e86[_0x5b20('0x41')]),_0x1bd0a);if(_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x4a')]){_0xe9bc3d['where']=_[_0x5b20('0x4b')](_0xe9bc3d['where'],{'$or':_['map'](_0x1bd0a,function(_0x2f7eef){if(_0x2f7eef['type']!=='VIRTUAL'){var _0x4b9291={};_0x4b9291[_0x2f7eef[_0x5b20('0x36')]]={'$like':'%'+_0x1c803b[_0x5b20('0x3f')]['filter']+'%'};return _0x4b9291;}})});}_0xe9bc3d=_[_0x5b20('0x4b')]({},_0xe9bc3d,_0x1c803b[_0x5b20('0x4c')]);var _0x5b772e={'where':_0xe9bc3d[_0x5b20('0x48')]};return db[_0x5b20('0x3a')]['count'](_0x5b772e)[_0x5b20('0x1c')](function(_0x2eece5){_0x737060['count']=_0x2eece5;if(_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x4d')]){_0xe9bc3d['include']=[{'all':!![]}];}return db['Network']['findAll'](_0xe9bc3d);})[_0x5b20('0x1c')](function(_0x379716){_0x737060[_0x5b20('0x4e')]=_0x379716;return _0x737060;})[_0x5b20('0x1c')](respondWithFilteredResult(_0x2445e1,_0xe9bc3d))['catch'](handleError(_0x2445e1,null));};exports[_0x5b20('0x4f')]=function(_0x2e844d,_0x278a2a){var _0x534d64={'raw':!![],'where':{'id':_0x2e844d['params']['id']}},_0x2c3d71={};_0x2c3d71['model']=_[_0x5b20('0x40')](db[_0x5b20('0x3a')][_0x5b20('0x3b')]);_0x2c3d71[_0x5b20('0x3f')]=_[_0x5b20('0x40')](_0x2e844d[_0x5b20('0x3f')]);_0x2c3d71[_0x5b20('0x41')]=_['intersection'](_0x2c3d71[_0x5b20('0x3e')],_0x2c3d71[_0x5b20('0x3f')]);_0x534d64[_0x5b20('0x42')]=_[_0x5b20('0x43')](_0x2c3d71[_0x5b20('0x3e')],qs[_0x5b20('0x44')](_0x2e844d[_0x5b20('0x3f')]['fields']));_0x534d64[_0x5b20('0x42')]=_0x534d64[_0x5b20('0x42')]['length']?_0x534d64[_0x5b20('0x42')]:_0x2c3d71[_0x5b20('0x3e')];if(_0x2e844d[_0x5b20('0x3f')][_0x5b20('0x4d')]){_0x534d64[_0x5b20('0x50')]=[{'all':!![]}];}_0x534d64=_[_0x5b20('0x4b')]({},_0x534d64,_0x2e844d[_0x5b20('0x4c')]);return db[_0x5b20('0x3a')][_0x5b20('0x51')](_0x534d64)[_0x5b20('0x1c')](handleEntityNotFound(_0x278a2a,null))['then'](respondWithResult(_0x278a2a,null))['catch'](handleError(_0x278a2a,null));};exports[_0x5b20('0x52')]=function(_0x5b9379,_0x1ebb22,_0xfa4210){var _0x3d88d1;return db[_0x5b20('0x53')][_0x5b20('0x54')](function(_0x1c7585){return db['Network'][_0x5b20('0x52')](_0x5b9379['body'],{'raw':!![]})['then'](function(_0xf5d4fe){_0x3d88d1=_0xf5d4fe;return db[_0x5b20('0x3a')][_0x5b20('0x55')]({'where':{'type':_0x5b9379['body']['type']},'raw':!![]});})[_0x5b20('0x1c')](function(_0x3b2ab5){if(_0x3d88d1['type'][_0x5b20('0x56')]()==_0x5b20('0x57')){var _0x2a7318=fs['readFileSync'](path[_0x5b20('0x58')](config['root'],'server/files/templates/stun_multiple.ejs'),_0x5b20('0x59'));var _0x240527=ejs[_0x5b20('0x5a')](_0x2a7318,{'networks':_0x3b2ab5||[]});fs[_0x5b20('0x5b')](_0x5b20('0x5c'),_0x240527);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x52'),{'module':'res_stun_monitor.so'});}else if(_0x3d88d1['type']['toUpperCase']()==_0x5b20('0x5e')){var _0x1e39ac=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],'server/files/templates/turn_multiple.ejs'),_0x5b20('0x59'));var _0x52c93b=ejs[_0x5b20('0x5a')](_0x1e39ac,{'networks':_0x3b2ab5||[]});fs[_0x5b20('0x5b')](_0x5b20('0x61'),_0x52c93b);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x52'),{'module':'res_stun_monitor.so'});}else{var _0x422887=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config['root'],_0x5b20('0x62')),_0x5b20('0x59'));var _0x48819f=ejs['render'](_0x422887,{'networks':_0x3b2ab5||[]});fs[_0x5b20('0x5b')](util[_0x5b20('0x63')](_0x5b20('0x64'),_0x5b9379['body']['type'][_0x5b20('0x65')]()),_0x48819f);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x52'),{'module':'chan_sip.so'});}return null;})[_0x5b20('0x1c')](function(){return _0x3d88d1;});})[_0x5b20('0x1c')](respondWithResult(_0x1ebb22,0xc9))[_0x5b20('0x27')](handleError(_0x1ebb22,null));};exports['update']=function(_0x2eef6f,_0x350101,_0x26db42){var _0x114e00;return db[_0x5b20('0x53')][_0x5b20('0x54')](function(_0x554452){return db[_0x5b20('0x3a')][_0x5b20('0x51')]({'where':{'id':_0x2eef6f[_0x5b20('0x66')]['id']}})[_0x5b20('0x1c')](handleEntityNotFound(_0x350101,null))[_0x5b20('0x1c')](saveUpdates(_0x2eef6f[_0x5b20('0x67')],null))[_0x5b20('0x1c')](function(_0x59065f){if(_0x59065f){_0x114e00=_0x59065f;return db[_0x5b20('0x3a')]['findAll']({'where':{'type':_0x114e00[_0x5b20('0x68')]},'raw':!![]});}return null;})['then'](function(_0x2fbc55){if(_0x114e00[_0x5b20('0x68')][_0x5b20('0x56')]()==_0x5b20('0x57')){var _0x4ff085=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config['root'],_0x5b20('0x69')),'utf8');var _0x304893=ejs['render'](_0x4ff085,{'networks':_0x2fbc55||[]});fs[_0x5b20('0x5b')]('/etc/asterisk/stun_xcally.conf',_0x304893);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x33'),{'module':'res_stun_monitor.so'});}else if(_0x114e00[_0x5b20('0x68')][_0x5b20('0x56')]()==_0x5b20('0x5e')){var _0x2d1dc5=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x36d3b2=ejs[_0x5b20('0x5a')](_0x2d1dc5,{'networks':_0x2fbc55||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x36d3b2);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x33'),{'module':_0x5b20('0x6a')});}else{var _0x286423=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x62')),_0x5b20('0x59'));var _0x58e84a=ejs[_0x5b20('0x5a')](_0x286423,{'networks':_0x2fbc55||[]});fs[_0x5b20('0x5b')](util['format'](_0x5b20('0x64'),_0x2eef6f['body']['type'][_0x5b20('0x65')]()),_0x58e84a);return respondWithRpcPromise('Reload',_0x5b20('0x33'),{'module':_0x5b20('0x6b')});}return null;})['then'](function(_0x56a61c){if(_0x56a61c){return _0x114e00;}return null;});})[_0x5b20('0x1c')](respondWithResult(_0x350101,null))[_0x5b20('0x27')](handleError(_0x350101,null));};exports[_0x5b20('0x6c')]=function(_0xb5f219,_0x3fec6a,_0x24a5c3){var _0x3791c0;return db['Network'][_0x5b20('0x51')]({'where':{'id':_0xb5f219[_0x5b20('0x66')]['id']}})[_0x5b20('0x1c')](function(_0x8c7a7){_0x3791c0=_0x8c7a7;return _0x8c7a7;})[_0x5b20('0x1c')](handleEntityNotFound(_0x3fec6a,null))[_0x5b20('0x1c')](removeEntity(_0x3fec6a,null))['then'](function(){if(_0x3791c0){return db[_0x5b20('0x3a')]['findAll']({'where':{'type':_0x3791c0['type']},'raw':!![]});}})[_0x5b20('0x1c')](function(_0x3224e2){if(_0x3791c0['type'][_0x5b20('0x56')]()==_0x5b20('0x57')){var _0x508652=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x69')),_0x5b20('0x59'));var _0x2ed048=ejs[_0x5b20('0x5a')](_0x508652,{'networks':_0x3224e2||[]});fs[_0x5b20('0x5b')](_0x5b20('0x5c'),_0x2ed048);return respondWithRpcPromise(_0x5b20('0x5d'),'destroy',{'module':_0x5b20('0x6a')});}else if(_0x3791c0[_0x5b20('0x68')][_0x5b20('0x56')]()==_0x5b20('0x5e')){var _0xfde1b7=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x6d')),_0x5b20('0x59'));var _0x29c55c=ejs[_0x5b20('0x5a')](_0xfde1b7,{'networks':_0x3224e2||[]});fs[_0x5b20('0x5b')](_0x5b20('0x61'),_0x29c55c);return respondWithRpcPromise(_0x5b20('0x5d'),'destroy',{'module':_0x5b20('0x6a')});}else{var _0x2e4023=fs['readFileSync'](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x62')),_0x5b20('0x59'));var _0xbf4d98=ejs[_0x5b20('0x5a')](_0x2e4023,{'networks':_0x3224e2||[]});fs[_0x5b20('0x5b')](util['format'](_0x5b20('0x64'),_0xb5f219['body'][_0x5b20('0x68')][_0x5b20('0x65')]()),_0xbf4d98);return respondWithRpcPromise('Reload',_0x5b20('0x6c'),{'module':_0x5b20('0x6b')});}return null;})[_0x5b20('0x27')](handleError(_0x3fec6a,null));};
\ No newline at end of file
+var _0x25d5=['fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','where','pick','merge','VIRTUAL','filter','options','findAll','rows','includeAll','include','find','create','sequelize','transaction','body','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','Reload','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','STUN','format','params','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','limit','count','apply','reject','save','update','destroy','stack','name','send','index','map','Network','rawAttributes'];(function(_0x556206,_0x5dc775){var _0x269bdd=function(_0x4f157d){while(--_0x4f157d){_0x556206['push'](_0x556206['shift']());}};_0x269bdd(++_0x5dc775);}(_0x25d5,0x91));var _0x525d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x25d5[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x525d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x525d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x525d('0x2'));var moment=require(_0x525d('0x3'));var BPromise=require(_0x525d('0x4'));var Mustache=require('mustache');var util=require(_0x525d('0x5'));var path=require(_0x525d('0x6'));var sox=require(_0x525d('0x7'));var csv=require(_0x525d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x525d('0x9'));var _=require(_0x525d('0xa'));var squel=require(_0x525d('0xb'));var crypto=require(_0x525d('0xc'));var jsforce=require(_0x525d('0xd'));var deskjs=require(_0x525d('0xe'));var toCsv=require(_0x525d('0x8'));var querystring=require(_0x525d('0xf'));var Papa=require(_0x525d('0x10'));var Redis=require('ioredis');var authService=require(_0x525d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x525d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x525d('0x13'));var config=require(_0x525d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x525d('0x15'))['db'];var jayson=require(_0x525d('0x16'));var client=jayson[_0x525d('0x17')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a23c7,_0x1fc306,_0x3bac93,_0x2ce0d1){return new BPromise(function(_0x5ccfbb,_0x2040cc){var _0x2bfcfb=_0x2ce0d1||client;return _0x2bfcfb[_0x525d('0x18')](_0x1a23c7,_0x3bac93)[_0x525d('0x19')](function(_0x39f756){logger[_0x525d('0x1a')](_0x525d('0x1b'),_0x1fc306,_0x525d('0x1c'));logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x1fc306,_0x525d('0x1c'),JSON[_0x525d('0x1d')](_0x39f756));if(_0x39f756[_0x525d('0x1e')]){if(_0x39f756[_0x525d('0x1e')][_0x525d('0x1f')]===0x1f4){logger[_0x525d('0x1e')]('Network,\x20%s,\x20%s',_0x1fc306,_0x39f756[_0x525d('0x1e')][_0x525d('0x20')]);return _0x2040cc(_0x39f756[_0x525d('0x1e')][_0x525d('0x20')]);}logger[_0x525d('0x1e')](_0x525d('0x1b'),_0x1fc306,_0x39f756['error'][_0x525d('0x20')]);return _0x5ccfbb(_0x39f756['error']['message']);}else{logger['info'](_0x525d('0x1b'),_0x1fc306,'request\x20sent');_0x5ccfbb(_0x39f756[_0x525d('0x21')][_0x525d('0x20')]);}})[_0x525d('0x22')](function(_0x1e9c24){logger[_0x525d('0x1e')]('Network,\x20%s,\x20%s',_0x1fc306,_0x1e9c24);_0x2040cc(_0x1e9c24);});});}function respondWithStatusCode(_0x291cc3,_0x5327d0){_0x5327d0=_0x5327d0||0xcc;return function(_0x59155e){if(_0x59155e){return _0x291cc3[_0x525d('0x23')](_0x5327d0);}return _0x291cc3[_0x525d('0x24')](_0x5327d0)['end']();};}function respondWithResult(_0x55a630,_0x3d4a5c){_0x3d4a5c=_0x3d4a5c||0xc8;return function(_0x4eebe3){if(_0x4eebe3){return _0x55a630[_0x525d('0x24')](_0x3d4a5c)[_0x525d('0x25')](_0x4eebe3);}};}function respondWithFilteredResult(_0x190294,_0x3dca8a){return function(_0x32065f){if(_0x32065f){var _0xcad2a9=typeof _0x3dca8a[_0x525d('0x26')]==='undefined'&&typeof _0x3dca8a[_0x525d('0x27')]==='undefined';var _0x1d70cb=_0x32065f[_0x525d('0x28')];var _0x512d9f=_0xcad2a9?0x0:_0x3dca8a['offset'];var _0x86bc45=_0xcad2a9?_0x32065f['count']:_0x3dca8a[_0x525d('0x26')]+_0x3dca8a[_0x525d('0x27')];var _0x29a633;if(_0x86bc45>=_0x1d70cb){_0x86bc45=_0x1d70cb;_0x29a633=0xc8;}else{_0x29a633=0xce;}_0x190294[_0x525d('0x24')](_0x29a633);return _0x190294['set']('Content-Range',_0x512d9f+'-'+_0x86bc45+'/'+_0x1d70cb)[_0x525d('0x25')](_0x32065f);}return null;};}function patchUpdates(_0x2a1e92){return function(_0x1f10bd){try{jsonpatch[_0x525d('0x29')](_0x1f10bd,_0x2a1e92,!![]);}catch(_0x3cecd5){return BPromise[_0x525d('0x2a')](_0x3cecd5);}return _0x1f10bd[_0x525d('0x2b')]();};}function saveUpdates(_0x33527a,_0x34c6ba){return function(_0x5b345a){if(_0x5b345a){return _0x5b345a[_0x525d('0x2c')](_0x33527a)['then'](function(_0x341d94){return _0x341d94;});}return null;};}function removeEntity(_0x498396,_0x43447e){return function(_0x53b04c){if(_0x53b04c){return _0x53b04c[_0x525d('0x2d')]()[_0x525d('0x19')](function(){_0x498396[_0x525d('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b082c,_0x9df2a1){return function(_0x2d3178){if(!_0x2d3178){_0x5b082c[_0x525d('0x23')](0x194);}return _0x2d3178;};}function handleError(_0x75c2fa,_0x382d32){_0x382d32=_0x382d32||0x1f4;return function(_0x218b6a){logger['error'](_0x218b6a[_0x525d('0x2e')]);if(_0x218b6a[_0x525d('0x2f')]){delete _0x218b6a[_0x525d('0x2f')];}_0x75c2fa[_0x525d('0x24')](_0x382d32)[_0x525d('0x30')](_0x218b6a);};}exports[_0x525d('0x31')]=function(_0x1a2dd8,_0x2522ab){var _0x1a9da5={},_0x252d46={},_0x58377f={'count':0x0,'rows':[]};var _0x261a70=_[_0x525d('0x32')](db[_0x525d('0x33')][_0x525d('0x34')],function(_0x13aaea){return{'name':_0x13aaea[_0x525d('0x35')],'type':_0x13aaea[_0x525d('0x36')]['key']};});_0x252d46[_0x525d('0x37')]=_[_0x525d('0x32')](_0x261a70,_0x525d('0x2f'));_0x252d46[_0x525d('0x38')]=_[_0x525d('0x39')](_0x1a2dd8[_0x525d('0x38')]);_0x252d46[_0x525d('0x3a')]=_[_0x525d('0x3b')](_0x252d46[_0x525d('0x37')],_0x252d46[_0x525d('0x38')]);_0x1a9da5[_0x525d('0x3c')]=_['intersection'](_0x252d46[_0x525d('0x37')],qs[_0x525d('0x3d')](_0x1a2dd8['query'][_0x525d('0x3d')]));_0x1a9da5[_0x525d('0x3c')]=_0x1a9da5[_0x525d('0x3c')][_0x525d('0x3e')]?_0x1a9da5['attributes']:_0x252d46['model'];if(!_0x1a2dd8[_0x525d('0x38')][_0x525d('0x3f')]('nolimit')){_0x1a9da5[_0x525d('0x27')]=qs[_0x525d('0x27')](_0x1a2dd8[_0x525d('0x38')][_0x525d('0x27')]);_0x1a9da5['offset']=qs[_0x525d('0x26')](_0x1a2dd8[_0x525d('0x38')][_0x525d('0x26')]);}_0x1a9da5['order']=qs['sort'](_0x1a2dd8['query']['sort']);_0x1a9da5[_0x525d('0x40')]=qs[_0x525d('0x3a')](_[_0x525d('0x41')](_0x1a2dd8[_0x525d('0x38')],_0x252d46[_0x525d('0x3a')]),_0x261a70);if(_0x1a2dd8[_0x525d('0x38')]['filter']){_0x1a9da5[_0x525d('0x40')]=_[_0x525d('0x42')](_0x1a9da5[_0x525d('0x40')],{'$or':_[_0x525d('0x32')](_0x261a70,function(_0x4044c3){if(_0x4044c3['type']!==_0x525d('0x43')){var _0x5cd85f={};_0x5cd85f[_0x4044c3[_0x525d('0x2f')]]={'$like':'%'+_0x1a2dd8[_0x525d('0x38')][_0x525d('0x44')]+'%'};return _0x5cd85f;}})});}_0x1a9da5=_['merge']({},_0x1a9da5,_0x1a2dd8[_0x525d('0x45')]);var _0x5953ac={'where':_0x1a9da5[_0x525d('0x40')]};return db['Network'][_0x525d('0x28')](_0x5953ac)[_0x525d('0x19')](function(_0x2915ea){_0x58377f[_0x525d('0x28')]=_0x2915ea;if(_0x1a2dd8['query']['includeAll']){_0x1a9da5['include']=[{'all':!![]}];}return db[_0x525d('0x33')][_0x525d('0x46')](_0x1a9da5);})[_0x525d('0x19')](function(_0x78d409){_0x58377f[_0x525d('0x47')]=_0x78d409;return _0x58377f;})[_0x525d('0x19')](respondWithFilteredResult(_0x2522ab,_0x1a9da5))[_0x525d('0x22')](handleError(_0x2522ab,null));};exports['show']=function(_0x556599,_0x28ed9f){var _0x2abb17={'raw':!![],'where':{'id':_0x556599['params']['id']}},_0x51ad3e={};_0x51ad3e[_0x525d('0x37')]=_['keys'](db['Network'][_0x525d('0x34')]);_0x51ad3e[_0x525d('0x38')]=_[_0x525d('0x39')](_0x556599[_0x525d('0x38')]);_0x51ad3e[_0x525d('0x3a')]=_[_0x525d('0x3b')](_0x51ad3e[_0x525d('0x37')],_0x51ad3e[_0x525d('0x38')]);_0x2abb17['attributes']=_[_0x525d('0x3b')](_0x51ad3e[_0x525d('0x37')],qs[_0x525d('0x3d')](_0x556599['query'][_0x525d('0x3d')]));_0x2abb17[_0x525d('0x3c')]=_0x2abb17[_0x525d('0x3c')]['length']?_0x2abb17[_0x525d('0x3c')]:_0x51ad3e['model'];if(_0x556599[_0x525d('0x38')][_0x525d('0x48')]){_0x2abb17[_0x525d('0x49')]=[{'all':!![]}];}_0x2abb17=_[_0x525d('0x42')]({},_0x2abb17,_0x556599['options']);return db[_0x525d('0x33')][_0x525d('0x4a')](_0x2abb17)[_0x525d('0x19')](handleEntityNotFound(_0x28ed9f,null))[_0x525d('0x19')](respondWithResult(_0x28ed9f,null))['catch'](handleError(_0x28ed9f,null));};exports[_0x525d('0x4b')]=function(_0x2354d7,_0x451557,_0x29f165){var _0x2544df;return db[_0x525d('0x4c')][_0x525d('0x4d')](function(_0x1a8857){return db['Network'][_0x525d('0x4b')](_0x2354d7[_0x525d('0x4e')],{'raw':!![]})['then'](function(_0x565f1f){_0x2544df=_0x565f1f;return db[_0x525d('0x33')]['findAll']({'where':{'type':_0x2354d7[_0x525d('0x4e')][_0x525d('0x36')]},'raw':!![]});})[_0x525d('0x19')](function(_0x5e095e){if(_0x2544df['type'][_0x525d('0x4f')]()=='STUN'){var _0x1437dc=fs[_0x525d('0x50')](path[_0x525d('0x51')](config[_0x525d('0x52')],_0x525d('0x53')),'utf8');var _0x451aeb=ejs[_0x525d('0x54')](_0x1437dc,{'networks':_0x5e095e||[]});fs[_0x525d('0x55')](_0x525d('0x56'),_0x451aeb);return respondWithRpcPromise('Reload',_0x525d('0x4b'),{'module':_0x525d('0x57')});}else if(_0x2544df[_0x525d('0x36')]['toUpperCase']()==_0x525d('0x58')){var _0x51ef08=fs[_0x525d('0x50')](path[_0x525d('0x51')](config[_0x525d('0x52')],_0x525d('0x59')),_0x525d('0x5a'));var _0x31b525=ejs[_0x525d('0x54')](_0x51ef08,{'networks':_0x5e095e||[]});fs['writeFileSync'](_0x525d('0x5b'),_0x31b525);return respondWithRpcPromise(_0x525d('0x5c'),_0x525d('0x4b'),{'module':'res_stun_monitor.so'});}else{var _0x3b5f79=fs[_0x525d('0x50')](path[_0x525d('0x51')](config['root'],'server/files/templates/network.ejs'),_0x525d('0x5a'));var _0x12f6f9=ejs[_0x525d('0x54')](_0x3b5f79,{'networks':_0x5e095e||[]});fs[_0x525d('0x55')](util['format'](_0x525d('0x5d'),_0x2354d7['body'][_0x525d('0x36')][_0x525d('0x5e')]()),_0x12f6f9);return respondWithRpcPromise('Reload',_0x525d('0x4b'),{'module':_0x525d('0x5f')});}return null;})[_0x525d('0x19')](function(){return _0x2544df;});})[_0x525d('0x19')](respondWithResult(_0x451557,0xc9))[_0x525d('0x22')](handleError(_0x451557,null));};exports[_0x525d('0x2c')]=function(_0x52391f,_0x2409c4,_0x5adece){var _0x5f1417;return db['sequelize'][_0x525d('0x4d')](function(_0x6dd3fe){return db['Network'][_0x525d('0x4a')]({'where':{'id':_0x52391f['params']['id']}})[_0x525d('0x19')](handleEntityNotFound(_0x2409c4,null))[_0x525d('0x19')](saveUpdates(_0x52391f['body'],null))[_0x525d('0x19')](function(_0x387663){if(_0x387663){_0x5f1417=_0x387663;return db['Network'][_0x525d('0x46')]({'where':{'type':_0x5f1417['type']},'raw':!![]});}return null;})[_0x525d('0x19')](function(_0x2bcbbc){if(_0x5f1417['type'][_0x525d('0x4f')]()==_0x525d('0x60')){var _0xe75317=fs[_0x525d('0x50')](path['join'](config[_0x525d('0x52')],_0x525d('0x53')),_0x525d('0x5a'));var _0x485023=ejs[_0x525d('0x54')](_0xe75317,{'networks':_0x2bcbbc||[]});fs[_0x525d('0x55')](_0x525d('0x56'),_0x485023);return respondWithRpcPromise(_0x525d('0x5c'),'update',{'module':'res_stun_monitor.so'});}else if(_0x5f1417[_0x525d('0x36')][_0x525d('0x4f')]()=='TURN'){var _0x5ad7a8=fs[_0x525d('0x50')](path['join'](config['root'],_0x525d('0x59')),_0x525d('0x5a'));var _0x2dd9ff=ejs[_0x525d('0x54')](_0x5ad7a8,{'networks':_0x2bcbbc||[]});fs['writeFileSync'](_0x525d('0x5b'),_0x2dd9ff);return respondWithRpcPromise(_0x525d('0x5c'),'update',{'module':_0x525d('0x57')});}else{var _0x4a7533=fs['readFileSync'](path['join'](config['root'],'server/files/templates/network.ejs'),_0x525d('0x5a'));var _0x28ce85=ejs[_0x525d('0x54')](_0x4a7533,{'networks':_0x2bcbbc||[]});fs['writeFileSync'](util[_0x525d('0x61')](_0x525d('0x5d'),_0x52391f[_0x525d('0x4e')]['type'][_0x525d('0x5e')]()),_0x28ce85);return respondWithRpcPromise(_0x525d('0x5c'),_0x525d('0x2c'),{'module':_0x525d('0x5f')});}return null;})[_0x525d('0x19')](function(_0x23fa91){if(_0x23fa91){return _0x5f1417;}return null;});})[_0x525d('0x19')](respondWithResult(_0x2409c4,null))[_0x525d('0x22')](handleError(_0x2409c4,null));};exports[_0x525d('0x2d')]=function(_0x2adba1,_0x4bc777,_0x50aaa3){var _0x422f28;return db[_0x525d('0x33')][_0x525d('0x4a')]({'where':{'id':_0x2adba1[_0x525d('0x62')]['id']}})[_0x525d('0x19')](function(_0x285e6f){_0x422f28=_0x285e6f;return _0x285e6f;})['then'](handleEntityNotFound(_0x4bc777,null))[_0x525d('0x19')](removeEntity(_0x4bc777,null))['then'](function(){if(_0x422f28){return db[_0x525d('0x33')][_0x525d('0x46')]({'where':{'type':_0x422f28[_0x525d('0x36')]},'raw':!![]});}})[_0x525d('0x19')](function(_0x3c640f){if(_0x422f28[_0x525d('0x36')]['toUpperCase']()==_0x525d('0x60')){var _0x4d9d9a=fs[_0x525d('0x50')](path[_0x525d('0x51')](config[_0x525d('0x52')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x5ad7a0=ejs[_0x525d('0x54')](_0x4d9d9a,{'networks':_0x3c640f||[]});fs['writeFileSync'](_0x525d('0x56'),_0x5ad7a0);return respondWithRpcPromise('Reload','destroy',{'module':_0x525d('0x57')});}else if(_0x422f28[_0x525d('0x36')][_0x525d('0x4f')]()==_0x525d('0x58')){var _0x2d50f1=fs[_0x525d('0x50')](path[_0x525d('0x51')](config['root'],_0x525d('0x59')),_0x525d('0x5a'));var _0x4a94a1=ejs[_0x525d('0x54')](_0x2d50f1,{'networks':_0x3c640f||[]});fs['writeFileSync'](_0x525d('0x5b'),_0x4a94a1);return respondWithRpcPromise('Reload',_0x525d('0x2d'),{'module':_0x525d('0x57')});}else{var _0x42b365=fs[_0x525d('0x50')](path[_0x525d('0x51')](config[_0x525d('0x52')],'server/files/templates/network.ejs'),'utf8');var _0x13b7e4=ejs[_0x525d('0x54')](_0x42b365,{'networks':_0x3c640f||[]});fs['writeFileSync'](util[_0x525d('0x61')](_0x525d('0x5d'),_0x2adba1[_0x525d('0x4e')][_0x525d('0x36')]['toLowerCase']()),_0x13b7e4);return respondWithRpcPromise('Reload',_0x525d('0x2d'),{'module':_0x525d('0x5f')});}return null;})[_0x525d('0x22')](handleError(_0x4bc777,null));};
\ No newline at end of file
index 31cc799..d8da54c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./network.attributes','exports','Network','util'];(function(_0x481ddd,_0x457460){var _0x1c2de4=function(_0x4d6ddd){while(--_0x4d6ddd){_0x481ddd['push'](_0x481ddd['shift']());}};_0x1c2de4(++_0x457460);}(_0xedd9,0xfc));var _0x9edd=function(_0x258aca,_0x45c459){_0x258aca=_0x258aca-0x0;var _0x4f9944=_0xedd9[_0x258aca];return _0x4f9944;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87ae=['define','Network','../../config/logger','bluebird','request-promise','path','../../config/environment','./network.attributes','exports'];(function(_0xce958f,_0x4ce2aa){var _0x24d6e1=function(_0x2b333c){while(--_0x2b333c){_0xce958f['push'](_0xce958f['shift']());}};_0x24d6e1(++_0x4ce2aa);}(_0x87ae,0xf5));var _0xe87a=function(_0x3f0b30,_0x159bc8){_0x3f0b30=_0x3f0b30-0x0;var _0x2748a5=_0x87ae[_0x3f0b30];return _0x2748a5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe87a('0x0'))('api');var moment=require('moment');var BPromise=require(_0xe87a('0x1'));var rp=require(_0xe87a('0x2'));var fs=require('fs');var path=require(_0xe87a('0x3'));var rimraf=require('rimraf');var config=require(_0xe87a('0x4'));var attributes=require(_0xe87a('0x5'));module[_0xe87a('0x6')]=function(_0x5ef978,_0x4b9934){return _0x5ef978[_0xe87a('0x7')](_0xe87a('0x8'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f3be94..cc102d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3db2de,_0x959728){var _0x2cfaac=function(_0x27c1a9){while(--_0x27c1a9){_0x3db2de['push'](_0x3db2de['shift']());}};_0x2cfaac(++_0x959728);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x7a54,0x106));var _0x47a5=function(_0x2464e0,_0x50ac8d){_0x2464e0=_0x2464e0-0x0;var _0x362615=_0x7a54[_0x2464e0];return _0x362615;};'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 8f02c69..6128347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe301=['../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','describe','/:id','show','getAnswers','getApplications','/:id/interactions','getInteractions','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','/:id/applications','/:id/users','addAgents','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x20c6f1,_0x21fa65){var _0x43c3bf=function(_0x40c2dd){while(--_0x40c2dd){_0x20c6f1['push'](_0x20c6f1['shift']());}};_0x43c3bf(++_0x21fa65);}(_0xe301,0x95));var _0x1e30=function(_0x594847,_0x47b321){_0x594847=_0x594847-0x0;var _0xd05d17=_0xe301[_0x594847];return _0xd05d17;};'use strict';var multer=require('multer');var util=require(_0x1e30('0x0'));var path=require(_0x1e30('0x1'));var timeout=require(_0x1e30('0x2'));var express=require(_0x1e30('0x3'));var router=express[_0x1e30('0x4')]();var fs_extra=require(_0x1e30('0x5'));var auth=require(_0x1e30('0x6'));var interaction=require(_0x1e30('0x7'));var config=require(_0x1e30('0x8'));var controller=require(_0x1e30('0x9'));router[_0x1e30('0xa')]('/',auth[_0x1e30('0xb')](),controller[_0x1e30('0xc')]);router[_0x1e30('0xa')]('/describe',auth[_0x1e30('0xb')](),controller[_0x1e30('0xd')]);router['get'](_0x1e30('0xe'),auth[_0x1e30('0xb')](),controller[_0x1e30('0xf')]);router[_0x1e30('0xa')]('/:id/dispositions',auth[_0x1e30('0xb')](),controller['getDispositions']);router[_0x1e30('0xa')]('/:id/canned_answers',auth[_0x1e30('0xb')](),controller[_0x1e30('0x10')]);router['get']('/:id/applications',auth[_0x1e30('0xb')](),controller[_0x1e30('0x11')]);router[_0x1e30('0xa')](_0x1e30('0x12'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x13')]);router['get']('/:id/users',auth[_0x1e30('0xb')](),controller[_0x1e30('0x14')]);router[_0x1e30('0x15')]('/',auth[_0x1e30('0xb')](),controller[_0x1e30('0x16')]);router[_0x1e30('0x15')]('/:id/dispositions',auth[_0x1e30('0xb')](),controller[_0x1e30('0x17')]);router[_0x1e30('0x15')](_0x1e30('0x18'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x19')]);router[_0x1e30('0x15')](_0x1e30('0x1a'),controller['notify']);router[_0x1e30('0x15')](_0x1e30('0x1b'),auth['isAuthenticated'](),controller['addApplications']);router[_0x1e30('0x15')](_0x1e30('0x1c'),auth['isAuthenticated'](),controller[_0x1e30('0x1d')]);router[_0x1e30('0x15')](_0x1e30('0x1e'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x1f')]);router[_0x1e30('0x20')](_0x1e30('0xe'),auth['isAuthenticated'](),controller[_0x1e30('0x21')]);router[_0x1e30('0x22')](_0x1e30('0xe'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x23')]);router[_0x1e30('0x22')]('/:id/dispositions',auth[_0x1e30('0xb')](),controller[_0x1e30('0x24')]);router[_0x1e30('0x22')]('/:id/canned_answers',auth[_0x1e30('0xb')](),controller[_0x1e30('0x25')]);router['delete'](_0x1e30('0x1c'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x26')]);module['exports']=router;
\ No newline at end of file
+var _0x30ce=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','/:id/canned_answers','/:id/notify','addApplications','addAgents','send','put','update','delete','destroy','removeDispositions','removeAnswers','path'];(function(_0x4c1d65,_0x510718){var _0x219772=function(_0xf0513d){while(--_0xf0513d){_0x4c1d65['push'](_0x4c1d65['shift']());}};_0x219772(++_0x510718);}(_0x30ce,0x14c));var _0xe30c=function(_0x5eef05,_0x1be989){_0x5eef05=_0x5eef05-0x0;var _0x56d4b8=_0x30ce[_0x5eef05];return _0x56d4b8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe30c('0x0'));var timeout=require(_0xe30c('0x1'));var express=require(_0xe30c('0x2'));var router=express[_0xe30c('0x3')]();var fs_extra=require(_0xe30c('0x4'));var auth=require(_0xe30c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe30c('0x6'));var controller=require(_0xe30c('0x7'));router[_0xe30c('0x8')]('/',auth[_0xe30c('0x9')](),controller[_0xe30c('0xa')]);router[_0xe30c('0x8')](_0xe30c('0xb'),auth[_0xe30c('0x9')](),controller[_0xe30c('0xc')]);router[_0xe30c('0x8')](_0xe30c('0xd'),auth[_0xe30c('0x9')](),controller['show']);router[_0xe30c('0x8')]('/:id/dispositions',auth[_0xe30c('0x9')](),controller[_0xe30c('0xe')]);router['get']('/:id/canned_answers',auth[_0xe30c('0x9')](),controller[_0xe30c('0xf')]);router[_0xe30c('0x8')](_0xe30c('0x10'),auth['isAuthenticated'](),controller[_0xe30c('0x11')]);router[_0xe30c('0x8')](_0xe30c('0x12'),auth[_0xe30c('0x9')](),controller[_0xe30c('0x13')]);router[_0xe30c('0x8')](_0xe30c('0x14'),auth[_0xe30c('0x9')](),controller[_0xe30c('0x15')]);router[_0xe30c('0x16')]('/',auth[_0xe30c('0x9')](),controller[_0xe30c('0x17')]);router['post'](_0xe30c('0x18'),auth[_0xe30c('0x9')](),controller[_0xe30c('0x19')]);router[_0xe30c('0x16')](_0xe30c('0x1a'),auth[_0xe30c('0x9')](),controller['addAnswer']);router[_0xe30c('0x16')](_0xe30c('0x1b'),controller['notify']);router[_0xe30c('0x16')]('/:id/applications',auth[_0xe30c('0x9')](),controller[_0xe30c('0x1c')]);router['post'](_0xe30c('0x14'),auth[_0xe30c('0x9')](),controller[_0xe30c('0x1d')]);router[_0xe30c('0x16')]('/:id/send',auth[_0xe30c('0x9')](),controller[_0xe30c('0x1e')]);router[_0xe30c('0x1f')](_0xe30c('0xd'),auth[_0xe30c('0x9')](),controller[_0xe30c('0x20')]);router[_0xe30c('0x21')](_0xe30c('0xd'),auth['isAuthenticated'](),controller[_0xe30c('0x22')]);router[_0xe30c('0x21')](_0xe30c('0x18'),auth['isAuthenticated'](),controller[_0xe30c('0x23')]);router['delete'](_0xe30c('0x1a'),auth[_0xe30c('0x9')](),controller[_0xe30c('0x24')]);router[_0xe30c('0x21')](_0xe30c('0x14'),auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index bc89eb5..6ee17ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x577c=['sequelize','randomstring','STRING','generate','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','mandatoryDisposition'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x577c,0xfd));var _0xc577=function(_0x27dbaa,_0x47865c){_0x27dbaa=_0x27dbaa-0x0;var _0x46a443=_0x577c[_0x27dbaa];return _0x46a443;};'use strict';var Sequelize=require(_0xc577('0x0'));var rs=require(_0xc577('0x1'));module['exports']={'name':{'type':Sequelize[_0xc577('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xc577('0x2')]},'token':{'type':Sequelize[_0xc577('0x2')],'defaultValue':function(){return rs[_0xc577('0x3')]();}},'replyUri':{'type':Sequelize[_0xc577('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xc577('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc577('0x4');}},'notificationSound':{'type':Sequelize[_0xc577('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc577('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc577('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xc577('0x2')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc577('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc577('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc577('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xc577('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc577('0x8'),'set':function(_0x2cf241){if(!_0x2cf241)this[_0xc577('0x9')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xc577('0xa'),_0x2cf241);}}};
\ No newline at end of file
+var _0x039b=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name'];(function(_0x3b74d7,_0x358965){var _0x5d7f84=function(_0x298632){while(--_0x298632){_0x3b74d7['push'](_0x3b74d7['shift']());}};_0x5d7f84(++_0x358965);}(_0x039b,0x13c));var _0xb039=function(_0x331b68,_0x295f84){_0x331b68=_0x331b68-0x0;var _0x5c45d=_0x039b[_0x331b68];return _0x5c45d;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xb039('0x0'));module[_0xb039('0x1')]={'name':{'type':Sequelize[_0xb039('0x2')],'unique':_0xb039('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xb039('0x2')]},'token':{'type':Sequelize[_0xb039('0x2')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xb039('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xb039('0x4')],'defaultValue':function(){return _0xb039('0x5');}},'notificationSound':{'type':Sequelize[_0xb039('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb039('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb039('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xb039('0x2')]},'queueTransfer':{'type':Sequelize[_0xb039('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb039('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb039('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb039('0x7')],'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[_0xb039('0x6')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4c656c){if(!_0x4c656c)this[_0xb039('0x8')]('mandatoryDispositionPauseId',null);this[_0xb039('0x8')](_0xb039('0x9'),_0x4c656c);}}};
\ No newline at end of file
index 68f0f98..ae7e8ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087d=['sox','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','UserProfileResource','name','index','Pause','mandatoryDispositionPause','OpenchannelAccount','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','keys','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OpenchannelAccounts','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addDisposition','OpenchannelAccountId','Disposition','findOne','nolimit','include','ids','addAnswer','CannedAnswer','getAnswers','rawAttributes','removeAnswers','notify','openchannel','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','OpenchannelApplication','Applications','List','applications','list','orderBy','priority','asc','account','contact','lastName','threadId','OpenchannelInteraction','externalUrl','spread','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','addApplications','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','addAgents','omit','emit','userOpenchannelAccount:save','isArray','userOpenchannelAccount:remove','getAgents','send','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path'];(function(_0x1c93dd,_0x14cd80){var _0x14ca04=function(_0x302931){while(--_0x302931){_0x1c93dd['push'](_0x1c93dd['shift']());}};_0x14ca04(++_0x14cd80);}(_0x087d,0xb4));var _0xd087=function(_0x4f85ee,_0x1f7e27){_0x4f85ee=_0x4f85ee-0x0;var _0x264332=_0x087d[_0x4f85ee];return _0x264332;};'use strict';var emlformat=require(_0xd087('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd087('0x1'));var jsonpatch=require(_0xd087('0x2'));var rp=require(_0xd087('0x3'));var moment=require(_0xd087('0x4'));var BPromise=require(_0xd087('0x5'));var Mustache=require(_0xd087('0x6'));var util=require('util');var path=require(_0xd087('0x7'));var sox=require(_0xd087('0x8'));var csv=require('to-csv');var ejs=require(_0xd087('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd087('0xa'));var squel=require(_0xd087('0xb'));var crypto=require(_0xd087('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd087('0xd'));var toCsv=require(_0xd087('0xe'));var querystring=require('querystring');var Papa=require(_0xd087('0xf'));var Redis=require(_0xd087('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd087('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd087('0x12'));var logger=require(_0xd087('0x13'))(_0xd087('0x14'));var utils=require(_0xd087('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd087('0x16'))['db'];config[_0xd087('0x17')]=_[_0xd087('0x18')](config[_0xd087('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xd087('0x19'))(new Redis(config[_0xd087('0x17')]));require('./openchannelAccount.socket')[_0xd087('0x1a')](socket);var jayson=require(_0xd087('0x1b'));var client=jayson[_0xd087('0x1c')][_0xd087('0x1d')]({'port':0x232c});var client9002=jayson[_0xd087('0x1c')][_0xd087('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4170cc,_0x24e67f,_0x2c2183,_0x5951a0){return new BPromise(function(_0x1398d2,_0x33bd11){var _0x5f2b0e=_0x5951a0||client;return _0x5f2b0e['request'](_0x4170cc,_0x2c2183)[_0xd087('0x1e')](function(_0x1a206d){logger[_0xd087('0x1f')](_0xd087('0x20'),_0x24e67f,_0xd087('0x21'));logger[_0xd087('0x22')](_0xd087('0x23'),_0x24e67f,_0xd087('0x21'),JSON[_0xd087('0x24')](_0x1a206d));if(_0x1a206d[_0xd087('0x25')]){if(_0x1a206d[_0xd087('0x25')]['code']===0x1f4){logger[_0xd087('0x25')](_0xd087('0x20'),_0x24e67f,_0x1a206d[_0xd087('0x25')]['message']);return _0x33bd11(_0x1a206d[_0xd087('0x25')][_0xd087('0x26')]);}logger[_0xd087('0x25')](_0xd087('0x20'),_0x24e67f,_0x1a206d[_0xd087('0x25')][_0xd087('0x26')]);return _0x1398d2(_0x1a206d[_0xd087('0x25')][_0xd087('0x26')]);}else{logger[_0xd087('0x1f')](_0xd087('0x20'),_0x24e67f,_0xd087('0x21'));_0x1398d2(_0x1a206d[_0xd087('0x27')][_0xd087('0x26')]);}})[_0xd087('0x28')](function(_0x225578){logger[_0xd087('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x24e67f,_0x225578);_0x33bd11(_0x225578);});});}function respondWithStatusCode(_0x2e3acf,_0x3a58e2){_0x3a58e2=_0x3a58e2||0xcc;return function(_0x4bbc30){if(_0x4bbc30){return _0x2e3acf[_0xd087('0x29')](_0x3a58e2);}return _0x2e3acf[_0xd087('0x2a')](_0x3a58e2)[_0xd087('0x2b')]();};}function respondWithResult(_0x125df3,_0x529373){_0x529373=_0x529373||0xc8;return function(_0x5c8aff){if(_0x5c8aff){return _0x125df3[_0xd087('0x2a')](_0x529373)[_0xd087('0x2c')](_0x5c8aff);}};}function respondWithFilteredResult(_0x9083f9,_0x1bf71d){return function(_0x506ef7){if(_0x506ef7){var _0x2efec3=typeof _0x1bf71d['offset']===_0xd087('0x2d')&&typeof _0x1bf71d[_0xd087('0x2e')]===_0xd087('0x2d');var _0xf92509=_0x506ef7[_0xd087('0x2f')];var _0x30a797=_0x2efec3?0x0:_0x1bf71d[_0xd087('0x30')];var _0x28703f=_0x2efec3?_0x506ef7['count']:_0x1bf71d[_0xd087('0x30')]+_0x1bf71d['limit'];var _0x5239a8;if(_0x28703f>=_0xf92509){_0x28703f=_0xf92509;_0x5239a8=0xc8;}else{_0x5239a8=0xce;}_0x9083f9[_0xd087('0x2a')](_0x5239a8);return _0x9083f9[_0xd087('0x31')](_0xd087('0x32'),_0x30a797+'-'+_0x28703f+'/'+_0xf92509)[_0xd087('0x2c')](_0x506ef7);}return null;};}function patchUpdates(_0xca4bca){return function(_0x42f23a){try{jsonpatch[_0xd087('0x33')](_0x42f23a,_0xca4bca,!![]);}catch(_0x24e602){return BPromise[_0xd087('0x34')](_0x24e602);}return _0x42f23a['save']();};}function saveUpdates(_0x5dd7dd,_0xd3aa25){return function(_0x4d11b5){if(_0x4d11b5){return _0x4d11b5[_0xd087('0x35')](_0x5dd7dd)[_0xd087('0x1e')](function(_0x575985){return _0x575985;});}return null;};}function removeEntity(_0x5cf0eb,_0x1133e5){return function(_0x31264d){if(_0x31264d){return _0x31264d[_0xd087('0x36')]()[_0xd087('0x1e')](function(){var _0x3efefd=_0x31264d['get']({'plain':!![]});var _0x4a9178='OpenchannelAccounts';return db[_0xd087('0x37')][_0xd087('0x36')]({'where':{'type':_0x4a9178,'resourceId':_0x3efefd['id']}})['then'](function(){return _0x31264d;});})[_0xd087('0x1e')](function(){_0x5cf0eb[_0xd087('0x2a')](0xcc)[_0xd087('0x2b')]();});}};}function handleEntityNotFound(_0x558734,_0x98d7f7){return function(_0x227bd6){if(!_0x227bd6){_0x558734['sendStatus'](0x194);}return _0x227bd6;};}function handleError(_0x23291a,_0x3a7ac8){_0x3a7ac8=_0x3a7ac8||0x1f4;return function(_0xea2616){logger[_0xd087('0x25')](_0xea2616['stack']);if(_0xea2616[_0xd087('0x38')]){delete _0xea2616[_0xd087('0x38')];}_0x23291a['status'](_0x3a7ac8)['send'](_0xea2616);};}exports[_0xd087('0x39')]=function(_0x1dd5b0,_0x58313a){var _0x1051ce={'include':[{'model':db[_0xd087('0x3a')],'as':_0xd087('0x3b')}]},_0x67158={},_0x1bfbc5={'count':0x0,'rows':[]};var _0x2709b8=_['map'](db[_0xd087('0x3c')]['rawAttributes'],function(_0x32c723){return{'name':_0x32c723[_0xd087('0x3d')],'type':_0x32c723[_0xd087('0x3e')][_0xd087('0x3f')]};});_0x67158[_0xd087('0x40')]=_[_0xd087('0x41')](_0x2709b8,_0xd087('0x38'));_0x67158[_0xd087('0x42')]=_['keys'](_0x1dd5b0[_0xd087('0x42')]);_0x67158['filters']=_[_0xd087('0x43')](_0x67158['model'],_0x67158[_0xd087('0x42')]);_0x1051ce[_0xd087('0x44')]=_[_0xd087('0x43')](_0x67158[_0xd087('0x40')],qs[_0xd087('0x45')](_0x1dd5b0[_0xd087('0x42')][_0xd087('0x45')]));_0x1051ce['attributes']=_0x1051ce['attributes'][_0xd087('0x46')]?_0x1051ce[_0xd087('0x44')]:_0x67158['model'];if(!_0x1dd5b0[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x1051ce[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x1dd5b0['query']['limit']);_0x1051ce['offset']=qs[_0xd087('0x30')](_0x1dd5b0[_0xd087('0x42')][_0xd087('0x30')]);}_0x1051ce[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x1dd5b0[_0xd087('0x42')][_0xd087('0x49')]);_0x1051ce[_0xd087('0x4a')]=qs['filters'](_[_0xd087('0x4b')](_0x1dd5b0[_0xd087('0x42')],_0x67158[_0xd087('0x4c')]),_0x2709b8);if(_0x1dd5b0[_0xd087('0x42')]['filter']){_0x1051ce[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x1051ce['where'],{'$or':_[_0xd087('0x41')](_0x2709b8,function(_0x528dc8){if(_0x528dc8[_0xd087('0x3e')]!==_0xd087('0x4e')){var _0x24c593={};_0x24c593[_0x528dc8[_0xd087('0x38')]]={'$like':'%'+_0x1dd5b0[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x24c593;}})});}_0x1051ce=_[_0xd087('0x4d')]({},_0x1051ce,_0x1dd5b0[_0xd087('0x50')]);var _0x15eaae={'where':_0x1051ce[_0xd087('0x4a')]};return db['OpenchannelAccount'][_0xd087('0x2f')](_0x15eaae)['then'](function(_0x522d13){_0x1bfbc5[_0xd087('0x2f')]=_0x522d13;if(_0x1dd5b0['query'][_0xd087('0x51')]){_0x1051ce['include']=[{'all':!![]}];}return db[_0xd087('0x3c')][_0xd087('0x52')](_0x1051ce);})[_0xd087('0x1e')](function(_0x5e31db){_0x1bfbc5[_0xd087('0x53')]=_0x5e31db;return _0x1bfbc5;})[_0xd087('0x1e')](respondWithFilteredResult(_0x58313a,_0x1051ce))[_0xd087('0x28')](handleError(_0x58313a,null));};exports['show']=function(_0x29856e,_0x3f5e77){var _0x42907f={'raw':![],'where':{'id':_0x29856e[_0xd087('0x54')]['id']},'include':[{'model':db[_0xd087('0x3a')],'as':_0xd087('0x3b')}]},_0x23c947={};_0x23c947['model']=_['keys'](db[_0xd087('0x3c')]['rawAttributes']);_0x23c947[_0xd087('0x42')]=_[_0xd087('0x55')](_0x29856e[_0xd087('0x42')]);_0x23c947['filters']=_[_0xd087('0x43')](_0x23c947[_0xd087('0x40')],_0x23c947['query']);_0x42907f[_0xd087('0x44')]=_[_0xd087('0x43')](_0x23c947['model'],qs[_0xd087('0x45')](_0x29856e[_0xd087('0x42')]['fields']));_0x42907f['attributes']=_0x42907f[_0xd087('0x44')][_0xd087('0x46')]?_0x42907f[_0xd087('0x44')]:_0x23c947[_0xd087('0x40')];if(_0x29856e[_0xd087('0x42')][_0xd087('0x51')]){_0x42907f['include']=[{'all':!![]}];}_0x42907f=_[_0xd087('0x4d')]({},_0x42907f,_0x29856e[_0xd087('0x50')]);return db[_0xd087('0x3c')]['find'](_0x42907f)[_0xd087('0x1e')](handleEntityNotFound(_0x3f5e77,null))[_0xd087('0x1e')](respondWithResult(_0x3f5e77,null))['catch'](handleError(_0x3f5e77,null));};exports['create']=function(_0x25f27c,_0x1600a3){return db[_0xd087('0x3c')][_0xd087('0x56')](_0x25f27c['body'],{})['then'](function(_0x25bbde){var _0x272406=_0x25f27c[_0xd087('0x57')][_0xd087('0x58')]({'plain':!![]});if(!_0x272406)throw new Error(_0xd087('0x59'));if(_0x272406[_0xd087('0x5a')]==='user'){var _0x426fe3=_0x25bbde['get']({'plain':!![]});var _0x2b430d=_0xd087('0x5b');return db['UserProfileSection'][_0xd087('0x5c')]({'where':{'name':_0x2b430d,'userProfileId':_0x272406[_0xd087('0x5d')]},'raw':!![]})[_0xd087('0x1e')](function(_0x308541){if(_0x308541&&_0x308541[_0xd087('0x5e')]===0x0){return db[_0xd087('0x37')][_0xd087('0x56')]({'name':_0x426fe3[_0xd087('0x38')],'resourceId':_0x426fe3['id'],'type':_0x308541[_0xd087('0x38')],'sectionId':_0x308541['id']},{})['then'](function(){return _0x25bbde;});}else{return _0x25bbde;}})[_0xd087('0x28')](function(_0x2e325a){logger[_0xd087('0x25')](_0xd087('0x5f'),_0x2e325a);throw _0x2e325a;});}return _0x25bbde;})[_0xd087('0x1e')](respondWithResult(_0x1600a3,0xc9))[_0xd087('0x28')](handleError(_0x1600a3,null));};exports['update']=function(_0xab811d,_0x5cc819){if(_0xab811d[_0xd087('0x60')]['id']){delete _0xab811d['body']['id'];}return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0xab811d['params']['id']},'include':[{'model':db['Pause'],'as':_0xd087('0x3b')}]})[_0xd087('0x1e')](handleEntityNotFound(_0x5cc819,null))['then'](saveUpdates(_0xab811d['body'],null))[_0xd087('0x1e')](respondWithResult(_0x5cc819,null))[_0xd087('0x28')](handleError(_0x5cc819,null));};exports['destroy']=function(_0x17f980,_0x285376){return db['OpenchannelAccount'][_0xd087('0x5c')]({'where':{'id':_0x17f980[_0xd087('0x54')]['id']}})['then'](handleEntityNotFound(_0x285376,null))['then'](removeEntity(_0x285376,null))[_0xd087('0x28')](handleError(_0x285376,null));};exports['describe']=function(_0x5ae632,_0x8d17){return db[_0xd087('0x3c')]['describe']()[_0xd087('0x1e')](respondWithResult(_0x8d17,null))[_0xd087('0x28')](handleError(_0x8d17,null));};exports[_0xd087('0x61')]=function(_0x435727,_0xc4de42,_0x4ef8ca){if(_0x435727[_0xd087('0x60')]['id']){delete _0x435727[_0xd087('0x60')]['id'];}return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x435727[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0xc4de42,null))[_0xd087('0x1e')](function(_0x4afb2d){if(_0x4afb2d){_0x435727['body'][_0xd087('0x62')]=_0x4afb2d['id'];return db[_0xd087('0x63')][_0xd087('0x56')](_0x435727[_0xd087('0x60')]);}})['then'](respondWithResult(_0xc4de42,null))[_0xd087('0x28')](handleError(_0xc4de42,null));};exports['getDispositions']=function(_0x3895c5,_0x36001a,_0x49ee9b){var _0x170318={'raw':![],'where':{}};var _0x520657={};var _0x6bb440={'count':0x0,'rows':[]};return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x3895c5[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x36001a,null))[_0xd087('0x1e')](function(_0x626a0b){if(_0x626a0b){_0x520657['model']=_['keys'](db[_0xd087('0x63')]['rawAttributes']);_0x520657[_0xd087('0x42')]=_['keys'](_0x3895c5[_0xd087('0x42')]);_0x520657['filters']=_[_0xd087('0x43')](_0x520657[_0xd087('0x40')],_0x520657[_0xd087('0x42')]);_0x170318['attributes']=_[_0xd087('0x43')](_0x520657['model'],qs['fields'](_0x3895c5[_0xd087('0x42')][_0xd087('0x45')]));_0x170318[_0xd087('0x44')]=_0x170318[_0xd087('0x44')][_0xd087('0x46')]?_0x170318[_0xd087('0x44')]:_0x520657[_0xd087('0x40')];if(!_0x3895c5['query'][_0xd087('0x47')](_0xd087('0x65'))){_0x170318['limit']=qs['limit'](_0x3895c5['query'][_0xd087('0x2e')]);_0x170318['offset']=qs[_0xd087('0x30')](_0x3895c5[_0xd087('0x42')]['offset']);}_0x170318[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x3895c5['query'][_0xd087('0x49')]);_0x170318[_0xd087('0x4a')]=qs[_0xd087('0x4c')](_[_0xd087('0x4b')](_0x3895c5['query'],_0x520657[_0xd087('0x4c')]));_0x170318[_0xd087('0x4a')][_0xd087('0x62')]=_0x626a0b['id'];if(_0x3895c5['query'][_0xd087('0x4f')]){_0x170318[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x170318[_0xd087('0x4a')],{'$or':_['map'](_0x170318[_0xd087('0x44')],function(_0x377fc4){var _0x2e77bd={};_0x2e77bd[_0x377fc4]={'$like':'%'+_0x3895c5[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x2e77bd;})});}_0x170318=_[_0xd087('0x4d')]({},_0x170318,_0x3895c5[_0xd087('0x50')]);return db['Disposition'][_0xd087('0x2f')]({'where':_0x170318[_0xd087('0x4a')]})[_0xd087('0x1e')](function(_0x4e4397){_0x6bb440[_0xd087('0x2f')]=_0x4e4397;if(_0x3895c5[_0xd087('0x42')]['includeAll']){_0x170318[_0xd087('0x66')]=[{'all':!![]}];}return db[_0xd087('0x63')]['findAll'](_0x170318);})[_0xd087('0x1e')](function(_0x52c685){_0x6bb440['rows']=_0x52c685;return _0x6bb440;});}})[_0xd087('0x1e')](respondWithFilteredResult(_0x36001a,_0x170318))[_0xd087('0x28')](handleError(_0x36001a,null));};exports['removeDispositions']=function(_0x18e53a,_0x36862c,_0x2d3c62){return db['OpenchannelAccount']['find']({'where':{'id':_0x18e53a['params']['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x36862c,null))[_0xd087('0x1e')](function(_0xcb54d7){if(_0xcb54d7){return _0xcb54d7['removeDispositions'](_0x18e53a['query'][_0xd087('0x67')]);}})[_0xd087('0x1e')](respondWithStatusCode(_0x36862c,null))[_0xd087('0x28')](handleError(_0x36862c,null));};exports[_0xd087('0x68')]=function(_0x46e5b7,_0x25a906,_0x144627){if(_0x46e5b7[_0xd087('0x60')]['id']){delete _0x46e5b7['body']['id'];}return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x46e5b7[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x25a906,null))[_0xd087('0x1e')](function(_0x3ce29c){if(_0x3ce29c){_0x46e5b7[_0xd087('0x60')][_0xd087('0x62')]=_0x3ce29c['id'];return db[_0xd087('0x69')][_0xd087('0x56')](_0x46e5b7[_0xd087('0x60')]);}})[_0xd087('0x1e')](respondWithResult(_0x25a906,null))[_0xd087('0x28')](handleError(_0x25a906,null));};exports[_0xd087('0x6a')]=function(_0x39ba01,_0xda90f8,_0x22cc8e){var _0x24850b={'raw':![],'where':{}};var _0x461b5f={};var _0x1d6ef1={'count':0x0,'rows':[]};return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x39ba01[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0xda90f8,null))[_0xd087('0x1e')](function(_0x311c96){if(_0x311c96){_0x461b5f[_0xd087('0x40')]=_[_0xd087('0x55')](db[_0xd087('0x69')][_0xd087('0x6b')]);_0x461b5f[_0xd087('0x42')]=_[_0xd087('0x55')](_0x39ba01[_0xd087('0x42')]);_0x461b5f[_0xd087('0x4c')]=_[_0xd087('0x43')](_0x461b5f['model'],_0x461b5f[_0xd087('0x42')]);_0x24850b[_0xd087('0x44')]=_[_0xd087('0x43')](_0x461b5f[_0xd087('0x40')],qs[_0xd087('0x45')](_0x39ba01['query'][_0xd087('0x45')]));_0x24850b[_0xd087('0x44')]=_0x24850b['attributes'][_0xd087('0x46')]?_0x24850b[_0xd087('0x44')]:_0x461b5f[_0xd087('0x40')];if(!_0x39ba01[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x24850b[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x39ba01[_0xd087('0x42')]['limit']);_0x24850b['offset']=qs['offset'](_0x39ba01[_0xd087('0x42')][_0xd087('0x30')]);}_0x24850b['order']=qs[_0xd087('0x49')](_0x39ba01[_0xd087('0x42')][_0xd087('0x49')]);_0x24850b['where']=qs['filters'](_[_0xd087('0x4b')](_0x39ba01[_0xd087('0x42')],_0x461b5f[_0xd087('0x4c')]));_0x24850b[_0xd087('0x4a')][_0xd087('0x62')]=_0x311c96['id'];if(_0x39ba01['query'][_0xd087('0x4f')]){_0x24850b[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x24850b[_0xd087('0x4a')],{'$or':_[_0xd087('0x41')](_0x24850b[_0xd087('0x44')],function(_0x3d0ab5){var _0x190b5c={};_0x190b5c[_0x3d0ab5]={'$like':'%'+_0x39ba01[_0xd087('0x42')]['filter']+'%'};return _0x190b5c;})});}_0x24850b=_[_0xd087('0x4d')]({},_0x24850b,_0x39ba01[_0xd087('0x50')]);return db[_0xd087('0x69')][_0xd087('0x2f')]({'where':_0x24850b['where']})[_0xd087('0x1e')](function(_0x209d8a){_0x1d6ef1[_0xd087('0x2f')]=_0x209d8a;if(_0x39ba01[_0xd087('0x42')]['includeAll']){_0x24850b[_0xd087('0x66')]=[{'all':!![]}];}return db[_0xd087('0x69')]['findAll'](_0x24850b);})[_0xd087('0x1e')](function(_0x4eae90){_0x1d6ef1[_0xd087('0x53')]=_0x4eae90;return _0x1d6ef1;});}})[_0xd087('0x1e')](respondWithFilteredResult(_0xda90f8,_0x24850b))[_0xd087('0x28')](handleError(_0xda90f8,null));};exports[_0xd087('0x6c')]=function(_0x1aa22d,_0x539a5e,_0x599b15){return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x1aa22d[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x539a5e,null))[_0xd087('0x1e')](function(_0x18ad54){if(_0x18ad54){return _0x18ad54[_0xd087('0x6c')](_0x1aa22d[_0xd087('0x42')]['ids']);}})[_0xd087('0x1e')](respondWithStatusCode(_0x539a5e,null))[_0xd087('0x28')](handleError(_0x539a5e,null));};exports[_0xd087('0x6d')]=function(_0x5dd20d,_0x5cd51f,_0x36babf){var _0x58e487={'body':_0x5dd20d[_0xd087('0x60')],'channel':_0xd087('0x6e')};var _0x140af9=[];var _0x5c52ec=[];var _0x2f828b={};var _0x2ba6f8=![];return db[_0xd087('0x6f')][_0xd087('0x70')]()[_0xd087('0x1e')](function(_0x1f3fe7){if(!_0x1f3fe7){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x73'));}_0x140af9=_[_0xd087('0x74')](_[_0xd087('0x55')](_0x1f3fe7),[_0xd087('0x75'),_0xd087('0x76')]);_0x5c52ec=_[_0xd087('0x74')](_[_0xd087('0x55')](_0x1f3fe7),[_0xd087('0x75'),_0xd087('0x76'),_0xd087('0x77'),_0xd087('0x78')]);if(_0x5dd20d[_0xd087('0x60')]['id']){delete _0x5dd20d['body']['id'];}if(_[_0xd087('0x79')](_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')])){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))]('from\x20is\x20mandatory');}if(_[_0xd087('0x79')](_0x5dd20d[_0xd087('0x60')][_0xd087('0x60')])||_0x5dd20d[_0xd087('0x60')][_0xd087('0x60')]===''){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x7b'));}if(_[_0xd087('0x79')](_0x5dd20d[_0xd087('0x60')][_0xd087('0x7c')])){throw new db['Sequelize'][(_0xd087('0x72'))](_0xd087('0x7d')+_0x5c52ec);}if(!_[_0xd087('0x7e')](_0x5c52ec,_0x5dd20d[_0xd087('0x60')][_0xd087('0x7c')])){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x7f')+_0x5c52ec);}_0x2f828b[_0x5dd20d[_0xd087('0x60')][_0xd087('0x7c')]]=_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')];})[_0xd087('0x1e')](function(){return db[_0xd087('0x3c')]['find']({'where':{'id':_0x5dd20d['params']['id']},'include':[{'model':db[_0xd087('0x80')],'as':'List','include':[{'model':db[_0xd087('0x6f')],'as':_0xd087('0x81'),'where':_0x2f828b,'limit':0x1,'order':[[_0xd087('0x76'),_0xd087('0x82')]]}]},{'model':db[_0xd087('0x83')],'as':_0xd087('0x84')}]});})['then'](handleEntityNotFound(_0x5cd51f,null))['then'](function(_0x365c2d){if(_0x365c2d&&_0x365c2d[_0xd087('0x85')]){_0x58e487['account']=_0x365c2d;_0x58e487[_0xd087('0x86')]=_0x365c2d[_0xd087('0x84')];_0x58e487[_0xd087('0x87')]=_0x365c2d[_0xd087('0x85')];_0x58e487[_0xd087('0x86')]=_[_0xd087('0x88')](_0x58e487[_0xd087('0x86')],[_0xd087('0x89')],[_0xd087('0x8a')]);if(_0x58e487[_0xd087('0x8b')][_0xd087('0x84')]){delete _0x58e487['account'][_0xd087('0x84')];}if(_0x58e487[_0xd087('0x8b')]['List']&&_0x58e487[_0xd087('0x8b')][_0xd087('0x85')]['Contacts'][_0xd087('0x46')]){return _0x58e487[_0xd087('0x8b')][_0xd087('0x85')][_0xd087('0x81')][0x0];}var _0x1bb8ed=_['defaults'](_0x5dd20d[_0xd087('0x60')],{'firstName':_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')],'ListId':_0x365c2d['ListId']});_0x1bb8ed[_0x5dd20d[_0xd087('0x60')]['mapKey']]=_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')];return db['CmContact'][_0xd087('0x56')](_0x1bb8ed,{'fields':_0x140af9,'raw':!![]});}})[_0xd087('0x1e')](handleEntityNotFound(_0x5cd51f,null))[_0xd087('0x1e')](function(_0x56d1b3){_0x58e487[_0xd087('0x8c')]=_0x56d1b3;if(_0x56d1b3){var _0xee1c30={'ContactId':_0x56d1b3['id'],'OpenchannelAccountId':_0x5dd20d[_0xd087('0x54')]['id'],'from':(_0x56d1b3['firstName']||'')+'\x20'+(_0x56d1b3[_0xd087('0x8d')]||'')};var _0x15fb7e={'OpenchannelAccountId':_0x5dd20d[_0xd087('0x54')]['id'],'closed':![]};if(_0x5dd20d['body'][_0xd087('0x8e')]){_0x15fb7e['threadId']=_0x5dd20d[_0xd087('0x60')][_0xd087('0x8e')];return db[_0xd087('0x8f')]['find']({'where':_0x15fb7e})['then'](function(_0x3fccec){if(_0x3fccec){return[_0x3fccec,![]];}_0xee1c30[_0xd087('0x8e')]=_0x5dd20d[_0xd087('0x60')][_0xd087('0x8e')];_0xee1c30['externalUrl']=_0x5dd20d[_0xd087('0x60')][_0xd087('0x90')];return db['OpenchannelInteraction'][_0xd087('0x56')](_0xee1c30)[_0xd087('0x1e')](function(_0x25ea1a){return[_0x25ea1a,!![]];});});}else{_0x15fb7e[_0xd087('0x8e')]=null;}_0x15fb7e['ContactId']=_0x56d1b3['id'];return db[_0xd087('0x8f')]['find']({'where':_0x15fb7e})[_0xd087('0x1e')](function(_0x2bf37f){if(_0x2bf37f){return[_0x2bf37f,![]];}return db[_0xd087('0x8f')][_0xd087('0x56')](_0xee1c30)['then'](function(_0x2aedc1){return[_0x2aedc1,!![]];});});}})[_0xd087('0x91')](function(_0x1489b6,_0x5418f5){if(_0x1489b6){_0x2ba6f8=_0x5418f5;if(!_0x5418f5){var _0x3793bf={'from':(_0x58e487[_0xd087('0x8c')][_0xd087('0x92')]||'')+'\x20'+(_0x58e487[_0xd087('0x8c')][_0xd087('0x8d')]||'')};if(_0x5dd20d[_0xd087('0x60')]['threadId']&&_0x5dd20d[_0xd087('0x60')]['messageId']&&_0x5dd20d[_0xd087('0x60')]['threadId']!=_0x5dd20d[_0xd087('0x60')]['messageId']){_0x3793bf['threadId']=_0x5dd20d[_0xd087('0x60')][_0xd087('0x93')];}return _0x1489b6[_0xd087('0x35')](_0x3793bf);}else{return _0x1489b6;}}})[_0xd087('0x1e')](function(_0x328021){_0x58e487[_0xd087('0x94')]=_0x328021['get']({'plain':!![]});_0x58e487[_0xd087('0x94')][_0xd087('0x95')]=_0x2ba6f8;if(_0x58e487[_0xd087('0x94')][_0xd087('0x95')]){if(_0x58e487[_0xd087('0x8b')][_0xd087('0x96')]){_0x58e487[_0xd087('0x86')][_0xd087('0x97')]({'id':0x0,'priority':_0x58e487[_0xd087('0x86')]['length']+0x1,'app':_0xd087('0x98'),'appdata':_0xd087('0x99'),'interval':_0xd087('0x9a')});}}return db[_0xd087('0x9b')][_0xd087('0x56')]({'body':_0x5dd20d[_0xd087('0x60')][_0xd087('0x60')],'OpenchannelAccountId':_0x5dd20d[_0xd087('0x54')]['id'],'OpenchannelInteractionId':_0x328021['id'],'direction':'in','ContactId':_0x58e487[_0xd087('0x8c')]['id'],'AttachmentId':_0x5dd20d[_0xd087('0x60')][_0xd087('0x9c')]});})['then'](function(_0x335e5f){_0x58e487[_0xd087('0x26')]=_0x335e5f;if(_0x58e487[_0xd087('0x94')][_0xd087('0x9d')]){return db[_0xd087('0x9e')][_0xd087('0x5c')]({'attributes':['id',_0xd087('0x38')],'where':{'id':_0x58e487['interaction'][_0xd087('0x9d')]}})[_0xd087('0x1e')](function(_0x4e6e41){if(_0x4e6e41){_0x58e487['applications'][_0xd087('0x9f')]({'id':0x0,'priority':0x0,'app':_0xd087('0xa0'),'appdata':_0x4e6e41[_0xd087('0x38')]+','+(_0x58e487[_0xd087('0x8b')]['waitForTheAssignedAgent']||0xa),'interval':_0xd087('0x9a')});_0x58e487[_0xd087('0xa1')]=![];}return respondWithRpcPromise(_0xd087('0xa2'),_0xd087('0xa3'),_0x58e487);});}return respondWithRpcPromise('Start','startRouting',_0x58e487);})[_0xd087('0x1e')](function(_0xe2873){respondWithRpcPromise('EventManager',_0xd087('0xa4'),{'event':'notify','message':_0xe2873},client9002);return _0xe2873;})[_0xd087('0x1e')](respondWithResult(_0x5cd51f,null))[_0xd087('0x28')](handleError(_0x5cd51f,null));};exports[_0xd087('0xa5')]=function(_0x4b359b,_0x128fbd,_0x326a9b){return db[_0xd087('0x3c')]['findOne']({'where':{'id':_0x4b359b[_0xd087('0x54')]['id']}})['then'](handleEntityNotFound(_0x128fbd,null))['then'](function(_0x45213d){if(_0x45213d){return db['sequelize']['transaction'](function(_0x1c7756){return db[_0xd087('0x83')][_0xd087('0x36')]({'where':{'OpenchannelAccountId':_0x4b359b[_0xd087('0x54')]['id']},'transaction':_0x1c7756})['then'](function(_0x5ae2ab){var _0x2f68d6=_[_0xd087('0x41')](_0x4b359b['body'],function(_0x176c50){_0x176c50['OpenchannelAccountId']=_0x4b359b['params']['id'];return _0x176c50;});return db[_0xd087('0x83')][_0xd087('0xa6')](_0x2f68d6,{'transaction':_0x1c7756});});})[_0xd087('0x1e')](function(){return db[_0xd087('0x83')][_0xd087('0xa7')]({'where':{'OpenchannelAccountId':_0x4b359b[_0xd087('0x54')]['id']},'order':_0xd087('0x89')});});}})[_0xd087('0x1e')](respondWithResult(_0x128fbd,null))['catch'](handleError(_0x128fbd,null));};exports[_0xd087('0xa8')]=function(_0x129d34,_0x1a9dd9,_0x58a880){var _0x284618={};var _0xd2b4a2={};var _0x5c3ea5;var _0x10a29c;return db[_0xd087('0x3c')]['findOne']({'where':{'id':_0x129d34[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x1a9dd9,null))[_0xd087('0x1e')](function(_0xad89bc){if(_0xad89bc){_0x5c3ea5=_0xad89bc;_0xd2b4a2[_0xd087('0x40')]=_[_0xd087('0x55')](db[_0xd087('0x83')]['rawAttributes']);_0xd2b4a2['query']=_[_0xd087('0x55')](_0x129d34[_0xd087('0x42')]);_0xd2b4a2[_0xd087('0x4c')]=_[_0xd087('0x43')](_0xd2b4a2[_0xd087('0x40')],_0xd2b4a2[_0xd087('0x42')]);_0x284618[_0xd087('0x44')]=_[_0xd087('0x43')](_0xd2b4a2[_0xd087('0x40')],qs[_0xd087('0x45')](_0x129d34[_0xd087('0x42')][_0xd087('0x45')]));_0x284618[_0xd087('0x44')]=_0x284618[_0xd087('0x44')][_0xd087('0x46')]?_0x284618[_0xd087('0x44')]:_0xd2b4a2['model'];_0x284618[_0xd087('0x48')]=qs['sort'](_0x129d34['query'][_0xd087('0x49')]);_0x284618[_0xd087('0x4a')]=qs['filters'](_[_0xd087('0x4b')](_0x129d34['query'],_0xd2b4a2['filters']));if(_0x129d34[_0xd087('0x42')][_0xd087('0x4f')]){_0x284618[_0xd087('0x4a')]=_['merge'](_0x284618[_0xd087('0x4a')],{'$or':_['map'](_0x284618['attributes'],function(_0x399861){var _0x38ad9b={};_0x38ad9b[_0x399861]={'$like':'%'+_0x129d34[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x38ad9b;})});}_0x284618=_[_0xd087('0x4d')]({},_0x284618,_0x129d34[_0xd087('0x50')]);return _0x5c3ea5[_0xd087('0xa8')](_0x284618);}})[_0xd087('0x1e')](function(_0x3b0464){if(_0x3b0464){_0x10a29c=_0x3b0464[_0xd087('0x46')];if(!_0x129d34[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x284618[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x129d34[_0xd087('0x42')][_0xd087('0x2e')]);_0x284618[_0xd087('0x30')]=qs[_0xd087('0x30')](_0x129d34['query'][_0xd087('0x30')]);}return _0x5c3ea5[_0xd087('0xa8')](_0x284618);}})[_0xd087('0x1e')](function(_0x23bbe9){if(_0x23bbe9){return _0x23bbe9?{'count':_0x10a29c,'rows':_0x23bbe9}:null;}})['then'](respondWithResult(_0x1a9dd9,null))[_0xd087('0x28')](handleError(_0x1a9dd9,null));};exports[_0xd087('0xa9')]=function(_0x5e4991,_0x1cb678,_0x7cf1e1){var _0x4e2384={'raw':![],'where':{}};var _0x4da9aa={};var _0x4c00c7={'count':0x0,'rows':[]};return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x5e4991['params']['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x1cb678,null))[_0xd087('0x1e')](function(_0x2ce7b2){if(_0x2ce7b2){_0x4da9aa[_0xd087('0x40')]=_['keys'](db[_0xd087('0x8f')]['rawAttributes']);_0x4da9aa['query']=_[_0xd087('0x55')](_0x5e4991[_0xd087('0x42')]);_0x4da9aa['filters']=_[_0xd087('0x43')](_0x4da9aa[_0xd087('0x40')],_0x4da9aa[_0xd087('0x42')]);_0x4e2384['attributes']=_['intersection'](_0x4da9aa[_0xd087('0x40')],qs['fields'](_0x5e4991[_0xd087('0x42')][_0xd087('0x45')]));_0x4e2384['attributes']=_0x4e2384[_0xd087('0x44')][_0xd087('0x46')]?_0x4e2384[_0xd087('0x44')]:_0x4da9aa[_0xd087('0x40')];if(!_0x5e4991[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x4e2384[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x5e4991[_0xd087('0x42')][_0xd087('0x2e')]);_0x4e2384[_0xd087('0x30')]=qs[_0xd087('0x30')](_0x5e4991[_0xd087('0x42')][_0xd087('0x30')]);}_0x4e2384[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x5e4991[_0xd087('0x42')][_0xd087('0x49')]);_0x4e2384[_0xd087('0x4a')]=qs[_0xd087('0x4c')](_[_0xd087('0x4b')](_0x5e4991[_0xd087('0x42')],_0x4da9aa['filters']));_0x4e2384[_0xd087('0x4a')][_0xd087('0x62')]=_0x2ce7b2['id'];if(_0x5e4991[_0xd087('0x42')][_0xd087('0x4f')]){_0x4e2384[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x4e2384[_0xd087('0x4a')],{'$or':_[_0xd087('0x41')](_0x4e2384[_0xd087('0x44')],function(_0x2cd3f9){var _0x3f7631={};_0x3f7631[_0x2cd3f9]={'$like':'%'+_0x5e4991[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x3f7631;})});}_0x4e2384=_[_0xd087('0x4d')]({},_0x4e2384,_0x5e4991[_0xd087('0x50')]);return db['OpenchannelInteraction'][_0xd087('0x2f')]({'where':_0x4e2384['where']})[_0xd087('0x1e')](function(_0x47fc09){_0x4c00c7[_0xd087('0x2f')]=_0x47fc09;if(_0x5e4991[_0xd087('0x42')][_0xd087('0x51')]){_0x4e2384[_0xd087('0x66')]=[{'model':db[_0xd087('0x6f')],'as':_0xd087('0xaa'),'required':![]},{'model':db['User'],'as':_0xd087('0xab'),'attributes':[_0xd087('0x38'),_0xd087('0xac'),_0xd087('0xad')],'required':![]},{'model':db[_0xd087('0xae')],'as':_0xd087('0xaf'),'attributes':['id',_0xd087('0x38'),'color'],'where':_0x5e4991['query'][_0xd087('0xb0')]?{'id':_0x5e4991[_0xd087('0x42')]['tag']}:undefined,'required':_0x5e4991[_0xd087('0x42')]['tag']?!![]:![]}];}return db[_0xd087('0x8f')][_0xd087('0x52')](_0x4e2384);})[_0xd087('0x1e')](function(_0x8e71c4){_0x4c00c7[_0xd087('0x53')]=_0x8e71c4;return _0x4c00c7;});}})['then'](respondWithFilteredResult(_0x1cb678,_0x4e2384))[_0xd087('0x28')](handleError(_0x1cb678,null));};exports['addAgents']=function(_0x3ce709,_0xab635e,_0xc4bdce){return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x3ce709[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0xab635e,null))['then'](function(_0x105963){if(_0x105963){return _0x105963[_0xd087('0xb1')](_0x3ce709[_0xd087('0x60')][_0xd087('0x67')],_[_0xd087('0xb2')](_0x3ce709[_0xd087('0x60')],[_0xd087('0x67'),'id'])||{})[_0xd087('0x91')](function(_0x941e6f){for(var _0x417001=0x0;_0x417001<_0x3ce709[_0xd087('0x60')][_0xd087('0x67')][_0xd087('0x46')];_0x417001+=0x1){socket[_0xd087('0xb3')](_0xd087('0xb4'),{'UserId':Number(_0x3ce709[_0xd087('0x60')][_0xd087('0x67')][_0x417001]),'OpenchannelAccountId':Number(_0x3ce709[_0xd087('0x54')]['id'])});}return _0x941e6f;});}})[_0xd087('0x1e')](respondWithResult(_0xab635e,null))[_0xd087('0x28')](handleError(_0xab635e,null));};exports['removeAgents']=function(_0x296ad7,_0x277d40,_0x5dac0b){return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x296ad7[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x277d40,null))['then'](function(_0x240e0c){if(_0x240e0c){return _0x240e0c['removeAgents'](_0x296ad7[_0xd087('0x42')][_0xd087('0x67')])[_0xd087('0x1e')](function(){if(_[_0xd087('0xb5')](_0x296ad7[_0xd087('0x42')][_0xd087('0x67')])){for(var _0x5b9982=0x0;_0x5b9982<_0x296ad7[_0xd087('0x42')]['ids'][_0xd087('0x46')];_0x5b9982+=0x1){socket[_0xd087('0xb3')](_0xd087('0xb6'),{'UserId':Number(_0x296ad7[_0xd087('0x42')][_0xd087('0x67')][_0x5b9982]),'OpenchannelAccountId':Number(_0x296ad7[_0xd087('0x54')]['id'])});}}else{socket[_0xd087('0xb3')](_0xd087('0xb6'),{'UserId':Number(_0x296ad7['query'][_0xd087('0x67')]),'OpenchannelAccountId':Number(_0x296ad7[_0xd087('0x54')]['id'])});}});}})[_0xd087('0x1e')](respondWithStatusCode(_0x277d40,null))[_0xd087('0x28')](handleError(_0x277d40,null));};exports[_0xd087('0xb7')]=function(_0x3760cd,_0x3d16a3,_0x4af31f){var _0x51a7ee={};var _0x4acb7e={};var _0x146dd3;var _0x2544c1;return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x3760cd[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x3d16a3,null))[_0xd087('0x1e')](function(_0x8154a8){if(_0x8154a8){_0x146dd3=_0x8154a8;_0x4acb7e[_0xd087('0x40')]=_[_0xd087('0x55')](db[_0xd087('0x9e')]['rawAttributes']);_0x4acb7e[_0xd087('0x42')]=_[_0xd087('0x55')](_0x3760cd[_0xd087('0x42')]);_0x4acb7e[_0xd087('0x4c')]=_[_0xd087('0x43')](_0x4acb7e['model'],_0x4acb7e['query']);_0x51a7ee[_0xd087('0x44')]=_['intersection'](_0x4acb7e[_0xd087('0x40')],qs[_0xd087('0x45')](_0x3760cd[_0xd087('0x42')][_0xd087('0x45')]));_0x51a7ee[_0xd087('0x44')]=_0x51a7ee[_0xd087('0x44')][_0xd087('0x46')]?_0x51a7ee[_0xd087('0x44')]:_0x4acb7e[_0xd087('0x40')];_0x51a7ee[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x3760cd[_0xd087('0x42')][_0xd087('0x49')]);_0x51a7ee['where']=qs[_0xd087('0x4c')](_[_0xd087('0x4b')](_0x3760cd[_0xd087('0x42')],_0x4acb7e[_0xd087('0x4c')]));if(_0x3760cd['query'][_0xd087('0x4f')]){_0x51a7ee['where']=_[_0xd087('0x4d')](_0x51a7ee[_0xd087('0x4a')],{'$or':_[_0xd087('0x41')](_0x51a7ee['attributes'],function(_0x2cf769){var _0xf03b11={};_0xf03b11[_0x2cf769]={'$like':'%'+_0x3760cd['query'][_0xd087('0x4f')]+'%'};return _0xf03b11;})});}_0x51a7ee=_[_0xd087('0x4d')]({},_0x51a7ee,_0x3760cd[_0xd087('0x50')]);return _0x146dd3[_0xd087('0xb7')](_0x51a7ee);}})[_0xd087('0x1e')](function(_0x3b0641){if(_0x3b0641){_0x2544c1=_0x3b0641[_0xd087('0x46')];if(!_0x3760cd[_0xd087('0x42')][_0xd087('0x47')](_0xd087('0x65'))){_0x51a7ee[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x3760cd[_0xd087('0x42')][_0xd087('0x2e')]);_0x51a7ee[_0xd087('0x30')]=qs[_0xd087('0x30')](_0x3760cd[_0xd087('0x42')][_0xd087('0x30')]);}return _0x146dd3['getAgents'](_0x51a7ee);}})[_0xd087('0x1e')](function(_0x2d9c66){if(_0x2d9c66){return _0x2d9c66?{'count':_0x2544c1,'rows':_0x2d9c66}:null;}})['then'](respondWithResult(_0x3d16a3,null))[_0xd087('0x28')](handleError(_0x3d16a3,null));};exports[_0xd087('0xb8')]=function(_0x2e1983,_0x24234a,_0x3af527){var _0x2e051b,_0x3b1097,_0x58d268;if(_[_0xd087('0x79')](_0x2e1983['body'][_0xd087('0x60')])||_0x2e1983['body']['body']===''){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x7b'));}if(_['isNil'](_0x2e1983[_0xd087('0x60')]['to'])){}_0x2e051b=_0x2e1983[_0xd087('0x60')]['to'];return db['OpenchannelAccount'][_0xd087('0x64')]({'where':{'id':_0x2e1983[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x24234a,null))[_0xd087('0x1e')](function(_0x27de3a){if(_0x27de3a){return db[_0xd087('0x3c')]['find']({'where':{'id':_0x27de3a['id']},'include':[{'model':db[_0xd087('0x80')],'as':_0xd087('0x85'),'include':[{'model':db[_0xd087('0x6f')],'as':_0xd087('0x81'),'where':{[_0x27de3a['mapKey']]:_0x2e051b},'limit':0x1,'order':[[_0xd087('0x76'),_0xd087('0x82')]]}]}]})[_0xd087('0x1e')](handleEntityNotFound(_0x24234a,null))[_0xd087('0x1e')](function(_0x2d1df3){if(_0x2d1df3&&_0x2d1df3[_0xd087('0x85')]){_0x3b1097=_0x2d1df3[_0xd087('0x58')]({'plain':!![]});if(_0x3b1097[_0xd087('0x85')]&&_0x3b1097[_0xd087('0x85')]['Contacts'][_0xd087('0x46')]){return _0x3b1097[_0xd087('0x85')][_0xd087('0x81')][0x0];}return db[_0xd087('0x6f')][_0xd087('0x56')](_[_0xd087('0x18')](_0x2e1983[_0xd087('0x60')],{'firstName':_0x2e051b,[_0x2d1df3[_0xd087('0x7c')]]:_0x2e051b,'phone':_0x2e051b,'ListId':_0x3b1097[_0xd087('0x78')]}));}})[_0xd087('0x1e')](handleEntityNotFound(_0x24234a,null))['then'](function(_0x32cf78){if(_0x32cf78){_0x58d268=_0x32cf78;return db[_0xd087('0x8f')][_0xd087('0x5c')]({'where':{'ContactId':_0x58d268['id'],'closed':![],'OpenchannelAccountId':_0x3b1097['id']}})[_0xd087('0x1e')](function(_0x2a91d7){if(_0x2a91d7){return[_0x2a91d7,![]];}return db[_0xd087('0x8f')]['create']({'UserId':_0x2e1983[_0xd087('0x57')]['id'],'ContactId':_0x58d268['id'],'OpenchannelAccountId':_0x3b1097['id'],'lastMsgDirection':_0xd087('0xb9'),'Messages':[_[_0xd087('0x4d')](_0x2e1983[_0xd087('0x60')],{'read':![],'body':_0x2e1983[_0xd087('0x60')][_0xd087('0x60')],'OpenchannelAccountId':_0x3b1097['id'],'UserId':_0x2e1983['user']['id'],'ContactId':_0x58d268['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xd087('0xba')}]})[_0xd087('0x1e')](function(_0x48895c){return[_0x48895c,!![]];});});}})[_0xd087('0x91')](function(_0x5cff84,_0x587746){if(_0x587746){return _0x5cff84;}return db[_0xd087('0x9b')][_0xd087('0x56')](_[_0xd087('0x4d')](_0x2e1983['body'],{'read':![],'body':_0x2e1983['body']['body'],'OpenchannelAccountId':_0x3b1097['id'],'OpenchannelInteractionId':_0x5cff84['id'],'UserId':_0x2e1983[_0xd087('0x57')]['id'],'ContactId':_0x58d268['id']}))[_0xd087('0x1e')](function(_0x3b442e){_0x5cff84[_0xd087('0xbb')]['Messages']=[];_0x5cff84[_0xd087('0xbb')]['Messages'][_0xd087('0x97')](_0x3b442e['dataValues']);return _0x5cff84;});});}})[_0xd087('0x1e')](respondWithResult(_0x24234a,null))[_0xd087('0x28')](handleError(_0x24234a,null));};
\ No newline at end of file
+var _0x5c8a=['params','describe','addDisposition','Disposition','getDispositions','options','removeDispositions','ids','addAnswer','OpenchannelAccountId','CannedAnswer','findOne','removeAnswers','notify','openchannel','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','Sequelize','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','List','Contacts','DESC','OpenchannelApplication','account','applications','list','orderBy','priority','asc','Applications','contact','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','firstName','messageId','interaction','created','autoclose','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Owner','fullname','internal','Tags','color','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','send','out','OpenchannelMessage','Messages','dataValues','push','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','sendStatus','stack','index','Pause','map','OpenchannelAccount','rawAttributes','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','includeAll','include','findAll','rows','show','mandatoryDispositionPause','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x157111,_0x3a9771){var _0x5b00c4=function(_0x1b15e4){while(--_0x1b15e4){_0x157111['push'](_0x157111['shift']());}};_0x5b00c4(++_0x3a9771);}(_0x5c8a,0x1d6));var _0xa5c8=function(_0x1f50c6,_0xf78fe1){_0x1f50c6=_0x1f50c6-0x0;var _0xada69c=_0x5c8a[_0x1f50c6];return _0xada69c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa5c8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa5c8('0x1'));var rp=require('request-promise');var moment=require(_0xa5c8('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xa5c8('0x3'));var util=require(_0xa5c8('0x4'));var path=require(_0xa5c8('0x5'));var sox=require(_0xa5c8('0x6'));var csv=require(_0xa5c8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa5c8('0x8'));var squel=require(_0xa5c8('0x9'));var crypto=require(_0xa5c8('0xa'));var jsforce=require(_0xa5c8('0xb'));var deskjs=require(_0xa5c8('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa5c8('0xd'));var Papa=require(_0xa5c8('0xe'));var Redis=require(_0xa5c8('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa5c8('0x10'));var as=require(_0xa5c8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa5c8('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa5c8('0x13'));var db=require('../../mysqldb')['db'];config[_0xa5c8('0x14')]=_[_0xa5c8('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xa5c8('0x16'))(new Redis(config[_0xa5c8('0x14')]));require(_0xa5c8('0x17'))[_0xa5c8('0x18')](socket);var jayson=require('jayson/promise');var client=jayson[_0xa5c8('0x19')]['http']({'port':0x232c});var client9002=jayson[_0xa5c8('0x19')][_0xa5c8('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x24c667,_0x40bf91,_0xaa8b3,_0x1476ef){return new BPromise(function(_0x2ad31b,_0x3e4c1b){var _0x2d5032=_0x1476ef||client;return _0x2d5032[_0xa5c8('0x1b')](_0x24c667,_0xaa8b3)[_0xa5c8('0x1c')](function(_0x4ed3e9){logger[_0xa5c8('0x1d')](_0xa5c8('0x1e'),_0x40bf91,_0xa5c8('0x1f'));logger[_0xa5c8('0x20')](_0xa5c8('0x21'),_0x40bf91,'request\x20sent',JSON[_0xa5c8('0x22')](_0x4ed3e9));if(_0x4ed3e9['error']){if(_0x4ed3e9[_0xa5c8('0x23')][_0xa5c8('0x24')]===0x1f4){logger[_0xa5c8('0x23')]('OpenchannelAccount,\x20%s,\x20%s',_0x40bf91,_0x4ed3e9[_0xa5c8('0x23')][_0xa5c8('0x25')]);return _0x3e4c1b(_0x4ed3e9[_0xa5c8('0x23')][_0xa5c8('0x25')]);}logger[_0xa5c8('0x23')](_0xa5c8('0x1e'),_0x40bf91,_0x4ed3e9[_0xa5c8('0x23')]['message']);return _0x2ad31b(_0x4ed3e9[_0xa5c8('0x23')][_0xa5c8('0x25')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x40bf91,_0xa5c8('0x1f'));_0x2ad31b(_0x4ed3e9['result']['message']);}})[_0xa5c8('0x26')](function(_0x60a21f){logger['error'](_0xa5c8('0x1e'),_0x40bf91,_0x60a21f);_0x3e4c1b(_0x60a21f);});});}function respondWithStatusCode(_0x1a2557,_0x439441){_0x439441=_0x439441||0xcc;return function(_0x368112){if(_0x368112){return _0x1a2557['sendStatus'](_0x439441);}return _0x1a2557['status'](_0x439441)[_0xa5c8('0x27')]();};}function respondWithResult(_0x1a530f,_0x1c7e27){_0x1c7e27=_0x1c7e27||0xc8;return function(_0x2e3027){if(_0x2e3027){return _0x1a530f[_0xa5c8('0x28')](_0x1c7e27)[_0xa5c8('0x29')](_0x2e3027);}};}function respondWithFilteredResult(_0xa6d6b7,_0x2c987d){return function(_0x42ed25){if(_0x42ed25){var _0x5567b4=typeof _0x2c987d[_0xa5c8('0x2a')]===_0xa5c8('0x2b')&&typeof _0x2c987d[_0xa5c8('0x2c')]===_0xa5c8('0x2b');var _0x3f45a3=_0x42ed25[_0xa5c8('0x2d')];var _0x23dc93=_0x5567b4?0x0:_0x2c987d[_0xa5c8('0x2a')];var _0x2d59cb=_0x5567b4?_0x42ed25[_0xa5c8('0x2d')]:_0x2c987d[_0xa5c8('0x2a')]+_0x2c987d[_0xa5c8('0x2c')];var _0x3cc1b9;if(_0x2d59cb>=_0x3f45a3){_0x2d59cb=_0x3f45a3;_0x3cc1b9=0xc8;}else{_0x3cc1b9=0xce;}_0xa6d6b7[_0xa5c8('0x28')](_0x3cc1b9);return _0xa6d6b7[_0xa5c8('0x2e')](_0xa5c8('0x2f'),_0x23dc93+'-'+_0x2d59cb+'/'+_0x3f45a3)[_0xa5c8('0x29')](_0x42ed25);}return null;};}function patchUpdates(_0x48ac05){return function(_0xa1d0ce){try{jsonpatch[_0xa5c8('0x30')](_0xa1d0ce,_0x48ac05,!![]);}catch(_0x728f88){return BPromise[_0xa5c8('0x31')](_0x728f88);}return _0xa1d0ce[_0xa5c8('0x32')]();};}function saveUpdates(_0x1ea335,_0x4baa20){return function(_0x336a75){if(_0x336a75){return _0x336a75[_0xa5c8('0x33')](_0x1ea335)[_0xa5c8('0x1c')](function(_0x5a1e61){return _0x5a1e61;});}return null;};}function removeEntity(_0x14065e,_0x37490){return function(_0x35756e){if(_0x35756e){return _0x35756e[_0xa5c8('0x34')]()['then'](function(){var _0x200e64=_0x35756e[_0xa5c8('0x35')]({'plain':!![]});var _0x35f06e=_0xa5c8('0x36');return db[_0xa5c8('0x37')][_0xa5c8('0x34')]({'where':{'type':_0x35f06e,'resourceId':_0x200e64['id']}})[_0xa5c8('0x1c')](function(){return _0x35756e;});})[_0xa5c8('0x1c')](function(){_0x14065e[_0xa5c8('0x28')](0xcc)[_0xa5c8('0x27')]();});}};}function handleEntityNotFound(_0x521016,_0x7d7188){return function(_0x5625c6){if(!_0x5625c6){_0x521016[_0xa5c8('0x38')](0x194);}return _0x5625c6;};}function handleError(_0x59dc6b,_0xea3e63){_0xea3e63=_0xea3e63||0x1f4;return function(_0x5cccf9){logger[_0xa5c8('0x23')](_0x5cccf9[_0xa5c8('0x39')]);if(_0x5cccf9['name']){delete _0x5cccf9['name'];}_0x59dc6b[_0xa5c8('0x28')](_0xea3e63)['send'](_0x5cccf9);};}exports[_0xa5c8('0x3a')]=function(_0x2137bc,_0x4c4ade){var _0x18c661={'include':[{'model':db[_0xa5c8('0x3b')],'as':'mandatoryDispositionPause'}]},_0x4b4dff={},_0x75aa4c={'count':0x0,'rows':[]};var _0x2c2946=_[_0xa5c8('0x3c')](db[_0xa5c8('0x3d')][_0xa5c8('0x3e')],function(_0x4e25b9){return{'name':_0x4e25b9['fieldName'],'type':_0x4e25b9[_0xa5c8('0x3f')][_0xa5c8('0x40')]};});_0x4b4dff[_0xa5c8('0x41')]=_[_0xa5c8('0x3c')](_0x2c2946,_0xa5c8('0x42'));_0x4b4dff[_0xa5c8('0x43')]=_[_0xa5c8('0x44')](_0x2137bc[_0xa5c8('0x43')]);_0x4b4dff[_0xa5c8('0x45')]=_[_0xa5c8('0x46')](_0x4b4dff[_0xa5c8('0x41')],_0x4b4dff[_0xa5c8('0x43')]);_0x18c661[_0xa5c8('0x47')]=_[_0xa5c8('0x46')](_0x4b4dff[_0xa5c8('0x41')],qs[_0xa5c8('0x48')](_0x2137bc[_0xa5c8('0x43')][_0xa5c8('0x48')]));_0x18c661[_0xa5c8('0x47')]=_0x18c661[_0xa5c8('0x47')][_0xa5c8('0x49')]?_0x18c661['attributes']:_0x4b4dff[_0xa5c8('0x41')];if(!_0x2137bc[_0xa5c8('0x43')][_0xa5c8('0x4a')](_0xa5c8('0x4b'))){_0x18c661[_0xa5c8('0x2c')]=qs[_0xa5c8('0x2c')](_0x2137bc[_0xa5c8('0x43')][_0xa5c8('0x2c')]);_0x18c661[_0xa5c8('0x2a')]=qs[_0xa5c8('0x2a')](_0x2137bc['query']['offset']);}_0x18c661[_0xa5c8('0x4c')]=qs['sort'](_0x2137bc[_0xa5c8('0x43')][_0xa5c8('0x4d')]);_0x18c661['where']=qs[_0xa5c8('0x45')](_[_0xa5c8('0x4e')](_0x2137bc['query'],_0x4b4dff[_0xa5c8('0x45')]),_0x2c2946);if(_0x2137bc[_0xa5c8('0x43')]['filter']){_0x18c661[_0xa5c8('0x4f')]=_[_0xa5c8('0x50')](_0x18c661[_0xa5c8('0x4f')],{'$or':_[_0xa5c8('0x3c')](_0x2c2946,function(_0x23e6c0){if(_0x23e6c0['type']!=='VIRTUAL'){var _0x54349b={};_0x54349b[_0x23e6c0[_0xa5c8('0x42')]]={'$like':'%'+_0x2137bc[_0xa5c8('0x43')][_0xa5c8('0x51')]+'%'};return _0x54349b;}})});}_0x18c661=_[_0xa5c8('0x50')]({},_0x18c661,_0x2137bc['options']);var _0x545b65={'where':_0x18c661[_0xa5c8('0x4f')]};return db[_0xa5c8('0x3d')]['count'](_0x545b65)[_0xa5c8('0x1c')](function(_0x461d4d){_0x75aa4c[_0xa5c8('0x2d')]=_0x461d4d;if(_0x2137bc['query'][_0xa5c8('0x52')]){_0x18c661[_0xa5c8('0x53')]=[{'all':!![]}];}return db[_0xa5c8('0x3d')][_0xa5c8('0x54')](_0x18c661);})['then'](function(_0x5ca20c){_0x75aa4c[_0xa5c8('0x55')]=_0x5ca20c;return _0x75aa4c;})[_0xa5c8('0x1c')](respondWithFilteredResult(_0x4c4ade,_0x18c661))[_0xa5c8('0x26')](handleError(_0x4c4ade,null));};exports[_0xa5c8('0x56')]=function(_0x1982e2,_0x116807){var _0x30eaf0={'raw':![],'where':{'id':_0x1982e2['params']['id']},'include':[{'model':db['Pause'],'as':_0xa5c8('0x57')}]},_0x143beb={};_0x143beb[_0xa5c8('0x41')]=_[_0xa5c8('0x44')](db[_0xa5c8('0x3d')]['rawAttributes']);_0x143beb[_0xa5c8('0x43')]=_[_0xa5c8('0x44')](_0x1982e2[_0xa5c8('0x43')]);_0x143beb[_0xa5c8('0x45')]=_[_0xa5c8('0x46')](_0x143beb[_0xa5c8('0x41')],_0x143beb[_0xa5c8('0x43')]);_0x30eaf0['attributes']=_[_0xa5c8('0x46')](_0x143beb['model'],qs['fields'](_0x1982e2[_0xa5c8('0x43')]['fields']));_0x30eaf0[_0xa5c8('0x47')]=_0x30eaf0[_0xa5c8('0x47')][_0xa5c8('0x49')]?_0x30eaf0['attributes']:_0x143beb[_0xa5c8('0x41')];if(_0x1982e2[_0xa5c8('0x43')][_0xa5c8('0x52')]){_0x30eaf0[_0xa5c8('0x53')]=[{'all':!![]}];}_0x30eaf0=_[_0xa5c8('0x50')]({},_0x30eaf0,_0x1982e2['options']);return db[_0xa5c8('0x3d')][_0xa5c8('0x58')](_0x30eaf0)['then'](handleEntityNotFound(_0x116807,null))[_0xa5c8('0x1c')](respondWithResult(_0x116807,null))[_0xa5c8('0x26')](handleError(_0x116807,null));};exports[_0xa5c8('0x59')]=function(_0x2773dc,_0x2b5c8c){return db['OpenchannelAccount'][_0xa5c8('0x59')](_0x2773dc[_0xa5c8('0x5a')],{})[_0xa5c8('0x1c')](function(_0x34b5cf){var _0x13af30=_0x2773dc['user']['get']({'plain':!![]});if(!_0x13af30)throw new Error(_0xa5c8('0x5b'));if(_0x13af30[_0xa5c8('0x5c')]===_0xa5c8('0x5d')){var _0x3438c3=_0x34b5cf[_0xa5c8('0x35')]({'plain':!![]});var _0x25e95a=_0xa5c8('0x36');return db['UserProfileSection'][_0xa5c8('0x58')]({'where':{'name':_0x25e95a,'userProfileId':_0x13af30[_0xa5c8('0x5e')]},'raw':!![]})[_0xa5c8('0x1c')](function(_0x5025c1){if(_0x5025c1&&_0x5025c1[_0xa5c8('0x5f')]===0x0){return db['UserProfileResource']['create']({'name':_0x3438c3[_0xa5c8('0x42')],'resourceId':_0x3438c3['id'],'type':_0x5025c1['name'],'sectionId':_0x5025c1['id']},{})['then'](function(){return _0x34b5cf;});}else{return _0x34b5cf;}})['catch'](function(_0x42b953){logger[_0xa5c8('0x23')](_0xa5c8('0x60'),_0x42b953);throw _0x42b953;});}return _0x34b5cf;})[_0xa5c8('0x1c')](respondWithResult(_0x2b5c8c,0xc9))[_0xa5c8('0x26')](handleError(_0x2b5c8c,null));};exports[_0xa5c8('0x33')]=function(_0x5d6923,_0x2264e2){if(_0x5d6923['body']['id']){delete _0x5d6923['body']['id'];}return db[_0xa5c8('0x3d')]['find']({'where':{'id':_0x5d6923[_0xa5c8('0x61')]['id']},'include':[{'model':db[_0xa5c8('0x3b')],'as':'mandatoryDispositionPause'}]})[_0xa5c8('0x1c')](handleEntityNotFound(_0x2264e2,null))[_0xa5c8('0x1c')](saveUpdates(_0x5d6923[_0xa5c8('0x5a')],null))['then'](respondWithResult(_0x2264e2,null))[_0xa5c8('0x26')](handleError(_0x2264e2,null));};exports[_0xa5c8('0x34')]=function(_0x5ed02f,_0x144bc4){return db['OpenchannelAccount'][_0xa5c8('0x58')]({'where':{'id':_0x5ed02f['params']['id']}})['then'](handleEntityNotFound(_0x144bc4,null))['then'](removeEntity(_0x144bc4,null))[_0xa5c8('0x26')](handleError(_0x144bc4,null));};exports[_0xa5c8('0x62')]=function(_0x9f162f,_0x251083){return db[_0xa5c8('0x3d')][_0xa5c8('0x62')]()[_0xa5c8('0x1c')](respondWithResult(_0x251083,null))[_0xa5c8('0x26')](handleError(_0x251083,null));};exports[_0xa5c8('0x63')]=function(_0x4be135,_0xfee51c,_0xc90354){if(_0x4be135[_0xa5c8('0x5a')]['id']){delete _0x4be135['body']['id'];}return db['OpenchannelAccount'][_0xa5c8('0x58')]({'where':{'id':_0x4be135[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0xfee51c,null))[_0xa5c8('0x1c')](function(_0x21f265){if(_0x21f265){_0x4be135['body']['OpenchannelAccountId']=_0x21f265['id'];return db[_0xa5c8('0x64')][_0xa5c8('0x59')](_0x4be135['body']);}})[_0xa5c8('0x1c')](respondWithResult(_0xfee51c,null))[_0xa5c8('0x26')](handleError(_0xfee51c,null));};exports[_0xa5c8('0x65')]=function(_0x4576a9,_0x52095e,_0x25e4c0){var _0x474038={'raw':![],'where':{}};var _0x20177b={};var _0x30678f={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x4576a9[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x52095e,null))['then'](function(_0xad9d33){if(_0xad9d33){_0x20177b[_0xa5c8('0x41')]=_['keys'](db[_0xa5c8('0x64')][_0xa5c8('0x3e')]);_0x20177b[_0xa5c8('0x43')]=_[_0xa5c8('0x44')](_0x4576a9[_0xa5c8('0x43')]);_0x20177b['filters']=_[_0xa5c8('0x46')](_0x20177b['model'],_0x20177b[_0xa5c8('0x43')]);_0x474038[_0xa5c8('0x47')]=_[_0xa5c8('0x46')](_0x20177b[_0xa5c8('0x41')],qs['fields'](_0x4576a9[_0xa5c8('0x43')][_0xa5c8('0x48')]));_0x474038[_0xa5c8('0x47')]=_0x474038['attributes'][_0xa5c8('0x49')]?_0x474038['attributes']:_0x20177b[_0xa5c8('0x41')];if(!_0x4576a9[_0xa5c8('0x43')][_0xa5c8('0x4a')]('nolimit')){_0x474038['limit']=qs['limit'](_0x4576a9['query'][_0xa5c8('0x2c')]);_0x474038[_0xa5c8('0x2a')]=qs[_0xa5c8('0x2a')](_0x4576a9[_0xa5c8('0x43')][_0xa5c8('0x2a')]);}_0x474038[_0xa5c8('0x4c')]=qs[_0xa5c8('0x4d')](_0x4576a9[_0xa5c8('0x43')]['sort']);_0x474038['where']=qs[_0xa5c8('0x45')](_[_0xa5c8('0x4e')](_0x4576a9[_0xa5c8('0x43')],_0x20177b['filters']));_0x474038[_0xa5c8('0x4f')]['OpenchannelAccountId']=_0xad9d33['id'];if(_0x4576a9[_0xa5c8('0x43')][_0xa5c8('0x51')]){_0x474038['where']=_[_0xa5c8('0x50')](_0x474038['where'],{'$or':_[_0xa5c8('0x3c')](_0x474038['attributes'],function(_0x25c972){var _0x2d882a={};_0x2d882a[_0x25c972]={'$like':'%'+_0x4576a9[_0xa5c8('0x43')][_0xa5c8('0x51')]+'%'};return _0x2d882a;})});}_0x474038=_[_0xa5c8('0x50')]({},_0x474038,_0x4576a9[_0xa5c8('0x66')]);return db[_0xa5c8('0x64')][_0xa5c8('0x2d')]({'where':_0x474038[_0xa5c8('0x4f')]})['then'](function(_0x476d42){_0x30678f[_0xa5c8('0x2d')]=_0x476d42;if(_0x4576a9[_0xa5c8('0x43')][_0xa5c8('0x52')]){_0x474038[_0xa5c8('0x53')]=[{'all':!![]}];}return db[_0xa5c8('0x64')][_0xa5c8('0x54')](_0x474038);})[_0xa5c8('0x1c')](function(_0x16c17b){_0x30678f[_0xa5c8('0x55')]=_0x16c17b;return _0x30678f;});}})['then'](respondWithFilteredResult(_0x52095e,_0x474038))[_0xa5c8('0x26')](handleError(_0x52095e,null));};exports[_0xa5c8('0x67')]=function(_0x2fe8fa,_0xe6956e,_0x1d124b){return db['OpenchannelAccount'][_0xa5c8('0x58')]({'where':{'id':_0x2fe8fa[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0xe6956e,null))['then'](function(_0xb2d230){if(_0xb2d230){return _0xb2d230['removeDispositions'](_0x2fe8fa[_0xa5c8('0x43')][_0xa5c8('0x68')]);}})[_0xa5c8('0x1c')](respondWithStatusCode(_0xe6956e,null))[_0xa5c8('0x26')](handleError(_0xe6956e,null));};exports[_0xa5c8('0x69')]=function(_0x12f208,_0x154bb0,_0x3ba3c7){if(_0x12f208['body']['id']){delete _0x12f208[_0xa5c8('0x5a')]['id'];}return db[_0xa5c8('0x3d')]['find']({'where':{'id':_0x12f208[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x154bb0,null))['then'](function(_0x1962bb){if(_0x1962bb){_0x12f208['body'][_0xa5c8('0x6a')]=_0x1962bb['id'];return db[_0xa5c8('0x6b')][_0xa5c8('0x59')](_0x12f208['body']);}})[_0xa5c8('0x1c')](respondWithResult(_0x154bb0,null))['catch'](handleError(_0x154bb0,null));};exports['getAnswers']=function(_0x20c96e,_0x3f21a1,_0x38e005){var _0x4bf18c={'raw':![],'where':{}};var _0x1c0b94={};var _0x44b024={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xa5c8('0x6c')]({'where':{'id':_0x20c96e['params']['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x3f21a1,null))[_0xa5c8('0x1c')](function(_0x3f3b45){if(_0x3f3b45){_0x1c0b94[_0xa5c8('0x41')]=_[_0xa5c8('0x44')](db[_0xa5c8('0x6b')][_0xa5c8('0x3e')]);_0x1c0b94[_0xa5c8('0x43')]=_['keys'](_0x20c96e[_0xa5c8('0x43')]);_0x1c0b94[_0xa5c8('0x45')]=_['intersection'](_0x1c0b94[_0xa5c8('0x41')],_0x1c0b94['query']);_0x4bf18c['attributes']=_[_0xa5c8('0x46')](_0x1c0b94[_0xa5c8('0x41')],qs[_0xa5c8('0x48')](_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x48')]));_0x4bf18c[_0xa5c8('0x47')]=_0x4bf18c[_0xa5c8('0x47')][_0xa5c8('0x49')]?_0x4bf18c[_0xa5c8('0x47')]:_0x1c0b94[_0xa5c8('0x41')];if(!_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x4a')]('nolimit')){_0x4bf18c[_0xa5c8('0x2c')]=qs[_0xa5c8('0x2c')](_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x2c')]);_0x4bf18c[_0xa5c8('0x2a')]=qs[_0xa5c8('0x2a')](_0x20c96e[_0xa5c8('0x43')]['offset']);}_0x4bf18c[_0xa5c8('0x4c')]=qs[_0xa5c8('0x4d')](_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x4d')]);_0x4bf18c[_0xa5c8('0x4f')]=qs[_0xa5c8('0x45')](_[_0xa5c8('0x4e')](_0x20c96e[_0xa5c8('0x43')],_0x1c0b94[_0xa5c8('0x45')]));_0x4bf18c['where']['OpenchannelAccountId']=_0x3f3b45['id'];if(_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x51')]){_0x4bf18c[_0xa5c8('0x4f')]=_[_0xa5c8('0x50')](_0x4bf18c[_0xa5c8('0x4f')],{'$or':_['map'](_0x4bf18c[_0xa5c8('0x47')],function(_0x254365){var _0x3ae914={};_0x3ae914[_0x254365]={'$like':'%'+_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x51')]+'%'};return _0x3ae914;})});}_0x4bf18c=_[_0xa5c8('0x50')]({},_0x4bf18c,_0x20c96e[_0xa5c8('0x66')]);return db['CannedAnswer'][_0xa5c8('0x2d')]({'where':_0x4bf18c[_0xa5c8('0x4f')]})[_0xa5c8('0x1c')](function(_0x2a67a0){_0x44b024[_0xa5c8('0x2d')]=_0x2a67a0;if(_0x20c96e[_0xa5c8('0x43')][_0xa5c8('0x52')]){_0x4bf18c[_0xa5c8('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0xa5c8('0x54')](_0x4bf18c);})[_0xa5c8('0x1c')](function(_0x5d7ea8){_0x44b024[_0xa5c8('0x55')]=_0x5d7ea8;return _0x44b024;});}})[_0xa5c8('0x1c')](respondWithFilteredResult(_0x3f21a1,_0x4bf18c))[_0xa5c8('0x26')](handleError(_0x3f21a1,null));};exports[_0xa5c8('0x6d')]=function(_0xf0a89d,_0x3c5c45,_0x4e4f35){return db[_0xa5c8('0x3d')][_0xa5c8('0x58')]({'where':{'id':_0xf0a89d['params']['id']}})['then'](handleEntityNotFound(_0x3c5c45,null))['then'](function(_0x229378){if(_0x229378){return _0x229378[_0xa5c8('0x6d')](_0xf0a89d['query'][_0xa5c8('0x68')]);}})[_0xa5c8('0x1c')](respondWithStatusCode(_0x3c5c45,null))[_0xa5c8('0x26')](handleError(_0x3c5c45,null));};exports[_0xa5c8('0x6e')]=function(_0x332350,_0x4b2d0d,_0x3a3d53){var _0x388322={'body':_0x332350['body'],'channel':_0xa5c8('0x6f')};var _0x414685=[];var _0x430957=[];var _0x11aff6={};var _0x24a4c5=![];return db[_0xa5c8('0x70')][_0xa5c8('0x62')]()[_0xa5c8('0x1c')](function(_0x1b1a4c){if(!_0x1b1a4c){throw new db['Sequelize'][(_0xa5c8('0x71'))](_0xa5c8('0x72'));}_0x414685=_[_0xa5c8('0x73')](_[_0xa5c8('0x44')](_0x1b1a4c),[_0xa5c8('0x74'),_0xa5c8('0x75')]);_0x430957=_[_0xa5c8('0x73')](_['keys'](_0x1b1a4c),[_0xa5c8('0x74'),_0xa5c8('0x75'),_0xa5c8('0x76'),_0xa5c8('0x77')]);if(_0x332350[_0xa5c8('0x5a')]['id']){delete _0x332350[_0xa5c8('0x5a')]['id'];}if(_[_0xa5c8('0x78')](_0x332350['body'][_0xa5c8('0x79')])){throw new db['Sequelize'][(_0xa5c8('0x71'))](_0xa5c8('0x7a'));}if(_[_0xa5c8('0x78')](_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x5a')])||_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x5a')]===''){throw new db['Sequelize']['ValidationError'](_0xa5c8('0x7b'));}if(_[_0xa5c8('0x78')](_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x7c')])){throw new db[(_0xa5c8('0x7d'))][(_0xa5c8('0x71'))](_0xa5c8('0x7e')+_0x430957);}if(!_[_0xa5c8('0x7f')](_0x430957,_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x7c')])){throw new db[(_0xa5c8('0x7d'))][(_0xa5c8('0x71'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x430957);}_0x11aff6[_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x7c')]]=_0x332350['body'][_0xa5c8('0x79')];})[_0xa5c8('0x1c')](function(){return db[_0xa5c8('0x3d')][_0xa5c8('0x58')]({'where':{'id':_0x332350[_0xa5c8('0x61')]['id']},'include':[{'model':db[_0xa5c8('0x80')],'as':_0xa5c8('0x81'),'include':[{'model':db['CmContact'],'as':_0xa5c8('0x82'),'where':_0x11aff6,'limit':0x1,'order':[['updatedAt',_0xa5c8('0x83')]]}]},{'model':db[_0xa5c8('0x84')],'as':'Applications'}]});})[_0xa5c8('0x1c')](handleEntityNotFound(_0x4b2d0d,null))[_0xa5c8('0x1c')](function(_0x26e663){if(_0x26e663&&_0x26e663[_0xa5c8('0x81')]){_0x388322[_0xa5c8('0x85')]=_0x26e663;_0x388322[_0xa5c8('0x86')]=_0x26e663['Applications'];_0x388322[_0xa5c8('0x87')]=_0x26e663[_0xa5c8('0x81')];_0x388322[_0xa5c8('0x86')]=_[_0xa5c8('0x88')](_0x388322[_0xa5c8('0x86')],[_0xa5c8('0x89')],[_0xa5c8('0x8a')]);if(_0x388322['account'][_0xa5c8('0x8b')]){delete _0x388322[_0xa5c8('0x85')][_0xa5c8('0x8b')];}if(_0x388322[_0xa5c8('0x85')]['List']&&_0x388322['account']['List']['Contacts'][_0xa5c8('0x49')]){return _0x388322[_0xa5c8('0x85')]['List'][_0xa5c8('0x82')][0x0];}var _0x1fa002=_['defaults'](_0x332350[_0xa5c8('0x5a')],{'firstName':_0x332350['body'][_0xa5c8('0x79')],'ListId':_0x26e663[_0xa5c8('0x77')]});_0x1fa002[_0x332350['body']['mapKey']]=_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x79')];return db[_0xa5c8('0x70')]['create'](_0x1fa002,{'fields':_0x414685,'raw':!![]});}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x4b2d0d,null))['then'](function(_0x9d9a97){_0x388322[_0xa5c8('0x8c')]=_0x9d9a97;if(_0x9d9a97){var _0x3e49d0={'ContactId':_0x9d9a97['id'],'OpenchannelAccountId':_0x332350[_0xa5c8('0x61')]['id'],'from':(_0x9d9a97['firstName']||'')+'\x20'+(_0x9d9a97[_0xa5c8('0x8d')]||'')};var _0x471d03={'OpenchannelAccountId':_0x332350[_0xa5c8('0x61')]['id'],'closed':![]};if(_0x332350['body'][_0xa5c8('0x8e')]){_0x471d03[_0xa5c8('0x8e')]=_0x332350['body']['threadId'];return db[_0xa5c8('0x8f')][_0xa5c8('0x58')]({'where':_0x471d03})[_0xa5c8('0x1c')](function(_0x4142ea){if(_0x4142ea){return[_0x4142ea,![]];}_0x3e49d0[_0xa5c8('0x8e')]=_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x8e')];_0x3e49d0['externalUrl']=_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x90')];return db[_0xa5c8('0x8f')][_0xa5c8('0x59')](_0x3e49d0)['then'](function(_0x48f138){return[_0x48f138,!![]];});});}else{_0x471d03[_0xa5c8('0x8e')]=null;}_0x471d03[_0xa5c8('0x91')]=_0x9d9a97['id'];return db[_0xa5c8('0x8f')][_0xa5c8('0x58')]({'where':_0x471d03})[_0xa5c8('0x1c')](function(_0x2a9fb6){if(_0x2a9fb6){return[_0x2a9fb6,![]];}return db[_0xa5c8('0x8f')][_0xa5c8('0x59')](_0x3e49d0)[_0xa5c8('0x1c')](function(_0x45f297){return[_0x45f297,!![]];});});}})[_0xa5c8('0x92')](function(_0x4ef8a8,_0x178b8f){if(_0x4ef8a8){_0x24a4c5=_0x178b8f;if(!_0x178b8f){var _0x39f4f3={'from':(_0x388322[_0xa5c8('0x8c')][_0xa5c8('0x93')]||'')+'\x20'+(_0x388322[_0xa5c8('0x8c')]['lastName']||'')};if(_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x8e')]&&_0x332350['body'][_0xa5c8('0x94')]&&_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x8e')]!=_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x94')]){_0x39f4f3[_0xa5c8('0x8e')]=_0x332350['body']['messageId'];}return _0x4ef8a8['update'](_0x39f4f3);}else{return _0x4ef8a8;}}})[_0xa5c8('0x1c')](function(_0xa309ac){_0x388322[_0xa5c8('0x95')]=_0xa309ac[_0xa5c8('0x35')]({'plain':!![]});_0x388322[_0xa5c8('0x95')][_0xa5c8('0x96')]=_0x24a4c5;if(_0x388322[_0xa5c8('0x95')][_0xa5c8('0x96')]){if(_0x388322['account'][_0xa5c8('0x97')]){_0x388322[_0xa5c8('0x86')]['push']({'id':0x0,'priority':_0x388322[_0xa5c8('0x86')][_0xa5c8('0x49')]+0x1,'app':'close','appdata':_0xa5c8('0x98'),'interval':_0xa5c8('0x99')});}}return db['OpenchannelMessage'][_0xa5c8('0x59')]({'body':_0x332350[_0xa5c8('0x5a')]['body'],'OpenchannelAccountId':_0x332350[_0xa5c8('0x61')]['id'],'OpenchannelInteractionId':_0xa309ac['id'],'direction':'in','ContactId':_0x388322['contact']['id'],'AttachmentId':_0x332350[_0xa5c8('0x5a')][_0xa5c8('0x9a')]});})[_0xa5c8('0x1c')](function(_0x14ffb2){_0x388322['message']=_0x14ffb2;if(_0x388322['interaction'][_0xa5c8('0x9b')]){return db[_0xa5c8('0x9c')][_0xa5c8('0x58')]({'attributes':['id','name'],'where':{'id':_0x388322['interaction']['UserId']}})[_0xa5c8('0x1c')](function(_0x3d56da){if(_0x3d56da){_0x388322['applications'][_0xa5c8('0x9d')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x3d56da[_0xa5c8('0x42')]+','+(_0x388322['account'][_0xa5c8('0x9e')]||0xa),'interval':_0xa5c8('0x99')});_0x388322[_0xa5c8('0x9f')]=![];}return respondWithRpcPromise('Start','startRouting',_0x388322);});}return respondWithRpcPromise(_0xa5c8('0xa0'),_0xa5c8('0xa1'),_0x388322);})['then'](function(_0x325a9b){respondWithRpcPromise(_0xa5c8('0xa2'),_0xa5c8('0xa2'),{'event':'notify','message':_0x325a9b},client9002);return _0x325a9b;})[_0xa5c8('0x1c')](respondWithResult(_0x4b2d0d,null))[_0xa5c8('0x26')](handleError(_0x4b2d0d,null));};exports[_0xa5c8('0xa3')]=function(_0x5ab0a7,_0x2145f5,_0x2d7720){return db[_0xa5c8('0x3d')]['findOne']({'where':{'id':_0x5ab0a7[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x2145f5,null))[_0xa5c8('0x1c')](function(_0x376d1a){if(_0x376d1a){return db[_0xa5c8('0xa4')][_0xa5c8('0xa5')](function(_0x488224){return db['OpenchannelApplication'][_0xa5c8('0x34')]({'where':{'OpenchannelAccountId':_0x5ab0a7[_0xa5c8('0x61')]['id']},'transaction':_0x488224})[_0xa5c8('0x1c')](function(_0x44f9b9){var _0x44279c=_['map'](_0x5ab0a7[_0xa5c8('0x5a')],function(_0x54ab44){_0x54ab44[_0xa5c8('0x6a')]=_0x5ab0a7['params']['id'];return _0x54ab44;});return db[_0xa5c8('0x84')][_0xa5c8('0xa6')](_0x44279c,{'transaction':_0x488224});});})[_0xa5c8('0x1c')](function(){return db[_0xa5c8('0x84')][_0xa5c8('0xa7')]({'where':{'OpenchannelAccountId':_0x5ab0a7['params']['id']},'order':_0xa5c8('0x89')});});}})[_0xa5c8('0x1c')](respondWithResult(_0x2145f5,null))[_0xa5c8('0x26')](handleError(_0x2145f5,null));};exports[_0xa5c8('0xa8')]=function(_0x2084f9,_0x21e07f,_0x30f1a4){var _0xa3c30e={};var _0x502402={};var _0x461f2d;var _0x1d1656;return db[_0xa5c8('0x3d')]['findOne']({'where':{'id':_0x2084f9[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x21e07f,null))[_0xa5c8('0x1c')](function(_0x5866ec){if(_0x5866ec){_0x461f2d=_0x5866ec;_0x502402['model']=_[_0xa5c8('0x44')](db[_0xa5c8('0x84')][_0xa5c8('0x3e')]);_0x502402['query']=_['keys'](_0x2084f9[_0xa5c8('0x43')]);_0x502402[_0xa5c8('0x45')]=_[_0xa5c8('0x46')](_0x502402[_0xa5c8('0x41')],_0x502402['query']);_0xa3c30e[_0xa5c8('0x47')]=_['intersection'](_0x502402['model'],qs[_0xa5c8('0x48')](_0x2084f9[_0xa5c8('0x43')][_0xa5c8('0x48')]));_0xa3c30e[_0xa5c8('0x47')]=_0xa3c30e[_0xa5c8('0x47')][_0xa5c8('0x49')]?_0xa3c30e[_0xa5c8('0x47')]:_0x502402[_0xa5c8('0x41')];_0xa3c30e[_0xa5c8('0x4c')]=qs[_0xa5c8('0x4d')](_0x2084f9[_0xa5c8('0x43')][_0xa5c8('0x4d')]);_0xa3c30e[_0xa5c8('0x4f')]=qs['filters'](_[_0xa5c8('0x4e')](_0x2084f9[_0xa5c8('0x43')],_0x502402['filters']));if(_0x2084f9['query']['filter']){_0xa3c30e['where']=_['merge'](_0xa3c30e['where'],{'$or':_['map'](_0xa3c30e[_0xa5c8('0x47')],function(_0x48a7d3){var _0x488025={};_0x488025[_0x48a7d3]={'$like':'%'+_0x2084f9[_0xa5c8('0x43')][_0xa5c8('0x51')]+'%'};return _0x488025;})});}_0xa3c30e=_[_0xa5c8('0x50')]({},_0xa3c30e,_0x2084f9[_0xa5c8('0x66')]);return _0x461f2d[_0xa5c8('0xa8')](_0xa3c30e);}})['then'](function(_0x25382f){if(_0x25382f){_0x1d1656=_0x25382f[_0xa5c8('0x49')];if(!_0x2084f9[_0xa5c8('0x43')][_0xa5c8('0x4a')]('nolimit')){_0xa3c30e['limit']=qs[_0xa5c8('0x2c')](_0x2084f9[_0xa5c8('0x43')][_0xa5c8('0x2c')]);_0xa3c30e[_0xa5c8('0x2a')]=qs[_0xa5c8('0x2a')](_0x2084f9[_0xa5c8('0x43')]['offset']);}return _0x461f2d[_0xa5c8('0xa8')](_0xa3c30e);}})[_0xa5c8('0x1c')](function(_0x31570a){if(_0x31570a){return _0x31570a?{'count':_0x1d1656,'rows':_0x31570a}:null;}})['then'](respondWithResult(_0x21e07f,null))['catch'](handleError(_0x21e07f,null));};exports[_0xa5c8('0xa9')]=function(_0x5f5570,_0x53acad,_0x2fd6f2){var _0x4f208a={'raw':![],'where':{}};var _0x34b295={};var _0x14f51d={'count':0x0,'rows':[]};return db[_0xa5c8('0x3d')]['findOne']({'where':{'id':_0x5f5570[_0xa5c8('0x61')]['id']}})['then'](handleEntityNotFound(_0x53acad,null))[_0xa5c8('0x1c')](function(_0x42989b){if(_0x42989b){_0x34b295[_0xa5c8('0x41')]=_[_0xa5c8('0x44')](db['OpenchannelInteraction'][_0xa5c8('0x3e')]);_0x34b295['query']=_['keys'](_0x5f5570['query']);_0x34b295['filters']=_[_0xa5c8('0x46')](_0x34b295[_0xa5c8('0x41')],_0x34b295[_0xa5c8('0x43')]);_0x4f208a[_0xa5c8('0x47')]=_[_0xa5c8('0x46')](_0x34b295[_0xa5c8('0x41')],qs[_0xa5c8('0x48')](_0x5f5570[_0xa5c8('0x43')]['fields']));_0x4f208a[_0xa5c8('0x47')]=_0x4f208a[_0xa5c8('0x47')][_0xa5c8('0x49')]?_0x4f208a[_0xa5c8('0x47')]:_0x34b295['model'];if(!_0x5f5570[_0xa5c8('0x43')][_0xa5c8('0x4a')](_0xa5c8('0x4b'))){_0x4f208a[_0xa5c8('0x2c')]=qs[_0xa5c8('0x2c')](_0x5f5570['query'][_0xa5c8('0x2c')]);_0x4f208a[_0xa5c8('0x2a')]=qs[_0xa5c8('0x2a')](_0x5f5570[_0xa5c8('0x43')][_0xa5c8('0x2a')]);}_0x4f208a[_0xa5c8('0x4c')]=qs[_0xa5c8('0x4d')](_0x5f5570[_0xa5c8('0x43')][_0xa5c8('0x4d')]);_0x4f208a[_0xa5c8('0x4f')]=qs[_0xa5c8('0x45')](_['pick'](_0x5f5570[_0xa5c8('0x43')],_0x34b295[_0xa5c8('0x45')]));_0x4f208a['where'][_0xa5c8('0x6a')]=_0x42989b['id'];if(_0x5f5570['query'][_0xa5c8('0x51')]){_0x4f208a[_0xa5c8('0x4f')]=_[_0xa5c8('0x50')](_0x4f208a[_0xa5c8('0x4f')],{'$or':_[_0xa5c8('0x3c')](_0x4f208a[_0xa5c8('0x47')],function(_0x53eada){var _0x576545={};_0x576545[_0x53eada]={'$like':'%'+_0x5f5570[_0xa5c8('0x43')][_0xa5c8('0x51')]+'%'};return _0x576545;})});}_0x4f208a=_[_0xa5c8('0x50')]({},_0x4f208a,_0x5f5570[_0xa5c8('0x66')]);return db[_0xa5c8('0x8f')][_0xa5c8('0x2d')]({'where':_0x4f208a['where']})[_0xa5c8('0x1c')](function(_0x4b7dd1){_0x14f51d[_0xa5c8('0x2d')]=_0x4b7dd1;if(_0x5f5570['query']['includeAll']){_0x4f208a[_0xa5c8('0x53')]=[{'model':db[_0xa5c8('0x70')],'as':'Contact','required':![]},{'model':db[_0xa5c8('0x9c')],'as':_0xa5c8('0xaa'),'attributes':[_0xa5c8('0x42'),_0xa5c8('0xab'),_0xa5c8('0xac')],'required':![]},{'model':db['Tag'],'as':_0xa5c8('0xad'),'attributes':['id',_0xa5c8('0x42'),_0xa5c8('0xae')],'where':_0x5f5570[_0xa5c8('0x43')][_0xa5c8('0xaf')]?{'id':_0x5f5570[_0xa5c8('0x43')][_0xa5c8('0xaf')]}:undefined,'required':_0x5f5570['query']['tag']?!![]:![]}];}return db[_0xa5c8('0x8f')][_0xa5c8('0x54')](_0x4f208a);})['then'](function(_0x15bc53){_0x14f51d[_0xa5c8('0x55')]=_0x15bc53;return _0x14f51d;});}})[_0xa5c8('0x1c')](respondWithFilteredResult(_0x53acad,_0x4f208a))[_0xa5c8('0x26')](handleError(_0x53acad,null));};exports[_0xa5c8('0xb0')]=function(_0x4d7a37,_0x2dc054,_0x521897){return db[_0xa5c8('0x3d')][_0xa5c8('0x58')]({'where':{'id':_0x4d7a37[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x2dc054,null))['then'](function(_0x5d14fd){if(_0x5d14fd){return _0x5d14fd[_0xa5c8('0xb0')](_0x4d7a37['body'][_0xa5c8('0x68')],_['omit'](_0x4d7a37[_0xa5c8('0x5a')],[_0xa5c8('0x68'),'id'])||{})[_0xa5c8('0x92')](function(_0x142e5e){for(var _0xa075e6=0x0;_0xa075e6<_0x4d7a37[_0xa5c8('0x5a')][_0xa5c8('0x68')][_0xa5c8('0x49')];_0xa075e6+=0x1){socket[_0xa5c8('0xb1')](_0xa5c8('0xb2'),{'UserId':Number(_0x4d7a37[_0xa5c8('0x5a')][_0xa5c8('0x68')][_0xa075e6]),'OpenchannelAccountId':Number(_0x4d7a37['params']['id'])});}return _0x142e5e;});}})[_0xa5c8('0x1c')](respondWithResult(_0x2dc054,null))[_0xa5c8('0x26')](handleError(_0x2dc054,null));};exports['removeAgents']=function(_0x7c9848,_0x4d7bed,_0x2cad8a){return db[_0xa5c8('0x3d')]['find']({'where':{'id':_0x7c9848[_0xa5c8('0x61')]['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x4d7bed,null))[_0xa5c8('0x1c')](function(_0x4d9e3a){if(_0x4d9e3a){return _0x4d9e3a[_0xa5c8('0xb3')](_0x7c9848[_0xa5c8('0x43')][_0xa5c8('0x68')])[_0xa5c8('0x1c')](function(){if(_[_0xa5c8('0xb4')](_0x7c9848['query'][_0xa5c8('0x68')])){for(var _0x412097=0x0;_0x412097<_0x7c9848[_0xa5c8('0x43')][_0xa5c8('0x68')][_0xa5c8('0x49')];_0x412097+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x7c9848[_0xa5c8('0x43')][_0xa5c8('0x68')][_0x412097]),'OpenchannelAccountId':Number(_0x7c9848['params']['id'])});}}else{socket[_0xa5c8('0xb1')](_0xa5c8('0xb5'),{'UserId':Number(_0x7c9848['query'][_0xa5c8('0x68')]),'OpenchannelAccountId':Number(_0x7c9848[_0xa5c8('0x61')]['id'])});}});}})[_0xa5c8('0x1c')](respondWithStatusCode(_0x4d7bed,null))[_0xa5c8('0x26')](handleError(_0x4d7bed,null));};exports['getAgents']=function(_0x4850a5,_0x180fdf,_0x4d9ef0){var _0x4c6f49={};var _0x497265={};var _0x388268;var _0xe28c62;return db['OpenchannelAccount'][_0xa5c8('0x6c')]({'where':{'id':_0x4850a5[_0xa5c8('0x61')]['id']}})['then'](handleEntityNotFound(_0x180fdf,null))[_0xa5c8('0x1c')](function(_0xfdf5a2){if(_0xfdf5a2){_0x388268=_0xfdf5a2;_0x497265[_0xa5c8('0x41')]=_[_0xa5c8('0x44')](db[_0xa5c8('0x9c')]['rawAttributes']);_0x497265[_0xa5c8('0x43')]=_[_0xa5c8('0x44')](_0x4850a5[_0xa5c8('0x43')]);_0x497265[_0xa5c8('0x45')]=_['intersection'](_0x497265['model'],_0x497265[_0xa5c8('0x43')]);_0x4c6f49['attributes']=_[_0xa5c8('0x46')](_0x497265['model'],qs[_0xa5c8('0x48')](_0x4850a5['query'][_0xa5c8('0x48')]));_0x4c6f49[_0xa5c8('0x47')]=_0x4c6f49[_0xa5c8('0x47')][_0xa5c8('0x49')]?_0x4c6f49[_0xa5c8('0x47')]:_0x497265[_0xa5c8('0x41')];_0x4c6f49[_0xa5c8('0x4c')]=qs[_0xa5c8('0x4d')](_0x4850a5[_0xa5c8('0x43')]['sort']);_0x4c6f49[_0xa5c8('0x4f')]=qs[_0xa5c8('0x45')](_[_0xa5c8('0x4e')](_0x4850a5[_0xa5c8('0x43')],_0x497265[_0xa5c8('0x45')]));if(_0x4850a5[_0xa5c8('0x43')][_0xa5c8('0x51')]){_0x4c6f49[_0xa5c8('0x4f')]=_[_0xa5c8('0x50')](_0x4c6f49[_0xa5c8('0x4f')],{'$or':_[_0xa5c8('0x3c')](_0x4c6f49[_0xa5c8('0x47')],function(_0x500795){var _0x297432={};_0x297432[_0x500795]={'$like':'%'+_0x4850a5[_0xa5c8('0x43')][_0xa5c8('0x51')]+'%'};return _0x297432;})});}_0x4c6f49=_['merge']({},_0x4c6f49,_0x4850a5[_0xa5c8('0x66')]);return _0x388268[_0xa5c8('0xb6')](_0x4c6f49);}})[_0xa5c8('0x1c')](function(_0x268444){if(_0x268444){_0xe28c62=_0x268444[_0xa5c8('0x49')];if(!_0x4850a5['query'][_0xa5c8('0x4a')]('nolimit')){_0x4c6f49[_0xa5c8('0x2c')]=qs[_0xa5c8('0x2c')](_0x4850a5['query'][_0xa5c8('0x2c')]);_0x4c6f49[_0xa5c8('0x2a')]=qs[_0xa5c8('0x2a')](_0x4850a5['query'][_0xa5c8('0x2a')]);}return _0x388268[_0xa5c8('0xb6')](_0x4c6f49);}})['then'](function(_0x33ed4){if(_0x33ed4){return _0x33ed4?{'count':_0xe28c62,'rows':_0x33ed4}:null;}})['then'](respondWithResult(_0x180fdf,null))[_0xa5c8('0x26')](handleError(_0x180fdf,null));};exports[_0xa5c8('0xb7')]=function(_0x522ed9,_0x44e80c,_0x4a529){var _0x162f86,_0x27d750,_0x5a27da;if(_[_0xa5c8('0x78')](_0x522ed9[_0xa5c8('0x5a')]['body'])||_0x522ed9[_0xa5c8('0x5a')]['body']===''){throw new db[(_0xa5c8('0x7d'))]['ValidationError'](_0xa5c8('0x7b'));}if(_['isNil'](_0x522ed9['body']['to'])){}_0x162f86=_0x522ed9[_0xa5c8('0x5a')]['to'];return db[_0xa5c8('0x3d')][_0xa5c8('0x6c')]({'where':{'id':_0x522ed9['params']['id']}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x44e80c,null))['then'](function(_0x482905){if(_0x482905){return db[_0xa5c8('0x3d')]['find']({'where':{'id':_0x482905['id']},'include':[{'model':db[_0xa5c8('0x80')],'as':_0xa5c8('0x81'),'include':[{'model':db[_0xa5c8('0x70')],'as':'Contacts','where':{[_0x482905[_0xa5c8('0x7c')]]:_0x162f86},'limit':0x1,'order':[['updatedAt',_0xa5c8('0x83')]]}]}]})[_0xa5c8('0x1c')](handleEntityNotFound(_0x44e80c,null))[_0xa5c8('0x1c')](function(_0x53cefb){if(_0x53cefb&&_0x53cefb[_0xa5c8('0x81')]){_0x27d750=_0x53cefb[_0xa5c8('0x35')]({'plain':!![]});if(_0x27d750[_0xa5c8('0x81')]&&_0x27d750[_0xa5c8('0x81')][_0xa5c8('0x82')][_0xa5c8('0x49')]){return _0x27d750[_0xa5c8('0x81')][_0xa5c8('0x82')][0x0];}return db[_0xa5c8('0x70')][_0xa5c8('0x59')](_[_0xa5c8('0x15')](_0x522ed9['body'],{'firstName':_0x162f86,[_0x53cefb[_0xa5c8('0x7c')]]:_0x162f86,'phone':_0x162f86,'ListId':_0x27d750[_0xa5c8('0x77')]}));}})[_0xa5c8('0x1c')](handleEntityNotFound(_0x44e80c,null))[_0xa5c8('0x1c')](function(_0x515a81){if(_0x515a81){_0x5a27da=_0x515a81;return db[_0xa5c8('0x8f')][_0xa5c8('0x58')]({'where':{'ContactId':_0x5a27da['id'],'closed':![],'OpenchannelAccountId':_0x27d750['id']}})[_0xa5c8('0x1c')](function(_0x3b546c){if(_0x3b546c){return[_0x3b546c,![]];}return db[_0xa5c8('0x8f')][_0xa5c8('0x59')]({'UserId':_0x522ed9[_0xa5c8('0x5d')]['id'],'ContactId':_0x5a27da['id'],'OpenchannelAccountId':_0x27d750['id'],'lastMsgDirection':_0xa5c8('0xb8'),'Messages':[_[_0xa5c8('0x50')](_0x522ed9[_0xa5c8('0x5a')],{'read':![],'body':_0x522ed9['body'][_0xa5c8('0x5a')],'OpenchannelAccountId':_0x27d750['id'],'UserId':_0x522ed9[_0xa5c8('0x5d')]['id'],'ContactId':_0x5a27da['id']})]},{'include':[{'model':db[_0xa5c8('0xb9')],'as':_0xa5c8('0xba')}]})['then'](function(_0x29162c){return[_0x29162c,!![]];});});}})['spread'](function(_0x240699,_0x24a6ef){if(_0x24a6ef){return _0x240699;}return db[_0xa5c8('0xb9')][_0xa5c8('0x59')](_[_0xa5c8('0x50')](_0x522ed9['body'],{'read':![],'body':_0x522ed9[_0xa5c8('0x5a')][_0xa5c8('0x5a')],'OpenchannelAccountId':_0x27d750['id'],'OpenchannelInteractionId':_0x240699['id'],'UserId':_0x522ed9['user']['id'],'ContactId':_0x5a27da['id']}))[_0xa5c8('0x1c')](function(_0x3916ca){_0x240699['dataValues'][_0xa5c8('0xba')]=[];_0x240699[_0xa5c8('0xbb')][_0xa5c8('0xba')][_0xa5c8('0xbc')](_0x3916ca['dataValues']);return _0x240699;});});}})[_0xa5c8('0x1c')](respondWithResult(_0x44e80c,null))['catch'](handleError(_0x44e80c,null));};
\ No newline at end of file
index 19d008a..16aec4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['remove','emit','hasOwnProperty','hook','events','OpenchannelAccount','setMaxListeners','update'];(function(_0xc5b3f5,_0x40786d){var _0x309252=function(_0x3407c3){while(--_0x3407c3){_0xc5b3f5['push'](_0xc5b3f5['shift']());}};_0x309252(++_0x40786d);}(_0xee5b,0x1f4));var _0xbee5=function(_0x438ebb,_0x2017d8){_0x438ebb=_0x438ebb-0x0;var _0x872276=_0xee5b[_0x438ebb];return _0x872276;};'use strict';var EventEmitter=require(_0xbee5('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xbee5('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xbee5('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbee5('0x3'),'afterDestroy':_0xbee5('0x4')};function emitEvent(_0x2eb857){return function(_0x210159,_0x4bd202,_0x5200b1){OpenchannelAccountEvents[_0xbee5('0x5')](_0x2eb857+':'+_0x210159['id'],_0x210159);OpenchannelAccountEvents[_0xbee5('0x5')](_0x2eb857,_0x210159);_0x5200b1(null);};}for(var e in events){if(events[_0xbee5('0x6')](e)){var event=events[e];OpenchannelAccount[_0xbee5('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x878f=['hook','exports','../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit'];(function(_0x4a640d,_0x29aa3a){var _0xa22372=function(_0x3d253f){while(--_0x3d253f){_0x4a640d['push'](_0x4a640d['shift']());}};_0xa22372(++_0x29aa3a);}(_0x878f,0x173));var _0xf878=function(_0x8a3e33,_0x241bd1){_0x8a3e33=_0x8a3e33-0x0;var _0x2bcc45=_0x878f[_0x8a3e33];return _0x2bcc45;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0xf878('0x0'))['db'][_0xf878('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xf878('0x2')](0x0);var events={'afterCreate':_0xf878('0x3'),'afterUpdate':_0xf878('0x4'),'afterDestroy':_0xf878('0x5')};function emitEvent(_0x9e6783){return function(_0x45a37b,_0x240b48,_0xcf1927){OpenchannelAccountEvents[_0xf878('0x6')](_0x9e6783+':'+_0x45a37b['id'],_0x45a37b);OpenchannelAccountEvents['emit'](_0x9e6783,_0x45a37b);_0xcf1927(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xf878('0x7')](e,emitEvent(event));}}module[_0xf878('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index 6c340ef..52a2794 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(_0x1ca21b,_0x486657){var _0x52842e=function(_0x5401f2){while(--_0x5401f2){_0x1ca21b['push'](_0x1ca21b['shift']());}};_0x52842e(++_0x486657);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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(_0x3066e8,_0x15dec0){var _0x4cfaa5=function(_0x8f4477){while(--_0x8f4477){_0x3066e8['push'](_0x3066e8['shift']());}};_0x4cfaa5(++_0x15dec0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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 24cd283..6ee1fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['redis','localhost','socket.io-emitter','./openchannelAccount.socket','request','then','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','OpenchannelAccount,\x20%s,\x20%s','message','info','catch','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x48c784,_0x52b6fc){var _0x4634d9=function(_0x5c4f16){while(--_0x5c4f16){_0x48c784['push'](_0x48c784['shift']());}};_0x4634d9(++_0x52b6fc);}(_0x757a,0xde));var _0xa757=function(_0xe2302b,_0x3e7fa9){_0xe2302b=_0xe2302b-0x0;var _0x1b0f0c=_0x757a[_0xe2302b];return _0x1b0f0c;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa757('0x2'))['db'];var utils=require(_0xa757('0x3'));var logger=require(_0xa757('0x4'))(_0xa757('0x5'));var config=require(_0xa757('0x6'));var jayson=require(_0xa757('0x7'));var client=jayson['client'][_0xa757('0x8')]({'port':0x232a});config[_0xa757('0x9')]=_['defaults'](config[_0xa757('0x9')],{'host':_0xa757('0xa'),'port':0x18eb});var socket=require(_0xa757('0xb'))(new Redis(config[_0xa757('0x9')]));require(_0xa757('0xc'))['register'](socket);function respondWithRpcPromise(_0x89c630,_0x2ca96f,_0x32f0ec){return new BPromise(function(_0x3e2c9a,_0xb7610b){return client[_0xa757('0xd')](_0x89c630,_0x32f0ec)[_0xa757('0xe')](function(_0x483d77){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x2ca96f,'request\x20sent');logger['debug'](_0xa757('0xf'),_0x2ca96f,'request\x20sent',JSON['stringify'](_0x483d77));if(_0x483d77[_0xa757('0x10')]){if(_0x483d77['error']['code']===0x1f4){logger[_0xa757('0x10')](_0xa757('0x11'),_0x2ca96f,_0x483d77[_0xa757('0x10')][_0xa757('0x12')]);return _0xb7610b(_0x483d77[_0xa757('0x10')][_0xa757('0x12')]);}logger[_0xa757('0x10')](_0xa757('0x11'),_0x2ca96f,_0x483d77[_0xa757('0x10')][_0xa757('0x12')]);return _0x3e2c9a(_0x483d77['error'][_0xa757('0x12')]);}else{logger[_0xa757('0x13')](_0xa757('0x11'),_0x2ca96f,'request\x20sent');_0x3e2c9a(_0x483d77['result'][_0xa757('0x12')]);}})[_0xa757('0x14')](function(_0x1bd14c){logger[_0xa757('0x10')](_0xa757('0x11'),_0x2ca96f,_0x1bd14c);_0xb7610b(_0x1bd14c);});});}
\ No newline at end of file
+var _0x2b65=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','info','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x2b65,0x131));var _0x52b6=function(_0x17b0d4,_0x377add){_0x17b0d4=_0x17b0d4-0x0;var _0x2d02c7=_0x2b65[_0x17b0d4];return _0x2d02c7;};'use strict';var _=require(_0x52b6('0x0'));var util=require(_0x52b6('0x1'));var moment=require(_0x52b6('0x2'));var BPromise=require(_0x52b6('0x3'));var rs=require(_0x52b6('0x4'));var fs=require('fs');var Redis=require(_0x52b6('0x5'));var db=require(_0x52b6('0x6'))['db'];var utils=require(_0x52b6('0x7'));var logger=require('../../config/logger')(_0x52b6('0x8'));var config=require(_0x52b6('0x9'));var jayson=require(_0x52b6('0xa'));var client=jayson[_0x52b6('0xb')][_0x52b6('0xc')]({'port':0x232a});config[_0x52b6('0xd')]=_[_0x52b6('0xe')](config[_0x52b6('0xd')],{'host':_0x52b6('0xf'),'port':0x18eb});var socket=require(_0x52b6('0x10'))(new Redis(config['redis']));require(_0x52b6('0x11'))[_0x52b6('0x12')](socket);function respondWithRpcPromise(_0x18b34d,_0x4d6d94,_0x19d1d9){return new BPromise(function(_0x2bb857,_0x19f475){return client[_0x52b6('0x13')](_0x18b34d,_0x19d1d9)['then'](function(_0xf91209){logger[_0x52b6('0x14')](_0x52b6('0x15'),_0x4d6d94,'request\x20sent');logger[_0x52b6('0x16')](_0x52b6('0x17'),_0x4d6d94,'request\x20sent',JSON[_0x52b6('0x18')](_0xf91209));if(_0xf91209['error']){if(_0xf91209['error'][_0x52b6('0x19')]===0x1f4){logger[_0x52b6('0x1a')](_0x52b6('0x15'),_0x4d6d94,_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);return _0x19f475(_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);}logger[_0x52b6('0x1a')](_0x52b6('0x15'),_0x4d6d94,_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);return _0x2bb857(_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);}else{logger['info'](_0x52b6('0x15'),_0x4d6d94,_0x52b6('0x1c'));_0x2bb857(_0xf91209[_0x52b6('0x1d')]['message']);}})[_0x52b6('0x1e')](function(_0x184ee8){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x4d6d94,_0x184ee8);_0x19f475(_0x184ee8);});});}
\ No newline at end of file
index 6809ee4..4fce3a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d97=['emit','removeListener','register','openchannelAccount:','save','remove'];(function(_0x398dd7,_0x3d027a){var _0x4ec5da=function(_0x53da0a){while(--_0x53da0a){_0x398dd7['push'](_0x398dd7['shift']());}};_0x4ec5da(++_0x3d027a);}(_0x8d97,0x82));var _0x78d9=function(_0x4a8498,_0x109447){_0x4a8498=_0x4a8498-0x0;var _0x17a631=_0x8d97[_0x4a8498];return _0x17a631;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x78d9('0x0'),_0x78d9('0x1'),'update'];function createListener(_0x323f54,_0x1cbdd1){return function(_0x17bfab){_0x1cbdd1[_0x78d9('0x2')](_0x323f54,_0x17bfab);};}function removeListener(_0x1b690f,_0x5f4582){return function(){OpenchannelAccountEvents[_0x78d9('0x3')](_0x1b690f,_0x5f4582);};}exports[_0x78d9('0x4')]=function(_0x7bf859){for(var _0x59b38c=0x0,_0x4d1934=events['length'];_0x59b38c<_0x4d1934;_0x59b38c++){var _0x2a2cdb=events[_0x59b38c];var _0x3b3709=createListener(_0x78d9('0x5')+_0x2a2cdb,_0x7bf859);OpenchannelAccountEvents['on'](_0x2a2cdb,_0x3b3709);}};
\ No newline at end of file
+var _0x33a1=['emit','removeListener','register','length','openchannelAccount:','./openchannelAccount.events','save'];(function(_0x518573,_0x1a1e92){var _0x53fc5e=function(_0x11f0fd){while(--_0x11f0fd){_0x518573['push'](_0x518573['shift']());}};_0x53fc5e(++_0x1a1e92);}(_0x33a1,0x7c));var _0x133a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x33a1[_0x21a9d9];return _0x46adce;};'use strict';var OpenchannelAccountEvents=require(_0x133a('0x0'));var events=[_0x133a('0x1'),'remove','update'];function createListener(_0x5dc419,_0x4bcb17){return function(_0x2d6f40){_0x4bcb17[_0x133a('0x2')](_0x5dc419,_0x2d6f40);};}function removeListener(_0x35db62,_0x53da00){return function(){OpenchannelAccountEvents[_0x133a('0x3')](_0x35db62,_0x53da00);};}exports[_0x133a('0x4')]=function(_0x23c48d){for(var _0x557b93=0x0,_0x13fe1d=events[_0x133a('0x5')];_0x557b93<_0x13fe1d;_0x557b93++){var _0x31409d=events[_0x557b93];var _0x5f3a8f=createListener(_0x133a('0x6')+_0x31409d,_0x23c48d);OpenchannelAccountEvents['on'](_0x31409d,_0x5f3a8f);}};
\ No newline at end of file
index ed0ec65..5ab8fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9926=['path','connect-timeout','express','fs-extra','../../components/interaction/service','./openchannelApplication.controller','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util'];(function(_0x42779c,_0x4f12cf){var _0x101538=function(_0x19813a){while(--_0x19813a){_0x42779c['push'](_0x42779c['shift']());}};_0x101538(++_0x4f12cf);}(_0x9926,0x7c));var _0x6992=function(_0x36ffb9,_0xce4721){_0x36ffb9=_0x36ffb9-0x0;var _0xf93082=_0x9926[_0x36ffb9];return _0xf93082;};'use strict';var multer=require(_0x6992('0x0'));var util=require(_0x6992('0x1'));var path=require(_0x6992('0x2'));var timeout=require(_0x6992('0x3'));var express=require(_0x6992('0x4'));var router=express['Router']();var fs_extra=require(_0x6992('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6992('0x6'));var config=require('../../config/environment');var controller=require(_0x6992('0x7'));router['get']('/',auth[_0x6992('0x8')](),controller[_0x6992('0x9')]);router['get'](_0x6992('0xa'),auth[_0x6992('0x8')](),controller[_0x6992('0xb')]);router[_0x6992('0xc')]('/',auth[_0x6992('0x8')](),controller[_0x6992('0xd')]);router[_0x6992('0xe')](_0x6992('0xa'),auth[_0x6992('0x8')](),controller[_0x6992('0xf')]);router['delete'](_0x6992('0xa'),auth[_0x6992('0x8')](),controller[_0x6992('0x10')]);module[_0x6992('0x11')]=router;
\ No newline at end of file
+var _0xc098=['../../components/auth/service','../../components/interaction/service','isAuthenticated','get','show','post','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x541ea6,_0x51cab6){var _0x3c3e84=function(_0xc06bed){while(--_0xc06bed){_0x541ea6['push'](_0x541ea6['shift']());}};_0x3c3e84(++_0x51cab6);}(_0xc098,0xa5));var _0x8c09=function(_0xf63074,_0xa7199b){_0xf63074=_0xf63074-0x0;var _0x1fe420=_0xc098[_0xf63074];return _0x1fe420;};'use strict';var multer=require(_0x8c09('0x0'));var util=require(_0x8c09('0x1'));var path=require(_0x8c09('0x2'));var timeout=require(_0x8c09('0x3'));var express=require(_0x8c09('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8c09('0x5'));var interaction=require(_0x8c09('0x6'));var config=require('../../config/environment');var controller=require('./openchannelApplication.controller');router['get']('/',auth[_0x8c09('0x7')](),controller['index']);router[_0x8c09('0x8')]('/:id',auth[_0x8c09('0x7')](),controller[_0x8c09('0x9')]);router[_0x8c09('0xa')]('/',auth[_0x8c09('0x7')](),controller[_0x8c09('0xb')]);router[_0x8c09('0xc')](_0x8c09('0xd'),auth[_0x8c09('0x7')](),controller['update']);router[_0x8c09('0xe')](_0x8c09('0xd'),auth['isAuthenticated'](),controller[_0x8c09('0xf')]);module[_0x8c09('0x10')]=router;
\ No newline at end of file
index 1e235f8..7ba7e54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xede9=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0x3a4e77,_0x3349ba){var _0x35a151=function(_0x3fb70b){while(--_0x3fb70b){_0x3a4e77['push'](_0x3a4e77['shift']());}};_0x35a151(++_0x3349ba);}(_0xede9,0x92));var _0x9ede=function(_0x3f877d,_0x15d43f){_0x3f877d=_0x3f877d-0x0;var _0x262eda=_0xede9[_0x3f877d];return _0x262eda;};'use strict';var Sequelize=require(_0x9ede('0x0'));module[_0x9ede('0x1')]={'priority':{'type':Sequelize[_0x9ede('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9ede('0x3')},'appdata':{'type':Sequelize[_0x9ede('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x9ede('0x5')],'defaultValue':_0x9ede('0x6')}};
\ No newline at end of file
+var _0x1170=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1170,0x71));var _0x0117=function(_0x569eb6,_0x413af0){_0x569eb6=_0x569eb6-0x0;var _0x1cc18d=_0x1170[_0x569eb6];return _0x1cc18d;};'use strict';var Sequelize=require(_0x0117('0x0'));module[_0x0117('0x1')]={'priority':{'type':Sequelize[_0x0117('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x0117('0x3')],'allowNull':![],'defaultValue':_0x0117('0x4')},'appdata':{'type':Sequelize[_0x0117('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0117('0x3')],'defaultValue':_0x0117('0x6')}};
\ No newline at end of file
index 6d01449..ad4997e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a71=['merge','VIRTUAL','options','includeAll','include','findAll','rows','params','catch','create','body','update','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','sendStatus','error','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','sort','where','pick','filter'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4a71,0xeb));var _0x14a7=function(_0x520f7c,_0x7fcb49){_0x520f7c=_0x520f7c-0x0;var _0x3fba2a=_0x4a71[_0x520f7c];return _0x3fba2a;};'use strict';var emlformat=require(_0x14a7('0x0'));var rimraf=require(_0x14a7('0x1'));var zipdir=require(_0x14a7('0x2'));var jsonpatch=require(_0x14a7('0x3'));var rp=require(_0x14a7('0x4'));var moment=require(_0x14a7('0x5'));var BPromise=require(_0x14a7('0x6'));var Mustache=require(_0x14a7('0x7'));var util=require(_0x14a7('0x8'));var path=require('path');var sox=require(_0x14a7('0x9'));var csv=require(_0x14a7('0xa'));var ejs=require(_0x14a7('0xb'));var fs=require('fs');var fs_extra=require(_0x14a7('0xc'));var _=require(_0x14a7('0xd'));var squel=require(_0x14a7('0xe'));var crypto=require(_0x14a7('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x14a7('0x10'));var toCsv=require('to-csv');var querystring=require(_0x14a7('0x11'));var Papa=require(_0x14a7('0x12'));var Redis=require(_0x14a7('0x13'));var authService=require(_0x14a7('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x14a7('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x14a7('0x16'));var utils=require(_0x14a7('0x17'));var config=require(_0x14a7('0x18'));var licenseUtil=require(_0x14a7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14760d,_0x45ba1f){_0x45ba1f=_0x45ba1f||0xcc;return function(_0x374b0e){if(_0x374b0e){return _0x14760d['sendStatus'](_0x45ba1f);}return _0x14760d[_0x14a7('0x1a')](_0x45ba1f)[_0x14a7('0x1b')]();};}function respondWithResult(_0x2c2dec,_0x1e820d){_0x1e820d=_0x1e820d||0xc8;return function(_0x4c9d22){if(_0x4c9d22){return _0x2c2dec[_0x14a7('0x1a')](_0x1e820d)[_0x14a7('0x1c')](_0x4c9d22);}};}function respondWithFilteredResult(_0x510ffb,_0x4bd524){return function(_0x1cf375){if(_0x1cf375){var _0x4e73c6=typeof _0x4bd524[_0x14a7('0x1d')]===_0x14a7('0x1e')&&typeof _0x4bd524[_0x14a7('0x1f')]==='undefined';var _0x3150e8=_0x1cf375[_0x14a7('0x20')];var _0x5dda61=_0x4e73c6?0x0:_0x4bd524[_0x14a7('0x1d')];var _0x13baf1=_0x4e73c6?_0x1cf375[_0x14a7('0x20')]:_0x4bd524[_0x14a7('0x1d')]+_0x4bd524[_0x14a7('0x1f')];var _0x3b9f45;if(_0x13baf1>=_0x3150e8){_0x13baf1=_0x3150e8;_0x3b9f45=0xc8;}else{_0x3b9f45=0xce;}_0x510ffb[_0x14a7('0x1a')](_0x3b9f45);return _0x510ffb[_0x14a7('0x21')](_0x14a7('0x22'),_0x5dda61+'-'+_0x13baf1+'/'+_0x3150e8)['json'](_0x1cf375);}return null;};}function patchUpdates(_0x16ab4d){return function(_0x4baa57){try{jsonpatch[_0x14a7('0x23')](_0x4baa57,_0x16ab4d,!![]);}catch(_0x158510){return BPromise['reject'](_0x158510);}return _0x4baa57['save']();};}function saveUpdates(_0x3eec2b,_0x53b584){return function(_0x11d4d5){if(_0x11d4d5){return _0x11d4d5['update'](_0x3eec2b)[_0x14a7('0x24')](function(_0x49d639){return _0x49d639;});}return null;};}function removeEntity(_0x2994b2,_0x301c6c){return function(_0x516a3b){if(_0x516a3b){return _0x516a3b[_0x14a7('0x25')]()[_0x14a7('0x24')](function(){_0x2994b2[_0x14a7('0x1a')](0xcc)[_0x14a7('0x1b')]();});}};}function handleEntityNotFound(_0x20a429,_0x2f5f90){return function(_0x19dcf9){if(!_0x19dcf9){_0x20a429[_0x14a7('0x26')](0x194);}return _0x19dcf9;};}function handleError(_0x24b8cb,_0x500247){_0x500247=_0x500247||0x1f4;return function(_0x1d64f5){logger[_0x14a7('0x27')](_0x1d64f5['stack']);if(_0x1d64f5[_0x14a7('0x28')]){delete _0x1d64f5[_0x14a7('0x28')];}_0x24b8cb[_0x14a7('0x1a')](_0x500247)[_0x14a7('0x29')](_0x1d64f5);};}exports[_0x14a7('0x2a')]=function(_0x32bf7a,_0x4477bb){var _0x21254b={},_0x4f5089={},_0x2a07ab={'count':0x0,'rows':[]};var _0x78777c=_[_0x14a7('0x2b')](db[_0x14a7('0x2c')][_0x14a7('0x2d')],function(_0x2ccbb9){return{'name':_0x2ccbb9[_0x14a7('0x2e')],'type':_0x2ccbb9[_0x14a7('0x2f')][_0x14a7('0x30')]};});_0x4f5089[_0x14a7('0x31')]=_[_0x14a7('0x2b')](_0x78777c,_0x14a7('0x28'));_0x4f5089[_0x14a7('0x32')]=_[_0x14a7('0x33')](_0x32bf7a[_0x14a7('0x32')]);_0x4f5089[_0x14a7('0x34')]=_['intersection'](_0x4f5089['model'],_0x4f5089['query']);_0x21254b[_0x14a7('0x35')]=_[_0x14a7('0x36')](_0x4f5089['model'],qs[_0x14a7('0x37')](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x37')]));_0x21254b[_0x14a7('0x35')]=_0x21254b[_0x14a7('0x35')][_0x14a7('0x38')]?_0x21254b[_0x14a7('0x35')]:_0x4f5089[_0x14a7('0x31')];if(!_0x32bf7a[_0x14a7('0x32')]['hasOwnProperty']('nolimit')){_0x21254b[_0x14a7('0x1f')]=qs['limit'](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x1f')]);_0x21254b['offset']=qs['offset'](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x1d')]);}_0x21254b['order']=qs[_0x14a7('0x39')](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x39')]);_0x21254b[_0x14a7('0x3a')]=qs[_0x14a7('0x34')](_[_0x14a7('0x3b')](_0x32bf7a[_0x14a7('0x32')],_0x4f5089[_0x14a7('0x34')]),_0x78777c);if(_0x32bf7a['query'][_0x14a7('0x3c')]){_0x21254b[_0x14a7('0x3a')]=_[_0x14a7('0x3d')](_0x21254b[_0x14a7('0x3a')],{'$or':_['map'](_0x78777c,function(_0x2220a1){if(_0x2220a1['type']!==_0x14a7('0x3e')){var _0x27f178={};_0x27f178[_0x2220a1[_0x14a7('0x28')]]={'$like':'%'+_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x3c')]+'%'};return _0x27f178;}})});}_0x21254b=_[_0x14a7('0x3d')]({},_0x21254b,_0x32bf7a[_0x14a7('0x3f')]);var _0x357da3={'where':_0x21254b[_0x14a7('0x3a')]};return db[_0x14a7('0x2c')][_0x14a7('0x20')](_0x357da3)[_0x14a7('0x24')](function(_0x20302e){_0x2a07ab[_0x14a7('0x20')]=_0x20302e;if(_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x40')]){_0x21254b[_0x14a7('0x41')]=[{'all':!![]}];}return db[_0x14a7('0x2c')][_0x14a7('0x42')](_0x21254b);})[_0x14a7('0x24')](function(_0x7e35a1){_0x2a07ab[_0x14a7('0x43')]=_0x7e35a1;return _0x2a07ab;})[_0x14a7('0x24')](respondWithFilteredResult(_0x4477bb,_0x21254b))['catch'](handleError(_0x4477bb,null));};exports['show']=function(_0x57cde8,_0x33d488){var _0x2bfeb0={'raw':!![],'where':{'id':_0x57cde8[_0x14a7('0x44')]['id']}},_0xd2941b={};_0xd2941b[_0x14a7('0x31')]=_[_0x14a7('0x33')](db[_0x14a7('0x2c')][_0x14a7('0x2d')]);_0xd2941b[_0x14a7('0x32')]=_[_0x14a7('0x33')](_0x57cde8['query']);_0xd2941b[_0x14a7('0x34')]=_[_0x14a7('0x36')](_0xd2941b[_0x14a7('0x31')],_0xd2941b[_0x14a7('0x32')]);_0x2bfeb0[_0x14a7('0x35')]=_[_0x14a7('0x36')](_0xd2941b[_0x14a7('0x31')],qs['fields'](_0x57cde8[_0x14a7('0x32')][_0x14a7('0x37')]));_0x2bfeb0[_0x14a7('0x35')]=_0x2bfeb0[_0x14a7('0x35')][_0x14a7('0x38')]?_0x2bfeb0[_0x14a7('0x35')]:_0xd2941b[_0x14a7('0x31')];if(_0x57cde8[_0x14a7('0x32')]['includeAll']){_0x2bfeb0[_0x14a7('0x41')]=[{'all':!![]}];}_0x2bfeb0=_[_0x14a7('0x3d')]({},_0x2bfeb0,_0x57cde8['options']);return db['OpenchannelApplication']['find'](_0x2bfeb0)[_0x14a7('0x24')](handleEntityNotFound(_0x33d488,null))[_0x14a7('0x24')](respondWithResult(_0x33d488,null))[_0x14a7('0x45')](handleError(_0x33d488,null));};exports[_0x14a7('0x46')]=function(_0x5a5437,_0xf42efb){return db[_0x14a7('0x2c')][_0x14a7('0x46')](_0x5a5437[_0x14a7('0x47')],{})[_0x14a7('0x24')](respondWithResult(_0xf42efb,0xc9))['catch'](handleError(_0xf42efb,null));};exports[_0x14a7('0x48')]=function(_0x5ba27b,_0x4a2ada){if(_0x5ba27b[_0x14a7('0x47')]['id']){delete _0x5ba27b[_0x14a7('0x47')]['id'];}return db[_0x14a7('0x2c')]['find']({'where':{'id':_0x5ba27b['params']['id']}})[_0x14a7('0x24')](handleEntityNotFound(_0x4a2ada,null))[_0x14a7('0x24')](saveUpdates(_0x5ba27b[_0x14a7('0x47')],null))[_0x14a7('0x24')](respondWithResult(_0x4a2ada,null))['catch'](handleError(_0x4a2ada,null));};exports[_0x14a7('0x25')]=function(_0x2fbc1d,_0x25adbf){return db[_0x14a7('0x2c')][_0x14a7('0x49')]({'where':{'id':_0x2fbc1d[_0x14a7('0x44')]['id']}})['then'](handleEntityNotFound(_0x25adbf,null))['then'](removeEntity(_0x25adbf,null))[_0x14a7('0x45')](handleError(_0x25adbf,null));};
\ No newline at end of file
+var _0x9309=['OpenchannelApplication','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','then','rows','catch','show','keys','fields','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','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','end','json','undefined','count','offset','set','apply','reject','update','destroy','sendStatus','error','stack','name','send','index'];(function(_0x1deee5,_0x1d4485){var _0x1d6c3a=function(_0x433abf){while(--_0x433abf){_0x1deee5['push'](_0x1deee5['shift']());}};_0x1d6c3a(++_0x1d4485);}(_0x9309,0x6c));var _0x9930=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9309[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x9930('0x0'));var rimraf=require(_0x9930('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9930('0x2'));var rp=require(_0x9930('0x3'));var moment=require(_0x9930('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9930('0x5'));var util=require(_0x9930('0x6'));var path=require(_0x9930('0x7'));var sox=require(_0x9930('0x8'));var csv=require(_0x9930('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9930('0xa'));var _=require(_0x9930('0xb'));var squel=require(_0x9930('0xc'));var crypto=require(_0x9930('0xd'));var jsforce=require(_0x9930('0xe'));var deskjs=require(_0x9930('0xf'));var toCsv=require(_0x9930('0x9'));var querystring=require('querystring');var Papa=require(_0x9930('0x10'));var Redis=require('ioredis');var authService=require(_0x9930('0x11'));var qs=require(_0x9930('0x12'));var as=require(_0x9930('0x13'));var hardwareService=require(_0x9930('0x14'));var logger=require(_0x9930('0x15'))(_0x9930('0x16'));var utils=require(_0x9930('0x17'));var config=require(_0x9930('0x18'));var licenseUtil=require(_0x9930('0x19'));var db=require(_0x9930('0x1a'))['db'];function respondWithStatusCode(_0x465969,_0x4312fb){_0x4312fb=_0x4312fb||0xcc;return function(_0x154246){if(_0x154246){return _0x465969['sendStatus'](_0x4312fb);}return _0x465969[_0x9930('0x1b')](_0x4312fb)[_0x9930('0x1c')]();};}function respondWithResult(_0x46a7b3,_0x3c8ddb){_0x3c8ddb=_0x3c8ddb||0xc8;return function(_0xa1f664){if(_0xa1f664){return _0x46a7b3[_0x9930('0x1b')](_0x3c8ddb)[_0x9930('0x1d')](_0xa1f664);}};}function respondWithFilteredResult(_0x311025,_0x148023){return function(_0x5625b8){if(_0x5625b8){var _0x4ec387=typeof _0x148023['offset']===_0x9930('0x1e')&&typeof _0x148023['limit']===_0x9930('0x1e');var _0x418397=_0x5625b8[_0x9930('0x1f')];var _0x582b56=_0x4ec387?0x0:_0x148023[_0x9930('0x20')];var _0x3dfabb=_0x4ec387?_0x5625b8[_0x9930('0x1f')]:_0x148023[_0x9930('0x20')]+_0x148023['limit'];var _0x1170aa;if(_0x3dfabb>=_0x418397){_0x3dfabb=_0x418397;_0x1170aa=0xc8;}else{_0x1170aa=0xce;}_0x311025[_0x9930('0x1b')](_0x1170aa);return _0x311025[_0x9930('0x21')]('Content-Range',_0x582b56+'-'+_0x3dfabb+'/'+_0x418397)[_0x9930('0x1d')](_0x5625b8);}return null;};}function patchUpdates(_0x2c49a3){return function(_0x1e11ee){try{jsonpatch[_0x9930('0x22')](_0x1e11ee,_0x2c49a3,!![]);}catch(_0x3727b3){return BPromise[_0x9930('0x23')](_0x3727b3);}return _0x1e11ee['save']();};}function saveUpdates(_0x3ba230,_0x3f98bb){return function(_0x36281e){if(_0x36281e){return _0x36281e[_0x9930('0x24')](_0x3ba230)['then'](function(_0x154f47){return _0x154f47;});}return null;};}function removeEntity(_0x5468a8,_0x4f94d2){return function(_0x379795){if(_0x379795){return _0x379795[_0x9930('0x25')]()['then'](function(){_0x5468a8[_0x9930('0x1b')](0xcc)[_0x9930('0x1c')]();});}};}function handleEntityNotFound(_0x2e47b5,_0x2a0ed1){return function(_0x42a7dd){if(!_0x42a7dd){_0x2e47b5[_0x9930('0x26')](0x194);}return _0x42a7dd;};}function handleError(_0x40487f,_0x48ffab){_0x48ffab=_0x48ffab||0x1f4;return function(_0x341da8){logger[_0x9930('0x27')](_0x341da8[_0x9930('0x28')]);if(_0x341da8[_0x9930('0x29')]){delete _0x341da8['name'];}_0x40487f[_0x9930('0x1b')](_0x48ffab)[_0x9930('0x2a')](_0x341da8);};}exports[_0x9930('0x2b')]=function(_0xb2eeb7,_0x3b523c){var _0x2941ad={},_0x157b9d={},_0x196cc1={'count':0x0,'rows':[]};var _0x474303=_['map'](db[_0x9930('0x2c')][_0x9930('0x2d')],function(_0x14ed07){return{'name':_0x14ed07[_0x9930('0x2e')],'type':_0x14ed07[_0x9930('0x2f')]['key']};});_0x157b9d['model']=_['map'](_0x474303,'name');_0x157b9d[_0x9930('0x30')]=_['keys'](_0xb2eeb7[_0x9930('0x30')]);_0x157b9d[_0x9930('0x31')]=_[_0x9930('0x32')](_0x157b9d[_0x9930('0x33')],_0x157b9d['query']);_0x2941ad[_0x9930('0x34')]=_[_0x9930('0x32')](_0x157b9d[_0x9930('0x33')],qs['fields'](_0xb2eeb7[_0x9930('0x30')]['fields']));_0x2941ad[_0x9930('0x34')]=_0x2941ad[_0x9930('0x34')]['length']?_0x2941ad[_0x9930('0x34')]:_0x157b9d[_0x9930('0x33')];if(!_0xb2eeb7[_0x9930('0x30')][_0x9930('0x35')](_0x9930('0x36'))){_0x2941ad['limit']=qs['limit'](_0xb2eeb7[_0x9930('0x30')][_0x9930('0x37')]);_0x2941ad[_0x9930('0x20')]=qs[_0x9930('0x20')](_0xb2eeb7[_0x9930('0x30')][_0x9930('0x20')]);}_0x2941ad['order']=qs[_0x9930('0x38')](_0xb2eeb7['query']['sort']);_0x2941ad[_0x9930('0x39')]=qs[_0x9930('0x31')](_[_0x9930('0x3a')](_0xb2eeb7[_0x9930('0x30')],_0x157b9d[_0x9930('0x31')]),_0x474303);if(_0xb2eeb7[_0x9930('0x30')][_0x9930('0x3b')]){_0x2941ad[_0x9930('0x39')]=_[_0x9930('0x3c')](_0x2941ad[_0x9930('0x39')],{'$or':_[_0x9930('0x3d')](_0x474303,function(_0x2dc1d6){if(_0x2dc1d6[_0x9930('0x2f')]!==_0x9930('0x3e')){var _0x2cbd69={};_0x2cbd69[_0x2dc1d6[_0x9930('0x29')]]={'$like':'%'+_0xb2eeb7[_0x9930('0x30')][_0x9930('0x3b')]+'%'};return _0x2cbd69;}})});}_0x2941ad=_[_0x9930('0x3c')]({},_0x2941ad,_0xb2eeb7[_0x9930('0x3f')]);var _0x52a27c={'where':_0x2941ad['where']};return db[_0x9930('0x2c')][_0x9930('0x1f')](_0x52a27c)['then'](function(_0x35ecc4){_0x196cc1['count']=_0x35ecc4;if(_0xb2eeb7['query']['includeAll']){_0x2941ad[_0x9930('0x40')]=[{'all':!![]}];}return db[_0x9930('0x2c')][_0x9930('0x41')](_0x2941ad);})[_0x9930('0x42')](function(_0x3b0b0c){_0x196cc1[_0x9930('0x43')]=_0x3b0b0c;return _0x196cc1;})[_0x9930('0x42')](respondWithFilteredResult(_0x3b523c,_0x2941ad))[_0x9930('0x44')](handleError(_0x3b523c,null));};exports[_0x9930('0x45')]=function(_0x34eb86,_0x244ec9){var _0x18eba5={'raw':!![],'where':{'id':_0x34eb86['params']['id']}},_0x202880={};_0x202880['model']=_[_0x9930('0x46')](db[_0x9930('0x2c')]['rawAttributes']);_0x202880[_0x9930('0x30')]=_[_0x9930('0x46')](_0x34eb86[_0x9930('0x30')]);_0x202880[_0x9930('0x31')]=_[_0x9930('0x32')](_0x202880[_0x9930('0x33')],_0x202880['query']);_0x18eba5[_0x9930('0x34')]=_[_0x9930('0x32')](_0x202880[_0x9930('0x33')],qs[_0x9930('0x47')](_0x34eb86[_0x9930('0x30')]['fields']));_0x18eba5[_0x9930('0x34')]=_0x18eba5[_0x9930('0x34')]['length']?_0x18eba5[_0x9930('0x34')]:_0x202880[_0x9930('0x33')];if(_0x34eb86[_0x9930('0x30')]['includeAll']){_0x18eba5[_0x9930('0x40')]=[{'all':!![]}];}_0x18eba5=_[_0x9930('0x3c')]({},_0x18eba5,_0x34eb86[_0x9930('0x3f')]);return db[_0x9930('0x2c')][_0x9930('0x48')](_0x18eba5)[_0x9930('0x42')](handleEntityNotFound(_0x244ec9,null))[_0x9930('0x42')](respondWithResult(_0x244ec9,null))[_0x9930('0x44')](handleError(_0x244ec9,null));};exports[_0x9930('0x49')]=function(_0x510df1,_0x2fdbd6){return db['OpenchannelApplication'][_0x9930('0x49')](_0x510df1[_0x9930('0x4a')],{})['then'](respondWithResult(_0x2fdbd6,0xc9))['catch'](handleError(_0x2fdbd6,null));};exports[_0x9930('0x24')]=function(_0x32e754,_0x43c0f1){if(_0x32e754[_0x9930('0x4a')]['id']){delete _0x32e754['body']['id'];}return db['OpenchannelApplication'][_0x9930('0x48')]({'where':{'id':_0x32e754['params']['id']}})['then'](handleEntityNotFound(_0x43c0f1,null))[_0x9930('0x42')](saveUpdates(_0x32e754[_0x9930('0x4a')],null))[_0x9930('0x42')](respondWithResult(_0x43c0f1,null))[_0x9930('0x44')](handleError(_0x43c0f1,null));};exports[_0x9930('0x25')]=function(_0x5b2d24,_0x12d6b0){return db[_0x9930('0x2c')]['find']({'where':{'id':_0x5b2d24[_0x9930('0x4b')]['id']}})['then'](handleEntityNotFound(_0x12d6b0,null))[_0x9930('0x42')](removeEntity(_0x12d6b0,null))[_0x9930('0x44')](handleError(_0x12d6b0,null));};
\ No newline at end of file
index 234be80..b5ca37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8862=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define','OpenchannelApplication','openchannel_applications'];(function(_0x28509b,_0x5831ff){var _0x1e0b6=function(_0x37d8a2){while(--_0x37d8a2){_0x28509b['push'](_0x28509b['shift']());}};_0x1e0b6(++_0x5831ff);}(_0x8862,0x18a));var _0x2886=function(_0x91b5ce,_0xa53476){_0x91b5ce=_0x91b5ce-0x0;var _0x14ebfa=_0x8862[_0x91b5ce];return _0x14ebfa;};'use strict';var _=require(_0x2886('0x0'));var util=require(_0x2886('0x1'));var logger=require(_0x2886('0x2'))(_0x2886('0x3'));var moment=require(_0x2886('0x4'));var BPromise=require(_0x2886('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2886('0x6'));var rimraf=require(_0x2886('0x7'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module[_0x2886('0x8')]=function(_0x3fa266,_0x1c7621){return _0x3fa266[_0x2886('0x9')](_0x2886('0xa'),attributes,{'tableName':_0x2886('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2886('0xc'),'collate':_0x2886('0xd')});};
\ No newline at end of file
+var _0x9afc=['exports','define','OpenchannelApplication','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelApplication.attributes'];(function(_0x453252,_0x2ed66a){var _0x2ae068=function(_0x182620){while(--_0x182620){_0x453252['push'](_0x453252['shift']());}};_0x2ae068(++_0x2ed66a);}(_0x9afc,0x9e));var _0xc9af=function(_0x4cd9c6,_0x766862){_0x4cd9c6=_0x4cd9c6-0x0;var _0x53a566=_0x9afc[_0x4cd9c6];return _0x53a566;};'use strict';var _=require(_0xc9af('0x0'));var util=require(_0xc9af('0x1'));var logger=require(_0xc9af('0x2'))(_0xc9af('0x3'));var moment=require(_0xc9af('0x4'));var BPromise=require(_0xc9af('0x5'));var rp=require(_0xc9af('0x6'));var fs=require('fs');var path=require(_0xc9af('0x7'));var rimraf=require(_0xc9af('0x8'));var config=require('../../config/environment');var attributes=require(_0xc9af('0x9'));module[_0xc9af('0xa')]=function(_0x58d5de,_0x247f18){return _0x58d5de[_0xc9af('0xb')](_0xc9af('0xc'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc9af('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 5573c7a..40f9bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee09=['request','then','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','where','limit','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x6f8972,_0x343da7){var _0x5677d9=function(_0x5eb51f){while(--_0x5eb51f){_0x6f8972['push'](_0x6f8972['shift']());}};_0x5677d9(++_0x343da7);}(_0xee09,0xb4));var _0x9ee0=function(_0x1ed7b0,_0x579eaf){_0x1ed7b0=_0x1ed7b0-0x0;var _0x1c7a96=_0xee09[_0x1ed7b0];return _0x1c7a96;};'use strict';var _=require(_0x9ee0('0x0'));var util=require('util');var moment=require(_0x9ee0('0x1'));var BPromise=require(_0x9ee0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ee0('0x3'))['db'];var utils=require(_0x9ee0('0x4'));var logger=require(_0x9ee0('0x5'))('rpc');var config=require(_0x9ee0('0x6'));var jayson=require(_0x9ee0('0x7'));var client=jayson['client'][_0x9ee0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2e1930,_0x45e11f,_0x3f3fd3){return new BPromise(function(_0x4de013,_0x551ca2){return client[_0x9ee0('0x9')](_0x2e1930,_0x3f3fd3)[_0x9ee0('0xa')](function(_0xaeb33e){logger['info'](_0x9ee0('0xb'),_0x45e11f,_0x9ee0('0xc'));logger[_0x9ee0('0xd')](_0x9ee0('0xe'),_0x45e11f,'request\x20sent',JSON['stringify'](_0xaeb33e));if(_0xaeb33e['error']){if(_0xaeb33e[_0x9ee0('0xf')]['code']===0x1f4){logger[_0x9ee0('0xf')](_0x9ee0('0xb'),_0x45e11f,_0xaeb33e['error'][_0x9ee0('0x10')]);return _0x551ca2(_0xaeb33e[_0x9ee0('0xf')][_0x9ee0('0x10')]);}logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x45e11f,_0xaeb33e[_0x9ee0('0xf')][_0x9ee0('0x10')]);return _0x4de013(_0xaeb33e[_0x9ee0('0xf')][_0x9ee0('0x10')]);}else{logger[_0x9ee0('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x45e11f,_0x9ee0('0xc'));_0x4de013(_0xaeb33e[_0x9ee0('0x12')][_0x9ee0('0x10')]);}})[_0x9ee0('0x13')](function(_0x2e3bcb){logger[_0x9ee0('0xf')](_0x9ee0('0xb'),_0x45e11f,_0x2e3bcb);_0x551ca2(_0x2e3bcb);});});}exports[_0x9ee0('0x14')]=function(_0x238a39){var _0x48734f=this;return new Promise(function(_0x415870,_0x10ccff){return db[_0x9ee0('0x15')][_0x9ee0('0x16')](_0x238a39[_0x9ee0('0x17')],{'raw':_0x238a39[_0x9ee0('0x18')]?_0x238a39[_0x9ee0('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x238a39[_0x9ee0('0x18')]?_0x238a39['options'][_0x9ee0('0x19')]||null:null,'attributes':_0x238a39[_0x9ee0('0x18')]?_0x238a39[_0x9ee0('0x18')]['attributes']||null:null,'limit':_0x238a39[_0x9ee0('0x18')]?_0x238a39['options'][_0x9ee0('0x1a')]||null:null})['then'](function(_0x2062df){logger[_0x9ee0('0x11')]('UpdateOpenchannelApplication',_0x238a39);logger['debug'](_0x9ee0('0x14'),_0x238a39,JSON['stringify'](_0x2062df));_0x415870(_0x2062df);})[_0x9ee0('0x13')](function(_0x558893){logger[_0x9ee0('0xf')]('UpdateOpenchannelApplication',_0x558893[_0x9ee0('0x10')],_0x238a39);_0x10ccff(_0x48734f[_0x9ee0('0xf')](0x1f4,_0x558893[_0x9ee0('0x10')]));});});};
\ No newline at end of file
+var _0x33bf=['then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','update','body','options','raw','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x1368f2,_0x39d4db){var _0xd4f840=function(_0x456a6f){while(--_0x456a6f){_0x1368f2['push'](_0x1368f2['shift']());}};_0xd4f840(++_0x39d4db);}(_0x33bf,0x134));var _0xf33b=function(_0x1c06f4,_0x2feba6){_0x1c06f4=_0x1c06f4-0x0;var _0x1a727e=_0x33bf[_0x1c06f4];return _0x1a727e;};'use strict';var _=require(_0xf33b('0x0'));var util=require(_0xf33b('0x1'));var moment=require(_0xf33b('0x2'));var BPromise=require(_0xf33b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf33b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf33b('0x5'));var logger=require(_0xf33b('0x6'))('rpc');var config=require(_0xf33b('0x7'));var jayson=require(_0xf33b('0x8'));var client=jayson['client'][_0xf33b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x53be8a,_0x3c2f32,_0x20849f){return new BPromise(function(_0x3d2d34,_0x570c64){return client[_0xf33b('0xa')](_0x53be8a,_0x20849f)[_0xf33b('0xb')](function(_0x5a8896){logger[_0xf33b('0xc')](_0xf33b('0xd'),_0x3c2f32,_0xf33b('0xe'));logger['debug']('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x3c2f32,_0xf33b('0xe'),JSON[_0xf33b('0xf')](_0x5a8896));if(_0x5a8896['error']){if(_0x5a8896[_0xf33b('0x10')][_0xf33b('0x11')]===0x1f4){logger[_0xf33b('0x10')](_0xf33b('0xd'),_0x3c2f32,_0x5a8896[_0xf33b('0x10')][_0xf33b('0x12')]);return _0x570c64(_0x5a8896[_0xf33b('0x10')][_0xf33b('0x12')]);}logger['error'](_0xf33b('0xd'),_0x3c2f32,_0x5a8896[_0xf33b('0x10')][_0xf33b('0x12')]);return _0x3d2d34(_0x5a8896[_0xf33b('0x10')][_0xf33b('0x12')]);}else{logger[_0xf33b('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x3c2f32,_0xf33b('0xe'));_0x3d2d34(_0x5a8896[_0xf33b('0x13')][_0xf33b('0x12')]);}})[_0xf33b('0x14')](function(_0x2047cb){logger[_0xf33b('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x3c2f32,_0x2047cb);_0x570c64(_0x2047cb);});});}exports[_0xf33b('0x15')]=function(_0x3117cb){var _0x473fec=this;return new Promise(function(_0x419479,_0x507eea){return db['OpenchannelApplication'][_0xf33b('0x16')](_0x3117cb[_0xf33b('0x17')],{'raw':_0x3117cb[_0xf33b('0x18')]?_0x3117cb[_0xf33b('0x18')][_0xf33b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3117cb[_0xf33b('0x18')]?_0x3117cb[_0xf33b('0x18')][_0xf33b('0x1a')]||null:null,'attributes':_0x3117cb[_0xf33b('0x18')]?_0x3117cb[_0xf33b('0x18')][_0xf33b('0x1b')]||null:null,'limit':_0x3117cb[_0xf33b('0x18')]?_0x3117cb[_0xf33b('0x18')][_0xf33b('0x1c')]||null:null})[_0xf33b('0xb')](function(_0x5e2bc6){logger[_0xf33b('0xc')](_0xf33b('0x15'),_0x3117cb);logger['debug'](_0xf33b('0x15'),_0x3117cb,JSON[_0xf33b('0xf')](_0x5e2bc6));_0x419479(_0x5e2bc6);})[_0xf33b('0x14')](function(_0x4fd2e4){logger[_0xf33b('0x10')]('UpdateOpenchannelApplication',_0x4fd2e4[_0xf33b('0x12')],_0x3117cb);_0x507eea(_0x473fec['error'](0x1f4,_0x4fd2e4[_0xf33b('0x12')]));});});};
\ No newline at end of file
index 58e8acf..287ca68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce4=['fs-extra','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','addMessage','openchannelinteraction:addtags','addTags','put','tracked','openchannel','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','connect-timeout','express'];(function(_0x2fb87e,_0x483324){var _0x5de4c1=function(_0x4464b5){while(--_0x4464b5){_0x2fb87e['push'](_0x2fb87e['shift']());}};_0x5de4c1(++_0x483324);}(_0x2ce4,0x10c));var _0x42ce=function(_0x476fcc,_0x28a961){_0x476fcc=_0x476fcc-0x0;var _0x394184=_0x2ce4[_0x476fcc];return _0x394184;};'use strict';var multer=require(_0x42ce('0x0'));var util=require(_0x42ce('0x1'));var path=require('path');var timeout=require(_0x42ce('0x2'));var express=require(_0x42ce('0x3'));var router=express['Router']();var fs_extra=require(_0x42ce('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x42ce('0x5'));var config=require(_0x42ce('0x6'));var controller=require(_0x42ce('0x7'));router[_0x42ce('0x8')]('/',auth[_0x42ce('0x9')](),controller[_0x42ce('0xa')]);router[_0x42ce('0x8')](_0x42ce('0xb'),auth[_0x42ce('0x9')](),controller[_0x42ce('0xc')]);router['get'](_0x42ce('0xd'),auth[_0x42ce('0x9')](),controller[_0x42ce('0xe')]);router[_0x42ce('0x8')](_0x42ce('0xf'),auth[_0x42ce('0x9')](),controller['getMessages']);router['get'](_0x42ce('0x10'),auth[_0x42ce('0x9')](),controller[_0x42ce('0x11')]);router[_0x42ce('0x12')]('/',auth[_0x42ce('0x9')](),controller[_0x42ce('0x13')]);router[_0x42ce('0x12')](_0x42ce('0xf'),auth[_0x42ce('0x9')](),controller[_0x42ce('0x14')]);router[_0x42ce('0x12')]('/:id/tags',auth[_0x42ce('0x9')](),interaction['tracked']('openchannel',_0x42ce('0x15')),controller[_0x42ce('0x16')]);router[_0x42ce('0x17')]('/:id',auth[_0x42ce('0x9')](),interaction[_0x42ce('0x18')](_0x42ce('0x19'),_0x42ce('0x1a')),controller[_0x42ce('0x1b')]);router[_0x42ce('0x1c')](_0x42ce('0xd'),auth[_0x42ce('0x9')](),interaction[_0x42ce('0x18')]('openchannel',_0x42ce('0x1d')),controller[_0x42ce('0x1e')]);router[_0x42ce('0x1c')](_0x42ce('0x1f'),auth[_0x42ce('0x9')](),controller[_0x42ce('0x20')]);module[_0x42ce('0x21')]=router;
\ No newline at end of file
+var _0xf3f7=['addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','openchannelinteraction:update','update','openchannelinteraction:destroy','delete','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf3f7,0xfa));var _0x7f3f=function(_0x37f484,_0x3c93ea){_0x37f484=_0x37f484-0x0;var _0x3ad85e=_0xf3f7[_0x37f484];return _0x3ad85e;};'use strict';var multer=require(_0x7f3f('0x0'));var util=require(_0x7f3f('0x1'));var path=require(_0x7f3f('0x2'));var timeout=require(_0x7f3f('0x3'));var express=require(_0x7f3f('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7f3f('0x5'));var config=require(_0x7f3f('0x6'));var controller=require(_0x7f3f('0x7'));router[_0x7f3f('0x8')]('/',auth['isAuthenticated'](),controller[_0x7f3f('0x9')]);router[_0x7f3f('0x8')](_0x7f3f('0xa'),auth[_0x7f3f('0xb')](),controller[_0x7f3f('0xc')]);router[_0x7f3f('0x8')](_0x7f3f('0xd'),auth[_0x7f3f('0xb')](),controller[_0x7f3f('0xe')]);router[_0x7f3f('0x8')](_0x7f3f('0xf'),auth[_0x7f3f('0xb')](),controller[_0x7f3f('0x10')]);router[_0x7f3f('0x8')](_0x7f3f('0x11'),auth[_0x7f3f('0xb')](),controller[_0x7f3f('0x12')]);router['post']('/',auth[_0x7f3f('0xb')](),controller['create']);router[_0x7f3f('0x13')](_0x7f3f('0xf'),auth['isAuthenticated'](),controller[_0x7f3f('0x14')]);router[_0x7f3f('0x13')](_0x7f3f('0x15'),auth['isAuthenticated'](),interaction[_0x7f3f('0x16')](_0x7f3f('0x17'),_0x7f3f('0x18')),controller[_0x7f3f('0x19')]);router['put'](_0x7f3f('0xd'),auth[_0x7f3f('0xb')](),interaction[_0x7f3f('0x16')](_0x7f3f('0x17'),_0x7f3f('0x1a')),controller[_0x7f3f('0x1b')]);router['delete']('/:id',auth[_0x7f3f('0xb')](),interaction[_0x7f3f('0x16')](_0x7f3f('0x17'),_0x7f3f('0x1c')),controller['destroy']);router[_0x7f3f('0x1d')](_0x7f3f('0x15'),auth[_0x7f3f('0xb')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index f7cb50d..574feac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d3=['STRING','out','BOOLEAN','sequelize','exports','DATE'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0x38d3,0x1a7));var _0x338d=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x38d3[_0xe66cf2];return _0x2d84e7;};'use strict';var Sequelize=require(_0x338d('0x0'));module[_0x338d('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x338d('0x2')]},'disposition':{'type':Sequelize[_0x338d('0x3')]},'secondDisposition':{'type':Sequelize[_0x338d('0x3')]},'thirdDisposition':{'type':Sequelize[_0x338d('0x3')]},'note':{'type':Sequelize[_0x338d('0x3')]},'read1stAt':{'type':Sequelize[_0x338d('0x2')]},'threadId':{'type':Sequelize[_0x338d('0x3')]},'externalUrl':{'type':Sequelize[_0x338d('0x3')]},'lastMsgAt':{'type':Sequelize[_0x338d('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x338d('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x338d('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x338d('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9489=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x5554c5,_0x4e2cec){var _0x359003=function(_0x5e8394){while(--_0x5e8394){_0x5554c5['push'](_0x5554c5['shift']());}};_0x359003(++_0x4e2cec);}(_0x9489,0xb2));var _0x9948=function(_0x40d05c,_0x5ac6e3){_0x40d05c=_0x40d05c-0x0;var _0x3bedf1=_0x9489[_0x40d05c];return _0x3bedf1;};'use strict';var Sequelize=require(_0x9948('0x0'));module[_0x9948('0x1')]={'closed':{'type':Sequelize[_0x9948('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9948('0x3')]},'disposition':{'type':Sequelize[_0x9948('0x4')]},'secondDisposition':{'type':Sequelize[_0x9948('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x9948('0x3')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x9948('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x9948('0x5')]('in',_0x9948('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x9948('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x9948('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 54b2e63..bec26a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc3f=['unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$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','text','start','end','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','user','sequelize','toString','merge','OpenchannelInteraction','a.key','Account.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','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','push','all','rows','from','params','rawAttributes','includeAll','include','options','create','update','describe','addMessage','OpenchannelMessage','ids','getMessages','findOne','hasOwnProperty','OpenchannelInteractionId','$gte','format','findAll','addTags','emit','openchannelInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','CmContact','Contact','lastName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','threadId','Public','createReadStream','pipe','createWriteStream','basename','out','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','./openchannelInteraction.socket','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','then','destroy','error','stack','name','Users','map','fullname','TagIds','Tags','split','catch','index','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find'];(function(_0x3cf5a3,_0x5a4492){var _0x39ba2d=function(_0x3ed989){while(--_0x3ed989){_0x3cf5a3['push'](_0x3cf5a3['shift']());}};_0x39ba2d(++_0x5a4492);}(_0xcc3f,0x16d));var _0xfcc3=function(_0x3d3bfb,_0x225acc){_0x3d3bfb=_0x3d3bfb-0x0;var _0x2a3ddc=_0xcc3f[_0x3d3bfb];return _0x2a3ddc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfcc3('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfcc3('0x1'));var moment=require(_0xfcc3('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfcc3('0x3'));var util=require(_0xfcc3('0x4'));var path=require(_0xfcc3('0x5'));var sox=require(_0xfcc3('0x6'));var csv=require(_0xfcc3('0x7'));var ejs=require(_0xfcc3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfcc3('0x9'));var crypto=require('crypto');var jsforce=require(_0xfcc3('0xa'));var deskjs=require(_0xfcc3('0xb'));var toCsv=require(_0xfcc3('0x7'));var querystring=require(_0xfcc3('0xc'));var Papa=require(_0xfcc3('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfcc3('0xe'));var as=require(_0xfcc3('0xf'));var pdf=require(_0xfcc3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfcc3('0x11'))(_0xfcc3('0x12'));var utils=require(_0xfcc3('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfcc3('0x14'));var db=require(_0xfcc3('0x15'))['db'];config[_0xfcc3('0x16')]=_[_0xfcc3('0x17')](config[_0xfcc3('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfcc3('0x18'))['register'](socket);function respondWithStatusCode(_0x3d73c6,_0x365c35){_0x365c35=_0x365c35||0xcc;return function(_0x12db15){if(_0x12db15){return _0x3d73c6[_0xfcc3('0x19')](_0x365c35);}return _0x3d73c6['status'](_0x365c35)['end']();};}function respondWithResult(_0x242dd3,_0x1369bd){_0x1369bd=_0x1369bd||0xc8;return function(_0x2d05a2){if(_0x2d05a2){return _0x242dd3[_0xfcc3('0x1a')](_0x1369bd)[_0xfcc3('0x1b')](_0x2d05a2);}};}function respondWithFilteredResult(_0x2b0455,_0x320b92){return function(_0x3f2cb7){if(_0x3f2cb7){var _0x395774=typeof _0x320b92[_0xfcc3('0x1c')]===_0xfcc3('0x1d')&&typeof _0x320b92[_0xfcc3('0x1e')]===_0xfcc3('0x1d');var _0x2d20fc=_0x3f2cb7[_0xfcc3('0x1f')];var _0x183f48=_0x395774?0x0:_0x320b92['offset'];var _0x2c0a8e=_0x395774?_0x3f2cb7[_0xfcc3('0x1f')]:_0x320b92[_0xfcc3('0x1c')]+_0x320b92[_0xfcc3('0x1e')];var _0x5bc2c5;if(_0x2c0a8e>=_0x2d20fc){_0x2c0a8e=_0x2d20fc;_0x5bc2c5=0xc8;}else{_0x5bc2c5=0xce;}_0x2b0455[_0xfcc3('0x1a')](_0x5bc2c5);return _0x2b0455[_0xfcc3('0x20')]('Content-Range',_0x183f48+'-'+_0x2c0a8e+'/'+_0x2d20fc)['json'](_0x3f2cb7);}return null;};}function patchUpdates(_0xdf42e3){return function(_0x2acbab){try{jsonpatch[_0xfcc3('0x21')](_0x2acbab,_0xdf42e3,!![]);}catch(_0x994cac){return BPromise[_0xfcc3('0x22')](_0x994cac);}return _0x2acbab['save']();};}function saveUpdates(_0x4fc41c,_0x11fd56){return function(_0x882439){if(_0x882439){return _0x882439['update'](_0x4fc41c)[_0xfcc3('0x23')](function(_0x29637d){return _0x29637d;});}return null;};}function removeEntity(_0x122d31,_0xc4f263){return function(_0x2a98d2){if(_0x2a98d2){return _0x2a98d2[_0xfcc3('0x24')]()['then'](function(){_0x122d31[_0xfcc3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f8df1,_0x268306){return function(_0x31915f){if(!_0x31915f){_0x4f8df1[_0xfcc3('0x19')](0x194);}return _0x31915f;};}function handleError(_0xa63c5f,_0x3b1c61){_0x3b1c61=_0x3b1c61||0x1f4;return function(_0x5d2709){logger[_0xfcc3('0x25')](_0x5d2709[_0xfcc3('0x26')]);if(_0x5d2709[_0xfcc3('0x27')]){delete _0x5d2709[_0xfcc3('0x27')];}_0xa63c5f[_0xfcc3('0x1a')](_0x3b1c61)['send'](_0x5d2709);};}function getInteractionUsers(_0x1f6fcf,_0xd3b18e){return new BPromise(function(_0x57e973,_0x3554dc){try{if(_0xd3b18e[_0x1f6fcf['id']]){_0x1f6fcf[_0xfcc3('0x28')]=_[_0xfcc3('0x29')](_0xd3b18e[_0x1f6fcf['id']],function(_0x3c2ae1){return{'id':_0x3c2ae1['id'],'fullname':_0x3c2ae1[_0xfcc3('0x2a')]};});}}catch(_0x421a71){_0x3554dc(_0x421a71);}_0x57e973(_0x1f6fcf);});}function getInteractionTags(_0x161b61,_0xbb6c48){return new BPromise(function(_0x1ac856,_0x5b703a){try{if(_0x161b61[_0xfcc3('0x2b')]){_0x161b61[_0xfcc3('0x2c')]=[];_0x161b61[_0xfcc3('0x2b')][_0xfcc3('0x2d')](',')['forEach'](function(_0x3d1541){_0x161b61[_0xfcc3('0x2c')]['push'](_0xbb6c48[_0x3d1541]);});}delete _0x161b61[_0xfcc3('0x2b')];}catch(_0xfea263){_0x5b703a(_0xfea263);}_0x1ac856(_0x161b61);});}function updateOpenchannelInteraction(_0x2755c3,_0x2b646b,_0x52c5a9){return new BPromise(function(_0x12e554,_0x56fc0d){return getInteractionUsers(_0x2755c3,_0x52c5a9)[_0xfcc3('0x23')](function(_0x4884b8){return getInteractionTags(_0x4884b8,_0x2b646b);})[_0xfcc3('0x23')](function(_0x5807ea){_0x12e554(_0x5807ea);})[_0xfcc3('0x2e')](function(_0x195862){_0x56fc0d(_0x195862);});});}exports[_0xfcc3('0x2f')]=function(_0x4ff600,_0x439aa2){var _0x3c3e27={},_0x315982={},_0x7e19da={'count':0x0,'rows':[]};var _0x3db529=_[_0xfcc3('0x29')](db['OpenchannelInteraction']['rawAttributes'],function(_0x445601){return{'name':_0x445601[_0xfcc3('0x30')],'type':_0x445601[_0xfcc3('0x31')][_0xfcc3('0x32')]};});_0x315982[_0xfcc3('0x33')]=_[_0xfcc3('0x29')](_0x3db529,_0xfcc3('0x27'));_0x315982[_0xfcc3('0x34')]=_[_0xfcc3('0x35')](_0x4ff600['query']);_0x315982[_0xfcc3('0x36')]=_[_0xfcc3('0x37')](_0x315982[_0xfcc3('0x33')],_0x315982[_0xfcc3('0x34')]);_0x3c3e27[_0xfcc3('0x38')]=_['intersection'](_0x315982[_0xfcc3('0x33')],qs['fields'](_0x4ff600['query'][_0xfcc3('0x39')]));_0x3c3e27[_0xfcc3('0x38')]=_0x3c3e27[_0xfcc3('0x38')][_0xfcc3('0x3a')]?_0x3c3e27[_0xfcc3('0x38')]:_0x315982[_0xfcc3('0x33')];if(!_0x4ff600['query']['hasOwnProperty'](_0xfcc3('0x3b'))){_0x3c3e27[_0xfcc3('0x1e')]=qs[_0xfcc3('0x1e')](_0x4ff600[_0xfcc3('0x34')]['limit']);_0x3c3e27[_0xfcc3('0x1c')]=qs[_0xfcc3('0x1c')](_0x4ff600[_0xfcc3('0x34')]['offset']);}_0x3c3e27['order']=qs[_0xfcc3('0x3c')](_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x3c')]);_0x3c3e27[_0xfcc3('0x3d')]=qs[_0xfcc3('0x36')](_[_0xfcc3('0x3e')](_0x4ff600[_0xfcc3('0x34')],_0x315982[_0xfcc3('0x36')]),_0x3db529);var _0xb02881=[];var _0x20bcaa=squel[_0xfcc3('0x3f')]()[_0xfcc3('0x40')]('id')[_0xfcc3('0x40')](_0xfcc3('0x27'))[_0xfcc3('0x40')](_0xfcc3('0x41'))['from'](_0xfcc3('0x42'));var _0x1496d6=squel[_0xfcc3('0x3f')]()[_0xfcc3('0x40')](_0xfcc3('0x43'))[_0xfcc3('0x40')](_0xfcc3('0x44'))['field'](_0xfcc3('0x45'))['from']('user_has_openchannel_interactions','ui')[_0xfcc3('0x46')](_0xfcc3('0x47'),'u',_0xfcc3('0x48'));var _0x2a9036=squel[_0xfcc3('0x3f')]()['from'](_0xfcc3('0x49'),'i')[_0xfcc3('0x46')](_0xfcc3('0x4a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xfcc3('0x46')](_0xfcc3('0x47'),'o',_0xfcc3('0x4b'))['left_join'](_0xfcc3('0x4c'),'a',_0xfcc3('0x4d'))[_0xfcc3('0x46')](_0xfcc3('0x4e'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0xfcc3('0x46')](_0xfcc3('0x4f'),'it','it.OpenchannelInteractionId\x20=\x20i.id')[_0xfcc3('0x46')](_0xfcc3('0x42'),'t',_0xfcc3('0x50'));var _0x15c0e3=squel[_0xfcc3('0x51')]();var _0x2e6e0d=[];var _0x1eb71d=squel['expr']();var _0x5d46b1;if(_0x4ff600[_0xfcc3('0x34')]['search']){_0x5d46b1=as[_0xfcc3('0x52')](_0x4ff600['query'][_0xfcc3('0x53')]);var _0x15fc59=_0x5d46b1[_0xfcc3('0x54')];for(var _0x4dfdf5=0x0;_0x4dfdf5<_0x5d46b1[_0xfcc3('0x55')][_0xfcc3('0x3a')];_0x4dfdf5++){var _0x163748=_0x5d46b1[_0xfcc3('0x55')][_0x4dfdf5];var _0x204ef7='i';var _0x97867a=_[_0xfcc3('0x56')](_0x3db529,[_0xfcc3('0x27'),_0x163748[_0xfcc3('0x40')]]);if(!_0x97867a){switch(_0x163748[_0xfcc3('0x40')]){case _0xfcc3('0x57'):if(_0x163748[_0xfcc3('0x58')]==0x1){_0x2a9036[_0xfcc3('0x59')]('`'+_0x163748[_0xfcc3('0x40')]+_0xfcc3('0x5a'));}else{_0x2a9036[_0xfcc3('0x59')]('`'+_0x163748[_0xfcc3('0x40')]+_0xfcc3('0x5b'));}break;case'Contact':if(_0x163748['operator']===_0xfcc3('0x5c')){if(_0x163748['value'][_0xfcc3('0x2d')]('\x20')[_0xfcc3('0x3a')]>0x1){_0x15c0e3[_0x15fc59](_0xfcc3('0x5d'),qs[_0xfcc3('0x5e')](_0x163748[_0xfcc3('0x58')]),null);}else{var _0x486cbd='%'+_0x163748[_0xfcc3('0x58')]+'%';_0x15c0e3[_0x15fc59](_0xfcc3('0x5f'),_0x486cbd,_0x486cbd,_0x486cbd);}}else{_0x97867a=_['find'](_0x3db529,[_0xfcc3('0x27'),'ContactId']);_0x163748['field']=_0xfcc3('0x60');_0x218ec8=as[_0xfcc3('0x61')](_0x204ef7,_0x97867a[_0xfcc3('0x31')],_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8[_0xfcc3('0x62')],_0x218ec8['value'][_0xfcc3('0x63')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x64')]);}break;case _0xfcc3('0x65'):var _0x356077=_0x163748[_0xfcc3('0x58')][_0xfcc3('0x2d')](',')['map'](function(_0x14d438){return Number(_0x14d438);});_0x356077[_0xfcc3('0x66')](function(_0x1ed563){_0x1eb71d['or'](_0xfcc3('0x67'),'%,'+_0x1ed563+',%');});_0x2e6e0d=_[_0xfcc3('0x68')](_0x2e6e0d,_0x356077);break;case'User':if(_0x163748[_0xfcc3('0x69')]===_0xfcc3('0x5c')){_0x15c0e3[_0x15fc59](_0xfcc3('0x6a'),'%'+_0x163748[_0xfcc3('0x58')]+'%',null);}else{_0x97867a=_[_0xfcc3('0x56')](_0x3db529,[_0xfcc3('0x27'),_0xfcc3('0x6b')]);_0x163748[_0xfcc3('0x40')]=_0xfcc3('0x6b');_0x218ec8=as[_0xfcc3('0x61')](_0x204ef7,_0x97867a['type'],_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8['text'],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x63')],_0x218ec8[_0xfcc3('0x58')]['end']);}break;case _0xfcc3('0x6c'):_0x218ec8=as[_0xfcc3('0x61')]('me',null,_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8[_0xfcc3('0x62')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x63')],_0x218ec8['value'][_0xfcc3('0x64')]);break;}}else{var _0x218ec8=as[_0xfcc3('0x61')](_0x204ef7,_0x97867a[_0xfcc3('0x31')],_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8[_0xfcc3('0x62')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x63')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x64')]);}}}else{var _0x306081=_(_0x4ff600[_0xfcc3('0x34')])[_0xfcc3('0x35')]()['map'](function(_0x580c49){return _['some'](_0x3db529,[_0xfcc3('0x27'),_0x580c49])?_0x580c49:undefined;})['compact']()[_0xfcc3('0x58')]();if(!_[_0xfcc3('0x6d')](_0x306081)){_0x306081[_0xfcc3('0x66')](function(_0x127c4a){if(_0x127c4a===_0xfcc3('0x6e')){_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x6f'),[][_0xfcc3('0x70')](_0x4ff600[_0xfcc3('0x34')][_0x127c4a]));}else if(_0x127c4a===_0xfcc3('0x71')){var _0x5b0cbf=JSON[_0xfcc3('0x72')](_0x4ff600[_0xfcc3('0x34')][_0x127c4a])['$gte'];var _0x2c5ca3=JSON[_0xfcc3('0x72')](_0x4ff600['query'][_0x127c4a])[_0xfcc3('0x73')];_0x2a9036[_0xfcc3('0x3d')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b0cbf,_0x2c5ca3);}else{if(_0x4ff600[_0xfcc3('0x34')][_0x127c4a]===_0xfcc3('0x74')){_0x2a9036['where']('i.'+_0x127c4a+_0xfcc3('0x75'));}else{_0x2a9036[_0xfcc3('0x3d')]('i.'+_0x127c4a+'\x20=\x20?',_0x4ff600['query'][_0x127c4a]);}}});}if(_0x4ff600['query'][_0xfcc3('0x76')]){if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x76')]==0x1){_0x2a9036[_0xfcc3('0x59')]('`unreadMessages`\x20=\x200');}else{_0x2a9036[_0xfcc3('0x59')](_0xfcc3('0x77'));}}if(_0x4ff600[_0xfcc3('0x34')]['tag']){_0x2e6e0d=_['isArray'](_0x4ff600['query'][_0xfcc3('0x78')])?_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x78')]:new Array(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x78')]);_0x2e6e0d[_0xfcc3('0x66')](function(_0x3aaf18){_0x1eb71d['or'](_0xfcc3('0x67'),'%,'+_0x3aaf18+',%');});}if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x79')]){var _0x46037f=_0x4ff600['query'][_0xfcc3('0x79')][_0xfcc3('0x7a')]('\x5c','\x5c\x5c')[_0xfcc3('0x7a')](/'/g,'\x27\x27');if(qs[_0xfcc3('0x7b')](_0x46037f)){_0x15c0e3['or']('i.id\x20LIKE\x20?',_0x46037f+'%');}else{_0x15c0e3['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xfcc3('0x5e')](_0x46037f))['or']('i.from\x20LIKE\x20?',_0x46037f+'%')['or'](_0xfcc3('0x7c'),_0x46037f+'%');}}}_0x2a9036[_0xfcc3('0x3d')](_0x15c0e3);_0x2a9036[_0xfcc3('0x7d')]('i.id');var _0x36334d={'type':db[_0xfcc3('0x7e')]['QueryTypes']['SELECT'],'raw':!![]};var _0x161826=_0x2a9036['clone']();_0x161826[_0xfcc3('0x40')]('i.id');_0x161826[_0xfcc3('0x40')](_0xfcc3('0x7f'),_0xfcc3('0x57'));if(_0x3c3e27[_0xfcc3('0x80')]){_0x3c3e27[_0xfcc3('0x80')]['forEach'](function(_0x277776){var _0x42313b=_0x277776[0x0]===_0xfcc3('0x81')?_0x277776[0x0]:'i.'+_0x277776[0x0];_0x2a9036['order'](_0x42313b,_0x277776[0x1]==='DESC'?![]:!![]);});}if(!_[_0xfcc3('0x6d')](_0x2e6e0d)){_0x2a9036['having'](_0x1eb71d);_0x161826[_0xfcc3('0x3d')](_0xfcc3('0x82'),_0x2e6e0d);}BPromise[_0xfcc3('0x83')]()[_0xfcc3('0x23')](function(){if(!_0x5d46b1){if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x6e')])return;_0x161826[_0xfcc3('0x3d')](_0xfcc3('0x84'));_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x84'));return;}if(_0x4ff600['user'][_0xfcc3('0x85')]!==_0xfcc3('0x86'))return;return _0x4ff600['user'][_0xfcc3('0x87')]({'attributes':['id'],'raw':!![]})[_0xfcc3('0x23')](function(_0x385d51){if(_[_0xfcc3('0x6d')](_0x385d51)){_0x161826['where'](_0xfcc3('0x88'));_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x88'));}else{_0x161826[_0xfcc3('0x3d')](_0xfcc3('0x6f'),_['map'](_0x385d51,'id'));_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x6f'),_[_0xfcc3('0x29')](_0x385d51,'id'));}});})[_0xfcc3('0x23')](function(){if(_0x4ff600[_0xfcc3('0x89')]['role']===_0xfcc3('0x86')&&!_0x5d46b1&&!_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x6e')])return[];return db[_0xfcc3('0x8a')][_0xfcc3('0x34')](_0x161826[_0xfcc3('0x8b')](),_0x36334d);})['then'](function(_0x22becc){_0x7e19da[_0xfcc3('0x1f')]=_0x22becc[_0xfcc3('0x3a')];if(_0x7e19da['count']===0x0)return[];return db[_0xfcc3('0x8a')]['query'](_0x20bcaa['toString'](),_0x36334d)[_0xfcc3('0x23')](function(_0x123b11){_0xb02881=_['keyBy'](_0x123b11,'id');_0x36334d=_[_0xfcc3('0x8c')](_0x36334d,{'model':db[_0xfcc3('0x8d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x39')]){_0x3c3e27[_0xfcc3('0x38')][_0xfcc3('0x66')](function(_0x33eb4d){_0x2a9036[_0xfcc3('0x40')]('i.'+_0x33eb4d);});}else{_0x2a9036['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xfcc3('0x57'));_0x2a9036['field'](_0xfcc3('0x8e'),_0xfcc3('0x8f'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x90'),_0xfcc3('0x91'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x92'),'contactName');_0x2a9036[_0xfcc3('0x40')]('i.*');_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x93'),_0xfcc3('0x94'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x95'),_0xfcc3('0x96'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x97'),_0xfcc3('0x98'));_0x2a9036['field']('c.phone',_0xfcc3('0x99'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x9a'),_0xfcc3('0x9b'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x9c'),_0xfcc3('0x9d'));_0x2a9036['field'](_0xfcc3('0x9e'),'Owner.fullname');_0x2a9036[_0xfcc3('0x40')]('o.internal',_0xfcc3('0x9f'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0xa0'),_0xfcc3('0x2b'));}if(_0x3c3e27[_0xfcc3('0x1e')])_0x2a9036['limit'](_0x3c3e27[_0xfcc3('0x1e')]);if(_0x3c3e27['offset'])_0x2a9036[_0xfcc3('0x1c')](_0x3c3e27['offset']);return db[_0xfcc3('0x8a')][_0xfcc3('0x34')](_0x2a9036[_0xfcc3('0x8b')](),_0x36334d);})['then'](function(_0x1bfae9){if(_0x1bfae9['length']>0x0)_0x1496d6[_0xfcc3('0x3d')](_0xfcc3('0xa1'),_['map'](_0x1bfae9,'id'));return db['sequelize'][_0xfcc3('0x34')](_0x1496d6[_0xfcc3('0x8b')](),_0x36334d)['then'](function(_0x4639f8){var _0x1f87e2=_[_0xfcc3('0xa2')](_0x4639f8,'OpenchannelInteractionId');var _0x31174d=[];_0x1bfae9[_0xfcc3('0x66')](function(_0x28a8f4){_0x31174d[_0xfcc3('0xa3')](updateOpenchannelInteraction(_0x28a8f4,_0xb02881,_0x1f87e2));});return BPromise[_0xfcc3('0xa4')](_0x31174d);});});})[_0xfcc3('0x23')](function(_0x56147c){_0x7e19da[_0xfcc3('0xa5')]=_0x56147c;return _0x7e19da;})['then'](respondWithFilteredResult(_0x439aa2,_0x3c3e27))[_0xfcc3('0x2e')](handleError(_0x439aa2,null));};exports['show']=function(_0x8e27a,_0x1c9c33){var _0x33fb59={};if(_0x8e27a[_0xfcc3('0x34')][_0xfcc3('0x31')]&&_0x8e27a[_0xfcc3('0x34')]['type']===_0xfcc3('0xa6')){_0x33fb59[_0xfcc3('0xa6')]=_0x8e27a[_0xfcc3('0xa7')]['id'];}else{_0x33fb59['id']=_0x8e27a['params']['id'];}var _0x4da8f3={'raw':![],'where':_0x33fb59},_0x5c5fcd={};_0x5c5fcd[_0xfcc3('0x33')]=_[_0xfcc3('0x35')](db[_0xfcc3('0x8d')][_0xfcc3('0xa8')]);_0x5c5fcd[_0xfcc3('0x34')]=_[_0xfcc3('0x35')](_0x8e27a[_0xfcc3('0x34')]);_0x5c5fcd[_0xfcc3('0x36')]=_[_0xfcc3('0x37')](_0x5c5fcd['model'],_0x5c5fcd[_0xfcc3('0x34')]);_0x4da8f3[_0xfcc3('0x38')]=_[_0xfcc3('0x37')](_0x5c5fcd[_0xfcc3('0x33')],qs[_0xfcc3('0x39')](_0x8e27a[_0xfcc3('0x34')][_0xfcc3('0x39')]));_0x4da8f3[_0xfcc3('0x38')]=_0x4da8f3[_0xfcc3('0x38')][_0xfcc3('0x3a')]?_0x4da8f3[_0xfcc3('0x38')]:_0x5c5fcd['model'];if(_0x8e27a[_0xfcc3('0x34')][_0xfcc3('0xa9')]){_0x4da8f3[_0xfcc3('0xaa')]=[{'all':!![]}];}_0x4da8f3=_[_0xfcc3('0x8c')]({},_0x4da8f3,_0x8e27a[_0xfcc3('0xab')]);return db[_0xfcc3('0x8d')][_0xfcc3('0x56')](_0x4da8f3)[_0xfcc3('0x23')](handleEntityNotFound(_0x1c9c33,null))[_0xfcc3('0x23')](respondWithResult(_0x1c9c33,null))['catch'](handleError(_0x1c9c33,null));};exports['create']=function(_0x4ffa34,_0x24ddb8){return db['OpenchannelInteraction'][_0xfcc3('0xac')](_0x4ffa34[_0xfcc3('0x6c')],{})['then'](respondWithResult(_0x24ddb8,0xc9))[_0xfcc3('0x2e')](handleError(_0x24ddb8,null));};exports[_0xfcc3('0xad')]=function(_0x5c0b04,_0x213b5d){if(_0x5c0b04[_0xfcc3('0x6c')]['id']){delete _0x5c0b04[_0xfcc3('0x6c')]['id'];}return db[_0xfcc3('0x8d')]['find']({'where':{'id':_0x5c0b04[_0xfcc3('0xa7')]['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x213b5d,null))[_0xfcc3('0x23')](saveUpdates(_0x5c0b04[_0xfcc3('0x6c')],null))[_0xfcc3('0x23')](respondWithResult(_0x213b5d,null))[_0xfcc3('0x2e')](handleError(_0x213b5d,null));};exports[_0xfcc3('0x24')]=function(_0xc56610,_0x3499a3){return db['OpenchannelInteraction'][_0xfcc3('0x56')]({'where':{'id':_0xc56610['params']['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x3499a3,null))[_0xfcc3('0x23')](removeEntity(_0x3499a3,null))[_0xfcc3('0x2e')](handleError(_0x3499a3,null));};exports[_0xfcc3('0xae')]=function(_0x2a9b1b,_0x449c3a){return db[_0xfcc3('0x8d')][_0xfcc3('0xae')]()[_0xfcc3('0x23')](respondWithResult(_0x449c3a,null))[_0xfcc3('0x2e')](handleError(_0x449c3a,null));};exports[_0xfcc3('0xaf')]=function(_0x1d402f,_0x2b1efb,_0x2c5537){return db[_0xfcc3('0xb0')][_0xfcc3('0x56')]({'where':{'id':_0x1d402f[_0xfcc3('0xa7')]['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x2b1efb,null))[_0xfcc3('0x23')](function(_0x4e17d9){if(_0x4e17d9){return _0x4e17d9[_0xfcc3('0xaf')](_0x1d402f[_0xfcc3('0x6c')][_0xfcc3('0xb1')],_['omit'](_0x1d402f[_0xfcc3('0x6c')],[_0xfcc3('0xb1'),'id'])||{});}})[_0xfcc3('0x23')](respondWithResult(_0x2b1efb,null))[_0xfcc3('0x2e')](handleError(_0x2b1efb,null));};exports[_0xfcc3('0xb2')]=function(_0x22a06e,_0x4c13f0,_0x4ed5ff){var _0x32cd5a={'raw':![],'where':{}};var _0x321929={};var _0x2d7880={'count':0x0,'rows':[]};return db[_0xfcc3('0x8d')][_0xfcc3('0xb3')]({'where':{'id':_0x22a06e['params']['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x4c13f0,null))[_0xfcc3('0x23')](function(_0x3d92c2){if(_0x3d92c2){_0x321929[_0xfcc3('0x33')]=_[_0xfcc3('0x35')](db[_0xfcc3('0xb0')][_0xfcc3('0xa8')]);_0x321929[_0xfcc3('0x34')]=_[_0xfcc3('0x35')](_0x22a06e[_0xfcc3('0x34')]);_0x321929['filters']=_[_0xfcc3('0x37')](_0x321929[_0xfcc3('0x33')],_0x321929['query']);_0x32cd5a[_0xfcc3('0x38')]=_['intersection'](_0x321929[_0xfcc3('0x33')],qs[_0xfcc3('0x39')](_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x39')]));_0x32cd5a[_0xfcc3('0x38')]=_0x32cd5a[_0xfcc3('0x38')][_0xfcc3('0x3a')]?_0x32cd5a[_0xfcc3('0x38')]:_0x321929[_0xfcc3('0x33')];if(!_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0xb4')](_0xfcc3('0x3b'))){_0x32cd5a[_0xfcc3('0x1e')]=qs[_0xfcc3('0x1e')](_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x1e')]);_0x32cd5a[_0xfcc3('0x1c')]=qs[_0xfcc3('0x1c')](_0x22a06e[_0xfcc3('0x34')]['offset']);}_0x32cd5a['order']=qs[_0xfcc3('0x3c')](_0x22a06e[_0xfcc3('0x34')]['sort']);_0x32cd5a[_0xfcc3('0x3d')]=qs[_0xfcc3('0x36')](_[_0xfcc3('0x3e')](_0x22a06e[_0xfcc3('0x34')],_0x321929[_0xfcc3('0x36')]));_0x32cd5a[_0xfcc3('0x3d')][_0xfcc3('0xb5')]=_0x3d92c2['id'];if(_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x79')]){_0x32cd5a[_0xfcc3('0x3d')]=_[_0xfcc3('0x8c')](_0x32cd5a[_0xfcc3('0x3d')],{'$or':_[_0xfcc3('0x29')](_0x32cd5a['attributes'],function(_0x56af81){var _0x18ac9a={};_0x18ac9a[_0x56af81]={'$like':'%'+_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x79')]+'%'};return _0x18ac9a;})});}if(_0x22a06e['query'][_0xfcc3('0xb6')]){var _0x5caddc=_0x22a06e['query'][_0xfcc3('0xb6')][_0xfcc3('0x2d')](',');var _0x1b945c={};_0x1b945c[_0x5caddc[0x0]]={'$gte':moment(_0x5caddc[0x1])[_0xfcc3('0xb7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x32cd5a[_0xfcc3('0x3d')]=_[_0xfcc3('0x8c')](_0x32cd5a[_0xfcc3('0x3d')],_0x1b945c);}_0x32cd5a=_[_0xfcc3('0x8c')]({},_0x32cd5a,_0x22a06e[_0xfcc3('0xab')]);return db[_0xfcc3('0xb0')][_0xfcc3('0x1f')]({'where':_0x32cd5a[_0xfcc3('0x3d')]})[_0xfcc3('0x23')](function(_0x421fe8){_0x2d7880[_0xfcc3('0x1f')]=_0x421fe8;if(_0x22a06e[_0xfcc3('0x34')]['includeAll']){_0x32cd5a[_0xfcc3('0xaa')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xfcc3('0xb8')](_0x32cd5a);})[_0xfcc3('0x23')](function(_0x5ca33c){_0x2d7880[_0xfcc3('0xa5')]=_0x5ca33c;return _0x2d7880;});}})[_0xfcc3('0x23')](respondWithFilteredResult(_0x4c13f0,_0x32cd5a))['catch'](handleError(_0x4c13f0,null));};exports[_0xfcc3('0xb9')]=function(_0x22f0db,_0x269439,_0x29fa56){return db[_0xfcc3('0x8d')][_0xfcc3('0x56')]({'where':{'id':_0x22f0db['params']['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x269439,null))['then'](function(_0x279834){if(_0x279834){return _0x279834['setTags'](_0x22f0db[_0xfcc3('0x6c')][_0xfcc3('0xb1')],_['omit'](_0x22f0db[_0xfcc3('0x6c')],['ids','id'])||{})['spread'](function(){return db[_0xfcc3('0x65')][_0xfcc3('0xb8')]({'attributes':['id',_0xfcc3('0x27'),_0xfcc3('0x41')],'where':{'id':_0x22f0db['body'][_0xfcc3('0xb1')]}});})[_0xfcc3('0x23')](function(_0x3d79c1){socket[_0xfcc3('0xba')](_0xfcc3('0xbb'),{'id':Number(_0x22f0db[_0xfcc3('0xa7')]['id']),'tags':_0x3d79c1||[]});return{'id':Number(_0x22f0db[_0xfcc3('0xa7')]['id']),'tags':_0x3d79c1||[]};});}})['then'](respondWithResult(_0x269439,null))[_0xfcc3('0x2e')](handleError(_0x269439,null));};exports['removeTags']=function(_0x401669,_0x446e6f,_0x5316af){return db[_0xfcc3('0x8d')][_0xfcc3('0x56')]({'where':{'id':_0x401669[_0xfcc3('0xa7')]['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x446e6f,null))[_0xfcc3('0x23')](function(_0x2a77a2){if(_0x2a77a2){return _0x2a77a2[_0xfcc3('0xbc')](_0x401669[_0xfcc3('0x34')][_0xfcc3('0xb1')]);}})['then'](respondWithStatusCode(_0x446e6f,null))[_0xfcc3('0x2e')](handleError(_0x446e6f,null));};exports[_0xfcc3('0xbd')]=function(_0x3b3f4d,_0x196e95){var _0x47a580=moment()['unix']()[_0xfcc3('0x8b')]();var _0x509873=path[_0xfcc3('0xbe')](config[_0xfcc3('0xbf')],_0xfcc3('0xc0'),_0xfcc3('0xc1'),_0xfcc3('0xc2'));var _0x34458a=path[_0xfcc3('0xbe')](config[_0xfcc3('0xbf')],'server',_0xfcc3('0xc1'),_0xfcc3('0xc3'));var _0x2531cf=path[_0xfcc3('0xbe')](_0x509873,_0x47a580);var _0x5e5425=util['format'](_0xfcc3('0xc4'),_0x3b3f4d[_0xfcc3('0xa7')]['id'],_0x47a580);var _0x2a833b=path[_0xfcc3('0xbe')](_0x509873,_0x5e5425);var _0xfe190b=[];_0xfe190b[_0xfcc3('0xa3')]({'model':db['User'],'as':_0xfcc3('0xc5'),'attributes':['id','fullname'],'raw':!![]});_0xfe190b[_0xfcc3('0xa3')]({'model':db[_0xfcc3('0xc6')],'as':_0xfcc3('0xc7'),'attributes':['id','firstName',_0xfcc3('0xc8')],'raw':!![]});if(_0x3b3f4d[_0xfcc3('0x34')][_0xfcc3('0xc3')]){_0xfe190b[_0xfcc3('0xa3')]({'model':db[_0xfcc3('0xc9')],'as':_0xfcc3('0xc9'),'raw':!![]});}var _0x37d47c=[{'model':db[_0xfcc3('0xb0')],'as':_0xfcc3('0xca'),'attributes':['id',_0xfcc3('0x6c'),'createdAt',_0xfcc3('0xcb'),_0xfcc3('0xcc'),_0xfcc3('0x76')],'include':_0xfe190b}];_0x37d47c[_0xfcc3('0xa3')]({'model':db['OpenchannelAccount'],'as':_0xfcc3('0xcd'),'attributes':['id',_0xfcc3('0x27')]});_0x37d47c[_0xfcc3('0xa3')]({'model':db['User'],'as':_0xfcc3('0xce'),'attributes':['id',_0xfcc3('0x2a')]});return db[_0xfcc3('0x8d')][_0xfcc3('0x56')]({'where':{'id':_0x3b3f4d[_0xfcc3('0xa7')]['id']},'include':_0x37d47c})[_0xfcc3('0x23')](handleEntityNotFound(_0x196e95,null))[_0xfcc3('0x23')](function(_0x335777){if(_0x335777){var _0x2ec31d=_0x335777[_0xfcc3('0xcf')]({'plain':!![]});fs[_0xfcc3('0xd0')](_0x2531cf);var _0x522fe0={'channel':'Openchannel','account':_0x2ec31d['Account']['name'],'agent':_0x2ec31d[_0xfcc3('0xce')]?_0x2ec31d[_0xfcc3('0xce')][_0xfcc3('0x2a')]:'N.A.','createdAt':moment(_0x2ec31d['createdAt'])[_0xfcc3('0xb7')](_0xfcc3('0xd1'))['toString'](),'closedAt':_0x2ec31d['closed']?moment(_0x2ec31d[_0xfcc3('0xd2')])[_0xfcc3('0xb7')](_0xfcc3('0xd1'))['toString']():'','disposition':_0x2ec31d[_0xfcc3('0xd3')],'visibility':_0x2ec31d[_0xfcc3('0xd4')]?_0xfcc3('0xd5'):'Private','messages':_(_0x2ec31d[_0xfcc3('0xca')])['filter']({'secret':![]})[_0xfcc3('0x29')](function(_0x598f36){if(_0x598f36[_0xfcc3('0xc9')]){var _0x36af74=path[_0xfcc3('0xbe')](_0x34458a,_0x598f36[_0xfcc3('0xc9')]['basename']);if(fs['existsSync'](_0x36af74)){fs[_0xfcc3('0xd6')](_0x36af74)[_0xfcc3('0xd7')](fs[_0xfcc3('0xd8')](path[_0xfcc3('0xbe')](_0x2531cf,_0x598f36[_0xfcc3('0xc9')][_0xfcc3('0xd9')])));}}return{'date':moment(_0x598f36[_0xfcc3('0x71')])[_0xfcc3('0xb7')](_0xfcc3('0xd1'))[_0xfcc3('0x8b')](),'sender':_0x598f36['direction']===_0xfcc3('0xda')?_0x598f36[_0xfcc3('0xc5')]?_0x598f36['User'][_0xfcc3('0x2a')]:'System':_0x598f36['Contact']['firstName']+(_0x598f36[_0xfcc3('0xc7')][_0xfcc3('0xc8')]?'\x20'+_0x598f36[_0xfcc3('0xc7')][_0xfcc3('0xc8')]:''),'body':_0x598f36['Attachment']?_0x598f36['Attachment'][_0xfcc3('0xd9')]:_0x598f36[_0xfcc3('0x6c')],'direction':_0x598f36['direction']===_0xfcc3('0xda')?'A':'C','secret':_0x598f36[_0xfcc3('0xcc')],'read':_0x598f36[_0xfcc3('0x76')],'attachment':_0x598f36[_0xfcc3('0xc9')]};})[_0xfcc3('0x58')]()};return ejs[_0xfcc3('0xdb')](path['join'](config[_0xfcc3('0xbf')],_0xfcc3('0xc0'),_0xfcc3('0xdc'),_0xfcc3('0xdd')),{'interaction':_0x522fe0})[_0xfcc3('0x23')](function(_0x4b4794){var _0xd3cac6=path['join'](_0x2531cf,'transcript-'+_0x2ec31d['id']+'-'+_0x47a580+_0xfcc3('0xde'));var _0x4fd595={'path':_0xd3cac6,'channel':'Openchannel','interactionId':_0x2ec31d['id']};return pdf[_0xfcc3('0xdf')](_0x4b4794,_0x4fd595);})[_0xfcc3('0x23')](function(){return new BPromise(function(_0x12a9a2,_0x14e77c){zipdir(_0x2531cf,{'saveTo':_0x2a833b},function(_0x58c633,_0x234813){if(_0x58c633)return _0x14e77c(_0x58c633);return _0x12a9a2(_0x234813);});})[_0xfcc3('0x23')](function(){return new BPromise(function(_0x676f00,_0x4313e1){rimraf(_0x2531cf,function(_0x544c79){if(_0x544c79)_0x4313e1(_0x544c79);return _0x676f00();});});})['then'](function(){return _0x196e95[_0xfcc3('0xbd')](_0x2a833b,_0x5e5425,function(_0x2019f2){if(_0x2019f2){console['log'](_0xfcc3('0xe0'),_0x2019f2);}else{fs[_0xfcc3('0xe1')](_0x2a833b);}});});});}else{return _0x196e95[_0xfcc3('0x19')](0xc8);}})[_0xfcc3('0x2e')](handleError(_0x196e95,null));};
\ No newline at end of file
+var _0x34e7=['cm_contacts','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','find','ContactId','buildExpression','type','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\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)','group','Sequelize','SELECT','clone','i.id','DESC','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','agent','i.OpenchannelAccountId\x20IS\x20NULL','then','sequelize','toString','keyBy','merge','OpenchannelInteraction','a.key','Account.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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','push','all','params','includeAll','include','options','create','destroy','describe','OpenchannelMessage','addMessage','omit','ids','getMessages','findOne','nolimit','OpenchannelInteractionId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closedAt','disposition','basename','existsSync','pipe','createWriteStream','createdAt','direction','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','unlinkSync','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','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','status','json','offset','count','limit','set','reject','save','update','end','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','catch','index','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','select','field','color','from','tools_tags','u.fullname','ui.OpenchannelInteractionId','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions'];(function(_0x8b8564,_0x162976){var _0x360c61=function(_0x164cc9){while(--_0x164cc9){_0x8b8564['push'](_0x8b8564['shift']());}};_0x360c61(++_0x162976);}(_0x34e7,0x9f));var _0x734e=function(_0x3382e2,_0x6fbda2){_0x3382e2=_0x3382e2-0x0;var _0x25381b=_0x34e7[_0x3382e2];return _0x25381b;};'use strict';var emlformat=require(_0x734e('0x0'));var rimraf=require(_0x734e('0x1'));var zipdir=require(_0x734e('0x2'));var jsonpatch=require(_0x734e('0x3'));var rp=require(_0x734e('0x4'));var moment=require(_0x734e('0x5'));var BPromise=require(_0x734e('0x6'));var Mustache=require(_0x734e('0x7'));var util=require(_0x734e('0x8'));var path=require(_0x734e('0x9'));var sox=require(_0x734e('0xa'));var csv=require(_0x734e('0xb'));var ejs=require(_0x734e('0xc'));var fs=require('fs');var fs_extra=require(_0x734e('0xd'));var _=require(_0x734e('0xe'));var squel=require(_0x734e('0xf'));var crypto=require(_0x734e('0x10'));var jsforce=require(_0x734e('0x11'));var deskjs=require(_0x734e('0x12'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x734e('0x13'));var Redis=require(_0x734e('0x14'));var authService=require(_0x734e('0x15'));var qs=require(_0x734e('0x16'));var as=require(_0x734e('0x17'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x734e('0x18'));var logger=require(_0x734e('0x19'))(_0x734e('0x1a'));var utils=require('../../config/utils');var config=require(_0x734e('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x734e('0x1c')](config[_0x734e('0x1d')],{'host':_0x734e('0x1e'),'port':0x18eb});var socket=require(_0x734e('0x1f'))(new Redis(config[_0x734e('0x1d')]));require(_0x734e('0x20'))[_0x734e('0x21')](socket);function respondWithStatusCode(_0xc8d099,_0x5afa05){_0x5afa05=_0x5afa05||0xcc;return function(_0x379345){if(_0x379345){return _0xc8d099['sendStatus'](_0x5afa05);}return _0xc8d099['status'](_0x5afa05)['end']();};}function respondWithResult(_0x4e8f6c,_0x64e69){_0x64e69=_0x64e69||0xc8;return function(_0x33eb6f){if(_0x33eb6f){return _0x4e8f6c[_0x734e('0x22')](_0x64e69)[_0x734e('0x23')](_0x33eb6f);}};}function respondWithFilteredResult(_0x449e1b,_0x5b6579){return function(_0x571c99){if(_0x571c99){var _0x196fa6=typeof _0x5b6579[_0x734e('0x24')]==='undefined'&&typeof _0x5b6579['limit']==='undefined';var _0x5c6550=_0x571c99[_0x734e('0x25')];var _0x4d93b8=_0x196fa6?0x0:_0x5b6579[_0x734e('0x24')];var _0x414d7d=_0x196fa6?_0x571c99[_0x734e('0x25')]:_0x5b6579[_0x734e('0x24')]+_0x5b6579[_0x734e('0x26')];var _0x4af721;if(_0x414d7d>=_0x5c6550){_0x414d7d=_0x5c6550;_0x4af721=0xc8;}else{_0x4af721=0xce;}_0x449e1b['status'](_0x4af721);return _0x449e1b[_0x734e('0x27')]('Content-Range',_0x4d93b8+'-'+_0x414d7d+'/'+_0x5c6550)[_0x734e('0x23')](_0x571c99);}return null;};}function patchUpdates(_0x8daa5a){return function(_0x2522be){try{jsonpatch['apply'](_0x2522be,_0x8daa5a,!![]);}catch(_0x3cc244){return BPromise[_0x734e('0x28')](_0x3cc244);}return _0x2522be[_0x734e('0x29')]();};}function saveUpdates(_0x9dd328,_0x201f31){return function(_0x3d2395){if(_0x3d2395){return _0x3d2395[_0x734e('0x2a')](_0x9dd328)['then'](function(_0x4b7b71){return _0x4b7b71;});}return null;};}function removeEntity(_0x477b44,_0x3804bf){return function(_0x4fcfaf){if(_0x4fcfaf){return _0x4fcfaf['destroy']()['then'](function(){_0x477b44[_0x734e('0x22')](0xcc)[_0x734e('0x2b')]();});}};}function handleEntityNotFound(_0x55f4b4,_0xbd726b){return function(_0x3ae782){if(!_0x3ae782){_0x55f4b4['sendStatus'](0x194);}return _0x3ae782;};}function handleError(_0x23cd53,_0x5005f1){_0x5005f1=_0x5005f1||0x1f4;return function(_0x4b9aad){logger[_0x734e('0x2c')](_0x4b9aad[_0x734e('0x2d')]);if(_0x4b9aad[_0x734e('0x2e')]){delete _0x4b9aad[_0x734e('0x2e')];}_0x23cd53[_0x734e('0x22')](_0x5005f1)[_0x734e('0x2f')](_0x4b9aad);};}function getInteractionUsers(_0x26a493,_0x337c87){return new BPromise(function(_0x3081dd,_0x44cee7){try{if(_0x337c87[_0x26a493['id']]){_0x26a493[_0x734e('0x30')]=_[_0x734e('0x31')](_0x337c87[_0x26a493['id']],function(_0x1e45e8){return{'id':_0x1e45e8['id'],'fullname':_0x1e45e8[_0x734e('0x32')]};});}}catch(_0x1713e3){_0x44cee7(_0x1713e3);}_0x3081dd(_0x26a493);});}function getInteractionTags(_0x18bf8c,_0x127f55){return new BPromise(function(_0x5808d1,_0x424fcf){try{if(_0x18bf8c[_0x734e('0x33')]){_0x18bf8c[_0x734e('0x34')]=[];_0x18bf8c[_0x734e('0x33')][_0x734e('0x35')](',')['forEach'](function(_0x2c5111){_0x18bf8c['Tags']['push'](_0x127f55[_0x2c5111]);});}delete _0x18bf8c[_0x734e('0x33')];}catch(_0x55a170){_0x424fcf(_0x55a170);}_0x5808d1(_0x18bf8c);});}function updateOpenchannelInteraction(_0x12f185,_0x20263a,_0x5d3324){return new BPromise(function(_0x26ca6e,_0x4b5a37){return getInteractionUsers(_0x12f185,_0x5d3324)['then'](function(_0x3b1a24){return getInteractionTags(_0x3b1a24,_0x20263a);})['then'](function(_0x489bd7){_0x26ca6e(_0x489bd7);})[_0x734e('0x36')](function(_0x5bb475){_0x4b5a37(_0x5bb475);});});}exports[_0x734e('0x37')]=function(_0x2d0523,_0x2dbee7){var _0x6894cb={},_0x2549e7={},_0x4c3cd0={'count':0x0,'rows':[]};var _0x446267=_[_0x734e('0x31')](db['OpenchannelInteraction'][_0x734e('0x38')],function(_0x1bfcfd){return{'name':_0x1bfcfd[_0x734e('0x39')],'type':_0x1bfcfd['type'][_0x734e('0x3a')]};});_0x2549e7[_0x734e('0x3b')]=_[_0x734e('0x31')](_0x446267,'name');_0x2549e7[_0x734e('0x3c')]=_[_0x734e('0x3d')](_0x2d0523[_0x734e('0x3c')]);_0x2549e7[_0x734e('0x3e')]=_['intersection'](_0x2549e7['model'],_0x2549e7['query']);_0x6894cb[_0x734e('0x3f')]=_[_0x734e('0x40')](_0x2549e7[_0x734e('0x3b')],qs[_0x734e('0x41')](_0x2d0523[_0x734e('0x3c')][_0x734e('0x41')]));_0x6894cb['attributes']=_0x6894cb[_0x734e('0x3f')][_0x734e('0x42')]?_0x6894cb[_0x734e('0x3f')]:_0x2549e7['model'];if(!_0x2d0523[_0x734e('0x3c')]['hasOwnProperty']('nolimit')){_0x6894cb[_0x734e('0x26')]=qs[_0x734e('0x26')](_0x2d0523[_0x734e('0x3c')]['limit']);_0x6894cb[_0x734e('0x24')]=qs[_0x734e('0x24')](_0x2d0523[_0x734e('0x3c')][_0x734e('0x24')]);}_0x6894cb[_0x734e('0x43')]=qs[_0x734e('0x44')](_0x2d0523[_0x734e('0x3c')][_0x734e('0x44')]);_0x6894cb[_0x734e('0x45')]=qs[_0x734e('0x3e')](_[_0x734e('0x46')](_0x2d0523[_0x734e('0x3c')],_0x2549e7['filters']),_0x446267);var _0x291071=[];var _0x299869=squel[_0x734e('0x47')]()[_0x734e('0x48')]('id')['field'](_0x734e('0x2e'))[_0x734e('0x48')](_0x734e('0x49'))[_0x734e('0x4a')](_0x734e('0x4b'));var _0x34a738=squel[_0x734e('0x47')]()[_0x734e('0x48')]('u.id')['field'](_0x734e('0x4c'))[_0x734e('0x48')](_0x734e('0x4d'))[_0x734e('0x4a')]('user_has_openchannel_interactions','ui')[_0x734e('0x4e')](_0x734e('0x4f'),'u',_0x734e('0x50'));var _0x34f151=squel[_0x734e('0x47')]()[_0x734e('0x4a')](_0x734e('0x51'),'i')[_0x734e('0x4e')](_0x734e('0x52'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x734e('0x4e')](_0x734e('0x4f'),'o',_0x734e('0x53'))[_0x734e('0x4e')](_0x734e('0x54'),'a',_0x734e('0x55'))[_0x734e('0x4e')]('openchannel_messages','me',_0x734e('0x56'))[_0x734e('0x4e')]('openchannel_interaction_has_tags','it',_0x734e('0x57'))[_0x734e('0x4e')](_0x734e('0x4b'),'t',_0x734e('0x58'));var _0x35a5f1=squel[_0x734e('0x59')]();var _0x51787c=[];var _0x1fb394=squel[_0x734e('0x59')]();var _0x2dbaac;if(_0x2d0523['query'][_0x734e('0x5a')]){_0x2dbaac=as['parseSearch'](_0x2d0523[_0x734e('0x3c')][_0x734e('0x5a')]);var _0x52789a=_0x2dbaac[_0x734e('0x5b')];for(var _0x910fdb=0x0;_0x910fdb<_0x2dbaac['conditions'][_0x734e('0x42')];_0x910fdb++){var _0x599d18=_0x2dbaac[_0x734e('0x5c')][_0x910fdb];var _0x49cf29='i';var _0x166e03=_['find'](_0x446267,[_0x734e('0x2e'),_0x599d18[_0x734e('0x48')]]);if(!_0x166e03){switch(_0x599d18[_0x734e('0x48')]){case _0x734e('0x5d'):if(_0x599d18[_0x734e('0x5e')]==0x1){_0x34f151[_0x734e('0x5f')]('`'+_0x599d18['field']+_0x734e('0x60'));}else{_0x34f151[_0x734e('0x5f')]('`'+_0x599d18[_0x734e('0x48')]+_0x734e('0x61'));}break;case _0x734e('0x62'):if(_0x599d18[_0x734e('0x63')]===_0x734e('0x64')){if(_0x599d18[_0x734e('0x5e')][_0x734e('0x35')]('\x20')[_0x734e('0x42')]>0x1){_0x35a5f1[_0x52789a](_0x734e('0x65'),qs[_0x734e('0x66')](_0x599d18['value']),null);}else{var _0x5b74ac='%'+_0x599d18[_0x734e('0x5e')]+'%';_0x35a5f1[_0x52789a]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x5b74ac,_0x5b74ac,_0x5b74ac);}}else{_0x166e03=_[_0x734e('0x67')](_0x446267,[_0x734e('0x2e'),'ContactId']);_0x599d18[_0x734e('0x48')]=_0x734e('0x68');_0x15ec3e=as[_0x734e('0x69')](_0x49cf29,_0x166e03[_0x734e('0x6a')],_0x599d18);_0x35a5f1[_0x52789a](_0x15ec3e[_0x734e('0x6b')],_0x15ec3e[_0x734e('0x5e')][_0x734e('0x6c')],_0x15ec3e[_0x734e('0x5e')][_0x734e('0x2b')]);}break;case _0x734e('0x6d'):var _0x1c38b2=_0x599d18[_0x734e('0x5e')]['split'](',')['map'](function(_0x247a00){return Number(_0x247a00);});_0x1c38b2[_0x734e('0x6e')](function(_0x101d3a){_0x1fb394['or'](_0x734e('0x6f'),'%,'+_0x101d3a+',%');});_0x51787c=_[_0x734e('0x70')](_0x51787c,_0x1c38b2);break;case _0x734e('0x71'):if(_0x599d18[_0x734e('0x63')]==='$substring'){_0x35a5f1[_0x52789a](_0x734e('0x72'),'%'+_0x599d18[_0x734e('0x5e')]+'%',null);}else{_0x166e03=_[_0x734e('0x67')](_0x446267,[_0x734e('0x2e'),_0x734e('0x73')]);_0x599d18['field']=_0x734e('0x73');_0x15ec3e=as[_0x734e('0x69')](_0x49cf29,_0x166e03[_0x734e('0x6a')],_0x599d18);_0x35a5f1[_0x52789a](_0x15ec3e[_0x734e('0x6b')],_0x15ec3e[_0x734e('0x5e')][_0x734e('0x6c')],_0x15ec3e[_0x734e('0x5e')][_0x734e('0x2b')]);}break;case _0x734e('0x74'):_0x15ec3e=as[_0x734e('0x69')]('me',null,_0x599d18);_0x35a5f1[_0x52789a](_0x15ec3e[_0x734e('0x6b')],_0x15ec3e[_0x734e('0x5e')]['start'],_0x15ec3e['value'][_0x734e('0x2b')]);break;}}else{var _0x15ec3e=as['buildExpression'](_0x49cf29,_0x166e03[_0x734e('0x6a')],_0x599d18);_0x35a5f1[_0x52789a](_0x15ec3e['text'],_0x15ec3e[_0x734e('0x5e')][_0x734e('0x6c')],_0x15ec3e[_0x734e('0x5e')][_0x734e('0x2b')]);}}}else{var _0x58b4eb=_(_0x2d0523[_0x734e('0x3c')])[_0x734e('0x3d')]()['map'](function(_0x3867a3){return _[_0x734e('0x75')](_0x446267,[_0x734e('0x2e'),_0x3867a3])?_0x3867a3:undefined;})['compact']()[_0x734e('0x5e')]();if(!_[_0x734e('0x76')](_0x58b4eb)){_0x58b4eb[_0x734e('0x6e')](function(_0x231217){if(_0x231217===_0x734e('0x77')){_0x34f151[_0x734e('0x45')](_0x734e('0x78'),[][_0x734e('0x79')](_0x2d0523[_0x734e('0x3c')][_0x231217]));}else if(_0x231217==='createdAt'){var _0x23d649=JSON[_0x734e('0x7a')](_0x2d0523[_0x734e('0x3c')][_0x231217])['$gte'];var _0x34ce35=JSON[_0x734e('0x7a')](_0x2d0523[_0x734e('0x3c')][_0x231217])[_0x734e('0x7b')];_0x34f151[_0x734e('0x45')](_0x734e('0x7c'),_0x23d649,_0x34ce35);}else{if(_0x2d0523[_0x734e('0x3c')][_0x231217]===_0x734e('0x7d')){_0x34f151[_0x734e('0x45')]('i.'+_0x231217+'\x20IS\x20NULL');}else{_0x34f151['where']('i.'+_0x231217+_0x734e('0x7e'),_0x2d0523['query'][_0x231217]);}}});}if(_0x2d0523[_0x734e('0x3c')][_0x734e('0x7f')]){if(_0x2d0523['query']['read']==0x1){_0x34f151['having'](_0x734e('0x80'));}else{_0x34f151[_0x734e('0x5f')](_0x734e('0x81'));}}if(_0x2d0523['query']['tag']){_0x51787c=_[_0x734e('0x82')](_0x2d0523['query'][_0x734e('0x83')])?_0x2d0523[_0x734e('0x3c')][_0x734e('0x83')]:new Array(_0x2d0523[_0x734e('0x3c')][_0x734e('0x83')]);_0x51787c[_0x734e('0x6e')](function(_0x16cd33){_0x1fb394['or'](_0x734e('0x6f'),'%,'+_0x16cd33+',%');});}if(_0x2d0523[_0x734e('0x3c')][_0x734e('0x84')]){var _0x6cc7fd=_0x2d0523['query']['filter'][_0x734e('0x85')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x734e('0x86')](_0x6cc7fd)){_0x35a5f1['or'](_0x734e('0x87'),_0x6cc7fd+'%');}else{_0x35a5f1['or'](_0x734e('0x88'),qs['getFullTextValue'](_0x6cc7fd))['or']('i.from\x20LIKE\x20?',_0x6cc7fd+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x6cc7fd+'%');}}}_0x34f151['where'](_0x35a5f1);_0x34f151[_0x734e('0x89')]('i.id');var _0x5036e5={'type':db[_0x734e('0x8a')]['QueryTypes'][_0x734e('0x8b')],'raw':!![]};var _0x2c5535=_0x34f151[_0x734e('0x8c')]();_0x2c5535[_0x734e('0x48')](_0x734e('0x8d'));_0x2c5535[_0x734e('0x48')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x734e('0x5d'));if(_0x6894cb['order']){_0x6894cb[_0x734e('0x43')]['forEach'](function(_0x597dcb){var _0x47af88=_0x597dcb[0x0]==='contactName'?_0x597dcb[0x0]:'i.'+_0x597dcb[0x0];_0x34f151[_0x734e('0x43')](_0x47af88,_0x597dcb[0x1]===_0x734e('0x8e')?![]:!![]);});}if(!_[_0x734e('0x76')](_0x51787c)){_0x34f151[_0x734e('0x5f')](_0x1fb394);_0x2c5535[_0x734e('0x45')](_0x734e('0x8f'),_0x51787c);}BPromise['resolve']()['then'](function(){if(!_0x2dbaac){if(_0x2d0523['query'][_0x734e('0x77')])return;_0x2c5535[_0x734e('0x45')](_0x734e('0x90'));_0x34f151[_0x734e('0x45')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x2d0523[_0x734e('0x91')]['role']!==_0x734e('0x92'))return;return _0x2d0523[_0x734e('0x91')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x202d8a){if(_[_0x734e('0x76')](_0x202d8a)){_0x2c5535[_0x734e('0x45')](_0x734e('0x93'));_0x34f151[_0x734e('0x45')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x2c5535[_0x734e('0x45')](_0x734e('0x78'),_[_0x734e('0x31')](_0x202d8a,'id'));_0x34f151[_0x734e('0x45')](_0x734e('0x78'),_['map'](_0x202d8a,'id'));}});})[_0x734e('0x94')](function(){if(_0x2d0523[_0x734e('0x91')]['role']===_0x734e('0x92')&&!_0x2dbaac&&!_0x2d0523[_0x734e('0x3c')][_0x734e('0x77')])return[];return db[_0x734e('0x95')]['query'](_0x2c5535[_0x734e('0x96')](),_0x5036e5);})[_0x734e('0x94')](function(_0x283956){_0x4c3cd0[_0x734e('0x25')]=_0x283956[_0x734e('0x42')];if(_0x4c3cd0[_0x734e('0x25')]===0x0)return[];return db[_0x734e('0x95')][_0x734e('0x3c')](_0x299869['toString'](),_0x5036e5)[_0x734e('0x94')](function(_0x4fed7b){_0x291071=_[_0x734e('0x97')](_0x4fed7b,'id');_0x5036e5=_[_0x734e('0x98')](_0x5036e5,{'model':db[_0x734e('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2d0523[_0x734e('0x3c')][_0x734e('0x41')]){_0x6894cb[_0x734e('0x3f')]['forEach'](function(_0x7f4558){_0x34f151[_0x734e('0x48')]('i.'+_0x7f4558);});}else{_0x34f151['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x734e('0x5d'));_0x34f151['field'](_0x734e('0x9a'),_0x734e('0x9b'));_0x34f151[_0x734e('0x48')](_0x734e('0x9c'),_0x734e('0x9d'));_0x34f151[_0x734e('0x48')](_0x734e('0x9e'),_0x734e('0x9f'));_0x34f151[_0x734e('0x48')](_0x734e('0xa0'));_0x34f151[_0x734e('0x48')](_0x734e('0xa1'),_0x734e('0xa2'));_0x34f151[_0x734e('0x48')](_0x734e('0xa3'),_0x734e('0xa4'));_0x34f151[_0x734e('0x48')](_0x734e('0xa5'),'Contact.email');_0x34f151[_0x734e('0x48')](_0x734e('0xa6'),_0x734e('0xa7'));_0x34f151[_0x734e('0x48')](_0x734e('0xa8'),'Contact.mobile');_0x34f151['field'](_0x734e('0xa9'),'Contact.fax');_0x34f151['field']('o.fullname',_0x734e('0xaa'));_0x34f151[_0x734e('0x48')]('o.internal',_0x734e('0xab'));_0x34f151[_0x734e('0x48')](_0x734e('0xac'),_0x734e('0x33'));}if(_0x6894cb[_0x734e('0x26')])_0x34f151['limit'](_0x6894cb[_0x734e('0x26')]);if(_0x6894cb['offset'])_0x34f151[_0x734e('0x24')](_0x6894cb[_0x734e('0x24')]);return db[_0x734e('0x95')][_0x734e('0x3c')](_0x34f151[_0x734e('0x96')](),_0x5036e5);})[_0x734e('0x94')](function(_0x5ab7bc){if(_0x5ab7bc[_0x734e('0x42')]>0x0)_0x34a738[_0x734e('0x45')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0x734e('0x31')](_0x5ab7bc,'id'));return db[_0x734e('0x95')][_0x734e('0x3c')](_0x34a738[_0x734e('0x96')](),_0x5036e5)[_0x734e('0x94')](function(_0x12a425){var _0xadc3ec=_[_0x734e('0xad')](_0x12a425,'OpenchannelInteractionId');var _0x415556=[];_0x5ab7bc[_0x734e('0x6e')](function(_0x39043e){_0x415556[_0x734e('0xae')](updateOpenchannelInteraction(_0x39043e,_0x291071,_0xadc3ec));});return BPromise[_0x734e('0xaf')](_0x415556);});});})[_0x734e('0x94')](function(_0x216389){_0x4c3cd0['rows']=_0x216389;return _0x4c3cd0;})[_0x734e('0x94')](respondWithFilteredResult(_0x2dbee7,_0x6894cb))[_0x734e('0x36')](handleError(_0x2dbee7,null));};exports['show']=function(_0xc888bf,_0x503772){var _0x4bcb67={};if(_0xc888bf[_0x734e('0x3c')]['type']&&_0xc888bf[_0x734e('0x3c')]['type']===_0x734e('0x4a')){_0x4bcb67['from']=_0xc888bf[_0x734e('0xb0')]['id'];}else{_0x4bcb67['id']=_0xc888bf[_0x734e('0xb0')]['id'];}var _0xcc11e4={'raw':![],'where':_0x4bcb67},_0x5e90f9={};_0x5e90f9[_0x734e('0x3b')]=_['keys'](db[_0x734e('0x99')][_0x734e('0x38')]);_0x5e90f9[_0x734e('0x3c')]=_[_0x734e('0x3d')](_0xc888bf['query']);_0x5e90f9[_0x734e('0x3e')]=_[_0x734e('0x40')](_0x5e90f9[_0x734e('0x3b')],_0x5e90f9[_0x734e('0x3c')]);_0xcc11e4[_0x734e('0x3f')]=_[_0x734e('0x40')](_0x5e90f9[_0x734e('0x3b')],qs[_0x734e('0x41')](_0xc888bf[_0x734e('0x3c')]['fields']));_0xcc11e4[_0x734e('0x3f')]=_0xcc11e4['attributes'][_0x734e('0x42')]?_0xcc11e4['attributes']:_0x5e90f9[_0x734e('0x3b')];if(_0xc888bf[_0x734e('0x3c')][_0x734e('0xb1')]){_0xcc11e4[_0x734e('0xb2')]=[{'all':!![]}];}_0xcc11e4=_[_0x734e('0x98')]({},_0xcc11e4,_0xc888bf[_0x734e('0xb3')]);return db[_0x734e('0x99')][_0x734e('0x67')](_0xcc11e4)[_0x734e('0x94')](handleEntityNotFound(_0x503772,null))['then'](respondWithResult(_0x503772,null))[_0x734e('0x36')](handleError(_0x503772,null));};exports[_0x734e('0xb4')]=function(_0x528ee7,_0x2a2c5f){return db[_0x734e('0x99')][_0x734e('0xb4')](_0x528ee7[_0x734e('0x74')],{})[_0x734e('0x94')](respondWithResult(_0x2a2c5f,0xc9))[_0x734e('0x36')](handleError(_0x2a2c5f,null));};exports[_0x734e('0x2a')]=function(_0x457f46,_0x44e1df){if(_0x457f46[_0x734e('0x74')]['id']){delete _0x457f46[_0x734e('0x74')]['id'];}return db[_0x734e('0x99')][_0x734e('0x67')]({'where':{'id':_0x457f46[_0x734e('0xb0')]['id']}})[_0x734e('0x94')](handleEntityNotFound(_0x44e1df,null))[_0x734e('0x94')](saveUpdates(_0x457f46[_0x734e('0x74')],null))['then'](respondWithResult(_0x44e1df,null))[_0x734e('0x36')](handleError(_0x44e1df,null));};exports[_0x734e('0xb5')]=function(_0x27868a,_0x2bde57){return db[_0x734e('0x99')][_0x734e('0x67')]({'where':{'id':_0x27868a[_0x734e('0xb0')]['id']}})[_0x734e('0x94')](handleEntityNotFound(_0x2bde57,null))[_0x734e('0x94')](removeEntity(_0x2bde57,null))[_0x734e('0x36')](handleError(_0x2bde57,null));};exports[_0x734e('0xb6')]=function(_0x38ed5d,_0x2464e9){return db[_0x734e('0x99')]['describe']()[_0x734e('0x94')](respondWithResult(_0x2464e9,null))['catch'](handleError(_0x2464e9,null));};exports['addMessage']=function(_0x290408,_0x55a9ba,_0x413cd4){return db[_0x734e('0xb7')][_0x734e('0x67')]({'where':{'id':_0x290408[_0x734e('0xb0')]['id']}})[_0x734e('0x94')](handleEntityNotFound(_0x55a9ba,null))['then'](function(_0x5211d1){if(_0x5211d1){return _0x5211d1[_0x734e('0xb8')](_0x290408[_0x734e('0x74')]['ids'],_[_0x734e('0xb9')](_0x290408['body'],[_0x734e('0xba'),'id'])||{});}})[_0x734e('0x94')](respondWithResult(_0x55a9ba,null))[_0x734e('0x36')](handleError(_0x55a9ba,null));};exports[_0x734e('0xbb')]=function(_0x50b3f5,_0x4909ea,_0x20d793){var _0x140599={'raw':![],'where':{}};var _0xd1ae11={};var _0x4f9cb9={'count':0x0,'rows':[]};return db[_0x734e('0x99')][_0x734e('0xbc')]({'where':{'id':_0x50b3f5[_0x734e('0xb0')]['id']}})[_0x734e('0x94')](handleEntityNotFound(_0x4909ea,null))[_0x734e('0x94')](function(_0x10f457){if(_0x10f457){_0xd1ae11[_0x734e('0x3b')]=_[_0x734e('0x3d')](db[_0x734e('0xb7')][_0x734e('0x38')]);_0xd1ae11['query']=_[_0x734e('0x3d')](_0x50b3f5[_0x734e('0x3c')]);_0xd1ae11[_0x734e('0x3e')]=_[_0x734e('0x40')](_0xd1ae11[_0x734e('0x3b')],_0xd1ae11[_0x734e('0x3c')]);_0x140599['attributes']=_['intersection'](_0xd1ae11[_0x734e('0x3b')],qs[_0x734e('0x41')](_0x50b3f5['query'][_0x734e('0x41')]));_0x140599[_0x734e('0x3f')]=_0x140599[_0x734e('0x3f')][_0x734e('0x42')]?_0x140599[_0x734e('0x3f')]:_0xd1ae11['model'];if(!_0x50b3f5['query']['hasOwnProperty'](_0x734e('0xbd'))){_0x140599[_0x734e('0x26')]=qs[_0x734e('0x26')](_0x50b3f5[_0x734e('0x3c')][_0x734e('0x26')]);_0x140599['offset']=qs[_0x734e('0x24')](_0x50b3f5['query'][_0x734e('0x24')]);}_0x140599['order']=qs[_0x734e('0x44')](_0x50b3f5['query'][_0x734e('0x44')]);_0x140599[_0x734e('0x45')]=qs[_0x734e('0x3e')](_[_0x734e('0x46')](_0x50b3f5[_0x734e('0x3c')],_0xd1ae11[_0x734e('0x3e')]));_0x140599[_0x734e('0x45')][_0x734e('0xbe')]=_0x10f457['id'];if(_0x50b3f5['query'][_0x734e('0x84')]){_0x140599[_0x734e('0x45')]=_[_0x734e('0x98')](_0x140599['where'],{'$or':_['map'](_0x140599['attributes'],function(_0x5a39c1){var _0x54c763={};_0x54c763[_0x5a39c1]={'$like':'%'+_0x50b3f5['query']['filter']+'%'};return _0x54c763;})});}if(_0x50b3f5['query']['$gte']){var _0x10a2b3=_0x50b3f5['query'][_0x734e('0xbf')][_0x734e('0x35')](',');var _0x88b098={};_0x88b098[_0x10a2b3[0x0]]={'$gte':moment(_0x10a2b3[0x1])[_0x734e('0xc0')](_0x734e('0xc1'))};_0x140599['where']=_[_0x734e('0x98')](_0x140599[_0x734e('0x45')],_0x88b098);}_0x140599=_[_0x734e('0x98')]({},_0x140599,_0x50b3f5[_0x734e('0xb3')]);return db['OpenchannelMessage'][_0x734e('0x25')]({'where':_0x140599[_0x734e('0x45')]})[_0x734e('0x94')](function(_0xaf1b1a){_0x4f9cb9[_0x734e('0x25')]=_0xaf1b1a;if(_0x50b3f5[_0x734e('0x3c')][_0x734e('0xb1')]){_0x140599[_0x734e('0xb2')]=[{'all':!![]}];}return db[_0x734e('0xb7')][_0x734e('0xc2')](_0x140599);})[_0x734e('0x94')](function(_0x148ecd){_0x4f9cb9[_0x734e('0xc3')]=_0x148ecd;return _0x4f9cb9;});}})[_0x734e('0x94')](respondWithFilteredResult(_0x4909ea,_0x140599))['catch'](handleError(_0x4909ea,null));};exports[_0x734e('0xc4')]=function(_0x2917c2,_0x25f1b4,_0x49ab9f){return db['OpenchannelInteraction'][_0x734e('0x67')]({'where':{'id':_0x2917c2[_0x734e('0xb0')]['id']}})[_0x734e('0x94')](handleEntityNotFound(_0x25f1b4,null))[_0x734e('0x94')](function(_0x2dc29e){if(_0x2dc29e){return _0x2dc29e[_0x734e('0xc5')](_0x2917c2[_0x734e('0x74')]['ids'],_[_0x734e('0xb9')](_0x2917c2[_0x734e('0x74')],[_0x734e('0xba'),'id'])||{})[_0x734e('0xc6')](function(){return db['Tag']['findAll']({'attributes':['id',_0x734e('0x2e'),_0x734e('0x49')],'where':{'id':_0x2917c2[_0x734e('0x74')]['ids']}});})['then'](function(_0x475d7e){socket[_0x734e('0xc7')](_0x734e('0xc8'),{'id':Number(_0x2917c2[_0x734e('0xb0')]['id']),'tags':_0x475d7e||[]});return{'id':Number(_0x2917c2[_0x734e('0xb0')]['id']),'tags':_0x475d7e||[]};});}})[_0x734e('0x94')](respondWithResult(_0x25f1b4,null))[_0x734e('0x36')](handleError(_0x25f1b4,null));};exports['removeTags']=function(_0x242d72,_0x147764,_0x3bda17){return db[_0x734e('0x99')][_0x734e('0x67')]({'where':{'id':_0x242d72[_0x734e('0xb0')]['id']}})['then'](handleEntityNotFound(_0x147764,null))['then'](function(_0x273231){if(_0x273231){return _0x273231[_0x734e('0xc9')](_0x242d72[_0x734e('0x3c')][_0x734e('0xba')]);}})[_0x734e('0x94')](respondWithStatusCode(_0x147764,null))[_0x734e('0x36')](handleError(_0x147764,null));};exports[_0x734e('0xca')]=function(_0x7bce3a,_0x4fdc76){var _0x4127e9=moment()[_0x734e('0xcb')]()[_0x734e('0x96')]();var _0x579813=path[_0x734e('0xcc')](config[_0x734e('0xcd')],_0x734e('0xce'),_0x734e('0xcf'),_0x734e('0xd0'));var _0x540612=path[_0x734e('0xcc')](config[_0x734e('0xcd')],_0x734e('0xce'),_0x734e('0xcf'),_0x734e('0xd1'));var _0x567802=path[_0x734e('0xcc')](_0x579813,_0x4127e9);var _0xc7bb17=util[_0x734e('0xc0')](_0x734e('0xd2'),_0x7bce3a[_0x734e('0xb0')]['id'],_0x4127e9);var _0x3ca839=path[_0x734e('0xcc')](_0x579813,_0xc7bb17);var _0x2d269c=[];_0x2d269c[_0x734e('0xae')]({'model':db['User'],'as':'User','attributes':['id',_0x734e('0x32')],'raw':!![]});_0x2d269c[_0x734e('0xae')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x734e('0xd3'),_0x734e('0xd4')],'raw':!![]});if(_0x7bce3a[_0x734e('0x3c')][_0x734e('0xd1')]){_0x2d269c[_0x734e('0xae')]({'model':db[_0x734e('0xd5')],'as':_0x734e('0xd5'),'raw':!![]});}var _0x2c69ec=[{'model':db[_0x734e('0xb7')],'as':_0x734e('0xd6'),'attributes':['id','body','createdAt','direction',_0x734e('0xd7'),_0x734e('0x7f')],'include':_0x2d269c}];_0x2c69ec[_0x734e('0xae')]({'model':db[_0x734e('0xd8')],'as':_0x734e('0xd9'),'attributes':['id','name']});_0x2c69ec[_0x734e('0xae')]({'model':db[_0x734e('0x71')],'as':_0x734e('0xda'),'attributes':['id',_0x734e('0x32')]});return db[_0x734e('0x99')][_0x734e('0x67')]({'where':{'id':_0x7bce3a[_0x734e('0xb0')]['id']},'include':_0x2c69ec})['then'](handleEntityNotFound(_0x4fdc76,null))['then'](function(_0x753cfc){if(_0x753cfc){var _0x19abc8=_0x753cfc[_0x734e('0xdb')]({'plain':!![]});fs[_0x734e('0xdc')](_0x567802);var _0x2c8336={'channel':_0x734e('0xdd'),'account':_0x19abc8[_0x734e('0xd9')][_0x734e('0x2e')],'agent':_0x19abc8[_0x734e('0xda')]?_0x19abc8[_0x734e('0xda')][_0x734e('0x32')]:_0x734e('0xde'),'createdAt':moment(_0x19abc8['createdAt'])[_0x734e('0xc0')](_0x734e('0xc1'))['toString'](),'closedAt':_0x19abc8['closed']?moment(_0x19abc8[_0x734e('0xdf')])[_0x734e('0xc0')](_0x734e('0xc1'))['toString']():'','disposition':_0x19abc8[_0x734e('0xe0')],'visibility':_0x19abc8['threadId']?'Public':'Private','messages':_(_0x19abc8['Messages'])[_0x734e('0x84')]({'secret':![]})[_0x734e('0x31')](function(_0x5f2500){if(_0x5f2500['Attachment']){var _0x131d66=path['join'](_0x540612,_0x5f2500[_0x734e('0xd5')][_0x734e('0xe1')]);if(fs[_0x734e('0xe2')](_0x131d66)){fs['createReadStream'](_0x131d66)[_0x734e('0xe3')](fs[_0x734e('0xe4')](path[_0x734e('0xcc')](_0x567802,_0x5f2500[_0x734e('0xd5')][_0x734e('0xe1')])));}}return{'date':moment(_0x5f2500[_0x734e('0xe5')])[_0x734e('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')[_0x734e('0x96')](),'sender':_0x5f2500[_0x734e('0xe6')]===_0x734e('0xe7')?_0x5f2500['User']?_0x5f2500[_0x734e('0x71')][_0x734e('0x32')]:_0x734e('0xe8'):_0x5f2500[_0x734e('0x62')][_0x734e('0xd3')]+(_0x5f2500[_0x734e('0x62')][_0x734e('0xd4')]?'\x20'+_0x5f2500[_0x734e('0x62')][_0x734e('0xd4')]:''),'body':_0x5f2500[_0x734e('0xd5')]?_0x5f2500[_0x734e('0xd5')]['basename']:_0x5f2500[_0x734e('0x74')],'direction':_0x5f2500['direction']===_0x734e('0xe7')?'A':'C','secret':_0x5f2500[_0x734e('0xd7')],'read':_0x5f2500['read'],'attachment':_0x5f2500[_0x734e('0xd5')]};})['value']()};return ejs[_0x734e('0xe9')](path['join'](config['root'],_0x734e('0xce'),_0x734e('0xea'),_0x734e('0xeb')),{'interaction':_0x2c8336})[_0x734e('0x94')](function(_0x5a25ad){var _0x5d5e70=path[_0x734e('0xcc')](_0x567802,'transcript-'+_0x19abc8['id']+'-'+_0x4127e9+_0x734e('0xec'));var _0x2bab5f={'path':_0x5d5e70,'channel':'Openchannel','interactionId':_0x19abc8['id']};return pdf[_0x734e('0xed')](_0x5a25ad,_0x2bab5f);})[_0x734e('0x94')](function(){return new BPromise(function(_0x4d9097,_0x44e237){zipdir(_0x567802,{'saveTo':_0x3ca839},function(_0xe007c9,_0x5f4b1a){if(_0xe007c9)return _0x44e237(_0xe007c9);return _0x4d9097(_0x5f4b1a);});})['then'](function(){return new BPromise(function(_0xaf865b,_0xac4df1){rimraf(_0x567802,function(_0x14d17b){if(_0x14d17b)_0xac4df1(_0x14d17b);return _0xaf865b();});});})[_0x734e('0x94')](function(){return _0x4fdc76[_0x734e('0xca')](_0x3ca839,_0xc7bb17,function(_0x13e85e){if(_0x13e85e){console[_0x734e('0xee')](_0x734e('0xef'),_0x13e85e);}else{fs[_0x734e('0xf0')](_0x3ca839);}});});});}else{return _0x4fdc76['sendStatus'](0xc8);}})[_0x734e('0x36')](handleError(_0x4fdc76,null));};
\ No newline at end of file
index dcbf046..a52b018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1464=['hasOwnProperty','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','save','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit'];(function(_0xd19f1f,_0x4e9015){var _0x409c77=function(_0x2496c2){while(--_0x2496c2){_0xd19f1f['push'](_0xd19f1f['shift']());}};_0x409c77(++_0x4e9015);}(_0x1464,0x1a2));var _0x4146=function(_0x49c008,_0x15dfd1){_0x49c008=_0x49c008-0x0;var _0x2626e4=_0x1464[_0x49c008];return _0x2626e4;};'use strict';var EventEmitter=require(_0x4146('0x0'));var OpenchannelInteraction=require(_0x4146('0x1'))['db'][_0x4146('0x2')];var OpenchannelMessage=require(_0x4146('0x1'))['db'][_0x4146('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4146('0x4'),'afterUpdate':'update','afterDestroy':_0x4146('0x5')};function emitEvent(_0xa89de9){return function(_0x278b11,_0x4bcd0a,_0x3b1adc){_0x278b11[_0x4146('0x6')]({'attributes':['id'],'raw':!![]})[_0x4146('0x7')](function(_0x207f6c){_0x278b11[_0x4146('0x8')](_0x4146('0x9'),_0x207f6c['map'](function(_0x4c8235){return{'id':_0x4c8235['id']};}));return OpenchannelMessage[_0x4146('0xa')]({'where':{'OpenchannelInteractionId':_0x278b11['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4146('0x7')](function(_0x10cfbe){_0x278b11['setDataValue'](_0x4146('0xb'),_0x10cfbe[_0x4146('0xc')]);OpenchannelInteractionEvents[_0x4146('0xd')](_0xa89de9+':'+_0x278b11['id'],_0x278b11);OpenchannelInteractionEvents[_0x4146('0xd')](_0xa89de9,_0x278b11);_0x3b1adc(null);})['catch'](_0x3b1adc(null));};}for(var e in events){if(events[_0x4146('0xe')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x4146('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x75e8=['events','../../mysqldb','setMaxListeners','save','update','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x4c648e,_0x508008){var _0x3a53ad=function(_0x19e5a0){while(--_0x19e5a0){_0x4c648e['push'](_0x4c648e['shift']());}};_0x3a53ad(++_0x508008);}(_0x75e8,0x165));var _0x875e=function(_0x493c26,_0x4af20f){_0x493c26=_0x493c26-0x0;var _0x308f66=_0x75e8[_0x493c26];return _0x308f66;};'use strict';var EventEmitter=require(_0x875e('0x0'));var OpenchannelInteraction=require(_0x875e('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x875e('0x1'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x875e('0x2')](0x0);var events={'afterCreate':_0x875e('0x3'),'afterUpdate':_0x875e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x19ab74){return function(_0x33ad27,_0x271a62,_0x2fc74b){_0x33ad27[_0x875e('0x5')]({'attributes':['id'],'raw':!![]})[_0x875e('0x6')](function(_0x11f41b){_0x33ad27[_0x875e('0x7')](_0x875e('0x8'),_0x11f41b['map'](function(_0x7e812){return{'id':_0x7e812['id']};}));return OpenchannelMessage[_0x875e('0x9')]({'where':{'OpenchannelInteractionId':_0x33ad27['id'],'direction':'in','read':![]},'raw':!![]});})[_0x875e('0x6')](function(_0x3bd56c){_0x33ad27[_0x875e('0x7')](_0x875e('0xa'),_0x3bd56c[_0x875e('0xb')]);OpenchannelInteractionEvents[_0x875e('0xc')](_0x19ab74+':'+_0x33ad27['id'],_0x33ad27);OpenchannelInteractionEvents[_0x875e('0xc')](_0x19ab74,_0x33ad27);_0x2fc74b(null);})[_0x875e('0xd')](_0x2fc74b(null));};}for(var e in events){if(events[_0x875e('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x875e('0xf')](e,emitEvent(event));}}module[_0x875e('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 8b9c9ca..1a49205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f75=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','utf8mb4','changed'];(function(_0x47af56,_0x51e710){var _0x4f6bc9=function(_0x327a1e){while(--_0x327a1e){_0x47af56['push'](_0x47af56['shift']());}};_0x4f6bc9(++_0x51e710);}(_0x5f75,0x1e4));var _0x55f7=function(_0x139a25,_0x1707d7){_0x139a25=_0x139a25-0x0;var _0x330a62=_0x5f75[_0x139a25];return _0x330a62;};'use strict';var _=require(_0x55f7('0x0'));var util=require('util');var logger=require(_0x55f7('0x1'))(_0x55f7('0x2'));var moment=require(_0x55f7('0x3'));var BPromise=require(_0x55f7('0x4'));var rp=require(_0x55f7('0x5'));var fs=require('fs');var path=require(_0x55f7('0x6'));var rimraf=require(_0x55f7('0x7'));var config=require(_0x55f7('0x8'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x57a6f9,_0x109fb5){return _0x57a6f9['define']('OpenchannelInteraction',attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x55f7('0x9'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x20003,_0x2df392,_0x537e44){if(_0x20003[_0x55f7('0xa')](_0x55f7('0xb'))){_0x20003[_0x55f7('0xc')]=moment()[_0x55f7('0xd')](_0x55f7('0xe'));}_0x537e44(null,_0x20003);}}});};
\ No newline at end of file
+var _0xb410=['utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt','format','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelInteraction'];(function(_0x522dbd,_0x19ea83){var _0x5a8584=function(_0x5cc9ed){while(--_0x5cc9ed){_0x522dbd['push'](_0x522dbd['shift']());}};_0x5a8584(++_0x19ea83);}(_0xb410,0x96));var _0x0b41=function(_0x26b80e,_0x5c9333){_0x26b80e=_0x26b80e-0x0;var _0x84a8a8=_0xb410[_0x26b80e];return _0x84a8a8;};'use strict';var _=require(_0x0b41('0x0'));var util=require(_0x0b41('0x1'));var logger=require('../../config/logger')(_0x0b41('0x2'));var moment=require(_0x0b41('0x3'));var BPromise=require(_0x0b41('0x4'));var rp=require(_0x0b41('0x5'));var fs=require('fs');var path=require(_0x0b41('0x6'));var rimraf=require(_0x0b41('0x7'));var config=require(_0x0b41('0x8'));var attributes=require('./openchannelInteraction.attributes');module[_0x0b41('0x9')]=function(_0x1d79b3,_0x31ad68){return _0x1d79b3[_0x0b41('0xa')](_0x0b41('0xb'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0b41('0xc'),'collate':_0x0b41('0xd'),'hooks':{'beforeUpdate':function(_0xbead4e,_0x20a0a7,_0x1d5c08){if(_0xbead4e[_0x0b41('0xe')](_0x0b41('0xf'))){_0xbead4e[_0x0b41('0x10')]=moment()[_0x0b41('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1d5c08(null,_0xbead4e);}}});};
\ No newline at end of file
index d5db36d..5baccbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c25=['defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','debug','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis'];(function(_0x5b7784,_0x341318){var _0x58272c=function(_0x4ea804){while(--_0x4ea804){_0x5b7784['push'](_0x5b7784['shift']());}};_0x58272c(++_0x341318);}(_0x7c25,0xa6));var _0x57c2=function(_0x16f8e0,_0xa557c8){_0x16f8e0=_0x16f8e0-0x0;var _0x5c2b63=_0x7c25[_0x16f8e0];return _0x5c2b63;};'use strict';var _=require(_0x57c2('0x0'));var util=require(_0x57c2('0x1'));var moment=require(_0x57c2('0x2'));var BPromise=require(_0x57c2('0x3'));var rs=require(_0x57c2('0x4'));var fs=require('fs');var Redis=require(_0x57c2('0x5'));var db=require(_0x57c2('0x6'))['db'];var utils=require(_0x57c2('0x7'));var logger=require(_0x57c2('0x8'))(_0x57c2('0x9'));var config=require(_0x57c2('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x57c2('0xb')][_0x57c2('0xc')]({'port':0x232a});config[_0x57c2('0xd')]=_[_0x57c2('0xe')](config[_0x57c2('0xd')],{'host':_0x57c2('0xf'),'port':0x18eb});var socket=require(_0x57c2('0x10'))(new Redis(config[_0x57c2('0xd')]));require(_0x57c2('0x11'))[_0x57c2('0x12')](socket);function respondWithRpcPromise(_0x38b3a6,_0x3e8223,_0x13b003){return new BPromise(function(_0x48d063,_0x384281){return client[_0x57c2('0x13')](_0x38b3a6,_0x13b003)[_0x57c2('0x14')](function(_0x80eabb){logger[_0x57c2('0x15')](_0x57c2('0x16'),_0x3e8223,'request\x20sent');logger['debug'](_0x57c2('0x17'),_0x3e8223,_0x57c2('0x18'),JSON[_0x57c2('0x19')](_0x80eabb));if(_0x80eabb[_0x57c2('0x1a')]){if(_0x80eabb[_0x57c2('0x1a')]['code']===0x1f4){logger[_0x57c2('0x1a')](_0x57c2('0x16'),_0x3e8223,_0x80eabb['error']['message']);return _0x384281(_0x80eabb[_0x57c2('0x1a')][_0x57c2('0x1b')]);}logger[_0x57c2('0x1a')](_0x57c2('0x16'),_0x3e8223,_0x80eabb[_0x57c2('0x1a')][_0x57c2('0x1b')]);return _0x48d063(_0x80eabb[_0x57c2('0x1a')]['message']);}else{logger[_0x57c2('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x3e8223,_0x57c2('0x18'));_0x48d063(_0x80eabb[_0x57c2('0x1c')][_0x57c2('0x1b')]);}})[_0x57c2('0x1d')](function(_0x50ce58){logger['error'](_0x57c2('0x16'),_0x3e8223,_0x50ce58);_0x384281(_0x50ce58);});});}exports[_0x57c2('0x1e')]=function(_0x4eb328){var _0x14cd22=this;return new Promise(function(_0x3c27f7,_0x55a1c8){return db[_0x57c2('0x1f')][_0x57c2('0x20')](_0x4eb328[_0x57c2('0x21')],{'raw':_0x4eb328[_0x57c2('0x22')]?_0x4eb328[_0x57c2('0x22')][_0x57c2('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eb328['options']?_0x4eb328[_0x57c2('0x22')][_0x57c2('0x24')]||null:null,'attributes':_0x4eb328[_0x57c2('0x22')]?_0x4eb328[_0x57c2('0x22')][_0x57c2('0x25')]||null:null,'limit':_0x4eb328[_0x57c2('0x22')]?_0x4eb328[_0x57c2('0x22')]['limit']||null:null})['then'](function(_0x5acfe8){logger[_0x57c2('0x15')](_0x57c2('0x1e'),_0x4eb328);logger[_0x57c2('0x26')](_0x57c2('0x1e'),_0x4eb328,JSON[_0x57c2('0x19')](_0x5acfe8));_0x3c27f7(_0x5acfe8);})[_0x57c2('0x1d')](function(_0x28e1ee){logger[_0x57c2('0x1a')](_0x57c2('0x1e'),_0x28e1ee[_0x57c2('0x1b')],_0x4eb328);_0x55a1c8(_0x14cd22[_0x57c2('0x1a')](0x1f4,_0x28e1ee[_0x57c2('0x1b')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x21ed83){return new Promise(function(_0x39c3fe,_0x22716a){return db[_0x57c2('0x1f')][_0x57c2('0x27')]({'where':_0x21ed83[_0x57c2('0x22')]?_0x21ed83[_0x57c2('0x22')]['where']||null:null})[_0x57c2('0x14')](function(_0x3e670f){if(_0x3e670f){return _0x3e670f[_0x57c2('0x28')](_0x21ed83[_0x57c2('0x21')][_0x57c2('0x29')],_[_0x57c2('0x2a')](_0x21ed83[_0x57c2('0x21')],[_0x57c2('0x29'),'id'])||{});}})[_0x57c2('0x2b')](function(_0x56a6ec){logger[_0x57c2('0x15')](_0x57c2('0x2c'),_0x21ed83);logger[_0x57c2('0x26')](_0x57c2('0x2c'),_0x21ed83,JSON[_0x57c2('0x19')](_0x56a6ec));_0x39c3fe(_0x56a6ec);})['catch'](function(_0x1f82dd){logger['error'](_0x57c2('0x2c'),_0x1f82dd[_0x57c2('0x1b')],_0x21ed83);_0x22716a(_this[_0x57c2('0x1a')](0x1f4,_0x1f82dd[_0x57c2('0x1b')]));});});};
\ No newline at end of file
+var _0x7fe0=['UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','where','limit','then','ids','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch'];(function(_0x21dc61,_0x4f3889){var _0x8fa6fb=function(_0xf8188){while(--_0xf8188){_0x21dc61['push'](_0x21dc61['shift']());}};_0x8fa6fb(++_0x4f3889);}(_0x7fe0,0x1ae));var _0x07fe=function(_0x553a1a,_0x46b530){_0x553a1a=_0x553a1a-0x0;var _0x50a5f3=_0x7fe0[_0x553a1a];return _0x50a5f3;};'use strict';var _=require(_0x07fe('0x0'));var util=require(_0x07fe('0x1'));var moment=require(_0x07fe('0x2'));var BPromise=require('bluebird');var rs=require(_0x07fe('0x3'));var fs=require('fs');var Redis=require(_0x07fe('0x4'));var db=require(_0x07fe('0x5'))['db'];var utils=require(_0x07fe('0x6'));var logger=require(_0x07fe('0x7'))(_0x07fe('0x8'));var config=require(_0x07fe('0x9'));var jayson=require(_0x07fe('0xa'));var client=jayson[_0x07fe('0xb')][_0x07fe('0xc')]({'port':0x232a});config[_0x07fe('0xd')]=_['defaults'](config[_0x07fe('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x07fe('0xe'))(new Redis(config[_0x07fe('0xd')]));require('./openchannelInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x2e360c,_0x26b930,_0x48fd83){return new BPromise(function(_0x35e44a,_0x2f363f){return client['request'](_0x2e360c,_0x48fd83)['then'](function(_0x369139){logger['info'](_0x07fe('0xf'),_0x26b930,'request\x20sent');logger[_0x07fe('0x10')](_0x07fe('0x11'),_0x26b930,_0x07fe('0x12'),JSON[_0x07fe('0x13')](_0x369139));if(_0x369139[_0x07fe('0x14')]){if(_0x369139[_0x07fe('0x14')]['code']===0x1f4){logger['error'](_0x07fe('0xf'),_0x26b930,_0x369139[_0x07fe('0x14')]['message']);return _0x2f363f(_0x369139[_0x07fe('0x14')]['message']);}logger[_0x07fe('0x14')](_0x07fe('0xf'),_0x26b930,_0x369139[_0x07fe('0x14')][_0x07fe('0x15')]);return _0x35e44a(_0x369139['error']['message']);}else{logger[_0x07fe('0x16')](_0x07fe('0xf'),_0x26b930,'request\x20sent');_0x35e44a(_0x369139[_0x07fe('0x17')][_0x07fe('0x15')]);}})[_0x07fe('0x18')](function(_0x3d933b){logger[_0x07fe('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x26b930,_0x3d933b);_0x2f363f(_0x3d933b);});});}exports[_0x07fe('0x19')]=function(_0x3bb4aa){var _0x6fcd74=this;return new Promise(function(_0x5a7b83,_0x7581e6){return db[_0x07fe('0x1a')][_0x07fe('0x1b')](_0x3bb4aa[_0x07fe('0x1c')],{'raw':_0x3bb4aa['options']?_0x3bb4aa[_0x07fe('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3bb4aa['options']?_0x3bb4aa[_0x07fe('0x1d')][_0x07fe('0x1e')]||null:null,'attributes':_0x3bb4aa['options']?_0x3bb4aa[_0x07fe('0x1d')]['attributes']||null:null,'limit':_0x3bb4aa[_0x07fe('0x1d')]?_0x3bb4aa['options'][_0x07fe('0x1f')]||null:null})[_0x07fe('0x20')](function(_0x45a572){logger['info'](_0x07fe('0x19'),_0x3bb4aa);logger[_0x07fe('0x10')](_0x07fe('0x19'),_0x3bb4aa,JSON[_0x07fe('0x13')](_0x45a572));_0x5a7b83(_0x45a572);})[_0x07fe('0x18')](function(_0x1fceb5){logger['error']('UpdateOpenchannelInteraction',_0x1fceb5[_0x07fe('0x15')],_0x3bb4aa);_0x7581e6(_0x6fcd74[_0x07fe('0x14')](0x1f4,_0x1fceb5[_0x07fe('0x15')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x21efe6){return new Promise(function(_0x6ef2db,_0x69c081){return db[_0x07fe('0x1a')]['find']({'where':_0x21efe6[_0x07fe('0x1d')]?_0x21efe6['options'][_0x07fe('0x1e')]||null:null})[_0x07fe('0x20')](function(_0x31eb33){if(_0x31eb33){return _0x31eb33['addTags'](_0x21efe6['body'][_0x07fe('0x21')],_['omit'](_0x21efe6[_0x07fe('0x1c')],['ids','id'])||{});}})['spread'](function(_0x86e7b0){logger[_0x07fe('0x16')](_0x07fe('0x22'),_0x21efe6);logger['debug'](_0x07fe('0x22'),_0x21efe6,JSON[_0x07fe('0x13')](_0x86e7b0));_0x6ef2db(_0x86e7b0);})[_0x07fe('0x18')](function(_0x1356f5){logger[_0x07fe('0x14')](_0x07fe('0x22'),_0x1356f5[_0x07fe('0x15')],_0x21efe6);_0x69c081(_this['error'](0x1f4,_0x1356f5[_0x07fe('0x15')]));});});};
\ No newline at end of file
index 141cf63..e4dbcd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc9=['remove','emit','removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xffc9,0x10e));var _0x9ffc=function(_0x625ac6,_0x1a705e){_0x625ac6=_0x625ac6-0x0;var _0x35fbab=_0xffc9[_0x625ac6];return _0x35fbab;};'use strict';var OpenchannelInteractionEvents=require(_0x9ffc('0x0'));var events=[_0x9ffc('0x1'),_0x9ffc('0x2'),'update'];function createListener(_0x7f5462,_0x14e514){return function(_0x31b754){_0x14e514[_0x9ffc('0x3')](_0x7f5462,_0x31b754);};}function removeListener(_0x2c0dbc,_0x314050){return function(){OpenchannelInteractionEvents[_0x9ffc('0x4')](_0x2c0dbc,_0x314050);};}exports[_0x9ffc('0x5')]=function(_0x4940e7){for(var _0x15196d=0x0,_0x1ff2e2=events[_0x9ffc('0x6')];_0x15196d<_0x1ff2e2;_0x15196d++){var _0x5d06e9=events[_0x15196d];var _0x4d1aa3=createListener(_0x9ffc('0x7')+_0x5d06e9,_0x4940e7);OpenchannelInteractionEvents['on'](_0x5d06e9,_0x4d1aa3);}};
\ No newline at end of file
+var _0x6cb6=['register','length','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x1f1dbe,_0x143082){var _0x265cd6=function(_0x5ddbeb){while(--_0x5ddbeb){_0x1f1dbe['push'](_0x1f1dbe['shift']());}};_0x265cd6(++_0x143082);}(_0x6cb6,0xf3));var _0x66cb=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6cb6[_0x3bf83f];return _0x22c4a9;};'use strict';var OpenchannelInteractionEvents=require(_0x66cb('0x0'));var events=[_0x66cb('0x1'),'remove','update'];function createListener(_0x4c28f4,_0x19195a){return function(_0x56bb3f){_0x19195a['emit'](_0x4c28f4,_0x56bb3f);};}function removeListener(_0x3a3236,_0x3f7feb){return function(){OpenchannelInteractionEvents['removeListener'](_0x3a3236,_0x3f7feb);};}exports[_0x66cb('0x2')]=function(_0x698323){for(var _0x58229d=0x0,_0xfe3182=events[_0x66cb('0x3')];_0x58229d<_0xfe3182;_0x58229d++){var _0x155c82=events[_0x58229d];var _0x3e7ecd=createListener(_0x66cb('0x4')+_0x155c82,_0x698323);OpenchannelInteractionEvents['on'](_0x155c82,_0x3e7ecd);}};
\ No newline at end of file
index b1d941a..504670f 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(_0x1d5081,_0x2475d0){var _0x26f454=function(_0xeddc76){while(--_0xeddc76){_0x1d5081['push'](_0x1d5081['shift']());}};_0x26f454(++_0x2475d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'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 _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x2a7d57,_0x27a648){var _0x5daa90=function(_0x211cac){while(--_0x211cac){_0x2a7d57['push'](_0x2a7d57['shift']());}};_0x5daa90(++_0x27a648);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'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');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
index a8ebb35..6efd8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['BOOLEAN','ENUM','out','sequelize','exports','TEXT'];(function(_0x4371c0,_0x469771){var _0x4d1897=function(_0x4be33e){while(--_0x4be33e){_0x4371c0['push'](_0x4371c0['shift']());}};_0x4d1897(++_0x469771);}(_0x7be1,0x165));var _0x17be=function(_0x2b59e5,_0x104bf9){_0x2b59e5=_0x2b59e5-0x0;var _0x41aab2=_0x7be1[_0x2b59e5];return _0x41aab2;};'use strict';var Sequelize=require(_0x17be('0x0'));module[_0x17be('0x1')]={'body':{'type':Sequelize[_0x17be('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x17be('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x17be('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x17be('0x4')]('in',_0x17be('0x5')),'defaultValue':_0x17be('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xd732=['BOOLEAN','ENUM','DATE','sequelize','TEXT'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0xd732,0x18e));var _0x2d73=function(_0x1e4d45,_0x1f9e37){_0x1e4d45=_0x1e4d45-0x0;var _0x130016=_0xd732[_0x1e4d45];return _0x130016;};'use strict';var Sequelize=require(_0x2d73('0x0'));module['exports']={'body':{'type':Sequelize[_0x2d73('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x2d73('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2d73('0x3')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x2d73('0x4')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x2d73('0x1')]}};
\ No newline at end of file
index e62919e..f51c173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x061b=['../../config/logger','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','http','client','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','limit','undefined','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','OpenchannelMessage','includeAll','include','findAll','rows','show','params','body','find','describe','openchannel-interactions','openchannel','readAt','format','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','internal','manual','interface','SIP/%s','channel','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','event','rejectmessage','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1953cf,_0x5c0263){var _0x4c5b31=function(_0x59862e){while(--_0x59862e){_0x1953cf['push'](_0x1953cf['shift']());}};_0x4c5b31(++_0x5c0263);}(_0x061b,0x6f));var _0xb061=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x061b[_0x2235bf];return _0x4c3a64;};'use strict';var emlformat=require(_0xb061('0x0'));var rimraf=require(_0xb061('0x1'));var zipdir=require(_0xb061('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb061('0x3'));var moment=require(_0xb061('0x4'));var BPromise=require(_0xb061('0x5'));var Mustache=require(_0xb061('0x6'));var util=require(_0xb061('0x7'));var path=require('path');var sox=require(_0xb061('0x8'));var csv=require(_0xb061('0x9'));var ejs=require(_0xb061('0xa'));var fs=require('fs');var fs_extra=require(_0xb061('0xb'));var _=require('lodash');var squel=require(_0xb061('0xc'));var crypto=require(_0xb061('0xd'));var jsforce=require(_0xb061('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb061('0xf'));var Papa=require(_0xb061('0x10'));var Redis=require(_0xb061('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb061('0x12'));var as=require(_0xb061('0x13'));var hardwareService=require(_0xb061('0x14'));var logger=require(_0xb061('0x15'))(_0xb061('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb061('0x17'));var db=require(_0xb061('0x18'))['db'];config[_0xb061('0x19')]=_['defaults'](config[_0xb061('0x19')],{'host':_0xb061('0x1a'),'port':0x18eb});var socket=require(_0xb061('0x1b'))(new Redis(config[_0xb061('0x19')]));require(_0xb061('0x1c'))[_0xb061('0x1d')](socket);var jayson=require(_0xb061('0x1e'));var client=jayson['client'][_0xb061('0x1f')]({'port':0x232c});var client9002=jayson[_0xb061('0x20')][_0xb061('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4095a1,_0x464842,_0x448b84,_0x146d71){return new BPromise(function(_0x293bc9,_0xa5a89e){var _0x2ac87f=_0x146d71||client;return _0x2ac87f['request'](_0x4095a1,_0x448b84)['then'](function(_0x4e2256){logger[_0xb061('0x21')](_0xb061('0x22'),_0x464842,_0xb061('0x23'));logger[_0xb061('0x24')](_0xb061('0x25'),_0x464842,'request\x20sent',JSON[_0xb061('0x26')](_0x4e2256));if(_0x4e2256['error']){if(_0x4e2256['error']['code']===0x1f4){logger['error'](_0xb061('0x22'),_0x464842,_0x4e2256[_0xb061('0x27')][_0xb061('0x28')]);return _0xa5a89e(_0x4e2256[_0xb061('0x27')][_0xb061('0x28')]);}logger[_0xb061('0x27')](_0xb061('0x22'),_0x464842,_0x4e2256['error'][_0xb061('0x28')]);return _0x293bc9(_0x4e2256['error'][_0xb061('0x28')]);}else{logger[_0xb061('0x21')](_0xb061('0x22'),_0x464842,_0xb061('0x23'));_0x293bc9(_0x4e2256[_0xb061('0x29')][_0xb061('0x28')]);}})[_0xb061('0x2a')](function(_0x1b5cec){logger[_0xb061('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x464842,_0x1b5cec);_0xa5a89e(_0x1b5cec);});});}function respondWithStatusCode(_0x37da52,_0x13cc9c){_0x13cc9c=_0x13cc9c||0xcc;return function(_0x86060f){if(_0x86060f){return _0x37da52['sendStatus'](_0x13cc9c);}return _0x37da52[_0xb061('0x2b')](_0x13cc9c)[_0xb061('0x2c')]();};}function respondWithResult(_0x49fe41,_0x45ea78){_0x45ea78=_0x45ea78||0xc8;return function(_0x2cf090){if(_0x2cf090){return _0x49fe41[_0xb061('0x2b')](_0x45ea78)['json'](_0x2cf090);}};}function respondWithFilteredResult(_0x22a415,_0x1b393e){return function(_0x5d1937){if(_0x5d1937){var _0x1fec75=typeof _0x1b393e['offset']==='undefined'&&typeof _0x1b393e[_0xb061('0x2d')]===_0xb061('0x2e');var _0x4935b0=_0x5d1937['count'];var _0x12c542=_0x1fec75?0x0:_0x1b393e[_0xb061('0x2f')];var _0x7df5d5=_0x1fec75?_0x5d1937[_0xb061('0x30')]:_0x1b393e[_0xb061('0x2f')]+_0x1b393e[_0xb061('0x2d')];var _0x3155e6;if(_0x7df5d5>=_0x4935b0){_0x7df5d5=_0x4935b0;_0x3155e6=0xc8;}else{_0x3155e6=0xce;}_0x22a415['status'](_0x3155e6);return _0x22a415[_0xb061('0x31')](_0xb061('0x32'),_0x12c542+'-'+_0x7df5d5+'/'+_0x4935b0)[_0xb061('0x33')](_0x5d1937);}return null;};}function patchUpdates(_0xed5e63){return function(_0x36a259){try{jsonpatch[_0xb061('0x34')](_0x36a259,_0xed5e63,!![]);}catch(_0x5d5d84){return BPromise[_0xb061('0x35')](_0x5d5d84);}return _0x36a259[_0xb061('0x36')]();};}function saveUpdates(_0x4165d0,_0x57ff49){return function(_0x5b5f3d){if(_0x5b5f3d){return _0x5b5f3d[_0xb061('0x37')](_0x4165d0)[_0xb061('0x38')](function(_0x3f3648){return _0x3f3648;});}return null;};}function removeEntity(_0x9c4aec,_0x3a00f3){return function(_0x1f8436){if(_0x1f8436){return _0x1f8436[_0xb061('0x39')]()['then'](function(){_0x9c4aec['status'](0xcc)[_0xb061('0x2c')]();});}};}function handleEntityNotFound(_0x4ae7a0,_0x33339a){return function(_0x49c733){if(!_0x49c733){_0x4ae7a0[_0xb061('0x3a')](0x194);}return _0x49c733;};}function handleError(_0x42dee4,_0x520d66){_0x520d66=_0x520d66||0x1f4;return function(_0x4d52fc){logger['error'](_0x4d52fc[_0xb061('0x3b')]);if(_0x4d52fc[_0xb061('0x3c')]){delete _0x4d52fc[_0xb061('0x3c')];}_0x42dee4[_0xb061('0x2b')](_0x520d66)[_0xb061('0x3d')](_0x4d52fc);};}exports[_0xb061('0x3e')]=function(_0x29e53f,_0x4a2148){var _0x45cace={},_0x84787e={},_0x3a79a5={'count':0x0,'rows':[]};var _0x178439=_[_0xb061('0x3f')](db['OpenchannelMessage'][_0xb061('0x40')],function(_0x140223){return{'name':_0x140223[_0xb061('0x41')],'type':_0x140223[_0xb061('0x42')][_0xb061('0x43')]};});_0x84787e[_0xb061('0x44')]=_[_0xb061('0x3f')](_0x178439,_0xb061('0x3c'));_0x84787e['query']=_[_0xb061('0x45')](_0x29e53f[_0xb061('0x46')]);_0x84787e[_0xb061('0x47')]=_[_0xb061('0x48')](_0x84787e[_0xb061('0x44')],_0x84787e[_0xb061('0x46')]);_0x45cace[_0xb061('0x49')]=_[_0xb061('0x48')](_0x84787e['model'],qs[_0xb061('0x4a')](_0x29e53f[_0xb061('0x46')]['fields']));_0x45cace[_0xb061('0x49')]=_0x45cace['attributes']['length']?_0x45cace[_0xb061('0x49')]:_0x84787e['model'];if(!_0x29e53f['query'][_0xb061('0x4b')](_0xb061('0x4c'))){_0x45cace['limit']=qs[_0xb061('0x2d')](_0x29e53f[_0xb061('0x46')]['limit']);_0x45cace[_0xb061('0x2f')]=qs['offset'](_0x29e53f[_0xb061('0x46')][_0xb061('0x2f')]);}_0x45cace[_0xb061('0x4d')]=qs[_0xb061('0x4e')](_0x29e53f[_0xb061('0x46')]['sort']);_0x45cace[_0xb061('0x4f')]=qs[_0xb061('0x47')](_[_0xb061('0x50')](_0x29e53f['query'],_0x84787e[_0xb061('0x47')]),_0x178439);if(_0x29e53f[_0xb061('0x46')][_0xb061('0x51')]){_0x45cace[_0xb061('0x4f')]=_['merge'](_0x45cace[_0xb061('0x4f')],{'$or':_[_0xb061('0x3f')](_0x178439,function(_0x2378fe){if(_0x2378fe[_0xb061('0x42')]!=='VIRTUAL'){var _0xaa1fd9={};_0xaa1fd9[_0x2378fe[_0xb061('0x3c')]]={'$like':'%'+_0x29e53f[_0xb061('0x46')]['filter']+'%'};return _0xaa1fd9;}})});}_0x45cace=_[_0xb061('0x52')]({},_0x45cace,_0x29e53f[_0xb061('0x53')]);var _0x216a3b={'where':_0x45cace[_0xb061('0x4f')]};return db[_0xb061('0x54')][_0xb061('0x30')](_0x216a3b)[_0xb061('0x38')](function(_0x22ab58){_0x3a79a5[_0xb061('0x30')]=_0x22ab58;if(_0x29e53f[_0xb061('0x46')][_0xb061('0x55')]){_0x45cace[_0xb061('0x56')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xb061('0x57')](_0x45cace);})[_0xb061('0x38')](function(_0x17bd8a){_0x3a79a5[_0xb061('0x58')]=_0x17bd8a;return _0x3a79a5;})[_0xb061('0x38')](respondWithFilteredResult(_0x4a2148,_0x45cace))[_0xb061('0x2a')](handleError(_0x4a2148,null));};exports[_0xb061('0x59')]=function(_0xb7097f,_0x425195){var _0x50e006={'raw':!![],'where':{'id':_0xb7097f[_0xb061('0x5a')]['id']}},_0x13e01b={};_0x13e01b[_0xb061('0x44')]=_[_0xb061('0x45')](db['OpenchannelMessage'][_0xb061('0x40')]);_0x13e01b[_0xb061('0x46')]=_[_0xb061('0x45')](_0xb7097f['query']);_0x13e01b[_0xb061('0x47')]=_[_0xb061('0x48')](_0x13e01b[_0xb061('0x44')],_0x13e01b[_0xb061('0x46')]);_0x50e006[_0xb061('0x49')]=_[_0xb061('0x48')](_0x13e01b[_0xb061('0x44')],qs[_0xb061('0x4a')](_0xb7097f[_0xb061('0x46')][_0xb061('0x4a')]));_0x50e006[_0xb061('0x49')]=_0x50e006[_0xb061('0x49')]['length']?_0x50e006[_0xb061('0x49')]:_0x13e01b[_0xb061('0x44')];if(_0xb7097f['query']['includeAll']){_0x50e006[_0xb061('0x56')]=[{'all':!![]}];}_0x50e006=_[_0xb061('0x52')]({},_0x50e006,_0xb7097f[_0xb061('0x53')]);return db[_0xb061('0x54')]['find'](_0x50e006)[_0xb061('0x38')](handleEntityNotFound(_0x425195,null))[_0xb061('0x38')](respondWithResult(_0x425195,null))[_0xb061('0x2a')](handleError(_0x425195,null));};exports['create']=function(_0x138a46,_0x134850){return db[_0xb061('0x54')]['create'](_0x138a46[_0xb061('0x5b')],{})[_0xb061('0x38')](respondWithResult(_0x134850,0xc9))['catch'](handleError(_0x134850,null));};exports[_0xb061('0x37')]=function(_0x45679d,_0x1244f6){if(_0x45679d[_0xb061('0x5b')]['id']){delete _0x45679d[_0xb061('0x5b')]['id'];}return db[_0xb061('0x54')][_0xb061('0x5c')]({'where':{'id':_0x45679d[_0xb061('0x5a')]['id']}})[_0xb061('0x38')](handleEntityNotFound(_0x1244f6,null))[_0xb061('0x38')](saveUpdates(_0x45679d[_0xb061('0x5b')],null))[_0xb061('0x38')](respondWithResult(_0x1244f6,null))['catch'](handleError(_0x1244f6,null));};exports[_0xb061('0x39')]=function(_0x4be570,_0x37f81d){return db[_0xb061('0x54')][_0xb061('0x5c')]({'where':{'id':_0x4be570[_0xb061('0x5a')]['id']}})['then'](handleEntityNotFound(_0x37f81d,null))[_0xb061('0x38')](removeEntity(_0x37f81d,null))[_0xb061('0x2a')](handleError(_0x37f81d,null));};exports[_0xb061('0x5d')]=function(_0xe734b3,_0x2257ce){return db[_0xb061('0x54')][_0xb061('0x5d')]()[_0xb061('0x38')](respondWithResult(_0x2257ce,null))[_0xb061('0x2a')](handleError(_0x2257ce,null));};var interaction_log=require(_0xb061('0x15'))(_0xb061('0x5e'));exports['accept']=function(_0x3a0369,_0x7263ce,_0x26b959){var _0x54e63f={'agent':{},'channel':_0xb061('0x5f')};if(_0x3a0369['body']['id']){delete _0x3a0369[_0xb061('0x5b')]['id'];}_0x3a0369[_0xb061('0x5b')]['read']=!![];_0x3a0369['body'][_0xb061('0x60')]=moment()[_0xb061('0x61')]('YYYY-MM-DD\x20HH:mm:ss');_0x3a0369['body']['UserId']=_0x3a0369[_0xb061('0x5b')][_0xb061('0x62')]||_0x3a0369[_0xb061('0x63')]['id'];_0x54e63f[_0xb061('0x64')]['id']=_0x3a0369['body'][_0xb061('0x62')];return db[_0xb061('0x54')][_0xb061('0x5c')]({'where':{'id':_0x3a0369['params']['id'],'UserId':null}})[_0xb061('0x38')](handleEntityNotFound(_0x7263ce,null))['then'](saveUpdates(_0x3a0369['body'],null))[_0xb061('0x38')](function(_0x20a287){if(_0x20a287){_0x54e63f[_0xb061('0x28')]=_0x20a287[_0xb061('0x65')]({'plain':!![]});return db[_0xb061('0x66')][_0xb061('0x5c')]({'where':{'id':_0x20a287[_0xb061('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x7263ce,null))[_0xb061('0x38')](function(_0x3ada34){if(_0x3ada34){return _0x3ada34['update']({'UserId':_0x3a0369[_0xb061('0x5b')]['UserId'],'read1stAt':_[_0xb061('0x68')](_0x3ada34[_0xb061('0x69')])?moment()[_0xb061('0x61')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xb061('0x38')](function(_0x4363a8){if(_0x4363a8){_0x54e63f[_0xb061('0x6a')]=_0x4363a8[_0xb061('0x65')]({'plain':!![]});interaction_log[_0xb061('0x21')](_0xb061('0x6b'),_0x3a0369['user']['id'],_0x3a0369[_0xb061('0x63')][_0xb061('0x3c')],_0x3a0369[_0xb061('0x63')][_0xb061('0x6c')],_0x54e63f['interaction']['id'],_0x3a0369[_0xb061('0x5b')]?JSON[_0xb061('0x26')](_0x3a0369[_0xb061('0x5b')]):_0xb061('0x6d'));return respondWithRpcPromise(_0xb061('0x6e'),_0xb061('0x6f'),_0x54e63f);}return null;})[_0xb061('0x38')](function(_0x29da64){var _0x595388=_0xb061('0x70')+_0x29da64[_0xb061('0x28')][_0xb061('0x71')];return db[_0xb061('0x72')][_0xb061('0x46')](_0x595388,{'type':db[_0xb061('0x73')][_0xb061('0x74')]['SELECT'],'raw':!![]})[_0xb061('0x38')](function(_0x36168f){return _0x36168f;});})[_0xb061('0x38')](function(_0x53ecf8){if(_0x53ecf8){_0x54e63f[_0xb061('0x28')]['contact']=_0x53ecf8[0x0];if(!_0x3a0369[_0xb061('0x5b')][_0xb061('0x62')])return;return db[_0xb061('0x75')][_0xb061('0x5c')]({'where':{'id':_0x3a0369['body'][_0xb061('0x62')],'role':_0xb061('0x64')},'attributes':['id',_0xb061('0x3c'),_0xb061('0x76'),_0xb061('0x77'),_0xb061('0x78')],'raw':!![]});}return null;})[_0xb061('0x38')](function(_0x47ec7f){if(!_0x47ec7f)return null;_0x54e63f[_0xb061('0x28')][_0xb061('0x64')]=_0x47ec7f;return _0x54e63f;})[_0xb061('0x38')](function(_0x34e514){if(_0x34e514){if(_0x3a0369[_0xb061('0x5b')][_0xb061('0x79')]){_0x54e63f[_0xb061('0x28')][_0xb061('0x7a')]=util[_0xb061('0x61')](_0xb061('0x7b'),_0x3a0369['user'][_0xb061('0x3c')]);_0x54e63f['message'][_0xb061('0x7c')]=_0x54e63f[_0xb061('0x7c')];_0x54e63f['message']['event']=_0xb061('0x7d');return respondWithRpcPromise(_0xb061('0x7e'),_0xb061('0x7e'),{'event':_0xb061('0x7f'),'message':_0x54e63f[_0xb061('0x28')]},client9002)['then'](function(){return _0x54e63f;});}return _0x54e63f;}return null;})[_0xb061('0x38')](respondWithResult(_0x7263ce,null))[_0xb061('0x2a')](handleError(_0x7263ce,null));};var interaction_log=require(_0xb061('0x15'))(_0xb061('0x5e'));exports[_0xb061('0x35')]=function(_0x36fa00,_0x5b9162,_0x3aae43){var _0x4681f9={'agent':{},'channel':_0xb061('0x5f')};if(_0x36fa00[_0xb061('0x5b')]['id']){delete _0x36fa00[_0xb061('0x5b')]['id'];}_0x36fa00[_0xb061('0x5b')][_0xb061('0x62')]=_0x36fa00[_0xb061('0x5b')][_0xb061('0x62')]||_0x36fa00['user']['id'];_0x4681f9[_0xb061('0x64')]['id']=_0x36fa00['body'][_0xb061('0x62')];return db['OpenchannelMessage'][_0xb061('0x5c')]({'where':{'id':_0x36fa00['params']['id'],'UserId':null}})[_0xb061('0x38')](handleEntityNotFound(_0x5b9162,null))[_0xb061('0x38')](function(_0x4f8601){if(_0x4f8601){_0x4681f9[_0xb061('0x28')]=_0x4f8601[_0xb061('0x65')]({'plain':!![]});return db[_0xb061('0x66')]['find']({'where':{'id':_0x4f8601[_0xb061('0x67')]}});}return null;})[_0xb061('0x38')](handleEntityNotFound(_0x5b9162,null))[_0xb061('0x38')](function(_0x10d4e0){if(_0x10d4e0){_0x4681f9[_0xb061('0x6a')]=_0x10d4e0[_0xb061('0x65')]({'plain':!![]});interaction_log[_0xb061('0x21')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x36fa00[_0xb061('0x63')]['id'],_0x36fa00[_0xb061('0x63')][_0xb061('0x3c')],_0x36fa00['user'][_0xb061('0x6c')],_0x4681f9[_0xb061('0x6a')]['id'],_0x36fa00[_0xb061('0x5b')]?JSON['stringify'](_0x36fa00[_0xb061('0x5b')]):_0xb061('0x6d'));return respondWithRpcPromise(_0xb061('0x80'),_0xb061('0x81'),_0x4681f9);}return null;})[_0xb061('0x38')](function(_0xf4b85d){var _0x370097=_0xb061('0x70')+_0xf4b85d[_0xb061('0x28')][_0xb061('0x71')];return db[_0xb061('0x72')][_0xb061('0x46')](_0x370097,{'type':db[_0xb061('0x73')][_0xb061('0x74')]['SELECT'],'raw':!![]})[_0xb061('0x38')](function(_0x286a9c){return _0x286a9c;});})[_0xb061('0x38')](function(_0xcaeabb){if(_0xcaeabb){_0x4681f9[_0xb061('0x28')]['contact']=_0xcaeabb[0x0];if(!_0x36fa00['body']['UserId'])return;return db[_0xb061('0x75')][_0xb061('0x5c')]({'where':{'id':_0x36fa00[_0xb061('0x5b')][_0xb061('0x62')],'role':_0xb061('0x64')},'attributes':['id',_0xb061('0x3c'),'fullname',_0xb061('0x77'),'internal'],'raw':!![]});}return null;})[_0xb061('0x38')](function(_0x3e2551){if(!_0x3e2551)return null;_0x4681f9[_0xb061('0x28')][_0xb061('0x64')]=_0x3e2551;return _0x4681f9;})['then'](function(_0x595582){if(_0x595582){_0x595582[_0xb061('0x28')][_0xb061('0x7a')]=util[_0xb061('0x61')]('SIP/%s',_0x36fa00[_0xb061('0x63')]['name']);_0x595582[_0xb061('0x28')][_0xb061('0x7c')]=_0x4681f9['channel'];_0x595582['message'][_0xb061('0x82')]=_0xb061('0x35');respondWithRpcPromise(_0xb061('0x7e'),_0xb061('0x7e'),{'event':_0xb061('0x83'),'message':_0x595582['message']},client9002);return _0x4681f9;}return null;})['then'](respondWithResult(_0x5b9162,null))['catch'](handleError(_0x5b9162,null));};
\ No newline at end of file
+var _0x30d3=['update','end','index','map','OpenchannelMessage','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','params','find','create','body','describe','openchannel-interactions','openchannel','read','UserId','agent','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','get','user','name','role','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','email','internal','manual','SIP/%s','channel','motionChannel','event','accept','EventManager','null','RejectMessage','rejectMessage','User','fullname','interface','reject','rejectmessage','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','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','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelMessage.socket','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','json','offset','undefined','limit','count','set','apply'];(function(_0x285aab,_0x25a599){var _0x55234b=function(_0x1da7c9){while(--_0x1da7c9){_0x285aab['push'](_0x285aab['shift']());}};_0x55234b(++_0x25a599);}(_0x30d3,0xc6));var _0x330d=function(_0x4c356c,_0x281710){_0x4c356c=_0x4c356c-0x0;var _0x237fa7=_0x30d3[_0x4c356c];return _0x237fa7;};'use strict';var emlformat=require(_0x330d('0x0'));var rimraf=require(_0x330d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x330d('0x2'));var moment=require(_0x330d('0x3'));var BPromise=require(_0x330d('0x4'));var Mustache=require(_0x330d('0x5'));var util=require(_0x330d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x330d('0x7'));var ejs=require(_0x330d('0x8'));var fs=require('fs');var fs_extra=require(_0x330d('0x9'));var _=require(_0x330d('0xa'));var squel=require(_0x330d('0xb'));var crypto=require(_0x330d('0xc'));var jsforce=require(_0x330d('0xd'));var deskjs=require(_0x330d('0xe'));var toCsv=require(_0x330d('0x7'));var querystring=require('querystring');var Papa=require(_0x330d('0xf'));var Redis=require(_0x330d('0x10'));var authService=require(_0x330d('0x11'));var qs=require(_0x330d('0x12'));var as=require(_0x330d('0x13'));var hardwareService=require(_0x330d('0x14'));var logger=require(_0x330d('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x330d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x330d('0x17'))['db'];config['redis']=_['defaults'](config[_0x330d('0x18')],{'host':_0x330d('0x19'),'port':0x18eb});var socket=require(_0x330d('0x1a'))(new Redis(config[_0x330d('0x18')]));require(_0x330d('0x1b'))['register'](socket);var jayson=require(_0x330d('0x1c'));var client=jayson[_0x330d('0x1d')][_0x330d('0x1e')]({'port':0x232c});var client9002=jayson[_0x330d('0x1d')][_0x330d('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x55e7e6,_0x5aec50,_0x3cd365,_0x4010b6){return new BPromise(function(_0x211a5c,_0x28e28a){var _0x2c266d=_0x4010b6||client;return _0x2c266d[_0x330d('0x1f')](_0x55e7e6,_0x3cd365)[_0x330d('0x20')](function(_0x223cd0){logger[_0x330d('0x21')](_0x330d('0x22'),_0x5aec50,_0x330d('0x23'));logger['debug'](_0x330d('0x24'),_0x5aec50,_0x330d('0x23'),JSON[_0x330d('0x25')](_0x223cd0));if(_0x223cd0[_0x330d('0x26')]){if(_0x223cd0[_0x330d('0x26')]['code']===0x1f4){logger['error'](_0x330d('0x22'),_0x5aec50,_0x223cd0[_0x330d('0x26')][_0x330d('0x27')]);return _0x28e28a(_0x223cd0[_0x330d('0x26')][_0x330d('0x27')]);}logger[_0x330d('0x26')](_0x330d('0x22'),_0x5aec50,_0x223cd0[_0x330d('0x26')][_0x330d('0x27')]);return _0x211a5c(_0x223cd0[_0x330d('0x26')]['message']);}else{logger[_0x330d('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0x5aec50,'request\x20sent');_0x211a5c(_0x223cd0['result']['message']);}})[_0x330d('0x28')](function(_0x116447){logger['error'](_0x330d('0x22'),_0x5aec50,_0x116447);_0x28e28a(_0x116447);});});}function respondWithStatusCode(_0x48ce3c,_0x57902a){_0x57902a=_0x57902a||0xcc;return function(_0x4119ae){if(_0x4119ae){return _0x48ce3c[_0x330d('0x29')](_0x57902a);}return _0x48ce3c[_0x330d('0x2a')](_0x57902a)['end']();};}function respondWithResult(_0x52a1b9,_0x41f4ea){_0x41f4ea=_0x41f4ea||0xc8;return function(_0x43b84a){if(_0x43b84a){return _0x52a1b9['status'](_0x41f4ea)[_0x330d('0x2b')](_0x43b84a);}};}function respondWithFilteredResult(_0x23b884,_0x20598a){return function(_0x40d339){if(_0x40d339){var _0x8b0780=typeof _0x20598a[_0x330d('0x2c')]===_0x330d('0x2d')&&typeof _0x20598a[_0x330d('0x2e')]===_0x330d('0x2d');var _0x3135ae=_0x40d339[_0x330d('0x2f')];var _0x139f94=_0x8b0780?0x0:_0x20598a['offset'];var _0x366d50=_0x8b0780?_0x40d339[_0x330d('0x2f')]:_0x20598a[_0x330d('0x2c')]+_0x20598a[_0x330d('0x2e')];var _0x4bb75c;if(_0x366d50>=_0x3135ae){_0x366d50=_0x3135ae;_0x4bb75c=0xc8;}else{_0x4bb75c=0xce;}_0x23b884[_0x330d('0x2a')](_0x4bb75c);return _0x23b884[_0x330d('0x30')]('Content-Range',_0x139f94+'-'+_0x366d50+'/'+_0x3135ae)[_0x330d('0x2b')](_0x40d339);}return null;};}function patchUpdates(_0x2e6539){return function(_0x57167d){try{jsonpatch[_0x330d('0x31')](_0x57167d,_0x2e6539,!![]);}catch(_0x55dc1f){return BPromise['reject'](_0x55dc1f);}return _0x57167d['save']();};}function saveUpdates(_0x21b3fb,_0x5cb2d5){return function(_0x55023f){if(_0x55023f){return _0x55023f[_0x330d('0x32')](_0x21b3fb)[_0x330d('0x20')](function(_0x1c8b7f){return _0x1c8b7f;});}return null;};}function removeEntity(_0x43cb96,_0x571dd9){return function(_0x3d70c6){if(_0x3d70c6){return _0x3d70c6['destroy']()['then'](function(){_0x43cb96[_0x330d('0x2a')](0xcc)[_0x330d('0x33')]();});}};}function handleEntityNotFound(_0x582a2c,_0x3b1e1e){return function(_0x212535){if(!_0x212535){_0x582a2c[_0x330d('0x29')](0x194);}return _0x212535;};}function handleError(_0x31a776,_0x4c34db){_0x4c34db=_0x4c34db||0x1f4;return function(_0x2226b1){logger[_0x330d('0x26')](_0x2226b1['stack']);if(_0x2226b1['name']){delete _0x2226b1['name'];}_0x31a776[_0x330d('0x2a')](_0x4c34db)['send'](_0x2226b1);};}exports[_0x330d('0x34')]=function(_0x430ea8,_0x35aa9c){var _0x4e8b57={},_0x5e8e71={},_0x18672f={'count':0x0,'rows':[]};var _0x13752e=_[_0x330d('0x35')](db[_0x330d('0x36')][_0x330d('0x37')],function(_0x2edce1){return{'name':_0x2edce1[_0x330d('0x38')],'type':_0x2edce1['type'][_0x330d('0x39')]};});_0x5e8e71[_0x330d('0x3a')]=_[_0x330d('0x35')](_0x13752e,'name');_0x5e8e71['query']=_[_0x330d('0x3b')](_0x430ea8[_0x330d('0x3c')]);_0x5e8e71[_0x330d('0x3d')]=_[_0x330d('0x3e')](_0x5e8e71['model'],_0x5e8e71[_0x330d('0x3c')]);_0x4e8b57[_0x330d('0x3f')]=_[_0x330d('0x3e')](_0x5e8e71['model'],qs['fields'](_0x430ea8[_0x330d('0x3c')][_0x330d('0x40')]));_0x4e8b57[_0x330d('0x3f')]=_0x4e8b57[_0x330d('0x3f')][_0x330d('0x41')]?_0x4e8b57[_0x330d('0x3f')]:_0x5e8e71[_0x330d('0x3a')];if(!_0x430ea8['query'][_0x330d('0x42')](_0x330d('0x43'))){_0x4e8b57[_0x330d('0x2e')]=qs[_0x330d('0x2e')](_0x430ea8[_0x330d('0x3c')][_0x330d('0x2e')]);_0x4e8b57[_0x330d('0x2c')]=qs[_0x330d('0x2c')](_0x430ea8['query'][_0x330d('0x2c')]);}_0x4e8b57['order']=qs['sort'](_0x430ea8['query'][_0x330d('0x44')]);_0x4e8b57[_0x330d('0x45')]=qs[_0x330d('0x3d')](_[_0x330d('0x46')](_0x430ea8['query'],_0x5e8e71[_0x330d('0x3d')]),_0x13752e);if(_0x430ea8[_0x330d('0x3c')]['filter']){_0x4e8b57['where']=_[_0x330d('0x47')](_0x4e8b57[_0x330d('0x45')],{'$or':_[_0x330d('0x35')](_0x13752e,function(_0x18aa53){if(_0x18aa53[_0x330d('0x48')]!==_0x330d('0x49')){var _0x5c3d1f={};_0x5c3d1f[_0x18aa53['name']]={'$like':'%'+_0x430ea8[_0x330d('0x3c')][_0x330d('0x4a')]+'%'};return _0x5c3d1f;}})});}_0x4e8b57=_[_0x330d('0x47')]({},_0x4e8b57,_0x430ea8[_0x330d('0x4b')]);var _0x39f6bd={'where':_0x4e8b57[_0x330d('0x45')]};return db['OpenchannelMessage'][_0x330d('0x2f')](_0x39f6bd)[_0x330d('0x20')](function(_0x183f7d){_0x18672f[_0x330d('0x2f')]=_0x183f7d;if(_0x430ea8[_0x330d('0x3c')][_0x330d('0x4c')]){_0x4e8b57[_0x330d('0x4d')]=[{'all':!![]}];}return db[_0x330d('0x36')]['findAll'](_0x4e8b57);})['then'](function(_0x3eaa49){_0x18672f['rows']=_0x3eaa49;return _0x18672f;})[_0x330d('0x20')](respondWithFilteredResult(_0x35aa9c,_0x4e8b57))[_0x330d('0x28')](handleError(_0x35aa9c,null));};exports['show']=function(_0x138414,_0x5d9e13){var _0x464a5c={'raw':!![],'where':{'id':_0x138414[_0x330d('0x4e')]['id']}},_0x5ab747={};_0x5ab747[_0x330d('0x3a')]=_[_0x330d('0x3b')](db[_0x330d('0x36')]['rawAttributes']);_0x5ab747['query']=_[_0x330d('0x3b')](_0x138414['query']);_0x5ab747[_0x330d('0x3d')]=_[_0x330d('0x3e')](_0x5ab747['model'],_0x5ab747['query']);_0x464a5c[_0x330d('0x3f')]=_[_0x330d('0x3e')](_0x5ab747[_0x330d('0x3a')],qs['fields'](_0x138414[_0x330d('0x3c')][_0x330d('0x40')]));_0x464a5c[_0x330d('0x3f')]=_0x464a5c[_0x330d('0x3f')]['length']?_0x464a5c[_0x330d('0x3f')]:_0x5ab747['model'];if(_0x138414[_0x330d('0x3c')][_0x330d('0x4c')]){_0x464a5c[_0x330d('0x4d')]=[{'all':!![]}];}_0x464a5c=_[_0x330d('0x47')]({},_0x464a5c,_0x138414[_0x330d('0x4b')]);return db[_0x330d('0x36')][_0x330d('0x4f')](_0x464a5c)[_0x330d('0x20')](handleEntityNotFound(_0x5d9e13,null))['then'](respondWithResult(_0x5d9e13,null))[_0x330d('0x28')](handleError(_0x5d9e13,null));};exports['create']=function(_0x18ff5d,_0x2fb56a){return db[_0x330d('0x36')][_0x330d('0x50')](_0x18ff5d[_0x330d('0x51')],{})[_0x330d('0x20')](respondWithResult(_0x2fb56a,0xc9))[_0x330d('0x28')](handleError(_0x2fb56a,null));};exports[_0x330d('0x32')]=function(_0x4108e3,_0x59ec23){if(_0x4108e3[_0x330d('0x51')]['id']){delete _0x4108e3[_0x330d('0x51')]['id'];}return db[_0x330d('0x36')][_0x330d('0x4f')]({'where':{'id':_0x4108e3[_0x330d('0x4e')]['id']}})[_0x330d('0x20')](handleEntityNotFound(_0x59ec23,null))['then'](saveUpdates(_0x4108e3[_0x330d('0x51')],null))[_0x330d('0x20')](respondWithResult(_0x59ec23,null))[_0x330d('0x28')](handleError(_0x59ec23,null));};exports['destroy']=function(_0x8c9aa2,_0x5ec09e){return db[_0x330d('0x36')][_0x330d('0x4f')]({'where':{'id':_0x8c9aa2['params']['id']}})['then'](handleEntityNotFound(_0x5ec09e,null))[_0x330d('0x20')](removeEntity(_0x5ec09e,null))[_0x330d('0x28')](handleError(_0x5ec09e,null));};exports[_0x330d('0x52')]=function(_0xc617f9,_0x36834d){return db[_0x330d('0x36')][_0x330d('0x52')]()['then'](respondWithResult(_0x36834d,null))[_0x330d('0x28')](handleError(_0x36834d,null));};var interaction_log=require(_0x330d('0x15'))(_0x330d('0x53'));exports['accept']=function(_0xa5952f,_0x2f49b6,_0x521cba){var _0x140c2c={'agent':{},'channel':_0x330d('0x54')};if(_0xa5952f['body']['id']){delete _0xa5952f[_0x330d('0x51')]['id'];}_0xa5952f[_0x330d('0x51')][_0x330d('0x55')]=!![];_0xa5952f[_0x330d('0x51')]['readAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xa5952f[_0x330d('0x51')]['UserId']=_0xa5952f[_0x330d('0x51')][_0x330d('0x56')]||_0xa5952f['user']['id'];_0x140c2c[_0x330d('0x57')]['id']=_0xa5952f[_0x330d('0x51')][_0x330d('0x56')];return db[_0x330d('0x36')][_0x330d('0x4f')]({'where':{'id':_0xa5952f[_0x330d('0x4e')]['id'],'UserId':null}})[_0x330d('0x20')](handleEntityNotFound(_0x2f49b6,null))[_0x330d('0x20')](saveUpdates(_0xa5952f['body'],null))[_0x330d('0x20')](function(_0x1e36e1){if(_0x1e36e1){_0x140c2c[_0x330d('0x27')]=_0x1e36e1['get']({'plain':!![]});return db[_0x330d('0x58')][_0x330d('0x4f')]({'where':{'id':_0x1e36e1[_0x330d('0x59')]}});}return null;})[_0x330d('0x20')](handleEntityNotFound(_0x2f49b6,null))['then'](function(_0x307576){if(_0x307576){return _0x307576[_0x330d('0x32')]({'UserId':_0xa5952f['body']['UserId'],'read1stAt':_[_0x330d('0x5a')](_0x307576[_0x330d('0x5b')])?moment()[_0x330d('0x5c')](_0x330d('0x5d')):undefined});}return null;})[_0x330d('0x20')](function(_0x1a6416){if(_0x1a6416){_0x140c2c['interaction']=_0x1a6416[_0x330d('0x5e')]({'plain':!![]});interaction_log[_0x330d('0x21')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xa5952f['user']['id'],_0xa5952f[_0x330d('0x5f')][_0x330d('0x60')],_0xa5952f[_0x330d('0x5f')][_0x330d('0x61')],_0x140c2c[_0x330d('0x62')]['id'],_0xa5952f[_0x330d('0x51')]?JSON[_0x330d('0x25')](_0xa5952f[_0x330d('0x51')]):'null');return respondWithRpcPromise(_0x330d('0x63'),_0x330d('0x64'),_0x140c2c);}return null;})[_0x330d('0x20')](function(_0x531a19){var _0x5907bb=_0x330d('0x65')+_0x531a19[_0x330d('0x27')][_0x330d('0x66')];return db[_0x330d('0x67')][_0x330d('0x3c')](_0x5907bb,{'type':db[_0x330d('0x68')][_0x330d('0x69')][_0x330d('0x6a')],'raw':!![]})[_0x330d('0x20')](function(_0x188e4f){return _0x188e4f;});})[_0x330d('0x20')](function(_0x55a871){if(_0x55a871){_0x140c2c[_0x330d('0x27')]['contact']=_0x55a871[0x0];if(!_0xa5952f[_0x330d('0x51')]['UserId'])return;return db['User'][_0x330d('0x4f')]({'where':{'id':_0xa5952f[_0x330d('0x51')][_0x330d('0x56')],'role':_0x330d('0x57')},'attributes':['id',_0x330d('0x60'),'fullname',_0x330d('0x6b'),_0x330d('0x6c')],'raw':!![]});}return null;})[_0x330d('0x20')](function(_0x52cce3){if(!_0x52cce3)return null;_0x140c2c[_0x330d('0x27')][_0x330d('0x57')]=_0x52cce3;return _0x140c2c;})[_0x330d('0x20')](function(_0x528365){if(_0x528365){if(_0xa5952f['body'][_0x330d('0x6d')]){_0x140c2c[_0x330d('0x27')]['interface']=util[_0x330d('0x5c')](_0x330d('0x6e'),_0xa5952f['user'][_0x330d('0x60')]);_0x140c2c[_0x330d('0x27')][_0x330d('0x6f')]=_0x140c2c[_0x330d('0x6f')];_0x140c2c[_0x330d('0x27')][_0x330d('0x70')]=_0x140c2c['channel'];_0x140c2c[_0x330d('0x27')][_0x330d('0x71')]=_0x330d('0x72');return respondWithRpcPromise(_0x330d('0x73'),'EventManager',{'event':'acceptmessage','message':_0x140c2c[_0x330d('0x27')]},client9002)[_0x330d('0x20')](function(){return _0x140c2c;});}return _0x140c2c;}return null;})[_0x330d('0x20')](respondWithResult(_0x2f49b6,null))['catch'](handleError(_0x2f49b6,null));};var interaction_log=require('../../config/logger')(_0x330d('0x53'));exports['reject']=function(_0x48776d,_0x5c007f,_0x3dfb59){var _0x38bf02={'agent':{},'channel':_0x330d('0x54')};if(_0x48776d[_0x330d('0x51')]['id']){delete _0x48776d['body']['id'];}_0x48776d[_0x330d('0x51')][_0x330d('0x56')]=_0x48776d[_0x330d('0x51')][_0x330d('0x56')]||_0x48776d[_0x330d('0x5f')]['id'];_0x38bf02[_0x330d('0x57')]['id']=_0x48776d['body']['UserId'];return db[_0x330d('0x36')][_0x330d('0x4f')]({'where':{'id':_0x48776d[_0x330d('0x4e')]['id'],'UserId':null}})[_0x330d('0x20')](handleEntityNotFound(_0x5c007f,null))[_0x330d('0x20')](function(_0x1ac2fc){if(_0x1ac2fc){_0x38bf02[_0x330d('0x27')]=_0x1ac2fc[_0x330d('0x5e')]({'plain':!![]});return db['OpenchannelInteraction'][_0x330d('0x4f')]({'where':{'id':_0x1ac2fc['OpenchannelInteractionId']}});}return null;})[_0x330d('0x20')](handleEntityNotFound(_0x5c007f,null))[_0x330d('0x20')](function(_0x4665c2){if(_0x4665c2){_0x38bf02[_0x330d('0x62')]=_0x4665c2[_0x330d('0x5e')]({'plain':!![]});interaction_log[_0x330d('0x21')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x48776d[_0x330d('0x5f')]['id'],_0x48776d[_0x330d('0x5f')][_0x330d('0x60')],_0x48776d[_0x330d('0x5f')][_0x330d('0x61')],_0x38bf02[_0x330d('0x62')]['id'],_0x48776d[_0x330d('0x51')]?JSON[_0x330d('0x25')](_0x48776d[_0x330d('0x51')]):_0x330d('0x74'));return respondWithRpcPromise(_0x330d('0x75'),_0x330d('0x76'),_0x38bf02);}return null;})[_0x330d('0x20')](function(_0xdf7e14){var _0x536366='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xdf7e14[_0x330d('0x27')][_0x330d('0x66')];return db['sequelize'][_0x330d('0x3c')](_0x536366,{'type':db['Sequelize'][_0x330d('0x69')]['SELECT'],'raw':!![]})[_0x330d('0x20')](function(_0x52efdb){return _0x52efdb;});})[_0x330d('0x20')](function(_0x3f1364){if(_0x3f1364){_0x38bf02[_0x330d('0x27')]['contact']=_0x3f1364[0x0];if(!_0x48776d[_0x330d('0x51')][_0x330d('0x56')])return;return db[_0x330d('0x77')][_0x330d('0x4f')]({'where':{'id':_0x48776d[_0x330d('0x51')]['UserId'],'role':_0x330d('0x57')},'attributes':['id','name',_0x330d('0x78'),_0x330d('0x6b'),_0x330d('0x6c')],'raw':!![]});}return null;})['then'](function(_0x3d448c){if(!_0x3d448c)return null;_0x38bf02[_0x330d('0x27')][_0x330d('0x57')]=_0x3d448c;return _0x38bf02;})[_0x330d('0x20')](function(_0x9a2267){if(_0x9a2267){_0x9a2267[_0x330d('0x27')][_0x330d('0x79')]=util[_0x330d('0x5c')](_0x330d('0x6e'),_0x48776d[_0x330d('0x5f')][_0x330d('0x60')]);_0x9a2267[_0x330d('0x27')]['channel']=_0x38bf02[_0x330d('0x6f')];_0x9a2267['message'][_0x330d('0x70')]=_0x38bf02[_0x330d('0x6f')];_0x9a2267[_0x330d('0x27')][_0x330d('0x71')]=_0x330d('0x7a');respondWithRpcPromise(_0x330d('0x73'),'EventManager',{'event':_0x330d('0x7b'),'message':_0x9a2267[_0x330d('0x27')]},client9002);return _0x38bf02;}return null;})[_0x330d('0x20')](respondWithResult(_0x5c007f,null))[_0x330d('0x28')](handleError(_0x5c007f,null));};
\ No newline at end of file
index fc8fe1a..de473c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a70=['events','OpenchannelMessage','setMaxListeners','save','remove','exports'];(function(_0xee1251,_0x24ba2d){var _0x9bdfec=function(_0xcce427){while(--_0xcce427){_0xee1251['push'](_0xee1251['shift']());}};_0x9bdfec(++_0x24ba2d);}(_0x6a70,0x120));var _0x06a7=function(_0x4f0488,_0x114e8c){_0x4f0488=_0x4f0488-0x0;var _0x5a5726=_0x6a70[_0x4f0488];return _0x5a5726;};'use strict';var EventEmitter=require(_0x06a7('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x06a7('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x06a7('0x2')](0x0);var events={'afterCreate':_0x06a7('0x3'),'afterUpdate':'update','afterDestroy':_0x06a7('0x4')};function emitEvent(_0x4e4ac7){return function(_0x46cd7f,_0x461fce,_0x27be7d){OpenchannelMessageEvents['emit'](_0x4e4ac7+':'+_0x46cd7f['id'],_0x46cd7f);OpenchannelMessageEvents['emit'](_0x4e4ac7,_0x46cd7f);_0x27be7d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x06a7('0x5')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x16b7=['events','../../mysqldb','OpenchannelMessage','setMaxListeners','emit','exports'];(function(_0x414238,_0x3a9733){var _0x132c4d=function(_0x3a25af){while(--_0x3a25af){_0x414238['push'](_0x414238['shift']());}};_0x132c4d(++_0x3a9733);}(_0x16b7,0xa2));var _0x716b=function(_0x1e4653,_0x3fdaa4){_0x1e4653=_0x1e4653-0x0;var _0x4bfaf4=_0x16b7[_0x1e4653];return _0x4bfaf4;};'use strict';var EventEmitter=require(_0x716b('0x0'));var OpenchannelMessage=require(_0x716b('0x1'))['db'][_0x716b('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x716b('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3b4e57){return function(_0x4f2ac7,_0x16c74b,_0x88ad97){OpenchannelMessageEvents[_0x716b('0x4')](_0x3b4e57+':'+_0x4f2ac7['id'],_0x4f2ac7);OpenchannelMessageEvents[_0x716b('0x4')](_0x3b4e57,_0x4f2ac7);_0x88ad97(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x716b('0x5')]=OpenchannelMessageEvents;
\ No newline at end of file
index e252c30..71cddd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['body','models','direction','out','secret','then','createdAt','toLowerCase','catch','error','describe','OpenchannelAccount','find','OpenchannelInteraction','OpenchannelInteractionId','CmContact','Contact','keys','replyUri','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','omit','POST','method','GET','OpenchannelMessage,\x20%s,\x20%s','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages'];(function(_0x3d6acc,_0x54d58b){var _0x121f12=function(_0x36ff1c){while(--_0x36ff1c){_0x3d6acc['push'](_0x3d6acc['shift']());}};_0x121f12(++_0x54d58b);}(_0x2032,0xd9));var _0x2203=function(_0x237156,_0x1ea3a1){_0x237156=_0x237156-0x0;var _0x3b045e=_0x2032[_0x237156];return _0x3b045e;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var attributes=require(_0x2203('0x7'));module[_0x2203('0x8')]=function(_0x3f7ba1,_0x13367a){return _0x3f7ba1[_0x2203('0x9')](_0x2203('0xa'),attributes,{'tableName':_0x2203('0xb'),'paranoid':![],'indexes':[{'name':_0x2203('0xc'),'fields':[_0x2203('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x526ae0,_0x10f055,_0x549908){var _0x27081c=_0x3f7ba1[_0x2203('0xe')];var _0x6339c4=_0x526ae0['get']({'plain':!![]});if(_0x6339c4[_0x2203('0xf')]['toLowerCase']()==='in'||_0x6339c4[_0x2203('0xf')]['toLowerCase']()===_0x2203('0x10')&&!_0x6339c4[_0x2203('0x11')]&&!_['isNil'](_0x6339c4['UserId'])){_0x27081c['OpenchannelInteraction']['findOne']({'where':{'id':_0x6339c4['OpenchannelInteractionId']}})[_0x2203('0x12')](function(_0x538b30){if(_0x538b30){_0x538b30['update']({'lastMsgAt':_0x6339c4[_0x2203('0x13')],'lastMsgDirection':_0x6339c4[_0x2203('0xf')][_0x2203('0x14')]()});}})[_0x2203('0x15')](function(_0x226209){console[_0x2203('0x16')](_0x226209);});}if(_0x6339c4[_0x2203('0xf')]===_0x2203('0x10')&&!_0x6339c4[_0x2203('0x11')]){var _0x3053f3;_0x27081c['CmContact'][_0x2203('0x17')]()[_0x2203('0x12')](function(_0x4893ff){return _0x27081c[_0x2203('0x18')][_0x2203('0x19')]({'where':{'id':_0x6339c4['OpenchannelAccountId']},'include':[{'model':_0x27081c[_0x2203('0x1a')],'as':'Interactions','where':{'id':_0x6339c4[_0x2203('0x1b')]},'limit':0x1,'include':[{'model':_0x27081c[_0x2203('0x1c')],'as':_0x2203('0x1d'),'attributes':_[_0x2203('0x1e')](_0x4893ff)}]}]});})[_0x2203('0x12')](function(_0x449039){_0x3053f3=_0x449039['get']({'plain':!![]});if(_0x3053f3&&_0x3053f3[_0x2203('0x1f')]){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x2203('0x20'),util['format'](_0x2203('0x21'),_0x6339c4['id'],_0x3053f3[_0x2203('0x1f')]));if(_0x3053f3['Interactions']&&_0x3053f3[_0x2203('0x22')]['length']){_0x6339c4['Interaction']=_[_0x2203('0x23')](_0x3053f3[_0x2203('0x22')][0x0],_0x2203('0x1d'));_0x6339c4[_0x2203('0x1d')]=_0x3053f3[_0x2203('0x22')][0x0][_0x2203('0x1d')];}var _0x10f055={'method':_0x2203('0x24'),'uri':encodeURI(_0x3053f3['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x10f055[_0x2203('0x25')]){case _0x2203('0x26'):_0x10f055['qs']=_0x6339c4;break;case _0x2203('0x24'):_0x10f055['body']=_0x6339c4;break;}return rp(_0x10f055)[_0x2203('0x12')](function(_0x1cec17){logger['info'](_0x2203('0x27'),_0x2203('0x20'),util[_0x2203('0x28')](_0x2203('0x29'),_0x6339c4['id'],_0x3053f3[_0x2203('0x1f')]));if(_0x1cec17[_0x2203('0xd')][_0x2203('0x2a')]&&_0x1cec17['body'][_0x2203('0x2a')]!=_0x6339c4[_0x2203('0x2b')][_0x2203('0x2a')]){return _0x27081c[_0x2203('0x1a')]['update']({'threadId':_0x1cec17[_0x2203('0xd')][_0x2203('0x2a')]},{'logging':!![],'where':{'id':_0x6339c4[_0x2203('0x2b')]['id']}});}else{return;}})[_0x2203('0x12')](function(){return _0x526ae0['update']({'read':!![]});})[_0x2203('0x15')](function(_0x50aa17){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x2203('0x20'),util['inspect'](_0x50aa17,{'showHidden':![],'depth':null}));_0x549908();});}else{_0x549908();}})['finally'](function(){_0x549908();});}else{_0x549908();}}},'charset':_0x2203('0x2c'),'collate':_0x2203('0x2d')});};
\ No newline at end of file
+var _0x4213=['describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact','Contact','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','GET','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','catch'];(function(_0x4d65d8,_0x56cd64){var _0x37ca6f=function(_0x313fcd){while(--_0x313fcd){_0x4d65d8['push'](_0x4d65d8['shift']());}};_0x37ca6f(++_0x56cd64);}(_0x4213,0x77));var _0x3421=function(_0x17cf78,_0x32cec3){_0x17cf78=_0x17cf78-0x0;var _0x7c6f8e=_0x4213[_0x17cf78];return _0x7c6f8e;};'use strict';var _=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var logger=require(_0x3421('0x2'))(_0x3421('0x3'));var moment=require(_0x3421('0x4'));var BPromise=require(_0x3421('0x5'));var rp=require(_0x3421('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3421('0x7'));var config=require('../../config/environment');var attributes=require(_0x3421('0x8'));module[_0x3421('0x9')]=function(_0x2155f8,_0x2a04e0){return _0x2155f8['define'](_0x3421('0xa'),attributes,{'tableName':_0x3421('0xb'),'paranoid':![],'indexes':[{'name':_0x3421('0xc'),'fields':[_0x3421('0xd')],'type':_0x3421('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4ddfce,_0x1f20cf,_0x58d511){var _0x4ff986=_0x2155f8[_0x3421('0xf')];var _0x4b9d24=_0x4ddfce[_0x3421('0x10')]({'plain':!![]});if(_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()==='in'||_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()===_0x3421('0x13')&&!_0x4b9d24[_0x3421('0x14')]&&!_['isNil'](_0x4b9d24[_0x3421('0x15')])){_0x4ff986[_0x3421('0x16')][_0x3421('0x17')]({'where':{'id':_0x4b9d24[_0x3421('0x18')]}})[_0x3421('0x19')](function(_0x3f4672){if(_0x3f4672){_0x3f4672[_0x3421('0x1a')]({'lastMsgAt':_0x4b9d24['createdAt'],'lastMsgDirection':_0x4b9d24[_0x3421('0x11')]['toLowerCase']()});}})[_0x3421('0x1b')](function(_0x5257ad){console['error'](_0x5257ad);});}if(_0x4b9d24[_0x3421('0x11')]==='out'&&!_0x4b9d24[_0x3421('0x14')]){var _0x23694b;_0x4ff986['CmContact'][_0x3421('0x1c')]()[_0x3421('0x19')](function(_0x130d3c){return _0x4ff986[_0x3421('0x1d')][_0x3421('0x1e')]({'where':{'id':_0x4b9d24[_0x3421('0x1f')]},'include':[{'model':_0x4ff986[_0x3421('0x16')],'as':_0x3421('0x20'),'where':{'id':_0x4b9d24[_0x3421('0x18')]},'limit':0x1,'include':[{'model':_0x4ff986[_0x3421('0x21')],'as':_0x3421('0x22'),'attributes':_['keys'](_0x130d3c)}]}]});})[_0x3421('0x19')](function(_0x4b59a5){_0x23694b=_0x4b59a5['get']({'plain':!![]});if(_0x23694b&&_0x23694b['replyUri']){logger[_0x3421('0x23')](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x26')](_0x3421('0x27'),_0x4b9d24['id'],_0x23694b[_0x3421('0x28')]));if(_0x23694b[_0x3421('0x20')]&&_0x23694b[_0x3421('0x20')][_0x3421('0x29')]){_0x4b9d24[_0x3421('0x2a')]=_['omit'](_0x23694b['Interactions'][0x0],'Contact');_0x4b9d24[_0x3421('0x22')]=_0x23694b[_0x3421('0x20')][0x0][_0x3421('0x22')];}var _0x1f20cf={'method':'POST','uri':encodeURI(_0x23694b[_0x3421('0x28')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1f20cf['method']){case _0x3421('0x2b'):_0x1f20cf['qs']=_0x4b9d24;break;case'POST':_0x1f20cf[_0x3421('0xd')]=_0x4b9d24;break;}return rp(_0x1f20cf)[_0x3421('0x19')](function(_0x36d75f){logger[_0x3421('0x23')](_0x3421('0x24'),'afterCreate',util[_0x3421('0x26')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x4b9d24['id'],_0x23694b['replyUri']));if(_0x36d75f[_0x3421('0xd')]['threadId']&&_0x36d75f['body'][_0x3421('0x2c')]!=_0x4b9d24['Interaction'][_0x3421('0x2c')]){return _0x4ff986['OpenchannelInteraction'][_0x3421('0x1a')]({'threadId':_0x36d75f[_0x3421('0xd')]['threadId']},{'logging':!![],'where':{'id':_0x4b9d24[_0x3421('0x2a')]['id']}});}else{return;}})[_0x3421('0x19')](function(){return _0x4ddfce[_0x3421('0x1a')]({'read':!![]});})['catch'](function(_0x3a89b6){logger['error'](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x2d')](_0x3a89b6,{'showHidden':![],'depth':null}));_0x58d511();});}else{_0x58d511();}})[_0x3421('0x2e')](function(){_0x58d511();});}else{_0x58d511();}}},'charset':_0x3421('0x2f'),'collate':_0x3421('0x30')});};
\ No newline at end of file
index 93dc474..bf642a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0xbdc74b,_0x1b1eae){var _0x113118=function(_0x1fe371){while(--_0x1fe371){_0xbdc74b['push'](_0xbdc74b['shift']());}};_0x113118(++_0x1b1eae);}(_0x2ef3,0xba));var _0x32ef=function(_0x5133e2,_0x251451){_0x5133e2=_0x5133e2-0x0;var _0x594f3b=_0x2ef3[_0x5133e2];return _0x594f3b;};'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});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
+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(_0xc47a2c,_0x11c74c){var _0x1b6b44=function(_0x368d05){while(--_0x368d05){_0xc47a2c['push'](_0xc47a2c['shift']());}};_0x1b6b44(++_0x11c74c);}(_0x0b0e,0x187));var _0xe0b0=function(_0x503641,_0x33a3cf){_0x503641=_0x503641-0x0;var _0x17757d=_0x0b0e[_0x503641];return _0x17757d;};'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
index d488f98..706b30d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf8a=['update','emit','removeListener','register','./openchannelMessage.events','save','remove'];(function(_0x1ca5d0,_0x1cedd7){var _0x4a5426=function(_0x5793a4){while(--_0x5793a4){_0x1ca5d0['push'](_0x1ca5d0['shift']());}};_0x4a5426(++_0x1cedd7);}(_0xcf8a,0x1cb));var _0xacf8=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xcf8a[_0x19950b];return _0x3c6b41;};'use strict';var OpenchannelMessageEvents=require(_0xacf8('0x0'));var events=[_0xacf8('0x1'),_0xacf8('0x2'),_0xacf8('0x3')];function createListener(_0x2ae5a4,_0x1d9eb4){return function(_0xe3e80d){_0x1d9eb4[_0xacf8('0x4')](_0x2ae5a4,_0xe3e80d);};}function removeListener(_0x4a8c3c,_0x46b059){return function(){OpenchannelMessageEvents[_0xacf8('0x5')](_0x4a8c3c,_0x46b059);};}exports[_0xacf8('0x6')]=function(_0x372f60){for(var _0x39320a=0x0,_0x1a1a41=events['length'];_0x39320a<_0x1a1a41;_0x39320a++){var _0x4e8e53=events[_0x39320a];var _0xf4a074=createListener('openchannelMessage:'+_0x4e8e53,_0x372f60);OpenchannelMessageEvents['on'](_0x4e8e53,_0xf4a074);}};
\ No newline at end of file
+var _0x342a=['./openchannelMessage.events','save','remove','update','emit','removeListener','register','length','openchannelMessage:'];(function(_0x97682,_0x1df622){var _0x444eb8=function(_0x32b35b){while(--_0x32b35b){_0x97682['push'](_0x97682['shift']());}};_0x444eb8(++_0x1df622);}(_0x342a,0xa2));var _0xa342=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x342a[_0x126558];return _0x1f6d14;};'use strict';var OpenchannelMessageEvents=require(_0xa342('0x0'));var events=[_0xa342('0x1'),_0xa342('0x2'),_0xa342('0x3')];function createListener(_0x49433e,_0x3bc8e7){return function(_0x2f8c77){_0x3bc8e7[_0xa342('0x4')](_0x49433e,_0x2f8c77);};}function removeListener(_0x1a3887,_0x1a6971){return function(){OpenchannelMessageEvents[_0xa342('0x5')](_0x1a3887,_0x1a6971);};}exports[_0xa342('0x6')]=function(_0xe4f458){for(var _0x125618=0x0,_0x1d406e=events[_0xa342('0x7')];_0x125618<_0x1d406e;_0x125618++){var _0x27a327=events[_0x125618];var _0x515574=createListener(_0xa342('0x8')+_0x27a327,_0xe4f458);OpenchannelMessageEvents['on'](_0x27a327,_0x515574);}};
\ No newline at end of file
index 9a9cf57..968fb3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96c6=['./openchannelQueue.controller','get','isAuthenticated','/describe','/:id','show','/:id/members','getMembers','/:id/teams','addTeams','/:id/users','update','destroy','removeTeams','delete','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1ef167,_0x444fcd){var _0x594b71=function(_0x37de4c){while(--_0x37de4c){_0x1ef167['push'](_0x1ef167['shift']());}};_0x594b71(++_0x444fcd);}(_0x96c6,0x1d3));var _0x696c=function(_0xff2c44,_0x19e07b){_0xff2c44=_0xff2c44-0x0;var _0x3bed7f=_0x96c6[_0xff2c44];return _0x3bed7f;};'use strict';var multer=require(_0x696c('0x0'));var util=require(_0x696c('0x1'));var path=require('path');var timeout=require(_0x696c('0x2'));var express=require(_0x696c('0x3'));var router=express[_0x696c('0x4')]();var fs_extra=require(_0x696c('0x5'));var auth=require(_0x696c('0x6'));var interaction=require(_0x696c('0x7'));var config=require('../../config/environment');var controller=require(_0x696c('0x8'));router[_0x696c('0x9')]('/',auth[_0x696c('0xa')](),controller['index']);router[_0x696c('0x9')](_0x696c('0xb'),auth[_0x696c('0xa')](),controller['describe']);router[_0x696c('0x9')](_0x696c('0xc'),auth[_0x696c('0xa')](),controller[_0x696c('0xd')]);router[_0x696c('0x9')](_0x696c('0xe'),auth[_0x696c('0xa')](),controller[_0x696c('0xf')]);router[_0x696c('0x9')](_0x696c('0x10'),auth[_0x696c('0xa')](),controller['getTeams']);router[_0x696c('0x9')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0x696c('0xa')](),controller['create']);router['post'](_0x696c('0x10'),auth[_0x696c('0xa')](),controller[_0x696c('0x11')]);router['post'](_0x696c('0x12'),auth[_0x696c('0xa')](),controller['addAgents']);router['put']('/:id',auth[_0x696c('0xa')](),controller[_0x696c('0x13')]);router['delete']('/:id',auth[_0x696c('0xa')](),controller[_0x696c('0x14')]);router['delete']('/:id/teams',auth[_0x696c('0xa')](),controller[_0x696c('0x15')]);router[_0x696c('0x16')](_0x696c('0x12'),auth[_0x696c('0xa')](),controller[_0x696c('0x17')]);module[_0x696c('0x18')]=router;
\ No newline at end of file
+var _0x4eaf=['removeAgents','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeTeams'];(function(_0x3f5fc0,_0x6ef49c){var _0x62e643=function(_0x5163ca){while(--_0x5163ca){_0x3f5fc0['push'](_0x3f5fc0['shift']());}};_0x62e643(++_0x6ef49c);}(_0x4eaf,0xcd));var _0xf4ea=function(_0x10aeb0,_0x4b4cf6){_0x10aeb0=_0x10aeb0-0x0;var _0x4d981d=_0x4eaf[_0x10aeb0];return _0x4d981d;};'use strict';var multer=require(_0xf4ea('0x0'));var util=require(_0xf4ea('0x1'));var path=require(_0xf4ea('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf4ea('0x3')]();var fs_extra=require(_0xf4ea('0x4'));var auth=require(_0xf4ea('0x5'));var interaction=require(_0xf4ea('0x6'));var config=require('../../config/environment');var controller=require('./openchannelQueue.controller');router[_0xf4ea('0x7')]('/',auth[_0xf4ea('0x8')](),controller[_0xf4ea('0x9')]);router[_0xf4ea('0x7')]('/describe',auth[_0xf4ea('0x8')](),controller[_0xf4ea('0xa')]);router['get']('/:id',auth[_0xf4ea('0x8')](),controller[_0xf4ea('0xb')]);router[_0xf4ea('0x7')](_0xf4ea('0xc'),auth[_0xf4ea('0x8')](),controller[_0xf4ea('0xd')]);router[_0xf4ea('0x7')](_0xf4ea('0xe'),auth['isAuthenticated'](),controller[_0xf4ea('0xf')]);router[_0xf4ea('0x7')](_0xf4ea('0x10'),auth[_0xf4ea('0x8')](),controller[_0xf4ea('0x11')]);router[_0xf4ea('0x12')]('/',auth['isAuthenticated'](),controller[_0xf4ea('0x13')]);router[_0xf4ea('0x12')](_0xf4ea('0xe'),auth['isAuthenticated'](),controller[_0xf4ea('0x14')]);router[_0xf4ea('0x12')]('/:id/users',auth['isAuthenticated'](),controller[_0xf4ea('0x15')]);router[_0xf4ea('0x16')](_0xf4ea('0x17'),auth[_0xf4ea('0x8')](),controller['update']);router[_0xf4ea('0x18')](_0xf4ea('0x17'),auth[_0xf4ea('0x8')](),controller[_0xf4ea('0x19')]);router[_0xf4ea('0x18')](_0xf4ea('0xe'),auth['isAuthenticated'](),controller[_0xf4ea('0x1a')]);router[_0xf4ea('0x18')](_0xf4ea('0x10'),auth[_0xf4ea('0x8')](),controller[_0xf4ea('0x1b')]);module[_0xf4ea('0x1c')]=router;
\ No newline at end of file
index 6e6297c..1cdd057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c01=['STRING','INTEGER','ENUM','rrmemory','sequelize','exports'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4c01,0x6a));var _0x14c0=function(_0x195b62,_0x54621f){_0x195b62=_0x195b62-0x0;var _0x4df667=_0x4c01[_0x195b62];return _0x4df667;};'use strict';var Sequelize=require(_0x14c0('0x0'));module[_0x14c0('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x14c0('0x2')]},'timeout':{'type':Sequelize[_0x14c0('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x14c0('0x4')](_0x14c0('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x6292=['ENUM','rrmemory','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x5d8783,_0x197361){var _0x2a9c02=function(_0x23ca6d){while(--_0x23ca6d){_0x5d8783['push'](_0x5d8783['shift']());}};_0x2a9c02(++_0x197361);}(_0x6292,0x1f3));var _0x2629=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x6292[_0x550d12];return _0x12103d;};'use strict';var Sequelize=require(_0x2629('0x0'));module[_0x2629('0x1')]={'name':{'type':Sequelize[_0x2629('0x2')],'unique':_0x2629('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2629('0x2')]},'timeout':{'type':Sequelize[_0x2629('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2629('0x5')](_0x2629('0x6'),'beepall',_0x2629('0x7'))}};
\ No newline at end of file
index 3907764..d8f162e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47f4=['socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','OpenchannelQueue','findAll','rows','catch','show','params','include','find','create','body','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','OpenchannelQueueId','UserOpenchannelQueue','User','findAndCountAll','UserId','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','ids','Agents','online','voicePause','flatMap','addTeams','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','TeamId','includes','all','union','removeAgents','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','getAgents','order','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost'];(function(_0x51472d,_0x592b0b){var _0x5f00f1=function(_0x4a9b97){while(--_0x4a9b97){_0x51472d['push'](_0x51472d['shift']());}};_0x5f00f1(++_0x592b0b);}(_0x47f4,0xf6));var _0x447f=function(_0x585f5f,_0x4c928e){_0x585f5f=_0x585f5f-0x0;var _0x314e72=_0x47f4[_0x585f5f];return _0x314e72;};'use strict';var emlformat=require(_0x447f('0x0'));var rimraf=require(_0x447f('0x1'));var zipdir=require(_0x447f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x447f('0x3'));var BPromise=require(_0x447f('0x4'));var Mustache=require(_0x447f('0x5'));var util=require(_0x447f('0x6'));var path=require('path');var sox=require(_0x447f('0x7'));var csv=require(_0x447f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x447f('0x9'));var _=require(_0x447f('0xa'));var squel=require(_0x447f('0xb'));var crypto=require(_0x447f('0xc'));var jsforce=require(_0x447f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x447f('0x8'));var querystring=require('querystring');var Papa=require(_0x447f('0xe'));var Redis=require('ioredis');var authService=require(_0x447f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x447f('0x10'));var hardwareService=require(_0x447f('0x11'));var logger=require(_0x447f('0x12'))(_0x447f('0x13'));var utils=require(_0x447f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x447f('0x15'));var db=require(_0x447f('0x16'))['db'];config[_0x447f('0x17')]=_[_0x447f('0x18')](config['redis'],{'host':_0x447f('0x19'),'port':0x18eb});var socket=require(_0x447f('0x1a'))(new Redis(config['redis']));require(_0x447f('0x1b'))['register'](socket);function respondWithStatusCode(_0x35b41b,_0x58360f){_0x58360f=_0x58360f||0xcc;return function(_0x52098c){if(_0x52098c){return _0x35b41b[_0x447f('0x1c')](_0x58360f);}return _0x35b41b[_0x447f('0x1d')](_0x58360f)[_0x447f('0x1e')]();};}function respondWithResult(_0x3174bb,_0x14c3f1){_0x14c3f1=_0x14c3f1||0xc8;return function(_0x15eae6){if(_0x15eae6){return _0x3174bb[_0x447f('0x1d')](_0x14c3f1)[_0x447f('0x1f')](_0x15eae6);}};}function respondWithFilteredResult(_0x3dd163,_0x6eebd0){return function(_0xaa2e4d){if(_0xaa2e4d){var _0xc2eab4=typeof _0x6eebd0[_0x447f('0x20')]===_0x447f('0x21')&&typeof _0x6eebd0[_0x447f('0x22')]===_0x447f('0x21');var _0x428808=_0xaa2e4d[_0x447f('0x23')];var _0x428a07=_0xc2eab4?0x0:_0x6eebd0[_0x447f('0x20')];var _0x345e2d=_0xc2eab4?_0xaa2e4d['count']:_0x6eebd0[_0x447f('0x20')]+_0x6eebd0[_0x447f('0x22')];var _0x1754b1;if(_0x345e2d>=_0x428808){_0x345e2d=_0x428808;_0x1754b1=0xc8;}else{_0x1754b1=0xce;}_0x3dd163[_0x447f('0x1d')](_0x1754b1);return _0x3dd163[_0x447f('0x24')](_0x447f('0x25'),_0x428a07+'-'+_0x345e2d+'/'+_0x428808)[_0x447f('0x1f')](_0xaa2e4d);}return null;};}function patchUpdates(_0xa171cb){return function(_0x1b0457){try{jsonpatch[_0x447f('0x26')](_0x1b0457,_0xa171cb,!![]);}catch(_0x3c8e83){return BPromise[_0x447f('0x27')](_0x3c8e83);}return _0x1b0457[_0x447f('0x28')]();};}function saveUpdates(_0x10f6b2,_0x22a103){return function(_0x29ca51){if(_0x29ca51){return _0x29ca51[_0x447f('0x29')](_0x10f6b2)[_0x447f('0x2a')](function(_0x461c94){return _0x461c94;});}return null;};}function removeEntity(_0x254521,_0x49fd0d){return function(_0x4069a3){if(_0x4069a3){return _0x4069a3[_0x447f('0x2b')]()['then'](function(){var _0x19cef4=_0x4069a3[_0x447f('0x2c')]({'plain':!![]});var _0x5da8cf=_0x447f('0x2d');return db[_0x447f('0x2e')][_0x447f('0x2b')]({'where':{'type':_0x5da8cf,'resourceId':_0x19cef4['id']}})[_0x447f('0x2a')](function(){return _0x4069a3;});})[_0x447f('0x2a')](function(){_0x254521['status'](0xcc)[_0x447f('0x1e')]();});}};}function handleEntityNotFound(_0x488c64,_0xe6298b){return function(_0x3b3e3c){if(!_0x3b3e3c){_0x488c64[_0x447f('0x1c')](0x194);}return _0x3b3e3c;};}function handleError(_0xca0f69,_0x1578ee){_0x1578ee=_0x1578ee||0x1f4;return function(_0x1371b8){logger[_0x447f('0x2f')](_0x1371b8[_0x447f('0x30')]);if(_0x1371b8[_0x447f('0x31')]){delete _0x1371b8[_0x447f('0x31')];}_0xca0f69[_0x447f('0x1d')](_0x1578ee)[_0x447f('0x32')](_0x1371b8);};}exports['index']=function(_0x4304a3,_0x32970f){var _0x45bf8a={},_0x38155f={},_0x3a3bfc={'count':0x0,'rows':[]};var _0x2bba51=_['map'](db['OpenchannelQueue'][_0x447f('0x33')],function(_0x109849){return{'name':_0x109849['fieldName'],'type':_0x109849[_0x447f('0x34')][_0x447f('0x35')]};});_0x38155f[_0x447f('0x36')]=_[_0x447f('0x37')](_0x2bba51,_0x447f('0x31'));_0x38155f['query']=_[_0x447f('0x38')](_0x4304a3[_0x447f('0x39')]);_0x38155f[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x38155f[_0x447f('0x36')],_0x38155f['query']);_0x45bf8a[_0x447f('0x3c')]=_['intersection'](_0x38155f[_0x447f('0x36')],qs[_0x447f('0x3d')](_0x4304a3[_0x447f('0x39')][_0x447f('0x3d')]));_0x45bf8a['attributes']=_0x45bf8a[_0x447f('0x3c')][_0x447f('0x3e')]?_0x45bf8a[_0x447f('0x3c')]:_0x38155f['model'];if(!_0x4304a3[_0x447f('0x39')][_0x447f('0x3f')](_0x447f('0x40'))){_0x45bf8a[_0x447f('0x22')]=qs[_0x447f('0x22')](_0x4304a3['query'][_0x447f('0x22')]);_0x45bf8a[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x4304a3['query'][_0x447f('0x20')]);}_0x45bf8a['order']=qs[_0x447f('0x41')](_0x4304a3[_0x447f('0x39')][_0x447f('0x41')]);_0x45bf8a[_0x447f('0x42')]=qs['filters'](_[_0x447f('0x43')](_0x4304a3['query'],_0x38155f[_0x447f('0x3a')]),_0x2bba51);if(_0x4304a3[_0x447f('0x39')][_0x447f('0x44')]){_0x45bf8a[_0x447f('0x42')]=_[_0x447f('0x45')](_0x45bf8a[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0x2bba51,function(_0x207e03){if(_0x207e03[_0x447f('0x34')]!=='VIRTUAL'){var _0x5db140={};_0x5db140[_0x207e03[_0x447f('0x31')]]={'$like':'%'+_0x4304a3[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0x5db140;}})});}_0x45bf8a=_[_0x447f('0x45')]({},_0x45bf8a,_0x4304a3[_0x447f('0x46')]);var _0x51073d={'where':_0x45bf8a[_0x447f('0x42')]};return db[_0x447f('0x47')][_0x447f('0x23')](_0x51073d)['then'](function(_0x3bb57f){_0x3a3bfc[_0x447f('0x23')]=_0x3bb57f;if(_0x4304a3[_0x447f('0x39')]['includeAll']){_0x45bf8a['include']=[{'all':!![]}];}return db['OpenchannelQueue'][_0x447f('0x48')](_0x45bf8a);})[_0x447f('0x2a')](function(_0x59d17d){_0x3a3bfc[_0x447f('0x49')]=_0x59d17d;return _0x3a3bfc;})[_0x447f('0x2a')](respondWithFilteredResult(_0x32970f,_0x45bf8a))[_0x447f('0x4a')](handleError(_0x32970f,null));};exports[_0x447f('0x4b')]=function(_0x4e8221,_0x5dcb95){var _0xb61689={'raw':!![],'where':{'id':_0x4e8221[_0x447f('0x4c')]['id']}},_0x24de4a={};_0x24de4a[_0x447f('0x36')]=_[_0x447f('0x38')](db[_0x447f('0x47')]['rawAttributes']);_0x24de4a[_0x447f('0x39')]=_[_0x447f('0x38')](_0x4e8221[_0x447f('0x39')]);_0x24de4a[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x24de4a['model'],_0x24de4a[_0x447f('0x39')]);_0xb61689[_0x447f('0x3c')]=_[_0x447f('0x3b')](_0x24de4a[_0x447f('0x36')],qs[_0x447f('0x3d')](_0x4e8221[_0x447f('0x39')][_0x447f('0x3d')]));_0xb61689[_0x447f('0x3c')]=_0xb61689[_0x447f('0x3c')][_0x447f('0x3e')]?_0xb61689[_0x447f('0x3c')]:_0x24de4a[_0x447f('0x36')];if(_0x4e8221[_0x447f('0x39')]['includeAll']){_0xb61689[_0x447f('0x4d')]=[{'all':!![]}];}_0xb61689=_[_0x447f('0x45')]({},_0xb61689,_0x4e8221[_0x447f('0x46')]);return db[_0x447f('0x47')][_0x447f('0x4e')](_0xb61689)['then'](handleEntityNotFound(_0x5dcb95,null))[_0x447f('0x2a')](respondWithResult(_0x5dcb95,null))['catch'](handleError(_0x5dcb95,null));};exports[_0x447f('0x4f')]=function(_0x1c672d,_0x51c928){return db['OpenchannelQueue'][_0x447f('0x4f')](_0x1c672d[_0x447f('0x50')],{})[_0x447f('0x2a')](function(_0x19af7e){var _0x85d4e8=_0x1c672d[_0x447f('0x51')]['get']({'plain':!![]});if(!_0x85d4e8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x85d4e8['role']==='user'){var _0x159b63=_0x19af7e[_0x447f('0x2c')]({'plain':!![]});var _0x17ac37=_0x447f('0x2d');return db['UserProfileSection']['find']({'where':{'name':_0x17ac37,'userProfileId':_0x85d4e8[_0x447f('0x52')]},'raw':!![]})['then'](function(_0x173a94){if(_0x173a94&&_0x173a94['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x159b63['name'],'resourceId':_0x159b63['id'],'type':_0x173a94[_0x447f('0x31')],'sectionId':_0x173a94['id']},{})['then'](function(){return _0x19af7e;});}else{return _0x19af7e;}})[_0x447f('0x4a')](function(_0xa1d4bf){logger[_0x447f('0x2f')](_0x447f('0x53'),_0xa1d4bf);throw _0xa1d4bf;});}return _0x19af7e;})[_0x447f('0x2a')](respondWithResult(_0x51c928,0xc9))[_0x447f('0x4a')](handleError(_0x51c928,null));};exports[_0x447f('0x29')]=function(_0x1d8fda,_0x17af53){if(_0x1d8fda[_0x447f('0x50')]['id']){delete _0x1d8fda['body']['id'];}return db[_0x447f('0x47')][_0x447f('0x4e')]({'where':{'id':_0x1d8fda[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x17af53,null))[_0x447f('0x2a')](saveUpdates(_0x1d8fda[_0x447f('0x50')],null))[_0x447f('0x2a')](respondWithResult(_0x17af53,null))[_0x447f('0x4a')](handleError(_0x17af53,null));};exports['destroy']=function(_0x5e1f54,_0x1dd973){return db['OpenchannelQueue'][_0x447f('0x4e')]({'where':{'id':_0x5e1f54['params']['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x1dd973,null))[_0x447f('0x2a')](removeEntity(_0x1dd973,null))['catch'](handleError(_0x1dd973,null));};exports[_0x447f('0x54')]=function(_0x58b0ab,_0x3ac20a){return db[_0x447f('0x47')][_0x447f('0x54')]()['then'](respondWithResult(_0x3ac20a,null))[_0x447f('0x4a')](handleError(_0x3ac20a,null));};exports['getMembers']=function(_0x1f6c05,_0x4634ec,_0x9adf62){var _0x2e5839={'raw':!![],'where':{}},_0x3f2a3d={},_0x55bbe5;return db[_0x447f('0x47')][_0x447f('0x55')]({'where':{'id':_0x1f6c05[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x4634ec,null))[_0x447f('0x2a')](function(_0x1acd8a){if(_0x1acd8a){_0x55bbe5=_0x1acd8a[_0x447f('0x2c')]({'plain':!![]});_0x3f2a3d[_0x447f('0x36')]=_['keys'](db['UserOpenchannelQueue']['rawAttributes']);_0x3f2a3d[_0x447f('0x39')]=_[_0x447f('0x38')](_0x1f6c05[_0x447f('0x39')]);_0x3f2a3d[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x3f2a3d['model'],_0x3f2a3d[_0x447f('0x39')]);_0x2e5839[_0x447f('0x3c')]=_[_0x447f('0x3b')](_0x3f2a3d[_0x447f('0x36')],qs['fields'](_0x1f6c05[_0x447f('0x39')][_0x447f('0x3d')]));_0x2e5839[_0x447f('0x3c')]=_0x2e5839[_0x447f('0x3c')][_0x447f('0x3e')]?_0x2e5839[_0x447f('0x3c')]:_0x3f2a3d[_0x447f('0x36')];if(!_0x1f6c05[_0x447f('0x39')][_0x447f('0x3f')](_0x447f('0x40'))){_0x2e5839[_0x447f('0x22')]=qs[_0x447f('0x22')](_0x1f6c05[_0x447f('0x39')][_0x447f('0x22')]);_0x2e5839[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x1f6c05[_0x447f('0x39')][_0x447f('0x20')]);}_0x2e5839['order']=qs['sort'](_0x1f6c05[_0x447f('0x39')][_0x447f('0x41')]);_0x2e5839['where']=qs['filters'](_['pick'](_0x1f6c05[_0x447f('0x39')],_0x3f2a3d[_0x447f('0x3a')]));_0x2e5839[_0x447f('0x42')][_0x447f('0x56')]=_0x1acd8a['id'];if(_0x1f6c05[_0x447f('0x39')]['filter']){_0x2e5839['where']=_[_0x447f('0x45')](_0x2e5839[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0x2e5839[_0x447f('0x3c')],function(_0x2130c9){var _0x3bd5fb={};_0x3bd5fb[_0x2130c9]={'$like':'%'+_0x1f6c05[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0x3bd5fb;})});}_0x2e5839=_['merge']({},_0x2e5839,_0x1f6c05[_0x447f('0x46')]);return db[_0x447f('0x57')]['findAll'](_0x2e5839);}})[_0x447f('0x2a')](function(_0x2d6c81){if(_0x2d6c81){return db[_0x447f('0x58')][_0x447f('0x59')]({'where':{'id':_[_0x447f('0x37')](_0x2d6c81,_0x447f('0x5a')),'role':'agent'},'attributes':['id',_0x447f('0x31'),_0x447f('0x5b'),_0x447f('0x5c'),_0x447f('0x5d')]});}})[_0x447f('0x2a')](function(_0x516163){if(_0x516163){return{'count':_0x516163['count'],'rows':_[_0x447f('0x37')](_0x516163[_0x447f('0x49')],function(_0x3df923){return{'membername':_0x3df923[_0x447f('0x31')],'UserId':_0x3df923['id'],'queue_name':_0x55bbe5[_0x447f('0x31')],'OpenchannelQueueId':_0x55bbe5['id'],'interface':util[_0x447f('0x5e')](_0x447f('0x5f'),_0x447f('0x60'),_0x3df923[_0x447f('0x31')]),'penalty':0x0,'paused':_0x3df923[_0x447f('0x5b')],'createdAt':_0x3df923[_0x447f('0x5d')],'updatedAt':_0x3df923[_0x447f('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4634ec,_0x2e5839))[_0x447f('0x4a')](handleError(_0x4634ec,null));};exports[_0x447f('0x61')]=function(_0x185b99,_0x3e15e9,_0x3b8641){var _0xd83d3e={};var _0x1a7e57={};var _0x239eb3;var _0x65651e;return db['OpenchannelQueue'][_0x447f('0x55')]({'where':{'id':_0x185b99['params']['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x3e15e9,null))[_0x447f('0x2a')](function(_0x20dcc8){if(_0x20dcc8){_0x239eb3=_0x20dcc8;_0x1a7e57[_0x447f('0x36')]=_['keys'](db[_0x447f('0x62')]['rawAttributes']);_0x1a7e57[_0x447f('0x39')]=_[_0x447f('0x38')](_0x185b99['query']);_0x1a7e57[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x1a7e57[_0x447f('0x36')],_0x1a7e57[_0x447f('0x39')]);_0xd83d3e[_0x447f('0x3c')]=_[_0x447f('0x3b')](_0x1a7e57[_0x447f('0x36')],qs[_0x447f('0x3d')](_0x185b99[_0x447f('0x39')]['fields']));_0xd83d3e[_0x447f('0x3c')]=_0xd83d3e[_0x447f('0x3c')][_0x447f('0x3e')]?_0xd83d3e[_0x447f('0x3c')]:_0x1a7e57['model'];_0xd83d3e['order']=qs['sort'](_0x185b99[_0x447f('0x39')][_0x447f('0x41')]);_0xd83d3e[_0x447f('0x42')]=qs[_0x447f('0x3a')](_[_0x447f('0x43')](_0x185b99[_0x447f('0x39')],_0x1a7e57[_0x447f('0x3a')]));if(_0x185b99[_0x447f('0x39')][_0x447f('0x44')]){_0xd83d3e[_0x447f('0x42')]=_[_0x447f('0x45')](_0xd83d3e[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0xd83d3e[_0x447f('0x3c')],function(_0x1e0a7e){var _0x178918={};_0x178918[_0x1e0a7e]={'$like':'%'+_0x185b99[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0x178918;})});}_0xd83d3e=_[_0x447f('0x45')]({},_0xd83d3e,_0x185b99[_0x447f('0x46')]);return _0x239eb3[_0x447f('0x61')](_0xd83d3e);}})[_0x447f('0x2a')](function(_0xdbe15f){if(_0xdbe15f){_0x65651e=_0xdbe15f[_0x447f('0x3e')];if(!_0x185b99[_0x447f('0x39')][_0x447f('0x3f')](_0x447f('0x40'))){_0xd83d3e['limit']=qs[_0x447f('0x22')](_0x185b99[_0x447f('0x39')]['limit']);_0xd83d3e[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x185b99['query'][_0x447f('0x20')]);}return _0x239eb3[_0x447f('0x61')](_0xd83d3e);}})[_0x447f('0x2a')](function(_0x4be2ae){if(_0x4be2ae){return _0x4be2ae?{'count':_0x65651e,'rows':_0x4be2ae}:null;}})['then'](respondWithResult(_0x3e15e9,null))[_0x447f('0x4a')](handleError(_0x3e15e9,null));};exports['addTeams']=function(_0x37c84b,_0x3684f2,_0x4ce22e){var _0xfb8ce2=_0x37c84b['body'][_0x447f('0x63')];return db['Team'][_0x447f('0x48')]({'where':{'id':_0xfb8ce2},'attributes':['id'],'include':[{'model':db['User'],'as':_0x447f('0x64'),'attributes':['id',_0x447f('0x31'),_0x447f('0x65'),_0x447f('0x66'),'interface'],'raw':!![]}]})[_0x447f('0x2a')](function(_0x5e924){if(_0x5e924){var _0x4daa4d=_[_0x447f('0x67')](_0x5e924,function(_0x5663e7){var _0x4ab768=_0x5663e7[_0x447f('0x2c')]({'plain':!![]});return _0x4ab768['Agents'];});return db[_0x447f('0x47')][_0x447f('0x4e')]({'where':{'id':_0x37c84b['params']['id']}})[_0x447f('0x2a')](function(_0xb29099){return db['sequelize']['transaction'](function(_0x328591){return _0xb29099[_0x447f('0x68')](_0xfb8ce2,{'transaction':_0x328591})['then'](function(){return BPromise[_0x447f('0x69')](_0x4daa4d,function(_0x4c5cd0){return db[_0x447f('0x57')][_0x447f('0x6a')]({'where':{'UserId':_0x4c5cd0['id'],'OpenchannelQueueId':_0x37c84b[_0x447f('0x4c')]['id']},'transaction':_0x328591});});})['then'](function(){_0x4daa4d['forEach'](function(_0x14b70e){socket[_0x447f('0x6b')](_0x447f('0x6c'),{'UserId':_0x14b70e['id'],'OpenchannelQueueId':_0xb29099['id']});});});});});}})['then'](respondWithStatusCode(_0x3684f2,null))[_0x447f('0x4a')](handleError(_0x3684f2,null));};exports[_0x447f('0x6d')]=function(_0x26fdf8,_0x90bc94,_0x323d10){return db[_0x447f('0x62')]['findAll']({'where':{'id':_0x26fdf8[_0x447f('0x39')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x447f('0x64'),'attributes':['id'],'raw':!![]}]})[_0x447f('0x2a')](handleEntityNotFound(_0x90bc94,null))[_0x447f('0x2a')](function(_0x405c58){var _0x2f067a=_[_0x447f('0x37')](_0x405c58,'id');var _0x311a73=[];var _0x40de98=[];var _0x1664ad=squel[_0x447f('0x6e')]();_0x1664ad[_0x447f('0x6f')](_0x447f('0x70'))[_0x447f('0x71')](_0x447f('0x72'),'tq')[_0x447f('0x73')]('user_has_teams','ut',_0x447f('0x74'))[_0x447f('0x42')](_0x447f('0x75'),_0x26fdf8[_0x447f('0x4c')]['id']);for(var _0x611180=0x0;_0x611180<_0x405c58['length'];_0x611180+=0x1){let _0x40f983=_0x405c58[_0x611180];for(var _0x46f96a=0x0;_0x46f96a<_0x40f983[_0x447f('0x64')]['length'];_0x46f96a+=0x1){let _0xd648e3=_0x40f983[_0x447f('0x64')][_0x46f96a];var _0x207da0=_0x1664ad[_0x447f('0x76')]();_0x207da0['where'](_0x447f('0x77'),_0xd648e3['id']);_0x40de98[_0x447f('0x78')](db[_0x447f('0x79')][_0x447f('0x39')](_0x207da0[_0x447f('0x7a')](),{'type':db[_0x447f('0x79')][_0x447f('0x7b')]['SELECT']})[_0x447f('0x2a')](function(_0x2c06bc){if(_0x2c06bc[_0x447f('0x3e')]===0x1){return _0xd648e3['id'];}else{var _0x3e0639=_['every'](_[_0x447f('0x37')](_0x2c06bc,_0x447f('0x7c')),function(_0x226851){return _[_0x447f('0x7d')](_0x2f067a,_0x226851);});if(_0x3e0639){return _0xd648e3['id'];}}}));}}return BPromise[_0x447f('0x7e')](_0x40de98)[_0x447f('0x2a')](function(_0x567cfe){_0x311a73=_(_0x311a73)[_0x447f('0x7f')](_0x567cfe)['compact']()['value']();return db['OpenchannelQueue'][_0x447f('0x4e')]({'where':{'id':_0x26fdf8['params']['id']}})[_0x447f('0x2a')](function(_0x2bf6ac){return db['sequelize']['transaction'](function(_0x15c492){return _0x2bf6ac['removeTeams'](_0x26fdf8[_0x447f('0x39')][_0x447f('0x63')],{'transaction':_0x15c492})[_0x447f('0x2a')](function(){if(!_['isEmpty'](_0x311a73)){return _0x2bf6ac[_0x447f('0x80')](_0x311a73,{'transaction':_0x15c492});}})[_0x447f('0x2a')](function(){_0x311a73[_0x447f('0x81')](function(_0x404480){socket[_0x447f('0x6b')](_0x447f('0x82'),{'UserId':_0x404480,'OpenchannelQueueId':_0x2bf6ac['id']});});});});});});})['then'](respondWithStatusCode(_0x90bc94,null))[_0x447f('0x4a')](handleError(_0x90bc94,null));};exports[_0x447f('0x83')]=function(_0x131061,_0x478d24,_0x5855f5){return db['OpenchannelQueue'][_0x447f('0x4e')]({'where':{'id':_0x131061[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x478d24,null))[_0x447f('0x2a')](function(_0x598556){if(_0x598556){return _0x598556['addAgents'](_0x131061['body']['ids'],_[_0x447f('0x84')](_0x131061['body'],[_0x447f('0x63'),'id'])||{})[_0x447f('0x85')](function(_0x350b04){for(var _0x1e26ac=0x0;_0x1e26ac<_0x131061[_0x447f('0x50')][_0x447f('0x63')][_0x447f('0x3e')];_0x1e26ac+=0x1){socket[_0x447f('0x6b')](_0x447f('0x6c'),{'UserId':Number(_0x131061['body'][_0x447f('0x63')][_0x1e26ac]),'OpenchannelQueueId':Number(_0x131061[_0x447f('0x4c')]['id'])});}return _0x350b04;});}})[_0x447f('0x2a')](respondWithResult(_0x478d24,null))[_0x447f('0x4a')](handleError(_0x478d24,null));};exports['removeAgents']=function(_0x333933,_0x4a2fff,_0xb172d3){return db[_0x447f('0x47')][_0x447f('0x4e')]({'where':{'id':_0x333933[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x4a2fff,null))['then'](function(_0xba5136){if(_0xba5136){return _0xba5136[_0x447f('0x80')](_0x333933['query']['ids'])[_0x447f('0x2a')](function(){if(_['isArray'](_0x333933[_0x447f('0x39')][_0x447f('0x63')])){for(var _0x35a2a3=0x0;_0x35a2a3<_0x333933[_0x447f('0x39')][_0x447f('0x63')][_0x447f('0x3e')];_0x35a2a3+=0x1){socket['emit'](_0x447f('0x82'),{'UserId':Number(_0x333933['query'][_0x447f('0x63')][_0x35a2a3]),'OpenchannelQueueId':Number(_0x333933[_0x447f('0x4c')]['id'])});}}else{socket[_0x447f('0x6b')](_0x447f('0x82'),{'UserId':Number(_0x333933[_0x447f('0x39')][_0x447f('0x63')]),'OpenchannelQueueId':Number(_0x333933[_0x447f('0x4c')]['id'])});}});}})[_0x447f('0x2a')](respondWithStatusCode(_0x4a2fff,null))[_0x447f('0x4a')](handleError(_0x4a2fff,null));};exports[_0x447f('0x86')]=function(_0x2caebe,_0x415838,_0xbefb2e){var _0x263380={};var _0x5f0ef6={};var _0xa99620;var _0x1d010a;return db[_0x447f('0x47')][_0x447f('0x55')]({'where':{'id':_0x2caebe[_0x447f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x415838,null))['then'](function(_0x5478cf){if(_0x5478cf){_0xa99620=_0x5478cf;_0x5f0ef6['model']=_[_0x447f('0x38')](db[_0x447f('0x58')]['rawAttributes']);_0x5f0ef6[_0x447f('0x39')]=_[_0x447f('0x38')](_0x2caebe[_0x447f('0x39')]);_0x5f0ef6[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x5f0ef6[_0x447f('0x36')],_0x5f0ef6['query']);_0x263380['attributes']=_[_0x447f('0x3b')](_0x5f0ef6['model'],qs[_0x447f('0x3d')](_0x2caebe[_0x447f('0x39')][_0x447f('0x3d')]));_0x263380['attributes']=_0x263380[_0x447f('0x3c')]['length']?_0x263380[_0x447f('0x3c')]:_0x5f0ef6[_0x447f('0x36')];_0x263380[_0x447f('0x87')]=qs[_0x447f('0x41')](_0x2caebe[_0x447f('0x39')][_0x447f('0x41')]);_0x263380[_0x447f('0x42')]=qs[_0x447f('0x3a')](_[_0x447f('0x43')](_0x2caebe['query'],_0x5f0ef6[_0x447f('0x3a')]));if(_0x2caebe[_0x447f('0x39')][_0x447f('0x44')]){_0x263380[_0x447f('0x42')]=_['merge'](_0x263380[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0x263380['attributes'],function(_0x1998c4){var _0xbebcc6={};_0xbebcc6[_0x1998c4]={'$like':'%'+_0x2caebe[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0xbebcc6;})});}_0x263380=_[_0x447f('0x45')]({},_0x263380,_0x2caebe[_0x447f('0x46')]);return _0xa99620['getAgents'](_0x263380);}})[_0x447f('0x2a')](function(_0x41db79){if(_0x41db79){_0x1d010a=_0x41db79['length'];if(!_0x2caebe[_0x447f('0x39')][_0x447f('0x3f')]('nolimit')){_0x263380[_0x447f('0x22')]=qs['limit'](_0x2caebe['query'][_0x447f('0x22')]);_0x263380[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x2caebe[_0x447f('0x39')]['offset']);}return _0xa99620[_0x447f('0x86')](_0x263380);}})['then'](function(_0x3125a3){if(_0x3125a3){return _0x3125a3?{'count':_0x1d010a,'rows':_0x3125a3}:null;}})[_0x447f('0x2a')](respondWithResult(_0x415838,null))['catch'](handleError(_0x415838,null));};
\ No newline at end of file
+var _0x6249=['UserId','agent','openchannelPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','addTeams','ids','Agents','online','flatMap','transaction','each','findOrCreate','forEach','removeTeams','Team','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','isEmpty','emit','userOpenchannelQueue:remove','addAgents','omit','spread','userOpenchannelQueue:save','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','status','limit','undefined','offset','count','set','Content-Range','reject','save','update','destroy','then','get','OpenchannelQueues','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','OpenchannelQueue','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','merge','find','create','body','user','role','UserProfileSection','userProfileId','describe','getMembers','findOne','UserOpenchannelQueue','hasOwnProperty','order','pick','OpenchannelQueueId','User','findAndCountAll'];(function(_0x20663d,_0x3e032f){var _0x1ecf96=function(_0x306a8a){while(--_0x306a8a){_0x20663d['push'](_0x20663d['shift']());}};_0x1ecf96(++_0x3e032f);}(_0x6249,0xc0));var _0x9624=function(_0x3bc964,_0x332eff){_0x3bc964=_0x3bc964-0x0;var _0x1fbde9=_0x6249[_0x3bc964];return _0x1fbde9;};'use strict';var emlformat=require(_0x9624('0x0'));var rimraf=require(_0x9624('0x1'));var zipdir=require(_0x9624('0x2'));var jsonpatch=require(_0x9624('0x3'));var rp=require('request-promise');var moment=require(_0x9624('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9624('0x5'));var util=require(_0x9624('0x6'));var path=require(_0x9624('0x7'));var sox=require(_0x9624('0x8'));var csv=require(_0x9624('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9624('0xa'));var _=require(_0x9624('0xb'));var squel=require('squel');var crypto=require(_0x9624('0xc'));var jsforce=require(_0x9624('0xd'));var deskjs=require(_0x9624('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9624('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9624('0x10'));var as=require(_0x9624('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9624('0x12'))(_0x9624('0x13'));var utils=require(_0x9624('0x14'));var config=require(_0x9624('0x15'));var licenseUtil=require(_0x9624('0x16'));var db=require(_0x9624('0x17'))['db'];config[_0x9624('0x18')]=_[_0x9624('0x19')](config[_0x9624('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x9624('0x1a'))(new Redis(config[_0x9624('0x18')]));require('./openchannelQueue.socket')[_0x9624('0x1b')](socket);function respondWithStatusCode(_0x346a9b,_0x51a886){_0x51a886=_0x51a886||0xcc;return function(_0x49a594){if(_0x49a594){return _0x346a9b['sendStatus'](_0x51a886);}return _0x346a9b[_0x9624('0x1c')](_0x51a886)['end']();};}function respondWithResult(_0x5639c4,_0x232f47){_0x232f47=_0x232f47||0xc8;return function(_0x448d83){if(_0x448d83){return _0x5639c4[_0x9624('0x1c')](_0x232f47)['json'](_0x448d83);}};}function respondWithFilteredResult(_0x39e810,_0xc1cf0b){return function(_0x436784){if(_0x436784){var _0x46da77=typeof _0xc1cf0b['offset']==='undefined'&&typeof _0xc1cf0b[_0x9624('0x1d')]===_0x9624('0x1e');var _0x37b72c=_0x436784['count'];var _0x31ebb4=_0x46da77?0x0:_0xc1cf0b[_0x9624('0x1f')];var _0x44b77f=_0x46da77?_0x436784[_0x9624('0x20')]:_0xc1cf0b['offset']+_0xc1cf0b[_0x9624('0x1d')];var _0x5e9a55;if(_0x44b77f>=_0x37b72c){_0x44b77f=_0x37b72c;_0x5e9a55=0xc8;}else{_0x5e9a55=0xce;}_0x39e810['status'](_0x5e9a55);return _0x39e810[_0x9624('0x21')](_0x9624('0x22'),_0x31ebb4+'-'+_0x44b77f+'/'+_0x37b72c)['json'](_0x436784);}return null;};}function patchUpdates(_0x20fb66){return function(_0x266964){try{jsonpatch['apply'](_0x266964,_0x20fb66,!![]);}catch(_0x43abf7){return BPromise[_0x9624('0x23')](_0x43abf7);}return _0x266964[_0x9624('0x24')]();};}function saveUpdates(_0x1e8a0f,_0x17a83b){return function(_0xfde26d){if(_0xfde26d){return _0xfde26d[_0x9624('0x25')](_0x1e8a0f)['then'](function(_0x55a8eb){return _0x55a8eb;});}return null;};}function removeEntity(_0x67568b,_0x5cacff){return function(_0x3febd9){if(_0x3febd9){return _0x3febd9[_0x9624('0x26')]()[_0x9624('0x27')](function(){var _0x5a1e97=_0x3febd9[_0x9624('0x28')]({'plain':!![]});var _0x508d07=_0x9624('0x29');return db[_0x9624('0x2a')][_0x9624('0x26')]({'where':{'type':_0x508d07,'resourceId':_0x5a1e97['id']}})['then'](function(){return _0x3febd9;});})[_0x9624('0x27')](function(){_0x67568b[_0x9624('0x1c')](0xcc)[_0x9624('0x2b')]();});}};}function handleEntityNotFound(_0x2f48aa,_0x45e401){return function(_0x325471){if(!_0x325471){_0x2f48aa[_0x9624('0x2c')](0x194);}return _0x325471;};}function handleError(_0x33a988,_0x1866b5){_0x1866b5=_0x1866b5||0x1f4;return function(_0x490cd0){logger[_0x9624('0x2d')](_0x490cd0[_0x9624('0x2e')]);if(_0x490cd0[_0x9624('0x2f')]){delete _0x490cd0[_0x9624('0x2f')];}_0x33a988[_0x9624('0x1c')](_0x1866b5)[_0x9624('0x30')](_0x490cd0);};}exports[_0x9624('0x31')]=function(_0x1bb8c0,_0x2d73d6){var _0x2981ec={},_0x40e9eb={},_0x54e76b={'count':0x0,'rows':[]};var _0x5163d4=_[_0x9624('0x32')](db[_0x9624('0x33')]['rawAttributes'],function(_0x1ebb0c){return{'name':_0x1ebb0c['fieldName'],'type':_0x1ebb0c['type'][_0x9624('0x34')]};});_0x40e9eb[_0x9624('0x35')]=_[_0x9624('0x32')](_0x5163d4,_0x9624('0x2f'));_0x40e9eb[_0x9624('0x36')]=_[_0x9624('0x37')](_0x1bb8c0[_0x9624('0x36')]);_0x40e9eb['filters']=_[_0x9624('0x38')](_0x40e9eb[_0x9624('0x35')],_0x40e9eb[_0x9624('0x36')]);_0x2981ec[_0x9624('0x39')]=_['intersection'](_0x40e9eb[_0x9624('0x35')],qs[_0x9624('0x3a')](_0x1bb8c0[_0x9624('0x36')][_0x9624('0x3a')]));_0x2981ec[_0x9624('0x39')]=_0x2981ec[_0x9624('0x39')][_0x9624('0x3b')]?_0x2981ec[_0x9624('0x39')]:_0x40e9eb[_0x9624('0x35')];if(!_0x1bb8c0[_0x9624('0x36')]['hasOwnProperty'](_0x9624('0x3c'))){_0x2981ec[_0x9624('0x1d')]=qs[_0x9624('0x1d')](_0x1bb8c0[_0x9624('0x36')][_0x9624('0x1d')]);_0x2981ec['offset']=qs[_0x9624('0x1f')](_0x1bb8c0[_0x9624('0x36')]['offset']);}_0x2981ec['order']=qs[_0x9624('0x3d')](_0x1bb8c0[_0x9624('0x36')][_0x9624('0x3d')]);_0x2981ec[_0x9624('0x3e')]=qs[_0x9624('0x3f')](_['pick'](_0x1bb8c0[_0x9624('0x36')],_0x40e9eb['filters']),_0x5163d4);if(_0x1bb8c0[_0x9624('0x36')][_0x9624('0x40')]){_0x2981ec[_0x9624('0x3e')]=_['merge'](_0x2981ec['where'],{'$or':_[_0x9624('0x32')](_0x5163d4,function(_0x544cda){if(_0x544cda[_0x9624('0x41')]!==_0x9624('0x42')){var _0x233bd1={};_0x233bd1[_0x544cda[_0x9624('0x2f')]]={'$like':'%'+_0x1bb8c0[_0x9624('0x36')][_0x9624('0x40')]+'%'};return _0x233bd1;}})});}_0x2981ec=_['merge']({},_0x2981ec,_0x1bb8c0[_0x9624('0x43')]);var _0x2db26e={'where':_0x2981ec[_0x9624('0x3e')]};return db[_0x9624('0x33')][_0x9624('0x20')](_0x2db26e)[_0x9624('0x27')](function(_0x17da71){_0x54e76b[_0x9624('0x20')]=_0x17da71;if(_0x1bb8c0['query'][_0x9624('0x44')]){_0x2981ec['include']=[{'all':!![]}];}return db[_0x9624('0x33')][_0x9624('0x45')](_0x2981ec);})[_0x9624('0x27')](function(_0x56b68b){_0x54e76b[_0x9624('0x46')]=_0x56b68b;return _0x54e76b;})[_0x9624('0x27')](respondWithFilteredResult(_0x2d73d6,_0x2981ec))[_0x9624('0x47')](handleError(_0x2d73d6,null));};exports[_0x9624('0x48')]=function(_0x1e163a,_0xc86ff5){var _0x1d5e98={'raw':!![],'where':{'id':_0x1e163a[_0x9624('0x49')]['id']}},_0x16600c={};_0x16600c['model']=_[_0x9624('0x37')](db[_0x9624('0x33')][_0x9624('0x4a')]);_0x16600c[_0x9624('0x36')]=_['keys'](_0x1e163a[_0x9624('0x36')]);_0x16600c['filters']=_[_0x9624('0x38')](_0x16600c[_0x9624('0x35')],_0x16600c[_0x9624('0x36')]);_0x1d5e98[_0x9624('0x39')]=_[_0x9624('0x38')](_0x16600c[_0x9624('0x35')],qs[_0x9624('0x3a')](_0x1e163a[_0x9624('0x36')][_0x9624('0x3a')]));_0x1d5e98['attributes']=_0x1d5e98[_0x9624('0x39')]['length']?_0x1d5e98[_0x9624('0x39')]:_0x16600c[_0x9624('0x35')];if(_0x1e163a[_0x9624('0x36')][_0x9624('0x44')]){_0x1d5e98[_0x9624('0x4b')]=[{'all':!![]}];}_0x1d5e98=_[_0x9624('0x4c')]({},_0x1d5e98,_0x1e163a[_0x9624('0x43')]);return db[_0x9624('0x33')][_0x9624('0x4d')](_0x1d5e98)[_0x9624('0x27')](handleEntityNotFound(_0xc86ff5,null))[_0x9624('0x27')](respondWithResult(_0xc86ff5,null))[_0x9624('0x47')](handleError(_0xc86ff5,null));};exports['create']=function(_0x10e52b,_0x2b7459){return db['OpenchannelQueue'][_0x9624('0x4e')](_0x10e52b[_0x9624('0x4f')],{})[_0x9624('0x27')](function(_0x279a6f){var _0x51427e=_0x10e52b[_0x9624('0x50')][_0x9624('0x28')]({'plain':!![]});if(!_0x51427e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x51427e[_0x9624('0x51')]==='user'){var _0x4ef1ca=_0x279a6f['get']({'plain':!![]});var _0x38ca2e=_0x9624('0x29');return db[_0x9624('0x52')][_0x9624('0x4d')]({'where':{'name':_0x38ca2e,'userProfileId':_0x51427e[_0x9624('0x53')]},'raw':!![]})[_0x9624('0x27')](function(_0x54b188){if(_0x54b188&&_0x54b188['autoAssociation']===0x0){return db[_0x9624('0x2a')][_0x9624('0x4e')]({'name':_0x4ef1ca[_0x9624('0x2f')],'resourceId':_0x4ef1ca['id'],'type':_0x54b188[_0x9624('0x2f')],'sectionId':_0x54b188['id']},{})['then'](function(){return _0x279a6f;});}else{return _0x279a6f;}})[_0x9624('0x47')](function(_0x545125){logger[_0x9624('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x545125);throw _0x545125;});}return _0x279a6f;})[_0x9624('0x27')](respondWithResult(_0x2b7459,0xc9))[_0x9624('0x47')](handleError(_0x2b7459,null));};exports[_0x9624('0x25')]=function(_0x1d2a54,_0x276f18){if(_0x1d2a54[_0x9624('0x4f')]['id']){delete _0x1d2a54['body']['id'];}return db[_0x9624('0x33')][_0x9624('0x4d')]({'where':{'id':_0x1d2a54[_0x9624('0x49')]['id']}})['then'](handleEntityNotFound(_0x276f18,null))['then'](saveUpdates(_0x1d2a54[_0x9624('0x4f')],null))[_0x9624('0x27')](respondWithResult(_0x276f18,null))['catch'](handleError(_0x276f18,null));};exports[_0x9624('0x26')]=function(_0x52462e,_0x33baa5){return db[_0x9624('0x33')][_0x9624('0x4d')]({'where':{'id':_0x52462e[_0x9624('0x49')]['id']}})[_0x9624('0x27')](handleEntityNotFound(_0x33baa5,null))[_0x9624('0x27')](removeEntity(_0x33baa5,null))[_0x9624('0x47')](handleError(_0x33baa5,null));};exports[_0x9624('0x54')]=function(_0x360e41,_0x100532){return db[_0x9624('0x33')][_0x9624('0x54')]()[_0x9624('0x27')](respondWithResult(_0x100532,null))[_0x9624('0x47')](handleError(_0x100532,null));};exports[_0x9624('0x55')]=function(_0x237e9c,_0x42f137,_0x4307f0){var _0xc0680f={'raw':!![],'where':{}},_0xb1ba8c={},_0x68b4f3;return db[_0x9624('0x33')][_0x9624('0x56')]({'where':{'id':_0x237e9c[_0x9624('0x49')]['id']}})[_0x9624('0x27')](handleEntityNotFound(_0x42f137,null))[_0x9624('0x27')](function(_0x3c6a86){if(_0x3c6a86){_0x68b4f3=_0x3c6a86['get']({'plain':!![]});_0xb1ba8c[_0x9624('0x35')]=_['keys'](db[_0x9624('0x57')][_0x9624('0x4a')]);_0xb1ba8c[_0x9624('0x36')]=_[_0x9624('0x37')](_0x237e9c[_0x9624('0x36')]);_0xb1ba8c[_0x9624('0x3f')]=_[_0x9624('0x38')](_0xb1ba8c[_0x9624('0x35')],_0xb1ba8c['query']);_0xc0680f[_0x9624('0x39')]=_[_0x9624('0x38')](_0xb1ba8c[_0x9624('0x35')],qs[_0x9624('0x3a')](_0x237e9c[_0x9624('0x36')][_0x9624('0x3a')]));_0xc0680f[_0x9624('0x39')]=_0xc0680f['attributes']['length']?_0xc0680f[_0x9624('0x39')]:_0xb1ba8c[_0x9624('0x35')];if(!_0x237e9c[_0x9624('0x36')][_0x9624('0x58')](_0x9624('0x3c'))){_0xc0680f[_0x9624('0x1d')]=qs[_0x9624('0x1d')](_0x237e9c['query'][_0x9624('0x1d')]);_0xc0680f[_0x9624('0x1f')]=qs[_0x9624('0x1f')](_0x237e9c['query']['offset']);}_0xc0680f[_0x9624('0x59')]=qs['sort'](_0x237e9c['query'][_0x9624('0x3d')]);_0xc0680f['where']=qs[_0x9624('0x3f')](_[_0x9624('0x5a')](_0x237e9c[_0x9624('0x36')],_0xb1ba8c[_0x9624('0x3f')]));_0xc0680f[_0x9624('0x3e')][_0x9624('0x5b')]=_0x3c6a86['id'];if(_0x237e9c[_0x9624('0x36')][_0x9624('0x40')]){_0xc0680f[_0x9624('0x3e')]=_[_0x9624('0x4c')](_0xc0680f[_0x9624('0x3e')],{'$or':_[_0x9624('0x32')](_0xc0680f[_0x9624('0x39')],function(_0x1acebb){var _0x380091={};_0x380091[_0x1acebb]={'$like':'%'+_0x237e9c[_0x9624('0x36')]['filter']+'%'};return _0x380091;})});}_0xc0680f=_[_0x9624('0x4c')]({},_0xc0680f,_0x237e9c[_0x9624('0x43')]);return db[_0x9624('0x57')]['findAll'](_0xc0680f);}})[_0x9624('0x27')](function(_0x12774c){if(_0x12774c){return db[_0x9624('0x5c')][_0x9624('0x5d')]({'where':{'id':_[_0x9624('0x32')](_0x12774c,_0x9624('0x5e')),'role':_0x9624('0x5f')},'attributes':['id',_0x9624('0x2f'),_0x9624('0x60'),_0x9624('0x61'),'createdAt']});}})[_0x9624('0x27')](function(_0x4a8285){if(_0x4a8285){return{'count':_0x4a8285[_0x9624('0x20')],'rows':_[_0x9624('0x32')](_0x4a8285[_0x9624('0x46')],function(_0x57e3b0){return{'membername':_0x57e3b0[_0x9624('0x2f')],'UserId':_0x57e3b0['id'],'queue_name':_0x68b4f3['name'],'OpenchannelQueueId':_0x68b4f3['id'],'interface':util[_0x9624('0x62')](_0x9624('0x63'),_0x9624('0x64'),_0x57e3b0['name']),'penalty':0x0,'paused':_0x57e3b0[_0x9624('0x60')],'createdAt':_0x57e3b0[_0x9624('0x65')],'updatedAt':_0x57e3b0[_0x9624('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9624('0x27')](respondWithFilteredResult(_0x42f137,_0xc0680f))[_0x9624('0x47')](handleError(_0x42f137,null));};exports[_0x9624('0x66')]=function(_0x13904a,_0xaef593,_0x2828b6){var _0x9ee2ef={};var _0x80a00a={};var _0x4bb0b8;var _0x13bb4f;return db[_0x9624('0x33')][_0x9624('0x56')]({'where':{'id':_0x13904a[_0x9624('0x49')]['id']}})['then'](handleEntityNotFound(_0xaef593,null))['then'](function(_0x1d76f2){if(_0x1d76f2){_0x4bb0b8=_0x1d76f2;_0x80a00a[_0x9624('0x35')]=_['keys'](db['Team'][_0x9624('0x4a')]);_0x80a00a['query']=_[_0x9624('0x37')](_0x13904a[_0x9624('0x36')]);_0x80a00a[_0x9624('0x3f')]=_[_0x9624('0x38')](_0x80a00a['model'],_0x80a00a[_0x9624('0x36')]);_0x9ee2ef['attributes']=_[_0x9624('0x38')](_0x80a00a['model'],qs[_0x9624('0x3a')](_0x13904a[_0x9624('0x36')]['fields']));_0x9ee2ef[_0x9624('0x39')]=_0x9ee2ef[_0x9624('0x39')][_0x9624('0x3b')]?_0x9ee2ef[_0x9624('0x39')]:_0x80a00a[_0x9624('0x35')];_0x9ee2ef[_0x9624('0x59')]=qs[_0x9624('0x3d')](_0x13904a[_0x9624('0x36')][_0x9624('0x3d')]);_0x9ee2ef[_0x9624('0x3e')]=qs['filters'](_[_0x9624('0x5a')](_0x13904a[_0x9624('0x36')],_0x80a00a['filters']));if(_0x13904a['query'][_0x9624('0x40')]){_0x9ee2ef[_0x9624('0x3e')]=_[_0x9624('0x4c')](_0x9ee2ef[_0x9624('0x3e')],{'$or':_[_0x9624('0x32')](_0x9ee2ef[_0x9624('0x39')],function(_0x370d32){var _0x1efbef={};_0x1efbef[_0x370d32]={'$like':'%'+_0x13904a[_0x9624('0x36')][_0x9624('0x40')]+'%'};return _0x1efbef;})});}_0x9ee2ef=_['merge']({},_0x9ee2ef,_0x13904a[_0x9624('0x43')]);return _0x4bb0b8['getTeams'](_0x9ee2ef);}})[_0x9624('0x27')](function(_0x56737b){if(_0x56737b){_0x13bb4f=_0x56737b[_0x9624('0x3b')];if(!_0x13904a[_0x9624('0x36')]['hasOwnProperty']('nolimit')){_0x9ee2ef[_0x9624('0x1d')]=qs[_0x9624('0x1d')](_0x13904a['query'][_0x9624('0x1d')]);_0x9ee2ef[_0x9624('0x1f')]=qs['offset'](_0x13904a['query'][_0x9624('0x1f')]);}return _0x4bb0b8[_0x9624('0x66')](_0x9ee2ef);}})[_0x9624('0x27')](function(_0x41dd99){if(_0x41dd99){return _0x41dd99?{'count':_0x13bb4f,'rows':_0x41dd99}:null;}})[_0x9624('0x27')](respondWithResult(_0xaef593,null))[_0x9624('0x47')](handleError(_0xaef593,null));};exports[_0x9624('0x67')]=function(_0x5a3548,_0x373138,_0x37eabf){var _0x4e6832=_0x5a3548['body'][_0x9624('0x68')];return db['Team'][_0x9624('0x45')]({'where':{'id':_0x4e6832},'attributes':['id'],'include':[{'model':db[_0x9624('0x5c')],'as':_0x9624('0x69'),'attributes':['id','name',_0x9624('0x6a'),'voicePause','interface'],'raw':!![]}]})[_0x9624('0x27')](function(_0x32772f){if(_0x32772f){var _0x861989=_[_0x9624('0x6b')](_0x32772f,function(_0x38574c){var _0x2959b1=_0x38574c['get']({'plain':!![]});return _0x2959b1[_0x9624('0x69')];});return db[_0x9624('0x33')]['find']({'where':{'id':_0x5a3548[_0x9624('0x49')]['id']}})[_0x9624('0x27')](function(_0x4db7be){return db['sequelize'][_0x9624('0x6c')](function(_0x376320){return _0x4db7be[_0x9624('0x67')](_0x4e6832,{'transaction':_0x376320})['then'](function(){return BPromise[_0x9624('0x6d')](_0x861989,function(_0x4b6f6c){return db['UserOpenchannelQueue'][_0x9624('0x6e')]({'where':{'UserId':_0x4b6f6c['id'],'OpenchannelQueueId':_0x5a3548[_0x9624('0x49')]['id']},'transaction':_0x376320});});})[_0x9624('0x27')](function(){_0x861989[_0x9624('0x6f')](function(_0x40a261){socket['emit']('userOpenchannelQueue:save',{'UserId':_0x40a261['id'],'OpenchannelQueueId':_0x4db7be['id']});});});});});}})[_0x9624('0x27')](respondWithStatusCode(_0x373138,null))[_0x9624('0x47')](handleError(_0x373138,null));};exports[_0x9624('0x70')]=function(_0x2913a0,_0x85f592,_0x33fe73){return db[_0x9624('0x71')]['findAll']({'where':{'id':_0x2913a0[_0x9624('0x36')][_0x9624('0x68')]},'attributes':['id'],'include':[{'model':db[_0x9624('0x5c')],'as':_0x9624('0x69'),'attributes':['id'],'raw':!![]}]})[_0x9624('0x27')](handleEntityNotFound(_0x85f592,null))[_0x9624('0x27')](function(_0x58f5f2){var _0x5a6606=_[_0x9624('0x32')](_0x58f5f2,'id');var _0x1096c9=[];var _0x242ac3=[];var _0x4bb6c1=squel[_0x9624('0x72')]();_0x4bb6c1[_0x9624('0x73')](_0x9624('0x74'))[_0x9624('0x75')](_0x9624('0x76'),'tq')[_0x9624('0x77')]('user_has_teams','ut',_0x9624('0x78'))[_0x9624('0x3e')](_0x9624('0x79'),_0x2913a0[_0x9624('0x49')]['id']);for(var _0x44c298=0x0;_0x44c298<_0x58f5f2[_0x9624('0x3b')];_0x44c298+=0x1){let _0x314552=_0x58f5f2[_0x44c298];for(var _0x48b3dc=0x0;_0x48b3dc<_0x314552[_0x9624('0x69')][_0x9624('0x3b')];_0x48b3dc+=0x1){let _0x354437=_0x314552['Agents'][_0x48b3dc];var _0x5f4bcd=_0x4bb6c1['clone']();_0x5f4bcd['where'](_0x9624('0x7a'),_0x354437['id']);_0x242ac3[_0x9624('0x7b')](db[_0x9624('0x7c')][_0x9624('0x36')](_0x5f4bcd[_0x9624('0x7d')](),{'type':db[_0x9624('0x7c')][_0x9624('0x7e')][_0x9624('0x7f')]})[_0x9624('0x27')](function(_0x4d639b){if(_0x4d639b[_0x9624('0x3b')]===0x1){return _0x354437['id'];}else{var _0x3a8d83=_[_0x9624('0x80')](_[_0x9624('0x32')](_0x4d639b,_0x9624('0x81')),function(_0x2c6f97){return _[_0x9624('0x82')](_0x5a6606,_0x2c6f97);});if(_0x3a8d83){return _0x354437['id'];}}}));}}return BPromise[_0x9624('0x83')](_0x242ac3)[_0x9624('0x27')](function(_0x4706d6){_0x1096c9=_(_0x1096c9)[_0x9624('0x84')](_0x4706d6)['compact']()[_0x9624('0x85')]();return db[_0x9624('0x33')][_0x9624('0x4d')]({'where':{'id':_0x2913a0[_0x9624('0x49')]['id']}})[_0x9624('0x27')](function(_0x23de13){return db[_0x9624('0x7c')][_0x9624('0x6c')](function(_0x15e681){return _0x23de13[_0x9624('0x70')](_0x2913a0[_0x9624('0x36')]['ids'],{'transaction':_0x15e681})[_0x9624('0x27')](function(){if(!_[_0x9624('0x86')](_0x1096c9)){return _0x23de13['removeAgents'](_0x1096c9,{'transaction':_0x15e681});}})[_0x9624('0x27')](function(){_0x1096c9[_0x9624('0x6f')](function(_0x44127a){socket[_0x9624('0x87')](_0x9624('0x88'),{'UserId':_0x44127a,'OpenchannelQueueId':_0x23de13['id']});});});});});});})[_0x9624('0x27')](respondWithStatusCode(_0x85f592,null))[_0x9624('0x47')](handleError(_0x85f592,null));};exports[_0x9624('0x89')]=function(_0x2dede3,_0x4c8d6b,_0x421c2c){return db['OpenchannelQueue'][_0x9624('0x4d')]({'where':{'id':_0x2dede3[_0x9624('0x49')]['id']}})[_0x9624('0x27')](handleEntityNotFound(_0x4c8d6b,null))[_0x9624('0x27')](function(_0x543126){if(_0x543126){return _0x543126[_0x9624('0x89')](_0x2dede3[_0x9624('0x4f')][_0x9624('0x68')],_[_0x9624('0x8a')](_0x2dede3[_0x9624('0x4f')],[_0x9624('0x68'),'id'])||{})[_0x9624('0x8b')](function(_0x433d8b){for(var _0x525758=0x0;_0x525758<_0x2dede3[_0x9624('0x4f')][_0x9624('0x68')][_0x9624('0x3b')];_0x525758+=0x1){socket[_0x9624('0x87')](_0x9624('0x8c'),{'UserId':Number(_0x2dede3['body'][_0x9624('0x68')][_0x525758]),'OpenchannelQueueId':Number(_0x2dede3['params']['id'])});}return _0x433d8b;});}})[_0x9624('0x27')](respondWithResult(_0x4c8d6b,null))[_0x9624('0x47')](handleError(_0x4c8d6b,null));};exports[_0x9624('0x8d')]=function(_0x5f52e6,_0x196276,_0x1f8deb){return db['OpenchannelQueue'][_0x9624('0x4d')]({'where':{'id':_0x5f52e6[_0x9624('0x49')]['id']}})['then'](handleEntityNotFound(_0x196276,null))[_0x9624('0x27')](function(_0x3e20c3){if(_0x3e20c3){return _0x3e20c3[_0x9624('0x8d')](_0x5f52e6['query'][_0x9624('0x68')])[_0x9624('0x27')](function(){if(_['isArray'](_0x5f52e6[_0x9624('0x36')][_0x9624('0x68')])){for(var _0x4f2b14=0x0;_0x4f2b14<_0x5f52e6[_0x9624('0x36')][_0x9624('0x68')][_0x9624('0x3b')];_0x4f2b14+=0x1){socket[_0x9624('0x87')]('userOpenchannelQueue:remove',{'UserId':Number(_0x5f52e6[_0x9624('0x36')][_0x9624('0x68')][_0x4f2b14]),'OpenchannelQueueId':Number(_0x5f52e6[_0x9624('0x49')]['id'])});}}else{socket['emit'](_0x9624('0x88'),{'UserId':Number(_0x5f52e6['query'][_0x9624('0x68')]),'OpenchannelQueueId':Number(_0x5f52e6[_0x9624('0x49')]['id'])});}});}})[_0x9624('0x27')](respondWithStatusCode(_0x196276,null))['catch'](handleError(_0x196276,null));};exports[_0x9624('0x8e')]=function(_0x1cc22b,_0x3a4085,_0x40f814){var _0x52315a={};var _0x4f2c3f={};var _0xf1c67d;var _0x2391e4;return db[_0x9624('0x33')]['findOne']({'where':{'id':_0x1cc22b[_0x9624('0x49')]['id']}})[_0x9624('0x27')](handleEntityNotFound(_0x3a4085,null))[_0x9624('0x27')](function(_0x3ad714){if(_0x3ad714){_0xf1c67d=_0x3ad714;_0x4f2c3f[_0x9624('0x35')]=_['keys'](db[_0x9624('0x5c')][_0x9624('0x4a')]);_0x4f2c3f['query']=_['keys'](_0x1cc22b['query']);_0x4f2c3f[_0x9624('0x3f')]=_[_0x9624('0x38')](_0x4f2c3f[_0x9624('0x35')],_0x4f2c3f[_0x9624('0x36')]);_0x52315a['attributes']=_[_0x9624('0x38')](_0x4f2c3f[_0x9624('0x35')],qs[_0x9624('0x3a')](_0x1cc22b['query'][_0x9624('0x3a')]));_0x52315a['attributes']=_0x52315a[_0x9624('0x39')][_0x9624('0x3b')]?_0x52315a[_0x9624('0x39')]:_0x4f2c3f[_0x9624('0x35')];_0x52315a[_0x9624('0x59')]=qs['sort'](_0x1cc22b[_0x9624('0x36')][_0x9624('0x3d')]);_0x52315a['where']=qs[_0x9624('0x3f')](_[_0x9624('0x5a')](_0x1cc22b[_0x9624('0x36')],_0x4f2c3f[_0x9624('0x3f')]));if(_0x1cc22b[_0x9624('0x36')]['filter']){_0x52315a[_0x9624('0x3e')]=_[_0x9624('0x4c')](_0x52315a[_0x9624('0x3e')],{'$or':_[_0x9624('0x32')](_0x52315a[_0x9624('0x39')],function(_0x28c9c7){var _0x4feae7={};_0x4feae7[_0x28c9c7]={'$like':'%'+_0x1cc22b[_0x9624('0x36')]['filter']+'%'};return _0x4feae7;})});}_0x52315a=_['merge']({},_0x52315a,_0x1cc22b['options']);return _0xf1c67d[_0x9624('0x8e')](_0x52315a);}})['then'](function(_0x31dbf5){if(_0x31dbf5){_0x2391e4=_0x31dbf5[_0x9624('0x3b')];if(!_0x1cc22b[_0x9624('0x36')]['hasOwnProperty']('nolimit')){_0x52315a['limit']=qs[_0x9624('0x1d')](_0x1cc22b[_0x9624('0x36')][_0x9624('0x1d')]);_0x52315a[_0x9624('0x1f')]=qs[_0x9624('0x1f')](_0x1cc22b[_0x9624('0x36')]['offset']);}return _0xf1c67d[_0x9624('0x8e')](_0x52315a);}})[_0x9624('0x27')](function(_0x5c639b){if(_0x5c639b){return _0x5c639b?{'count':_0x2391e4,'rows':_0x5c639b}:null;}})[_0x9624('0x27')](respondWithResult(_0x3a4085,null))[_0x9624('0x47')](handleError(_0x3a4085,null));};
\ No newline at end of file
index da25463..2527024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4092=['hasOwnProperty','hook','exports','events','../../mysqldb','update','remove','emit'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4092,0x193));var _0x2409=function(_0x37c455,_0xbe5637){_0x37c455=_0x37c455-0x0;var _0x3ff4a0=_0x4092[_0x37c455];return _0x3ff4a0;};'use strict';var EventEmitter=require(_0x2409('0x0'));var OpenchannelQueue=require(_0x2409('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2409('0x2'),'afterDestroy':_0x2409('0x3')};function emitEvent(_0x42faaf){return function(_0x55f59b,_0x1732eb,_0x4d9d2d){OpenchannelQueueEvents['emit'](_0x42faaf+':'+_0x55f59b['id'],_0x55f59b);OpenchannelQueueEvents[_0x2409('0x4')](_0x42faaf,_0x55f59b);_0x4d9d2d(null);};}for(var e in events){if(events[_0x2409('0x5')](e)){var event=events[e];OpenchannelQueue[_0x2409('0x6')](e,emitEvent(event));}}module[_0x2409('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x7aba=['events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x1155c1,_0x2509f7){var _0x13a7f1=function(_0x1be1c7){while(--_0x1be1c7){_0x1155c1['push'](_0x1155c1['shift']());}};_0x13a7f1(++_0x2509f7);}(_0x7aba,0x171));var _0xa7ab=function(_0x97ed06,_0x3c4c00){_0x97ed06=_0x97ed06-0x0;var _0x8394c=_0x7aba[_0x97ed06];return _0x8394c;};'use strict';var EventEmitter=require(_0xa7ab('0x0'));var OpenchannelQueue=require(_0xa7ab('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xa7ab('0x2')](0x0);var events={'afterCreate':_0xa7ab('0x3'),'afterUpdate':_0xa7ab('0x4'),'afterDestroy':'remove'};function emitEvent(_0x894860){return function(_0x3a745f,_0x89eb4a,_0x5a3365){OpenchannelQueueEvents[_0xa7ab('0x5')](_0x894860+':'+_0x3a745f['id'],_0x3a745f);OpenchannelQueueEvents[_0xa7ab('0x5')](_0x894860,_0x3a745f);_0x5a3365(null);};}for(var e in events){if(events[_0xa7ab('0x6')](e)){var event=events[e];OpenchannelQueue[_0xa7ab('0x7')](e,emitEvent(event));}}module[_0xa7ab('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
index cc4440c..8e3e99b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cde=['bluebird','request-promise','path','rimraf','./openchannelQueue.attributes','exports','define','OpenchannelQueue','lodash','util','../../config/logger','api','moment'];(function(_0x495d54,_0x4e8a49){var _0x50215a=function(_0x1769d8){while(--_0x1769d8){_0x495d54['push'](_0x495d54['shift']());}};_0x50215a(++_0x4e8a49);}(_0x2cde,0xcb));var _0xe2cd=function(_0x5de809,_0x189684){_0x5de809=_0x5de809-0x0;var _0xeb671c=_0x2cde[_0x5de809];return _0xeb671c;};'use strict';var _=require(_0xe2cd('0x0'));var util=require(_0xe2cd('0x1'));var logger=require(_0xe2cd('0x2'))(_0xe2cd('0x3'));var moment=require(_0xe2cd('0x4'));var BPromise=require(_0xe2cd('0x5'));var rp=require(_0xe2cd('0x6'));var fs=require('fs');var path=require(_0xe2cd('0x7'));var rimraf=require(_0xe2cd('0x8'));var config=require('../../config/environment');var attributes=require(_0xe2cd('0x9'));module[_0xe2cd('0xa')]=function(_0x57b92f,_0x4d8ba4){return _0x57b92f[_0xe2cd('0xb')](_0xe2cd('0xc'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a19=['OpenchannelQueue','openchannel_queues','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define'];(function(_0x5b239c,_0x4a1667){var _0x37ca13=function(_0x8278a0){while(--_0x8278a0){_0x5b239c['push'](_0x5b239c['shift']());}};_0x37ca13(++_0x4a1667);}(_0x0a19,0xff));var _0x90a1=function(_0x3b150c,_0x2f93f8){_0x3b150c=_0x3b150c-0x0;var _0x5cd414=_0x0a19[_0x3b150c];return _0x5cd414;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x90a1('0x0'))(_0x90a1('0x1'));var moment=require(_0x90a1('0x2'));var BPromise=require(_0x90a1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x90a1('0x4'));var config=require(_0x90a1('0x5'));var attributes=require(_0x90a1('0x6'));module[_0x90a1('0x7')]=function(_0x4b13da,_0x4eeacf){return _0x4b13da[_0x90a1('0x8')](_0x90a1('0x9'),attributes,{'tableName':_0x90a1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9147cf..14a08c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c9=['find','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','limit','include','map','model','stringify','ShowOpenchannelQueue'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0xf4c9,0x14a));var _0x9f4c=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xf4c9[_0x35885a];return _0xe86249;};'use strict';var _=require('lodash');var util=require(_0x9f4c('0x0'));var moment=require(_0x9f4c('0x1'));var BPromise=require(_0x9f4c('0x2'));var rs=require(_0x9f4c('0x3'));var fs=require('fs');var Redis=require(_0x9f4c('0x4'));var db=require(_0x9f4c('0x5'))['db'];var utils=require(_0x9f4c('0x6'));var logger=require(_0x9f4c('0x7'))('rpc');var config=require(_0x9f4c('0x8'));var jayson=require(_0x9f4c('0x9'));var client=jayson[_0x9f4c('0xa')]['http']({'port':0x232a});config[_0x9f4c('0xb')]=_[_0x9f4c('0xc')](config[_0x9f4c('0xb')],{'host':_0x9f4c('0xd'),'port':0x18eb});var socket=require(_0x9f4c('0xe'))(new Redis(config[_0x9f4c('0xb')]));require('./openchannelQueue.socket')[_0x9f4c('0xf')](socket);function respondWithRpcPromise(_0x45433e,_0x24c21f,_0x56ef80){return new BPromise(function(_0x470c49,_0x7510f6){return client[_0x9f4c('0x10')](_0x45433e,_0x56ef80)[_0x9f4c('0x11')](function(_0x2bdbde){logger[_0x9f4c('0x12')](_0x9f4c('0x13'),_0x24c21f,_0x9f4c('0x14'));logger[_0x9f4c('0x15')](_0x9f4c('0x16'),_0x24c21f,'request\x20sent',JSON['stringify'](_0x2bdbde));if(_0x2bdbde[_0x9f4c('0x17')]){if(_0x2bdbde[_0x9f4c('0x17')][_0x9f4c('0x18')]===0x1f4){logger[_0x9f4c('0x17')](_0x9f4c('0x13'),_0x24c21f,_0x2bdbde['error'][_0x9f4c('0x19')]);return _0x7510f6(_0x2bdbde[_0x9f4c('0x17')]['message']);}logger[_0x9f4c('0x17')](_0x9f4c('0x13'),_0x24c21f,_0x2bdbde[_0x9f4c('0x17')][_0x9f4c('0x19')]);return _0x470c49(_0x2bdbde[_0x9f4c('0x17')][_0x9f4c('0x19')]);}else{logger['info'](_0x9f4c('0x13'),_0x24c21f,'request\x20sent');_0x470c49(_0x2bdbde['result']['message']);}})[_0x9f4c('0x1a')](function(_0x38f1b1){logger[_0x9f4c('0x17')](_0x9f4c('0x13'),_0x24c21f,_0x38f1b1);_0x7510f6(_0x38f1b1);});});}exports[_0x9f4c('0x1b')]=function(_0xc8bf85){var _0x256c79=this;return new Promise(function(_0x13c6d1,_0x28e6b3){return db[_0x9f4c('0x1c')][_0x9f4c('0x1d')]({'raw':_0xc8bf85['options']?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x1f')]===undefined?!![]:![]:!![],'where':_0xc8bf85['options']?_0xc8bf85[_0x9f4c('0x1e')]['where']||null:null,'attributes':_0xc8bf85[_0x9f4c('0x1e')]?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x20')]||null:null,'limit':_0xc8bf85[_0x9f4c('0x1e')]?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x21')]||null:null,'include':_0xc8bf85[_0x9f4c('0x1e')]?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x22')]?_[_0x9f4c('0x23')](_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x22')],function(_0x426f60){return{'model':db[_0x426f60[_0x9f4c('0x24')]],'as':_0x426f60['as'],'attributes':_0x426f60[_0x9f4c('0x20')],'include':_0x426f60[_0x9f4c('0x22')]?_[_0x9f4c('0x23')](_0x426f60[_0x9f4c('0x22')],function(_0x50601e){return{'model':db[_0x50601e[_0x9f4c('0x24')]],'as':_0x50601e['as'],'attributes':_0x50601e[_0x9f4c('0x20')],'include':_0x50601e['include']?_[_0x9f4c('0x23')](_0x50601e[_0x9f4c('0x22')],function(_0x39ba94){return{'model':db[_0x39ba94['model']],'as':_0x39ba94['as'],'attributes':_0x39ba94['attributes']};}):[]};}):[]};}):[]:[]})[_0x9f4c('0x11')](function(_0x3b6ad3){logger['info'](_0x9f4c('0x1b'),_0xc8bf85);logger[_0x9f4c('0x15')]('GetOpenchannelQueue',_0xc8bf85,JSON[_0x9f4c('0x25')](_0x3b6ad3));_0x13c6d1(_0x3b6ad3);})['catch'](function(_0x441e7c){logger[_0x9f4c('0x17')](_0x9f4c('0x1b'),_0x441e7c['message'],_0xc8bf85);_0x28e6b3(_0x256c79['error'](0x1f4,_0x441e7c[_0x9f4c('0x19')]));});});};exports[_0x9f4c('0x26')]=function(_0x5408db){var _0x4960d4=this;return new Promise(function(_0x2764a2,_0x3aa818){return db[_0x9f4c('0x1c')][_0x9f4c('0x27')]({'raw':_0x5408db['options']?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x1f')]===undefined?!![]:![]:!![],'where':_0x5408db['options']?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x28')]||null:null,'attributes':_0x5408db[_0x9f4c('0x1e')]?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x20')]||null:null,'include':_0x5408db['options']?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x22')]?_['map'](_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x22')],function(_0x5c69c3){return{'model':db[_0x5c69c3['model']],'as':_0x5c69c3['as'],'attributes':_0x5c69c3['attributes'],'include':_0x5c69c3[_0x9f4c('0x22')]?_['map'](_0x5c69c3[_0x9f4c('0x22')],function(_0x579379){return{'model':db[_0x579379['model']],'as':_0x579379['as'],'attributes':_0x579379[_0x9f4c('0x20')],'include':_0x579379[_0x9f4c('0x22')]?_[_0x9f4c('0x23')](_0x579379[_0x9f4c('0x22')],function(_0x96591f){return{'model':db[_0x96591f[_0x9f4c('0x24')]],'as':_0x96591f['as'],'attributes':_0x96591f[_0x9f4c('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9f4c('0x11')](function(_0x30cf44){logger[_0x9f4c('0x12')](_0x9f4c('0x26'),_0x5408db);logger[_0x9f4c('0x15')](_0x9f4c('0x26'),_0x5408db,JSON[_0x9f4c('0x25')](_0x30cf44));_0x2764a2(_0x30cf44);})[_0x9f4c('0x1a')](function(_0x508ee3){logger['error']('ShowOpenchannelQueue',_0x508ee3[_0x9f4c('0x19')],_0x5408db);_0x3aa818(_0x4960d4[_0x9f4c('0x17')](0x1f4,_0x508ee3['message']));});});};
\ No newline at end of file
+var _0x802d=['request','then','info','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','request\x20sent','result','GetOpenchannelQueue','OpenchannelQueue','options','where','attributes','limit','include','map','model','debug','catch','find','ShowOpenchannelQueue','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','register'];(function(_0xffa302,_0xfd695c){var _0x38ea4b=function(_0xaa04c3){while(--_0xaa04c3){_0xffa302['push'](_0xffa302['shift']());}};_0x38ea4b(++_0xfd695c);}(_0x802d,0xd6));var _0xd802=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x802d[_0x424a9a];return _0xa7831c;};'use strict';var _=require(_0xd802('0x0'));var util=require(_0xd802('0x1'));var moment=require('moment');var BPromise=require(_0xd802('0x2'));var rs=require(_0xd802('0x3'));var fs=require('fs');var Redis=require(_0xd802('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd802('0x5'));var logger=require(_0xd802('0x6'))(_0xd802('0x7'));var config=require('../../config/environment');var jayson=require(_0xd802('0x8'));var client=jayson[_0xd802('0x9')][_0xd802('0xa')]({'port':0x232a});config[_0xd802('0xb')]=_[_0xd802('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd802('0xb')]));require('./openchannelQueue.socket')[_0xd802('0xd')](socket);function respondWithRpcPromise(_0x154ddc,_0x480d0a,_0x4d1c0b){return new BPromise(function(_0x4a3cd4,_0x590cf6){return client[_0xd802('0xe')](_0x154ddc,_0x4d1c0b)[_0xd802('0xf')](function(_0x1ff2b4){logger[_0xd802('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x480d0a,'request\x20sent');logger['debug'](_0xd802('0x11'),_0x480d0a,'request\x20sent',JSON[_0xd802('0x12')](_0x1ff2b4));if(_0x1ff2b4[_0xd802('0x13')]){if(_0x1ff2b4[_0xd802('0x13')][_0xd802('0x14')]===0x1f4){logger[_0xd802('0x13')](_0xd802('0x15'),_0x480d0a,_0x1ff2b4['error']['message']);return _0x590cf6(_0x1ff2b4[_0xd802('0x13')][_0xd802('0x16')]);}logger['error'](_0xd802('0x15'),_0x480d0a,_0x1ff2b4[_0xd802('0x13')]['message']);return _0x4a3cd4(_0x1ff2b4[_0xd802('0x13')]['message']);}else{logger[_0xd802('0x10')](_0xd802('0x15'),_0x480d0a,_0xd802('0x17'));_0x4a3cd4(_0x1ff2b4[_0xd802('0x18')]['message']);}})['catch'](function(_0x538fc1){logger[_0xd802('0x13')]('OpenchannelQueue,\x20%s,\x20%s',_0x480d0a,_0x538fc1);_0x590cf6(_0x538fc1);});});}exports[_0xd802('0x19')]=function(_0x45a9f8){var _0x3f68e5=this;return new Promise(function(_0x184162,_0x1356d2){return db[_0xd802('0x1a')]['findAll']({'raw':_0x45a9f8[_0xd802('0x1b')]?_0x45a9f8[_0xd802('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x45a9f8[_0xd802('0x1b')]?_0x45a9f8[_0xd802('0x1b')][_0xd802('0x1c')]||null:null,'attributes':_0x45a9f8[_0xd802('0x1b')]?_0x45a9f8[_0xd802('0x1b')][_0xd802('0x1d')]||null:null,'limit':_0x45a9f8[_0xd802('0x1b')]?_0x45a9f8[_0xd802('0x1b')][_0xd802('0x1e')]||null:null,'include':_0x45a9f8[_0xd802('0x1b')]?_0x45a9f8[_0xd802('0x1b')][_0xd802('0x1f')]?_[_0xd802('0x20')](_0x45a9f8[_0xd802('0x1b')][_0xd802('0x1f')],function(_0x5d549e){return{'model':db[_0x5d549e[_0xd802('0x21')]],'as':_0x5d549e['as'],'attributes':_0x5d549e[_0xd802('0x1d')],'include':_0x5d549e[_0xd802('0x1f')]?_[_0xd802('0x20')](_0x5d549e[_0xd802('0x1f')],function(_0x1dfc09){return{'model':db[_0x1dfc09[_0xd802('0x21')]],'as':_0x1dfc09['as'],'attributes':_0x1dfc09[_0xd802('0x1d')],'include':_0x1dfc09[_0xd802('0x1f')]?_[_0xd802('0x20')](_0x1dfc09[_0xd802('0x1f')],function(_0x17c1c5){return{'model':db[_0x17c1c5['model']],'as':_0x17c1c5['as'],'attributes':_0x17c1c5[_0xd802('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd802('0xf')](function(_0x3aea83){logger[_0xd802('0x10')](_0xd802('0x19'),_0x45a9f8);logger[_0xd802('0x22')](_0xd802('0x19'),_0x45a9f8,JSON[_0xd802('0x12')](_0x3aea83));_0x184162(_0x3aea83);})[_0xd802('0x23')](function(_0x4093a8){logger[_0xd802('0x13')](_0xd802('0x19'),_0x4093a8[_0xd802('0x16')],_0x45a9f8);_0x1356d2(_0x3f68e5[_0xd802('0x13')](0x1f4,_0x4093a8[_0xd802('0x16')]));});});};exports['ShowOpenchannelQueue']=function(_0x50eb1f){var _0x193cc2=this;return new Promise(function(_0x33b8fa,_0xed7db8){return db[_0xd802('0x1a')][_0xd802('0x24')]({'raw':_0x50eb1f[_0xd802('0x1b')]?_0x50eb1f[_0xd802('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x50eb1f[_0xd802('0x1b')]?_0x50eb1f[_0xd802('0x1b')][_0xd802('0x1c')]||null:null,'attributes':_0x50eb1f[_0xd802('0x1b')]?_0x50eb1f[_0xd802('0x1b')]['attributes']||null:null,'include':_0x50eb1f[_0xd802('0x1b')]?_0x50eb1f['options'][_0xd802('0x1f')]?_[_0xd802('0x20')](_0x50eb1f[_0xd802('0x1b')][_0xd802('0x1f')],function(_0x27d85d){return{'model':db[_0x27d85d[_0xd802('0x21')]],'as':_0x27d85d['as'],'attributes':_0x27d85d[_0xd802('0x1d')],'include':_0x27d85d['include']?_[_0xd802('0x20')](_0x27d85d['include'],function(_0x3a0776){return{'model':db[_0x3a0776['model']],'as':_0x3a0776['as'],'attributes':_0x3a0776['attributes'],'include':_0x3a0776[_0xd802('0x1f')]?_[_0xd802('0x20')](_0x3a0776[_0xd802('0x1f')],function(_0x5aa853){return{'model':db[_0x5aa853[_0xd802('0x21')]],'as':_0x5aa853['as'],'attributes':_0x5aa853[_0xd802('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd802('0xf')](function(_0x2fa173){logger['info'](_0xd802('0x25'),_0x50eb1f);logger['debug'](_0xd802('0x25'),_0x50eb1f,JSON[_0xd802('0x12')](_0x2fa173));_0x33b8fa(_0x2fa173);})[_0xd802('0x23')](function(_0x264b89){logger[_0xd802('0x13')](_0xd802('0x25'),_0x264b89[_0xd802('0x16')],_0x50eb1f);_0xed7db8(_0x193cc2['error'](0x1f4,_0x264b89[_0xd802('0x16')]));});});};
\ No newline at end of file
index 543bf0d..de4dad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4420=['removeListener','register','openchannelQueue:','./openchannelQueue.events','save','update','emit'];(function(_0x39a07f,_0x5a5988){var _0x231c9e=function(_0x2cbeea){while(--_0x2cbeea){_0x39a07f['push'](_0x39a07f['shift']());}};_0x231c9e(++_0x5a5988);}(_0x4420,0x1a0));var _0x0442=function(_0x4f3f3c,_0x11b2e1){_0x4f3f3c=_0x4f3f3c-0x0;var _0x4100b6=_0x4420[_0x4f3f3c];return _0x4100b6;};'use strict';var OpenchannelQueueEvents=require(_0x0442('0x0'));var events=[_0x0442('0x1'),'remove',_0x0442('0x2')];function createListener(_0x3123b9,_0x2abda1){return function(_0x2c8c1c){_0x2abda1[_0x0442('0x3')](_0x3123b9,_0x2c8c1c);};}function removeListener(_0x204169,_0x3084be){return function(){OpenchannelQueueEvents[_0x0442('0x4')](_0x204169,_0x3084be);};}exports[_0x0442('0x5')]=function(_0x3a4fb2){for(var _0x4c046e=0x0,_0x57dbe5=events['length'];_0x4c046e<_0x57dbe5;_0x4c046e++){var _0x4a0f04=events[_0x4c046e];var _0x57e446=createListener(_0x0442('0x6')+_0x4a0f04,_0x3a4fb2);OpenchannelQueueEvents['on'](_0x4a0f04,_0x57e446);}};
\ No newline at end of file
+var _0xde96=['length','./openchannelQueue.events','save','update','emit','removeListener','register'];(function(_0x5b57fe,_0x5de761){var _0x829ef=function(_0x4148bd){while(--_0x4148bd){_0x5b57fe['push'](_0x5b57fe['shift']());}};_0x829ef(++_0x5de761);}(_0xde96,0x1eb));var _0x6de9=function(_0x5bb2ba,_0x3c4389){_0x5bb2ba=_0x5bb2ba-0x0;var _0x226c6b=_0xde96[_0x5bb2ba];return _0x226c6b;};'use strict';var OpenchannelQueueEvents=require(_0x6de9('0x0'));var events=[_0x6de9('0x1'),'remove',_0x6de9('0x2')];function createListener(_0xd0816,_0x20965b){return function(_0x8e38e2){_0x20965b[_0x6de9('0x3')](_0xd0816,_0x8e38e2);};}function removeListener(_0x3bda3e,_0x28dbbf){return function(){OpenchannelQueueEvents[_0x6de9('0x4')](_0x3bda3e,_0x28dbbf);};}exports[_0x6de9('0x5')]=function(_0x36a562){for(var _0xbfb2a5=0x0,_0x2274c1=events[_0x6de9('0x6')];_0xbfb2a5<_0x2274c1;_0xbfb2a5++){var _0x1585d1=events[_0xbfb2a5];var _0x189d27=createListener('openchannelQueue:'+_0x1585d1,_0x36a562);OpenchannelQueueEvents['on'](_0x1585d1,_0x189d27);}};
\ No newline at end of file
index f92868c..ea3d8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1894=['post','create','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x2cb3cd,_0x103cda){var _0x587fa2=function(_0x235549){while(--_0x235549){_0x2cb3cd['push'](_0x2cb3cd['shift']());}};_0x587fa2(++_0x103cda);}(_0x1894,0x17e));var _0x4189=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x1894[_0x126558];return _0x1f6d14;};'use strict';var multer=require(_0x4189('0x0'));var util=require(_0x4189('0x1'));var path=require(_0x4189('0x2'));var timeout=require(_0x4189('0x3'));var express=require(_0x4189('0x4'));var router=express[_0x4189('0x5')]();var fs_extra=require(_0x4189('0x6'));var auth=require(_0x4189('0x7'));var interaction=require(_0x4189('0x8'));var config=require(_0x4189('0x9'));var controller=require(_0x4189('0xa'));router[_0x4189('0xb')]('/',auth[_0x4189('0xc')](),controller[_0x4189('0xd')]);router[_0x4189('0xb')](_0x4189('0xe'),auth[_0x4189('0xc')](),controller[_0x4189('0xf')]);router[_0x4189('0xb')](_0x4189('0x10'),auth[_0x4189('0xc')](),controller['show']);router[_0x4189('0x11')]('/',auth[_0x4189('0xc')](),controller[_0x4189('0x12')]);router['put'](_0x4189('0x10'),auth[_0x4189('0xc')](),controller[_0x4189('0x13')]);router[_0x4189('0x14')](_0x4189('0x10'),auth[_0x4189('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xcc28=['multer','util','express','Router','../../components/auth/service','../../config/environment','./openchannelQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','update','delete','exports'];(function(_0x377a6e,_0x59b99d){var _0x37f751=function(_0x2ed25c){while(--_0x2ed25c){_0x377a6e['push'](_0x377a6e['shift']());}};_0x37f751(++_0x59b99d);}(_0xcc28,0x10a));var _0x8cc2=function(_0x4bde6e,_0x134f2a){_0x4bde6e=_0x4bde6e-0x0;var _0x585680=_0xcc28[_0x4bde6e];return _0x585680;};'use strict';var multer=require(_0x8cc2('0x0'));var util=require(_0x8cc2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8cc2('0x2'));var router=express[_0x8cc2('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8cc2('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8cc2('0x5'));var controller=require(_0x8cc2('0x6'));router[_0x8cc2('0x7')]('/',auth['isAuthenticated'](),controller[_0x8cc2('0x8')]);router[_0x8cc2('0x7')](_0x8cc2('0x9'),auth[_0x8cc2('0xa')](),controller[_0x8cc2('0xb')]);router[_0x8cc2('0x7')](_0x8cc2('0xc'),auth[_0x8cc2('0xa')](),controller[_0x8cc2('0xd')]);router[_0x8cc2('0xe')]('/',auth[_0x8cc2('0xa')](),controller[_0x8cc2('0xf')]);router['put'](_0x8cc2('0xc'),auth[_0x8cc2('0xa')](),controller[_0x8cc2('0x10')]);router[_0x8cc2('0x11')](_0x8cc2('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x8cc2('0x12')]=router;
\ No newline at end of file
index f2fe865..c877a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8c8=['moment','exports','STRING','DATE'];(function(_0x56b52b,_0x168bea){var _0x89e7d3=function(_0x247409){while(--_0x247409){_0x56b52b['push'](_0x56b52b['shift']());}};_0x89e7d3(++_0x168bea);}(_0xb8c8,0x11c));var _0x8b8c=function(_0x1516c5,_0x5af94d){_0x1516c5=_0x1516c5-0x0;var _0x4895e6=_0xb8c8[_0x1516c5];return _0x4895e6;};'use strict';var moment=require(_0x8b8c('0x0'));var Sequelize=require('sequelize');module[_0x8b8c('0x1')]={'uniqueid':{'type':Sequelize[_0x8b8c('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x8b8c('0x2')]},'joinAt':{'type':Sequelize[_0x8b8c('0x3')]},'leaveAt':{'type':Sequelize[_0x8b8c('0x3')]},'acceptAt':{'type':Sequelize[_0x8b8c('0x3')]},'exitAt':{'type':Sequelize[_0x8b8c('0x3')]},'reason':{'type':Sequelize[_0x8b8c('0x2')]}};
\ No newline at end of file
+var _0xcb32=['STRING','DATE','moment','sequelize','exports'];(function(_0x28031b,_0x2dff75){var _0x20913d=function(_0x4721bb){while(--_0x4721bb){_0x28031b['push'](_0x28031b['shift']());}};_0x20913d(++_0x2dff75);}(_0xcb32,0x151));var _0x2cb3=function(_0x458953,_0x47c566){_0x458953=_0x458953-0x0;var _0x187d2a=_0xcb32[_0x458953];return _0x187d2a;};'use strict';var moment=require(_0x2cb3('0x0'));var Sequelize=require(_0x2cb3('0x1'));module[_0x2cb3('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x2cb3('0x3')]},'joinAt':{'type':Sequelize[_0x2cb3('0x4')]},'leaveAt':{'type':Sequelize[_0x2cb3('0x4')]},'acceptAt':{'type':Sequelize[_0x2cb3('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2cb3('0x3')]}};
\ No newline at end of file
index 7adf39a..cbcfcbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a1a=['fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','OpenchannelQueueReport','includeAll','findAll','rows','catch','params','keys','length','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','then','error','stack','index','rawAttributes','fieldName','type','key','model','map','name','intersection','query'];(function(_0x3e4d2a,_0x4a6d6e){var _0x585908=function(_0x2d21b1){while(--_0x2d21b1){_0x3e4d2a['push'](_0x3e4d2a['shift']());}};_0x585908(++_0x4a6d6e);}(_0x7a1a,0x17c));var _0xa7a1=function(_0x518fbb,_0xb1b8e5){_0x518fbb=_0x518fbb-0x0;var _0x59a4a3=_0x7a1a[_0x518fbb];return _0x59a4a3;};'use strict';var emlformat=require(_0xa7a1('0x0'));var rimraf=require(_0xa7a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa7a1('0x2'));var rp=require('request-promise');var moment=require(_0xa7a1('0x3'));var BPromise=require(_0xa7a1('0x4'));var Mustache=require('mustache');var util=require(_0xa7a1('0x5'));var path=require(_0xa7a1('0x6'));var sox=require(_0xa7a1('0x7'));var csv=require(_0xa7a1('0x8'));var ejs=require(_0xa7a1('0x9'));var fs=require('fs');var fs_extra=require(_0xa7a1('0xa'));var _=require('lodash');var squel=require(_0xa7a1('0xb'));var crypto=require(_0xa7a1('0xc'));var jsforce=require(_0xa7a1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa7a1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa7a1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xa7a1('0xf'));var as=require(_0xa7a1('0x10'));var hardwareService=require(_0xa7a1('0x11'));var logger=require(_0xa7a1('0x12'))('api');var utils=require(_0xa7a1('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xa7a1('0x14'));var db=require(_0xa7a1('0x15'))['db'];function respondWithStatusCode(_0x575309,_0x21f01){_0x21f01=_0x21f01||0xcc;return function(_0xc517f9){if(_0xc517f9){return _0x575309[_0xa7a1('0x16')](_0x21f01);}return _0x575309[_0xa7a1('0x17')](_0x21f01)[_0xa7a1('0x18')]();};}function respondWithResult(_0x2872eb,_0x37a585){_0x37a585=_0x37a585||0xc8;return function(_0x206671){if(_0x206671){return _0x2872eb['status'](_0x37a585)[_0xa7a1('0x19')](_0x206671);}};}function respondWithFilteredResult(_0x1f6028,_0x1feeb0){return function(_0x318e44){if(_0x318e44){var _0x53cddd=typeof _0x1feeb0[_0xa7a1('0x1a')]==='undefined'&&typeof _0x1feeb0[_0xa7a1('0x1b')]===_0xa7a1('0x1c');var _0x3f10a7=_0x318e44['count'];var _0x168c81=_0x53cddd?0x0:_0x1feeb0[_0xa7a1('0x1a')];var _0x22779e=_0x53cddd?_0x318e44[_0xa7a1('0x1d')]:_0x1feeb0[_0xa7a1('0x1a')]+_0x1feeb0[_0xa7a1('0x1b')];var _0x49125a;if(_0x22779e>=_0x3f10a7){_0x22779e=_0x3f10a7;_0x49125a=0xc8;}else{_0x49125a=0xce;}_0x1f6028['status'](_0x49125a);return _0x1f6028['set'](_0xa7a1('0x1e'),_0x168c81+'-'+_0x22779e+'/'+_0x3f10a7)['json'](_0x318e44);}return null;};}function patchUpdates(_0x5f304c){return function(_0x168f11){try{jsonpatch[_0xa7a1('0x1f')](_0x168f11,_0x5f304c,!![]);}catch(_0x2fd130){return BPromise[_0xa7a1('0x20')](_0x2fd130);}return _0x168f11['save']();};}function saveUpdates(_0x672408,_0x5a700d){return function(_0xcc47be){if(_0xcc47be){return _0xcc47be['update'](_0x672408)['then'](function(_0x3a654f){return _0x3a654f;});}return null;};}function removeEntity(_0xd7a8fb,_0x47f37d){return function(_0x18005f){if(_0x18005f){return _0x18005f['destroy']()[_0xa7a1('0x21')](function(){_0xd7a8fb[_0xa7a1('0x17')](0xcc)[_0xa7a1('0x18')]();});}};}function handleEntityNotFound(_0x516089,_0x1ef102){return function(_0x35bd6c){if(!_0x35bd6c){_0x516089[_0xa7a1('0x16')](0x194);}return _0x35bd6c;};}function handleError(_0x2128a6,_0x297f28){_0x297f28=_0x297f28||0x1f4;return function(_0x4b7b09){logger[_0xa7a1('0x22')](_0x4b7b09[_0xa7a1('0x23')]);if(_0x4b7b09['name']){delete _0x4b7b09['name'];}_0x2128a6[_0xa7a1('0x17')](_0x297f28)['send'](_0x4b7b09);};}exports[_0xa7a1('0x24')]=function(_0x5ec4f9,_0x31bca1){var _0x20f399={},_0x521991={},_0x1d5732={'count':0x0,'rows':[]};var _0x2d14f9=_['map'](db['OpenchannelQueueReport'][_0xa7a1('0x25')],function(_0x5993bb){return{'name':_0x5993bb[_0xa7a1('0x26')],'type':_0x5993bb[_0xa7a1('0x27')][_0xa7a1('0x28')]};});_0x521991[_0xa7a1('0x29')]=_[_0xa7a1('0x2a')](_0x2d14f9,_0xa7a1('0x2b'));_0x521991['query']=_['keys'](_0x5ec4f9['query']);_0x521991['filters']=_[_0xa7a1('0x2c')](_0x521991[_0xa7a1('0x29')],_0x521991[_0xa7a1('0x2d')]);_0x20f399['attributes']=_['intersection'](_0x521991[_0xa7a1('0x29')],qs[_0xa7a1('0x2e')](_0x5ec4f9['query'][_0xa7a1('0x2e')]));_0x20f399[_0xa7a1('0x2f')]=_0x20f399[_0xa7a1('0x2f')]['length']?_0x20f399[_0xa7a1('0x2f')]:_0x521991[_0xa7a1('0x29')];if(!_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x30')](_0xa7a1('0x31'))){_0x20f399[_0xa7a1('0x1b')]=qs[_0xa7a1('0x1b')](_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x1b')]);_0x20f399[_0xa7a1('0x1a')]=qs['offset'](_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x1a')]);}_0x20f399[_0xa7a1('0x32')]=qs[_0xa7a1('0x33')](_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x33')]);_0x20f399[_0xa7a1('0x34')]=qs['filters'](_[_0xa7a1('0x35')](_0x5ec4f9[_0xa7a1('0x2d')],_0x521991[_0xa7a1('0x36')]),_0x2d14f9);if(_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x37')]){_0x20f399[_0xa7a1('0x34')]=_['merge'](_0x20f399[_0xa7a1('0x34')],{'$or':_[_0xa7a1('0x2a')](_0x2d14f9,function(_0x5745e6){if(_0x5745e6[_0xa7a1('0x27')]!=='VIRTUAL'){var _0x5d855d={};_0x5d855d[_0x5745e6['name']]={'$like':'%'+_0x5ec4f9['query'][_0xa7a1('0x37')]+'%'};return _0x5d855d;}})});}_0x20f399=_[_0xa7a1('0x38')]({},_0x20f399,_0x5ec4f9[_0xa7a1('0x39')]);var _0x4ef50b={'where':_0x20f399['where']};return db[_0xa7a1('0x3a')][_0xa7a1('0x1d')](_0x4ef50b)[_0xa7a1('0x21')](function(_0x5d1938){_0x1d5732[_0xa7a1('0x1d')]=_0x5d1938;if(_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x3b')]){_0x20f399['include']=[{'all':!![]}];}return db[_0xa7a1('0x3a')][_0xa7a1('0x3c')](_0x20f399);})['then'](function(_0x57d16b){_0x1d5732[_0xa7a1('0x3d')]=_0x57d16b;return _0x1d5732;})[_0xa7a1('0x21')](respondWithFilteredResult(_0x31bca1,_0x20f399))[_0xa7a1('0x3e')](handleError(_0x31bca1,null));};exports['show']=function(_0x4ee70d,_0x2141ae){var _0x519ad6={'raw':!![],'where':{'id':_0x4ee70d[_0xa7a1('0x3f')]['id']}},_0x60fc21={};_0x60fc21[_0xa7a1('0x29')]=_['keys'](db[_0xa7a1('0x3a')]['rawAttributes']);_0x60fc21[_0xa7a1('0x2d')]=_[_0xa7a1('0x40')](_0x4ee70d[_0xa7a1('0x2d')]);_0x60fc21['filters']=_['intersection'](_0x60fc21[_0xa7a1('0x29')],_0x60fc21[_0xa7a1('0x2d')]);_0x519ad6['attributes']=_[_0xa7a1('0x2c')](_0x60fc21[_0xa7a1('0x29')],qs[_0xa7a1('0x2e')](_0x4ee70d[_0xa7a1('0x2d')][_0xa7a1('0x2e')]));_0x519ad6[_0xa7a1('0x2f')]=_0x519ad6[_0xa7a1('0x2f')][_0xa7a1('0x41')]?_0x519ad6[_0xa7a1('0x2f')]:_0x60fc21[_0xa7a1('0x29')];if(_0x4ee70d[_0xa7a1('0x2d')]['includeAll']){_0x519ad6['include']=[{'all':!![]}];}_0x519ad6=_[_0xa7a1('0x38')]({},_0x519ad6,_0x4ee70d[_0xa7a1('0x39')]);return db[_0xa7a1('0x3a')][_0xa7a1('0x42')](_0x519ad6)['then'](handleEntityNotFound(_0x2141ae,null))[_0xa7a1('0x21')](respondWithResult(_0x2141ae,null))['catch'](handleError(_0x2141ae,null));};exports['create']=function(_0x3ff714,_0xd9530e){return db[_0xa7a1('0x3a')][_0xa7a1('0x43')](_0x3ff714[_0xa7a1('0x44')],{})[_0xa7a1('0x21')](respondWithResult(_0xd9530e,0xc9))[_0xa7a1('0x3e')](handleError(_0xd9530e,null));};exports['update']=function(_0x34deb3,_0x50e128){if(_0x34deb3[_0xa7a1('0x44')]['id']){delete _0x34deb3[_0xa7a1('0x44')]['id'];}return db[_0xa7a1('0x3a')][_0xa7a1('0x42')]({'where':{'id':_0x34deb3['params']['id']}})[_0xa7a1('0x21')](handleEntityNotFound(_0x50e128,null))[_0xa7a1('0x21')](saveUpdates(_0x34deb3['body'],null))[_0xa7a1('0x21')](respondWithResult(_0x50e128,null))[_0xa7a1('0x3e')](handleError(_0x50e128,null));};exports[_0xa7a1('0x45')]=function(_0xa17f5,_0x2eafb6){return db[_0xa7a1('0x3a')][_0xa7a1('0x42')]({'where':{'id':_0xa17f5[_0xa7a1('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2eafb6,null))[_0xa7a1('0x21')](removeEntity(_0x2eafb6,null))['catch'](handleError(_0x2eafb6,null));};exports[_0xa7a1('0x46')]=function(_0x52532d,_0x431050){return db['OpenchannelQueueReport'][_0xa7a1('0x46')]()['then'](respondWithResult(_0x431050,null))['catch'](handleError(_0x431050,null));};
\ No newline at end of file
+var _0xaf37=['filters','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','OpenchannelQueueReport','fieldName','type','key','map','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x5805e6,_0x480054){var _0x2f0b0a=function(_0x3fcc34){while(--_0x3fcc34){_0x5805e6['push'](_0x5805e6['shift']());}};_0x2f0b0a(++_0x480054);}(_0xaf37,0x1d9));var _0x7af3=function(_0x1a89a1,_0x56d889){_0x1a89a1=_0x1a89a1-0x0;var _0x3d5b46=_0xaf37[_0x1a89a1];return _0x3d5b46;};'use strict';var emlformat=require(_0x7af3('0x0'));var rimraf=require(_0x7af3('0x1'));var zipdir=require(_0x7af3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7af3('0x3'));var moment=require(_0x7af3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7af3('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7af3('0x6'));var ejs=require(_0x7af3('0x7'));var fs=require('fs');var fs_extra=require(_0x7af3('0x8'));var _=require(_0x7af3('0x9'));var squel=require(_0x7af3('0xa'));var crypto=require('crypto');var jsforce=require(_0x7af3('0xb'));var deskjs=require(_0x7af3('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7af3('0xd'));var Papa=require(_0x7af3('0xe'));var Redis=require(_0x7af3('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7af3('0x10'));var as=require(_0x7af3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7af3('0x12'))(_0x7af3('0x13'));var utils=require(_0x7af3('0x14'));var config=require(_0x7af3('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7af3('0x16'))['db'];function respondWithStatusCode(_0x3aa9eb,_0x5317ea){_0x5317ea=_0x5317ea||0xcc;return function(_0x40e2f2){if(_0x40e2f2){return _0x3aa9eb[_0x7af3('0x17')](_0x5317ea);}return _0x3aa9eb['status'](_0x5317ea)[_0x7af3('0x18')]();};}function respondWithResult(_0x59e9a2,_0x4f0ef4){_0x4f0ef4=_0x4f0ef4||0xc8;return function(_0x175baf){if(_0x175baf){return _0x59e9a2['status'](_0x4f0ef4)[_0x7af3('0x19')](_0x175baf);}};}function respondWithFilteredResult(_0xdd00fc,_0x58a90e){return function(_0x19abb3){if(_0x19abb3){var _0x1d182b=typeof _0x58a90e[_0x7af3('0x1a')]===_0x7af3('0x1b')&&typeof _0x58a90e[_0x7af3('0x1c')]==='undefined';var _0x18c12d=_0x19abb3['count'];var _0x1001d7=_0x1d182b?0x0:_0x58a90e[_0x7af3('0x1a')];var _0x4a3f16=_0x1d182b?_0x19abb3[_0x7af3('0x1d')]:_0x58a90e['offset']+_0x58a90e[_0x7af3('0x1c')];var _0x200b57;if(_0x4a3f16>=_0x18c12d){_0x4a3f16=_0x18c12d;_0x200b57=0xc8;}else{_0x200b57=0xce;}_0xdd00fc[_0x7af3('0x1e')](_0x200b57);return _0xdd00fc[_0x7af3('0x1f')](_0x7af3('0x20'),_0x1001d7+'-'+_0x4a3f16+'/'+_0x18c12d)[_0x7af3('0x19')](_0x19abb3);}return null;};}function patchUpdates(_0x9c794a){return function(_0x173a84){try{jsonpatch[_0x7af3('0x21')](_0x173a84,_0x9c794a,!![]);}catch(_0x97b196){return BPromise[_0x7af3('0x22')](_0x97b196);}return _0x173a84[_0x7af3('0x23')]();};}function saveUpdates(_0x25ceae,_0x5e5830){return function(_0x2fb989){if(_0x2fb989){return _0x2fb989['update'](_0x25ceae)[_0x7af3('0x24')](function(_0x8401a1){return _0x8401a1;});}return null;};}function removeEntity(_0x19137e,_0x35082e){return function(_0x32d5d5){if(_0x32d5d5){return _0x32d5d5[_0x7af3('0x25')]()[_0x7af3('0x24')](function(){_0x19137e[_0x7af3('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3899f9,_0x42d83a){return function(_0x50d109){if(!_0x50d109){_0x3899f9[_0x7af3('0x17')](0x194);}return _0x50d109;};}function handleError(_0x10041b,_0x151924){_0x151924=_0x151924||0x1f4;return function(_0x5dd5c1){logger[_0x7af3('0x26')](_0x5dd5c1[_0x7af3('0x27')]);if(_0x5dd5c1['name']){delete _0x5dd5c1[_0x7af3('0x28')];}_0x10041b[_0x7af3('0x1e')](_0x151924)[_0x7af3('0x29')](_0x5dd5c1);};}exports[_0x7af3('0x2a')]=function(_0x587ba4,_0x13a854){var _0x4cc30c={},_0x35ddab={},_0x434b88={'count':0x0,'rows':[]};var _0x323c4b=_['map'](db[_0x7af3('0x2b')]['rawAttributes'],function(_0x428562){return{'name':_0x428562[_0x7af3('0x2c')],'type':_0x428562[_0x7af3('0x2d')][_0x7af3('0x2e')]};});_0x35ddab['model']=_[_0x7af3('0x2f')](_0x323c4b,_0x7af3('0x28'));_0x35ddab['query']=_[_0x7af3('0x30')](_0x587ba4[_0x7af3('0x31')]);_0x35ddab['filters']=_[_0x7af3('0x32')](_0x35ddab['model'],_0x35ddab[_0x7af3('0x31')]);_0x4cc30c[_0x7af3('0x33')]=_[_0x7af3('0x32')](_0x35ddab[_0x7af3('0x34')],qs[_0x7af3('0x35')](_0x587ba4[_0x7af3('0x31')][_0x7af3('0x35')]));_0x4cc30c[_0x7af3('0x33')]=_0x4cc30c['attributes'][_0x7af3('0x36')]?_0x4cc30c[_0x7af3('0x33')]:_0x35ddab['model'];if(!_0x587ba4[_0x7af3('0x31')][_0x7af3('0x37')](_0x7af3('0x38'))){_0x4cc30c['limit']=qs[_0x7af3('0x1c')](_0x587ba4[_0x7af3('0x31')]['limit']);_0x4cc30c[_0x7af3('0x1a')]=qs[_0x7af3('0x1a')](_0x587ba4[_0x7af3('0x31')][_0x7af3('0x1a')]);}_0x4cc30c[_0x7af3('0x39')]=qs[_0x7af3('0x3a')](_0x587ba4[_0x7af3('0x31')][_0x7af3('0x3a')]);_0x4cc30c['where']=qs[_0x7af3('0x3b')](_['pick'](_0x587ba4[_0x7af3('0x31')],_0x35ddab[_0x7af3('0x3b')]),_0x323c4b);if(_0x587ba4['query'][_0x7af3('0x3c')]){_0x4cc30c[_0x7af3('0x3d')]=_[_0x7af3('0x3e')](_0x4cc30c['where'],{'$or':_[_0x7af3('0x2f')](_0x323c4b,function(_0x196618){if(_0x196618[_0x7af3('0x2d')]!==_0x7af3('0x3f')){var _0x6a57d0={};_0x6a57d0[_0x196618[_0x7af3('0x28')]]={'$like':'%'+_0x587ba4[_0x7af3('0x31')][_0x7af3('0x3c')]+'%'};return _0x6a57d0;}})});}_0x4cc30c=_[_0x7af3('0x3e')]({},_0x4cc30c,_0x587ba4[_0x7af3('0x40')]);var _0x34bc79={'where':_0x4cc30c['where']};return db[_0x7af3('0x2b')][_0x7af3('0x1d')](_0x34bc79)[_0x7af3('0x24')](function(_0x260702){_0x434b88[_0x7af3('0x1d')]=_0x260702;if(_0x587ba4[_0x7af3('0x31')][_0x7af3('0x41')]){_0x4cc30c[_0x7af3('0x42')]=[{'all':!![]}];}return db[_0x7af3('0x2b')][_0x7af3('0x43')](_0x4cc30c);})[_0x7af3('0x24')](function(_0x31c006){_0x434b88[_0x7af3('0x44')]=_0x31c006;return _0x434b88;})[_0x7af3('0x24')](respondWithFilteredResult(_0x13a854,_0x4cc30c))[_0x7af3('0x45')](handleError(_0x13a854,null));};exports['show']=function(_0x3ba9a1,_0x37bf9e){var _0x82f9d3={'raw':!![],'where':{'id':_0x3ba9a1['params']['id']}},_0x2fd913={};_0x2fd913[_0x7af3('0x34')]=_['keys'](db[_0x7af3('0x2b')][_0x7af3('0x46')]);_0x2fd913[_0x7af3('0x31')]=_[_0x7af3('0x30')](_0x3ba9a1[_0x7af3('0x31')]);_0x2fd913['filters']=_[_0x7af3('0x32')](_0x2fd913[_0x7af3('0x34')],_0x2fd913['query']);_0x82f9d3['attributes']=_[_0x7af3('0x32')](_0x2fd913[_0x7af3('0x34')],qs['fields'](_0x3ba9a1[_0x7af3('0x31')]['fields']));_0x82f9d3[_0x7af3('0x33')]=_0x82f9d3[_0x7af3('0x33')][_0x7af3('0x36')]?_0x82f9d3[_0x7af3('0x33')]:_0x2fd913['model'];if(_0x3ba9a1[_0x7af3('0x31')][_0x7af3('0x41')]){_0x82f9d3['include']=[{'all':!![]}];}_0x82f9d3=_[_0x7af3('0x3e')]({},_0x82f9d3,_0x3ba9a1[_0x7af3('0x40')]);return db[_0x7af3('0x2b')][_0x7af3('0x47')](_0x82f9d3)['then'](handleEntityNotFound(_0x37bf9e,null))[_0x7af3('0x24')](respondWithResult(_0x37bf9e,null))[_0x7af3('0x45')](handleError(_0x37bf9e,null));};exports[_0x7af3('0x48')]=function(_0x55c306,_0x2a8abb){return db[_0x7af3('0x2b')][_0x7af3('0x48')](_0x55c306[_0x7af3('0x49')],{})['then'](respondWithResult(_0x2a8abb,0xc9))['catch'](handleError(_0x2a8abb,null));};exports['update']=function(_0x425b5f,_0x14e627){if(_0x425b5f[_0x7af3('0x49')]['id']){delete _0x425b5f[_0x7af3('0x49')]['id'];}return db[_0x7af3('0x2b')][_0x7af3('0x47')]({'where':{'id':_0x425b5f['params']['id']}})['then'](handleEntityNotFound(_0x14e627,null))['then'](saveUpdates(_0x425b5f[_0x7af3('0x49')],null))[_0x7af3('0x24')](respondWithResult(_0x14e627,null))[_0x7af3('0x45')](handleError(_0x14e627,null));};exports[_0x7af3('0x25')]=function(_0x460466,_0x535ba9){return db[_0x7af3('0x2b')][_0x7af3('0x47')]({'where':{'id':_0x460466[_0x7af3('0x4a')]['id']}})[_0x7af3('0x24')](handleEntityNotFound(_0x535ba9,null))[_0x7af3('0x24')](removeEntity(_0x535ba9,null))[_0x7af3('0x45')](handleError(_0x535ba9,null));};exports[_0x7af3('0x4b')]=function(_0x147ef4,_0x53b6d7){return db['OpenchannelQueueReport'][_0x7af3('0x4b')]()[_0x7af3('0x24')](respondWithResult(_0x53b6d7,null))[_0x7af3('0x45')](handleError(_0x53b6d7,null));};
\ No newline at end of file
index 67a52aa..108da56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x4fb419,_0x55b55f){var _0x1095a3=function(_0x40bbe0){while(--_0x40bbe0){_0x4fb419['push'](_0x4fb419['shift']());}};_0x1095a3(++_0x55b55f);}(_0x1261,0x144));var _0x1126=function(_0x238202,_0x10da07){_0x238202=_0x238202-0x0;var _0x217367=_0x1261[_0x238202];return _0x217367;};'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')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0x454762,_0x480d8c){var _0x3c05c5=function(_0x4bc53e){while(--_0x4bc53e){_0x454762['push'](_0x454762['shift']());}};_0x3c05c5(++_0x480d8c);}(_0x2ef3,0xba));var _0x32ef=function(_0x14a8d2,_0x3c456e){_0x14a8d2=_0x14a8d2-0x0;var _0x58c25b=_0x2ef3[_0x14a8d2];return _0x58c25b;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 983e725..dff8388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2e=['OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','OpenchannelQueueReport','create','body','options','raw','CreateOpenchannelQueueReport','debug','catch','update','attributes','UpdateOpenchannelQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x3ac289,_0x4b42f6){_0x3ac289=_0x3ac289-0x0;var _0x5195cf=_0x4e2e[_0x3ac289];return _0x5195cf;};'use strict';var _=require('lodash');var util=require(_0xe4e2('0x0'));var moment=require(_0xe4e2('0x1'));var BPromise=require(_0xe4e2('0x2'));var rs=require(_0xe4e2('0x3'));var fs=require('fs');var Redis=require(_0xe4e2('0x4'));var db=require(_0xe4e2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe4e2('0x6'))(_0xe4e2('0x7'));var config=require(_0xe4e2('0x8'));var jayson=require(_0xe4e2('0x9'));var client=jayson['client'][_0xe4e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36b1c6,_0x1c4e64,_0x125338){return new BPromise(function(_0x956c75,_0x27304b){return client[_0xe4e2('0xb')](_0x36b1c6,_0x125338)[_0xe4e2('0xc')](function(_0x4912da){logger[_0xe4e2('0xd')](_0xe4e2('0xe'),_0x1c4e64,_0xe4e2('0xf'));logger['debug'](_0xe4e2('0x10'),_0x1c4e64,_0xe4e2('0xf'),JSON[_0xe4e2('0x11')](_0x4912da));if(_0x4912da[_0xe4e2('0x12')]){if(_0x4912da[_0xe4e2('0x12')]['code']===0x1f4){logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x4912da[_0xe4e2('0x12')][_0xe4e2('0x13')]);return _0x27304b(_0x4912da['error'][_0xe4e2('0x13')]);}logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x4912da[_0xe4e2('0x12')][_0xe4e2('0x13')]);return _0x956c75(_0x4912da['error']['message']);}else{logger[_0xe4e2('0xd')](_0xe4e2('0xe'),_0x1c4e64,_0xe4e2('0xf'));_0x956c75(_0x4912da[_0xe4e2('0x14')][_0xe4e2('0x13')]);}})['catch'](function(_0x754778){logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x754778);_0x27304b(_0x754778);});});}exports['CreateOpenchannelQueueReport']=function(_0x196f16){var _0x54c80b=this;return new Promise(function(_0x1d5e9d,_0x3f313b){return db[_0xe4e2('0x15')][_0xe4e2('0x16')](_0x196f16[_0xe4e2('0x17')],{'raw':_0x196f16[_0xe4e2('0x18')]?_0x196f16[_0xe4e2('0x18')][_0xe4e2('0x19')]===undefined?!![]:![]:!![]})[_0xe4e2('0xc')](function(_0x362741){logger['info'](_0xe4e2('0x1a'),_0x196f16);logger[_0xe4e2('0x1b')](_0xe4e2('0x1a'),_0x196f16,JSON[_0xe4e2('0x11')](_0x362741));_0x1d5e9d(_0x362741);})[_0xe4e2('0x1c')](function(_0x23b466){logger[_0xe4e2('0x12')]('CreateOpenchannelQueueReport',_0x23b466[_0xe4e2('0x13')],_0x196f16);_0x3f313b(_0x54c80b[_0xe4e2('0x12')](0x1f4,_0x23b466[_0xe4e2('0x13')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x353030){var _0x12ad33=this;return new Promise(function(_0x598fa3,_0xcba85a){return db[_0xe4e2('0x15')][_0xe4e2('0x1d')](_0x353030[_0xe4e2('0x17')],{'raw':_0x353030[_0xe4e2('0x18')]?_0x353030['options'][_0xe4e2('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x353030[_0xe4e2('0x18')]?_0x353030[_0xe4e2('0x18')]['where']||null:null,'attributes':_0x353030[_0xe4e2('0x18')]?_0x353030[_0xe4e2('0x18')][_0xe4e2('0x1e')]||null:null,'limit':_0x353030['options']?_0x353030[_0xe4e2('0x18')]['limit']||null:null})[_0xe4e2('0xc')](function(_0x1e21c0){logger['info'](_0xe4e2('0x1f'),_0x353030);logger[_0xe4e2('0x1b')](_0xe4e2('0x1f'),_0x353030,JSON[_0xe4e2('0x11')](_0x1e21c0));_0x598fa3(_0x1e21c0);})[_0xe4e2('0x1c')](function(_0x4d33de){logger['error'](_0xe4e2('0x1f'),_0x4d33de[_0xe4e2('0x13')],_0x353030);_0xcba85a(_0x12ad33[_0xe4e2('0x12')](0x1f4,_0x4d33de[_0xe4e2('0x13')]));});});};
\ No newline at end of file
+var _0x1a85=['error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw','then','update','where','attributes','limit','UpdateOpenchannelQueueReport','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x512f81,_0x4a7986){var _0xa15099=function(_0x1f7371){while(--_0x1f7371){_0x512f81['push'](_0x512f81['shift']());}};_0xa15099(++_0x4a7986);}(_0x1a85,0x178));var _0x51a8=function(_0x4e0f5e,_0x4168c4){_0x4e0f5e=_0x4e0f5e-0x0;var _0x45de30=_0x1a85[_0x4e0f5e];return _0x45de30;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51a8('0x0'));var BPromise=require(_0x51a8('0x1'));var rs=require(_0x51a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x51a8('0x3'));var logger=require(_0x51a8('0x4'))(_0x51a8('0x5'));var config=require('../../config/environment');var jayson=require(_0x51a8('0x6'));var client=jayson['client'][_0x51a8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5cf430,_0x331117,_0x16a21e){return new BPromise(function(_0x4f3919,_0x228c64){return client['request'](_0x5cf430,_0x16a21e)['then'](function(_0x39e06a){logger[_0x51a8('0x8')](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));logger[_0x51a8('0xb')](_0x51a8('0xc'),_0x331117,_0x51a8('0xa'),JSON[_0x51a8('0xd')](_0x39e06a));if(_0x39e06a[_0x51a8('0xe')]){if(_0x39e06a[_0x51a8('0xe')][_0x51a8('0xf')]===0x1f4){logger[_0x51a8('0xe')](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x228c64(_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);}logger['error'](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x4f3919(_0x39e06a['error'][_0x51a8('0x10')]);}else{logger['info'](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));_0x4f3919(_0x39e06a[_0x51a8('0x11')][_0x51a8('0x10')]);}})[_0x51a8('0x12')](function(_0x3e0603){logger[_0x51a8('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x331117,_0x3e0603);_0x228c64(_0x3e0603);});});}exports[_0x51a8('0x13')]=function(_0x45a433){var _0xd52230=this;return new Promise(function(_0x23539e,_0x3bc1a2){return db[_0x51a8('0x14')]['create'](_0x45a433[_0x51a8('0x15')],{'raw':_0x45a433[_0x51a8('0x16')]?_0x45a433[_0x51a8('0x16')][_0x51a8('0x17')]===undefined?!![]:![]:!![]})[_0x51a8('0x18')](function(_0x3bc044){logger[_0x51a8('0x8')](_0x51a8('0x13'),_0x45a433);logger['debug'](_0x51a8('0x13'),_0x45a433,JSON['stringify'](_0x3bc044));_0x23539e(_0x3bc044);})[_0x51a8('0x12')](function(_0x12c029){logger[_0x51a8('0xe')](_0x51a8('0x13'),_0x12c029['message'],_0x45a433);_0x3bc1a2(_0xd52230[_0x51a8('0xe')](0x1f4,_0x12c029['message']));});});};exports['UpdateOpenchannelQueueReport']=function(_0x23d26a){var _0x52e503=this;return new Promise(function(_0x384d25,_0x78d3d6){return db[_0x51a8('0x14')][_0x51a8('0x19')](_0x23d26a[_0x51a8('0x15')],{'raw':_0x23d26a[_0x51a8('0x16')]?_0x23d26a[_0x51a8('0x16')][_0x51a8('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23d26a['options']?_0x23d26a[_0x51a8('0x16')][_0x51a8('0x1a')]||null:null,'attributes':_0x23d26a[_0x51a8('0x16')]?_0x23d26a[_0x51a8('0x16')][_0x51a8('0x1b')]||null:null,'limit':_0x23d26a[_0x51a8('0x16')]?_0x23d26a[_0x51a8('0x16')][_0x51a8('0x1c')]||null:null})[_0x51a8('0x18')](function(_0x4b5cda){logger[_0x51a8('0x8')](_0x51a8('0x1d'),_0x23d26a);logger['debug'](_0x51a8('0x1d'),_0x23d26a,JSON['stringify'](_0x4b5cda));_0x384d25(_0x4b5cda);})[_0x51a8('0x12')](function(_0x3bc19a){logger[_0x51a8('0xe')](_0x51a8('0x1d'),_0x3bc19a[_0x51a8('0x10')],_0x23d26a);_0x78d3d6(_0x52e503['error'](0x1f4,_0x3bc19a[_0x51a8('0x10')]));});});};
\ No newline at end of file
index 8c33fcb..a8ca535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a1=['create','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x553b39,_0x253161){var _0x58eafd=function(_0x1d2f9f){while(--_0x1d2f9f){_0x553b39['push'](_0x553b39['shift']());}};_0x58eafd(++_0x253161);}(_0xd5a1,0x190));var _0x1d5a=function(_0x2264a1,_0x238dab){_0x2264a1=_0x2264a1-0x0;var _0x638200=_0xd5a1[_0x2264a1];return _0x638200;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1d5a('0x0'));var timeout=require(_0x1d5a('0x1'));var express=require(_0x1d5a('0x2'));var router=express[_0x1d5a('0x3')]();var fs_extra=require(_0x1d5a('0x4'));var auth=require(_0x1d5a('0x5'));var interaction=require(_0x1d5a('0x6'));var config=require(_0x1d5a('0x7'));var controller=require(_0x1d5a('0x8'));router[_0x1d5a('0x9')]('/',auth[_0x1d5a('0xa')](),controller['index']);router[_0x1d5a('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x1d5a('0xb')]);router[_0x1d5a('0x9')](_0x1d5a('0xc'),auth[_0x1d5a('0xa')](),controller[_0x1d5a('0xd')]);router['post']('/',auth[_0x1d5a('0xa')](),controller[_0x1d5a('0xe')]);router['put']('/:id',auth[_0x1d5a('0xa')](),controller['update']);router[_0x1d5a('0xf')](_0x1d5a('0xc'),auth[_0x1d5a('0xa')](),controller[_0x1d5a('0x10')]);module[_0x1d5a('0x11')]=router;
\ No newline at end of file
+var _0x637f=['show','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x637f,0x1a6));var _0xf637=function(_0x22fe5c,_0x28645c){_0x22fe5c=_0x22fe5c-0x0;var _0x17a217=_0x637f[_0x22fe5c];return _0x17a217;};'use strict';var multer=require('multer');var util=require(_0xf637('0x0'));var path=require(_0xf637('0x1'));var timeout=require(_0xf637('0x2'));var express=require(_0xf637('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf637('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf637('0x5'));var controller=require('./openchannelTransferReport.controller');router[_0xf637('0x6')]('/',auth[_0xf637('0x7')](),controller[_0xf637('0x8')]);router[_0xf637('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xf637('0x9')]);router[_0xf637('0x6')]('/:id',auth[_0xf637('0x7')](),controller[_0xf637('0xa')]);router['post']('/',auth[_0xf637('0x7')](),controller[_0xf637('0xb')]);router[_0xf637('0xc')](_0xf637('0xd'),auth[_0xf637('0x7')](),controller[_0xf637('0xe')]);router[_0xf637('0xf')]('/:id',auth[_0xf637('0x7')](),controller[_0xf637('0x10')]);module[_0xf637('0x11')]=router;
\ No newline at end of file
index a746826..b5da30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0xb43b,0x1b2));var _0xbb43=function(_0x5a00aa,_0x1bf6bc){_0x5a00aa=_0x5a00aa-0x0;var _0xd0bc9f=_0xb43b[_0x5a00aa];return _0xd0bc9f;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x49ce3a,_0x19057b){var _0x5e7fb2=function(_0x5ef86e){while(--_0x5ef86e){_0x49ce3a['push'](_0x49ce3a['shift']());}};_0x5e7fb2(++_0x19057b);}(_0xf4eb,0xec));var _0xbf4e=function(_0x766ce6,_0x4aec31){_0x766ce6=_0x766ce6-0x0;var _0x3cdfd0=_0xf4eb[_0x766ce6];return _0x3cdfd0;};'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
index c13d57c..954beef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cf=['destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','undefined','count','offset','limit','status','set','Content-Range','json','apply','save','then','end','error','name','index','map','OpenchannelTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','include','options','create','body','update','find'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0x59cf,0xd7));var _0xf59c=function(_0x4d674b,_0x176474){_0x4d674b=_0x4d674b-0x0;var _0x535a1f=_0x59cf[_0x4d674b];return _0x535a1f;};'use strict';var emlformat=require(_0xf59c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf59c('0x1'));var jsonpatch=require(_0xf59c('0x2'));var rp=require(_0xf59c('0x3'));var moment=require(_0xf59c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf59c('0x5'));var path=require(_0xf59c('0x6'));var sox=require(_0xf59c('0x7'));var csv=require(_0xf59c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf59c('0x9'));var _=require('lodash');var squel=require(_0xf59c('0xa'));var crypto=require(_0xf59c('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf59c('0x8'));var querystring=require('querystring');var Papa=require(_0xf59c('0xc'));var Redis=require(_0xf59c('0xd'));var authService=require(_0xf59c('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf59c('0xf'))(_0xf59c('0x10'));var utils=require(_0xf59c('0x11'));var config=require(_0xf59c('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31661e,_0x6644d2){_0x6644d2=_0x6644d2||0xcc;return function(_0x290c6e){if(_0x290c6e){return _0x31661e[_0xf59c('0x13')](_0x6644d2);}return _0x31661e['status'](_0x6644d2)['end']();};}function respondWithResult(_0x41a99f,_0x35d072){_0x35d072=_0x35d072||0xc8;return function(_0x2bc9d9){if(_0x2bc9d9){return _0x41a99f['status'](_0x35d072)['json'](_0x2bc9d9);}};}function respondWithFilteredResult(_0x41a737,_0x411890){return function(_0x4e01cc){if(_0x4e01cc){var _0x2f93d0=typeof _0x411890['offset']==='undefined'&&typeof _0x411890['limit']===_0xf59c('0x14');var _0x12f546=_0x4e01cc[_0xf59c('0x15')];var _0x49707f=_0x2f93d0?0x0:_0x411890[_0xf59c('0x16')];var _0x429e5e=_0x2f93d0?_0x4e01cc[_0xf59c('0x15')]:_0x411890[_0xf59c('0x16')]+_0x411890[_0xf59c('0x17')];var _0x51c42b;if(_0x429e5e>=_0x12f546){_0x429e5e=_0x12f546;_0x51c42b=0xc8;}else{_0x51c42b=0xce;}_0x41a737[_0xf59c('0x18')](_0x51c42b);return _0x41a737[_0xf59c('0x19')](_0xf59c('0x1a'),_0x49707f+'-'+_0x429e5e+'/'+_0x12f546)[_0xf59c('0x1b')](_0x4e01cc);}return null;};}function patchUpdates(_0x583654){return function(_0x22f57c){try{jsonpatch[_0xf59c('0x1c')](_0x22f57c,_0x583654,!![]);}catch(_0x4ccc20){return BPromise['reject'](_0x4ccc20);}return _0x22f57c[_0xf59c('0x1d')]();};}function saveUpdates(_0x3b64ef,_0x5d25b8){return function(_0x5bf2de){if(_0x5bf2de){return _0x5bf2de['update'](_0x3b64ef)[_0xf59c('0x1e')](function(_0x14ae70){return _0x14ae70;});}return null;};}function removeEntity(_0xd20653,_0xbfc251){return function(_0x5101e7){if(_0x5101e7){return _0x5101e7['destroy']()[_0xf59c('0x1e')](function(){_0xd20653[_0xf59c('0x18')](0xcc)[_0xf59c('0x1f')]();});}};}function handleEntityNotFound(_0x4841fc,_0x418b51){return function(_0x16fc6a){if(!_0x16fc6a){_0x4841fc[_0xf59c('0x13')](0x194);}return _0x16fc6a;};}function handleError(_0x15acc5,_0x13f913){_0x13f913=_0x13f913||0x1f4;return function(_0x43799f){logger[_0xf59c('0x20')](_0x43799f['stack']);if(_0x43799f[_0xf59c('0x21')]){delete _0x43799f[_0xf59c('0x21')];}_0x15acc5[_0xf59c('0x18')](_0x13f913)['send'](_0x43799f);};}exports[_0xf59c('0x22')]=function(_0x43e987,_0x2816d9){var _0x21ad3e={},_0x160968={},_0x577deb={'count':0x0,'rows':[]};var _0x2a9ca9=_[_0xf59c('0x23')](db[_0xf59c('0x24')][_0xf59c('0x25')],function(_0x1ec58c){return{'name':_0x1ec58c['fieldName'],'type':_0x1ec58c[_0xf59c('0x26')][_0xf59c('0x27')]};});_0x160968[_0xf59c('0x28')]=_[_0xf59c('0x23')](_0x2a9ca9,_0xf59c('0x21'));_0x160968[_0xf59c('0x29')]=_[_0xf59c('0x2a')](_0x43e987[_0xf59c('0x29')]);_0x160968[_0xf59c('0x2b')]=_[_0xf59c('0x2c')](_0x160968[_0xf59c('0x28')],_0x160968['query']);_0x21ad3e['attributes']=_[_0xf59c('0x2c')](_0x160968[_0xf59c('0x28')],qs[_0xf59c('0x2d')](_0x43e987['query'][_0xf59c('0x2d')]));_0x21ad3e['attributes']=_0x21ad3e[_0xf59c('0x2e')][_0xf59c('0x2f')]?_0x21ad3e[_0xf59c('0x2e')]:_0x160968[_0xf59c('0x28')];if(!_0x43e987[_0xf59c('0x29')][_0xf59c('0x30')](_0xf59c('0x31'))){_0x21ad3e['limit']=qs[_0xf59c('0x17')](_0x43e987[_0xf59c('0x29')][_0xf59c('0x17')]);_0x21ad3e[_0xf59c('0x16')]=qs['offset'](_0x43e987['query'][_0xf59c('0x16')]);}_0x21ad3e[_0xf59c('0x32')]=qs[_0xf59c('0x33')](_0x43e987[_0xf59c('0x29')]['sort']);_0x21ad3e[_0xf59c('0x34')]=qs[_0xf59c('0x2b')](_[_0xf59c('0x35')](_0x43e987[_0xf59c('0x29')],_0x160968[_0xf59c('0x2b')]),_0x2a9ca9);if(_0x43e987[_0xf59c('0x29')][_0xf59c('0x36')]){_0x21ad3e[_0xf59c('0x34')]=_['merge'](_0x21ad3e['where'],{'$or':_[_0xf59c('0x23')](_0x2a9ca9,function(_0x446d59){if(_0x446d59['type']!==_0xf59c('0x37')){var _0x3fe007={};_0x3fe007[_0x446d59[_0xf59c('0x21')]]={'$like':'%'+_0x43e987[_0xf59c('0x29')][_0xf59c('0x36')]+'%'};return _0x3fe007;}})});}_0x21ad3e=_[_0xf59c('0x38')]({},_0x21ad3e,_0x43e987['options']);var _0x515e3d={'where':_0x21ad3e[_0xf59c('0x34')]};return db[_0xf59c('0x24')]['count'](_0x515e3d)[_0xf59c('0x1e')](function(_0x5cfb06){_0x577deb[_0xf59c('0x15')]=_0x5cfb06;if(_0x43e987['query'][_0xf59c('0x39')]){_0x21ad3e['include']=[{'all':!![]}];}return db[_0xf59c('0x24')][_0xf59c('0x3a')](_0x21ad3e);})[_0xf59c('0x1e')](function(_0x49f1f4){_0x577deb[_0xf59c('0x3b')]=_0x49f1f4;return _0x577deb;})[_0xf59c('0x1e')](respondWithFilteredResult(_0x2816d9,_0x21ad3e))[_0xf59c('0x3c')](handleError(_0x2816d9,null));};exports[_0xf59c('0x3d')]=function(_0x1eacf2,_0xca9d98){var _0x396579={'raw':!![],'where':{'id':_0x1eacf2[_0xf59c('0x3e')]['id']}},_0x379b3f={};_0x379b3f[_0xf59c('0x28')]=_[_0xf59c('0x2a')](db[_0xf59c('0x24')][_0xf59c('0x25')]);_0x379b3f[_0xf59c('0x29')]=_[_0xf59c('0x2a')](_0x1eacf2['query']);_0x379b3f['filters']=_[_0xf59c('0x2c')](_0x379b3f[_0xf59c('0x28')],_0x379b3f[_0xf59c('0x29')]);_0x396579[_0xf59c('0x2e')]=_[_0xf59c('0x2c')](_0x379b3f[_0xf59c('0x28')],qs[_0xf59c('0x2d')](_0x1eacf2[_0xf59c('0x29')][_0xf59c('0x2d')]));_0x396579[_0xf59c('0x2e')]=_0x396579[_0xf59c('0x2e')]['length']?_0x396579[_0xf59c('0x2e')]:_0x379b3f[_0xf59c('0x28')];if(_0x1eacf2[_0xf59c('0x29')]['includeAll']){_0x396579[_0xf59c('0x3f')]=[{'all':!![]}];}_0x396579=_[_0xf59c('0x38')]({},_0x396579,_0x1eacf2[_0xf59c('0x40')]);return db[_0xf59c('0x24')]['find'](_0x396579)['then'](handleEntityNotFound(_0xca9d98,null))[_0xf59c('0x1e')](respondWithResult(_0xca9d98,null))['catch'](handleError(_0xca9d98,null));};exports[_0xf59c('0x41')]=function(_0x9edf54,_0x43bc6f){return db[_0xf59c('0x24')][_0xf59c('0x41')](_0x9edf54[_0xf59c('0x42')],{})['then'](respondWithResult(_0x43bc6f,0xc9))[_0xf59c('0x3c')](handleError(_0x43bc6f,null));};exports[_0xf59c('0x43')]=function(_0x2ea1c4,_0x37771a){if(_0x2ea1c4[_0xf59c('0x42')]['id']){delete _0x2ea1c4[_0xf59c('0x42')]['id'];}return db[_0xf59c('0x24')][_0xf59c('0x44')]({'where':{'id':_0x2ea1c4[_0xf59c('0x3e')]['id']}})[_0xf59c('0x1e')](handleEntityNotFound(_0x37771a,null))['then'](saveUpdates(_0x2ea1c4[_0xf59c('0x42')],null))[_0xf59c('0x1e')](respondWithResult(_0x37771a,null))[_0xf59c('0x3c')](handleError(_0x37771a,null));};exports[_0xf59c('0x45')]=function(_0x50abda,_0x2a2531){return db[_0xf59c('0x24')]['find']({'where':{'id':_0x50abda[_0xf59c('0x3e')]['id']}})[_0xf59c('0x1e')](handleEntityNotFound(_0x2a2531,null))[_0xf59c('0x1e')](removeEntity(_0x2a2531,null))[_0xf59c('0x3c')](handleError(_0x2a2531,null));};exports['describe']=function(_0x159edd,_0x59d78f){return db[_0xf59c('0x24')][_0xf59c('0x46')]()[_0xf59c('0x1e')](respondWithResult(_0x59d78f,null))[_0xf59c('0x3c')](handleError(_0x59d78f,null));};
\ No newline at end of file
+var _0xb072=['path','sox','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','OpenchannelTransferReport','includeAll','findAll','catch','show','params','include','create','update','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x492afa,_0x3527dd){var _0x401664=function(_0x47cc5f){while(--_0x47cc5f){_0x492afa['push'](_0x492afa['shift']());}};_0x401664(++_0x3527dd);}(_0xb072,0x1cd));var _0x2b07=function(_0x1d4d3b,_0x2c146b){_0x1d4d3b=_0x1d4d3b-0x0;var _0x5c58e0=_0xb072[_0x1d4d3b];return _0x5c58e0;};'use strict';var emlformat=require(_0x2b07('0x0'));var rimraf=require(_0x2b07('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2b07('0x2'));var rp=require(_0x2b07('0x3'));var moment=require(_0x2b07('0x4'));var BPromise=require(_0x2b07('0x5'));var Mustache=require(_0x2b07('0x6'));var util=require('util');var path=require(_0x2b07('0x7'));var sox=require(_0x2b07('0x8'));var csv=require('to-csv');var ejs=require(_0x2b07('0x9'));var fs=require('fs');var fs_extra=require(_0x2b07('0xa'));var _=require(_0x2b07('0xb'));var squel=require(_0x2b07('0xc'));var crypto=require(_0x2b07('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2b07('0xe'));var Redis=require('ioredis');var authService=require(_0x2b07('0xf'));var qs=require(_0x2b07('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2b07('0x11'));var logger=require('../../config/logger')(_0x2b07('0x12'));var utils=require(_0x2b07('0x13'));var config=require(_0x2b07('0x14'));var licenseUtil=require(_0x2b07('0x15'));var db=require(_0x2b07('0x16'))['db'];function respondWithStatusCode(_0x1594ed,_0x468077){_0x468077=_0x468077||0xcc;return function(_0x58af63){if(_0x58af63){return _0x1594ed[_0x2b07('0x17')](_0x468077);}return _0x1594ed['status'](_0x468077)[_0x2b07('0x18')]();};}function respondWithResult(_0x1b7464,_0xeee910){_0xeee910=_0xeee910||0xc8;return function(_0x5651c4){if(_0x5651c4){return _0x1b7464['status'](_0xeee910)[_0x2b07('0x19')](_0x5651c4);}};}function respondWithFilteredResult(_0x32db4b,_0x3ac9da){return function(_0x163967){if(_0x163967){var _0x5ac84a=typeof _0x3ac9da[_0x2b07('0x1a')]==='undefined'&&typeof _0x3ac9da[_0x2b07('0x1b')]===_0x2b07('0x1c');var _0x59cbf7=_0x163967[_0x2b07('0x1d')];var _0x4ef795=_0x5ac84a?0x0:_0x3ac9da['offset'];var _0xa6077e=_0x5ac84a?_0x163967['count']:_0x3ac9da[_0x2b07('0x1a')]+_0x3ac9da[_0x2b07('0x1b')];var _0x2aef68;if(_0xa6077e>=_0x59cbf7){_0xa6077e=_0x59cbf7;_0x2aef68=0xc8;}else{_0x2aef68=0xce;}_0x32db4b[_0x2b07('0x1e')](_0x2aef68);return _0x32db4b[_0x2b07('0x1f')](_0x2b07('0x20'),_0x4ef795+'-'+_0xa6077e+'/'+_0x59cbf7)['json'](_0x163967);}return null;};}function patchUpdates(_0x2be236){return function(_0x17a790){try{jsonpatch[_0x2b07('0x21')](_0x17a790,_0x2be236,!![]);}catch(_0x3ba24e){return BPromise[_0x2b07('0x22')](_0x3ba24e);}return _0x17a790[_0x2b07('0x23')]();};}function saveUpdates(_0x33ea9d,_0x5026c7){return function(_0x4f0dcd){if(_0x4f0dcd){return _0x4f0dcd['update'](_0x33ea9d)[_0x2b07('0x24')](function(_0x530aeb){return _0x530aeb;});}return null;};}function removeEntity(_0x1aaffa,_0xc732cf){return function(_0x58f009){if(_0x58f009){return _0x58f009[_0x2b07('0x25')]()['then'](function(){_0x1aaffa['status'](0xcc)[_0x2b07('0x18')]();});}};}function handleEntityNotFound(_0x52c94f,_0x4430fe){return function(_0x467b96){if(!_0x467b96){_0x52c94f[_0x2b07('0x17')](0x194);}return _0x467b96;};}function handleError(_0x231f2f,_0x3dd0a9){_0x3dd0a9=_0x3dd0a9||0x1f4;return function(_0x217aba){logger[_0x2b07('0x26')](_0x217aba[_0x2b07('0x27')]);if(_0x217aba['name']){delete _0x217aba[_0x2b07('0x28')];}_0x231f2f[_0x2b07('0x1e')](_0x3dd0a9)[_0x2b07('0x29')](_0x217aba);};}exports[_0x2b07('0x2a')]=function(_0x209220,_0x35646a){var _0x36bdff={},_0xaafde2={},_0x39c0f8={'count':0x0,'rows':[]};var _0xa27e9d=_[_0x2b07('0x2b')](db['OpenchannelTransferReport'][_0x2b07('0x2c')],function(_0x33f64a){return{'name':_0x33f64a[_0x2b07('0x2d')],'type':_0x33f64a[_0x2b07('0x2e')][_0x2b07('0x2f')]};});_0xaafde2[_0x2b07('0x30')]=_[_0x2b07('0x2b')](_0xa27e9d,_0x2b07('0x28'));_0xaafde2[_0x2b07('0x31')]=_[_0x2b07('0x32')](_0x209220[_0x2b07('0x31')]);_0xaafde2[_0x2b07('0x33')]=_[_0x2b07('0x34')](_0xaafde2[_0x2b07('0x30')],_0xaafde2[_0x2b07('0x31')]);_0x36bdff[_0x2b07('0x35')]=_['intersection'](_0xaafde2[_0x2b07('0x30')],qs['fields'](_0x209220['query'][_0x2b07('0x36')]));_0x36bdff[_0x2b07('0x35')]=_0x36bdff[_0x2b07('0x35')][_0x2b07('0x37')]?_0x36bdff['attributes']:_0xaafde2[_0x2b07('0x30')];if(!_0x209220[_0x2b07('0x31')][_0x2b07('0x38')](_0x2b07('0x39'))){_0x36bdff[_0x2b07('0x1b')]=qs['limit'](_0x209220[_0x2b07('0x31')][_0x2b07('0x1b')]);_0x36bdff[_0x2b07('0x1a')]=qs[_0x2b07('0x1a')](_0x209220[_0x2b07('0x31')]['offset']);}_0x36bdff[_0x2b07('0x3a')]=qs['sort'](_0x209220[_0x2b07('0x31')][_0x2b07('0x3b')]);_0x36bdff[_0x2b07('0x3c')]=qs[_0x2b07('0x33')](_[_0x2b07('0x3d')](_0x209220['query'],_0xaafde2[_0x2b07('0x33')]),_0xa27e9d);if(_0x209220[_0x2b07('0x31')]['filter']){_0x36bdff['where']=_[_0x2b07('0x3e')](_0x36bdff['where'],{'$or':_[_0x2b07('0x2b')](_0xa27e9d,function(_0x3a3ced){if(_0x3a3ced['type']!==_0x2b07('0x3f')){var _0x14c47c={};_0x14c47c[_0x3a3ced[_0x2b07('0x28')]]={'$like':'%'+_0x209220[_0x2b07('0x31')][_0x2b07('0x40')]+'%'};return _0x14c47c;}})});}_0x36bdff=_[_0x2b07('0x3e')]({},_0x36bdff,_0x209220[_0x2b07('0x41')]);var _0x3e43a5={'where':_0x36bdff[_0x2b07('0x3c')]};return db[_0x2b07('0x42')][_0x2b07('0x1d')](_0x3e43a5)['then'](function(_0x2cd229){_0x39c0f8['count']=_0x2cd229;if(_0x209220['query'][_0x2b07('0x43')]){_0x36bdff['include']=[{'all':!![]}];}return db[_0x2b07('0x42')][_0x2b07('0x44')](_0x36bdff);})[_0x2b07('0x24')](function(_0x3146ea){_0x39c0f8['rows']=_0x3146ea;return _0x39c0f8;})[_0x2b07('0x24')](respondWithFilteredResult(_0x35646a,_0x36bdff))[_0x2b07('0x45')](handleError(_0x35646a,null));};exports[_0x2b07('0x46')]=function(_0x43c843,_0x853166){var _0x502716={'raw':!![],'where':{'id':_0x43c843[_0x2b07('0x47')]['id']}},_0x185fdd={};_0x185fdd[_0x2b07('0x30')]=_[_0x2b07('0x32')](db[_0x2b07('0x42')][_0x2b07('0x2c')]);_0x185fdd[_0x2b07('0x31')]=_[_0x2b07('0x32')](_0x43c843[_0x2b07('0x31')]);_0x185fdd['filters']=_[_0x2b07('0x34')](_0x185fdd['model'],_0x185fdd[_0x2b07('0x31')]);_0x502716[_0x2b07('0x35')]=_[_0x2b07('0x34')](_0x185fdd['model'],qs[_0x2b07('0x36')](_0x43c843[_0x2b07('0x31')][_0x2b07('0x36')]));_0x502716[_0x2b07('0x35')]=_0x502716[_0x2b07('0x35')][_0x2b07('0x37')]?_0x502716[_0x2b07('0x35')]:_0x185fdd[_0x2b07('0x30')];if(_0x43c843[_0x2b07('0x31')][_0x2b07('0x43')]){_0x502716[_0x2b07('0x48')]=[{'all':!![]}];}_0x502716=_['merge']({},_0x502716,_0x43c843['options']);return db[_0x2b07('0x42')]['find'](_0x502716)[_0x2b07('0x24')](handleEntityNotFound(_0x853166,null))[_0x2b07('0x24')](respondWithResult(_0x853166,null))[_0x2b07('0x45')](handleError(_0x853166,null));};exports[_0x2b07('0x49')]=function(_0x143ab2,_0x524fe0){return db[_0x2b07('0x42')][_0x2b07('0x49')](_0x143ab2['body'],{})[_0x2b07('0x24')](respondWithResult(_0x524fe0,0xc9))['catch'](handleError(_0x524fe0,null));};exports[_0x2b07('0x4a')]=function(_0x4f03d8,_0x77ef6f){if(_0x4f03d8[_0x2b07('0x4b')]['id']){delete _0x4f03d8[_0x2b07('0x4b')]['id'];}return db[_0x2b07('0x42')][_0x2b07('0x4c')]({'where':{'id':_0x4f03d8[_0x2b07('0x47')]['id']}})[_0x2b07('0x24')](handleEntityNotFound(_0x77ef6f,null))[_0x2b07('0x24')](saveUpdates(_0x4f03d8['body'],null))[_0x2b07('0x24')](respondWithResult(_0x77ef6f,null))[_0x2b07('0x45')](handleError(_0x77ef6f,null));};exports[_0x2b07('0x25')]=function(_0x405481,_0x2c5713){return db[_0x2b07('0x42')][_0x2b07('0x4c')]({'where':{'id':_0x405481[_0x2b07('0x47')]['id']}})[_0x2b07('0x24')](handleEntityNotFound(_0x2c5713,null))[_0x2b07('0x24')](removeEntity(_0x2c5713,null))[_0x2b07('0x45')](handleError(_0x2c5713,null));};exports[_0x2b07('0x4d')]=function(_0x34ee3d,_0x2d088f){return db[_0x2b07('0x42')][_0x2b07('0x4d')]()[_0x2b07('0x24')](respondWithResult(_0x2d088f,null))[_0x2b07('0x45')](handleError(_0x2d088f,null));};
\ No newline at end of file
index 39cedfe..fdbb529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x199f=['uniqueid','util','bluebird','request-promise','rimraf','./openchannelTransferReport.attributes','exports','define','report_openchannel_transfer'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x199f,0x12a));var _0xf199=function(_0x58b44a,_0x1a7aa6){_0x58b44a=_0x58b44a-0x0;var _0xd6779d=_0x199f[_0x58b44a];return _0xd6779d;};'use strict';var _=require('lodash');var util=require(_0xf199('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf199('0x1'));var rp=require(_0xf199('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf199('0x3'));var config=require('../../config/environment');var attributes=require(_0xf199('0x4'));module[_0xf199('0x5')]=function(_0x55b0cb,_0x52947f){return _0x55b0cb[_0xf199('0x6')]('OpenchannelTransferReport',attributes,{'tableName':_0xf199('0x7'),'paranoid':![],'indexes':[{'name':_0xf199('0x8'),'fields':[_0xf199('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a89=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid','lodash'];(function(_0x205e56,_0x366e77){var _0x489d5d=function(_0x130a84){while(--_0x130a84){_0x205e56['push'](_0x205e56['shift']());}};_0x489d5d(++_0x366e77);}(_0x6a89,0x109));var _0x96a8=function(_0x528de6,_0x18870b){_0x528de6=_0x528de6-0x0;var _0x455d46=_0x6a89[_0x528de6];return _0x455d46;};'use strict';var _=require(_0x96a8('0x0'));var util=require(_0x96a8('0x1'));var logger=require(_0x96a8('0x2'))(_0x96a8('0x3'));var moment=require(_0x96a8('0x4'));var BPromise=require(_0x96a8('0x5'));var rp=require(_0x96a8('0x6'));var fs=require('fs');var path=require(_0x96a8('0x7'));var rimraf=require(_0x96a8('0x8'));var config=require('../../config/environment');var attributes=require(_0x96a8('0x9'));module[_0x96a8('0xa')]=function(_0x5db3ef,_0x10778c){return _0x5db3ef[_0x96a8('0xb')](_0x96a8('0xc'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x96a8('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index de187c7..9f94999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4148=['stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4148,0xc6));var _0x8414=function(_0x1aba25,_0x1faed1){_0x1aba25=_0x1aba25-0x0;var _0x47d997=_0x4148[_0x1aba25];return _0x47d997;};'use strict';var _=require(_0x8414('0x0'));var util=require(_0x8414('0x1'));var moment=require(_0x8414('0x2'));var BPromise=require(_0x8414('0x3'));var rs=require(_0x8414('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8414('0x5'))['db'];var utils=require(_0x8414('0x6'));var logger=require(_0x8414('0x7'))(_0x8414('0x8'));var config=require('../../config/environment');var jayson=require(_0x8414('0x9'));var client=jayson['client'][_0x8414('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x507e0b,_0x51ab01,_0x131b88){return new BPromise(function(_0x2444b7,_0x1623c3){return client[_0x8414('0xb')](_0x507e0b,_0x131b88)[_0x8414('0xc')](function(_0xd625a7){logger[_0x8414('0xd')](_0x8414('0xe'),_0x51ab01,_0x8414('0xf'));logger[_0x8414('0x10')](_0x8414('0x11'),_0x51ab01,'request\x20sent',JSON[_0x8414('0x12')](_0xd625a7));if(_0xd625a7['error']){if(_0xd625a7[_0x8414('0x13')][_0x8414('0x14')]===0x1f4){logger[_0x8414('0x13')](_0x8414('0xe'),_0x51ab01,_0xd625a7['error'][_0x8414('0x15')]);return _0x1623c3(_0xd625a7['error'][_0x8414('0x15')]);}logger[_0x8414('0x13')](_0x8414('0xe'),_0x51ab01,_0xd625a7['error'][_0x8414('0x15')]);return _0x2444b7(_0xd625a7[_0x8414('0x13')][_0x8414('0x15')]);}else{logger['info']('OpenchannelTransferReport,\x20%s,\x20%s',_0x51ab01,_0x8414('0xf'));_0x2444b7(_0xd625a7[_0x8414('0x16')][_0x8414('0x15')]);}})[_0x8414('0x17')](function(_0x5b92aa){logger[_0x8414('0x13')](_0x8414('0xe'),_0x51ab01,_0x5b92aa);_0x1623c3(_0x5b92aa);});});}
\ No newline at end of file
+var _0xac95=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch'];(function(_0x122a59,_0x33832b){var _0x59a3bd=function(_0x5adc60){while(--_0x5adc60){_0x122a59['push'](_0x122a59['shift']());}};_0x59a3bd(++_0x33832b);}(_0xac95,0xa8));var _0x5ac9=function(_0x5ef44a,_0x1bc5bc){_0x5ef44a=_0x5ef44a-0x0;var _0x1ac772=_0xac95[_0x5ef44a];return _0x1ac772;};'use strict';var _=require(_0x5ac9('0x0'));var util=require(_0x5ac9('0x1'));var moment=require(_0x5ac9('0x2'));var BPromise=require(_0x5ac9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ac9('0x4'))['db'];var utils=require(_0x5ac9('0x5'));var logger=require('../../config/logger')(_0x5ac9('0x6'));var config=require(_0x5ac9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5ac9('0x8')][_0x5ac9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8675ec,_0x4bddcf,_0x4dffb8){return new BPromise(function(_0x32afbc,_0x2ab11c){return client[_0x5ac9('0xa')](_0x8675ec,_0x4dffb8)[_0x5ac9('0xb')](function(_0x397bb8){logger[_0x5ac9('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4bddcf,_0x5ac9('0xd'));logger[_0x5ac9('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x4bddcf,_0x5ac9('0xd'),JSON['stringify'](_0x397bb8));if(_0x397bb8[_0x5ac9('0xf')]){if(_0x397bb8['error'][_0x5ac9('0x10')]===0x1f4){logger[_0x5ac9('0xf')](_0x5ac9('0x11'),_0x4bddcf,_0x397bb8[_0x5ac9('0xf')]['message']);return _0x2ab11c(_0x397bb8['error'][_0x5ac9('0x12')]);}logger['error'](_0x5ac9('0x11'),_0x4bddcf,_0x397bb8[_0x5ac9('0xf')]['message']);return _0x32afbc(_0x397bb8[_0x5ac9('0xf')][_0x5ac9('0x12')]);}else{logger[_0x5ac9('0xc')](_0x5ac9('0x11'),_0x4bddcf,_0x5ac9('0xd'));_0x32afbc(_0x397bb8[_0x5ac9('0x13')][_0x5ac9('0x12')]);}})[_0x5ac9('0x14')](function(_0x460fd7){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x4bddcf,_0x460fd7);_0x2ab11c(_0x460fd7);});});}
\ No newline at end of file
index 01bc2b4..2077055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4c=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./pause.controller','get','isAuthenticated','index','/:id','post','delete','destroy','exports','path'];(function(_0xbab353,_0x37e159){var _0x56871e=function(_0x474f77){while(--_0x474f77){_0xbab353['push'](_0xbab353['shift']());}};_0x56871e(++_0x37e159);}(_0xfa4c,0x194));var _0xcfa4=function(_0x4163fd,_0x1da4ce){_0x4163fd=_0x4163fd-0x0;var _0xbc0548=_0xfa4c[_0x4163fd];return _0xbc0548;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcfa4('0x0'));var timeout=require(_0xcfa4('0x1'));var express=require(_0xcfa4('0x2'));var router=express['Router']();var fs_extra=require(_0xcfa4('0x3'));var auth=require(_0xcfa4('0x4'));var interaction=require(_0xcfa4('0x5'));var config=require('../../config/environment');var controller=require(_0xcfa4('0x6'));router[_0xcfa4('0x7')]('/',auth[_0xcfa4('0x8')](),controller[_0xcfa4('0x9')]);router['get'](_0xcfa4('0xa'),auth[_0xcfa4('0x8')](),controller['show']);router[_0xcfa4('0xb')]('/',auth[_0xcfa4('0x8')](),controller['create']);router['put'](_0xcfa4('0xa'),auth[_0xcfa4('0x8')](),controller['update']);router[_0xcfa4('0xc')]('/:id',auth[_0xcfa4('0x8')](),controller[_0xcfa4('0xd')]);module[_0xcfa4('0xe')]=router;
\ No newline at end of file
+var _0x0f2a=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','isAuthenticated','index','show','create','put','/:id','update','delete'];(function(_0x12ded7,_0x159564){var _0x45d7e7=function(_0x21e43a){while(--_0x21e43a){_0x12ded7['push'](_0x12ded7['shift']());}};_0x45d7e7(++_0x159564);}(_0x0f2a,0x12e));var _0xa0f2=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0f2a[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xa0f2('0x0'));var util=require(_0xa0f2('0x1'));var path=require(_0xa0f2('0x2'));var timeout=require(_0xa0f2('0x3'));var express=require(_0xa0f2('0x4'));var router=express[_0xa0f2('0x5')]();var fs_extra=require(_0xa0f2('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa0f2('0x7'));var config=require(_0xa0f2('0x8'));var controller=require(_0xa0f2('0x9'));router['get']('/',auth[_0xa0f2('0xa')](),controller[_0xa0f2('0xb')]);router['get']('/:id',auth[_0xa0f2('0xa')](),controller[_0xa0f2('0xc')]);router['post']('/',auth[_0xa0f2('0xa')](),controller[_0xa0f2('0xd')]);router[_0xa0f2('0xe')](_0xa0f2('0xf'),auth[_0xa0f2('0xa')](),controller[_0xa0f2('0x10')]);router[_0xa0f2('0x11')](_0xa0f2('0xf'),auth['isAuthenticated'](),controller[_0xa0f2('0x12')]);module[_0xa0f2('0x13')]=router;
\ No newline at end of file
index 8874e03..84114b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['STRING','name','sequelize','exports'];(function(_0x461b04,_0x3f6241){var _0x2fa70b=function(_0x17db0d){while(--_0x17db0d){_0x461b04['push'](_0x461b04['shift']());}};_0x2fa70b(++_0x3f6241);}(_0x4888,0x182));var _0x8488=function(_0x5562fe,_0x4e809c){_0x5562fe=_0x5562fe-0x0;var _0x1829c7=_0x4888[_0x5562fe];return _0x1829c7;};'use strict';var Sequelize=require(_0x8488('0x0'));module[_0x8488('0x1')]={'name':{'type':Sequelize[_0x8488('0x2')],'unique':_0x8488('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x8488('0x2')]}};
\ No newline at end of file
+var _0x4082=['name','sequelize','exports','STRING'];(function(_0x4c2369,_0x40ed6e){var _0x44ecfc=function(_0x274596){while(--_0x274596){_0x4c2369['push'](_0x4c2369['shift']());}};_0x44ecfc(++_0x40ed6e);}(_0x4082,0x85));var _0x2408=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x4082[_0x9aada2];return _0x196dff;};'use strict';var Sequelize=require(_0x2408('0x0'));module[_0x2408('0x1')]={'name':{'type':Sequelize[_0x2408('0x2')],'unique':_0x2408('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x2408('0x2')]}};
\ No newline at end of file
index 0af1d8a..b7529fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de2=['moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','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','then','destroy','get','Pauses','UserProfileResource','name','index','Pause','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x3a17fb,_0x4c73ed){var _0xad0f8b=function(_0x4a33af){while(--_0x4a33af){_0x3a17fb['push'](_0x3a17fb['shift']());}};_0xad0f8b(++_0x4c73ed);}(_0x3de2,0x1f4));var _0x23de=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x3de2[_0x1b2ff7];return _0x31656a;};'use strict';var emlformat=require(_0x23de('0x0'));var rimraf=require(_0x23de('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x23de('0x2'));var rp=require(_0x23de('0x3'));var moment=require(_0x23de('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x23de('0x5'));var util=require(_0x23de('0x6'));var path=require('path');var sox=require(_0x23de('0x7'));var csv=require(_0x23de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x23de('0x9'));var _=require(_0x23de('0xa'));var squel=require(_0x23de('0xb'));var crypto=require('crypto');var jsforce=require(_0x23de('0xc'));var deskjs=require(_0x23de('0xd'));var toCsv=require(_0x23de('0x8'));var querystring=require(_0x23de('0xe'));var Papa=require(_0x23de('0xf'));var Redis=require(_0x23de('0x10'));var authService=require(_0x23de('0x11'));var qs=require(_0x23de('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x23de('0x13'));var logger=require(_0x23de('0x14'))(_0x23de('0x15'));var utils=require(_0x23de('0x16'));var config=require(_0x23de('0x17'));var licenseUtil=require(_0x23de('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5236b0,_0x4bd4e4){_0x4bd4e4=_0x4bd4e4||0xcc;return function(_0x11eca9){if(_0x11eca9){return _0x5236b0[_0x23de('0x19')](_0x4bd4e4);}return _0x5236b0[_0x23de('0x1a')](_0x4bd4e4)[_0x23de('0x1b')]();};}function respondWithResult(_0x4f518d,_0x32a8c9){_0x32a8c9=_0x32a8c9||0xc8;return function(_0x2f8ddb){if(_0x2f8ddb){return _0x4f518d[_0x23de('0x1a')](_0x32a8c9)[_0x23de('0x1c')](_0x2f8ddb);}};}function respondWithFilteredResult(_0x266e90,_0x4301ac){return function(_0x239102){if(_0x239102){var _0x457c3b=typeof _0x4301ac[_0x23de('0x1d')]===_0x23de('0x1e')&&typeof _0x4301ac[_0x23de('0x1f')]===_0x23de('0x1e');var _0x817449=_0x239102['count'];var _0x27de29=_0x457c3b?0x0:_0x4301ac[_0x23de('0x1d')];var _0x1d67c5=_0x457c3b?_0x239102[_0x23de('0x20')]:_0x4301ac['offset']+_0x4301ac['limit'];var _0x34e262;if(_0x1d67c5>=_0x817449){_0x1d67c5=_0x817449;_0x34e262=0xc8;}else{_0x34e262=0xce;}_0x266e90[_0x23de('0x1a')](_0x34e262);return _0x266e90[_0x23de('0x21')](_0x23de('0x22'),_0x27de29+'-'+_0x1d67c5+'/'+_0x817449)[_0x23de('0x1c')](_0x239102);}return null;};}function patchUpdates(_0x388705){return function(_0x1a2aa8){try{jsonpatch[_0x23de('0x23')](_0x1a2aa8,_0x388705,!![]);}catch(_0x3cab0b){return BPromise[_0x23de('0x24')](_0x3cab0b);}return _0x1a2aa8['save']();};}function saveUpdates(_0x29f722,_0xcfd7c){return function(_0x5c671b){if(_0x5c671b){return _0x5c671b['update'](_0x29f722)[_0x23de('0x25')](function(_0x14faa9){return _0x14faa9;});}return null;};}function removeEntity(_0x91d7a,_0x55ef3f){return function(_0x1d8b44){if(_0x1d8b44){return _0x1d8b44[_0x23de('0x26')]()[_0x23de('0x25')](function(){var _0x5c7dde=_0x1d8b44[_0x23de('0x27')]({'plain':!![]});var _0x3c6095=_0x23de('0x28');return db[_0x23de('0x29')][_0x23de('0x26')]({'where':{'type':_0x3c6095,'resourceId':_0x5c7dde['id']}})[_0x23de('0x25')](function(){return _0x1d8b44;});})[_0x23de('0x25')](function(){_0x91d7a[_0x23de('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e340d,_0x3f9431){return function(_0x2135ab){if(!_0x2135ab){_0x4e340d['sendStatus'](0x194);}return _0x2135ab;};}function handleError(_0x55003c,_0x3a6f3f){_0x3a6f3f=_0x3a6f3f||0x1f4;return function(_0x420ec7){logger['error'](_0x420ec7['stack']);if(_0x420ec7[_0x23de('0x2a')]){delete _0x420ec7[_0x23de('0x2a')];}_0x55003c[_0x23de('0x1a')](_0x3a6f3f)['send'](_0x420ec7);};}exports[_0x23de('0x2b')]=function(_0x51a1f1,_0x2f1494){var _0x12b3c4={},_0x5dc9bd={},_0x4f70b1={'count':0x0,'rows':[]};var _0x119fa3=_['map'](db[_0x23de('0x2c')][_0x23de('0x2d')],function(_0x6f5678){return{'name':_0x6f5678[_0x23de('0x2e')],'type':_0x6f5678[_0x23de('0x2f')][_0x23de('0x30')]};});_0x5dc9bd[_0x23de('0x31')]=_[_0x23de('0x32')](_0x119fa3,'name');_0x5dc9bd[_0x23de('0x33')]=_[_0x23de('0x34')](_0x51a1f1[_0x23de('0x33')]);_0x5dc9bd[_0x23de('0x35')]=_[_0x23de('0x36')](_0x5dc9bd[_0x23de('0x31')],_0x5dc9bd['query']);_0x12b3c4['attributes']=_['intersection'](_0x5dc9bd[_0x23de('0x31')],qs[_0x23de('0x37')](_0x51a1f1['query'][_0x23de('0x37')]));_0x12b3c4['attributes']=_0x12b3c4[_0x23de('0x38')][_0x23de('0x39')]?_0x12b3c4[_0x23de('0x38')]:_0x5dc9bd[_0x23de('0x31')];if(!_0x51a1f1[_0x23de('0x33')]['hasOwnProperty'](_0x23de('0x3a'))){_0x12b3c4['limit']=qs['limit'](_0x51a1f1['query'][_0x23de('0x1f')]);_0x12b3c4[_0x23de('0x1d')]=qs[_0x23de('0x1d')](_0x51a1f1[_0x23de('0x33')][_0x23de('0x1d')]);}_0x12b3c4[_0x23de('0x3b')]=qs['sort'](_0x51a1f1['query'][_0x23de('0x3c')]);_0x12b3c4[_0x23de('0x3d')]=qs['filters'](_[_0x23de('0x3e')](_0x51a1f1[_0x23de('0x33')],_0x5dc9bd[_0x23de('0x35')]),_0x119fa3);if(_0x51a1f1[_0x23de('0x33')][_0x23de('0x3f')]){_0x12b3c4[_0x23de('0x3d')]=_[_0x23de('0x40')](_0x12b3c4[_0x23de('0x3d')],{'$or':_[_0x23de('0x32')](_0x119fa3,function(_0x5e41d7){if(_0x5e41d7[_0x23de('0x2f')]!=='VIRTUAL'){var _0x5a144b={};_0x5a144b[_0x5e41d7[_0x23de('0x2a')]]={'$like':'%'+_0x51a1f1['query'][_0x23de('0x3f')]+'%'};return _0x5a144b;}})});}_0x12b3c4=_[_0x23de('0x40')]({},_0x12b3c4,_0x51a1f1[_0x23de('0x41')]);var _0x292745={'where':_0x12b3c4['where']};return db[_0x23de('0x2c')][_0x23de('0x20')](_0x292745)[_0x23de('0x25')](function(_0x40521f){_0x4f70b1['count']=_0x40521f;if(_0x51a1f1[_0x23de('0x33')][_0x23de('0x42')]){_0x12b3c4['include']=[{'all':!![]}];}return db[_0x23de('0x2c')][_0x23de('0x43')](_0x12b3c4);})['then'](function(_0x5a5051){_0x4f70b1[_0x23de('0x44')]=_0x5a5051;return _0x4f70b1;})[_0x23de('0x25')](respondWithFilteredResult(_0x2f1494,_0x12b3c4))[_0x23de('0x45')](handleError(_0x2f1494,null));};exports[_0x23de('0x46')]=function(_0x5340c4,_0x5d52c3){var _0x3c2fbc={'raw':!![],'where':{'id':_0x5340c4[_0x23de('0x47')]['id']}},_0x538223={};_0x538223[_0x23de('0x31')]=_[_0x23de('0x34')](db[_0x23de('0x2c')][_0x23de('0x2d')]);_0x538223[_0x23de('0x33')]=_['keys'](_0x5340c4[_0x23de('0x33')]);_0x538223[_0x23de('0x35')]=_[_0x23de('0x36')](_0x538223['model'],_0x538223[_0x23de('0x33')]);_0x3c2fbc[_0x23de('0x38')]=_['intersection'](_0x538223[_0x23de('0x31')],qs['fields'](_0x5340c4[_0x23de('0x33')][_0x23de('0x37')]));_0x3c2fbc[_0x23de('0x38')]=_0x3c2fbc[_0x23de('0x38')][_0x23de('0x39')]?_0x3c2fbc[_0x23de('0x38')]:_0x538223[_0x23de('0x31')];if(_0x5340c4[_0x23de('0x33')][_0x23de('0x42')]){_0x3c2fbc[_0x23de('0x48')]=[{'all':!![]}];}_0x3c2fbc=_['merge']({},_0x3c2fbc,_0x5340c4[_0x23de('0x41')]);return db[_0x23de('0x2c')][_0x23de('0x49')](_0x3c2fbc)[_0x23de('0x25')](handleEntityNotFound(_0x5d52c3,null))[_0x23de('0x25')](respondWithResult(_0x5d52c3,null))['catch'](handleError(_0x5d52c3,null));};exports[_0x23de('0x4a')]=function(_0x343d80,_0x4dcbe1){return db[_0x23de('0x2c')][_0x23de('0x4a')](_0x343d80['body'],{})['then'](function(_0x1c7a9f){var _0x1f0e52=_0x343d80[_0x23de('0x4b')][_0x23de('0x27')]({'plain':!![]});if(!_0x1f0e52)throw new Error(_0x23de('0x4c'));if(_0x1f0e52[_0x23de('0x4d')]===_0x23de('0x4b')){var _0x578cbc=_0x1c7a9f[_0x23de('0x27')]({'plain':!![]});var _0x2bc58a=_0x23de('0x28');return db[_0x23de('0x4e')][_0x23de('0x49')]({'where':{'name':_0x2bc58a,'userProfileId':_0x1f0e52[_0x23de('0x4f')]},'raw':!![]})[_0x23de('0x25')](function(_0x5469ee){if(_0x5469ee&&_0x5469ee['autoAssociation']===0x0){return db['UserProfileResource'][_0x23de('0x4a')]({'name':_0x578cbc[_0x23de('0x2a')],'resourceId':_0x578cbc['id'],'type':_0x5469ee[_0x23de('0x2a')],'sectionId':_0x5469ee['id']},{})[_0x23de('0x25')](function(){return _0x1c7a9f;});}else{return _0x1c7a9f;}})[_0x23de('0x45')](function(_0x449100){logger[_0x23de('0x50')](_0x23de('0x51'),_0x449100);throw _0x449100;});}return _0x1c7a9f;})['then'](respondWithResult(_0x4dcbe1,0xc9))['catch'](handleError(_0x4dcbe1,null));};exports[_0x23de('0x52')]=function(_0x20ec2d,_0x30c378){if(_0x20ec2d['body']['id']){delete _0x20ec2d['body']['id'];}return db['Pause']['find']({'where':{'id':_0x20ec2d[_0x23de('0x47')]['id']}})[_0x23de('0x25')](handleEntityNotFound(_0x30c378,null))[_0x23de('0x25')](saveUpdates(_0x20ec2d[_0x23de('0x53')],null))[_0x23de('0x25')](respondWithResult(_0x30c378,null))['catch'](handleError(_0x30c378,null));};exports[_0x23de('0x26')]=function(_0x172bc1,_0xdefe23){return db[_0x23de('0x2c')][_0x23de('0x49')]({'where':{'id':_0x172bc1[_0x23de('0x47')]['id']}})[_0x23de('0x25')](handleEntityNotFound(_0xdefe23,null))[_0x23de('0x25')](removeEntity(_0xdefe23,null))[_0x23de('0x45')](handleError(_0xdefe23,null));};
\ No newline at end of file
+var _0xcbf3=['Pause','fieldName','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','map','type','VIRTUAL','includeAll','include','show','rawAttributes','keys','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Pauses','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','get','UserProfileResource','error','stack','name','index'];(function(_0x1ac6ed,_0x2d7b1e){var _0x4e6e79=function(_0x3447a5){while(--_0x3447a5){_0x1ac6ed['push'](_0x1ac6ed['shift']());}};_0x4e6e79(++_0x2d7b1e);}(_0xcbf3,0x70));var _0x3cbf=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xcbf3[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x3cbf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3cbf('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3cbf('0x2'));var Mustache=require(_0x3cbf('0x3'));var util=require(_0x3cbf('0x4'));var path=require(_0x3cbf('0x5'));var sox=require('sox');var csv=require(_0x3cbf('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3cbf('0x7'));var _=require(_0x3cbf('0x8'));var squel=require('squel');var crypto=require(_0x3cbf('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3cbf('0x6'));var querystring=require(_0x3cbf('0xa'));var Papa=require(_0x3cbf('0xb'));var Redis=require(_0x3cbf('0xc'));var authService=require(_0x3cbf('0xd'));var qs=require(_0x3cbf('0xe'));var as=require(_0x3cbf('0xf'));var hardwareService=require(_0x3cbf('0x10'));var logger=require('../../config/logger')(_0x3cbf('0x11'));var utils=require(_0x3cbf('0x12'));var config=require(_0x3cbf('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3699af,_0x140274){_0x140274=_0x140274||0xcc;return function(_0x42b8ad){if(_0x42b8ad){return _0x3699af[_0x3cbf('0x14')](_0x140274);}return _0x3699af[_0x3cbf('0x15')](_0x140274)['end']();};}function respondWithResult(_0x2029aa,_0x556363){_0x556363=_0x556363||0xc8;return function(_0x24eda0){if(_0x24eda0){return _0x2029aa[_0x3cbf('0x15')](_0x556363)[_0x3cbf('0x16')](_0x24eda0);}};}function respondWithFilteredResult(_0x23db14,_0x4373fd){return function(_0x3d74c0){if(_0x3d74c0){var _0x3b7f34=typeof _0x4373fd[_0x3cbf('0x17')]==='undefined'&&typeof _0x4373fd[_0x3cbf('0x18')]===_0x3cbf('0x19');var _0x27a7d4=_0x3d74c0[_0x3cbf('0x1a')];var _0x2fac8c=_0x3b7f34?0x0:_0x4373fd[_0x3cbf('0x17')];var _0x8e33fc=_0x3b7f34?_0x3d74c0['count']:_0x4373fd[_0x3cbf('0x17')]+_0x4373fd[_0x3cbf('0x18')];var _0x1e1698;if(_0x8e33fc>=_0x27a7d4){_0x8e33fc=_0x27a7d4;_0x1e1698=0xc8;}else{_0x1e1698=0xce;}_0x23db14[_0x3cbf('0x15')](_0x1e1698);return _0x23db14[_0x3cbf('0x1b')]('Content-Range',_0x2fac8c+'-'+_0x8e33fc+'/'+_0x27a7d4)['json'](_0x3d74c0);}return null;};}function patchUpdates(_0x11e6b5){return function(_0x858c43){try{jsonpatch[_0x3cbf('0x1c')](_0x858c43,_0x11e6b5,!![]);}catch(_0x213075){return BPromise[_0x3cbf('0x1d')](_0x213075);}return _0x858c43[_0x3cbf('0x1e')]();};}function saveUpdates(_0xcc8e4a,_0x12a406){return function(_0x8ceeb6){if(_0x8ceeb6){return _0x8ceeb6[_0x3cbf('0x1f')](_0xcc8e4a)['then'](function(_0x394550){return _0x394550;});}return null;};}function removeEntity(_0x49effc,_0x3670eb){return function(_0x302268){if(_0x302268){return _0x302268[_0x3cbf('0x20')]()[_0x3cbf('0x21')](function(){var _0x126f7b=_0x302268[_0x3cbf('0x22')]({'plain':!![]});var _0x584984='Pauses';return db[_0x3cbf('0x23')]['destroy']({'where':{'type':_0x584984,'resourceId':_0x126f7b['id']}})['then'](function(){return _0x302268;});})['then'](function(){_0x49effc[_0x3cbf('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x367237,_0x8e7e89){return function(_0x426f57){if(!_0x426f57){_0x367237[_0x3cbf('0x14')](0x194);}return _0x426f57;};}function handleError(_0x127804,_0x1acb2b){_0x1acb2b=_0x1acb2b||0x1f4;return function(_0x28e66f){logger[_0x3cbf('0x24')](_0x28e66f[_0x3cbf('0x25')]);if(_0x28e66f[_0x3cbf('0x26')]){delete _0x28e66f['name'];}_0x127804[_0x3cbf('0x15')](_0x1acb2b)['send'](_0x28e66f);};}exports[_0x3cbf('0x27')]=function(_0x58f4a1,_0x183845){var _0xec5666={},_0x321549={},_0x2429e3={'count':0x0,'rows':[]};var _0x48e6a1=_['map'](db[_0x3cbf('0x28')]['rawAttributes'],function(_0x32c060){return{'name':_0x32c060[_0x3cbf('0x29')],'type':_0x32c060['type'][_0x3cbf('0x2a')]};});_0x321549['model']=_['map'](_0x48e6a1,_0x3cbf('0x26'));_0x321549[_0x3cbf('0x2b')]=_['keys'](_0x58f4a1[_0x3cbf('0x2b')]);_0x321549[_0x3cbf('0x2c')]=_['intersection'](_0x321549[_0x3cbf('0x2d')],_0x321549['query']);_0xec5666[_0x3cbf('0x2e')]=_[_0x3cbf('0x2f')](_0x321549[_0x3cbf('0x2d')],qs[_0x3cbf('0x30')](_0x58f4a1[_0x3cbf('0x2b')]['fields']));_0xec5666[_0x3cbf('0x2e')]=_0xec5666[_0x3cbf('0x2e')][_0x3cbf('0x31')]?_0xec5666[_0x3cbf('0x2e')]:_0x321549[_0x3cbf('0x2d')];if(!_0x58f4a1[_0x3cbf('0x2b')][_0x3cbf('0x32')](_0x3cbf('0x33'))){_0xec5666['limit']=qs[_0x3cbf('0x18')](_0x58f4a1[_0x3cbf('0x2b')]['limit']);_0xec5666['offset']=qs['offset'](_0x58f4a1[_0x3cbf('0x2b')][_0x3cbf('0x17')]);}_0xec5666['order']=qs[_0x3cbf('0x34')](_0x58f4a1[_0x3cbf('0x2b')][_0x3cbf('0x34')]);_0xec5666['where']=qs[_0x3cbf('0x2c')](_[_0x3cbf('0x35')](_0x58f4a1['query'],_0x321549[_0x3cbf('0x2c')]),_0x48e6a1);if(_0x58f4a1['query']['filter']){_0xec5666['where']=_[_0x3cbf('0x36')](_0xec5666[_0x3cbf('0x37')],{'$or':_[_0x3cbf('0x38')](_0x48e6a1,function(_0x140b1b){if(_0x140b1b[_0x3cbf('0x39')]!==_0x3cbf('0x3a')){var _0x127e38={};_0x127e38[_0x140b1b[_0x3cbf('0x26')]]={'$like':'%'+_0x58f4a1[_0x3cbf('0x2b')]['filter']+'%'};return _0x127e38;}})});}_0xec5666=_[_0x3cbf('0x36')]({},_0xec5666,_0x58f4a1['options']);var _0x2be86b={'where':_0xec5666['where']};return db['Pause']['count'](_0x2be86b)['then'](function(_0xbe6504){_0x2429e3[_0x3cbf('0x1a')]=_0xbe6504;if(_0x58f4a1[_0x3cbf('0x2b')][_0x3cbf('0x3b')]){_0xec5666[_0x3cbf('0x3c')]=[{'all':!![]}];}return db[_0x3cbf('0x28')]['findAll'](_0xec5666);})[_0x3cbf('0x21')](function(_0x356578){_0x2429e3['rows']=_0x356578;return _0x2429e3;})[_0x3cbf('0x21')](respondWithFilteredResult(_0x183845,_0xec5666))['catch'](handleError(_0x183845,null));};exports[_0x3cbf('0x3d')]=function(_0x344917,_0x239c76){var _0x3eb786={'raw':!![],'where':{'id':_0x344917['params']['id']}},_0x1d4fdd={};_0x1d4fdd[_0x3cbf('0x2d')]=_['keys'](db[_0x3cbf('0x28')][_0x3cbf('0x3e')]);_0x1d4fdd[_0x3cbf('0x2b')]=_[_0x3cbf('0x3f')](_0x344917[_0x3cbf('0x2b')]);_0x1d4fdd[_0x3cbf('0x2c')]=_['intersection'](_0x1d4fdd[_0x3cbf('0x2d')],_0x1d4fdd['query']);_0x3eb786[_0x3cbf('0x2e')]=_[_0x3cbf('0x2f')](_0x1d4fdd['model'],qs[_0x3cbf('0x30')](_0x344917[_0x3cbf('0x2b')][_0x3cbf('0x30')]));_0x3eb786[_0x3cbf('0x2e')]=_0x3eb786[_0x3cbf('0x2e')]['length']?_0x3eb786[_0x3cbf('0x2e')]:_0x1d4fdd[_0x3cbf('0x2d')];if(_0x344917['query'][_0x3cbf('0x3b')]){_0x3eb786[_0x3cbf('0x3c')]=[{'all':!![]}];}_0x3eb786=_[_0x3cbf('0x36')]({},_0x3eb786,_0x344917[_0x3cbf('0x40')]);return db[_0x3cbf('0x28')][_0x3cbf('0x41')](_0x3eb786)[_0x3cbf('0x21')](handleEntityNotFound(_0x239c76,null))[_0x3cbf('0x21')](respondWithResult(_0x239c76,null))[_0x3cbf('0x42')](handleError(_0x239c76,null));};exports[_0x3cbf('0x43')]=function(_0x4f4237,_0x1cad68){return db[_0x3cbf('0x28')]['create'](_0x4f4237[_0x3cbf('0x44')],{})[_0x3cbf('0x21')](function(_0x15195a){var _0x334e0f=_0x4f4237[_0x3cbf('0x45')][_0x3cbf('0x22')]({'plain':!![]});if(!_0x334e0f)throw new Error(_0x3cbf('0x46'));if(_0x334e0f['role']===_0x3cbf('0x45')){var _0x20a08f=_0x15195a[_0x3cbf('0x22')]({'plain':!![]});var _0x5325e3=_0x3cbf('0x47');return db[_0x3cbf('0x48')]['find']({'where':{'name':_0x5325e3,'userProfileId':_0x334e0f['userProfileId']},'raw':!![]})['then'](function(_0x209d45){if(_0x209d45&&_0x209d45[_0x3cbf('0x49')]===0x0){return db[_0x3cbf('0x23')][_0x3cbf('0x43')]({'name':_0x20a08f[_0x3cbf('0x26')],'resourceId':_0x20a08f['id'],'type':_0x209d45[_0x3cbf('0x26')],'sectionId':_0x209d45['id']},{})[_0x3cbf('0x21')](function(){return _0x15195a;});}else{return _0x15195a;}})[_0x3cbf('0x42')](function(_0x5f488f){logger[_0x3cbf('0x24')](_0x3cbf('0x4a'),_0x5f488f);throw _0x5f488f;});}return _0x15195a;})['then'](respondWithResult(_0x1cad68,0xc9))[_0x3cbf('0x42')](handleError(_0x1cad68,null));};exports[_0x3cbf('0x1f')]=function(_0x3c1579,_0x4bdd23){if(_0x3c1579[_0x3cbf('0x44')]['id']){delete _0x3c1579[_0x3cbf('0x44')]['id'];}return db[_0x3cbf('0x28')][_0x3cbf('0x41')]({'where':{'id':_0x3c1579[_0x3cbf('0x4b')]['id']}})[_0x3cbf('0x21')](handleEntityNotFound(_0x4bdd23,null))[_0x3cbf('0x21')](saveUpdates(_0x3c1579[_0x3cbf('0x44')],null))[_0x3cbf('0x21')](respondWithResult(_0x4bdd23,null))[_0x3cbf('0x42')](handleError(_0x4bdd23,null));};exports['destroy']=function(_0x26f597,_0x453011){return db[_0x3cbf('0x28')][_0x3cbf('0x41')]({'where':{'id':_0x26f597[_0x3cbf('0x4b')]['id']}})[_0x3cbf('0x21')](handleEntityNotFound(_0x453011,null))[_0x3cbf('0x21')](removeEntity(_0x453011,null))[_0x3cbf('0x42')](handleError(_0x453011,null));};
\ No newline at end of file
index dac56cf..17610f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0xd5df90,_0x1f3d39){var _0x141f09=function(_0x518c70){while(--_0x518c70){_0xd5df90['push'](_0xd5df90['shift']());}};_0x141f09(++_0x1f3d39);}(_0xf494,0x1c6));var _0x4f49=function(_0x26e4f6,_0x43a921){_0x26e4f6=_0x26e4f6-0x0;var _0x55ce07=_0xf494[_0x26e4f6];return _0x55ce07;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('Pause',attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6aa7=['Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x6aa7,0x178));var _0x76aa=function(_0x2ced05,_0x25c50a){_0x2ced05=_0x2ced05-0x0;var _0x360bd0=_0x6aa7[_0x2ced05];return _0x360bd0;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var logger=require(_0x76aa('0x1'))(_0x76aa('0x2'));var moment=require(_0x76aa('0x3'));var BPromise=require(_0x76aa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x76aa('0x5'));var rimraf=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1aceaa,_0x4d53f6){return _0x1aceaa[_0x76aa('0x8')](_0x76aa('0x9'),attributes,{'tableName':_0x76aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2bb9c63..76b5908 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(_0x2d1499,_0x4f43f5){var _0x38da7c=function(_0x3a0895){while(--_0x3a0895){_0x2d1499['push'](_0x2d1499['shift']());}};_0x38da7c(++_0x4f43f5);}(_0x7a54,0x106));var _0x47a5=function(_0x49bd30,_0x17270b){_0x49bd30=_0x49bd30-0x0;var _0x380c01=_0x7a54[_0x49bd30];return _0x380c01;};'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 _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(_0xe7f54a,_0x36f2db){var _0x3ec2cb=function(_0x3a7b5a){while(--_0x3a7b5a){_0xe7f54a['push'](_0xe7f54a['shift']());}};_0x3ec2cb(++_0x36f2db);}(_0x7a54,0x106));var _0x47a5=function(_0x45e6b5,_0x1cad18){_0x45e6b5=_0x45e6b5-0x0;var _0x1100b1=_0x7a54[_0x45e6b5];return _0x1100b1;};'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
index 9015c11..d196d20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['put','/:id','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get','isAuthenticated','show','/:id/download','download','diskStorage','join','server/files/plugins','originalname','replace','%s-%s%s','basename','extname','now','post','single','file','/webhook','webhookPost'];(function(_0x447154,_0x57fc74){var _0x2dfe2d=function(_0x5c471e){while(--_0x5c471e){_0x447154['push'](_0x447154['shift']());}};_0x2dfe2d(++_0x57fc74);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0xb4e6[_0x377a6e];return _0x37f751;};'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')]('/webhook',controller['webhookGet']);router[_0x6b4e('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6b4e('0xb')]);router[_0x6b4e('0x9')](_0x6b4e('0xc'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xd')]);var upload=multer({'storage':multer[_0x6b4e('0xe')]({'destination':function(_0x323487,_0x49c734,_0x39b4ec){_0x39b4ec(null,path[_0x6b4e('0xf')](config['root'],_0x6b4e('0x10')));},'filename':function(_0x9cd7da,_0x432399,_0x2b2ce0){_0x432399[_0x6b4e('0x11')]=_0x432399[_0x6b4e('0x11')][_0x6b4e('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2b2ce0(null,util['format'](_0x6b4e('0x13'),path[_0x6b4e('0x14')](_0x432399['originalname'],path[_0x6b4e('0x15')](_0x432399['originalname'])),Date[_0x6b4e('0x16')](),path[_0x6b4e('0x15')](_0x432399[_0x6b4e('0x11')])));}})});router[_0x6b4e('0x17')]('/',upload[_0x6b4e('0x18')](_0x6b4e('0x19')),controller['upload']);router['post'](_0x6b4e('0x1a'),controller[_0x6b4e('0x1b')]);router[_0x6b4e('0x1c')](_0x6b4e('0x1d'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x1e')]);router[_0x6b4e('0x1f')](_0x6b4e('0x1d'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x1f')]);module[_0x6b4e('0x20')]=router;
\ No newline at end of file
+var _0xc978=['isAuthenticated','index','/webhook','webhookGet','/:id','show','download','diskStorage','join','root','server/files/plugins','originalname','replace','%s-%s%s','now','extname','post','single','file','upload','webhookPost','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get'];(function(_0x338375,_0xa2f40d){var _0x2e84b2=function(_0x258f01){while(--_0x258f01){_0x338375['push'](_0x338375['shift']());}};_0x2e84b2(++_0xa2f40d);}(_0xc978,0xcd));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x8c97('0x0'));var util=require(_0x8c97('0x1'));var path=require(_0x8c97('0x2'));var timeout=require(_0x8c97('0x3'));var express=require(_0x8c97('0x4'));var router=express[_0x8c97('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8c97('0x6'));var interaction=require(_0x8c97('0x7'));var config=require(_0x8c97('0x8'));var controller=require(_0x8c97('0x9'));router[_0x8c97('0xa')]('/',auth[_0x8c97('0xb')](),controller[_0x8c97('0xc')]);router['get'](_0x8c97('0xd'),controller[_0x8c97('0xe')]);router[_0x8c97('0xa')](_0x8c97('0xf'),auth[_0x8c97('0xb')](),controller[_0x8c97('0x10')]);router[_0x8c97('0xa')]('/:id/download',auth[_0x8c97('0xb')](),controller[_0x8c97('0x11')]);var upload=multer({'storage':multer[_0x8c97('0x12')]({'destination':function(_0x3a34b2,_0x400eb6,_0x949a83){_0x949a83(null,path[_0x8c97('0x13')](config[_0x8c97('0x14')],_0x8c97('0x15')));},'filename':function(_0x5cf392,_0x44611a,_0x346274){_0x44611a['originalname']=_0x44611a[_0x8c97('0x16')][_0x8c97('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x346274(null,util['format'](_0x8c97('0x18'),path['basename'](_0x44611a['originalname'],path['extname'](_0x44611a[_0x8c97('0x16')])),Date[_0x8c97('0x19')](),path[_0x8c97('0x1a')](_0x44611a[_0x8c97('0x16')])));}})});router[_0x8c97('0x1b')]('/',upload[_0x8c97('0x1c')](_0x8c97('0x1d')),controller[_0x8c97('0x1e')]);router[_0x8c97('0x1b')]('/webhook',controller[_0x8c97('0x1f')]);router[_0x8c97('0x20')](_0x8c97('0xf'),auth[_0x8c97('0xb')](),controller[_0x8c97('0x21')]);router[_0x8c97('0x22')](_0x8c97('0xf'),auth[_0x8c97('0xb')](),controller[_0x8c97('0x22')]);module[_0x8c97('0x23')]=router;
\ No newline at end of file
index b1789d3..1029261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579e=['TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','sequelize','exports','ENUM','html','script'];(function(_0x322bef,_0x4890d4){var _0x229e60=function(_0x45f89b){while(--_0x45f89b){_0x322bef['push'](_0x322bef['shift']());}};_0x229e60(++_0x4890d4);}(_0x579e,0x14d));var _0xe579=function(_0x4ba1e0,_0x3d854a){_0x4ba1e0=_0x4ba1e0-0x0;var _0x34900e=_0x579e[_0x4ba1e0];return _0x34900e;};'use strict';var Sequelize=require(_0xe579('0x0'));module[_0xe579('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe579('0x2')](_0xe579('0x3'),_0xe579('0x4'))},'description':{'type':Sequelize[_0xe579('0x5')]},'version':{'type':Sequelize[_0xe579('0x5')]},'path':{'type':Sequelize['STRING'],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xe579('0x6')],'defaultValue':0x0,'comment':_0xe579('0x7')},'sidebar':{'type':Sequelize['ENUM']('adminOnly',_0xe579('0x8'),_0xe579('0x9'),_0xe579('0xa')),'defaultValue':_0xe579('0x9'),'comment':_0xe579('0xb')},'icon':{'type':Sequelize[_0xe579('0xc')]},'adminUrl':{'type':Sequelize[_0xe579('0xc')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xe579('0xc')]},'scriptPath':{'type':Sequelize[_0xe579('0xc')]}};
\ No newline at end of file
+var _0x8edf=['Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','html','TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x8edf,0x1d5));var _0xf8ed=function(_0x57a353,_0x21498d){_0x57a353=_0x57a353-0x0;var _0x4d1690=_0x8edf[_0x57a353];return _0x4d1690;};'use strict';var Sequelize=require(_0xf8ed('0x0'));module[_0xf8ed('0x1')]={'name':{'type':Sequelize[_0xf8ed('0x2')]},'type':{'type':Sequelize['ENUM'](_0xf8ed('0x3'),'script')},'description':{'type':Sequelize[_0xf8ed('0x4')]},'version':{'type':Sequelize[_0xf8ed('0x4')]},'path':{'type':Sequelize[_0xf8ed('0x2')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xf8ed('0x5')],'defaultValue':0x0,'comment':_0xf8ed('0x6')},'sidebar':{'type':Sequelize['ENUM'](_0xf8ed('0x7'),_0xf8ed('0x8'),_0xf8ed('0x9'),_0xf8ed('0xa')),'defaultValue':'always','comment':_0xf8ed('0xb')},'icon':{'type':Sequelize[_0xf8ed('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xf8ed('0x2')]},'scriptName':{'type':Sequelize[_0xf8ed('0x2')]},'scriptPath':{'type':Sequelize[_0xf8ed('0x2')]}};
\ No newline at end of file
index 3a52d3d..16e0f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x813b=['Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','Invalid\x20manifest:\x20views\x20missing','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','html','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','create','unlinkSync','Zip\x20archive\x20removed','delete','dirname','webhookGet','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','reject','save','update','then','destroy','Plugins','UserProfileResource','end','error','stack','name','send','index','Plugin','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','findAll','rows','params','length','include','find','catch','download','path','join','format','createWriteStream','zip','warning','code','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','root','server/files/plugins','node_modules/**/*','basename','attachments/**/*','finalize','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','upload','file','extname','filename'];(function(_0x5146f3,_0xe728c4){var _0x2672bb=function(_0x5a4a34){while(--_0x5a4a34){_0x5146f3['push'](_0x5146f3['shift']());}};_0x2672bb(++_0xe728c4);}(_0x813b,0xf0));var _0xb813=function(_0x41080d,_0x213a8c){_0x41080d=_0x41080d-0x0;var _0x5f2f4d=_0x813b[_0x41080d];return _0x5f2f4d;};'use strict';var emlformat=require(_0xb813('0x0'));var rimraf=require(_0xb813('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb813('0x2'));var rp=require(_0xb813('0x3'));var moment=require(_0xb813('0x4'));var BPromise=require(_0xb813('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xb813('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb813('0x7'));var _=require(_0xb813('0x8'));var squel=require(_0xb813('0x9'));var crypto=require(_0xb813('0xa'));var jsforce=require(_0xb813('0xb'));var deskjs=require(_0xb813('0xc'));var toCsv=require(_0xb813('0x6'));var querystring=require(_0xb813('0xd'));var Papa=require(_0xb813('0xe'));var extract=require(_0xb813('0xf'));var rimraf=require(_0xb813('0x1'));var archiver=require(_0xb813('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb813('0x11'));var hardwareService=require(_0xb813('0x12'));var logger=require(_0xb813('0x13'))(_0xb813('0x14'));var utils=require(_0xb813('0x15'));var config=require(_0xb813('0x16'));var licenseUtil=require(_0xb813('0x17'));var db=require(_0xb813('0x18'))['db'];config[_0xb813('0x19')]=_[_0xb813('0x1a')](config[_0xb813('0x19')],{'host':_0xb813('0x1b'),'port':0x18eb});var socket=require(_0xb813('0x1c'))(new Redis(config['redis']));require(_0xb813('0x1d'))[_0xb813('0x1e')](socket);function respondWithStatusCode(_0x14ee61,_0x5319f0){_0x5319f0=_0x5319f0||0xcc;return function(_0x4f6b05){if(_0x4f6b05){return _0x14ee61[_0xb813('0x1f')](_0x5319f0);}return _0x14ee61['status'](_0x5319f0)['end']();};}function respondWithResult(_0x1672c3,_0x584985){_0x584985=_0x584985||0xc8;return function(_0x51f684){if(_0x51f684){return _0x1672c3['status'](_0x584985)[_0xb813('0x20')](_0x51f684);}};}function respondWithFilteredResult(_0x3ee94c,_0x3a6868){return function(_0xc64a9c){if(_0xc64a9c){var _0x7382d1=typeof _0x3a6868[_0xb813('0x21')]==='undefined'&&typeof _0x3a6868[_0xb813('0x22')]===_0xb813('0x23');var _0x345105=_0xc64a9c['count'];var _0x5aefca=_0x7382d1?0x0:_0x3a6868[_0xb813('0x21')];var _0x4cbbc7=_0x7382d1?_0xc64a9c[_0xb813('0x24')]:_0x3a6868[_0xb813('0x21')]+_0x3a6868[_0xb813('0x22')];var _0x2b6f79;if(_0x4cbbc7>=_0x345105){_0x4cbbc7=_0x345105;_0x2b6f79=0xc8;}else{_0x2b6f79=0xce;}_0x3ee94c[_0xb813('0x25')](_0x2b6f79);return _0x3ee94c[_0xb813('0x26')](_0xb813('0x27'),_0x5aefca+'-'+_0x4cbbc7+'/'+_0x345105)[_0xb813('0x20')](_0xc64a9c);}return null;};}function patchUpdates(_0xce7434){return function(_0x88f6d){try{jsonpatch['apply'](_0x88f6d,_0xce7434,!![]);}catch(_0x229e71){return BPromise[_0xb813('0x28')](_0x229e71);}return _0x88f6d[_0xb813('0x29')]();};}function saveUpdates(_0x207bce,_0x3772b2){return function(_0x74a902){if(_0x74a902){return _0x74a902[_0xb813('0x2a')](_0x207bce)[_0xb813('0x2b')](function(_0x2466d8){return _0x2466d8;});}return null;};}function removeEntity(_0x3946c7,_0x2976b1){return function(_0x556d14){if(_0x556d14){return _0x556d14[_0xb813('0x2c')]()[_0xb813('0x2b')](function(){var _0x2960ad=_0x556d14['get']({'plain':!![]});var _0x5dbbcb=_0xb813('0x2d');return db[_0xb813('0x2e')][_0xb813('0x2c')]({'where':{'type':_0x5dbbcb,'resourceId':_0x2960ad['id']}})['then'](function(){return _0x556d14;});})[_0xb813('0x2b')](function(){_0x3946c7[_0xb813('0x25')](0xcc)[_0xb813('0x2f')]();});}};}function handleEntityNotFound(_0x34b1ef,_0x1edae3){return function(_0x563bf1){if(!_0x563bf1){_0x34b1ef[_0xb813('0x1f')](0x194);}return _0x563bf1;};}function handleError(_0x1c987f,_0x1a3c11){_0x1a3c11=_0x1a3c11||0x1f4;return function(_0x2060d8){logger[_0xb813('0x30')](_0x2060d8[_0xb813('0x31')]);if(_0x2060d8[_0xb813('0x32')]){delete _0x2060d8[_0xb813('0x32')];}_0x1c987f['status'](_0x1a3c11)[_0xb813('0x33')](_0x2060d8);};}exports[_0xb813('0x34')]=function(_0x253b7c,_0xdd5341){var _0x16f388={},_0x1ef104={},_0xe5056d={'count':0x0,'rows':[]};var _0x2f6a9a=_['map'](db[_0xb813('0x35')][_0xb813('0x36')],function(_0x30edee){return{'name':_0x30edee[_0xb813('0x37')],'type':_0x30edee[_0xb813('0x38')][_0xb813('0x39')]};});_0x1ef104[_0xb813('0x3a')]=_[_0xb813('0x3b')](_0x2f6a9a,'name');_0x1ef104[_0xb813('0x3c')]=_[_0xb813('0x3d')](_0x253b7c[_0xb813('0x3c')]);_0x1ef104[_0xb813('0x3e')]=_[_0xb813('0x3f')](_0x1ef104[_0xb813('0x3a')],_0x1ef104[_0xb813('0x3c')]);_0x16f388['attributes']=_[_0xb813('0x3f')](_0x1ef104[_0xb813('0x3a')],qs[_0xb813('0x40')](_0x253b7c['query'][_0xb813('0x40')]));_0x16f388[_0xb813('0x41')]=_0x16f388[_0xb813('0x41')]['length']?_0x16f388[_0xb813('0x41')]:_0x1ef104[_0xb813('0x3a')];if(!_0x253b7c['query']['hasOwnProperty'](_0xb813('0x42'))){_0x16f388[_0xb813('0x22')]=qs[_0xb813('0x22')](_0x253b7c['query']['limit']);_0x16f388[_0xb813('0x21')]=qs[_0xb813('0x21')](_0x253b7c[_0xb813('0x3c')][_0xb813('0x21')]);}_0x16f388[_0xb813('0x43')]=qs[_0xb813('0x44')](_0x253b7c[_0xb813('0x3c')][_0xb813('0x44')]);_0x16f388[_0xb813('0x45')]=qs['filters'](_['pick'](_0x253b7c[_0xb813('0x3c')],_0x1ef104[_0xb813('0x3e')]),_0x2f6a9a);if(_0x253b7c['query']['filter']){_0x16f388[_0xb813('0x45')]=_[_0xb813('0x46')](_0x16f388[_0xb813('0x45')],{'$or':_[_0xb813('0x3b')](_0x2f6a9a,function(_0x6adb){if(_0x6adb['type']!==_0xb813('0x47')){var _0x48f883={};_0x48f883[_0x6adb[_0xb813('0x32')]]={'$like':'%'+_0x253b7c[_0xb813('0x3c')]['filter']+'%'};return _0x48f883;}})});}_0x16f388=_[_0xb813('0x46')]({},_0x16f388,_0x253b7c[_0xb813('0x48')]);var _0x212f25={'where':_0x16f388[_0xb813('0x45')]};return db[_0xb813('0x35')][_0xb813('0x24')](_0x212f25)[_0xb813('0x2b')](function(_0x16bdbc){_0xe5056d[_0xb813('0x24')]=_0x16bdbc;if(_0x253b7c[_0xb813('0x3c')][_0xb813('0x49')]){_0x16f388['include']=[{'all':!![]}];}return db['Plugin'][_0xb813('0x4a')](_0x16f388);})[_0xb813('0x2b')](function(_0x252223){_0xe5056d[_0xb813('0x4b')]=_0x252223;return _0xe5056d;})[_0xb813('0x2b')](respondWithFilteredResult(_0xdd5341,_0x16f388))['catch'](handleError(_0xdd5341,null));};exports['show']=function(_0x10df9f,_0x382a9f){var _0x2902be={'raw':!![],'where':{'id':_0x10df9f[_0xb813('0x4c')]['id']}},_0xafcd18={};_0xafcd18[_0xb813('0x3a')]=_[_0xb813('0x3d')](db['Plugin']['rawAttributes']);_0xafcd18['query']=_[_0xb813('0x3d')](_0x10df9f[_0xb813('0x3c')]);_0xafcd18[_0xb813('0x3e')]=_[_0xb813('0x3f')](_0xafcd18[_0xb813('0x3a')],_0xafcd18[_0xb813('0x3c')]);_0x2902be[_0xb813('0x41')]=_[_0xb813('0x3f')](_0xafcd18['model'],qs[_0xb813('0x40')](_0x10df9f['query']['fields']));_0x2902be[_0xb813('0x41')]=_0x2902be['attributes'][_0xb813('0x4d')]?_0x2902be[_0xb813('0x41')]:_0xafcd18[_0xb813('0x3a')];if(_0x10df9f[_0xb813('0x3c')][_0xb813('0x49')]){_0x2902be[_0xb813('0x4e')]=[{'all':!![]}];}_0x2902be=_['merge']({},_0x2902be,_0x10df9f[_0xb813('0x48')]);return db[_0xb813('0x35')][_0xb813('0x4f')](_0x2902be)[_0xb813('0x2b')](handleEntityNotFound(_0x382a9f,null))[_0xb813('0x2b')](respondWithResult(_0x382a9f,null))[_0xb813('0x50')](handleError(_0x382a9f,null));};exports[_0xb813('0x51')]=function(_0x3a5467,_0x4296ae,_0x5c457b){return db['Plugin'][_0xb813('0x4f')]({'where':{'id':_0x3a5467[_0xb813('0x4c')]['id']},'attributes':[_0xb813('0x32'),_0xb813('0x52')],'raw':!![]})[_0xb813('0x2b')](handleEntityNotFound(_0x4296ae,null))[_0xb813('0x2b')](function(_0xfca1fd){if(_0xfca1fd){var _0x177e4c=path[_0xb813('0x53')](config['root'],'server/files/plugins',util[_0xb813('0x54')]('%s.zip',path['basename'](_0xfca1fd[_0xb813('0x52')])));var _0x399215=fs[_0xb813('0x55')](_0x177e4c);var _0x2e17cd=archiver(_0xb813('0x56'),{'zlib':{'level':0x9}});_0x2e17cd['on'](_0xb813('0x57'),function(_0x5a44d1){if(_0x5a44d1[_0xb813('0x58')]==='ENOENT'){logger['error'](_0x5a44d1);}else{throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x5b'));}});_0x2e17cd['on'](_0xb813('0x30'),function(_0x2db29a){throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x5b'));});_0x2e17cd[_0xb813('0x5c')](_0x399215);_0x2e17cd[_0xb813('0x5d')](_0xb813('0x5e'),{'cwd':path[_0xb813('0x53')](config[_0xb813('0x5f')],_0xb813('0x60'),path['dirname'](_0xfca1fd['path'])),'ignore':[path[_0xb813('0x53')](path['basename'](_0xfca1fd[_0xb813('0x52')]),_0xb813('0x61')),path[_0xb813('0x53')](path[_0xb813('0x62')](_0xfca1fd['path']),_0xb813('0x63'))],'nodir':!![]})[_0xb813('0x64')]();_0x399215['on']('close',function(){if(!fs['existsSync'](_0x177e4c)){throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x65'));}return _0x4296ae[_0xb813('0x51')](_0x177e4c,util[_0xb813('0x54')](_0xb813('0x66'),path['basename'](_0xfca1fd[_0xb813('0x52')])),function(_0x37074c){if(_0x37074c){throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x67'));}fs['unlinkSync'](_0x177e4c);logger[_0xb813('0x68')](_0xb813('0x69'));logger['info']('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x4296ae,null));};exports[_0xb813('0x6a')]=function(_0xbc78e7,_0x3f4615,_0x3227ca){var _0x3dfba7=path[_0xb813('0x62')](_0xbc78e7[_0xb813('0x6b')]['filename'],path[_0xb813('0x6c')](_0xbc78e7[_0xb813('0x6b')][_0xb813('0x6d')]));var _0x10036f=path[_0xb813('0x53')](config['root'],_0xb813('0x60'),_0xbc78e7[_0xb813('0x6b')][_0xb813('0x6d')]);var _0x1d61d8=path[_0xb813('0x53')](config[_0xb813('0x5f')],'server/files/plugins',_0x3dfba7);logger[_0xb813('0x68')](_0xb813('0x6e'),_0x10036f);logger[_0xb813('0x68')](_0xb813('0x6f'),_0x1d61d8);try{fs[_0xb813('0x70')](_0x10036f,parseInt(_0xb813('0x71'),0x8));extract(_0x10036f,{'dir':_0x1d61d8},function(_0x69577d){if(_0x69577d){logger['error'](_0x69577d);handleError(_0x69577d,!![]);};var _0x2961f6=fs['readdirSync'](_0x1d61d8);if(_0x2961f6[_0xb813('0x4d')]>0x1){removeReferences(_0x10036f,_0x1d61d8);logger['error'](_0xb813('0x72'));return _0x3227ca(new Error(_0xb813('0x72')));}var _0x1532d4=fs[_0xb813('0x73')](path[_0xb813('0x53')](_0x1d61d8,_0x2961f6[0x0]));if(_0x1532d4[_0xb813('0x74')]()){removeReferences(_0x10036f,_0x1d61d8);logger[_0xb813('0x30')](_0xb813('0x72'));return _0x3227ca(new Error(_0xb813('0x72')));}if(_0x1532d4[_0xb813('0x75')]()){var _0x59963c=fs[_0xb813('0x76')](path['join'](_0x1d61d8,_0x2961f6[0x0]));if(_0x59963c[_0xb813('0x4d')]===0x0){removeReferences(_0x10036f,_0x1d61d8);logger[_0xb813('0x30')](_0xb813('0x72'));return _0x3227ca(new Error('Invalid\x20plugin\x20structure'));}var _0x3dd640=_0x59963c[_0xb813('0x77')](function(_0xb1cce7){return _0xb1cce7===_0xb813('0x78');});if(!_0x3dd640){return _0x3227ca(new Error(_0xb813('0x79')));}var _0x1be0a6=fs[_0xb813('0x7a')](path[_0xb813('0x53')](_0x1d61d8,_0x2961f6[0x0],'manifest.json'));var _0x39820a=JSON['parse'](_0x1be0a6);if('undefined'==typeof _0x39820a[_0xb813('0x32')]){return _0x3227ca(new Error(_0xb813('0x7b')));}if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x38')]){return _0x3227ca(new Error(_0xb813('0x7c')));}if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x7d')]){return _0x3227ca(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if('undefined'==typeof _0x39820a[_0xb813('0x7e')]){return _0x3227ca(new Error(_0xb813('0x7f')));}if(_0x39820a[_0xb813('0x38')]==='html'){if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x7e')]['views']){return _0x3227ca(new Error(_0xb813('0x80')));}if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')]['admin']&&'undefined'==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x82')]){return _0x3227ca(new Error(_0xb813('0x83')));}}else if(_0x39820a['type']===_0xb813('0x84')){if('undefined'==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x85')]){return _0x3227ca(new Error(_0xb813('0x86')));}if('undefined'==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x87')]){return _0x3227ca(new Error(_0xb813('0x88')));}}else{return _0x3227ca(new Error(_0xb813('0x89')));}var _0x5bff0d=_0x39820a[_0xb813('0x32')];var _0x228e94=_0x39820a[_0xb813('0x8a')];var _0x1995db=_0x39820a[_0xb813('0x38')];var _0x341e81=_0x39820a[_0xb813('0x8b')]?_0x39820a[_0xb813('0x8b')]:_0xb813('0x8c');var _0x53876d=_0x39820a[_0xb813('0x8d')]?_0x39820a[_0xb813('0x8d')]:_0xb813('0x8e');var _0x3fdfa9='';var _0x5e28e0='';var _0x2c2034='';var _0x2afb74='';var _0x462d65=_0x39820a[_0xb813('0x7d')];if(_0x1995db===_0xb813('0x8f')){if(_0xb813('0x23')!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x90')]){var _0x48db79=_0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x90')];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x48db79)){_0x3fdfa9=path[_0xb813('0x53')](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x48db79);}else{_0x3fdfa9=_0x48db79;}}else{logger['info'](_0xb813('0x93'));}if('undefined'!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')]['agent']){var _0x19b5bc=_0x39820a[_0xb813('0x7e')]['views'][_0xb813('0x82')];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x19b5bc)){_0x5e28e0=path[_0xb813('0x53')](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x19b5bc);}else{_0x5e28e0=_0x19b5bc;}}else{logger['info'](_0xb813('0x94'));}}else if(_0x1995db===_0xb813('0x84')){_0x2c2034=_0x39820a[_0xb813('0x7e')]['scriptName'];_0x2afb74=_0x39820a[_0xb813('0x7e')][_0xb813('0x87')];if('undefined'!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')]){if(_0xb813('0x23')!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x90')]){var _0x48db79=_0x39820a[_0xb813('0x7e')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x48db79)){_0x3fdfa9=path['join'](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x48db79);}else{_0x3fdfa9=_0x48db79;}}if(_0xb813('0x23')!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x82')]){var _0x19b5bc=_0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x82')];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x19b5bc)){_0x5e28e0=path[_0xb813('0x53')](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x19b5bc);}else{_0x5e28e0=_0x19b5bc;}}}}var _0x501fa2={'name':_0x5bff0d,'description':_0x228e94,'path':path[_0xb813('0x53')](_0x3dfba7,_0x2961f6[0x0]),'type':_0x1995db,'sidebar':_0x341e81,'icon':_0x53876d,'adminUrl':_0x3fdfa9,'agentUrl':_0x5e28e0,'scriptName':_0x2c2034,'scriptPath':_0x2afb74,'version':_0x462d65};removeReferences(_0x10036f,null);return db['Plugin']['create'](_0x501fa2)[_0xb813('0x2b')](function(_0x44c9a5){var _0x3ee57c={'role':_0xbc78e7[_0xb813('0x95')]['role'],'userProfileId':_0xbc78e7[_0xb813('0x95')][_0xb813('0x96')]};if(!_0x3ee57c)throw new Error(_0xb813('0x97'));if(_0x3ee57c[_0xb813('0x98')]===_0xb813('0x99')){var _0x525ec9=_0x44c9a5[_0xb813('0x9a')]({'plain':!![]});return db[_0xb813('0x9b')][_0xb813('0x4f')]({'where':{'name':_0xb813('0x2d'),'userProfileId':_0x3ee57c[_0xb813('0x96')]},'raw':!![]})[_0xb813('0x2b')](function(_0x49e792){if(_0x49e792&&_0x49e792['autoAssociation']===0x0){return db['UserProfileResource'][_0xb813('0x9c')]({'name':_0x525ec9[_0xb813('0x32')],'resourceId':_0x525ec9['id'],'type':_0x49e792[_0xb813('0x32')],'sectionId':_0x49e792['id']},{})[_0xb813('0x2b')](function(){return _0x44c9a5;});}else{return _0x44c9a5;}})[_0xb813('0x50')](function(_0x3d9a73){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d9a73);throw _0x3d9a73;});}return _0x44c9a5;})['then'](respondWithResult(_0x3f4615,null))[_0xb813('0x50')](handleError(_0x3f4615,null));}});}catch(_0x49bf5a){_0x3f4615[_0xb813('0x25')](0x1f4)['send'](_0x49bf5a);}};function removeReferences(_0x1df7b1,_0x19f915){try{if(_0x1df7b1){fs[_0xb813('0x9d')](_0x1df7b1);logger[_0xb813('0x68')](_0xb813('0x9e'));}if(_0x19f915){rimraf(_0x19f915,function(){});logger[_0xb813('0x68')]('Extracted\x20folder\x20removed');}}catch(_0x400ef1){logger[_0xb813('0x30')](_0x400ef1);}}exports[_0xb813('0x2a')]=function(_0x662979,_0x4e596d,_0x1a224f){return db[_0xb813('0x35')][_0xb813('0x4f')]({'where':{'id':_0x662979[_0xb813('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4e596d,null))[_0xb813('0x2b')](saveUpdates(_0x662979[_0xb813('0x95')],null))[_0xb813('0x2b')](respondWithResult(_0x4e596d,null))['catch'](handleError(_0x4e596d,null));};exports[_0xb813('0x9f')]=function(_0x4aefb2,_0x339a3a,_0x1f40be){return db[_0xb813('0x35')][_0xb813('0x4f')]({'where':{'id':_0x4aefb2[_0xb813('0x4c')]['id']}})[_0xb813('0x2b')](function(_0x29d700){if(_0x29d700){return _0x29d700[_0xb813('0x2c')]();}})[_0xb813('0x2b')](function(_0x559199){rimraf(path[_0xb813('0x53')](config[_0xb813('0x5f')],_0xb813('0x60'),path[_0xb813('0xa0')](_0x559199[_0xb813('0x52')])),function(){});return _0x559199;})[_0xb813('0x2b')](handleEntityNotFound(_0x339a3a,null))[_0xb813('0x2b')](respondWithStatusCode(_0x339a3a,null))[_0xb813('0x50')](handleError(_0x339a3a,null));};exports[_0xb813('0xa1')]=function(_0x16d235,_0x24038c,_0x726d5a){return BPromise[_0xb813('0xa2')]()[_0xb813('0x2b')](function(){if(!_0x16d235[_0xb813('0x3c')][_0xb813('0x52')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x16d235['query'][_0xb813('0xa3')]){throw new Error(_0xb813('0xa4'));}var _0x774dd8=_0x16d235[_0xb813('0x3c')][_0xb813('0xa5')]?_0x16d235['query'][_0xb813('0xa5')]+':'+_0x16d235['query'][_0xb813('0xa3')]:'http://localhost:'+_0x16d235['query']['port'];var _0x1d287a=_0x16d235[_0xb813('0x3c')][_0xb813('0x20')]?_0x16d235['query'][_0xb813('0x20')]:!![];var _0x1481a0=_0x16d235[_0xb813('0x3c')][_0xb813('0xa6')]?_0x16d235['query'][_0xb813('0xa6')]:null;var _0x2049d3={'method':_0x16d235[_0xb813('0xa7')],'uri':util['format'](_0xb813('0xa8'),_0x774dd8,_0x16d235[_0xb813('0x3c')][_0xb813('0x52')]),'json':_0x1d287a,'resolveWithFullResponse':!![],'encoding':_0x1481a0,'qs':_0x16d235[_0xb813('0x3c')]};if(_0x16d235[_0xb813('0xa9')]){_0x2049d3[_0xb813('0xa9')]=_0x16d235['headers'];if(_0x2049d3[_0xb813('0xa9')][_0xb813('0xaa')]){delete _0x2049d3['headers'][_0xb813('0xaa')];}}if(_0x2049d3[_0xb813('0xa9')][_0xb813('0xab')]){delete _0x2049d3[_0xb813('0xa9')][_0xb813('0xab')];}return rp(_0x2049d3);})['then'](function(_0x3e8692){if(_0x3e8692){_0x24038c[_0xb813('0x26')](_0x3e8692[_0xb813('0xa9')]);logger['info'](_0x3e8692['body']);if(_['endsWith'](_0x16d235[_0xb813('0x3c')][_0xb813('0x52')],_0xb813('0x51'))&&_0x3e8692['statusCode']==0x1f4){return _0x24038c[_0xb813('0x1f')](_0x3e8692[_0xb813('0xac')]);}else{return _0x24038c[_0xb813('0x25')](_0x3e8692['statusCode'])[_0xb813('0x33')](_0x3e8692[_0xb813('0x95')]);}}else{return _0x24038c[_0xb813('0x1f')](0xc8);}})['catch'](handleError(_0x24038c,null));};exports[_0xb813('0xad')]=function(_0x142e23,_0x1c4497,_0x5e02af){return BPromise[_0xb813('0xa2')]()[_0xb813('0x2b')](function(){if(!_0x142e23[_0xb813('0x3c')]['path']){throw new Error(_0xb813('0xae'));}if(!_0x142e23['query'][_0xb813('0xa3')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x322c21=_0x142e23['query'][_0xb813('0xa5')]?_0x142e23[_0xb813('0x3c')][_0xb813('0xa5')]+':'+_0x142e23[_0xb813('0x3c')][_0xb813('0xa3')]:'http://localhost:'+_0x142e23[_0xb813('0x3c')][_0xb813('0xa3')];var _0xf17d5f=_0x142e23[_0xb813('0x3c')][_0xb813('0x20')]?_0x142e23[_0xb813('0x3c')][_0xb813('0x20')]:!![];var _0x5a7f03=_0x142e23[_0xb813('0x3c')][_0xb813('0xa6')]?_0x142e23[_0xb813('0x3c')]['encoding']:null;var _0x32c622={'method':_0x142e23[_0xb813('0xa7')],'uri':util[_0xb813('0x54')]('%s%s',_0x322c21,_0x142e23[_0xb813('0x3c')][_0xb813('0x52')]),'json':_0xf17d5f,'resolveWithFullResponse':!![],'encoding':_0x5a7f03,'body':_0x142e23['body']};if(_0x142e23[_0xb813('0xa9')]){_0x32c622['headers']=_0x142e23[_0xb813('0xa9')];if(_0x32c622[_0xb813('0xa9')]['content-length']){delete _0x32c622[_0xb813('0xa9')][_0xb813('0xaa')];}}if(_0x32c622[_0xb813('0xa9')]['content-type']){delete _0x32c622['headers']['content-type'];}return rp(_0x32c622);})[_0xb813('0x2b')](function(_0x44bf8d){if(_0x44bf8d){_0x1c4497[_0xb813('0x26')](_0x44bf8d[_0xb813('0xa9')]);logger[_0xb813('0x68')](_0x44bf8d['body']);return _0x1c4497[_0xb813('0x25')](_0x44bf8d[_0xb813('0xac')])[_0xb813('0x33')](_0x44bf8d[_0xb813('0x95')]);}else{return _0x1c4497[_0xb813('0x1f')](0xc8);}})[_0xb813('0x50')](handleError(_0x1c4497,null));};
\ No newline at end of file
+var _0x724a=['rows','catch','show','params','keys','find','join','root','server/files/plugins','%s.zip','basename','createWriteStream','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','**/*','node_modules/**/*','close','existsSync','download','format','Error\x20while\x20downloading\x20the\x20plugin','Download\x20completed','info','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','Plugin\x20manifest\x20missing','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','icon','version','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptPath','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','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','endsWith','statusCode','webhookPost','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','send','map','Plugin','rawAttributes','fieldName','key','model','intersection','query','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll'];(function(_0x2cbf91,_0x4fb74b){var _0x565d1e=function(_0x14b4e6){while(--_0x14b4e6){_0x2cbf91['push'](_0x2cbf91['shift']());}};_0x565d1e(++_0x4fb74b);}(_0x724a,0x1b2));var _0xa724=function(_0x26a1dc,_0x380fb3){_0x26a1dc=_0x26a1dc-0x0;var _0x529678=_0x724a[_0x26a1dc];return _0x529678;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa724('0x0'));var zipdir=require(_0xa724('0x1'));var jsonpatch=require(_0xa724('0x2'));var rp=require(_0xa724('0x3'));var moment=require(_0xa724('0x4'));var BPromise=require(_0xa724('0x5'));var Mustache=require(_0xa724('0x6'));var util=require(_0xa724('0x7'));var path=require(_0xa724('0x8'));var sox=require(_0xa724('0x9'));var csv=require(_0xa724('0xa'));var ejs=require(_0xa724('0xb'));var fs=require('fs');var fs_extra=require(_0xa724('0xc'));var _=require('lodash');var squel=require(_0xa724('0xd'));var crypto=require(_0xa724('0xe'));var jsforce=require(_0xa724('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xa724('0xa'));var querystring=require('querystring');var Papa=require(_0xa724('0x10'));var extract=require(_0xa724('0x11'));var rimraf=require(_0xa724('0x0'));var archiver=require(_0xa724('0x12'));var Redis=require(_0xa724('0x13'));var authService=require(_0xa724('0x14'));var qs=require(_0xa724('0x15'));var as=require(_0xa724('0x16'));var hardwareService=require(_0xa724('0x17'));var logger=require(_0xa724('0x18'))(_0xa724('0x19'));var utils=require(_0xa724('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xa724('0x1b'));var db=require(_0xa724('0x1c'))['db'];config[_0xa724('0x1d')]=_[_0xa724('0x1e')](config[_0xa724('0x1d')],{'host':_0xa724('0x1f'),'port':0x18eb});var socket=require(_0xa724('0x20'))(new Redis(config[_0xa724('0x1d')]));require(_0xa724('0x21'))['register'](socket);function respondWithStatusCode(_0x20b068,_0x187c21){_0x187c21=_0x187c21||0xcc;return function(_0x58c65f){if(_0x58c65f){return _0x20b068[_0xa724('0x22')](_0x187c21);}return _0x20b068[_0xa724('0x23')](_0x187c21)[_0xa724('0x24')]();};}function respondWithResult(_0x5c1f88,_0x1f79a5){_0x1f79a5=_0x1f79a5||0xc8;return function(_0x28d621){if(_0x28d621){return _0x5c1f88['status'](_0x1f79a5)[_0xa724('0x25')](_0x28d621);}};}function respondWithFilteredResult(_0x52ee1f,_0x3984da){return function(_0x127ac7){if(_0x127ac7){var _0x458bf5=typeof _0x3984da['offset']===_0xa724('0x26')&&typeof _0x3984da[_0xa724('0x27')]===_0xa724('0x26');var _0x2a244e=_0x127ac7[_0xa724('0x28')];var _0x202142=_0x458bf5?0x0:_0x3984da[_0xa724('0x29')];var _0x2c23e1=_0x458bf5?_0x127ac7['count']:_0x3984da[_0xa724('0x29')]+_0x3984da[_0xa724('0x27')];var _0x521e61;if(_0x2c23e1>=_0x2a244e){_0x2c23e1=_0x2a244e;_0x521e61=0xc8;}else{_0x521e61=0xce;}_0x52ee1f[_0xa724('0x23')](_0x521e61);return _0x52ee1f[_0xa724('0x2a')]('Content-Range',_0x202142+'-'+_0x2c23e1+'/'+_0x2a244e)[_0xa724('0x25')](_0x127ac7);}return null;};}function patchUpdates(_0x161671){return function(_0xab8342){try{jsonpatch['apply'](_0xab8342,_0x161671,!![]);}catch(_0x1763fb){return BPromise[_0xa724('0x2b')](_0x1763fb);}return _0xab8342[_0xa724('0x2c')]();};}function saveUpdates(_0x2ab2fd,_0x294451){return function(_0x530b15){if(_0x530b15){return _0x530b15[_0xa724('0x2d')](_0x2ab2fd)[_0xa724('0x2e')](function(_0x11430d){return _0x11430d;});}return null;};}function removeEntity(_0x1964bf,_0x218dfc){return function(_0x3dea3c){if(_0x3dea3c){return _0x3dea3c[_0xa724('0x2f')]()[_0xa724('0x2e')](function(){var _0x50afbe=_0x3dea3c[_0xa724('0x30')]({'plain':!![]});var _0x47a265=_0xa724('0x31');return db[_0xa724('0x32')][_0xa724('0x2f')]({'where':{'type':_0x47a265,'resourceId':_0x50afbe['id']}})[_0xa724('0x2e')](function(){return _0x3dea3c;});})[_0xa724('0x2e')](function(){_0x1964bf[_0xa724('0x23')](0xcc)[_0xa724('0x24')]();});}};}function handleEntityNotFound(_0x10e9e,_0x12de96){return function(_0x31ed8f){if(!_0x31ed8f){_0x10e9e[_0xa724('0x22')](0x194);}return _0x31ed8f;};}function handleError(_0x2f8858,_0x4938ee){_0x4938ee=_0x4938ee||0x1f4;return function(_0x244859){logger[_0xa724('0x33')](_0x244859[_0xa724('0x34')]);if(_0x244859[_0xa724('0x35')]){delete _0x244859[_0xa724('0x35')];}_0x2f8858[_0xa724('0x23')](_0x4938ee)[_0xa724('0x36')](_0x244859);};}exports['index']=function(_0x4df15a,_0x1c26c3){var _0x188256={},_0x288efb={},_0x43af0a={'count':0x0,'rows':[]};var _0x4e3279=_[_0xa724('0x37')](db[_0xa724('0x38')][_0xa724('0x39')],function(_0x42885e){return{'name':_0x42885e[_0xa724('0x3a')],'type':_0x42885e['type'][_0xa724('0x3b')]};});_0x288efb[_0xa724('0x3c')]=_[_0xa724('0x37')](_0x4e3279,_0xa724('0x35'));_0x288efb['query']=_['keys'](_0x4df15a['query']);_0x288efb['filters']=_[_0xa724('0x3d')](_0x288efb[_0xa724('0x3c')],_0x288efb[_0xa724('0x3e')]);_0x188256[_0xa724('0x3f')]=_[_0xa724('0x3d')](_0x288efb[_0xa724('0x3c')],qs[_0xa724('0x40')](_0x4df15a['query'][_0xa724('0x40')]));_0x188256[_0xa724('0x3f')]=_0x188256['attributes'][_0xa724('0x41')]?_0x188256[_0xa724('0x3f')]:_0x288efb['model'];if(!_0x4df15a['query']['hasOwnProperty'](_0xa724('0x42'))){_0x188256['limit']=qs['limit'](_0x4df15a[_0xa724('0x3e')][_0xa724('0x27')]);_0x188256[_0xa724('0x29')]=qs[_0xa724('0x29')](_0x4df15a[_0xa724('0x3e')][_0xa724('0x29')]);}_0x188256[_0xa724('0x43')]=qs[_0xa724('0x44')](_0x4df15a[_0xa724('0x3e')]['sort']);_0x188256[_0xa724('0x45')]=qs[_0xa724('0x46')](_[_0xa724('0x47')](_0x4df15a[_0xa724('0x3e')],_0x288efb['filters']),_0x4e3279);if(_0x4df15a[_0xa724('0x3e')][_0xa724('0x48')]){_0x188256[_0xa724('0x45')]=_[_0xa724('0x49')](_0x188256[_0xa724('0x45')],{'$or':_[_0xa724('0x37')](_0x4e3279,function(_0x23f48b){if(_0x23f48b[_0xa724('0x4a')]!=='VIRTUAL'){var _0x4981a3={};_0x4981a3[_0x23f48b[_0xa724('0x35')]]={'$like':'%'+_0x4df15a[_0xa724('0x3e')][_0xa724('0x48')]+'%'};return _0x4981a3;}})});}_0x188256=_[_0xa724('0x49')]({},_0x188256,_0x4df15a[_0xa724('0x4b')]);var _0x1e1dfd={'where':_0x188256[_0xa724('0x45')]};return db[_0xa724('0x38')]['count'](_0x1e1dfd)[_0xa724('0x2e')](function(_0x183eed){_0x43af0a[_0xa724('0x28')]=_0x183eed;if(_0x4df15a[_0xa724('0x3e')][_0xa724('0x4c')]){_0x188256[_0xa724('0x4d')]=[{'all':!![]}];}return db[_0xa724('0x38')][_0xa724('0x4e')](_0x188256);})[_0xa724('0x2e')](function(_0x5ed185){_0x43af0a[_0xa724('0x4f')]=_0x5ed185;return _0x43af0a;})[_0xa724('0x2e')](respondWithFilteredResult(_0x1c26c3,_0x188256))[_0xa724('0x50')](handleError(_0x1c26c3,null));};exports[_0xa724('0x51')]=function(_0x1cb7e5,_0x4e432b){var _0x1a1b96={'raw':!![],'where':{'id':_0x1cb7e5[_0xa724('0x52')]['id']}},_0xcb25c1={};_0xcb25c1[_0xa724('0x3c')]=_['keys'](db[_0xa724('0x38')][_0xa724('0x39')]);_0xcb25c1[_0xa724('0x3e')]=_[_0xa724('0x53')](_0x1cb7e5[_0xa724('0x3e')]);_0xcb25c1['filters']=_[_0xa724('0x3d')](_0xcb25c1['model'],_0xcb25c1[_0xa724('0x3e')]);_0x1a1b96[_0xa724('0x3f')]=_[_0xa724('0x3d')](_0xcb25c1[_0xa724('0x3c')],qs[_0xa724('0x40')](_0x1cb7e5['query'][_0xa724('0x40')]));_0x1a1b96['attributes']=_0x1a1b96['attributes'][_0xa724('0x41')]?_0x1a1b96[_0xa724('0x3f')]:_0xcb25c1[_0xa724('0x3c')];if(_0x1cb7e5[_0xa724('0x3e')]['includeAll']){_0x1a1b96[_0xa724('0x4d')]=[{'all':!![]}];}_0x1a1b96=_['merge']({},_0x1a1b96,_0x1cb7e5['options']);return db[_0xa724('0x38')][_0xa724('0x54')](_0x1a1b96)['then'](handleEntityNotFound(_0x4e432b,null))[_0xa724('0x2e')](respondWithResult(_0x4e432b,null))[_0xa724('0x50')](handleError(_0x4e432b,null));};exports['download']=function(_0x29ba77,_0x4b5800,_0x228f96){return db[_0xa724('0x38')]['find']({'where':{'id':_0x29ba77['params']['id']},'attributes':[_0xa724('0x35'),_0xa724('0x8')],'raw':!![]})[_0xa724('0x2e')](handleEntityNotFound(_0x4b5800,null))['then'](function(_0x36568d){if(_0x36568d){var _0x2a2772=path[_0xa724('0x55')](config[_0xa724('0x56')],_0xa724('0x57'),util['format'](_0xa724('0x58'),path[_0xa724('0x59')](_0x36568d[_0xa724('0x8')])));var _0x14d2ce=fs[_0xa724('0x5a')](_0x2a2772);var _0x4c2f7e=archiver('zip',{'zlib':{'level':0x9}});_0x4c2f7e['on']('warning',function(_0x4abd83){if(_0x4abd83[_0xa724('0x5b')]===_0xa724('0x5c')){logger[_0xa724('0x33')](_0x4abd83);}else{throw new db['Sequelize'][(_0xa724('0x5d'))](_0xa724('0x5e'));}});_0x4c2f7e['on']('error',function(_0x18f924){throw new db[(_0xa724('0x5f'))][(_0xa724('0x5d'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x4c2f7e[_0xa724('0x60')](_0x14d2ce);_0x4c2f7e['glob'](_0xa724('0x61'),{'cwd':path[_0xa724('0x55')](config[_0xa724('0x56')],_0xa724('0x57'),path['dirname'](_0x36568d[_0xa724('0x8')])),'ignore':[path[_0xa724('0x55')](path['basename'](_0x36568d[_0xa724('0x8')]),_0xa724('0x62')),path[_0xa724('0x55')](path[_0xa724('0x59')](_0x36568d['path']),'attachments/**/*')],'nodir':!![]})['finalize']();_0x14d2ce['on'](_0xa724('0x63'),function(){if(!fs[_0xa724('0x64')](_0x2a2772)){throw new db[(_0xa724('0x5f'))][(_0xa724('0x5d'))]('Plugin\x20not\x20found');}return _0x4b5800[_0xa724('0x65')](_0x2a2772,util[_0xa724('0x66')](_0xa724('0x58'),path[_0xa724('0x59')](_0x36568d[_0xa724('0x8')])),function(_0x28d02c){if(_0x28d02c){throw new db[(_0xa724('0x5f'))]['Error'](_0xa724('0x67'));}fs['unlinkSync'](_0x2a2772);logger['info'](_0xa724('0x68'));logger[_0xa724('0x69')]('Temporary\x20file\x20removed');});});}return null;})[_0xa724('0x50')](handleError(_0x4b5800,null));};exports[_0xa724('0x6a')]=function(_0x129675,_0x100d64,_0x525c49){var _0xbf62a9=path['basename'](_0x129675[_0xa724('0x6b')][_0xa724('0x6c')],path[_0xa724('0x6d')](_0x129675[_0xa724('0x6b')][_0xa724('0x6c')]));var _0x9fb120=path['join'](config[_0xa724('0x56')],_0xa724('0x57'),_0x129675['file'][_0xa724('0x6c')]);var _0x12d682=path[_0xa724('0x55')](config[_0xa724('0x56')],_0xa724('0x57'),_0xbf62a9);logger['info'](_0xa724('0x6e'),_0x9fb120);logger['info'](_0xa724('0x6f'),_0x12d682);try{fs[_0xa724('0x70')](_0x9fb120,parseInt(_0xa724('0x71'),0x8));extract(_0x9fb120,{'dir':_0x12d682},function(_0x5f402d){if(_0x5f402d){logger[_0xa724('0x33')](_0x5f402d);handleError(_0x5f402d,!![]);};var _0x317adb=fs[_0xa724('0x72')](_0x12d682);if(_0x317adb['length']>0x1){removeReferences(_0x9fb120,_0x12d682);logger[_0xa724('0x33')](_0xa724('0x73'));return _0x525c49(new Error(_0xa724('0x73')));}var _0x48a4c5=fs[_0xa724('0x74')](path[_0xa724('0x55')](_0x12d682,_0x317adb[0x0]));if(_0x48a4c5['isFile']()){removeReferences(_0x9fb120,_0x12d682);logger[_0xa724('0x33')](_0xa724('0x73'));return _0x525c49(new Error(_0xa724('0x73')));}if(_0x48a4c5['isDirectory']()){var _0x1dc989=fs[_0xa724('0x72')](path[_0xa724('0x55')](_0x12d682,_0x317adb[0x0]));if(_0x1dc989[_0xa724('0x41')]===0x0){removeReferences(_0x9fb120,_0x12d682);logger['error'](_0xa724('0x73'));return _0x525c49(new Error(_0xa724('0x73')));}var _0x42245d=_0x1dc989['some'](function(_0x3c5aa9){return _0x3c5aa9==='manifest.json';});if(!_0x42245d){return _0x525c49(new Error(_0xa724('0x75')));}var _0x2ebfe6=fs['readFileSync'](path[_0xa724('0x55')](_0x12d682,_0x317adb[0x0],_0xa724('0x76')));var _0x1551e8=JSON[_0xa724('0x77')](_0x2ebfe6);if('undefined'==typeof _0x1551e8[_0xa724('0x35')]){return _0x525c49(new Error(_0xa724('0x78')));}if(_0xa724('0x26')==typeof _0x1551e8[_0xa724('0x4a')]){return _0x525c49(new Error(_0xa724('0x79')));}if(_0xa724('0x26')==typeof _0x1551e8['version']){return _0x525c49(new Error(_0xa724('0x7a')));}if(_0xa724('0x26')==typeof _0x1551e8[_0xa724('0x7b')]){return _0x525c49(new Error(_0xa724('0x7c')));}if(_0x1551e8[_0xa724('0x4a')]===_0xa724('0x7d')){if(_0xa724('0x26')==typeof _0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')]){return _0x525c49(new Error(_0xa724('0x7f')));}if('undefined'==typeof _0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')][_0xa724('0x80')]&&_0xa724('0x26')==typeof _0x1551e8['parameters'][_0xa724('0x7e')][_0xa724('0x81')]){return _0x525c49(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x1551e8[_0xa724('0x4a')]===_0xa724('0x82')){if('undefined'==typeof _0x1551e8[_0xa724('0x7b')][_0xa724('0x83')]){return _0x525c49(new Error(_0xa724('0x84')));}if(_0xa724('0x26')==typeof _0x1551e8['parameters']['scriptPath']){return _0x525c49(new Error(_0xa724('0x85')));}}else{return _0x525c49(new Error(_0xa724('0x86')));}var _0x37d2a5=_0x1551e8[_0xa724('0x35')];var _0x47be4b=_0x1551e8[_0xa724('0x87')];var _0x49f225=_0x1551e8[_0xa724('0x4a')];var _0x119f6e=_0x1551e8[_0xa724('0x88')]?_0x1551e8[_0xa724('0x88')]:'always';var _0x1ab8ca=_0x1551e8['icon']?_0x1551e8[_0xa724('0x89')]:'icon-apps';var _0xffa97f='';var _0x186900='';var _0x20b7b6='';var _0x7eeb65='';var _0x2f1194=_0x1551e8[_0xa724('0x8a')];if(_0x49f225===_0xa724('0x7d')){if(_0xa724('0x26')!=typeof _0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')][_0xa724('0x80')]){var _0x73aacd=_0x1551e8['parameters'][_0xa724('0x7e')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xa724('0x8b')](_0x73aacd)){_0xffa97f=path[_0xa724('0x55')](_0xa724('0x8c'),_0xbf62a9,_0x317adb[0x0],_0x73aacd);}else{_0xffa97f=_0x73aacd;}}else{logger[_0xa724('0x69')](_0xa724('0x8d'));}if('undefined'!=typeof _0x1551e8[_0xa724('0x7b')]['views'][_0xa724('0x81')]){var _0x150eee=_0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xa724('0x8b')](_0x150eee)){_0x186900=path[_0xa724('0x55')](_0xa724('0x8c'),_0xbf62a9,_0x317adb[0x0],_0x150eee);}else{_0x186900=_0x150eee;}}else{logger[_0xa724('0x69')](_0xa724('0x8e'));}}else if(_0x49f225==='script'){_0x20b7b6=_0x1551e8[_0xa724('0x7b')]['scriptName'];_0x7eeb65=_0x1551e8[_0xa724('0x7b')][_0xa724('0x8f')];if('undefined'!=typeof _0x1551e8[_0xa724('0x7b')]['views']){if('undefined'!=typeof _0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')][_0xa724('0x80')]){var _0x73aacd=_0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')][_0xa724('0x80')];if(!/^(f|ht)tps?:\/\//i[_0xa724('0x8b')](_0x73aacd)){_0xffa97f=path[_0xa724('0x55')](_0xa724('0x8c'),_0xbf62a9,_0x317adb[0x0],_0x73aacd);}else{_0xffa97f=_0x73aacd;}}if('undefined'!=typeof _0x1551e8['parameters'][_0xa724('0x7e')][_0xa724('0x81')]){var _0x150eee=_0x1551e8[_0xa724('0x7b')][_0xa724('0x7e')][_0xa724('0x81')];if(!/^(f|ht)tps?:\/\//i[_0xa724('0x8b')](_0x150eee)){_0x186900=path[_0xa724('0x55')](_0xa724('0x8c'),_0xbf62a9,_0x317adb[0x0],_0x150eee);}else{_0x186900=_0x150eee;}}}}var _0xf4680d={'name':_0x37d2a5,'description':_0x47be4b,'path':path[_0xa724('0x55')](_0xbf62a9,_0x317adb[0x0]),'type':_0x49f225,'sidebar':_0x119f6e,'icon':_0x1ab8ca,'adminUrl':_0xffa97f,'agentUrl':_0x186900,'scriptName':_0x20b7b6,'scriptPath':_0x7eeb65,'version':_0x2f1194};removeReferences(_0x9fb120,null);return db[_0xa724('0x38')][_0xa724('0x90')](_0xf4680d)[_0xa724('0x2e')](function(_0x39b778){var _0x49d510={'role':_0x129675[_0xa724('0x91')]['role'],'userProfileId':_0x129675['body'][_0xa724('0x92')]};if(!_0x49d510)throw new Error(_0xa724('0x93'));if(_0x49d510[_0xa724('0x94')]===_0xa724('0x95')){var _0x1405c6=_0x39b778[_0xa724('0x30')]({'plain':!![]});return db[_0xa724('0x96')][_0xa724('0x54')]({'where':{'name':_0xa724('0x31'),'userProfileId':_0x49d510[_0xa724('0x92')]},'raw':!![]})[_0xa724('0x2e')](function(_0x581058){if(_0x581058&&_0x581058['autoAssociation']===0x0){return db[_0xa724('0x32')][_0xa724('0x90')]({'name':_0x1405c6[_0xa724('0x35')],'resourceId':_0x1405c6['id'],'type':_0x581058[_0xa724('0x35')],'sectionId':_0x581058['id']},{})[_0xa724('0x2e')](function(){return _0x39b778;});}else{return _0x39b778;}})['catch'](function(_0x501d62){logger[_0xa724('0x33')](_0xa724('0x97'),_0x501d62);throw _0x501d62;});}return _0x39b778;})[_0xa724('0x2e')](respondWithResult(_0x100d64,null))[_0xa724('0x50')](handleError(_0x100d64,null));}});}catch(_0x8826e9){_0x100d64[_0xa724('0x23')](0x1f4)[_0xa724('0x36')](_0x8826e9);}};function removeReferences(_0x20e6a3,_0x43a241){try{if(_0x20e6a3){fs[_0xa724('0x98')](_0x20e6a3);logger['info']('Zip\x20archive\x20removed');}if(_0x43a241){rimraf(_0x43a241,function(){});logger[_0xa724('0x69')]('Extracted\x20folder\x20removed');}}catch(_0x431b46){logger['error'](_0x431b46);}}exports[_0xa724('0x2d')]=function(_0x3eb39f,_0xf32efd,_0x3ba5cf){return db[_0xa724('0x38')][_0xa724('0x54')]({'where':{'id':_0x3eb39f['params']['id']}})[_0xa724('0x2e')](handleEntityNotFound(_0xf32efd,null))['then'](saveUpdates(_0x3eb39f[_0xa724('0x91')],null))['then'](respondWithResult(_0xf32efd,null))[_0xa724('0x50')](handleError(_0xf32efd,null));};exports[_0xa724('0x99')]=function(_0x2b7350,_0x1ddefc,_0x3dcaf4){return db[_0xa724('0x38')][_0xa724('0x54')]({'where':{'id':_0x2b7350[_0xa724('0x52')]['id']}})[_0xa724('0x2e')](function(_0x1ae69a){if(_0x1ae69a){return _0x1ae69a[_0xa724('0x2f')]();}})[_0xa724('0x2e')](function(_0xeb42d4){rimraf(path[_0xa724('0x55')](config[_0xa724('0x56')],'server/files/plugins',path[_0xa724('0x9a')](_0xeb42d4['path'])),function(){});return _0xeb42d4;})[_0xa724('0x2e')](handleEntityNotFound(_0x1ddefc,null))['then'](respondWithStatusCode(_0x1ddefc,null))[_0xa724('0x50')](handleError(_0x1ddefc,null));};exports[_0xa724('0x9b')]=function(_0x4444ac,_0xb54b16,_0x345171){return BPromise[_0xa724('0x9c')]()[_0xa724('0x2e')](function(){if(!_0x4444ac[_0xa724('0x3e')][_0xa724('0x8')]){throw new Error(_0xa724('0x9d'));}if(!_0x4444ac['query'][_0xa724('0x9e')]){throw new Error(_0xa724('0x9f'));}var _0x5d5e81=_0x4444ac[_0xa724('0x3e')]['hostname']?_0x4444ac[_0xa724('0x3e')][_0xa724('0xa0')]+':'+_0x4444ac['query'][_0xa724('0x9e')]:_0xa724('0xa1')+_0x4444ac[_0xa724('0x3e')][_0xa724('0x9e')];var _0x561207=_0x4444ac['query']['json']?_0x4444ac[_0xa724('0x3e')]['json']:!![];var _0x31650a=_0x4444ac[_0xa724('0x3e')][_0xa724('0xa2')]?_0x4444ac[_0xa724('0x3e')]['encoding']:null;var _0x3ccf64={'method':_0x4444ac[_0xa724('0xa3')],'uri':util[_0xa724('0x66')](_0xa724('0xa4'),_0x5d5e81,_0x4444ac[_0xa724('0x3e')][_0xa724('0x8')]),'json':_0x561207,'resolveWithFullResponse':!![],'encoding':_0x31650a,'qs':_0x4444ac[_0xa724('0x3e')]};if(_0x4444ac[_0xa724('0xa5')]){_0x3ccf64[_0xa724('0xa5')]=_0x4444ac['headers'];if(_0x3ccf64[_0xa724('0xa5')][_0xa724('0xa6')]){delete _0x3ccf64[_0xa724('0xa5')][_0xa724('0xa6')];}}if(_0x3ccf64['headers'][_0xa724('0xa7')]){delete _0x3ccf64[_0xa724('0xa5')][_0xa724('0xa7')];}return rp(_0x3ccf64);})[_0xa724('0x2e')](function(_0x17ed72){if(_0x17ed72){_0xb54b16[_0xa724('0x2a')](_0x17ed72['headers']);logger[_0xa724('0x69')](_0x17ed72[_0xa724('0x91')]);if(_[_0xa724('0xa8')](_0x4444ac[_0xa724('0x3e')][_0xa724('0x8')],_0xa724('0x65'))&&_0x17ed72[_0xa724('0xa9')]==0x1f4){return _0xb54b16[_0xa724('0x22')](_0x17ed72[_0xa724('0xa9')]);}else{return _0xb54b16[_0xa724('0x23')](_0x17ed72[_0xa724('0xa9')])[_0xa724('0x36')](_0x17ed72[_0xa724('0x91')]);}}else{return _0xb54b16['sendStatus'](0xc8);}})['catch'](handleError(_0xb54b16,null));};exports[_0xa724('0xaa')]=function(_0x251df,_0x550379,_0x313145){return BPromise[_0xa724('0x9c')]()[_0xa724('0x2e')](function(){if(!_0x251df[_0xa724('0x3e')]['path']){throw new Error(_0xa724('0x9d'));}if(!_0x251df[_0xa724('0x3e')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x4f5019=_0x251df[_0xa724('0x3e')][_0xa724('0xa0')]?_0x251df[_0xa724('0x3e')]['hostname']+':'+_0x251df[_0xa724('0x3e')][_0xa724('0x9e')]:_0xa724('0xa1')+_0x251df['query'][_0xa724('0x9e')];var _0x4ed498=_0x251df[_0xa724('0x3e')][_0xa724('0x25')]?_0x251df[_0xa724('0x3e')]['json']:!![];var _0x5af4e5=_0x251df[_0xa724('0x3e')]['encoding']?_0x251df[_0xa724('0x3e')][_0xa724('0xa2')]:null;var _0x1bd3c9={'method':_0x251df[_0xa724('0xa3')],'uri':util[_0xa724('0x66')]('%s%s',_0x4f5019,_0x251df['query'][_0xa724('0x8')]),'json':_0x4ed498,'resolveWithFullResponse':!![],'encoding':_0x5af4e5,'body':_0x251df[_0xa724('0x91')]};if(_0x251df['headers']){_0x1bd3c9[_0xa724('0xa5')]=_0x251df['headers'];if(_0x1bd3c9[_0xa724('0xa5')]['content-length']){delete _0x1bd3c9[_0xa724('0xa5')][_0xa724('0xa6')];}}if(_0x1bd3c9['headers'][_0xa724('0xa7')]){delete _0x1bd3c9[_0xa724('0xa5')][_0xa724('0xa7')];}return rp(_0x1bd3c9);})['then'](function(_0x274912){if(_0x274912){_0x550379[_0xa724('0x2a')](_0x274912[_0xa724('0xa5')]);logger[_0xa724('0x69')](_0x274912[_0xa724('0x91')]);return _0x550379['status'](_0x274912['statusCode'])[_0xa724('0x36')](_0x274912[_0xa724('0x91')]);}else{return _0x550379[_0xa724('0x22')](0xc8);}})[_0xa724('0x50')](handleError(_0x550379,null));};
\ No newline at end of file
index 9232da5..bbd75ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc838=['../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc838,0xbd));var _0x8c83=function(_0x49a87f,_0x12bc55){_0x49a87f=_0x49a87f-0x0;var _0x2e3956=_0xc838[_0x49a87f];return _0x2e3956;};'use strict';var EventEmitter=require(_0x8c83('0x0'));var Plugin=require(_0x8c83('0x1'))['db'][_0x8c83('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x8c83('0x3')](0x0);var events={'afterCreate':_0x8c83('0x4'),'afterUpdate':_0x8c83('0x5'),'afterDestroy':_0x8c83('0x6')};function emitEvent(_0x25a345){return function(_0x2bb018,_0x85c36d,_0x37a3d9){PluginEvents[_0x8c83('0x7')](_0x25a345+':'+_0x2bb018['id'],_0x2bb018);PluginEvents[_0x8c83('0x7')](_0x25a345,_0x2bb018);_0x37a3d9(null);};}for(var e in events){if(events[_0x8c83('0x8')](e)){var event=events[e];Plugin[_0x8c83('0x9')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x99a0=['hook','events','../../mysqldb','remove','emit','hasOwnProperty'];(function(_0x5a9f01,_0x51c64f){var _0x45b805=function(_0x338dc4){while(--_0x338dc4){_0x5a9f01['push'](_0x5a9f01['shift']());}};_0x45b805(++_0x51c64f);}(_0x99a0,0x121));var _0x099a=function(_0x380e52,_0x2b9f4d){_0x380e52=_0x380e52-0x0;var _0x294de9=_0x99a0[_0x380e52];return _0x294de9;};'use strict';var EventEmitter=require(_0x099a('0x0'));var Plugin=require(_0x099a('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x099a('0x2')};function emitEvent(_0x2b5e88){return function(_0x5d6b40,_0x21d681,_0x1d3f16){PluginEvents[_0x099a('0x3')](_0x2b5e88+':'+_0x5d6b40['id'],_0x5d6b40);PluginEvents[_0x099a('0x3')](_0x2b5e88,_0x5d6b40);_0x1d3f16(null);};}for(var e in events){if(events[_0x099a('0x4')](e)){var event=events[e];Plugin[_0x099a('0x5')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index a5be389..5433f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad6=['./plugin.attributes','Plugin','plugins','lodash','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x56feee,_0x4d26c7){var _0x554d3e=function(_0x4f25bf){while(--_0x4f25bf){_0x56feee['push'](_0x56feee['shift']());}};_0x554d3e(++_0x4d26c7);}(_0x5ad6,0xfd));var _0x65ad=function(_0x55a89e,_0x1a05ab){_0x55a89e=_0x55a89e-0x0;var _0x3aa2bd=_0x5ad6[_0x55a89e];return _0x3aa2bd;};'use strict';var _=require(_0x65ad('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x65ad('0x1'));var BPromise=require(_0x65ad('0x2'));var rp=require(_0x65ad('0x3'));var fs=require('fs');var path=require(_0x65ad('0x4'));var rimraf=require(_0x65ad('0x5'));var config=require(_0x65ad('0x6'));var attributes=require(_0x65ad('0x7'));module['exports']=function(_0x577aac,_0x569b64){return _0x577aac['define'](_0x65ad('0x8'),attributes,{'tableName':_0x65ad('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d96=['rimraf','../../config/environment','./plugin.attributes','Plugin','plugins','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x195686,_0xd329df){var _0xaf27a1=function(_0x5a3ba8){while(--_0x5a3ba8){_0x195686['push'](_0x195686['shift']());}};_0xaf27a1(++_0xd329df);}(_0x5d96,0x101));var _0x65d9=function(_0x302cc5,_0x343f62){_0x302cc5=_0x302cc5-0x0;var _0x5b0da7=_0x5d96[_0x302cc5];return _0x5b0da7;};'use strict';var _=require('lodash');var util=require(_0x65d9('0x0'));var logger=require(_0x65d9('0x1'))(_0x65d9('0x2'));var moment=require(_0x65d9('0x3'));var BPromise=require(_0x65d9('0x4'));var rp=require(_0x65d9('0x5'));var fs=require('fs');var path=require(_0x65d9('0x6'));var rimraf=require(_0x65d9('0x7'));var config=require(_0x65d9('0x8'));var attributes=require(_0x65d9('0x9'));module['exports']=function(_0x2c8c38,_0x83f31d){return _0x2c8c38['define'](_0x65d9('0xa'),attributes,{'tableName':_0x65d9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb81be1..db8949f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf215=['socket.io-emitter','./plugin.socket','register','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Plugin,\x20%s,\x20%s','result','CreatePlugin','create','body','options','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults'];(function(_0x4bbd22,_0x88f040){var _0x4c6e27=function(_0x52cb1d){while(--_0x52cb1d){_0x4bbd22['push'](_0x4bbd22['shift']());}};_0x4c6e27(++_0x88f040);}(_0xf215,0xec));var _0x5f21=function(_0x34debb,_0x4c3a11){_0x34debb=_0x34debb-0x0;var _0x4e0a89=_0xf215[_0x34debb];return _0x4e0a89;};'use strict';var _=require(_0x5f21('0x0'));var util=require(_0x5f21('0x1'));var moment=require('moment');var BPromise=require(_0x5f21('0x2'));var rs=require(_0x5f21('0x3'));var fs=require('fs');var Redis=require(_0x5f21('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5f21('0x5'));var logger=require(_0x5f21('0x6'))(_0x5f21('0x7'));var config=require(_0x5f21('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5f21('0x9')]({'port':0x232a});config[_0x5f21('0xa')]=_[_0x5f21('0xb')](config[_0x5f21('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x5f21('0xc'))(new Redis(config[_0x5f21('0xa')]));require(_0x5f21('0xd'))[_0x5f21('0xe')](socket);function respondWithRpcPromise(_0xb3b421,_0x42cac5,_0x58fc72){return new BPromise(function(_0x5971d3,_0xbd6d96){return client['request'](_0xb3b421,_0x58fc72)[_0x5f21('0xf')](function(_0x5f5b86){logger[_0x5f21('0x10')]('Plugin,\x20%s,\x20%s',_0x42cac5,_0x5f21('0x11'));logger[_0x5f21('0x12')](_0x5f21('0x13'),_0x42cac5,_0x5f21('0x11'),JSON[_0x5f21('0x14')](_0x5f5b86));if(_0x5f5b86[_0x5f21('0x15')]){if(_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x16')]===0x1f4){logger[_0x5f21('0x15')]('Plugin,\x20%s,\x20%s',_0x42cac5,_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x17')]);return _0xbd6d96(_0x5f5b86['error'][_0x5f21('0x17')]);}logger[_0x5f21('0x15')](_0x5f21('0x18'),_0x42cac5,_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x17')]);return _0x5971d3(_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x17')]);}else{logger[_0x5f21('0x10')]('Plugin,\x20%s,\x20%s',_0x42cac5,_0x5f21('0x11'));_0x5971d3(_0x5f5b86[_0x5f21('0x19')][_0x5f21('0x17')]);}})['catch'](function(_0x1ef72d){logger[_0x5f21('0x15')](_0x5f21('0x18'),_0x42cac5,_0x1ef72d);_0xbd6d96(_0x1ef72d);});});}exports[_0x5f21('0x1a')]=function(_0x3aa83c){var _0xf69eec=this;return new Promise(function(_0x4aa40b,_0x551414){return db['Plugin'][_0x5f21('0x1b')](_0x3aa83c[_0x5f21('0x1c')],{'raw':_0x3aa83c['options']?_0x3aa83c[_0x5f21('0x1d')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x548cba){logger['info'](_0x5f21('0x1a'),_0x3aa83c);logger[_0x5f21('0x12')]('CreatePlugin',_0x3aa83c,JSON[_0x5f21('0x14')](_0x548cba));_0x4aa40b(_0x548cba);})[_0x5f21('0x1e')](function(_0x41817c){logger[_0x5f21('0x15')](_0x5f21('0x1a'),_0x41817c[_0x5f21('0x17')],_0x3aa83c);_0x551414(_0xf69eec[_0x5f21('0x15')](0x1f4,_0x41817c[_0x5f21('0x17')]));});});};
\ No newline at end of file
+var _0xce65=['jayson/promise','redis','socket.io-emitter','./plugin.socket','request','then','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CreatePlugin','Plugin','create','body','options','raw','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment'];(function(_0x3f8866,_0x4c6a65){var _0x4236a8=function(_0x3ab7a0){while(--_0x3ab7a0){_0x3f8866['push'](_0x3f8866['shift']());}};_0x4236a8(++_0x4c6a65);}(_0xce65,0x18f));var _0x5ce6=function(_0x325b4a,_0x29f1a1){_0x325b4a=_0x325b4a-0x0;var _0x37b112=_0xce65[_0x325b4a];return _0x37b112;};'use strict';var _=require(_0x5ce6('0x0'));var util=require('util');var moment=require(_0x5ce6('0x1'));var BPromise=require(_0x5ce6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ce6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5ce6('0x4'));var logger=require('../../config/logger')(_0x5ce6('0x5'));var config=require(_0x5ce6('0x6'));var jayson=require(_0x5ce6('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x5ce6('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x5ce6('0x9'))(new Redis(config[_0x5ce6('0x8')]));require(_0x5ce6('0xa'))['register'](socket);function respondWithRpcPromise(_0x567978,_0x5371bb,_0x1230c4){return new BPromise(function(_0x1294f5,_0x67e707){return client[_0x5ce6('0xb')](_0x567978,_0x1230c4)[_0x5ce6('0xc')](function(_0x4bd71){logger['info'](_0x5ce6('0xd'),_0x5371bb,_0x5ce6('0xe'));logger[_0x5ce6('0xf')](_0x5ce6('0x10'),_0x5371bb,_0x5ce6('0xe'),JSON[_0x5ce6('0x11')](_0x4bd71));if(_0x4bd71[_0x5ce6('0x12')]){if(_0x4bd71[_0x5ce6('0x12')][_0x5ce6('0x13')]===0x1f4){logger['error'](_0x5ce6('0xd'),_0x5371bb,_0x4bd71[_0x5ce6('0x12')]['message']);return _0x67e707(_0x4bd71['error'][_0x5ce6('0x14')]);}logger['error']('Plugin,\x20%s,\x20%s',_0x5371bb,_0x4bd71[_0x5ce6('0x12')][_0x5ce6('0x14')]);return _0x1294f5(_0x4bd71[_0x5ce6('0x12')][_0x5ce6('0x14')]);}else{logger[_0x5ce6('0x15')](_0x5ce6('0xd'),_0x5371bb,'request\x20sent');_0x1294f5(_0x4bd71['result'][_0x5ce6('0x14')]);}})[_0x5ce6('0x16')](function(_0x34e941){logger[_0x5ce6('0x12')](_0x5ce6('0xd'),_0x5371bb,_0x34e941);_0x67e707(_0x34e941);});});}exports[_0x5ce6('0x17')]=function(_0x530ecb){var _0x2aa604=this;return new Promise(function(_0x4da170,_0x2a7d3a){return db[_0x5ce6('0x18')][_0x5ce6('0x19')](_0x530ecb[_0x5ce6('0x1a')],{'raw':_0x530ecb[_0x5ce6('0x1b')]?_0x530ecb[_0x5ce6('0x1b')][_0x5ce6('0x1c')]===undefined?!![]:![]:!![]})[_0x5ce6('0xc')](function(_0x5c8c0e){logger['info'](_0x5ce6('0x17'),_0x530ecb);logger[_0x5ce6('0xf')](_0x5ce6('0x17'),_0x530ecb,JSON[_0x5ce6('0x11')](_0x5c8c0e));_0x4da170(_0x5c8c0e);})[_0x5ce6('0x16')](function(_0x2f600c){logger[_0x5ce6('0x12')](_0x5ce6('0x17'),_0x2f600c[_0x5ce6('0x14')],_0x530ecb);_0x2a7d3a(_0x2aa604[_0x5ce6('0x12')](0x1f4,_0x2f600c[_0x5ce6('0x14')]));});});};
\ No newline at end of file
index ac3d0e2..68abd77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0157=['plugin:','./plugin.events','save','remove','update','removeListener','length'];(function(_0xf4f343,_0x41fe4a){var _0x4cda68=function(_0x3850e6){while(--_0x3850e6){_0xf4f343['push'](_0xf4f343['shift']());}};_0x4cda68(++_0x41fe4a);}(_0x0157,0x14a));var _0x7015=function(_0x3d0e9b,_0x42b1cb){_0x3d0e9b=_0x3d0e9b-0x0;var _0xf9a578=_0x0157[_0x3d0e9b];return _0xf9a578;};'use strict';var PluginEvents=require(_0x7015('0x0'));var events=[_0x7015('0x1'),_0x7015('0x2'),_0x7015('0x3')];function createListener(_0x2d9894,_0x3720e9){return function(_0x3e9369){_0x3720e9['emit'](_0x2d9894,_0x3e9369);};}function removeListener(_0x21c55a,_0x45b126){return function(){PluginEvents[_0x7015('0x4')](_0x21c55a,_0x45b126);};}exports['register']=function(_0x42320a){for(var _0xa8ec2d=0x0,_0xc45015=events[_0x7015('0x5')];_0xa8ec2d<_0xc45015;_0xa8ec2d++){var _0x41797e=events[_0xa8ec2d];var _0x22bf26=createListener(_0x7015('0x6')+_0x41797e,_0x42320a);PluginEvents['on'](_0x41797e,_0x22bf26);}};
\ No newline at end of file
+var _0x29c4=['emit','register','plugin:','./plugin.events','remove','update'];(function(_0x431b0a,_0x8f2890){var _0x12b6c0=function(_0x5ba1ad){while(--_0x5ba1ad){_0x431b0a['push'](_0x431b0a['shift']());}};_0x12b6c0(++_0x8f2890);}(_0x29c4,0x13b));var _0x429c=function(_0x248cac,_0x40e790){_0x248cac=_0x248cac-0x0;var _0x7a5edc=_0x29c4[_0x248cac];return _0x7a5edc;};'use strict';var PluginEvents=require(_0x429c('0x0'));var events=['save',_0x429c('0x1'),_0x429c('0x2')];function createListener(_0x3991ff,_0x39c31f){return function(_0x3a1d7a){_0x39c31f[_0x429c('0x3')](_0x3991ff,_0x3a1d7a);};}function removeListener(_0x3e87a7,_0x22998f){return function(){PluginEvents['removeListener'](_0x3e87a7,_0x22998f);};}exports[_0x429c('0x4')]=function(_0x1db897){for(var _0x55f785=0x0,_0x2de33b=events['length'];_0x55f785<_0x2de33b;_0x55f785++){var _0x4eba7d=events[_0x55f785];var _0x4f5616=createListener(_0x429c('0x5')+_0x4eba7d,_0x1db897);PluginEvents['on'](_0x4eba7d,_0x4f5616);}};
\ No newline at end of file
index 8f72b07..80750c3 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(_0x52f034,_0x36e342){var _0x390ca4=function(_0x70a24e){while(--_0x70a24e){_0x52f034['push'](_0x52f034['shift']());}};_0x390ca4(++_0x36e342);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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(_0x3c002c,_0x2dd800){var _0x4355f3=function(_0x56c5f9){while(--_0x56c5f9){_0x3c002c['push'](_0x3c002c['shift']());}};_0x4355f3(++_0x2dd800);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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 cd22697..aa00d92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['Unknown\x20status','destroy','../../config/logger','api','path','child_process','exec','sendStatus','status','json','error','name','send','npm\x20install','info','index','list','reject','express','motion2','length','then','catch','show','describe','params','create','body','../../files/plugins','script','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty'];(function(_0x4cee4b,_0x1dfff3){var _0x4d891d=function(_0x3722ba){while(--_0x3722ba){_0x4cee4b['push'](_0x4cee4b['shift']());}};_0x4d891d(++_0x1dfff3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var pm2=require('../../config/pm2');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var path=require(_0x3071('0x2'));var exec=require(_0x3071('0x3'))[_0x3071('0x4')];var BPromise=require('bluebird');function handleEntityNotFound(_0x2c547f,_0x7b18a4){return function(_0x33a70c){if(!_0x33a70c){_0x2c547f[_0x3071('0x5')](0x194);;}return _0x33a70c;};}function respondWithResult(_0xabd7b6,_0x41cf76){_0x41cf76=_0x41cf76||0xc8;return function(_0x1d3dd6){if(_0x1d3dd6){return _0xabd7b6[_0x3071('0x6')](_0x41cf76)[_0x3071('0x7')](_0x1d3dd6);}return null;};}function handleError(_0x22274c,_0x3e9a5e){_0x3e9a5e=_0x3e9a5e||0x1f4;return function(_0x2fce7a){logger[_0x3071('0x8')](_0x2fce7a['stack']);if(_0x2fce7a[_0x3071('0x9')]){delete _0x2fce7a[_0x3071('0x9')];}_0x22274c[_0x3071('0x6')](_0x3e9a5e)[_0x3071('0xa')](_0x2fce7a);};}function execChildProcess(){return new BPromise(function(_0x1ce844,_0x4a470a){exec(_0x3071('0xb'),function(_0x11a7ee,_0x401b4d,_0x3ed4a0){logger[_0x3071('0xc')](_0x401b4d);logger['info'](_0x3ed4a0);if(_0x11a7ee){logger['error'](_0x11a7ee);return _0x4a470a(_0x11a7ee);}return _0x1ce844(_0x401b4d);});});}exports[_0x3071('0xd')]=function(_0x5dc13b,_0x31c220){return pm2[_0x3071('0xe')]()['then'](function(_0x104e73){if(_0x104e73){var _0x4e1219=_[_0x3071('0xf')](_0x104e73,function(_0x45c93b){return _0x45c93b[_0x3071('0x9')]===_0x3071('0x10')||_0x45c93b[_0x3071('0x9')]===_0x3071('0x11');});return{'rows':_0x4e1219,'count':_0x4e1219[_0x3071('0x12')]};}return null;})[_0x3071('0x13')](respondWithResult(_0x31c220,null))[_0x3071('0x14')](handleError(_0x31c220,null));};exports[_0x3071('0x15')]=function(_0x5f3c22,_0x224996){return pm2[_0x3071('0x16')](_0x5f3c22[_0x3071('0x17')]['id'])[_0x3071('0x13')](respondWithResult(_0x224996,null))[_0x3071('0x13')](handleEntityNotFound(_0x224996,null))[_0x3071('0x14')](handleError(_0x224996,null));};exports[_0x3071('0x18')]=function(_0x26f113,_0x502a16){if(_0x26f113[_0x3071('0x19')][_0x3071('0x9')]&&_0x26f113[_0x3071('0x19')]['script']){var _0xb8f4e3=path['join'](__dirname,_0x3071('0x1a'),_0x26f113[_0x3071('0x19')][_0x3071('0x1b')]);var _0x457b57=process[_0x3071('0x1c')]();process[_0x3071('0x1d')](path[_0x3071('0x1e')](_0xb8f4e3));return execChildProcess()[_0x3071('0x13')](function(_0x542646){process['chdir'](_0x457b57);return pm2[_0x3071('0x1f')]({'name':_0x26f113[_0x3071('0x19')][_0x3071('0x9')],'script':_0xb8f4e3});})[_0x3071('0x13')](function(_0x2793ef){pm2[_0x3071('0x20')]();return _0x2793ef[0x0];})[_0x3071('0x13')](respondWithResult(_0x502a16,0xc9))[_0x3071('0x14')](handleError(_0x502a16,null));}else{return _0x502a16[_0x3071('0x6')](0x1f4)['send']({'message':_0x3071('0x21')});}};exports[_0x3071('0x22')]=function(_0x177138,_0x4d5c4b){if(_0x177138[_0x3071('0x19')]['id']){delete _0x177138[_0x3071('0x19')]['id'];}var _0x163604={'online':_0x3071('0x23'),'stopped':_0x3071('0x24')};if(_0x163604[_0x3071('0x25')](_0x177138[_0x3071('0x19')][_0x3071('0x6')])){return pm2[_0x163604[_0x177138[_0x3071('0x19')][_0x3071('0x6')]]](_0x177138[_0x3071('0x17')]['id'])['then'](respondWithResult(_0x4d5c4b,0xc8))['catch'](handleError(_0x4d5c4b,null));}else{return _0x4d5c4b[_0x3071('0x6')](0x1f4)[_0x3071('0xa')]({'message':_0x3071('0x26')});}};exports[_0x3071('0x27')]=function(_0x3f6d90,_0x29538c){if(_0x3f6d90[_0x3071('0x19')]['id']){delete _0x3f6d90[_0x3071('0x19')]['id'];}if(_0x3f6d90['params']['id']){return pm2['delete'](_0x3f6d90['params']['id'])[_0x3071('0x13')](function(_0x392800){pm2['dump']();return _0x392800[0x0];})[_0x3071('0x13')](respondWithResult(_0x29538c,null))[_0x3071('0x14')](handleError(_0x29538c,null));}else{return _0x29538c[_0x3071('0x6')](0x1f4)[_0x3071('0xa')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0xbf6e=['start','dump','Missing\x20name\x20and/or\x20path','restart','stop','hasOwnProperty','Unknown\x20status','delete','Unknown\x20id','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','json','error','name','send','npm\x20install','info','index','list','then','motion2','length','catch','show','describe','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname'];(function(_0xf24a4e,_0x234f9d){var _0x7ff7a4=function(_0x3de447){while(--_0x3de447){_0xf24a4e['push'](_0xf24a4e['shift']());}};_0x7ff7a4(++_0x234f9d);}(_0xbf6e,0x149));var _0xebf6=function(_0x3fabb0,_0xb018e9){_0x3fabb0=_0x3fabb0-0x0;var _0x493b3d=_0xbf6e[_0x3fabb0];return _0x493b3d;};'use strict';var _=require('lodash');var pm2=require('../../config/pm2');var logger=require(_0xebf6('0x0'))(_0xebf6('0x1'));var path=require(_0xebf6('0x2'));var exec=require(_0xebf6('0x3'))[_0xebf6('0x4')];var BPromise=require(_0xebf6('0x5'));function handleEntityNotFound(_0x5c2323,_0x49de28){return function(_0x2b0c61){if(!_0x2b0c61){_0x5c2323[_0xebf6('0x6')](0x194);;}return _0x2b0c61;};}function respondWithResult(_0x3b2bb6,_0x1e15cf){_0x1e15cf=_0x1e15cf||0xc8;return function(_0x143344){if(_0x143344){return _0x3b2bb6[_0xebf6('0x7')](_0x1e15cf)[_0xebf6('0x8')](_0x143344);}return null;};}function handleError(_0x548e9e,_0x1d8035){_0x1d8035=_0x1d8035||0x1f4;return function(_0x40b28a){logger[_0xebf6('0x9')](_0x40b28a['stack']);if(_0x40b28a[_0xebf6('0xa')]){delete _0x40b28a[_0xebf6('0xa')];}_0x548e9e['status'](_0x1d8035)[_0xebf6('0xb')](_0x40b28a);};}function execChildProcess(){return new BPromise(function(_0x231d6b,_0x474dbe){exec(_0xebf6('0xc'),function(_0x1bd481,_0x36f588,_0x47ee12){logger[_0xebf6('0xd')](_0x36f588);logger[_0xebf6('0xd')](_0x47ee12);if(_0x1bd481){logger['error'](_0x1bd481);return _0x474dbe(_0x1bd481);}return _0x231d6b(_0x36f588);});});}exports[_0xebf6('0xe')]=function(_0x101a6c,_0x20c9ce){return pm2[_0xebf6('0xf')]()[_0xebf6('0x10')](function(_0x4dbf51){if(_0x4dbf51){var _0x4c01f4=_['reject'](_0x4dbf51,function(_0x4cecbc){return _0x4cecbc[_0xebf6('0xa')]==='express'||_0x4cecbc[_0xebf6('0xa')]===_0xebf6('0x11');});return{'rows':_0x4c01f4,'count':_0x4c01f4[_0xebf6('0x12')]};}return null;})[_0xebf6('0x10')](respondWithResult(_0x20c9ce,null))[_0xebf6('0x13')](handleError(_0x20c9ce,null));};exports[_0xebf6('0x14')]=function(_0x219621,_0x2dc96f){return pm2[_0xebf6('0x15')](_0x219621[_0xebf6('0x16')]['id'])['then'](respondWithResult(_0x2dc96f,null))['then'](handleEntityNotFound(_0x2dc96f,null))[_0xebf6('0x13')](handleError(_0x2dc96f,null));};exports[_0xebf6('0x17')]=function(_0x10051e,_0x410f06){if(_0x10051e[_0xebf6('0x18')][_0xebf6('0xa')]&&_0x10051e[_0xebf6('0x18')][_0xebf6('0x19')]){var _0x4fb497=path[_0xebf6('0x1a')](__dirname,_0xebf6('0x1b'),_0x10051e[_0xebf6('0x18')][_0xebf6('0x19')]);var _0x6303ac=process[_0xebf6('0x1c')]();process[_0xebf6('0x1d')](path[_0xebf6('0x1e')](_0x4fb497));return execChildProcess()[_0xebf6('0x10')](function(_0x2e32c6){process[_0xebf6('0x1d')](_0x6303ac);return pm2[_0xebf6('0x1f')]({'name':_0x10051e[_0xebf6('0x18')][_0xebf6('0xa')],'script':_0x4fb497});})[_0xebf6('0x10')](function(_0x1d0078){pm2[_0xebf6('0x20')]();return _0x1d0078[0x0];})[_0xebf6('0x10')](respondWithResult(_0x410f06,0xc9))[_0xebf6('0x13')](handleError(_0x410f06,null));}else{return _0x410f06['status'](0x1f4)['send']({'message':_0xebf6('0x21')});}};exports['update']=function(_0x230d84,_0x430eb7){if(_0x230d84['body']['id']){delete _0x230d84['body']['id'];}var _0x37950c={'online':_0xebf6('0x22'),'stopped':_0xebf6('0x23')};if(_0x37950c[_0xebf6('0x24')](_0x230d84[_0xebf6('0x18')][_0xebf6('0x7')])){return pm2[_0x37950c[_0x230d84[_0xebf6('0x18')][_0xebf6('0x7')]]](_0x230d84['params']['id'])[_0xebf6('0x10')](respondWithResult(_0x430eb7,0xc8))[_0xebf6('0x13')](handleError(_0x430eb7,null));}else{return _0x430eb7['status'](0x1f4)[_0xebf6('0xb')]({'message':_0xebf6('0x25')});}};exports['destroy']=function(_0x2901fc,_0x1fa407){if(_0x2901fc[_0xebf6('0x18')]['id']){delete _0x2901fc[_0xebf6('0x18')]['id'];}if(_0x2901fc[_0xebf6('0x16')]['id']){return pm2[_0xebf6('0x26')](_0x2901fc['params']['id'])[_0xebf6('0x10')](function(_0x34cc38){pm2['dump']();return _0x34cc38[0x0];})['then'](respondWithResult(_0x1fa407,null))[_0xebf6('0x13')](handleError(_0x1fa407,null));}else{return _0x1fa407[_0xebf6('0x7')](0x1f4)['send']({'message':_0xebf6('0x27')});}};
\ No newline at end of file
index 4e9cc9e..02e0568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6f1=['express','fs-extra','../../components/interaction/service','../../config/environment','./realtime.controller','get','/queues','multer','path'];(function(_0x478d76,_0x9ad44b){var _0x2817b1=function(_0x3380a4){while(--_0x3380a4){_0x478d76['push'](_0x478d76['shift']());}};_0x2817b1(++_0x9ad44b);}(_0xe6f1,0x19c));var _0x1e6f=function(_0x4cba56,_0x5b2c44){_0x4cba56=_0x4cba56-0x0;var _0x3cc9f3=_0xe6f1[_0x4cba56];return _0x3cc9f3;};'use strict';var multer=require(_0x1e6f('0x0'));var util=require('util');var path=require(_0x1e6f('0x1'));var timeout=require('connect-timeout');var express=require(_0x1e6f('0x2'));var router=express['Router']();var fs_extra=require(_0x1e6f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x1e6f('0x4'));var config=require(_0x1e6f('0x5'));var controller=require(_0x1e6f('0x6'));router[_0x1e6f('0x7')](_0x1e6f('0x8'),auth['isAuthenticated'](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
+var _0xbd0e=['./realtime.controller','get','/queues','isAuthenticated','getQueues','exports','Router'];(function(_0xb177f4,_0x472d4c){var _0x2d74bc=function(_0x56268d){while(--_0x56268d){_0xb177f4['push'](_0xb177f4['shift']());}};_0x2d74bc(++_0x472d4c);}(_0xbd0e,0x187));var _0xebd0=function(_0x1979d8,_0x10d8f2){_0x1979d8=_0x1979d8-0x0;var _0x1d5bb3=_0xbd0e[_0x1979d8];return _0x1d5bb3;};'use strict';var express=require('express');var router=express[_0xebd0('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xebd0('0x1'));router[_0xebd0('0x2')](_0xebd0('0x3'),auth[_0xebd0('0x4')](),controller[_0xebd0('0x5')]);module[_0xebd0('0x6')]=router;
\ No newline at end of file
index 47e87bc..e24fe6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x641c=['lodash','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','Realtime,\x20%s,\x20%s','request\x20sent','Realtime,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','end','stack','name','send','getQueues','mail','chat','sms','openchannel','fax','whatsapp','query','toLowerCase','rawAttributes','key','getOptions','user','userProfileId','voice','type','QueueCampaigns','startCase','Queues','filter','UserProfile','getResources','findAndCountAll','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','loggedIn','talking','paused','push','pTalking','dialActive','dialMethod','Trunk','startPredictive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','predictiveIntervalAvailable','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','rows','map','get','available','waiting','originated','agents','find','merge','getAgents','online','getMembers','length','UserId','User','Queue','QueueId','Pause','findAll','agent','all','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv'];(function(_0x449a3c,_0x333fc5){var _0x5e0d91=function(_0x496c4c){while(--_0x496c4c){_0x449a3c['push'](_0x449a3c['shift']());}};_0x5e0d91(++_0x333fc5);}(_0x641c,0x1c3));var _0xc641=function(_0x13163b,_0x37c20a){_0x13163b=_0x13163b-0x0;var _0x11e38d=_0x641c[_0x13163b];return _0x11e38d;};'use strict';var emlformat=require(_0xc641('0x0'));var rimraf=require(_0xc641('0x1'));var zipdir=require(_0xc641('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc641('0x3'));var moment=require(_0xc641('0x4'));var BPromise=require(_0xc641('0x5'));var Mustache=require(_0xc641('0x6'));var util=require(_0xc641('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xc641('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc641('0x9'));var squel=require('squel');var crypto=require(_0xc641('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc641('0xb'));var toCsv=require(_0xc641('0x8'));var querystring=require(_0xc641('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc641('0xd'));var qs=require(_0xc641('0xe'));var as=require(_0xc641('0xf'));var hardwareService=require(_0xc641('0x10'));var logger=require(_0xc641('0x11'))(_0xc641('0x12'));var utils=require(_0xc641('0x13'));var config=require(_0xc641('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc641('0x15'))['db'];var jayson=require(_0xc641('0x16'));var client=jayson[_0xc641('0x17')][_0xc641('0x18')]({'port':0x232a});var routingClient=jayson['client'][_0xc641('0x18')]({'port':0x232c});function respondWithRpcPromise(_0x588a3b,_0x32de6b,_0x178692,_0x3d181f){return new BPromise(function(_0x2e559c,_0x1c41c5){var _0x87c4d9=_0x3d181f||client;return _0x87c4d9[_0xc641('0x19')](_0x588a3b,_0x178692)['then'](function(_0xde4cb7){logger['info'](_0xc641('0x1a'),_0x32de6b,_0xc641('0x1b'));logger['debug'](_0xc641('0x1c'),_0x32de6b,_0xc641('0x1b'),JSON[_0xc641('0x1d')](_0xde4cb7));if(_0xde4cb7[_0xc641('0x1e')]){if(_0xde4cb7['error'][_0xc641('0x1f')]===0x1f4){logger[_0xc641('0x1e')](_0xc641('0x1a'),_0x32de6b,_0xde4cb7['error']['message']);return _0x1c41c5(_0xde4cb7[_0xc641('0x1e')]['message']);}logger['error']('Realtime,\x20%s,\x20%s',_0x32de6b,_0xde4cb7['error'][_0xc641('0x20')]);return _0x2e559c(_0xde4cb7['error'][_0xc641('0x20')]);}else{logger[_0xc641('0x21')](_0xc641('0x1a'),_0x32de6b,_0xc641('0x1b'));_0x2e559c(_0xde4cb7[_0xc641('0x22')]['message']);}})['catch'](function(_0x45fb03){logger[_0xc641('0x1e')](_0xc641('0x1a'),_0x32de6b,_0x45fb03);_0x1c41c5(_0x45fb03);});});}function respondWithStatusCode(_0x45ea24,_0x8485b5){_0x8485b5=_0x8485b5||0xcc;return function(_0xa9cbfe){if(_0xa9cbfe){return _0x45ea24[_0xc641('0x23')](_0x8485b5);}return _0x45ea24[_0xc641('0x24')](_0x8485b5)['end']();};}function respondWithResult(_0x26ee03,_0x26a817){_0x26a817=_0x26a817||0xc8;return function(_0x4adb03){if(_0x4adb03){return _0x26ee03[_0xc641('0x24')](_0x26a817)['json'](_0x4adb03);}};}function respondWithFilteredResult(_0x372ea0,_0x5e1227){return function(_0x314996){if(_0x314996){var _0x4068ec=typeof _0x5e1227[_0xc641('0x25')]===_0xc641('0x26')&&typeof _0x5e1227[_0xc641('0x27')]===_0xc641('0x26');var _0x4ef5d9=_0x314996[_0xc641('0x28')];var _0x598eac=_0x4068ec?0x0:_0x5e1227['offset'];var _0x502482=_0x4068ec?_0x314996[_0xc641('0x28')]:_0x5e1227[_0xc641('0x25')]+_0x5e1227[_0xc641('0x27')];var _0x1e437f;if(_0x502482>=_0x4ef5d9){_0x502482=_0x4ef5d9;_0x1e437f=0xc8;}else{_0x1e437f=0xce;}_0x372ea0['status'](_0x1e437f);return _0x372ea0['set'](_0xc641('0x29'),_0x598eac+'-'+_0x502482+'/'+_0x4ef5d9)[_0xc641('0x2a')](_0x314996);}return null;};}function patchUpdates(_0x1f7e0c){return function(_0x2e3203){try{jsonpatch[_0xc641('0x2b')](_0x2e3203,_0x1f7e0c,!![]);}catch(_0xe4992a){return BPromise[_0xc641('0x2c')](_0xe4992a);}return _0x2e3203[_0xc641('0x2d')]();};}function saveUpdates(_0x6a85f5,_0x1d2c15){return function(_0x49e97e){if(_0x49e97e){return _0x49e97e['update'](_0x6a85f5)[_0xc641('0x2e')](function(_0x549031){return _0x549031;});}return null;};}function removeEntity(_0xc30f0b,_0x5598ea){return function(_0x986a0e){if(_0x986a0e){return _0x986a0e[_0xc641('0x2f')]()[_0xc641('0x2e')](function(){_0xc30f0b[_0xc641('0x24')](0xcc)[_0xc641('0x30')]();});}};}function handleEntityNotFound(_0x245679,_0x5d8a39){return function(_0x11525e){if(!_0x11525e){_0x245679[_0xc641('0x23')](0x194);}return _0x11525e;};}function handleError(_0x2d5c31,_0x2e4aff){_0x2e4aff=_0x2e4aff||0x1f4;return function(_0x2d4424){logger[_0xc641('0x1e')](_0x2d4424[_0xc641('0x31')]);if(_0x2d4424[_0xc641('0x32')]){delete _0x2d4424['name'];}_0x2d5c31[_0xc641('0x24')](_0x2e4aff)[_0xc641('0x33')](_0x2d4424);};}exports[_0xc641('0x34')]=function(_0x34a2f0,_0x593065){var _0x586d96=[_0xc641('0x35'),_0xc641('0x36'),_0xc641('0x37'),_0xc641('0x38'),_0xc641('0x39'),_0xc641('0x3a'),'voice'];var _0x5d6f59={'count':0x0,'rows':[]},_0x5471b2={},_0x31d3bf;Promise['resolve']()['then'](function(){if(_0x34a2f0[_0xc641('0x3b')]['channel']){if(!_['includes'](_0x586d96,_0x34a2f0[_0xc641('0x3b')]['channel']['toLowerCase']()))throw new Error('Invalid\x20channel');_0x31d3bf=_0x34a2f0[_0xc641('0x3b')]['channel'][_0xc641('0x3c')]();}var _0x8d40c9=_['startCase'](_0x31d3bf)+'Queue';var _0x16e97e=_['map'](db[_0x8d40c9][_0xc641('0x3d')],function(_0x1b9c34){return{'name':_0x1b9c34['fieldName'],'type':_0x1b9c34['type'][_0xc641('0x3e')]};});_0x5471b2=qs[_0xc641('0x3f')](_0x16e97e,_0x34a2f0);if(_0x34a2f0[_0xc641('0x40')]['role']==='user'){var _0x239170={'params':{'id':_0x34a2f0[_0xc641('0x40')][_0xc641('0x41')]},'query':{'section':_0x31d3bf===_0xc641('0x42')&&_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')]==='outbound'?_0xc641('0x44'):_[_0xc641('0x45')](_0x31d3bf)+_0xc641('0x46'),'type':_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')],'nolimit':!![],'sort':_0xc641('0x32'),'filter':_0x34a2f0[_0xc641('0x3b')][_0xc641('0x47')]}};return db[_0xc641('0x48')][_0xc641('0x49')](_0x239170);}return db[_0x8d40c9][_0xc641('0x4a')](_0x5471b2);})[_0xc641('0x2e')](function(_0x3031c5){_0x5d6f59[_0xc641('0x28')]=_0x3031c5[_0xc641('0x28')];var _0x5831c0=_0x31d3bf==='voice'?client:routingClient;return _0x5831c0[_0xc641('0x19')](_[_0xc641('0x45')](_0x31d3bf)+'Queues',_0x34a2f0)['then'](function(_0x5c8db6){if(_0x5c8db6[_0xc641('0x1e')])throw new Error(util[_0xc641('0x4b')](_0xc641('0x4c'),_0x31d3bf));var _0x3d6ee0=_0x5c8db6[_0xc641('0x22')];var _0x4a0d5d=[_0xc641('0x4d'),'available','waiting',_0xc641('0x4e'),_0xc641('0x4f')];if(_0x31d3bf===_0xc641('0x42')&&_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')]==='outbound'){_0x4a0d5d[_0xc641('0x50')](_0xc641('0x51'),'originated','message',_0xc641('0x52'),_0xc641('0x53'),_0xc641('0x54'),_0xc641('0x55'),'startProgressive',_0xc641('0x56'),_0xc641('0x57'),_0xc641('0x58'),_0xc641('0x59'),'dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0xc641('0x5a'),'predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls',_0xc641('0x5b'),'predictiveIntervalDroppedCallsCallersExit',_0xc641('0x5c'),'predictiveIntervalAvgTalktime');}var _0x4f03d7=_0x3031c5[_0xc641('0x5d')][_0xc641('0x5e')](function(_0x235da3){var _0x502ca6=_0x235da3[_0xc641('0x5f')]({'plain':!![]});_0x502ca6[_0xc641('0x4f')]=0x0;_0x502ca6['loggedInDb']=0x0;_0x502ca6[_0xc641('0x4d')]=0x0;_0x502ca6[_0xc641('0x60')]=0x0;_0x502ca6[_0xc641('0x4f')]=0x0;_0x502ca6[_0xc641('0x61')]=0x0;if(_0x31d3bf===_0xc641('0x42')){_0x502ca6['talking']=0x0;if(_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')]==='outbound'){_0x502ca6[_0xc641('0x51')]=0x0;_0x502ca6[_0xc641('0x62')]=0x0;}}_0x502ca6[_0xc641('0x63')]=[];var _0x53fd9e=_[_0xc641('0x64')](_0x3d6ee0[_0xc641('0x5d')],['id',_0x502ca6['id']]);if(_0x53fd9e)_[_0xc641('0x65')](_0x502ca6,_['pick'](_0x53fd9e,_0x4a0d5d));if(_0x31d3bf==='voice'){return _0x235da3[_0xc641('0x66')]({'attributes':['id','name',_0xc641('0x67')],'joinTableAttributes':[],'raw':!![]})[_0xc641('0x2e')](function(_0x182522){return _0x235da3[_0xc641('0x68')]({'raw':!![]})[_0xc641('0x2e')](function(_0x32b015){for(var _0x5d2ccf=0x0;_0x5d2ccf<_0x182522[_0xc641('0x69')];_0x5d2ccf++){var _0x1ee410=_[_0xc641('0x64')](_0x32b015,[_0xc641('0x6a'),_0x182522[_0x5d2ccf]['id']]);var _0x4fbd6f={'id':_0x182522[_0x5d2ccf]['id'],'name':_0x182522[_0x5d2ccf][_0xc641('0x32')],'online':Boolean(_0x182522[_0x5d2ccf][_0xc641('0x67')]),'paused':_0x1ee410?Boolean(_0x1ee410[_0xc641('0x4f')]):![]};if(_0x4fbd6f['online'])_0x502ca6['loggedInDb']++;if(_0x4fbd6f[_0xc641('0x4f')])_0x502ca6['paused']++;_0x502ca6[_0xc641('0x63')][_0xc641('0x50')](_0x4fbd6f);}return _0x502ca6;});});}else{var _0x4072da=_0xc641('0x6b')+_[_0xc641('0x45')](_0x31d3bf)+_0xc641('0x6c');var _0x269101=_['startCase'](_0x31d3bf)+_0xc641('0x6d');var _0x2f3347=_0x31d3bf+_0xc641('0x6e');return db[_0x4072da][_0xc641('0x6f')]({'where':{['userQueueKey']:_0x235da3['id']},'raw':!![]})[_0xc641('0x2e')](function(_0x273471){return db[_0xc641('0x6b')][_0xc641('0x6f')]({'attributes':['id',_0xc641('0x32'),_0xc641('0x67'),_0x2f3347],'where':{'id':_[_0xc641('0x5e')](_0x273471,'UserId'),'role':_0xc641('0x70')},'raw':!![]});})[_0xc641('0x2e')](function(_0xf2cfc0){for(var _0x1b667e=0x0;_0x1b667e<_0xf2cfc0[_0xc641('0x69')];_0x1b667e++){var _0x3471fb={'id':_0xf2cfc0[_0x1b667e]['id'],'name':_0xf2cfc0[_0x1b667e][_0xc641('0x32')],'online':Boolean(_0xf2cfc0[_0x1b667e][_0xc641('0x67')]),'paused':Boolean(_0xf2cfc0[_0x1b667e][_0x2f3347])};if(_0x3471fb[_0xc641('0x67')])_0x502ca6['loggedInDb']++;if(_0x3471fb['paused'])_0x502ca6[_0xc641('0x4f')]++;_0x502ca6['agents'][_0xc641('0x50')](_0x3471fb);}return _0x502ca6;});}});return Promise[_0xc641('0x71')](_0x4f03d7);});})[_0xc641('0x2e')](function(_0x4b7ee4){_0x5d6f59[_0xc641('0x5d')]=_0x4b7ee4;return _0x5d6f59;})[_0xc641('0x2e')](respondWithFilteredResult(_0x593065,_0x5471b2))[_0xc641('0x72')](handleError(_0x593065,null));};
\ No newline at end of file
+var _0xa6b0=['limit','count','status','set','Content-Range','json','error','name','send','getQueues','mail','chat','sms','fax','whatsapp','resolve','then','query','includes','toLowerCase','Invalid\x20channel','startCase','map','rawAttributes','fieldName','key','getOptions','user','userProfileId','voice','type','outbound','QueueCampaigns','Queues','getResources','findAndCountAll','request','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','available','waiting','talking','paused','pTalking','originated','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','loggedIn','agents','find','merge','pick','length','push','User','Queue','Pause','findAll','QueueId','online','UserId','agent','all','catch','util','lodash','../../config/logger','api','../../mysqldb','http','client','offset','undefined'];(function(_0x7a319d,_0x235959){var _0x5c6b4e=function(_0x2e5b17){while(--_0x2e5b17){_0x7a319d['push'](_0x7a319d['shift']());}};_0x5c6b4e(++_0x235959);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x57142f,_0x23e0c6){_0x57142f=_0x57142f-0x0;var _0x1013d5=_0xa6b0[_0x57142f];return _0x1013d5;};'use strict';var util=require(_0x0a6b('0x0'));var _=require(_0x0a6b('0x1'));var jayson=require('jayson/promise');var qs=require('../../components/parsers/qs');var logger=require(_0x0a6b('0x2'))(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var client=jayson['client'][_0x0a6b('0x5')]({'port':0x232a});var routingClient=jayson[_0x0a6b('0x6')][_0x0a6b('0x5')]({'port':0x232c});function respondWithFilteredResult(_0xc7140c,_0x3dc2b0){return function(_0x3b6967){if(_0x3b6967){var _0x1b5fb5=typeof _0x3dc2b0[_0x0a6b('0x7')]===_0x0a6b('0x8')&&typeof _0x3dc2b0[_0x0a6b('0x9')]===_0x0a6b('0x8');var _0xdcc3e5=_0x3b6967['count'];var _0x493948=_0x1b5fb5?0x0:_0x3dc2b0[_0x0a6b('0x7')];var _0x100da8=_0x1b5fb5?_0x3b6967[_0x0a6b('0xa')]:_0x3dc2b0[_0x0a6b('0x7')]+_0x3dc2b0[_0x0a6b('0x9')];var _0xe681c9;if(_0x100da8>=_0xdcc3e5){_0x100da8=_0xdcc3e5;_0xe681c9=0xc8;}else{_0xe681c9=0xce;}_0xc7140c[_0x0a6b('0xb')](_0xe681c9);return _0xc7140c[_0x0a6b('0xc')](_0x0a6b('0xd'),_0x493948+'-'+_0x100da8+'/'+_0xdcc3e5)[_0x0a6b('0xe')](_0x3b6967);}return null;};}function handleError(_0x391fe6,_0x890493){_0x890493=_0x890493||0x1f4;return function(_0x244a7d){logger[_0x0a6b('0xf')](_0x244a7d['stack']);if(_0x244a7d['name']){delete _0x244a7d[_0x0a6b('0x10')];}_0x391fe6[_0x0a6b('0xb')](_0x890493)[_0x0a6b('0x11')](_0x244a7d);};}exports[_0x0a6b('0x12')]=function(_0x8bbc03,_0x45fc9f){var _0x9bb98e=[_0x0a6b('0x13'),_0x0a6b('0x14'),_0x0a6b('0x15'),'openchannel',_0x0a6b('0x16'),_0x0a6b('0x17'),'voice'];var _0x290f7f={'count':0x0,'rows':[]},_0x4d0e3b={},_0xcb412;Promise[_0x0a6b('0x18')]()[_0x0a6b('0x19')](function(){if(_0x8bbc03[_0x0a6b('0x1a')]['channel']){if(!_[_0x0a6b('0x1b')](_0x9bb98e,_0x8bbc03[_0x0a6b('0x1a')]['channel'][_0x0a6b('0x1c')]()))throw new Error(_0x0a6b('0x1d'));_0xcb412=_0x8bbc03[_0x0a6b('0x1a')]['channel'][_0x0a6b('0x1c')]();}var _0x93a465=_[_0x0a6b('0x1e')](_0xcb412)+'Queue';var _0x220d3e=_[_0x0a6b('0x1f')](db[_0x93a465][_0x0a6b('0x20')],function(_0x5e8206){return{'name':_0x5e8206[_0x0a6b('0x21')],'type':_0x5e8206['type'][_0x0a6b('0x22')]};});_0x4d0e3b=qs[_0x0a6b('0x23')](_0x220d3e,_0x8bbc03);if(_0x8bbc03[_0x0a6b('0x24')]['role']===_0x0a6b('0x24')){var _0x2e58fd={'params':{'id':_0x8bbc03[_0x0a6b('0x24')][_0x0a6b('0x25')]},'query':{'section':_0xcb412===_0x0a6b('0x26')&&_0x8bbc03['query'][_0x0a6b('0x27')]===_0x0a6b('0x28')?_0x0a6b('0x29'):_['startCase'](_0xcb412)+_0x0a6b('0x2a'),'type':_0x8bbc03['query'][_0x0a6b('0x27')],'nolimit':!![],'sort':_0x0a6b('0x10'),'filter':_0x8bbc03[_0x0a6b('0x1a')]['filter']}};return db['UserProfile'][_0x0a6b('0x2b')](_0x2e58fd);}return db[_0x93a465][_0x0a6b('0x2c')](_0x4d0e3b);})[_0x0a6b('0x19')](function(_0x3d649e){_0x290f7f[_0x0a6b('0xa')]=_0x3d649e[_0x0a6b('0xa')];var _0x486f0d=_0xcb412===_0x0a6b('0x26')?client:routingClient;return _0x486f0d[_0x0a6b('0x2d')](_['startCase'](_0xcb412)+_0x0a6b('0x2a'),_0x8bbc03)['then'](function(_0x4eb516){if(_0x4eb516[_0x0a6b('0xf')])throw new Error(util[_0x0a6b('0x2e')](_0x0a6b('0x2f'),_0xcb412));var _0x10dad1=_0x4eb516[_0x0a6b('0x30')];var _0x55cbd3=['loggedIn',_0x0a6b('0x31'),_0x0a6b('0x32'),_0x0a6b('0x33'),_0x0a6b('0x34')];if(_0xcb412==='voice'&&_0x8bbc03[_0x0a6b('0x1a')][_0x0a6b('0x27')]==='outbound'){_0x55cbd3['push'](_0x0a6b('0x35'),_0x0a6b('0x36'),'message',_0x0a6b('0x37'),_0x0a6b('0x38'),_0x0a6b('0x39'),_0x0a6b('0x3a'),_0x0a6b('0x3b'),_0x0a6b('0x3c'),_0x0a6b('0x3d'),_0x0a6b('0x3e'),_0x0a6b('0x3f'),_0x0a6b('0x40'),_0x0a6b('0x41'),_0x0a6b('0x42'),'predictiveIntervalAvailable',_0x0a6b('0x43'),_0x0a6b('0x44'),'predictiveIntervalDroppedCallsTimeout',_0x0a6b('0x45'),_0x0a6b('0x46'),_0x0a6b('0x47'));}var _0x10981f=_0x3d649e[_0x0a6b('0x48')][_0x0a6b('0x1f')](function(_0x28bc13){var _0x3f1be6=_0x28bc13[_0x0a6b('0x49')]({'plain':!![]});_0x3f1be6['paused']=0x0;_0x3f1be6[_0x0a6b('0x4a')]=0x0;_0x3f1be6[_0x0a6b('0x4b')]=0x0;_0x3f1be6[_0x0a6b('0x31')]=0x0;_0x3f1be6[_0x0a6b('0x34')]=0x0;_0x3f1be6[_0x0a6b('0x32')]=0x0;if(_0xcb412===_0x0a6b('0x26')){_0x3f1be6[_0x0a6b('0x33')]=0x0;if(_0x8bbc03[_0x0a6b('0x1a')][_0x0a6b('0x27')]==='outbound'){_0x3f1be6[_0x0a6b('0x35')]=0x0;_0x3f1be6[_0x0a6b('0x36')]=0x0;}}_0x3f1be6[_0x0a6b('0x4c')]=[];var _0x39df98=_[_0x0a6b('0x4d')](_0x10dad1[_0x0a6b('0x48')],['id',_0x3f1be6['id']]);if(_0x39df98)_[_0x0a6b('0x4e')](_0x3f1be6,_[_0x0a6b('0x4f')](_0x39df98,_0x55cbd3));if(_0xcb412===_0x0a6b('0x26')){return _0x28bc13['getAgents']({'attributes':['id',_0x0a6b('0x10'),'online'],'joinTableAttributes':[],'raw':!![]})['then'](function(_0xb7a7d8){return _0x28bc13['getMembers']({'raw':!![]})['then'](function(_0x2f1221){for(var _0x1f756d=0x0;_0x1f756d<_0xb7a7d8[_0x0a6b('0x50')];_0x1f756d++){var _0x4fdfeb=_[_0x0a6b('0x4d')](_0x2f1221,['UserId',_0xb7a7d8[_0x1f756d]['id']]);var _0x531f94={'id':_0xb7a7d8[_0x1f756d]['id'],'name':_0xb7a7d8[_0x1f756d][_0x0a6b('0x10')],'online':Boolean(_0xb7a7d8[_0x1f756d]['online']),'paused':_0x4fdfeb?Boolean(_0x4fdfeb[_0x0a6b('0x34')]):![]};if(_0x531f94['online'])_0x3f1be6[_0x0a6b('0x4a')]++;if(_0x531f94['paused'])_0x3f1be6['paused']++;_0x3f1be6[_0x0a6b('0x4c')][_0x0a6b('0x51')](_0x531f94);}return _0x3f1be6;});});}else{var _0x2b937c=_0x0a6b('0x52')+_['startCase'](_0xcb412)+_0x0a6b('0x53');var _0xf92e0f=_0xcb412+_0x0a6b('0x54');return db[_0x2b937c][_0x0a6b('0x55')]({'where':{[_[_0x0a6b('0x1e')](_0xcb412)+_0x0a6b('0x56')]:_0x28bc13['id']},'raw':!![]})[_0x0a6b('0x19')](function(_0x5f373b){return db[_0x0a6b('0x52')][_0x0a6b('0x55')]({'attributes':['id',_0x0a6b('0x10'),_0x0a6b('0x57'),_0xf92e0f],'where':{'id':_[_0x0a6b('0x1f')](_0x5f373b,_0x0a6b('0x58')),'role':_0x0a6b('0x59')},'raw':!![]});})[_0x0a6b('0x19')](function(_0xa20567){for(var _0x5ab75f=0x0;_0x5ab75f<_0xa20567[_0x0a6b('0x50')];_0x5ab75f++){var _0x12953b={'id':_0xa20567[_0x5ab75f]['id'],'name':_0xa20567[_0x5ab75f][_0x0a6b('0x10')],'online':Boolean(_0xa20567[_0x5ab75f][_0x0a6b('0x57')]),'paused':Boolean(_0xa20567[_0x5ab75f][_0xf92e0f])};if(_0x12953b[_0x0a6b('0x57')])_0x3f1be6[_0x0a6b('0x4a')]++;if(_0x12953b[_0x0a6b('0x34')])_0x3f1be6['paused']++;_0x3f1be6['agents'][_0x0a6b('0x51')](_0x12953b);}return _0x3f1be6;});}});return Promise[_0x0a6b('0x5a')](_0x10981f);});})[_0x0a6b('0x19')](function(_0x46352e){_0x290f7f[_0x0a6b('0x48')]=_0x46352e;return _0x290f7f;})[_0x0a6b('0x19')](respondWithFilteredResult(_0x45fc9f,_0x4d0e3b))[_0x0a6b('0x5b')](handleError(_0x45fc9f,null));};
\ No newline at end of file
index 1d1c1bc..353e0aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x4b8dc1,_0x4a2495){var _0x736b02=function(_0x411773){while(--_0x411773){_0x4b8dc1['push'](_0x4b8dc1['shift']());}};_0x736b02(++_0x4a2495);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xdd2bfa,_0x5bd304){_0xdd2bfa=_0xdd2bfa-0x0;var _0x55397e=_0xcb91[_0xdd2bfa];return _0x55397e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x2458fc,_0x65d2da){var _0x32b402=function(_0x3a1a56){while(--_0x3a1a56){_0x2458fc['push'](_0x2458fc['shift']());}};_0x32b402(++_0x65d2da);}(_0xe706,0xa3));var _0x6e70=function(_0x56fb02,_0x179d7a){_0x56fb02=_0x56fb02-0x0;var _0x177f5b=_0xe706[_0x56fb02];return _0x177f5b;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 6c9b9a3..06fa711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6333=['DATE','INTEGER','STRING'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x6333,0x83));var _0x3633=function(_0xe4269d,_0x29f263){_0xe4269d=_0xe4269d-0x0;var _0x43330a=_0x6333[_0xe4269d];return _0x43330a;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x3633('0x0')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x3633('0x0')]},'starttime':{'type':Sequelize[_0x3633('0x1')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x3633('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x3633('0x0')]},'membername':{'type':Sequelize[_0x3633('0x0')]}};
\ No newline at end of file
+var _0xbd3c=['exports','INTEGER','DATE','STRING','sequelize'];(function(_0x2c2a03,_0x33ce6b){var _0x1dde36=function(_0x1c7b5e){while(--_0x1c7b5e){_0x2c2a03['push'](_0x2c2a03['shift']());}};_0x1dde36(++_0x33ce6b);}(_0xbd3c,0xc2));var _0xcbd3=function(_0x2061d8,_0x48b634){_0x2061d8=_0x2061d8-0x0;var _0x264753=_0xbd3c[_0x2061d8];return _0x264753;};'use strict';var Sequelize=require(_0xcbd3('0x0'));module[_0xcbd3('0x1')]={'state':{'type':Sequelize[_0xcbd3('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xcbd3('0x3')]},'uniqueid':{'type':Sequelize[_0xcbd3('0x4')]},'starttime':{'type':Sequelize[_0xcbd3('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xcbd3('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xcbd3('0x4')]}};
\ No newline at end of file
index 572012c..df40de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa467=['exports','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./reportAgentPreview.attributes'];(function(_0x4c5409,_0x274a87){var _0x333406=function(_0x3adbbf){while(--_0x3adbbf){_0x4c5409['push'](_0x4c5409['shift']());}};_0x333406(++_0x274a87);}(_0xa467,0x162));var _0x7a46=function(_0xc466f3,_0x1d184f){_0xc466f3=_0xc466f3-0x0;var _0x2bae19=_0xa467[_0xc466f3];return _0x2bae19;};'use strict';var _=require(_0x7a46('0x0'));var util=require(_0x7a46('0x1'));var logger=require(_0x7a46('0x2'))(_0x7a46('0x3'));var moment=require(_0x7a46('0x4'));var BPromise=require(_0x7a46('0x5'));var rp=require(_0x7a46('0x6'));var fs=require('fs');var path=require(_0x7a46('0x7'));var rimraf=require('rimraf');var config=require(_0x7a46('0x8'));var attributes=require(_0x7a46('0x9'));module[_0x7a46('0xa')]=function(_0x352c19,_0x4960ae){return _0x352c19['define'](_0x7a46('0xb'),attributes,{'tableName':_0x7a46('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02be=['rimraf','../../config/environment','./reportAgentPreview.attributes','exports','ReportAgentPreview','report_agent_preview','lodash','util','api','moment','request-promise'];(function(_0x29064e,_0x1f425b){var _0x262048=function(_0x97e27){while(--_0x97e27){_0x29064e['push'](_0x29064e['shift']());}};_0x262048(++_0x1f425b);}(_0x02be,0xe2));var _0xe02b=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x02be[_0x543084];return _0x306a57;};'use strict';var _=require(_0xe02b('0x0'));var util=require(_0xe02b('0x1'));var logger=require('../../config/logger')(_0xe02b('0x2'));var moment=require(_0xe02b('0x3'));var BPromise=require('bluebird');var rp=require(_0xe02b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe02b('0x5'));var config=require(_0xe02b('0x6'));var attributes=require(_0xe02b('0x7'));module[_0xe02b('0x8')]=function(_0x1a0120,_0x4a4f9f){return _0x1a0120['define'](_0xe02b('0x9'),attributes,{'tableName':_0xe02b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 95cfcff..5c01209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89b4=['create','body','options','raw','info','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview'];(function(_0x9fc132,_0x18ec3a){var _0x58351b=function(_0x5258e7){while(--_0x5258e7){_0x9fc132['push'](_0x9fc132['shift']());}};_0x58351b(++_0x18ec3a);}(_0x89b4,0xe5));var _0x489b=function(_0x548b61,_0x34c9aa){_0x548b61=_0x548b61-0x0;var _0x5618c1=_0x89b4[_0x548b61];return _0x5618c1;};'use strict';var _=require('lodash');var util=require(_0x489b('0x0'));var moment=require(_0x489b('0x1'));var BPromise=require(_0x489b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x489b('0x3'));var db=require(_0x489b('0x4'))['db'];var utils=require(_0x489b('0x5'));var logger=require(_0x489b('0x6'))(_0x489b('0x7'));var config=require('../../config/environment');var jayson=require(_0x489b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x55c7d0,_0x4b1397,_0x1babd4){return new BPromise(function(_0x4c2aff,_0x3d4f73){return client[_0x489b('0x9')](_0x55c7d0,_0x1babd4)[_0x489b('0xa')](function(_0x12a789){logger['info'](_0x489b('0xb'),_0x4b1397,_0x489b('0xc'));logger[_0x489b('0xd')](_0x489b('0xe'),_0x4b1397,'request\x20sent',JSON[_0x489b('0xf')](_0x12a789));if(_0x12a789[_0x489b('0x10')]){if(_0x12a789[_0x489b('0x10')][_0x489b('0x11')]===0x1f4){logger['error'](_0x489b('0xb'),_0x4b1397,_0x12a789[_0x489b('0x10')]['message']);return _0x3d4f73(_0x12a789[_0x489b('0x10')][_0x489b('0x12')]);}logger[_0x489b('0x10')](_0x489b('0xb'),_0x4b1397,_0x12a789['error'][_0x489b('0x12')]);return _0x4c2aff(_0x12a789[_0x489b('0x10')][_0x489b('0x12')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x4b1397,'request\x20sent');_0x4c2aff(_0x12a789[_0x489b('0x13')]['message']);}})[_0x489b('0x14')](function(_0x27df8f){logger[_0x489b('0x10')](_0x489b('0xb'),_0x4b1397,_0x27df8f);_0x3d4f73(_0x27df8f);});});}exports[_0x489b('0x15')]=function(_0x1e7e22){var _0x18827e=this;return new Promise(function(_0x1d1aa7,_0x5438f6){return db[_0x489b('0x16')][_0x489b('0x17')](_0x1e7e22[_0x489b('0x18')],{'raw':_0x1e7e22[_0x489b('0x19')]?_0x1e7e22[_0x489b('0x19')][_0x489b('0x1a')]===undefined?!![]:![]:!![]})[_0x489b('0xa')](function(_0xf70891){logger[_0x489b('0x1b')](_0x489b('0x15'),_0x1e7e22);logger['debug'](_0x489b('0x15'),_0x1e7e22,JSON[_0x489b('0xf')](_0xf70891));_0x1d1aa7(_0xf70891);})[_0x489b('0x14')](function(_0x5932ba){logger[_0x489b('0x10')](_0x489b('0x15'),_0x5932ba[_0x489b('0x12')],_0x1e7e22);_0x5438f6(_0x18827e[_0x489b('0x10')](0x1f4,_0x5932ba[_0x489b('0x12')]));});});};
\ No newline at end of file
+var _0x06ca=['error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0x06ca,0xdd));var _0xa06c=function(_0x1cac3b,_0x344896){_0x1cac3b=_0x1cac3b-0x0;var _0x36c22b=_0x06ca[_0x1cac3b];return _0x36c22b;};'use strict';var _=require(_0xa06c('0x0'));var util=require(_0xa06c('0x1'));var moment=require('moment');var BPromise=require(_0xa06c('0x2'));var rs=require(_0xa06c('0x3'));var fs=require('fs');var Redis=require(_0xa06c('0x4'));var db=require(_0xa06c('0x5'))['db'];var utils=require(_0xa06c('0x6'));var logger=require(_0xa06c('0x7'))(_0xa06c('0x8'));var config=require(_0xa06c('0x9'));var jayson=require(_0xa06c('0xa'));var client=jayson[_0xa06c('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53a33a,_0x1b4e7c,_0xae7189){return new BPromise(function(_0x4f230b,_0x1aed9b){return client[_0xa06c('0xc')](_0x53a33a,_0xae7189)[_0xa06c('0xd')](function(_0x3d02b5){logger[_0xa06c('0xe')](_0xa06c('0xf'),_0x1b4e7c,_0xa06c('0x10'));logger['debug'](_0xa06c('0x11'),_0x1b4e7c,'request\x20sent',JSON[_0xa06c('0x12')](_0x3d02b5));if(_0x3d02b5[_0xa06c('0x13')]){if(_0x3d02b5['error'][_0xa06c('0x14')]===0x1f4){logger[_0xa06c('0x13')](_0xa06c('0xf'),_0x1b4e7c,_0x3d02b5[_0xa06c('0x13')][_0xa06c('0x15')]);return _0x1aed9b(_0x3d02b5[_0xa06c('0x13')][_0xa06c('0x15')]);}logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x1b4e7c,_0x3d02b5[_0xa06c('0x13')][_0xa06c('0x15')]);return _0x4f230b(_0x3d02b5[_0xa06c('0x13')][_0xa06c('0x15')]);}else{logger['info'](_0xa06c('0xf'),_0x1b4e7c,_0xa06c('0x10'));_0x4f230b(_0x3d02b5[_0xa06c('0x16')][_0xa06c('0x15')]);}})[_0xa06c('0x17')](function(_0x3bf83e){logger['error'](_0xa06c('0xf'),_0x1b4e7c,_0x3bf83e);_0x1aed9b(_0x3bf83e);});});}exports[_0xa06c('0x18')]=function(_0x5d620e){var _0x1e1414=this;return new Promise(function(_0x1b9ee3,_0x5eabd5){return db[_0xa06c('0x19')][_0xa06c('0x1a')](_0x5d620e[_0xa06c('0x1b')],{'raw':_0x5d620e['options']?_0x5d620e[_0xa06c('0x1c')][_0xa06c('0x1d')]===undefined?!![]:![]:!![]})[_0xa06c('0xd')](function(_0x185881){logger[_0xa06c('0xe')](_0xa06c('0x18'),_0x5d620e);logger['debug'](_0xa06c('0x18'),_0x5d620e,JSON[_0xa06c('0x12')](_0x185881));_0x1b9ee3(_0x185881);})[_0xa06c('0x17')](function(_0x2a1680){logger['error'](_0xa06c('0x18'),_0x2a1680['message'],_0x5d620e);_0x5eabd5(_0x1e1414[_0xa06c('0x13')](0x1f4,_0x2a1680[_0xa06c('0x15')]));});});};
\ No newline at end of file
index e996d39..c94e8c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x650f=['/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','get','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','put','updateVoiceQueue','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','telephones','trunks','campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/fax/queues/:id/notify','queueNotify','fax','/fax/queues/:id','showFaxQueues'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x650f,0x13c));var _0xf650=function(_0x11233b,_0x5650ee){_0x11233b=_0x11233b-0x0;var _0x27ad6c=_0x650f[_0x11233b];return _0x27ad6c;};'use strict';var multer=require(_0xf650('0x0'));var util=require(_0xf650('0x1'));var path=require(_0xf650('0x2'));var express=require(_0xf650('0x3'));var router=express[_0xf650('0x4')]();var auth=require(_0xf650('0x5'));var controller=require(_0xf650('0x6'));router['get']('/voice/channels',auth[_0xf650('0x7')](),controller['voiceChannels']);router['get'](_0xf650('0x8'),auth['isAuthenticated'](),controller['voiceChannelMixMonitor']);router[_0xf650('0x9')](_0xf650('0xa'),auth[_0xf650('0x7')](),controller[_0xf650('0xb')]);router[_0xf650('0x9')]('/voice/queues',auth[_0xf650('0x7')](),controller[_0xf650('0xc')]);router['get'](_0xf650('0xd'),auth['isAuthenticated'](),controller[_0xf650('0xe')]);router[_0xf650('0x9')](_0xf650('0xf'),auth['isAuthenticated'](),controller[_0xf650('0x10')]);router[_0xf650('0x9')](_0xf650('0x11'),auth[_0xf650('0x7')](),controller['mailAccounts']);router[_0xf650('0x9')](_0xf650('0x12'),auth[_0xf650('0x7')](),controller[_0xf650('0x13')]);router[_0xf650('0x9')](_0xf650('0x14'),auth[_0xf650('0x7')](),controller['smsQueues']);router[_0xf650('0x9')](_0xf650('0x15'),auth[_0xf650('0x7')](),controller['whatsappQueues']);router['get'](_0xf650('0x16'),auth[_0xf650('0x7')](),controller[_0xf650('0x17')]);router[_0xf650('0x9')]('/voice/queues/preview/:id',auth[_0xf650('0x7')](),controller[_0xf650('0x18')]);router[_0xf650('0x9')](_0xf650('0x19'),auth[_0xf650('0x7')](),controller['voiceQueuesChannels']);router[_0xf650('0x9')](_0xf650('0x1a'),auth[_0xf650('0x7')](),controller[_0xf650('0x1b')]);router[_0xf650('0x9')](_0xf650('0x1c'),auth[_0xf650('0x7')](),controller[_0xf650('0x1d')]);router['get'](_0xf650('0x1e'),auth[_0xf650('0x7')](),controller['voiceQueuesChannelRedirect']);router['get'](_0xf650('0x1f'),auth[_0xf650('0x7')](),controller['showVoiceQueues']);router[_0xf650('0x20')](_0xf650('0x1f'),auth['isAuthenticated'](),controller[_0xf650('0x21')]);router['get']('/outbound',auth[_0xf650('0x7')](),controller['outbound']);router[_0xf650('0x9')]('/outbound/channels',auth[_0xf650('0x7')](),controller[_0xf650('0x22')]);router[_0xf650('0x9')](_0xf650('0x23'),auth[_0xf650('0x7')](),controller[_0xf650('0x24')]);router['put'](_0xf650('0x25'),auth[_0xf650('0x7')](),controller[_0xf650('0x26')]);router[_0xf650('0x9')]('/telephones',auth[_0xf650('0x7')](),controller[_0xf650('0x27')]);router[_0xf650('0x9')]('/trunks',auth[_0xf650('0x7')](),controller[_0xf650('0x28')]);router['get']('/campaigns',auth['isAuthenticated'](),controller[_0xf650('0x29')]);router[_0xf650('0x9')]('/fax/accounts',auth[_0xf650('0x7')](),controller[_0xf650('0x2a')]);router[_0xf650('0x9')](_0xf650('0x2b'),auth['isAuthenticated'](),controller[_0xf650('0x2c')]);router[_0xf650('0x9')]('/mail/queues/waitinginteractions',auth[_0xf650('0x7')](),controller[_0xf650('0x2d')]);router[_0xf650('0x9')]('/openchannel/queues/waitinginteractions',auth[_0xf650('0x7')](),controller['openchannelQueuesWaitingInteractions']);router[_0xf650('0x9')](_0xf650('0x2e'),auth['isAuthenticated'](),controller[_0xf650('0x2f')]);router['get'](_0xf650('0x30'),auth[_0xf650('0x7')](),controller['smsQueuesWaitingInteractions']);router[_0xf650('0x9')](_0xf650('0x31'),auth[_0xf650('0x7')](),controller[_0xf650('0x32')]);router[_0xf650('0x9')](_0xf650('0x33'),auth[_0xf650('0x7')](),controller[_0xf650('0x34')]);router[_0xf650('0x35')]('/mail/queues/:id/notify',auth[_0xf650('0x7')](),controller['queueNotify'](_0xf650('0x36')));router[_0xf650('0x9')](_0xf650('0x37'),auth['isAuthenticated'](),controller[_0xf650('0x38')]);router[_0xf650('0x35')](_0xf650('0x39'),auth[_0xf650('0x7')](),controller['queueNotify'](_0xf650('0x3a')));router[_0xf650('0x9')]('/chat/queues/:id',auth[_0xf650('0x7')](),controller['showChatQueues']);router[_0xf650('0x35')](_0xf650('0x3b'),auth[_0xf650('0x7')](),controller[_0xf650('0x3c')](_0xf650('0x3d')));router['get'](_0xf650('0x3e'),auth['isAuthenticated'](),controller[_0xf650('0x3f')]);router[_0xf650('0x35')](_0xf650('0x40'),auth['isAuthenticated'](),controller[_0xf650('0x3c')](_0xf650('0x41')));router[_0xf650('0x9')](_0xf650('0x42'),auth[_0xf650('0x7')](),controller[_0xf650('0x43')]);router[_0xf650('0x35')](_0xf650('0x44'),auth[_0xf650('0x7')](),controller[_0xf650('0x3c')](_0xf650('0x45')));router[_0xf650('0x35')](_0xf650('0x46'),auth[_0xf650('0x7')](),controller[_0xf650('0x3c')]('whatsapp'));router[_0xf650('0x9')]('/sms/queues/:id',auth['isAuthenticated'](),controller['showSmsQueues']);router[_0xf650('0x9')](_0xf650('0x47'),auth['isAuthenticated'](),controller[_0xf650('0x48')]);router[_0xf650('0x35')](_0xf650('0x49'),auth[_0xf650('0x7')](),controller[_0xf650('0x4a')]);module[_0xf650('0x4b')]=router;
\ No newline at end of file
+var _0x98e5=['/agents/:id/capacity','/telephones','/trunks','trunks','campaigns','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','/chat/queues/:id/notify','chat','showChatQueues','fax','openchannel','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','exports','multer','util','../../components/auth/service','./rpc.controller','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','isAuthenticated','voiceQueues','/chat/queues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','put','/outbound','outbound','/outbound/channels','outboundChannels','agents'];(function(_0x5263d2,_0x476862){var _0x2363a0=function(_0x22380d){while(--_0x22380d){_0x5263d2['push'](_0x5263d2['shift']());}};_0x2363a0(++_0x476862);}(_0x98e5,0x1d4));var _0x598e=function(_0x17e498,_0x48989c){_0x17e498=_0x17e498-0x0;var _0x4cd515=_0x98e5[_0x17e498];return _0x4cd515;};'use strict';var multer=require(_0x598e('0x0'));var util=require(_0x598e('0x1'));var path=require('path');var express=require('express');var router=express['Router']();var auth=require(_0x598e('0x2'));var controller=require(_0x598e('0x3'));router[_0x598e('0x4')](_0x598e('0x5'),auth['isAuthenticated'](),controller['voiceChannels']);router['get'](_0x598e('0x6'),auth['isAuthenticated'](),controller[_0x598e('0x7')]);router[_0x598e('0x4')](_0x598e('0x8'),auth['isAuthenticated'](),controller[_0x598e('0x9')]);router[_0x598e('0x4')]('/voice/queues',auth[_0x598e('0xa')](),controller[_0x598e('0xb')]);router[_0x598e('0x4')](_0x598e('0xc'),auth[_0x598e('0xa')](),controller['chatQueues']);router['get'](_0x598e('0xd'),auth[_0x598e('0xa')](),controller[_0x598e('0xe')]);router[_0x598e('0x4')](_0x598e('0xf'),auth[_0x598e('0xa')](),controller[_0x598e('0x10')]);router['get'](_0x598e('0x11'),auth['isAuthenticated'](),controller[_0x598e('0x12')]);router[_0x598e('0x4')](_0x598e('0x13'),auth['isAuthenticated'](),controller['smsQueues']);router[_0x598e('0x4')]('/whatsapp/queues',auth[_0x598e('0xa')](),controller[_0x598e('0x14')]);router[_0x598e('0x4')](_0x598e('0x15'),auth[_0x598e('0xa')](),controller[_0x598e('0x16')]);router[_0x598e('0x4')]('/voice/queues/preview/:id',auth[_0x598e('0xa')](),controller[_0x598e('0x17')]);router[_0x598e('0x4')](_0x598e('0x18'),auth[_0x598e('0xa')](),controller[_0x598e('0x19')]);router[_0x598e('0x4')](_0x598e('0x1a'),auth['isAuthenticated'](),controller[_0x598e('0x1b')]);router[_0x598e('0x4')](_0x598e('0x1c'),auth[_0x598e('0xa')](),controller['voiceQueuesChannelHangup']);router[_0x598e('0x4')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x598e('0xa')](),controller[_0x598e('0x1d')]);router[_0x598e('0x4')]('/voice/queues/:id',auth['isAuthenticated'](),controller['showVoiceQueues']);router[_0x598e('0x1e')]('/voice/queues/:id',auth['isAuthenticated'](),controller['updateVoiceQueue']);router['get'](_0x598e('0x1f'),auth[_0x598e('0xa')](),controller[_0x598e('0x20')]);router[_0x598e('0x4')](_0x598e('0x21'),auth[_0x598e('0xa')](),controller[_0x598e('0x22')]);router[_0x598e('0x4')]('/agents',auth[_0x598e('0xa')](),controller[_0x598e('0x23')]);router['put'](_0x598e('0x24'),auth['isAuthenticated'](),controller['agentCapacity']);router[_0x598e('0x4')](_0x598e('0x25'),auth['isAuthenticated'](),controller['telephones']);router[_0x598e('0x4')](_0x598e('0x26'),auth['isAuthenticated'](),controller[_0x598e('0x27')]);router[_0x598e('0x4')]('/campaigns',auth[_0x598e('0xa')](),controller[_0x598e('0x28')]);router[_0x598e('0x4')]('/fax/accounts',auth[_0x598e('0xa')](),controller['faxAccounts']);router[_0x598e('0x4')](_0x598e('0x29'),auth[_0x598e('0xa')](),controller[_0x598e('0x2a')]);router['get'](_0x598e('0x2b'),auth['isAuthenticated'](),controller[_0x598e('0x2c')]);router['get'](_0x598e('0x2d'),auth[_0x598e('0xa')](),controller[_0x598e('0x2e')]);router[_0x598e('0x4')](_0x598e('0x2f'),auth[_0x598e('0xa')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x598e('0x4')](_0x598e('0x30'),auth[_0x598e('0xa')](),controller['smsQueuesWaitingInteractions']);router[_0x598e('0x4')](_0x598e('0x31'),auth[_0x598e('0xa')](),controller['whatsappQueuesWaitingInteractions']);router[_0x598e('0x4')](_0x598e('0x32'),auth[_0x598e('0xa')](),controller[_0x598e('0x33')]);router[_0x598e('0x34')](_0x598e('0x35'),auth[_0x598e('0xa')](),controller[_0x598e('0x36')](_0x598e('0x37')));router[_0x598e('0x4')](_0x598e('0x38'),auth[_0x598e('0xa')](),controller['showMailQueues']);router[_0x598e('0x34')](_0x598e('0x39'),auth[_0x598e('0xa')](),controller[_0x598e('0x36')](_0x598e('0x3a')));router[_0x598e('0x4')]('/chat/queues/:id',auth['isAuthenticated'](),controller[_0x598e('0x3b')]);router[_0x598e('0x34')]('/fax/queues/:id/notify',auth[_0x598e('0xa')](),controller[_0x598e('0x36')](_0x598e('0x3c')));router['get']('/fax/queues/:id',auth[_0x598e('0xa')](),controller['showFaxQueues']);router[_0x598e('0x34')]('/openchannel/queues/:id/notify',auth[_0x598e('0xa')](),controller['queueNotify'](_0x598e('0x3d')));router[_0x598e('0x4')](_0x598e('0x3e'),auth[_0x598e('0xa')](),controller['showOpenchannelQueues']);router[_0x598e('0x34')](_0x598e('0x3f'),auth[_0x598e('0xa')](),controller[_0x598e('0x36')](_0x598e('0x40')));router[_0x598e('0x34')](_0x598e('0x41'),auth[_0x598e('0xa')](),controller[_0x598e('0x36')]('whatsapp'));router[_0x598e('0x4')](_0x598e('0x42'),auth[_0x598e('0xa')](),controller[_0x598e('0x43')]);router[_0x598e('0x4')](_0x598e('0x44'),auth[_0x598e('0xa')](),controller['showWhatsappQueues']);router['post'](_0x598e('0x45'),auth[_0x598e('0xa')](),controller[_0x598e('0x46')]);module[_0x598e('0x47')]=router;
\ No newline at end of file
index abaf7e5..8070774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['request','error','result','catch','status','json','sendStatus','name','send','isNil','rows','find','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','then','voiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','updateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','merge','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format','MemberReport','findOrCreate','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Agent\x20not\x20found','Message','findOne','agentTransferTimeout','bluebird','../../mysqldb','../../config/logger','jayson/promise','client','http'];(function(_0x45ece3,_0x13a1cc){var _0x3e5c1a=function(_0x561cde){while(--_0x561cde){_0x45ece3['push'](_0x45ece3['shift']());}};_0x3e5c1a(++_0x13a1cc);}(_0x2675,0x75));var _0x5267=function(_0x226230,_0x515e03){_0x226230=_0x226230-0x0;var _0x1f5ada=_0x2675[_0x226230];return _0x1f5ada;};'use strict';var BPromise=require(_0x5267('0x0'));var moment=require('moment');var _=require('lodash');var util=require('util');var db=require(_0x5267('0x1'))['db'];var logger=require(_0x5267('0x2'))('api');var jayson=require(_0x5267('0x3'));var amiClient=jayson[_0x5267('0x4')]['http']({'port':0x232a});var mailClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232b});var routingClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){var _0x506fd7=_0x527c16?_0x527c16:amiClient;return _0x506fd7[_0x5267('0x6')](_0x20f065,_0xc56cd5)['then'](function(_0x3ff4e9){if(_0x3ff4e9[_0x5267('0x7')]){if(_0x3ff4e9[_0x5267('0x7')]['code']===0x1f4){return _0x46bfdf(_0x3ff4e9[_0x5267('0x7')]['message']);}return _0x9e0a27(_0x3ff4e9[_0x5267('0x7')]['message']);}else{_0x9e0a27(_0x3ff4e9[_0x5267('0x8')]);}})[_0x5267('0x9')](function(_0x268a8a){_0x46bfdf(_0x268a8a);});});}function respondWithResult(_0x1f9be3,_0x1d7090){_0x1d7090=_0x1d7090||0xc8;return function(_0x1171b9){if(_0x1171b9){return _0x1f9be3[_0x5267('0xa')](_0x1d7090)[_0x5267('0xb')](_0x1171b9);}return _0x1f9be3[_0x5267('0xc')](0x194);};}function handleError(_0x1e2d3b,_0x16e5a7){_0x16e5a7=_0x16e5a7||0x1f4;return function(_0x29349a){logger[_0x5267('0x7')](_0x29349a['stack']);if(_0x29349a['name']){delete _0x29349a[_0x5267('0xd')];}_0x1e2d3b[_0x5267('0xa')](_0x16e5a7)[_0x5267('0xe')](_0x29349a);};}function findById(_0x3f5344){return function(_0x46b2c2){if(!_[_0x5267('0xf')](_0x3f5344)&&!_[_0x5267('0xf')](_0x46b2c2)&&!_[_0x5267('0xf')](_0x46b2c2[_0x5267('0x10')])){return _[_0x5267('0x11')](_0x46b2c2[_0x5267('0x10')],function(_0x1ab03){return _0x1ab03['id']==_0x3f5344;});}return null;};}exports['voiceChannels']=function(_0x18f32e,_0x2afd38){return respondWithRpcPromise('VoiceChannels',_0x18f32e[_0x5267('0x12')])['then'](respondWithResult(_0x2afd38,null))[_0x5267('0x9')](handleError(_0x2afd38,null));};exports[_0x5267('0x13')]=function(_0x39c0c3,_0x2a9f99){return respondWithRpcPromise(_0x5267('0x14'),_['merge'](_0x39c0c3[_0x5267('0x12')],_0x39c0c3['params']))[_0x5267('0x15')](respondWithResult(_0x2a9f99,null))[_0x5267('0x9')](handleError(_0x2a9f99,null));};exports[_0x5267('0x16')]=function(_0x56dd95,_0x499f19){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_['merge'](_0x56dd95['query'],_0x56dd95[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x499f19,null))[_0x5267('0x9')](handleError(_0x499f19,null));};exports[_0x5267('0x18')]=function(_0x11c8ea,_0x40d1be){return respondWithRpcPromise(_0x5267('0x19'),_0x11c8ea[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x40d1be,null))['catch'](handleError(_0x40d1be,null));};exports['showVoiceQueues']=function(_0x354111,_0x472938){return respondWithRpcPromise('VoiceQueues',_0x354111[_0x5267('0x12')])['then'](findById(_0x354111['params']['id']))[_0x5267('0x15')](respondWithResult(_0x472938,null))[_0x5267('0x9')](handleError(_0x472938,null));};exports[_0x5267('0x1a')]=function(_0x2d2ace,_0x33c431){return respondWithRpcPromise('UpdateVoiceQueue',_['merge'](_0x2d2ace[_0x5267('0x1b')],_0x2d2ace[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x33c431,null))['catch'](handleError(_0x33c431,null));};exports['voiceQueuesPreview']=function(_0xbe7922,_0x3ef2a8){return respondWithRpcPromise(_0x5267('0x1c'),_['merge'](_0xbe7922['query'],_0xbe7922[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x3ef2a8,null))[_0x5267('0x9')](handleError(_0x3ef2a8,null));};exports[_0x5267('0x1d')]=function(_0x5bbb83,_0x33e456){return respondWithRpcPromise(_0x5267('0x1e'),_0x5bbb83[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x33e456,null))[_0x5267('0x9')](handleError(_0x33e456,null));};exports[_0x5267('0x1f')]=function(_0x341bae,_0x1dda95){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x341bae[_0x5267('0x12')],_0x341bae['params']))[_0x5267('0x15')](respondWithResult(_0x1dda95,null))[_0x5267('0x9')](handleError(_0x1dda95,null));};exports[_0x5267('0x20')]=function(_0x3a729c,_0x4ac4a0){return respondWithRpcPromise(_0x5267('0x21'),_[_0x5267('0x22')](_0x3a729c[_0x5267('0x12')],_0x3a729c[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x4ac4a0,null))[_0x5267('0x9')](handleError(_0x4ac4a0,null));};exports[_0x5267('0x23')]=function(_0xa0ea89,_0x484b77){return respondWithRpcPromise(_0x5267('0x24'),_['merge'](_0xa0ea89[_0x5267('0x12')],_0xa0ea89[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x484b77,null))[_0x5267('0x9')](handleError(_0x484b77,null));};exports[_0x5267('0x25')]=function(_0x33ecd7,_0x465ad9){return respondWithRpcPromise('Outbound',_0x33ecd7[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x465ad9,null))[_0x5267('0x9')](handleError(_0x465ad9,null));};exports[_0x5267('0x26')]=function(_0x82cea7,_0x21eabf){return respondWithRpcPromise(_0x5267('0x27'),_0x82cea7['query'])[_0x5267('0x15')](respondWithResult(_0x21eabf,null))['catch'](handleError(_0x21eabf,null));};exports[_0x5267('0x28')]=function(_0x5c0cdf,_0x4dee66){var _0x51bddd;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf['query'])[_0x5267('0x15')](function(_0x146476){_0x51bddd=_0x146476;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf[_0x5267('0x12')],routingClient);})['then'](function(_0x456b33){return _[_0x5267('0x22')]({},_0x456b33,_0x51bddd);})['then'](respondWithResult(_0x4dee66,null))['catch'](handleError(_0x4dee66,null));};exports[_0x5267('0x2a')]=function(_0x560cdf,_0x12df83){if(_0x560cdf[_0x5267('0x1b')]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')]&&_0x560cdf[_0x5267('0x2c')]&&_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]){for(var _0x5697b3 in _0x560cdf['body'][_0x5267('0x2b')]){if(_0x560cdf['body'][_0x5267('0x2b')][_0x5267('0x2d')](_0x5697b3)){db['MemberReport'][_0x5267('0x2e')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'type':_0x5267('0x2f'),'exitAt':null,'uniqueid':_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3][_0x5267('0x30')]?{'$notIn':_0x560cdf['body'][_0x5267('0x2b')][_0x5697b3]}:{'$ne':null}}})[_0x5267('0x15')](function(_0x19b015){var _0x45241a=moment()[_0x5267('0x31')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3d15ac=0x0,_0x4e0132=_0x19b015[_0x5267('0x30')];_0x3d15ac<_0x4e0132;_0x3d15ac+=0x1){_0x19b015[_0x3d15ac]['updateAttributes']({'exitAt':_0x45241a});}});for(var _0x4ae9f9=0x0;_0x4ae9f9<_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x5267('0x30')];_0x4ae9f9+=0x1){db[_0x5267('0x32')][_0x5267('0x33')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')]['name'],'type':_0x5267('0x2f'),'uniqueid':_0x560cdf['body']['interaction'][_0x5697b3][_0x4ae9f9],'exitAt':null},'defaults':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'interface':_['isNil'](_0x560cdf['user'][_0x5267('0x34')])?util[_0x5267('0x31')](_0x5267('0x35'),_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]):_0x560cdf[_0x5267('0x2c')][_0x5267('0x34')],'type':_0x5267('0x2f'),'enterAt':moment()[_0x5267('0x31')](_0x5267('0x36')),'role':_0x5267('0x37'),'internal':_0x560cdf[_0x5267('0x2c')][_0x5267('0x38')],'uniqueid':_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x4ae9f9]}});}}}}return respondWithRpcPromise(_0x5267('0x39'),{'id':_0x560cdf[_0x5267('0x17')]['id'],'capacity':_0x560cdf[_0x5267('0x1b')]['capacity']},routingClient)[_0x5267('0x15')](respondWithResult(_0x12df83,null))[_0x5267('0x9')](handleError(_0x12df83,null));};exports[_0x5267('0x3a')]=function(_0x2a97f1,_0x119546){return respondWithRpcPromise(_0x5267('0x3b'),_0x2a97f1['query'])[_0x5267('0x15')](respondWithResult(_0x119546,null))['catch'](handleError(_0x119546,null));};exports[_0x5267('0x3c')]=function(_0x30fcd2,_0xa49fd7){return respondWithRpcPromise(_0x5267('0x3d'),_0x30fcd2[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0xa49fd7,null))[_0x5267('0x9')](handleError(_0xa49fd7,null));};exports['campaigns']=function(_0x57ca8f,_0x200855){return respondWithRpcPromise(_0x5267('0x3e'),_0x57ca8f['query'])[_0x5267('0x15')](respondWithResult(_0x200855,null))['catch'](handleError(_0x200855,null));};exports['chatQueues']=function(_0x1eeb21,_0x79cee1){return respondWithRpcPromise(_0x5267('0x3f'),_0x1eeb21[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x79cee1,null))[_0x5267('0x9')](handleError(_0x79cee1,null));};exports[_0x5267('0x40')]=function(_0x3fd8f9,_0xf0b5a9){return respondWithRpcPromise(_0x5267('0x3f'),_0x3fd8f9['query'],routingClient)[_0x5267('0x15')](findById(_0x3fd8f9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0xf0b5a9,null))[_0x5267('0x9')](handleError(_0xf0b5a9,null));};exports[_0x5267('0x41')]=function(_0x34c205,_0x552211){return respondWithRpcPromise(_0x5267('0x42'),_0x34c205['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x552211,null))[_0x5267('0x9')](handleError(_0x552211,null));};exports[_0x5267('0x43')]=function(_0x4a72c3,_0x1593ce){return respondWithRpcPromise(_0x5267('0x42'),_0x4a72c3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x4a72c3[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1593ce,null))['catch'](handleError(_0x1593ce,null));};exports[_0x5267('0x44')]=function(_0x190d02,_0x186667){return respondWithRpcPromise(_0x5267('0x45'),_0x190d02['query'],mailClient)['then'](respondWithResult(_0x186667,null))[_0x5267('0x9')](handleError(_0x186667,null));};exports['openchannelQueues']=function(_0x3f5cda,_0x47059c){return respondWithRpcPromise('OpenchannelQueues',_0x3f5cda['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x47059c,null))[_0x5267('0x9')](handleError(_0x47059c,null));};exports[_0x5267('0x46')]=function(_0x537f75,_0x457dca){return respondWithRpcPromise(_0x5267('0x47'),_0x537f75[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x537f75['params']['id']))['then'](respondWithResult(_0x457dca,null))['catch'](handleError(_0x457dca,null));};exports[_0x5267('0x48')]=function(_0x2457a3,_0x45ee25){return respondWithRpcPromise(_0x5267('0x49'),_0x2457a3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x45ee25,null))[_0x5267('0x9')](handleError(_0x45ee25,null));};exports[_0x5267('0x4a')]=function(_0x486b02,_0x1ddfad){return respondWithRpcPromise(_0x5267('0x49'),_0x486b02['query'],routingClient)[_0x5267('0x15')](findById(_0x486b02[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1ddfad,null))[_0x5267('0x9')](handleError(_0x1ddfad,null));};exports[_0x5267('0x4b')]=function(_0xde1ecd,_0x4915f4){return respondWithRpcPromise(_0x5267('0x4c'),_0xde1ecd[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x4915f4,null))[_0x5267('0x9')](handleError(_0x4915f4,null));};exports[_0x5267('0x4d')]=function(_0xd9bcf9,_0x4aac32){return respondWithRpcPromise(_0x5267('0x4c'),_0xd9bcf9[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0xd9bcf9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x4aac32,null))[_0x5267('0x9')](handleError(_0x4aac32,null));};exports['faxQueues']=function(_0x283423,_0x41299c){return respondWithRpcPromise(_0x5267('0x4e'),_0x283423[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x41299c,null))['catch'](handleError(_0x41299c,null));};exports['showFaxQueues']=function(_0x910f97,_0x5cca85){return respondWithRpcPromise(_0x5267('0x4e'),_0x910f97['query'],routingClient)[_0x5267('0x15')](findById(_0x910f97[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x5cca85,null))[_0x5267('0x9')](handleError(_0x5cca85,null));};exports[_0x5267('0x4f')]=function(_0xa92aa5,_0x21338f){return respondWithRpcPromise(_0x5267('0x50'),_0xa92aa5['query'])['then'](respondWithResult(_0x21338f,null))['catch'](handleError(_0x21338f,null));};exports[_0x5267('0x51')]=function(_0x28a101,_0x2ab2be){return respondWithRpcPromise(_0x5267('0x52'),_0x28a101['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x2ab2be,null))[_0x5267('0x9')](handleError(_0x2ab2be,null));};exports[_0x5267('0x53')]=function(_0xc3ac3f,_0x5a0e73){return respondWithRpcPromise(_0x5267('0x54'),_0xc3ac3f[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x5a0e73,null))[_0x5267('0x9')](handleError(_0x5a0e73,null));};exports[_0x5267('0x55')]=function(_0x4a9995,_0x47e235){return respondWithRpcPromise(_0x5267('0x56'),_0x4a9995[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x47e235,null))['catch'](handleError(_0x47e235,null));};exports[_0x5267('0x57')]=function(_0x2e7f8a,_0x35b302){return respondWithRpcPromise(_0x5267('0x56'),_0x2e7f8a[_0x5267('0x12')],routingClient)['then'](function(_0x4643ae){if(_0x2e7f8a[_0x5267('0x12')]['type']!==undefined){var _0x26c628=_(_0x4643ae[_0x5267('0x10')])[_0x5267('0x58')]([_0x2e7f8a[_0x5267('0x12')][_0x5267('0x59')],_0x2e7f8a[_0x5267('0x17')]['id']])[_0x5267('0x5a')](_0x5267('0x5b'))['uniq']()['value']();return _0x4643ae[_0x5267('0x10')][_0x5267('0x58')](function(_0x3f729f){return _0x26c628[_0x5267('0x5c')](_0x3f729f['queue_id'])>-0x1;});}else{return _0x4643ae[_0x5267('0x10')]['filter'](function(_0x2988a1){return _0x2988a1[_0x5267('0x5b')]===parseInt(_0x2e7f8a[_0x5267('0x17')]['id']);});}})[_0x5267('0x15')](respondWithResult(_0x35b302,null))['catch'](handleError(_0x35b302,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a67a0,_0x3e2cf5){return respondWithRpcPromise(_0x5267('0x5d'),_0x3a67a0[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x3e2cf5,null))[_0x5267('0x9')](handleError(_0x3e2cf5,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x1b8d72,_0x4a05c9){return respondWithRpcPromise(_0x5267('0x5e'),_0x1b8d72['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x4a05c9,null))[_0x5267('0x9')](handleError(_0x4a05c9,null));};exports[_0x5267('0x5f')]=function(_0x87aa90,_0x164cc1){return respondWithRpcPromise(_0x5267('0x60'),_0x87aa90[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x164cc1,null))[_0x5267('0x9')](handleError(_0x164cc1,null));};exports[_0x5267('0x61')]=function(_0x555c8){return function(_0x531bb9,_0x40c7b5){var _0x14baf4,_0x4d9ec9;var _0xde179f=_[_0x5267('0x62')](_0x555c8);var _0x3ebda6=_0x555c8===_0x5267('0x63')?_0x5267('0x64'):_0x5267('0x65');return db[_0xde179f+_0x5267('0x66')]['findOne']({'raw':!![],'where':{'id':_0x531bb9[_0x5267('0x17')]['id']}})[_0x5267('0x15')](function(_0x2543a4){if(_[_0x5267('0xf')](_0x2543a4)){throw new Error(_0xde179f+_0x5267('0x67'));}_0x14baf4=_0x2543a4;return db[_0xde179f+'Message']['findOne']({'where':{'id':_0x531bb9[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0xde179f+_0x5267('0x69')],'as':_0x5267('0x69')},{'model':db[_0xde179f+_0x3ebda6],'as':'Account'}]});})[_0x5267('0x15')](function(_0x3cc775){if(_[_0x5267('0xf')](_0x3cc775)){throw new Error(_0xde179f+_0x5267('0x6a'));}_0x4d9ec9=_0x3cc775;return _0x3cc775[_0x5267('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x2b38f2={'uniqueid':_0x555c8+'.'+_0x4d9ec9['id']+'.'+_0x4d9ec9[_0x5267('0x69')]['id'],'FromUserId':_0x531bb9[_0x5267('0x2c')]['id'],'type':_0x5267('0x6c')};_0x2b38f2[_0xde179f+_0x5267('0x6d')]=_0x4d9ec9['id'];_0x2b38f2[_0xde179f+_0x5267('0x6e')]=_0x4d9ec9[_0x5267('0x69')]['id'];_0x2b38f2['From'+_0xde179f+_0x3ebda6+'Id']=_0x4d9ec9[_0x5267('0x65')]['id'];_0x2b38f2['To'+_0xde179f+_0x5267('0x6f')]=_0x14baf4['id'];return db[_0xde179f+_0x5267('0x70')][_0x5267('0x71')](_0x2b38f2);})[_0x5267('0x15')](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x555c8,'interaction':_0x4d9ec9[_0x5267('0x69')],'message':_0x4d9ec9,'account':_0x4d9ec9[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x6c'),'appdata':_0x14baf4[_0x5267('0xd')]+','+(_0x4d9ec9[_0x5267('0x65')][_0x5267('0x73')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x40c7b5,null))[_0x5267('0x9')](handleError(_0x40c7b5,null));};};exports[_0x5267('0x75')]=function(_0x28884b,_0x35a4a3){var _0x7ecf0e,_0x676556;if(_[_0x5267('0xf')](_0x28884b[_0x5267('0x1b')][_0x5267('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x339f3f=_0x28884b[_0x5267('0x1b')][_0x5267('0x76')];var _0x405eb4=_[_0x5267('0x62')](_0x339f3f);var _0x557749=_0x339f3f===_0x5267('0x63')?_0x5267('0x64'):'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x28884b[_0x5267('0x17')]['id'],'role':'agent'}})[_0x5267('0x15')](function(_0x54422c){if(_['isNil'](_0x54422c)){throw new Error(_0x5267('0x77'));}_0x7ecf0e=_0x54422c;return db[_0x405eb4+_0x5267('0x78')][_0x5267('0x79')]({'where':{'id':_0x28884b[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0x405eb4+'Interaction'],'as':'Interaction'},{'model':db[_0x405eb4+_0x557749],'as':_0x5267('0x65')}]});})[_0x5267('0x15')](function(_0x1a6245){if(_[_0x5267('0xf')](_0x1a6245)){throw new Error(_0x405eb4+_0x5267('0x6a'));}_0x676556=_0x1a6245;return _0x1a6245['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x5bece1={'uniqueid':_0x339f3f+'.'+_0x676556['id']+'.'+_0x676556['Interaction']['id'],'FromUserId':_0x28884b[_0x5267('0x2c')]['id'],'type':'queue','ToUserId':_0x7ecf0e['id']};_0x5bece1[_0x405eb4+'MessageId']=_0x676556['id'];_0x5bece1[_0x405eb4+_0x5267('0x6e')]=_0x676556[_0x5267('0x69')]['id'];_0x5bece1['From'+_0x405eb4+_0x557749+'Id']=_0x676556['Account']['id'];return db[_0x405eb4+'TransferReport'][_0x5267('0x71')](_0x5bece1);})['then'](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x339f3f,'interaction':_0x676556['Interaction'],'message':_0x676556,'account':_0x676556[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x37'),'appdata':_0x7ecf0e['name']+','+(_0x676556[_0x5267('0x65')][_0x5267('0x7a')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x35a4a3,null))[_0x5267('0x9')](handleError(_0x35a4a3,null));};
\ No newline at end of file
+var _0x2675=['request','error','result','catch','status','json','sendStatus','name','send','isNil','rows','find','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','then','voiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','updateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','merge','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format','MemberReport','findOrCreate','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Agent\x20not\x20found','Message','findOne','agentTransferTimeout','bluebird','../../mysqldb','../../config/logger','jayson/promise','client','http'];(function(_0x16d6a2,_0x266958){var _0x681283=function(_0xb758fd){while(--_0xb758fd){_0x16d6a2['push'](_0x16d6a2['shift']());}};_0x681283(++_0x266958);}(_0x2675,0x75));var _0x5267=function(_0x50349c,_0x19ac49){_0x50349c=_0x50349c-0x0;var _0x46b7c6=_0x2675[_0x50349c];return _0x46b7c6;};'use strict';var BPromise=require(_0x5267('0x0'));var moment=require('moment');var _=require('lodash');var util=require('util');var db=require(_0x5267('0x1'))['db'];var logger=require(_0x5267('0x2'))('api');var jayson=require(_0x5267('0x3'));var amiClient=jayson[_0x5267('0x4')]['http']({'port':0x232a});var mailClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232b});var routingClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){var _0x506fd7=_0x527c16?_0x527c16:amiClient;return _0x506fd7[_0x5267('0x6')](_0x20f065,_0xc56cd5)['then'](function(_0x3ff4e9){if(_0x3ff4e9[_0x5267('0x7')]){if(_0x3ff4e9[_0x5267('0x7')]['code']===0x1f4){return _0x46bfdf(_0x3ff4e9[_0x5267('0x7')]['message']);}return _0x9e0a27(_0x3ff4e9[_0x5267('0x7')]['message']);}else{_0x9e0a27(_0x3ff4e9[_0x5267('0x8')]);}})[_0x5267('0x9')](function(_0x268a8a){_0x46bfdf(_0x268a8a);});});}function respondWithResult(_0x1f9be3,_0x1d7090){_0x1d7090=_0x1d7090||0xc8;return function(_0x1171b9){if(_0x1171b9){return _0x1f9be3[_0x5267('0xa')](_0x1d7090)[_0x5267('0xb')](_0x1171b9);}return _0x1f9be3[_0x5267('0xc')](0x194);};}function handleError(_0x1e2d3b,_0x16e5a7){_0x16e5a7=_0x16e5a7||0x1f4;return function(_0x29349a){logger[_0x5267('0x7')](_0x29349a['stack']);if(_0x29349a['name']){delete _0x29349a[_0x5267('0xd')];}_0x1e2d3b[_0x5267('0xa')](_0x16e5a7)[_0x5267('0xe')](_0x29349a);};}function findById(_0x3f5344){return function(_0x46b2c2){if(!_[_0x5267('0xf')](_0x3f5344)&&!_[_0x5267('0xf')](_0x46b2c2)&&!_[_0x5267('0xf')](_0x46b2c2[_0x5267('0x10')])){return _[_0x5267('0x11')](_0x46b2c2[_0x5267('0x10')],function(_0x1ab03){return _0x1ab03['id']==_0x3f5344;});}return null;};}exports['voiceChannels']=function(_0x18f32e,_0x2afd38){return respondWithRpcPromise('VoiceChannels',_0x18f32e[_0x5267('0x12')])['then'](respondWithResult(_0x2afd38,null))[_0x5267('0x9')](handleError(_0x2afd38,null));};exports[_0x5267('0x13')]=function(_0x39c0c3,_0x2a9f99){return respondWithRpcPromise(_0x5267('0x14'),_['merge'](_0x39c0c3[_0x5267('0x12')],_0x39c0c3['params']))[_0x5267('0x15')](respondWithResult(_0x2a9f99,null))[_0x5267('0x9')](handleError(_0x2a9f99,null));};exports[_0x5267('0x16')]=function(_0x56dd95,_0x499f19){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_['merge'](_0x56dd95['query'],_0x56dd95[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x499f19,null))[_0x5267('0x9')](handleError(_0x499f19,null));};exports[_0x5267('0x18')]=function(_0x11c8ea,_0x40d1be){return respondWithRpcPromise(_0x5267('0x19'),_0x11c8ea[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x40d1be,null))['catch'](handleError(_0x40d1be,null));};exports['showVoiceQueues']=function(_0x354111,_0x472938){return respondWithRpcPromise('VoiceQueues',_0x354111[_0x5267('0x12')])['then'](findById(_0x354111['params']['id']))[_0x5267('0x15')](respondWithResult(_0x472938,null))[_0x5267('0x9')](handleError(_0x472938,null));};exports[_0x5267('0x1a')]=function(_0x2d2ace,_0x33c431){return respondWithRpcPromise('UpdateVoiceQueue',_['merge'](_0x2d2ace[_0x5267('0x1b')],_0x2d2ace[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x33c431,null))['catch'](handleError(_0x33c431,null));};exports['voiceQueuesPreview']=function(_0xbe7922,_0x3ef2a8){return respondWithRpcPromise(_0x5267('0x1c'),_['merge'](_0xbe7922['query'],_0xbe7922[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x3ef2a8,null))[_0x5267('0x9')](handleError(_0x3ef2a8,null));};exports[_0x5267('0x1d')]=function(_0x5bbb83,_0x33e456){return respondWithRpcPromise(_0x5267('0x1e'),_0x5bbb83[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x33e456,null))[_0x5267('0x9')](handleError(_0x33e456,null));};exports[_0x5267('0x1f')]=function(_0x341bae,_0x1dda95){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x341bae[_0x5267('0x12')],_0x341bae['params']))[_0x5267('0x15')](respondWithResult(_0x1dda95,null))[_0x5267('0x9')](handleError(_0x1dda95,null));};exports[_0x5267('0x20')]=function(_0x3a729c,_0x4ac4a0){return respondWithRpcPromise(_0x5267('0x21'),_[_0x5267('0x22')](_0x3a729c[_0x5267('0x12')],_0x3a729c[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x4ac4a0,null))[_0x5267('0x9')](handleError(_0x4ac4a0,null));};exports[_0x5267('0x23')]=function(_0xa0ea89,_0x484b77){return respondWithRpcPromise(_0x5267('0x24'),_['merge'](_0xa0ea89[_0x5267('0x12')],_0xa0ea89[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x484b77,null))[_0x5267('0x9')](handleError(_0x484b77,null));};exports[_0x5267('0x25')]=function(_0x33ecd7,_0x465ad9){return respondWithRpcPromise('Outbound',_0x33ecd7[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x465ad9,null))[_0x5267('0x9')](handleError(_0x465ad9,null));};exports[_0x5267('0x26')]=function(_0x82cea7,_0x21eabf){return respondWithRpcPromise(_0x5267('0x27'),_0x82cea7['query'])[_0x5267('0x15')](respondWithResult(_0x21eabf,null))['catch'](handleError(_0x21eabf,null));};exports[_0x5267('0x28')]=function(_0x5c0cdf,_0x4dee66){var _0x51bddd;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf['query'])[_0x5267('0x15')](function(_0x146476){_0x51bddd=_0x146476;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf[_0x5267('0x12')],routingClient);})['then'](function(_0x456b33){return _[_0x5267('0x22')]({},_0x456b33,_0x51bddd);})['then'](respondWithResult(_0x4dee66,null))['catch'](handleError(_0x4dee66,null));};exports[_0x5267('0x2a')]=function(_0x560cdf,_0x12df83){if(_0x560cdf[_0x5267('0x1b')]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')]&&_0x560cdf[_0x5267('0x2c')]&&_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]){for(var _0x5697b3 in _0x560cdf['body'][_0x5267('0x2b')]){if(_0x560cdf['body'][_0x5267('0x2b')][_0x5267('0x2d')](_0x5697b3)){db['MemberReport'][_0x5267('0x2e')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'type':_0x5267('0x2f'),'exitAt':null,'uniqueid':_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3][_0x5267('0x30')]?{'$notIn':_0x560cdf['body'][_0x5267('0x2b')][_0x5697b3]}:{'$ne':null}}})[_0x5267('0x15')](function(_0x19b015){var _0x45241a=moment()[_0x5267('0x31')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3d15ac=0x0,_0x4e0132=_0x19b015[_0x5267('0x30')];_0x3d15ac<_0x4e0132;_0x3d15ac+=0x1){_0x19b015[_0x3d15ac]['updateAttributes']({'exitAt':_0x45241a});}});for(var _0x4ae9f9=0x0;_0x4ae9f9<_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x5267('0x30')];_0x4ae9f9+=0x1){db[_0x5267('0x32')][_0x5267('0x33')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')]['name'],'type':_0x5267('0x2f'),'uniqueid':_0x560cdf['body']['interaction'][_0x5697b3][_0x4ae9f9],'exitAt':null},'defaults':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'interface':_['isNil'](_0x560cdf['user'][_0x5267('0x34')])?util[_0x5267('0x31')](_0x5267('0x35'),_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]):_0x560cdf[_0x5267('0x2c')][_0x5267('0x34')],'type':_0x5267('0x2f'),'enterAt':moment()[_0x5267('0x31')](_0x5267('0x36')),'role':_0x5267('0x37'),'internal':_0x560cdf[_0x5267('0x2c')][_0x5267('0x38')],'uniqueid':_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x4ae9f9]}});}}}}return respondWithRpcPromise(_0x5267('0x39'),{'id':_0x560cdf[_0x5267('0x17')]['id'],'capacity':_0x560cdf[_0x5267('0x1b')]['capacity']},routingClient)[_0x5267('0x15')](respondWithResult(_0x12df83,null))[_0x5267('0x9')](handleError(_0x12df83,null));};exports[_0x5267('0x3a')]=function(_0x2a97f1,_0x119546){return respondWithRpcPromise(_0x5267('0x3b'),_0x2a97f1['query'])[_0x5267('0x15')](respondWithResult(_0x119546,null))['catch'](handleError(_0x119546,null));};exports[_0x5267('0x3c')]=function(_0x30fcd2,_0xa49fd7){return respondWithRpcPromise(_0x5267('0x3d'),_0x30fcd2[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0xa49fd7,null))[_0x5267('0x9')](handleError(_0xa49fd7,null));};exports['campaigns']=function(_0x57ca8f,_0x200855){return respondWithRpcPromise(_0x5267('0x3e'),_0x57ca8f['query'])[_0x5267('0x15')](respondWithResult(_0x200855,null))['catch'](handleError(_0x200855,null));};exports['chatQueues']=function(_0x1eeb21,_0x79cee1){return respondWithRpcPromise(_0x5267('0x3f'),_0x1eeb21[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x79cee1,null))[_0x5267('0x9')](handleError(_0x79cee1,null));};exports[_0x5267('0x40')]=function(_0x3fd8f9,_0xf0b5a9){return respondWithRpcPromise(_0x5267('0x3f'),_0x3fd8f9['query'],routingClient)[_0x5267('0x15')](findById(_0x3fd8f9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0xf0b5a9,null))[_0x5267('0x9')](handleError(_0xf0b5a9,null));};exports[_0x5267('0x41')]=function(_0x34c205,_0x552211){return respondWithRpcPromise(_0x5267('0x42'),_0x34c205['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x552211,null))[_0x5267('0x9')](handleError(_0x552211,null));};exports[_0x5267('0x43')]=function(_0x4a72c3,_0x1593ce){return respondWithRpcPromise(_0x5267('0x42'),_0x4a72c3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x4a72c3[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1593ce,null))['catch'](handleError(_0x1593ce,null));};exports[_0x5267('0x44')]=function(_0x190d02,_0x186667){return respondWithRpcPromise(_0x5267('0x45'),_0x190d02['query'],mailClient)['then'](respondWithResult(_0x186667,null))[_0x5267('0x9')](handleError(_0x186667,null));};exports['openchannelQueues']=function(_0x3f5cda,_0x47059c){return respondWithRpcPromise('OpenchannelQueues',_0x3f5cda['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x47059c,null))[_0x5267('0x9')](handleError(_0x47059c,null));};exports[_0x5267('0x46')]=function(_0x537f75,_0x457dca){return respondWithRpcPromise(_0x5267('0x47'),_0x537f75[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x537f75['params']['id']))['then'](respondWithResult(_0x457dca,null))['catch'](handleError(_0x457dca,null));};exports[_0x5267('0x48')]=function(_0x2457a3,_0x45ee25){return respondWithRpcPromise(_0x5267('0x49'),_0x2457a3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x45ee25,null))[_0x5267('0x9')](handleError(_0x45ee25,null));};exports[_0x5267('0x4a')]=function(_0x486b02,_0x1ddfad){return respondWithRpcPromise(_0x5267('0x49'),_0x486b02['query'],routingClient)[_0x5267('0x15')](findById(_0x486b02[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1ddfad,null))[_0x5267('0x9')](handleError(_0x1ddfad,null));};exports[_0x5267('0x4b')]=function(_0xde1ecd,_0x4915f4){return respondWithRpcPromise(_0x5267('0x4c'),_0xde1ecd[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x4915f4,null))[_0x5267('0x9')](handleError(_0x4915f4,null));};exports[_0x5267('0x4d')]=function(_0xd9bcf9,_0x4aac32){return respondWithRpcPromise(_0x5267('0x4c'),_0xd9bcf9[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0xd9bcf9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x4aac32,null))[_0x5267('0x9')](handleError(_0x4aac32,null));};exports['faxQueues']=function(_0x283423,_0x41299c){return respondWithRpcPromise(_0x5267('0x4e'),_0x283423[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x41299c,null))['catch'](handleError(_0x41299c,null));};exports['showFaxQueues']=function(_0x910f97,_0x5cca85){return respondWithRpcPromise(_0x5267('0x4e'),_0x910f97['query'],routingClient)[_0x5267('0x15')](findById(_0x910f97[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x5cca85,null))[_0x5267('0x9')](handleError(_0x5cca85,null));};exports[_0x5267('0x4f')]=function(_0xa92aa5,_0x21338f){return respondWithRpcPromise(_0x5267('0x50'),_0xa92aa5['query'])['then'](respondWithResult(_0x21338f,null))['catch'](handleError(_0x21338f,null));};exports[_0x5267('0x51')]=function(_0x28a101,_0x2ab2be){return respondWithRpcPromise(_0x5267('0x52'),_0x28a101['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x2ab2be,null))[_0x5267('0x9')](handleError(_0x2ab2be,null));};exports[_0x5267('0x53')]=function(_0xc3ac3f,_0x5a0e73){return respondWithRpcPromise(_0x5267('0x54'),_0xc3ac3f[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x5a0e73,null))[_0x5267('0x9')](handleError(_0x5a0e73,null));};exports[_0x5267('0x55')]=function(_0x4a9995,_0x47e235){return respondWithRpcPromise(_0x5267('0x56'),_0x4a9995[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x47e235,null))['catch'](handleError(_0x47e235,null));};exports[_0x5267('0x57')]=function(_0x2e7f8a,_0x35b302){return respondWithRpcPromise(_0x5267('0x56'),_0x2e7f8a[_0x5267('0x12')],routingClient)['then'](function(_0x4643ae){if(_0x2e7f8a[_0x5267('0x12')]['type']!==undefined){var _0x26c628=_(_0x4643ae[_0x5267('0x10')])[_0x5267('0x58')]([_0x2e7f8a[_0x5267('0x12')][_0x5267('0x59')],_0x2e7f8a[_0x5267('0x17')]['id']])[_0x5267('0x5a')](_0x5267('0x5b'))['uniq']()['value']();return _0x4643ae[_0x5267('0x10')][_0x5267('0x58')](function(_0x3f729f){return _0x26c628[_0x5267('0x5c')](_0x3f729f['queue_id'])>-0x1;});}else{return _0x4643ae[_0x5267('0x10')]['filter'](function(_0x2988a1){return _0x2988a1[_0x5267('0x5b')]===parseInt(_0x2e7f8a[_0x5267('0x17')]['id']);});}})[_0x5267('0x15')](respondWithResult(_0x35b302,null))['catch'](handleError(_0x35b302,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a67a0,_0x3e2cf5){return respondWithRpcPromise(_0x5267('0x5d'),_0x3a67a0[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x3e2cf5,null))[_0x5267('0x9')](handleError(_0x3e2cf5,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x1b8d72,_0x4a05c9){return respondWithRpcPromise(_0x5267('0x5e'),_0x1b8d72['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x4a05c9,null))[_0x5267('0x9')](handleError(_0x4a05c9,null));};exports[_0x5267('0x5f')]=function(_0x87aa90,_0x164cc1){return respondWithRpcPromise(_0x5267('0x60'),_0x87aa90[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x164cc1,null))[_0x5267('0x9')](handleError(_0x164cc1,null));};exports[_0x5267('0x61')]=function(_0x555c8){return function(_0x531bb9,_0x40c7b5){var _0x14baf4,_0x4d9ec9;var _0xde179f=_[_0x5267('0x62')](_0x555c8);var _0x3ebda6=_0x555c8===_0x5267('0x63')?_0x5267('0x64'):_0x5267('0x65');return db[_0xde179f+_0x5267('0x66')]['findOne']({'raw':!![],'where':{'id':_0x531bb9[_0x5267('0x17')]['id']}})[_0x5267('0x15')](function(_0x2543a4){if(_[_0x5267('0xf')](_0x2543a4)){throw new Error(_0xde179f+_0x5267('0x67'));}_0x14baf4=_0x2543a4;return db[_0xde179f+'Message']['findOne']({'where':{'id':_0x531bb9[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0xde179f+_0x5267('0x69')],'as':_0x5267('0x69')},{'model':db[_0xde179f+_0x3ebda6],'as':'Account'}]});})[_0x5267('0x15')](function(_0x3cc775){if(_[_0x5267('0xf')](_0x3cc775)){throw new Error(_0xde179f+_0x5267('0x6a'));}_0x4d9ec9=_0x3cc775;return _0x3cc775[_0x5267('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x2b38f2={'uniqueid':_0x555c8+'.'+_0x4d9ec9['id']+'.'+_0x4d9ec9[_0x5267('0x69')]['id'],'FromUserId':_0x531bb9[_0x5267('0x2c')]['id'],'type':_0x5267('0x6c')};_0x2b38f2[_0xde179f+_0x5267('0x6d')]=_0x4d9ec9['id'];_0x2b38f2[_0xde179f+_0x5267('0x6e')]=_0x4d9ec9[_0x5267('0x69')]['id'];_0x2b38f2['From'+_0xde179f+_0x3ebda6+'Id']=_0x4d9ec9[_0x5267('0x65')]['id'];_0x2b38f2['To'+_0xde179f+_0x5267('0x6f')]=_0x14baf4['id'];return db[_0xde179f+_0x5267('0x70')][_0x5267('0x71')](_0x2b38f2);})[_0x5267('0x15')](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x555c8,'interaction':_0x4d9ec9[_0x5267('0x69')],'message':_0x4d9ec9,'account':_0x4d9ec9[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x6c'),'appdata':_0x14baf4[_0x5267('0xd')]+','+(_0x4d9ec9[_0x5267('0x65')][_0x5267('0x73')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x40c7b5,null))[_0x5267('0x9')](handleError(_0x40c7b5,null));};};exports[_0x5267('0x75')]=function(_0x28884b,_0x35a4a3){var _0x7ecf0e,_0x676556;if(_[_0x5267('0xf')](_0x28884b[_0x5267('0x1b')][_0x5267('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x339f3f=_0x28884b[_0x5267('0x1b')][_0x5267('0x76')];var _0x405eb4=_[_0x5267('0x62')](_0x339f3f);var _0x557749=_0x339f3f===_0x5267('0x63')?_0x5267('0x64'):'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x28884b[_0x5267('0x17')]['id'],'role':'agent'}})[_0x5267('0x15')](function(_0x54422c){if(_['isNil'](_0x54422c)){throw new Error(_0x5267('0x77'));}_0x7ecf0e=_0x54422c;return db[_0x405eb4+_0x5267('0x78')][_0x5267('0x79')]({'where':{'id':_0x28884b[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0x405eb4+'Interaction'],'as':'Interaction'},{'model':db[_0x405eb4+_0x557749],'as':_0x5267('0x65')}]});})[_0x5267('0x15')](function(_0x1a6245){if(_[_0x5267('0xf')](_0x1a6245)){throw new Error(_0x405eb4+_0x5267('0x6a'));}_0x676556=_0x1a6245;return _0x1a6245['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x5bece1={'uniqueid':_0x339f3f+'.'+_0x676556['id']+'.'+_0x676556['Interaction']['id'],'FromUserId':_0x28884b[_0x5267('0x2c')]['id'],'type':'queue','ToUserId':_0x7ecf0e['id']};_0x5bece1[_0x405eb4+'MessageId']=_0x676556['id'];_0x5bece1[_0x405eb4+_0x5267('0x6e')]=_0x676556[_0x5267('0x69')]['id'];_0x5bece1['From'+_0x405eb4+_0x557749+'Id']=_0x676556['Account']['id'];return db[_0x405eb4+'TransferReport'][_0x5267('0x71')](_0x5bece1);})['then'](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x339f3f,'interaction':_0x676556['Interaction'],'message':_0x676556,'account':_0x676556[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x37'),'appdata':_0x7ecf0e['name']+','+(_0x676556[_0x5267('0x65')][_0x5267('0x7a')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x35a4a3,null))[_0x5267('0x9')](handleError(_0x35a4a3,null));};
\ No newline at end of file
index ed2eafe..15dcd0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0411=['../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','destroy','exports','util','path','connect-timeout','express','fs-extra'];(function(_0x15e60a,_0x41d6a2){var _0x36722b=function(_0x8f2539){while(--_0x8f2539){_0x15e60a['push'](_0x15e60a['shift']());}};_0x36722b(++_0x41d6a2);}(_0x0411,0x19f));var _0x1041=function(_0x58f911,_0x28ecb4){_0x58f911=_0x58f911-0x0;var _0x12b4ee=_0x0411[_0x58f911];return _0x12b4ee;};'use strict';var multer=require('multer');var util=require(_0x1041('0x0'));var path=require(_0x1041('0x1'));var timeout=require(_0x1041('0x2'));var express=require(_0x1041('0x3'));var router=express['Router']();var fs_extra=require(_0x1041('0x4'));var auth=require(_0x1041('0x5'));var interaction=require(_0x1041('0x6'));var config=require(_0x1041('0x7'));var controller=require(_0x1041('0x8'));router[_0x1041('0x9')]('/',auth[_0x1041('0xa')](),controller[_0x1041('0xb')]);router[_0x1041('0x9')]('/:id',auth[_0x1041('0xa')](),controller[_0x1041('0xc')]);router[_0x1041('0x9')]('/:id/run',auth[_0x1041('0xa')](),controller['run']);router[_0x1041('0xd')]('/',auth[_0x1041('0xa')](),controller[_0x1041('0xe')]);router[_0x1041('0xf')](_0x1041('0x10'),auth[_0x1041('0xa')](),controller[_0x1041('0x11')]);router['delete'](_0x1041('0x10'),auth[_0x1041('0xa')](),controller[_0x1041('0x12')]);module[_0x1041('0x13')]=router;
\ No newline at end of file
+var _0x5081=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/run','run','post','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x119e3f,_0x24e162){var _0x453d58=function(_0x34ffdb){while(--_0x34ffdb){_0x119e3f['push'](_0x119e3f['shift']());}};_0x453d58(++_0x24e162);}(_0x5081,0x95));var _0x1508=function(_0x1ef6ab,_0x1b104e){_0x1ef6ab=_0x1ef6ab-0x0;var _0x28d57f=_0x5081[_0x1ef6ab];return _0x28d57f;};'use strict';var multer=require(_0x1508('0x0'));var util=require(_0x1508('0x1'));var path=require('path');var timeout=require(_0x1508('0x2'));var express=require(_0x1508('0x3'));var router=express[_0x1508('0x4')]();var fs_extra=require(_0x1508('0x5'));var auth=require(_0x1508('0x6'));var interaction=require(_0x1508('0x7'));var config=require(_0x1508('0x8'));var controller=require('./schedule.controller');router[_0x1508('0x9')]('/',auth['isAuthenticated'](),controller[_0x1508('0xa')]);router[_0x1508('0x9')]('/:id',auth[_0x1508('0xb')](),controller[_0x1508('0xc')]);router[_0x1508('0x9')](_0x1508('0xd'),auth[_0x1508('0xb')](),controller[_0x1508('0xe')]);router[_0x1508('0xf')]('/',auth[_0x1508('0xb')](),controller['create']);router[_0x1508('0x10')](_0x1508('0x11'),auth['isAuthenticated'](),controller[_0x1508('0x12')]);router[_0x1508('0x13')](_0x1508('0x11'),auth['isAuthenticated'](),controller[_0x1508('0x14')]);module[_0x1508('0x15')]=router;
\ No newline at end of file
index 8fe9356..d5e6669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23c0=['days','hours','pdf','xlsx','default','custom','BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','quarters','months'];(function(_0x2cc746,_0x58f895){var _0x221811=function(_0x2ece90){while(--_0x2ece90){_0x2cc746['push'](_0x2cc746['shift']());}};_0x221811(++_0x58f895);}(_0x23c0,0x1d3));var _0x023c=function(_0x1e52bf,_0x4cfa32){_0x1e52bf=_0x1e52bf-0x0;var _0x2fdc63=_0x23c0[_0x1e52bf];return _0x2fdc63;};'use strict';var Sequelize=require(_0x023c('0x0'));module[_0x023c('0x1')]={'name':{'type':Sequelize[_0x023c('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x023c('0x2')],'allowNull':![],'defaultValue':_0x023c('0x3')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x023c('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x023c('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x023c('0x6')]('years',_0x023c('0x7'),_0x023c('0x8'),'weeks',_0x023c('0x9'),_0x023c('0xa'),'minutes'),'allowNull':![],'defaultValue':_0x023c('0x9')},'output':{'type':Sequelize['ENUM']('csv',_0x023c('0xb'),_0x023c('0xc')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x023c('0x6')]('custom',_0x023c('0xd')),'allowNull':![],'defaultValue':_0x023c('0xe')},'sendMail':{'type':Sequelize[_0x023c('0xf')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x023c('0x10')]},'bcc':{'type':Sequelize[_0x023c('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x023c('0xf')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7cfa=['TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','months','weeks','hours','minutes','days','ENUM','xlsx','custom','default'];(function(_0x4b4d43,_0x1590f7){var _0x5706ba=function(_0x11d99b){while(--_0x11d99b){_0x4b4d43['push'](_0x4b4d43['shift']());}};_0x5706ba(++_0x1590f7);}(_0x7cfa,0x144));var _0xa7cf=function(_0x24ee5a,_0x516069){_0x24ee5a=_0x24ee5a-0x0;var _0x3ceec6=_0x7cfa[_0x24ee5a];return _0x3ceec6;};'use strict';var Sequelize=require(_0xa7cf('0x0'));module[_0xa7cf('0x1')]={'name':{'type':Sequelize[_0xa7cf('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xa7cf('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xa7cf('0x2')],'allowNull':![],'defaultValue':_0xa7cf('0x4')},'startAt':{'type':Sequelize[_0xa7cf('0x5')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xa7cf('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM']('years','quarters',_0xa7cf('0x7'),_0xa7cf('0x8'),'days',_0xa7cf('0x9'),_0xa7cf('0xa')),'allowNull':![],'defaultValue':_0xa7cf('0xb')},'output':{'type':Sequelize[_0xa7cf('0xc')]('csv','pdf',_0xa7cf('0xd')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize['ENUM'](_0xa7cf('0xe'),_0xa7cf('0xf')),'allowNull':![],'defaultValue':_0xa7cf('0xe')},'sendMail':{'type':Sequelize[_0xa7cf('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0xa7cf('0x10')]},'sendIfEmpty':{'type':Sequelize[_0xa7cf('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index d55a157..dbbfe47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d9=['stack','name','send','map','Schedule','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','show','fields','options','find','catch','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','../../config/schedule','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','Scheduler','end','error'];(function(_0x10ecc7,_0x586fb5){var _0x2c9614=function(_0x53105c){while(--_0x53105c){_0x10ecc7['push'](_0x10ecc7['shift']());}};_0x2c9614(++_0x586fb5);}(_0xd8d9,0x17a));var _0x9d8d=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xd8d9[_0x13ea00];return _0x1f7347;};'use strict';var emlformat=require(_0x9d8d('0x0'));var rimraf=require(_0x9d8d('0x1'));var zipdir=require(_0x9d8d('0x2'));var jsonpatch=require(_0x9d8d('0x3'));var rp=require(_0x9d8d('0x4'));var moment=require(_0x9d8d('0x5'));var BPromise=require(_0x9d8d('0x6'));var Mustache=require(_0x9d8d('0x7'));var util=require(_0x9d8d('0x8'));var path=require(_0x9d8d('0x9'));var sox=require('sox');var csv=require(_0x9d8d('0xa'));var ejs=require(_0x9d8d('0xb'));var fs=require('fs');var fs_extra=require(_0x9d8d('0xc'));var _=require('lodash');var squel=require(_0x9d8d('0xd'));var crypto=require(_0x9d8d('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9d8d('0xa'));var querystring=require(_0x9d8d('0xf'));var Papa=require(_0x9d8d('0x10'));var Redis=require('ioredis');var authService=require(_0x9d8d('0x11'));var qs=require(_0x9d8d('0x12'));var as=require(_0x9d8d('0x13'));var hardwareService=require(_0x9d8d('0x14'));var logger=require(_0x9d8d('0x15'))(_0x9d8d('0x16'));var utils=require(_0x9d8d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9d8d('0x18'));var db=require(_0x9d8d('0x19'))['db'];function respondWithStatusCode(_0x328c7b,_0x26e011){_0x26e011=_0x26e011||0xcc;return function(_0x371f83){if(_0x371f83){return _0x328c7b[_0x9d8d('0x1a')](_0x26e011);}return _0x328c7b[_0x9d8d('0x1b')](_0x26e011)['end']();};}function respondWithResult(_0x4a8925,_0x5728f2){_0x5728f2=_0x5728f2||0xc8;return function(_0x59d8d5){if(_0x59d8d5){return _0x4a8925['status'](_0x5728f2)['json'](_0x59d8d5);}};}function respondWithFilteredResult(_0x5e3936,_0x45f055){return function(_0x378443){if(_0x378443){var _0x2fef8f=typeof _0x45f055[_0x9d8d('0x1c')]===_0x9d8d('0x1d')&&typeof _0x45f055[_0x9d8d('0x1e')]===_0x9d8d('0x1d');var _0x43f8dc=_0x378443[_0x9d8d('0x1f')];var _0x4adb4d=_0x2fef8f?0x0:_0x45f055[_0x9d8d('0x1c')];var _0x291ee2=_0x2fef8f?_0x378443[_0x9d8d('0x1f')]:_0x45f055[_0x9d8d('0x1c')]+_0x45f055[_0x9d8d('0x1e')];var _0x597676;if(_0x291ee2>=_0x43f8dc){_0x291ee2=_0x43f8dc;_0x597676=0xc8;}else{_0x597676=0xce;}_0x5e3936[_0x9d8d('0x1b')](_0x597676);return _0x5e3936['set'](_0x9d8d('0x20'),_0x4adb4d+'-'+_0x291ee2+'/'+_0x43f8dc)['json'](_0x378443);}return null;};}function patchUpdates(_0x113157){return function(_0x39ae3d){try{jsonpatch[_0x9d8d('0x21')](_0x39ae3d,_0x113157,!![]);}catch(_0x52553f){return BPromise[_0x9d8d('0x22')](_0x52553f);}return _0x39ae3d[_0x9d8d('0x23')]();};}function saveUpdates(_0x58de2e,_0x281cbe){return function(_0x464d43){if(_0x464d43){return _0x464d43[_0x9d8d('0x24')](_0x58de2e)[_0x9d8d('0x25')](function(_0x4f2393){return _0x4f2393;});}return null;};}function removeEntity(_0x5d4d01,_0x221345){return function(_0x3c7ce1){if(_0x3c7ce1){return _0x3c7ce1[_0x9d8d('0x26')]()['then'](function(){var _0x194be9=_0x3c7ce1['get']({'plain':!![]});var _0x1795b0=_0x9d8d('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x1795b0,'resourceId':_0x194be9['id']}})[_0x9d8d('0x25')](function(){return _0x3c7ce1;});})[_0x9d8d('0x25')](function(){_0x5d4d01['status'](0xcc)[_0x9d8d('0x28')]();});}};}function handleEntityNotFound(_0x441ab9,_0x50ac0a){return function(_0x23f5b8){if(!_0x23f5b8){_0x441ab9[_0x9d8d('0x1a')](0x194);}return _0x23f5b8;};}function handleError(_0x1d8dec,_0x201330){_0x201330=_0x201330||0x1f4;return function(_0x486801){logger[_0x9d8d('0x29')](_0x486801[_0x9d8d('0x2a')]);if(_0x486801['name']){delete _0x486801[_0x9d8d('0x2b')];}_0x1d8dec[_0x9d8d('0x1b')](_0x201330)[_0x9d8d('0x2c')](_0x486801);};}exports['index']=function(_0x3c9f86,_0x592798){var _0x74ba1b={},_0xf0efb4={},_0x528eee={'count':0x0,'rows':[]};var _0x2e17e9=_[_0x9d8d('0x2d')](db[_0x9d8d('0x2e')][_0x9d8d('0x2f')],function(_0x433337){return{'name':_0x433337['fieldName'],'type':_0x433337[_0x9d8d('0x30')][_0x9d8d('0x31')]};});_0xf0efb4[_0x9d8d('0x32')]=_['map'](_0x2e17e9,_0x9d8d('0x2b'));_0xf0efb4[_0x9d8d('0x33')]=_[_0x9d8d('0x34')](_0x3c9f86[_0x9d8d('0x33')]);_0xf0efb4[_0x9d8d('0x35')]=_['intersection'](_0xf0efb4[_0x9d8d('0x32')],_0xf0efb4[_0x9d8d('0x33')]);_0x74ba1b['attributes']=_[_0x9d8d('0x36')](_0xf0efb4[_0x9d8d('0x32')],qs['fields'](_0x3c9f86[_0x9d8d('0x33')]['fields']));_0x74ba1b['attributes']=_0x74ba1b[_0x9d8d('0x37')][_0x9d8d('0x38')]?_0x74ba1b[_0x9d8d('0x37')]:_0xf0efb4['model'];if(!_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x39')]('nolimit')){_0x74ba1b[_0x9d8d('0x1e')]=qs[_0x9d8d('0x1e')](_0x3c9f86['query']['limit']);_0x74ba1b[_0x9d8d('0x1c')]=qs[_0x9d8d('0x1c')](_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x1c')]);}_0x74ba1b[_0x9d8d('0x3a')]=qs[_0x9d8d('0x3b')](_0x3c9f86['query'][_0x9d8d('0x3b')]);_0x74ba1b[_0x9d8d('0x3c')]=qs[_0x9d8d('0x35')](_[_0x9d8d('0x3d')](_0x3c9f86[_0x9d8d('0x33')],_0xf0efb4['filters']),_0x2e17e9);if(_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x3e')]){_0x74ba1b[_0x9d8d('0x3c')]=_[_0x9d8d('0x3f')](_0x74ba1b['where'],{'$or':_[_0x9d8d('0x2d')](_0x2e17e9,function(_0x588418){if(_0x588418[_0x9d8d('0x30')]!==_0x9d8d('0x40')){var _0x30dfce={};_0x30dfce[_0x588418['name']]={'$like':'%'+_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x3e')]+'%'};return _0x30dfce;}})});}_0x74ba1b=_['merge']({},_0x74ba1b,_0x3c9f86['options']);var _0x4afbb1={'where':_0x74ba1b[_0x9d8d('0x3c')]};return db[_0x9d8d('0x2e')]['count'](_0x4afbb1)[_0x9d8d('0x25')](function(_0x3ab110){_0x528eee[_0x9d8d('0x1f')]=_0x3ab110;if(_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x41')]){_0x74ba1b['include']=[{'all':!![]}];}return db[_0x9d8d('0x2e')][_0x9d8d('0x42')](_0x74ba1b);})[_0x9d8d('0x25')](function(_0x4ba923){_0x528eee['rows']=_0x4ba923;return _0x528eee;})['then'](respondWithFilteredResult(_0x592798,_0x74ba1b))['catch'](handleError(_0x592798,null));};exports[_0x9d8d('0x43')]=function(_0x3db776,_0x524d40){var _0x5154c2={'raw':![],'where':{'id':_0x3db776['params']['id']}},_0x4360f6={};_0x4360f6[_0x9d8d('0x32')]=_[_0x9d8d('0x34')](db[_0x9d8d('0x2e')][_0x9d8d('0x2f')]);_0x4360f6[_0x9d8d('0x33')]=_[_0x9d8d('0x34')](_0x3db776[_0x9d8d('0x33')]);_0x4360f6[_0x9d8d('0x35')]=_[_0x9d8d('0x36')](_0x4360f6[_0x9d8d('0x32')],_0x4360f6[_0x9d8d('0x33')]);_0x5154c2[_0x9d8d('0x37')]=_[_0x9d8d('0x36')](_0x4360f6[_0x9d8d('0x32')],qs['fields'](_0x3db776[_0x9d8d('0x33')][_0x9d8d('0x44')]));_0x5154c2[_0x9d8d('0x37')]=_0x5154c2[_0x9d8d('0x37')][_0x9d8d('0x38')]?_0x5154c2['attributes']:_0x4360f6[_0x9d8d('0x32')];if(_0x3db776[_0x9d8d('0x33')][_0x9d8d('0x41')]){_0x5154c2['include']=[{'all':!![]}];}_0x5154c2=_[_0x9d8d('0x3f')]({},_0x5154c2,_0x3db776[_0x9d8d('0x45')]);return db['Schedule'][_0x9d8d('0x46')](_0x5154c2)['then'](handleEntityNotFound(_0x524d40,null))[_0x9d8d('0x25')](respondWithResult(_0x524d40,null))[_0x9d8d('0x47')](handleError(_0x524d40,null));};exports[_0x9d8d('0x48')]=function(_0x3b5ee8,_0x31dc4d){return db['Schedule'][_0x9d8d('0x48')](_0x3b5ee8['body'],{})[_0x9d8d('0x25')](function(_0x56519a){var _0x200caa=_0x3b5ee8['user'][_0x9d8d('0x49')]({'plain':!![]});if(!_0x200caa)throw new Error(_0x9d8d('0x4a'));if(_0x200caa[_0x9d8d('0x4b')]===_0x9d8d('0x4c')){var _0x1c0f9b=_0x56519a[_0x9d8d('0x49')]({'plain':!![]});var _0x36f0a7=_0x9d8d('0x27');return db['UserProfileSection'][_0x9d8d('0x46')]({'where':{'name':_0x36f0a7,'userProfileId':_0x200caa['userProfileId']},'raw':!![]})['then'](function(_0x47767b){if(_0x47767b&&_0x47767b[_0x9d8d('0x4d')]===0x0){return db[_0x9d8d('0x4e')][_0x9d8d('0x48')]({'name':_0x1c0f9b[_0x9d8d('0x2b')],'resourceId':_0x1c0f9b['id'],'type':_0x47767b[_0x9d8d('0x2b')],'sectionId':_0x47767b['id']},{})[_0x9d8d('0x25')](function(){return _0x56519a;});}else{return _0x56519a;}})[_0x9d8d('0x47')](function(_0x445a6d){logger['error'](_0x9d8d('0x4f'),_0x445a6d);throw _0x445a6d;});}return _0x56519a;})[_0x9d8d('0x25')](respondWithResult(_0x31dc4d,0xc9))[_0x9d8d('0x47')](handleError(_0x31dc4d,null));};exports[_0x9d8d('0x24')]=function(_0x168937,_0x4fb455){if(_0x168937[_0x9d8d('0x50')]['id']){delete _0x168937[_0x9d8d('0x50')]['id'];}return db['Schedule']['find']({'where':{'id':_0x168937['params']['id']}})[_0x9d8d('0x25')](handleEntityNotFound(_0x4fb455,null))[_0x9d8d('0x25')](saveUpdates(_0x168937[_0x9d8d('0x50')],null))[_0x9d8d('0x25')](respondWithResult(_0x4fb455,null))['catch'](handleError(_0x4fb455,null));};exports[_0x9d8d('0x26')]=function(_0x1229cd,_0x33cd32){return db[_0x9d8d('0x2e')][_0x9d8d('0x46')]({'where':{'id':_0x1229cd['params']['id']}})[_0x9d8d('0x25')](handleEntityNotFound(_0x33cd32,null))[_0x9d8d('0x25')](removeEntity(_0x33cd32,null))['catch'](handleError(_0x33cd32,null));};exports[_0x9d8d('0x51')]=function(_0x51af4e,_0x1d50a2,_0x174c3c){var _0x32b937=require(_0x9d8d('0x52'));return db['Schedule'][_0x9d8d('0x46')]({'where':{'id':_0x51af4e[_0x9d8d('0x53')]['id']},'raw':!![]})[_0x9d8d('0x25')](handleEntityNotFound(_0x1d50a2,null))[_0x9d8d('0x25')](function(){_0x32b937[_0x9d8d('0x51')](_0x51af4e['params']['id']);})['then'](respondWithStatusCode(_0x1d50a2,null))[_0x9d8d('0x47')](handleError(_0x1d50a2,null));};
\ No newline at end of file
+var _0x73a4=['filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','Schedule','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','body','run','../../config/schedule','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','limit','count','set','Content-Range','apply','reject','update','then','get','Scheduler','UserProfileResource','destroy','sendStatus','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','keys'];(function(_0x31311d,_0x58afd1){var _0x5670c7=function(_0x1ed2c8){while(--_0x1ed2c8){_0x31311d['push'](_0x31311d['shift']());}};_0x5670c7(++_0x58afd1);}(_0x73a4,0x12d));var _0x473a=function(_0x5d3efb,_0x8a33ce){_0x5d3efb=_0x5d3efb-0x0;var _0x54a290=_0x73a4[_0x5d3efb];return _0x54a290;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x473a('0x0'));var zipdir=require(_0x473a('0x1'));var jsonpatch=require(_0x473a('0x2'));var rp=require(_0x473a('0x3'));var moment=require(_0x473a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x473a('0x5'));var util=require(_0x473a('0x6'));var path=require(_0x473a('0x7'));var sox=require(_0x473a('0x8'));var csv=require(_0x473a('0x9'));var ejs=require(_0x473a('0xa'));var fs=require('fs');var fs_extra=require(_0x473a('0xb'));var _=require(_0x473a('0xc'));var squel=require(_0x473a('0xd'));var crypto=require(_0x473a('0xe'));var jsforce=require(_0x473a('0xf'));var deskjs=require(_0x473a('0x10'));var toCsv=require(_0x473a('0x9'));var querystring=require('querystring');var Papa=require(_0x473a('0x11'));var Redis=require(_0x473a('0x12'));var authService=require(_0x473a('0x13'));var qs=require(_0x473a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x473a('0x15'));var logger=require(_0x473a('0x16'))(_0x473a('0x17'));var utils=require(_0x473a('0x18'));var config=require(_0x473a('0x19'));var licenseUtil=require(_0x473a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcf2e28,_0x5a565c){_0x5a565c=_0x5a565c||0xcc;return function(_0x164551){if(_0x164551){return _0xcf2e28['sendStatus'](_0x5a565c);}return _0xcf2e28['status'](_0x5a565c)[_0x473a('0x1b')]();};}function respondWithResult(_0x4818f1,_0x2dedad){_0x2dedad=_0x2dedad||0xc8;return function(_0x4223dc){if(_0x4223dc){return _0x4818f1[_0x473a('0x1c')](_0x2dedad)[_0x473a('0x1d')](_0x4223dc);}};}function respondWithFilteredResult(_0x586d89,_0x62c5f9){return function(_0x497dbc){if(_0x497dbc){var _0x902bf3=typeof _0x62c5f9[_0x473a('0x1e')]==='undefined'&&typeof _0x62c5f9[_0x473a('0x1f')]==='undefined';var _0x464e56=_0x497dbc['count'];var _0x514f78=_0x902bf3?0x0:_0x62c5f9[_0x473a('0x1e')];var _0x3405fe=_0x902bf3?_0x497dbc[_0x473a('0x20')]:_0x62c5f9[_0x473a('0x1e')]+_0x62c5f9['limit'];var _0x436676;if(_0x3405fe>=_0x464e56){_0x3405fe=_0x464e56;_0x436676=0xc8;}else{_0x436676=0xce;}_0x586d89['status'](_0x436676);return _0x586d89[_0x473a('0x21')](_0x473a('0x22'),_0x514f78+'-'+_0x3405fe+'/'+_0x464e56)[_0x473a('0x1d')](_0x497dbc);}return null;};}function patchUpdates(_0x48ace2){return function(_0x3fb3cc){try{jsonpatch[_0x473a('0x23')](_0x3fb3cc,_0x48ace2,!![]);}catch(_0x131c3f){return BPromise[_0x473a('0x24')](_0x131c3f);}return _0x3fb3cc['save']();};}function saveUpdates(_0x2f5676,_0x5808da){return function(_0x8f50a2){if(_0x8f50a2){return _0x8f50a2[_0x473a('0x25')](_0x2f5676)[_0x473a('0x26')](function(_0x32e491){return _0x32e491;});}return null;};}function removeEntity(_0x4aafee,_0x3ec3bc){return function(_0xfd0d77){if(_0xfd0d77){return _0xfd0d77['destroy']()['then'](function(){var _0x3292ea=_0xfd0d77[_0x473a('0x27')]({'plain':!![]});var _0x5b22bc=_0x473a('0x28');return db[_0x473a('0x29')][_0x473a('0x2a')]({'where':{'type':_0x5b22bc,'resourceId':_0x3292ea['id']}})[_0x473a('0x26')](function(){return _0xfd0d77;});})['then'](function(){_0x4aafee['status'](0xcc)[_0x473a('0x1b')]();});}};}function handleEntityNotFound(_0x11a66c,_0x24c072){return function(_0xec7ae4){if(!_0xec7ae4){_0x11a66c[_0x473a('0x2b')](0x194);}return _0xec7ae4;};}function handleError(_0x464973,_0x2d9aa8){_0x2d9aa8=_0x2d9aa8||0x1f4;return function(_0x3d02de){logger['error'](_0x3d02de[_0x473a('0x2c')]);if(_0x3d02de['name']){delete _0x3d02de[_0x473a('0x2d')];}_0x464973[_0x473a('0x1c')](_0x2d9aa8)['send'](_0x3d02de);};}exports[_0x473a('0x2e')]=function(_0xb346a1,_0x48199f){var _0x2b4ddf={},_0x540ddc={},_0x2f3c5d={'count':0x0,'rows':[]};var _0x34c220=_['map'](db['Schedule'][_0x473a('0x2f')],function(_0x9e73b){return{'name':_0x9e73b[_0x473a('0x30')],'type':_0x9e73b[_0x473a('0x31')][_0x473a('0x32')]};});_0x540ddc[_0x473a('0x33')]=_[_0x473a('0x34')](_0x34c220,'name');_0x540ddc[_0x473a('0x35')]=_[_0x473a('0x36')](_0xb346a1[_0x473a('0x35')]);_0x540ddc[_0x473a('0x37')]=_['intersection'](_0x540ddc[_0x473a('0x33')],_0x540ddc[_0x473a('0x35')]);_0x2b4ddf[_0x473a('0x38')]=_[_0x473a('0x39')](_0x540ddc['model'],qs[_0x473a('0x3a')](_0xb346a1['query']['fields']));_0x2b4ddf['attributes']=_0x2b4ddf['attributes'][_0x473a('0x3b')]?_0x2b4ddf['attributes']:_0x540ddc[_0x473a('0x33')];if(!_0xb346a1[_0x473a('0x35')][_0x473a('0x3c')](_0x473a('0x3d'))){_0x2b4ddf[_0x473a('0x1f')]=qs[_0x473a('0x1f')](_0xb346a1['query'][_0x473a('0x1f')]);_0x2b4ddf[_0x473a('0x1e')]=qs[_0x473a('0x1e')](_0xb346a1[_0x473a('0x35')]['offset']);}_0x2b4ddf[_0x473a('0x3e')]=qs[_0x473a('0x3f')](_0xb346a1[_0x473a('0x35')]['sort']);_0x2b4ddf[_0x473a('0x40')]=qs[_0x473a('0x37')](_[_0x473a('0x41')](_0xb346a1['query'],_0x540ddc[_0x473a('0x37')]),_0x34c220);if(_0xb346a1[_0x473a('0x35')]['filter']){_0x2b4ddf['where']=_[_0x473a('0x42')](_0x2b4ddf[_0x473a('0x40')],{'$or':_[_0x473a('0x34')](_0x34c220,function(_0x107a23){if(_0x107a23[_0x473a('0x31')]!==_0x473a('0x43')){var _0x45fd01={};_0x45fd01[_0x107a23[_0x473a('0x2d')]]={'$like':'%'+_0xb346a1[_0x473a('0x35')][_0x473a('0x44')]+'%'};return _0x45fd01;}})});}_0x2b4ddf=_[_0x473a('0x42')]({},_0x2b4ddf,_0xb346a1[_0x473a('0x45')]);var _0x240daa={'where':_0x2b4ddf[_0x473a('0x40')]};return db[_0x473a('0x46')][_0x473a('0x20')](_0x240daa)[_0x473a('0x26')](function(_0x3e3fc4){_0x2f3c5d['count']=_0x3e3fc4;if(_0xb346a1['query'][_0x473a('0x47')]){_0x2b4ddf[_0x473a('0x48')]=[{'all':!![]}];}return db[_0x473a('0x46')][_0x473a('0x49')](_0x2b4ddf);})['then'](function(_0x4197a5){_0x2f3c5d[_0x473a('0x4a')]=_0x4197a5;return _0x2f3c5d;})[_0x473a('0x26')](respondWithFilteredResult(_0x48199f,_0x2b4ddf))[_0x473a('0x4b')](handleError(_0x48199f,null));};exports[_0x473a('0x4c')]=function(_0x537b43,_0x140aff){var _0x5ddce7={'raw':![],'where':{'id':_0x537b43[_0x473a('0x4d')]['id']}},_0x2c1757={};_0x2c1757[_0x473a('0x33')]=_[_0x473a('0x36')](db[_0x473a('0x46')][_0x473a('0x2f')]);_0x2c1757['query']=_[_0x473a('0x36')](_0x537b43[_0x473a('0x35')]);_0x2c1757['filters']=_[_0x473a('0x39')](_0x2c1757['model'],_0x2c1757['query']);_0x5ddce7[_0x473a('0x38')]=_[_0x473a('0x39')](_0x2c1757[_0x473a('0x33')],qs['fields'](_0x537b43['query'][_0x473a('0x3a')]));_0x5ddce7[_0x473a('0x38')]=_0x5ddce7[_0x473a('0x38')][_0x473a('0x3b')]?_0x5ddce7['attributes']:_0x2c1757[_0x473a('0x33')];if(_0x537b43['query'][_0x473a('0x47')]){_0x5ddce7[_0x473a('0x48')]=[{'all':!![]}];}_0x5ddce7=_[_0x473a('0x42')]({},_0x5ddce7,_0x537b43['options']);return db[_0x473a('0x46')][_0x473a('0x4e')](_0x5ddce7)['then'](handleEntityNotFound(_0x140aff,null))['then'](respondWithResult(_0x140aff,null))[_0x473a('0x4b')](handleError(_0x140aff,null));};exports['create']=function(_0x4cb3b2,_0x426e09){return db['Schedule'][_0x473a('0x4f')](_0x4cb3b2['body'],{})['then'](function(_0x5334f7){var _0x473621=_0x4cb3b2[_0x473a('0x50')][_0x473a('0x27')]({'plain':!![]});if(!_0x473621)throw new Error(_0x473a('0x51'));if(_0x473621[_0x473a('0x52')]===_0x473a('0x50')){var _0x1f3863=_0x5334f7['get']({'plain':!![]});var _0x39a9f9=_0x473a('0x28');return db[_0x473a('0x53')][_0x473a('0x4e')]({'where':{'name':_0x39a9f9,'userProfileId':_0x473621[_0x473a('0x54')]},'raw':!![]})[_0x473a('0x26')](function(_0x264f3d){if(_0x264f3d&&_0x264f3d['autoAssociation']===0x0){return db[_0x473a('0x29')]['create']({'name':_0x1f3863[_0x473a('0x2d')],'resourceId':_0x1f3863['id'],'type':_0x264f3d['name'],'sectionId':_0x264f3d['id']},{})[_0x473a('0x26')](function(){return _0x5334f7;});}else{return _0x5334f7;}})[_0x473a('0x4b')](function(_0x5aa85d){logger[_0x473a('0x55')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5aa85d);throw _0x5aa85d;});}return _0x5334f7;})[_0x473a('0x26')](respondWithResult(_0x426e09,0xc9))['catch'](handleError(_0x426e09,null));};exports['update']=function(_0x22334c,_0x17b3da){if(_0x22334c[_0x473a('0x56')]['id']){delete _0x22334c[_0x473a('0x56')]['id'];}return db[_0x473a('0x46')][_0x473a('0x4e')]({'where':{'id':_0x22334c[_0x473a('0x4d')]['id']}})[_0x473a('0x26')](handleEntityNotFound(_0x17b3da,null))[_0x473a('0x26')](saveUpdates(_0x22334c['body'],null))['then'](respondWithResult(_0x17b3da,null))[_0x473a('0x4b')](handleError(_0x17b3da,null));};exports[_0x473a('0x2a')]=function(_0x1b0e81,_0x28c9e1){return db[_0x473a('0x46')][_0x473a('0x4e')]({'where':{'id':_0x1b0e81[_0x473a('0x4d')]['id']}})[_0x473a('0x26')](handleEntityNotFound(_0x28c9e1,null))[_0x473a('0x26')](removeEntity(_0x28c9e1,null))[_0x473a('0x4b')](handleError(_0x28c9e1,null));};exports[_0x473a('0x57')]=function(_0x336058,_0x4c5ddc,_0x2c60ca){var _0x18d3a8=require(_0x473a('0x58'));return db[_0x473a('0x46')]['find']({'where':{'id':_0x336058['params']['id']},'raw':!![]})[_0x473a('0x26')](handleEntityNotFound(_0x4c5ddc,null))[_0x473a('0x26')](function(){_0x18d3a8['run'](_0x336058[_0x473a('0x4d')]['id']);})[_0x473a('0x26')](respondWithStatusCode(_0x4c5ddc,null))[_0x473a('0x4b')](handleError(_0x4c5ddc,null));};
\ No newline at end of file
index f854115..0955e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f6a=['api','moment','bluebird','request-promise','../../config/environment','exports','define','Schedule','tools_schedules','lodash','util','../../config/logger'];(function(_0xd204b0,_0x4c7d1d){var _0xfc8310=function(_0x4f4b5a){while(--_0x4f4b5a){_0xd204b0['push'](_0xd204b0['shift']());}};_0xfc8310(++_0x4c7d1d);}(_0x6f6a,0x8d));var _0xa6f6=function(_0x1f45a9,_0x6af208){_0x1f45a9=_0x1f45a9-0x0;var _0x63e3a9=_0x6f6a[_0x1f45a9];return _0x63e3a9;};'use strict';var _=require(_0xa6f6('0x0'));var util=require(_0xa6f6('0x1'));var logger=require(_0xa6f6('0x2'))(_0xa6f6('0x3'));var moment=require(_0xa6f6('0x4'));var BPromise=require(_0xa6f6('0x5'));var rp=require(_0xa6f6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa6f6('0x7'));var attributes=require('./schedule.attributes');module[_0xa6f6('0x8')]=function(_0x37cd5b,_0x137ee3){return _0x37cd5b[_0xa6f6('0x9')](_0xa6f6('0xa'),attributes,{'tableName':_0xa6f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1d2=['rimraf','./schedule.attributes','exports','define','Schedule','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x3a8818,_0x1d4374){var _0x4e40df=function(_0x714f8e){while(--_0x714f8e){_0x3a8818['push'](_0x3a8818['shift']());}};_0x4e40df(++_0x1d4374);}(_0xe1d2,0x161));var _0x2e1d=function(_0x3aede8,_0x5c12f7){_0x3aede8=_0x3aede8-0x0;var _0x3c54bd=_0xe1d2[_0x3aede8];return _0x3c54bd;};'use strict';var _=require(_0x2e1d('0x0'));var util=require(_0x2e1d('0x1'));var logger=require(_0x2e1d('0x2'))('api');var moment=require(_0x2e1d('0x3'));var BPromise=require(_0x2e1d('0x4'));var rp=require(_0x2e1d('0x5'));var fs=require('fs');var path=require(_0x2e1d('0x6'));var rimraf=require(_0x2e1d('0x7'));var config=require('../../config/environment');var attributes=require(_0x2e1d('0x8'));module[_0x2e1d('0x9')]=function(_0x3c55b5,_0x33e4f0){return _0x3c55b5[_0x2e1d('0xa')](_0x2e1d('0xb'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf8e9a7..fc45e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0946=['request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','error','code','message','Schedule,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x1ab180,_0x382b2c){var _0xfb2c2d=function(_0x1c5fd3){while(--_0x1c5fd3){_0x1ab180['push'](_0x1ab180['shift']());}};_0xfb2c2d(++_0x382b2c);}(_0x0946,0x18f));var _0x6094=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x0946[_0x47568e];return _0x33815b;};'use strict';var _=require(_0x6094('0x0'));var util=require(_0x6094('0x1'));var moment=require('moment');var BPromise=require(_0x6094('0x2'));var rs=require(_0x6094('0x3'));var fs=require('fs');var Redis=require(_0x6094('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6094('0x5'));var logger=require(_0x6094('0x6'))(_0x6094('0x7'));var config=require(_0x6094('0x8'));var jayson=require(_0x6094('0x9'));var client=jayson[_0x6094('0xa')][_0x6094('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x294fdb,_0x3f50ff,_0x16b368){return new BPromise(function(_0x55bf91,_0x136a59){return client[_0x6094('0xc')](_0x294fdb,_0x16b368)[_0x6094('0xd')](function(_0x2b0e2d){logger[_0x6094('0xe')]('Schedule,\x20%s,\x20%s',_0x3f50ff,_0x6094('0xf'));logger['debug'](_0x6094('0x10'),_0x3f50ff,'request\x20sent',JSON['stringify'](_0x2b0e2d));if(_0x2b0e2d[_0x6094('0x11')]){if(_0x2b0e2d[_0x6094('0x11')][_0x6094('0x12')]===0x1f4){logger[_0x6094('0x11')]('Schedule,\x20%s,\x20%s',_0x3f50ff,_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);return _0x136a59(_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);}logger[_0x6094('0x11')](_0x6094('0x14'),_0x3f50ff,_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);return _0x55bf91(_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);}else{logger[_0x6094('0xe')](_0x6094('0x14'),_0x3f50ff,_0x6094('0xf'));_0x55bf91(_0x2b0e2d[_0x6094('0x15')]['message']);}})[_0x6094('0x16')](function(_0x1a4492){logger[_0x6094('0x11')](_0x6094('0x14'),_0x3f50ff,_0x1a4492);_0x136a59(_0x1a4492);});});}
\ No newline at end of file
+var _0xdce5=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','error','message','info','result','lodash','util','moment','bluebird','randomstring','../../config/utils'];(function(_0xd6df5e,_0x4a4e46){var _0x155b12=function(_0x368fb6){while(--_0x368fb6){_0xd6df5e['push'](_0xd6df5e['shift']());}};_0x155b12(++_0x4a4e46);}(_0xdce5,0xaa));var _0x5dce=function(_0x3ad5da,_0x4a4c8b){_0x3ad5da=_0x3ad5da-0x0;var _0xf50713=_0xdce5[_0x3ad5da];return _0xf50713;};'use strict';var _=require(_0x5dce('0x0'));var util=require(_0x5dce('0x1'));var moment=require(_0x5dce('0x2'));var BPromise=require(_0x5dce('0x3'));var rs=require(_0x5dce('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5dce('0x5'));var logger=require(_0x5dce('0x6'))(_0x5dce('0x7'));var config=require(_0x5dce('0x8'));var jayson=require(_0x5dce('0x9'));var client=jayson[_0x5dce('0xa')][_0x5dce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a6a67,_0x121c78,_0x19152a){return new BPromise(function(_0x301bee,_0x31c50a){return client[_0x5dce('0xc')](_0x3a6a67,_0x19152a)[_0x5dce('0xd')](function(_0x53a7b8){logger['info'](_0x5dce('0xe'),_0x121c78,_0x5dce('0xf'));logger[_0x5dce('0x10')](_0x5dce('0x11'),_0x121c78,'request\x20sent',JSON['stringify'](_0x53a7b8));if(_0x53a7b8['error']){if(_0x53a7b8[_0x5dce('0x12')]['code']===0x1f4){logger['error'](_0x5dce('0xe'),_0x121c78,_0x53a7b8['error'][_0x5dce('0x13')]);return _0x31c50a(_0x53a7b8[_0x5dce('0x12')]['message']);}logger[_0x5dce('0x12')]('Schedule,\x20%s,\x20%s',_0x121c78,_0x53a7b8['error'][_0x5dce('0x13')]);return _0x301bee(_0x53a7b8[_0x5dce('0x12')][_0x5dce('0x13')]);}else{logger[_0x5dce('0x14')](_0x5dce('0xe'),_0x121c78,_0x5dce('0xf'));_0x301bee(_0x53a7b8[_0x5dce('0x15')]['message']);}})['catch'](function(_0x52cf95){logger['error']('Schedule,\x20%s,\x20%s',_0x121c78,_0x52cf95);_0x31c50a(_0x52cf95);});});}
\ No newline at end of file
index 1cdfa37..8055f3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c26=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','show','download','post','create','put','/:id','update','delete','exports','multer','util'];(function(_0x94c47a,_0x5bdc53){var _0x1cdb1d=function(_0x121352){while(--_0x121352){_0x94c47a['push'](_0x94c47a['shift']());}};_0x1cdb1d(++_0x5bdc53);}(_0x7c26,0x14e));var _0x67c2=function(_0x1560dc,_0x49d2c){_0x1560dc=_0x1560dc-0x0;var _0x1caeaa=_0x7c26[_0x1560dc];return _0x1caeaa;};'use strict';var multer=require(_0x67c2('0x0'));var util=require(_0x67c2('0x1'));var path=require(_0x67c2('0x2'));var timeout=require(_0x67c2('0x3'));var express=require('express');var router=express[_0x67c2('0x4')]();var fs_extra=require(_0x67c2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x67c2('0x6'));var config=require(_0x67c2('0x7'));var controller=require('./screenRecording.controller');router['get']('/',auth[_0x67c2('0x8')](),controller['index']);router[_0x67c2('0x9')](_0x67c2('0xa'),auth['isAuthenticated'](),controller[_0x67c2('0xb')]);router['get']('/:id',auth[_0x67c2('0x8')](),controller[_0x67c2('0xc')]);router['get']('/:id/download',auth[_0x67c2('0x8')](),controller[_0x67c2('0xd')]);router[_0x67c2('0xe')]('/',auth[_0x67c2('0x8')](),controller[_0x67c2('0xf')]);router[_0x67c2('0x10')](_0x67c2('0x11'),auth[_0x67c2('0x8')](),controller[_0x67c2('0x12')]);router[_0x67c2('0x13')](_0x67c2('0x11'),auth[_0x67c2('0x8')](),controller['destroy']);module[_0x67c2('0x14')]=router;
\ No newline at end of file
+var _0x0627=['./screenRecording.controller','index','get','isAuthenticated','/:id','show','/:id/download','download','put','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service'];(function(_0x518d6e,_0x5062c3){var _0x2691d4=function(_0x38e001){while(--_0x38e001){_0x518d6e['push'](_0x518d6e['shift']());}};_0x2691d4(++_0x5062c3);}(_0x0627,0xc0));var _0x7062=function(_0x462999,_0x24d200){_0x462999=_0x462999-0x0;var _0x4b1366=_0x0627[_0x462999];return _0x4b1366;};'use strict';var multer=require(_0x7062('0x0'));var util=require(_0x7062('0x1'));var path=require(_0x7062('0x2'));var timeout=require('connect-timeout');var express=require(_0x7062('0x3'));var router=express[_0x7062('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7062('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7062('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7062('0x7')]);router[_0x7062('0x8')]('/describe',auth[_0x7062('0x9')](),controller['describe']);router[_0x7062('0x8')](_0x7062('0xa'),auth[_0x7062('0x9')](),controller[_0x7062('0xb')]);router[_0x7062('0x8')](_0x7062('0xc'),auth[_0x7062('0x9')](),controller[_0x7062('0xd')]);router['post']('/',auth[_0x7062('0x9')](),controller['create']);router[_0x7062('0xe')](_0x7062('0xa'),auth[_0x7062('0x9')](),controller['update']);router[_0x7062('0xf')](_0x7062('0xa'),auth[_0x7062('0x9')](),controller[_0x7062('0x10')]);module[_0x7062('0x11')]=router;
\ No newline at end of file
index cde2c98..7823cae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f3e=['replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','format','MM-DD-YYYY\x20HH:mm','DATE','toString','createdAt','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','extname','STRING'];(function(_0x536f25,_0x516127){var _0x52d236=function(_0x4e07ce){while(--_0x4e07ce){_0x536f25['push'](_0x536f25['shift']());}};_0x52d236(++_0x516127);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6f3e[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xe6f3('0x0'));var moment=require(_0xe6f3('0x1'));var path=require(_0xe6f3('0x2'));var config=require(_0xe6f3('0x3'));module[_0xe6f3('0x4')]={'format':{'type':Sequelize[_0xe6f3('0x5')],'get':function(){return this[_0xe6f3('0x6')]('value')?path[_0xe6f3('0x7')](this[_0xe6f3('0x6')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0xe6f3('0x8')]},'channel':{'type':Sequelize[_0xe6f3('0x8')]},'value':{'type':Sequelize[_0xe6f3('0x8')],'set':function(_0x5b59eb){var _0x44cedc=_0x5b59eb[_0xe6f3('0x9')](/\\/g,'/');this[_0xe6f3('0xa')]('value',_0x44cedc);}},'rating':{'type':Sequelize[_0xe6f3('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x331856){this[_0xe6f3('0xa')](_0xe6f3('0xc'),moment()[_0xe6f3('0xd')](_0x331856,'ms'));this[_0xe6f3('0xa')](_0xe6f3('0xe'),moment());this['setDataValue'](_0xe6f3('0xf'),_0x331856);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xe6f3('0x6')](_0xe6f3('0xc')))[_0xe6f3('0x10')](_0xe6f3('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0xe6f3('0x12')],'get':function(){return moment(this[_0xe6f3('0x6')](_0xe6f3('0xe')))[_0xe6f3('0x10')](_0xe6f3('0x11'))[_0xe6f3('0x13')]();}},'createdAt':{'type':Sequelize[_0xe6f3('0x12')],'get':function(){return moment(this['getDataValue'](_0xe6f3('0x14')))[_0xe6f3('0x10')](_0xe6f3('0x11'))[_0xe6f3('0x13')]();}},'updatedAt':{'type':Sequelize[_0xe6f3('0x12')],'get':function(){return moment(this['getDataValue']('updatedAt'))[_0xe6f3('0x10')](_0xe6f3('0x11'))[_0xe6f3('0x13')]();}}};
\ No newline at end of file
+var _0xaa5e=['value','STRING','replace','INTEGER','startedAt','subtract','closedAt','setDataValue','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','sequelize','moment','../../config/environment','exports','VIRTUAL','getDataValue'];(function(_0x483ca5,_0x1c6a4a){var _0x399a2c=function(_0x39fc7a){while(--_0x39fc7a){_0x483ca5['push'](_0x483ca5['shift']());}};_0x399a2c(++_0x1c6a4a);}(_0xaa5e,0xa5));var _0xeaa5=function(_0x47ae93,_0x45a2e9){_0x47ae93=_0x47ae93-0x0;var _0x5e6856=_0xaa5e[_0x47ae93];return _0x5e6856;};'use strict';var Sequelize=require(_0xeaa5('0x0'));var moment=require(_0xeaa5('0x1'));var path=require('path');var config=require(_0xeaa5('0x2'));module[_0xeaa5('0x3')]={'format':{'type':Sequelize[_0xeaa5('0x4')],'get':function(){return this[_0xeaa5('0x5')](_0xeaa5('0x6'))?path['extname'](this[_0xeaa5('0x5')](_0xeaa5('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0xeaa5('0x7')]},'channel':{'type':Sequelize[_0xeaa5('0x7')]},'value':{'type':Sequelize['STRING'],'set':function(_0x4d405e){var _0x2f9041=_0x4d405e[_0xeaa5('0x8')](/\\/g,'/');this['setDataValue'](_0xeaa5('0x6'),_0x2f9041);}},'rating':{'type':Sequelize[_0xeaa5('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x2e9ca6){this['setDataValue'](_0xeaa5('0xa'),moment()[_0xeaa5('0xb')](_0x2e9ca6,'ms'));this['setDataValue'](_0xeaa5('0xc'),moment());this[_0xeaa5('0xd')](_0xeaa5('0xe'),_0x2e9ca6);}},'startedAt':{'type':Sequelize[_0xeaa5('0xf')],'get':function(){return moment(this[_0xeaa5('0x5')](_0xeaa5('0xa')))[_0xeaa5('0x10')](_0xeaa5('0x11'))[_0xeaa5('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xeaa5('0x5')](_0xeaa5('0xc')))[_0xeaa5('0x10')](_0xeaa5('0x11'))[_0xeaa5('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xeaa5('0x5')]('createdAt'))[_0xeaa5('0x10')](_0xeaa5('0x11'))[_0xeaa5('0x12')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xeaa5('0x5')]('updatedAt'))[_0xeaa5('0x10')](_0xeaa5('0x11'))[_0xeaa5('0x12')]();}}};
\ No newline at end of file
index 002377f..79a3c67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['stack','name','send','index','map','ScreenRecording','fieldName','type','key','model','differenceBy','format','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','filter','includeAll','findAll','rows','show','params','rawAttributes','options','find','create','body','duration','createdAt','value','catch','describe','download','../../components/encryptor','root','server/files/screen_recordings','%s.cypher','decryptFile','secrets','recording','join','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','then','destroy','end','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7da7,0x10d));var _0x77da=function(_0x1d8119,_0xc98f17){_0x1d8119=_0x1d8119-0x0;var _0x3e30f6=_0x7da7[_0x1d8119];return _0x3e30f6;};'use strict';var emlformat=require(_0x77da('0x0'));var rimraf=require(_0x77da('0x1'));var zipdir=require(_0x77da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77da('0x3'));var BPromise=require(_0x77da('0x4'));var Mustache=require('mustache');var util=require(_0x77da('0x5'));var path=require(_0x77da('0x6'));var sox=require('sox');var csv=require(_0x77da('0x7'));var ejs=require(_0x77da('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77da('0x9'));var squel=require('squel');var crypto=require(_0x77da('0xa'));var jsforce=require(_0x77da('0xb'));var deskjs=require(_0x77da('0xc'));var toCsv=require(_0x77da('0x7'));var querystring=require(_0x77da('0xd'));var Papa=require('papaparse');var Redis=require(_0x77da('0xe'));var authService=require(_0x77da('0xf'));var qs=require(_0x77da('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77da('0x11'));var logger=require(_0x77da('0x12'))(_0x77da('0x13'));var utils=require(_0x77da('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x77da('0x15'));var db=require(_0x77da('0x16'))['db'];function respondWithStatusCode(_0x2acc65,_0x5d6e2f){_0x5d6e2f=_0x5d6e2f||0xcc;return function(_0x4a7748){if(_0x4a7748){return _0x2acc65[_0x77da('0x17')](_0x5d6e2f);}return _0x2acc65[_0x77da('0x18')](_0x5d6e2f)['end']();};}function respondWithResult(_0x3b0ff2,_0x369df0){_0x369df0=_0x369df0||0xc8;return function(_0x355719){if(_0x355719){return _0x3b0ff2[_0x77da('0x18')](_0x369df0)['json'](_0x355719);}};}function respondWithFilteredResult(_0x2172d0,_0x4e130c){return function(_0x29cd7b){if(_0x29cd7b){var _0x366443=typeof _0x4e130c[_0x77da('0x19')]===_0x77da('0x1a')&&typeof _0x4e130c['limit']==='undefined';var _0x514016=_0x29cd7b['count'];var _0x103e46=_0x366443?0x0:_0x4e130c[_0x77da('0x19')];var _0x289887=_0x366443?_0x29cd7b[_0x77da('0x1b')]:_0x4e130c[_0x77da('0x19')]+_0x4e130c[_0x77da('0x1c')];var _0x1d325c;if(_0x289887>=_0x514016){_0x289887=_0x514016;_0x1d325c=0xc8;}else{_0x1d325c=0xce;}_0x2172d0[_0x77da('0x18')](_0x1d325c);return _0x2172d0['set']('Content-Range',_0x103e46+'-'+_0x289887+'/'+_0x514016)[_0x77da('0x1d')](_0x29cd7b);}return null;};}function patchUpdates(_0x4d1512){return function(_0x507979){try{jsonpatch[_0x77da('0x1e')](_0x507979,_0x4d1512,!![]);}catch(_0x304a2b){return BPromise[_0x77da('0x1f')](_0x304a2b);}return _0x507979['save']();};}function saveUpdates(_0x58270c,_0x3e6cfe){return function(_0x58f6c1){if(_0x58f6c1){return _0x58f6c1[_0x77da('0x20')](_0x58270c)[_0x77da('0x21')](function(_0xc52f0e){return _0xc52f0e;});}return null;};}function removeEntity(_0x27b6c7,_0x10399a){return function(_0x270318){if(_0x270318){return _0x270318[_0x77da('0x22')]()['then'](function(){_0x27b6c7['status'](0xcc)[_0x77da('0x23')]();});}};}function handleEntityNotFound(_0x2d009f,_0x835167){return function(_0xbd06b7){if(!_0xbd06b7){_0x2d009f['sendStatus'](0x194);}return _0xbd06b7;};}function handleError(_0x42240b,_0x167240){_0x167240=_0x167240||0x1f4;return function(_0x470c9f){logger[_0x77da('0x24')](_0x470c9f[_0x77da('0x25')]);if(_0x470c9f['name']){delete _0x470c9f[_0x77da('0x26')];}_0x42240b[_0x77da('0x18')](_0x167240)[_0x77da('0x27')](_0x470c9f);};}exports[_0x77da('0x28')]=function(_0x496ecd,_0x5b4638){var _0x4d395a={},_0x2258e9={},_0x30456a={'count':0x0,'rows':[]};var _0x410d09=_[_0x77da('0x29')](db[_0x77da('0x2a')]['rawAttributes'],function(_0x350b4e){return{'name':_0x350b4e[_0x77da('0x2b')],'type':_0x350b4e[_0x77da('0x2c')][_0x77da('0x2d')]};});_0x2258e9[_0x77da('0x2e')]=_[_0x77da('0x2f')](_['map'](_0x410d09,_0x77da('0x26')),[_0x77da('0x30')]);_0x2258e9[_0x77da('0x31')]=_[_0x77da('0x32')](_0x496ecd[_0x77da('0x31')]);_0x2258e9[_0x77da('0x33')]=_[_0x77da('0x34')](_0x2258e9[_0x77da('0x2e')],_0x2258e9['query']);_0x4d395a['attributes']=_[_0x77da('0x34')](_0x2258e9[_0x77da('0x2e')],qs['fields'](_0x496ecd[_0x77da('0x31')][_0x77da('0x35')]));_0x4d395a[_0x77da('0x36')]=_0x4d395a[_0x77da('0x36')][_0x77da('0x37')]?_0x4d395a[_0x77da('0x36')]:_0x2258e9[_0x77da('0x2e')];if(!_0x496ecd['query'][_0x77da('0x38')]('nolimit')){_0x4d395a['limit']=qs['limit'](_0x496ecd[_0x77da('0x31')]['limit']);_0x4d395a[_0x77da('0x19')]=qs[_0x77da('0x19')](_0x496ecd[_0x77da('0x31')][_0x77da('0x19')]);}_0x4d395a[_0x77da('0x39')]=qs[_0x77da('0x3a')](_0x496ecd[_0x77da('0x31')]['sort']);_0x4d395a[_0x77da('0x3b')]=qs[_0x77da('0x33')](_[_0x77da('0x3c')](_0x496ecd[_0x77da('0x31')],_0x2258e9[_0x77da('0x33')]),_0x410d09);if(_0x496ecd[_0x77da('0x31')]['filter']){_0x4d395a[_0x77da('0x3b')]=_[_0x77da('0x3d')](_0x4d395a[_0x77da('0x3b')],{'$or':_['map'](_0x410d09,function(_0xc5f0b8){if(_0xc5f0b8['type']!=='VIRTUAL'){var _0x599e21={};_0x599e21[_0xc5f0b8['name']]={'$like':'%'+_0x496ecd[_0x77da('0x31')][_0x77da('0x3e')]+'%'};return _0x599e21;}})});}_0x4d395a=_[_0x77da('0x3d')]({},_0x4d395a,_0x496ecd['options']);var _0x21d337={'where':_0x4d395a['where']};return db[_0x77da('0x2a')]['count'](_0x21d337)[_0x77da('0x21')](function(_0xa19b50){_0x30456a[_0x77da('0x1b')]=_0xa19b50;if(_0x496ecd[_0x77da('0x31')][_0x77da('0x3f')]){_0x4d395a['include']=[{'all':!![]}];}return db[_0x77da('0x2a')][_0x77da('0x40')](_0x4d395a);})[_0x77da('0x21')](function(_0x2f14f4){_0x30456a[_0x77da('0x41')]=_0x2f14f4;return _0x30456a;})[_0x77da('0x21')](respondWithFilteredResult(_0x5b4638,_0x4d395a))['catch'](handleError(_0x5b4638,null));};exports[_0x77da('0x42')]=function(_0x2f0495,_0x21de41){var _0x2dfeca={'raw':![],'where':{'id':_0x2f0495[_0x77da('0x43')]['id']}},_0x7d11f9={};_0x7d11f9['model']=_[_0x77da('0x32')](db['ScreenRecording'][_0x77da('0x44')]);_0x7d11f9[_0x77da('0x31')]=_[_0x77da('0x32')](_0x2f0495['query']);_0x7d11f9[_0x77da('0x33')]=_[_0x77da('0x34')](_0x7d11f9[_0x77da('0x2e')],_0x7d11f9[_0x77da('0x31')]);_0x2dfeca[_0x77da('0x36')]=_[_0x77da('0x34')](_0x7d11f9[_0x77da('0x2e')],qs[_0x77da('0x35')](_0x2f0495[_0x77da('0x31')]['fields']));_0x2dfeca[_0x77da('0x36')]=_0x2dfeca[_0x77da('0x36')][_0x77da('0x37')]?_0x2dfeca[_0x77da('0x36')]:_0x7d11f9[_0x77da('0x2e')];if(_0x2f0495[_0x77da('0x31')]['includeAll']){_0x2dfeca['include']=[{'all':!![]}];}_0x2dfeca=_[_0x77da('0x3d')]({},_0x2dfeca,_0x2f0495[_0x77da('0x45')]);return db[_0x77da('0x2a')][_0x77da('0x46')](_0x2dfeca)[_0x77da('0x21')](handleEntityNotFound(_0x21de41,null))[_0x77da('0x21')](respondWithResult(_0x21de41,null))['catch'](handleError(_0x21de41,null));};exports[_0x77da('0x47')]=function(_0x357ee4,_0x332f80){return db[_0x77da('0x2a')]['create'](_0x357ee4[_0x77da('0x48')],{})['then'](respondWithResult(_0x332f80,0xc9))['catch'](handleError(_0x332f80,null));};exports[_0x77da('0x20')]=function(_0x176f01,_0x143a68){if(_0x176f01[_0x77da('0x48')]['id']){delete _0x176f01['body']['id'];}delete _0x176f01[_0x77da('0x48')][_0x77da('0x49')];delete _0x176f01['body'][_0x77da('0x4a')];delete _0x176f01[_0x77da('0x48')]['closedAt'];delete _0x176f01[_0x77da('0x48')][_0x77da('0x4b')];return db[_0x77da('0x2a')][_0x77da('0x46')]({'where':{'id':_0x176f01[_0x77da('0x43')]['id']}})[_0x77da('0x21')](handleEntityNotFound(_0x143a68,null))[_0x77da('0x21')](saveUpdates(_0x176f01[_0x77da('0x48')],null))[_0x77da('0x21')](respondWithResult(_0x143a68,null))[_0x77da('0x4c')](handleError(_0x143a68,null));};exports['describe']=function(_0x3d04a3,_0x513017){return db[_0x77da('0x2a')][_0x77da('0x4d')]()[_0x77da('0x21')](respondWithResult(_0x513017,null))[_0x77da('0x4c')](handleError(_0x513017,null));};exports[_0x77da('0x4e')]=function(_0x8b377d,_0x3a78d2,_0x4c271d){var _0x17ed71=require(_0x77da('0x4f'));var _0x1a7115=![];var _0x353be9={};if(_0x8b377d['query'][_0x77da('0x2c')]&&_0x8b377d[_0x77da('0x31')][_0x77da('0x2c')]==='uniqueid'){_0x353be9['uniqueid']=_0x8b377d[_0x77da('0x43')]['id'];}else{_0x353be9['id']=_0x8b377d[_0x77da('0x43')]['id'];}return db[_0x77da('0x2a')][_0x77da('0x46')]({'where':_0x353be9,'attributes':['id',_0x77da('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x3a78d2,null))['then'](function(_0x365e91){if(_0x365e91){var _0x36f161=path['join'](config[_0x77da('0x50')],_0x77da('0x51'),_0x365e91[_0x77da('0x4b')]);var _0x4b1515=util[_0x77da('0x30')](_0x77da('0x52'),_0x36f161);if(fs['existsSync'](_0x4b1515)){_0x1a7115=!![];return _0x17ed71[_0x77da('0x53')](_0x4b1515,_0x36f161,config[_0x77da('0x54')][_0x77da('0x55')])[_0x77da('0x21')](function(){return _0x365e91;});}return _0x365e91;}})[_0x77da('0x21')](function(_0x99ac27){if(_0x99ac27){var _0x1dc4ab=path[_0x77da('0x56')](config[_0x77da('0x50')],'server/files/screen_recordings',_0x99ac27[_0x77da('0x4b')]);if(!fs[_0x77da('0x57')](_0x1dc4ab)){throw new db[(_0x77da('0x58'))][(_0x77da('0x59'))](_0x77da('0x5a'));}if(_0x99ac27[_0x77da('0x5b')]){return _0x3a78d2['download'](_0x1dc4ab,_0x99ac27[_0x77da('0x5b')]+path[_0x77da('0x5c')](_0x1dc4ab),function(){if(_0x1a7115){fs[_0x77da('0x5d')](_0x1dc4ab);}});}else{return _0x3a78d2['download'](_0x1dc4ab,function(_0x3e5dd9){if(_0x1a7115){fs[_0x77da('0x5d')](_0x1dc4ab);}});}}})[_0x77da('0x4c')](function(_0x8592c7){if(_0x8592c7[_0x77da('0x5e')]===_0x77da('0x5a')){_0x3a78d2[_0x77da('0x18')](0x194)['send'](_0x77da('0x5f'));}else{return handleError(_0x3a78d2,null);}});};exports['destroy']=function(_0x211310,_0x1922ab){return db[_0x77da('0x2a')]['find']({'where':{'id':_0x211310[_0x77da('0x43')]['id']}})[_0x77da('0x21')](function(_0x282481){if(_[_0x77da('0x60')](_0x282481)){throw new ReferenceError('Entity\x20not\x20found');}return _0x282481;})['then'](function(_0x571b1b){var _0x6b74fd=path[_0x77da('0x56')](config[_0x77da('0x50')],_0x77da('0x51'),_0x571b1b[_0x77da('0x4b')]);logger[_0x77da('0x61')](_0x77da('0x62'),_0x6b74fd);if(!_[_0x77da('0x60')](_0x571b1b[_0x77da('0x4b')])&&fs[_0x77da('0x57')](_0x6b74fd)){logger['info'](_0x77da('0x63')+_0x6b74fd+_0x77da('0x64'));fs['unlinkSync'](_0x6b74fd);}_0x6b74fd=_0x6b74fd+'.cypher';if(!_[_0x77da('0x60')](_0x571b1b['value'])&&fs[_0x77da('0x57')](_0x6b74fd)){logger[_0x77da('0x61')](_0x77da('0x63')+_0x6b74fd+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x77da('0x65')](_0x6b74fd);}return _0x571b1b;})[_0x77da('0x21')](function(_0x27fc45){if(!_0x27fc45)throw new InternalError();return _0x27fc45[_0x77da('0x22')]();})[_0x77da('0x21')](function(){_0x1922ab['status'](0xcc)[_0x77da('0x23')]();})[_0x77da('0x4c')](handleError(_0x1922ab,null));};
\ No newline at end of file
+var _0x2d17=['apply','then','error','name','index','map','rawAttributes','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ScreenRecording','count','includeAll','include','findAll','catch','show','find','create','body','update','duration','closedAt','value','params','describe','../../components/encryptor','uniqueid','join','root','%s.cypher','existsSync','decryptFile','secrets','recording','server/files/screen_recordings','Sequelize','ValidationError','filename','download','extname','unlink','Not\x20found','destroy','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','limit','set','Content-Range'];(function(_0x40d69d,_0x15f1ed){var _0x549d57=function(_0x21cae0){while(--_0x21cae0){_0x40d69d['push'](_0x40d69d['shift']());}};_0x549d57(++_0x15f1ed);}(_0x2d17,0x17e));var _0x72d1=function(_0x481051,_0x24ad5e){_0x481051=_0x481051-0x0;var _0x14615c=_0x2d17[_0x481051];return _0x14615c;};'use strict';var emlformat=require(_0x72d1('0x0'));var rimraf=require(_0x72d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x72d1('0x2'));var rp=require(_0x72d1('0x3'));var moment=require('moment');var BPromise=require(_0x72d1('0x4'));var Mustache=require(_0x72d1('0x5'));var util=require('util');var path=require(_0x72d1('0x6'));var sox=require('sox');var csv=require(_0x72d1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x72d1('0x8'));var _=require(_0x72d1('0x9'));var squel=require('squel');var crypto=require(_0x72d1('0xa'));var jsforce=require(_0x72d1('0xb'));var deskjs=require(_0x72d1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x72d1('0xd'));var Papa=require(_0x72d1('0xe'));var Redis=require(_0x72d1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x72d1('0x10'));var as=require(_0x72d1('0x11'));var hardwareService=require(_0x72d1('0x12'));var logger=require(_0x72d1('0x13'))(_0x72d1('0x14'));var utils=require(_0x72d1('0x15'));var config=require(_0x72d1('0x16'));var licenseUtil=require(_0x72d1('0x17'));var db=require(_0x72d1('0x18'))['db'];function respondWithStatusCode(_0x2f5a78,_0x5ad4df){_0x5ad4df=_0x5ad4df||0xcc;return function(_0x3cd1ae){if(_0x3cd1ae){return _0x2f5a78[_0x72d1('0x19')](_0x5ad4df);}return _0x2f5a78[_0x72d1('0x1a')](_0x5ad4df)[_0x72d1('0x1b')]();};}function respondWithResult(_0x22ac6f,_0x685a27){_0x685a27=_0x685a27||0xc8;return function(_0x143718){if(_0x143718){return _0x22ac6f[_0x72d1('0x1a')](_0x685a27)[_0x72d1('0x1c')](_0x143718);}};}function respondWithFilteredResult(_0x3f190f,_0x21c85e){return function(_0x23a238){if(_0x23a238){var _0x8d458=typeof _0x21c85e['offset']===_0x72d1('0x1d')&&typeof _0x21c85e['limit']===_0x72d1('0x1d');var _0x2c9851=_0x23a238['count'];var _0x1061b7=_0x8d458?0x0:_0x21c85e[_0x72d1('0x1e')];var _0x1ca18d=_0x8d458?_0x23a238['count']:_0x21c85e['offset']+_0x21c85e[_0x72d1('0x1f')];var _0x10d464;if(_0x1ca18d>=_0x2c9851){_0x1ca18d=_0x2c9851;_0x10d464=0xc8;}else{_0x10d464=0xce;}_0x3f190f[_0x72d1('0x1a')](_0x10d464);return _0x3f190f[_0x72d1('0x20')](_0x72d1('0x21'),_0x1061b7+'-'+_0x1ca18d+'/'+_0x2c9851)[_0x72d1('0x1c')](_0x23a238);}return null;};}function patchUpdates(_0x1e2411){return function(_0x5c7982){try{jsonpatch[_0x72d1('0x22')](_0x5c7982,_0x1e2411,!![]);}catch(_0x56e8d3){return BPromise['reject'](_0x56e8d3);}return _0x5c7982['save']();};}function saveUpdates(_0x585243,_0x445985){return function(_0x374602){if(_0x374602){return _0x374602['update'](_0x585243)[_0x72d1('0x23')](function(_0x256dc1){return _0x256dc1;});}return null;};}function removeEntity(_0x492086,_0x1431ee){return function(_0x26fa35){if(_0x26fa35){return _0x26fa35['destroy']()['then'](function(){_0x492086[_0x72d1('0x1a')](0xcc)[_0x72d1('0x1b')]();});}};}function handleEntityNotFound(_0x2f661,_0x2f879f){return function(_0xdf6a69){if(!_0xdf6a69){_0x2f661[_0x72d1('0x19')](0x194);}return _0xdf6a69;};}function handleError(_0x163bec,_0x589f7c){_0x589f7c=_0x589f7c||0x1f4;return function(_0x57ec9e){logger[_0x72d1('0x24')](_0x57ec9e['stack']);if(_0x57ec9e[_0x72d1('0x25')]){delete _0x57ec9e[_0x72d1('0x25')];}_0x163bec[_0x72d1('0x1a')](_0x589f7c)['send'](_0x57ec9e);};}exports[_0x72d1('0x26')]=function(_0x4c4c41,_0x707cd0){var _0x20055f={},_0x32588f={},_0x2cc0c8={'count':0x0,'rows':[]};var _0x51242b=_[_0x72d1('0x27')](db['ScreenRecording'][_0x72d1('0x28')],function(_0x32dc5e){return{'name':_0x32dc5e['fieldName'],'type':_0x32dc5e[_0x72d1('0x29')][_0x72d1('0x2a')]};});_0x32588f[_0x72d1('0x2b')]=_[_0x72d1('0x2c')](_[_0x72d1('0x27')](_0x51242b,'name'),[_0x72d1('0x2d')]);_0x32588f[_0x72d1('0x2e')]=_[_0x72d1('0x2f')](_0x4c4c41['query']);_0x32588f[_0x72d1('0x30')]=_[_0x72d1('0x31')](_0x32588f['model'],_0x32588f[_0x72d1('0x2e')]);_0x20055f[_0x72d1('0x32')]=_[_0x72d1('0x31')](_0x32588f['model'],qs[_0x72d1('0x33')](_0x4c4c41['query'][_0x72d1('0x33')]));_0x20055f[_0x72d1('0x32')]=_0x20055f[_0x72d1('0x32')][_0x72d1('0x34')]?_0x20055f[_0x72d1('0x32')]:_0x32588f[_0x72d1('0x2b')];if(!_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x35')](_0x72d1('0x36'))){_0x20055f[_0x72d1('0x1f')]=qs[_0x72d1('0x1f')](_0x4c4c41['query'][_0x72d1('0x1f')]);_0x20055f[_0x72d1('0x1e')]=qs[_0x72d1('0x1e')](_0x4c4c41[_0x72d1('0x2e')]['offset']);}_0x20055f[_0x72d1('0x37')]=qs[_0x72d1('0x38')](_0x4c4c41[_0x72d1('0x2e')]['sort']);_0x20055f[_0x72d1('0x39')]=qs[_0x72d1('0x30')](_[_0x72d1('0x3a')](_0x4c4c41['query'],_0x32588f[_0x72d1('0x30')]),_0x51242b);if(_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x3b')]){_0x20055f['where']=_[_0x72d1('0x3c')](_0x20055f[_0x72d1('0x39')],{'$or':_[_0x72d1('0x27')](_0x51242b,function(_0x14cb3d){if(_0x14cb3d[_0x72d1('0x29')]!==_0x72d1('0x3d')){var _0xd7ec0f={};_0xd7ec0f[_0x14cb3d['name']]={'$like':'%'+_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x3b')]+'%'};return _0xd7ec0f;}})});}_0x20055f=_[_0x72d1('0x3c')]({},_0x20055f,_0x4c4c41[_0x72d1('0x3e')]);var _0x20fb2f={'where':_0x20055f[_0x72d1('0x39')]};return db[_0x72d1('0x3f')][_0x72d1('0x40')](_0x20fb2f)['then'](function(_0x44d5b2){_0x2cc0c8[_0x72d1('0x40')]=_0x44d5b2;if(_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x41')]){_0x20055f[_0x72d1('0x42')]=[{'all':!![]}];}return db[_0x72d1('0x3f')][_0x72d1('0x43')](_0x20055f);})[_0x72d1('0x23')](function(_0x5620f0){_0x2cc0c8['rows']=_0x5620f0;return _0x2cc0c8;})[_0x72d1('0x23')](respondWithFilteredResult(_0x707cd0,_0x20055f))[_0x72d1('0x44')](handleError(_0x707cd0,null));};exports[_0x72d1('0x45')]=function(_0x21d361,_0x5a6bc4){var _0x3fe286={'raw':![],'where':{'id':_0x21d361['params']['id']}},_0x3e80e0={};_0x3e80e0[_0x72d1('0x2b')]=_['keys'](db[_0x72d1('0x3f')][_0x72d1('0x28')]);_0x3e80e0['query']=_[_0x72d1('0x2f')](_0x21d361['query']);_0x3e80e0['filters']=_['intersection'](_0x3e80e0[_0x72d1('0x2b')],_0x3e80e0['query']);_0x3fe286[_0x72d1('0x32')]=_[_0x72d1('0x31')](_0x3e80e0[_0x72d1('0x2b')],qs['fields'](_0x21d361['query'][_0x72d1('0x33')]));_0x3fe286['attributes']=_0x3fe286['attributes'][_0x72d1('0x34')]?_0x3fe286[_0x72d1('0x32')]:_0x3e80e0[_0x72d1('0x2b')];if(_0x21d361['query']['includeAll']){_0x3fe286['include']=[{'all':!![]}];}_0x3fe286=_['merge']({},_0x3fe286,_0x21d361[_0x72d1('0x3e')]);return db[_0x72d1('0x3f')][_0x72d1('0x46')](_0x3fe286)[_0x72d1('0x23')](handleEntityNotFound(_0x5a6bc4,null))[_0x72d1('0x23')](respondWithResult(_0x5a6bc4,null))[_0x72d1('0x44')](handleError(_0x5a6bc4,null));};exports[_0x72d1('0x47')]=function(_0x5924c,_0x1e2c11){return db['ScreenRecording'][_0x72d1('0x47')](_0x5924c[_0x72d1('0x48')],{})[_0x72d1('0x23')](respondWithResult(_0x1e2c11,0xc9))['catch'](handleError(_0x1e2c11,null));};exports[_0x72d1('0x49')]=function(_0x29c88f,_0x12ad75){if(_0x29c88f['body']['id']){delete _0x29c88f[_0x72d1('0x48')]['id'];}delete _0x29c88f[_0x72d1('0x48')][_0x72d1('0x4a')];delete _0x29c88f[_0x72d1('0x48')]['createdAt'];delete _0x29c88f['body'][_0x72d1('0x4b')];delete _0x29c88f[_0x72d1('0x48')][_0x72d1('0x4c')];return db['ScreenRecording'][_0x72d1('0x46')]({'where':{'id':_0x29c88f[_0x72d1('0x4d')]['id']}})[_0x72d1('0x23')](handleEntityNotFound(_0x12ad75,null))[_0x72d1('0x23')](saveUpdates(_0x29c88f[_0x72d1('0x48')],null))[_0x72d1('0x23')](respondWithResult(_0x12ad75,null))[_0x72d1('0x44')](handleError(_0x12ad75,null));};exports[_0x72d1('0x4e')]=function(_0x12870c,_0x18f986){return db[_0x72d1('0x3f')]['describe']()[_0x72d1('0x23')](respondWithResult(_0x18f986,null))['catch'](handleError(_0x18f986,null));};exports['download']=function(_0x356196,_0x5f2bba,_0x3c880e){var _0x7e401b=require(_0x72d1('0x4f'));var _0x162248=![];var _0x473a7b={};if(_0x356196[_0x72d1('0x2e')][_0x72d1('0x29')]&&_0x356196[_0x72d1('0x2e')][_0x72d1('0x29')]===_0x72d1('0x50')){_0x473a7b[_0x72d1('0x50')]=_0x356196['params']['id'];}else{_0x473a7b['id']=_0x356196[_0x72d1('0x4d')]['id'];}return db[_0x72d1('0x3f')][_0x72d1('0x46')]({'where':_0x473a7b,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x5f2bba,null))[_0x72d1('0x23')](function(_0x140f0b){if(_0x140f0b){var _0x16e9e7=path[_0x72d1('0x51')](config[_0x72d1('0x52')],'server/files/screen_recordings',_0x140f0b[_0x72d1('0x4c')]);var _0x48f4a7=util[_0x72d1('0x2d')](_0x72d1('0x53'),_0x16e9e7);if(fs[_0x72d1('0x54')](_0x48f4a7)){_0x162248=!![];return _0x7e401b[_0x72d1('0x55')](_0x48f4a7,_0x16e9e7,config[_0x72d1('0x56')][_0x72d1('0x57')])[_0x72d1('0x23')](function(){return _0x140f0b;});}return _0x140f0b;}})[_0x72d1('0x23')](function(_0x384f0a){if(_0x384f0a){var _0x3a2dfe=path[_0x72d1('0x51')](config[_0x72d1('0x52')],_0x72d1('0x58'),_0x384f0a[_0x72d1('0x4c')]);if(!fs[_0x72d1('0x54')](_0x3a2dfe)){throw new db[(_0x72d1('0x59'))][(_0x72d1('0x5a'))]('ScreenRecording\x20not\x20found');}if(_0x384f0a[_0x72d1('0x5b')]){return _0x5f2bba[_0x72d1('0x5c')](_0x3a2dfe,_0x384f0a[_0x72d1('0x5b')]+path[_0x72d1('0x5d')](_0x3a2dfe),function(){if(_0x162248){fs[_0x72d1('0x5e')](_0x3a2dfe);}});}else{return _0x5f2bba[_0x72d1('0x5c')](_0x3a2dfe,function(_0x4e2d85){if(_0x162248){fs[_0x72d1('0x5e')](_0x3a2dfe);}});}}})[_0x72d1('0x44')](function(_0xb05cd9){if(_0xb05cd9['message']==='ScreenRecording\x20not\x20found'){_0x5f2bba[_0x72d1('0x1a')](0x194)['send'](_0x72d1('0x5f'));}else{return handleError(_0x5f2bba,null);}});};exports[_0x72d1('0x60')]=function(_0x201810,_0x41525c){return db[_0x72d1('0x3f')][_0x72d1('0x46')]({'where':{'id':_0x201810[_0x72d1('0x4d')]['id']}})[_0x72d1('0x23')](function(_0x28e42b){if(_['isNil'](_0x28e42b)){throw new ReferenceError('Entity\x20not\x20found');}return _0x28e42b;})[_0x72d1('0x23')](function(_0x1d44f0){var _0x1bd80b=path['join'](config[_0x72d1('0x52')],_0x72d1('0x58'),_0x1d44f0['value']);logger[_0x72d1('0x61')](_0x72d1('0x62'),_0x1bd80b);if(!_[_0x72d1('0x63')](_0x1d44f0[_0x72d1('0x4c')])&&fs[_0x72d1('0x54')](_0x1bd80b)){logger[_0x72d1('0x61')](_0x72d1('0x64')+_0x1bd80b+_0x72d1('0x65'));fs[_0x72d1('0x66')](_0x1bd80b);}_0x1bd80b=_0x1bd80b+_0x72d1('0x67');if(!_[_0x72d1('0x63')](_0x1d44f0[_0x72d1('0x4c')])&&fs['existsSync'](_0x1bd80b)){logger['info'](_0x72d1('0x64')+_0x1bd80b+_0x72d1('0x65'));fs[_0x72d1('0x66')](_0x1bd80b);}return _0x1d44f0;})[_0x72d1('0x23')](function(_0x2ae8c9){if(!_0x2ae8c9)throw new InternalError();return _0x2ae8c9[_0x72d1('0x60')]();})[_0x72d1('0x23')](function(){_0x41525c[_0x72d1('0x1a')](0xcc)['end']();})[_0x72d1('0x44')](handleError(_0x41525c,null));};
\ No newline at end of file
index f5e1fb9..38df0fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e4=['exports','define','ScreenRecording','screen_recordings','interactionid','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x4d9bb2,_0x3db50d){var _0x3179fe=function(_0x5272f3){while(--_0x5272f3){_0x4d9bb2['push'](_0x4d9bb2['shift']());}};_0x3179fe(++_0x3db50d);}(_0xf5e4,0x1f3));var _0x4f5e=function(_0x792e1b,_0x5c1d2f){_0x792e1b=_0x792e1b-0x0;var _0x484c83=_0xf5e4[_0x792e1b];return _0x484c83;};'use strict';var _=require('lodash');var util=require(_0x4f5e('0x0'));var logger=require(_0x4f5e('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4f5e('0x2'));var rp=require(_0x4f5e('0x3'));var fs=require('fs');var path=require(_0x4f5e('0x4'));var rimraf=require(_0x4f5e('0x5'));var config=require(_0x4f5e('0x6'));var attributes=require(_0x4f5e('0x7'));module[_0x4f5e('0x8')]=function(_0x2d4a14,_0x6a343d){return _0x2d4a14[_0x4f5e('0x9')](_0x4f5e('0xa'),attributes,{'tableName':_0x4f5e('0xb'),'paranoid':![],'indexes':[{'name':_0x4f5e('0xc'),'fields':[_0x4f5e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7498=['../../config/logger','api','path','rimraf','../../config/environment','./screenRecording.attributes','define','screen_recordings','interactionid','lodash','util'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0x7498,0x106));var _0x8749=function(_0xeebd89,_0x20ed91){_0xeebd89=_0xeebd89-0x0;var _0x34d63c=_0x7498[_0xeebd89];return _0x34d63c;};'use strict';var _=require(_0x8749('0x0'));var util=require(_0x8749('0x1'));var logger=require(_0x8749('0x2'))(_0x8749('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8749('0x4'));var rimraf=require(_0x8749('0x5'));var config=require(_0x8749('0x6'));var attributes=require(_0x8749('0x7'));module['exports']=function(_0xc90259,_0x7ce97a){return _0xc90259[_0x8749('0x8')]('ScreenRecording',attributes,{'tableName':_0x8749('0x9'),'paranoid':![],'indexes':[{'name':_0x8749('0xa'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index fc131f3..bccbc00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3084=['util','bluebird','randomstring','ioredis','../../config/logger','rpc','client','http','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x22cc04,_0x791e3){var _0x1f1800=function(_0x3f60e4){while(--_0x3f60e4){_0x22cc04['push'](_0x22cc04['shift']());}};_0x1f1800(++_0x791e3);}(_0x3084,0x7e));var _0x4308=function(_0x55454f,_0x910c5e){_0x55454f=_0x55454f-0x0;var _0x2c030a=_0x3084[_0x55454f];return _0x2c030a;};'use strict';var _=require('lodash');var util=require(_0x4308('0x0'));var moment=require('moment');var BPromise=require(_0x4308('0x1'));var rs=require(_0x4308('0x2'));var fs=require('fs');var Redis=require(_0x4308('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4308('0x4'))(_0x4308('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4308('0x6')][_0x4308('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x778742,_0x511378,_0xba1431){return new BPromise(function(_0xb20e5b,_0x1516c5){return client['request'](_0x778742,_0xba1431)[_0x4308('0x8')](function(_0x37bca7){logger[_0x4308('0x9')](_0x4308('0xa'),_0x511378,_0x4308('0xb'));logger[_0x4308('0xc')](_0x4308('0xd'),_0x511378,_0x4308('0xb'),JSON[_0x4308('0xe')](_0x37bca7));if(_0x37bca7[_0x4308('0xf')]){if(_0x37bca7[_0x4308('0xf')]['code']===0x1f4){logger['error'](_0x4308('0xa'),_0x511378,_0x37bca7[_0x4308('0xf')]['message']);return _0x1516c5(_0x37bca7[_0x4308('0xf')][_0x4308('0x10')]);}logger['error']('ScreenRecording,\x20%s,\x20%s',_0x511378,_0x37bca7['error']['message']);return _0xb20e5b(_0x37bca7[_0x4308('0xf')][_0x4308('0x10')]);}else{logger[_0x4308('0x9')](_0x4308('0xa'),_0x511378,'request\x20sent');_0xb20e5b(_0x37bca7['result'][_0x4308('0x10')]);}})[_0x4308('0x11')](function(_0xd15db4){logger[_0x4308('0xf')](_0x4308('0xa'),_0x511378,_0xd15db4);_0x1516c5(_0xd15db4);});});}
\ No newline at end of file
+var _0xe332=['info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../config/logger','../../config/environment','http','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe332,0x186));var _0x2e33=function(_0x1c169a,_0x37a2fa){_0x1c169a=_0x1c169a-0x0;var _0x4be19d=_0xe332[_0x1c169a];return _0x4be19d;};'use strict';var _=require(_0x2e33('0x0'));var util=require(_0x2e33('0x1'));var moment=require(_0x2e33('0x2'));var BPromise=require('bluebird');var rs=require(_0x2e33('0x3'));var fs=require('fs');var Redis=require(_0x2e33('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2e33('0x5'))('rpc');var config=require(_0x2e33('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2e33('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4f5cec,_0x88dcd,_0xc9e737){return new BPromise(function(_0x558ce1,_0x30a0fc){return client[_0x2e33('0x8')](_0x4f5cec,_0xc9e737)['then'](function(_0x5b14ff){logger[_0x2e33('0x9')](_0x2e33('0xa'),_0x88dcd,'request\x20sent');logger[_0x2e33('0xb')](_0x2e33('0xc'),_0x88dcd,_0x2e33('0xd'),JSON[_0x2e33('0xe')](_0x5b14ff));if(_0x5b14ff[_0x2e33('0xf')]){if(_0x5b14ff[_0x2e33('0xf')][_0x2e33('0x10')]===0x1f4){logger['error'](_0x2e33('0xa'),_0x88dcd,_0x5b14ff[_0x2e33('0xf')][_0x2e33('0x11')]);return _0x30a0fc(_0x5b14ff[_0x2e33('0xf')][_0x2e33('0x11')]);}logger[_0x2e33('0xf')](_0x2e33('0xa'),_0x88dcd,_0x5b14ff['error']['message']);return _0x558ce1(_0x5b14ff[_0x2e33('0xf')]['message']);}else{logger[_0x2e33('0x9')](_0x2e33('0xa'),_0x88dcd,'request\x20sent');_0x558ce1(_0x5b14ff[_0x2e33('0x12')]['message']);}})['catch'](function(_0x517081){logger[_0x2e33('0xf')](_0x2e33('0xa'),_0x88dcd,_0x517081);_0x30a0fc(_0x517081);});});}
\ No newline at end of file
index 21385f6..ca815d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ee=['file','addLogoLogin','server/files/images/logos/','addPreferred','put','update','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./setting.controller','isAuthenticated','get','/now','/:id','/:id/logo','getLogo','/:id/logo_login','gdpr','/:id/preferred','/:id/favicon','getFavicon','diskStorage','join','format','%s%s','logo','extname','originalname','post','single','addLogo','root','logologin'];(function(_0x590999,_0x33b319){var _0x3016a9=function(_0x9c8835){while(--_0x9c8835){_0x590999['push'](_0x590999['shift']());}};_0x3016a9(++_0x33b319);}(_0xc9ee,0xc5));var _0xec9e=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0xc9ee[_0x237546];return _0x233e29;};'use strict';var multer=require('multer');var util=require(_0xec9e('0x0'));var path=require(_0xec9e('0x1'));var timeout=require(_0xec9e('0x2'));var express=require(_0xec9e('0x3'));var router=express[_0xec9e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xec9e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xec9e('0x6'));var controller=require(_0xec9e('0x7'));router['get']('/',auth[_0xec9e('0x8')](),controller['index']);router[_0xec9e('0x9')](_0xec9e('0xa'),controller['getDate']);router['get'](_0xec9e('0xb'),controller['show']);router[_0xec9e('0x9')](_0xec9e('0xc'),controller[_0xec9e('0xd')]);router['get'](_0xec9e('0xe'),controller['getLogoLogin']);router[_0xec9e('0x9')]('/:id/gdpr',controller[_0xec9e('0xf')]);router[_0xec9e('0x9')](_0xec9e('0x10'),controller['getPreferred']);router[_0xec9e('0x9')](_0xec9e('0x11'),controller[_0xec9e('0x12')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0x43672d,_0x2b1416,_0x3168d4){_0x3168d4(null,path[_0xec9e('0x14')](config['root'],'server/files/images/logos/'));},'filename':function(_0x4d85ff,_0x2c6f4b,_0x3126a9){_0x3126a9(null,util[_0xec9e('0x15')](_0xec9e('0x16'),_0xec9e('0x17'),path[_0xec9e('0x18')](_0x2c6f4b[_0xec9e('0x19')])));}})});router[_0xec9e('0x1a')]('/:id/logo',upload[_0xec9e('0x1b')]('file'),controller[_0xec9e('0x1c')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0xf38bf6,_0xed9ec5,_0x587f64){_0x587f64(null,path[_0xec9e('0x14')](config[_0xec9e('0x1d')],'server/files/images/logos/'));},'filename':function(_0x2c540e,_0x3e6d19,_0x35adfc){_0x35adfc(null,util[_0xec9e('0x15')]('%s%s',_0xec9e('0x1e'),path['extname'](_0x3e6d19[_0xec9e('0x19')])));}})});router[_0xec9e('0x1a')](_0xec9e('0xe'),upload[_0xec9e('0x1b')](_0xec9e('0x1f')),controller[_0xec9e('0x20')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0x47c6d5,_0x22ee24,_0x340a96){_0x340a96(null,path[_0xec9e('0x14')](config[_0xec9e('0x1d')],_0xec9e('0x21')));},'filename':function(_0x1fa902,_0x501204,_0x4a9104){_0x4a9104(null,util[_0xec9e('0x15')](_0xec9e('0x16'),'preferred',path[_0xec9e('0x18')](_0x501204['originalname'])));}})});router[_0xec9e('0x1a')](_0xec9e('0x10'),upload[_0xec9e('0x1b')](_0xec9e('0x1f')),controller[_0xec9e('0x22')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0x3085e1,_0x6f4331,_0x2b5c5c){_0x2b5c5c(null,path['join'](config[_0xec9e('0x1d')],_0xec9e('0x21')));},'filename':function(_0x3b914e,_0x16f62e,_0x278e4e){_0x278e4e(null,util['format'](_0xec9e('0x16'),'favicon',path['extname'](_0x16f62e[_0xec9e('0x19')])));}})});router[_0xec9e('0x1a')](_0xec9e('0x11'),upload['single'](_0xec9e('0x1f')),controller['addFavicon']);router[_0xec9e('0x23')](_0xec9e('0xb'),auth[_0xec9e('0x8')](),controller[_0xec9e('0x24')]);module[_0xec9e('0x25')]=router;
\ No newline at end of file
+var _0x4ee5=['extname','post','preferred','addPreferred','favicon','addFavicon','update','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/preferred','getFavicon','join','server/files/images/logos/','format','%s%s','logo','originalname','single','file','addLogo','diskStorage','root','logologin'];(function(_0x108732,_0x15221a){var _0x5e29d8=function(_0x1b7b3f){while(--_0x1b7b3f){_0x108732['push'](_0x108732['shift']());}};_0x5e29d8(++_0x15221a);}(_0x4ee5,0xd4));var _0x54ee=function(_0x17c682,_0x558a53){_0x17c682=_0x17c682-0x0;var _0x6e55b1=_0x4ee5[_0x17c682];return _0x6e55b1;};'use strict';var multer=require(_0x54ee('0x0'));var util=require('util');var path=require(_0x54ee('0x1'));var timeout=require(_0x54ee('0x2'));var express=require('express');var router=express[_0x54ee('0x3')]();var fs_extra=require(_0x54ee('0x4'));var auth=require(_0x54ee('0x5'));var interaction=require(_0x54ee('0x6'));var config=require(_0x54ee('0x7'));var controller=require(_0x54ee('0x8'));router[_0x54ee('0x9')]('/',auth[_0x54ee('0xa')](),controller[_0x54ee('0xb')]);router['get'](_0x54ee('0xc'),controller[_0x54ee('0xd')]);router[_0x54ee('0x9')](_0x54ee('0xe'),controller[_0x54ee('0xf')]);router[_0x54ee('0x9')](_0x54ee('0x10'),controller[_0x54ee('0x11')]);router[_0x54ee('0x9')](_0x54ee('0x12'),controller[_0x54ee('0x13')]);router[_0x54ee('0x9')]('/:id/gdpr',controller['gdpr']);router[_0x54ee('0x9')](_0x54ee('0x14'),controller['getPreferred']);router['get']('/:id/favicon',controller[_0x54ee('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x45f5b8,_0x5e96da,_0x25060b){_0x25060b(null,path[_0x54ee('0x16')](config['root'],_0x54ee('0x17')));},'filename':function(_0x41fc5e,_0x3d2c27,_0x4b0472){_0x4b0472(null,util[_0x54ee('0x18')](_0x54ee('0x19'),_0x54ee('0x1a'),path['extname'](_0x3d2c27[_0x54ee('0x1b')])));}})});router['post']('/:id/logo',upload[_0x54ee('0x1c')](_0x54ee('0x1d')),controller[_0x54ee('0x1e')]);var upload=multer({'storage':multer[_0x54ee('0x1f')]({'destination':function(_0x102f5e,_0x196541,_0x17efec){_0x17efec(null,path['join'](config[_0x54ee('0x20')],_0x54ee('0x17')));},'filename':function(_0x238752,_0x25c834,_0x191ef7){_0x191ef7(null,util[_0x54ee('0x18')](_0x54ee('0x19'),_0x54ee('0x21'),path[_0x54ee('0x22')](_0x25c834[_0x54ee('0x1b')])));}})});router[_0x54ee('0x23')](_0x54ee('0x12'),upload['single']('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x54ee('0x1f')]({'destination':function(_0x4dd225,_0x3d61ac,_0x53d0f3){_0x53d0f3(null,path[_0x54ee('0x16')](config['root'],'server/files/images/logos/'));},'filename':function(_0x36da37,_0x5db4e1,_0x5e2b71){_0x5e2b71(null,util[_0x54ee('0x18')](_0x54ee('0x19'),_0x54ee('0x24'),path[_0x54ee('0x22')](_0x5db4e1[_0x54ee('0x1b')])));}})});router[_0x54ee('0x23')](_0x54ee('0x14'),upload[_0x54ee('0x1c')]('file'),controller[_0x54ee('0x25')]);var upload=multer({'storage':multer[_0x54ee('0x1f')]({'destination':function(_0x5cbeb7,_0x4f7228,_0x175a31){_0x175a31(null,path['join'](config[_0x54ee('0x20')],_0x54ee('0x17')));},'filename':function(_0x49e450,_0x596b6e,_0x4c51b6){_0x4c51b6(null,util['format'](_0x54ee('0x19'),_0x54ee('0x26'),path[_0x54ee('0x22')](_0x596b6e[_0x54ee('0x1b')])));}})});router['post']('/:id/favicon',upload[_0x54ee('0x1c')]('file'),controller[_0x54ee('0x27')]);router['put'](_0x54ee('0xe'),auth[_0x54ee('0xa')](),controller[_0x54ee('0x28')]);module['exports']=router;
\ No newline at end of file
index 1ecfedb..1a24e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','sequelize','exports','INTEGER','min_internal'];(function(_0x124fa9,_0x312842){var _0x48b724=function(_0x8c5bc4){while(--_0x8c5bc4){_0x124fa9['push'](_0x124fa9['shift']());}};_0x48b724(++_0x312842);}(_0x2ef3,0xba));var _0x32ef=function(_0x6dae0c,_0x34f4d7){_0x6dae0c=_0x6dae0c-0x0;var _0x1f714f=_0x2ef3[_0x6dae0c];return _0x1f714f;};'use strict';var Sequelize=require(_0x32ef('0x0'));module[_0x32ef('0x1')]={'min_internal':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x6')},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x32ef('0x5')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnusername':{'type':Sequelize[_0x32ef('0x5')]},'turnpassword':{'type':Sequelize[_0x32ef('0x5')]},'pageTitle':{'type':Sequelize[_0x32ef('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x8')},'enableEmailPreview':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x32ef('0x5')]},'defaultFavicon':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x32ef('0x2')]},'transcribeRegion':{'type':Sequelize[_0x32ef('0x5')]},'sentiment':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize[_0x32ef('0x5')]},'language':{'type':Sequelize[_0x32ef('0x5')]},'bucket':{'type':Sequelize[_0x32ef('0x5')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x32ef('0x2')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5f2f=['INTEGER','min_internal','min_mailbox','STRING','BOOLEAN','alternate','UNSIGNED','sequelize','exports'];(function(_0x4296c1,_0x13bcf3){var _0x36ed7e=function(_0x196d6d){while(--_0x196d6d){_0x4296c1['push'](_0x4296c1['shift']());}};_0x36ed7e(++_0x13bcf3);}(_0x5f2f,0x73));var _0xf5f2=function(_0x465702,_0x4a4bda){_0x465702=_0x465702-0x0;var _0x336ddf=_0x5f2f[_0x465702];return _0x336ddf;};'use strict';var Sequelize=require(_0xf5f2('0x0'));module[_0xf5f2('0x1')]={'min_internal':{'type':Sequelize[_0xf5f2('0x2')](0xb),'unique':_0xf5f2('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0xf5f2('0x2')](0xb),'unique':_0xf5f2('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0xf5f2('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0xf5f2('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0xf5f2('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0xf5f2('0x5')]},'turnaddr':{'type':Sequelize[_0xf5f2('0x5')]},'turnusername':{'type':Sequelize[_0xf5f2('0x5')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0xf5f2('0x5')]},'defaultPageTitle':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':_0xf5f2('0x7')},'chatTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0xf5f2('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize['STRING']},'defaultFavicon':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0xf5f2('0x2')]},'transcribeRegion':{'type':Sequelize[_0xf5f2('0x5')]},'sentiment':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0xf5f2('0x2')]},'sentimentRegion':{'type':Sequelize[_0xf5f2('0x5')]},'language':{'type':Sequelize[_0xf5f2('0x5')]},'bucket':{'type':Sequelize[_0xf5f2('0x5')]},'googleSsoEnabled':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0xf5f2('0x2')](0x2)[_0xf5f2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0xf5f2('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0xf5f2('0x2')](0x2)[_0xf5f2('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 6b23fa1..b27b8df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5ad=['logo','filename','loginLogo','getLogo','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','root','toLower','join','default_logo.svg','default','upperFirst','existsSync','Sequelize','ValidationError','\x20not\x20found','server/files/images/logos','custom','default_loginLogo.svg','download','gdpr','securePassword','addPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','name','Setting','fieldName','type','map','query','keys','intersection','model','fields','length','attributes','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','rawAttributes','find','body','addLogo','file'];(function(_0x19b4aa,_0x3353be){var _0x40479e=function(_0xba7e20){while(--_0xba7e20){_0x19b4aa['push'](_0x19b4aa['shift']());}};_0x40479e(++_0x3353be);}(_0xa5ad,0xa3));var _0xda5a=function(_0x4f4a2e,_0x2d1c33){_0x4f4a2e=_0x4f4a2e-0x0;var _0x135abc=_0xa5ad[_0x4f4a2e];return _0x135abc;};'use strict';var emlformat=require(_0xda5a('0x0'));var rimraf=require(_0xda5a('0x1'));var zipdir=require(_0xda5a('0x2'));var jsonpatch=require(_0xda5a('0x3'));var rp=require(_0xda5a('0x4'));var moment=require(_0xda5a('0x5'));var BPromise=require(_0xda5a('0x6'));var Mustache=require(_0xda5a('0x7'));var util=require(_0xda5a('0x8'));var path=require(_0xda5a('0x9'));var sox=require(_0xda5a('0xa'));var csv=require(_0xda5a('0xb'));var ejs=require(_0xda5a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda5a('0xd'));var squel=require(_0xda5a('0xe'));var crypto=require(_0xda5a('0xf'));var jsforce=require(_0xda5a('0x10'));var deskjs=require(_0xda5a('0x11'));var toCsv=require('to-csv');var querystring=require(_0xda5a('0x12'));var Papa=require(_0xda5a('0x13'));var Redis=require(_0xda5a('0x14'));var authService=require(_0xda5a('0x15'));var qs=require(_0xda5a('0x16'));var as=require(_0xda5a('0x17'));var hardwareService=require(_0xda5a('0x18'));var logger=require(_0xda5a('0x19'))(_0xda5a('0x1a'));var utils=require(_0xda5a('0x1b'));var config=require(_0xda5a('0x1c'));var licenseUtil=require(_0xda5a('0x1d'));var db=require(_0xda5a('0x1e'))['db'];var jayson=require(_0xda5a('0x1f'));var client=jayson[_0xda5a('0x20')][_0xda5a('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x27a590,_0x56032f,_0x4f64ab,_0x244d00){return new BPromise(function(_0x2eeaeb,_0x4e7687){var _0x559578=_0x244d00||client;return _0x559578[_0xda5a('0x22')](_0x27a590,_0x4f64ab)[_0xda5a('0x23')](function(_0x6b9805){logger['info'](_0xda5a('0x24'),_0x56032f,_0xda5a('0x25'));logger[_0xda5a('0x26')](_0xda5a('0x27'),_0x56032f,_0xda5a('0x25'),JSON[_0xda5a('0x28')](_0x6b9805));if(_0x6b9805[_0xda5a('0x29')]){if(_0x6b9805[_0xda5a('0x29')][_0xda5a('0x2a')]===0x1f4){logger[_0xda5a('0x29')]('Setting,\x20%s,\x20%s',_0x56032f,_0x6b9805[_0xda5a('0x29')]['message']);return _0x4e7687(_0x6b9805['error'][_0xda5a('0x2b')]);}logger[_0xda5a('0x29')]('Setting,\x20%s,\x20%s',_0x56032f,_0x6b9805[_0xda5a('0x29')][_0xda5a('0x2b')]);return _0x2eeaeb(_0x6b9805['error'][_0xda5a('0x2b')]);}else{logger['info'](_0xda5a('0x24'),_0x56032f,_0xda5a('0x25'));_0x2eeaeb(_0x6b9805[_0xda5a('0x2c')][_0xda5a('0x2b')]);}})[_0xda5a('0x2d')](function(_0x3e96e5){logger[_0xda5a('0x29')](_0xda5a('0x24'),_0x56032f,_0x3e96e5);_0x4e7687(_0x3e96e5);});});}function respondWithStatusCode(_0x304bb3,_0x55baeb){_0x55baeb=_0x55baeb||0xcc;return function(_0x1d63af){if(_0x1d63af){return _0x304bb3[_0xda5a('0x2e')](_0x55baeb);}return _0x304bb3['status'](_0x55baeb)[_0xda5a('0x2f')]();};}function respondWithResult(_0x290be7,_0x318f8c){_0x318f8c=_0x318f8c||0xc8;return function(_0x45520b){if(_0x45520b){return _0x290be7[_0xda5a('0x30')](_0x318f8c)['json'](_0x45520b);}};}function respondWithFilteredResult(_0x3ea5b2,_0x3ac2f6){return function(_0x1f4d0f){if(_0x1f4d0f){var _0x18833e=typeof _0x3ac2f6[_0xda5a('0x31')]===_0xda5a('0x32')&&typeof _0x3ac2f6[_0xda5a('0x33')]===_0xda5a('0x32');var _0x2f9166=_0x1f4d0f[_0xda5a('0x34')];var _0x3dcd11=_0x18833e?0x0:_0x3ac2f6['offset'];var _0xe5dde9=_0x18833e?_0x1f4d0f[_0xda5a('0x34')]:_0x3ac2f6[_0xda5a('0x31')]+_0x3ac2f6[_0xda5a('0x33')];var _0x282ca6;if(_0xe5dde9>=_0x2f9166){_0xe5dde9=_0x2f9166;_0x282ca6=0xc8;}else{_0x282ca6=0xce;}_0x3ea5b2[_0xda5a('0x30')](_0x282ca6);return _0x3ea5b2[_0xda5a('0x35')](_0xda5a('0x36'),_0x3dcd11+'-'+_0xe5dde9+'/'+_0x2f9166)['json'](_0x1f4d0f);}return null;};}function patchUpdates(_0x30c1e4){return function(_0x321b18){try{jsonpatch[_0xda5a('0x37')](_0x321b18,_0x30c1e4,!![]);}catch(_0x3869f5){return BPromise[_0xda5a('0x38')](_0x3869f5);}return _0x321b18[_0xda5a('0x39')]();};}function saveUpdates(_0x150714,_0x264908){return function(_0x32dca1){if(_0x32dca1){return _0x32dca1[_0xda5a('0x3a')](_0x150714)['then'](function(_0xd063ce){return _0xd063ce;});}return null;};}function removeEntity(_0x557153,_0x3be5ae){return function(_0x13f5d9){if(_0x13f5d9){return _0x13f5d9[_0xda5a('0x3b')]()[_0xda5a('0x23')](function(){_0x557153[_0xda5a('0x30')](0xcc)[_0xda5a('0x2f')]();});}};}function handleEntityNotFound(_0x369043,_0x57faec){return function(_0x565690){if(!_0x565690){_0x369043[_0xda5a('0x2e')](0x194);}return _0x565690;};}function handleError(_0x5be618,_0x1082f5){_0x1082f5=_0x1082f5||0x1f4;return function(_0x125c9c){logger[_0xda5a('0x29')](_0x125c9c['stack']);if(_0x125c9c[_0xda5a('0x3c')]){delete _0x125c9c[_0xda5a('0x3c')];}_0x5be618[_0xda5a('0x30')](_0x1082f5)['send'](_0x125c9c);};}exports['index']=function(_0x4e0dc0,_0x556747){var _0x478068={},_0x35b0fa={},_0x53299e={'count':0x0,'rows':[]};var _0x3bfc14=_['map'](db[_0xda5a('0x3d')]['rawAttributes'],function(_0x2cf326){return{'name':_0x2cf326[_0xda5a('0x3e')],'type':_0x2cf326[_0xda5a('0x3f')]['key']};});_0x35b0fa['model']=_[_0xda5a('0x40')](_0x3bfc14,_0xda5a('0x3c'));_0x35b0fa[_0xda5a('0x41')]=_[_0xda5a('0x42')](_0x4e0dc0[_0xda5a('0x41')]);_0x35b0fa['filters']=_[_0xda5a('0x43')](_0x35b0fa[_0xda5a('0x44')],_0x35b0fa[_0xda5a('0x41')]);_0x478068['attributes']=_[_0xda5a('0x43')](_0x35b0fa[_0xda5a('0x44')],qs['fields'](_0x4e0dc0[_0xda5a('0x41')][_0xda5a('0x45')]));_0x478068['attributes']=_0x478068['attributes'][_0xda5a('0x46')]?_0x478068[_0xda5a('0x47')]:_0x35b0fa[_0xda5a('0x44')];if(!_0x4e0dc0[_0xda5a('0x41')]['hasOwnProperty'](_0xda5a('0x48'))){_0x478068[_0xda5a('0x33')]=qs[_0xda5a('0x33')](_0x4e0dc0[_0xda5a('0x41')]['limit']);_0x478068[_0xda5a('0x31')]=qs[_0xda5a('0x31')](_0x4e0dc0[_0xda5a('0x41')][_0xda5a('0x31')]);}_0x478068['order']=qs['sort'](_0x4e0dc0['query'][_0xda5a('0x49')]);_0x478068[_0xda5a('0x4a')]=qs[_0xda5a('0x4b')](_[_0xda5a('0x4c')](_0x4e0dc0[_0xda5a('0x41')],_0x35b0fa[_0xda5a('0x4b')]),_0x3bfc14);if(_0x4e0dc0['query'][_0xda5a('0x4d')]){_0x478068[_0xda5a('0x4a')]=_['merge'](_0x478068[_0xda5a('0x4a')],{'$or':_['map'](_0x3bfc14,function(_0x39f5b8){if(_0x39f5b8['type']!==_0xda5a('0x4e')){var _0x3cb5e4={};_0x3cb5e4[_0x39f5b8['name']]={'$like':'%'+_0x4e0dc0[_0xda5a('0x41')][_0xda5a('0x4d')]+'%'};return _0x3cb5e4;}})});}_0x478068=_[_0xda5a('0x4f')]({},_0x478068,_0x4e0dc0['options']);var _0x1396b1={'where':_0x478068[_0xda5a('0x4a')]};return db[_0xda5a('0x3d')][_0xda5a('0x34')](_0x1396b1)['then'](function(_0x5c6720){_0x53299e[_0xda5a('0x34')]=_0x5c6720;if(_0x4e0dc0['query'][_0xda5a('0x50')]){_0x478068[_0xda5a('0x51')]=[{'all':!![]}];}return db[_0xda5a('0x3d')][_0xda5a('0x52')](_0x478068);})['then'](function(_0x5aea88){_0x53299e[_0xda5a('0x53')]=_0x5aea88;return _0x53299e;})[_0xda5a('0x23')](respondWithFilteredResult(_0x556747,_0x478068))[_0xda5a('0x2d')](handleError(_0x556747,null));};exports[_0xda5a('0x54')]=function(_0x2a6c31,_0x5beb4c){var _0x1bf284={'raw':![],'where':{'id':_0x2a6c31[_0xda5a('0x55')]['id']}},_0x4c1ec3={};_0x4c1ec3[_0xda5a('0x44')]=_[_0xda5a('0x42')](db['Setting'][_0xda5a('0x56')]);_0x4c1ec3[_0xda5a('0x41')]=_[_0xda5a('0x42')](_0x2a6c31['query']);_0x4c1ec3[_0xda5a('0x4b')]=_['intersection'](_0x4c1ec3[_0xda5a('0x44')],_0x4c1ec3[_0xda5a('0x41')]);_0x1bf284[_0xda5a('0x47')]=_[_0xda5a('0x43')](_0x4c1ec3[_0xda5a('0x44')],qs[_0xda5a('0x45')](_0x2a6c31[_0xda5a('0x41')][_0xda5a('0x45')]));_0x1bf284[_0xda5a('0x47')]=_0x1bf284[_0xda5a('0x47')][_0xda5a('0x46')]?_0x1bf284['attributes']:_0x4c1ec3[_0xda5a('0x44')];if(_0x2a6c31[_0xda5a('0x41')][_0xda5a('0x50')]){_0x1bf284[_0xda5a('0x51')]=[{'all':!![]}];}_0x1bf284=_[_0xda5a('0x4f')]({},_0x1bf284,_0x2a6c31['options']);return db[_0xda5a('0x3d')][_0xda5a('0x57')](_0x1bf284)[_0xda5a('0x23')](handleEntityNotFound(_0x5beb4c,null))[_0xda5a('0x23')](respondWithResult(_0x5beb4c,null))[_0xda5a('0x2d')](handleError(_0x5beb4c,null));};exports[_0xda5a('0x3a')]=function(_0x5d0702,_0x429c0e){if(_0x5d0702['body']['id']){delete _0x5d0702[_0xda5a('0x58')]['id'];}return db['Setting'][_0xda5a('0x57')]({'where':{'id':_0x5d0702[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x429c0e,null))['then'](saveUpdates(_0x5d0702['body'],null))['then'](respondWithResult(_0x429c0e,null))[_0xda5a('0x2d')](handleError(_0x429c0e,null));};exports[_0xda5a('0x59')]=function(_0x1bd799,_0x5466e1,_0x576040){if(_0x1bd799[_0xda5a('0x5a')]&&_0x1bd799[_0xda5a('0x5a')]['filename']){_0x1bd799[_0xda5a('0x58')][_0xda5a('0x5b')]=_0x1bd799['file'][_0xda5a('0x5c')];}return db['Setting']['find']({'where':{'id':_0x1bd799[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x5466e1,null))['then'](saveUpdates(_0x1bd799[_0xda5a('0x58')],null))[_0xda5a('0x23')](respondWithResult(_0x5466e1,null))[_0xda5a('0x2d')](handleError(_0x5466e1,null));};exports['addLogoLogin']=function(_0x3a198f,_0x18f926,_0xbac19f){if(_0x3a198f[_0xda5a('0x5a')]&&_0x3a198f[_0xda5a('0x5a')]['filename']){_0x3a198f[_0xda5a('0x58')][_0xda5a('0x5d')]=_0x3a198f[_0xda5a('0x5a')][_0xda5a('0x5c')];}return db[_0xda5a('0x3d')][_0xda5a('0x57')]({'where':{'id':_0x3a198f[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x18f926,null))[_0xda5a('0x23')](saveUpdates(_0x3a198f[_0xda5a('0x58')],null))[_0xda5a('0x23')](respondWithResult(_0x18f926,null))['catch'](handleError(_0x18f926,null));};var utilLicense=require(_0xda5a('0x1d'));exports[_0xda5a('0x5e')]=function(_0x1994b1,_0x2f4587,_0x5535e7){var _0x17ee27='server/files/images/logos';var _0x5d464d={'custom':![]};return utilLicense[_0xda5a('0x5f')]()[_0xda5a('0x23')](function(_0x1a9e8d){if(_0x1a9e8d){_0x5d464d=_0x1a9e8d;}return db['Setting']['find']({'where':{'id':_0x1994b1[_0xda5a('0x55')]['id']},'attributes':[_0xda5a('0x5b'),_0xda5a('0x5d'),_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),_0xda5a('0x63'),_0xda5a('0x64'),_0xda5a('0x65')],'raw':!![]});})['then'](handleEntityNotFound(_0x2f4587,null))[_0xda5a('0x23')](function(_0x2c170c){if(_0x2c170c){var _0x47aee9=_0x2c170c[_0xda5a('0x5b')]&&fs['existsSync'](path['join'](config[_0xda5a('0x66')],_0x17ee27,_[_0xda5a('0x67')](_0x2c170c[_0xda5a('0x5b')])))?path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x17ee27,_[_0xda5a('0x67')](_0x2c170c['logo'])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x17ee27,_[_0xda5a('0x67')](_0xda5a('0x69')));var _0x1fbc70=_0xda5a('0x6a')+_[_0xda5a('0x6b')](_0xda5a('0x5b'));if(_0x2c170c[_0x1fbc70]||!_0x5d464d['custom']){_0x47aee9=path['join'](config['root'],_0x17ee27,_[_0xda5a('0x67')](_0xda5a('0x69')));}if(!fs[_0xda5a('0x6c')](_0x47aee9)){throw new db[(_0xda5a('0x6d'))][(_0xda5a('0x6e'))](_[_0xda5a('0x6b')](_0xda5a('0x5b'))+_0xda5a('0x6f'));}return _0x2f4587['download'](_0x47aee9);}})['catch'](handleError(_0x2f4587,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0x36dc95,_0x1d5073,_0xdb9c1d){var _0x48139b=_0xda5a('0x70');var _0x33ca86={'custom':![]};return utilLicense['getLicense']()[_0xda5a('0x23')](function(_0x4af708){if(_0x4af708){_0x33ca86=_0x4af708;}return db[_0xda5a('0x3d')]['find']({'where':{'id':_0x36dc95['params']['id']},'attributes':[_0xda5a('0x5b'),'loginLogo',_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),'defaultLoginLogo','defaultPreferred',_0xda5a('0x65')],'raw':!![]});})[_0xda5a('0x23')](handleEntityNotFound(_0x1d5073,null))[_0xda5a('0x23')](function(_0x6b8ae7){if(_0x6b8ae7){var _0xb27b61=_0x6b8ae7['loginLogo']&&fs[_0xda5a('0x6c')](path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x48139b,_[_0xda5a('0x67')](_0x6b8ae7[_0xda5a('0x5d')])))?path[_0xda5a('0x68')](config['root'],_0x48139b,_[_0xda5a('0x67')](_0x6b8ae7[_0xda5a('0x5d')])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x48139b,_[_0xda5a('0x67')]('default_loginLogo.svg'));var _0x4eb5b1=_0xda5a('0x6a')+_[_0xda5a('0x6b')]('loginLogo');if(_0x6b8ae7[_0x4eb5b1]||!_0x33ca86[_0xda5a('0x71')]){_0xb27b61=path['join'](config[_0xda5a('0x66')],_0x48139b,_[_0xda5a('0x67')](_0xda5a('0x72')));}if(!fs[_0xda5a('0x6c')](_0xb27b61)){throw new db[(_0xda5a('0x6d'))][(_0xda5a('0x6e'))](_[_0xda5a('0x6b')](_0xda5a('0x5d'))+_0xda5a('0x6f'));}return _0x1d5073[_0xda5a('0x73')](_0xb27b61);}})[_0xda5a('0x2d')](handleError(_0x1d5073,null));};exports[_0xda5a('0x74')]=function(_0x32a3ae,_0x4555cb){return db[_0xda5a('0x3d')][_0xda5a('0x57')]({'where':{'id':_0x32a3ae[_0xda5a('0x55')]['id']},'attributes':[_0xda5a('0x75')]})[_0xda5a('0x23')](respondWithResult(_0x4555cb,null))[_0xda5a('0x2d')](handleError(_0x4555cb,null));};exports[_0xda5a('0x76')]=function(_0x321fbd,_0x380d23,_0x3ad6ba){if(_0x321fbd['file']&&_0x321fbd[_0xda5a('0x5a')]['filename']){_0x321fbd[_0xda5a('0x58')][_0xda5a('0x60')]=_0x321fbd[_0xda5a('0x5a')][_0xda5a('0x5c')];}return db[_0xda5a('0x3d')]['find']({'where':{'id':_0x321fbd[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x380d23,null))[_0xda5a('0x23')](saveUpdates(_0x321fbd['body'],null))[_0xda5a('0x23')](respondWithResult(_0x380d23,null))[_0xda5a('0x2d')](handleError(_0x380d23,null));};var utilLicense=require(_0xda5a('0x1d'));exports['getPreferred']=function(_0x6b1908,_0xd7bb73,_0xd451e3){var _0x412724='server/files/images/logos';var _0x785465={'custom':![]};return utilLicense[_0xda5a('0x5f')]()[_0xda5a('0x23')](function(_0x2dd598){if(_0x2dd598){_0x785465=_0x2dd598;}return db[_0xda5a('0x3d')]['find']({'where':{'id':_0x6b1908[_0xda5a('0x55')]['id']},'attributes':[_0xda5a('0x5b'),'loginLogo',_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),_0xda5a('0x63'),_0xda5a('0x64'),_0xda5a('0x65')],'raw':!![]});})[_0xda5a('0x23')](handleEntityNotFound(_0xd7bb73,null))[_0xda5a('0x23')](function(_0x4cf3f6){if(_0x4cf3f6){var _0x10e964=_0x4cf3f6['preferred']&&fs[_0xda5a('0x6c')](path['join'](config[_0xda5a('0x66')],_0x412724,_['toLower'](_0x4cf3f6['preferred'])))?path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x412724,_[_0xda5a('0x67')](_0x4cf3f6[_0xda5a('0x60')])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x412724,_['toLower'](_0xda5a('0x77')));var _0x50ef8a=_0xda5a('0x6a')+_[_0xda5a('0x6b')](_0xda5a('0x60'));if(_0x4cf3f6[_0x50ef8a]||!_0x785465[_0xda5a('0x71')]||!_0x785465[_0xda5a('0x60')]){_0x10e964=path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x412724,_[_0xda5a('0x67')](_0xda5a('0x77')));}if(!fs[_0xda5a('0x6c')](_0x10e964)){throw new db[(_0xda5a('0x6d'))]['ValidationError'](_['upperFirst'](_0xda5a('0x60'))+_0xda5a('0x6f'));}return _0xd7bb73[_0xda5a('0x73')](_0x10e964);}})[_0xda5a('0x2d')](handleError(_0xd7bb73,null));};exports[_0xda5a('0x78')]=function(_0xfdd430,_0x10c78c,_0x8a1a49){if(_0xfdd430['file']&&_0xfdd430[_0xda5a('0x5a')]['filename']){_0xfdd430[_0xda5a('0x58')][_0xda5a('0x61')]=_0xfdd430[_0xda5a('0x5a')][_0xda5a('0x5c')];}return db['Setting'][_0xda5a('0x57')]({'where':{'id':_0xfdd430[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x10c78c,null))[_0xda5a('0x23')](saveUpdates(_0xfdd430[_0xda5a('0x58')],null))[_0xda5a('0x23')](respondWithResult(_0x10c78c,null))['catch'](handleError(_0x10c78c,null));};var utilLicense=require(_0xda5a('0x1d'));exports[_0xda5a('0x79')]=function(_0xef5e27,_0x361e53,_0x372b92){var _0x33b5e2='server/files/images/logos';var _0x513b3f={'custom':![]};return utilLicense['getLicense']()[_0xda5a('0x23')](function(_0x1e6649){if(_0x1e6649){_0x513b3f=_0x1e6649;}return db[_0xda5a('0x3d')][_0xda5a('0x57')]({'where':{'id':_0xef5e27[_0xda5a('0x55')]['id']},'attributes':['logo',_0xda5a('0x5d'),_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),_0xda5a('0x63'),'defaultPreferred',_0xda5a('0x65')],'raw':!![]});})[_0xda5a('0x23')](handleEntityNotFound(_0x361e53,null))['then'](function(_0x5f21d3){if(_0x5f21d3){var _0x39a6d9=_0x5f21d3['favicon']&&fs[_0xda5a('0x6c')](path['join'](config[_0xda5a('0x66')],_0x33b5e2,_[_0xda5a('0x67')](_0x5f21d3[_0xda5a('0x61')])))?path[_0xda5a('0x68')](config['root'],_0x33b5e2,_[_0xda5a('0x67')](_0x5f21d3['favicon'])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x33b5e2,_['toLower'](_0xda5a('0x7a')));var _0x5346a4=_0xda5a('0x6a')+_[_0xda5a('0x6b')](_0xda5a('0x61'));if(_0x5f21d3[_0x5346a4]||!_0x513b3f[_0xda5a('0x71')]){_0x39a6d9=path['join'](config['root'],_0x33b5e2,_[_0xda5a('0x67')]('default_favicon.ico'));}if(!fs[_0xda5a('0x6c')](_0x39a6d9)){throw new db[(_0xda5a('0x6d'))]['ValidationError'](_[_0xda5a('0x6b')]('favicon')+_0xda5a('0x6f'));}return _0x361e53['download'](_0x39a6d9);}})[_0xda5a('0x2d')](handleError(_0x361e53,null));};exports[_0xda5a('0x7b')]=function(_0x4f6afe,_0x4cb2d8){var _0x27b67d={'offset':moment()[_0xda5a('0x7c')]()};_0x27b67d['now']=moment()['utcOffset'](_0x27b67d['offset'])[_0xda5a('0x7d')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x4cb2d8[_0xda5a('0x30')](0xc8)[_0xda5a('0x7e')](_0x27b67d);};
\ No newline at end of file
+var _0x5d6c=['default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','send','eml-format','rimraf','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','save','update','then','stack','name','map','Setting','fieldName','type','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','body','addLogo','file','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','logo','preferred','defaultLogo','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default','custom','Sequelize','ValidationError','\x20not\x20found','download','favicon','default_loginLogo.svg','upperFirst','securePassword','addPreferred','defaultPreferred'];(function(_0x1bee7a,_0xacfa2a){var _0x5d69d7=function(_0x3b8891){while(--_0x3b8891){_0x1bee7a['push'](_0x1bee7a['shift']());}};_0x5d69d7(++_0xacfa2a);}(_0x5d6c,0xfc));var _0xc5d6=function(_0x35413e,_0x22adf2){_0x35413e=_0x35413e-0x0;var _0x289a36=_0x5d6c[_0x35413e];return _0x289a36;};'use strict';var emlformat=require(_0xc5d6('0x0'));var rimraf=require(_0xc5d6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc5d6('0x2'));var moment=require(_0xc5d6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc5d6('0x4'));var util=require(_0xc5d6('0x5'));var path=require('path');var sox=require(_0xc5d6('0x6'));var csv=require('to-csv');var ejs=require(_0xc5d6('0x7'));var fs=require('fs');var fs_extra=require(_0xc5d6('0x8'));var _=require(_0xc5d6('0x9'));var squel=require(_0xc5d6('0xa'));var crypto=require(_0xc5d6('0xb'));var jsforce=require(_0xc5d6('0xc'));var deskjs=require(_0xc5d6('0xd'));var toCsv=require(_0xc5d6('0xe'));var querystring=require(_0xc5d6('0xf'));var Papa=require(_0xc5d6('0x10'));var Redis=require('ioredis');var authService=require(_0xc5d6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc5d6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc5d6('0x13'))(_0xc5d6('0x14'));var utils=require('../../config/utils');var config=require(_0xc5d6('0x15'));var licenseUtil=require(_0xc5d6('0x16'));var db=require(_0xc5d6('0x17'))['db'];var jayson=require(_0xc5d6('0x18'));var client=jayson[_0xc5d6('0x19')][_0xc5d6('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x16350a,_0x269760,_0x305344,_0x5207ed){return new BPromise(function(_0x5d414c,_0x17fccb){var _0x44f943=_0x5207ed||client;return _0x44f943[_0xc5d6('0x1b')](_0x16350a,_0x305344)['then'](function(_0x2db421){logger[_0xc5d6('0x1c')](_0xc5d6('0x1d'),_0x269760,_0xc5d6('0x1e'));logger['debug'](_0xc5d6('0x1f'),_0x269760,_0xc5d6('0x1e'),JSON[_0xc5d6('0x20')](_0x2db421));if(_0x2db421['error']){if(_0x2db421[_0xc5d6('0x21')][_0xc5d6('0x22')]===0x1f4){logger[_0xc5d6('0x21')](_0xc5d6('0x1d'),_0x269760,_0x2db421['error']['message']);return _0x17fccb(_0x2db421['error'][_0xc5d6('0x23')]);}logger[_0xc5d6('0x21')](_0xc5d6('0x1d'),_0x269760,_0x2db421['error'][_0xc5d6('0x23')]);return _0x5d414c(_0x2db421['error'][_0xc5d6('0x23')]);}else{logger[_0xc5d6('0x1c')](_0xc5d6('0x1d'),_0x269760,_0xc5d6('0x1e'));_0x5d414c(_0x2db421[_0xc5d6('0x24')][_0xc5d6('0x23')]);}})[_0xc5d6('0x25')](function(_0x4db5aa){logger[_0xc5d6('0x21')](_0xc5d6('0x1d'),_0x269760,_0x4db5aa);_0x17fccb(_0x4db5aa);});});}function respondWithStatusCode(_0xff1f6a,_0x5c3d55){_0x5c3d55=_0x5c3d55||0xcc;return function(_0x32db3f){if(_0x32db3f){return _0xff1f6a['sendStatus'](_0x5c3d55);}return _0xff1f6a[_0xc5d6('0x26')](_0x5c3d55)[_0xc5d6('0x27')]();};}function respondWithResult(_0x1c08d8,_0x413e6f){_0x413e6f=_0x413e6f||0xc8;return function(_0x2235ea){if(_0x2235ea){return _0x1c08d8[_0xc5d6('0x26')](_0x413e6f)[_0xc5d6('0x28')](_0x2235ea);}};}function respondWithFilteredResult(_0x27d2bb,_0x15b4cf){return function(_0x64014a){if(_0x64014a){var _0x574982=typeof _0x15b4cf[_0xc5d6('0x29')]===_0xc5d6('0x2a')&&typeof _0x15b4cf['limit']===_0xc5d6('0x2a');var _0x4522bc=_0x64014a[_0xc5d6('0x2b')];var _0x1b59a7=_0x574982?0x0:_0x15b4cf['offset'];var _0x120906=_0x574982?_0x64014a[_0xc5d6('0x2b')]:_0x15b4cf[_0xc5d6('0x29')]+_0x15b4cf[_0xc5d6('0x2c')];var _0x56aae0;if(_0x120906>=_0x4522bc){_0x120906=_0x4522bc;_0x56aae0=0xc8;}else{_0x56aae0=0xce;}_0x27d2bb[_0xc5d6('0x26')](_0x56aae0);return _0x27d2bb[_0xc5d6('0x2d')](_0xc5d6('0x2e'),_0x1b59a7+'-'+_0x120906+'/'+_0x4522bc)[_0xc5d6('0x28')](_0x64014a);}return null;};}function patchUpdates(_0x4f15be){return function(_0x44d6e5){try{jsonpatch['apply'](_0x44d6e5,_0x4f15be,!![]);}catch(_0x3255da){return BPromise['reject'](_0x3255da);}return _0x44d6e5[_0xc5d6('0x2f')]();};}function saveUpdates(_0xf5a34c,_0x9fb851){return function(_0x2da19a){if(_0x2da19a){return _0x2da19a[_0xc5d6('0x30')](_0xf5a34c)[_0xc5d6('0x31')](function(_0x47d4aa){return _0x47d4aa;});}return null;};}function removeEntity(_0x37ab34,_0xca7c53){return function(_0x5f0a77){if(_0x5f0a77){return _0x5f0a77['destroy']()[_0xc5d6('0x31')](function(){_0x37ab34[_0xc5d6('0x26')](0xcc)[_0xc5d6('0x27')]();});}};}function handleEntityNotFound(_0xf8b009,_0x17b642){return function(_0x143983){if(!_0x143983){_0xf8b009['sendStatus'](0x194);}return _0x143983;};}function handleError(_0x5ee700,_0x16a97e){_0x16a97e=_0x16a97e||0x1f4;return function(_0x2162ac){logger['error'](_0x2162ac[_0xc5d6('0x32')]);if(_0x2162ac[_0xc5d6('0x33')]){delete _0x2162ac['name'];}_0x5ee700['status'](_0x16a97e)['send'](_0x2162ac);};}exports['index']=function(_0x3c1dd8,_0x2d4934){var _0x14eed1={},_0x34e373={},_0x5d07db={'count':0x0,'rows':[]};var _0x4e5785=_[_0xc5d6('0x34')](db[_0xc5d6('0x35')]['rawAttributes'],function(_0x41396d){return{'name':_0x41396d[_0xc5d6('0x36')],'type':_0x41396d[_0xc5d6('0x37')]['key']};});_0x34e373[_0xc5d6('0x38')]=_['map'](_0x4e5785,_0xc5d6('0x33'));_0x34e373['query']=_[_0xc5d6('0x39')](_0x3c1dd8[_0xc5d6('0x3a')]);_0x34e373['filters']=_[_0xc5d6('0x3b')](_0x34e373['model'],_0x34e373[_0xc5d6('0x3a')]);_0x14eed1['attributes']=_['intersection'](_0x34e373[_0xc5d6('0x38')],qs[_0xc5d6('0x3c')](_0x3c1dd8[_0xc5d6('0x3a')]['fields']));_0x14eed1[_0xc5d6('0x3d')]=_0x14eed1[_0xc5d6('0x3d')][_0xc5d6('0x3e')]?_0x14eed1[_0xc5d6('0x3d')]:_0x34e373[_0xc5d6('0x38')];if(!_0x3c1dd8[_0xc5d6('0x3a')][_0xc5d6('0x3f')]('nolimit')){_0x14eed1['limit']=qs[_0xc5d6('0x2c')](_0x3c1dd8[_0xc5d6('0x3a')][_0xc5d6('0x2c')]);_0x14eed1[_0xc5d6('0x29')]=qs[_0xc5d6('0x29')](_0x3c1dd8[_0xc5d6('0x3a')][_0xc5d6('0x29')]);}_0x14eed1[_0xc5d6('0x40')]=qs[_0xc5d6('0x41')](_0x3c1dd8[_0xc5d6('0x3a')][_0xc5d6('0x41')]);_0x14eed1[_0xc5d6('0x42')]=qs[_0xc5d6('0x43')](_[_0xc5d6('0x44')](_0x3c1dd8['query'],_0x34e373[_0xc5d6('0x43')]),_0x4e5785);if(_0x3c1dd8[_0xc5d6('0x3a')][_0xc5d6('0x45')]){_0x14eed1['where']=_[_0xc5d6('0x46')](_0x14eed1[_0xc5d6('0x42')],{'$or':_[_0xc5d6('0x34')](_0x4e5785,function(_0x2fb6f1){if(_0x2fb6f1[_0xc5d6('0x37')]!==_0xc5d6('0x47')){var _0x1c9acd={};_0x1c9acd[_0x2fb6f1['name']]={'$like':'%'+_0x3c1dd8['query'][_0xc5d6('0x45')]+'%'};return _0x1c9acd;}})});}_0x14eed1=_[_0xc5d6('0x46')]({},_0x14eed1,_0x3c1dd8[_0xc5d6('0x48')]);var _0x384e19={'where':_0x14eed1[_0xc5d6('0x42')]};return db[_0xc5d6('0x35')]['count'](_0x384e19)['then'](function(_0x50e63){_0x5d07db['count']=_0x50e63;if(_0x3c1dd8['query'][_0xc5d6('0x49')]){_0x14eed1[_0xc5d6('0x4a')]=[{'all':!![]}];}return db[_0xc5d6('0x35')][_0xc5d6('0x4b')](_0x14eed1);})['then'](function(_0x14e803){_0x5d07db[_0xc5d6('0x4c')]=_0x14e803;return _0x5d07db;})[_0xc5d6('0x31')](respondWithFilteredResult(_0x2d4934,_0x14eed1))['catch'](handleError(_0x2d4934,null));};exports[_0xc5d6('0x4d')]=function(_0x381174,_0x1e82dc){var _0x1b7587={'raw':![],'where':{'id':_0x381174[_0xc5d6('0x4e')]['id']}},_0x29227c={};_0x29227c[_0xc5d6('0x38')]=_['keys'](db[_0xc5d6('0x35')][_0xc5d6('0x4f')]);_0x29227c[_0xc5d6('0x3a')]=_[_0xc5d6('0x39')](_0x381174[_0xc5d6('0x3a')]);_0x29227c[_0xc5d6('0x43')]=_['intersection'](_0x29227c['model'],_0x29227c[_0xc5d6('0x3a')]);_0x1b7587['attributes']=_[_0xc5d6('0x3b')](_0x29227c['model'],qs[_0xc5d6('0x3c')](_0x381174[_0xc5d6('0x3a')]['fields']));_0x1b7587['attributes']=_0x1b7587[_0xc5d6('0x3d')][_0xc5d6('0x3e')]?_0x1b7587['attributes']:_0x29227c[_0xc5d6('0x38')];if(_0x381174[_0xc5d6('0x3a')]['includeAll']){_0x1b7587['include']=[{'all':!![]}];}_0x1b7587=_[_0xc5d6('0x46')]({},_0x1b7587,_0x381174[_0xc5d6('0x48')]);return db[_0xc5d6('0x35')][_0xc5d6('0x50')](_0x1b7587)[_0xc5d6('0x31')](handleEntityNotFound(_0x1e82dc,null))[_0xc5d6('0x31')](respondWithResult(_0x1e82dc,null))[_0xc5d6('0x25')](handleError(_0x1e82dc,null));};exports[_0xc5d6('0x30')]=function(_0x608d48,_0x11700d){if(_0x608d48[_0xc5d6('0x51')]['id']){delete _0x608d48[_0xc5d6('0x51')]['id'];}return db['Setting']['find']({'where':{'id':_0x608d48['params']['id']}})['then'](handleEntityNotFound(_0x11700d,null))[_0xc5d6('0x31')](saveUpdates(_0x608d48['body'],null))['then'](respondWithResult(_0x11700d,null))[_0xc5d6('0x25')](handleError(_0x11700d,null));};exports[_0xc5d6('0x52')]=function(_0x5c2ba5,_0x575cf8,_0x1739d2){if(_0x5c2ba5['file']&&_0x5c2ba5[_0xc5d6('0x53')][_0xc5d6('0x54')]){_0x5c2ba5[_0xc5d6('0x51')]['logo']=_0x5c2ba5[_0xc5d6('0x53')][_0xc5d6('0x54')];}return db['Setting'][_0xc5d6('0x50')]({'where':{'id':_0x5c2ba5[_0xc5d6('0x4e')]['id']}})[_0xc5d6('0x31')](handleEntityNotFound(_0x575cf8,null))['then'](saveUpdates(_0x5c2ba5['body'],null))[_0xc5d6('0x31')](respondWithResult(_0x575cf8,null))[_0xc5d6('0x25')](handleError(_0x575cf8,null));};exports[_0xc5d6('0x55')]=function(_0x264b35,_0x5fe06,_0x30f3cf){if(_0x264b35['file']&&_0x264b35[_0xc5d6('0x53')][_0xc5d6('0x54')]){_0x264b35[_0xc5d6('0x51')][_0xc5d6('0x56')]=_0x264b35[_0xc5d6('0x53')][_0xc5d6('0x54')];}return db[_0xc5d6('0x35')][_0xc5d6('0x50')]({'where':{'id':_0x264b35['params']['id']}})[_0xc5d6('0x31')](handleEntityNotFound(_0x5fe06,null))[_0xc5d6('0x31')](saveUpdates(_0x264b35[_0xc5d6('0x51')],null))[_0xc5d6('0x31')](respondWithResult(_0x5fe06,null))[_0xc5d6('0x25')](handleError(_0x5fe06,null));};var utilLicense=require(_0xc5d6('0x16'));exports[_0xc5d6('0x57')]=function(_0x1d9f4e,_0x1298b8,_0x137f6e){var _0x4b299b=_0xc5d6('0x58');var _0x2ae1c7={'custom':![]};return utilLicense[_0xc5d6('0x59')]()[_0xc5d6('0x31')](function(_0x43686d){if(_0x43686d){_0x2ae1c7=_0x43686d;}return db[_0xc5d6('0x35')][_0xc5d6('0x50')]({'where':{'id':_0x1d9f4e[_0xc5d6('0x4e')]['id']},'attributes':[_0xc5d6('0x5a'),_0xc5d6('0x56'),_0xc5d6('0x5b'),'favicon',_0xc5d6('0x5c'),_0xc5d6('0x5d'),'defaultPreferred',_0xc5d6('0x5e')],'raw':!![]});})[_0xc5d6('0x31')](handleEntityNotFound(_0x1298b8,null))[_0xc5d6('0x31')](function(_0x3a9723){if(_0x3a9723){var _0x6f2c02=_0x3a9723[_0xc5d6('0x5a')]&&fs[_0xc5d6('0x5f')](path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x4b299b,_[_0xc5d6('0x62')](_0x3a9723['logo'])))?path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x4b299b,_['toLower'](_0x3a9723[_0xc5d6('0x5a')])):path['join'](config[_0xc5d6('0x61')],_0x4b299b,_[_0xc5d6('0x62')]('default_logo.svg'));var _0x3c1b86=_0xc5d6('0x63')+_['upperFirst'](_0xc5d6('0x5a'));if(_0x3a9723[_0x3c1b86]||!_0x2ae1c7[_0xc5d6('0x64')]){_0x6f2c02=path[_0xc5d6('0x60')](config['root'],_0x4b299b,_['toLower']('default_logo.svg'));}if(!fs[_0xc5d6('0x5f')](_0x6f2c02)){throw new db[(_0xc5d6('0x65'))][(_0xc5d6('0x66'))](_['upperFirst'](_0xc5d6('0x5a'))+_0xc5d6('0x67'));}return _0x1298b8[_0xc5d6('0x68')](_0x6f2c02);}})[_0xc5d6('0x25')](handleError(_0x1298b8,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0x5ea853,_0xffa7ec,_0x230b84){var _0x2fee1b=_0xc5d6('0x58');var _0x93c089={'custom':![]};return utilLicense[_0xc5d6('0x59')]()['then'](function(_0x5288c5){if(_0x5288c5){_0x93c089=_0x5288c5;}return db[_0xc5d6('0x35')][_0xc5d6('0x50')]({'where':{'id':_0x5ea853['params']['id']},'attributes':[_0xc5d6('0x5a'),'loginLogo',_0xc5d6('0x5b'),_0xc5d6('0x69'),_0xc5d6('0x5c'),_0xc5d6('0x5d'),'defaultPreferred',_0xc5d6('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0xffa7ec,null))['then'](function(_0x1c209a){if(_0x1c209a){var _0x36ee0f=_0x1c209a[_0xc5d6('0x56')]&&fs[_0xc5d6('0x5f')](path['join'](config[_0xc5d6('0x61')],_0x2fee1b,_[_0xc5d6('0x62')](_0x1c209a['loginLogo'])))?path[_0xc5d6('0x60')](config['root'],_0x2fee1b,_['toLower'](_0x1c209a['loginLogo'])):path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x2fee1b,_[_0xc5d6('0x62')](_0xc5d6('0x6a')));var _0x1cf163='default'+_[_0xc5d6('0x6b')]('loginLogo');if(_0x1c209a[_0x1cf163]||!_0x93c089[_0xc5d6('0x64')]){_0x36ee0f=path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x2fee1b,_[_0xc5d6('0x62')]('default_loginLogo.svg'));}if(!fs[_0xc5d6('0x5f')](_0x36ee0f)){throw new db[(_0xc5d6('0x65'))][(_0xc5d6('0x66'))](_['upperFirst']('loginLogo')+_0xc5d6('0x67'));}return _0xffa7ec[_0xc5d6('0x68')](_0x36ee0f);}})['catch'](handleError(_0xffa7ec,null));};exports['gdpr']=function(_0xc8cb0d,_0x29a7e0){return db[_0xc5d6('0x35')][_0xc5d6('0x50')]({'where':{'id':_0xc8cb0d['params']['id']},'attributes':[_0xc5d6('0x6c')]})[_0xc5d6('0x31')](respondWithResult(_0x29a7e0,null))['catch'](handleError(_0x29a7e0,null));};exports[_0xc5d6('0x6d')]=function(_0x3073aa,_0x4f81e4,_0x50d449){if(_0x3073aa[_0xc5d6('0x53')]&&_0x3073aa['file'][_0xc5d6('0x54')]){_0x3073aa['body'][_0xc5d6('0x5b')]=_0x3073aa[_0xc5d6('0x53')]['filename'];}return db['Setting'][_0xc5d6('0x50')]({'where':{'id':_0x3073aa['params']['id']}})[_0xc5d6('0x31')](handleEntityNotFound(_0x4f81e4,null))[_0xc5d6('0x31')](saveUpdates(_0x3073aa[_0xc5d6('0x51')],null))[_0xc5d6('0x31')](respondWithResult(_0x4f81e4,null))[_0xc5d6('0x25')](handleError(_0x4f81e4,null));};var utilLicense=require(_0xc5d6('0x16'));exports['getPreferred']=function(_0x453dd7,_0x4c9f2d,_0x123c29){var _0x219df1=_0xc5d6('0x58');var _0x1c18b0={'custom':![]};return utilLicense['getLicense']()[_0xc5d6('0x31')](function(_0x3fe464){if(_0x3fe464){_0x1c18b0=_0x3fe464;}return db[_0xc5d6('0x35')][_0xc5d6('0x50')]({'where':{'id':_0x453dd7[_0xc5d6('0x4e')]['id']},'attributes':[_0xc5d6('0x5a'),_0xc5d6('0x56'),_0xc5d6('0x5b'),_0xc5d6('0x69'),_0xc5d6('0x5c'),_0xc5d6('0x5d'),_0xc5d6('0x6e'),'defaultFavicon'],'raw':!![]});})[_0xc5d6('0x31')](handleEntityNotFound(_0x4c9f2d,null))['then'](function(_0x152c75){if(_0x152c75){var _0x1a53f2=_0x152c75['preferred']&&fs[_0xc5d6('0x5f')](path['join'](config[_0xc5d6('0x61')],_0x219df1,_['toLower'](_0x152c75[_0xc5d6('0x5b')])))?path['join'](config[_0xc5d6('0x61')],_0x219df1,_[_0xc5d6('0x62')](_0x152c75[_0xc5d6('0x5b')])):path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x219df1,_[_0xc5d6('0x62')](_0xc5d6('0x6f')));var _0x2f8063=_0xc5d6('0x63')+_[_0xc5d6('0x6b')]('preferred');if(_0x152c75[_0x2f8063]||!_0x1c18b0[_0xc5d6('0x64')]||!_0x1c18b0['preferred']){_0x1a53f2=path['join'](config['root'],_0x219df1,_['toLower'](_0xc5d6('0x6f')));}if(!fs['existsSync'](_0x1a53f2)){throw new db['Sequelize'][(_0xc5d6('0x66'))](_[_0xc5d6('0x6b')]('preferred')+_0xc5d6('0x67'));}return _0x4c9f2d[_0xc5d6('0x68')](_0x1a53f2);}})['catch'](handleError(_0x4c9f2d,null));};exports[_0xc5d6('0x70')]=function(_0x2568f9,_0x5138c8,_0x3940f1){if(_0x2568f9[_0xc5d6('0x53')]&&_0x2568f9['file'][_0xc5d6('0x54')]){_0x2568f9['body'][_0xc5d6('0x69')]=_0x2568f9[_0xc5d6('0x53')][_0xc5d6('0x54')];}return db[_0xc5d6('0x35')]['find']({'where':{'id':_0x2568f9[_0xc5d6('0x4e')]['id']}})[_0xc5d6('0x31')](handleEntityNotFound(_0x5138c8,null))['then'](saveUpdates(_0x2568f9['body'],null))[_0xc5d6('0x31')](respondWithResult(_0x5138c8,null))['catch'](handleError(_0x5138c8,null));};var utilLicense=require('../../config/license/util');exports[_0xc5d6('0x71')]=function(_0x2080f3,_0x4e8552,_0x2f0aa3){var _0x59004b=_0xc5d6('0x58');var _0x2ad3ad={'custom':![]};return utilLicense[_0xc5d6('0x59')]()['then'](function(_0x8323b0){if(_0x8323b0){_0x2ad3ad=_0x8323b0;}return db[_0xc5d6('0x35')][_0xc5d6('0x50')]({'where':{'id':_0x2080f3[_0xc5d6('0x4e')]['id']},'attributes':[_0xc5d6('0x5a'),_0xc5d6('0x56'),'preferred',_0xc5d6('0x69'),_0xc5d6('0x5c'),_0xc5d6('0x5d'),_0xc5d6('0x6e'),_0xc5d6('0x5e')],'raw':!![]});})[_0xc5d6('0x31')](handleEntityNotFound(_0x4e8552,null))['then'](function(_0x595ff0){if(_0x595ff0){var _0x311e24=_0x595ff0[_0xc5d6('0x69')]&&fs[_0xc5d6('0x5f')](path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x59004b,_['toLower'](_0x595ff0[_0xc5d6('0x69')])))?path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x59004b,_['toLower'](_0x595ff0['favicon'])):path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x59004b,_['toLower']('default_favicon.ico'));var _0x2ae9a2=_0xc5d6('0x63')+_[_0xc5d6('0x6b')](_0xc5d6('0x69'));if(_0x595ff0[_0x2ae9a2]||!_0x2ad3ad[_0xc5d6('0x64')]){_0x311e24=path[_0xc5d6('0x60')](config[_0xc5d6('0x61')],_0x59004b,_[_0xc5d6('0x62')](_0xc5d6('0x72')));}if(!fs['existsSync'](_0x311e24)){throw new db['Sequelize'][(_0xc5d6('0x66'))](_[_0xc5d6('0x6b')]('favicon')+_0xc5d6('0x67'));}return _0x4e8552[_0xc5d6('0x68')](_0x311e24);}})[_0xc5d6('0x25')](handleError(_0x4e8552,null));};exports[_0xc5d6('0x73')]=function(_0x59634d,_0x566ffa){var _0x415f7c={'offset':moment()[_0xc5d6('0x74')]()};_0x415f7c[_0xc5d6('0x75')]=moment()[_0xc5d6('0x74')](_0x415f7c[_0xc5d6('0x29')])[_0xc5d6('0x76')](_0xc5d6('0x77'));return _0x566ffa[_0xc5d6('0x26')](0xc8)[_0xc5d6('0x78')](_0x415f7c);};
\ No newline at end of file
index 1410074..b0e1c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x2ed6eb,_0x5f1d6f){var _0x206855=function(_0x3c0458){while(--_0x3c0458){_0x2ed6eb['push'](_0x2ed6eb['shift']());}};_0x206855(++_0x5f1d6f);}(_0xedd9,0xfc));var _0x9edd=function(_0x390e6c,_0x4d7d42){_0x390e6c=_0x390e6c-0x0;var _0x596b05=_0xedd9[_0x390e6c];return _0x596b05;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./setting.attributes','exports','define','settings','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x77d286,_0x1ddc6d){var _0x5446a5=function(_0x45e2cf){while(--_0x45e2cf){_0x77d286['push'](_0x77d286['shift']());}};_0x5446a5(++_0x1ddc6d);}(_0x55ca,0x126));var _0xa55c=function(_0x89a001,_0x3a9a8c){_0x89a001=_0x89a001-0x0;var _0x5f3ec2=_0x55ca[_0x89a001];return _0x5f3ec2;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Setting',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c13a512..4e4f81e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c5c=['Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','ShowSetting','Setting','find','options','raw','attributes','include','model','map','catch','lodash','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5a2f71,_0x98029e){var _0x3267cc=function(_0x5d64db){while(--_0x5d64db){_0x5a2f71['push'](_0x5a2f71['shift']());}};_0x3267cc(++_0x98029e);}(_0x2c5c,0xe9));var _0xc2c5=function(_0x545c51,_0x4551a8){_0x545c51=_0x545c51-0x0;var _0x18e103=_0x2c5c[_0x545c51];return _0x18e103;};'use strict';var _=require(_0xc2c5('0x0'));var util=require(_0xc2c5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc2c5('0x2'));var fs=require('fs');var Redis=require(_0xc2c5('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc2c5('0x4'))(_0xc2c5('0x5'));var config=require(_0xc2c5('0x6'));var jayson=require(_0xc2c5('0x7'));var client=jayson[_0xc2c5('0x8')][_0xc2c5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34511c,_0x4c13a9,_0x2cae3b){return new BPromise(function(_0x1c10c9,_0x1a976e){return client[_0xc2c5('0xa')](_0x34511c,_0x2cae3b)[_0xc2c5('0xb')](function(_0x180b97){logger['info'](_0xc2c5('0xc'),_0x4c13a9,_0xc2c5('0xd'));logger[_0xc2c5('0xe')](_0xc2c5('0xf'),_0x4c13a9,_0xc2c5('0xd'),JSON[_0xc2c5('0x10')](_0x180b97));if(_0x180b97[_0xc2c5('0x11')]){if(_0x180b97['error'][_0xc2c5('0x12')]===0x1f4){logger[_0xc2c5('0x11')]('Setting,\x20%s,\x20%s',_0x4c13a9,_0x180b97['error'][_0xc2c5('0x13')]);return _0x1a976e(_0x180b97[_0xc2c5('0x11')]['message']);}logger[_0xc2c5('0x11')]('Setting,\x20%s,\x20%s',_0x4c13a9,_0x180b97[_0xc2c5('0x11')][_0xc2c5('0x13')]);return _0x1c10c9(_0x180b97['error']['message']);}else{logger[_0xc2c5('0x14')](_0xc2c5('0xc'),_0x4c13a9,'request\x20sent');_0x1c10c9(_0x180b97['result'][_0xc2c5('0x13')]);}})['catch'](function(_0xf83ee2){logger[_0xc2c5('0x11')](_0xc2c5('0xc'),_0x4c13a9,_0xf83ee2);_0x1a976e(_0xf83ee2);});});}exports[_0xc2c5('0x15')]=function(_0x1cab9f){var _0xf302ec=this;return new Promise(function(_0x2718de,_0x159a0a){return db[_0xc2c5('0x16')][_0xc2c5('0x17')]({'raw':_0x1cab9f[_0xc2c5('0x18')]?_0x1cab9f[_0xc2c5('0x18')][_0xc2c5('0x19')]===undefined?!![]:![]:!![],'where':_0x1cab9f[_0xc2c5('0x18')]?_0x1cab9f[_0xc2c5('0x18')]['where']||null:null,'attributes':_0x1cab9f[_0xc2c5('0x18')]?_0x1cab9f['options'][_0xc2c5('0x1a')]||null:null,'include':_0x1cab9f['options']?_0x1cab9f[_0xc2c5('0x18')][_0xc2c5('0x1b')]?_['map'](_0x1cab9f[_0xc2c5('0x18')][_0xc2c5('0x1b')],function(_0x5c2b33){return{'model':db[_0x5c2b33[_0xc2c5('0x1c')]],'as':_0x5c2b33['as'],'attributes':_0x5c2b33[_0xc2c5('0x1a')],'include':_0x5c2b33[_0xc2c5('0x1b')]?_[_0xc2c5('0x1d')](_0x5c2b33[_0xc2c5('0x1b')],function(_0x34630c){return{'model':db[_0x34630c[_0xc2c5('0x1c')]],'as':_0x34630c['as'],'attributes':_0x34630c[_0xc2c5('0x1a')],'include':_0x34630c[_0xc2c5('0x1b')]?_[_0xc2c5('0x1d')](_0x34630c['include'],function(_0x3e2cdb){return{'model':db[_0x3e2cdb['model']],'as':_0x3e2cdb['as'],'attributes':_0x3e2cdb[_0xc2c5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc2c5('0xb')](function(_0x419e1b){logger['info'](_0xc2c5('0x15'),_0x1cab9f);logger[_0xc2c5('0xe')](_0xc2c5('0x15'),_0x1cab9f,JSON[_0xc2c5('0x10')](_0x419e1b));_0x2718de(_0x419e1b);})[_0xc2c5('0x1e')](function(_0x4ddbc2){logger[_0xc2c5('0x11')](_0xc2c5('0x15'),_0x4ddbc2[_0xc2c5('0x13')],_0x1cab9f);_0x159a0a(_0xf302ec['error'](0x1f4,_0x4ddbc2['message']));});});};
\ No newline at end of file
+var _0x2272=['then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','Setting','options','raw','where','attributes','map','include','model','ShowSetting','stringify','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x2272,0x1d4));var _0x2227=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2272[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x2227('0x0'));var util=require('util');var moment=require(_0x2227('0x1'));var BPromise=require(_0x2227('0x2'));var rs=require(_0x2227('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x4'))['db'];var utils=require(_0x2227('0x5'));var logger=require(_0x2227('0x6'))(_0x2227('0x7'));var config=require(_0x2227('0x8'));var jayson=require(_0x2227('0x9'));var client=jayson['client'][_0x2227('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5de592,_0x4b14a3,_0x2a7100){return new BPromise(function(_0xf5176b,_0x86a0bb){return client[_0x2227('0xb')](_0x5de592,_0x2a7100)[_0x2227('0xc')](function(_0x255f77){logger[_0x2227('0xd')](_0x2227('0xe'),_0x4b14a3,'request\x20sent');logger[_0x2227('0xf')](_0x2227('0x10'),_0x4b14a3,_0x2227('0x11'),JSON['stringify'](_0x255f77));if(_0x255f77[_0x2227('0x12')]){if(_0x255f77['error']['code']===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x4b14a3,_0x255f77['error'][_0x2227('0x13')]);return _0x86a0bb(_0x255f77[_0x2227('0x12')][_0x2227('0x13')]);}logger['error'](_0x2227('0xe'),_0x4b14a3,_0x255f77[_0x2227('0x12')][_0x2227('0x13')]);return _0xf5176b(_0x255f77[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0xe'),_0x4b14a3,'request\x20sent');_0xf5176b(_0x255f77[_0x2227('0x14')][_0x2227('0x13')]);}})[_0x2227('0x15')](function(_0x142c9e){logger[_0x2227('0x12')](_0x2227('0xe'),_0x4b14a3,_0x142c9e);_0x86a0bb(_0x142c9e);});});}exports['ShowSetting']=function(_0x5b6760){var _0x13b1cc=this;return new Promise(function(_0x529b6b,_0x4e7a22){return db[_0x2227('0x16')]['find']({'raw':_0x5b6760[_0x2227('0x17')]?_0x5b6760[_0x2227('0x17')][_0x2227('0x18')]===undefined?!![]:![]:!![],'where':_0x5b6760[_0x2227('0x17')]?_0x5b6760['options'][_0x2227('0x19')]||null:null,'attributes':_0x5b6760['options']?_0x5b6760[_0x2227('0x17')][_0x2227('0x1a')]||null:null,'include':_0x5b6760[_0x2227('0x17')]?_0x5b6760[_0x2227('0x17')]['include']?_[_0x2227('0x1b')](_0x5b6760['options'][_0x2227('0x1c')],function(_0x1159ea){return{'model':db[_0x1159ea['model']],'as':_0x1159ea['as'],'attributes':_0x1159ea[_0x2227('0x1a')],'include':_0x1159ea[_0x2227('0x1c')]?_[_0x2227('0x1b')](_0x1159ea[_0x2227('0x1c')],function(_0x27f5d3){return{'model':db[_0x27f5d3[_0x2227('0x1d')]],'as':_0x27f5d3['as'],'attributes':_0x27f5d3['attributes'],'include':_0x27f5d3[_0x2227('0x1c')]?_[_0x2227('0x1b')](_0x27f5d3[_0x2227('0x1c')],function(_0x1fd443){return{'model':db[_0x1fd443[_0x2227('0x1d')]],'as':_0x1fd443['as'],'attributes':_0x1fd443[_0x2227('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12d624){logger[_0x2227('0xd')](_0x2227('0x1e'),_0x5b6760);logger['debug']('ShowSetting',_0x5b6760,JSON[_0x2227('0x1f')](_0x12d624));_0x529b6b(_0x12d624);})['catch'](function(_0xa0553f){logger[_0x2227('0x12')](_0x2227('0x1e'),_0xa0553f['message'],_0x5b6760);_0x4e7a22(_0x13b1cc[_0x2227('0x12')](0x1f4,_0xa0553f[_0x2227('0x13')]));});});};
\ No newline at end of file
index c134f44..b1846bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x595604,_0x2cc998){var _0x1466f3=function(_0x4e1d9b){while(--_0x4e1d9b){_0x595604['push'](_0x595604['shift']());}};_0x1466f3(++_0x2cc998);}(_0x814b,0x1a2));var _0xb814=function(_0x104b35,_0x13f218){_0x104b35=_0x104b35-0x0;var _0x55584d=_0x814b[_0x104b35];return _0x55584d;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
+var _0x9957=['getInteractions','statusGet','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/status','status','addAgents','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions'];(function(_0x100916,_0x25270d){var _0xa31589=function(_0x2e5f3f){while(--_0x2e5f3f){_0x100916['push'](_0x100916['shift']());}};_0xa31589(++_0x25270d);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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/canned_answers',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x9')](_0x7995('0x14'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router['get']('/:id/status',controller[_0x7995('0x16')]);router[_0x7995('0x9')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x1a')]);router['post'](_0x7995('0xf'),auth['isAuthenticated'](),controller[_0x7995('0x1b')]);router[_0x7995('0x19')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router[_0x7995('0x19')]('/:id/notify',controller['notify']);router[_0x7995('0x19')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7995('0x1e')]);router[_0x7995('0x19')]('/:id/send',auth[_0x7995('0xa')](),controller['send']);router['post'](_0x7995('0x1f'),controller[_0x7995('0x20')]);router[_0x7995('0x19')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x21')]);router['put'](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x23')]);router[_0x7995('0x24')](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x25')]);router[_0x7995('0x24')]('/:id/dispositions',auth[_0x7995('0xa')](),controller[_0x7995('0x26')]);router[_0x7995('0x24')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x17'),auth['isAuthenticated'](),controller[_0x7995('0x28')]);module[_0x7995('0x29')]=router;
\ No newline at end of file
index b950bea..b0ca168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b75=['skebby','connectel','clicksend','clickatell','bandwidth','csc','infobip','intelepeer','ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x5b75,0x8d));var _0x55b7=function(_0x2da2e2,_0x512d34){_0x2da2e2=_0x2da2e2-0x0;var _0x2bea48=_0x5b75[_0x2da2e2];return _0x2bea48;};'use strict';var Sequelize=require(_0x55b7('0x0'));var rs=require(_0x55b7('0x1'));module[_0x55b7('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x55b7('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x55b7('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0x55b7('0x4')],'allowNull':![]},'token':{'type':Sequelize[_0x55b7('0x4')],'defaultValue':function(){return rs[_0x55b7('0x5')]();}},'phone':{'type':Sequelize[_0x55b7('0x4')]},'type':{'type':Sequelize['ENUM']('twilio',_0x55b7('0x6'),_0x55b7('0x7'),_0x55b7('0x8'),'plivo',_0x55b7('0x9'),_0x55b7('0xa'),_0x55b7('0xb'),_0x55b7('0xc'),_0x55b7('0xd'))},'accountSid':{'type':Sequelize[_0x55b7('0x4')]},'authId':{'type':Sequelize[_0x55b7('0x4')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x55b7('0xe')]('SI','TI','GP')},'username':{'type':Sequelize[_0x55b7('0x4')]},'password':{'type':Sequelize[_0x55b7('0x4')]},'apiKey':{'type':Sequelize[_0x55b7('0x4')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![]},'description':{'type':Sequelize[_0x55b7('0x4')]},'notificationTemplate':{'type':Sequelize[_0x55b7('0x10')],'defaultValue':function(){return _0x55b7('0x11');}},'notificationSound':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x55b7('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x55b7('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x55b7('0x12')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x11ec50){if(!_0x11ec50)this[_0x55b7('0x13')]('mandatoryDispositionPauseId',null);this[_0x55b7('0x13')](_0x55b7('0x14'),_0x11ec50);}}};
\ No newline at end of file
+var _0xcdb2=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','twilio','connectel','clicksend','plivo','bandwidth','infobip','intelepeer','ENUM','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0xb1d90c,_0x55d33d){var _0x4db632=function(_0x300312){while(--_0x300312){_0xb1d90c['push'](_0xb1d90c['shift']());}};_0x4db632(++_0x55d33d);}(_0xcdb2,0x1d3));var _0x2cdb=function(_0x346978,_0x44d63f){_0x346978=_0x346978-0x0;var _0x19e3b4=_0xcdb2[_0x346978];return _0x19e3b4;};'use strict';var Sequelize=require(_0x2cdb('0x0'));var rs=require(_0x2cdb('0x1'));module['exports']={'name':{'type':Sequelize[_0x2cdb('0x2')],'unique':_0x2cdb('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x2cdb('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x2cdb('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x2cdb('0x2')],'defaultValue':function(){return rs[_0x2cdb('0x4')]();}},'phone':{'type':Sequelize[_0x2cdb('0x2')]},'type':{'type':Sequelize['ENUM'](_0x2cdb('0x5'),'skebby',_0x2cdb('0x6'),_0x2cdb('0x7'),_0x2cdb('0x8'),'clickatell',_0x2cdb('0x9'),'csc',_0x2cdb('0xa'),_0x2cdb('0xb'))},'accountSid':{'type':Sequelize[_0x2cdb('0x2')]},'authId':{'type':Sequelize[_0x2cdb('0x2')]},'authToken':{'type':Sequelize[_0x2cdb('0x2')]},'smsMethod':{'type':Sequelize[_0x2cdb('0xc')]('SI','TI','GP')},'username':{'type':Sequelize[_0x2cdb('0x2')]},'password':{'type':Sequelize[_0x2cdb('0x2')]},'apiKey':{'type':Sequelize[_0x2cdb('0x2')]},'applicationId':{'type':Sequelize[_0x2cdb('0x2')]},'accountId':{'type':Sequelize[_0x2cdb('0x2')]},'senderString':{'type':Sequelize[_0x2cdb('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x2cdb('0xd')],'defaultValue':function(){return _0x2cdb('0xe');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2cdb('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2cdb('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2cdb('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2cdb('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2cdb('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2cdb('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x2cdb('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2cdb('0x10')],'comment':_0x2cdb('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x2cdb('0xf')],'defaultValue':![],'comment':_0x2cdb('0x12'),'set':function(_0x4cffc9){if(!_0x4cffc9)this[_0x2cdb('0x13')](_0x2cdb('0x14'),null);this[_0x2cdb('0x13')](_0x2cdb('0x15'),_0x4cffc9);}}};
\ No newline at end of file
index 864af92..33282f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x971d=['Disposition','getDispositions','findOne','nolimit','SmsAccountId','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','Body','messageId','MessageSid','skebby','from','sender','text','connectel','clicksend','message_id','From','Text','infobip','results','csc','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','refid','isNil','Sequelize','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','CmContact','DESC','list','omit','Contacts','defaults','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','twilio','Content-Type','text/xml','send','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','Messages','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','requestid','statusInt','groupName','DELIVERED','intelepeer','redif','inspect','error_code','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','mustache','util','path','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','redis','localhost','socket.io-emitter','./smsAccount.socket','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','undefined','count','limit','set','json','apply','save','update','destroy','get','SmsAccounts','UserProfileResource','end','name','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x971d,0x15b));var _0xd971=function(_0x38668a,_0x3aaad9){_0x38668a=_0x38668a-0x0;var _0x48c1e4=_0x971d[_0x38668a];return _0x48c1e4;};'use strict';var emlformat=require(_0xd971('0x0'));var rimraf=require(_0xd971('0x1'));var zipdir=require(_0xd971('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd971('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd971('0x4'));var util=require(_0xd971('0x5'));var path=require(_0xd971('0x6'));var sox=require('sox');var csv=require(_0xd971('0x7'));var ejs=require(_0xd971('0x8'));var fs=require('fs');var fs_extra=require(_0xd971('0x9'));var _=require(_0xd971('0xa'));var squel=require('squel');var crypto=require(_0xd971('0xb'));var jsforce=require(_0xd971('0xc'));var deskjs=require(_0xd971('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd971('0xe'));var Papa=require(_0xd971('0xf'));var Redis=require(_0xd971('0x10'));var authService=require(_0xd971('0x11'));var qs=require(_0xd971('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd971('0x13'));var logger=require(_0xd971('0x14'))(_0xd971('0x15'));var utils=require(_0xd971('0x16'));var config=require(_0xd971('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd971('0x18'))['db'];config['redis']=_['defaults'](config[_0xd971('0x19')],{'host':_0xd971('0x1a'),'port':0x18eb});var socket=require(_0xd971('0x1b'))(new Redis(config[_0xd971('0x19')]));require(_0xd971('0x1c'))['register'](socket);var jayson=require(_0xd971('0x1d'));var client=jayson[_0xd971('0x1e')][_0xd971('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x33e43b,_0x1f5a17,_0x397374,_0x541030){return new BPromise(function(_0x4af7c3,_0x156ebd){var _0x26779d=_0x541030||client;return _0x26779d[_0xd971('0x20')](_0x33e43b,_0x397374)[_0xd971('0x21')](function(_0x3785ad){logger[_0xd971('0x22')](_0xd971('0x23'),_0x1f5a17,_0xd971('0x24'));logger[_0xd971('0x25')](_0xd971('0x26'),_0x1f5a17,_0xd971('0x24'),JSON[_0xd971('0x27')](_0x3785ad));if(_0x3785ad[_0xd971('0x28')]){if(_0x3785ad['error'][_0xd971('0x29')]===0x1f4){logger[_0xd971('0x28')](_0xd971('0x23'),_0x1f5a17,_0x3785ad['error'][_0xd971('0x2a')]);return _0x156ebd(_0x3785ad['error'][_0xd971('0x2a')]);}logger[_0xd971('0x28')](_0xd971('0x23'),_0x1f5a17,_0x3785ad['error'][_0xd971('0x2a')]);return _0x4af7c3(_0x3785ad[_0xd971('0x28')][_0xd971('0x2a')]);}else{logger[_0xd971('0x22')](_0xd971('0x23'),_0x1f5a17,_0xd971('0x24'));_0x4af7c3(_0x3785ad['result'][_0xd971('0x2a')]);}})[_0xd971('0x2b')](function(_0x27adef){logger['error'](_0xd971('0x23'),_0x1f5a17,_0x27adef);_0x156ebd(_0x27adef);});});}function respondWithStatusCode(_0xbe6820,_0x208e83){_0x208e83=_0x208e83||0xcc;return function(_0x205844){if(_0x205844){return _0xbe6820[_0xd971('0x2c')](_0x208e83);}return _0xbe6820[_0xd971('0x2d')](_0x208e83)['end']();};}function respondWithResult(_0x59fba5,_0x31dd2a){_0x31dd2a=_0x31dd2a||0xc8;return function(_0x3cf349){if(_0x3cf349){return _0x59fba5[_0xd971('0x2d')](_0x31dd2a)['json'](_0x3cf349);}};}function respondWithFilteredResult(_0xfa6441,_0x59cc49){return function(_0x468c71){if(_0x468c71){var _0x370c2e=typeof _0x59cc49[_0xd971('0x2e')]===_0xd971('0x2f')&&typeof _0x59cc49['limit']==='undefined';var _0x2af45d=_0x468c71[_0xd971('0x30')];var _0x406e6=_0x370c2e?0x0:_0x59cc49[_0xd971('0x2e')];var _0xd1f0f3=_0x370c2e?_0x468c71['count']:_0x59cc49['offset']+_0x59cc49[_0xd971('0x31')];var _0x30b6d8;if(_0xd1f0f3>=_0x2af45d){_0xd1f0f3=_0x2af45d;_0x30b6d8=0xc8;}else{_0x30b6d8=0xce;}_0xfa6441[_0xd971('0x2d')](_0x30b6d8);return _0xfa6441[_0xd971('0x32')]('Content-Range',_0x406e6+'-'+_0xd1f0f3+'/'+_0x2af45d)[_0xd971('0x33')](_0x468c71);}return null;};}function patchUpdates(_0x1404b5){return function(_0x256f50){try{jsonpatch[_0xd971('0x34')](_0x256f50,_0x1404b5,!![]);}catch(_0x4a4611){return BPromise['reject'](_0x4a4611);}return _0x256f50[_0xd971('0x35')]();};}function saveUpdates(_0x492e7b,_0x1b69d0){return function(_0x238381){if(_0x238381){return _0x238381[_0xd971('0x36')](_0x492e7b)['then'](function(_0x4efe42){return _0x4efe42;});}return null;};}function removeEntity(_0x918a78,_0x5b7d9e){return function(_0x5cc301){if(_0x5cc301){return _0x5cc301[_0xd971('0x37')]()['then'](function(){var _0x3698e0=_0x5cc301[_0xd971('0x38')]({'plain':!![]});var _0x13fbb2=_0xd971('0x39');return db[_0xd971('0x3a')][_0xd971('0x37')]({'where':{'type':_0x13fbb2,'resourceId':_0x3698e0['id']}})[_0xd971('0x21')](function(){return _0x5cc301;});})['then'](function(){_0x918a78[_0xd971('0x2d')](0xcc)[_0xd971('0x3b')]();});}};}function handleEntityNotFound(_0xaaa89,_0x3d3768){return function(_0x1401eb){if(!_0x1401eb){_0xaaa89[_0xd971('0x2c')](0x194);}return _0x1401eb;};}function handleError(_0x52dae6,_0x33f1a9){_0x33f1a9=_0x33f1a9||0x1f4;return function(_0x28d05d){logger['error'](_0x28d05d['stack']);if(_0x28d05d[_0xd971('0x3c')]){delete _0x28d05d[_0xd971('0x3c')];}_0x52dae6['status'](_0x33f1a9)['send'](_0x28d05d);};}exports['index']=function(_0x9486a9,_0x3a923d){var _0x346470={'include':[{'model':db[_0xd971('0x3d')],'as':_0xd971('0x3e')}]},_0x575c0d={},_0x437ee3={'count':0x0,'rows':[]};var _0x232d6f=_['map'](db[_0xd971('0x3f')][_0xd971('0x40')],function(_0x176ed5){return{'name':_0x176ed5['fieldName'],'type':_0x176ed5[_0xd971('0x41')][_0xd971('0x42')]};});_0x575c0d['model']=_[_0xd971('0x43')](_0x232d6f,_0xd971('0x3c'));_0x575c0d[_0xd971('0x44')]=_[_0xd971('0x45')](_0x9486a9['query']);_0x575c0d[_0xd971('0x46')]=_[_0xd971('0x47')](_0x575c0d[_0xd971('0x48')],_0x575c0d[_0xd971('0x44')]);_0x346470['attributes']=_[_0xd971('0x47')](_0x575c0d[_0xd971('0x48')],qs[_0xd971('0x49')](_0x9486a9[_0xd971('0x44')][_0xd971('0x49')]));_0x346470[_0xd971('0x4a')]=_0x346470[_0xd971('0x4a')][_0xd971('0x4b')]?_0x346470[_0xd971('0x4a')]:_0x575c0d[_0xd971('0x48')];if(!_0x9486a9['query'][_0xd971('0x4c')]('nolimit')){_0x346470[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x9486a9[_0xd971('0x44')][_0xd971('0x31')]);_0x346470[_0xd971('0x2e')]=qs['offset'](_0x9486a9[_0xd971('0x44')][_0xd971('0x2e')]);}_0x346470[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x9486a9[_0xd971('0x44')][_0xd971('0x4e')]);_0x346470['where']=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x9486a9[_0xd971('0x44')],_0x575c0d['filters']),_0x232d6f);if(_0x9486a9[_0xd971('0x44')][_0xd971('0x50')]){_0x346470[_0xd971('0x51')]=_[_0xd971('0x52')](_0x346470[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x232d6f,function(_0xe2c17d){if(_0xe2c17d[_0xd971('0x41')]!=='VIRTUAL'){var _0xf025fb={};_0xf025fb[_0xe2c17d[_0xd971('0x3c')]]={'$like':'%'+_0x9486a9['query'][_0xd971('0x50')]+'%'};return _0xf025fb;}})});}_0x346470=_['merge']({},_0x346470,_0x9486a9[_0xd971('0x53')]);var _0x462daf={'where':_0x346470[_0xd971('0x51')]};return db[_0xd971('0x3f')]['count'](_0x462daf)[_0xd971('0x21')](function(_0x1ba018){_0x437ee3[_0xd971('0x30')]=_0x1ba018;if(_0x9486a9['query'][_0xd971('0x54')]){_0x346470[_0xd971('0x55')]=[{'all':!![]}];}return db[_0xd971('0x3f')][_0xd971('0x56')](_0x346470);})[_0xd971('0x21')](function(_0x12c151){_0x437ee3[_0xd971('0x57')]=_0x12c151;return _0x437ee3;})['then'](respondWithFilteredResult(_0x3a923d,_0x346470))[_0xd971('0x2b')](handleError(_0x3a923d,null));};exports['show']=function(_0x3e9810,_0x455a97){var _0x350d1a={'raw':![],'where':{'id':_0x3e9810[_0xd971('0x58')]['id']},'include':[{'model':db[_0xd971('0x3d')],'as':_0xd971('0x3e')}]},_0x190c2b={};_0x190c2b[_0xd971('0x48')]=_[_0xd971('0x45')](db['SmsAccount'][_0xd971('0x40')]);_0x190c2b[_0xd971('0x44')]=_[_0xd971('0x45')](_0x3e9810[_0xd971('0x44')]);_0x190c2b['filters']=_[_0xd971('0x47')](_0x190c2b[_0xd971('0x48')],_0x190c2b[_0xd971('0x44')]);_0x350d1a[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x190c2b[_0xd971('0x48')],qs[_0xd971('0x49')](_0x3e9810[_0xd971('0x44')]['fields']));_0x350d1a[_0xd971('0x4a')]=_0x350d1a[_0xd971('0x4a')]['length']?_0x350d1a[_0xd971('0x4a')]:_0x190c2b[_0xd971('0x48')];if(_0x3e9810[_0xd971('0x44')][_0xd971('0x54')]){_0x350d1a[_0xd971('0x55')]=[{'all':!![]}];}_0x350d1a=_[_0xd971('0x52')]({},_0x350d1a,_0x3e9810['options']);return db[_0xd971('0x3f')][_0xd971('0x59')](_0x350d1a)[_0xd971('0x21')](handleEntityNotFound(_0x455a97,null))[_0xd971('0x21')](respondWithResult(_0x455a97,null))[_0xd971('0x2b')](handleError(_0x455a97,null));};exports[_0xd971('0x5a')]=function(_0x59ca5e,_0x1df62e){return db[_0xd971('0x3f')][_0xd971('0x5a')](_0x59ca5e[_0xd971('0x5b')],{})[_0xd971('0x21')](function(_0x5575dc){var _0x1064f0=_0x59ca5e['user'][_0xd971('0x38')]({'plain':!![]});if(!_0x1064f0)throw new Error(_0xd971('0x5c'));if(_0x1064f0[_0xd971('0x5d')]===_0xd971('0x5e')){var _0x39fd54=_0x5575dc['get']({'plain':!![]});var _0x1b8aef=_0xd971('0x39');return db[_0xd971('0x5f')][_0xd971('0x59')]({'where':{'name':_0x1b8aef,'userProfileId':_0x1064f0[_0xd971('0x60')]},'raw':!![]})[_0xd971('0x21')](function(_0x21d269){if(_0x21d269&&_0x21d269[_0xd971('0x61')]===0x0){return db[_0xd971('0x3a')][_0xd971('0x5a')]({'name':_0x39fd54[_0xd971('0x3c')],'resourceId':_0x39fd54['id'],'type':_0x21d269[_0xd971('0x3c')],'sectionId':_0x21d269['id']},{})[_0xd971('0x21')](function(){return _0x5575dc;});}else{return _0x5575dc;}})[_0xd971('0x2b')](function(_0x535bb8){logger[_0xd971('0x28')](_0xd971('0x62'),_0x535bb8);throw _0x535bb8;});}return _0x5575dc;})[_0xd971('0x21')](respondWithResult(_0x1df62e,0xc9))[_0xd971('0x2b')](handleError(_0x1df62e,null));};exports[_0xd971('0x36')]=function(_0x22c9ce,_0x458e0e){if(_0x22c9ce[_0xd971('0x5b')]['id']){delete _0x22c9ce[_0xd971('0x5b')]['id'];}return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x22c9ce[_0xd971('0x58')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xd971('0x21')](handleEntityNotFound(_0x458e0e,null))[_0xd971('0x21')](saveUpdates(_0x22c9ce[_0xd971('0x5b')],null))[_0xd971('0x21')](respondWithResult(_0x458e0e,null))[_0xd971('0x2b')](handleError(_0x458e0e,null));};exports['destroy']=function(_0x256348,_0x18a71e){return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x256348[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x18a71e,null))[_0xd971('0x21')](removeEntity(_0x18a71e,null))['catch'](handleError(_0x18a71e,null));};exports['describe']=function(_0x30c7b6,_0x36c45a){return db[_0xd971('0x3f')][_0xd971('0x63')]()[_0xd971('0x21')](respondWithResult(_0x36c45a,null))[_0xd971('0x2b')](handleError(_0x36c45a,null));};exports[_0xd971('0x64')]=function(_0x3d2054,_0x5f5b7f,_0x4a0323){if(_0x3d2054['body']['id']){delete _0x3d2054[_0xd971('0x5b')]['id'];}return db[_0xd971('0x3f')]['find']({'where':{'id':_0x3d2054[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x5f5b7f,null))[_0xd971('0x21')](function(_0x45870b){if(_0x45870b){_0x3d2054[_0xd971('0x5b')]['SmsAccountId']=_0x45870b['id'];return db[_0xd971('0x65')][_0xd971('0x5a')](_0x3d2054[_0xd971('0x5b')]);}})[_0xd971('0x21')](respondWithResult(_0x5f5b7f,null))[_0xd971('0x2b')](handleError(_0x5f5b7f,null));};exports[_0xd971('0x66')]=function(_0x2acd0c,_0x24f6e7,_0x4ab00e){var _0x42fe33={'raw':![],'where':{}};var _0x2456b0={};var _0x4e9cda={'count':0x0,'rows':[]};return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x2acd0c['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x24f6e7,null))[_0xd971('0x21')](function(_0x4cdb02){if(_0x4cdb02){_0x2456b0[_0xd971('0x48')]=_['keys'](db['Disposition']['rawAttributes']);_0x2456b0['query']=_['keys'](_0x2acd0c[_0xd971('0x44')]);_0x2456b0[_0xd971('0x46')]=_[_0xd971('0x47')](_0x2456b0[_0xd971('0x48')],_0x2456b0[_0xd971('0x44')]);_0x42fe33[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x2456b0['model'],qs[_0xd971('0x49')](_0x2acd0c[_0xd971('0x44')][_0xd971('0x49')]));_0x42fe33[_0xd971('0x4a')]=_0x42fe33[_0xd971('0x4a')]['length']?_0x42fe33[_0xd971('0x4a')]:_0x2456b0[_0xd971('0x48')];if(!_0x2acd0c[_0xd971('0x44')][_0xd971('0x4c')](_0xd971('0x68'))){_0x42fe33[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x2acd0c[_0xd971('0x44')][_0xd971('0x31')]);_0x42fe33[_0xd971('0x2e')]=qs[_0xd971('0x2e')](_0x2acd0c[_0xd971('0x44')]['offset']);}_0x42fe33[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x2acd0c[_0xd971('0x44')][_0xd971('0x4e')]);_0x42fe33['where']=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x2acd0c[_0xd971('0x44')],_0x2456b0[_0xd971('0x46')]));_0x42fe33[_0xd971('0x51')][_0xd971('0x69')]=_0x4cdb02['id'];if(_0x2acd0c[_0xd971('0x44')][_0xd971('0x50')]){_0x42fe33[_0xd971('0x51')]=_['merge'](_0x42fe33[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x42fe33[_0xd971('0x4a')],function(_0x54864a){var _0x44ae85={};_0x44ae85[_0x54864a]={'$like':'%'+_0x2acd0c[_0xd971('0x44')][_0xd971('0x50')]+'%'};return _0x44ae85;})});}_0x42fe33=_[_0xd971('0x52')]({},_0x42fe33,_0x2acd0c[_0xd971('0x53')]);return db[_0xd971('0x65')][_0xd971('0x30')]({'where':_0x42fe33['where']})[_0xd971('0x21')](function(_0x249d73){_0x4e9cda[_0xd971('0x30')]=_0x249d73;if(_0x2acd0c[_0xd971('0x44')][_0xd971('0x54')]){_0x42fe33['include']=[{'all':!![]}];}return db['Disposition'][_0xd971('0x56')](_0x42fe33);})[_0xd971('0x21')](function(_0x528c45){_0x4e9cda[_0xd971('0x57')]=_0x528c45;return _0x4e9cda;});}})[_0xd971('0x21')](respondWithFilteredResult(_0x24f6e7,_0x42fe33))['catch'](handleError(_0x24f6e7,null));};exports[_0xd971('0x6a')]=function(_0x52877d,_0x3c740e,_0x397453){return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x52877d[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x3c740e,null))[_0xd971('0x21')](function(_0x266755){if(_0x266755){return _0x266755[_0xd971('0x6a')](_0x52877d['query'][_0xd971('0x6b')]);}})[_0xd971('0x21')](respondWithStatusCode(_0x3c740e,null))[_0xd971('0x2b')](handleError(_0x3c740e,null));};exports['addAnswer']=function(_0x40b5f2,_0x520128,_0x189730){if(_0x40b5f2['body']['id']){delete _0x40b5f2[_0xd971('0x5b')]['id'];}return db['SmsAccount'][_0xd971('0x59')]({'where':{'id':_0x40b5f2[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x520128,null))[_0xd971('0x21')](function(_0x208005){if(_0x208005){_0x40b5f2[_0xd971('0x5b')][_0xd971('0x69')]=_0x208005['id'];return db['CannedAnswer']['create'](_0x40b5f2['body']);}})['then'](respondWithResult(_0x520128,null))[_0xd971('0x2b')](handleError(_0x520128,null));};exports[_0xd971('0x6c')]=function(_0x346bf7,_0x766c07,_0x30928a){var _0x2bc89e={'raw':![],'where':{}};var _0x130e61={};var _0xb38711={'count':0x0,'rows':[]};return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x346bf7['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x766c07,null))[_0xd971('0x21')](function(_0x31182c){if(_0x31182c){_0x130e61['model']=_[_0xd971('0x45')](db[_0xd971('0x6d')]['rawAttributes']);_0x130e61[_0xd971('0x44')]=_['keys'](_0x346bf7['query']);_0x130e61['filters']=_[_0xd971('0x47')](_0x130e61['model'],_0x130e61[_0xd971('0x44')]);_0x2bc89e['attributes']=_['intersection'](_0x130e61[_0xd971('0x48')],qs[_0xd971('0x49')](_0x346bf7[_0xd971('0x44')][_0xd971('0x49')]));_0x2bc89e[_0xd971('0x4a')]=_0x2bc89e[_0xd971('0x4a')][_0xd971('0x4b')]?_0x2bc89e[_0xd971('0x4a')]:_0x130e61['model'];if(!_0x346bf7[_0xd971('0x44')][_0xd971('0x4c')]('nolimit')){_0x2bc89e['limit']=qs[_0xd971('0x31')](_0x346bf7[_0xd971('0x44')][_0xd971('0x31')]);_0x2bc89e[_0xd971('0x2e')]=qs[_0xd971('0x2e')](_0x346bf7[_0xd971('0x44')][_0xd971('0x2e')]);}_0x2bc89e[_0xd971('0x4d')]=qs['sort'](_0x346bf7[_0xd971('0x44')][_0xd971('0x4e')]);_0x2bc89e[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x346bf7[_0xd971('0x44')],_0x130e61['filters']));_0x2bc89e[_0xd971('0x51')][_0xd971('0x69')]=_0x31182c['id'];if(_0x346bf7[_0xd971('0x44')][_0xd971('0x50')]){_0x2bc89e[_0xd971('0x51')]=_[_0xd971('0x52')](_0x2bc89e[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x2bc89e['attributes'],function(_0x420a6d){var _0x3db276={};_0x3db276[_0x420a6d]={'$like':'%'+_0x346bf7[_0xd971('0x44')]['filter']+'%'};return _0x3db276;})});}_0x2bc89e=_[_0xd971('0x52')]({},_0x2bc89e,_0x346bf7[_0xd971('0x53')]);return db[_0xd971('0x6d')][_0xd971('0x30')]({'where':_0x2bc89e['where']})[_0xd971('0x21')](function(_0x58e355){_0xb38711[_0xd971('0x30')]=_0x58e355;if(_0x346bf7[_0xd971('0x44')][_0xd971('0x54')]){_0x2bc89e[_0xd971('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0xd971('0x56')](_0x2bc89e);})['then'](function(_0x4fb2a9){_0xb38711[_0xd971('0x57')]=_0x4fb2a9;return _0xb38711;});}})[_0xd971('0x21')](respondWithFilteredResult(_0x766c07,_0x2bc89e))['catch'](handleError(_0x766c07,null));};exports['removeAnswers']=function(_0x589701,_0x1e7f3f,_0x33d30d){return db[_0xd971('0x3f')]['find']({'where':{'id':_0x589701[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x1e7f3f,null))[_0xd971('0x21')](function(_0x3608f4){if(_0x3608f4){return _0x3608f4[_0xd971('0x6e')](_0x589701[_0xd971('0x44')]['ids']);}})['then'](respondWithStatusCode(_0x1e7f3f,null))[_0xd971('0x2b')](handleError(_0x1e7f3f,null));};exports[_0xd971('0x6f')]=function(_0x56dca5,_0x5ebddf,_0x558702){var _0x578222={'channel':_0xd971('0x70')};var _0x6d9eb3=[];var _0x25910f=[];var _0x18cda1={};return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x56dca5['params']['id']},'include':[{'model':db[_0xd971('0x71')],'as':_0xd971('0x72')}]})['then'](handleEntityNotFound(_0x5ebddf,null))['then'](function(_0x43f3e0){_0x578222[_0xd971('0x73')]=_0x43f3e0;_0x578222[_0xd971('0x74')]=_[_0xd971('0x75')](_0x43f3e0[_0xd971('0x72')],[_0xd971('0x76')],['asc']);if(_0x578222[_0xd971('0x73')][_0xd971('0x72')]){delete _0x578222['account'][_0xd971('0x72')];}return db['CmContact'][_0xd971('0x63')]();})[_0xd971('0x21')](function(_0x352936){if(!_0x352936){throw new db['Sequelize'][(_0xd971('0x77'))]('no\x20available\x20attributes');}_0x6d9eb3=_[_0xd971('0x78')](_['keys'](_0x352936),['createdAt','updatedAt']);_0x25910f=_[_0xd971('0x78')](_[_0xd971('0x45')](_0x352936),[_0xd971('0x79'),_0xd971('0x7a'),_0xd971('0x7b'),_0xd971('0x7c')]);_0x578222[_0xd971('0x5b')]={'mapKey':_0xd971('0x7d')};if(_0x578222[_0xd971('0x73')][_0xd971('0x41')]){switch(_0x578222[_0xd971('0x73')]['type']){case'twilio':_0x578222[_0xd971('0x5b')]['from']=_0x56dca5['body']['From'];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x7e')];_0x578222['body'][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x80')];break;case _0xd971('0x81'):_0x578222['body'][_0xd971('0x82')]='+'+_0x56dca5[_0xd971('0x5b')][_0xd971('0x83')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5['body'][_0xd971('0x84')];break;case _0xd971('0x85'):_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x82')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5['body'][_0xd971('0x2a')];break;case _0xd971('0x86'):_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x82')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x5b')];_0x578222[_0xd971('0x5b')]['messageId']=_0x56dca5[_0xd971('0x5b')][_0xd971('0x87')];break;case'plivo':_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x88')];_0x578222[_0xd971('0x5b')]['body']=_0x56dca5['body'][_0xd971('0x89')];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')]['MessageUUID'];break;case _0xd971('0x8a'):_0x578222['body'][_0xd971('0x82')]='+'+_0x56dca5['body'][_0xd971('0x8b')][0x0][_0xd971('0x82')];_0x578222['body'][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8b')][0x0]['text'];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8b')][0x0][_0xd971('0x7f')];break;case _0xd971('0x8c'):_0x578222['body']['from']=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8d')];_0x578222['body'][_0xd971('0x5b')]=_0x56dca5['body']['segmentedMessage'][_0xd971('0x2a')];break;case _0xd971('0x8e'):_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8f')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')]['text'];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5['body'][_0xd971('0x90')];break;case _0xd971('0x91'):_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][0x0]['message']['id'];_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][0x0][_0xd971('0x2a')][_0xd971('0x82')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][0x0][_0xd971('0x2a')]['text'];break;case'intelepeer':_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')]['from'];_0x578222['body'][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x2a')];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x92')];break;}}if(_0x578222[_0xd971('0x5b')]['id']){delete _0x578222['body']['id'];}if(_[_0xd971('0x93')](_0x578222[_0xd971('0x5b')][_0xd971('0x82')])){throw new db['Sequelize']['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x578222[_0xd971('0x5b')][_0xd971('0x5b')])||_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]===''){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xd971('0x93')](_0x578222['body'][_0xd971('0x95')])){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))](_0xd971('0x96')+_0x25910f);}if(!_[_0xd971('0x97')](_0x25910f,_0x578222[_0xd971('0x5b')]['mapKey'])){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x25910f);}_0x18cda1[_0x578222[_0xd971('0x5b')]['mapKey']]=_0x578222[_0xd971('0x5b')][_0xd971('0x82')];return db[_0xd971('0x98')][_0xd971('0x59')]({'where':{'id':_0x578222[_0xd971('0x73')][_0xd971('0x7c')]},'include':[{'model':db[_0xd971('0x99')],'as':'Contacts','where':_0x18cda1,'limit':0x1,'order':[[_0xd971('0x7a'),_0xd971('0x9a')]]}]});})[_0xd971('0x21')](handleEntityNotFound(_0x5ebddf,null))[_0xd971('0x21')](function(_0x46f13a){if(_0x46f13a){_0x578222[_0xd971('0x9b')]=_[_0xd971('0x9c')](_0x46f13a,[_0xd971('0x9d')]);if(_0x46f13a[_0xd971('0x9d')][_0xd971('0x4b')]){return _0x46f13a['Contacts'][0x0];}var _0x174460=_[_0xd971('0x9e')](_0x578222[_0xd971('0x5b')],{'firstName':_0x578222['body']['from'],'ListId':_0x46f13a['id']});_0x174460[_0x578222[_0xd971('0x5b')][_0xd971('0x95')]]=_0x578222[_0xd971('0x5b')][_0xd971('0x82')];return db[_0xd971('0x99')][_0xd971('0x5a')](_0x174460,{'fields':_0x6d9eb3,'raw':!![]});}})['then'](handleEntityNotFound(_0x5ebddf,null))['then'](function(_0x37ad11){if(_0x37ad11){_0x578222['contact']=_0x37ad11;var _0x322a11={'ContactId':_0x37ad11['id'],'phone':_0x578222[_0xd971('0x5b')][_0xd971('0x82')],'SmsAccountId':_0x56dca5[_0xd971('0x58')]['id']};var _0x460bc9={'ContactId':_0x37ad11['id'],'SmsAccountId':_0x56dca5[_0xd971('0x58')]['id'],'closed':![]};return db[_0xd971('0x9f')][_0xd971('0x59')]({'where':_0x460bc9})[_0xd971('0x21')](function(_0x170bf1){if(_0x170bf1){return[_0x170bf1,![]];}return db['SmsInteraction']['create'](_0x322a11)[_0xd971('0x21')](function(_0x5effa3){return[_0x5effa3,!![]];});});}})[_0xd971('0xa0')](function(_0x196d80,_0x381bc8){_0x578222[_0xd971('0xa1')]=_0x196d80[_0xd971('0x38')]({'plain':!![]});_0x578222[_0xd971('0xa1')][_0xd971('0xa2')]=![];if(_0x381bc8){if(_0x578222['account'][_0xd971('0xa3')]){_0x578222[_0xd971('0x74')]['push']({'id':0x0,'priority':_0x578222[_0xd971('0x74')][_0xd971('0x4b')]+0x1,'app':_0xd971('0xa4'),'appdata':_0xd971('0xa5'),'interval':'*,*,*,*'});}_0x578222[_0xd971('0xa1')]['created']=!![];}return db[_0xd971('0xa6')][_0xd971('0x5a')]({'phone':_0x578222['body'][_0xd971('0x82')],'messageId':_0x578222[_0xd971('0x5b')][_0xd971('0x7f')],'body':_0x578222['body'][_0xd971('0x5b')],'SmsAccountId':_0x56dca5[_0xd971('0x58')]['id'],'SmsInteractionId':_0x196d80['id'],'direction':'in','ContactId':_0x196d80[_0xd971('0xa7')],'AttachmentId':_0x578222[_0xd971('0x5b')][_0xd971('0xa8')]});})['then'](function(_0x35ce2a){_0x578222[_0xd971('0x2a')]=_0x35ce2a;if(_0x578222[_0xd971('0xa1')][_0xd971('0xa9')]){return db[_0xd971('0xaa')][_0xd971('0x59')]({'attributes':['id',_0xd971('0x3c')],'where':{'id':_0x578222[_0xd971('0xa1')][_0xd971('0xa9')]}})[_0xd971('0x21')](function(_0x247728){if(_0x247728){_0x578222[_0xd971('0x74')][_0xd971('0xab')]({'id':0x0,'priority':0x0,'app':_0xd971('0xac'),'appdata':_0x247728[_0xd971('0x3c')]+','+(_0x578222[_0xd971('0x73')][_0xd971('0xad')]||0xa),'interval':_0xd971('0xae')});}return respondWithRpcPromise(_0xd971('0xaf'),_0xd971('0xb0'),_0x578222);});}return respondWithRpcPromise('Start',_0xd971('0xb0'),_0x578222);})[_0xd971('0x21')](function(_0x5784cc){if(_0x5784cc){var _0x54420c=0xc8;var _0x3277ca=_0xd971('0xb1');logger[_0xd971('0x22')](_0xd971('0x26'),_0x3277ca,_0x54420c,_0xd971('0xb2'));logger[_0xd971('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x3277ca,_0x54420c,'entity\x20found',JSON[_0xd971('0x27')](_0x5784cc));if(_0x578222[_0xd971('0x73')]['type']===_0xd971('0xb3')){return _0x5ebddf[_0xd971('0x2d')](_0x54420c)[_0xd971('0x32')](_0xd971('0xb4'),_0xd971('0xb5'))[_0xd971('0xb6')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x5ebddf[_0xd971('0x2d')](_0x54420c)['json'](_0x5784cc);}}})[_0xd971('0x2b')](handleError(_0x5ebddf,null));};exports['addApplications']=function(_0x114a80,_0x39efa7,_0x38c227){return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x114a80[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x39efa7,null))[_0xd971('0x21')](function(_0x5cad19){if(_0x5cad19){return db[_0xd971('0xb7')][_0xd971('0xb8')](function(_0x42a81c){return db['SmsApplication'][_0xd971('0x37')]({'where':{'SmsAccountId':_0x114a80[_0xd971('0x58')]['id']},'transaction':_0x42a81c})[_0xd971('0x21')](function(_0x4bfa97){var _0x51cd36=_[_0xd971('0x43')](_0x114a80[_0xd971('0x5b')],function(_0xd1f18c){_0xd1f18c[_0xd971('0x69')]=_0x114a80[_0xd971('0x58')]['id'];return _0xd1f18c;});return db['SmsApplication'][_0xd971('0xb9')](_0x51cd36,{'transaction':_0x42a81c});});})[_0xd971('0x21')](function(){return db[_0xd971('0x71')][_0xd971('0xba')]({'where':{'SmsAccountId':_0x114a80[_0xd971('0x58')]['id']},'order':_0xd971('0x76')});});}})[_0xd971('0x21')](respondWithResult(_0x39efa7,null))[_0xd971('0x2b')](handleError(_0x39efa7,null));};exports[_0xd971('0xbb')]=function(_0x90dbfb,_0x58f74a,_0x2c0bb0){var _0x276099={};var _0x184e4a={};var _0x483c52;var _0x119a24;return db[_0xd971('0x3f')]['findOne']({'where':{'id':_0x90dbfb[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x58f74a,null))[_0xd971('0x21')](function(_0x3517c4){if(_0x3517c4){_0x483c52=_0x3517c4;_0x184e4a[_0xd971('0x48')]=_['keys'](db[_0xd971('0x71')]['rawAttributes']);_0x184e4a[_0xd971('0x44')]=_[_0xd971('0x45')](_0x90dbfb[_0xd971('0x44')]);_0x184e4a[_0xd971('0x46')]=_['intersection'](_0x184e4a['model'],_0x184e4a['query']);_0x276099[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x184e4a['model'],qs[_0xd971('0x49')](_0x90dbfb[_0xd971('0x44')]['fields']));_0x276099['attributes']=_0x276099[_0xd971('0x4a')][_0xd971('0x4b')]?_0x276099[_0xd971('0x4a')]:_0x184e4a[_0xd971('0x48')];_0x276099[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x90dbfb['query'][_0xd971('0x4e')]);_0x276099[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x90dbfb[_0xd971('0x44')],_0x184e4a[_0xd971('0x46')]));if(_0x90dbfb[_0xd971('0x44')][_0xd971('0x50')]){_0x276099[_0xd971('0x51')]=_['merge'](_0x276099[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x276099[_0xd971('0x4a')],function(_0x4ad914){var _0x5b3682={};_0x5b3682[_0x4ad914]={'$like':'%'+_0x90dbfb[_0xd971('0x44')][_0xd971('0x50')]+'%'};return _0x5b3682;})});}_0x276099=_[_0xd971('0x52')]({},_0x276099,_0x90dbfb[_0xd971('0x53')]);return _0x483c52[_0xd971('0xbb')](_0x276099);}})['then'](function(_0x12fb03){if(_0x12fb03){_0x119a24=_0x12fb03[_0xd971('0x4b')];if(!_0x90dbfb[_0xd971('0x44')][_0xd971('0x4c')]('nolimit')){_0x276099[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x90dbfb[_0xd971('0x44')][_0xd971('0x31')]);_0x276099['offset']=qs[_0xd971('0x2e')](_0x90dbfb[_0xd971('0x44')][_0xd971('0x2e')]);}return _0x483c52[_0xd971('0xbb')](_0x276099);}})[_0xd971('0x21')](function(_0x3a0e45){if(_0x3a0e45){return _0x3a0e45?{'count':_0x119a24,'rows':_0x3a0e45}:null;}})['then'](respondWithResult(_0x58f74a,null))[_0xd971('0x2b')](handleError(_0x58f74a,null));};exports[_0xd971('0xbc')]=function(_0x46b794,_0x119d7b,_0x31a3a1){var _0x3986e5={'raw':![],'where':{}};var _0x459d05={};var _0xdb29e7={'count':0x0,'rows':[]};return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x46b794[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x119d7b,null))['then'](function(_0x194043){if(_0x194043){_0x459d05[_0xd971('0x48')]=_['keys'](db[_0xd971('0x9f')][_0xd971('0x40')]);_0x459d05[_0xd971('0x44')]=_['keys'](_0x46b794[_0xd971('0x44')]);_0x459d05[_0xd971('0x46')]=_[_0xd971('0x47')](_0x459d05[_0xd971('0x48')],_0x459d05[_0xd971('0x44')]);_0x3986e5['attributes']=_[_0xd971('0x47')](_0x459d05['model'],qs[_0xd971('0x49')](_0x46b794[_0xd971('0x44')][_0xd971('0x49')]));_0x3986e5[_0xd971('0x4a')]=_0x3986e5[_0xd971('0x4a')][_0xd971('0x4b')]?_0x3986e5[_0xd971('0x4a')]:_0x459d05[_0xd971('0x48')];if(!_0x46b794[_0xd971('0x44')][_0xd971('0x4c')](_0xd971('0x68'))){_0x3986e5[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x46b794['query'][_0xd971('0x31')]);_0x3986e5['offset']=qs[_0xd971('0x2e')](_0x46b794['query'][_0xd971('0x2e')]);}_0x3986e5[_0xd971('0x4d')]=qs['sort'](_0x46b794[_0xd971('0x44')][_0xd971('0x4e')]);_0x3986e5[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x46b794[_0xd971('0x44')],_0x459d05['filters']));_0x3986e5['where'][_0xd971('0x69')]=_0x194043['id'];if(_0x46b794[_0xd971('0x44')][_0xd971('0x50')]){_0x3986e5[_0xd971('0x51')]=_[_0xd971('0x52')](_0x3986e5[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x3986e5[_0xd971('0x4a')],function(_0x361e62){var _0x357688={};_0x357688[_0x361e62]={'$like':'%'+_0x46b794[_0xd971('0x44')]['filter']+'%'};return _0x357688;})});}_0x3986e5=_['merge']({},_0x3986e5,_0x46b794[_0xd971('0x53')]);return db[_0xd971('0x9f')]['count']({'where':_0x3986e5[_0xd971('0x51')]})[_0xd971('0x21')](function(_0x9d4a28){_0xdb29e7['count']=_0x9d4a28;if(_0x46b794[_0xd971('0x44')]['includeAll']){_0x3986e5[_0xd971('0x55')]=[{'model':db[_0xd971('0x99')],'as':_0xd971('0xbd'),'required':![]},{'model':db[_0xd971('0xaa')],'as':'Owner','attributes':['name',_0xd971('0xbe'),_0xd971('0xbf')],'required':![]},{'model':db[_0xd971('0xc0')],'as':_0xd971('0xc1'),'attributes':['id','name',_0xd971('0xc2')],'where':_0x46b794[_0xd971('0x44')]['tag']?{'id':_0x46b794[_0xd971('0x44')][_0xd971('0xc3')]}:undefined,'required':_0x46b794[_0xd971('0x44')][_0xd971('0xc3')]?!![]:![]}];}return db['SmsInteraction'][_0xd971('0x56')](_0x3986e5);})[_0xd971('0x21')](function(_0x289af0){_0xdb29e7[_0xd971('0x57')]=_0x289af0;return _0xdb29e7;});}})[_0xd971('0x21')](respondWithFilteredResult(_0x119d7b,_0x3986e5))['catch'](handleError(_0x119d7b,null));};exports[_0xd971('0xb6')]=function(_0xbe5bd,_0x4813e6,_0x2455b3){var _0xd0b66f,_0xab3165,_0x332afd;if(_[_0xd971('0x93')](_0xbe5bd[_0xd971('0x5b')][_0xd971('0x5b')])||_0xbe5bd[_0xd971('0x5b')][_0xd971('0x5b')]===''){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))](_0xd971('0xc4'));}if(_[_0xd971('0x93')](_0xbe5bd['body']['to'])){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))](_0xd971('0xc5'));}_0xd0b66f=_0xbe5bd[_0xd971('0x5b')]['to'];return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0xbe5bd[_0xd971('0x58')]['id']},'include':[{'model':db[_0xd971('0x98')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0xd0b66f},'limit':0x1,'order':[['updatedAt',_0xd971('0x9a')]]}]}]})[_0xd971('0x21')](handleEntityNotFound(_0x4813e6,null))[_0xd971('0x21')](function(_0x3e590a){if(_0x3e590a&&_0x3e590a[_0xd971('0xc6')]){_0xab3165=_0x3e590a['get']({'plain':!![]});if(_0xab3165[_0xd971('0xc6')]&&_0xab3165[_0xd971('0xc6')][_0xd971('0x9d')][_0xd971('0x4b')]){return _0xab3165[_0xd971('0xc6')]['Contacts'][0x0];}return db[_0xd971('0x99')][_0xd971('0x5a')](_[_0xd971('0x9e')](_0xbe5bd[_0xd971('0x5b')],{'firstName':_0xd0b66f,'mobile':_0xd0b66f,'phone':_0xd0b66f,'ListId':_0xab3165['ListId']}));}})[_0xd971('0x21')](handleEntityNotFound(_0x4813e6,null))[_0xd971('0x21')](function(_0x155237){if(_0x155237){_0x332afd=_0x155237;return db[_0xd971('0x9f')][_0xd971('0x59')]({'where':{'ContactId':_0x332afd['id'],'closed':![],'SmsAccountId':_0xab3165['id']}})['then'](function(_0xfc8e3f){if(_0xfc8e3f){return[_0xfc8e3f,![]];}return db[_0xd971('0x9f')][_0xd971('0x5a')]({'UserId':_0xbe5bd[_0xd971('0x5e')]['id'],'ContactId':_0x332afd['id'],'SmsAccountId':_0xab3165['id'],'phone':_0xd0b66f,'firstMsgDirection':'out','Messages':[_[_0xd971('0x52')](_0xbe5bd['body'],{'read':![],'body':_0xbe5bd['body'][_0xd971('0x5b')],'phone':_0xd0b66f,'SmsAccountId':_0xab3165['id'],'UserId':_0xbe5bd[_0xd971('0x5e')]['id'],'ContactId':_0x332afd['id']})]},{'include':[{'model':db[_0xd971('0xa6')],'as':_0xd971('0xc7')}]})[_0xd971('0x21')](function(_0x554c1a){return[_0x554c1a,!![]];});});}})['spread'](function(_0x3126bf,_0x515330){if(_0x515330){return _0x3126bf;}return db[_0xd971('0xa6')][_0xd971('0x5a')](_[_0xd971('0x52')](_0xbe5bd['body'],{'read':![],'body':_0xbe5bd['body'][_0xd971('0x5b')],'phone':_0xd0b66f,'SmsAccountId':_0xab3165['id'],'SmsInteractionId':_0x3126bf['id'],'UserId':_0xbe5bd[_0xd971('0x5e')]['id'],'ContactId':_0x332afd['id']}))[_0xd971('0x21')](function(_0x121969){_0x3126bf[_0xd971('0xc8')][_0xd971('0xc7')]=[];_0x3126bf[_0xd971('0xc8')][_0xd971('0xc7')]['push'](_0x121969[_0xd971('0xc8')]);return _0x3126bf;});})[_0xd971('0x21')](respondWithResult(_0x4813e6,null))['catch'](handleError(_0x4813e6,null));};exports[_0xd971('0x2d')]=function(_0x206c83,_0x425ee8,_0x3fe1ce){if(_0x206c83[_0xd971('0x5b')]['id']){delete _0x206c83[_0xd971('0x5b')]['id'];}var _0x1148c2,_0x5c3aed,_0x3ddbd6;return db['SmsAccount'][_0xd971('0x59')]({'where':{'id':_0x206c83['params']['id']}})['then'](handleEntityNotFound(_0x425ee8,null))[_0xd971('0x21')](function(_0x51abe5){if(_0x51abe5){_0x3ddbd6=_0x51abe5;logger['debug'](_0xd971('0x26'),'status',_0xd971('0xc9'),_0x51abe5['type'],util['inspect'](_0x206c83['body'],{'showHidden':![],'depth':null}));switch(_0x51abe5[_0xd971('0x41')]){case _0xd971('0x81'):if(_0x206c83['body'][_0xd971('0xca')]&&_0x206c83[_0xd971('0x5b')]['status']){_0x5c3aed=_0x206c83[_0xd971('0x5b')]['status'];return db['SmsMessage']['find']({'where':{'messageId':_0x206c83[_0xd971('0x5b')]['skebby_dispatch_id']}});}break;case _0xd971('0x85'):if(_0x206c83[_0xd971('0x5b')][_0xd971('0xcb')]&&_0x206c83[_0xd971('0x5b')][_0xd971('0xcc')]){_0x5c3aed=_0x206c83['body'][_0xd971('0xcc')];return db['SmsMessage'][_0xd971('0x59')]({'where':{'messageId':_0x206c83[_0xd971('0x5b')]['requestid']}});}break;case _0xd971('0x86'):if(_0x206c83['body'][_0xd971('0x87')]&&_0x206c83['body']['status_code']){_0x5c3aed=_0x206c83['body']['status_code'];return db[_0xd971('0xa6')]['find']({'where':{'messageId':_0x206c83['body']['message_id']}});}break;case _0xd971('0x8a'):var _0x26f776=_0x206c83['body'][_0xd971('0x8b')][0x0];if(_0x26f776[_0xd971('0x7f')]&&_0x26f776[_0xd971('0x2d')][_0xd971('0xcd')]===_0xd971('0xce')){_0x5c3aed=_0x26f776[_0xd971('0x2d')]['groupName'];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x26f776['messageId']}});}break;case'clickatell':if(_0x206c83[_0xd971('0x5b')][_0xd971('0x7f')]&&_0x206c83[_0xd971('0x5b')][_0xd971('0x2d')]){_0x5c3aed=_0x206c83[_0xd971('0x5b')][_0xd971('0x2d')];return db['SmsMessage'][_0xd971('0x59')]({'where':{'messageId':_0x206c83['body'][_0xd971('0x7f')]}});}break;case _0xd971('0x91'):if(_0x206c83[_0xd971('0x5b')][0x0][_0xd971('0x2a')]['id']){_0x5c3aed=_0x206c83['body'][0x0]['type'];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x206c83[_0xd971('0x5b')][0x0][_0xd971('0x2a')]['id']}});}break;case _0xd971('0xcf'):if(_0x206c83['body']['redif']&&_0x206c83[_0xd971('0x5b')]['status']){_0x5c3aed=_0x206c83[_0xd971('0x5b')][_0xd971('0x2d')];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x206c83[_0xd971('0x5b')][_0xd971('0xd0')]}});}break;}}})[_0xd971('0x21')](handleEntityNotFound(_0x425ee8,null))[_0xd971('0x21')](function(_0x57b5a7){if(_0x57b5a7){_0x1148c2=_0x57b5a7;switch(_0x3ddbd6[_0xd971('0x41')]){case _0xd971('0x81'):if(_0x5c3aed===_0xd971('0xce')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),_0xd971('0x81'),util[_0xd971('0xd1')](_0x206c83['body'],{'showHidden':![],'depth':null}));}break;case _0xd971('0x85'):if(_0x5c3aed==='1'){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),_0xd971('0x81'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xd971('0x86'):if(!_0x206c83[_0xd971('0x5b')][_0xd971('0xd2')]&&_0x5c3aed>=0xc8&&_0x5c3aed<=0xce){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),_0xd971('0x86'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xd971('0x8a'):var _0x3ba927=_0x206c83[_0xd971('0x5b')][_0xd971('0x8b')][0x0];if(_0x3ba927['status'][_0xd971('0xcd')]===_0xd971('0xce')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),'status','infobip',util[_0xd971('0xd1')](_0x206c83['body'],{'showHidden':![],'depth':null}));}break;case _0xd971('0x8e'):if(_0x5c3aed=='DELIVERED_TO_GATEWAY'||_0x5c3aed==_0xd971('0xd3')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd971('0x2d'),_0xd971('0x8e'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x5c3aed==_0xd971('0xd4')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger['error'](_0xd971('0x26'),'status','bandwidth',util['inspect'](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xd971('0xcf'):if(_0x5c3aed===_0xd971('0xd5')||_0x5c3aed===_0xd971('0xd6')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),'status',_0xd971('0xcf'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x1148c2;}})['then'](respondWithResult(_0x425ee8,null))[_0xd971('0x2b')](handleError(_0x425ee8,null));};exports['statusGet']=function(_0x5e868a,_0x3a184f,_0x1dbc74){var _0x4ea2f8,_0x53f967,_0x4c85cc;return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x5e868a[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x3a184f,null))[_0xd971('0x21')](function(_0x2f7ff2){if(_0x2f7ff2){_0x4c85cc=_0x2f7ff2;logger[_0xd971('0x25')](_0xd971('0x26'),'status',_0xd971('0xc9'),_0x2f7ff2[_0xd971('0x41')],util[_0xd971('0xd1')](_0x5e868a['query'],{'showHidden':![],'depth':null}));switch(_0x2f7ff2[_0xd971('0x41')]){case _0xd971('0x8c'):if(_0x5e868a[_0xd971('0x44')][_0xd971('0xd7')]&&_0x5e868a[_0xd971('0x44')][_0xd971('0xd8')]){_0x53f967=_0x5e868a[_0xd971('0x44')][_0xd971('0xd8')];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x5e868a['query'][_0xd971('0xd7')]}});}break;}}})[_0xd971('0x21')](handleEntityNotFound(_0x3a184f,null))[_0xd971('0x21')](function(_0xf053d9){if(_0xf053d9){_0x4ea2f8=_0xf053d9;switch(_0x4c85cc[_0xd971('0x41')]){case _0xd971('0x8c'):if(_0x53f967==='2'||_0x53f967==='6'){return _0x4ea2f8['update']({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),'csc',util['inspect'](_0x5e868a[_0xd971('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x4ea2f8;}})[_0xd971('0x21')](respondWithResult(_0x3a184f,null))['catch'](handleError(_0x3a184f,null));};exports[_0xd971('0xd9')]=function(_0x2c9416,_0x5a75bf,_0x5049a2){return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x2c9416[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x5a75bf,null))[_0xd971('0x21')](function(_0x37ab56){if(_0x37ab56){return _0x37ab56[_0xd971('0xd9')](_0x2c9416[_0xd971('0x5b')][_0xd971('0x6b')],_[_0xd971('0x9c')](_0x2c9416[_0xd971('0x5b')],['ids','id'])||{})['spread'](function(_0x875ae8){for(var _0x8232d0=0x0;_0x8232d0<_0x2c9416[_0xd971('0x5b')][_0xd971('0x6b')]['length'];_0x8232d0+=0x1){socket[_0xd971('0xda')](_0xd971('0xdb'),{'UserId':Number(_0x2c9416[_0xd971('0x5b')]['ids'][_0x8232d0]),'SmsAccountId':Number(_0x2c9416[_0xd971('0x58')]['id'])});}return _0x875ae8;});}})[_0xd971('0x21')](respondWithResult(_0x5a75bf,null))['catch'](handleError(_0x5a75bf,null));};exports['removeAgents']=function(_0x734ad1,_0xb8cee8,_0x251754){return db['SmsAccount']['find']({'where':{'id':_0x734ad1['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0xb8cee8,null))[_0xd971('0x21')](function(_0x1d9350){if(_0x1d9350){return _0x1d9350[_0xd971('0xdc')](_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')])[_0xd971('0x21')](function(){if(_[_0xd971('0xdd')](_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')])){for(var _0x22208f=0x0;_0x22208f<_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')]['length'];_0x22208f+=0x1){socket[_0xd971('0xda')](_0xd971('0xde'),{'UserId':Number(_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')][_0x22208f]),'SmsAccountId':Number(_0x734ad1[_0xd971('0x58')]['id'])});}}else{socket[_0xd971('0xda')](_0xd971('0xde'),{'UserId':Number(_0x734ad1[_0xd971('0x44')]['ids']),'SmsAccountId':Number(_0x734ad1['params']['id'])});}});}})['then'](respondWithStatusCode(_0xb8cee8,null))['catch'](handleError(_0xb8cee8,null));};exports[_0xd971('0xdf')]=function(_0x2acafb,_0x4b3a13,_0x1c495a){var _0x5d5e2c={};var _0x1490ee={};var _0x2f27eb;var _0xedff05;return db[_0xd971('0x3f')]['findOne']({'where':{'id':_0x2acafb['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x4b3a13,null))[_0xd971('0x21')](function(_0x2a3d8a){if(_0x2a3d8a){_0x2f27eb=_0x2a3d8a;_0x1490ee[_0xd971('0x48')]=_[_0xd971('0x45')](db[_0xd971('0xaa')][_0xd971('0x40')]);_0x1490ee[_0xd971('0x44')]=_[_0xd971('0x45')](_0x2acafb['query']);_0x1490ee['filters']=_['intersection'](_0x1490ee[_0xd971('0x48')],_0x1490ee['query']);_0x5d5e2c[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x1490ee['model'],qs[_0xd971('0x49')](_0x2acafb['query'][_0xd971('0x49')]));_0x5d5e2c[_0xd971('0x4a')]=_0x5d5e2c[_0xd971('0x4a')]['length']?_0x5d5e2c[_0xd971('0x4a')]:_0x1490ee[_0xd971('0x48')];_0x5d5e2c[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x2acafb['query'][_0xd971('0x4e')]);_0x5d5e2c[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x2acafb[_0xd971('0x44')],_0x1490ee[_0xd971('0x46')]));if(_0x2acafb[_0xd971('0x44')][_0xd971('0x50')]){_0x5d5e2c[_0xd971('0x51')]=_[_0xd971('0x52')](_0x5d5e2c[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x5d5e2c[_0xd971('0x4a')],function(_0x5e6574){var _0x27e0ef={};_0x27e0ef[_0x5e6574]={'$like':'%'+_0x2acafb[_0xd971('0x44')][_0xd971('0x50')]+'%'};return _0x27e0ef;})});}_0x5d5e2c=_['merge']({},_0x5d5e2c,_0x2acafb[_0xd971('0x53')]);return _0x2f27eb[_0xd971('0xdf')](_0x5d5e2c);}})[_0xd971('0x21')](function(_0x41f267){if(_0x41f267){_0xedff05=_0x41f267['length'];if(!_0x2acafb[_0xd971('0x44')]['hasOwnProperty']('nolimit')){_0x5d5e2c['limit']=qs[_0xd971('0x31')](_0x2acafb['query'][_0xd971('0x31')]);_0x5d5e2c['offset']=qs['offset'](_0x2acafb[_0xd971('0x44')][_0xd971('0x2e')]);}return _0x2f27eb[_0xd971('0xdf')](_0x5d5e2c);}})[_0xd971('0x21')](function(_0x82ae10){if(_0x82ae10){return _0x82ae10?{'count':_0xedff05,'rows':_0x82ae10}:null;}})['then'](respondWithResult(_0x4b3a13,null))[_0xd971('0x2b')](handleError(_0x4b3a13,null));};
\ No newline at end of file
+var _0xc896=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','key','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','includeAll','SmsAccount','findAll','catch','show','params','keys','intersection','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','SmsAccountId','rows','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','asc','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','Sequelize','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','omit','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','*,*,*,*','SmsMessage','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','Start','info','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','bulkCreate','getApplications','getInteractions','CmContact','fullname','Tag','tag','to\x20is\x20mandatory','DESC','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','redif','skebby','DELIVERED','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','state','message-id','addAgents','emit','userSmsAccount:save','removeAgents','userSmsAccount:remove','User','getAgents','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis'];(function(_0x423097,_0x8a09f4){var _0x3a73f1=function(_0x9314f0){while(--_0x9314f0){_0x423097['push'](_0x423097['shift']());}};_0x3a73f1(++_0x8a09f4);}(_0xc896,0x1bd));var _0x6c89=function(_0x3cfe3a,_0x384f0b){_0x3cfe3a=_0x3cfe3a-0x0;var _0x465d11=_0xc896[_0x3cfe3a];return _0x465d11;};'use strict';var emlformat=require(_0x6c89('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6c89('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c89('0x2'));var moment=require(_0x6c89('0x3'));var BPromise=require(_0x6c89('0x4'));var Mustache=require(_0x6c89('0x5'));var util=require(_0x6c89('0x6'));var path=require(_0x6c89('0x7'));var sox=require(_0x6c89('0x8'));var csv=require(_0x6c89('0x9'));var ejs=require(_0x6c89('0xa'));var fs=require('fs');var fs_extra=require(_0x6c89('0xb'));var _=require(_0x6c89('0xc'));var squel=require(_0x6c89('0xd'));var crypto=require(_0x6c89('0xe'));var jsforce=require(_0x6c89('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x6c89('0x9'));var querystring=require(_0x6c89('0x10'));var Papa=require(_0x6c89('0x11'));var Redis=require(_0x6c89('0x12'));var authService=require(_0x6c89('0x13'));var qs=require(_0x6c89('0x14'));var as=require(_0x6c89('0x15'));var hardwareService=require(_0x6c89('0x16'));var logger=require(_0x6c89('0x17'))(_0x6c89('0x18'));var utils=require(_0x6c89('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6c89('0x1a'))['db'];config[_0x6c89('0x1b')]=_[_0x6c89('0x1c')](config['redis'],{'host':_0x6c89('0x1d'),'port':0x18eb});var socket=require(_0x6c89('0x1e'))(new Redis(config[_0x6c89('0x1b')]));require(_0x6c89('0x1f'))[_0x6c89('0x20')](socket);var jayson=require(_0x6c89('0x21'));var client=jayson[_0x6c89('0x22')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2f6a62,_0x47d081,_0x29f604,_0x1ba0a4){return new BPromise(function(_0x4f5d3f,_0x5b61e9){var _0x28b059=_0x1ba0a4||client;return _0x28b059['request'](_0x2f6a62,_0x29f604)[_0x6c89('0x23')](function(_0x1413e9){logger['info'](_0x6c89('0x24'),_0x47d081,_0x6c89('0x25'));logger[_0x6c89('0x26')](_0x6c89('0x27'),_0x47d081,_0x6c89('0x25'),JSON[_0x6c89('0x28')](_0x1413e9));if(_0x1413e9['error']){if(_0x1413e9['error'][_0x6c89('0x29')]===0x1f4){logger['error'](_0x6c89('0x24'),_0x47d081,_0x1413e9[_0x6c89('0x2a')][_0x6c89('0x2b')]);return _0x5b61e9(_0x1413e9['error'][_0x6c89('0x2b')]);}logger[_0x6c89('0x2a')](_0x6c89('0x24'),_0x47d081,_0x1413e9[_0x6c89('0x2a')][_0x6c89('0x2b')]);return _0x4f5d3f(_0x1413e9[_0x6c89('0x2a')][_0x6c89('0x2b')]);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x47d081,'request\x20sent');_0x4f5d3f(_0x1413e9[_0x6c89('0x2c')][_0x6c89('0x2b')]);}})['catch'](function(_0x3d6a08){logger[_0x6c89('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x47d081,_0x3d6a08);_0x5b61e9(_0x3d6a08);});});}function respondWithStatusCode(_0x4c1fcb,_0x3a674d){_0x3a674d=_0x3a674d||0xcc;return function(_0xc955a9){if(_0xc955a9){return _0x4c1fcb[_0x6c89('0x2d')](_0x3a674d);}return _0x4c1fcb[_0x6c89('0x2e')](_0x3a674d)[_0x6c89('0x2f')]();};}function respondWithResult(_0x342bf1,_0x12e3b9){_0x12e3b9=_0x12e3b9||0xc8;return function(_0x5b0042){if(_0x5b0042){return _0x342bf1['status'](_0x12e3b9)[_0x6c89('0x30')](_0x5b0042);}};}function respondWithFilteredResult(_0x3f2083,_0x5e43ac){return function(_0x11b384){if(_0x11b384){var _0x17ba40=typeof _0x5e43ac[_0x6c89('0x31')]==='undefined'&&typeof _0x5e43ac[_0x6c89('0x32')]===_0x6c89('0x33');var _0x51b845=_0x11b384['count'];var _0x5b3b8e=_0x17ba40?0x0:_0x5e43ac[_0x6c89('0x31')];var _0x56a476=_0x17ba40?_0x11b384[_0x6c89('0x34')]:_0x5e43ac['offset']+_0x5e43ac[_0x6c89('0x32')];var _0x176a5f;if(_0x56a476>=_0x51b845){_0x56a476=_0x51b845;_0x176a5f=0xc8;}else{_0x176a5f=0xce;}_0x3f2083[_0x6c89('0x2e')](_0x176a5f);return _0x3f2083[_0x6c89('0x35')](_0x6c89('0x36'),_0x5b3b8e+'-'+_0x56a476+'/'+_0x51b845)[_0x6c89('0x30')](_0x11b384);}return null;};}function patchUpdates(_0x244c8b){return function(_0x5bb96b){try{jsonpatch[_0x6c89('0x37')](_0x5bb96b,_0x244c8b,!![]);}catch(_0x4302c7){return BPromise[_0x6c89('0x38')](_0x4302c7);}return _0x5bb96b[_0x6c89('0x39')]();};}function saveUpdates(_0x1bbdc7,_0x1b43c0){return function(_0x206473){if(_0x206473){return _0x206473[_0x6c89('0x3a')](_0x1bbdc7)[_0x6c89('0x23')](function(_0x24bc7b){return _0x24bc7b;});}return null;};}function removeEntity(_0x43571b,_0x310d7e){return function(_0x19cdfa){if(_0x19cdfa){return _0x19cdfa[_0x6c89('0x3b')]()[_0x6c89('0x23')](function(){var _0x583b20=_0x19cdfa[_0x6c89('0x3c')]({'plain':!![]});var _0x1ab514='SmsAccounts';return db[_0x6c89('0x3d')]['destroy']({'where':{'type':_0x1ab514,'resourceId':_0x583b20['id']}})[_0x6c89('0x23')](function(){return _0x19cdfa;});})['then'](function(){_0x43571b[_0x6c89('0x2e')](0xcc)[_0x6c89('0x2f')]();});}};}function handleEntityNotFound(_0x3896d6,_0x27759e){return function(_0x5707ff){if(!_0x5707ff){_0x3896d6['sendStatus'](0x194);}return _0x5707ff;};}function handleError(_0x1ad8b0,_0x1087f2){_0x1087f2=_0x1087f2||0x1f4;return function(_0x3c0036){logger[_0x6c89('0x2a')](_0x3c0036['stack']);if(_0x3c0036[_0x6c89('0x3e')]){delete _0x3c0036[_0x6c89('0x3e')];}_0x1ad8b0[_0x6c89('0x2e')](_0x1087f2)['send'](_0x3c0036);};}exports[_0x6c89('0x3f')]=function(_0x37b58f,_0x4cacaa){var _0x535e68={'include':[{'model':db[_0x6c89('0x40')],'as':_0x6c89('0x41')}]},_0x5a6781={},_0x3e4cf3={'count':0x0,'rows':[]};var _0xe533f6=_[_0x6c89('0x42')](db['SmsAccount'][_0x6c89('0x43')],function(_0x3c59d5){return{'name':_0x3c59d5[_0x6c89('0x44')],'type':_0x3c59d5['type'][_0x6c89('0x45')]};});_0x5a6781[_0x6c89('0x46')]=_['map'](_0xe533f6,_0x6c89('0x3e'));_0x5a6781[_0x6c89('0x47')]=_['keys'](_0x37b58f[_0x6c89('0x47')]);_0x5a6781['filters']=_['intersection'](_0x5a6781[_0x6c89('0x46')],_0x5a6781['query']);_0x535e68[_0x6c89('0x48')]=_['intersection'](_0x5a6781[_0x6c89('0x46')],qs[_0x6c89('0x49')](_0x37b58f['query'][_0x6c89('0x49')]));_0x535e68[_0x6c89('0x48')]=_0x535e68[_0x6c89('0x48')][_0x6c89('0x4a')]?_0x535e68['attributes']:_0x5a6781[_0x6c89('0x46')];if(!_0x37b58f['query'][_0x6c89('0x4b')](_0x6c89('0x4c'))){_0x535e68[_0x6c89('0x32')]=qs[_0x6c89('0x32')](_0x37b58f[_0x6c89('0x47')][_0x6c89('0x32')]);_0x535e68[_0x6c89('0x31')]=qs[_0x6c89('0x31')](_0x37b58f['query'][_0x6c89('0x31')]);}_0x535e68[_0x6c89('0x4d')]=qs[_0x6c89('0x4e')](_0x37b58f[_0x6c89('0x47')][_0x6c89('0x4e')]);_0x535e68[_0x6c89('0x4f')]=qs[_0x6c89('0x50')](_[_0x6c89('0x51')](_0x37b58f['query'],_0x5a6781['filters']),_0xe533f6);if(_0x37b58f[_0x6c89('0x47')][_0x6c89('0x52')]){_0x535e68[_0x6c89('0x4f')]=_['merge'](_0x535e68[_0x6c89('0x4f')],{'$or':_['map'](_0xe533f6,function(_0xc45cb3){if(_0xc45cb3[_0x6c89('0x53')]!==_0x6c89('0x54')){var _0x34c0e5={};_0x34c0e5[_0xc45cb3[_0x6c89('0x3e')]]={'$like':'%'+_0x37b58f[_0x6c89('0x47')][_0x6c89('0x52')]+'%'};return _0x34c0e5;}})});}_0x535e68=_[_0x6c89('0x55')]({},_0x535e68,_0x37b58f['options']);var _0x1405a3={'where':_0x535e68[_0x6c89('0x4f')]};return db['SmsAccount'][_0x6c89('0x34')](_0x1405a3)[_0x6c89('0x23')](function(_0x47da3a){_0x3e4cf3[_0x6c89('0x34')]=_0x47da3a;if(_0x37b58f['query'][_0x6c89('0x56')]){_0x535e68['include']=[{'all':!![]}];}return db[_0x6c89('0x57')][_0x6c89('0x58')](_0x535e68);})[_0x6c89('0x23')](function(_0x299b87){_0x3e4cf3['rows']=_0x299b87;return _0x3e4cf3;})[_0x6c89('0x23')](respondWithFilteredResult(_0x4cacaa,_0x535e68))[_0x6c89('0x59')](handleError(_0x4cacaa,null));};exports[_0x6c89('0x5a')]=function(_0x24d8fc,_0x2347fb){var _0x50312d={'raw':![],'where':{'id':_0x24d8fc[_0x6c89('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x6c89('0x41')}]},_0x2e1cd7={};_0x2e1cd7[_0x6c89('0x46')]=_[_0x6c89('0x5c')](db['SmsAccount']['rawAttributes']);_0x2e1cd7[_0x6c89('0x47')]=_[_0x6c89('0x5c')](_0x24d8fc[_0x6c89('0x47')]);_0x2e1cd7['filters']=_[_0x6c89('0x5d')](_0x2e1cd7[_0x6c89('0x46')],_0x2e1cd7[_0x6c89('0x47')]);_0x50312d[_0x6c89('0x48')]=_[_0x6c89('0x5d')](_0x2e1cd7['model'],qs[_0x6c89('0x49')](_0x24d8fc[_0x6c89('0x47')]['fields']));_0x50312d['attributes']=_0x50312d[_0x6c89('0x48')]['length']?_0x50312d[_0x6c89('0x48')]:_0x2e1cd7[_0x6c89('0x46')];if(_0x24d8fc['query'][_0x6c89('0x56')]){_0x50312d[_0x6c89('0x5e')]=[{'all':!![]}];}_0x50312d=_[_0x6c89('0x55')]({},_0x50312d,_0x24d8fc[_0x6c89('0x5f')]);return db[_0x6c89('0x57')][_0x6c89('0x60')](_0x50312d)[_0x6c89('0x23')](handleEntityNotFound(_0x2347fb,null))[_0x6c89('0x23')](respondWithResult(_0x2347fb,null))[_0x6c89('0x59')](handleError(_0x2347fb,null));};exports[_0x6c89('0x61')]=function(_0x445805,_0x396031){return db[_0x6c89('0x57')][_0x6c89('0x61')](_0x445805[_0x6c89('0x62')],{})['then'](function(_0x2b7bb7){var _0x418ec4=_0x445805[_0x6c89('0x63')]['get']({'plain':!![]});if(!_0x418ec4)throw new Error(_0x6c89('0x64'));if(_0x418ec4[_0x6c89('0x65')]===_0x6c89('0x63')){var _0xbf45c2=_0x2b7bb7[_0x6c89('0x3c')]({'plain':!![]});var _0x42022b=_0x6c89('0x66');return db['UserProfileSection'][_0x6c89('0x60')]({'where':{'name':_0x42022b,'userProfileId':_0x418ec4[_0x6c89('0x67')]},'raw':!![]})[_0x6c89('0x23')](function(_0x2ba582){if(_0x2ba582&&_0x2ba582[_0x6c89('0x68')]===0x0){return db[_0x6c89('0x3d')][_0x6c89('0x61')]({'name':_0xbf45c2[_0x6c89('0x3e')],'resourceId':_0xbf45c2['id'],'type':_0x2ba582['name'],'sectionId':_0x2ba582['id']},{})[_0x6c89('0x23')](function(){return _0x2b7bb7;});}else{return _0x2b7bb7;}})[_0x6c89('0x59')](function(_0x267da0){logger[_0x6c89('0x2a')](_0x6c89('0x69'),_0x267da0);throw _0x267da0;});}return _0x2b7bb7;})['then'](respondWithResult(_0x396031,0xc9))[_0x6c89('0x59')](handleError(_0x396031,null));};exports['update']=function(_0x2456f2,_0x58812e){if(_0x2456f2[_0x6c89('0x62')]['id']){delete _0x2456f2[_0x6c89('0x62')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x2456f2[_0x6c89('0x5b')]['id']},'include':[{'model':db[_0x6c89('0x40')],'as':_0x6c89('0x41')}]})[_0x6c89('0x23')](handleEntityNotFound(_0x58812e,null))['then'](saveUpdates(_0x2456f2[_0x6c89('0x62')],null))['then'](respondWithResult(_0x58812e,null))[_0x6c89('0x59')](handleError(_0x58812e,null));};exports[_0x6c89('0x3b')]=function(_0x81e799,_0x19341b){return db[_0x6c89('0x57')][_0x6c89('0x60')]({'where':{'id':_0x81e799[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x19341b,null))[_0x6c89('0x23')](removeEntity(_0x19341b,null))['catch'](handleError(_0x19341b,null));};exports[_0x6c89('0x6a')]=function(_0x127761,_0x3a08ef){return db[_0x6c89('0x57')][_0x6c89('0x6a')]()[_0x6c89('0x23')](respondWithResult(_0x3a08ef,null))[_0x6c89('0x59')](handleError(_0x3a08ef,null));};exports[_0x6c89('0x6b')]=function(_0x46056b,_0x15c40a,_0x6e7a5b){if(_0x46056b[_0x6c89('0x62')]['id']){delete _0x46056b[_0x6c89('0x62')]['id'];}return db[_0x6c89('0x57')]['find']({'where':{'id':_0x46056b[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x15c40a,null))['then'](function(_0x303a1f){if(_0x303a1f){_0x46056b['body']['SmsAccountId']=_0x303a1f['id'];return db[_0x6c89('0x6c')][_0x6c89('0x61')](_0x46056b[_0x6c89('0x62')]);}})[_0x6c89('0x23')](respondWithResult(_0x15c40a,null))[_0x6c89('0x59')](handleError(_0x15c40a,null));};exports[_0x6c89('0x6d')]=function(_0x31fcd1,_0x178ad1,_0x526002){var _0x1e6486={'raw':![],'where':{}};var _0x3f22f3={};var _0x5d4449={'count':0x0,'rows':[]};return db[_0x6c89('0x57')]['findOne']({'where':{'id':_0x31fcd1['params']['id']}})['then'](handleEntityNotFound(_0x178ad1,null))['then'](function(_0x4aa50e){if(_0x4aa50e){_0x3f22f3['model']=_[_0x6c89('0x5c')](db[_0x6c89('0x6c')][_0x6c89('0x43')]);_0x3f22f3[_0x6c89('0x47')]=_['keys'](_0x31fcd1[_0x6c89('0x47')]);_0x3f22f3[_0x6c89('0x50')]=_[_0x6c89('0x5d')](_0x3f22f3[_0x6c89('0x46')],_0x3f22f3['query']);_0x1e6486[_0x6c89('0x48')]=_[_0x6c89('0x5d')](_0x3f22f3[_0x6c89('0x46')],qs[_0x6c89('0x49')](_0x31fcd1[_0x6c89('0x47')][_0x6c89('0x49')]));_0x1e6486[_0x6c89('0x48')]=_0x1e6486['attributes'][_0x6c89('0x4a')]?_0x1e6486['attributes']:_0x3f22f3[_0x6c89('0x46')];if(!_0x31fcd1['query'][_0x6c89('0x4b')](_0x6c89('0x4c'))){_0x1e6486[_0x6c89('0x32')]=qs['limit'](_0x31fcd1[_0x6c89('0x47')][_0x6c89('0x32')]);_0x1e6486[_0x6c89('0x31')]=qs[_0x6c89('0x31')](_0x31fcd1[_0x6c89('0x47')]['offset']);}_0x1e6486[_0x6c89('0x4d')]=qs[_0x6c89('0x4e')](_0x31fcd1[_0x6c89('0x47')][_0x6c89('0x4e')]);_0x1e6486[_0x6c89('0x4f')]=qs['filters'](_[_0x6c89('0x51')](_0x31fcd1[_0x6c89('0x47')],_0x3f22f3[_0x6c89('0x50')]));_0x1e6486[_0x6c89('0x4f')][_0x6c89('0x6e')]=_0x4aa50e['id'];if(_0x31fcd1[_0x6c89('0x47')][_0x6c89('0x52')]){_0x1e6486[_0x6c89('0x4f')]=_[_0x6c89('0x55')](_0x1e6486[_0x6c89('0x4f')],{'$or':_[_0x6c89('0x42')](_0x1e6486[_0x6c89('0x48')],function(_0x47b88c){var _0x576251={};_0x576251[_0x47b88c]={'$like':'%'+_0x31fcd1[_0x6c89('0x47')]['filter']+'%'};return _0x576251;})});}_0x1e6486=_['merge']({},_0x1e6486,_0x31fcd1[_0x6c89('0x5f')]);return db['Disposition'][_0x6c89('0x34')]({'where':_0x1e6486[_0x6c89('0x4f')]})[_0x6c89('0x23')](function(_0x1a437a){_0x5d4449[_0x6c89('0x34')]=_0x1a437a;if(_0x31fcd1[_0x6c89('0x47')][_0x6c89('0x56')]){_0x1e6486[_0x6c89('0x5e')]=[{'all':!![]}];}return db[_0x6c89('0x6c')]['findAll'](_0x1e6486);})['then'](function(_0x4a4a5b){_0x5d4449[_0x6c89('0x6f')]=_0x4a4a5b;return _0x5d4449;});}})['then'](respondWithFilteredResult(_0x178ad1,_0x1e6486))['catch'](handleError(_0x178ad1,null));};exports[_0x6c89('0x70')]=function(_0x43e96e,_0x11fa9a,_0x2311dc){return db[_0x6c89('0x57')][_0x6c89('0x60')]({'where':{'id':_0x43e96e[_0x6c89('0x5b')]['id']}})['then'](handleEntityNotFound(_0x11fa9a,null))[_0x6c89('0x23')](function(_0x3b0acc){if(_0x3b0acc){return _0x3b0acc['removeDispositions'](_0x43e96e[_0x6c89('0x47')][_0x6c89('0x71')]);}})[_0x6c89('0x23')](respondWithStatusCode(_0x11fa9a,null))[_0x6c89('0x59')](handleError(_0x11fa9a,null));};exports[_0x6c89('0x72')]=function(_0x34a289,_0x237991,_0x2bfca5){if(_0x34a289['body']['id']){delete _0x34a289[_0x6c89('0x62')]['id'];}return db[_0x6c89('0x57')][_0x6c89('0x60')]({'where':{'id':_0x34a289[_0x6c89('0x5b')]['id']}})['then'](handleEntityNotFound(_0x237991,null))[_0x6c89('0x23')](function(_0xb123df){if(_0xb123df){_0x34a289[_0x6c89('0x62')][_0x6c89('0x6e')]=_0xb123df['id'];return db['CannedAnswer'][_0x6c89('0x61')](_0x34a289[_0x6c89('0x62')]);}})[_0x6c89('0x23')](respondWithResult(_0x237991,null))[_0x6c89('0x59')](handleError(_0x237991,null));};exports[_0x6c89('0x73')]=function(_0x1ab28b,_0x20a1d8,_0x3ece20){var _0x4fe7db={'raw':![],'where':{}};var _0x1d2305={};var _0x395814={'count':0x0,'rows':[]};return db[_0x6c89('0x57')][_0x6c89('0x74')]({'where':{'id':_0x1ab28b['params']['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x20a1d8,null))['then'](function(_0x3723ba){if(_0x3723ba){_0x1d2305[_0x6c89('0x46')]=_['keys'](db[_0x6c89('0x75')][_0x6c89('0x43')]);_0x1d2305[_0x6c89('0x47')]=_[_0x6c89('0x5c')](_0x1ab28b[_0x6c89('0x47')]);_0x1d2305['filters']=_['intersection'](_0x1d2305[_0x6c89('0x46')],_0x1d2305[_0x6c89('0x47')]);_0x4fe7db[_0x6c89('0x48')]=_[_0x6c89('0x5d')](_0x1d2305[_0x6c89('0x46')],qs['fields'](_0x1ab28b[_0x6c89('0x47')][_0x6c89('0x49')]));_0x4fe7db[_0x6c89('0x48')]=_0x4fe7db['attributes'][_0x6c89('0x4a')]?_0x4fe7db[_0x6c89('0x48')]:_0x1d2305[_0x6c89('0x46')];if(!_0x1ab28b[_0x6c89('0x47')][_0x6c89('0x4b')](_0x6c89('0x4c'))){_0x4fe7db[_0x6c89('0x32')]=qs['limit'](_0x1ab28b['query'][_0x6c89('0x32')]);_0x4fe7db[_0x6c89('0x31')]=qs['offset'](_0x1ab28b[_0x6c89('0x47')][_0x6c89('0x31')]);}_0x4fe7db[_0x6c89('0x4d')]=qs[_0x6c89('0x4e')](_0x1ab28b[_0x6c89('0x47')]['sort']);_0x4fe7db[_0x6c89('0x4f')]=qs[_0x6c89('0x50')](_[_0x6c89('0x51')](_0x1ab28b['query'],_0x1d2305[_0x6c89('0x50')]));_0x4fe7db['where']['SmsAccountId']=_0x3723ba['id'];if(_0x1ab28b['query'][_0x6c89('0x52')]){_0x4fe7db[_0x6c89('0x4f')]=_[_0x6c89('0x55')](_0x4fe7db[_0x6c89('0x4f')],{'$or':_[_0x6c89('0x42')](_0x4fe7db['attributes'],function(_0x5f5061){var _0x4727d1={};_0x4727d1[_0x5f5061]={'$like':'%'+_0x1ab28b[_0x6c89('0x47')][_0x6c89('0x52')]+'%'};return _0x4727d1;})});}_0x4fe7db=_[_0x6c89('0x55')]({},_0x4fe7db,_0x1ab28b[_0x6c89('0x5f')]);return db['CannedAnswer']['count']({'where':_0x4fe7db[_0x6c89('0x4f')]})[_0x6c89('0x23')](function(_0x90f07b){_0x395814[_0x6c89('0x34')]=_0x90f07b;if(_0x1ab28b[_0x6c89('0x47')][_0x6c89('0x56')]){_0x4fe7db[_0x6c89('0x5e')]=[{'all':!![]}];}return db['CannedAnswer'][_0x6c89('0x58')](_0x4fe7db);})[_0x6c89('0x23')](function(_0xe21caf){_0x395814[_0x6c89('0x6f')]=_0xe21caf;return _0x395814;});}})[_0x6c89('0x23')](respondWithFilteredResult(_0x20a1d8,_0x4fe7db))['catch'](handleError(_0x20a1d8,null));};exports[_0x6c89('0x76')]=function(_0xda5c17,_0x10beb2,_0x2b3782){return db[_0x6c89('0x57')][_0x6c89('0x60')]({'where':{'id':_0xda5c17[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x10beb2,null))['then'](function(_0x2ed63c){if(_0x2ed63c){return _0x2ed63c[_0x6c89('0x76')](_0xda5c17[_0x6c89('0x47')][_0x6c89('0x71')]);}})[_0x6c89('0x23')](respondWithStatusCode(_0x10beb2,null))[_0x6c89('0x59')](handleError(_0x10beb2,null));};exports[_0x6c89('0x77')]=function(_0x27d6f5,_0x5a43fb,_0x436881){var _0x2100d8={'channel':_0x6c89('0x78')};var _0x53fe95=[];var _0x4f19c4=[];var _0xfd9fb={};return db[_0x6c89('0x57')]['find']({'where':{'id':_0x27d6f5[_0x6c89('0x5b')]['id']},'include':[{'model':db[_0x6c89('0x79')],'as':_0x6c89('0x7a')}]})[_0x6c89('0x23')](handleEntityNotFound(_0x5a43fb,null))[_0x6c89('0x23')](function(_0x1cb590){_0x2100d8[_0x6c89('0x7b')]=_0x1cb590;_0x2100d8[_0x6c89('0x7c')]=_[_0x6c89('0x7d')](_0x1cb590[_0x6c89('0x7a')],[_0x6c89('0x7e')],[_0x6c89('0x7f')]);if(_0x2100d8[_0x6c89('0x7b')][_0x6c89('0x7a')]){delete _0x2100d8[_0x6c89('0x7b')]['Applications'];}return db['CmContact']['describe']();})['then'](function(_0x14ab7e){if(!_0x14ab7e){throw new db['Sequelize']['ValidationError'](_0x6c89('0x80'));}_0x53fe95=_[_0x6c89('0x81')](_[_0x6c89('0x5c')](_0x14ab7e),[_0x6c89('0x82'),_0x6c89('0x83')]);_0x4f19c4=_[_0x6c89('0x81')](_['keys'](_0x14ab7e),[_0x6c89('0x82'),'updatedAt',_0x6c89('0x84'),_0x6c89('0x85')]);_0x2100d8[_0x6c89('0x62')]={'mapKey':_0x6c89('0x86')};if(_0x2100d8['account'][_0x6c89('0x53')]){switch(_0x2100d8[_0x6c89('0x7b')][_0x6c89('0x53')]){case _0x6c89('0x87'):_0x2100d8['body'][_0x6c89('0x88')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x89')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x62')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x8a')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x8b')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x8c')];break;case'skebby':_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')]='+'+_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x8d')];_0x2100d8[_0x6c89('0x62')]['body']=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x8e')];break;case _0x6c89('0x8f'):_0x2100d8['body'][_0x6c89('0x88')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x88')];_0x2100d8[_0x6c89('0x62')]['body']=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x2b')];break;case _0x6c89('0x90'):_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x88')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x62')]=_0x27d6f5['body'][_0x6c89('0x62')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x8b')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x91')];break;case _0x6c89('0x92'):_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')]=_0x27d6f5['body'][_0x6c89('0x89')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x62')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x93')];_0x2100d8['body']['messageId']=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x94')];break;case _0x6c89('0x95'):_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')]='+'+_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x96')][0x0]['from'];_0x2100d8[_0x6c89('0x62')]['body']=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x96')][0x0]['text'];_0x2100d8['body'][_0x6c89('0x8b')]=_0x27d6f5[_0x6c89('0x62')]['results'][0x0][_0x6c89('0x8b')];break;case _0x6c89('0x97'):_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')]=_0x27d6f5['body'][_0x6c89('0x98')];_0x2100d8['body'][_0x6c89('0x62')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x99')][_0x6c89('0x2b')];break;case _0x6c89('0x9a'):_0x2100d8['body'][_0x6c89('0x88')]=_0x27d6f5['body'][_0x6c89('0x9b')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x62')]=_0x27d6f5['body'][_0x6c89('0x8e')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x8b')]=_0x27d6f5[_0x6c89('0x62')]['replyMessageId'];break;case _0x6c89('0x9c'):_0x2100d8[_0x6c89('0x62')]['messageId']=_0x27d6f5[_0x6c89('0x62')][0x0][_0x6c89('0x2b')]['id'];_0x2100d8['body'][_0x6c89('0x88')]=_0x27d6f5[_0x6c89('0x62')][0x0][_0x6c89('0x2b')]['from'];_0x2100d8['body'][_0x6c89('0x62')]=_0x27d6f5['body'][0x0][_0x6c89('0x2b')][_0x6c89('0x8e')];break;case _0x6c89('0x9d'):_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x88')];_0x2100d8['body'][_0x6c89('0x62')]=_0x27d6f5[_0x6c89('0x62')][_0x6c89('0x2b')];_0x2100d8[_0x6c89('0x62')][_0x6c89('0x8b')]=_0x27d6f5[_0x6c89('0x62')]['refid'];break;}}if(_0x2100d8[_0x6c89('0x62')]['id']){delete _0x2100d8[_0x6c89('0x62')]['id'];}if(_[_0x6c89('0x9e')](_0x2100d8['body'][_0x6c89('0x88')])){throw new db['Sequelize']['ValidationError'](_0x6c89('0x9f'));}if(_[_0x6c89('0x9e')](_0x2100d8['body'][_0x6c89('0x62')])||_0x2100d8[_0x6c89('0x62')]['body']===''){throw new db[(_0x6c89('0xa0'))][(_0x6c89('0xa1'))](_0x6c89('0xa2'));}if(_[_0x6c89('0x9e')](_0x2100d8[_0x6c89('0x62')][_0x6c89('0xa3')])){throw new db['Sequelize']['ValidationError'](_0x6c89('0xa4')+_0x4f19c4);}if(!_[_0x6c89('0xa5')](_0x4f19c4,_0x2100d8[_0x6c89('0x62')][_0x6c89('0xa3')])){throw new db[(_0x6c89('0xa0'))][(_0x6c89('0xa1'))](_0x6c89('0xa6')+_0x4f19c4);}_0xfd9fb[_0x2100d8[_0x6c89('0x62')][_0x6c89('0xa3')]]=_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')];return db[_0x6c89('0xa7')][_0x6c89('0x60')]({'where':{'id':_0x2100d8['account'][_0x6c89('0x85')]},'include':[{'model':db['CmContact'],'as':_0x6c89('0xa8'),'where':_0xfd9fb,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x6c89('0x23')](handleEntityNotFound(_0x5a43fb,null))[_0x6c89('0x23')](function(_0x296038){if(_0x296038){_0x2100d8[_0x6c89('0xa9')]=_[_0x6c89('0xaa')](_0x296038,['Contacts']);if(_0x296038[_0x6c89('0xa8')][_0x6c89('0x4a')]){return _0x296038[_0x6c89('0xa8')][0x0];}var _0x18dd6c=_[_0x6c89('0x1c')](_0x2100d8['body'],{'firstName':_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')],'ListId':_0x296038['id']});_0x18dd6c[_0x2100d8['body'][_0x6c89('0xa3')]]=_0x2100d8[_0x6c89('0x62')]['from'];return db['CmContact'][_0x6c89('0x61')](_0x18dd6c,{'fields':_0x53fe95,'raw':!![]});}})[_0x6c89('0x23')](handleEntityNotFound(_0x5a43fb,null))[_0x6c89('0x23')](function(_0x18e1fa){if(_0x18e1fa){_0x2100d8[_0x6c89('0xab')]=_0x18e1fa;var _0x1a4597={'ContactId':_0x18e1fa['id'],'phone':_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')],'SmsAccountId':_0x27d6f5[_0x6c89('0x5b')]['id']};var _0x475fde={'ContactId':_0x18e1fa['id'],'SmsAccountId':_0x27d6f5[_0x6c89('0x5b')]['id'],'closed':![]};return db[_0x6c89('0xac')]['find']({'where':_0x475fde})['then'](function(_0x590524){if(_0x590524){return[_0x590524,![]];}return db[_0x6c89('0xac')][_0x6c89('0x61')](_0x1a4597)[_0x6c89('0x23')](function(_0x11c786){return[_0x11c786,!![]];});});}})[_0x6c89('0xad')](function(_0x40c88f,_0x5ef1c1){_0x2100d8['interaction']=_0x40c88f[_0x6c89('0x3c')]({'plain':!![]});_0x2100d8[_0x6c89('0xae')][_0x6c89('0xaf')]=![];if(_0x5ef1c1){if(_0x2100d8['account'][_0x6c89('0xb0')]){_0x2100d8[_0x6c89('0x7c')][_0x6c89('0xb1')]({'id':0x0,'priority':_0x2100d8[_0x6c89('0x7c')][_0x6c89('0x4a')]+0x1,'app':_0x6c89('0xb2'),'appdata':'unmanaged','interval':_0x6c89('0xb3')});}_0x2100d8['interaction']['created']=!![];}return db[_0x6c89('0xb4')]['create']({'phone':_0x2100d8[_0x6c89('0x62')][_0x6c89('0x88')],'messageId':_0x2100d8[_0x6c89('0x62')][_0x6c89('0x8b')],'body':_0x2100d8[_0x6c89('0x62')][_0x6c89('0x62')],'SmsAccountId':_0x27d6f5[_0x6c89('0x5b')]['id'],'SmsInteractionId':_0x40c88f['id'],'direction':'in','ContactId':_0x40c88f['ContactId'],'AttachmentId':_0x2100d8[_0x6c89('0x62')]['AttachmentId']});})[_0x6c89('0x23')](function(_0x209582){_0x2100d8[_0x6c89('0x2b')]=_0x209582;if(_0x2100d8[_0x6c89('0xae')][_0x6c89('0xb5')]){return db['User']['find']({'attributes':['id',_0x6c89('0x3e')],'where':{'id':_0x2100d8[_0x6c89('0xae')]['UserId']}})['then'](function(_0x15ea16){if(_0x15ea16){_0x2100d8['applications'][_0x6c89('0xb6')]({'id':0x0,'priority':0x0,'app':_0x6c89('0xb7'),'appdata':_0x15ea16['name']+','+(_0x2100d8[_0x6c89('0x7b')][_0x6c89('0xb8')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x6c89('0xb9'),_0x2100d8);});}return respondWithRpcPromise(_0x6c89('0xba'),_0x6c89('0xb9'),_0x2100d8);})[_0x6c89('0x23')](function(_0x1ef1eb){if(_0x1ef1eb){var _0x1902b9=0xc8;var _0x3f82fd='receiveMessage';logger[_0x6c89('0xbb')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3f82fd,_0x1902b9,_0x6c89('0xbc'));logger[_0x6c89('0x26')](_0x6c89('0xbd'),_0x3f82fd,_0x1902b9,_0x6c89('0xbc'),JSON[_0x6c89('0x28')](_0x1ef1eb));if(_0x2100d8[_0x6c89('0x7b')][_0x6c89('0x53')]==='twilio'){return _0x5a43fb['status'](_0x1902b9)[_0x6c89('0x35')]('Content-Type',_0x6c89('0xbe'))[_0x6c89('0xbf')](_0x6c89('0xc0'));}else{return _0x5a43fb[_0x6c89('0x2e')](_0x1902b9)[_0x6c89('0x30')](_0x1ef1eb);}}})['catch'](handleError(_0x5a43fb,null));};exports[_0x6c89('0xc1')]=function(_0xa2e08b,_0x3eaa39,_0x4fbd73){return db[_0x6c89('0x57')]['findOne']({'where':{'id':_0xa2e08b['params']['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x3eaa39,null))[_0x6c89('0x23')](function(_0x3fe220){if(_0x3fe220){return db[_0x6c89('0xc2')]['transaction'](function(_0x5829f5){return db[_0x6c89('0x79')][_0x6c89('0x3b')]({'where':{'SmsAccountId':_0xa2e08b['params']['id']},'transaction':_0x5829f5})[_0x6c89('0x23')](function(_0x4d0acf){var _0x4ed3d9=_[_0x6c89('0x42')](_0xa2e08b[_0x6c89('0x62')],function(_0xecc29d){_0xecc29d['SmsAccountId']=_0xa2e08b[_0x6c89('0x5b')]['id'];return _0xecc29d;});return db[_0x6c89('0x79')][_0x6c89('0xc3')](_0x4ed3d9,{'transaction':_0x5829f5});});})['then'](function(){return db[_0x6c89('0x79')]['findAndCountAll']({'where':{'SmsAccountId':_0xa2e08b[_0x6c89('0x5b')]['id']},'order':_0x6c89('0x7e')});});}})['then'](respondWithResult(_0x3eaa39,null))['catch'](handleError(_0x3eaa39,null));};exports[_0x6c89('0xc4')]=function(_0x2dd1f1,_0x28003c,_0x45680d){var _0x904335={};var _0x1f646c={};var _0x24a230;var _0x54018a;return db[_0x6c89('0x57')]['findOne']({'where':{'id':_0x2dd1f1['params']['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x28003c,null))[_0x6c89('0x23')](function(_0x40df37){if(_0x40df37){_0x24a230=_0x40df37;_0x1f646c[_0x6c89('0x46')]=_[_0x6c89('0x5c')](db[_0x6c89('0x79')][_0x6c89('0x43')]);_0x1f646c[_0x6c89('0x47')]=_[_0x6c89('0x5c')](_0x2dd1f1[_0x6c89('0x47')]);_0x1f646c[_0x6c89('0x50')]=_['intersection'](_0x1f646c[_0x6c89('0x46')],_0x1f646c['query']);_0x904335[_0x6c89('0x48')]=_[_0x6c89('0x5d')](_0x1f646c[_0x6c89('0x46')],qs['fields'](_0x2dd1f1[_0x6c89('0x47')][_0x6c89('0x49')]));_0x904335[_0x6c89('0x48')]=_0x904335[_0x6c89('0x48')][_0x6c89('0x4a')]?_0x904335[_0x6c89('0x48')]:_0x1f646c[_0x6c89('0x46')];_0x904335[_0x6c89('0x4d')]=qs[_0x6c89('0x4e')](_0x2dd1f1[_0x6c89('0x47')][_0x6c89('0x4e')]);_0x904335[_0x6c89('0x4f')]=qs[_0x6c89('0x50')](_[_0x6c89('0x51')](_0x2dd1f1[_0x6c89('0x47')],_0x1f646c[_0x6c89('0x50')]));if(_0x2dd1f1[_0x6c89('0x47')]['filter']){_0x904335[_0x6c89('0x4f')]=_[_0x6c89('0x55')](_0x904335[_0x6c89('0x4f')],{'$or':_[_0x6c89('0x42')](_0x904335[_0x6c89('0x48')],function(_0x1609ea){var _0x308c9b={};_0x308c9b[_0x1609ea]={'$like':'%'+_0x2dd1f1[_0x6c89('0x47')][_0x6c89('0x52')]+'%'};return _0x308c9b;})});}_0x904335=_['merge']({},_0x904335,_0x2dd1f1['options']);return _0x24a230['getApplications'](_0x904335);}})[_0x6c89('0x23')](function(_0x184cfd){if(_0x184cfd){_0x54018a=_0x184cfd[_0x6c89('0x4a')];if(!_0x2dd1f1[_0x6c89('0x47')][_0x6c89('0x4b')](_0x6c89('0x4c'))){_0x904335[_0x6c89('0x32')]=qs[_0x6c89('0x32')](_0x2dd1f1[_0x6c89('0x47')][_0x6c89('0x32')]);_0x904335['offset']=qs['offset'](_0x2dd1f1[_0x6c89('0x47')]['offset']);}return _0x24a230[_0x6c89('0xc4')](_0x904335);}})[_0x6c89('0x23')](function(_0x215df7){if(_0x215df7){return _0x215df7?{'count':_0x54018a,'rows':_0x215df7}:null;}})['then'](respondWithResult(_0x28003c,null))[_0x6c89('0x59')](handleError(_0x28003c,null));};exports[_0x6c89('0xc5')]=function(_0x2b850f,_0x528cea,_0x3c0213){var _0x3a6810={'raw':![],'where':{}};var _0x451ccd={};var _0x305a24={'count':0x0,'rows':[]};return db['SmsAccount'][_0x6c89('0x74')]({'where':{'id':_0x2b850f[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x528cea,null))[_0x6c89('0x23')](function(_0x579524){if(_0x579524){_0x451ccd['model']=_[_0x6c89('0x5c')](db['SmsInteraction']['rawAttributes']);_0x451ccd[_0x6c89('0x47')]=_['keys'](_0x2b850f[_0x6c89('0x47')]);_0x451ccd[_0x6c89('0x50')]=_['intersection'](_0x451ccd['model'],_0x451ccd[_0x6c89('0x47')]);_0x3a6810[_0x6c89('0x48')]=_[_0x6c89('0x5d')](_0x451ccd['model'],qs[_0x6c89('0x49')](_0x2b850f['query'][_0x6c89('0x49')]));_0x3a6810[_0x6c89('0x48')]=_0x3a6810[_0x6c89('0x48')][_0x6c89('0x4a')]?_0x3a6810['attributes']:_0x451ccd[_0x6c89('0x46')];if(!_0x2b850f[_0x6c89('0x47')][_0x6c89('0x4b')](_0x6c89('0x4c'))){_0x3a6810[_0x6c89('0x32')]=qs[_0x6c89('0x32')](_0x2b850f[_0x6c89('0x47')]['limit']);_0x3a6810[_0x6c89('0x31')]=qs[_0x6c89('0x31')](_0x2b850f[_0x6c89('0x47')][_0x6c89('0x31')]);}_0x3a6810[_0x6c89('0x4d')]=qs['sort'](_0x2b850f[_0x6c89('0x47')][_0x6c89('0x4e')]);_0x3a6810[_0x6c89('0x4f')]=qs['filters'](_['pick'](_0x2b850f[_0x6c89('0x47')],_0x451ccd[_0x6c89('0x50')]));_0x3a6810[_0x6c89('0x4f')]['SmsAccountId']=_0x579524['id'];if(_0x2b850f['query'][_0x6c89('0x52')]){_0x3a6810['where']=_[_0x6c89('0x55')](_0x3a6810[_0x6c89('0x4f')],{'$or':_[_0x6c89('0x42')](_0x3a6810['attributes'],function(_0x4a6188){var _0x45f50f={};_0x45f50f[_0x4a6188]={'$like':'%'+_0x2b850f[_0x6c89('0x47')][_0x6c89('0x52')]+'%'};return _0x45f50f;})});}_0x3a6810=_['merge']({},_0x3a6810,_0x2b850f[_0x6c89('0x5f')]);return db[_0x6c89('0xac')][_0x6c89('0x34')]({'where':_0x3a6810[_0x6c89('0x4f')]})[_0x6c89('0x23')](function(_0x1d52a5){_0x305a24['count']=_0x1d52a5;if(_0x2b850f[_0x6c89('0x47')][_0x6c89('0x56')]){_0x3a6810[_0x6c89('0x5e')]=[{'model':db[_0x6c89('0xc6')],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x6c89('0x3e'),_0x6c89('0xc7'),'internal'],'required':![]},{'model':db[_0x6c89('0xc8')],'as':'Tags','attributes':['id',_0x6c89('0x3e'),'color'],'where':_0x2b850f[_0x6c89('0x47')][_0x6c89('0xc9')]?{'id':_0x2b850f[_0x6c89('0x47')]['tag']}:undefined,'required':_0x2b850f[_0x6c89('0x47')]['tag']?!![]:![]}];}return db[_0x6c89('0xac')][_0x6c89('0x58')](_0x3a6810);})[_0x6c89('0x23')](function(_0x1c21e4){_0x305a24['rows']=_0x1c21e4;return _0x305a24;});}})[_0x6c89('0x23')](respondWithFilteredResult(_0x528cea,_0x3a6810))[_0x6c89('0x59')](handleError(_0x528cea,null));};exports['send']=function(_0x160c83,_0x440678,_0x4da2a3){var _0x2cb26f,_0x117c47,_0x1accf8;if(_['isNil'](_0x160c83[_0x6c89('0x62')]['body'])||_0x160c83['body'][_0x6c89('0x62')]===''){throw new db['Sequelize']['ValidationError'](_0x6c89('0xa2'));}if(_[_0x6c89('0x9e')](_0x160c83[_0x6c89('0x62')]['to'])){throw new db[(_0x6c89('0xa0'))][(_0x6c89('0xa1'))](_0x6c89('0xca'));}_0x2cb26f=_0x160c83[_0x6c89('0x62')]['to'];return db[_0x6c89('0x57')][_0x6c89('0x60')]({'where':{'id':_0x160c83[_0x6c89('0x5b')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x6c89('0xc6')],'as':'Contacts','where':{'mobile':_0x2cb26f},'limit':0x1,'order':[[_0x6c89('0x83'),_0x6c89('0xcb')]]}]}]})[_0x6c89('0x23')](handleEntityNotFound(_0x440678,null))['then'](function(_0x1b3d37){if(_0x1b3d37&&_0x1b3d37[_0x6c89('0xcc')]){_0x117c47=_0x1b3d37[_0x6c89('0x3c')]({'plain':!![]});if(_0x117c47[_0x6c89('0xcc')]&&_0x117c47[_0x6c89('0xcc')][_0x6c89('0xa8')][_0x6c89('0x4a')]){return _0x117c47[_0x6c89('0xcc')][_0x6c89('0xa8')][0x0];}return db[_0x6c89('0xc6')]['create'](_[_0x6c89('0x1c')](_0x160c83[_0x6c89('0x62')],{'firstName':_0x2cb26f,'mobile':_0x2cb26f,'phone':_0x2cb26f,'ListId':_0x117c47['ListId']}));}})['then'](handleEntityNotFound(_0x440678,null))[_0x6c89('0x23')](function(_0x4d24ae){if(_0x4d24ae){_0x1accf8=_0x4d24ae;return db['SmsInteraction']['find']({'where':{'ContactId':_0x1accf8['id'],'closed':![],'SmsAccountId':_0x117c47['id']}})[_0x6c89('0x23')](function(_0x57be0b){if(_0x57be0b){return[_0x57be0b,![]];}return db['SmsInteraction']['create']({'UserId':_0x160c83[_0x6c89('0x63')]['id'],'ContactId':_0x1accf8['id'],'SmsAccountId':_0x117c47['id'],'phone':_0x2cb26f,'firstMsgDirection':_0x6c89('0xcd'),'Messages':[_['merge'](_0x160c83['body'],{'read':![],'body':_0x160c83[_0x6c89('0x62')][_0x6c89('0x62')],'phone':_0x2cb26f,'SmsAccountId':_0x117c47['id'],'UserId':_0x160c83[_0x6c89('0x63')]['id'],'ContactId':_0x1accf8['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x6c89('0xce')}]})['then'](function(_0x133135){return[_0x133135,!![]];});});}})[_0x6c89('0xad')](function(_0x9a53f4,_0x2210be){if(_0x2210be){return _0x9a53f4;}return db['SmsMessage'][_0x6c89('0x61')](_[_0x6c89('0x55')](_0x160c83['body'],{'read':![],'body':_0x160c83['body']['body'],'phone':_0x2cb26f,'SmsAccountId':_0x117c47['id'],'SmsInteractionId':_0x9a53f4['id'],'UserId':_0x160c83['user']['id'],'ContactId':_0x1accf8['id']}))[_0x6c89('0x23')](function(_0x479301){_0x9a53f4[_0x6c89('0xcf')]['Messages']=[];_0x9a53f4[_0x6c89('0xcf')][_0x6c89('0xce')][_0x6c89('0xb1')](_0x479301['dataValues']);return _0x9a53f4;});})[_0x6c89('0x23')](respondWithResult(_0x440678,null))[_0x6c89('0x59')](handleError(_0x440678,null));};exports[_0x6c89('0x2e')]=function(_0x481fd7,_0x290e5d,_0x13ba11){if(_0x481fd7[_0x6c89('0x62')]['id']){delete _0x481fd7[_0x6c89('0x62')]['id'];}var _0x2b3b33,_0x34aa9c,_0x32bb91;return db[_0x6c89('0x57')]['find']({'where':{'id':_0x481fd7['params']['id']}})['then'](handleEntityNotFound(_0x290e5d,null))[_0x6c89('0x23')](function(_0x2e9a86){if(_0x2e9a86){_0x32bb91=_0x2e9a86;logger[_0x6c89('0x26')](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0xd0'),_0x2e9a86[_0x6c89('0x53')],util[_0x6c89('0xd1')](_0x481fd7['body'],{'showHidden':![],'depth':null}));switch(_0x2e9a86[_0x6c89('0x53')]){case'skebby':if(_0x481fd7['body'][_0x6c89('0xd2')]&&_0x481fd7['body'][_0x6c89('0x2e')]){_0x34aa9c=_0x481fd7[_0x6c89('0x62')][_0x6c89('0x2e')];return db[_0x6c89('0xb4')]['find']({'where':{'messageId':_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd2')]}});}break;case _0x6c89('0x8f'):if(_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd3')]&&_0x481fd7['body'][_0x6c89('0xd4')]){_0x34aa9c=_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd4')];return db[_0x6c89('0xb4')][_0x6c89('0x60')]({'where':{'messageId':_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd3')]}});}break;case _0x6c89('0x90'):if(_0x481fd7[_0x6c89('0x62')][_0x6c89('0x91')]&&_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd5')]){_0x34aa9c=_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd5')];return db[_0x6c89('0xb4')][_0x6c89('0x60')]({'where':{'messageId':_0x481fd7[_0x6c89('0x62')][_0x6c89('0x91')]}});}break;case _0x6c89('0x95'):var _0x3dddc7=_0x481fd7[_0x6c89('0x62')][_0x6c89('0x96')][0x0];if(_0x3dddc7[_0x6c89('0x8b')]&&_0x3dddc7[_0x6c89('0x2e')][_0x6c89('0xd6')]==='DELIVERED'){_0x34aa9c=_0x3dddc7[_0x6c89('0x2e')]['groupName'];return db[_0x6c89('0xb4')][_0x6c89('0x60')]({'where':{'messageId':_0x3dddc7[_0x6c89('0x8b')]}});}break;case _0x6c89('0x9a'):if(_0x481fd7[_0x6c89('0x62')]['messageId']&&_0x481fd7['body'][_0x6c89('0x2e')]){_0x34aa9c=_0x481fd7[_0x6c89('0x62')][_0x6c89('0x2e')];return db[_0x6c89('0xb4')]['find']({'where':{'messageId':_0x481fd7[_0x6c89('0x62')][_0x6c89('0x8b')]}});}break;case'bandwidth':if(_0x481fd7[_0x6c89('0x62')][0x0][_0x6c89('0x2b')]['id']){_0x34aa9c=_0x481fd7[_0x6c89('0x62')][0x0][_0x6c89('0x53')];return db['SmsMessage'][_0x6c89('0x60')]({'where':{'messageId':_0x481fd7[_0x6c89('0x62')][0x0][_0x6c89('0x2b')]['id']}});}break;case _0x6c89('0x9d'):if(_0x481fd7['body'][_0x6c89('0xd7')]&&_0x481fd7[_0x6c89('0x62')][_0x6c89('0x2e')]){_0x34aa9c=_0x481fd7[_0x6c89('0x62')]['status'];return db[_0x6c89('0xb4')][_0x6c89('0x60')]({'where':{'messageId':_0x481fd7[_0x6c89('0x62')][_0x6c89('0xd7')]}});}break;}}})[_0x6c89('0x23')](handleEntityNotFound(_0x290e5d,null))[_0x6c89('0x23')](function(_0x487c5a){if(_0x487c5a){_0x2b3b33=_0x487c5a;switch(_0x32bb91[_0x6c89('0x53')]){case _0x6c89('0xd8'):if(_0x34aa9c===_0x6c89('0xd9')){return _0x2b3b33[_0x6c89('0x3a')]({'read':!![]});}else{logger[_0x6c89('0x2a')](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0xd8'),util[_0x6c89('0xd1')](_0x481fd7['body'],{'showHidden':![],'depth':null}));}break;case _0x6c89('0x8f'):if(_0x34aa9c==='1'){return _0x2b3b33[_0x6c89('0x3a')]({'read':!![]});}else{logger[_0x6c89('0x2a')](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0xd8'),util[_0x6c89('0xd1')](_0x481fd7[_0x6c89('0x62')],{'showHidden':![],'depth':null}));}break;case _0x6c89('0x90'):if(!_0x481fd7[_0x6c89('0x62')][_0x6c89('0xda')]&&_0x34aa9c>=0xc8&&_0x34aa9c<=0xce){return _0x2b3b33[_0x6c89('0x3a')]({'read':!![]});}else{logger[_0x6c89('0x2a')](_0x6c89('0x27'),'status','clicksend',util[_0x6c89('0xd1')](_0x481fd7[_0x6c89('0x62')],{'showHidden':![],'depth':null}));}break;case _0x6c89('0x95'):var _0x52cf3e=_0x481fd7[_0x6c89('0x62')][_0x6c89('0x96')][0x0];if(_0x52cf3e['status'][_0x6c89('0xd6')]===_0x6c89('0xd9')){return _0x2b3b33[_0x6c89('0x3a')]({'read':!![]});}else{logger[_0x6c89('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6c89('0x2e'),'infobip',util[_0x6c89('0xd1')](_0x481fd7[_0x6c89('0x62')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x34aa9c==_0x6c89('0xdb')||_0x34aa9c==_0x6c89('0xdc')){return _0x2b3b33[_0x6c89('0x3a')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6c89('0x2e'),'clickatell',util[_0x6c89('0xd1')](_0x481fd7[_0x6c89('0x62')],{'showHidden':![],'depth':null}));}break;case _0x6c89('0x9c'):if(_0x34aa9c==_0x6c89('0xdd')){return _0x2b3b33['update']({'read':!![]});}else{logger['error'](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0x9c'),util[_0x6c89('0xd1')](_0x481fd7[_0x6c89('0x62')],{'showHidden':![],'depth':null}));}break;case _0x6c89('0x9d'):if(_0x34aa9c===_0x6c89('0xde')||_0x34aa9c==='ACCEPTD'){return _0x2b3b33[_0x6c89('0x3a')]({'read':!![]});}else{logger[_0x6c89('0x2a')](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0x9d'),util[_0x6c89('0xd1')](_0x481fd7[_0x6c89('0x62')],{'showHidden':![],'depth':null}));}break;}return _0x2b3b33;}})['then'](respondWithResult(_0x290e5d,null))['catch'](handleError(_0x290e5d,null));};exports['statusGet']=function(_0x296cf4,_0x177ce9,_0x263bd6){var _0x16d05f,_0x379cd4,_0x2c42f5;return db[_0x6c89('0x57')]['find']({'where':{'id':_0x296cf4[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x177ce9,null))[_0x6c89('0x23')](function(_0x42c8e9){if(_0x42c8e9){_0x2c42f5=_0x42c8e9;logger[_0x6c89('0x26')](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0xd0'),_0x42c8e9[_0x6c89('0x53')],util[_0x6c89('0xd1')](_0x296cf4[_0x6c89('0x47')],{'showHidden':![],'depth':null}));switch(_0x42c8e9[_0x6c89('0x53')]){case _0x6c89('0x97'):if(_0x296cf4['query']['message-id']&&_0x296cf4['query'][_0x6c89('0xdf')]){_0x379cd4=_0x296cf4[_0x6c89('0x47')][_0x6c89('0xdf')];return db[_0x6c89('0xb4')]['find']({'where':{'messageId':_0x296cf4[_0x6c89('0x47')][_0x6c89('0xe0')]}});}break;}}})[_0x6c89('0x23')](handleEntityNotFound(_0x177ce9,null))[_0x6c89('0x23')](function(_0x3c4539){if(_0x3c4539){_0x16d05f=_0x3c4539;switch(_0x2c42f5['type']){case _0x6c89('0x97'):if(_0x379cd4==='2'||_0x379cd4==='6'){return _0x16d05f[_0x6c89('0x3a')]({'read':!![]});}else{logger[_0x6c89('0x2a')](_0x6c89('0x27'),_0x6c89('0x2e'),_0x6c89('0x97'),util[_0x6c89('0xd1')](_0x296cf4[_0x6c89('0x47')],{'showHidden':![],'depth':null}));};break;}return _0x16d05f;}})['then'](respondWithResult(_0x177ce9,null))[_0x6c89('0x59')](handleError(_0x177ce9,null));};exports[_0x6c89('0xe1')]=function(_0x336a91,_0x182226,_0x4c1cef){return db['SmsAccount'][_0x6c89('0x60')]({'where':{'id':_0x336a91[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x182226,null))['then'](function(_0x423bd4){if(_0x423bd4){return _0x423bd4[_0x6c89('0xe1')](_0x336a91['body'][_0x6c89('0x71')],_[_0x6c89('0xaa')](_0x336a91['body'],[_0x6c89('0x71'),'id'])||{})[_0x6c89('0xad')](function(_0x1d0057){for(var _0x429e1c=0x0;_0x429e1c<_0x336a91['body']['ids'][_0x6c89('0x4a')];_0x429e1c+=0x1){socket[_0x6c89('0xe2')](_0x6c89('0xe3'),{'UserId':Number(_0x336a91['body'][_0x6c89('0x71')][_0x429e1c]),'SmsAccountId':Number(_0x336a91[_0x6c89('0x5b')]['id'])});}return _0x1d0057;});}})[_0x6c89('0x23')](respondWithResult(_0x182226,null))[_0x6c89('0x59')](handleError(_0x182226,null));};exports[_0x6c89('0xe4')]=function(_0x4f2cda,_0xa948d2,_0x5d33ac){return db[_0x6c89('0x57')]['find']({'where':{'id':_0x4f2cda['params']['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0xa948d2,null))[_0x6c89('0x23')](function(_0xaee765){if(_0xaee765){return _0xaee765[_0x6c89('0xe4')](_0x4f2cda[_0x6c89('0x47')][_0x6c89('0x71')])[_0x6c89('0x23')](function(){if(_['isArray'](_0x4f2cda[_0x6c89('0x47')][_0x6c89('0x71')])){for(var _0x48a5a4=0x0;_0x48a5a4<_0x4f2cda[_0x6c89('0x47')][_0x6c89('0x71')][_0x6c89('0x4a')];_0x48a5a4+=0x1){socket[_0x6c89('0xe2')]('userSmsAccount:remove',{'UserId':Number(_0x4f2cda[_0x6c89('0x47')][_0x6c89('0x71')][_0x48a5a4]),'SmsAccountId':Number(_0x4f2cda['params']['id'])});}}else{socket[_0x6c89('0xe2')](_0x6c89('0xe5'),{'UserId':Number(_0x4f2cda[_0x6c89('0x47')][_0x6c89('0x71')]),'SmsAccountId':Number(_0x4f2cda[_0x6c89('0x5b')]['id'])});}});}})[_0x6c89('0x23')](respondWithStatusCode(_0xa948d2,null))['catch'](handleError(_0xa948d2,null));};exports['getAgents']=function(_0x1d7077,_0x269347,_0x56aeb1){var _0x19f806={};var _0x50ed2a={};var _0x24738a;var _0x8ccf0d;return db['SmsAccount']['findOne']({'where':{'id':_0x1d7077[_0x6c89('0x5b')]['id']}})[_0x6c89('0x23')](handleEntityNotFound(_0x269347,null))['then'](function(_0x4b65b6){if(_0x4b65b6){_0x24738a=_0x4b65b6;_0x50ed2a[_0x6c89('0x46')]=_[_0x6c89('0x5c')](db[_0x6c89('0xe6')]['rawAttributes']);_0x50ed2a[_0x6c89('0x47')]=_['keys'](_0x1d7077['query']);_0x50ed2a[_0x6c89('0x50')]=_[_0x6c89('0x5d')](_0x50ed2a[_0x6c89('0x46')],_0x50ed2a['query']);_0x19f806['attributes']=_['intersection'](_0x50ed2a[_0x6c89('0x46')],qs['fields'](_0x1d7077[_0x6c89('0x47')][_0x6c89('0x49')]));_0x19f806[_0x6c89('0x48')]=_0x19f806[_0x6c89('0x48')][_0x6c89('0x4a')]?_0x19f806[_0x6c89('0x48')]:_0x50ed2a[_0x6c89('0x46')];_0x19f806[_0x6c89('0x4d')]=qs[_0x6c89('0x4e')](_0x1d7077[_0x6c89('0x47')][_0x6c89('0x4e')]);_0x19f806[_0x6c89('0x4f')]=qs[_0x6c89('0x50')](_['pick'](_0x1d7077[_0x6c89('0x47')],_0x50ed2a[_0x6c89('0x50')]));if(_0x1d7077[_0x6c89('0x47')][_0x6c89('0x52')]){_0x19f806[_0x6c89('0x4f')]=_['merge'](_0x19f806['where'],{'$or':_[_0x6c89('0x42')](_0x19f806[_0x6c89('0x48')],function(_0x5cb768){var _0x5e2a87={};_0x5e2a87[_0x5cb768]={'$like':'%'+_0x1d7077[_0x6c89('0x47')][_0x6c89('0x52')]+'%'};return _0x5e2a87;})});}_0x19f806=_[_0x6c89('0x55')]({},_0x19f806,_0x1d7077['options']);return _0x24738a['getAgents'](_0x19f806);}})['then'](function(_0x483448){if(_0x483448){_0x8ccf0d=_0x483448['length'];if(!_0x1d7077[_0x6c89('0x47')][_0x6c89('0x4b')](_0x6c89('0x4c'))){_0x19f806[_0x6c89('0x32')]=qs[_0x6c89('0x32')](_0x1d7077['query'][_0x6c89('0x32')]);_0x19f806[_0x6c89('0x31')]=qs[_0x6c89('0x31')](_0x1d7077[_0x6c89('0x47')][_0x6c89('0x31')]);}return _0x24738a[_0x6c89('0xe7')](_0x19f806);}})[_0x6c89('0x23')](function(_0xbce3){if(_0xbce3){return _0xbce3?{'count':_0x8ccf0d,'rows':_0xbce3}:null;}})[_0x6c89('0x23')](respondWithResult(_0x269347,null))[_0x6c89('0x59')](handleError(_0x269347,null));};
\ No newline at end of file
index 0791627..d308b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a7=['../../mysqldb','SmsAccount','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3dc008,_0x2866df){var _0x33af86=function(_0x3f37d5){while(--_0x3f37d5){_0x3dc008['push'](_0x3dc008['shift']());}};_0x33af86(++_0x2866df);}(_0x46a7,0x6d));var _0x746a=function(_0x3df99f,_0x4731d5){_0x3df99f=_0x3df99f-0x0;var _0x75892=_0x46a7[_0x3df99f];return _0x75892;};'use strict';var EventEmitter=require(_0x746a('0x0'));var SmsAccount=require(_0x746a('0x1'))['db'][_0x746a('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x746a('0x3')](0x0);var events={'afterCreate':_0x746a('0x4'),'afterUpdate':'update','afterDestroy':_0x746a('0x5')};function emitEvent(_0x34e5a8){return function(_0x28555a,_0x227b24,_0x1276bb){SmsAccountEvents[_0x746a('0x6')](_0x34e5a8+':'+_0x28555a['id'],_0x28555a);SmsAccountEvents[_0x746a('0x6')](_0x34e5a8,_0x28555a);_0x1276bb(null);};}for(var e in events){if(events[_0x746a('0x7')](e)){var event=events[e];SmsAccount[_0x746a('0x8')](e,emitEvent(event));}}module[_0x746a('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0xa255=['hasOwnProperty','hook','exports','events','SmsAccount','save','remove','emit'];(function(_0x38833a,_0x151c2d){var _0x2ec16=function(_0x148af7){while(--_0x148af7){_0x38833a['push'](_0x38833a['shift']());}};_0x2ec16(++_0x151c2d);}(_0xa255,0x9b));var _0x5a25=function(_0x798799,_0x18f22c){_0x798799=_0x798799-0x0;var _0x3eb8ce=_0xa255[_0x798799];return _0x3eb8ce;};'use strict';var EventEmitter=require(_0x5a25('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x5a25('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5a25('0x2'),'afterUpdate':'update','afterDestroy':_0x5a25('0x3')};function emitEvent(_0xf2c2a0){return function(_0x5651c5,_0x251de3,_0x2d7b8e){SmsAccountEvents[_0x5a25('0x4')](_0xf2c2a0+':'+_0x5651c5['id'],_0x5651c5);SmsAccountEvents[_0x5a25('0x4')](_0xf2c2a0,_0x5651c5);_0x2d7b8e(null);};}for(var e in events){if(events[_0x5a25('0x5')](e)){var event=events[e];SmsAccount[_0x5a25('0x6')](e,emitEvent(event));}}module[_0x5a25('0x7')]=SmsAccountEvents;
\ No newline at end of file
index 4350faa..7d2cac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7920=['SmsAccount','sms_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7920,0x15e));var _0x0792=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x7920[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x0792('0x0'));var util=require(_0x0792('0x1'));var logger=require(_0x0792('0x2'))(_0x0792('0x3'));var moment=require(_0x0792('0x4'));var BPromise=require('bluebird');var rp=require(_0x0792('0x5'));var fs=require('fs');var path=require(_0x0792('0x6'));var rimraf=require(_0x0792('0x7'));var config=require(_0x0792('0x8'));var attributes=require(_0x0792('0x9'));module['exports']=function(_0x1fb871,_0x3898a4){return _0x1fb871['define'](_0x0792('0xa'),attributes,{'tableName':_0x0792('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x18c2=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash'];(function(_0x10e30c,_0x3e07f3){var _0xad08fa=function(_0x46dd5e){while(--_0x46dd5e){_0x10e30c['push'](_0x10e30c['shift']());}};_0xad08fa(++_0x3e07f3);}(_0x18c2,0xcf));var _0x218c=function(_0x3174ef,_0x592547){_0x3174ef=_0x3174ef-0x0;var _0x49da2e=_0x18c2[_0x3174ef];return _0x49da2e;};'use strict';var _=require(_0x218c('0x0'));var util=require(_0x218c('0x1'));var logger=require(_0x218c('0x2'))(_0x218c('0x3'));var moment=require(_0x218c('0x4'));var BPromise=require('bluebird');var rp=require(_0x218c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x218c('0x6'));var config=require(_0x218c('0x7'));var attributes=require(_0x218c('0x8'));module[_0x218c('0x9')]=function(_0x4c878d,_0x2a0707){return _0x4c878d[_0x218c('0xa')](_0x218c('0xb'),attributes,{'tableName':_0x218c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 07bf0fa..9897e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05ce=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','ShowSmsAccount','SmsAccount','find','options','where','attributes','include','map','model','lodash','util','moment','bluebird'];(function(_0x3a4082,_0x5a7324){var _0x246d4c=function(_0x19decc){while(--_0x19decc){_0x3a4082['push'](_0x3a4082['shift']());}};_0x246d4c(++_0x5a7324);}(_0x05ce,0x10d));var _0xe05c=function(_0x353530,_0x380a38){_0x353530=_0x353530-0x0;var _0x178390=_0x05ce[_0x353530];return _0x178390;};'use strict';var _=require(_0xe05c('0x0'));var util=require(_0xe05c('0x1'));var moment=require(_0xe05c('0x2'));var BPromise=require(_0xe05c('0x3'));var rs=require(_0xe05c('0x4'));var fs=require('fs');var Redis=require(_0xe05c('0x5'));var db=require(_0xe05c('0x6'))['db'];var utils=require(_0xe05c('0x7'));var logger=require(_0xe05c('0x8'))(_0xe05c('0x9'));var config=require(_0xe05c('0xa'));var jayson=require(_0xe05c('0xb'));var client=jayson[_0xe05c('0xc')][_0xe05c('0xd')]({'port':0x232a});config[_0xe05c('0xe')]=_[_0xe05c('0xf')](config[_0xe05c('0xe')],{'host':_0xe05c('0x10'),'port':0x18eb});var socket=require(_0xe05c('0x11'))(new Redis(config['redis']));require(_0xe05c('0x12'))[_0xe05c('0x13')](socket);function respondWithRpcPromise(_0x52d66d,_0x20a4d9,_0x47c90b){return new BPromise(function(_0x57eb3c,_0x24bac8){return client[_0xe05c('0x14')](_0x52d66d,_0x47c90b)[_0xe05c('0x15')](function(_0x52daa6){logger[_0xe05c('0x16')](_0xe05c('0x17'),_0x20a4d9,_0xe05c('0x18'));logger[_0xe05c('0x19')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x20a4d9,_0xe05c('0x18'),JSON[_0xe05c('0x1a')](_0x52daa6));if(_0x52daa6[_0xe05c('0x1b')]){if(_0x52daa6[_0xe05c('0x1b')]['code']===0x1f4){logger[_0xe05c('0x1b')](_0xe05c('0x17'),_0x20a4d9,_0x52daa6[_0xe05c('0x1b')][_0xe05c('0x1c')]);return _0x24bac8(_0x52daa6[_0xe05c('0x1b')]['message']);}logger[_0xe05c('0x1b')]('SmsAccount,\x20%s,\x20%s',_0x20a4d9,_0x52daa6[_0xe05c('0x1b')][_0xe05c('0x1c')]);return _0x57eb3c(_0x52daa6['error']['message']);}else{logger[_0xe05c('0x16')](_0xe05c('0x17'),_0x20a4d9,_0xe05c('0x18'));_0x57eb3c(_0x52daa6['result'][_0xe05c('0x1c')]);}})[_0xe05c('0x1d')](function(_0x292d18){logger['error'](_0xe05c('0x17'),_0x20a4d9,_0x292d18);_0x24bac8(_0x292d18);});});}exports[_0xe05c('0x1e')]=function(_0x213778){var _0x2b3af7=this;return new Promise(function(_0x89d2d,_0x171460){return db[_0xe05c('0x1f')][_0xe05c('0x20')]({'raw':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')][_0xe05c('0x22')]||null:null,'attributes':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')][_0xe05c('0x23')]||null:null,'include':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')][_0xe05c('0x24')]?_['map'](_0x213778[_0xe05c('0x21')][_0xe05c('0x24')],function(_0x43f119){return{'model':db[_0x43f119['model']],'as':_0x43f119['as'],'attributes':_0x43f119['attributes'],'include':_0x43f119[_0xe05c('0x24')]?_[_0xe05c('0x25')](_0x43f119[_0xe05c('0x24')],function(_0x559b1d){return{'model':db[_0x559b1d[_0xe05c('0x26')]],'as':_0x559b1d['as'],'attributes':_0x559b1d['attributes'],'include':_0x559b1d[_0xe05c('0x24')]?_['map'](_0x559b1d['include'],function(_0x6d2394){return{'model':db[_0x6d2394[_0xe05c('0x26')]],'as':_0x6d2394['as'],'attributes':_0x6d2394[_0xe05c('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x294902){logger[_0xe05c('0x16')](_0xe05c('0x1e'),_0x213778);logger[_0xe05c('0x19')]('ShowSmsAccount',_0x213778,JSON[_0xe05c('0x1a')](_0x294902));_0x89d2d(_0x294902);})['catch'](function(_0x183bb3){logger['error'](_0xe05c('0x1e'),_0x183bb3[_0xe05c('0x1c')],_0x213778);_0x171460(_0x2b3af7[_0xe05c('0x1b')](0x1f4,_0x183bb3[_0xe05c('0x1c')]));});});};
\ No newline at end of file
+var _0x7565=['error','code','message','catch','ShowSmsAccount','find','options','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','register','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x562faf,_0x102bcc){var _0x22c1f6=function(_0x2cd3b8){while(--_0x2cd3b8){_0x562faf['push'](_0x562faf['shift']());}};_0x22c1f6(++_0x102bcc);}(_0x7565,0x1d3));var _0x5756=function(_0x3a5787,_0x5ee4e3){_0x3a5787=_0x3a5787-0x0;var _0x1c7b2d=_0x7565[_0x3a5787];return _0x1c7b2d;};'use strict';var _=require(_0x5756('0x0'));var util=require(_0x5756('0x1'));var moment=require(_0x5756('0x2'));var BPromise=require(_0x5756('0x3'));var rs=require(_0x5756('0x4'));var fs=require('fs');var Redis=require(_0x5756('0x5'));var db=require(_0x5756('0x6'))['db'];var utils=require(_0x5756('0x7'));var logger=require('../../config/logger')(_0x5756('0x8'));var config=require(_0x5756('0x9'));var jayson=require(_0x5756('0xa'));var client=jayson['client'][_0x5756('0xb')]({'port':0x232a});config[_0x5756('0xc')]=_['defaults'](config[_0x5756('0xc')],{'host':_0x5756('0xd'),'port':0x18eb});var socket=require(_0x5756('0xe'))(new Redis(config[_0x5756('0xc')]));require('./smsAccount.socket')[_0x5756('0xf')](socket);function respondWithRpcPromise(_0x58f01d,_0x122c57,_0xb34f07){return new BPromise(function(_0x379687,_0x1593d6){return client['request'](_0x58f01d,_0xb34f07)[_0x5756('0x10')](function(_0x139066){logger[_0x5756('0x11')](_0x5756('0x12'),_0x122c57,_0x5756('0x13'));logger[_0x5756('0x14')](_0x5756('0x15'),_0x122c57,'request\x20sent',JSON[_0x5756('0x16')](_0x139066));if(_0x139066['error']){if(_0x139066[_0x5756('0x17')][_0x5756('0x18')]===0x1f4){logger[_0x5756('0x17')](_0x5756('0x12'),_0x122c57,_0x139066[_0x5756('0x17')][_0x5756('0x19')]);return _0x1593d6(_0x139066['error'][_0x5756('0x19')]);}logger[_0x5756('0x17')]('SmsAccount,\x20%s,\x20%s',_0x122c57,_0x139066['error'][_0x5756('0x19')]);return _0x379687(_0x139066[_0x5756('0x17')]['message']);}else{logger[_0x5756('0x11')]('SmsAccount,\x20%s,\x20%s',_0x122c57,_0x5756('0x13'));_0x379687(_0x139066['result'][_0x5756('0x19')]);}})[_0x5756('0x1a')](function(_0x302d3b){logger[_0x5756('0x17')](_0x5756('0x12'),_0x122c57,_0x302d3b);_0x1593d6(_0x302d3b);});});}exports[_0x5756('0x1b')]=function(_0xe5ed4){var _0x35a64b=this;return new Promise(function(_0x40ccab,_0x2adb13){return db['SmsAccount'][_0x5756('0x1c')]({'raw':_0xe5ed4[_0x5756('0x1d')]?_0xe5ed4[_0x5756('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xe5ed4[_0x5756('0x1d')]?_0xe5ed4[_0x5756('0x1d')][_0x5756('0x1e')]||null:null,'attributes':_0xe5ed4[_0x5756('0x1d')]?_0xe5ed4[_0x5756('0x1d')][_0x5756('0x1f')]||null:null,'include':_0xe5ed4[_0x5756('0x1d')]?_0xe5ed4['options'][_0x5756('0x20')]?_[_0x5756('0x21')](_0xe5ed4[_0x5756('0x1d')]['include'],function(_0x522678){return{'model':db[_0x522678[_0x5756('0x22')]],'as':_0x522678['as'],'attributes':_0x522678[_0x5756('0x1f')],'include':_0x522678[_0x5756('0x20')]?_[_0x5756('0x21')](_0x522678[_0x5756('0x20')],function(_0x2d8c19){return{'model':db[_0x2d8c19['model']],'as':_0x2d8c19['as'],'attributes':_0x2d8c19[_0x5756('0x1f')],'include':_0x2d8c19[_0x5756('0x20')]?_['map'](_0x2d8c19[_0x5756('0x20')],function(_0x5af668){return{'model':db[_0x5af668[_0x5756('0x22')]],'as':_0x5af668['as'],'attributes':_0x5af668[_0x5756('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5756('0x10')](function(_0x3cb54d){logger['info']('ShowSmsAccount',_0xe5ed4);logger[_0x5756('0x14')](_0x5756('0x1b'),_0xe5ed4,JSON[_0x5756('0x16')](_0x3cb54d));_0x40ccab(_0x3cb54d);})[_0x5756('0x1a')](function(_0x5f21cc){logger[_0x5756('0x17')](_0x5756('0x1b'),_0x5f21cc[_0x5756('0x19')],_0xe5ed4);_0x2adb13(_0x35a64b['error'](0x1f4,_0x5f21cc[_0x5756('0x19')]));});});};
\ No newline at end of file
index 2e60133..12c46ea 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 6fb4f11..1884700 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x50f298,_0x15ec50){var _0xa1ab2=function(_0x4d1f34){while(--_0x4d1f34){_0x50f298['push'](_0x50f298['shift']());}};_0xa1ab2(++_0x15ec50);}(_0x3e74,0x175));var _0x43e7=function(_0x16e634,_0x4c5ebd){_0x16e634=_0x16e634-0x0;var _0x322248=_0x3e74[_0x16e634];return _0x322248;};'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('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
+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(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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 f6a248d..a6cc795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d1=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0xae1e51,_0x4306a6){var _0x1c2e67=function(_0x4ccde0){while(--_0x4ccde0){_0xae1e51['push'](_0xae1e51['shift']());}};_0x1c2e67(++_0x4306a6);}(_0x85d1,0x1a0));var _0x185d=function(_0x1f7120,_0x53456a){_0x1f7120=_0x1f7120-0x0;var _0x512142=_0x85d1[_0x1f7120];return _0x512142;};'use strict';var Sequelize=require(_0x185d('0x0'));module[_0x185d('0x1')]={'priority':{'type':Sequelize[_0x185d('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x185d('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x185d('0x4')]()},'description':{'type':Sequelize[_0x185d('0x3')]},'interval':{'type':Sequelize[_0x185d('0x3')],'defaultValue':_0x185d('0x5')}};
\ No newline at end of file
+var _0x30fc=['STRING','noop','TEXT','*,*,*,*','exports','INTEGER'];(function(_0x10c8bd,_0x2e29fb){var _0x2e8003=function(_0x4cef5d){while(--_0x4cef5d){_0x10c8bd['push'](_0x10c8bd['shift']());}};_0x2e8003(++_0x2e29fb);}(_0x30fc,0xf4));var _0xc30f=function(_0x27d2bf,_0x27ec74){_0x27d2bf=_0x27d2bf-0x0;var _0x5498a=_0x30fc[_0x27d2bf];return _0x5498a;};'use strict';var Sequelize=require('sequelize');module[_0xc30f('0x0')]={'priority':{'type':Sequelize[_0xc30f('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xc30f('0x2')],'allowNull':![],'defaultValue':_0xc30f('0x3')},'appdata':{'type':Sequelize[_0xc30f('0x4')]()},'description':{'type':Sequelize[_0xc30f('0x2')]},'interval':{'type':Sequelize[_0xc30f('0x2')],'defaultValue':_0xc30f('0x5')}};
\ No newline at end of file
index 9944b22..3ccc832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x931a=['key','model','name','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','include','then','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','error','stack','send','index','map','SmsApplication','rawAttributes','fieldName'];(function(_0x4422c9,_0x1f4879){var _0x53c8cd=function(_0x10322e){while(--_0x10322e){_0x4422c9['push'](_0x4422c9['shift']());}};_0x53c8cd(++_0x1f4879);}(_0x931a,0x10d));var _0xa931=function(_0x51d2b1,_0x3fcc3f){_0x51d2b1=_0x51d2b1-0x0;var _0x1d71ae=_0x931a[_0x51d2b1];return _0x1d71ae;};'use strict';var emlformat=require(_0xa931('0x0'));var rimraf=require(_0xa931('0x1'));var zipdir=require(_0xa931('0x2'));var jsonpatch=require(_0xa931('0x3'));var rp=require(_0xa931('0x4'));var moment=require(_0xa931('0x5'));var BPromise=require(_0xa931('0x6'));var Mustache=require(_0xa931('0x7'));var util=require(_0xa931('0x8'));var path=require('path');var sox=require(_0xa931('0x9'));var csv=require(_0xa931('0xa'));var ejs=require(_0xa931('0xb'));var fs=require('fs');var fs_extra=require(_0xa931('0xc'));var _=require(_0xa931('0xd'));var squel=require(_0xa931('0xe'));var crypto=require(_0xa931('0xf'));var jsforce=require(_0xa931('0x10'));var deskjs=require(_0xa931('0x11'));var toCsv=require(_0xa931('0xa'));var querystring=require(_0xa931('0x12'));var Papa=require(_0xa931('0x13'));var Redis=require(_0xa931('0x14'));var authService=require(_0xa931('0x15'));var qs=require(_0xa931('0x16'));var as=require(_0xa931('0x17'));var hardwareService=require(_0xa931('0x18'));var logger=require('../../config/logger')('api');var utils=require(_0xa931('0x19'));var config=require(_0xa931('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xa931('0x1b'))['db'];function respondWithStatusCode(_0x18e6bc,_0x4d3b1c){_0x4d3b1c=_0x4d3b1c||0xcc;return function(_0x47b964){if(_0x47b964){return _0x18e6bc[_0xa931('0x1c')](_0x4d3b1c);}return _0x18e6bc[_0xa931('0x1d')](_0x4d3b1c)['end']();};}function respondWithResult(_0x28a627,_0x4f7502){_0x4f7502=_0x4f7502||0xc8;return function(_0x52dc59){if(_0x52dc59){return _0x28a627[_0xa931('0x1d')](_0x4f7502)[_0xa931('0x1e')](_0x52dc59);}};}function respondWithFilteredResult(_0x1c06d3,_0x46394d){return function(_0x44fef7){if(_0x44fef7){var _0x56b6f8=typeof _0x46394d[_0xa931('0x1f')]===_0xa931('0x20')&&typeof _0x46394d[_0xa931('0x21')]===_0xa931('0x20');var _0x2b3b11=_0x44fef7[_0xa931('0x22')];var _0x1cea3a=_0x56b6f8?0x0:_0x46394d[_0xa931('0x1f')];var _0x88d4e2=_0x56b6f8?_0x44fef7[_0xa931('0x22')]:_0x46394d[_0xa931('0x1f')]+_0x46394d[_0xa931('0x21')];var _0x50e7be;if(_0x88d4e2>=_0x2b3b11){_0x88d4e2=_0x2b3b11;_0x50e7be=0xc8;}else{_0x50e7be=0xce;}_0x1c06d3[_0xa931('0x1d')](_0x50e7be);return _0x1c06d3[_0xa931('0x23')](_0xa931('0x24'),_0x1cea3a+'-'+_0x88d4e2+'/'+_0x2b3b11)[_0xa931('0x1e')](_0x44fef7);}return null;};}function patchUpdates(_0x35f608){return function(_0x13ae66){try{jsonpatch[_0xa931('0x25')](_0x13ae66,_0x35f608,!![]);}catch(_0x37b73f){return BPromise[_0xa931('0x26')](_0x37b73f);}return _0x13ae66[_0xa931('0x27')]();};}function saveUpdates(_0x5edbbf,_0xdfee9){return function(_0x4f5564){if(_0x4f5564){return _0x4f5564[_0xa931('0x28')](_0x5edbbf)['then'](function(_0x93d4d9){return _0x93d4d9;});}return null;};}function removeEntity(_0x2ede98,_0x1ade00){return function(_0x1b10bd){if(_0x1b10bd){return _0x1b10bd[_0xa931('0x29')]()['then'](function(){_0x2ede98[_0xa931('0x1d')](0xcc)[_0xa931('0x2a')]();});}};}function handleEntityNotFound(_0x425c85,_0x3a0f1e){return function(_0x193e74){if(!_0x193e74){_0x425c85[_0xa931('0x1c')](0x194);}return _0x193e74;};}function handleError(_0x4f8133,_0x33cbd0){_0x33cbd0=_0x33cbd0||0x1f4;return function(_0x51cbe6){logger[_0xa931('0x2b')](_0x51cbe6[_0xa931('0x2c')]);if(_0x51cbe6['name']){delete _0x51cbe6['name'];}_0x4f8133[_0xa931('0x1d')](_0x33cbd0)[_0xa931('0x2d')](_0x51cbe6);};}exports[_0xa931('0x2e')]=function(_0x117c55,_0x3440b3){var _0x5d3884={},_0x502252={},_0x335cc1={'count':0x0,'rows':[]};var _0x3e2853=_[_0xa931('0x2f')](db[_0xa931('0x30')][_0xa931('0x31')],function(_0x5e040a){return{'name':_0x5e040a[_0xa931('0x32')],'type':_0x5e040a['type'][_0xa931('0x33')]};});_0x502252[_0xa931('0x34')]=_['map'](_0x3e2853,_0xa931('0x35'));_0x502252[_0xa931('0x36')]=_[_0xa931('0x37')](_0x117c55[_0xa931('0x36')]);_0x502252[_0xa931('0x38')]=_['intersection'](_0x502252[_0xa931('0x34')],_0x502252[_0xa931('0x36')]);_0x5d3884['attributes']=_[_0xa931('0x39')](_0x502252[_0xa931('0x34')],qs['fields'](_0x117c55['query'][_0xa931('0x3a')]));_0x5d3884[_0xa931('0x3b')]=_0x5d3884[_0xa931('0x3b')][_0xa931('0x3c')]?_0x5d3884['attributes']:_0x502252[_0xa931('0x34')];if(!_0x117c55['query']['hasOwnProperty'](_0xa931('0x3d'))){_0x5d3884[_0xa931('0x21')]=qs['limit'](_0x117c55['query']['limit']);_0x5d3884[_0xa931('0x1f')]=qs[_0xa931('0x1f')](_0x117c55['query'][_0xa931('0x1f')]);}_0x5d3884[_0xa931('0x3e')]=qs[_0xa931('0x3f')](_0x117c55[_0xa931('0x36')][_0xa931('0x3f')]);_0x5d3884[_0xa931('0x40')]=qs[_0xa931('0x38')](_[_0xa931('0x41')](_0x117c55['query'],_0x502252[_0xa931('0x38')]),_0x3e2853);if(_0x117c55[_0xa931('0x36')]['filter']){_0x5d3884[_0xa931('0x40')]=_[_0xa931('0x42')](_0x5d3884[_0xa931('0x40')],{'$or':_[_0xa931('0x2f')](_0x3e2853,function(_0x3b377b){if(_0x3b377b[_0xa931('0x43')]!==_0xa931('0x44')){var _0x5db0b5={};_0x5db0b5[_0x3b377b['name']]={'$like':'%'+_0x117c55[_0xa931('0x36')][_0xa931('0x45')]+'%'};return _0x5db0b5;}})});}_0x5d3884=_['merge']({},_0x5d3884,_0x117c55['options']);var _0x44197c={'where':_0x5d3884[_0xa931('0x40')]};return db[_0xa931('0x30')]['count'](_0x44197c)['then'](function(_0x56410f){_0x335cc1[_0xa931('0x22')]=_0x56410f;if(_0x117c55[_0xa931('0x36')][_0xa931('0x46')]){_0x5d3884[_0xa931('0x47')]=[{'all':!![]}];}return db[_0xa931('0x30')]['findAll'](_0x5d3884);})['then'](function(_0x1aee4e){_0x335cc1['rows']=_0x1aee4e;return _0x335cc1;})[_0xa931('0x48')](respondWithFilteredResult(_0x3440b3,_0x5d3884))[_0xa931('0x49')](handleError(_0x3440b3,null));};exports[_0xa931('0x4a')]=function(_0x2805e2,_0xa470){var _0x1e03a6={'raw':!![],'where':{'id':_0x2805e2['params']['id']}},_0xd0f967={};_0xd0f967['model']=_[_0xa931('0x37')](db[_0xa931('0x30')][_0xa931('0x31')]);_0xd0f967[_0xa931('0x36')]=_[_0xa931('0x37')](_0x2805e2[_0xa931('0x36')]);_0xd0f967[_0xa931('0x38')]=_[_0xa931('0x39')](_0xd0f967[_0xa931('0x34')],_0xd0f967[_0xa931('0x36')]);_0x1e03a6[_0xa931('0x3b')]=_['intersection'](_0xd0f967[_0xa931('0x34')],qs['fields'](_0x2805e2[_0xa931('0x36')][_0xa931('0x3a')]));_0x1e03a6[_0xa931('0x3b')]=_0x1e03a6[_0xa931('0x3b')][_0xa931('0x3c')]?_0x1e03a6[_0xa931('0x3b')]:_0xd0f967['model'];if(_0x2805e2[_0xa931('0x36')][_0xa931('0x46')]){_0x1e03a6[_0xa931('0x47')]=[{'all':!![]}];}_0x1e03a6=_['merge']({},_0x1e03a6,_0x2805e2[_0xa931('0x4b')]);return db['SmsApplication'][_0xa931('0x4c')](_0x1e03a6)[_0xa931('0x48')](handleEntityNotFound(_0xa470,null))[_0xa931('0x48')](respondWithResult(_0xa470,null))[_0xa931('0x49')](handleError(_0xa470,null));};exports[_0xa931('0x4d')]=function(_0x23a22e,_0x3600d3){return db[_0xa931('0x30')][_0xa931('0x4d')](_0x23a22e[_0xa931('0x4e')],{})[_0xa931('0x48')](respondWithResult(_0x3600d3,0xc9))['catch'](handleError(_0x3600d3,null));};exports['update']=function(_0x5cbef0,_0x48b232){if(_0x5cbef0['body']['id']){delete _0x5cbef0[_0xa931('0x4e')]['id'];}return db['SmsApplication'][_0xa931('0x4c')]({'where':{'id':_0x5cbef0['params']['id']}})[_0xa931('0x48')](handleEntityNotFound(_0x48b232,null))[_0xa931('0x48')](saveUpdates(_0x5cbef0[_0xa931('0x4e')],null))[_0xa931('0x48')](respondWithResult(_0x48b232,null))[_0xa931('0x49')](handleError(_0x48b232,null));};exports[_0xa931('0x29')]=function(_0x5524e1,_0x32a0ee){return db[_0xa931('0x30')]['find']({'where':{'id':_0x5524e1[_0xa931('0x4f')]['id']}})[_0xa931('0x48')](handleEntityNotFound(_0x32a0ee,null))['then'](removeEntity(_0x32a0ee,null))['catch'](handleError(_0x32a0ee,null));};
\ No newline at end of file
+var _0x08f9=['index','map','SmsApplication','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','nolimit','sort','where','pick','filter','includeAll','include','findAll','rows','show','keys','length','merge','options','find','catch','create','body','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send'];(function(_0x1d73da,_0x44729d){var _0x4677ea=function(_0xa6b90e){while(--_0xa6b90e){_0x1d73da['push'](_0x1d73da['shift']());}};_0x4677ea(++_0x44729d);}(_0x08f9,0x181));var _0x908f=function(_0x48d203,_0x233ce4){_0x48d203=_0x48d203-0x0;var _0x29c014=_0x08f9[_0x48d203];return _0x29c014;};'use strict';var emlformat=require(_0x908f('0x0'));var rimraf=require(_0x908f('0x1'));var zipdir=require(_0x908f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x908f('0x3'));var moment=require('moment');var BPromise=require(_0x908f('0x4'));var Mustache=require(_0x908f('0x5'));var util=require(_0x908f('0x6'));var path=require('path');var sox=require(_0x908f('0x7'));var csv=require(_0x908f('0x8'));var ejs=require(_0x908f('0x9'));var fs=require('fs');var fs_extra=require(_0x908f('0xa'));var _=require(_0x908f('0xb'));var squel=require(_0x908f('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x908f('0xd'));var toCsv=require(_0x908f('0x8'));var querystring=require(_0x908f('0xe'));var Papa=require('papaparse');var Redis=require(_0x908f('0xf'));var authService=require(_0x908f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x908f('0x11'));var hardwareService=require(_0x908f('0x12'));var logger=require(_0x908f('0x13'))(_0x908f('0x14'));var utils=require(_0x908f('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x908f('0x16'))['db'];function respondWithStatusCode(_0x291287,_0x3b5d28){_0x3b5d28=_0x3b5d28||0xcc;return function(_0x1cb942){if(_0x1cb942){return _0x291287[_0x908f('0x17')](_0x3b5d28);}return _0x291287['status'](_0x3b5d28)['end']();};}function respondWithResult(_0x1f7d7f,_0x379786){_0x379786=_0x379786||0xc8;return function(_0x58756e){if(_0x58756e){return _0x1f7d7f[_0x908f('0x18')](_0x379786)[_0x908f('0x19')](_0x58756e);}};}function respondWithFilteredResult(_0x4920cd,_0x27561f){return function(_0x5954d4){if(_0x5954d4){var _0x5359eb=typeof _0x27561f[_0x908f('0x1a')]===_0x908f('0x1b')&&typeof _0x27561f[_0x908f('0x1c')]===_0x908f('0x1b');var _0x3aaf52=_0x5954d4[_0x908f('0x1d')];var _0x1644d3=_0x5359eb?0x0:_0x27561f[_0x908f('0x1a')];var _0x90c2b8=_0x5359eb?_0x5954d4['count']:_0x27561f[_0x908f('0x1a')]+_0x27561f[_0x908f('0x1c')];var _0x4d04a8;if(_0x90c2b8>=_0x3aaf52){_0x90c2b8=_0x3aaf52;_0x4d04a8=0xc8;}else{_0x4d04a8=0xce;}_0x4920cd[_0x908f('0x18')](_0x4d04a8);return _0x4920cd[_0x908f('0x1e')](_0x908f('0x1f'),_0x1644d3+'-'+_0x90c2b8+'/'+_0x3aaf52)[_0x908f('0x19')](_0x5954d4);}return null;};}function patchUpdates(_0x5139fe){return function(_0x5f17d9){try{jsonpatch[_0x908f('0x20')](_0x5f17d9,_0x5139fe,!![]);}catch(_0x2b6113){return BPromise[_0x908f('0x21')](_0x2b6113);}return _0x5f17d9[_0x908f('0x22')]();};}function saveUpdates(_0x475022,_0x3b90be){return function(_0x26ee04){if(_0x26ee04){return _0x26ee04[_0x908f('0x23')](_0x475022)['then'](function(_0x539ed1){return _0x539ed1;});}return null;};}function removeEntity(_0x561c23,_0x4dc28a){return function(_0x10ecb3){if(_0x10ecb3){return _0x10ecb3[_0x908f('0x24')]()[_0x908f('0x25')](function(){_0x561c23[_0x908f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cedb6,_0x5a2754){return function(_0x5bd9c3){if(!_0x5bd9c3){_0x5cedb6[_0x908f('0x17')](0x194);}return _0x5bd9c3;};}function handleError(_0x4e2f68,_0x1e22ed){_0x1e22ed=_0x1e22ed||0x1f4;return function(_0x3ffcb0){logger['error'](_0x3ffcb0[_0x908f('0x26')]);if(_0x3ffcb0[_0x908f('0x27')]){delete _0x3ffcb0[_0x908f('0x27')];}_0x4e2f68[_0x908f('0x18')](_0x1e22ed)[_0x908f('0x28')](_0x3ffcb0);};}exports[_0x908f('0x29')]=function(_0x3cfdec,_0xc2d7ef){var _0x22eede={},_0xc6374a={},_0x120e06={'count':0x0,'rows':[]};var _0x58a713=_[_0x908f('0x2a')](db[_0x908f('0x2b')][_0x908f('0x2c')],function(_0x398c2a){return{'name':_0x398c2a[_0x908f('0x2d')],'type':_0x398c2a['type']['key']};});_0xc6374a[_0x908f('0x2e')]=_[_0x908f('0x2a')](_0x58a713,_0x908f('0x27'));_0xc6374a['query']=_['keys'](_0x3cfdec[_0x908f('0x2f')]);_0xc6374a[_0x908f('0x30')]=_['intersection'](_0xc6374a[_0x908f('0x2e')],_0xc6374a[_0x908f('0x2f')]);_0x22eede[_0x908f('0x31')]=_[_0x908f('0x32')](_0xc6374a['model'],qs[_0x908f('0x33')](_0x3cfdec['query']['fields']));_0x22eede[_0x908f('0x31')]=_0x22eede[_0x908f('0x31')]['length']?_0x22eede[_0x908f('0x31')]:_0xc6374a[_0x908f('0x2e')];if(!_0x3cfdec[_0x908f('0x2f')]['hasOwnProperty'](_0x908f('0x34'))){_0x22eede[_0x908f('0x1c')]=qs[_0x908f('0x1c')](_0x3cfdec[_0x908f('0x2f')][_0x908f('0x1c')]);_0x22eede[_0x908f('0x1a')]=qs['offset'](_0x3cfdec[_0x908f('0x2f')]['offset']);}_0x22eede['order']=qs[_0x908f('0x35')](_0x3cfdec[_0x908f('0x2f')][_0x908f('0x35')]);_0x22eede[_0x908f('0x36')]=qs[_0x908f('0x30')](_[_0x908f('0x37')](_0x3cfdec['query'],_0xc6374a['filters']),_0x58a713);if(_0x3cfdec[_0x908f('0x2f')][_0x908f('0x38')]){_0x22eede['where']=_['merge'](_0x22eede[_0x908f('0x36')],{'$or':_[_0x908f('0x2a')](_0x58a713,function(_0x19521d){if(_0x19521d['type']!=='VIRTUAL'){var _0x3cdb68={};_0x3cdb68[_0x19521d[_0x908f('0x27')]]={'$like':'%'+_0x3cfdec[_0x908f('0x2f')][_0x908f('0x38')]+'%'};return _0x3cdb68;}})});}_0x22eede=_['merge']({},_0x22eede,_0x3cfdec['options']);var _0x23c610={'where':_0x22eede[_0x908f('0x36')]};return db[_0x908f('0x2b')]['count'](_0x23c610)[_0x908f('0x25')](function(_0x39c8b5){_0x120e06[_0x908f('0x1d')]=_0x39c8b5;if(_0x3cfdec[_0x908f('0x2f')][_0x908f('0x39')]){_0x22eede[_0x908f('0x3a')]=[{'all':!![]}];}return db[_0x908f('0x2b')][_0x908f('0x3b')](_0x22eede);})[_0x908f('0x25')](function(_0x242111){_0x120e06[_0x908f('0x3c')]=_0x242111;return _0x120e06;})[_0x908f('0x25')](respondWithFilteredResult(_0xc2d7ef,_0x22eede))['catch'](handleError(_0xc2d7ef,null));};exports[_0x908f('0x3d')]=function(_0x50edbd,_0x4296fe){var _0xb7a13d={'raw':!![],'where':{'id':_0x50edbd['params']['id']}},_0x21765e={};_0x21765e[_0x908f('0x2e')]=_[_0x908f('0x3e')](db['SmsApplication'][_0x908f('0x2c')]);_0x21765e[_0x908f('0x2f')]=_[_0x908f('0x3e')](_0x50edbd[_0x908f('0x2f')]);_0x21765e['filters']=_[_0x908f('0x32')](_0x21765e[_0x908f('0x2e')],_0x21765e[_0x908f('0x2f')]);_0xb7a13d['attributes']=_['intersection'](_0x21765e[_0x908f('0x2e')],qs[_0x908f('0x33')](_0x50edbd[_0x908f('0x2f')][_0x908f('0x33')]));_0xb7a13d[_0x908f('0x31')]=_0xb7a13d[_0x908f('0x31')][_0x908f('0x3f')]?_0xb7a13d[_0x908f('0x31')]:_0x21765e['model'];if(_0x50edbd['query'][_0x908f('0x39')]){_0xb7a13d[_0x908f('0x3a')]=[{'all':!![]}];}_0xb7a13d=_[_0x908f('0x40')]({},_0xb7a13d,_0x50edbd[_0x908f('0x41')]);return db[_0x908f('0x2b')][_0x908f('0x42')](_0xb7a13d)['then'](handleEntityNotFound(_0x4296fe,null))[_0x908f('0x25')](respondWithResult(_0x4296fe,null))[_0x908f('0x43')](handleError(_0x4296fe,null));};exports[_0x908f('0x44')]=function(_0x55cf59,_0x3a904e){return db[_0x908f('0x2b')][_0x908f('0x44')](_0x55cf59[_0x908f('0x45')],{})[_0x908f('0x25')](respondWithResult(_0x3a904e,0xc9))['catch'](handleError(_0x3a904e,null));};exports[_0x908f('0x23')]=function(_0x148a7c,_0xb6886){if(_0x148a7c['body']['id']){delete _0x148a7c[_0x908f('0x45')]['id'];}return db[_0x908f('0x2b')][_0x908f('0x42')]({'where':{'id':_0x148a7c[_0x908f('0x46')]['id']}})[_0x908f('0x25')](handleEntityNotFound(_0xb6886,null))['then'](saveUpdates(_0x148a7c['body'],null))[_0x908f('0x25')](respondWithResult(_0xb6886,null))[_0x908f('0x43')](handleError(_0xb6886,null));};exports[_0x908f('0x24')]=function(_0x382375,_0x185fe6){return db[_0x908f('0x2b')][_0x908f('0x42')]({'where':{'id':_0x382375['params']['id']}})['then'](handleEntityNotFound(_0x185fe6,null))[_0x908f('0x25')](removeEntity(_0x185fe6,null))[_0x908f('0x43')](handleError(_0x185fe6,null));};
\ No newline at end of file
index 6af1f9c..644f8bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf73=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','SmsApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0x4dd24b,_0x49b06b){var _0x951311=function(_0x2001d7){while(--_0x2001d7){_0x4dd24b['push'](_0x4dd24b['shift']());}};_0x951311(++_0x49b06b);}(_0xcf73,0x15c));var _0x3cf7=function(_0x53d3ad,_0x47bd1b){_0x53d3ad=_0x53d3ad-0x0;var _0x1362b0=_0xcf73[_0x53d3ad];return _0x1362b0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3cf7('0x0'))('api');var moment=require(_0x3cf7('0x1'));var BPromise=require(_0x3cf7('0x2'));var rp=require(_0x3cf7('0x3'));var fs=require('fs');var path=require(_0x3cf7('0x4'));var rimraf=require(_0x3cf7('0x5'));var config=require(_0x3cf7('0x6'));var attributes=require(_0x3cf7('0x7'));module[_0x3cf7('0x8')]=function(_0x207292,_0x5e68bb){return _0x207292['define'](_0x3cf7('0x9'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3cf7('0xa'),'collate':_0x3cf7('0xb')});};
\ No newline at end of file
+var _0xfca4=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./smsApplication.attributes','define','SmsApplication','utf8mb4'];(function(_0x501b52,_0x541eb3){var _0x55a08d=function(_0x3d8450){while(--_0x3d8450){_0x501b52['push'](_0x501b52['shift']());}};_0x55a08d(++_0x541eb3);}(_0xfca4,0x12c));var _0x4fca=function(_0x528e52,_0xf4dd5c){_0x528e52=_0x528e52-0x0;var _0x3ff8f3=_0xfca4[_0x528e52];return _0x3ff8f3;};'use strict';var _=require(_0x4fca('0x0'));var util=require(_0x4fca('0x1'));var logger=require(_0x4fca('0x2'))(_0x4fca('0x3'));var moment=require(_0x4fca('0x4'));var BPromise=require('bluebird');var rp=require(_0x4fca('0x5'));var fs=require('fs');var path=require(_0x4fca('0x6'));var rimraf=require(_0x4fca('0x7'));var config=require('../../config/environment');var attributes=require(_0x4fca('0x8'));module['exports']=function(_0x2c416a,_0x2cfc9c){return _0x2c416a[_0x4fca('0x9')](_0x4fca('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4fca('0xb'),'collate':_0x4fca('0xc')});};
\ No newline at end of file
index f9723ef..2f656fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f83=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x6f83,0x72));var _0x36f8=function(_0x3230f9,_0x4f6bbd){_0x3230f9=_0x3230f9-0x0;var _0x44f77d=_0x6f83[_0x3230f9];return _0x44f77d;};'use strict';var _=require('lodash');var util=require(_0x36f8('0x0'));var moment=require(_0x36f8('0x1'));var BPromise=require('bluebird');var rs=require(_0x36f8('0x2'));var fs=require('fs');var Redis=require(_0x36f8('0x3'));var db=require(_0x36f8('0x4'))['db'];var utils=require(_0x36f8('0x5'));var logger=require(_0x36f8('0x6'))(_0x36f8('0x7'));var config=require(_0x36f8('0x8'));var jayson=require(_0x36f8('0x9'));var client=jayson[_0x36f8('0xa')][_0x36f8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27d94b,_0x2c0367,_0x370a97){return new BPromise(function(_0x3fe644,_0x22b992){return client[_0x36f8('0xc')](_0x27d94b,_0x370a97)['then'](function(_0x48c7b2){logger['info'](_0x36f8('0xd'),_0x2c0367,_0x36f8('0xe'));logger[_0x36f8('0xf')](_0x36f8('0x10'),_0x2c0367,_0x36f8('0xe'),JSON[_0x36f8('0x11')](_0x48c7b2));if(_0x48c7b2[_0x36f8('0x12')]){if(_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x13')]===0x1f4){logger['error'](_0x36f8('0xd'),_0x2c0367,_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x14')]);return _0x22b992(_0x48c7b2[_0x36f8('0x12')]['message']);}logger[_0x36f8('0x12')](_0x36f8('0xd'),_0x2c0367,_0x48c7b2[_0x36f8('0x12')]['message']);return _0x3fe644(_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x14')]);}else{logger[_0x36f8('0x15')]('SmsApplication,\x20%s,\x20%s',_0x2c0367,_0x36f8('0xe'));_0x3fe644(_0x48c7b2[_0x36f8('0x16')][_0x36f8('0x14')]);}})[_0x36f8('0x17')](function(_0x5ec545){logger['error'](_0x36f8('0xd'),_0x2c0367,_0x5ec545);_0x22b992(_0x5ec545);});});}
\ No newline at end of file
+var _0xe2cf=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util'];(function(_0x14faf8,_0x4607b){var _0x1b5305=function(_0x25e876){while(--_0x25e876){_0x14faf8['push'](_0x14faf8['shift']());}};_0x1b5305(++_0x4607b);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x20ba6d,_0x256177){_0x20ba6d=_0x20ba6d-0x0;var _0x338188=_0xe2cf[_0x20ba6d];return _0x338188;};'use strict';var _=require('lodash');var util=require(_0xfe2c('0x0'));var moment=require('moment');var BPromise=require(_0xfe2c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe2c('0x2'));var db=require(_0xfe2c('0x3'))['db'];var utils=require(_0xfe2c('0x4'));var logger=require(_0xfe2c('0x5'))('rpc');var config=require(_0xfe2c('0x6'));var jayson=require(_0xfe2c('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4e0b97,_0x417bc4,_0x5e5b46){return new BPromise(function(_0x485a24,_0x30aafe){return client[_0xfe2c('0x8')](_0x4e0b97,_0x5e5b46)[_0xfe2c('0x9')](function(_0x562414){logger['info'](_0xfe2c('0xa'),_0x417bc4,_0xfe2c('0xb'));logger['debug'](_0xfe2c('0xc'),_0x417bc4,_0xfe2c('0xb'),JSON[_0xfe2c('0xd')](_0x562414));if(_0x562414[_0xfe2c('0xe')]){if(_0x562414[_0xfe2c('0xe')][_0xfe2c('0xf')]===0x1f4){logger[_0xfe2c('0xe')]('SmsApplication,\x20%s,\x20%s',_0x417bc4,_0x562414['error']['message']);return _0x30aafe(_0x562414['error'][_0xfe2c('0x10')]);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x417bc4,_0x562414[_0xfe2c('0xe')][_0xfe2c('0x10')]);return _0x485a24(_0x562414[_0xfe2c('0xe')][_0xfe2c('0x10')]);}else{logger['info']('SmsApplication,\x20%s,\x20%s',_0x417bc4,_0xfe2c('0xb'));_0x485a24(_0x562414[_0xfe2c('0x11')][_0xfe2c('0x10')]);}})[_0xfe2c('0x12')](function(_0x565f40){logger[_0xfe2c('0xe')](_0xfe2c('0xa'),_0x417bc4,_0x565f40);_0x30aafe(_0x565f40);});});}
\ No newline at end of file
index 94f3a95..4b12566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','isAuthenticated','index','get','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','smsinteraction:addtags','addTags','put','sms','smsinteraction:update','update','delete','smsinteraction:destroy','destroy'];(function(_0x208caa,_0x17d73e){var _0x5decd5=function(_0x196cea){while(--_0x196cea){_0x208caa['push'](_0x208caa['shift']());}};_0x5decd5(++_0x17d73e);}(_0xb62e,0x1de));var _0xeb62=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xb62e[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var path=require(_0xeb62('0x2'));var timeout=require(_0xeb62('0x3'));var express=require('express');var router=express[_0xeb62('0x4')]();var fs_extra=require(_0xeb62('0x5'));var auth=require(_0xeb62('0x6'));var interaction=require(_0xeb62('0x7'));var config=require(_0xeb62('0x8'));var controller=require(_0xeb62('0x9'));router['get']('/',auth[_0xeb62('0xa')](),controller[_0xeb62('0xb')]);router[_0xeb62('0xc')]('/describe',auth[_0xeb62('0xa')](),controller[_0xeb62('0xd')]);router[_0xeb62('0xc')](_0xeb62('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xeb62('0xc')](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x10')]);router[_0xeb62('0xc')](_0xeb62('0x11'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x12')]);router[_0xeb62('0x13')]('/',auth[_0xeb62('0xa')](),controller['create']);router[_0xeb62('0x13')](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x14')]);router['post'](_0xeb62('0x15'),auth[_0xeb62('0xa')](),interaction[_0xeb62('0x16')]('sms',_0xeb62('0x17')),controller[_0xeb62('0x18')]);router[_0xeb62('0x19')]('/:id',auth[_0xeb62('0xa')](),interaction[_0xeb62('0x16')](_0xeb62('0x1a'),_0xeb62('0x1b')),controller[_0xeb62('0x1c')]);router[_0xeb62('0x1d')](_0xeb62('0xe'),auth[_0xeb62('0xa')](),interaction[_0xeb62('0x16')](_0xeb62('0x1a'),_0xeb62('0x1e')),controller[_0xeb62('0x1f')]);router[_0xeb62('0x1d')]('/:id/tags',auth[_0xeb62('0xa')](),controller[_0xeb62('0x20')]);module[_0xeb62('0x21')]=router;
\ No newline at end of file
+var _0x6324=['isAuthenticated','index','describe','show','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','/:id','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get'];(function(_0xdc3e5a,_0x4cd891){var _0x5e6121=function(_0x341371){while(--_0x341371){_0xdc3e5a['push'](_0xdc3e5a['shift']());}};_0x5e6121(++_0x4cd891);}(_0x6324,0x142));var _0x4632=function(_0x5b7755,_0x44681c){_0x5b7755=_0x5b7755-0x0;var _0x1a9c39=_0x6324[_0x5b7755];return _0x1a9c39;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./smsInteraction.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/describe',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xb')]);router['get']('/:id/messages',auth[_0x4632('0x8')](),controller[_0x4632('0xc')]);router[_0x4632('0x7')](_0x4632('0xd'),auth[_0x4632('0x8')](),controller[_0x4632('0xe')]);router[_0x4632('0xf')]('/',auth[_0x4632('0x8')](),controller['create']);router[_0x4632('0xf')]('/:id/messages',auth[_0x4632('0x8')](),controller[_0x4632('0x10')]);router[_0x4632('0xf')](_0x4632('0x11'),auth['isAuthenticated'](),interaction[_0x4632('0x12')](_0x4632('0x13'),_0x4632('0x14')),controller[_0x4632('0x15')]);router[_0x4632('0x16')]('/:id',auth['isAuthenticated'](),interaction[_0x4632('0x12')](_0x4632('0x13'),_0x4632('0x17')),controller[_0x4632('0x18')]);router['delete'](_0x4632('0x19'),auth[_0x4632('0x8')](),interaction[_0x4632('0x12')]('sms',_0x4632('0x1a')),controller[_0x4632('0x1b')]);router['delete']('/:id/tags',auth[_0x4632('0x8')](),controller[_0x4632('0x1c')]);module[_0x4632('0x1d')]=router;
\ No newline at end of file
index 9669e18..52e8a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x308a=['out','sequelize','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x1bb7d8,_0x2b3471){var _0x134faf=function(_0x5a0236){while(--_0x5a0236){_0x1bb7d8['push'](_0x1bb7d8['shift']());}};_0x134faf(++_0x2b3471);}(_0x308a,0x71));var _0xa308=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x308a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa308('0x0'));var moment=require('moment');module[_0xa308('0x1')]={'closed':{'type':Sequelize[_0xa308('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa308('0x3')]},'disposition':{'type':Sequelize[_0xa308('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xa308('0x4')]},'phone':{'type':Sequelize[_0xa308('0x4')]},'read1stAt':{'type':Sequelize[_0xa308('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xa308('0x5')]('in',_0xa308('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa308('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xa308('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xc15b=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc15b,0xe4));var _0xbc15=function(_0x1ebe90,_0x5d29fc){_0x1ebe90=_0x1ebe90-0x0;var _0x447c82=_0xc15b[_0x1ebe90];return _0x447c82;};'use strict';var Sequelize=require(_0xbc15('0x0'));var moment=require('moment');module[_0xbc15('0x1')]={'closed':{'type':Sequelize[_0xbc15('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xbc15('0x3')]},'disposition':{'type':Sequelize[_0xbc15('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xbc15('0x4')]},'phone':{'type':Sequelize[_0xbc15('0x4')]},'read1stAt':{'type':Sequelize[_0xbc15('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xbc15('0x5')]('in',_0xbc15('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xbc15('0x2')],'defaultValue':![]}};
\ No newline at end of file
index ca40c99..7048efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50c=['send','Users','map','TagIds','Tags','forEach','push','catch','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','select','field','color','tools_tags','u.id','user_has_sms_interactions','left_join','u.id\x20=\x20ui.UserId','from','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','compact','SmsAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','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?','group','QueryTypes','SELECT','clone','i.id','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','agent','sequelize','toString','keyBy','merge','SmsInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','SmsInteractionId','all','rows','show','params','keys','options','create','update','body','describe','addMessage','ids','getMessages','findOne','SmsMessage','filter','includeAll','include','findAll','addTags','setTags','omit','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','root','files','server','attachments','transcript-%d-%s.zip','User','fullname','CmContact','lastName','secret','Account','get','mkdirSync','Sms','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','out','System','firstName','direction','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','status','end','json','undefined','count','offset','set','Content-Range','apply','destroy','then','stack','name'];(function(_0x43c7e4,_0x5cf7e4){var _0x32a4eb=function(_0x56dfc2){while(--_0x56dfc2){_0x43c7e4['push'](_0x43c7e4['shift']());}};_0x32a4eb(++_0x5cf7e4);}(_0xb50c,0x1bb));var _0xcb50=function(_0x1cb0c8,_0x318554){_0x1cb0c8=_0x1cb0c8-0x0;var _0x4da112=_0xb50c[_0x1cb0c8];return _0x4da112;};'use strict';var emlformat=require(_0xcb50('0x0'));var rimraf=require(_0xcb50('0x1'));var zipdir=require(_0xcb50('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcb50('0x3'));var BPromise=require(_0xcb50('0x4'));var Mustache=require('mustache');var util=require(_0xcb50('0x5'));var path=require(_0xcb50('0x6'));var sox=require(_0xcb50('0x7'));var csv=require(_0xcb50('0x8'));var ejs=require(_0xcb50('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xcb50('0xa'));var crypto=require(_0xcb50('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xcb50('0xc'));var toCsv=require(_0xcb50('0x8'));var querystring=require(_0xcb50('0xd'));var Papa=require('papaparse');var Redis=require(_0xcb50('0xe'));var authService=require(_0xcb50('0xf'));var qs=require(_0xcb50('0x10'));var as=require(_0xcb50('0x11'));var pdf=require(_0xcb50('0x12'));var hardwareService=require(_0xcb50('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xcb50('0x14'));var config=require(_0xcb50('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xcb50('0x16'))['db'];config[_0xcb50('0x17')]=_[_0xcb50('0x18')](config[_0xcb50('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xcb50('0x19'))(new Redis(config[_0xcb50('0x17')]));require(_0xcb50('0x1a'))[_0xcb50('0x1b')](socket);function respondWithStatusCode(_0x1ced47,_0x3b08f5){_0x3b08f5=_0x3b08f5||0xcc;return function(_0x371251){if(_0x371251){return _0x1ced47['sendStatus'](_0x3b08f5);}return _0x1ced47[_0xcb50('0x1c')](_0x3b08f5)[_0xcb50('0x1d')]();};}function respondWithResult(_0x55f188,_0x18db9e){_0x18db9e=_0x18db9e||0xc8;return function(_0xa0073c){if(_0xa0073c){return _0x55f188[_0xcb50('0x1c')](_0x18db9e)[_0xcb50('0x1e')](_0xa0073c);}};}function respondWithFilteredResult(_0x31269d,_0x2b94a9){return function(_0x332465){if(_0x332465){var _0x49675a=typeof _0x2b94a9['offset']===_0xcb50('0x1f')&&typeof _0x2b94a9['limit']==='undefined';var _0x36d2d1=_0x332465[_0xcb50('0x20')];var _0x4268d9=_0x49675a?0x0:_0x2b94a9[_0xcb50('0x21')];var _0x37cb27=_0x49675a?_0x332465[_0xcb50('0x20')]:_0x2b94a9[_0xcb50('0x21')]+_0x2b94a9['limit'];var _0x20c84f;if(_0x37cb27>=_0x36d2d1){_0x37cb27=_0x36d2d1;_0x20c84f=0xc8;}else{_0x20c84f=0xce;}_0x31269d[_0xcb50('0x1c')](_0x20c84f);return _0x31269d[_0xcb50('0x22')](_0xcb50('0x23'),_0x4268d9+'-'+_0x37cb27+'/'+_0x36d2d1)[_0xcb50('0x1e')](_0x332465);}return null;};}function patchUpdates(_0x2e885b){return function(_0x2d60b1){try{jsonpatch[_0xcb50('0x24')](_0x2d60b1,_0x2e885b,!![]);}catch(_0x3be5a9){return BPromise['reject'](_0x3be5a9);}return _0x2d60b1['save']();};}function saveUpdates(_0x38b8f2,_0x3daebd){return function(_0x419a63){if(_0x419a63){return _0x419a63['update'](_0x38b8f2)['then'](function(_0x22b989){return _0x22b989;});}return null;};}function removeEntity(_0x151405,_0x50196c){return function(_0x1837bf){if(_0x1837bf){return _0x1837bf[_0xcb50('0x25')]()[_0xcb50('0x26')](function(){_0x151405[_0xcb50('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a4602,_0x274854){return function(_0x94a3df){if(!_0x94a3df){_0x4a4602['sendStatus'](0x194);}return _0x94a3df;};}function handleError(_0x46f6f5,_0x59a979){_0x59a979=_0x59a979||0x1f4;return function(_0x5a4297){logger['error'](_0x5a4297[_0xcb50('0x27')]);if(_0x5a4297[_0xcb50('0x28')]){delete _0x5a4297[_0xcb50('0x28')];}_0x46f6f5['status'](_0x59a979)[_0xcb50('0x29')](_0x5a4297);};}function getInteractionUsers(_0x5f1fc8,_0x123d7e){return new BPromise(function(_0xcd9bde,_0x254bb7){try{if(_0x123d7e[_0x5f1fc8['id']]){_0x5f1fc8[_0xcb50('0x2a')]=_[_0xcb50('0x2b')](_0x123d7e[_0x5f1fc8['id']],function(_0x5b62df){return{'id':_0x5b62df['id'],'fullname':_0x5b62df['fullname']};});}}catch(_0x554ea4){_0x254bb7(_0x554ea4);}_0xcd9bde(_0x5f1fc8);});}function getInteractionTags(_0x59fba1,_0x571e43){return new BPromise(function(_0x3c398d,_0x527a70){try{if(_0x59fba1[_0xcb50('0x2c')]){_0x59fba1[_0xcb50('0x2d')]=[];_0x59fba1[_0xcb50('0x2c')]['split'](',')[_0xcb50('0x2e')](function(_0x1cf387){_0x59fba1['Tags'][_0xcb50('0x2f')](_0x571e43[_0x1cf387]);});}delete _0x59fba1[_0xcb50('0x2c')];}catch(_0x443afb){_0x527a70(_0x443afb);}_0x3c398d(_0x59fba1);});}function updateSmsInteraction(_0x58705d,_0x23fde1,_0x137fbd){return new BPromise(function(_0x4acd00,_0x223537){return getInteractionUsers(_0x58705d,_0x137fbd)[_0xcb50('0x26')](function(_0xca1d44){return getInteractionTags(_0xca1d44,_0x23fde1);})['then'](function(_0x5e963e){_0x4acd00(_0x5e963e);})[_0xcb50('0x30')](function(_0x59b0f7){_0x223537(_0x59b0f7);});});}exports[_0xcb50('0x31')]=function(_0x6baf76,_0xbe7bf9){var _0xfdff22={},_0x26ce68={},_0x56032d={'count':0x0,'rows':[]};var _0x2f917d=_[_0xcb50('0x2b')](db['SmsInteraction'][_0xcb50('0x32')],function(_0x5dfd7c){return{'name':_0x5dfd7c[_0xcb50('0x33')],'type':_0x5dfd7c[_0xcb50('0x34')][_0xcb50('0x35')]};});_0x26ce68[_0xcb50('0x36')]=_[_0xcb50('0x2b')](_0x2f917d,_0xcb50('0x28'));_0x26ce68[_0xcb50('0x37')]=_['keys'](_0x6baf76[_0xcb50('0x37')]);_0x26ce68[_0xcb50('0x38')]=_[_0xcb50('0x39')](_0x26ce68[_0xcb50('0x36')],_0x26ce68[_0xcb50('0x37')]);_0xfdff22[_0xcb50('0x3a')]=_[_0xcb50('0x39')](_0x26ce68['model'],qs[_0xcb50('0x3b')](_0x6baf76['query']['fields']));_0xfdff22['attributes']=_0xfdff22['attributes'][_0xcb50('0x3c')]?_0xfdff22['attributes']:_0x26ce68[_0xcb50('0x36')];if(!_0x6baf76[_0xcb50('0x37')][_0xcb50('0x3d')](_0xcb50('0x3e'))){_0xfdff22['limit']=qs[_0xcb50('0x3f')](_0x6baf76['query'][_0xcb50('0x3f')]);_0xfdff22[_0xcb50('0x21')]=qs['offset'](_0x6baf76[_0xcb50('0x37')]['offset']);}_0xfdff22[_0xcb50('0x40')]=qs[_0xcb50('0x41')](_0x6baf76['query'][_0xcb50('0x41')]);_0xfdff22[_0xcb50('0x42')]=qs[_0xcb50('0x38')](_[_0xcb50('0x43')](_0x6baf76[_0xcb50('0x37')],_0x26ce68[_0xcb50('0x38')]),_0x2f917d);var _0x390154=[];var _0x5afa73=squel[_0xcb50('0x44')]()[_0xcb50('0x45')]('id')[_0xcb50('0x45')](_0xcb50('0x28'))['field'](_0xcb50('0x46'))['from'](_0xcb50('0x47'));var _0x3422e5=squel[_0xcb50('0x44')]()[_0xcb50('0x45')](_0xcb50('0x48'))[_0xcb50('0x45')]('u.fullname')['field']('ui.SmsInteractionId')['from'](_0xcb50('0x49'),'ui')[_0xcb50('0x4a')]('users','u',_0xcb50('0x4b'));var _0x1abd27=squel[_0xcb50('0x44')]()[_0xcb50('0x4c')](_0xcb50('0x4d'),'i')[_0xcb50('0x4a')](_0xcb50('0x4e'),'c',_0xcb50('0x4f'))['left_join'](_0xcb50('0x50'),'o',_0xcb50('0x51'))['left_join'](_0xcb50('0x52'),'a',_0xcb50('0x53'))['left_join'](_0xcb50('0x54'),'me',_0xcb50('0x55'))[_0xcb50('0x4a')](_0xcb50('0x56'),'it',_0xcb50('0x57'))[_0xcb50('0x4a')](_0xcb50('0x47'),'t',_0xcb50('0x58'));var _0x397dac=squel[_0xcb50('0x59')]();var _0x381b1e=[];var _0x2b0547=squel[_0xcb50('0x59')]();var _0x130204;if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x5a')]){_0x130204=as['parseSearch'](_0x6baf76[_0xcb50('0x37')][_0xcb50('0x5a')]);var _0x4ac408=_0x130204[_0xcb50('0x5b')];for(var _0x5edf70=0x0;_0x5edf70<_0x130204[_0xcb50('0x5c')][_0xcb50('0x3c')];_0x5edf70++){var _0x32bfef=_0x130204['conditions'][_0x5edf70];var _0x911fb2='i';var _0x31d4e4=_[_0xcb50('0x5d')](_0x2f917d,[_0xcb50('0x28'),_0x32bfef[_0xcb50('0x45')]]);if(!_0x31d4e4){switch(_0x32bfef[_0xcb50('0x45')]){case _0xcb50('0x5e'):if(_0x32bfef['value']==0x1){_0x1abd27[_0xcb50('0x5f')]('`'+_0x32bfef[_0xcb50('0x45')]+_0xcb50('0x60'));}else{_0x1abd27[_0xcb50('0x5f')]('`'+_0x32bfef[_0xcb50('0x45')]+_0xcb50('0x61'));}break;case _0xcb50('0x62'):if(_0x32bfef[_0xcb50('0x63')]===_0xcb50('0x64')){if(_0x32bfef[_0xcb50('0x65')][_0xcb50('0x66')]('\x20')[_0xcb50('0x3c')]>0x1){_0x397dac[_0x4ac408](_0xcb50('0x67'),qs[_0xcb50('0x68')](_0x32bfef[_0xcb50('0x65')]),null);}else{var _0xa84f43='%'+_0x32bfef['value']+'%';_0x397dac[_0x4ac408](_0xcb50('0x69'),_0xa84f43,_0xa84f43,_0xa84f43);}}else{_0x31d4e4=_[_0xcb50('0x5d')](_0x2f917d,[_0xcb50('0x28'),_0xcb50('0x6a')]);_0x32bfef['field']=_0xcb50('0x6a');_0x2c3b13=as[_0xcb50('0x6b')](_0x911fb2,_0x31d4e4[_0xcb50('0x34')],_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13['text'],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x6c')],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x1d')]);}break;case _0xcb50('0x6d'):var _0x57a216=_0x32bfef[_0xcb50('0x65')][_0xcb50('0x66')](',')[_0xcb50('0x2b')](function(_0x3f6b74){return Number(_0x3f6b74);});_0x57a216[_0xcb50('0x2e')](function(_0x46ed3d){_0x2b0547['or'](_0xcb50('0x6e'),'%,'+_0x46ed3d+',%');});_0x381b1e=_[_0xcb50('0x6f')](_0x381b1e,_0x57a216);break;case'User':if(_0x32bfef[_0xcb50('0x63')]===_0xcb50('0x64')){_0x397dac[_0x4ac408](_0xcb50('0x70'),'%'+_0x32bfef[_0xcb50('0x65')]+'%',null);}else{_0x31d4e4=_[_0xcb50('0x5d')](_0x2f917d,['name','UserId']);_0x32bfef[_0xcb50('0x45')]=_0xcb50('0x71');_0x2c3b13=as[_0xcb50('0x6b')](_0x911fb2,_0x31d4e4[_0xcb50('0x34')],_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13[_0xcb50('0x72')],_0x2c3b13['value'][_0xcb50('0x6c')],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x1d')]);}break;case'body':_0x2c3b13=as[_0xcb50('0x6b')]('me',null,_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13['text'],_0x2c3b13[_0xcb50('0x65')]['start'],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x1d')]);break;}}else{var _0x2c3b13=as[_0xcb50('0x6b')](_0x911fb2,_0x31d4e4[_0xcb50('0x34')],_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13[_0xcb50('0x72')],_0x2c3b13['value'][_0xcb50('0x6c')],_0x2c3b13['value'][_0xcb50('0x1d')]);}}}else{var _0x265557=_(_0x6baf76['query'])['keys']()['map'](function(_0x5238d5){return _[_0xcb50('0x73')](_0x2f917d,['name',_0x5238d5])?_0x5238d5:undefined;})[_0xcb50('0x74')]()[_0xcb50('0x65')]();if(!_['isEmpty'](_0x265557)){_0x265557[_0xcb50('0x2e')](function(_0x59a416){if(_0x59a416===_0xcb50('0x75')){_0x1abd27[_0xcb50('0x42')]('i.SmsAccountId\x20IN\x20?',[][_0xcb50('0x76')](_0x6baf76[_0xcb50('0x37')][_0x59a416]));}else if(_0x59a416===_0xcb50('0x77')){var _0x5c7f76=JSON[_0xcb50('0x78')](_0x6baf76['query'][_0x59a416])[_0xcb50('0x79')];var _0x242f93=JSON[_0xcb50('0x78')](_0x6baf76[_0xcb50('0x37')][_0x59a416])[_0xcb50('0x7a')];_0x1abd27[_0xcb50('0x42')](_0xcb50('0x7b'),_0x5c7f76,_0x242f93);}else{if(_0x6baf76[_0xcb50('0x37')][_0x59a416]===_0xcb50('0x7c')){_0x1abd27[_0xcb50('0x42')]('i.'+_0x59a416+_0xcb50('0x7d'));}else{_0x1abd27['where']('i.'+_0x59a416+'\x20=\x20?',_0x6baf76[_0xcb50('0x37')][_0x59a416]);}}});}if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x7e')]){if(_0x6baf76[_0xcb50('0x37')]['read']==0x1){_0x1abd27[_0xcb50('0x5f')](_0xcb50('0x7f'));}else{_0x1abd27[_0xcb50('0x5f')](_0xcb50('0x80'));}}if(_0x6baf76['query'][_0xcb50('0x81')]){_0x381b1e=_[_0xcb50('0x82')](_0x6baf76[_0xcb50('0x37')][_0xcb50('0x81')])?_0x6baf76[_0xcb50('0x37')][_0xcb50('0x81')]:new Array(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x81')]);_0x381b1e[_0xcb50('0x2e')](function(_0x14c367){_0x2b0547['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x14c367+',%');});}if(_0x6baf76[_0xcb50('0x37')]['filter']){var _0x55be91=_0x6baf76['query']['filter'][_0xcb50('0x83')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xcb50('0x84')](_0x55be91)){_0x397dac['or'](_0xcb50('0x85'),_0x55be91+'%')['or']('i.phone\x20LIKE\x20?',_0x55be91+'%');}else{_0x397dac['or'](_0xcb50('0x86'),qs['getFullTextValue'](_0x55be91))['or'](_0xcb50('0x87'),_0x55be91+'%');}}}_0x1abd27['where'](_0x397dac);_0x1abd27[_0xcb50('0x88')]('i.id');var _0x1a8217={'type':db['Sequelize'][_0xcb50('0x89')][_0xcb50('0x8a')],'raw':!![]};var _0x68830c=_0x1abd27[_0xcb50('0x8b')]();_0x68830c[_0xcb50('0x45')](_0xcb50('0x8c'));_0x68830c[_0xcb50('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xcb50('0x5e'));if(_0xfdff22[_0xcb50('0x40')]){_0xfdff22[_0xcb50('0x40')][_0xcb50('0x2e')](function(_0x5cd7f6){var _0x11d876=_0x5cd7f6[0x0]===_0xcb50('0x8d')?_0x5cd7f6[0x0]:'i.'+_0x5cd7f6[0x0];_0x1abd27['order'](_0x11d876,_0x5cd7f6[0x1]===_0xcb50('0x8e')?![]:!![]);});}if(!_[_0xcb50('0x8f')](_0x381b1e)){_0x1abd27['having'](_0x2b0547);_0x68830c[_0xcb50('0x42')](_0xcb50('0x90'),_0x381b1e);}BPromise[_0xcb50('0x91')]()[_0xcb50('0x26')](function(){if(!_0x130204){if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x75')])return;_0x68830c[_0xcb50('0x42')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x1abd27[_0xcb50('0x42')](_0xcb50('0x92'));return;}if(_0x6baf76[_0xcb50('0x93')][_0xcb50('0x94')]!=='agent')return;return _0x6baf76[_0xcb50('0x93')][_0xcb50('0x95')]({'attributes':['id'],'raw':!![]})[_0xcb50('0x26')](function(_0x39b26b){if(_[_0xcb50('0x8f')](_0x39b26b)){_0x68830c[_0xcb50('0x42')](_0xcb50('0x96'));_0x1abd27['where'](_0xcb50('0x96'));}else{_0x68830c[_0xcb50('0x42')](_0xcb50('0x97'),_[_0xcb50('0x2b')](_0x39b26b,'id'));_0x1abd27['where']('i.SmsAccountId\x20IN\x20?',_[_0xcb50('0x2b')](_0x39b26b,'id'));}});})[_0xcb50('0x26')](function(){if(_0x6baf76['user'][_0xcb50('0x94')]===_0xcb50('0x98')&&!_0x130204&&!_0x6baf76['query'][_0xcb50('0x75')])return[];return db['sequelize'][_0xcb50('0x37')](_0x68830c['toString'](),_0x1a8217);})[_0xcb50('0x26')](function(_0xbbecaf){_0x56032d[_0xcb50('0x20')]=_0xbbecaf[_0xcb50('0x3c')];if(_0x56032d[_0xcb50('0x20')]===0x0)return[];return db[_0xcb50('0x99')]['query'](_0x5afa73[_0xcb50('0x9a')](),_0x1a8217)[_0xcb50('0x26')](function(_0x12309a){_0x390154=_[_0xcb50('0x9b')](_0x12309a,'id');_0x1a8217=_[_0xcb50('0x9c')](_0x1a8217,{'model':db[_0xcb50('0x9d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x3b')]){_0xfdff22[_0xcb50('0x3a')]['forEach'](function(_0x45f334){_0x1abd27[_0xcb50('0x45')]('i.'+_0x45f334);});}else{_0x1abd27[_0xcb50('0x45')](_0xcb50('0x9e'),_0xcb50('0x5e'));_0x1abd27[_0xcb50('0x45')]('a.key',_0xcb50('0x9f'));_0x1abd27[_0xcb50('0x45')]('a.mandatoryDisposition',_0xcb50('0xa0'));_0x1abd27['field'](_0xcb50('0xa1'),_0xcb50('0x8d'));_0x1abd27['field'](_0xcb50('0xa2'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xa3'),'Contact.firstName');_0x1abd27['field'](_0xcb50('0xa4'),_0xcb50('0xa5'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xa6'),_0xcb50('0xa7'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xa8'),_0xcb50('0xa9'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xaa'),_0xcb50('0xab'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xac'),_0xcb50('0xad'));_0x1abd27['field'](_0xcb50('0xae'),'Owner.fullname');_0x1abd27['field'](_0xcb50('0xaf'),_0xcb50('0xb0'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xb1'),_0xcb50('0x2c'));}if(_0xfdff22[_0xcb50('0x3f')])_0x1abd27[_0xcb50('0x3f')](_0xfdff22[_0xcb50('0x3f')]);if(_0xfdff22[_0xcb50('0x21')])_0x1abd27[_0xcb50('0x21')](_0xfdff22['offset']);return db[_0xcb50('0x99')][_0xcb50('0x37')](_0x1abd27[_0xcb50('0x9a')](),_0x1a8217);})[_0xcb50('0x26')](function(_0x56a7ea){if(_0x56a7ea[_0xcb50('0x3c')]>0x0)_0x3422e5[_0xcb50('0x42')]('ui.SmsInteractionId\x20IN\x20?',_[_0xcb50('0x2b')](_0x56a7ea,'id'));return db[_0xcb50('0x99')]['query'](_0x3422e5['toString'](),_0x1a8217)[_0xcb50('0x26')](function(_0x2a6ccd){var _0x3d238c=_[_0xcb50('0xb2')](_0x2a6ccd,_0xcb50('0xb3'));var _0x15c2e2=[];_0x56a7ea[_0xcb50('0x2e')](function(_0x53ade6){_0x15c2e2[_0xcb50('0x2f')](updateSmsInteraction(_0x53ade6,_0x390154,_0x3d238c));});return BPromise[_0xcb50('0xb4')](_0x15c2e2);});});})['then'](function(_0x30d48a){_0x56032d[_0xcb50('0xb5')]=_0x30d48a;return _0x56032d;})[_0xcb50('0x26')](respondWithFilteredResult(_0xbe7bf9,_0xfdff22))[_0xcb50('0x30')](handleError(_0xbe7bf9,null));};exports[_0xcb50('0xb6')]=function(_0x60169e,_0x5784f0){var _0x47f08e={'raw':![],'where':{'id':_0x60169e[_0xcb50('0xb7')]['id']}},_0x30b8f4={};_0x30b8f4['model']=_[_0xcb50('0xb8')](db[_0xcb50('0x9d')][_0xcb50('0x32')]);_0x30b8f4[_0xcb50('0x37')]=_[_0xcb50('0xb8')](_0x60169e['query']);_0x30b8f4[_0xcb50('0x38')]=_[_0xcb50('0x39')](_0x30b8f4[_0xcb50('0x36')],_0x30b8f4[_0xcb50('0x37')]);_0x47f08e['attributes']=_[_0xcb50('0x39')](_0x30b8f4[_0xcb50('0x36')],qs[_0xcb50('0x3b')](_0x60169e[_0xcb50('0x37')][_0xcb50('0x3b')]));_0x47f08e['attributes']=_0x47f08e[_0xcb50('0x3a')][_0xcb50('0x3c')]?_0x47f08e[_0xcb50('0x3a')]:_0x30b8f4[_0xcb50('0x36')];if(_0x60169e['query']['includeAll']){_0x47f08e['include']=[{'all':!![]}];}_0x47f08e=_[_0xcb50('0x9c')]({},_0x47f08e,_0x60169e[_0xcb50('0xb9')]);return db[_0xcb50('0x9d')][_0xcb50('0x5d')](_0x47f08e)[_0xcb50('0x26')](handleEntityNotFound(_0x5784f0,null))[_0xcb50('0x26')](respondWithResult(_0x5784f0,null))[_0xcb50('0x30')](handleError(_0x5784f0,null));};exports[_0xcb50('0xba')]=function(_0x137459,_0x373140){return db[_0xcb50('0x9d')]['create'](_0x137459['body'],{})['then'](respondWithResult(_0x373140,0xc9))[_0xcb50('0x30')](handleError(_0x373140,null));};exports[_0xcb50('0xbb')]=function(_0x56dd4c,_0x26f3dd){if(_0x56dd4c['body']['id']){delete _0x56dd4c[_0xcb50('0xbc')]['id'];}return db['SmsInteraction'][_0xcb50('0x5d')]({'where':{'id':_0x56dd4c['params']['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x26f3dd,null))[_0xcb50('0x26')](saveUpdates(_0x56dd4c['body'],null))[_0xcb50('0x26')](respondWithResult(_0x26f3dd,null))[_0xcb50('0x30')](handleError(_0x26f3dd,null));};exports['destroy']=function(_0x46a53d,_0x5583b7){return db[_0xcb50('0x9d')]['find']({'where':{'id':_0x46a53d[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x5583b7,null))[_0xcb50('0x26')](removeEntity(_0x5583b7,null))[_0xcb50('0x30')](handleError(_0x5583b7,null));};exports['describe']=function(_0x4c1f02,_0x402d8f){return db['SmsInteraction'][_0xcb50('0xbd')]()['then'](respondWithResult(_0x402d8f,null))[_0xcb50('0x30')](handleError(_0x402d8f,null));};exports[_0xcb50('0xbe')]=function(_0x4304b9,_0x402751,_0x550e01){return db['SmsMessage'][_0xcb50('0x5d')]({'where':{'id':_0x4304b9[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x402751,null))['then'](function(_0x40d605){if(_0x40d605){return _0x40d605[_0xcb50('0xbe')](_0x4304b9['body'][_0xcb50('0xbf')],_['omit'](_0x4304b9[_0xcb50('0xbc')],[_0xcb50('0xbf'),'id'])||{});}})[_0xcb50('0x26')](respondWithResult(_0x402751,null))[_0xcb50('0x30')](handleError(_0x402751,null));};exports[_0xcb50('0xc0')]=function(_0x2a4aa2,_0x592a69,_0x5044c1){var _0x4f2b3a={'raw':![],'where':{}};var _0x321585={};var _0xf7f6fe={'count':0x0,'rows':[]};return db[_0xcb50('0x9d')][_0xcb50('0xc1')]({'where':{'id':_0x2a4aa2[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x592a69,null))[_0xcb50('0x26')](function(_0x307462){if(_0x307462){_0x321585[_0xcb50('0x36')]=_['keys'](db[_0xcb50('0xc2')]['rawAttributes']);_0x321585[_0xcb50('0x37')]=_[_0xcb50('0xb8')](_0x2a4aa2[_0xcb50('0x37')]);_0x321585[_0xcb50('0x38')]=_[_0xcb50('0x39')](_0x321585['model'],_0x321585[_0xcb50('0x37')]);_0x4f2b3a[_0xcb50('0x3a')]=_['intersection'](_0x321585[_0xcb50('0x36')],qs['fields'](_0x2a4aa2['query'][_0xcb50('0x3b')]));_0x4f2b3a[_0xcb50('0x3a')]=_0x4f2b3a[_0xcb50('0x3a')][_0xcb50('0x3c')]?_0x4f2b3a[_0xcb50('0x3a')]:_0x321585[_0xcb50('0x36')];if(!_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0x3d')](_0xcb50('0x3e'))){_0x4f2b3a[_0xcb50('0x3f')]=qs[_0xcb50('0x3f')](_0x2a4aa2[_0xcb50('0x37')]['limit']);_0x4f2b3a['offset']=qs[_0xcb50('0x21')](_0x2a4aa2['query'][_0xcb50('0x21')]);}_0x4f2b3a['order']=qs['sort'](_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0x41')]);_0x4f2b3a[_0xcb50('0x42')]=qs[_0xcb50('0x38')](_[_0xcb50('0x43')](_0x2a4aa2['query'],_0x321585[_0xcb50('0x38')]));_0x4f2b3a['where']['SmsInteractionId']=_0x307462['id'];if(_0x2a4aa2['query']['filter']){_0x4f2b3a[_0xcb50('0x42')]=_[_0xcb50('0x9c')](_0x4f2b3a[_0xcb50('0x42')],{'$or':_[_0xcb50('0x2b')](_0x4f2b3a[_0xcb50('0x3a')],function(_0x12ece2){var _0x42290d={};_0x42290d[_0x12ece2]={'$like':'%'+_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0xc3')]+'%'};return _0x42290d;})});}if(_0x2a4aa2[_0xcb50('0x37')]['$gte']){var _0x12102e=_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0x79')][_0xcb50('0x66')](',');var _0x7dc955={};_0x7dc955[_0x12102e[0x0]]={'$gte':moment(_0x12102e[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4f2b3a[_0xcb50('0x42')]=_['merge'](_0x4f2b3a[_0xcb50('0x42')],_0x7dc955);}_0x4f2b3a=_[_0xcb50('0x9c')]({},_0x4f2b3a,_0x2a4aa2['options']);return db[_0xcb50('0xc2')][_0xcb50('0x20')]({'where':_0x4f2b3a[_0xcb50('0x42')]})[_0xcb50('0x26')](function(_0x3cd31d){_0xf7f6fe[_0xcb50('0x20')]=_0x3cd31d;if(_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0xc4')]){_0x4f2b3a[_0xcb50('0xc5')]=[{'all':!![]}];}return db[_0xcb50('0xc2')][_0xcb50('0xc6')](_0x4f2b3a);})[_0xcb50('0x26')](function(_0x3dcbe6){_0xf7f6fe[_0xcb50('0xb5')]=_0x3dcbe6;return _0xf7f6fe;});}})[_0xcb50('0x26')](respondWithFilteredResult(_0x592a69,_0x4f2b3a))[_0xcb50('0x30')](handleError(_0x592a69,null));};exports[_0xcb50('0xc7')]=function(_0x22c0a8,_0x382ec0,_0x22f9ba){return db[_0xcb50('0x9d')]['find']({'where':{'id':_0x22c0a8[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x382ec0,null))['then'](function(_0x52a00c){if(_0x52a00c){return _0x52a00c[_0xcb50('0xc8')](_0x22c0a8[_0xcb50('0xbc')][_0xcb50('0xbf')],_[_0xcb50('0xc9')](_0x22c0a8[_0xcb50('0xbc')],[_0xcb50('0xbf'),'id'])||{})[_0xcb50('0xca')](function(){return db[_0xcb50('0x6d')][_0xcb50('0xc6')]({'attributes':['id',_0xcb50('0x28'),_0xcb50('0x46')],'where':{'id':_0x22c0a8['body'][_0xcb50('0xbf')]}});})['then'](function(_0x22c837){socket[_0xcb50('0xcb')](_0xcb50('0xcc'),{'id':Number(_0x22c0a8[_0xcb50('0xb7')]['id']),'tags':_0x22c837||[]});return{'id':Number(_0x22c0a8[_0xcb50('0xb7')]['id']),'tags':_0x22c837||[]};});}})[_0xcb50('0x26')](respondWithResult(_0x382ec0,null))[_0xcb50('0x30')](handleError(_0x382ec0,null));};exports[_0xcb50('0xcd')]=function(_0x45cddd,_0x286d57,_0x251fe4){return db[_0xcb50('0x9d')][_0xcb50('0x5d')]({'where':{'id':_0x45cddd[_0xcb50('0xb7')]['id']}})['then'](handleEntityNotFound(_0x286d57,null))['then'](function(_0x236b68){if(_0x236b68){return _0x236b68[_0xcb50('0xcd')](_0x45cddd[_0xcb50('0x37')][_0xcb50('0xbf')]);}})[_0xcb50('0x26')](respondWithStatusCode(_0x286d57,null))['catch'](handleError(_0x286d57,null));};exports[_0xcb50('0xce')]=function(_0xa2d609,_0x497cd1){var _0x141f97=moment()[_0xcb50('0xcf')]()[_0xcb50('0x9a')]();var _0x2df4a0=path[_0xcb50('0xd0')](config[_0xcb50('0xd1')],'server',_0xcb50('0xd2'),'tmp');var _0x45754a=path[_0xcb50('0xd0')](config[_0xcb50('0xd1')],_0xcb50('0xd3'),'files',_0xcb50('0xd4'));var _0x1c08ad=path[_0xcb50('0xd0')](_0x2df4a0,_0x141f97);var _0x5bfc2f=util['format'](_0xcb50('0xd5'),_0xa2d609['params']['id'],_0x141f97);var _0x38bd25=path[_0xcb50('0xd0')](_0x2df4a0,_0x5bfc2f);var _0x2cafb3=[];_0x2cafb3[_0xcb50('0x2f')]({'model':db['User'],'as':_0xcb50('0xd6'),'attributes':['id',_0xcb50('0xd7')],'raw':!![]});_0x2cafb3['push']({'model':db[_0xcb50('0xd8')],'as':_0xcb50('0x62'),'attributes':['id','firstName',_0xcb50('0xd9')],'raw':!![]});var _0xd5249c=[{'model':db[_0xcb50('0xc2')],'as':'Messages','attributes':['id','body',_0xcb50('0x77'),'direction',_0xcb50('0xda'),_0xcb50('0x7e')],'include':_0x2cafb3}];_0xd5249c[_0xcb50('0x2f')]({'model':db['SmsAccount'],'as':_0xcb50('0xdb'),'attributes':['id',_0xcb50('0x28')]});_0xd5249c['push']({'model':db[_0xcb50('0xd6')],'as':'Owner','attributes':['id','fullname']});return db[_0xcb50('0x9d')][_0xcb50('0x5d')]({'where':{'id':_0xa2d609[_0xcb50('0xb7')]['id']},'include':_0xd5249c})[_0xcb50('0x26')](handleEntityNotFound(_0x497cd1,null))[_0xcb50('0x26')](function(_0x37589f){if(_0x37589f){var _0x207895=_0x37589f[_0xcb50('0xdc')]({'plain':!![]});fs[_0xcb50('0xdd')](_0x1c08ad);var _0x3c5231={'channel':_0xcb50('0xde'),'account':_0x207895[_0xcb50('0xdb')]['name'],'agent':_0x207895[_0xcb50('0xdf')]?_0x207895[_0xcb50('0xdf')][_0xcb50('0xd7')]:_0xcb50('0xe0'),'createdAt':moment(_0x207895[_0xcb50('0x77')])['format'](_0xcb50('0xe1'))[_0xcb50('0x9a')](),'closedAt':_0x207895['closed']?moment(_0x207895[_0xcb50('0xe2')])['format'](_0xcb50('0xe1'))[_0xcb50('0x9a')]():'','disposition':_0x207895[_0xcb50('0xe3')],'messages':_(_0x207895['Messages'])[_0xcb50('0xc3')]({'secret':![]})[_0xcb50('0x2b')](function(_0x5a0b76){return{'date':moment(_0x5a0b76['createdAt'])['format'](_0xcb50('0xe1'))[_0xcb50('0x9a')](),'sender':_0x5a0b76['direction']===_0xcb50('0xe4')?_0x5a0b76[_0xcb50('0xd6')]?_0x5a0b76[_0xcb50('0xd6')][_0xcb50('0xd7')]:_0xcb50('0xe5'):_0x5a0b76['Contact'][_0xcb50('0xe6')]+(_0x5a0b76[_0xcb50('0x62')][_0xcb50('0xd9')]?'\x20'+_0x5a0b76[_0xcb50('0x62')]['lastName']:''),'body':_0x5a0b76[_0xcb50('0xbc')],'direction':_0x5a0b76[_0xcb50('0xe7')]==='out'?'A':'C','secret':_0x5a0b76[_0xcb50('0xda')],'read':_0x5a0b76['read']};})[_0xcb50('0x65')]()};return ejs[_0xcb50('0xe8')](path['join'](config[_0xcb50('0xd1')],_0xcb50('0xd3'),_0xcb50('0xe9'),_0xcb50('0xea')),{'interaction':_0x3c5231})['then'](function(_0x5ae329){var _0x5b9b58=path['join'](_0x1c08ad,_0xcb50('0xeb')+_0x207895['id']+'-'+_0x141f97+_0xcb50('0xec'));var _0x10acc9={'path':_0x5b9b58,'channel':_0xcb50('0xde'),'interactionId':_0x207895['id']};return pdf[_0xcb50('0xed')](_0x5ae329,_0x10acc9);})[_0xcb50('0x26')](function(){return new BPromise(function(_0x445195,_0x25abf7){zipdir(_0x1c08ad,{'saveTo':_0x38bd25},function(_0x5b5bca,_0x226651){if(_0x5b5bca)return _0x25abf7(_0x5b5bca);return _0x445195(_0x226651);});})['then'](function(){return new BPromise(function(_0x44ac00,_0x180295){rimraf(_0x1c08ad,function(_0x5d1507){if(_0x5d1507)_0x180295(_0x5d1507);return _0x44ac00();});});})[_0xcb50('0x26')](function(){return _0x497cd1[_0xcb50('0xce')](_0x38bd25,_0x5bfc2f,function(_0x186e2c){if(_0x186e2c){console[_0xcb50('0xee')](_0xcb50('0xef'),_0x186e2c);}else{fs[_0xcb50('0xf0')](_0x38bd25);}});});});}else{return _0x497cd1[_0xcb50('0xf1')](0xc8);}})[_0xcb50('0x30')](handleError(_0x497cd1,null));};
\ No newline at end of file
+var _0xaf42=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','rows','show','params','includeAll','include','merge','options','create','destroy','describe','addMessage','getMessages','findOne','SmsInteractionId','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','SmsMessage','findAll','addTags','omit','ids','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','CmContact','firstName','createdAt','direction','secret','SmsAccount','Account','Owner','get','Sms','N.A.','closed','disposition','out','lastName','renderFile','views','downloadInteraction.ejs','createPdfFromHTML','log','err','unlinkSync','sendStatus','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','status','end','json','offset','undefined','limit','count','set','reject','save','then','stack','name','map','fullname','TagIds','split','forEach','Tags','push','catch','index','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','nolimit','order','sort','where','pick','field','from','tools_tags','select','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','some','isEmpty','parse','$lte','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','role','sequelize','toString','keyBy','SmsInteraction','fields','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','Contact.firstName','Contact.lastName','c.phone','Contact.mobile','c.fax','Contact.fax','Owner.fullname'];(function(_0x359fed,_0x516b15){var _0xadfbaf=function(_0x2147f2){while(--_0x2147f2){_0x359fed['push'](_0x359fed['shift']());}};_0xadfbaf(++_0x516b15);}(_0xaf42,0x11f));var _0x2af4=function(_0x1dafe7,_0x1735dd){_0x1dafe7=_0x1dafe7-0x0;var _0x1acec4=_0xaf42[_0x1dafe7];return _0x1acec4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2af4('0x0'));var zipdir=require(_0x2af4('0x1'));var jsonpatch=require(_0x2af4('0x2'));var rp=require(_0x2af4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2af4('0x4'));var util=require(_0x2af4('0x5'));var path=require(_0x2af4('0x6'));var sox=require(_0x2af4('0x7'));var csv=require(_0x2af4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2af4('0x9'));var _=require(_0x2af4('0xa'));var squel=require(_0x2af4('0xb'));var crypto=require(_0x2af4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2af4('0xd'));var toCsv=require(_0x2af4('0x8'));var querystring=require(_0x2af4('0xe'));var Papa=require('papaparse');var Redis=require(_0x2af4('0xf'));var authService=require(_0x2af4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2af4('0x11'));var pdf=require(_0x2af4('0x12'));var hardwareService=require(_0x2af4('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x2af4('0x14'));var config=require(_0x2af4('0x15'));var licenseUtil=require(_0x2af4('0x16'));var db=require('../../mysqldb')['db'];config[_0x2af4('0x17')]=_[_0x2af4('0x18')](config[_0x2af4('0x17')],{'host':_0x2af4('0x19'),'port':0x18eb});var socket=require(_0x2af4('0x1a'))(new Redis(config[_0x2af4('0x17')]));require(_0x2af4('0x1b'))[_0x2af4('0x1c')](socket);function respondWithStatusCode(_0x1cd6af,_0x527bbd){_0x527bbd=_0x527bbd||0xcc;return function(_0x3a7ca3){if(_0x3a7ca3){return _0x1cd6af['sendStatus'](_0x527bbd);}return _0x1cd6af[_0x2af4('0x1d')](_0x527bbd)[_0x2af4('0x1e')]();};}function respondWithResult(_0x2e61b8,_0x3766be){_0x3766be=_0x3766be||0xc8;return function(_0x37384b){if(_0x37384b){return _0x2e61b8[_0x2af4('0x1d')](_0x3766be)[_0x2af4('0x1f')](_0x37384b);}};}function respondWithFilteredResult(_0x45cde3,_0x1e1520){return function(_0x455870){if(_0x455870){var _0x4e9958=typeof _0x1e1520[_0x2af4('0x20')]===_0x2af4('0x21')&&typeof _0x1e1520[_0x2af4('0x22')]===_0x2af4('0x21');var _0x3bc3e4=_0x455870[_0x2af4('0x23')];var _0x2cfc4d=_0x4e9958?0x0:_0x1e1520[_0x2af4('0x20')];var _0x363314=_0x4e9958?_0x455870[_0x2af4('0x23')]:_0x1e1520['offset']+_0x1e1520['limit'];var _0x266fd4;if(_0x363314>=_0x3bc3e4){_0x363314=_0x3bc3e4;_0x266fd4=0xc8;}else{_0x266fd4=0xce;}_0x45cde3[_0x2af4('0x1d')](_0x266fd4);return _0x45cde3[_0x2af4('0x24')]('Content-Range',_0x2cfc4d+'-'+_0x363314+'/'+_0x3bc3e4)[_0x2af4('0x1f')](_0x455870);}return null;};}function patchUpdates(_0x1b653e){return function(_0x4396f9){try{jsonpatch['apply'](_0x4396f9,_0x1b653e,!![]);}catch(_0x40ba83){return BPromise[_0x2af4('0x25')](_0x40ba83);}return _0x4396f9[_0x2af4('0x26')]();};}function saveUpdates(_0x9caf16,_0x33a903){return function(_0x24764e){if(_0x24764e){return _0x24764e['update'](_0x9caf16)[_0x2af4('0x27')](function(_0xcb360c){return _0xcb360c;});}return null;};}function removeEntity(_0xf8755b,_0x55923b){return function(_0x14a01f){if(_0x14a01f){return _0x14a01f['destroy']()[_0x2af4('0x27')](function(){_0xf8755b[_0x2af4('0x1d')](0xcc)[_0x2af4('0x1e')]();});}};}function handleEntityNotFound(_0x252020,_0x275b66){return function(_0x109510){if(!_0x109510){_0x252020['sendStatus'](0x194);}return _0x109510;};}function handleError(_0x3ac458,_0x3e7390){_0x3e7390=_0x3e7390||0x1f4;return function(_0x5bb966){logger['error'](_0x5bb966[_0x2af4('0x28')]);if(_0x5bb966[_0x2af4('0x29')]){delete _0x5bb966[_0x2af4('0x29')];}_0x3ac458[_0x2af4('0x1d')](_0x3e7390)['send'](_0x5bb966);};}function getInteractionUsers(_0x484926,_0x28e20e){return new BPromise(function(_0x3b5b21,_0x38f691){try{if(_0x28e20e[_0x484926['id']]){_0x484926['Users']=_[_0x2af4('0x2a')](_0x28e20e[_0x484926['id']],function(_0x52c4af){return{'id':_0x52c4af['id'],'fullname':_0x52c4af[_0x2af4('0x2b')]};});}}catch(_0x306f1c){_0x38f691(_0x306f1c);}_0x3b5b21(_0x484926);});}function getInteractionTags(_0x2e08e4,_0x389aa9){return new BPromise(function(_0x38f123,_0x18befe){try{if(_0x2e08e4[_0x2af4('0x2c')]){_0x2e08e4['Tags']=[];_0x2e08e4[_0x2af4('0x2c')][_0x2af4('0x2d')](',')[_0x2af4('0x2e')](function(_0x36e2bf){_0x2e08e4[_0x2af4('0x2f')][_0x2af4('0x30')](_0x389aa9[_0x36e2bf]);});}delete _0x2e08e4[_0x2af4('0x2c')];}catch(_0x43751e){_0x18befe(_0x43751e);}_0x38f123(_0x2e08e4);});}function updateSmsInteraction(_0x1d897c,_0x3f4ae9,_0x3868e5){return new BPromise(function(_0x53eee9,_0x4642c6){return getInteractionUsers(_0x1d897c,_0x3868e5)['then'](function(_0x57e753){return getInteractionTags(_0x57e753,_0x3f4ae9);})['then'](function(_0x262ed8){_0x53eee9(_0x262ed8);})[_0x2af4('0x31')](function(_0x32003b){_0x4642c6(_0x32003b);});});}exports[_0x2af4('0x32')]=function(_0x123324,_0x4b3654){var _0x2551a8={},_0x521515={},_0x477f77={'count':0x0,'rows':[]};var _0x52c53b=_[_0x2af4('0x2a')](db['SmsInteraction'][_0x2af4('0x33')],function(_0x2ff677){return{'name':_0x2ff677[_0x2af4('0x34')],'type':_0x2ff677[_0x2af4('0x35')][_0x2af4('0x36')]};});_0x521515[_0x2af4('0x37')]=_[_0x2af4('0x2a')](_0x52c53b,'name');_0x521515['query']=_[_0x2af4('0x38')](_0x123324['query']);_0x521515[_0x2af4('0x39')]=_[_0x2af4('0x3a')](_0x521515['model'],_0x521515[_0x2af4('0x3b')]);_0x2551a8[_0x2af4('0x3c')]=_['intersection'](_0x521515[_0x2af4('0x37')],qs['fields'](_0x123324['query']['fields']));_0x2551a8[_0x2af4('0x3c')]=_0x2551a8[_0x2af4('0x3c')]['length']?_0x2551a8[_0x2af4('0x3c')]:_0x521515['model'];if(!_0x123324['query']['hasOwnProperty'](_0x2af4('0x3d'))){_0x2551a8[_0x2af4('0x22')]=qs[_0x2af4('0x22')](_0x123324[_0x2af4('0x3b')][_0x2af4('0x22')]);_0x2551a8[_0x2af4('0x20')]=qs[_0x2af4('0x20')](_0x123324['query'][_0x2af4('0x20')]);}_0x2551a8[_0x2af4('0x3e')]=qs['sort'](_0x123324[_0x2af4('0x3b')][_0x2af4('0x3f')]);_0x2551a8[_0x2af4('0x40')]=qs['filters'](_[_0x2af4('0x41')](_0x123324[_0x2af4('0x3b')],_0x521515['filters']),_0x52c53b);var _0x57e717=[];var _0x1931cd=squel['select']()['field']('id')['field'](_0x2af4('0x29'))[_0x2af4('0x42')]('color')[_0x2af4('0x43')](_0x2af4('0x44'));var _0x13d7df=squel[_0x2af4('0x45')]()[_0x2af4('0x42')](_0x2af4('0x46'))[_0x2af4('0x42')](_0x2af4('0x47'))['field'](_0x2af4('0x48'))[_0x2af4('0x43')](_0x2af4('0x49'),'ui')[_0x2af4('0x4a')](_0x2af4('0x4b'),'u','u.id\x20=\x20ui.UserId');var _0x598e93=squel[_0x2af4('0x45')]()[_0x2af4('0x43')]('sms_interactions','i')[_0x2af4('0x4a')]('cm_contacts','c',_0x2af4('0x4c'))['left_join'](_0x2af4('0x4b'),'o',_0x2af4('0x4d'))['left_join']('sms_accounts','a',_0x2af4('0x4e'))[_0x2af4('0x4a')](_0x2af4('0x4f'),'me',_0x2af4('0x50'))[_0x2af4('0x4a')](_0x2af4('0x51'),'it','it.SmsInteractionId\x20=\x20i.id')[_0x2af4('0x4a')](_0x2af4('0x44'),'t',_0x2af4('0x52'));var _0x223989=squel[_0x2af4('0x53')]();var _0x4ca64d=[];var _0x140f04=squel['expr']();var _0xdca33;if(_0x123324[_0x2af4('0x3b')][_0x2af4('0x54')]){_0xdca33=as[_0x2af4('0x55')](_0x123324[_0x2af4('0x3b')]['search']);var _0x139113=_0xdca33[_0x2af4('0x56')];for(var _0xdddf13=0x0;_0xdddf13<_0xdca33[_0x2af4('0x57')][_0x2af4('0x58')];_0xdddf13++){var _0x5732ec=_0xdca33[_0x2af4('0x57')][_0xdddf13];var _0x12dc0c='i';var _0x3ca31d=_[_0x2af4('0x59')](_0x52c53b,[_0x2af4('0x29'),_0x5732ec[_0x2af4('0x42')]]);if(!_0x3ca31d){switch(_0x5732ec['field']){case _0x2af4('0x5a'):if(_0x5732ec[_0x2af4('0x5b')]==0x1){_0x598e93[_0x2af4('0x5c')]('`'+_0x5732ec[_0x2af4('0x42')]+_0x2af4('0x5d'));}else{_0x598e93['having']('`'+_0x5732ec[_0x2af4('0x42')]+_0x2af4('0x5e'));}break;case _0x2af4('0x5f'):if(_0x5732ec[_0x2af4('0x60')]===_0x2af4('0x61')){if(_0x5732ec[_0x2af4('0x5b')][_0x2af4('0x2d')]('\x20')['length']>0x1){_0x223989[_0x139113](_0x2af4('0x62'),qs[_0x2af4('0x63')](_0x5732ec[_0x2af4('0x5b')]),null);}else{var _0x31d77d='%'+_0x5732ec['value']+'%';_0x223989[_0x139113](_0x2af4('0x64'),_0x31d77d,_0x31d77d,_0x31d77d);}}else{_0x3ca31d=_[_0x2af4('0x59')](_0x52c53b,[_0x2af4('0x29'),_0x2af4('0x65')]);_0x5732ec[_0x2af4('0x42')]=_0x2af4('0x65');_0x4ba81d=as['buildExpression'](_0x12dc0c,_0x3ca31d[_0x2af4('0x35')],_0x5732ec);_0x223989[_0x139113](_0x4ba81d[_0x2af4('0x66')],_0x4ba81d[_0x2af4('0x5b')][_0x2af4('0x67')],_0x4ba81d['value'][_0x2af4('0x1e')]);}break;case _0x2af4('0x68'):var _0x2443d0=_0x5732ec[_0x2af4('0x5b')][_0x2af4('0x2d')](',')[_0x2af4('0x2a')](function(_0x34b407){return Number(_0x34b407);});_0x2443d0[_0x2af4('0x2e')](function(_0x3c8941){_0x140f04['or'](_0x2af4('0x69'),'%,'+_0x3c8941+',%');});_0x4ca64d=_[_0x2af4('0x6a')](_0x4ca64d,_0x2443d0);break;case _0x2af4('0x6b'):if(_0x5732ec[_0x2af4('0x60')]==='$substring'){_0x223989[_0x139113](_0x2af4('0x6c'),'%'+_0x5732ec['value']+'%',null);}else{_0x3ca31d=_[_0x2af4('0x59')](_0x52c53b,[_0x2af4('0x29'),_0x2af4('0x6d')]);_0x5732ec[_0x2af4('0x42')]='UserId';_0x4ba81d=as[_0x2af4('0x6e')](_0x12dc0c,_0x3ca31d[_0x2af4('0x35')],_0x5732ec);_0x223989[_0x139113](_0x4ba81d[_0x2af4('0x66')],_0x4ba81d[_0x2af4('0x5b')][_0x2af4('0x67')],_0x4ba81d[_0x2af4('0x5b')][_0x2af4('0x1e')]);}break;case _0x2af4('0x6f'):_0x4ba81d=as[_0x2af4('0x6e')]('me',null,_0x5732ec);_0x223989[_0x139113](_0x4ba81d['text'],_0x4ba81d['value'][_0x2af4('0x67')],_0x4ba81d[_0x2af4('0x5b')][_0x2af4('0x1e')]);break;}}else{var _0x4ba81d=as[_0x2af4('0x6e')](_0x12dc0c,_0x3ca31d[_0x2af4('0x35')],_0x5732ec);_0x223989[_0x139113](_0x4ba81d[_0x2af4('0x66')],_0x4ba81d['value'][_0x2af4('0x67')],_0x4ba81d[_0x2af4('0x5b')][_0x2af4('0x1e')]);}}}else{var _0x5d701b=_(_0x123324[_0x2af4('0x3b')])[_0x2af4('0x38')]()[_0x2af4('0x2a')](function(_0x49eccd){return _[_0x2af4('0x70')](_0x52c53b,[_0x2af4('0x29'),_0x49eccd])?_0x49eccd:undefined;})['compact']()[_0x2af4('0x5b')]();if(!_[_0x2af4('0x71')](_0x5d701b)){_0x5d701b[_0x2af4('0x2e')](function(_0x383d19){if(_0x383d19==='SmsAccountId'){_0x598e93[_0x2af4('0x40')]('i.SmsAccountId\x20IN\x20?',[]['concat'](_0x123324['query'][_0x383d19]));}else if(_0x383d19==='createdAt'){var _0x31a68f=JSON[_0x2af4('0x72')](_0x123324[_0x2af4('0x3b')][_0x383d19])['$gte'];var _0x11f2c2=JSON[_0x2af4('0x72')](_0x123324[_0x2af4('0x3b')][_0x383d19])[_0x2af4('0x73')];_0x598e93[_0x2af4('0x40')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x31a68f,_0x11f2c2);}else{if(_0x123324['query'][_0x383d19]==='null'){_0x598e93[_0x2af4('0x40')]('i.'+_0x383d19+_0x2af4('0x74'));}else{_0x598e93['where']('i.'+_0x383d19+_0x2af4('0x75'),_0x123324['query'][_0x383d19]);}}});}if(_0x123324[_0x2af4('0x3b')][_0x2af4('0x76')]){if(_0x123324['query'][_0x2af4('0x76')]==0x1){_0x598e93['having']('`unreadMessages`\x20=\x200');}else{_0x598e93[_0x2af4('0x5c')](_0x2af4('0x77'));}}if(_0x123324[_0x2af4('0x3b')][_0x2af4('0x78')]){_0x4ca64d=_[_0x2af4('0x79')](_0x123324[_0x2af4('0x3b')][_0x2af4('0x78')])?_0x123324[_0x2af4('0x3b')]['tag']:new Array(_0x123324[_0x2af4('0x3b')][_0x2af4('0x78')]);_0x4ca64d[_0x2af4('0x2e')](function(_0x5f5d4a){_0x140f04['or'](_0x2af4('0x69'),'%,'+_0x5f5d4a+',%');});}if(_0x123324['query']['filter']){var _0x403754=_0x123324[_0x2af4('0x3b')]['filter'][_0x2af4('0x7a')]('\x5c','\x5c\x5c')[_0x2af4('0x7a')](/'/g,'\x27\x27');if(qs[_0x2af4('0x7b')](_0x403754)){_0x223989['or'](_0x2af4('0x7c'),_0x403754+'%')['or'](_0x2af4('0x7d'),_0x403754+'%');}else{_0x223989['or'](_0x2af4('0x7e'),qs[_0x2af4('0x63')](_0x403754))['or'](_0x2af4('0x7f'),_0x403754+'%');}}}_0x598e93[_0x2af4('0x40')](_0x223989);_0x598e93[_0x2af4('0x80')](_0x2af4('0x81'));var _0x3df957={'type':db['Sequelize']['QueryTypes'][_0x2af4('0x82')],'raw':!![]};var _0x2cfbf5=_0x598e93[_0x2af4('0x83')]();_0x2cfbf5[_0x2af4('0x42')](_0x2af4('0x81'));_0x2cfbf5['field'](_0x2af4('0x84'),_0x2af4('0x5a'));if(_0x2551a8[_0x2af4('0x3e')]){_0x2551a8[_0x2af4('0x3e')][_0x2af4('0x2e')](function(_0xc21ff8){var _0x236e2d=_0xc21ff8[0x0]==='contactName'?_0xc21ff8[0x0]:'i.'+_0xc21ff8[0x0];_0x598e93[_0x2af4('0x3e')](_0x236e2d,_0xc21ff8[0x1]===_0x2af4('0x85')?![]:!![]);});}if(!_[_0x2af4('0x71')](_0x4ca64d)){_0x598e93[_0x2af4('0x5c')](_0x140f04);_0x2cfbf5[_0x2af4('0x40')]('t.id\x20IN\x20?',_0x4ca64d);}BPromise['resolve']()[_0x2af4('0x27')](function(){if(!_0xdca33){if(_0x123324[_0x2af4('0x3b')][_0x2af4('0x86')])return;_0x2cfbf5[_0x2af4('0x40')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x598e93['where'](_0x2af4('0x87'));return;}if(_0x123324[_0x2af4('0x88')]['role']!==_0x2af4('0x89'))return;return _0x123324[_0x2af4('0x88')][_0x2af4('0x8a')]({'attributes':['id'],'raw':!![]})[_0x2af4('0x27')](function(_0x5b15e6){if(_[_0x2af4('0x71')](_0x5b15e6)){_0x2cfbf5['where'](_0x2af4('0x8b'));_0x598e93[_0x2af4('0x40')](_0x2af4('0x8b'));}else{_0x2cfbf5[_0x2af4('0x40')](_0x2af4('0x8c'),_[_0x2af4('0x2a')](_0x5b15e6,'id'));_0x598e93['where']('i.SmsAccountId\x20IN\x20?',_[_0x2af4('0x2a')](_0x5b15e6,'id'));}});})[_0x2af4('0x27')](function(){if(_0x123324[_0x2af4('0x88')][_0x2af4('0x8d')]===_0x2af4('0x89')&&!_0xdca33&&!_0x123324[_0x2af4('0x3b')][_0x2af4('0x86')])return[];return db[_0x2af4('0x8e')][_0x2af4('0x3b')](_0x2cfbf5[_0x2af4('0x8f')](),_0x3df957);})['then'](function(_0x3d4adb){_0x477f77[_0x2af4('0x23')]=_0x3d4adb[_0x2af4('0x58')];if(_0x477f77[_0x2af4('0x23')]===0x0)return[];return db['sequelize'][_0x2af4('0x3b')](_0x1931cd[_0x2af4('0x8f')](),_0x3df957)[_0x2af4('0x27')](function(_0x80288a){_0x57e717=_[_0x2af4('0x90')](_0x80288a,'id');_0x3df957=_['merge'](_0x3df957,{'model':db[_0x2af4('0x91')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x123324['query'][_0x2af4('0x92')]){_0x2551a8['attributes'][_0x2af4('0x2e')](function(_0x4c6747){_0x598e93[_0x2af4('0x42')]('i.'+_0x4c6747);});}else{_0x598e93[_0x2af4('0x42')](_0x2af4('0x84'),_0x2af4('0x5a'));_0x598e93[_0x2af4('0x42')](_0x2af4('0x93'),_0x2af4('0x94'));_0x598e93[_0x2af4('0x42')](_0x2af4('0x95'),'Account.mandatoryDisposition');_0x598e93[_0x2af4('0x42')](_0x2af4('0x96'),_0x2af4('0x97'));_0x598e93[_0x2af4('0x42')](_0x2af4('0x98'));_0x598e93[_0x2af4('0x42')](_0x2af4('0x99'),_0x2af4('0x9a'));_0x598e93['field']('c.lastName',_0x2af4('0x9b'));_0x598e93[_0x2af4('0x42')]('c.email','Contact.email');_0x598e93[_0x2af4('0x42')](_0x2af4('0x9c'),'Contact.phone');_0x598e93[_0x2af4('0x42')]('c.mobile',_0x2af4('0x9d'));_0x598e93['field'](_0x2af4('0x9e'),_0x2af4('0x9f'));_0x598e93['field']('o.fullname',_0x2af4('0xa0'));_0x598e93[_0x2af4('0x42')](_0x2af4('0xa1'),_0x2af4('0xa2'));_0x598e93[_0x2af4('0x42')](_0x2af4('0xa3'),'TagIds');}if(_0x2551a8[_0x2af4('0x22')])_0x598e93[_0x2af4('0x22')](_0x2551a8[_0x2af4('0x22')]);if(_0x2551a8[_0x2af4('0x20')])_0x598e93[_0x2af4('0x20')](_0x2551a8['offset']);return db[_0x2af4('0x8e')]['query'](_0x598e93[_0x2af4('0x8f')](),_0x3df957);})[_0x2af4('0x27')](function(_0x15cc6a){if(_0x15cc6a[_0x2af4('0x58')]>0x0)_0x13d7df['where']('ui.SmsInteractionId\x20IN\x20?',_[_0x2af4('0x2a')](_0x15cc6a,'id'));return db[_0x2af4('0x8e')][_0x2af4('0x3b')](_0x13d7df[_0x2af4('0x8f')](),_0x3df957)[_0x2af4('0x27')](function(_0x3b1cfb){var _0x5898df=_[_0x2af4('0xa4')](_0x3b1cfb,'SmsInteractionId');var _0x47b4bb=[];_0x15cc6a['forEach'](function(_0x4cb90f){_0x47b4bb['push'](updateSmsInteraction(_0x4cb90f,_0x57e717,_0x5898df));});return BPromise['all'](_0x47b4bb);});});})['then'](function(_0x484372){_0x477f77[_0x2af4('0xa5')]=_0x484372;return _0x477f77;})['then'](respondWithFilteredResult(_0x4b3654,_0x2551a8))[_0x2af4('0x31')](handleError(_0x4b3654,null));};exports[_0x2af4('0xa6')]=function(_0x30f914,_0x500ab7){var _0x32739e={'raw':![],'where':{'id':_0x30f914[_0x2af4('0xa7')]['id']}},_0x3befe1={};_0x3befe1[_0x2af4('0x37')]=_['keys'](db['SmsInteraction'][_0x2af4('0x33')]);_0x3befe1[_0x2af4('0x3b')]=_[_0x2af4('0x38')](_0x30f914['query']);_0x3befe1[_0x2af4('0x39')]=_['intersection'](_0x3befe1[_0x2af4('0x37')],_0x3befe1[_0x2af4('0x3b')]);_0x32739e[_0x2af4('0x3c')]=_[_0x2af4('0x3a')](_0x3befe1[_0x2af4('0x37')],qs[_0x2af4('0x92')](_0x30f914[_0x2af4('0x3b')][_0x2af4('0x92')]));_0x32739e[_0x2af4('0x3c')]=_0x32739e['attributes'][_0x2af4('0x58')]?_0x32739e['attributes']:_0x3befe1[_0x2af4('0x37')];if(_0x30f914['query'][_0x2af4('0xa8')]){_0x32739e[_0x2af4('0xa9')]=[{'all':!![]}];}_0x32739e=_[_0x2af4('0xaa')]({},_0x32739e,_0x30f914[_0x2af4('0xab')]);return db[_0x2af4('0x91')][_0x2af4('0x59')](_0x32739e)[_0x2af4('0x27')](handleEntityNotFound(_0x500ab7,null))[_0x2af4('0x27')](respondWithResult(_0x500ab7,null))[_0x2af4('0x31')](handleError(_0x500ab7,null));};exports[_0x2af4('0xac')]=function(_0x2c3cf2,_0x5bc745){return db[_0x2af4('0x91')]['create'](_0x2c3cf2[_0x2af4('0x6f')],{})[_0x2af4('0x27')](respondWithResult(_0x5bc745,0xc9))['catch'](handleError(_0x5bc745,null));};exports['update']=function(_0xe6c2d7,_0x198470){if(_0xe6c2d7[_0x2af4('0x6f')]['id']){delete _0xe6c2d7['body']['id'];}return db['SmsInteraction'][_0x2af4('0x59')]({'where':{'id':_0xe6c2d7[_0x2af4('0xa7')]['id']}})['then'](handleEntityNotFound(_0x198470,null))[_0x2af4('0x27')](saveUpdates(_0xe6c2d7[_0x2af4('0x6f')],null))[_0x2af4('0x27')](respondWithResult(_0x198470,null))[_0x2af4('0x31')](handleError(_0x198470,null));};exports[_0x2af4('0xad')]=function(_0x3d2363,_0x1d86d1){return db[_0x2af4('0x91')][_0x2af4('0x59')]({'where':{'id':_0x3d2363[_0x2af4('0xa7')]['id']}})[_0x2af4('0x27')](handleEntityNotFound(_0x1d86d1,null))['then'](removeEntity(_0x1d86d1,null))['catch'](handleError(_0x1d86d1,null));};exports[_0x2af4('0xae')]=function(_0x51d02a,_0x22b14a){return db['SmsInteraction'][_0x2af4('0xae')]()[_0x2af4('0x27')](respondWithResult(_0x22b14a,null))[_0x2af4('0x31')](handleError(_0x22b14a,null));};exports[_0x2af4('0xaf')]=function(_0xbb10ac,_0x14a4ae,_0x504e8a){return db['SmsMessage'][_0x2af4('0x59')]({'where':{'id':_0xbb10ac[_0x2af4('0xa7')]['id']}})[_0x2af4('0x27')](handleEntityNotFound(_0x14a4ae,null))[_0x2af4('0x27')](function(_0x3cb205){if(_0x3cb205){return _0x3cb205[_0x2af4('0xaf')](_0xbb10ac[_0x2af4('0x6f')]['ids'],_['omit'](_0xbb10ac[_0x2af4('0x6f')],['ids','id'])||{});}})['then'](respondWithResult(_0x14a4ae,null))[_0x2af4('0x31')](handleError(_0x14a4ae,null));};exports[_0x2af4('0xb0')]=function(_0x2b98cc,_0x466002,_0x4e0bb7){var _0x2c1ab5={'raw':![],'where':{}};var _0x106423={};var _0x3f6be2={'count':0x0,'rows':[]};return db[_0x2af4('0x91')][_0x2af4('0xb1')]({'where':{'id':_0x2b98cc['params']['id']}})['then'](handleEntityNotFound(_0x466002,null))[_0x2af4('0x27')](function(_0x223441){if(_0x223441){_0x106423['model']=_['keys'](db['SmsMessage'][_0x2af4('0x33')]);_0x106423[_0x2af4('0x3b')]=_[_0x2af4('0x38')](_0x2b98cc[_0x2af4('0x3b')]);_0x106423['filters']=_[_0x2af4('0x3a')](_0x106423[_0x2af4('0x37')],_0x106423[_0x2af4('0x3b')]);_0x2c1ab5[_0x2af4('0x3c')]=_['intersection'](_0x106423['model'],qs[_0x2af4('0x92')](_0x2b98cc[_0x2af4('0x3b')]['fields']));_0x2c1ab5['attributes']=_0x2c1ab5[_0x2af4('0x3c')][_0x2af4('0x58')]?_0x2c1ab5[_0x2af4('0x3c')]:_0x106423[_0x2af4('0x37')];if(!_0x2b98cc['query']['hasOwnProperty'](_0x2af4('0x3d'))){_0x2c1ab5[_0x2af4('0x22')]=qs[_0x2af4('0x22')](_0x2b98cc['query'][_0x2af4('0x22')]);_0x2c1ab5['offset']=qs[_0x2af4('0x20')](_0x2b98cc[_0x2af4('0x3b')]['offset']);}_0x2c1ab5[_0x2af4('0x3e')]=qs[_0x2af4('0x3f')](_0x2b98cc[_0x2af4('0x3b')][_0x2af4('0x3f')]);_0x2c1ab5['where']=qs['filters'](_[_0x2af4('0x41')](_0x2b98cc[_0x2af4('0x3b')],_0x106423[_0x2af4('0x39')]));_0x2c1ab5[_0x2af4('0x40')][_0x2af4('0xb2')]=_0x223441['id'];if(_0x2b98cc[_0x2af4('0x3b')]['filter']){_0x2c1ab5[_0x2af4('0x40')]=_['merge'](_0x2c1ab5[_0x2af4('0x40')],{'$or':_[_0x2af4('0x2a')](_0x2c1ab5[_0x2af4('0x3c')],function(_0x43033d){var _0x528359={};_0x528359[_0x43033d]={'$like':'%'+_0x2b98cc[_0x2af4('0x3b')][_0x2af4('0xb3')]+'%'};return _0x528359;})});}if(_0x2b98cc[_0x2af4('0x3b')]['$gte']){var _0x4e8054=_0x2b98cc[_0x2af4('0x3b')][_0x2af4('0xb4')][_0x2af4('0x2d')](',');var _0x54b895={};_0x54b895[_0x4e8054[0x0]]={'$gte':moment(_0x4e8054[0x1])['format'](_0x2af4('0xb5'))};_0x2c1ab5[_0x2af4('0x40')]=_['merge'](_0x2c1ab5[_0x2af4('0x40')],_0x54b895);}_0x2c1ab5=_[_0x2af4('0xaa')]({},_0x2c1ab5,_0x2b98cc['options']);return db[_0x2af4('0xb6')][_0x2af4('0x23')]({'where':_0x2c1ab5[_0x2af4('0x40')]})[_0x2af4('0x27')](function(_0x1dc0ee){_0x3f6be2[_0x2af4('0x23')]=_0x1dc0ee;if(_0x2b98cc[_0x2af4('0x3b')][_0x2af4('0xa8')]){_0x2c1ab5[_0x2af4('0xa9')]=[{'all':!![]}];}return db[_0x2af4('0xb6')][_0x2af4('0xb7')](_0x2c1ab5);})[_0x2af4('0x27')](function(_0x4723e0){_0x3f6be2[_0x2af4('0xa5')]=_0x4723e0;return _0x3f6be2;});}})[_0x2af4('0x27')](respondWithFilteredResult(_0x466002,_0x2c1ab5))[_0x2af4('0x31')](handleError(_0x466002,null));};exports[_0x2af4('0xb8')]=function(_0x2a1334,_0x5837ea,_0x497a56){return db['SmsInteraction']['find']({'where':{'id':_0x2a1334[_0x2af4('0xa7')]['id']}})['then'](handleEntityNotFound(_0x5837ea,null))[_0x2af4('0x27')](function(_0x3918ca){if(_0x3918ca){return _0x3918ca['setTags'](_0x2a1334['body']['ids'],_[_0x2af4('0xb9')](_0x2a1334[_0x2af4('0x6f')],[_0x2af4('0xba'),'id'])||{})[_0x2af4('0xbb')](function(){return db[_0x2af4('0x68')]['findAll']({'attributes':['id',_0x2af4('0x29'),'color'],'where':{'id':_0x2a1334['body'][_0x2af4('0xba')]}});})[_0x2af4('0x27')](function(_0x25a9ff){socket[_0x2af4('0xbc')](_0x2af4('0xbd'),{'id':Number(_0x2a1334[_0x2af4('0xa7')]['id']),'tags':_0x25a9ff||[]});return{'id':Number(_0x2a1334[_0x2af4('0xa7')]['id']),'tags':_0x25a9ff||[]};});}})[_0x2af4('0x27')](respondWithResult(_0x5837ea,null))['catch'](handleError(_0x5837ea,null));};exports['removeTags']=function(_0x5cf1dc,_0x5e6885,_0x4da210){return db['SmsInteraction'][_0x2af4('0x59')]({'where':{'id':_0x5cf1dc[_0x2af4('0xa7')]['id']}})[_0x2af4('0x27')](handleEntityNotFound(_0x5e6885,null))[_0x2af4('0x27')](function(_0x3a05a1){if(_0x3a05a1){return _0x3a05a1[_0x2af4('0xbe')](_0x5cf1dc[_0x2af4('0x3b')][_0x2af4('0xba')]);}})['then'](respondWithStatusCode(_0x5e6885,null))[_0x2af4('0x31')](handleError(_0x5e6885,null));};exports[_0x2af4('0xbf')]=function(_0x4993de,_0x2c85b3){var _0xef6657=moment()[_0x2af4('0xc0')]()[_0x2af4('0x8f')]();var _0x10f5a7=path[_0x2af4('0xc1')](config[_0x2af4('0xc2')],_0x2af4('0xc3'),_0x2af4('0xc4'),_0x2af4('0xc5'));var _0x1dcf1c=path['join'](config[_0x2af4('0xc2')],'server',_0x2af4('0xc4'),_0x2af4('0xc6'));var _0xb97dc=path['join'](_0x10f5a7,_0xef6657);var _0x2a4e87=util[_0x2af4('0xc7')](_0x2af4('0xc8'),_0x4993de[_0x2af4('0xa7')]['id'],_0xef6657);var _0x3c012e=path['join'](_0x10f5a7,_0x2a4e87);var _0x211f95=[];_0x211f95[_0x2af4('0x30')]({'model':db[_0x2af4('0x6b')],'as':'User','attributes':['id',_0x2af4('0x2b')],'raw':!![]});_0x211f95[_0x2af4('0x30')]({'model':db[_0x2af4('0xc9')],'as':_0x2af4('0x5f'),'attributes':['id',_0x2af4('0xca'),'lastName'],'raw':!![]});var _0x57b7df=[{'model':db[_0x2af4('0xb6')],'as':'Messages','attributes':['id','body',_0x2af4('0xcb'),_0x2af4('0xcc'),_0x2af4('0xcd'),_0x2af4('0x76')],'include':_0x211f95}];_0x57b7df[_0x2af4('0x30')]({'model':db[_0x2af4('0xce')],'as':_0x2af4('0xcf'),'attributes':['id',_0x2af4('0x29')]});_0x57b7df[_0x2af4('0x30')]({'model':db['User'],'as':_0x2af4('0xd0'),'attributes':['id','fullname']});return db[_0x2af4('0x91')][_0x2af4('0x59')]({'where':{'id':_0x4993de[_0x2af4('0xa7')]['id']},'include':_0x57b7df})[_0x2af4('0x27')](handleEntityNotFound(_0x2c85b3,null))[_0x2af4('0x27')](function(_0x151d50){if(_0x151d50){var _0x24bba1=_0x151d50[_0x2af4('0xd1')]({'plain':!![]});fs['mkdirSync'](_0xb97dc);var _0x23e83c={'channel':_0x2af4('0xd2'),'account':_0x24bba1[_0x2af4('0xcf')]['name'],'agent':_0x24bba1['Owner']?_0x24bba1[_0x2af4('0xd0')][_0x2af4('0x2b')]:_0x2af4('0xd3'),'createdAt':moment(_0x24bba1[_0x2af4('0xcb')])['format'](_0x2af4('0xb5'))[_0x2af4('0x8f')](),'closedAt':_0x24bba1[_0x2af4('0xd4')]?moment(_0x24bba1['closedAt'])['format'](_0x2af4('0xb5'))[_0x2af4('0x8f')]():'','disposition':_0x24bba1[_0x2af4('0xd5')],'messages':_(_0x24bba1['Messages'])[_0x2af4('0xb3')]({'secret':![]})[_0x2af4('0x2a')](function(_0x443897){return{'date':moment(_0x443897[_0x2af4('0xcb')])['format'](_0x2af4('0xb5'))['toString'](),'sender':_0x443897[_0x2af4('0xcc')]===_0x2af4('0xd6')?_0x443897['User']?_0x443897['User'][_0x2af4('0x2b')]:'System':_0x443897[_0x2af4('0x5f')]['firstName']+(_0x443897['Contact']['lastName']?'\x20'+_0x443897[_0x2af4('0x5f')][_0x2af4('0xd7')]:''),'body':_0x443897[_0x2af4('0x6f')],'direction':_0x443897[_0x2af4('0xcc')]===_0x2af4('0xd6')?'A':'C','secret':_0x443897[_0x2af4('0xcd')],'read':_0x443897[_0x2af4('0x76')]};})[_0x2af4('0x5b')]()};return ejs[_0x2af4('0xd8')](path['join'](config[_0x2af4('0xc2')],_0x2af4('0xc3'),_0x2af4('0xd9'),_0x2af4('0xda')),{'interaction':_0x23e83c})[_0x2af4('0x27')](function(_0x22dc92){var _0x1ea56d=path[_0x2af4('0xc1')](_0xb97dc,'transcript-'+_0x24bba1['id']+'-'+_0xef6657+'.pdf');var _0x5e8f28={'path':_0x1ea56d,'channel':_0x2af4('0xd2'),'interactionId':_0x24bba1['id']};return pdf[_0x2af4('0xdb')](_0x22dc92,_0x5e8f28);})[_0x2af4('0x27')](function(){return new BPromise(function(_0x854183,_0x54b394){zipdir(_0xb97dc,{'saveTo':_0x3c012e},function(_0x10dd77,_0x347df1){if(_0x10dd77)return _0x54b394(_0x10dd77);return _0x854183(_0x347df1);});})['then'](function(){return new BPromise(function(_0x59455c,_0x56657f){rimraf(_0xb97dc,function(_0x9daf8d){if(_0x9daf8d)_0x56657f(_0x9daf8d);return _0x59455c();});});})[_0x2af4('0x27')](function(){return _0x2c85b3[_0x2af4('0xbf')](_0x3c012e,_0x2a4e87,function(_0x2e8b5c){if(_0x2e8b5c){console[_0x2af4('0xdc')](_0x2af4('0xdd'),_0x2e8b5c);}else{fs[_0x2af4('0xde')](_0x3c012e);}});});});}else{return _0x2c85b3[_0x2af4('0xdf')](0xc8);}})['catch'](handleError(_0x2c85b3,null));};
\ No newline at end of file
index b7b9ce8..0627427 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7708=['hook','exports','events','../../mysqldb','remove','getUsers','then','setDataValue','Users','map','length','emit','catch'];(function(_0x5c6f53,_0x5f08f6){var _0x4b9fff=function(_0x34595f){while(--_0x34595f){_0x5c6f53['push'](_0x5c6f53['shift']());}};_0x4b9fff(++_0x5f08f6);}(_0x7708,0x188));var _0x8770=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7708[_0x40ac5e];return _0x2839d6;};'use strict';var EventEmitter=require(_0x8770('0x0'));var SmsInteraction=require(_0x8770('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0x8770('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x8770('0x2')};function emitEvent(_0x1a796d){return function(_0x577b13,_0x40d401,_0x50bab7){_0x577b13[_0x8770('0x3')]({'attributes':['id'],'raw':!![]})[_0x8770('0x4')](function(_0x2b0295){_0x577b13[_0x8770('0x5')](_0x8770('0x6'),_0x2b0295[_0x8770('0x7')](function(_0x2d4a1d){return{'id':_0x2d4a1d['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x577b13['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8770('0x4')](function(_0x2ca830){_0x577b13[_0x8770('0x5')]('unreadMessages',_0x2ca830[_0x8770('0x8')]);SmsInteractionEvents[_0x8770('0x9')](_0x1a796d+':'+_0x577b13['id'],_0x577b13);SmsInteractionEvents[_0x8770('0x9')](_0x1a796d,_0x577b13);_0x50bab7(null);})[_0x8770('0xa')](_0x50bab7(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x8770('0xb')](e,emitEvent(event));}}module[_0x8770('0xc')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x9f0e=['unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','SmsMessage','update','remove','then','setDataValue','map','findAll'];(function(_0x13c2cf,_0x568ba5){var _0x237785=function(_0x57095a){while(--_0x57095a){_0x13c2cf['push'](_0x13c2cf['shift']());}};_0x237785(++_0x568ba5);}(_0x9f0e,0x116));var _0xe9f0=function(_0x378f98,_0x572646){_0x378f98=_0x378f98-0x0;var _0x77996a=_0x9f0e[_0x378f98];return _0x77996a;};'use strict';var EventEmitter=require(_0xe9f0('0x0'));var SmsInteraction=require(_0xe9f0('0x1'))['db'][_0xe9f0('0x2')];var SmsMessage=require(_0xe9f0('0x1'))['db'][_0xe9f0('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe9f0('0x4'),'afterDestroy':_0xe9f0('0x5')};function emitEvent(_0x3c589d){return function(_0x202d69,_0x1eed45,_0x50313d){_0x202d69['getUsers']({'attributes':['id'],'raw':!![]})[_0xe9f0('0x6')](function(_0x167198){_0x202d69[_0xe9f0('0x7')]('Users',_0x167198[_0xe9f0('0x8')](function(_0x335b82){return{'id':_0x335b82['id']};}));return SmsMessage[_0xe9f0('0x9')]({'where':{'SmsInteractionId':_0x202d69['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe9f0('0x6')](function(_0xa523c0){_0x202d69[_0xe9f0('0x7')](_0xe9f0('0xa'),_0xa523c0[_0xe9f0('0xb')]);SmsInteractionEvents[_0xe9f0('0xc')](_0x3c589d+':'+_0x202d69['id'],_0x202d69);SmsInteractionEvents['emit'](_0x3c589d,_0x202d69);_0x50313d(null);})[_0xe9f0('0xd')](_0x50313d(null));};}for(var e in events){if(events[_0xe9f0('0xe')](e)){var event=events[e];SmsInteraction[_0xe9f0('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index 4d0cb2f..e3def9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5867=['SmsInteraction','sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsInteraction.attributes','exports'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x5867,0x9f));var _0x7586=function(_0x35b91e,_0x58d408){_0x35b91e=_0x35b91e-0x0;var _0x2251b9=_0x5867[_0x35b91e];return _0x2251b9;};'use strict';var _=require(_0x7586('0x0'));var util=require(_0x7586('0x1'));var logger=require(_0x7586('0x2'))(_0x7586('0x3'));var moment=require(_0x7586('0x4'));var BPromise=require(_0x7586('0x5'));var rp=require(_0x7586('0x6'));var fs=require('fs');var path=require(_0x7586('0x7'));var rimraf=require('rimraf');var config=require(_0x7586('0x8'));var attributes=require(_0x7586('0x9'));module[_0x7586('0xa')]=function(_0x49c603,_0x518f4f){return _0x49c603['define'](_0x7586('0xb'),attributes,{'tableName':_0x7586('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xb44db0,_0x4cc7e7,_0xd64916){if(_0xb44db0[_0x7586('0xd')](_0x7586('0xe'))){_0xb44db0[_0x7586('0xf')]=moment()['format'](_0x7586('0x10'));}_0xd64916(null,_0xb44db0);}}});};
\ No newline at end of file
+var _0xb5dd=['bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment'];(function(_0x47b7d8,_0x36a077){var _0x5aaa00=function(_0xf24370){while(--_0xf24370){_0x47b7d8['push'](_0x47b7d8['shift']());}};_0x5aaa00(++_0x36a077);}(_0xb5dd,0x1dc));var _0xdb5d=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xb5dd[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require(_0xdb5d('0x0'));var logger=require(_0xdb5d('0x1'))(_0xdb5d('0x2'));var moment=require(_0xdb5d('0x3'));var BPromise=require(_0xdb5d('0x4'));var rp=require(_0xdb5d('0x5'));var fs=require('fs');var path=require(_0xdb5d('0x6'));var rimraf=require(_0xdb5d('0x7'));var config=require(_0xdb5d('0x8'));var attributes=require(_0xdb5d('0x9'));module[_0xdb5d('0xa')]=function(_0x40e2e0,_0x2a860c){return _0x40e2e0[_0xdb5d('0xb')](_0xdb5d('0xc'),attributes,{'tableName':_0xdb5d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5c53ff,_0x45882c,_0x2a9d8e){if(_0x5c53ff['changed']('closed')){_0x5c53ff['closedAt']=moment()[_0xdb5d('0xe')](_0xdb5d('0xf'));}_0x2a9d8e(null,_0x5c53ff);}}});};
\ No newline at end of file
index 76d201a..8ce87dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5eb=['stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','options','raw','where','attributes','AddTagsToSmsInteraction','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x507c81,_0x3e1b56){var _0x368a25=function(_0x1e7519){while(--_0x1e7519){_0x507c81['push'](_0x507c81['shift']());}};_0x368a25(++_0x3e1b56);}(_0xe5eb,0x173));var _0xbe5e=function(_0x37e961,_0x457dba){_0x37e961=_0x37e961-0x0;var _0x5862b5=_0xe5eb[_0x37e961];return _0x5862b5;};'use strict';var _=require(_0xbe5e('0x0'));var util=require(_0xbe5e('0x1'));var moment=require(_0xbe5e('0x2'));var BPromise=require(_0xbe5e('0x3'));var rs=require(_0xbe5e('0x4'));var fs=require('fs');var Redis=require(_0xbe5e('0x5'));var db=require(_0xbe5e('0x6'))['db'];var utils=require(_0xbe5e('0x7'));var logger=require('../../config/logger')(_0xbe5e('0x8'));var config=require(_0xbe5e('0x9'));var jayson=require(_0xbe5e('0xa'));var client=jayson['client'][_0xbe5e('0xb')]({'port':0x232a});config[_0xbe5e('0xc')]=_[_0xbe5e('0xd')](config[_0xbe5e('0xc')],{'host':_0xbe5e('0xe'),'port':0x18eb});var socket=require(_0xbe5e('0xf'))(new Redis(config['redis']));require(_0xbe5e('0x10'))[_0xbe5e('0x11')](socket);function respondWithRpcPromise(_0x2e9261,_0x4d0927,_0x4c4194){return new BPromise(function(_0x25ce07,_0x537f98){return client[_0xbe5e('0x12')](_0x2e9261,_0x4c4194)[_0xbe5e('0x13')](function(_0x10e428){logger[_0xbe5e('0x14')](_0xbe5e('0x15'),_0x4d0927,_0xbe5e('0x16'));logger[_0xbe5e('0x17')](_0xbe5e('0x18'),_0x4d0927,_0xbe5e('0x16'),JSON[_0xbe5e('0x19')](_0x10e428));if(_0x10e428[_0xbe5e('0x1a')]){if(_0x10e428[_0xbe5e('0x1a')][_0xbe5e('0x1b')]===0x1f4){logger[_0xbe5e('0x1a')](_0xbe5e('0x15'),_0x4d0927,_0x10e428['error'][_0xbe5e('0x1c')]);return _0x537f98(_0x10e428['error'][_0xbe5e('0x1c')]);}logger[_0xbe5e('0x1a')](_0xbe5e('0x15'),_0x4d0927,_0x10e428['error'][_0xbe5e('0x1c')]);return _0x25ce07(_0x10e428[_0xbe5e('0x1a')][_0xbe5e('0x1c')]);}else{logger['info'](_0xbe5e('0x15'),_0x4d0927,_0xbe5e('0x16'));_0x25ce07(_0x10e428[_0xbe5e('0x1d')]['message']);}})[_0xbe5e('0x1e')](function(_0x159acb){logger[_0xbe5e('0x1a')](_0xbe5e('0x15'),_0x4d0927,_0x159acb);_0x537f98(_0x159acb);});});}exports[_0xbe5e('0x1f')]=function(_0x281e90){var _0x3d9f35=this;return new Promise(function(_0x53d548,_0x3d96ce){return db[_0xbe5e('0x20')][_0xbe5e('0x21')](_0x281e90['body'],{'raw':_0x281e90[_0xbe5e('0x22')]?_0x281e90['options'][_0xbe5e('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x281e90[_0xbe5e('0x22')]?_0x281e90[_0xbe5e('0x22')][_0xbe5e('0x24')]||null:null,'attributes':_0x281e90['options']?_0x281e90[_0xbe5e('0x22')][_0xbe5e('0x25')]||null:null,'limit':_0x281e90[_0xbe5e('0x22')]?_0x281e90[_0xbe5e('0x22')]['limit']||null:null})[_0xbe5e('0x13')](function(_0x2dbcb5){logger[_0xbe5e('0x14')]('UpdateSmsInteraction',_0x281e90);logger[_0xbe5e('0x17')](_0xbe5e('0x1f'),_0x281e90,JSON[_0xbe5e('0x19')](_0x2dbcb5));_0x53d548(_0x2dbcb5);})[_0xbe5e('0x1e')](function(_0x555b3a){logger[_0xbe5e('0x1a')](_0xbe5e('0x1f'),_0x555b3a[_0xbe5e('0x1c')],_0x281e90);_0x3d96ce(_0x3d9f35[_0xbe5e('0x1a')](0x1f4,_0x555b3a['message']));});});};exports[_0xbe5e('0x26')]=function(_0x2175d6){return new Promise(function(_0x338ceb,_0x13590e){return db['SmsInteraction']['find']({'where':_0x2175d6[_0xbe5e('0x22')]?_0x2175d6[_0xbe5e('0x22')]['where']||null:null})['then'](function(_0x3e4577){if(_0x3e4577){return _0x3e4577['addTags'](_0x2175d6[_0xbe5e('0x27')][_0xbe5e('0x28')],_[_0xbe5e('0x29')](_0x2175d6['body'],['ids','id'])||{});}})[_0xbe5e('0x2a')](function(_0x36004b){logger[_0xbe5e('0x14')]('AddTags',_0x2175d6);logger[_0xbe5e('0x17')](_0xbe5e('0x2b'),_0x2175d6,JSON[_0xbe5e('0x19')](_0x36004b));_0x338ceb(_0x36004b);})['catch'](function(_0x161e2d){logger[_0xbe5e('0x1a')]('AddTags',_0x161e2d[_0xbe5e('0x1c')],_0x2175d6);_0x13590e(_this['error'](0x1f4,_0x161e2d['message']));});});};
\ No newline at end of file
+var _0xf501=['register','request','info','SmsInteraction,\x20%s,\x20%s','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','then','catch','find','ids','omit','AddTags','lodash','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./smsInteraction.socket'];(function(_0x12c076,_0x5bef17){var _0x2ddd18=function(_0x436336){while(--_0x436336){_0x12c076['push'](_0x12c076['shift']());}};_0x2ddd18(++_0x5bef17);}(_0xf501,0xb1));var _0x1f50=function(_0x4b6c4d,_0x1c4d78){_0x4b6c4d=_0x4b6c4d-0x0;var _0x38f2f0=_0xf501[_0x4b6c4d];return _0x38f2f0;};'use strict';var _=require(_0x1f50('0x0'));var util=require('util');var moment=require(_0x1f50('0x1'));var BPromise=require('bluebird');var rs=require(_0x1f50('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1f50('0x3'));var logger=require(_0x1f50('0x4'))(_0x1f50('0x5'));var config=require(_0x1f50('0x6'));var jayson=require(_0x1f50('0x7'));var client=jayson[_0x1f50('0x8')][_0x1f50('0x9')]({'port':0x232a});config[_0x1f50('0xa')]=_['defaults'](config[_0x1f50('0xa')],{'host':_0x1f50('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1f50('0xa')]));require(_0x1f50('0xc'))[_0x1f50('0xd')](socket);function respondWithRpcPromise(_0x312566,_0x263613,_0x348467){return new BPromise(function(_0x4d1f07,_0x56deb6){return client[_0x1f50('0xe')](_0x312566,_0x348467)['then'](function(_0x3a92d1){logger[_0x1f50('0xf')](_0x1f50('0x10'),_0x263613,'request\x20sent');logger[_0x1f50('0x11')](_0x1f50('0x12'),_0x263613,_0x1f50('0x13'),JSON[_0x1f50('0x14')](_0x3a92d1));if(_0x3a92d1[_0x1f50('0x15')]){if(_0x3a92d1['error'][_0x1f50('0x16')]===0x1f4){logger[_0x1f50('0x15')](_0x1f50('0x10'),_0x263613,_0x3a92d1['error'][_0x1f50('0x17')]);return _0x56deb6(_0x3a92d1['error'][_0x1f50('0x17')]);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x263613,_0x3a92d1['error'][_0x1f50('0x17')]);return _0x4d1f07(_0x3a92d1[_0x1f50('0x15')][_0x1f50('0x17')]);}else{logger[_0x1f50('0xf')](_0x1f50('0x10'),_0x263613,_0x1f50('0x13'));_0x4d1f07(_0x3a92d1[_0x1f50('0x18')][_0x1f50('0x17')]);}})['catch'](function(_0x702fd4){logger[_0x1f50('0x15')](_0x1f50('0x10'),_0x263613,_0x702fd4);_0x56deb6(_0x702fd4);});});}exports[_0x1f50('0x19')]=function(_0x70defe){var _0x1f365c=this;return new Promise(function(_0x419a74,_0x33a88a){return db[_0x1f50('0x1a')][_0x1f50('0x1b')](_0x70defe[_0x1f50('0x1c')],{'raw':_0x70defe['options']?_0x70defe[_0x1f50('0x1d')][_0x1f50('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x70defe[_0x1f50('0x1d')]?_0x70defe[_0x1f50('0x1d')][_0x1f50('0x1f')]||null:null,'attributes':_0x70defe[_0x1f50('0x1d')]?_0x70defe[_0x1f50('0x1d')]['attributes']||null:null,'limit':_0x70defe[_0x1f50('0x1d')]?_0x70defe[_0x1f50('0x1d')]['limit']||null:null})[_0x1f50('0x20')](function(_0x57ff45){logger[_0x1f50('0xf')](_0x1f50('0x19'),_0x70defe);logger['debug'](_0x1f50('0x19'),_0x70defe,JSON[_0x1f50('0x14')](_0x57ff45));_0x419a74(_0x57ff45);})[_0x1f50('0x21')](function(_0x21d0f4){logger[_0x1f50('0x15')](_0x1f50('0x19'),_0x21d0f4['message'],_0x70defe);_0x33a88a(_0x1f365c[_0x1f50('0x15')](0x1f4,_0x21d0f4['message']));});});};exports['AddTagsToSmsInteraction']=function(_0x232b01){return new Promise(function(_0x14c90a,_0xdd7096){return db[_0x1f50('0x1a')][_0x1f50('0x22')]({'where':_0x232b01[_0x1f50('0x1d')]?_0x232b01[_0x1f50('0x1d')][_0x1f50('0x1f')]||null:null})['then'](function(_0x3749d6){if(_0x3749d6){return _0x3749d6['addTags'](_0x232b01['body'][_0x1f50('0x23')],_[_0x1f50('0x24')](_0x232b01['body'],[_0x1f50('0x23'),'id'])||{});}})['spread'](function(_0x31bcf1){logger[_0x1f50('0xf')](_0x1f50('0x25'),_0x232b01);logger[_0x1f50('0x11')](_0x1f50('0x25'),_0x232b01,JSON[_0x1f50('0x14')](_0x31bcf1));_0x14c90a(_0x31bcf1);})[_0x1f50('0x21')](function(_0x14f68b){logger[_0x1f50('0x15')]('AddTags',_0x14f68b[_0x1f50('0x17')],_0x232b01);_0xdd7096(_this[_0x1f50('0x15')](0x1f4,_0x14f68b[_0x1f50('0x17')]));});});};
\ No newline at end of file
index 677138c..b941cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd146=['save','remove','emit','register'];(function(_0x1c33d2,_0x278c84){var _0x235ad2=function(_0x4e3418){while(--_0x4e3418){_0x1c33d2['push'](_0x1c33d2['shift']());}};_0x235ad2(++_0x278c84);}(_0xd146,0x114));var _0x6d14=function(_0x3814ff,_0x1f42f7){_0x3814ff=_0x3814ff-0x0;var _0x40147c=_0xd146[_0x3814ff];return _0x40147c;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x6d14('0x0'),_0x6d14('0x1'),'update'];function createListener(_0x3f9472,_0x5a3eb6){return function(_0x19e683){_0x5a3eb6[_0x6d14('0x2')](_0x3f9472,_0x19e683);};}function removeListener(_0x662f4d,_0x2343a4){return function(){SmsInteractionEvents['removeListener'](_0x662f4d,_0x2343a4);};}exports[_0x6d14('0x3')]=function(_0x57189f){for(var _0x3cccdb=0x0,_0x115d08=events['length'];_0x3cccdb<_0x115d08;_0x3cccdb++){var _0xa5f16d=events[_0x3cccdb];var _0x3c98e7=createListener('smsInteraction:'+_0xa5f16d,_0x57189f);SmsInteractionEvents['on'](_0xa5f16d,_0x3c98e7);}};
\ No newline at end of file
+var _0xab92=['length','smsInteraction:','./smsInteraction.events','save','update','emit','removeListener','register'];(function(_0x17e2e7,_0xe9e1d0){var _0x2ed751=function(_0x4292a4){while(--_0x4292a4){_0x17e2e7['push'](_0x17e2e7['shift']());}};_0x2ed751(++_0xe9e1d0);}(_0xab92,0x142));var _0x2ab9=function(_0x33646f,_0x26109a){_0x33646f=_0x33646f-0x0;var _0x174686=_0xab92[_0x33646f];return _0x174686;};'use strict';var SmsInteractionEvents=require(_0x2ab9('0x0'));var events=[_0x2ab9('0x1'),'remove',_0x2ab9('0x2')];function createListener(_0x57e92d,_0x214023){return function(_0x3e3ca9){_0x214023[_0x2ab9('0x3')](_0x57e92d,_0x3e3ca9);};}function removeListener(_0x52a43e,_0x30b7b9){return function(){SmsInteractionEvents[_0x2ab9('0x4')](_0x52a43e,_0x30b7b9);};}exports[_0x2ab9('0x5')]=function(_0x51cf61){for(var _0x2c2b16=0x0,_0x42e387=events[_0x2ab9('0x6')];_0x2c2b16<_0x42e387;_0x2c2b16++){var _0x29d27d=events[_0x2c2b16];var _0x36b536=createListener(_0x2ab9('0x7')+_0x29d27d,_0x51cf61);SmsInteractionEvents['on'](_0x29d27d,_0x36b536);}};
\ No newline at end of file
index 8d58b79..e2de42a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b85=['create','/:id/status','put','/:id','update','/:id/accept','reject','exports','util','connect-timeout','express','Router','fs-extra','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','sms','smsmessage:create'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x9b85,0xd7));var _0x59b8=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x9b85[_0x5d4607];return _0x5e4a86;};'use strict';var multer=require('multer');var util=require(_0x59b8('0x0'));var path=require('path');var timeout=require(_0x59b8('0x1'));var express=require(_0x59b8('0x2'));var router=express[_0x59b8('0x3')]();var fs_extra=require(_0x59b8('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x59b8('0x5'));router[_0x59b8('0x6')]('/',auth[_0x59b8('0x7')](),controller[_0x59b8('0x8')]);router[_0x59b8('0x6')](_0x59b8('0x9'),auth[_0x59b8('0x7')](),controller[_0x59b8('0xa')]);router[_0x59b8('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x59b8('0xb')]('/',auth[_0x59b8('0x7')](),interaction[_0x59b8('0xc')](_0x59b8('0xd'),_0x59b8('0xe')),controller[_0x59b8('0xf')]);router[_0x59b8('0xb')](_0x59b8('0x10'),controller['status']);router[_0x59b8('0x11')](_0x59b8('0x12'),auth[_0x59b8('0x7')](),controller[_0x59b8('0x13')]);router[_0x59b8('0x11')](_0x59b8('0x14'),auth['isAuthenticated'](),controller['accept']);router[_0x59b8('0x11')]('/:id/reject',auth[_0x59b8('0x7')](),controller[_0x59b8('0x15')]);router['delete']('/:id',auth[_0x59b8('0x7')](),controller['destroy']);module[_0x59b8('0x16')]=router;
\ No newline at end of file
+var _0xea0f=['tracked','create','/:id/status','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x5ac05a,_0x38181b){var _0x49e7dd=function(_0x5a2d65){while(--_0x5a2d65){_0x5ac05a['push'](_0x5ac05a['shift']());}};_0x49e7dd(++_0x38181b);}(_0xea0f,0x73));var _0xfea0=function(_0x94495,_0x2524f8){_0x94495=_0x94495-0x0;var _0x7e8397=_0xea0f[_0x94495];return _0x7e8397;};'use strict';var multer=require(_0xfea0('0x0'));var util=require(_0xfea0('0x1'));var path=require(_0xfea0('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfea0('0x3')]();var fs_extra=require(_0xfea0('0x4'));var auth=require(_0xfea0('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfea0('0x6'));router[_0xfea0('0x7')]('/',auth[_0xfea0('0x8')](),controller[_0xfea0('0x9')]);router['get'](_0xfea0('0xa'),auth['isAuthenticated'](),controller[_0xfea0('0xb')]);router[_0xfea0('0x7')](_0xfea0('0xc'),auth[_0xfea0('0x8')](),controller[_0xfea0('0xd')]);router[_0xfea0('0xe')]('/',auth[_0xfea0('0x8')](),interaction[_0xfea0('0xf')]('sms','smsmessage:create'),controller[_0xfea0('0x10')]);router[_0xfea0('0xe')](_0xfea0('0x11'),controller['status']);router[_0xfea0('0x12')](_0xfea0('0xc'),auth[_0xfea0('0x8')](),controller[_0xfea0('0x13')]);router['put'](_0xfea0('0x14'),auth[_0xfea0('0x8')](),controller[_0xfea0('0x15')]);router[_0xfea0('0x12')](_0xfea0('0x16'),auth['isAuthenticated'](),controller['reject']);router[_0xfea0('0x17')](_0xfea0('0xc'),auth[_0xfea0('0x8')](),controller[_0xfea0('0x18')]);module[_0xfea0('0x19')]=router;
\ No newline at end of file
index 6a88428..f0abe86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4277=['out','STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x14e536,_0x3079fb){var _0x4db7db=function(_0x861672){while(--_0x861672){_0x14e536['push'](_0x14e536['shift']());}};_0x4db7db(++_0x3079fb);}(_0x4277,0xc9));var _0x7427=function(_0x3e5772,_0x5e3bd5){_0x3e5772=_0x3e5772-0x0;var _0x418660=_0x4277[_0x3e5772];return _0x418660;};'use strict';var Sequelize=require(_0x7427('0x0'));module[_0x7427('0x1')]={'body':{'type':Sequelize[_0x7427('0x2')](_0x7427('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x7427('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7427('0x5')]('in',_0x7427('0x6')),'defaultValue':_0x7427('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7427('0x7')](0xbe)},'phone':{'type':Sequelize[_0x7427('0x7')]},'readAt':{'type':Sequelize[_0x7427('0x8')]},'secret':{'type':Sequelize[_0x7427('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x7427('0x7')]},'providerResponse':{'type':Sequelize[_0x7427('0x2')]}};
\ No newline at end of file
+var _0x59bb=['TEXT','sequelize','exports','medium','ENUM','out','STRING','DATE','BOOLEAN'];(function(_0x20945a,_0x1c99ad){var _0x260522=function(_0x3d402c){while(--_0x3d402c){_0x20945a['push'](_0x20945a['shift']());}};_0x260522(++_0x1c99ad);}(_0x59bb,0x88));var _0xb59b=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x59bb[_0x2be8c2];return _0x97f531;};'use strict';var Sequelize=require(_0xb59b('0x0'));module[_0xb59b('0x1')]={'body':{'type':Sequelize['TEXT'](_0xb59b('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb59b('0x3')]('in',_0xb59b('0x4')),'defaultValue':_0xb59b('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xb59b('0x5')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xb59b('0x6')]},'secret':{'type':Sequelize[_0xb59b('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xb59b('0x5')]},'providerResponse':{'type':Sequelize[_0xb59b('0x8')]}};
\ No newline at end of file
index f5ba669..feeff76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f8f=['end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','SmsMessage','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','rows','show','find','create','body','params','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','SmsInteractionId','isNil','read1stAt','interaction','get','[SMSMESSAGE: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','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','acceptmessage','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','EventManager','rejectmessage','SmsAccount','SmsAccountId','inspect','twilio','MessageSid','messageId','plivo','MessageUUID','indexOf','delivered','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','client','http','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','sendStatus','status'];(function(_0x3674a4,_0x1fccd6){var _0x516bc3=function(_0x1153a3){while(--_0x1153a3){_0x3674a4['push'](_0x3674a4['shift']());}};_0x516bc3(++_0x1fccd6);}(_0x5f8f,0x189));var _0xf5f8=function(_0x5d8e26,_0x314e50){_0x5d8e26=_0x5d8e26-0x0;var _0x339873=_0x5f8f[_0x5d8e26];return _0x339873;};'use strict';var emlformat=require(_0xf5f8('0x0'));var rimraf=require(_0xf5f8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf5f8('0x2'));var rp=require(_0xf5f8('0x3'));var moment=require(_0xf5f8('0x4'));var BPromise=require(_0xf5f8('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf5f8('0x6'));var csv=require(_0xf5f8('0x7'));var ejs=require(_0xf5f8('0x8'));var fs=require('fs');var fs_extra=require(_0xf5f8('0x9'));var _=require(_0xf5f8('0xa'));var squel=require(_0xf5f8('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf5f8('0xc'));var toCsv=require(_0xf5f8('0x7'));var querystring=require(_0xf5f8('0xd'));var Papa=require('papaparse');var Redis=require(_0xf5f8('0xe'));var authService=require(_0xf5f8('0xf'));var qs=require(_0xf5f8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf5f8('0x11'));var logger=require(_0xf5f8('0x12'))(_0xf5f8('0x13'));var utils=require('../../config/utils');var config=require(_0xf5f8('0x14'));var licenseUtil=require(_0xf5f8('0x15'));var db=require(_0xf5f8('0x16'))['db'];config[_0xf5f8('0x17')]=_[_0xf5f8('0x18')](config[_0xf5f8('0x17')],{'host':_0xf5f8('0x19'),'port':0x18eb});var socket=require(_0xf5f8('0x1a'))(new Redis(config[_0xf5f8('0x17')]));require(_0xf5f8('0x1b'))[_0xf5f8('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf5f8('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0xf5f8('0x1d')][_0xf5f8('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x3e7a81,_0x5df336,_0x526694,_0xf2f41e){return new BPromise(function(_0xde9cdd,_0x289016){var _0x36789a=_0xf2f41e||client;return _0x36789a['request'](_0x3e7a81,_0x526694)['then'](function(_0x1ccc1c){logger[_0xf5f8('0x1f')](_0xf5f8('0x20'),_0x5df336,'request\x20sent');logger[_0xf5f8('0x21')](_0xf5f8('0x22'),_0x5df336,'request\x20sent',JSON[_0xf5f8('0x23')](_0x1ccc1c));if(_0x1ccc1c['error']){if(_0x1ccc1c['error'][_0xf5f8('0x24')]===0x1f4){logger[_0xf5f8('0x25')]('SmsMessage,\x20%s,\x20%s',_0x5df336,_0x1ccc1c[_0xf5f8('0x25')][_0xf5f8('0x26')]);return _0x289016(_0x1ccc1c['error'][_0xf5f8('0x26')]);}logger[_0xf5f8('0x25')](_0xf5f8('0x20'),_0x5df336,_0x1ccc1c[_0xf5f8('0x25')][_0xf5f8('0x26')]);return _0xde9cdd(_0x1ccc1c[_0xf5f8('0x25')]['message']);}else{logger[_0xf5f8('0x1f')](_0xf5f8('0x20'),_0x5df336,'request\x20sent');_0xde9cdd(_0x1ccc1c['result'][_0xf5f8('0x26')]);}})[_0xf5f8('0x27')](function(_0x1c206c){logger['error'](_0xf5f8('0x20'),_0x5df336,_0x1c206c);_0x289016(_0x1c206c);});});}function respondWithStatusCode(_0x6df6cd,_0x2dff8c){_0x2dff8c=_0x2dff8c||0xcc;return function(_0x7d0325){if(_0x7d0325){return _0x6df6cd[_0xf5f8('0x28')](_0x2dff8c);}return _0x6df6cd[_0xf5f8('0x29')](_0x2dff8c)[_0xf5f8('0x2a')]();};}function respondWithResult(_0x22533a,_0x389f16){_0x389f16=_0x389f16||0xc8;return function(_0x5c85dd){if(_0x5c85dd){return _0x22533a['status'](_0x389f16)[_0xf5f8('0x2b')](_0x5c85dd);}};}function respondWithFilteredResult(_0x58d743,_0x4b5f9c){return function(_0x4dddd5){if(_0x4dddd5){var _0x4c4f31=typeof _0x4b5f9c['offset']===_0xf5f8('0x2c')&&typeof _0x4b5f9c[_0xf5f8('0x2d')]===_0xf5f8('0x2c');var _0x33178f=_0x4dddd5[_0xf5f8('0x2e')];var _0x50a1cb=_0x4c4f31?0x0:_0x4b5f9c[_0xf5f8('0x2f')];var _0x1d1706=_0x4c4f31?_0x4dddd5['count']:_0x4b5f9c[_0xf5f8('0x2f')]+_0x4b5f9c[_0xf5f8('0x2d')];var _0x51436d;if(_0x1d1706>=_0x33178f){_0x1d1706=_0x33178f;_0x51436d=0xc8;}else{_0x51436d=0xce;}_0x58d743[_0xf5f8('0x29')](_0x51436d);return _0x58d743['set'](_0xf5f8('0x30'),_0x50a1cb+'-'+_0x1d1706+'/'+_0x33178f)['json'](_0x4dddd5);}return null;};}function patchUpdates(_0x34da32){return function(_0x2e2483){try{jsonpatch[_0xf5f8('0x31')](_0x2e2483,_0x34da32,!![]);}catch(_0x278d70){return BPromise[_0xf5f8('0x32')](_0x278d70);}return _0x2e2483[_0xf5f8('0x33')]();};}function saveUpdates(_0x3155c4,_0xd7daed){return function(_0x10ea6b){if(_0x10ea6b){return _0x10ea6b[_0xf5f8('0x34')](_0x3155c4)[_0xf5f8('0x35')](function(_0x10960d){return _0x10960d;});}return null;};}function removeEntity(_0x1737cc,_0xdeafec){return function(_0x354b41){if(_0x354b41){return _0x354b41[_0xf5f8('0x36')]()['then'](function(){_0x1737cc[_0xf5f8('0x29')](0xcc)[_0xf5f8('0x2a')]();});}};}function handleEntityNotFound(_0x3e07a9,_0x2440a2){return function(_0x52da62){if(!_0x52da62){_0x3e07a9[_0xf5f8('0x28')](0x194);}return _0x52da62;};}function handleError(_0x440cd0,_0x205129){_0x205129=_0x205129||0x1f4;return function(_0x2067ba){logger[_0xf5f8('0x25')](_0x2067ba[_0xf5f8('0x37')]);if(_0x2067ba['name']){delete _0x2067ba[_0xf5f8('0x38')];}_0x440cd0[_0xf5f8('0x29')](_0x205129)[_0xf5f8('0x39')](_0x2067ba);};}exports['index']=function(_0x2ebb22,_0x188017){var _0x1f609b={},_0x363b4e={},_0x2b9eb7={'count':0x0,'rows':[]};var _0x46ee4c=_[_0xf5f8('0x3a')](db[_0xf5f8('0x3b')]['rawAttributes'],function(_0x2e9995){return{'name':_0x2e9995[_0xf5f8('0x3c')],'type':_0x2e9995[_0xf5f8('0x3d')][_0xf5f8('0x3e')]};});_0x363b4e[_0xf5f8('0x3f')]=_[_0xf5f8('0x3a')](_0x46ee4c,_0xf5f8('0x38'));_0x363b4e[_0xf5f8('0x40')]=_[_0xf5f8('0x41')](_0x2ebb22[_0xf5f8('0x40')]);_0x363b4e['filters']=_[_0xf5f8('0x42')](_0x363b4e[_0xf5f8('0x3f')],_0x363b4e['query']);_0x1f609b[_0xf5f8('0x43')]=_[_0xf5f8('0x42')](_0x363b4e[_0xf5f8('0x3f')],qs[_0xf5f8('0x44')](_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x44')]));_0x1f609b[_0xf5f8('0x43')]=_0x1f609b[_0xf5f8('0x43')][_0xf5f8('0x45')]?_0x1f609b[_0xf5f8('0x43')]:_0x363b4e[_0xf5f8('0x3f')];if(!_0x2ebb22[_0xf5f8('0x40')]['hasOwnProperty'](_0xf5f8('0x46'))){_0x1f609b[_0xf5f8('0x2d')]=qs[_0xf5f8('0x2d')](_0x2ebb22['query'][_0xf5f8('0x2d')]);_0x1f609b['offset']=qs[_0xf5f8('0x2f')](_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x2f')]);}_0x1f609b[_0xf5f8('0x47')]=qs[_0xf5f8('0x48')](_0x2ebb22['query'][_0xf5f8('0x48')]);_0x1f609b[_0xf5f8('0x49')]=qs[_0xf5f8('0x4a')](_[_0xf5f8('0x4b')](_0x2ebb22[_0xf5f8('0x40')],_0x363b4e[_0xf5f8('0x4a')]),_0x46ee4c);if(_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x4c')]){_0x1f609b[_0xf5f8('0x49')]=_[_0xf5f8('0x4d')](_0x1f609b['where'],{'$or':_['map'](_0x46ee4c,function(_0x35df8e){if(_0x35df8e['type']!=='VIRTUAL'){var _0x42e64a={};_0x42e64a[_0x35df8e[_0xf5f8('0x38')]]={'$like':'%'+_0x2ebb22[_0xf5f8('0x40')]['filter']+'%'};return _0x42e64a;}})});}_0x1f609b=_[_0xf5f8('0x4d')]({},_0x1f609b,_0x2ebb22[_0xf5f8('0x4e')]);var _0x40fe33={'where':_0x1f609b[_0xf5f8('0x49')]};return db[_0xf5f8('0x3b')][_0xf5f8('0x2e')](_0x40fe33)[_0xf5f8('0x35')](function(_0x2109aa){_0x2b9eb7['count']=_0x2109aa;if(_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x4f')]){_0x1f609b['include']=[{'all':!![]}];}return db[_0xf5f8('0x3b')]['findAll'](_0x1f609b);})[_0xf5f8('0x35')](function(_0x2ee9e7){_0x2b9eb7[_0xf5f8('0x50')]=_0x2ee9e7;return _0x2b9eb7;})['then'](respondWithFilteredResult(_0x188017,_0x1f609b))['catch'](handleError(_0x188017,null));};exports[_0xf5f8('0x51')]=function(_0x792647,_0x4d2f29){var _0x379a83={'raw':!![],'where':{'id':_0x792647['params']['id']}},_0x5004db={};_0x5004db[_0xf5f8('0x3f')]=_['keys'](db[_0xf5f8('0x3b')]['rawAttributes']);_0x5004db['query']=_['keys'](_0x792647[_0xf5f8('0x40')]);_0x5004db[_0xf5f8('0x4a')]=_[_0xf5f8('0x42')](_0x5004db['model'],_0x5004db[_0xf5f8('0x40')]);_0x379a83[_0xf5f8('0x43')]=_[_0xf5f8('0x42')](_0x5004db[_0xf5f8('0x3f')],qs[_0xf5f8('0x44')](_0x792647['query'][_0xf5f8('0x44')]));_0x379a83[_0xf5f8('0x43')]=_0x379a83[_0xf5f8('0x43')][_0xf5f8('0x45')]?_0x379a83[_0xf5f8('0x43')]:_0x5004db[_0xf5f8('0x3f')];if(_0x792647['query'][_0xf5f8('0x4f')]){_0x379a83['include']=[{'all':!![]}];}_0x379a83=_[_0xf5f8('0x4d')]({},_0x379a83,_0x792647[_0xf5f8('0x4e')]);return db[_0xf5f8('0x3b')][_0xf5f8('0x52')](_0x379a83)['then'](handleEntityNotFound(_0x4d2f29,null))[_0xf5f8('0x35')](respondWithResult(_0x4d2f29,null))[_0xf5f8('0x27')](handleError(_0x4d2f29,null));};exports[_0xf5f8('0x53')]=function(_0x284d92,_0x2ddd3a){return db[_0xf5f8('0x3b')]['create'](_0x284d92[_0xf5f8('0x54')],{})[_0xf5f8('0x35')](respondWithResult(_0x2ddd3a,0xc9))[_0xf5f8('0x27')](handleError(_0x2ddd3a,null));};exports[_0xf5f8('0x34')]=function(_0x506bf8,_0x1198de){if(_0x506bf8['body']['id']){delete _0x506bf8[_0xf5f8('0x54')]['id'];}return db[_0xf5f8('0x3b')][_0xf5f8('0x52')]({'where':{'id':_0x506bf8[_0xf5f8('0x55')]['id']}})[_0xf5f8('0x35')](handleEntityNotFound(_0x1198de,null))[_0xf5f8('0x35')](saveUpdates(_0x506bf8[_0xf5f8('0x54')],null))[_0xf5f8('0x35')](respondWithResult(_0x1198de,null))[_0xf5f8('0x27')](handleError(_0x1198de,null));};exports[_0xf5f8('0x36')]=function(_0x1c9367,_0x3f58f5){return db[_0xf5f8('0x3b')][_0xf5f8('0x52')]({'where':{'id':_0x1c9367[_0xf5f8('0x55')]['id']}})['then'](handleEntityNotFound(_0x3f58f5,null))[_0xf5f8('0x35')](removeEntity(_0x3f58f5,null))['catch'](handleError(_0x3f58f5,null));};exports['describe']=function(_0x173ca2,_0xafe60){return db['SmsMessage']['describe']()[_0xf5f8('0x35')](respondWithResult(_0xafe60,null))[_0xf5f8('0x27')](handleError(_0xafe60,null));};var interaction_log=require(_0xf5f8('0x12'))(_0xf5f8('0x56'));exports[_0xf5f8('0x57')]=function(_0x13fb0d,_0x4ccdd5,_0x2f24bb){var _0x36233b={'agent':{},'channel':_0xf5f8('0x58')};if(_0x13fb0d[_0xf5f8('0x54')]['id']){delete _0x13fb0d['body']['id'];}_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x59')]=!![];_0x13fb0d[_0xf5f8('0x54')]['readAt']=moment()[_0xf5f8('0x5a')](_0xf5f8('0x5b'));_0x13fb0d['body'][_0xf5f8('0x5c')]=_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x5c')]||_0x13fb0d['user']['id'];_0x36233b[_0xf5f8('0x5d')]['id']=_0x13fb0d['body'][_0xf5f8('0x5c')];return db[_0xf5f8('0x3b')][_0xf5f8('0x52')]({'where':{'id':_0x13fb0d[_0xf5f8('0x55')]['id'],'UserId':null}})[_0xf5f8('0x35')](handleEntityNotFound(_0x4ccdd5,null))[_0xf5f8('0x35')](saveUpdates(_0x13fb0d[_0xf5f8('0x54')],null))['then'](function(_0x5a5d32){if(_0x5a5d32){_0x36233b['message']=_0x5a5d32['get']({'plain':!![]});return db['SmsInteraction'][_0xf5f8('0x52')]({'where':{'id':_0x5a5d32[_0xf5f8('0x5e')]}});}return null;})['then'](handleEntityNotFound(_0x4ccdd5,null))['then'](function(_0x44f662){if(_0x44f662){return _0x44f662[_0xf5f8('0x34')]({'UserId':_0x13fb0d['body'][_0xf5f8('0x5c')],'read1stAt':_[_0xf5f8('0x5f')](_0x44f662[_0xf5f8('0x60')])?moment()[_0xf5f8('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf5f8('0x35')](function(_0x3f4f6e){if(_0x3f4f6e){_0x36233b[_0xf5f8('0x61')]=_0x3f4f6e[_0xf5f8('0x62')]({'plain':!![]});interaction_log['info'](_0xf5f8('0x63'),_0x13fb0d['user']['id'],_0x13fb0d[_0xf5f8('0x64')][_0xf5f8('0x38')],_0x13fb0d[_0xf5f8('0x64')][_0xf5f8('0x65')],_0x36233b[_0xf5f8('0x61')]['id'],_0x13fb0d['body']?JSON[_0xf5f8('0x23')](_0x13fb0d[_0xf5f8('0x54')]):_0xf5f8('0x66'));return respondWithRpcPromise(_0xf5f8('0x67'),_0xf5f8('0x68'),_0x36233b);}return null;})[_0xf5f8('0x35')](function(_0x3cc015){var _0x4abd19=_0xf5f8('0x69')+_0x3cc015[_0xf5f8('0x26')][_0xf5f8('0x6a')];return db[_0xf5f8('0x6b')][_0xf5f8('0x40')](_0x4abd19,{'type':db[_0xf5f8('0x6c')][_0xf5f8('0x6d')][_0xf5f8('0x6e')],'raw':!![]})[_0xf5f8('0x35')](function(_0x177255){return _0x177255;});})[_0xf5f8('0x35')](function(_0xdc653f){if(_0xdc653f){_0x36233b[_0xf5f8('0x26')][_0xf5f8('0x6f')]=_0xdc653f[0x0];if(!_0x13fb0d['body'][_0xf5f8('0x5c')])return;return db[_0xf5f8('0x70')][_0xf5f8('0x52')]({'where':{'id':_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x5c')],'role':_0xf5f8('0x5d')},'attributes':['id','name',_0xf5f8('0x71'),_0xf5f8('0x72'),_0xf5f8('0x73')],'raw':!![]});}return null;})[_0xf5f8('0x35')](function(_0x58484f){if(!_0x58484f)return null;_0x36233b[_0xf5f8('0x26')]['agent']=_0x58484f;return _0x36233b;})[_0xf5f8('0x35')](function(_0x36a534){if(_0x36a534){if(_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x74')]){_0x36233b[_0xf5f8('0x26')][_0xf5f8('0x75')]=util[_0xf5f8('0x5a')](_0xf5f8('0x76'),_0x13fb0d[_0xf5f8('0x64')][_0xf5f8('0x38')]);_0x36233b['message'][_0xf5f8('0x77')]=_0x36233b[_0xf5f8('0x77')];_0x36233b['message'][_0xf5f8('0x78')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':_0xf5f8('0x79'),'message':_0x36233b[_0xf5f8('0x26')]},client9002)[_0xf5f8('0x35')](function(){return _0x36233b;});}return _0x36233b;}return null;})['then'](respondWithResult(_0x4ccdd5,null))[_0xf5f8('0x27')](handleError(_0x4ccdd5,null));};var interaction_log=require(_0xf5f8('0x12'))(_0xf5f8('0x56'));exports[_0xf5f8('0x32')]=function(_0x27fdf9,_0x2cb006,_0x1e4983){var _0x430814={'agent':{},'channel':'sms'};if(_0x27fdf9[_0xf5f8('0x54')]['id']){delete _0x27fdf9[_0xf5f8('0x54')]['id'];}_0x27fdf9[_0xf5f8('0x54')]['UserId']=_0x27fdf9[_0xf5f8('0x54')][_0xf5f8('0x5c')]||_0x27fdf9['user']['id'];_0x430814[_0xf5f8('0x5d')]['id']=_0x27fdf9['body'][_0xf5f8('0x5c')];return db['SmsMessage'][_0xf5f8('0x52')]({'where':{'id':_0x27fdf9[_0xf5f8('0x55')]['id'],'UserId':null}})[_0xf5f8('0x35')](handleEntityNotFound(_0x2cb006,null))['then'](function(_0x596936){if(_0x596936){_0x430814[_0xf5f8('0x26')]=_0x596936[_0xf5f8('0x62')]({'plain':!![]});return db[_0xf5f8('0x7a')][_0xf5f8('0x52')]({'where':{'id':_0x596936[_0xf5f8('0x5e')]}});}return null;})[_0xf5f8('0x35')](handleEntityNotFound(_0x2cb006,null))[_0xf5f8('0x35')](function(_0x5132f1){if(_0x5132f1){_0x430814['interaction']=_0x5132f1[_0xf5f8('0x62')]({'plain':!![]});interaction_log[_0xf5f8('0x1f')](_0xf5f8('0x7b'),_0x27fdf9['user']['id'],_0x27fdf9[_0xf5f8('0x64')]['name'],_0x27fdf9['user'][_0xf5f8('0x65')],_0x430814[_0xf5f8('0x61')]['id'],_0x27fdf9[_0xf5f8('0x54')]?JSON[_0xf5f8('0x23')](_0x27fdf9[_0xf5f8('0x54')]):'null');return respondWithRpcPromise(_0xf5f8('0x7c'),_0xf5f8('0x7d'),_0x430814);}return null;})['then'](function(_0x3bd597){var _0xa27e08=_0xf5f8('0x69')+_0x3bd597[_0xf5f8('0x26')]['ContactId'];return db[_0xf5f8('0x6b')][_0xf5f8('0x40')](_0xa27e08,{'type':db[_0xf5f8('0x6c')][_0xf5f8('0x6d')][_0xf5f8('0x6e')],'raw':!![]})[_0xf5f8('0x35')](function(_0xafe534){return _0xafe534;});})[_0xf5f8('0x35')](function(_0x1440f5){if(_0x1440f5){_0x430814[_0xf5f8('0x26')][_0xf5f8('0x6f')]=_0x1440f5[0x0];if(!_0x27fdf9['body'][_0xf5f8('0x5c')])return;return db['User']['find']({'where':{'id':_0x27fdf9[_0xf5f8('0x54')]['UserId'],'role':_0xf5f8('0x5d')},'attributes':['id',_0xf5f8('0x38'),_0xf5f8('0x71'),_0xf5f8('0x72'),_0xf5f8('0x73')],'raw':!![]});}return null;})[_0xf5f8('0x35')](function(_0x231d2a){if(!_0x231d2a)return null;_0x430814['message'][_0xf5f8('0x5d')]=_0x231d2a;return _0x430814;})[_0xf5f8('0x35')](function(_0x569c92){if(_0x569c92){_0x569c92[_0xf5f8('0x26')][_0xf5f8('0x75')]=util[_0xf5f8('0x5a')]('SIP/%s',_0x27fdf9[_0xf5f8('0x64')][_0xf5f8('0x38')]);_0x569c92['message'][_0xf5f8('0x77')]=_0x430814[_0xf5f8('0x77')];_0x569c92[_0xf5f8('0x26')][_0xf5f8('0x78')]=_0xf5f8('0x32');respondWithRpcPromise(_0xf5f8('0x7e'),_0xf5f8('0x7e'),{'event':_0xf5f8('0x7f'),'message':_0x569c92[_0xf5f8('0x26')]},client9002);return _0x430814;}return null;})['then'](respondWithResult(_0x2cb006,null))['catch'](handleError(_0x2cb006,null));};exports[_0xf5f8('0x29')]=function(_0x41f9aa,_0x1f0ce6,_0x23ce25){if(_0x41f9aa[_0xf5f8('0x54')]['id']){delete _0x41f9aa[_0xf5f8('0x54')]['id'];}var _0x5b57ae;return db[_0xf5f8('0x3b')]['find']({'where':{'id':_0x41f9aa['params']['id']}})[_0xf5f8('0x35')](handleEntityNotFound(_0x1f0ce6,null))[_0xf5f8('0x35')](function(_0x4201fe){if(_0x4201fe){_0x5b57ae=_0x4201fe;return db[_0xf5f8('0x80')][_0xf5f8('0x52')]({'where':{'id':_0x4201fe[_0xf5f8('0x81')]}});}})[_0xf5f8('0x35')](handleEntityNotFound(_0x1f0ce6,null))[_0xf5f8('0x35')](function(_0x17c210){if(_0x17c210){logger[_0xf5f8('0x21')](_0xf5f8('0x22'),_0xf5f8('0x29'),'received\x20delivery\x20report\x20from',_0x17c210[_0xf5f8('0x3d')],util[_0xf5f8('0x82')](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));switch(_0x17c210[_0xf5f8('0x3d')]){case _0xf5f8('0x83'):if(_0x41f9aa[_0xf5f8('0x54')][_0xf5f8('0x84')]&&_0x41f9aa['body']['MessageSid']===_0x5b57ae[_0xf5f8('0x85')]){return _0x5b57ae[_0xf5f8('0x34')]({'read':!![]});}else{logger[_0xf5f8('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf5f8('0x29'),_0xf5f8('0x83'),util[_0xf5f8('0x82')](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));}break;case _0xf5f8('0x86'):if(_0x41f9aa[_0xf5f8('0x54')][_0xf5f8('0x87')]&&_0x41f9aa['body'][_0xf5f8('0x87')]===_0x5b57ae[_0xf5f8('0x85')]&&_[_0xf5f8('0x88')](['sent',_0xf5f8('0x89')],_0x41f9aa[_0xf5f8('0x54')][_0xf5f8('0x8a')])>=0x0){return _0x5b57ae[_0xf5f8('0x34')]({'read':!![]});}else{logger[_0xf5f8('0x25')](_0xf5f8('0x8b'),_0xf5f8('0x29'),_0xf5f8('0x8c'),util['inspect'](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));}break;case _0xf5f8('0x8d'):var _0x1954db=_0x41f9aa['body'][_0xf5f8('0x8e')][0x0];if(_0x1954db[_0xf5f8('0x29')][_0xf5f8('0x8f')]===_0xf5f8('0x90')){return _0x5b57ae[_0xf5f8('0x34')]({'read':!![]});}else{logger[_0xf5f8('0x25')](_0xf5f8('0x8b'),_0xf5f8('0x29'),_0xf5f8('0x8d'),util[_0xf5f8('0x82')](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x5b57ae;}})[_0xf5f8('0x35')](respondWithResult(_0x1f0ce6,null))[_0xf5f8('0x27')](handleError(_0x1f0ce6,null));};
\ No newline at end of file
+var _0x02fe=['moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./smsMessage.socket','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','sort','pick','filter','where','merge','type','options','includeAll','include','findAll','rows','find','body','update','destroy','describe','sms-interactions','accept','sms','read','readAt','UserId','user','agent','params','SmsInteractionId','isNil','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','fullname','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','SmsInteraction','interaction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','QueryTypes','User','email','SmsAccount','debug','received\x20delivery\x20report\x20from','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','MessageUUID','sent','delivered','plivio','infobip','results','DELIVERED','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x3984bb,_0x40a70d){var _0x3d2b29=function(_0x1173f9){while(--_0x1173f9){_0x3984bb['push'](_0x3984bb['shift']());}};_0x3d2b29(++_0x40a70d);}(_0x02fe,0x1b8));var _0xe02f=function(_0x47ad3e,_0x2d6014){_0x47ad3e=_0x47ad3e-0x0;var _0x146acf=_0x02fe[_0x47ad3e];return _0x146acf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe02f('0x0'));var zipdir=require(_0xe02f('0x1'));var jsonpatch=require(_0xe02f('0x2'));var rp=require(_0xe02f('0x3'));var moment=require(_0xe02f('0x4'));var BPromise=require(_0xe02f('0x5'));var Mustache=require(_0xe02f('0x6'));var util=require(_0xe02f('0x7'));var path=require(_0xe02f('0x8'));var sox=require(_0xe02f('0x9'));var csv=require(_0xe02f('0xa'));var ejs=require(_0xe02f('0xb'));var fs=require('fs');var fs_extra=require(_0xe02f('0xc'));var _=require(_0xe02f('0xd'));var squel=require(_0xe02f('0xe'));var crypto=require(_0xe02f('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xe02f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xe02f('0x11'));var Papa=require(_0xe02f('0x12'));var Redis=require(_0xe02f('0x13'));var authService=require(_0xe02f('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe02f('0x15'));var hardwareService=require(_0xe02f('0x16'));var logger=require(_0xe02f('0x17'))(_0xe02f('0x18'));var utils=require(_0xe02f('0x19'));var config=require(_0xe02f('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xe02f('0x1b'))['db'];config[_0xe02f('0x1c')]=_[_0xe02f('0x1d')](config[_0xe02f('0x1c')],{'host':_0xe02f('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe02f('0x1f'))[_0xe02f('0x20')](socket);var jayson=require(_0xe02f('0x21'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xe02f('0x22')][_0xe02f('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x5ece1c,_0x489434,_0x4f1198,_0x3b1ff1){return new BPromise(function(_0x20d376,_0x4c5ed0){var _0x1ded9d=_0x3b1ff1||client;return _0x1ded9d['request'](_0x5ece1c,_0x4f1198)[_0xe02f('0x24')](function(_0x376fa1){logger[_0xe02f('0x25')](_0xe02f('0x26'),_0x489434,'request\x20sent');logger['debug'](_0xe02f('0x27'),_0x489434,'request\x20sent',JSON[_0xe02f('0x28')](_0x376fa1));if(_0x376fa1[_0xe02f('0x29')]){if(_0x376fa1[_0xe02f('0x29')][_0xe02f('0x2a')]===0x1f4){logger[_0xe02f('0x29')](_0xe02f('0x26'),_0x489434,_0x376fa1[_0xe02f('0x29')]['message']);return _0x4c5ed0(_0x376fa1['error'][_0xe02f('0x2b')]);}logger[_0xe02f('0x29')](_0xe02f('0x26'),_0x489434,_0x376fa1[_0xe02f('0x29')]['message']);return _0x20d376(_0x376fa1[_0xe02f('0x29')][_0xe02f('0x2b')]);}else{logger['info'](_0xe02f('0x26'),_0x489434,_0xe02f('0x2c'));_0x20d376(_0x376fa1[_0xe02f('0x2d')][_0xe02f('0x2b')]);}})[_0xe02f('0x2e')](function(_0x4a986a){logger[_0xe02f('0x29')]('SmsMessage,\x20%s,\x20%s',_0x489434,_0x4a986a);_0x4c5ed0(_0x4a986a);});});}function respondWithStatusCode(_0x1da72a,_0x4fa9ea){_0x4fa9ea=_0x4fa9ea||0xcc;return function(_0xd35be5){if(_0xd35be5){return _0x1da72a[_0xe02f('0x2f')](_0x4fa9ea);}return _0x1da72a[_0xe02f('0x30')](_0x4fa9ea)[_0xe02f('0x31')]();};}function respondWithResult(_0x18ce7c,_0x35b481){_0x35b481=_0x35b481||0xc8;return function(_0x174b49){if(_0x174b49){return _0x18ce7c[_0xe02f('0x30')](_0x35b481)[_0xe02f('0x32')](_0x174b49);}};}function respondWithFilteredResult(_0x3df08e,_0x530af1){return function(_0x1e1812){if(_0x1e1812){var _0x39451d=typeof _0x530af1[_0xe02f('0x33')]===_0xe02f('0x34')&&typeof _0x530af1[_0xe02f('0x35')]===_0xe02f('0x34');var _0x25601c=_0x1e1812[_0xe02f('0x36')];var _0x162b63=_0x39451d?0x0:_0x530af1[_0xe02f('0x33')];var _0x58fe33=_0x39451d?_0x1e1812['count']:_0x530af1[_0xe02f('0x33')]+_0x530af1[_0xe02f('0x35')];var _0x141267;if(_0x58fe33>=_0x25601c){_0x58fe33=_0x25601c;_0x141267=0xc8;}else{_0x141267=0xce;}_0x3df08e[_0xe02f('0x30')](_0x141267);return _0x3df08e['set'](_0xe02f('0x37'),_0x162b63+'-'+_0x58fe33+'/'+_0x25601c)[_0xe02f('0x32')](_0x1e1812);}return null;};}function patchUpdates(_0x47d4de){return function(_0x528d95){try{jsonpatch[_0xe02f('0x38')](_0x528d95,_0x47d4de,!![]);}catch(_0x38d6f2){return BPromise[_0xe02f('0x39')](_0x38d6f2);}return _0x528d95['save']();};}function saveUpdates(_0x2f7aa0,_0x2500fa){return function(_0x70e878){if(_0x70e878){return _0x70e878['update'](_0x2f7aa0)[_0xe02f('0x24')](function(_0x32feb4){return _0x32feb4;});}return null;};}function removeEntity(_0x5aafde,_0x394b6c){return function(_0x3b82ea){if(_0x3b82ea){return _0x3b82ea['destroy']()[_0xe02f('0x24')](function(){_0x5aafde['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fb321,_0x5bd86e){return function(_0x279576){if(!_0x279576){_0x3fb321['sendStatus'](0x194);}return _0x279576;};}function handleError(_0xa8b12d,_0x2de402){_0x2de402=_0x2de402||0x1f4;return function(_0x507fc7){logger['error'](_0x507fc7[_0xe02f('0x3a')]);if(_0x507fc7[_0xe02f('0x3b')]){delete _0x507fc7[_0xe02f('0x3b')];}_0xa8b12d[_0xe02f('0x30')](_0x2de402)[_0xe02f('0x3c')](_0x507fc7);};}exports[_0xe02f('0x3d')]=function(_0x66ea16,_0x169bf4){var _0x5282da={},_0x4667e7={},_0x502524={'count':0x0,'rows':[]};var _0x10ec85=_[_0xe02f('0x3e')](db[_0xe02f('0x3f')][_0xe02f('0x40')],function(_0x19ae2b){return{'name':_0x19ae2b[_0xe02f('0x41')],'type':_0x19ae2b['type'][_0xe02f('0x42')]};});_0x4667e7[_0xe02f('0x43')]=_[_0xe02f('0x3e')](_0x10ec85,_0xe02f('0x3b'));_0x4667e7[_0xe02f('0x44')]=_[_0xe02f('0x45')](_0x66ea16[_0xe02f('0x44')]);_0x4667e7[_0xe02f('0x46')]=_[_0xe02f('0x47')](_0x4667e7[_0xe02f('0x43')],_0x4667e7[_0xe02f('0x44')]);_0x5282da['attributes']=_['intersection'](_0x4667e7[_0xe02f('0x43')],qs[_0xe02f('0x48')](_0x66ea16['query'][_0xe02f('0x48')]));_0x5282da[_0xe02f('0x49')]=_0x5282da[_0xe02f('0x49')][_0xe02f('0x4a')]?_0x5282da[_0xe02f('0x49')]:_0x4667e7[_0xe02f('0x43')];if(!_0x66ea16['query']['hasOwnProperty']('nolimit')){_0x5282da[_0xe02f('0x35')]=qs['limit'](_0x66ea16[_0xe02f('0x44')][_0xe02f('0x35')]);_0x5282da[_0xe02f('0x33')]=qs['offset'](_0x66ea16[_0xe02f('0x44')][_0xe02f('0x33')]);}_0x5282da['order']=qs[_0xe02f('0x4b')](_0x66ea16[_0xe02f('0x44')][_0xe02f('0x4b')]);_0x5282da['where']=qs[_0xe02f('0x46')](_[_0xe02f('0x4c')](_0x66ea16['query'],_0x4667e7[_0xe02f('0x46')]),_0x10ec85);if(_0x66ea16[_0xe02f('0x44')][_0xe02f('0x4d')]){_0x5282da[_0xe02f('0x4e')]=_[_0xe02f('0x4f')](_0x5282da[_0xe02f('0x4e')],{'$or':_[_0xe02f('0x3e')](_0x10ec85,function(_0x11f24c){if(_0x11f24c[_0xe02f('0x50')]!=='VIRTUAL'){var _0x3031ab={};_0x3031ab[_0x11f24c['name']]={'$like':'%'+_0x66ea16[_0xe02f('0x44')]['filter']+'%'};return _0x3031ab;}})});}_0x5282da=_[_0xe02f('0x4f')]({},_0x5282da,_0x66ea16[_0xe02f('0x51')]);var _0x1ba6a3={'where':_0x5282da[_0xe02f('0x4e')]};return db[_0xe02f('0x3f')][_0xe02f('0x36')](_0x1ba6a3)[_0xe02f('0x24')](function(_0x2de3ce){_0x502524[_0xe02f('0x36')]=_0x2de3ce;if(_0x66ea16['query'][_0xe02f('0x52')]){_0x5282da[_0xe02f('0x53')]=[{'all':!![]}];}return db['SmsMessage'][_0xe02f('0x54')](_0x5282da);})[_0xe02f('0x24')](function(_0x33ad0c){_0x502524[_0xe02f('0x55')]=_0x33ad0c;return _0x502524;})[_0xe02f('0x24')](respondWithFilteredResult(_0x169bf4,_0x5282da))[_0xe02f('0x2e')](handleError(_0x169bf4,null));};exports['show']=function(_0x3ea85e,_0x55d6c1){var _0x22184f={'raw':!![],'where':{'id':_0x3ea85e['params']['id']}},_0x2649cd={};_0x2649cd['model']=_[_0xe02f('0x45')](db['SmsMessage']['rawAttributes']);_0x2649cd[_0xe02f('0x44')]=_[_0xe02f('0x45')](_0x3ea85e[_0xe02f('0x44')]);_0x2649cd[_0xe02f('0x46')]=_[_0xe02f('0x47')](_0x2649cd[_0xe02f('0x43')],_0x2649cd['query']);_0x22184f['attributes']=_[_0xe02f('0x47')](_0x2649cd[_0xe02f('0x43')],qs[_0xe02f('0x48')](_0x3ea85e[_0xe02f('0x44')]['fields']));_0x22184f[_0xe02f('0x49')]=_0x22184f[_0xe02f('0x49')][_0xe02f('0x4a')]?_0x22184f[_0xe02f('0x49')]:_0x2649cd[_0xe02f('0x43')];if(_0x3ea85e[_0xe02f('0x44')][_0xe02f('0x52')]){_0x22184f[_0xe02f('0x53')]=[{'all':!![]}];}_0x22184f=_[_0xe02f('0x4f')]({},_0x22184f,_0x3ea85e[_0xe02f('0x51')]);return db[_0xe02f('0x3f')][_0xe02f('0x56')](_0x22184f)[_0xe02f('0x24')](handleEntityNotFound(_0x55d6c1,null))[_0xe02f('0x24')](respondWithResult(_0x55d6c1,null))['catch'](handleError(_0x55d6c1,null));};exports['create']=function(_0x37411c,_0x4cd2e2){return db[_0xe02f('0x3f')]['create'](_0x37411c[_0xe02f('0x57')],{})['then'](respondWithResult(_0x4cd2e2,0xc9))[_0xe02f('0x2e')](handleError(_0x4cd2e2,null));};exports[_0xe02f('0x58')]=function(_0x8ed22b,_0x35ffcb){if(_0x8ed22b['body']['id']){delete _0x8ed22b[_0xe02f('0x57')]['id'];}return db['SmsMessage'][_0xe02f('0x56')]({'where':{'id':_0x8ed22b['params']['id']}})[_0xe02f('0x24')](handleEntityNotFound(_0x35ffcb,null))[_0xe02f('0x24')](saveUpdates(_0x8ed22b[_0xe02f('0x57')],null))[_0xe02f('0x24')](respondWithResult(_0x35ffcb,null))['catch'](handleError(_0x35ffcb,null));};exports[_0xe02f('0x59')]=function(_0x5e472d,_0xb4116b){return db[_0xe02f('0x3f')]['find']({'where':{'id':_0x5e472d['params']['id']}})[_0xe02f('0x24')](handleEntityNotFound(_0xb4116b,null))[_0xe02f('0x24')](removeEntity(_0xb4116b,null))[_0xe02f('0x2e')](handleError(_0xb4116b,null));};exports[_0xe02f('0x5a')]=function(_0xe65411,_0x221e12){return db['SmsMessage'][_0xe02f('0x5a')]()[_0xe02f('0x24')](respondWithResult(_0x221e12,null))[_0xe02f('0x2e')](handleError(_0x221e12,null));};var interaction_log=require(_0xe02f('0x17'))(_0xe02f('0x5b'));exports[_0xe02f('0x5c')]=function(_0x4fe505,_0x3ce900,_0x1c7d89){var _0x51e886={'agent':{},'channel':_0xe02f('0x5d')};if(_0x4fe505[_0xe02f('0x57')]['id']){delete _0x4fe505[_0xe02f('0x57')]['id'];}_0x4fe505[_0xe02f('0x57')][_0xe02f('0x5e')]=!![];_0x4fe505[_0xe02f('0x57')][_0xe02f('0x5f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4fe505[_0xe02f('0x57')][_0xe02f('0x60')]=_0x4fe505[_0xe02f('0x57')][_0xe02f('0x60')]||_0x4fe505[_0xe02f('0x61')]['id'];_0x51e886[_0xe02f('0x62')]['id']=_0x4fe505['body'][_0xe02f('0x60')];return db[_0xe02f('0x3f')][_0xe02f('0x56')]({'where':{'id':_0x4fe505[_0xe02f('0x63')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3ce900,null))['then'](saveUpdates(_0x4fe505[_0xe02f('0x57')],null))[_0xe02f('0x24')](function(_0xcda017){if(_0xcda017){_0x51e886['message']=_0xcda017['get']({'plain':!![]});return db['SmsInteraction'][_0xe02f('0x56')]({'where':{'id':_0xcda017[_0xe02f('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x3ce900,null))[_0xe02f('0x24')](function(_0x2b9425){if(_0x2b9425){return _0x2b9425[_0xe02f('0x58')]({'UserId':_0x4fe505['body'][_0xe02f('0x60')],'read1stAt':_[_0xe02f('0x65')](_0x2b9425[_0xe02f('0x66')])?moment()[_0xe02f('0x67')](_0xe02f('0x68')):undefined});}return null;})['then'](function(_0x296e5e){if(_0x296e5e){_0x51e886['interaction']=_0x296e5e[_0xe02f('0x69')]({'plain':!![]});interaction_log[_0xe02f('0x25')](_0xe02f('0x6a'),_0x4fe505['user']['id'],_0x4fe505['user'][_0xe02f('0x3b')],_0x4fe505[_0xe02f('0x61')][_0xe02f('0x6b')],_0x51e886['interaction']['id'],_0x4fe505['body']?JSON[_0xe02f('0x28')](_0x4fe505['body']):'null');return respondWithRpcPromise(_0xe02f('0x6c'),'acceptMessage',_0x51e886);}return null;})[_0xe02f('0x24')](function(_0x13b54c){var _0x19f274=_0xe02f('0x6d')+_0x13b54c[_0xe02f('0x2b')][_0xe02f('0x6e')];return db[_0xe02f('0x6f')][_0xe02f('0x44')](_0x19f274,{'type':db[_0xe02f('0x70')]['QueryTypes'][_0xe02f('0x71')],'raw':!![]})['then'](function(_0x3eb6b3){return _0x3eb6b3;});})[_0xe02f('0x24')](function(_0x3167f5){if(_0x3167f5){_0x51e886[_0xe02f('0x2b')][_0xe02f('0x72')]=_0x3167f5[0x0];if(!_0x4fe505['body'][_0xe02f('0x60')])return;return db['User']['find']({'where':{'id':_0x4fe505[_0xe02f('0x57')][_0xe02f('0x60')],'role':_0xe02f('0x62')},'attributes':['id',_0xe02f('0x3b'),_0xe02f('0x73'),'email','internal'],'raw':!![]});}return null;})[_0xe02f('0x24')](function(_0x548036){if(!_0x548036)return null;_0x51e886[_0xe02f('0x2b')][_0xe02f('0x62')]=_0x548036;return _0x51e886;})['then'](function(_0x47596c){if(_0x47596c){if(_0x4fe505[_0xe02f('0x57')][_0xe02f('0x74')]){_0x51e886[_0xe02f('0x2b')][_0xe02f('0x75')]=util['format'](_0xe02f('0x76'),_0x4fe505['user'][_0xe02f('0x3b')]);_0x51e886['message'][_0xe02f('0x77')]=_0x51e886[_0xe02f('0x77')];_0x51e886[_0xe02f('0x2b')][_0xe02f('0x78')]=_0x51e886[_0xe02f('0x77')];_0x51e886['message'][_0xe02f('0x79')]=_0xe02f('0x5c');return respondWithRpcPromise(_0xe02f('0x7a'),'EventManager',{'event':_0xe02f('0x7b'),'message':_0x51e886[_0xe02f('0x2b')]},client9002)[_0xe02f('0x24')](function(){return _0x51e886;});}return _0x51e886;}return null;})[_0xe02f('0x24')](respondWithResult(_0x3ce900,null))[_0xe02f('0x2e')](handleError(_0x3ce900,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0xe02f('0x39')]=function(_0x5e1fc6,_0x3e1ca2,_0xbab504){var _0x131634={'agent':{},'channel':'sms'};if(_0x5e1fc6[_0xe02f('0x57')]['id']){delete _0x5e1fc6[_0xe02f('0x57')]['id'];}_0x5e1fc6['body'][_0xe02f('0x60')]=_0x5e1fc6[_0xe02f('0x57')]['UserId']||_0x5e1fc6[_0xe02f('0x61')]['id'];_0x131634[_0xe02f('0x62')]['id']=_0x5e1fc6[_0xe02f('0x57')][_0xe02f('0x60')];return db[_0xe02f('0x3f')]['find']({'where':{'id':_0x5e1fc6[_0xe02f('0x63')]['id'],'UserId':null}})[_0xe02f('0x24')](handleEntityNotFound(_0x3e1ca2,null))[_0xe02f('0x24')](function(_0x4f4ed1){if(_0x4f4ed1){_0x131634[_0xe02f('0x2b')]=_0x4f4ed1['get']({'plain':!![]});return db[_0xe02f('0x7c')][_0xe02f('0x56')]({'where':{'id':_0x4f4ed1[_0xe02f('0x64')]}});}return null;})[_0xe02f('0x24')](handleEntityNotFound(_0x3e1ca2,null))[_0xe02f('0x24')](function(_0xc7c54b){if(_0xc7c54b){_0x131634[_0xe02f('0x7d')]=_0xc7c54b[_0xe02f('0x69')]({'plain':!![]});interaction_log['info'](_0xe02f('0x7e'),_0x5e1fc6[_0xe02f('0x61')]['id'],_0x5e1fc6[_0xe02f('0x61')][_0xe02f('0x3b')],_0x5e1fc6[_0xe02f('0x61')]['role'],_0x131634[_0xe02f('0x7d')]['id'],_0x5e1fc6[_0xe02f('0x57')]?JSON[_0xe02f('0x28')](_0x5e1fc6[_0xe02f('0x57')]):_0xe02f('0x7f'));return respondWithRpcPromise(_0xe02f('0x80'),_0xe02f('0x81'),_0x131634);}return null;})[_0xe02f('0x24')](function(_0x29ec54){var _0x5d7de='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x29ec54['message'][_0xe02f('0x6e')];return db[_0xe02f('0x6f')][_0xe02f('0x44')](_0x5d7de,{'type':db[_0xe02f('0x70')][_0xe02f('0x82')][_0xe02f('0x71')],'raw':!![]})['then'](function(_0x489775){return _0x489775;});})[_0xe02f('0x24')](function(_0x5221de){if(_0x5221de){_0x131634[_0xe02f('0x2b')][_0xe02f('0x72')]=_0x5221de[0x0];if(!_0x5e1fc6[_0xe02f('0x57')][_0xe02f('0x60')])return;return db[_0xe02f('0x83')][_0xe02f('0x56')]({'where':{'id':_0x5e1fc6[_0xe02f('0x57')][_0xe02f('0x60')],'role':_0xe02f('0x62')},'attributes':['id',_0xe02f('0x3b'),_0xe02f('0x73'),_0xe02f('0x84'),'internal'],'raw':!![]});}return null;})[_0xe02f('0x24')](function(_0x32491a){if(!_0x32491a)return null;_0x131634[_0xe02f('0x2b')]['agent']=_0x32491a;return _0x131634;})[_0xe02f('0x24')](function(_0x2101c3){if(_0x2101c3){_0x2101c3['message'][_0xe02f('0x75')]=util['format'](_0xe02f('0x76'),_0x5e1fc6[_0xe02f('0x61')][_0xe02f('0x3b')]);_0x2101c3[_0xe02f('0x2b')][_0xe02f('0x77')]=_0x131634[_0xe02f('0x77')];_0x2101c3[_0xe02f('0x2b')]['motionChannel']=_0x131634[_0xe02f('0x77')];_0x2101c3['message'][_0xe02f('0x79')]=_0xe02f('0x39');respondWithRpcPromise(_0xe02f('0x7a'),_0xe02f('0x7a'),{'event':'rejectmessage','message':_0x2101c3[_0xe02f('0x2b')]},client9002);return _0x131634;}return null;})[_0xe02f('0x24')](respondWithResult(_0x3e1ca2,null))[_0xe02f('0x2e')](handleError(_0x3e1ca2,null));};exports[_0xe02f('0x30')]=function(_0x4d7e86,_0x1b226c,_0x4ac5a3){if(_0x4d7e86['body']['id']){delete _0x4d7e86['body']['id'];}var _0x272f0c;return db[_0xe02f('0x3f')][_0xe02f('0x56')]({'where':{'id':_0x4d7e86[_0xe02f('0x63')]['id']}})['then'](handleEntityNotFound(_0x1b226c,null))[_0xe02f('0x24')](function(_0xe521df){if(_0xe521df){_0x272f0c=_0xe521df;return db[_0xe02f('0x85')][_0xe02f('0x56')]({'where':{'id':_0xe521df['SmsAccountId']}});}})[_0xe02f('0x24')](handleEntityNotFound(_0x1b226c,null))['then'](function(_0x41edcb){if(_0x41edcb){logger[_0xe02f('0x86')](_0xe02f('0x27'),_0xe02f('0x30'),_0xe02f('0x87'),_0x41edcb[_0xe02f('0x50')],util['inspect'](_0x4d7e86[_0xe02f('0x57')],{'showHidden':![],'depth':null}));switch(_0x41edcb[_0xe02f('0x50')]){case'twilio':if(_0x4d7e86['body'][_0xe02f('0x88')]&&_0x4d7e86[_0xe02f('0x57')][_0xe02f('0x88')]===_0x272f0c[_0xe02f('0x89')]){return _0x272f0c[_0xe02f('0x58')]({'read':!![]});}else{logger[_0xe02f('0x29')](_0xe02f('0x8a'),_0xe02f('0x30'),_0xe02f('0x8b'),util[_0xe02f('0x8c')](_0x4d7e86[_0xe02f('0x57')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x4d7e86[_0xe02f('0x57')][_0xe02f('0x8d')]&&_0x4d7e86[_0xe02f('0x57')][_0xe02f('0x8d')]===_0x272f0c['messageId']&&_['indexOf']([_0xe02f('0x8e'),_0xe02f('0x8f')],_0x4d7e86[_0xe02f('0x57')]['Status'])>=0x0){return _0x272f0c[_0xe02f('0x58')]({'read':!![]});}else{logger[_0xe02f('0x29')](_0xe02f('0x8a'),_0xe02f('0x30'),_0xe02f('0x90'),util[_0xe02f('0x8c')](_0x4d7e86['body'],{'showHidden':![],'depth':null}));}break;case _0xe02f('0x91'):var _0x265e26=_0x4d7e86[_0xe02f('0x57')][_0xe02f('0x92')][0x0];if(_0x265e26[_0xe02f('0x30')]['groupName']===_0xe02f('0x93')){return _0x272f0c[_0xe02f('0x58')]({'read':!![]});}else{logger[_0xe02f('0x29')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','infobip',util['inspect'](_0x4d7e86[_0xe02f('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x272f0c;}})[_0xe02f('0x24')](respondWithResult(_0x1b226c,null))['catch'](handleError(_0x1b226c,null));};
\ No newline at end of file
index ea2fd9c..6ca61c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x079d=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','remove','emit'];(function(_0x37e975,_0x2f29df){var _0x3792ec=function(_0x3a117c){while(--_0x3a117c){_0x37e975['push'](_0x37e975['shift']());}};_0x3792ec(++_0x2f29df);}(_0x079d,0xb3));var _0xd079=function(_0x104fda,_0x3ee961){_0x104fda=_0x104fda-0x0;var _0x20cfee=_0x079d[_0x104fda];return _0x20cfee;};'use strict';var EventEmitter=require(_0xd079('0x0'));var SmsMessage=require(_0xd079('0x1'))['db'][_0xd079('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd079('0x3')](0x0);var events={'afterCreate':_0xd079('0x4'),'afterUpdate':_0xd079('0x5'),'afterDestroy':_0xd079('0x6')};function emitEvent(_0x4c5747){return function(_0x87dcd7,_0x8df5ed,_0x731d3d){SmsMessageEvents[_0xd079('0x7')](_0x4c5747+':'+_0x87dcd7['id'],_0x87dcd7);SmsMessageEvents[_0xd079('0x7')](_0x4c5747,_0x87dcd7);_0x731d3d(null);};}for(var e in events){if(events[_0xd079('0x8')](e)){var event=events[e];SmsMessage[_0xd079('0x9')](e,emitEvent(event));}}module[_0xd079('0xa')]=SmsMessageEvents;
\ No newline at end of file
+var _0xae5b=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage'];(function(_0x156a0d,_0x3946ce){var _0x98a9ba=function(_0x46c1b2){while(--_0x46c1b2){_0x156a0d['push'](_0x156a0d['shift']());}};_0x98a9ba(++_0x3946ce);}(_0xae5b,0xde));var _0xbae5=function(_0x480a84,_0xf5d059){_0x480a84=_0x480a84-0x0;var _0x10f907=_0xae5b[_0x480a84];return _0x10f907;};'use strict';var EventEmitter=require(_0xbae5('0x0'));var SmsMessage=require(_0xbae5('0x1'))['db'][_0xbae5('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbae5('0x3'),'afterUpdate':'update','afterDestroy':_0xbae5('0x4')};function emitEvent(_0xf6ea88){return function(_0x1bd80f,_0x5f23a8,_0x3ca7e5){SmsMessageEvents[_0xbae5('0x5')](_0xf6ea88+':'+_0x1bd80f['id'],_0x1bd80f);SmsMessageEvents[_0xbae5('0x5')](_0xf6ea88,_0x1bd80f);_0x3ca7e5(null);};}for(var e in events){if(events[_0xbae5('0x6')](e)){var event=events[e];SmsMessage[_0xbae5('0x7')](e,emitEvent(event));}}module[_0xbae5('0x8')]=SmsMessageEvents;
\ No newline at end of file
index 9267e4d..7451135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7f=['accountId','/messages','applicationId','bandwidth','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','get','direction','toLowerCase','secret','isNil','UserId','SmsInteraction','then','update','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','remote','/api/sms/messages/','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','&password=','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','read','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','http_code','data','queued_count','clickSend','plivo','/status?token=','%s:%s','authId','https://api.plivo.com/v1/Account/%s/Message/','base64','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','text','sort','length','createHash','digest','hex','/external/get/send.php?','keys','id_sms','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','https://messaging.bandwidth.com/api/v2/users/'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f7f,0x177));var _0xf6f7=function(_0x388978,_0x4cd938){_0x388978=_0x388978-0x0;var _0x45436c=_0x6f7f[_0x388978];return _0x45436c;};'use strict';var _=require('lodash');var util=require(_0xf6f7('0x0'));var logger=require(_0xf6f7('0x1'))(_0xf6f7('0x2'));var moment=require(_0xf6f7('0x3'));var BPromise=require(_0xf6f7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6f7('0x5'));var rimraf=require('rimraf');var config=require(_0xf6f7('0x6'));var attributes=require(_0xf6f7('0x7'));module[_0xf6f7('0x8')]=function(_0x5495b9,_0x2f6df9){return _0x5495b9['define'](_0xf6f7('0x9'),attributes,{'tableName':_0xf6f7('0xa'),'paranoid':![],'indexes':[{'name':_0xf6f7('0xb'),'fields':[_0xf6f7('0xb')]},{'name':_0xf6f7('0xc'),'fields':[_0xf6f7('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x13cf44,_0x5299eb,_0x4de365){var _0x518b87=_0x5495b9[_0xf6f7('0xe')];var _0x43082f=_0x13cf44[_0xf6f7('0xf')]({'plain':!![]});if(_0x43082f[_0xf6f7('0x10')][_0xf6f7('0x11')]()==='in'||_0x43082f[_0xf6f7('0x10')]['toLowerCase']()==='out'&&!_0x43082f[_0xf6f7('0x12')]&&!_[_0xf6f7('0x13')](_0x43082f[_0xf6f7('0x14')])){_0x518b87[_0xf6f7('0x15')]['findOne']({'where':{'id':_0x43082f['SmsInteractionId']}})[_0xf6f7('0x16')](function(_0x4f8d9b){if(_0x4f8d9b){_0x4f8d9b[_0xf6f7('0x17')]({'lastMsgAt':_0x43082f['createdAt'],'lastMsgDirection':_0x43082f[_0xf6f7('0x10')][_0xf6f7('0x11')]()});}})[_0xf6f7('0x18')](function(_0x2758c0){console[_0xf6f7('0x19')](_0x2758c0);});}if(_0x43082f['direction']===_0xf6f7('0x1a')&&!_0x43082f[_0xf6f7('0x12')]){var _0x566589;_0x518b87[_0xf6f7('0x1b')][_0xf6f7('0x1c')]({'where':{'id':_0x43082f[_0xf6f7('0x1d')]},'raw':!![]})[_0xf6f7('0x16')](function(_0x5ba9f0){_0x566589=_0x5ba9f0;if(_0x566589&&_0x566589[_0xf6f7('0x1e')]){switch(_0x566589[_0xf6f7('0x1e')]){case'twilio':var _0x1a7ba2=require(_0xf6f7('0x1f'));if(_0x566589[_0xf6f7('0x20')]&&_0x566589[_0xf6f7('0x21')]&&_0x566589[_0xf6f7('0x22')]){var _0x93bbfc=new _0x1a7ba2(_0x566589[_0xf6f7('0x20')],_0x566589['authToken']);_0x93bbfc[_0xf6f7('0x23')]['create']({'body':_0x43082f['body'],'to':_0x43082f[_0xf6f7('0x22')],'from':_0x566589['phone'],'statusCallback':_0x566589[_0xf6f7('0x24')]+_0xf6f7('0x25')+_0x43082f['id']+'/status?token='+_0x566589[_0xf6f7('0x26')]})['then'](function(_0x4c349d){if(_0x4c349d[_0xf6f7('0x27')]){return _0x13cf44[_0xf6f7('0x17')]({'messageId':_0x4c349d[_0xf6f7('0x27')]});}})[_0xf6f7('0x18')](function(_0xa903ff){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),_0xf6f7('0x1f'),util[_0xf6f7('0x29')](_0xa903ff,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'twilio',_0xf6f7('0x2b'));}break;case _0xf6f7('0x2c'):var _0x3a6f6a=_0xf6f7('0x2d');if(_0x566589[_0xf6f7('0x2e')]&&_0x566589[_0xf6f7('0x2f')]){var _0x3be42f={'recipient':[_0x43082f['phone']],'message':_0x43082f['body'],'message_type':_0x566589['smsMethod']};if(_0x566589[_0xf6f7('0x30')]&&_0x566589['smsMethod']!=='SI'){_0x3be42f[_0xf6f7('0x31')]=_0x566589[_0xf6f7('0x22')];}var _0x4931d6={'url':_0x3a6f6a+'login?username='+_0x566589[_0xf6f7('0x2e')]+_0xf6f7('0x32')+_0x566589[_0xf6f7('0x2f')],'method':'GET'};rp(_0x4931d6)[_0xf6f7('0x16')](function(_0x505b20){var _0x34b223=_0x505b20[_0xf6f7('0x33')](';');var _0x958646={'user_key':_0x34b223[0x0],'session_key':_0x34b223[0x1]};_0x4931d6={'url':_0x3a6f6a+_0xf6f7('0x34'),'method':_0xf6f7('0x35'),'headers':{'user_key':_0x958646[_0xf6f7('0x36')],'Session_key':_0x958646[_0xf6f7('0x37')]},'json':!![],'body':_0x3be42f};return rp(_0x4931d6);})[_0xf6f7('0x16')](function(_0x3fbbf2){if(_0x3fbbf2[_0xf6f7('0x38')]>=0x1){var _0xd755e6={'messageId':_0x3fbbf2[_0xf6f7('0x39')]};if(_0x566589['smsMethod']!=='GP'||!_0x566589[_0xf6f7('0x3a')]){_0xd755e6['read']=!![];}return _0x13cf44[_0xf6f7('0x17')](_0xd755e6);}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x2c'),util[_0xf6f7('0x29')](_0x3fbbf2,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x16522e){return logger[_0xf6f7('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf6f7('0x2c'),util[_0xf6f7('0x29')](_0x16522e,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x2c'),_0xf6f7('0x3b'));}break;case _0xf6f7('0x3c'):if(_0x566589[_0xf6f7('0x21')]){var _0x3312b3={'recipient':_0x43082f[_0xf6f7('0x22')],'message':_0x43082f[_0xf6f7('0xd')],'sender':_0x566589[_0xf6f7('0x3d')]||_0x566589[_0xf6f7('0x22')],'authorization':_0x566589[_0xf6f7('0x21')]};var _0x5299eb={'method':'POST','uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x3312b3,'json':!![]};rp(_0x5299eb)[_0xf6f7('0x16')](function(_0x1de44f){var _0x9dde0a={'messageId':_0x1de44f[_0xf6f7('0x3e')]};if(!_0x566589[_0xf6f7('0x3a')]){_0x9dde0a[_0xf6f7('0x3f')]=!![];}return _0x13cf44['update'](_0x9dde0a);})[_0xf6f7('0x18')](function(_0x329648){logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate','connectel',util[_0xf6f7('0x29')](_0x329648,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),_0xf6f7('0x3c'),_0xf6f7('0x40'));}break;case'clicksend':if(_0x566589[_0xf6f7('0x2e')]&&_0x566589[_0xf6f7('0x2f')]){var _0x3312b3={'messages':[{'source':_0xf6f7('0x41'),'to':_0x43082f['phone'],'body':_0x43082f[_0xf6f7('0xd')],'from':_0x566589[_0xf6f7('0x3d')]||_0x566589['phone']}]};var _0x5bd8f7=util[_0xf6f7('0x42')]('%s:%s',_0x566589[_0xf6f7('0x2e')],_0x566589['password']);var _0x5299eb={'method':'POST','uri':_0xf6f7('0x43'),'body':_0x3312b3,'headers':{'Authorization':util[_0xf6f7('0x42')](_0xf6f7('0x44'),new Buffer(_0x5bd8f7)[_0xf6f7('0x45')]('base64'))},'json':!![]};rp(_0x5299eb)[_0xf6f7('0x16')](function(_0x59389e){if(_0x59389e[_0xf6f7('0x46')]>=0xc8&&_0x59389e['http_code']<=0xce){if(_0x59389e['data']&&_0x59389e[_0xf6f7('0x47')][_0xf6f7('0x48')]>0x0){var _0xff8a0f=_['head'](_0x59389e[_0xf6f7('0x47')][_0xf6f7('0x23')]);var _0x4fd4e1={'messageId':_0xff8a0f['message_id']};if(!_0x566589[_0xf6f7('0x3a')]){_0x4fd4e1['read']=!![];}return _0x13cf44[_0xf6f7('0x17')](_0x4fd4e1);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),'clickSend',util[_0xf6f7('0x29')](_0x59389e,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xf6f7('0x2a'),'afterCreate','clickSend',util[_0xf6f7('0x29')](_0x59389e,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x2b1a0c){logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x49'),util[_0xf6f7('0x29')](_0x2b1a0c,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x49'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xf6f7('0x4a'):if(_0x566589['authId']&&_0x566589[_0xf6f7('0x21')]){var _0x3312b3={'dst':_0x43082f[_0xf6f7('0x22')],'text':_0x43082f['body'],'src':_0x566589[_0xf6f7('0x3d')]||_0x566589[_0xf6f7('0x22')],'url':_0x566589[_0xf6f7('0x24')]+_0xf6f7('0x25')+_0x43082f['id']+_0xf6f7('0x4b')+_0x566589['token']};var _0x5bd8f7=util['format'](_0xf6f7('0x4c'),_0x566589[_0xf6f7('0x4d')],_0x566589[_0xf6f7('0x21')]);var _0x5299eb={'method':'POST','uri':util[_0xf6f7('0x42')](_0xf6f7('0x4e'),_0x566589[_0xf6f7('0x4d')]),'body':_0x3312b3,'headers':{'Authorization':util['format'](_0xf6f7('0x44'),new Buffer(_0x5bd8f7)[_0xf6f7('0x45')](_0xf6f7('0x4f')))},'json':!![]};rp(_0x5299eb)[_0xf6f7('0x16')](function(_0x294270){var _0x1c03fe={'messageId':_0x294270['message_uuid'][0x0]};return _0x13cf44[_0xf6f7('0x17')](_0x1c03fe);})[_0xf6f7('0x18')](function(_0x5a1679){logger['error'](_0xf6f7('0x2a'),_0xf6f7('0x28'),'plivo',util[_0xf6f7('0x29')](_0x5a1679,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x4a'),_0xf6f7('0x50'));}break;case _0xf6f7('0x51'):if(_0x566589[_0xf6f7('0x2e')]&&_0x566589[_0xf6f7('0x2f')]){if(_0x566589[_0xf6f7('0x52')]){var _0x58ed71={'method':'POST','uri':_0x566589['baseUrl']+_0xf6f7('0x53'),'body':{'username':_0x566589[_0xf6f7('0x2e')],'password':_0x566589[_0xf6f7('0x2f')]},'json':!![]};return rp(_0x58ed71)[_0xf6f7('0x16')](function(_0x552fa6){var _0x30d9c2={'method':'POST','uri':_0x566589[_0xf6f7('0x52')]+_0xf6f7('0x54'),'body':{'messages':[{'from':_0x566589[_0xf6f7('0x22')],'destinations':[{'to':_0x43082f[_0xf6f7('0x22')]}],'text':_0x43082f['body'],'notifyUrl':_0x566589[_0xf6f7('0x24')]+_0xf6f7('0x25')+_0x43082f['id']+_0xf6f7('0x4b')+_0x566589[_0xf6f7('0x26')],'notifyContentType':_0xf6f7('0x55'),'callbackData':_0x566589[_0xf6f7('0x22')]+';'+_0x43082f[_0xf6f7('0xd')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x552fa6['token']},'json':!![]};return rp(_0x30d9c2)['then'](function(_0x20b843){if(_0x20b843[_0xf6f7('0x23')]){var _0xbc6c20={'messageId':_0x20b843[_0xf6f7('0x23')][0x0][_0xf6f7('0xb')]};if(!_0x566589[_0xf6f7('0x3a')]){_0xbc6c20[_0xf6f7('0x3f')]=!![];}return _0x13cf44['update'](_0xbc6c20);}else{return logger['error'](_0xf6f7('0x2a'),_0xf6f7('0x28'),'infobip',util[_0xf6f7('0x29')](_0x20b843,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x5ebf15){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x51'),util[_0xf6f7('0x29')](_0x5ebf15,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x51'),_0xf6f7('0x56'));}}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'infobip','Missing\x20parameters:\x20username,\x20password');}break;case _0xf6f7('0x57'):var _0x5f125d=require(_0xf6f7('0x58'));if(_0x566589[_0xf6f7('0x59')]){var _0x13a8e8={};_0x13a8e8['login']=_0x566589[_0xf6f7('0x2e')];_0x13a8e8[_0xf6f7('0x22')]=_0x43082f[_0xf6f7('0x22')];_0x13a8e8[_0xf6f7('0x31')]=_0x566589['phone'];_0x13a8e8[_0xf6f7('0x5a')]=_0x43082f[_0xf6f7('0xd')];_0x13a8e8['timestamp']=+new Date();var _0x584ac9='';var _0x1012dd='';var _0x4a8a51=Object['keys'](_0x13a8e8);_0x4a8a51[_0xf6f7('0x5b')]();for(var _0x4b1ed7=0x0;_0x4b1ed7<_0x4a8a51[_0xf6f7('0x5c')];_0x4b1ed7++){if(_0x584ac9!=''){_0x584ac9+='&';}_0x584ac9+=_0x4a8a51[_0x4b1ed7]+'='+encodeURIComponent(_0x13a8e8[_0x4a8a51[_0x4b1ed7]]);_0x1012dd+=_0x13a8e8[_0x4a8a51[_0x4b1ed7]];}_0x1012dd+=_0x566589[_0xf6f7('0x59')];_0x1012dd=_0x5f125d[_0xf6f7('0x5d')]('md5')[_0xf6f7('0x17')](_0x1012dd)[_0xf6f7('0x5e')](_0xf6f7('0x5f'));if(_0x584ac9!==''){_0x584ac9+='&';}_0x584ac9+='signature='+_0x1012dd;var _0x4931d6={'method':'GET','uri':_0x566589[_0xf6f7('0x52')]+_0xf6f7('0x60')+_0x584ac9,'json':!![]};return rp(_0x4931d6)[_0xf6f7('0x16')](function(_0x27c118){var _0x31ca78=Object[_0xf6f7('0x61')](_0x27c118);if(_0x27c118[_0x31ca78[0x0]]['error']&&parseInt(_0x27c118[_0x31ca78[0x0]]['error'])===0x0){var _0xda22d2={'messageId':_0x27c118[_0x31ca78[0x0]][_0xf6f7('0x62')]};if(!_0x566589['deliveryReport']){_0xda22d2['read']=!![];}return _0x13cf44[_0xf6f7('0x17')](_0xda22d2);}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x57'),util[_0xf6f7('0x29')](_0x27c118['error'],{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x3bba6c){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'csc',util[_0xf6f7('0x29')](_0x3bba6c,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),_0xf6f7('0x57'),_0xf6f7('0x63'));}break;case _0xf6f7('0x64'):if(_0x566589[_0xf6f7('0x59')]){var _0x1cf3a5={'method':_0xf6f7('0x35'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x566589[_0xf6f7('0x59')]},'body':{'content':_0x43082f['body'],'to':[_0x43082f['phone']],'from':_0x566589[_0xf6f7('0x22')],'binary':![],'clientMessageId':_0xf6f7('0x65'),'charset':_0xf6f7('0x66')},'json':!![]};rp(_0x1cf3a5)['then'](function(_0x111b47){if(!_0x111b47[_0xf6f7('0x19')]){var _0x40c872={'messageId':_0x111b47[_0xf6f7('0x23')][0x0][_0xf6f7('0x67')]};if(!_0x566589[_0xf6f7('0x3a')]){_0x40c872[_0xf6f7('0x3f')]=!![];}return _0x13cf44[_0xf6f7('0x17')](_0x40c872);}else{return logger[_0xf6f7('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf6f7('0x64'),util[_0xf6f7('0x29')](_0x111b47[_0xf6f7('0x19')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x296223){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x64'),util[_0xf6f7('0x29')](_0x296223,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate',_0xf6f7('0x64'),_0xf6f7('0x63'));}break;case'bandwidth':if(_0x566589['username']&&_0x566589[_0xf6f7('0x2f')]){var _0x5bd8f7=util['format']('%s:%s',_0x566589[_0xf6f7('0x2e')],_0x566589[_0xf6f7('0x2f')]);var _0x5299eb={'method':_0xf6f7('0x35'),'uri':_0xf6f7('0x68')+_0x566589[_0xf6f7('0x69')]+_0xf6f7('0x6a'),'body':{'to':[_0x43082f[_0xf6f7('0x22')]],'text':_0x43082f[_0xf6f7('0xd')],'from':_0x566589[_0xf6f7('0x22')],'applicationId':_0x566589[_0xf6f7('0x6b')]},'headers':{'Authorization':util[_0xf6f7('0x42')]('Basic\x20%s',new Buffer(_0x5bd8f7)[_0xf6f7('0x45')](_0xf6f7('0x4f')))},'json':!![]};rp(_0x5299eb)['then'](function(_0x39f210){if(_0x39f210['id']){var _0x14a319={'messageId':_0x39f210['id']};return _0x13cf44[_0xf6f7('0x17')](_0x14a319);}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'bandwidth',util[_0xf6f7('0x29')](_0x39f210,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x89b8c){logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x6c'),util['inspect'](_0x89b8c,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate',_0xf6f7('0x6c'),_0xf6f7('0x3b'));}break;case'intelepeer':if(_0x566589[_0xf6f7('0x59')]){var _0x54f9a6={};var _0x4931d6={'method':'POST','uri':_0xf6f7('0x6d'),'headers':{'Authorization':_0xf6f7('0x6e')+_0x566589[_0xf6f7('0x59')],'Content-Type':'application/json'},'body':{'from':_0x566589[_0xf6f7('0x22')],'to':_0x43082f[_0xf6f7('0x22')],'text':_0x43082f[_0xf6f7('0xd')]},'json':!![]};return rp(_0x4931d6)[_0xf6f7('0x16')](function(_0x3425b6){if(_0x3425b6[_0xf6f7('0x6f')]==0xca){_0x54f9a6[_0xf6f7('0x70')]=_0x3425b6;var _0x2913c4={'method':_0xf6f7('0x35'),'uri':_0xf6f7('0x71'),'headers':{'Authorization':_0xf6f7('0x6e')+_0x566589[_0xf6f7('0x59')],'Content-Type':_0xf6f7('0x55')},'body':{'refid':_0x54f9a6['message'][_0xf6f7('0x72')]},'json':!![]};return rp(_0x2913c4)['then'](function(_0x6ea343){_0x54f9a6['status']=_0x6ea343;var _0x4a5f00={'messageId':_0x54f9a6['message'][_0xf6f7('0x72')],'read':!![]};return _0x13cf44[_0xf6f7('0x17')](_0x4a5f00);});}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'intelepeer',util[_0xf6f7('0x29')](_0x3425b6,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x4ec6dd){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate',_0xf6f7('0x73'),util[_0xf6f7('0x29')](_0x4ec6dd,{'showHidden':![],'depth':null}));});}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x73'),_0xf6f7('0x74'));}break;}}})[_0xf6f7('0x75')](function(){_0x4de365();});}else{_0x4de365();}}},'charset':_0xf6f7('0x76'),'collate':_0xf6f7('0x77')});};
\ No newline at end of file
+var _0x9b9b=['%s:%s','message_uuid','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','timestamp','keys','length','createHash','md5','digest','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','bandwidth','intelepeer','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','Token\x20not\x20received','utf8mb4_unicode_ci','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','models','get','toLowerCase','direction','out','secret','isNil','findOne','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','username','body','smsMethod','sender','login?username=','password','GET','split','sms','POST','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','message_id','clickSend','plivo','authId','/api/sms/messages/'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9b9b,0x114));var _0xb9b9=function(_0x3add96,_0x1e76f8){_0x3add96=_0x3add96-0x0;var _0x2f43fb=_0x9b9b[_0x3add96];return _0x2f43fb;};'use strict';var _=require('lodash');var util=require(_0xb9b9('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xb9b9('0x1'));var BPromise=require(_0xb9b9('0x2'));var rp=require(_0xb9b9('0x3'));var fs=require('fs');var path=require(_0xb9b9('0x4'));var rimraf=require(_0xb9b9('0x5'));var config=require(_0xb9b9('0x6'));var attributes=require(_0xb9b9('0x7'));module[_0xb9b9('0x8')]=function(_0x79dd,_0x3d1a95){return _0x79dd[_0xb9b9('0x9')](_0xb9b9('0xa'),attributes,{'tableName':_0xb9b9('0xb'),'paranoid':![],'indexes':[{'name':_0xb9b9('0xc'),'fields':[_0xb9b9('0xc')]},{'name':_0xb9b9('0xd'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2f6ff1,_0x139301,_0x127d29){var _0x47fe6d=_0x79dd[_0xb9b9('0xe')];var _0x3b6bb9=_0x2f6ff1[_0xb9b9('0xf')]({'plain':!![]});if(_0x3b6bb9['direction'][_0xb9b9('0x10')]()==='in'||_0x3b6bb9[_0xb9b9('0x11')][_0xb9b9('0x10')]()===_0xb9b9('0x12')&&!_0x3b6bb9[_0xb9b9('0x13')]&&!_[_0xb9b9('0x14')](_0x3b6bb9['UserId'])){_0x47fe6d['SmsInteraction'][_0xb9b9('0x15')]({'where':{'id':_0x3b6bb9['SmsInteractionId']}})[_0xb9b9('0x16')](function(_0x50e5d6){if(_0x50e5d6){_0x50e5d6[_0xb9b9('0x17')]({'lastMsgAt':_0x3b6bb9[_0xb9b9('0x18')],'lastMsgDirection':_0x3b6bb9[_0xb9b9('0x11')][_0xb9b9('0x10')]()});}})[_0xb9b9('0x19')](function(_0x3fd09c){console[_0xb9b9('0x1a')](_0x3fd09c);});}if(_0x3b6bb9[_0xb9b9('0x11')]==='out'&&!_0x3b6bb9[_0xb9b9('0x13')]){var _0x48d9ae;_0x47fe6d[_0xb9b9('0x1b')][_0xb9b9('0x1c')]({'where':{'id':_0x3b6bb9[_0xb9b9('0x1d')]},'raw':!![]})[_0xb9b9('0x16')](function(_0x49b412){_0x48d9ae=_0x49b412;if(_0x48d9ae&&_0x48d9ae[_0xb9b9('0x1e')]){switch(_0x48d9ae[_0xb9b9('0x1e')]){case _0xb9b9('0x1f'):var _0xb01198=require(_0xb9b9('0x1f'));if(_0x48d9ae[_0xb9b9('0x20')]&&_0x48d9ae[_0xb9b9('0x21')]&&_0x48d9ae[_0xb9b9('0x22')]){var _0xb16391=new _0xb01198(_0x48d9ae[_0xb9b9('0x20')],_0x48d9ae[_0xb9b9('0x21')]);_0xb16391[_0xb9b9('0x23')][_0xb9b9('0x24')]({'body':_0x3b6bb9['body'],'to':_0x3b6bb9[_0xb9b9('0x22')],'from':_0x48d9ae[_0xb9b9('0x22')],'statusCallback':_0x48d9ae[_0xb9b9('0x25')]+'/api/sms/messages/'+_0x3b6bb9['id']+_0xb9b9('0x26')+_0x48d9ae[_0xb9b9('0x27')]})['then'](function(_0x18e2ca){if(_0x18e2ca[_0xb9b9('0x28')]){return _0x2f6ff1[_0xb9b9('0x17')]({'messageId':_0x18e2ca[_0xb9b9('0x28')]});}})[_0xb9b9('0x19')](function(_0x5299fb){logger['error'](_0xb9b9('0x29'),_0xb9b9('0x2a'),'twilio',util[_0xb9b9('0x2b')](_0x5299fb,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xb9b9('0x2c'):var _0x554850=_0xb9b9('0x2d');if(_0x48d9ae[_0xb9b9('0x2e')]&&_0x48d9ae['password']){var _0x1b53e1={'recipient':[_0x3b6bb9[_0xb9b9('0x22')]],'message':_0x3b6bb9[_0xb9b9('0x2f')],'message_type':_0x48d9ae['smsMethod']};if(_0x48d9ae[_0xb9b9('0x30')]&&_0x48d9ae[_0xb9b9('0x30')]!=='SI'){_0x1b53e1[_0xb9b9('0x31')]=_0x48d9ae[_0xb9b9('0x22')];}var _0xd8de61={'url':_0x554850+_0xb9b9('0x32')+_0x48d9ae[_0xb9b9('0x2e')]+'&password='+_0x48d9ae[_0xb9b9('0x33')],'method':_0xb9b9('0x34')};rp(_0xd8de61)[_0xb9b9('0x16')](function(_0xc47845){var _0x5a7f6d=_0xc47845[_0xb9b9('0x35')](';');var _0x1bcac4={'user_key':_0x5a7f6d[0x0],'session_key':_0x5a7f6d[0x1]};_0xd8de61={'url':_0x554850+_0xb9b9('0x36'),'method':_0xb9b9('0x37'),'headers':{'user_key':_0x1bcac4['user_key'],'Session_key':_0x1bcac4[_0xb9b9('0x38')]},'json':!![],'body':_0x1b53e1};return rp(_0xd8de61);})[_0xb9b9('0x16')](function(_0x532fa4){if(_0x532fa4[_0xb9b9('0x39')]>=0x1){var _0x12679d={'messageId':_0x532fa4[_0xb9b9('0x3a')]};if(_0x48d9ae[_0xb9b9('0x30')]!=='GP'||!_0x48d9ae[_0xb9b9('0x3b')]){_0x12679d[_0xb9b9('0x3c')]=!![];}return _0x2f6ff1['update'](_0x12679d);}else{return logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),'afterCreate',_0xb9b9('0x2c'),util[_0xb9b9('0x2b')](_0x532fa4,{'showHidden':![],'depth':null}));}})[_0xb9b9('0x19')](function(_0x5837c0){return logger[_0xb9b9('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),'skebby',util[_0xb9b9('0x2b')](_0x5837c0,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x2c'),_0xb9b9('0x3d'));}break;case _0xb9b9('0x3e'):if(_0x48d9ae['authToken']){var _0xe6c3d2={'recipient':_0x3b6bb9[_0xb9b9('0x22')],'message':_0x3b6bb9[_0xb9b9('0x2f')],'sender':_0x48d9ae[_0xb9b9('0x3f')]||_0x48d9ae['phone'],'authorization':_0x48d9ae[_0xb9b9('0x21')]};var _0x139301={'method':_0xb9b9('0x37'),'uri':_0xb9b9('0x40'),'body':_0xe6c3d2,'json':!![]};rp(_0x139301)[_0xb9b9('0x16')](function(_0x21c1e4){var _0x46abe7={'messageId':_0x21c1e4[_0xb9b9('0x41')]};if(!_0x48d9ae[_0xb9b9('0x3b')]){_0x46abe7[_0xb9b9('0x3c')]=!![];}return _0x2f6ff1[_0xb9b9('0x17')](_0x46abe7);})[_0xb9b9('0x19')](function(_0x56b72c){logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x3e'),util[_0xb9b9('0x2b')](_0x56b72c,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x3e'),_0xb9b9('0x42'));}break;case'clicksend':if(_0x48d9ae[_0xb9b9('0x2e')]&&_0x48d9ae[_0xb9b9('0x33')]){var _0xe6c3d2={'messages':[{'source':_0xb9b9('0x43'),'to':_0x3b6bb9['phone'],'body':_0x3b6bb9[_0xb9b9('0x2f')],'from':_0x48d9ae['senderString']||_0x48d9ae['phone']}]};var _0x5312a7=util[_0xb9b9('0x44')]('%s:%s',_0x48d9ae['username'],_0x48d9ae[_0xb9b9('0x33')]);var _0x139301={'method':_0xb9b9('0x37'),'uri':_0xb9b9('0x45'),'body':_0xe6c3d2,'headers':{'Authorization':util['format'](_0xb9b9('0x46'),new Buffer(_0x5312a7)[_0xb9b9('0x47')](_0xb9b9('0x48')))},'json':!![]};rp(_0x139301)['then'](function(_0x58ddb5){if(_0x58ddb5[_0xb9b9('0x49')]>=0xc8&&_0x58ddb5['http_code']<=0xce){if(_0x58ddb5[_0xb9b9('0x4a')]&&_0x58ddb5[_0xb9b9('0x4a')][_0xb9b9('0x4b')]>0x0){var _0x2bf6f9=_['head'](_0x58ddb5[_0xb9b9('0x4a')][_0xb9b9('0x23')]);var _0x3ba768={'messageId':_0x2bf6f9[_0xb9b9('0x4c')]};if(!_0x48d9ae[_0xb9b9('0x3b')]){_0x3ba768[_0xb9b9('0x3c')]=!![];}return _0x2f6ff1[_0xb9b9('0x17')](_0x3ba768);}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x4d'),util[_0xb9b9('0x2b')](_0x58ddb5,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xb9b9('0x29'),'afterCreate',_0xb9b9('0x4d'),util[_0xb9b9('0x2b')](_0x58ddb5,{'showHidden':![],'depth':null}));}})[_0xb9b9('0x19')](function(_0x1ad24d){logger['error'](_0xb9b9('0x29'),'afterCreate',_0xb9b9('0x4d'),util[_0xb9b9('0x2b')](_0x1ad24d,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x4d'),_0xb9b9('0x3d'));}break;case _0xb9b9('0x4e'):if(_0x48d9ae[_0xb9b9('0x4f')]&&_0x48d9ae[_0xb9b9('0x21')]){var _0xe6c3d2={'dst':_0x3b6bb9['phone'],'text':_0x3b6bb9['body'],'src':_0x48d9ae['senderString']||_0x48d9ae[_0xb9b9('0x22')],'url':_0x48d9ae['remote']+_0xb9b9('0x50')+_0x3b6bb9['id']+_0xb9b9('0x26')+_0x48d9ae[_0xb9b9('0x27')]};var _0x5312a7=util['format'](_0xb9b9('0x51'),_0x48d9ae[_0xb9b9('0x4f')],_0x48d9ae['authToken']);var _0x139301={'method':_0xb9b9('0x37'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0x48d9ae[_0xb9b9('0x4f')]),'body':_0xe6c3d2,'headers':{'Authorization':util[_0xb9b9('0x44')](_0xb9b9('0x46'),new Buffer(_0x5312a7)['toString'](_0xb9b9('0x48')))},'json':!![]};rp(_0x139301)[_0xb9b9('0x16')](function(_0x49de1c){var _0x17b032={'messageId':_0x49de1c[_0xb9b9('0x52')][0x0]};return _0x2f6ff1[_0xb9b9('0x17')](_0x17b032);})[_0xb9b9('0x19')](function(_0x56ec47){logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),'plivo',util[_0xb9b9('0x2b')](_0x56ec47,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x4e'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x48d9ae[_0xb9b9('0x2e')]&&_0x48d9ae[_0xb9b9('0x33')]){if(_0x48d9ae[_0xb9b9('0x53')]){var _0x35b6a3={'method':_0xb9b9('0x37'),'uri':_0x48d9ae['baseUrl']+_0xb9b9('0x54'),'body':{'username':_0x48d9ae[_0xb9b9('0x2e')],'password':_0x48d9ae[_0xb9b9('0x33')]},'json':!![]};return rp(_0x35b6a3)[_0xb9b9('0x16')](function(_0x3c4bfd){var _0x4facf2={'method':_0xb9b9('0x37'),'uri':_0x48d9ae[_0xb9b9('0x53')]+_0xb9b9('0x55'),'body':{'messages':[{'from':_0x48d9ae[_0xb9b9('0x22')],'destinations':[{'to':_0x3b6bb9['phone']}],'text':_0x3b6bb9[_0xb9b9('0x2f')],'notifyUrl':_0x48d9ae['remote']+_0xb9b9('0x50')+_0x3b6bb9['id']+_0xb9b9('0x26')+_0x48d9ae[_0xb9b9('0x27')],'notifyContentType':_0xb9b9('0x56'),'callbackData':_0x48d9ae[_0xb9b9('0x22')]+';'+_0x3b6bb9[_0xb9b9('0x2f')]}]},'headers':{'Authorization':_0xb9b9('0x57')+_0x3c4bfd[_0xb9b9('0x27')]},'json':!![]};return rp(_0x4facf2)[_0xb9b9('0x16')](function(_0x13add3){if(_0x13add3['messages']){var _0xac7b51={'messageId':_0x13add3[_0xb9b9('0x23')][0x0][_0xb9b9('0xc')]};if(!_0x48d9ae['deliveryReport']){_0xac7b51[_0xb9b9('0x3c')]=!![];}return _0x2f6ff1[_0xb9b9('0x17')](_0xac7b51);}else{return logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x58'),util['inspect'](_0x13add3,{'showHidden':![],'depth':null}));}});})[_0xb9b9('0x19')](function(_0x30d113){return logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x58'),util[_0xb9b9('0x2b')](_0x30d113,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),_0xb9b9('0x58'),_0xb9b9('0x59'));}}else{logger['error'](_0xb9b9('0x29'),_0xb9b9('0x2a'),'infobip',_0xb9b9('0x3d'));}break;case _0xb9b9('0x5a'):var _0x34d7e0=require(_0xb9b9('0x5b'));if(_0x48d9ae[_0xb9b9('0x5c')]){var _0x4715d3={};_0x4715d3['login']=_0x48d9ae[_0xb9b9('0x2e')];_0x4715d3[_0xb9b9('0x22')]=_0x3b6bb9[_0xb9b9('0x22')];_0x4715d3[_0xb9b9('0x31')]=_0x48d9ae[_0xb9b9('0x22')];_0x4715d3['text']=_0x3b6bb9['body'];_0x4715d3[_0xb9b9('0x5d')]=+new Date();var _0x34b138='';var _0x171ebc='';var _0x53159a=Object[_0xb9b9('0x5e')](_0x4715d3);_0x53159a['sort']();for(var _0x506e20=0x0;_0x506e20<_0x53159a[_0xb9b9('0x5f')];_0x506e20++){if(_0x34b138!=''){_0x34b138+='&';}_0x34b138+=_0x53159a[_0x506e20]+'='+encodeURIComponent(_0x4715d3[_0x53159a[_0x506e20]]);_0x171ebc+=_0x4715d3[_0x53159a[_0x506e20]];}_0x171ebc+=_0x48d9ae[_0xb9b9('0x5c')];_0x171ebc=_0x34d7e0[_0xb9b9('0x60')](_0xb9b9('0x61'))[_0xb9b9('0x17')](_0x171ebc)[_0xb9b9('0x62')]('hex');if(_0x34b138!==''){_0x34b138+='&';}_0x34b138+='signature='+_0x171ebc;var _0xd8de61={'method':'GET','uri':_0x48d9ae['baseUrl']+_0xb9b9('0x63')+_0x34b138,'json':!![]};return rp(_0xd8de61)[_0xb9b9('0x16')](function(_0x273598){var _0xa940e2=Object[_0xb9b9('0x5e')](_0x273598);if(_0x273598[_0xa940e2[0x0]][_0xb9b9('0x1a')]&&parseInt(_0x273598[_0xa940e2[0x0]][_0xb9b9('0x1a')])===0x0){var _0x4c88f0={'messageId':_0x273598[_0xa940e2[0x0]][_0xb9b9('0x64')]};if(!_0x48d9ae[_0xb9b9('0x3b')]){_0x4c88f0[_0xb9b9('0x3c')]=!![];}return _0x2f6ff1[_0xb9b9('0x17')](_0x4c88f0);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),_0xb9b9('0x5a'),util[_0xb9b9('0x2b')](_0x273598[_0xb9b9('0x1a')],{'showHidden':![],'depth':null}));}})[_0xb9b9('0x19')](function(_0x4d7eac){return logger['error'](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x5a'),util[_0xb9b9('0x2b')](_0x4d7eac,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),_0xb9b9('0x5a'),_0xb9b9('0x65'));}break;case _0xb9b9('0x66'):if(_0x48d9ae[_0xb9b9('0x5c')]){var _0x48a3a7={'method':'POST','uri':_0xb9b9('0x67'),'headers':{'Authorization':_0x48d9ae[_0xb9b9('0x5c')]},'body':{'content':_0x3b6bb9[_0xb9b9('0x2f')],'to':[_0x3b6bb9[_0xb9b9('0x22')]],'from':_0x48d9ae['phone'],'binary':![],'clientMessageId':_0xb9b9('0x68'),'charset':_0xb9b9('0x69')},'json':!![]};rp(_0x48a3a7)[_0xb9b9('0x16')](function(_0x2f0a8e){if(!_0x2f0a8e['error']){var _0x3f4f17={'messageId':_0x2f0a8e[_0xb9b9('0x23')][0x0]['apiMessageId']};if(!_0x48d9ae[_0xb9b9('0x3b')]){_0x3f4f17[_0xb9b9('0x3c')]=!![];}return _0x2f6ff1['update'](_0x3f4f17);}else{return logger[_0xb9b9('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),'clickatell',util['inspect'](_0x2f0a8e[_0xb9b9('0x1a')],{'showHidden':![],'depth':null}));}})[_0xb9b9('0x19')](function(_0x1fdac5){return logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x66'),util[_0xb9b9('0x2b')](_0x1fdac5,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),'clickatell','Missing\x20parameters:\x20apiKey');}break;case'bandwidth':if(_0x48d9ae[_0xb9b9('0x2e')]&&_0x48d9ae['password']){var _0x5312a7=util[_0xb9b9('0x44')]('%s:%s',_0x48d9ae[_0xb9b9('0x2e')],_0x48d9ae[_0xb9b9('0x33')]);var _0x139301={'method':'POST','uri':_0xb9b9('0x6a')+_0x48d9ae['accountId']+_0xb9b9('0x6b'),'body':{'to':[_0x3b6bb9[_0xb9b9('0x22')]],'text':_0x3b6bb9['body'],'from':_0x48d9ae[_0xb9b9('0x22')],'applicationId':_0x48d9ae[_0xb9b9('0x6c')]},'headers':{'Authorization':util[_0xb9b9('0x44')](_0xb9b9('0x46'),new Buffer(_0x5312a7)[_0xb9b9('0x47')]('base64'))},'json':!![]};rp(_0x139301)[_0xb9b9('0x16')](function(_0x34737a){if(_0x34737a['id']){var _0x34c424={'messageId':_0x34737a['id']};return _0x2f6ff1['update'](_0x34c424);}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x6d'),util['inspect'](_0x34737a,{'showHidden':![],'depth':null}));}})[_0xb9b9('0x19')](function(_0x1c6b69){logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),'bandwidth',util['inspect'](_0x1c6b69,{'showHidden':![],'depth':null}));});}else{logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x6d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb9b9('0x6e'):if(_0x48d9ae['apiKey']){var _0x4e9283={};var _0xd8de61={'method':_0xb9b9('0x37'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x48d9ae['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x48d9ae[_0xb9b9('0x22')],'to':_0x3b6bb9[_0xb9b9('0x22')],'text':_0x3b6bb9['body']},'json':!![]};return rp(_0xd8de61)[_0xb9b9('0x16')](function(_0x5921ee){if(_0x5921ee[_0xb9b9('0x6f')]==0xca){_0x4e9283[_0xb9b9('0x70')]=_0x5921ee;var _0xa84c14={'method':_0xb9b9('0x37'),'uri':_0xb9b9('0x71'),'headers':{'Authorization':_0xb9b9('0x72')+_0x48d9ae[_0xb9b9('0x5c')],'Content-Type':_0xb9b9('0x56')},'body':{'refid':_0x4e9283[_0xb9b9('0x70')][_0xb9b9('0x73')]},'json':!![]};return rp(_0xa84c14)[_0xb9b9('0x16')](function(_0x26c1e7){_0x4e9283[_0xb9b9('0x74')]=_0x26c1e7;var _0x4586d5={'messageId':_0x4e9283[_0xb9b9('0x70')][_0xb9b9('0x73')],'read':!![]};return _0x2f6ff1[_0xb9b9('0x17')](_0x4586d5);});}else{return logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x6e'),util[_0xb9b9('0x2b')](_0x5921ee,{'showHidden':![],'depth':null}));}})[_0xb9b9('0x19')](function(_0x902170){return logger[_0xb9b9('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb9b9('0x2a'),_0xb9b9('0x6e'),util[_0xb9b9('0x2b')](_0x902170,{'showHidden':![],'depth':null}));});}else{return logger[_0xb9b9('0x1a')](_0xb9b9('0x29'),_0xb9b9('0x2a'),_0xb9b9('0x6e'),_0xb9b9('0x75'));}break;}}})['finally'](function(){_0x127d29();});}else{_0x127d29();}}},'charset':'utf8mb4','collate':_0xb9b9('0x76')});};
\ No newline at end of file
index 846d5c7..a94df41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2627=['info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','body','options','raw','lodash','moment','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then'];(function(_0x38d657,_0x3522a1){var _0x1de063=function(_0x3354be){while(--_0x3354be){_0x38d657['push'](_0x38d657['shift']());}};_0x1de063(++_0x3522a1);}(_0x2627,0x1be));var _0x7262=function(_0x26ecf1,_0x2a40d5){_0x26ecf1=_0x26ecf1-0x0;var _0x276c07=_0x2627[_0x26ecf1];return _0x276c07;};'use strict';var _=require(_0x7262('0x0'));var util=require('util');var moment=require(_0x7262('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7262('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x7262('0x3'));var logger=require('../../config/logger')(_0x7262('0x4'));var config=require('../../config/environment');var jayson=require(_0x7262('0x5'));var client=jayson[_0x7262('0x6')][_0x7262('0x7')]({'port':0x232a});config[_0x7262('0x8')]=_['defaults'](config['redis'],{'host':_0x7262('0x9'),'port':0x18eb});var socket=require(_0x7262('0xa'))(new Redis(config['redis']));require('./smsMessage.socket')[_0x7262('0xb')](socket);function respondWithRpcPromise(_0x476c0f,_0x2b8762,_0x1f145b){return new BPromise(function(_0x1578cb,_0x9dd2a1){return client['request'](_0x476c0f,_0x1f145b)[_0x7262('0xc')](function(_0x20d890){logger[_0x7262('0xd')]('SmsMessage,\x20%s,\x20%s',_0x2b8762,_0x7262('0xe'));logger[_0x7262('0xf')](_0x7262('0x10'),_0x2b8762,_0x7262('0xe'),JSON[_0x7262('0x11')](_0x20d890));if(_0x20d890[_0x7262('0x12')]){if(_0x20d890[_0x7262('0x12')]['code']===0x1f4){logger[_0x7262('0x12')](_0x7262('0x13'),_0x2b8762,_0x20d890[_0x7262('0x12')]['message']);return _0x9dd2a1(_0x20d890[_0x7262('0x12')]['message']);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x2b8762,_0x20d890[_0x7262('0x12')]['message']);return _0x1578cb(_0x20d890['error'][_0x7262('0x14')]);}else{logger[_0x7262('0xd')]('SmsMessage,\x20%s,\x20%s',_0x2b8762,_0x7262('0xe'));_0x1578cb(_0x20d890[_0x7262('0x15')][_0x7262('0x14')]);}})[_0x7262('0x16')](function(_0x5f0552){logger['error'](_0x7262('0x13'),_0x2b8762,_0x5f0552);_0x9dd2a1(_0x5f0552);});});}exports[_0x7262('0x17')]=function(_0x4c255d){var _0x162946=this;return new Promise(function(_0x4467e3,_0x3b3568){return db['SmsMessage']['create'](_0x4c255d[_0x7262('0x18')],{'raw':_0x4c255d[_0x7262('0x19')]?_0x4c255d['options'][_0x7262('0x1a')]===undefined?!![]:![]:!![]})[_0x7262('0xc')](function(_0xd51b9f){logger[_0x7262('0xd')](_0x7262('0x17'),_0x4c255d);logger[_0x7262('0xf')](_0x7262('0x17'),_0x4c255d,JSON['stringify'](_0xd51b9f));_0x4467e3(_0xd51b9f);})[_0x7262('0x16')](function(_0x42c7d1){logger[_0x7262('0x12')](_0x7262('0x17'),_0x42c7d1[_0x7262('0x14')],_0x4c255d);_0x3b3568(_0x162946[_0x7262('0x12')](0x1f4,_0x42c7d1[_0x7262('0x14')]));});});};
\ No newline at end of file
+var _0xd711=['SmsMessage,\x20%s,\x20%s','result','catch','CreateSmsMessage','SmsMessage','body','options','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','request','then','info','request\x20sent','debug','stringify','error','code','message'];(function(_0x52d757,_0x2fb857){var _0x189f9a=function(_0x3995e6){while(--_0x3995e6){_0x52d757['push'](_0x52d757['shift']());}};_0x189f9a(++_0x2fb857);}(_0xd711,0x13b));var _0x1d71=function(_0x19b03d,_0x11b94e){_0x19b03d=_0x19b03d-0x0;var _0x31796f=_0xd711[_0x19b03d];return _0x31796f;};'use strict';var _=require(_0x1d71('0x0'));var util=require(_0x1d71('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1d71('0x2'));var fs=require('fs');var Redis=require(_0x1d71('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d71('0x4'));var logger=require(_0x1d71('0x5'))(_0x1d71('0x6'));var config=require(_0x1d71('0x7'));var jayson=require(_0x1d71('0x8'));var client=jayson[_0x1d71('0x9')]['http']({'port':0x232a});config[_0x1d71('0xa')]=_['defaults'](config[_0x1d71('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x1d71('0xb'))(new Redis(config['redis']));require('./smsMessage.socket')['register'](socket);function respondWithRpcPromise(_0x39f431,_0xf6786d,_0x4142da){return new BPromise(function(_0xd5472a,_0x25a8cd){return client[_0x1d71('0xc')](_0x39f431,_0x4142da)[_0x1d71('0xd')](function(_0x25ab98){logger[_0x1d71('0xe')]('SmsMessage,\x20%s,\x20%s',_0xf6786d,_0x1d71('0xf'));logger[_0x1d71('0x10')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6786d,_0x1d71('0xf'),JSON[_0x1d71('0x11')](_0x25ab98));if(_0x25ab98[_0x1d71('0x12')]){if(_0x25ab98['error'][_0x1d71('0x13')]===0x1f4){logger[_0x1d71('0x12')]('SmsMessage,\x20%s,\x20%s',_0xf6786d,_0x25ab98[_0x1d71('0x12')][_0x1d71('0x14')]);return _0x25a8cd(_0x25ab98[_0x1d71('0x12')][_0x1d71('0x14')]);}logger[_0x1d71('0x12')](_0x1d71('0x15'),_0xf6786d,_0x25ab98[_0x1d71('0x12')][_0x1d71('0x14')]);return _0xd5472a(_0x25ab98[_0x1d71('0x12')][_0x1d71('0x14')]);}else{logger[_0x1d71('0xe')]('SmsMessage,\x20%s,\x20%s',_0xf6786d,'request\x20sent');_0xd5472a(_0x25ab98[_0x1d71('0x16')]['message']);}})[_0x1d71('0x17')](function(_0x259a0b){logger['error'](_0x1d71('0x15'),_0xf6786d,_0x259a0b);_0x25a8cd(_0x259a0b);});});}exports[_0x1d71('0x18')]=function(_0x3679ee){var _0x513e1e=this;return new Promise(function(_0x429f1f,_0x24678a){return db[_0x1d71('0x19')]['create'](_0x3679ee[_0x1d71('0x1a')],{'raw':_0x3679ee[_0x1d71('0x1b')]?_0x3679ee[_0x1d71('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3639a7){logger[_0x1d71('0xe')](_0x1d71('0x18'),_0x3679ee);logger[_0x1d71('0x10')](_0x1d71('0x18'),_0x3679ee,JSON[_0x1d71('0x11')](_0x3639a7));_0x429f1f(_0x3639a7);})[_0x1d71('0x17')](function(_0xf1cb6d){logger[_0x1d71('0x12')](_0x1d71('0x18'),_0xf1cb6d[_0x1d71('0x14')],_0x3679ee);_0x24678a(_0x513e1e[_0x1d71('0x12')](0x1f4,_0xf1cb6d['message']));});});};
\ No newline at end of file
index 4b4dd83..016710b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9d=['register','smsMessage:','./smsMessage.events','save','remove','update','emit'];(function(_0x44a784,_0x479da0){var _0x70d93a=function(_0x2774b8){while(--_0x2774b8){_0x44a784['push'](_0x44a784['shift']());}};_0x70d93a(++_0x479da0);}(_0x1c9d,0x144));var _0xd1c9=function(_0x5ce781,_0x736b15){_0x5ce781=_0x5ce781-0x0;var _0xa70499=_0x1c9d[_0x5ce781];return _0xa70499;};'use strict';var SmsMessageEvents=require(_0xd1c9('0x0'));var events=[_0xd1c9('0x1'),_0xd1c9('0x2'),_0xd1c9('0x3')];function createListener(_0x34d292,_0x36ab22){return function(_0x5afdd5){_0x36ab22[_0xd1c9('0x4')](_0x34d292,_0x5afdd5);};}function removeListener(_0x3e6957,_0x2f7e60){return function(){SmsMessageEvents['removeListener'](_0x3e6957,_0x2f7e60);};}exports[_0xd1c9('0x5')]=function(_0x76880f){for(var _0x407e4c=0x0,_0x15241d=events['length'];_0x407e4c<_0x15241d;_0x407e4c++){var _0x15fbf2=events[_0x407e4c];var _0x2961e8=createListener(_0xd1c9('0x6')+_0x15fbf2,_0x76880f);SmsMessageEvents['on'](_0x15fbf2,_0x2961e8);}};
\ No newline at end of file
+var _0xfa3e=['emit','removeListener','register','smsMessage:','save','remove','update'];(function(_0x4f1a10,_0x12477a){var _0x54a6d5=function(_0xb42015){while(--_0xb42015){_0x4f1a10['push'](_0x4f1a10['shift']());}};_0x54a6d5(++_0x12477a);}(_0xfa3e,0x177));var _0xefa3=function(_0x2ef969,_0x30e479){_0x2ef969=_0x2ef969-0x0;var _0x2a63e5=_0xfa3e[_0x2ef969];return _0x2a63e5;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xefa3('0x0'),_0xefa3('0x1'),_0xefa3('0x2')];function createListener(_0x59f586,_0x43392f){return function(_0x3feee1){_0x43392f[_0xefa3('0x3')](_0x59f586,_0x3feee1);};}function removeListener(_0x550eb3,_0xcc58){return function(){SmsMessageEvents[_0xefa3('0x4')](_0x550eb3,_0xcc58);};}exports[_0xefa3('0x5')]=function(_0x4dbac6){for(var _0x2b369e=0x0,_0x5546b9=events['length'];_0x2b369e<_0x5546b9;_0x2b369e++){var _0x39a8a0=events[_0x2b369e];var _0x376801=createListener(_0xefa3('0x6')+_0x39a8a0,_0x4dbac6);SmsMessageEvents['on'](_0x39a8a0,_0x376801);}};
\ No newline at end of file
index 4a2df98..50371ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6286=['getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete','destroy','removeTeams','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6286,0x18b));var _0x6628=function(_0x573932,_0x112974){_0x573932=_0x573932-0x0;var _0xfd54b6=_0x6286[_0x573932];return _0xfd54b6;};'use strict';var multer=require(_0x6628('0x0'));var util=require(_0x6628('0x1'));var path=require(_0x6628('0x2'));var timeout=require(_0x6628('0x3'));var express=require(_0x6628('0x4'));var router=express[_0x6628('0x5')]();var fs_extra=require(_0x6628('0x6'));var auth=require(_0x6628('0x7'));var interaction=require(_0x6628('0x8'));var config=require(_0x6628('0x9'));var controller=require(_0x6628('0xa'));router['get']('/',auth[_0x6628('0xb')](),controller[_0x6628('0xc')]);router[_0x6628('0xd')](_0x6628('0xe'),auth['isAuthenticated'](),controller[_0x6628('0xf')]);router[_0x6628('0xd')](_0x6628('0x10'),auth[_0x6628('0xb')](),controller[_0x6628('0x11')]);router[_0x6628('0xd')](_0x6628('0x12'),auth[_0x6628('0xb')](),controller[_0x6628('0x13')]);router[_0x6628('0xd')](_0x6628('0x14'),auth[_0x6628('0xb')](),controller[_0x6628('0x15')]);router['get'](_0x6628('0x16'),auth[_0x6628('0xb')](),controller[_0x6628('0x17')]);router[_0x6628('0x18')]('/',auth['isAuthenticated'](),controller[_0x6628('0x19')]);router[_0x6628('0x18')](_0x6628('0x14'),auth['isAuthenticated'](),controller[_0x6628('0x1a')]);router[_0x6628('0x18')]('/:id/users',auth['isAuthenticated'](),controller[_0x6628('0x1b')]);router['put'](_0x6628('0x10'),auth[_0x6628('0xb')](),controller[_0x6628('0x1c')]);router[_0x6628('0x1d')](_0x6628('0x10'),auth[_0x6628('0xb')](),controller[_0x6628('0x1e')]);router[_0x6628('0x1d')](_0x6628('0x14'),auth[_0x6628('0xb')](),controller[_0x6628('0x1f')]);router[_0x6628('0x1d')](_0x6628('0x16'),auth[_0x6628('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x752b=['get','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','post','put','delete','removeTeams','removeAgents','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','isAuthenticated','index','describe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x752b,0xf2));var _0xb752=function(_0x15416b,_0x58f690){_0x15416b=_0x15416b-0x0;var _0x5d71f9=_0x752b[_0x15416b];return _0x5d71f9;};'use strict';var multer=require(_0xb752('0x0'));var util=require(_0xb752('0x1'));var path=require('path');var timeout=require(_0xb752('0x2'));var express=require('express');var router=express[_0xb752('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb752('0x4'));var interaction=require(_0xb752('0x5'));var config=require(_0xb752('0x6'));var controller=require(_0xb752('0x7'));router['get']('/',auth[_0xb752('0x8')](),controller[_0xb752('0x9')]);router['get']('/describe',auth[_0xb752('0x8')](),controller[_0xb752('0xa')]);router[_0xb752('0xb')](_0xb752('0xc'),auth[_0xb752('0x8')](),controller[_0xb752('0xd')]);router[_0xb752('0xb')]('/:id/members',auth[_0xb752('0x8')](),controller[_0xb752('0xe')]);router[_0xb752('0xb')](_0xb752('0xf'),auth[_0xb752('0x8')](),controller[_0xb752('0x10')]);router[_0xb752('0xb')](_0xb752('0x11'),auth[_0xb752('0x8')](),controller['getAgents']);router[_0xb752('0x12')]('/',auth[_0xb752('0x8')](),controller['create']);router[_0xb752('0x12')](_0xb752('0xf'),auth[_0xb752('0x8')](),controller['addTeams']);router[_0xb752('0x12')]('/:id/users',auth[_0xb752('0x8')](),controller['addAgents']);router[_0xb752('0x13')](_0xb752('0xc'),auth[_0xb752('0x8')](),controller['update']);router['delete']('/:id',auth[_0xb752('0x8')](),controller['destroy']);router[_0xb752('0x14')](_0xb752('0xf'),auth[_0xb752('0x8')](),controller[_0xb752('0x15')]);router['delete'](_0xb752('0x11'),auth[_0xb752('0x8')](),controller[_0xb752('0x16')]);module['exports']=router;
\ No newline at end of file
index cdd58dd..aaa2e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d9e=['roundrobin','sequelize','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x29982b,_0x594e0){var _0xb1f0a9=function(_0x3d824c){while(--_0x3d824c){_0x29982b['push'](_0x29982b['shift']());}};_0xb1f0a9(++_0x594e0);}(_0x8d9e,0x159));var _0xe8d9=function(_0x147007,_0x1f90b6){_0x147007=_0x147007-0x0;var _0x614f59=_0x8d9e[_0x147007];return _0x614f59;};'use strict';var Sequelize=require(_0xe8d9('0x0'));module['exports']={'name':{'type':Sequelize[_0xe8d9('0x1')],'unique':_0xe8d9('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe8d9('0x1')]},'timeout':{'type':Sequelize[_0xe8d9('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xe8d9('0x4')](_0xe8d9('0x5'),_0xe8d9('0x6'),_0xe8d9('0x7'))}};
\ No newline at end of file
+var _0xcb89=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','name','STRING'];(function(_0x338bcb,_0x2b1297){var _0x4d2b04=function(_0x39a5f0){while(--_0x39a5f0){_0x338bcb['push'](_0x338bcb['shift']());}};_0x4d2b04(++_0x2b1297);}(_0xcb89,0x10a));var _0x9cb8=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xcb89[_0x580647];return _0x5f0792;};'use strict';var Sequelize=require(_0x9cb8('0x0'));module[_0x9cb8('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9cb8('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9cb8('0x3')]},'timeout':{'type':Sequelize[_0x9cb8('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9cb8('0x5')](_0x9cb8('0x6'),_0x9cb8('0x7'),_0x9cb8('0x8'))}};
\ No newline at end of file
index a42ab46..620c52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2efb=['socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','SmsQueues','UserProfileResource','error','name','index','map','SmsQueue','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','getMembers','findOne','UserSmsQueue','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','Team','getTeams','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','clone','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','transaction','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','../../mysqldb','redis','defaults','localhost'];(function(_0x5edc94,_0xc509d){var _0x2972d9=function(_0xcbf897){while(--_0xcbf897){_0x5edc94['push'](_0x5edc94['shift']());}};_0x2972d9(++_0xc509d);}(_0x2efb,0x105));var _0xb2ef=function(_0x3b359f,_0xa25ad6){_0x3b359f=_0x3b359f-0x0;var _0x2f855b=_0x2efb[_0x3b359f];return _0x2f855b;};'use strict';var emlformat=require(_0xb2ef('0x0'));var rimraf=require(_0xb2ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb2ef('0x2'));var rp=require(_0xb2ef('0x3'));var moment=require(_0xb2ef('0x4'));var BPromise=require(_0xb2ef('0x5'));var Mustache=require(_0xb2ef('0x6'));var util=require(_0xb2ef('0x7'));var path=require(_0xb2ef('0x8'));var sox=require(_0xb2ef('0x9'));var csv=require(_0xb2ef('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb2ef('0xb'));var _=require('lodash');var squel=require(_0xb2ef('0xc'));var crypto=require(_0xb2ef('0xd'));var jsforce=require(_0xb2ef('0xe'));var deskjs=require(_0xb2ef('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb2ef('0x10'));var Redis=require(_0xb2ef('0x11'));var authService=require(_0xb2ef('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb2ef('0x13'));var hardwareService=require(_0xb2ef('0x14'));var logger=require(_0xb2ef('0x15'))(_0xb2ef('0x16'));var utils=require(_0xb2ef('0x17'));var config=require(_0xb2ef('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb2ef('0x19'))['db'];config[_0xb2ef('0x1a')]=_[_0xb2ef('0x1b')](config[_0xb2ef('0x1a')],{'host':_0xb2ef('0x1c'),'port':0x18eb});var socket=require(_0xb2ef('0x1d'))(new Redis(config['redis']));require(_0xb2ef('0x1e'))[_0xb2ef('0x1f')](socket);function respondWithStatusCode(_0x3c3012,_0x3b3970){_0x3b3970=_0x3b3970||0xcc;return function(_0x20048b){if(_0x20048b){return _0x3c3012[_0xb2ef('0x20')](_0x3b3970);}return _0x3c3012[_0xb2ef('0x21')](_0x3b3970)[_0xb2ef('0x22')]();};}function respondWithResult(_0x59c2cb,_0x38b29b){_0x38b29b=_0x38b29b||0xc8;return function(_0x299d82){if(_0x299d82){return _0x59c2cb['status'](_0x38b29b)[_0xb2ef('0x23')](_0x299d82);}};}function respondWithFilteredResult(_0x39be25,_0x265d3d){return function(_0x414eb7){if(_0x414eb7){var _0xcaa4c4=typeof _0x265d3d[_0xb2ef('0x24')]===_0xb2ef('0x25')&&typeof _0x265d3d[_0xb2ef('0x26')]===_0xb2ef('0x25');var _0x2f6fc8=_0x414eb7[_0xb2ef('0x27')];var _0x1191ef=_0xcaa4c4?0x0:_0x265d3d[_0xb2ef('0x24')];var _0x2276fb=_0xcaa4c4?_0x414eb7[_0xb2ef('0x27')]:_0x265d3d[_0xb2ef('0x24')]+_0x265d3d[_0xb2ef('0x26')];var _0x407c91;if(_0x2276fb>=_0x2f6fc8){_0x2276fb=_0x2f6fc8;_0x407c91=0xc8;}else{_0x407c91=0xce;}_0x39be25['status'](_0x407c91);return _0x39be25[_0xb2ef('0x28')](_0xb2ef('0x29'),_0x1191ef+'-'+_0x2276fb+'/'+_0x2f6fc8)[_0xb2ef('0x23')](_0x414eb7);}return null;};}function patchUpdates(_0x42cc41){return function(_0x52f135){try{jsonpatch[_0xb2ef('0x2a')](_0x52f135,_0x42cc41,!![]);}catch(_0x2cdc56){return BPromise['reject'](_0x2cdc56);}return _0x52f135[_0xb2ef('0x2b')]();};}function saveUpdates(_0x40b729,_0x2e83d5){return function(_0x4798d8){if(_0x4798d8){return _0x4798d8['update'](_0x40b729)[_0xb2ef('0x2c')](function(_0x4f82a2){return _0x4f82a2;});}return null;};}function removeEntity(_0x44a3c0,_0x2c8c62){return function(_0x67599c){if(_0x67599c){return _0x67599c[_0xb2ef('0x2d')]()[_0xb2ef('0x2c')](function(){var _0xd79071=_0x67599c[_0xb2ef('0x2e')]({'plain':!![]});var _0x332dee=_0xb2ef('0x2f');return db[_0xb2ef('0x30')]['destroy']({'where':{'type':_0x332dee,'resourceId':_0xd79071['id']}})[_0xb2ef('0x2c')](function(){return _0x67599c;});})['then'](function(){_0x44a3c0[_0xb2ef('0x21')](0xcc)[_0xb2ef('0x22')]();});}};}function handleEntityNotFound(_0x1ead7a,_0x2983fa){return function(_0x4913f5){if(!_0x4913f5){_0x1ead7a[_0xb2ef('0x20')](0x194);}return _0x4913f5;};}function handleError(_0x54b610,_0x1d1a16){_0x1d1a16=_0x1d1a16||0x1f4;return function(_0x1b4086){logger[_0xb2ef('0x31')](_0x1b4086['stack']);if(_0x1b4086[_0xb2ef('0x32')]){delete _0x1b4086[_0xb2ef('0x32')];}_0x54b610[_0xb2ef('0x21')](_0x1d1a16)['send'](_0x1b4086);};}exports[_0xb2ef('0x33')]=function(_0xefdf2a,_0x4a1f19){var _0x4ce10c={},_0x2766d6={},_0x54ad45={'count':0x0,'rows':[]};var _0xcf330e=_[_0xb2ef('0x34')](db[_0xb2ef('0x35')][_0xb2ef('0x36')],function(_0x43d4cb){return{'name':_0x43d4cb['fieldName'],'type':_0x43d4cb['type'][_0xb2ef('0x37')]};});_0x2766d6[_0xb2ef('0x38')]=_[_0xb2ef('0x34')](_0xcf330e,_0xb2ef('0x32'));_0x2766d6[_0xb2ef('0x39')]=_[_0xb2ef('0x3a')](_0xefdf2a[_0xb2ef('0x39')]);_0x2766d6[_0xb2ef('0x3b')]=_[_0xb2ef('0x3c')](_0x2766d6[_0xb2ef('0x38')],_0x2766d6[_0xb2ef('0x39')]);_0x4ce10c[_0xb2ef('0x3d')]=_['intersection'](_0x2766d6[_0xb2ef('0x38')],qs[_0xb2ef('0x3e')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x3e')]));_0x4ce10c[_0xb2ef('0x3d')]=_0x4ce10c[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x4ce10c[_0xb2ef('0x3d')]:_0x2766d6[_0xb2ef('0x38')];if(!_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x40')](_0xb2ef('0x41'))){_0x4ce10c[_0xb2ef('0x26')]=qs[_0xb2ef('0x26')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x26')]);_0x4ce10c[_0xb2ef('0x24')]=qs[_0xb2ef('0x24')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x24')]);}_0x4ce10c[_0xb2ef('0x42')]=qs[_0xb2ef('0x43')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x43')]);_0x4ce10c[_0xb2ef('0x44')]=qs[_0xb2ef('0x3b')](_[_0xb2ef('0x45')](_0xefdf2a[_0xb2ef('0x39')],_0x2766d6[_0xb2ef('0x3b')]),_0xcf330e);if(_0xefdf2a['query']['filter']){_0x4ce10c[_0xb2ef('0x44')]=_['merge'](_0x4ce10c['where'],{'$or':_[_0xb2ef('0x34')](_0xcf330e,function(_0x20ee6a){if(_0x20ee6a[_0xb2ef('0x46')]!==_0xb2ef('0x47')){var _0x464749={};_0x464749[_0x20ee6a[_0xb2ef('0x32')]]={'$like':'%'+_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x48')]+'%'};return _0x464749;}})});}_0x4ce10c=_[_0xb2ef('0x49')]({},_0x4ce10c,_0xefdf2a[_0xb2ef('0x4a')]);var _0x1926b9={'where':_0x4ce10c[_0xb2ef('0x44')]};return db['SmsQueue']['count'](_0x1926b9)['then'](function(_0x329a59){_0x54ad45[_0xb2ef('0x27')]=_0x329a59;if(_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x4b')]){_0x4ce10c[_0xb2ef('0x4c')]=[{'all':!![]}];}return db[_0xb2ef('0x35')][_0xb2ef('0x4d')](_0x4ce10c);})[_0xb2ef('0x2c')](function(_0x423c66){_0x54ad45[_0xb2ef('0x4e')]=_0x423c66;return _0x54ad45;})[_0xb2ef('0x2c')](respondWithFilteredResult(_0x4a1f19,_0x4ce10c))[_0xb2ef('0x4f')](handleError(_0x4a1f19,null));};exports[_0xb2ef('0x50')]=function(_0x46d79b,_0x7213bd){var _0x403c60={'raw':!![],'where':{'id':_0x46d79b['params']['id']}},_0xe18e60={};_0xe18e60[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x35')][_0xb2ef('0x36')]);_0xe18e60[_0xb2ef('0x39')]=_[_0xb2ef('0x3a')](_0x46d79b[_0xb2ef('0x39')]);_0xe18e60[_0xb2ef('0x3b')]=_[_0xb2ef('0x3c')](_0xe18e60[_0xb2ef('0x38')],_0xe18e60[_0xb2ef('0x39')]);_0x403c60['attributes']=_[_0xb2ef('0x3c')](_0xe18e60['model'],qs[_0xb2ef('0x3e')](_0x46d79b[_0xb2ef('0x39')][_0xb2ef('0x3e')]));_0x403c60[_0xb2ef('0x3d')]=_0x403c60[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x403c60[_0xb2ef('0x3d')]:_0xe18e60[_0xb2ef('0x38')];if(_0x46d79b[_0xb2ef('0x39')][_0xb2ef('0x4b')]){_0x403c60[_0xb2ef('0x4c')]=[{'all':!![]}];}_0x403c60=_['merge']({},_0x403c60,_0x46d79b[_0xb2ef('0x4a')]);return db[_0xb2ef('0x35')][_0xb2ef('0x51')](_0x403c60)[_0xb2ef('0x2c')](handleEntityNotFound(_0x7213bd,null))[_0xb2ef('0x2c')](respondWithResult(_0x7213bd,null))[_0xb2ef('0x4f')](handleError(_0x7213bd,null));};exports[_0xb2ef('0x52')]=function(_0x2f20c6,_0x20b13c){return db[_0xb2ef('0x35')]['create'](_0x2f20c6[_0xb2ef('0x53')],{})[_0xb2ef('0x2c')](function(_0x23aa11){var _0x313692=_0x2f20c6[_0xb2ef('0x54')][_0xb2ef('0x2e')]({'plain':!![]});if(!_0x313692)throw new Error(_0xb2ef('0x55'));if(_0x313692[_0xb2ef('0x56')]===_0xb2ef('0x54')){var _0x405965=_0x23aa11[_0xb2ef('0x2e')]({'plain':!![]});var _0x4c94c0='SmsQueues';return db[_0xb2ef('0x57')]['find']({'where':{'name':_0x4c94c0,'userProfileId':_0x313692['userProfileId']},'raw':!![]})['then'](function(_0x29bbb3){if(_0x29bbb3&&_0x29bbb3[_0xb2ef('0x58')]===0x0){return db['UserProfileResource'][_0xb2ef('0x52')]({'name':_0x405965[_0xb2ef('0x32')],'resourceId':_0x405965['id'],'type':_0x29bbb3[_0xb2ef('0x32')],'sectionId':_0x29bbb3['id']},{})[_0xb2ef('0x2c')](function(){return _0x23aa11;});}else{return _0x23aa11;}})['catch'](function(_0xeac41a){logger['error'](_0xb2ef('0x59'),_0xeac41a);throw _0xeac41a;});}return _0x23aa11;})[_0xb2ef('0x2c')](respondWithResult(_0x20b13c,0xc9))[_0xb2ef('0x4f')](handleError(_0x20b13c,null));};exports[_0xb2ef('0x5a')]=function(_0x512b0c,_0x5dec12){if(_0x512b0c[_0xb2ef('0x53')]['id']){delete _0x512b0c[_0xb2ef('0x53')]['id'];}return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x512b0c[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x5dec12,null))[_0xb2ef('0x2c')](saveUpdates(_0x512b0c[_0xb2ef('0x53')],null))[_0xb2ef('0x2c')](respondWithResult(_0x5dec12,null))[_0xb2ef('0x4f')](handleError(_0x5dec12,null));};exports[_0xb2ef('0x2d')]=function(_0x28baa9,_0x4f73e2){return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x28baa9[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x4f73e2,null))['then'](removeEntity(_0x4f73e2,null))['catch'](handleError(_0x4f73e2,null));};exports['describe']=function(_0xdd3b92,_0xff3720){return db[_0xb2ef('0x35')]['describe']()[_0xb2ef('0x2c')](respondWithResult(_0xff3720,null))[_0xb2ef('0x4f')](handleError(_0xff3720,null));};exports[_0xb2ef('0x5c')]=function(_0x250eb1,_0x46eac3,_0x20cb35){var _0x30fc8b={'raw':!![],'where':{}},_0x1de7e1={},_0x209dd2;return db[_0xb2ef('0x35')][_0xb2ef('0x5d')]({'where':{'id':_0x250eb1[_0xb2ef('0x5b')]['id']}})['then'](handleEntityNotFound(_0x46eac3,null))[_0xb2ef('0x2c')](function(_0xed8bfa){if(_0xed8bfa){_0x209dd2=_0xed8bfa[_0xb2ef('0x2e')]({'plain':!![]});_0x1de7e1[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x5e')][_0xb2ef('0x36')]);_0x1de7e1['query']=_[_0xb2ef('0x3a')](_0x250eb1[_0xb2ef('0x39')]);_0x1de7e1['filters']=_['intersection'](_0x1de7e1[_0xb2ef('0x38')],_0x1de7e1[_0xb2ef('0x39')]);_0x30fc8b[_0xb2ef('0x3d')]=_[_0xb2ef('0x3c')](_0x1de7e1[_0xb2ef('0x38')],qs[_0xb2ef('0x3e')](_0x250eb1[_0xb2ef('0x39')][_0xb2ef('0x3e')]));_0x30fc8b[_0xb2ef('0x3d')]=_0x30fc8b['attributes'][_0xb2ef('0x3f')]?_0x30fc8b[_0xb2ef('0x3d')]:_0x1de7e1[_0xb2ef('0x38')];if(!_0x250eb1[_0xb2ef('0x39')]['hasOwnProperty']('nolimit')){_0x30fc8b['limit']=qs[_0xb2ef('0x26')](_0x250eb1[_0xb2ef('0x39')][_0xb2ef('0x26')]);_0x30fc8b[_0xb2ef('0x24')]=qs['offset'](_0x250eb1[_0xb2ef('0x39')][_0xb2ef('0x24')]);}_0x30fc8b[_0xb2ef('0x42')]=qs['sort'](_0x250eb1[_0xb2ef('0x39')]['sort']);_0x30fc8b[_0xb2ef('0x44')]=qs['filters'](_[_0xb2ef('0x45')](_0x250eb1[_0xb2ef('0x39')],_0x1de7e1[_0xb2ef('0x3b')]));_0x30fc8b[_0xb2ef('0x44')][_0xb2ef('0x5f')]=_0xed8bfa['id'];if(_0x250eb1[_0xb2ef('0x39')]['filter']){_0x30fc8b[_0xb2ef('0x44')]=_[_0xb2ef('0x49')](_0x30fc8b['where'],{'$or':_[_0xb2ef('0x34')](_0x30fc8b[_0xb2ef('0x3d')],function(_0xb8ceb1){var _0x107d3d={};_0x107d3d[_0xb8ceb1]={'$like':'%'+_0x250eb1[_0xb2ef('0x39')]['filter']+'%'};return _0x107d3d;})});}_0x30fc8b=_['merge']({},_0x30fc8b,_0x250eb1[_0xb2ef('0x4a')]);return db[_0xb2ef('0x5e')][_0xb2ef('0x4d')](_0x30fc8b);}})[_0xb2ef('0x2c')](function(_0x234b81){if(_0x234b81){return db[_0xb2ef('0x60')][_0xb2ef('0x61')]({'where':{'id':_[_0xb2ef('0x34')](_0x234b81,_0xb2ef('0x62')),'role':_0xb2ef('0x63')},'attributes':['id','name',_0xb2ef('0x64'),_0xb2ef('0x65'),_0xb2ef('0x66')]});}})[_0xb2ef('0x2c')](function(_0x3f6e74){if(_0x3f6e74){return{'count':_0x3f6e74[_0xb2ef('0x27')],'rows':_[_0xb2ef('0x34')](_0x3f6e74[_0xb2ef('0x4e')],function(_0x5abd47){return{'membername':_0x5abd47[_0xb2ef('0x32')],'UserId':_0x5abd47['id'],'queue_name':_0x209dd2[_0xb2ef('0x32')],'SmsQueueId':_0x209dd2['id'],'interface':util['format'](_0xb2ef('0x67'),_0xb2ef('0x68'),_0x5abd47[_0xb2ef('0x32')]),'penalty':0x0,'paused':_0x5abd47[_0xb2ef('0x64')],'createdAt':_0x5abd47['createdAt'],'updatedAt':_0x5abd47[_0xb2ef('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb2ef('0x2c')](respondWithFilteredResult(_0x46eac3,_0x30fc8b))['catch'](handleError(_0x46eac3,null));};exports['getTeams']=function(_0x56fe42,_0x3537c0,_0x7a6557){var _0x5c104a={};var _0x4ccf9e={};var _0x3f8738;var _0x411f19;return db[_0xb2ef('0x35')][_0xb2ef('0x5d')]({'where':{'id':_0x56fe42[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x3537c0,null))[_0xb2ef('0x2c')](function(_0xc60db1){if(_0xc60db1){_0x3f8738=_0xc60db1;_0x4ccf9e[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x69')][_0xb2ef('0x36')]);_0x4ccf9e[_0xb2ef('0x39')]=_[_0xb2ef('0x3a')](_0x56fe42[_0xb2ef('0x39')]);_0x4ccf9e['filters']=_['intersection'](_0x4ccf9e[_0xb2ef('0x38')],_0x4ccf9e['query']);_0x5c104a['attributes']=_[_0xb2ef('0x3c')](_0x4ccf9e[_0xb2ef('0x38')],qs['fields'](_0x56fe42[_0xb2ef('0x39')]['fields']));_0x5c104a[_0xb2ef('0x3d')]=_0x5c104a[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x5c104a['attributes']:_0x4ccf9e['model'];_0x5c104a[_0xb2ef('0x42')]=qs['sort'](_0x56fe42['query']['sort']);_0x5c104a[_0xb2ef('0x44')]=qs['filters'](_[_0xb2ef('0x45')](_0x56fe42[_0xb2ef('0x39')],_0x4ccf9e[_0xb2ef('0x3b')]));if(_0x56fe42['query'][_0xb2ef('0x48')]){_0x5c104a[_0xb2ef('0x44')]=_['merge'](_0x5c104a[_0xb2ef('0x44')],{'$or':_[_0xb2ef('0x34')](_0x5c104a['attributes'],function(_0x1b2640){var _0x551a11={};_0x551a11[_0x1b2640]={'$like':'%'+_0x56fe42[_0xb2ef('0x39')]['filter']+'%'};return _0x551a11;})});}_0x5c104a=_[_0xb2ef('0x49')]({},_0x5c104a,_0x56fe42['options']);return _0x3f8738['getTeams'](_0x5c104a);}})[_0xb2ef('0x2c')](function(_0x1c7e66){if(_0x1c7e66){_0x411f19=_0x1c7e66['length'];if(!_0x56fe42[_0xb2ef('0x39')][_0xb2ef('0x40')](_0xb2ef('0x41'))){_0x5c104a['limit']=qs[_0xb2ef('0x26')](_0x56fe42[_0xb2ef('0x39')]['limit']);_0x5c104a[_0xb2ef('0x24')]=qs[_0xb2ef('0x24')](_0x56fe42[_0xb2ef('0x39')][_0xb2ef('0x24')]);}return _0x3f8738[_0xb2ef('0x6a')](_0x5c104a);}})[_0xb2ef('0x2c')](function(_0xcd5657){if(_0xcd5657){return _0xcd5657?{'count':_0x411f19,'rows':_0xcd5657}:null;}})['then'](respondWithResult(_0x3537c0,null))[_0xb2ef('0x4f')](handleError(_0x3537c0,null));};exports[_0xb2ef('0x6b')]=function(_0x5eaf9c,_0xf2bf59,_0x5de6f9){var _0x279a4d=_0x5eaf9c['body'][_0xb2ef('0x6c')];return db['Team'][_0xb2ef('0x4d')]({'where':{'id':_0x279a4d},'attributes':['id'],'include':[{'model':db[_0xb2ef('0x60')],'as':_0xb2ef('0x6d'),'attributes':['id','name','online',_0xb2ef('0x6e'),_0xb2ef('0x6f')],'raw':!![]}]})[_0xb2ef('0x2c')](function(_0x7b77be){if(_0x7b77be){var _0x4ee239=_[_0xb2ef('0x70')](_0x7b77be,function(_0x2f72c2){var _0x43d49e=_0x2f72c2[_0xb2ef('0x2e')]({'plain':!![]});return _0x43d49e['Agents'];});return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x5eaf9c[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](function(_0x4c51c9){return db[_0xb2ef('0x71')]['transaction'](function(_0x15e9fd){return _0x4c51c9['addTeams'](_0x279a4d,{'transaction':_0x15e9fd})[_0xb2ef('0x2c')](function(){return BPromise[_0xb2ef('0x72')](_0x4ee239,function(_0x1bf88f){return db[_0xb2ef('0x5e')][_0xb2ef('0x73')]({'where':{'UserId':_0x1bf88f['id'],'SmsQueueId':_0x5eaf9c[_0xb2ef('0x5b')]['id']},'transaction':_0x15e9fd});});})[_0xb2ef('0x2c')](function(){_0x4ee239[_0xb2ef('0x74')](function(_0x429557){socket[_0xb2ef('0x75')](_0xb2ef('0x76'),{'UserId':_0x429557['id'],'SmsQueueId':_0x4c51c9['id']});});});});});}})[_0xb2ef('0x2c')](respondWithStatusCode(_0xf2bf59,null))[_0xb2ef('0x4f')](handleError(_0xf2bf59,null));};exports[_0xb2ef('0x77')]=function(_0x30377d,_0x2afd70,_0x2e97ed){return db[_0xb2ef('0x69')][_0xb2ef('0x4d')]({'where':{'id':_0x30377d[_0xb2ef('0x39')][_0xb2ef('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xb2ef('0x60')],'as':_0xb2ef('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xb2ef('0x2c')](handleEntityNotFound(_0x2afd70,null))['then'](function(_0x3218c5){var _0x1f0698=_[_0xb2ef('0x34')](_0x3218c5,'id');var _0x578813=[];var _0x17b3ed=[];var _0x3364e1=squel[_0xb2ef('0x78')]();_0x3364e1[_0xb2ef('0x79')](_0xb2ef('0x7a'))[_0xb2ef('0x7b')](_0xb2ef('0x7c'),'tq')['join'](_0xb2ef('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where']('SmsQueueId\x20=\x20?',_0x30377d[_0xb2ef('0x5b')]['id']);for(var _0x57e1b1=0x0;_0x57e1b1<_0x3218c5[_0xb2ef('0x3f')];_0x57e1b1+=0x1){let _0x46d65e=_0x3218c5[_0x57e1b1];for(var _0x49cb78=0x0;_0x49cb78<_0x46d65e[_0xb2ef('0x6d')][_0xb2ef('0x3f')];_0x49cb78+=0x1){let _0x231393=_0x46d65e['Agents'][_0x49cb78];var _0x5f4c6b=_0x3364e1[_0xb2ef('0x7e')]();_0x5f4c6b[_0xb2ef('0x44')]('ut.UserId\x20=\x20?',_0x231393['id']);_0x17b3ed[_0xb2ef('0x7f')](db[_0xb2ef('0x71')]['query'](_0x5f4c6b[_0xb2ef('0x80')](),{'type':db[_0xb2ef('0x71')][_0xb2ef('0x81')][_0xb2ef('0x82')]})[_0xb2ef('0x2c')](function(_0x3fca59){if(_0x3fca59[_0xb2ef('0x3f')]===0x1){return _0x231393['id'];}else{var _0x26e841=_[_0xb2ef('0x83')](_[_0xb2ef('0x34')](_0x3fca59,_0xb2ef('0x84')),function(_0x8a7259){return _['includes'](_0x1f0698,_0x8a7259);});if(_0x26e841){return _0x231393['id'];}}}));}}return BPromise[_0xb2ef('0x85')](_0x17b3ed)[_0xb2ef('0x2c')](function(_0x404555){_0x578813=_(_0x578813)[_0xb2ef('0x86')](_0x404555)[_0xb2ef('0x87')]()[_0xb2ef('0x88')]();return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x30377d[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](function(_0x23e65c){return db[_0xb2ef('0x71')][_0xb2ef('0x89')](function(_0x3366ed){return _0x23e65c[_0xb2ef('0x77')](_0x30377d['query']['ids'],{'transaction':_0x3366ed})[_0xb2ef('0x2c')](function(){if(!_[_0xb2ef('0x8a')](_0x578813)){return _0x23e65c[_0xb2ef('0x8b')](_0x578813,{'transaction':_0x3366ed});}})[_0xb2ef('0x2c')](function(){_0x578813[_0xb2ef('0x74')](function(_0x329795){socket['emit'](_0xb2ef('0x8c'),{'UserId':_0x329795,'SmsQueueId':_0x23e65c['id']});});});});});});})[_0xb2ef('0x2c')](respondWithStatusCode(_0x2afd70,null))[_0xb2ef('0x4f')](handleError(_0x2afd70,null));};exports['addAgents']=function(_0x30c13c,_0x387ca6,_0x24ac9a){return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x30c13c[_0xb2ef('0x5b')]['id']}})['then'](handleEntityNotFound(_0x387ca6,null))['then'](function(_0x1e7967){if(_0x1e7967){return _0x1e7967[_0xb2ef('0x8d')](_0x30c13c[_0xb2ef('0x53')][_0xb2ef('0x6c')],_[_0xb2ef('0x8e')](_0x30c13c['body'],['ids','id'])||{})[_0xb2ef('0x8f')](function(_0x19a46f){for(var _0x30d03f=0x0;_0x30d03f<_0x30c13c[_0xb2ef('0x53')][_0xb2ef('0x6c')][_0xb2ef('0x3f')];_0x30d03f+=0x1){socket[_0xb2ef('0x75')](_0xb2ef('0x76'),{'UserId':Number(_0x30c13c[_0xb2ef('0x53')][_0xb2ef('0x6c')][_0x30d03f]),'SmsQueueId':Number(_0x30c13c[_0xb2ef('0x5b')]['id'])});}return _0x19a46f;});}})[_0xb2ef('0x2c')](respondWithResult(_0x387ca6,null))[_0xb2ef('0x4f')](handleError(_0x387ca6,null));};exports[_0xb2ef('0x8b')]=function(_0x4ca48d,_0x1b8575,_0x3e5b75){return db['SmsQueue'][_0xb2ef('0x51')]({'where':{'id':_0x4ca48d[_0xb2ef('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1b8575,null))['then'](function(_0x3b45d6){if(_0x3b45d6){return _0x3b45d6[_0xb2ef('0x8b')](_0x4ca48d[_0xb2ef('0x39')]['ids'])['then'](function(){if(_['isArray'](_0x4ca48d[_0xb2ef('0x39')][_0xb2ef('0x6c')])){for(var _0x575142=0x0;_0x575142<_0x4ca48d[_0xb2ef('0x39')][_0xb2ef('0x6c')][_0xb2ef('0x3f')];_0x575142+=0x1){socket[_0xb2ef('0x75')]('userSmsQueue:remove',{'UserId':Number(_0x4ca48d[_0xb2ef('0x39')]['ids'][_0x575142]),'SmsQueueId':Number(_0x4ca48d[_0xb2ef('0x5b')]['id'])});}}else{socket[_0xb2ef('0x75')](_0xb2ef('0x8c'),{'UserId':Number(_0x4ca48d[_0xb2ef('0x39')]['ids']),'SmsQueueId':Number(_0x4ca48d['params']['id'])});}});}})[_0xb2ef('0x2c')](respondWithStatusCode(_0x1b8575,null))[_0xb2ef('0x4f')](handleError(_0x1b8575,null));};exports[_0xb2ef('0x90')]=function(_0x2eae02,_0x3afa8c,_0x585e63){var _0x3a4692={};var _0x5c67e5={};var _0x2f13c0;var _0x1dd0b0;return db[_0xb2ef('0x35')][_0xb2ef('0x5d')]({'where':{'id':_0x2eae02['params']['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x3afa8c,null))[_0xb2ef('0x2c')](function(_0x3605bb){if(_0x3605bb){_0x2f13c0=_0x3605bb;_0x5c67e5[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x60')][_0xb2ef('0x36')]);_0x5c67e5['query']=_['keys'](_0x2eae02[_0xb2ef('0x39')]);_0x5c67e5[_0xb2ef('0x3b')]=_[_0xb2ef('0x3c')](_0x5c67e5[_0xb2ef('0x38')],_0x5c67e5[_0xb2ef('0x39')]);_0x3a4692[_0xb2ef('0x3d')]=_['intersection'](_0x5c67e5[_0xb2ef('0x38')],qs[_0xb2ef('0x3e')](_0x2eae02['query']['fields']));_0x3a4692['attributes']=_0x3a4692[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x3a4692[_0xb2ef('0x3d')]:_0x5c67e5[_0xb2ef('0x38')];_0x3a4692[_0xb2ef('0x42')]=qs[_0xb2ef('0x43')](_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x43')]);_0x3a4692[_0xb2ef('0x44')]=qs['filters'](_['pick'](_0x2eae02[_0xb2ef('0x39')],_0x5c67e5[_0xb2ef('0x3b')]));if(_0x2eae02[_0xb2ef('0x39')]['filter']){_0x3a4692[_0xb2ef('0x44')]=_['merge'](_0x3a4692[_0xb2ef('0x44')],{'$or':_[_0xb2ef('0x34')](_0x3a4692[_0xb2ef('0x3d')],function(_0x50c8e0){var _0x342693={};_0x342693[_0x50c8e0]={'$like':'%'+_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x48')]+'%'};return _0x342693;})});}_0x3a4692=_[_0xb2ef('0x49')]({},_0x3a4692,_0x2eae02[_0xb2ef('0x4a')]);return _0x2f13c0[_0xb2ef('0x90')](_0x3a4692);}})['then'](function(_0xbf3f5e){if(_0xbf3f5e){_0x1dd0b0=_0xbf3f5e[_0xb2ef('0x3f')];if(!_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x40')]('nolimit')){_0x3a4692[_0xb2ef('0x26')]=qs['limit'](_0x2eae02['query'][_0xb2ef('0x26')]);_0x3a4692[_0xb2ef('0x24')]=qs[_0xb2ef('0x24')](_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x24')]);}return _0x2f13c0[_0xb2ef('0x90')](_0x3a4692);}})[_0xb2ef('0x2c')](function(_0x1eace4){if(_0x1eace4){return _0x1eace4?{'count':_0x1dd0b0,'rows':_0x1eace4}:null;}})[_0xb2ef('0x2c')](respondWithResult(_0x3afa8c,null))['catch'](handleError(_0x3afa8c,null));};
\ No newline at end of file
+var _0x1cce=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','./smsQueue.socket','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','SmsQueues','UserProfileResource','end','sendStatus','error','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','length','includeAll','options','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','body','describe','getMembers','findOne','sort','UserSmsQueue','User','findAndCountAll','UserId','agent','updatedAt','createdAt','%s/%s','SIP','smsPause','getTeams','Team','ids','Agents','voicePause','interface','flatMap','addTeams','each','findOrCreate','forEach','userSmsQueue:save','removeTeams','select','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','transaction','isEmpty','emit','userSmsQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x4f13f8,_0x5e13c5){var _0x1e6b83=function(_0x26e15b){while(--_0x26e15b){_0x4f13f8['push'](_0x4f13f8['shift']());}};_0x1e6b83(++_0x5e13c5);}(_0x1cce,0x80));var _0xe1cc=function(_0x13137e,_0x29c0f3){_0x13137e=_0x13137e-0x0;var _0x346261=_0x1cce[_0x13137e];return _0x346261;};'use strict';var emlformat=require(_0xe1cc('0x0'));var rimraf=require(_0xe1cc('0x1'));var zipdir=require(_0xe1cc('0x2'));var jsonpatch=require(_0xe1cc('0x3'));var rp=require(_0xe1cc('0x4'));var moment=require(_0xe1cc('0x5'));var BPromise=require(_0xe1cc('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe1cc('0x7'));var sox=require('sox');var csv=require(_0xe1cc('0x8'));var ejs=require(_0xe1cc('0x9'));var fs=require('fs');var fs_extra=require(_0xe1cc('0xa'));var _=require(_0xe1cc('0xb'));var squel=require('squel');var crypto=require(_0xe1cc('0xc'));var jsforce=require(_0xe1cc('0xd'));var deskjs=require(_0xe1cc('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe1cc('0xf'));var Papa=require(_0xe1cc('0x10'));var Redis=require('ioredis');var authService=require(_0xe1cc('0x11'));var qs=require(_0xe1cc('0x12'));var as=require(_0xe1cc('0x13'));var hardwareService=require(_0xe1cc('0x14'));var logger=require(_0xe1cc('0x15'))(_0xe1cc('0x16'));var utils=require(_0xe1cc('0x17'));var config=require(_0xe1cc('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xe1cc('0x19')]=_[_0xe1cc('0x1a')](config[_0xe1cc('0x19')],{'host':_0xe1cc('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe1cc('0x19')]));require(_0xe1cc('0x1c'))['register'](socket);function respondWithStatusCode(_0x20d6b8,_0x56f1d1){_0x56f1d1=_0x56f1d1||0xcc;return function(_0x4d4454){if(_0x4d4454){return _0x20d6b8['sendStatus'](_0x56f1d1);}return _0x20d6b8['status'](_0x56f1d1)['end']();};}function respondWithResult(_0x1f659b,_0x20b429){_0x20b429=_0x20b429||0xc8;return function(_0x59c3e1){if(_0x59c3e1){return _0x1f659b[_0xe1cc('0x1d')](_0x20b429)[_0xe1cc('0x1e')](_0x59c3e1);}};}function respondWithFilteredResult(_0x3e1919,_0x21f35a){return function(_0x28f86e){if(_0x28f86e){var _0x1bc3ea=typeof _0x21f35a[_0xe1cc('0x1f')]===_0xe1cc('0x20')&&typeof _0x21f35a[_0xe1cc('0x21')]===_0xe1cc('0x20');var _0x3a967d=_0x28f86e[_0xe1cc('0x22')];var _0x127ca5=_0x1bc3ea?0x0:_0x21f35a['offset'];var _0x2603be=_0x1bc3ea?_0x28f86e[_0xe1cc('0x22')]:_0x21f35a[_0xe1cc('0x1f')]+_0x21f35a['limit'];var _0x585097;if(_0x2603be>=_0x3a967d){_0x2603be=_0x3a967d;_0x585097=0xc8;}else{_0x585097=0xce;}_0x3e1919[_0xe1cc('0x1d')](_0x585097);return _0x3e1919[_0xe1cc('0x23')](_0xe1cc('0x24'),_0x127ca5+'-'+_0x2603be+'/'+_0x3a967d)[_0xe1cc('0x1e')](_0x28f86e);}return null;};}function patchUpdates(_0x422a90){return function(_0x7fa89b){try{jsonpatch[_0xe1cc('0x25')](_0x7fa89b,_0x422a90,!![]);}catch(_0x34eb1c){return BPromise[_0xe1cc('0x26')](_0x34eb1c);}return _0x7fa89b[_0xe1cc('0x27')]();};}function saveUpdates(_0x34651e,_0x1fd20b){return function(_0x543383){if(_0x543383){return _0x543383['update'](_0x34651e)['then'](function(_0x27975c){return _0x27975c;});}return null;};}function removeEntity(_0x11b428,_0x30892a){return function(_0x52717d){if(_0x52717d){return _0x52717d[_0xe1cc('0x28')]()[_0xe1cc('0x29')](function(){var _0x303767=_0x52717d['get']({'plain':!![]});var _0x16763a=_0xe1cc('0x2a');return db[_0xe1cc('0x2b')]['destroy']({'where':{'type':_0x16763a,'resourceId':_0x303767['id']}})[_0xe1cc('0x29')](function(){return _0x52717d;});})['then'](function(){_0x11b428[_0xe1cc('0x1d')](0xcc)[_0xe1cc('0x2c')]();});}};}function handleEntityNotFound(_0x583b96,_0x46d35f){return function(_0x3c7767){if(!_0x3c7767){_0x583b96[_0xe1cc('0x2d')](0x194);}return _0x3c7767;};}function handleError(_0x267c3b,_0xa94138){_0xa94138=_0xa94138||0x1f4;return function(_0x5ddc0d){logger[_0xe1cc('0x2e')](_0x5ddc0d['stack']);if(_0x5ddc0d[_0xe1cc('0x2f')]){delete _0x5ddc0d[_0xe1cc('0x2f')];}_0x267c3b['status'](_0xa94138)[_0xe1cc('0x30')](_0x5ddc0d);};}exports[_0xe1cc('0x31')]=function(_0x5e5f67,_0x370e5d){var _0x1fbdef={},_0xfd60da={},_0x32e7b3={'count':0x0,'rows':[]};var _0x5db54b=_[_0xe1cc('0x32')](db[_0xe1cc('0x33')][_0xe1cc('0x34')],function(_0x1c29d4){return{'name':_0x1c29d4[_0xe1cc('0x35')],'type':_0x1c29d4[_0xe1cc('0x36')][_0xe1cc('0x37')]};});_0xfd60da[_0xe1cc('0x38')]=_[_0xe1cc('0x32')](_0x5db54b,_0xe1cc('0x2f'));_0xfd60da[_0xe1cc('0x39')]=_[_0xe1cc('0x3a')](_0x5e5f67[_0xe1cc('0x39')]);_0xfd60da[_0xe1cc('0x3b')]=_['intersection'](_0xfd60da[_0xe1cc('0x38')],_0xfd60da[_0xe1cc('0x39')]);_0x1fbdef[_0xe1cc('0x3c')]=_[_0xe1cc('0x3d')](_0xfd60da[_0xe1cc('0x38')],qs[_0xe1cc('0x3e')](_0x5e5f67['query'][_0xe1cc('0x3e')]));_0x1fbdef['attributes']=_0x1fbdef[_0xe1cc('0x3c')]['length']?_0x1fbdef['attributes']:_0xfd60da[_0xe1cc('0x38')];if(!_0x5e5f67['query'][_0xe1cc('0x3f')](_0xe1cc('0x40'))){_0x1fbdef['limit']=qs[_0xe1cc('0x21')](_0x5e5f67[_0xe1cc('0x39')][_0xe1cc('0x21')]);_0x1fbdef[_0xe1cc('0x1f')]=qs[_0xe1cc('0x1f')](_0x5e5f67[_0xe1cc('0x39')][_0xe1cc('0x1f')]);}_0x1fbdef[_0xe1cc('0x41')]=qs['sort'](_0x5e5f67[_0xe1cc('0x39')]['sort']);_0x1fbdef[_0xe1cc('0x42')]=qs[_0xe1cc('0x3b')](_[_0xe1cc('0x43')](_0x5e5f67['query'],_0xfd60da['filters']),_0x5db54b);if(_0x5e5f67[_0xe1cc('0x39')][_0xe1cc('0x44')]){_0x1fbdef[_0xe1cc('0x42')]=_[_0xe1cc('0x45')](_0x1fbdef[_0xe1cc('0x42')],{'$or':_[_0xe1cc('0x32')](_0x5db54b,function(_0x2622a7){if(_0x2622a7[_0xe1cc('0x36')]!==_0xe1cc('0x46')){var _0x20ff62={};_0x20ff62[_0x2622a7[_0xe1cc('0x2f')]]={'$like':'%'+_0x5e5f67[_0xe1cc('0x39')][_0xe1cc('0x44')]+'%'};return _0x20ff62;}})});}_0x1fbdef=_[_0xe1cc('0x45')]({},_0x1fbdef,_0x5e5f67['options']);var _0x37fa97={'where':_0x1fbdef[_0xe1cc('0x42')]};return db[_0xe1cc('0x33')][_0xe1cc('0x22')](_0x37fa97)['then'](function(_0xcb9510){_0x32e7b3[_0xe1cc('0x22')]=_0xcb9510;if(_0x5e5f67['query']['includeAll']){_0x1fbdef['include']=[{'all':!![]}];}return db[_0xe1cc('0x33')][_0xe1cc('0x47')](_0x1fbdef);})[_0xe1cc('0x29')](function(_0x3aa110){_0x32e7b3[_0xe1cc('0x48')]=_0x3aa110;return _0x32e7b3;})[_0xe1cc('0x29')](respondWithFilteredResult(_0x370e5d,_0x1fbdef))[_0xe1cc('0x49')](handleError(_0x370e5d,null));};exports[_0xe1cc('0x4a')]=function(_0x7d521e,_0x3b8431){var _0x2fdbde={'raw':!![],'where':{'id':_0x7d521e[_0xe1cc('0x4b')]['id']}},_0x4c7013={};_0x4c7013['model']=_[_0xe1cc('0x3a')](db['SmsQueue'][_0xe1cc('0x34')]);_0x4c7013['query']=_[_0xe1cc('0x3a')](_0x7d521e[_0xe1cc('0x39')]);_0x4c7013[_0xe1cc('0x3b')]=_[_0xe1cc('0x3d')](_0x4c7013['model'],_0x4c7013[_0xe1cc('0x39')]);_0x2fdbde[_0xe1cc('0x3c')]=_[_0xe1cc('0x3d')](_0x4c7013['model'],qs[_0xe1cc('0x3e')](_0x7d521e['query'][_0xe1cc('0x3e')]));_0x2fdbde[_0xe1cc('0x3c')]=_0x2fdbde[_0xe1cc('0x3c')][_0xe1cc('0x4c')]?_0x2fdbde[_0xe1cc('0x3c')]:_0x4c7013[_0xe1cc('0x38')];if(_0x7d521e[_0xe1cc('0x39')][_0xe1cc('0x4d')]){_0x2fdbde['include']=[{'all':!![]}];}_0x2fdbde=_[_0xe1cc('0x45')]({},_0x2fdbde,_0x7d521e[_0xe1cc('0x4e')]);return db[_0xe1cc('0x33')][_0xe1cc('0x4f')](_0x2fdbde)[_0xe1cc('0x29')](handleEntityNotFound(_0x3b8431,null))[_0xe1cc('0x29')](respondWithResult(_0x3b8431,null))['catch'](handleError(_0x3b8431,null));};exports[_0xe1cc('0x50')]=function(_0x3235c5,_0x3be6de){return db[_0xe1cc('0x33')][_0xe1cc('0x50')](_0x3235c5['body'],{})[_0xe1cc('0x29')](function(_0x1c545c){var _0x4c2618=_0x3235c5['user'][_0xe1cc('0x51')]({'plain':!![]});if(!_0x4c2618)throw new Error(_0xe1cc('0x52'));if(_0x4c2618['role']===_0xe1cc('0x53')){var _0x334bbd=_0x1c545c[_0xe1cc('0x51')]({'plain':!![]});var _0x3688e3='SmsQueues';return db['UserProfileSection'][_0xe1cc('0x4f')]({'where':{'name':_0x3688e3,'userProfileId':_0x4c2618[_0xe1cc('0x54')]},'raw':!![]})[_0xe1cc('0x29')](function(_0x171824){if(_0x171824&&_0x171824['autoAssociation']===0x0){return db[_0xe1cc('0x2b')]['create']({'name':_0x334bbd[_0xe1cc('0x2f')],'resourceId':_0x334bbd['id'],'type':_0x171824[_0xe1cc('0x2f')],'sectionId':_0x171824['id']},{})[_0xe1cc('0x29')](function(){return _0x1c545c;});}else{return _0x1c545c;}})[_0xe1cc('0x49')](function(_0x501883){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x501883);throw _0x501883;});}return _0x1c545c;})[_0xe1cc('0x29')](respondWithResult(_0x3be6de,0xc9))[_0xe1cc('0x49')](handleError(_0x3be6de,null));};exports['update']=function(_0x3decd3,_0x331481){if(_0x3decd3[_0xe1cc('0x55')]['id']){delete _0x3decd3[_0xe1cc('0x55')]['id'];}return db[_0xe1cc('0x33')][_0xe1cc('0x4f')]({'where':{'id':_0x3decd3[_0xe1cc('0x4b')]['id']}})['then'](handleEntityNotFound(_0x331481,null))[_0xe1cc('0x29')](saveUpdates(_0x3decd3[_0xe1cc('0x55')],null))['then'](respondWithResult(_0x331481,null))[_0xe1cc('0x49')](handleError(_0x331481,null));};exports[_0xe1cc('0x28')]=function(_0x1d81e8,_0x2d05d2){return db[_0xe1cc('0x33')][_0xe1cc('0x4f')]({'where':{'id':_0x1d81e8[_0xe1cc('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2d05d2,null))[_0xe1cc('0x29')](removeEntity(_0x2d05d2,null))[_0xe1cc('0x49')](handleError(_0x2d05d2,null));};exports[_0xe1cc('0x56')]=function(_0x4f6c0a,_0x2ee54d){return db[_0xe1cc('0x33')]['describe']()['then'](respondWithResult(_0x2ee54d,null))[_0xe1cc('0x49')](handleError(_0x2ee54d,null));};exports[_0xe1cc('0x57')]=function(_0x58dce3,_0x202e90,_0x4ae300){var _0x14d710={'raw':!![],'where':{}},_0x20993a={},_0x5bf00f;return db['SmsQueue'][_0xe1cc('0x58')]({'where':{'id':_0x58dce3[_0xe1cc('0x4b')]['id']}})['then'](handleEntityNotFound(_0x202e90,null))['then'](function(_0x591dcd){if(_0x591dcd){_0x5bf00f=_0x591dcd['get']({'plain':!![]});_0x20993a[_0xe1cc('0x38')]=_[_0xe1cc('0x3a')](db['UserSmsQueue'][_0xe1cc('0x34')]);_0x20993a[_0xe1cc('0x39')]=_[_0xe1cc('0x3a')](_0x58dce3[_0xe1cc('0x39')]);_0x20993a['filters']=_[_0xe1cc('0x3d')](_0x20993a[_0xe1cc('0x38')],_0x20993a[_0xe1cc('0x39')]);_0x14d710[_0xe1cc('0x3c')]=_[_0xe1cc('0x3d')](_0x20993a[_0xe1cc('0x38')],qs[_0xe1cc('0x3e')](_0x58dce3['query'][_0xe1cc('0x3e')]));_0x14d710['attributes']=_0x14d710['attributes'][_0xe1cc('0x4c')]?_0x14d710[_0xe1cc('0x3c')]:_0x20993a[_0xe1cc('0x38')];if(!_0x58dce3['query'][_0xe1cc('0x3f')](_0xe1cc('0x40'))){_0x14d710[_0xe1cc('0x21')]=qs[_0xe1cc('0x21')](_0x58dce3['query'][_0xe1cc('0x21')]);_0x14d710[_0xe1cc('0x1f')]=qs[_0xe1cc('0x1f')](_0x58dce3[_0xe1cc('0x39')]['offset']);}_0x14d710[_0xe1cc('0x41')]=qs['sort'](_0x58dce3['query'][_0xe1cc('0x59')]);_0x14d710['where']=qs[_0xe1cc('0x3b')](_['pick'](_0x58dce3[_0xe1cc('0x39')],_0x20993a[_0xe1cc('0x3b')]));_0x14d710['where']['SmsQueueId']=_0x591dcd['id'];if(_0x58dce3[_0xe1cc('0x39')][_0xe1cc('0x44')]){_0x14d710['where']=_[_0xe1cc('0x45')](_0x14d710[_0xe1cc('0x42')],{'$or':_[_0xe1cc('0x32')](_0x14d710[_0xe1cc('0x3c')],function(_0x2d600b){var _0x2c7b40={};_0x2c7b40[_0x2d600b]={'$like':'%'+_0x58dce3[_0xe1cc('0x39')][_0xe1cc('0x44')]+'%'};return _0x2c7b40;})});}_0x14d710=_['merge']({},_0x14d710,_0x58dce3[_0xe1cc('0x4e')]);return db[_0xe1cc('0x5a')][_0xe1cc('0x47')](_0x14d710);}})[_0xe1cc('0x29')](function(_0x500577){if(_0x500577){return db[_0xe1cc('0x5b')][_0xe1cc('0x5c')]({'where':{'id':_[_0xe1cc('0x32')](_0x500577,_0xe1cc('0x5d')),'role':_0xe1cc('0x5e')},'attributes':['id',_0xe1cc('0x2f'),'smsPause',_0xe1cc('0x5f'),_0xe1cc('0x60')]});}})[_0xe1cc('0x29')](function(_0x45c357){if(_0x45c357){return{'count':_0x45c357[_0xe1cc('0x22')],'rows':_[_0xe1cc('0x32')](_0x45c357[_0xe1cc('0x48')],function(_0x1510e1){return{'membername':_0x1510e1[_0xe1cc('0x2f')],'UserId':_0x1510e1['id'],'queue_name':_0x5bf00f[_0xe1cc('0x2f')],'SmsQueueId':_0x5bf00f['id'],'interface':util['format'](_0xe1cc('0x61'),_0xe1cc('0x62'),_0x1510e1['name']),'penalty':0x0,'paused':_0x1510e1[_0xe1cc('0x63')],'createdAt':_0x1510e1[_0xe1cc('0x60')],'updatedAt':_0x1510e1['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xe1cc('0x29')](respondWithFilteredResult(_0x202e90,_0x14d710))[_0xe1cc('0x49')](handleError(_0x202e90,null));};exports[_0xe1cc('0x64')]=function(_0x2e7ee0,_0x48faa0,_0x2be912){var _0x3b2a76={};var _0x4f1b9a={};var _0x9a6b22;var _0xe877a2;return db['SmsQueue'][_0xe1cc('0x58')]({'where':{'id':_0x2e7ee0[_0xe1cc('0x4b')]['id']}})[_0xe1cc('0x29')](handleEntityNotFound(_0x48faa0,null))['then'](function(_0x3fe3bc){if(_0x3fe3bc){_0x9a6b22=_0x3fe3bc;_0x4f1b9a['model']=_['keys'](db[_0xe1cc('0x65')][_0xe1cc('0x34')]);_0x4f1b9a['query']=_['keys'](_0x2e7ee0[_0xe1cc('0x39')]);_0x4f1b9a[_0xe1cc('0x3b')]=_[_0xe1cc('0x3d')](_0x4f1b9a['model'],_0x4f1b9a[_0xe1cc('0x39')]);_0x3b2a76[_0xe1cc('0x3c')]=_[_0xe1cc('0x3d')](_0x4f1b9a['model'],qs[_0xe1cc('0x3e')](_0x2e7ee0[_0xe1cc('0x39')][_0xe1cc('0x3e')]));_0x3b2a76['attributes']=_0x3b2a76['attributes'][_0xe1cc('0x4c')]?_0x3b2a76[_0xe1cc('0x3c')]:_0x4f1b9a[_0xe1cc('0x38')];_0x3b2a76['order']=qs[_0xe1cc('0x59')](_0x2e7ee0[_0xe1cc('0x39')]['sort']);_0x3b2a76[_0xe1cc('0x42')]=qs[_0xe1cc('0x3b')](_['pick'](_0x2e7ee0[_0xe1cc('0x39')],_0x4f1b9a['filters']));if(_0x2e7ee0['query']['filter']){_0x3b2a76['where']=_[_0xe1cc('0x45')](_0x3b2a76[_0xe1cc('0x42')],{'$or':_[_0xe1cc('0x32')](_0x3b2a76[_0xe1cc('0x3c')],function(_0x27d05a){var _0x220bb1={};_0x220bb1[_0x27d05a]={'$like':'%'+_0x2e7ee0[_0xe1cc('0x39')][_0xe1cc('0x44')]+'%'};return _0x220bb1;})});}_0x3b2a76=_[_0xe1cc('0x45')]({},_0x3b2a76,_0x2e7ee0[_0xe1cc('0x4e')]);return _0x9a6b22[_0xe1cc('0x64')](_0x3b2a76);}})[_0xe1cc('0x29')](function(_0x1026f1){if(_0x1026f1){_0xe877a2=_0x1026f1[_0xe1cc('0x4c')];if(!_0x2e7ee0[_0xe1cc('0x39')][_0xe1cc('0x3f')](_0xe1cc('0x40'))){_0x3b2a76[_0xe1cc('0x21')]=qs['limit'](_0x2e7ee0[_0xe1cc('0x39')]['limit']);_0x3b2a76['offset']=qs[_0xe1cc('0x1f')](_0x2e7ee0[_0xe1cc('0x39')][_0xe1cc('0x1f')]);}return _0x9a6b22[_0xe1cc('0x64')](_0x3b2a76);}})[_0xe1cc('0x29')](function(_0x4e73c4){if(_0x4e73c4){return _0x4e73c4?{'count':_0xe877a2,'rows':_0x4e73c4}:null;}})[_0xe1cc('0x29')](respondWithResult(_0x48faa0,null))[_0xe1cc('0x49')](handleError(_0x48faa0,null));};exports['addTeams']=function(_0x279801,_0x45105a,_0x235ad0){var _0x268b35=_0x279801['body'][_0xe1cc('0x66')];return db[_0xe1cc('0x65')][_0xe1cc('0x47')]({'where':{'id':_0x268b35},'attributes':['id'],'include':[{'model':db[_0xe1cc('0x5b')],'as':_0xe1cc('0x67'),'attributes':['id',_0xe1cc('0x2f'),'online',_0xe1cc('0x68'),_0xe1cc('0x69')],'raw':!![]}]})['then'](function(_0x25e727){if(_0x25e727){var _0x4ed3a6=_[_0xe1cc('0x6a')](_0x25e727,function(_0x2a23a2){var _0x270fc6=_0x2a23a2[_0xe1cc('0x51')]({'plain':!![]});return _0x270fc6['Agents'];});return db[_0xe1cc('0x33')][_0xe1cc('0x4f')]({'where':{'id':_0x279801[_0xe1cc('0x4b')]['id']}})[_0xe1cc('0x29')](function(_0x2c86de){return db['sequelize']['transaction'](function(_0x14437f){return _0x2c86de[_0xe1cc('0x6b')](_0x268b35,{'transaction':_0x14437f})['then'](function(){return BPromise[_0xe1cc('0x6c')](_0x4ed3a6,function(_0xe09475){return db['UserSmsQueue'][_0xe1cc('0x6d')]({'where':{'UserId':_0xe09475['id'],'SmsQueueId':_0x279801[_0xe1cc('0x4b')]['id']},'transaction':_0x14437f});});})[_0xe1cc('0x29')](function(){_0x4ed3a6[_0xe1cc('0x6e')](function(_0x3e7dc8){socket['emit'](_0xe1cc('0x6f'),{'UserId':_0x3e7dc8['id'],'SmsQueueId':_0x2c86de['id']});});});});});}})['then'](respondWithStatusCode(_0x45105a,null))[_0xe1cc('0x49')](handleError(_0x45105a,null));};exports[_0xe1cc('0x70')]=function(_0x1f0c74,_0x48cb37,_0x5ca899){return db[_0xe1cc('0x65')][_0xe1cc('0x47')]({'where':{'id':_0x1f0c74['query'][_0xe1cc('0x66')]},'attributes':['id'],'include':[{'model':db[_0xe1cc('0x5b')],'as':_0xe1cc('0x67'),'attributes':['id'],'raw':!![]}]})[_0xe1cc('0x29')](handleEntityNotFound(_0x48cb37,null))[_0xe1cc('0x29')](function(_0x2b217e){var _0x3589cb=_[_0xe1cc('0x32')](_0x2b217e,'id');var _0x391ced=[];var _0x5e6631=[];var _0x5a1f0f=squel[_0xe1cc('0x71')]();_0x5a1f0f['field']('tq.TeamId')[_0xe1cc('0x72')](_0xe1cc('0x73'),'tq')[_0xe1cc('0x74')]('user_has_teams','ut',_0xe1cc('0x75'))[_0xe1cc('0x42')](_0xe1cc('0x76'),_0x1f0c74['params']['id']);for(var _0x2db473=0x0;_0x2db473<_0x2b217e[_0xe1cc('0x4c')];_0x2db473+=0x1){let _0x585ff3=_0x2b217e[_0x2db473];for(var _0x86c275=0x0;_0x86c275<_0x585ff3['Agents'][_0xe1cc('0x4c')];_0x86c275+=0x1){let _0x189665=_0x585ff3['Agents'][_0x86c275];var _0x89f432=_0x5a1f0f[_0xe1cc('0x77')]();_0x89f432[_0xe1cc('0x42')](_0xe1cc('0x78'),_0x189665['id']);_0x5e6631[_0xe1cc('0x79')](db[_0xe1cc('0x7a')][_0xe1cc('0x39')](_0x89f432[_0xe1cc('0x7b')](),{'type':db[_0xe1cc('0x7a')][_0xe1cc('0x7c')][_0xe1cc('0x7d')]})[_0xe1cc('0x29')](function(_0x3d44bb){if(_0x3d44bb[_0xe1cc('0x4c')]===0x1){return _0x189665['id'];}else{var _0x5c2607=_[_0xe1cc('0x7e')](_[_0xe1cc('0x32')](_0x3d44bb,'TeamId'),function(_0x33988e){return _[_0xe1cc('0x7f')](_0x3589cb,_0x33988e);});if(_0x5c2607){return _0x189665['id'];}}}));}}return BPromise[_0xe1cc('0x80')](_0x5e6631)[_0xe1cc('0x29')](function(_0x18c954){_0x391ced=_(_0x391ced)[_0xe1cc('0x81')](_0x18c954)[_0xe1cc('0x82')]()[_0xe1cc('0x83')]();return db[_0xe1cc('0x33')][_0xe1cc('0x4f')]({'where':{'id':_0x1f0c74['params']['id']}})[_0xe1cc('0x29')](function(_0x34fd96){return db[_0xe1cc('0x7a')][_0xe1cc('0x84')](function(_0x4227a7){return _0x34fd96[_0xe1cc('0x70')](_0x1f0c74[_0xe1cc('0x39')]['ids'],{'transaction':_0x4227a7})[_0xe1cc('0x29')](function(){if(!_[_0xe1cc('0x85')](_0x391ced)){return _0x34fd96['removeAgents'](_0x391ced,{'transaction':_0x4227a7});}})[_0xe1cc('0x29')](function(){_0x391ced[_0xe1cc('0x6e')](function(_0x3e6fef){socket[_0xe1cc('0x86')](_0xe1cc('0x87'),{'UserId':_0x3e6fef,'SmsQueueId':_0x34fd96['id']});});});});});});})[_0xe1cc('0x29')](respondWithStatusCode(_0x48cb37,null))['catch'](handleError(_0x48cb37,null));};exports[_0xe1cc('0x88')]=function(_0x2f2151,_0x4d0754,_0xd9adf){return db[_0xe1cc('0x33')][_0xe1cc('0x4f')]({'where':{'id':_0x2f2151['params']['id']}})[_0xe1cc('0x29')](handleEntityNotFound(_0x4d0754,null))[_0xe1cc('0x29')](function(_0x137340){if(_0x137340){return _0x137340[_0xe1cc('0x88')](_0x2f2151['body'][_0xe1cc('0x66')],_[_0xe1cc('0x89')](_0x2f2151['body'],[_0xe1cc('0x66'),'id'])||{})[_0xe1cc('0x8a')](function(_0x3b0ebb){for(var _0x3842ad=0x0;_0x3842ad<_0x2f2151[_0xe1cc('0x55')][_0xe1cc('0x66')][_0xe1cc('0x4c')];_0x3842ad+=0x1){socket[_0xe1cc('0x86')](_0xe1cc('0x6f'),{'UserId':Number(_0x2f2151[_0xe1cc('0x55')]['ids'][_0x3842ad]),'SmsQueueId':Number(_0x2f2151[_0xe1cc('0x4b')]['id'])});}return _0x3b0ebb;});}})[_0xe1cc('0x29')](respondWithResult(_0x4d0754,null))[_0xe1cc('0x49')](handleError(_0x4d0754,null));};exports[_0xe1cc('0x8b')]=function(_0x387dc6,_0x493e50,_0xe7c89c){return db[_0xe1cc('0x33')]['find']({'where':{'id':_0x387dc6[_0xe1cc('0x4b')]['id']}})[_0xe1cc('0x29')](handleEntityNotFound(_0x493e50,null))[_0xe1cc('0x29')](function(_0x4f3ff5){if(_0x4f3ff5){return _0x4f3ff5['removeAgents'](_0x387dc6[_0xe1cc('0x39')][_0xe1cc('0x66')])[_0xe1cc('0x29')](function(){if(_[_0xe1cc('0x8c')](_0x387dc6['query'][_0xe1cc('0x66')])){for(var _0x592fdb=0x0;_0x592fdb<_0x387dc6['query']['ids'][_0xe1cc('0x4c')];_0x592fdb+=0x1){socket[_0xe1cc('0x86')](_0xe1cc('0x87'),{'UserId':Number(_0x387dc6['query'][_0xe1cc('0x66')][_0x592fdb]),'SmsQueueId':Number(_0x387dc6[_0xe1cc('0x4b')]['id'])});}}else{socket[_0xe1cc('0x86')](_0xe1cc('0x87'),{'UserId':Number(_0x387dc6[_0xe1cc('0x39')][_0xe1cc('0x66')]),'SmsQueueId':Number(_0x387dc6[_0xe1cc('0x4b')]['id'])});}});}})[_0xe1cc('0x29')](respondWithStatusCode(_0x493e50,null))[_0xe1cc('0x49')](handleError(_0x493e50,null));};exports['getAgents']=function(_0xa465c3,_0x5c5367,_0x2edeed){var _0x26524a={};var _0x4e8d2f={};var _0x211525;var _0x48b7af;return db[_0xe1cc('0x33')][_0xe1cc('0x58')]({'where':{'id':_0xa465c3[_0xe1cc('0x4b')]['id']}})[_0xe1cc('0x29')](handleEntityNotFound(_0x5c5367,null))[_0xe1cc('0x29')](function(_0x5a0b01){if(_0x5a0b01){_0x211525=_0x5a0b01;_0x4e8d2f[_0xe1cc('0x38')]=_[_0xe1cc('0x3a')](db[_0xe1cc('0x5b')][_0xe1cc('0x34')]);_0x4e8d2f[_0xe1cc('0x39')]=_[_0xe1cc('0x3a')](_0xa465c3[_0xe1cc('0x39')]);_0x4e8d2f[_0xe1cc('0x3b')]=_['intersection'](_0x4e8d2f[_0xe1cc('0x38')],_0x4e8d2f[_0xe1cc('0x39')]);_0x26524a[_0xe1cc('0x3c')]=_[_0xe1cc('0x3d')](_0x4e8d2f[_0xe1cc('0x38')],qs[_0xe1cc('0x3e')](_0xa465c3[_0xe1cc('0x39')]['fields']));_0x26524a[_0xe1cc('0x3c')]=_0x26524a[_0xe1cc('0x3c')]['length']?_0x26524a[_0xe1cc('0x3c')]:_0x4e8d2f[_0xe1cc('0x38')];_0x26524a[_0xe1cc('0x41')]=qs[_0xe1cc('0x59')](_0xa465c3['query'][_0xe1cc('0x59')]);_0x26524a[_0xe1cc('0x42')]=qs[_0xe1cc('0x3b')](_[_0xe1cc('0x43')](_0xa465c3['query'],_0x4e8d2f['filters']));if(_0xa465c3[_0xe1cc('0x39')][_0xe1cc('0x44')]){_0x26524a[_0xe1cc('0x42')]=_['merge'](_0x26524a[_0xe1cc('0x42')],{'$or':_[_0xe1cc('0x32')](_0x26524a[_0xe1cc('0x3c')],function(_0x5975bc){var _0x12724c={};_0x12724c[_0x5975bc]={'$like':'%'+_0xa465c3[_0xe1cc('0x39')]['filter']+'%'};return _0x12724c;})});}_0x26524a=_[_0xe1cc('0x45')]({},_0x26524a,_0xa465c3[_0xe1cc('0x4e')]);return _0x211525['getAgents'](_0x26524a);}})[_0xe1cc('0x29')](function(_0x123a12){if(_0x123a12){_0x48b7af=_0x123a12[_0xe1cc('0x4c')];if(!_0xa465c3['query'][_0xe1cc('0x3f')]('nolimit')){_0x26524a[_0xe1cc('0x21')]=qs[_0xe1cc('0x21')](_0xa465c3[_0xe1cc('0x39')][_0xe1cc('0x21')]);_0x26524a['offset']=qs[_0xe1cc('0x1f')](_0xa465c3[_0xe1cc('0x39')]['offset']);}return _0x211525[_0xe1cc('0x8d')](_0x26524a);}})[_0xe1cc('0x29')](function(_0x16dfed){if(_0x16dfed){return _0x16dfed?{'count':_0x48b7af,'rows':_0x16dfed}:null;}})[_0xe1cc('0x29')](respondWithResult(_0x5c5367,null))[_0xe1cc('0x49')](handleError(_0x5c5367,null));};
\ No newline at end of file
index b877676..3bafd60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39da=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','SmsQueue'];(function(_0x39941c,_0x4ad1bb){var _0x52d9c7=function(_0x4e107e){while(--_0x4e107e){_0x39941c['push'](_0x39941c['shift']());}};_0x52d9c7(++_0x4ad1bb);}(_0x39da,0x69));var _0xa39d=function(_0x332314,_0x3bb09f){_0x332314=_0x332314-0x0;var _0x54f544=_0x39da[_0x332314];return _0x54f544;};'use strict';var EventEmitter=require(_0xa39d('0x0'));var SmsQueue=require(_0xa39d('0x1'))['db'][_0xa39d('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa39d('0x3'),'afterUpdate':_0xa39d('0x4'),'afterDestroy':_0xa39d('0x5')};function emitEvent(_0x2c7d60){return function(_0x53ec21,_0x2f17c5,_0x2c79aa){SmsQueueEvents['emit'](_0x2c7d60+':'+_0x53ec21['id'],_0x53ec21);SmsQueueEvents[_0xa39d('0x6')](_0x2c7d60,_0x53ec21);_0x2c79aa(null);};}for(var e in events){if(events[_0xa39d('0x7')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0xa39d('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0x5228=['SmsQueue','setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x5df342,_0x49243c){var _0x47ce29=function(_0x29b549){while(--_0x29b549){_0x5df342['push'](_0x5df342['shift']());}};_0x47ce29(++_0x49243c);}(_0x5228,0x142));var _0x8522=function(_0x114893,_0x7be906){_0x114893=_0x114893-0x0;var _0x1479d5=_0x5228[_0x114893];return _0x1479d5;};'use strict';var EventEmitter=require(_0x8522('0x0'));var SmsQueue=require(_0x8522('0x1'))['db'][_0x8522('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x8522('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x8522('0x4')};function emitEvent(_0x108f13){return function(_0x1e8153,_0x21e950,_0x3e9bb4){SmsQueueEvents[_0x8522('0x5')](_0x108f13+':'+_0x1e8153['id'],_0x1e8153);SmsQueueEvents[_0x8522('0x5')](_0x108f13,_0x1e8153);_0x3e9bb4(null);};}for(var e in events){if(events[_0x8522('0x6')](e)){var event=events[e];SmsQueue[_0x8522('0x7')](e,emitEvent(event));}}module[_0x8522('0x8')]=SmsQueueEvents;
\ No newline at end of file
index c6aa3c4..d848f84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x770f=['./smsQueue.attributes','exports','define','SmsQueue','sms_queues','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x26bcc1,_0x32756e){var _0x38e0d9=function(_0x18980a){while(--_0x18980a){_0x26bcc1['push'](_0x26bcc1['shift']());}};_0x38e0d9(++_0x32756e);}(_0x770f,0x7e));var _0xf770=function(_0x242a98,_0x13988e){_0x242a98=_0x242a98-0x0;var _0x580999=_0x770f[_0x242a98];return _0x580999;};'use strict';var _=require('lodash');var util=require(_0xf770('0x0'));var logger=require(_0xf770('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf770('0x2'));var rp=require(_0xf770('0x3'));var fs=require('fs');var path=require(_0xf770('0x4'));var rimraf=require(_0xf770('0x5'));var config=require('../../config/environment');var attributes=require(_0xf770('0x6'));module[_0xf770('0x7')]=function(_0x4fe207,_0x49c875){return _0x4fe207[_0xf770('0x8')](_0xf770('0x9'),attributes,{'tableName':_0xf770('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa143=['path','rimraf','./smsQueue.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4a95bb,_0x28e7b5){var _0x5b6fe3=function(_0x5b4590){while(--_0x5b4590){_0x4a95bb['push'](_0x4a95bb['shift']());}};_0x5b6fe3(++_0x28e7b5);}(_0xa143,0x1bc));var _0x3a14=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa143[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x3a14('0x0'));var util=require(_0x3a14('0x1'));var logger=require(_0x3a14('0x2'))(_0x3a14('0x3'));var moment=require(_0x3a14('0x4'));var BPromise=require(_0x3a14('0x5'));var rp=require(_0x3a14('0x6'));var fs=require('fs');var path=require(_0x3a14('0x7'));var rimraf=require(_0x3a14('0x8'));var config=require('../../config/environment');var attributes=require(_0x3a14('0x9'));module['exports']=function(_0x13e868,_0x3647e8){return _0x13e868[_0x3a14('0xa')]('SmsQueue',attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f25131..9cc1fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe49f=['debug','find','where','ShowSmsQueue','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetSmsQueue','SmsQueue','findAll','options','raw','limit','include','map','model','attributes'];(function(_0x4c4239,_0x5c3328){var _0x4d2d86=function(_0x535e2f){while(--_0x535e2f){_0x4c4239['push'](_0x4c4239['shift']());}};_0x4d2d86(++_0x5c3328);}(_0xe49f,0x163));var _0xfe49=function(_0x5016b5,_0x38eb27){_0x5016b5=_0x5016b5-0x0;var _0x4da6e5=_0xe49f[_0x5016b5];return _0x4da6e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfe49('0x0'));var BPromise=require(_0xfe49('0x1'));var rs=require(_0xfe49('0x2'));var fs=require('fs');var Redis=require(_0xfe49('0x3'));var db=require(_0xfe49('0x4'))['db'];var utils=require(_0xfe49('0x5'));var logger=require(_0xfe49('0x6'))(_0xfe49('0x7'));var config=require(_0xfe49('0x8'));var jayson=require(_0xfe49('0x9'));var client=jayson[_0xfe49('0xa')][_0xfe49('0xb')]({'port':0x232a});config[_0xfe49('0xc')]=_[_0xfe49('0xd')](config[_0xfe49('0xc')],{'host':_0xfe49('0xe'),'port':0x18eb});var socket=require(_0xfe49('0xf'))(new Redis(config['redis']));require('./smsQueue.socket')['register'](socket);function respondWithRpcPromise(_0x5bbf2e,_0x280ece,_0x3fd916){return new BPromise(function(_0x568661,_0x22aecc){return client['request'](_0x5bbf2e,_0x3fd916)[_0xfe49('0x10')](function(_0x1d32f9){logger[_0xfe49('0x11')](_0xfe49('0x12'),_0x280ece,_0xfe49('0x13'));logger['debug']('SmsQueue,\x20%s,\x20%s,\x20%s',_0x280ece,_0xfe49('0x13'),JSON[_0xfe49('0x14')](_0x1d32f9));if(_0x1d32f9[_0xfe49('0x15')]){if(_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x16')]===0x1f4){logger[_0xfe49('0x15')](_0xfe49('0x12'),_0x280ece,_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);return _0x22aecc(_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);}logger[_0xfe49('0x15')](_0xfe49('0x12'),_0x280ece,_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);return _0x568661(_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);}else{logger['info'](_0xfe49('0x12'),_0x280ece,_0xfe49('0x13'));_0x568661(_0x1d32f9['result'][_0xfe49('0x17')]);}})[_0xfe49('0x18')](function(_0x18b128){logger[_0xfe49('0x15')](_0xfe49('0x12'),_0x280ece,_0x18b128);_0x22aecc(_0x18b128);});});}exports[_0xfe49('0x19')]=function(_0x568e8f){var _0x2521b9=this;return new Promise(function(_0x57d74b,_0x201bd9){return db[_0xfe49('0x1a')][_0xfe49('0x1b')]({'raw':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f[_0xfe49('0x1c')][_0xfe49('0x1d')]===undefined?!![]:![]:!![],'where':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f[_0xfe49('0x1c')]['where']||null:null,'attributes':_0x568e8f['options']?_0x568e8f[_0xfe49('0x1c')]['attributes']||null:null,'limit':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f[_0xfe49('0x1c')][_0xfe49('0x1e')]||null:null,'include':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f['options'][_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x568e8f[_0xfe49('0x1c')]['include'],function(_0x2243e0){return{'model':db[_0x2243e0[_0xfe49('0x21')]],'as':_0x2243e0['as'],'attributes':_0x2243e0['attributes'],'include':_0x2243e0[_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x2243e0[_0xfe49('0x1f')],function(_0x402f47){return{'model':db[_0x402f47[_0xfe49('0x21')]],'as':_0x402f47['as'],'attributes':_0x402f47['attributes'],'include':_0x402f47[_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x402f47[_0xfe49('0x1f')],function(_0x5ac966){return{'model':db[_0x5ac966[_0xfe49('0x21')]],'as':_0x5ac966['as'],'attributes':_0x5ac966[_0xfe49('0x22')]};}):[]};}):[]};}):[]:[]})[_0xfe49('0x10')](function(_0x330161){logger['info'](_0xfe49('0x19'),_0x568e8f);logger[_0xfe49('0x23')](_0xfe49('0x19'),_0x568e8f,JSON['stringify'](_0x330161));_0x57d74b(_0x330161);})[_0xfe49('0x18')](function(_0x27cbe6){logger['error']('GetSmsQueue',_0x27cbe6[_0xfe49('0x17')],_0x568e8f);_0x201bd9(_0x2521b9[_0xfe49('0x15')](0x1f4,_0x27cbe6['message']));});});};exports['ShowSmsQueue']=function(_0x3cec36){var _0x2be5a1=this;return new Promise(function(_0x266d1e,_0x5c4c45){return db[_0xfe49('0x1a')][_0xfe49('0x24')]({'raw':_0x3cec36[_0xfe49('0x1c')]?_0x3cec36['options'][_0xfe49('0x1d')]===undefined?!![]:![]:!![],'where':_0x3cec36['options']?_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x25')]||null:null,'attributes':_0x3cec36[_0xfe49('0x1c')]?_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x22')]||null:null,'include':_0x3cec36[_0xfe49('0x1c')]?_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x1f')],function(_0xae2c9a){return{'model':db[_0xae2c9a['model']],'as':_0xae2c9a['as'],'attributes':_0xae2c9a[_0xfe49('0x22')],'include':_0xae2c9a[_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0xae2c9a[_0xfe49('0x1f')],function(_0x48ff5b){return{'model':db[_0x48ff5b[_0xfe49('0x21')]],'as':_0x48ff5b['as'],'attributes':_0x48ff5b['attributes'],'include':_0x48ff5b['include']?_[_0xfe49('0x20')](_0x48ff5b[_0xfe49('0x1f')],function(_0x348187){return{'model':db[_0x348187[_0xfe49('0x21')]],'as':_0x348187['as'],'attributes':_0x348187[_0xfe49('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45cec7){logger[_0xfe49('0x11')](_0xfe49('0x26'),_0x3cec36);logger[_0xfe49('0x23')]('ShowSmsQueue',_0x3cec36,JSON[_0xfe49('0x14')](_0x45cec7));_0x266d1e(_0x45cec7);})['catch'](function(_0x5e5826){logger[_0xfe49('0x15')]('ShowSmsQueue',_0x5e5826[_0xfe49('0x17')],_0x3cec36);_0x5c4c45(_0x2be5a1[_0xfe49('0x15')](0x1f4,_0x5e5826['message']));});});};
\ No newline at end of file
+var _0x5a03=['result','catch','options','where','attributes','limit','include','map','model','GetSmsQueue','SmsQueue','find','raw','ShowSmsQueue','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2d2258,_0x2ce510){var _0x18e155=function(_0x11949e){while(--_0x11949e){_0x2d2258['push'](_0x2d2258['shift']());}};_0x18e155(++_0x2ce510);}(_0x5a03,0x1a8));var _0x35a0=function(_0x252b56,_0x5bba63){_0x252b56=_0x252b56-0x0;var _0x2ce8d8=_0x5a03[_0x252b56];return _0x2ce8d8;};'use strict';var _=require(_0x35a0('0x0'));var util=require(_0x35a0('0x1'));var moment=require('moment');var BPromise=require(_0x35a0('0x2'));var rs=require(_0x35a0('0x3'));var fs=require('fs');var Redis=require(_0x35a0('0x4'));var db=require(_0x35a0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x35a0('0x6'))(_0x35a0('0x7'));var config=require(_0x35a0('0x8'));var jayson=require(_0x35a0('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x35a0('0xa')]=_[_0x35a0('0xb')](config['redis'],{'host':_0x35a0('0xc'),'port':0x18eb});var socket=require(_0x35a0('0xd'))(new Redis(config['redis']));require(_0x35a0('0xe'))[_0x35a0('0xf')](socket);function respondWithRpcPromise(_0x3a5560,_0x5ea097,_0x48a626){return new BPromise(function(_0x243b6e,_0x4193b9){return client[_0x35a0('0x10')](_0x3a5560,_0x48a626)[_0x35a0('0x11')](function(_0x58abab){logger[_0x35a0('0x12')](_0x35a0('0x13'),_0x5ea097,_0x35a0('0x14'));logger[_0x35a0('0x15')](_0x35a0('0x16'),_0x5ea097,_0x35a0('0x14'),JSON[_0x35a0('0x17')](_0x58abab));if(_0x58abab[_0x35a0('0x18')]){if(_0x58abab[_0x35a0('0x18')][_0x35a0('0x19')]===0x1f4){logger[_0x35a0('0x18')](_0x35a0('0x13'),_0x5ea097,_0x58abab['error'][_0x35a0('0x1a')]);return _0x4193b9(_0x58abab[_0x35a0('0x18')][_0x35a0('0x1a')]);}logger[_0x35a0('0x18')](_0x35a0('0x13'),_0x5ea097,_0x58abab[_0x35a0('0x18')][_0x35a0('0x1a')]);return _0x243b6e(_0x58abab[_0x35a0('0x18')][_0x35a0('0x1a')]);}else{logger['info']('SmsQueue,\x20%s,\x20%s',_0x5ea097,_0x35a0('0x14'));_0x243b6e(_0x58abab[_0x35a0('0x1b')]['message']);}})[_0x35a0('0x1c')](function(_0x4a04a6){logger[_0x35a0('0x18')](_0x35a0('0x13'),_0x5ea097,_0x4a04a6);_0x4193b9(_0x4a04a6);});});}exports['GetSmsQueue']=function(_0x5d1d71){var _0x53bee0=this;return new Promise(function(_0x19c93c,_0x589016){return db['SmsQueue']['findAll']({'raw':_0x5d1d71[_0x35a0('0x1d')]?_0x5d1d71[_0x35a0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x5d1d71[_0x35a0('0x1d')]?_0x5d1d71[_0x35a0('0x1d')][_0x35a0('0x1e')]||null:null,'attributes':_0x5d1d71[_0x35a0('0x1d')]?_0x5d1d71['options'][_0x35a0('0x1f')]||null:null,'limit':_0x5d1d71['options']?_0x5d1d71[_0x35a0('0x1d')][_0x35a0('0x20')]||null:null,'include':_0x5d1d71[_0x35a0('0x1d')]?_0x5d1d71[_0x35a0('0x1d')][_0x35a0('0x21')]?_[_0x35a0('0x22')](_0x5d1d71['options']['include'],function(_0x54e8fe){return{'model':db[_0x54e8fe[_0x35a0('0x23')]],'as':_0x54e8fe['as'],'attributes':_0x54e8fe[_0x35a0('0x1f')],'include':_0x54e8fe[_0x35a0('0x21')]?_[_0x35a0('0x22')](_0x54e8fe[_0x35a0('0x21')],function(_0x400c87){return{'model':db[_0x400c87[_0x35a0('0x23')]],'as':_0x400c87['as'],'attributes':_0x400c87[_0x35a0('0x1f')],'include':_0x400c87[_0x35a0('0x21')]?_[_0x35a0('0x22')](_0x400c87[_0x35a0('0x21')],function(_0x5b81c5){return{'model':db[_0x5b81c5[_0x35a0('0x23')]],'as':_0x5b81c5['as'],'attributes':_0x5b81c5['attributes']};}):[]};}):[]};}):[]:[]})[_0x35a0('0x11')](function(_0xbca02d){logger[_0x35a0('0x12')](_0x35a0('0x24'),_0x5d1d71);logger[_0x35a0('0x15')]('GetSmsQueue',_0x5d1d71,JSON[_0x35a0('0x17')](_0xbca02d));_0x19c93c(_0xbca02d);})[_0x35a0('0x1c')](function(_0x2b1520){logger[_0x35a0('0x18')](_0x35a0('0x24'),_0x2b1520[_0x35a0('0x1a')],_0x5d1d71);_0x589016(_0x53bee0[_0x35a0('0x18')](0x1f4,_0x2b1520[_0x35a0('0x1a')]));});});};exports['ShowSmsQueue']=function(_0x24a04b){var _0xe0e1e5=this;return new Promise(function(_0x53b42a,_0x52badf){return db[_0x35a0('0x25')][_0x35a0('0x26')]({'raw':_0x24a04b['options']?_0x24a04b[_0x35a0('0x1d')][_0x35a0('0x27')]===undefined?!![]:![]:!![],'where':_0x24a04b[_0x35a0('0x1d')]?_0x24a04b[_0x35a0('0x1d')][_0x35a0('0x1e')]||null:null,'attributes':_0x24a04b[_0x35a0('0x1d')]?_0x24a04b[_0x35a0('0x1d')]['attributes']||null:null,'include':_0x24a04b['options']?_0x24a04b['options']['include']?_[_0x35a0('0x22')](_0x24a04b[_0x35a0('0x1d')]['include'],function(_0x3c29d5){return{'model':db[_0x3c29d5[_0x35a0('0x23')]],'as':_0x3c29d5['as'],'attributes':_0x3c29d5['attributes'],'include':_0x3c29d5[_0x35a0('0x21')]?_['map'](_0x3c29d5[_0x35a0('0x21')],function(_0x5f0e78){return{'model':db[_0x5f0e78[_0x35a0('0x23')]],'as':_0x5f0e78['as'],'attributes':_0x5f0e78['attributes'],'include':_0x5f0e78[_0x35a0('0x21')]?_[_0x35a0('0x22')](_0x5f0e78[_0x35a0('0x21')],function(_0x40f3e2){return{'model':db[_0x40f3e2[_0x35a0('0x23')]],'as':_0x40f3e2['as'],'attributes':_0x40f3e2[_0x35a0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x35a0('0x11')](function(_0xfc6caa){logger['info']('ShowSmsQueue',_0x24a04b);logger[_0x35a0('0x15')](_0x35a0('0x28'),_0x24a04b,JSON['stringify'](_0xfc6caa));_0x53b42a(_0xfc6caa);})[_0x35a0('0x1c')](function(_0x288979){logger['error'](_0x35a0('0x28'),_0x288979[_0x35a0('0x1a')],_0x24a04b);_0x52badf(_0xe0e1e5[_0x35a0('0x18')](0x1f4,_0x288979[_0x35a0('0x1a')]));});});};
\ No newline at end of file
index bfe9708..d9fa629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ff1=['remove','update','emit','removeListener','register','length','./smsQueue.events','save'];(function(_0x2deccd,_0x91a2b){var _0x1927bc=function(_0x3f69b4){while(--_0x3f69b4){_0x2deccd['push'](_0x2deccd['shift']());}};_0x1927bc(++_0x91a2b);}(_0x0ff1,0xa6));var _0x10ff=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0x0ff1[_0x2e913b];return _0x173899;};'use strict';var SmsQueueEvents=require(_0x10ff('0x0'));var events=[_0x10ff('0x1'),_0x10ff('0x2'),_0x10ff('0x3')];function createListener(_0x1bbfcb,_0xe4ced2){return function(_0x5008a5){_0xe4ced2[_0x10ff('0x4')](_0x1bbfcb,_0x5008a5);};}function removeListener(_0x5e4d78,_0x207e3a){return function(){SmsQueueEvents[_0x10ff('0x5')](_0x5e4d78,_0x207e3a);};}exports[_0x10ff('0x6')]=function(_0x2ede90){for(var _0x424a9c=0x0,_0x45051c=events[_0x10ff('0x7')];_0x424a9c<_0x45051c;_0x424a9c++){var _0x304471=events[_0x424a9c];var _0x5bfcbc=createListener('smsQueue:'+_0x304471,_0x2ede90);SmsQueueEvents['on'](_0x304471,_0x5bfcbc);}};
\ No newline at end of file
+var _0x4dc6=['./smsQueue.events','save','remove','emit','removeListener','register','length','smsQueue:'];(function(_0x39c12e,_0x585534){var _0x58dbf4=function(_0xd35390){while(--_0xd35390){_0x39c12e['push'](_0x39c12e['shift']());}};_0x58dbf4(++_0x585534);}(_0x4dc6,0x88));var _0x64dc=function(_0x4eab01,_0x34745f){_0x4eab01=_0x4eab01-0x0;var _0x4f4b70=_0x4dc6[_0x4eab01];return _0x4f4b70;};'use strict';var SmsQueueEvents=require(_0x64dc('0x0'));var events=[_0x64dc('0x1'),_0x64dc('0x2'),'update'];function createListener(_0x27f308,_0x52c421){return function(_0x2219fa){_0x52c421[_0x64dc('0x3')](_0x27f308,_0x2219fa);};}function removeListener(_0x567e4d,_0x464a58){return function(){SmsQueueEvents[_0x64dc('0x4')](_0x567e4d,_0x464a58);};}exports[_0x64dc('0x5')]=function(_0x1fd4fc){for(var _0x211f3d=0x0,_0x200d5a=events[_0x64dc('0x6')];_0x211f3d<_0x200d5a;_0x211f3d++){var _0x5ceeff=events[_0x211f3d];var _0x4129b1=createListener(_0x64dc('0x7')+_0x5ceeff,_0x1fd4fc);SmsQueueEvents['on'](_0x5ceeff,_0x4129b1);}};
\ No newline at end of file
index 06d6e18..1d5d199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4f5=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','util','path','connect-timeout'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xc4f5,0xa5));var _0x5c4f=function(_0x524b2a,_0x13e281){_0x524b2a=_0x524b2a-0x0;var _0x176cc5=_0xc4f5[_0x524b2a];return _0x176cc5;};'use strict';var multer=require('multer');var util=require(_0x5c4f('0x0'));var path=require(_0x5c4f('0x1'));var timeout=require(_0x5c4f('0x2'));var express=require('express');var router=express[_0x5c4f('0x3')]();var fs_extra=require(_0x5c4f('0x4'));var auth=require(_0x5c4f('0x5'));var interaction=require(_0x5c4f('0x6'));var config=require(_0x5c4f('0x7'));var controller=require('./smsQueueReport.controller');router[_0x5c4f('0x8')]('/',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0xa')]);router[_0x5c4f('0x8')](_0x5c4f('0xb'),auth['isAuthenticated'](),controller[_0x5c4f('0xc')]);router['get'](_0x5c4f('0xd'),auth['isAuthenticated'](),controller[_0x5c4f('0xe')]);router[_0x5c4f('0xf')]('/',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x10')]);router[_0x5c4f('0x11')](_0x5c4f('0xd'),auth[_0x5c4f('0x9')](),controller['update']);router[_0x5c4f('0x12')](_0x5c4f('0xd'),auth['isAuthenticated'](),controller[_0x5c4f('0x13')]);module[_0x5c4f('0x14')]=router;
\ No newline at end of file
+var _0x9318=['../../config/environment','./smsQueueReport.controller','get','index','isAuthenticated','describe','show','create','put','update','delete','/:id','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x38c699,_0x56fea7){var _0x3b1ded=function(_0x100851){while(--_0x100851){_0x38c699['push'](_0x38c699['shift']());}};_0x3b1ded(++_0x56fea7);}(_0x9318,0x1e8));var _0x8931=function(_0x105d2e,_0xefc0f9){_0x105d2e=_0x105d2e-0x0;var _0x44969d=_0x9318[_0x105d2e];return _0x44969d;};'use strict';var multer=require(_0x8931('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8931('0x1'));var express=require(_0x8931('0x2'));var router=express[_0x8931('0x3')]();var fs_extra=require(_0x8931('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8931('0x5'));var config=require(_0x8931('0x6'));var controller=require(_0x8931('0x7'));router[_0x8931('0x8')]('/',auth['isAuthenticated'](),controller[_0x8931('0x9')]);router[_0x8931('0x8')]('/describe',auth[_0x8931('0xa')](),controller[_0x8931('0xb')]);router['get']('/:id',auth[_0x8931('0xa')](),controller[_0x8931('0xc')]);router['post']('/',auth[_0x8931('0xa')](),controller[_0x8931('0xd')]);router[_0x8931('0xe')]('/:id',auth[_0x8931('0xa')](),controller[_0x8931('0xf')]);router[_0x8931('0x10')](_0x8931('0x11'),auth[_0x8931('0xa')](),controller['destroy']);module[_0x8931('0x12')]=router;
\ No newline at end of file
index 2baa53e..aa882ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576b=['DATE','STRING'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x576b,0x1d9));var _0xb576=function(_0x26f96d,_0x2bc3d2){_0x26f96d=_0x26f96d-0x0;var _0x52c0f7=_0x576b[_0x26f96d];return _0x52c0f7;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xb576('0x0')],'allowNull':![]},'from':{'type':Sequelize[_0xb576('0x0')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xb576('0x1')]},'acceptAt':{'type':Sequelize[_0xb576('0x1')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xb576('0x0')]}};
\ No newline at end of file
+var _0x8786=['STRING','DATE','moment','sequelize','exports'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x8786,0x7a));var _0x6878=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x8786[_0x465a0c];return _0x1e202e;};'use strict';var moment=require(_0x6878('0x0'));var Sequelize=require(_0x6878('0x1'));module[_0x6878('0x2')]={'uniqueid':{'type':Sequelize[_0x6878('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x6878('0x3')]},'joinAt':{'type':Sequelize[_0x6878('0x4')]},'leaveAt':{'type':Sequelize[_0x6878('0x4')]},'acceptAt':{'type':Sequelize[_0x6878('0x4')]},'exitAt':{'type':Sequelize[_0x6878('0x4')]},'reason':{'type':Sequelize[_0x6878('0x3')]}};
\ No newline at end of file
index e9886e5..41b6714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a6=['Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','includeAll','SmsQueueReport','findAll','rows','show','params','keys','rawAttributes','include','merge','find','catch','create','body','describe','rimraf','request-promise','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0x26a6,0x194));var _0x626a=function(_0x556631,_0x22a74c){_0x556631=_0x556631-0x0;var _0x3e10c6=_0x26a6[_0x556631];return _0x3e10c6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x626a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x626a('0x1'));var moment=require('moment');var BPromise=require(_0x626a('0x2'));var Mustache=require(_0x626a('0x3'));var util=require(_0x626a('0x4'));var path=require(_0x626a('0x5'));var sox=require(_0x626a('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x626a('0x7'));var squel=require(_0x626a('0x8'));var crypto=require('crypto');var jsforce=require(_0x626a('0x9'));var deskjs=require(_0x626a('0xa'));var toCsv=require('to-csv');var querystring=require(_0x626a('0xb'));var Papa=require(_0x626a('0xc'));var Redis=require(_0x626a('0xd'));var authService=require(_0x626a('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x626a('0xf'));var hardwareService=require(_0x626a('0x10'));var logger=require('../../config/logger')(_0x626a('0x11'));var utils=require(_0x626a('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x626a('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57accd,_0x17e346){_0x17e346=_0x17e346||0xcc;return function(_0x47bd31){if(_0x47bd31){return _0x57accd[_0x626a('0x14')](_0x17e346);}return _0x57accd['status'](_0x17e346)['end']();};}function respondWithResult(_0x50474e,_0x2cd06a){_0x2cd06a=_0x2cd06a||0xc8;return function(_0xd131b1){if(_0xd131b1){return _0x50474e[_0x626a('0x15')](_0x2cd06a)[_0x626a('0x16')](_0xd131b1);}};}function respondWithFilteredResult(_0x2dcfd2,_0x4aad37){return function(_0x44d249){if(_0x44d249){var _0x4a547a=typeof _0x4aad37['offset']===_0x626a('0x17')&&typeof _0x4aad37[_0x626a('0x18')]===_0x626a('0x17');var _0x2fe0ec=_0x44d249['count'];var _0x11f3bd=_0x4a547a?0x0:_0x4aad37['offset'];var _0x33974c=_0x4a547a?_0x44d249[_0x626a('0x19')]:_0x4aad37[_0x626a('0x1a')]+_0x4aad37[_0x626a('0x18')];var _0x5284d9;if(_0x33974c>=_0x2fe0ec){_0x33974c=_0x2fe0ec;_0x5284d9=0xc8;}else{_0x5284d9=0xce;}_0x2dcfd2[_0x626a('0x15')](_0x5284d9);return _0x2dcfd2[_0x626a('0x1b')](_0x626a('0x1c'),_0x11f3bd+'-'+_0x33974c+'/'+_0x2fe0ec)['json'](_0x44d249);}return null;};}function patchUpdates(_0x5a80ca){return function(_0x18fc85){try{jsonpatch['apply'](_0x18fc85,_0x5a80ca,!![]);}catch(_0x45db56){return BPromise[_0x626a('0x1d')](_0x45db56);}return _0x18fc85[_0x626a('0x1e')]();};}function saveUpdates(_0x37f347,_0x3aafd8){return function(_0x2f0f1e){if(_0x2f0f1e){return _0x2f0f1e[_0x626a('0x1f')](_0x37f347)[_0x626a('0x20')](function(_0x4ee49e){return _0x4ee49e;});}return null;};}function removeEntity(_0x551cc6,_0x10ec7e){return function(_0x57cd3a){if(_0x57cd3a){return _0x57cd3a[_0x626a('0x21')]()['then'](function(){_0x551cc6[_0x626a('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44575f,_0x23e24f){return function(_0x5388ef){if(!_0x5388ef){_0x44575f[_0x626a('0x14')](0x194);}return _0x5388ef;};}function handleError(_0x121104,_0x151f9e){_0x151f9e=_0x151f9e||0x1f4;return function(_0x9a03dd){logger[_0x626a('0x22')](_0x9a03dd[_0x626a('0x23')]);if(_0x9a03dd[_0x626a('0x24')]){delete _0x9a03dd['name'];}_0x121104[_0x626a('0x15')](_0x151f9e)[_0x626a('0x25')](_0x9a03dd);};}exports['index']=function(_0x2e2530,_0x259694){var _0x2a0205={},_0x35c68f={},_0x3b44c5={'count':0x0,'rows':[]};var _0x2dda0b=_[_0x626a('0x26')](db['SmsQueueReport']['rawAttributes'],function(_0x78763f){return{'name':_0x78763f[_0x626a('0x27')],'type':_0x78763f[_0x626a('0x28')][_0x626a('0x29')]};});_0x35c68f[_0x626a('0x2a')]=_[_0x626a('0x26')](_0x2dda0b,'name');_0x35c68f['query']=_['keys'](_0x2e2530[_0x626a('0x2b')]);_0x35c68f[_0x626a('0x2c')]=_['intersection'](_0x35c68f['model'],_0x35c68f[_0x626a('0x2b')]);_0x2a0205[_0x626a('0x2d')]=_[_0x626a('0x2e')](_0x35c68f[_0x626a('0x2a')],qs[_0x626a('0x2f')](_0x2e2530[_0x626a('0x2b')][_0x626a('0x2f')]));_0x2a0205['attributes']=_0x2a0205['attributes'][_0x626a('0x30')]?_0x2a0205[_0x626a('0x2d')]:_0x35c68f['model'];if(!_0x2e2530[_0x626a('0x2b')][_0x626a('0x31')]('nolimit')){_0x2a0205[_0x626a('0x18')]=qs[_0x626a('0x18')](_0x2e2530['query']['limit']);_0x2a0205[_0x626a('0x1a')]=qs[_0x626a('0x1a')](_0x2e2530[_0x626a('0x2b')]['offset']);}_0x2a0205[_0x626a('0x32')]=qs['sort'](_0x2e2530[_0x626a('0x2b')][_0x626a('0x33')]);_0x2a0205[_0x626a('0x34')]=qs['filters'](_[_0x626a('0x35')](_0x2e2530[_0x626a('0x2b')],_0x35c68f[_0x626a('0x2c')]),_0x2dda0b);if(_0x2e2530[_0x626a('0x2b')]['filter']){_0x2a0205[_0x626a('0x34')]=_['merge'](_0x2a0205[_0x626a('0x34')],{'$or':_[_0x626a('0x26')](_0x2dda0b,function(_0xa5344){if(_0xa5344[_0x626a('0x28')]!==_0x626a('0x36')){var _0x5215db={};_0x5215db[_0xa5344[_0x626a('0x24')]]={'$like':'%'+_0x2e2530[_0x626a('0x2b')][_0x626a('0x37')]+'%'};return _0x5215db;}})});}_0x2a0205=_['merge']({},_0x2a0205,_0x2e2530[_0x626a('0x38')]);var _0x4ca71a={'where':_0x2a0205[_0x626a('0x34')]};return db['SmsQueueReport'][_0x626a('0x19')](_0x4ca71a)[_0x626a('0x20')](function(_0x365187){_0x3b44c5[_0x626a('0x19')]=_0x365187;if(_0x2e2530['query'][_0x626a('0x39')]){_0x2a0205['include']=[{'all':!![]}];}return db[_0x626a('0x3a')][_0x626a('0x3b')](_0x2a0205);})[_0x626a('0x20')](function(_0x17603a){_0x3b44c5[_0x626a('0x3c')]=_0x17603a;return _0x3b44c5;})['then'](respondWithFilteredResult(_0x259694,_0x2a0205))['catch'](handleError(_0x259694,null));};exports[_0x626a('0x3d')]=function(_0x53b2ac,_0x4e0add){var _0x4effbb={'raw':!![],'where':{'id':_0x53b2ac[_0x626a('0x3e')]['id']}},_0x59033d={};_0x59033d['model']=_[_0x626a('0x3f')](db['SmsQueueReport'][_0x626a('0x40')]);_0x59033d[_0x626a('0x2b')]=_[_0x626a('0x3f')](_0x53b2ac[_0x626a('0x2b')]);_0x59033d[_0x626a('0x2c')]=_[_0x626a('0x2e')](_0x59033d[_0x626a('0x2a')],_0x59033d[_0x626a('0x2b')]);_0x4effbb[_0x626a('0x2d')]=_[_0x626a('0x2e')](_0x59033d[_0x626a('0x2a')],qs[_0x626a('0x2f')](_0x53b2ac['query'][_0x626a('0x2f')]));_0x4effbb[_0x626a('0x2d')]=_0x4effbb['attributes'][_0x626a('0x30')]?_0x4effbb['attributes']:_0x59033d[_0x626a('0x2a')];if(_0x53b2ac[_0x626a('0x2b')][_0x626a('0x39')]){_0x4effbb[_0x626a('0x41')]=[{'all':!![]}];}_0x4effbb=_[_0x626a('0x42')]({},_0x4effbb,_0x53b2ac['options']);return db[_0x626a('0x3a')][_0x626a('0x43')](_0x4effbb)[_0x626a('0x20')](handleEntityNotFound(_0x4e0add,null))[_0x626a('0x20')](respondWithResult(_0x4e0add,null))[_0x626a('0x44')](handleError(_0x4e0add,null));};exports[_0x626a('0x45')]=function(_0x245da4,_0x4894f3){return db[_0x626a('0x3a')]['create'](_0x245da4[_0x626a('0x46')],{})[_0x626a('0x20')](respondWithResult(_0x4894f3,0xc9))[_0x626a('0x44')](handleError(_0x4894f3,null));};exports[_0x626a('0x1f')]=function(_0x11f1ba,_0x175e66){if(_0x11f1ba[_0x626a('0x46')]['id']){delete _0x11f1ba[_0x626a('0x46')]['id'];}return db[_0x626a('0x3a')][_0x626a('0x43')]({'where':{'id':_0x11f1ba[_0x626a('0x3e')]['id']}})[_0x626a('0x20')](handleEntityNotFound(_0x175e66,null))['then'](saveUpdates(_0x11f1ba[_0x626a('0x46')],null))[_0x626a('0x20')](respondWithResult(_0x175e66,null))[_0x626a('0x44')](handleError(_0x175e66,null));};exports[_0x626a('0x21')]=function(_0x5411dc,_0x4c8359){return db['SmsQueueReport'][_0x626a('0x43')]({'where':{'id':_0x5411dc[_0x626a('0x3e')]['id']}})[_0x626a('0x20')](handleEntityNotFound(_0x4c8359,null))[_0x626a('0x20')](removeEntity(_0x4c8359,null))[_0x626a('0x44')](handleError(_0x4c8359,null));};exports[_0x626a('0x47')]=function(_0x482665,_0x2cb046){return db['SmsQueueReport'][_0x626a('0x47')]()['then'](respondWithResult(_0x2cb046,null))[_0x626a('0x44')](handleError(_0x2cb046,null));};
\ No newline at end of file
+var _0xd417=['order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','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','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','stack','name','index','map','SmsQueueReport','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit'];(function(_0x3f7328,_0x553ac2){var _0x582d1a=function(_0x2eadd1){while(--_0x2eadd1){_0x3f7328['push'](_0x3f7328['shift']());}};_0x582d1a(++_0x553ac2);}(_0xd417,0x188));var _0x7d41=function(_0x58d140,_0x21dcff){_0x58d140=_0x58d140-0x0;var _0x1a9e30=_0xd417[_0x58d140];return _0x1a9e30;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7d41('0x0'));var zipdir=require(_0x7d41('0x1'));var jsonpatch=require(_0x7d41('0x2'));var rp=require(_0x7d41('0x3'));var moment=require('moment');var BPromise=require(_0x7d41('0x4'));var Mustache=require(_0x7d41('0x5'));var util=require(_0x7d41('0x6'));var path=require('path');var sox=require(_0x7d41('0x7'));var csv=require(_0x7d41('0x8'));var ejs=require(_0x7d41('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7d41('0xa'));var squel=require(_0x7d41('0xb'));var crypto=require('crypto');var jsforce=require(_0x7d41('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7d41('0x8'));var querystring=require(_0x7d41('0xd'));var Papa=require('papaparse');var Redis=require(_0x7d41('0xe'));var authService=require(_0x7d41('0xf'));var qs=require(_0x7d41('0x10'));var as=require(_0x7d41('0x11'));var hardwareService=require(_0x7d41('0x12'));var logger=require(_0x7d41('0x13'))(_0x7d41('0x14'));var utils=require(_0x7d41('0x15'));var config=require(_0x7d41('0x16'));var licenseUtil=require(_0x7d41('0x17'));var db=require(_0x7d41('0x18'))['db'];function respondWithStatusCode(_0x39f492,_0x42e266){_0x42e266=_0x42e266||0xcc;return function(_0xc8af96){if(_0xc8af96){return _0x39f492['sendStatus'](_0x42e266);}return _0x39f492[_0x7d41('0x19')](_0x42e266)[_0x7d41('0x1a')]();};}function respondWithResult(_0x45f920,_0x342395){_0x342395=_0x342395||0xc8;return function(_0x281ef5){if(_0x281ef5){return _0x45f920['status'](_0x342395)[_0x7d41('0x1b')](_0x281ef5);}};}function respondWithFilteredResult(_0x269645,_0x15e427){return function(_0x4b53e2){if(_0x4b53e2){var _0x81382d=typeof _0x15e427[_0x7d41('0x1c')]==='undefined'&&typeof _0x15e427[_0x7d41('0x1d')]===_0x7d41('0x1e');var _0x396e09=_0x4b53e2[_0x7d41('0x1f')];var _0x199902=_0x81382d?0x0:_0x15e427[_0x7d41('0x1c')];var _0x3776ee=_0x81382d?_0x4b53e2[_0x7d41('0x1f')]:_0x15e427[_0x7d41('0x1c')]+_0x15e427[_0x7d41('0x1d')];var _0x3c4974;if(_0x3776ee>=_0x396e09){_0x3776ee=_0x396e09;_0x3c4974=0xc8;}else{_0x3c4974=0xce;}_0x269645['status'](_0x3c4974);return _0x269645[_0x7d41('0x20')](_0x7d41('0x21'),_0x199902+'-'+_0x3776ee+'/'+_0x396e09)['json'](_0x4b53e2);}return null;};}function patchUpdates(_0x3312f8){return function(_0x33aa68){try{jsonpatch['apply'](_0x33aa68,_0x3312f8,!![]);}catch(_0x205748){return BPromise[_0x7d41('0x22')](_0x205748);}return _0x33aa68[_0x7d41('0x23')]();};}function saveUpdates(_0x4a0c26,_0x3f1cb4){return function(_0x1a590b){if(_0x1a590b){return _0x1a590b[_0x7d41('0x24')](_0x4a0c26)[_0x7d41('0x25')](function(_0x55e39e){return _0x55e39e;});}return null;};}function removeEntity(_0x369329,_0x4bbe09){return function(_0x5eaa85){if(_0x5eaa85){return _0x5eaa85[_0x7d41('0x26')]()[_0x7d41('0x25')](function(){_0x369329[_0x7d41('0x19')](0xcc)[_0x7d41('0x1a')]();});}};}function handleEntityNotFound(_0x84fb1b,_0x22bec6){return function(_0x41449e){if(!_0x41449e){_0x84fb1b[_0x7d41('0x27')](0x194);}return _0x41449e;};}function handleError(_0x294f17,_0x2aa34c){_0x2aa34c=_0x2aa34c||0x1f4;return function(_0x1fc066){logger['error'](_0x1fc066[_0x7d41('0x28')]);if(_0x1fc066[_0x7d41('0x29')]){delete _0x1fc066[_0x7d41('0x29')];}_0x294f17[_0x7d41('0x19')](_0x2aa34c)['send'](_0x1fc066);};}exports[_0x7d41('0x2a')]=function(_0x328a82,_0x1a59ef){var _0x20567b={},_0x5b81ef={},_0x53a9a0={'count':0x0,'rows':[]};var _0x1d2aef=_[_0x7d41('0x2b')](db[_0x7d41('0x2c')][_0x7d41('0x2d')],function(_0x67ab5f){return{'name':_0x67ab5f['fieldName'],'type':_0x67ab5f[_0x7d41('0x2e')][_0x7d41('0x2f')]};});_0x5b81ef[_0x7d41('0x30')]=_['map'](_0x1d2aef,_0x7d41('0x29'));_0x5b81ef[_0x7d41('0x31')]=_[_0x7d41('0x32')](_0x328a82['query']);_0x5b81ef[_0x7d41('0x33')]=_['intersection'](_0x5b81ef['model'],_0x5b81ef['query']);_0x20567b[_0x7d41('0x34')]=_[_0x7d41('0x35')](_0x5b81ef[_0x7d41('0x30')],qs[_0x7d41('0x36')](_0x328a82[_0x7d41('0x31')]['fields']));_0x20567b[_0x7d41('0x34')]=_0x20567b[_0x7d41('0x34')][_0x7d41('0x37')]?_0x20567b[_0x7d41('0x34')]:_0x5b81ef[_0x7d41('0x30')];if(!_0x328a82[_0x7d41('0x31')][_0x7d41('0x38')](_0x7d41('0x39'))){_0x20567b[_0x7d41('0x1d')]=qs['limit'](_0x328a82[_0x7d41('0x31')][_0x7d41('0x1d')]);_0x20567b[_0x7d41('0x1c')]=qs[_0x7d41('0x1c')](_0x328a82[_0x7d41('0x31')][_0x7d41('0x1c')]);}_0x20567b[_0x7d41('0x3a')]=qs['sort'](_0x328a82[_0x7d41('0x31')]['sort']);_0x20567b[_0x7d41('0x3b')]=qs[_0x7d41('0x33')](_[_0x7d41('0x3c')](_0x328a82['query'],_0x5b81ef[_0x7d41('0x33')]),_0x1d2aef);if(_0x328a82[_0x7d41('0x31')][_0x7d41('0x3d')]){_0x20567b[_0x7d41('0x3b')]=_[_0x7d41('0x3e')](_0x20567b[_0x7d41('0x3b')],{'$or':_[_0x7d41('0x2b')](_0x1d2aef,function(_0x421f3e){if(_0x421f3e[_0x7d41('0x2e')]!==_0x7d41('0x3f')){var _0x3c72d7={};_0x3c72d7[_0x421f3e[_0x7d41('0x29')]]={'$like':'%'+_0x328a82['query'][_0x7d41('0x3d')]+'%'};return _0x3c72d7;}})});}_0x20567b=_['merge']({},_0x20567b,_0x328a82['options']);var _0x473a99={'where':_0x20567b['where']};return db[_0x7d41('0x2c')][_0x7d41('0x1f')](_0x473a99)[_0x7d41('0x25')](function(_0x2a9127){_0x53a9a0['count']=_0x2a9127;if(_0x328a82[_0x7d41('0x31')][_0x7d41('0x40')]){_0x20567b[_0x7d41('0x41')]=[{'all':!![]}];}return db[_0x7d41('0x2c')][_0x7d41('0x42')](_0x20567b);})[_0x7d41('0x25')](function(_0x2b66f6){_0x53a9a0['rows']=_0x2b66f6;return _0x53a9a0;})[_0x7d41('0x25')](respondWithFilteredResult(_0x1a59ef,_0x20567b))[_0x7d41('0x43')](handleError(_0x1a59ef,null));};exports[_0x7d41('0x44')]=function(_0xaa3fc7,_0xd272d0){var _0x174993={'raw':!![],'where':{'id':_0xaa3fc7[_0x7d41('0x45')]['id']}},_0x53d806={};_0x53d806[_0x7d41('0x30')]=_['keys'](db[_0x7d41('0x2c')][_0x7d41('0x2d')]);_0x53d806[_0x7d41('0x31')]=_[_0x7d41('0x32')](_0xaa3fc7[_0x7d41('0x31')]);_0x53d806[_0x7d41('0x33')]=_[_0x7d41('0x35')](_0x53d806[_0x7d41('0x30')],_0x53d806[_0x7d41('0x31')]);_0x174993[_0x7d41('0x34')]=_[_0x7d41('0x35')](_0x53d806['model'],qs[_0x7d41('0x36')](_0xaa3fc7[_0x7d41('0x31')][_0x7d41('0x36')]));_0x174993[_0x7d41('0x34')]=_0x174993[_0x7d41('0x34')][_0x7d41('0x37')]?_0x174993[_0x7d41('0x34')]:_0x53d806[_0x7d41('0x30')];if(_0xaa3fc7[_0x7d41('0x31')][_0x7d41('0x40')]){_0x174993[_0x7d41('0x41')]=[{'all':!![]}];}_0x174993=_[_0x7d41('0x3e')]({},_0x174993,_0xaa3fc7[_0x7d41('0x46')]);return db[_0x7d41('0x2c')][_0x7d41('0x47')](_0x174993)[_0x7d41('0x25')](handleEntityNotFound(_0xd272d0,null))['then'](respondWithResult(_0xd272d0,null))[_0x7d41('0x43')](handleError(_0xd272d0,null));};exports[_0x7d41('0x48')]=function(_0x53964b,_0x3b78a4){return db[_0x7d41('0x2c')][_0x7d41('0x48')](_0x53964b[_0x7d41('0x49')],{})[_0x7d41('0x25')](respondWithResult(_0x3b78a4,0xc9))[_0x7d41('0x43')](handleError(_0x3b78a4,null));};exports[_0x7d41('0x24')]=function(_0x276c6d,_0x37557a){if(_0x276c6d['body']['id']){delete _0x276c6d[_0x7d41('0x49')]['id'];}return db['SmsQueueReport'][_0x7d41('0x47')]({'where':{'id':_0x276c6d[_0x7d41('0x45')]['id']}})[_0x7d41('0x25')](handleEntityNotFound(_0x37557a,null))[_0x7d41('0x25')](saveUpdates(_0x276c6d[_0x7d41('0x49')],null))[_0x7d41('0x25')](respondWithResult(_0x37557a,null))['catch'](handleError(_0x37557a,null));};exports['destroy']=function(_0x56d647,_0x2fc657){return db[_0x7d41('0x2c')][_0x7d41('0x47')]({'where':{'id':_0x56d647['params']['id']}})[_0x7d41('0x25')](handleEntityNotFound(_0x2fc657,null))[_0x7d41('0x25')](removeEntity(_0x2fc657,null))['catch'](handleError(_0x2fc657,null));};exports[_0x7d41('0x4a')]=function(_0x3afcf3,_0x4353f5){return db[_0x7d41('0x2c')][_0x7d41('0x4a')]()['then'](respondWithResult(_0x4353f5,null))[_0x7d41('0x43')](handleError(_0x4353f5,null));};
\ No newline at end of file
index ee97223..7091083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','SmsQueueReport','report_sms_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x5e1dda,_0x35faa4){var _0x5395d1=function(_0x2ff431){while(--_0x2ff431){_0x5e1dda['push'](_0x5e1dda['shift']());}};_0x5395d1(++_0x35faa4);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid'];(function(_0x1fa760,_0x1bf063){var _0xd8eda1=function(_0x4a21d6){while(--_0x4a21d6){_0x1fa760['push'](_0x1fa760['shift']());}};_0xd8eda1(++_0x1bf063);}(_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 fddff4d..9369412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','UpdateSmsQueueReport','update','where','limit'];(function(_0x5baed9,_0x409757){var _0x43aad3=function(_0x4e6713){while(--_0x4e6713){_0x5baed9['push'](_0x5baed9['shift']());}};_0x43aad3(++_0x409757);}(_0xbdb7,0xd2));var _0x7bdb=function(_0x5958d2,_0x550300){_0x5958d2=_0x5958d2-0x0;var _0x2a4809=_0xbdb7[_0x5958d2];return _0x2a4809;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7bdb('0x5'));var logger=require(_0x7bdb('0x6'))('rpc');var config=require(_0x7bdb('0x7'));var jayson=require(_0x7bdb('0x8'));var client=jayson[_0x7bdb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xcc1442,_0x45818e,_0x4e7299){return new BPromise(function(_0x21e20d,_0x3c3b2e){return client['request'](_0xcc1442,_0x4e7299)[_0x7bdb('0xa')](function(_0x1edeb1){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x45818e,'request\x20sent');logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x45818e,_0x7bdb('0xd'),JSON[_0x7bdb('0xe')](_0x1edeb1));if(_0x1edeb1['error']){if(_0x1edeb1[_0x7bdb('0xf')]['code']===0x1f4){logger[_0x7bdb('0xf')](_0x7bdb('0x10'),_0x45818e,_0x1edeb1[_0x7bdb('0xf')]['message']);return _0x3c3b2e(_0x1edeb1[_0x7bdb('0xf')]['message']);}logger[_0x7bdb('0xf')](_0x7bdb('0x10'),_0x45818e,_0x1edeb1[_0x7bdb('0xf')][_0x7bdb('0x11')]);return _0x21e20d(_0x1edeb1[_0x7bdb('0xf')][_0x7bdb('0x11')]);}else{logger[_0x7bdb('0x12')](_0x7bdb('0x10'),_0x45818e,_0x7bdb('0xd'));_0x21e20d(_0x1edeb1[_0x7bdb('0x13')][_0x7bdb('0x11')]);}})[_0x7bdb('0x14')](function(_0x10e29d){logger[_0x7bdb('0xf')](_0x7bdb('0x10'),_0x45818e,_0x10e29d);_0x3c3b2e(_0x10e29d);});});}exports[_0x7bdb('0x15')]=function(_0x53b4f9){var _0x47d64a=this;return new Promise(function(_0x52750e,_0x2e5621){return db[_0x7bdb('0x16')][_0x7bdb('0x17')](_0x53b4f9['body'],{'raw':_0x53b4f9['options']?_0x53b4f9[_0x7bdb('0x18')][_0x7bdb('0x19')]===undefined?!![]:![]:!![]})[_0x7bdb('0xa')](function(_0x3e4355){logger[_0x7bdb('0x12')](_0x7bdb('0x15'),_0x53b4f9);logger['debug'](_0x7bdb('0x15'),_0x53b4f9,JSON[_0x7bdb('0xe')](_0x3e4355));_0x52750e(_0x3e4355);})[_0x7bdb('0x14')](function(_0x4dd236){logger[_0x7bdb('0xf')]('CreateSmsQueueReport',_0x4dd236[_0x7bdb('0x11')],_0x53b4f9);_0x2e5621(_0x47d64a[_0x7bdb('0xf')](0x1f4,_0x4dd236[_0x7bdb('0x11')]));});});};exports[_0x7bdb('0x1a')]=function(_0x503b15){var _0x28b5db=this;return new Promise(function(_0x3f8d6d,_0x1ad9fc){return db[_0x7bdb('0x16')][_0x7bdb('0x1b')](_0x503b15['body'],{'raw':_0x503b15[_0x7bdb('0x18')]?_0x503b15[_0x7bdb('0x18')][_0x7bdb('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x503b15[_0x7bdb('0x18')]?_0x503b15['options'][_0x7bdb('0x1c')]||null:null,'attributes':_0x503b15[_0x7bdb('0x18')]?_0x503b15['options']['attributes']||null:null,'limit':_0x503b15['options']?_0x503b15[_0x7bdb('0x18')][_0x7bdb('0x1d')]||null:null})[_0x7bdb('0xa')](function(_0x24e274){logger['info'](_0x7bdb('0x1a'),_0x503b15);logger[_0x7bdb('0xb')](_0x7bdb('0x1a'),_0x503b15,JSON[_0x7bdb('0xe')](_0x24e274));_0x3f8d6d(_0x24e274);})[_0x7bdb('0x14')](function(_0xc45792){logger[_0x7bdb('0xf')]('UpdateSmsQueueReport',_0xc45792[_0x7bdb('0x11')],_0x503b15);_0x1ad9fc(_0x28b5db['error'](0x1f4,_0xc45792['message']));});});};
\ No newline at end of file
+var _0x1e45=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsQueueReport','create','body','options','raw','info','UpdateSmsQueueReport','update','attributes','limit','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5cc86d,_0x5e5cd0){var _0x5ceeb0=function(_0x9f9206){while(--_0x9f9206){_0x5cc86d['push'](_0x5cc86d['shift']());}};_0x5ceeb0(++_0x5e5cd0);}(_0x1e45,0xb5));var _0x51e4=function(_0x5586d4,_0x2aaeb4){_0x5586d4=_0x5586d4-0x0;var _0x4c8e77=_0x1e45[_0x5586d4];return _0x4c8e77;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51e4('0x0'));var BPromise=require(_0x51e4('0x1'));var rs=require(_0x51e4('0x2'));var fs=require('fs');var Redis=require(_0x51e4('0x3'));var db=require(_0x51e4('0x4'))['db'];var utils=require(_0x51e4('0x5'));var logger=require(_0x51e4('0x6'))('rpc');var config=require(_0x51e4('0x7'));var jayson=require(_0x51e4('0x8'));var client=jayson['client'][_0x51e4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2a4fb9,_0x1bef72,_0x27b995){return new BPromise(function(_0x4cc4f4,_0x3b0a1d){return client[_0x51e4('0xa')](_0x2a4fb9,_0x27b995)[_0x51e4('0xb')](function(_0x1ea18a){logger['info'](_0x51e4('0xc'),_0x1bef72,_0x51e4('0xd'));logger[_0x51e4('0xe')](_0x51e4('0xf'),_0x1bef72,'request\x20sent',JSON[_0x51e4('0x10')](_0x1ea18a));if(_0x1ea18a['error']){if(_0x1ea18a[_0x51e4('0x11')]['code']===0x1f4){logger[_0x51e4('0x11')](_0x51e4('0xc'),_0x1bef72,_0x1ea18a[_0x51e4('0x11')][_0x51e4('0x12')]);return _0x3b0a1d(_0x1ea18a['error']['message']);}logger[_0x51e4('0x11')](_0x51e4('0xc'),_0x1bef72,_0x1ea18a[_0x51e4('0x11')][_0x51e4('0x12')]);return _0x4cc4f4(_0x1ea18a['error']['message']);}else{logger['info'](_0x51e4('0xc'),_0x1bef72,_0x51e4('0xd'));_0x4cc4f4(_0x1ea18a[_0x51e4('0x13')][_0x51e4('0x12')]);}})[_0x51e4('0x14')](function(_0x218c50){logger['error'](_0x51e4('0xc'),_0x1bef72,_0x218c50);_0x3b0a1d(_0x218c50);});});}exports[_0x51e4('0x15')]=function(_0x5a9407){var _0x497b70=this;return new Promise(function(_0x32f8bd,_0x1de506){return db['SmsQueueReport'][_0x51e4('0x16')](_0x5a9407[_0x51e4('0x17')],{'raw':_0x5a9407[_0x51e4('0x18')]?_0x5a9407['options'][_0x51e4('0x19')]===undefined?!![]:![]:!![]})[_0x51e4('0xb')](function(_0x4b32ed){logger[_0x51e4('0x1a')]('CreateSmsQueueReport',_0x5a9407);logger[_0x51e4('0xe')](_0x51e4('0x15'),_0x5a9407,JSON[_0x51e4('0x10')](_0x4b32ed));_0x32f8bd(_0x4b32ed);})['catch'](function(_0x19af5d){logger[_0x51e4('0x11')](_0x51e4('0x15'),_0x19af5d[_0x51e4('0x12')],_0x5a9407);_0x1de506(_0x497b70[_0x51e4('0x11')](0x1f4,_0x19af5d[_0x51e4('0x12')]));});});};exports[_0x51e4('0x1b')]=function(_0x4ee7c5){var _0x37d031=this;return new Promise(function(_0x34ccb1,_0x1cc5a6){return db['SmsQueueReport'][_0x51e4('0x1c')](_0x4ee7c5[_0x51e4('0x17')],{'raw':_0x4ee7c5['options']?_0x4ee7c5[_0x51e4('0x18')][_0x51e4('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ee7c5[_0x51e4('0x18')]?_0x4ee7c5[_0x51e4('0x18')]['where']||null:null,'attributes':_0x4ee7c5['options']?_0x4ee7c5['options'][_0x51e4('0x1d')]||null:null,'limit':_0x4ee7c5['options']?_0x4ee7c5[_0x51e4('0x18')][_0x51e4('0x1e')]||null:null})[_0x51e4('0xb')](function(_0x45fe2b){logger['info'](_0x51e4('0x1b'),_0x4ee7c5);logger[_0x51e4('0xe')]('UpdateSmsQueueReport',_0x4ee7c5,JSON[_0x51e4('0x10')](_0x45fe2b));_0x34ccb1(_0x45fe2b);})[_0x51e4('0x14')](function(_0x730564){logger['error']('UpdateSmsQueueReport',_0x730564[_0x51e4('0x12')],_0x4ee7c5);_0x1cc5a6(_0x37d031[_0x51e4('0x11')](0x1f4,_0x730564[_0x51e4('0x12')]));});});};
\ No newline at end of file
index ddfae5d..f043325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe181=['/describe','isAuthenticated','describe','show','post','create','put','update','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','index','get'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xe181,0x68));var _0x1e18=function(_0x51f5f7,_0x4e1492){_0x51f5f7=_0x51f5f7-0x0;var _0x6afaa=_0xe181[_0x51f5f7];return _0x6afaa;};'use strict';var multer=require(_0x1e18('0x0'));var util=require('util');var path=require(_0x1e18('0x1'));var timeout=require(_0x1e18('0x2'));var express=require(_0x1e18('0x3'));var router=express[_0x1e18('0x4')]();var fs_extra=require(_0x1e18('0x5'));var auth=require(_0x1e18('0x6'));var interaction=require(_0x1e18('0x7'));var config=require('../../config/environment');var controller=require(_0x1e18('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x1e18('0x9')]);router[_0x1e18('0xa')](_0x1e18('0xb'),auth[_0x1e18('0xc')](),controller[_0x1e18('0xd')]);router[_0x1e18('0xa')]('/:id',auth[_0x1e18('0xc')](),controller[_0x1e18('0xe')]);router[_0x1e18('0xf')]('/',auth[_0x1e18('0xc')](),controller[_0x1e18('0x10')]);router[_0x1e18('0x11')]('/:id',auth[_0x1e18('0xc')](),controller[_0x1e18('0x12')]);router[_0x1e18('0x13')](_0x1e18('0x14'),auth[_0x1e18('0xc')](),controller[_0x1e18('0x15')]);module[_0x1e18('0x16')]=router;
\ No newline at end of file
+var _0xe107=['/describe','isAuthenticated','describe','create','put','/:id','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../config/environment','./smsTransferReport.controller','get'];(function(_0x123f79,_0x96ab3a){var _0x46afba=function(_0x477d49){while(--_0x477d49){_0x123f79['push'](_0x123f79['shift']());}};_0x46afba(++_0x96ab3a);}(_0xe107,0xb3));var _0x7e10=function(_0x2f9694,_0x4a8206){_0x2f9694=_0x2f9694-0x0;var _0x2969b8=_0xe107[_0x2f9694];return _0x2969b8;};'use strict';var multer=require(_0x7e10('0x0'));var util=require('util');var path=require(_0x7e10('0x1'));var timeout=require(_0x7e10('0x2'));var express=require(_0x7e10('0x3'));var router=express['Router']();var fs_extra=require(_0x7e10('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7e10('0x5'));var controller=require(_0x7e10('0x6'));router[_0x7e10('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7e10('0x7')](_0x7e10('0x8'),auth[_0x7e10('0x9')](),controller[_0x7e10('0xa')]);router['get']('/:id',auth[_0x7e10('0x9')](),controller['show']);router['post']('/',auth[_0x7e10('0x9')](),controller[_0x7e10('0xb')]);router[_0x7e10('0xc')](_0x7e10('0xd'),auth[_0x7e10('0x9')](),controller['update']);router[_0x7e10('0xe')]('/:id',auth[_0x7e10('0x9')](),controller[_0x7e10('0xf')]);module[_0x7e10('0x10')]=router;
\ No newline at end of file
index 8e2308a..66e1c4e 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(_0x2401e3,_0x5b8c77){var _0x2f9381=function(_0x44aa77){while(--_0x44aa77){_0x2401e3['push'](_0x2401e3['shift']());}};_0x2f9381(++_0x5b8c77);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x2ace95,_0x186b37){_0x2ace95=_0x2ace95-0x0;var _0x35ecfa=_0xf3cd[_0x2ace95];return _0x35ecfa;};'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 _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x153c4b,_0x2ad664){var _0x1aabf7=function(_0x1befb6){while(--_0x1befb6){_0x153c4b['push'](_0x153c4b['shift']());}};_0x1aabf7(++_0x2ad664);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x34df4a,_0x209d10){_0x34df4a=_0x34df4a-0x0;var _0x145c69=_0xcb91[_0x34df4a];return _0x145c69;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 257e798..c9b5c7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5a5=['fields','attributes','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','show','catch','create','body','find','params','describe','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','status','limit','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','SmsTransferReport','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0xc5a5,0x1b1));var _0x5c5a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc5a5[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x5c5a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5c5a('0x1'));var rp=require(_0x5c5a('0x2'));var moment=require(_0x5c5a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5c5a('0x4'));var util=require(_0x5c5a('0x5'));var path=require(_0x5c5a('0x6'));var sox=require(_0x5c5a('0x7'));var csv=require(_0x5c5a('0x8'));var ejs=require(_0x5c5a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5c5a('0xa'));var squel=require(_0x5c5a('0xb'));var crypto=require(_0x5c5a('0xc'));var jsforce=require(_0x5c5a('0xd'));var deskjs=require(_0x5c5a('0xe'));var toCsv=require(_0x5c5a('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5c5a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5c5a('0x10'));var as=require(_0x5c5a('0x11'));var hardwareService=require(_0x5c5a('0x12'));var logger=require(_0x5c5a('0x13'))('api');var utils=require(_0x5c5a('0x14'));var config=require(_0x5c5a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x595d24,_0x2f8d84){_0x2f8d84=_0x2f8d84||0xcc;return function(_0x22c5a8){if(_0x22c5a8){return _0x595d24[_0x5c5a('0x16')](_0x2f8d84);}return _0x595d24['status'](_0x2f8d84)[_0x5c5a('0x17')]();};}function respondWithResult(_0x3b9428,_0x352064){_0x352064=_0x352064||0xc8;return function(_0x34b1ae){if(_0x34b1ae){return _0x3b9428[_0x5c5a('0x18')](_0x352064)['json'](_0x34b1ae);}};}function respondWithFilteredResult(_0x4f5636,_0x2d8b51){return function(_0x33d10a){if(_0x33d10a){var _0x173802=typeof _0x2d8b51['offset']==='undefined'&&typeof _0x2d8b51[_0x5c5a('0x19')]===_0x5c5a('0x1a');var _0x496a2f=_0x33d10a[_0x5c5a('0x1b')];var _0x4da590=_0x173802?0x0:_0x2d8b51[_0x5c5a('0x1c')];var _0x250f1f=_0x173802?_0x33d10a[_0x5c5a('0x1b')]:_0x2d8b51['offset']+_0x2d8b51[_0x5c5a('0x19')];var _0x2304a2;if(_0x250f1f>=_0x496a2f){_0x250f1f=_0x496a2f;_0x2304a2=0xc8;}else{_0x2304a2=0xce;}_0x4f5636['status'](_0x2304a2);return _0x4f5636[_0x5c5a('0x1d')](_0x5c5a('0x1e'),_0x4da590+'-'+_0x250f1f+'/'+_0x496a2f)[_0x5c5a('0x1f')](_0x33d10a);}return null;};}function patchUpdates(_0x4ca11d){return function(_0x3d008b){try{jsonpatch[_0x5c5a('0x20')](_0x3d008b,_0x4ca11d,!![]);}catch(_0x32a1ae){return BPromise[_0x5c5a('0x21')](_0x32a1ae);}return _0x3d008b[_0x5c5a('0x22')]();};}function saveUpdates(_0x112fbb,_0x279731){return function(_0xa61c7e){if(_0xa61c7e){return _0xa61c7e[_0x5c5a('0x23')](_0x112fbb)[_0x5c5a('0x24')](function(_0x33b607){return _0x33b607;});}return null;};}function removeEntity(_0x5c97cf,_0x22b999){return function(_0x20cf0b){if(_0x20cf0b){return _0x20cf0b[_0x5c5a('0x25')]()[_0x5c5a('0x24')](function(){_0x5c97cf[_0x5c5a('0x18')](0xcc)[_0x5c5a('0x17')]();});}};}function handleEntityNotFound(_0x1708f4,_0x54211f){return function(_0x4c82f1){if(!_0x4c82f1){_0x1708f4[_0x5c5a('0x16')](0x194);}return _0x4c82f1;};}function handleError(_0x341b53,_0x2bd1f5){_0x2bd1f5=_0x2bd1f5||0x1f4;return function(_0x3293ac){logger[_0x5c5a('0x26')](_0x3293ac['stack']);if(_0x3293ac[_0x5c5a('0x27')]){delete _0x3293ac['name'];}_0x341b53[_0x5c5a('0x18')](_0x2bd1f5)['send'](_0x3293ac);};}exports[_0x5c5a('0x28')]=function(_0x569612,_0x2dec0a){var _0x4cc2d4={},_0x4b3438={},_0x455599={'count':0x0,'rows':[]};var _0x5766eb=_['map'](db[_0x5c5a('0x29')]['rawAttributes'],function(_0x318107){return{'name':_0x318107[_0x5c5a('0x2a')],'type':_0x318107[_0x5c5a('0x2b')][_0x5c5a('0x2c')]};});_0x4b3438[_0x5c5a('0x2d')]=_['map'](_0x5766eb,_0x5c5a('0x27'));_0x4b3438[_0x5c5a('0x2e')]=_[_0x5c5a('0x2f')](_0x569612[_0x5c5a('0x2e')]);_0x4b3438[_0x5c5a('0x30')]=_[_0x5c5a('0x31')](_0x4b3438['model'],_0x4b3438['query']);_0x4cc2d4['attributes']=_['intersection'](_0x4b3438[_0x5c5a('0x2d')],qs[_0x5c5a('0x32')](_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x32')]));_0x4cc2d4[_0x5c5a('0x33')]=_0x4cc2d4[_0x5c5a('0x33')]['length']?_0x4cc2d4['attributes']:_0x4b3438[_0x5c5a('0x2d')];if(!_0x569612['query'][_0x5c5a('0x34')](_0x5c5a('0x35'))){_0x4cc2d4['limit']=qs[_0x5c5a('0x19')](_0x569612[_0x5c5a('0x2e')]['limit']);_0x4cc2d4[_0x5c5a('0x1c')]=qs[_0x5c5a('0x1c')](_0x569612['query'][_0x5c5a('0x1c')]);}_0x4cc2d4['order']=qs[_0x5c5a('0x36')](_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x36')]);_0x4cc2d4[_0x5c5a('0x37')]=qs[_0x5c5a('0x30')](_['pick'](_0x569612[_0x5c5a('0x2e')],_0x4b3438['filters']),_0x5766eb);if(_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x38')]){_0x4cc2d4[_0x5c5a('0x37')]=_['merge'](_0x4cc2d4[_0x5c5a('0x37')],{'$or':_['map'](_0x5766eb,function(_0x3a02e6){if(_0x3a02e6['type']!==_0x5c5a('0x39')){var _0x1b0616={};_0x1b0616[_0x3a02e6[_0x5c5a('0x27')]]={'$like':'%'+_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x38')]+'%'};return _0x1b0616;}})});}_0x4cc2d4=_[_0x5c5a('0x3a')]({},_0x4cc2d4,_0x569612[_0x5c5a('0x3b')]);var _0x3cb53d={'where':_0x4cc2d4['where']};return db[_0x5c5a('0x29')]['count'](_0x3cb53d)['then'](function(_0x411df7){_0x455599[_0x5c5a('0x1b')]=_0x411df7;if(_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x3c')]){_0x4cc2d4['include']=[{'all':!![]}];}return db[_0x5c5a('0x29')][_0x5c5a('0x3d')](_0x4cc2d4);})[_0x5c5a('0x24')](function(_0x16394a){_0x455599['rows']=_0x16394a;return _0x455599;})['then'](respondWithFilteredResult(_0x2dec0a,_0x4cc2d4))['catch'](handleError(_0x2dec0a,null));};exports[_0x5c5a('0x3e')]=function(_0xc77f9,_0x1c1959){var _0xf5a0b2={'raw':!![],'where':{'id':_0xc77f9['params']['id']}},_0x1dce52={};_0x1dce52[_0x5c5a('0x2d')]=_[_0x5c5a('0x2f')](db['SmsTransferReport']['rawAttributes']);_0x1dce52[_0x5c5a('0x2e')]=_['keys'](_0xc77f9[_0x5c5a('0x2e')]);_0x1dce52[_0x5c5a('0x30')]=_[_0x5c5a('0x31')](_0x1dce52['model'],_0x1dce52[_0x5c5a('0x2e')]);_0xf5a0b2['attributes']=_[_0x5c5a('0x31')](_0x1dce52[_0x5c5a('0x2d')],qs[_0x5c5a('0x32')](_0xc77f9['query'][_0x5c5a('0x32')]));_0xf5a0b2['attributes']=_0xf5a0b2[_0x5c5a('0x33')]['length']?_0xf5a0b2[_0x5c5a('0x33')]:_0x1dce52[_0x5c5a('0x2d')];if(_0xc77f9[_0x5c5a('0x2e')]['includeAll']){_0xf5a0b2['include']=[{'all':!![]}];}_0xf5a0b2=_[_0x5c5a('0x3a')]({},_0xf5a0b2,_0xc77f9[_0x5c5a('0x3b')]);return db[_0x5c5a('0x29')]['find'](_0xf5a0b2)['then'](handleEntityNotFound(_0x1c1959,null))['then'](respondWithResult(_0x1c1959,null))[_0x5c5a('0x3f')](handleError(_0x1c1959,null));};exports[_0x5c5a('0x40')]=function(_0x5afcdb,_0x22d9d5){return db['SmsTransferReport'][_0x5c5a('0x40')](_0x5afcdb['body'],{})['then'](respondWithResult(_0x22d9d5,0xc9))[_0x5c5a('0x3f')](handleError(_0x22d9d5,null));};exports[_0x5c5a('0x23')]=function(_0x2b066f,_0x5cec6f){if(_0x2b066f[_0x5c5a('0x41')]['id']){delete _0x2b066f[_0x5c5a('0x41')]['id'];}return db[_0x5c5a('0x29')][_0x5c5a('0x42')]({'where':{'id':_0x2b066f['params']['id']}})['then'](handleEntityNotFound(_0x5cec6f,null))['then'](saveUpdates(_0x2b066f[_0x5c5a('0x41')],null))[_0x5c5a('0x24')](respondWithResult(_0x5cec6f,null))['catch'](handleError(_0x5cec6f,null));};exports[_0x5c5a('0x25')]=function(_0x412fdd,_0x4339fa){return db[_0x5c5a('0x29')][_0x5c5a('0x42')]({'where':{'id':_0x412fdd[_0x5c5a('0x43')]['id']}})[_0x5c5a('0x24')](handleEntityNotFound(_0x4339fa,null))['then'](removeEntity(_0x4339fa,null))[_0x5c5a('0x3f')](handleError(_0x4339fa,null));};exports[_0x5c5a('0x44')]=function(_0x2c8df0,_0x4a8edd){return db[_0x5c5a('0x29')]['describe']()['then'](respondWithResult(_0x4a8edd,null))[_0x5c5a('0x3f')](handleError(_0x4a8edd,null));};
\ No newline at end of file
+var _0x8cfc=['ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','options','includeAll','findAll','rows','show','params','keys','include','find','create','body','catch','describe','rimraf','zip-dir','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x8cfc,0x7f));var _0xc8cf=function(_0x1cfa81,_0x24397e){_0x1cfa81=_0x1cfa81-0x0;var _0x3f7620=_0x8cfc[_0x1cfa81];return _0x3f7620;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc8cf('0x0'));var zipdir=require(_0xc8cf('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc8cf('0x2'));var Mustache=require(_0xc8cf('0x3'));var util=require('util');var path=require(_0xc8cf('0x4'));var sox=require('sox');var csv=require(_0xc8cf('0x5'));var ejs=require(_0xc8cf('0x6'));var fs=require('fs');var fs_extra=require(_0xc8cf('0x7'));var _=require('lodash');var squel=require(_0xc8cf('0x8'));var crypto=require(_0xc8cf('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xc8cf('0xa'));var toCsv=require(_0xc8cf('0x5'));var querystring=require(_0xc8cf('0xb'));var Papa=require(_0xc8cf('0xc'));var Redis=require(_0xc8cf('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc8cf('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xc8cf('0xf'));var config=require(_0xc8cf('0x10'));var licenseUtil=require(_0xc8cf('0x11'));var db=require(_0xc8cf('0x12'))['db'];function respondWithStatusCode(_0x6454e1,_0x14da9b){_0x14da9b=_0x14da9b||0xcc;return function(_0x5bfb60){if(_0x5bfb60){return _0x6454e1[_0xc8cf('0x13')](_0x14da9b);}return _0x6454e1[_0xc8cf('0x14')](_0x14da9b)[_0xc8cf('0x15')]();};}function respondWithResult(_0x159251,_0x36d021){_0x36d021=_0x36d021||0xc8;return function(_0x53fc69){if(_0x53fc69){return _0x159251['status'](_0x36d021)['json'](_0x53fc69);}};}function respondWithFilteredResult(_0x2622a5,_0x454473){return function(_0x30cedf){if(_0x30cedf){var _0x15fc15=typeof _0x454473[_0xc8cf('0x16')]===_0xc8cf('0x17')&&typeof _0x454473[_0xc8cf('0x18')]===_0xc8cf('0x17');var _0x24df0d=_0x30cedf[_0xc8cf('0x19')];var _0x23bcf2=_0x15fc15?0x0:_0x454473[_0xc8cf('0x16')];var _0x3c360b=_0x15fc15?_0x30cedf[_0xc8cf('0x19')]:_0x454473[_0xc8cf('0x16')]+_0x454473[_0xc8cf('0x18')];var _0x8513d5;if(_0x3c360b>=_0x24df0d){_0x3c360b=_0x24df0d;_0x8513d5=0xc8;}else{_0x8513d5=0xce;}_0x2622a5['status'](_0x8513d5);return _0x2622a5[_0xc8cf('0x1a')]('Content-Range',_0x23bcf2+'-'+_0x3c360b+'/'+_0x24df0d)[_0xc8cf('0x1b')](_0x30cedf);}return null;};}function patchUpdates(_0x4f80ee){return function(_0x5be1f9){try{jsonpatch[_0xc8cf('0x1c')](_0x5be1f9,_0x4f80ee,!![]);}catch(_0x120872){return BPromise[_0xc8cf('0x1d')](_0x120872);}return _0x5be1f9[_0xc8cf('0x1e')]();};}function saveUpdates(_0x572486,_0x444da9){return function(_0x2bcdc3){if(_0x2bcdc3){return _0x2bcdc3[_0xc8cf('0x1f')](_0x572486)[_0xc8cf('0x20')](function(_0x14822a){return _0x14822a;});}return null;};}function removeEntity(_0x5c680b,_0x595562){return function(_0x356b0d){if(_0x356b0d){return _0x356b0d[_0xc8cf('0x21')]()[_0xc8cf('0x20')](function(){_0x5c680b[_0xc8cf('0x14')](0xcc)[_0xc8cf('0x15')]();});}};}function handleEntityNotFound(_0x2bba34,_0xb12218){return function(_0x39eb66){if(!_0x39eb66){_0x2bba34['sendStatus'](0x194);}return _0x39eb66;};}function handleError(_0xa24044,_0x2ecafd){_0x2ecafd=_0x2ecafd||0x1f4;return function(_0xad18e2){logger['error'](_0xad18e2[_0xc8cf('0x22')]);if(_0xad18e2['name']){delete _0xad18e2[_0xc8cf('0x23')];}_0xa24044[_0xc8cf('0x14')](_0x2ecafd)[_0xc8cf('0x24')](_0xad18e2);};}exports[_0xc8cf('0x25')]=function(_0x78032f,_0x32fcb1){var _0x262c33={},_0x5e29a7={},_0x197d2c={'count':0x0,'rows':[]};var _0x397110=_[_0xc8cf('0x26')](db[_0xc8cf('0x27')][_0xc8cf('0x28')],function(_0x374c09){return{'name':_0x374c09[_0xc8cf('0x29')],'type':_0x374c09[_0xc8cf('0x2a')][_0xc8cf('0x2b')]};});_0x5e29a7['model']=_[_0xc8cf('0x26')](_0x397110,_0xc8cf('0x23'));_0x5e29a7[_0xc8cf('0x2c')]=_['keys'](_0x78032f[_0xc8cf('0x2c')]);_0x5e29a7['filters']=_[_0xc8cf('0x2d')](_0x5e29a7[_0xc8cf('0x2e')],_0x5e29a7[_0xc8cf('0x2c')]);_0x262c33[_0xc8cf('0x2f')]=_['intersection'](_0x5e29a7[_0xc8cf('0x2e')],qs['fields'](_0x78032f[_0xc8cf('0x2c')][_0xc8cf('0x30')]));_0x262c33[_0xc8cf('0x2f')]=_0x262c33[_0xc8cf('0x2f')]['length']?_0x262c33[_0xc8cf('0x2f')]:_0x5e29a7[_0xc8cf('0x2e')];if(!_0x78032f[_0xc8cf('0x2c')][_0xc8cf('0x31')](_0xc8cf('0x32'))){_0x262c33[_0xc8cf('0x18')]=qs[_0xc8cf('0x18')](_0x78032f['query'][_0xc8cf('0x18')]);_0x262c33['offset']=qs[_0xc8cf('0x16')](_0x78032f[_0xc8cf('0x2c')][_0xc8cf('0x16')]);}_0x262c33[_0xc8cf('0x33')]=qs['sort'](_0x78032f[_0xc8cf('0x2c')]['sort']);_0x262c33[_0xc8cf('0x34')]=qs[_0xc8cf('0x35')](_[_0xc8cf('0x36')](_0x78032f[_0xc8cf('0x2c')],_0x5e29a7[_0xc8cf('0x35')]),_0x397110);if(_0x78032f['query'][_0xc8cf('0x37')]){_0x262c33['where']=_[_0xc8cf('0x38')](_0x262c33[_0xc8cf('0x34')],{'$or':_[_0xc8cf('0x26')](_0x397110,function(_0x54c6a5){if(_0x54c6a5[_0xc8cf('0x2a')]!=='VIRTUAL'){var _0xf53d93={};_0xf53d93[_0x54c6a5[_0xc8cf('0x23')]]={'$like':'%'+_0x78032f[_0xc8cf('0x2c')][_0xc8cf('0x37')]+'%'};return _0xf53d93;}})});}_0x262c33=_[_0xc8cf('0x38')]({},_0x262c33,_0x78032f[_0xc8cf('0x39')]);var _0x3a2d14={'where':_0x262c33[_0xc8cf('0x34')]};return db[_0xc8cf('0x27')]['count'](_0x3a2d14)[_0xc8cf('0x20')](function(_0x576490){_0x197d2c['count']=_0x576490;if(_0x78032f[_0xc8cf('0x2c')][_0xc8cf('0x3a')]){_0x262c33['include']=[{'all':!![]}];}return db[_0xc8cf('0x27')][_0xc8cf('0x3b')](_0x262c33);})[_0xc8cf('0x20')](function(_0x5afe1f){_0x197d2c[_0xc8cf('0x3c')]=_0x5afe1f;return _0x197d2c;})[_0xc8cf('0x20')](respondWithFilteredResult(_0x32fcb1,_0x262c33))['catch'](handleError(_0x32fcb1,null));};exports[_0xc8cf('0x3d')]=function(_0x3dc1a6,_0x4c803e){var _0x592378={'raw':!![],'where':{'id':_0x3dc1a6[_0xc8cf('0x3e')]['id']}},_0x39f3ea={};_0x39f3ea[_0xc8cf('0x2e')]=_[_0xc8cf('0x3f')](db['SmsTransferReport']['rawAttributes']);_0x39f3ea[_0xc8cf('0x2c')]=_[_0xc8cf('0x3f')](_0x3dc1a6[_0xc8cf('0x2c')]);_0x39f3ea['filters']=_[_0xc8cf('0x2d')](_0x39f3ea[_0xc8cf('0x2e')],_0x39f3ea[_0xc8cf('0x2c')]);_0x592378[_0xc8cf('0x2f')]=_['intersection'](_0x39f3ea[_0xc8cf('0x2e')],qs[_0xc8cf('0x30')](_0x3dc1a6[_0xc8cf('0x2c')][_0xc8cf('0x30')]));_0x592378['attributes']=_0x592378['attributes']['length']?_0x592378[_0xc8cf('0x2f')]:_0x39f3ea[_0xc8cf('0x2e')];if(_0x3dc1a6[_0xc8cf('0x2c')][_0xc8cf('0x3a')]){_0x592378[_0xc8cf('0x40')]=[{'all':!![]}];}_0x592378=_['merge']({},_0x592378,_0x3dc1a6[_0xc8cf('0x39')]);return db['SmsTransferReport'][_0xc8cf('0x41')](_0x592378)[_0xc8cf('0x20')](handleEntityNotFound(_0x4c803e,null))[_0xc8cf('0x20')](respondWithResult(_0x4c803e,null))['catch'](handleError(_0x4c803e,null));};exports[_0xc8cf('0x42')]=function(_0x16674b,_0x4fa109){return db[_0xc8cf('0x27')][_0xc8cf('0x42')](_0x16674b[_0xc8cf('0x43')],{})[_0xc8cf('0x20')](respondWithResult(_0x4fa109,0xc9))[_0xc8cf('0x44')](handleError(_0x4fa109,null));};exports[_0xc8cf('0x1f')]=function(_0x11c73c,_0x56b23d){if(_0x11c73c[_0xc8cf('0x43')]['id']){delete _0x11c73c[_0xc8cf('0x43')]['id'];}return db[_0xc8cf('0x27')]['find']({'where':{'id':_0x11c73c[_0xc8cf('0x3e')]['id']}})['then'](handleEntityNotFound(_0x56b23d,null))[_0xc8cf('0x20')](saveUpdates(_0x11c73c[_0xc8cf('0x43')],null))[_0xc8cf('0x20')](respondWithResult(_0x56b23d,null))[_0xc8cf('0x44')](handleError(_0x56b23d,null));};exports[_0xc8cf('0x21')]=function(_0x507d72,_0x28cc21){return db['SmsTransferReport'][_0xc8cf('0x41')]({'where':{'id':_0x507d72['params']['id']}})[_0xc8cf('0x20')](handleEntityNotFound(_0x28cc21,null))['then'](removeEntity(_0x28cc21,null))['catch'](handleError(_0x28cc21,null));};exports[_0xc8cf('0x45')]=function(_0x28e703,_0x53c6d5){return db[_0xc8cf('0x27')][_0xc8cf('0x45')]()[_0xc8cf('0x20')](respondWithResult(_0x53c6d5,null))[_0xc8cf('0x44')](handleError(_0x53c6d5,null));};
\ No newline at end of file
index 1ad6da4..c285e9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25b0=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util'];(function(_0x72e04a,_0x398f0b){var _0x4e8acf=function(_0x56ea91){while(--_0x56ea91){_0x72e04a['push'](_0x72e04a['shift']());}};_0x4e8acf(++_0x398f0b);}(_0x25b0,0x140));var _0x025b=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x25b0[_0x365be9];return _0x185c12;};'use strict';var _=require(_0x025b('0x0'));var util=require(_0x025b('0x1'));var logger=require(_0x025b('0x2'))(_0x025b('0x3'));var moment=require(_0x025b('0x4'));var BPromise=require(_0x025b('0x5'));var rp=require(_0x025b('0x6'));var fs=require('fs');var path=require(_0x025b('0x7'));var rimraf=require(_0x025b('0x8'));var config=require(_0x025b('0x9'));var attributes=require('./smsTransferReport.attributes');module[_0x025b('0xa')]=function(_0x41b88b,_0x41d8a4){return _0x41b88b['define'](_0x025b('0xb'),attributes,{'tableName':_0x025b('0xc'),'paranoid':![],'indexes':[{'name':_0x025b('0xd'),'fields':[_0x025b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a3f=['api','moment','bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','exports','define','uniqueid','lodash','util','../../config/logger'];(function(_0x4d1efb,_0x482d10){var _0x5e1c8b=function(_0x5c187d){while(--_0x5c187d){_0x4d1efb['push'](_0x4d1efb['shift']());}};_0x5e1c8b(++_0x482d10);}(_0x4a3f,0x101));var _0xf4a3=function(_0x4855fa,_0x490cf3){_0x4855fa=_0x4855fa-0x0;var _0x4b7a91=_0x4a3f[_0x4855fa];return _0x4b7a91;};'use strict';var _=require(_0xf4a3('0x0'));var util=require(_0xf4a3('0x1'));var logger=require(_0xf4a3('0x2'))(_0xf4a3('0x3'));var moment=require(_0xf4a3('0x4'));var BPromise=require(_0xf4a3('0x5'));var rp=require(_0xf4a3('0x6'));var fs=require('fs');var path=require(_0xf4a3('0x7'));var rimraf=require('rimraf');var config=require(_0xf4a3('0x8'));var attributes=require(_0xf4a3('0x9'));module[_0xf4a3('0xa')]=function(_0x2cca0f,_0x2aef1e){return _0x2cca0f[_0xf4a3('0xb')]('SmsTransferReport',attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xf4a3('0xc'),'fields':[_0xf4a3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b24d283..298bd5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf07=['request','then','info','SmsTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment'];(function(_0x478d4b,_0x127e44){var _0x3e3aa5=function(_0x441871){while(--_0x441871){_0x478d4b['push'](_0x478d4b['shift']());}};_0x3e3aa5(++_0x127e44);}(_0xbf07,0x77));var _0x7bf0=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xbf07[_0x25e7cb];return _0x375d92;};'use strict';var _=require(_0x7bf0('0x0'));var util=require(_0x7bf0('0x1'));var moment=require(_0x7bf0('0x2'));var BPromise=require(_0x7bf0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7bf0('0x4'));var db=require(_0x7bf0('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7bf0('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44f656,_0x50e680,_0x263964){return new BPromise(function(_0x536214,_0x415291){return client[_0x7bf0('0x7')](_0x44f656,_0x263964)[_0x7bf0('0x8')](function(_0x2565c7){logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,'request\x20sent');logger[_0x7bf0('0xb')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x50e680,_0x7bf0('0xc'),JSON[_0x7bf0('0xd')](_0x2565c7));if(_0x2565c7[_0x7bf0('0xe')]){if(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0xf')]===0x1f4){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x415291(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x536214(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}else{logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,_0x7bf0('0xc'));_0x536214(_0x2565c7['result'][_0x7bf0('0x10')]);}})[_0x7bf0('0x11')](function(_0x187489){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x187489);_0x415291(_0x187489);});});}
\ No newline at end of file
+var _0xbf07=['request','then','info','SmsTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment'];(function(_0x2193b8,_0x3e6c2c){var _0x1732f3=function(_0x4844be){while(--_0x4844be){_0x2193b8['push'](_0x2193b8['shift']());}};_0x1732f3(++_0x3e6c2c);}(_0xbf07,0x77));var _0x7bf0=function(_0x533e4e,_0x4eba54){_0x533e4e=_0x533e4e-0x0;var _0x1f14bb=_0xbf07[_0x533e4e];return _0x1f14bb;};'use strict';var _=require(_0x7bf0('0x0'));var util=require(_0x7bf0('0x1'));var moment=require(_0x7bf0('0x2'));var BPromise=require(_0x7bf0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7bf0('0x4'));var db=require(_0x7bf0('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7bf0('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44f656,_0x50e680,_0x263964){return new BPromise(function(_0x536214,_0x415291){return client[_0x7bf0('0x7')](_0x44f656,_0x263964)[_0x7bf0('0x8')](function(_0x2565c7){logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,'request\x20sent');logger[_0x7bf0('0xb')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x50e680,_0x7bf0('0xc'),JSON[_0x7bf0('0xd')](_0x2565c7));if(_0x2565c7[_0x7bf0('0xe')]){if(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0xf')]===0x1f4){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x415291(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x536214(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}else{logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,_0x7bf0('0xc'));_0x536214(_0x2565c7['result'][_0x7bf0('0x10')]);}})[_0x7bf0('0x11')](function(_0x187489){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x187489);_0x415291(_0x187489);});});}
\ No newline at end of file
index b9ddbc6..7e27f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8573=['create','put','/:id','update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','get','show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','%s-%s%s','basename','extname','now','post'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8573,0x10b));var _0x3857=function(_0x2044ef,_0x1efad5){_0x2044ef=_0x2044ef-0x0;var _0x348b13=_0x8573[_0x2044ef];return _0x348b13;};'use strict';var multer=require(_0x3857('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3857('0x1'));var express=require(_0x3857('0x2'));var router=express[_0x3857('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3857('0x4'));var interaction=require(_0x3857('0x5'));var config=require(_0x3857('0x6'));var controller=require(_0x3857('0x7'));router['get']('/',auth[_0x3857('0x8')](),controller[_0x3857('0x9')]);router[_0x3857('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x3857('0xb')]);router[_0x3857('0xa')](_0x3857('0xc'),auth[_0x3857('0x8')](),controller[_0x3857('0xd')]);var upload=multer({'storage':multer[_0x3857('0xe')]({'destination':function(_0x5024d9,_0x12c6e3,_0x5bef90){_0x5bef90(null,path[_0x3857('0xf')](config['root'],_0x3857('0x10')));},'filename':function(_0x4c6046,_0x2b73a5,_0x1161fd){_0x2b73a5[_0x3857('0x11')]=_0x2b73a5['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1161fd(null,util['format'](_0x3857('0x12'),path[_0x3857('0x13')](_0x2b73a5['originalname'],path[_0x3857('0x14')](_0x2b73a5['originalname'])),Date[_0x3857('0x15')](),path['extname'](_0x2b73a5[_0x3857('0x11')])));}})});router[_0x3857('0x16')]('/',upload['single']('file'),controller[_0x3857('0x17')]);router[_0x3857('0x18')](_0x3857('0x19'),auth[_0x3857('0x8')](),controller[_0x3857('0x1a')]);router[_0x3857('0x1b')](_0x3857('0x19'),auth[_0x3857('0x8')](),controller['delete']);module[_0x3857('0x1c')]=router;
\ No newline at end of file
+var _0x487b=['update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','%s-%s%s','extname','single','file','create'];(function(_0x8b6bfd,_0x3e39f3){var _0x55e491=function(_0x40bbff){while(--_0x40bbff){_0x8b6bfd['push'](_0x8b6bfd['shift']());}};_0x55e491(++_0x3e39f3);}(_0x487b,0x108));var _0xb487=function(_0x56c3e6,_0x4f2c78){_0x56c3e6=_0x56c3e6-0x0;var _0x425f80=_0x487b[_0x56c3e6];return _0x425f80;};'use strict';var multer=require(_0xb487('0x0'));var util=require(_0xb487('0x1'));var path=require(_0xb487('0x2'));var timeout=require(_0xb487('0x3'));var express=require(_0xb487('0x4'));var router=express[_0xb487('0x5')]();var fs_extra=require(_0xb487('0x6'));var auth=require(_0xb487('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb487('0x8'));var controller=require('./sound.controller');router[_0xb487('0x9')]('/',auth[_0xb487('0xa')](),controller[_0xb487('0xb')]);router[_0xb487('0x9')](_0xb487('0xc'),auth['isAuthenticated'](),controller[_0xb487('0xd')]);router[_0xb487('0x9')](_0xb487('0xe'),auth[_0xb487('0xa')](),controller['download']);var upload=multer({'storage':multer[_0xb487('0xf')]({'destination':function(_0x2401b6,_0x45c234,_0x107d13){_0x107d13(null,path[_0xb487('0x10')](config[_0xb487('0x11')],_0xb487('0x12')));},'filename':function(_0x4395ac,_0x4ecba3,_0x354f0f){_0x4ecba3[_0xb487('0x13')]=_0x4ecba3[_0xb487('0x13')][_0xb487('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x354f0f(null,util['format'](_0xb487('0x15'),path['basename'](_0x4ecba3[_0xb487('0x13')],path[_0xb487('0x16')](_0x4ecba3[_0xb487('0x13')])),Date['now'](),path['extname'](_0x4ecba3[_0xb487('0x13')])));}})});router['post']('/',upload[_0xb487('0x17')](_0xb487('0x18')),controller[_0xb487('0x19')]);router['put'](_0xb487('0xc'),auth['isAuthenticated'](),controller[_0xb487('0x1a')]);router[_0xb487('0x1b')](_0xb487('0xc'),auth[_0xb487('0xa')](),controller['delete']);module[_0xb487('0x1c')]=router;
\ No newline at end of file
index 09f8104..0020f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf7c=['INTEGER','sequelize','exports','STRING','name','FLOAT','BIGINT'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0xaf7c,0x1b3));var _0xcaf7=function(_0x195299,_0x7a1c77){_0x195299=_0x195299-0x0;var _0x258842=_0xaf7c[_0x195299];return _0x258842;};'use strict';var Sequelize=require(_0xcaf7('0x0'));module[_0xcaf7('0x1')]={'name':{'type':Sequelize[_0xcaf7('0x2')],'unique':_0xcaf7('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xcaf7('0x2')]},'display_name':{'type':Sequelize[_0xcaf7('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xcaf7('0x2')]},'original_duration':{'type':Sequelize[_0xcaf7('0x4')]},'original_sampleCount':{'type':Sequelize[_0xcaf7('0x5')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xcaf7('0x5')]},'original_sampleRate':{'type':Sequelize[_0xcaf7('0x6')]},'converted_format':{'type':Sequelize[_0xcaf7('0x2')]},'converted_duration':{'type':Sequelize[_0xcaf7('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xcaf7('0x5')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xcaf7('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xcaf7('0x6')]}};
\ No newline at end of file
+var _0xb94f=['name','FLOAT','BIGINT','INTEGER','exports','STRING'];(function(_0x4b05d8,_0x28cca5){var _0x5e1b33=function(_0x2456cd){while(--_0x2456cd){_0x4b05d8['push'](_0x4b05d8['shift']());}};_0x5e1b33(++_0x28cca5);}(_0xb94f,0x76));var _0xfb94=function(_0x269c42,_0xeed101){_0x269c42=_0x269c42-0x0;var _0x4dad76=_0xb94f[_0x269c42];return _0x4dad76;};'use strict';var Sequelize=require('sequelize');module[_0xfb94('0x0')]={'name':{'type':Sequelize[_0xfb94('0x1')],'unique':_0xfb94('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0xfb94('0x1')]},'display_name':{'type':Sequelize[_0xfb94('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0xfb94('0x1')]},'original_format':{'type':Sequelize[_0xfb94('0x1')]},'original_duration':{'type':Sequelize[_0xfb94('0x3')]},'original_sampleCount':{'type':Sequelize[_0xfb94('0x4')]},'original_channelCount':{'type':Sequelize[_0xfb94('0x5')]},'original_bitRate':{'type':Sequelize[_0xfb94('0x4')]},'original_sampleRate':{'type':Sequelize[_0xfb94('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0xfb94('0x3')]},'converted_sampleCount':{'type':Sequelize[_0xfb94('0x4')]},'converted_channelCount':{'type':Sequelize[_0xfb94('0x5')]},'converted_bitRate':{'type':Sequelize[_0xfb94('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 3ec93a3..4c3ba70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5450=['json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','end','stack','name','index','Sound','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','includeAll','rows','catch','params','options','find','download','save_name','converted_format','root','server/files/sounds/converted','ValidationError','join','format','%s.%s','create','file','originalname','basename','filename','extname','substring','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','error','unlinkSync','src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','body','userProfileId','role','user','UserProfileSection','autoAssociation','start','send','description','delete','original_format','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x5450,0xd6));var _0x0545=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x5450[_0x334841];return _0x5beb4b;};'use strict';var emlformat=require(_0x0545('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0545('0x1'));var jsonpatch=require(_0x0545('0x2'));var rp=require(_0x0545('0x3'));var moment=require('moment');var BPromise=require(_0x0545('0x4'));var Mustache=require(_0x0545('0x5'));var util=require(_0x0545('0x6'));var path=require('path');var sox=require(_0x0545('0x7'));var csv=require(_0x0545('0x8'));var ejs=require(_0x0545('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0545('0xa'));var squel=require(_0x0545('0xb'));var crypto=require(_0x0545('0xc'));var jsforce=require(_0x0545('0xd'));var deskjs=require(_0x0545('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0545('0xf'));var Papa=require(_0x0545('0x10'));var Redis=require(_0x0545('0x11'));var authService=require(_0x0545('0x12'));var qs=require(_0x0545('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0545('0x14'));var logger=require(_0x0545('0x15'))(_0x0545('0x16'));var utils=require('../../config/utils');var config=require(_0x0545('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0545('0x18'))['db'];function respondWithStatusCode(_0x57dd91,_0x172b4c){_0x172b4c=_0x172b4c||0xcc;return function(_0x178e8d){if(_0x178e8d){return _0x57dd91['sendStatus'](_0x172b4c);}return _0x57dd91[_0x0545('0x19')](_0x172b4c)['end']();};}function respondWithResult(_0xc9d861,_0xb9d2f4){_0xb9d2f4=_0xb9d2f4||0xc8;return function(_0x1df33b){if(_0x1df33b){return _0xc9d861[_0x0545('0x19')](_0xb9d2f4)[_0x0545('0x1a')](_0x1df33b);}};}function respondWithFilteredResult(_0x2e2ac6,_0x31b27c){return function(_0xc7b1c){if(_0xc7b1c){var _0x1789d0=typeof _0x31b27c[_0x0545('0x1b')]===_0x0545('0x1c')&&typeof _0x31b27c[_0x0545('0x1d')]===_0x0545('0x1c');var _0xa533f1=_0xc7b1c['count'];var _0x2d319e=_0x1789d0?0x0:_0x31b27c[_0x0545('0x1b')];var _0x47fb26=_0x1789d0?_0xc7b1c[_0x0545('0x1e')]:_0x31b27c[_0x0545('0x1b')]+_0x31b27c[_0x0545('0x1d')];var _0x467e84;if(_0x47fb26>=_0xa533f1){_0x47fb26=_0xa533f1;_0x467e84=0xc8;}else{_0x467e84=0xce;}_0x2e2ac6['status'](_0x467e84);return _0x2e2ac6[_0x0545('0x1f')]('Content-Range',_0x2d319e+'-'+_0x47fb26+'/'+_0xa533f1)[_0x0545('0x1a')](_0xc7b1c);}return null;};}function patchUpdates(_0x1f192c){return function(_0x11656d){try{jsonpatch[_0x0545('0x20')](_0x11656d,_0x1f192c,!![]);}catch(_0x572ca5){return BPromise[_0x0545('0x21')](_0x572ca5);}return _0x11656d[_0x0545('0x22')]();};}function saveUpdates(_0x1a2ca3,_0x20cf06){return function(_0x510a24){if(_0x510a24){return _0x510a24[_0x0545('0x23')](_0x1a2ca3)[_0x0545('0x24')](function(_0x5cda11){return _0x5cda11;});}return null;};}function removeEntity(_0x4bb359,_0x4df0ea){return function(_0x50dd87){if(_0x50dd87){return _0x50dd87[_0x0545('0x25')]()['then'](function(){var _0x509b63=_0x50dd87[_0x0545('0x26')]({'plain':!![]});var _0x677ef=_0x0545('0x27');return db[_0x0545('0x28')]['destroy']({'where':{'type':_0x677ef,'resourceId':_0x509b63['id']}})[_0x0545('0x24')](function(){return _0x50dd87;});})[_0x0545('0x24')](function(){_0x4bb359[_0x0545('0x19')](0xcc)[_0x0545('0x29')]();});}};}function handleEntityNotFound(_0x25d51b,_0x2a35c3){return function(_0x328dc2){if(!_0x328dc2){_0x25d51b['sendStatus'](0x194);}return _0x328dc2;};}function handleError(_0x731927,_0x1f7f7c){_0x1f7f7c=_0x1f7f7c||0x1f4;return function(_0x1c787f){logger['error'](_0x1c787f[_0x0545('0x2a')]);if(_0x1c787f[_0x0545('0x2b')]){delete _0x1c787f[_0x0545('0x2b')];}_0x731927['status'](_0x1f7f7c)['send'](_0x1c787f);};}exports[_0x0545('0x2c')]=function(_0xb906ff,_0x159cff){var _0x3e0e01={},_0x17bc24={},_0x419479={'count':0x0,'rows':[]};var _0x534b4d=_['map'](db[_0x0545('0x2d')][_0x0545('0x2e')],function(_0x583979){return{'name':_0x583979[_0x0545('0x2f')],'type':_0x583979['type'][_0x0545('0x30')]};});_0x17bc24[_0x0545('0x31')]=_[_0x0545('0x32')](_0x534b4d,_0x0545('0x2b'));_0x17bc24[_0x0545('0x33')]=_[_0x0545('0x34')](_0xb906ff[_0x0545('0x33')]);_0x17bc24[_0x0545('0x35')]=_[_0x0545('0x36')](_0x17bc24[_0x0545('0x31')],_0x17bc24[_0x0545('0x33')]);_0x3e0e01[_0x0545('0x37')]=_[_0x0545('0x36')](_0x17bc24[_0x0545('0x31')],qs[_0x0545('0x38')](_0xb906ff[_0x0545('0x33')][_0x0545('0x38')]));_0x3e0e01[_0x0545('0x37')]=_0x3e0e01[_0x0545('0x37')][_0x0545('0x39')]?_0x3e0e01[_0x0545('0x37')]:_0x17bc24[_0x0545('0x31')];if(!_0xb906ff['query'][_0x0545('0x3a')]('nolimit')){_0x3e0e01[_0x0545('0x1d')]=qs[_0x0545('0x1d')](_0xb906ff[_0x0545('0x33')][_0x0545('0x1d')]);_0x3e0e01[_0x0545('0x1b')]=qs[_0x0545('0x1b')](_0xb906ff[_0x0545('0x33')]['offset']);}_0x3e0e01[_0x0545('0x3b')]=qs[_0x0545('0x3c')](_0xb906ff['query']['sort']);_0x3e0e01['where']=qs[_0x0545('0x35')](_[_0x0545('0x3d')](_0xb906ff['query'],_0x17bc24[_0x0545('0x35')]),_0x534b4d);if(_0xb906ff[_0x0545('0x33')][_0x0545('0x3e')]){_0x3e0e01[_0x0545('0x3f')]=_[_0x0545('0x40')](_0x3e0e01[_0x0545('0x3f')],{'$or':_['map'](_0x534b4d,function(_0x563175){if(_0x563175['type']!=='VIRTUAL'){var _0x487f40={};_0x487f40[_0x563175[_0x0545('0x2b')]]={'$like':'%'+_0xb906ff[_0x0545('0x33')][_0x0545('0x3e')]+'%'};return _0x487f40;}})});}_0x3e0e01=_[_0x0545('0x40')]({},_0x3e0e01,_0xb906ff['options']);var _0x415bef={'where':_0x3e0e01['where']};return db['Sound'][_0x0545('0x1e')](_0x415bef)[_0x0545('0x24')](function(_0x49274d){_0x419479[_0x0545('0x1e')]=_0x49274d;if(_0xb906ff[_0x0545('0x33')][_0x0545('0x41')]){_0x3e0e01['include']=[{'all':!![]}];}return db[_0x0545('0x2d')]['findAll'](_0x3e0e01);})[_0x0545('0x24')](function(_0x55b3b4){_0x419479[_0x0545('0x42')]=_0x55b3b4;return _0x419479;})['then'](respondWithFilteredResult(_0x159cff,_0x3e0e01))[_0x0545('0x43')](handleError(_0x159cff,null));};exports['show']=function(_0x24ff43,_0x540611){var _0x5f1b2c={'raw':!![],'where':{'id':_0x24ff43[_0x0545('0x44')]['id']}},_0x2c9797={};_0x2c9797[_0x0545('0x31')]=_[_0x0545('0x34')](db[_0x0545('0x2d')][_0x0545('0x2e')]);_0x2c9797[_0x0545('0x33')]=_[_0x0545('0x34')](_0x24ff43[_0x0545('0x33')]);_0x2c9797[_0x0545('0x35')]=_[_0x0545('0x36')](_0x2c9797[_0x0545('0x31')],_0x2c9797[_0x0545('0x33')]);_0x5f1b2c[_0x0545('0x37')]=_['intersection'](_0x2c9797[_0x0545('0x31')],qs[_0x0545('0x38')](_0x24ff43[_0x0545('0x33')]['fields']));_0x5f1b2c[_0x0545('0x37')]=_0x5f1b2c[_0x0545('0x37')][_0x0545('0x39')]?_0x5f1b2c[_0x0545('0x37')]:_0x2c9797['model'];if(_0x24ff43[_0x0545('0x33')]['includeAll']){_0x5f1b2c['include']=[{'all':!![]}];}_0x5f1b2c=_[_0x0545('0x40')]({},_0x5f1b2c,_0x24ff43[_0x0545('0x45')]);return db[_0x0545('0x2d')][_0x0545('0x46')](_0x5f1b2c)['then'](handleEntityNotFound(_0x540611,null))['then'](respondWithResult(_0x540611,null))['catch'](handleError(_0x540611,null));};exports[_0x0545('0x47')]=function(_0x3b22a9,_0x46a03b,_0x291c6f){return db[_0x0545('0x2d')][_0x0545('0x46')]({'where':{'id':_0x3b22a9[_0x0545('0x44')]['id']},'attributes':['name',_0x0545('0x48'),_0x0545('0x49')],'raw':!![]})[_0x0545('0x24')](handleEntityNotFound(_0x46a03b,null))[_0x0545('0x24')](function(_0x50c4f9){if(_0x50c4f9){if(!fs['existsSync'](path['join'](config[_0x0545('0x4a')],_0x0545('0x4b'),_0x50c4f9[_0x0545('0x48')]+'.'+_0x50c4f9[_0x0545('0x49')]))){throw new db['Sequelize'][(_0x0545('0x4c'))]('Sound\x20not\x20found');}return _0x46a03b[_0x0545('0x47')](path[_0x0545('0x4d')](config[_0x0545('0x4a')],'server/files/sounds/converted',util[_0x0545('0x4e')](_0x0545('0x4f'),_0x50c4f9['save_name'],_0x50c4f9[_0x0545('0x49')])),util[_0x0545('0x4e')](_0x0545('0x4f'),_0x50c4f9[_0x0545('0x2b')],_0x50c4f9['converted_format']));}return null;})['catch'](handleError(_0x46a03b,null));};exports[_0x0545('0x50')]=function(_0x7cb9ab,_0x4c507e,_0x41e1ef){var _0x3ccab8={'name':path['basename'](_0x7cb9ab[_0x0545('0x51')][_0x0545('0x52')],path['extname'](_0x7cb9ab[_0x0545('0x51')][_0x0545('0x52')])),'save_name':path[_0x0545('0x53')](_0x7cb9ab[_0x0545('0x51')][_0x0545('0x54')],path[_0x0545('0x55')](_0x7cb9ab['file'][_0x0545('0x54')])),'original_format':path[_0x0545('0x55')](_0x7cb9ab['file'][_0x0545('0x52')])[_0x0545('0x56')](0x1),'converted_format':'wav'};var _0x8e90cb=path[_0x0545('0x4d')](config['root'],_0x0545('0x57'),_0x7cb9ab['file'][_0x0545('0x54')]);var _0x282ece=path[_0x0545('0x4d')](config[_0x0545('0x4a')],_0x0545('0x4b'),util['format'](_0x0545('0x4f'),path[_0x0545('0x53')](_0x7cb9ab[_0x0545('0x51')]['filename'],path[_0x0545('0x55')](_0x7cb9ab['file'][_0x0545('0x54')])),_0x3ccab8[_0x0545('0x49')]));logger[_0x0545('0x58')](_0x0545('0x59'),_0x8e90cb);logger[_0x0545('0x58')](_0x0545('0x5a'),_0x282ece);try{fs[_0x0545('0x5b')](_0x8e90cb,parseInt(_0x0545('0x5c'),0x8));var _0xd4a011=sox['transcode'](_0x8e90cb,_0x282ece,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xd4a011['on'](_0x0545('0x5d'),function(_0x5d52af){fs[_0x0545('0x5e')](_0x8e90cb);_0x4c507e[_0x0545('0x19')](0x1f4)['send'](_0x5d52af);});_0xd4a011['on'](_0x0545('0x5f'),function(_0xfdfb00){_0x3ccab8['original_duration']=isNaN(_0xfdfb00[_0x0545('0x60')])?null:_0xfdfb00['duration']*0x3e8;_0x3ccab8[_0x0545('0x61')]=isNaN(_0xfdfb00[_0x0545('0x62')])?null:_0xfdfb00[_0x0545('0x62')];_0x3ccab8[_0x0545('0x63')]=isNaN(_0xfdfb00['channelCount'])?null:_0xfdfb00[_0x0545('0x64')];_0x3ccab8[_0x0545('0x65')]=isNaN(_0xfdfb00[_0x0545('0x66')])?null:_0xfdfb00[_0x0545('0x66')];_0x3ccab8[_0x0545('0x67')]=isNaN(_0xfdfb00[_0x0545('0x68')])?null:_0xfdfb00[_0x0545('0x68')];});_0xd4a011['on'](_0x0545('0x69'),function(_0x3ffea4){_0x3ccab8[_0x0545('0x6a')]=isNaN(_0x3ffea4['duration'])?null:_0x3ffea4[_0x0545('0x60')]*0x3e8;_0x3ccab8[_0x0545('0x6b')]=isNaN(_0x3ffea4[_0x0545('0x62')])?null:_0x3ffea4['sampleCount'];_0x3ccab8['converted_channelCount']=isNaN(_0x3ffea4['channelCount'])?null:_0x3ffea4[_0x0545('0x64')];_0x3ccab8[_0x0545('0x6c')]=isNaN(_0x3ffea4['bitRate'])?null:_0x3ffea4[_0x0545('0x66')];_0x3ccab8['converted_sampleRate']=isNaN(_0x3ffea4['sampleRate'])?null:_0x3ffea4['sampleRate'];});_0xd4a011['on']('end',function(){fs[_0x0545('0x5b')](_0x282ece,parseInt(_0x0545('0x5c'),0x8));return db[_0x0545('0x2d')][_0x0545('0x50')](_0x3ccab8)[_0x0545('0x24')](function(_0x59ae65){var _0xc951c0={'role':_0x7cb9ab['body']['role'],'userProfileId':_0x7cb9ab[_0x0545('0x6d')][_0x0545('0x6e')]};if(!_0xc951c0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc951c0[_0x0545('0x6f')]===_0x0545('0x70')){var _0x2b61e1=_0x59ae65[_0x0545('0x26')]({'plain':!![]});return db[_0x0545('0x71')][_0x0545('0x46')]({'where':{'name':_0x0545('0x27'),'userProfileId':_0xc951c0[_0x0545('0x6e')]},'raw':!![]})[_0x0545('0x24')](function(_0xd3505c){if(_0xd3505c&&_0xd3505c[_0x0545('0x72')]===0x0){return db[_0x0545('0x28')]['create']({'name':_0x2b61e1[_0x0545('0x2b')],'resourceId':_0x2b61e1['id'],'type':_0xd3505c[_0x0545('0x2b')],'sectionId':_0xd3505c['id']},{})[_0x0545('0x24')](function(){return _0x59ae65;});}else{return _0x59ae65;}})[_0x0545('0x43')](function(_0x437eb1){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x437eb1);throw _0x437eb1;});}return _0x59ae65;})['then'](respondWithResult(_0x4c507e,null))[_0x0545('0x43')](handleError(_0x4c507e,null));});_0xd4a011[_0x0545('0x73')]();}catch(_0x4f265f){_0x4c507e[_0x0545('0x19')](0x1f4)[_0x0545('0x74')](_0x4f265f);}};exports[_0x0545('0x23')]=function(_0x5dc1f3,_0x3a874d,_0x5b9c4a){return db['Sound']['find']({'where':{'id':_0x5dc1f3[_0x0545('0x44')]['id']}})[_0x0545('0x24')](handleEntityNotFound(_0x3a874d,null))[_0x0545('0x24')](saveUpdates(_['pick'](_0x5dc1f3[_0x0545('0x6d')],['name',_0x0545('0x75')]),null))['then'](respondWithResult(_0x3a874d,null))['catch'](handleError(_0x3a874d,null));};exports[_0x0545('0x76')]=function(_0x3d1a00,_0x239be0,_0x4041fa){return db['Sound'][_0x0545('0x46')]({'where':{'id':_0x3d1a00['params']['id']}})[_0x0545('0x24')](function(_0x299098){if(_0x299098){return _0x299098[_0x0545('0x25')]();}})[_0x0545('0x24')](function(_0x5cdb22){var _0x2a4633=path[_0x0545('0x4d')](config[_0x0545('0x4a')],_0x0545('0x57'),util[_0x0545('0x4e')](_0x0545('0x4f'),_0x5cdb22[_0x0545('0x48')],_0x5cdb22[_0x0545('0x77')]));var _0x5b5c65=path[_0x0545('0x4d')](config[_0x0545('0x4a')],_0x0545('0x4b'),util['format']('%s.%s',_0x5cdb22[_0x0545('0x48')],_0x5cdb22[_0x0545('0x49')]));fs[_0x0545('0x5e')](_0x2a4633);fs[_0x0545('0x5e')](_0x5b5c65);return _0x5cdb22;})[_0x0545('0x24')](function(_0xd20da7){if(_0xd20da7){return _0x239be0['status'](0xcc)[_0x0545('0x29')]();}})['then'](handleEntityNotFound(_0x239be0,null))[_0x0545('0x43')](handleError(_0x239be0,null));};
\ No newline at end of file
+var _0x6497=['get','UserProfileResource','sendStatus','error','stack','name','send','index','Sound','fieldName','type','key','model','map','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','params','intersection','find','save_name','converted_format','join','root','ValidationError','Sound\x20not\x20found','download','server/files/sounds/converted','%s.%s','format','create','file','originalname','basename','filename','extname','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Sounds','autoAssociation','start','update','description','original_format','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy'];(function(_0x48e645,_0x53cc57){var _0x2902f5=function(_0x2c3d4c){while(--_0x2c3d4c){_0x48e645['push'](_0x48e645['shift']());}};_0x2902f5(++_0x53cc57);}(_0x6497,0xda));var _0x7649=function(_0xf34b0a,_0x11e116){_0xf34b0a=_0xf34b0a-0x0;var _0x5021e1=_0x6497[_0xf34b0a];return _0x5021e1;};'use strict';var emlformat=require(_0x7649('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7649('0x1'));var jsonpatch=require(_0x7649('0x2'));var rp=require(_0x7649('0x3'));var moment=require(_0x7649('0x4'));var BPromise=require(_0x7649('0x5'));var Mustache=require(_0x7649('0x6'));var util=require(_0x7649('0x7'));var path=require(_0x7649('0x8'));var sox=require('sox');var csv=require(_0x7649('0x9'));var ejs=require(_0x7649('0xa'));var fs=require('fs');var fs_extra=require(_0x7649('0xb'));var _=require(_0x7649('0xc'));var squel=require(_0x7649('0xd'));var crypto=require('crypto');var jsforce=require(_0x7649('0xe'));var deskjs=require(_0x7649('0xf'));var toCsv=require(_0x7649('0x9'));var querystring=require(_0x7649('0x10'));var Papa=require('papaparse');var Redis=require(_0x7649('0x11'));var authService=require(_0x7649('0x12'));var qs=require(_0x7649('0x13'));var as=require(_0x7649('0x14'));var hardwareService=require(_0x7649('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x7649('0x16'));var config=require(_0x7649('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7649('0x18'))['db'];function respondWithStatusCode(_0x4d9594,_0x4a0390){_0x4a0390=_0x4a0390||0xcc;return function(_0x458069){if(_0x458069){return _0x4d9594['sendStatus'](_0x4a0390);}return _0x4d9594[_0x7649('0x19')](_0x4a0390)[_0x7649('0x1a')]();};}function respondWithResult(_0x3db80f,_0x2f9c34){_0x2f9c34=_0x2f9c34||0xc8;return function(_0x238253){if(_0x238253){return _0x3db80f['status'](_0x2f9c34)[_0x7649('0x1b')](_0x238253);}};}function respondWithFilteredResult(_0x26a881,_0x3fb416){return function(_0x205fcb){if(_0x205fcb){var _0x1adbf3=typeof _0x3fb416[_0x7649('0x1c')]===_0x7649('0x1d')&&typeof _0x3fb416[_0x7649('0x1e')]===_0x7649('0x1d');var _0x111a71=_0x205fcb[_0x7649('0x1f')];var _0x1b15d0=_0x1adbf3?0x0:_0x3fb416['offset'];var _0x2defc5=_0x1adbf3?_0x205fcb['count']:_0x3fb416[_0x7649('0x1c')]+_0x3fb416[_0x7649('0x1e')];var _0x442c1f;if(_0x2defc5>=_0x111a71){_0x2defc5=_0x111a71;_0x442c1f=0xc8;}else{_0x442c1f=0xce;}_0x26a881['status'](_0x442c1f);return _0x26a881[_0x7649('0x20')](_0x7649('0x21'),_0x1b15d0+'-'+_0x2defc5+'/'+_0x111a71)['json'](_0x205fcb);}return null;};}function patchUpdates(_0x3575e9){return function(_0x1ccfe5){try{jsonpatch[_0x7649('0x22')](_0x1ccfe5,_0x3575e9,!![]);}catch(_0x57399c){return BPromise[_0x7649('0x23')](_0x57399c);}return _0x1ccfe5['save']();};}function saveUpdates(_0xebb3a1,_0x2b80ff){return function(_0xeedb45){if(_0xeedb45){return _0xeedb45['update'](_0xebb3a1)[_0x7649('0x24')](function(_0x4f7dd2){return _0x4f7dd2;});}return null;};}function removeEntity(_0x1d1a99,_0xc4eaa0){return function(_0x8a4172){if(_0x8a4172){return _0x8a4172[_0x7649('0x25')]()[_0x7649('0x24')](function(){var _0x2098be=_0x8a4172[_0x7649('0x26')]({'plain':!![]});var _0x1267ab='Sounds';return db[_0x7649('0x27')][_0x7649('0x25')]({'where':{'type':_0x1267ab,'resourceId':_0x2098be['id']}})[_0x7649('0x24')](function(){return _0x8a4172;});})[_0x7649('0x24')](function(){_0x1d1a99[_0x7649('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xea151d,_0x4f7068){return function(_0x5cc4bb){if(!_0x5cc4bb){_0xea151d[_0x7649('0x28')](0x194);}return _0x5cc4bb;};}function handleError(_0x2804d7,_0x178e84){_0x178e84=_0x178e84||0x1f4;return function(_0x33887e){logger[_0x7649('0x29')](_0x33887e[_0x7649('0x2a')]);if(_0x33887e[_0x7649('0x2b')]){delete _0x33887e[_0x7649('0x2b')];}_0x2804d7[_0x7649('0x19')](_0x178e84)[_0x7649('0x2c')](_0x33887e);};}exports[_0x7649('0x2d')]=function(_0x90a332,_0x4014f0){var _0x2a96c1={},_0x4c60a9={},_0x284ed4={'count':0x0,'rows':[]};var _0x14beb3=_['map'](db[_0x7649('0x2e')]['rawAttributes'],function(_0x2a1a04){return{'name':_0x2a1a04[_0x7649('0x2f')],'type':_0x2a1a04[_0x7649('0x30')][_0x7649('0x31')]};});_0x4c60a9[_0x7649('0x32')]=_[_0x7649('0x33')](_0x14beb3,_0x7649('0x2b'));_0x4c60a9[_0x7649('0x34')]=_[_0x7649('0x35')](_0x90a332[_0x7649('0x34')]);_0x4c60a9[_0x7649('0x36')]=_['intersection'](_0x4c60a9['model'],_0x4c60a9[_0x7649('0x34')]);_0x2a96c1[_0x7649('0x37')]=_['intersection'](_0x4c60a9[_0x7649('0x32')],qs[_0x7649('0x38')](_0x90a332[_0x7649('0x34')]['fields']));_0x2a96c1['attributes']=_0x2a96c1[_0x7649('0x37')][_0x7649('0x39')]?_0x2a96c1['attributes']:_0x4c60a9['model'];if(!_0x90a332[_0x7649('0x34')]['hasOwnProperty'](_0x7649('0x3a'))){_0x2a96c1['limit']=qs[_0x7649('0x1e')](_0x90a332['query'][_0x7649('0x1e')]);_0x2a96c1[_0x7649('0x1c')]=qs['offset'](_0x90a332[_0x7649('0x34')][_0x7649('0x1c')]);}_0x2a96c1[_0x7649('0x3b')]=qs['sort'](_0x90a332[_0x7649('0x34')][_0x7649('0x3c')]);_0x2a96c1[_0x7649('0x3d')]=qs[_0x7649('0x36')](_[_0x7649('0x3e')](_0x90a332[_0x7649('0x34')],_0x4c60a9['filters']),_0x14beb3);if(_0x90a332[_0x7649('0x34')]['filter']){_0x2a96c1[_0x7649('0x3d')]=_['merge'](_0x2a96c1['where'],{'$or':_['map'](_0x14beb3,function(_0x4f9c30){if(_0x4f9c30[_0x7649('0x30')]!==_0x7649('0x3f')){var _0x53be59={};_0x53be59[_0x4f9c30[_0x7649('0x2b')]]={'$like':'%'+_0x90a332['query'][_0x7649('0x40')]+'%'};return _0x53be59;}})});}_0x2a96c1=_[_0x7649('0x41')]({},_0x2a96c1,_0x90a332[_0x7649('0x42')]);var _0x1be304={'where':_0x2a96c1[_0x7649('0x3d')]};return db[_0x7649('0x2e')]['count'](_0x1be304)[_0x7649('0x24')](function(_0x33dcba){_0x284ed4[_0x7649('0x1f')]=_0x33dcba;if(_0x90a332[_0x7649('0x34')][_0x7649('0x43')]){_0x2a96c1[_0x7649('0x44')]=[{'all':!![]}];}return db[_0x7649('0x2e')][_0x7649('0x45')](_0x2a96c1);})[_0x7649('0x24')](function(_0x4c20d7){_0x284ed4[_0x7649('0x46')]=_0x4c20d7;return _0x284ed4;})[_0x7649('0x24')](respondWithFilteredResult(_0x4014f0,_0x2a96c1))[_0x7649('0x47')](handleError(_0x4014f0,null));};exports['show']=function(_0x28f2b6,_0x36c2fd){var _0x6ea377={'raw':!![],'where':{'id':_0x28f2b6[_0x7649('0x48')]['id']}},_0xc3d6cf={};_0xc3d6cf[_0x7649('0x32')]=_['keys'](db[_0x7649('0x2e')]['rawAttributes']);_0xc3d6cf[_0x7649('0x34')]=_[_0x7649('0x35')](_0x28f2b6[_0x7649('0x34')]);_0xc3d6cf[_0x7649('0x36')]=_[_0x7649('0x49')](_0xc3d6cf['model'],_0xc3d6cf[_0x7649('0x34')]);_0x6ea377[_0x7649('0x37')]=_['intersection'](_0xc3d6cf[_0x7649('0x32')],qs[_0x7649('0x38')](_0x28f2b6[_0x7649('0x34')]['fields']));_0x6ea377[_0x7649('0x37')]=_0x6ea377[_0x7649('0x37')][_0x7649('0x39')]?_0x6ea377['attributes']:_0xc3d6cf[_0x7649('0x32')];if(_0x28f2b6[_0x7649('0x34')][_0x7649('0x43')]){_0x6ea377[_0x7649('0x44')]=[{'all':!![]}];}_0x6ea377=_[_0x7649('0x41')]({},_0x6ea377,_0x28f2b6['options']);return db[_0x7649('0x2e')][_0x7649('0x4a')](_0x6ea377)['then'](handleEntityNotFound(_0x36c2fd,null))['then'](respondWithResult(_0x36c2fd,null))[_0x7649('0x47')](handleError(_0x36c2fd,null));};exports['download']=function(_0x544a58,_0x52d295,_0xd882a3){return db[_0x7649('0x2e')]['find']({'where':{'id':_0x544a58[_0x7649('0x48')]['id']},'attributes':['name',_0x7649('0x4b'),_0x7649('0x4c')],'raw':!![]})[_0x7649('0x24')](handleEntityNotFound(_0x52d295,null))[_0x7649('0x24')](function(_0x592f42){if(_0x592f42){if(!fs['existsSync'](path[_0x7649('0x4d')](config[_0x7649('0x4e')],'server/files/sounds/converted',_0x592f42[_0x7649('0x4b')]+'.'+_0x592f42['converted_format']))){throw new db['Sequelize'][(_0x7649('0x4f'))](_0x7649('0x50'));}return _0x52d295[_0x7649('0x51')](path[_0x7649('0x4d')](config['root'],_0x7649('0x52'),util['format'](_0x7649('0x53'),_0x592f42['save_name'],_0x592f42['converted_format'])),util[_0x7649('0x54')](_0x7649('0x53'),_0x592f42[_0x7649('0x2b')],_0x592f42['converted_format']));}return null;})[_0x7649('0x47')](handleError(_0x52d295,null));};exports[_0x7649('0x55')]=function(_0x43d8ff,_0x327374,_0x25edc4){var _0xa0734f={'name':path['basename'](_0x43d8ff[_0x7649('0x56')][_0x7649('0x57')],path['extname'](_0x43d8ff[_0x7649('0x56')][_0x7649('0x57')])),'save_name':path[_0x7649('0x58')](_0x43d8ff['file'][_0x7649('0x59')],path[_0x7649('0x5a')](_0x43d8ff[_0x7649('0x56')][_0x7649('0x59')])),'original_format':path[_0x7649('0x5a')](_0x43d8ff['file']['originalname'])[_0x7649('0x5b')](0x1),'converted_format':_0x7649('0x5c')};var _0x3e855c=path['join'](config[_0x7649('0x4e')],_0x7649('0x5d'),_0x43d8ff[_0x7649('0x56')][_0x7649('0x59')]);var _0x4274c7=path[_0x7649('0x4d')](config[_0x7649('0x4e')],_0x7649('0x52'),util[_0x7649('0x54')](_0x7649('0x53'),path[_0x7649('0x58')](_0x43d8ff[_0x7649('0x56')]['filename'],path[_0x7649('0x5a')](_0x43d8ff[_0x7649('0x56')]['filename'])),_0xa0734f[_0x7649('0x4c')]));logger[_0x7649('0x5e')](_0x7649('0x5f'),_0x3e855c);logger[_0x7649('0x5e')](_0x7649('0x60'),_0x4274c7);try{fs[_0x7649('0x61')](_0x3e855c,parseInt(_0x7649('0x62'),0x8));var _0xe2f45d=sox['transcode'](_0x3e855c,_0x4274c7,{'sampleRate':0x1f40,'format':_0x7649('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xe2f45d['on'](_0x7649('0x29'),function(_0x141cd9){fs[_0x7649('0x63')](_0x3e855c);_0x327374[_0x7649('0x19')](0x1f4)[_0x7649('0x2c')](_0x141cd9);});_0xe2f45d['on'](_0x7649('0x64'),function(_0x140031){_0xa0734f[_0x7649('0x65')]=isNaN(_0x140031[_0x7649('0x66')])?null:_0x140031['duration']*0x3e8;_0xa0734f[_0x7649('0x67')]=isNaN(_0x140031[_0x7649('0x68')])?null:_0x140031['sampleCount'];_0xa0734f[_0x7649('0x69')]=isNaN(_0x140031[_0x7649('0x6a')])?null:_0x140031[_0x7649('0x6a')];_0xa0734f[_0x7649('0x6b')]=isNaN(_0x140031[_0x7649('0x6c')])?null:_0x140031['bitRate'];_0xa0734f[_0x7649('0x6d')]=isNaN(_0x140031[_0x7649('0x6e')])?null:_0x140031[_0x7649('0x6e')];});_0xe2f45d['on'](_0x7649('0x6f'),function(_0x26b647){_0xa0734f[_0x7649('0x70')]=isNaN(_0x26b647['duration'])?null:_0x26b647[_0x7649('0x66')]*0x3e8;_0xa0734f[_0x7649('0x71')]=isNaN(_0x26b647[_0x7649('0x68')])?null:_0x26b647[_0x7649('0x68')];_0xa0734f[_0x7649('0x72')]=isNaN(_0x26b647[_0x7649('0x6a')])?null:_0x26b647[_0x7649('0x6a')];_0xa0734f[_0x7649('0x73')]=isNaN(_0x26b647[_0x7649('0x6c')])?null:_0x26b647[_0x7649('0x6c')];_0xa0734f[_0x7649('0x74')]=isNaN(_0x26b647['sampleRate'])?null:_0x26b647[_0x7649('0x6e')];});_0xe2f45d['on'](_0x7649('0x1a'),function(){fs[_0x7649('0x61')](_0x4274c7,parseInt(_0x7649('0x62'),0x8));return db[_0x7649('0x2e')][_0x7649('0x55')](_0xa0734f)[_0x7649('0x24')](function(_0x4f8706){var _0x4fd3c7={'role':_0x43d8ff[_0x7649('0x75')][_0x7649('0x76')],'userProfileId':_0x43d8ff['body'][_0x7649('0x77')]};if(!_0x4fd3c7)throw new Error(_0x7649('0x78'));if(_0x4fd3c7[_0x7649('0x76')]==='user'){var _0x5de56e=_0x4f8706[_0x7649('0x26')]({'plain':!![]});return db[_0x7649('0x79')][_0x7649('0x4a')]({'where':{'name':_0x7649('0x7a'),'userProfileId':_0x4fd3c7[_0x7649('0x77')]},'raw':!![]})[_0x7649('0x24')](function(_0xaa2244){if(_0xaa2244&&_0xaa2244[_0x7649('0x7b')]===0x0){return db[_0x7649('0x27')]['create']({'name':_0x5de56e[_0x7649('0x2b')],'resourceId':_0x5de56e['id'],'type':_0xaa2244['name'],'sectionId':_0xaa2244['id']},{})[_0x7649('0x24')](function(){return _0x4f8706;});}else{return _0x4f8706;}})[_0x7649('0x47')](function(_0x3889e9){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3889e9);throw _0x3889e9;});}return _0x4f8706;})[_0x7649('0x24')](respondWithResult(_0x327374,null))[_0x7649('0x47')](handleError(_0x327374,null));});_0xe2f45d[_0x7649('0x7c')]();}catch(_0x58cc72){_0x327374['status'](0x1f4)[_0x7649('0x2c')](_0x58cc72);}};exports[_0x7649('0x7d')]=function(_0x1dbd68,_0x20b602,_0x484bbc){return db[_0x7649('0x2e')]['find']({'where':{'id':_0x1dbd68[_0x7649('0x48')]['id']}})['then'](handleEntityNotFound(_0x20b602,null))[_0x7649('0x24')](saveUpdates(_[_0x7649('0x3e')](_0x1dbd68[_0x7649('0x75')],[_0x7649('0x2b'),_0x7649('0x7e')]),null))[_0x7649('0x24')](respondWithResult(_0x20b602,null))[_0x7649('0x47')](handleError(_0x20b602,null));};exports['delete']=function(_0x24f186,_0x2f7048,_0x2b5738){return db[_0x7649('0x2e')]['find']({'where':{'id':_0x24f186[_0x7649('0x48')]['id']}})[_0x7649('0x24')](function(_0x343692){if(_0x343692){return _0x343692[_0x7649('0x25')]();}})[_0x7649('0x24')](function(_0x2d1993){var _0x3276cb=path[_0x7649('0x4d')](config[_0x7649('0x4e')],_0x7649('0x5d'),util[_0x7649('0x54')](_0x7649('0x53'),_0x2d1993[_0x7649('0x4b')],_0x2d1993[_0x7649('0x7f')]));var _0x453e99=path['join'](config['root'],_0x7649('0x52'),util[_0x7649('0x54')](_0x7649('0x53'),_0x2d1993[_0x7649('0x4b')],_0x2d1993[_0x7649('0x4c')]));fs[_0x7649('0x63')](_0x3276cb);fs[_0x7649('0x63')](_0x453e99);return _0x2d1993;})[_0x7649('0x24')](function(_0x451089){if(_0x451089){return _0x2f7048[_0x7649('0x19')](0xcc)[_0x7649('0x1a')]();}})['then'](handleEntityNotFound(_0x2f7048,null))[_0x7649('0x47')](handleError(_0x2f7048,null));};
\ No newline at end of file
index 34ab1a6..e2a06f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x090d=['request-promise','path','./sound.attributes','exports','define','../../config/logger','api','moment','bluebird'];(function(_0x25b24a,_0x1c0163){var _0x224e68=function(_0x1fc9d2){while(--_0x1fc9d2){_0x25b24a['push'](_0x25b24a['shift']());}};_0x224e68(++_0x1c0163);}(_0x090d,0x71));var _0xd090=function(_0x12d17d,_0x2ee1f7){_0x12d17d=_0x12d17d-0x0;var _0x47219d=_0x090d[_0x12d17d];return _0x47219d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd090('0x0'))(_0xd090('0x1'));var moment=require(_0xd090('0x2'));var BPromise=require(_0xd090('0x3'));var rp=require(_0xd090('0x4'));var fs=require('fs');var path=require(_0xd090('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd090('0x6'));module[_0xd090('0x7')]=function(_0x1ffd44,_0x47a457){return _0x1ffd44[_0xd090('0x8')]('Sound',attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd011=['../../config/environment','./sound.attributes','exports','define','tools_sounds','util','../../config/logger','moment','request-promise'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xd011,0x19a));var _0x1d01=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd011[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x1d01('0x0'));var logger=require(_0x1d01('0x1'))('api');var moment=require(_0x1d01('0x2'));var BPromise=require('bluebird');var rp=require(_0x1d01('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1d01('0x4'));var attributes=require(_0x1d01('0x5'));module[_0x1d01('0x6')]=function(_0x4b572b,_0x1ee9af){return _0x4b572b[_0x1d01('0x7')]('Sound',attributes,{'tableName':_0x1d01('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86a664c..9957073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d7b=['attributes','include','model','map','catch','ShowSound','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','client','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','message','result','Sound','find','options','where'];(function(_0x3245f0,_0x3b3c10){var _0x1997a1=function(_0x24a76c){while(--_0x24a76c){_0x3245f0['push'](_0x3245f0['shift']());}};_0x1997a1(++_0x3b3c10);}(_0x0d7b,0x145));var _0xb0d7=function(_0x15fc8f,_0x5cdcde){_0x15fc8f=_0x15fc8f-0x0;var _0x480536=_0x0d7b[_0x15fc8f];return _0x480536;};'use strict';var _=require(_0xb0d7('0x0'));var util=require(_0xb0d7('0x1'));var moment=require(_0xb0d7('0x2'));var BPromise=require('bluebird');var rs=require(_0xb0d7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0d7('0x4'))['db'];var utils=require(_0xb0d7('0x5'));var logger=require('../../config/logger')(_0xb0d7('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb0d7('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23972e,_0x5ea0a5,_0x4ecc45){return new BPromise(function(_0x580147,_0x56f8f7){return client[_0xb0d7('0x8')](_0x23972e,_0x4ecc45)[_0xb0d7('0x9')](function(_0x407dc4){logger[_0xb0d7('0xa')](_0xb0d7('0xb'),_0x5ea0a5,_0xb0d7('0xc'));logger[_0xb0d7('0xd')](_0xb0d7('0xe'),_0x5ea0a5,_0xb0d7('0xc'),JSON[_0xb0d7('0xf')](_0x407dc4));if(_0x407dc4['error']){if(_0x407dc4['error']['code']===0x1f4){logger[_0xb0d7('0x10')](_0xb0d7('0xb'),_0x5ea0a5,_0x407dc4[_0xb0d7('0x10')]['message']);return _0x56f8f7(_0x407dc4[_0xb0d7('0x10')]['message']);}logger[_0xb0d7('0x10')](_0xb0d7('0xb'),_0x5ea0a5,_0x407dc4['error'][_0xb0d7('0x11')]);return _0x580147(_0x407dc4[_0xb0d7('0x10')][_0xb0d7('0x11')]);}else{logger[_0xb0d7('0xa')](_0xb0d7('0xb'),_0x5ea0a5,_0xb0d7('0xc'));_0x580147(_0x407dc4[_0xb0d7('0x12')][_0xb0d7('0x11')]);}})['catch'](function(_0x2a128d){logger[_0xb0d7('0x10')](_0xb0d7('0xb'),_0x5ea0a5,_0x2a128d);_0x56f8f7(_0x2a128d);});});}exports['ShowSound']=function(_0x5bcf50){var _0x3a0951=this;return new Promise(function(_0x58094b,_0x34395c){return db[_0xb0d7('0x13')][_0xb0d7('0x14')]({'raw':_0x5bcf50[_0xb0d7('0x15')]?_0x5bcf50['options']['raw']===undefined?!![]:![]:!![],'where':_0x5bcf50['options']?_0x5bcf50[_0xb0d7('0x15')][_0xb0d7('0x16')]||null:null,'attributes':_0x5bcf50[_0xb0d7('0x15')]?_0x5bcf50[_0xb0d7('0x15')][_0xb0d7('0x17')]||null:null,'include':_0x5bcf50[_0xb0d7('0x15')]?_0x5bcf50[_0xb0d7('0x15')]['include']?_['map'](_0x5bcf50[_0xb0d7('0x15')][_0xb0d7('0x18')],function(_0x3213bd){return{'model':db[_0x3213bd[_0xb0d7('0x19')]],'as':_0x3213bd['as'],'attributes':_0x3213bd[_0xb0d7('0x17')],'include':_0x3213bd['include']?_[_0xb0d7('0x1a')](_0x3213bd[_0xb0d7('0x18')],function(_0x3b81ee){return{'model':db[_0x3b81ee[_0xb0d7('0x19')]],'as':_0x3b81ee['as'],'attributes':_0x3b81ee[_0xb0d7('0x17')],'include':_0x3b81ee[_0xb0d7('0x18')]?_[_0xb0d7('0x1a')](_0x3b81ee[_0xb0d7('0x18')],function(_0x1b5173){return{'model':db[_0x1b5173[_0xb0d7('0x19')]],'as':_0x1b5173['as'],'attributes':_0x1b5173[_0xb0d7('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb0d7('0x9')](function(_0x1e4bd4){logger[_0xb0d7('0xa')]('ShowSound',_0x5bcf50);logger[_0xb0d7('0xd')]('ShowSound',_0x5bcf50,JSON[_0xb0d7('0xf')](_0x1e4bd4));_0x58094b(_0x1e4bd4);})[_0xb0d7('0x1b')](function(_0x341282){logger['error'](_0xb0d7('0x1c'),_0x341282[_0xb0d7('0x11')],_0x5bcf50);_0x34395c(_0x3a0951[_0xb0d7('0x10')](0x1f4,_0x341282[_0xb0d7('0x11')]));});});};
\ No newline at end of file
+var _0x5760=['options','raw','where','attributes','map','include','model','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','ShowSound'];(function(_0xc41b47,_0x1c1b06){var _0x4dce3b=function(_0x4dfc8d){while(--_0x4dfc8d){_0xc41b47['push'](_0xc41b47['shift']());}};_0x4dce3b(++_0x1c1b06);}(_0x5760,0x1ab));var _0x0576=function(_0x523ed3,_0x1ab436){_0x523ed3=_0x523ed3-0x0;var _0x19cdaf=_0x5760[_0x523ed3];return _0x19cdaf;};'use strict';var _=require('lodash');var util=require(_0x0576('0x0'));var moment=require(_0x0576('0x1'));var BPromise=require(_0x0576('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0576('0x3'))['db'];var utils=require(_0x0576('0x4'));var logger=require(_0x0576('0x5'))(_0x0576('0x6'));var config=require(_0x0576('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0576('0x8')][_0x0576('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1189bc,_0x4eb356,_0x12d37a){return new BPromise(function(_0x17b024,_0x711687){return client[_0x0576('0xa')](_0x1189bc,_0x12d37a)[_0x0576('0xb')](function(_0xfd252e){logger[_0x0576('0xc')](_0x0576('0xd'),_0x4eb356,_0x0576('0xe'));logger[_0x0576('0xf')]('Sound,\x20%s,\x20%s,\x20%s',_0x4eb356,_0x0576('0xe'),JSON[_0x0576('0x10')](_0xfd252e));if(_0xfd252e[_0x0576('0x11')]){if(_0xfd252e['error'][_0x0576('0x12')]===0x1f4){logger[_0x0576('0x11')](_0x0576('0xd'),_0x4eb356,_0xfd252e[_0x0576('0x11')][_0x0576('0x13')]);return _0x711687(_0xfd252e['error'][_0x0576('0x13')]);}logger[_0x0576('0x11')]('Sound,\x20%s,\x20%s',_0x4eb356,_0xfd252e[_0x0576('0x11')][_0x0576('0x13')]);return _0x17b024(_0xfd252e[_0x0576('0x11')][_0x0576('0x13')]);}else{logger[_0x0576('0xc')](_0x0576('0xd'),_0x4eb356,_0x0576('0xe'));_0x17b024(_0xfd252e[_0x0576('0x14')]['message']);}})[_0x0576('0x15')](function(_0x52ca8b){logger[_0x0576('0x11')](_0x0576('0xd'),_0x4eb356,_0x52ca8b);_0x711687(_0x52ca8b);});});}exports[_0x0576('0x16')]=function(_0x1d4fa1){var _0x20a968=this;return new Promise(function(_0x3e5bf2,_0x1e951a){return db['Sound']['find']({'raw':_0x1d4fa1[_0x0576('0x17')]?_0x1d4fa1[_0x0576('0x17')][_0x0576('0x18')]===undefined?!![]:![]:!![],'where':_0x1d4fa1['options']?_0x1d4fa1[_0x0576('0x17')][_0x0576('0x19')]||null:null,'attributes':_0x1d4fa1[_0x0576('0x17')]?_0x1d4fa1[_0x0576('0x17')][_0x0576('0x1a')]||null:null,'include':_0x1d4fa1[_0x0576('0x17')]?_0x1d4fa1['options']['include']?_[_0x0576('0x1b')](_0x1d4fa1['options'][_0x0576('0x1c')],function(_0x17e0c6){return{'model':db[_0x17e0c6['model']],'as':_0x17e0c6['as'],'attributes':_0x17e0c6[_0x0576('0x1a')],'include':_0x17e0c6['include']?_[_0x0576('0x1b')](_0x17e0c6[_0x0576('0x1c')],function(_0x43c7a0){return{'model':db[_0x43c7a0[_0x0576('0x1d')]],'as':_0x43c7a0['as'],'attributes':_0x43c7a0['attributes'],'include':_0x43c7a0[_0x0576('0x1c')]?_[_0x0576('0x1b')](_0x43c7a0['include'],function(_0x1ed31f){return{'model':db[_0x1ed31f['model']],'as':_0x1ed31f['as'],'attributes':_0x1ed31f[_0x0576('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0576('0xb')](function(_0x3133cc){logger['info'](_0x0576('0x16'),_0x1d4fa1);logger[_0x0576('0xf')](_0x0576('0x16'),_0x1d4fa1,JSON[_0x0576('0x10')](_0x3133cc));_0x3e5bf2(_0x3133cc);})[_0x0576('0x15')](function(_0x28f99b){logger['error'](_0x0576('0x16'),_0x28f99b[_0x0576('0x13')],_0x1d4fa1);_0x1e951a(_0x20a968[_0x0576('0x11')](0x1f4,_0x28f99b['message']));});});};
\ No newline at end of file
index d691a19..51d98ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update','delete','destroy'];(function(_0x46946a,_0x47484b){var _0x374f0e=function(_0x54de33){while(--_0x54de33){_0x46946a['push'](_0x46946a['shift']());}};_0x374f0e(++_0x47484b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5f66[_0x4243a3];return _0x1b2a33;};'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('./squareMessage.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0xb')]('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router['put']('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0xe')](_0x65f6('0x9'),auth['isAuthenticated'](),controller[_0x65f6('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xb10b=['./squareMessage.controller','get','index','isAuthenticated','show','post','create','put','/:id','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x7ed629,_0x115527){var _0x369719=function(_0x31f102){while(--_0x31f102){_0x7ed629['push'](_0x7ed629['shift']());}};_0x369719(++_0x115527);}(_0xb10b,0x12a));var _0xbb10=function(_0x2fcf6b,_0xd140ff){_0x2fcf6b=_0x2fcf6b-0x0;var _0x155073=_0xb10b[_0x2fcf6b];return _0x155073;};'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('0xd')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['update']);router['delete'](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);module['exports']=router;
\ No newline at end of file
index 20a1445..d1a8c07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb649=['sequelize','exports','TEXT','ENUM','out','STRING'];(function(_0x9cf913,_0x47721d){var _0x2aff3b=function(_0x3b666d){while(--_0x3b666d){_0x9cf913['push'](_0x9cf913['shift']());}};_0x2aff3b(++_0x47721d);}(_0xb649,0xe4));var _0x9b64=function(_0x2e2f84,_0x24e46f){_0x2e2f84=_0x2e2f84-0x0;var _0x448191=_0xb649[_0x2e2f84];return _0x448191;};'use strict';var Sequelize=require(_0x9b64('0x0'));module[_0x9b64('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x9b64('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x9b64('0x3')]('in',_0x9b64('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x9b64('0x5')]},'providerResponse':{'type':Sequelize[_0x9b64('0x2')]}};
\ No newline at end of file
+var _0x4431=['sequelize','TEXT','medium','out'];(function(_0x5ac0dd,_0x387215){var _0x28dbc2=function(_0x4516fd){while(--_0x4516fd){_0x5ac0dd['push'](_0x5ac0dd['shift']());}};_0x28dbc2(++_0x387215);}(_0x4431,0x134));var _0x1443=function(_0x3e22d4,_0x45e575){_0x3e22d4=_0x3e22d4-0x0;var _0x4674da=_0x4431[_0x3e22d4];return _0x4674da;};'use strict';var Sequelize=require(_0x1443('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x1443('0x1')](_0x1443('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0x1443('0x3')),'defaultValue':_0x1443('0x3'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x1443('0x1')]}};
\ No newline at end of file
index d81df72..76e6606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x219f=['then','destroy','sendStatus','error','name','send','index','map','SquareMessage','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','show','params','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','reject','save','update'];(function(_0x31fe36,_0x5814de){var _0x5f3add=function(_0x33fd21){while(--_0x33fd21){_0x31fe36['push'](_0x31fe36['shift']());}};_0x5f3add(++_0x5814de);}(_0x219f,0x141));var _0xf219=function(_0x418a57,_0x104e92){_0x418a57=_0x418a57-0x0;var _0x439e7c=_0x219f[_0x418a57];return _0x439e7c;};'use strict';var emlformat=require(_0xf219('0x0'));var rimraf=require(_0xf219('0x1'));var zipdir=require(_0xf219('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf219('0x3'));var moment=require(_0xf219('0x4'));var BPromise=require(_0xf219('0x5'));var Mustache=require(_0xf219('0x6'));var util=require(_0xf219('0x7'));var path=require(_0xf219('0x8'));var sox=require(_0xf219('0x9'));var csv=require('to-csv');var ejs=require(_0xf219('0xa'));var fs=require('fs');var fs_extra=require(_0xf219('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf219('0xc'));var deskjs=require(_0xf219('0xd'));var toCsv=require(_0xf219('0xe'));var querystring=require(_0xf219('0xf'));var Papa=require(_0xf219('0x10'));var Redis=require('ioredis');var authService=require(_0xf219('0x11'));var qs=require(_0xf219('0x12'));var as=require(_0xf219('0x13'));var hardwareService=require(_0xf219('0x14'));var logger=require(_0xf219('0x15'))(_0xf219('0x16'));var utils=require('../../config/utils');var config=require(_0xf219('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf219('0x18'))['db'];function respondWithStatusCode(_0x107037,_0x3cb053){_0x3cb053=_0x3cb053||0xcc;return function(_0x299d67){if(_0x299d67){return _0x107037['sendStatus'](_0x3cb053);}return _0x107037[_0xf219('0x19')](_0x3cb053)[_0xf219('0x1a')]();};}function respondWithResult(_0x4adec9,_0x1fd275){_0x1fd275=_0x1fd275||0xc8;return function(_0x2695a5){if(_0x2695a5){return _0x4adec9['status'](_0x1fd275)['json'](_0x2695a5);}};}function respondWithFilteredResult(_0x5c3953,_0x1c39e1){return function(_0x942311){if(_0x942311){var _0x8db7ad=typeof _0x1c39e1[_0xf219('0x1b')]===_0xf219('0x1c')&&typeof _0x1c39e1['limit']==='undefined';var _0x585b25=_0x942311[_0xf219('0x1d')];var _0x465739=_0x8db7ad?0x0:_0x1c39e1[_0xf219('0x1b')];var _0x270dff=_0x8db7ad?_0x942311['count']:_0x1c39e1['offset']+_0x1c39e1[_0xf219('0x1e')];var _0x59b2a8;if(_0x270dff>=_0x585b25){_0x270dff=_0x585b25;_0x59b2a8=0xc8;}else{_0x59b2a8=0xce;}_0x5c3953[_0xf219('0x19')](_0x59b2a8);return _0x5c3953['set']('Content-Range',_0x465739+'-'+_0x270dff+'/'+_0x585b25)['json'](_0x942311);}return null;};}function patchUpdates(_0x35ea24){return function(_0x59b330){try{jsonpatch['apply'](_0x59b330,_0x35ea24,!![]);}catch(_0x58b26c){return BPromise[_0xf219('0x1f')](_0x58b26c);}return _0x59b330[_0xf219('0x20')]();};}function saveUpdates(_0x507e1a,_0x7af441){return function(_0x207b4d){if(_0x207b4d){return _0x207b4d[_0xf219('0x21')](_0x507e1a)[_0xf219('0x22')](function(_0x16507a){return _0x16507a;});}return null;};}function removeEntity(_0x188443,_0x1eea60){return function(_0x5a49bb){if(_0x5a49bb){return _0x5a49bb[_0xf219('0x23')]()['then'](function(){_0x188443[_0xf219('0x19')](0xcc)[_0xf219('0x1a')]();});}};}function handleEntityNotFound(_0x324d09,_0x4034e2){return function(_0x1f808e){if(!_0x1f808e){_0x324d09[_0xf219('0x24')](0x194);}return _0x1f808e;};}function handleError(_0x20aee8,_0x576c1d){_0x576c1d=_0x576c1d||0x1f4;return function(_0x382b1e){logger[_0xf219('0x25')](_0x382b1e['stack']);if(_0x382b1e[_0xf219('0x26')]){delete _0x382b1e['name'];}_0x20aee8[_0xf219('0x19')](_0x576c1d)[_0xf219('0x27')](_0x382b1e);};}exports[_0xf219('0x28')]=function(_0x2e8370,_0x5697c4){var _0x5ae949={},_0xa45fed={},_0xd179ec={'count':0x0,'rows':[]};var _0x1e45d2=_[_0xf219('0x29')](db[_0xf219('0x2a')]['rawAttributes'],function(_0x275079){return{'name':_0x275079['fieldName'],'type':_0x275079[_0xf219('0x2b')]['key']};});_0xa45fed[_0xf219('0x2c')]=_[_0xf219('0x29')](_0x1e45d2,_0xf219('0x26'));_0xa45fed[_0xf219('0x2d')]=_[_0xf219('0x2e')](_0x2e8370['query']);_0xa45fed[_0xf219('0x2f')]=_[_0xf219('0x30')](_0xa45fed[_0xf219('0x2c')],_0xa45fed[_0xf219('0x2d')]);_0x5ae949[_0xf219('0x31')]=_[_0xf219('0x30')](_0xa45fed[_0xf219('0x2c')],qs[_0xf219('0x32')](_0x2e8370[_0xf219('0x2d')]['fields']));_0x5ae949['attributes']=_0x5ae949[_0xf219('0x31')][_0xf219('0x33')]?_0x5ae949[_0xf219('0x31')]:_0xa45fed[_0xf219('0x2c')];if(!_0x2e8370['query'][_0xf219('0x34')](_0xf219('0x35'))){_0x5ae949[_0xf219('0x1e')]=qs[_0xf219('0x1e')](_0x2e8370[_0xf219('0x2d')][_0xf219('0x1e')]);_0x5ae949[_0xf219('0x1b')]=qs[_0xf219('0x1b')](_0x2e8370['query'][_0xf219('0x1b')]);}_0x5ae949[_0xf219('0x36')]=qs['sort'](_0x2e8370['query'][_0xf219('0x37')]);_0x5ae949['where']=qs['filters'](_[_0xf219('0x38')](_0x2e8370['query'],_0xa45fed[_0xf219('0x2f')]),_0x1e45d2);if(_0x2e8370[_0xf219('0x2d')][_0xf219('0x39')]){_0x5ae949[_0xf219('0x3a')]=_[_0xf219('0x3b')](_0x5ae949['where'],{'$or':_[_0xf219('0x29')](_0x1e45d2,function(_0x56cc9b){if(_0x56cc9b[_0xf219('0x2b')]!==_0xf219('0x3c')){var _0x25c21c={};_0x25c21c[_0x56cc9b[_0xf219('0x26')]]={'$like':'%'+_0x2e8370['query']['filter']+'%'};return _0x25c21c;}})});}_0x5ae949=_[_0xf219('0x3b')]({},_0x5ae949,_0x2e8370[_0xf219('0x3d')]);var _0x4615c1={'where':_0x5ae949[_0xf219('0x3a')]};return db[_0xf219('0x2a')]['count'](_0x4615c1)['then'](function(_0xbaf26d){_0xd179ec[_0xf219('0x1d')]=_0xbaf26d;if(_0x2e8370[_0xf219('0x2d')]['includeAll']){_0x5ae949[_0xf219('0x3e')]=[{'all':!![]}];}return db['SquareMessage'][_0xf219('0x3f')](_0x5ae949);})['then'](function(_0x13e6ea){_0xd179ec['rows']=_0x13e6ea;return _0xd179ec;})[_0xf219('0x22')](respondWithFilteredResult(_0x5697c4,_0x5ae949))['catch'](handleError(_0x5697c4,null));};exports[_0xf219('0x40')]=function(_0x177201,_0xcdcf47){var _0x3419c1={'raw':!![],'where':{'id':_0x177201[_0xf219('0x41')]['id']}},_0xbcb8fb={};_0xbcb8fb[_0xf219('0x2c')]=_['keys'](db[_0xf219('0x2a')]['rawAttributes']);_0xbcb8fb[_0xf219('0x2d')]=_['keys'](_0x177201[_0xf219('0x2d')]);_0xbcb8fb[_0xf219('0x2f')]=_['intersection'](_0xbcb8fb[_0xf219('0x2c')],_0xbcb8fb[_0xf219('0x2d')]);_0x3419c1[_0xf219('0x31')]=_[_0xf219('0x30')](_0xbcb8fb[_0xf219('0x2c')],qs[_0xf219('0x32')](_0x177201['query'][_0xf219('0x32')]));_0x3419c1[_0xf219('0x31')]=_0x3419c1[_0xf219('0x31')][_0xf219('0x33')]?_0x3419c1[_0xf219('0x31')]:_0xbcb8fb['model'];if(_0x177201['query'][_0xf219('0x42')]){_0x3419c1[_0xf219('0x3e')]=[{'all':!![]}];}_0x3419c1=_[_0xf219('0x3b')]({},_0x3419c1,_0x177201[_0xf219('0x3d')]);return db['SquareMessage'][_0xf219('0x43')](_0x3419c1)[_0xf219('0x22')](handleEntityNotFound(_0xcdcf47,null))[_0xf219('0x22')](respondWithResult(_0xcdcf47,null))[_0xf219('0x44')](handleError(_0xcdcf47,null));};exports[_0xf219('0x45')]=function(_0x42f81b,_0x158915){return db[_0xf219('0x2a')][_0xf219('0x45')](_0x42f81b['body'],{})[_0xf219('0x22')](respondWithResult(_0x158915,0xc9))[_0xf219('0x44')](handleError(_0x158915,null));};exports['update']=function(_0xba85aa,_0x39f5a7){if(_0xba85aa[_0xf219('0x46')]['id']){delete _0xba85aa[_0xf219('0x46')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0xba85aa[_0xf219('0x41')]['id']}})['then'](handleEntityNotFound(_0x39f5a7,null))[_0xf219('0x22')](saveUpdates(_0xba85aa[_0xf219('0x46')],null))['then'](respondWithResult(_0x39f5a7,null))['catch'](handleError(_0x39f5a7,null));};exports[_0xf219('0x23')]=function(_0x5a64d9,_0x293a65){return db['SquareMessage'][_0xf219('0x43')]({'where':{'id':_0x5a64d9[_0xf219('0x41')]['id']}})[_0xf219('0x22')](handleEntityNotFound(_0x293a65,null))['then'](removeEntity(_0x293a65,null))[_0xf219('0x44')](handleError(_0x293a65,null));};
\ No newline at end of file
+var _0x1472=['jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','squel'];(function(_0x49fd64,_0x3b5b19){var _0x573ba7=function(_0x2494ae){while(--_0x2494ae){_0x49fd64['push'](_0x49fd64['shift']());}};_0x573ba7(++_0x3b5b19);}(_0x1472,0x166));var _0x2147=function(_0x455e82,_0x522f6f){_0x455e82=_0x455e82-0x0;var _0x2d0520=_0x1472[_0x455e82];return _0x2d0520;};'use strict';var emlformat=require(_0x2147('0x0'));var rimraf=require(_0x2147('0x1'));var zipdir=require(_0x2147('0x2'));var jsonpatch=require(_0x2147('0x3'));var rp=require(_0x2147('0x4'));var moment=require(_0x2147('0x5'));var BPromise=require(_0x2147('0x6'));var Mustache=require(_0x2147('0x7'));var util=require('util');var path=require('path');var sox=require(_0x2147('0x8'));var csv=require(_0x2147('0x9'));var ejs=require(_0x2147('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2147('0xb'));var crypto=require('crypto');var jsforce=require(_0x2147('0xc'));var deskjs=require(_0x2147('0xd'));var toCsv=require(_0x2147('0x9'));var querystring=require('querystring');var Papa=require(_0x2147('0xe'));var Redis=require(_0x2147('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2147('0x10'));var as=require(_0x2147('0x11'));var hardwareService=require(_0x2147('0x12'));var logger=require(_0x2147('0x13'))(_0x2147('0x14'));var utils=require('../../config/utils');var config=require(_0x2147('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2147('0x16'))['db'];function respondWithStatusCode(_0x3b774d,_0x11a373){_0x11a373=_0x11a373||0xcc;return function(_0x2c537b){if(_0x2c537b){return _0x3b774d[_0x2147('0x17')](_0x11a373);}return _0x3b774d[_0x2147('0x18')](_0x11a373)[_0x2147('0x19')]();};}function respondWithResult(_0x1f14fe,_0x4aef54){_0x4aef54=_0x4aef54||0xc8;return function(_0xcbffd6){if(_0xcbffd6){return _0x1f14fe[_0x2147('0x18')](_0x4aef54)['json'](_0xcbffd6);}};}function respondWithFilteredResult(_0x4de221,_0x284435){return function(_0x116673){if(_0x116673){var _0x27e193=typeof _0x284435['offset']===_0x2147('0x1a')&&typeof _0x284435[_0x2147('0x1b')]==='undefined';var _0x35c26b=_0x116673[_0x2147('0x1c')];var _0x2b1fe9=_0x27e193?0x0:_0x284435[_0x2147('0x1d')];var _0x55694d=_0x27e193?_0x116673[_0x2147('0x1c')]:_0x284435[_0x2147('0x1d')]+_0x284435[_0x2147('0x1b')];var _0x125943;if(_0x55694d>=_0x35c26b){_0x55694d=_0x35c26b;_0x125943=0xc8;}else{_0x125943=0xce;}_0x4de221[_0x2147('0x18')](_0x125943);return _0x4de221[_0x2147('0x1e')](_0x2147('0x1f'),_0x2b1fe9+'-'+_0x55694d+'/'+_0x35c26b)['json'](_0x116673);}return null;};}function patchUpdates(_0x48e737){return function(_0x298364){try{jsonpatch[_0x2147('0x20')](_0x298364,_0x48e737,!![]);}catch(_0x1049e9){return BPromise[_0x2147('0x21')](_0x1049e9);}return _0x298364[_0x2147('0x22')]();};}function saveUpdates(_0x477df1,_0x1035cc){return function(_0x4648cb){if(_0x4648cb){return _0x4648cb[_0x2147('0x23')](_0x477df1)[_0x2147('0x24')](function(_0x36d29a){return _0x36d29a;});}return null;};}function removeEntity(_0x20ee10,_0x54c4ed){return function(_0x36f14a){if(_0x36f14a){return _0x36f14a[_0x2147('0x25')]()[_0x2147('0x24')](function(){_0x20ee10[_0x2147('0x18')](0xcc)[_0x2147('0x19')]();});}};}function handleEntityNotFound(_0x1bae17,_0x165307){return function(_0x12e0d7){if(!_0x12e0d7){_0x1bae17[_0x2147('0x17')](0x194);}return _0x12e0d7;};}function handleError(_0x2728ef,_0x67390a){_0x67390a=_0x67390a||0x1f4;return function(_0x1a6128){logger['error'](_0x1a6128[_0x2147('0x26')]);if(_0x1a6128['name']){delete _0x1a6128[_0x2147('0x27')];}_0x2728ef[_0x2147('0x18')](_0x67390a)[_0x2147('0x28')](_0x1a6128);};}exports[_0x2147('0x29')]=function(_0x4d63a7,_0x13c1fb){var _0x339d6={},_0x1db95b={},_0x33aba8={'count':0x0,'rows':[]};var _0x25fc03=_[_0x2147('0x2a')](db[_0x2147('0x2b')][_0x2147('0x2c')],function(_0xe5f5c0){return{'name':_0xe5f5c0[_0x2147('0x2d')],'type':_0xe5f5c0[_0x2147('0x2e')][_0x2147('0x2f')]};});_0x1db95b[_0x2147('0x30')]=_[_0x2147('0x2a')](_0x25fc03,_0x2147('0x27'));_0x1db95b['query']=_[_0x2147('0x31')](_0x4d63a7['query']);_0x1db95b['filters']=_[_0x2147('0x32')](_0x1db95b[_0x2147('0x30')],_0x1db95b[_0x2147('0x33')]);_0x339d6['attributes']=_[_0x2147('0x32')](_0x1db95b[_0x2147('0x30')],qs[_0x2147('0x34')](_0x4d63a7[_0x2147('0x33')][_0x2147('0x34')]));_0x339d6[_0x2147('0x35')]=_0x339d6[_0x2147('0x35')][_0x2147('0x36')]?_0x339d6[_0x2147('0x35')]:_0x1db95b['model'];if(!_0x4d63a7[_0x2147('0x33')][_0x2147('0x37')](_0x2147('0x38'))){_0x339d6['limit']=qs[_0x2147('0x1b')](_0x4d63a7[_0x2147('0x33')][_0x2147('0x1b')]);_0x339d6[_0x2147('0x1d')]=qs[_0x2147('0x1d')](_0x4d63a7[_0x2147('0x33')][_0x2147('0x1d')]);}_0x339d6['order']=qs[_0x2147('0x39')](_0x4d63a7['query'][_0x2147('0x39')]);_0x339d6[_0x2147('0x3a')]=qs[_0x2147('0x3b')](_[_0x2147('0x3c')](_0x4d63a7['query'],_0x1db95b[_0x2147('0x3b')]),_0x25fc03);if(_0x4d63a7[_0x2147('0x33')][_0x2147('0x3d')]){_0x339d6[_0x2147('0x3a')]=_['merge'](_0x339d6[_0x2147('0x3a')],{'$or':_[_0x2147('0x2a')](_0x25fc03,function(_0x33c723){if(_0x33c723[_0x2147('0x2e')]!==_0x2147('0x3e')){var _0x52fb94={};_0x52fb94[_0x33c723[_0x2147('0x27')]]={'$like':'%'+_0x4d63a7[_0x2147('0x33')]['filter']+'%'};return _0x52fb94;}})});}_0x339d6=_[_0x2147('0x3f')]({},_0x339d6,_0x4d63a7[_0x2147('0x40')]);var _0x2ac4f3={'where':_0x339d6[_0x2147('0x3a')]};return db[_0x2147('0x2b')][_0x2147('0x1c')](_0x2ac4f3)['then'](function(_0x139881){_0x33aba8[_0x2147('0x1c')]=_0x139881;if(_0x4d63a7['query'][_0x2147('0x41')]){_0x339d6[_0x2147('0x42')]=[{'all':!![]}];}return db[_0x2147('0x2b')][_0x2147('0x43')](_0x339d6);})[_0x2147('0x24')](function(_0x2534d8){_0x33aba8[_0x2147('0x44')]=_0x2534d8;return _0x33aba8;})['then'](respondWithFilteredResult(_0x13c1fb,_0x339d6))[_0x2147('0x45')](handleError(_0x13c1fb,null));};exports['show']=function(_0xbee4d0,_0x1324b2){var _0x2f1946={'raw':!![],'where':{'id':_0xbee4d0[_0x2147('0x46')]['id']}},_0x4eeee8={};_0x4eeee8[_0x2147('0x30')]=_[_0x2147('0x31')](db['SquareMessage']['rawAttributes']);_0x4eeee8[_0x2147('0x33')]=_[_0x2147('0x31')](_0xbee4d0[_0x2147('0x33')]);_0x4eeee8[_0x2147('0x3b')]=_[_0x2147('0x32')](_0x4eeee8[_0x2147('0x30')],_0x4eeee8[_0x2147('0x33')]);_0x2f1946[_0x2147('0x35')]=_[_0x2147('0x32')](_0x4eeee8[_0x2147('0x30')],qs[_0x2147('0x34')](_0xbee4d0[_0x2147('0x33')][_0x2147('0x34')]));_0x2f1946[_0x2147('0x35')]=_0x2f1946[_0x2147('0x35')][_0x2147('0x36')]?_0x2f1946[_0x2147('0x35')]:_0x4eeee8[_0x2147('0x30')];if(_0xbee4d0[_0x2147('0x33')][_0x2147('0x41')]){_0x2f1946[_0x2147('0x42')]=[{'all':!![]}];}_0x2f1946=_['merge']({},_0x2f1946,_0xbee4d0[_0x2147('0x40')]);return db[_0x2147('0x2b')][_0x2147('0x47')](_0x2f1946)[_0x2147('0x24')](handleEntityNotFound(_0x1324b2,null))['then'](respondWithResult(_0x1324b2,null))[_0x2147('0x45')](handleError(_0x1324b2,null));};exports[_0x2147('0x48')]=function(_0x406ae6,_0x1ed3bf){return db['SquareMessage'][_0x2147('0x48')](_0x406ae6[_0x2147('0x49')],{})[_0x2147('0x24')](respondWithResult(_0x1ed3bf,0xc9))[_0x2147('0x45')](handleError(_0x1ed3bf,null));};exports[_0x2147('0x23')]=function(_0x2837cd,_0x407f17){if(_0x2837cd[_0x2147('0x49')]['id']){delete _0x2837cd[_0x2147('0x49')]['id'];}return db[_0x2147('0x2b')][_0x2147('0x47')]({'where':{'id':_0x2837cd[_0x2147('0x46')]['id']}})[_0x2147('0x24')](handleEntityNotFound(_0x407f17,null))[_0x2147('0x24')](saveUpdates(_0x2837cd[_0x2147('0x49')],null))['then'](respondWithResult(_0x407f17,null))['catch'](handleError(_0x407f17,null));};exports['destroy']=function(_0x2336b5,_0x54f857){return db[_0x2147('0x2b')][_0x2147('0x47')]({'where':{'id':_0x2336b5[_0x2147('0x46')]['id']}})['then'](handleEntityNotFound(_0x54f857,null))['then'](removeEntity(_0x54f857,null))[_0x2147('0x45')](handleError(_0x54f857,null));};
\ No newline at end of file
index c37b715..b2b1467 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x837c=['../../config/environment','./squareMessage.attributes','define','SquareMessage','square_messages','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x2389bc,_0x167cd2){var _0x170548=function(_0x2da7f2){while(--_0x2da7f2){_0x2389bc['push'](_0x2389bc['shift']());}};_0x170548(++_0x167cd2);}(_0x837c,0x10d));var _0xc837=function(_0x563856,_0x3016f7){_0x563856=_0x563856-0x0;var _0x8f4add=_0x837c[_0x563856];return _0x8f4add;};'use strict';var _=require('lodash');var util=require(_0xc837('0x0'));var logger=require(_0xc837('0x1'))(_0xc837('0x2'));var moment=require('moment');var BPromise=require(_0xc837('0x3'));var rp=require(_0xc837('0x4'));var fs=require('fs');var path=require(_0xc837('0x5'));var rimraf=require(_0xc837('0x6'));var config=require(_0xc837('0x7'));var attributes=require(_0xc837('0x8'));module['exports']=function(_0x4a383d,_0x33f902){return _0x4a383d[_0xc837('0x9')](_0xc837('0xa'),attributes,{'tableName':_0xc837('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a07=['define','SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports'];(function(_0x4c4bbd,_0x326b2f){var _0x2761cc=function(_0x23c078){while(--_0x23c078){_0x4c4bbd['push'](_0x4c4bbd['shift']());}};_0x2761cc(++_0x326b2f);}(_0x1a07,0x1d7));var _0x71a0=function(_0x2794e4,_0x11bcf6){_0x2794e4=_0x2794e4-0x0;var _0xf860d4=_0x1a07[_0x2794e4];return _0xf860d4;};'use strict';var _=require(_0x71a0('0x0'));var util=require(_0x71a0('0x1'));var logger=require(_0x71a0('0x2'))(_0x71a0('0x3'));var moment=require(_0x71a0('0x4'));var BPromise=require('bluebird');var rp=require(_0x71a0('0x5'));var fs=require('fs');var path=require(_0x71a0('0x6'));var rimraf=require('rimraf');var config=require(_0x71a0('0x7'));var attributes=require('./squareMessage.attributes');module[_0x71a0('0x8')]=function(_0x2dbb83,_0x56e3ba){return _0x2dbb83[_0x71a0('0x9')](_0x71a0('0xa'),attributes,{'tableName':_0x71a0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa63f80..16ec8dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b8a=['http','request','info','request\x20sent','debug','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','result','catch','SquareMessage','create','body','options','raw','CreateSquareMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client'];(function(_0x8c51b6,_0x431aff){var _0x2fe4b7=function(_0x58051a){while(--_0x58051a){_0x8c51b6['push'](_0x8c51b6['shift']());}};_0x2fe4b7(++_0x431aff);}(_0x2b8a,0x66));var _0xa2b8=function(_0x2bc23b,_0x4e6fc8){_0x2bc23b=_0x2bc23b-0x0;var _0x48d496=_0x2b8a[_0x2bc23b];return _0x48d496;};'use strict';var _=require(_0xa2b8('0x0'));var util=require(_0xa2b8('0x1'));var moment=require(_0xa2b8('0x2'));var BPromise=require(_0xa2b8('0x3'));var rs=require(_0xa2b8('0x4'));var fs=require('fs');var Redis=require(_0xa2b8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa2b8('0x6'));var logger=require('../../config/logger')(_0xa2b8('0x7'));var config=require(_0xa2b8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa2b8('0x9')][_0xa2b8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51d451,_0x25bf82,_0x59972b){return new BPromise(function(_0x536ae1,_0x1474a1){return client[_0xa2b8('0xb')](_0x51d451,_0x59972b)['then'](function(_0x24f4af){logger[_0xa2b8('0xc')]('SquareMessage,\x20%s,\x20%s',_0x25bf82,_0xa2b8('0xd'));logger[_0xa2b8('0xe')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x25bf82,_0xa2b8('0xd'),JSON[_0xa2b8('0xf')](_0x24f4af));if(_0x24f4af[_0xa2b8('0x10')]){if(_0x24f4af[_0xa2b8('0x10')][_0xa2b8('0x11')]===0x1f4){logger[_0xa2b8('0x10')](_0xa2b8('0x12'),_0x25bf82,_0x24f4af[_0xa2b8('0x10')]['message']);return _0x1474a1(_0x24f4af[_0xa2b8('0x10')][_0xa2b8('0x13')]);}logger[_0xa2b8('0x10')](_0xa2b8('0x12'),_0x25bf82,_0x24f4af['error']['message']);return _0x536ae1(_0x24f4af['error'][_0xa2b8('0x13')]);}else{logger[_0xa2b8('0xc')](_0xa2b8('0x12'),_0x25bf82,'request\x20sent');_0x536ae1(_0x24f4af[_0xa2b8('0x14')][_0xa2b8('0x13')]);}})[_0xa2b8('0x15')](function(_0x2238c7){logger[_0xa2b8('0x10')](_0xa2b8('0x12'),_0x25bf82,_0x2238c7);_0x1474a1(_0x2238c7);});});}exports['CreateSquareMessage']=function(_0x1d9658){var _0x34a43e=this;return new Promise(function(_0x44b7c6,_0x22fee9){return db[_0xa2b8('0x16')][_0xa2b8('0x17')](_0x1d9658[_0xa2b8('0x18')],{'raw':_0x1d9658[_0xa2b8('0x19')]?_0x1d9658[_0xa2b8('0x19')][_0xa2b8('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x19cada){logger[_0xa2b8('0xc')](_0xa2b8('0x1b'),_0x1d9658);logger[_0xa2b8('0xe')]('CreateSquareMessage',_0x1d9658,JSON[_0xa2b8('0xf')](_0x19cada));_0x44b7c6(_0x19cada);})[_0xa2b8('0x15')](function(_0x4ee7ca){logger[_0xa2b8('0x10')](_0xa2b8('0x1b'),_0x4ee7ca['message'],_0x1d9658);_0x22fee9(_0x34a43e[_0xa2b8('0x10')](0x1f4,_0x4ee7ca[_0xa2b8('0x13')]));});});};
\ No newline at end of file
+var _0xec28=['error','code','SquareMessage,\x20%s,\x20%s','message','catch','CreateSquareMessage','SquareMessage','create','body','options','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2ab76b,_0x176579){var _0x201126=function(_0x11d8c8){while(--_0x11d8c8){_0x2ab76b['push'](_0x2ab76b['shift']());}};_0x201126(++_0x176579);}(_0xec28,0x122));var _0x8ec2=function(_0x37437c,_0x55dacf){_0x37437c=_0x37437c-0x0;var _0x35e1a1=_0xec28[_0x37437c];return _0x35e1a1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8ec2('0x0'));var BPromise=require(_0x8ec2('0x1'));var rs=require(_0x8ec2('0x2'));var fs=require('fs');var Redis=require(_0x8ec2('0x3'));var db=require(_0x8ec2('0x4'))['db'];var utils=require(_0x8ec2('0x5'));var logger=require(_0x8ec2('0x6'))(_0x8ec2('0x7'));var config=require(_0x8ec2('0x8'));var jayson=require(_0x8ec2('0x9'));var client=jayson[_0x8ec2('0xa')][_0x8ec2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bbc48,_0x4635f4,_0x6866e6){return new BPromise(function(_0x57750e,_0xb4f3da){return client['request'](_0x2bbc48,_0x6866e6)[_0x8ec2('0xc')](function(_0xb61f0d){logger[_0x8ec2('0xd')]('SquareMessage,\x20%s,\x20%s',_0x4635f4,_0x8ec2('0xe'));logger[_0x8ec2('0xf')](_0x8ec2('0x10'),_0x4635f4,_0x8ec2('0xe'),JSON[_0x8ec2('0x11')](_0xb61f0d));if(_0xb61f0d[_0x8ec2('0x12')]){if(_0xb61f0d[_0x8ec2('0x12')][_0x8ec2('0x13')]===0x1f4){logger[_0x8ec2('0x12')](_0x8ec2('0x14'),_0x4635f4,_0xb61f0d[_0x8ec2('0x12')][_0x8ec2('0x15')]);return _0xb4f3da(_0xb61f0d[_0x8ec2('0x12')]['message']);}logger[_0x8ec2('0x12')](_0x8ec2('0x14'),_0x4635f4,_0xb61f0d[_0x8ec2('0x12')][_0x8ec2('0x15')]);return _0x57750e(_0xb61f0d[_0x8ec2('0x12')][_0x8ec2('0x15')]);}else{logger['info']('SquareMessage,\x20%s,\x20%s',_0x4635f4,_0x8ec2('0xe'));_0x57750e(_0xb61f0d['result'][_0x8ec2('0x15')]);}})[_0x8ec2('0x16')](function(_0x2d684e){logger['error'](_0x8ec2('0x14'),_0x4635f4,_0x2d684e);_0xb4f3da(_0x2d684e);});});}exports[_0x8ec2('0x17')]=function(_0x2b0ec4){var _0xc73d5a=this;return new Promise(function(_0x2907c6,_0x1c1a66){return db[_0x8ec2('0x18')][_0x8ec2('0x19')](_0x2b0ec4[_0x8ec2('0x1a')],{'raw':_0x2b0ec4[_0x8ec2('0x1b')]?_0x2b0ec4[_0x8ec2('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x8ec2('0xc')](function(_0x539873){logger[_0x8ec2('0xd')](_0x8ec2('0x17'),_0x2b0ec4);logger[_0x8ec2('0xf')](_0x8ec2('0x17'),_0x2b0ec4,JSON[_0x8ec2('0x11')](_0x539873));_0x2907c6(_0x539873);})[_0x8ec2('0x16')](function(_0x1be0f3){logger[_0x8ec2('0x12')]('CreateSquareMessage',_0x1be0f3[_0x8ec2('0x15')],_0x2b0ec4);_0x1c1a66(_0xc73d5a['error'](0x1f4,_0x1be0f3[_0x8ec2('0x15')]));});});};
\ No newline at end of file
index e050f55..33eed07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefb9=['15s','test','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','isAuthenticated','show','/:id/test'];(function(_0x20d595,_0x5965fd){var _0x1a9ed8=function(_0x590029){while(--_0x590029){_0x20d595['push'](_0x20d595['shift']());}};_0x1a9ed8(++_0x5965fd);}(_0xefb9,0x16f));var _0x9efb=function(_0x5e2b34,_0x58385c){_0x5e2b34=_0x5e2b34-0x0;var _0x4859f9=_0xefb9[_0x5e2b34];return _0x4859f9;};'use strict';var multer=require(_0x9efb('0x0'));var util=require(_0x9efb('0x1'));var path=require(_0x9efb('0x2'));var timeout=require(_0x9efb('0x3'));var express=require('express');var router=express[_0x9efb('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9efb('0x5'));var config=require(_0x9efb('0x6'));var controller=require(_0x9efb('0x7'));router[_0x9efb('0x8')]('/',auth['isAuthenticated'](),controller[_0x9efb('0x9')]);router[_0x9efb('0x8')]('/:id',auth[_0x9efb('0xa')](),controller[_0x9efb('0xb')]);router[_0x9efb('0x8')](_0x9efb('0xc'),auth[_0x9efb('0xa')](),timeout(_0x9efb('0xd')),controller[_0x9efb('0xe')]);router['post']('/',auth[_0x9efb('0xa')](),controller['create']);router[_0x9efb('0xf')](_0x9efb('0x10'),auth[_0x9efb('0xa')](),controller['update']);router[_0x9efb('0x11')](_0x9efb('0x10'),auth[_0x9efb('0xa')](),controller[_0x9efb('0x12')]);module[_0x9efb('0x13')]=router;
\ No newline at end of file
+var _0xb498=['../../config/environment','./squareOdbc.controller','index','get','test','post','put','/:id','isAuthenticated','delete','destroy','exports','multer','path','connect-timeout','express','../../components/interaction/service'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb498,0x182));var _0x8b49=function(_0x465cf9,_0x4804e4){_0x465cf9=_0x465cf9-0x0;var _0x4d556a=_0xb498[_0x465cf9];return _0x4d556a;};'use strict';var multer=require(_0x8b49('0x0'));var util=require('util');var path=require(_0x8b49('0x1'));var timeout=require(_0x8b49('0x2'));var express=require(_0x8b49('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8b49('0x4'));var config=require(_0x8b49('0x5'));var controller=require(_0x8b49('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x8b49('0x7')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x8b49('0x8')]('/:id/test',auth['isAuthenticated'](),timeout('15s'),controller[_0x8b49('0x9')]);router[_0x8b49('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8b49('0xb')](_0x8b49('0xc'),auth[_0x8b49('0xd')](),controller['update']);router[_0x8b49('0xe')](_0x8b49('0xc'),auth[_0x8b49('0xd')](),controller[_0x8b49('0xf')]);module[_0x8b49('0x10')]=router;
\ No newline at end of file
index 6cba4d6..88c2d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a17=['sequelize','exports','STRING'];(function(_0x1c0a44,_0x51c3b3){var _0x2b71f9=function(_0x49e622){while(--_0x49e622){_0x1c0a44['push'](_0x1c0a44['shift']());}};_0x2b71f9(++_0x51c3b3);}(_0x9a17,0x11d));var _0x79a1=function(_0x55efea,_0x12a924){_0x55efea=_0x55efea-0x0;var _0x4d8756=_0x9a17[_0x55efea];return _0x4d8756;};'use strict';var Sequelize=require(_0x79a1('0x0'));module[_0x79a1('0x1')]={'name':{'type':Sequelize[_0x79a1('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x79a1('0x2')]},'description':{'type':Sequelize[_0x79a1('0x2')]}};
\ No newline at end of file
+var _0xf890=['sequelize','exports','name','STRING'];(function(_0x5a2825,_0x58b481){var _0x38f112=function(_0x1b6996){while(--_0x1b6996){_0x5a2825['push'](_0x5a2825['shift']());}};_0x38f112(++_0x58b481);}(_0xf890,0x130));var _0x0f89=function(_0x5c3068,_0x22bd33){_0x5c3068=_0x5c3068-0x0;var _0x116971=_0xf890[_0x5c3068];return _0x116971;};'use strict';var Sequelize=require(_0x0f89('0x0'));module[_0x0f89('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0f89('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x0f89('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dd05e55..74c125d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9816=['fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','SquareOdbc','count','includeAll','include','rows','show','params','find','catch','create','body','user','role','ODBC','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','end','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes'];(function(_0x195150,_0x5dfdf5){var _0x117228=function(_0x458ae){while(--_0x458ae){_0x195150['push'](_0x195150['shift']());}};_0x117228(++_0x5dfdf5);}(_0x9816,0xcc));var _0x6981=function(_0x4b5e4a,_0xec7f05){_0x4b5e4a=_0x4b5e4a-0x0;var _0xf14639=_0x9816[_0x4b5e4a];return _0xf14639;};'use strict';var emlformat=require(_0x6981('0x0'));var rimraf=require(_0x6981('0x1'));var zipdir=require(_0x6981('0x2'));var jsonpatch=require(_0x6981('0x3'));var rp=require(_0x6981('0x4'));var moment=require(_0x6981('0x5'));var BPromise=require(_0x6981('0x6'));var Mustache=require(_0x6981('0x7'));var util=require(_0x6981('0x8'));var path=require('path');var sox=require(_0x6981('0x9'));var csv=require(_0x6981('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6981('0xb'));var _=require(_0x6981('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6981('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6981('0xe'));var Papa=require(_0x6981('0xf'));var Redis=require(_0x6981('0x10'));var authService=require(_0x6981('0x11'));var qs=require(_0x6981('0x12'));var as=require(_0x6981('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6981('0x14'))('api');var utils=require(_0x6981('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6981('0x16'));var db=require(_0x6981('0x17'))['db'];function respondWithStatusCode(_0x5ee506,_0x2adbf6){_0x2adbf6=_0x2adbf6||0xcc;return function(_0x256eaf){if(_0x256eaf){return _0x5ee506['sendStatus'](_0x2adbf6);}return _0x5ee506[_0x6981('0x18')](_0x2adbf6)['end']();};}function respondWithResult(_0x232f5b,_0x11b9ed){_0x11b9ed=_0x11b9ed||0xc8;return function(_0x5c8485){if(_0x5c8485){return _0x232f5b['status'](_0x11b9ed)[_0x6981('0x19')](_0x5c8485);}};}function respondWithFilteredResult(_0x3b32e8,_0x4c986d){return function(_0x570908){if(_0x570908){var _0x17f4ee=typeof _0x4c986d[_0x6981('0x1a')]===_0x6981('0x1b')&&typeof _0x4c986d[_0x6981('0x1c')]===_0x6981('0x1b');var _0x5cf2ce=_0x570908['count'];var _0xccb6fc=_0x17f4ee?0x0:_0x4c986d[_0x6981('0x1a')];var _0x438622=_0x17f4ee?_0x570908['count']:_0x4c986d[_0x6981('0x1a')]+_0x4c986d[_0x6981('0x1c')];var _0x2e3aa7;if(_0x438622>=_0x5cf2ce){_0x438622=_0x5cf2ce;_0x2e3aa7=0xc8;}else{_0x2e3aa7=0xce;}_0x3b32e8[_0x6981('0x18')](_0x2e3aa7);return _0x3b32e8['set'](_0x6981('0x1d'),_0xccb6fc+'-'+_0x438622+'/'+_0x5cf2ce)[_0x6981('0x19')](_0x570908);}return null;};}function patchUpdates(_0x1c6310){return function(_0x25c30d){try{jsonpatch[_0x6981('0x1e')](_0x25c30d,_0x1c6310,!![]);}catch(_0x1aa926){return BPromise[_0x6981('0x1f')](_0x1aa926);}return _0x25c30d[_0x6981('0x20')]();};}function saveUpdates(_0x2e5702,_0x487bdf){return function(_0x20e3fd){if(_0x20e3fd){return _0x20e3fd['update'](_0x2e5702)[_0x6981('0x21')](function(_0xb9e6c8){return _0xb9e6c8;});}return null;};}function removeEntity(_0x5644d5,_0x135120){return function(_0x11c7f5){if(_0x11c7f5){return _0x11c7f5[_0x6981('0x22')]()[_0x6981('0x21')](function(){var _0x1cd3c3=_0x11c7f5[_0x6981('0x23')]({'plain':!![]});var _0x463989='ODBC';return db[_0x6981('0x24')][_0x6981('0x22')]({'where':{'type':_0x463989,'resourceId':_0x1cd3c3['id']}})[_0x6981('0x21')](function(){return _0x11c7f5;});})[_0x6981('0x21')](function(){_0x5644d5[_0x6981('0x18')](0xcc)[_0x6981('0x25')]();});}};}function handleEntityNotFound(_0x31e886,_0x30b75d){return function(_0x55181a){if(!_0x55181a){_0x31e886['sendStatus'](0x194);}return _0x55181a;};}function handleError(_0x168994,_0x3d6038){_0x3d6038=_0x3d6038||0x1f4;return function(_0x46b551){logger['error'](_0x46b551['stack']);if(_0x46b551[_0x6981('0x26')]){delete _0x46b551['name'];}_0x168994[_0x6981('0x18')](_0x3d6038)[_0x6981('0x27')](_0x46b551);};}exports['index']=function(_0x3af6b5,_0x255102){var _0x3079a9={},_0x4d28e1={},_0x44ac89={'count':0x0,'rows':[]};var _0x13b1a5=_['map'](db['SquareOdbc'][_0x6981('0x28')],function(_0x8e4e54){return{'name':_0x8e4e54[_0x6981('0x29')],'type':_0x8e4e54[_0x6981('0x2a')][_0x6981('0x2b')]};});_0x4d28e1[_0x6981('0x2c')]=_[_0x6981('0x2d')](_0x13b1a5,_0x6981('0x26'));_0x4d28e1[_0x6981('0x2e')]=_[_0x6981('0x2f')](_0x3af6b5[_0x6981('0x2e')]);_0x4d28e1[_0x6981('0x30')]=_[_0x6981('0x31')](_0x4d28e1['model'],_0x4d28e1[_0x6981('0x2e')]);_0x3079a9[_0x6981('0x32')]=_[_0x6981('0x31')](_0x4d28e1[_0x6981('0x2c')],qs['fields'](_0x3af6b5[_0x6981('0x2e')][_0x6981('0x33')]));_0x3079a9[_0x6981('0x32')]=_0x3079a9['attributes'][_0x6981('0x34')]?_0x3079a9['attributes']:_0x4d28e1['model'];if(!_0x3af6b5['query'][_0x6981('0x35')](_0x6981('0x36'))){_0x3079a9[_0x6981('0x1c')]=qs[_0x6981('0x1c')](_0x3af6b5[_0x6981('0x2e')][_0x6981('0x1c')]);_0x3079a9[_0x6981('0x1a')]=qs[_0x6981('0x1a')](_0x3af6b5[_0x6981('0x2e')]['offset']);}_0x3079a9[_0x6981('0x37')]=qs[_0x6981('0x38')](_0x3af6b5['query'][_0x6981('0x38')]);_0x3079a9[_0x6981('0x39')]=qs[_0x6981('0x30')](_['pick'](_0x3af6b5[_0x6981('0x2e')],_0x4d28e1[_0x6981('0x30')]),_0x13b1a5);if(_0x3af6b5[_0x6981('0x2e')]['filter']){_0x3079a9['where']=_['merge'](_0x3079a9[_0x6981('0x39')],{'$or':_[_0x6981('0x2d')](_0x13b1a5,function(_0x38683c){if(_0x38683c[_0x6981('0x2a')]!=='VIRTUAL'){var _0x4da0b2={};_0x4da0b2[_0x38683c[_0x6981('0x26')]]={'$like':'%'+_0x3af6b5[_0x6981('0x2e')][_0x6981('0x3a')]+'%'};return _0x4da0b2;}})});}_0x3079a9=_[_0x6981('0x3b')]({},_0x3079a9,_0x3af6b5[_0x6981('0x3c')]);var _0x2d9253={'where':_0x3079a9[_0x6981('0x39')]};return db[_0x6981('0x3d')]['count'](_0x2d9253)['then'](function(_0x5de6c6){_0x44ac89[_0x6981('0x3e')]=_0x5de6c6;if(_0x3af6b5['query'][_0x6981('0x3f')]){_0x3079a9[_0x6981('0x40')]=[{'all':!![]}];}return db[_0x6981('0x3d')]['findAll'](_0x3079a9);})[_0x6981('0x21')](function(_0x411cd6){_0x44ac89[_0x6981('0x41')]=_0x411cd6;return _0x44ac89;})['then'](respondWithFilteredResult(_0x255102,_0x3079a9))['catch'](handleError(_0x255102,null));};exports[_0x6981('0x42')]=function(_0x4772f9,_0xb62d0d){var _0x3b9401={'raw':!![],'where':{'id':_0x4772f9[_0x6981('0x43')]['id']}},_0x2701c0={};_0x2701c0['model']=_['keys'](db['SquareOdbc'][_0x6981('0x28')]);_0x2701c0[_0x6981('0x2e')]=_[_0x6981('0x2f')](_0x4772f9['query']);_0x2701c0[_0x6981('0x30')]=_['intersection'](_0x2701c0[_0x6981('0x2c')],_0x2701c0['query']);_0x3b9401[_0x6981('0x32')]=_[_0x6981('0x31')](_0x2701c0['model'],qs[_0x6981('0x33')](_0x4772f9[_0x6981('0x2e')][_0x6981('0x33')]));_0x3b9401[_0x6981('0x32')]=_0x3b9401[_0x6981('0x32')][_0x6981('0x34')]?_0x3b9401[_0x6981('0x32')]:_0x2701c0['model'];if(_0x4772f9[_0x6981('0x2e')][_0x6981('0x3f')]){_0x3b9401[_0x6981('0x40')]=[{'all':!![]}];}_0x3b9401=_[_0x6981('0x3b')]({},_0x3b9401,_0x4772f9[_0x6981('0x3c')]);return db['SquareOdbc'][_0x6981('0x44')](_0x3b9401)[_0x6981('0x21')](handleEntityNotFound(_0xb62d0d,null))[_0x6981('0x21')](respondWithResult(_0xb62d0d,null))[_0x6981('0x45')](handleError(_0xb62d0d,null));};exports[_0x6981('0x46')]=function(_0x2ba9b7,_0x3a491c){return db[_0x6981('0x3d')]['create'](_0x2ba9b7[_0x6981('0x47')],{})[_0x6981('0x21')](function(_0x3c4b0b){var _0x20ea3f=_0x2ba9b7[_0x6981('0x48')][_0x6981('0x23')]({'plain':!![]});if(!_0x20ea3f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20ea3f[_0x6981('0x49')]==='user'){var _0x50e9e5=_0x3c4b0b['get']({'plain':!![]});var _0x152dd0=_0x6981('0x4a');return db[_0x6981('0x4b')][_0x6981('0x44')]({'where':{'name':_0x152dd0,'userProfileId':_0x20ea3f[_0x6981('0x4c')]},'raw':!![]})[_0x6981('0x21')](function(_0x2acd65){if(_0x2acd65&&_0x2acd65['autoAssociation']===0x0){return db[_0x6981('0x24')][_0x6981('0x46')]({'name':_0x50e9e5['name'],'resourceId':_0x50e9e5['id'],'type':_0x2acd65[_0x6981('0x26')],'sectionId':_0x2acd65['id']},{})[_0x6981('0x21')](function(){return _0x3c4b0b;});}else{return _0x3c4b0b;}})[_0x6981('0x45')](function(_0xd30dab){logger[_0x6981('0x4d')](_0x6981('0x4e'),_0xd30dab);throw _0xd30dab;});}return _0x3c4b0b;})[_0x6981('0x21')](respondWithResult(_0x3a491c,0xc9))[_0x6981('0x45')](handleError(_0x3a491c,null));};exports[_0x6981('0x4f')]=function(_0x129c4f,_0x2e6f92){if(_0x129c4f[_0x6981('0x47')]['id']){delete _0x129c4f[_0x6981('0x47')]['id'];}return db[_0x6981('0x3d')][_0x6981('0x44')]({'where':{'id':_0x129c4f[_0x6981('0x43')]['id']}})[_0x6981('0x21')](handleEntityNotFound(_0x2e6f92,null))['then'](saveUpdates(_0x129c4f[_0x6981('0x47')],null))[_0x6981('0x21')](respondWithResult(_0x2e6f92,null))[_0x6981('0x45')](handleError(_0x2e6f92,null));};exports[_0x6981('0x22')]=function(_0x1309d3,_0x5b0871){return db[_0x6981('0x3d')][_0x6981('0x44')]({'where':{'id':_0x1309d3[_0x6981('0x43')]['id']}})[_0x6981('0x21')](handleEntityNotFound(_0x5b0871,null))[_0x6981('0x21')](removeEntity(_0x5b0871,null))[_0x6981('0x45')](handleError(_0x5b0871,null));};exports[_0x6981('0x50')]=function(_0x3d608c,_0x50eea8,_0x3f0d0b){var _0x3514a3;return db[_0x6981('0x3d')][_0x6981('0x44')]({'where':{'id':_0x3d608c[_0x6981('0x43')]['id']},'attributes':['id',_0x6981('0x51')]})[_0x6981('0x21')](handleEntityNotFound(_0x50eea8,null))[_0x6981('0x21')](function(_0x2d08ce){if(_0x2d08ce){var _0x442fdc=require(_0x6981('0x52'))();_0x442fdc[_0x6981('0x53')](_0x2d08ce[_0x6981('0x51')]);_0x442fdc[_0x6981('0x54')]();return _0x2d08ce;}})[_0x6981('0x21')](respondWithResult(_0x50eea8,null))['catch'](handleError(_0x50eea8,null));};
\ No newline at end of file
+var _0x5722=['rawAttributes','fieldName','type','key','map','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','test','openSync','dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../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','then','get','ODBC','UserProfileResource','error','stack','name','send','index','SquareOdbc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5722,0xda));var _0x2572=function(_0x2846eb,_0x3530bc){_0x2846eb=_0x2846eb-0x0;var _0x218887=_0x5722[_0x2846eb];return _0x218887;};'use strict';var emlformat=require(_0x2572('0x0'));var rimraf=require(_0x2572('0x1'));var zipdir=require(_0x2572('0x2'));var jsonpatch=require(_0x2572('0x3'));var rp=require(_0x2572('0x4'));var moment=require(_0x2572('0x5'));var BPromise=require(_0x2572('0x6'));var Mustache=require('mustache');var util=require(_0x2572('0x7'));var path=require('path');var sox=require(_0x2572('0x8'));var csv=require(_0x2572('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2572('0xa'));var _=require(_0x2572('0xb'));var squel=require(_0x2572('0xc'));var crypto=require('crypto');var jsforce=require(_0x2572('0xd'));var deskjs=require(_0x2572('0xe'));var toCsv=require(_0x2572('0x9'));var querystring=require(_0x2572('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2572('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2572('0x11'))(_0x2572('0x12'));var utils=require(_0x2572('0x13'));var config=require(_0x2572('0x14'));var licenseUtil=require(_0x2572('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x480249,_0x444dd3){_0x444dd3=_0x444dd3||0xcc;return function(_0x138272){if(_0x138272){return _0x480249[_0x2572('0x16')](_0x444dd3);}return _0x480249[_0x2572('0x17')](_0x444dd3)[_0x2572('0x18')]();};}function respondWithResult(_0x380b07,_0xd4f354){_0xd4f354=_0xd4f354||0xc8;return function(_0x4749f1){if(_0x4749f1){return _0x380b07[_0x2572('0x17')](_0xd4f354)[_0x2572('0x19')](_0x4749f1);}};}function respondWithFilteredResult(_0x21b45b,_0x2f5dd1){return function(_0x4a031a){if(_0x4a031a){var _0x4a2f76=typeof _0x2f5dd1[_0x2572('0x1a')]==='undefined'&&typeof _0x2f5dd1[_0x2572('0x1b')]==='undefined';var _0x3efeab=_0x4a031a[_0x2572('0x1c')];var _0x1a7b73=_0x4a2f76?0x0:_0x2f5dd1[_0x2572('0x1a')];var _0x1ea36f=_0x4a2f76?_0x4a031a[_0x2572('0x1c')]:_0x2f5dd1['offset']+_0x2f5dd1[_0x2572('0x1b')];var _0x5c4801;if(_0x1ea36f>=_0x3efeab){_0x1ea36f=_0x3efeab;_0x5c4801=0xc8;}else{_0x5c4801=0xce;}_0x21b45b[_0x2572('0x17')](_0x5c4801);return _0x21b45b[_0x2572('0x1d')](_0x2572('0x1e'),_0x1a7b73+'-'+_0x1ea36f+'/'+_0x3efeab)[_0x2572('0x19')](_0x4a031a);}return null;};}function patchUpdates(_0x4e0407){return function(_0x464f95){try{jsonpatch[_0x2572('0x1f')](_0x464f95,_0x4e0407,!![]);}catch(_0x1ca18a){return BPromise['reject'](_0x1ca18a);}return _0x464f95[_0x2572('0x20')]();};}function saveUpdates(_0x4c23a3,_0x3a5e8c){return function(_0x2bab84){if(_0x2bab84){return _0x2bab84['update'](_0x4c23a3)[_0x2572('0x21')](function(_0x2b6e1c){return _0x2b6e1c;});}return null;};}function removeEntity(_0x238924,_0x4f387a){return function(_0x5719fb){if(_0x5719fb){return _0x5719fb['destroy']()[_0x2572('0x21')](function(){var _0x5ebfcb=_0x5719fb[_0x2572('0x22')]({'plain':!![]});var _0x44d99e=_0x2572('0x23');return db[_0x2572('0x24')]['destroy']({'where':{'type':_0x44d99e,'resourceId':_0x5ebfcb['id']}})[_0x2572('0x21')](function(){return _0x5719fb;});})[_0x2572('0x21')](function(){_0x238924['status'](0xcc)[_0x2572('0x18')]();});}};}function handleEntityNotFound(_0x3ae8f5,_0x4f0553){return function(_0x5a9cc6){if(!_0x5a9cc6){_0x3ae8f5[_0x2572('0x16')](0x194);}return _0x5a9cc6;};}function handleError(_0x1ca75c,_0x3f8dc2){_0x3f8dc2=_0x3f8dc2||0x1f4;return function(_0x369e1f){logger[_0x2572('0x25')](_0x369e1f[_0x2572('0x26')]);if(_0x369e1f[_0x2572('0x27')]){delete _0x369e1f[_0x2572('0x27')];}_0x1ca75c[_0x2572('0x17')](_0x3f8dc2)[_0x2572('0x28')](_0x369e1f);};}exports[_0x2572('0x29')]=function(_0x170457,_0x40be9e){var _0x461d48={},_0x5b1898={},_0x1dd2d1={'count':0x0,'rows':[]};var _0x36360e=_['map'](db[_0x2572('0x2a')][_0x2572('0x2b')],function(_0x3020f6){return{'name':_0x3020f6[_0x2572('0x2c')],'type':_0x3020f6[_0x2572('0x2d')][_0x2572('0x2e')]};});_0x5b1898['model']=_[_0x2572('0x2f')](_0x36360e,_0x2572('0x27'));_0x5b1898[_0x2572('0x30')]=_['keys'](_0x170457['query']);_0x5b1898[_0x2572('0x31')]=_['intersection'](_0x5b1898['model'],_0x5b1898[_0x2572('0x30')]);_0x461d48[_0x2572('0x32')]=_[_0x2572('0x33')](_0x5b1898[_0x2572('0x34')],qs['fields'](_0x170457[_0x2572('0x30')][_0x2572('0x35')]));_0x461d48[_0x2572('0x32')]=_0x461d48[_0x2572('0x32')][_0x2572('0x36')]?_0x461d48[_0x2572('0x32')]:_0x5b1898[_0x2572('0x34')];if(!_0x170457[_0x2572('0x30')][_0x2572('0x37')](_0x2572('0x38'))){_0x461d48[_0x2572('0x1b')]=qs[_0x2572('0x1b')](_0x170457[_0x2572('0x30')][_0x2572('0x1b')]);_0x461d48[_0x2572('0x1a')]=qs[_0x2572('0x1a')](_0x170457[_0x2572('0x30')][_0x2572('0x1a')]);}_0x461d48[_0x2572('0x39')]=qs[_0x2572('0x3a')](_0x170457['query']['sort']);_0x461d48['where']=qs[_0x2572('0x31')](_[_0x2572('0x3b')](_0x170457['query'],_0x5b1898[_0x2572('0x31')]),_0x36360e);if(_0x170457[_0x2572('0x30')][_0x2572('0x3c')]){_0x461d48[_0x2572('0x3d')]=_[_0x2572('0x3e')](_0x461d48[_0x2572('0x3d')],{'$or':_[_0x2572('0x2f')](_0x36360e,function(_0x304c75){if(_0x304c75[_0x2572('0x2d')]!==_0x2572('0x3f')){var _0x459a3d={};_0x459a3d[_0x304c75['name']]={'$like':'%'+_0x170457[_0x2572('0x30')][_0x2572('0x3c')]+'%'};return _0x459a3d;}})});}_0x461d48=_[_0x2572('0x3e')]({},_0x461d48,_0x170457[_0x2572('0x40')]);var _0x16b093={'where':_0x461d48[_0x2572('0x3d')]};return db[_0x2572('0x2a')][_0x2572('0x1c')](_0x16b093)[_0x2572('0x21')](function(_0x5d9a65){_0x1dd2d1[_0x2572('0x1c')]=_0x5d9a65;if(_0x170457[_0x2572('0x30')][_0x2572('0x41')]){_0x461d48[_0x2572('0x42')]=[{'all':!![]}];}return db['SquareOdbc'][_0x2572('0x43')](_0x461d48);})[_0x2572('0x21')](function(_0x462830){_0x1dd2d1[_0x2572('0x44')]=_0x462830;return _0x1dd2d1;})[_0x2572('0x21')](respondWithFilteredResult(_0x40be9e,_0x461d48))['catch'](handleError(_0x40be9e,null));};exports[_0x2572('0x45')]=function(_0x3294c5,_0xc11c63){var _0x171646={'raw':!![],'where':{'id':_0x3294c5[_0x2572('0x46')]['id']}},_0x2b7e45={};_0x2b7e45[_0x2572('0x34')]=_[_0x2572('0x47')](db[_0x2572('0x2a')][_0x2572('0x2b')]);_0x2b7e45[_0x2572('0x30')]=_[_0x2572('0x47')](_0x3294c5[_0x2572('0x30')]);_0x2b7e45[_0x2572('0x31')]=_[_0x2572('0x33')](_0x2b7e45[_0x2572('0x34')],_0x2b7e45[_0x2572('0x30')]);_0x171646[_0x2572('0x32')]=_[_0x2572('0x33')](_0x2b7e45[_0x2572('0x34')],qs['fields'](_0x3294c5['query'][_0x2572('0x35')]));_0x171646['attributes']=_0x171646[_0x2572('0x32')][_0x2572('0x36')]?_0x171646[_0x2572('0x32')]:_0x2b7e45[_0x2572('0x34')];if(_0x3294c5[_0x2572('0x30')][_0x2572('0x41')]){_0x171646[_0x2572('0x42')]=[{'all':!![]}];}_0x171646=_[_0x2572('0x3e')]({},_0x171646,_0x3294c5[_0x2572('0x40')]);return db[_0x2572('0x2a')][_0x2572('0x48')](_0x171646)[_0x2572('0x21')](handleEntityNotFound(_0xc11c63,null))[_0x2572('0x21')](respondWithResult(_0xc11c63,null))[_0x2572('0x49')](handleError(_0xc11c63,null));};exports['create']=function(_0xa26ad0,_0x418353){return db[_0x2572('0x2a')]['create'](_0xa26ad0[_0x2572('0x4a')],{})[_0x2572('0x21')](function(_0x11f264){var _0x49ed03=_0xa26ad0[_0x2572('0x4b')][_0x2572('0x22')]({'plain':!![]});if(!_0x49ed03)throw new Error(_0x2572('0x4c'));if(_0x49ed03['role']===_0x2572('0x4b')){var _0x297cef=_0x11f264['get']({'plain':!![]});var _0x58f06e='ODBC';return db['UserProfileSection'][_0x2572('0x48')]({'where':{'name':_0x58f06e,'userProfileId':_0x49ed03[_0x2572('0x4d')]},'raw':!![]})[_0x2572('0x21')](function(_0x4c8379){if(_0x4c8379&&_0x4c8379[_0x2572('0x4e')]===0x0){return db['UserProfileResource'][_0x2572('0x4f')]({'name':_0x297cef[_0x2572('0x27')],'resourceId':_0x297cef['id'],'type':_0x4c8379[_0x2572('0x27')],'sectionId':_0x4c8379['id']},{})[_0x2572('0x21')](function(){return _0x11f264;});}else{return _0x11f264;}})[_0x2572('0x49')](function(_0x554679){logger['error'](_0x2572('0x50'),_0x554679);throw _0x554679;});}return _0x11f264;})['then'](respondWithResult(_0x418353,0xc9))[_0x2572('0x49')](handleError(_0x418353,null));};exports[_0x2572('0x51')]=function(_0x555b9c,_0x35352c){if(_0x555b9c[_0x2572('0x4a')]['id']){delete _0x555b9c[_0x2572('0x4a')]['id'];}return db[_0x2572('0x2a')][_0x2572('0x48')]({'where':{'id':_0x555b9c[_0x2572('0x46')]['id']}})[_0x2572('0x21')](handleEntityNotFound(_0x35352c,null))[_0x2572('0x21')](saveUpdates(_0x555b9c[_0x2572('0x4a')],null))[_0x2572('0x21')](respondWithResult(_0x35352c,null))[_0x2572('0x49')](handleError(_0x35352c,null));};exports[_0x2572('0x52')]=function(_0x2759e4,_0x12165d){return db[_0x2572('0x2a')][_0x2572('0x48')]({'where':{'id':_0x2759e4[_0x2572('0x46')]['id']}})[_0x2572('0x21')](handleEntityNotFound(_0x12165d,null))[_0x2572('0x21')](removeEntity(_0x12165d,null))[_0x2572('0x49')](handleError(_0x12165d,null));};exports[_0x2572('0x53')]=function(_0x506ba1,_0x49356f,_0x39a048){var _0x4a0ccc;return db[_0x2572('0x2a')][_0x2572('0x48')]({'where':{'id':_0x506ba1['params']['id']},'attributes':['id','dsn']})[_0x2572('0x21')](handleEntityNotFound(_0x49356f,null))['then'](function(_0x5c5409){if(_0x5c5409){var _0x321465=require('odbc')();_0x321465[_0x2572('0x54')](_0x5c5409[_0x2572('0x55')]);_0x321465[_0x2572('0x56')]();return _0x5c5409;}})[_0x2572('0x21')](respondWithResult(_0x49356f,null))[_0x2572('0x49')](handleError(_0x49356f,null));};
\ No newline at end of file
index f1e61cd..a0d02cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x501b=['square_odbc','lodash','api','request-promise','path','../../config/environment','exports','SquareOdbc'];(function(_0x1cfbe3,_0x2f2892){var _0x2dd91f=function(_0x157e52){while(--_0x157e52){_0x1cfbe3['push'](_0x1cfbe3['shift']());}};_0x2dd91f(++_0x2f2892);}(_0x501b,0xe9));var _0xb501=function(_0x543043,_0x17d6c8){_0x543043=_0x543043-0x0;var _0x599972=_0x501b[_0x543043];return _0x599972;};'use strict';var _=require(_0xb501('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb501('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb501('0x2'));var fs=require('fs');var path=require(_0xb501('0x3'));var rimraf=require('rimraf');var config=require(_0xb501('0x4'));var attributes=require('./squareOdbc.attributes');module[_0xb501('0x5')]=function(_0x1ddebb,_0x319909){return _0x1ddebb['define'](_0xb501('0x6'),attributes,{'tableName':_0xb501('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a40=['SquareOdbc','square_odbc','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./squareOdbc.attributes'];(function(_0x43f8cc,_0x592b95){var _0x1c8808=function(_0x352bf9){while(--_0x352bf9){_0x43f8cc['push'](_0x43f8cc['shift']());}};_0x1c8808(++_0x592b95);}(_0x9a40,0x66));var _0x09a4=function(_0x341030,_0x327b42){_0x341030=_0x341030-0x0;var _0xeb28da=_0x9a40[_0x341030];return _0xeb28da;};'use strict';var _=require(_0x09a4('0x0'));var util=require(_0x09a4('0x1'));var logger=require(_0x09a4('0x2'))(_0x09a4('0x3'));var moment=require('moment');var BPromise=require(_0x09a4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09a4('0x5'));var rimraf=require('rimraf');var config=require(_0x09a4('0x6'));var attributes=require(_0x09a4('0x7'));module['exports']=function(_0x13cf1f,_0x145731){return _0x13cf1f['define'](_0x09a4('0x8'),attributes,{'tableName':_0x09a4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 556453e..9b5c659 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfc=['options','where','attributes','map','include','model','then','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','ShowSquareOdbc','SquareOdbc','find'];(function(_0x4be8ba,_0x5d10ba){var _0x1af822=function(_0x40ed8a){while(--_0x40ed8a){_0x4be8ba['push'](_0x4be8ba['shift']());}};_0x1af822(++_0x5d10ba);}(_0xdbfc,0xaa));var _0xcdbf=function(_0x233f4e,_0x17df95){_0x233f4e=_0x233f4e-0x0;var _0x218ac9=_0xdbfc[_0x233f4e];return _0x218ac9;};'use strict';var _=require(_0xcdbf('0x0'));var util=require(_0xcdbf('0x1'));var moment=require(_0xcdbf('0x2'));var BPromise=require('bluebird');var rs=require(_0xcdbf('0x3'));var fs=require('fs');var Redis=require(_0xcdbf('0x4'));var db=require(_0xcdbf('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xcdbf('0x6'));var config=require('../../config/environment');var jayson=require(_0xcdbf('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x459730,_0x51ee87,_0x138329){return new BPromise(function(_0x2cbfb4,_0x19573d){return client['request'](_0x459730,_0x138329)['then'](function(_0x3674e1){logger[_0xcdbf('0x8')](_0xcdbf('0x9'),_0x51ee87,_0xcdbf('0xa'));logger[_0xcdbf('0xb')](_0xcdbf('0xc'),_0x51ee87,_0xcdbf('0xa'),JSON[_0xcdbf('0xd')](_0x3674e1));if(_0x3674e1['error']){if(_0x3674e1[_0xcdbf('0xe')]['code']===0x1f4){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x51ee87,_0x3674e1[_0xcdbf('0xe')]['message']);return _0x19573d(_0x3674e1['error'][_0xcdbf('0xf')]);}logger[_0xcdbf('0xe')](_0xcdbf('0x9'),_0x51ee87,_0x3674e1['error'][_0xcdbf('0xf')]);return _0x2cbfb4(_0x3674e1[_0xcdbf('0xe')][_0xcdbf('0xf')]);}else{logger[_0xcdbf('0x8')](_0xcdbf('0x9'),_0x51ee87,_0xcdbf('0xa'));_0x2cbfb4(_0x3674e1['result']['message']);}})['catch'](function(_0x48721b){logger[_0xcdbf('0xe')](_0xcdbf('0x9'),_0x51ee87,_0x48721b);_0x19573d(_0x48721b);});});}exports[_0xcdbf('0x10')]=function(_0x1fa4bc){var _0x2ec878=this;return new Promise(function(_0x53b9f2,_0x340aa5){return db[_0xcdbf('0x11')][_0xcdbf('0x12')]({'raw':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')][_0xcdbf('0x14')]||null:null,'attributes':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')][_0xcdbf('0x15')]||null:null,'include':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')]['include']?_[_0xcdbf('0x16')](_0x1fa4bc['options'][_0xcdbf('0x17')],function(_0x86b246){return{'model':db[_0x86b246[_0xcdbf('0x18')]],'as':_0x86b246['as'],'attributes':_0x86b246[_0xcdbf('0x15')],'include':_0x86b246[_0xcdbf('0x17')]?_[_0xcdbf('0x16')](_0x86b246[_0xcdbf('0x17')],function(_0x2357b6){return{'model':db[_0x2357b6[_0xcdbf('0x18')]],'as':_0x2357b6['as'],'attributes':_0x2357b6['attributes'],'include':_0x2357b6[_0xcdbf('0x17')]?_[_0xcdbf('0x16')](_0x2357b6[_0xcdbf('0x17')],function(_0x22abfa){return{'model':db[_0x22abfa['model']],'as':_0x22abfa['as'],'attributes':_0x22abfa[_0xcdbf('0x15')]};}):[]};}):[]};}):[]:[]})[_0xcdbf('0x19')](function(_0x31ef78){logger['info'](_0xcdbf('0x10'),_0x1fa4bc);logger[_0xcdbf('0xb')]('ShowSquareOdbc',_0x1fa4bc,JSON[_0xcdbf('0xd')](_0x31ef78));_0x53b9f2(_0x31ef78);})[_0xcdbf('0x1a')](function(_0x3dc33e){logger[_0xcdbf('0xe')](_0xcdbf('0x10'),_0x3dc33e[_0xcdbf('0xf')],_0x1fa4bc);_0x340aa5(_0x2ec878[_0xcdbf('0xe')](0x1f4,_0x3dc33e['message']));});});};
\ No newline at end of file
+var _0xe89a=['info','SquareOdbc,\x20%s,\x20%s','request\x20sent','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes','include','map','model','then','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request'];(function(_0x518189,_0x280941){var _0x14f749=function(_0x3c1318){while(--_0x3c1318){_0x518189['push'](_0x518189['shift']());}};_0x14f749(++_0x280941);}(_0xe89a,0x11d));var _0xae89=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xe89a[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0xae89('0x0'));var util=require(_0xae89('0x1'));var moment=require(_0xae89('0x2'));var BPromise=require(_0xae89('0x3'));var rs=require(_0xae89('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae89('0x5'))['db'];var utils=require(_0xae89('0x6'));var logger=require(_0xae89('0x7'))(_0xae89('0x8'));var config=require(_0xae89('0x9'));var jayson=require(_0xae89('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x453372,_0x653855,_0x49a6e6){return new BPromise(function(_0x5f036a,_0x3342f2){return client[_0xae89('0xb')](_0x453372,_0x49a6e6)['then'](function(_0x370d1f){logger[_0xae89('0xc')](_0xae89('0xd'),_0x653855,_0xae89('0xe'));logger['debug'](_0xae89('0xf'),_0x653855,_0xae89('0xe'),JSON[_0xae89('0x10')](_0x370d1f));if(_0x370d1f[_0xae89('0x11')]){if(_0x370d1f[_0xae89('0x11')][_0xae89('0x12')]===0x1f4){logger[_0xae89('0x11')](_0xae89('0xd'),_0x653855,_0x370d1f[_0xae89('0x11')][_0xae89('0x13')]);return _0x3342f2(_0x370d1f[_0xae89('0x11')][_0xae89('0x13')]);}logger['error'](_0xae89('0xd'),_0x653855,_0x370d1f[_0xae89('0x11')][_0xae89('0x13')]);return _0x5f036a(_0x370d1f[_0xae89('0x11')]['message']);}else{logger[_0xae89('0xc')]('SquareOdbc,\x20%s,\x20%s',_0x653855,_0xae89('0xe'));_0x5f036a(_0x370d1f[_0xae89('0x14')][_0xae89('0x13')]);}})['catch'](function(_0x5b5bf7){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x653855,_0x5b5bf7);_0x3342f2(_0x5b5bf7);});});}exports[_0xae89('0x15')]=function(_0x4ce201){var _0x39d40c=this;return new Promise(function(_0x4feede,_0x139aeb){return db[_0xae89('0x16')][_0xae89('0x17')]({'raw':_0x4ce201[_0xae89('0x18')]?_0x4ce201[_0xae89('0x18')][_0xae89('0x19')]===undefined?!![]:![]:!![],'where':_0x4ce201[_0xae89('0x18')]?_0x4ce201['options'][_0xae89('0x1a')]||null:null,'attributes':_0x4ce201['options']?_0x4ce201[_0xae89('0x18')][_0xae89('0x1b')]||null:null,'include':_0x4ce201['options']?_0x4ce201[_0xae89('0x18')][_0xae89('0x1c')]?_[_0xae89('0x1d')](_0x4ce201[_0xae89('0x18')]['include'],function(_0x2ab0ff){return{'model':db[_0x2ab0ff[_0xae89('0x1e')]],'as':_0x2ab0ff['as'],'attributes':_0x2ab0ff['attributes'],'include':_0x2ab0ff[_0xae89('0x1c')]?_[_0xae89('0x1d')](_0x2ab0ff['include'],function(_0x3c9264){return{'model':db[_0x3c9264['model']],'as':_0x3c9264['as'],'attributes':_0x3c9264['attributes'],'include':_0x3c9264[_0xae89('0x1c')]?_['map'](_0x3c9264['include'],function(_0xbd8578){return{'model':db[_0xbd8578[_0xae89('0x1e')]],'as':_0xbd8578['as'],'attributes':_0xbd8578[_0xae89('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xae89('0x1f')](function(_0x43eac4){logger[_0xae89('0xc')](_0xae89('0x15'),_0x4ce201);logger[_0xae89('0x20')](_0xae89('0x15'),_0x4ce201,JSON[_0xae89('0x10')](_0x43eac4));_0x4feede(_0x43eac4);})['catch'](function(_0x486b96){logger['error'](_0xae89('0x15'),_0x486b96[_0xae89('0x13')],_0x4ce201);_0x139aeb(_0x39d40c[_0xae89('0x11')](0x1f4,_0x486b96['message']));});});};
\ No newline at end of file
index 3bde916..81197c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6305=['getUsers','post','create','addUsers','put','delete','destroy','removeUsers','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller','get','/:id','isAuthenticated','show','/:id/users'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6305,0x1ab));var _0x5630=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x6305[_0x36eaaa];return _0x461349;};'use strict';var multer=require('multer');var util=require(_0x5630('0x0'));var path=require('path');var timeout=require(_0x5630('0x1'));var express=require(_0x5630('0x2'));var router=express[_0x5630('0x3')]();var fs_extra=require(_0x5630('0x4'));var auth=require(_0x5630('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5630('0x6'));var controller=require(_0x5630('0x7'));router[_0x5630('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5630('0x8')](_0x5630('0x9'),auth[_0x5630('0xa')](),controller[_0x5630('0xb')]);router[_0x5630('0x8')](_0x5630('0xc'),auth[_0x5630('0xa')](),controller[_0x5630('0xd')]);router[_0x5630('0xe')]('/',auth[_0x5630('0xa')](),controller[_0x5630('0xf')]);router[_0x5630('0xe')]('/:id/users',auth[_0x5630('0xa')](),controller[_0x5630('0x10')]);router[_0x5630('0x11')](_0x5630('0x9'),auth[_0x5630('0xa')](),controller['update']);router[_0x5630('0x12')](_0x5630('0x9'),auth['isAuthenticated'](),controller[_0x5630('0x13')]);router[_0x5630('0x12')](_0x5630('0xc'),auth[_0x5630('0xa')](),controller[_0x5630('0x14')]);module[_0x5630('0x15')]=router;
\ No newline at end of file
+var _0x4b74=['post','create','isAuthenticated','addUsers','put','update','destroy','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','index','/:id','show','/:id/users','getUsers'];(function(_0x4fdf9a,_0x3ebf75){var _0x7cf81d=function(_0x2b93bd){while(--_0x2b93bd){_0x4fdf9a['push'](_0x4fdf9a['shift']());}};_0x7cf81d(++_0x3ebf75);}(_0x4b74,0x103));var _0x44b7=function(_0x1c738b,_0xca4fc0){_0x1c738b=_0x1c738b-0x0;var _0x81eab9=_0x4b74[_0x1c738b];return _0x81eab9;};'use strict';var multer=require(_0x44b7('0x0'));var util=require(_0x44b7('0x1'));var path=require(_0x44b7('0x2'));var timeout=require('connect-timeout');var express=require(_0x44b7('0x3'));var router=express[_0x44b7('0x4')]();var fs_extra=require(_0x44b7('0x5'));var auth=require(_0x44b7('0x6'));var interaction=require(_0x44b7('0x7'));var config=require(_0x44b7('0x8'));var controller=require(_0x44b7('0x9'));router[_0x44b7('0xa')]('/',auth['isAuthenticated'](),controller[_0x44b7('0xb')]);router[_0x44b7('0xa')](_0x44b7('0xc'),auth['isAuthenticated'](),controller[_0x44b7('0xd')]);router[_0x44b7('0xa')](_0x44b7('0xe'),auth['isAuthenticated'](),controller[_0x44b7('0xf')]);router[_0x44b7('0x10')]('/',auth['isAuthenticated'](),controller[_0x44b7('0x11')]);router[_0x44b7('0x10')]('/:id/users',auth[_0x44b7('0x12')](),controller[_0x44b7('0x13')]);router[_0x44b7('0x14')]('/:id',auth[_0x44b7('0x12')](),controller[_0x44b7('0x15')]);router['delete'](_0x44b7('0xc'),auth['isAuthenticated'](),controller[_0x44b7('0x16')]);router[_0x44b7('0x17')](_0x44b7('0xe'),auth['isAuthenticated'](),controller['removeUsers']);module[_0x44b7('0x18')]=router;
\ No newline at end of file
index 7fa6044..50060ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc035=['preproduction','production','DATE','sequelize','STRING','name','BLOB','long','getDataValue'];(function(_0x25d4b1,_0x4e896d){var _0x2d51a5=function(_0x9c766){while(--_0x9c766){_0x25d4b1['push'](_0x25d4b1['shift']());}};_0x2d51a5(++_0x4e896d);}(_0xc035,0xf6));var _0x5c03=function(_0x59bb6d,_0x3f6c67){_0x59bb6d=_0x59bb6d-0x0;var _0x134bef=_0xc035[_0x59bb6d];return _0x134bef;};'use strict';var Sequelize=require(_0x5c03('0x0'));module['exports']={'name':{'type':Sequelize[_0x5c03('0x1')],'unique':_0x5c03('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x5c03('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x5c03('0x3')](_0x5c03('0x4')),'get':function(){if(this[_0x5c03('0x5')]('preproduction')){return this['getDataValue'](_0x5c03('0x6'))['toString']('utf8');}}},'production':{'type':Sequelize[_0x5c03('0x3')](_0x5c03('0x4')),'get':function(){if(this['getDataValue'](_0x5c03('0x7'))){return this[_0x5c03('0x5')](_0x5c03('0x7'))['toString']('utf8');}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x5c03('0x8')]}};
\ No newline at end of file
+var _0xb1a7=['DATE','STRING','TEXT','BLOB','long','getDataValue','preproduction','toString','utf8'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xb1a7,0x133));var _0x7b1a=function(_0x17a956,_0x458543){_0x17a956=_0x17a956-0x0;var _0x2b29a2=_0xb1a7[_0x17a956];return _0x2b29a2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7b1a('0x0')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x7b1a('0x0')]},'notes':{'type':Sequelize[_0x7b1a('0x1')]},'preproduction':{'type':Sequelize[_0x7b1a('0x2')](_0x7b1a('0x3')),'get':function(){if(this[_0x7b1a('0x4')](_0x7b1a('0x5'))){return this[_0x7b1a('0x4')](_0x7b1a('0x5'))[_0x7b1a('0x6')](_0x7b1a('0x7'));}}},'production':{'type':Sequelize['BLOB']('long'),'get':function(){if(this[_0x7b1a('0x4')]('production')){return this['getDataValue']('production')[_0x7b1a('0x6')]('utf8');}}},'savedAt':{'type':Sequelize[_0x7b1a('0x8')]},'publishedAt':{'type':Sequelize[_0x7b1a('0x8')]}};
\ No newline at end of file
index ba2807d..fb789f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf2=['keys','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch','show','params','filters','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','eml-format','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','SquareProjects','error','name','send','map','SquareProject','rawAttributes','fieldName','type','key','model','query'];(function(_0x37c0df,_0x5ce53f){var _0x1820b6=function(_0x500e8a){while(--_0x500e8a){_0x37c0df['push'](_0x37c0df['shift']());}};_0x1820b6(++_0x5ce53f);}(_0xfdf2,0x1f1));var _0x2fdf=function(_0x300ae8,_0x1ae6ce){_0x300ae8=_0x300ae8-0x0;var _0x5a48ef=_0xfdf2[_0x300ae8];return _0x5a48ef;};'use strict';var emlformat=require(_0x2fdf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2fdf('0x1'));var rp=require(_0x2fdf('0x2'));var moment=require(_0x2fdf('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x2fdf('0x4'));var sox=require(_0x2fdf('0x5'));var csv=require(_0x2fdf('0x6'));var ejs=require(_0x2fdf('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2fdf('0x8'));var squel=require(_0x2fdf('0x9'));var crypto=require(_0x2fdf('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x2fdf('0xb'));var toCsv=require(_0x2fdf('0x6'));var querystring=require(_0x2fdf('0xc'));var Papa=require(_0x2fdf('0xd'));var Redis=require(_0x2fdf('0xe'));var authService=require(_0x2fdf('0xf'));var qs=require(_0x2fdf('0x10'));var as=require(_0x2fdf('0x11'));var hardwareService=require(_0x2fdf('0x12'));var logger=require(_0x2fdf('0x13'))(_0x2fdf('0x14'));var utils=require(_0x2fdf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2fdf('0x16'));var db=require(_0x2fdf('0x17'))['db'];config[_0x2fdf('0x18')]=_['defaults'](config[_0x2fdf('0x18')],{'host':_0x2fdf('0x19'),'port':0x18eb});var socket=require(_0x2fdf('0x1a'))(new Redis(config[_0x2fdf('0x18')]));require(_0x2fdf('0x1b'))[_0x2fdf('0x1c')](socket);function respondWithStatusCode(_0x265a42,_0x2daef9){_0x2daef9=_0x2daef9||0xcc;return function(_0x519ba2){if(_0x519ba2){return _0x265a42[_0x2fdf('0x1d')](_0x2daef9);}return _0x265a42[_0x2fdf('0x1e')](_0x2daef9)[_0x2fdf('0x1f')]();};}function respondWithResult(_0x529a85,_0xec8f6c){_0xec8f6c=_0xec8f6c||0xc8;return function(_0x47b9ac){if(_0x47b9ac){return _0x529a85['status'](_0xec8f6c)[_0x2fdf('0x20')](_0x47b9ac);}};}function respondWithFilteredResult(_0x18693e,_0x38cc57){return function(_0x48ccba){if(_0x48ccba){var _0x2fafaa=typeof _0x38cc57['offset']==='undefined'&&typeof _0x38cc57['limit']==='undefined';var _0x1dfb64=_0x48ccba[_0x2fdf('0x21')];var _0x18aa18=_0x2fafaa?0x0:_0x38cc57[_0x2fdf('0x22')];var _0x2a2877=_0x2fafaa?_0x48ccba[_0x2fdf('0x21')]:_0x38cc57[_0x2fdf('0x22')]+_0x38cc57[_0x2fdf('0x23')];var _0x551550;if(_0x2a2877>=_0x1dfb64){_0x2a2877=_0x1dfb64;_0x551550=0xc8;}else{_0x551550=0xce;}_0x18693e[_0x2fdf('0x1e')](_0x551550);return _0x18693e[_0x2fdf('0x24')](_0x2fdf('0x25'),_0x18aa18+'-'+_0x2a2877+'/'+_0x1dfb64)[_0x2fdf('0x20')](_0x48ccba);}return null;};}function patchUpdates(_0x550995){return function(_0x4a9a48){try{jsonpatch[_0x2fdf('0x26')](_0x4a9a48,_0x550995,!![]);}catch(_0x239363){return BPromise[_0x2fdf('0x27')](_0x239363);}return _0x4a9a48['save']();};}function saveUpdates(_0x290710,_0x1167af){return function(_0x354e0e){if(_0x354e0e){return _0x354e0e[_0x2fdf('0x28')](_0x290710)[_0x2fdf('0x29')](function(_0x28d42e){return _0x28d42e;});}return null;};}function removeEntity(_0x374846,_0x4615c4){return function(_0x292e14){if(_0x292e14){return _0x292e14[_0x2fdf('0x2a')]()[_0x2fdf('0x29')](function(){var _0x1182f2=_0x292e14['get']({'plain':!![]});var _0xa09859=_0x2fdf('0x2b');return db['UserProfileResource'][_0x2fdf('0x2a')]({'where':{'type':_0xa09859,'resourceId':_0x1182f2['id']}})[_0x2fdf('0x29')](function(){return _0x292e14;});})[_0x2fdf('0x29')](function(){_0x374846[_0x2fdf('0x1e')](0xcc)[_0x2fdf('0x1f')]();});}};}function handleEntityNotFound(_0x1d65f9,_0x3386b3){return function(_0x233bef){if(!_0x233bef){_0x1d65f9[_0x2fdf('0x1d')](0x194);}return _0x233bef;};}function handleError(_0x11099c,_0x1c6003){_0x1c6003=_0x1c6003||0x1f4;return function(_0x480cc4){logger[_0x2fdf('0x2c')](_0x480cc4['stack']);if(_0x480cc4[_0x2fdf('0x2d')]){delete _0x480cc4[_0x2fdf('0x2d')];}_0x11099c[_0x2fdf('0x1e')](_0x1c6003)[_0x2fdf('0x2e')](_0x480cc4);};}exports['index']=function(_0x59da4e,_0x5d2d98){var _0x40a534={},_0x68b25b={},_0x20c693={'count':0x0,'rows':[]};var _0x1404a9=_[_0x2fdf('0x2f')](db[_0x2fdf('0x30')][_0x2fdf('0x31')],function(_0x2006d0){return{'name':_0x2006d0[_0x2fdf('0x32')],'type':_0x2006d0[_0x2fdf('0x33')][_0x2fdf('0x34')]};});_0x68b25b[_0x2fdf('0x35')]=_[_0x2fdf('0x2f')](_0x1404a9,_0x2fdf('0x2d'));_0x68b25b[_0x2fdf('0x36')]=_[_0x2fdf('0x37')](_0x59da4e[_0x2fdf('0x36')]);_0x68b25b['filters']=_[_0x2fdf('0x38')](_0x68b25b[_0x2fdf('0x35')],_0x68b25b[_0x2fdf('0x36')]);_0x40a534[_0x2fdf('0x39')]=_[_0x2fdf('0x38')](_0x68b25b[_0x2fdf('0x35')],qs['fields'](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x3a')]));_0x40a534[_0x2fdf('0x39')]=_0x40a534[_0x2fdf('0x39')][_0x2fdf('0x3b')]?_0x40a534[_0x2fdf('0x39')]:_0x68b25b['model'];if(!_0x59da4e[_0x2fdf('0x36')]['hasOwnProperty'](_0x2fdf('0x3c'))){_0x40a534[_0x2fdf('0x23')]=qs['limit'](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x23')]);_0x40a534[_0x2fdf('0x22')]=qs[_0x2fdf('0x22')](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x22')]);}_0x40a534['order']=qs[_0x2fdf('0x3d')](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x3d')]);_0x40a534[_0x2fdf('0x3e')]=qs['filters'](_[_0x2fdf('0x3f')](_0x59da4e['query'],_0x68b25b['filters']),_0x1404a9);if(_0x59da4e[_0x2fdf('0x36')]['filter']){_0x40a534[_0x2fdf('0x3e')]=_[_0x2fdf('0x40')](_0x40a534['where'],{'$or':_[_0x2fdf('0x2f')](_0x1404a9,function(_0x4abbb1){if(_0x4abbb1['type']!==_0x2fdf('0x41')){var _0x37f093={};_0x37f093[_0x4abbb1['name']]={'$like':'%'+_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x42')]+'%'};return _0x37f093;}})});}_0x40a534=_[_0x2fdf('0x40')]({},_0x40a534,_0x59da4e['options']);var _0x5ecafb={'where':_0x40a534[_0x2fdf('0x3e')]};return db[_0x2fdf('0x30')]['count'](_0x5ecafb)[_0x2fdf('0x29')](function(_0x408ae3){_0x20c693[_0x2fdf('0x21')]=_0x408ae3;if(_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x43')]){_0x40a534[_0x2fdf('0x44')]=[{'all':!![]}];}return db[_0x2fdf('0x30')]['findAll'](_0x40a534);})[_0x2fdf('0x29')](function(_0x47f4b6){_0x20c693[_0x2fdf('0x45')]=_0x47f4b6;return _0x20c693;})['then'](respondWithFilteredResult(_0x5d2d98,_0x40a534))[_0x2fdf('0x46')](handleError(_0x5d2d98,null));};exports[_0x2fdf('0x47')]=function(_0x4a49e1,_0xd199bd){var _0x4a97ee={'raw':![],'where':{'id':_0x4a49e1[_0x2fdf('0x48')]['id']}},_0x358e2f={};_0x358e2f[_0x2fdf('0x35')]=_[_0x2fdf('0x37')](db[_0x2fdf('0x30')][_0x2fdf('0x31')]);_0x358e2f[_0x2fdf('0x36')]=_['keys'](_0x4a49e1[_0x2fdf('0x36')]);_0x358e2f[_0x2fdf('0x49')]=_[_0x2fdf('0x38')](_0x358e2f[_0x2fdf('0x35')],_0x358e2f['query']);_0x4a97ee[_0x2fdf('0x39')]=_[_0x2fdf('0x38')](_0x358e2f[_0x2fdf('0x35')],qs[_0x2fdf('0x3a')](_0x4a49e1['query'][_0x2fdf('0x3a')]));_0x4a97ee[_0x2fdf('0x39')]=_0x4a97ee[_0x2fdf('0x39')][_0x2fdf('0x3b')]?_0x4a97ee[_0x2fdf('0x39')]:_0x358e2f[_0x2fdf('0x35')];if(_0x4a49e1[_0x2fdf('0x36')][_0x2fdf('0x43')]){_0x4a97ee[_0x2fdf('0x44')]=[{'all':!![]}];}_0x4a97ee=_[_0x2fdf('0x40')]({},_0x4a97ee,_0x4a49e1[_0x2fdf('0x4a')]);return db[_0x2fdf('0x30')]['find'](_0x4a97ee)[_0x2fdf('0x29')](handleEntityNotFound(_0xd199bd,null))['then'](respondWithResult(_0xd199bd,null))['catch'](handleError(_0xd199bd,null));};exports['create']=function(_0x32429e,_0x650f61){return db[_0x2fdf('0x30')][_0x2fdf('0x4b')](_0x32429e['body'],{})[_0x2fdf('0x29')](function(_0x321eaa){var _0xcab754=_0x32429e[_0x2fdf('0x4c')]['get']({'plain':!![]});if(!_0xcab754)throw new Error(_0x2fdf('0x4d'));if(_0xcab754['role']===_0x2fdf('0x4c')){var _0x27898b=_0x321eaa[_0x2fdf('0x4e')]({'plain':!![]});var _0x13fb86=_0x2fdf('0x2b');return db[_0x2fdf('0x4f')]['find']({'where':{'name':_0x13fb86,'userProfileId':_0xcab754[_0x2fdf('0x50')]},'raw':!![]})[_0x2fdf('0x29')](function(_0x139500){if(_0x139500&&_0x139500['autoAssociation']===0x0){return db['UserProfileResource'][_0x2fdf('0x4b')]({'name':_0x27898b['name'],'resourceId':_0x27898b['id'],'type':_0x139500[_0x2fdf('0x2d')],'sectionId':_0x139500['id']},{})[_0x2fdf('0x29')](function(){return _0x321eaa;});}else{return _0x321eaa;}})[_0x2fdf('0x46')](function(_0x308127){logger['error'](_0x2fdf('0x51'),_0x308127);throw _0x308127;});}return _0x321eaa;})[_0x2fdf('0x29')](respondWithResult(_0x650f61,0xc9))[_0x2fdf('0x46')](handleError(_0x650f61,null));};exports[_0x2fdf('0x28')]=function(_0x515f3f,_0x33d4fc){if(_0x515f3f[_0x2fdf('0x52')]['id']){delete _0x515f3f['body']['id'];}return db['SquareProject'][_0x2fdf('0x53')]({'where':{'id':_0x515f3f['params']['id']}})[_0x2fdf('0x29')](handleEntityNotFound(_0x33d4fc,null))[_0x2fdf('0x29')](saveUpdates(_0x515f3f[_0x2fdf('0x52')],null))[_0x2fdf('0x29')](respondWithResult(_0x33d4fc,null))[_0x2fdf('0x46')](handleError(_0x33d4fc,null));};exports[_0x2fdf('0x2a')]=function(_0x28ab02,_0xc5a835){return db[_0x2fdf('0x30')][_0x2fdf('0x53')]({'where':{'id':_0x28ab02[_0x2fdf('0x48')]['id']}})['then'](handleEntityNotFound(_0xc5a835,null))[_0x2fdf('0x29')](removeEntity(_0xc5a835,null))[_0x2fdf('0x46')](handleError(_0xc5a835,null));};exports['addUsers']=function(_0x26b86c,_0x18edea,_0x48a0b6){return db[_0x2fdf('0x30')][_0x2fdf('0x53')]({'where':{'id':_0x26b86c['params']['id']}})[_0x2fdf('0x29')](handleEntityNotFound(_0x18edea,null))[_0x2fdf('0x29')](function(_0x232895){if(_0x232895){return _0x232895[_0x2fdf('0x54')](_0x26b86c[_0x2fdf('0x52')][_0x2fdf('0x55')],_[_0x2fdf('0x56')](_0x26b86c[_0x2fdf('0x52')],[_0x2fdf('0x55'),'id'])||{});}})[_0x2fdf('0x29')](respondWithResult(_0x18edea,null))[_0x2fdf('0x46')](handleError(_0x18edea,null));};exports[_0x2fdf('0x57')]=function(_0x1e3ac9,_0x1ffe03,_0x4a119d){return db[_0x2fdf('0x30')]['find']({'where':{'id':_0x1e3ac9[_0x2fdf('0x48')]['id']}})[_0x2fdf('0x29')](handleEntityNotFound(_0x1ffe03,null))['then'](function(_0x1ea0f8){if(_0x1ea0f8){return _0x1ea0f8[_0x2fdf('0x57')](_0x1e3ac9[_0x2fdf('0x36')][_0x2fdf('0x55')])[_0x2fdf('0x29')](function(){if(_[_0x2fdf('0x58')](_0x1e3ac9[_0x2fdf('0x36')][_0x2fdf('0x55')])){for(var _0x3e635f=0x0;_0x3e635f<_0x1e3ac9['query'][_0x2fdf('0x55')]['length'];_0x3e635f+=0x1){socket[_0x2fdf('0x59')]('userSquareProject:remove',{'UserId':Number(_0x1e3ac9['query']['ids'][_0x3e635f]),'SquareProjectId':Number(_0x1e3ac9[_0x2fdf('0x48')]['id'])});}}else{socket[_0x2fdf('0x59')](_0x2fdf('0x5a'),{'UserId':Number(_0x1e3ac9['query'][_0x2fdf('0x55')]),'SquareProjectId':Number(_0x1e3ac9[_0x2fdf('0x48')]['id'])});}});}})[_0x2fdf('0x29')](respondWithStatusCode(_0x1ffe03,null))[_0x2fdf('0x46')](handleError(_0x1ffe03,null));};exports[_0x2fdf('0x5b')]=function(_0x22d7e4,_0x15b71c,_0x4735af){var _0x17c9e4={};var _0x3e4a24={};var _0x47e52e;var _0x449b47;return db[_0x2fdf('0x30')]['findOne']({'where':{'id':_0x22d7e4[_0x2fdf('0x48')]['id']}})['then'](handleEntityNotFound(_0x15b71c,null))[_0x2fdf('0x29')](function(_0x2c0022){if(_0x2c0022){_0x47e52e=_0x2c0022;_0x3e4a24[_0x2fdf('0x35')]=_[_0x2fdf('0x37')](db['User'][_0x2fdf('0x31')]);_0x3e4a24[_0x2fdf('0x36')]=_[_0x2fdf('0x37')](_0x22d7e4[_0x2fdf('0x36')]);_0x3e4a24[_0x2fdf('0x49')]=_[_0x2fdf('0x38')](_0x3e4a24[_0x2fdf('0x35')],_0x3e4a24[_0x2fdf('0x36')]);_0x17c9e4[_0x2fdf('0x39')]=_[_0x2fdf('0x38')](_0x3e4a24[_0x2fdf('0x35')],qs[_0x2fdf('0x3a')](_0x22d7e4['query'][_0x2fdf('0x3a')]));_0x17c9e4['attributes']=_0x17c9e4['attributes'][_0x2fdf('0x3b')]?_0x17c9e4['attributes']:_0x3e4a24[_0x2fdf('0x35')];_0x17c9e4['order']=qs[_0x2fdf('0x3d')](_0x22d7e4['query'][_0x2fdf('0x3d')]);_0x17c9e4[_0x2fdf('0x3e')]=qs[_0x2fdf('0x49')](_[_0x2fdf('0x3f')](_0x22d7e4[_0x2fdf('0x36')],_0x3e4a24['filters']));if(_0x22d7e4['query'][_0x2fdf('0x42')]){_0x17c9e4[_0x2fdf('0x3e')]=_[_0x2fdf('0x40')](_0x17c9e4[_0x2fdf('0x3e')],{'$or':_[_0x2fdf('0x2f')](_0x17c9e4['attributes'],function(_0x2c5b51){var _0x198d32={};_0x198d32[_0x2c5b51]={'$like':'%'+_0x22d7e4[_0x2fdf('0x36')][_0x2fdf('0x42')]+'%'};return _0x198d32;})});}_0x17c9e4=_[_0x2fdf('0x40')]({},_0x17c9e4,_0x22d7e4['options']);return _0x47e52e[_0x2fdf('0x5b')](_0x17c9e4);}})['then'](function(_0x3fc11a){if(_0x3fc11a){_0x449b47=_0x3fc11a[_0x2fdf('0x3b')];if(!_0x22d7e4[_0x2fdf('0x36')]['hasOwnProperty']('nolimit')){_0x17c9e4[_0x2fdf('0x23')]=qs[_0x2fdf('0x23')](_0x22d7e4['query'][_0x2fdf('0x23')]);_0x17c9e4[_0x2fdf('0x22')]=qs[_0x2fdf('0x22')](_0x22d7e4[_0x2fdf('0x36')]['offset']);}return _0x47e52e[_0x2fdf('0x5b')](_0x17c9e4);}})[_0x2fdf('0x29')](function(_0x5d148b){if(_0x5d148b){return _0x5d148b?{'count':_0x449b47,'rows':_0x5d148b}:null;}})['then'](respondWithResult(_0x15b71c,null))[_0x2fdf('0x46')](handleError(_0x15b71c,null));};
\ No newline at end of file
+var _0x324a=['Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','addUsers','ids','omit','userSquareProject:remove','emit','getUsers','findOne','User','rawAttributes','pick','rimraf','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./squareProject.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','get','SquareProjects','error','name','send','map','SquareProject','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','rows','show','params','options','find','catch','create','body','user'];(function(_0x2b2110,_0x46a1e7){var _0x710bb1=function(_0x293514){while(--_0x293514){_0x2b2110['push'](_0x2b2110['shift']());}};_0x710bb1(++_0x46a1e7);}(_0x324a,0x17e));var _0xa324=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x324a[_0x263a74];return _0x2aa86c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa324('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa324('0x1'));var rp=require(_0xa324('0x2'));var moment=require(_0xa324('0x3'));var BPromise=require(_0xa324('0x4'));var Mustache=require('mustache');var util=require(_0xa324('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xa324('0x6'));var ejs=require(_0xa324('0x7'));var fs=require('fs');var fs_extra=require(_0xa324('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa324('0x9'));var deskjs=require(_0xa324('0xa'));var toCsv=require(_0xa324('0x6'));var querystring=require(_0xa324('0xb'));var Papa=require(_0xa324('0xc'));var Redis=require(_0xa324('0xd'));var authService=require(_0xa324('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xa324('0xf'));var hardwareService=require(_0xa324('0x10'));var logger=require(_0xa324('0x11'))(_0xa324('0x12'));var utils=require(_0xa324('0x13'));var config=require(_0xa324('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa324('0x15'))['db'];config[_0xa324('0x16')]=_['defaults'](config[_0xa324('0x16')],{'host':_0xa324('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa324('0x16')]));require(_0xa324('0x18'))[_0xa324('0x19')](socket);function respondWithStatusCode(_0xbbaf67,_0x22252b){_0x22252b=_0x22252b||0xcc;return function(_0x30c576){if(_0x30c576){return _0xbbaf67[_0xa324('0x1a')](_0x22252b);}return _0xbbaf67[_0xa324('0x1b')](_0x22252b)[_0xa324('0x1c')]();};}function respondWithResult(_0x433900,_0x5643c2){_0x5643c2=_0x5643c2||0xc8;return function(_0x2d5625){if(_0x2d5625){return _0x433900[_0xa324('0x1b')](_0x5643c2)[_0xa324('0x1d')](_0x2d5625);}};}function respondWithFilteredResult(_0x11f341,_0x275202){return function(_0x687cbd){if(_0x687cbd){var _0x593741=typeof _0x275202['offset']===_0xa324('0x1e')&&typeof _0x275202[_0xa324('0x1f')]===_0xa324('0x1e');var _0x3e19a7=_0x687cbd[_0xa324('0x20')];var _0xc7b675=_0x593741?0x0:_0x275202[_0xa324('0x21')];var _0x4870b8=_0x593741?_0x687cbd[_0xa324('0x20')]:_0x275202[_0xa324('0x21')]+_0x275202[_0xa324('0x1f')];var _0x51f63c;if(_0x4870b8>=_0x3e19a7){_0x4870b8=_0x3e19a7;_0x51f63c=0xc8;}else{_0x51f63c=0xce;}_0x11f341[_0xa324('0x1b')](_0x51f63c);return _0x11f341[_0xa324('0x22')](_0xa324('0x23'),_0xc7b675+'-'+_0x4870b8+'/'+_0x3e19a7)['json'](_0x687cbd);}return null;};}function patchUpdates(_0x43f2c8){return function(_0x1ce00e){try{jsonpatch['apply'](_0x1ce00e,_0x43f2c8,!![]);}catch(_0x2e19af){return BPromise[_0xa324('0x24')](_0x2e19af);}return _0x1ce00e[_0xa324('0x25')]();};}function saveUpdates(_0xeb037,_0x3fedee){return function(_0x2ca590){if(_0x2ca590){return _0x2ca590[_0xa324('0x26')](_0xeb037)[_0xa324('0x27')](function(_0x301364){return _0x301364;});}return null;};}function removeEntity(_0x302a4e,_0x23aeb0){return function(_0x1f8a63){if(_0x1f8a63){return _0x1f8a63[_0xa324('0x28')]()[_0xa324('0x27')](function(){var _0x5e260f=_0x1f8a63[_0xa324('0x29')]({'plain':!![]});var _0x5ec42f=_0xa324('0x2a');return db['UserProfileResource'][_0xa324('0x28')]({'where':{'type':_0x5ec42f,'resourceId':_0x5e260f['id']}})[_0xa324('0x27')](function(){return _0x1f8a63;});})[_0xa324('0x27')](function(){_0x302a4e[_0xa324('0x1b')](0xcc)[_0xa324('0x1c')]();});}};}function handleEntityNotFound(_0x22968f,_0x4cded6){return function(_0x1bcd0b){if(!_0x1bcd0b){_0x22968f[_0xa324('0x1a')](0x194);}return _0x1bcd0b;};}function handleError(_0x41e9ac,_0x1b979c){_0x1b979c=_0x1b979c||0x1f4;return function(_0x271ebf){logger[_0xa324('0x2b')](_0x271ebf['stack']);if(_0x271ebf[_0xa324('0x2c')]){delete _0x271ebf[_0xa324('0x2c')];}_0x41e9ac[_0xa324('0x1b')](_0x1b979c)[_0xa324('0x2d')](_0x271ebf);};}exports['index']=function(_0x5c8cf7,_0x3ffc47){var _0x12acdf={},_0x1860a9={},_0x2b0eec={'count':0x0,'rows':[]};var _0xcd33f6=_[_0xa324('0x2e')](db[_0xa324('0x2f')]['rawAttributes'],function(_0x20bf9c){return{'name':_0x20bf9c[_0xa324('0x30')],'type':_0x20bf9c[_0xa324('0x31')][_0xa324('0x32')]};});_0x1860a9[_0xa324('0x33')]=_[_0xa324('0x2e')](_0xcd33f6,_0xa324('0x2c'));_0x1860a9[_0xa324('0x34')]=_[_0xa324('0x35')](_0x5c8cf7['query']);_0x1860a9[_0xa324('0x36')]=_[_0xa324('0x37')](_0x1860a9[_0xa324('0x33')],_0x1860a9[_0xa324('0x34')]);_0x12acdf[_0xa324('0x38')]=_[_0xa324('0x37')](_0x1860a9[_0xa324('0x33')],qs[_0xa324('0x39')](_0x5c8cf7[_0xa324('0x34')]['fields']));_0x12acdf[_0xa324('0x38')]=_0x12acdf[_0xa324('0x38')][_0xa324('0x3a')]?_0x12acdf['attributes']:_0x1860a9[_0xa324('0x33')];if(!_0x5c8cf7[_0xa324('0x34')][_0xa324('0x3b')](_0xa324('0x3c'))){_0x12acdf[_0xa324('0x1f')]=qs[_0xa324('0x1f')](_0x5c8cf7[_0xa324('0x34')][_0xa324('0x1f')]);_0x12acdf[_0xa324('0x21')]=qs[_0xa324('0x21')](_0x5c8cf7[_0xa324('0x34')][_0xa324('0x21')]);}_0x12acdf[_0xa324('0x3d')]=qs[_0xa324('0x3e')](_0x5c8cf7[_0xa324('0x34')]['sort']);_0x12acdf[_0xa324('0x3f')]=qs['filters'](_['pick'](_0x5c8cf7[_0xa324('0x34')],_0x1860a9[_0xa324('0x36')]),_0xcd33f6);if(_0x5c8cf7[_0xa324('0x34')][_0xa324('0x40')]){_0x12acdf[_0xa324('0x3f')]=_[_0xa324('0x41')](_0x12acdf[_0xa324('0x3f')],{'$or':_['map'](_0xcd33f6,function(_0x42540f){if(_0x42540f[_0xa324('0x31')]!==_0xa324('0x42')){var _0x190595={};_0x190595[_0x42540f[_0xa324('0x2c')]]={'$like':'%'+_0x5c8cf7[_0xa324('0x34')][_0xa324('0x40')]+'%'};return _0x190595;}})});}_0x12acdf=_['merge']({},_0x12acdf,_0x5c8cf7['options']);var _0x40d38d={'where':_0x12acdf[_0xa324('0x3f')]};return db[_0xa324('0x2f')]['count'](_0x40d38d)['then'](function(_0x55f18c){_0x2b0eec[_0xa324('0x20')]=_0x55f18c;if(_0x5c8cf7[_0xa324('0x34')][_0xa324('0x43')]){_0x12acdf[_0xa324('0x44')]=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x12acdf);})['then'](function(_0x220a81){_0x2b0eec[_0xa324('0x45')]=_0x220a81;return _0x2b0eec;})[_0xa324('0x27')](respondWithFilteredResult(_0x3ffc47,_0x12acdf))['catch'](handleError(_0x3ffc47,null));};exports[_0xa324('0x46')]=function(_0x47c3c1,_0x1f6c3e){var _0x377c79={'raw':![],'where':{'id':_0x47c3c1[_0xa324('0x47')]['id']}},_0x55a143={};_0x55a143[_0xa324('0x33')]=_['keys'](db[_0xa324('0x2f')]['rawAttributes']);_0x55a143[_0xa324('0x34')]=_[_0xa324('0x35')](_0x47c3c1[_0xa324('0x34')]);_0x55a143['filters']=_['intersection'](_0x55a143['model'],_0x55a143[_0xa324('0x34')]);_0x377c79[_0xa324('0x38')]=_['intersection'](_0x55a143['model'],qs[_0xa324('0x39')](_0x47c3c1[_0xa324('0x34')][_0xa324('0x39')]));_0x377c79[_0xa324('0x38')]=_0x377c79['attributes']['length']?_0x377c79['attributes']:_0x55a143[_0xa324('0x33')];if(_0x47c3c1[_0xa324('0x34')][_0xa324('0x43')]){_0x377c79[_0xa324('0x44')]=[{'all':!![]}];}_0x377c79=_[_0xa324('0x41')]({},_0x377c79,_0x47c3c1[_0xa324('0x48')]);return db[_0xa324('0x2f')][_0xa324('0x49')](_0x377c79)['then'](handleEntityNotFound(_0x1f6c3e,null))['then'](respondWithResult(_0x1f6c3e,null))[_0xa324('0x4a')](handleError(_0x1f6c3e,null));};exports[_0xa324('0x4b')]=function(_0x1cc8b9,_0x46cf92){return db[_0xa324('0x2f')][_0xa324('0x4b')](_0x1cc8b9[_0xa324('0x4c')],{})['then'](function(_0x307632){var _0x14f16b=_0x1cc8b9[_0xa324('0x4d')]['get']({'plain':!![]});if(!_0x14f16b)throw new Error(_0xa324('0x4e'));if(_0x14f16b['role']===_0xa324('0x4d')){var _0x597ce9=_0x307632['get']({'plain':!![]});var _0x127e09=_0xa324('0x2a');return db['UserProfileSection'][_0xa324('0x49')]({'where':{'name':_0x127e09,'userProfileId':_0x14f16b[_0xa324('0x4f')]},'raw':!![]})['then'](function(_0x40a9f5){if(_0x40a9f5&&_0x40a9f5[_0xa324('0x50')]===0x0){return db[_0xa324('0x51')]['create']({'name':_0x597ce9[_0xa324('0x2c')],'resourceId':_0x597ce9['id'],'type':_0x40a9f5['name'],'sectionId':_0x40a9f5['id']},{})[_0xa324('0x27')](function(){return _0x307632;});}else{return _0x307632;}})[_0xa324('0x4a')](function(_0xa5248b){logger[_0xa324('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa5248b);throw _0xa5248b;});}return _0x307632;})[_0xa324('0x27')](respondWithResult(_0x46cf92,0xc9))[_0xa324('0x4a')](handleError(_0x46cf92,null));};exports['update']=function(_0x1c1a16,_0x138e7a){if(_0x1c1a16[_0xa324('0x4c')]['id']){delete _0x1c1a16['body']['id'];}return db[_0xa324('0x2f')][_0xa324('0x49')]({'where':{'id':_0x1c1a16[_0xa324('0x47')]['id']}})[_0xa324('0x27')](handleEntityNotFound(_0x138e7a,null))[_0xa324('0x27')](saveUpdates(_0x1c1a16['body'],null))[_0xa324('0x27')](respondWithResult(_0x138e7a,null))['catch'](handleError(_0x138e7a,null));};exports['destroy']=function(_0x21728e,_0x489bc0){return db['SquareProject']['find']({'where':{'id':_0x21728e[_0xa324('0x47')]['id']}})[_0xa324('0x27')](handleEntityNotFound(_0x489bc0,null))[_0xa324('0x27')](removeEntity(_0x489bc0,null))['catch'](handleError(_0x489bc0,null));};exports['addUsers']=function(_0xef089b,_0x3cf29b,_0x16a952){return db[_0xa324('0x2f')][_0xa324('0x49')]({'where':{'id':_0xef089b[_0xa324('0x47')]['id']}})[_0xa324('0x27')](handleEntityNotFound(_0x3cf29b,null))[_0xa324('0x27')](function(_0x3caa78){if(_0x3caa78){return _0x3caa78[_0xa324('0x52')](_0xef089b[_0xa324('0x4c')][_0xa324('0x53')],_[_0xa324('0x54')](_0xef089b[_0xa324('0x4c')],[_0xa324('0x53'),'id'])||{});}})['then'](respondWithResult(_0x3cf29b,null))[_0xa324('0x4a')](handleError(_0x3cf29b,null));};exports['removeUsers']=function(_0xdbc441,_0x44d253,_0x2ca5af){return db[_0xa324('0x2f')]['find']({'where':{'id':_0xdbc441[_0xa324('0x47')]['id']}})[_0xa324('0x27')](handleEntityNotFound(_0x44d253,null))['then'](function(_0x5ae370){if(_0x5ae370){return _0x5ae370['removeUsers'](_0xdbc441[_0xa324('0x34')][_0xa324('0x53')])['then'](function(){if(_['isArray'](_0xdbc441[_0xa324('0x34')][_0xa324('0x53')])){for(var _0x552be1=0x0;_0x552be1<_0xdbc441['query'][_0xa324('0x53')][_0xa324('0x3a')];_0x552be1+=0x1){socket['emit'](_0xa324('0x55'),{'UserId':Number(_0xdbc441[_0xa324('0x34')][_0xa324('0x53')][_0x552be1]),'SquareProjectId':Number(_0xdbc441[_0xa324('0x47')]['id'])});}}else{socket[_0xa324('0x56')](_0xa324('0x55'),{'UserId':Number(_0xdbc441[_0xa324('0x34')][_0xa324('0x53')]),'SquareProjectId':Number(_0xdbc441[_0xa324('0x47')]['id'])});}});}})['then'](respondWithStatusCode(_0x44d253,null))[_0xa324('0x4a')](handleError(_0x44d253,null));};exports[_0xa324('0x57')]=function(_0x2deb92,_0x40924a,_0xeca606){var _0xcbd51c={};var _0x7bb63f={};var _0x4188d7;var _0xb7da7e;return db[_0xa324('0x2f')][_0xa324('0x58')]({'where':{'id':_0x2deb92[_0xa324('0x47')]['id']}})[_0xa324('0x27')](handleEntityNotFound(_0x40924a,null))[_0xa324('0x27')](function(_0x155cf6){if(_0x155cf6){_0x4188d7=_0x155cf6;_0x7bb63f[_0xa324('0x33')]=_[_0xa324('0x35')](db[_0xa324('0x59')][_0xa324('0x5a')]);_0x7bb63f[_0xa324('0x34')]=_['keys'](_0x2deb92[_0xa324('0x34')]);_0x7bb63f[_0xa324('0x36')]=_[_0xa324('0x37')](_0x7bb63f[_0xa324('0x33')],_0x7bb63f[_0xa324('0x34')]);_0xcbd51c[_0xa324('0x38')]=_['intersection'](_0x7bb63f[_0xa324('0x33')],qs[_0xa324('0x39')](_0x2deb92[_0xa324('0x34')][_0xa324('0x39')]));_0xcbd51c[_0xa324('0x38')]=_0xcbd51c['attributes']['length']?_0xcbd51c[_0xa324('0x38')]:_0x7bb63f['model'];_0xcbd51c[_0xa324('0x3d')]=qs[_0xa324('0x3e')](_0x2deb92[_0xa324('0x34')]['sort']);_0xcbd51c[_0xa324('0x3f')]=qs[_0xa324('0x36')](_[_0xa324('0x5b')](_0x2deb92[_0xa324('0x34')],_0x7bb63f[_0xa324('0x36')]));if(_0x2deb92[_0xa324('0x34')][_0xa324('0x40')]){_0xcbd51c[_0xa324('0x3f')]=_['merge'](_0xcbd51c[_0xa324('0x3f')],{'$or':_[_0xa324('0x2e')](_0xcbd51c[_0xa324('0x38')],function(_0x15cab3){var _0x1ae0b0={};_0x1ae0b0[_0x15cab3]={'$like':'%'+_0x2deb92[_0xa324('0x34')][_0xa324('0x40')]+'%'};return _0x1ae0b0;})});}_0xcbd51c=_['merge']({},_0xcbd51c,_0x2deb92[_0xa324('0x48')]);return _0x4188d7[_0xa324('0x57')](_0xcbd51c);}})[_0xa324('0x27')](function(_0xb168c3){if(_0xb168c3){_0xb7da7e=_0xb168c3[_0xa324('0x3a')];if(!_0x2deb92[_0xa324('0x34')][_0xa324('0x3b')]('nolimit')){_0xcbd51c[_0xa324('0x1f')]=qs[_0xa324('0x1f')](_0x2deb92[_0xa324('0x34')][_0xa324('0x1f')]);_0xcbd51c[_0xa324('0x21')]=qs[_0xa324('0x21')](_0x2deb92[_0xa324('0x34')]['offset']);}return _0x4188d7[_0xa324('0x57')](_0xcbd51c);}})[_0xa324('0x27')](function(_0x21d02d){if(_0x21d02d){return _0x21d02d?{'count':_0xb7da7e,'rows':_0x21d02d}:null;}})['then'](respondWithResult(_0x40924a,null))[_0xa324('0x4a')](handleError(_0x40924a,null));};
\ No newline at end of file
index 6cabc22..e6d99bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e97=['../../mysqldb','SquareProject','setMaxListeners','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x5ce1c2,_0x4c256e){var _0x3fa9a5=function(_0x224da8){while(--_0x224da8){_0x5ce1c2['push'](_0x5ce1c2['shift']());}};_0x3fa9a5(++_0x4c256e);}(_0x7e97,0x13a));var _0x77e9=function(_0x45fb8f,_0x46da98){_0x45fb8f=_0x45fb8f-0x0;var _0x3d906b=_0x7e97[_0x45fb8f];return _0x3d906b;};'use strict';var EventEmitter=require(_0x77e9('0x0'));var SquareProject=require(_0x77e9('0x1'))['db'][_0x77e9('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x77e9('0x3')](0x0);var events={'afterCreate':_0x77e9('0x4'),'afterUpdate':'update','afterDestroy':_0x77e9('0x5')};function emitEvent(_0x58cd93){return function(_0x2b1765,_0x5962d0,_0x341b0c){SquareProjectEvents['emit'](_0x58cd93+':'+_0x2b1765['id'],_0x2b1765);SquareProjectEvents[_0x77e9('0x6')](_0x58cd93,_0x2b1765);_0x341b0c(null);};}for(var e in events){if(events[_0x77e9('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x77e9('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xf9c4=['hasOwnProperty','exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update','remove','emit'];(function(_0x59956e,_0x301b9b){var _0x1f81bd=function(_0x4c9600){while(--_0x4c9600){_0x59956e['push'](_0x59956e['shift']());}};_0x1f81bd(++_0x301b9b);}(_0xf9c4,0x16a));var _0x4f9c=function(_0x3fdcc0,_0x15b535){_0x3fdcc0=_0x3fdcc0-0x0;var _0x4baad9=_0xf9c4[_0x3fdcc0];return _0x4baad9;};'use strict';var EventEmitter=require(_0x4f9c('0x0'));var SquareProject=require(_0x4f9c('0x1'))['db'][_0x4f9c('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x4f9c('0x3')](0x0);var events={'afterCreate':_0x4f9c('0x4'),'afterUpdate':_0x4f9c('0x5'),'afterDestroy':_0x4f9c('0x6')};function emitEvent(_0x447fc2){return function(_0x5a179a,_0x266006,_0x925c94){SquareProjectEvents[_0x4f9c('0x7')](_0x447fc2+':'+_0x5a179a['id'],_0x5a179a);SquareProjectEvents['emit'](_0x447fc2,_0x5a179a);_0x925c94(null);};}for(var e in events){if(events[_0x4f9c('0x8')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x4f9c('0x9')]=SquareProjectEvents;
\ No newline at end of file
index 856ec1f..db65066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc38d=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','SquareProject','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format'];(function(_0x1a3ee2,_0x2194f0){var _0x1e729f=function(_0x9d6846){while(--_0x9d6846){_0x1a3ee2['push'](_0x1a3ee2['shift']());}};_0x1e729f(++_0x2194f0);}(_0xc38d,0x110));var _0xdc38=function(_0x2775ae,_0x19aeb1){_0x2775ae=_0x2775ae-0x0;var _0x4b16e2=_0xc38d[_0x2775ae];return _0x4b16e2;};'use strict';var _=require(_0xdc38('0x0'));var util=require(_0xdc38('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xdc38('0x2'));var BPromise=require(_0xdc38('0x3'));var rp=require(_0xdc38('0x4'));var fs=require('fs');var path=require(_0xdc38('0x5'));var rimraf=require(_0xdc38('0x6'));var config=require(_0xdc38('0x7'));var attributes=require(_0xdc38('0x8'));module['exports']=function(_0x33fa3f,_0x36835d){return _0x33fa3f['define'](_0xdc38('0x9'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1b952a,_0x81d274,_0x3a60b2){if(_0x1b952a[_0xdc38('0xa')](_0xdc38('0xb'))){_0x1b952a[_0xdc38('0xc')]=moment()['format'](_0xdc38('0xd'));}if(_0x1b952a[_0xdc38('0xa')](_0xdc38('0xe'))){_0x1b952a[_0xdc38('0xf')]=moment()[_0xdc38('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3a60b2(null,_0x1b952a);}}});};
\ No newline at end of file
+var _0x2c82=['square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','api','moment','bluebird','request-promise','rimraf','./squareProject.attributes','define','SquareProject'];(function(_0x754ab4,_0x56daa7){var _0x34079a=function(_0x295ec1){while(--_0x295ec1){_0x754ab4['push'](_0x754ab4['shift']());}};_0x34079a(++_0x56daa7);}(_0x2c82,0xe0));var _0x22c8=function(_0x1e172a,_0x52102b){_0x1e172a=_0x1e172a-0x0;var _0x96338b=_0x2c82[_0x1e172a];return _0x96338b;};'use strict';var _=require(_0x22c8('0x0'));var util=require(_0x22c8('0x1'));var logger=require('../../config/logger')(_0x22c8('0x2'));var moment=require(_0x22c8('0x3'));var BPromise=require(_0x22c8('0x4'));var rp=require(_0x22c8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22c8('0x6'));var config=require('../../config/environment');var attributes=require(_0x22c8('0x7'));module['exports']=function(_0xace118,_0x221765){return _0xace118[_0x22c8('0x8')](_0x22c8('0x9'),attributes,{'tableName':_0x22c8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x26d0d8,_0x2565b1,_0x1b1012){if(_0x26d0d8[_0x22c8('0xb')](_0x22c8('0xc'))){_0x26d0d8[_0x22c8('0xd')]=moment()[_0x22c8('0xe')](_0x22c8('0xf'));}if(_0x26d0d8[_0x22c8('0xb')](_0x22c8('0x10'))){_0x26d0d8[_0x22c8('0x11')]=moment()[_0x22c8('0xe')](_0x22c8('0xf'));}_0x1b1012(null,_0x26d0d8);}}});};
\ No newline at end of file
index 2fc22c1..176f9bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f21=['result','catch','ShowSquareProject','SquareProject','find','raw','options','where','attributes','include','map','model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','stringify','error','code','SquareProject,\x20%s,\x20%s','message'];(function(_0x3b348c,_0x1aa5b1){var _0x31d71e=function(_0x55f0b0){while(--_0x55f0b0){_0x3b348c['push'](_0x3b348c['shift']());}};_0x31d71e(++_0x1aa5b1);}(_0x7f21,0x1a3));var _0x17f2=function(_0x181c06,_0x39138f){_0x181c06=_0x181c06-0x0;var _0x3f80a4=_0x7f21[_0x181c06];return _0x3f80a4;};'use strict';var _=require('lodash');var util=require(_0x17f2('0x0'));var moment=require(_0x17f2('0x1'));var BPromise=require(_0x17f2('0x2'));var rs=require(_0x17f2('0x3'));var fs=require('fs');var Redis=require(_0x17f2('0x4'));var db=require(_0x17f2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x17f2('0x6'))(_0x17f2('0x7'));var config=require('../../config/environment');var jayson=require(_0x17f2('0x8'));var client=jayson[_0x17f2('0x9')]['http']({'port':0x232a});config[_0x17f2('0xa')]=_[_0x17f2('0xb')](config[_0x17f2('0xa')],{'host':_0x17f2('0xc'),'port':0x18eb});var socket=require(_0x17f2('0xd'))(new Redis(config['redis']));require('./squareProject.socket')[_0x17f2('0xe')](socket);function respondWithRpcPromise(_0x41ece6,_0x180fb4,_0x59c767){return new BPromise(function(_0x230327,_0x3a03fd){return client[_0x17f2('0xf')](_0x41ece6,_0x59c767)[_0x17f2('0x10')](function(_0x237bf6){logger[_0x17f2('0x11')]('SquareProject,\x20%s,\x20%s',_0x180fb4,_0x17f2('0x12'));logger[_0x17f2('0x13')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x180fb4,_0x17f2('0x12'),JSON[_0x17f2('0x14')](_0x237bf6));if(_0x237bf6[_0x17f2('0x15')]){if(_0x237bf6[_0x17f2('0x15')][_0x17f2('0x16')]===0x1f4){logger[_0x17f2('0x15')](_0x17f2('0x17'),_0x180fb4,_0x237bf6[_0x17f2('0x15')]['message']);return _0x3a03fd(_0x237bf6[_0x17f2('0x15')][_0x17f2('0x18')]);}logger[_0x17f2('0x15')](_0x17f2('0x17'),_0x180fb4,_0x237bf6[_0x17f2('0x15')]['message']);return _0x230327(_0x237bf6[_0x17f2('0x15')][_0x17f2('0x18')]);}else{logger[_0x17f2('0x11')](_0x17f2('0x17'),_0x180fb4,_0x17f2('0x12'));_0x230327(_0x237bf6[_0x17f2('0x19')][_0x17f2('0x18')]);}})[_0x17f2('0x1a')](function(_0x27404b){logger[_0x17f2('0x15')]('SquareProject,\x20%s,\x20%s',_0x180fb4,_0x27404b);_0x3a03fd(_0x27404b);});});}exports[_0x17f2('0x1b')]=function(_0x3e12ff){var _0x4fc915=this;return new Promise(function(_0x2446dc,_0x51db8a){return db[_0x17f2('0x1c')][_0x17f2('0x1d')]({'raw':_0x3e12ff['options']?_0x3e12ff['options'][_0x17f2('0x1e')]===undefined?!![]:![]:!![],'where':_0x3e12ff[_0x17f2('0x1f')]?_0x3e12ff[_0x17f2('0x1f')][_0x17f2('0x20')]||null:null,'attributes':_0x3e12ff[_0x17f2('0x1f')]?_0x3e12ff[_0x17f2('0x1f')][_0x17f2('0x21')]||null:null,'include':_0x3e12ff['options']?_0x3e12ff[_0x17f2('0x1f')][_0x17f2('0x22')]?_[_0x17f2('0x23')](_0x3e12ff['options'][_0x17f2('0x22')],function(_0x41e5b4){return{'model':db[_0x41e5b4['model']],'as':_0x41e5b4['as'],'attributes':_0x41e5b4[_0x17f2('0x21')],'include':_0x41e5b4['include']?_['map'](_0x41e5b4[_0x17f2('0x22')],function(_0x599764){return{'model':db[_0x599764[_0x17f2('0x24')]],'as':_0x599764['as'],'attributes':_0x599764[_0x17f2('0x21')],'include':_0x599764[_0x17f2('0x22')]?_[_0x17f2('0x23')](_0x599764[_0x17f2('0x22')],function(_0x33db41){return{'model':db[_0x33db41['model']],'as':_0x33db41['as'],'attributes':_0x33db41[_0x17f2('0x21')]};}):[]};}):[]};}):[]:[]})[_0x17f2('0x10')](function(_0x1ccc81){logger[_0x17f2('0x11')]('ShowSquareProject',_0x3e12ff);logger[_0x17f2('0x13')](_0x17f2('0x1b'),_0x3e12ff,JSON['stringify'](_0x1ccc81));_0x2446dc(_0x1ccc81);})['catch'](function(_0x59023f){logger['error']('ShowSquareProject',_0x59023f[_0x17f2('0x18')],_0x3e12ff);_0x51db8a(_0x4fc915[_0x17f2('0x15')](0x1f4,_0x59023f['message']));});});};
\ No newline at end of file
+var _0xcb48=['SquareProject','find','options','raw','where','include','attributes','map','model','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','message','SquareProject,\x20%s,\x20%s','result','catch','ShowSquareProject'];(function(_0x46ad1f,_0x181285){var _0x3de7f3=function(_0x3b4cf9){while(--_0x3b4cf9){_0x46ad1f['push'](_0x46ad1f['shift']());}};_0x3de7f3(++_0x181285);}(_0xcb48,0x1c3));var _0x8cb4=function(_0x1653cf,_0x1280ad){_0x1653cf=_0x1653cf-0x0;var _0x56e4b6=_0xcb48[_0x1653cf];return _0x56e4b6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8cb4('0x0'));var BPromise=require(_0x8cb4('0x1'));var rs=require(_0x8cb4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8cb4('0x3'));var logger=require('../../config/logger')(_0x8cb4('0x4'));var config=require(_0x8cb4('0x5'));var jayson=require(_0x8cb4('0x6'));var client=jayson['client'][_0x8cb4('0x7')]({'port':0x232a});config[_0x8cb4('0x8')]=_[_0x8cb4('0x9')](config[_0x8cb4('0x8')],{'host':_0x8cb4('0xa'),'port':0x18eb});var socket=require(_0x8cb4('0xb'))(new Redis(config['redis']));require('./squareProject.socket')['register'](socket);function respondWithRpcPromise(_0xd0337a,_0x30c905,_0x29ffff){return new BPromise(function(_0x65abc3,_0x29d1c7){return client[_0x8cb4('0xc')](_0xd0337a,_0x29ffff)[_0x8cb4('0xd')](function(_0x1d5088){logger[_0x8cb4('0xe')]('SquareProject,\x20%s,\x20%s',_0x30c905,_0x8cb4('0xf'));logger[_0x8cb4('0x10')](_0x8cb4('0x11'),_0x30c905,_0x8cb4('0xf'),JSON[_0x8cb4('0x12')](_0x1d5088));if(_0x1d5088[_0x8cb4('0x13')]){if(_0x1d5088[_0x8cb4('0x13')]['code']===0x1f4){logger[_0x8cb4('0x13')]('SquareProject,\x20%s,\x20%s',_0x30c905,_0x1d5088[_0x8cb4('0x13')][_0x8cb4('0x14')]);return _0x29d1c7(_0x1d5088[_0x8cb4('0x13')][_0x8cb4('0x14')]);}logger[_0x8cb4('0x13')](_0x8cb4('0x15'),_0x30c905,_0x1d5088[_0x8cb4('0x13')][_0x8cb4('0x14')]);return _0x65abc3(_0x1d5088['error']['message']);}else{logger[_0x8cb4('0xe')](_0x8cb4('0x15'),_0x30c905,_0x8cb4('0xf'));_0x65abc3(_0x1d5088[_0x8cb4('0x16')][_0x8cb4('0x14')]);}})[_0x8cb4('0x17')](function(_0x285243){logger[_0x8cb4('0x13')](_0x8cb4('0x15'),_0x30c905,_0x285243);_0x29d1c7(_0x285243);});});}exports[_0x8cb4('0x18')]=function(_0x4979dc){var _0x3a8c8d=this;return new Promise(function(_0xc6c9c0,_0x3f8e61){return db[_0x8cb4('0x19')][_0x8cb4('0x1a')]({'raw':_0x4979dc[_0x8cb4('0x1b')]?_0x4979dc[_0x8cb4('0x1b')][_0x8cb4('0x1c')]===undefined?!![]:![]:!![],'where':_0x4979dc['options']?_0x4979dc[_0x8cb4('0x1b')][_0x8cb4('0x1d')]||null:null,'attributes':_0x4979dc['options']?_0x4979dc[_0x8cb4('0x1b')]['attributes']||null:null,'include':_0x4979dc[_0x8cb4('0x1b')]?_0x4979dc[_0x8cb4('0x1b')]['include']?_['map'](_0x4979dc['options'][_0x8cb4('0x1e')],function(_0x510946){return{'model':db[_0x510946['model']],'as':_0x510946['as'],'attributes':_0x510946[_0x8cb4('0x1f')],'include':_0x510946[_0x8cb4('0x1e')]?_[_0x8cb4('0x20')](_0x510946['include'],function(_0x4d28af){return{'model':db[_0x4d28af['model']],'as':_0x4d28af['as'],'attributes':_0x4d28af['attributes'],'include':_0x4d28af[_0x8cb4('0x1e')]?_[_0x8cb4('0x20')](_0x4d28af[_0x8cb4('0x1e')],function(_0xffb9ec){return{'model':db[_0xffb9ec[_0x8cb4('0x21')]],'as':_0xffb9ec['as'],'attributes':_0xffb9ec[_0x8cb4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x8cb4('0xd')](function(_0x376c34){logger['info'](_0x8cb4('0x18'),_0x4979dc);logger[_0x8cb4('0x10')]('ShowSquareProject',_0x4979dc,JSON['stringify'](_0x376c34));_0xc6c9c0(_0x376c34);})[_0x8cb4('0x17')](function(_0x3eaebd){logger[_0x8cb4('0x13')](_0x8cb4('0x18'),_0x3eaebd[_0x8cb4('0x14')],_0x4979dc);_0x3f8e61(_0x3a8c8d[_0x8cb4('0x13')](0x1f4,_0x3eaebd[_0x8cb4('0x14')]));});});};
\ No newline at end of file
index dbf4b3e..754b48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b47=['length','squareProject:','./squareProject.events','save','remove','update'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x6b47,0x1b2));var _0x76b4=function(_0xd89fde,_0x4d2417){_0xd89fde=_0xd89fde-0x0;var _0xe67f58=_0x6b47[_0xd89fde];return _0xe67f58;};'use strict';var SquareProjectEvents=require(_0x76b4('0x0'));var events=[_0x76b4('0x1'),_0x76b4('0x2'),_0x76b4('0x3')];function createListener(_0x3004f8,_0x388f7f){return function(_0x1f4b76){_0x388f7f['emit'](_0x3004f8,_0x1f4b76);};}function removeListener(_0x35c110,_0xd0b68b){return function(){SquareProjectEvents['removeListener'](_0x35c110,_0xd0b68b);};}exports['register']=function(_0x59fabb){for(var _0x2c42c0=0x0,_0xf802d4=events[_0x76b4('0x4')];_0x2c42c0<_0xf802d4;_0x2c42c0++){var _0x4e9ea3=events[_0x2c42c0];var _0x1e70f6=createListener(_0x76b4('0x5')+_0x4e9ea3,_0x59fabb);SquareProjectEvents['on'](_0x4e9ea3,_0x1e70f6);}};
\ No newline at end of file
+var _0xbb50=['./squareProject.events','save','update','removeListener'];(function(_0x5c9f0f,_0x14206a){var _0x223853=function(_0x1e7d55){while(--_0x1e7d55){_0x5c9f0f['push'](_0x5c9f0f['shift']());}};_0x223853(++_0x14206a);}(_0xbb50,0x134));var _0x0bb5=function(_0x3636ac,_0x55f9c2){_0x3636ac=_0x3636ac-0x0;var _0x1589e9=_0xbb50[_0x3636ac];return _0x1589e9;};'use strict';var SquareProjectEvents=require(_0x0bb5('0x0'));var events=[_0x0bb5('0x1'),'remove',_0x0bb5('0x2')];function createListener(_0x543428,_0x50cf05){return function(_0x509516){_0x50cf05['emit'](_0x543428,_0x509516);};}function removeListener(_0x166f21,_0x5bad05){return function(){SquareProjectEvents[_0x0bb5('0x3')](_0x166f21,_0x5bad05);};}exports['register']=function(_0x429e5b){for(var _0x168541=0x0,_0x5d8794=events['length'];_0x168541<_0x5d8794;_0x168541++){var _0x3945ad=events[_0x168541];var _0x33ab87=createListener('squareProject:'+_0x3945ad,_0x429e5b);SquareProjectEvents['on'](_0x3945ad,_0x33ab87);}};
\ No newline at end of file
index acd5e90..8c20e53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['/:id','show','/:id/download','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','index'];(function(_0x554a75,_0x133864){var _0x3de032=function(_0xd92d4d){while(--_0xd92d4d){_0x554a75['push'](_0x554a75['shift']());}};_0x3de032(++_0x133864);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x42c56b,_0x58ae76){_0x42c56b=_0x42c56b-0x0;var _0x13f59d=_0x7fbe[_0x42c56b];return _0x13f59d;};'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['download']);router['post']('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xf')]);router[_0xe7fb('0x10')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x11')]);router[_0xe7fb('0x12')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x13')]);module[_0xe7fb('0x14')]=router;
\ No newline at end of file
+var _0xf494=['../../config/environment','./squareRecording.controller','get','isAuthenticated','index','show','/:id/download','download','post','create','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2aaa7,_0x84633e){var _0x38e84f=function(_0x53a82a){while(--_0x53a82a){_0x2aaa7['push'](_0x2aaa7['shift']());}};_0x38e84f(++_0x84633e);}(_0xf494,0x1c6));var _0x4f49=function(_0x442a9a,_0x2f13de){_0x442a9a=_0x442a9a-0x0;var _0x16eb79=_0xf494[_0x442a9a];return _0x16eb79;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0x10')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0x11')]);router['put'](_0x4f49('0x12'),auth[_0x4f49('0xb')](),controller['update']);router[_0x4f49('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x4f49('0x14')]);module[_0x4f49('0x15')]=router;
\ No newline at end of file
index b7689bb..058fdf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['getDataValue','sequelize','STRING','VIRTUAL'];(function(_0x5edcd7,_0x4c5e59){var _0x2f5b45=function(_0x11aa0c){while(--_0x11aa0c){_0x5edcd7['push'](_0x5edcd7['shift']());}};_0x2f5b45(++_0x4c5e59);}(_0x326f,0xd1));var _0xf326=function(_0x157535,_0x53534c){_0x157535=_0x157535-0x0;var _0x1add69=_0x326f[_0x157535];return _0x1add69;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xf326('0x1')]},'calleridname':{'type':Sequelize[_0xf326('0x1')]},'context':{'type':Sequelize[_0xf326('0x1')]},'extension':{'type':Sequelize[_0xf326('0x1')]},'priority':{'type':Sequelize[_0xf326('0x1')]},'accountcode':{'type':Sequelize[_0xf326('0x1')]},'dnid':{'type':Sequelize[_0xf326('0x1')]},'projectName':{'type':Sequelize[_0xf326('0x1')]},'saveName':{'type':Sequelize[_0xf326('0x1')]},'filename':{'type':Sequelize[_0xf326('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xf326('0x2')],'get':function(){var _0x3851eb='';var _0x165f95=this[_0xf326('0x3')]('savePath');if(_0x165f95){_0x3851eb=_0x165f95['substring'](_0x165f95['lastIndexOf']('.'));}return _0x3851eb;}}};
\ No newline at end of file
+var _0x038b=['lastIndexOf','exports','STRING','VIRTUAL','substring'];(function(_0x31143e,_0x2a0f1a){var _0x59693e=function(_0x59fbe0){while(--_0x59fbe0){_0x31143e['push'](_0x31143e['shift']());}};_0x59693e(++_0x2a0f1a);}(_0x038b,0x114));var _0xb038=function(_0x2e9123,_0x4763f8){_0x2e9123=_0x2e9123-0x0;var _0x2d1023=_0x038b[_0x2e9123];return _0x2d1023;};'use strict';var Sequelize=require('sequelize');module[_0xb038('0x0')]={'uniqueid':{'type':Sequelize[_0xb038('0x1')]},'callerid':{'type':Sequelize[_0xb038('0x1')]},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xb038('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb038('0x1')]},'accountcode':{'type':Sequelize[_0xb038('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0xb038('0x1')]},'saveName':{'type':Sequelize[_0xb038('0x1')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xb038('0x2')],'get':function(){var _0x1b077a='';var _0x1534a9=this['getDataValue']('savePath');if(_0x1534a9){_0x1b077a=_0x1534a9[_0xb038('0x3')](_0x1534a9[_0xb038('0x4')]('.'));}return _0x1b077a;}}};
\ No newline at end of file
index bcfc47e..f40fa48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8f=['SquareRecording','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','download','../../components/encryptor','uniqueid','format','%s.cypher','existsSync','secrets','recording','filename','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','savePath','unlinkSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','then','destroy','sendStatus','name','send','index','map'];(function(_0x597c16,_0x2292fe){var _0x30cc2c=function(_0x26cb58){while(--_0x26cb58){_0x597c16['push'](_0x597c16['shift']());}};_0x30cc2c(++_0x2292fe);}(_0xbb8f,0x1ef));var _0xfbb8=function(_0x2834f1,_0x2ca288){_0x2834f1=_0x2834f1-0x0;var _0x93594e=_0xbb8f[_0x2834f1];return _0x93594e;};'use strict';var emlformat=require(_0xfbb8('0x0'));var rimraf=require(_0xfbb8('0x1'));var zipdir=require(_0xfbb8('0x2'));var jsonpatch=require(_0xfbb8('0x3'));var rp=require(_0xfbb8('0x4'));var moment=require('moment');var BPromise=require(_0xfbb8('0x5'));var Mustache=require(_0xfbb8('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xfbb8('0x7'));var ejs=require(_0xfbb8('0x8'));var fs=require('fs');var fs_extra=require(_0xfbb8('0x9'));var _=require(_0xfbb8('0xa'));var squel=require(_0xfbb8('0xb'));var crypto=require(_0xfbb8('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfbb8('0x7'));var querystring=require(_0xfbb8('0xd'));var Papa=require(_0xfbb8('0xe'));var Redis=require(_0xfbb8('0xf'));var authService=require(_0xfbb8('0x10'));var qs=require(_0xfbb8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfbb8('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xfbb8('0x13'));var config=require(_0xfbb8('0x14'));var licenseUtil=require(_0xfbb8('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14abd5,_0x3ec69c){_0x3ec69c=_0x3ec69c||0xcc;return function(_0x3abf57){if(_0x3abf57){return _0x14abd5['sendStatus'](_0x3ec69c);}return _0x14abd5[_0xfbb8('0x16')](_0x3ec69c)[_0xfbb8('0x17')]();};}function respondWithResult(_0x5a92fb,_0x33d504){_0x33d504=_0x33d504||0xc8;return function(_0x48c27d){if(_0x48c27d){return _0x5a92fb[_0xfbb8('0x16')](_0x33d504)[_0xfbb8('0x18')](_0x48c27d);}};}function respondWithFilteredResult(_0x41071a,_0x16f6ca){return function(_0x38c40a){if(_0x38c40a){var _0x1faaa6=typeof _0x16f6ca[_0xfbb8('0x19')]==='undefined'&&typeof _0x16f6ca[_0xfbb8('0x1a')]===_0xfbb8('0x1b');var _0x21233c=_0x38c40a[_0xfbb8('0x1c')];var _0x27405c=_0x1faaa6?0x0:_0x16f6ca['offset'];var _0x577c51=_0x1faaa6?_0x38c40a['count']:_0x16f6ca[_0xfbb8('0x19')]+_0x16f6ca['limit'];var _0x51c452;if(_0x577c51>=_0x21233c){_0x577c51=_0x21233c;_0x51c452=0xc8;}else{_0x51c452=0xce;}_0x41071a['status'](_0x51c452);return _0x41071a[_0xfbb8('0x1d')](_0xfbb8('0x1e'),_0x27405c+'-'+_0x577c51+'/'+_0x21233c)[_0xfbb8('0x18')](_0x38c40a);}return null;};}function patchUpdates(_0x45157e){return function(_0x1b3d37){try{jsonpatch[_0xfbb8('0x1f')](_0x1b3d37,_0x45157e,!![]);}catch(_0x463115){return BPromise['reject'](_0x463115);}return _0x1b3d37['save']();};}function saveUpdates(_0x497a60,_0x3574d3){return function(_0x18b151){if(_0x18b151){return _0x18b151['update'](_0x497a60)[_0xfbb8('0x20')](function(_0x39999c){return _0x39999c;});}return null;};}function removeEntity(_0x2c319c,_0x216146){return function(_0x30312b){if(_0x30312b){return _0x30312b[_0xfbb8('0x21')]()['then'](function(){_0x2c319c[_0xfbb8('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d2125,_0x4b89e4){return function(_0x39185e){if(!_0x39185e){_0x3d2125[_0xfbb8('0x22')](0x194);}return _0x39185e;};}function handleError(_0x18fae9,_0x2f4ce2){_0x2f4ce2=_0x2f4ce2||0x1f4;return function(_0xe806a9){logger['error'](_0xe806a9['stack']);if(_0xe806a9[_0xfbb8('0x23')]){delete _0xe806a9['name'];}_0x18fae9[_0xfbb8('0x16')](_0x2f4ce2)[_0xfbb8('0x24')](_0xe806a9);};}exports[_0xfbb8('0x25')]=function(_0x31b1f0,_0x38f2b2){var _0x2415e4={},_0x530afb={},_0x141d7b={'count':0x0,'rows':[]};var _0x2730b9=_[_0xfbb8('0x26')](db[_0xfbb8('0x27')][_0xfbb8('0x28')],function(_0x5259d1){return{'name':_0x5259d1[_0xfbb8('0x29')],'type':_0x5259d1[_0xfbb8('0x2a')][_0xfbb8('0x2b')]};});_0x530afb[_0xfbb8('0x2c')]=_[_0xfbb8('0x26')](_0x2730b9,'name');_0x530afb['query']=_[_0xfbb8('0x2d')](_0x31b1f0[_0xfbb8('0x2e')]);_0x530afb['filters']=_['intersection'](_0x530afb['model'],_0x530afb['query']);_0x2415e4[_0xfbb8('0x2f')]=_[_0xfbb8('0x30')](_0x530afb['model'],qs[_0xfbb8('0x31')](_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x31')]));_0x2415e4['attributes']=_0x2415e4['attributes'][_0xfbb8('0x32')]?_0x2415e4[_0xfbb8('0x2f')]:_0x530afb['model'];if(!_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x33')]('nolimit')){_0x2415e4[_0xfbb8('0x1a')]=qs['limit'](_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x1a')]);_0x2415e4[_0xfbb8('0x19')]=qs[_0xfbb8('0x19')](_0x31b1f0['query']['offset']);}_0x2415e4[_0xfbb8('0x34')]=qs[_0xfbb8('0x35')](_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x35')]);_0x2415e4[_0xfbb8('0x36')]=qs[_0xfbb8('0x37')](_[_0xfbb8('0x38')](_0x31b1f0[_0xfbb8('0x2e')],_0x530afb[_0xfbb8('0x37')]),_0x2730b9);if(_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x39')]){_0x2415e4[_0xfbb8('0x36')]=_['merge'](_0x2415e4[_0xfbb8('0x36')],{'$or':_[_0xfbb8('0x26')](_0x2730b9,function(_0x2ce8fb){if(_0x2ce8fb[_0xfbb8('0x2a')]!==_0xfbb8('0x3a')){var _0x4301db={};_0x4301db[_0x2ce8fb[_0xfbb8('0x23')]]={'$like':'%'+_0x31b1f0['query'][_0xfbb8('0x39')]+'%'};return _0x4301db;}})});}_0x2415e4=_[_0xfbb8('0x3b')]({},_0x2415e4,_0x31b1f0[_0xfbb8('0x3c')]);var _0x1d5619={'where':_0x2415e4['where']};return db['SquareRecording'][_0xfbb8('0x1c')](_0x1d5619)[_0xfbb8('0x20')](function(_0x22c0fe){_0x141d7b[_0xfbb8('0x1c')]=_0x22c0fe;if(_0x31b1f0[_0xfbb8('0x2e')]['includeAll']){_0x2415e4[_0xfbb8('0x3d')]=[{'all':!![]}];}return db['SquareRecording'][_0xfbb8('0x3e')](_0x2415e4);})[_0xfbb8('0x20')](function(_0x328d4f){_0x141d7b[_0xfbb8('0x3f')]=_0x328d4f;return _0x141d7b;})[_0xfbb8('0x20')](respondWithFilteredResult(_0x38f2b2,_0x2415e4))[_0xfbb8('0x40')](handleError(_0x38f2b2,null));};exports[_0xfbb8('0x41')]=function(_0x5c8cf5,_0x30a749){var _0x95a13e={'raw':!![],'where':{'id':_0x5c8cf5[_0xfbb8('0x42')]['id']}},_0x8f6a20={};_0x8f6a20['model']=_[_0xfbb8('0x2d')](db['SquareRecording']['rawAttributes']);_0x8f6a20[_0xfbb8('0x2e')]=_[_0xfbb8('0x2d')](_0x5c8cf5[_0xfbb8('0x2e')]);_0x8f6a20[_0xfbb8('0x37')]=_[_0xfbb8('0x30')](_0x8f6a20['model'],_0x8f6a20[_0xfbb8('0x2e')]);_0x95a13e[_0xfbb8('0x2f')]=_[_0xfbb8('0x30')](_0x8f6a20['model'],qs[_0xfbb8('0x31')](_0x5c8cf5[_0xfbb8('0x2e')][_0xfbb8('0x31')]));_0x95a13e[_0xfbb8('0x2f')]=_0x95a13e['attributes'][_0xfbb8('0x32')]?_0x95a13e[_0xfbb8('0x2f')]:_0x8f6a20[_0xfbb8('0x2c')];if(_0x5c8cf5['query'][_0xfbb8('0x43')]){_0x95a13e[_0xfbb8('0x3d')]=[{'all':!![]}];}_0x95a13e=_['merge']({},_0x95a13e,_0x5c8cf5['options']);return db[_0xfbb8('0x27')][_0xfbb8('0x44')](_0x95a13e)[_0xfbb8('0x20')](handleEntityNotFound(_0x30a749,null))['then'](respondWithResult(_0x30a749,null))[_0xfbb8('0x40')](handleError(_0x30a749,null));};exports['create']=function(_0x4bda3a,_0x5ec2f7){return db[_0xfbb8('0x27')][_0xfbb8('0x45')](_0x4bda3a[_0xfbb8('0x46')],{})[_0xfbb8('0x20')](respondWithResult(_0x5ec2f7,0xc9))[_0xfbb8('0x40')](handleError(_0x5ec2f7,null));};exports['update']=function(_0x1efa73,_0x1039c5){if(_0x1efa73[_0xfbb8('0x46')]['id']){delete _0x1efa73[_0xfbb8('0x46')]['id'];}return db['SquareRecording'][_0xfbb8('0x44')]({'where':{'id':_0x1efa73[_0xfbb8('0x42')]['id']}})['then'](handleEntityNotFound(_0x1039c5,null))[_0xfbb8('0x20')](saveUpdates(_0x1efa73[_0xfbb8('0x46')],null))[_0xfbb8('0x20')](respondWithResult(_0x1039c5,null))[_0xfbb8('0x40')](handleError(_0x1039c5,null));};exports[_0xfbb8('0x47')]=function(_0x59aced,_0x5ac5ce,_0x29f6b5){var _0x1f391e=require(_0xfbb8('0x48'));var _0x16c8a5=![];var _0x42faeb={};if(_0x59aced[_0xfbb8('0x2e')][_0xfbb8('0x2a')]&&_0x59aced[_0xfbb8('0x2e')]['type']===_0xfbb8('0x49')){_0x42faeb['uniqueid']=_0x59aced[_0xfbb8('0x42')]['id'];}else{_0x42faeb['id']=_0x59aced[_0xfbb8('0x42')]['id'];}return db[_0xfbb8('0x27')][_0xfbb8('0x44')]({'where':_0x42faeb,'attributes':['id','savePath','filename'],'raw':!![]})[_0xfbb8('0x20')](handleEntityNotFound(_0x5ac5ce,null))[_0xfbb8('0x20')](function(_0x5c658c){if(_0x5c658c){var _0x4e652e=_0x5c658c['savePath'];var _0x45a04e=util[_0xfbb8('0x4a')](_0xfbb8('0x4b'),_0x4e652e);if(fs[_0xfbb8('0x4c')](_0x45a04e)){_0x16c8a5=!![];return _0x1f391e['decryptFile'](_0x45a04e,_0x4e652e,config[_0xfbb8('0x4d')][_0xfbb8('0x4e')])[_0xfbb8('0x20')](function(){return _0x5c658c;});}return _0x5c658c;}})[_0xfbb8('0x20')](function(_0x15e2f3){if(_0x15e2f3){var _0x5900aa=_0x15e2f3['savePath'];if(!fs[_0xfbb8('0x4c')](_0x5900aa)){throw new db['Sequelize']['ValidationError']('SquareRecording\x20not\x20found');}if(_0x15e2f3[_0xfbb8('0x4f')]){return _0x5ac5ce['download'](_0x5900aa,_0x15e2f3[_0xfbb8('0x4f')]+path[_0xfbb8('0x50')](_0x5900aa),function(){if(_0x16c8a5){fs[_0xfbb8('0x51')](_0x5900aa);}});}else{return _0x5ac5ce[_0xfbb8('0x47')](_0x5900aa,function(_0x26192d){if(_0x16c8a5){fs[_0xfbb8('0x51')](_0x5900aa);}});}}})['catch'](function(_0x183176){if(_0x183176['message']==='SquareRecording\x20not\x20found'){_0x5ac5ce[_0xfbb8('0x16')](0x194)[_0xfbb8('0x24')](_0xfbb8('0x52'));}else{return handleError(_0x5ac5ce,null);}});};exports['destroy']=function(_0x3b3cfc,_0x402617){return db[_0xfbb8('0x27')][_0xfbb8('0x44')]({'where':{'id':_0x3b3cfc[_0xfbb8('0x42')]['id']}})[_0xfbb8('0x20')](function(_0x3a9c10){if(_[_0xfbb8('0x53')](_0x3a9c10)){throw new ReferenceError(_0xfbb8('0x54'));}return _0x3a9c10;})[_0xfbb8('0x20')](function(_0x2ce103){var _0x39c304=_0x2ce103[_0xfbb8('0x55')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x39c304);if(!_[_0xfbb8('0x53')](_0x2ce103[_0xfbb8('0x55')])&&fs['existsSync'](_0x39c304)){logger['info']('File:\x20\x22'+_0x39c304+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xfbb8('0x56')](_0x39c304);}_0x39c304=_0x39c304+'.cypher';if(!_[_0xfbb8('0x53')](_0x2ce103[_0xfbb8('0x55')])&&fs[_0xfbb8('0x4c')](_0x39c304)){logger['info'](_0xfbb8('0x57')+_0x39c304+_0xfbb8('0x58'));fs[_0xfbb8('0x56')](_0x39c304);}return _0x2ce103;})[_0xfbb8('0x20')](function(_0x1e49f9){if(!_0x1e49f9)throw new InternalError();return _0x1e49f9[_0xfbb8('0x21')]();})[_0xfbb8('0x20')](function(){_0x402617['status'](0xcc)[_0xfbb8('0x17')]();})[_0xfbb8('0x40')](handleError(_0x402617,null));};
\ No newline at end of file
+var _0x5d42=['download','../../components/encryptor','uniqueid','savePath','filename','format','existsSync','decryptFile','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareRecording','findAll','rows','catch','show','includeAll','include','find','body','update','params'];(function(_0x459d7d,_0x55db19){var _0x26abf1=function(_0x39e5d5){while(--_0x39e5d5){_0x459d7d['push'](_0x459d7d['shift']());}};_0x26abf1(++_0x55db19);}(_0x5d42,0x1e0));var _0x25d4=function(_0xc461b5,_0x5a11c7){_0xc461b5=_0xc461b5-0x0;var _0xfe303e=_0x5d42[_0xc461b5];return _0xfe303e;};'use strict';var emlformat=require(_0x25d4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x25d4('0x1'));var jsonpatch=require(_0x25d4('0x2'));var rp=require(_0x25d4('0x3'));var moment=require(_0x25d4('0x4'));var BPromise=require(_0x25d4('0x5'));var Mustache=require('mustache');var util=require(_0x25d4('0x6'));var path=require(_0x25d4('0x7'));var sox=require(_0x25d4('0x8'));var csv=require(_0x25d4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x25d4('0xa'));var crypto=require('crypto');var jsforce=require(_0x25d4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x25d4('0x9'));var querystring=require(_0x25d4('0xc'));var Papa=require(_0x25d4('0xd'));var Redis=require(_0x25d4('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x25d4('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25d4('0x10'));var logger=require(_0x25d4('0x11'))('api');var utils=require(_0x25d4('0x12'));var config=require(_0x25d4('0x13'));var licenseUtil=require(_0x25d4('0x14'));var db=require(_0x25d4('0x15'))['db'];function respondWithStatusCode(_0x14fe28,_0x1ff138){_0x1ff138=_0x1ff138||0xcc;return function(_0x37a10f){if(_0x37a10f){return _0x14fe28[_0x25d4('0x16')](_0x1ff138);}return _0x14fe28['status'](_0x1ff138)[_0x25d4('0x17')]();};}function respondWithResult(_0x4e0e2e,_0x213fd0){_0x213fd0=_0x213fd0||0xc8;return function(_0x2bf780){if(_0x2bf780){return _0x4e0e2e[_0x25d4('0x18')](_0x213fd0)[_0x25d4('0x19')](_0x2bf780);}};}function respondWithFilteredResult(_0xac7135,_0x3654dc){return function(_0x17f1d6){if(_0x17f1d6){var _0x56670b=typeof _0x3654dc[_0x25d4('0x1a')]===_0x25d4('0x1b')&&typeof _0x3654dc[_0x25d4('0x1c')]===_0x25d4('0x1b');var _0x420451=_0x17f1d6[_0x25d4('0x1d')];var _0x3eebab=_0x56670b?0x0:_0x3654dc[_0x25d4('0x1a')];var _0x3eaecb=_0x56670b?_0x17f1d6[_0x25d4('0x1d')]:_0x3654dc['offset']+_0x3654dc[_0x25d4('0x1c')];var _0x375520;if(_0x3eaecb>=_0x420451){_0x3eaecb=_0x420451;_0x375520=0xc8;}else{_0x375520=0xce;}_0xac7135[_0x25d4('0x18')](_0x375520);return _0xac7135[_0x25d4('0x1e')](_0x25d4('0x1f'),_0x3eebab+'-'+_0x3eaecb+'/'+_0x420451)[_0x25d4('0x19')](_0x17f1d6);}return null;};}function patchUpdates(_0x345e43){return function(_0x45abb2){try{jsonpatch['apply'](_0x45abb2,_0x345e43,!![]);}catch(_0x2185ce){return BPromise['reject'](_0x2185ce);}return _0x45abb2['save']();};}function saveUpdates(_0x1a019c,_0x5b9eaf){return function(_0x26059e){if(_0x26059e){return _0x26059e['update'](_0x1a019c)[_0x25d4('0x20')](function(_0x44ff25){return _0x44ff25;});}return null;};}function removeEntity(_0x32f10f,_0x53fc75){return function(_0x3e83ac){if(_0x3e83ac){return _0x3e83ac[_0x25d4('0x21')]()[_0x25d4('0x20')](function(){_0x32f10f[_0x25d4('0x18')](0xcc)[_0x25d4('0x17')]();});}};}function handleEntityNotFound(_0x38d5ac,_0x3d2173){return function(_0x33a457){if(!_0x33a457){_0x38d5ac[_0x25d4('0x16')](0x194);}return _0x33a457;};}function handleError(_0x4d2018,_0x202683){_0x202683=_0x202683||0x1f4;return function(_0x545d6a){logger['error'](_0x545d6a[_0x25d4('0x22')]);if(_0x545d6a[_0x25d4('0x23')]){delete _0x545d6a[_0x25d4('0x23')];}_0x4d2018[_0x25d4('0x18')](_0x202683)[_0x25d4('0x24')](_0x545d6a);};}exports[_0x25d4('0x25')]=function(_0x200620,_0x41f874){var _0x1ae71c={},_0x49ec9d={},_0x56a13d={'count':0x0,'rows':[]};var _0x99791b=_[_0x25d4('0x26')](db['SquareRecording'][_0x25d4('0x27')],function(_0x55ece0){return{'name':_0x55ece0[_0x25d4('0x28')],'type':_0x55ece0[_0x25d4('0x29')][_0x25d4('0x2a')]};});_0x49ec9d[_0x25d4('0x2b')]=_[_0x25d4('0x26')](_0x99791b,'name');_0x49ec9d['query']=_[_0x25d4('0x2c')](_0x200620['query']);_0x49ec9d[_0x25d4('0x2d')]=_['intersection'](_0x49ec9d[_0x25d4('0x2b')],_0x49ec9d[_0x25d4('0x2e')]);_0x1ae71c[_0x25d4('0x2f')]=_[_0x25d4('0x30')](_0x49ec9d[_0x25d4('0x2b')],qs['fields'](_0x200620[_0x25d4('0x2e')][_0x25d4('0x31')]));_0x1ae71c['attributes']=_0x1ae71c[_0x25d4('0x2f')][_0x25d4('0x32')]?_0x1ae71c[_0x25d4('0x2f')]:_0x49ec9d[_0x25d4('0x2b')];if(!_0x200620['query'][_0x25d4('0x33')](_0x25d4('0x34'))){_0x1ae71c[_0x25d4('0x1c')]=qs[_0x25d4('0x1c')](_0x200620['query'][_0x25d4('0x1c')]);_0x1ae71c[_0x25d4('0x1a')]=qs['offset'](_0x200620['query'][_0x25d4('0x1a')]);}_0x1ae71c[_0x25d4('0x35')]=qs[_0x25d4('0x36')](_0x200620[_0x25d4('0x2e')][_0x25d4('0x36')]);_0x1ae71c[_0x25d4('0x37')]=qs[_0x25d4('0x2d')](_[_0x25d4('0x38')](_0x200620['query'],_0x49ec9d[_0x25d4('0x2d')]),_0x99791b);if(_0x200620['query'][_0x25d4('0x39')]){_0x1ae71c[_0x25d4('0x37')]=_[_0x25d4('0x3a')](_0x1ae71c[_0x25d4('0x37')],{'$or':_[_0x25d4('0x26')](_0x99791b,function(_0x23b620){if(_0x23b620[_0x25d4('0x29')]!==_0x25d4('0x3b')){var _0x568a7e={};_0x568a7e[_0x23b620[_0x25d4('0x23')]]={'$like':'%'+_0x200620['query']['filter']+'%'};return _0x568a7e;}})});}_0x1ae71c=_[_0x25d4('0x3a')]({},_0x1ae71c,_0x200620[_0x25d4('0x3c')]);var _0x240a10={'where':_0x1ae71c[_0x25d4('0x37')]};return db[_0x25d4('0x3d')][_0x25d4('0x1d')](_0x240a10)[_0x25d4('0x20')](function(_0x2eb4db){_0x56a13d[_0x25d4('0x1d')]=_0x2eb4db;if(_0x200620[_0x25d4('0x2e')]['includeAll']){_0x1ae71c['include']=[{'all':!![]}];}return db[_0x25d4('0x3d')][_0x25d4('0x3e')](_0x1ae71c);})['then'](function(_0x13116a){_0x56a13d[_0x25d4('0x3f')]=_0x13116a;return _0x56a13d;})['then'](respondWithFilteredResult(_0x41f874,_0x1ae71c))[_0x25d4('0x40')](handleError(_0x41f874,null));};exports[_0x25d4('0x41')]=function(_0x573dfc,_0x3cd693){var _0x57944a={'raw':!![],'where':{'id':_0x573dfc['params']['id']}},_0x1e2876={};_0x1e2876[_0x25d4('0x2b')]=_[_0x25d4('0x2c')](db['SquareRecording'][_0x25d4('0x27')]);_0x1e2876[_0x25d4('0x2e')]=_[_0x25d4('0x2c')](_0x573dfc['query']);_0x1e2876[_0x25d4('0x2d')]=_[_0x25d4('0x30')](_0x1e2876['model'],_0x1e2876[_0x25d4('0x2e')]);_0x57944a[_0x25d4('0x2f')]=_['intersection'](_0x1e2876['model'],qs[_0x25d4('0x31')](_0x573dfc['query'][_0x25d4('0x31')]));_0x57944a[_0x25d4('0x2f')]=_0x57944a[_0x25d4('0x2f')][_0x25d4('0x32')]?_0x57944a[_0x25d4('0x2f')]:_0x1e2876[_0x25d4('0x2b')];if(_0x573dfc['query'][_0x25d4('0x42')]){_0x57944a[_0x25d4('0x43')]=[{'all':!![]}];}_0x57944a=_['merge']({},_0x57944a,_0x573dfc['options']);return db[_0x25d4('0x3d')][_0x25d4('0x44')](_0x57944a)[_0x25d4('0x20')](handleEntityNotFound(_0x3cd693,null))[_0x25d4('0x20')](respondWithResult(_0x3cd693,null))['catch'](handleError(_0x3cd693,null));};exports['create']=function(_0x41680a,_0x58fbf3){return db[_0x25d4('0x3d')]['create'](_0x41680a[_0x25d4('0x45')],{})[_0x25d4('0x20')](respondWithResult(_0x58fbf3,0xc9))[_0x25d4('0x40')](handleError(_0x58fbf3,null));};exports[_0x25d4('0x46')]=function(_0x3e39a3,_0xf6ccd8){if(_0x3e39a3['body']['id']){delete _0x3e39a3['body']['id'];}return db[_0x25d4('0x3d')][_0x25d4('0x44')]({'where':{'id':_0x3e39a3[_0x25d4('0x47')]['id']}})[_0x25d4('0x20')](handleEntityNotFound(_0xf6ccd8,null))[_0x25d4('0x20')](saveUpdates(_0x3e39a3[_0x25d4('0x45')],null))[_0x25d4('0x20')](respondWithResult(_0xf6ccd8,null))[_0x25d4('0x40')](handleError(_0xf6ccd8,null));};exports[_0x25d4('0x48')]=function(_0x4ef6c1,_0x548ad0,_0x4ea373){var _0x4a1939=require(_0x25d4('0x49'));var _0x48adcc=![];var _0x56b6a8={};if(_0x4ef6c1['query']['type']&&_0x4ef6c1[_0x25d4('0x2e')][_0x25d4('0x29')]===_0x25d4('0x4a')){_0x56b6a8[_0x25d4('0x4a')]=_0x4ef6c1[_0x25d4('0x47')]['id'];}else{_0x56b6a8['id']=_0x4ef6c1[_0x25d4('0x47')]['id'];}return db[_0x25d4('0x3d')][_0x25d4('0x44')]({'where':_0x56b6a8,'attributes':['id',_0x25d4('0x4b'),_0x25d4('0x4c')],'raw':!![]})[_0x25d4('0x20')](handleEntityNotFound(_0x548ad0,null))[_0x25d4('0x20')](function(_0x4db1b5){if(_0x4db1b5){var _0x55fdbe=_0x4db1b5[_0x25d4('0x4b')];var _0x5602e4=util[_0x25d4('0x4d')]('%s.cypher',_0x55fdbe);if(fs[_0x25d4('0x4e')](_0x5602e4)){_0x48adcc=!![];return _0x4a1939[_0x25d4('0x4f')](_0x5602e4,_0x55fdbe,config['secrets']['recording'])['then'](function(){return _0x4db1b5;});}return _0x4db1b5;}})[_0x25d4('0x20')](function(_0x51413b){if(_0x51413b){var _0x4572f5=_0x51413b[_0x25d4('0x4b')];if(!fs[_0x25d4('0x4e')](_0x4572f5)){throw new db[(_0x25d4('0x50'))]['ValidationError'](_0x25d4('0x51'));}if(_0x51413b['filename']){return _0x548ad0[_0x25d4('0x48')](_0x4572f5,_0x51413b[_0x25d4('0x4c')]+path[_0x25d4('0x52')](_0x4572f5),function(){if(_0x48adcc){fs[_0x25d4('0x53')](_0x4572f5);}});}else{return _0x548ad0[_0x25d4('0x48')](_0x4572f5,function(_0x368bc0){if(_0x48adcc){fs['unlink'](_0x4572f5);}});}}})[_0x25d4('0x40')](function(_0x1058d5){if(_0x1058d5[_0x25d4('0x54')]===_0x25d4('0x51')){_0x548ad0['status'](0x194)[_0x25d4('0x24')](_0x25d4('0x55'));}else{return handleError(_0x548ad0,null);}});};exports[_0x25d4('0x21')]=function(_0x227fed,_0x4830f2){return db['SquareRecording'][_0x25d4('0x44')]({'where':{'id':_0x227fed['params']['id']}})[_0x25d4('0x20')](function(_0x4182b6){if(_[_0x25d4('0x56')](_0x4182b6)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4182b6;})[_0x25d4('0x20')](function(_0x9d5023){var _0x47ff36=_0x9d5023[_0x25d4('0x4b')];logger[_0x25d4('0x57')](_0x25d4('0x58'),_0x47ff36);if(!_['isNil'](_0x9d5023[_0x25d4('0x4b')])&&fs[_0x25d4('0x4e')](_0x47ff36)){logger[_0x25d4('0x57')](_0x25d4('0x59')+_0x47ff36+_0x25d4('0x5a'));fs[_0x25d4('0x5b')](_0x47ff36);}_0x47ff36=_0x47ff36+'.cypher';if(!_[_0x25d4('0x56')](_0x9d5023[_0x25d4('0x4b')])&&fs[_0x25d4('0x4e')](_0x47ff36)){logger[_0x25d4('0x57')](_0x25d4('0x59')+_0x47ff36+_0x25d4('0x5a'));fs[_0x25d4('0x5b')](_0x47ff36);}return _0x9d5023;})['then'](function(_0x487b0f){if(!_0x487b0f)throw new InternalError();return _0x487b0f[_0x25d4('0x21')]();})[_0x25d4('0x20')](function(){_0x4830f2['status'](0xcc)[_0x25d4('0x17')]();})[_0x25d4('0x40')](handleError(_0x4830f2,null));};
\ No newline at end of file
index 0b77c1c..e8895d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f2=['request-promise','path','rimraf','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','../../config/logger','api','moment'];(function(_0x5e49de,_0x1d3dd9){var _0x328849=function(_0x457210){while(--_0x457210){_0x5e49de['push'](_0x5e49de['shift']());}};_0x328849(++_0x1d3dd9);}(_0x96f2,0xb0));var _0x296f=function(_0x33f183,_0x417e8c){_0x33f183=_0x33f183-0x0;var _0x3ea623=_0x96f2[_0x33f183];return _0x3ea623;};'use strict';var _=require(_0x296f('0x0'));var util=require('util');var logger=require(_0x296f('0x1'))(_0x296f('0x2'));var moment=require(_0x296f('0x3'));var BPromise=require('bluebird');var rp=require(_0x296f('0x4'));var fs=require('fs');var path=require(_0x296f('0x5'));var rimraf=require(_0x296f('0x6'));var config=require('../../config/environment');var attributes=require(_0x296f('0x7'));module[_0x296f('0x8')]=function(_0x4c3626,_0x4c55c7){return _0x4c3626[_0x296f('0x9')](_0x296f('0xa'),attributes,{'tableName':_0x296f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2542=['api','bluebird','path','rimraf','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','util','../../config/logger'];(function(_0x54e81a,_0x4ba69d){var _0x937fe=function(_0x12f7c6){while(--_0x12f7c6){_0x54e81a['push'](_0x54e81a['shift']());}};_0x937fe(++_0x4ba69d);}(_0x2542,0x169));var _0x2254=function(_0x33c3f2,_0xffbd98){_0x33c3f2=_0x33c3f2-0x0;var _0x21a2f4=_0x2542[_0x33c3f2];return _0x21a2f4;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var logger=require(_0x2254('0x2'))(_0x2254('0x3'));var moment=require('moment');var BPromise=require(_0x2254('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2254('0x5'));var rimraf=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var attributes=require(_0x2254('0x8'));module[_0x2254('0x9')]=function(_0x508183,_0x19ad3c){return _0x508183[_0x2254('0xa')](_0x2254('0xb'),attributes,{'tableName':_0x2254('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6846c60..8c67c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78ab=['SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','info','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x38bec0,_0x39b91e){var _0x42922b=function(_0xdd5870){while(--_0xdd5870){_0x38bec0['push'](_0x38bec0['shift']());}};_0x42922b(++_0x39b91e);}(_0x78ab,0xbe));var _0xb78a=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x78ab[_0x4a53d];return _0x27410e;};'use strict';var _=require(_0xb78a('0x0'));var util=require(_0xb78a('0x1'));var moment=require(_0xb78a('0x2'));var BPromise=require('bluebird');var rs=require(_0xb78a('0x3'));var fs=require('fs');var Redis=require(_0xb78a('0x4'));var db=require(_0xb78a('0x5'))['db'];var utils=require(_0xb78a('0x6'));var logger=require(_0xb78a('0x7'))(_0xb78a('0x8'));var config=require('../../config/environment');var jayson=require(_0xb78a('0x9'));var client=jayson[_0xb78a('0xa')][_0xb78a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31bc1a,_0x35f697,_0x3e7321){return new BPromise(function(_0x2d01a0,_0x5a265c){return client[_0xb78a('0xc')](_0x31bc1a,_0x3e7321)[_0xb78a('0xd')](function(_0x4116b7){logger['info']('SquareRecording,\x20%s,\x20%s',_0x35f697,_0xb78a('0xe'));logger[_0xb78a('0xf')](_0xb78a('0x10'),_0x35f697,_0xb78a('0xe'),JSON[_0xb78a('0x11')](_0x4116b7));if(_0x4116b7[_0xb78a('0x12')]){if(_0x4116b7[_0xb78a('0x12')][_0xb78a('0x13')]===0x1f4){logger['error'](_0xb78a('0x14'),_0x35f697,_0x4116b7[_0xb78a('0x12')][_0xb78a('0x15')]);return _0x5a265c(_0x4116b7[_0xb78a('0x12')]['message']);}logger['error'](_0xb78a('0x14'),_0x35f697,_0x4116b7[_0xb78a('0x12')]['message']);return _0x2d01a0(_0x4116b7[_0xb78a('0x12')][_0xb78a('0x15')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x35f697,'request\x20sent');_0x2d01a0(_0x4116b7[_0xb78a('0x16')][_0xb78a('0x15')]);}})[_0xb78a('0x17')](function(_0x1cff88){logger['error'](_0xb78a('0x14'),_0x35f697,_0x1cff88);_0x5a265c(_0x1cff88);});});}exports[_0xb78a('0x18')]=function(_0x39e682){var _0x916d3=this;return new Promise(function(_0x5ada79,_0x6a5d7f){return db[_0xb78a('0x19')][_0xb78a('0x1a')](_0x39e682[_0xb78a('0x1b')],{'raw':_0x39e682[_0xb78a('0x1c')]?_0x39e682[_0xb78a('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xb78a('0xd')](function(_0x10a844){logger[_0xb78a('0x1d')](_0xb78a('0x18'),_0x39e682);logger[_0xb78a('0xf')](_0xb78a('0x18'),_0x39e682,JSON[_0xb78a('0x11')](_0x10a844));_0x5ada79(_0x10a844);})[_0xb78a('0x17')](function(_0x2465fd){logger['error'](_0xb78a('0x18'),_0x2465fd[_0xb78a('0x15')],_0x39e682);_0x6a5d7f(_0x916d3['error'](0x1f4,_0x2465fd[_0xb78a('0x15')]));});});};
\ No newline at end of file
+var _0xb445=['then','info','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','SquareRecording,\x20%s,\x20%s','message','result','catch','create','options','raw','CreateSquareRecording','lodash','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x1488be,_0x22bc9d){var _0x432f69=function(_0x1f9c16){while(--_0x1f9c16){_0x1488be['push'](_0x1488be['shift']());}};_0x432f69(++_0x22bc9d);}(_0xb445,0xf9));var _0x5b44=function(_0x382353,_0x1ece1e){_0x382353=_0x382353-0x0;var _0xf42fa9=_0xb445[_0x382353];return _0xf42fa9;};'use strict';var _=require(_0x5b44('0x0'));var util=require('util');var moment=require(_0x5b44('0x1'));var BPromise=require(_0x5b44('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5b44('0x3'))['db'];var utils=require(_0x5b44('0x4'));var logger=require('../../config/logger')(_0x5b44('0x5'));var config=require(_0x5b44('0x6'));var jayson=require(_0x5b44('0x7'));var client=jayson[_0x5b44('0x8')][_0x5b44('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5467c3,_0x53fd0a,_0x50a0d3){return new BPromise(function(_0x4cc582,_0x1e3841){return client[_0x5b44('0xa')](_0x5467c3,_0x50a0d3)[_0x5b44('0xb')](function(_0x430835){logger[_0x5b44('0xc')]('SquareRecording,\x20%s,\x20%s',_0x53fd0a,_0x5b44('0xd'));logger[_0x5b44('0xe')](_0x5b44('0xf'),_0x53fd0a,_0x5b44('0xd'),JSON[_0x5b44('0x10')](_0x430835));if(_0x430835[_0x5b44('0x11')]){if(_0x430835['error']['code']===0x1f4){logger[_0x5b44('0x11')](_0x5b44('0x12'),_0x53fd0a,_0x430835[_0x5b44('0x11')][_0x5b44('0x13')]);return _0x1e3841(_0x430835[_0x5b44('0x11')][_0x5b44('0x13')]);}logger[_0x5b44('0x11')]('SquareRecording,\x20%s,\x20%s',_0x53fd0a,_0x430835['error']['message']);return _0x4cc582(_0x430835[_0x5b44('0x11')]['message']);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x53fd0a,'request\x20sent');_0x4cc582(_0x430835[_0x5b44('0x14')][_0x5b44('0x13')]);}})[_0x5b44('0x15')](function(_0x2d0ed8){logger[_0x5b44('0x11')](_0x5b44('0x12'),_0x53fd0a,_0x2d0ed8);_0x1e3841(_0x2d0ed8);});});}exports['CreateSquareRecording']=function(_0x38ca02){var _0x5ce14c=this;return new Promise(function(_0x47d34a,_0x358630){return db['SquareRecording'][_0x5b44('0x16')](_0x38ca02['body'],{'raw':_0x38ca02['options']?_0x38ca02[_0x5b44('0x17')][_0x5b44('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x1de8c5){logger[_0x5b44('0xc')]('CreateSquareRecording',_0x38ca02);logger[_0x5b44('0xe')](_0x5b44('0x19'),_0x38ca02,JSON['stringify'](_0x1de8c5));_0x47d34a(_0x1de8c5);})['catch'](function(_0x2b6b9a){logger[_0x5b44('0x11')](_0x5b44('0x19'),_0x2b6b9a[_0x5b44('0x13')],_0x38ca02);_0x358630(_0x5ce14c['error'](0x1f4,_0x2b6b9a['message']));});});};
\ No newline at end of file
index 7b560f8..1384997 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(_0x570c8a,_0x4a11cc){var _0x25dc12=function(_0x4585d9){while(--_0x4585d9){_0x570c8a['push'](_0x570c8a['shift']());}};_0x25dc12(++_0x4a11cc);}(_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 _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x364d5a,_0x5a9e64){var _0xb64b05=function(_0xd4103b){while(--_0xd4103b){_0x364d5a['push'](_0x364d5a['shift']());}};_0xb64b05(++_0x5a9e64);}(_0xe706,0xa3));var _0x6e70=function(_0x3070d5,_0x1d3284){_0x3070d5=_0x3070d5-0x0;var _0x2067e6=_0xe706[_0x3070d5];return _0x2067e6;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index 1c2ed45..e6483ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec5=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x4e1f27,_0x2c3409){var _0x1162e0=function(_0x9e6bf0){while(--_0x9e6bf0){_0x4e1f27['push'](_0x4e1f27['shift']());}};_0x1162e0(++_0x2c3409);}(_0xaec5,0x92));var _0x5aec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaec5[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5aec('0x0'));module[_0x5aec('0x1')]={'network':{'type':Sequelize[_0x5aec('0x2')]},'network_script':{'type':Sequelize[_0x5aec('0x2')]},'request':{'type':Sequelize[_0x5aec('0x2')]},'channel':{'type':Sequelize[_0x5aec('0x2')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x5aec('0x2')]},'uniqueid':{'type':Sequelize[_0x5aec('0x2')]},'version':{'type':Sequelize[_0x5aec('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x5aec('0x2')]},'callingtns':{'type':Sequelize[_0x5aec('0x2')]},'dnid':{'type':Sequelize[_0x5aec('0x2')]},'rdnis':{'type':Sequelize[_0x5aec('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x5aec('0x2')]},'priority':{'type':Sequelize[_0x5aec('0x2')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5aec('0x2')]},'threadid':{'type':Sequelize[_0x5aec('0x2')]},'project_name':{'type':Sequelize[_0x5aec('0x2')]},'joinAt':{'type':Sequelize[_0x5aec('0x3')]},'leaveAt':{'type':Sequelize[_0x5aec('0x3')]},'bot':{'type':Sequelize[_0x5aec('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x16bc=['DATE','BOOLEAN','sequelize','STRING'];(function(_0x516b29,_0x2333b9){var _0x421160=function(_0x1e9f63){while(--_0x1e9f63){_0x516b29['push'](_0x516b29['shift']());}};_0x421160(++_0x2333b9);}(_0x16bc,0x11e));var _0xc16b=function(_0x295771,_0x11e035){_0x295771=_0x295771-0x0;var _0x5130ee=_0x16bc[_0x295771];return _0x5130ee;};'use strict';var Sequelize=require(_0xc16b('0x0'));module['exports']={'network':{'type':Sequelize[_0xc16b('0x1')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xc16b('0x1')]},'language':{'type':Sequelize[_0xc16b('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xc16b('0x1')]},'version':{'type':Sequelize[_0xc16b('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xc16b('0x1')]},'callingpres':{'type':Sequelize[_0xc16b('0x1')]},'callingani2':{'type':Sequelize[_0xc16b('0x1')]},'callington':{'type':Sequelize[_0xc16b('0x1')]},'callingtns':{'type':Sequelize[_0xc16b('0x1')]},'dnid':{'type':Sequelize[_0xc16b('0x1')]},'rdnis':{'type':Sequelize[_0xc16b('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xc16b('0x1')]},'priority':{'type':Sequelize[_0xc16b('0x1')]},'enhanced':{'type':Sequelize[_0xc16b('0x1')]},'accountcode':{'type':Sequelize[_0xc16b('0x1')]},'threadid':{'type':Sequelize[_0xc16b('0x1')]},'project_name':{'type':Sequelize[_0xc16b('0x1')]},'joinAt':{'type':Sequelize[_0xc16b('0x2')]},'leaveAt':{'type':Sequelize[_0xc16b('0x2')]},'bot':{'type':Sequelize[_0xc16b('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 90eddfa..6b60795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11fb=['body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','create'];(function(_0x51c437,_0xd0b176){var _0xb3b097=function(_0x54e052){while(--_0x54e052){_0x51c437['push'](_0x51c437['shift']());}};_0xb3b097(++_0xd0b176);}(_0x11fb,0xf0));var _0xb11f=function(_0x338623,_0x4dc491){_0x338623=_0x338623-0x0;var _0x11578f=_0x11fb[_0x338623];return _0x11578f;};'use strict';var emlformat=require(_0xb11f('0x0'));var rimraf=require(_0xb11f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb11f('0x2'));var rp=require(_0xb11f('0x3'));var moment=require(_0xb11f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb11f('0x5'));var util=require(_0xb11f('0x6'));var path=require(_0xb11f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb11f('0x8'));var _=require(_0xb11f('0x9'));var squel=require(_0xb11f('0xa'));var crypto=require(_0xb11f('0xb'));var jsforce=require(_0xb11f('0xc'));var deskjs=require(_0xb11f('0xd'));var toCsv=require(_0xb11f('0xe'));var querystring=require(_0xb11f('0xf'));var Papa=require('papaparse');var Redis=require(_0xb11f('0x10'));var authService=require(_0xb11f('0x11'));var qs=require(_0xb11f('0x12'));var as=require(_0xb11f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb11f('0x14'))(_0xb11f('0x15'));var utils=require(_0xb11f('0x16'));var config=require(_0xb11f('0x17'));var licenseUtil=require(_0xb11f('0x18'));var db=require(_0xb11f('0x19'))['db'];function respondWithStatusCode(_0x3e7afc,_0x2f9801){_0x2f9801=_0x2f9801||0xcc;return function(_0x3446e3){if(_0x3446e3){return _0x3e7afc[_0xb11f('0x1a')](_0x2f9801);}return _0x3e7afc['status'](_0x2f9801)[_0xb11f('0x1b')]();};}function respondWithResult(_0x530d79,_0x240ae3){_0x240ae3=_0x240ae3||0xc8;return function(_0x51a882){if(_0x51a882){return _0x530d79[_0xb11f('0x1c')](_0x240ae3)['json'](_0x51a882);}};}function respondWithFilteredResult(_0x3654b7,_0x167806){return function(_0x4f606d){if(_0x4f606d){var _0x2a98e4=typeof _0x167806[_0xb11f('0x1d')]===_0xb11f('0x1e')&&typeof _0x167806[_0xb11f('0x1f')]===_0xb11f('0x1e');var _0x1dd003=_0x4f606d[_0xb11f('0x20')];var _0x50ab78=_0x2a98e4?0x0:_0x167806['offset'];var _0x148de3=_0x2a98e4?_0x4f606d['count']:_0x167806[_0xb11f('0x1d')]+_0x167806['limit'];var _0x1ad079;if(_0x148de3>=_0x1dd003){_0x148de3=_0x1dd003;_0x1ad079=0xc8;}else{_0x1ad079=0xce;}_0x3654b7[_0xb11f('0x1c')](_0x1ad079);return _0x3654b7[_0xb11f('0x21')](_0xb11f('0x22'),_0x50ab78+'-'+_0x148de3+'/'+_0x1dd003)[_0xb11f('0x23')](_0x4f606d);}return null;};}function patchUpdates(_0x11cb90){return function(_0x442832){try{jsonpatch['apply'](_0x442832,_0x11cb90,!![]);}catch(_0x4e72ae){return BPromise[_0xb11f('0x24')](_0x4e72ae);}return _0x442832[_0xb11f('0x25')]();};}function saveUpdates(_0x3ef669,_0x484b4e){return function(_0x2ca4dc){if(_0x2ca4dc){return _0x2ca4dc[_0xb11f('0x26')](_0x3ef669)[_0xb11f('0x27')](function(_0x3ff955){return _0x3ff955;});}return null;};}function removeEntity(_0x487970,_0x40392c){return function(_0x584cba){if(_0x584cba){return _0x584cba[_0xb11f('0x28')]()[_0xb11f('0x27')](function(){_0x487970[_0xb11f('0x1c')](0xcc)[_0xb11f('0x1b')]();});}};}function handleEntityNotFound(_0x45f2e2,_0x2aea07){return function(_0x3a20ed){if(!_0x3a20ed){_0x45f2e2[_0xb11f('0x1a')](0x194);}return _0x3a20ed;};}function handleError(_0x1b4b8b,_0xecfda0){_0xecfda0=_0xecfda0||0x1f4;return function(_0x13e010){logger[_0xb11f('0x29')](_0x13e010[_0xb11f('0x2a')]);if(_0x13e010[_0xb11f('0x2b')]){delete _0x13e010[_0xb11f('0x2b')];}_0x1b4b8b[_0xb11f('0x1c')](_0xecfda0)[_0xb11f('0x2c')](_0x13e010);};}exports[_0xb11f('0x2d')]=function(_0x8cc703,_0x4c2a31){var _0x52255b={},_0x36c556={},_0x2bbd33={'count':0x0,'rows':[]};var _0x5e7a81=_[_0xb11f('0x2e')](db[_0xb11f('0x2f')][_0xb11f('0x30')],function(_0x290a93){return{'name':_0x290a93[_0xb11f('0x31')],'type':_0x290a93[_0xb11f('0x32')]['key']};});_0x36c556['model']=_[_0xb11f('0x2e')](_0x5e7a81,_0xb11f('0x2b'));_0x36c556[_0xb11f('0x33')]=_[_0xb11f('0x34')](_0x8cc703[_0xb11f('0x33')]);_0x36c556[_0xb11f('0x35')]=_[_0xb11f('0x36')](_0x36c556[_0xb11f('0x37')],_0x36c556[_0xb11f('0x33')]);_0x52255b[_0xb11f('0x38')]=_[_0xb11f('0x36')](_0x36c556[_0xb11f('0x37')],qs['fields'](_0x8cc703[_0xb11f('0x33')][_0xb11f('0x39')]));_0x52255b['attributes']=_0x52255b[_0xb11f('0x38')][_0xb11f('0x3a')]?_0x52255b[_0xb11f('0x38')]:_0x36c556[_0xb11f('0x37')];if(!_0x8cc703[_0xb11f('0x33')][_0xb11f('0x3b')](_0xb11f('0x3c'))){_0x52255b['limit']=qs[_0xb11f('0x1f')](_0x8cc703['query'][_0xb11f('0x1f')]);_0x52255b[_0xb11f('0x1d')]=qs[_0xb11f('0x1d')](_0x8cc703[_0xb11f('0x33')][_0xb11f('0x1d')]);}_0x52255b[_0xb11f('0x3d')]=qs[_0xb11f('0x3e')](_0x8cc703[_0xb11f('0x33')]['sort']);_0x52255b[_0xb11f('0x3f')]=qs[_0xb11f('0x35')](_[_0xb11f('0x40')](_0x8cc703[_0xb11f('0x33')],_0x36c556[_0xb11f('0x35')]),_0x5e7a81);if(_0x8cc703[_0xb11f('0x33')][_0xb11f('0x41')]){_0x52255b[_0xb11f('0x3f')]=_[_0xb11f('0x42')](_0x52255b[_0xb11f('0x3f')],{'$or':_[_0xb11f('0x2e')](_0x5e7a81,function(_0x1eb97b){if(_0x1eb97b[_0xb11f('0x32')]!==_0xb11f('0x43')){var _0x4b79ed={};_0x4b79ed[_0x1eb97b['name']]={'$like':'%'+_0x8cc703[_0xb11f('0x33')][_0xb11f('0x41')]+'%'};return _0x4b79ed;}})});}_0x52255b=_['merge']({},_0x52255b,_0x8cc703['options']);var _0x3d1830={'where':_0x52255b[_0xb11f('0x3f')]};return db['SquareReport'][_0xb11f('0x20')](_0x3d1830)[_0xb11f('0x27')](function(_0x1ebc76){_0x2bbd33[_0xb11f('0x20')]=_0x1ebc76;if(_0x8cc703[_0xb11f('0x33')][_0xb11f('0x44')]){_0x52255b[_0xb11f('0x45')]=[{'all':!![]}];}return db['SquareReport'][_0xb11f('0x46')](_0x52255b);})['then'](function(_0x1c36c2){_0x2bbd33['rows']=_0x1c36c2;return _0x2bbd33;})[_0xb11f('0x27')](respondWithFilteredResult(_0x4c2a31,_0x52255b))[_0xb11f('0x47')](handleError(_0x4c2a31,null));};exports[_0xb11f('0x48')]=function(_0x2b0b9e,_0x3eb87b){var _0x5b8867={'raw':!![],'where':{'id':_0x2b0b9e[_0xb11f('0x49')]['id']}},_0x5a03c6={};_0x5a03c6[_0xb11f('0x37')]=_[_0xb11f('0x34')](db[_0xb11f('0x2f')][_0xb11f('0x30')]);_0x5a03c6['query']=_['keys'](_0x2b0b9e[_0xb11f('0x33')]);_0x5a03c6[_0xb11f('0x35')]=_[_0xb11f('0x36')](_0x5a03c6[_0xb11f('0x37')],_0x5a03c6[_0xb11f('0x33')]);_0x5b8867['attributes']=_[_0xb11f('0x36')](_0x5a03c6[_0xb11f('0x37')],qs[_0xb11f('0x39')](_0x2b0b9e['query']['fields']));_0x5b8867['attributes']=_0x5b8867[_0xb11f('0x38')]['length']?_0x5b8867[_0xb11f('0x38')]:_0x5a03c6[_0xb11f('0x37')];if(_0x2b0b9e[_0xb11f('0x33')]['includeAll']){_0x5b8867[_0xb11f('0x45')]=[{'all':!![]}];}_0x5b8867=_['merge']({},_0x5b8867,_0x2b0b9e[_0xb11f('0x4a')]);return db['SquareReport']['find'](_0x5b8867)[_0xb11f('0x27')](handleEntityNotFound(_0x3eb87b,null))[_0xb11f('0x27')](respondWithResult(_0x3eb87b,null))['catch'](handleError(_0x3eb87b,null));};exports[_0xb11f('0x4b')]=function(_0x496f09,_0x1f2f76){return db[_0xb11f('0x2f')]['create'](_0x496f09[_0xb11f('0x4c')],{})[_0xb11f('0x27')](respondWithResult(_0x1f2f76,0xc9))[_0xb11f('0x47')](handleError(_0x1f2f76,null));};exports[_0xb11f('0x26')]=function(_0x29faf8,_0x1ab70c){if(_0x29faf8[_0xb11f('0x4c')]['id']){delete _0x29faf8[_0xb11f('0x4c')]['id'];}return db[_0xb11f('0x2f')][_0xb11f('0x4d')]({'where':{'id':_0x29faf8[_0xb11f('0x49')]['id']}})[_0xb11f('0x27')](handleEntityNotFound(_0x1ab70c,null))[_0xb11f('0x27')](saveUpdates(_0x29faf8[_0xb11f('0x4c')],null))['then'](respondWithResult(_0x1ab70c,null))[_0xb11f('0x47')](handleError(_0x1ab70c,null));};exports['destroy']=function(_0x47b53d,_0x2d0e24){return db['SquareReport'][_0xb11f('0x4d')]({'where':{'id':_0x47b53d[_0xb11f('0x49')]['id']}})[_0xb11f('0x27')](handleEntityNotFound(_0x2d0e24,null))[_0xb11f('0x27')](removeEntity(_0x2d0e24,null))[_0xb11f('0x47')](handleError(_0x2d0e24,null));};exports['describe']=function(_0x430ca7,_0x1c9efc){return db['SquareReport'][_0xb11f('0x4e')]()[_0xb11f('0x27')](respondWithResult(_0x1c9efc,null))['catch'](handleError(_0x1c9efc,null));};
\ No newline at end of file
+var _0x61c7=['filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','SquareReport','includeAll','include','rows','catch','show','params','rawAttributes','fields','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','then','stack','name','send','fieldName','key','model','map','query','keys'];(function(_0x5af415,_0x2fb650){var _0x48de47=function(_0x354222){while(--_0x354222){_0x5af415['push'](_0x5af415['shift']());}};_0x48de47(++_0x2fb650);}(_0x61c7,0xb5));var _0x761c=function(_0x1753fe,_0xbe76fc){_0x1753fe=_0x1753fe-0x0;var _0x3e7856=_0x61c7[_0x1753fe];return _0x3e7856;};'use strict';var emlformat=require(_0x761c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x761c('0x1'));var jsonpatch=require(_0x761c('0x2'));var rp=require(_0x761c('0x3'));var moment=require(_0x761c('0x4'));var BPromise=require(_0x761c('0x5'));var Mustache=require(_0x761c('0x6'));var util=require('util');var path=require(_0x761c('0x7'));var sox=require('sox');var csv=require(_0x761c('0x8'));var ejs=require(_0x761c('0x9'));var fs=require('fs');var fs_extra=require(_0x761c('0xa'));var _=require(_0x761c('0xb'));var squel=require(_0x761c('0xc'));var crypto=require(_0x761c('0xd'));var jsforce=require(_0x761c('0xe'));var deskjs=require(_0x761c('0xf'));var toCsv=require(_0x761c('0x8'));var querystring=require(_0x761c('0x10'));var Papa=require(_0x761c('0x11'));var Redis=require(_0x761c('0x12'));var authService=require(_0x761c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x761c('0x14'));var hardwareService=require(_0x761c('0x15'));var logger=require('../../config/logger')(_0x761c('0x16'));var utils=require(_0x761c('0x17'));var config=require(_0x761c('0x18'));var licenseUtil=require(_0x761c('0x19'));var db=require(_0x761c('0x1a'))['db'];function respondWithStatusCode(_0x106bef,_0x29976f){_0x29976f=_0x29976f||0xcc;return function(_0x29e33a){if(_0x29e33a){return _0x106bef[_0x761c('0x1b')](_0x29976f);}return _0x106bef[_0x761c('0x1c')](_0x29976f)[_0x761c('0x1d')]();};}function respondWithResult(_0x4d40b0,_0x5ab2c1){_0x5ab2c1=_0x5ab2c1||0xc8;return function(_0x2842ac){if(_0x2842ac){return _0x4d40b0[_0x761c('0x1c')](_0x5ab2c1)[_0x761c('0x1e')](_0x2842ac);}};}function respondWithFilteredResult(_0x4cff4d,_0x3d69fa){return function(_0x408d9e){if(_0x408d9e){var _0x2d4088=typeof _0x3d69fa['offset']==='undefined'&&typeof _0x3d69fa['limit']===_0x761c('0x1f');var _0x43ce15=_0x408d9e['count'];var _0x34e20f=_0x2d4088?0x0:_0x3d69fa[_0x761c('0x20')];var _0x39b5ca=_0x2d4088?_0x408d9e[_0x761c('0x21')]:_0x3d69fa[_0x761c('0x20')]+_0x3d69fa[_0x761c('0x22')];var _0x12db2a;if(_0x39b5ca>=_0x43ce15){_0x39b5ca=_0x43ce15;_0x12db2a=0xc8;}else{_0x12db2a=0xce;}_0x4cff4d[_0x761c('0x1c')](_0x12db2a);return _0x4cff4d[_0x761c('0x23')](_0x761c('0x24'),_0x34e20f+'-'+_0x39b5ca+'/'+_0x43ce15)[_0x761c('0x1e')](_0x408d9e);}return null;};}function patchUpdates(_0x513094){return function(_0x5154f2){try{jsonpatch[_0x761c('0x25')](_0x5154f2,_0x513094,!![]);}catch(_0xd5ffd7){return BPromise[_0x761c('0x26')](_0xd5ffd7);}return _0x5154f2[_0x761c('0x27')]();};}function saveUpdates(_0x4e03c1,_0x25abf9){return function(_0x3a6056){if(_0x3a6056){return _0x3a6056['update'](_0x4e03c1)[_0x761c('0x28')](function(_0x4135b0){return _0x4135b0;});}return null;};}function removeEntity(_0x5cfb75,_0x42e5d4){return function(_0x36172c){if(_0x36172c){return _0x36172c['destroy']()['then'](function(){_0x5cfb75['status'](0xcc)[_0x761c('0x1d')]();});}};}function handleEntityNotFound(_0x321d17,_0x360092){return function(_0x2659fa){if(!_0x2659fa){_0x321d17[_0x761c('0x1b')](0x194);}return _0x2659fa;};}function handleError(_0x277991,_0x5bf79a){_0x5bf79a=_0x5bf79a||0x1f4;return function(_0x57680f){logger['error'](_0x57680f[_0x761c('0x29')]);if(_0x57680f[_0x761c('0x2a')]){delete _0x57680f[_0x761c('0x2a')];}_0x277991[_0x761c('0x1c')](_0x5bf79a)[_0x761c('0x2b')](_0x57680f);};}exports['index']=function(_0x5ead9a,_0x3232b4){var _0x3b1125={},_0x3b85d8={},_0x1091da={'count':0x0,'rows':[]};var _0x5793ae=_['map'](db['SquareReport']['rawAttributes'],function(_0x459b83){return{'name':_0x459b83[_0x761c('0x2c')],'type':_0x459b83['type'][_0x761c('0x2d')]};});_0x3b85d8[_0x761c('0x2e')]=_[_0x761c('0x2f')](_0x5793ae,_0x761c('0x2a'));_0x3b85d8[_0x761c('0x30')]=_[_0x761c('0x31')](_0x5ead9a[_0x761c('0x30')]);_0x3b85d8[_0x761c('0x32')]=_[_0x761c('0x33')](_0x3b85d8[_0x761c('0x2e')],_0x3b85d8[_0x761c('0x30')]);_0x3b1125[_0x761c('0x34')]=_[_0x761c('0x33')](_0x3b85d8[_0x761c('0x2e')],qs['fields'](_0x5ead9a['query']['fields']));_0x3b1125[_0x761c('0x34')]=_0x3b1125[_0x761c('0x34')]['length']?_0x3b1125['attributes']:_0x3b85d8[_0x761c('0x2e')];if(!_0x5ead9a[_0x761c('0x30')][_0x761c('0x35')](_0x761c('0x36'))){_0x3b1125[_0x761c('0x22')]=qs[_0x761c('0x22')](_0x5ead9a[_0x761c('0x30')][_0x761c('0x22')]);_0x3b1125[_0x761c('0x20')]=qs[_0x761c('0x20')](_0x5ead9a[_0x761c('0x30')][_0x761c('0x20')]);}_0x3b1125[_0x761c('0x37')]=qs[_0x761c('0x38')](_0x5ead9a[_0x761c('0x30')][_0x761c('0x38')]);_0x3b1125[_0x761c('0x39')]=qs[_0x761c('0x32')](_[_0x761c('0x3a')](_0x5ead9a[_0x761c('0x30')],_0x3b85d8[_0x761c('0x32')]),_0x5793ae);if(_0x5ead9a['query'][_0x761c('0x3b')]){_0x3b1125['where']=_[_0x761c('0x3c')](_0x3b1125[_0x761c('0x39')],{'$or':_[_0x761c('0x2f')](_0x5793ae,function(_0x337391){if(_0x337391[_0x761c('0x3d')]!=='VIRTUAL'){var _0x43f8ff={};_0x43f8ff[_0x337391['name']]={'$like':'%'+_0x5ead9a[_0x761c('0x30')][_0x761c('0x3b')]+'%'};return _0x43f8ff;}})});}_0x3b1125=_[_0x761c('0x3c')]({},_0x3b1125,_0x5ead9a[_0x761c('0x3e')]);var _0x595e65={'where':_0x3b1125[_0x761c('0x39')]};return db[_0x761c('0x3f')][_0x761c('0x21')](_0x595e65)[_0x761c('0x28')](function(_0x14af0f){_0x1091da['count']=_0x14af0f;if(_0x5ead9a[_0x761c('0x30')][_0x761c('0x40')]){_0x3b1125[_0x761c('0x41')]=[{'all':!![]}];}return db[_0x761c('0x3f')]['findAll'](_0x3b1125);})['then'](function(_0x2e8930){_0x1091da[_0x761c('0x42')]=_0x2e8930;return _0x1091da;})[_0x761c('0x28')](respondWithFilteredResult(_0x3232b4,_0x3b1125))[_0x761c('0x43')](handleError(_0x3232b4,null));};exports[_0x761c('0x44')]=function(_0x4ab903,_0x466601){var _0x1fb078={'raw':!![],'where':{'id':_0x4ab903[_0x761c('0x45')]['id']}},_0xadb509={};_0xadb509['model']=_[_0x761c('0x31')](db[_0x761c('0x3f')][_0x761c('0x46')]);_0xadb509[_0x761c('0x30')]=_[_0x761c('0x31')](_0x4ab903['query']);_0xadb509['filters']=_[_0x761c('0x33')](_0xadb509[_0x761c('0x2e')],_0xadb509[_0x761c('0x30')]);_0x1fb078[_0x761c('0x34')]=_['intersection'](_0xadb509[_0x761c('0x2e')],qs['fields'](_0x4ab903[_0x761c('0x30')][_0x761c('0x47')]));_0x1fb078[_0x761c('0x34')]=_0x1fb078[_0x761c('0x34')]['length']?_0x1fb078[_0x761c('0x34')]:_0xadb509[_0x761c('0x2e')];if(_0x4ab903[_0x761c('0x30')]['includeAll']){_0x1fb078[_0x761c('0x41')]=[{'all':!![]}];}_0x1fb078=_[_0x761c('0x3c')]({},_0x1fb078,_0x4ab903[_0x761c('0x3e')]);return db[_0x761c('0x3f')][_0x761c('0x48')](_0x1fb078)[_0x761c('0x28')](handleEntityNotFound(_0x466601,null))[_0x761c('0x28')](respondWithResult(_0x466601,null))[_0x761c('0x43')](handleError(_0x466601,null));};exports[_0x761c('0x49')]=function(_0x20b1e0,_0x3bc0a5){return db[_0x761c('0x3f')]['create'](_0x20b1e0[_0x761c('0x4a')],{})[_0x761c('0x28')](respondWithResult(_0x3bc0a5,0xc9))['catch'](handleError(_0x3bc0a5,null));};exports[_0x761c('0x4b')]=function(_0x497d6a,_0x18277a){if(_0x497d6a['body']['id']){delete _0x497d6a[_0x761c('0x4a')]['id'];}return db[_0x761c('0x3f')][_0x761c('0x48')]({'where':{'id':_0x497d6a[_0x761c('0x45')]['id']}})['then'](handleEntityNotFound(_0x18277a,null))['then'](saveUpdates(_0x497d6a[_0x761c('0x4a')],null))[_0x761c('0x28')](respondWithResult(_0x18277a,null))[_0x761c('0x43')](handleError(_0x18277a,null));};exports['destroy']=function(_0x1242b9,_0x3a5656){return db['SquareReport'][_0x761c('0x48')]({'where':{'id':_0x1242b9['params']['id']}})[_0x761c('0x28')](handleEntityNotFound(_0x3a5656,null))[_0x761c('0x28')](removeEntity(_0x3a5656,null))[_0x761c('0x43')](handleError(_0x3a5656,null));};exports[_0x761c('0x4c')]=function(_0x47233a,_0x4a45a7){return db[_0x761c('0x3f')][_0x761c('0x4c')]()[_0x761c('0x28')](respondWithResult(_0x4a45a7,null))[_0x761c('0x43')](handleError(_0x4a45a7,null));};
\ No newline at end of file
index fa48de0..4c038ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x093b=['uniqueid','project_name','leaveAt','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport'];(function(_0x2f39c0,_0x4253d0){var _0x3c2daa=function(_0x5651b9){while(--_0x5651b9){_0x2f39c0['push'](_0x2f39c0['shift']());}};_0x3c2daa(++_0x4253d0);}(_0x093b,0x12f));var _0xb093=function(_0x3ee55a,_0x19aeea){_0x3ee55a=_0x3ee55a-0x0;var _0x581800=_0x093b[_0x3ee55a];return _0x581800;};'use strict';var _=require(_0xb093('0x0'));var util=require(_0xb093('0x1'));var logger=require('../../config/logger')(_0xb093('0x2'));var moment=require('moment');var BPromise=require(_0xb093('0x3'));var rp=require(_0xb093('0x4'));var fs=require('fs');var path=require(_0xb093('0x5'));var rimraf=require(_0xb093('0x6'));var config=require(_0xb093('0x7'));var attributes=require(_0xb093('0x8'));module[_0xb093('0x9')]=function(_0x408328,_0x336c17){return _0x408328[_0xb093('0xa')](_0xb093('0xb'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xb093('0xc'),_0xb093('0xd')]},{'name':'leaveAt','fields':[_0xb093('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd204=['path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name','leaveAt','lodash','util','request-promise'];(function(_0x1d98b2,_0x535c5f){var _0x5406f7=function(_0x47d0d4){while(--_0x47d0d4){_0x1d98b2['push'](_0x1d98b2['shift']());}};_0x5406f7(++_0x535c5f);}(_0xd204,0x6d));var _0x4d20=function(_0x4c2c6e,_0xa993e9){_0x4c2c6e=_0x4c2c6e-0x0;var _0x3fb943=_0xd204[_0x4c2c6e];return _0x3fb943;};'use strict';var _=require(_0x4d20('0x0'));var util=require(_0x4d20('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4d20('0x2'));var fs=require('fs');var path=require(_0x4d20('0x3'));var rimraf=require(_0x4d20('0x4'));var config=require(_0x4d20('0x5'));var attributes=require(_0x4d20('0x6'));module[_0x4d20('0x7')]=function(_0x3d74c9,_0x56a05e){return _0x3d74c9[_0x4d20('0x8')](_0x4d20('0x9'),attributes,{'tableName':_0x4d20('0xa'),'paranoid':![],'indexes':[{'name':_0x4d20('0xb'),'fields':['uniqueid',_0x4d20('0xc')]},{'name':_0x4d20('0xd'),'fields':[_0x4d20('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 4e38ba7..7f08353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x922d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','error','code','SquareReport,\x20%s,\x20%s','message','catch','CreateSquareReport','SquareReport','body','options','info','debug','stringify','UpdateSquareReport','update','where','attributes','limit','util','moment'];(function(_0x211c6,_0x456608){var _0x4c7eb7=function(_0x555f27){while(--_0x555f27){_0x211c6['push'](_0x211c6['shift']());}};_0x4c7eb7(++_0x456608);}(_0x922d,0xec));var _0xd922=function(_0xd7301,_0x35a916){_0xd7301=_0xd7301-0x0;var _0x21172c=_0x922d[_0xd7301];return _0x21172c;};'use strict';var _=require('lodash');var util=require(_0xd922('0x0'));var moment=require(_0xd922('0x1'));var BPromise=require(_0xd922('0x2'));var rs=require(_0xd922('0x3'));var fs=require('fs');var Redis=require(_0xd922('0x4'));var db=require(_0xd922('0x5'))['db'];var utils=require(_0xd922('0x6'));var logger=require(_0xd922('0x7'))(_0xd922('0x8'));var config=require(_0xd922('0x9'));var jayson=require(_0xd922('0xa'));var client=jayson[_0xd922('0xb')][_0xd922('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5229cc,_0x34acd8,_0x5118bd){return new BPromise(function(_0x2a0f0c,_0x5a8fb6){return client[_0xd922('0xd')](_0x5229cc,_0x5118bd)[_0xd922('0xe')](function(_0x12dde1){logger['info']('SquareReport,\x20%s,\x20%s',_0x34acd8,_0xd922('0xf'));logger['debug'](_0xd922('0x10'),_0x34acd8,'request\x20sent',JSON['stringify'](_0x12dde1));if(_0x12dde1[_0xd922('0x11')]){if(_0x12dde1[_0xd922('0x11')][_0xd922('0x12')]===0x1f4){logger[_0xd922('0x11')](_0xd922('0x13'),_0x34acd8,_0x12dde1[_0xd922('0x11')]['message']);return _0x5a8fb6(_0x12dde1[_0xd922('0x11')]['message']);}logger[_0xd922('0x11')](_0xd922('0x13'),_0x34acd8,_0x12dde1[_0xd922('0x11')]['message']);return _0x2a0f0c(_0x12dde1[_0xd922('0x11')][_0xd922('0x14')]);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x34acd8,'request\x20sent');_0x2a0f0c(_0x12dde1['result'][_0xd922('0x14')]);}})[_0xd922('0x15')](function(_0x26ee1f){logger[_0xd922('0x11')]('SquareReport,\x20%s,\x20%s',_0x34acd8,_0x26ee1f);_0x5a8fb6(_0x26ee1f);});});}exports[_0xd922('0x16')]=function(_0x169e4e){var _0x44ad9b=this;return new Promise(function(_0x49a20c,_0x2f5b89){return db[_0xd922('0x17')]['create'](_0x169e4e[_0xd922('0x18')],{'raw':_0x169e4e[_0xd922('0x19')]?_0x169e4e[_0xd922('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xd922('0xe')](function(_0x4a2af4){logger[_0xd922('0x1a')](_0xd922('0x16'),_0x169e4e);logger[_0xd922('0x1b')](_0xd922('0x16'),_0x169e4e,JSON[_0xd922('0x1c')](_0x4a2af4));_0x49a20c(_0x4a2af4);})[_0xd922('0x15')](function(_0xca6f4){logger[_0xd922('0x11')](_0xd922('0x16'),_0xca6f4[_0xd922('0x14')],_0x169e4e);_0x2f5b89(_0x44ad9b[_0xd922('0x11')](0x1f4,_0xca6f4['message']));});});};exports[_0xd922('0x1d')]=function(_0x5eeb16){var _0x1b1818=this;return new Promise(function(_0x5d10f9,_0x3c5143){return db[_0xd922('0x17')][_0xd922('0x1e')](_0x5eeb16['body'],{'raw':_0x5eeb16['options']?_0x5eeb16['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5eeb16[_0xd922('0x19')]?_0x5eeb16[_0xd922('0x19')][_0xd922('0x1f')]||null:null,'attributes':_0x5eeb16[_0xd922('0x19')]?_0x5eeb16[_0xd922('0x19')][_0xd922('0x20')]||null:null,'limit':_0x5eeb16['options']?_0x5eeb16['options'][_0xd922('0x21')]||null:null})[_0xd922('0xe')](function(_0x2f58ad){logger[_0xd922('0x1a')](_0xd922('0x1d'),_0x5eeb16);logger[_0xd922('0x1b')](_0xd922('0x1d'),_0x5eeb16,JSON[_0xd922('0x1c')](_0x2f58ad));_0x5d10f9(_0x2f58ad);})[_0xd922('0x15')](function(_0x28bfa4){logger['error']('UpdateSquareReport',_0x28bfa4[_0xd922('0x14')],_0x5eeb16);_0x3c5143(_0x1b1818[_0xd922('0x11')](0x1f4,_0x28bfa4['message']));});});};
\ No newline at end of file
+var _0x0426=['limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw','stringify','UpdateSquareReport','update','where','attributes'];(function(_0x3c5a42,_0x47056e){var _0x22c44f=function(_0x4531e3){while(--_0x4531e3){_0x3c5a42['push'](_0x3c5a42['shift']());}};_0x22c44f(++_0x47056e);}(_0x0426,0x1f0));var _0x6042=function(_0x1102ff,_0x1d2f6f){_0x1102ff=_0x1102ff-0x0;var _0x23e7c9=_0x0426[_0x1102ff];return _0x23e7c9;};'use strict';var _=require(_0x6042('0x0'));var util=require(_0x6042('0x1'));var moment=require(_0x6042('0x2'));var BPromise=require('bluebird');var rs=require(_0x6042('0x3'));var fs=require('fs');var Redis=require(_0x6042('0x4'));var db=require(_0x6042('0x5'))['db'];var utils=require(_0x6042('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x6042('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6042('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x89e468,_0x15a624,_0x3698fa){return new BPromise(function(_0x1ebdc2,_0x5408ed){return client[_0x6042('0x9')](_0x89e468,_0x3698fa)[_0x6042('0xa')](function(_0x1a7ff2){logger[_0x6042('0xb')](_0x6042('0xc'),_0x15a624,_0x6042('0xd'));logger[_0x6042('0xe')](_0x6042('0xf'),_0x15a624,'request\x20sent',JSON['stringify'](_0x1a7ff2));if(_0x1a7ff2[_0x6042('0x10')]){if(_0x1a7ff2[_0x6042('0x10')][_0x6042('0x11')]===0x1f4){logger[_0x6042('0x10')]('SquareReport,\x20%s,\x20%s',_0x15a624,_0x1a7ff2[_0x6042('0x10')][_0x6042('0x12')]);return _0x5408ed(_0x1a7ff2[_0x6042('0x10')][_0x6042('0x12')]);}logger['error'](_0x6042('0xc'),_0x15a624,_0x1a7ff2[_0x6042('0x10')]['message']);return _0x1ebdc2(_0x1a7ff2['error'][_0x6042('0x12')]);}else{logger[_0x6042('0xb')]('SquareReport,\x20%s,\x20%s',_0x15a624,_0x6042('0xd'));_0x1ebdc2(_0x1a7ff2[_0x6042('0x13')]['message']);}})[_0x6042('0x14')](function(_0x4d86e8){logger['error'](_0x6042('0xc'),_0x15a624,_0x4d86e8);_0x5408ed(_0x4d86e8);});});}exports[_0x6042('0x15')]=function(_0x301735){var _0x38560a=this;return new Promise(function(_0x3f03f2,_0x537ed0){return db[_0x6042('0x16')][_0x6042('0x17')](_0x301735[_0x6042('0x18')],{'raw':_0x301735['options']?_0x301735[_0x6042('0x19')][_0x6042('0x1a')]===undefined?!![]:![]:!![]})[_0x6042('0xa')](function(_0x47543b){logger[_0x6042('0xb')](_0x6042('0x15'),_0x301735);logger[_0x6042('0xe')](_0x6042('0x15'),_0x301735,JSON[_0x6042('0x1b')](_0x47543b));_0x3f03f2(_0x47543b);})['catch'](function(_0x15ec74){logger[_0x6042('0x10')](_0x6042('0x15'),_0x15ec74[_0x6042('0x12')],_0x301735);_0x537ed0(_0x38560a[_0x6042('0x10')](0x1f4,_0x15ec74[_0x6042('0x12')]));});});};exports[_0x6042('0x1c')]=function(_0x150138){var _0x277ad3=this;return new Promise(function(_0x2b021b,_0x1ad737){return db[_0x6042('0x16')][_0x6042('0x1d')](_0x150138[_0x6042('0x18')],{'raw':_0x150138['options']?_0x150138[_0x6042('0x19')][_0x6042('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x150138['options']?_0x150138['options'][_0x6042('0x1e')]||null:null,'attributes':_0x150138[_0x6042('0x19')]?_0x150138[_0x6042('0x19')][_0x6042('0x1f')]||null:null,'limit':_0x150138['options']?_0x150138[_0x6042('0x19')][_0x6042('0x20')]||null:null})[_0x6042('0xa')](function(_0x3dce0b){logger['info'](_0x6042('0x1c'),_0x150138);logger[_0x6042('0xe')](_0x6042('0x1c'),_0x150138,JSON[_0x6042('0x1b')](_0x3dce0b));_0x2b021b(_0x3dce0b);})[_0x6042('0x14')](function(_0x3582e9){logger[_0x6042('0x10')](_0x6042('0x1c'),_0x3582e9[_0x6042('0x12')],_0x150138);_0x1ad737(_0x277ad3['error'](0x1f4,_0x3582e9[_0x6042('0x12')]));});});};
\ No newline at end of file
index b1bf2af..6234175 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c66=['isAuthenticated','index','describe','post','create','put','update','delete','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get'];(function(_0x2d1c82,_0x43e3ad){var _0x5c24fc=function(_0x3ea6b5){while(--_0x3ea6b5){_0x2d1c82['push'](_0x2d1c82['shift']());}};_0x5c24fc(++_0x43e3ad);}(_0x8c66,0x73));var _0x68c6=function(_0x11dfbb,_0x1f4c8a){_0x11dfbb=_0x11dfbb-0x0;var _0x22d016=_0x8c66[_0x11dfbb];return _0x22d016;};'use strict';var multer=require(_0x68c6('0x0'));var util=require(_0x68c6('0x1'));var path=require(_0x68c6('0x2'));var timeout=require(_0x68c6('0x3'));var express=require('express');var router=express[_0x68c6('0x4')]();var fs_extra=require(_0x68c6('0x5'));var auth=require(_0x68c6('0x6'));var interaction=require(_0x68c6('0x7'));var config=require(_0x68c6('0x8'));var controller=require(_0x68c6('0x9'));router[_0x68c6('0xa')]('/',auth[_0x68c6('0xb')](),controller[_0x68c6('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x68c6('0xd')]);router[_0x68c6('0xa')]('/:id',auth[_0x68c6('0xb')](),controller['show']);router[_0x68c6('0xe')]('/',auth[_0x68c6('0xb')](),controller[_0x68c6('0xf')]);router[_0x68c6('0x10')]('/:id',auth[_0x68c6('0xb')](),controller[_0x68c6('0x11')]);router[_0x68c6('0x12')](_0x68c6('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0x68c6('0x14')]=router;
\ No newline at end of file
+var _0xe710=['./squareReportDetail.controller','get','isAuthenticated','index','describe','/:id','show','post','put','update','delete','destroy','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3076ed,_0x23db8a){var _0x25a6a9=function(_0x24f0a3){while(--_0x24f0a3){_0x3076ed['push'](_0x3076ed['shift']());}};_0x25a6a9(++_0x23db8a);}(_0xe710,0x91));var _0x0e71=function(_0x599989,_0x5c7a47){_0x599989=_0x599989-0x0;var _0x29fb49=_0xe710[_0x599989];return _0x29fb49;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0e71('0x0'));var timeout=require(_0x0e71('0x1'));var express=require('express');var router=express[_0x0e71('0x2')]();var fs_extra=require(_0x0e71('0x3'));var auth=require(_0x0e71('0x4'));var interaction=require(_0x0e71('0x5'));var config=require(_0x0e71('0x6'));var controller=require(_0x0e71('0x7'));router[_0x0e71('0x8')]('/',auth[_0x0e71('0x9')](),controller[_0x0e71('0xa')]);router[_0x0e71('0x8')]('/describe',auth[_0x0e71('0x9')](),controller[_0x0e71('0xb')]);router[_0x0e71('0x8')](_0x0e71('0xc'),auth[_0x0e71('0x9')](),controller[_0x0e71('0xd')]);router[_0x0e71('0xe')]('/',auth[_0x0e71('0x9')](),controller['create']);router[_0x0e71('0xf')](_0x0e71('0xc'),auth[_0x0e71('0x9')](),controller[_0x0e71('0x10')]);router[_0x0e71('0x11')](_0x0e71('0xc'),auth['isAuthenticated'](),controller[_0x0e71('0x12')]);module['exports']=router;
\ No newline at end of file
index 2c37b46..ad7d283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5922=['sequelize','STRING','TEXT'];(function(_0x4d236d,_0x51d4ae){var _0x2b850b=function(_0x431d06){while(--_0x431d06){_0x4d236d['push'](_0x4d236d['shift']());}};_0x2b850b(++_0x51d4ae);}(_0x5922,0x1c2));var _0x2592=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5922[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x2592('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2592('0x1')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x2592('0x2')]},'project_name':{'type':Sequelize[_0x2592('0x1')]},'callerid':{'type':Sequelize[_0x2592('0x1')]}};
\ No newline at end of file
+var _0xa1dd=['exports','STRING'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xa1dd,0x108));var _0xda1d=function(_0x4d9b18,_0x520bf4){_0x4d9b18=_0x4d9b18-0x0;var _0x30df55=_0xa1dd[_0x4d9b18];return _0x30df55;};'use strict';var Sequelize=require('sequelize');module[_0xda1d('0x0')]={'uniqueid':{'type':Sequelize[_0xda1d('0x1')]},'node':{'type':Sequelize[_0xda1d('0x1')]},'application':{'type':Sequelize[_0xda1d('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0xda1d('0x1')]},'callerid':{'type':Sequelize[_0xda1d('0x1')]}};
\ No newline at end of file
index 7da05cf..5f207c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ac0=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','SquareDetailsReport','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','includeAll','findAll','rows','show','params','options','find','catch','create','body','describe','eml-format','fast-json-patch'];(function(_0x346747,_0x5da1b4){var _0xf871d5=function(_0x543b01){while(--_0x543b01){_0x346747['push'](_0x346747['shift']());}};_0xf871d5(++_0x5da1b4);}(_0x9ac0,0x1c0));var _0x09ac=function(_0x22e418,_0x100250){_0x22e418=_0x22e418-0x0;var _0x14cb2c=_0x9ac0[_0x22e418];return _0x14cb2c;};'use strict';var emlformat=require(_0x09ac('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x09ac('0x1'));var rp=require(_0x09ac('0x2'));var moment=require(_0x09ac('0x3'));var BPromise=require(_0x09ac('0x4'));var Mustache=require(_0x09ac('0x5'));var util=require(_0x09ac('0x6'));var path=require(_0x09ac('0x7'));var sox=require(_0x09ac('0x8'));var csv=require(_0x09ac('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x09ac('0xa'));var _=require(_0x09ac('0xb'));var squel=require(_0x09ac('0xc'));var crypto=require(_0x09ac('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x09ac('0x9'));var querystring=require(_0x09ac('0xe'));var Papa=require(_0x09ac('0xf'));var Redis=require(_0x09ac('0x10'));var authService=require(_0x09ac('0x11'));var qs=require(_0x09ac('0x12'));var as=require(_0x09ac('0x13'));var hardwareService=require(_0x09ac('0x14'));var logger=require(_0x09ac('0x15'))(_0x09ac('0x16'));var utils=require(_0x09ac('0x17'));var config=require(_0x09ac('0x18'));var licenseUtil=require(_0x09ac('0x19'));var db=require(_0x09ac('0x1a'))['db'];function respondWithStatusCode(_0x14c214,_0x361ad2){_0x361ad2=_0x361ad2||0xcc;return function(_0x3d55cb){if(_0x3d55cb){return _0x14c214[_0x09ac('0x1b')](_0x361ad2);}return _0x14c214[_0x09ac('0x1c')](_0x361ad2)[_0x09ac('0x1d')]();};}function respondWithResult(_0x18d905,_0x19f2a2){_0x19f2a2=_0x19f2a2||0xc8;return function(_0x347edf){if(_0x347edf){return _0x18d905['status'](_0x19f2a2)[_0x09ac('0x1e')](_0x347edf);}};}function respondWithFilteredResult(_0xb79a20,_0x30c74c){return function(_0x5f18c1){if(_0x5f18c1){var _0x3f8400=typeof _0x30c74c['offset']===_0x09ac('0x1f')&&typeof _0x30c74c['limit']===_0x09ac('0x1f');var _0xf480=_0x5f18c1['count'];var _0x3fe994=_0x3f8400?0x0:_0x30c74c[_0x09ac('0x20')];var _0x5217f8=_0x3f8400?_0x5f18c1[_0x09ac('0x21')]:_0x30c74c[_0x09ac('0x20')]+_0x30c74c['limit'];var _0x1f193d;if(_0x5217f8>=_0xf480){_0x5217f8=_0xf480;_0x1f193d=0xc8;}else{_0x1f193d=0xce;}_0xb79a20[_0x09ac('0x1c')](_0x1f193d);return _0xb79a20['set'](_0x09ac('0x22'),_0x3fe994+'-'+_0x5217f8+'/'+_0xf480)['json'](_0x5f18c1);}return null;};}function patchUpdates(_0x53af05){return function(_0x48cdec){try{jsonpatch['apply'](_0x48cdec,_0x53af05,!![]);}catch(_0x3dac21){return BPromise[_0x09ac('0x23')](_0x3dac21);}return _0x48cdec[_0x09ac('0x24')]();};}function saveUpdates(_0x2bade8,_0x3c91f4){return function(_0x7547c0){if(_0x7547c0){return _0x7547c0[_0x09ac('0x25')](_0x2bade8)[_0x09ac('0x26')](function(_0x231369){return _0x231369;});}return null;};}function removeEntity(_0x16992b,_0x4d8252){return function(_0x598ed8){if(_0x598ed8){return _0x598ed8[_0x09ac('0x27')]()[_0x09ac('0x26')](function(){_0x16992b['status'](0xcc)[_0x09ac('0x1d')]();});}};}function handleEntityNotFound(_0x13d28e,_0x32c10a){return function(_0x31b960){if(!_0x31b960){_0x13d28e['sendStatus'](0x194);}return _0x31b960;};}function handleError(_0x222003,_0x148056){_0x148056=_0x148056||0x1f4;return function(_0x43c1fb){logger[_0x09ac('0x28')](_0x43c1fb[_0x09ac('0x29')]);if(_0x43c1fb[_0x09ac('0x2a')]){delete _0x43c1fb[_0x09ac('0x2a')];}_0x222003['status'](_0x148056)[_0x09ac('0x2b')](_0x43c1fb);};}exports['index']=function(_0x5acfa4,_0x4dee58){var _0x3ae73c={},_0x110545={},_0x460f67={'count':0x0,'rows':[]};var _0x19c267=_[_0x09ac('0x2c')](db[_0x09ac('0x2d')]['rawAttributes'],function(_0x50d108){return{'name':_0x50d108[_0x09ac('0x2e')],'type':_0x50d108[_0x09ac('0x2f')]['key']};});_0x110545[_0x09ac('0x30')]=_[_0x09ac('0x2c')](_0x19c267,_0x09ac('0x2a'));_0x110545[_0x09ac('0x31')]=_[_0x09ac('0x32')](_0x5acfa4['query']);_0x110545[_0x09ac('0x33')]=_[_0x09ac('0x34')](_0x110545[_0x09ac('0x30')],_0x110545['query']);_0x3ae73c['attributes']=_[_0x09ac('0x34')](_0x110545['model'],qs['fields'](_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x35')]));_0x3ae73c['attributes']=_0x3ae73c[_0x09ac('0x36')][_0x09ac('0x37')]?_0x3ae73c['attributes']:_0x110545[_0x09ac('0x30')];if(!_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x38')]('nolimit')){_0x3ae73c['limit']=qs[_0x09ac('0x39')](_0x5acfa4[_0x09ac('0x31')]['limit']);_0x3ae73c['offset']=qs[_0x09ac('0x20')](_0x5acfa4[_0x09ac('0x31')]['offset']);}_0x3ae73c[_0x09ac('0x3a')]=qs[_0x09ac('0x3b')](_0x5acfa4['query'][_0x09ac('0x3b')]);_0x3ae73c[_0x09ac('0x3c')]=qs[_0x09ac('0x33')](_[_0x09ac('0x3d')](_0x5acfa4[_0x09ac('0x31')],_0x110545[_0x09ac('0x33')]),_0x19c267);if(_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x3e')]){_0x3ae73c[_0x09ac('0x3c')]=_[_0x09ac('0x3f')](_0x3ae73c['where'],{'$or':_[_0x09ac('0x2c')](_0x19c267,function(_0x386f21){if(_0x386f21[_0x09ac('0x2f')]!=='VIRTUAL'){var _0xbcea71={};_0xbcea71[_0x386f21[_0x09ac('0x2a')]]={'$like':'%'+_0x5acfa4[_0x09ac('0x31')]['filter']+'%'};return _0xbcea71;}})});}_0x3ae73c=_['merge']({},_0x3ae73c,_0x5acfa4['options']);var _0x5aeadd={'where':_0x3ae73c[_0x09ac('0x3c')]};return db['SquareDetailsReport'][_0x09ac('0x21')](_0x5aeadd)[_0x09ac('0x26')](function(_0x1a8e19){_0x460f67['count']=_0x1a8e19;if(_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x40')]){_0x3ae73c['include']=[{'all':!![]}];}return db[_0x09ac('0x2d')][_0x09ac('0x41')](_0x3ae73c);})[_0x09ac('0x26')](function(_0x558058){_0x460f67[_0x09ac('0x42')]=_0x558058;return _0x460f67;})[_0x09ac('0x26')](respondWithFilteredResult(_0x4dee58,_0x3ae73c))['catch'](handleError(_0x4dee58,null));};exports[_0x09ac('0x43')]=function(_0x30f684,_0x10fd42){var _0x11dda7={'raw':!![],'where':{'id':_0x30f684[_0x09ac('0x44')]['id']}},_0x1e9238={};_0x1e9238['model']=_['keys'](db[_0x09ac('0x2d')]['rawAttributes']);_0x1e9238['query']=_['keys'](_0x30f684['query']);_0x1e9238[_0x09ac('0x33')]=_[_0x09ac('0x34')](_0x1e9238[_0x09ac('0x30')],_0x1e9238[_0x09ac('0x31')]);_0x11dda7[_0x09ac('0x36')]=_[_0x09ac('0x34')](_0x1e9238['model'],qs['fields'](_0x30f684[_0x09ac('0x31')][_0x09ac('0x35')]));_0x11dda7[_0x09ac('0x36')]=_0x11dda7['attributes'][_0x09ac('0x37')]?_0x11dda7[_0x09ac('0x36')]:_0x1e9238[_0x09ac('0x30')];if(_0x30f684[_0x09ac('0x31')][_0x09ac('0x40')]){_0x11dda7['include']=[{'all':!![]}];}_0x11dda7=_['merge']({},_0x11dda7,_0x30f684[_0x09ac('0x45')]);return db[_0x09ac('0x2d')][_0x09ac('0x46')](_0x11dda7)[_0x09ac('0x26')](handleEntityNotFound(_0x10fd42,null))[_0x09ac('0x26')](respondWithResult(_0x10fd42,null))[_0x09ac('0x47')](handleError(_0x10fd42,null));};exports[_0x09ac('0x48')]=function(_0x584bad,_0x5e84ea){return db[_0x09ac('0x2d')][_0x09ac('0x48')](_0x584bad['body'],{})[_0x09ac('0x26')](respondWithResult(_0x5e84ea,0xc9))[_0x09ac('0x47')](handleError(_0x5e84ea,null));};exports[_0x09ac('0x25')]=function(_0x122f5d,_0x449350){if(_0x122f5d[_0x09ac('0x49')]['id']){delete _0x122f5d[_0x09ac('0x49')]['id'];}return db[_0x09ac('0x2d')][_0x09ac('0x46')]({'where':{'id':_0x122f5d[_0x09ac('0x44')]['id']}})[_0x09ac('0x26')](handleEntityNotFound(_0x449350,null))['then'](saveUpdates(_0x122f5d[_0x09ac('0x49')],null))[_0x09ac('0x26')](respondWithResult(_0x449350,null))[_0x09ac('0x47')](handleError(_0x449350,null));};exports[_0x09ac('0x27')]=function(_0x5322fa,_0x3b48c3){return db['SquareDetailsReport'][_0x09ac('0x46')]({'where':{'id':_0x5322fa['params']['id']}})[_0x09ac('0x26')](handleEntityNotFound(_0x3b48c3,null))[_0x09ac('0x26')](removeEntity(_0x3b48c3,null))[_0x09ac('0x47')](handleError(_0x3b48c3,null));};exports[_0x09ac('0x4a')]=function(_0x432d50,_0x19e734){return db[_0x09ac('0x2d')]['describe']()[_0x09ac('0x26')](respondWithResult(_0x19e734,null))[_0x09ac('0x47')](handleError(_0x19e734,null));};
\ No newline at end of file
+var _0x1d88=['zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','SquareDetailsReport','rawAttributes','fieldName','key','model','map','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','describe','eml-format','rimraf'];(function(_0x1a1fc8,_0x2665db){var _0x4a6327=function(_0x5dd3d1){while(--_0x5dd3d1){_0x1a1fc8['push'](_0x1a1fc8['shift']());}};_0x4a6327(++_0x2665db);}(_0x1d88,0x1d2));var _0x81d8=function(_0x2efc67,_0x2252b9){_0x2efc67=_0x2efc67-0x0;var _0x57f3a9=_0x1d88[_0x2efc67];return _0x57f3a9;};'use strict';var emlformat=require(_0x81d8('0x0'));var rimraf=require(_0x81d8('0x1'));var zipdir=require(_0x81d8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x81d8('0x3'));var moment=require(_0x81d8('0x4'));var BPromise=require(_0x81d8('0x5'));var Mustache=require(_0x81d8('0x6'));var util=require(_0x81d8('0x7'));var path=require(_0x81d8('0x8'));var sox=require(_0x81d8('0x9'));var csv=require(_0x81d8('0xa'));var ejs=require(_0x81d8('0xb'));var fs=require('fs');var fs_extra=require(_0x81d8('0xc'));var _=require(_0x81d8('0xd'));var squel=require(_0x81d8('0xe'));var crypto=require(_0x81d8('0xf'));var jsforce=require(_0x81d8('0x10'));var deskjs=require(_0x81d8('0x11'));var toCsv=require(_0x81d8('0xa'));var querystring=require(_0x81d8('0x12'));var Papa=require(_0x81d8('0x13'));var Redis=require(_0x81d8('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x81d8('0x15'));var as=require(_0x81d8('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x81d8('0x17'))('api');var utils=require(_0x81d8('0x18'));var config=require(_0x81d8('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a4014,_0x4c53ad){_0x4c53ad=_0x4c53ad||0xcc;return function(_0x1a7384){if(_0x1a7384){return _0x2a4014[_0x81d8('0x1a')](_0x4c53ad);}return _0x2a4014['status'](_0x4c53ad)[_0x81d8('0x1b')]();};}function respondWithResult(_0x7f9d88,_0x4b5dc6){_0x4b5dc6=_0x4b5dc6||0xc8;return function(_0x50161d){if(_0x50161d){return _0x7f9d88[_0x81d8('0x1c')](_0x4b5dc6)[_0x81d8('0x1d')](_0x50161d);}};}function respondWithFilteredResult(_0x5a1a40,_0x13f0be){return function(_0x57b0e7){if(_0x57b0e7){var _0x36d2bd=typeof _0x13f0be[_0x81d8('0x1e')]==='undefined'&&typeof _0x13f0be[_0x81d8('0x1f')]===_0x81d8('0x20');var _0x3cce5d=_0x57b0e7['count'];var _0x58eb05=_0x36d2bd?0x0:_0x13f0be[_0x81d8('0x1e')];var _0x2d380c=_0x36d2bd?_0x57b0e7[_0x81d8('0x21')]:_0x13f0be[_0x81d8('0x1e')]+_0x13f0be['limit'];var _0x55971b;if(_0x2d380c>=_0x3cce5d){_0x2d380c=_0x3cce5d;_0x55971b=0xc8;}else{_0x55971b=0xce;}_0x5a1a40[_0x81d8('0x1c')](_0x55971b);return _0x5a1a40[_0x81d8('0x22')]('Content-Range',_0x58eb05+'-'+_0x2d380c+'/'+_0x3cce5d)[_0x81d8('0x1d')](_0x57b0e7);}return null;};}function patchUpdates(_0x4ee223){return function(_0x1bf5c6){try{jsonpatch[_0x81d8('0x23')](_0x1bf5c6,_0x4ee223,!![]);}catch(_0xf5a230){return BPromise[_0x81d8('0x24')](_0xf5a230);}return _0x1bf5c6[_0x81d8('0x25')]();};}function saveUpdates(_0x367cf9,_0x6ce52a){return function(_0x127aee){if(_0x127aee){return _0x127aee[_0x81d8('0x26')](_0x367cf9)['then'](function(_0x1694c4){return _0x1694c4;});}return null;};}function removeEntity(_0x3773fa,_0x212fe3){return function(_0x1d7719){if(_0x1d7719){return _0x1d7719[_0x81d8('0x27')]()[_0x81d8('0x28')](function(){_0x3773fa['status'](0xcc)[_0x81d8('0x1b')]();});}};}function handleEntityNotFound(_0x4b1e38,_0x3f65aa){return function(_0x4e54f4){if(!_0x4e54f4){_0x4b1e38[_0x81d8('0x1a')](0x194);}return _0x4e54f4;};}function handleError(_0x418bfb,_0x2c267b){_0x2c267b=_0x2c267b||0x1f4;return function(_0x51634e){logger[_0x81d8('0x29')](_0x51634e[_0x81d8('0x2a')]);if(_0x51634e[_0x81d8('0x2b')]){delete _0x51634e[_0x81d8('0x2b')];}_0x418bfb[_0x81d8('0x1c')](_0x2c267b)[_0x81d8('0x2c')](_0x51634e);};}exports[_0x81d8('0x2d')]=function(_0x3d406a,_0x9e59eb){var _0x1d05f9={},_0x2c388a={},_0x588472={'count':0x0,'rows':[]};var _0x5a3c67=_['map'](db[_0x81d8('0x2e')][_0x81d8('0x2f')],function(_0x2952d5){return{'name':_0x2952d5[_0x81d8('0x30')],'type':_0x2952d5['type'][_0x81d8('0x31')]};});_0x2c388a[_0x81d8('0x32')]=_[_0x81d8('0x33')](_0x5a3c67,_0x81d8('0x2b'));_0x2c388a['query']=_[_0x81d8('0x34')](_0x3d406a[_0x81d8('0x35')]);_0x2c388a[_0x81d8('0x36')]=_['intersection'](_0x2c388a[_0x81d8('0x32')],_0x2c388a[_0x81d8('0x35')]);_0x1d05f9[_0x81d8('0x37')]=_['intersection'](_0x2c388a[_0x81d8('0x32')],qs['fields'](_0x3d406a[_0x81d8('0x35')][_0x81d8('0x38')]));_0x1d05f9[_0x81d8('0x37')]=_0x1d05f9['attributes'][_0x81d8('0x39')]?_0x1d05f9[_0x81d8('0x37')]:_0x2c388a[_0x81d8('0x32')];if(!_0x3d406a[_0x81d8('0x35')][_0x81d8('0x3a')](_0x81d8('0x3b'))){_0x1d05f9[_0x81d8('0x1f')]=qs[_0x81d8('0x1f')](_0x3d406a[_0x81d8('0x35')][_0x81d8('0x1f')]);_0x1d05f9[_0x81d8('0x1e')]=qs['offset'](_0x3d406a['query']['offset']);}_0x1d05f9['order']=qs['sort'](_0x3d406a[_0x81d8('0x35')]['sort']);_0x1d05f9[_0x81d8('0x3c')]=qs[_0x81d8('0x36')](_[_0x81d8('0x3d')](_0x3d406a[_0x81d8('0x35')],_0x2c388a['filters']),_0x5a3c67);if(_0x3d406a[_0x81d8('0x35')][_0x81d8('0x3e')]){_0x1d05f9[_0x81d8('0x3c')]=_[_0x81d8('0x3f')](_0x1d05f9[_0x81d8('0x3c')],{'$or':_[_0x81d8('0x33')](_0x5a3c67,function(_0x22f5ca){if(_0x22f5ca[_0x81d8('0x40')]!=='VIRTUAL'){var _0x3885ef={};_0x3885ef[_0x22f5ca[_0x81d8('0x2b')]]={'$like':'%'+_0x3d406a['query'][_0x81d8('0x3e')]+'%'};return _0x3885ef;}})});}_0x1d05f9=_[_0x81d8('0x3f')]({},_0x1d05f9,_0x3d406a[_0x81d8('0x41')]);var _0xac8e77={'where':_0x1d05f9[_0x81d8('0x3c')]};return db[_0x81d8('0x2e')][_0x81d8('0x21')](_0xac8e77)[_0x81d8('0x28')](function(_0x5766a7){_0x588472['count']=_0x5766a7;if(_0x3d406a[_0x81d8('0x35')][_0x81d8('0x42')]){_0x1d05f9[_0x81d8('0x43')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x81d8('0x44')](_0x1d05f9);})['then'](function(_0x9354d4){_0x588472[_0x81d8('0x45')]=_0x9354d4;return _0x588472;})[_0x81d8('0x28')](respondWithFilteredResult(_0x9e59eb,_0x1d05f9))[_0x81d8('0x46')](handleError(_0x9e59eb,null));};exports[_0x81d8('0x47')]=function(_0x521272,_0x40ae10){var _0x5237e9={'raw':!![],'where':{'id':_0x521272[_0x81d8('0x48')]['id']}},_0x2a58e8={};_0x2a58e8[_0x81d8('0x32')]=_[_0x81d8('0x34')](db[_0x81d8('0x2e')][_0x81d8('0x2f')]);_0x2a58e8['query']=_[_0x81d8('0x34')](_0x521272[_0x81d8('0x35')]);_0x2a58e8[_0x81d8('0x36')]=_['intersection'](_0x2a58e8[_0x81d8('0x32')],_0x2a58e8[_0x81d8('0x35')]);_0x5237e9[_0x81d8('0x37')]=_[_0x81d8('0x49')](_0x2a58e8['model'],qs['fields'](_0x521272[_0x81d8('0x35')][_0x81d8('0x38')]));_0x5237e9['attributes']=_0x5237e9[_0x81d8('0x37')]['length']?_0x5237e9[_0x81d8('0x37')]:_0x2a58e8[_0x81d8('0x32')];if(_0x521272[_0x81d8('0x35')][_0x81d8('0x42')]){_0x5237e9[_0x81d8('0x43')]=[{'all':!![]}];}_0x5237e9=_[_0x81d8('0x3f')]({},_0x5237e9,_0x521272['options']);return db[_0x81d8('0x2e')][_0x81d8('0x4a')](_0x5237e9)[_0x81d8('0x28')](handleEntityNotFound(_0x40ae10,null))['then'](respondWithResult(_0x40ae10,null))[_0x81d8('0x46')](handleError(_0x40ae10,null));};exports[_0x81d8('0x4b')]=function(_0x39cc58,_0x695aec){return db[_0x81d8('0x2e')]['create'](_0x39cc58[_0x81d8('0x4c')],{})[_0x81d8('0x28')](respondWithResult(_0x695aec,0xc9))[_0x81d8('0x46')](handleError(_0x695aec,null));};exports[_0x81d8('0x26')]=function(_0x2d58f4,_0x4f0aff){if(_0x2d58f4[_0x81d8('0x4c')]['id']){delete _0x2d58f4[_0x81d8('0x4c')]['id'];}return db[_0x81d8('0x2e')]['find']({'where':{'id':_0x2d58f4[_0x81d8('0x48')]['id']}})[_0x81d8('0x28')](handleEntityNotFound(_0x4f0aff,null))[_0x81d8('0x28')](saveUpdates(_0x2d58f4[_0x81d8('0x4c')],null))[_0x81d8('0x28')](respondWithResult(_0x4f0aff,null))[_0x81d8('0x46')](handleError(_0x4f0aff,null));};exports[_0x81d8('0x27')]=function(_0x4e9dba,_0x34327d){return db[_0x81d8('0x2e')][_0x81d8('0x4a')]({'where':{'id':_0x4e9dba[_0x81d8('0x48')]['id']}})['then'](handleEntityNotFound(_0x34327d,null))['then'](removeEntity(_0x34327d,null))['catch'](handleError(_0x34327d,null));};exports[_0x81d8('0x4d')]=function(_0x511ec0,_0x3801f4){return db[_0x81d8('0x2e')][_0x81d8('0x4d')]()['then'](respondWithResult(_0x3801f4,null))[_0x81d8('0x46')](handleError(_0x3801f4,null));};
\ No newline at end of file
index d86dea7..fefaa55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05df=['bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','SquareDetailsReport','lodash','util','api','moment'];(function(_0x359b4f,_0x361a5c){var _0x47c149=function(_0x5d7f60){while(--_0x5d7f60){_0x359b4f['push'](_0x359b4f['shift']());}};_0x47c149(++_0x361a5c);}(_0x05df,0x17c));var _0xf05d=function(_0xa2ffe8,_0x5c8ef1){_0xa2ffe8=_0xa2ffe8-0x0;var _0x2e3ecf=_0x05df[_0xa2ffe8];return _0x2e3ecf;};'use strict';var _=require(_0xf05d('0x0'));var util=require(_0xf05d('0x1'));var logger=require('../../config/logger')(_0xf05d('0x2'));var moment=require(_0xf05d('0x3'));var BPromise=require(_0xf05d('0x4'));var rp=require(_0xf05d('0x5'));var fs=require('fs');var path=require(_0xf05d('0x6'));var rimraf=require(_0xf05d('0x7'));var config=require(_0xf05d('0x8'));var attributes=require(_0xf05d('0x9'));module['exports']=function(_0x59bd5d,_0x5d3669){return _0x59bd5d[_0xf05d('0xa')](_0xf05d('0xb'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9402=['SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./squareReportDetail.attributes','exports','define'];(function(_0x42ebba,_0x4cbf87){var _0x3fd2af=function(_0x26d999){while(--_0x26d999){_0x42ebba['push'](_0x42ebba['shift']());}};_0x3fd2af(++_0x4cbf87);}(_0x9402,0x161));var _0x2940=function(_0xe0d988,_0x6a5342){_0xe0d988=_0xe0d988-0x0;var _0x5cfc8c=_0x9402[_0xe0d988];return _0x5cfc8c;};'use strict';var _=require(_0x2940('0x0'));var util=require(_0x2940('0x1'));var logger=require(_0x2940('0x2'))(_0x2940('0x3'));var moment=require(_0x2940('0x4'));var BPromise=require(_0x2940('0x5'));var rp=require(_0x2940('0x6'));var fs=require('fs');var path=require(_0x2940('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2940('0x8'));module[_0x2940('0x9')]=function(_0x516731,_0x4c7813){return _0x516731[_0x2940('0xa')](_0x2940('0xb'),attributes,{'tableName':_0x2940('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 84e0972..b3563aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236c=['catch','CreateSquareDetailsReport','body','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x236c,0x155));var _0xc236=function(_0x3d2e5e,_0x464b84){_0x3d2e5e=_0x3d2e5e-0x0;var _0x35b963=_0x236c[_0x3d2e5e];return _0x35b963;};'use strict';var _=require(_0xc236('0x0'));var util=require('util');var moment=require(_0xc236('0x1'));var BPromise=require(_0xc236('0x2'));var rs=require(_0xc236('0x3'));var fs=require('fs');var Redis=require(_0xc236('0x4'));var db=require(_0xc236('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc236('0x6'))(_0xc236('0x7'));var config=require(_0xc236('0x8'));var jayson=require(_0xc236('0x9'));var client=jayson[_0xc236('0xa')][_0xc236('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5abd65,_0xd612c6,_0x4d349b){return new BPromise(function(_0x51a13b,_0x5bc6a2){return client['request'](_0x5abd65,_0x4d349b)[_0xc236('0xc')](function(_0x4b8dc6){logger[_0xc236('0xd')](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));logger[_0xc236('0x10')](_0xc236('0x11'),_0xd612c6,'request\x20sent',JSON[_0xc236('0x12')](_0x4b8dc6));if(_0x4b8dc6[_0xc236('0x13')]){if(_0x4b8dc6['error'][_0xc236('0x14')]===0x1f4){logger[_0xc236('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x5bc6a2(_0x4b8dc6['error'][_0xc236('0x15')]);}logger[_0xc236('0x13')](_0xc236('0xe'),_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x51a13b(_0x4b8dc6[_0xc236('0x13')]['message']);}else{logger['info'](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));_0x51a13b(_0x4b8dc6[_0xc236('0x16')][_0xc236('0x15')]);}})[_0xc236('0x17')](function(_0x5ac3ed){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xd612c6,_0x5ac3ed);_0x5bc6a2(_0x5ac3ed);});});}exports[_0xc236('0x18')]=function(_0x76f45){var _0x11ec65=this;return new Promise(function(_0x541a20,_0x13b432){return db['SquareDetailsReport']['create'](_0x76f45[_0xc236('0x19')],{'raw':_0x76f45[_0xc236('0x1a')]?_0x76f45[_0xc236('0x1a')][_0xc236('0x1b')]===undefined?!![]:![]:!![]})[_0xc236('0xc')](function(_0x27c6ab){logger[_0xc236('0xd')](_0xc236('0x18'),_0x76f45);logger[_0xc236('0x10')](_0xc236('0x18'),_0x76f45,JSON[_0xc236('0x12')](_0x27c6ab));_0x541a20(_0x27c6ab);})['catch'](function(_0x208c3f){logger[_0xc236('0x13')](_0xc236('0x18'),_0x208c3f[_0xc236('0x15')],_0x76f45);_0x13b432(_0x11ec65[_0xc236('0x13')](0x1f4,_0x208c3f[_0xc236('0x15')]));});});};
\ No newline at end of file
+var _0xef0f=['SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','options','raw','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0xef0f,0x168));var _0xfef0=function(_0x536a92,_0x4d45d8){_0x536a92=_0x536a92-0x0;var _0x2e071c=_0xef0f[_0x536a92];return _0x2e071c;};'use strict';var _=require(_0xfef0('0x0'));var util=require('util');var moment=require(_0xfef0('0x1'));var BPromise=require(_0xfef0('0x2'));var rs=require(_0xfef0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfef0('0x4'))['db'];var utils=require(_0xfef0('0x5'));var logger=require(_0xfef0('0x6'))('rpc');var config=require(_0xfef0('0x7'));var jayson=require(_0xfef0('0x8'));var client=jayson[_0xfef0('0x9')][_0xfef0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xad43e,_0x11dfd7,_0x5130bd){return new BPromise(function(_0x41ec94,_0x58cf6d){return client[_0xfef0('0xb')](_0xad43e,_0x5130bd)[_0xfef0('0xc')](function(_0x3a81cc){logger[_0xfef0('0xd')](_0xfef0('0xe'),_0x11dfd7,_0xfef0('0xf'));logger[_0xfef0('0x10')](_0xfef0('0x11'),_0x11dfd7,_0xfef0('0xf'),JSON[_0xfef0('0x12')](_0x3a81cc));if(_0x3a81cc[_0xfef0('0x13')]){if(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x14')]===0x1f4){logger[_0xfef0('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x11dfd7,_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);return _0x58cf6d(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);}logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x3a81cc[_0xfef0('0x13')]['message']);return _0x41ec94(_0x3a81cc[_0xfef0('0x13')]['message']);}else{logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x11dfd7,_0xfef0('0xf'));_0x41ec94(_0x3a81cc[_0xfef0('0x16')][_0xfef0('0x15')]);}})[_0xfef0('0x17')](function(_0x2a96d9){logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x2a96d9);_0x58cf6d(_0x2a96d9);});});}exports[_0xfef0('0x18')]=function(_0x581459){var _0xd60678=this;return new Promise(function(_0x1642cd,_0x1577fa){return db[_0xfef0('0x19')][_0xfef0('0x1a')](_0x581459['body'],{'raw':_0x581459[_0xfef0('0x1b')]?_0x581459['options'][_0xfef0('0x1c')]===undefined?!![]:![]:!![]})[_0xfef0('0xc')](function(_0x28dee1){logger['info'](_0xfef0('0x18'),_0x581459);logger['debug'](_0xfef0('0x18'),_0x581459,JSON[_0xfef0('0x12')](_0x28dee1));_0x1642cd(_0x28dee1);})['catch'](function(_0x4897af){logger['error'](_0xfef0('0x18'),_0x4897af['message'],_0x581459);_0x1577fa(_0xd60678[_0xfef0('0x13')](0x1f4,_0x4897af[_0xfef0('0x15')]));});});};
\ No newline at end of file
index d762cec..1550481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ea4=['isAuthenticated','exports','express','Router'];(function(_0x3e25ba,_0x4d5399){var _0x393fb8=function(_0x4fc023){while(--_0x4fc023){_0x3e25ba['push'](_0x3e25ba['shift']());}};_0x393fb8(++_0x4d5399);}(_0x8ea4,0xba));var _0x48ea=function(_0x4ed1d4,_0x512d9a){_0x4ed1d4=_0x4ed1d4-0x0;var _0x28e363=_0x8ea4[_0x4ed1d4];return _0x28e363;};'use strict';var express=require(_0x48ea('0x0'));var router=express[_0x48ea('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/process/:pid/kill',auth[_0x48ea('0x2')](),controller['killProcess']);module[_0x48ea('0x3')]=router;
\ No newline at end of file
+var _0x93c2=['/process/:pid/kill','exports','express','Router','../../components/auth/service','get','isAuthenticated','index'];(function(_0x33573a,_0x3207eb){var _0x119088=function(_0x5c2c21){while(--_0x5c2c21){_0x33573a['push'](_0x33573a['shift']());}};_0x119088(++_0x3207eb);}(_0x93c2,0x122));var _0x293c=function(_0x3cf3d8,_0xb4b6f9){_0x3cf3d8=_0x3cf3d8-0x0;var _0xcf2c17=_0x93c2[_0x3cf3d8];return _0xcf2c17;};'use strict';var express=require(_0x293c('0x0'));var router=express[_0x293c('0x1')]();var auth=require(_0x293c('0x2'));var controller=require('./system.controller');router[_0x293c('0x3')]('/',auth[_0x293c('0x4')](),controller[_0x293c('0x5')]);router['get'](_0x293c('0x6'),auth[_0x293c('0x4')](),controller['killProcess']);module[_0x293c('0x7')]=router;
\ No newline at end of file
index ad0ff7c..a06d199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd8=['json','killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','catch','exec','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','send','index','getAllData','then','status'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdcd8,0x181));var _0x8dcd=function(_0x508acd,_0x852c77){_0x508acd=_0x508acd-0x0;var _0x4e8524=_0xdcd8[_0x508acd];return _0x4e8524;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0x8dcd('0x0')];var logger=require('../../config/logger')('api');var util=require(_0x8dcd('0x1'));var BPromise=require(_0x8dcd('0x2'));var _=require(_0x8dcd('0x3'));function handleError(_0x29b144,_0x118c70,_0x721ce1){_0x118c70=_0x118c70||0x1f4;return function(_0x370428){logger[_0x8dcd('0x4')](_0x8dcd('0x5'),_0x721ce1,_0x118c70,util['inspect'](_0x370428,{'showHidden':![],'depth':null}));delete _0x370428['name'];_0x29b144['status'](_0x118c70)[_0x8dcd('0x6')](_0x370428);};}exports[_0x8dcd('0x7')]=function(_0x89a7dc,_0x171195){return info[_0x8dcd('0x8')]()[_0x8dcd('0x9')](function(_0x2ab2e0){return _0x171195[_0x8dcd('0xa')](0xc8)[_0x8dcd('0xb')](_0x2ab2e0);})['catch'](function(_0x581e46){return _0x171195[_0x8dcd('0xa')](0x1f4)[_0x8dcd('0xb')](_0x581e46);});};exports[_0x8dcd('0xc')]=function(_0x4a475e,_0xa592d2){var _0x22db61=['components/import/cm'];return new BPromise(function(_0x4eddde,_0x3a5800){return exec(util[_0x8dcd('0xd')](_0x8dcd('0xe'),_0x4a475e['params'][_0x8dcd('0xf')]),function(_0x341cf3,_0xf0745c,_0x1bf651){if(_0x341cf3){return _0x3a5800(_0x341cf3);}return _0x4eddde(_0xf0745c);});})[_0x8dcd('0x9')](function(_0xb4b03b){var _0xae40d2=![];var _0x2ebe56=_0xb4b03b['split'](/\n/);for(var _0x3c9772=0x0,_0x2cf252=_0x22db61[_0x8dcd('0x10')];_0x3c9772<_0x2cf252,_0xae40d2===![];_0x3c9772+=0x1){if(_0xb4b03b[_0x8dcd('0x11')](_0x22db61[_0x3c9772])>=0x0){_0xae40d2=!![];}}if(!_0xae40d2){throw new Error(util[_0x8dcd('0xd')](_0x8dcd('0x12'),_0x4a475e[_0x8dcd('0x13')]['pid']));}process[_0x8dcd('0x14')](_0x4a475e[_0x8dcd('0x13')]['pid'],'SIGINT');return _0xa592d2[_0x8dcd('0xa')](0xc8)[_0x8dcd('0xb')]({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x4a475e[_0x8dcd('0x13')][_0x8dcd('0xf')])});})[_0x8dcd('0x15')](handleError(_0xa592d2,null,_0x8dcd('0xc')));};
\ No newline at end of file
+var _0x6aaa=['exec','../../config/logger','api','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','index','getAllData','then','json','catch','format','params','pid','split','length','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x6aaa,0x1e1));var _0xa6aa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6aaa[_0x3dd15e];return _0x231fd0;};'use strict';var info=require(_0xa6aa('0x0'));var exec=require(_0xa6aa('0x1'))[_0xa6aa('0x2')];var logger=require(_0xa6aa('0x3'))(_0xa6aa('0x4'));var util=require('util');var BPromise=require('bluebird');var _=require('lodash');function handleError(_0x1e0a90,_0x1e1ea2,_0x167b1d){_0x1e1ea2=_0x1e1ea2||0x1f4;return function(_0x51cfb8){logger[_0xa6aa('0x5')](_0xa6aa('0x6'),_0x167b1d,_0x1e1ea2,util['inspect'](_0x51cfb8,{'showHidden':![],'depth':null}));delete _0x51cfb8[_0xa6aa('0x7')];_0x1e0a90[_0xa6aa('0x8')](_0x1e1ea2)['send'](_0x51cfb8);};}exports[_0xa6aa('0x9')]=function(_0x1078ec,_0x56054f){return info[_0xa6aa('0xa')]()[_0xa6aa('0xb')](function(_0x2f7456){return _0x56054f['status'](0xc8)[_0xa6aa('0xc')](_0x2f7456);})[_0xa6aa('0xd')](function(_0x64cfa4){return _0x56054f[_0xa6aa('0x8')](0x1f4)[_0xa6aa('0xc')](_0x64cfa4);});};exports['killProcess']=function(_0x105988,_0x30c034){var _0x1f4174=['components/import/cm'];return new BPromise(function(_0x3cbe95,_0x1b2ae1){return exec(util[_0xa6aa('0xe')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x105988[_0xa6aa('0xf')][_0xa6aa('0x10')]),function(_0x473422,_0x28cca4,_0x505246){if(_0x473422){return _0x1b2ae1(_0x473422);}return _0x3cbe95(_0x28cca4);});})['then'](function(_0x9eed27){var _0x1c9a89=![];var _0x1f8503=_0x9eed27[_0xa6aa('0x11')](/\n/);for(var _0x218f74=0x0,_0x324c17=_0x1f4174[_0xa6aa('0x12')];_0x218f74<_0x324c17,_0x1c9a89===![];_0x218f74+=0x1){if(_0x9eed27['indexOf'](_0x1f4174[_0x218f74])>=0x0){_0x1c9a89=!![];}}if(!_0x1c9a89){throw new Error(util[_0xa6aa('0xe')](_0xa6aa('0x13'),_0x105988[_0xa6aa('0xf')][_0xa6aa('0x10')]));}process[_0xa6aa('0x14')](_0x105988[_0xa6aa('0xf')][_0xa6aa('0x10')],_0xa6aa('0x15'));return _0x30c034['status'](0xc8)[_0xa6aa('0xc')]({'message':util[_0xa6aa('0xe')](_0xa6aa('0x16'),_0x105988['params'][_0xa6aa('0x10')])});})[_0xa6aa('0xd')](handleError(_0x30c034,null,'killProcess'));};
\ No newline at end of file
index a32d475..31107d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac19=['create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','index','/:id','show','post','isAuthenticated'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0xac19,0x11d));var _0x9ac1=function(_0x380a93,_0x63d51d){_0x380a93=_0x380a93-0x0;var _0x2be539=_0xac19[_0x380a93];return _0x2be539;};'use strict';var multer=require(_0x9ac1('0x0'));var util=require(_0x9ac1('0x1'));var path=require('path');var timeout=require(_0x9ac1('0x2'));var express=require(_0x9ac1('0x3'));var router=express[_0x9ac1('0x4')]();var fs_extra=require(_0x9ac1('0x5'));var auth=require(_0x9ac1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9ac1('0x7'));var controller=require(_0x9ac1('0x8'));router[_0x9ac1('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ac1('0xa')]);router[_0x9ac1('0x9')](_0x9ac1('0xb'),auth['isAuthenticated'](),controller[_0x9ac1('0xc')]);router[_0x9ac1('0xd')]('/',auth[_0x9ac1('0xe')](),controller[_0x9ac1('0xf')]);router[_0x9ac1('0x10')](_0x9ac1('0xb'),auth[_0x9ac1('0xe')](),controller[_0x9ac1('0x11')]);router['delete'](_0x9ac1('0xb'),auth[_0x9ac1('0xe')](),controller[_0x9ac1('0x12')]);module[_0x9ac1('0x13')]=router;
\ No newline at end of file
+var _0xe798=['multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','isAuthenticated','get','/:id','show','create','put','update','delete','destroy','exports'];(function(_0x3c4516,_0x2a2640){var _0x400e74=function(_0x156a3b){while(--_0x156a3b){_0x3c4516['push'](_0x3c4516['shift']());}};_0x400e74(++_0x2a2640);}(_0xe798,0xe4));var _0x8e79=function(_0x390193,_0x203a4c){_0x390193=_0x390193-0x0;var _0x2681db=_0xe798[_0x390193];return _0x2681db;};'use strict';var multer=require(_0x8e79('0x0'));var util=require(_0x8e79('0x1'));var path=require(_0x8e79('0x2'));var timeout=require('connect-timeout');var express=require(_0x8e79('0x3'));var router=express[_0x8e79('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8e79('0x5'));var interaction=require(_0x8e79('0x6'));var config=require(_0x8e79('0x7'));var controller=require(_0x8e79('0x8'));router['get']('/',auth[_0x8e79('0x9')](),controller['index']);router[_0x8e79('0xa')](_0x8e79('0xb'),auth[_0x8e79('0x9')](),controller[_0x8e79('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8e79('0xd')]);router[_0x8e79('0xe')]('/:id',auth[_0x8e79('0x9')](),controller[_0x8e79('0xf')]);router[_0x8e79('0x10')](_0x8e79('0xb'),auth['isAuthenticated'](),controller[_0x8e79('0x11')]);module[_0x8e79('0x12')]=router;
\ No newline at end of file
index 9b8815a..d1d7985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ed=['STRING','name','sequelize'];(function(_0x4fec12,_0x3ec5bf){var _0x4c8151=function(_0x55a923){while(--_0x55a923){_0x4fec12['push'](_0x4fec12['shift']());}};_0x4c8151(++_0x3ec5bf);}(_0x80ed,0x11c));var _0xd80e=function(_0x38ecf7,_0x58587a){_0x38ecf7=_0x38ecf7-0x0;var _0x4044b0=_0x80ed[_0x38ecf7];return _0x4044b0;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'name':{'type':Sequelize[_0xd80e('0x1')],'unique':_0xd80e('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd80e('0x1')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xd80e('0x1')]}};
\ No newline at end of file
+var _0x1d2d=['sequelize','exports','STRING','name'];(function(_0x4568b4,_0x5b9310){var _0xcf4edb=function(_0x56ff4e){while(--_0x56ff4e){_0x4568b4['push'](_0x4568b4['shift']());}};_0xcf4edb(++_0x5b9310);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x2ed423,_0xf3108d){_0x2ed423=_0x2ed423-0x0;var _0x3cadad=_0x1d2d[_0x2ed423];return _0x3cadad;};'use strict';var Sequelize=require(_0xd1d2('0x0'));module[_0xd1d2('0x1')]={'name':{'type':Sequelize[_0xd1d2('0x2')],'unique':_0xd1d2('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd1d2('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xd1d2('0x2')]}};
\ No newline at end of file
index bf1c833..7c6fec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c3=['key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','UserProfileResource','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','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','update','then','destroy','get','Tags','error','stack','name','send','map','Tag','rawAttributes','fieldName','type'];(function(_0x48dd11,_0x1a546c){var _0x1d3ae2=function(_0x3784d8){while(--_0x3784d8){_0x48dd11['push'](_0x48dd11['shift']());}};_0x1d3ae2(++_0x1a546c);}(_0x07c3,0x1bf));var _0x307c=function(_0x547456,_0x1de17e){_0x547456=_0x547456-0x0;var _0xc1fd7b=_0x07c3[_0x547456];return _0xc1fd7b;};'use strict';var emlformat=require(_0x307c('0x0'));var rimraf=require(_0x307c('0x1'));var zipdir=require(_0x307c('0x2'));var jsonpatch=require(_0x307c('0x3'));var rp=require(_0x307c('0x4'));var moment=require(_0x307c('0x5'));var BPromise=require(_0x307c('0x6'));var Mustache=require(_0x307c('0x7'));var util=require('util');var path=require(_0x307c('0x8'));var sox=require(_0x307c('0x9'));var csv=require(_0x307c('0xa'));var ejs=require(_0x307c('0xb'));var fs=require('fs');var fs_extra=require(_0x307c('0xc'));var _=require(_0x307c('0xd'));var squel=require(_0x307c('0xe'));var crypto=require(_0x307c('0xf'));var jsforce=require(_0x307c('0x10'));var deskjs=require(_0x307c('0x11'));var toCsv=require(_0x307c('0xa'));var querystring=require(_0x307c('0x12'));var Papa=require(_0x307c('0x13'));var Redis=require(_0x307c('0x14'));var authService=require(_0x307c('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x307c('0x16'));var hardwareService=require(_0x307c('0x17'));var logger=require(_0x307c('0x18'))(_0x307c('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x307c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c21fb,_0x1a00ec){_0x1a00ec=_0x1a00ec||0xcc;return function(_0x4d2559){if(_0x4d2559){return _0x3c21fb[_0x307c('0x1b')](_0x1a00ec);}return _0x3c21fb[_0x307c('0x1c')](_0x1a00ec)[_0x307c('0x1d')]();};}function respondWithResult(_0x45ef78,_0x4193d8){_0x4193d8=_0x4193d8||0xc8;return function(_0x2ea8c3){if(_0x2ea8c3){return _0x45ef78[_0x307c('0x1c')](_0x4193d8)[_0x307c('0x1e')](_0x2ea8c3);}};}function respondWithFilteredResult(_0x65678e,_0x38f028){return function(_0x405273){if(_0x405273){var _0x424a74=typeof _0x38f028['offset']===_0x307c('0x1f')&&typeof _0x38f028[_0x307c('0x20')]===_0x307c('0x1f');var _0x2f44ce=_0x405273[_0x307c('0x21')];var _0x2e21a6=_0x424a74?0x0:_0x38f028[_0x307c('0x22')];var _0x13f03b=_0x424a74?_0x405273[_0x307c('0x21')]:_0x38f028['offset']+_0x38f028['limit'];var _0x3bbb1e;if(_0x13f03b>=_0x2f44ce){_0x13f03b=_0x2f44ce;_0x3bbb1e=0xc8;}else{_0x3bbb1e=0xce;}_0x65678e['status'](_0x3bbb1e);return _0x65678e[_0x307c('0x23')]('Content-Range',_0x2e21a6+'-'+_0x13f03b+'/'+_0x2f44ce)['json'](_0x405273);}return null;};}function patchUpdates(_0x4bcc1a){return function(_0x25a503){try{jsonpatch['apply'](_0x25a503,_0x4bcc1a,!![]);}catch(_0x2b07da){return BPromise[_0x307c('0x24')](_0x2b07da);}return _0x25a503['save']();};}function saveUpdates(_0x1cdc48,_0x45fe2){return function(_0x574622){if(_0x574622){return _0x574622[_0x307c('0x25')](_0x1cdc48)[_0x307c('0x26')](function(_0x9a66a0){return _0x9a66a0;});}return null;};}function removeEntity(_0x519985,_0x36802c){return function(_0x2b5f2f){if(_0x2b5f2f){return _0x2b5f2f[_0x307c('0x27')]()[_0x307c('0x26')](function(){var _0xa278fc=_0x2b5f2f[_0x307c('0x28')]({'plain':!![]});var _0x5da864=_0x307c('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x5da864,'resourceId':_0xa278fc['id']}})[_0x307c('0x26')](function(){return _0x2b5f2f;});})[_0x307c('0x26')](function(){_0x519985[_0x307c('0x1c')](0xcc)[_0x307c('0x1d')]();});}};}function handleEntityNotFound(_0x25dede,_0x1591d1){return function(_0x4fd125){if(!_0x4fd125){_0x25dede[_0x307c('0x1b')](0x194);}return _0x4fd125;};}function handleError(_0x181fa2,_0x2ebab3){_0x2ebab3=_0x2ebab3||0x1f4;return function(_0x54da33){logger[_0x307c('0x2a')](_0x54da33[_0x307c('0x2b')]);if(_0x54da33[_0x307c('0x2c')]){delete _0x54da33[_0x307c('0x2c')];}_0x181fa2[_0x307c('0x1c')](_0x2ebab3)[_0x307c('0x2d')](_0x54da33);};}exports['index']=function(_0x1203f6,_0x1e448e){var _0x27dba3={},_0x313fcf={},_0x912246={'count':0x0,'rows':[]};var _0x80a20c=_[_0x307c('0x2e')](db[_0x307c('0x2f')][_0x307c('0x30')],function(_0x55f4c0){return{'name':_0x55f4c0[_0x307c('0x31')],'type':_0x55f4c0[_0x307c('0x32')][_0x307c('0x33')]};});_0x313fcf[_0x307c('0x34')]=_[_0x307c('0x2e')](_0x80a20c,_0x307c('0x2c'));_0x313fcf[_0x307c('0x35')]=_[_0x307c('0x36')](_0x1203f6[_0x307c('0x35')]);_0x313fcf[_0x307c('0x37')]=_[_0x307c('0x38')](_0x313fcf['model'],_0x313fcf[_0x307c('0x35')]);_0x27dba3[_0x307c('0x39')]=_['intersection'](_0x313fcf[_0x307c('0x34')],qs[_0x307c('0x3a')](_0x1203f6['query'][_0x307c('0x3a')]));_0x27dba3['attributes']=_0x27dba3[_0x307c('0x39')][_0x307c('0x3b')]?_0x27dba3[_0x307c('0x39')]:_0x313fcf[_0x307c('0x34')];if(!_0x1203f6[_0x307c('0x35')][_0x307c('0x3c')](_0x307c('0x3d'))){_0x27dba3['limit']=qs[_0x307c('0x20')](_0x1203f6[_0x307c('0x35')][_0x307c('0x20')]);_0x27dba3[_0x307c('0x22')]=qs[_0x307c('0x22')](_0x1203f6[_0x307c('0x35')][_0x307c('0x22')]);}_0x27dba3['order']=qs['sort'](_0x1203f6['query'][_0x307c('0x3e')]);_0x27dba3[_0x307c('0x3f')]=qs[_0x307c('0x37')](_['pick'](_0x1203f6[_0x307c('0x35')],_0x313fcf['filters']),_0x80a20c);if(_0x1203f6[_0x307c('0x35')][_0x307c('0x40')]){_0x27dba3[_0x307c('0x3f')]=_[_0x307c('0x41')](_0x27dba3[_0x307c('0x3f')],{'$or':_[_0x307c('0x2e')](_0x80a20c,function(_0x34fea9){if(_0x34fea9[_0x307c('0x32')]!=='VIRTUAL'){var _0x2d7544={};_0x2d7544[_0x34fea9['name']]={'$like':'%'+_0x1203f6[_0x307c('0x35')]['filter']+'%'};return _0x2d7544;}})});}_0x27dba3=_[_0x307c('0x41')]({},_0x27dba3,_0x1203f6[_0x307c('0x42')]);var _0x25f65e={'where':_0x27dba3[_0x307c('0x3f')]};return db[_0x307c('0x2f')][_0x307c('0x21')](_0x25f65e)[_0x307c('0x26')](function(_0x45cc33){_0x912246[_0x307c('0x21')]=_0x45cc33;if(_0x1203f6[_0x307c('0x35')][_0x307c('0x43')]){_0x27dba3[_0x307c('0x44')]=[{'all':!![]}];}return db['Tag']['findAll'](_0x27dba3);})[_0x307c('0x26')](function(_0x264aa8){_0x912246[_0x307c('0x45')]=_0x264aa8;return _0x912246;})[_0x307c('0x26')](respondWithFilteredResult(_0x1e448e,_0x27dba3))[_0x307c('0x46')](handleError(_0x1e448e,null));};exports[_0x307c('0x47')]=function(_0x4a7f36,_0x492f8d){var _0x104aa4={'raw':!![],'where':{'id':_0x4a7f36[_0x307c('0x48')]['id']}},_0x5d7d0d={};_0x5d7d0d[_0x307c('0x34')]=_[_0x307c('0x36')](db['Tag'][_0x307c('0x30')]);_0x5d7d0d[_0x307c('0x35')]=_[_0x307c('0x36')](_0x4a7f36[_0x307c('0x35')]);_0x5d7d0d[_0x307c('0x37')]=_['intersection'](_0x5d7d0d[_0x307c('0x34')],_0x5d7d0d[_0x307c('0x35')]);_0x104aa4['attributes']=_[_0x307c('0x38')](_0x5d7d0d[_0x307c('0x34')],qs[_0x307c('0x3a')](_0x4a7f36[_0x307c('0x35')][_0x307c('0x3a')]));_0x104aa4[_0x307c('0x39')]=_0x104aa4[_0x307c('0x39')]['length']?_0x104aa4[_0x307c('0x39')]:_0x5d7d0d[_0x307c('0x34')];if(_0x4a7f36[_0x307c('0x35')]['includeAll']){_0x104aa4[_0x307c('0x44')]=[{'all':!![]}];}_0x104aa4=_[_0x307c('0x41')]({},_0x104aa4,_0x4a7f36[_0x307c('0x42')]);return db[_0x307c('0x2f')]['find'](_0x104aa4)[_0x307c('0x26')](handleEntityNotFound(_0x492f8d,null))['then'](respondWithResult(_0x492f8d,null))['catch'](handleError(_0x492f8d,null));};exports['create']=function(_0x26081b,_0x9820dc){return db[_0x307c('0x2f')][_0x307c('0x49')](_0x26081b['body'],{})[_0x307c('0x26')](function(_0x42263f){var _0x398ef5=_0x26081b[_0x307c('0x4a')][_0x307c('0x28')]({'plain':!![]});if(!_0x398ef5)throw new Error(_0x307c('0x4b'));if(_0x398ef5[_0x307c('0x4c')]==='user'){var _0x50876a=_0x42263f[_0x307c('0x28')]({'plain':!![]});var _0x424a92=_0x307c('0x29');return db[_0x307c('0x4d')][_0x307c('0x4e')]({'where':{'name':_0x424a92,'userProfileId':_0x398ef5[_0x307c('0x4f')]},'raw':!![]})[_0x307c('0x26')](function(_0x58e3ff){if(_0x58e3ff&&_0x58e3ff['autoAssociation']===0x0){return db[_0x307c('0x50')][_0x307c('0x49')]({'name':_0x50876a[_0x307c('0x2c')],'resourceId':_0x50876a['id'],'type':_0x58e3ff[_0x307c('0x2c')],'sectionId':_0x58e3ff['id']},{})[_0x307c('0x26')](function(){return _0x42263f;});}else{return _0x42263f;}})['catch'](function(_0x4792a7){logger['error'](_0x307c('0x51'),_0x4792a7);throw _0x4792a7;});}return _0x42263f;})[_0x307c('0x26')](respondWithResult(_0x9820dc,0xc9))['catch'](handleError(_0x9820dc,null));};exports[_0x307c('0x25')]=function(_0x1ce41a,_0x68b3ba){if(_0x1ce41a['body']['id']){delete _0x1ce41a['body']['id'];}return db['Tag'][_0x307c('0x4e')]({'where':{'id':_0x1ce41a[_0x307c('0x48')]['id']}})['then'](handleEntityNotFound(_0x68b3ba,null))['then'](saveUpdates(_0x1ce41a[_0x307c('0x52')],null))[_0x307c('0x26')](respondWithResult(_0x68b3ba,null))['catch'](handleError(_0x68b3ba,null));};exports[_0x307c('0x27')]=function(_0x383260,_0xd27876){return db[_0x307c('0x2f')]['find']({'where':{'id':_0x383260[_0x307c('0x48')]['id']}})[_0x307c('0x26')](handleEntityNotFound(_0xd27876,null))[_0x307c('0x26')](removeEntity(_0xd27876,null))[_0x307c('0x46')](handleError(_0xd27876,null));};
\ No newline at end of file
+var _0xb205=['fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','offset','limit','undefined','count','set','json','reject','update','destroy','then','get','UserProfileResource','end','stack','name','send','map','Tag','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Tags','UserProfileSection','userProfileId','autoAssociation','error','eml-format','rimraf','zip-dir'];(function(_0x2a513d,_0x3b7f32){var _0x367fe7=function(_0x5ae1dd){while(--_0x5ae1dd){_0x2a513d['push'](_0x2a513d['shift']());}};_0x367fe7(++_0x3b7f32);}(_0xb205,0xf0));var _0x5b20=function(_0x54e656,_0x14c8d2){_0x54e656=_0x54e656-0x0;var _0x17406b=_0xb205[_0x54e656];return _0x17406b;};'use strict';var emlformat=require(_0x5b20('0x0'));var rimraf=require(_0x5b20('0x1'));var zipdir=require(_0x5b20('0x2'));var jsonpatch=require(_0x5b20('0x3'));var rp=require(_0x5b20('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5b20('0x5'));var util=require('util');var path=require(_0x5b20('0x6'));var sox=require(_0x5b20('0x7'));var csv=require('to-csv');var ejs=require(_0x5b20('0x8'));var fs=require('fs');var fs_extra=require(_0x5b20('0x9'));var _=require(_0x5b20('0xa'));var squel=require('squel');var crypto=require(_0x5b20('0xb'));var jsforce=require(_0x5b20('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5b20('0xd'));var Papa=require(_0x5b20('0xe'));var Redis=require(_0x5b20('0xf'));var authService=require(_0x5b20('0x10'));var qs=require(_0x5b20('0x11'));var as=require(_0x5b20('0x12'));var hardwareService=require(_0x5b20('0x13'));var logger=require('../../config/logger')(_0x5b20('0x14'));var utils=require(_0x5b20('0x15'));var config=require(_0x5b20('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a13ac,_0x374632){_0x374632=_0x374632||0xcc;return function(_0xf721a0){if(_0xf721a0){return _0x2a13ac[_0x5b20('0x17')](_0x374632);}return _0x2a13ac[_0x5b20('0x18')](_0x374632)['end']();};}function respondWithResult(_0x42fbb0,_0x32c2df){_0x32c2df=_0x32c2df||0xc8;return function(_0x180185){if(_0x180185){return _0x42fbb0[_0x5b20('0x18')](_0x32c2df)['json'](_0x180185);}};}function respondWithFilteredResult(_0x5247f9,_0x25b9ab){return function(_0x47e80f){if(_0x47e80f){var _0x5ac9db=typeof _0x25b9ab[_0x5b20('0x19')]==='undefined'&&typeof _0x25b9ab[_0x5b20('0x1a')]===_0x5b20('0x1b');var _0x3b9e74=_0x47e80f['count'];var _0x44ac15=_0x5ac9db?0x0:_0x25b9ab[_0x5b20('0x19')];var _0x3e37ef=_0x5ac9db?_0x47e80f[_0x5b20('0x1c')]:_0x25b9ab['offset']+_0x25b9ab[_0x5b20('0x1a')];var _0x55ae4d;if(_0x3e37ef>=_0x3b9e74){_0x3e37ef=_0x3b9e74;_0x55ae4d=0xc8;}else{_0x55ae4d=0xce;}_0x5247f9[_0x5b20('0x18')](_0x55ae4d);return _0x5247f9[_0x5b20('0x1d')]('Content-Range',_0x44ac15+'-'+_0x3e37ef+'/'+_0x3b9e74)[_0x5b20('0x1e')](_0x47e80f);}return null;};}function patchUpdates(_0x54cdf3){return function(_0x3b7aea){try{jsonpatch['apply'](_0x3b7aea,_0x54cdf3,!![]);}catch(_0x28fd12){return BPromise[_0x5b20('0x1f')](_0x28fd12);}return _0x3b7aea['save']();};}function saveUpdates(_0x2d404f,_0x52e27f){return function(_0x4f291e){if(_0x4f291e){return _0x4f291e[_0x5b20('0x20')](_0x2d404f)['then'](function(_0x4b4076){return _0x4b4076;});}return null;};}function removeEntity(_0x37ab76,_0x18f555){return function(_0x9301c7){if(_0x9301c7){return _0x9301c7[_0x5b20('0x21')]()[_0x5b20('0x22')](function(){var _0xb0f07e=_0x9301c7[_0x5b20('0x23')]({'plain':!![]});var _0x3bcee0='Tags';return db[_0x5b20('0x24')][_0x5b20('0x21')]({'where':{'type':_0x3bcee0,'resourceId':_0xb0f07e['id']}})[_0x5b20('0x22')](function(){return _0x9301c7;});})[_0x5b20('0x22')](function(){_0x37ab76[_0x5b20('0x18')](0xcc)[_0x5b20('0x25')]();});}};}function handleEntityNotFound(_0x50d335,_0x16ff2d){return function(_0x49a15d){if(!_0x49a15d){_0x50d335[_0x5b20('0x17')](0x194);}return _0x49a15d;};}function handleError(_0x1b8965,_0x1d4c46){_0x1d4c46=_0x1d4c46||0x1f4;return function(_0x516f16){logger['error'](_0x516f16[_0x5b20('0x26')]);if(_0x516f16[_0x5b20('0x27')]){delete _0x516f16['name'];}_0x1b8965['status'](_0x1d4c46)[_0x5b20('0x28')](_0x516f16);};}exports['index']=function(_0x3aee17,_0x13d302){var _0x3f599c={},_0x344688={},_0x5549a3={'count':0x0,'rows':[]};var _0x349abc=_[_0x5b20('0x29')](db[_0x5b20('0x2a')][_0x5b20('0x2b')],function(_0x5ce609){return{'name':_0x5ce609[_0x5b20('0x2c')],'type':_0x5ce609[_0x5b20('0x2d')][_0x5b20('0x2e')]};});_0x344688[_0x5b20('0x2f')]=_[_0x5b20('0x29')](_0x349abc,_0x5b20('0x27'));_0x344688[_0x5b20('0x30')]=_[_0x5b20('0x31')](_0x3aee17[_0x5b20('0x30')]);_0x344688[_0x5b20('0x32')]=_[_0x5b20('0x33')](_0x344688[_0x5b20('0x2f')],_0x344688[_0x5b20('0x30')]);_0x3f599c[_0x5b20('0x34')]=_[_0x5b20('0x33')](_0x344688['model'],qs['fields'](_0x3aee17['query'][_0x5b20('0x35')]));_0x3f599c[_0x5b20('0x34')]=_0x3f599c[_0x5b20('0x34')][_0x5b20('0x36')]?_0x3f599c[_0x5b20('0x34')]:_0x344688['model'];if(!_0x3aee17[_0x5b20('0x30')][_0x5b20('0x37')](_0x5b20('0x38'))){_0x3f599c[_0x5b20('0x1a')]=qs[_0x5b20('0x1a')](_0x3aee17[_0x5b20('0x30')][_0x5b20('0x1a')]);_0x3f599c['offset']=qs['offset'](_0x3aee17['query'][_0x5b20('0x19')]);}_0x3f599c[_0x5b20('0x39')]=qs[_0x5b20('0x3a')](_0x3aee17[_0x5b20('0x30')][_0x5b20('0x3a')]);_0x3f599c[_0x5b20('0x3b')]=qs['filters'](_['pick'](_0x3aee17[_0x5b20('0x30')],_0x344688[_0x5b20('0x32')]),_0x349abc);if(_0x3aee17['query'][_0x5b20('0x3c')]){_0x3f599c[_0x5b20('0x3b')]=_[_0x5b20('0x3d')](_0x3f599c[_0x5b20('0x3b')],{'$or':_[_0x5b20('0x29')](_0x349abc,function(_0x1899e1){if(_0x1899e1[_0x5b20('0x2d')]!==_0x5b20('0x3e')){var _0xce0cec={};_0xce0cec[_0x1899e1[_0x5b20('0x27')]]={'$like':'%'+_0x3aee17[_0x5b20('0x30')][_0x5b20('0x3c')]+'%'};return _0xce0cec;}})});}_0x3f599c=_['merge']({},_0x3f599c,_0x3aee17[_0x5b20('0x3f')]);var _0x14a9a0={'where':_0x3f599c[_0x5b20('0x3b')]};return db[_0x5b20('0x2a')][_0x5b20('0x1c')](_0x14a9a0)[_0x5b20('0x22')](function(_0x452560){_0x5549a3[_0x5b20('0x1c')]=_0x452560;if(_0x3aee17[_0x5b20('0x30')][_0x5b20('0x40')]){_0x3f599c[_0x5b20('0x41')]=[{'all':!![]}];}return db[_0x5b20('0x2a')][_0x5b20('0x42')](_0x3f599c);})[_0x5b20('0x22')](function(_0x831edd){_0x5549a3[_0x5b20('0x43')]=_0x831edd;return _0x5549a3;})[_0x5b20('0x22')](respondWithFilteredResult(_0x13d302,_0x3f599c))[_0x5b20('0x44')](handleError(_0x13d302,null));};exports[_0x5b20('0x45')]=function(_0x106c62,_0x3c90e2){var _0xa30aba={'raw':!![],'where':{'id':_0x106c62[_0x5b20('0x46')]['id']}},_0x13326e={};_0x13326e[_0x5b20('0x2f')]=_[_0x5b20('0x31')](db[_0x5b20('0x2a')]['rawAttributes']);_0x13326e[_0x5b20('0x30')]=_[_0x5b20('0x31')](_0x106c62[_0x5b20('0x30')]);_0x13326e[_0x5b20('0x32')]=_[_0x5b20('0x33')](_0x13326e[_0x5b20('0x2f')],_0x13326e[_0x5b20('0x30')]);_0xa30aba['attributes']=_[_0x5b20('0x33')](_0x13326e[_0x5b20('0x2f')],qs[_0x5b20('0x35')](_0x106c62[_0x5b20('0x30')][_0x5b20('0x35')]));_0xa30aba[_0x5b20('0x34')]=_0xa30aba[_0x5b20('0x34')]['length']?_0xa30aba[_0x5b20('0x34')]:_0x13326e[_0x5b20('0x2f')];if(_0x106c62['query'][_0x5b20('0x40')]){_0xa30aba[_0x5b20('0x41')]=[{'all':!![]}];}_0xa30aba=_['merge']({},_0xa30aba,_0x106c62[_0x5b20('0x3f')]);return db[_0x5b20('0x2a')][_0x5b20('0x47')](_0xa30aba)[_0x5b20('0x22')](handleEntityNotFound(_0x3c90e2,null))[_0x5b20('0x22')](respondWithResult(_0x3c90e2,null))[_0x5b20('0x44')](handleError(_0x3c90e2,null));};exports[_0x5b20('0x48')]=function(_0x36c204,_0x58bd13){return db[_0x5b20('0x2a')][_0x5b20('0x48')](_0x36c204[_0x5b20('0x49')],{})[_0x5b20('0x22')](function(_0x27c4d1){var _0x380d76=_0x36c204['user'][_0x5b20('0x23')]({'plain':!![]});if(!_0x380d76)throw new Error(_0x5b20('0x4a'));if(_0x380d76['role']===_0x5b20('0x4b')){var _0x48d5f2=_0x27c4d1[_0x5b20('0x23')]({'plain':!![]});var _0x3c224d=_0x5b20('0x4c');return db[_0x5b20('0x4d')]['find']({'where':{'name':_0x3c224d,'userProfileId':_0x380d76[_0x5b20('0x4e')]},'raw':!![]})[_0x5b20('0x22')](function(_0x1bcead){if(_0x1bcead&&_0x1bcead[_0x5b20('0x4f')]===0x0){return db[_0x5b20('0x24')][_0x5b20('0x48')]({'name':_0x48d5f2[_0x5b20('0x27')],'resourceId':_0x48d5f2['id'],'type':_0x1bcead['name'],'sectionId':_0x1bcead['id']},{})['then'](function(){return _0x27c4d1;});}else{return _0x27c4d1;}})[_0x5b20('0x44')](function(_0x31d8b2){logger[_0x5b20('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31d8b2);throw _0x31d8b2;});}return _0x27c4d1;})[_0x5b20('0x22')](respondWithResult(_0x58bd13,0xc9))[_0x5b20('0x44')](handleError(_0x58bd13,null));};exports[_0x5b20('0x20')]=function(_0x5ab93d,_0x33ec01){if(_0x5ab93d[_0x5b20('0x49')]['id']){delete _0x5ab93d[_0x5b20('0x49')]['id'];}return db['Tag'][_0x5b20('0x47')]({'where':{'id':_0x5ab93d['params']['id']}})[_0x5b20('0x22')](handleEntityNotFound(_0x33ec01,null))[_0x5b20('0x22')](saveUpdates(_0x5ab93d[_0x5b20('0x49')],null))[_0x5b20('0x22')](respondWithResult(_0x33ec01,null))['catch'](handleError(_0x33ec01,null));};exports[_0x5b20('0x21')]=function(_0x5416ab,_0x15e8a1){return db['Tag']['find']({'where':{'id':_0x5416ab[_0x5b20('0x46')]['id']}})[_0x5b20('0x22')](handleEntityNotFound(_0x15e8a1,null))[_0x5b20('0x22')](removeEntity(_0x15e8a1,null))[_0x5b20('0x44')](handleError(_0x15e8a1,null));};
\ No newline at end of file
index 4c38924..a13f308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ae=['moment','request-promise','path','./tag.attributes','exports','define','tools_tags','../../config/logger','api'];(function(_0x307835,_0x52c3b8){var _0x51797a=function(_0x12f13f){while(--_0x12f13f){_0x307835['push'](_0x307835['shift']());}};_0x51797a(++_0x52c3b8);}(_0x48ae,0xdf));var _0xe48a=function(_0xa2812,_0x4d773d){_0xa2812=_0xa2812-0x0;var _0x2100e1=_0x48ae[_0xa2812];return _0x2100e1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe48a('0x0'))(_0xe48a('0x1'));var moment=require(_0xe48a('0x2'));var BPromise=require('bluebird');var rp=require(_0xe48a('0x3'));var fs=require('fs');var path=require(_0xe48a('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe48a('0x5'));module[_0xe48a('0x6')]=function(_0x42392c,_0x1c9994){return _0x42392c[_0xe48a('0x7')]('Tag',attributes,{'tableName':_0xe48a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa54=['Tag','tools_tags','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','define'];(function(_0x86597b,_0x5ef145){var _0x2ebc7e=function(_0x1800c1){while(--_0x1800c1){_0x86597b['push'](_0x86597b['shift']());}};_0x2ebc7e(++_0x5ef145);}(_0xfa54,0x98));var _0x4fa5=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0xfa54[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0x4fa5('0x0'));var util=require(_0x4fa5('0x1'));var logger=require(_0x4fa5('0x2'))(_0x4fa5('0x3'));var moment=require(_0x4fa5('0x4'));var BPromise=require(_0x4fa5('0x5'));var rp=require(_0x4fa5('0x6'));var fs=require('fs');var path=require(_0x4fa5('0x7'));var rimraf=require(_0x4fa5('0x8'));var config=require(_0x4fa5('0x9'));var attributes=require(_0x4fa5('0xa'));module[_0x4fa5('0xb')]=function(_0x2c805f,_0x121062){return _0x2c805f[_0x4fa5('0xc')](_0x4fa5('0xd'),attributes,{'tableName':_0x4fa5('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18afc8f..f781e25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f3=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','then','info','Tag,\x20%s,\x20%s','Tag,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','util'];(function(_0x466b80,_0x49fb2b){var _0x3804bd=function(_0x2dbb11){while(--_0x2dbb11){_0x466b80['push'](_0x466b80['shift']());}};_0x3804bd(++_0x49fb2b);}(_0x54f3,0x120));var _0x354f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x54f3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x354f('0x0'));var moment=require(_0x354f('0x1'));var BPromise=require(_0x354f('0x2'));var rs=require(_0x354f('0x3'));var fs=require('fs');var Redis=require(_0x354f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x354f('0x5'))(_0x354f('0x6'));var config=require(_0x354f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x354f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51cd16,_0x1da503,_0x4311ad){return new BPromise(function(_0x2f111a,_0x173e1d){return client['request'](_0x51cd16,_0x4311ad)[_0x354f('0x9')](function(_0x5d1e5d){logger[_0x354f('0xa')](_0x354f('0xb'),_0x1da503,'request\x20sent');logger['debug'](_0x354f('0xc'),_0x1da503,_0x354f('0xd'),JSON['stringify'](_0x5d1e5d));if(_0x5d1e5d[_0x354f('0xe')]){if(_0x5d1e5d[_0x354f('0xe')]['code']===0x1f4){logger[_0x354f('0xe')](_0x354f('0xb'),_0x1da503,_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);return _0x173e1d(_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);}logger[_0x354f('0xe')]('Tag,\x20%s,\x20%s',_0x1da503,_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);return _0x2f111a(_0x5d1e5d[_0x354f('0xe')]['message']);}else{logger[_0x354f('0xa')](_0x354f('0xb'),_0x1da503,_0x354f('0xd'));_0x2f111a(_0x5d1e5d['result']['message']);}})[_0x354f('0x10')](function(_0x1d7627){logger[_0x354f('0xe')](_0x354f('0xb'),_0x1da503,_0x1d7627);_0x173e1d(_0x1d7627);});});}
\ No newline at end of file
+var _0x0bde=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','ioredis'];(function(_0x3102ab,_0x481c69){var _0x232720=function(_0x47cdf5){while(--_0x47cdf5){_0x3102ab['push'](_0x3102ab['shift']());}};_0x232720(++_0x481c69);}(_0x0bde,0x110));var _0xe0bd=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0bde[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xe0bd('0x0'));var util=require('util');var moment=require(_0xe0bd('0x1'));var BPromise=require(_0xe0bd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe0bd('0x3'));var db=require(_0xe0bd('0x4'))['db'];var utils=require(_0xe0bd('0x5'));var logger=require('../../config/logger')(_0xe0bd('0x6'));var config=require(_0xe0bd('0x7'));var jayson=require(_0xe0bd('0x8'));var client=jayson[_0xe0bd('0x9')][_0xe0bd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c8892,_0x29faee,_0x1b75c1){return new BPromise(function(_0xf790d6,_0x54d27f){return client[_0xe0bd('0xb')](_0x1c8892,_0x1b75c1)[_0xe0bd('0xc')](function(_0x12a5f1){logger['info'](_0xe0bd('0xd'),_0x29faee,_0xe0bd('0xe'));logger['debug'](_0xe0bd('0xf'),_0x29faee,'request\x20sent',JSON[_0xe0bd('0x10')](_0x12a5f1));if(_0x12a5f1[_0xe0bd('0x11')]){if(_0x12a5f1[_0xe0bd('0x11')][_0xe0bd('0x12')]===0x1f4){logger[_0xe0bd('0x11')](_0xe0bd('0xd'),_0x29faee,_0x12a5f1[_0xe0bd('0x11')]['message']);return _0x54d27f(_0x12a5f1[_0xe0bd('0x11')][_0xe0bd('0x13')]);}logger[_0xe0bd('0x11')]('Tag,\x20%s,\x20%s',_0x29faee,_0x12a5f1[_0xe0bd('0x11')]['message']);return _0xf790d6(_0x12a5f1[_0xe0bd('0x11')][_0xe0bd('0x13')]);}else{logger[_0xe0bd('0x14')](_0xe0bd('0xd'),_0x29faee,_0xe0bd('0xe'));_0xf790d6(_0x12a5f1[_0xe0bd('0x15')][_0xe0bd('0x13')]);}})[_0xe0bd('0x16')](function(_0x4ea791){logger['error'](_0xe0bd('0xd'),_0x29faee,_0x4ea791);_0x54d27f(_0x4ea791);});});}
\ No newline at end of file
index c1a01ac..3d7f298 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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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 f8afa25..c76518e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x200a5a,_0x367318){var _0x56da1c=function(_0x5f6f19){while(--_0x5f6f19){_0x200a5a['push'](_0x200a5a['shift']());}};_0x56da1c(++_0x367318);}(_0x757a,0xde));var _0xa757=function(_0x454661,_0x531af4){_0x454661=_0x454661-0x0;var _0x9a6704=_0x757a[_0x454661];return _0x9a6704;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb7e7=['STRING','sequelize'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xb7e7[_0x5f0089];return _0x193892;};'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
index a96e7d6..3624945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['end','status','json','offset','undefined','limit','count','set','reject','save','destroy','then','get','UserProfileResource','sendStatus','error','name','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','merge','VIRTUAL','options','Team','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getQueues','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','order','where','Queues','addQueues','Sequelize','add','ids','findOne','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','map','Voice','through','penalty','QueueId','User','Queue:save','online','voicePause','interface','UserVoiceQueueRt','isNil','format','SIP/%s','TeamVoiceQueue','all','addAgents','spread','removeAgents','emit','getAgents','filter','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','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','./team.socket','register'];(function(_0x22a929,_0x427ef1){var _0x1cb8ac=function(_0x213471){while(--_0x213471){_0x22a929['push'](_0x22a929['shift']());}};_0x1cb8ac(++_0x427ef1);}(_0xef0f,0x168));var _0xfef0=function(_0x282fee,_0x4202f5){_0x282fee=_0x282fee-0x0;var _0x113e3d=_0xef0f[_0x282fee];return _0x113e3d;};'use strict';var emlformat=require(_0xfef0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfef0('0x1'));var jsonpatch=require(_0xfef0('0x2'));var rp=require(_0xfef0('0x3'));var moment=require('moment');var BPromise=require(_0xfef0('0x4'));var Mustache=require(_0xfef0('0x5'));var util=require(_0xfef0('0x6'));var path=require('path');var sox=require(_0xfef0('0x7'));var csv=require(_0xfef0('0x8'));var ejs=require(_0xfef0('0x9'));var fs=require('fs');var fs_extra=require(_0xfef0('0xa'));var _=require(_0xfef0('0xb'));var squel=require(_0xfef0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfef0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfef0('0x8'));var querystring=require(_0xfef0('0xe'));var Papa=require(_0xfef0('0xf'));var Redis=require(_0xfef0('0x10'));var authService=require(_0xfef0('0x11'));var qs=require(_0xfef0('0x12'));var as=require(_0xfef0('0x13'));var hardwareService=require(_0xfef0('0x14'));var logger=require(_0xfef0('0x15'))(_0xfef0('0x16'));var utils=require(_0xfef0('0x17'));var config=require(_0xfef0('0x18'));var licenseUtil=require(_0xfef0('0x19'));var db=require(_0xfef0('0x1a'))['db'];config['redis']=_[_0xfef0('0x1b')](config[_0xfef0('0x1c')],{'host':_0xfef0('0x1d'),'port':0x18eb});var socket=require(_0xfef0('0x1e'))(new Redis(config[_0xfef0('0x1c')]));require(_0xfef0('0x1f'))[_0xfef0('0x20')](socket);function respondWithStatusCode(_0x573ae7,_0x3d1f02){_0x3d1f02=_0x3d1f02||0xcc;return function(_0x554aaa){if(_0x554aaa){return _0x573ae7['sendStatus'](_0x3d1f02);}return _0x573ae7['status'](_0x3d1f02)[_0xfef0('0x21')]();};}function respondWithResult(_0x284b6d,_0x3510a7){_0x3510a7=_0x3510a7||0xc8;return function(_0x1bce2f){if(_0x1bce2f){return _0x284b6d[_0xfef0('0x22')](_0x3510a7)[_0xfef0('0x23')](_0x1bce2f);}};}function respondWithFilteredResult(_0x155833,_0x2887e6){return function(_0x581459){if(_0x581459){var _0xd60678=typeof _0x2887e6[_0xfef0('0x24')]===_0xfef0('0x25')&&typeof _0x2887e6[_0xfef0('0x26')]===_0xfef0('0x25');var _0x55912f=_0x581459[_0xfef0('0x27')];var _0x4e24de=_0xd60678?0x0:_0x2887e6[_0xfef0('0x24')];var _0x1a0aa0=_0xd60678?_0x581459[_0xfef0('0x27')]:_0x2887e6['offset']+_0x2887e6[_0xfef0('0x26')];var _0x4c304d;if(_0x1a0aa0>=_0x55912f){_0x1a0aa0=_0x55912f;_0x4c304d=0xc8;}else{_0x4c304d=0xce;}_0x155833[_0xfef0('0x22')](_0x4c304d);return _0x155833[_0xfef0('0x28')]('Content-Range',_0x4e24de+'-'+_0x1a0aa0+'/'+_0x55912f)['json'](_0x581459);}return null;};}function patchUpdates(_0x4b8b22){return function(_0x19fde8){try{jsonpatch['apply'](_0x19fde8,_0x4b8b22,!![]);}catch(_0x1f9970){return BPromise[_0xfef0('0x29')](_0x1f9970);}return _0x19fde8[_0xfef0('0x2a')]();};}function saveUpdates(_0x4483f2,_0x249fe4){return function(_0xd687ed){if(_0xd687ed){return _0xd687ed['update'](_0x4483f2)['then'](function(_0x316e20){return _0x316e20;});}return null;};}function removeEntity(_0x1ffaa4,_0x924f6e){return function(_0x34ca65){if(_0x34ca65){return _0x34ca65[_0xfef0('0x2b')]()[_0xfef0('0x2c')](function(){var _0x5df04f=_0x34ca65[_0xfef0('0x2d')]({'plain':!![]});var _0x391279='Teams';return db[_0xfef0('0x2e')][_0xfef0('0x2b')]({'where':{'type':_0x391279,'resourceId':_0x5df04f['id']}})[_0xfef0('0x2c')](function(){return _0x34ca65;});})[_0xfef0('0x2c')](function(){_0x1ffaa4[_0xfef0('0x22')](0xcc)[_0xfef0('0x21')]();});}};}function handleEntityNotFound(_0x3e3c4c,_0x3e026a){return function(_0x26cb9a){if(!_0x26cb9a){_0x3e3c4c[_0xfef0('0x2f')](0x194);}return _0x26cb9a;};}function handleError(_0x3ee42f,_0x3ffea0){_0x3ffea0=_0x3ffea0||0x1f4;return function(_0x51af0f){logger[_0xfef0('0x30')](_0x51af0f['stack']);if(_0x51af0f['name']){delete _0x51af0f[_0xfef0('0x31')];}_0x3ee42f[_0xfef0('0x22')](_0x3ffea0)['send'](_0x51af0f);};}exports['index']=function(_0x5cf518,_0x4f65cd){var _0x4cce8a={},_0x417535={},_0x172d94={'count':0x0,'rows':[]};var _0x2fffae=_['map'](db['Team']['rawAttributes'],function(_0x1f8110){return{'name':_0x1f8110['fieldName'],'type':_0x1f8110[_0xfef0('0x32')][_0xfef0('0x33')]};});_0x417535[_0xfef0('0x34')]=_['map'](_0x2fffae,_0xfef0('0x31'));_0x417535['query']=_[_0xfef0('0x35')](_0x5cf518[_0xfef0('0x36')]);_0x417535[_0xfef0('0x37')]=_[_0xfef0('0x38')](_0x417535[_0xfef0('0x34')],_0x417535[_0xfef0('0x36')]);_0x4cce8a[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x417535['model'],qs[_0xfef0('0x3a')](_0x5cf518[_0xfef0('0x36')][_0xfef0('0x3a')]));_0x4cce8a[_0xfef0('0x39')]=_0x4cce8a[_0xfef0('0x39')][_0xfef0('0x3b')]?_0x4cce8a[_0xfef0('0x39')]:_0x417535[_0xfef0('0x34')];if(!_0x5cf518[_0xfef0('0x36')][_0xfef0('0x3c')](_0xfef0('0x3d'))){_0x4cce8a[_0xfef0('0x26')]=qs[_0xfef0('0x26')](_0x5cf518['query'][_0xfef0('0x26')]);_0x4cce8a['offset']=qs[_0xfef0('0x24')](_0x5cf518[_0xfef0('0x36')][_0xfef0('0x24')]);}_0x4cce8a['order']=qs[_0xfef0('0x3e')](_0x5cf518[_0xfef0('0x36')][_0xfef0('0x3e')]);_0x4cce8a['where']=qs[_0xfef0('0x37')](_[_0xfef0('0x3f')](_0x5cf518[_0xfef0('0x36')],_0x417535['filters']),_0x2fffae);if(_0x5cf518[_0xfef0('0x36')]['filter']){_0x4cce8a['where']=_[_0xfef0('0x40')](_0x4cce8a['where'],{'$or':_['map'](_0x2fffae,function(_0xbf6ddd){if(_0xbf6ddd[_0xfef0('0x32')]!==_0xfef0('0x41')){var _0x1a6593={};_0x1a6593[_0xbf6ddd[_0xfef0('0x31')]]={'$like':'%'+_0x5cf518[_0xfef0('0x36')]['filter']+'%'};return _0x1a6593;}})});}_0x4cce8a=_[_0xfef0('0x40')]({},_0x4cce8a,_0x5cf518[_0xfef0('0x42')]);var _0x5a9ed3={'where':_0x4cce8a['where']};return db[_0xfef0('0x43')]['count'](_0x5a9ed3)[_0xfef0('0x2c')](function(_0x22c940){_0x172d94[_0xfef0('0x27')]=_0x22c940;if(_0x5cf518[_0xfef0('0x36')][_0xfef0('0x44')]){_0x4cce8a[_0xfef0('0x45')]=[{'all':!![]}];}return db[_0xfef0('0x43')][_0xfef0('0x46')](_0x4cce8a);})['then'](function(_0x1813dc){_0x172d94['rows']=_0x1813dc;return _0x172d94;})['then'](respondWithFilteredResult(_0x4f65cd,_0x4cce8a))[_0xfef0('0x47')](handleError(_0x4f65cd,null));};exports[_0xfef0('0x48')]=function(_0x5bf416,_0x2af79f){var _0x5587a9={'raw':![],'where':{'id':_0x5bf416[_0xfef0('0x49')]['id']}},_0x39df7c={};_0x39df7c[_0xfef0('0x34')]=_[_0xfef0('0x35')](db['Team'][_0xfef0('0x4a')]);_0x39df7c[_0xfef0('0x36')]=_['keys'](_0x5bf416['query']);_0x39df7c[_0xfef0('0x37')]=_['intersection'](_0x39df7c[_0xfef0('0x34')],_0x39df7c[_0xfef0('0x36')]);_0x5587a9[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x39df7c[_0xfef0('0x34')],qs[_0xfef0('0x3a')](_0x5bf416['query'][_0xfef0('0x3a')]));_0x5587a9['attributes']=_0x5587a9['attributes'][_0xfef0('0x3b')]?_0x5587a9[_0xfef0('0x39')]:_0x39df7c[_0xfef0('0x34')];if(_0x5bf416['query'][_0xfef0('0x44')]){_0x5587a9['include']=[{'all':!![]}];}_0x5587a9=_['merge']({},_0x5587a9,_0x5bf416['options']);return db[_0xfef0('0x43')][_0xfef0('0x4b')](_0x5587a9)[_0xfef0('0x2c')](handleEntityNotFound(_0x2af79f,null))[_0xfef0('0x2c')](respondWithResult(_0x2af79f,null))[_0xfef0('0x47')](handleError(_0x2af79f,null));};exports[_0xfef0('0x4c')]=function(_0x1b78af,_0x3853bb){return db[_0xfef0('0x43')]['create'](_0x1b78af['body'],{})[_0xfef0('0x2c')](function(_0x18e5ba){var _0x34e9ed=_0x1b78af[_0xfef0('0x4d')][_0xfef0('0x2d')]({'plain':!![]});if(!_0x34e9ed)throw new Error(_0xfef0('0x4e'));if(_0x34e9ed[_0xfef0('0x4f')]===_0xfef0('0x4d')){var _0x5e989f=_0x18e5ba[_0xfef0('0x2d')]({'plain':!![]});var _0x19e449=_0xfef0('0x50');return db[_0xfef0('0x51')][_0xfef0('0x4b')]({'where':{'name':_0x19e449,'userProfileId':_0x34e9ed['userProfileId']},'raw':!![]})['then'](function(_0x523763){if(_0x523763&&_0x523763[_0xfef0('0x52')]===0x0){return db[_0xfef0('0x2e')][_0xfef0('0x4c')]({'name':_0x5e989f[_0xfef0('0x31')],'resourceId':_0x5e989f['id'],'type':_0x523763['name'],'sectionId':_0x523763['id']},{})[_0xfef0('0x2c')](function(){return _0x18e5ba;});}else{return _0x18e5ba;}})[_0xfef0('0x47')](function(_0x302908){logger[_0xfef0('0x30')](_0xfef0('0x53'),_0x302908);throw _0x302908;});}return _0x18e5ba;})[_0xfef0('0x2c')](respondWithResult(_0x3853bb,0xc9))[_0xfef0('0x47')](handleError(_0x3853bb,null));};exports['update']=function(_0x3458b0,_0x163255){if(_0x3458b0['body']['id']){delete _0x3458b0[_0xfef0('0x54')]['id'];}return db['Team'][_0xfef0('0x4b')]({'where':{'id':_0x3458b0[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x163255,null))[_0xfef0('0x2c')](saveUpdates(_0x3458b0['body'],null))['then'](respondWithResult(_0x163255,null))['catch'](handleError(_0x163255,null));};exports[_0xfef0('0x2b')]=function(_0x1db467,_0x455923){return db[_0xfef0('0x43')][_0xfef0('0x4b')]({'where':{'id':_0x1db467[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x455923,null))[_0xfef0('0x2c')](removeEntity(_0x455923,null))[_0xfef0('0x47')](handleError(_0x455923,null));};exports[_0xfef0('0x55')]=function(_0x45abb3,_0x21fd2b,_0x58d95e){return db[_0xfef0('0x43')]['findOne']({'where':{'id':_0x45abb3[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x21fd2b,null))[_0xfef0('0x2c')](function(_0x851e97){if(!_0x45abb3[_0xfef0('0x36')][_0xfef0('0x56')]||!utils[_0xfef0('0x57')](_0x45abb3['query'][_0xfef0('0x56')])){throw new db['Sequelize'][(_0xfef0('0x58'))](_0xfef0('0x59'));}var _0x4a4d36={};var _0x3a12c5={};_0x3a12c5[_0xfef0('0x34')]=_[_0xfef0('0x35')](db[_[_0xfef0('0x5a')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x56')][_0xfef0('0x5b')]())+_0xfef0('0x5c')][_0xfef0('0x4a')]);_0x3a12c5[_0xfef0('0x36')]=_[_0xfef0('0x35')](_0x45abb3[_0xfef0('0x36')]);_0x3a12c5['filters']=_[_0xfef0('0x38')](_0x3a12c5[_0xfef0('0x34')],_0x3a12c5[_0xfef0('0x36')]);_0x4a4d36[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x3a12c5['model'],qs[_0xfef0('0x3a')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x3a')]));_0x4a4d36[_0xfef0('0x39')]=_0x4a4d36[_0xfef0('0x39')][_0xfef0('0x3b')]?_0x4a4d36[_0xfef0('0x39')]:_0x3a12c5[_0xfef0('0x34')];_0x4a4d36[_0xfef0('0x26')]=qs[_0xfef0('0x26')](_0x45abb3['query'][_0xfef0('0x26')]);_0x4a4d36['offset']=qs[_0xfef0('0x24')](_0x45abb3[_0xfef0('0x36')]['offset']);_0x4a4d36[_0xfef0('0x5d')]=qs[_0xfef0('0x3e')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x3e')]);_0x4a4d36[_0xfef0('0x5e')]=qs['filters'](_[_0xfef0('0x3f')](_0x45abb3[_0xfef0('0x36')],_0x3a12c5[_0xfef0('0x37')]));_0x4a4d36=_['merge']({},_0x4a4d36,_0x45abb3[_0xfef0('0x42')]);return _0x851e97[_0xfef0('0x2d')+_[_0xfef0('0x5a')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x56')][_0xfef0('0x5b')]())+_0xfef0('0x5f')](_0x4a4d36);})['then'](respondWithResult(_0x21fd2b,null))[_0xfef0('0x47')](handleError(_0x21fd2b,null));};exports[_0xfef0('0x60')]=function(_0x3cd0c5,_0x350ca1,_0x317eda){return db[_0xfef0('0x43')]['findOne']({'where':{'id':_0x3cd0c5[_0xfef0('0x49')]['id']}})[_0xfef0('0x2c')](function(_0x100fc4){if(_0x100fc4){if(!_0x3cd0c5[_0xfef0('0x54')]['channel']||!utils[_0xfef0('0x57')](_0x3cd0c5[_0xfef0('0x54')]['channel'])){throw new db[(_0xfef0('0x61'))][(_0xfef0('0x58'))](_0xfef0('0x59'));}return _0x100fc4[_0xfef0('0x62')+_[_0xfef0('0x5a')](_0x3cd0c5['body']['channel']['toLowerCase']())+_0xfef0('0x5f')](_0x3cd0c5[_0xfef0('0x54')][_0xfef0('0x63')]);}return null;})['then'](handleEntityNotFound(_0x350ca1,null))[_0xfef0('0x2c')](respondWithStatusCode(_0x350ca1,null))['catch'](handleError(_0x350ca1,null));};exports['removeQueues']=function(_0x519efe,_0x2a92de,_0x1cf182){return db['Team'][_0xfef0('0x64')]({'where':{'id':_0x519efe[_0xfef0('0x49')]['id']}})[_0xfef0('0x2c')](function(_0x4a0460){if(_0x4a0460){if(!_0x519efe[_0xfef0('0x36')]['channel']||!utils['isValidChannel'](_0x519efe[_0xfef0('0x36')][_0xfef0('0x56')])){throw new db[(_0xfef0('0x61'))][(_0xfef0('0x58'))]('Unknown\x20channel');}return _0x4a0460['remove'+_['capitalize'](_0x519efe[_0xfef0('0x36')]['channel'][_0xfef0('0x5b')]())+_0xfef0('0x5f')](_0x519efe[_0xfef0('0x36')][_0xfef0('0x63')]);}return null;})[_0xfef0('0x2c')](handleEntityNotFound(_0x2a92de,null))['then'](respondWithStatusCode(_0x2a92de,null))[_0xfef0('0x47')](handleError(_0x2a92de,null));};exports['addAgents']=function(_0x5b9138,_0x2260e3){return db[_0xfef0('0x43')][_0xfef0('0x4b')]({'where':{'id':_0x5b9138[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x2260e3,null))['then'](function(_0x40ee27){if(_0x40ee27){var _0x3039a0=['Voice',_0xfef0('0x65'),_0xfef0('0x66'),_0xfef0('0x67'),_0xfef0('0x68'),_0xfef0('0x69'),_0xfef0('0x6a')];return db[_0xfef0('0x6b')][_0xfef0('0x6c')](function(_0x3e140f){var _0x52fe45=_[_0xfef0('0x6d')](_0x3039a0,function(_0x1fd223){var _0x3c1136={'attributes':['id',_0xfef0('0x31')]};if(_0x1fd223===_0xfef0('0x6e')){_0x3c1136[_0xfef0('0x6f')]={'attributes':[_0xfef0('0x70')]};}return _0x40ee27['get'+_0x1fd223+_0xfef0('0x5f')](_0x3c1136)[_0xfef0('0x2c')](function(_0x196d03){var _0x29d397=_[_0xfef0('0x6d')](_0x196d03,function(_0xa93548){var _0x2fb34a=_[_0xfef0('0x6d')](_0x5b9138[_0xfef0('0x54')][_0xfef0('0x63')],function(_0x1f2413){var _0x17c350={'where':{'UserId':_0x1f2413,[_0x1fd223+_0xfef0('0x71')]:_0xa93548['id']},'transaction':_0x3e140f};if(_0x1fd223==='Voice'){_0x17c350[_0xfef0('0x1b')]={'penalty':_0xa93548['TeamVoiceQueue']['penalty']};}return db[_0xfef0('0x72')+_0x1fd223+_0xfef0('0x5c')]['findOrCreate'](_0x17c350)[_0xfef0('0x2c')](function(){socket['emit']('user'+_0x1fd223+_0xfef0('0x73'),{'UserId':_0x1f2413,[_0x1fd223+_0xfef0('0x71')]:_0xa93548['id']});if(_0x1fd223!==_0xfef0('0x6e'))return;return db[_0xfef0('0x72')]['findAll']({'where':{'id':_0x5b9138[_0xfef0('0x54')][_0xfef0('0x63')],'online':0x1},'attributes':['id','name',_0xfef0('0x74'),_0xfef0('0x75'),_0xfef0('0x76')],'raw':!![]})['then'](function(_0x5842fc){var _0x3c6d6f=_['map'](_0x5842fc,function(_0x48f207){return db[_0xfef0('0x77')]['upsert']({'membername':_0x48f207[_0xfef0('0x31')],'UserId':_0x48f207['id'],'queue_name':_0xa93548[_0xfef0('0x31')],'VoiceQueueId':_0xa93548['id'],'interface':_[_0xfef0('0x78')](_0x48f207[_0xfef0('0x76')])?util[_0xfef0('0x79')](_0xfef0('0x7a'),_0x48f207[_0xfef0('0x31')]):_0x48f207[_0xfef0('0x76')],'paused':_0x48f207[_0xfef0('0x75')]||![],'penalty':_0xa93548[_0xfef0('0x7b')]['penalty']},{'transaction':_0x3e140f});});return Promise[_0xfef0('0x7c')](_0x3c6d6f);});});});return Promise['all'](_0x2fb34a);});return Promise['all'](_0x29d397);});});return Promise[_0xfef0('0x7c')](_0x52fe45)['then'](function(){return _0x40ee27[_0xfef0('0x7d')](_0x5b9138[_0xfef0('0x54')][_0xfef0('0x63')],{'transaction':_0x3e140f})[_0xfef0('0x7e')](function(_0x2e5aeb){return _0x2e5aeb;});});});}})[_0xfef0('0x2c')](respondWithResult(_0x2260e3,null))['catch'](handleError(_0x2260e3,null));};exports[_0xfef0('0x7f')]=function(_0x211577,_0x138be3){return db[_0xfef0('0x43')][_0xfef0('0x4b')]({'where':{'id':_0x211577[_0xfef0('0x49')]['id']}})[_0xfef0('0x2c')](handleEntityNotFound(_0x138be3,null))[_0xfef0('0x2c')](function(_0x52e982){if(_0x52e982){var _0x439909=[_0xfef0('0x6e'),'Chat',_0xfef0('0x66'),_0xfef0('0x67'),_0xfef0('0x68'),'Openchannel',_0xfef0('0x6a')];return db['sequelize'][_0xfef0('0x6c')](function(_0x5ec7d2){var _0x4ff342=_[_0xfef0('0x6d')](_0x439909,function(_0x51f79b){var _0x1fa881={'attributes':['id',_0xfef0('0x31')]};return _0x52e982[_0xfef0('0x2d')+_0x51f79b+_0xfef0('0x5f')](_0x1fa881)[_0xfef0('0x2c')](function(_0x306319){var _0x2a27fe=_[_0xfef0('0x6d')](_0x306319,function(_0x269d51){return _0x269d51[_0xfef0('0x7f')](_0x211577[_0xfef0('0x36')]['ids'],{'transaction':_0x5ec7d2})[_0xfef0('0x2c')](function(){var _0x48d36d=JSON['parse']('['+_0x211577[_0xfef0('0x36')]['ids']+']');var _0x3567d8=_['map'](_0x48d36d,function(_0x4eae82){socket[_0xfef0('0x80')]('user'+_0x51f79b+'Queue:remove',{'UserId':Number(_0x4eae82),[_0x51f79b+'QueueId']:_0x269d51['id']});if(_0x51f79b!==_0xfef0('0x6e'))return;return db[_0xfef0('0x77')][_0xfef0('0x2b')]({'where':{'VoiceQueueId':_0x269d51['id'],'UserId':_0x4eae82},'transaction':_0x5ec7d2});});return Promise[_0xfef0('0x7c')](_0x3567d8);});});return Promise['all'](_0x2a27fe);});});return Promise[_0xfef0('0x7c')](_0x4ff342)[_0xfef0('0x2c')](function(){return _0x52e982[_0xfef0('0x7f')](_0x211577[_0xfef0('0x36')][_0xfef0('0x63')],{'transaction':_0x5ec7d2});});});}})['then'](respondWithStatusCode(_0x138be3,null))['catch'](handleError(_0x138be3,null));};exports[_0xfef0('0x81')]=function(_0x1e595c,_0x5ab4ce,_0x2780ba){var _0x359b24={};var _0x3be21b={};var _0x10ff58;var _0x69217d;return db[_0xfef0('0x43')][_0xfef0('0x64')]({'where':{'id':_0x1e595c[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x5ab4ce,null))['then'](function(_0x3e267c){if(_0x3e267c){_0x10ff58=_0x3e267c;_0x3be21b[_0xfef0('0x34')]=_[_0xfef0('0x35')](db[_0xfef0('0x72')][_0xfef0('0x4a')]);_0x3be21b[_0xfef0('0x36')]=_[_0xfef0('0x35')](_0x1e595c[_0xfef0('0x36')]);_0x3be21b['filters']=_['intersection'](_0x3be21b[_0xfef0('0x34')],_0x3be21b[_0xfef0('0x36')]);_0x359b24[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x3be21b[_0xfef0('0x34')],qs[_0xfef0('0x3a')](_0x1e595c['query'][_0xfef0('0x3a')]));_0x359b24[_0xfef0('0x39')]=_0x359b24['attributes'][_0xfef0('0x3b')]?_0x359b24[_0xfef0('0x39')]:_0x3be21b[_0xfef0('0x34')];_0x359b24[_0xfef0('0x5d')]=qs[_0xfef0('0x3e')](_0x1e595c[_0xfef0('0x36')]['sort']);_0x359b24['where']=qs[_0xfef0('0x37')](_[_0xfef0('0x3f')](_0x1e595c[_0xfef0('0x36')],_0x3be21b[_0xfef0('0x37')]));if(_0x1e595c[_0xfef0('0x36')][_0xfef0('0x82')]){_0x359b24['where']=_[_0xfef0('0x40')](_0x359b24['where'],{'$or':_[_0xfef0('0x6d')](_0x359b24['attributes'],function(_0x22f544){var _0x8826ff={};_0x8826ff[_0x22f544]={'$like':'%'+_0x1e595c['query'][_0xfef0('0x82')]+'%'};return _0x8826ff;})});}_0x359b24=_[_0xfef0('0x40')]({},_0x359b24,_0x1e595c[_0xfef0('0x42')]);return _0x10ff58['getAgents'](_0x359b24);}})['then'](function(_0x57083a){if(_0x57083a){_0x69217d=_0x57083a[_0xfef0('0x3b')];if(!_0x1e595c['query'][_0xfef0('0x3c')](_0xfef0('0x3d'))){_0x359b24['limit']=qs[_0xfef0('0x26')](_0x1e595c['query'][_0xfef0('0x26')]);_0x359b24[_0xfef0('0x24')]=qs[_0xfef0('0x24')](_0x1e595c[_0xfef0('0x36')][_0xfef0('0x24')]);}return _0x10ff58[_0xfef0('0x81')](_0x359b24);}})[_0xfef0('0x2c')](function(_0x53ecba){if(_0x53ecba){return _0x53ecba?{'count':_0x69217d,'rows':_0x53ecba}:null;}})[_0xfef0('0x2c')](respondWithResult(_0x5ab4ce,null))[_0xfef0('0x47')](handleError(_0x5ab4ce,null));};
\ No newline at end of file
+var _0xedb9=['isValidChannel','Sequelize','ValidationError','Unknown\x20channel','toLowerCase','Queue','pick','capitalize','Queues','addQueues','add','ids','removeQueues','remove','addAgents','isArray','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','Voice','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','UserVoicePrefix','VoicePrefixId','removeAgents','getAgents','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','end','status','undefined','limit','count','offset','set','json','reject','save','update','then','destroy','get','Teams','UserProfileResource','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','options','Team','includeAll','include','findAll','rows','catch','show','params','keys','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getQueues','findOne','channel'];(function(_0x22a8c4,_0x51c09a){var _0x104c6d=function(_0x4d4d3d){while(--_0x4d4d3d){_0x22a8c4['push'](_0x22a8c4['shift']());}};_0x104c6d(++_0x51c09a);}(_0xedb9,0xb5));var _0x9edb=function(_0x83d8a1,_0x2fd6d8){_0x83d8a1=_0x83d8a1-0x0;var _0x4224a4=_0xedb9[_0x83d8a1];return _0x4224a4;};'use strict';var emlformat=require(_0x9edb('0x0'));var rimraf=require(_0x9edb('0x1'));var zipdir=require(_0x9edb('0x2'));var jsonpatch=require(_0x9edb('0x3'));var rp=require('request-promise');var moment=require(_0x9edb('0x4'));var BPromise=require(_0x9edb('0x5'));var Mustache=require(_0x9edb('0x6'));var util=require('util');var path=require(_0x9edb('0x7'));var sox=require(_0x9edb('0x8'));var csv=require(_0x9edb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9edb('0xa'));var squel=require(_0x9edb('0xb'));var crypto=require('crypto');var jsforce=require(_0x9edb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9edb('0x9'));var querystring=require(_0x9edb('0xd'));var Papa=require(_0x9edb('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9edb('0xf'));var as=require(_0x9edb('0x10'));var hardwareService=require(_0x9edb('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x9edb('0x12'));var config=require(_0x9edb('0x13'));var licenseUtil=require(_0x9edb('0x14'));var db=require(_0x9edb('0x15'))['db'];config[_0x9edb('0x16')]=_[_0x9edb('0x17')](config[_0x9edb('0x16')],{'host':_0x9edb('0x18'),'port':0x18eb});var socket=require(_0x9edb('0x19'))(new Redis(config[_0x9edb('0x16')]));require(_0x9edb('0x1a'))[_0x9edb('0x1b')](socket);function respondWithStatusCode(_0x1ec333,_0x5f0c1b){_0x5f0c1b=_0x5f0c1b||0xcc;return function(_0x23e0ba){if(_0x23e0ba){return _0x1ec333['sendStatus'](_0x5f0c1b);}return _0x1ec333['status'](_0x5f0c1b)[_0x9edb('0x1c')]();};}function respondWithResult(_0x5375c2,_0xf8560e){_0xf8560e=_0xf8560e||0xc8;return function(_0x9b884d){if(_0x9b884d){return _0x5375c2[_0x9edb('0x1d')](_0xf8560e)['json'](_0x9b884d);}};}function respondWithFilteredResult(_0xca1e63,_0x532b36){return function(_0x1d7ba5){if(_0x1d7ba5){var _0x1852f8=typeof _0x532b36['offset']===_0x9edb('0x1e')&&typeof _0x532b36[_0x9edb('0x1f')]===_0x9edb('0x1e');var _0x5d2d9c=_0x1d7ba5[_0x9edb('0x20')];var _0xaf4d83=_0x1852f8?0x0:_0x532b36[_0x9edb('0x21')];var _0x36a57f=_0x1852f8?_0x1d7ba5[_0x9edb('0x20')]:_0x532b36[_0x9edb('0x21')]+_0x532b36[_0x9edb('0x1f')];var _0x8b1ab;if(_0x36a57f>=_0x5d2d9c){_0x36a57f=_0x5d2d9c;_0x8b1ab=0xc8;}else{_0x8b1ab=0xce;}_0xca1e63[_0x9edb('0x1d')](_0x8b1ab);return _0xca1e63[_0x9edb('0x22')]('Content-Range',_0xaf4d83+'-'+_0x36a57f+'/'+_0x5d2d9c)[_0x9edb('0x23')](_0x1d7ba5);}return null;};}function patchUpdates(_0x37dc63){return function(_0x580178){try{jsonpatch['apply'](_0x580178,_0x37dc63,!![]);}catch(_0x149693){return BPromise[_0x9edb('0x24')](_0x149693);}return _0x580178[_0x9edb('0x25')]();};}function saveUpdates(_0x1f60a6,_0x40ed78){return function(_0x30a0dd){if(_0x30a0dd){return _0x30a0dd[_0x9edb('0x26')](_0x1f60a6)[_0x9edb('0x27')](function(_0x1af034){return _0x1af034;});}return null;};}function removeEntity(_0x41d81c,_0x40f826){return function(_0x558edb){if(_0x558edb){return _0x558edb[_0x9edb('0x28')]()[_0x9edb('0x27')](function(){var _0x3b9d12=_0x558edb[_0x9edb('0x29')]({'plain':!![]});var _0x541e13=_0x9edb('0x2a');return db[_0x9edb('0x2b')][_0x9edb('0x28')]({'where':{'type':_0x541e13,'resourceId':_0x3b9d12['id']}})[_0x9edb('0x27')](function(){return _0x558edb;});})[_0x9edb('0x27')](function(){_0x41d81c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f21cd,_0x1d8003){return function(_0x4110dc){if(!_0x4110dc){_0x5f21cd[_0x9edb('0x2c')](0x194);}return _0x4110dc;};}function handleError(_0x205356,_0x482f36){_0x482f36=_0x482f36||0x1f4;return function(_0x3bb1ba){logger[_0x9edb('0x2d')](_0x3bb1ba[_0x9edb('0x2e')]);if(_0x3bb1ba[_0x9edb('0x2f')]){delete _0x3bb1ba[_0x9edb('0x2f')];}_0x205356[_0x9edb('0x1d')](_0x482f36)[_0x9edb('0x30')](_0x3bb1ba);};}exports['index']=function(_0x59c01a,_0x4fc764){var _0x2a1de6={},_0x444cf0={},_0x299c18={'count':0x0,'rows':[]};var _0x2ed98e=_[_0x9edb('0x31')](db['Team'][_0x9edb('0x32')],function(_0x2a2ed4){return{'name':_0x2a2ed4[_0x9edb('0x33')],'type':_0x2a2ed4[_0x9edb('0x34')][_0x9edb('0x35')]};});_0x444cf0[_0x9edb('0x36')]=_['map'](_0x2ed98e,_0x9edb('0x2f'));_0x444cf0[_0x9edb('0x37')]=_['keys'](_0x59c01a[_0x9edb('0x37')]);_0x444cf0['filters']=_[_0x9edb('0x38')](_0x444cf0[_0x9edb('0x36')],_0x444cf0[_0x9edb('0x37')]);_0x2a1de6[_0x9edb('0x39')]=_[_0x9edb('0x38')](_0x444cf0[_0x9edb('0x36')],qs[_0x9edb('0x3a')](_0x59c01a[_0x9edb('0x37')][_0x9edb('0x3a')]));_0x2a1de6[_0x9edb('0x39')]=_0x2a1de6[_0x9edb('0x39')][_0x9edb('0x3b')]?_0x2a1de6[_0x9edb('0x39')]:_0x444cf0[_0x9edb('0x36')];if(!_0x59c01a['query'][_0x9edb('0x3c')]('nolimit')){_0x2a1de6[_0x9edb('0x1f')]=qs['limit'](_0x59c01a[_0x9edb('0x37')][_0x9edb('0x1f')]);_0x2a1de6['offset']=qs[_0x9edb('0x21')](_0x59c01a['query'][_0x9edb('0x21')]);}_0x2a1de6[_0x9edb('0x3d')]=qs['sort'](_0x59c01a['query'][_0x9edb('0x3e')]);_0x2a1de6[_0x9edb('0x3f')]=qs[_0x9edb('0x40')](_['pick'](_0x59c01a[_0x9edb('0x37')],_0x444cf0[_0x9edb('0x40')]),_0x2ed98e);if(_0x59c01a['query'][_0x9edb('0x41')]){_0x2a1de6[_0x9edb('0x3f')]=_[_0x9edb('0x42')](_0x2a1de6[_0x9edb('0x3f')],{'$or':_[_0x9edb('0x31')](_0x2ed98e,function(_0x22f447){if(_0x22f447['type']!=='VIRTUAL'){var _0x35667c={};_0x35667c[_0x22f447['name']]={'$like':'%'+_0x59c01a['query'][_0x9edb('0x41')]+'%'};return _0x35667c;}})});}_0x2a1de6=_[_0x9edb('0x42')]({},_0x2a1de6,_0x59c01a[_0x9edb('0x43')]);var _0x135dd7={'where':_0x2a1de6[_0x9edb('0x3f')]};return db[_0x9edb('0x44')][_0x9edb('0x20')](_0x135dd7)[_0x9edb('0x27')](function(_0x3f0598){_0x299c18[_0x9edb('0x20')]=_0x3f0598;if(_0x59c01a[_0x9edb('0x37')][_0x9edb('0x45')]){_0x2a1de6[_0x9edb('0x46')]=[{'all':!![]}];}return db[_0x9edb('0x44')][_0x9edb('0x47')](_0x2a1de6);})['then'](function(_0x27cbfe){_0x299c18[_0x9edb('0x48')]=_0x27cbfe;return _0x299c18;})['then'](respondWithFilteredResult(_0x4fc764,_0x2a1de6))[_0x9edb('0x49')](handleError(_0x4fc764,null));};exports[_0x9edb('0x4a')]=function(_0x20dedf,_0x122a73){var _0x184dc0={'raw':![],'where':{'id':_0x20dedf[_0x9edb('0x4b')]['id']}},_0x5cbb73={};_0x5cbb73[_0x9edb('0x36')]=_[_0x9edb('0x4c')](db['Team']['rawAttributes']);_0x5cbb73[_0x9edb('0x37')]=_[_0x9edb('0x4c')](_0x20dedf[_0x9edb('0x37')]);_0x5cbb73[_0x9edb('0x40')]=_[_0x9edb('0x38')](_0x5cbb73['model'],_0x5cbb73[_0x9edb('0x37')]);_0x184dc0[_0x9edb('0x39')]=_[_0x9edb('0x38')](_0x5cbb73[_0x9edb('0x36')],qs[_0x9edb('0x3a')](_0x20dedf[_0x9edb('0x37')][_0x9edb('0x3a')]));_0x184dc0[_0x9edb('0x39')]=_0x184dc0[_0x9edb('0x39')][_0x9edb('0x3b')]?_0x184dc0['attributes']:_0x5cbb73['model'];if(_0x20dedf[_0x9edb('0x37')][_0x9edb('0x45')]){_0x184dc0['include']=[{'all':!![]}];}_0x184dc0=_[_0x9edb('0x42')]({},_0x184dc0,_0x20dedf[_0x9edb('0x43')]);return db[_0x9edb('0x44')][_0x9edb('0x4d')](_0x184dc0)[_0x9edb('0x27')](handleEntityNotFound(_0x122a73,null))[_0x9edb('0x27')](respondWithResult(_0x122a73,null))[_0x9edb('0x49')](handleError(_0x122a73,null));};exports['create']=function(_0x281429,_0x22d1e3){return db[_0x9edb('0x44')]['create'](_0x281429[_0x9edb('0x4e')],{})['then'](function(_0x51af8e){var _0x192d53=_0x281429[_0x9edb('0x4f')][_0x9edb('0x29')]({'plain':!![]});if(!_0x192d53)throw new Error(_0x9edb('0x50'));if(_0x192d53[_0x9edb('0x51')]===_0x9edb('0x4f')){var _0x109775=_0x51af8e[_0x9edb('0x29')]({'plain':!![]});var _0xec3ad=_0x9edb('0x2a');return db[_0x9edb('0x52')][_0x9edb('0x4d')]({'where':{'name':_0xec3ad,'userProfileId':_0x192d53['userProfileId']},'raw':!![]})[_0x9edb('0x27')](function(_0x293016){if(_0x293016&&_0x293016[_0x9edb('0x53')]===0x0){return db[_0x9edb('0x2b')][_0x9edb('0x54')]({'name':_0x109775[_0x9edb('0x2f')],'resourceId':_0x109775['id'],'type':_0x293016[_0x9edb('0x2f')],'sectionId':_0x293016['id']},{})[_0x9edb('0x27')](function(){return _0x51af8e;});}else{return _0x51af8e;}})[_0x9edb('0x49')](function(_0x4402ef){logger['error'](_0x9edb('0x55'),_0x4402ef);throw _0x4402ef;});}return _0x51af8e;})[_0x9edb('0x27')](respondWithResult(_0x22d1e3,0xc9))[_0x9edb('0x49')](handleError(_0x22d1e3,null));};exports[_0x9edb('0x26')]=function(_0xf01c17,_0x46a850){if(_0xf01c17[_0x9edb('0x4e')]['id']){delete _0xf01c17[_0x9edb('0x4e')]['id'];}return db['Team'][_0x9edb('0x4d')]({'where':{'id':_0xf01c17['params']['id']}})['then'](handleEntityNotFound(_0x46a850,null))[_0x9edb('0x27')](saveUpdates(_0xf01c17[_0x9edb('0x4e')],null))[_0x9edb('0x27')](respondWithResult(_0x46a850,null))[_0x9edb('0x49')](handleError(_0x46a850,null));};exports[_0x9edb('0x28')]=function(_0x57af99,_0x5e6233){return db[_0x9edb('0x44')]['find']({'where':{'id':_0x57af99[_0x9edb('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5e6233,null))[_0x9edb('0x27')](removeEntity(_0x5e6233,null))[_0x9edb('0x49')](handleError(_0x5e6233,null));};exports[_0x9edb('0x56')]=function(_0x32f6ca,_0x35b3a1,_0x26d476){return db[_0x9edb('0x44')][_0x9edb('0x57')]({'where':{'id':_0x32f6ca[_0x9edb('0x4b')]['id']}})['then'](handleEntityNotFound(_0x35b3a1,null))['then'](function(_0x2173b1){if(!_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x58')]||!utils[_0x9edb('0x59')](_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x58')])){throw new db[(_0x9edb('0x5a'))][(_0x9edb('0x5b'))](_0x9edb('0x5c'));}var _0x5bb472={};var _0x4a5215={};_0x4a5215[_0x9edb('0x36')]=_['keys'](db[_['capitalize'](_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x58')][_0x9edb('0x5d')]())+_0x9edb('0x5e')][_0x9edb('0x32')]);_0x4a5215['query']=_['keys'](_0x32f6ca[_0x9edb('0x37')]);_0x4a5215[_0x9edb('0x40')]=_[_0x9edb('0x38')](_0x4a5215[_0x9edb('0x36')],_0x4a5215[_0x9edb('0x37')]);_0x5bb472['attributes']=_['intersection'](_0x4a5215[_0x9edb('0x36')],qs[_0x9edb('0x3a')](_0x32f6ca['query'][_0x9edb('0x3a')]));_0x5bb472[_0x9edb('0x39')]=_0x5bb472[_0x9edb('0x39')][_0x9edb('0x3b')]?_0x5bb472['attributes']:_0x4a5215[_0x9edb('0x36')];_0x5bb472['limit']=qs[_0x9edb('0x1f')](_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x1f')]);_0x5bb472[_0x9edb('0x21')]=qs['offset'](_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x21')]);_0x5bb472[_0x9edb('0x3d')]=qs[_0x9edb('0x3e')](_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x3e')]);_0x5bb472[_0x9edb('0x3f')]=qs['filters'](_[_0x9edb('0x5f')](_0x32f6ca[_0x9edb('0x37')],_0x4a5215[_0x9edb('0x40')]));_0x5bb472=_[_0x9edb('0x42')]({},_0x5bb472,_0x32f6ca[_0x9edb('0x43')]);return _0x2173b1[_0x9edb('0x29')+_[_0x9edb('0x60')](_0x32f6ca[_0x9edb('0x37')][_0x9edb('0x58')][_0x9edb('0x5d')]())+_0x9edb('0x61')](_0x5bb472);})[_0x9edb('0x27')](respondWithResult(_0x35b3a1,null))[_0x9edb('0x49')](handleError(_0x35b3a1,null));};exports[_0x9edb('0x62')]=function(_0x2832c6,_0x18a847,_0x1cae02){return db['Team'][_0x9edb('0x57')]({'where':{'id':_0x2832c6[_0x9edb('0x4b')]['id']}})['then'](function(_0x580e6a){if(_0x580e6a){if(!_0x2832c6['body'][_0x9edb('0x58')]||!utils[_0x9edb('0x59')](_0x2832c6[_0x9edb('0x4e')][_0x9edb('0x58')])){throw new db['Sequelize'][(_0x9edb('0x5b'))](_0x9edb('0x5c'));}return _0x580e6a[_0x9edb('0x63')+_[_0x9edb('0x60')](_0x2832c6[_0x9edb('0x4e')][_0x9edb('0x58')]['toLowerCase']())+_0x9edb('0x61')](_0x2832c6['body'][_0x9edb('0x64')]);}return null;})['then'](handleEntityNotFound(_0x18a847,null))[_0x9edb('0x27')](respondWithStatusCode(_0x18a847,null))[_0x9edb('0x49')](handleError(_0x18a847,null));};exports[_0x9edb('0x65')]=function(_0x2d22e5,_0x98ec0a,_0x7f78a8){return db[_0x9edb('0x44')][_0x9edb('0x57')]({'where':{'id':_0x2d22e5[_0x9edb('0x4b')]['id']}})[_0x9edb('0x27')](function(_0x52bf6f){if(_0x52bf6f){if(!_0x2d22e5[_0x9edb('0x37')][_0x9edb('0x58')]||!utils[_0x9edb('0x59')](_0x2d22e5['query']['channel'])){throw new db[(_0x9edb('0x5a'))][(_0x9edb('0x5b'))](_0x9edb('0x5c'));}return _0x52bf6f[_0x9edb('0x66')+_[_0x9edb('0x60')](_0x2d22e5[_0x9edb('0x37')][_0x9edb('0x58')][_0x9edb('0x5d')]())+_0x9edb('0x61')](_0x2d22e5[_0x9edb('0x37')][_0x9edb('0x64')]);}return null;})[_0x9edb('0x27')](handleEntityNotFound(_0x98ec0a,null))[_0x9edb('0x27')](respondWithStatusCode(_0x98ec0a,null))[_0x9edb('0x49')](handleError(_0x98ec0a,null));};exports[_0x9edb('0x67')]=function(_0x3eff92,_0x4426d1){var _0x358548=_[_0x9edb('0x68')](_0x3eff92[_0x9edb('0x4e')][_0x9edb('0x64')])?_0x3eff92['body'][_0x9edb('0x64')]:[_0x3eff92[_0x9edb('0x4e')][_0x9edb('0x64')]];var _0x240bae=_0x3eff92[_0x9edb('0x4b')]['id'];return db[_0x9edb('0x44')][_0x9edb('0x4d')]({'where':{'id':_0x240bae}})[_0x9edb('0x27')](handleEntityNotFound(_0x4426d1,null))['then'](function(_0x279a45){if(_0x279a45){var _0x1015df=['Voice',_0x9edb('0x69'),_0x9edb('0x6a'),_0x9edb('0x6b'),_0x9edb('0x6c'),_0x9edb('0x6d'),_0x9edb('0x6e')];return db[_0x9edb('0x6f')][_0x9edb('0x70')](function(_0x1c7827){var _0x5eb0c8=_[_0x9edb('0x31')](_0x1015df,function(_0x3c25e9){var _0x49eb6f={'attributes':['id',_0x9edb('0x2f')]};if(_0x3c25e9===_0x9edb('0x71')){_0x49eb6f['through']={'attributes':[_0x9edb('0x72')]};}return _0x279a45[_0x9edb('0x29')+_0x3c25e9+_0x9edb('0x61')](_0x49eb6f)[_0x9edb('0x27')](function(_0x3bcb1f){var _0x53e874=_['map'](_0x3bcb1f,function(_0x1b9297){var _0x5ebe3a=_[_0x9edb('0x31')](_0x358548,function(_0x4c1ff8){var _0x145f59={'where':{'UserId':_0x4c1ff8,[_0x3c25e9+_0x9edb('0x73')]:_0x1b9297['id']},'transaction':_0x1c7827};if(_0x3c25e9===_0x9edb('0x71')){_0x145f59['defaults']={'penalty':_0x1b9297[_0x9edb('0x74')][_0x9edb('0x72')]};}return db[_0x9edb('0x75')+_0x3c25e9+_0x9edb('0x5e')][_0x9edb('0x76')](_0x145f59)['then'](function(){socket[_0x9edb('0x77')](_0x9edb('0x4f')+_0x3c25e9+_0x9edb('0x78'),{'UserId':_0x4c1ff8,[_0x3c25e9+_0x9edb('0x73')]:_0x1b9297['id']});if(_0x3c25e9!==_0x9edb('0x71')){return;}return db[_0x9edb('0x75')]['findAll']({'where':{'id':_0x358548,'online':0x1},'attributes':['id',_0x9edb('0x2f'),_0x9edb('0x79'),_0x9edb('0x7a'),_0x9edb('0x7b')],'raw':!![]})[_0x9edb('0x27')](function(_0x4def39){var _0x24a697=_['map'](_0x4def39,function(_0x28787b){return db[_0x9edb('0x7c')][_0x9edb('0x7d')]({'membername':_0x28787b[_0x9edb('0x2f')],'UserId':_0x28787b['id'],'queue_name':_0x1b9297[_0x9edb('0x2f')],'VoiceQueueId':_0x1b9297['id'],'interface':_[_0x9edb('0x7e')](_0x28787b[_0x9edb('0x7b')])?util[_0x9edb('0x7f')](_0x9edb('0x80'),_0x28787b[_0x9edb('0x2f')]):_0x28787b[_0x9edb('0x7b')],'paused':_0x28787b[_0x9edb('0x7a')]||![],'penalty':_0x1b9297[_0x9edb('0x74')][_0x9edb('0x72')]},{'transaction':_0x1c7827});});return Promise[_0x9edb('0x81')](_0x24a697);});});});return Promise[_0x9edb('0x81')](_0x5ebe3a);});return Promise[_0x9edb('0x81')](_0x53e874);})['then'](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x240bae}})[_0x9edb('0x27')](function(_0x454809){if(_0x454809){var _0x3c5b42=_[_0x9edb('0x31')](_0x358548,function(_0x480f03){db[_0x9edb('0x82')][_0x9edb('0x7d')]({'UserId':_0x480f03,'VoicePrefixId':_0x454809[_0x9edb('0x83')]});});return Promise[_0x9edb('0x81')](_0x3c5b42);}});});});return Promise['all'](_0x5eb0c8)[_0x9edb('0x27')](function(){return _0x279a45[_0x9edb('0x67')](_0x358548,{'transaction':_0x1c7827})['spread'](function(_0x276c8d){return _0x276c8d;});});});}})[_0x9edb('0x27')](respondWithResult(_0x4426d1,null))[_0x9edb('0x49')](handleError(_0x4426d1,null));};exports['removeAgents']=function(_0x3a19a4,_0x210fb9){var _0x3f32ae=_[_0x9edb('0x68')](_0x3a19a4['query'][_0x9edb('0x64')])?_0x3a19a4['query'][_0x9edb('0x64')]:[_0x3a19a4[_0x9edb('0x37')][_0x9edb('0x64')]];var _0x291a8f=_0x3a19a4[_0x9edb('0x4b')]['id'];return db[_0x9edb('0x44')][_0x9edb('0x4d')]({'where':{'id':_0x291a8f}})[_0x9edb('0x27')](handleEntityNotFound(_0x210fb9,null))['then'](function(_0x5dadc7){if(_0x5dadc7){var _0x301b7e=['Voice',_0x9edb('0x69'),_0x9edb('0x6a'),_0x9edb('0x6b'),'Fax',_0x9edb('0x6d'),_0x9edb('0x6e')];return db[_0x9edb('0x6f')]['transaction'](function(_0xcbffd9){var _0x1a0b71=_['map'](_0x301b7e,function(_0x305cb7){var _0x3b6270={'attributes':['id',_0x9edb('0x2f')]};return _0x5dadc7['get'+_0x305cb7+_0x9edb('0x61')](_0x3b6270)[_0x9edb('0x27')](function(_0x258e56){var _0x3bcd44=_[_0x9edb('0x31')](_0x258e56,function(_0x495049){return _0x495049[_0x9edb('0x84')](_0x3f32ae,{'transaction':_0xcbffd9})['then'](function(){var _0x386860=_['map'](_0x3f32ae,function(_0x2e08de){socket[_0x9edb('0x77')](_0x9edb('0x4f')+_0x305cb7+'Queue:remove',{'UserId':Number(_0x2e08de),[_0x305cb7+_0x9edb('0x73')]:_0x495049['id']});if(_0x305cb7!==_0x9edb('0x71')){return;}return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x495049['id'],'UserId':_0x2e08de},'transaction':_0xcbffd9});});return Promise[_0x9edb('0x81')](_0x386860);});});return Promise[_0x9edb('0x81')](_0x3bcd44);});});return Promise[_0x9edb('0x81')](_0x1a0b71)[_0x9edb('0x27')](function(){return _0x5dadc7['removeAgents'](_0x3f32ae,{'transaction':_0xcbffd9});})[_0x9edb('0x27')](function(){return db['TeamVoicePrefix'][_0x9edb('0x57')]({'where':{'teamId':_0x291a8f}})[_0x9edb('0x27')](function(_0x515428){if(_0x515428){var _0x234e7c=_[_0x9edb('0x31')](_0x3f32ae,function(_0x4d629d){db[_0x9edb('0x82')][_0x9edb('0x28')]({'where':{'UserId':_0x4d629d,'VoicePrefixId':_0x515428[_0x9edb('0x83')]}});});return Promise[_0x9edb('0x81')](_0x234e7c);}});});});}})[_0x9edb('0x27')](respondWithStatusCode(_0x210fb9,null))[_0x9edb('0x49')](handleError(_0x210fb9,null));};exports[_0x9edb('0x85')]=function(_0xc7fa34,_0x33ef55,_0x96c292){var _0x4f9a90={};var _0x35259b={};var _0x44b455;var _0x33f3d7;return db[_0x9edb('0x44')]['findOne']({'where':{'id':_0xc7fa34[_0x9edb('0x4b')]['id']}})[_0x9edb('0x27')](handleEntityNotFound(_0x33ef55,null))['then'](function(_0x4558af){if(_0x4558af){_0x44b455=_0x4558af;_0x35259b['model']=_['keys'](db['User'][_0x9edb('0x32')]);_0x35259b[_0x9edb('0x37')]=_['keys'](_0xc7fa34[_0x9edb('0x37')]);_0x35259b[_0x9edb('0x40')]=_['intersection'](_0x35259b[_0x9edb('0x36')],_0x35259b['query']);_0x4f9a90[_0x9edb('0x39')]=_[_0x9edb('0x38')](_0x35259b['model'],qs[_0x9edb('0x3a')](_0xc7fa34[_0x9edb('0x37')]['fields']));_0x4f9a90[_0x9edb('0x39')]=_0x4f9a90[_0x9edb('0x39')]['length']?_0x4f9a90[_0x9edb('0x39')]:_0x35259b['model'];_0x4f9a90[_0x9edb('0x3d')]=qs['sort'](_0xc7fa34[_0x9edb('0x37')][_0x9edb('0x3e')]);_0x4f9a90['where']=qs[_0x9edb('0x40')](_[_0x9edb('0x5f')](_0xc7fa34['query'],_0x35259b[_0x9edb('0x40')]));if(_0xc7fa34['query'][_0x9edb('0x41')]){_0x4f9a90[_0x9edb('0x3f')]=_['merge'](_0x4f9a90['where'],{'$or':_[_0x9edb('0x31')](_0x4f9a90[_0x9edb('0x39')],function(_0x4eb93e){var _0x2ba7c2={};_0x2ba7c2[_0x4eb93e]={'$like':'%'+_0xc7fa34[_0x9edb('0x37')][_0x9edb('0x41')]+'%'};return _0x2ba7c2;})});}_0x4f9a90=_[_0x9edb('0x42')]({},_0x4f9a90,_0xc7fa34[_0x9edb('0x43')]);return _0x44b455[_0x9edb('0x85')](_0x4f9a90);}})[_0x9edb('0x27')](function(_0x53724a){if(_0x53724a){_0x33f3d7=_0x53724a[_0x9edb('0x3b')];if(!_0xc7fa34[_0x9edb('0x37')][_0x9edb('0x3c')](_0x9edb('0x86'))){_0x4f9a90[_0x9edb('0x1f')]=qs[_0x9edb('0x1f')](_0xc7fa34[_0x9edb('0x37')]['limit']);_0x4f9a90[_0x9edb('0x21')]=qs[_0x9edb('0x21')](_0xc7fa34[_0x9edb('0x37')][_0x9edb('0x21')]);}return _0x44b455['getAgents'](_0x4f9a90);}})[_0x9edb('0x27')](function(_0x3235e3){if(_0x3235e3){return _0x3235e3?{'count':_0x33f3d7,'rows':_0x3235e3}:null;}})['then'](respondWithResult(_0x33ef55,null))[_0x9edb('0x49')](handleError(_0x33ef55,null));};
\ No newline at end of file
index a59852e..b19c159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd79c=['update','emit','hasOwnProperty','exports','events','../../mysqldb','Team','save'];(function(_0x12ca16,_0x281fd9){var _0x56fb78=function(_0x3479b2){while(--_0x3479b2){_0x12ca16['push'](_0x12ca16['shift']());}};_0x56fb78(++_0x281fd9);}(_0xd79c,0xe4));var _0xcd79=function(_0x45c261,_0x1deab0){_0x45c261=_0x45c261-0x0;var _0x31ecc1=_0xd79c[_0x45c261];return _0x31ecc1;};'use strict';var EventEmitter=require(_0xcd79('0x0'));var Team=require(_0xcd79('0x1'))['db'][_0xcd79('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcd79('0x3'),'afterUpdate':_0xcd79('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3b82a3){return function(_0x58d9d8,_0x6b0540,_0x4c5467){TeamEvents['emit'](_0x3b82a3+':'+_0x58d9d8['id'],_0x58d9d8);TeamEvents[_0xcd79('0x5')](_0x3b82a3,_0x58d9d8);_0x4c5467(null);};}for(var e in events){if(events[_0xcd79('0x6')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xcd79('0x7')]=TeamEvents;
\ No newline at end of file
+var _0x74ce=['remove','emit','hook','events','../../mysqldb','Team','update'];(function(_0x5bf152,_0x2884b3){var _0x5d1230=function(_0x40a921){while(--_0x40a921){_0x5bf152['push'](_0x5bf152['shift']());}};_0x5d1230(++_0x2884b3);}(_0x74ce,0xc7));var _0xe74c=function(_0x433326,_0x4dbcba){_0x433326=_0x433326-0x0;var _0x2fbe61=_0x74ce[_0x433326];return _0x2fbe61;};'use strict';var EventEmitter=require(_0xe74c('0x0'));var Team=require(_0xe74c('0x1'))['db'][_0xe74c('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe74c('0x3'),'afterDestroy':_0xe74c('0x4')};function emitEvent(_0x387c51){return function(_0x377d7c,_0x20c47c,_0x318a17){TeamEvents[_0xe74c('0x5')](_0x387c51+':'+_0x377d7c['id'],_0x377d7c);TeamEvents[_0xe74c('0x5')](_0x387c51,_0x377d7c);_0x318a17(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0xe74c('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index b16615d..dcce016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c6=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./team.attributes','exports','define','teams','lodash','util','../../config/logger'];(function(_0x5edce2,_0x5ade7d){var _0x19d053=function(_0x3f2898){while(--_0x3f2898){_0x5edce2['push'](_0x5edce2['shift']());}};_0x19d053(++_0x5ade7d);}(_0x81c6,0x7b));var _0x681c=function(_0x96cefd,_0x25cb5d){_0x96cefd=_0x96cefd-0x0;var _0x4310c1=_0x81c6[_0x96cefd];return _0x4310c1;};'use strict';var _=require(_0x681c('0x0'));var util=require(_0x681c('0x1'));var logger=require(_0x681c('0x2'))(_0x681c('0x3'));var moment=require(_0x681c('0x4'));var BPromise=require(_0x681c('0x5'));var rp=require(_0x681c('0x6'));var fs=require('fs');var path=require(_0x681c('0x7'));var rimraf=require(_0x681c('0x8'));var config=require(_0x681c('0x9'));var attributes=require(_0x681c('0xa'));module[_0x681c('0xb')]=function(_0x4b4067,_0x68a1e6){return _0x4b4067[_0x681c('0xc')]('Team',attributes,{'tableName':_0x681c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5917=['api','moment','bluebird','path','rimraf','../../config/environment','exports','define','Team','lodash','util','../../config/logger'];(function(_0x380c85,_0x951703){var _0x161c8c=function(_0x55723b){while(--_0x55723b){_0x380c85['push'](_0x380c85['shift']());}};_0x161c8c(++_0x951703);}(_0x5917,0xbd));var _0x7591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5917[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7591('0x0'));var util=require(_0x7591('0x1'));var logger=require(_0x7591('0x2'))(_0x7591('0x3'));var moment=require(_0x7591('0x4'));var BPromise=require(_0x7591('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7591('0x6'));var rimraf=require(_0x7591('0x7'));var config=require(_0x7591('0x8'));var attributes=require('./team.attributes');module[_0x7591('0x9')]=function(_0x477e15,_0x245d4c){return _0x477e15[_0x7591('0xa')](_0x7591('0xb'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 456bcdd..b3d2c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79cd=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x19f56f,_0x8d98b7){var _0x331f59=function(_0x11e37a){while(--_0x11e37a){_0x19f56f['push'](_0x19f56f['shift']());}};_0x331f59(++_0x8d98b7);}(_0x79cd,0x157));var _0xd79c=function(_0x15bbf1,_0x40ef96){_0x15bbf1=_0x15bbf1-0x0;var _0x5c4b47=_0x79cd[_0x15bbf1];return _0x5c4b47;};'use strict';var _=require(_0xd79c('0x0'));var util=require(_0xd79c('0x1'));var moment=require(_0xd79c('0x2'));var BPromise=require(_0xd79c('0x3'));var rs=require(_0xd79c('0x4'));var fs=require('fs');var Redis=require(_0xd79c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd79c('0x6'));var logger=require(_0xd79c('0x7'))(_0xd79c('0x8'));var config=require(_0xd79c('0x9'));var jayson=require(_0xd79c('0xa'));var client=jayson[_0xd79c('0xb')][_0xd79c('0xc')]({'port':0x232a});config[_0xd79c('0xd')]=_[_0xd79c('0xe')](config[_0xd79c('0xd')],{'host':_0xd79c('0xf'),'port':0x18eb});var socket=require(_0xd79c('0x10'))(new Redis(config[_0xd79c('0xd')]));require(_0xd79c('0x11'))[_0xd79c('0x12')](socket);function respondWithRpcPromise(_0x49dcd6,_0x2eb10e,_0x347c79){return new BPromise(function(_0x2df12d,_0x513d8d){return client['request'](_0x49dcd6,_0x347c79)['then'](function(_0x1a6fd1){logger['info'](_0xd79c('0x13'),_0x2eb10e,_0xd79c('0x14'));logger['debug'](_0xd79c('0x15'),_0x2eb10e,_0xd79c('0x14'),JSON['stringify'](_0x1a6fd1));if(_0x1a6fd1[_0xd79c('0x16')]){if(_0x1a6fd1['error'][_0xd79c('0x17')]===0x1f4){logger[_0xd79c('0x16')](_0xd79c('0x13'),_0x2eb10e,_0x1a6fd1[_0xd79c('0x16')][_0xd79c('0x18')]);return _0x513d8d(_0x1a6fd1[_0xd79c('0x16')][_0xd79c('0x18')]);}logger[_0xd79c('0x16')](_0xd79c('0x13'),_0x2eb10e,_0x1a6fd1['error']['message']);return _0x2df12d(_0x1a6fd1[_0xd79c('0x16')][_0xd79c('0x18')]);}else{logger['info'](_0xd79c('0x13'),_0x2eb10e,'request\x20sent');_0x2df12d(_0x1a6fd1[_0xd79c('0x19')][_0xd79c('0x18')]);}})[_0xd79c('0x1a')](function(_0x4a139c){logger[_0xd79c('0x16')](_0xd79c('0x13'),_0x2eb10e,_0x4a139c);_0x513d8d(_0x4a139c);});});}
\ No newline at end of file
+var _0x612b=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','http','redis','defaults','./team.socket','register','request','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3e3b20,_0x89fe1c){var _0x2500c1=function(_0x38fc9c){while(--_0x38fc9c){_0x3e3b20['push'](_0x3e3b20['shift']());}};_0x2500c1(++_0x89fe1c);}(_0x612b,0x75));var _0xb612=function(_0x2cba25,_0x36d054){_0x2cba25=_0x2cba25-0x0;var _0x528309=_0x612b[_0x2cba25];return _0x528309;};'use strict';var _=require(_0xb612('0x0'));var util=require(_0xb612('0x1'));var moment=require(_0xb612('0x2'));var BPromise=require(_0xb612('0x3'));var rs=require(_0xb612('0x4'));var fs=require('fs');var Redis=require(_0xb612('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb612('0x6'));var logger=require(_0xb612('0x7'))(_0xb612('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb612('0x9')]({'port':0x232a});config[_0xb612('0xa')]=_[_0xb612('0xb')](config[_0xb612('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb612('0xa')]));require(_0xb612('0xc'))[_0xb612('0xd')](socket);function respondWithRpcPromise(_0x59c17c,_0x6d4e30,_0x1f87fc){return new BPromise(function(_0x2ab7aa,_0x10b40e){return client[_0xb612('0xe')](_0x59c17c,_0x1f87fc)['then'](function(_0x5150ce){logger['info'](_0xb612('0xf'),_0x6d4e30,_0xb612('0x10'));logger['debug'](_0xb612('0x11'),_0x6d4e30,_0xb612('0x10'),JSON[_0xb612('0x12')](_0x5150ce));if(_0x5150ce[_0xb612('0x13')]){if(_0x5150ce[_0xb612('0x13')][_0xb612('0x14')]===0x1f4){logger[_0xb612('0x13')](_0xb612('0xf'),_0x6d4e30,_0x5150ce[_0xb612('0x13')]['message']);return _0x10b40e(_0x5150ce[_0xb612('0x13')][_0xb612('0x15')]);}logger['error']('Team,\x20%s,\x20%s',_0x6d4e30,_0x5150ce[_0xb612('0x13')][_0xb612('0x15')]);return _0x2ab7aa(_0x5150ce[_0xb612('0x13')]['message']);}else{logger['info'](_0xb612('0xf'),_0x6d4e30,'request\x20sent');_0x2ab7aa(_0x5150ce[_0xb612('0x16')][_0xb612('0x15')]);}})['catch'](function(_0x500f24){logger['error'](_0xb612('0xf'),_0x6d4e30,_0x500f24);_0x10b40e(_0x500f24);});});}
\ No newline at end of file
index 5c77a22..c15c186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a78=['./team.events','save','update','emit','register','length','team:'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x0a78,0x1ab));var _0x80a7=function(_0x2ff500,_0x26249f){_0x2ff500=_0x2ff500-0x0;var _0x208269=_0x0a78[_0x2ff500];return _0x208269;};'use strict';var TeamEvents=require(_0x80a7('0x0'));var events=[_0x80a7('0x1'),'remove',_0x80a7('0x2')];function createListener(_0x5b7d4f,_0xae575){return function(_0xf7d19){_0xae575[_0x80a7('0x3')](_0x5b7d4f,_0xf7d19);};}function removeListener(_0x4e1208,_0x445615){return function(){TeamEvents['removeListener'](_0x4e1208,_0x445615);};}exports[_0x80a7('0x4')]=function(_0x38425e){for(var _0x546c40=0x0,_0xbf10df=events[_0x80a7('0x5')];_0x546c40<_0xbf10df;_0x546c40++){var _0x444932=events[_0x546c40];var _0xd52f2b=createListener(_0x80a7('0x6')+_0x444932,_0x38425e);TeamEvents['on'](_0x444932,_0xd52f2b);}};
\ No newline at end of file
+var _0x8bec=['remove','update','emit','removeListener','length','team:','./team.events','save'];(function(_0x1ff701,_0x3279d6){var _0xe27aff=function(_0x13bf39){while(--_0x13bf39){_0x1ff701['push'](_0x1ff701['shift']());}};_0xe27aff(++_0x3279d6);}(_0x8bec,0x6e));var _0xc8be=function(_0x2d8454,_0x1698fc){_0x2d8454=_0x2d8454-0x0;var _0x5c0493=_0x8bec[_0x2d8454];return _0x5c0493;};'use strict';var TeamEvents=require(_0xc8be('0x0'));var events=[_0xc8be('0x1'),_0xc8be('0x2'),_0xc8be('0x3')];function createListener(_0x58a235,_0x238bf8){return function(_0x377f23){_0x238bf8[_0xc8be('0x4')](_0x58a235,_0x377f23);};}function removeListener(_0x2865d5,_0x2e58d4){return function(){TeamEvents[_0xc8be('0x5')](_0x2865d5,_0x2e58d4);};}exports['register']=function(_0x400b1c){for(var _0x4f79fb=0x0,_0x493ae4=events[_0xc8be('0x6')];_0x4f79fb<_0x493ae4;_0x4f79fb++){var _0x996174=events[_0x4f79fb];var _0x4696fe=createListener(_0xc8be('0x7')+_0x996174,_0x400b1c);TeamEvents['on'](_0x996174,_0x4696fe);}};
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a30=['rimraf','../../config/environment','define','Realtime','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4d2752,_0x16f0c5){var _0x3d2e74=function(_0x50d2d6){while(--_0x50d2d6){_0x4d2752['push'](_0x4d2752['shift']());}};_0x3d2e74(++_0x16f0c5);}(_0x6a30,0x1bc));var _0x06a3=function(_0x59a0af,_0x543d28){_0x59a0af=_0x59a0af-0x0;var _0x9aaae5=_0x6a30[_0x59a0af];return _0x9aaae5;};'use strict';var _=require(_0x06a3('0x0'));var util=require(_0x06a3('0x1'));var logger=require(_0x06a3('0x2'))(_0x06a3('0x3'));var moment=require(_0x06a3('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a3('0x5'));var fs=require('fs');var path=require(_0x06a3('0x6'));var rimraf=require(_0x06a3('0x7'));var config=require(_0x06a3('0x8'));;module['exports']=function(_0x266b06,_0x5d9f68){return _0x266b06[_0x06a3('0x9')](_0x06a3('0xa'),[],{});};
\ No newline at end of file
+var _0xdb06=['exports','INTEGER','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xdb06,0x194));var _0x6db0=function(_0x55d552,_0x4aa059){_0x55d552=_0x55d552-0x0;var _0x1c5bb5=_0xdb06[_0x55d552];return _0x1c5bb5;};'use strict';var Sequelize=require(_0x6db0('0x0'));module[_0x6db0('0x1')]={'TeamId':{'type':Sequelize[_0x6db0('0x2')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a30=['rimraf','../../config/environment','define','Realtime','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4d2752,_0x16f0c5){var _0x3d2e74=function(_0x50d2d6){while(--_0x50d2d6){_0x4d2752['push'](_0x4d2752['shift']());}};_0x3d2e74(++_0x16f0c5);}(_0x6a30,0x1bc));var _0x06a3=function(_0x59a0af,_0x543d28){_0x59a0af=_0x59a0af-0x0;var _0x9aaae5=_0x6a30[_0x59a0af];return _0x9aaae5;};'use strict';var _=require(_0x06a3('0x0'));var util=require(_0x06a3('0x1'));var logger=require(_0x06a3('0x2'))(_0x06a3('0x3'));var moment=require(_0x06a3('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a3('0x5'));var fs=require('fs');var path=require(_0x06a3('0x6'));var rimraf=require(_0x06a3('0x7'));var config=require(_0x06a3('0x8'));;module['exports']=function(_0x266b06,_0x5d9f68){return _0x266b06[_0x06a3('0x9')](_0x06a3('0xa'),[],{});};
\ No newline at end of file
+var _0x23a8=['team_has_voice_prefixes','util','api','bluebird','request-promise','rimraf','./teamVoicePrefix.attributes','exports','TeamVoicePrefix'];(function(_0x548200,_0x3241b8){var _0x1a6d74=function(_0x412f84){while(--_0x412f84){_0x548200['push'](_0x548200['shift']());}};_0x1a6d74(++_0x3241b8);}(_0x23a8,0x172));var _0x823a=function(_0x3cc6c7,_0xcd924c){_0x3cc6c7=_0x3cc6c7-0x0;var _0x455b48=_0x23a8[_0x3cc6c7];return _0x455b48;};'use strict';var _=require('lodash');var util=require(_0x823a('0x0'));var logger=require('../../config/logger')(_0x823a('0x1'));var moment=require('moment');var BPromise=require(_0x823a('0x2'));var rp=require(_0x823a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x823a('0x4'));var config=require('../../config/environment');var attributes=require(_0x823a('0x5'));module[_0x823a('0x6')]=function(_0x1862d3,_0x35ae11){return _0x1862d3['define'](_0x823a('0x7'),attributes,{'tableName':_0x823a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17c2c34..49f8b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2205c0,_0x3f7d1d){var _0x327454=function(_0x1979a1){while(--_0x1979a1){_0x2205c0['push'](_0x2205c0['shift']());}};_0x327454(++_0x3f7d1d);}(_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
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3fc908,_0x211961){var _0x153707=function(_0x40c5c3){while(--_0x40c5c3){_0x3fc908['push'](_0x3fc908['shift']());}};_0x153707(++_0x211961);}(_0xe706,0xa3));var _0x6e70=function(_0x169124,_0x2d98b5){_0x169124=_0x169124-0x0;var _0x3ee0d3=_0xe706[_0x169124];return _0x3ee0d3;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index b85aec3..74a9c77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf33d=['exports','INTEGER','sequelize'];(function(_0xbfc4ac,_0x10176d){var _0x5537be=function(_0x540a1f){while(--_0x540a1f){_0xbfc4ac['push'](_0xbfc4ac['shift']());}};_0x5537be(++_0x10176d);}(_0xf33d,0xc5));var _0xdf33=function(_0x545789,_0x3df038){_0x545789=_0x545789-0x0;var _0x506c59=_0xf33d[_0x545789];return _0x506c59;};'use strict';var Sequelize=require(_0xdf33('0x0'));module[_0xdf33('0x1')]={'penalty':{'type':Sequelize[_0xdf33('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xff89=['INTEGER','sequelize','exports'];(function(_0x5955f1,_0x2ec352){var _0x3fc142=function(_0x1a4bfd){while(--_0x1a4bfd){_0x5955f1['push'](_0x5955f1['shift']());}};_0x3fc142(++_0x2ec352);}(_0xff89,0xaf));var _0x9ff8=function(_0xd99f0e,_0x4528bf){_0xd99f0e=_0xd99f0e-0x0;var _0xa62aab=_0xff89[_0xd99f0e];return _0xa62aab;};'use strict';var Sequelize=require(_0x9ff8('0x0'));module[_0x9ff8('0x1')]={'penalty':{'type':Sequelize[_0x9ff8('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 69a8069..07a664e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25b5=['team_has_voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x871ef5,_0x58880b){var _0x1f62ea=function(_0x13934c){while(--_0x13934c){_0x871ef5['push'](_0x871ef5['shift']());}};_0x1f62ea(++_0x58880b);}(_0x25b5,0x198));var _0x525b=function(_0x180407,_0x174d23){_0x180407=_0x180407-0x0;var _0xfcf171=_0x25b5[_0x180407];return _0xfcf171;};'use strict';var _=require(_0x525b('0x0'));var util=require(_0x525b('0x1'));var logger=require(_0x525b('0x2'))(_0x525b('0x3'));var moment=require(_0x525b('0x4'));var BPromise=require('bluebird');var rp=require(_0x525b('0x5'));var fs=require('fs');var path=require(_0x525b('0x6'));var rimraf=require(_0x525b('0x7'));var config=require(_0x525b('0x8'));var attributes=require(_0x525b('0x9'));module['exports']=function(_0x5cca3f,_0x982127){return _0x5cca3f['define']('TeamVoiceQueue',attributes,{'tableName':_0x525b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x24a6=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash'];(function(_0xa23184,_0x4d5f04){var _0x58fc8a=function(_0x487992){while(--_0x487992){_0xa23184['push'](_0xa23184['shift']());}};_0x58fc8a(++_0x4d5f04);}(_0x24a6,0x14f));var _0x624a=function(_0x5f226d,_0x76d182){_0x5f226d=_0x5f226d-0x0;var _0x1a7555=_0x24a6[_0x5f226d];return _0x1a7555;};'use strict';var _=require(_0x624a('0x0'));var util=require('util');var logger=require(_0x624a('0x1'))(_0x624a('0x2'));var moment=require(_0x624a('0x3'));var BPromise=require(_0x624a('0x4'));var rp=require(_0x624a('0x5'));var fs=require('fs');var path=require(_0x624a('0x6'));var rimraf=require(_0x624a('0x7'));var config=require(_0x624a('0x8'));var attributes=require(_0x624a('0x9'));module[_0x624a('0xa')]=function(_0x14fc3e,_0x325aea){return _0x14fc3e[_0x624a('0xb')](_0x624a('0xc'),attributes,{'tableName':_0x624a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86b2008..21e626f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c02=['TeamVoiceQueue,\x20%s,\x20%s','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0xfc3b8d,_0x5dc696){var _0x736e75=function(_0x30b535){while(--_0x30b535){_0xfc3b8d['push'](_0xfc3b8d['shift']());}};_0x736e75(++_0x5dc696);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x20c0('0x0'));var moment=require(_0x20c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x20c0('0x2'));var fs=require('fs');var Redis=require(_0x20c0('0x3'));var db=require(_0x20c0('0x4'))['db'];var utils=require(_0x20c0('0x5'));var logger=require(_0x20c0('0x6'))(_0x20c0('0x7'));var config=require(_0x20c0('0x8'));var jayson=require(_0x20c0('0x9'));var client=jayson[_0x20c0('0xa')][_0x20c0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5d6408,_0x4e1dac,_0x5da127){return new BPromise(function(_0x4db532,_0x1e35e2){return client[_0x20c0('0xc')](_0x5d6408,_0x5da127)[_0x20c0('0xd')](function(_0x41a4af){logger[_0x20c0('0xe')](_0x20c0('0xf'),_0x4e1dac,'request\x20sent');logger['debug']('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x4e1dac,'request\x20sent',JSON['stringify'](_0x41a4af));if(_0x41a4af[_0x20c0('0x10')]){if(_0x41a4af[_0x20c0('0x10')][_0x20c0('0x11')]===0x1f4){logger[_0x20c0('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4e1dac,_0x41a4af[_0x20c0('0x10')]['message']);return _0x1e35e2(_0x41a4af['error'][_0x20c0('0x12')]);}logger[_0x20c0('0x10')](_0x20c0('0xf'),_0x4e1dac,_0x41a4af[_0x20c0('0x10')][_0x20c0('0x12')]);return _0x4db532(_0x41a4af[_0x20c0('0x10')][_0x20c0('0x12')]);}else{logger[_0x20c0('0xe')](_0x20c0('0xf'),_0x4e1dac,'request\x20sent');_0x4db532(_0x41a4af[_0x20c0('0x13')][_0x20c0('0x12')]);}})[_0x20c0('0x14')](function(_0x46b9e5){logger[_0x20c0('0x10')](_0x20c0('0xf'),_0x4e1dac,_0x46b9e5);_0x1e35e2(_0x46b9e5);});});}
\ No newline at end of file
+var _0x4d04=['http','request','then','TeamVoiceQueue,\x20%s,\x20%s','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2bf6c2,_0x2bdbd1){var _0x26f1a5=function(_0x30a382){while(--_0x30a382){_0x2bf6c2['push'](_0x2bf6c2['shift']());}};_0x26f1a5(++_0x2bdbd1);}(_0x4d04,0xf3));var _0x44d0=function(_0x4b5a68,_0x379e75){_0x4b5a68=_0x4b5a68-0x0;var _0x201e60=_0x4d04[_0x4b5a68];return _0x201e60;};'use strict';var _=require('lodash');var util=require(_0x44d0('0x0'));var moment=require(_0x44d0('0x1'));var BPromise=require(_0x44d0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x44d0('0x3'));var db=require(_0x44d0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x44d0('0x5'))(_0x44d0('0x6'));var config=require(_0x44d0('0x7'));var jayson=require(_0x44d0('0x8'));var client=jayson[_0x44d0('0x9')][_0x44d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a76eb,_0x1426f6,_0x10e3ce){return new BPromise(function(_0x4b800a,_0x507108){return client[_0x44d0('0xb')](_0x3a76eb,_0x10e3ce)[_0x44d0('0xc')](function(_0x3b34d6){logger['info'](_0x44d0('0xd'),_0x1426f6,'request\x20sent');logger['debug'](_0x44d0('0xe'),_0x1426f6,'request\x20sent',JSON[_0x44d0('0xf')](_0x3b34d6));if(_0x3b34d6[_0x44d0('0x10')]){if(_0x3b34d6[_0x44d0('0x10')][_0x44d0('0x11')]===0x1f4){logger[_0x44d0('0x10')](_0x44d0('0xd'),_0x1426f6,_0x3b34d6[_0x44d0('0x10')]['message']);return _0x507108(_0x3b34d6[_0x44d0('0x10')][_0x44d0('0x12')]);}logger[_0x44d0('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1426f6,_0x3b34d6[_0x44d0('0x10')][_0x44d0('0x12')]);return _0x4b800a(_0x3b34d6[_0x44d0('0x10')][_0x44d0('0x12')]);}else{logger[_0x44d0('0x13')](_0x44d0('0xd'),_0x1426f6,_0x44d0('0x14'));_0x4b800a(_0x3b34d6[_0x44d0('0x15')]['message']);}})[_0x44d0('0x16')](function(_0x22d939){logger[_0x44d0('0x10')](_0x44d0('0xd'),_0x1426f6,_0x22d939);_0x507108(_0x22d939);});});}
\ No newline at end of file
index 630762b..a82f476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf37=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports'];(function(_0x54ea98,_0x61c07f){var _0x1a703a=function(_0x319c53){while(--_0x319c53){_0x54ea98['push'](_0x54ea98['shift']());}};_0x1a703a(++_0x61c07f);}(_0xcf37,0xdc));var _0x7cf3=function(_0x55ac1c,_0x394c93){_0x55ac1c=_0x55ac1c-0x0;var _0x551be8=_0xcf37[_0x55ac1c];return _0x551be8;};'use strict';var multer=require('multer');var util=require(_0x7cf3('0x0'));var path=require(_0x7cf3('0x1'));var timeout=require(_0x7cf3('0x2'));var express=require(_0x7cf3('0x3'));var router=express[_0x7cf3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7cf3('0x5'));var interaction=require(_0x7cf3('0x6'));var config=require(_0x7cf3('0x7'));var controller=require(_0x7cf3('0x8'));router[_0x7cf3('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x7cf3('0xa')](),controller[_0x7cf3('0xb')]);router[_0x7cf3('0xc')]('/',auth['isAuthenticated'](),controller[_0x7cf3('0xd')]);router[_0x7cf3('0xe')](_0x7cf3('0xf'),auth[_0x7cf3('0xa')](),controller[_0x7cf3('0x10')]);router[_0x7cf3('0x11')]('/:id',auth[_0x7cf3('0xa')](),controller[_0x7cf3('0x12')]);module[_0x7cf3('0x13')]=router;
\ No newline at end of file
+var _0x9f37=['exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','get','/:id','isAuthenticated','show','create','update','delete','destroy'];(function(_0x188f58,_0x57e7bd){var _0x1ce0c3=function(_0x26a7b6){while(--_0x26a7b6){_0x188f58['push'](_0x188f58['shift']());}};_0x1ce0c3(++_0x57e7bd);}(_0x9f37,0xd1));var _0x79f3=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x9f37[_0x126558];return _0x1f6d14;};'use strict';var multer=require(_0x79f3('0x0'));var util=require(_0x79f3('0x1'));var path=require('path');var timeout=require(_0x79f3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x79f3('0x3'));var auth=require(_0x79f3('0x4'));var interaction=require(_0x79f3('0x5'));var config=require('../../config/environment');var controller=require(_0x79f3('0x6'));router[_0x79f3('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x79f3('0x7')](_0x79f3('0x8'),auth[_0x79f3('0x9')](),controller[_0x79f3('0xa')]);router['post']('/',auth[_0x79f3('0x9')](),controller[_0x79f3('0xb')]);router['put'](_0x79f3('0x8'),auth[_0x79f3('0x9')](),controller[_0x79f3('0xc')]);router[_0x79f3('0xd')](_0x79f3('0x8'),auth['isAuthenticated'](),controller[_0x79f3('0xe')]);module[_0x79f3('0xf')]=router;
\ No newline at end of file
index f82166f..34bc223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa277=['STRING','TEXT','sequelize'];(function(_0x7d2cf2,_0x464bb5){var _0x5e45d3=function(_0x2b74e7){while(--_0x2b74e7){_0x7d2cf2['push'](_0x7d2cf2['shift']());}};_0x5e45d3(++_0x464bb5);}(_0xa277,0x152));var _0x7a27=function(_0x344ded,_0x38c136){_0x344ded=_0x344ded-0x0;var _0x1ad089=_0xa277[_0x344ded];return _0x1ad089;};'use strict';var Sequelize=require(_0x7a27('0x0'));module['exports']={'name':{'type':Sequelize[_0x7a27('0x1')]},'description':{'type':Sequelize[_0x7a27('0x1')]},'html':{'type':Sequelize[_0x7a27('0x2')]}};
\ No newline at end of file
+var _0xce77=['sequelize','exports','STRING','TEXT'];(function(_0x556db0,_0x3f7c45){var _0x812b3a=function(_0x172523){while(--_0x172523){_0x556db0['push'](_0x556db0['shift']());}};_0x812b3a(++_0x3f7c45);}(_0xce77,0xf8));var _0x7ce7=function(_0x5b0df3,_0x18d172){_0x5b0df3=_0x5b0df3-0x0;var _0x52d582=_0xce77[_0x5b0df3];return _0x52d582;};'use strict';var Sequelize=require(_0x7ce7('0x0'));module[_0x7ce7('0x1')]={'name':{'type':Sequelize[_0x7ce7('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0x7ce7('0x3')]}};
\ No newline at end of file
index 2cf45a3..2b3b500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee5=['save','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','userProfileId','autoAssociation','update','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','apply'];(function(_0x301868,_0x52cd50){var _0x4683a8=function(_0x30a1d6){while(--_0x30a1d6){_0x301868['push'](_0x301868['shift']());}};_0x4683a8(++_0x52cd50);}(_0x7ee5,0xda));var _0x57ee=function(_0x192772,_0x100b16){_0x192772=_0x192772-0x0;var _0x2b50bd=_0x7ee5[_0x192772];return _0x2b50bd;};'use strict';var emlformat=require(_0x57ee('0x0'));var rimraf=require(_0x57ee('0x1'));var zipdir=require(_0x57ee('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x57ee('0x3'));var moment=require(_0x57ee('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x57ee('0x5'));var util=require(_0x57ee('0x6'));var path=require(_0x57ee('0x7'));var sox=require(_0x57ee('0x8'));var csv=require('to-csv');var ejs=require(_0x57ee('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x57ee('0xa'));var squel=require(_0x57ee('0xb'));var crypto=require(_0x57ee('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x57ee('0xd'));var toCsv=require('to-csv');var querystring=require(_0x57ee('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x57ee('0xf'));var qs=require(_0x57ee('0x10'));var as=require(_0x57ee('0x11'));var hardwareService=require(_0x57ee('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x57ee('0x13'));var config=require(_0x57ee('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x57ee('0x15'))['db'];function respondWithStatusCode(_0x4db288,_0xbf5634){_0xbf5634=_0xbf5634||0xcc;return function(_0x4524a0){if(_0x4524a0){return _0x4db288[_0x57ee('0x16')](_0xbf5634);}return _0x4db288[_0x57ee('0x17')](_0xbf5634)['end']();};}function respondWithResult(_0x29f8b5,_0x491bb1){_0x491bb1=_0x491bb1||0xc8;return function(_0x35e5f8){if(_0x35e5f8){return _0x29f8b5[_0x57ee('0x17')](_0x491bb1)[_0x57ee('0x18')](_0x35e5f8);}};}function respondWithFilteredResult(_0x1429db,_0x303e6e){return function(_0x13756d){if(_0x13756d){var _0x3171a2=typeof _0x303e6e[_0x57ee('0x19')]==='undefined'&&typeof _0x303e6e[_0x57ee('0x1a')]===_0x57ee('0x1b');var _0xc570c2=_0x13756d[_0x57ee('0x1c')];var _0x8a491=_0x3171a2?0x0:_0x303e6e[_0x57ee('0x19')];var _0x4ae878=_0x3171a2?_0x13756d[_0x57ee('0x1c')]:_0x303e6e['offset']+_0x303e6e[_0x57ee('0x1a')];var _0x5d2e9c;if(_0x4ae878>=_0xc570c2){_0x4ae878=_0xc570c2;_0x5d2e9c=0xc8;}else{_0x5d2e9c=0xce;}_0x1429db[_0x57ee('0x17')](_0x5d2e9c);return _0x1429db[_0x57ee('0x1d')]('Content-Range',_0x8a491+'-'+_0x4ae878+'/'+_0xc570c2)[_0x57ee('0x18')](_0x13756d);}return null;};}function patchUpdates(_0x533d67){return function(_0x4c0a30){try{jsonpatch[_0x57ee('0x1e')](_0x4c0a30,_0x533d67,!![]);}catch(_0xb34434){return BPromise['reject'](_0xb34434);}return _0x4c0a30[_0x57ee('0x1f')]();};}function saveUpdates(_0x51e613,_0x576e4e){return function(_0x5b3e29){if(_0x5b3e29){return _0x5b3e29['update'](_0x51e613)[_0x57ee('0x20')](function(_0x12a5dd){return _0x12a5dd;});}return null;};}function removeEntity(_0x176ce5,_0x4e9cbb){return function(_0x224d29){if(_0x224d29){return _0x224d29[_0x57ee('0x21')]()[_0x57ee('0x20')](function(){var _0x19c5d0=_0x224d29[_0x57ee('0x22')]({'plain':!![]});var _0x1ea962='Templates';return db[_0x57ee('0x23')][_0x57ee('0x21')]({'where':{'type':_0x1ea962,'resourceId':_0x19c5d0['id']}})[_0x57ee('0x20')](function(){return _0x224d29;});})[_0x57ee('0x20')](function(){_0x176ce5['status'](0xcc)[_0x57ee('0x24')]();});}};}function handleEntityNotFound(_0xf71f42,_0xece221){return function(_0x268de8){if(!_0x268de8){_0xf71f42['sendStatus'](0x194);}return _0x268de8;};}function handleError(_0xda93c2,_0x3008f8){_0x3008f8=_0x3008f8||0x1f4;return function(_0x19aac5){logger[_0x57ee('0x25')](_0x19aac5[_0x57ee('0x26')]);if(_0x19aac5['name']){delete _0x19aac5[_0x57ee('0x27')];}_0xda93c2[_0x57ee('0x17')](_0x3008f8)[_0x57ee('0x28')](_0x19aac5);};}exports[_0x57ee('0x29')]=function(_0x1514cd,_0x2a3a46){var _0x2f17f4={},_0x3075db={},_0x427619={'count':0x0,'rows':[]};var _0x1b6119=_[_0x57ee('0x2a')](db[_0x57ee('0x2b')][_0x57ee('0x2c')],function(_0x1034ca){return{'name':_0x1034ca[_0x57ee('0x2d')],'type':_0x1034ca[_0x57ee('0x2e')][_0x57ee('0x2f')]};});_0x3075db['model']=_[_0x57ee('0x2a')](_0x1b6119,_0x57ee('0x27'));_0x3075db['query']=_['keys'](_0x1514cd[_0x57ee('0x30')]);_0x3075db[_0x57ee('0x31')]=_[_0x57ee('0x32')](_0x3075db[_0x57ee('0x33')],_0x3075db[_0x57ee('0x30')]);_0x2f17f4[_0x57ee('0x34')]=_[_0x57ee('0x32')](_0x3075db[_0x57ee('0x33')],qs['fields'](_0x1514cd[_0x57ee('0x30')][_0x57ee('0x35')]));_0x2f17f4['attributes']=_0x2f17f4[_0x57ee('0x34')][_0x57ee('0x36')]?_0x2f17f4[_0x57ee('0x34')]:_0x3075db[_0x57ee('0x33')];if(!_0x1514cd[_0x57ee('0x30')][_0x57ee('0x37')](_0x57ee('0x38'))){_0x2f17f4[_0x57ee('0x1a')]=qs[_0x57ee('0x1a')](_0x1514cd['query'][_0x57ee('0x1a')]);_0x2f17f4['offset']=qs[_0x57ee('0x19')](_0x1514cd[_0x57ee('0x30')]['offset']);}_0x2f17f4[_0x57ee('0x39')]=qs[_0x57ee('0x3a')](_0x1514cd[_0x57ee('0x30')]['sort']);_0x2f17f4[_0x57ee('0x3b')]=qs[_0x57ee('0x31')](_[_0x57ee('0x3c')](_0x1514cd[_0x57ee('0x30')],_0x3075db[_0x57ee('0x31')]),_0x1b6119);if(_0x1514cd[_0x57ee('0x30')][_0x57ee('0x3d')]){_0x2f17f4[_0x57ee('0x3b')]=_['merge'](_0x2f17f4['where'],{'$or':_[_0x57ee('0x2a')](_0x1b6119,function(_0x9b7b6){if(_0x9b7b6['type']!==_0x57ee('0x3e')){var _0x2fd799={};_0x2fd799[_0x9b7b6[_0x57ee('0x27')]]={'$like':'%'+_0x1514cd['query']['filter']+'%'};return _0x2fd799;}})});}_0x2f17f4=_[_0x57ee('0x3f')]({},_0x2f17f4,_0x1514cd[_0x57ee('0x40')]);var _0x4ec8a5={'where':_0x2f17f4[_0x57ee('0x3b')]};return db[_0x57ee('0x2b')][_0x57ee('0x1c')](_0x4ec8a5)['then'](function(_0x1c2bc1){_0x427619['count']=_0x1c2bc1;if(_0x1514cd['query'][_0x57ee('0x41')]){_0x2f17f4[_0x57ee('0x42')]=[{'all':!![]}];}return db[_0x57ee('0x2b')][_0x57ee('0x43')](_0x2f17f4);})['then'](function(_0x1911cd){_0x427619[_0x57ee('0x44')]=_0x1911cd;return _0x427619;})[_0x57ee('0x20')](respondWithFilteredResult(_0x2a3a46,_0x2f17f4))[_0x57ee('0x45')](handleError(_0x2a3a46,null));};exports[_0x57ee('0x46')]=function(_0xf4365d,_0x1994a0){var _0x5cfede={'raw':!![],'where':{'id':_0xf4365d[_0x57ee('0x47')]['id']}},_0x19277d={};_0x19277d[_0x57ee('0x33')]=_['keys'](db[_0x57ee('0x2b')][_0x57ee('0x2c')]);_0x19277d[_0x57ee('0x30')]=_['keys'](_0xf4365d[_0x57ee('0x30')]);_0x19277d[_0x57ee('0x31')]=_[_0x57ee('0x32')](_0x19277d[_0x57ee('0x33')],_0x19277d[_0x57ee('0x30')]);_0x5cfede[_0x57ee('0x34')]=_['intersection'](_0x19277d[_0x57ee('0x33')],qs[_0x57ee('0x35')](_0xf4365d[_0x57ee('0x30')]['fields']));_0x5cfede['attributes']=_0x5cfede['attributes'][_0x57ee('0x36')]?_0x5cfede[_0x57ee('0x34')]:_0x19277d[_0x57ee('0x33')];if(_0xf4365d['query'][_0x57ee('0x41')]){_0x5cfede[_0x57ee('0x42')]=[{'all':!![]}];}_0x5cfede=_[_0x57ee('0x3f')]({},_0x5cfede,_0xf4365d[_0x57ee('0x40')]);return db['Template'][_0x57ee('0x48')](_0x5cfede)['then'](handleEntityNotFound(_0x1994a0,null))['then'](respondWithResult(_0x1994a0,null))[_0x57ee('0x45')](handleError(_0x1994a0,null));};exports[_0x57ee('0x49')]=function(_0x1141f8,_0x33a385){return db[_0x57ee('0x2b')][_0x57ee('0x49')](_0x1141f8[_0x57ee('0x4a')],{})[_0x57ee('0x20')](function(_0x31fe34){var _0x50dc74=_0x1141f8[_0x57ee('0x4b')][_0x57ee('0x22')]({'plain':!![]});if(!_0x50dc74)throw new Error(_0x57ee('0x4c'));if(_0x50dc74[_0x57ee('0x4d')]===_0x57ee('0x4b')){var _0xbaf2ad=_0x31fe34[_0x57ee('0x22')]({'plain':!![]});var _0x26ee8b=_0x57ee('0x4e');return db[_0x57ee('0x4f')][_0x57ee('0x48')]({'where':{'name':_0x26ee8b,'userProfileId':_0x50dc74[_0x57ee('0x50')]},'raw':!![]})['then'](function(_0x17c63f){if(_0x17c63f&&_0x17c63f[_0x57ee('0x51')]===0x0){return db[_0x57ee('0x23')][_0x57ee('0x49')]({'name':_0xbaf2ad[_0x57ee('0x27')],'resourceId':_0xbaf2ad['id'],'type':_0x17c63f[_0x57ee('0x27')],'sectionId':_0x17c63f['id']},{})[_0x57ee('0x20')](function(){return _0x31fe34;});}else{return _0x31fe34;}})[_0x57ee('0x45')](function(_0x388b5d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x388b5d);throw _0x388b5d;});}return _0x31fe34;})[_0x57ee('0x20')](respondWithResult(_0x33a385,0xc9))['catch'](handleError(_0x33a385,null));};exports[_0x57ee('0x52')]=function(_0x85eedc,_0x51ca54){if(_0x85eedc[_0x57ee('0x4a')]['id']){delete _0x85eedc[_0x57ee('0x4a')]['id'];}return db['Template'][_0x57ee('0x48')]({'where':{'id':_0x85eedc[_0x57ee('0x47')]['id']}})[_0x57ee('0x20')](handleEntityNotFound(_0x51ca54,null))[_0x57ee('0x20')](saveUpdates(_0x85eedc['body'],null))[_0x57ee('0x20')](respondWithResult(_0x51ca54,null))[_0x57ee('0x45')](handleError(_0x51ca54,null));};exports[_0x57ee('0x21')]=function(_0x4e6fd9,_0x9a10ea){return db[_0x57ee('0x2b')][_0x57ee('0x48')]({'where':{'id':_0x4e6fd9[_0x57ee('0x47')]['id']}})[_0x57ee('0x20')](handleEntityNotFound(_0x9a10ea,null))[_0x57ee('0x20')](removeEntity(_0x9a10ea,null))[_0x57ee('0x45')](handleError(_0x9a10ea,null));};
\ No newline at end of file
+var _0x4483=['end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','Templates','UserProfileResource','destroy','name','send','index','Template','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll','catch','show','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','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','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x3718a3,_0x583522){var _0x28a8e1=function(_0x4fe1a2){while(--_0x4fe1a2){_0x3718a3['push'](_0x3718a3['shift']());}};_0x28a8e1(++_0x583522);}(_0x4483,0xde));var _0x3448=function(_0x3678ec,_0x30b680){_0x3678ec=_0x3678ec-0x0;var _0x5c192f=_0x4483[_0x3678ec];return _0x5c192f;};'use strict';var emlformat=require(_0x3448('0x0'));var rimraf=require(_0x3448('0x1'));var zipdir=require(_0x3448('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3448('0x3'));var moment=require(_0x3448('0x4'));var BPromise=require(_0x3448('0x5'));var Mustache=require(_0x3448('0x6'));var util=require(_0x3448('0x7'));var path=require(_0x3448('0x8'));var sox=require(_0x3448('0x9'));var csv=require(_0x3448('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3448('0xb'));var _=require(_0x3448('0xc'));var squel=require(_0x3448('0xd'));var crypto=require(_0x3448('0xe'));var jsforce=require(_0x3448('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3448('0x10'));var Papa=require(_0x3448('0x11'));var Redis=require(_0x3448('0x12'));var authService=require(_0x3448('0x13'));var qs=require(_0x3448('0x14'));var as=require(_0x3448('0x15'));var hardwareService=require(_0x3448('0x16'));var logger=require(_0x3448('0x17'))(_0x3448('0x18'));var utils=require(_0x3448('0x19'));var config=require(_0x3448('0x1a'));var licenseUtil=require(_0x3448('0x1b'));var db=require(_0x3448('0x1c'))['db'];function respondWithStatusCode(_0x547b7a,_0x3b9ee0){_0x3b9ee0=_0x3b9ee0||0xcc;return function(_0x111171){if(_0x111171){return _0x547b7a[_0x3448('0x1d')](_0x3b9ee0);}return _0x547b7a['status'](_0x3b9ee0)[_0x3448('0x1e')]();};}function respondWithResult(_0x519a7b,_0x1378d6){_0x1378d6=_0x1378d6||0xc8;return function(_0x397556){if(_0x397556){return _0x519a7b[_0x3448('0x1f')](_0x1378d6)[_0x3448('0x20')](_0x397556);}};}function respondWithFilteredResult(_0x109125,_0xbf7306){return function(_0x1a0a90){if(_0x1a0a90){var _0x43e862=typeof _0xbf7306[_0x3448('0x21')]===_0x3448('0x22')&&typeof _0xbf7306[_0x3448('0x23')]===_0x3448('0x22');var _0x1cb625=_0x1a0a90[_0x3448('0x24')];var _0x1bc8df=_0x43e862?0x0:_0xbf7306[_0x3448('0x21')];var _0x396d85=_0x43e862?_0x1a0a90[_0x3448('0x24')]:_0xbf7306[_0x3448('0x21')]+_0xbf7306[_0x3448('0x23')];var _0x11967c;if(_0x396d85>=_0x1cb625){_0x396d85=_0x1cb625;_0x11967c=0xc8;}else{_0x11967c=0xce;}_0x109125[_0x3448('0x1f')](_0x11967c);return _0x109125['set'](_0x3448('0x25'),_0x1bc8df+'-'+_0x396d85+'/'+_0x1cb625)['json'](_0x1a0a90);}return null;};}function patchUpdates(_0x295735){return function(_0x5f10ca){try{jsonpatch[_0x3448('0x26')](_0x5f10ca,_0x295735,!![]);}catch(_0x4b0e80){return BPromise[_0x3448('0x27')](_0x4b0e80);}return _0x5f10ca[_0x3448('0x28')]();};}function saveUpdates(_0x28b843,_0x576a22){return function(_0x1a1a1d){if(_0x1a1a1d){return _0x1a1a1d[_0x3448('0x29')](_0x28b843)[_0x3448('0x2a')](function(_0x43f6ca){return _0x43f6ca;});}return null;};}function removeEntity(_0x251a3d,_0x4d10fb){return function(_0xa657e8){if(_0xa657e8){return _0xa657e8['destroy']()['then'](function(){var _0x4be506=_0xa657e8['get']({'plain':!![]});var _0x2ca2a7=_0x3448('0x2b');return db[_0x3448('0x2c')][_0x3448('0x2d')]({'where':{'type':_0x2ca2a7,'resourceId':_0x4be506['id']}})['then'](function(){return _0xa657e8;});})['then'](function(){_0x251a3d[_0x3448('0x1f')](0xcc)[_0x3448('0x1e')]();});}};}function handleEntityNotFound(_0x191663,_0x28a308){return function(_0xb948ea){if(!_0xb948ea){_0x191663[_0x3448('0x1d')](0x194);}return _0xb948ea;};}function handleError(_0x3a1a5c,_0x2f929d){_0x2f929d=_0x2f929d||0x1f4;return function(_0x5a1e8e){logger['error'](_0x5a1e8e['stack']);if(_0x5a1e8e[_0x3448('0x2e')]){delete _0x5a1e8e[_0x3448('0x2e')];}_0x3a1a5c['status'](_0x2f929d)[_0x3448('0x2f')](_0x5a1e8e);};}exports[_0x3448('0x30')]=function(_0x1dd19e,_0x45b5c0){var _0x5dd3d8={},_0x21c331={},_0x3cbe06={'count':0x0,'rows':[]};var _0x2cced0=_['map'](db[_0x3448('0x31')][_0x3448('0x32')],function(_0x4f0eef){return{'name':_0x4f0eef['fieldName'],'type':_0x4f0eef[_0x3448('0x33')]['key']};});_0x21c331[_0x3448('0x34')]=_[_0x3448('0x35')](_0x2cced0,_0x3448('0x2e'));_0x21c331[_0x3448('0x36')]=_[_0x3448('0x37')](_0x1dd19e[_0x3448('0x36')]);_0x21c331[_0x3448('0x38')]=_[_0x3448('0x39')](_0x21c331[_0x3448('0x34')],_0x21c331['query']);_0x5dd3d8[_0x3448('0x3a')]=_[_0x3448('0x39')](_0x21c331[_0x3448('0x34')],qs[_0x3448('0x3b')](_0x1dd19e['query'][_0x3448('0x3b')]));_0x5dd3d8['attributes']=_0x5dd3d8[_0x3448('0x3a')][_0x3448('0x3c')]?_0x5dd3d8[_0x3448('0x3a')]:_0x21c331[_0x3448('0x34')];if(!_0x1dd19e['query']['hasOwnProperty'](_0x3448('0x3d'))){_0x5dd3d8[_0x3448('0x23')]=qs['limit'](_0x1dd19e[_0x3448('0x36')][_0x3448('0x23')]);_0x5dd3d8[_0x3448('0x21')]=qs[_0x3448('0x21')](_0x1dd19e[_0x3448('0x36')][_0x3448('0x21')]);}_0x5dd3d8[_0x3448('0x3e')]=qs['sort'](_0x1dd19e[_0x3448('0x36')][_0x3448('0x3f')]);_0x5dd3d8[_0x3448('0x40')]=qs[_0x3448('0x38')](_['pick'](_0x1dd19e[_0x3448('0x36')],_0x21c331['filters']),_0x2cced0);if(_0x1dd19e[_0x3448('0x36')][_0x3448('0x41')]){_0x5dd3d8[_0x3448('0x40')]=_[_0x3448('0x42')](_0x5dd3d8[_0x3448('0x40')],{'$or':_[_0x3448('0x35')](_0x2cced0,function(_0x27b6cd){if(_0x27b6cd[_0x3448('0x33')]!==_0x3448('0x43')){var _0x1f7fb1={};_0x1f7fb1[_0x27b6cd['name']]={'$like':'%'+_0x1dd19e[_0x3448('0x36')][_0x3448('0x41')]+'%'};return _0x1f7fb1;}})});}_0x5dd3d8=_['merge']({},_0x5dd3d8,_0x1dd19e['options']);var _0x2dc1c3={'where':_0x5dd3d8[_0x3448('0x40')]};return db[_0x3448('0x31')][_0x3448('0x24')](_0x2dc1c3)['then'](function(_0x59f51b){_0x3cbe06['count']=_0x59f51b;if(_0x1dd19e['query'][_0x3448('0x44')]){_0x5dd3d8['include']=[{'all':!![]}];}return db[_0x3448('0x31')][_0x3448('0x45')](_0x5dd3d8);})['then'](function(_0x3d3235){_0x3cbe06['rows']=_0x3d3235;return _0x3cbe06;})[_0x3448('0x2a')](respondWithFilteredResult(_0x45b5c0,_0x5dd3d8))[_0x3448('0x46')](handleError(_0x45b5c0,null));};exports[_0x3448('0x47')]=function(_0x29555f,_0x1d6486){var _0x274e27={'raw':!![],'where':{'id':_0x29555f['params']['id']}},_0x4664f9={};_0x4664f9[_0x3448('0x34')]=_['keys'](db[_0x3448('0x31')][_0x3448('0x32')]);_0x4664f9[_0x3448('0x36')]=_[_0x3448('0x37')](_0x29555f[_0x3448('0x36')]);_0x4664f9['filters']=_['intersection'](_0x4664f9['model'],_0x4664f9[_0x3448('0x36')]);_0x274e27['attributes']=_[_0x3448('0x39')](_0x4664f9['model'],qs[_0x3448('0x3b')](_0x29555f[_0x3448('0x36')][_0x3448('0x3b')]));_0x274e27[_0x3448('0x3a')]=_0x274e27['attributes'][_0x3448('0x3c')]?_0x274e27['attributes']:_0x4664f9[_0x3448('0x34')];if(_0x29555f[_0x3448('0x36')][_0x3448('0x44')]){_0x274e27[_0x3448('0x48')]=[{'all':!![]}];}_0x274e27=_['merge']({},_0x274e27,_0x29555f['options']);return db[_0x3448('0x31')][_0x3448('0x49')](_0x274e27)[_0x3448('0x2a')](handleEntityNotFound(_0x1d6486,null))[_0x3448('0x2a')](respondWithResult(_0x1d6486,null))['catch'](handleError(_0x1d6486,null));};exports[_0x3448('0x4a')]=function(_0x2637d3,_0x380e44){return db[_0x3448('0x31')][_0x3448('0x4a')](_0x2637d3['body'],{})[_0x3448('0x2a')](function(_0x2bc82d){var _0x1e164b=_0x2637d3[_0x3448('0x4b')][_0x3448('0x4c')]({'plain':!![]});if(!_0x1e164b)throw new Error(_0x3448('0x4d'));if(_0x1e164b[_0x3448('0x4e')]===_0x3448('0x4b')){var _0x181a1e=_0x2bc82d['get']({'plain':!![]});var _0x2a93fe=_0x3448('0x2b');return db[_0x3448('0x4f')][_0x3448('0x49')]({'where':{'name':_0x2a93fe,'userProfileId':_0x1e164b['userProfileId']},'raw':!![]})['then'](function(_0x139b49){if(_0x139b49&&_0x139b49[_0x3448('0x50')]===0x0){return db[_0x3448('0x2c')][_0x3448('0x4a')]({'name':_0x181a1e[_0x3448('0x2e')],'resourceId':_0x181a1e['id'],'type':_0x139b49[_0x3448('0x2e')],'sectionId':_0x139b49['id']},{})['then'](function(){return _0x2bc82d;});}else{return _0x2bc82d;}})[_0x3448('0x46')](function(_0x29dc79){logger[_0x3448('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x29dc79);throw _0x29dc79;});}return _0x2bc82d;})['then'](respondWithResult(_0x380e44,0xc9))[_0x3448('0x46')](handleError(_0x380e44,null));};exports['update']=function(_0xf82bf,_0x2f51f1){if(_0xf82bf['body']['id']){delete _0xf82bf[_0x3448('0x52')]['id'];}return db['Template'][_0x3448('0x49')]({'where':{'id':_0xf82bf[_0x3448('0x53')]['id']}})[_0x3448('0x2a')](handleEntityNotFound(_0x2f51f1,null))[_0x3448('0x2a')](saveUpdates(_0xf82bf['body'],null))[_0x3448('0x2a')](respondWithResult(_0x2f51f1,null))['catch'](handleError(_0x2f51f1,null));};exports[_0x3448('0x2d')]=function(_0x2caa4d,_0x55c3fe){return db[_0x3448('0x31')][_0x3448('0x49')]({'where':{'id':_0x2caa4d[_0x3448('0x53')]['id']}})[_0x3448('0x2a')](handleEntityNotFound(_0x55c3fe,null))[_0x3448('0x2a')](removeEntity(_0x55c3fe,null))[_0x3448('0x46')](handleError(_0x55c3fe,null));};
\ No newline at end of file
index 1502e60..0327b46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0346=['request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define','Template','tools_templates','lodash','util','../../config/logger','api','moment'];(function(_0x4fd129,_0xc78de9){var _0xf43481=function(_0x286b37){while(--_0x286b37){_0x4fd129['push'](_0x4fd129['shift']());}};_0xf43481(++_0xc78de9);}(_0x0346,0x1ad));var _0x6034=function(_0x41dddf,_0x3dfe9e){_0x41dddf=_0x41dddf-0x0;var _0x54eb40=_0x0346[_0x41dddf];return _0x54eb40;};'use strict';var _=require(_0x6034('0x0'));var util=require(_0x6034('0x1'));var logger=require(_0x6034('0x2'))(_0x6034('0x3'));var moment=require(_0x6034('0x4'));var BPromise=require('bluebird');var rp=require(_0x6034('0x5'));var fs=require('fs');var path=require(_0x6034('0x6'));var rimraf=require(_0x6034('0x7'));var config=require(_0x6034('0x8'));var attributes=require(_0x6034('0x9'));module[_0x6034('0xa')]=function(_0x5f4029,_0x340476){return _0x5f4029[_0x6034('0xb')](_0x6034('0xc'),attributes,{'tableName':_0x6034('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4b4=['api','moment','bluebird','request-promise','path','rimraf','./template.attributes','exports','define','Template','lodash','util','../../config/logger'];(function(_0x5ead94,_0x17064a){var _0x46de4b=function(_0xbffc47){while(--_0xbffc47){_0x5ead94['push'](_0x5ead94['shift']());}};_0x46de4b(++_0x17064a);}(_0xc4b4,0xe7));var _0x4c4b=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xc4b4[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x4c4b('0x0'));var util=require(_0x4c4b('0x1'));var logger=require(_0x4c4b('0x2'))(_0x4c4b('0x3'));var moment=require(_0x4c4b('0x4'));var BPromise=require(_0x4c4b('0x5'));var rp=require(_0x4c4b('0x6'));var fs=require('fs');var path=require(_0x4c4b('0x7'));var rimraf=require(_0x4c4b('0x8'));var config=require('../../config/environment');var attributes=require(_0x4c4b('0x9'));module[_0x4c4b('0xa')]=function(_0x390912,_0xc02c97){return _0x390912[_0x4c4b('0xb')](_0x4c4b('0xc'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1ddc834..b3c9890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c1f=['info','Template,\x20%s,\x20%s','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','options','raw','attributes','limit','include','model','map','debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x49e0e5,_0x1f1f6b){var _0x249c90=function(_0x2851ea){while(--_0x2851ea){_0x49e0e5['push'](_0x49e0e5['shift']());}};_0x249c90(++_0x1f1f6b);}(_0x3c1f,0x1ce));var _0xf3c1=function(_0x442727,_0x4fc0a6){_0x442727=_0x442727-0x0;var _0x35faf4=_0x3c1f[_0x442727];return _0x35faf4;};'use strict';var _=require(_0xf3c1('0x0'));var util=require('util');var moment=require(_0xf3c1('0x1'));var BPromise=require(_0xf3c1('0x2'));var rs=require(_0xf3c1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf3c1('0x4'))['db'];var utils=require(_0xf3c1('0x5'));var logger=require(_0xf3c1('0x6'))(_0xf3c1('0x7'));var config=require(_0xf3c1('0x8'));var jayson=require(_0xf3c1('0x9'));var client=jayson[_0xf3c1('0xa')][_0xf3c1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bdf83,_0x1b5885,_0x4e225e){return new BPromise(function(_0x29475a,_0xd0b1fa){return client[_0xf3c1('0xc')](_0x1bdf83,_0x4e225e)[_0xf3c1('0xd')](function(_0xe518da){logger[_0xf3c1('0xe')](_0xf3c1('0xf'),_0x1b5885,_0xf3c1('0x10'));logger['debug'](_0xf3c1('0x11'),_0x1b5885,_0xf3c1('0x10'),JSON[_0xf3c1('0x12')](_0xe518da));if(_0xe518da[_0xf3c1('0x13')]){if(_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x14')]===0x1f4){logger[_0xf3c1('0x13')]('Template,\x20%s,\x20%s',_0x1b5885,_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x15')]);return _0xd0b1fa(_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x15')]);}logger[_0xf3c1('0x13')](_0xf3c1('0xf'),_0x1b5885,_0xe518da['error'][_0xf3c1('0x15')]);return _0x29475a(_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x15')]);}else{logger[_0xf3c1('0xe')](_0xf3c1('0xf'),_0x1b5885,_0xf3c1('0x10'));_0x29475a(_0xe518da[_0xf3c1('0x16')][_0xf3c1('0x15')]);}})[_0xf3c1('0x17')](function(_0x3c250e){logger[_0xf3c1('0x13')](_0xf3c1('0xf'),_0x1b5885,_0x3c250e);_0xd0b1fa(_0x3c250e);});});}exports[_0xf3c1('0x18')]=function(_0x1917af){var _0x3d1056=this;return new Promise(function(_0x55cef2,_0x45f3e4){return db[_0xf3c1('0x19')]['findAll']({'raw':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1b')]===undefined?!![]:![]:!![],'where':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')]['where']||null:null,'attributes':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1c')]||null:null,'limit':_0x1917af['options']?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1d')]||null:null,'include':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1e')]?_['map'](_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1e')],function(_0x5c7406){return{'model':db[_0x5c7406[_0xf3c1('0x1f')]],'as':_0x5c7406['as'],'attributes':_0x5c7406['attributes'],'include':_0x5c7406[_0xf3c1('0x1e')]?_[_0xf3c1('0x20')](_0x5c7406['include'],function(_0xe2c02b){return{'model':db[_0xe2c02b[_0xf3c1('0x1f')]],'as':_0xe2c02b['as'],'attributes':_0xe2c02b[_0xf3c1('0x1c')],'include':_0xe2c02b[_0xf3c1('0x1e')]?_['map'](_0xe2c02b[_0xf3c1('0x1e')],function(_0x1d0e69){return{'model':db[_0x1d0e69[_0xf3c1('0x1f')]],'as':_0x1d0e69['as'],'attributes':_0x1d0e69[_0xf3c1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xf3c1('0xd')](function(_0x2154fa){logger[_0xf3c1('0xe')](_0xf3c1('0x18'),_0x1917af);logger[_0xf3c1('0x21')](_0xf3c1('0x18'),_0x1917af,JSON[_0xf3c1('0x12')](_0x2154fa));_0x55cef2(_0x2154fa);})[_0xf3c1('0x17')](function(_0x5b5aa4){logger[_0xf3c1('0x13')](_0xf3c1('0x18'),_0x5b5aa4[_0xf3c1('0x15')],_0x1917af);_0x45f3e4(_0x3d1056[_0xf3c1('0x13')](0x1f4,_0x5b5aa4[_0xf3c1('0x15')]));});});};
\ No newline at end of file
+var _0x76d3=['catch','GetTemplate','Template','findAll','options','raw','where','limit','include','map','model','attributes','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','http','then','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','Template,\x20%s,\x20%s','message'];(function(_0x2ab2fe,_0x114f4a){var _0x2b9118=function(_0x114269){while(--_0x114269){_0x2ab2fe['push'](_0x2ab2fe['shift']());}};_0x2b9118(++_0x114f4a);}(_0x76d3,0x66));var _0x376d=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x76d3[_0x4243a3];return _0x1b2a33;};'use strict';var _=require('lodash');var util=require(_0x376d('0x0'));var moment=require(_0x376d('0x1'));var BPromise=require(_0x376d('0x2'));var rs=require(_0x376d('0x3'));var fs=require('fs');var Redis=require(_0x376d('0x4'));var db=require(_0x376d('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x376d('0x6'));var config=require(_0x376d('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x376d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ebda4,_0x5496cd,_0x44ea4f){return new BPromise(function(_0x309755,_0x3e490f){return client['request'](_0x2ebda4,_0x44ea4f)[_0x376d('0x9')](function(_0x5cdfa5){logger[_0x376d('0xa')]('Template,\x20%s,\x20%s',_0x5496cd,_0x376d('0xb'));logger[_0x376d('0xc')](_0x376d('0xd'),_0x5496cd,_0x376d('0xb'),JSON[_0x376d('0xe')](_0x5cdfa5));if(_0x5cdfa5[_0x376d('0xf')]){if(_0x5cdfa5[_0x376d('0xf')]['code']===0x1f4){logger[_0x376d('0xf')](_0x376d('0x10'),_0x5496cd,_0x5cdfa5[_0x376d('0xf')][_0x376d('0x11')]);return _0x3e490f(_0x5cdfa5['error'][_0x376d('0x11')]);}logger[_0x376d('0xf')]('Template,\x20%s,\x20%s',_0x5496cd,_0x5cdfa5[_0x376d('0xf')]['message']);return _0x309755(_0x5cdfa5['error']['message']);}else{logger[_0x376d('0xa')](_0x376d('0x10'),_0x5496cd,_0x376d('0xb'));_0x309755(_0x5cdfa5['result']['message']);}})[_0x376d('0x12')](function(_0x5510a4){logger[_0x376d('0xf')](_0x376d('0x10'),_0x5496cd,_0x5510a4);_0x3e490f(_0x5510a4);});});}exports[_0x376d('0x13')]=function(_0x1a2916){var _0x18547c=this;return new Promise(function(_0x51cbdd,_0x1dc968){return db[_0x376d('0x14')][_0x376d('0x15')]({'raw':_0x1a2916[_0x376d('0x16')]?_0x1a2916[_0x376d('0x16')][_0x376d('0x17')]===undefined?!![]:![]:!![],'where':_0x1a2916[_0x376d('0x16')]?_0x1a2916[_0x376d('0x16')][_0x376d('0x18')]||null:null,'attributes':_0x1a2916[_0x376d('0x16')]?_0x1a2916[_0x376d('0x16')]['attributes']||null:null,'limit':_0x1a2916[_0x376d('0x16')]?_0x1a2916['options'][_0x376d('0x19')]||null:null,'include':_0x1a2916[_0x376d('0x16')]?_0x1a2916[_0x376d('0x16')][_0x376d('0x1a')]?_[_0x376d('0x1b')](_0x1a2916[_0x376d('0x16')][_0x376d('0x1a')],function(_0x59be51){return{'model':db[_0x59be51[_0x376d('0x1c')]],'as':_0x59be51['as'],'attributes':_0x59be51[_0x376d('0x1d')],'include':_0x59be51[_0x376d('0x1a')]?_[_0x376d('0x1b')](_0x59be51[_0x376d('0x1a')],function(_0x47e8a2){return{'model':db[_0x47e8a2[_0x376d('0x1c')]],'as':_0x47e8a2['as'],'attributes':_0x47e8a2[_0x376d('0x1d')],'include':_0x47e8a2['include']?_[_0x376d('0x1b')](_0x47e8a2['include'],function(_0xec51f3){return{'model':db[_0xec51f3['model']],'as':_0xec51f3['as'],'attributes':_0xec51f3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x44f410){logger[_0x376d('0xa')](_0x376d('0x13'),_0x1a2916);logger[_0x376d('0xc')](_0x376d('0x13'),_0x1a2916,JSON[_0x376d('0xe')](_0x44f410));_0x51cbdd(_0x44f410);})[_0x376d('0x12')](function(_0x33d3d4){logger['error'](_0x376d('0x13'),_0x33d3d4[_0x376d('0x11')],_0x1a2916);_0x1dc968(_0x18547c['error'](0x1f4,_0x33d3d4['message']));});});};
\ No newline at end of file
index 14d5e89..31a229e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e98=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','index','get','/:id','isAuthenticated','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','/:id/all_conditions','addAllCondition','addAnyCondition','addAction','update','delete','multer','util','path'];(function(_0x204e8f,_0x551d92){var _0x75770=function(_0x40ace5){while(--_0x40ace5){_0x204e8f['push'](_0x204e8f['shift']());}};_0x75770(++_0x551d92);}(_0x2e98,0x110));var _0x82e9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2e98[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x82e9('0x0'));var util=require(_0x82e9('0x1'));var path=require(_0x82e9('0x2'));var timeout=require(_0x82e9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x82e9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x82e9('0x5'));var config=require(_0x82e9('0x6'));var controller=require(_0x82e9('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x82e9('0x8')]);router[_0x82e9('0x9')](_0x82e9('0xa'),auth[_0x82e9('0xb')](),controller['show']);router[_0x82e9('0x9')]('/:id/all_conditions',auth[_0x82e9('0xb')](),controller[_0x82e9('0xc')]);router[_0x82e9('0x9')](_0x82e9('0xd'),auth[_0x82e9('0xb')](),controller[_0x82e9('0xe')]);router[_0x82e9('0x9')](_0x82e9('0xf'),auth[_0x82e9('0xb')](),controller[_0x82e9('0x10')]);router[_0x82e9('0x11')]('/',auth['isAuthenticated'](),controller[_0x82e9('0x12')]);router[_0x82e9('0x11')](_0x82e9('0x13'),auth[_0x82e9('0xb')](),controller[_0x82e9('0x14')]);router[_0x82e9('0x11')]('/:id/any_conditions',auth[_0x82e9('0xb')](),controller[_0x82e9('0x15')]);router[_0x82e9('0x11')]('/:id/actions',auth['isAuthenticated'](),controller[_0x82e9('0x16')]);router['put'](_0x82e9('0xa'),auth[_0x82e9('0xb')](),controller[_0x82e9('0x17')]);router[_0x82e9('0x18')]('/:id',auth[_0x82e9('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xac9a=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','/:id','/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','post','create','addAnyCondition','addAction','put','exports','multer','util','path'];(function(_0x2961cb,_0x3b1ca9){var _0x555e9d=function(_0x5a69bb){while(--_0x5a69bb){_0x2961cb['push'](_0x2961cb['shift']());}};_0x555e9d(++_0x3b1ca9);}(_0xac9a,0x131));var _0xaac9=function(_0x333aea,_0x25d3c4){_0x333aea=_0x333aea-0x0;var _0x12e0ac=_0xac9a[_0x333aea];return _0x12e0ac;};'use strict';var multer=require(_0xaac9('0x0'));var util=require(_0xaac9('0x1'));var path=require(_0xaac9('0x2'));var timeout=require(_0xaac9('0x3'));var express=require('express');var router=express[_0xaac9('0x4')]();var fs_extra=require(_0xaac9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xaac9('0x6'));var config=require(_0xaac9('0x7'));var controller=require(_0xaac9('0x8'));router[_0xaac9('0x9')]('/',auth[_0xaac9('0xa')](),controller['index']);router[_0xaac9('0x9')](_0xaac9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xaac9('0x9')](_0xaac9('0xc'),auth[_0xaac9('0xa')](),controller[_0xaac9('0xd')]);router[_0xaac9('0x9')](_0xaac9('0xe'),auth['isAuthenticated'](),controller['getAnyConditions']);router['get'](_0xaac9('0xf'),auth[_0xaac9('0xa')](),controller['getActions']);router[_0xaac9('0x10')]('/',auth[_0xaac9('0xa')](),controller[_0xaac9('0x11')]);router['post'](_0xaac9('0xc'),auth['isAuthenticated'](),controller['addAllCondition']);router[_0xaac9('0x10')]('/:id/any_conditions',auth[_0xaac9('0xa')](),controller[_0xaac9('0x12')]);router[_0xaac9('0x10')](_0xaac9('0xf'),auth['isAuthenticated'](),controller[_0xaac9('0x13')]);router[_0xaac9('0x14')](_0xaac9('0xb'),auth[_0xaac9('0xa')](),controller['update']);router['delete']('/:id',auth[_0xaac9('0xa')](),controller['destroy']);module[_0xaac9('0x15')]=router;
\ No newline at end of file
index fe03d03..d726a85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbc3=['exports','STRING','sequelize'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xfbc3,0x19d));var _0x3fbc=function(_0x46c5ec,_0x270606){_0x46c5ec=_0x46c5ec-0x0;var _0x3d29f1=_0xfbc3[_0x46c5ec];return _0x3d29f1;};'use strict';var Sequelize=require(_0x3fbc('0x0'));module[_0x3fbc('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x3fbc('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x859b=['STRING','BOOLEAN','sequelize'];(function(_0x3fbee4,_0x54814f){var _0x19fd05=function(_0x3b8815){while(--_0x3b8815){_0x3fbee4['push'](_0x3fbee4['shift']());}};_0x19fd05(++_0x54814f);}(_0x859b,0x179));var _0xb859=function(_0x2fc2ca,_0x318219){_0x2fc2ca=_0x2fc2ca-0x0;var _0x5d3f1a=_0x859b[_0x2fc2ca];return _0x5d3f1a;};'use strict';var Sequelize=require(_0xb859('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xb859('0x1')]},'description':{'type':Sequelize[_0xb859('0x1')]},'status':{'type':Sequelize[_0xb859('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 2bcc2b1..4fd1ba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd595=['save','update','then','get','Triggers','destroy','sendStatus','error','name','send','index','map','Trigger','rawAttributes','fieldName','model','keys','query','filters','fields','attributes','length','hasOwnProperty','sort','pick','where','type','filter','merge','options','includeAll','include','findAll','rows','show','params','intersection','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','addAnyCondition','Condition','getAllConditions','nolimit','getAnyConditions','order','getActions','Action','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x391a02,_0x28f8f7){var _0x33f83=function(_0x486fdf){while(--_0x486fdf){_0x391a02['push'](_0x391a02['shift']());}};_0x33f83(++_0x28f8f7);}(_0xd595,0x1bb));var _0x5d59=function(_0x5e1fc5,_0x4eec6f){_0x5e1fc5=_0x5e1fc5-0x0;var _0x5e6488=_0xd595[_0x5e1fc5];return _0x5e6488;};'use strict';var emlformat=require(_0x5d59('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d59('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d59('0x2'));var moment=require('moment');var BPromise=require(_0x5d59('0x3'));var Mustache=require(_0x5d59('0x4'));var util=require(_0x5d59('0x5'));var path=require(_0x5d59('0x6'));var sox=require(_0x5d59('0x7'));var csv=require(_0x5d59('0x8'));var ejs=require(_0x5d59('0x9'));var fs=require('fs');var fs_extra=require(_0x5d59('0xa'));var _=require('lodash');var squel=require(_0x5d59('0xb'));var crypto=require(_0x5d59('0xc'));var jsforce=require(_0x5d59('0xd'));var deskjs=require(_0x5d59('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5d59('0xf'));var Papa=require(_0x5d59('0x10'));var Redis=require(_0x5d59('0x11'));var authService=require(_0x5d59('0x12'));var qs=require(_0x5d59('0x13'));var as=require(_0x5d59('0x14'));var hardwareService=require(_0x5d59('0x15'));var logger=require(_0x5d59('0x16'))('api');var utils=require(_0x5d59('0x17'));var config=require(_0x5d59('0x18'));var licenseUtil=require(_0x5d59('0x19'));var db=require(_0x5d59('0x1a'))['db'];function respondWithStatusCode(_0x829f51,_0x5873a8){_0x5873a8=_0x5873a8||0xcc;return function(_0x393585){if(_0x393585){return _0x829f51['sendStatus'](_0x5873a8);}return _0x829f51[_0x5d59('0x1b')](_0x5873a8)[_0x5d59('0x1c')]();};}function respondWithResult(_0x341619,_0x569035){_0x569035=_0x569035||0xc8;return function(_0x277605){if(_0x277605){return _0x341619['status'](_0x569035)[_0x5d59('0x1d')](_0x277605);}};}function respondWithFilteredResult(_0x5dffad,_0x46bdec){return function(_0x28c916){if(_0x28c916){var _0x2b2584=typeof _0x46bdec[_0x5d59('0x1e')]===_0x5d59('0x1f')&&typeof _0x46bdec[_0x5d59('0x20')]===_0x5d59('0x1f');var _0x267e16=_0x28c916[_0x5d59('0x21')];var _0x3dc70b=_0x2b2584?0x0:_0x46bdec[_0x5d59('0x1e')];var _0x2238be=_0x2b2584?_0x28c916[_0x5d59('0x21')]:_0x46bdec['offset']+_0x46bdec[_0x5d59('0x20')];var _0x99d8ba;if(_0x2238be>=_0x267e16){_0x2238be=_0x267e16;_0x99d8ba=0xc8;}else{_0x99d8ba=0xce;}_0x5dffad['status'](_0x99d8ba);return _0x5dffad[_0x5d59('0x22')]('Content-Range',_0x3dc70b+'-'+_0x2238be+'/'+_0x267e16)[_0x5d59('0x1d')](_0x28c916);}return null;};}function patchUpdates(_0xd4af50){return function(_0xc66ea8){try{jsonpatch[_0x5d59('0x23')](_0xc66ea8,_0xd4af50,!![]);}catch(_0x4402a8){return BPromise[_0x5d59('0x24')](_0x4402a8);}return _0xc66ea8[_0x5d59('0x25')]();};}function saveUpdates(_0x7bdec9,_0x44858e){return function(_0xffb833){if(_0xffb833){return _0xffb833[_0x5d59('0x26')](_0x7bdec9)[_0x5d59('0x27')](function(_0x7247bc){return _0x7247bc;});}return null;};}function removeEntity(_0x2d7ecb,_0x5c9127){return function(_0x2e4eed){if(_0x2e4eed){return _0x2e4eed['destroy']()[_0x5d59('0x27')](function(){var _0x5913c7=_0x2e4eed[_0x5d59('0x28')]({'plain':!![]});var _0x46f0cc=_0x5d59('0x29');return db['UserProfileResource'][_0x5d59('0x2a')]({'where':{'type':_0x46f0cc,'resourceId':_0x5913c7['id']}})[_0x5d59('0x27')](function(){return _0x2e4eed;});})[_0x5d59('0x27')](function(){_0x2d7ecb['status'](0xcc)[_0x5d59('0x1c')]();});}};}function handleEntityNotFound(_0x322158,_0x2973de){return function(_0x1606f9){if(!_0x1606f9){_0x322158[_0x5d59('0x2b')](0x194);}return _0x1606f9;};}function handleError(_0x44dd15,_0x19d22a){_0x19d22a=_0x19d22a||0x1f4;return function(_0x5b5cf9){logger[_0x5d59('0x2c')](_0x5b5cf9['stack']);if(_0x5b5cf9['name']){delete _0x5b5cf9[_0x5d59('0x2d')];}_0x44dd15[_0x5d59('0x1b')](_0x19d22a)[_0x5d59('0x2e')](_0x5b5cf9);};}exports[_0x5d59('0x2f')]=function(_0x15a398,_0x1db4a1){var _0x59fdc8={},_0x5a9abf={},_0x46ef87={'count':0x0,'rows':[]};var _0x228f0d=_[_0x5d59('0x30')](db[_0x5d59('0x31')][_0x5d59('0x32')],function(_0x4635e0){return{'name':_0x4635e0[_0x5d59('0x33')],'type':_0x4635e0['type']['key']};});_0x5a9abf[_0x5d59('0x34')]=_[_0x5d59('0x30')](_0x228f0d,_0x5d59('0x2d'));_0x5a9abf['query']=_[_0x5d59('0x35')](_0x15a398[_0x5d59('0x36')]);_0x5a9abf[_0x5d59('0x37')]=_['intersection'](_0x5a9abf[_0x5d59('0x34')],_0x5a9abf['query']);_0x59fdc8['attributes']=_['intersection'](_0x5a9abf[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x15a398['query'][_0x5d59('0x38')]));_0x59fdc8['attributes']=_0x59fdc8[_0x5d59('0x39')][_0x5d59('0x3a')]?_0x59fdc8['attributes']:_0x5a9abf['model'];if(!_0x15a398['query'][_0x5d59('0x3b')]('nolimit')){_0x59fdc8[_0x5d59('0x20')]=qs[_0x5d59('0x20')](_0x15a398[_0x5d59('0x36')][_0x5d59('0x20')]);_0x59fdc8[_0x5d59('0x1e')]=qs[_0x5d59('0x1e')](_0x15a398[_0x5d59('0x36')][_0x5d59('0x1e')]);}_0x59fdc8['order']=qs[_0x5d59('0x3c')](_0x15a398[_0x5d59('0x36')][_0x5d59('0x3c')]);_0x59fdc8['where']=qs[_0x5d59('0x37')](_[_0x5d59('0x3d')](_0x15a398['query'],_0x5a9abf[_0x5d59('0x37')]),_0x228f0d);if(_0x15a398[_0x5d59('0x36')]['filter']){_0x59fdc8[_0x5d59('0x3e')]=_['merge'](_0x59fdc8[_0x5d59('0x3e')],{'$or':_[_0x5d59('0x30')](_0x228f0d,function(_0x2c88b1){if(_0x2c88b1[_0x5d59('0x3f')]!=='VIRTUAL'){var _0x340f9b={};_0x340f9b[_0x2c88b1[_0x5d59('0x2d')]]={'$like':'%'+_0x15a398[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x340f9b;}})});}_0x59fdc8=_[_0x5d59('0x41')]({},_0x59fdc8,_0x15a398[_0x5d59('0x42')]);var _0x4a66a9={'where':_0x59fdc8[_0x5d59('0x3e')]};return db[_0x5d59('0x31')][_0x5d59('0x21')](_0x4a66a9)[_0x5d59('0x27')](function(_0xe43e33){_0x46ef87['count']=_0xe43e33;if(_0x15a398[_0x5d59('0x36')][_0x5d59('0x43')]){_0x59fdc8[_0x5d59('0x44')]=[{'all':!![]}];}return db[_0x5d59('0x31')][_0x5d59('0x45')](_0x59fdc8);})[_0x5d59('0x27')](function(_0x50295f){_0x46ef87[_0x5d59('0x46')]=_0x50295f;return _0x46ef87;})[_0x5d59('0x27')](respondWithFilteredResult(_0x1db4a1,_0x59fdc8))['catch'](handleError(_0x1db4a1,null));};exports[_0x5d59('0x47')]=function(_0x54c057,_0x4c097d){var _0x9860e5={'raw':![],'where':{'id':_0x54c057[_0x5d59('0x48')]['id']}},_0x22bfe3={};_0x22bfe3[_0x5d59('0x34')]=_[_0x5d59('0x35')](db[_0x5d59('0x31')][_0x5d59('0x32')]);_0x22bfe3[_0x5d59('0x36')]=_[_0x5d59('0x35')](_0x54c057[_0x5d59('0x36')]);_0x22bfe3['filters']=_[_0x5d59('0x49')](_0x22bfe3[_0x5d59('0x34')],_0x22bfe3[_0x5d59('0x36')]);_0x9860e5[_0x5d59('0x39')]=_[_0x5d59('0x49')](_0x22bfe3[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x54c057[_0x5d59('0x36')][_0x5d59('0x38')]));_0x9860e5[_0x5d59('0x39')]=_0x9860e5['attributes'][_0x5d59('0x3a')]?_0x9860e5[_0x5d59('0x39')]:_0x22bfe3[_0x5d59('0x34')];if(_0x54c057[_0x5d59('0x36')][_0x5d59('0x43')]){_0x9860e5[_0x5d59('0x44')]=[{'all':!![]}];}_0x9860e5=_[_0x5d59('0x41')]({},_0x9860e5,_0x54c057['options']);return db[_0x5d59('0x31')][_0x5d59('0x4a')](_0x9860e5)[_0x5d59('0x27')](handleEntityNotFound(_0x4c097d,null))['then'](respondWithResult(_0x4c097d,null))[_0x5d59('0x4b')](handleError(_0x4c097d,null));};exports[_0x5d59('0x4c')]=function(_0xaa5808,_0x283700){return db[_0x5d59('0x31')][_0x5d59('0x4c')](_0xaa5808['body'],{})['then'](function(_0x6427b8){var _0x27de15=_0xaa5808[_0x5d59('0x4d')][_0x5d59('0x28')]({'plain':!![]});if(!_0x27de15)throw new Error(_0x5d59('0x4e'));if(_0x27de15[_0x5d59('0x4f')]===_0x5d59('0x4d')){var _0x20c3d2=_0x6427b8[_0x5d59('0x28')]({'plain':!![]});var _0x1b4c78=_0x5d59('0x29');return db[_0x5d59('0x50')]['find']({'where':{'name':_0x1b4c78,'userProfileId':_0x27de15[_0x5d59('0x51')]},'raw':!![]})[_0x5d59('0x27')](function(_0x9bace5){if(_0x9bace5&&_0x9bace5[_0x5d59('0x52')]===0x0){return db[_0x5d59('0x53')]['create']({'name':_0x20c3d2[_0x5d59('0x2d')],'resourceId':_0x20c3d2['id'],'type':_0x9bace5[_0x5d59('0x2d')],'sectionId':_0x9bace5['id']},{})[_0x5d59('0x27')](function(){return _0x6427b8;});}else{return _0x6427b8;}})[_0x5d59('0x4b')](function(_0x44ea39){logger[_0x5d59('0x2c')](_0x5d59('0x54'),_0x44ea39);throw _0x44ea39;});}return _0x6427b8;})[_0x5d59('0x27')](respondWithResult(_0x283700,0xc9))[_0x5d59('0x4b')](handleError(_0x283700,null));};exports[_0x5d59('0x26')]=function(_0x5932ef,_0x461472){if(_0x5932ef[_0x5d59('0x55')]['id']){delete _0x5932ef[_0x5d59('0x55')]['id'];}return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x5932ef[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x461472,null))[_0x5d59('0x27')](saveUpdates(_0x5932ef[_0x5d59('0x55')],null))[_0x5d59('0x27')](respondWithResult(_0x461472,null))[_0x5d59('0x4b')](handleError(_0x461472,null));};exports[_0x5d59('0x2a')]=function(_0x1ec012,_0x332b4f){return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x1ec012['params']['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x332b4f,null))[_0x5d59('0x27')](removeEntity(_0x332b4f,null))[_0x5d59('0x4b')](handleError(_0x332b4f,null));};exports[_0x5d59('0x56')]=function(_0x2edfd5,_0x583cd3,_0x17833d){if(_0x2edfd5[_0x5d59('0x55')]['id']){delete _0x2edfd5[_0x5d59('0x55')]['id'];}return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x2edfd5['params']['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x583cd3,null))[_0x5d59('0x27')](function(_0x541df2){if(_0x541df2){_0x2edfd5['body'][_0x5d59('0x57')]=_0x541df2['id'];return db['Condition'][_0x5d59('0x4c')](_0x2edfd5[_0x5d59('0x55')]);}})[_0x5d59('0x27')](respondWithResult(_0x583cd3,null))[_0x5d59('0x4b')](handleError(_0x583cd3,null));};exports[_0x5d59('0x58')]=function(_0x1759cf,_0x5ad262,_0x1423c1){if(_0x1759cf['body']['id']){delete _0x1759cf[_0x5d59('0x55')]['id'];}return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x1759cf[_0x5d59('0x48')]['id']}})['then'](handleEntityNotFound(_0x5ad262,null))[_0x5d59('0x27')](function(_0x3c4f4a){if(_0x3c4f4a){_0x1759cf[_0x5d59('0x55')]['TriggerAnyId']=_0x3c4f4a['id'];return db[_0x5d59('0x59')]['create'](_0x1759cf[_0x5d59('0x55')]);}})[_0x5d59('0x27')](respondWithResult(_0x5ad262,null))[_0x5d59('0x4b')](handleError(_0x5ad262,null));};exports[_0x5d59('0x5a')]=function(_0x505f86,_0xd7aba9,_0x2e4642){var _0x42dd43={};var _0x246da5={};var _0x5eea45;var _0x3c2c9e;return db[_0x5d59('0x31')]['findOne']({'where':{'id':_0x505f86[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0xd7aba9,null))[_0x5d59('0x27')](function(_0x35d5b0){if(_0x35d5b0){_0x5eea45=_0x35d5b0;_0x246da5[_0x5d59('0x34')]=_[_0x5d59('0x35')](db[_0x5d59('0x59')][_0x5d59('0x32')]);_0x246da5[_0x5d59('0x36')]=_[_0x5d59('0x35')](_0x505f86[_0x5d59('0x36')]);_0x246da5[_0x5d59('0x37')]=_[_0x5d59('0x49')](_0x246da5['model'],_0x246da5['query']);_0x42dd43[_0x5d59('0x39')]=_['intersection'](_0x246da5[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x505f86[_0x5d59('0x36')][_0x5d59('0x38')]));_0x42dd43[_0x5d59('0x39')]=_0x42dd43['attributes'][_0x5d59('0x3a')]?_0x42dd43[_0x5d59('0x39')]:_0x246da5[_0x5d59('0x34')];_0x42dd43['order']=qs[_0x5d59('0x3c')](_0x505f86[_0x5d59('0x36')][_0x5d59('0x3c')]);_0x42dd43[_0x5d59('0x3e')]=qs['filters'](_['pick'](_0x505f86['query'],_0x246da5[_0x5d59('0x37')]));if(_0x505f86['query']['filter']){_0x42dd43[_0x5d59('0x3e')]=_[_0x5d59('0x41')](_0x42dd43['where'],{'$or':_['map'](_0x42dd43[_0x5d59('0x39')],function(_0x465ab6){var _0x335b48={};_0x335b48[_0x465ab6]={'$like':'%'+_0x505f86[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x335b48;})});}_0x42dd43=_[_0x5d59('0x41')]({},_0x42dd43,_0x505f86[_0x5d59('0x42')]);return _0x5eea45[_0x5d59('0x5a')](_0x42dd43);}})[_0x5d59('0x27')](function(_0xe7acad){if(_0xe7acad){_0x3c2c9e=_0xe7acad[_0x5d59('0x3a')];if(!_0x505f86[_0x5d59('0x36')][_0x5d59('0x3b')](_0x5d59('0x5b'))){_0x42dd43['limit']=qs[_0x5d59('0x20')](_0x505f86['query'][_0x5d59('0x20')]);_0x42dd43[_0x5d59('0x1e')]=qs[_0x5d59('0x1e')](_0x505f86[_0x5d59('0x36')][_0x5d59('0x1e')]);}return _0x5eea45['getAllConditions'](_0x42dd43);}})[_0x5d59('0x27')](function(_0x1b1c88){if(_0x1b1c88){return _0x1b1c88?{'count':_0x3c2c9e,'rows':_0x1b1c88}:null;}})[_0x5d59('0x27')](respondWithResult(_0xd7aba9,null))[_0x5d59('0x4b')](handleError(_0xd7aba9,null));};exports[_0x5d59('0x5c')]=function(_0x5dbbfa,_0x241249,_0x2b1d6e){var _0x3850d4={};var _0x50018a={};var _0x2fb131;var _0x1ff0d2;return db['Trigger']['findOne']({'where':{'id':_0x5dbbfa[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x241249,null))[_0x5d59('0x27')](function(_0x373eb9){if(_0x373eb9){_0x2fb131=_0x373eb9;_0x50018a[_0x5d59('0x34')]=_[_0x5d59('0x35')](db['Condition'][_0x5d59('0x32')]);_0x50018a[_0x5d59('0x36')]=_[_0x5d59('0x35')](_0x5dbbfa['query']);_0x50018a['filters']=_['intersection'](_0x50018a[_0x5d59('0x34')],_0x50018a[_0x5d59('0x36')]);_0x3850d4['attributes']=_[_0x5d59('0x49')](_0x50018a[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x38')]));_0x3850d4[_0x5d59('0x39')]=_0x3850d4['attributes']['length']?_0x3850d4[_0x5d59('0x39')]:_0x50018a['model'];_0x3850d4[_0x5d59('0x5d')]=qs[_0x5d59('0x3c')](_0x5dbbfa['query'][_0x5d59('0x3c')]);_0x3850d4[_0x5d59('0x3e')]=qs[_0x5d59('0x37')](_['pick'](_0x5dbbfa['query'],_0x50018a[_0x5d59('0x37')]));if(_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x40')]){_0x3850d4[_0x5d59('0x3e')]=_[_0x5d59('0x41')](_0x3850d4[_0x5d59('0x3e')],{'$or':_['map'](_0x3850d4[_0x5d59('0x39')],function(_0x433f4e){var _0x12daf5={};_0x12daf5[_0x433f4e]={'$like':'%'+_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x12daf5;})});}_0x3850d4=_[_0x5d59('0x41')]({},_0x3850d4,_0x5dbbfa['options']);return _0x2fb131[_0x5d59('0x5c')](_0x3850d4);}})[_0x5d59('0x27')](function(_0x2a94e4){if(_0x2a94e4){_0x1ff0d2=_0x2a94e4['length'];if(!_0x5dbbfa['query']['hasOwnProperty'](_0x5d59('0x5b'))){_0x3850d4[_0x5d59('0x20')]=qs[_0x5d59('0x20')](_0x5dbbfa['query'][_0x5d59('0x20')]);_0x3850d4[_0x5d59('0x1e')]=qs['offset'](_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x1e')]);}return _0x2fb131[_0x5d59('0x5c')](_0x3850d4);}})[_0x5d59('0x27')](function(_0x16c00d){if(_0x16c00d){return _0x16c00d?{'count':_0x1ff0d2,'rows':_0x16c00d}:null;}})[_0x5d59('0x27')](respondWithResult(_0x241249,null))[_0x5d59('0x4b')](handleError(_0x241249,null));};exports['addAction']=function(_0x341d33,_0x40567a,_0x3e20ca){if(_0x341d33[_0x5d59('0x55')]['id']){delete _0x341d33[_0x5d59('0x55')]['id'];}return db['Trigger'][_0x5d59('0x4a')]({'where':{'id':_0x341d33['params']['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x40567a,null))[_0x5d59('0x27')](function(_0x252e3c){if(_0x252e3c){_0x341d33[_0x5d59('0x55')]['TriggerId']=_0x252e3c['id'];return db['Action'][_0x5d59('0x4c')](_0x341d33[_0x5d59('0x55')]);}})['then'](respondWithResult(_0x40567a,null))[_0x5d59('0x4b')](handleError(_0x40567a,null));};exports[_0x5d59('0x5e')]=function(_0x2a4a54,_0x1873ee,_0x11cb8a){var _0x20b719={};var _0x5364b5={};var _0x3294cc;var _0x58d0d6;return db[_0x5d59('0x31')]['findOne']({'where':{'id':_0x2a4a54[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x1873ee,null))[_0x5d59('0x27')](function(_0x251cfb){if(_0x251cfb){_0x3294cc=_0x251cfb;_0x5364b5[_0x5d59('0x34')]=_['keys'](db[_0x5d59('0x5f')]['rawAttributes']);_0x5364b5['query']=_[_0x5d59('0x35')](_0x2a4a54['query']);_0x5364b5[_0x5d59('0x37')]=_['intersection'](_0x5364b5[_0x5d59('0x34')],_0x5364b5[_0x5d59('0x36')]);_0x20b719[_0x5d59('0x39')]=_['intersection'](_0x5364b5['model'],qs[_0x5d59('0x38')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x38')]));_0x20b719[_0x5d59('0x39')]=_0x20b719['attributes'][_0x5d59('0x3a')]?_0x20b719[_0x5d59('0x39')]:_0x5364b5[_0x5d59('0x34')];_0x20b719[_0x5d59('0x5d')]=qs[_0x5d59('0x3c')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x3c')]);_0x20b719[_0x5d59('0x3e')]=qs[_0x5d59('0x37')](_[_0x5d59('0x3d')](_0x2a4a54[_0x5d59('0x36')],_0x5364b5['filters']));if(_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x40')]){_0x20b719[_0x5d59('0x3e')]=_[_0x5d59('0x41')](_0x20b719[_0x5d59('0x3e')],{'$or':_[_0x5d59('0x30')](_0x20b719['attributes'],function(_0x3d061e){var _0x1e7cf3={};_0x1e7cf3[_0x3d061e]={'$like':'%'+_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x1e7cf3;})});}_0x20b719=_[_0x5d59('0x41')]({},_0x20b719,_0x2a4a54['options']);return _0x3294cc[_0x5d59('0x5e')](_0x20b719);}})[_0x5d59('0x27')](function(_0x1bcaa2){if(_0x1bcaa2){_0x58d0d6=_0x1bcaa2['length'];if(!_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x3b')](_0x5d59('0x5b'))){_0x20b719[_0x5d59('0x20')]=qs[_0x5d59('0x20')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x20')]);_0x20b719[_0x5d59('0x1e')]=qs[_0x5d59('0x1e')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x1e')]);}return _0x3294cc['getActions'](_0x20b719);}})[_0x5d59('0x27')](function(_0x1a1cb7){if(_0x1a1cb7){return _0x1a1cb7?{'count':_0x58d0d6,'rows':_0x1a1cb7}:null;}})[_0x5d59('0x27')](respondWithResult(_0x1873ee,null))[_0x5d59('0x4b')](handleError(_0x1873ee,null));};
\ No newline at end of file
+var _0x222f=['VIRTUAL','options','Trigger','count','includeAll','include','findAll','rows','catch','show','params','create','body','user','role','get','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','length','order','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','offset','limit','Content-Range','apply','reject','save','update','then','Triggers','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x565b02,_0x330b39){var _0x4746ca=function(_0x41d593){while(--_0x41d593){_0x565b02['push'](_0x565b02['shift']());}};_0x4746ca(++_0x330b39);}(_0x222f,0xf0));var _0xf222=function(_0x24b852,_0x2bad67){_0x24b852=_0x24b852-0x0;var _0x180ad2=_0x222f[_0x24b852];return _0x180ad2;};'use strict';var emlformat=require(_0xf222('0x0'));var rimraf=require(_0xf222('0x1'));var zipdir=require(_0xf222('0x2'));var jsonpatch=require(_0xf222('0x3'));var rp=require(_0xf222('0x4'));var moment=require(_0xf222('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf222('0x6'));var util=require('util');var path=require('path');var sox=require(_0xf222('0x7'));var csv=require(_0xf222('0x8'));var ejs=require(_0xf222('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf222('0xa'));var squel=require(_0xf222('0xb'));var crypto=require(_0xf222('0xc'));var jsforce=require(_0xf222('0xd'));var deskjs=require(_0xf222('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf222('0xf'));var Papa=require(_0xf222('0x10'));var Redis=require(_0xf222('0x11'));var authService=require(_0xf222('0x12'));var qs=require(_0xf222('0x13'));var as=require(_0xf222('0x14'));var hardwareService=require(_0xf222('0x15'));var logger=require(_0xf222('0x16'))(_0xf222('0x17'));var utils=require(_0xf222('0x18'));var config=require(_0xf222('0x19'));var licenseUtil=require(_0xf222('0x1a'));var db=require(_0xf222('0x1b'))['db'];function respondWithStatusCode(_0x2d4b1d,_0x2cfde5){_0x2cfde5=_0x2cfde5||0xcc;return function(_0x44540c){if(_0x44540c){return _0x2d4b1d['sendStatus'](_0x2cfde5);}return _0x2d4b1d[_0xf222('0x1c')](_0x2cfde5)[_0xf222('0x1d')]();};}function respondWithResult(_0x25be4d,_0x5a121a){_0x5a121a=_0x5a121a||0xc8;return function(_0xc81e9){if(_0xc81e9){return _0x25be4d['status'](_0x5a121a)[_0xf222('0x1e')](_0xc81e9);}};}function respondWithFilteredResult(_0xb3c615,_0x24389a){return function(_0x27774c){if(_0x27774c){var _0x37b964=typeof _0x24389a['offset']===_0xf222('0x1f')&&typeof _0x24389a['limit']===_0xf222('0x1f');var _0x513181=_0x27774c['count'];var _0x5688a5=_0x37b964?0x0:_0x24389a[_0xf222('0x20')];var _0x1ca536=_0x37b964?_0x27774c['count']:_0x24389a[_0xf222('0x20')]+_0x24389a[_0xf222('0x21')];var _0x67fef1;if(_0x1ca536>=_0x513181){_0x1ca536=_0x513181;_0x67fef1=0xc8;}else{_0x67fef1=0xce;}_0xb3c615[_0xf222('0x1c')](_0x67fef1);return _0xb3c615['set'](_0xf222('0x22'),_0x5688a5+'-'+_0x1ca536+'/'+_0x513181)['json'](_0x27774c);}return null;};}function patchUpdates(_0x451b93){return function(_0x4de951){try{jsonpatch[_0xf222('0x23')](_0x4de951,_0x451b93,!![]);}catch(_0x522afa){return BPromise[_0xf222('0x24')](_0x522afa);}return _0x4de951[_0xf222('0x25')]();};}function saveUpdates(_0x3b2cb1,_0x276291){return function(_0x3ce876){if(_0x3ce876){return _0x3ce876[_0xf222('0x26')](_0x3b2cb1)['then'](function(_0x330b27){return _0x330b27;});}return null;};}function removeEntity(_0x255d8d,_0x54214c){return function(_0x5740f2){if(_0x5740f2){return _0x5740f2['destroy']()[_0xf222('0x27')](function(){var _0x17f34e=_0x5740f2['get']({'plain':!![]});var _0x441e5c=_0xf222('0x28');return db[_0xf222('0x29')]['destroy']({'where':{'type':_0x441e5c,'resourceId':_0x17f34e['id']}})[_0xf222('0x27')](function(){return _0x5740f2;});})[_0xf222('0x27')](function(){_0x255d8d[_0xf222('0x1c')](0xcc)[_0xf222('0x1d')]();});}};}function handleEntityNotFound(_0x2943a0,_0x550355){return function(_0x5680c3){if(!_0x5680c3){_0x2943a0[_0xf222('0x2a')](0x194);}return _0x5680c3;};}function handleError(_0x47aae2,_0x1c90d9){_0x1c90d9=_0x1c90d9||0x1f4;return function(_0x2364de){logger['error'](_0x2364de[_0xf222('0x2b')]);if(_0x2364de[_0xf222('0x2c')]){delete _0x2364de['name'];}_0x47aae2[_0xf222('0x1c')](_0x1c90d9)[_0xf222('0x2d')](_0x2364de);};}exports[_0xf222('0x2e')]=function(_0x2b4739,_0x4bbd31){var _0x4699c5={},_0x175f47={},_0xb3731e={'count':0x0,'rows':[]};var _0x1be53c=_[_0xf222('0x2f')](db['Trigger'][_0xf222('0x30')],function(_0x5436d1){return{'name':_0x5436d1[_0xf222('0x31')],'type':_0x5436d1[_0xf222('0x32')][_0xf222('0x33')]};});_0x175f47[_0xf222('0x34')]=_['map'](_0x1be53c,_0xf222('0x2c'));_0x175f47[_0xf222('0x35')]=_[_0xf222('0x36')](_0x2b4739[_0xf222('0x35')]);_0x175f47['filters']=_[_0xf222('0x37')](_0x175f47['model'],_0x175f47[_0xf222('0x35')]);_0x4699c5[_0xf222('0x38')]=_['intersection'](_0x175f47[_0xf222('0x34')],qs[_0xf222('0x39')](_0x2b4739[_0xf222('0x35')][_0xf222('0x39')]));_0x4699c5[_0xf222('0x38')]=_0x4699c5['attributes']['length']?_0x4699c5['attributes']:_0x175f47['model'];if(!_0x2b4739['query'][_0xf222('0x3a')](_0xf222('0x3b'))){_0x4699c5['limit']=qs[_0xf222('0x21')](_0x2b4739[_0xf222('0x35')]['limit']);_0x4699c5['offset']=qs[_0xf222('0x20')](_0x2b4739[_0xf222('0x35')][_0xf222('0x20')]);}_0x4699c5['order']=qs['sort'](_0x2b4739[_0xf222('0x35')][_0xf222('0x3c')]);_0x4699c5[_0xf222('0x3d')]=qs[_0xf222('0x3e')](_[_0xf222('0x3f')](_0x2b4739['query'],_0x175f47[_0xf222('0x3e')]),_0x1be53c);if(_0x2b4739[_0xf222('0x35')][_0xf222('0x40')]){_0x4699c5[_0xf222('0x3d')]=_[_0xf222('0x41')](_0x4699c5[_0xf222('0x3d')],{'$or':_[_0xf222('0x2f')](_0x1be53c,function(_0x16ee7d){if(_0x16ee7d[_0xf222('0x32')]!==_0xf222('0x42')){var _0x46d530={};_0x46d530[_0x16ee7d[_0xf222('0x2c')]]={'$like':'%'+_0x2b4739[_0xf222('0x35')][_0xf222('0x40')]+'%'};return _0x46d530;}})});}_0x4699c5=_[_0xf222('0x41')]({},_0x4699c5,_0x2b4739[_0xf222('0x43')]);var _0x4040a8={'where':_0x4699c5[_0xf222('0x3d')]};return db[_0xf222('0x44')][_0xf222('0x45')](_0x4040a8)['then'](function(_0x3af263){_0xb3731e[_0xf222('0x45')]=_0x3af263;if(_0x2b4739[_0xf222('0x35')][_0xf222('0x46')]){_0x4699c5[_0xf222('0x47')]=[{'all':!![]}];}return db['Trigger'][_0xf222('0x48')](_0x4699c5);})[_0xf222('0x27')](function(_0x2d9f91){_0xb3731e[_0xf222('0x49')]=_0x2d9f91;return _0xb3731e;})['then'](respondWithFilteredResult(_0x4bbd31,_0x4699c5))[_0xf222('0x4a')](handleError(_0x4bbd31,null));};exports[_0xf222('0x4b')]=function(_0xea8804,_0x1f3e24){var _0x45c1f1={'raw':![],'where':{'id':_0xea8804[_0xf222('0x4c')]['id']}},_0x39bb3b={};_0x39bb3b[_0xf222('0x34')]=_[_0xf222('0x36')](db['Trigger'][_0xf222('0x30')]);_0x39bb3b[_0xf222('0x35')]=_[_0xf222('0x36')](_0xea8804['query']);_0x39bb3b['filters']=_[_0xf222('0x37')](_0x39bb3b['model'],_0x39bb3b[_0xf222('0x35')]);_0x45c1f1['attributes']=_['intersection'](_0x39bb3b['model'],qs[_0xf222('0x39')](_0xea8804[_0xf222('0x35')][_0xf222('0x39')]));_0x45c1f1[_0xf222('0x38')]=_0x45c1f1[_0xf222('0x38')]['length']?_0x45c1f1[_0xf222('0x38')]:_0x39bb3b[_0xf222('0x34')];if(_0xea8804['query']['includeAll']){_0x45c1f1[_0xf222('0x47')]=[{'all':!![]}];}_0x45c1f1=_['merge']({},_0x45c1f1,_0xea8804[_0xf222('0x43')]);return db['Trigger']['find'](_0x45c1f1)[_0xf222('0x27')](handleEntityNotFound(_0x1f3e24,null))[_0xf222('0x27')](respondWithResult(_0x1f3e24,null))[_0xf222('0x4a')](handleError(_0x1f3e24,null));};exports[_0xf222('0x4d')]=function(_0x542284,_0x598607){return db[_0xf222('0x44')][_0xf222('0x4d')](_0x542284[_0xf222('0x4e')],{})['then'](function(_0x4662a0){var _0x589362=_0x542284[_0xf222('0x4f')]['get']({'plain':!![]});if(!_0x589362)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x589362[_0xf222('0x50')]===_0xf222('0x4f')){var _0x290db7=_0x4662a0[_0xf222('0x51')]({'plain':!![]});var _0x234a11=_0xf222('0x28');return db[_0xf222('0x52')][_0xf222('0x53')]({'where':{'name':_0x234a11,'userProfileId':_0x589362[_0xf222('0x54')]},'raw':!![]})[_0xf222('0x27')](function(_0x4c1bea){if(_0x4c1bea&&_0x4c1bea[_0xf222('0x55')]===0x0){return db[_0xf222('0x29')]['create']({'name':_0x290db7[_0xf222('0x2c')],'resourceId':_0x290db7['id'],'type':_0x4c1bea[_0xf222('0x2c')],'sectionId':_0x4c1bea['id']},{})['then'](function(){return _0x4662a0;});}else{return _0x4662a0;}})['catch'](function(_0x37c4fb){logger['error'](_0xf222('0x56'),_0x37c4fb);throw _0x37c4fb;});}return _0x4662a0;})[_0xf222('0x27')](respondWithResult(_0x598607,0xc9))[_0xf222('0x4a')](handleError(_0x598607,null));};exports[_0xf222('0x26')]=function(_0x1daf36,_0x188721){if(_0x1daf36[_0xf222('0x4e')]['id']){delete _0x1daf36[_0xf222('0x4e')]['id'];}return db[_0xf222('0x44')][_0xf222('0x53')]({'where':{'id':_0x1daf36[_0xf222('0x4c')]['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x188721,null))[_0xf222('0x27')](saveUpdates(_0x1daf36[_0xf222('0x4e')],null))['then'](respondWithResult(_0x188721,null))['catch'](handleError(_0x188721,null));};exports[_0xf222('0x57')]=function(_0x14ea25,_0x15d474){return db[_0xf222('0x44')][_0xf222('0x53')]({'where':{'id':_0x14ea25['params']['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x15d474,null))[_0xf222('0x27')](removeEntity(_0x15d474,null))[_0xf222('0x4a')](handleError(_0x15d474,null));};exports[_0xf222('0x58')]=function(_0x8459a5,_0x2e2d81,_0x66abec){if(_0x8459a5[_0xf222('0x4e')]['id']){delete _0x8459a5[_0xf222('0x4e')]['id'];}return db[_0xf222('0x44')][_0xf222('0x53')]({'where':{'id':_0x8459a5[_0xf222('0x4c')]['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x2e2d81,null))[_0xf222('0x27')](function(_0x2835c7){if(_0x2835c7){_0x8459a5[_0xf222('0x4e')][_0xf222('0x59')]=_0x2835c7['id'];return db[_0xf222('0x5a')][_0xf222('0x4d')](_0x8459a5[_0xf222('0x4e')]);}})[_0xf222('0x27')](respondWithResult(_0x2e2d81,null))['catch'](handleError(_0x2e2d81,null));};exports[_0xf222('0x5b')]=function(_0x2c5b4f,_0x2466b6,_0x52d3ec){if(_0x2c5b4f[_0xf222('0x4e')]['id']){delete _0x2c5b4f[_0xf222('0x4e')]['id'];}return db[_0xf222('0x44')][_0xf222('0x53')]({'where':{'id':_0x2c5b4f[_0xf222('0x4c')]['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x2466b6,null))[_0xf222('0x27')](function(_0x56cc7e){if(_0x56cc7e){_0x2c5b4f[_0xf222('0x4e')][_0xf222('0x5c')]=_0x56cc7e['id'];return db['Condition']['create'](_0x2c5b4f[_0xf222('0x4e')]);}})[_0xf222('0x27')](respondWithResult(_0x2466b6,null))[_0xf222('0x4a')](handleError(_0x2466b6,null));};exports[_0xf222('0x5d')]=function(_0x5c3b76,_0x5b99f8,_0x3809f4){var _0x42298d={};var _0x35d321={};var _0x41b2e2;var _0x107901;return db[_0xf222('0x44')][_0xf222('0x5e')]({'where':{'id':_0x5c3b76[_0xf222('0x4c')]['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x5b99f8,null))[_0xf222('0x27')](function(_0x323c5c){if(_0x323c5c){_0x41b2e2=_0x323c5c;_0x35d321[_0xf222('0x34')]=_[_0xf222('0x36')](db[_0xf222('0x5a')][_0xf222('0x30')]);_0x35d321[_0xf222('0x35')]=_['keys'](_0x5c3b76[_0xf222('0x35')]);_0x35d321[_0xf222('0x3e')]=_['intersection'](_0x35d321[_0xf222('0x34')],_0x35d321[_0xf222('0x35')]);_0x42298d['attributes']=_[_0xf222('0x37')](_0x35d321[_0xf222('0x34')],qs[_0xf222('0x39')](_0x5c3b76['query'][_0xf222('0x39')]));_0x42298d[_0xf222('0x38')]=_0x42298d[_0xf222('0x38')][_0xf222('0x5f')]?_0x42298d[_0xf222('0x38')]:_0x35d321[_0xf222('0x34')];_0x42298d[_0xf222('0x60')]=qs[_0xf222('0x3c')](_0x5c3b76[_0xf222('0x35')][_0xf222('0x3c')]);_0x42298d[_0xf222('0x3d')]=qs[_0xf222('0x3e')](_[_0xf222('0x3f')](_0x5c3b76[_0xf222('0x35')],_0x35d321[_0xf222('0x3e')]));if(_0x5c3b76[_0xf222('0x35')][_0xf222('0x40')]){_0x42298d['where']=_[_0xf222('0x41')](_0x42298d[_0xf222('0x3d')],{'$or':_[_0xf222('0x2f')](_0x42298d[_0xf222('0x38')],function(_0x5e9c14){var _0xfdd467={};_0xfdd467[_0x5e9c14]={'$like':'%'+_0x5c3b76['query']['filter']+'%'};return _0xfdd467;})});}_0x42298d=_[_0xf222('0x41')]({},_0x42298d,_0x5c3b76[_0xf222('0x43')]);return _0x41b2e2['getAllConditions'](_0x42298d);}})[_0xf222('0x27')](function(_0xb0b544){if(_0xb0b544){_0x107901=_0xb0b544[_0xf222('0x5f')];if(!_0x5c3b76[_0xf222('0x35')][_0xf222('0x3a')](_0xf222('0x3b'))){_0x42298d['limit']=qs[_0xf222('0x21')](_0x5c3b76['query'][_0xf222('0x21')]);_0x42298d[_0xf222('0x20')]=qs['offset'](_0x5c3b76[_0xf222('0x35')]['offset']);}return _0x41b2e2[_0xf222('0x5d')](_0x42298d);}})[_0xf222('0x27')](function(_0x4a72fd){if(_0x4a72fd){return _0x4a72fd?{'count':_0x107901,'rows':_0x4a72fd}:null;}})[_0xf222('0x27')](respondWithResult(_0x5b99f8,null))[_0xf222('0x4a')](handleError(_0x5b99f8,null));};exports[_0xf222('0x61')]=function(_0x597be3,_0x21b384,_0x3e4067){var _0x8bd06b={};var _0x301520={};var _0x210d16;var _0x2aade4;return db['Trigger'][_0xf222('0x5e')]({'where':{'id':_0x597be3[_0xf222('0x4c')]['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x21b384,null))[_0xf222('0x27')](function(_0x58bad8){if(_0x58bad8){_0x210d16=_0x58bad8;_0x301520[_0xf222('0x34')]=_['keys'](db[_0xf222('0x5a')][_0xf222('0x30')]);_0x301520[_0xf222('0x35')]=_[_0xf222('0x36')](_0x597be3['query']);_0x301520[_0xf222('0x3e')]=_[_0xf222('0x37')](_0x301520[_0xf222('0x34')],_0x301520[_0xf222('0x35')]);_0x8bd06b['attributes']=_['intersection'](_0x301520[_0xf222('0x34')],qs[_0xf222('0x39')](_0x597be3[_0xf222('0x35')]['fields']));_0x8bd06b[_0xf222('0x38')]=_0x8bd06b[_0xf222('0x38')][_0xf222('0x5f')]?_0x8bd06b['attributes']:_0x301520[_0xf222('0x34')];_0x8bd06b[_0xf222('0x60')]=qs[_0xf222('0x3c')](_0x597be3['query'][_0xf222('0x3c')]);_0x8bd06b['where']=qs['filters'](_[_0xf222('0x3f')](_0x597be3[_0xf222('0x35')],_0x301520[_0xf222('0x3e')]));if(_0x597be3[_0xf222('0x35')][_0xf222('0x40')]){_0x8bd06b[_0xf222('0x3d')]=_[_0xf222('0x41')](_0x8bd06b['where'],{'$or':_[_0xf222('0x2f')](_0x8bd06b[_0xf222('0x38')],function(_0x194767){var _0x5a8aec={};_0x5a8aec[_0x194767]={'$like':'%'+_0x597be3[_0xf222('0x35')][_0xf222('0x40')]+'%'};return _0x5a8aec;})});}_0x8bd06b=_[_0xf222('0x41')]({},_0x8bd06b,_0x597be3[_0xf222('0x43')]);return _0x210d16[_0xf222('0x61')](_0x8bd06b);}})['then'](function(_0x3ec29f){if(_0x3ec29f){_0x2aade4=_0x3ec29f['length'];if(!_0x597be3[_0xf222('0x35')][_0xf222('0x3a')]('nolimit')){_0x8bd06b[_0xf222('0x21')]=qs[_0xf222('0x21')](_0x597be3[_0xf222('0x35')][_0xf222('0x21')]);_0x8bd06b[_0xf222('0x20')]=qs[_0xf222('0x20')](_0x597be3[_0xf222('0x35')][_0xf222('0x20')]);}return _0x210d16[_0xf222('0x61')](_0x8bd06b);}})[_0xf222('0x27')](function(_0x2da5a6){if(_0x2da5a6){return _0x2da5a6?{'count':_0x2aade4,'rows':_0x2da5a6}:null;}})[_0xf222('0x27')](respondWithResult(_0x21b384,null))['catch'](handleError(_0x21b384,null));};exports[_0xf222('0x62')]=function(_0x20928f,_0x108e96,_0x1efeb4){if(_0x20928f['body']['id']){delete _0x20928f['body']['id'];}return db[_0xf222('0x44')][_0xf222('0x53')]({'where':{'id':_0x20928f[_0xf222('0x4c')]['id']}})['then'](handleEntityNotFound(_0x108e96,null))[_0xf222('0x27')](function(_0x59b4c3){if(_0x59b4c3){_0x20928f[_0xf222('0x4e')][_0xf222('0x63')]=_0x59b4c3['id'];return db[_0xf222('0x64')][_0xf222('0x4d')](_0x20928f[_0xf222('0x4e')]);}})[_0xf222('0x27')](respondWithResult(_0x108e96,null))[_0xf222('0x4a')](handleError(_0x108e96,null));};exports[_0xf222('0x65')]=function(_0x38471d,_0x285fa8,_0x4718c6){var _0x889107={};var _0x553130={};var _0x4a7d86;var _0x348f53;return db[_0xf222('0x44')][_0xf222('0x5e')]({'where':{'id':_0x38471d[_0xf222('0x4c')]['id']}})[_0xf222('0x27')](handleEntityNotFound(_0x285fa8,null))['then'](function(_0x291c22){if(_0x291c22){_0x4a7d86=_0x291c22;_0x553130[_0xf222('0x34')]=_[_0xf222('0x36')](db['Action']['rawAttributes']);_0x553130[_0xf222('0x35')]=_[_0xf222('0x36')](_0x38471d[_0xf222('0x35')]);_0x553130['filters']=_[_0xf222('0x37')](_0x553130[_0xf222('0x34')],_0x553130[_0xf222('0x35')]);_0x889107[_0xf222('0x38')]=_[_0xf222('0x37')](_0x553130['model'],qs[_0xf222('0x39')](_0x38471d['query'][_0xf222('0x39')]));_0x889107['attributes']=_0x889107[_0xf222('0x38')][_0xf222('0x5f')]?_0x889107[_0xf222('0x38')]:_0x553130[_0xf222('0x34')];_0x889107[_0xf222('0x60')]=qs['sort'](_0x38471d[_0xf222('0x35')]['sort']);_0x889107[_0xf222('0x3d')]=qs[_0xf222('0x3e')](_[_0xf222('0x3f')](_0x38471d[_0xf222('0x35')],_0x553130[_0xf222('0x3e')]));if(_0x38471d[_0xf222('0x35')][_0xf222('0x40')]){_0x889107[_0xf222('0x3d')]=_['merge'](_0x889107[_0xf222('0x3d')],{'$or':_['map'](_0x889107[_0xf222('0x38')],function(_0x1fe311){var _0x11389b={};_0x11389b[_0x1fe311]={'$like':'%'+_0x38471d[_0xf222('0x35')][_0xf222('0x40')]+'%'};return _0x11389b;})});}_0x889107=_['merge']({},_0x889107,_0x38471d['options']);return _0x4a7d86[_0xf222('0x65')](_0x889107);}})['then'](function(_0x27b137){if(_0x27b137){_0x348f53=_0x27b137[_0xf222('0x5f')];if(!_0x38471d[_0xf222('0x35')][_0xf222('0x3a')](_0xf222('0x3b'))){_0x889107[_0xf222('0x21')]=qs[_0xf222('0x21')](_0x38471d[_0xf222('0x35')]['limit']);_0x889107[_0xf222('0x20')]=qs[_0xf222('0x20')](_0x38471d[_0xf222('0x35')][_0xf222('0x20')]);}return _0x4a7d86[_0xf222('0x65')](_0x889107);}})['then'](function(_0x59459e){if(_0x59459e){return _0x59459e?{'count':_0x348f53,'rows':_0x59459e}:null;}})[_0xf222('0x27')](respondWithResult(_0x285fa8,null))[_0xf222('0x4a')](handleError(_0x285fa8,null));};
\ No newline at end of file
index c30aa11..4faa5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f8=['request-promise','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','api','moment'];(function(_0x1e65a9,_0xe784c2){var _0xd8c0e=function(_0x6b28a6){while(--_0x6b28a6){_0x1e65a9['push'](_0x1e65a9['shift']());}};_0xd8c0e(++_0xe784c2);}(_0x87f8,0x152));var _0x887f=function(_0x1922e6,_0x3ddba2){_0x1922e6=_0x1922e6-0x0;var _0x329e72=_0x87f8[_0x1922e6];return _0x329e72;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x887f('0x0'));var moment=require(_0x887f('0x1'));var BPromise=require('bluebird');var rp=require(_0x887f('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x887f('0x3'));var config=require(_0x887f('0x4'));var attributes=require(_0x887f('0x5'));module[_0x887f('0x6')]=function(_0x4f735d,_0x3847b1){return _0x4f735d[_0x887f('0x7')](_0x887f('0x8'),attributes,{'tableName':_0x887f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac21=['tools_triggers','util','../../config/logger','moment','request-promise','path','../../config/environment','exports','define','Trigger'];(function(_0x46abba,_0x16df5e){var _0x9eb044=function(_0x1744b5){while(--_0x1744b5){_0x46abba['push'](_0x46abba['shift']());}};_0x9eb044(++_0x16df5e);}(_0xac21,0x1af));var _0x1ac2=function(_0xf705e5,_0x44f942){_0xf705e5=_0xf705e5-0x0;var _0x974fa6=_0xac21[_0xf705e5];return _0x974fa6;};'use strict';var _=require('lodash');var util=require(_0x1ac2('0x0'));var logger=require(_0x1ac2('0x1'))('api');var moment=require(_0x1ac2('0x2'));var BPromise=require('bluebird');var rp=require(_0x1ac2('0x3'));var fs=require('fs');var path=require(_0x1ac2('0x4'));var rimraf=require('rimraf');var config=require(_0x1ac2('0x5'));var attributes=require('./trigger.attributes');module[_0x1ac2('0x6')]=function(_0x21a183,_0x2c4cf2){return _0x21a183[_0x1ac2('0x7')](_0x1ac2('0x8'),attributes,{'tableName':_0x1ac2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3760b0c..79177c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb61=['Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','findAll','options','raw','limit','include','map','model','attributes','then','GetTrigger','catch','Trigger','find','where','ShowTrigger','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','Trigger,\x20%s,\x20%s','debug'];(function(_0x2bea6e,_0x1f75f3){var _0x2a6225=function(_0xf8f4db){while(--_0xf8f4db){_0x2bea6e['push'](_0x2bea6e['shift']());}};_0x2a6225(++_0x1f75f3);}(_0xfb61,0xf3));var _0x1fb6=function(_0x30ba61,_0x48b905){_0x30ba61=_0x30ba61-0x0;var _0x7300ad=_0xfb61[_0x30ba61];return _0x7300ad;};'use strict';var _=require(_0x1fb6('0x0'));var util=require('util');var moment=require(_0x1fb6('0x1'));var BPromise=require(_0x1fb6('0x2'));var rs=require(_0x1fb6('0x3'));var fs=require('fs');var Redis=require(_0x1fb6('0x4'));var db=require(_0x1fb6('0x5'))['db'];var utils=require(_0x1fb6('0x6'));var logger=require(_0x1fb6('0x7'))(_0x1fb6('0x8'));var config=require('../../config/environment');var jayson=require(_0x1fb6('0x9'));var client=jayson[_0x1fb6('0xa')][_0x1fb6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x663287,_0x5d3c65,_0x491596){return new BPromise(function(_0x22fcc0,_0x15070c){return client[_0x1fb6('0xc')](_0x663287,_0x491596)['then'](function(_0x5abd85){logger[_0x1fb6('0xd')](_0x1fb6('0xe'),_0x5d3c65,'request\x20sent');logger[_0x1fb6('0xf')](_0x1fb6('0x10'),_0x5d3c65,_0x1fb6('0x11'),JSON[_0x1fb6('0x12')](_0x5abd85));if(_0x5abd85[_0x1fb6('0x13')]){if(_0x5abd85[_0x1fb6('0x13')]['code']===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x5d3c65,_0x5abd85[_0x1fb6('0x13')]['message']);return _0x15070c(_0x5abd85[_0x1fb6('0x13')][_0x1fb6('0x14')]);}logger[_0x1fb6('0x13')]('Trigger,\x20%s,\x20%s',_0x5d3c65,_0x5abd85[_0x1fb6('0x13')][_0x1fb6('0x14')]);return _0x22fcc0(_0x5abd85[_0x1fb6('0x13')]['message']);}else{logger['info'](_0x1fb6('0xe'),_0x5d3c65,_0x1fb6('0x11'));_0x22fcc0(_0x5abd85[_0x1fb6('0x15')][_0x1fb6('0x14')]);}})['catch'](function(_0xac13b2){logger[_0x1fb6('0x13')](_0x1fb6('0xe'),_0x5d3c65,_0xac13b2);_0x15070c(_0xac13b2);});});}exports['GetTrigger']=function(_0x36a074){var _0x5d29c9=this;return new Promise(function(_0x210e31,_0x41dbe1){return db['Trigger'][_0x1fb6('0x16')]({'raw':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')][_0x1fb6('0x18')]===undefined?!![]:![]:!![],'where':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')]['where']||null:null,'attributes':_0x36a074['options']?_0x36a074[_0x1fb6('0x17')]['attributes']||null:null,'limit':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')][_0x1fb6('0x19')]||null:null,'include':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')][_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x36a074[_0x1fb6('0x17')]['include'],function(_0x3b0cb1){return{'model':db[_0x3b0cb1['model']],'as':_0x3b0cb1['as'],'attributes':_0x3b0cb1['attributes'],'include':_0x3b0cb1[_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x3b0cb1[_0x1fb6('0x1a')],function(_0x190a6c){return{'model':db[_0x190a6c[_0x1fb6('0x1c')]],'as':_0x190a6c['as'],'attributes':_0x190a6c['attributes'],'include':_0x190a6c[_0x1fb6('0x1a')]?_['map'](_0x190a6c[_0x1fb6('0x1a')],function(_0x334a65){return{'model':db[_0x334a65['model']],'as':_0x334a65['as'],'attributes':_0x334a65[_0x1fb6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1fb6('0x1e')](function(_0x20dfa6){logger[_0x1fb6('0xd')](_0x1fb6('0x1f'),_0x36a074);logger[_0x1fb6('0xf')](_0x1fb6('0x1f'),_0x36a074,JSON[_0x1fb6('0x12')](_0x20dfa6));_0x210e31(_0x20dfa6);})[_0x1fb6('0x20')](function(_0x596bda){logger[_0x1fb6('0x13')]('GetTrigger',_0x596bda[_0x1fb6('0x14')],_0x36a074);_0x41dbe1(_0x5d29c9[_0x1fb6('0x13')](0x1f4,_0x596bda[_0x1fb6('0x14')]));});});};exports['ShowTrigger']=function(_0x204330){var _0x4e4e66=this;return new Promise(function(_0x443b59,_0x59e49b){return db[_0x1fb6('0x21')][_0x1fb6('0x22')]({'raw':_0x204330[_0x1fb6('0x17')]?_0x204330[_0x1fb6('0x17')][_0x1fb6('0x18')]===undefined?!![]:![]:!![],'where':_0x204330[_0x1fb6('0x17')]?_0x204330[_0x1fb6('0x17')][_0x1fb6('0x23')]||null:null,'attributes':_0x204330[_0x1fb6('0x17')]?_0x204330[_0x1fb6('0x17')]['attributes']||null:null,'include':_0x204330['options']?_0x204330[_0x1fb6('0x17')][_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x204330[_0x1fb6('0x17')][_0x1fb6('0x1a')],function(_0x473f41){return{'model':db[_0x473f41[_0x1fb6('0x1c')]],'as':_0x473f41['as'],'attributes':_0x473f41[_0x1fb6('0x1d')],'include':_0x473f41[_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x473f41[_0x1fb6('0x1a')],function(_0x3b16f3){return{'model':db[_0x3b16f3[_0x1fb6('0x1c')]],'as':_0x3b16f3['as'],'attributes':_0x3b16f3['attributes'],'include':_0x3b16f3[_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x3b16f3[_0x1fb6('0x1a')],function(_0x5834e7){return{'model':db[_0x5834e7[_0x1fb6('0x1c')]],'as':_0x5834e7['as'],'attributes':_0x5834e7[_0x1fb6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x13a3ea){logger[_0x1fb6('0xd')](_0x1fb6('0x24'),_0x204330);logger['debug'](_0x1fb6('0x24'),_0x204330,JSON[_0x1fb6('0x12')](_0x13a3ea));_0x443b59(_0x13a3ea);})[_0x1fb6('0x20')](function(_0x2b8bb5){logger['error'](_0x1fb6('0x24'),_0x2b8bb5['message'],_0x204330);_0x59e49b(_0x4e4e66[_0x1fb6('0x13')](0x1f4,_0x2b8bb5['message']));});});};
\ No newline at end of file
+var _0x2478=['map','then','stringify','catch','ShowTrigger','where','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','GetTrigger','Trigger','findAll','options','raw','attributes','limit','include','model'];(function(_0x1f4d61,_0x1e1ab8){var _0x11a44f=function(_0x8dba84){while(--_0x8dba84){_0x1f4d61['push'](_0x1f4d61['shift']());}};_0x11a44f(++_0x1e1ab8);}(_0x2478,0x15a));var _0x8247=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0x2478[_0x45783c];return _0x1161da;};'use strict';var _=require(_0x8247('0x0'));var util=require(_0x8247('0x1'));var moment=require(_0x8247('0x2'));var BPromise=require(_0x8247('0x3'));var rs=require(_0x8247('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8247('0x5'))['db'];var utils=require(_0x8247('0x6'));var logger=require(_0x8247('0x7'))('rpc');var config=require(_0x8247('0x8'));var jayson=require(_0x8247('0x9'));var client=jayson['client'][_0x8247('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x437eb1,_0x2dbd4a,_0xf42b38){return new BPromise(function(_0x4b77e1,_0x27595c){return client['request'](_0x437eb1,_0xf42b38)['then'](function(_0x117420){logger[_0x8247('0xb')](_0x8247('0xc'),_0x2dbd4a,_0x8247('0xd'));logger[_0x8247('0xe')](_0x8247('0xf'),_0x2dbd4a,_0x8247('0xd'),JSON['stringify'](_0x117420));if(_0x117420[_0x8247('0x10')]){if(_0x117420[_0x8247('0x10')][_0x8247('0x11')]===0x1f4){logger[_0x8247('0x10')](_0x8247('0xc'),_0x2dbd4a,_0x117420['error'][_0x8247('0x12')]);return _0x27595c(_0x117420[_0x8247('0x10')]['message']);}logger[_0x8247('0x10')](_0x8247('0xc'),_0x2dbd4a,_0x117420['error'][_0x8247('0x12')]);return _0x4b77e1(_0x117420[_0x8247('0x10')]['message']);}else{logger['info'](_0x8247('0xc'),_0x2dbd4a,_0x8247('0xd'));_0x4b77e1(_0x117420['result'][_0x8247('0x12')]);}})['catch'](function(_0x541eb4){logger[_0x8247('0x10')](_0x8247('0xc'),_0x2dbd4a,_0x541eb4);_0x27595c(_0x541eb4);});});}exports[_0x8247('0x13')]=function(_0x30974a){var _0x3f8459=this;return new Promise(function(_0x1ff46a,_0xc3883e){return db[_0x8247('0x14')][_0x8247('0x15')]({'raw':_0x30974a[_0x8247('0x16')]?_0x30974a[_0x8247('0x16')][_0x8247('0x17')]===undefined?!![]:![]:!![],'where':_0x30974a[_0x8247('0x16')]?_0x30974a[_0x8247('0x16')]['where']||null:null,'attributes':_0x30974a['options']?_0x30974a[_0x8247('0x16')][_0x8247('0x18')]||null:null,'limit':_0x30974a[_0x8247('0x16')]?_0x30974a[_0x8247('0x16')][_0x8247('0x19')]||null:null,'include':_0x30974a[_0x8247('0x16')]?_0x30974a['options'][_0x8247('0x1a')]?_['map'](_0x30974a[_0x8247('0x16')][_0x8247('0x1a')],function(_0x2670d4){return{'model':db[_0x2670d4[_0x8247('0x1b')]],'as':_0x2670d4['as'],'attributes':_0x2670d4[_0x8247('0x18')],'include':_0x2670d4[_0x8247('0x1a')]?_[_0x8247('0x1c')](_0x2670d4[_0x8247('0x1a')],function(_0x3737c3){return{'model':db[_0x3737c3[_0x8247('0x1b')]],'as':_0x3737c3['as'],'attributes':_0x3737c3[_0x8247('0x18')],'include':_0x3737c3[_0x8247('0x1a')]?_[_0x8247('0x1c')](_0x3737c3[_0x8247('0x1a')],function(_0x26843a){return{'model':db[_0x26843a['model']],'as':_0x26843a['as'],'attributes':_0x26843a['attributes']};}):[]};}):[]};}):[]:[]})[_0x8247('0x1d')](function(_0x3583a7){logger['info'](_0x8247('0x13'),_0x30974a);logger[_0x8247('0xe')](_0x8247('0x13'),_0x30974a,JSON[_0x8247('0x1e')](_0x3583a7));_0x1ff46a(_0x3583a7);})[_0x8247('0x1f')](function(_0x36dc3b){logger['error'](_0x8247('0x13'),_0x36dc3b[_0x8247('0x12')],_0x30974a);_0xc3883e(_0x3f8459[_0x8247('0x10')](0x1f4,_0x36dc3b[_0x8247('0x12')]));});});};exports[_0x8247('0x20')]=function(_0x4affab){var _0x571fac=this;return new Promise(function(_0x5df273,_0xeb1c7f){return db[_0x8247('0x14')]['find']({'raw':_0x4affab[_0x8247('0x16')]?_0x4affab[_0x8247('0x16')][_0x8247('0x17')]===undefined?!![]:![]:!![],'where':_0x4affab['options']?_0x4affab['options'][_0x8247('0x21')]||null:null,'attributes':_0x4affab['options']?_0x4affab['options'][_0x8247('0x18')]||null:null,'include':_0x4affab[_0x8247('0x16')]?_0x4affab[_0x8247('0x16')]['include']?_[_0x8247('0x1c')](_0x4affab['options'][_0x8247('0x1a')],function(_0x4879f3){return{'model':db[_0x4879f3[_0x8247('0x1b')]],'as':_0x4879f3['as'],'attributes':_0x4879f3[_0x8247('0x18')],'include':_0x4879f3[_0x8247('0x1a')]?_[_0x8247('0x1c')](_0x4879f3[_0x8247('0x1a')],function(_0x2fde49){return{'model':db[_0x2fde49[_0x8247('0x1b')]],'as':_0x2fde49['as'],'attributes':_0x2fde49[_0x8247('0x18')],'include':_0x2fde49[_0x8247('0x1a')]?_[_0x8247('0x1c')](_0x2fde49[_0x8247('0x1a')],function(_0x440fbb){return{'model':db[_0x440fbb[_0x8247('0x1b')]],'as':_0x440fbb['as'],'attributes':_0x440fbb['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x173b08){logger[_0x8247('0xb')]('ShowTrigger',_0x4affab);logger[_0x8247('0xe')]('ShowTrigger',_0x4affab,JSON['stringify'](_0x173b08));_0x5df273(_0x173b08);})[_0x8247('0x1f')](function(_0x50e718){logger[_0x8247('0x10')](_0x8247('0x20'),_0x50e718[_0x8247('0x12')],_0x4affab);_0xeb1c7f(_0x571fac['error'](0x1f4,_0x50e718[_0x8247('0x12')]));});});};
\ No newline at end of file
index 7dc0dd6..038295b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa06=['isAuthenticated','index','/:id','show','/:id/clone','clone','post','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0xb29e91,_0x450d38){var _0x632a7d=function(_0x79728b){while(--_0x79728b){_0xb29e91['push'](_0xb29e91['shift']());}};_0x632a7d(++_0x450d38);}(_0xaa06,0x108));var _0x6aa0=function(_0x248516,_0xfc37c9){_0x248516=_0x248516-0x0;var _0x1b2bd4=_0xaa06[_0x248516];return _0x1b2bd4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6aa0('0x0'));var timeout=require(_0x6aa0('0x1'));var express=require(_0x6aa0('0x2'));var router=express[_0x6aa0('0x3')]();var fs_extra=require(_0x6aa0('0x4'));var auth=require(_0x6aa0('0x5'));var interaction=require(_0x6aa0('0x6'));var config=require(_0x6aa0('0x7'));var controller=require('./trunk.controller');router[_0x6aa0('0x8')]('/',auth[_0x6aa0('0x9')](),controller[_0x6aa0('0xa')]);router[_0x6aa0('0x8')](_0x6aa0('0xb'),auth[_0x6aa0('0x9')](),controller[_0x6aa0('0xc')]);router['post'](_0x6aa0('0xd'),auth[_0x6aa0('0x9')](),controller[_0x6aa0('0xe')]);router[_0x6aa0('0xf')]('/',auth[_0x6aa0('0x9')](),controller['create']);router[_0x6aa0('0x10')](_0x6aa0('0xb'),auth['isAuthenticated'](),controller[_0x6aa0('0x11')]);router[_0x6aa0('0x12')]('/:id',auth[_0x6aa0('0x9')](),controller[_0x6aa0('0x13')]);module[_0x6aa0('0x14')]=router;
\ No newline at end of file
+var _0x7b18=['isAuthenticated','index','/:id','show','post','/:id/clone','clone','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','./trunk.controller'];(function(_0x32712d,_0x28fc5e){var _0x26ab43=function(_0x2622f4){while(--_0x2622f4){_0x32712d['push'](_0x32712d['shift']());}};_0x26ab43(++_0x28fc5e);}(_0x7b18,0x15a));var _0x87b1=function(_0xbdf5ed,_0x1e7e17){_0xbdf5ed=_0xbdf5ed-0x0;var _0x5184ca=_0x7b18[_0xbdf5ed];return _0x5184ca;};'use strict';var multer=require(_0x87b1('0x0'));var util=require(_0x87b1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x87b1('0x2')]();var fs_extra=require(_0x87b1('0x3'));var auth=require(_0x87b1('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x87b1('0x5'));router['get']('/',auth[_0x87b1('0x6')](),controller[_0x87b1('0x7')]);router['get'](_0x87b1('0x8'),auth[_0x87b1('0x6')](),controller[_0x87b1('0x9')]);router[_0x87b1('0xa')](_0x87b1('0xb'),auth[_0x87b1('0x6')](),controller[_0x87b1('0xc')]);router[_0x87b1('0xa')]('/',auth[_0x87b1('0x6')](),controller['create']);router['put'](_0x87b1('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x87b1('0xd')](_0x87b1('0x8'),auth[_0x87b1('0x6')](),controller[_0x87b1('0xe')]);module[_0x87b1('0xf')]=router;
\ No newline at end of file
index b4d884e..89afcb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2637=['nat','getDataValue','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','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','uac','uas','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','exports','ENUM','friend','peer','STRING','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','join','transport','split','rfc2833','info','inband','auto','yes','nonat','update','outgoing','force_rport,comedia'];(function(_0x4b430a,_0x9e4425){var _0x2fef54=function(_0x4672f3){while(--_0x4672f3){_0x4b430a['push'](_0x4b430a['shift']());}};_0x2fef54(++_0x9e4425);}(_0x2637,0x7f));var _0x7263=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x2637[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require(_0x7263('0x0'));module[_0x7263('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x3'),'user',_0x7263('0x4')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x7263('0x5')],'allowNull':![],'defaultValue':_0x7263('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x7263('0x7'),_0x7263('0x8'),'ALLOWED','PROHIB_NOT_SCREENED',_0x7263('0x9'),_0x7263('0xa'),_0x7263('0xb'))},'deny':{'type':Sequelize[_0x7263('0x5')]},'permit':{'type':Sequelize[_0x7263('0x5')]},'secret':{'type':Sequelize[_0x7263('0x5')]},'md5secret':{'type':Sequelize[_0x7263('0x5')]},'remotesecret':{'type':Sequelize[_0x7263('0x5')]},'transport':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0xc'),'set':function(_0x4deff1){this[_0x7263('0xd')]('transport',_0x4deff1?_0x4deff1[_0x7263('0xe')](','):null);},'get':function(){return this['getDataValue'](_0x7263('0xf'))?this['getDataValue'](_0x7263('0xf'))[_0x7263('0x10')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x11'),_0x7263('0x12'),'shortinfo',_0x7263('0x13'),_0x7263('0x14')),'defaultValue':_0x7263('0x11')},'directmedia':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no',_0x7263('0x16'),_0x7263('0x17'),_0x7263('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x7263('0x5')]},'directmediadeny':{'type':Sequelize[_0x7263('0x5')]},'nat':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0x19'),'set':function(_0x4b03df){this['setDataValue'](_0x7263('0x1a'),_0x4b03df?_0x4b03df[_0x7263('0xe')](','):null);},'get':function(){return this[_0x7263('0x1b')](_0x7263('0x1a'))?this[_0x7263('0x1b')](_0x7263('0x1a'))[_0x7263('0x10')](','):null;},'comment':_0x7263('0x1c')},'callgroup':{'type':Sequelize[_0x7263('0x5')]},'namedcallgroup':{'type':Sequelize[_0x7263('0x5')]},'pickupgroup':{'type':Sequelize[_0x7263('0x5')]},'namedpickupgroup':{'type':Sequelize[_0x7263('0x5')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x7263('0x5')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x7263('0x1d')},'allow':{'type':Sequelize[_0x7263('0x5')],'allowNull':![],'defaultValue':_0x7263('0x1e'),'set':function(_0x58fa48){this[_0x7263('0xd')](_0x7263('0x1f'),_0x58fa48?_0x58fa48[_0x7263('0xe')](';'):_0x7263('0x1e'));},'get':function(){return this['getDataValue']('allow')?this[_0x7263('0x1b')](_0x7263('0x1f'))[_0x7263('0x10')](';'):null;},'comment':_0x7263('0x20')},'autoframing':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x7263('0x21'),'set':function(_0x43ced2){this[_0x7263('0xd')](_0x7263('0x22'),_0x43ced2?_0x43ced2[_0x7263('0xe')](','):null);},'get':function(){return this[_0x7263('0x1b')]('insecure')?this[_0x7263('0x1b')](_0x7263('0x22'))[_0x7263('0x10')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x7263('0x2')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no',_0x7263('0x23'))},'promiscredir':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'useclientcode':{'type':Sequelize[_0x7263('0x2')]('yes','no')},'accountcode':{'type':Sequelize[_0x7263('0x24')](0xb)},'setvar':{'type':Sequelize[_0x7263('0x5')]},'callerid':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0x25')},'amaflags':{'type':Sequelize[_0x7263('0x5')]},'callcounter':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':_0x7263('0x15')},'busylevel':{'type':Sequelize[_0x7263('0x24')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no')},'allowsubscribe':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'allowtransfer':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'ignoresdpversion':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'subscribecontext':{'type':Sequelize[_0x7263('0x5')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no',_0x7263('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x7263('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'mailbox':{'type':Sequelize[_0x7263('0x5')]},'session_timers':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x27'),_0x7263('0x28'),'originate')},'session_expires':{'type':Sequelize[_0x7263('0x24')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x29'),_0x7263('0x2a')),'defaultValue':_0x7263('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0x7263('0x5')]},'regexten':{'type':Sequelize[_0x7263('0x5')]},'fromdomain':{'type':Sequelize[_0x7263('0x5')]},'fromuser':{'type':Sequelize[_0x7263('0x5')]},'port':{'type':Sequelize[_0x7263('0x24')](0x5)},'qualify':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x7263('0x24')](0xb)},'defaultip':{'type':Sequelize[_0x7263('0x5')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x7263('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x7263('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x7263('0x5')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x7263('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0x7263('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0x7263('0x5')]},'contactdeny':{'type':Sequelize[_0x7263('0x5')]},'contactacl':{'type':Sequelize[_0x7263('0x5')]},'unsolicited_mailbox':{'type':Sequelize[_0x7263('0x5')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x7263('0x24')](0xb)},'encryption':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x7263('0x2')]('yes','no')},'force_avp':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'icesupport':{'type':Sequelize[_0x7263('0x2')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no',_0x7263('0x2b'),_0x7263('0x2c'))},'dtlsrekey':{'type':Sequelize[_0x7263('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0x7263('0x5')]},'dtlsprivatekey':{'type':Sequelize[_0x7263('0x5')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM'](_0x7263('0x2d'),_0x7263('0x2e'),_0x7263('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x7263('0x5')]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x7263('0x5')]},'recordofffeature':{'type':Sequelize[_0x7263('0x5')]},'call_limit':{'type':Sequelize[_0x7263('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'subscribemwi':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x7263('0x5')]},'mohsuggest':{'type':Sequelize[_0x7263('0x5')]},'parkinglot':{'type':Sequelize[_0x7263('0x5')]},'description':{'type':Sequelize[_0x7263('0x5')]},'host':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0x30')},'canreinvite':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no',_0x7263('0x16'),_0x7263('0x17'),_0x7263('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x7263('0x5')]},'active':{'type':Sequelize[_0x7263('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x7263('0x5')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x4182=['INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','pai','fingerprint','active','passive','actpass','nonat','update','update,nonat','BOOLEAN','sequelize','exports','STRING','ENUM','friend','user','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','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'];(function(_0x8e6476,_0x5585d7){var _0x4b3cbd=function(_0x31c8d3){while(--_0x31c8d3){_0x8e6476['push'](_0x8e6476['shift']());}};_0x4b3cbd(++_0x5585d7);}(_0x4182,0x184));var _0x2418=function(_0x421196,_0x1cbd94){_0x421196=_0x421196-0x0;var _0x2738af=_0x4182[_0x421196];return _0x2738af;};'use strict';var Sequelize=require(_0x2418('0x0'));module[_0x2418('0x1')]={'name':{'type':Sequelize[_0x2418('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x4'),_0x2418('0x5'),_0x2418('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x7'),_0x2418('0x8'),_0x2418('0x9'),'ALLOWED',_0x2418('0xa'),'PROHIB_PASSED_SCREEN',_0x2418('0xb'),_0x2418('0xc'))},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0x2418('0x2')]},'secret':{'type':Sequelize[_0x2418('0x2')]},'md5secret':{'type':Sequelize[_0x2418('0x2')]},'remotesecret':{'type':Sequelize[_0x2418('0x2')]},'transport':{'type':Sequelize[_0x2418('0x2')],'defaultValue':'udp','set':function(_0xb44885){this[_0x2418('0xd')](_0x2418('0xe'),_0xb44885?_0xb44885[_0x2418('0xf')](','):null);},'get':function(){return this[_0x2418('0x10')]('transport')?this[_0x2418('0x10')](_0x2418('0xe'))[_0x2418('0x11')](','):null;},'comment':_0x2418('0x12')},'dtmfmode':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x13'),_0x2418('0x14'),_0x2418('0x15'),_0x2418('0x16'),_0x2418('0x17')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x2418('0x18'),'no','nonat','update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x2418('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x2418('0x19'),'set':function(_0x28233e){this[_0x2418('0xd')](_0x2418('0x1a'),_0x28233e?_0x28233e[_0x2418('0xf')](','):null);},'get':function(){return this[_0x2418('0x10')](_0x2418('0x1a'))?this[_0x2418('0x10')](_0x2418('0x1a'))[_0x2418('0x11')](','):null;},'comment':_0x2418('0x1b')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x2418('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x2418('0x2')]},'language':{'type':Sequelize[_0x2418('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x2418('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x2418('0x1c')},'allow':{'type':Sequelize[_0x2418('0x2')],'allowNull':![],'defaultValue':_0x2418('0x1d'),'set':function(_0x4ae1ac){this[_0x2418('0xd')](_0x2418('0x1e'),_0x4ae1ac?_0x4ae1ac[_0x2418('0xf')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0x2418('0x1e'))?this[_0x2418('0x10')](_0x2418('0x1e'))[_0x2418('0x11')](';'):null;},'comment':_0x2418('0x1f')},'autoframing':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'insecure':{'type':Sequelize[_0x2418('0x2')],'defaultValue':_0x2418('0x20'),'set':function(_0x203684){this[_0x2418('0xd')]('insecure',_0x203684?_0x203684[_0x2418('0xf')](','):null);},'get':function(){return this[_0x2418('0x10')](_0x2418('0x21'))?this[_0x2418('0x10')](_0x2418('0x21'))[_0x2418('0x11')](','):null;},'comment':_0x2418('0x22')},'trustrpid':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x2418('0x3')]('yes','no',_0x2418('0x23'))},'promiscredir':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'useclientcode':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'accountcode':{'type':Sequelize[_0x2418('0x24')](0xb)},'setvar':{'type':Sequelize[_0x2418('0x2')]},'callerid':{'type':Sequelize[_0x2418('0x2')],'defaultValue':_0x2418('0x25')},'amaflags':{'type':Sequelize[_0x2418('0x2')]},'callcounter':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no'),'defaultValue':_0x2418('0x18')},'busylevel':{'type':Sequelize[_0x2418('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0x2418('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0x2418('0x3')]('yes','no')},'allowtransfer':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x2418('0x2')]},'videosupport':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no',_0x2418('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x2418('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'mailbox':{'type':Sequelize[_0x2418('0x2')]},'session_timers':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x27'),_0x2418('0x28'),_0x2418('0x29'))},'session_expires':{'type':Sequelize[_0x2418('0x24')](0xb)},'session_minse':{'type':Sequelize[_0x2418('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x2a'),_0x2418('0x2b')),'defaultValue':_0x2418('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x2418('0x2')]},'regexten':{'type':Sequelize[_0x2418('0x2')]},'fromdomain':{'type':Sequelize[_0x2418('0x2')]},'fromuser':{'type':Sequelize[_0x2418('0x2')]},'port':{'type':Sequelize[_0x2418('0x24')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x2418('0x18'),'no'),'defaultValue':_0x2418('0x18')},'keepalive':{'type':Sequelize[_0x2418('0x24')](0xb)},'defaultip':{'type':Sequelize[_0x2418('0x2')]},'defaultuser':{'type':Sequelize[_0x2418('0x2')]},'rtptimeout':{'type':Sequelize[_0x2418('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x2418('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0x2418('0x3')]('yes','no',_0x2418('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x2418('0x2')]},'timert1':{'type':Sequelize[_0x2418('0x24')](0xb)},'timerb':{'type':Sequelize[_0x2418('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0x2418('0x24')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x2418('0x2')]},'contactacl':{'type':Sequelize[_0x2418('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x2418('0x2')]},'use_q850_reason':{'type':Sequelize[_0x2418('0x2')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'force_avp':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'icesupport':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no')},'dtlsenable':{'type':Sequelize[_0x2418('0x3')]('yes','no')},'dtlsverify':{'type':Sequelize[_0x2418('0x3')]('yes','no',_0x2418('0x2d'),'certificate')},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x2418('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x2418('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x2418('0x2')]},'dtlscapath':{'type':Sequelize[_0x2418('0x2')]},'dtlssetup':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x2e'),_0x2418('0x2f'),_0x2418('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x2418('0x3')](_0x2418('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x2418('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x2418('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x2418('0x3')]('yes','no')},'subscribemwi':{'type':Sequelize[_0x2418('0x3')]('yes','no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x2418('0x2')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2418('0x2')]},'host':{'type':Sequelize['STRING'],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0x2418('0x31'),_0x2418('0x32'),_0x2418('0x33')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x2418('0x34')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2418('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 62f03dc..bbcc164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','get','Trunks','UserProfileResource','stack','send','index','rawAttributes','fieldName','type','model','map','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','VIRTUAL','filter','merge','options','Trunk','includeAll','include','findAll','rows','show','params','find','clone','omit','createdAt','updatedAt','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','create','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','role','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch'];(function(_0x53f609,_0x3217e1){var _0x4b649a=function(_0x4bb5fe){while(--_0x4bb5fe){_0x53f609['push'](_0x53f609['shift']());}};_0x4b649a(++_0x3217e1);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x4d89f4,_0x283018){_0x4d89f4=_0x4d89f4-0x0;var _0x39f9ee=_0xd6d6[_0x4d89f4];return _0x39f9ee;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];var jayson=require(_0x6d6d('0x19'));var client=jayson[_0x6d6d('0x1a')][_0x6d6d('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x2b74ed,_0x41fbdf,_0x19cf50,_0x2cb2dd){return new BPromise(function(_0x5f4154,_0xd09ea7){var _0x3dd4b3=_0x2cb2dd||client;return _0x3dd4b3[_0x6d6d('0x1c')](_0x2b74ed,_0x19cf50)[_0x6d6d('0x1d')](function(_0x29cbd8){logger['info'](_0x6d6d('0x1e'),_0x41fbdf,'request\x20sent');logger[_0x6d6d('0x1f')](_0x6d6d('0x20'),_0x41fbdf,_0x6d6d('0x21'),JSON['stringify'](_0x29cbd8));if(_0x29cbd8['error']){if(_0x29cbd8[_0x6d6d('0x22')][_0x6d6d('0x23')]===0x1f4){logger[_0x6d6d('0x22')](_0x6d6d('0x1e'),_0x41fbdf,_0x29cbd8['error']['message']);return _0xd09ea7(_0x29cbd8[_0x6d6d('0x22')]['message']);}logger[_0x6d6d('0x22')](_0x6d6d('0x1e'),_0x41fbdf,_0x29cbd8[_0x6d6d('0x22')][_0x6d6d('0x24')]);return _0x5f4154(_0x29cbd8[_0x6d6d('0x22')][_0x6d6d('0x24')]);}else{logger[_0x6d6d('0x25')](_0x6d6d('0x1e'),_0x41fbdf,_0x6d6d('0x21'));_0x5f4154(_0x29cbd8[_0x6d6d('0x26')][_0x6d6d('0x24')]);}})[_0x6d6d('0x27')](function(_0x466a29){logger[_0x6d6d('0x22')](_0x6d6d('0x1e'),_0x41fbdf,_0x466a29);_0xd09ea7(_0x466a29);});});}function respondWithStatusCode(_0x25a02e,_0xced622){_0xced622=_0xced622||0xcc;return function(_0x583b10){if(_0x583b10){return _0x25a02e[_0x6d6d('0x28')](_0xced622);}return _0x25a02e[_0x6d6d('0x29')](_0xced622)[_0x6d6d('0x2a')]();};}function respondWithResult(_0x97ec9e,_0xf0df7f){_0xf0df7f=_0xf0df7f||0xc8;return function(_0x12fab2){if(_0x12fab2){return _0x97ec9e['status'](_0xf0df7f)[_0x6d6d('0x2b')](_0x12fab2);}};}function respondWithFilteredResult(_0x2b5e31,_0x235451){return function(_0x126ac8){if(_0x126ac8){var _0x25c121=typeof _0x235451[_0x6d6d('0x2c')]===_0x6d6d('0x2d')&&typeof _0x235451['limit']===_0x6d6d('0x2d');var _0x9595d8=_0x126ac8['count'];var _0x553645=_0x25c121?0x0:_0x235451[_0x6d6d('0x2c')];var _0x5273cd=_0x25c121?_0x126ac8[_0x6d6d('0x2e')]:_0x235451['offset']+_0x235451[_0x6d6d('0x2f')];var _0x20255e;if(_0x5273cd>=_0x9595d8){_0x5273cd=_0x9595d8;_0x20255e=0xc8;}else{_0x20255e=0xce;}_0x2b5e31[_0x6d6d('0x29')](_0x20255e);return _0x2b5e31[_0x6d6d('0x30')](_0x6d6d('0x31'),_0x553645+'-'+_0x5273cd+'/'+_0x9595d8)[_0x6d6d('0x2b')](_0x126ac8);}return null;};}function patchUpdates(_0xdda3f2){return function(_0x359cfd){try{jsonpatch[_0x6d6d('0x32')](_0x359cfd,_0xdda3f2,!![]);}catch(_0x34050a){return BPromise['reject'](_0x34050a);}return _0x359cfd[_0x6d6d('0x33')]();};}function saveUpdates(_0x4f1fc5,_0x18015a){return function(_0x1ea9b2){if(_0x1ea9b2){return _0x1ea9b2[_0x6d6d('0x34')](_0x4f1fc5)[_0x6d6d('0x1d')](function(_0x5c6248){return _0x5c6248;});}return null;};}function removeEntity(_0x182441,_0x4f2f13){return function(_0x3cc702){if(_0x3cc702){return _0x3cc702[_0x6d6d('0x35')]()['then'](function(){var _0x37993f=_0x3cc702[_0x6d6d('0x36')]({'plain':!![]});var _0x37ac94=_0x6d6d('0x37');return db[_0x6d6d('0x38')][_0x6d6d('0x35')]({'where':{'type':_0x37ac94,'resourceId':_0x37993f['id']}})[_0x6d6d('0x1d')](function(){return _0x3cc702;});})[_0x6d6d('0x1d')](function(){_0x182441[_0x6d6d('0x29')](0xcc)[_0x6d6d('0x2a')]();});}};}function handleEntityNotFound(_0x2fcf88,_0x3693da){return function(_0x17d863){if(!_0x17d863){_0x2fcf88[_0x6d6d('0x28')](0x194);}return _0x17d863;};}function handleError(_0x5a2397,_0x1335ef){_0x1335ef=_0x1335ef||0x1f4;return function(_0xf98bfa){logger[_0x6d6d('0x22')](_0xf98bfa[_0x6d6d('0x39')]);if(_0xf98bfa['name']){delete _0xf98bfa['name'];}_0x5a2397[_0x6d6d('0x29')](_0x1335ef)[_0x6d6d('0x3a')](_0xf98bfa);};}exports[_0x6d6d('0x3b')]=function(_0x4d42ff,_0x2a3f67){var _0x2607c1={},_0x23c173={},_0x125d79={'count':0x0,'rows':[]};var _0x52556b=_['map'](db['Trunk'][_0x6d6d('0x3c')],function(_0x4196f0){return{'name':_0x4196f0[_0x6d6d('0x3d')],'type':_0x4196f0[_0x6d6d('0x3e')]['key']};});_0x23c173[_0x6d6d('0x3f')]=_[_0x6d6d('0x40')](_0x52556b,_0x6d6d('0x41'));_0x23c173[_0x6d6d('0x42')]=_[_0x6d6d('0x43')](_0x4d42ff[_0x6d6d('0x42')]);_0x23c173['filters']=_[_0x6d6d('0x44')](_0x23c173[_0x6d6d('0x3f')],_0x23c173[_0x6d6d('0x42')]);_0x2607c1[_0x6d6d('0x45')]=_[_0x6d6d('0x44')](_0x23c173[_0x6d6d('0x3f')],qs[_0x6d6d('0x46')](_0x4d42ff['query'][_0x6d6d('0x46')]));_0x2607c1[_0x6d6d('0x45')]=_0x2607c1[_0x6d6d('0x45')][_0x6d6d('0x47')]?_0x2607c1[_0x6d6d('0x45')]:_0x23c173['model'];if(!_0x4d42ff[_0x6d6d('0x42')][_0x6d6d('0x48')]('nolimit')){_0x2607c1[_0x6d6d('0x2f')]=qs['limit'](_0x4d42ff[_0x6d6d('0x42')][_0x6d6d('0x2f')]);_0x2607c1['offset']=qs[_0x6d6d('0x2c')](_0x4d42ff[_0x6d6d('0x42')][_0x6d6d('0x2c')]);}_0x2607c1[_0x6d6d('0x49')]=qs[_0x6d6d('0x4a')](_0x4d42ff['query']['sort']);_0x2607c1[_0x6d6d('0x4b')]=qs['filters'](_['pick'](_0x4d42ff[_0x6d6d('0x42')],_0x23c173[_0x6d6d('0x4c')]),_0x52556b);if(_0x4d42ff[_0x6d6d('0x42')]['filter']){_0x2607c1[_0x6d6d('0x4b')]=_['merge'](_0x2607c1[_0x6d6d('0x4b')],{'$or':_[_0x6d6d('0x40')](_0x52556b,function(_0x1d3826){if(_0x1d3826[_0x6d6d('0x3e')]!==_0x6d6d('0x4d')){var _0x2669f0={};_0x2669f0[_0x1d3826[_0x6d6d('0x41')]]={'$like':'%'+_0x4d42ff['query'][_0x6d6d('0x4e')]+'%'};return _0x2669f0;}})});}_0x2607c1=_[_0x6d6d('0x4f')]({},_0x2607c1,_0x4d42ff[_0x6d6d('0x50')]);var _0x389e51={'where':_0x2607c1[_0x6d6d('0x4b')]};return db[_0x6d6d('0x51')][_0x6d6d('0x2e')](_0x389e51)[_0x6d6d('0x1d')](function(_0x24cec2){_0x125d79['count']=_0x24cec2;if(_0x4d42ff['query'][_0x6d6d('0x52')]){_0x2607c1[_0x6d6d('0x53')]=[{'all':!![]}];}return db[_0x6d6d('0x51')][_0x6d6d('0x54')](_0x2607c1);})[_0x6d6d('0x1d')](function(_0x492834){_0x125d79[_0x6d6d('0x55')]=_0x492834;return _0x125d79;})[_0x6d6d('0x1d')](respondWithFilteredResult(_0x2a3f67,_0x2607c1))[_0x6d6d('0x27')](handleError(_0x2a3f67,null));};exports[_0x6d6d('0x56')]=function(_0x2ee917,_0x23c2db){var _0x1f7a09={'raw':![],'where':{'id':_0x2ee917[_0x6d6d('0x57')]['id']}},_0x39ec2a={};_0x39ec2a[_0x6d6d('0x3f')]=_[_0x6d6d('0x43')](db[_0x6d6d('0x51')]['rawAttributes']);_0x39ec2a[_0x6d6d('0x42')]=_[_0x6d6d('0x43')](_0x2ee917[_0x6d6d('0x42')]);_0x39ec2a[_0x6d6d('0x4c')]=_[_0x6d6d('0x44')](_0x39ec2a['model'],_0x39ec2a[_0x6d6d('0x42')]);_0x1f7a09[_0x6d6d('0x45')]=_[_0x6d6d('0x44')](_0x39ec2a['model'],qs['fields'](_0x2ee917[_0x6d6d('0x42')]['fields']));_0x1f7a09[_0x6d6d('0x45')]=_0x1f7a09[_0x6d6d('0x45')][_0x6d6d('0x47')]?_0x1f7a09[_0x6d6d('0x45')]:_0x39ec2a[_0x6d6d('0x3f')];if(_0x2ee917[_0x6d6d('0x42')][_0x6d6d('0x52')]){_0x1f7a09[_0x6d6d('0x53')]=[{'all':!![]}];}_0x1f7a09=_[_0x6d6d('0x4f')]({},_0x1f7a09,_0x2ee917[_0x6d6d('0x50')]);return db['Trunk'][_0x6d6d('0x58')](_0x1f7a09)[_0x6d6d('0x1d')](handleEntityNotFound(_0x23c2db,null))[_0x6d6d('0x1d')](respondWithResult(_0x23c2db,null))[_0x6d6d('0x27')](handleError(_0x23c2db,null));};exports[_0x6d6d('0x59')]=function(_0x45f44a,_0x243be3){var _0x5e5ace={'where':{'id':_0x45f44a[_0x6d6d('0x57')]['id']}},_0x5a1cdc={};_0x5a1cdc[_0x6d6d('0x3f')]=_['keys'](db[_0x6d6d('0x51')][_0x6d6d('0x3c')]);_0x5e5ace[_0x6d6d('0x45')]=_[_0x6d6d('0x44')](_0x5a1cdc[_0x6d6d('0x3f')],qs[_0x6d6d('0x46')](_0x45f44a[_0x6d6d('0x42')][_0x6d6d('0x46')]));_0x5e5ace[_0x6d6d('0x45')]=_0x5e5ace[_0x6d6d('0x45')][_0x6d6d('0x47')]?_0x5e5ace[_0x6d6d('0x45')]:_0x5a1cdc[_0x6d6d('0x3f')];if(_0x45f44a[_0x6d6d('0x42')][_0x6d6d('0x52')]){_0x5e5ace['include']=[{'all':!![]}];}_0x5e5ace=_[_0x6d6d('0x4f')]({},_0x5e5ace,_0x45f44a[_0x6d6d('0x50')]);return db['Trunk'][_0x6d6d('0x58')](_0x5e5ace)[_0x6d6d('0x1d')](handleEntityNotFound(_0x243be3,null))[_0x6d6d('0x1d')](function(_0x407357){if(_0x407357){var _0x2d61cc=_0x407357[_0x6d6d('0x36')]({'plain':!![]});_0x2d61cc=qs[_0x6d6d('0x5a')](_0x2d61cc,['id',_0x6d6d('0x5b'),_0x6d6d('0x5c')]);_0x45f44a['body']=_['omit'](_0x45f44a[_0x6d6d('0x5d')],['id',_0x6d6d('0x5b'),_0x6d6d('0x5c')]);return db['Trunk']['create'](_[_0x6d6d('0x4f')](_0x2d61cc,_0x45f44a['body']),{'include':_0x45f44a[_0x6d6d('0x42')]['includeAll']?[{'all':!![]}]:undefined})[_0x6d6d('0x1d')](function(_0x367a6f){var _0x21f14c=_0x45f44a[_0x6d6d('0x5e')][_0x6d6d('0x36')]({'plain':!![]});if(!_0x21f14c)throw new Error(_0x6d6d('0x5f'));if(_0x21f14c['role']===_0x6d6d('0x5e')){var _0x5eb78f=_0x367a6f[_0x6d6d('0x36')]({'plain':!![]});var _0x52d9e7=_0x6d6d('0x37');return db[_0x6d6d('0x60')][_0x6d6d('0x58')]({'where':{'name':_0x52d9e7,'userProfileId':_0x21f14c[_0x6d6d('0x61')]},'raw':!![]})[_0x6d6d('0x1d')](function(_0x163bb7){if(_0x163bb7&&_0x163bb7[_0x6d6d('0x62')]===0x0){return db['UserProfileResource']['create']({'name':_0x5eb78f[_0x6d6d('0x41')],'resourceId':_0x5eb78f['id'],'type':_0x163bb7['name'],'sectionId':_0x163bb7['id']},{})[_0x6d6d('0x1d')](function(){return _0x367a6f;});}else{return _0x367a6f;}})['catch'](function(_0xe19d23){logger[_0x6d6d('0x22')](_0x6d6d('0x63'),_0xe19d23);throw _0xe19d23;});}return _0x367a6f;});}})[_0x6d6d('0x1d')](respondWithResult(_0x243be3,0xc9))[_0x6d6d('0x27')](handleError(_0x243be3,null));};exports[_0x6d6d('0x64')]=function(_0x5dd3b0,_0x3cedc0,_0xbca58e){var _0x3a6d79;return db[_0x6d6d('0x51')][_0x6d6d('0x64')](_0x5dd3b0[_0x6d6d('0x5d')],{'raw':!![]})[_0x6d6d('0x1d')](function(_0x589d64){_0x3a6d79=_0x589d64;return db[_0x6d6d('0x51')][_0x6d6d('0x54')]({'raw':!![]});})[_0x6d6d('0x1d')](function(_0x3bf8a7){var _0x1aa25d=fs[_0x6d6d('0x65')](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],_0x6d6d('0x68')),_0x6d6d('0x69'));var _0x1efc55=fs['readFileSync'](path['join'](config[_0x6d6d('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x5b6ca7=ejs[_0x6d6d('0x6a')](_0x1aa25d,{'trunks':_0x3bf8a7||[]});fs[_0x6d6d('0x6b')](_0x6d6d('0x6c'),_0x5b6ca7);if(_0x3a6d79[_0x6d6d('0x6d')]){var _0x2d4a04=ejs[_0x6d6d('0x6a')](_0x1efc55,{'trunks':_0x3bf8a7||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x2d4a04);}})[_0x6d6d('0x1d')](function(){return respondWithRpcPromise('Reload','create',{'module':'chan_sip.so'});})[_0x6d6d('0x1d')](function(){var _0x5cd494=_0x5dd3b0[_0x6d6d('0x5e')]['get']({'plain':!![]});if(!_0x5cd494)throw new Error(_0x6d6d('0x5f'));if(_0x5cd494[_0x6d6d('0x6e')]==='user'){var _0x52dca9=_0x3a6d79[_0x6d6d('0x36')]({'plain':!![]});return db[_0x6d6d('0x60')][_0x6d6d('0x58')]({'where':{'name':_0x6d6d('0x37'),'userProfileId':_0x5cd494['userProfileId']},'raw':!![]})[_0x6d6d('0x1d')](function(_0x264d24){if(_0x264d24&&_0x264d24[_0x6d6d('0x62')]===0x0){return db[_0x6d6d('0x38')]['create']({'name':_0x52dca9[_0x6d6d('0x41')],'resourceId':_0x52dca9['id'],'type':_0x264d24['name'],'sectionId':_0x264d24['id']},{})['then'](function(){return _0x3a6d79;});}else{return _0x3a6d79;}})['catch'](function(_0x3da125){logger['error'](_0x6d6d('0x63'),_0x3da125);throw _0x3da125;});}return _0x3a6d79;})[_0x6d6d('0x1d')](respondWithResult(_0x3cedc0,0xc9))[_0x6d6d('0x27')](handleError(_0x3cedc0,null));};exports['update']=function(_0x5146a4,_0x55d877,_0xcba8dd){var _0x542386;return db['Trunk'][_0x6d6d('0x58')]({'where':{'id':_0x5146a4[_0x6d6d('0x57')]['id']}})[_0x6d6d('0x1d')](handleEntityNotFound(_0x55d877,null))[_0x6d6d('0x1d')](saveUpdates(_0x5146a4[_0x6d6d('0x5d')],null))[_0x6d6d('0x1d')](function(_0x3f9aad){if(_0x3f9aad){_0x542386=_0x3f9aad;return db['Trunk']['findAll']({'raw':!![]});}})['then'](function(_0x5c20c5){if(_0x5c20c5){var _0x54bdef=fs['readFileSync'](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],_0x6d6d('0x68')),_0x6d6d('0x69'));var _0x59998e=fs['readFileSync'](path['join'](config[_0x6d6d('0x67')],_0x6d6d('0x6f')),_0x6d6d('0x69'));var _0x1c8d15=ejs['render'](_0x54bdef,{'trunks':_0x5c20c5||[]});fs['writeFileSync'](_0x6d6d('0x6c'),_0x1c8d15);var _0x1e1c4e=ejs['render'](_0x59998e,{'trunks':_0x5c20c5||[]});fs[_0x6d6d('0x6b')](_0x6d6d('0x70'),_0x1e1c4e);return respondWithRpcPromise(_0x6d6d('0x71'),_0x6d6d('0x34'),{'module':_0x6d6d('0x72')});}return null;})['then'](function(_0xf5586f){if(_0xf5586f){return _0x542386;}})['then'](respondWithResult(_0x55d877,null))[_0x6d6d('0x27')](handleError(_0x55d877,null));};exports['destroy']=function(_0x108108,_0x54a5a9,_0x445196){var _0x1bfce6;return db[_0x6d6d('0x51')][_0x6d6d('0x58')]({'where':{'id':_0x108108[_0x6d6d('0x57')]['id']}})[_0x6d6d('0x1d')](handleEntityNotFound(_0x54a5a9,null))[_0x6d6d('0x1d')](removeEntity(_0x54a5a9,null))[_0x6d6d('0x1d')](function(){return db[_0x6d6d('0x51')][_0x6d6d('0x54')]({'raw':!![]});})[_0x6d6d('0x1d')](function(_0xb2940d){var _0x7c1934=fs[_0x6d6d('0x65')](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],'server/files/templates/trunk.ejs'),'utf8');var _0x139b61=fs['readFileSync'](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x1d2668=ejs['render'](_0x7c1934,{'trunks':_0xb2940d});var _0x2ab52f=ejs[_0x6d6d('0x6a')](_0x139b61,{'trunks':_0xb2940d});fs[_0x6d6d('0x6b')](_0x6d6d('0x6c'),_0x1d2668);fs[_0x6d6d('0x6b')](_0x6d6d('0x70'),_0x2ab52f);return respondWithRpcPromise(_0x6d6d('0x71'),_0x6d6d('0x35'),{'module':'chan_sip.so'});})[_0x6d6d('0x27')](handleError(_0x54a5a9,null));};
\ No newline at end of file
+var _0xa41a=['server/files/templates/registry.ejs','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','reject','update','destroy','get','UserProfileResource','end','name','send','map','Trunk','fieldName','type','key','query','intersection','model','attributes','fields','length','order','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','keys','rawAttributes','find','createdAt','updatedAt','body','create','user','UserProfileSection','userProfileId','autoAssociation','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','Trunks','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload'];(function(_0x3f2cf1,_0xe530cb){var _0x46a6db=function(_0x59637a){while(--_0x59637a){_0x3f2cf1['push'](_0x3f2cf1['shift']());}};_0x46a6db(++_0xe530cb);}(_0xa41a,0x6b));var _0xaa41=function(_0x5ae8b1,_0x24b5b9){_0x5ae8b1=_0x5ae8b1-0x0;var _0x14c5d1=_0xa41a[_0x5ae8b1];return _0x14c5d1;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0xaa41('0x19'));var client=jayson['client'][_0xaa41('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x12d9e6,_0x2f64bc,_0x889d44,_0x6f9ade){return new BPromise(function(_0x4eaf81,_0x1e9d7f){var _0x178170=_0x6f9ade||client;return _0x178170[_0xaa41('0x1b')](_0x12d9e6,_0x889d44)[_0xaa41('0x1c')](function(_0x2a6988){logger[_0xaa41('0x1d')](_0xaa41('0x1e'),_0x2f64bc,'request\x20sent');logger[_0xaa41('0x1f')](_0xaa41('0x20'),_0x2f64bc,_0xaa41('0x21'),JSON[_0xaa41('0x22')](_0x2a6988));if(_0x2a6988[_0xaa41('0x23')]){if(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x24')]===0x1f4){logger[_0xaa41('0x23')](_0xaa41('0x1e'),_0x2f64bc,_0x2a6988['error']['message']);return _0x1e9d7f(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);}logger[_0xaa41('0x23')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);return _0x4eaf81(_0x2a6988['error']['message']);}else{logger[_0xaa41('0x1d')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0xaa41('0x21'));_0x4eaf81(_0x2a6988[_0xaa41('0x26')][_0xaa41('0x25')]);}})[_0xaa41('0x27')](function(_0x1d623c){logger['error'](_0xaa41('0x1e'),_0x2f64bc,_0x1d623c);_0x1e9d7f(_0x1d623c);});});}function respondWithStatusCode(_0x43a85c,_0x448a21){_0x448a21=_0x448a21||0xcc;return function(_0x21f596){if(_0x21f596){return _0x43a85c[_0xaa41('0x28')](_0x448a21);}return _0x43a85c[_0xaa41('0x29')](_0x448a21)['end']();};}function respondWithResult(_0x5795f4,_0x16aec5){_0x16aec5=_0x16aec5||0xc8;return function(_0x527cac){if(_0x527cac){return _0x5795f4['status'](_0x16aec5)[_0xaa41('0x2a')](_0x527cac);}};}function respondWithFilteredResult(_0x59707f,_0x536bed){return function(_0x2d0ac0){if(_0x2d0ac0){var _0x9c8c21=typeof _0x536bed[_0xaa41('0x2b')]===_0xaa41('0x2c')&&typeof _0x536bed[_0xaa41('0x2d')]===_0xaa41('0x2c');var _0x57ef96=_0x2d0ac0[_0xaa41('0x2e')];var _0x1f0275=_0x9c8c21?0x0:_0x536bed[_0xaa41('0x2b')];var _0x9a16e3=_0x9c8c21?_0x2d0ac0[_0xaa41('0x2e')]:_0x536bed[_0xaa41('0x2b')]+_0x536bed[_0xaa41('0x2d')];var _0x104a95;if(_0x9a16e3>=_0x57ef96){_0x9a16e3=_0x57ef96;_0x104a95=0xc8;}else{_0x104a95=0xce;}_0x59707f['status'](_0x104a95);return _0x59707f[_0xaa41('0x2f')]('Content-Range',_0x1f0275+'-'+_0x9a16e3+'/'+_0x57ef96)['json'](_0x2d0ac0);}return null;};}function patchUpdates(_0x714537){return function(_0x1176bd){try{jsonpatch['apply'](_0x1176bd,_0x714537,!![]);}catch(_0x392b5d){return BPromise[_0xaa41('0x30')](_0x392b5d);}return _0x1176bd['save']();};}function saveUpdates(_0x5022fb,_0x5c25fb){return function(_0x1cf3da){if(_0x1cf3da){return _0x1cf3da[_0xaa41('0x31')](_0x5022fb)[_0xaa41('0x1c')](function(_0x38afc4){return _0x38afc4;});}return null;};}function removeEntity(_0x58f203,_0x289c4a){return function(_0x45c8fe){if(_0x45c8fe){return _0x45c8fe[_0xaa41('0x32')]()['then'](function(){var _0x387c55=_0x45c8fe[_0xaa41('0x33')]({'plain':!![]});var _0x321eb7='Trunks';return db[_0xaa41('0x34')][_0xaa41('0x32')]({'where':{'type':_0x321eb7,'resourceId':_0x387c55['id']}})['then'](function(){return _0x45c8fe;});})[_0xaa41('0x1c')](function(){_0x58f203[_0xaa41('0x29')](0xcc)[_0xaa41('0x35')]();});}};}function handleEntityNotFound(_0x5cec87,_0x22b272){return function(_0x48335f){if(!_0x48335f){_0x5cec87[_0xaa41('0x28')](0x194);}return _0x48335f;};}function handleError(_0x199b24,_0xf13742){_0xf13742=_0xf13742||0x1f4;return function(_0x49b77a){logger['error'](_0x49b77a['stack']);if(_0x49b77a[_0xaa41('0x36')]){delete _0x49b77a[_0xaa41('0x36')];}_0x199b24[_0xaa41('0x29')](_0xf13742)[_0xaa41('0x37')](_0x49b77a);};}exports['index']=function(_0x53a2e4,_0x267999){var _0x5673c={},_0x951e52={},_0x4e8d2e={'count':0x0,'rows':[]};var _0xba115a=_[_0xaa41('0x38')](db[_0xaa41('0x39')]['rawAttributes'],function(_0x3adc28){return{'name':_0x3adc28[_0xaa41('0x3a')],'type':_0x3adc28[_0xaa41('0x3b')][_0xaa41('0x3c')]};});_0x951e52['model']=_['map'](_0xba115a,_0xaa41('0x36'));_0x951e52[_0xaa41('0x3d')]=_['keys'](_0x53a2e4[_0xaa41('0x3d')]);_0x951e52['filters']=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],_0x951e52[_0xaa41('0x3d')]);_0x5673c[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x53a2e4[_0xaa41('0x3d')]['fields']));_0x5673c[_0xaa41('0x40')]=_0x5673c[_0xaa41('0x40')][_0xaa41('0x42')]?_0x5673c[_0xaa41('0x40')]:_0x951e52[_0xaa41('0x3f')];if(!_0x53a2e4[_0xaa41('0x3d')]['hasOwnProperty']('nolimit')){_0x5673c[_0xaa41('0x2d')]=qs['limit'](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2d')]);_0x5673c[_0xaa41('0x2b')]=qs[_0xaa41('0x2b')](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2b')]);}_0x5673c[_0xaa41('0x43')]=qs['sort'](_0x53a2e4[_0xaa41('0x3d')]['sort']);_0x5673c['where']=qs[_0xaa41('0x44')](_['pick'](_0x53a2e4['query'],_0x951e52['filters']),_0xba115a);if(_0x53a2e4[_0xaa41('0x3d')]['filter']){_0x5673c[_0xaa41('0x45')]=_[_0xaa41('0x46')](_0x5673c['where'],{'$or':_['map'](_0xba115a,function(_0xe58f5e){if(_0xe58f5e[_0xaa41('0x3b')]!==_0xaa41('0x47')){var _0x2af8ba={};_0x2af8ba[_0xe58f5e[_0xaa41('0x36')]]={'$like':'%'+_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x48')]+'%'};return _0x2af8ba;}})});}_0x5673c=_[_0xaa41('0x46')]({},_0x5673c,_0x53a2e4[_0xaa41('0x49')]);var _0x4e1ac4={'where':_0x5673c[_0xaa41('0x45')]};return db[_0xaa41('0x39')][_0xaa41('0x2e')](_0x4e1ac4)[_0xaa41('0x1c')](function(_0x206d86){_0x4e8d2e[_0xaa41('0x2e')]=_0x206d86;if(_0x53a2e4['query'][_0xaa41('0x4a')]){_0x5673c[_0xaa41('0x4b')]=[{'all':!![]}];}return db[_0xaa41('0x39')][_0xaa41('0x4c')](_0x5673c);})['then'](function(_0x23bc61){_0x4e8d2e['rows']=_0x23bc61;return _0x4e8d2e;})['then'](respondWithFilteredResult(_0x267999,_0x5673c))[_0xaa41('0x27')](handleError(_0x267999,null));};exports[_0xaa41('0x4d')]=function(_0x3e16ef,_0x4ca114){var _0xb4773b={'raw':![],'where':{'id':_0x3e16ef[_0xaa41('0x4e')]['id']}},_0x3e1a73={};_0x3e1a73['model']=_[_0xaa41('0x4f')](db[_0xaa41('0x39')][_0xaa41('0x50')]);_0x3e1a73[_0xaa41('0x3d')]=_[_0xaa41('0x4f')](_0x3e16ef[_0xaa41('0x3d')]);_0x3e1a73[_0xaa41('0x44')]=_[_0xaa41('0x3e')](_0x3e1a73['model'],_0x3e1a73[_0xaa41('0x3d')]);_0xb4773b['attributes']=_['intersection'](_0x3e1a73[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x41')]));_0xb4773b[_0xaa41('0x40')]=_0xb4773b[_0xaa41('0x40')][_0xaa41('0x42')]?_0xb4773b[_0xaa41('0x40')]:_0x3e1a73['model'];if(_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0xb4773b[_0xaa41('0x4b')]=[{'all':!![]}];}_0xb4773b=_['merge']({},_0xb4773b,_0x3e16ef[_0xaa41('0x49')]);return db[_0xaa41('0x39')]['find'](_0xb4773b)[_0xaa41('0x1c')](handleEntityNotFound(_0x4ca114,null))[_0xaa41('0x1c')](respondWithResult(_0x4ca114,null))[_0xaa41('0x27')](handleError(_0x4ca114,null));};exports['clone']=function(_0x2cf32c,_0xc8e626){var _0x4e3b13={'where':{'id':_0x2cf32c[_0xaa41('0x4e')]['id']}},_0x49789a={};_0x49789a[_0xaa41('0x3f')]=_[_0xaa41('0x4f')](db['Trunk'][_0xaa41('0x50')]);_0x4e3b13[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x49789a[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x2cf32c['query'][_0xaa41('0x41')]));_0x4e3b13['attributes']=_0x4e3b13['attributes'][_0xaa41('0x42')]?_0x4e3b13['attributes']:_0x49789a[_0xaa41('0x3f')];if(_0x2cf32c[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0x4e3b13['include']=[{'all':!![]}];}_0x4e3b13=_[_0xaa41('0x46')]({},_0x4e3b13,_0x2cf32c[_0xaa41('0x49')]);return db[_0xaa41('0x39')][_0xaa41('0x51')](_0x4e3b13)[_0xaa41('0x1c')](handleEntityNotFound(_0xc8e626,null))[_0xaa41('0x1c')](function(_0xc56018){if(_0xc56018){var _0x337059=_0xc56018[_0xaa41('0x33')]({'plain':!![]});_0x337059=qs['omit'](_0x337059,['id',_0xaa41('0x52'),_0xaa41('0x53')]);_0x2cf32c[_0xaa41('0x54')]=_['omit'](_0x2cf32c[_0xaa41('0x54')],['id',_0xaa41('0x52'),_0xaa41('0x53')]);return db[_0xaa41('0x39')][_0xaa41('0x55')](_[_0xaa41('0x46')](_0x337059,_0x2cf32c[_0xaa41('0x54')]),{'include':_0x2cf32c['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x540325){var _0x4ec357=_0x2cf32c['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x4ec357)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ec357['role']===_0xaa41('0x56')){var _0x40a524=_0x540325[_0xaa41('0x33')]({'plain':!![]});var _0x312eee='Trunks';return db[_0xaa41('0x57')][_0xaa41('0x51')]({'where':{'name':_0x312eee,'userProfileId':_0x4ec357[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0xa71432){if(_0xa71432&&_0xa71432[_0xaa41('0x59')]===0x0){return db[_0xaa41('0x34')][_0xaa41('0x55')]({'name':_0x40a524[_0xaa41('0x36')],'resourceId':_0x40a524['id'],'type':_0xa71432['name'],'sectionId':_0xa71432['id']},{})[_0xaa41('0x1c')](function(){return _0x540325;});}else{return _0x540325;}})[_0xaa41('0x27')](function(_0x50170f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50170f);throw _0x50170f;});}return _0x540325;});}})[_0xaa41('0x1c')](respondWithResult(_0xc8e626,0xc9))['catch'](handleError(_0xc8e626,null));};exports[_0xaa41('0x55')]=function(_0x5c8028,_0x5423b6,_0x18d18b){var _0x4b1ec4;return db[_0xaa41('0x39')][_0xaa41('0x55')](_0x5c8028[_0xaa41('0x54')],{'raw':!![]})[_0xaa41('0x1c')](function(_0x5a2683){_0x4b1ec4=_0x5a2683;return db['Trunk'][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x4d6d0c){var _0x5954ba=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x5a385e=fs[_0xaa41('0x5a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x19ec63=ejs[_0xaa41('0x5f')](_0x5954ba,{'trunks':_0x4d6d0c||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x19ec63);if(_0x4b1ec4[_0xaa41('0x61')]){var _0x19ed68=ejs[_0xaa41('0x5f')](_0x5a385e,{'trunks':_0x4d6d0c||[]});fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x19ed68);}})[_0xaa41('0x1c')](function(){return respondWithRpcPromise('Reload',_0xaa41('0x55'),{'module':_0xaa41('0x64')});})[_0xaa41('0x1c')](function(){var _0x175ca9=_0x5c8028['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x175ca9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x175ca9[_0xaa41('0x65')]===_0xaa41('0x56')){var _0x2b9e68=_0x4b1ec4[_0xaa41('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xaa41('0x51')]({'where':{'name':_0xaa41('0x66'),'userProfileId':_0x175ca9[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0x59052d){if(_0x59052d&&_0x59052d[_0xaa41('0x59')]===0x0){return db['UserProfileResource'][_0xaa41('0x55')]({'name':_0x2b9e68[_0xaa41('0x36')],'resourceId':_0x2b9e68['id'],'type':_0x59052d['name'],'sectionId':_0x59052d['id']},{})[_0xaa41('0x1c')](function(){return _0x4b1ec4;});}else{return _0x4b1ec4;}})[_0xaa41('0x27')](function(_0x2ba160){logger[_0xaa41('0x23')](_0xaa41('0x67'),_0x2ba160);throw _0x2ba160;});}return _0x4b1ec4;})[_0xaa41('0x1c')](respondWithResult(_0x5423b6,0xc9))[_0xaa41('0x27')](handleError(_0x5423b6,null));};exports[_0xaa41('0x31')]=function(_0x33b5f4,_0x3d4f1e,_0x25a064){var _0x59a30b;return db[_0xaa41('0x39')][_0xaa41('0x51')]({'where':{'id':_0x33b5f4[_0xaa41('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3d4f1e,null))['then'](saveUpdates(_0x33b5f4[_0xaa41('0x54')],null))[_0xaa41('0x1c')](function(_0x59fd6a){if(_0x59fd6a){_0x59a30b=_0x59fd6a;return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});}})['then'](function(_0x305050){if(_0x305050){var _0x3dd47e=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x1472be=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x44154f=ejs[_0xaa41('0x5f')](_0x3dd47e,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x44154f);var _0x404c38=ejs[_0xaa41('0x5f')](_0x1472be,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x63'),_0x404c38);return respondWithRpcPromise(_0xaa41('0x68'),'update',{'module':_0xaa41('0x64')});}return null;})['then'](function(_0x53faf4){if(_0x53faf4){return _0x59a30b;}})[_0xaa41('0x1c')](respondWithResult(_0x3d4f1e,null))[_0xaa41('0x27')](handleError(_0x3d4f1e,null));};exports['destroy']=function(_0x5a8cb0,_0x241e1a,_0x1726ec){var _0x3c189d;return db[_0xaa41('0x39')]['find']({'where':{'id':_0x5a8cb0[_0xaa41('0x4e')]['id']}})[_0xaa41('0x1c')](handleEntityNotFound(_0x241e1a,null))[_0xaa41('0x1c')](removeEntity(_0x241e1a,null))['then'](function(){return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x5697b6){var _0x183b36=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],_0xaa41('0x5d')),'utf8');var _0x399fbd=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config['root'],_0xaa41('0x69')),_0xaa41('0x5e'));var _0x1a2deb=ejs[_0xaa41('0x5f')](_0x183b36,{'trunks':_0x5697b6});var _0x38f5d0=ejs['render'](_0x399fbd,{'trunks':_0x5697b6});fs[_0xaa41('0x62')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1a2deb);fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x38f5d0);return respondWithRpcPromise(_0xaa41('0x68'),_0xaa41('0x32'),{'module':_0xaa41('0x64')});})[_0xaa41('0x27')](handleError(_0x241e1a,null));};
\ No newline at end of file
index 85839ce..c78fa1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8341=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./trunk.attributes','exports','define','lodash','util'];(function(_0x45f707,_0x514c77){var _0x5a71c2=function(_0x305ea8){while(--_0x305ea8){_0x45f707['push'](_0x45f707['shift']());}};_0x5a71c2(++_0x514c77);}(_0x8341,0x14e));var _0x1834=function(_0x4a4ebb,_0x18fb3c){_0x4a4ebb=_0x4a4ebb-0x0;var _0x3c3262=_0x8341[_0x4a4ebb];return _0x3c3262;};'use strict';var _=require(_0x1834('0x0'));var util=require(_0x1834('0x1'));var logger=require(_0x1834('0x2'))(_0x1834('0x3'));var moment=require(_0x1834('0x4'));var BPromise=require(_0x1834('0x5'));var rp=require(_0x1834('0x6'));var fs=require('fs');var path=require(_0x1834('0x7'));var rimraf=require('rimraf');var config=require(_0x1834('0x8'));var attributes=require(_0x1834('0x9'));module[_0x1834('0xa')]=function(_0x294bad,_0x4ad3f9){return _0x294bad[_0x1834('0xb')]('Trunk',attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1281=['moment','request-promise','path','rimraf','./trunk.attributes','exports','define','tools_trunks','lodash','util','api'];(function(_0x20c227,_0x343d61){var _0x4cd985=function(_0x44dc27){while(--_0x44dc27){_0x20c227['push'](_0x20c227['shift']());}};_0x4cd985(++_0x343d61);}(_0x1281,0x76));var _0x1128=function(_0x43a725,_0x5f047a){_0x43a725=_0x43a725-0x0;var _0x3c8682=_0x1281[_0x43a725];return _0x3c8682;};'use strict';var _=require(_0x1128('0x0'));var util=require(_0x1128('0x1'));var logger=require('../../config/logger')(_0x1128('0x2'));var moment=require(_0x1128('0x3'));var BPromise=require('bluebird');var rp=require(_0x1128('0x4'));var fs=require('fs');var path=require(_0x1128('0x5'));var rimraf=require(_0x1128('0x6'));var config=require('../../config/environment');var attributes=require(_0x1128('0x7'));module[_0x1128('0x8')]=function(_0x20bdfc,_0x54a9de){return _0x20bdfc[_0x1128('0x9')]('Trunk',attributes,{'tableName':_0x1128('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bdc1db..a2df506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3edb=['attributes','map','include','model','debug','ShowTrunk','find','raw','where','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','GetTrunk','Trunk','findAll','options'];(function(_0x1b7900,_0x53b775){var _0x1a91c4=function(_0xa83743){while(--_0xa83743){_0x1b7900['push'](_0x1b7900['shift']());}};_0x1a91c4(++_0x53b775);}(_0x3edb,0x1c9));var _0xb3ed=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x3edb[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0xb3ed('0x0'));var util=require(_0xb3ed('0x1'));var moment=require('moment');var BPromise=require(_0xb3ed('0x2'));var rs=require(_0xb3ed('0x3'));var fs=require('fs');var Redis=require(_0xb3ed('0x4'));var db=require(_0xb3ed('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3ed('0x6'))('rpc');var config=require(_0xb3ed('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb3ed('0x8')][_0xb3ed('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa0f681,_0x50fd32,_0xcd6a84){return new BPromise(function(_0x3c968c,_0x2e1a7d){return client[_0xb3ed('0xa')](_0xa0f681,_0xcd6a84)[_0xb3ed('0xb')](function(_0x33d48f){logger['info'](_0xb3ed('0xc'),_0x50fd32,'request\x20sent');logger['debug'](_0xb3ed('0xd'),_0x50fd32,_0xb3ed('0xe'),JSON[_0xb3ed('0xf')](_0x33d48f));if(_0x33d48f[_0xb3ed('0x10')]){if(_0x33d48f[_0xb3ed('0x10')]['code']===0x1f4){logger[_0xb3ed('0x10')]('Trunk,\x20%s,\x20%s',_0x50fd32,_0x33d48f['error'][_0xb3ed('0x11')]);return _0x2e1a7d(_0x33d48f[_0xb3ed('0x10')]['message']);}logger[_0xb3ed('0x10')](_0xb3ed('0xc'),_0x50fd32,_0x33d48f[_0xb3ed('0x10')][_0xb3ed('0x11')]);return _0x3c968c(_0x33d48f[_0xb3ed('0x10')][_0xb3ed('0x11')]);}else{logger['info'](_0xb3ed('0xc'),_0x50fd32,_0xb3ed('0xe'));_0x3c968c(_0x33d48f['result'][_0xb3ed('0x11')]);}})[_0xb3ed('0x12')](function(_0x1887da){logger['error']('Trunk,\x20%s,\x20%s',_0x50fd32,_0x1887da);_0x2e1a7d(_0x1887da);});});}exports[_0xb3ed('0x13')]=function(_0x2f0469){var _0x3e5ab7=this;return new Promise(function(_0x18b619,_0x2f3cf7){return db[_0xb3ed('0x14')][_0xb3ed('0x15')]({'raw':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469[_0xb3ed('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469['options']['where']||null:null,'attributes':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469[_0xb3ed('0x16')][_0xb3ed('0x17')]||null:null,'limit':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469['options']['limit']||null:null,'include':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469['options']['include']?_[_0xb3ed('0x18')](_0x2f0469[_0xb3ed('0x16')]['include'],function(_0xf54322){return{'model':db[_0xf54322['model']],'as':_0xf54322['as'],'attributes':_0xf54322['attributes'],'include':_0xf54322[_0xb3ed('0x19')]?_[_0xb3ed('0x18')](_0xf54322['include'],function(_0x3c33cb){return{'model':db[_0x3c33cb[_0xb3ed('0x1a')]],'as':_0x3c33cb['as'],'attributes':_0x3c33cb['attributes'],'include':_0x3c33cb[_0xb3ed('0x19')]?_[_0xb3ed('0x18')](_0x3c33cb['include'],function(_0x48f902){return{'model':db[_0x48f902[_0xb3ed('0x1a')]],'as':_0x48f902['as'],'attributes':_0x48f902[_0xb3ed('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb3ed('0xb')](function(_0x5918e8){logger['info'](_0xb3ed('0x13'),_0x2f0469);logger[_0xb3ed('0x1b')](_0xb3ed('0x13'),_0x2f0469,JSON[_0xb3ed('0xf')](_0x5918e8));_0x18b619(_0x5918e8);})[_0xb3ed('0x12')](function(_0x2a9706){logger[_0xb3ed('0x10')](_0xb3ed('0x13'),_0x2a9706['message'],_0x2f0469);_0x2f3cf7(_0x3e5ab7[_0xb3ed('0x10')](0x1f4,_0x2a9706[_0xb3ed('0x11')]));});});};exports[_0xb3ed('0x1c')]=function(_0x319c42){var _0xc46ae8=this;return new Promise(function(_0x2e31ea,_0x5783d8){return db[_0xb3ed('0x14')][_0xb3ed('0x1d')]({'raw':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x1e')]===undefined?!![]:![]:!![],'where':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x1f')]||null:null,'attributes':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x17')]||null:null,'include':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x19')]?_['map'](_0x319c42['options'][_0xb3ed('0x19')],function(_0x222f6a){return{'model':db[_0x222f6a[_0xb3ed('0x1a')]],'as':_0x222f6a['as'],'attributes':_0x222f6a[_0xb3ed('0x17')],'include':_0x222f6a[_0xb3ed('0x19')]?_['map'](_0x222f6a[_0xb3ed('0x19')],function(_0x27b052){return{'model':db[_0x27b052[_0xb3ed('0x1a')]],'as':_0x27b052['as'],'attributes':_0x27b052[_0xb3ed('0x17')],'include':_0x27b052['include']?_['map'](_0x27b052['include'],function(_0x1cadf9){return{'model':db[_0x1cadf9[_0xb3ed('0x1a')]],'as':_0x1cadf9['as'],'attributes':_0x1cadf9[_0xb3ed('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb3ed('0xb')](function(_0x58140a){logger['info'](_0xb3ed('0x1c'),_0x319c42);logger[_0xb3ed('0x1b')](_0xb3ed('0x1c'),_0x319c42,JSON['stringify'](_0x58140a));_0x2e31ea(_0x58140a);})[_0xb3ed('0x12')](function(_0x37da1a){logger[_0xb3ed('0x10')](_0xb3ed('0x1c'),_0x37da1a[_0xb3ed('0x11')],_0x319c42);_0x5783d8(_0xc46ae8[_0xb3ed('0x10')](0x1f4,_0x37da1a[_0xb3ed('0x11')]));});});};
\ No newline at end of file
+var _0xc33f=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Trunk','findAll','options','raw','limit','include','map','model','GetTrunk','debug','ShowTrunk','find','attributes','moment'];(function(_0x377f9f,_0x1fa9c7){var _0x6ffdec=function(_0x31391f){while(--_0x31391f){_0x377f9f['push'](_0x377f9f['shift']());}};_0x6ffdec(++_0x1fa9c7);}(_0xc33f,0x1ee));var _0xfc33=function(_0x472173,_0x140ece){_0x472173=_0x472173-0x0;var _0x5abc10=_0xc33f[_0x472173];return _0x5abc10;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfc33('0x0'));var BPromise=require(_0xfc33('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc33('0x2'))['db'];var utils=require(_0xfc33('0x3'));var logger=require(_0xfc33('0x4'))(_0xfc33('0x5'));var config=require(_0xfc33('0x6'));var jayson=require(_0xfc33('0x7'));var client=jayson[_0xfc33('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x433d4b,_0x3f6967,_0x2141de){return new BPromise(function(_0x4b9537,_0x424f42){return client['request'](_0x433d4b,_0x2141de)[_0xfc33('0x9')](function(_0x11ee82){logger[_0xfc33('0xa')](_0xfc33('0xb'),_0x3f6967,_0xfc33('0xc'));logger['debug'](_0xfc33('0xd'),_0x3f6967,_0xfc33('0xc'),JSON[_0xfc33('0xe')](_0x11ee82));if(_0x11ee82[_0xfc33('0xf')]){if(_0x11ee82[_0xfc33('0xf')][_0xfc33('0x10')]===0x1f4){logger[_0xfc33('0xf')](_0xfc33('0xb'),_0x3f6967,_0x11ee82[_0xfc33('0xf')]['message']);return _0x424f42(_0x11ee82[_0xfc33('0xf')]['message']);}logger[_0xfc33('0xf')](_0xfc33('0xb'),_0x3f6967,_0x11ee82['error'][_0xfc33('0x11')]);return _0x4b9537(_0x11ee82[_0xfc33('0xf')][_0xfc33('0x11')]);}else{logger['info'](_0xfc33('0xb'),_0x3f6967,_0xfc33('0xc'));_0x4b9537(_0x11ee82[_0xfc33('0x12')][_0xfc33('0x11')]);}})[_0xfc33('0x13')](function(_0x401271){logger['error'](_0xfc33('0xb'),_0x3f6967,_0x401271);_0x424f42(_0x401271);});});}exports['GetTrunk']=function(_0x155766){var _0x1e6278=this;return new Promise(function(_0x17df31,_0x1b3c9e){return db[_0xfc33('0x14')][_0xfc33('0x15')]({'raw':_0x155766['options']?_0x155766[_0xfc33('0x16')][_0xfc33('0x17')]===undefined?!![]:![]:!![],'where':_0x155766[_0xfc33('0x16')]?_0x155766[_0xfc33('0x16')]['where']||null:null,'attributes':_0x155766[_0xfc33('0x16')]?_0x155766[_0xfc33('0x16')]['attributes']||null:null,'limit':_0x155766[_0xfc33('0x16')]?_0x155766[_0xfc33('0x16')][_0xfc33('0x18')]||null:null,'include':_0x155766[_0xfc33('0x16')]?_0x155766['options'][_0xfc33('0x19')]?_[_0xfc33('0x1a')](_0x155766[_0xfc33('0x16')]['include'],function(_0x8c43e2){return{'model':db[_0x8c43e2['model']],'as':_0x8c43e2['as'],'attributes':_0x8c43e2['attributes'],'include':_0x8c43e2[_0xfc33('0x19')]?_[_0xfc33('0x1a')](_0x8c43e2[_0xfc33('0x19')],function(_0x2e19bb){return{'model':db[_0x2e19bb[_0xfc33('0x1b')]],'as':_0x2e19bb['as'],'attributes':_0x2e19bb['attributes'],'include':_0x2e19bb['include']?_[_0xfc33('0x1a')](_0x2e19bb[_0xfc33('0x19')],function(_0x21c5a){return{'model':db[_0x21c5a[_0xfc33('0x1b')]],'as':_0x21c5a['as'],'attributes':_0x21c5a['attributes']};}):[]};}):[]};}):[]:[]})[_0xfc33('0x9')](function(_0x286a43){logger['info'](_0xfc33('0x1c'),_0x155766);logger[_0xfc33('0x1d')](_0xfc33('0x1c'),_0x155766,JSON[_0xfc33('0xe')](_0x286a43));_0x17df31(_0x286a43);})[_0xfc33('0x13')](function(_0x13e2a5){logger[_0xfc33('0xf')](_0xfc33('0x1c'),_0x13e2a5[_0xfc33('0x11')],_0x155766);_0x1b3c9e(_0x1e6278[_0xfc33('0xf')](0x1f4,_0x13e2a5[_0xfc33('0x11')]));});});};exports[_0xfc33('0x1e')]=function(_0x2112d1){var _0x426f0e=this;return new Promise(function(_0x1ec7af,_0xf5dfd3){return db[_0xfc33('0x14')][_0xfc33('0x1f')]({'raw':_0x2112d1[_0xfc33('0x16')]?_0x2112d1[_0xfc33('0x16')][_0xfc33('0x17')]===undefined?!![]:![]:!![],'where':_0x2112d1[_0xfc33('0x16')]?_0x2112d1[_0xfc33('0x16')]['where']||null:null,'attributes':_0x2112d1[_0xfc33('0x16')]?_0x2112d1[_0xfc33('0x16')][_0xfc33('0x20')]||null:null,'include':_0x2112d1['options']?_0x2112d1['options'][_0xfc33('0x19')]?_[_0xfc33('0x1a')](_0x2112d1[_0xfc33('0x16')][_0xfc33('0x19')],function(_0x42c061){return{'model':db[_0x42c061[_0xfc33('0x1b')]],'as':_0x42c061['as'],'attributes':_0x42c061[_0xfc33('0x20')],'include':_0x42c061[_0xfc33('0x19')]?_[_0xfc33('0x1a')](_0x42c061[_0xfc33('0x19')],function(_0x58c31a){return{'model':db[_0x58c31a['model']],'as':_0x58c31a['as'],'attributes':_0x58c31a[_0xfc33('0x20')],'include':_0x58c31a[_0xfc33('0x19')]?_[_0xfc33('0x1a')](_0x58c31a[_0xfc33('0x19')],function(_0x2872e2){return{'model':db[_0x2872e2['model']],'as':_0x2872e2['as'],'attributes':_0x2872e2[_0xfc33('0x20')]};}):[]};}):[]};}):[]:[]})[_0xfc33('0x9')](function(_0x51bd9a){logger[_0xfc33('0xa')](_0xfc33('0x1e'),_0x2112d1);logger[_0xfc33('0x1d')]('ShowTrunk',_0x2112d1,JSON[_0xfc33('0xe')](_0x51bd9a));_0x1ec7af(_0x51bd9a);})[_0xfc33('0x13')](function(_0x382333){logger['error'](_0xfc33('0x1e'),_0x382333[_0xfc33('0x11')],_0x2112d1);_0xf5dfd3(_0x426f0e[_0xfc33('0xf')](0x1f4,_0x382333[_0xfc33('0x11')]));});});};
\ No newline at end of file
index b740524..28cd06e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c68=['now','originalname','/:id/avatar','single','file','addAvatar','login','/:id/logout','logout','pause','/:id/unpause','unpause','/:id/chat_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','/:id/api_key','createApiKey','put','update','changePassword','delete','/:id/queues','removeTeams','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','getQueues','/:id/queues_rt','/:id/recordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getApiKey','addContacts','post','create','bulkCreate','addQueues','join','root','server/files/images/','%s-%s'];(function(_0x4c8f01,_0x170514){var _0x30c1f7=function(_0x2aae01){while(--_0x2aae01){_0x4c8f01['push'](_0x4c8f01['shift']());}};_0x30c1f7(++_0x170514);}(_0x1c68,0x18f));var _0x81c6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1c68[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x81c6('0x0'));var util=require(_0x81c6('0x1'));var path=require(_0x81c6('0x2'));var timeout=require(_0x81c6('0x3'));var express=require(_0x81c6('0x4'));var router=express[_0x81c6('0x5')]();var fs_extra=require(_0x81c6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x81c6('0x7'));var config=require(_0x81c6('0x8'));var controller=require(_0x81c6('0x9'));router[_0x81c6('0xa')]('/',auth[_0x81c6('0xb')](),controller[_0x81c6('0xc')]);router['get'](_0x81c6('0xd'),auth[_0x81c6('0xb')](),controller[_0x81c6('0xe')]);router[_0x81c6('0xa')](_0x81c6('0xf'),auth['isAuthenticated'](),controller[_0x81c6('0x10')]);router[_0x81c6('0xa')](_0x81c6('0x11'),auth['isAuthenticated'](),controller[_0x81c6('0x12')]);router[_0x81c6('0xa')](_0x81c6('0x13'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x14')]);router[_0x81c6('0xa')]('/:id/avatar',controller[_0x81c6('0x15')]);router[_0x81c6('0xa')](_0x81c6('0x16'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x17')]);router[_0x81c6('0xa')](_0x81c6('0x18'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x19')]);router[_0x81c6('0xa')]('/:id/queues',auth[_0x81c6('0xb')](),controller[_0x81c6('0x1a')]);router[_0x81c6('0xa')](_0x81c6('0x1b'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router['get']('/:id/groups',auth[_0x81c6('0xb')](),controller['getGroups']);router['get'](_0x81c6('0x1c'),auth[_0x81c6('0xb')](),controller['getRecordings']);router['get'](_0x81c6('0x1d'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x1e')]);router[_0x81c6('0xa')]('/:id/chat/interactions',auth[_0x81c6('0xb')](),controller[_0x81c6('0x1f')]);router[_0x81c6('0xa')](_0x81c6('0x20'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x21')]);router[_0x81c6('0xa')](_0x81c6('0x22'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x23')]);router[_0x81c6('0xa')](_0x81c6('0x24'),auth[_0x81c6('0xb')](),controller['getSmsInteractions']);router[_0x81c6('0xa')](_0x81c6('0x25'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x26')]);router[_0x81c6('0xa')](_0x81c6('0x27'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x28')]);router[_0x81c6('0xa')](_0x81c6('0x29'),auth['isAuthenticated'](),controller[_0x81c6('0x2a')]);router[_0x81c6('0xa')]('/:id/lists',auth[_0x81c6('0xb')](),controller[_0x81c6('0x2b')]);router['get']('/:id/agents',auth[_0x81c6('0xb')](),controller[_0x81c6('0x2c')]);router[_0x81c6('0xa')](_0x81c6('0x2d'),auth[_0x81c6('0xb')](),controller['getVoicePrefixes']);router['get'](_0x81c6('0x2e'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x2f')]);router[_0x81c6('0xa')](_0x81c6('0x30'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x31')]);router['get'](_0x81c6('0x32'),auth['isAuthenticated'](),controller['getOpenchannelAccounts']);router['get']('/:id/sms_accounts',auth[_0x81c6('0xb')](),controller[_0x81c6('0x33')]);router[_0x81c6('0xa')](_0x81c6('0x34'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x35')]);router[_0x81c6('0xa')](_0x81c6('0x36'),auth['isAuthenticated'](),controller[_0x81c6('0x37')]);router[_0x81c6('0xa')](_0x81c6('0x38'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x39')]);router[_0x81c6('0xa')](_0x81c6('0x3a'),auth[_0x81c6('0xb')](),controller['getScheduledCalls']);router[_0x81c6('0xa')]('/:id/api_key',auth[_0x81c6('0xb')](),controller[_0x81c6('0x3b')]);router['post']('/:id/contacts',auth[_0x81c6('0xb')](),controller[_0x81c6('0x3c')]);router[_0x81c6('0x3d')]('/',auth['isAuthenticated'](),controller[_0x81c6('0x3e')]);router['post']('/create_many',auth[_0x81c6('0xb')](),controller[_0x81c6('0x3f')]);router[_0x81c6('0x3d')]('/:id/queues',auth['isAuthenticated'](),controller[_0x81c6('0x40')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x524844,_0x4b1a4d,_0x5beb71){_0x5beb71(null,path[_0x81c6('0x41')](config[_0x81c6('0x42')],_0x81c6('0x43')));},'filename':function(_0x117829,_0x363af0,_0x3ed017){_0x3ed017(null,util['format'](_0x81c6('0x44'),Date[_0x81c6('0x45')](),_0x363af0[_0x81c6('0x46')]));}})});router[_0x81c6('0x3d')](_0x81c6('0x47'),upload[_0x81c6('0x48')](_0x81c6('0x49')),controller[_0x81c6('0x4a')]);router[_0x81c6('0x3d')]('/:id/login',auth[_0x81c6('0xb')](),controller[_0x81c6('0x4b')]);router[_0x81c6('0x3d')](_0x81c6('0x4c'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x4d')]);router[_0x81c6('0x3d')]('/:id/pause',auth[_0x81c6('0xb')](),controller[_0x81c6('0x4e')]);router[_0x81c6('0x3d')](_0x81c6('0x4f'),auth['isAuthenticated'](),controller[_0x81c6('0x50')]);router[_0x81c6('0x3d')](_0x81c6('0x29'),auth['isAuthenticated'](),controller['addTeams']);router[_0x81c6('0x3d')](_0x81c6('0x51'),auth[_0x81c6('0xb')](),controller['addChatInteractions']);router[_0x81c6('0x3d')]('/:id/mail_interactions',auth[_0x81c6('0xb')](),controller['addMailInteractions']);router['post'](_0x81c6('0x52'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x53')]);router['post'](_0x81c6('0x54'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x55')]);router[_0x81c6('0x3d')](_0x81c6('0x56'),auth['isAuthenticated'](),controller['addOpenchannelInteractions']);router[_0x81c6('0x3d')](_0x81c6('0x57'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x58')]);router[_0x81c6('0x3d')](_0x81c6('0x2e'),auth['isAuthenticated'](),controller[_0x81c6('0x59')]);router['post'](_0x81c6('0x30'),auth['isAuthenticated'](),controller[_0x81c6('0x5a')]);router[_0x81c6('0x3d')]('/:id/openchannel_accounts',auth[_0x81c6('0xb')](),controller['addOpenchannelAccounts']);router['post'](_0x81c6('0x5b'),auth['isAuthenticated'](),controller[_0x81c6('0x5c')]);router[_0x81c6('0x3d')]('/:id/chat_websites',auth[_0x81c6('0xb')](),controller[_0x81c6('0x5d')]);router['post'](_0x81c6('0x36'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x5e')]);router['post']('/:id/square_projects',auth['isAuthenticated'](),controller[_0x81c6('0x5f')]);router['post'](_0x81c6('0x60'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x61')]);router[_0x81c6('0x62')](_0x81c6('0x13'),auth['isAuthenticated'](),controller[_0x81c6('0x63')]);router[_0x81c6('0x62')]('/:id/password',auth['isAuthenticated'](),controller[_0x81c6('0x64')]);router[_0x81c6('0x65')](_0x81c6('0x66'),auth['isAuthenticated'](),controller['removeQueues']);router[_0x81c6('0x65')](_0x81c6('0x29'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x67')]);router[_0x81c6('0x65')]('/:id',auth[_0x81c6('0xb')](),controller['destroy']);router[_0x81c6('0x65')](_0x81c6('0x51'),auth['isAuthenticated'](),controller[_0x81c6('0x68')]);router['delete'](_0x81c6('0x69'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x6a')]);router[_0x81c6('0x65')](_0x81c6('0x52'),auth[_0x81c6('0xb')](),controller['removeFaxInteractions']);router[_0x81c6('0x65')]('/:id/sms_interactions',auth[_0x81c6('0xb')](),controller[_0x81c6('0x6b')]);router[_0x81c6('0x65')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0x81c6('0x6c')]);router[_0x81c6('0x65')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x81c6('0x6d')]);router['delete'](_0x81c6('0x2e'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x6e')]);router['delete'](_0x81c6('0x30'),auth[_0x81c6('0xb')](),controller['removeMailAccounts']);router[_0x81c6('0x65')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x81c6('0x6f')]);router['delete'](_0x81c6('0x5b'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x70')]);router[_0x81c6('0x65')](_0x81c6('0x34'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x71')]);router[_0x81c6('0x65')]('/:id/whatsapp_accounts',auth[_0x81c6('0xb')](),controller[_0x81c6('0x72')]);router[_0x81c6('0x65')](_0x81c6('0x38'),auth['isAuthenticated'](),controller[_0x81c6('0x73')]);router['delete'](_0x81c6('0x60'),auth['isAuthenticated'](),controller[_0x81c6('0x74')]);module['exports']=router;
\ No newline at end of file
+var _0x86e9=['addChatInteractions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','/:id/square_projects','createApiKey','put','/:id/password','changePassword','delete','/:id','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','/:id/openchannel_accounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','describe','/whoami','whoami','/presence','getPresence','show','/:id/avatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues_rt','getGroups','/:id/recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','create','/create_many','/:id/queues','addQueues','diskStorage','join','root','server/files/images/','now','originalname','single','file','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions'];(function(_0x1a16f4,_0x433a8f){var _0x3ebad0=function(_0x1db8b4){while(--_0x1db8b4){_0x1a16f4['push'](_0x1a16f4['shift']());}};_0x3ebad0(++_0x433a8f);}(_0x86e9,0x100));var _0x986e=function(_0x3972dd,_0x298e3f){_0x3972dd=_0x3972dd-0x0;var _0x3a29c8=_0x86e9[_0x3972dd];return _0x3a29c8;};'use strict';var multer=require('multer');var util=require(_0x986e('0x0'));var path=require(_0x986e('0x1'));var timeout=require(_0x986e('0x2'));var express=require('express');var router=express[_0x986e('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x986e('0x4'));var config=require(_0x986e('0x5'));var controller=require(_0x986e('0x6'));router[_0x986e('0x7')]('/',auth[_0x986e('0x8')](),controller['index']);router[_0x986e('0x7')]('/describe',auth[_0x986e('0x8')](),controller[_0x986e('0x9')]);router[_0x986e('0x7')](_0x986e('0xa'),auth[_0x986e('0x8')](),controller[_0x986e('0xb')]);router[_0x986e('0x7')](_0x986e('0xc'),auth[_0x986e('0x8')](),controller[_0x986e('0xd')]);router[_0x986e('0x7')]('/:id',auth[_0x986e('0x8')](),controller[_0x986e('0xe')]);router[_0x986e('0x7')](_0x986e('0xf'),controller['getAvatar']);router['get'](_0x986e('0x10'),auth[_0x986e('0x8')](),controller[_0x986e('0x11')]);router['get']('/:id/contacts',auth[_0x986e('0x8')](),controller[_0x986e('0x12')]);router['get']('/:id/queues',auth['isAuthenticated'](),controller['getQueues']);router[_0x986e('0x7')](_0x986e('0x13'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router[_0x986e('0x7')]('/:id/groups',auth[_0x986e('0x8')](),controller[_0x986e('0x14')]);router['get'](_0x986e('0x15'),auth['isAuthenticated'](),controller['getRecordings']);router[_0x986e('0x7')]('/:id/screen_recordings',auth[_0x986e('0x8')](),controller[_0x986e('0x16')]);router['get'](_0x986e('0x17'),auth[_0x986e('0x8')](),controller[_0x986e('0x18')]);router[_0x986e('0x7')](_0x986e('0x19'),auth['isAuthenticated'](),controller[_0x986e('0x1a')]);router[_0x986e('0x7')](_0x986e('0x1b'),auth['isAuthenticated'](),controller[_0x986e('0x1c')]);router[_0x986e('0x7')](_0x986e('0x1d'),auth[_0x986e('0x8')](),controller[_0x986e('0x1e')]);router[_0x986e('0x7')]('/:id/fax/interactions',auth[_0x986e('0x8')](),controller['getFaxInteractions']);router[_0x986e('0x7')](_0x986e('0x1f'),auth['isAuthenticated'](),controller[_0x986e('0x20')]);router[_0x986e('0x7')](_0x986e('0x21'),auth[_0x986e('0x8')](),controller['getTeams']);router[_0x986e('0x7')](_0x986e('0x22'),auth['isAuthenticated'](),controller[_0x986e('0x23')]);router[_0x986e('0x7')]('/:id/agents',auth[_0x986e('0x8')](),controller['getAgents']);router[_0x986e('0x7')]('/:id/prefixes',auth[_0x986e('0x8')](),controller[_0x986e('0x24')]);router['get'](_0x986e('0x25'),auth[_0x986e('0x8')](),controller[_0x986e('0x26')]);router[_0x986e('0x7')](_0x986e('0x27'),auth['isAuthenticated'](),controller[_0x986e('0x28')]);router[_0x986e('0x7')]('/:id/openchannel_accounts',auth[_0x986e('0x8')](),controller[_0x986e('0x29')]);router[_0x986e('0x7')]('/:id/sms_accounts',auth[_0x986e('0x8')](),controller['getSmsAccounts']);router['get'](_0x986e('0x2a'),auth['isAuthenticated'](),controller[_0x986e('0x2b')]);router[_0x986e('0x7')](_0x986e('0x2c'),auth[_0x986e('0x8')](),controller[_0x986e('0x2d')]);router[_0x986e('0x7')]('/:id/square_projects',auth[_0x986e('0x8')](),controller['getSquareProjects']);router[_0x986e('0x7')](_0x986e('0x2e'),auth[_0x986e('0x8')](),controller[_0x986e('0x2f')]);router[_0x986e('0x7')](_0x986e('0x30'),auth[_0x986e('0x8')](),controller[_0x986e('0x31')]);router[_0x986e('0x32')](_0x986e('0x33'),auth[_0x986e('0x8')](),controller['addContacts']);router[_0x986e('0x32')]('/',auth[_0x986e('0x8')](),controller[_0x986e('0x34')]);router[_0x986e('0x32')](_0x986e('0x35'),auth[_0x986e('0x8')](),controller['bulkCreate']);router[_0x986e('0x32')](_0x986e('0x36'),auth[_0x986e('0x8')](),controller[_0x986e('0x37')]);var upload=multer({'storage':multer[_0x986e('0x38')]({'destination':function(_0x2feb01,_0x5206de,_0x31e86c){_0x31e86c(null,path[_0x986e('0x39')](config[_0x986e('0x3a')],_0x986e('0x3b')));},'filename':function(_0x570214,_0xc8d73c,_0x365549){_0x365549(null,util['format']('%s-%s',Date[_0x986e('0x3c')](),_0xc8d73c[_0x986e('0x3d')]));}})});router[_0x986e('0x32')](_0x986e('0xf'),upload[_0x986e('0x3e')](_0x986e('0x3f')),controller['addAvatar']);router[_0x986e('0x32')](_0x986e('0x40'),auth[_0x986e('0x8')](),controller[_0x986e('0x41')]);router[_0x986e('0x32')](_0x986e('0x42'),auth[_0x986e('0x8')](),controller[_0x986e('0x43')]);router['post'](_0x986e('0x44'),auth['isAuthenticated'](),controller[_0x986e('0x45')]);router[_0x986e('0x32')](_0x986e('0x46'),auth[_0x986e('0x8')](),controller[_0x986e('0x47')]);router['post'](_0x986e('0x21'),auth[_0x986e('0x8')](),controller[_0x986e('0x48')]);router[_0x986e('0x32')](_0x986e('0x49'),auth['isAuthenticated'](),controller[_0x986e('0x4a')]);router[_0x986e('0x32')]('/:id/mail_interactions',auth[_0x986e('0x8')](),controller[_0x986e('0x4b')]);router[_0x986e('0x32')](_0x986e('0x4c'),auth['isAuthenticated'](),controller[_0x986e('0x4d')]);router[_0x986e('0x32')](_0x986e('0x4e'),auth[_0x986e('0x8')](),controller[_0x986e('0x4f')]);router['post'](_0x986e('0x50'),auth[_0x986e('0x8')](),controller['addOpenchannelInteractions']);router['post'](_0x986e('0x51'),auth[_0x986e('0x8')](),controller[_0x986e('0x52')]);router['post'](_0x986e('0x25'),auth['isAuthenticated'](),controller[_0x986e('0x53')]);router[_0x986e('0x32')]('/:id/mail_accounts',auth[_0x986e('0x8')](),controller[_0x986e('0x54')]);router[_0x986e('0x32')]('/:id/openchannel_accounts',auth[_0x986e('0x8')](),controller['addOpenchannelAccounts']);router[_0x986e('0x32')](_0x986e('0x55'),auth['isAuthenticated'](),controller[_0x986e('0x56')]);router[_0x986e('0x32')](_0x986e('0x2a'),auth[_0x986e('0x8')](),controller[_0x986e('0x57')]);router[_0x986e('0x32')](_0x986e('0x2c'),auth[_0x986e('0x8')](),controller['addWhatsappAccounts']);router[_0x986e('0x32')](_0x986e('0x58'),auth[_0x986e('0x8')](),controller['addSquareProjects']);router[_0x986e('0x32')](_0x986e('0x30'),auth[_0x986e('0x8')](),controller[_0x986e('0x59')]);router['put']('/:id',auth[_0x986e('0x8')](),controller['update']);router[_0x986e('0x5a')](_0x986e('0x5b'),auth[_0x986e('0x8')](),controller[_0x986e('0x5c')]);router[_0x986e('0x5d')](_0x986e('0x36'),auth[_0x986e('0x8')](),controller['removeQueues']);router['delete']('/:id/teams',auth[_0x986e('0x8')](),controller['removeTeams']);router[_0x986e('0x5d')](_0x986e('0x5e'),auth['isAuthenticated'](),controller[_0x986e('0x5f')]);router[_0x986e('0x5d')](_0x986e('0x49'),auth['isAuthenticated'](),controller[_0x986e('0x60')]);router[_0x986e('0x5d')](_0x986e('0x61'),auth['isAuthenticated'](),controller[_0x986e('0x62')]);router[_0x986e('0x5d')](_0x986e('0x4c'),auth[_0x986e('0x8')](),controller[_0x986e('0x63')]);router[_0x986e('0x5d')](_0x986e('0x4e'),auth[_0x986e('0x8')](),controller[_0x986e('0x64')]);router[_0x986e('0x5d')](_0x986e('0x50'),auth['isAuthenticated'](),controller[_0x986e('0x65')]);router[_0x986e('0x5d')](_0x986e('0x51'),auth['isAuthenticated'](),controller[_0x986e('0x66')]);router[_0x986e('0x5d')](_0x986e('0x25'),auth[_0x986e('0x8')](),controller['removeFaxAccounts']);router['delete'](_0x986e('0x27'),auth[_0x986e('0x8')](),controller[_0x986e('0x67')]);router[_0x986e('0x5d')](_0x986e('0x68'),auth[_0x986e('0x8')](),controller['removeOpenchannelAccounts']);router[_0x986e('0x5d')](_0x986e('0x55'),auth[_0x986e('0x8')](),controller[_0x986e('0x69')]);router['delete'](_0x986e('0x2a'),auth[_0x986e('0x8')](),controller[_0x986e('0x6a')]);router[_0x986e('0x5d')](_0x986e('0x2c'),auth[_0x986e('0x8')](),controller[_0x986e('0x6b')]);router['delete'](_0x986e('0x58'),auth['isAuthenticated'](),controller[_0x986e('0x6c')]);router['delete'](_0x986e('0x30'),auth[_0x986e('0x8')](),controller[_0x986e('0x6d')]);module['exports']=router;
\ No newline at end of file
index 273b0c4..55120a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','lodash','exports','setDataValue','name','The\x20name\x20of\x20the\x20user','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','STRING','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','format','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','rfc2833','nonat','update','outgoing','yes','force_rport,comedia','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','refuse','originate','uac','uas','fingerprint','certificate','passive','actpass','TEXT','showWebBar','get','isArray','udp','wss','encryption','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','/etc/pki/tls/private/motion.key','join','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blockedAt','loginAttempts','sequelize','moment'];(function(_0x5db65f,_0xf89cc8){var _0x34fb4b=function(_0x7c641){while(--_0x7c641){_0x5db65f['push'](_0x5db65f['shift']());}};_0x34fb4b(++_0xf89cc8);}(_0xabce,0x103));var _0xeabc=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xabce[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0xeabc('0x0'));var moment=require(_0xeabc('0x1'));var util=require(_0xeabc('0x2'));var _=require(_0xeabc('0x3'));module[_0xeabc('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2e01eb){this[_0xeabc('0x5')](_0xeabc('0x6'),_0x2e01eb);this['setDataValue']('defaultuser',_0x2e01eb);},'comment':_0xeabc('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x229ba4){this['setDataValue'](_0xeabc('0x8'),_0x229ba4);this[_0xeabc('0x5')](_0xeabc('0x9'),util['format'](_0xeabc('0xa'),_0x229ba4,this[_0xeabc('0xb')](_0xeabc('0xc'))));}},'alias':{'type':Sequelize[_0xeabc('0xd')]},'email':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'unique':_0xeabc('0xe'),'validate':{'isEmail':!![]},'set':function(_0x111aaf){if(_0x111aaf){this[_0xeabc('0x5')](_0xeabc('0xe'),_0x111aaf[_0xeabc('0xf')]());}}},'role':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x11'),_0xeabc('0x12'),_0xeabc('0x13'),_0xeabc('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xeabc('0x15')},'internal':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':![],'unique':_0xeabc('0xc'),'set':function(_0x55f0de){this['setDataValue'](_0xeabc('0xc'),_0x55f0de);this[_0xeabc('0x5')](_0xeabc('0x17'),_0x55f0de);this['setDataValue'](_0xeabc('0x9'),util[_0xeabc('0x18')]('\x22%s\x22\x20<%s>',this['getDataValue'](_0xeabc('0x8')),_0x55f0de));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xeabc('0xd')]},'mobile':{'type':Sequelize[_0xeabc('0xd')]},'address':{'type':Sequelize[_0xeabc('0xd')]},'zipcode':{'type':Sequelize[_0xeabc('0xd')]},'userpic':{'type':Sequelize[_0xeabc('0xd')]},'city':{'type':Sequelize[_0xeabc('0xd')]},'country':{'type':Sequelize[_0xeabc('0xd')]},'online':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':_0xeabc('0x1a')},'lastPauseAt':{'type':Sequelize[_0xeabc('0x1b')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xeabc('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'description':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'host':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1c')},'ipaddr':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'port':{'type':Sequelize[_0xeabc('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x1d'),'user',_0xeabc('0x1e')),'allowNull':!![],'defaultValue':_0xeabc('0x1d')},'context':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1f')},'callingpres':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x20'),_0xeabc('0x21'),_0xeabc('0x22'),_0xeabc('0x23'),'PROHIB_NOT_SCREENED',_0xeabc('0x24'),'PROHIB_FAILED_SCREEN',_0xeabc('0x25')),'allowNull':!![]},'deny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'permit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'transport':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'udp','set':function(_0x78510a){this[_0xeabc('0x5')](_0xeabc('0x26'),_0x78510a?_0x78510a['join'](','):null);},'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x26'))?this[_0xeabc('0xb')]('transport')[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x28')},'dtmfmode':{'type':Sequelize[_0xeabc('0x10')]('rfc2833',_0xeabc('0x29'),_0xeabc('0x2a'),'inband','auto'),'allowNull':!![],'defaultValue':_0xeabc('0x2b')},'directmedia':{'type':Sequelize[_0xeabc('0x10')]('yes','no',_0xeabc('0x2c'),_0xeabc('0x2d'),_0xeabc('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xeabc('0x30'),'set':function(_0x2bda29){this[_0xeabc('0x5')]('nat',_0x2bda29?_0x2bda29['join'](','):null);},'get':function(){return this[_0xeabc('0xb')]('nat')?this[_0xeabc('0xb')]('nat')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xeabc('0xd')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xeabc('0xd')]},'language':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0xbd7f03){this[_0xeabc('0x5')](_0xeabc('0x31'),_0xbd7f03?_0xbd7f03['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xeabc('0x31'))?this[_0xeabc('0xb')](_0xeabc('0x31'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0xc6af4d){this['setDataValue'](_0xeabc('0x32'),_0xc6af4d?_0xc6af4d['join'](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xeabc('0xb')](_0xeabc('0x32'))[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x33')},'trustrpid':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'busylevel':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'template':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x36'),_0xeabc('0x37'),_0xeabc('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x39'),_0xeabc('0x3a')),'allowNull':!![],'defaultValue':_0xeabc('0x3a')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'keepalive':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x3b'),_0xeabc('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0xeabc('0x3d'),_0xeabc('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no',_0xeabc('0x2c'),_0xeabc('0x2d'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0xeabc('0x1b')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xeabc('0x3f')]},'showWebBar':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0,'set':function(_0x4f5451){this[_0xeabc('0x5')](_0xeabc('0x40'),_0x4f5451);var _0x520f4c=this[_0xeabc('0x41')]({'plain':!![]});switch(_0x4f5451){case 0x0:case 0x1:var _0x800880=_0x520f4c[_0xeabc('0x26')]?_[_0xeabc('0x42')](_0x520f4c[_0xeabc('0x26')])?_0x520f4c[_0xeabc('0x26')]['join']():_0x520f4c[_0xeabc('0x26')]:_0xeabc('0x43');if(_0x800880===_0xeabc('0x44')){_0x800880=_0xeabc('0x43');}this[_0xeabc('0x5')](_0xeabc('0x26'),_0x800880);this[_0xeabc('0x5')](_0xeabc('0x45'),'no');this[_0xeabc('0x5')]('avpf',null);this[_0xeabc('0x5')]('force_avp',null);this[_0xeabc('0x5')](_0xeabc('0x46'),null);this[_0xeabc('0x5')](_0xeabc('0x47'),null);this[_0xeabc('0x5')](_0xeabc('0x48'),null);this[_0xeabc('0x5')](_0xeabc('0x49'),null);this[_0xeabc('0x5')](_0xeabc('0x4a'),null);this['setDataValue'](_0xeabc('0x4b'),null);this[_0xeabc('0x5')](_0xeabc('0x4c'),'no');break;case 0x2:this[_0xeabc('0x5')]('transport',_0xeabc('0x44'));this['setDataValue']('encryption',_0xeabc('0x2f'));this[_0xeabc('0x5')](_0xeabc('0x4d'),_0xeabc('0x2f'));this['setDataValue']('force_avp',_0xeabc('0x2f'));this['setDataValue']('icesupport',_0xeabc('0x2f'));this['setDataValue']('dtlsenable',_0xeabc('0x2f'));this[_0xeabc('0x5')]('dtlsverify','no');this['setDataValue'](_0xeabc('0x49'),'actpass');this[_0xeabc('0x5')](_0xeabc('0x4a'),_0x520f4c['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this[_0xeabc('0x5')](_0xeabc('0x4b'),_0x520f4c[_0xeabc('0x4b')]||_0xeabc('0x4e'));this[_0xeabc('0x5')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xeabc('0x3f')],'set':function(_0x5c760d){this[_0xeabc('0x5')]('permissions',_0x5c760d?_0x5c760d[_0xeabc('0x4f')](','):[]);},'get':function(){return this['getDataValue'](_0xeabc('0x50'))?_['map'](this[_0xeabc('0xb')](_0xeabc('0x50'))[_0xeabc('0x27')](','),function(_0x36cc41){return parseInt(_0x36cc41,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarEnableJaws':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x51'))?this[_0xeabc('0xb')](_0xeabc('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![],'set':function(_0x49679d){if(typeof _0x49679d===_0xeabc('0x52')){var _0x403b18=_0x49679d==='1'?!![]:_0x49679d==='0'?![]:_0x49679d==='true'?!![]:_0x49679d===_0xeabc('0x53')?![]:![];this[_0xeabc('0x5')](_0xeabc('0x54'),_0x403b18);}else{this[_0xeabc('0x5')](_0xeabc('0x54'),_0x49679d);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3df657){this['setDataValue']('blocked',_0x3df657);if(_0x3df657===!![]){this['setDataValue'](_0xeabc('0x55'),moment());this[_0xeabc('0x5')](_0xeabc('0x56'),0x0);}else{this[_0xeabc('0x5')](_0xeabc('0x55'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xeabc('0x16')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x62f1=['passive','actpass','update','update,nonat','showWebBar','get','isArray','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlscertfile','dtlsprivatekey','rtcp_mux','dtlssetup','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','false','screenrecording','blocked','blockedAt','UNSIGNED','sequelize','util','lodash','exports','STRING','name','setDataValue','defaultuser','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','email','admin','agent','telephone','INTEGER','format','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','ENUM','from-sip','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','udp','join','transport','rfc2833','info','inband','auto','yes','nonat','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','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]','\x22\x22\x20<>','accept','refuse','originate','uas','certificate','active'];(function(_0x4557eb,_0x323488){var _0x1c3f7d=function(_0x411f64){while(--_0x411f64){_0x4557eb['push'](_0x4557eb['shift']());}};_0x1c3f7d(++_0x323488);}(_0x62f1,0x112));var _0x162f=function(_0x4430b9,_0x40433b){_0x4430b9=_0x4430b9-0x0;var _0x2e01d4=_0x62f1[_0x4430b9];return _0x2e01d4;};'use strict';var Sequelize=require(_0x162f('0x0'));var moment=require('moment');var util=require(_0x162f('0x1'));var _=require(_0x162f('0x2'));module[_0x162f('0x3')]={'name':{'type':Sequelize[_0x162f('0x4')],'allowNull':![],'unique':_0x162f('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x364694){this[_0x162f('0x6')](_0x162f('0x5'),_0x364694);this[_0x162f('0x6')](_0x162f('0x7'),_0x364694);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x162f('0x4')],'allowNull':![],'set':function(_0x2e763a){this['setDataValue'](_0x162f('0x8'),_0x2e763a);this[_0x162f('0x6')](_0x162f('0x9'),util['format'](_0x162f('0xa'),_0x2e763a,this[_0x162f('0xb')](_0x162f('0xc'))));}},'alias':{'type':Sequelize[_0x162f('0x4')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x162f('0xd'),'validate':{'isEmail':!![]},'set':function(_0x14aaa6){if(_0x14aaa6){this[_0x162f('0x6')]('email',_0x14aaa6['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x162f('0xe'),'user',_0x162f('0xf'),_0x162f('0x10')),'allowNull':![]},'password':{'type':Sequelize[_0x162f('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x162f('0x4')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':![],'unique':_0x162f('0xc'),'set':function(_0x3daa69){this[_0x162f('0x6')]('internal',_0x3daa69);this[_0x162f('0x6')]('accountcode',_0x3daa69);this[_0x162f('0x6')](_0x162f('0x9'),util[_0x162f('0x12')](_0x162f('0xa'),this['getDataValue']('fullname'),_0x3daa69));}},'salt':{'type':Sequelize[_0x162f('0x4')]},'phone':{'type':Sequelize[_0x162f('0x4')]},'mobile':{'type':Sequelize[_0x162f('0x4')]},'address':{'type':Sequelize[_0x162f('0x4')]},'zipcode':{'type':Sequelize[_0x162f('0x4')]},'userpic':{'type':Sequelize[_0x162f('0x4')]},'city':{'type':Sequelize[_0x162f('0x4')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x162f('0x4')],'defaultValue':_0x162f('0x14')},'lastPauseAt':{'type':Sequelize[_0x162f('0x15')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x162f('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x162f('0x16')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x162f('0x11')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x162f('0x17')]('friend','user','peer'),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![],'defaultValue':_0x162f('0x18')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0x162f('0x19'),'ALLOWED',_0x162f('0x1a'),_0x162f('0x1b'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![],'defaultValue':_0x162f('0x1c'),'set':function(_0x337a3e){this['setDataValue']('transport',_0x337a3e?_0x337a3e[_0x162f('0x1d')](','):null);},'get':function(){return this['getDataValue'](_0x162f('0x1e'))?this['getDataValue']('transport')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x1f'),_0x162f('0x20'),'shortinfo',_0x162f('0x21'),_0x162f('0x22')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no',_0x162f('0x24'),'update',_0x162f('0x25')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x162f('0x26'),'set':function(_0x43e48c){this['setDataValue'](_0x162f('0x27'),_0x43e48c?_0x43e48c['join'](','):null);},'get':function(){return this[_0x162f('0xb')](_0x162f('0x27'))?this['getDataValue'](_0x162f('0x27'))['split'](','):null;},'comment':_0x162f('0x28')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x162f('0x4')]},'namedpickupgroup':{'type':Sequelize[_0x162f('0x4')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x162f('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x162f('0x4')],'allowNull':![],'defaultValue':_0x162f('0x29'),'set':function(_0x59ca49){this[_0x162f('0x6')](_0x162f('0x2a'),_0x59ca49?_0x59ca49[_0x162f('0x1d')](';'):_0x162f('0x29'));},'get':function(){return this[_0x162f('0xb')]('allow')?this[_0x162f('0xb')](_0x162f('0x2a'))[_0x162f('0x2b')](';'):null;},'comment':_0x162f('0x2c')},'autoframing':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![],'set':function(_0x364970){this[_0x162f('0x6')]('insecure',_0x364970?_0x364970[_0x162f('0x1d')](','):null);},'get':function(){return this[_0x162f('0xb')]('insecure')?this[_0x162f('0xb')](_0x162f('0x2d'))[_0x162f('0x2b')](','):null;},'comment':_0x162f('0x2e')},'trustrpid':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x162f('0x17')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![],'defaultValue':_0x162f('0x2f')},'amaflags':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![],'defaultValue':_0x162f('0x23')},'busylevel':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x162f('0x17')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x30'),_0x162f('0x31'),_0x162f('0x32')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x162f('0x17')]('uac',_0x162f('0x33')),'allowNull':!![],'defaultValue':_0x162f('0x33')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x162f('0x17')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x162f('0x17')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x162f('0x17')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x162f('0x17')]('yes','no','fingerprint',_0x162f('0x34')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x35'),_0x162f('0x36'),_0x162f('0x37')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0x162f('0x23'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x162f('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x162f('0x17')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no',_0x162f('0x24'),_0x162f('0x38'),_0x162f('0x39')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x162f('0x15')]},'passwordResetAt':{'type':Sequelize[_0x162f('0x15')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0,'set':function(_0x3b01ec){this['setDataValue'](_0x162f('0x3a'),_0x3b01ec);var _0x494d99=this[_0x162f('0x3b')]({'plain':!![]});switch(_0x3b01ec){case 0x0:case 0x1:var _0x416eac=_0x494d99[_0x162f('0x1e')]?_[_0x162f('0x3c')](_0x494d99[_0x162f('0x1e')])?_0x494d99[_0x162f('0x1e')]['join']():_0x494d99['transport']:_0x162f('0x1c');if(_0x416eac===_0x162f('0x3d')){_0x416eac=_0x162f('0x1c');}this[_0x162f('0x6')](_0x162f('0x1e'),_0x416eac);this[_0x162f('0x6')](_0x162f('0x3e'),'no');this['setDataValue'](_0x162f('0x3f'),null);this[_0x162f('0x6')](_0x162f('0x40'),null);this['setDataValue'](_0x162f('0x41'),null);this[_0x162f('0x6')](_0x162f('0x42'),null);this[_0x162f('0x6')](_0x162f('0x43'),null);this[_0x162f('0x6')]('dtlssetup',null);this[_0x162f('0x6')](_0x162f('0x44'),null);this[_0x162f('0x6')](_0x162f('0x45'),null);this[_0x162f('0x6')](_0x162f('0x46'),'no');break;case 0x2:this[_0x162f('0x6')]('transport',_0x162f('0x3d'));this[_0x162f('0x6')](_0x162f('0x3e'),_0x162f('0x23'));this['setDataValue'](_0x162f('0x3f'),_0x162f('0x23'));this[_0x162f('0x6')](_0x162f('0x40'),_0x162f('0x23'));this[_0x162f('0x6')]('icesupport',_0x162f('0x23'));this['setDataValue'](_0x162f('0x42'),_0x162f('0x23'));this[_0x162f('0x6')]('dtlsverify','no');this[_0x162f('0x6')](_0x162f('0x47'),'actpass');this[_0x162f('0x6')](_0x162f('0x44'),_0x494d99[_0x162f('0x44')]||'/etc/pki/tls/certs/motion.crt');this[_0x162f('0x6')]('dtlsprivatekey',_0x494d99[_0x162f('0x45')]||_0x162f('0x48'));this[_0x162f('0x6')](_0x162f('0x46'),_0x162f('0x23'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x174e45){this['setDataValue'](_0x162f('0x49'),_0x174e45?_0x174e45['join'](','):[]);},'get':function(){return this['getDataValue'](_0x162f('0x49'))?_[_0x162f('0x4a')](this[_0x162f('0xb')]('permissions')[_0x162f('0x2b')](','),function(_0x216064){return parseInt(_0x216064,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x162f('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x162f('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x162f('0x4')]},'phoneBarUnconditional':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x162f('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x162f('0x17')](_0x162f('0x23'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x162f('0x4b')],'get':function(){return this['getDataValue'](_0x162f('0x4c'))?this['getDataValue']('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'interface':{'type':Sequelize[_0x162f('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x162f('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x24a5fe){if(typeof _0x24a5fe==='string'){var _0x2284e3=_0x24a5fe==='1'?!![]:_0x24a5fe==='0'?![]:_0x24a5fe==='true'?!![]:_0x24a5fe===_0x162f('0x4d')?![]:![];this['setDataValue']('screenrecording',_0x2284e3);}else{this[_0x162f('0x6')](_0x162f('0x4e'),_0x24a5fe);}}},'blocked':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![],'set':function(_0x51a901){this[_0x162f('0x6')](_0x162f('0x4f'),_0x51a901);if(_0x51a901===!![]){this['setDataValue'](_0x162f('0x50'),moment());this[_0x162f('0x6')]('loginAttempts',0x0);}else{this[_0x162f('0x6')](_0x162f('0x50'),null);}}},'blockedAt':{'type':Sequelize[_0x162f('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x162f('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x162f('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0x162f('0x51')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x162f('0x13')],'defaultValue':!![]}};
\ No newline at end of file
index 7354d53..42df406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd6e=['User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','upsert','MemberReport','YYYY-MM-DD\x20HH:mm:ss','forEach','LOGIN','device','LOGININPAUSE','bulkCreate','concat','isMiddleware','resolve','logout','pause','QueuePause','PAUSE','updateAttributes','SIP/%s','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','unpause','manual','%s%s','Pause','getTeams','Team','addTeams','getVoiceQueues','setDataValue','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','Openchannel','flatten','Voice','removeTeams','getFaxQueues','getOpenchannelQueues','removeAgent','getDataValue','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$eq','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','lastName','phone','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','isEmpty','inbound','lower','col','asc','desc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','unknown','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','ui.','InteractionId','ui.createdAt','user_has_','ui.UserId\x20=\x20?','toString','moment','bluebird','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../config/utils','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user.socket','register','localhost','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','update','destroy','get','role','admin','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','type','key','password','getOptions','where','includeAll','include','attributes','push','findAll','rows','query','openTabs','length','chat','dataValues','sms','fax','whatsapp','all','show','keys','filters','model','intersection','fields','true','mail','body','params','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','106','107','108','109','111','create','user','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','compact','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','enforcePasswordHistory','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','voicePause','interface','isValidChannel','Unknown\x20channel','add','toLowerCase','Queues','spread','capitalize','QueueId','emit','Queue:save','voice','VoiceQueue','online','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','filename','getAvatar','join','download','existsSync','root','server/files/images/','getOpenTabs','openchannel','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','CmContact','order','sort','merge','options','getContacts','hasOwnProperty','CmList','List','Tag','color','tag','getQueues','Queue','pick','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','mobile','loginInPause','intrf','format','user:%s','user:forcelogout','headers','x-forwarded-for','remoteAddress','socket','connection'];(function(_0x46ae5a,_0x2a38d0){var _0x434986=function(_0x22735d){while(--_0x22735d){_0x46ae5a['push'](_0x46ae5a['shift']());}};_0x434986(++_0x2a38d0);}(_0xdd6e,0xa5));var _0xedd6=function(_0x3532bb,_0xab8751){_0x3532bb=_0x3532bb-0x0;var _0x297b0d=_0xdd6e[_0x3532bb];return _0x297b0d;};'use strict';var moment=require(_0xedd6('0x0'));var BPromise=require(_0xedd6('0x1'));var util=require(_0xedd6('0x2'));var path=require(_0xedd6('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0xedd6('0x4'));var jayson=require(_0xedd6('0x5'));var Redis=require(_0xedd6('0x6'));var authService=require(_0xedd6('0x7'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0xedd6('0x8'));var config=require(_0xedd6('0x9'));var licenseUtil=require('../../config/license/util');var db=require(_0xedd6('0xa'))['db'];var socket=require(_0xedd6('0xb'))(new Redis(config[_0xedd6('0xc')]));require(_0xedd6('0xd'))[_0xedd6('0xe')](socket);config['redis']=_['defaults'](config[_0xedd6('0xc')],{'host':_0xedd6('0xf'),'port':0x18eb});var client=jayson['client'][_0xedd6('0x10')]({'port':0x232a});var values;function respondWithRpcPromise(_0x25703e,_0xfa040f,_0x406a36,_0x5e2a3a){return new BPromise(function(_0xb1dc9,_0x5ce3c6){var _0x2657be=_0x5e2a3a||client;return _0x2657be[_0xedd6('0x11')](_0x25703e,_0x406a36)[_0xedd6('0x12')](function(_0x339ab6){logger['info'](_0xedd6('0x13'),_0xfa040f,_0xedd6('0x14'));logger[_0xedd6('0x15')](_0xedd6('0x16'),_0xfa040f,_0xedd6('0x14'),JSON[_0xedd6('0x17')](_0x339ab6));if(_0x339ab6[_0xedd6('0x18')]){if(_0x339ab6[_0xedd6('0x18')][_0xedd6('0x19')]===0x1f4){logger[_0xedd6('0x18')](_0xedd6('0x13'),_0xfa040f,_0x339ab6[_0xedd6('0x18')]['message']);return _0x5ce3c6(_0x339ab6[_0xedd6('0x18')][_0xedd6('0x1a')]);}logger[_0xedd6('0x18')](_0xedd6('0x13'),_0xfa040f,_0x339ab6['error']['message']);return _0xb1dc9(_0x339ab6[_0xedd6('0x18')]['message']);}else{logger[_0xedd6('0x1b')](_0xedd6('0x13'),_0xfa040f,_0xedd6('0x14'));_0xb1dc9(_0x339ab6[_0xedd6('0x1c')][_0xedd6('0x1a')]);}})[_0xedd6('0x1d')](function(_0x3e5443){logger[_0xedd6('0x18')]('User,\x20%s,\x20%s',_0xfa040f,_0x3e5443);_0x5ce3c6(_0x3e5443);});});}function respondWithStatusCode(_0x16c33c,_0x7f0e4){_0x7f0e4=_0x7f0e4||0xcc;return function(_0x4d89df){if(_0x4d89df){return _0x16c33c[_0xedd6('0x1e')](_0x7f0e4);}return _0x16c33c['status'](_0x7f0e4)[_0xedd6('0x1f')]();};}function respondWithResult(_0x330d32,_0x8bd25c){_0x8bd25c=_0x8bd25c||0xc8;return function(_0x5bba15){if(_0x5bba15){return _0x330d32[_0xedd6('0x20')](_0x8bd25c)[_0xedd6('0x21')](_0x5bba15);}};}function respondWithFilteredResult(_0xdda721,_0x3f86ab){return function(_0x59b3b1){if(_0x59b3b1){var _0x200b78=typeof _0x3f86ab[_0xedd6('0x22')]===_0xedd6('0x23')&&typeof _0x3f86ab[_0xedd6('0x24')]==='undefined';var _0x5968bf=_0x59b3b1['count'];var _0x54bc1a=_0x200b78?0x0:_0x3f86ab[_0xedd6('0x22')];var _0x449eea=_0x200b78?_0x59b3b1[_0xedd6('0x25')]:_0x3f86ab[_0xedd6('0x22')]+_0x3f86ab[_0xedd6('0x24')];var _0x3e7e0b;if(_0x449eea>=_0x5968bf){_0x449eea=_0x5968bf;_0x3e7e0b=0xc8;}else{_0x3e7e0b=0xce;}_0xdda721[_0xedd6('0x20')](_0x3e7e0b);return _0xdda721[_0xedd6('0x26')]('Content-Range',_0x54bc1a+'-'+_0x449eea+'/'+_0x5968bf)[_0xedd6('0x21')](_0x59b3b1);}return null;};}function saveUpdates(_0x25e146){return function(_0x53cc63){if(_0x53cc63){return _0x53cc63[_0xedd6('0x27')](_0x25e146)[_0xedd6('0x12')](function(_0x1875c9){return _0x1875c9;});}return null;};}function removeEntity(_0xcb60fb){return function(_0x16d88e){if(_0x16d88e){return _0x16d88e[_0xedd6('0x28')]()[_0xedd6('0x12')](function(){var _0x35bb6a=_0x16d88e[_0xedd6('0x29')]({'plain':!![]});if(_0x35bb6a[_0xedd6('0x2a')]===_0xedd6('0x2b'))return;var _0x2e1073=[{'name':'Users','value':'user','ignore':!![]},{'name':_0xedd6('0x2c'),'value':_0xedd6('0x2d'),'ignore':![]},{'name':_0xedd6('0x2e'),'value':_0xedd6('0x2f'),'ignore':![]}];var _0x872006=_(_0x2e1073)[_0xedd6('0x30')](_0xedd6('0x31'))[_0xedd6('0x32')]('value')[_0xedd6('0x33')]();if(_[_0xedd6('0x34')](_0x872006,_0x35bb6a['role'])){return;}var _0x3b76c8=_[_0xedd6('0x35')](_0x2e1073,[_0xedd6('0x33'),_0x35bb6a[_0xedd6('0x2a')]])[_0xedd6('0x36')];return db[_0xedd6('0x37')][_0xedd6('0x28')]({'where':{'type':_0x3b76c8,'resourceId':_0x35bb6a['id']}})[_0xedd6('0x12')](function(){return _0x16d88e;});})['then'](function(){_0xcb60fb['status'](0xcc)[_0xedd6('0x1f')]();});}};}function handleEntityNotFound(_0x97d808){return function(_0x18972c){if(!_0x18972c){_0x97d808[_0xedd6('0x1e')](0x194);}return _0x18972c;};}function handleError(_0x4ff5a9,_0x315ea3){_0x315ea3=_0x315ea3||0x1f4;return function(_0x18f7d3){logger[_0xedd6('0x18')](_0x18f7d3[_0xedd6('0x38')]);if(_0x18f7d3[_0xedd6('0x36')]){delete _0x18f7d3[_0xedd6('0x36')];}_0x4ff5a9[_0xedd6('0x20')](_0x315ea3)[_0xedd6('0x39')](_0x18f7d3);};}exports[_0xedd6('0x3a')]=function(_0xef90bb,_0x5c110b){var _0x390370={},_0x10eb7d={'count':0x0,'rows':[]};var _0x3efd84=_(db[_0xedd6('0x3b')][_0xedd6('0x3c')])[_0xedd6('0x32')](function(_0x4525b6){return{'name':_0x4525b6['fieldName'],'type':_0x4525b6[_0xedd6('0x3d')][_0xedd6('0x3e')]};})[_0xedd6('0x30')](function(_0x561c06){return!_[_0xedd6('0x34')]([_0xedd6('0x3f'),'salt'],_0x561c06[_0xedd6('0x36')]);})['value']();_0x390370=qs[_0xedd6('0x40')](_0x3efd84,_0xef90bb);var _0x335838={'where':_0x390370[_0xedd6('0x41')]};return db['User'][_0xedd6('0x25')](_0x335838)[_0xedd6('0x12')](function(_0xee22e1){_0x10eb7d[_0xedd6('0x25')]=_0xee22e1;if(_0xef90bb['query'][_0xedd6('0x42')]){_0x390370[_0xedd6('0x43')]=[{'all':!![]}];}if(!_[_0xedd6('0x34')](_0x390370[_0xedd6('0x44')],'id')){_0x390370['attributes'][_0xedd6('0x45')]('id');}return db[_0xedd6('0x3b')][_0xedd6('0x46')](_0x390370);})[_0xedd6('0x12')](function(_0x553522){_0x10eb7d[_0xedd6('0x47')]=_0x553522;if(_0xef90bb[_0xedd6('0x48')][_0xedd6('0x49')]==='true'){var _0x471731=[];for(var _0x1d0410=0x0;_0x1d0410<_0x10eb7d[_0xedd6('0x47')][_0xedd6('0x4a')];_0x1d0410++){_0x471731[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4b'),_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));_0x471731[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4d'),_0x10eb7d['rows'][_0x1d0410][_0xedd6('0x4c')]));_0x471731[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4e'),_0x10eb7d[_0xedd6('0x47')][_0x1d0410]['dataValues']));_0x471731[_0xedd6('0x45')](get_open_tabs('mail',_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));_0x471731['push'](get_open_tabs('openchannel',_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));_0x471731['push'](get_open_tabs(_0xedd6('0x4f'),_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));}return BPromise[_0xedd6('0x50')](_0x471731)[_0xedd6('0x12')](function(_0xce3f73){return _0x10eb7d;});}else{return _0x10eb7d;}})['then'](respondWithFilteredResult(_0x5c110b,_0x390370))['catch'](handleError(_0x5c110b,null));};exports[_0xedd6('0x51')]=function(_0x5d4ff6,_0x5e5c9e){var _0x2b60c8={'raw':![],'where':{'id':_0x5d4ff6['params']['id']}},_0x793f15={};_0x793f15['model']=_['differenceBy'](_[_0xedd6('0x52')](db[_0xedd6('0x3b')][_0xedd6('0x3c')]),[_0xedd6('0x3f'),'salt']);_0x793f15['query']=_[_0xedd6('0x52')](_0x5d4ff6['query']);_0x793f15[_0xedd6('0x53')]=_['intersection'](_0x793f15[_0xedd6('0x54')],_0x793f15[_0xedd6('0x48')]);_0x2b60c8['attributes']=_[_0xedd6('0x55')](_0x793f15['model'],qs[_0xedd6('0x56')](_0x5d4ff6[_0xedd6('0x48')][_0xedd6('0x56')]));_0x2b60c8[_0xedd6('0x44')]=_0x2b60c8[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x2b60c8[_0xedd6('0x44')]:_0x793f15[_0xedd6('0x54')];if(_0x5d4ff6[_0xedd6('0x48')][_0xedd6('0x42')]){_0x2b60c8['include']=[{'all':!![]}];}_0x2b60c8=_['merge']({},_0x2b60c8,_0x5d4ff6['options']);if(!_[_0xedd6('0x34')](_0x2b60c8[_0xedd6('0x44')],'id')){_0x2b60c8[_0xedd6('0x44')][_0xedd6('0x45')]('id');}return db[_0xedd6('0x3b')][_0xedd6('0x35')](_0x2b60c8)[_0xedd6('0x12')](handleEntityNotFound(_0x5e5c9e,null))[_0xedd6('0x12')](function(_0x587693){var _0x47c887=[];values=_0x587693;if(_0x5d4ff6[_0xedd6('0x48')]['openTabs']===_0xedd6('0x57')){_0x47c887[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4b'),_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs('sms',_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs('openchannel',_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4f'),_0x587693[_0xedd6('0x4c')]));_0x47c887['push'](get_open_tabs(_0xedd6('0x4e'),_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x58'),_0x587693[_0xedd6('0x4c')]));return BPromise['all'](_0x47c887);}else{return values;}})[_0xedd6('0x12')](function(_0x2caf8c){return values;})['then'](respondWithResult(_0x5e5c9e,null))[_0xedd6('0x1d')](handleError(_0x5e5c9e,null));};exports[_0xedd6('0x27')]=function(_0x23cd52,_0x4cc66e){if(_0x23cd52[_0xedd6('0x59')]['id']){delete _0x23cd52[_0xedd6('0x59')]['id'];}delete _0x23cd52[_0xedd6('0x59')][_0xedd6('0x2a')];return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x23cd52[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x4cc66e,null))[_0xedd6('0x12')](saveUpdates(_0x23cd52[_0xedd6('0x59')],null))[_0xedd6('0x12')](respondWithResult(_0x4cc66e,null))[_0xedd6('0x1d')](handleError(_0x4cc66e,null));};exports['describe']=function(_0x3861fd,_0x3bcb82){return db[_0xedd6('0x3b')][_0xedd6('0x5b')]()['then'](respondWithResult(_0x3bcb82,null))[_0xedd6('0x1d')](handleError(_0x3bcb82,null));};exports[_0xedd6('0x5c')]=function(_0x46df7f,_0x37fe40){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x46df7f[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x37fe40,null))['then'](function(_0x557890){if(_0x557890){return _0x557890['addContacts'](_0x46df7f['body'][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x46df7f[_0xedd6('0x59')],['ids','id'])||{});}})['then'](respondWithResult(_0x37fe40,null))[_0xedd6('0x1d')](handleError(_0x37fe40,null));};function validateUser(_0x255fca){return new BPromise(function(_0x3dfa86,_0x4cf86a){if(_0x255fca[_0xedd6('0x5f')])return _0x3dfa86(_0x255fca);return db['Setting'][_0xedd6('0x60')](0x1)[_0xedd6('0x12')](function(_0xffeabc){if(_0xffeabc[_0xedd6('0x61')])authService[_0xedd6('0x62')](_0x255fca[_0xedd6('0x3f')]);db[_0xedd6('0x3b')][_0xedd6('0x63')]('internal')[_0xedd6('0x12')](function(_0x199865){if(_[_0xedd6('0x64')](_0x199865)){_0x255fca[_0xedd6('0x5f')]=_0xffeabc[_0xedd6('0x65')]||0x1;return;}if(_[_0xedd6('0x64')](_0xffeabc[_0xedd6('0x65')])||_0xffeabc['min_internal']===_0x199865){_0x255fca[_0xedd6('0x5f')]=_0x199865+0x1;return;}if(_0xffeabc[_0xedd6('0x65')]>_0x199865){_0x255fca['internal']=_0xffeabc['min_internal'];return;}return db[_0xedd6('0x66')][_0xedd6('0x48')]('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)',{'type':db[_0xedd6('0x66')][_0xedd6('0x67')][_0xedd6('0x68')]})[_0xedd6('0x12')](function(_0x46d887){if(_0x46d887&&_0x46d887['length']){for(var _0x1008f8=0x0,_0x1c6ad5=_0x46d887[_0xedd6('0x4a')];_0x1008f8<_0x1c6ad5&&_[_0xedd6('0x64')](_0x255fca[_0xedd6('0x5f')]);_0x1008f8++){if(_0xffeabc[_0xedd6('0x65')]<=_0x46d887[_0x1008f8][_0xedd6('0x69')]){_0x255fca[_0xedd6('0x5f')]=_0x46d887[_0x1008f8][_0xedd6('0x69')];}else if(_0xffeabc[_0xedd6('0x65')]>_0x46d887[_0x1008f8][_0xedd6('0x69')]&&_0xffeabc[_0xedd6('0x65')]<=_0x46d887[_0x1008f8]['to']){_0x255fca[_0xedd6('0x5f')]=_0xffeabc[_0xedd6('0x65')];}}}if(_[_0xedd6('0x64')](_0x255fca['internal'])){_0x255fca[_0xedd6('0x5f')]=_0x199865+0x1;}return _0x3dfa86(_0x255fca);});});})[_0xedd6('0x1d')](function(_0x2739de){_0x4cf86a(_0x2739de);});});}function updateUser(_0xa45c46){return new BPromise(function(_0x100eb2,_0xe1c314){try{if(_0xa45c46[_0xedd6('0x6a')]){_0xa45c46[_0xedd6('0x6b')]=_0xa45c46[_0xedd6('0x5f')];_0xa45c46[_0xedd6('0x6c')]={'mailbox':_0xa45c46[_0xedd6('0x5f')],'password':_0xa45c46[_0xedd6('0x3f')],'fullname':_0xa45c46[_0xedd6('0x6d')],'email':_0xa45c46[_0xedd6('0x6e')]};}if(_0xa45c46['role']===_0xedd6('0x2d')){if(!_0xa45c46['permissions'])_0xa45c46[_0xedd6('0x6f')]=[_0xedd6('0x70'),_0xedd6('0x71'),_0xedd6('0x72'),_0xedd6('0x73'),_0xedd6('0x74'),_0xedd6('0x75'),'105',_0xedd6('0x76'),_0xedd6('0x77'),_0xedd6('0x78'),_0xedd6('0x79'),'100',_0xedd6('0x7a'),'114','115'];}_0x100eb2(_0xa45c46);}catch(_0xd2e35d){_0xe1c314(_0xd2e35d);}});}exports[_0xedd6('0x7b')]=function(_0xca4b8c,_0x214802){if(_0xca4b8c[_0xedd6('0x7c')][_0xedd6('0x2a')]===_0xedd6('0x2d'))throw new Error(_0xedd6('0x7d'));if(_0xca4b8c[_0xedd6('0x59')]['role']===_0xedd6('0x7c')&&_0xca4b8c[_0xedd6('0x7c')]['role']!==_0xedd6('0x2b')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xca4b8c[_0xedd6('0x59')][_0xedd6('0x2a')]===_0xedd6('0x2b')&&_0xca4b8c['user'][_0xedd6('0x2a')]!==_0xedd6('0x2b')){throw new Error(_0xedd6('0x7e'));}return licenseUtil[_0xedd6('0x7f')]([_0xca4b8c['body']])[_0xedd6('0x12')](function(){return validateUser(_0xca4b8c[_0xedd6('0x59')]);})[_0xedd6('0x12')](function(_0x26fa94){return updateUser(_0x26fa94)[_0xedd6('0x12')](function(_0x51a875){if(_0x51a875[_0xedd6('0x2a')]==='admin'){_0x51a875[_0xedd6('0x80')]=_0xca4b8c[_0xedd6('0x7c')]['settingsEnabled'];delete _0x51a875['userProfileId'];}return _0x51a875;});})[_0xedd6('0x12')](function(_0x4212ef){return db[_0xedd6('0x3b')]['create'](_0x4212ef,{'include':[{'model':db[_0xedd6('0x6c')],'as':_0xedd6('0x6c')}]});})[_0xedd6('0x12')](function(_0x2a8e4b){if(_0xca4b8c[_0xedd6('0x59')][_0xedd6('0x2a')]===_0xedd6('0x7c'))return _0x2a8e4b;if(_0xca4b8c['user']['role']!==_0xedd6('0x7c'))return _0x2a8e4b;return db[_0xedd6('0x81')]['find']({'where':{'name':_0x2a8e4b['role']==='agent'?'Agents':'Telephones','userProfileId':_0xca4b8c[_0xedd6('0x7c')][_0xedd6('0x82')]},'raw':!![]})[_0xedd6('0x12')](function(_0x10cffb){if(!_0x10cffb||_0x10cffb[_0xedd6('0x83')]!=0x0)return _0x2a8e4b;return db[_0xedd6('0x37')][_0xedd6('0x7b')]({'name':_0x2a8e4b[_0xedd6('0x36')],'resourceId':_0x2a8e4b['id'],'type':_0x10cffb[_0xedd6('0x36')],'sectionId':_0x10cffb['id']},{})[_0xedd6('0x12')](function(){return _0x2a8e4b;});})[_0xedd6('0x1d')](function(_0x2ed44d){logger[_0xedd6('0x18')](_0xedd6('0x84'),_0x2ed44d);throw _0x2ed44d;});})['then'](respondWithResult(_0x214802,0xc9))[_0xedd6('0x1d')](handleError(_0x214802,null));};exports['bulkCreate']=function(_0x20786b,_0x1616dc){var _0x11419e=_0x20786b[_0xedd6('0x59')];var _0x101f69=[];if(_0x20786b['user'][_0xedd6('0x2a')]===_0xedd6('0x2d'))throw new Error('Unauthorized');if(_['some'](_0x11419e,[_0xedd6('0x2a'),_0xedd6('0x7c')])&&_0x20786b[_0xedd6('0x7c')][_0xedd6('0x2a')]!==_0xedd6('0x2b')){throw new Error(_0xedd6('0x85'));}if(_[_0xedd6('0x86')](_0x11419e,[_0xedd6('0x2a'),_0xedd6('0x2b')])&&_0x20786b[_0xedd6('0x7c')]['role']!==_0xedd6('0x2b')){throw new Error(_0xedd6('0x87'));}return licenseUtil['checkUserLimits'](_0x11419e)[_0xedd6('0x12')](function(){return validateUser(_0x11419e[0x0]);})[_0xedd6('0x12')](function(){for(var _0x1e7c6a=0x1;_0x1e7c6a<_0x11419e[_0xedd6('0x4a')];_0x1e7c6a++){var _0x47eac7=_0x11419e[_0x1e7c6a-0x1][_0xedd6('0x5f')];if(!_0x11419e[_0x1e7c6a][_0xedd6('0x5f')])_0x11419e[_0x1e7c6a][_0xedd6('0x5f')]=_0x47eac7+0x1;_0x101f69[_0xedd6('0x45')](validateUser(_0x11419e[_0x1e7c6a]));}return BPromise[_0xedd6('0x50')](_0x101f69);})[_0xedd6('0x12')](function(){_0x101f69=[];for(var _0x45cd2a=0x0;_0x45cd2a<_0x11419e[_0xedd6('0x4a')];_0x45cd2a++){_0x101f69[_0xedd6('0x45')](updateUser(_0x11419e[_0x45cd2a]));}return BPromise[_0xedd6('0x50')](_0x101f69);})['then'](function(){return BPromise[_0xedd6('0x88')](_0x11419e,function(_0x5ec672){return db[_0xedd6('0x3b')]['create'](_0x5ec672,{'include':[{'model':db[_0xedd6('0x6c')],'as':_0xedd6('0x6c')}]})[_0xedd6('0x12')](function(_0x3d6e64){_0x5ec672['id']=_0x3d6e64['id'];return _0x5ec672;});});})['then'](function(_0x198a32){if(_0x20786b['body']['role']===_0xedd6('0x7c'))return _0x198a32;if(_0x20786b[_0xedd6('0x7c')][_0xedd6('0x2a')]!=='user')return _0x198a32;var _0x5ec1e4=_[_0xedd6('0x86')](_0x198a32,function(_0x3f729f){return _0x3f729f[_0xedd6('0x2a')]===_0xedd6('0x2d')||_0x3f729f['role']===_0xedd6('0x2f');});if(!_0x5ec1e4)return _0x198a32;return db[_0xedd6('0x81')][_0xedd6('0x46')]({'where':{'name':{'$or':[_0xedd6('0x2c'),_0xedd6('0x2e')]},'userProfileId':_0x20786b[_0xedd6('0x7c')][_0xedd6('0x82')]},'raw':!![]})[_0xedd6('0x12')](function(_0x39257e){if(_['isEmpty'](_0x39257e)||!_[_0xedd6('0x86')](_0x39257e,[_0xedd6('0x83'),0x0]))return _0x198a32;_0x101f69=[];var _0x4bb5d1=_(_0x39257e)[_0xedd6('0x32')](function(_0x437f5f){if(_0x437f5f[_0xedd6('0x83')]===0x1)return;return _0x437f5f[_0xedd6('0x36')]==='Agents'?_0xedd6('0x2d'):_0xedd6('0x2f');})[_0xedd6('0x89')]()[_0xedd6('0x33')]();for(var _0x155f6d=0x0;_0x155f6d<_0x198a32[_0xedd6('0x4a')];_0x155f6d++){if(!_[_0xedd6('0x34')](_0x4bb5d1,_0x198a32[_0x155f6d][_0xedd6('0x2a')]))return;var _0x5071f6=_0x198a32[_0x155f6d][_0xedd6('0x2a')]===_0xedd6('0x2d')?_0xedd6('0x2c'):_0xedd6('0x2e');_0x101f69[_0xedd6('0x45')](db[_0xedd6('0x37')]['create']({'name':_0x198a32[_0x155f6d][_0xedd6('0x36')],'resourceId':_0x198a32[_0x155f6d]['id'],'type':_0x5071f6,'sectionId':_[_0xedd6('0x35')](_0x39257e,[_0xedd6('0x36'),_0x5071f6])['id']},{}));}return BPromise[_0xedd6('0x50')](_0x101f69);});})[_0xedd6('0x12')](respondWithResult(_0x1616dc,0xc9))[_0xedd6('0x1d')](handleError(_0x1616dc,null));};exports[_0xedd6('0x8a')]=function(_0x524546,_0x233e8e){if(_0x524546[_0xedd6('0x59')]['id']){delete _0x524546[_0xedd6('0x59')]['id'];}return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x524546[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](function(_0x118b43){if(!_0x118b43)return null;if(_0x118b43['id']===_0x524546[_0xedd6('0x7c')]['id']){if(!_0x524546[_0xedd6('0x59')][_0xedd6('0x8b')]||!_0x524546['body'][_0xedd6('0x8c')]){throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0x8e'));}if(!_0x118b43['authenticate'](_0x524546['body'][_0xedd6('0x8b')])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x90'));}if(_0x524546[_0xedd6('0x59')][_0xedd6('0x8b')]===_0x524546['body']['newPassword']){throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0x91'));}}else if(_0x524546[_0xedd6('0x7c')][_0xedd6('0x2a')]===_0xedd6('0x2b')){if(!_0x524546[_0xedd6('0x59')]['newPassword']){throw new db['Sequelize'][(_0xedd6('0x8f'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x524546[_0xedd6('0x7c')][_0xedd6('0x2a')]===_0xedd6('0x7c')){if(!_0x524546['body']['newPassword']){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x92'));}if(_0x118b43[_0xedd6('0x2a')]!==_0xedd6('0x2d')){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x7d'));}}else{throw new db['Sequelize'][(_0xedd6('0x8f'))]('Unauthorized');}return _0x118b43;})['then'](handleEntityNotFound(_0x233e8e,null))[_0xedd6('0x12')](function(_0x12f78d){return db[_0xedd6('0x93')][_0xedd6('0x94')]({'attributes':['id',_0xedd6('0x61'),'enforcePasswordHistory',_0xedd6('0x95')]})[_0xedd6('0x12')](function(_0x462909){if(_0x462909[_0xedd6('0x61')])authService[_0xedd6('0x62')](_0x524546[_0xedd6('0x59')]['newPassword']);if(!_0x462909[_0xedd6('0x96')]||!_0x12f78d[_0xedd6('0x97')])return _0x12f78d;authService[_0xedd6('0x98')](_0x524546[_0xedd6('0x59')][_0xedd6('0x8c')],_0x12f78d[_0xedd6('0x97')],_0x462909['passwordHistoryLimit']);return _0x12f78d;})[_0xedd6('0x12')](saveUpdates({'password':_0x524546[_0xedd6('0x59')][_0xedd6('0x8c')],'passwordResetAt':_0x524546[_0xedd6('0x7c')]['id']==_0x524546[_0xedd6('0x5a')]['id']?moment():null,'previousPasswords':authService[_0xedd6('0x99')](_0x524546[_0xedd6('0x59')][_0xedd6('0x8c')],_0x12f78d[_0xedd6('0x97')])},null));})[_0xedd6('0x12')](respondWithResult(_0x233e8e,null))[_0xedd6('0x1d')](handleError(_0x233e8e,null));};exports[_0xedd6('0x9a')]=function(_0x4f2e18,_0x5e444a){var _0x2ac20a=_0x4f2e18['body'][_0xedd6('0x9b')];return db['User'][_0xedd6('0x35')]({'where':{'id':_0x4f2e18[_0xedd6('0x5a')]['id']},'attributes':['id','name',_0xedd6('0x2a'),'online','loginInPause',_0xedd6('0x9c'),_0xedd6('0x9d')]})['then'](handleEntityNotFound(_0x5e444a,null))[_0xedd6('0x12')](function(_0x324d85){if(_0x324d85){if(!utils[_0xedd6('0x9e')](_0x2ac20a)){throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0x9f'));}return _0x324d85[_0xedd6('0xa0')+_['capitalize'](_0x2ac20a[_0xedd6('0xa1')]())+_0xedd6('0xa2')](_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')],{'penalty':_0x4f2e18[_0xedd6('0x59')]['penalty']||0x0})[_0xedd6('0xa3')](function(_0x3b1a2d){for(var _0x2a35ad=0x0;_0x2a35ad<_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x2a35ad+=0x1){var _0x3b97a3={'UserId':Number(_0x4f2e18[_0xedd6('0x5a')]['id'])};_0x3b97a3[_[_0xedd6('0xa4')](_0x2ac20a['toLowerCase']())+_0xedd6('0xa5')]=Number(_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')][_0x2a35ad]);socket[_0xedd6('0xa6')](_0xedd6('0x7c')+_[_0xedd6('0xa4')](_0x2ac20a['toLowerCase']())+_0xedd6('0xa7'),_0x3b97a3);}return _0x3b1a2d;})[_0xedd6('0x12')](function(){if(_0x2ac20a===_0xedd6('0xa8')){return db[_0xedd6('0xa9')][_0xedd6('0x46')]({'where':{'id':_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xedd6('0x12')](function(_0x17e0ef){var _0x52cf9f=_0x324d85[_0xedd6('0x29')]({'plain':!![]});var _0x389762=[];if(_0x2ac20a==='voice'&&_0x52cf9f[_0xedd6('0x2a')]==='agent'&&_0x52cf9f[_0xedd6('0xaa')]){for(var _0x248770=0x0;_0x248770<_0x17e0ef[_0xedd6('0x4a')];_0x248770+=0x1){_0x389762[_0xedd6('0x45')]({'membername':_0x52cf9f['name'],'UserId':_0x52cf9f['id'],'queue_name':_0x17e0ef[_0x248770][_0xedd6('0x36')],'VoiceQueueId':_0x17e0ef[_0x248770]['id'],'interface':_['isNil'](_0x52cf9f['interface'])?util['format']('SIP/%s',_0x52cf9f['name']):_0x52cf9f['interface'],'paused':_0x52cf9f[_0xedd6('0x9c')]||![],'penalty':_0x4f2e18[_0xedd6('0x59')]['penalty']||0x0});}return BPromise[_0xedd6('0x88')](_0x389762,function(_0x54afe2){return db['UserVoiceQueueRt']['upsert'](_0x54afe2);});}return _0x324d85;});}})[_0xedd6('0x12')](respondWithStatusCode(_0x5e444a,null))[_0xedd6('0x1d')](handleError(_0x5e444a,null));};exports['removeQueues']=function(_0x279bda,_0x60a163){var _0x57d145;return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x279bda['params']['id']},'attributes':['id',_0xedd6('0x36'),_0xedd6('0x2a')]})[_0xedd6('0x12')](handleEntityNotFound(_0x60a163,null))['then'](function(_0x1073fd){if(_0x1073fd){_0x57d145=_0x1073fd;if(!_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')]||!utils[_0xedd6('0x9e')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x9f'));}return _0x1073fd['remove'+_[_0xedd6('0xa4')](_0x279bda['query'][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xa2')](_0x279bda['query']['ids']);}})[_0xedd6('0x12')](function(_0x28ce25){if(_[_0xedd6('0xab')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')])){for(var _0x1f906f=0x0;_0x1f906f<_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')]['length'];_0x1f906f+=0x1){var _0x2f6a6d={'UserId':Number(_0x279bda[_0xedd6('0x5a')]['id'])};_0x2f6a6d[_[_0xedd6('0xa4')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xa5')]=Number(_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')][_0x1f906f]);socket['emit'](_0xedd6('0x7c')+_['capitalize'](_0x279bda['query'][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xac'),_0x2f6a6d);}}else{var _0x2f6a6d={'UserId':Number(_0x279bda['params']['id'])};_0x2f6a6d[_[_0xedd6('0xa4')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xa5')]=Number(_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')]);socket['emit'](_0xedd6('0x7c')+_[_0xedd6('0xa4')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xac'),_0x2f6a6d);}return _0x28ce25;})['then'](function(){if(_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')]===_0xedd6('0xa8')){return db[_0xedd6('0xad')][_0xedd6('0x28')]({'where':{'UserId':_0x279bda[_0xedd6('0x5a')]['id'],'VoiceQueueId':_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')]},'individualHooks':!![]})[_0xedd6('0x12')](function(){return _0x57d145;});}return _0x57d145;})[_0xedd6('0x12')](respondWithStatusCode(_0x60a163,null))[_0xedd6('0x1d')](handleError(_0x60a163,null));};exports[_0xedd6('0xae')]=function(_0x488f61,_0x6d79b0){_0x488f61[_0xedd6('0x59')][_0xedd6('0xaf')]=_0x488f61[_0xedd6('0xb0')][_0xedd6('0xb1')];return db['User'][_0xedd6('0x35')]({'where':{'id':_0x488f61[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x6d79b0,null))[_0xedd6('0x12')](saveUpdates(_0x488f61['body'],null))[_0xedd6('0x12')](respondWithResult(_0x6d79b0,null))[_0xedd6('0x1d')](handleError(_0x6d79b0,null));};exports[_0xedd6('0xb2')]=function(_0x316287,_0x33c9bc){var _0x55ac9c=path[_0xedd6('0xb3')](config['root'],'server/files/images/logos/default_profile.png');return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x316287[_0xedd6('0x5a')]['id']},'attributes':['id',_0xedd6('0xaf')],'raw':!![]})[_0xedd6('0x12')](handleEntityNotFound(_0x33c9bc,null))[_0xedd6('0x12')](function(_0x36c643){if(_0x36c643){if(_[_0xedd6('0x64')](_0x36c643['userpic'])){return _0x33c9bc[_0xedd6('0xb4')](_0x55ac9c);}else{if(!fs[_0xedd6('0xb5')](path[_0xedd6('0xb3')](config[_0xedd6('0xb6')],_0xedd6('0xb7'),_0x36c643[_0xedd6('0xaf')]))){return _0x33c9bc['download'](_0x55ac9c);}return _0x33c9bc[_0xedd6('0xb4')](path['join'](config[_0xedd6('0xb6')],'server/files/images/',_0x36c643[_0xedd6('0xaf')]));}}})['catch'](handleError(_0x33c9bc,null));};exports[_0xedd6('0xb8')]=function(_0x5e01df,_0x5691ae){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x5e01df[_0xedd6('0x5a')]['id']},'attributes':['id']})[_0xedd6('0x12')](handleEntityNotFound(_0x5691ae,null))[_0xedd6('0x12')](function(_0x427d39){var _0x44afae=[];values=_0x427d39['dataValues'];_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4b'),_0x427d39['dataValues']));_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4d'),_0x427d39['dataValues']));_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0xb9'),_0x427d39[_0xedd6('0x4c')]));_0x44afae['push'](get_open_tabs(_0xedd6('0x4f'),_0x427d39[_0xedd6('0x4c')]));_0x44afae['push'](get_open_tabs(_0xedd6('0x4e'),_0x427d39['dataValues']));_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x58'),_0x427d39[_0xedd6('0x4c')]));return BPromise[_0xedd6('0x50')](_0x44afae);})['then'](function(_0x4c92ab){var _0x27dd55=[];if(_0x4c92ab){for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xba')]['length'];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xba')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':_0xedd6('0xbb'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xbd')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xbd')][_0x39ad81];_0x27dd55['push']({'channel':_0xedd6('0xbe'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xbf')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xbf')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':_0xedd6('0xc0'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xc1')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xc1')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':'MAIL','id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xc2')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xc2')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':'SMS','id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values['WhatsappOpenTabs']['length'];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xc3')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':_0xedd6('0xc4'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}var _0x59e8e4={'count':_0x27dd55[_0xedd6('0x4a')],'rows':_0x27dd55};return _0x59e8e4;}else return null;})['then'](respondWithResult(_0x5691ae,null))[_0xedd6('0x1d')](handleError(_0x5691ae,null));};exports['getContacts']=function(_0x1e8e94,_0x1f3ea7){var _0x3d5f5c={};var _0x14b9a6={};var _0x122724;var _0x45eb50;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x1e8e94[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1f3ea7,null))[_0xedd6('0x12')](function(_0x2a0c51){if(_0x2a0c51){_0x122724=_0x2a0c51;_0x14b9a6[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xc5')][_0xedd6('0x3c')]);_0x14b9a6['query']=_[_0xedd6('0x52')](_0x1e8e94[_0xedd6('0x48')]);_0x14b9a6['filters']=_[_0xedd6('0x55')](_0x14b9a6[_0xedd6('0x54')],_0x14b9a6[_0xedd6('0x48')]);_0x3d5f5c[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x14b9a6[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x1e8e94['query'][_0xedd6('0x56')]));_0x3d5f5c[_0xedd6('0x44')]=_0x3d5f5c[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x3d5f5c[_0xedd6('0x44')]:_0x14b9a6[_0xedd6('0x54')];_0x3d5f5c[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x1e8e94[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x3d5f5c[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0x1e8e94[_0xedd6('0x48')],_0x14b9a6[_0xedd6('0x53')]));if(_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x30')]){_0x3d5f5c['where']=_[_0xedd6('0xc8')](_0x3d5f5c[_0xedd6('0x41')],{'$or':_['map'](_0x3d5f5c[_0xedd6('0x44')],function(_0x372ac5){var _0x394896={};_0x394896[_0x372ac5]={'$like':'%'+_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x394896;})});}_0x3d5f5c=_[_0xedd6('0xc8')]({},_0x3d5f5c,_0x1e8e94[_0xedd6('0xc9')]);return _0x122724[_0xedd6('0xca')](_0x3d5f5c);}})[_0xedd6('0x12')](function(_0x318249){if(_0x318249){_0x45eb50=_0x318249[_0xedd6('0x4a')];if(_0x1e8e94[_0xedd6('0x48')][_0xedd6('0xcb')]('includeAll')){_0x3d5f5c[_0xedd6('0x43')]=[{'model':db[_0xedd6('0xcc')],'as':_0xedd6('0xcd'),'required':![]},{'model':db[_0xedd6('0xce')],'as':'Tags','attributes':['id',_0xedd6('0x36'),_0xedd6('0xcf')],'where':_0x1e8e94[_0xedd6('0x48')]['tag']?{'id':_0x1e8e94[_0xedd6('0x48')][_0xedd6('0xd0')]}:undefined,'required':_0x1e8e94['query'][_0xedd6('0xd0')]?!![]:![]}];}if(!_0x1e8e94['query'][_0xedd6('0xcb')]('nolimit')){_0x3d5f5c[_0xedd6('0x24')]=qs['limit'](_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x24')]);_0x3d5f5c[_0xedd6('0x22')]=qs['offset'](_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x122724[_0xedd6('0xca')](_0x3d5f5c);}})['then'](function(_0x21d157){if(_0x21d157){return _0x21d157?{'count':_0x45eb50,'rows':_0x21d157}:null;}})['then'](respondWithResult(_0x1f3ea7,null))[_0xedd6('0x1d')](handleError(_0x1f3ea7,null));};exports[_0xedd6('0xd1')]=function(_0x546a59,_0xc37a10){var _0x4c6324;var _0x55351f;var _0x50e058={};var _0x265ba6;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x546a59['params']['id']},'attributes':['id',_0xedd6('0x36'),'role']})['then'](handleEntityNotFound(_0xc37a10,null))[_0xedd6('0x12')](function(_0x4568da){if(!utils[_0xedd6('0x9e')](_0x546a59[_0xedd6('0x48')]['channel'])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x9f'));}_0x4c6324=_0x4568da;var _0x33fa67={};_0x33fa67[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_['capitalize'](_0x546a59[_0xedd6('0x48')][_0xedd6('0x9b')])+_0xedd6('0xd2')][_0xedd6('0x3c')]);_0x33fa67[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x546a59[_0xedd6('0x48')]);_0x33fa67[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x33fa67[_0xedd6('0x54')],_0x33fa67[_0xedd6('0x48')]);_0x50e058[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x33fa67[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x56')]));_0x50e058['attributes']=_0x50e058[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x50e058['attributes']:_0x33fa67[_0xedd6('0x54')];_0x50e058[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x546a59[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x50e058[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x546a59[_0xedd6('0x48')],_0x33fa67['filters']));if(_0x546a59['query']['filter']){_0x50e058[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x50e058['where'],{'$or':_[_0xedd6('0x32')](_0x50e058['attributes'],function(_0x32d275){var _0x408b08={};_0x408b08[_0x32d275]={'$like':'%'+_0x546a59[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x408b08;})});}_0x50e058=_[_0xedd6('0xc8')]({},_0x50e058,_0x546a59[_0xedd6('0xc9')]);switch(_0x4c6324['role']){case _0xedd6('0x2b'):return db[_[_0xedd6('0xa4')](_0x546a59[_0xedd6('0x48')]['channel'])+_0xedd6('0xd2')]['findAll'](_0x50e058);case _0xedd6('0x7c'):case _0xedd6('0x2d'):return _0x4c6324['get'+_[_0xedd6('0xa4')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x9b')])+_0xedd6('0xa2')](_0x50e058);default:throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0xd4'));}})[_0xedd6('0x12')](function(_0x17bdd2){_0x265ba6=_0x17bdd2[_0xedd6('0x4a')];if(!_0x546a59[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x50e058[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x24')]);_0x50e058['offset']=qs['offset'](_0x546a59[_0xedd6('0x48')][_0xedd6('0x22')]);}switch(_0x4c6324[_0xedd6('0x2a')]){case'admin':return db[_[_0xedd6('0xa4')](_0x546a59['query']['channel'])+_0xedd6('0xd2')]['findAll'](_0x50e058);case _0xedd6('0x7c'):case _0xedd6('0x2d'):return _0x4c6324['get'+_[_0xedd6('0xa4')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x9b')])+'Queues'](_0x50e058);}})[_0xedd6('0x12')](function(_0x4024f5){return{'count':_0x265ba6,'rows':_0x4024f5};})[_0xedd6('0x12')](respondWithResult(_0xc37a10,null))[_0xedd6('0x1d')](handleError(_0xc37a10,null));};exports[_0xedd6('0xd6')]=function(_0x3e4737,_0xb008f){var _0xeb826b={};var _0x30b321={};var _0x37dd7a;var _0x4aa222;return db['User']['findOne']({'where':{'id':_0x3e4737['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xb008f,null))[_0xedd6('0x12')](function(_0x289a1c){if(_0x289a1c){_0x37dd7a=_0x289a1c;_0x30b321[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xad')][_0xedd6('0x3c')]);_0x30b321[_0xedd6('0x48')]=_['keys'](_0x3e4737[_0xedd6('0x48')]);_0x30b321[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x30b321['model'],_0x30b321[_0xedd6('0x48')]);_0xeb826b['attributes']=_['intersection'](_0x30b321['model'],qs['fields'](_0x3e4737[_0xedd6('0x48')][_0xedd6('0x56')]));_0xeb826b[_0xedd6('0x44')]=_0xeb826b[_0xedd6('0x44')][_0xedd6('0x4a')]?_0xeb826b[_0xedd6('0x44')]:_0x30b321[_0xedd6('0x54')];_0xeb826b[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x3e4737[_0xedd6('0x48')][_0xedd6('0xc7')]);_0xeb826b['where']=qs[_0xedd6('0x53')](_['pick'](_0x3e4737[_0xedd6('0x48')],_0x30b321[_0xedd6('0x53')]));if(_0x3e4737['query'][_0xedd6('0x30')]){_0xeb826b['where']=_[_0xedd6('0xc8')](_0xeb826b[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0xeb826b[_0xedd6('0x44')],function(_0x5d457b){var _0x9a1fb2={};_0x9a1fb2[_0x5d457b]={'$like':'%'+_0x3e4737[_0xedd6('0x48')]['filter']+'%'};return _0x9a1fb2;})});}_0xeb826b=_['merge']({},_0xeb826b,_0x3e4737[_0xedd6('0xc9')]);return _0x37dd7a[_0xedd6('0xd6')](_0xeb826b);}})[_0xedd6('0x12')](function(_0x434a73){if(_0x434a73){_0x4aa222=_0x434a73[_0xedd6('0x4a')];if(!_0x3e4737['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0xeb826b['limit']=qs[_0xedd6('0x24')](_0x3e4737[_0xedd6('0x48')][_0xedd6('0x24')]);_0xeb826b[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x3e4737['query']['offset']);}return _0x37dd7a[_0xedd6('0xd6')](_0xeb826b);}})[_0xedd6('0x12')](function(_0x497c87){if(_0x497c87){return _0x497c87?{'count':_0x4aa222,'rows':_0x497c87}:null;}})['then'](respondWithResult(_0xb008f,null))[_0xedd6('0x1d')](handleError(_0xb008f,null));};exports[_0xedd6('0xd7')]=function(_0x2563c6,_0x418641){var _0x21bc23={};var _0x44925b={};var _0x3ff98f;var _0x14c882;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x2563c6[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x418641,null))['then'](function(_0x18fc92){if(_0x18fc92){_0x3ff98f=_0x18fc92;_0x44925b['model']=_[_0xedd6('0x52')](db[_0xedd6('0xd8')]['rawAttributes']);_0x44925b[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x2563c6['query']);_0x44925b[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x44925b[_0xedd6('0x54')],_0x44925b[_0xedd6('0x48')]);_0x21bc23[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x44925b[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x2563c6[_0xedd6('0x48')][_0xedd6('0x56')]));_0x21bc23[_0xedd6('0x44')]=_0x21bc23[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x21bc23[_0xedd6('0x44')]:_0x44925b[_0xedd6('0x54')];_0x21bc23[_0xedd6('0xc6')]=qs['sort'](_0x2563c6['query'][_0xedd6('0xc7')]);_0x21bc23[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x2563c6[_0xedd6('0x48')],_0x44925b[_0xedd6('0x53')]));if(_0x2563c6[_0xedd6('0x48')]['filter']){_0x21bc23[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x21bc23[_0xedd6('0x41')],{'$or':_['map'](_0x21bc23['attributes'],function(_0x2da130){var _0x4c4f29={};_0x4c4f29[_0x2da130]={'$like':'%'+_0x2563c6[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x4c4f29;})});}_0x21bc23=_[_0xedd6('0xc8')]({},_0x21bc23,_0x2563c6[_0xedd6('0xc9')]);return _0x3ff98f[_0xedd6('0xd7')](_0x21bc23);}})['then'](function(_0x57b22d){if(_0x57b22d){_0x14c882=_0x57b22d[_0xedd6('0x4a')];if(!_0x2563c6[_0xedd6('0x48')][_0xedd6('0xcb')]('nolimit')){_0x21bc23[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x2563c6[_0xedd6('0x48')][_0xedd6('0x24')]);_0x21bc23['offset']=qs[_0xedd6('0x22')](_0x2563c6['query'][_0xedd6('0x22')]);}return _0x3ff98f['getGroups'](_0x21bc23);}})[_0xedd6('0x12')](function(_0x108120){if(_0x108120){return _0x108120?{'count':_0x14c882,'rows':_0x108120}:null;}})[_0xedd6('0x12')](respondWithResult(_0x418641,null))[_0xedd6('0x1d')](handleError(_0x418641,null));};exports['getRecordings']=function(_0x5ace39,_0x5675b8){var _0x86e52d={'raw':!![],'where':{}};var _0x24de25={};var _0x1de42a={'count':0x0,'rows':[]};return db['User'][_0xedd6('0x94')]({'where':{'id':_0x5ace39[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x5675b8,null))['then'](function(_0x56da5d){if(_0x56da5d){_0x24de25[_0xedd6('0x54')]=_['keys'](db['VoiceRecording'][_0xedd6('0x3c')]);_0x24de25[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x5ace39[_0xedd6('0x48')]);_0x24de25[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x24de25[_0xedd6('0x54')],_0x24de25[_0xedd6('0x48')]);_0x86e52d[_0xedd6('0x44')]=_['intersection'](_0x24de25['model'],qs[_0xedd6('0x56')](_0x5ace39[_0xedd6('0x48')][_0xedd6('0x56')]));_0x86e52d[_0xedd6('0x44')]=_0x86e52d['attributes'][_0xedd6('0x4a')]?_0x86e52d[_0xedd6('0x44')]:_0x24de25[_0xedd6('0x54')];if(!_0x5ace39['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x86e52d['limit']=qs[_0xedd6('0x24')](_0x5ace39[_0xedd6('0x48')]['limit']);_0x86e52d[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x5ace39[_0xedd6('0x48')][_0xedd6('0x22')]);}_0x86e52d[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x5ace39['query'][_0xedd6('0xc7')]);_0x86e52d[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x5ace39[_0xedd6('0x48')],_0x24de25[_0xedd6('0x53')]));_0x86e52d['where'][_0xedd6('0xd9')]=_0x56da5d['id'];if(_0x5ace39[_0xedd6('0x48')][_0xedd6('0x30')]){_0x86e52d[_0xedd6('0x41')]=_['merge'](_0x86e52d[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x86e52d['attributes'],function(_0x210319){var _0x17d9d7={};_0x17d9d7[_0x210319]={'$like':'%'+_0x5ace39['query']['filter']+'%'};return _0x17d9d7;})});}_0x86e52d=_[_0xedd6('0xc8')]({},_0x86e52d,_0x5ace39[_0xedd6('0xc9')]);return db[_0xedd6('0xda')][_0xedd6('0x25')]({'where':_0x86e52d[_0xedd6('0x41')]})[_0xedd6('0x12')](function(_0x14d822){_0x1de42a[_0xedd6('0x25')]=_0x14d822;if(_0x5ace39['query'][_0xedd6('0x42')]){_0x86e52d['include']=[{'all':!![]}];}return db[_0xedd6('0xda')]['findAll'](_0x86e52d);})[_0xedd6('0x12')](function(_0x4e8147){_0x1de42a[_0xedd6('0x47')]=_0x4e8147;return _0x1de42a;});}})[_0xedd6('0x12')](respondWithFilteredResult(_0x5675b8,_0x86e52d))['catch'](handleError(_0x5675b8,null));};exports[_0xedd6('0xdb')]=function(_0xc05ebd,_0x1a50e4){var _0x3c8489={'raw':!![],'where':{}};var _0x163e99={};var _0x4e47ce={'count':0x0,'rows':[]};return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0xc05ebd['params']['id']}})['then'](handleEntityNotFound(_0x1a50e4,null))[_0xedd6('0x12')](function(_0x2b7324){if(_0x2b7324){_0x163e99[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0xdc')][_0xedd6('0x3c')]);_0x163e99[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0xc05ebd[_0xedd6('0x48')]);_0x163e99[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x163e99['model'],_0x163e99[_0xedd6('0x48')]);_0x3c8489['attributes']=_[_0xedd6('0x55')](_0x163e99[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0xc05ebd[_0xedd6('0x48')]['fields']));_0x3c8489[_0xedd6('0x44')]=_0x3c8489[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x3c8489[_0xedd6('0x44')]:_0x163e99[_0xedd6('0x54')];if(!_0xc05ebd['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x3c8489['limit']=qs[_0xedd6('0x24')](_0xc05ebd[_0xedd6('0x48')][_0xedd6('0x24')]);_0x3c8489[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0xc05ebd[_0xedd6('0x48')]['offset']);}_0x3c8489[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0xc05ebd['query']['sort']);_0x3c8489[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0xc05ebd['query'],_0x163e99[_0xedd6('0x53')]));_0x3c8489[_0xedd6('0x41')]['UserId']=_0x2b7324['id'];if(_0xc05ebd['query'][_0xedd6('0x30')]){_0x3c8489[_0xedd6('0x41')]=_['merge'](_0x3c8489[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x3c8489[_0xedd6('0x44')],function(_0x2f89af){var _0x1b2bcc={};_0x1b2bcc[_0x2f89af]={'$like':'%'+_0xc05ebd[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x1b2bcc;})});}_0x3c8489=_['merge']({},_0x3c8489,_0xc05ebd[_0xedd6('0xc9')]);return db[_0xedd6('0xdc')]['count']({'where':_0x3c8489[_0xedd6('0x41')]})[_0xedd6('0x12')](function(_0x2e013d){_0x4e47ce[_0xedd6('0x25')]=_0x2e013d;if(_0xc05ebd[_0xedd6('0x48')][_0xedd6('0x42')]){_0x3c8489[_0xedd6('0x43')]=[{'all':!![]}];}return db[_0xedd6('0xdc')]['findAll'](_0x3c8489);})[_0xedd6('0x12')](function(_0x3bfb64){_0x4e47ce[_0xedd6('0x47')]=_0x3bfb64;return _0x4e47ce;});}})[_0xedd6('0x12')](respondWithFilteredResult(_0x1a50e4,_0x3c8489))[_0xedd6('0x1d')](handleError(_0x1a50e4,null));};exports[_0xedd6('0xdd')]=function(_0x1aa37f,_0xcaa2a9){var _0x16e7f4={};var _0x11b106={};var _0x3ee5aa;var _0x1d0cb0;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x1aa37f[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xcaa2a9,null))['then'](function(_0x44e5b0){if(_0x44e5b0){_0x3ee5aa=_0x44e5b0;_0x11b106['model']=_[_0xedd6('0x52')](db['ChatInteraction'][_0xedd6('0x3c')]);_0x11b106['query']=_[_0xedd6('0x52')](_0x1aa37f[_0xedd6('0x48')]);_0x11b106[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x11b106[_0xedd6('0x54')],_0x11b106['query']);_0x16e7f4['attributes']=_['intersection'](_0x11b106['model'],qs['fields'](_0x1aa37f['query'][_0xedd6('0x56')]));_0x16e7f4['attributes']=_0x16e7f4[_0xedd6('0x44')]['length']?_0x16e7f4['attributes']:_0x11b106[_0xedd6('0x54')];_0x16e7f4['order']=qs[_0xedd6('0xc7')](_0x1aa37f[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x16e7f4[_0xedd6('0x41')]=qs['filters'](_[_0xedd6('0xd3')](_0x1aa37f[_0xedd6('0x48')],_0x11b106[_0xedd6('0x53')]));if(_0x1aa37f[_0xedd6('0x48')]['filter']){_0x16e7f4[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x16e7f4['where'],{'$or':_[_0xedd6('0x32')](_0x16e7f4[_0xedd6('0x44')],function(_0x16f28a){var _0x4f7b9e={};_0x4f7b9e[_0x16f28a]={'$like':'%'+_0x1aa37f[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x4f7b9e;})});}_0x16e7f4=_[_0xedd6('0xc8')]({},_0x16e7f4,_0x1aa37f[_0xedd6('0xc9')]);return _0x3ee5aa['getChatInteractions'](_0x16e7f4);}})[_0xedd6('0x12')](function(_0x19b689){if(_0x19b689){_0x1d0cb0=_0x19b689['length'];if(!_0x1aa37f[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x16e7f4['limit']=qs[_0xedd6('0x24')](_0x1aa37f[_0xedd6('0x48')][_0xedd6('0x24')]);_0x16e7f4[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x1aa37f[_0xedd6('0x48')]['offset']);}return _0x3ee5aa[_0xedd6('0xdd')](_0x16e7f4);}})[_0xedd6('0x12')](function(_0x3e0740){if(_0x3e0740){return _0x3e0740?{'count':_0x1d0cb0,'rows':_0x3e0740}:null;}})[_0xedd6('0x12')](respondWithResult(_0xcaa2a9,null))[_0xedd6('0x1d')](handleError(_0xcaa2a9,null));};exports[_0xedd6('0xde')]=function(_0x2267c8,_0x26a6fb){var _0x40ae7d={};var _0x190fe1={};var _0x108b3e;var _0xb8e38c;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x2267c8['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x26a6fb,null))[_0xedd6('0x12')](function(_0x455550){if(_0x455550){_0x108b3e=_0x455550;_0x190fe1[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xdf')][_0xedd6('0x3c')]);_0x190fe1[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x2267c8[_0xedd6('0x48')]);_0x190fe1[_0xedd6('0x53')]=_['intersection'](_0x190fe1['model'],_0x190fe1['query']);_0x40ae7d[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x190fe1['model'],qs[_0xedd6('0x56')](_0x2267c8[_0xedd6('0x48')]['fields']));_0x40ae7d[_0xedd6('0x44')]=_0x40ae7d[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x40ae7d['attributes']:_0x190fe1[_0xedd6('0x54')];_0x40ae7d[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x2267c8[_0xedd6('0x48')]['sort']);_0x40ae7d[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x2267c8[_0xedd6('0x48')],_0x190fe1['filters']));if(_0x2267c8[_0xedd6('0x48')][_0xedd6('0x30')]){_0x40ae7d[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x40ae7d['where'],{'$or':_[_0xedd6('0x32')](_0x40ae7d[_0xedd6('0x44')],function(_0x4e7eed){var _0x5ee0fd={};_0x5ee0fd[_0x4e7eed]={'$like':'%'+_0x2267c8['query'][_0xedd6('0x30')]+'%'};return _0x5ee0fd;})});}_0x40ae7d=_[_0xedd6('0xc8')]({},_0x40ae7d,_0x2267c8['options']);return _0x108b3e[_0xedd6('0xde')](_0x40ae7d);}})[_0xedd6('0x12')](function(_0x4b052a){if(_0x4b052a){_0xb8e38c=_0x4b052a[_0xedd6('0x4a')];if(!_0x2267c8[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x40ae7d[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x2267c8['query']['limit']);_0x40ae7d[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x2267c8[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x108b3e['getOpenchannelInteractions'](_0x40ae7d);}})[_0xedd6('0x12')](function(_0x1a8c99){if(_0x1a8c99){return _0x1a8c99?{'count':_0xb8e38c,'rows':_0x1a8c99}:null;}})['then'](respondWithResult(_0x26a6fb,null))[_0xedd6('0x1d')](handleError(_0x26a6fb,null));};exports['getMailInteractions']=function(_0x13ef2d,_0x24757e){var _0x49dc90={'raw':!![],'where':{}};var _0x3e60d0={};var _0xccd1e2={'count':0x0,'rows':[]};return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x13ef2d[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x24757e,null))['then'](function(_0x3cdf0a){if(_0x3cdf0a){_0x3e60d0[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xe0')]['rawAttributes']);_0x3e60d0[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x13ef2d[_0xedd6('0x48')]);_0x3e60d0[_0xedd6('0x53')]=_['intersection'](_0x3e60d0['model'],_0x3e60d0[_0xedd6('0x48')]);_0x49dc90[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x3e60d0[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x13ef2d[_0xedd6('0x48')][_0xedd6('0x56')]));_0x49dc90[_0xedd6('0x44')]=_0x49dc90[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x49dc90['attributes']:_0x3e60d0[_0xedd6('0x54')];if(!_0x13ef2d[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x49dc90[_0xedd6('0x24')]=qs['limit'](_0x13ef2d[_0xedd6('0x48')][_0xedd6('0x24')]);_0x49dc90[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x13ef2d[_0xedd6('0x48')]['offset']);}_0x49dc90[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x13ef2d['query']['sort']);_0x49dc90[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x13ef2d[_0xedd6('0x48')],_0x3e60d0['filters']));_0x49dc90[_0xedd6('0x41')]['UserId']=_0x3cdf0a['id'];if(_0x13ef2d[_0xedd6('0x48')][_0xedd6('0x30')]){_0x49dc90[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x49dc90[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x49dc90[_0xedd6('0x44')],function(_0x47e950){var _0x46fcb1={};_0x46fcb1[_0x47e950]={'$like':'%'+_0x13ef2d[_0xedd6('0x48')]['filter']+'%'};return _0x46fcb1;})});}_0x49dc90=_[_0xedd6('0xc8')]({},_0x49dc90,_0x13ef2d[_0xedd6('0xc9')]);return db[_0xedd6('0xe0')]['count']({'where':_0x49dc90[_0xedd6('0x41')]})[_0xedd6('0x12')](function(_0x3ba794){_0xccd1e2[_0xedd6('0x25')]=_0x3ba794;if(_0x13ef2d['query'][_0xedd6('0x42')]){_0x49dc90[_0xedd6('0x43')]=[{'all':!![]}];}return db[_0xedd6('0xe0')]['findAll'](_0x49dc90);})['then'](function(_0x4773d6){_0xccd1e2[_0xedd6('0x47')]=_0x4773d6;return _0xccd1e2;});}})[_0xedd6('0x12')](respondWithFilteredResult(_0x24757e,_0x49dc90))[_0xedd6('0x1d')](handleError(_0x24757e,null));};exports['getSmsInteractions']=function(_0x57d88a,_0x36d055){var _0x926141={};var _0x4d3afb={};var _0x414d47;var _0x43e528;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x57d88a['params']['id']}})['then'](handleEntityNotFound(_0x36d055,null))[_0xedd6('0x12')](function(_0x119528){if(_0x119528){_0x414d47=_0x119528;_0x4d3afb[_0xedd6('0x54')]=_['keys'](db['SmsInteraction'][_0xedd6('0x3c')]);_0x4d3afb[_0xedd6('0x48')]=_['keys'](_0x57d88a[_0xedd6('0x48')]);_0x4d3afb['filters']=_['intersection'](_0x4d3afb[_0xedd6('0x54')],_0x4d3afb['query']);_0x926141['attributes']=_['intersection'](_0x4d3afb['model'],qs['fields'](_0x57d88a['query']['fields']));_0x926141[_0xedd6('0x44')]=_0x926141[_0xedd6('0x44')]['length']?_0x926141[_0xedd6('0x44')]:_0x4d3afb[_0xedd6('0x54')];_0x926141[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x57d88a['query'][_0xedd6('0xc7')]);_0x926141[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x57d88a[_0xedd6('0x48')],_0x4d3afb[_0xedd6('0x53')]));if(_0x57d88a['query'][_0xedd6('0x30')]){_0x926141[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x926141[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x926141[_0xedd6('0x44')],function(_0x14012c){var _0x14e26a={};_0x14e26a[_0x14012c]={'$like':'%'+_0x57d88a['query'][_0xedd6('0x30')]+'%'};return _0x14e26a;})});}_0x926141=_[_0xedd6('0xc8')]({},_0x926141,_0x57d88a[_0xedd6('0xc9')]);return _0x414d47[_0xedd6('0xe1')](_0x926141);}})['then'](function(_0x1214d1){if(_0x1214d1){_0x43e528=_0x1214d1['length'];if(!_0x57d88a[_0xedd6('0x48')]['hasOwnProperty'](_0xedd6('0xd5'))){_0x926141[_0xedd6('0x24')]=qs['limit'](_0x57d88a[_0xedd6('0x48')][_0xedd6('0x24')]);_0x926141[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x57d88a[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x414d47[_0xedd6('0xe1')](_0x926141);}})['then'](function(_0x36967f){if(_0x36967f){return _0x36967f?{'count':_0x43e528,'rows':_0x36967f}:null;}})['then'](respondWithResult(_0x36d055,null))[_0xedd6('0x1d')](handleError(_0x36d055,null));};exports[_0xedd6('0xe2')]=function(_0x423910,_0x47d934){var _0x55f07c={};var _0x280286={};var _0x4361c5;var _0x13bdec;return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x423910['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x47d934,null))[_0xedd6('0x12')](function(_0x40314d){if(_0x40314d){_0x4361c5=_0x40314d;_0x280286[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xe3')][_0xedd6('0x3c')]);_0x280286['query']=_['keys'](_0x423910[_0xedd6('0x48')]);_0x280286['filters']=_[_0xedd6('0x55')](_0x280286[_0xedd6('0x54')],_0x280286[_0xedd6('0x48')]);_0x55f07c['attributes']=_[_0xedd6('0x55')](_0x280286[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x423910[_0xedd6('0x48')][_0xedd6('0x56')]));_0x55f07c[_0xedd6('0x44')]=_0x55f07c[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x55f07c[_0xedd6('0x44')]:_0x280286[_0xedd6('0x54')];_0x55f07c[_0xedd6('0xc6')]=qs['sort'](_0x423910[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x55f07c[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0x423910['query'],_0x280286[_0xedd6('0x53')]));if(_0x423910[_0xedd6('0x48')][_0xedd6('0x30')]){_0x55f07c[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x55f07c[_0xedd6('0x41')],{'$or':_['map'](_0x55f07c[_0xedd6('0x44')],function(_0x5d9c3e){var _0x2c7743={};_0x2c7743[_0x5d9c3e]={'$like':'%'+_0x423910[_0xedd6('0x48')]['filter']+'%'};return _0x2c7743;})});}_0x55f07c=_['merge']({},_0x55f07c,_0x423910[_0xedd6('0xc9')]);return _0x4361c5[_0xedd6('0xe2')](_0x55f07c);}})[_0xedd6('0x12')](function(_0x2d31c7){if(_0x2d31c7){_0x13bdec=_0x2d31c7[_0xedd6('0x4a')];if(!_0x423910['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x55f07c[_0xedd6('0x24')]=qs['limit'](_0x423910['query']['limit']);_0x55f07c[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x423910['query'][_0xedd6('0x22')]);}return _0x4361c5[_0xedd6('0xe2')](_0x55f07c);}})[_0xedd6('0x12')](function(_0x155f91){if(_0x155f91){return _0x155f91?{'count':_0x13bdec,'rows':_0x155f91}:null;}})['then'](respondWithResult(_0x47d934,null))['catch'](handleError(_0x47d934,null));};exports[_0xedd6('0xe4')]=function(_0x3df75b,_0x22e1eb){var _0x42b240={};var _0x503e1a={};var _0x4d1a50;var _0x5b7ae2;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x3df75b[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x22e1eb,null))[_0xedd6('0x12')](function(_0x49d99a){if(_0x49d99a){_0x4d1a50=_0x49d99a;_0x503e1a[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xe5')][_0xedd6('0x3c')]);_0x503e1a[_0xedd6('0x48')]=_['keys'](_0x3df75b[_0xedd6('0x48')]);_0x503e1a[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x503e1a[_0xedd6('0x54')],_0x503e1a['query']);_0x42b240[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x503e1a['model'],qs[_0xedd6('0x56')](_0x3df75b['query']['fields']));_0x42b240['attributes']=_0x42b240[_0xedd6('0x44')]['length']?_0x42b240[_0xedd6('0x44')]:_0x503e1a[_0xedd6('0x54')];_0x42b240[_0xedd6('0xc6')]=qs['sort'](_0x3df75b[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x42b240[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x3df75b[_0xedd6('0x48')],_0x503e1a[_0xedd6('0x53')]));if(_0x3df75b['query'][_0xedd6('0x30')]){_0x42b240['where']=_['merge'](_0x42b240[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x42b240[_0xedd6('0x44')],function(_0x36cfe2){var _0xfc54aa={};_0xfc54aa[_0x36cfe2]={'$like':'%'+_0x3df75b[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0xfc54aa;})});}_0x42b240=_[_0xedd6('0xc8')]({},_0x42b240,_0x3df75b['options']);return _0x4d1a50['getWhatsappInteractions'](_0x42b240);}})[_0xedd6('0x12')](function(_0x135416){if(_0x135416){_0x5b7ae2=_0x135416[_0xedd6('0x4a')];if(!_0x3df75b[_0xedd6('0x48')]['hasOwnProperty'](_0xedd6('0xd5'))){_0x42b240[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x3df75b[_0xedd6('0x48')][_0xedd6('0x24')]);_0x42b240[_0xedd6('0x22')]=qs['offset'](_0x3df75b[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x4d1a50['getWhatsappInteractions'](_0x42b240);}})['then'](function(_0x18859e){if(_0x18859e){return _0x18859e?{'count':_0x5b7ae2,'rows':_0x18859e}:null;}})[_0xedd6('0x12')](respondWithResult(_0x22e1eb,null))[_0xedd6('0x1d')](handleError(_0x22e1eb,null));};exports[_0xedd6('0xe6')]=function(_0x4f62be,_0x10e14d,_0x52f1de){var _0x59c3e2;var _0x1b7d09;var _0x5881cb;var _0x535b23=!_[_0xedd6('0x64')](_0x4f62be['params']['id'])?_0x4f62be[_0xedd6('0x5a')]['id']:!_[_0xedd6('0x64')](_0x4f62be['user']['id'])?_0x4f62be[_0xedd6('0x7c')]['id']:null;return db['User']['find']({'where':{'id':_0x535b23,'role':{'$or':[_0xedd6('0x2b'),_0xedd6('0x7c'),_0xedd6('0x2d')]}},'attributes':['id',_0xedd6('0x36'),'phone',_0xedd6('0xe7'),'role',_0xedd6('0x5f'),_0xedd6('0xe8')]})['then'](function(_0x14ec29){if(_0x14ec29){if(_0x14ec29[_0xedd6('0x2a')]==='agent'){_0x59c3e2=_0x14ec29;if(_0x4f62be[_0xedd6('0x59')][_0xedd6('0x9d')]){_0x5881cb=util['format']('LOCAL/%s@from-sip/n',_0x59c3e2[_0x4f62be[_0xedd6('0x59')][_0xedd6('0x9d')]]);}else if(_0x4f62be['body']['intrf']){_0x5881cb=util['format']('SIP/%s',_0x4f62be[_0xedd6('0x59')][_0xedd6('0xe9')]);}else{_0x5881cb=util[_0xedd6('0xea')]('SIP/%s',_0x59c3e2[_0xedd6('0x36')]);}socket['to'](util['format'](_0xedd6('0xeb'),_0x59c3e2[_0xedd6('0x36')]))[_0xedd6('0xa6')](_0xedd6('0xec'),{'user':{'id':_0x59c3e2['id'],'name':_0x59c3e2['name']},'ip':_0x4f62be[_0xedd6('0xed')][_0xedd6('0xee')]||_0x4f62be['connection'][_0xedd6('0xef')]||_0x4f62be[_0xedd6('0xf0')]['remoteAddress']||_0x4f62be[_0xedd6('0xf1')][_0xedd6('0xf0')][_0xedd6('0xef')]});return db['UserVoiceQueueRt'][_0xedd6('0x28')]({'where':{'membername':_0x59c3e2[_0xedd6('0x36')]},'individualHooks':!![]});}}else{throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0xf2'));}})['then'](function(){if(_0x59c3e2){return _0x59c3e2['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x1f47a4){if(_0x59c3e2){var _0x4cac41=[];if(_0x1f47a4){_0x1b7d09=_0x1f47a4;if(_0x1b7d09['length']){for(var _0x12e306=0x0;_0x12e306<_0x1b7d09[_0xedd6('0x4a')];_0x12e306++){_0x4cac41[_0xedd6('0x45')]({'membername':_0x59c3e2['name'],'UserId':_0x59c3e2['id'],'queue_name':_0x1b7d09[_0x12e306]['name'],'VoiceQueueId':_0x1b7d09[_0x12e306]['id'],'interface':_0x5881cb,'paused':_0x59c3e2['loginInPause']||![],'penalty':_0x1b7d09[_0x12e306][_0xedd6('0xf3')]||0x0});}return BPromise[_0xedd6('0x88')](_0x4cac41,function(_0x50e1f7){return db[_0xedd6('0xad')][_0xedd6('0xf4')](_0x50e1f7);});}}}})[_0xedd6('0x12')](function(){if(_0x59c3e2){return db[_0xedd6('0xf5')]['findAll']({'where':{'membername':_0x59c3e2[_0xedd6('0x36')],'exitAt':null}});}})[_0xedd6('0x12')](function(_0x1a1865){if(_0x59c3e2){var _0x35e07c=[];_0x1a1865['forEach'](function(_0x433bad){_0x35e07c[_0xedd6('0x45')](_0x433bad[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))}));});return BPromise[_0xedd6('0x50')](_0x35e07c);}})[_0xedd6('0x12')](function(){if(_0x59c3e2){var _0x68190d=[];var _0x50fd4a=[];var _0x54fc33=utils['getChannels']();var _0x3aab2a={'membername':_0x59c3e2['name'],'interface':_0x5881cb,'enterAt':moment()[_0xedd6('0xea')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x59c3e2[_0xedd6('0x2a')],'internal':_0x59c3e2[_0xedd6('0x5f')]};_0x54fc33[_0xedd6('0xf7')](function(_0x24c750){_0x68190d[_0xedd6('0x45')](_[_0xedd6('0xc8')]({'channel':_0x24c750,'type':_0xedd6('0xf8'),'data1':_0x4f62be[_0xedd6('0x59')][_0xedd6('0xf9')],'data2':_0x5881cb},_0x3aab2a));if(_0x59c3e2[_0xedd6('0xe8')]){_0x50fd4a[_0xedd6('0x45')](_[_0xedd6('0xc8')]({'channel':_0x24c750,'type':'PAUSE','data1':_0xedd6('0xfa')},_0x3aab2a));}});return db['MemberReport'][_0xedd6('0xfb')](_0x68190d[_0xedd6('0xfc')](_0x50fd4a),{'individualHooks':!![]});}})[_0xedd6('0x12')](function(){if(_0x59c3e2){return _0x59c3e2['update']({'online':!![],'lastLoginAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'voicePause':_0x59c3e2['loginInPause']||![],'mailPause':_0x59c3e2[_0xedd6('0xe8')]||![],'chatPause':_0x59c3e2['loginInPause']||![],'faxPause':_0x59c3e2['loginInPause']||![],'smsPause':_0x59c3e2[_0xedd6('0xe8')]||![],'openchannelPause':_0x59c3e2[_0xedd6('0xe8')]||![],'whatsappPause':_0x59c3e2[_0xedd6('0xe8')]||![],'pauseType':_0x59c3e2['loginInPause']?_0xedd6('0xfa'):null,'interface':_0x5881cb,'lastPauseAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))});}})[_0xedd6('0x12')](function(_0x51f7c6){if(_0x4f62be[_0xedd6('0xfd')]){return _0x52f1de();}else{return BPromise[_0xedd6('0xfe')](_0x51f7c6)[_0xedd6('0x12')](respondWithResult(_0x10e14d,null));}})['catch'](handleError(_0x10e14d,null));};exports[_0xedd6('0xff')]=function(_0x50cb11,_0x37e95a){var _0x284997;return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x50cb11[_0xedd6('0x5a')]['id'],'role':_0xedd6('0x2d')},'attributes':['id',_0xedd6('0x36'),'role']})[_0xedd6('0x12')](handleEntityNotFound(_0x37e95a,null))[_0xedd6('0x12')](function(_0x448724){if(_0x448724){_0x284997=_0x448724;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x284997[_0xedd6('0x36')]},'individualHooks':!![]});}})[_0xedd6('0x12')](function(){return db['MemberReport'][_0xedd6('0x46')]({'where':{'membername':_0x284997[_0xedd6('0x36')],'exitAt':null}});})[_0xedd6('0x12')](function(_0x4a2148){var _0x2f6f46=[];_0x4a2148['forEach'](function(_0x31ae33){_0x2f6f46[_0xedd6('0x45')](_0x31ae33[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))}));});return BPromise['all'](_0x2f6f46);})['then'](function(){return _0x284997['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xedd6('0x12')](respondWithResult(_0x37e95a,null))[_0xedd6('0x1d')](handleError(_0x37e95a,null));};exports[_0xedd6('0x100')]=function(_0x53f667,_0x4b4889){var _0x38d000;return db['UserVoiceQueueRt'][_0xedd6('0x27')]({'paused':0x1},{'where':{'UserId':_0x53f667['params']['id']},'individualHooks':!![]})[_0xedd6('0x12')](function(){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x53f667['params']['id'],'role':_0xedd6('0x2d')},'attributes':['id',_0xedd6('0x36'),_0xedd6('0x2a'),_0xedd6('0x5f'),_0xedd6('0x9d')]});})[_0xedd6('0x12')](handleEntityNotFound(_0x4b4889,null))[_0xedd6('0x12')](function(_0x32f66b){if(_0x32f66b){_0x38d000=_0x32f66b;return respondWithRpcPromise(_0xedd6('0x101'),'pause',{'id':_0x38d000['id'],'name':_0x38d000[_0xedd6('0x36')],'pause':!![]});}})[_0xedd6('0x12')](function(){if(_0x38d000){return db[_0xedd6('0xf5')][_0xedd6('0x46')]({'where':{'membername':_0x38d000[_0xedd6('0x36')],'type':_0xedd6('0x102'),'exitAt':null}});}})[_0xedd6('0x12')](function(_0x9b5f77){if(_0x9b5f77[_0xedd6('0x4a')]){var _0x16066e=moment()[_0xedd6('0xea')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x163fdc=0x0,_0x2c0f78=_0x9b5f77['length'];_0x163fdc<_0x2c0f78;_0x163fdc++){_0x9b5f77[_0x163fdc][_0xedd6('0x103')]({'exitAt':_0x16066e});}}})['then'](function(){var _0x53397f=[];var _0x165d1b=utils['getChannels']();_0x165d1b[_0xedd6('0xf7')](function(_0x438054){_0x53397f[_0xedd6('0x45')]({'channel':_0x438054,'membername':_0x38d000['name'],'interface':_['isNil'](_0x38d000[_0xedd6('0x9d')])?util[_0xedd6('0xea')](_0xedd6('0x104'),_0x38d000[_0xedd6('0x36')]):_0x38d000[_0xedd6('0x9d')],'type':_0xedd6('0x102'),'enterAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'data1':_0x53f667[_0xedd6('0x59')][_0xedd6('0x3d')]||_0xedd6('0x105'),'role':_0x38d000[_0xedd6('0x2a')],'internal':_0x38d000[_0xedd6('0x5f')]});});return db[_0xedd6('0xf5')][_0xedd6('0xfb')](_0x53397f,{'individualHooks':!![]});})['then'](function(){return _0x38d000[_0xedd6('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x53f667[_0xedd6('0x59')]['type']||_0xedd6('0x105'),'lastPauseAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))});})[_0xedd6('0x12')](respondWithResult(_0x4b4889,null))[_0xedd6('0x1d')](handleError(_0x4b4889,null));};exports['unpause']=function(_0x21a8ce,_0xf4d5cb){var _0x477950;return db['User']['find']({'where':{'id':_0x21a8ce[_0xedd6('0x5a')]['id']},'attributes':['id',_0xedd6('0x36'),_0xedd6('0x2a'),_0xedd6('0x9c'),_0xedd6('0x106'),_0xedd6('0x107'),_0xedd6('0x108'),_0xedd6('0x109'),_0xedd6('0x10a'),_0xedd6('0x10b'),'pauseType','lastPauseAt']})[_0xedd6('0x12')](handleEntityNotFound(_0xf4d5cb,null))[_0xedd6('0x12')](function(_0x2ef073){if(_0x2ef073){_0x477950=_0x2ef073;if(_0x21a8ce['body'][_0xedd6('0x9b')]&&!utils[_0xedd6('0x9e')](_0x21a8ce[_0xedd6('0x59')][_0xedd6('0x9b')])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x9f'));}switch(_0x21a8ce['body'][_0xedd6('0x9b')]){case _0xedd6('0xa8'):return respondWithRpcPromise(_0xedd6('0x101'),_0xedd6('0x10c'),{'id':_0x477950['id'],'name':_0x477950[_0xedd6('0x36')],'pause':![]})[_0xedd6('0x12')](function(){return db[_0xedd6('0xad')][_0xedd6('0x27')]({'paused':0x0},{'where':{'UserId':_0x477950['id']},'individualHooks':!![]});})['then'](function(){return db[_0xedd6('0xf5')][_0xedd6('0x35')]({'where':{'channel':_0x21a8ce[_0xedd6('0x59')]['channel'],'membername':_0x477950['name'],'type':_0xedd6('0x102'),'exitAt':null}});})[_0xedd6('0x12')](function(_0xf88efa){if(_0xf88efa){return _0xf88efa[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'data2':_0xedd6('0x10d')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x477950[_0xedd6('0x27')]({'voicePause':![]});});case _0xedd6('0x58'):case'chat':case'fax':case _0xedd6('0x4d'):case _0xedd6('0x4f'):case'openchannel':return db[_0xedd6('0xf5')][_0xedd6('0x35')]({'where':{'channel':_0x21a8ce[_0xedd6('0x59')][_0xedd6('0x9b')],'membername':_0x477950['name'],'type':_0xedd6('0x102'),'exitAt':null}})[_0xedd6('0x12')](function(_0x24c1b6){if(_0x24c1b6){return _0x24c1b6['update']({'exitAt':moment()[_0xedd6('0xea')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xedd6('0x10d')},{'individualHooks':!![]});}return null;})[_0xedd6('0x12')](function(){var _0x5c86a5={};_['set'](_0x5c86a5,util['format'](_0xedd6('0x10e'),_0x21a8ce[_0xedd6('0x59')][_0xedd6('0x9b')],_0xedd6('0x10f')),![]);return _0x477950['update'](_0x5c86a5);});default:return respondWithRpcPromise(_0xedd6('0x101'),_0xedd6('0x10c'),{'id':_0x477950['id'],'name':_0x477950[_0xedd6('0x36')],'pause':![]})[_0xedd6('0x12')](function(){return db[_0xedd6('0xad')][_0xedd6('0x27')]({'paused':0x0},{'where':{'UserId':_0x477950['id']}});})[_0xedd6('0x12')](function(){return db[_0xedd6('0xf5')][_0xedd6('0x46')]({'where':{'membername':_0x477950[_0xedd6('0x36')],'type':_0xedd6('0x102'),'exitAt':null}});})[_0xedd6('0x12')](function(_0x12a0ce){var _0x21245f=[];_0x12a0ce[_0xedd6('0xf7')](function(_0x32a6fd){_0x21245f['push'](_0x32a6fd[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'data2':_0xedd6('0x10d')}));});return BPromise[_0xedd6('0x50')](_0x21245f);})[_0xedd6('0x12')](function(){return _0x477950[_0xedd6('0x27')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xedd6('0x12')](respondWithResult(_0xf4d5cb,null))[_0xedd6('0x1d')](handleError(_0xf4d5cb,null));};exports[_0xedd6('0x110')]=function(_0x4bd5e2,_0xd0bd69){var _0x3d413c={};var _0x1b363f={};var _0x427808;var _0x451377;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4bd5e2[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xd0bd69,null))[_0xedd6('0x12')](function(_0x797c44){if(_0x797c44){_0x427808=_0x797c44;_0x1b363f[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x111')][_0xedd6('0x3c')]);_0x1b363f[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4bd5e2[_0xedd6('0x48')]);_0x1b363f[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x1b363f[_0xedd6('0x54')],_0x1b363f[_0xedd6('0x48')]);_0x3d413c[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x1b363f[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0x56')]));_0x3d413c[_0xedd6('0x44')]=_0x3d413c['attributes'][_0xedd6('0x4a')]?_0x3d413c[_0xedd6('0x44')]:_0x1b363f[_0xedd6('0x54')];_0x3d413c[_0xedd6('0xc6')]=qs['sort'](_0x4bd5e2[_0xedd6('0x48')]['sort']);_0x3d413c[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4bd5e2['query'],_0x1b363f['filters']));if(_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0x30')]){_0x3d413c[_0xedd6('0x41')]=_['merge'](_0x3d413c['where'],{'$or':_[_0xedd6('0x32')](_0x3d413c[_0xedd6('0x44')],function(_0x11957c){var _0x4f2192={};_0x4f2192[_0x11957c]={'$like':'%'+_0x4bd5e2['query'][_0xedd6('0x30')]+'%'};return _0x4f2192;})});}_0x3d413c=_[_0xedd6('0xc8')]({},_0x3d413c,_0x4bd5e2[_0xedd6('0xc9')]);return _0x427808[_0xedd6('0x110')](_0x3d413c);}})['then'](function(_0x30c736){if(_0x30c736){_0x451377=_0x30c736[_0xedd6('0x4a')];if(!_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x3d413c['limit']=qs[_0xedd6('0x24')](_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0x24')]);_0x3d413c[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4bd5e2[_0xedd6('0x48')]['offset']);}return _0x427808[_0xedd6('0x110')](_0x3d413c);}})[_0xedd6('0x12')](function(_0xf57399){if(_0xf57399){return _0xf57399?{'count':_0x451377,'rows':_0xf57399}:null;}})[_0xedd6('0x12')](respondWithResult(_0xd0bd69,null))[_0xedd6('0x1d')](handleError(_0xd0bd69,null));};exports[_0xedd6('0x112')]=function(_0x5226b5,_0x282f64){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x5226b5[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x282f64,null))['then'](function(_0x3f5a84){if(_0x3f5a84){var _0x444c62=_0x3f5a84['get']({'plain':!![]});return _0x3f5a84['addTeams'](_0x5226b5[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x5226b5[_0xedd6('0x59')],['ids','id'])||{})[_0xedd6('0x12')](function(){for(var _0x2a223c=0x0;_0x2a223c<_0x5226b5['body'][_0xedd6('0x5d')]['length'];_0x2a223c++){var _0x5a2ef7=[];db['Team'][_0xedd6('0x94')]({'where':{'id':_0x5226b5[_0xedd6('0x59')][_0xedd6('0x5d')][_0x2a223c]}})[_0xedd6('0x12')](function(_0x5337b9){_0x5a2ef7['push'](_0x5337b9[_0xedd6('0x113')]()[_0xedd6('0x12')](function(_0x1b3425){for(var _0x7d607d=0x0;_0x7d607d<_0x1b3425['length'];_0x7d607d++){_0x1b3425[_0x7d607d][_0xedd6('0x114')](_0xedd6('0x9b'),'Voice');}return _0x1b3425;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9[_0xedd6('0x115')]()[_0xedd6('0x12')](function(_0x1daf1e){for(var _0x45755e=0x0;_0x45755e<_0x1daf1e['length'];_0x45755e++){_0x1daf1e[_0x45755e][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x116'));}return _0x1daf1e;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9[_0xedd6('0x117')]()['then'](function(_0xa2a320){for(var _0x172716=0x0;_0x172716<_0xa2a320[_0xedd6('0x4a')];_0x172716++){_0xa2a320[_0x172716][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x118'));}return _0xa2a320;}));_0x5a2ef7['push'](_0x5337b9[_0xedd6('0x119')]()[_0xedd6('0x12')](function(_0x5eb552){for(var _0x482e3d=0x0;_0x482e3d<_0x5eb552['length'];_0x482e3d++){_0x5eb552[_0x482e3d][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x11a'));}return _0x5eb552;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9[_0xedd6('0x11b')]()[_0xedd6('0x12')](function(_0x2931af){for(var _0x56578f=0x0;_0x56578f<_0x2931af['length'];_0x56578f++){_0x2931af[_0x56578f][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x11c'));}return _0x2931af;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9['getFaxQueues']()[_0xedd6('0x12')](function(_0x58e375){for(var _0x2d7355=0x0;_0x2d7355<_0x58e375[_0xedd6('0x4a')];_0x2d7355++){_0x58e375[_0x2d7355]['setDataValue'](_0xedd6('0x9b'),_0xedd6('0x11d'));}return _0x58e375;}));_0x5a2ef7['push'](_0x5337b9['getOpenchannelQueues']()[_0xedd6('0x12')](function(_0x531725){for(var _0x20b93b=0x0;_0x20b93b<_0x531725[_0xedd6('0x4a')];_0x20b93b++){_0x531725[_0x20b93b][_0xedd6('0x114')]('channel',_0xedd6('0x11e'));}return _0x531725;}));return BPromise[_0xedd6('0x50')](_0x5a2ef7);})['then'](function(_0x4bd401){var _0x1f2cc3=_[_0xedd6('0x11f')](_0x4bd401);_0x5a2ef7=[];return db[_0xedd6('0x66')]['transaction'](function(_0x1bc610){for(var _0x476bba=0x0;_0x476bba<_0x1f2cc3[_0xedd6('0x4a')];_0x476bba++){_0x5a2ef7[_0xedd6('0x45')](_0x1f2cc3[_0x476bba]['addAgent'](_0x444c62['id']),{'transaction':_0x1bc610});}return BPromise[_0xedd6('0x50')](_0x5a2ef7)[_0xedd6('0x12')](function(){if(_0x444c62[_0xedd6('0xaa')]){return BPromise[_0xedd6('0x88')](_[_0xedd6('0x30')](_0x1f2cc3,function(_0x194f3b){return _0x194f3b['getDataValue'](_0xedd6('0x9b'))===_0xedd6('0x120');}),function(_0x3ae4eb){return db['UserVoiceQueueRt']['upsert']({'membername':_0x444c62[_0xedd6('0x36')],'UserId':_0x444c62['id'],'queue_name':_0x3ae4eb['name'],'VoiceQueueId':_0x3ae4eb['id'],'interface':_[_0xedd6('0x64')](_0x444c62['interface'])?util[_0xedd6('0xea')]('SIP/%s',_0x444c62[_0xedd6('0x36')]):_0x444c62[_0xedd6('0x9d')],'paused':_0x444c62[_0xedd6('0x9c')]||![],'penalty':_0x444c62['penalty']},{'transaction':_0x1bc610});});}else{return;}})[_0xedd6('0x12')](function(){for(var _0x4e5ce1=0x0;_0x4e5ce1<_0x1f2cc3[_0xedd6('0x4a')];_0x4e5ce1++){var _0x325f6b=_0x1f2cc3[_0x4e5ce1]['getDataValue']('channel');var _0x29b7b5=_0x325f6b+_0xedd6('0xa5');socket[_0xedd6('0xa6')](_0xedd6('0x7c')+_0x325f6b+_0xedd6('0xa7'),{'UserId':_0x444c62['id'],['queueField']:_0x1f2cc3[_0x4e5ce1]['id']});}});});});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x282f64,null))['catch'](handleError(_0x282f64,null));};exports[_0xedd6('0x121')]=function(_0x135ff8,_0x26c844){return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x135ff8['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x26c844,null))[_0xedd6('0x12')](function(_0x1045de){if(_0x1045de){var _0xc617=_0x1045de['get']({'plain':!![]});var _0x6541dc=_0x135ff8[_0xedd6('0x48')][_0xedd6('0x5d')];return _0x1045de[_0xedd6('0x121')](_0x6541dc)[_0xedd6('0x12')](function(){for(var _0x966626=0x0;_0x966626<_0x6541dc[_0xedd6('0x4a')];_0x966626++){var _0x3d5391=[];db[_0xedd6('0x111')]['findOne']({'where':{'id':_0x6541dc[_0x966626]}})[_0xedd6('0x12')](function(_0x41b53d){_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x113')]()['then'](function(_0x39536f){for(var _0x4636c9=0x0;_0x4636c9<_0x39536f[_0xedd6('0x4a')];_0x4636c9++){_0x39536f[_0x4636c9][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x120'));}return _0x39536f;}));_0x3d5391['push'](_0x41b53d[_0xedd6('0x115')]()[_0xedd6('0x12')](function(_0x33d356){for(var _0x4c3395=0x0;_0x4c3395<_0x33d356['length'];_0x4c3395++){_0x33d356[_0x4c3395][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x116'));}return _0x33d356;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x117')]()[_0xedd6('0x12')](function(_0x19955d){for(var _0x459696=0x0;_0x459696<_0x19955d['length'];_0x459696++){_0x19955d[_0x459696][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x118'));}return _0x19955d;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x119')]()[_0xedd6('0x12')](function(_0x38c7ae){for(var _0xf3538=0x0;_0xf3538<_0x38c7ae[_0xedd6('0x4a')];_0xf3538++){_0x38c7ae[_0xf3538][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x11a'));}return _0x38c7ae;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x11b')]()[_0xedd6('0x12')](function(_0x107ec9){for(var _0x2021f0=0x0;_0x2021f0<_0x107ec9['length'];_0x2021f0++){_0x107ec9[_0x2021f0]['setDataValue'](_0xedd6('0x9b'),'Whatsapp');}return _0x107ec9;}));_0x3d5391['push'](_0x41b53d[_0xedd6('0x122')]()['then'](function(_0x1a7e76){for(var _0x2b219d=0x0;_0x2b219d<_0x1a7e76[_0xedd6('0x4a')];_0x2b219d++){_0x1a7e76[_0x2b219d][_0xedd6('0x114')](_0xedd6('0x9b'),'Fax');}return _0x1a7e76;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x123')]()[_0xedd6('0x12')](function(_0x85910e){for(var _0x3ebb90=0x0;_0x3ebb90<_0x85910e[_0xedd6('0x4a')];_0x3ebb90++){_0x85910e[_0x3ebb90]['setDataValue'](_0xedd6('0x9b'),'Openchannel');}return _0x85910e;}));return BPromise[_0xedd6('0x50')](_0x3d5391);})[_0xedd6('0x12')](function(_0xd701c8){var _0x576951=_['flatten'](_0xd701c8);_0x3d5391=[];return db[_0xedd6('0x66')]['transaction'](function(_0x32cbbe){for(var _0x2d51b4=0x0;_0x2d51b4<_0x576951[_0xedd6('0x4a')];_0x2d51b4++){_0x3d5391[_0xedd6('0x45')](_0x576951[_0x2d51b4][_0xedd6('0x124')](_0xc617['id']),{'transaction':_0x32cbbe});}return BPromise[_0xedd6('0x50')](_0x3d5391)[_0xedd6('0x12')](function(){if(_0xc617['online']){return BPromise[_0xedd6('0x88')](_['filter'](_0x576951,function(_0x41ca76){return _0x41ca76[_0xedd6('0x125')](_0xedd6('0x9b'))===_0xedd6('0x120');}),function(_0x5d937c){return db[_0xedd6('0xad')][_0xedd6('0x28')]({'where':{'VoiceQueueId':_0x5d937c['id'],'UserId':_0xc617['id']},'transaction':_0x32cbbe});});}else{return;}})[_0xedd6('0x12')](function(){for(var _0xd7d87c=0x0;_0xd7d87c<_0x576951[_0xedd6('0x4a')];_0xd7d87c++){var _0x34310f=_0x576951[_0xd7d87c]['getDataValue'](_0xedd6('0x9b'));var _0x30f158=_0x34310f+_0xedd6('0xa5');socket[_0xedd6('0xa6')]('user'+_0x34310f+_0xedd6('0xac'),{'UserId':_0xc617['id'],['queueField']:_0x576951[_0xd7d87c]['id']});}});});});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x26c844,null))[_0xedd6('0x1d')](handleError(_0x26c844,null));};exports['getLists']=function(_0x541ddf,_0x5bbfd3){var _0x1eeab1={};var _0x1bf030={};var _0xc6d090;var _0x2eee41;return db['User']['findOne']({'where':{'id':_0x541ddf[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5bbfd3,null))[_0xedd6('0x12')](function(_0x52a22f){if(_0x52a22f){_0xc6d090=_0x52a22f;_0x1bf030[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xcc')][_0xedd6('0x3c')]);_0x1bf030[_0xedd6('0x48')]=_['keys'](_0x541ddf[_0xedd6('0x48')]);_0x1bf030[_0xedd6('0x53')]=_['intersection'](_0x1bf030[_0xedd6('0x54')],_0x1bf030['query']);_0x1eeab1[_0xedd6('0x44')]=_['intersection'](_0x1bf030[_0xedd6('0x54')],qs['fields'](_0x541ddf['query'][_0xedd6('0x56')]));_0x1eeab1['attributes']=_0x1eeab1[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x1eeab1['attributes']:_0x1bf030['model'];_0x1eeab1[_0xedd6('0xc6')]=qs['sort'](_0x541ddf[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x1eeab1[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x541ddf['query'],_0x1bf030['filters']));if(_0x541ddf[_0xedd6('0x48')][_0xedd6('0x30')]){_0x1eeab1[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x1eeab1[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x1eeab1[_0xedd6('0x44')],function(_0x50fa88){var _0x5d10bb={};_0x5d10bb[_0x50fa88]={'$like':'%'+_0x541ddf[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x5d10bb;})});}_0x1eeab1=_[_0xedd6('0xc8')]({},_0x1eeab1,_0x541ddf['options']);return _0xc6d090[_0xedd6('0x126')](_0x1eeab1);}})[_0xedd6('0x12')](function(_0x522700){if(_0x522700){_0x2eee41=_0x522700[_0xedd6('0x4a')];if(!_0x541ddf[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x1eeab1['limit']=qs[_0xedd6('0x24')](_0x541ddf['query']['limit']);_0x1eeab1['offset']=qs['offset'](_0x541ddf['query'][_0xedd6('0x22')]);}return _0xc6d090[_0xedd6('0x126')](_0x1eeab1);}})[_0xedd6('0x12')](function(_0x33fcf2){if(_0x33fcf2){return _0x33fcf2?{'count':_0x2eee41,'rows':_0x33fcf2}:null;}})[_0xedd6('0x12')](respondWithResult(_0x5bbfd3,null))[_0xedd6('0x1d')](handleError(_0x5bbfd3,null));};exports[_0xedd6('0x127')]=function(_0x35ab98,_0x15eb48){var _0x23db95={};var _0x127a48={};var _0x5c5b40;var _0x244c26;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x35ab98[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x15eb48,null))[_0xedd6('0x12')](function(_0x536f2a){if(_0x536f2a){_0x5c5b40=_0x536f2a;_0x127a48[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x3b')][_0xedd6('0x3c')]);_0x127a48[_0xedd6('0x48')]=_['keys'](_0x35ab98[_0xedd6('0x48')]);_0x127a48['filters']=_[_0xedd6('0x55')](_0x127a48[_0xedd6('0x54')],_0x127a48[_0xedd6('0x48')]);_0x23db95[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x127a48[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x35ab98[_0xedd6('0x48')]['fields']));_0x23db95[_0xedd6('0x44')]=_0x23db95[_0xedd6('0x44')]['length']?_0x23db95['attributes']:_0x127a48[_0xedd6('0x54')];_0x23db95[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x35ab98['query'][_0xedd6('0xc7')]);_0x23db95[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x35ab98[_0xedd6('0x48')],_0x127a48['filters']));if(_0x35ab98[_0xedd6('0x48')][_0xedd6('0x30')]){_0x23db95[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x23db95[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x23db95[_0xedd6('0x44')],function(_0x236daf){var _0x436815={};_0x436815[_0x236daf]={'$like':'%'+_0x35ab98[_0xedd6('0x48')]['filter']+'%'};return _0x436815;})});}_0x23db95['model']=db[_0xedd6('0x3b')];_0x23db95['as']=_0xedd6('0x2c');_0x23db95=_[_0xedd6('0xc8')]({},_0x23db95,_0x35ab98[_0xedd6('0xc9')]);return _0x5c5b40[_0xedd6('0x113')]({'include':[_0x23db95]});}})['then'](function(_0x5641cf){if(_0x5641cf){var _0x18c3f0={},_0x5849a8=[],_0x53b6dc=0x0;for(var _0x1ef147=0x0;_0x1ef147<_0x5641cf[_0xedd6('0x4a')];_0x1ef147+=0x1){for(var _0x733544=0x0,_0x4db584;_0x733544<_0x5641cf[_0x1ef147]['Agents'][_0xedd6('0x4a')];_0x733544+=0x1){_0x4db584=_0x5641cf[_0x1ef147]['Agents'][_0x733544][_0xedd6('0x29')]({'plain':!![]});_0x18c3f0[_0x4db584['id']]=_0x4db584;}}_0x18c3f0=_[_0xedd6('0x128')](_0x18c3f0);for(var _0x18bc63=qs[_0xedd6('0x22')](_0x35ab98[_0xedd6('0x48')][_0xedd6('0x22')]);_0x18bc63<_0x18c3f0[_0xedd6('0x4a')]&&_0x5849a8['length']<qs[_0xedd6('0x24')](_0x35ab98[_0xedd6('0x48')][_0xedd6('0x24')]);_0x18bc63+=0x1){if(_0x18c3f0[_0x18bc63]){_0x5849a8['push'](_0x18c3f0[_0x18bc63]);}}return{'count':_0x18c3f0[_0xedd6('0x4a')],'rows':_0x5849a8};}})[_0xedd6('0x12')](respondWithResult(_0x15eb48,null))[_0xedd6('0x1d')](handleError(_0x15eb48,null));};exports[_0xedd6('0x28')]=function(_0x3d9f74,_0x384668){if(_0x3d9f74[_0xedd6('0x7c')]['id']==_0x3d9f74[_0xedd6('0x5a')]['id']){return _0x384668[_0xedd6('0x20')](0x1f4)[_0xedd6('0x39')]({'message':_0xedd6('0x129')});}return db['User'][_0xedd6('0x35')]({'where':{'id':_0x3d9f74[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x384668,null))[_0xedd6('0x12')](removeEntity(_0x384668,null))[_0xedd6('0x1d')](handleError(_0x384668,null));};exports[_0xedd6('0x12a')]=function(_0xc9e635,_0x5ddaf3){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0xc9e635[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5ddaf3,null))['then'](function(_0x217115){if(_0x217115){return _0x217115[_0xedd6('0x12a')](_0xc9e635['body'][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0xc9e635[_0xedd6('0x59')],['ids','id'])||{})[_0xedd6('0xa3')](function(){for(var _0x26aeff=0x0;_0x26aeff<_0xc9e635[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x26aeff+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x12b'),{'ChatInteractionId':Number(_0xc9e635[_0xedd6('0x59')][_0xedd6('0x5d')][_0x26aeff]),'UserId':Number(_0xc9e635['params']['id'])});}return _0xc9e635[_0xedd6('0x59')][_0xedd6('0x5d')];});}})['then'](respondWithResult(_0x5ddaf3,null))[_0xedd6('0x1d')](handleError(_0x5ddaf3,null));};exports[_0xedd6('0x12c')]=function(_0x3fe4b0,_0xea9123){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x3fe4b0[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xea9123,null))['then'](function(_0x157cd3){if(_0x157cd3){return _0x157cd3[_0xedd6('0x12c')](_0x3fe4b0[_0xedd6('0x48')]['ids'])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x3fe4b0[_0xedd6('0x48')][_0xedd6('0x5d')])){for(var _0x55da74=0x0;_0x55da74<_0x3fe4b0[_0xedd6('0x48')]['ids'][_0xedd6('0x4a')];_0x55da74+=0x1){socket['emit'](_0xedd6('0x12d'),{'ChatInteractionId':Number(_0x3fe4b0[_0xedd6('0x48')][_0xedd6('0x5d')][_0x55da74]),'UserId':Number(_0x3fe4b0[_0xedd6('0x5a')]['id'])});}}else{socket[_0xedd6('0xa6')](_0xedd6('0x12d'),{'ChatInteractionId':Number(_0x3fe4b0[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0x3fe4b0['params']['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0xea9123,null))[_0xedd6('0x1d')](handleError(_0xea9123,null));};exports[_0xedd6('0x12e')]=function(_0x29517a,_0x3a4c91){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x29517a[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x3a4c91,null))[_0xedd6('0x12')](function(_0x7466fc){if(_0x7466fc){return _0x7466fc[_0xedd6('0x12e')](_0x29517a[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x29517a[_0xedd6('0x59')],['ids','id'])||{})[_0xedd6('0xa3')](function(){for(var _0x1e0ddb=0x0;_0x1e0ddb<_0x29517a['body']['ids'][_0xedd6('0x4a')];_0x1e0ddb+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x12f'),{'MailInteractionId':Number(_0x29517a[_0xedd6('0x59')]['ids'][_0x1e0ddb]),'UserId':Number(_0x29517a[_0xedd6('0x5a')]['id'])});}return _0x29517a[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x3a4c91,null))['catch'](handleError(_0x3a4c91,null));};exports[_0xedd6('0x130')]=function(_0x30d8a7,_0x26aadc){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x30d8a7[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x26aadc,null))[_0xedd6('0x12')](function(_0x26706c){if(_0x26706c){return _0x26706c[_0xedd6('0x130')](_0x30d8a7['query'][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x30d8a7[_0xedd6('0x48')]['ids'])){for(var _0x4a00dd=0x0;_0x4a00dd<_0x30d8a7[_0xedd6('0x48')]['ids'][_0xedd6('0x4a')];_0x4a00dd+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x131'),{'MailInteractionId':Number(_0x30d8a7[_0xedd6('0x48')][_0xedd6('0x5d')][_0x4a00dd]),'UserId':Number(_0x30d8a7[_0xedd6('0x5a')]['id'])});}}else{socket[_0xedd6('0xa6')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x30d8a7[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0x30d8a7['params']['id'])});}});}})['then'](respondWithStatusCode(_0x26aadc,null))[_0xedd6('0x1d')](handleError(_0x26aadc,null));};exports['addFaxInteractions']=function(_0x2bc5eb,_0x2243a4){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x2bc5eb[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2243a4,null))[_0xedd6('0x12')](function(_0x25367c){if(_0x25367c){return _0x25367c['addFaxInteractions'](_0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x2bc5eb[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})['spread'](function(){for(var _0x826660=0x0;_0x826660<_0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x826660+=0x1){socket['emit']('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')][_0x826660]),'UserId':Number(_0x2bc5eb['params']['id'])});}return _0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x2243a4,null))[_0xedd6('0x1d')](handleError(_0x2243a4,null));};exports['removeFaxInteractions']=function(_0x39d0ce,_0x482146){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x39d0ce['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x482146,null))[_0xedd6('0x12')](function(_0x501a28){if(_0x501a28){return _0x501a28['removeFaxInteractions'](_0x39d0ce[_0xedd6('0x48')][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x39d0ce['query'][_0xedd6('0x5d')])){for(var _0x1d10e6=0x0;_0x1d10e6<_0x39d0ce['query']['ids'][_0xedd6('0x4a')];_0x1d10e6+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x132'),{'FaxInteractionId':Number(_0x39d0ce[_0xedd6('0x48')][_0xedd6('0x5d')][_0x1d10e6]),'UserId':Number(_0x39d0ce[_0xedd6('0x5a')]['id'])});}}else{socket[_0xedd6('0xa6')](_0xedd6('0x132'),{'FaxInteractionId':Number(_0x39d0ce[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0x39d0ce['params']['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x482146,null))['catch'](handleError(_0x482146,null));};exports[_0xedd6('0x133')]=function(_0x24c0ca,_0x396c1e){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x24c0ca['params']['id']}})['then'](handleEntityNotFound(_0x396c1e,null))[_0xedd6('0x12')](function(_0xa7d603){if(_0xa7d603){return _0xa7d603['addSmsInteractions'](_0x24c0ca['body'][_0xedd6('0x5d')],_['omit'](_0x24c0ca[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})[_0xedd6('0xa3')](function(){for(var _0x49269f=0x0;_0x49269f<_0x24c0ca[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x49269f+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x134'),{'SmsInteractionId':Number(_0x24c0ca[_0xedd6('0x59')][_0xedd6('0x5d')][_0x49269f]),'UserId':Number(_0x24c0ca[_0xedd6('0x5a')]['id'])});}return _0x24c0ca[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x396c1e,null))[_0xedd6('0x1d')](handleError(_0x396c1e,null));};exports[_0xedd6('0x135')]=function(_0x565a3d,_0x6d982f){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x565a3d[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x6d982f,null))[_0xedd6('0x12')](function(_0x3ae806){if(_0x3ae806){return _0x3ae806[_0xedd6('0x135')](_0x565a3d[_0xedd6('0x48')][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x565a3d['query'][_0xedd6('0x5d')])){for(var _0xedac2c=0x0;_0xedac2c<_0x565a3d['query']['ids'][_0xedd6('0x4a')];_0xedac2c+=0x1){socket[_0xedd6('0xa6')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x565a3d['query']['ids'][_0xedac2c]),'UserId':Number(_0x565a3d[_0xedd6('0x5a')]['id'])});}}else{socket['emit'](_0xedd6('0x136'),{'SmsInteractionId':Number(_0x565a3d[_0xedd6('0x48')]['ids']),'UserId':Number(_0x565a3d[_0xedd6('0x5a')]['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x6d982f,null))[_0xedd6('0x1d')](handleError(_0x6d982f,null));};exports[_0xedd6('0x137')]=function(_0x4ff484,_0x5cccac){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x4ff484[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5cccac,null))[_0xedd6('0x12')](function(_0x1438c0){if(_0x1438c0){return _0x1438c0[_0xedd6('0x137')](_0x4ff484[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x4ff484[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})['spread'](function(){for(var _0x2cc119=0x0;_0x2cc119<_0x4ff484[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x2cc119+=0x1){socket['emit']('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x4ff484[_0xedd6('0x59')]['ids'][_0x2cc119]),'UserId':Number(_0x4ff484[_0xedd6('0x5a')]['id'])});}return _0x4ff484[_0xedd6('0x59')][_0xedd6('0x5d')];});}})['then'](respondWithResult(_0x5cccac,null))[_0xedd6('0x1d')](handleError(_0x5cccac,null));};exports[_0xedd6('0x138')]=function(_0xeee825,_0x58923a){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0xeee825[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x58923a,null))[_0xedd6('0x12')](function(_0x42e00e){if(_0x42e00e){return _0x42e00e[_0xedd6('0x138')](_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')])){for(var _0x5312b8=0x0;_0x5312b8<_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x5312b8+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x139'),{'OpenchannelInteractionId':Number(_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')][_0x5312b8]),'UserId':Number(_0xeee825[_0xedd6('0x5a')]['id'])});}}else{socket['emit'](_0xedd6('0x139'),{'OpenchannelInteractionId':Number(_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0xeee825[_0xedd6('0x5a')]['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x58923a,null))[_0xedd6('0x1d')](handleError(_0x58923a,null));};exports[_0xedd6('0x13a')]=function(_0x43af1b,_0x428b3c){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x43af1b[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x428b3c,null))['then'](function(_0xeca069){if(_0xeca069){return _0xeca069[_0xedd6('0x13a')](_0x43af1b[_0xedd6('0x59')]['ids'],_[_0xedd6('0x5e')](_0x43af1b[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})[_0xedd6('0xa3')](function(){for(var _0x4ad2a9=0x0;_0x4ad2a9<_0x43af1b['body'][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x4ad2a9+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x13b'),{'WhatsappInteractionId':Number(_0x43af1b[_0xedd6('0x59')][_0xedd6('0x5d')][_0x4ad2a9]),'UserId':Number(_0x43af1b[_0xedd6('0x5a')]['id'])});}return _0x43af1b[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x428b3c,null))['catch'](handleError(_0x428b3c,null));};exports[_0xedd6('0x13c')]=function(_0x16d746,_0x46ccdb){return db['User'][_0xedd6('0x35')]({'where':{'id':_0x16d746[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x46ccdb,null))['then'](function(_0x5a91de){if(_0x5a91de){return _0x5a91de[_0xedd6('0x13c')](_0x16d746[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x46ccdb,null))[_0xedd6('0x1d')](handleError(_0x46ccdb,null));};exports[_0xedd6('0x13d')]=function(_0xdd34c4,_0x4cc640){var _0x4759d5={};var _0x2234b2={};var _0x43eca3;var _0x181851;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0xdd34c4['params']['id']}})['then'](handleEntityNotFound(_0x4cc640,null))['then'](function(_0xc17bcc){if(_0xc17bcc){_0x43eca3=_0xc17bcc;_0x2234b2[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x13e')][_0xedd6('0x3c')]);_0x2234b2['query']=_[_0xedd6('0x52')](_0xdd34c4[_0xedd6('0x48')]);_0x2234b2[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x2234b2[_0xedd6('0x54')],_0x2234b2[_0xedd6('0x48')]);_0x4759d5['attributes']=_['intersection'](_0x2234b2['model'],qs[_0xedd6('0x56')](_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x56')]));_0x4759d5[_0xedd6('0x44')]=_0x4759d5[_0xedd6('0x44')]['length']?_0x4759d5[_0xedd6('0x44')]:_0x2234b2[_0xedd6('0x54')];_0x4759d5['order']=qs[_0xedd6('0xc7')](_0xdd34c4[_0xedd6('0x48')]['sort']);_0x4759d5[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0xdd34c4[_0xedd6('0x48')],_0x2234b2[_0xedd6('0x53')]));if(_0xdd34c4['query'][_0xedd6('0x30')]){_0x4759d5[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x4759d5[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x4759d5[_0xedd6('0x44')],function(_0x176f70){var _0x55319a={};_0x55319a[_0x176f70]={'$like':'%'+_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x55319a;})});}_0x4759d5=_[_0xedd6('0xc8')]({},_0x4759d5,_0xdd34c4[_0xedd6('0xc9')]);return _0x43eca3[_0xedd6('0x13d')](_0x4759d5);}})[_0xedd6('0x12')](function(_0x51171c){if(_0x51171c){_0x181851=_0x51171c[_0xedd6('0x4a')];if(!_0xdd34c4[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x4759d5[_0xedd6('0x24')]=qs['limit'](_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x24')]);_0x4759d5['offset']=qs[_0xedd6('0x22')](_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x43eca3['getVoicePrefixes'](_0x4759d5);}})['then'](function(_0x1ed156){if(_0x1ed156){return _0x1ed156?{'count':_0x181851,'rows':_0x1ed156}:null;}})[_0xedd6('0x12')](respondWithResult(_0x4cc640,null))[_0xedd6('0x1d')](handleError(_0x4cc640,null));};exports[_0xedd6('0x13f')]=function(_0x27b56e,_0x480af9){var _0x54adf6={};var _0x3d6841={};var _0x1822d6;var _0x4a45d9;return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x27b56e[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x480af9,null))['then'](function(_0x2e4b5d){if(_0x2e4b5d){_0x1822d6=_0x2e4b5d;_0x3d6841[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x140')][_0xedd6('0x3c')]);_0x3d6841[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x27b56e[_0xedd6('0x48')]);_0x3d6841[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x3d6841[_0xedd6('0x54')],_0x3d6841['query']);_0x54adf6['attributes']=_[_0xedd6('0x55')](_0x3d6841[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x27b56e[_0xedd6('0x48')][_0xedd6('0x56')]));_0x54adf6['attributes']=_0x54adf6[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x54adf6['attributes']:_0x3d6841['model'];_0x54adf6['order']=qs[_0xedd6('0xc7')](_0x27b56e['query'][_0xedd6('0xc7')]);_0x54adf6[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x27b56e['query'],_0x3d6841[_0xedd6('0x53')]));if(_0x27b56e[_0xedd6('0x48')][_0xedd6('0x30')]){_0x54adf6[_0xedd6('0x41')]=_['merge'](_0x54adf6[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x54adf6['attributes'],function(_0xedc7ad){var _0x3bce33={};_0x3bce33[_0xedc7ad]={'$like':'%'+_0x27b56e['query'][_0xedd6('0x30')]+'%'};return _0x3bce33;})});}_0x54adf6=_['merge']({},_0x54adf6,_0x27b56e[_0xedd6('0xc9')]);return _0x1822d6['getFaxAccounts'](_0x54adf6);}})[_0xedd6('0x12')](function(_0x3520b3){if(_0x3520b3){_0x4a45d9=_0x3520b3[_0xedd6('0x4a')];if(!_0x27b56e['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x54adf6['limit']=qs[_0xedd6('0x24')](_0x27b56e['query'][_0xedd6('0x24')]);_0x54adf6['offset']=qs[_0xedd6('0x22')](_0x27b56e[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x1822d6[_0xedd6('0x13f')](_0x54adf6);}})[_0xedd6('0x12')](function(_0x8beea3){if(_0x8beea3){return _0x8beea3?{'count':_0x4a45d9,'rows':_0x8beea3}:null;}})['then'](respondWithResult(_0x480af9,null))[_0xedd6('0x1d')](handleError(_0x480af9,null));};exports[_0xedd6('0x141')]=function(_0x3f3a6b,_0x1615dc){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x3f3a6b[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1615dc,null))['then'](function(_0x200237){if(_0x200237){return _0x200237[_0xedd6('0x141')](_0x3f3a6b[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x3f3a6b['body'],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x1615dc,null))[_0xedd6('0x1d')](handleError(_0x1615dc,null));};exports[_0xedd6('0x142')]=function(_0x48dc8e,_0xece83){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x48dc8e[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xece83,null))['then'](function(_0x58ede0){if(_0x58ede0){return _0x58ede0['removeFaxAccounts'](_0x48dc8e['query'][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0xece83,null))[_0xedd6('0x1d')](handleError(_0xece83,null));};exports[_0xedd6('0x143')]=function(_0x16cf32,_0x4fc61e){var _0x5dbf57={};var _0x32b6ad={};var _0x23f6a1;var _0xec690a;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x16cf32[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x4fc61e,null))[_0xedd6('0x12')](function(_0x75af23){if(_0x75af23){_0x23f6a1=_0x75af23;_0x32b6ad[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x144')][_0xedd6('0x3c')]);_0x32b6ad[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x16cf32['query']);_0x32b6ad[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x32b6ad[_0xedd6('0x54')],_0x32b6ad[_0xedd6('0x48')]);_0x5dbf57[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x32b6ad[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x16cf32[_0xedd6('0x48')][_0xedd6('0x56')]));_0x5dbf57[_0xedd6('0x44')]=_0x5dbf57['attributes'][_0xedd6('0x4a')]?_0x5dbf57[_0xedd6('0x44')]:_0x32b6ad[_0xedd6('0x54')];_0x5dbf57[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x16cf32[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x5dbf57[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x16cf32['query'],_0x32b6ad[_0xedd6('0x53')]));if(_0x16cf32['query'][_0xedd6('0x30')]){_0x5dbf57[_0xedd6('0x41')]=_['merge'](_0x5dbf57[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x5dbf57[_0xedd6('0x44')],function(_0xfe3850){var _0x5ce6cd={};_0x5ce6cd[_0xfe3850]={'$like':'%'+_0x16cf32['query'][_0xedd6('0x30')]+'%'};return _0x5ce6cd;})});}_0x5dbf57=_[_0xedd6('0xc8')]({},_0x5dbf57,_0x16cf32[_0xedd6('0xc9')]);return _0x23f6a1[_0xedd6('0x143')](_0x5dbf57);}})['then'](function(_0x4667c1){if(_0x4667c1){_0xec690a=_0x4667c1[_0xedd6('0x4a')];if(!_0x16cf32[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x5dbf57['limit']=qs[_0xedd6('0x24')](_0x16cf32['query'][_0xedd6('0x24')]);_0x5dbf57['offset']=qs[_0xedd6('0x22')](_0x16cf32[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x23f6a1[_0xedd6('0x143')](_0x5dbf57);}})[_0xedd6('0x12')](function(_0x46e3d6){if(_0x46e3d6){return _0x46e3d6?{'count':_0xec690a,'rows':_0x46e3d6}:null;}})['then'](respondWithResult(_0x4fc61e,null))[_0xedd6('0x1d')](handleError(_0x4fc61e,null));};exports[_0xedd6('0x145')]=function(_0x21d1d4,_0xf228f0){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x21d1d4['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xf228f0,null))['then'](function(_0x31b3e3){if(_0x31b3e3){return _0x31b3e3[_0xedd6('0x145')](_0x21d1d4[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x21d1d4['body'],[_0xedd6('0x5d'),'id'])||{});}})['then'](respondWithResult(_0xf228f0,null))[_0xedd6('0x1d')](handleError(_0xf228f0,null));};exports[_0xedd6('0x146')]=function(_0x164824,_0x1e953b){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x164824['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1e953b,null))[_0xedd6('0x12')](function(_0xf76941){if(_0xf76941){return _0xf76941['removeMailAccounts'](_0x164824[_0xedd6('0x48')]['ids']);}})[_0xedd6('0x12')](respondWithStatusCode(_0x1e953b,null))[_0xedd6('0x1d')](handleError(_0x1e953b,null));};exports[_0xedd6('0x147')]=function(_0x4bf150,_0x4c1400){var _0x1cb8f4={};var _0x1f54ac={};var _0x712b93;var _0x45a901;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4bf150[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x4c1400,null))[_0xedd6('0x12')](function(_0x5c7d79){if(_0x5c7d79){_0x712b93=_0x5c7d79;_0x1f54ac[_0xedd6('0x54')]=_[_0xedd6('0x52')](db['OpenchannelAccount'][_0xedd6('0x3c')]);_0x1f54ac[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4bf150[_0xedd6('0x48')]);_0x1f54ac['filters']=_[_0xedd6('0x55')](_0x1f54ac['model'],_0x1f54ac[_0xedd6('0x48')]);_0x1cb8f4[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x1f54ac[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4bf150['query'][_0xedd6('0x56')]));_0x1cb8f4[_0xedd6('0x44')]=_0x1cb8f4[_0xedd6('0x44')]['length']?_0x1cb8f4[_0xedd6('0x44')]:_0x1f54ac[_0xedd6('0x54')];_0x1cb8f4[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x4bf150['query'][_0xedd6('0xc7')]);_0x1cb8f4[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4bf150['query'],_0x1f54ac['filters']));if(_0x4bf150[_0xedd6('0x48')]['filter']){_0x1cb8f4[_0xedd6('0x41')]=_['merge'](_0x1cb8f4['where'],{'$or':_[_0xedd6('0x32')](_0x1cb8f4[_0xedd6('0x44')],function(_0x547ec2){var _0x57ac2e={};_0x57ac2e[_0x547ec2]={'$like':'%'+_0x4bf150['query'][_0xedd6('0x30')]+'%'};return _0x57ac2e;})});}_0x1cb8f4=_[_0xedd6('0xc8')]({},_0x1cb8f4,_0x4bf150[_0xedd6('0xc9')]);return _0x712b93['getOpenchannelAccounts'](_0x1cb8f4);}})['then'](function(_0x40adff){if(_0x40adff){_0x45a901=_0x40adff['length'];if(!_0x4bf150[_0xedd6('0x48')][_0xedd6('0xcb')]('nolimit')){_0x1cb8f4[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x4bf150[_0xedd6('0x48')][_0xedd6('0x24')]);_0x1cb8f4[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4bf150['query'][_0xedd6('0x22')]);}return _0x712b93[_0xedd6('0x147')](_0x1cb8f4);}})['then'](function(_0x167d49){if(_0x167d49){return _0x167d49?{'count':_0x45a901,'rows':_0x167d49}:null;}})[_0xedd6('0x12')](respondWithResult(_0x4c1400,null))['catch'](handleError(_0x4c1400,null));};exports[_0xedd6('0x148')]=function(_0x4e45ce,_0x1ea890){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x4e45ce[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1ea890,null))['then'](function(_0x17da4b){if(_0x17da4b){return _0x17da4b[_0xedd6('0x148')](_0x4e45ce[_0xedd6('0x59')]['ids'],_[_0xedd6('0x5e')](_0x4e45ce['body'],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x1ea890,null))[_0xedd6('0x1d')](handleError(_0x1ea890,null));};exports[_0xedd6('0x149')]=function(_0x1fb8a2,_0x49c92d){return db['User'][_0xedd6('0x35')]({'where':{'id':_0x1fb8a2[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x49c92d,null))['then'](function(_0x36861c){if(_0x36861c){return _0x36861c['removeOpenchannelAccounts'](_0x1fb8a2[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x49c92d,null))[_0xedd6('0x1d')](handleError(_0x49c92d,null));};exports[_0xedd6('0x14a')]=function(_0x4623a3,_0x556aaa){var _0x3656ff={};var _0x2de047={};var _0xb19785;var _0x242729;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4623a3[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x556aaa,null))[_0xedd6('0x12')](function(_0x11fe7b){if(_0x11fe7b){_0xb19785=_0x11fe7b;_0x2de047['model']=_[_0xedd6('0x52')](db[_0xedd6('0x14b')][_0xedd6('0x3c')]);_0x2de047[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4623a3[_0xedd6('0x48')]);_0x2de047[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x2de047['model'],_0x2de047[_0xedd6('0x48')]);_0x3656ff[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x2de047[_0xedd6('0x54')],qs['fields'](_0x4623a3[_0xedd6('0x48')][_0xedd6('0x56')]));_0x3656ff[_0xedd6('0x44')]=_0x3656ff[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x3656ff[_0xedd6('0x44')]:_0x2de047[_0xedd6('0x54')];_0x3656ff[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x4623a3[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x3656ff[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4623a3[_0xedd6('0x48')],_0x2de047[_0xedd6('0x53')]));if(_0x4623a3[_0xedd6('0x48')][_0xedd6('0x30')]){_0x3656ff[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x3656ff['where'],{'$or':_[_0xedd6('0x32')](_0x3656ff[_0xedd6('0x44')],function(_0x4b9022){var _0x31a94f={};_0x31a94f[_0x4b9022]={'$like':'%'+_0x4623a3[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x31a94f;})});}_0x3656ff=_[_0xedd6('0xc8')]({},_0x3656ff,_0x4623a3[_0xedd6('0xc9')]);return _0xb19785[_0xedd6('0x14a')](_0x3656ff);}})[_0xedd6('0x12')](function(_0x55e7fe){if(_0x55e7fe){_0x242729=_0x55e7fe[_0xedd6('0x4a')];if(!_0x4623a3[_0xedd6('0x48')]['hasOwnProperty'](_0xedd6('0xd5'))){_0x3656ff['limit']=qs[_0xedd6('0x24')](_0x4623a3[_0xedd6('0x48')]['limit']);_0x3656ff[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4623a3[_0xedd6('0x48')]['offset']);}return _0xb19785[_0xedd6('0x14a')](_0x3656ff);}})[_0xedd6('0x12')](function(_0x35ec9d){if(_0x35ec9d){return _0x35ec9d?{'count':_0x242729,'rows':_0x35ec9d}:null;}})[_0xedd6('0x12')](respondWithResult(_0x556aaa,null))['catch'](handleError(_0x556aaa,null));};exports[_0xedd6('0x14c')]=function(_0x1280e9,_0x473e25){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x1280e9[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x473e25,null))[_0xedd6('0x12')](function(_0x5bfe87){if(_0x5bfe87){return _0x5bfe87[_0xedd6('0x14c')](_0x1280e9[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x1280e9[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x473e25,null))[_0xedd6('0x1d')](handleError(_0x473e25,null));};exports[_0xedd6('0x14d')]=function(_0x14731e,_0x7d0da9){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x14731e['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x7d0da9,null))[_0xedd6('0x12')](function(_0x247a3b){if(_0x247a3b){return _0x247a3b[_0xedd6('0x14d')](_0x14731e[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x7d0da9,null))[_0xedd6('0x1d')](handleError(_0x7d0da9,null));};exports[_0xedd6('0x14e')]=function(_0x2bdd98,_0x1d33f3){var _0x57bd6f={};var _0x2c7f86={};var _0x23eddf;var _0x123833;return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x2bdd98[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1d33f3,null))[_0xedd6('0x12')](function(_0x5da74f){if(_0x5da74f){_0x23eddf=_0x5da74f;_0x2c7f86[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x14f')][_0xedd6('0x3c')]);_0x2c7f86[_0xedd6('0x48')]=_['keys'](_0x2bdd98[_0xedd6('0x48')]);_0x2c7f86['filters']=_[_0xedd6('0x55')](_0x2c7f86[_0xedd6('0x54')],_0x2c7f86['query']);_0x57bd6f[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x2c7f86['model'],qs['fields'](_0x2bdd98[_0xedd6('0x48')][_0xedd6('0x56')]));_0x57bd6f[_0xedd6('0x44')]=_0x57bd6f['attributes'][_0xedd6('0x4a')]?_0x57bd6f[_0xedd6('0x44')]:_0x2c7f86[_0xedd6('0x54')];_0x57bd6f[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x2bdd98['query'][_0xedd6('0xc7')]);_0x57bd6f[_0xedd6('0x41')]=qs['filters'](_[_0xedd6('0xd3')](_0x2bdd98['query'],_0x2c7f86[_0xedd6('0x53')]));if(_0x2bdd98['query'][_0xedd6('0x30')]){_0x57bd6f[_0xedd6('0x41')]=_['merge'](_0x57bd6f[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x57bd6f[_0xedd6('0x44')],function(_0x439d6b){var _0x27859f={};_0x27859f[_0x439d6b]={'$like':'%'+_0x2bdd98[_0xedd6('0x48')]['filter']+'%'};return _0x27859f;})});}_0x57bd6f=_['merge']({},_0x57bd6f,_0x2bdd98[_0xedd6('0xc9')]);return _0x23eddf['getChatWebsites'](_0x57bd6f);}})[_0xedd6('0x12')](function(_0x879651){if(_0x879651){_0x123833=_0x879651[_0xedd6('0x4a')];if(!_0x2bdd98[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x57bd6f[_0xedd6('0x24')]=qs['limit'](_0x2bdd98[_0xedd6('0x48')][_0xedd6('0x24')]);_0x57bd6f[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x2bdd98['query']['offset']);}return _0x23eddf[_0xedd6('0x14e')](_0x57bd6f);}})[_0xedd6('0x12')](function(_0x2e8126){if(_0x2e8126){return _0x2e8126?{'count':_0x123833,'rows':_0x2e8126}:null;}})[_0xedd6('0x12')](respondWithResult(_0x1d33f3,null))['catch'](handleError(_0x1d33f3,null));};exports['addChatWebsites']=function(_0x58a5d5,_0x4810e0){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x58a5d5[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4810e0,null))[_0xedd6('0x12')](function(_0x4b59b6){if(_0x4b59b6){return _0x4b59b6[_0xedd6('0x150')](_0x58a5d5[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x58a5d5['body'],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x4810e0,null))[_0xedd6('0x1d')](handleError(_0x4810e0,null));};exports[_0xedd6('0x151')]=function(_0x29ae2d,_0x500830){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x29ae2d['params']['id']}})['then'](handleEntityNotFound(_0x500830,null))['then'](function(_0x3a3a82){if(_0x3a3a82){return _0x3a3a82['removeChatWebsites'](_0x29ae2d[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x500830,null))[_0xedd6('0x1d')](handleError(_0x500830,null));};exports[_0xedd6('0x152')]=function(_0x4ea0e1,_0x4d061c){var _0x2a0c13={};var _0x51c324={};var _0x3e9733;var _0x3cb0e2;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4ea0e1[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4d061c,null))[_0xedd6('0x12')](function(_0x46f46f){if(_0x46f46f){_0x3e9733=_0x46f46f;_0x51c324[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x153')][_0xedd6('0x3c')]);_0x51c324[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4ea0e1[_0xedd6('0x48')]);_0x51c324[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x51c324['model'],_0x51c324['query']);_0x2a0c13[_0xedd6('0x44')]=_['intersection'](_0x51c324[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x56')]));_0x2a0c13[_0xedd6('0x44')]=_0x2a0c13[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x2a0c13[_0xedd6('0x44')]:_0x51c324['model'];_0x2a0c13[_0xedd6('0xc6')]=qs['sort'](_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x2a0c13[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4ea0e1[_0xedd6('0x48')],_0x51c324[_0xedd6('0x53')]));if(_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x30')]){_0x2a0c13[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x2a0c13['where'],{'$or':_['map'](_0x2a0c13[_0xedd6('0x44')],function(_0x8479eb){var _0x5c3341={};_0x5c3341[_0x8479eb]={'$like':'%'+_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x5c3341;})});}_0x2a0c13=_[_0xedd6('0xc8')]({},_0x2a0c13,_0x4ea0e1[_0xedd6('0xc9')]);return _0x3e9733[_0xedd6('0x152')](_0x2a0c13);}})[_0xedd6('0x12')](function(_0x47c3ca){if(_0x47c3ca){_0x3cb0e2=_0x47c3ca['length'];if(!_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0xcb')]('nolimit')){_0x2a0c13[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x24')]);_0x2a0c13[_0xedd6('0x22')]=qs['offset'](_0x4ea0e1['query']['offset']);}return _0x3e9733['getWhatsappAccounts'](_0x2a0c13);}})[_0xedd6('0x12')](function(_0x4b7711){if(_0x4b7711){return _0x4b7711?{'count':_0x3cb0e2,'rows':_0x4b7711}:null;}})['then'](respondWithResult(_0x4d061c,null))[_0xedd6('0x1d')](handleError(_0x4d061c,null));};exports[_0xedd6('0x154')]=function(_0x33490b,_0x20713c){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x33490b['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x20713c,null))[_0xedd6('0x12')](function(_0x35d6fa){if(_0x35d6fa){return _0x35d6fa['addWhatsappAccounts'](_0x33490b[_0xedd6('0x59')][_0xedd6('0x5d')],_['omit'](_0x33490b[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x20713c,null))[_0xedd6('0x1d')](handleError(_0x20713c,null));};exports[_0xedd6('0x155')]=function(_0x402217,_0x385475){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x402217[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x385475,null))[_0xedd6('0x12')](function(_0x37a842){if(_0x37a842){return _0x37a842[_0xedd6('0x155')](_0x402217[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x385475,null))[_0xedd6('0x1d')](handleError(_0x385475,null));};exports[_0xedd6('0x156')]=function(_0x4499f1,_0x3d937e){var _0x334521={};var _0x1b9375={};var _0x386e22;var _0x4a8a06;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4499f1[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3d937e,null))[_0xedd6('0x12')](function(_0x26cecc){if(_0x26cecc){_0x386e22=_0x26cecc;_0x1b9375[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x157')][_0xedd6('0x3c')]);_0x1b9375[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4499f1[_0xedd6('0x48')]);_0x1b9375['filters']=_['intersection'](_0x1b9375['model'],_0x1b9375[_0xedd6('0x48')]);_0x334521[_0xedd6('0x44')]=_['intersection'](_0x1b9375[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4499f1[_0xedd6('0x48')]['fields']));_0x334521[_0xedd6('0x44')]=_0x334521['attributes'][_0xedd6('0x4a')]?_0x334521['attributes']:_0x1b9375[_0xedd6('0x54')];_0x334521['order']=qs[_0xedd6('0xc7')](_0x4499f1[_0xedd6('0x48')]['sort']);_0x334521[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0x4499f1[_0xedd6('0x48')],_0x1b9375['filters']));if(_0x4499f1[_0xedd6('0x48')][_0xedd6('0x30')]){_0x334521[_0xedd6('0x41')]=_['merge'](_0x334521[_0xedd6('0x41')],{'$or':_['map'](_0x334521['attributes'],function(_0x135406){var _0x3218ba={};_0x3218ba[_0x135406]={'$like':'%'+_0x4499f1[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x3218ba;})});}_0x334521=_[_0xedd6('0xc8')]({},_0x334521,_0x4499f1['options']);return _0x386e22[_0xedd6('0x156')](_0x334521);}})[_0xedd6('0x12')](function(_0x2a3b3d){if(_0x2a3b3d){_0x4a8a06=_0x2a3b3d[_0xedd6('0x4a')];if(!_0x4499f1[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x334521['limit']=qs['limit'](_0x4499f1['query'][_0xedd6('0x24')]);_0x334521[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4499f1[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x386e22[_0xedd6('0x156')](_0x334521);}})['then'](function(_0x503888){if(_0x503888){return _0x503888?{'count':_0x4a8a06,'rows':_0x503888}:null;}})[_0xedd6('0x12')](respondWithResult(_0x3d937e,null))['catch'](handleError(_0x3d937e,null));};exports[_0xedd6('0x158')]=function(_0x5b93ee,_0x47aba9){return db['User']['find']({'where':{'id':_0x5b93ee[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x47aba9,null))['then'](function(_0x42ecfe){if(_0x42ecfe){return _0x42ecfe[_0xedd6('0x158')](_0x5b93ee[_0xedd6('0x59')][_0xedd6('0x5d')],_['omit'](_0x5b93ee[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x47aba9,null))[_0xedd6('0x1d')](handleError(_0x47aba9,null));};exports['removeSquareProjects']=function(_0x21a9ef,_0x15b449){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x21a9ef[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x15b449,null))[_0xedd6('0x12')](function(_0x4e5b39){if(_0x4e5b39){return _0x4e5b39[_0xedd6('0x159')](_0x21a9ef[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x15b449,null))['catch'](handleError(_0x15b449,null));};exports[_0xedd6('0x15a')]=function(_0x48c997,_0x5453a5){var _0x2fbdf1={},_0x2bd46e={},_0x2d22d3={'count':0x0,'rows':[]};var _0x4ea97e=db[_0xedd6('0x15b')][_0xedd6('0x3c')];_0x2bd46e['model']=_[_0xedd6('0x52')](_0x4ea97e);_0x2bd46e[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x48c997[_0xedd6('0x48')]);_0x2bd46e[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x2bd46e[_0xedd6('0x54')],_0x2bd46e[_0xedd6('0x48')]);_0x2bd46e[_0xedd6('0x53')]=_[_0xedd6('0xfc')](_0x2bd46e[_0xedd6('0x53')],[_0xedd6('0x15c'),_0xedd6('0x15d'),'$gt',_0xedd6('0x15e'),_0xedd6('0x15f'),_0xedd6('0x160'),'$ne',_0xedd6('0x161'),'$not',_0xedd6('0x162'),_0xedd6('0x163'),_0xedd6('0x164'),'$notIn',_0xedd6('0x165'),_0xedd6('0x166'),_0xedd6('0x167'),_0xedd6('0x168'),_0xedd6('0x165'),_0xedd6('0x169'),_0xedd6('0x16a'),'$contained',_0xedd6('0x16b')]);_0x2fbdf1['attributes']=_[_0xedd6('0x55')](_0x2bd46e['model'],qs[_0xedd6('0x56')](_0x48c997[_0xedd6('0x48')][_0xedd6('0x56')]));_0x2fbdf1[_0xedd6('0x44')]=_0x2fbdf1[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x2fbdf1[_0xedd6('0x44')]:_0x2bd46e[_0xedd6('0x54')];if(!_0x48c997['query'][_0xedd6('0xcb')]('nolimit')){_0x2fbdf1['limit']=qs[_0xedd6('0x24')](_0x48c997[_0xedd6('0x48')][_0xedd6('0x24')]);_0x2fbdf1[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x48c997[_0xedd6('0x48')][_0xedd6('0x22')]);}_0x2fbdf1['order']=qs['sort'](_0x48c997[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x2fbdf1[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x48c997[_0xedd6('0x48')],_0x2bd46e[_0xedd6('0x53')]));if(_0x48c997[_0xedd6('0x48')][_0xedd6('0x30')]){_0x2fbdf1[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x2fbdf1['where'],{'$or':_[_0xedd6('0x32')](_0x2fbdf1[_0xedd6('0x44')],function(_0x567503){var _0x567bb3={};_0x567bb3[_0x567503]={'$like':'%'+_0x48c997[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x567bb3;})});}_0x2fbdf1['where']={'$and':[_0x2fbdf1['where'],{'$or':[{'UserId':_0x48c997[_0xedd6('0x5a')]['id']},{'OwnerId':_0x48c997[_0xedd6('0x5a')]['id']}]}]};_0x2fbdf1=_[_0xedd6('0xc8')]({},_0x2fbdf1,_0x48c997[_0xedd6('0xc9')]);var _0x16ead7={'where':_0x2fbdf1[_0xedd6('0x41')]};return db[_0xedd6('0x15b')]['count'](_0x16ead7)[_0xedd6('0x12')](function(_0x3a955c){_0x2d22d3[_0xedd6('0x25')]=_0x3a955c;if(_0x48c997[_0xedd6('0x48')]['includeAll']){_0x2fbdf1[_0xedd6('0x43')]=[{'attributes':['id','firstName',_0xedd6('0x16c'),_0xedd6('0x16d')],'model':db[_0xedd6('0xc5')],'as':'Contact'},{'attributes':['id',_0xedd6('0x36'),'dialActive'],'model':db[_0xedd6('0xa9')],'as':_0xedd6('0xd2')}];}return db[_0xedd6('0x15b')]['findAll'](_0x2fbdf1);})[_0xedd6('0x12')](function(_0x513b06){_0x2d22d3[_0xedd6('0x47')]=_0x513b06;return _0x2d22d3;})['then'](respondWithFilteredResult(_0x5453a5,_0x2fbdf1))[_0xedd6('0x1d')](handleError(_0x5453a5,null));};exports[_0xedd6('0x16e')]=function(_0x3ec803,_0x18f88a){if(!_['isNil'](_0x3ec803['user']['id'])&&(_0x3ec803['user']['role']=='admin'||_0x3ec803[_0xedd6('0x7c')]['role']==_0xedd6('0x7c'))){return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x3ec803[_0xedd6('0x5a')]['id']},'raw':!![]})[_0xedd6('0x12')](function(_0xed15ae){return authService[_0xedd6('0x16f')](_0xed15ae);})[_0xedd6('0x12')](function(_0x59b1d9){if(_0x59b1d9){return _0x18f88a[_0xedd6('0x20')](0xc8)[_0xedd6('0x21')]({'api_key':_0x59b1d9[_0xedd6('0x170')]});}else{return _0x18f88a[_0xedd6('0x20')](0xcc)[_0xedd6('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xedd6('0x1d')](handleError(_0x18f88a,0x193));}else{return _0x18f88a['status'](0x191)[_0xedd6('0x21')]({'message':_0xedd6('0x171')});}};exports[_0xedd6('0x172')]=function(_0x1a8145,_0x5877e9){if(!_[_0xedd6('0x64')](_0x1a8145[_0xedd6('0x7c')]['id'])&&(_0x1a8145[_0xedd6('0x7c')][_0xedd6('0x2a')]==_0xedd6('0x2b')||_0x1a8145[_0xedd6('0x7c')][_0xedd6('0x2a')]==_0xedd6('0x7c'))){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x1a8145[_0xedd6('0x5a')]['id']}})['then'](function(_0x25d64c){return authService[_0xedd6('0x173')](_0x25d64c);})[_0xedd6('0x12')](function(_0x577789){return db[_0xedd6('0x3b')][_0xedd6('0x27')]({'apiKeyIat':_0x577789[_0xedd6('0x174')],'apiKeyNonce':_0x577789[_0xedd6('0x175')]},{'where':{'id':_0x1a8145[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](function(){return _0x5877e9[_0xedd6('0x20')](0xc8)[_0xedd6('0x21')]({'api_key':_0x577789['token']});});})['catch'](handleError(_0x5877e9,0x193));}else{return _0x5877e9[_0xedd6('0x20')](0x191)[_0xedd6('0x21')]({'message':_0xedd6('0x171')});}};exports[_0xedd6('0x176')]=function(_0x2b75b7,_0x4e307b){if(!_[_0xedd6('0x64')](_0x2b75b7[_0xedd6('0x7c')]['id'])&&(_0x2b75b7['user']['role']=='admin'||_0x2b75b7[_0xedd6('0x7c')][_0xedd6('0x2a')]==_0xedd6('0x7c'))){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x2b75b7[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4e307b,null))[_0xedd6('0x12')](function(_0x595cf0){if(_0x595cf0&&_0x595cf0[_0xedd6('0x177')]&&_0x595cf0['apiKeyIat'])return _0x595cf0;else throw{'message':'API\x20key\x20not\x20available'};})[_0xedd6('0x12')](function(_0x20f498){return db['User'][_0xedd6('0x27')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x2b75b7[_0xedd6('0x5a')]['id']}});})[_0xedd6('0x12')](respondWithStatusCode(_0x4e307b,0xc8))[_0xedd6('0x1d')](handleError(_0x4e307b,0x193));}else{return _0x4e307b['status'](0x191)['json']({'message':_0xedd6('0x171')});}};exports[_0xedd6('0x178')]=function(_0x5d94af,_0x44fc32){var _0x4347a2=_0x5d94af[_0xedd6('0x7c')][_0xedd6('0x29')]({'plain':!![]});if(!_0x4347a2){return _0x44fc32['status'](0x191)[_0xedd6('0x39')](_0xedd6('0x179'));}else{return _0x44fc32['status'](0xc8)[_0xedd6('0x21')](_0x4347a2);}};exports[_0xedd6('0x17a')]=function(_0x223567,_0x294f4f){var _0xdfc33d={'offset':0x0},_0x52b4ae={'count':0x0,'rows':[]};Promise[_0xedd6('0xfe')]()[_0xedd6('0x12')](function(){if(!_0x223567['query'][_0xedd6('0x30')]&&!_0x223567[_0xedd6('0x48')][_0xedd6('0x17b')]&&!_0x223567[_0xedd6('0x48')][_0xedd6('0x17c')])return[];return Promise[_0xedd6('0xfe')]()[_0xedd6('0x12')](function(){var _0x3b9666=[];if(!_[_0xedd6('0x17d')](_0x223567[_0xedd6('0x48')][_0xedd6('0x17b')])){_0x3b9666[_0xedd6('0x45')](db[_0xedd6('0x111')]['findAll']({'attributes':['id',_0xedd6('0x36')],'where':{'id':_0x223567[_0xedd6('0x48')]['teams']}}));}if(!_[_0xedd6('0x17d')](_0x223567[_0xedd6('0x48')][_0xedd6('0x17c')])){_0x3b9666[_0xedd6('0x45')](db['VoiceQueue'][_0xedd6('0x46')]({'attributes':['id',_0xedd6('0x36')],'type':_0xedd6('0x17e'),'where':{'id':_0x223567[_0xedd6('0x48')]['queues']}}));}return Promise[_0xedd6('0x50')](_0x3b9666);})['then'](function(_0x27d84f){var _0x1382ed=_[_0xedd6('0x11f')](_0x27d84f)[_0xedd6('0x32')](function(_0x4f72d1){return _0x4f72d1[_0xedd6('0x127')]({'attributes':['id',_0xedd6('0x36'),'internal',_0xedd6('0xaa')],'raw':!![]});});return Promise['all'](_0x1382ed);})[_0xedd6('0x12')](function(_0x212f45){var _0x5eb1d4=_['flatten'](_0x212f45);if(!_0x223567[_0xedd6('0x48')]['filter'])return _0x5eb1d4;if(_[_0xedd6('0x17d')](_0x5eb1d4)){return db[_0xedd6('0x3b')][_0xedd6('0x46')]({'attributes':['id',_0xedd6('0x36'),_0xedd6('0x5f'),_0xedd6('0xaa')],'where':{'role':_0xedd6('0x2d'),'$or':[db[_0xedd6('0x66')][_0xedd6('0x41')](db['sequelize']['fn'](_0xedd6('0x17f'),db['sequelize'][_0xedd6('0x180')]('name')),{'$like':'%'+_0x223567[_0xedd6('0x48')][_0xedd6('0x30')][_0xedd6('0xa1')]()+'%'}),{'internal':{'$like':'%'+_0x223567[_0xedd6('0x48')][_0xedd6('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0x5eb1d4)['flatten']()[_0xedd6('0x30')](function(_0x51de0f){return _0x51de0f['name'][_0xedd6('0xa1')]()[_0xedd6('0x34')](_0x223567['query'][_0xedd6('0x30')][_0xedd6('0xa1')]())||_0x51de0f[_0xedd6('0x5f')]['toString']()[_0xedd6('0x34')](_0x223567['query'][_0xedd6('0x30')]);})[_0xedd6('0x33')]();}})[_0xedd6('0x12')](function(_0x10490c){var _0x24a6f4=_0xedd6('0x36');var _0x1004e3=_0xedd6('0x181');if(_0x223567[_0xedd6('0x48')]['sort']){var _0x1004e3=_0x223567['query']['sort'][0x0]==='-'?_0xedd6('0x182'):_0xedd6('0x181');var _0x24a6f4=_0x1004e3===_0xedd6('0x181')?_0x223567[_0xedd6('0x48')][_0xedd6('0xc7')]:_0x223567[_0xedd6('0x48')][_0xedd6('0xc7')]['substring'](0x1);}return _(_0x10490c)[_0xedd6('0x183')]('id')[_0xedd6('0x184')]([function(_0x32887e){return _0x24a6f4==='name'?_0x32887e[_0x24a6f4]['toLowerCase']():_0x32887e[_0x24a6f4];}],[_0x1004e3])[_0xedd6('0x32')](function(_0x1ace1d){return _[_0xedd6('0xd3')](_0x1ace1d,['id',_0xedd6('0x36'),_0xedd6('0x5f'),'online']);})[_0xedd6('0x33')]();})[_0xedd6('0x12')](function(_0x2275e1){return client[_0xedd6('0x11')](_0xedd6('0x2c'),_0x223567)['then'](function(_0x406e02){if(_0x406e02[_0xedd6('0x18')])throw new Error(_0xedd6('0x185'));var _0x213fe3=_0x406e02[_0xedd6('0x1c')];var _0x46d854=jayson[_0xedd6('0x186')]['http']({'port':0x232c});return _0x46d854[_0xedd6('0x11')]('Agents',_0x223567)[_0xedd6('0x12')](function(_0x34782a){if(_0x34782a[_0xedd6('0x18')])throw new Error(_0xedd6('0x187'));var _0x4bc691=_0x34782a[_0xedd6('0x1c')];return _[_0xedd6('0xc8')]({},_0x4bc691,_0x213fe3);});})[_0xedd6('0x12')](function(_0x152efe){return _[_0xedd6('0x32')](_0x2275e1,function(_0x40b013){var _0x3dfadd=_[_0xedd6('0x35')](_0x152efe['rows'],['id',_0x40b013['id']]);if(!_0x3dfadd||!_0x40b013[_0xedd6('0xaa')]){_0x40b013[_0xedd6('0x20')]='offline';}else if(_0x3dfadd[_0xedd6('0x9c')]){_0x40b013[_0xedd6('0x20')]=_0xedd6('0x100');}else{_0x40b013[_0xedd6('0x20')]=_[_0xedd6('0x34')](['idle',_0xedd6('0x188'),'unavailable',_0xedd6('0x189'),null,undefined],_0x3dfadd[_0xedd6('0x18a')])?_0xedd6('0xaa'):_0xedd6('0x18b');}return _0x40b013;});});});})[_0xedd6('0x12')](function(_0x30101a){if(!_0x223567[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0xdfc33d[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x223567['query']['limit']||0xa);_0xdfc33d[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x223567[_0xedd6('0x48')][_0xedd6('0x22')]);}_0x52b4ae['count']=_0x30101a['length'];_0x52b4ae['rows']=_0xdfc33d['limit']?_0x30101a[_0xedd6('0x18c')](_0xdfc33d['offset'],_0xdfc33d['offset']+_0xdfc33d[_0xedd6('0x24')]):_0x30101a;return _0x52b4ae;})[_0xedd6('0x12')](respondWithFilteredResult(_0x294f4f,_0xdfc33d))[_0xedd6('0x1d')](handleError(_0x294f4f,null));};function get_open_tabs(_0xa1cb65,_0x227fe4){var _0x24fea9=_0xa1cb65[_0xedd6('0x18d')](0x0)[_0xedd6('0x18e')]()+_0xa1cb65[_0xedd6('0x18c')](0x1);var _0x3c7056={'type':db[_0xedd6('0x8d')][_0xedd6('0x67')][_0xedd6('0x68')],'raw':!![]};return new BPromise(function(_0x266991,_0x9fc544){var _0x16e865=squel[_0xedd6('0x18f')]()[_0xedd6('0x190')](_0xedd6('0x191')+_0x24fea9+_0xedd6('0x192'),'id')['field'](_0xedd6('0x193'))[_0xedd6('0x69')](_0xedd6('0x194')+_0xa1cb65+'_interactions','ui')[_0xedd6('0x41')](_0xedd6('0x195'),_0x227fe4['id']);return db[_0xedd6('0x66')][_0xedd6('0x48')](_0x16e865[_0xedd6('0x196')](),_0x3c7056)[_0xedd6('0x12')](function(_0x50c4eb){_0x227fe4[_0x24fea9+'OpenTabs']=_0x50c4eb;_0x266991(_0x50c4eb);})[_0xedd6('0x1d')](function(_0x509a26){_0x9fc544(_0x509a26);});});};
\ No newline at end of file
+var _0xc4aa=['dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','resolve','queues','isEmpty','teams','col','toString','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','offline','pause','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','field','ui.','InteractionId','OpenTabs','moment','bluebird','util','path','lodash','squel','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','register','redis','defaults','localhost','client','http','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','get','role','admin','user','agent','telephone','filter','ignore','map','value','includes','find','name','destroy','then','sendStatus','stack','send','index','User','rawAttributes','fieldName','password','salt','getOptions','where','include','attributes','push','findAll','rows','openTabs','true','chat','dataValues','sms','fax','mail','show','params','differenceBy','keys','query','filters','intersection','model','fields','length','includeAll','merge','openchannel','whatsapp','all','update','body','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','mailbox','VoiceMail','fullname','permissions','102','110','105','108','109','100','115','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','create','UserProfileSection','Telephones','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','Agents','autoAssociation','compact','UserProfileResource','changePassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','oldPassword','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','enforcePasswordHistory','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','spread','emit','VoiceQueue','format','each','upsert','remove','isArray','QueueId','Queue:remove','voice','UserVoiceQueueRt','addAvatar','userpic','file','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','getContacts','CmContact','order','sort','pick','options','hasOwnProperty','List','Tag','Tags','tag','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','SIP/%s','intrf','user:%s','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','isMiddleware','logout','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','smsPause','whatsapppause','lastPauseAt','manual','%s%s','Pause','Team','getTeams','addTeams','setDataValue','Voice','Chat','getMailQueues','Mail','getSmsQueues','Sms','Whatsapp','getOpenchannelQueues','flatten','addAgent','getDataValue','Queue:save','TeamVoicePrefix','UserVoicePrefix','getWhatsappQueues','getFaxQueues','Fax','Openchannel','transaction','VoicePrefixId','getLists','CmList','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','CmHopper','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$overlap','$any','lastName'];(function(_0x1956e0,_0xc63202){var _0x482e59=function(_0x187ed){while(--_0x187ed){_0x1956e0['push'](_0x1956e0['shift']());}};_0x482e59(++_0xc63202);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc4aa[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require(_0xac4a('0x0'));var BPromise=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var path=require(_0xac4a('0x3'));var fs=require('fs');var _=require(_0xac4a('0x4'));var squel=require(_0xac4a('0x5'));var jayson=require('jayson/promise');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xac4a('0x6'));var logger=require(_0xac4a('0x7'))(_0xac4a('0x8'));var utils=require(_0xac4a('0x9'));var config=require(_0xac4a('0xa'));var licenseUtil=require(_0xac4a('0xb'));var db=require(_0xac4a('0xc'))['db'];var socket=require(_0xac4a('0xd'))(new Redis(config['redis']));require('./user.socket')[_0xac4a('0xe')](socket);config[_0xac4a('0xf')]=_[_0xac4a('0x10')](config['redis'],{'host':_0xac4a('0x11'),'port':0x18eb});var client=jayson[_0xac4a('0x12')][_0xac4a('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4d4acc,_0x30135d,_0x488e3c,_0x2f062c){return new BPromise(function(_0x4855b6,_0x333ca5){var _0x2a0776=_0x2f062c||client;return _0x2a0776[_0xac4a('0x14')](_0x4d4acc,_0x488e3c)['then'](function(_0x21a79){logger[_0xac4a('0x15')](_0xac4a('0x16'),_0x30135d,_0xac4a('0x17'));logger[_0xac4a('0x18')](_0xac4a('0x19'),_0x30135d,_0xac4a('0x17'),JSON[_0xac4a('0x1a')](_0x21a79));if(_0x21a79[_0xac4a('0x1b')]){if(_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1c')]===0x1f4){logger[_0xac4a('0x1b')]('User,\x20%s,\x20%s',_0x30135d,_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1d')]);return _0x333ca5(_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1d')]);}logger[_0xac4a('0x1b')](_0xac4a('0x16'),_0x30135d,_0x21a79[_0xac4a('0x1b')][_0xac4a('0x1d')]);return _0x4855b6(_0x21a79['error']['message']);}else{logger[_0xac4a('0x15')](_0xac4a('0x16'),_0x30135d,_0xac4a('0x17'));_0x4855b6(_0x21a79['result'][_0xac4a('0x1d')]);}})[_0xac4a('0x1e')](function(_0x3752e4){logger[_0xac4a('0x1b')](_0xac4a('0x16'),_0x30135d,_0x3752e4);_0x333ca5(_0x3752e4);});});}function respondWithStatusCode(_0x3e829c,_0xe38996){_0xe38996=_0xe38996||0xcc;return function(_0x3ca790){if(_0x3ca790){return _0x3e829c['sendStatus'](_0xe38996);}return _0x3e829c[_0xac4a('0x1f')](_0xe38996)[_0xac4a('0x20')]();};}function respondWithResult(_0x599787,_0x3d7ce0){_0x3d7ce0=_0x3d7ce0||0xc8;return function(_0x4169c0){if(_0x4169c0){return _0x599787[_0xac4a('0x1f')](_0x3d7ce0)[_0xac4a('0x21')](_0x4169c0);}};}function respondWithFilteredResult(_0x4d2d6c,_0x1b7998){return function(_0x2503d8){if(_0x2503d8){var _0x15435c=typeof _0x1b7998[_0xac4a('0x22')]===_0xac4a('0x23')&&typeof _0x1b7998[_0xac4a('0x24')]===_0xac4a('0x23');var _0x36054a=_0x2503d8[_0xac4a('0x25')];var _0x3bc318=_0x15435c?0x0:_0x1b7998[_0xac4a('0x22')];var _0x215a31=_0x15435c?_0x2503d8[_0xac4a('0x25')]:_0x1b7998[_0xac4a('0x22')]+_0x1b7998[_0xac4a('0x24')];var _0x20202c;if(_0x215a31>=_0x36054a){_0x215a31=_0x36054a;_0x20202c=0xc8;}else{_0x20202c=0xce;}_0x4d2d6c['status'](_0x20202c);return _0x4d2d6c[_0xac4a('0x26')](_0xac4a('0x27'),_0x3bc318+'-'+_0x215a31+'/'+_0x36054a)[_0xac4a('0x21')](_0x2503d8);}return null;};}function saveUpdates(_0x2772fe){return function(_0x116700){if(_0x116700){return _0x116700['update'](_0x2772fe)['then'](function(_0xdb7e){return _0xdb7e;});}return null;};}function removeEntity(_0x7a948b){return function(_0x1f12d5){if(_0x1f12d5){return _0x1f12d5['destroy']()['then'](function(){var _0x355755=_0x1f12d5[_0xac4a('0x28')]({'plain':!![]});if(_0x355755[_0xac4a('0x29')]===_0xac4a('0x2a'))return;var _0x17118e=[{'name':'Users','value':_0xac4a('0x2b'),'ignore':!![]},{'name':'Agents','value':_0xac4a('0x2c'),'ignore':![]},{'name':'Telephones','value':_0xac4a('0x2d'),'ignore':![]}];var _0xfbe355=_(_0x17118e)[_0xac4a('0x2e')](_0xac4a('0x2f'))[_0xac4a('0x30')](_0xac4a('0x31'))[_0xac4a('0x31')]();if(_[_0xac4a('0x32')](_0xfbe355,_0x355755[_0xac4a('0x29')])){return;}var _0xfd7c16=_[_0xac4a('0x33')](_0x17118e,[_0xac4a('0x31'),_0x355755[_0xac4a('0x29')]])[_0xac4a('0x34')];return db['UserProfileResource'][_0xac4a('0x35')]({'where':{'type':_0xfd7c16,'resourceId':_0x355755['id']}})[_0xac4a('0x36')](function(){return _0x1f12d5;});})['then'](function(){_0x7a948b[_0xac4a('0x1f')](0xcc)[_0xac4a('0x20')]();});}};}function handleEntityNotFound(_0x565164){return function(_0x58804b){if(!_0x58804b){_0x565164[_0xac4a('0x37')](0x194);}return _0x58804b;};}function handleError(_0x1ba096,_0x1b42b6){_0x1b42b6=_0x1b42b6||0x1f4;return function(_0x3de9e2){logger['error'](_0x3de9e2[_0xac4a('0x38')]);if(_0x3de9e2[_0xac4a('0x34')]){delete _0x3de9e2['name'];}_0x1ba096[_0xac4a('0x1f')](_0x1b42b6)[_0xac4a('0x39')](_0x3de9e2);};}exports[_0xac4a('0x3a')]=function(_0x5f0eb8,_0x121328){var _0x357f06={},_0x1b5427={'count':0x0,'rows':[]};var _0x4e0445=_(db[_0xac4a('0x3b')][_0xac4a('0x3c')])['map'](function(_0x59bebf){return{'name':_0x59bebf[_0xac4a('0x3d')],'type':_0x59bebf['type']['key']};})['filter'](function(_0x4fee3a){return!_[_0xac4a('0x32')]([_0xac4a('0x3e'),_0xac4a('0x3f')],_0x4fee3a[_0xac4a('0x34')]);})[_0xac4a('0x31')]();_0x357f06=qs[_0xac4a('0x40')](_0x4e0445,_0x5f0eb8);var _0x4220e2={'where':_0x357f06[_0xac4a('0x41')]};return db[_0xac4a('0x3b')][_0xac4a('0x25')](_0x4220e2)[_0xac4a('0x36')](function(_0x1c2a87){_0x1b5427['count']=_0x1c2a87;if(_0x5f0eb8['query']['includeAll']){_0x357f06[_0xac4a('0x42')]=[{'all':!![]}];}if(!_[_0xac4a('0x32')](_0x357f06[_0xac4a('0x43')],'id')){_0x357f06[_0xac4a('0x43')][_0xac4a('0x44')]('id');}return db[_0xac4a('0x3b')][_0xac4a('0x45')](_0x357f06);})[_0xac4a('0x36')](function(_0x3e9973){_0x1b5427[_0xac4a('0x46')]=_0x3e9973;if(_0x5f0eb8['query'][_0xac4a('0x47')]===_0xac4a('0x48')){var _0x3d9595=[];for(var _0x3f24a1=0x0;_0x3f24a1<_0x1b5427[_0xac4a('0x46')]['length'];_0x3f24a1++){_0x3d9595[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x49'),_0x1b5427['rows'][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595['push'](get_open_tabs(_0xac4a('0x4b'),_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4c'),_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4d'),_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs('openchannel',_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));_0x3d9595[_0xac4a('0x44')](get_open_tabs('whatsapp',_0x1b5427[_0xac4a('0x46')][_0x3f24a1][_0xac4a('0x4a')]));}return BPromise['all'](_0x3d9595)[_0xac4a('0x36')](function(_0x5a7f6e){return _0x1b5427;});}else{return _0x1b5427;}})[_0xac4a('0x36')](respondWithFilteredResult(_0x121328,_0x357f06))[_0xac4a('0x1e')](handleError(_0x121328,null));};exports[_0xac4a('0x4e')]=function(_0x5e3581,_0x588374){var _0x42fd9d={'raw':![],'where':{'id':_0x5e3581[_0xac4a('0x4f')]['id']}},_0x4aaeff={};_0x4aaeff['model']=_[_0xac4a('0x50')](_['keys'](db[_0xac4a('0x3b')][_0xac4a('0x3c')]),[_0xac4a('0x3e'),_0xac4a('0x3f')]);_0x4aaeff['query']=_[_0xac4a('0x51')](_0x5e3581[_0xac4a('0x52')]);_0x4aaeff[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x4aaeff[_0xac4a('0x55')],_0x4aaeff[_0xac4a('0x52')]);_0x42fd9d[_0xac4a('0x43')]=_['intersection'](_0x4aaeff[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x5e3581['query'][_0xac4a('0x56')]));_0x42fd9d[_0xac4a('0x43')]=_0x42fd9d[_0xac4a('0x43')][_0xac4a('0x57')]?_0x42fd9d['attributes']:_0x4aaeff[_0xac4a('0x55')];if(_0x5e3581[_0xac4a('0x52')][_0xac4a('0x58')]){_0x42fd9d[_0xac4a('0x42')]=[{'all':!![]}];}_0x42fd9d=_[_0xac4a('0x59')]({},_0x42fd9d,_0x5e3581['options']);if(!_[_0xac4a('0x32')](_0x42fd9d['attributes'],'id')){_0x42fd9d[_0xac4a('0x43')][_0xac4a('0x44')]('id');}return db['User']['find'](_0x42fd9d)[_0xac4a('0x36')](handleEntityNotFound(_0x588374,null))[_0xac4a('0x36')](function(_0x4d448f){var _0x18d29c=[];values=_0x4d448f;if(_0x5e3581[_0xac4a('0x52')][_0xac4a('0x47')]===_0xac4a('0x48')){_0x18d29c['push'](get_open_tabs(_0xac4a('0x49'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4b'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x5a'),_0x4d448f['dataValues']));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x5b'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4c'),_0x4d448f[_0xac4a('0x4a')]));_0x18d29c[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4d'),_0x4d448f[_0xac4a('0x4a')]));return BPromise[_0xac4a('0x5c')](_0x18d29c);}else{return values;}})[_0xac4a('0x36')](function(_0x38dd4f){return values;})[_0xac4a('0x36')](respondWithResult(_0x588374,null))[_0xac4a('0x1e')](handleError(_0x588374,null));};exports[_0xac4a('0x5d')]=function(_0x11c753,_0x492aae){if(_0x11c753[_0xac4a('0x5e')]['id']){delete _0x11c753['body']['id'];}delete _0x11c753[_0xac4a('0x5e')]['role'];return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x11c753[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x492aae,null))['then'](saveUpdates(_0x11c753[_0xac4a('0x5e')],null))[_0xac4a('0x36')](respondWithResult(_0x492aae,null))[_0xac4a('0x1e')](handleError(_0x492aae,null));};exports[_0xac4a('0x5f')]=function(_0x2f9940,_0xb7b884){return db['User'][_0xac4a('0x5f')]()['then'](respondWithResult(_0xb7b884,null))[_0xac4a('0x1e')](handleError(_0xb7b884,null));};exports['addContacts']=function(_0x347880,_0x19ce2c){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x347880[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x19ce2c,null))[_0xac4a('0x36')](function(_0xe3e375){if(_0xe3e375){return _0xe3e375[_0xac4a('0x60')](_0x347880[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x347880[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x19ce2c,null))[_0xac4a('0x1e')](handleError(_0x19ce2c,null));};function validateUser(_0x38cb4f){return new BPromise(function(_0x4a0156,_0xa90d71){if(_0x38cb4f[_0xac4a('0x63')])return _0x4a0156(_0x38cb4f);return db['Setting'][_0xac4a('0x64')](0x1)[_0xac4a('0x36')](function(_0x2d24c7){if(_0x2d24c7[_0xac4a('0x65')])authService[_0xac4a('0x66')](_0x38cb4f['password']);db['User'][_0xac4a('0x67')](_0xac4a('0x63'))[_0xac4a('0x36')](function(_0x148288){if(_[_0xac4a('0x68')](_0x148288)){_0x38cb4f[_0xac4a('0x63')]=_0x2d24c7[_0xac4a('0x69')]||0x1;return;}if(_[_0xac4a('0x68')](_0x2d24c7[_0xac4a('0x69')])||_0x2d24c7[_0xac4a('0x69')]===_0x148288){_0x38cb4f[_0xac4a('0x63')]=_0x148288+0x1;return;}if(_0x2d24c7['min_internal']>_0x148288){_0x38cb4f['internal']=_0x2d24c7[_0xac4a('0x69')];return;}return db[_0xac4a('0x6a')][_0xac4a('0x52')](_0xac4a('0x6b'),{'type':db[_0xac4a('0x6a')][_0xac4a('0x6c')][_0xac4a('0x6d')]})[_0xac4a('0x36')](function(_0x453d62){if(_0x453d62&&_0x453d62[_0xac4a('0x57')]){for(var _0xb09b89=0x0,_0xb12cc5=_0x453d62['length'];_0xb09b89<_0xb12cc5&&_[_0xac4a('0x68')](_0x38cb4f[_0xac4a('0x63')]);_0xb09b89++){if(_0x2d24c7[_0xac4a('0x69')]<=_0x453d62[_0xb09b89][_0xac4a('0x6e')]){_0x38cb4f['internal']=_0x453d62[_0xb09b89][_0xac4a('0x6e')];}else if(_0x2d24c7['min_internal']>_0x453d62[_0xb09b89][_0xac4a('0x6e')]&&_0x2d24c7[_0xac4a('0x69')]<=_0x453d62[_0xb09b89]['to']){_0x38cb4f['internal']=_0x2d24c7['min_internal'];}}}if(_[_0xac4a('0x68')](_0x38cb4f[_0xac4a('0x63')])){_0x38cb4f[_0xac4a('0x63')]=_0x148288+0x1;}return _0x4a0156(_0x38cb4f);});});})['catch'](function(_0x3a0cf8){_0xa90d71(_0x3a0cf8);});});}function updateUser(_0x4d067d){return new BPromise(function(_0x114b11,_0x4a88c7){try{if(_0x4d067d['voicemail']){_0x4d067d[_0xac4a('0x6f')]=_0x4d067d['internal'];_0x4d067d[_0xac4a('0x70')]={'mailbox':_0x4d067d['internal'],'password':_0x4d067d[_0xac4a('0x3e')],'fullname':_0x4d067d[_0xac4a('0x71')],'email':_0x4d067d['email']};}if(_0x4d067d[_0xac4a('0x29')]==='agent'){if(!_0x4d067d[_0xac4a('0x72')])_0x4d067d[_0xac4a('0x72')]=['101',_0xac4a('0x73'),'103','113',_0xac4a('0x74'),'104',_0xac4a('0x75'),'106','107',_0xac4a('0x76'),_0xac4a('0x77'),_0xac4a('0x78'),'111','114',_0xac4a('0x79')];}_0x114b11(_0x4d067d);}catch(_0x9c0fa1){_0x4a88c7(_0x9c0fa1);}});}exports['create']=function(_0x4e93f5,_0x3824a2){if(_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x29')]===_0xac4a('0x2c'))throw new Error(_0xac4a('0x7a'));if(_0x4e93f5[_0xac4a('0x5e')][_0xac4a('0x29')]===_0xac4a('0x2b')&&_0x4e93f5[_0xac4a('0x2b')]['role']!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x7b'));}if(_0x4e93f5[_0xac4a('0x5e')]['role']===_0xac4a('0x2a')&&_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x29')]!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x7c'));}return licenseUtil['checkUserLimits']([_0x4e93f5[_0xac4a('0x5e')]])[_0xac4a('0x36')](function(){return validateUser(_0x4e93f5[_0xac4a('0x5e')]);})[_0xac4a('0x36')](function(_0x72c90c){return updateUser(_0x72c90c)[_0xac4a('0x36')](function(_0xd7bdd6){if(_0xd7bdd6['role']===_0xac4a('0x2a')){_0xd7bdd6[_0xac4a('0x7d')]=_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x7d')];delete _0xd7bdd6[_0xac4a('0x7e')];}return _0xd7bdd6;});})[_0xac4a('0x36')](function(_0x547eec){return db[_0xac4a('0x3b')][_0xac4a('0x7f')](_0x547eec,{'include':[{'model':db[_0xac4a('0x70')],'as':_0xac4a('0x70')}]});})['then'](function(_0x21a384){if(_0x4e93f5['body'][_0xac4a('0x29')]===_0xac4a('0x2b'))return _0x21a384;if(_0x4e93f5['user']['role']!==_0xac4a('0x2b'))return _0x21a384;return db[_0xac4a('0x80')][_0xac4a('0x33')]({'where':{'name':_0x21a384['role']===_0xac4a('0x2c')?'Agents':_0xac4a('0x81'),'userProfileId':_0x4e93f5[_0xac4a('0x2b')][_0xac4a('0x7e')]},'raw':!![]})[_0xac4a('0x36')](function(_0x2e2c92){if(!_0x2e2c92||_0x2e2c92['autoAssociation']!=0x0)return _0x21a384;return db['UserProfileResource'][_0xac4a('0x7f')]({'name':_0x21a384[_0xac4a('0x34')],'resourceId':_0x21a384['id'],'type':_0x2e2c92[_0xac4a('0x34')],'sectionId':_0x2e2c92['id']},{})[_0xac4a('0x36')](function(){return _0x21a384;});})[_0xac4a('0x1e')](function(_0x3c5bbc){logger[_0xac4a('0x1b')](_0xac4a('0x82'),_0x3c5bbc);throw _0x3c5bbc;});})['then'](respondWithResult(_0x3824a2,0xc9))['catch'](handleError(_0x3824a2,null));};exports[_0xac4a('0x83')]=function(_0x31cc9a,_0x247eee){var _0x950e60=_0x31cc9a[_0xac4a('0x5e')];var _0x2ea4a4=[];if(_0x31cc9a[_0xac4a('0x2b')][_0xac4a('0x29')]==='agent')throw new Error('Unauthorized');if(_[_0xac4a('0x84')](_0x950e60,[_0xac4a('0x29'),_0xac4a('0x2b')])&&_0x31cc9a[_0xac4a('0x2b')][_0xac4a('0x29')]!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x7b'));}if(_['some'](_0x950e60,[_0xac4a('0x29'),_0xac4a('0x2a')])&&_0x31cc9a[_0xac4a('0x2b')]['role']!==_0xac4a('0x2a')){throw new Error(_0xac4a('0x85'));}return licenseUtil[_0xac4a('0x86')](_0x950e60)[_0xac4a('0x36')](function(){return validateUser(_0x950e60[0x0]);})[_0xac4a('0x36')](function(){for(var _0x27d023=0x1;_0x27d023<_0x950e60[_0xac4a('0x57')];_0x27d023++){var _0x2ef42a=_0x950e60[_0x27d023-0x1][_0xac4a('0x63')];if(!_0x950e60[_0x27d023]['internal'])_0x950e60[_0x27d023][_0xac4a('0x63')]=_0x2ef42a+0x1;_0x2ea4a4['push'](validateUser(_0x950e60[_0x27d023]));}return BPromise[_0xac4a('0x5c')](_0x2ea4a4);})[_0xac4a('0x36')](function(){_0x2ea4a4=[];for(var _0x3184b3=0x0;_0x3184b3<_0x950e60[_0xac4a('0x57')];_0x3184b3++){_0x2ea4a4[_0xac4a('0x44')](updateUser(_0x950e60[_0x3184b3]));}return BPromise[_0xac4a('0x5c')](_0x2ea4a4);})[_0xac4a('0x36')](function(){return BPromise['each'](_0x950e60,function(_0x2b883a){return db[_0xac4a('0x3b')][_0xac4a('0x7f')](_0x2b883a,{'include':[{'model':db[_0xac4a('0x70')],'as':_0xac4a('0x70')}]})['then'](function(_0x1b37d9){_0x2b883a['id']=_0x1b37d9['id'];return _0x2b883a;});});})[_0xac4a('0x36')](function(_0x4f2b19){if(_0x31cc9a['body'][_0xac4a('0x29')]===_0xac4a('0x2b'))return _0x4f2b19;if(_0x31cc9a['user'][_0xac4a('0x29')]!==_0xac4a('0x2b'))return _0x4f2b19;var _0x6afaba=_[_0xac4a('0x84')](_0x4f2b19,function(_0x31df2d){return _0x31df2d[_0xac4a('0x29')]==='agent'||_0x31df2d[_0xac4a('0x29')]===_0xac4a('0x2d');});if(!_0x6afaba)return _0x4f2b19;return db[_0xac4a('0x80')]['findAll']({'where':{'name':{'$or':[_0xac4a('0x87'),_0xac4a('0x81')]},'userProfileId':_0x31cc9a[_0xac4a('0x2b')][_0xac4a('0x7e')]},'raw':!![]})[_0xac4a('0x36')](function(_0x23d635){if(_['isEmpty'](_0x23d635)||!_[_0xac4a('0x84')](_0x23d635,[_0xac4a('0x88'),0x0]))return _0x4f2b19;_0x2ea4a4=[];var _0x5ab83b=_(_0x23d635)[_0xac4a('0x30')](function(_0x55054a){if(_0x55054a[_0xac4a('0x88')]===0x1)return;return _0x55054a[_0xac4a('0x34')]==='Agents'?_0xac4a('0x2c'):'telephone';})[_0xac4a('0x89')]()['value']();for(var _0x3c601e=0x0;_0x3c601e<_0x4f2b19[_0xac4a('0x57')];_0x3c601e++){if(!_[_0xac4a('0x32')](_0x5ab83b,_0x4f2b19[_0x3c601e][_0xac4a('0x29')]))return;var _0xc38492=_0x4f2b19[_0x3c601e][_0xac4a('0x29')]===_0xac4a('0x2c')?_0xac4a('0x87'):_0xac4a('0x81');_0x2ea4a4[_0xac4a('0x44')](db[_0xac4a('0x8a')][_0xac4a('0x7f')]({'name':_0x4f2b19[_0x3c601e][_0xac4a('0x34')],'resourceId':_0x4f2b19[_0x3c601e]['id'],'type':_0xc38492,'sectionId':_[_0xac4a('0x33')](_0x23d635,['name',_0xc38492])['id']},{}));}return BPromise[_0xac4a('0x5c')](_0x2ea4a4);});})[_0xac4a('0x36')](respondWithResult(_0x247eee,0xc9))['catch'](handleError(_0x247eee,null));};exports[_0xac4a('0x8b')]=function(_0x31d190,_0x1b10ad){if(_0x31d190[_0xac4a('0x5e')]['id']){delete _0x31d190[_0xac4a('0x5e')]['id'];}return db['User'][_0xac4a('0x33')]({'where':{'id':_0x31d190['params']['id']}})[_0xac4a('0x36')](function(_0x28ae76){if(!_0x28ae76)return null;if(_0x28ae76['id']===_0x31d190[_0xac4a('0x2b')]['id']){if(!_0x31d190[_0xac4a('0x5e')]['oldPassword']||!_0x31d190[_0xac4a('0x5e')]['newPassword']){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x8e'));}if(!_0x28ae76['authenticate'](_0x31d190[_0xac4a('0x5e')][_0xac4a('0x8f')])){throw new db[(_0xac4a('0x8c'))]['ValidationError'](_0xac4a('0x90'));}if(_0x31d190[_0xac4a('0x5e')][_0xac4a('0x8f')]===_0x31d190[_0xac4a('0x5e')][_0xac4a('0x91')]){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x92'));}}else if(_0x31d190['user'][_0xac4a('0x29')]==='admin'){if(!_0x31d190['body']['newPassword']){throw new db['Sequelize']['ValidationError'](_0xac4a('0x93'));}}else if(_0x31d190[_0xac4a('0x2b')][_0xac4a('0x29')]===_0xac4a('0x2b')){if(!_0x31d190[_0xac4a('0x5e')]['newPassword']){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x93'));}if(_0x28ae76[_0xac4a('0x29')]!==_0xac4a('0x2c')){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0x7a'));}}else{throw new db['Sequelize'][(_0xac4a('0x8d'))](_0xac4a('0x7a'));}return _0x28ae76;})[_0xac4a('0x36')](handleEntityNotFound(_0x1b10ad,null))[_0xac4a('0x36')](function(_0x303d5d){return db[_0xac4a('0x94')][_0xac4a('0x95')]({'attributes':['id','securePassword','enforcePasswordHistory',_0xac4a('0x96')]})[_0xac4a('0x36')](function(_0x51993a){if(_0x51993a[_0xac4a('0x65')])authService[_0xac4a('0x66')](_0x31d190['body']['newPassword']);if(!_0x51993a[_0xac4a('0x97')]||!_0x303d5d[_0xac4a('0x98')])return _0x303d5d;authService[_0xac4a('0x99')](_0x31d190[_0xac4a('0x5e')][_0xac4a('0x91')],_0x303d5d['previousPasswords'],_0x51993a[_0xac4a('0x96')]);return _0x303d5d;})['then'](saveUpdates({'password':_0x31d190['body']['newPassword'],'passwordResetAt':_0x31d190[_0xac4a('0x2b')]['id']==_0x31d190[_0xac4a('0x4f')]['id']?moment():null,'previousPasswords':authService[_0xac4a('0x9a')](_0x31d190[_0xac4a('0x5e')][_0xac4a('0x91')],_0x303d5d[_0xac4a('0x98')])},null));})[_0xac4a('0x36')](respondWithResult(_0x1b10ad,null))[_0xac4a('0x1e')](handleError(_0x1b10ad,null));};exports['addQueues']=function(_0x5e1662,_0x53bcbc){var _0x3305a5=_0x5e1662[_0xac4a('0x5e')][_0xac4a('0x9b')];return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5e1662[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29'),_0xac4a('0x9c'),_0xac4a('0x9d'),_0xac4a('0x9e'),_0xac4a('0x9f')]})[_0xac4a('0x36')](handleEntityNotFound(_0x53bcbc,null))[_0xac4a('0x36')](function(_0x356a6b){if(_0x356a6b){if(!utils[_0xac4a('0xa0')](_0x3305a5)){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0xa1'));}return _0x356a6b[_0xac4a('0xa2')+_[_0xac4a('0xa3')](_0x3305a5[_0xac4a('0xa4')]())+_0xac4a('0xa5')](_0x5e1662['body'][_0xac4a('0x61')],{'penalty':_0x5e1662[_0xac4a('0x5e')][_0xac4a('0xa6')]||0x0})[_0xac4a('0xa7')](function(_0x237312){for(var _0x31afd2=0x0;_0x31afd2<_0x5e1662[_0xac4a('0x5e')][_0xac4a('0x61')]['length'];_0x31afd2+=0x1){var _0x5127ea={'UserId':Number(_0x5e1662[_0xac4a('0x4f')]['id'])};_0x5127ea[_[_0xac4a('0xa3')](_0x3305a5[_0xac4a('0xa4')]())+'QueueId']=Number(_0x5e1662['body']['ids'][_0x31afd2]);socket[_0xac4a('0xa8')]('user'+_[_0xac4a('0xa3')](_0x3305a5[_0xac4a('0xa4')]())+'Queue:save',_0x5127ea);}return _0x237312;})[_0xac4a('0x36')](function(){if(_0x3305a5==='voice'){return db[_0xac4a('0xa9')][_0xac4a('0x45')]({'where':{'id':_0x5e1662[_0xac4a('0x5e')][_0xac4a('0x61')]||[]},'raw':!![],'attributes':['id',_0xac4a('0x34')]});}})[_0xac4a('0x36')](function(_0x5e0602){var _0x25bf23=_0x356a6b[_0xac4a('0x28')]({'plain':!![]});var _0x2c03a1=[];if(_0x3305a5==='voice'&&_0x25bf23[_0xac4a('0x29')]===_0xac4a('0x2c')&&_0x25bf23[_0xac4a('0x9c')]){for(var _0x247856=0x0;_0x247856<_0x5e0602['length'];_0x247856+=0x1){_0x2c03a1[_0xac4a('0x44')]({'membername':_0x25bf23[_0xac4a('0x34')],'UserId':_0x25bf23['id'],'queue_name':_0x5e0602[_0x247856][_0xac4a('0x34')],'VoiceQueueId':_0x5e0602[_0x247856]['id'],'interface':_[_0xac4a('0x68')](_0x25bf23[_0xac4a('0x9f')])?util[_0xac4a('0xaa')]('SIP/%s',_0x25bf23['name']):_0x25bf23[_0xac4a('0x9f')],'paused':_0x25bf23[_0xac4a('0x9e')]||![],'penalty':_0x5e1662[_0xac4a('0x5e')][_0xac4a('0xa6')]||0x0});}return BPromise[_0xac4a('0xab')](_0x2c03a1,function(_0x1a12a2){return db['UserVoiceQueueRt'][_0xac4a('0xac')](_0x1a12a2);});}return _0x356a6b;});}})['then'](respondWithStatusCode(_0x53bcbc,null))[_0xac4a('0x1e')](handleError(_0x53bcbc,null));};exports['removeQueues']=function(_0xa1df14,_0x13b938){var _0x15f35a;return db[_0xac4a('0x3b')]['find']({'where':{'id':_0xa1df14[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29')]})[_0xac4a('0x36')](handleEntityNotFound(_0x13b938,null))[_0xac4a('0x36')](function(_0x520001){if(_0x520001){_0x15f35a=_0x520001;if(!_0xa1df14[_0xac4a('0x52')][_0xac4a('0x9b')]||!utils[_0xac4a('0xa0')](_0xa1df14[_0xac4a('0x52')][_0xac4a('0x9b')])){throw new db['Sequelize'][(_0xac4a('0x8d'))](_0xac4a('0xa1'));}return _0x520001[_0xac4a('0xad')+_[_0xac4a('0xa3')](_0xa1df14[_0xac4a('0x52')]['channel']['toLowerCase']())+'Queues'](_0xa1df14['query'][_0xac4a('0x61')]);}})[_0xac4a('0x36')](function(_0x17f815){if(_[_0xac4a('0xae')](_0xa1df14[_0xac4a('0x52')]['ids'])){for(var _0x293d49=0x0;_0x293d49<_0xa1df14[_0xac4a('0x52')]['ids'][_0xac4a('0x57')];_0x293d49+=0x1){var _0x11faad={'UserId':Number(_0xa1df14[_0xac4a('0x4f')]['id'])};_0x11faad[_['capitalize'](_0xa1df14[_0xac4a('0x52')][_0xac4a('0x9b')][_0xac4a('0xa4')]())+_0xac4a('0xaf')]=Number(_0xa1df14[_0xac4a('0x52')][_0xac4a('0x61')][_0x293d49]);socket[_0xac4a('0xa8')](_0xac4a('0x2b')+_[_0xac4a('0xa3')](_0xa1df14['query'][_0xac4a('0x9b')][_0xac4a('0xa4')]())+'Queue:remove',_0x11faad);}}else{var _0x11faad={'UserId':Number(_0xa1df14['params']['id'])};_0x11faad[_[_0xac4a('0xa3')](_0xa1df14[_0xac4a('0x52')]['channel'][_0xac4a('0xa4')]())+_0xac4a('0xaf')]=Number(_0xa1df14[_0xac4a('0x52')][_0xac4a('0x61')]);socket[_0xac4a('0xa8')](_0xac4a('0x2b')+_[_0xac4a('0xa3')](_0xa1df14[_0xac4a('0x52')]['channel']['toLowerCase']())+_0xac4a('0xb0'),_0x11faad);}return _0x17f815;})['then'](function(){if(_0xa1df14['query'][_0xac4a('0x9b')]===_0xac4a('0xb1')){return db[_0xac4a('0xb2')]['destroy']({'where':{'UserId':_0xa1df14[_0xac4a('0x4f')]['id'],'VoiceQueueId':_0xa1df14[_0xac4a('0x52')]['ids']},'individualHooks':!![]})['then'](function(){return _0x15f35a;});}return _0x15f35a;})[_0xac4a('0x36')](respondWithStatusCode(_0x13b938,null))[_0xac4a('0x1e')](handleError(_0x13b938,null));};exports[_0xac4a('0xb3')]=function(_0x368546,_0x4fadd1){_0x368546[_0xac4a('0x5e')][_0xac4a('0xb4')]=_0x368546[_0xac4a('0xb5')]['filename'];return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x368546[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x4fadd1,null))[_0xac4a('0x36')](saveUpdates(_0x368546['body'],null))['then'](respondWithResult(_0x4fadd1,null))[_0xac4a('0x1e')](handleError(_0x4fadd1,null));};exports[_0xac4a('0xb6')]=function(_0x1774e5,_0x110e16){var _0x14ca03=path[_0xac4a('0xb7')](config[_0xac4a('0xb8')],_0xac4a('0xb9'));return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x1774e5[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0xb4')],'raw':!![]})[_0xac4a('0x36')](handleEntityNotFound(_0x110e16,null))['then'](function(_0x3ef9b2){if(_0x3ef9b2){if(_['isNil'](_0x3ef9b2['userpic'])){return _0x110e16[_0xac4a('0xba')](_0x14ca03);}else{if(!fs[_0xac4a('0xbb')](path[_0xac4a('0xb7')](config[_0xac4a('0xb8')],_0xac4a('0xbc'),_0x3ef9b2[_0xac4a('0xb4')]))){return _0x110e16[_0xac4a('0xba')](_0x14ca03);}return _0x110e16[_0xac4a('0xba')](path[_0xac4a('0xb7')](config['root'],_0xac4a('0xbc'),_0x3ef9b2[_0xac4a('0xb4')]));}}})[_0xac4a('0x1e')](handleError(_0x110e16,null));};exports[_0xac4a('0xbd')]=function(_0x5c0bb8,_0x5b1934){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5c0bb8[_0xac4a('0x4f')]['id']},'attributes':['id']})[_0xac4a('0x36')](handleEntityNotFound(_0x5b1934,null))[_0xac4a('0x36')](function(_0x254de8){var _0x1c7ea7=[];values=_0x254de8[_0xac4a('0x4a')];_0x1c7ea7[_0xac4a('0x44')](get_open_tabs('chat',_0x254de8[_0xac4a('0x4a')]));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x4b'),_0x254de8[_0xac4a('0x4a')]));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs(_0xac4a('0x5a'),_0x254de8['dataValues']));_0x1c7ea7['push'](get_open_tabs('whatsapp',_0x254de8[_0xac4a('0x4a')]));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs('fax',_0x254de8['dataValues']));_0x1c7ea7[_0xac4a('0x44')](get_open_tabs('mail',_0x254de8[_0xac4a('0x4a')]));return BPromise['all'](_0x1c7ea7);})[_0xac4a('0x36')](function(_0x2abd82){var _0x1888c3=[];if(_0x2abd82){for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xbe')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xbe')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':'CHAT','id':_0x2303b7['id'],'createdAt':_0x2303b7['createdAt']});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xbf')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xbf')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':_0xac4a('0xc0'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xc2')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc2')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':_0xac4a('0xc3'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values['MailOpenTabs'][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc4')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':_0xac4a('0xc5'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xc6')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc6')][_0x27e640];_0x1888c3['push']({'channel':_0xac4a('0xc7'),'id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}for(var _0x27e640=0x0;_0x27e640<values[_0xac4a('0xc8')][_0xac4a('0x57')];_0x27e640++){var _0x2303b7=values[_0xac4a('0xc8')][_0x27e640];_0x1888c3[_0xac4a('0x44')]({'channel':'WHATSAPP','id':_0x2303b7['id'],'createdAt':_0x2303b7[_0xac4a('0xc1')]});}var _0x489208={'count':_0x1888c3[_0xac4a('0x57')],'rows':_0x1888c3};return _0x489208;}else return null;})[_0xac4a('0x36')](respondWithResult(_0x5b1934,null))['catch'](handleError(_0x5b1934,null));};exports[_0xac4a('0xc9')]=function(_0x21ddef,_0x38ecd8){var _0x53ce1f={};var _0x55ea84={};var _0x40c49b;var _0x494c3f;return db[_0xac4a('0x3b')]['findOne']({'where':{'id':_0x21ddef['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x38ecd8,null))[_0xac4a('0x36')](function(_0xa80dfb){if(_0xa80dfb){_0x40c49b=_0xa80dfb;_0x55ea84['model']=_[_0xac4a('0x51')](db[_0xac4a('0xca')]['rawAttributes']);_0x55ea84[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x21ddef['query']);_0x55ea84[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x55ea84[_0xac4a('0x55')],_0x55ea84[_0xac4a('0x52')]);_0x53ce1f[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x55ea84[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x21ddef['query'][_0xac4a('0x56')]));_0x53ce1f['attributes']=_0x53ce1f[_0xac4a('0x43')][_0xac4a('0x57')]?_0x53ce1f[_0xac4a('0x43')]:_0x55ea84[_0xac4a('0x55')];_0x53ce1f[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x21ddef['query'][_0xac4a('0xcc')]);_0x53ce1f[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x21ddef[_0xac4a('0x52')],_0x55ea84[_0xac4a('0x53')]));if(_0x21ddef[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x53ce1f['where']=_[_0xac4a('0x59')](_0x53ce1f['where'],{'$or':_[_0xac4a('0x30')](_0x53ce1f[_0xac4a('0x43')],function(_0x234fb8){var _0x184b79={};_0x184b79[_0x234fb8]={'$like':'%'+_0x21ddef['query']['filter']+'%'};return _0x184b79;})});}_0x53ce1f=_[_0xac4a('0x59')]({},_0x53ce1f,_0x21ddef[_0xac4a('0xce')]);return _0x40c49b[_0xac4a('0xc9')](_0x53ce1f);}})[_0xac4a('0x36')](function(_0x105061){if(_0x105061){_0x494c3f=_0x105061[_0xac4a('0x57')];if(_0x21ddef['query'][_0xac4a('0xcf')](_0xac4a('0x58'))){_0x53ce1f[_0xac4a('0x42')]=[{'model':db['CmList'],'as':_0xac4a('0xd0'),'required':![]},{'model':db[_0xac4a('0xd1')],'as':_0xac4a('0xd2'),'attributes':['id','name','color'],'where':_0x21ddef[_0xac4a('0x52')][_0xac4a('0xd3')]?{'id':_0x21ddef[_0xac4a('0x52')][_0xac4a('0xd3')]}:undefined,'required':_0x21ddef[_0xac4a('0x52')][_0xac4a('0xd3')]?!![]:![]}];}if(!_0x21ddef[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x53ce1f['limit']=qs['limit'](_0x21ddef[_0xac4a('0x52')][_0xac4a('0x24')]);_0x53ce1f[_0xac4a('0x22')]=qs['offset'](_0x21ddef[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x40c49b[_0xac4a('0xc9')](_0x53ce1f);}})['then'](function(_0x589ba9){if(_0x589ba9){return _0x589ba9?{'count':_0x494c3f,'rows':_0x589ba9}:null;}})[_0xac4a('0x36')](respondWithResult(_0x38ecd8,null))['catch'](handleError(_0x38ecd8,null));};exports[_0xac4a('0xd5')]=function(_0x10da11,_0x5a9872){var _0x149121;var _0x1f55b9;var _0x4cc6b7={};var _0xb7cbe2;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x10da11[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29')]})[_0xac4a('0x36')](handleEntityNotFound(_0x5a9872,null))[_0xac4a('0x36')](function(_0x1137df){if(!utils['isValidChannel'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}_0x149121=_0x1137df;var _0x12fec5={};_0x12fec5[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_[_0xac4a('0xa3')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+_0xac4a('0xd6')][_0xac4a('0x3c')]);_0x12fec5['query']=_['keys'](_0x10da11['query']);_0x12fec5[_0xac4a('0x53')]=_['intersection'](_0x12fec5['model'],_0x12fec5[_0xac4a('0x52')]);_0x4cc6b7['attributes']=_['intersection'](_0x12fec5['model'],qs[_0xac4a('0x56')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4cc6b7[_0xac4a('0x43')]=_0x4cc6b7[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4cc6b7[_0xac4a('0x43')]:_0x12fec5[_0xac4a('0x55')];_0x4cc6b7[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x10da11[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x4cc6b7[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x10da11['query'],_0x12fec5[_0xac4a('0x53')]));if(_0x10da11[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x4cc6b7[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x4cc6b7[_0xac4a('0x41')],{'$or':_['map'](_0x4cc6b7[_0xac4a('0x43')],function(_0x1f532b){var _0x1c3ba5={};_0x1c3ba5[_0x1f532b]={'$like':'%'+_0x10da11['query'][_0xac4a('0x2e')]+'%'};return _0x1c3ba5;})});}_0x4cc6b7=_['merge']({},_0x4cc6b7,_0x10da11[_0xac4a('0xce')]);switch(_0x149121[_0xac4a('0x29')]){case _0xac4a('0x2a'):return db[_['capitalize'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queue'][_0xac4a('0x45')](_0x4cc6b7);case _0xac4a('0x2b'):case'agent':return _0x149121[_0xac4a('0x28')+_['capitalize'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queues'](_0x4cc6b7);default:throw new db['Sequelize']['ValidationError']('Unknown\x20role');}})[_0xac4a('0x36')](function(_0x566369){_0xb7cbe2=_0x566369[_0xac4a('0x57')];if(!_0x10da11[_0xac4a('0x52')][_0xac4a('0xcf')]('nolimit')){_0x4cc6b7[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x10da11[_0xac4a('0x52')]['limit']);_0x4cc6b7[_0xac4a('0x22')]=qs['offset'](_0x10da11[_0xac4a('0x52')][_0xac4a('0x22')]);}switch(_0x149121['role']){case _0xac4a('0x2a'):return db[_[_0xac4a('0xa3')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queue'][_0xac4a('0x45')](_0x4cc6b7);case _0xac4a('0x2b'):case _0xac4a('0x2c'):return _0x149121[_0xac4a('0x28')+_[_0xac4a('0xa3')](_0x10da11[_0xac4a('0x52')][_0xac4a('0x9b')])+'Queues'](_0x4cc6b7);}})['then'](function(_0x5d1bc7){return{'count':_0xb7cbe2,'rows':_0x5d1bc7};})[_0xac4a('0x36')](respondWithResult(_0x5a9872,null))[_0xac4a('0x1e')](handleError(_0x5a9872,null));};exports['getVoiceQueuesRt']=function(_0x23a394,_0x10198d){var _0x4097e8={};var _0xfe4e8f={};var _0x5e4c0c;var _0x1babcd;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x23a394[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x10198d,null))[_0xac4a('0x36')](function(_0x4b9541){if(_0x4b9541){_0x5e4c0c=_0x4b9541;_0xfe4e8f['model']=_['keys'](db[_0xac4a('0xb2')][_0xac4a('0x3c')]);_0xfe4e8f['query']=_[_0xac4a('0x51')](_0x23a394[_0xac4a('0x52')]);_0xfe4e8f[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0xfe4e8f[_0xac4a('0x55')],_0xfe4e8f[_0xac4a('0x52')]);_0x4097e8[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0xfe4e8f[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x23a394[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4097e8['attributes']=_0x4097e8['attributes'][_0xac4a('0x57')]?_0x4097e8[_0xac4a('0x43')]:_0xfe4e8f[_0xac4a('0x55')];_0x4097e8[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x23a394['query'][_0xac4a('0xcc')]);_0x4097e8['where']=qs['filters'](_['pick'](_0x23a394['query'],_0xfe4e8f[_0xac4a('0x53')]));if(_0x23a394[_0xac4a('0x52')]['filter']){_0x4097e8[_0xac4a('0x41')]=_['merge'](_0x4097e8[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x4097e8[_0xac4a('0x43')],function(_0x50b125){var _0x3a49fb={};_0x3a49fb[_0x50b125]={'$like':'%'+_0x23a394[_0xac4a('0x52')]['filter']+'%'};return _0x3a49fb;})});}_0x4097e8=_[_0xac4a('0x59')]({},_0x4097e8,_0x23a394[_0xac4a('0xce')]);return _0x5e4c0c['getVoiceQueuesRt'](_0x4097e8);}})[_0xac4a('0x36')](function(_0x5096fd){if(_0x5096fd){_0x1babcd=_0x5096fd[_0xac4a('0x57')];if(!_0x23a394[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x4097e8['limit']=qs[_0xac4a('0x24')](_0x23a394[_0xac4a('0x52')][_0xac4a('0x24')]);_0x4097e8[_0xac4a('0x22')]=qs['offset'](_0x23a394[_0xac4a('0x52')]['offset']);}return _0x5e4c0c[_0xac4a('0xd7')](_0x4097e8);}})[_0xac4a('0x36')](function(_0xaae5c3){if(_0xaae5c3){return _0xaae5c3?{'count':_0x1babcd,'rows':_0xaae5c3}:null;}})[_0xac4a('0x36')](respondWithResult(_0x10198d,null))[_0xac4a('0x1e')](handleError(_0x10198d,null));};exports[_0xac4a('0xd8')]=function(_0x24d50b,_0xba4962){var _0x4efa4b={};var _0x4bd4cd={};var _0x2e7afc;var _0x33fddd;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x24d50b['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0xba4962,null))[_0xac4a('0x36')](function(_0x7c60ab){if(_0x7c60ab){_0x2e7afc=_0x7c60ab;_0x4bd4cd[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xd9')][_0xac4a('0x3c')]);_0x4bd4cd[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x24d50b['query']);_0x4bd4cd[_0xac4a('0x53')]=_['intersection'](_0x4bd4cd[_0xac4a('0x55')],_0x4bd4cd[_0xac4a('0x52')]);_0x4efa4b[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x4bd4cd[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x24d50b[_0xac4a('0x52')]['fields']));_0x4efa4b[_0xac4a('0x43')]=_0x4efa4b[_0xac4a('0x43')]['length']?_0x4efa4b[_0xac4a('0x43')]:_0x4bd4cd[_0xac4a('0x55')];_0x4efa4b[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x24d50b[_0xac4a('0x52')]['sort']);_0x4efa4b[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x24d50b[_0xac4a('0x52')],_0x4bd4cd['filters']));if(_0x24d50b['query'][_0xac4a('0x2e')]){_0x4efa4b['where']=_[_0xac4a('0x59')](_0x4efa4b[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x4efa4b[_0xac4a('0x43')],function(_0x2852c7){var _0x74693={};_0x74693[_0x2852c7]={'$like':'%'+_0x24d50b[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x74693;})});}_0x4efa4b=_[_0xac4a('0x59')]({},_0x4efa4b,_0x24d50b[_0xac4a('0xce')]);return _0x2e7afc[_0xac4a('0xd8')](_0x4efa4b);}})['then'](function(_0x495d4e){if(_0x495d4e){_0x33fddd=_0x495d4e[_0xac4a('0x57')];if(!_0x24d50b[_0xac4a('0x52')][_0xac4a('0xcf')]('nolimit')){_0x4efa4b['limit']=qs[_0xac4a('0x24')](_0x24d50b[_0xac4a('0x52')]['limit']);_0x4efa4b[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x24d50b['query'][_0xac4a('0x22')]);}return _0x2e7afc[_0xac4a('0xd8')](_0x4efa4b);}})['then'](function(_0x4c05df){if(_0x4c05df){return _0x4c05df?{'count':_0x33fddd,'rows':_0x4c05df}:null;}})['then'](respondWithResult(_0xba4962,null))[_0xac4a('0x1e')](handleError(_0xba4962,null));};exports[_0xac4a('0xda')]=function(_0x35c58e,_0x58bf1d){var _0x1b57d9={'raw':!![],'where':{}};var _0x186cdc={};var _0x5b6efe={'count':0x0,'rows':[]};return db['User'][_0xac4a('0x95')]({'where':{'id':_0x35c58e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x58bf1d,null))['then'](function(_0x1eb063){if(_0x1eb063){_0x186cdc[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xdb')][_0xac4a('0x3c')]);_0x186cdc[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x35c58e[_0xac4a('0x52')]);_0x186cdc[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x186cdc[_0xac4a('0x55')],_0x186cdc['query']);_0x1b57d9['attributes']=_['intersection'](_0x186cdc[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x35c58e[_0xac4a('0x52')][_0xac4a('0x56')]));_0x1b57d9[_0xac4a('0x43')]=_0x1b57d9['attributes'][_0xac4a('0x57')]?_0x1b57d9['attributes']:_0x186cdc[_0xac4a('0x55')];if(!_0x35c58e[_0xac4a('0x52')]['hasOwnProperty'](_0xac4a('0xd4'))){_0x1b57d9['limit']=qs[_0xac4a('0x24')](_0x35c58e[_0xac4a('0x52')][_0xac4a('0x24')]);_0x1b57d9[_0xac4a('0x22')]=qs['offset'](_0x35c58e[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x1b57d9['order']=qs[_0xac4a('0xcc')](_0x35c58e['query'][_0xac4a('0xcc')]);_0x1b57d9[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x35c58e[_0xac4a('0x52')],_0x186cdc[_0xac4a('0x53')]));_0x1b57d9[_0xac4a('0x41')]['UserId']=_0x1eb063['id'];if(_0x35c58e[_0xac4a('0x52')]['filter']){_0x1b57d9[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x1b57d9[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x1b57d9[_0xac4a('0x43')],function(_0x1b2719){var _0x2e433e={};_0x2e433e[_0x1b2719]={'$like':'%'+_0x35c58e[_0xac4a('0x52')]['filter']+'%'};return _0x2e433e;})});}_0x1b57d9=_[_0xac4a('0x59')]({},_0x1b57d9,_0x35c58e[_0xac4a('0xce')]);return db[_0xac4a('0xdb')]['count']({'where':_0x1b57d9[_0xac4a('0x41')]})['then'](function(_0x2487bd){_0x5b6efe[_0xac4a('0x25')]=_0x2487bd;if(_0x35c58e[_0xac4a('0x52')][_0xac4a('0x58')]){_0x1b57d9[_0xac4a('0x42')]=[{'all':!![]}];}return db[_0xac4a('0xdb')]['findAll'](_0x1b57d9);})[_0xac4a('0x36')](function(_0x396aa9){_0x5b6efe[_0xac4a('0x46')]=_0x396aa9;return _0x5b6efe;});}})[_0xac4a('0x36')](respondWithFilteredResult(_0x58bf1d,_0x1b57d9))[_0xac4a('0x1e')](handleError(_0x58bf1d,null));};exports['getScreenRecordings']=function(_0x2cd0ba,_0x5c0793){var _0x23b095={'raw':!![],'where':{}};var _0x3eef4e={};var _0x548ce0={'count':0x0,'rows':[]};return db[_0xac4a('0x3b')]['findOne']({'where':{'id':_0x2cd0ba[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5c0793,null))[_0xac4a('0x36')](function(_0x26f36a){if(_0x26f36a){_0x3eef4e[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xdc')][_0xac4a('0x3c')]);_0x3eef4e['query']=_[_0xac4a('0x51')](_0x2cd0ba['query']);_0x3eef4e[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x3eef4e[_0xac4a('0x55')],_0x3eef4e[_0xac4a('0x52')]);_0x23b095[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x3eef4e[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x56')]));_0x23b095[_0xac4a('0x43')]=_0x23b095[_0xac4a('0x43')][_0xac4a('0x57')]?_0x23b095[_0xac4a('0x43')]:_0x3eef4e[_0xac4a('0x55')];if(!_0x2cd0ba[_0xac4a('0x52')]['hasOwnProperty'](_0xac4a('0xd4'))){_0x23b095[_0xac4a('0x24')]=qs['limit'](_0x2cd0ba[_0xac4a('0x52')]['limit']);_0x23b095[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x23b095[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x2cd0ba['query']['sort']);_0x23b095[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x2cd0ba[_0xac4a('0x52')],_0x3eef4e[_0xac4a('0x53')]));_0x23b095[_0xac4a('0x41')][_0xac4a('0xdd')]=_0x26f36a['id'];if(_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x23b095['where']=_[_0xac4a('0x59')](_0x23b095['where'],{'$or':_[_0xac4a('0x30')](_0x23b095['attributes'],function(_0x50d3df){var _0x137fe0={};_0x137fe0[_0x50d3df]={'$like':'%'+_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x137fe0;})});}_0x23b095=_[_0xac4a('0x59')]({},_0x23b095,_0x2cd0ba['options']);return db[_0xac4a('0xdc')][_0xac4a('0x25')]({'where':_0x23b095['where']})[_0xac4a('0x36')](function(_0x33dd86){_0x548ce0[_0xac4a('0x25')]=_0x33dd86;if(_0x2cd0ba[_0xac4a('0x52')][_0xac4a('0x58')]){_0x23b095[_0xac4a('0x42')]=[{'all':!![]}];}return db['ScreenRecording']['findAll'](_0x23b095);})[_0xac4a('0x36')](function(_0x578112){_0x548ce0[_0xac4a('0x46')]=_0x578112;return _0x548ce0;});}})['then'](respondWithFilteredResult(_0x5c0793,_0x23b095))[_0xac4a('0x1e')](handleError(_0x5c0793,null));};exports[_0xac4a('0xde')]=function(_0x5cb6ed,_0x22df94){var _0x57876f={};var _0x4dca33={};var _0x9e2cba;var _0x11d24a;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x5cb6ed[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x22df94,null))[_0xac4a('0x36')](function(_0x5c73fd){if(_0x5c73fd){_0x9e2cba=_0x5c73fd;_0x4dca33[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xdf')][_0xac4a('0x3c')]);_0x4dca33[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x5cb6ed[_0xac4a('0x52')]);_0x4dca33[_0xac4a('0x53')]=_['intersection'](_0x4dca33[_0xac4a('0x55')],_0x4dca33[_0xac4a('0x52')]);_0x57876f[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x4dca33[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0x56')]));_0x57876f[_0xac4a('0x43')]=_0x57876f[_0xac4a('0x43')][_0xac4a('0x57')]?_0x57876f[_0xac4a('0x43')]:_0x4dca33[_0xac4a('0x55')];_0x57876f[_0xac4a('0xcb')]=qs['sort'](_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x57876f[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x5cb6ed[_0xac4a('0x52')],_0x4dca33['filters']));if(_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x57876f[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x57876f[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x57876f[_0xac4a('0x43')],function(_0x2a0700){var _0x5cfce3={};_0x5cfce3[_0x2a0700]={'$like':'%'+_0x5cb6ed['query']['filter']+'%'};return _0x5cfce3;})});}_0x57876f=_[_0xac4a('0x59')]({},_0x57876f,_0x5cb6ed['options']);return _0x9e2cba[_0xac4a('0xde')](_0x57876f);}})['then'](function(_0x42df7b){if(_0x42df7b){_0x11d24a=_0x42df7b['length'];if(!_0x5cb6ed[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x57876f['limit']=qs[_0xac4a('0x24')](_0x5cb6ed[_0xac4a('0x52')]['limit']);_0x57876f[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x5cb6ed['query']['offset']);}return _0x9e2cba[_0xac4a('0xde')](_0x57876f);}})[_0xac4a('0x36')](function(_0x540e98){if(_0x540e98){return _0x540e98?{'count':_0x11d24a,'rows':_0x540e98}:null;}})[_0xac4a('0x36')](respondWithResult(_0x22df94,null))[_0xac4a('0x1e')](handleError(_0x22df94,null));};exports[_0xac4a('0xe0')]=function(_0x168f4b,_0x10fbce){var _0x3708b3={};var _0x41f08e={};var _0x4ea092;var _0x2c6aa1;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x168f4b[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x10fbce,null))[_0xac4a('0x36')](function(_0x393409){if(_0x393409){_0x4ea092=_0x393409;_0x41f08e[_0xac4a('0x55')]=_[_0xac4a('0x51')](db['OpenchannelInteraction'][_0xac4a('0x3c')]);_0x41f08e[_0xac4a('0x52')]=_['keys'](_0x168f4b[_0xac4a('0x52')]);_0x41f08e[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x41f08e[_0xac4a('0x55')],_0x41f08e[_0xac4a('0x52')]);_0x3708b3[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x41f08e['model'],qs[_0xac4a('0x56')](_0x168f4b['query'][_0xac4a('0x56')]));_0x3708b3[_0xac4a('0x43')]=_0x3708b3[_0xac4a('0x43')]['length']?_0x3708b3[_0xac4a('0x43')]:_0x41f08e['model'];_0x3708b3[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x168f4b[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x3708b3[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x168f4b[_0xac4a('0x52')],_0x41f08e[_0xac4a('0x53')]));if(_0x168f4b[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x3708b3[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x3708b3['where'],{'$or':_[_0xac4a('0x30')](_0x3708b3[_0xac4a('0x43')],function(_0x218f41){var _0x277c11={};_0x277c11[_0x218f41]={'$like':'%'+_0x168f4b['query'][_0xac4a('0x2e')]+'%'};return _0x277c11;})});}_0x3708b3=_['merge']({},_0x3708b3,_0x168f4b[_0xac4a('0xce')]);return _0x4ea092[_0xac4a('0xe0')](_0x3708b3);}})[_0xac4a('0x36')](function(_0x1d1410){if(_0x1d1410){_0x2c6aa1=_0x1d1410[_0xac4a('0x57')];if(!_0x168f4b[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x3708b3['limit']=qs[_0xac4a('0x24')](_0x168f4b[_0xac4a('0x52')]['limit']);_0x3708b3['offset']=qs['offset'](_0x168f4b[_0xac4a('0x52')]['offset']);}return _0x4ea092[_0xac4a('0xe0')](_0x3708b3);}})['then'](function(_0x401ff3){if(_0x401ff3){return _0x401ff3?{'count':_0x2c6aa1,'rows':_0x401ff3}:null;}})[_0xac4a('0x36')](respondWithResult(_0x10fbce,null))[_0xac4a('0x1e')](handleError(_0x10fbce,null));};exports[_0xac4a('0xe1')]=function(_0x25911e,_0x405ca7){var _0x292110={'raw':!![],'where':{}};var _0x2e107e={};var _0xc381f0={'count':0x0,'rows':[]};return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x25911e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x405ca7,null))['then'](function(_0x274785){if(_0x274785){_0x2e107e[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xe2')][_0xac4a('0x3c')]);_0x2e107e[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x25911e['query']);_0x2e107e[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x2e107e[_0xac4a('0x55')],_0x2e107e[_0xac4a('0x52')]);_0x292110['attributes']=_[_0xac4a('0x54')](_0x2e107e[_0xac4a('0x55')],qs['fields'](_0x25911e[_0xac4a('0x52')]['fields']));_0x292110[_0xac4a('0x43')]=_0x292110[_0xac4a('0x43')][_0xac4a('0x57')]?_0x292110['attributes']:_0x2e107e[_0xac4a('0x55')];if(!_0x25911e[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x292110[_0xac4a('0x24')]=qs['limit'](_0x25911e[_0xac4a('0x52')][_0xac4a('0x24')]);_0x292110['offset']=qs[_0xac4a('0x22')](_0x25911e[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x292110[_0xac4a('0xcb')]=qs['sort'](_0x25911e[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x292110['where']=qs['filters'](_[_0xac4a('0xcd')](_0x25911e[_0xac4a('0x52')],_0x2e107e[_0xac4a('0x53')]));_0x292110[_0xac4a('0x41')][_0xac4a('0xdd')]=_0x274785['id'];if(_0x25911e['query'][_0xac4a('0x2e')]){_0x292110['where']=_[_0xac4a('0x59')](_0x292110[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x292110[_0xac4a('0x43')],function(_0x1e69d0){var _0x2eb65a={};_0x2eb65a[_0x1e69d0]={'$like':'%'+_0x25911e['query']['filter']+'%'};return _0x2eb65a;})});}_0x292110=_[_0xac4a('0x59')]({},_0x292110,_0x25911e['options']);return db[_0xac4a('0xe2')][_0xac4a('0x25')]({'where':_0x292110[_0xac4a('0x41')]})[_0xac4a('0x36')](function(_0x4875de){_0xc381f0[_0xac4a('0x25')]=_0x4875de;if(_0x25911e[_0xac4a('0x52')]['includeAll']){_0x292110[_0xac4a('0x42')]=[{'all':!![]}];}return db[_0xac4a('0xe2')][_0xac4a('0x45')](_0x292110);})[_0xac4a('0x36')](function(_0x2895ae){_0xc381f0[_0xac4a('0x46')]=_0x2895ae;return _0xc381f0;});}})['then'](respondWithFilteredResult(_0x405ca7,_0x292110))[_0xac4a('0x1e')](handleError(_0x405ca7,null));};exports[_0xac4a('0xe3')]=function(_0x471cbb,_0x2ade25){var _0x5a1855={};var _0x659e61={};var _0x405ce7;var _0x6e82e;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x471cbb[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2ade25,null))[_0xac4a('0x36')](function(_0x40b005){if(_0x40b005){_0x405ce7=_0x40b005;_0x659e61[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0xe4')][_0xac4a('0x3c')]);_0x659e61['query']=_[_0xac4a('0x51')](_0x471cbb[_0xac4a('0x52')]);_0x659e61[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x659e61[_0xac4a('0x55')],_0x659e61[_0xac4a('0x52')]);_0x5a1855[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x659e61['model'],qs[_0xac4a('0x56')](_0x471cbb[_0xac4a('0x52')]['fields']));_0x5a1855[_0xac4a('0x43')]=_0x5a1855[_0xac4a('0x43')][_0xac4a('0x57')]?_0x5a1855[_0xac4a('0x43')]:_0x659e61[_0xac4a('0x55')];_0x5a1855[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x471cbb[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x5a1855[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x471cbb[_0xac4a('0x52')],_0x659e61[_0xac4a('0x53')]));if(_0x471cbb[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x5a1855['where']=_[_0xac4a('0x59')](_0x5a1855[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x5a1855['attributes'],function(_0x3732b3){var _0x5197c1={};_0x5197c1[_0x3732b3]={'$like':'%'+_0x471cbb['query'][_0xac4a('0x2e')]+'%'};return _0x5197c1;})});}_0x5a1855=_[_0xac4a('0x59')]({},_0x5a1855,_0x471cbb[_0xac4a('0xce')]);return _0x405ce7[_0xac4a('0xe3')](_0x5a1855);}})[_0xac4a('0x36')](function(_0x3a9f10){if(_0x3a9f10){_0x6e82e=_0x3a9f10['length'];if(!_0x471cbb[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x5a1855['limit']=qs[_0xac4a('0x24')](_0x471cbb['query']['limit']);_0x5a1855[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x471cbb['query'][_0xac4a('0x22')]);}return _0x405ce7[_0xac4a('0xe3')](_0x5a1855);}})[_0xac4a('0x36')](function(_0x384050){if(_0x384050){return _0x384050?{'count':_0x6e82e,'rows':_0x384050}:null;}})[_0xac4a('0x36')](respondWithResult(_0x2ade25,null))['catch'](handleError(_0x2ade25,null));};exports[_0xac4a('0xe5')]=function(_0x215812,_0x41ccf0){var _0x324121={};var _0x1de629={};var _0x570843;var _0x2c999d;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x215812[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x41ccf0,null))['then'](function(_0x499f8f){if(_0x499f8f){_0x570843=_0x499f8f;_0x1de629[_0xac4a('0x55')]=_[_0xac4a('0x51')](db['FaxInteraction']['rawAttributes']);_0x1de629[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x215812[_0xac4a('0x52')]);_0x1de629['filters']=_[_0xac4a('0x54')](_0x1de629['model'],_0x1de629['query']);_0x324121[_0xac4a('0x43')]=_['intersection'](_0x1de629[_0xac4a('0x55')],qs['fields'](_0x215812[_0xac4a('0x52')][_0xac4a('0x56')]));_0x324121[_0xac4a('0x43')]=_0x324121['attributes'][_0xac4a('0x57')]?_0x324121[_0xac4a('0x43')]:_0x1de629[_0xac4a('0x55')];_0x324121['order']=qs[_0xac4a('0xcc')](_0x215812[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x324121[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x215812['query'],_0x1de629[_0xac4a('0x53')]));if(_0x215812['query']['filter']){_0x324121[_0xac4a('0x41')]=_['merge'](_0x324121['where'],{'$or':_[_0xac4a('0x30')](_0x324121[_0xac4a('0x43')],function(_0x5bb24f){var _0x379ad7={};_0x379ad7[_0x5bb24f]={'$like':'%'+_0x215812[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x379ad7;})});}_0x324121=_[_0xac4a('0x59')]({},_0x324121,_0x215812[_0xac4a('0xce')]);return _0x570843[_0xac4a('0xe5')](_0x324121);}})['then'](function(_0x541098){if(_0x541098){_0x2c999d=_0x541098[_0xac4a('0x57')];if(!_0x215812[_0xac4a('0x52')][_0xac4a('0xcf')]('nolimit')){_0x324121[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x215812[_0xac4a('0x52')][_0xac4a('0x24')]);_0x324121[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x215812[_0xac4a('0x52')]['offset']);}return _0x570843['getFaxInteractions'](_0x324121);}})['then'](function(_0x26ae42){if(_0x26ae42){return _0x26ae42?{'count':_0x2c999d,'rows':_0x26ae42}:null;}})[_0xac4a('0x36')](respondWithResult(_0x41ccf0,null))[_0xac4a('0x1e')](handleError(_0x41ccf0,null));};exports[_0xac4a('0xe6')]=function(_0x4b12c8,_0x357814){var _0x24d8b0={};var _0x2775e2={};var _0x481a63;var _0x41ae8f;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x4b12c8[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x357814,null))[_0xac4a('0x36')](function(_0xa5416f){if(_0xa5416f){_0x481a63=_0xa5416f;_0x2775e2['model']=_[_0xac4a('0x51')](db[_0xac4a('0xe7')][_0xac4a('0x3c')]);_0x2775e2[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x4b12c8[_0xac4a('0x52')]);_0x2775e2[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x2775e2[_0xac4a('0x55')],_0x2775e2[_0xac4a('0x52')]);_0x24d8b0[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x2775e2[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x56')]));_0x24d8b0['attributes']=_0x24d8b0[_0xac4a('0x43')]['length']?_0x24d8b0['attributes']:_0x2775e2[_0xac4a('0x55')];_0x24d8b0['order']=qs[_0xac4a('0xcc')](_0x4b12c8['query']['sort']);_0x24d8b0['where']=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x4b12c8[_0xac4a('0x52')],_0x2775e2['filters']));if(_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x24d8b0['where']=_[_0xac4a('0x59')](_0x24d8b0['where'],{'$or':_[_0xac4a('0x30')](_0x24d8b0[_0xac4a('0x43')],function(_0x532ba0){var _0x3fa8a8={};_0x3fa8a8[_0x532ba0]={'$like':'%'+_0x4b12c8['query'][_0xac4a('0x2e')]+'%'};return _0x3fa8a8;})});}_0x24d8b0=_[_0xac4a('0x59')]({},_0x24d8b0,_0x4b12c8[_0xac4a('0xce')]);return _0x481a63[_0xac4a('0xe6')](_0x24d8b0);}})[_0xac4a('0x36')](function(_0x509459){if(_0x509459){_0x41ae8f=_0x509459[_0xac4a('0x57')];if(!_0x4b12c8[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x24d8b0[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x24')]);_0x24d8b0['offset']=qs[_0xac4a('0x22')](_0x4b12c8[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x481a63['getWhatsappInteractions'](_0x24d8b0);}})[_0xac4a('0x36')](function(_0x326ab4){if(_0x326ab4){return _0x326ab4?{'count':_0x41ae8f,'rows':_0x326ab4}:null;}})[_0xac4a('0x36')](respondWithResult(_0x357814,null))['catch'](handleError(_0x357814,null));};exports[_0xac4a('0xe8')]=function(_0xc0771,_0x529c7c,_0x45e354){var _0xa674d;var _0x29b319;var _0x3a248d;var _0x3da3df=!_[_0xac4a('0x68')](_0xc0771[_0xac4a('0x4f')]['id'])?_0xc0771['params']['id']:!_['isNil'](_0xc0771['user']['id'])?_0xc0771[_0xac4a('0x2b')]['id']:null;return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x3da3df,'role':{'$or':['admin',_0xac4a('0x2b'),'agent']}},'attributes':['id',_0xac4a('0x34'),_0xac4a('0xe9'),'mobile',_0xac4a('0x29'),_0xac4a('0x63'),_0xac4a('0x9d')]})[_0xac4a('0x36')](function(_0x4facb){if(_0x4facb){if(_0x4facb[_0xac4a('0x29')]===_0xac4a('0x2c')){_0xa674d=_0x4facb;if(_0xc0771[_0xac4a('0x5e')]['interface']){_0x3a248d=util[_0xac4a('0xaa')]('LOCAL/%s@from-sip/n',_0xa674d[_0xc0771['body'][_0xac4a('0x9f')]]);}else if(_0xc0771['body']['intrf']){_0x3a248d=util[_0xac4a('0xaa')](_0xac4a('0xea'),_0xc0771['body'][_0xac4a('0xeb')]);}else{_0x3a248d=util[_0xac4a('0xaa')]('SIP/%s',_0xa674d[_0xac4a('0x34')]);}socket['to'](util[_0xac4a('0xaa')](_0xac4a('0xec'),_0xa674d['name']))[_0xac4a('0xa8')]('user:forcelogout',{'user':{'id':_0xa674d['id'],'name':_0xa674d[_0xac4a('0x34')]},'ip':_0xc0771['headers'][_0xac4a('0xed')]||_0xc0771['connection'][_0xac4a('0xee')]||_0xc0771[_0xac4a('0xef')][_0xac4a('0xee')]||_0xc0771[_0xac4a('0xf0')][_0xac4a('0xef')][_0xac4a('0xee')]});return db[_0xac4a('0xb2')]['destroy']({'where':{'membername':_0xa674d[_0xac4a('0x34')]},'individualHooks':!![]});}}else{throw new db[(_0xac4a('0x8c'))]['ValidationError'](_0xac4a('0xf1'));}})[_0xac4a('0x36')](function(){if(_0xa674d){return _0xa674d[_0xac4a('0xf2')]({'raw':!![]});}})['then'](function(_0x23bd18){if(_0xa674d){var _0x575fff=[];if(_0x23bd18){_0x29b319=_0x23bd18;if(_0x29b319[_0xac4a('0x57')]){for(var _0xb02b7c=0x0;_0xb02b7c<_0x29b319['length'];_0xb02b7c++){_0x575fff['push']({'membername':_0xa674d['name'],'UserId':_0xa674d['id'],'queue_name':_0x29b319[_0xb02b7c][_0xac4a('0x34')],'VoiceQueueId':_0x29b319[_0xb02b7c]['id'],'interface':_0x3a248d,'paused':_0xa674d[_0xac4a('0x9d')]||![],'penalty':_0x29b319[_0xb02b7c][_0xac4a('0xf3')]||0x0});}return BPromise[_0xac4a('0xab')](_0x575fff,function(_0x1f9022){return db[_0xac4a('0xb2')][_0xac4a('0xac')](_0x1f9022);});}}}})['then'](function(){if(_0xa674d){return db[_0xac4a('0xf4')][_0xac4a('0x45')]({'where':{'membername':_0xa674d[_0xac4a('0x34')],'exitAt':null}});}})[_0xac4a('0x36')](function(_0x38d7ac){if(_0xa674d){var _0x444a18=[];_0x38d7ac[_0xac4a('0xf5')](function(_0x18932e){_0x444a18[_0xac4a('0x44')](_0x18932e[_0xac4a('0x5d')]({'exitAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6'))}));});return BPromise[_0xac4a('0x5c')](_0x444a18);}})[_0xac4a('0x36')](function(){if(_0xa674d){var _0x45d2d1=[];var _0x93fe5d=[];var _0x2f83fd=utils[_0xac4a('0xf7')]();var _0x260170={'membername':_0xa674d['name'],'interface':_0x3a248d,'enterAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'role':_0xa674d[_0xac4a('0x29')],'internal':_0xa674d[_0xac4a('0x63')]};_0x2f83fd[_0xac4a('0xf5')](function(_0x124a01){_0x45d2d1[_0xac4a('0x44')](_[_0xac4a('0x59')]({'channel':_0x124a01,'type':_0xac4a('0xf8'),'data1':_0xc0771[_0xac4a('0x5e')][_0xac4a('0xf9')],'data2':_0x3a248d},_0x260170));if(_0xa674d[_0xac4a('0x9d')]){_0x93fe5d[_0xac4a('0x44')](_[_0xac4a('0x59')]({'channel':_0x124a01,'type':_0xac4a('0xfa'),'data1':_0xac4a('0xfb')},_0x260170));}});return db[_0xac4a('0xf4')]['bulkCreate'](_0x45d2d1['concat'](_0x93fe5d),{'individualHooks':!![]});}})[_0xac4a('0x36')](function(){if(_0xa674d){return _0xa674d[_0xac4a('0x5d')]({'online':!![],'lastLoginAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'voicePause':_0xa674d[_0xac4a('0x9d')]||![],'mailPause':_0xa674d['loginInPause']||![],'chatPause':_0xa674d['loginInPause']||![],'faxPause':_0xa674d[_0xac4a('0x9d')]||![],'smsPause':_0xa674d[_0xac4a('0x9d')]||![],'openchannelPause':_0xa674d[_0xac4a('0x9d')]||![],'whatsappPause':_0xa674d['loginInPause']||![],'pauseType':_0xa674d[_0xac4a('0x9d')]?'LOGININPAUSE':null,'interface':_0x3a248d,'lastPauseAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6'))});}})[_0xac4a('0x36')](function(_0xacdad9){if(_0xc0771[_0xac4a('0xfc')]){return _0x45e354();}else{return BPromise['resolve'](_0xacdad9)[_0xac4a('0x36')](respondWithResult(_0x529c7c,null));}})[_0xac4a('0x1e')](handleError(_0x529c7c,null));};exports[_0xac4a('0xfd')]=function(_0x5b8753,_0x3e9e25){var _0x942c1b;return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5b8753[_0xac4a('0x4f')]['id'],'role':_0xac4a('0x2c')},'attributes':['id','name',_0xac4a('0x29')]})[_0xac4a('0x36')](handleEntityNotFound(_0x3e9e25,null))['then'](function(_0x9cc601){if(_0x9cc601){_0x942c1b=_0x9cc601;return db[_0xac4a('0xb2')][_0xac4a('0x35')]({'where':{'membername':_0x942c1b[_0xac4a('0x34')]},'individualHooks':!![]});}})['then'](function(){return db[_0xac4a('0xf4')]['findAll']({'where':{'membername':_0x942c1b[_0xac4a('0x34')],'exitAt':null}});})[_0xac4a('0x36')](function(_0x33b4c1){var _0x5f384b=[];_0x33b4c1[_0xac4a('0xf5')](function(_0xbf640a){_0x5f384b[_0xac4a('0x44')](_0xbf640a[_0xac4a('0x5d')]({'exitAt':moment()[_0xac4a('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x5f384b);})[_0xac4a('0x36')](function(){return _0x942c1b[_0xac4a('0x5d')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xac4a('0x36')](respondWithResult(_0x3e9e25,null))[_0xac4a('0x1e')](handleError(_0x3e9e25,null));};exports['pause']=function(_0x217df7,_0x25431f){var _0x5d2a47;return db[_0xac4a('0xb2')][_0xac4a('0x5d')]({'paused':0x1},{'where':{'UserId':_0x217df7[_0xac4a('0x4f')]['id']},'individualHooks':!![]})[_0xac4a('0x36')](function(){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x217df7['params']['id'],'role':_0xac4a('0x2c')},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29'),_0xac4a('0x63'),_0xac4a('0x9f')]});})[_0xac4a('0x36')](handleEntityNotFound(_0x25431f,null))[_0xac4a('0x36')](function(_0x485206){if(_0x485206){_0x5d2a47=_0x485206;return respondWithRpcPromise(_0xac4a('0xfe'),'pause',{'id':_0x5d2a47['id'],'name':_0x5d2a47[_0xac4a('0x34')],'pause':!![]});}})[_0xac4a('0x36')](function(){if(_0x5d2a47){return db[_0xac4a('0xf4')][_0xac4a('0x45')]({'where':{'membername':_0x5d2a47[_0xac4a('0x34')],'type':_0xac4a('0xfa'),'exitAt':null}});}})['then'](function(_0x1d8901){if(_0x1d8901[_0xac4a('0x57')]){var _0x270cda=moment()['format'](_0xac4a('0xf6'));for(var _0x4a03f6=0x0,_0x3447fe=_0x1d8901[_0xac4a('0x57')];_0x4a03f6<_0x3447fe;_0x4a03f6++){_0x1d8901[_0x4a03f6][_0xac4a('0xff')]({'exitAt':_0x270cda});}}})[_0xac4a('0x36')](function(){var _0x156682=[];var _0x39ddce=utils[_0xac4a('0xf7')]();_0x39ddce[_0xac4a('0xf5')](function(_0xef624c){_0x156682[_0xac4a('0x44')]({'channel':_0xef624c,'membername':_0x5d2a47[_0xac4a('0x34')],'interface':_[_0xac4a('0x68')](_0x5d2a47[_0xac4a('0x9f')])?util[_0xac4a('0xaa')](_0xac4a('0xea'),_0x5d2a47['name']):_0x5d2a47[_0xac4a('0x9f')],'type':'PAUSE','enterAt':moment()['format'](_0xac4a('0xf6')),'data1':_0x217df7[_0xac4a('0x5e')]['type']||_0xac4a('0x100'),'role':_0x5d2a47[_0xac4a('0x29')],'internal':_0x5d2a47[_0xac4a('0x63')]});});return db[_0xac4a('0xf4')][_0xac4a('0x83')](_0x156682,{'individualHooks':!![]});})[_0xac4a('0x36')](function(){return _0x5d2a47[_0xac4a('0x5d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x217df7[_0xac4a('0x5e')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xac4a('0xf6'))});})['then'](respondWithResult(_0x25431f,null))['catch'](handleError(_0x25431f,null));};exports[_0xac4a('0x101')]=function(_0x4bc8cd,_0x459833){var _0x2f6d72;return db['User'][_0xac4a('0x33')]({'where':{'id':_0x4bc8cd[_0xac4a('0x4f')]['id']},'attributes':['id',_0xac4a('0x34'),_0xac4a('0x29'),_0xac4a('0x9e'),_0xac4a('0x102'),'chatPause',_0xac4a('0x103'),_0xac4a('0x104'),_0xac4a('0x105'),_0xac4a('0x106'),'pauseType',_0xac4a('0x107')]})[_0xac4a('0x36')](handleEntityNotFound(_0x459833,null))['then'](function(_0xc3ab07){if(_0xc3ab07){_0x2f6d72=_0xc3ab07;if(_0x4bc8cd[_0xac4a('0x5e')][_0xac4a('0x9b')]&&!utils[_0xac4a('0xa0')](_0x4bc8cd[_0xac4a('0x5e')][_0xac4a('0x9b')])){throw new db[(_0xac4a('0x8c'))][(_0xac4a('0x8d'))](_0xac4a('0xa1'));}switch(_0x4bc8cd[_0xac4a('0x5e')]['channel']){case _0xac4a('0xb1'):return respondWithRpcPromise('QueuePause',_0xac4a('0x101'),{'id':_0x2f6d72['id'],'name':_0x2f6d72[_0xac4a('0x34')],'pause':![]})[_0xac4a('0x36')](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x2f6d72['id']},'individualHooks':!![]});})[_0xac4a('0x36')](function(){return db[_0xac4a('0xf4')][_0xac4a('0x33')]({'where':{'channel':_0x4bc8cd[_0xac4a('0x5e')][_0xac4a('0x9b')],'membername':_0x2f6d72[_0xac4a('0x34')],'type':'PAUSE','exitAt':null}});})[_0xac4a('0x36')](function(_0x8acfff){if(_0x8acfff){return _0x8acfff[_0xac4a('0x5d')]({'exitAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'data2':_0xac4a('0x108')},{'individualHooks':!![]});}return null;})[_0xac4a('0x36')](function(){return _0x2f6d72[_0xac4a('0x5d')]({'voicePause':![]});});case'mail':case _0xac4a('0x49'):case _0xac4a('0x4c'):case _0xac4a('0x4b'):case _0xac4a('0x5b'):case _0xac4a('0x5a'):return db[_0xac4a('0xf4')][_0xac4a('0x33')]({'where':{'channel':_0x4bc8cd['body'][_0xac4a('0x9b')],'membername':_0x2f6d72[_0xac4a('0x34')],'type':_0xac4a('0xfa'),'exitAt':null}})['then'](function(_0x1d1c30){if(_0x1d1c30){return _0x1d1c30['update']({'exitAt':moment()[_0xac4a('0xaa')](_0xac4a('0xf6')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0xac4a('0x36')](function(){var _0x2c1ac7={};_[_0xac4a('0x26')](_0x2c1ac7,util[_0xac4a('0xaa')](_0xac4a('0x109'),_0x4bc8cd['body'][_0xac4a('0x9b')],_0xac4a('0x10a')),![]);return _0x2f6d72['update'](_0x2c1ac7);});default:return respondWithRpcPromise('QueuePause',_0xac4a('0x101'),{'id':_0x2f6d72['id'],'name':_0x2f6d72[_0xac4a('0x34')],'pause':![]})[_0xac4a('0x36')](function(){return db[_0xac4a('0xb2')][_0xac4a('0x5d')]({'paused':0x0},{'where':{'UserId':_0x2f6d72['id']}});})['then'](function(){return db['MemberReport'][_0xac4a('0x45')]({'where':{'membername':_0x2f6d72[_0xac4a('0x34')],'type':_0xac4a('0xfa'),'exitAt':null}});})[_0xac4a('0x36')](function(_0x4449cf){var _0x24d41f=[];_0x4449cf[_0xac4a('0xf5')](function(_0x4df0ca){_0x24d41f[_0xac4a('0x44')](_0x4df0ca[_0xac4a('0x5d')]({'exitAt':moment()['format'](_0xac4a('0xf6')),'data2':_0xac4a('0x108')}));});return BPromise[_0xac4a('0x5c')](_0x24d41f);})[_0xac4a('0x36')](function(){return _0x2f6d72['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xac4a('0x36')](respondWithResult(_0x459833,null))[_0xac4a('0x1e')](handleError(_0x459833,null));};exports['getTeams']=function(_0x14fe4c,_0xb85972){var _0xbbd484={};var _0xe7077={};var _0x57c0ac;var _0x38d38a;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x14fe4c['params']['id']}})['then'](handleEntityNotFound(_0xb85972,null))['then'](function(_0x40643e){if(_0x40643e){_0x57c0ac=_0x40643e;_0xe7077[_0xac4a('0x55')]=_['keys'](db[_0xac4a('0x10b')][_0xac4a('0x3c')]);_0xe7077[_0xac4a('0x52')]=_['keys'](_0x14fe4c[_0xac4a('0x52')]);_0xe7077[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0xe7077[_0xac4a('0x55')],_0xe7077[_0xac4a('0x52')]);_0xbbd484[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0xe7077['model'],qs[_0xac4a('0x56')](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x56')]));_0xbbd484[_0xac4a('0x43')]=_0xbbd484[_0xac4a('0x43')][_0xac4a('0x57')]?_0xbbd484[_0xac4a('0x43')]:_0xe7077[_0xac4a('0x55')];_0xbbd484[_0xac4a('0xcb')]=qs['sort'](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0xcc')]);_0xbbd484[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x14fe4c[_0xac4a('0x52')],_0xe7077['filters']));if(_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x2e')]){_0xbbd484[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0xbbd484[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0xbbd484['attributes'],function(_0x386e10){var _0x478c51={};_0x478c51[_0x386e10]={'$like':'%'+_0x14fe4c[_0xac4a('0x52')]['filter']+'%'};return _0x478c51;})});}_0xbbd484=_['merge']({},_0xbbd484,_0x14fe4c[_0xac4a('0xce')]);return _0x57c0ac[_0xac4a('0x10c')](_0xbbd484);}})[_0xac4a('0x36')](function(_0x53b308){if(_0x53b308){_0x38d38a=_0x53b308[_0xac4a('0x57')];if(!_0x14fe4c[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0xbbd484[_0xac4a('0x24')]=qs['limit'](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x24')]);_0xbbd484[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x14fe4c[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x57c0ac[_0xac4a('0x10c')](_0xbbd484);}})['then'](function(_0x54dc21){if(_0x54dc21){return _0x54dc21?{'count':_0x38d38a,'rows':_0x54dc21}:null;}})['then'](respondWithResult(_0xb85972,null))[_0xac4a('0x1e')](handleError(_0xb85972,null));};exports[_0xac4a('0x10d')]=function(_0x395b96,_0x45de07){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x395b96['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x45de07,null))[_0xac4a('0x36')](function(_0x3901f0){if(_0x3901f0){var _0x464750=_0x3901f0[_0xac4a('0x28')]({'plain':!![]});return _0x3901f0['addTeams'](_0x395b96['body'][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x395b96[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})['then'](function(){for(var _0x5b4f5b=0x0;_0x5b4f5b<_0x395b96['body'][_0xac4a('0x61')][_0xac4a('0x57')];_0x5b4f5b++){var _0x5ab6ab=[];var _0x1356f2={};db['Team'][_0xac4a('0x95')]({'where':{'id':_0x395b96['body'][_0xac4a('0x61')][_0x5b4f5b]}})[_0xac4a('0x36')](function(_0xd90c8e){_0x1356f2=_0xd90c8e[_0xac4a('0x4a')];_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e[_0xac4a('0xf2')]()[_0xac4a('0x36')](function(_0x35c707){for(var _0x236c8f=0x0;_0x236c8f<_0x35c707[_0xac4a('0x57')];_0x236c8f++){_0x35c707[_0x236c8f][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x10f'));}return _0x35c707;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e['getChatQueues']()[_0xac4a('0x36')](function(_0x33ff7b){for(var _0x4c847a=0x0;_0x4c847a<_0x33ff7b[_0xac4a('0x57')];_0x4c847a++){_0x33ff7b[_0x4c847a][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x110'));}return _0x33ff7b;}));_0x5ab6ab['push'](_0xd90c8e[_0xac4a('0x111')]()[_0xac4a('0x36')](function(_0x21e793){for(var _0x30eade=0x0;_0x30eade<_0x21e793[_0xac4a('0x57')];_0x30eade++){_0x21e793[_0x30eade][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x112'));}return _0x21e793;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e[_0xac4a('0x113')]()[_0xac4a('0x36')](function(_0x2ed2cd){for(var _0x13e051=0x0;_0x13e051<_0x2ed2cd[_0xac4a('0x57')];_0x13e051++){_0x2ed2cd[_0x13e051][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x114'));}return _0x2ed2cd;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e['getWhatsappQueues']()[_0xac4a('0x36')](function(_0x39b520){for(var _0x35d205=0x0;_0x35d205<_0x39b520[_0xac4a('0x57')];_0x35d205++){_0x39b520[_0x35d205][_0xac4a('0x10e')]('channel',_0xac4a('0x115'));}return _0x39b520;}));_0x5ab6ab[_0xac4a('0x44')](_0xd90c8e['getFaxQueues']()[_0xac4a('0x36')](function(_0x360b73){for(var _0x4e324c=0x0;_0x4e324c<_0x360b73[_0xac4a('0x57')];_0x4e324c++){_0x360b73[_0x4e324c][_0xac4a('0x10e')](_0xac4a('0x9b'),'Fax');}return _0x360b73;}));_0x5ab6ab['push'](_0xd90c8e[_0xac4a('0x116')]()[_0xac4a('0x36')](function(_0x4ab883){for(var _0x577904=0x0;_0x577904<_0x4ab883[_0xac4a('0x57')];_0x577904++){_0x4ab883[_0x577904][_0xac4a('0x10e')](_0xac4a('0x9b'),'Openchannel');}return _0x4ab883;}));return BPromise[_0xac4a('0x5c')](_0x5ab6ab);})[_0xac4a('0x36')](function(_0x233df7){var _0x24818c=_[_0xac4a('0x117')](_0x233df7);_0x5ab6ab=[];return db[_0xac4a('0x6a')]['transaction'](function(_0x3c37d5){for(var _0x19b891=0x0;_0x19b891<_0x24818c['length'];_0x19b891++){_0x5ab6ab[_0xac4a('0x44')](_0x24818c[_0x19b891][_0xac4a('0x118')](_0x464750['id']),{'transaction':_0x3c37d5});}return BPromise[_0xac4a('0x5c')](_0x5ab6ab)[_0xac4a('0x36')](function(){if(_0x464750[_0xac4a('0x9c')]){return BPromise[_0xac4a('0xab')](_['filter'](_0x24818c,function(_0x1113d7){return _0x1113d7[_0xac4a('0x119')]('channel')===_0xac4a('0x10f');}),function(_0x3bdb3a){return db[_0xac4a('0xb2')][_0xac4a('0xac')]({'membername':_0x464750[_0xac4a('0x34')],'UserId':_0x464750['id'],'queue_name':_0x3bdb3a['name'],'VoiceQueueId':_0x3bdb3a['id'],'interface':_['isNil'](_0x464750['interface'])?util[_0xac4a('0xaa')](_0xac4a('0xea'),_0x464750[_0xac4a('0x34')]):_0x464750[_0xac4a('0x9f')],'paused':_0x464750[_0xac4a('0x9e')]||![],'penalty':_0x464750[_0xac4a('0xa6')]},{'transaction':_0x3c37d5});});}else{return;}})['then'](function(){for(var _0x3f1dd9=0x0;_0x3f1dd9<_0x24818c[_0xac4a('0x57')];_0x3f1dd9++){var _0x202941=_0x24818c[_0x3f1dd9]['getDataValue']('channel');var _0x155ad2=_0x202941+_0xac4a('0xaf');socket[_0xac4a('0xa8')](_0xac4a('0x2b')+_0x202941+_0xac4a('0x11a'),{'UserId':_0x464750['id'],['queueField']:_0x24818c[_0x3f1dd9]['id']});}});});})[_0xac4a('0x36')](function(){db[_0xac4a('0x11b')]['findOne']({'where':{'teamId':_0x1356f2['id']}})[_0xac4a('0x36')](function(_0x5acc3b){if(_0x5acc3b){db[_0xac4a('0x11c')][_0xac4a('0x7f')]({'UserId':_0x395b96[_0xac4a('0x4f')]['id'],'VoicePrefixId':_0x5acc3b['VoicePrefixId']});}});});}});}})['then'](respondWithStatusCode(_0x45de07,null))[_0xac4a('0x1e')](handleError(_0x45de07,null));};exports['removeTeams']=function(_0x284cba,_0x3fb376){return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x284cba[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3fb376,null))[_0xac4a('0x36')](function(_0x1ceb21){if(_0x1ceb21){var _0x1b2143=_0x1ceb21[_0xac4a('0x28')]({'plain':!![]});var _0x2f5b94=_0x284cba[_0xac4a('0x52')]['ids'];return _0x1ceb21['removeTeams'](_0x2f5b94)['then'](function(){for(var _0x26ea09=0x0;_0x26ea09<_0x2f5b94['length'];_0x26ea09++){var _0x23665a=[];var _0x29b8ce={};db[_0xac4a('0x10b')][_0xac4a('0x95')]({'where':{'id':_0x2f5b94[_0x26ea09]}})['then'](function(_0x4e10a8){_0x29b8ce=_0x4e10a8[_0xac4a('0x4a')];_0x23665a['push'](_0x4e10a8['getVoiceQueues']()[_0xac4a('0x36')](function(_0x2d41a7){for(var _0x3a1693=0x0;_0x3a1693<_0x2d41a7[_0xac4a('0x57')];_0x3a1693++){_0x2d41a7[_0x3a1693][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x10f'));}return _0x2d41a7;}));_0x23665a['push'](_0x4e10a8['getChatQueues']()[_0xac4a('0x36')](function(_0x56ab23){for(var _0x29f19b=0x0;_0x29f19b<_0x56ab23[_0xac4a('0x57')];_0x29f19b++){_0x56ab23[_0x29f19b][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x110'));}return _0x56ab23;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8['getMailQueues']()[_0xac4a('0x36')](function(_0x21d0b5){for(var _0x414d20=0x0;_0x414d20<_0x21d0b5[_0xac4a('0x57')];_0x414d20++){_0x21d0b5[_0x414d20][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x112'));}return _0x21d0b5;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8[_0xac4a('0x113')]()[_0xac4a('0x36')](function(_0x599223){for(var _0x17657a=0x0;_0x17657a<_0x599223[_0xac4a('0x57')];_0x17657a++){_0x599223[_0x17657a][_0xac4a('0x10e')](_0xac4a('0x9b'),'Sms');}return _0x599223;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8[_0xac4a('0x11d')]()[_0xac4a('0x36')](function(_0x1d1bf4){for(var _0x4caa1b=0x0;_0x4caa1b<_0x1d1bf4[_0xac4a('0x57')];_0x4caa1b++){_0x1d1bf4[_0x4caa1b][_0xac4a('0x10e')]('channel',_0xac4a('0x115'));}return _0x1d1bf4;}));_0x23665a['push'](_0x4e10a8[_0xac4a('0x11e')]()[_0xac4a('0x36')](function(_0x59e742){for(var _0x477fef=0x0;_0x477fef<_0x59e742[_0xac4a('0x57')];_0x477fef++){_0x59e742[_0x477fef][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x11f'));}return _0x59e742;}));_0x23665a[_0xac4a('0x44')](_0x4e10a8['getOpenchannelQueues']()['then'](function(_0x3fcc44){for(var _0x5d5f66=0x0;_0x5d5f66<_0x3fcc44[_0xac4a('0x57')];_0x5d5f66++){_0x3fcc44[_0x5d5f66][_0xac4a('0x10e')](_0xac4a('0x9b'),_0xac4a('0x120'));}return _0x3fcc44;}));return BPromise['all'](_0x23665a);})['then'](function(_0x227c45){var _0x4b640b=_[_0xac4a('0x117')](_0x227c45);_0x23665a=[];return db[_0xac4a('0x6a')][_0xac4a('0x121')](function(_0x5795f2){for(var _0x15d0e5=0x0;_0x15d0e5<_0x4b640b[_0xac4a('0x57')];_0x15d0e5++){_0x23665a[_0xac4a('0x44')](_0x4b640b[_0x15d0e5]['removeAgent'](_0x1b2143['id']),{'transaction':_0x5795f2});}return BPromise[_0xac4a('0x5c')](_0x23665a)[_0xac4a('0x36')](function(){if(_0x1b2143[_0xac4a('0x9c')]){return BPromise[_0xac4a('0xab')](_[_0xac4a('0x2e')](_0x4b640b,function(_0x23b0f7){return _0x23b0f7[_0xac4a('0x119')]('channel')==='Voice';}),function(_0x43b1b7){return db[_0xac4a('0xb2')][_0xac4a('0x35')]({'where':{'VoiceQueueId':_0x43b1b7['id'],'UserId':_0x1b2143['id']},'transaction':_0x5795f2});});}else{return;}})[_0xac4a('0x36')](function(){db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x29b8ce['id']}})['then'](function(_0x53a31e){if(_0x53a31e){return db[_0xac4a('0x11c')][_0xac4a('0x35')]({'where':{'UserId':_0x1b2143['id'],'VoicePrefixId':_0x53a31e[_0xac4a('0x4a')][_0xac4a('0x122')]}});}});})['then'](function(){for(var _0x5bbe29=0x0;_0x5bbe29<_0x4b640b[_0xac4a('0x57')];_0x5bbe29++){var _0x23f369=_0x4b640b[_0x5bbe29][_0xac4a('0x119')]('channel');var _0x294895=_0x23f369+_0xac4a('0xaf');socket['emit'](_0xac4a('0x2b')+_0x23f369+'Queue:remove',{'UserId':_0x1b2143['id'],['queueField']:_0x4b640b[_0x5bbe29]['id']});}});});});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x3fb376,null))[_0xac4a('0x1e')](handleError(_0x3fb376,null));};exports[_0xac4a('0x123')]=function(_0x1eae11,_0x36a414){var _0x25a33e={};var _0x25dc7c={};var _0x148e35;var _0x2ddecc;return db[_0xac4a('0x3b')]['findOne']({'where':{'id':_0x1eae11[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x36a414,null))['then'](function(_0x534a2e){if(_0x534a2e){_0x148e35=_0x534a2e;_0x25dc7c[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x124')][_0xac4a('0x3c')]);_0x25dc7c[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x1eae11[_0xac4a('0x52')]);_0x25dc7c[_0xac4a('0x53')]=_['intersection'](_0x25dc7c[_0xac4a('0x55')],_0x25dc7c[_0xac4a('0x52')]);_0x25a33e[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x25dc7c[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x1eae11[_0xac4a('0x52')]['fields']));_0x25a33e[_0xac4a('0x43')]=_0x25a33e[_0xac4a('0x43')]['length']?_0x25a33e[_0xac4a('0x43')]:_0x25dc7c[_0xac4a('0x55')];_0x25a33e[_0xac4a('0xcb')]=qs['sort'](_0x1eae11[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x25a33e[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x1eae11[_0xac4a('0x52')],_0x25dc7c[_0xac4a('0x53')]));if(_0x1eae11[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x25a33e[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x25a33e[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x25a33e[_0xac4a('0x43')],function(_0x4b515f){var _0x2fe220={};_0x2fe220[_0x4b515f]={'$like':'%'+_0x1eae11['query'][_0xac4a('0x2e')]+'%'};return _0x2fe220;})});}_0x25a33e=_[_0xac4a('0x59')]({},_0x25a33e,_0x1eae11[_0xac4a('0xce')]);return _0x148e35['getLists'](_0x25a33e);}})[_0xac4a('0x36')](function(_0xfa96a6){if(_0xfa96a6){_0x2ddecc=_0xfa96a6['length'];if(!_0x1eae11[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x25a33e['limit']=qs['limit'](_0x1eae11['query'][_0xac4a('0x24')]);_0x25a33e[_0xac4a('0x22')]=qs['offset'](_0x1eae11[_0xac4a('0x52')]['offset']);}return _0x148e35[_0xac4a('0x123')](_0x25a33e);}})[_0xac4a('0x36')](function(_0x3ea923){if(_0x3ea923){return _0x3ea923?{'count':_0x2ddecc,'rows':_0x3ea923}:null;}})[_0xac4a('0x36')](respondWithResult(_0x36a414,null))[_0xac4a('0x1e')](handleError(_0x36a414,null));};exports[_0xac4a('0x125')]=function(_0x473b6c,_0x3228dc){var _0x203c8b={};var _0x3a01a1={};var _0x50dcdd;var _0x330437;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x473b6c[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3228dc,null))[_0xac4a('0x36')](function(_0x56b20e){if(_0x56b20e){_0x50dcdd=_0x56b20e;_0x3a01a1['model']=_['keys'](db[_0xac4a('0x3b')][_0xac4a('0x3c')]);_0x3a01a1[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x473b6c[_0xac4a('0x52')]);_0x3a01a1[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x3a01a1[_0xac4a('0x55')],_0x3a01a1['query']);_0x203c8b[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x3a01a1[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x473b6c[_0xac4a('0x52')][_0xac4a('0x56')]));_0x203c8b[_0xac4a('0x43')]=_0x203c8b[_0xac4a('0x43')][_0xac4a('0x57')]?_0x203c8b[_0xac4a('0x43')]:_0x3a01a1[_0xac4a('0x55')];_0x203c8b[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x473b6c[_0xac4a('0x52')]['sort']);_0x203c8b[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x473b6c[_0xac4a('0x52')],_0x3a01a1[_0xac4a('0x53')]));if(_0x473b6c[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x203c8b[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x203c8b['where'],{'$or':_[_0xac4a('0x30')](_0x203c8b[_0xac4a('0x43')],function(_0x1aeb19){var _0x45bb74={};_0x45bb74[_0x1aeb19]={'$like':'%'+_0x473b6c[_0xac4a('0x52')]['filter']+'%'};return _0x45bb74;})});}_0x203c8b['model']=db[_0xac4a('0x3b')];_0x203c8b['as']=_0xac4a('0x87');_0x203c8b=_['merge']({},_0x203c8b,_0x473b6c[_0xac4a('0xce')]);return _0x50dcdd[_0xac4a('0xf2')]({'include':[_0x203c8b]});}})[_0xac4a('0x36')](function(_0xcaac80){if(_0xcaac80){var _0x1e51c3={},_0xa25b84=[],_0x52139a=0x0;for(var _0x568d6c=0x0;_0x568d6c<_0xcaac80[_0xac4a('0x57')];_0x568d6c+=0x1){for(var _0x567c4e=0x0,_0x3426fb;_0x567c4e<_0xcaac80[_0x568d6c][_0xac4a('0x87')][_0xac4a('0x57')];_0x567c4e+=0x1){_0x3426fb=_0xcaac80[_0x568d6c]['Agents'][_0x567c4e][_0xac4a('0x28')]({'plain':!![]});_0x1e51c3[_0x3426fb['id']]=_0x3426fb;}}_0x1e51c3=_[_0xac4a('0x126')](_0x1e51c3);for(var _0x388f37=qs['offset'](_0x473b6c[_0xac4a('0x52')][_0xac4a('0x22')]);_0x388f37<_0x1e51c3[_0xac4a('0x57')]&&_0xa25b84[_0xac4a('0x57')]<qs[_0xac4a('0x24')](_0x473b6c['query'][_0xac4a('0x24')]);_0x388f37+=0x1){if(_0x1e51c3[_0x388f37]){_0xa25b84[_0xac4a('0x44')](_0x1e51c3[_0x388f37]);}}return{'count':_0x1e51c3['length'],'rows':_0xa25b84};}})['then'](respondWithResult(_0x3228dc,null))[_0xac4a('0x1e')](handleError(_0x3228dc,null));};exports[_0xac4a('0x35')]=function(_0x24e920,_0x331539){if(_0x24e920['user']['id']==_0x24e920[_0xac4a('0x4f')]['id']){return _0x331539['status'](0x1f4)[_0xac4a('0x39')]({'message':_0xac4a('0x127')});}return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x24e920['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x331539,null))[_0xac4a('0x36')](removeEntity(_0x331539,null))[_0xac4a('0x1e')](handleError(_0x331539,null));};exports[_0xac4a('0x128')]=function(_0x481dc5,_0x571bf9){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x481dc5[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x571bf9,null))[_0xac4a('0x36')](function(_0x1d1021){if(_0x1d1021){return _0x1d1021['addChatInteractions'](_0x481dc5[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x481dc5['body'],[_0xac4a('0x61'),'id'])||{})['spread'](function(){for(var _0x5d78e5=0x0;_0x5d78e5<_0x481dc5['body'][_0xac4a('0x61')][_0xac4a('0x57')];_0x5d78e5+=0x1){socket['emit'](_0xac4a('0x129'),{'ChatInteractionId':Number(_0x481dc5[_0xac4a('0x5e')]['ids'][_0x5d78e5]),'UserId':Number(_0x481dc5['params']['id'])});}return _0x481dc5['body'][_0xac4a('0x61')];});}})['then'](respondWithResult(_0x571bf9,null))[_0xac4a('0x1e')](handleError(_0x571bf9,null));};exports[_0xac4a('0x12a')]=function(_0x1c4be0,_0x5dfcb5){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x1c4be0[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x5dfcb5,null))[_0xac4a('0x36')](function(_0x342e3d){if(_0x342e3d){return _0x342e3d[_0xac4a('0x12a')](_0x1c4be0[_0xac4a('0x52')][_0xac4a('0x61')])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x1c4be0[_0xac4a('0x52')][_0xac4a('0x61')])){for(var _0xfd029b=0x0;_0xfd029b<_0x1c4be0['query'][_0xac4a('0x61')][_0xac4a('0x57')];_0xfd029b+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x12b'),{'ChatInteractionId':Number(_0x1c4be0['query']['ids'][_0xfd029b]),'UserId':Number(_0x1c4be0[_0xac4a('0x4f')]['id'])});}}else{socket[_0xac4a('0xa8')](_0xac4a('0x12b'),{'ChatInteractionId':Number(_0x1c4be0[_0xac4a('0x52')][_0xac4a('0x61')]),'UserId':Number(_0x1c4be0[_0xac4a('0x4f')]['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x5dfcb5,null))['catch'](handleError(_0x5dfcb5,null));};exports['addMailInteractions']=function(_0x4e064e,_0x4083be){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x4e064e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x4083be,null))[_0xac4a('0x36')](function(_0x59fcc6){if(_0x59fcc6){return _0x59fcc6['addMailInteractions'](_0x4e064e[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x4e064e[_0xac4a('0x5e')],['ids','id'])||{})['spread'](function(){for(var _0x2dab8a=0x0;_0x2dab8a<_0x4e064e[_0xac4a('0x5e')][_0xac4a('0x61')][_0xac4a('0x57')];_0x2dab8a+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x12c'),{'MailInteractionId':Number(_0x4e064e[_0xac4a('0x5e')][_0xac4a('0x61')][_0x2dab8a]),'UserId':Number(_0x4e064e[_0xac4a('0x4f')]['id'])});}return _0x4e064e['body'][_0xac4a('0x61')];});}})['then'](respondWithResult(_0x4083be,null))[_0xac4a('0x1e')](handleError(_0x4083be,null));};exports[_0xac4a('0x12d')]=function(_0x1d1ad2,_0x592b19){return db['User']['find']({'where':{'id':_0x1d1ad2[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x592b19,null))[_0xac4a('0x36')](function(_0x217412){if(_0x217412){return _0x217412['removeMailInteractions'](_0x1d1ad2[_0xac4a('0x52')]['ids'])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x1d1ad2[_0xac4a('0x52')]['ids'])){for(var _0x518696=0x0;_0x518696<_0x1d1ad2[_0xac4a('0x52')][_0xac4a('0x61')][_0xac4a('0x57')];_0x518696+=0x1){socket['emit'](_0xac4a('0x12e'),{'MailInteractionId':Number(_0x1d1ad2[_0xac4a('0x52')][_0xac4a('0x61')][_0x518696]),'UserId':Number(_0x1d1ad2['params']['id'])});}}else{socket['emit'](_0xac4a('0x12e'),{'MailInteractionId':Number(_0x1d1ad2['query'][_0xac4a('0x61')]),'UserId':Number(_0x1d1ad2['params']['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x592b19,null))[_0xac4a('0x1e')](handleError(_0x592b19,null));};exports[_0xac4a('0x12f')]=function(_0x422ced,_0x199ee3){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x422ced[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x199ee3,null))['then'](function(_0x452e81){if(_0x452e81){return _0x452e81[_0xac4a('0x12f')](_0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x422ced[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x1ed730=0x0;_0x1ed730<_0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')][_0xac4a('0x57')];_0x1ed730+=0x1){socket['emit'](_0xac4a('0x130'),{'FaxInteractionId':Number(_0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')][_0x1ed730]),'UserId':Number(_0x422ced[_0xac4a('0x4f')]['id'])});}return _0x422ced[_0xac4a('0x5e')][_0xac4a('0x61')];});}})[_0xac4a('0x36')](respondWithResult(_0x199ee3,null))[_0xac4a('0x1e')](handleError(_0x199ee3,null));};exports[_0xac4a('0x131')]=function(_0xcd20c6,_0x16b874){return db['User'][_0xac4a('0x33')]({'where':{'id':_0xcd20c6[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x16b874,null))[_0xac4a('0x36')](function(_0x51df3e){if(_0x51df3e){return _0x51df3e[_0xac4a('0x131')](_0xcd20c6[_0xac4a('0x52')]['ids'])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0xcd20c6[_0xac4a('0x52')][_0xac4a('0x61')])){for(var _0x38dee5=0x0;_0x38dee5<_0xcd20c6['query'][_0xac4a('0x61')][_0xac4a('0x57')];_0x38dee5+=0x1){socket['emit'](_0xac4a('0x132'),{'FaxInteractionId':Number(_0xcd20c6[_0xac4a('0x52')]['ids'][_0x38dee5]),'UserId':Number(_0xcd20c6[_0xac4a('0x4f')]['id'])});}}else{socket['emit'](_0xac4a('0x132'),{'FaxInteractionId':Number(_0xcd20c6[_0xac4a('0x52')][_0xac4a('0x61')]),'UserId':Number(_0xcd20c6[_0xac4a('0x4f')]['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x16b874,null))[_0xac4a('0x1e')](handleError(_0x16b874,null));};exports[_0xac4a('0x133')]=function(_0x11835c,_0x5da578){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x11835c[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5da578,null))[_0xac4a('0x36')](function(_0x127d83){if(_0x127d83){return _0x127d83[_0xac4a('0x133')](_0x11835c[_0xac4a('0x5e')]['ids'],_[_0xac4a('0x62')](_0x11835c[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x9e4b02=0x0;_0x9e4b02<_0x11835c['body']['ids'][_0xac4a('0x57')];_0x9e4b02+=0x1){socket[_0xac4a('0xa8')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x11835c[_0xac4a('0x5e')][_0xac4a('0x61')][_0x9e4b02]),'UserId':Number(_0x11835c[_0xac4a('0x4f')]['id'])});}return _0x11835c['body'][_0xac4a('0x61')];});}})[_0xac4a('0x36')](respondWithResult(_0x5da578,null))['catch'](handleError(_0x5da578,null));};exports[_0xac4a('0x134')]=function(_0x399b9e,_0x29f1fe){return db['User']['find']({'where':{'id':_0x399b9e[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x29f1fe,null))[_0xac4a('0x36')](function(_0x8b8246){if(_0x8b8246){return _0x8b8246['removeSmsInteractions'](_0x399b9e['query']['ids'])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x399b9e['query']['ids'])){for(var _0x346bc0=0x0;_0x346bc0<_0x399b9e['query'][_0xac4a('0x61')][_0xac4a('0x57')];_0x346bc0+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x135'),{'SmsInteractionId':Number(_0x399b9e['query'][_0xac4a('0x61')][_0x346bc0]),'UserId':Number(_0x399b9e[_0xac4a('0x4f')]['id'])});}}else{socket[_0xac4a('0xa8')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x399b9e['query'][_0xac4a('0x61')]),'UserId':Number(_0x399b9e[_0xac4a('0x4f')]['id'])});}});}})['then'](respondWithStatusCode(_0x29f1fe,null))['catch'](handleError(_0x29f1fe,null));};exports[_0xac4a('0x136')]=function(_0x1f3eda,_0x3c743a){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x1f3eda['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3c743a,null))[_0xac4a('0x36')](function(_0x2359a0){if(_0x2359a0){return _0x2359a0[_0xac4a('0x136')](_0x1f3eda[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x1f3eda[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x341656=0x0;_0x341656<_0x1f3eda['body'][_0xac4a('0x61')][_0xac4a('0x57')];_0x341656+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x137'),{'OpenchannelInteractionId':Number(_0x1f3eda[_0xac4a('0x5e')][_0xac4a('0x61')][_0x341656]),'UserId':Number(_0x1f3eda[_0xac4a('0x4f')]['id'])});}return _0x1f3eda['body']['ids'];});}})[_0xac4a('0x36')](respondWithResult(_0x3c743a,null))[_0xac4a('0x1e')](handleError(_0x3c743a,null));};exports[_0xac4a('0x138')]=function(_0x413ad7,_0x1cc60b){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x413ad7['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x1cc60b,null))[_0xac4a('0x36')](function(_0xbc5553){if(_0xbc5553){return _0xbc5553[_0xac4a('0x138')](_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')])[_0xac4a('0x36')](function(){if(_[_0xac4a('0xae')](_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')])){for(var _0x5cc39b=0x0;_0x5cc39b<_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')][_0xac4a('0x57')];_0x5cc39b+=0x1){socket[_0xac4a('0xa8')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x413ad7[_0xac4a('0x52')]['ids'][_0x5cc39b]),'UserId':Number(_0x413ad7[_0xac4a('0x4f')]['id'])});}}else{socket[_0xac4a('0xa8')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x413ad7[_0xac4a('0x52')][_0xac4a('0x61')]),'UserId':Number(_0x413ad7[_0xac4a('0x4f')]['id'])});}});}})[_0xac4a('0x36')](respondWithStatusCode(_0x1cc60b,null))[_0xac4a('0x1e')](handleError(_0x1cc60b,null));};exports[_0xac4a('0x139')]=function(_0x2615da,_0x46fae2){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x2615da['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x46fae2,null))[_0xac4a('0x36')](function(_0x406a4b){if(_0x406a4b){return _0x406a4b[_0xac4a('0x139')](_0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x2615da[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{})[_0xac4a('0xa7')](function(){for(var _0x3f946a=0x0;_0x3f946a<_0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')]['length'];_0x3f946a+=0x1){socket[_0xac4a('0xa8')](_0xac4a('0x13a'),{'WhatsappInteractionId':Number(_0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')][_0x3f946a]),'UserId':Number(_0x2615da['params']['id'])});}return _0x2615da[_0xac4a('0x5e')][_0xac4a('0x61')];});}})[_0xac4a('0x36')](respondWithResult(_0x46fae2,null))['catch'](handleError(_0x46fae2,null));};exports['removeWhatsappInteractions']=function(_0x49c645,_0x3df3f5){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x49c645['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3df3f5,null))[_0xac4a('0x36')](function(_0x875558){if(_0x875558){return _0x875558[_0xac4a('0x13b')](_0x49c645[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x3df3f5,null))['catch'](handleError(_0x3df3f5,null));};exports[_0xac4a('0x13c')]=function(_0x58d820,_0x1e2ad7){var _0x5721c7={};var _0x34e838={};var _0x22df93;var _0x44eaa6;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x58d820[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1e2ad7,null))[_0xac4a('0x36')](function(_0x43f1db){if(_0x43f1db){_0x22df93=_0x43f1db;_0x34e838['model']=_[_0xac4a('0x51')](db[_0xac4a('0x13d')][_0xac4a('0x3c')]);_0x34e838[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x58d820[_0xac4a('0x52')]);_0x34e838['filters']=_[_0xac4a('0x54')](_0x34e838['model'],_0x34e838[_0xac4a('0x52')]);_0x5721c7[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x34e838['model'],qs['fields'](_0x58d820[_0xac4a('0x52')][_0xac4a('0x56')]));_0x5721c7[_0xac4a('0x43')]=_0x5721c7[_0xac4a('0x43')]['length']?_0x5721c7[_0xac4a('0x43')]:_0x34e838[_0xac4a('0x55')];_0x5721c7[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x58d820[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x5721c7[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x58d820[_0xac4a('0x52')],_0x34e838['filters']));if(_0x58d820['query'][_0xac4a('0x2e')]){_0x5721c7[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x5721c7[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x5721c7[_0xac4a('0x43')],function(_0x3ff4cf){var _0x504299={};_0x504299[_0x3ff4cf]={'$like':'%'+_0x58d820[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x504299;})});}_0x5721c7=_[_0xac4a('0x59')]({},_0x5721c7,_0x58d820[_0xac4a('0xce')]);return _0x22df93['getVoicePrefixes'](_0x5721c7);}})['then'](function(_0x19ab74){if(_0x19ab74){_0x44eaa6=_0x19ab74[_0xac4a('0x57')];if(!_0x58d820[_0xac4a('0x52')]['hasOwnProperty']('nolimit')){_0x5721c7[_0xac4a('0x24')]=qs['limit'](_0x58d820['query']['limit']);_0x5721c7[_0xac4a('0x22')]=qs['offset'](_0x58d820['query'][_0xac4a('0x22')]);}return _0x22df93[_0xac4a('0x13c')](_0x5721c7);}})[_0xac4a('0x36')](function(_0x12d390){if(_0x12d390){return _0x12d390?{'count':_0x44eaa6,'rows':_0x12d390}:null;}})[_0xac4a('0x36')](respondWithResult(_0x1e2ad7,null))['catch'](handleError(_0x1e2ad7,null));};exports[_0xac4a('0x13e')]=function(_0x1a0a62,_0x2afcd4){var _0x53bbb6={};var _0x3f98d5={};var _0x1eb021;var _0x4a3893;return db['User']['findOne']({'where':{'id':_0x1a0a62['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2afcd4,null))['then'](function(_0x23b821){if(_0x23b821){_0x1eb021=_0x23b821;_0x3f98d5['model']=_[_0xac4a('0x51')](db['FaxAccount'][_0xac4a('0x3c')]);_0x3f98d5[_0xac4a('0x52')]=_['keys'](_0x1a0a62[_0xac4a('0x52')]);_0x3f98d5[_0xac4a('0x53')]=_['intersection'](_0x3f98d5[_0xac4a('0x55')],_0x3f98d5[_0xac4a('0x52')]);_0x53bbb6[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x3f98d5[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x1a0a62['query'][_0xac4a('0x56')]));_0x53bbb6[_0xac4a('0x43')]=_0x53bbb6[_0xac4a('0x43')]['length']?_0x53bbb6[_0xac4a('0x43')]:_0x3f98d5[_0xac4a('0x55')];_0x53bbb6['order']=qs[_0xac4a('0xcc')](_0x1a0a62[_0xac4a('0x52')]['sort']);_0x53bbb6[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x1a0a62['query'],_0x3f98d5[_0xac4a('0x53')]));if(_0x1a0a62[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x53bbb6['where']=_['merge'](_0x53bbb6[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x53bbb6[_0xac4a('0x43')],function(_0x217110){var _0x3a0fb2={};_0x3a0fb2[_0x217110]={'$like':'%'+_0x1a0a62[_0xac4a('0x52')]['filter']+'%'};return _0x3a0fb2;})});}_0x53bbb6=_[_0xac4a('0x59')]({},_0x53bbb6,_0x1a0a62[_0xac4a('0xce')]);return _0x1eb021[_0xac4a('0x13e')](_0x53bbb6);}})[_0xac4a('0x36')](function(_0x540369){if(_0x540369){_0x4a3893=_0x540369['length'];if(!_0x1a0a62['query']['hasOwnProperty']('nolimit')){_0x53bbb6[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x1a0a62['query'][_0xac4a('0x24')]);_0x53bbb6[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x1a0a62[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x1eb021[_0xac4a('0x13e')](_0x53bbb6);}})[_0xac4a('0x36')](function(_0x4713b9){if(_0x4713b9){return _0x4713b9?{'count':_0x4a3893,'rows':_0x4713b9}:null;}})[_0xac4a('0x36')](respondWithResult(_0x2afcd4,null))[_0xac4a('0x1e')](handleError(_0x2afcd4,null));};exports[_0xac4a('0x13f')]=function(_0x388fd3,_0x43b011){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x388fd3['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x43b011,null))[_0xac4a('0x36')](function(_0x3c3496){if(_0x3c3496){return _0x3c3496[_0xac4a('0x13f')](_0x388fd3['body'][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x388fd3[_0xac4a('0x5e')],['ids','id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x43b011,null))[_0xac4a('0x1e')](handleError(_0x43b011,null));};exports[_0xac4a('0x140')]=function(_0x5ac813,_0x347f26){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x5ac813[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x347f26,null))[_0xac4a('0x36')](function(_0x243a1c){if(_0x243a1c){return _0x243a1c['removeFaxAccounts'](_0x5ac813[_0xac4a('0x52')][_0xac4a('0x61')]);}})['then'](respondWithStatusCode(_0x347f26,null))[_0xac4a('0x1e')](handleError(_0x347f26,null));};exports['getMailAccounts']=function(_0x166cd1,_0x31a21e){var _0x397203={};var _0x119030={};var _0x552b5f;var _0xd3e39f;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x166cd1[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x31a21e,null))[_0xac4a('0x36')](function(_0x297ffa){if(_0x297ffa){_0x552b5f=_0x297ffa;_0x119030[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x141')][_0xac4a('0x3c')]);_0x119030[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x166cd1[_0xac4a('0x52')]);_0x119030[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x119030[_0xac4a('0x55')],_0x119030['query']);_0x397203[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x119030[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x166cd1[_0xac4a('0x52')][_0xac4a('0x56')]));_0x397203[_0xac4a('0x43')]=_0x397203[_0xac4a('0x43')][_0xac4a('0x57')]?_0x397203[_0xac4a('0x43')]:_0x119030[_0xac4a('0x55')];_0x397203[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x166cd1[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x397203[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x166cd1[_0xac4a('0x52')],_0x119030['filters']));if(_0x166cd1[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x397203[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x397203[_0xac4a('0x41')],{'$or':_['map'](_0x397203['attributes'],function(_0x1c306e){var _0x5d85d3={};_0x5d85d3[_0x1c306e]={'$like':'%'+_0x166cd1[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x5d85d3;})});}_0x397203=_['merge']({},_0x397203,_0x166cd1['options']);return _0x552b5f['getMailAccounts'](_0x397203);}})[_0xac4a('0x36')](function(_0xdd132c){if(_0xdd132c){_0xd3e39f=_0xdd132c[_0xac4a('0x57')];if(!_0x166cd1['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x397203[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x166cd1[_0xac4a('0x52')][_0xac4a('0x24')]);_0x397203['offset']=qs[_0xac4a('0x22')](_0x166cd1['query']['offset']);}return _0x552b5f[_0xac4a('0x142')](_0x397203);}})[_0xac4a('0x36')](function(_0x3d1654){if(_0x3d1654){return _0x3d1654?{'count':_0xd3e39f,'rows':_0x3d1654}:null;}})[_0xac4a('0x36')](respondWithResult(_0x31a21e,null))['catch'](handleError(_0x31a21e,null));};exports[_0xac4a('0x143')]=function(_0x274d06,_0x2e7f78){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x274d06[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2e7f78,null))[_0xac4a('0x36')](function(_0x375a32){if(_0x375a32){return _0x375a32['addMailAccounts'](_0x274d06['body'][_0xac4a('0x61')],_[_0xac4a('0x62')](_0x274d06['body'],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x2e7f78,null))['catch'](handleError(_0x2e7f78,null));};exports['removeMailAccounts']=function(_0x519905,_0x6fe841){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x519905[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x6fe841,null))[_0xac4a('0x36')](function(_0x22e91c){if(_0x22e91c){return _0x22e91c[_0xac4a('0x144')](_0x519905[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x6fe841,null))['catch'](handleError(_0x6fe841,null));};exports[_0xac4a('0x145')]=function(_0x13f3ca,_0xb7a74a){var _0x342003={};var _0x50aaee={};var _0x5ee2ac;var _0x5594dd;return db['User']['findOne']({'where':{'id':_0x13f3ca['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0xb7a74a,null))[_0xac4a('0x36')](function(_0x42d60b){if(_0x42d60b){_0x5ee2ac=_0x42d60b;_0x50aaee[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x146')][_0xac4a('0x3c')]);_0x50aaee['query']=_[_0xac4a('0x51')](_0x13f3ca['query']);_0x50aaee[_0xac4a('0x53')]=_['intersection'](_0x50aaee['model'],_0x50aaee[_0xac4a('0x52')]);_0x342003[_0xac4a('0x43')]=_['intersection'](_0x50aaee[_0xac4a('0x55')],qs['fields'](_0x13f3ca[_0xac4a('0x52')][_0xac4a('0x56')]));_0x342003[_0xac4a('0x43')]=_0x342003[_0xac4a('0x43')][_0xac4a('0x57')]?_0x342003[_0xac4a('0x43')]:_0x50aaee[_0xac4a('0x55')];_0x342003['order']=qs[_0xac4a('0xcc')](_0x13f3ca[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x342003[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x13f3ca[_0xac4a('0x52')],_0x50aaee[_0xac4a('0x53')]));if(_0x13f3ca['query'][_0xac4a('0x2e')]){_0x342003[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x342003['where'],{'$or':_['map'](_0x342003[_0xac4a('0x43')],function(_0x7ee1d7){var _0xa9742={};_0xa9742[_0x7ee1d7]={'$like':'%'+_0x13f3ca[_0xac4a('0x52')]['filter']+'%'};return _0xa9742;})});}_0x342003=_[_0xac4a('0x59')]({},_0x342003,_0x13f3ca[_0xac4a('0xce')]);return _0x5ee2ac[_0xac4a('0x145')](_0x342003);}})[_0xac4a('0x36')](function(_0x46be11){if(_0x46be11){_0x5594dd=_0x46be11[_0xac4a('0x57')];if(!_0x13f3ca[_0xac4a('0x52')]['hasOwnProperty']('nolimit')){_0x342003['limit']=qs[_0xac4a('0x24')](_0x13f3ca[_0xac4a('0x52')][_0xac4a('0x24')]);_0x342003[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x13f3ca['query'][_0xac4a('0x22')]);}return _0x5ee2ac[_0xac4a('0x145')](_0x342003);}})[_0xac4a('0x36')](function(_0x4e640a){if(_0x4e640a){return _0x4e640a?{'count':_0x5594dd,'rows':_0x4e640a}:null;}})['then'](respondWithResult(_0xb7a74a,null))['catch'](handleError(_0xb7a74a,null));};exports[_0xac4a('0x147')]=function(_0x3ae56d,_0x3b7229){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x3ae56d[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3b7229,null))[_0xac4a('0x36')](function(_0x4f3248){if(_0x4f3248){return _0x4f3248[_0xac4a('0x147')](_0x3ae56d[_0xac4a('0x5e')]['ids'],_[_0xac4a('0x62')](_0x3ae56d['body'],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x3b7229,null))[_0xac4a('0x1e')](handleError(_0x3b7229,null));};exports['removeOpenchannelAccounts']=function(_0x6ee86a,_0x4487be){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x6ee86a['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x4487be,null))[_0xac4a('0x36')](function(_0x1a4c04){if(_0x1a4c04){return _0x1a4c04[_0xac4a('0x148')](_0x6ee86a[_0xac4a('0x52')]['ids']);}})[_0xac4a('0x36')](respondWithStatusCode(_0x4487be,null))['catch'](handleError(_0x4487be,null));};exports[_0xac4a('0x149')]=function(_0x448fbe,_0x56ebac){var _0x2642ad={};var _0x4eb1df={};var _0x1b2ccc;var _0x289566;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x448fbe[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x56ebac,null))[_0xac4a('0x36')](function(_0x2e67b8){if(_0x2e67b8){_0x1b2ccc=_0x2e67b8;_0x4eb1df['model']=_[_0xac4a('0x51')](db[_0xac4a('0x14a')][_0xac4a('0x3c')]);_0x4eb1df['query']=_[_0xac4a('0x51')](_0x448fbe[_0xac4a('0x52')]);_0x4eb1df[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x4eb1df[_0xac4a('0x55')],_0x4eb1df[_0xac4a('0x52')]);_0x2642ad['attributes']=_[_0xac4a('0x54')](_0x4eb1df[_0xac4a('0x55')],qs[_0xac4a('0x56')](_0x448fbe['query'][_0xac4a('0x56')]));_0x2642ad[_0xac4a('0x43')]=_0x2642ad['attributes'][_0xac4a('0x57')]?_0x2642ad[_0xac4a('0x43')]:_0x4eb1df[_0xac4a('0x55')];_0x2642ad[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x448fbe[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x2642ad[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x448fbe[_0xac4a('0x52')],_0x4eb1df[_0xac4a('0x53')]));if(_0x448fbe[_0xac4a('0x52')]['filter']){_0x2642ad[_0xac4a('0x41')]=_['merge'](_0x2642ad[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x2642ad[_0xac4a('0x43')],function(_0x18b400){var _0x23f2d6={};_0x23f2d6[_0x18b400]={'$like':'%'+_0x448fbe[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x23f2d6;})});}_0x2642ad=_[_0xac4a('0x59')]({},_0x2642ad,_0x448fbe['options']);return _0x1b2ccc[_0xac4a('0x149')](_0x2642ad);}})[_0xac4a('0x36')](function(_0x4e163a){if(_0x4e163a){_0x289566=_0x4e163a['length'];if(!_0x448fbe['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x2642ad[_0xac4a('0x24')]=qs[_0xac4a('0x24')](_0x448fbe['query'][_0xac4a('0x24')]);_0x2642ad[_0xac4a('0x22')]=qs['offset'](_0x448fbe[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x1b2ccc[_0xac4a('0x149')](_0x2642ad);}})[_0xac4a('0x36')](function(_0x172db0){if(_0x172db0){return _0x172db0?{'count':_0x289566,'rows':_0x172db0}:null;}})[_0xac4a('0x36')](respondWithResult(_0x56ebac,null))[_0xac4a('0x1e')](handleError(_0x56ebac,null));};exports[_0xac4a('0x14b')]=function(_0xc063fa,_0x537960){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0xc063fa[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x537960,null))[_0xac4a('0x36')](function(_0xf5d245){if(_0xf5d245){return _0xf5d245['addSmsAccounts'](_0xc063fa[_0xac4a('0x5e')][_0xac4a('0x61')],_[_0xac4a('0x62')](_0xc063fa['body'],[_0xac4a('0x61'),'id'])||{});}})['then'](respondWithResult(_0x537960,null))[_0xac4a('0x1e')](handleError(_0x537960,null));};exports[_0xac4a('0x14c')]=function(_0x2cae56,_0x2335ee){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x2cae56[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x2335ee,null))[_0xac4a('0x36')](function(_0x2f6e17){if(_0x2f6e17){return _0x2f6e17[_0xac4a('0x14c')](_0x2cae56['query'][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x2335ee,null))[_0xac4a('0x1e')](handleError(_0x2335ee,null));};exports[_0xac4a('0x14d')]=function(_0x383b33,_0x39811d){var _0x4ed3b2={};var _0x15a1a2={};var _0x5b8bee;var _0x34e00d;return db['User'][_0xac4a('0x95')]({'where':{'id':_0x383b33['params']['id']}})['then'](handleEntityNotFound(_0x39811d,null))['then'](function(_0x20f25d){if(_0x20f25d){_0x5b8bee=_0x20f25d;_0x15a1a2[_0xac4a('0x55')]=_['keys'](db[_0xac4a('0x14e')][_0xac4a('0x3c')]);_0x15a1a2[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x383b33['query']);_0x15a1a2[_0xac4a('0x53')]=_['intersection'](_0x15a1a2['model'],_0x15a1a2[_0xac4a('0x52')]);_0x4ed3b2[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x15a1a2['model'],qs[_0xac4a('0x56')](_0x383b33[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4ed3b2[_0xac4a('0x43')]=_0x4ed3b2[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4ed3b2[_0xac4a('0x43')]:_0x15a1a2[_0xac4a('0x55')];_0x4ed3b2[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x383b33['query']['sort']);_0x4ed3b2[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x383b33['query'],_0x15a1a2[_0xac4a('0x53')]));if(_0x383b33[_0xac4a('0x52')]['filter']){_0x4ed3b2[_0xac4a('0x41')]=_['merge'](_0x4ed3b2[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x4ed3b2[_0xac4a('0x43')],function(_0x398379){var _0x480bc7={};_0x480bc7[_0x398379]={'$like':'%'+_0x383b33[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x480bc7;})});}_0x4ed3b2=_[_0xac4a('0x59')]({},_0x4ed3b2,_0x383b33[_0xac4a('0xce')]);return _0x5b8bee[_0xac4a('0x14d')](_0x4ed3b2);}})[_0xac4a('0x36')](function(_0x59d40d){if(_0x59d40d){_0x34e00d=_0x59d40d[_0xac4a('0x57')];if(!_0x383b33['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x4ed3b2[_0xac4a('0x24')]=qs['limit'](_0x383b33['query'][_0xac4a('0x24')]);_0x4ed3b2[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x383b33['query'][_0xac4a('0x22')]);}return _0x5b8bee[_0xac4a('0x14d')](_0x4ed3b2);}})[_0xac4a('0x36')](function(_0x420e69){if(_0x420e69){return _0x420e69?{'count':_0x34e00d,'rows':_0x420e69}:null;}})[_0xac4a('0x36')](respondWithResult(_0x39811d,null))['catch'](handleError(_0x39811d,null));};exports[_0xac4a('0x14f')]=function(_0x3cf003,_0x5652e0){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x3cf003[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x5652e0,null))[_0xac4a('0x36')](function(_0x209d8e){if(_0x209d8e){return _0x209d8e[_0xac4a('0x14f')](_0x3cf003[_0xac4a('0x5e')][_0xac4a('0x61')],_['omit'](_0x3cf003[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x5652e0,null))['catch'](handleError(_0x5652e0,null));};exports[_0xac4a('0x150')]=function(_0x1c3c47,_0x21f9ca){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x1c3c47[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x21f9ca,null))[_0xac4a('0x36')](function(_0x41569e){if(_0x41569e){return _0x41569e[_0xac4a('0x150')](_0x1c3c47[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x21f9ca,null))['catch'](handleError(_0x21f9ca,null));};exports[_0xac4a('0x151')]=function(_0x2ac340,_0x1e9316){var _0x159ba8={};var _0x58ca47={};var _0x15dbe0;var _0x147f8f;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x2ac340[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x1e9316,null))[_0xac4a('0x36')](function(_0x2e5332){if(_0x2e5332){_0x15dbe0=_0x2e5332;_0x58ca47[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x152')][_0xac4a('0x3c')]);_0x58ca47[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x2ac340['query']);_0x58ca47[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x58ca47[_0xac4a('0x55')],_0x58ca47[_0xac4a('0x52')]);_0x159ba8[_0xac4a('0x43')]=_[_0xac4a('0x54')](_0x58ca47[_0xac4a('0x55')],qs['fields'](_0x2ac340[_0xac4a('0x52')][_0xac4a('0x56')]));_0x159ba8[_0xac4a('0x43')]=_0x159ba8[_0xac4a('0x43')][_0xac4a('0x57')]?_0x159ba8[_0xac4a('0x43')]:_0x58ca47[_0xac4a('0x55')];_0x159ba8[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x2ac340[_0xac4a('0x52')][_0xac4a('0xcc')]);_0x159ba8[_0xac4a('0x41')]=qs['filters'](_[_0xac4a('0xcd')](_0x2ac340[_0xac4a('0x52')],_0x58ca47[_0xac4a('0x53')]));if(_0x2ac340[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x159ba8['where']=_['merge'](_0x159ba8[_0xac4a('0x41')],{'$or':_[_0xac4a('0x30')](_0x159ba8['attributes'],function(_0x36374f){var _0x30fb11={};_0x30fb11[_0x36374f]={'$like':'%'+_0x2ac340[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x30fb11;})});}_0x159ba8=_[_0xac4a('0x59')]({},_0x159ba8,_0x2ac340[_0xac4a('0xce')]);return _0x15dbe0[_0xac4a('0x151')](_0x159ba8);}})[_0xac4a('0x36')](function(_0x228d2d){if(_0x228d2d){_0x147f8f=_0x228d2d['length'];if(!_0x2ac340[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x159ba8['limit']=qs[_0xac4a('0x24')](_0x2ac340[_0xac4a('0x52')][_0xac4a('0x24')]);_0x159ba8[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x2ac340[_0xac4a('0x52')][_0xac4a('0x22')]);}return _0x15dbe0['getWhatsappAccounts'](_0x159ba8);}})[_0xac4a('0x36')](function(_0x728e30){if(_0x728e30){return _0x728e30?{'count':_0x147f8f,'rows':_0x728e30}:null;}})[_0xac4a('0x36')](respondWithResult(_0x1e9316,null))[_0xac4a('0x1e')](handleError(_0x1e9316,null));};exports['addWhatsappAccounts']=function(_0x57954c,_0x14dd8e){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x57954c[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x14dd8e,null))[_0xac4a('0x36')](function(_0x50ff57){if(_0x50ff57){return _0x50ff57[_0xac4a('0x153')](_0x57954c['body']['ids'],_[_0xac4a('0x62')](_0x57954c[_0xac4a('0x5e')],[_0xac4a('0x61'),'id'])||{});}})['then'](respondWithResult(_0x14dd8e,null))[_0xac4a('0x1e')](handleError(_0x14dd8e,null));};exports[_0xac4a('0x154')]=function(_0x6513fc,_0x1e2273){return db[_0xac4a('0x3b')]['find']({'where':{'id':_0x6513fc['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x1e2273,null))['then'](function(_0x2c686c){if(_0x2c686c){return _0x2c686c[_0xac4a('0x154')](_0x6513fc[_0xac4a('0x52')][_0xac4a('0x61')]);}})[_0xac4a('0x36')](respondWithStatusCode(_0x1e2273,null))[_0xac4a('0x1e')](handleError(_0x1e2273,null));};exports[_0xac4a('0x155')]=function(_0x223283,_0x24ee44){var _0x4e893b={};var _0x2f70e9={};var _0x403cf4;var _0x114614;return db[_0xac4a('0x3b')][_0xac4a('0x95')]({'where':{'id':_0x223283[_0xac4a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x24ee44,null))['then'](function(_0x10d8c4){if(_0x10d8c4){_0x403cf4=_0x10d8c4;_0x2f70e9[_0xac4a('0x55')]=_[_0xac4a('0x51')](db[_0xac4a('0x156')][_0xac4a('0x3c')]);_0x2f70e9['query']=_[_0xac4a('0x51')](_0x223283['query']);_0x2f70e9[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x2f70e9['model'],_0x2f70e9[_0xac4a('0x52')]);_0x4e893b['attributes']=_[_0xac4a('0x54')](_0x2f70e9[_0xac4a('0x55')],qs['fields'](_0x223283[_0xac4a('0x52')][_0xac4a('0x56')]));_0x4e893b['attributes']=_0x4e893b[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4e893b[_0xac4a('0x43')]:_0x2f70e9[_0xac4a('0x55')];_0x4e893b[_0xac4a('0xcb')]=qs['sort'](_0x223283['query'][_0xac4a('0xcc')]);_0x4e893b['where']=qs[_0xac4a('0x53')](_[_0xac4a('0xcd')](_0x223283[_0xac4a('0x52')],_0x2f70e9['filters']));if(_0x223283[_0xac4a('0x52')][_0xac4a('0x2e')]){_0x4e893b['where']=_['merge'](_0x4e893b[_0xac4a('0x41')],{'$or':_['map'](_0x4e893b[_0xac4a('0x43')],function(_0x5c53a6){var _0x2a8d3f={};_0x2a8d3f[_0x5c53a6]={'$like':'%'+_0x223283[_0xac4a('0x52')]['filter']+'%'};return _0x2a8d3f;})});}_0x4e893b=_[_0xac4a('0x59')]({},_0x4e893b,_0x223283[_0xac4a('0xce')]);return _0x403cf4[_0xac4a('0x155')](_0x4e893b);}})[_0xac4a('0x36')](function(_0x38cb8e){if(_0x38cb8e){_0x114614=_0x38cb8e[_0xac4a('0x57')];if(!_0x223283[_0xac4a('0x52')]['hasOwnProperty'](_0xac4a('0xd4'))){_0x4e893b[_0xac4a('0x24')]=qs['limit'](_0x223283[_0xac4a('0x52')]['limit']);_0x4e893b[_0xac4a('0x22')]=qs[_0xac4a('0x22')](_0x223283[_0xac4a('0x52')]['offset']);}return _0x403cf4[_0xac4a('0x155')](_0x4e893b);}})[_0xac4a('0x36')](function(_0x261b52){if(_0x261b52){return _0x261b52?{'count':_0x114614,'rows':_0x261b52}:null;}})[_0xac4a('0x36')](respondWithResult(_0x24ee44,null))[_0xac4a('0x1e')](handleError(_0x24ee44,null));};exports[_0xac4a('0x157')]=function(_0x405968,_0x37257f){return db['User'][_0xac4a('0x33')]({'where':{'id':_0x405968[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x37257f,null))[_0xac4a('0x36')](function(_0x325f32){if(_0x325f32){return _0x325f32[_0xac4a('0x157')](_0x405968[_0xac4a('0x5e')]['ids'],_[_0xac4a('0x62')](_0x405968[_0xac4a('0x5e')],['ids','id'])||{});}})[_0xac4a('0x36')](respondWithResult(_0x37257f,null))[_0xac4a('0x1e')](handleError(_0x37257f,null));};exports[_0xac4a('0x158')]=function(_0x20f20e,_0x26a10c){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x20f20e['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x26a10c,null))[_0xac4a('0x36')](function(_0x4c6cb7){if(_0x4c6cb7){return _0x4c6cb7[_0xac4a('0x158')](_0x20f20e[_0xac4a('0x52')]['ids']);}})['then'](respondWithStatusCode(_0x26a10c,null))[_0xac4a('0x1e')](handleError(_0x26a10c,null));};exports['getScheduledCalls']=function(_0x30ccd8,_0x3536a6){var _0x4af765={},_0x59d674={},_0x13ccf8={'count':0x0,'rows':[]};var _0x42d5cd=db[_0xac4a('0x159')]['rawAttributes'];_0x59d674[_0xac4a('0x55')]=_[_0xac4a('0x51')](_0x42d5cd);_0x59d674[_0xac4a('0x52')]=_[_0xac4a('0x51')](_0x30ccd8[_0xac4a('0x52')]);_0x59d674[_0xac4a('0x53')]=_[_0xac4a('0x54')](_0x59d674[_0xac4a('0x55')],_0x59d674[_0xac4a('0x52')]);_0x59d674[_0xac4a('0x53')]=_[_0xac4a('0x15a')](_0x59d674['filters'],[_0xac4a('0x15b'),_0xac4a('0x15c'),_0xac4a('0x15d'),_0xac4a('0x15e'),_0xac4a('0x15f'),_0xac4a('0x160'),_0xac4a('0x161'),_0xac4a('0x162'),'$not',_0xac4a('0x163'),_0xac4a('0x164'),_0xac4a('0x165'),_0xac4a('0x166'),_0xac4a('0x167'),'$notLike','$iLike','$notILike',_0xac4a('0x167'),_0xac4a('0x168'),'$contains','$contained',_0xac4a('0x169')]);_0x4af765[_0xac4a('0x43')]=_['intersection'](_0x59d674['model'],qs[_0xac4a('0x56')](_0x30ccd8['query'][_0xac4a('0x56')]));_0x4af765[_0xac4a('0x43')]=_0x4af765[_0xac4a('0x43')][_0xac4a('0x57')]?_0x4af765[_0xac4a('0x43')]:_0x59d674[_0xac4a('0x55')];if(!_0x30ccd8['query'][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x4af765[_0xac4a('0x24')]=qs['limit'](_0x30ccd8[_0xac4a('0x52')][_0xac4a('0x24')]);_0x4af765['offset']=qs['offset'](_0x30ccd8[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x4af765[_0xac4a('0xcb')]=qs[_0xac4a('0xcc')](_0x30ccd8['query'][_0xac4a('0xcc')]);_0x4af765[_0xac4a('0x41')]=qs[_0xac4a('0x53')](_['pick'](_0x30ccd8['query'],_0x59d674[_0xac4a('0x53')]));if(_0x30ccd8['query'][_0xac4a('0x2e')]){_0x4af765[_0xac4a('0x41')]=_[_0xac4a('0x59')](_0x4af765[_0xac4a('0x41')],{'$or':_['map'](_0x4af765[_0xac4a('0x43')],function(_0x5d64e2){var _0x133882={};_0x133882[_0x5d64e2]={'$like':'%'+_0x30ccd8[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'};return _0x133882;})});}_0x4af765[_0xac4a('0x41')]={'$and':[_0x4af765['where'],{'$or':[{'UserId':_0x30ccd8[_0xac4a('0x4f')]['id']},{'OwnerId':_0x30ccd8[_0xac4a('0x4f')]['id']}]}]};_0x4af765=_[_0xac4a('0x59')]({},_0x4af765,_0x30ccd8[_0xac4a('0xce')]);var _0x36dbef={'where':_0x4af765['where']};return db['CmHopper'][_0xac4a('0x25')](_0x36dbef)[_0xac4a('0x36')](function(_0x95e7a6){_0x13ccf8[_0xac4a('0x25')]=_0x95e7a6;if(_0x30ccd8['query'][_0xac4a('0x58')]){_0x4af765[_0xac4a('0x42')]=[{'attributes':['id','firstName',_0xac4a('0x16a'),'phone'],'model':db[_0xac4a('0xca')],'as':'Contact'},{'attributes':['id',_0xac4a('0x34'),_0xac4a('0x16b')],'model':db[_0xac4a('0xa9')],'as':_0xac4a('0xd6')}];}return db[_0xac4a('0x159')]['findAll'](_0x4af765);})[_0xac4a('0x36')](function(_0x230c33){_0x13ccf8[_0xac4a('0x46')]=_0x230c33;return _0x13ccf8;})[_0xac4a('0x36')](respondWithFilteredResult(_0x3536a6,_0x4af765))[_0xac4a('0x1e')](handleError(_0x3536a6,null));};exports[_0xac4a('0x16c')]=function(_0x1d40ba,_0x4345f0){if(!_[_0xac4a('0x68')](_0x1d40ba[_0xac4a('0x2b')]['id'])&&(_0x1d40ba[_0xac4a('0x2b')]['role']==_0xac4a('0x2a')||_0x1d40ba[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2b'))){return db['User']['findOne']({'where':{'id':_0x1d40ba[_0xac4a('0x4f')]['id']},'raw':!![]})[_0xac4a('0x36')](function(_0x41e661){return authService[_0xac4a('0x16d')](_0x41e661);})[_0xac4a('0x36')](function(_0x1ba78b){if(_0x1ba78b){return _0x4345f0[_0xac4a('0x1f')](0xc8)['json']({'api_key':_0x1ba78b[_0xac4a('0x16e')]});}else{return _0x4345f0[_0xac4a('0x1f')](0xcc)[_0xac4a('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x4345f0,0x193));}else{return _0x4345f0['status'](0x191)['json']({'message':_0xac4a('0x16f')});}};exports[_0xac4a('0x170')]=function(_0x30eac4,_0xda9734){if(!_[_0xac4a('0x68')](_0x30eac4['user']['id'])&&(_0x30eac4[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2a')||_0x30eac4[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2b'))){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x30eac4[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](function(_0x361666){return authService[_0xac4a('0x171')](_0x361666);})['then'](function(_0x225a46){return db[_0xac4a('0x3b')][_0xac4a('0x5d')]({'apiKeyIat':_0x225a46[_0xac4a('0x172')],'apiKeyNonce':_0x225a46[_0xac4a('0x173')]},{'where':{'id':_0x30eac4[_0xac4a('0x4f')]['id']}})[_0xac4a('0x36')](function(){return _0xda9734['status'](0xc8)[_0xac4a('0x21')]({'api_key':_0x225a46[_0xac4a('0x16e')]});});})['catch'](handleError(_0xda9734,0x193));}else{return _0xda9734[_0xac4a('0x1f')](0x191)[_0xac4a('0x21')]({'message':_0xac4a('0x16f')});}};exports['removeApiKey']=function(_0x8e5c45,_0x3dca47){if(!_[_0xac4a('0x68')](_0x8e5c45[_0xac4a('0x2b')]['id'])&&(_0x8e5c45[_0xac4a('0x2b')][_0xac4a('0x29')]==_0xac4a('0x2a')||_0x8e5c45['user'][_0xac4a('0x29')]==_0xac4a('0x2b'))){return db[_0xac4a('0x3b')][_0xac4a('0x33')]({'where':{'id':_0x8e5c45['params']['id']}})[_0xac4a('0x36')](handleEntityNotFound(_0x3dca47,null))[_0xac4a('0x36')](function(_0x124e53){if(_0x124e53&&_0x124e53['apiKeyNonce']&&_0x124e53[_0xac4a('0x174')])return _0x124e53;else throw{'message':_0xac4a('0x175')};})[_0xac4a('0x36')](function(_0x507470){return db['User'][_0xac4a('0x5d')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x8e5c45[_0xac4a('0x4f')]['id']}});})[_0xac4a('0x36')](respondWithStatusCode(_0x3dca47,0xc8))[_0xac4a('0x1e')](handleError(_0x3dca47,0x193));}else{return _0x3dca47[_0xac4a('0x1f')](0x191)[_0xac4a('0x21')]({'message':_0xac4a('0x16f')});}};exports[_0xac4a('0x176')]=function(_0xfa50d6,_0xd6b9cc){var _0x2364f7=_0xfa50d6[_0xac4a('0x2b')]['get']({'plain':!![]});if(!_0x2364f7){return _0xd6b9cc['status'](0x191)[_0xac4a('0x39')](_0xac4a('0x177'));}else{return _0xd6b9cc[_0xac4a('0x1f')](0xc8)['json'](_0x2364f7);}};exports['getPresence']=function(_0x35dfd0,_0x57bba0){var _0x13b8a9={'offset':0x0},_0x1088c0={'count':0x0,'rows':[]};Promise[_0xac4a('0x178')]()['then'](function(){if(!_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')]&&!_0x35dfd0[_0xac4a('0x52')]['teams']&&!_0x35dfd0['query'][_0xac4a('0x179')])return[];return Promise[_0xac4a('0x178')]()[_0xac4a('0x36')](function(){var _0xc04c3b=[];if(!_[_0xac4a('0x17a')](_0x35dfd0[_0xac4a('0x52')]['teams'])){_0xc04c3b['push'](db[_0xac4a('0x10b')][_0xac4a('0x45')]({'attributes':['id','name'],'where':{'id':_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x17b')]}}));}if(!_[_0xac4a('0x17a')](_0x35dfd0[_0xac4a('0x52')]['queues'])){_0xc04c3b['push'](db[_0xac4a('0xa9')][_0xac4a('0x45')]({'attributes':['id','name'],'type':'inbound','where':{'id':_0x35dfd0[_0xac4a('0x52')]['queues']}}));}return Promise[_0xac4a('0x5c')](_0xc04c3b);})[_0xac4a('0x36')](function(_0x10ebf3){var _0x5ec64c=_[_0xac4a('0x117')](_0x10ebf3)[_0xac4a('0x30')](function(_0x30c6f7){return _0x30c6f7[_0xac4a('0x125')]({'attributes':['id',_0xac4a('0x34'),_0xac4a('0x63'),_0xac4a('0x9c')],'raw':!![]});});return Promise[_0xac4a('0x5c')](_0x5ec64c);})['then'](function(_0x36e82d){var _0x2675b0=_[_0xac4a('0x117')](_0x36e82d);if(!_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')])return _0x2675b0;if(_[_0xac4a('0x17a')](_0x2675b0)){return db[_0xac4a('0x3b')]['findAll']({'attributes':['id','name',_0xac4a('0x63'),'online'],'where':{'role':_0xac4a('0x2c'),'$or':[db[_0xac4a('0x6a')][_0xac4a('0x41')](db[_0xac4a('0x6a')]['fn']('lower',db[_0xac4a('0x6a')][_0xac4a('0x17c')](_0xac4a('0x34'))),{'$like':'%'+_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')][_0xac4a('0xa4')]()+'%'}),{'internal':{'$like':'%'+_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')]+'%'}}]},'raw':!![]});}else{return _(_0x2675b0)['flatten']()[_0xac4a('0x2e')](function(_0x55f102){return _0x55f102['name']['toLowerCase']()[_0xac4a('0x32')](_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x2e')]['toLowerCase']())||_0x55f102['internal'][_0xac4a('0x17d')]()[_0xac4a('0x32')](_0x35dfd0[_0xac4a('0x52')]['filter']);})[_0xac4a('0x31')]();}})[_0xac4a('0x36')](function(_0x202afd){var _0x491a2f=_0xac4a('0x34');var _0x10f7bf='asc';if(_0x35dfd0['query'][_0xac4a('0xcc')]){var _0x10f7bf=_0x35dfd0['query'][_0xac4a('0xcc')][0x0]==='-'?_0xac4a('0x17e'):'asc';var _0x491a2f=_0x10f7bf==='asc'?_0x35dfd0[_0xac4a('0x52')]['sort']:_0x35dfd0[_0xac4a('0x52')][_0xac4a('0xcc')][_0xac4a('0x17f')](0x1);}return _(_0x202afd)[_0xac4a('0x180')]('id')[_0xac4a('0x181')]([function(_0x4b109c){return _0x491a2f==='name'?_0x4b109c[_0x491a2f]['toLowerCase']():_0x4b109c[_0x491a2f];}],[_0x10f7bf])['map'](function(_0x19dde9){return _[_0xac4a('0xcd')](_0x19dde9,['id',_0xac4a('0x34'),'internal','online']);})[_0xac4a('0x31')]();})[_0xac4a('0x36')](function(_0x37721b){return client[_0xac4a('0x14')]('Agents',_0x35dfd0)[_0xac4a('0x36')](function(_0x1c77f2){if(_0x1c77f2[_0xac4a('0x1b')])throw new Error(_0xac4a('0x182'));var _0x1bd963=_0x1c77f2[_0xac4a('0x183')];var _0x12b847=jayson['client']['http']({'port':0x232c});return _0x12b847[_0xac4a('0x14')](_0xac4a('0x87'),_0x35dfd0)[_0xac4a('0x36')](function(_0x5605ac){if(_0x5605ac[_0xac4a('0x1b')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x206817=_0x5605ac[_0xac4a('0x183')];return _[_0xac4a('0x59')]({},_0x206817,_0x1bd963);});})[_0xac4a('0x36')](function(_0x461cf8){return _[_0xac4a('0x30')](_0x37721b,function(_0x21b463){var _0xe01d23=_[_0xac4a('0x33')](_0x461cf8[_0xac4a('0x46')],['id',_0x21b463['id']]);if(!_0xe01d23||!_0x21b463[_0xac4a('0x9c')]){_0x21b463[_0xac4a('0x1f')]=_0xac4a('0x184');}else if(_0xe01d23['voicePause']){_0x21b463[_0xac4a('0x1f')]=_0xac4a('0x185');}else{_0x21b463[_0xac4a('0x1f')]=_['includes'](['idle',_0xac4a('0x186'),_0xac4a('0x187'),_0xac4a('0x188'),null,undefined],_0xe01d23[_0xac4a('0x189')])?_0xac4a('0x9c'):_0xac4a('0x18a');}return _0x21b463;});});});})[_0xac4a('0x36')](function(_0xc6382f){if(!_0x35dfd0[_0xac4a('0x52')][_0xac4a('0xcf')](_0xac4a('0xd4'))){_0x13b8a9['limit']=qs[_0xac4a('0x24')](_0x35dfd0[_0xac4a('0x52')]['limit']||0xa);_0x13b8a9[_0xac4a('0x22')]=qs['offset'](_0x35dfd0[_0xac4a('0x52')][_0xac4a('0x22')]);}_0x1088c0[_0xac4a('0x25')]=_0xc6382f[_0xac4a('0x57')];_0x1088c0[_0xac4a('0x46')]=_0x13b8a9[_0xac4a('0x24')]?_0xc6382f[_0xac4a('0x18b')](_0x13b8a9[_0xac4a('0x22')],_0x13b8a9[_0xac4a('0x22')]+_0x13b8a9[_0xac4a('0x24')]):_0xc6382f;return _0x1088c0;})[_0xac4a('0x36')](respondWithFilteredResult(_0x57bba0,_0x13b8a9))[_0xac4a('0x1e')](handleError(_0x57bba0,null));};function get_open_tabs(_0xbd5b13,_0x5db1da){var _0xd7003=_0xbd5b13[_0xac4a('0x18c')](0x0)['toUpperCase']()+_0xbd5b13[_0xac4a('0x18b')](0x1);var _0x2b1926={'type':db[_0xac4a('0x8c')][_0xac4a('0x6c')]['SELECT'],'raw':!![]};return new BPromise(function(_0x262c5d,_0x27d848){var _0x573aae=squel['select']()[_0xac4a('0x18d')](_0xac4a('0x18e')+_0xd7003+_0xac4a('0x18f'),'id')[_0xac4a('0x18d')]('ui.createdAt')[_0xac4a('0x6e')]('user_has_'+_0xbd5b13+'_interactions','ui')[_0xac4a('0x41')]('ui.UserId\x20=\x20?',_0x5db1da['id']);return db[_0xac4a('0x6a')]['query'](_0x573aae[_0xac4a('0x17d')](),_0x2b1926)[_0xac4a('0x36')](function(_0x24b44f){_0x5db1da[_0xd7003+_0xac4a('0x190')]=_0x24b44f;_0x262c5d(_0x24b44f);})[_0xac4a('0x1e')](function(_0x2a5286){_0x27d848(_0x2a5286);});});};
\ No newline at end of file
index 3c11d06..4e337da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d58=['exports','../../mysqldb','User','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x101134,_0x1ed1d3){var _0xc47acc=function(_0x7ea469){while(--_0x7ea469){_0x101134['push'](_0x101134['shift']());}};_0xc47acc(++_0x1ed1d3);}(_0x3d58,0x1b1));var _0x83d5=function(_0xdf885b,_0xf3e478){_0xdf885b=_0xdf885b-0x0;var _0xf56f=_0x3d58[_0xdf885b];return _0xf56f;};'use strict';var EventEmitter=require('events');var User=require(_0x83d5('0x0'))['db'][_0x83d5('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x83d5('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x83d5('0x3'),'afterDestroy':_0x83d5('0x4')};function emitEvent(_0x23c045){return function(_0x1ef2d0,_0x5ad005,_0x2b7426){UserEvents['emit'](_0x23c045+':'+_0x1ef2d0['id'],_0x1ef2d0);UserEvents[_0x83d5('0x5')](_0x23c045,_0x1ef2d0);_0x2b7426(null);};}for(var e in events){if(events[_0x83d5('0x6')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x83d5('0x7')]=UserEvents;
\ No newline at end of file
+var _0x6b09=['emit','hasOwnProperty','exports','events','../../mysqldb','User','save','update','remove'];(function(_0x543ff0,_0xfc33fb){var _0x293177=function(_0x175fcc){while(--_0x175fcc){_0x543ff0['push'](_0x543ff0['shift']());}};_0x293177(++_0xfc33fb);}(_0x6b09,0xed));var _0x96b0=function(_0x295ea9,_0x19d658){_0x295ea9=_0x295ea9-0x0;var _0x59a3fe=_0x6b09[_0x295ea9];return _0x59a3fe;};'use strict';var EventEmitter=require(_0x96b0('0x0'));var User=require(_0x96b0('0x1'))['db'][_0x96b0('0x2')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x96b0('0x3'),'afterUpdate':_0x96b0('0x4'),'afterDestroy':_0x96b0('0x5')};function emitEvent(_0x36366e){return function(_0x392891,_0x3fd72b,_0x215cf1){UserEvents[_0x96b0('0x6')](_0x36366e+':'+_0x392891['id'],_0x392891);UserEvents[_0x96b0('0x6')](_0x36366e,_0x392891);_0x215cf1(null);};}for(var e in events){if(events[_0x96b0('0x7')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x96b0('0x8')]=UserEvents;
\ No newline at end of file
index 51910b9..b0f9149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf716=['Dial','Hangup','priority','defaults','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','userProfileId','find','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','context','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','toString','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','bluebird','crypto','md5','lodash','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','name','options','join','StopMixMonitor','wav','WAV','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf716,0xfe));var _0x6f71=function(_0x651ab9,_0x4162e8){_0x651ab9=_0x651ab9-0x0;var _0x14ec5b=_0xf716[_0x651ab9];return _0x14ec5b;};'use strict';var BPromise=require(_0x6f71('0x0'));var crypto=require(_0x6f71('0x1'));var util=require('util');var md5=require(_0x6f71('0x2'));var _=require(_0x6f71('0x3'));var attributes=require(_0x6f71('0x4'));var authTypes=[_0x6f71('0x5')];var validatePresenceOf=function(_0x17b698){return _0x17b698&&_0x17b698[_0x6f71('0x6')];};var getChanSpyApplications=function(_0x4eddbd,_0x19ed64,_0x3b6140){var _0x4c0f96={'context':_0x4eddbd['context']||_0x6f71('0x7'),'type':_0x6f71('0x8'),'isApp':![],'UserId':_0x4eddbd['id']};var _0x15979a=[];for(var _0x28eb1e=0x0,_0x45c25d=0x1;_0x28eb1e<_0x3b6140[_0x6f71('0x6')];_0x28eb1e++,_0x45c25d=0x1){var _0x2d5fde={'exten':util[_0x6f71('0x9')](_0x6f71('0xa'),_0x3b6140[_0x28eb1e][_0x6f71('0xb')],_0x19ed64),'ChanSpyId':_0x3b6140[_0x28eb1e]['id']};_0x15979a[_0x6f71('0xc')](_['merge']({'app':_0x6f71('0xd'),'appdata':util[_0x6f71('0x9')](_0x6f71('0xe'),_0x6f71('0xf')),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));if(_0x3b6140[_0x28eb1e][_0x6f71('0x10')]){_0x15979a[_0x6f71('0xc')](_[_0x6f71('0x11')]({'app':_0x6f71('0x12'),'appdata':util[_0x6f71('0x9')](_0x6f71('0x13'),_0x3b6140[_0x28eb1e]['recordingFormat']),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));}if(_0x3b6140[_0x28eb1e]['auth']){_0x15979a['push'](_[_0x6f71('0x11')]({'app':_0x6f71('0x14'),'appdata':_0x3b6140[_0x28eb1e][_0x6f71('0x15')],'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));}_0x15979a[_0x6f71('0xc')](_['merge']({'app':'ChanSpy','appdata':util['format']('SIP/%s,%s',_0x4eddbd[_0x6f71('0x16')],_0x3b6140[_0x28eb1e][_0x6f71('0x17')]?_0x3b6140[_0x28eb1e][_0x6f71('0x17')][_0x6f71('0x18')](''):''),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));if(_0x3b6140[_0x28eb1e]['record']){_0x15979a[_0x6f71('0xc')](_['merge']({'app':_0x6f71('0x19'),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));}}return _0x15979a;};var getUserApplications=function(_0x511fb4,_0x53afec){var _0x36b309=[_0x6f71('0x1a'),_0x6f71('0x1b'),'gsm'];var _0x13d85e={'context':_0x511fb4['context']||_0x6f71('0x7'),'exten':_0x53afec,'type':'system','isApp':![],'UserId':_0x511fb4['id']};var _0x33e9d6=[{'app':'Set','appdata':_0x6f71('0x1c')}];if(_0x511fb4['extensionMonitor']&&_[_0x6f71('0x1d')](_0x36b309,_0x511fb4[_0x6f71('0x1e')])){_0x33e9d6['push']({'app':_0x6f71('0xd'),'appdata':_0x6f71('0x1f')});_0x33e9d6[_0x6f71('0xc')]({'app':_0x6f71('0xd'),'appdata':util[_0x6f71('0x9')](_0x6f71('0x20'),_0x511fb4['extensionMonitor'])});_0x33e9d6[_0x6f71('0xc')]({'app':'Dial','appdata':util[_0x6f71('0x9')](_0x6f71('0x21'),_0x511fb4[_0x6f71('0x16')])});}else{_0x33e9d6[_0x6f71('0xc')]({'app':_0x6f71('0x22'),'appdata':util[_0x6f71('0x9')]('SIP/%s,,tTxX',_0x511fb4[_0x6f71('0x16')])});}_0x33e9d6['push']({'app':_0x6f71('0x23')});for(var _0x14f11b=0x0;_0x14f11b<_0x33e9d6['length'];_0x14f11b++){_0x33e9d6[_0x14f11b][_0x6f71('0x24')]=_0x14f11b+0x1;_0x33e9d6[_0x14f11b]=_[_0x6f71('0x25')](_0x33e9d6[_0x14f11b],_0x13d85e);}return _0x33e9d6;};var getChanSpyPromise=function(_0x5ee3a5,_0x27aa8d){return new BPromise(function(_0xfd244d,_0xaffdd7){return _0x5ee3a5['VoiceChanSpy']['findAll']()[_0x6f71('0x26')](function(_0x1235b3){if(_0x1235b3){var _0x58c7ff=getChanSpyApplications(_0x27aa8d,_0x27aa8d['internal'],_0x1235b3);if(_0x27aa8d[_0x6f71('0x27')]!=_0x27aa8d[_0x6f71('0x16')]){_0x58c7ff=_0x58c7ff[_0x6f71('0x28')](getChanSpyApplications(_0x27aa8d,_0x27aa8d['name'],_0x1235b3));}return _0xfd244d(_0x58c7ff);}return _0xfd244d([]);})[_0x6f71('0x29')](function(_0x478e12){_0xaffdd7(_0x478e12);});});};module['exports']=function(_0xe2aa65,_0x3cf97b){var _0x32e1b7=_0xe2aa65[_0x6f71('0x2a')];return _0xe2aa65[_0x6f71('0x2b')](_0x6f71('0x2c'),attributes,{'tableName':_0x6f71('0x2d'),'charset':_0x6f71('0x2e'),'collate':_0x6f71('0x2f'),'hooks':{'beforeCreate':function(_0x1137ce,_0x421540,_0x160b5f){var _0x59ed3c=typeof _0x1137ce[_0x6f71('0x30')]==='undefined'?BPromise['resolve'](null):_0x32e1b7['UserProfile'][_0x6f71('0x31')]({'where':{'id':_0x1137ce[_0x6f71('0x30')]}});_0x59ed3c[_0x6f71('0x26')](function(_0x356ebd){if(_0x356ebd){_0x1137ce['privacyEnabled']=_0x356ebd[_0x6f71('0x32')];}})[_0x6f71('0x26')](function(){_0x1137ce[_0x6f71('0x33')]();_0x1137ce[_0x6f71('0x34')](_0x160b5f);})[_0x6f71('0x29')](function(_0x1ff5ad){_0x160b5f(_0x1ff5ad);});},'beforeUpdate':function(_0x2ffcf4,_0x3ab9c1,_0x91682c){Promise['resolve']()[_0x6f71('0x26')](function(){if(_0x2ffcf4[_0x6f71('0x35')]('userProfileId')===![])return;return _0x32e1b7['UserProfile'][_0x6f71('0x31')]({'where':{'id':_0x2ffcf4[_0x6f71('0x30')]}})['then'](function(_0x3b6398){if(_0x3b6398)_0x2ffcf4['privacyEnabled']=_0x3b6398[_0x6f71('0x32')];return;});})[_0x6f71('0x26')](function(){if(_0x2ffcf4[_0x6f71('0x35')](_0x6f71('0x15'))){_0x2ffcf4[_0x6f71('0x33')]();return _0x2ffcf4[_0x6f71('0x34')](_0x91682c);}_0x91682c();})[_0x6f71('0x29')](function(_0x39dc1f){_0x91682c(_0x39dc1f);});},'afterCreate':function(_0x4ca5e6,_0x5e85f3,_0x485b9b){var _0x1fb0d6=getUserApplications(_0x4ca5e6,_0x4ca5e6[_0x6f71('0x27')]);if(_0x4ca5e6['internal']!=_0x4ca5e6['name']){_0x1fb0d6=_0x1fb0d6['concat'](getUserApplications(_0x4ca5e6,_0x4ca5e6['name']));}return _0x32e1b7['VoiceExtension']['bulkCreate'](_0x1fb0d6)[_0x6f71('0x26')](function(){if(_0x4ca5e6['chanspy']){return getChanSpyPromise(_0x32e1b7,_0x4ca5e6);}})[_0x6f71('0x26')](function(_0x3a0f0a){if(_0x3a0f0a&&_0x3a0f0a['length']){return _0x32e1b7[_0x6f71('0x36')]['bulkCreate'](_0x3a0f0a);}})[_0x6f71('0x26')](function(){_0x485b9b();})[_0x6f71('0x29')](function(_0x16180e){_0x485b9b(_0x16180e);});},'afterUpdate':function(_0x174f60,_0x4e2146,_0xe2eb47){return BPromise['resolve']()['then'](function(){if(_0x174f60[_0x6f71('0x35')]('chanspy')||_0x174f60[_0x6f71('0x35')](_0x6f71('0x37'))){return _0x32e1b7[_0x6f71('0x36')]['destroy']({'where':{'UserId':_0x174f60['id'],'type':_0x6f71('0x8'),'ChanSpyId':{'$ne':null}}})[_0x6f71('0x26')](function(){if(_0x174f60[_0x6f71('0xf')]){return getChanSpyPromise(_0x32e1b7,_0x174f60)[_0x6f71('0x26')](function(_0x448ceb){if(_0x448ceb&&_0x448ceb['length']){return _0x32e1b7[_0x6f71('0x36')][_0x6f71('0x38')](_0x448ceb);}});}});}})['then'](function(){if(_0x174f60[_0x6f71('0x35')](_0x6f71('0x1e'))||_0x174f60[_0x6f71('0x35')](_0x6f71('0x37'))){return _0x32e1b7[_0x6f71('0x36')][_0x6f71('0x39')]({'where':{'UserId':_0x174f60['id'],'type':_0x6f71('0x8'),'ChanSpyId':null}})[_0x6f71('0x26')](function(){var _0x4ac146=getUserApplications(_0x174f60,_0x174f60['internal']);if(_0x174f60[_0x6f71('0x27')]!=_0x174f60[_0x6f71('0x16')]){_0x4ac146=_0x4ac146[_0x6f71('0x28')](getUserApplications(_0x174f60,_0x174f60[_0x6f71('0x16')]));}return _0x32e1b7[_0x6f71('0x36')][_0x6f71('0x38')](_0x4ac146);});}})[_0x6f71('0x26')](function(){_0xe2eb47();})[_0x6f71('0x29')](function(_0x4ec94b){_0xe2eb47(_0x4ec94b);});},'afterDestroy':function(_0x100c3e,_0x235031){return _0x32e1b7[_0x6f71('0x36')]['destroy']({'where':{'UserId':_0x100c3e['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x6fdde3,_0xbdce4c){if(!_0xbdce4c){return this[_0x6f71('0x15')]===this[_0x6f71('0x3a')](_0x6fdde3);}var _0x2831c2=this;this[_0x6f71('0x3a')](_0x6fdde3,function(_0x1b17a2,_0x10e95e){if(_0x1b17a2){_0xbdce4c(_0x1b17a2);}if(_0x2831c2['password']===_0x10e95e){_0xbdce4c(null,!![]);}else{_0xbdce4c(null,![]);}});},'makeSalt':function(_0x1bfcc2,_0x58c399){var _0x355a0d=0x10;if(typeof arguments[0x0]===_0x6f71('0x3b')){_0x58c399=arguments[0x0];_0x1bfcc2=_0x355a0d;}else if(typeof arguments[0x1]===_0x6f71('0x3b')){_0x58c399=arguments[0x1];}else{throw new Error(_0x6f71('0x3c'));}if(!_0x1bfcc2){_0x1bfcc2=_0x355a0d;}return crypto[_0x6f71('0x3d')](_0x1bfcc2,function(_0x3bd08b,_0x3c8160){if(_0x3bd08b){_0x58c399(_0x3bd08b);}return _0x58c399(null,_0x3c8160['toString'](_0x6f71('0x3e')));});},'encryptPassword':function(_0x3f975b,_0x4c3200){if(!_0x3f975b||!this[_0x6f71('0x3f')]){return _0x4c3200?_0x4c3200(null):null;}var _0x1fa809=0x2710;var _0x3b83a9=0x40;var _0x46b586=new Buffer(this[_0x6f71('0x3f')],_0x6f71('0x3e'));if(!_0x4c3200){return crypto[_0x6f71('0x40')](_0x3f975b,_0x46b586,_0x1fa809,_0x3b83a9,'sha1')[_0x6f71('0x41')](_0x6f71('0x3e'));}return crypto[_0x6f71('0x42')](_0x3f975b,_0x46b586,_0x1fa809,_0x3b83a9,'sha1',function(_0x533483,_0x29c9a8){if(_0x533483){_0x4c3200(_0x533483);}return _0x4c3200(null,_0x29c9a8['toString'](_0x6f71('0x3e')));});},'updatePassword':function(_0x55a344){if(!this[_0x6f71('0x15')]){return _0x55a344(null);}if(!validatePresenceOf(this[_0x6f71('0x15')])&&authTypes[_0x6f71('0x43')](this[_0x6f71('0x44')])===-0x1){_0x55a344(new Error(_0x6f71('0x45')));}var _0xbc82db=this;this[_0x6f71('0x46')](function(_0x5a61db,_0x51a7a5){if(_0x5a61db){return _0x55a344(_0x5a61db);}_0xbc82db[_0x6f71('0x3f')]=_0x51a7a5;_0xbc82db[_0x6f71('0x3a')](_0xbc82db[_0x6f71('0x15')],function(_0x21549c,_0x55fec3){if(_0x21549c){_0x55a344(_0x21549c);}_0xbc82db['password']=_0x55fec3;_0x55a344(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x6f71('0x16')]+_0x6f71('0x47')+this[_0x6f71('0x15')]);return this['md5secret'];}}});};
\ No newline at end of file
+var _0x3a96=['findAll','then','internal','concat','catch','exports','models','User','users','utf8','userProfileId','undefined','find','updateMd5Password','updatePassword','resolve','changed','UserProfile','privacyEnabled','VoiceExtension','bulkCreate','destroy','password','encryptPassword','function','randomBytes','base64','salt','pbkdf2Sync','sha1','pbkdf2','toString','indexOf','Invalid\x20password','md5secret',':asterisk:','bluebird','md5','lodash','google','context','system','length','prefix','push','merge','Set','CDR(type)=%s','chanspy','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','ChanSpy','name','options','join','wav','WAV','gsm','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','format','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy'];(function(_0x95dddf,_0x1e7fc8){var _0x59f53f=function(_0x2251b3){while(--_0x2251b3){_0x95dddf['push'](_0x95dddf['shift']());}};_0x59f53f(++_0x1e7fc8);}(_0x3a96,0x144));var _0x63a9=function(_0x3a753b,_0x2a761f){_0x3a753b=_0x3a753b-0x0;var _0x2f6048=_0x3a96[_0x3a753b];return _0x2f6048;};'use strict';var BPromise=require(_0x63a9('0x0'));var crypto=require('crypto');var util=require('util');var md5=require(_0x63a9('0x1'));var _=require(_0x63a9('0x2'));var attributes=require('./user.attributes');var authTypes=[_0x63a9('0x3')];var validatePresenceOf=function(_0x314460){return _0x314460&&_0x314460['length'];};var getChanSpyApplications=function(_0x3499eb,_0x5cce76,_0x5be4c5){var _0x1eca52={'context':_0x3499eb[_0x63a9('0x4')]||'from-sip','type':_0x63a9('0x5'),'isApp':![],'UserId':_0x3499eb['id']};var _0x46678a=[];for(var _0x36657e=0x0,_0x19a6b2=0x1;_0x36657e<_0x5be4c5[_0x63a9('0x6')];_0x36657e++,_0x19a6b2=0x1){var _0x16cf92={'exten':util['format']('%s%s',_0x5be4c5[_0x36657e][_0x63a9('0x7')],_0x5cce76),'ChanSpyId':_0x5be4c5[_0x36657e]['id']};_0x46678a[_0x63a9('0x8')](_[_0x63a9('0x9')]({'app':_0x63a9('0xa'),'appdata':util['format'](_0x63a9('0xb'),_0x63a9('0xc')),'priority':_0x19a6b2++},_0x1eca52,_0x16cf92));if(_0x5be4c5[_0x36657e]['record']){_0x46678a[_0x63a9('0x8')](_[_0x63a9('0x9')]({'app':_0x63a9('0xd'),'appdata':util['format'](_0x63a9('0xe'),_0x5be4c5[_0x36657e]['recordingFormat']),'priority':_0x19a6b2++},_0x1eca52,_0x16cf92));}if(_0x5be4c5[_0x36657e][_0x63a9('0xf')]){_0x46678a[_0x63a9('0x8')](_[_0x63a9('0x9')]({'app':_0x63a9('0x10'),'appdata':_0x5be4c5[_0x36657e]['password'],'priority':_0x19a6b2++},_0x1eca52,_0x16cf92));}_0x46678a['push'](_[_0x63a9('0x9')]({'app':_0x63a9('0x11'),'appdata':util['format']('SIP/%s,%s',_0x3499eb[_0x63a9('0x12')],_0x5be4c5[_0x36657e][_0x63a9('0x13')]?_0x5be4c5[_0x36657e][_0x63a9('0x13')][_0x63a9('0x14')](''):''),'priority':_0x19a6b2++},_0x1eca52,_0x16cf92));if(_0x5be4c5[_0x36657e]['record']){_0x46678a[_0x63a9('0x8')](_[_0x63a9('0x9')]({'app':'StopMixMonitor','priority':_0x19a6b2++},_0x1eca52,_0x16cf92));}}return _0x46678a;};var getUserApplications=function(_0x35e9f5,_0x185474){var _0x10ba31=[_0x63a9('0x15'),_0x63a9('0x16'),_0x63a9('0x17')];var _0x1eca16={'context':_0x35e9f5[_0x63a9('0x4')]||_0x63a9('0x18'),'exten':_0x185474,'type':'system','isApp':![],'UserId':_0x35e9f5['id']};var _0x19309e=[{'app':_0x63a9('0xa'),'appdata':_0x63a9('0x19')}];if(_0x35e9f5[_0x63a9('0x1a')]&&_[_0x63a9('0x1b')](_0x10ba31,_0x35e9f5[_0x63a9('0x1a')])){_0x19309e['push']({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x19309e[_0x63a9('0x8')]({'app':'Set','appdata':util['format'](_0x63a9('0x1c'),_0x35e9f5[_0x63a9('0x1a')])});_0x19309e[_0x63a9('0x8')]({'app':_0x63a9('0x1d'),'appdata':util['format'](_0x63a9('0x1e'),_0x35e9f5[_0x63a9('0x12')])});}else{_0x19309e['push']({'app':_0x63a9('0x1d'),'appdata':util[_0x63a9('0x1f')](_0x63a9('0x20'),_0x35e9f5[_0x63a9('0x12')])});}_0x19309e[_0x63a9('0x8')]({'app':_0x63a9('0x21')});for(var _0x1de633=0x0;_0x1de633<_0x19309e['length'];_0x1de633++){_0x19309e[_0x1de633][_0x63a9('0x22')]=_0x1de633+0x1;_0x19309e[_0x1de633]=_['defaults'](_0x19309e[_0x1de633],_0x1eca16);}return _0x19309e;};var getChanSpyPromise=function(_0x29255e,_0x3a6476){return new BPromise(function(_0x50b931,_0x28291c){return _0x29255e[_0x63a9('0x23')][_0x63a9('0x24')]()[_0x63a9('0x25')](function(_0x22fba2){if(_0x22fba2){var _0x2a0012=getChanSpyApplications(_0x3a6476,_0x3a6476[_0x63a9('0x26')],_0x22fba2);if(_0x3a6476[_0x63a9('0x26')]!=_0x3a6476[_0x63a9('0x12')]){_0x2a0012=_0x2a0012[_0x63a9('0x27')](getChanSpyApplications(_0x3a6476,_0x3a6476[_0x63a9('0x12')],_0x22fba2));}return _0x50b931(_0x2a0012);}return _0x50b931([]);})[_0x63a9('0x28')](function(_0x140d76){_0x28291c(_0x140d76);});});};module[_0x63a9('0x29')]=function(_0x199d9c,_0xc0e1cc){var _0x4153a1=_0x199d9c[_0x63a9('0x2a')];return _0x199d9c['define'](_0x63a9('0x2b'),attributes,{'tableName':_0x63a9('0x2c'),'charset':_0x63a9('0x2d'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x3c4723,_0x461450,_0x534ae8){var _0x24b84a=typeof _0x3c4723[_0x63a9('0x2e')]===_0x63a9('0x2f')?BPromise['resolve'](null):_0x4153a1['UserProfile'][_0x63a9('0x30')]({'where':{'id':_0x3c4723[_0x63a9('0x2e')]}});_0x24b84a['then'](function(_0x2b57f9){if(_0x2b57f9){_0x3c4723['privacyEnabled']=_0x2b57f9['privacyEnabled'];}})['then'](function(){_0x3c4723[_0x63a9('0x31')]();_0x3c4723[_0x63a9('0x32')](_0x534ae8);})[_0x63a9('0x28')](function(_0x35f344){_0x534ae8(_0x35f344);});},'beforeUpdate':function(_0x157e34,_0x246355,_0x46a90f){Promise[_0x63a9('0x33')]()['then'](function(){if(_0x157e34[_0x63a9('0x34')](_0x63a9('0x2e'))===![])return;return _0x4153a1[_0x63a9('0x35')][_0x63a9('0x30')]({'where':{'id':_0x157e34[_0x63a9('0x2e')]}})['then'](function(_0x52ed0d){if(_0x52ed0d)_0x157e34[_0x63a9('0x36')]=_0x52ed0d['privacyEnabled'];return;});})['then'](function(){if(_0x157e34[_0x63a9('0x34')]('password')){_0x157e34['updateMd5Password']();return _0x157e34[_0x63a9('0x32')](_0x46a90f);}_0x46a90f();})[_0x63a9('0x28')](function(_0x4a7b09){_0x46a90f(_0x4a7b09);});},'afterCreate':function(_0x4429dc,_0x49139a,_0x2c35a0){var _0x2184f6=getUserApplications(_0x4429dc,_0x4429dc['internal']);if(_0x4429dc[_0x63a9('0x26')]!=_0x4429dc[_0x63a9('0x12')]){_0x2184f6=_0x2184f6[_0x63a9('0x27')](getUserApplications(_0x4429dc,_0x4429dc[_0x63a9('0x12')]));}return _0x4153a1[_0x63a9('0x37')][_0x63a9('0x38')](_0x2184f6)[_0x63a9('0x25')](function(){if(_0x4429dc[_0x63a9('0xc')]){return getChanSpyPromise(_0x4153a1,_0x4429dc);}})['then'](function(_0x430fa0){if(_0x430fa0&&_0x430fa0[_0x63a9('0x6')]){return _0x4153a1[_0x63a9('0x37')][_0x63a9('0x38')](_0x430fa0);}})['then'](function(){_0x2c35a0();})[_0x63a9('0x28')](function(_0x1cd59e){_0x2c35a0(_0x1cd59e);});},'afterUpdate':function(_0x196e13,_0x2e46ff,_0x559cbd){return BPromise[_0x63a9('0x33')]()['then'](function(){if(_0x196e13[_0x63a9('0x34')](_0x63a9('0xc'))||_0x196e13[_0x63a9('0x34')](_0x63a9('0x4'))){return _0x4153a1['VoiceExtension'][_0x63a9('0x39')]({'where':{'UserId':_0x196e13['id'],'type':_0x63a9('0x5'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x196e13[_0x63a9('0xc')]){return getChanSpyPromise(_0x4153a1,_0x196e13)[_0x63a9('0x25')](function(_0x2836c6){if(_0x2836c6&&_0x2836c6[_0x63a9('0x6')]){return _0x4153a1['VoiceExtension'][_0x63a9('0x38')](_0x2836c6);}});}});}})[_0x63a9('0x25')](function(){if(_0x196e13[_0x63a9('0x34')](_0x63a9('0x1a'))||_0x196e13[_0x63a9('0x34')](_0x63a9('0x4'))){return _0x4153a1[_0x63a9('0x37')][_0x63a9('0x39')]({'where':{'UserId':_0x196e13['id'],'type':_0x63a9('0x5'),'ChanSpyId':null}})['then'](function(){var _0x87f598=getUserApplications(_0x196e13,_0x196e13[_0x63a9('0x26')]);if(_0x196e13[_0x63a9('0x26')]!=_0x196e13[_0x63a9('0x12')]){_0x87f598=_0x87f598[_0x63a9('0x27')](getUserApplications(_0x196e13,_0x196e13['name']));}return _0x4153a1['VoiceExtension'][_0x63a9('0x38')](_0x87f598);});}})[_0x63a9('0x25')](function(){_0x559cbd();})[_0x63a9('0x28')](function(_0x4e1a46){_0x559cbd(_0x4e1a46);});},'afterDestroy':function(_0x2a7cbf,_0x4ae5a2){return _0x4153a1[_0x63a9('0x37')]['destroy']({'where':{'UserId':_0x2a7cbf['id'],'type':_0x63a9('0x5')}});}},'instanceMethods':{'authenticate':function(_0x4d7cd6,_0x3d6466){if(!_0x3d6466){return this[_0x63a9('0x3a')]===this[_0x63a9('0x3b')](_0x4d7cd6);}var _0x27ea53=this;this[_0x63a9('0x3b')](_0x4d7cd6,function(_0x5f4315,_0x84481c){if(_0x5f4315){_0x3d6466(_0x5f4315);}if(_0x27ea53[_0x63a9('0x3a')]===_0x84481c){_0x3d6466(null,!![]);}else{_0x3d6466(null,![]);}});},'makeSalt':function(_0x6701d2,_0x1b9f1f){var _0x2919f6=0x10;if(typeof arguments[0x0]===_0x63a9('0x3c')){_0x1b9f1f=arguments[0x0];_0x6701d2=_0x2919f6;}else if(typeof arguments[0x1]===_0x63a9('0x3c')){_0x1b9f1f=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x6701d2){_0x6701d2=_0x2919f6;}return crypto[_0x63a9('0x3d')](_0x6701d2,function(_0x4c243e,_0x4f4bae){if(_0x4c243e){_0x1b9f1f(_0x4c243e);}return _0x1b9f1f(null,_0x4f4bae['toString'](_0x63a9('0x3e')));});},'encryptPassword':function(_0x53d4b9,_0x3ced85){if(!_0x53d4b9||!this['salt']){return _0x3ced85?_0x3ced85(null):null;}var _0x4fc3c2=0x2710;var _0x53929f=0x40;var _0x116d0d=new Buffer(this[_0x63a9('0x3f')],_0x63a9('0x3e'));if(!_0x3ced85){return crypto[_0x63a9('0x40')](_0x53d4b9,_0x116d0d,_0x4fc3c2,_0x53929f,_0x63a9('0x41'))['toString'](_0x63a9('0x3e'));}return crypto[_0x63a9('0x42')](_0x53d4b9,_0x116d0d,_0x4fc3c2,_0x53929f,_0x63a9('0x41'),function(_0x3bdb83,_0x343066){if(_0x3bdb83){_0x3ced85(_0x3bdb83);}return _0x3ced85(null,_0x343066[_0x63a9('0x43')](_0x63a9('0x3e')));});},'updatePassword':function(_0x50507c){if(!this[_0x63a9('0x3a')]){return _0x50507c(null);}if(!validatePresenceOf(this[_0x63a9('0x3a')])&&authTypes[_0x63a9('0x44')](this['provider'])===-0x1){_0x50507c(new Error(_0x63a9('0x45')));}var _0x5c11f8=this;this['makeSalt'](function(_0x2f157d,_0x3376d1){if(_0x2f157d){return _0x50507c(_0x2f157d);}_0x5c11f8[_0x63a9('0x3f')]=_0x3376d1;_0x5c11f8[_0x63a9('0x3b')](_0x5c11f8[_0x63a9('0x3a')],function(_0x372d2a,_0x3f2113){if(_0x372d2a){_0x50507c(_0x372d2a);}_0x5c11f8[_0x63a9('0x3a')]=_0x3f2113;_0x50507c(null);});});},'updateMd5Password':function(){this[_0x63a9('0x46')]=md5(this[_0x63a9('0x12')]+_0x63a9('0x47')+this[_0x63a9('0x3a')]);return this[_0x63a9('0x46')];}}});};
\ No newline at end of file
index 4883bf5..0d966c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ce=['register','request','then','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','User','findAll','options','raw','where','include','map','model','attributes','GetUser','catch','ShowUser','find','PauseUser','name','role','internal','interface','UserVoiceQueueRt','MemberReport','PAUSE','length','updateAttributes','getChannels','isNil','format','YYYY-MM-DD\x20HH:mm:ss','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','update','body','findOne','isValidChannel','voice','system','mail','chat','fax','sms','set','channel','Pause','forEach','push','all','LogoutUser','destroy','mobile','phone','loginInPause','SIP/%s','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','merge','LOGIN','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket'];(function(_0x2bbab2,_0xdb622d){var _0x2ca775=function(_0x5820b6){while(--_0x5820b6){_0x2bbab2['push'](_0x2bbab2['shift']());}};_0x2ca775(++_0xdb622d);}(_0x31ce,0xa6));var _0xe31c=function(_0x5517c0,_0x358609){_0x5517c0=_0x5517c0-0x0;var _0x33803b=_0x31ce[_0x5517c0];return _0x33803b;};'use strict';var _=require(_0xe31c('0x0'));var util=require(_0xe31c('0x1'));var moment=require(_0xe31c('0x2'));var BPromise=require(_0xe31c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe31c('0x4'));var db=require(_0xe31c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe31c('0x6'));var config=require(_0xe31c('0x7'));var jayson=require(_0xe31c('0x8'));var client=jayson[_0xe31c('0x9')][_0xe31c('0xa')]({'port':0x232a});config[_0xe31c('0xb')]=_[_0xe31c('0xc')](config[_0xe31c('0xb')],{'host':_0xe31c('0xd'),'port':0x18eb});var socket=require(_0xe31c('0xe'))(new Redis(config[_0xe31c('0xb')]));require(_0xe31c('0xf'))[_0xe31c('0x10')](socket);function respondWithRpcPromise(_0x1c1375,_0x4de208,_0x3981cc){return new BPromise(function(_0x3e6dab,_0x59e90b){return client[_0xe31c('0x11')](_0x1c1375,_0x3981cc)[_0xe31c('0x12')](function(_0x532225){logger['info'](_0xe31c('0x13'),_0x4de208,'request\x20sent');logger[_0xe31c('0x14')](_0xe31c('0x15'),_0x4de208,'request\x20sent',JSON[_0xe31c('0x16')](_0x532225));if(_0x532225['error']){if(_0x532225[_0xe31c('0x17')][_0xe31c('0x18')]===0x1f4){logger[_0xe31c('0x17')](_0xe31c('0x13'),_0x4de208,_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);return _0x59e90b(_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);}logger['error'](_0xe31c('0x13'),_0x4de208,_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);return _0x3e6dab(_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);}else{logger[_0xe31c('0x1a')](_0xe31c('0x13'),_0x4de208,_0xe31c('0x1b'));_0x3e6dab(_0x532225['result'][_0xe31c('0x19')]);}})['catch'](function(_0x363a52){logger['error'](_0xe31c('0x13'),_0x4de208,_0x363a52);_0x59e90b(_0x363a52);});});}exports['GetUser']=function(_0x5b1e07){var _0x4f7127=this;return new Promise(function(_0x5e11f6,_0x59e367){return db[_0xe31c('0x1c')][_0xe31c('0x1d')]({'raw':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')][_0xe31c('0x1f')]===undefined?!![]:![]:!![],'where':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')][_0xe31c('0x20')]||null:null,'attributes':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')]['attributes']||null:null,'limit':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')]['limit']||null:null,'include':_0x5b1e07['options']?_0x5b1e07[_0xe31c('0x1e')][_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x5b1e07[_0xe31c('0x1e')]['include'],function(_0x3c7a66){return{'model':db[_0x3c7a66[_0xe31c('0x23')]],'as':_0x3c7a66['as'],'attributes':_0x3c7a66[_0xe31c('0x24')],'include':_0x3c7a66[_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x3c7a66[_0xe31c('0x21')],function(_0x606090){return{'model':db[_0x606090[_0xe31c('0x23')]],'as':_0x606090['as'],'attributes':_0x606090['attributes'],'include':_0x606090[_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x606090[_0xe31c('0x21')],function(_0x342c9e){return{'model':db[_0x342c9e[_0xe31c('0x23')]],'as':_0x342c9e['as'],'attributes':_0x342c9e[_0xe31c('0x24')]};}):[]};}):[]};}):[]:[]})[_0xe31c('0x12')](function(_0x545a2b){logger[_0xe31c('0x1a')](_0xe31c('0x25'),_0x5b1e07);logger['debug'](_0xe31c('0x25'),_0x5b1e07,JSON[_0xe31c('0x16')](_0x545a2b));_0x5e11f6(_0x545a2b);})[_0xe31c('0x26')](function(_0x42dbda){logger[_0xe31c('0x17')](_0xe31c('0x25'),_0x42dbda[_0xe31c('0x19')],_0x5b1e07);_0x59e367(_0x4f7127['error'](0x1f4,_0x42dbda['message']));});});};exports[_0xe31c('0x27')]=function(_0x4db768){var _0x88b443=this;return new Promise(function(_0x5e66b4,_0x4482c0){return db[_0xe31c('0x1c')][_0xe31c('0x28')]({'raw':_0x4db768[_0xe31c('0x1e')]?_0x4db768['options']['raw']===undefined?!![]:![]:!![],'where':_0x4db768[_0xe31c('0x1e')]?_0x4db768['options'][_0xe31c('0x20')]||null:null,'attributes':_0x4db768[_0xe31c('0x1e')]?_0x4db768['options'][_0xe31c('0x24')]||null:null,'include':_0x4db768[_0xe31c('0x1e')]?_0x4db768[_0xe31c('0x1e')][_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x4db768['options']['include'],function(_0x3e002b){return{'model':db[_0x3e002b['model']],'as':_0x3e002b['as'],'attributes':_0x3e002b[_0xe31c('0x24')],'include':_0x3e002b[_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x3e002b[_0xe31c('0x21')],function(_0x54f303){return{'model':db[_0x54f303[_0xe31c('0x23')]],'as':_0x54f303['as'],'attributes':_0x54f303[_0xe31c('0x24')],'include':_0x54f303[_0xe31c('0x21')]?_['map'](_0x54f303[_0xe31c('0x21')],function(_0x213c3b){return{'model':db[_0x213c3b['model']],'as':_0x213c3b['as'],'attributes':_0x213c3b[_0xe31c('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3879da){logger[_0xe31c('0x1a')](_0xe31c('0x27'),_0x4db768);logger[_0xe31c('0x14')]('ShowUser',_0x4db768,JSON[_0xe31c('0x16')](_0x3879da));_0x5e66b4(_0x3879da);})['catch'](function(_0x1b46b4){logger[_0xe31c('0x17')](_0xe31c('0x27'),_0x1b46b4[_0xe31c('0x19')],_0x4db768);_0x4482c0(_0x88b443['error'](0x1f4,_0x1b46b4['message']));});});};exports[_0xe31c('0x29')]=function(_0x5b44a9){var _0x126e86=this;return new Promise(function(_0x13a413,_0xb6f831){var _0x3841ab;return db[_0xe31c('0x1c')]['find']({'where':_0x5b44a9['options']['where']||{},'attributes':['id',_0xe31c('0x2a'),_0xe31c('0x2b'),_0xe31c('0x2c'),_0xe31c('0x2d')]})['then'](function(_0x4ebdfe){if(_0x4ebdfe){_0x3841ab=_0x4ebdfe;return db[_0xe31c('0x2e')]['update']({'paused':0x1},{'where':{'UserId':_0x3841ab['id']},'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x3841ab){return db[_0xe31c('0x2f')]['findAll']({'where':{'membername':_0x3841ab[_0xe31c('0x2a')],'type':_0xe31c('0x30'),'exitAt':null}});}})[_0xe31c('0x12')](function(_0xd97b82){if(_0x3841ab){if(_0xd97b82&&_0xd97b82[_0xe31c('0x31')]){var _0x6afbeb=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x379209=0x0,_0x5c842b=_0xd97b82[_0xe31c('0x31')];_0x379209<_0x5c842b;_0x379209++){_0xd97b82[_0x379209][_0xe31c('0x32')]({'exitAt':_0x6afbeb});}}}})[_0xe31c('0x12')](function(){if(_0x3841ab){var _0x54c279=[];var _0x1d6d2a=utils[_0xe31c('0x33')]();_0x1d6d2a['forEach'](function(_0x48189a){_0x54c279['push']({'channel':_0x48189a,'membername':_0x3841ab[_0xe31c('0x2a')],'interface':_[_0xe31c('0x34')](_0x3841ab['interface'])?util[_0xe31c('0x35')]('SIP/%s',_0x3841ab[_0xe31c('0x2a')]):_0x3841ab['interface'],'type':_0xe31c('0x30'),'enterAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'data1':_0x5b44a9['body'][_0xe31c('0x37')]||_0xe31c('0x38'),'role':_0x3841ab[_0xe31c('0x2b')],'internal':_0x3841ab['internal'],'uniqueid':_0x5b44a9['body'][_0xe31c('0x39')]||null});});return db['MemberReport'][_0xe31c('0x3a')](_0x54c279,{'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x3841ab){return _0x3841ab[_0xe31c('0x3b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x5b44a9[_0xe31c('0x3c')]['type']||_0xe31c('0x38'),'lastPauseAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0xb3947){_0x13a413(_0xb3947);})[_0xe31c('0x26')](function(_0x48538b){_0xb6f831(_0x126e86[_0xe31c('0x17')](0x1f4,_0x48538b[_0xe31c('0x19')]));});});};exports['UnpauseUser']=function(_0x21f3b9){var _0x5c71b4=this;return new Promise(function(_0x1109ae,_0x223ae2){var _0x2059b9;return db['User'][_0xe31c('0x3d')]({'where':_0x21f3b9[_0xe31c('0x1e')][_0xe31c('0x20')]||{},'attributes':['id',_0xe31c('0x2a')]})['then'](function(_0x2eac13){if(_0x2eac13){_0x2059b9=_0x2eac13;if(_0x21f3b9['body']['channel']&&!utils[_0xe31c('0x3e')](_0x21f3b9[_0xe31c('0x3c')]['channel'])){throw new Error('Unknown\x20channel');}switch(_0x21f3b9[_0xe31c('0x3c')]['channel']){case _0xe31c('0x3f'):return db[_0xe31c('0x2e')]['update']({'paused':0x0},{'where':{'UserId':_0x2059b9['id']}})[_0xe31c('0x12')](function(){return db[_0xe31c('0x2f')][_0xe31c('0x28')]({'where':{'channel':_0x21f3b9[_0xe31c('0x3c')]['channel'],'membername':_0x2059b9['name'],'type':_0xe31c('0x30'),'exitAt':null}});})[_0xe31c('0x12')](function(_0x538b3a){if(_0x538b3a){return _0x538b3a[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe31c('0x40')},{'individualHooks':!![]});}return null;})[_0xe31c('0x12')](function(){return _0x2059b9[_0xe31c('0x3b')]({'voicePause':![]});});case _0xe31c('0x41'):case _0xe31c('0x42'):case _0xe31c('0x43'):case _0xe31c('0x44'):case'openchannel':case'whatsapp':return db[_0xe31c('0x2f')][_0xe31c('0x28')]({'where':{'channel':_0x21f3b9[_0xe31c('0x3c')]['channel'],'membername':_0x2059b9[_0xe31c('0x2a')],'type':_0xe31c('0x30'),'exitAt':null}})[_0xe31c('0x12')](function(_0x2c7390){return _0x2c7390[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'data2':_0xe31c('0x40')},{'individualHooks':!![]});})[_0xe31c('0x12')](function(){var _0x380b81={};_[_0xe31c('0x45')](_0x380b81,util[_0xe31c('0x35')]('%s%s',_0x21f3b9[_0xe31c('0x3c')][_0xe31c('0x46')],_0xe31c('0x47')),![]);return _0x2059b9['update'](_0x380b81);});default:return db[_0xe31c('0x2e')][_0xe31c('0x3b')]({'paused':0x0},{'where':{'UserId':_0x2059b9['id']}})[_0xe31c('0x12')](function(){return db[_0xe31c('0x2f')][_0xe31c('0x1d')]({'where':{'membername':_0x2059b9['name'],'type':'PAUSE','exitAt':null}});})[_0xe31c('0x12')](function(_0x4f6b8e){var _0x106f52=[];_0x4f6b8e[_0xe31c('0x48')](function(_0x4b21b9){_0x106f52[_0xe31c('0x49')](_0x4b21b9[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'data2':_0xe31c('0x40')}));});return BPromise[_0xe31c('0x4a')](_0x106f52);})[_0xe31c('0x12')](function(){return _0x2059b9[_0xe31c('0x3b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xe31c('0x12')](function(_0x1a08f3){_0x1109ae(_0x1a08f3);})[_0xe31c('0x26')](function(_0x251010){_0x223ae2(_0x5c71b4[_0xe31c('0x17')](0x1f4,_0x251010[_0xe31c('0x19')]));});});};exports[_0xe31c('0x4b')]=function(_0x4ad321){var _0x6ef2f4=this;return new Promise(function(_0x48e90d,_0x5569d9){var _0x173855;return db[_0xe31c('0x1c')]['findOne']({'where':_0x4ad321[_0xe31c('0x1e')][_0xe31c('0x20')]||{},'attributes':['id',_0xe31c('0x2a')]})['then'](function(_0x2c5359){if(_0x2c5359){_0x173855=_0x2c5359;return db[_0xe31c('0x2e')][_0xe31c('0x4c')]({'where':{'membername':_0x173855[_0xe31c('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x173855){return db['MemberReport'][_0xe31c('0x1d')]({'where':{'membername':_0x173855[_0xe31c('0x2a')],'exitAt':null}});}})[_0xe31c('0x12')](function(_0x5609bb){if(_0x173855){if(_0x5609bb&&_0x5609bb[_0xe31c('0x31')]){var _0x17ddc1=[];_0x5609bb['forEach'](function(_0x492f84){_0x17ddc1[_0xe31c('0x49')](_0x492f84[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe31c('0x4a')](_0x17ddc1);}}})[_0xe31c('0x12')](function(){if(_0x173855){return _0x173855[_0xe31c('0x3b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xe31c('0x12')](function(_0x38e6cc){_0x48e90d(_0x38e6cc);})['catch'](function(_0x5b006a){_0x5569d9(_0x6ef2f4[_0xe31c('0x17')](0x1f4,_0x5b006a[_0xe31c('0x19')]));});});};exports['LoginUser']=function(_0x402af9){var _0x2343b0=this;return new Promise(function(_0x594acc,_0x2fd87b){var _0x238a48;var _0x1f7ac4;var _0x1d772c;var _0x475b46;return db[_0xe31c('0x1c')][_0xe31c('0x3d')]({'where':_0x402af9[_0xe31c('0x1e')][_0xe31c('0x20')]||{},'attributes':['id','name',_0xe31c('0x2b'),_0xe31c('0x4d'),_0xe31c('0x4e'),_0xe31c('0x2c'),_0xe31c('0x4f'),'interface']})[_0xe31c('0x12')](function(_0x2487af){if(_0x2487af){_0x238a48=_0x2487af;_0x475b46=_0x402af9['body'][_0xe31c('0x2d')]?_0x402af9[_0xe31c('0x3c')]['interface']:util['format'](_0xe31c('0x50'),_0x238a48['name']);return db[_0xe31c('0x1c')]['count']({'where':{'role':_0xe31c('0x51'),'online':!![],'id':{'$ne':_0x238a48['id']}}});}})['then'](function(_0x209b62){if(_0x209b62){_0x1d772c=_0x209b62;return require(_0xe31c('0x52'))[_0xe31c('0x53')]();}})[_0xe31c('0x12')](function(_0x2e52eb){if(_0x2e52eb&&_0x2e52eb['agents']&&_0x1d772c>=_0x2e52eb[_0xe31c('0x54')]){throw new Error(_0xe31c('0x55'));}})[_0xe31c('0x12')](function(){if(_0x238a48){return db[_0xe31c('0x2e')]['destroy']({'where':{'membername':_0x238a48[_0xe31c('0x2a')]},'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x238a48){return _0x238a48['getVoiceQueues']({'raw':!![]});}})[_0xe31c('0x12')](function(_0xad3eb6){if(_0x238a48){if(_0xad3eb6){var _0x29e3c=[];_0x1f7ac4=_0xad3eb6;if(_0x1f7ac4[_0xe31c('0x31')]){for(var _0x3dbb52=0x0;_0x3dbb52<_0x1f7ac4[_0xe31c('0x31')];_0x3dbb52++){_0x29e3c[_0xe31c('0x49')](db[_0xe31c('0x2e')][_0xe31c('0x56')]({'membername':_0x238a48[_0xe31c('0x2a')],'UserId':_0x238a48['id'],'queue_name':_0x1f7ac4[_0x3dbb52][_0xe31c('0x2a')],'VoiceQueueId':_0x1f7ac4[_0x3dbb52]['id'],'interface':_0x475b46,'paused':_0x238a48[_0xe31c('0x4f')]||![],'penalty':_0x1f7ac4[_0x3dbb52][_0xe31c('0x57')]||0x0}));}return BPromise['all'](_0x29e3c);}}}})[_0xe31c('0x12')](function(){if(_0x238a48){return db[_0xe31c('0x2f')]['findAll']({'where':{'membername':_0x238a48[_0xe31c('0x2a')],'exitAt':null}});}})[_0xe31c('0x12')](function(_0x33899e){if(_0x238a48){if(_0x33899e&&_0x33899e[_0xe31c('0x31')]){var _0x40b271=[];_0x33899e[_0xe31c('0x48')](function(_0x494930){_0x40b271[_0xe31c('0x49')](_0x494930[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x40b271);}}})[_0xe31c('0x12')](function(_0x59f1b7){if(_0x238a48){var _0x4bc795=[];var _0x16e55b=[];var _0x7ffdc7=utils[_0xe31c('0x33')]();var _0x45f3e2={'membername':_0x238a48[_0xe31c('0x2a')],'interface':_0x475b46,'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x238a48['role'],'internal':_0x238a48[_0xe31c('0x2c')]};_0x7ffdc7[_0xe31c('0x48')](function(_0x1e30ff){_0x4bc795[_0xe31c('0x49')](_[_0xe31c('0x58')]({'channel':_0x1e30ff,'type':_0xe31c('0x59'),'data1':'callysquare','data2':_0x475b46},_0x45f3e2));if(_0x238a48['loginInPause']){_0x16e55b[_0xe31c('0x49')](_[_0xe31c('0x58')]({'channel':_0x1e30ff,'type':_0xe31c('0x30'),'data1':_0xe31c('0x5a')},_0x45f3e2));}});return db[_0xe31c('0x2f')]['bulkCreate'](_0x4bc795['concat'](_0x16e55b),{'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x238a48){return _0x238a48[_0xe31c('0x3b')]({'online':!![],'lastLoginAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'voicePause':_0x238a48[_0xe31c('0x4f')]||![],'mailPause':_0x238a48[_0xe31c('0x4f')]||![],'chatPause':_0x238a48[_0xe31c('0x4f')]||![],'faxPause':_0x238a48['loginInPause']||![],'smsPause':_0x238a48[_0xe31c('0x4f')]||![],'openchannelPause':_0x238a48[_0xe31c('0x4f')]||![],'pauseType':_0x238a48[_0xe31c('0x4f')]?_0xe31c('0x5a'):null,'lastPauseAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'interface':_0x475b46});}})['then'](function(_0x597077){_0x594acc(_0x597077);})['catch'](function(_0x1564a5){_0x2fd87b(_0x2343b0[_0xe31c('0x17')](0x1f4,_0x1564a5[_0xe31c('0x19')]));});});};
\ No newline at end of file
+var _0x7c99=['Maximum\x20login\x20has\x20been\x20reached','destroy','upsert','UserVoiceQueue.penalty','getChannels','merge','LOGININPAUSE','concat','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./user.socket','then','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','User','findAll','options','where','attributes','limit','map','include','model','info','GetUser','raw','ShowUser','PauseUser','find','name','role','internal','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','isNil','interface','SIP/%s','body','type','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','findOne','channel','Unknown\x20channel','voice','system','mail','fax','sms','set','%s%s','LogoutUser','all','LoginUser','loginInPause','count','agent','../../config/license/util','getLicense','agents'];(function(_0x426706,_0x45f8ba){var _0x97795=function(_0xe650d3){while(--_0xe650d3){_0x426706['push'](_0x426706['shift']());}};_0x97795(++_0x45f8ba);}(_0x7c99,0x164));var _0x97c9=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x7c99[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0x97c9('0x0'));var moment=require(_0x97c9('0x1'));var BPromise=require(_0x97c9('0x2'));var rs=require(_0x97c9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x97c9('0x4'));var logger=require(_0x97c9('0x5'))(_0x97c9('0x6'));var config=require('../../config/environment');var jayson=require(_0x97c9('0x7'));var client=jayson['client'][_0x97c9('0x8')]({'port':0x232a});config[_0x97c9('0x9')]=_[_0x97c9('0xa')](config[_0x97c9('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x97c9('0xb'))(new Redis(config[_0x97c9('0x9')]));require(_0x97c9('0xc'))['register'](socket);function respondWithRpcPromise(_0x402282,_0x5a7ac4,_0x13bc5c){return new BPromise(function(_0x470cda,_0x2134fd){return client['request'](_0x402282,_0x13bc5c)[_0x97c9('0xd')](function(_0x15033b){logger['info'](_0x97c9('0xe'),_0x5a7ac4,'request\x20sent');logger[_0x97c9('0xf')](_0x97c9('0x10'),_0x5a7ac4,_0x97c9('0x11'),JSON[_0x97c9('0x12')](_0x15033b));if(_0x15033b[_0x97c9('0x13')]){if(_0x15033b['error'][_0x97c9('0x14')]===0x1f4){logger[_0x97c9('0x13')](_0x97c9('0xe'),_0x5a7ac4,_0x15033b[_0x97c9('0x13')][_0x97c9('0x15')]);return _0x2134fd(_0x15033b[_0x97c9('0x13')]['message']);}logger[_0x97c9('0x13')](_0x97c9('0xe'),_0x5a7ac4,_0x15033b['error']['message']);return _0x470cda(_0x15033b[_0x97c9('0x13')][_0x97c9('0x15')]);}else{logger['info'](_0x97c9('0xe'),_0x5a7ac4,_0x97c9('0x11'));_0x470cda(_0x15033b['result']['message']);}})[_0x97c9('0x16')](function(_0x32c524){logger[_0x97c9('0x13')]('User,\x20%s,\x20%s',_0x5a7ac4,_0x32c524);_0x2134fd(_0x32c524);});});}exports['GetUser']=function(_0x1086a9){var _0x57e6ac=this;return new Promise(function(_0x2b3c28,_0x31e051){return db[_0x97c9('0x17')][_0x97c9('0x18')]({'raw':_0x1086a9['options']?_0x1086a9[_0x97c9('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1086a9[_0x97c9('0x19')]?_0x1086a9[_0x97c9('0x19')][_0x97c9('0x1a')]||null:null,'attributes':_0x1086a9[_0x97c9('0x19')]?_0x1086a9[_0x97c9('0x19')][_0x97c9('0x1b')]||null:null,'limit':_0x1086a9[_0x97c9('0x19')]?_0x1086a9['options'][_0x97c9('0x1c')]||null:null,'include':_0x1086a9[_0x97c9('0x19')]?_0x1086a9[_0x97c9('0x19')]['include']?_[_0x97c9('0x1d')](_0x1086a9['options'][_0x97c9('0x1e')],function(_0x123846){return{'model':db[_0x123846[_0x97c9('0x1f')]],'as':_0x123846['as'],'attributes':_0x123846[_0x97c9('0x1b')],'include':_0x123846[_0x97c9('0x1e')]?_[_0x97c9('0x1d')](_0x123846[_0x97c9('0x1e')],function(_0x1a0941){return{'model':db[_0x1a0941[_0x97c9('0x1f')]],'as':_0x1a0941['as'],'attributes':_0x1a0941[_0x97c9('0x1b')],'include':_0x1a0941[_0x97c9('0x1e')]?_[_0x97c9('0x1d')](_0x1a0941[_0x97c9('0x1e')],function(_0x166d71){return{'model':db[_0x166d71[_0x97c9('0x1f')]],'as':_0x166d71['as'],'attributes':_0x166d71[_0x97c9('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x97c9('0xd')](function(_0x3ac54f){logger[_0x97c9('0x20')](_0x97c9('0x21'),_0x1086a9);logger['debug'](_0x97c9('0x21'),_0x1086a9,JSON[_0x97c9('0x12')](_0x3ac54f));_0x2b3c28(_0x3ac54f);})[_0x97c9('0x16')](function(_0x3192e){logger[_0x97c9('0x13')](_0x97c9('0x21'),_0x3192e[_0x97c9('0x15')],_0x1086a9);_0x31e051(_0x57e6ac[_0x97c9('0x13')](0x1f4,_0x3192e[_0x97c9('0x15')]));});});};exports['ShowUser']=function(_0x4239c4){var _0x23e023=this;return new Promise(function(_0x5d073f,_0x275e44){return db[_0x97c9('0x17')]['find']({'raw':_0x4239c4[_0x97c9('0x19')]?_0x4239c4[_0x97c9('0x19')][_0x97c9('0x22')]===undefined?!![]:![]:!![],'where':_0x4239c4[_0x97c9('0x19')]?_0x4239c4[_0x97c9('0x19')][_0x97c9('0x1a')]||null:null,'attributes':_0x4239c4[_0x97c9('0x19')]?_0x4239c4[_0x97c9('0x19')][_0x97c9('0x1b')]||null:null,'include':_0x4239c4['options']?_0x4239c4[_0x97c9('0x19')]['include']?_[_0x97c9('0x1d')](_0x4239c4['options']['include'],function(_0x3dbc26){return{'model':db[_0x3dbc26[_0x97c9('0x1f')]],'as':_0x3dbc26['as'],'attributes':_0x3dbc26['attributes'],'include':_0x3dbc26[_0x97c9('0x1e')]?_[_0x97c9('0x1d')](_0x3dbc26['include'],function(_0x34c7ea){return{'model':db[_0x34c7ea['model']],'as':_0x34c7ea['as'],'attributes':_0x34c7ea[_0x97c9('0x1b')],'include':_0x34c7ea[_0x97c9('0x1e')]?_[_0x97c9('0x1d')](_0x34c7ea[_0x97c9('0x1e')],function(_0x54b0ef){return{'model':db[_0x54b0ef['model']],'as':_0x54b0ef['as'],'attributes':_0x54b0ef[_0x97c9('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x97c9('0xd')](function(_0x2570a7){logger['info'](_0x97c9('0x23'),_0x4239c4);logger[_0x97c9('0xf')](_0x97c9('0x23'),_0x4239c4,JSON[_0x97c9('0x12')](_0x2570a7));_0x5d073f(_0x2570a7);})[_0x97c9('0x16')](function(_0x4c43ed){logger['error'](_0x97c9('0x23'),_0x4c43ed['message'],_0x4239c4);_0x275e44(_0x23e023[_0x97c9('0x13')](0x1f4,_0x4c43ed[_0x97c9('0x15')]));});});};exports[_0x97c9('0x24')]=function(_0x15a019){var _0x41ddab=this;return new Promise(function(_0x898e9f,_0x5e9005){var _0xd25682;return db[_0x97c9('0x17')][_0x97c9('0x25')]({'where':_0x15a019[_0x97c9('0x19')][_0x97c9('0x1a')]||{},'attributes':['id',_0x97c9('0x26'),_0x97c9('0x27'),_0x97c9('0x28'),'interface']})[_0x97c9('0xd')](function(_0x352f50){if(_0x352f50){_0xd25682=_0x352f50;return db[_0x97c9('0x29')][_0x97c9('0x2a')]({'paused':0x1},{'where':{'UserId':_0xd25682['id']},'individualHooks':!![]});}})[_0x97c9('0xd')](function(){if(_0xd25682){return db[_0x97c9('0x2b')][_0x97c9('0x18')]({'where':{'membername':_0xd25682['name'],'type':_0x97c9('0x2c'),'exitAt':null}});}})[_0x97c9('0xd')](function(_0x1e2f86){if(_0xd25682){if(_0x1e2f86&&_0x1e2f86[_0x97c9('0x2d')]){var _0x203d70=moment()[_0x97c9('0x2e')](_0x97c9('0x2f'));for(var _0x31d0b9=0x0,_0x1398a8=_0x1e2f86[_0x97c9('0x2d')];_0x31d0b9<_0x1398a8;_0x31d0b9++){_0x1e2f86[_0x31d0b9][_0x97c9('0x30')]({'exitAt':_0x203d70});}}}})[_0x97c9('0xd')](function(){if(_0xd25682){var _0x3bb45e=[];var _0xe22924=utils['getChannels']();_0xe22924[_0x97c9('0x31')](function(_0x5ff1bb){_0x3bb45e[_0x97c9('0x32')]({'channel':_0x5ff1bb,'membername':_0xd25682[_0x97c9('0x26')],'interface':_[_0x97c9('0x33')](_0xd25682[_0x97c9('0x34')])?util[_0x97c9('0x2e')](_0x97c9('0x35'),_0xd25682['name']):_0xd25682[_0x97c9('0x34')],'type':_0x97c9('0x2c'),'enterAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f')),'data1':_0x15a019[_0x97c9('0x36')][_0x97c9('0x37')]||'DEFAULT\x20PAUSE','role':_0xd25682['role'],'internal':_0xd25682[_0x97c9('0x28')],'uniqueid':_0x15a019[_0x97c9('0x36')][_0x97c9('0x38')]||null});});return db[_0x97c9('0x2b')][_0x97c9('0x39')](_0x3bb45e,{'individualHooks':!![]});}})['then'](function(){if(_0xd25682){return _0xd25682['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x15a019['body'][_0x97c9('0x37')]||_0x97c9('0x3a'),'lastPauseAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f'))});}})[_0x97c9('0xd')](function(_0x53dee3){_0x898e9f(_0x53dee3);})[_0x97c9('0x16')](function(_0x3f3fd1){_0x5e9005(_0x41ddab[_0x97c9('0x13')](0x1f4,_0x3f3fd1[_0x97c9('0x15')]));});});};exports[_0x97c9('0x3b')]=function(_0x2963e6){var _0x4d4d99=this;return new Promise(function(_0x4b5902,_0x5c14a2){var _0x46d347;return db['User'][_0x97c9('0x3c')]({'where':_0x2963e6[_0x97c9('0x19')][_0x97c9('0x1a')]||{},'attributes':['id',_0x97c9('0x26')]})[_0x97c9('0xd')](function(_0xa4b5a0){if(_0xa4b5a0){_0x46d347=_0xa4b5a0;if(_0x2963e6[_0x97c9('0x36')][_0x97c9('0x3d')]&&!utils['isValidChannel'](_0x2963e6[_0x97c9('0x36')]['channel'])){throw new Error(_0x97c9('0x3e'));}switch(_0x2963e6[_0x97c9('0x36')]['channel']){case _0x97c9('0x3f'):return db['UserVoiceQueueRt'][_0x97c9('0x2a')]({'paused':0x0},{'where':{'UserId':_0x46d347['id']}})[_0x97c9('0xd')](function(){return db[_0x97c9('0x2b')][_0x97c9('0x25')]({'where':{'channel':_0x2963e6[_0x97c9('0x36')][_0x97c9('0x3d')],'membername':_0x46d347[_0x97c9('0x26')],'type':_0x97c9('0x2c'),'exitAt':null}});})['then'](function(_0x587b6c){if(_0x587b6c){return _0x587b6c[_0x97c9('0x2a')]({'exitAt':moment()['format'](_0x97c9('0x2f')),'data2':_0x97c9('0x40')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x46d347[_0x97c9('0x2a')]({'voicePause':![]});});case _0x97c9('0x41'):case'chat':case _0x97c9('0x42'):case _0x97c9('0x43'):case'openchannel':case'whatsapp':return db['MemberReport'][_0x97c9('0x25')]({'where':{'channel':_0x2963e6[_0x97c9('0x36')][_0x97c9('0x3d')],'membername':_0x46d347[_0x97c9('0x26')],'type':_0x97c9('0x2c'),'exitAt':null}})[_0x97c9('0xd')](function(_0xcadc27){return _0xcadc27[_0x97c9('0x2a')]({'exitAt':moment()[_0x97c9('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x97c9('0x40')},{'individualHooks':!![]});})['then'](function(){var _0x556c47={};_[_0x97c9('0x44')](_0x556c47,util[_0x97c9('0x2e')](_0x97c9('0x45'),_0x2963e6[_0x97c9('0x36')][_0x97c9('0x3d')],'Pause'),![]);return _0x46d347['update'](_0x556c47);});default:return db[_0x97c9('0x29')][_0x97c9('0x2a')]({'paused':0x0},{'where':{'UserId':_0x46d347['id']}})[_0x97c9('0xd')](function(){return db[_0x97c9('0x2b')][_0x97c9('0x18')]({'where':{'membername':_0x46d347['name'],'type':_0x97c9('0x2c'),'exitAt':null}});})[_0x97c9('0xd')](function(_0x3854f0){var _0x2d6eb1=[];_0x3854f0['forEach'](function(_0x50caa6){_0x2d6eb1[_0x97c9('0x32')](_0x50caa6[_0x97c9('0x2a')]({'exitAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f')),'data2':'system'}));});return BPromise['all'](_0x2d6eb1);})[_0x97c9('0xd')](function(){return _0x46d347[_0x97c9('0x2a')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x5a8153){_0x4b5902(_0x5a8153);})[_0x97c9('0x16')](function(_0x198119){_0x5c14a2(_0x4d4d99['error'](0x1f4,_0x198119['message']));});});};exports[_0x97c9('0x46')]=function(_0x31d2bd){var _0x229acf=this;return new Promise(function(_0x18a485,_0x4040cb){var _0x357e91;return db[_0x97c9('0x17')]['findOne']({'where':_0x31d2bd['options'][_0x97c9('0x1a')]||{},'attributes':['id',_0x97c9('0x26')]})['then'](function(_0x57cc78){if(_0x57cc78){_0x357e91=_0x57cc78;return db[_0x97c9('0x29')]['destroy']({'where':{'membername':_0x357e91[_0x97c9('0x26')]},'individualHooks':!![]});}})[_0x97c9('0xd')](function(){if(_0x357e91){return db[_0x97c9('0x2b')][_0x97c9('0x18')]({'where':{'membername':_0x357e91['name'],'exitAt':null}});}})[_0x97c9('0xd')](function(_0x2688ad){if(_0x357e91){if(_0x2688ad&&_0x2688ad[_0x97c9('0x2d')]){var _0x129562=[];_0x2688ad[_0x97c9('0x31')](function(_0x22c88d){_0x129562['push'](_0x22c88d[_0x97c9('0x2a')]({'exitAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f'))}));});return BPromise[_0x97c9('0x47')](_0x129562);}}})[_0x97c9('0xd')](function(){if(_0x357e91){return _0x357e91[_0x97c9('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x97c9('0xd')](function(_0x1ee6ee){_0x18a485(_0x1ee6ee);})[_0x97c9('0x16')](function(_0x471372){_0x4040cb(_0x229acf[_0x97c9('0x13')](0x1f4,_0x471372[_0x97c9('0x15')]));});});};exports[_0x97c9('0x48')]=function(_0x41c27f){var _0x10be7e=this;return new Promise(function(_0x5e20a2,_0x3d0209){var _0x29b9dc;var _0x1067f0;var _0x4d5626;var _0x491dba;return db[_0x97c9('0x17')][_0x97c9('0x3c')]({'where':_0x41c27f[_0x97c9('0x19')][_0x97c9('0x1a')]||{},'attributes':['id',_0x97c9('0x26'),_0x97c9('0x27'),'mobile','phone','internal',_0x97c9('0x49'),'interface']})['then'](function(_0x10e780){if(_0x10e780){_0x29b9dc=_0x10e780;_0x491dba=_0x41c27f[_0x97c9('0x36')][_0x97c9('0x34')]?_0x41c27f[_0x97c9('0x36')][_0x97c9('0x34')]:util[_0x97c9('0x2e')]('SIP/%s',_0x29b9dc[_0x97c9('0x26')]);return db[_0x97c9('0x17')][_0x97c9('0x4a')]({'where':{'role':_0x97c9('0x4b'),'online':!![],'id':{'$ne':_0x29b9dc['id']}}});}})['then'](function(_0x150a05){if(_0x150a05){_0x4d5626=_0x150a05;return require(_0x97c9('0x4c'))[_0x97c9('0x4d')]();}})['then'](function(_0x5b0799){if(_0x5b0799&&_0x5b0799[_0x97c9('0x4e')]&&_0x4d5626>=_0x5b0799[_0x97c9('0x4e')]){throw new Error(_0x97c9('0x4f'));}})[_0x97c9('0xd')](function(){if(_0x29b9dc){return db[_0x97c9('0x29')][_0x97c9('0x50')]({'where':{'membername':_0x29b9dc['name']},'individualHooks':!![]});}})['then'](function(){if(_0x29b9dc){return _0x29b9dc['getVoiceQueues']({'raw':!![]});}})[_0x97c9('0xd')](function(_0x333922){if(_0x29b9dc){if(_0x333922){var _0x330ab9=[];_0x1067f0=_0x333922;if(_0x1067f0['length']){for(var _0xdeadd9=0x0;_0xdeadd9<_0x1067f0[_0x97c9('0x2d')];_0xdeadd9++){_0x330ab9['push'](db[_0x97c9('0x29')][_0x97c9('0x51')]({'membername':_0x29b9dc['name'],'UserId':_0x29b9dc['id'],'queue_name':_0x1067f0[_0xdeadd9][_0x97c9('0x26')],'VoiceQueueId':_0x1067f0[_0xdeadd9]['id'],'interface':_0x491dba,'paused':_0x29b9dc['loginInPause']||![],'penalty':_0x1067f0[_0xdeadd9][_0x97c9('0x52')]||0x0}));}return BPromise[_0x97c9('0x47')](_0x330ab9);}}}})[_0x97c9('0xd')](function(){if(_0x29b9dc){return db[_0x97c9('0x2b')][_0x97c9('0x18')]({'where':{'membername':_0x29b9dc['name'],'exitAt':null}});}})[_0x97c9('0xd')](function(_0x2a72dd){if(_0x29b9dc){if(_0x2a72dd&&_0x2a72dd[_0x97c9('0x2d')]){var _0x397f0e=[];_0x2a72dd[_0x97c9('0x31')](function(_0x1cceb6){_0x397f0e[_0x97c9('0x32')](_0x1cceb6[_0x97c9('0x2a')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x97c9('0x47')](_0x397f0e);}}})[_0x97c9('0xd')](function(_0x256091){if(_0x29b9dc){var _0x26ab43=[];var _0x23febc=[];var _0x56520f=utils[_0x97c9('0x53')]();var _0x397fdd={'membername':_0x29b9dc[_0x97c9('0x26')],'interface':_0x491dba,'enterAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f')),'role':_0x29b9dc[_0x97c9('0x27')],'internal':_0x29b9dc[_0x97c9('0x28')]};_0x56520f['forEach'](function(_0x3554bf){_0x26ab43['push'](_[_0x97c9('0x54')]({'channel':_0x3554bf,'type':'LOGIN','data1':'callysquare','data2':_0x491dba},_0x397fdd));if(_0x29b9dc['loginInPause']){_0x23febc[_0x97c9('0x32')](_[_0x97c9('0x54')]({'channel':_0x3554bf,'type':_0x97c9('0x2c'),'data1':_0x97c9('0x55')},_0x397fdd));}});return db[_0x97c9('0x2b')][_0x97c9('0x39')](_0x26ab43[_0x97c9('0x56')](_0x23febc),{'individualHooks':!![]});}})[_0x97c9('0xd')](function(){if(_0x29b9dc){return _0x29b9dc[_0x97c9('0x2a')]({'online':!![],'lastLoginAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f')),'voicePause':_0x29b9dc['loginInPause']||![],'mailPause':_0x29b9dc['loginInPause']||![],'chatPause':_0x29b9dc[_0x97c9('0x49')]||![],'faxPause':_0x29b9dc[_0x97c9('0x49')]||![],'smsPause':_0x29b9dc['loginInPause']||![],'openchannelPause':_0x29b9dc[_0x97c9('0x49')]||![],'pauseType':_0x29b9dc['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x97c9('0x2e')](_0x97c9('0x2f')),'interface':_0x491dba});}})[_0x97c9('0xd')](function(_0x398c99){_0x5e20a2(_0x398c99);})['catch'](function(_0x5a6e8a){_0x3d0209(_0x10be7e[_0x97c9('0x13')](0x1f4,_0x5a6e8a[_0x97c9('0x15')]));});});};
\ No newline at end of file
index e59bb27..df90e55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4fe=['length','./user.events','update','register'];(function(_0x4d29eb,_0x5ba766){var _0x53cadb=function(_0x121326){while(--_0x121326){_0x4d29eb['push'](_0x4d29eb['shift']());}};_0x53cadb(++_0x5ba766);}(_0xb4fe,0x1ad));var _0xeb4f=function(_0x2119fd,_0x5f1163){_0x2119fd=_0x2119fd-0x0;var _0x1e38cc=_0xb4fe[_0x2119fd];return _0x1e38cc;};'use strict';var UserEvents=require(_0xeb4f('0x0'));var events=['save','remove',_0xeb4f('0x1')];function createListener(_0x3a7e8e,_0x782079){return function(_0x2d0be6){_0x782079['emit'](_0x3a7e8e,_0x2d0be6);};}function removeListener(_0x4d96b6,_0x1d6972){return function(){UserEvents['removeListener'](_0x4d96b6,_0x1d6972);};}exports[_0xeb4f('0x2')]=function(_0x4026a3){for(var _0x386761=0x0,_0x347cb3=events[_0xeb4f('0x3')];_0x386761<_0x347cb3;_0x386761++){var _0x220a10=events[_0x386761];var _0x9406f2=createListener('user:'+_0x220a10,_0x4026a3);UserEvents['on'](_0x220a10,_0x9406f2);}};
\ No newline at end of file
+var _0xc34a=['./user.events','save','remove','update','emit'];(function(_0x92ad86,_0x3c09c3){var _0x188fbb=function(_0x3af3fe){while(--_0x3af3fe){_0x92ad86['push'](_0x92ad86['shift']());}};_0x188fbb(++_0x3c09c3);}(_0xc34a,0x1cc));var _0xac34=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc34a[_0x321bb2];return _0x9c12ed;};'use strict';var UserEvents=require(_0xac34('0x0'));var events=[_0xac34('0x1'),_0xac34('0x2'),_0xac34('0x3')];function createListener(_0x438dda,_0x40376f){return function(_0x5046e3){_0x40376f[_0xac34('0x4')](_0x438dda,_0x5046e3);};}function removeListener(_0x11ff3c,_0x1930eb){return function(){UserEvents['removeListener'](_0x11ff3c,_0x1930eb);};}exports['register']=function(_0xcacce7){for(var _0x56330a=0x0,_0xa2f0b9=events['length'];_0x56330a<_0xa2f0b9;_0x56330a++){var _0x4d21fd=events[_0x56330a];var _0x495cd4=createListener('user:'+_0x4d21fd,_0xcacce7);UserEvents['on'](_0x4d21fd,_0x495cd4);}};
\ No newline at end of file
index b78f3da..2ef7e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x22bcc8,_0x3b9436){var _0x271e88=function(_0x2a31a5){while(--_0x2a31a5){_0x22bcc8['push'](_0x22bcc8['shift']());}};_0x271e88(++_0x3b9436);}(_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
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x48fc74,_0x14e91f){var _0x536aaf=function(_0x71c325){while(--_0x71c325){_0x48fc74['push'](_0x48fc74['shift']());}};_0x536aaf(++_0x14e91f);}(_0xedd9,0xfc));var _0x9edd=function(_0x1bec21,_0x1c0ba6){_0x1bec21=_0x1bec21-0x0;var _0x1ff185=_0xedd9[_0x1bec21];return _0x1ff185;};'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 2ec9b20..00aca2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x909d=['exports','INTEGER','sequelize'];(function(_0x409251,_0x40f525){var _0x216f47=function(_0x517895){while(--_0x517895){_0x409251['push'](_0x409251['shift']());}};_0x216f47(++_0x40f525);}(_0x909d,0x7a));var _0xd909=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x909d[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0xd909('0x0'));module[_0xd909('0x1')]={'penalty':{'type':Sequelize[_0xd909('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6764=['exports','INTEGER'];(function(_0x23f8c8,_0xb536b9){var _0x3dc718=function(_0x25d719){while(--_0x25d719){_0x23f8c8['push'](_0x23f8c8['shift']());}};_0x3dc718(++_0xb536b9);}(_0x6764,0xbe));var _0x4676=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x6764[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module[_0x4676('0x0')]={'penalty':{'type':Sequelize[_0x4676('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 0a62145..e64658c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5bd=['./userChatQueue.attributes','exports','UserChatQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x11dc18,_0x5c0613){var _0x1f353c=function(_0x66b86b){while(--_0x66b86b){_0x11dc18['push'](_0x11dc18['shift']());}};_0x1f353c(++_0x5c0613);}(_0xe5bd,0x121));var _0xde5b=function(_0x9e3d41,_0x2d1994){_0x9e3d41=_0x9e3d41-0x0;var _0x4ba34f=_0xe5bd[_0x9e3d41];return _0x4ba34f;};'use strict';var _=require(_0xde5b('0x0'));var util=require(_0xde5b('0x1'));var logger=require(_0xde5b('0x2'))(_0xde5b('0x3'));var moment=require(_0xde5b('0x4'));var BPromise=require(_0xde5b('0x5'));var rp=require(_0xde5b('0x6'));var fs=require('fs');var path=require(_0xde5b('0x7'));var rimraf=require(_0xde5b('0x8'));var config=require(_0xde5b('0x9'));var attributes=require(_0xde5b('0xa'));module[_0xde5b('0xb')]=function(_0x4cd3d7,_0x312b0e){return _0x4cd3d7['define'](_0xde5b('0xc'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd01f=['exports','user_has_chat_queues','lodash','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes'];(function(_0x56aba7,_0x59ce3b){var _0x2d2ebd=function(_0x4741b4){while(--_0x4741b4){_0x56aba7['push'](_0x56aba7['shift']());}};_0x2d2ebd(++_0x59ce3b);}(_0xd01f,0x1d8));var _0xfd01=function(_0x7c2035,_0x13334){_0x7c2035=_0x7c2035-0x0;var _0x50f5c1=_0xd01f[_0x7c2035];return _0x50f5c1;};'use strict';var _=require(_0xfd01('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfd01('0x1'));var BPromise=require(_0xfd01('0x2'));var rp=require(_0xfd01('0x3'));var fs=require('fs');var path=require(_0xfd01('0x4'));var rimraf=require(_0xfd01('0x5'));var config=require(_0xfd01('0x6'));var attributes=require(_0xfd01('0x7'));module[_0xfd01('0x8')]=function(_0x485e6f,_0x4fa005){return _0x485e6f['define']('UserChatQueue',attributes,{'tableName':_0xfd01('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e96fc7d..292b296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc796=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x11c032,_0x4ca503){var _0x55919f=function(_0x97e42c){while(--_0x97e42c){_0x11c032['push'](_0x11c032['shift']());}};_0x55919f(++_0x4ca503);}(_0xc796,0x73));var _0x6c79=function(_0x5e8d3e,_0x18ed2e){_0x5e8d3e=_0x5e8d3e-0x0;var _0x1348c0=_0xc796[_0x5e8d3e];return _0x1348c0;};'use strict';var _=require('lodash');var util=require(_0x6c79('0x0'));var moment=require(_0x6c79('0x1'));var BPromise=require(_0x6c79('0x2'));var rs=require(_0x6c79('0x3'));var fs=require('fs');var Redis=require(_0x6c79('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6c79('0x5'));var logger=require(_0x6c79('0x6'))('rpc');var config=require(_0x6c79('0x7'));var jayson=require(_0x6c79('0x8'));var client=jayson['client'][_0x6c79('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f3cd3,_0x528238,_0x52d8d4){return new BPromise(function(_0x485138,_0x5af1fc){return client[_0x6c79('0xa')](_0x1f3cd3,_0x52d8d4)[_0x6c79('0xb')](function(_0x24284d){logger['info'](_0x6c79('0xc'),_0x528238,_0x6c79('0xd'));logger[_0x6c79('0xe')](_0x6c79('0xf'),_0x528238,_0x6c79('0xd'),JSON[_0x6c79('0x10')](_0x24284d));if(_0x24284d['error']){if(_0x24284d[_0x6c79('0x11')][_0x6c79('0x12')]===0x1f4){logger[_0x6c79('0x11')](_0x6c79('0xc'),_0x528238,_0x24284d[_0x6c79('0x11')]['message']);return _0x5af1fc(_0x24284d[_0x6c79('0x11')]['message']);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x528238,_0x24284d[_0x6c79('0x11')][_0x6c79('0x13')]);return _0x485138(_0x24284d[_0x6c79('0x11')][_0x6c79('0x13')]);}else{logger[_0x6c79('0x14')](_0x6c79('0xc'),_0x528238,_0x6c79('0xd'));_0x485138(_0x24284d[_0x6c79('0x15')][_0x6c79('0x13')]);}})[_0x6c79('0x16')](function(_0x5a8916){logger[_0x6c79('0x11')](_0x6c79('0xc'),_0x528238,_0x5a8916);_0x5af1fc(_0x5a8916);});});}
\ No newline at end of file
+var _0x7acf=['lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch'];(function(_0x29d6eb,_0x42a1c7){var _0x1e56f0=function(_0x160c54){while(--_0x160c54){_0x29d6eb['push'](_0x29d6eb['shift']());}};_0x1e56f0(++_0x42a1c7);}(_0x7acf,0xa1));var _0xf7ac=function(_0x3bec60,_0x3f4625){_0x3bec60=_0x3bec60-0x0;var _0x1babee=_0x7acf[_0x3bec60];return _0x1babee;};'use strict';var _=require(_0xf7ac('0x0'));var util=require(_0xf7ac('0x1'));var moment=require('moment');var BPromise=require(_0xf7ac('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf7ac('0x3'));var db=require(_0xf7ac('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf7ac('0x5'))(_0xf7ac('0x6'));var config=require(_0xf7ac('0x7'));var jayson=require(_0xf7ac('0x8'));var client=jayson[_0xf7ac('0x9')][_0xf7ac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e8b29,_0x1d88a1,_0x4dc1f1){return new BPromise(function(_0x29ba23,_0xf45013){return client[_0xf7ac('0xb')](_0x3e8b29,_0x4dc1f1)[_0xf7ac('0xc')](function(_0x1b9ea9){logger['info'](_0xf7ac('0xd'),_0x1d88a1,_0xf7ac('0xe'));logger[_0xf7ac('0xf')](_0xf7ac('0x10'),_0x1d88a1,_0xf7ac('0xe'),JSON[_0xf7ac('0x11')](_0x1b9ea9));if(_0x1b9ea9[_0xf7ac('0x12')]){if(_0x1b9ea9[_0xf7ac('0x12')][_0xf7ac('0x13')]===0x1f4){logger[_0xf7ac('0x12')](_0xf7ac('0xd'),_0x1d88a1,_0x1b9ea9['error'][_0xf7ac('0x14')]);return _0xf45013(_0x1b9ea9[_0xf7ac('0x12')][_0xf7ac('0x14')]);}logger[_0xf7ac('0x12')](_0xf7ac('0xd'),_0x1d88a1,_0x1b9ea9['error'][_0xf7ac('0x14')]);return _0x29ba23(_0x1b9ea9[_0xf7ac('0x12')][_0xf7ac('0x14')]);}else{logger[_0xf7ac('0x15')]('UserChatQueue,\x20%s,\x20%s',_0x1d88a1,_0xf7ac('0xe'));_0x29ba23(_0x1b9ea9['result'][_0xf7ac('0x14')]);}})[_0xf7ac('0x16')](function(_0x502e01){logger[_0xf7ac('0x12')]('UserChatQueue,\x20%s,\x20%s',_0x1d88a1,_0x502e01);_0xf45013(_0x502e01);});});}
\ No newline at end of file
index e3dd5ba..f59115e 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(_0x1d0264,_0xad952a){var _0x2d9b32=function(_0x3e1369){while(--_0x3e1369){_0x1d0264['push'](_0x1d0264['shift']());}};_0x2d9b32(++_0xad952a);}(_0xe706,0xa3));var _0x6e70=function(_0xfe08ac,_0x5a238c){_0xfe08ac=_0xfe08ac-0x0;var _0xd6e9b3=_0xe706[_0xfe08ac];return _0xd6e9b3;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x4958db,_0x2ceb28){var _0x493e8d=function(_0x28077f){while(--_0x28077f){_0x4958db['push'](_0x4958db['shift']());}};_0x493e8d(++_0x2ceb28);}(_0xe706,0xa3));var _0x6e70=function(_0x13b70c,_0x40be1c){_0x13b70c=_0x13b70c-0x0;var _0x2d0edd=_0xe706[_0x13b70c];return _0x2d0edd;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index ed0450d..320c5be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x233e=['STRING','sequelize','exports','INTEGER'];(function(_0x43a84a,_0x6c500e){var _0x2ed43a=function(_0x8f88c3){while(--_0x8f88c3){_0x43a84a['push'](_0x43a84a['shift']());}};_0x2ed43a(++_0x6c500e);}(_0x233e,0x81));var _0xe233=function(_0x3b40dc,_0x415c22){_0x3b40dc=_0x3b40dc-0x0;var _0x40d2fb=_0x233e[_0x3b40dc];return _0x40d2fb;};'use strict';var Sequelize=require(_0xe233('0x0'));module[_0xe233('0x1')]={'penalty':{'type':Sequelize[_0xe233('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xe233('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xe233('0x3')]}};
\ No newline at end of file
+var _0x2db3=['sequelize','exports','INTEGER','STRING'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x2db3,0x90));var _0x32db=function(_0x2e2681,_0x4089c1){_0x2e2681=_0x2e2681-0x0;var _0x368a64=_0x2db3[_0x2e2681];return _0x368a64;};'use strict';var Sequelize=require(_0x32db('0x0'));module[_0x32db('0x1')]={'penalty':{'type':Sequelize[_0x32db('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x32db('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x32db('0x3')]}};
\ No newline at end of file
index 47a0658..52074b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa2=['define','UserFaxQueue','user_has_fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','exports'];(function(_0x39ec06,_0xa5e032){var _0x43c12f=function(_0x31fcfc){while(--_0x31fcfc){_0x39ec06['push'](_0x39ec06['shift']());}};_0x43c12f(++_0xa5e032);}(_0xbfa2,0x13b));var _0x2bfa=function(_0x465c04,_0x547823){_0x465c04=_0x465c04-0x0;var _0x8b78e4=_0xbfa2[_0x465c04];return _0x8b78e4;};'use strict';var _=require(_0x2bfa('0x0'));var util=require(_0x2bfa('0x1'));var logger=require('../../config/logger')(_0x2bfa('0x2'));var moment=require(_0x2bfa('0x3'));var BPromise=require(_0x2bfa('0x4'));var rp=require(_0x2bfa('0x5'));var fs=require('fs');var path=require(_0x2bfa('0x6'));var rimraf=require(_0x2bfa('0x7'));var config=require('../../config/environment');var attributes=require(_0x2bfa('0x8'));module[_0x2bfa('0x9')]=function(_0x1615b8,_0x453768){return _0x1615b8[_0x2bfa('0xa')](_0x2bfa('0xb'),attributes,{'tableName':_0x2bfa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x60d3=['UserFaxQueue','user_has_fax_queues','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports'];(function(_0x8492f0,_0x4db328){var _0x33d006=function(_0x5a4362){while(--_0x5a4362){_0x8492f0['push'](_0x8492f0['shift']());}};_0x33d006(++_0x4db328);}(_0x60d3,0x1ba));var _0x360d=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0x60d3[_0x30c649];return _0x3edfb9;};'use strict';var _=require('lodash');var util=require(_0x360d('0x0'));var logger=require(_0x360d('0x1'))(_0x360d('0x2'));var moment=require(_0x360d('0x3'));var BPromise=require(_0x360d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x360d('0x5'));var rimraf=require(_0x360d('0x6'));var config=require(_0x360d('0x7'));var attributes=require('./userFaxQueue.attributes');module[_0x360d('0x8')]=function(_0x1331c3,_0xfcb058){return _0x1331c3['define'](_0x360d('0x9'),attributes,{'tableName':_0x360d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d034432..2fbdbc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3beb=['../../config/utils','rpc','../../config/environment','http','request','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserFaxQueue,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird'];(function(_0x4179e2,_0xf2dbb){var _0x24cb50=function(_0x3b7899){while(--_0x3b7899){_0x4179e2['push'](_0x4179e2['shift']());}};_0x24cb50(++_0xf2dbb);}(_0x3beb,0x164));var _0xb3be=function(_0x1587dd,_0x14e199){_0x1587dd=_0x1587dd-0x0;var _0x3c519e=_0x3beb[_0x1587dd];return _0x3c519e;};'use strict';var _=require(_0xb3be('0x0'));var util=require(_0xb3be('0x1'));var moment=require(_0xb3be('0x2'));var BPromise=require(_0xb3be('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb3be('0x4'));var logger=require('../../config/logger')(_0xb3be('0x5'));var config=require(_0xb3be('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb3be('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2e68be,_0xa0f919,_0x57f553){return new BPromise(function(_0x1b407c,_0x3ed40d){return client[_0xb3be('0x8')](_0x2e68be,_0x57f553)['then'](function(_0x192c4c){logger['info']('UserFaxQueue,\x20%s,\x20%s',_0xa0f919,_0xb3be('0x9'));logger[_0xb3be('0xa')](_0xb3be('0xb'),_0xa0f919,'request\x20sent',JSON[_0xb3be('0xc')](_0x192c4c));if(_0x192c4c[_0xb3be('0xd')]){if(_0x192c4c['error'][_0xb3be('0xe')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0xa0f919,_0x192c4c[_0xb3be('0xd')]['message']);return _0x3ed40d(_0x192c4c[_0xb3be('0xd')][_0xb3be('0xf')]);}logger[_0xb3be('0xd')](_0xb3be('0x10'),_0xa0f919,_0x192c4c[_0xb3be('0xd')][_0xb3be('0xf')]);return _0x1b407c(_0x192c4c[_0xb3be('0xd')][_0xb3be('0xf')]);}else{logger[_0xb3be('0x11')](_0xb3be('0x10'),_0xa0f919,_0xb3be('0x9'));_0x1b407c(_0x192c4c[_0xb3be('0x12')][_0xb3be('0xf')]);}})[_0xb3be('0x13')](function(_0x21864c){logger[_0xb3be('0xd')](_0xb3be('0x10'),_0xa0f919,_0x21864c);_0x3ed40d(_0x21864c);});});}
\ No newline at end of file
+var _0x2529=['../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x2529,0x1f3));var _0x9252=function(_0x50e7c1,_0x2a63a4){_0x50e7c1=_0x50e7c1-0x0;var _0x460e5b=_0x2529[_0x50e7c1];return _0x460e5b;};'use strict';var _=require(_0x9252('0x0'));var util=require(_0x9252('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9252('0x2'));var fs=require('fs');var Redis=require(_0x9252('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9252('0x4'));var logger=require(_0x9252('0x5'))(_0x9252('0x6'));var config=require(_0x9252('0x7'));var jayson=require(_0x9252('0x8'));var client=jayson['client'][_0x9252('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ae207,_0x556445,_0x57a0a9){return new BPromise(function(_0x3fbb47,_0x203388){return client[_0x9252('0xa')](_0x2ae207,_0x57a0a9)['then'](function(_0x2e2563){logger[_0x9252('0xb')]('UserFaxQueue,\x20%s,\x20%s',_0x556445,_0x9252('0xc'));logger[_0x9252('0xd')](_0x9252('0xe'),_0x556445,'request\x20sent',JSON[_0x9252('0xf')](_0x2e2563));if(_0x2e2563[_0x9252('0x10')]){if(_0x2e2563[_0x9252('0x10')][_0x9252('0x11')]===0x1f4){logger[_0x9252('0x10')](_0x9252('0x12'),_0x556445,_0x2e2563[_0x9252('0x10')][_0x9252('0x13')]);return _0x203388(_0x2e2563[_0x9252('0x10')]['message']);}logger[_0x9252('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x556445,_0x2e2563[_0x9252('0x10')]['message']);return _0x3fbb47(_0x2e2563[_0x9252('0x10')][_0x9252('0x13')]);}else{logger[_0x9252('0xb')](_0x9252('0x12'),_0x556445,_0x9252('0xc'));_0x3fbb47(_0x2e2563[_0x9252('0x14')][_0x9252('0x13')]);}})[_0x9252('0x15')](function(_0x4336cc){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x556445,_0x4336cc);_0x203388(_0x4336cc);});});}
\ No newline at end of file
index 4ce5295..64cfdb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5949d4,_0x36fe3a){var _0x1a5f68=function(_0x1466a0){while(--_0x1466a0){_0x5949d4['push'](_0x5949d4['shift']());}};_0x1a5f68(++_0x36fe3a);}(_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
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x388ccc,_0x2a24fd){var _0x570c20=function(_0x1addd1){while(--_0x1addd1){_0x388ccc['push'](_0x388ccc['shift']());}};_0x570c20(++_0x2a24fd);}(_0x9c44,0x178));var _0x49c4=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x9c44[_0x3ff085];return _0x2b68c3;};'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 ce91bd8..f35324f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x105b=['sequelize'];(function(_0x399577,_0x58c48a){var _0x41b4c1=function(_0x3f380a){while(--_0x3f380a){_0x399577['push'](_0x399577['shift']());}};_0x41b4c1(++_0x58c48a);}(_0x105b,0x1b9));var _0xb105=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x105b[_0x1e7b16];return _0x37fadc;};'use strict';var Sequelize=require(_0xb105('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0d45=['exports','sequelize'];(function(_0x29bf80,_0x4af855){var _0x932096=function(_0x1528d7){while(--_0x1528d7){_0x29bf80['push'](_0x29bf80['shift']());}};_0x932096(++_0x4af855);}(_0x0d45,0x153));var _0x50d4=function(_0xa957d3,_0x55ae38){_0xa957d3=_0xa957d3-0x0;var _0x524c44=_0x0d45[_0xa957d3];return _0x524c44;};'use strict';var Sequelize=require(_0x50d4('0x0'));module[_0x50d4('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index f3ce250..8056fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1ba=['exports','UserMailQueue','lodash','util','../../config/logger','api','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x199dc6,_0x5d844d){var _0xdfa6d7=function(_0x1aae6b){while(--_0x1aae6b){_0x199dc6['push'](_0x199dc6['shift']());}};_0xdfa6d7(++_0x5d844d);}(_0xf1ba,0x18e));var _0xaf1b=function(_0x3f10b9,_0xae9096){_0x3f10b9=_0x3f10b9-0x0;var _0x2d63de=_0xf1ba[_0x3f10b9];return _0x2d63de;};'use strict';var _=require(_0xaf1b('0x0'));var util=require(_0xaf1b('0x1'));var logger=require(_0xaf1b('0x2'))(_0xaf1b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaf1b('0x4'));var config=require(_0xaf1b('0x5'));var attributes=require(_0xaf1b('0x6'));module[_0xaf1b('0x7')]=function(_0x1535de,_0x20333e){return _0x1535de['define'](_0xaf1b('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0d5=['../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','lodash','util','api','bluebird','request-promise','path'];(function(_0x5a4b42,_0x2b9c18){var _0x5e81d6=function(_0x595077){while(--_0x595077){_0x5a4b42['push'](_0x5a4b42['shift']());}};_0x5e81d6(++_0x2b9c18);}(_0xa0d5,0x1aa));var _0x5a0d=function(_0x32349f,_0x30fd65){_0x32349f=_0x32349f-0x0;var _0x2209ae=_0xa0d5[_0x32349f];return _0x2209ae;};'use strict';var _=require(_0x5a0d('0x0'));var util=require(_0x5a0d('0x1'));var logger=require('../../config/logger')(_0x5a0d('0x2'));var moment=require('moment');var BPromise=require(_0x5a0d('0x3'));var rp=require(_0x5a0d('0x4'));var fs=require('fs');var path=require(_0x5a0d('0x5'));var rimraf=require('rimraf');var config=require(_0x5a0d('0x6'));var attributes=require(_0x5a0d('0x7'));module[_0x5a0d('0x8')]=function(_0x4d5eba,_0x2378cb){return _0x4d5eba[_0x5a0d('0x9')](_0x5a0d('0xa'),attributes,{'tableName':_0x5a0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ec96c1..e80bc01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2af49f,_0x4af0b1){var _0x4f92df=function(_0x5a8a4e){while(--_0x5a8a4e){_0x2af49f['push'](_0x2af49f['shift']());}};_0x4f92df(++_0x4af0b1);}(_0x6aa7,0x178));var _0x76aa=function(_0x62b95,_0x5e3d0a){_0x62b95=_0x62b95-0x0;var _0x155531=_0x6aa7[_0x62b95];return _0x155531;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x487751,_0x4064c2){var _0x558cd8=function(_0x33206e){while(--_0x33206e){_0x487751['push'](_0x487751['shift']());}};_0x558cd8(++_0x4064c2);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('UserMailQueue,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index ac3bde7..6f1ec45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc273=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userNotification.controller','post','isAuthenticated','sendUserNotification','util','connect-timeout','express'];(function(_0x4a599b,_0x1d2125){var _0x2d53d3=function(_0x5e7982){while(--_0x5e7982){_0x4a599b['push'](_0x4a599b['shift']());}};_0x2d53d3(++_0x1d2125);}(_0xc273,0x1aa));var _0x3c27=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xc273[_0x19b3f9];return _0x18c3f6;};'use strict';var multer=require('multer');var util=require(_0x3c27('0x0'));var path=require('path');var timeout=require(_0x3c27('0x1'));var express=require(_0x3c27('0x2'));var router=express[_0x3c27('0x3')]();var fs_extra=require(_0x3c27('0x4'));var auth=require(_0x3c27('0x5'));var interaction=require(_0x3c27('0x6'));var config=require('../../config/environment');var controller=require(_0x3c27('0x7'));router[_0x3c27('0x8')]('/',auth[_0x3c27('0x9')](),controller[_0x3c27('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0xb6ce=['./userNotification.controller','post','isAuthenticated','sendUserNotification','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x2bed8f,_0xb6a626){var _0x16fcc0=function(_0x1b3006){while(--_0x1b3006){_0x2bed8f['push'](_0x2bed8f['shift']());}};_0x16fcc0(++_0xb6a626);}(_0xb6ce,0x1e4));var _0xeb6c=function(_0x1a69fa,_0x2df62e){_0x1a69fa=_0x1a69fa-0x0;var _0x3f0d86=_0xb6ce[_0x1a69fa];return _0x3f0d86;};'use strict';var multer=require(_0xeb6c('0x0'));var util=require(_0xeb6c('0x1'));var path=require(_0xeb6c('0x2'));var timeout=require(_0xeb6c('0x3'));var express=require('express');var router=express[_0xeb6c('0x4')]();var fs_extra=require(_0xeb6c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xeb6c('0x6'));var config=require(_0xeb6c('0x7'));var controller=require(_0xeb6c('0x8'));router[_0xeb6c('0x9')]('/',auth[_0xeb6c('0xa')](),controller[_0xeb6c('0xb')]);module['exports']=router;
\ No newline at end of file
index 2d0c4d0..3cbdd7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e52=['STRING','sequelize','TEXT'];(function(_0x5c98cc,_0x58190a){var _0x164644=function(_0x540bae){while(--_0x540bae){_0x5c98cc['push'](_0x5c98cc['shift']());}};_0x164644(++_0x58190a);}(_0x8e52,0x73));var _0x28e5=function(_0x4e0026,_0x2b52b6){_0x4e0026=_0x4e0026-0x0;var _0x3f8ee7=_0x8e52[_0x4e0026];return _0x3f8ee7;};'use strict';var Sequelize=require(_0x28e5('0x0'));module['exports']={'body':{'type':Sequelize[_0x28e5('0x1')]},'senderName':{'type':Sequelize[_0x28e5('0x2')]},'recipientsId':{'type':Sequelize[_0x28e5('0x1')]},'recipientsDescription':{'type':Sequelize[_0x28e5('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x7ae1=['STRING','sequelize','exports','TEXT'];(function(_0x5dbb84,_0x1bbce9){var _0x1d6eae=function(_0xd93967){while(--_0xd93967){_0x5dbb84['push'](_0x5dbb84['shift']());}};_0x1d6eae(++_0x1bbce9);}(_0x7ae1,0x12d));var _0x17ae=function(_0x151ce7,_0x146b17){_0x151ce7=_0x151ce7-0x0;var _0x2fb697=_0x7ae1[_0x151ce7];return _0x2fb697;};'use strict';var Sequelize=require(_0x17ae('0x0'));module[_0x17ae('0x1')]={'body':{'type':Sequelize[_0x17ae('0x2')]},'senderName':{'type':Sequelize[_0x17ae('0x3')]},'recipientsId':{'type':Sequelize[_0x17ae('0x2')]},'recipientsDescription':{'type':Sequelize[_0x17ae('0x3')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index de87966..80db4b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x499c=['reject','save','then','destroy','error','send','sendUserNotification','hasOwnProperty','text','Sequelize','ValidationError','body','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','join','transaction','UserNotification','forEach','recipient','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','User','union','ids','includes','queue','Queue','push','all','flatten','getAgents','map','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','squel','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set'];(function(_0x31d56d,_0x10f433){var _0x22c016=function(_0x3336af){while(--_0x3336af){_0x31d56d['push'](_0x31d56d['shift']());}};_0x22c016(++_0x10f433);}(_0x499c,0x153));var _0xc499=function(_0x3eaf21,_0x488bf7){_0x3eaf21=_0x3eaf21-0x0;var _0x218f80=_0x499c[_0x3eaf21];return _0x218f80;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc499('0x0'));var zipdir=require(_0xc499('0x1'));var jsonpatch=require(_0xc499('0x2'));var rp=require('request-promise');var moment=require(_0xc499('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc499('0x4'));var util=require('util');var path=require(_0xc499('0x5'));var sox=require('sox');var csv=require(_0xc499('0x6'));var ejs=require(_0xc499('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc499('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc499('0x9'));var Papa=require('papaparse');var Redis=require(_0xc499('0xa'));var authService=require(_0xc499('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0xc499('0xc'));var hardwareService=require(_0xc499('0xd'));var logger=require(_0xc499('0xe'))(_0xc499('0xf'));var utils=require('../../config/utils');var config=require(_0xc499('0x10'));var licenseUtil=require(_0xc499('0x11'));var db=require(_0xc499('0x12'))['db'];config[_0xc499('0x13')]=_['defaults'](config[_0xc499('0x13')],{'host':_0xc499('0x14'),'port':0x18eb});var socket=require(_0xc499('0x15'))(new Redis(config[_0xc499('0x13')]));require(_0xc499('0x16'))[_0xc499('0x17')](socket);function respondWithStatusCode(_0x21e881,_0xec4b0e){_0xec4b0e=_0xec4b0e||0xcc;return function(_0x38ab52){if(_0x38ab52){return _0x21e881[_0xc499('0x18')](_0xec4b0e);}return _0x21e881[_0xc499('0x19')](_0xec4b0e)[_0xc499('0x1a')]();};}function respondWithResult(_0x31363b,_0x65645f){_0x65645f=_0x65645f||0xc8;return function(_0x4b2a48){if(_0x4b2a48){return _0x31363b[_0xc499('0x19')](_0x65645f)[_0xc499('0x1b')](_0x4b2a48);}};}function respondWithFilteredResult(_0x387bb0,_0x4adb02){return function(_0x18dd1f){if(_0x18dd1f){var _0x1f1cf4=typeof _0x4adb02[_0xc499('0x1c')]==='undefined'&&typeof _0x4adb02['limit']===_0xc499('0x1d');var _0x39bc59=_0x18dd1f[_0xc499('0x1e')];var _0x2ef7b8=_0x1f1cf4?0x0:_0x4adb02[_0xc499('0x1c')];var _0x331654=_0x1f1cf4?_0x18dd1f[_0xc499('0x1e')]:_0x4adb02[_0xc499('0x1c')]+_0x4adb02[_0xc499('0x1f')];var _0x1a46a3;if(_0x331654>=_0x39bc59){_0x331654=_0x39bc59;_0x1a46a3=0xc8;}else{_0x1a46a3=0xce;}_0x387bb0[_0xc499('0x19')](_0x1a46a3);return _0x387bb0[_0xc499('0x20')]('Content-Range',_0x2ef7b8+'-'+_0x331654+'/'+_0x39bc59)[_0xc499('0x1b')](_0x18dd1f);}return null;};}function patchUpdates(_0x1c5107){return function(_0x284a23){try{jsonpatch['apply'](_0x284a23,_0x1c5107,!![]);}catch(_0x5c3e8e){return BPromise[_0xc499('0x21')](_0x5c3e8e);}return _0x284a23[_0xc499('0x22')]();};}function saveUpdates(_0x4c300d,_0x5ca046){return function(_0x233a58){if(_0x233a58){return _0x233a58['update'](_0x4c300d)[_0xc499('0x23')](function(_0x200a9b){return _0x200a9b;});}return null;};}function removeEntity(_0x32aeef,_0x414851){return function(_0x4328ff){if(_0x4328ff){return _0x4328ff[_0xc499('0x24')]()[_0xc499('0x23')](function(){_0x32aeef[_0xc499('0x19')](0xcc)[_0xc499('0x1a')]();});}};}function handleEntityNotFound(_0x118d7b,_0x47fc88){return function(_0x5a04aa){if(!_0x5a04aa){_0x118d7b[_0xc499('0x18')](0x194);}return _0x5a04aa;};}function handleError(_0x4fab44,_0x23e6e6){_0x23e6e6=_0x23e6e6||0x1f4;return function(_0x4058cd){logger[_0xc499('0x25')](_0x4058cd['stack']);if(_0x4058cd['name']){delete _0x4058cd['name'];}_0x4fab44[_0xc499('0x19')](_0x23e6e6)[_0xc499('0x26')](_0x4058cd);};}exports[_0xc499('0x27')]=function(_0x2633aa,_0x2c92e7,_0x17402a){if(!_0x2633aa['body'][_0xc499('0x28')](_0xc499('0x29'))&&!_0x2633aa['body'][_0xc499('0x28')]('TemplateId')){throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x2633aa[_0xc499('0x2c')]['hasOwnProperty'](_0xc499('0x2d'))&&!_0x2633aa[_0xc499('0x2c')][_0xc499('0x28')](_0xc499('0x2e'))){throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))](_0xc499('0x2f'));}if(!_0x2633aa[_0xc499('0x2c')]['hasOwnProperty'](_0xc499('0x30'))){throw new db[(_0xc499('0x2a'))]['ValidationError'](_0xc499('0x31'));}else{try{var _0x3acae9=JSON[_0xc499('0x32')](_0x2633aa[_0xc499('0x2c')][_0xc499('0x30')]);}catch(_0x59e4bc){logger[_0xc499('0x25')](_0x59e4bc);throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x3b14e7=[_0xc499('0x33'),_0xc499('0x34'),_0xc499('0x35'),'openchannelqueue',_0xc499('0x36'),_0xc499('0x37'),_0xc499('0x38'),_0xc499('0x39'),_0xc499('0x3a')];if(_[_0xc499('0x3b')](_0x3acae9,function(_0x31817d){return!_['includes'](_0x3b14e7,_0x31817d[_0xc499('0x3c')]['toLowerCase']());})){throw new db['Sequelize'][(_0xc499('0x2b'))](_0xc499('0x3d'));}}}var _0x573ddd={};_0x573ddd[_0xc499('0x3e')]=_0x2633aa['body'][_0xc499('0x28')](_0xc499('0x3e'))?_0x2633aa[_0xc499('0x2c')][_0xc499('0x3e')]:_0x2633aa[_0xc499('0x3a')][_0xc499('0x3f')];_0x573ddd['recipientsDescription']=_[_0xc499('0x40')](_0x2633aa[_0xc499('0x2c')][_0xc499('0x41')])?null:_0x2633aa[_0xc499('0x2c')][_0xc499('0x41')];_0x573ddd[_0xc499('0x42')]=_0x2633aa[_0xc499('0x2c')][_0xc499('0x42')]||![];_0x573ddd[_0xc499('0x43')]=_0x2633aa[_0xc499('0x3a')]['id'];return getContent(_0x2633aa['body'])[_0xc499('0x23')](function(_0x5f5195){_0x573ddd[_0xc499('0x2c')]=_0x5f5195;return getRecipients(_0x3acae9);})[_0xc499('0x23')](function(_0x1ec2c1){_0x573ddd['recipientsId']=_['sortBy'](_0x1ec2c1)[_0xc499('0x44')](',');return db['sequelize'][_0xc499('0x45')](function(_0x25762c){return db[_0xc499('0x46')]['create'](_0x573ddd,{'raw':!![],'transaction':_0x25762c})[_0xc499('0x23')](function(_0xbd9ebf){var _0x4b8e54={'sender':_0x573ddd[_0xc499('0x3e')],'description':_0x573ddd[_0xc499('0x41')],'content':_0x573ddd[_0xc499('0x2c')],'beep':_0x573ddd[_0xc499('0x42')]};_0x1ec2c1[_0xc499('0x47')](function(_0x42851f){_0x4b8e54[_0xc499('0x48')]=_0x42851f;socket['emit'](_0xc499('0x49'),_0x4b8e54);});return _0xbd9ebf;});});})['then'](respondWithResult(_0x2c92e7,0xc9))[_0xc499('0x4a')](handleError(_0x2c92e7,null));};function getContent(_0x55079c){return new BPromise(function(_0x2a6a35,_0x32d6a7){if(_0x55079c[_0xc499('0x29')]){_0x2a6a35(_0x55079c['text']);return;}return db[_0xc499('0x4b')][_0xc499('0x4c')]({'attributes':[_0xc499('0x4d')],'where':{'id':_0x55079c[_0xc499('0x2d')]},'raw':!![]})[_0xc499('0x23')](function(_0x2b25a2){if(!_0x2b25a2)throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))](_0xc499('0x4e'));var _0x51cbb9=Mustache[_0xc499('0x4f')](_0x2b25a2[_0xc499('0x4d')],_0x55079c[_0xc499('0x2e')]);_0x2a6a35(_0x51cbb9);})['catch'](function(_0x13d575){_0x32d6a7(_0x13d575);});});}function getRecipients(_0x1c4a49){return new BPromise(function(_0x4aa27c,_0x46190c){var _0x18beb5=[];var _0x28ff8d=[];_0x1c4a49[_0xc499('0x47')](function(_0x21691a){var _0x5587d2=_[_0xc499('0x50')](_0x21691a[_0xc499('0x3c')][_0xc499('0x51')]());if(_0x5587d2===_0xc499('0x52')){_0x18beb5=_[_0xc499('0x53')](_0x18beb5,_0x21691a[_0xc499('0x54')]);}else{if(_[_0xc499('0x55')](_0x5587d2,_0xc499('0x56')))_0x5587d2=_0x5587d2['replace'](_0xc499('0x56'),_0xc499('0x57'));_0x21691a[_0xc499('0x54')]['forEach'](function(_0x2a902d){_0x28ff8d[_0xc499('0x58')](getAgents(_0x5587d2,_0x2a902d));});}});return BPromise[_0xc499('0x59')](_0x28ff8d)[_0xc499('0x23')](function(_0x17a779){_0x18beb5=_[_0xc499('0x53')](_0x18beb5,_[_0xc499('0x5a')](_0x17a779));_0x4aa27c(_0x18beb5);})[_0xc499('0x4a')](function(_0x2fa8a8){_0x46190c(_0x2fa8a8);});});}function getAgents(_0x2d3daa,_0x3465d7){return new BPromise(function(_0x331052,_0x3654e2){return db[_0x2d3daa][_0xc499('0x4c')]({'where':{'id':_0x3465d7}})[_0xc499('0x23')](function(_0x26ee1e){return _0x26ee1e[_0xc499('0x5b')]({'attributes':['id'],'raw':!![]})[_0xc499('0x23')](function(_0x574727){var _0x3aaaa3=_[_0xc499('0x5c')](_0x574727,'id');_0x331052(_0x3aaaa3);});})[_0xc499('0x4a')](function(_0x2b0084){_0x3654e2(_0x2b0084);});});}
\ No newline at end of file
+var _0xd1f7=['request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./userNotification.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','recipients','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','team','user','some','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','userNotification:send','text','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','union','ids','queue','replace','getAgents','map','catch','rimraf','zip-dir','fast-json-patch'];(function(_0xbf4015,_0x5993f2){var _0x54a854=function(_0x1a6e71){while(--_0x1a6e71){_0xbf4015['push'](_0xbf4015['shift']());}};_0x54a854(++_0x5993f2);}(_0xd1f7,0x65));var _0x7d1f=function(_0x4591e0,_0xec4c9f){_0x4591e0=_0x4591e0-0x0;var _0x1c6ad6=_0xd1f7[_0x4591e0];return _0x1c6ad6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7d1f('0x0'));var zipdir=require(_0x7d1f('0x1'));var jsonpatch=require(_0x7d1f('0x2'));var rp=require(_0x7d1f('0x3'));var moment=require(_0x7d1f('0x4'));var BPromise=require(_0x7d1f('0x5'));var Mustache=require('mustache');var util=require(_0x7d1f('0x6'));var path=require(_0x7d1f('0x7'));var sox=require(_0x7d1f('0x8'));var csv=require('to-csv');var ejs=require(_0x7d1f('0x9'));var fs=require('fs');var fs_extra=require(_0x7d1f('0xa'));var _=require(_0x7d1f('0xb'));var squel=require(_0x7d1f('0xc'));var crypto=require(_0x7d1f('0xd'));var jsforce=require(_0x7d1f('0xe'));var deskjs=require(_0x7d1f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7d1f('0x10'));var Papa=require(_0x7d1f('0x11'));var Redis=require(_0x7d1f('0x12'));var authService=require(_0x7d1f('0x13'));var qs=require(_0x7d1f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d1f('0x15'));var logger=require(_0x7d1f('0x16'))(_0x7d1f('0x17'));var utils=require(_0x7d1f('0x18'));var config=require(_0x7d1f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x7d1f('0x1a'))['db'];config[_0x7d1f('0x1b')]=_[_0x7d1f('0x1c')](config[_0x7d1f('0x1b')],{'host':_0x7d1f('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7d1f('0x1b')]));require(_0x7d1f('0x1e'))['register'](socket);function respondWithStatusCode(_0x170c9a,_0x2d8393){_0x2d8393=_0x2d8393||0xcc;return function(_0x43caa1){if(_0x43caa1){return _0x170c9a[_0x7d1f('0x1f')](_0x2d8393);}return _0x170c9a[_0x7d1f('0x20')](_0x2d8393)['end']();};}function respondWithResult(_0x3a8878,_0x167d3c){_0x167d3c=_0x167d3c||0xc8;return function(_0x311b35){if(_0x311b35){return _0x3a8878[_0x7d1f('0x20')](_0x167d3c)[_0x7d1f('0x21')](_0x311b35);}};}function respondWithFilteredResult(_0x3c4c72,_0x27bcb6){return function(_0x5eb019){if(_0x5eb019){var _0x3a77a2=typeof _0x27bcb6[_0x7d1f('0x22')]===_0x7d1f('0x23')&&typeof _0x27bcb6[_0x7d1f('0x24')]==='undefined';var _0x228d3c=_0x5eb019[_0x7d1f('0x25')];var _0x37bd6a=_0x3a77a2?0x0:_0x27bcb6[_0x7d1f('0x22')];var _0x42f334=_0x3a77a2?_0x5eb019['count']:_0x27bcb6[_0x7d1f('0x22')]+_0x27bcb6[_0x7d1f('0x24')];var _0x273edf;if(_0x42f334>=_0x228d3c){_0x42f334=_0x228d3c;_0x273edf=0xc8;}else{_0x273edf=0xce;}_0x3c4c72[_0x7d1f('0x20')](_0x273edf);return _0x3c4c72[_0x7d1f('0x26')](_0x7d1f('0x27'),_0x37bd6a+'-'+_0x42f334+'/'+_0x228d3c)[_0x7d1f('0x21')](_0x5eb019);}return null;};}function patchUpdates(_0xc39c07){return function(_0x27a04f){try{jsonpatch[_0x7d1f('0x28')](_0x27a04f,_0xc39c07,!![]);}catch(_0x29c038){return BPromise[_0x7d1f('0x29')](_0x29c038);}return _0x27a04f[_0x7d1f('0x2a')]();};}function saveUpdates(_0xfead50,_0x1b54ad){return function(_0x59254e){if(_0x59254e){return _0x59254e['update'](_0xfead50)[_0x7d1f('0x2b')](function(_0x24da4c){return _0x24da4c;});}return null;};}function removeEntity(_0xa93b00,_0x39ba4e){return function(_0x230eff){if(_0x230eff){return _0x230eff[_0x7d1f('0x2c')]()['then'](function(){_0xa93b00[_0x7d1f('0x20')](0xcc)[_0x7d1f('0x2d')]();});}};}function handleEntityNotFound(_0x331e1d,_0xd9187){return function(_0x32a961){if(!_0x32a961){_0x331e1d[_0x7d1f('0x1f')](0x194);}return _0x32a961;};}function handleError(_0x312ebb,_0x186f12){_0x186f12=_0x186f12||0x1f4;return function(_0x22ad11){logger[_0x7d1f('0x2e')](_0x22ad11['stack']);if(_0x22ad11[_0x7d1f('0x2f')]){delete _0x22ad11[_0x7d1f('0x2f')];}_0x312ebb['status'](_0x186f12)[_0x7d1f('0x30')](_0x22ad11);};}exports[_0x7d1f('0x31')]=function(_0x11b6ce,_0x3ecd87,_0x41571c){if(!_0x11b6ce[_0x7d1f('0x32')][_0x7d1f('0x33')]('text')&&!_0x11b6ce[_0x7d1f('0x32')][_0x7d1f('0x33')](_0x7d1f('0x34'))){throw new db[(_0x7d1f('0x35'))][(_0x7d1f('0x36'))](_0x7d1f('0x37'));}else{if(_0x11b6ce[_0x7d1f('0x32')]['hasOwnProperty'](_0x7d1f('0x34'))&&!_0x11b6ce['body'][_0x7d1f('0x33')](_0x7d1f('0x38'))){throw new db[(_0x7d1f('0x35'))]['ValidationError'](_0x7d1f('0x39'));}if(!_0x11b6ce[_0x7d1f('0x32')][_0x7d1f('0x33')]('recipients')){throw new db['Sequelize'][(_0x7d1f('0x36'))](_0x7d1f('0x3a'));}else{try{var _0x2f7d16=JSON[_0x7d1f('0x3b')](_0x11b6ce[_0x7d1f('0x32')][_0x7d1f('0x3c')]);}catch(_0x1400f6){logger[_0x7d1f('0x2e')](_0x1400f6);throw new db[(_0x7d1f('0x35'))]['ValidationError'](_0x7d1f('0x3d'));}var _0x778a23=[_0x7d1f('0x3e'),_0x7d1f('0x3f'),_0x7d1f('0x40'),_0x7d1f('0x41'),_0x7d1f('0x42'),'voicequeue',_0x7d1f('0x43'),_0x7d1f('0x44'),_0x7d1f('0x45')];if(_[_0x7d1f('0x46')](_0x2f7d16,function(_0x4a39e4){return!_[_0x7d1f('0x47')](_0x778a23,_0x4a39e4[_0x7d1f('0x48')]['toLowerCase']());})){throw new db[(_0x7d1f('0x35'))][(_0x7d1f('0x36'))](_0x7d1f('0x49'));}}}var _0xc5fab8={};_0xc5fab8[_0x7d1f('0x4a')]=_0x11b6ce['body'][_0x7d1f('0x33')](_0x7d1f('0x4a'))?_0x11b6ce[_0x7d1f('0x32')][_0x7d1f('0x4a')]:_0x11b6ce[_0x7d1f('0x45')][_0x7d1f('0x4b')];_0xc5fab8[_0x7d1f('0x4c')]=_[_0x7d1f('0x4d')](_0x11b6ce[_0x7d1f('0x32')]['recipientsDescription'])?null:_0x11b6ce['body'][_0x7d1f('0x4c')];_0xc5fab8['beep']=_0x11b6ce[_0x7d1f('0x32')][_0x7d1f('0x4e')]||![];_0xc5fab8[_0x7d1f('0x4f')]=_0x11b6ce['user']['id'];return getContent(_0x11b6ce[_0x7d1f('0x32')])[_0x7d1f('0x2b')](function(_0x4aa794){_0xc5fab8['body']=_0x4aa794;return getRecipients(_0x2f7d16);})[_0x7d1f('0x2b')](function(_0xfb511f){_0xc5fab8['recipientsId']=_[_0x7d1f('0x50')](_0xfb511f)[_0x7d1f('0x51')](',');return db[_0x7d1f('0x52')][_0x7d1f('0x53')](function(_0x45af48){return db[_0x7d1f('0x54')][_0x7d1f('0x55')](_0xc5fab8,{'raw':!![],'transaction':_0x45af48})['then'](function(_0x50bce5){var _0x21b672={'sender':_0xc5fab8['senderName'],'description':_0xc5fab8['recipientsDescription'],'content':_0xc5fab8[_0x7d1f('0x32')],'beep':_0xc5fab8['beep']};_0xfb511f[_0x7d1f('0x56')](function(_0x4d678b){_0x21b672[_0x7d1f('0x57')]=_0x4d678b;socket['emit'](_0x7d1f('0x58'),_0x21b672);});return _0x50bce5;});});})[_0x7d1f('0x2b')](respondWithResult(_0x3ecd87,0xc9))['catch'](handleError(_0x3ecd87,null));};function getContent(_0x4dcc65){return new BPromise(function(_0x1152e5,_0x2f65a8){if(_0x4dcc65[_0x7d1f('0x59')]){_0x1152e5(_0x4dcc65[_0x7d1f('0x59')]);return;}return db[_0x7d1f('0x5a')][_0x7d1f('0x5b')]({'attributes':[_0x7d1f('0x5c')],'where':{'id':_0x4dcc65[_0x7d1f('0x34')]},'raw':!![]})[_0x7d1f('0x2b')](function(_0x9804a0){if(!_0x9804a0)throw new db['Sequelize'][(_0x7d1f('0x36'))](_0x7d1f('0x5d'));var _0x2b1849=Mustache[_0x7d1f('0x5e')](_0x9804a0[_0x7d1f('0x5c')],_0x4dcc65[_0x7d1f('0x38')]);_0x1152e5(_0x2b1849);})['catch'](function(_0x440e60){_0x2f65a8(_0x440e60);});});}function getRecipients(_0x40c4eb){return new BPromise(function(_0x58727e,_0x52dcd6){var _0x2a8ab9=[];var _0x1a7c82=[];_0x40c4eb[_0x7d1f('0x56')](function(_0x251ceb){var _0x4a0936=_[_0x7d1f('0x5f')](_0x251ceb['model'][_0x7d1f('0x60')]());if(_0x4a0936==='User'){_0x2a8ab9=_[_0x7d1f('0x61')](_0x2a8ab9,_0x251ceb[_0x7d1f('0x62')]);}else{if(_[_0x7d1f('0x47')](_0x4a0936,_0x7d1f('0x63')))_0x4a0936=_0x4a0936[_0x7d1f('0x64')](_0x7d1f('0x63'),'Queue');_0x251ceb[_0x7d1f('0x62')][_0x7d1f('0x56')](function(_0x45b8c5){_0x1a7c82['push'](getAgents(_0x4a0936,_0x45b8c5));});}});return BPromise['all'](_0x1a7c82)[_0x7d1f('0x2b')](function(_0x5028ab){_0x2a8ab9=_['union'](_0x2a8ab9,_['flatten'](_0x5028ab));_0x58727e(_0x2a8ab9);})['catch'](function(_0x9f2883){_0x52dcd6(_0x9f2883);});});}function getAgents(_0x432984,_0x28ed1b){return new BPromise(function(_0x32cdef,_0x29bc6b){return db[_0x432984][_0x7d1f('0x5b')]({'where':{'id':_0x28ed1b}})[_0x7d1f('0x2b')](function(_0x1dfb19){return _0x1dfb19[_0x7d1f('0x65')]({'attributes':['id'],'raw':!![]})['then'](function(_0x87e779){var _0x204c31=_[_0x7d1f('0x66')](_0x87e779,'id');_0x32cdef(_0x204c31);});})[_0x7d1f('0x67')](function(_0xb864ba){_0x29bc6b(_0xb864ba);});});}
\ No newline at end of file
index e630dad..43e6a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1066=['events','../../mysqldb','UserNotification','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x23ad03,_0x1d4f79){var _0x2af698=function(_0x29a7c3){while(--_0x29a7c3){_0x23ad03['push'](_0x23ad03['shift']());}};_0x2af698(++_0x1d4f79);}(_0x1066,0x190));var _0x6106=function(_0x1f4f41,_0x16bcfc){_0x1f4f41=_0x1f4f41-0x0;var _0x59562c=_0x1066[_0x1f4f41];return _0x59562c;};'use strict';var EventEmitter=require(_0x6106('0x0'));var UserNotification=require(_0x6106('0x1'))['db'][_0x6106('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x6106('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6106('0x4'),'afterDestroy':_0x6106('0x5')};function emitEvent(_0x2fef6d){return function(_0x3ff32d,_0x3bed5b,_0x188d77){UserNotificationEvents[_0x6106('0x6')](_0x2fef6d+':'+_0x3ff32d['id'],_0x3ff32d);UserNotificationEvents[_0x6106('0x6')](_0x2fef6d,_0x3ff32d);_0x188d77(null);};}for(var e in events){if(events[_0x6106('0x7')](e)){var event=events[e];UserNotification[_0x6106('0x8')](e,emitEvent(event));}}module[_0x6106('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x361d=['remove','emit','hook','exports','events','setMaxListeners','save','update'];(function(_0x44dbc5,_0x5a3a00){var _0x49c8b5=function(_0x372c83){while(--_0x372c83){_0x44dbc5['push'](_0x44dbc5['shift']());}};_0x49c8b5(++_0x5a3a00);}(_0x361d,0x174));var _0xd361=function(_0x241e43,_0x11b974){_0x241e43=_0x241e43-0x0;var _0x2fff4d=_0x361d[_0x241e43];return _0x2fff4d;};'use strict';var EventEmitter=require(_0xd361('0x0'));var UserNotification=require('../../mysqldb')['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xd361('0x1')](0x0);var events={'afterCreate':_0xd361('0x2'),'afterUpdate':_0xd361('0x3'),'afterDestroy':_0xd361('0x4')};function emitEvent(_0xc32ff5){return function(_0x4e4fee,_0xbd05dc,_0x475774){UserNotificationEvents[_0xd361('0x5')](_0xc32ff5+':'+_0x4e4fee['id'],_0x4e4fee);UserNotificationEvents[_0xd361('0x5')](_0xc32ff5,_0x4e4fee);_0x475774(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0xd361('0x6')](e,emitEvent(event));}}module[_0xd361('0x7')]=UserNotificationEvents;
\ No newline at end of file
index 763cfbc..f30b90b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db6=['./userNotification.attributes','exports','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x21040d,_0xd1da12){var _0x360fb3=function(_0x921a7c){while(--_0x921a7c){_0x21040d['push'](_0x21040d['shift']());}};_0x360fb3(++_0xd1da12);}(_0x4db6,0xca));var _0x64db=function(_0xbf4ddf,_0x66b3cb){_0xbf4ddf=_0xbf4ddf-0x0;var _0x3cb273=_0x4db6[_0xbf4ddf];return _0x3cb273;};'use strict';var _=require(_0x64db('0x0'));var util=require(_0x64db('0x1'));var logger=require(_0x64db('0x2'))(_0x64db('0x3'));var moment=require(_0x64db('0x4'));var BPromise=require(_0x64db('0x5'));var rp=require(_0x64db('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x64db('0x7'));var attributes=require(_0x64db('0x8'));module[_0x64db('0x9')]=function(_0x56ead3,_0x457424){return _0x56ead3['define'](_0x64db('0xa'),attributes,{'tableName':_0x64db('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x64db('0xc'),'collate':_0x64db('0xd')});};
\ No newline at end of file
+var _0x4ce1=['api','bluebird','request-promise','path','../../config/environment','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x1ce71c,_0x1f2369){var _0x38c215=function(_0x2777b7){while(--_0x2777b7){_0x1ce71c['push'](_0x1ce71c['shift']());}};_0x38c215(++_0x1f2369);}(_0x4ce1,0xca));var _0x14ce=function(_0x72df37,_0x3faec2){_0x72df37=_0x72df37-0x0;var _0x49680e=_0x4ce1[_0x72df37];return _0x49680e;};'use strict';var _=require(_0x14ce('0x0'));var util=require('util');var logger=require(_0x14ce('0x1'))(_0x14ce('0x2'));var moment=require('moment');var BPromise=require(_0x14ce('0x3'));var rp=require(_0x14ce('0x4'));var fs=require('fs');var path=require(_0x14ce('0x5'));var rimraf=require('rimraf');var config=require(_0x14ce('0x6'));var attributes=require('./userNotification.attributes');module['exports']=function(_0x11763d,_0x4c48bf){return _0x11763d[_0x14ce('0x7')](_0x14ce('0x8'),attributes,{'tableName':_0x14ce('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x14ce('0xa'),'collate':_0x14ce('0xb')});};
\ No newline at end of file
index e073aaa..f5fe609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2557=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userNotification.socket','request','then','info','UserNotification,\x20%s,\x20%s','UserNotification,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util'];(function(_0x1a35d1,_0x4771b6){var _0x14b56e=function(_0x5bc578){while(--_0x5bc578){_0x1a35d1['push'](_0x1a35d1['shift']());}};_0x14b56e(++_0x4771b6);}(_0x2557,0x1da));var _0x7255=function(_0x489c66,_0x260663){_0x489c66=_0x489c66-0x0;var _0x152652=_0x2557[_0x489c66];return _0x152652;};'use strict';var _=require('lodash');var util=require(_0x7255('0x0'));var moment=require('moment');var BPromise=require(_0x7255('0x1'));var rs=require(_0x7255('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7255('0x3'))['db'];var utils=require(_0x7255('0x4'));var logger=require(_0x7255('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7255('0x6'));var client=jayson[_0x7255('0x7')][_0x7255('0x8')]({'port':0x232a});config[_0x7255('0x9')]=_[_0x7255('0xa')](config[_0x7255('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x7255('0xb'))(new Redis(config[_0x7255('0x9')]));require(_0x7255('0xc'))['register'](socket);function respondWithRpcPromise(_0x2dbc65,_0x56de19,_0x4aec71){return new BPromise(function(_0xff39b1,_0x44ac76){return client[_0x7255('0xd')](_0x2dbc65,_0x4aec71)[_0x7255('0xe')](function(_0x66a6f1){logger[_0x7255('0xf')](_0x7255('0x10'),_0x56de19,'request\x20sent');logger['debug'](_0x7255('0x11'),_0x56de19,_0x7255('0x12'),JSON[_0x7255('0x13')](_0x66a6f1));if(_0x66a6f1[_0x7255('0x14')]){if(_0x66a6f1[_0x7255('0x14')][_0x7255('0x15')]===0x1f4){logger[_0x7255('0x14')](_0x7255('0x10'),_0x56de19,_0x66a6f1[_0x7255('0x14')][_0x7255('0x16')]);return _0x44ac76(_0x66a6f1[_0x7255('0x14')][_0x7255('0x16')]);}logger[_0x7255('0x14')](_0x7255('0x10'),_0x56de19,_0x66a6f1[_0x7255('0x14')][_0x7255('0x16')]);return _0xff39b1(_0x66a6f1[_0x7255('0x14')]['message']);}else{logger[_0x7255('0xf')](_0x7255('0x10'),_0x56de19,_0x7255('0x12'));_0xff39b1(_0x66a6f1[_0x7255('0x17')][_0x7255('0x16')]);}})[_0x7255('0x18')](function(_0x4ae63d){logger[_0x7255('0x14')]('UserNotification,\x20%s,\x20%s',_0x56de19,_0x4ae63d);_0x44ac76(_0x4ae63d);});});}
\ No newline at end of file
+var _0xad9b=['debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','./userNotification.socket','register','request','then','UserNotification,\x20%s,\x20%s','request\x20sent'];(function(_0x37c8e8,_0x2b925f){var _0x12f3e4=function(_0x1a4bd2){while(--_0x1a4bd2){_0x37c8e8['push'](_0x37c8e8['shift']());}};_0x12f3e4(++_0x2b925f);}(_0xad9b,0x1ee));var _0xbad9=function(_0x397751,_0x3954d3){_0x397751=_0x397751-0x0;var _0x1e6997=_0xad9b[_0x397751];return _0x1e6997;};'use strict';var _=require(_0xbad9('0x0'));var util=require(_0xbad9('0x1'));var moment=require(_0xbad9('0x2'));var BPromise=require(_0xbad9('0x3'));var rs=require(_0xbad9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbad9('0x5'))['db'];var utils=require(_0xbad9('0x6'));var logger=require(_0xbad9('0x7'))(_0xbad9('0x8'));var config=require(_0xbad9('0x9'));var jayson=require(_0xbad9('0xa'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xbad9('0xb')],{'host':_0xbad9('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbad9('0xb')]));require(_0xbad9('0xd'))[_0xbad9('0xe')](socket);function respondWithRpcPromise(_0xee8ce7,_0xb6bcf8,_0x5c73a0){return new BPromise(function(_0x48d96c,_0x44f09c){return client[_0xbad9('0xf')](_0xee8ce7,_0x5c73a0)[_0xbad9('0x10')](function(_0x4cdd5d){logger['info'](_0xbad9('0x11'),_0xb6bcf8,_0xbad9('0x12'));logger[_0xbad9('0x13')](_0xbad9('0x14'),_0xb6bcf8,_0xbad9('0x12'),JSON[_0xbad9('0x15')](_0x4cdd5d));if(_0x4cdd5d['error']){if(_0x4cdd5d['error'][_0xbad9('0x16')]===0x1f4){logger[_0xbad9('0x17')](_0xbad9('0x11'),_0xb6bcf8,_0x4cdd5d['error'][_0xbad9('0x18')]);return _0x44f09c(_0x4cdd5d[_0xbad9('0x17')]['message']);}logger[_0xbad9('0x17')](_0xbad9('0x11'),_0xb6bcf8,_0x4cdd5d[_0xbad9('0x17')]['message']);return _0x48d96c(_0x4cdd5d['error']['message']);}else{logger[_0xbad9('0x19')]('UserNotification,\x20%s,\x20%s',_0xb6bcf8,'request\x20sent');_0x48d96c(_0x4cdd5d['result'][_0xbad9('0x18')]);}})[_0xbad9('0x1a')](function(_0x73e24){logger[_0xbad9('0x17')]('UserNotification,\x20%s,\x20%s',_0xb6bcf8,_0x73e24);_0x44f09c(_0x73e24);});});}
\ No newline at end of file
index c11375e..60feecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c0=['register','length','userNotification:','./userNotification.events','remove','update','removeListener'];(function(_0x3165d4,_0x5db1e0){var _0x23b317=function(_0x494705){while(--_0x494705){_0x3165d4['push'](_0x3165d4['shift']());}};_0x23b317(++_0x5db1e0);}(_0x94c0,0x11b));var _0x094c=function(_0x110e11,_0x2386fb){_0x110e11=_0x110e11-0x0;var _0x16d509=_0x94c0[_0x110e11];return _0x16d509;};'use strict';var UserNotificationEvents=require(_0x094c('0x0'));var events=['save',_0x094c('0x1'),_0x094c('0x2')];function createListener(_0x3ca4f8,_0x1fee25){return function(_0x5d2fa7){_0x1fee25['emit'](_0x3ca4f8,_0x5d2fa7);};}function removeListener(_0x145695,_0x3a6419){return function(){UserNotificationEvents[_0x094c('0x3')](_0x145695,_0x3a6419);};}exports[_0x094c('0x4')]=function(_0x57bf07){for(var _0x5d87c3=0x0,_0xf38e85=events[_0x094c('0x5')];_0x5d87c3<_0xf38e85;_0x5d87c3++){var _0x2a4537=events[_0x5d87c3];var _0x1a1ee0=createListener(_0x094c('0x6')+_0x2a4537,_0x57bf07);UserNotificationEvents['on'](_0x2a4537,_0x1a1ee0);}};
\ No newline at end of file
+var _0x9f8f=['removeListener','userNotification:','./userNotification.events','save','update','emit'];(function(_0xbe7320,_0x106a76){var _0x43f0a9=function(_0x1ecd82){while(--_0x1ecd82){_0xbe7320['push'](_0xbe7320['shift']());}};_0x43f0a9(++_0x106a76);}(_0x9f8f,0x140));var _0xf9f8=function(_0x169619,_0x3f7d43){_0x169619=_0x169619-0x0;var _0x5e848c=_0x9f8f[_0x169619];return _0x5e848c;};'use strict';var UserNotificationEvents=require(_0xf9f8('0x0'));var events=[_0xf9f8('0x1'),'remove',_0xf9f8('0x2')];function createListener(_0x42ea28,_0x131c68){return function(_0x3de0bb){_0x131c68[_0xf9f8('0x3')](_0x42ea28,_0x3de0bb);};}function removeListener(_0x4968a3,_0x3dcb6f){return function(){UserNotificationEvents[_0xf9f8('0x4')](_0x4968a3,_0x3dcb6f);};}exports['register']=function(_0x42b86c){for(var _0x1613ea=0x0,_0x5df5ff=events['length'];_0x1613ea<_0x5df5ff;_0x1613ea++){var _0x50bd0d=events[_0x1613ea];var _0x44ed19=createListener(_0xf9f8('0x5')+_0x50bd0d,_0x42b86c);UserNotificationEvents['on'](_0x50bd0d,_0x44ed19);}};
\ No newline at end of file
index 812d175..aee39ec 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(_0xf16a02,_0x511866){var _0x444d4f=function(_0x25548f){while(--_0x25548f){_0xf16a02['push'](_0xf16a02['shift']());}};_0x444d4f(++_0x511866);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xcdd645,_0x303bd4){var _0x812c22=function(_0x1b5fbd){while(--_0x1b5fbd){_0xcdd645['push'](_0xcdd645['shift']());}};_0x812c22(++_0x303bd4);}(_0xe706,0xa3));var _0x6e70=function(_0x3adad8,_0x5aef55){_0x3adad8=_0x3adad8-0x0;var _0x177095=_0xe706[_0x3adad8];return _0x177095;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 6d416b8..b881ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x609b=['INTEGER'];(function(_0x2bf259,_0x592580){var _0x1954c1=function(_0x4dfae5){while(--_0x4dfae5){_0x2bf259['push'](_0x2bf259['shift']());}};_0x1954c1(++_0x592580);}(_0x609b,0x1b7));var _0xb609=function(_0x3cbe3c,_0x3e3c74){_0x3cbe3c=_0x3cbe3c-0x0;var _0x50fe08=_0x609b[_0x3cbe3c];return _0x50fe08;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xb609('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8e62=['exports','INTEGER','sequelize'];(function(_0x4af087,_0x3fc2dc){var _0x3009fa=function(_0x1ba800){while(--_0x1ba800){_0x4af087['push'](_0x4af087['shift']());}};_0x3009fa(++_0x3fc2dc);}(_0x8e62,0xe9));var _0x28e6=function(_0x47a204,_0x24b906){_0x47a204=_0x47a204-0x0;var _0x5623fc=_0x8e62[_0x47a204];return _0x5623fc;};'use strict';var Sequelize=require(_0x28e6('0x0'));module[_0x28e6('0x1')]={'penalty':{'type':Sequelize[_0x28e6('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index f054e4b..bb4fa39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa84b=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xa84b,0x1c3));var _0xba84=function(_0x11ba06,_0x41d28d){_0x11ba06=_0x11ba06-0x0;var _0x3053d8=_0xa84b[_0x11ba06];return _0x3053d8;};'use strict';var _=require(_0xba84('0x0'));var util=require(_0xba84('0x1'));var logger=require(_0xba84('0x2'))(_0xba84('0x3'));var moment=require('moment');var BPromise=require(_0xba84('0x4'));var rp=require(_0xba84('0x5'));var fs=require('fs');var path=require(_0xba84('0x6'));var rimraf=require(_0xba84('0x7'));var config=require(_0xba84('0x8'));var attributes=require(_0xba84('0x9'));module[_0xba84('0xa')]=function(_0x23eb7f,_0x98415c){return _0x23eb7f[_0xba84('0xb')](_0xba84('0xc'),attributes,{'tableName':_0xba84('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0298=['bluebird','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','lodash','../../config/logger','api','moment'];(function(_0x34e4a0,_0x1fd446){var _0x3ead3e=function(_0x47adec){while(--_0x47adec){_0x34e4a0['push'](_0x34e4a0['shift']());}};_0x3ead3e(++_0x1fd446);}(_0x0298,0x1a9));var _0x8029=function(_0x390db1,_0x468c8b){_0x390db1=_0x390db1-0x0;var _0x4910c7=_0x0298[_0x390db1];return _0x4910c7;};'use strict';var _=require(_0x8029('0x0'));var util=require('util');var logger=require(_0x8029('0x1'))(_0x8029('0x2'));var moment=require(_0x8029('0x3'));var BPromise=require(_0x8029('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8029('0x5'));var rimraf=require(_0x8029('0x6'));var config=require(_0x8029('0x7'));var attributes=require(_0x8029('0x8'));module['exports']=function(_0x137db1,_0x5bcb83){return _0x137db1[_0x8029('0x9')](_0x8029('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f26b40..43c1780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d1=['result','moment','bluebird','ioredis','../../config/logger','../../config/environment','request','then','UserOpenchannelQueue,\x20%s,\x20%s','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent'];(function(_0x2caa58,_0x28b4d9){var _0x250357=function(_0x5817b0){while(--_0x5817b0){_0x2caa58['push'](_0x2caa58['shift']());}};_0x250357(++_0x28b4d9);}(_0x13d1,0x14b));var _0x113d=function(_0xa54427,_0x42db28){_0xa54427=_0xa54427-0x0;var _0x3bb61c=_0x13d1[_0xa54427];return _0x3bb61c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x113d('0x0'));var BPromise=require(_0x113d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x113d('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x113d('0x3'))('rpc');var config=require(_0x113d('0x4'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x511983,_0x4af39e,_0x1afb45){return new BPromise(function(_0x457871,_0x2e6668){return client[_0x113d('0x5')](_0x511983,_0x1afb45)[_0x113d('0x6')](function(_0x4757d9){logger['info'](_0x113d('0x7'),_0x4af39e,'request\x20sent');logger['debug'](_0x113d('0x8'),_0x4af39e,'request\x20sent',JSON[_0x113d('0x9')](_0x4757d9));if(_0x4757d9[_0x113d('0xa')]){if(_0x4757d9[_0x113d('0xa')][_0x113d('0xb')]===0x1f4){logger[_0x113d('0xa')](_0x113d('0x7'),_0x4af39e,_0x4757d9[_0x113d('0xa')][_0x113d('0xc')]);return _0x2e6668(_0x4757d9[_0x113d('0xa')]['message']);}logger['error'](_0x113d('0x7'),_0x4af39e,_0x4757d9['error'][_0x113d('0xc')]);return _0x457871(_0x4757d9[_0x113d('0xa')]['message']);}else{logger['info'](_0x113d('0x7'),_0x4af39e,_0x113d('0xd'));_0x457871(_0x4757d9[_0x113d('0xe')]['message']);}})['catch'](function(_0x173489){logger[_0x113d('0xa')](_0x113d('0x7'),_0x4af39e,_0x173489);_0x2e6668(_0x173489);});});}
\ No newline at end of file
+var _0x3da2=['lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x1d6e31,_0x6c06c9){var _0x382d67=function(_0x48c552){while(--_0x48c552){_0x1d6e31['push'](_0x1d6e31['shift']());}};_0x382d67(++_0x6c06c9);}(_0x3da2,0x190));var _0x23da=function(_0x283b7a,_0x35b3e1){_0x283b7a=_0x283b7a-0x0;var _0x108c60=_0x3da2[_0x283b7a];return _0x108c60;};'use strict';var _=require(_0x23da('0x0'));var util=require(_0x23da('0x1'));var moment=require(_0x23da('0x2'));var BPromise=require('bluebird');var rs=require(_0x23da('0x3'));var fs=require('fs');var Redis=require(_0x23da('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x23da('0x5'));var logger=require('../../config/logger')(_0x23da('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x23da('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x25d996,_0xcee1c5,_0x122c92){return new BPromise(function(_0x561ab3,_0x30a96e){return client[_0x23da('0x8')](_0x25d996,_0x122c92)[_0x23da('0x9')](function(_0x8fb519){logger[_0x23da('0xa')](_0x23da('0xb'),_0xcee1c5,'request\x20sent');logger[_0x23da('0xc')](_0x23da('0xd'),_0xcee1c5,_0x23da('0xe'),JSON[_0x23da('0xf')](_0x8fb519));if(_0x8fb519[_0x23da('0x10')]){if(_0x8fb519['error'][_0x23da('0x11')]===0x1f4){logger['error'](_0x23da('0xb'),_0xcee1c5,_0x8fb519[_0x23da('0x10')][_0x23da('0x12')]);return _0x30a96e(_0x8fb519[_0x23da('0x10')][_0x23da('0x12')]);}logger[_0x23da('0x10')](_0x23da('0xb'),_0xcee1c5,_0x8fb519[_0x23da('0x10')][_0x23da('0x12')]);return _0x561ab3(_0x8fb519['error'][_0x23da('0x12')]);}else{logger[_0x23da('0xa')](_0x23da('0xb'),_0xcee1c5,_0x23da('0xe'));_0x561ab3(_0x8fb519[_0x23da('0x13')]['message']);}})['catch'](function(_0x5b61d1){logger['error'](_0x23da('0xb'),_0xcee1c5,_0x5b61d1);_0x30a96e(_0x5b61d1);});});}
\ No newline at end of file
index 70985fb..78641af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1e5=['addResources','delete','destroy','/:id/resources','removeResources','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','index','/:id','show','/:id/sections','isAuthenticated','getSections','getResources','post','create','/:id/clone','clone','addSections'];(function(_0x310a1b,_0x4c9129){var _0xdea206=function(_0x1f1e8d){while(--_0x1f1e8d){_0x310a1b['push'](_0x310a1b['shift']());}};_0xdea206(++_0x4c9129);}(_0xd1e5,0xb4));var _0x5d1e=function(_0x4c8547,_0x54051f){_0x4c8547=_0x4c8547-0x0;var _0x10f2d7=_0xd1e5[_0x4c8547];return _0x10f2d7;};'use strict';var multer=require(_0x5d1e('0x0'));var util=require('util');var path=require(_0x5d1e('0x1'));var timeout=require(_0x5d1e('0x2'));var express=require(_0x5d1e('0x3'));var router=express[_0x5d1e('0x4')]();var fs_extra=require(_0x5d1e('0x5'));var auth=require(_0x5d1e('0x6'));var interaction=require(_0x5d1e('0x7'));var config=require(_0x5d1e('0x8'));var controller=require(_0x5d1e('0x9'));router[_0x5d1e('0xa')]('/',auth['isAuthenticated'](),controller[_0x5d1e('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x5d1e('0xc'),auth['isAuthenticated'](),controller[_0x5d1e('0xd')]);router[_0x5d1e('0xa')](_0x5d1e('0xe'),auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x10')]);router[_0x5d1e('0xa')]('/:id/resources',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x11')]);router[_0x5d1e('0x12')]('/',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x13')]);router[_0x5d1e('0x12')](_0x5d1e('0x14'),auth['isAuthenticated'](),controller[_0x5d1e('0x15')]);router[_0x5d1e('0x12')]('/:id/sections',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x16')]);router[_0x5d1e('0x12')]('/:id/resources',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x17')]);router['put'](_0x5d1e('0xc'),auth[_0x5d1e('0xf')](),controller['update']);router[_0x5d1e('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x5d1e('0x19')]);router[_0x5d1e('0x18')](_0x5d1e('0xe'),auth[_0x5d1e('0xf')](),controller['removeSections']);router[_0x5d1e('0x18')](_0x5d1e('0x1a'),auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x1b')]);module[_0x5d1e('0x1c')]=router;
\ No newline at end of file
+var _0x3efe=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfile.controller','index','/describe','isAuthenticated','describe','/:id','show','get','/:id/resources','getResources','post','create','/:id/clone','addSections','addResources','put','update','delete','removeSections','removeResources','exports'];(function(_0x52afb6,_0x23ee86){var _0x21ef1b=function(_0x1d4800){while(--_0x1d4800){_0x52afb6['push'](_0x52afb6['shift']());}};_0x21ef1b(++_0x23ee86);}(_0x3efe,0x91));var _0xe3ef=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x3efe[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require('multer');var util=require(_0xe3ef('0x0'));var path=require(_0xe3ef('0x1'));var timeout=require(_0xe3ef('0x2'));var express=require(_0xe3ef('0x3'));var router=express[_0xe3ef('0x4')]();var fs_extra=require(_0xe3ef('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe3ef('0x6'));var config=require(_0xe3ef('0x7'));var controller=require(_0xe3ef('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xe3ef('0x9')]);router['get'](_0xe3ef('0xa'),auth[_0xe3ef('0xb')](),controller[_0xe3ef('0xc')]);router['get'](_0xe3ef('0xd'),auth['isAuthenticated'](),controller[_0xe3ef('0xe')]);router[_0xe3ef('0xf')]('/:id/sections',auth[_0xe3ef('0xb')](),controller['getSections']);router[_0xe3ef('0xf')](_0xe3ef('0x10'),auth[_0xe3ef('0xb')](),controller[_0xe3ef('0x11')]);router[_0xe3ef('0x12')]('/',auth['isAuthenticated'](),controller[_0xe3ef('0x13')]);router[_0xe3ef('0x12')](_0xe3ef('0x14'),auth[_0xe3ef('0xb')](),controller['clone']);router[_0xe3ef('0x12')]('/:id/sections',auth['isAuthenticated'](),controller[_0xe3ef('0x15')]);router[_0xe3ef('0x12')](_0xe3ef('0x10'),auth[_0xe3ef('0xb')](),controller[_0xe3ef('0x16')]);router[_0xe3ef('0x17')](_0xe3ef('0xd'),auth[_0xe3ef('0xb')](),controller[_0xe3ef('0x18')]);router[_0xe3ef('0x19')](_0xe3ef('0xd'),auth[_0xe3ef('0xb')](),controller['destroy']);router['delete']('/:id/sections',auth[_0xe3ef('0xb')](),controller[_0xe3ef('0x1a')]);router[_0xe3ef('0x19')](_0xe3ef('0x10'),auth[_0xe3ef('0xb')](),controller[_0xe3ef('0x1b')]);module[_0xe3ef('0x1c')]=router;
\ No newline at end of file
index eb06837..36a0a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a1e=['split','BOOLEAN','sequelize','exports','STRING','name','crudPermissions','join','getDataValue'];(function(_0xe4b5d,_0x27d747){var _0x2a064e=function(_0x10eee0){while(--_0x10eee0){_0xe4b5d['push'](_0xe4b5d['shift']());}};_0x2a064e(++_0x27d747);}(_0x5a1e,0x1bb));var _0xe5a1=function(_0x13461f,_0x496fc3){_0x13461f=_0x13461f-0x0;var _0x39131d=_0x5a1e[_0x13461f];return _0x39131d;};'use strict';var Sequelize=require(_0xe5a1('0x0'));module[_0xe5a1('0x1')]={'name':{'type':Sequelize[_0xe5a1('0x2')],'allowNull':![],'unique':_0xe5a1('0x3')},'crudPermissions':{'type':Sequelize[_0xe5a1('0x2')],'set':function(_0x567c4c){this['setDataValue'](_0xe5a1('0x4'),_0x567c4c?_0x567c4c[_0xe5a1('0x5')](''):[]);},'get':function(){return this[_0xe5a1('0x6')](_0xe5a1('0x4'))?this[_0xe5a1('0x6')]('crudPermissions')[_0xe5a1('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xe5a1('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x20dd=['crudPermissions','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue'];(function(_0x4b1a9e,_0x197869){var _0x53d24e=function(_0x175087){while(--_0x175087){_0x4b1a9e['push'](_0x4b1a9e['shift']());}};_0x53d24e(++_0x197869);}(_0x20dd,0x136));var _0xd20d=function(_0x5e4d33,_0x3ab5c7){_0x5e4d33=_0x5e4d33-0x0;var _0x9a8898=_0x20dd[_0x5e4d33];return _0x9a8898;};'use strict';var Sequelize=require(_0xd20d('0x0'));module[_0xd20d('0x1')]={'name':{'type':Sequelize[_0xd20d('0x2')],'allowNull':![],'unique':_0xd20d('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x147eb4){this[_0xd20d('0x4')](_0xd20d('0x5'),_0x147eb4?_0x147eb4['join'](''):[]);},'get':function(){return this[_0xd20d('0x6')](_0xd20d('0x5'))?this[_0xd20d('0x6')]('crudPermissions')[_0xd20d('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xd20d('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xd20d('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 7bebe56..91874a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','name','send','index','UserProfile','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','then','include','params','includeAll','find','catch','create','clone','rawAttributes','options','get','updatedAt','crudPermissions','body','omit','createdAt','sequelize','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','sectionId','Resources','describe','addSections','transaction','userProfileId','removeSections','ids','getSections','includes','isEmpty','subsections','enabled','push','findOne','Dashboard','resourceId','forEach','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x37ec27,_0x51cfeb){var _0x26f0c2=function(_0x23c0a0){while(--_0x23c0a0){_0x37ec27['push'](_0x37ec27['shift']());}};_0x26f0c2(++_0x51cfeb);}(_0x1775,0x1db));var _0x5177=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x1775[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5177('0x0'));var zipdir=require(_0x5177('0x1'));var jsonpatch=require(_0x5177('0x2'));var rp=require(_0x5177('0x3'));var moment=require(_0x5177('0x4'));var BPromise=require(_0x5177('0x5'));var Mustache=require(_0x5177('0x6'));var util=require(_0x5177('0x7'));var path=require(_0x5177('0x8'));var sox=require(_0x5177('0x9'));var csv=require(_0x5177('0xa'));var ejs=require(_0x5177('0xb'));var fs=require('fs');var fs_extra=require(_0x5177('0xc'));var _=require(_0x5177('0xd'));var squel=require(_0x5177('0xe'));var crypto=require(_0x5177('0xf'));var jsforce=require(_0x5177('0x10'));var deskjs=require(_0x5177('0x11'));var toCsv=require(_0x5177('0xa'));var querystring=require(_0x5177('0x12'));var Papa=require(_0x5177('0x13'));var Redis=require(_0x5177('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5177('0x15'));var hardwareService=require(_0x5177('0x16'));var logger=require(_0x5177('0x17'))(_0x5177('0x18'));var utils=require(_0x5177('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5177('0x1a'));var db=require(_0x5177('0x1b'))['db'];config[_0x5177('0x1c')]=_[_0x5177('0x1d')](config[_0x5177('0x1c')],{'host':_0x5177('0x1e'),'port':0x18eb});var socket=require(_0x5177('0x1f'))(new Redis(config[_0x5177('0x1c')]));require(_0x5177('0x20'))[_0x5177('0x21')](socket);function respondWithStatusCode(_0x41bef4,_0x2bf5bb){_0x2bf5bb=_0x2bf5bb||0xcc;return function(_0x29cd2c){if(_0x29cd2c){return _0x41bef4[_0x5177('0x22')](_0x2bf5bb);}return _0x41bef4[_0x5177('0x23')](_0x2bf5bb)[_0x5177('0x24')]();};}function respondWithResult(_0x2ab5e5,_0x7dba6f){_0x7dba6f=_0x7dba6f||0xc8;return function(_0xe6dcf6){if(_0xe6dcf6){return _0x2ab5e5['status'](_0x7dba6f)[_0x5177('0x25')](_0xe6dcf6);}};}function respondWithFilteredResult(_0x41e687,_0x3f5ab5){return function(_0x1b4102){if(_0x1b4102){var _0x5f5bd4=typeof _0x3f5ab5[_0x5177('0x26')]===_0x5177('0x27')&&typeof _0x3f5ab5[_0x5177('0x28')]==='undefined';var _0x86f5f8=_0x1b4102['count'];var _0xc2b2b5=_0x5f5bd4?0x0:_0x3f5ab5[_0x5177('0x26')];var _0x219744=_0x5f5bd4?_0x1b4102[_0x5177('0x29')]:_0x3f5ab5[_0x5177('0x26')]+_0x3f5ab5[_0x5177('0x28')];var _0x174c4f;if(_0x219744>=_0x86f5f8){_0x219744=_0x86f5f8;_0x174c4f=0xc8;}else{_0x174c4f=0xce;}_0x41e687[_0x5177('0x23')](_0x174c4f);return _0x41e687[_0x5177('0x2a')](_0x5177('0x2b'),_0xc2b2b5+'-'+_0x219744+'/'+_0x86f5f8)[_0x5177('0x25')](_0x1b4102);}return null;};}function patchUpdates(_0x3b0c37){return function(_0x5d9a9c){try{jsonpatch[_0x5177('0x2c')](_0x5d9a9c,_0x3b0c37,!![]);}catch(_0x556f96){return BPromise[_0x5177('0x2d')](_0x556f96);}return _0x5d9a9c[_0x5177('0x2e')]();};}function saveUpdates(_0x3b39b5,_0x2d51d0){return function(_0x4bc8e2){if(_0x4bc8e2){return _0x4bc8e2[_0x5177('0x2f')](_0x3b39b5)['then'](function(_0x564139){return _0x564139;});}return null;};}function removeEntity(_0x19a0c2,_0x15cb93){return function(_0x577bf7){if(_0x577bf7){return _0x577bf7[_0x5177('0x30')]()['then'](function(){_0x19a0c2[_0x5177('0x23')](0xcc)[_0x5177('0x24')]();});}};}function handleEntityNotFound(_0x58846c,_0x3e021a){return function(_0x2554ec){if(!_0x2554ec){_0x58846c[_0x5177('0x22')](0x194);}return _0x2554ec;};}function handleError(_0x7f86e,_0xe98ff1){_0xe98ff1=_0xe98ff1||0x1f4;return function(_0x1cef5d){logger['error'](_0x1cef5d['stack']);if(_0x1cef5d[_0x5177('0x31')]){delete _0x1cef5d[_0x5177('0x31')];}_0x7f86e[_0x5177('0x23')](_0xe98ff1)[_0x5177('0x32')](_0x1cef5d);};}exports[_0x5177('0x33')]=function(_0x8134f9,_0x31eb9f){var _0x72dced={},_0x49f6f1={},_0x42e1db={'count':0x0,'rows':[]};var _0x2233a2=_['map'](db[_0x5177('0x34')]['rawAttributes'],function(_0x172b36){return{'name':_0x172b36[_0x5177('0x35')],'type':_0x172b36[_0x5177('0x36')]['key']};});_0x49f6f1['model']=_[_0x5177('0x37')](_0x2233a2,_0x5177('0x31'));_0x49f6f1[_0x5177('0x38')]=_[_0x5177('0x39')](_0x8134f9[_0x5177('0x38')]);_0x49f6f1[_0x5177('0x3a')]=_[_0x5177('0x3b')](_0x49f6f1[_0x5177('0x3c')],_0x49f6f1['query']);_0x72dced[_0x5177('0x3d')]=_[_0x5177('0x3b')](_0x49f6f1['model'],qs[_0x5177('0x3e')](_0x8134f9[_0x5177('0x38')][_0x5177('0x3e')]));_0x72dced[_0x5177('0x3d')]=_0x72dced[_0x5177('0x3d')][_0x5177('0x3f')]?_0x72dced['attributes']:_0x49f6f1[_0x5177('0x3c')];if(!_0x8134f9[_0x5177('0x38')][_0x5177('0x40')](_0x5177('0x41'))){_0x72dced[_0x5177('0x28')]=qs[_0x5177('0x28')](_0x8134f9[_0x5177('0x38')]['limit']);_0x72dced[_0x5177('0x26')]=qs[_0x5177('0x26')](_0x8134f9['query']['offset']);}_0x72dced[_0x5177('0x42')]=qs[_0x5177('0x43')](_0x8134f9[_0x5177('0x38')][_0x5177('0x43')]);_0x72dced[_0x5177('0x44')]=qs[_0x5177('0x3a')](_[_0x5177('0x45')](_0x8134f9[_0x5177('0x38')],_0x49f6f1[_0x5177('0x3a')]),_0x2233a2);if(_0x8134f9[_0x5177('0x38')][_0x5177('0x46')]){_0x72dced[_0x5177('0x44')]=_[_0x5177('0x47')](_0x72dced['where'],{'$or':_[_0x5177('0x37')](_0x2233a2,function(_0x2a4db1){if(_0x2a4db1['type']!==_0x5177('0x48')){var _0x56f297={};_0x56f297[_0x2a4db1[_0x5177('0x31')]]={'$like':'%'+_0x8134f9[_0x5177('0x38')][_0x5177('0x46')]+'%'};return _0x56f297;}})});}_0x72dced=_['merge']({},_0x72dced,_0x8134f9['options']);var _0x210510={'where':_0x72dced[_0x5177('0x44')]};return db[_0x5177('0x34')][_0x5177('0x29')](_0x210510)[_0x5177('0x49')](function(_0x3e710d){_0x42e1db[_0x5177('0x29')]=_0x3e710d;if(_0x8134f9[_0x5177('0x38')]['includeAll']){_0x72dced[_0x5177('0x4a')]=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x72dced);})[_0x5177('0x49')](function(_0x17dc98){_0x42e1db['rows']=_0x17dc98;return _0x42e1db;})[_0x5177('0x49')](respondWithFilteredResult(_0x31eb9f,_0x72dced))['catch'](handleError(_0x31eb9f,null));};exports['show']=function(_0x46c833,_0x1769cd){var _0x262c71={'raw':![],'where':{'id':_0x46c833[_0x5177('0x4b')]['id']}},_0x3776b8={};_0x3776b8[_0x5177('0x3c')]=_[_0x5177('0x39')](db['UserProfile']['rawAttributes']);_0x3776b8[_0x5177('0x38')]=_['keys'](_0x46c833[_0x5177('0x38')]);_0x3776b8[_0x5177('0x3a')]=_[_0x5177('0x3b')](_0x3776b8[_0x5177('0x3c')],_0x3776b8['query']);_0x262c71[_0x5177('0x3d')]=_[_0x5177('0x3b')](_0x3776b8[_0x5177('0x3c')],qs[_0x5177('0x3e')](_0x46c833[_0x5177('0x38')][_0x5177('0x3e')]));_0x262c71[_0x5177('0x3d')]=_0x262c71[_0x5177('0x3d')][_0x5177('0x3f')]?_0x262c71[_0x5177('0x3d')]:_0x3776b8[_0x5177('0x3c')];if(_0x46c833['query'][_0x5177('0x4c')]){_0x262c71['include']=[{'all':!![]}];}_0x262c71=_['merge']({},_0x262c71,_0x46c833['options']);return db[_0x5177('0x34')][_0x5177('0x4d')](_0x262c71)['then'](handleEntityNotFound(_0x1769cd,null))[_0x5177('0x49')](respondWithResult(_0x1769cd,null))[_0x5177('0x4e')](handleError(_0x1769cd,null));};exports[_0x5177('0x4f')]=function(_0x4891fe,_0x1d4ae4){return db['UserProfile']['create'](_0x4891fe['body'],{})[_0x5177('0x49')](respondWithResult(_0x1d4ae4,0xc9))[_0x5177('0x4e')](handleError(_0x1d4ae4,null));};exports[_0x5177('0x50')]=function(_0x5a1f8b,_0x4e53e4){var _0x42b827={'where':{'id':_0x5a1f8b[_0x5177('0x4b')]['id']}},_0x5be355={};_0x5be355[_0x5177('0x3c')]=_[_0x5177('0x39')](db[_0x5177('0x34')][_0x5177('0x51')]);_0x42b827[_0x5177('0x3d')]=_[_0x5177('0x3b')](_0x5be355[_0x5177('0x3c')],qs[_0x5177('0x3e')](_0x5a1f8b[_0x5177('0x38')][_0x5177('0x3e')]));_0x42b827[_0x5177('0x3d')]=_0x42b827[_0x5177('0x3d')]['length']?_0x42b827['attributes']:_0x5be355[_0x5177('0x3c')];if(_0x5a1f8b['query'][_0x5177('0x4c')]){_0x42b827['include']=[{'all':!![]}];}_0x42b827=_[_0x5177('0x47')]({},_0x42b827,_0x5a1f8b[_0x5177('0x52')]);return db[_0x5177('0x34')]['find'](_0x42b827)['then'](handleEntityNotFound(_0x4e53e4,null))[_0x5177('0x49')](function(_0x43b5b9){if(_0x43b5b9){var _0x2eb560=_0x43b5b9[_0x5177('0x53')]({'plain':!![]});_0x2eb560=qs['omit'](_0x2eb560,['id','createdAt',_0x5177('0x54'),_0x5177('0x55')]);_0x5a1f8b[_0x5177('0x56')]=_[_0x5177('0x57')](_0x5a1f8b['body'],['id',_0x5177('0x58'),_0x5177('0x54')]);return db[_0x5177('0x59')]['transaction'](function(_0x2b39ba){return db[_0x5177('0x34')][_0x5177('0x4f')](_['merge'](_0x2eb560,_0x5a1f8b[_0x5177('0x56')]),{'include':_0x5a1f8b['query'][_0x5177('0x4c')]?[{'all':!![]}]:undefined,'transaction':_0x2b39ba})[_0x5177('0x49')](function(_0x3268bd){var _0x5101fc=_0x3268bd[_0x5177('0x53')]({'plain':!![]});return db[_0x5177('0x5a')][_0x5177('0x5b')]({'where':{'userProfileId':_0x5a1f8b[_0x5177('0x4b')]['id']},'raw':!![]})[_0x5177('0x49')](function(_0x74589e){if(_0x74589e){return BPromise[_0x5177('0x5c')](_0x74589e,function(_0x267599){return new BPromise(function(_0x5ceed2,_0x5d96ce){if(_0x267599['autoAssociation']===null||_0x267599[_0x5177('0x5d')]===0x1)_0x5ceed2(null);return db[_0x5177('0x5e')][_0x5177('0x5b')]({'where':{'sectionId':_0x267599['id']},'raw':!![]})[_0x5177('0x49')](function(_0x2472e9){var _0x62a68a=_['map'](_0x2472e9,function(_0x523531){return qs[_0x5177('0x57')](_0x523531,['id',_0x5177('0x58'),_0x5177('0x54'),_0x5177('0x5f')]);});_0x5ceed2(_0x62a68a);})[_0x5177('0x4e')](function(_0x1b1778){_0x5d96ce(_0x1b1778);});})[_0x5177('0x49')](function(_0xd9c1db){var _0xbfb3d7=qs['omit'](_0x267599,['id',_0x5177('0x58'),_0x5177('0x54')]);_0xbfb3d7['userProfileId']=_0x5101fc['id'];if(_0xd9c1db)_0xbfb3d7[_0x5177('0x60')]=_0xd9c1db;return _0xbfb3d7;})[_0x5177('0x49')](function(_0x4edebc){return db[_0x5177('0x5a')][_0x5177('0x4f')](_0x4edebc,{'include':[{'model':db[_0x5177('0x5e')],'as':'Resources'}],'raw':!![],'transaction':_0x2b39ba});});})[_0x5177('0x49')](function(){return _0x5101fc;});}});});});}})[_0x5177('0x49')](respondWithResult(_0x4e53e4,0xc9))['catch'](handleError(_0x4e53e4,null));};exports['update']=function(_0x102c27,_0x4f76d7){if(_0x102c27[_0x5177('0x56')]['id']){delete _0x102c27['body']['id'];}return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x102c27['params']['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x4f76d7,null))[_0x5177('0x49')](saveUpdates(_0x102c27[_0x5177('0x56')],null))[_0x5177('0x49')](respondWithResult(_0x4f76d7,null))[_0x5177('0x4e')](handleError(_0x4f76d7,null));};exports[_0x5177('0x30')]=function(_0x20d476,_0x58ebdd){return db[_0x5177('0x34')]['find']({'where':{'id':_0x20d476['params']['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x58ebdd,null))[_0x5177('0x49')](removeEntity(_0x58ebdd,null))['catch'](handleError(_0x58ebdd,null));};exports[_0x5177('0x61')]=function(_0xa889bd,_0x43abdd){return db[_0x5177('0x34')][_0x5177('0x61')]()[_0x5177('0x49')](respondWithResult(_0x43abdd,null))[_0x5177('0x4e')](handleError(_0x43abdd,null));};exports[_0x5177('0x62')]=function(_0x478d5e,_0x54b28f){var _0xee5f8b=_0x478d5e[_0x5177('0x56')];return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x478d5e[_0x5177('0x4b')]['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x54b28f,null))['then'](function(_0x3692b2){if(_0x3692b2){return db[_0x5177('0x59')][_0x5177('0x63')](function(_0x46d72e){return db['UserProfileSection'][_0x5177('0x30')]({'where':{'userProfileId':_0x478d5e[_0x5177('0x4b')]['id'],'sectionId':_[_0x5177('0x37')](_0xee5f8b,function(_0x22da9d){return _0x22da9d[_0x5177('0x5f')];})},'transaction':_0x46d72e})['then'](function(){var _0x2734fc=_['map'](_0xee5f8b,function(_0x1a6499){_0x1a6499[_0x5177('0x64')]=_0x478d5e['params']['id'];return _0x1a6499;});var _0x67d605=[];return BPromise[_0x5177('0x5c')](_0x2734fc,function(_0x367784){return db[_0x5177('0x5a')]['create'](_0x367784,{'include':[{'model':db[_0x5177('0x5e')],'as':_0x5177('0x60')}],'raw':!![],'transaction':_0x46d72e})[_0x5177('0x49')](function(_0x20fc85){_0x67d605['push'](_0x20fc85[_0x5177('0x53')]({'plain':!![]}));});})[_0x5177('0x49')](function(){return _0x67d605;});});});}})[_0x5177('0x49')](function(_0x4c8a15){return _0x4c8a15;})['then'](respondWithResult(_0x54b28f,null))[_0x5177('0x4e')](handleError(_0x54b28f,null));};exports[_0x5177('0x65')]=function(_0x3f42a5,_0x170e25){var _0xb2aca2;return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x3f42a5[_0x5177('0x4b')]['id']},'attributes':['id',_0x5177('0x31')]})['then'](handleEntityNotFound(_0x170e25,null))['then'](function(_0x597a84){if(_0x597a84){_0xb2aca2=_0x597a84;return db[_0x5177('0x5a')]['destroy']({'where':{'userProfileId':_0x3f42a5[_0x5177('0x4b')]['id'],'sectionId':_0x3f42a5[_0x5177('0x38')][_0x5177('0x66')]}});}})[_0x5177('0x49')](function(){return _0xb2aca2;})[_0x5177('0x49')](respondWithStatusCode(_0x170e25,null))['catch'](handleError(_0x170e25,null));};exports[_0x5177('0x67')]=function(_0x10247,_0x41a7fa){var _0x4fce32=[];var _0x3d845e=[];return db['UserProfileSection'][_0x5177('0x5b')]({'where':{'userProfileId':_0x10247[_0x5177('0x4b')]['id']},'raw':!![]})['then'](function(_0xe5a705){_0x4fce32=_[_0x5177('0x46')](_0xe5a705,function(_0x53ccd8){return _0x53ccd8['enabled']===0x1||_[_0x5177('0x68')]([0x3eb,0x709],_0x53ccd8['sectionId']);});if(!_[_0x5177('0x69')](_0x4fce32)){return _[_0x5177('0x37')](_0x4fce32,function(_0x5a9bc8){return _0x5a9bc8[_0x5177('0x5f')];});}else{return;}})[_0x5177('0x49')](function(_0xcbbb73){if(_0xcbbb73)_0x3d845e=_0xcbbb73;if(_[_0x5177('0x68')](_0x3d845e,0x64)){var _0x43a584=_[_0x5177('0x4d')](_0x4fce32,{'sectionId':0x64});return hasDefaultDashboard(_0x43a584)[_0x5177('0x49')](function(_0x10b062){return _['map'](_0x4fce32,function(_0x2c9025){if(_0x2c9025['sectionId']===0x64){_0x2c9025[_0x5177('0x6a')]=_0x10b062;}return _0x2c9025;});});}else{return;}})[_0x5177('0x49')](function(_0x46d726){if(_0x46d726)_0x4fce32=_0x46d726;if(_[_0x5177('0x68')](_0x3d845e,0x3eb)){var _0x4ea67b=_[_0x5177('0x4d')](_0x4fce32,{'sectionId':0x3eb});return getCustomDashboards(_0x4ea67b)[_0x5177('0x49')](function(_0x52f8ca){return _[_0x5177('0x37')](_0x4fce32,function(_0x30c2dc){if(_0x4ea67b['enabled']){if(_0x30c2dc[_0x5177('0x5f')]===0x3eb){_0x30c2dc['subsections']=_0x52f8ca;}}else{if(_0x30c2dc[_0x5177('0x5f')]===0x64){_0x30c2dc['subsections']=_0x52f8ca;}}return _0x30c2dc;});});}else{return;}})['then'](function(_0x5cd8a1){if(_0x5cd8a1)_0x4fce32=_0x5cd8a1;if(_[_0x5177('0x68')](_0x3d845e,0x709)){var _0x348da7=_[_0x5177('0x4d')](_0x4fce32,{'sectionId':0x709});return getPlugins(_0x348da7)['then'](function(_0x34f74c){if(_0x348da7[_0x5177('0x6b')]){return _[_0x5177('0x37')](_0x4fce32,function(_0x3b68b2){if(_0x3b68b2[_0x5177('0x5f')]===0x709){_0x3b68b2['subsections']=_0x34f74c;}return _0x3b68b2;});}else{var _0x346d91={'sectionId':0x76c,'enabled':0x1,'subsections':_0x34f74c};var _0x1dccb4=_['map'](_0x4fce32);_0x1dccb4[_0x5177('0x6c')](_0x346d91);return _0x1dccb4;}});}else{return;}})['then'](function(_0x5b8953){if(_0x5b8953)_0x4fce32=_0x5b8953;return _['filter'](_0x4fce32,[_0x5177('0x6b'),0x1]);})[_0x5177('0x49')](respondWithResult(_0x41a7fa,null))[_0x5177('0x4e')](handleError(_0x41a7fa,null));};function hasDefaultDashboard(_0x11cce2){var _0x3447b9=[0x65];return new BPromise(function(_0x2d4619,_0x4ba911){try{if(_0x11cce2['autoAssociation']){_0x2d4619(_0x3447b9);}else{return db[_0x5177('0x5e')][_0x5177('0x6d')]({'where':{'sectionId':_0x11cce2['id']},'raw':!![]})[_0x5177('0x49')](function(_0x550197){_0x550197?_0x2d4619(_0x3447b9):_0x2d4619();});}}catch(_0x405b03){_0x4ba911(_0x405b03);}});}function getCustomDashboards(_0x2f2939){var _0x4ee41d=[];return new BPromise(function(_0x43e2ee,_0x568174){try{if(_0x2f2939[_0x5177('0x5d')]){return db[_0x5177('0x6e')][_0x5177('0x5b')]({'raw':!![]})['then'](function(_0x33b82b){_0x33b82b['forEach'](function(_0x11dbd1){_0x4ee41d[_0x5177('0x6c')](_0x11dbd1['id']+0x1869f);});_0x43e2ee(_0x4ee41d);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x2f2939['id']},'raw':!![]})['then'](function(_0x249b0f){_0x249b0f['forEach'](function(_0x34b17e){_0x4ee41d[_0x5177('0x6c')](_0x34b17e[_0x5177('0x6f')]+0x1869f);});_0x43e2ee(_0x4ee41d);});}}catch(_0x57adf4){_0x568174(_0x57adf4);}});}function getPlugins(_0x5e4963){var _0x5e870f=[];return new BPromise(function(_0x10ad1c,_0x3a9b08){try{if(_0x5e4963[_0x5177('0x5d')]){return db['Plugin'][_0x5177('0x5b')]({'raw':!![]})[_0x5177('0x49')](function(_0x5225a4){_0x5225a4[_0x5177('0x70')](function(_0x526459){_0x5e870f[_0x5177('0x6c')](_0x526459['id']+0x15b38);});_0x10ad1c(_0x5e870f);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x5e4963['id']},'raw':!![]})['then'](function(_0x3940dd){_0x3940dd['forEach'](function(_0x16426e){_0x5e870f[_0x5177('0x6c')](_0x16426e[_0x5177('0x6f')]+0x15b38);});_0x10ad1c(_0x5e870f);});}}catch(_0x1372ad){_0x3a9b08(_0x1372ad);}});}exports[_0x5177('0x71')]=function(_0x197377,_0x580d34){return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x197377['params']['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x580d34,null))[_0x5177('0x49')](function(_0x1e64fa){if(_0x1e64fa){return db['sequelize']['transaction'](function(_0x5de7f4){return db[_0x5177('0x5a')][_0x5177('0x5b')]({'where':{'userProfileId':_0x197377[_0x5177('0x4b')]['id']},'attributes':['id'],'raw':!![]})[_0x5177('0x49')](function(_0x10dc41){if(_0x10dc41){return db[_0x5177('0x5a')][_0x5177('0x30')]({'where':{'userProfileId':_0x197377[_0x5177('0x4b')]['id'],'id':_[_0x5177('0x37')](_0x10dc41,function(_0x107705){return _0x107705['id'];})},'transaction':_0x5de7f4});}})[_0x5177('0x49')](function(_0x39f1db){var _0x59930d=_[_0x5177('0x37')](_0x197377['body'],function(_0x2f254e){_0x2f254e[_0x5177('0x64')]=_0x197377[_0x5177('0x4b')]['id'];return _0x2f254e;});return db['UserProfileSection'][_0x5177('0x72')](_0x59930d,{'raw':!![],'transaction':_0x5de7f4});})[_0x5177('0x49')](function(_0x3867c9){var _0x221a4e=_[_0x5177('0x46')](_[_0x5177('0x37')](_0x3867c9,function(_0x2c9c12){return _0x2c9c12[_0x5177('0x53')]({'plain':!![]});}),{'includeAll':![]});if(_0x221a4e){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x197377[_0x5177('0x4b')]['id'],'sectionId':_['map'](_0x221a4e,function(_0x2e8e26){return _0x2e8e26[_0x5177('0x5f')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x5177('0x49')](function(_0x1fb680){var _0x54efd0=_[_0x5177('0x37')](_0x197377[_0x5177('0x56')],function(_0x2458a9){_0x2458a9[_0x5177('0x64')]=_0x197377[_0x5177('0x4b')]['id'];return _0x2458a9;});return db[_0x5177('0x5e')][_0x5177('0x72')](_0x54efd0,{'raw':!![],'transaction':_0x5de7f4});});}})[_0x5177('0x4e')](handleError(_0x580d34,null));});}})[_0x5177('0x49')](function(_0x8c0153){var _0x3cd09d=_[_0x5177('0x37')](_0x8c0153,function(_0xf2635c){return _0xf2635c['get']({'plain':!![]});});})[_0x5177('0x49')](respondWithResult(_0x580d34,null))[_0x5177('0x4e')](handleError(_0x580d34,null));};exports[_0x5177('0x73')]=function(_0x4e5ee8,_0x363010,_0xa08446){return db['UserProfile'][_0x5177('0x4d')]({'where':{'id':_0x4e5ee8['params']['id']}})['then'](handleEntityNotFound(_0x363010,null))[_0x5177('0x49')](function(_0x1eaea0){if(_0x1eaea0){return _0x1eaea0[_0x5177('0x73')](_0x4e5ee8[_0x5177('0x38')][_0x5177('0x66')]);}})[_0x5177('0x49')](respondWithStatusCode(_0x363010,null))['catch'](handleError(_0x363010,null));};exports[_0x5177('0x74')]=function(_0xcb831c,_0x48c814){var _0x1aa8ca={};if(!_0xcb831c[_0x5177('0x38')][_0x5177('0x75')])throw new Error(_0x5177('0x76'));if(!_0xcb831c[_0x5177('0x38')][_0x5177('0x40')](_0x5177('0x41'))){_0x1aa8ca[_0x5177('0x28')]=qs['limit'](_0xcb831c[_0x5177('0x38')]['limit']);_0x1aa8ca[_0x5177('0x26')]=qs['offset'](_0xcb831c[_0x5177('0x38')][_0x5177('0x26')]);}return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0xcb831c['params']['id']}})[_0x5177('0x49')](function(_0x1b7c52){if(!_0x1b7c52)throw new Error(_0x5177('0x77')+_0xcb831c[_0x5177('0x4b')]['id']);return db['UserProfile']['getResources'](_0xcb831c);})['then'](respondWithFilteredResult(_0x48c814,_0x1aa8ca))['catch'](handleError(_0x48c814,null));};
\ No newline at end of file
+var _0x6b1b=['map','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','catch','clone','omit','createdAt','sequelize','transaction','get','each','autoAssociation','UserProfileResource','updatedAt','sectionId','UserProfileSection','update','destroy','describe','addSections','userProfileId','push','ids','getSections','enabled','includes','isEmpty','subsections','findOne','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','json','undefined','limit','count','offset','apply','reject','save','then','end','error','name','send','index','UserProfile','rawAttributes','fieldName','type','key','model'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x6b1b,0x1e7));var _0xb6b1=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x6b1b[_0x13ea00];return _0x1f7347;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb6b1('0x0'));var zipdir=require(_0xb6b1('0x1'));var jsonpatch=require(_0xb6b1('0x2'));var rp=require('request-promise');var moment=require(_0xb6b1('0x3'));var BPromise=require(_0xb6b1('0x4'));var Mustache=require(_0xb6b1('0x5'));var util=require(_0xb6b1('0x6'));var path=require(_0xb6b1('0x7'));var sox=require(_0xb6b1('0x8'));var csv=require(_0xb6b1('0x9'));var ejs=require(_0xb6b1('0xa'));var fs=require('fs');var fs_extra=require(_0xb6b1('0xb'));var _=require(_0xb6b1('0xc'));var squel=require(_0xb6b1('0xd'));var crypto=require('crypto');var jsforce=require(_0xb6b1('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb6b1('0xf'));var Papa=require('papaparse');var Redis=require(_0xb6b1('0x10'));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(_0xb6b1('0x11'))(_0xb6b1('0x12'));var utils=require('../../config/utils');var config=require(_0xb6b1('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xb6b1('0x14')]=_[_0xb6b1('0x15')](config[_0xb6b1('0x14')],{'host':_0xb6b1('0x16'),'port':0x18eb});var socket=require(_0xb6b1('0x17'))(new Redis(config[_0xb6b1('0x14')]));require(_0xb6b1('0x18'))[_0xb6b1('0x19')](socket);function respondWithStatusCode(_0x2a4d72,_0x218c98){_0x218c98=_0x218c98||0xcc;return function(_0x2629db){if(_0x2629db){return _0x2a4d72[_0xb6b1('0x1a')](_0x218c98);}return _0x2a4d72['status'](_0x218c98)['end']();};}function respondWithResult(_0x513207,_0x51f25f){_0x51f25f=_0x51f25f||0xc8;return function(_0xee229d){if(_0xee229d){return _0x513207[_0xb6b1('0x1b')](_0x51f25f)[_0xb6b1('0x1c')](_0xee229d);}};}function respondWithFilteredResult(_0x2b72e5,_0x32e395){return function(_0x51fb33){if(_0x51fb33){var _0x47a204=typeof _0x32e395['offset']===_0xb6b1('0x1d')&&typeof _0x32e395[_0xb6b1('0x1e')]===_0xb6b1('0x1d');var _0x11e8ae=_0x51fb33[_0xb6b1('0x1f')];var _0x3fc9b1=_0x47a204?0x0:_0x32e395['offset'];var _0x4e132a=_0x47a204?_0x51fb33[_0xb6b1('0x1f')]:_0x32e395[_0xb6b1('0x20')]+_0x32e395['limit'];var _0x5ced4c;if(_0x4e132a>=_0x11e8ae){_0x4e132a=_0x11e8ae;_0x5ced4c=0xc8;}else{_0x5ced4c=0xce;}_0x2b72e5[_0xb6b1('0x1b')](_0x5ced4c);return _0x2b72e5['set']('Content-Range',_0x3fc9b1+'-'+_0x4e132a+'/'+_0x11e8ae)[_0xb6b1('0x1c')](_0x51fb33);}return null;};}function patchUpdates(_0x2086ea){return function(_0x36ac63){try{jsonpatch[_0xb6b1('0x21')](_0x36ac63,_0x2086ea,!![]);}catch(_0x164952){return BPromise[_0xb6b1('0x22')](_0x164952);}return _0x36ac63[_0xb6b1('0x23')]();};}function saveUpdates(_0x3b1ff7,_0x472585){return function(_0x20066f){if(_0x20066f){return _0x20066f['update'](_0x3b1ff7)[_0xb6b1('0x24')](function(_0x4f1e2e){return _0x4f1e2e;});}return null;};}function removeEntity(_0xd8e094,_0x5864d6){return function(_0xdbcb77){if(_0xdbcb77){return _0xdbcb77['destroy']()[_0xb6b1('0x24')](function(){_0xd8e094[_0xb6b1('0x1b')](0xcc)[_0xb6b1('0x25')]();});}};}function handleEntityNotFound(_0x178401,_0x13e841){return function(_0x188627){if(!_0x188627){_0x178401[_0xb6b1('0x1a')](0x194);}return _0x188627;};}function handleError(_0xd3c6da,_0x1a16ad){_0x1a16ad=_0x1a16ad||0x1f4;return function(_0x5a523c){logger[_0xb6b1('0x26')](_0x5a523c['stack']);if(_0x5a523c[_0xb6b1('0x27')]){delete _0x5a523c[_0xb6b1('0x27')];}_0xd3c6da[_0xb6b1('0x1b')](_0x1a16ad)[_0xb6b1('0x28')](_0x5a523c);};}exports[_0xb6b1('0x29')]=function(_0x12f369,_0x206b7f){var _0x59094f={},_0x427797={},_0x2ccd37={'count':0x0,'rows':[]};var _0x1791a2=_['map'](db[_0xb6b1('0x2a')][_0xb6b1('0x2b')],function(_0x5ed56c){return{'name':_0x5ed56c[_0xb6b1('0x2c')],'type':_0x5ed56c[_0xb6b1('0x2d')][_0xb6b1('0x2e')]};});_0x427797[_0xb6b1('0x2f')]=_[_0xb6b1('0x30')](_0x1791a2,_0xb6b1('0x27'));_0x427797['query']=_[_0xb6b1('0x31')](_0x12f369[_0xb6b1('0x32')]);_0x427797['filters']=_[_0xb6b1('0x33')](_0x427797['model'],_0x427797[_0xb6b1('0x32')]);_0x59094f[_0xb6b1('0x34')]=_[_0xb6b1('0x33')](_0x427797[_0xb6b1('0x2f')],qs[_0xb6b1('0x35')](_0x12f369[_0xb6b1('0x32')]['fields']));_0x59094f[_0xb6b1('0x34')]=_0x59094f[_0xb6b1('0x34')][_0xb6b1('0x36')]?_0x59094f[_0xb6b1('0x34')]:_0x427797['model'];if(!_0x12f369['query']['hasOwnProperty'](_0xb6b1('0x37'))){_0x59094f[_0xb6b1('0x1e')]=qs[_0xb6b1('0x1e')](_0x12f369[_0xb6b1('0x32')][_0xb6b1('0x1e')]);_0x59094f[_0xb6b1('0x20')]=qs[_0xb6b1('0x20')](_0x12f369[_0xb6b1('0x32')][_0xb6b1('0x20')]);}_0x59094f[_0xb6b1('0x38')]=qs[_0xb6b1('0x39')](_0x12f369[_0xb6b1('0x32')]['sort']);_0x59094f[_0xb6b1('0x3a')]=qs[_0xb6b1('0x3b')](_[_0xb6b1('0x3c')](_0x12f369[_0xb6b1('0x32')],_0x427797[_0xb6b1('0x3b')]),_0x1791a2);if(_0x12f369[_0xb6b1('0x32')][_0xb6b1('0x3d')]){_0x59094f[_0xb6b1('0x3a')]=_[_0xb6b1('0x3e')](_0x59094f[_0xb6b1('0x3a')],{'$or':_[_0xb6b1('0x30')](_0x1791a2,function(_0x56470a){if(_0x56470a[_0xb6b1('0x2d')]!==_0xb6b1('0x3f')){var _0x3090ac={};_0x3090ac[_0x56470a[_0xb6b1('0x27')]]={'$like':'%'+_0x12f369[_0xb6b1('0x32')][_0xb6b1('0x3d')]+'%'};return _0x3090ac;}})});}_0x59094f=_[_0xb6b1('0x3e')]({},_0x59094f,_0x12f369[_0xb6b1('0x40')]);var _0x51e68c={'where':_0x59094f['where']};return db[_0xb6b1('0x2a')][_0xb6b1('0x1f')](_0x51e68c)[_0xb6b1('0x24')](function(_0x541eb5){_0x2ccd37[_0xb6b1('0x1f')]=_0x541eb5;if(_0x12f369[_0xb6b1('0x32')][_0xb6b1('0x41')]){_0x59094f[_0xb6b1('0x42')]=[{'all':!![]}];}return db[_0xb6b1('0x2a')][_0xb6b1('0x43')](_0x59094f);})[_0xb6b1('0x24')](function(_0x339edf){_0x2ccd37['rows']=_0x339edf;return _0x2ccd37;})[_0xb6b1('0x24')](respondWithFilteredResult(_0x206b7f,_0x59094f))['catch'](handleError(_0x206b7f,null));};exports[_0xb6b1('0x44')]=function(_0x23b85b,_0x11cc74){var _0x3ef3bf={'raw':![],'where':{'id':_0x23b85b[_0xb6b1('0x45')]['id']}},_0x2911b0={};_0x2911b0['model']=_[_0xb6b1('0x31')](db[_0xb6b1('0x2a')]['rawAttributes']);_0x2911b0[_0xb6b1('0x32')]=_['keys'](_0x23b85b[_0xb6b1('0x32')]);_0x2911b0[_0xb6b1('0x3b')]=_[_0xb6b1('0x33')](_0x2911b0[_0xb6b1('0x2f')],_0x2911b0[_0xb6b1('0x32')]);_0x3ef3bf[_0xb6b1('0x34')]=_[_0xb6b1('0x33')](_0x2911b0[_0xb6b1('0x2f')],qs[_0xb6b1('0x35')](_0x23b85b['query']['fields']));_0x3ef3bf[_0xb6b1('0x34')]=_0x3ef3bf[_0xb6b1('0x34')]['length']?_0x3ef3bf[_0xb6b1('0x34')]:_0x2911b0[_0xb6b1('0x2f')];if(_0x23b85b[_0xb6b1('0x32')][_0xb6b1('0x41')]){_0x3ef3bf[_0xb6b1('0x42')]=[{'all':!![]}];}_0x3ef3bf=_['merge']({},_0x3ef3bf,_0x23b85b[_0xb6b1('0x40')]);return db[_0xb6b1('0x2a')][_0xb6b1('0x46')](_0x3ef3bf)[_0xb6b1('0x24')](handleEntityNotFound(_0x11cc74,null))['then'](respondWithResult(_0x11cc74,null))['catch'](handleError(_0x11cc74,null));};exports[_0xb6b1('0x47')]=function(_0x5bd5e9,_0x2be9e7){return db[_0xb6b1('0x2a')]['create'](_0x5bd5e9[_0xb6b1('0x48')],{})['then'](respondWithResult(_0x2be9e7,0xc9))[_0xb6b1('0x49')](handleError(_0x2be9e7,null));};exports[_0xb6b1('0x4a')]=function(_0xbd7cec,_0x1b41bb){var _0x3019f1={'where':{'id':_0xbd7cec[_0xb6b1('0x45')]['id']}},_0xc63bf5={};_0xc63bf5[_0xb6b1('0x2f')]=_[_0xb6b1('0x31')](db[_0xb6b1('0x2a')]['rawAttributes']);_0x3019f1[_0xb6b1('0x34')]=_[_0xb6b1('0x33')](_0xc63bf5[_0xb6b1('0x2f')],qs[_0xb6b1('0x35')](_0xbd7cec[_0xb6b1('0x32')][_0xb6b1('0x35')]));_0x3019f1[_0xb6b1('0x34')]=_0x3019f1[_0xb6b1('0x34')][_0xb6b1('0x36')]?_0x3019f1['attributes']:_0xc63bf5[_0xb6b1('0x2f')];if(_0xbd7cec['query']['includeAll']){_0x3019f1[_0xb6b1('0x42')]=[{'all':!![]}];}_0x3019f1=_[_0xb6b1('0x3e')]({},_0x3019f1,_0xbd7cec['options']);return db[_0xb6b1('0x2a')][_0xb6b1('0x46')](_0x3019f1)[_0xb6b1('0x24')](handleEntityNotFound(_0x1b41bb,null))['then'](function(_0xec473f){if(_0xec473f){var _0x549e26=_0xec473f['get']({'plain':!![]});_0x549e26=qs[_0xb6b1('0x4b')](_0x549e26,['id',_0xb6b1('0x4c'),'updatedAt','crudPermissions']);_0xbd7cec['body']=_[_0xb6b1('0x4b')](_0xbd7cec['body'],['id','createdAt','updatedAt']);return db[_0xb6b1('0x4d')][_0xb6b1('0x4e')](function(_0x15aefa){return db[_0xb6b1('0x2a')][_0xb6b1('0x47')](_[_0xb6b1('0x3e')](_0x549e26,_0xbd7cec['body']),{'include':_0xbd7cec[_0xb6b1('0x32')][_0xb6b1('0x41')]?[{'all':!![]}]:undefined,'transaction':_0x15aefa})['then'](function(_0x5cf2bf){var _0x47180=_0x5cf2bf[_0xb6b1('0x4f')]({'plain':!![]});return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0xbd7cec[_0xb6b1('0x45')]['id']},'raw':!![]})['then'](function(_0x463482){if(_0x463482){return BPromise[_0xb6b1('0x50')](_0x463482,function(_0x4a07ed){return new BPromise(function(_0x14add3,_0x30f8e5){if(_0x4a07ed[_0xb6b1('0x51')]===null||_0x4a07ed[_0xb6b1('0x51')]===0x1)_0x14add3(null);return db[_0xb6b1('0x52')][_0xb6b1('0x43')]({'where':{'sectionId':_0x4a07ed['id']},'raw':!![]})[_0xb6b1('0x24')](function(_0x35aae0){var _0x10ef87=_[_0xb6b1('0x30')](_0x35aae0,function(_0x4de50b){return qs[_0xb6b1('0x4b')](_0x4de50b,['id',_0xb6b1('0x4c'),_0xb6b1('0x53'),_0xb6b1('0x54')]);});_0x14add3(_0x10ef87);})['catch'](function(_0x431dd9){_0x30f8e5(_0x431dd9);});})[_0xb6b1('0x24')](function(_0x2da39e){var _0xa150da=qs[_0xb6b1('0x4b')](_0x4a07ed,['id',_0xb6b1('0x4c'),_0xb6b1('0x53')]);_0xa150da['userProfileId']=_0x47180['id'];if(_0x2da39e)_0xa150da['Resources']=_0x2da39e;return _0xa150da;})[_0xb6b1('0x24')](function(_0x51c2ed){return db[_0xb6b1('0x55')][_0xb6b1('0x47')](_0x51c2ed,{'include':[{'model':db[_0xb6b1('0x52')],'as':'Resources'}],'raw':!![],'transaction':_0x15aefa});});})[_0xb6b1('0x24')](function(){return _0x47180;});}});});});}})[_0xb6b1('0x24')](respondWithResult(_0x1b41bb,0xc9))[_0xb6b1('0x49')](handleError(_0x1b41bb,null));};exports[_0xb6b1('0x56')]=function(_0x463112,_0x48791c){if(_0x463112['body']['id']){delete _0x463112[_0xb6b1('0x48')]['id'];}return db[_0xb6b1('0x2a')][_0xb6b1('0x46')]({'where':{'id':_0x463112[_0xb6b1('0x45')]['id']}})[_0xb6b1('0x24')](handleEntityNotFound(_0x48791c,null))[_0xb6b1('0x24')](saveUpdates(_0x463112[_0xb6b1('0x48')],null))[_0xb6b1('0x24')](respondWithResult(_0x48791c,null))[_0xb6b1('0x49')](handleError(_0x48791c,null));};exports[_0xb6b1('0x57')]=function(_0x1d6a5a,_0xd4f074){return db['UserProfile'][_0xb6b1('0x46')]({'where':{'id':_0x1d6a5a['params']['id']}})[_0xb6b1('0x24')](handleEntityNotFound(_0xd4f074,null))[_0xb6b1('0x24')](removeEntity(_0xd4f074,null))[_0xb6b1('0x49')](handleError(_0xd4f074,null));};exports['describe']=function(_0x2239b2,_0x4c795a){return db['UserProfile'][_0xb6b1('0x58')]()['then'](respondWithResult(_0x4c795a,null))[_0xb6b1('0x49')](handleError(_0x4c795a,null));};exports[_0xb6b1('0x59')]=function(_0x509667,_0x2780b0){var _0x58fddf=_0x509667[_0xb6b1('0x48')];return db[_0xb6b1('0x2a')][_0xb6b1('0x46')]({'where':{'id':_0x509667['params']['id']}})[_0xb6b1('0x24')](handleEntityNotFound(_0x2780b0,null))['then'](function(_0x20f2f2){if(_0x20f2f2){return db[_0xb6b1('0x4d')][_0xb6b1('0x4e')](function(_0xa740a5){return db['UserProfileSection'][_0xb6b1('0x57')]({'where':{'userProfileId':_0x509667[_0xb6b1('0x45')]['id'],'sectionId':_[_0xb6b1('0x30')](_0x58fddf,function(_0xb611fa){return _0xb611fa[_0xb6b1('0x54')];})},'transaction':_0xa740a5})[_0xb6b1('0x24')](function(){var _0x5e3014=_[_0xb6b1('0x30')](_0x58fddf,function(_0x26fbd8){_0x26fbd8[_0xb6b1('0x5a')]=_0x509667[_0xb6b1('0x45')]['id'];return _0x26fbd8;});var _0x52010b=[];return BPromise[_0xb6b1('0x50')](_0x5e3014,function(_0x1c4bde){return db['UserProfileSection']['create'](_0x1c4bde,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0xa740a5})[_0xb6b1('0x24')](function(_0x439b23){_0x52010b[_0xb6b1('0x5b')](_0x439b23[_0xb6b1('0x4f')]({'plain':!![]}));});})[_0xb6b1('0x24')](function(){return _0x52010b;});});});}})[_0xb6b1('0x24')](function(_0x31b0df){return _0x31b0df;})['then'](respondWithResult(_0x2780b0,null))[_0xb6b1('0x49')](handleError(_0x2780b0,null));};exports['removeSections']=function(_0x49be58,_0x15a64f){var _0x28213e;return db['UserProfile'][_0xb6b1('0x46')]({'where':{'id':_0x49be58[_0xb6b1('0x45')]['id']},'attributes':['id',_0xb6b1('0x27')]})[_0xb6b1('0x24')](handleEntityNotFound(_0x15a64f,null))[_0xb6b1('0x24')](function(_0x5516c7){if(_0x5516c7){_0x28213e=_0x5516c7;return db[_0xb6b1('0x55')][_0xb6b1('0x57')]({'where':{'userProfileId':_0x49be58['params']['id'],'sectionId':_0x49be58['query'][_0xb6b1('0x5c')]}});}})[_0xb6b1('0x24')](function(){return _0x28213e;})[_0xb6b1('0x24')](respondWithStatusCode(_0x15a64f,null))[_0xb6b1('0x49')](handleError(_0x15a64f,null));};exports[_0xb6b1('0x5d')]=function(_0x28860e,_0x17b225){var _0x1c7f8b=[];var _0x4189ec=[];return db['UserProfileSection'][_0xb6b1('0x43')]({'where':{'userProfileId':_0x28860e['params']['id']},'raw':!![]})[_0xb6b1('0x24')](function(_0x3fa8e3){_0x1c7f8b=_[_0xb6b1('0x3d')](_0x3fa8e3,function(_0x500945){return _0x500945[_0xb6b1('0x5e')]===0x1||_[_0xb6b1('0x5f')]([0x3eb,0x709],_0x500945['sectionId']);});if(!_[_0xb6b1('0x60')](_0x1c7f8b)){return _[_0xb6b1('0x30')](_0x1c7f8b,function(_0x4c79dc){return _0x4c79dc[_0xb6b1('0x54')];});}else{return;}})['then'](function(_0x95c84b){if(_0x95c84b)_0x4189ec=_0x95c84b;if(_['includes'](_0x4189ec,0x64)){var _0x300508=_[_0xb6b1('0x46')](_0x1c7f8b,{'sectionId':0x64});return hasDefaultDashboard(_0x300508)[_0xb6b1('0x24')](function(_0xc27ba8){return _[_0xb6b1('0x30')](_0x1c7f8b,function(_0x58d0fa){if(_0x58d0fa[_0xb6b1('0x54')]===0x64){_0x58d0fa[_0xb6b1('0x61')]=_0xc27ba8;}return _0x58d0fa;});});}else{return;}})[_0xb6b1('0x24')](function(_0x45574e){if(_0x45574e)_0x1c7f8b=_0x45574e;if(_[_0xb6b1('0x5f')](_0x4189ec,0x3eb)){var _0x2d8447=_[_0xb6b1('0x46')](_0x1c7f8b,{'sectionId':0x3eb});return getCustomDashboards(_0x2d8447)[_0xb6b1('0x24')](function(_0x8e1139){return _[_0xb6b1('0x30')](_0x1c7f8b,function(_0x326133){if(_0x2d8447[_0xb6b1('0x5e')]){if(_0x326133['sectionId']===0x3eb){_0x326133[_0xb6b1('0x61')]=_0x8e1139;}}else{if(_0x326133[_0xb6b1('0x54')]===0x64){_0x326133['subsections']=_0x8e1139;}}return _0x326133;});});}else{return;}})[_0xb6b1('0x24')](function(_0x23298c){if(_0x23298c)_0x1c7f8b=_0x23298c;if(_['includes'](_0x4189ec,0x709)){var _0x3d8119=_['find'](_0x1c7f8b,{'sectionId':0x709});return getPlugins(_0x3d8119)[_0xb6b1('0x24')](function(_0x5a0b18){if(_0x3d8119[_0xb6b1('0x5e')]){return _['map'](_0x1c7f8b,function(_0x53f086){if(_0x53f086[_0xb6b1('0x54')]===0x709){_0x53f086[_0xb6b1('0x61')]=_0x5a0b18;}return _0x53f086;});}else{var _0x51f5db={'sectionId':0x76c,'enabled':0x1,'subsections':_0x5a0b18};var _0x6b16fc=_[_0xb6b1('0x30')](_0x1c7f8b);_0x6b16fc[_0xb6b1('0x5b')](_0x51f5db);return _0x6b16fc;}});}else{return;}})[_0xb6b1('0x24')](function(_0x292dbe){if(_0x292dbe)_0x1c7f8b=_0x292dbe;return _[_0xb6b1('0x3d')](_0x1c7f8b,[_0xb6b1('0x5e'),0x1]);})[_0xb6b1('0x24')](respondWithResult(_0x17b225,null))[_0xb6b1('0x49')](handleError(_0x17b225,null));};function hasDefaultDashboard(_0x267c1d){var _0x28231c=[0x65];return new BPromise(function(_0x18a71f,_0x521366){try{if(_0x267c1d[_0xb6b1('0x51')]){_0x18a71f(_0x28231c);}else{return db[_0xb6b1('0x52')][_0xb6b1('0x62')]({'where':{'sectionId':_0x267c1d['id']},'raw':!![]})[_0xb6b1('0x24')](function(_0x489898){_0x489898?_0x18a71f(_0x28231c):_0x18a71f();});}}catch(_0x1ee829){_0x521366(_0x1ee829);}});}function getCustomDashboards(_0x2be41a){var _0x15818e=[];return new BPromise(function(_0x25ff4a,_0x320376){try{if(_0x2be41a[_0xb6b1('0x51')]){return db['Dashboard'][_0xb6b1('0x43')]({'raw':!![]})[_0xb6b1('0x24')](function(_0xe96200){_0xe96200[_0xb6b1('0x63')](function(_0x176461){_0x15818e[_0xb6b1('0x5b')](_0x176461['id']+0x1869f);});_0x25ff4a(_0x15818e);});}else{return db[_0xb6b1('0x52')][_0xb6b1('0x43')]({'where':{'sectionId':_0x2be41a['id']},'raw':!![]})[_0xb6b1('0x24')](function(_0x464fe2){_0x464fe2[_0xb6b1('0x63')](function(_0x54fa89){_0x15818e['push'](_0x54fa89[_0xb6b1('0x64')]+0x1869f);});_0x25ff4a(_0x15818e);});}}catch(_0x57feb3){_0x320376(_0x57feb3);}});}function getPlugins(_0x10d789){var _0x4175f7=[];return new BPromise(function(_0x36d30b,_0x32b89e){try{if(_0x10d789[_0xb6b1('0x51')]){return db[_0xb6b1('0x65')]['findAll']({'raw':!![]})[_0xb6b1('0x24')](function(_0x1fa035){_0x1fa035[_0xb6b1('0x63')](function(_0x53a6ff){_0x4175f7[_0xb6b1('0x5b')](_0x53a6ff['id']+0x15b38);});_0x36d30b(_0x4175f7);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x10d789['id']},'raw':!![]})[_0xb6b1('0x24')](function(_0x320c96){_0x320c96[_0xb6b1('0x63')](function(_0xf5dbf9){_0x4175f7[_0xb6b1('0x5b')](_0xf5dbf9[_0xb6b1('0x64')]+0x15b38);});_0x36d30b(_0x4175f7);});}}catch(_0x48b430){_0x32b89e(_0x48b430);}});}exports[_0xb6b1('0x66')]=function(_0x4720d0,_0x32e96f){return db[_0xb6b1('0x2a')]['find']({'where':{'id':_0x4720d0['params']['id']}})[_0xb6b1('0x24')](handleEntityNotFound(_0x32e96f,null))['then'](function(_0x287dc3){if(_0x287dc3){return db['sequelize'][_0xb6b1('0x4e')](function(_0x516f87){return db['UserProfileSection'][_0xb6b1('0x43')]({'where':{'userProfileId':_0x4720d0[_0xb6b1('0x45')]['id']},'attributes':['id'],'raw':!![]})[_0xb6b1('0x24')](function(_0x1e57ed){if(_0x1e57ed){return db[_0xb6b1('0x55')]['destroy']({'where':{'userProfileId':_0x4720d0[_0xb6b1('0x45')]['id'],'id':_[_0xb6b1('0x30')](_0x1e57ed,function(_0x1b0ca9){return _0x1b0ca9['id'];})},'transaction':_0x516f87});}})[_0xb6b1('0x24')](function(_0x523037){var _0xb668af=_['map'](_0x4720d0[_0xb6b1('0x48')],function(_0x48167c){_0x48167c[_0xb6b1('0x5a')]=_0x4720d0['params']['id'];return _0x48167c;});return db['UserProfileSection']['bulkCreate'](_0xb668af,{'raw':!![],'transaction':_0x516f87});})['then'](function(_0x15053a){var _0x505f16=_[_0xb6b1('0x3d')](_[_0xb6b1('0x30')](_0x15053a,function(_0x15ca42){return _0x15ca42[_0xb6b1('0x4f')]({'plain':!![]});}),{'includeAll':![]});if(_0x505f16){return db['UserProfileSection'][_0xb6b1('0x43')]({'where':{'userProfileId':_0x4720d0[_0xb6b1('0x45')]['id'],'sectionId':_['map'](_0x505f16,function(_0x55fb2f){return _0x55fb2f['sectionId'];})},'attributes':['id',_0xb6b1('0x54')],'raw':!![]})['then'](function(_0x3267c8){var _0x490f9f=_[_0xb6b1('0x30')](_0x4720d0['body'],function(_0xe90d81){_0xe90d81['userProfileId']=_0x4720d0['params']['id'];return _0xe90d81;});return db[_0xb6b1('0x52')][_0xb6b1('0x67')](_0x490f9f,{'raw':!![],'transaction':_0x516f87});});}})[_0xb6b1('0x49')](handleError(_0x32e96f,null));});}})[_0xb6b1('0x24')](function(_0xb25776){var _0x2ca465=_['map'](_0xb25776,function(_0x2e40d3){return _0x2e40d3[_0xb6b1('0x4f')]({'plain':!![]});});})['then'](respondWithResult(_0x32e96f,null))[_0xb6b1('0x49')](handleError(_0x32e96f,null));};exports[_0xb6b1('0x68')]=function(_0x450da0,_0x5236a3,_0x36f39e){return db[_0xb6b1('0x2a')][_0xb6b1('0x46')]({'where':{'id':_0x450da0[_0xb6b1('0x45')]['id']}})[_0xb6b1('0x24')](handleEntityNotFound(_0x5236a3,null))[_0xb6b1('0x24')](function(_0x1392c5){if(_0x1392c5){return _0x1392c5[_0xb6b1('0x68')](_0x450da0[_0xb6b1('0x32')][_0xb6b1('0x5c')]);}})[_0xb6b1('0x24')](respondWithStatusCode(_0x5236a3,null))['catch'](handleError(_0x5236a3,null));};exports['getResources']=function(_0x54fb1e,_0x160166){var _0x535d47={};if(!_0x54fb1e[_0xb6b1('0x32')][_0xb6b1('0x69')])throw new Error(_0xb6b1('0x6a'));if(!_0x54fb1e[_0xb6b1('0x32')]['hasOwnProperty'](_0xb6b1('0x37'))){_0x535d47['limit']=qs['limit'](_0x54fb1e['query'][_0xb6b1('0x1e')]);_0x535d47[_0xb6b1('0x20')]=qs[_0xb6b1('0x20')](_0x54fb1e[_0xb6b1('0x32')][_0xb6b1('0x20')]);}return db[_0xb6b1('0x2a')][_0xb6b1('0x46')]({'where':{'id':_0x54fb1e['params']['id']}})['then'](function(_0x474a40){if(!_0x474a40)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x54fb1e[_0xb6b1('0x45')]['id']);return db['UserProfile']['getResources'](_0x54fb1e);})['then'](respondWithFilteredResult(_0x160166,_0x535d47))['catch'](handleError(_0x160166,null));};
\ No newline at end of file
index 61f12be..72e8703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81d4=['hook','exports','../../mysqldb','UserProfile','save','update','remove','emit','hasOwnProperty'];(function(_0x53e7a2,_0x3f252e){var _0x2d9378=function(_0x376045){while(--_0x376045){_0x53e7a2['push'](_0x53e7a2['shift']());}};_0x2d9378(++_0x3f252e);}(_0x81d4,0x197));var _0x481d=function(_0x29e181,_0x3028a8){_0x29e181=_0x29e181-0x0;var _0x4b544f=_0x81d4[_0x29e181];return _0x4b544f;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x481d('0x0'))['db'][_0x481d('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x481d('0x2'),'afterUpdate':_0x481d('0x3'),'afterDestroy':_0x481d('0x4')};function emitEvent(_0x5b69a0){return function(_0x5af777,_0x37813e,_0x1a9ee1){UserProfileEvents[_0x481d('0x5')](_0x5b69a0+':'+_0x5af777['id'],_0x5af777);UserProfileEvents['emit'](_0x5b69a0,_0x5af777);_0x1a9ee1(null);};}for(var e in events){if(events[_0x481d('0x6')](e)){var event=events[e];UserProfile[_0x481d('0x7')](e,emitEvent(event));}}module[_0x481d('0x8')]=UserProfileEvents;
\ No newline at end of file
+var _0xf981=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb','UserProfile','setMaxListeners'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0xf981,0xe6));var _0x1f98=function(_0x4948d2,_0x94c68e){_0x4948d2=_0x4948d2-0x0;var _0x58c8c1=_0xf981[_0x4948d2];return _0x58c8c1;};'use strict';var EventEmitter=require(_0x1f98('0x0'));var UserProfile=require(_0x1f98('0x1'))['db'][_0x1f98('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x1f98('0x3')](0x0);var events={'afterCreate':_0x1f98('0x4'),'afterUpdate':_0x1f98('0x5'),'afterDestroy':_0x1f98('0x6')};function emitEvent(_0xd68165){return function(_0x562a81,_0x14da55,_0x15c6fa){UserProfileEvents[_0x1f98('0x7')](_0xd68165+':'+_0x562a81['id'],_0x562a81);UserProfileEvents[_0x1f98('0x7')](_0xd68165,_0x562a81);_0x15c6fa(null);};}for(var e in events){if(events[_0x1f98('0x8')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index f2dd867..1dd6d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89b3=['smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','users','agents','telephones','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','SugarcrmAccount','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','trunks','Trunk','plugins','Plugin','metrics','AnalyticMetric','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','mergeResources','isEmpty','push','find','all','ignore','union','length','autoAssociation','rawAttributes','keys','filters','intersection','fields','attributes','hasOwnProperty','limit','offset','order','sort','pick','key','VIRTUAL','foreignKey','forEach','merge','options','includeAll','include','reportType','default','reportId','custom','rows','count','Tags','color','tag','ThroughTags','true','chat','dataValues','sms','fax','mail','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','exports','filter','field','then','map','value','model','findAll','associatedResources','name','catch','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','projects','JscriptyProject','contacts','CmContact','parentSections','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','VoiceRecording','Agents','membername','User','agent','Telephones','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount'];(function(_0x353cf4,_0x43aac9){var _0x1a00a1=function(_0x26b201){while(--_0x26b201){_0x353cf4['push'](_0x353cf4['shift']());}};_0x1a00a1(++_0x43aac9);}(_0x89b3,0x12a));var _0x389b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x89b3[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x389b('0x0'));var attributes=require(_0x389b('0x1'));var qs=require(_0x389b('0x2'));module[_0x389b('0x3')]=function(_0x536dc5){var _0x15bf46=_0x536dc5['models'];function _0x1edcd3(_0x4b0ebd,_0x8c6747){return new Promise(function(_0x568b0d,_0x4f625a){if(!_0x8c6747)return _0x568b0d(null);var _0x2e3973=_0x8c6747[_0x389b('0x4')]?{[_0x8c6747[_0x389b('0x4')][_0x389b('0x5')]]:_0x8c6747[_0x389b('0x4')]['value']}:undefined;return _0x15bf46[_0x4b0ebd]['findAll']({'where':_0x2e3973,'raw':!![]})[_0x389b('0x6')](function(_0x3d0e7b){_0x8c6747['associatedResources']=_[_0x389b('0x7')](_0x3d0e7b,'id');_0x568b0d(_0x8c6747);})['catch'](function(_0x5109af){_0x4f625a(_0x5109af);});});}function _0x28b59c(_0x14a2f8,_0x45ea90){return new Promise(function(_0x5097ba,_0x3b28bc){var _0x14b0bd=_0x14a2f8[_0x389b('0x4')]?{[_0x14a2f8['filter'][_0x389b('0x5')]]:_0x14a2f8[_0x389b('0x4')][_0x389b('0x8')]}:undefined;return _0x15bf46[_0x14a2f8[_0x389b('0x9')]][_0x389b('0xa')]({'where':_0x14b0bd,'raw':!![]})[_0x389b('0x6')](function(_0x56b63b){_0x45ea90[_0x389b('0xb')]=_[_0x389b('0x7')](_0x56b63b,function(_0x436abc){return _0x436abc[_0x389b('0xc')];});_0x5097ba(_0x45ea90);})[_0x389b('0xd')](function(_0x1b5832){_0x3b28bc(_0x1b5832);});});}function _0x4fc756(_0xfaa2bd,_0x415758,_0x457d1e){if(!_0x415758)return resolve(null);return new Promise(function(_0x3ca88,_0xd4a0cf){return _0x15bf46['UserProfileResource'][_0x389b('0xa')]({'where':{'sectionId':_0x415758['id']},'raw':!![]})[_0x389b('0x6')](function(_0x208b60){if(_0xfaa2bd[_0x389b('0x5')]&&_0xfaa2bd[_0x389b('0x5')]!=='id'){_0x415758[_0x389b('0xb')]=_[_0x389b('0x7')](_0x208b60,function(_0x552617){return _0x552617[_0xfaa2bd[_0x389b('0x5')]];});}else{if(_0x457d1e===_0x389b('0xe')){_0x415758[_0x389b('0xb')]=_[_0x389b('0x7')](_0x208b60,function(_0x155010){return{'id':_0x155010[_0x389b('0xf')],'type':_0x155010[_0x389b('0x10')]};});}else{_0x415758[_0x389b('0xb')]=_['map'](_0x208b60,function(_0x31e786){return _0x31e786['resourceId'];});}}_0x3ca88(_0x415758);})[_0x389b('0xd')](function(_0x5de061){_0xd4a0cf(_0x5de061);});});}function _0x4f10b1(_0x5f329f,_0xc67f36){var _0x1f91b2={'parentSections':[]};switch(_0x5f329f['toLowerCase']()){case _0x389b('0x11'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x13');break;case _0x389b('0x14'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x15');break;case'squarerecordings':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x16');_0x1f91b2['parentSections']=[{'name':'SquareProjects','field':_0x389b('0xc'),'foreignKey':'projectName'}];break;case _0x389b('0x17'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x18');break;case _0x389b('0x19'):_0x1f91b2['childModel']=_0x389b('0x1a');_0x1f91b2[_0x389b('0x1b')]=[{'name':_0x389b('0x1c'),'field':'id','foreignKey':_0x389b('0x1d')}];break;case _0x389b('0x1e'):_0x1f91b2['childModel']=_0x389b('0x1f');break;case _0x389b('0x20'):_0x1f91b2['childModel']=_0x389b('0x21');break;case _0x389b('0x22'):_0x1f91b2[_0x389b('0x12')]='CmCustomField';break;case _0x389b('0x23'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x24');break;case'chatwebsites':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x25');break;case _0x389b('0x26'):_0x1f91b2['childModel']='FaxQueue';break;case _0x389b('0x27'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x28');break;case _0x389b('0x29'):case'internalroutes':case _0x389b('0x2a'):_0x1f91b2['childModel']=_0x389b('0x2b');break;case _0x389b('0x2c'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x2d');break;case'voicemails':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x2e');break;case'voicerecordings':_0x1f91b2['childModel']=_0x389b('0x2f');_0x1f91b2[_0x389b('0x1b')]=[{'name':_0x389b('0x30'),'field':_0x389b('0xc'),'foreignKey':_0x389b('0x31'),'model':_0x389b('0x32'),'filter':{'field':'role','value':[_0x389b('0x33')]}},{'name':_0x389b('0x34'),'field':'name','foreignKey':_0x389b('0x31'),'model':_0x389b('0x32'),'filter':{'field':'role','value':[_0x389b('0x35')]}},{'name':_0x389b('0x36'),'field':_0x389b('0xc'),'foreignKey':'queue','model':_0x389b('0x37'),'filter':{'field':'type','value':[_0x389b('0x38')]}},{'name':_0x389b('0x39'),'field':_0x389b('0xc'),'foreignKey':_0x389b('0x3a'),'model':_0x389b('0x37'),'filter':{'field':'type','value':[_0x389b('0x3b')]}}];break;case _0x389b('0x3c'):_0x1f91b2['childModel']=_0x389b('0x3d');break;case _0x389b('0x3e'):_0x1f91b2['childModel']=_0x389b('0x3f');break;case'voiceprefixes':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x40');break;case _0x389b('0x41'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x42');break;case _0x389b('0x43'):_0x1f91b2['childModel']=_0x389b('0x44');break;case'mailaccounts':_0x1f91b2['childModel']=_0x389b('0x45');break;case _0x389b('0x46'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x47');break;case _0x389b('0x48'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x49');break;case _0x389b('0x4a'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x4b');break;case _0x389b('0x4c'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x4d');break;case _0x389b('0x4e'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x4f');break;case _0x389b('0x50'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x51');break;case _0x389b('0x52'):_0x1f91b2['childModel']=_0x389b('0x53');break;case _0x389b('0x54'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x55');break;case'voicequeues':case'queuecampaigns':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x37');if(_0xc67f36){_0x1f91b2[_0x389b('0x1b')]=[{'name':_0x389b('0x36')},{'name':'QueueCampaigns'}];}break;case _0x389b('0x56'):case _0x389b('0x57'):case _0x389b('0x58'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x32');if(_0xc67f36){_0x1f91b2[_0x389b('0x1b')]=[{'name':'Users','filter':{'field':'role','value':['admin','user']},'ignore':!![]},{'name':_0x389b('0x30')},{'name':_0x389b('0x34')}];}break;case _0x389b('0x59'):_0x1f91b2[_0x389b('0x12')]='ZendeskAccount';break;case _0x389b('0x5a'):_0x1f91b2['childModel']=_0x389b('0x5b');break;case'freshdeskaccounts':_0x1f91b2['childModel']=_0x389b('0x5c');break;case'sugarcrmaccounts':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x5d');break;case _0x389b('0x5e'):_0x1f91b2[_0x389b('0x12')]='DeskAccount';break;case _0x389b('0x5f'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x60');break;case _0x389b('0x61'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x32');break;case _0x389b('0x62'):_0x1f91b2[_0x389b('0x12')]='CannedAnswer';break;case _0x389b('0x63'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x64');break;case _0x389b('0x65'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x66');break;case _0x389b('0x67'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x68');break;case _0x389b('0x69'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x6a');break;case _0x389b('0x6b'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x6c');break;case _0x389b('0x6d'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x6e');break;case _0x389b('0x6f'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x70');break;case _0x389b('0x71'):_0x1f91b2['childModel']=_0x389b('0x72');break;case'triggers':_0x1f91b2[_0x389b('0x12')]='Trigger';break;case _0x389b('0x73'):_0x1f91b2['childModel']=_0x389b('0x74');break;case'variables':_0x1f91b2[_0x389b('0x12')]='Variable';break;case _0x389b('0x75'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x76');break;case'extractedreports':_0x1f91b2[_0x389b('0x12')]=_0x389b('0xe');_0x1f91b2[_0x389b('0x1b')]=[{'name':'Reports','field':'id','foreignKey':'reportId'}];break;case _0x389b('0x77'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x78');break;case'whatsappaccounts':_0x1f91b2['childModel']=_0x389b('0x53');break;}return _0x1f91b2;}function _0xa1fe00(_0x19f5a7,_0x1d1ea6){var _0x341ed0=_0x19f5a7['charAt'](0x0)[_0x389b('0x79')]()+_0x19f5a7[_0x389b('0x7a')](0x1);var _0x4b3f2b={'type':_0x15bf46[_0x389b('0x7b')][_0x389b('0x7c')][_0x389b('0x7d')],'raw':!![]};return new BPromise(function(_0x4796b5,_0x4ee08e){var _0x38f651=squel[_0x389b('0x7e')]()['field'](_0x389b('0x7f')+_0x341ed0+_0x389b('0x80'),'id')[_0x389b('0x5')](_0x389b('0x81'))[_0x389b('0x82')]('user_has_'+_0x19f5a7+'_interactions','ui')[_0x389b('0x83')](_0x389b('0x84'),_0x1d1ea6['id']);return _0x15bf46[_0x389b('0x85')][_0x389b('0x86')](_0x38f651[_0x389b('0x87')](),_0x4b3f2b)[_0x389b('0x6')](function(_0x215f7b){_0x1d1ea6[_0x341ed0+_0x389b('0x88')]=_0x215f7b;_0x4796b5(_0x215f7b);})[_0x389b('0xd')](function(_0xfb86a4){_0x4ee08e(_0xfb86a4);});});}return _0x536dc5[_0x389b('0x89')](_0x389b('0x8a'),attributes,{'tableName':_0x389b('0x8b'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x25a945){var _0x5dc87d={'raw':![],'where':{}};var _0x1f15c8={};var _0x21c895={'count':0x0,'rows':[]};var _0x131ac8=_0x25a945[_0x389b('0x86')][_0x389b('0x8c')];var _0x7a7817=_0x25a945['query'][_0x389b('0x8d')]||![];var _0x479e8d=_0x4f10b1(_0x131ac8,_0x7a7817);if(!_0x479e8d['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x131ac8+'\x27');var _0x319f8a=[{'name':_0x131ac8}];if(!_[_0x389b('0x8e')](_0x479e8d['parentSections']))_0x319f8a=_0x479e8d['parentSections'];var _0x5ab01f=[];for(var _0x36f84a=0x0;_0x36f84a<_0x319f8a['length'];_0x36f84a++){_0x5ab01f[_0x389b('0x8f')](_0x15bf46['UserProfileSection'][_0x389b('0x90')]({'where':{'userProfileId':_0x25a945['params']['id'],'name':_0x319f8a[_0x36f84a][_0x389b('0xc')]},'raw':!![]}));}return Promise[_0x389b('0x91')](_0x5ab01f)[_0x389b('0x6')](function(_0x2efd2a){var _0x5b65e8=_['filter'](_0x2efd2a,function(_0x452458){return _0x452458?_0x452458:undefined;});var _0x25a12b=_[_0x389b('0x4')](_0x319f8a,[_0x389b('0x92'),!![]]);var _0x55a7e9=_[_0x389b('0x8e')](_0x5b65e8)&&_['isEmpty'](_0x25a12b)?null:_[_0x389b('0x93')](_0x25a12b,_0x5b65e8);if(!_0x55a7e9)return null;var _0x55c56e=[];for(var _0x5d46fb=0x0;_0x5d46fb<_0x55a7e9[_0x389b('0x94')];_0x5d46fb++){var _0x389002=_['find'](_0x319f8a,function(_0x5a1db3){return _0x55a7e9[_0x5d46fb]?_0x5a1db3[_0x389b('0xc')]===_0x55a7e9[_0x5d46fb][_0x389b('0xc')]:null;});if(_0x389002){if(_0x55a7e9[_0x5d46fb]['ignore']){_0x55c56e[_0x389b('0x8f')](_0x1edcd3(_0x479e8d[_0x389b('0x12')],_0x55a7e9[_0x5d46fb]));}else{if(!_0x55a7e9[_0x5d46fb][_0x389b('0x95')]){_0x55c56e[_0x389b('0x8f')](_0x4fc756(_0x389002,_0x55a7e9[_0x5d46fb],_0x479e8d[_0x389b('0x12')]));}else{if(_0x389002[_0x389b('0x9')]){_0x55c56e['push'](_0x28b59c(_0x389002,_0x55a7e9[_0x5d46fb]));}}}}}return Promise['all'](_0x55c56e);})[_0x389b('0x6')](function(_0x16ec9f){var _0x3003a9=_0x16ec9f;var _0x4896fe=null;if(_0x3003a9){_0x4896fe=_0x3003a9[_0x389b('0x94')]===0x1?_0x3003a9[0x0]:null;}if(!_0x4896fe&&!_0x3003a9)return _0x21c895;var _0x5cd2c9=_0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0x96')];_0x1f15c8[_0x389b('0x9')]=_[_0x389b('0x97')](_0x5cd2c9);_0x1f15c8[_0x389b('0x86')]=_[_0x389b('0x97')](_0x25a945[_0x389b('0x86')]);_0x1f15c8[_0x389b('0x98')]=_['intersection'](_0x1f15c8[_0x389b('0x9')],_0x1f15c8['query']);_0x5dc87d['attributes']=_[_0x389b('0x99')](_0x1f15c8[_0x389b('0x9')],qs[_0x389b('0x9a')](_0x25a945['query'][_0x389b('0x9a')]));_0x5dc87d[_0x389b('0x9b')]=_0x5dc87d[_0x389b('0x9b')]['length']?_0x5dc87d[_0x389b('0x9b')]:_0x1f15c8['model'];if(!_0x25a945['query'][_0x389b('0x9c')]('nolimit')){_0x5dc87d[_0x389b('0x9d')]=qs[_0x389b('0x9d')](_0x25a945[_0x389b('0x86')][_0x389b('0x9d')]);_0x5dc87d['offset']=qs[_0x389b('0x9e')](_0x25a945['query'][_0x389b('0x9e')]);}_0x5dc87d[_0x389b('0x9f')]=qs[_0x389b('0xa0')](_0x25a945['query'][_0x389b('0xa0')]);_0x5dc87d[_0x389b('0x83')]=qs[_0x389b('0x98')](_[_0x389b('0xa1')](_0x25a945[_0x389b('0x86')],_0x1f15c8[_0x389b('0x98')]));if(_0x25a945[_0x389b('0x86')][_0x389b('0x4')]){_0x5dc87d[_0x389b('0x83')]=_['merge'](_0x5dc87d[_0x389b('0x83')],{'$or':_[_0x389b('0x7')](_0x5cd2c9,function(_0x219b4f){if(_0x219b4f[_0x389b('0x10')][_0x389b('0xa2')]!==_0x389b('0xa3')){var _0x2a7947={};_0x2a7947[_0x219b4f[_0x389b('0x5')]]={'$like':'%'+_0x25a945[_0x389b('0x86')][_0x389b('0x4')]+'%'};return _0x2a7947;}})});}var _0x2d80e6=[];if(_0x4896fe){var _0x68da55=_[_0x389b('0x90')](_0x319f8a,['name',_0x4896fe[_0x389b('0xc')]]);if(_0x68da55['field']){var _0x1e1750={};if(_0x479e8d[_0x389b('0x12')]==='AnalyticExtractedReport'){_0x1e1750[_0x68da55[_0x389b('0xa4')]]=_[_0x389b('0x7')](_0x4896fe[_0x389b('0xb')],'id');}else{_0x1e1750[_0x68da55[_0x389b('0xa4')]]=_0x4896fe[_0x389b('0xb')];}_0x2d80e6[_0x389b('0x8f')](_0x1e1750);}else{_0x5dc87d[_0x389b('0x83')]['id']=_0x4896fe[_0x389b('0xb')];}}else{for(var _0x27d6f1=0x0;_0x27d6f1<_0x3003a9[_0x389b('0x94')];_0x27d6f1++){var _0x68da55=_[_0x389b('0x90')](_0x319f8a,[_0x389b('0xc'),_0x3003a9[_0x27d6f1]['name']]);if(_0x68da55['field']){var _0x1e1750={};_0x1e1750[_0x68da55['foreignKey']]=_0x3003a9[_0x27d6f1]['associatedResources'];_0x2d80e6[_0x389b('0x8f')](_0x1e1750);}else{if(!_0x5dc87d[_0x389b('0x83')]['id'])_0x5dc87d[_0x389b('0x83')]['id']=[];_0x3003a9[_0x27d6f1][_0x389b('0xb')][_0x389b('0xa5')](function(_0x3edc0e){_0x5dc87d[_0x389b('0x83')]['id'][_0x389b('0x8f')](_0x3edc0e);});}}}if(!_[_0x389b('0x8e')](_0x2d80e6)){_0x5dc87d['where']=_[_0x389b('0xa6')](_0x5dc87d[_0x389b('0x83')],{'$and':{'$or':_0x2d80e6}});}_0x5dc87d=_[_0x389b('0xa6')]({},_0x5dc87d,_0x25a945[_0x389b('0xa7')]);if(_0x4896fe&&!_0x4896fe[_0x389b('0x95')]&&_0x479e8d[_0x389b('0x12')]===_0x389b('0xe')){if(_0x25a945[_0x389b('0x86')][_0x389b('0xa8')]){_0x5dc87d[_0x389b('0xa9')]=[{'all':!![]}];}return _0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0xa')](_0x5dc87d)[_0x389b('0x6')](function(_0x17d498){var _0x214a5a=[];_0x17d498[_0x389b('0xa5')](function(_0x185f54){var _0x205cf7;switch(_0x185f54[_0x389b('0xaa')]){case _0x389b('0xab'):_0x205cf7=_[_0x389b('0x90')](_0x4896fe[_0x389b('0xb')],function(_0x29a46b){return _0x29a46b['id']===_0x185f54[_0x389b('0xac')]&&_0x29a46b[_0x389b('0x10')]==='DefaultReports';});break;case _0x389b('0xad'):_0x205cf7=_['find'](_0x4896fe[_0x389b('0xb')],function(_0x2b3fc2){return _0x2b3fc2['id']===_0x185f54[_0x389b('0xac')]&&_0x2b3fc2['type']==='CustomReports';});break;}if(_0x205cf7)_0x214a5a[_0x389b('0x8f')](_0x185f54);});_0x21c895['count']=_0x214a5a[_0x389b('0x94')];_0x21c895[_0x389b('0xae')]=_0x214a5a;return _0x21c895;});}else{return _0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0xaf')]({'where':_0x5dc87d[_0x389b('0x83')]})['then'](function(_0x11d1fe){_0x21c895['count']=_0x11d1fe;if(_0x25a945[_0x389b('0x86')][_0x389b('0xa8')]){if(_0x479e8d['childModel']==='CmContact'){_0x5dc87d[_0x389b('0xa9')]=[{'model':_0x15bf46[_0x389b('0x70')],'as':_0x389b('0xb0'),'attributes':['id',_0x389b('0xc'),_0x389b('0xb1')],'required':_0x25a945[_0x389b('0x86')][_0x389b('0xb2')]?!![]:![]},{'model':_0x15bf46[_0x389b('0x70')],'as':_0x389b('0xb3'),'attributes':['id',_0x389b('0xc'),_0x389b('0xb1')],'through':_0x25a945[_0x389b('0x86')]['tag']?{'attributes':[],'where':{'TagId':_0x25a945[_0x389b('0x86')][_0x389b('0xb2')]||undefined}}:{},'required':_0x25a945[_0x389b('0x86')][_0x389b('0xb2')]?!![]:![]}];}else{_0x5dc87d['include']=[{'all':!![]}];}}return _0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0xa')](_0x5dc87d);})[_0x389b('0x6')](function(_0x57b85b){_0x21c895[_0x389b('0xae')]=_0x57b85b;if(_0x131ac8===_0x389b('0x30')&&_0x25a945[_0x389b('0x86')]['openTabs']===_0x389b('0xb4')){var _0x1de586=[];for(var _0x4b2ee3=0x0;_0x4b2ee3<_0x21c895['rows'][_0x389b('0x94')];_0x4b2ee3++){_0x1de586['push'](_0xa1fe00(_0x389b('0xb5'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00(_0x389b('0xb7'),_0x21c895['rows'][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00(_0x389b('0xb8'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586[_0x389b('0x8f')](_0xa1fe00(_0x389b('0xb9'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00(_0x389b('0xba'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00('whatsapp',_0x21c895['rows'][_0x4b2ee3]['dataValues']));}return Promise[_0x389b('0x91')](_0x1de586)[_0x389b('0x6')](function(){return _0x21c895;});}return _0x21c895;});}});}}});};
\ No newline at end of file
+var _0x627e=['toLowerCase','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','contacts','Lists','lists','CmList','CmCompany','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','internalroutes','VoiceMail','voicerecordings','Agents','membername','User','agent','Telephones','role','telephone','VoiceQueues','VoiceQueue','inbound','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','MailQueue','mailsubstatuses','MailSubstatus','OpenchannelQueue','OpenchannelAccount','SmsAccount','whatsappqueues','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','agents','telephones','Users','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','Dashboard','Interval','Sound','tags','Tag','templates','Template','triggers','Trunk','variables','Variable','plugins','Plugin','reportId','metrics','AnalyticMetric','charAt','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','sequelize','toString','then','OpenTabs','define','UserProfile','mergeResources','isEmpty','length','push','find','all','ignore','autoAssociation','rawAttributes','keys','query','filters','intersection','fields','attributes','nolimit','limit','offset','order','sort','pick','key','foreignKey','forEach','merge','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','Tags','color','tag','ThroughTags','openTabs','true','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','findAll','associatedResources','map','value','model','name','catch','resolve','UserProfileResource','AnalyticExtractedReport','type','resourceId'];(function(_0x767b8e,_0xbf263a){var _0x214b62=function(_0x5a0a44){while(--_0x5a0a44){_0x767b8e['push'](_0x767b8e['shift']());}};_0x214b62(++_0xbf263a);}(_0x627e,0x14a));var _0xe627=function(_0x5639f0,_0x463403){_0x5639f0=_0x5639f0-0x0;var _0x2e254c=_0x627e[_0x5639f0];return _0x2e254c;};'use strict';var _=require(_0xe627('0x0'));var attributes=require(_0xe627('0x1'));var qs=require(_0xe627('0x2'));var squel=require(_0xe627('0x3'));module[_0xe627('0x4')]=function(_0x48b97a){var _0x2b7158=_0x48b97a[_0xe627('0x5')];function _0x2abdc7(_0x59a2c8,_0x52923f){return new Promise(function(_0x4efcad,_0x1a1a3d){if(!_0x52923f)return _0x4efcad(null);var _0x3f2791=_0x52923f[_0xe627('0x6')]?{[_0x52923f[_0xe627('0x6')][_0xe627('0x7')]]:_0x52923f[_0xe627('0x6')]['value']}:undefined;return _0x2b7158[_0x59a2c8][_0xe627('0x8')]({'where':_0x3f2791,'raw':!![]})['then'](function(_0x56549e){_0x52923f[_0xe627('0x9')]=_[_0xe627('0xa')](_0x56549e,'id');_0x4efcad(_0x52923f);})['catch'](function(_0x4a85ba){_0x1a1a3d(_0x4a85ba);});});}function _0x16db2f(_0x2c1820,_0x1a3e35){return new Promise(function(_0x4543f5,_0x3d3c22){var _0x22ebea=_0x2c1820[_0xe627('0x6')]?{[_0x2c1820[_0xe627('0x6')][_0xe627('0x7')]]:_0x2c1820['filter'][_0xe627('0xb')]}:undefined;return _0x2b7158[_0x2c1820[_0xe627('0xc')]][_0xe627('0x8')]({'where':_0x22ebea,'raw':!![]})['then'](function(_0x42dd1c){_0x1a3e35[_0xe627('0x9')]=_[_0xe627('0xa')](_0x42dd1c,function(_0x119d9c){return _0x119d9c[_0xe627('0xd')];});_0x4543f5(_0x1a3e35);})[_0xe627('0xe')](function(_0x271325){_0x3d3c22(_0x271325);});});}function _0x54720a(_0x241544,_0x29b41c,_0x16c2d7){if(!_0x29b41c)return Promise[_0xe627('0xf')](null);return new Promise(function(_0x403982,_0x30da02){return _0x2b7158[_0xe627('0x10')][_0xe627('0x8')]({'where':{'sectionId':_0x29b41c['id']},'raw':!![]})['then'](function(_0x24fddd){if(_0x241544['field']&&_0x241544[_0xe627('0x7')]!=='id'){_0x29b41c['associatedResources']=_['map'](_0x24fddd,function(_0x3dde00){return _0x3dde00[_0x241544['field']];});}else{if(_0x16c2d7===_0xe627('0x11')){_0x29b41c[_0xe627('0x9')]=_['map'](_0x24fddd,function(_0x4c9b97){return{'id':_0x4c9b97['resourceId'],'type':_0x4c9b97[_0xe627('0x12')]};});}else{_0x29b41c[_0xe627('0x9')]=_['map'](_0x24fddd,function(_0x708a8a){return _0x708a8a[_0xe627('0x13')];});}}_0x403982(_0x29b41c);})['catch'](function(_0x44861b){_0x30da02(_0x44861b);});});}function _0x29221b(_0x52d492,_0x42f3d1){var _0x19adbc={'parentSections':[]};switch(_0x52d492[_0xe627('0x14')]()){case'squareprojects':_0x19adbc[_0xe627('0x15')]=_0xe627('0x16');break;case _0xe627('0x17'):_0x19adbc[_0xe627('0x15')]='SquareOdbc';break;case _0xe627('0x18'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x19');_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x1b'),'field':_0xe627('0xd'),'foreignKey':_0xe627('0x1c')}];break;case _0xe627('0x1d'):_0x19adbc[_0xe627('0x15')]='JscriptyProject';break;case _0xe627('0x1e'):_0x19adbc['childModel']='CmContact';_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x1f'),'field':'id','foreignKey':'ListId'}];break;case _0xe627('0x20'):_0x19adbc['childModel']=_0xe627('0x21');break;case'companies':_0x19adbc[_0xe627('0x15')]=_0xe627('0x22');break;case'globalcustomfields':_0x19adbc[_0xe627('0x15')]='CmCustomField';break;case _0xe627('0x23'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x24');break;case _0xe627('0x25'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x26');break;case _0xe627('0x27'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x28');break;case _0xe627('0x29'):_0x19adbc[_0xe627('0x15')]='FaxAccount';break;case'inboundroutes':case _0xe627('0x2a'):case'outboundroutes':_0x19adbc[_0xe627('0x15')]='VoiceExtension';break;case'contexts':_0x19adbc[_0xe627('0x15')]='VoiceContext';break;case'voicemails':_0x19adbc[_0xe627('0x15')]=_0xe627('0x2b');break;case _0xe627('0x2c'):_0x19adbc['childModel']='VoiceRecording';_0x19adbc['parentSections']=[{'name':_0xe627('0x2d'),'field':'name','foreignKey':_0xe627('0x2e'),'model':_0xe627('0x2f'),'filter':{'field':'role','value':[_0xe627('0x30')]}},{'name':_0xe627('0x31'),'field':'name','foreignKey':_0xe627('0x2e'),'model':_0xe627('0x2f'),'filter':{'field':_0xe627('0x32'),'value':[_0xe627('0x33')]}},{'name':_0xe627('0x34'),'field':_0xe627('0xd'),'foreignKey':'queue','model':_0xe627('0x35'),'filter':{'field':'type','value':[_0xe627('0x36')]}},{'name':'QueueCampaigns','field':_0xe627('0xd'),'foreignKey':_0xe627('0x37'),'model':_0xe627('0x35'),'filter':{'field':_0xe627('0x12'),'value':[_0xe627('0x38')]}}];break;case _0xe627('0x39'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x3a');break;case _0xe627('0x3b'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x3c');break;case _0xe627('0x3d'):_0x19adbc[_0xe627('0x15')]='VoicePrefix';break;case'ivrcampaigns':_0x19adbc['childModel']='Campaign';break;case'mailqueues':_0x19adbc['childModel']=_0xe627('0x3e');break;case'mailaccounts':_0x19adbc[_0xe627('0x15')]='MailAccount';break;case _0xe627('0x3f'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x40');break;case'openchannelqueues':_0x19adbc['childModel']=_0xe627('0x41');break;case'openchannelaccounts':_0x19adbc['childModel']=_0xe627('0x42');break;case'smsqueues':_0x19adbc[_0xe627('0x15')]='SmsQueue';break;case'smsaccounts':_0x19adbc[_0xe627('0x15')]=_0xe627('0x43');break;case _0xe627('0x44'):_0x19adbc['childModel']='WhatsappQueue';break;case _0xe627('0x45'):_0x19adbc['childModel']='WhatsappAccount';break;case _0xe627('0x46'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x47');break;case _0xe627('0x48'):case _0xe627('0x49'):_0x19adbc[_0xe627('0x15')]='VoiceQueue';if(_0x42f3d1){_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x34')},{'name':'QueueCampaigns'}];}break;case'users':case _0xe627('0x4a'):case _0xe627('0x4b'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x2f');if(_0x42f3d1){_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x4c'),'filter':{'field':_0xe627('0x32'),'value':['admin',_0xe627('0x4d')]},'ignore':!![]},{'name':'Agents'},{'name':_0xe627('0x31')}];}break;case _0xe627('0x4e'):_0x19adbc[_0xe627('0x15')]='ZendeskAccount';break;case _0xe627('0x4f'):_0x19adbc['childModel']=_0xe627('0x50');break;case _0xe627('0x51'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x52');break;case _0xe627('0x53'):_0x19adbc['childModel']=_0xe627('0x54');break;case _0xe627('0x55'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x56');break;case _0xe627('0x57'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x58');break;case _0xe627('0x59'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x2f');break;case'cannedanswers':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5a');break;case'dispositions':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5b');break;case'customdashboards':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5c');break;case'intervals':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5d');break;case'pauses':_0x19adbc[_0xe627('0x15')]='Pause';break;case'scheduler':_0x19adbc['childModel']='Schedule';break;case'sounds':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5e');break;case _0xe627('0x5f'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x60');break;case _0xe627('0x61'):_0x19adbc['childModel']=_0xe627('0x62');break;case _0xe627('0x63'):_0x19adbc['childModel']='Trigger';break;case'trunks':_0x19adbc[_0xe627('0x15')]=_0xe627('0x64');break;case _0xe627('0x65'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x66');break;case _0xe627('0x67'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x68');break;case'extractedreports':_0x19adbc[_0xe627('0x15')]='AnalyticExtractedReport';_0x19adbc[_0xe627('0x1a')]=[{'name':'Reports','field':'id','foreignKey':_0xe627('0x69')}];break;case _0xe627('0x6a'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x6b');break;}return _0x19adbc;}function _0x42706c(_0x27c269,_0x1cff67){var _0x36c13e=_0x27c269[_0xe627('0x6c')](0x0)['toUpperCase']()+_0x27c269[_0xe627('0x6d')](0x1);var _0x45cc2e={'type':_0x2b7158[_0xe627('0x6e')][_0xe627('0x6f')][_0xe627('0x70')],'raw':!![]};return new Promise(function(_0x5cbaa4,_0x503272){var _0x2a7ab9=squel[_0xe627('0x71')]()['field'](_0xe627('0x72')+_0x36c13e+_0xe627('0x73'),'id')[_0xe627('0x7')](_0xe627('0x74'))[_0xe627('0x75')](_0xe627('0x76')+_0x27c269+_0xe627('0x77'),'ui')[_0xe627('0x78')]('ui.UserId\x20=\x20?',_0x1cff67['id']);return _0x2b7158[_0xe627('0x79')]['query'](_0x2a7ab9[_0xe627('0x7a')](),_0x45cc2e)[_0xe627('0x7b')](function(_0x2a2c73){_0x1cff67[_0x36c13e+_0xe627('0x7c')]=_0x2a2c73;_0x5cbaa4(_0x2a2c73);})['catch'](function(_0x4c04cc){_0x503272(_0x4c04cc);});});}return _0x48b97a[_0xe627('0x7d')](_0xe627('0x7e'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x3434a1){var _0xc4f431={'raw':![],'where':{}};var _0x5a81a8={};var _0x3d5b51={'count':0x0,'rows':[]};var _0x1c9628=_0x3434a1['query']['section'];var _0x364496=_0x3434a1['query'][_0xe627('0x7f')]||![];var _0x3e37cc=_0x29221b(_0x1c9628,_0x364496);if(!_0x3e37cc[_0xe627('0x15')])throw new Error('Invalid\x20section\x20\x27'+_0x1c9628+'\x27');var _0x36579d=[{'name':_0x1c9628}];if(!_[_0xe627('0x80')](_0x3e37cc[_0xe627('0x1a')]))_0x36579d=_0x3e37cc[_0xe627('0x1a')];var _0x54ffa6=[];for(var _0x57e4fd=0x0;_0x57e4fd<_0x36579d[_0xe627('0x81')];_0x57e4fd++){_0x54ffa6[_0xe627('0x82')](_0x2b7158['UserProfileSection'][_0xe627('0x83')]({'where':{'userProfileId':_0x3434a1['params']['id'],'name':_0x36579d[_0x57e4fd]['name']},'raw':!![]}));}return Promise[_0xe627('0x84')](_0x54ffa6)[_0xe627('0x7b')](function(_0x4c58ee){var _0x4edbc8=_[_0xe627('0x6')](_0x4c58ee,function(_0x415524){return _0x415524?_0x415524:undefined;});var _0x99536f=_[_0xe627('0x6')](_0x36579d,[_0xe627('0x85'),!![]]);var _0x17d03b=_['isEmpty'](_0x4edbc8)&&_['isEmpty'](_0x99536f)?null:_['union'](_0x99536f,_0x4edbc8);if(!_0x17d03b)return null;var _0x1e92de=[];for(var _0x308bb2=0x0;_0x308bb2<_0x17d03b['length'];_0x308bb2++){var _0x25c89d=_[_0xe627('0x83')](_0x36579d,function(_0x33b7b6){return _0x17d03b[_0x308bb2]?_0x33b7b6[_0xe627('0xd')]===_0x17d03b[_0x308bb2]['name']:null;});if(_0x25c89d){if(_0x17d03b[_0x308bb2][_0xe627('0x85')]){_0x1e92de[_0xe627('0x82')](_0x2abdc7(_0x3e37cc[_0xe627('0x15')],_0x17d03b[_0x308bb2]));}else{if(!_0x17d03b[_0x308bb2][_0xe627('0x86')]){_0x1e92de['push'](_0x54720a(_0x25c89d,_0x17d03b[_0x308bb2],_0x3e37cc[_0xe627('0x15')]));}else{if(_0x25c89d[_0xe627('0xc')]){_0x1e92de[_0xe627('0x82')](_0x16db2f(_0x25c89d,_0x17d03b[_0x308bb2]));}}}}}return Promise['all'](_0x1e92de);})['then'](function(_0x4ff0ee){var _0x58cbd8=_0x4ff0ee;var _0x4cafb7=null;if(_0x58cbd8){_0x4cafb7=_0x58cbd8[_0xe627('0x81')]===0x1?_0x58cbd8[0x0]:null;}if(!_0x4cafb7&&!_0x58cbd8)return _0x3d5b51;var _0x3e09c7=_0x2b7158[_0x3e37cc[_0xe627('0x15')]][_0xe627('0x87')];_0x5a81a8[_0xe627('0xc')]=_[_0xe627('0x88')](_0x3e09c7);_0x5a81a8['query']=_[_0xe627('0x88')](_0x3434a1[_0xe627('0x89')]);_0x5a81a8[_0xe627('0x8a')]=_[_0xe627('0x8b')](_0x5a81a8[_0xe627('0xc')],_0x5a81a8['query']);_0xc4f431['attributes']=_['intersection'](_0x5a81a8[_0xe627('0xc')],qs[_0xe627('0x8c')](_0x3434a1['query'][_0xe627('0x8c')]));_0xc4f431[_0xe627('0x8d')]=_0xc4f431[_0xe627('0x8d')][_0xe627('0x81')]?_0xc4f431['attributes']:_0x5a81a8['model'];if(!_0x3434a1[_0xe627('0x89')]['hasOwnProperty'](_0xe627('0x8e'))){_0xc4f431[_0xe627('0x8f')]=qs[_0xe627('0x8f')](_0x3434a1['query']['limit']);_0xc4f431[_0xe627('0x90')]=qs['offset'](_0x3434a1['query']['offset']);}_0xc4f431[_0xe627('0x91')]=qs[_0xe627('0x92')](_0x3434a1['query'][_0xe627('0x92')]);_0xc4f431[_0xe627('0x78')]=qs['filters'](_[_0xe627('0x93')](_0x3434a1[_0xe627('0x89')],_0x5a81a8[_0xe627('0x8a')]));if(_0x3434a1[_0xe627('0x89')][_0xe627('0x6')]){_0xc4f431[_0xe627('0x78')]=_['merge'](_0xc4f431[_0xe627('0x78')],{'$or':_[_0xe627('0xa')](_0x3e09c7,function(_0x4a69dc){if(_0x4a69dc[_0xe627('0x12')][_0xe627('0x94')]!=='VIRTUAL'){var _0x2a5757={};_0x2a5757[_0x4a69dc[_0xe627('0x7')]]={'$like':'%'+_0x3434a1[_0xe627('0x89')]['filter']+'%'};return _0x2a5757;}})});}var _0x4cb71c=[];var _0x471058=null;var _0x30ec1e={};if(_0x4cafb7){_0x471058=_[_0xe627('0x83')](_0x36579d,[_0xe627('0xd'),_0x4cafb7[_0xe627('0xd')]]);if(_0x471058[_0xe627('0x7')]){_0x30ec1e={};if(_0x3e37cc[_0xe627('0x15')]===_0xe627('0x11')){_0x30ec1e[_0x471058[_0xe627('0x95')]]=_[_0xe627('0xa')](_0x4cafb7[_0xe627('0x9')],'id');}else{_0x30ec1e[_0x471058['foreignKey']]=_0x4cafb7[_0xe627('0x9')];}_0x4cb71c[_0xe627('0x82')](_0x30ec1e);}else{_0xc4f431[_0xe627('0x78')]['id']=_0x4cafb7[_0xe627('0x9')];}}else{for(var _0x421821=0x0;_0x421821<_0x58cbd8[_0xe627('0x81')];_0x421821++){_0x471058=_[_0xe627('0x83')](_0x36579d,['name',_0x58cbd8[_0x421821][_0xe627('0xd')]]);if(_0x471058[_0xe627('0x7')]){_0x30ec1e={};_0x30ec1e[_0x471058[_0xe627('0x95')]]=_0x58cbd8[_0x421821]['associatedResources'];_0x4cb71c[_0xe627('0x82')](_0x30ec1e);}else{if(!_0xc4f431['where']['id'])_0xc4f431['where']['id']=[];_0x58cbd8[_0x421821][_0xe627('0x9')][_0xe627('0x96')](function(_0x203e4e){_0xc4f431['where']['id'][_0xe627('0x82')](_0x203e4e);});}}}if(!_[_0xe627('0x80')](_0x4cb71c)){_0xc4f431['where']=_[_0xe627('0x97')](_0xc4f431['where'],{'$and':{'$or':_0x4cb71c}});}_0xc4f431=_['merge']({},_0xc4f431,_0x3434a1[_0xe627('0x98')]);if(_0x4cafb7&&!_0x4cafb7[_0xe627('0x86')]&&_0x3e37cc[_0xe627('0x15')]==='AnalyticExtractedReport'){if(_0x3434a1[_0xe627('0x89')][_0xe627('0x99')]){_0xc4f431[_0xe627('0x9a')]=[{'all':!![]}];}return _0x2b7158[_0x3e37cc[_0xe627('0x15')]][_0xe627('0x8')](_0xc4f431)['then'](function(_0x339996){var _0x12c4c5=[];_0x339996[_0xe627('0x96')](function(_0x40f7b7){var _0x4658b4;switch(_0x40f7b7[_0xe627('0x9b')]){case _0xe627('0x9c'):_0x4658b4=_[_0xe627('0x83')](_0x4cafb7[_0xe627('0x9')],function(_0x106a38){return _0x106a38['id']===_0x40f7b7['reportId']&&_0x106a38['type']===_0xe627('0x9d');});break;case _0xe627('0x9e'):_0x4658b4=_['find'](_0x4cafb7[_0xe627('0x9')],function(_0x21ea37){return _0x21ea37['id']===_0x40f7b7[_0xe627('0x69')]&&_0x21ea37[_0xe627('0x12')]===_0xe627('0x9f');});break;}if(_0x4658b4)_0x12c4c5[_0xe627('0x82')](_0x40f7b7);});_0x3d5b51[_0xe627('0xa0')]=_0x12c4c5[_0xe627('0x81')];_0x3d5b51[_0xe627('0xa1')]=_0x12c4c5;return _0x3d5b51;});}else{return _0x2b7158[_0x3e37cc[_0xe627('0x15')]][_0xe627('0xa0')]({'where':_0xc4f431[_0xe627('0x78')]})[_0xe627('0x7b')](function(_0x562550){_0x3d5b51[_0xe627('0xa0')]=_0x562550;if(_0x3434a1[_0xe627('0x89')][_0xe627('0x99')]){if(_0x3e37cc['childModel']==='CmContact'){_0xc4f431[_0xe627('0x9a')]=[{'model':_0x2b7158['Tag'],'as':_0xe627('0xa2'),'attributes':['id',_0xe627('0xd'),_0xe627('0xa3')],'required':_0x3434a1['query'][_0xe627('0xa4')]?!![]:![]},{'model':_0x2b7158['Tag'],'as':_0xe627('0xa5'),'attributes':['id',_0xe627('0xd'),_0xe627('0xa3')],'through':_0x3434a1['query'][_0xe627('0xa4')]?{'attributes':[],'where':{'TagId':_0x3434a1[_0xe627('0x89')]['tag']||undefined}}:{},'required':_0x3434a1[_0xe627('0x89')][_0xe627('0xa4')]?!![]:![]}];}else{_0xc4f431[_0xe627('0x9a')]=[{'all':!![]}];}}return _0x2b7158[_0x3e37cc['childModel']][_0xe627('0x8')](_0xc4f431);})['then'](function(_0x5d5aaa){_0x3d5b51[_0xe627('0xa1')]=_0x5d5aaa;if(_0x1c9628===_0xe627('0x2d')&&_0x3434a1[_0xe627('0x89')][_0xe627('0xa6')]===_0xe627('0xa7')){var _0x17ca45=[];for(var _0x5c424a=0x0;_0x5c424a<_0x3d5b51[_0xe627('0xa1')][_0xe627('0x81')];_0x5c424a++){_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xa8'),_0x3d5b51['rows'][_0x5c424a][_0xe627('0xa9')]));_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xaa'),_0x3d5b51[_0xe627('0xa1')][_0x5c424a][_0xe627('0xa9')]));_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xab'),_0x3d5b51['rows'][_0x5c424a]['dataValues']));_0x17ca45['push'](_0x42706c(_0xe627('0xac'),_0x3d5b51[_0xe627('0xa1')][_0x5c424a]['dataValues']));_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xad'),_0x3d5b51['rows'][_0x5c424a]['dataValues']));_0x17ca45['push'](_0x42706c(_0xe627('0xae'),_0x3d5b51[_0xe627('0xa1')][_0x5c424a]['dataValues']));}return Promise[_0xe627('0x84')](_0x17ca45)['then'](function(){return _0x3d5b51;});}return _0x3d5b51;});}});}}});};
\ No newline at end of file
index 36b1ff9..d36ece4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde81=['stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s'];(function(_0x310a1b,_0x4c9129){var _0xdea206=function(_0x1f1e8d){while(--_0x1f1e8d){_0x310a1b['push'](_0x310a1b['shift']());}};_0xdea206(++_0x4c9129);}(_0xde81,0x109));var _0x1de8=function(_0x4f492c,_0x2f5d87){_0x4f492c=_0x4f492c-0x0;var _0x347ea5=_0xde81[_0x4f492c];return _0x347ea5;};'use strict';var _=require(_0x1de8('0x0'));var util=require(_0x1de8('0x1'));var moment=require(_0x1de8('0x2'));var BPromise=require(_0x1de8('0x3'));var rs=require(_0x1de8('0x4'));var fs=require('fs');var Redis=require(_0x1de8('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1de8('0x6'))('rpc');var config=require(_0x1de8('0x7'));var jayson=require(_0x1de8('0x8'));var client=jayson[_0x1de8('0x9')][_0x1de8('0xa')]({'port':0x232a});config[_0x1de8('0xb')]=_[_0x1de8('0xc')](config[_0x1de8('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1de8('0xb')]));require('./userProfile.socket')[_0x1de8('0xd')](socket);function respondWithRpcPromise(_0x1d6e97,_0x2ed525,_0x587afa){return new BPromise(function(_0x2c1bb5,_0x14fd0f){return client[_0x1de8('0xe')](_0x1d6e97,_0x587afa)[_0x1de8('0xf')](function(_0x100d62){logger[_0x1de8('0x10')](_0x1de8('0x11'),_0x2ed525,_0x1de8('0x12'));logger[_0x1de8('0x13')](_0x1de8('0x14'),_0x2ed525,'request\x20sent',JSON[_0x1de8('0x15')](_0x100d62));if(_0x100d62['error']){if(_0x100d62[_0x1de8('0x16')][_0x1de8('0x17')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x2ed525,_0x100d62[_0x1de8('0x16')][_0x1de8('0x18')]);return _0x14fd0f(_0x100d62[_0x1de8('0x16')][_0x1de8('0x18')]);}logger['error'](_0x1de8('0x11'),_0x2ed525,_0x100d62[_0x1de8('0x16')][_0x1de8('0x18')]);return _0x2c1bb5(_0x100d62['error'][_0x1de8('0x18')]);}else{logger[_0x1de8('0x10')]('UserProfile,\x20%s,\x20%s',_0x2ed525,_0x1de8('0x12'));_0x2c1bb5(_0x100d62['result']['message']);}})[_0x1de8('0x19')](function(_0x53515e){logger[_0x1de8('0x16')](_0x1de8('0x11'),_0x2ed525,_0x53515e);_0x14fd0f(_0x53515e);});});}
\ No newline at end of file
+var _0xa280=['http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x22290b,_0xae5a58){var _0x2eb674=function(_0x247efa){while(--_0x247efa){_0x22290b['push'](_0x22290b['shift']());}};_0x2eb674(++_0xae5a58);}(_0xa280,0xc4));var _0x0a28=function(_0x4e5a5b,_0x5801f0){_0x4e5a5b=_0x4e5a5b-0x0;var _0x314bec=_0xa280[_0x4e5a5b];return _0x314bec;};'use strict';var _=require(_0x0a28('0x0'));var util=require(_0x0a28('0x1'));var moment=require('moment');var BPromise=require(_0x0a28('0x2'));var rs=require(_0x0a28('0x3'));var fs=require('fs');var Redis=require(_0x0a28('0x4'));var db=require(_0x0a28('0x5'))['db'];var utils=require(_0x0a28('0x6'));var logger=require(_0x0a28('0x7'))(_0x0a28('0x8'));var config=require(_0x0a28('0x9'));var jayson=require(_0x0a28('0xa'));var client=jayson[_0x0a28('0xb')][_0x0a28('0xc')]({'port':0x232a});config[_0x0a28('0xd')]=_[_0x0a28('0xe')](config[_0x0a28('0xd')],{'host':_0x0a28('0xf'),'port':0x18eb});var socket=require(_0x0a28('0x10'))(new Redis(config[_0x0a28('0xd')]));require(_0x0a28('0x11'))['register'](socket);function respondWithRpcPromise(_0x11b36e,_0x28bca7,_0x48cbf1){return new BPromise(function(_0x30e340,_0x1ad1ef){return client['request'](_0x11b36e,_0x48cbf1)['then'](function(_0x1a8ad4){logger[_0x0a28('0x12')](_0x0a28('0x13'),_0x28bca7,_0x0a28('0x14'));logger[_0x0a28('0x15')](_0x0a28('0x16'),_0x28bca7,_0x0a28('0x14'),JSON['stringify'](_0x1a8ad4));if(_0x1a8ad4[_0x0a28('0x17')]){if(_0x1a8ad4[_0x0a28('0x17')]['code']===0x1f4){logger[_0x0a28('0x17')](_0x0a28('0x13'),_0x28bca7,_0x1a8ad4[_0x0a28('0x17')][_0x0a28('0x18')]);return _0x1ad1ef(_0x1a8ad4['error'][_0x0a28('0x18')]);}logger[_0x0a28('0x17')](_0x0a28('0x13'),_0x28bca7,_0x1a8ad4[_0x0a28('0x17')]['message']);return _0x30e340(_0x1a8ad4[_0x0a28('0x17')][_0x0a28('0x18')]);}else{logger[_0x0a28('0x12')](_0x0a28('0x13'),_0x28bca7,'request\x20sent');_0x30e340(_0x1a8ad4['result'][_0x0a28('0x18')]);}})[_0x0a28('0x19')](function(_0x169bb6){logger['error'](_0x0a28('0x13'),_0x28bca7,_0x169bb6);_0x1ad1ef(_0x169bb6);});});}
\ No newline at end of file
index 6c549af..070caa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a0f=['./userProfile.events','save','remove','update','emit','removeListener','register','length','userProfile:'];(function(_0x218005,_0x4abdf5){var _0x14daac=function(_0x42961d){while(--_0x42961d){_0x218005['push'](_0x218005['shift']());}};_0x14daac(++_0x4abdf5);}(_0x5a0f,0xfc));var _0xf5a0=function(_0x1f5a67,_0x3ae48a){_0x1f5a67=_0x1f5a67-0x0;var _0x1b570c=_0x5a0f[_0x1f5a67];return _0x1b570c;};'use strict';var UserProfileEvents=require(_0xf5a0('0x0'));var events=[_0xf5a0('0x1'),_0xf5a0('0x2'),_0xf5a0('0x3')];function createListener(_0x2f54e9,_0x5771fb){return function(_0x4d226f){_0x5771fb[_0xf5a0('0x4')](_0x2f54e9,_0x4d226f);};}function removeListener(_0x56f1eb,_0x520c07){return function(){UserProfileEvents[_0xf5a0('0x5')](_0x56f1eb,_0x520c07);};}exports[_0xf5a0('0x6')]=function(_0x1d3fcb){for(var _0x5099f5=0x0,_0xcc4df0=events[_0xf5a0('0x7')];_0x5099f5<_0xcc4df0;_0x5099f5++){var _0xdd9cb4=events[_0x5099f5];var _0x2647b0=createListener(_0xf5a0('0x8')+_0xdd9cb4,_0x1d3fcb);UserProfileEvents['on'](_0xdd9cb4,_0x2647b0);}};
\ No newline at end of file
+var _0xd75a=['length','userProfile:','save','remove','update','emit','removeListener'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0xd75a,0xaa));var _0xad75=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd75a[_0x122ef9];return _0x42fba0;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xad75('0x0'),_0xad75('0x1'),_0xad75('0x2')];function createListener(_0x24499f,_0x2d83da){return function(_0x1321df){_0x2d83da[_0xad75('0x3')](_0x24499f,_0x1321df);};}function removeListener(_0x32db2f,_0x2a3a22){return function(){UserProfileEvents[_0xad75('0x4')](_0x32db2f,_0x2a3a22);};}exports['register']=function(_0x582663){for(var _0x4d7418=0x0,_0x153f31=events[_0xad75('0x5')];_0x4d7418<_0x153f31;_0x4d7418++){var _0x4a8f56=events[_0x4d7418];var _0x3f5c0c=createListener(_0xad75('0x6')+_0x4a8f56,_0x582663);UserProfileEvents['on'](_0x4a8f56,_0x3f5c0c);}};
\ No newline at end of file
index d2d643b..ece5732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a89=['index','/describe','describe','show','post','create','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x4a578e,_0x466c76){var _0x5b4711=function(_0xcd621d){while(--_0xcd621d){_0x4a578e['push'](_0x4a578e['shift']());}};_0x5b4711(++_0x466c76);}(_0x6a89,0x96));var _0x96a8=function(_0x5b8a90,_0x571f55){_0x5b8a90=_0x5b8a90-0x0;var _0x3fb741=_0x6a89[_0x5b8a90];return _0x3fb741;};'use strict';var multer=require(_0x96a8('0x0'));var util=require(_0x96a8('0x1'));var path=require(_0x96a8('0x2'));var timeout=require(_0x96a8('0x3'));var express=require(_0x96a8('0x4'));var router=express[_0x96a8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x96a8('0x6'));var interaction=require(_0x96a8('0x7'));var config=require('../../config/environment');var controller=require('./userProfileResource.controller');router[_0x96a8('0x8')]('/',auth[_0x96a8('0x9')](),controller[_0x96a8('0xa')]);router['get'](_0x96a8('0xb'),auth['isAuthenticated'](),controller[_0x96a8('0xc')]);router[_0x96a8('0x8')]('/:id',auth[_0x96a8('0x9')](),controller[_0x96a8('0xd')]);router[_0x96a8('0xe')]('/',auth['isAuthenticated'](),controller[_0x96a8('0xf')]);router['put'](_0x96a8('0x10'),auth['isAuthenticated'](),controller[_0x96a8('0x11')]);router['delete'](_0x96a8('0x10'),auth[_0x96a8('0x9')](),controller[_0x96a8('0x12')]);module[_0x96a8('0x13')]=router;
\ No newline at end of file
+var _0xd55b=['describe','/:id','post','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/describe'];(function(_0x3c22f7,_0x1fb12a){var _0x537f59=function(_0x471688){while(--_0x471688){_0x3c22f7['push'](_0x3c22f7['shift']());}};_0x537f59(++_0x1fb12a);}(_0xd55b,0xc2));var _0xbd55=function(_0x1bc6f7,_0x5bb7c5){_0x1bc6f7=_0x1bc6f7-0x0;var _0x327d8d=_0xd55b[_0x1bc6f7];return _0x327d8d;};'use strict';var multer=require(_0xbd55('0x0'));var util=require('util');var path=require(_0xbd55('0x1'));var timeout=require('connect-timeout');var express=require(_0xbd55('0x2'));var router=express[_0xbd55('0x3')]();var fs_extra=require(_0xbd55('0x4'));var auth=require(_0xbd55('0x5'));var interaction=require(_0xbd55('0x6'));var config=require('../../config/environment');var controller=require('./userProfileResource.controller');router['get']('/',auth[_0xbd55('0x7')](),controller['index']);router[_0xbd55('0x8')](_0xbd55('0x9'),auth['isAuthenticated'](),controller[_0xbd55('0xa')]);router['get'](_0xbd55('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xbd55('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xbd55('0xb'),auth['isAuthenticated'](),controller[_0xbd55('0xd')]);router[_0xbd55('0xe')](_0xbd55('0xb'),auth[_0xbd55('0x7')](),controller[_0xbd55('0xf')]);module[_0xbd55('0x10')]=router;
\ No newline at end of file
index 615acb3..95d6f59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb4a=['exports','INTEGER','STRING'];(function(_0x534845,_0x866d61){var _0x3e65f2=function(_0x5a1795){while(--_0x5a1795){_0x534845['push'](_0x534845['shift']());}};_0x3e65f2(++_0x866d61);}(_0xfb4a,0x9c));var _0xafb4=function(_0x622035,_0x1a4b91){_0x622035=_0x622035-0x0;var _0x326cf2=_0xfb4a[_0x622035];return _0x326cf2;};'use strict';var Sequelize=require('sequelize');module[_0xafb4('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xafb4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xafb4('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x9ebf=['STRING','INTEGER','exports'];(function(_0x5a93f0,_0x172b1b){var _0x53844d=function(_0x19ba69){while(--_0x19ba69){_0x5a93f0['push'](_0x5a93f0['shift']());}};_0x53844d(++_0x172b1b);}(_0x9ebf,0x143));var _0xf9eb=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x9ebf[_0x4e676e];return _0x336a3c;};'use strict';var Sequelize=require('sequelize');module[_0xf9eb('0x0')]={'name':{'type':Sequelize[_0xf9eb('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf9eb('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xf9eb('0x1')],'allowNull':![]}};
\ No newline at end of file
index 7edc8da..6b5521d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['util','path','to-csv','ejs','fs-extra','crypto','jsforce','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','apply','reject','save','then','destroy','end','error','name','send','index','map','UserProfileResource','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','update','find','body','describe','eml-format','rimraf','request-promise','bluebird','mustache'];(function(_0x48366a,_0x48bc2a){var _0x172769=function(_0x1792f1){while(--_0x1792f1){_0x48366a['push'](_0x48366a['shift']());}};_0x172769(++_0x48bc2a);}(_0xb016,0x159));var _0x6b01=function(_0x257244,_0x1bd4c5){_0x257244=_0x257244-0x0;var _0x3b3780=_0xb016[_0x257244];return _0x3b3780;};'use strict';var emlformat=require(_0x6b01('0x0'));var rimraf=require(_0x6b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b01('0x2'));var moment=require('moment');var BPromise=require(_0x6b01('0x3'));var Mustache=require(_0x6b01('0x4'));var util=require(_0x6b01('0x5'));var path=require(_0x6b01('0x6'));var sox=require('sox');var csv=require(_0x6b01('0x7'));var ejs=require(_0x6b01('0x8'));var fs=require('fs');var fs_extra=require(_0x6b01('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6b01('0xa'));var jsforce=require(_0x6b01('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6b01('0xc'));var Papa=require(_0x6b01('0xd'));var Redis=require(_0x6b01('0xe'));var authService=require(_0x6b01('0xf'));var qs=require(_0x6b01('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b01('0x11'))(_0x6b01('0x12'));var utils=require(_0x6b01('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6b01('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51f976,_0x26f2a0){_0x26f2a0=_0x26f2a0||0xcc;return function(_0x4fa826){if(_0x4fa826){return _0x51f976[_0x6b01('0x15')](_0x26f2a0);}return _0x51f976[_0x6b01('0x16')](_0x26f2a0)['end']();};}function respondWithResult(_0x2c305e,_0x4ea5fa){_0x4ea5fa=_0x4ea5fa||0xc8;return function(_0x50d778){if(_0x50d778){return _0x2c305e['status'](_0x4ea5fa)[_0x6b01('0x17')](_0x50d778);}};}function respondWithFilteredResult(_0x4cbd38,_0x5b2f60){return function(_0x3a259f){if(_0x3a259f){var _0x327e86=typeof _0x5b2f60[_0x6b01('0x18')]===_0x6b01('0x19')&&typeof _0x5b2f60[_0x6b01('0x1a')]===_0x6b01('0x19');var _0x122769=_0x3a259f[_0x6b01('0x1b')];var _0x9c6571=_0x327e86?0x0:_0x5b2f60[_0x6b01('0x18')];var _0x18f336=_0x327e86?_0x3a259f['count']:_0x5b2f60[_0x6b01('0x18')]+_0x5b2f60[_0x6b01('0x1a')];var _0x3b0bab;if(_0x18f336>=_0x122769){_0x18f336=_0x122769;_0x3b0bab=0xc8;}else{_0x3b0bab=0xce;}_0x4cbd38[_0x6b01('0x16')](_0x3b0bab);return _0x4cbd38[_0x6b01('0x1c')](_0x6b01('0x1d'),_0x9c6571+'-'+_0x18f336+'/'+_0x122769)[_0x6b01('0x17')](_0x3a259f);}return null;};}function patchUpdates(_0x3c0573){return function(_0x54a942){try{jsonpatch[_0x6b01('0x1e')](_0x54a942,_0x3c0573,!![]);}catch(_0xc1f453){return BPromise[_0x6b01('0x1f')](_0xc1f453);}return _0x54a942[_0x6b01('0x20')]();};}function saveUpdates(_0x1fced4,_0x181b09){return function(_0x2cea6e){if(_0x2cea6e){return _0x2cea6e['update'](_0x1fced4)[_0x6b01('0x21')](function(_0xcf9200){return _0xcf9200;});}return null;};}function removeEntity(_0x42c990,_0x51243c){return function(_0x399808){if(_0x399808){return _0x399808[_0x6b01('0x22')]()[_0x6b01('0x21')](function(){_0x42c990[_0x6b01('0x16')](0xcc)[_0x6b01('0x23')]();});}};}function handleEntityNotFound(_0x2456e9,_0x1b46fb){return function(_0x136452){if(!_0x136452){_0x2456e9[_0x6b01('0x15')](0x194);}return _0x136452;};}function handleError(_0x152dda,_0x3c0607){_0x3c0607=_0x3c0607||0x1f4;return function(_0xa846d8){logger[_0x6b01('0x24')](_0xa846d8['stack']);if(_0xa846d8[_0x6b01('0x25')]){delete _0xa846d8[_0x6b01('0x25')];}_0x152dda[_0x6b01('0x16')](_0x3c0607)[_0x6b01('0x26')](_0xa846d8);};}exports[_0x6b01('0x27')]=function(_0x528cbd,_0x54f030){var _0x3fae61={},_0x3df3d4={},_0xc574c={'count':0x0,'rows':[]};var _0x8883d1=_[_0x6b01('0x28')](db[_0x6b01('0x29')]['rawAttributes'],function(_0x39f193){return{'name':_0x39f193['fieldName'],'type':_0x39f193[_0x6b01('0x2a')]['key']};});_0x3df3d4[_0x6b01('0x2b')]=_[_0x6b01('0x28')](_0x8883d1,_0x6b01('0x25'));_0x3df3d4[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x528cbd['query']);_0x3df3d4[_0x6b01('0x2e')]=_[_0x6b01('0x2f')](_0x3df3d4[_0x6b01('0x2b')],_0x3df3d4['query']);_0x3fae61['attributes']=_[_0x6b01('0x2f')](_0x3df3d4['model'],qs[_0x6b01('0x30')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x30')]));_0x3fae61['attributes']=_0x3fae61[_0x6b01('0x31')][_0x6b01('0x32')]?_0x3fae61[_0x6b01('0x31')]:_0x3df3d4['model'];if(!_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x33')](_0x6b01('0x34'))){_0x3fae61[_0x6b01('0x1a')]=qs[_0x6b01('0x1a')](_0x528cbd['query'][_0x6b01('0x1a')]);_0x3fae61[_0x6b01('0x18')]=qs[_0x6b01('0x18')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x18')]);}_0x3fae61[_0x6b01('0x35')]=qs[_0x6b01('0x36')](_0x528cbd[_0x6b01('0x2c')]['sort']);_0x3fae61[_0x6b01('0x37')]=qs['filters'](_[_0x6b01('0x38')](_0x528cbd[_0x6b01('0x2c')],_0x3df3d4[_0x6b01('0x2e')]),_0x8883d1);if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]){_0x3fae61[_0x6b01('0x37')]=_[_0x6b01('0x3a')](_0x3fae61['where'],{'$or':_[_0x6b01('0x28')](_0x8883d1,function(_0x15f274){if(_0x15f274[_0x6b01('0x2a')]!==_0x6b01('0x3b')){var _0x1ca3aa={};_0x1ca3aa[_0x15f274[_0x6b01('0x25')]]={'$like':'%'+_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]+'%'};return _0x1ca3aa;}})});}_0x3fae61=_['merge']({},_0x3fae61,_0x528cbd[_0x6b01('0x3c')]);var _0x55907f={'where':_0x3fae61[_0x6b01('0x37')]};return db[_0x6b01('0x29')]['count'](_0x55907f)[_0x6b01('0x21')](function(_0x2e661b){_0xc574c[_0x6b01('0x1b')]=_0x2e661b;if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0x3fae61[_0x6b01('0x3e')]=[{'all':!![]}];}return db[_0x6b01('0x29')][_0x6b01('0x3f')](_0x3fae61);})[_0x6b01('0x21')](function(_0x17f335){_0xc574c['rows']=_0x17f335;return _0xc574c;})[_0x6b01('0x21')](respondWithFilteredResult(_0x54f030,_0x3fae61))[_0x6b01('0x40')](handleError(_0x54f030,null));};exports['show']=function(_0x52cec0,_0x32b9ec){var _0xd11195={'raw':![],'where':{'id':_0x52cec0[_0x6b01('0x41')]['id']}},_0x558ec1={};_0x558ec1[_0x6b01('0x2b')]=_['keys'](db[_0x6b01('0x29')]['rawAttributes']);_0x558ec1[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x52cec0[_0x6b01('0x2c')]);_0x558ec1['filters']=_[_0x6b01('0x2f')](_0x558ec1[_0x6b01('0x2b')],_0x558ec1['query']);_0xd11195['attributes']=_['intersection'](_0x558ec1[_0x6b01('0x2b')],qs[_0x6b01('0x30')](_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x30')]));_0xd11195[_0x6b01('0x31')]=_0xd11195[_0x6b01('0x31')]['length']?_0xd11195[_0x6b01('0x31')]:_0x558ec1[_0x6b01('0x2b')];if(_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0xd11195[_0x6b01('0x3e')]=[{'all':!![]}];}_0xd11195=_[_0x6b01('0x3a')]({},_0xd11195,_0x52cec0['options']);return db[_0x6b01('0x29')]['find'](_0xd11195)['then'](handleEntityNotFound(_0x32b9ec,null))[_0x6b01('0x21')](respondWithResult(_0x32b9ec,null))[_0x6b01('0x40')](handleError(_0x32b9ec,null));};exports['create']=function(_0x408bb0,_0x27442e){return db[_0x6b01('0x29')]['create'](_0x408bb0['body'],{})['then'](respondWithResult(_0x27442e,0xc9))[_0x6b01('0x40')](handleError(_0x27442e,null));};exports[_0x6b01('0x42')]=function(_0x518d94,_0x34cef6){if(_0x518d94['body']['id']){delete _0x518d94['body']['id'];}return db['UserProfileResource'][_0x6b01('0x43')]({'where':{'id':_0x518d94[_0x6b01('0x41')]['id']}})['then'](handleEntityNotFound(_0x34cef6,null))['then'](saveUpdates(_0x518d94[_0x6b01('0x44')],null))['then'](respondWithResult(_0x34cef6,null))[_0x6b01('0x40')](handleError(_0x34cef6,null));};exports[_0x6b01('0x22')]=function(_0x32d446,_0x172a56){return db[_0x6b01('0x29')]['find']({'where':{'id':_0x32d446[_0x6b01('0x41')]['id']}})[_0x6b01('0x21')](handleEntityNotFound(_0x172a56,null))[_0x6b01('0x21')](removeEntity(_0x172a56,null))['catch'](handleError(_0x172a56,null));};exports[_0x6b01('0x45')]=function(_0x13ab4f,_0x5617d7){return db[_0x6b01('0x29')][_0x6b01('0x45')]()[_0x6b01('0x21')](respondWithResult(_0x5617d7,null))[_0x6b01('0x40')](handleError(_0x5617d7,null));};
\ No newline at end of file
+var _0xe3da=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','order','sort','where','pick','map','VIRTUAL','filter','merge','options','count','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x45b85e,_0x161ab6){var _0x20c599=function(_0x440d10){while(--_0x440d10){_0x45b85e['push'](_0x45b85e['shift']());}};_0x20c599(++_0x161ab6);}(_0xe3da,0x1cd));var _0xae3d=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe3da[_0x4a9fb1];return _0x348672;};'use strict';var emlformat=require(_0xae3d('0x0'));var rimraf=require(_0xae3d('0x1'));var zipdir=require(_0xae3d('0x2'));var jsonpatch=require(_0xae3d('0x3'));var rp=require(_0xae3d('0x4'));var moment=require(_0xae3d('0x5'));var BPromise=require(_0xae3d('0x6'));var Mustache=require(_0xae3d('0x7'));var util=require(_0xae3d('0x8'));var path=require(_0xae3d('0x9'));var sox=require(_0xae3d('0xa'));var csv=require(_0xae3d('0xb'));var ejs=require(_0xae3d('0xc'));var fs=require('fs');var fs_extra=require(_0xae3d('0xd'));var _=require(_0xae3d('0xe'));var squel=require(_0xae3d('0xf'));var crypto=require('crypto');var jsforce=require(_0xae3d('0x10'));var deskjs=require(_0xae3d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae3d('0x12'));var Redis=require(_0xae3d('0x13'));var authService=require(_0xae3d('0x14'));var qs=require(_0xae3d('0x15'));var as=require(_0xae3d('0x16'));var hardwareService=require(_0xae3d('0x17'));var logger=require('../../config/logger')(_0xae3d('0x18'));var utils=require('../../config/utils');var config=require(_0xae3d('0x19'));var licenseUtil=require(_0xae3d('0x1a'));var db=require(_0xae3d('0x1b'))['db'];function respondWithStatusCode(_0x172f7a,_0x48aa74){_0x48aa74=_0x48aa74||0xcc;return function(_0xfb7869){if(_0xfb7869){return _0x172f7a[_0xae3d('0x1c')](_0x48aa74);}return _0x172f7a[_0xae3d('0x1d')](_0x48aa74)[_0xae3d('0x1e')]();};}function respondWithResult(_0x2afdd3,_0x430659){_0x430659=_0x430659||0xc8;return function(_0x31498d){if(_0x31498d){return _0x2afdd3['status'](_0x430659)[_0xae3d('0x1f')](_0x31498d);}};}function respondWithFilteredResult(_0x42f4b4,_0x46295b){return function(_0x230afb){if(_0x230afb){var _0x192c13=typeof _0x46295b[_0xae3d('0x20')]==='undefined'&&typeof _0x46295b[_0xae3d('0x21')]===_0xae3d('0x22');var _0x2e31f1=_0x230afb['count'];var _0x3f8cf9=_0x192c13?0x0:_0x46295b[_0xae3d('0x20')];var _0x558e42=_0x192c13?_0x230afb['count']:_0x46295b[_0xae3d('0x20')]+_0x46295b[_0xae3d('0x21')];var _0x19c44d;if(_0x558e42>=_0x2e31f1){_0x558e42=_0x2e31f1;_0x19c44d=0xc8;}else{_0x19c44d=0xce;}_0x42f4b4[_0xae3d('0x1d')](_0x19c44d);return _0x42f4b4[_0xae3d('0x23')]('Content-Range',_0x3f8cf9+'-'+_0x558e42+'/'+_0x2e31f1)[_0xae3d('0x1f')](_0x230afb);}return null;};}function patchUpdates(_0x48f00e){return function(_0x4a09c2){try{jsonpatch[_0xae3d('0x24')](_0x4a09c2,_0x48f00e,!![]);}catch(_0x1415e8){return BPromise[_0xae3d('0x25')](_0x1415e8);}return _0x4a09c2[_0xae3d('0x26')]();};}function saveUpdates(_0x3e7afc,_0x26c419){return function(_0x155099){if(_0x155099){return _0x155099[_0xae3d('0x27')](_0x3e7afc)[_0xae3d('0x28')](function(_0x300be8){return _0x300be8;});}return null;};}function removeEntity(_0x9bf34a,_0x37f5ff){return function(_0x1b2acb){if(_0x1b2acb){return _0x1b2acb[_0xae3d('0x29')]()[_0xae3d('0x28')](function(){_0x9bf34a[_0xae3d('0x1d')](0xcc)[_0xae3d('0x1e')]();});}};}function handleEntityNotFound(_0x2131e9,_0x1b1217){return function(_0x5d45db){if(!_0x5d45db){_0x2131e9[_0xae3d('0x1c')](0x194);}return _0x5d45db;};}function handleError(_0x185e71,_0xb5940){_0xb5940=_0xb5940||0x1f4;return function(_0x52df0f){logger[_0xae3d('0x2a')](_0x52df0f[_0xae3d('0x2b')]);if(_0x52df0f[_0xae3d('0x2c')]){delete _0x52df0f['name'];}_0x185e71['status'](_0xb5940)[_0xae3d('0x2d')](_0x52df0f);};}exports[_0xae3d('0x2e')]=function(_0x3a5840,_0x3114f9){var _0xb69ec9={},_0x561371={},_0x1d1483={'count':0x0,'rows':[]};var _0x3a2434=_['map'](db[_0xae3d('0x2f')][_0xae3d('0x30')],function(_0x2cf750){return{'name':_0x2cf750[_0xae3d('0x31')],'type':_0x2cf750[_0xae3d('0x32')][_0xae3d('0x33')]};});_0x561371['model']=_['map'](_0x3a2434,'name');_0x561371[_0xae3d('0x34')]=_[_0xae3d('0x35')](_0x3a5840[_0xae3d('0x34')]);_0x561371[_0xae3d('0x36')]=_['intersection'](_0x561371[_0xae3d('0x37')],_0x561371[_0xae3d('0x34')]);_0xb69ec9[_0xae3d('0x38')]=_[_0xae3d('0x39')](_0x561371[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0x3a5840[_0xae3d('0x34')]['fields']));_0xb69ec9[_0xae3d('0x38')]=_0xb69ec9['attributes']['length']?_0xb69ec9[_0xae3d('0x38')]:_0x561371['model'];if(!_0x3a5840[_0xae3d('0x34')]['hasOwnProperty']('nolimit')){_0xb69ec9[_0xae3d('0x21')]=qs[_0xae3d('0x21')](_0x3a5840[_0xae3d('0x34')]['limit']);_0xb69ec9[_0xae3d('0x20')]=qs['offset'](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x20')]);}_0xb69ec9[_0xae3d('0x3b')]=qs[_0xae3d('0x3c')](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x3c')]);_0xb69ec9[_0xae3d('0x3d')]=qs[_0xae3d('0x36')](_[_0xae3d('0x3e')](_0x3a5840[_0xae3d('0x34')],_0x561371[_0xae3d('0x36')]),_0x3a2434);if(_0x3a5840['query']['filter']){_0xb69ec9[_0xae3d('0x3d')]=_['merge'](_0xb69ec9[_0xae3d('0x3d')],{'$or':_[_0xae3d('0x3f')](_0x3a2434,function(_0x1db3c1){if(_0x1db3c1[_0xae3d('0x32')]!==_0xae3d('0x40')){var _0x35db44={};_0x35db44[_0x1db3c1[_0xae3d('0x2c')]]={'$like':'%'+_0x3a5840[_0xae3d('0x34')][_0xae3d('0x41')]+'%'};return _0x35db44;}})});}_0xb69ec9=_[_0xae3d('0x42')]({},_0xb69ec9,_0x3a5840[_0xae3d('0x43')]);var _0x549db8={'where':_0xb69ec9[_0xae3d('0x3d')]};return db[_0xae3d('0x2f')][_0xae3d('0x44')](_0x549db8)['then'](function(_0x4df102){_0x1d1483[_0xae3d('0x44')]=_0x4df102;if(_0x3a5840[_0xae3d('0x34')]['includeAll']){_0xb69ec9[_0xae3d('0x45')]=[{'all':!![]}];}return db[_0xae3d('0x2f')][_0xae3d('0x46')](_0xb69ec9);})[_0xae3d('0x28')](function(_0x436a04){_0x1d1483[_0xae3d('0x47')]=_0x436a04;return _0x1d1483;})['then'](respondWithFilteredResult(_0x3114f9,_0xb69ec9))[_0xae3d('0x48')](handleError(_0x3114f9,null));};exports[_0xae3d('0x49')]=function(_0xce7f34,_0x938811){var _0x1fef90={'raw':![],'where':{'id':_0xce7f34[_0xae3d('0x4a')]['id']}},_0x515220={};_0x515220['model']=_[_0xae3d('0x35')](db[_0xae3d('0x2f')][_0xae3d('0x30')]);_0x515220[_0xae3d('0x34')]=_['keys'](_0xce7f34['query']);_0x515220['filters']=_[_0xae3d('0x39')](_0x515220[_0xae3d('0x37')],_0x515220['query']);_0x1fef90['attributes']=_['intersection'](_0x515220[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0xce7f34[_0xae3d('0x34')][_0xae3d('0x3a')]));_0x1fef90[_0xae3d('0x38')]=_0x1fef90[_0xae3d('0x38')][_0xae3d('0x4b')]?_0x1fef90['attributes']:_0x515220['model'];if(_0xce7f34['query'][_0xae3d('0x4c')]){_0x1fef90['include']=[{'all':!![]}];}_0x1fef90=_[_0xae3d('0x42')]({},_0x1fef90,_0xce7f34[_0xae3d('0x43')]);return db[_0xae3d('0x2f')][_0xae3d('0x4d')](_0x1fef90)[_0xae3d('0x28')](handleEntityNotFound(_0x938811,null))[_0xae3d('0x28')](respondWithResult(_0x938811,null))[_0xae3d('0x48')](handleError(_0x938811,null));};exports[_0xae3d('0x4e')]=function(_0x38f92d,_0x4ed0f9){return db[_0xae3d('0x2f')]['create'](_0x38f92d['body'],{})['then'](respondWithResult(_0x4ed0f9,0xc9))[_0xae3d('0x48')](handleError(_0x4ed0f9,null));};exports[_0xae3d('0x27')]=function(_0x39f213,_0x6fa6c){if(_0x39f213['body']['id']){delete _0x39f213['body']['id'];}return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x39f213[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x6fa6c,null))['then'](saveUpdates(_0x39f213[_0xae3d('0x4f')],null))[_0xae3d('0x28')](respondWithResult(_0x6fa6c,null))[_0xae3d('0x48')](handleError(_0x6fa6c,null));};exports[_0xae3d('0x29')]=function(_0x2a6a24,_0x38ccf1){return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x2a6a24[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x38ccf1,null))[_0xae3d('0x28')](removeEntity(_0x38ccf1,null))[_0xae3d('0x48')](handleError(_0x38ccf1,null));};exports['describe']=function(_0x4f4694,_0x4c6dab){return db[_0xae3d('0x2f')][_0xae3d('0x50')]()['then'](respondWithResult(_0x4c6dab,null))[_0xae3d('0x48')](handleError(_0x4c6dab,null));};
\ No newline at end of file
index 9735561..5e5b4ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99f1=['user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource'];(function(_0x2785c5,_0x364d12){var _0x275828=function(_0x535ec4){while(--_0x535ec4){_0x2785c5['push'](_0x2785c5['shift']());}};_0x275828(++_0x364d12);}(_0x99f1,0xa8));var _0x199f=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x99f1[_0xfa634c];return _0x73e478;};'use strict';var _=require(_0x199f('0x0'));var util=require(_0x199f('0x1'));var logger=require(_0x199f('0x2'))('api');var moment=require(_0x199f('0x3'));var BPromise=require(_0x199f('0x4'));var rp=require(_0x199f('0x5'));var fs=require('fs');var path=require(_0x199f('0x6'));var rimraf=require(_0x199f('0x7'));var config=require(_0x199f('0x8'));var attributes=require(_0x199f('0x9'));module[_0x199f('0xa')]=function(_0x3c1b50,_0x3c6081){return _0x3c1b50['define'](_0x199f('0xb'),attributes,{'tableName':_0x199f('0xc'),'paranoid':![],'indexes':[{'name':_0x199f('0xd'),'fields':['resourceId',_0x199f('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b60=['resourceId','sectionId','lodash','util','api','request-promise','path','rimraf','../../config/environment','exports','UserProfileResource','user_profile_has_resources','compositeIndex'];(function(_0x55c8f0,_0x59b534){var _0x2edae6=function(_0x35c987){while(--_0x35c987){_0x55c8f0['push'](_0x55c8f0['shift']());}};_0x2edae6(++_0x59b534);}(_0x7b60,0x106));var _0x07b6=function(_0x5643df,_0x41aa37){_0x5643df=_0x5643df-0x0;var _0x45acf4=_0x7b60[_0x5643df];return _0x45acf4;};'use strict';var _=require(_0x07b6('0x0'));var util=require(_0x07b6('0x1'));var logger=require('../../config/logger')(_0x07b6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x07b6('0x3'));var fs=require('fs');var path=require(_0x07b6('0x4'));var rimraf=require(_0x07b6('0x5'));var config=require(_0x07b6('0x6'));var attributes=require('./userProfileResource.attributes');module[_0x07b6('0x7')]=function(_0xc77dbe,_0x52c78b){return _0xc77dbe['define'](_0x07b6('0x8'),attributes,{'tableName':_0x07b6('0x9'),'paranoid':![],'indexes':[{'name':_0x07b6('0xa'),'fields':[_0x07b6('0xb'),_0x07b6('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 60948ac..fadbfc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f7=['lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch'];(function(_0x109371,_0x441c8e){var _0x4fd858=function(_0x13504f){while(--_0x13504f){_0x109371['push'](_0x109371['shift']());}};_0x4fd858(++_0x441c8e);}(_0xf5f7,0xc6));var _0x7f5f=function(_0x266ed3,_0x1c9f6d){_0x266ed3=_0x266ed3-0x0;var _0x402274=_0xf5f7[_0x266ed3];return _0x402274;};'use strict';var _=require(_0x7f5f('0x0'));var util=require('util');var moment=require(_0x7f5f('0x1'));var BPromise=require(_0x7f5f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f5f('0x3'));var db=require(_0x7f5f('0x4'))['db'];var utils=require(_0x7f5f('0x5'));var logger=require('../../config/logger')(_0x7f5f('0x6'));var config=require(_0x7f5f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7f5f('0x8')][_0x7f5f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e5c76,_0x5c9027,_0x17a148){return new BPromise(function(_0xdf8709,_0x56b525){return client[_0x7f5f('0xa')](_0x1e5c76,_0x17a148)['then'](function(_0x3c0fbb){logger[_0x7f5f('0xb')](_0x7f5f('0xc'),_0x5c9027,_0x7f5f('0xd'));logger[_0x7f5f('0xe')](_0x7f5f('0xf'),_0x5c9027,'request\x20sent',JSON[_0x7f5f('0x10')](_0x3c0fbb));if(_0x3c0fbb['error']){if(_0x3c0fbb['error'][_0x7f5f('0x11')]===0x1f4){logger[_0x7f5f('0x12')](_0x7f5f('0xc'),_0x5c9027,_0x3c0fbb[_0x7f5f('0x12')][_0x7f5f('0x13')]);return _0x56b525(_0x3c0fbb[_0x7f5f('0x12')]['message']);}logger['error'](_0x7f5f('0xc'),_0x5c9027,_0x3c0fbb['error']['message']);return _0xdf8709(_0x3c0fbb[_0x7f5f('0x12')][_0x7f5f('0x13')]);}else{logger[_0x7f5f('0xb')](_0x7f5f('0xc'),_0x5c9027,_0x7f5f('0xd'));_0xdf8709(_0x3c0fbb[_0x7f5f('0x14')][_0x7f5f('0x13')]);}})[_0x7f5f('0x15')](function(_0x47b528){logger[_0x7f5f('0x12')](_0x7f5f('0xc'),_0x5c9027,_0x47b528);_0x56b525(_0x47b528);});});}
\ No newline at end of file
+var _0xd53c=['util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash'];(function(_0x5b38fd,_0x43541c){var _0x4a6248=function(_0x1cbe81){while(--_0x1cbe81){_0x5b38fd['push'](_0x5b38fd['shift']());}};_0x4a6248(++_0x43541c);}(_0xd53c,0xe6));var _0xcd53=function(_0x4ddcec,_0x21bce3){_0x4ddcec=_0x4ddcec-0x0;var _0x5eb7fc=_0xd53c[_0x4ddcec];return _0x5eb7fc;};'use strict';var _=require(_0xcd53('0x0'));var util=require(_0xcd53('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcd53('0x2'));var fs=require('fs');var Redis=require(_0xcd53('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcd53('0x4'));var logger=require(_0xcd53('0x5'))(_0xcd53('0x6'));var config=require(_0xcd53('0x7'));var jayson=require(_0xcd53('0x8'));var client=jayson[_0xcd53('0x9')][_0xcd53('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb68a57,_0x387a52,_0x16f8b4){return new BPromise(function(_0x339257,_0x5d0e68){return client[_0xcd53('0xb')](_0xb68a57,_0x16f8b4)['then'](function(_0x1e50a2){logger[_0xcd53('0xc')](_0xcd53('0xd'),_0x387a52,_0xcd53('0xe'));logger[_0xcd53('0xf')](_0xcd53('0x10'),_0x387a52,_0xcd53('0xe'),JSON['stringify'](_0x1e50a2));if(_0x1e50a2['error']){if(_0x1e50a2[_0xcd53('0x11')][_0xcd53('0x12')]===0x1f4){logger['error'](_0xcd53('0xd'),_0x387a52,_0x1e50a2[_0xcd53('0x11')][_0xcd53('0x13')]);return _0x5d0e68(_0x1e50a2[_0xcd53('0x11')][_0xcd53('0x13')]);}logger[_0xcd53('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x387a52,_0x1e50a2['error'][_0xcd53('0x13')]);return _0x339257(_0x1e50a2[_0xcd53('0x11')][_0xcd53('0x13')]);}else{logger['info'](_0xcd53('0xd'),_0x387a52,'request\x20sent');_0x339257(_0x1e50a2['result'][_0xcd53('0x13')]);}})[_0xcd53('0x14')](function(_0x11dd7a){logger[_0xcd53('0x11')](_0xcd53('0xd'),_0x387a52,_0x11dd7a);_0x5d0e68(_0x11dd7a);});});}
\ No newline at end of file
index 07c6c33..d3380fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd98d=['describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe'];(function(_0x5ab068,_0x4a888a){var _0x19faee=function(_0x156f9e){while(--_0x156f9e){_0x5ab068['push'](_0x5ab068['shift']());}};_0x19faee(++_0x4a888a);}(_0xd98d,0x1ae));var _0xdd98=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd98d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xdd98('0x0'));var path=require(_0xdd98('0x1'));var timeout=require('connect-timeout');var express=require(_0xdd98('0x2'));var router=express[_0xdd98('0x3')]();var fs_extra=require(_0xdd98('0x4'));var auth=require(_0xdd98('0x5'));var interaction=require(_0xdd98('0x6'));var config=require(_0xdd98('0x7'));var controller=require('./userProfileSection.controller');router['get']('/',auth[_0xdd98('0x8')](),controller[_0xdd98('0x9')]);router['get'](_0xdd98('0xa'),auth[_0xdd98('0x8')](),controller[_0xdd98('0xb')]);router['get'](_0xdd98('0xc'),auth[_0xdd98('0x8')](),controller[_0xdd98('0xd')]);router[_0xdd98('0xe')]('/',auth[_0xdd98('0x8')](),controller[_0xdd98('0xf')]);router[_0xdd98('0x10')]('/:id',auth[_0xdd98('0x8')](),controller[_0xdd98('0x11')]);router[_0xdd98('0x12')](_0xdd98('0xc'),auth[_0xdd98('0x8')](),controller[_0xdd98('0x13')]);module[_0xdd98('0x14')]=router;
\ No newline at end of file
+var _0x7d24=['update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','get','isAuthenticated','index','/describe','/:id','show','create','put'];(function(_0x5e8af2,_0x2a59b7){var _0x22dc5a=function(_0x3d81ca){while(--_0x3d81ca){_0x5e8af2['push'](_0x5e8af2['shift']());}};_0x22dc5a(++_0x2a59b7);}(_0x7d24,0x125));var _0x47d2=function(_0x43e75f,_0x354d61){_0x43e75f=_0x43e75f-0x0;var _0x2c1cbe=_0x7d24[_0x43e75f];return _0x2c1cbe;};'use strict';var multer=require(_0x47d2('0x0'));var util=require('util');var path=require(_0x47d2('0x1'));var timeout=require('connect-timeout');var express=require(_0x47d2('0x2'));var router=express[_0x47d2('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x47d2('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userProfileSection.controller');router[_0x47d2('0x5')]('/',auth[_0x47d2('0x6')](),controller[_0x47d2('0x7')]);router[_0x47d2('0x5')](_0x47d2('0x8'),auth[_0x47d2('0x6')](),controller['describe']);router['get'](_0x47d2('0x9'),auth[_0x47d2('0x6')](),controller[_0x47d2('0xa')]);router['post']('/',auth[_0x47d2('0x6')](),controller[_0x47d2('0xb')]);router[_0x47d2('0xc')]('/:id',auth[_0x47d2('0x6')](),controller[_0x47d2('0xd')]);router[_0x47d2('0xe')](_0x47d2('0x9'),auth[_0x47d2('0x6')](),controller[_0x47d2('0xf')]);module[_0x47d2('0x10')]=router;
\ No newline at end of file
index 9aa41db..ca8a1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['join','getDataValue','split','sequelize','exports','STRING','BOOLEAN','setDataValue','crudPermissions'];(function(_0x478c8a,_0x9afc92){var _0x3b6b3e=function(_0x37634e){while(--_0x37634e){_0x478c8a['push'](_0x478c8a['shift']());}};_0x3b6b3e(++_0x9afc92);}(_0x4e81,0x1bc));var _0x14e8=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0x4e81[_0x57a50d];return _0x1b25b3;};'use strict';var Sequelize=require(_0x14e8('0x0'));module[_0x14e8('0x1')]={'name':{'type':Sequelize[_0x14e8('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x14e8('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x14e8('0x2')],'set':function(_0x224121){this[_0x14e8('0x4')](_0x14e8('0x5'),_0x224121?_0x224121[_0x14e8('0x6')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x14e8('0x7')](_0x14e8('0x5'))[_0x14e8('0x8')](''):[];}}};
\ No newline at end of file
+var _0xae60=['setDataValue','join','getDataValue','crudPermissions','split','sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x51a134,_0x31a8a3){var _0x43ab27=function(_0x286e2b){while(--_0x286e2b){_0x51a134['push'](_0x51a134['shift']());}};_0x43ab27(++_0x31a8a3);}(_0xae60,0x1c7));var _0x0ae6=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0xae60[_0x45b034];return _0x509cb0;};'use strict';var Sequelize=require(_0x0ae6('0x0'));module[_0x0ae6('0x1')]={'name':{'type':Sequelize[_0x0ae6('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x0ae6('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x4c014f){this[_0x0ae6('0x5')]('crudPermissions',_0x4c014f?_0x4c014f[_0x0ae6('0x6')](''):[]);},'get':function(){return this[_0x0ae6('0x7')](_0x0ae6('0x8'))?this[_0x0ae6('0x7')](_0x0ae6('0x8'))[_0x0ae6('0x9')](''):[];}}};
\ No newline at end of file
index 1fbc942..affcebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x025e=['order','sort','where','pick','filter','merge','VIRTUAL','UserProfileSection','includeAll','include','findAll','catch','show','keys','options','create','body','update','params','find','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x025e,0xa5));var _0xe025=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x025e[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xe025('0x0'));var rimraf=require(_0xe025('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe025('0x2'));var rp=require('request-promise');var moment=require(_0xe025('0x3'));var BPromise=require(_0xe025('0x4'));var Mustache=require('mustache');var util=require(_0xe025('0x5'));var path=require(_0xe025('0x6'));var sox=require(_0xe025('0x7'));var csv=require(_0xe025('0x8'));var ejs=require(_0xe025('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe025('0xa'));var squel=require('squel');var crypto=require(_0xe025('0xb'));var jsforce=require(_0xe025('0xc'));var deskjs=require(_0xe025('0xd'));var toCsv=require('to-csv');var querystring=require(_0xe025('0xe'));var Papa=require('papaparse');var Redis=require(_0xe025('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe025('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe025('0x11'))(_0xe025('0x12'));var utils=require(_0xe025('0x13'));var config=require(_0xe025('0x14'));var licenseUtil=require(_0xe025('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10f2ef,_0x3cca98){_0x3cca98=_0x3cca98||0xcc;return function(_0x2a3c60){if(_0x2a3c60){return _0x10f2ef['sendStatus'](_0x3cca98);}return _0x10f2ef[_0xe025('0x16')](_0x3cca98)['end']();};}function respondWithResult(_0x482dd0,_0x33ab26){_0x33ab26=_0x33ab26||0xc8;return function(_0x73f26a){if(_0x73f26a){return _0x482dd0[_0xe025('0x16')](_0x33ab26)['json'](_0x73f26a);}};}function respondWithFilteredResult(_0x28aaa3,_0x1bdcd5){return function(_0x5b64a2){if(_0x5b64a2){var _0x8b638b=typeof _0x1bdcd5[_0xe025('0x17')]==='undefined'&&typeof _0x1bdcd5['limit']===_0xe025('0x18');var _0xdc5de0=_0x5b64a2[_0xe025('0x19')];var _0xa50a2b=_0x8b638b?0x0:_0x1bdcd5[_0xe025('0x17')];var _0x261877=_0x8b638b?_0x5b64a2[_0xe025('0x19')]:_0x1bdcd5['offset']+_0x1bdcd5[_0xe025('0x1a')];var _0x1b9e1b;if(_0x261877>=_0xdc5de0){_0x261877=_0xdc5de0;_0x1b9e1b=0xc8;}else{_0x1b9e1b=0xce;}_0x28aaa3[_0xe025('0x16')](_0x1b9e1b);return _0x28aaa3['set'](_0xe025('0x1b'),_0xa50a2b+'-'+_0x261877+'/'+_0xdc5de0)[_0xe025('0x1c')](_0x5b64a2);}return null;};}function patchUpdates(_0x3a90f9){return function(_0x19de00){try{jsonpatch[_0xe025('0x1d')](_0x19de00,_0x3a90f9,!![]);}catch(_0x1a05d4){return BPromise[_0xe025('0x1e')](_0x1a05d4);}return _0x19de00[_0xe025('0x1f')]();};}function saveUpdates(_0x269ff3,_0x2c51e2){return function(_0x93c443){if(_0x93c443){return _0x93c443['update'](_0x269ff3)[_0xe025('0x20')](function(_0x42d082){return _0x42d082;});}return null;};}function removeEntity(_0x6f879b,_0x5af367){return function(_0x2aadcf){if(_0x2aadcf){return _0x2aadcf[_0xe025('0x21')]()[_0xe025('0x20')](function(){_0x6f879b[_0xe025('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4daabc,_0x10bff4){return function(_0x1b4fc9){if(!_0x1b4fc9){_0x4daabc['sendStatus'](0x194);}return _0x1b4fc9;};}function handleError(_0x4bd5c3,_0x400966){_0x400966=_0x400966||0x1f4;return function(_0x2c1878){logger['error'](_0x2c1878[_0xe025('0x22')]);if(_0x2c1878['name']){delete _0x2c1878[_0xe025('0x23')];}_0x4bd5c3[_0xe025('0x16')](_0x400966)[_0xe025('0x24')](_0x2c1878);};}exports[_0xe025('0x25')]=function(_0xf7546,_0x35e923){var _0x427a80={},_0x1a85a5={},_0x2392ef={'count':0x0,'rows':[]};var _0x116991=_[_0xe025('0x26')](db['UserProfileSection'][_0xe025('0x27')],function(_0x5dec21){return{'name':_0x5dec21[_0xe025('0x28')],'type':_0x5dec21[_0xe025('0x29')][_0xe025('0x2a')]};});_0x1a85a5[_0xe025('0x2b')]=_['map'](_0x116991,_0xe025('0x23'));_0x1a85a5['query']=_['keys'](_0xf7546[_0xe025('0x2c')]);_0x1a85a5[_0xe025('0x2d')]=_['intersection'](_0x1a85a5[_0xe025('0x2b')],_0x1a85a5[_0xe025('0x2c')]);_0x427a80[_0xe025('0x2e')]=_[_0xe025('0x2f')](_0x1a85a5[_0xe025('0x2b')],qs[_0xe025('0x30')](_0xf7546[_0xe025('0x2c')][_0xe025('0x30')]));_0x427a80['attributes']=_0x427a80['attributes'][_0xe025('0x31')]?_0x427a80[_0xe025('0x2e')]:_0x1a85a5[_0xe025('0x2b')];if(!_0xf7546[_0xe025('0x2c')]['hasOwnProperty'](_0xe025('0x32'))){_0x427a80[_0xe025('0x1a')]=qs[_0xe025('0x1a')](_0xf7546[_0xe025('0x2c')]['limit']);_0x427a80[_0xe025('0x17')]=qs[_0xe025('0x17')](_0xf7546[_0xe025('0x2c')][_0xe025('0x17')]);}_0x427a80[_0xe025('0x33')]=qs['sort'](_0xf7546[_0xe025('0x2c')][_0xe025('0x34')]);_0x427a80[_0xe025('0x35')]=qs[_0xe025('0x2d')](_[_0xe025('0x36')](_0xf7546[_0xe025('0x2c')],_0x1a85a5[_0xe025('0x2d')]),_0x116991);if(_0xf7546[_0xe025('0x2c')][_0xe025('0x37')]){_0x427a80['where']=_[_0xe025('0x38')](_0x427a80[_0xe025('0x35')],{'$or':_[_0xe025('0x26')](_0x116991,function(_0x14161e){if(_0x14161e[_0xe025('0x29')]!==_0xe025('0x39')){var _0x21c2b2={};_0x21c2b2[_0x14161e[_0xe025('0x23')]]={'$like':'%'+_0xf7546[_0xe025('0x2c')]['filter']+'%'};return _0x21c2b2;}})});}_0x427a80=_['merge']({},_0x427a80,_0xf7546['options']);var _0x3a0f23={'where':_0x427a80[_0xe025('0x35')]};return db[_0xe025('0x3a')][_0xe025('0x19')](_0x3a0f23)[_0xe025('0x20')](function(_0x2e048a){_0x2392ef['count']=_0x2e048a;if(_0xf7546[_0xe025('0x2c')][_0xe025('0x3b')]){_0x427a80[_0xe025('0x3c')]=[{'all':!![]}];}return db['UserProfileSection'][_0xe025('0x3d')](_0x427a80);})['then'](function(_0x5d72c7){_0x2392ef['rows']=_0x5d72c7;return _0x2392ef;})[_0xe025('0x20')](respondWithFilteredResult(_0x35e923,_0x427a80))[_0xe025('0x3e')](handleError(_0x35e923,null));};exports[_0xe025('0x3f')]=function(_0x522c4e,_0x36fafa){var _0x22f16d={'raw':![],'where':{'id':_0x522c4e['params']['id']}},_0x47b002={};_0x47b002['model']=_['keys'](db[_0xe025('0x3a')]['rawAttributes']);_0x47b002[_0xe025('0x2c')]=_[_0xe025('0x40')](_0x522c4e[_0xe025('0x2c')]);_0x47b002[_0xe025('0x2d')]=_['intersection'](_0x47b002[_0xe025('0x2b')],_0x47b002[_0xe025('0x2c')]);_0x22f16d[_0xe025('0x2e')]=_[_0xe025('0x2f')](_0x47b002[_0xe025('0x2b')],qs[_0xe025('0x30')](_0x522c4e[_0xe025('0x2c')][_0xe025('0x30')]));_0x22f16d[_0xe025('0x2e')]=_0x22f16d[_0xe025('0x2e')][_0xe025('0x31')]?_0x22f16d[_0xe025('0x2e')]:_0x47b002[_0xe025('0x2b')];if(_0x522c4e[_0xe025('0x2c')][_0xe025('0x3b')]){_0x22f16d['include']=[{'all':!![]}];}_0x22f16d=_['merge']({},_0x22f16d,_0x522c4e[_0xe025('0x41')]);return db[_0xe025('0x3a')]['find'](_0x22f16d)[_0xe025('0x20')](handleEntityNotFound(_0x36fafa,null))['then'](respondWithResult(_0x36fafa,null))[_0xe025('0x3e')](handleError(_0x36fafa,null));};exports[_0xe025('0x42')]=function(_0x14dc09,_0x4c9ec1){return db[_0xe025('0x3a')][_0xe025('0x42')](_0x14dc09[_0xe025('0x43')],{})[_0xe025('0x20')](respondWithResult(_0x4c9ec1,0xc9))[_0xe025('0x3e')](handleError(_0x4c9ec1,null));};exports[_0xe025('0x44')]=function(_0x36b970,_0x33a727){if(_0x36b970['body']['id']){delete _0x36b970[_0xe025('0x43')]['id'];}return db[_0xe025('0x3a')]['find']({'where':{'id':_0x36b970[_0xe025('0x45')]['id']}})[_0xe025('0x20')](handleEntityNotFound(_0x33a727,null))[_0xe025('0x20')](saveUpdates(_0x36b970[_0xe025('0x43')],null))[_0xe025('0x20')](respondWithResult(_0x33a727,null))['catch'](handleError(_0x33a727,null));};exports['destroy']=function(_0x168766,_0x5c1a17){return db[_0xe025('0x3a')][_0xe025('0x46')]({'where':{'id':_0x168766['params']['id']}})[_0xe025('0x20')](handleEntityNotFound(_0x5c1a17,null))[_0xe025('0x20')](removeEntity(_0x5c1a17,null))['catch'](handleError(_0x5c1a17,null));};exports[_0xe025('0x47')]=function(_0x3c1fc8,_0x43ea44){return db[_0xe025('0x3a')][_0xe025('0x47')]()['then'](respondWithResult(_0x43ea44,null))[_0xe025('0x3e')](handleError(_0x43ea44,null));};
\ No newline at end of file
+var _0xd4ba=['create','body','update','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','send','map','UserProfileSection','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','where','filter','merge','options','includeAll','findAll','rows','catch','fields','find'];(function(_0x312255,_0x2d6b65){var _0x173106=function(_0x4dfd9b){while(--_0x4dfd9b){_0x312255['push'](_0x312255['shift']());}};_0x173106(++_0x2d6b65);}(_0xd4ba,0x12c));var _0xad4b=function(_0x9a87e4,_0x10c7e5){_0x9a87e4=_0x9a87e4-0x0;var _0x3a2e1b=_0xd4ba[_0x9a87e4];return _0x3a2e1b;};'use strict';var emlformat=require(_0xad4b('0x0'));var rimraf=require(_0xad4b('0x1'));var zipdir=require(_0xad4b('0x2'));var jsonpatch=require(_0xad4b('0x3'));var rp=require(_0xad4b('0x4'));var moment=require(_0xad4b('0x5'));var BPromise=require(_0xad4b('0x6'));var Mustache=require(_0xad4b('0x7'));var util=require(_0xad4b('0x8'));var path=require(_0xad4b('0x9'));var sox=require(_0xad4b('0xa'));var csv=require(_0xad4b('0xb'));var ejs=require(_0xad4b('0xc'));var fs=require('fs');var fs_extra=require(_0xad4b('0xd'));var _=require(_0xad4b('0xe'));var squel=require(_0xad4b('0xf'));var crypto=require(_0xad4b('0x10'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xad4b('0xb'));var querystring=require(_0xad4b('0x11'));var Papa=require(_0xad4b('0x12'));var Redis=require(_0xad4b('0x13'));var authService=require(_0xad4b('0x14'));var qs=require(_0xad4b('0x15'));var as=require(_0xad4b('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad4b('0x17'))(_0xad4b('0x18'));var utils=require(_0xad4b('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ea1f7,_0x5e7af7){_0x5e7af7=_0x5e7af7||0xcc;return function(_0x48f429){if(_0x48f429){return _0x1ea1f7[_0xad4b('0x1a')](_0x5e7af7);}return _0x1ea1f7['status'](_0x5e7af7)[_0xad4b('0x1b')]();};}function respondWithResult(_0x930dad,_0x1bc786){_0x1bc786=_0x1bc786||0xc8;return function(_0x61be06){if(_0x61be06){return _0x930dad[_0xad4b('0x1c')](_0x1bc786)[_0xad4b('0x1d')](_0x61be06);}};}function respondWithFilteredResult(_0x45bb0e,_0x2bd2e4){return function(_0x5f2f67){if(_0x5f2f67){var _0x123bc3=typeof _0x2bd2e4[_0xad4b('0x1e')]==='undefined'&&typeof _0x2bd2e4[_0xad4b('0x1f')]==='undefined';var _0x37ea90=_0x5f2f67[_0xad4b('0x20')];var _0x2d0333=_0x123bc3?0x0:_0x2bd2e4['offset'];var _0x33e8db=_0x123bc3?_0x5f2f67[_0xad4b('0x20')]:_0x2bd2e4[_0xad4b('0x1e')]+_0x2bd2e4[_0xad4b('0x1f')];var _0x4fbe2e;if(_0x33e8db>=_0x37ea90){_0x33e8db=_0x37ea90;_0x4fbe2e=0xc8;}else{_0x4fbe2e=0xce;}_0x45bb0e['status'](_0x4fbe2e);return _0x45bb0e[_0xad4b('0x21')](_0xad4b('0x22'),_0x2d0333+'-'+_0x33e8db+'/'+_0x37ea90)[_0xad4b('0x1d')](_0x5f2f67);}return null;};}function patchUpdates(_0x116329){return function(_0x595c86){try{jsonpatch[_0xad4b('0x23')](_0x595c86,_0x116329,!![]);}catch(_0x3cf282){return BPromise['reject'](_0x3cf282);}return _0x595c86[_0xad4b('0x24')]();};}function saveUpdates(_0x2f5fcf,_0x502645){return function(_0x4953d9){if(_0x4953d9){return _0x4953d9['update'](_0x2f5fcf)[_0xad4b('0x25')](function(_0x23a569){return _0x23a569;});}return null;};}function removeEntity(_0x2d86ca,_0xf82783){return function(_0x5e6ed6){if(_0x5e6ed6){return _0x5e6ed6[_0xad4b('0x26')]()[_0xad4b('0x25')](function(){_0x2d86ca[_0xad4b('0x1c')](0xcc)[_0xad4b('0x1b')]();});}};}function handleEntityNotFound(_0x33338c,_0xa29fc1){return function(_0x4272e2){if(!_0x4272e2){_0x33338c[_0xad4b('0x1a')](0x194);}return _0x4272e2;};}function handleError(_0x261376,_0x230b23){_0x230b23=_0x230b23||0x1f4;return function(_0x4cbeda){logger[_0xad4b('0x27')](_0x4cbeda[_0xad4b('0x28')]);if(_0x4cbeda[_0xad4b('0x29')]){delete _0x4cbeda['name'];}_0x261376[_0xad4b('0x1c')](_0x230b23)[_0xad4b('0x2a')](_0x4cbeda);};}exports['index']=function(_0x4724cf,_0x42008e){var _0x2de891={},_0x579bf9={},_0x4dc27a={'count':0x0,'rows':[]};var _0x5c2755=_[_0xad4b('0x2b')](db[_0xad4b('0x2c')][_0xad4b('0x2d')],function(_0x5c50f7){return{'name':_0x5c50f7[_0xad4b('0x2e')],'type':_0x5c50f7[_0xad4b('0x2f')][_0xad4b('0x30')]};});_0x579bf9[_0xad4b('0x31')]=_[_0xad4b('0x2b')](_0x5c2755,'name');_0x579bf9[_0xad4b('0x32')]=_[_0xad4b('0x33')](_0x4724cf[_0xad4b('0x32')]);_0x579bf9['filters']=_[_0xad4b('0x34')](_0x579bf9[_0xad4b('0x31')],_0x579bf9[_0xad4b('0x32')]);_0x2de891[_0xad4b('0x35')]=_[_0xad4b('0x34')](_0x579bf9['model'],qs['fields'](_0x4724cf[_0xad4b('0x32')]['fields']));_0x2de891[_0xad4b('0x35')]=_0x2de891[_0xad4b('0x35')]['length']?_0x2de891[_0xad4b('0x35')]:_0x579bf9[_0xad4b('0x31')];if(!_0x4724cf[_0xad4b('0x32')][_0xad4b('0x36')](_0xad4b('0x37'))){_0x2de891[_0xad4b('0x1f')]=qs[_0xad4b('0x1f')](_0x4724cf[_0xad4b('0x32')]['limit']);_0x2de891[_0xad4b('0x1e')]=qs[_0xad4b('0x1e')](_0x4724cf[_0xad4b('0x32')][_0xad4b('0x1e')]);}_0x2de891[_0xad4b('0x38')]=qs[_0xad4b('0x39')](_0x4724cf[_0xad4b('0x32')][_0xad4b('0x39')]);_0x2de891['where']=qs[_0xad4b('0x3a')](_[_0xad4b('0x3b')](_0x4724cf[_0xad4b('0x32')],_0x579bf9[_0xad4b('0x3a')]),_0x5c2755);if(_0x4724cf[_0xad4b('0x32')]['filter']){_0x2de891[_0xad4b('0x3c')]=_['merge'](_0x2de891['where'],{'$or':_[_0xad4b('0x2b')](_0x5c2755,function(_0xd1a807){if(_0xd1a807[_0xad4b('0x2f')]!=='VIRTUAL'){var _0x50b6a4={};_0x50b6a4[_0xd1a807['name']]={'$like':'%'+_0x4724cf[_0xad4b('0x32')][_0xad4b('0x3d')]+'%'};return _0x50b6a4;}})});}_0x2de891=_[_0xad4b('0x3e')]({},_0x2de891,_0x4724cf[_0xad4b('0x3f')]);var _0x2b2887={'where':_0x2de891[_0xad4b('0x3c')]};return db[_0xad4b('0x2c')][_0xad4b('0x20')](_0x2b2887)['then'](function(_0x46d57b){_0x4dc27a[_0xad4b('0x20')]=_0x46d57b;if(_0x4724cf[_0xad4b('0x32')][_0xad4b('0x40')]){_0x2de891['include']=[{'all':!![]}];}return db[_0xad4b('0x2c')][_0xad4b('0x41')](_0x2de891);})[_0xad4b('0x25')](function(_0x1ee251){_0x4dc27a[_0xad4b('0x42')]=_0x1ee251;return _0x4dc27a;})[_0xad4b('0x25')](respondWithFilteredResult(_0x42008e,_0x2de891))[_0xad4b('0x43')](handleError(_0x42008e,null));};exports['show']=function(_0x403e67,_0x256e77){var _0x4cffcf={'raw':![],'where':{'id':_0x403e67['params']['id']}},_0x2d7163={};_0x2d7163[_0xad4b('0x31')]=_[_0xad4b('0x33')](db[_0xad4b('0x2c')]['rawAttributes']);_0x2d7163[_0xad4b('0x32')]=_[_0xad4b('0x33')](_0x403e67[_0xad4b('0x32')]);_0x2d7163[_0xad4b('0x3a')]=_[_0xad4b('0x34')](_0x2d7163['model'],_0x2d7163[_0xad4b('0x32')]);_0x4cffcf[_0xad4b('0x35')]=_[_0xad4b('0x34')](_0x2d7163[_0xad4b('0x31')],qs['fields'](_0x403e67[_0xad4b('0x32')][_0xad4b('0x44')]));_0x4cffcf['attributes']=_0x4cffcf[_0xad4b('0x35')]['length']?_0x4cffcf[_0xad4b('0x35')]:_0x2d7163[_0xad4b('0x31')];if(_0x403e67[_0xad4b('0x32')][_0xad4b('0x40')]){_0x4cffcf['include']=[{'all':!![]}];}_0x4cffcf=_[_0xad4b('0x3e')]({},_0x4cffcf,_0x403e67[_0xad4b('0x3f')]);return db[_0xad4b('0x2c')][_0xad4b('0x45')](_0x4cffcf)[_0xad4b('0x25')](handleEntityNotFound(_0x256e77,null))[_0xad4b('0x25')](respondWithResult(_0x256e77,null))['catch'](handleError(_0x256e77,null));};exports['create']=function(_0x4a5624,_0x4d1ce1){return db[_0xad4b('0x2c')][_0xad4b('0x46')](_0x4a5624[_0xad4b('0x47')],{})[_0xad4b('0x25')](respondWithResult(_0x4d1ce1,0xc9))[_0xad4b('0x43')](handleError(_0x4d1ce1,null));};exports[_0xad4b('0x48')]=function(_0x61299a,_0x4f8ce6){if(_0x61299a[_0xad4b('0x47')]['id']){delete _0x61299a[_0xad4b('0x47')]['id'];}return db[_0xad4b('0x2c')][_0xad4b('0x45')]({'where':{'id':_0x61299a['params']['id']}})['then'](handleEntityNotFound(_0x4f8ce6,null))[_0xad4b('0x25')](saveUpdates(_0x61299a[_0xad4b('0x47')],null))[_0xad4b('0x25')](respondWithResult(_0x4f8ce6,null))[_0xad4b('0x43')](handleError(_0x4f8ce6,null));};exports[_0xad4b('0x26')]=function(_0x31a6ba,_0x18f5a8){return db[_0xad4b('0x2c')][_0xad4b('0x45')]({'where':{'id':_0x31a6ba['params']['id']}})[_0xad4b('0x25')](handleEntityNotFound(_0x18f5a8,null))['then'](removeEntity(_0x18f5a8,null))[_0xad4b('0x43')](handleError(_0x18f5a8,null));};exports[_0xad4b('0x49')]=function(_0x3b5055,_0x3f55c6){return db[_0xad4b('0x2c')]['describe']()[_0xad4b('0x25')](respondWithResult(_0x3f55c6,null))[_0xad4b('0x43')](handleError(_0x3f55c6,null));};
\ No newline at end of file
index 7ac0196..0a77eb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda93=['rimraf','./userProfileSection.attributes','exports','user_profile_has_sections','compositeIndex','sectionId','util','api','moment','bluebird','request-promise','path'];(function(_0x43776a,_0x4eb74c){var _0x18eb8f=function(_0x319afb){while(--_0x319afb){_0x43776a['push'](_0x43776a['shift']());}};_0x18eb8f(++_0x4eb74c);}(_0xda93,0x126));var _0x3da9=function(_0x2c0118,_0x5ac359){_0x2c0118=_0x2c0118-0x0;var _0x4f002c=_0xda93[_0x2c0118];return _0x4f002c;};'use strict';var _=require('lodash');var util=require(_0x3da9('0x0'));var logger=require('../../config/logger')(_0x3da9('0x1'));var moment=require(_0x3da9('0x2'));var BPromise=require(_0x3da9('0x3'));var rp=require(_0x3da9('0x4'));var fs=require('fs');var path=require(_0x3da9('0x5'));var rimraf=require(_0x3da9('0x6'));var config=require('../../config/environment');var attributes=require(_0x3da9('0x7'));module[_0x3da9('0x8')]=function(_0x12b8b0,_0x512bb9){return _0x12b8b0['define']('UserProfileSection',attributes,{'tableName':_0x3da9('0x9'),'paranoid':![],'indexes':[{'name':_0x3da9('0xa'),'fields':[_0x3da9('0xb'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc03d=['moment','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','util','../../config/logger','api'];(function(_0x19b84f,_0x48765e){var _0x18067b=function(_0x1c69aa){while(--_0x1c69aa){_0x19b84f['push'](_0x19b84f['shift']());}};_0x18067b(++_0x48765e);}(_0xc03d,0x1b5));var _0xdc03=function(_0x6c20f7,_0x51d3b0){_0x6c20f7=_0x6c20f7-0x0;var _0x18791b=_0xc03d[_0x6c20f7];return _0x18791b;};'use strict';var _=require('lodash');var util=require(_0xdc03('0x0'));var logger=require(_0xdc03('0x1'))(_0xdc03('0x2'));var moment=require(_0xdc03('0x3'));var BPromise=require('bluebird');var rp=require(_0xdc03('0x4'));var fs=require('fs');var path=require(_0xdc03('0x5'));var rimraf=require(_0xdc03('0x6'));var config=require(_0xdc03('0x7'));var attributes=require(_0xdc03('0x8'));module[_0xdc03('0x9')]=function(_0x1202ae,_0x1bcf9d){return _0x1202ae['define'](_0xdc03('0xa'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index ac684a4..fab3dc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00e0=['request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','jayson/promise','client','request','info','UserProfileSection,\x20%s,\x20%s'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x00e0,0x1e3));var _0x000e=function(_0x32803f,_0x169b13){_0x32803f=_0x32803f-0x0;var _0x4be0f3=_0x00e0[_0x32803f];return _0x4be0f3;};'use strict';var _=require(_0x000e('0x0'));var util=require(_0x000e('0x1'));var moment=require(_0x000e('0x2'));var BPromise=require('bluebird');var rs=require(_0x000e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x000e('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x000e('0x5'));var client=jayson[_0x000e('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43d523,_0x3c6d9d,_0x3a2025){return new BPromise(function(_0x243cd6,_0x4974e1){return client[_0x000e('0x7')](_0x43d523,_0x3a2025)['then'](function(_0x3fe7f8){logger[_0x000e('0x8')](_0x000e('0x9'),_0x3c6d9d,_0x000e('0xa'));logger[_0x000e('0xb')](_0x000e('0xc'),_0x3c6d9d,_0x000e('0xa'),JSON['stringify'](_0x3fe7f8));if(_0x3fe7f8['error']){if(_0x3fe7f8['error']['code']===0x1f4){logger['error'](_0x000e('0x9'),_0x3c6d9d,_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);return _0x4974e1(_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);}logger[_0x000e('0xd')](_0x000e('0x9'),_0x3c6d9d,_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);return _0x243cd6(_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);}else{logger[_0x000e('0x8')](_0x000e('0x9'),_0x3c6d9d,_0x000e('0xa'));_0x243cd6(_0x3fe7f8[_0x000e('0xf')][_0x000e('0xe')]);}})[_0x000e('0x10')](function(_0x15c337){logger['error'](_0x000e('0x9'),_0x3c6d9d,_0x15c337);_0x4974e1(_0x15c337);});});}
\ No newline at end of file
+var _0x2469=['debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','UserProfileSection,\x20%s,\x20%s'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x2469,0x183));var _0x9246=function(_0x3de7d3,_0x4faaf4){_0x3de7d3=_0x3de7d3-0x0;var _0x49f26d=_0x2469[_0x3de7d3];return _0x49f26d;};'use strict';var _=require(_0x9246('0x0'));var util=require('util');var moment=require(_0x9246('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9246('0x2'));var db=require(_0x9246('0x3'))['db'];var utils=require(_0x9246('0x4'));var logger=require(_0x9246('0x5'))(_0x9246('0x6'));var config=require('../../config/environment');var jayson=require(_0x9246('0x7'));var client=jayson['client'][_0x9246('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x561186,_0x3dd2a0,_0x25ff81){return new BPromise(function(_0x25d776,_0x9d09f){return client[_0x9246('0x9')](_0x561186,_0x25ff81)[_0x9246('0xa')](function(_0x547f83){logger[_0x9246('0xb')](_0x9246('0xc'),_0x3dd2a0,'request\x20sent');logger[_0x9246('0xd')](_0x9246('0xe'),_0x3dd2a0,_0x9246('0xf'),JSON[_0x9246('0x10')](_0x547f83));if(_0x547f83[_0x9246('0x11')]){if(_0x547f83[_0x9246('0x11')]['code']===0x1f4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x3dd2a0,_0x547f83[_0x9246('0x11')][_0x9246('0x12')]);return _0x9d09f(_0x547f83['error'][_0x9246('0x12')]);}logger[_0x9246('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x3dd2a0,_0x547f83[_0x9246('0x11')][_0x9246('0x12')]);return _0x25d776(_0x547f83[_0x9246('0x11')][_0x9246('0x12')]);}else{logger[_0x9246('0xb')](_0x9246('0xc'),_0x3dd2a0,_0x9246('0xf'));_0x25d776(_0x547f83['result']['message']);}})[_0x9246('0x13')](function(_0x3b8c37){logger[_0x9246('0x11')](_0x9246('0xc'),_0x3dd2a0,_0x3b8c37);_0x9d09f(_0x3b8c37);});});}
\ No newline at end of file
index 1f5a816..d9c36b9 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(_0x46c2e9,_0x8176f9){var _0x19fdde=function(_0x1e7ce2){while(--_0x1e7ce2){_0x46c2e9['push'](_0x46c2e9['shift']());}};_0x19fdde(++_0x8176f9);}(_0x70e0,0x17b));var _0x070e=function(_0x4df524,_0x24b9c1){_0x4df524=_0x4df524-0x0;var _0x58ca23=_0x70e0[_0x4df524];return _0x58ca23;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4762aa,_0x23d06b){var _0x2f46ad=function(_0x38450a){while(--_0x38450a){_0x4762aa['push'](_0x4762aa['shift']());}};_0x2f46ad(++_0x23d06b);}(_0xedd9,0xfc));var _0x9edd=function(_0x2e7f71,_0xb8d20c){_0x2e7f71=_0x2e7f71-0x0;var _0x145b93=_0xedd9[_0x2e7f71];return _0x145b93;};'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 8c31f77..a2b0d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa002=['exports','INTEGER','sequelize'];(function(_0x12fc9d,_0x4f6e22){var _0x4ff791=function(_0x22afbb){while(--_0x22afbb){_0x12fc9d['push'](_0x12fc9d['shift']());}};_0x4ff791(++_0x4f6e22);}(_0xa002,0x17c));var _0x2a00=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xa002[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x2a00('0x0'));module[_0x2a00('0x1')]={'penalty':{'type':Sequelize[_0x2a00('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1ac6=['sequelize','exports','INTEGER'];(function(_0x1f0a35,_0x174f5f){var _0x3b938d=function(_0x196e37){while(--_0x196e37){_0x1f0a35['push'](_0x1f0a35['shift']());}};_0x3b938d(++_0x174f5f);}(_0x1ac6,0x10b));var _0x61ac=function(_0x34e84d,_0x3f3502){_0x34e84d=_0x34e84d-0x0;var _0x3f9125=_0x1ac6[_0x34e84d];return _0x3f9125;};'use strict';var Sequelize=require(_0x61ac('0x0'));module[_0x61ac('0x1')]={'penalty':{'type':Sequelize[_0x61ac('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 9413f6f..253504f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b0d=['define','UserSmsQueue','user_has_sms_queues','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x417f4c,_0x25a081){var _0x317de0=function(_0x3ed7a2){while(--_0x3ed7a2){_0x417f4c['push'](_0x417f4c['shift']());}};_0x317de0(++_0x25a081);}(_0x9b0d,0xb7));var _0xd9b0=function(_0x388972,_0x2d8f0b){_0x388972=_0x388972-0x0;var _0x8fc419=_0x9b0d[_0x388972];return _0x8fc419;};'use strict';var _=require('lodash');var util=require(_0xd9b0('0x0'));var logger=require(_0xd9b0('0x1'))(_0xd9b0('0x2'));var moment=require(_0xd9b0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd9b0('0x4'));var fs=require('fs');var path=require(_0xd9b0('0x5'));var rimraf=require(_0xd9b0('0x6'));var config=require(_0xd9b0('0x7'));var attributes=require('./userSmsQueue.attributes');module[_0xd9b0('0x8')]=function(_0x21798d,_0x41dad9){return _0x21798d[_0xd9b0('0x9')](_0xd9b0('0xa'),attributes,{'tableName':_0xd9b0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90ec=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues'];(function(_0x5517c0,_0x358609){var _0x33803b=function(_0x513c18){while(--_0x513c18){_0x5517c0['push'](_0x5517c0['shift']());}};_0x33803b(++_0x358609);}(_0x90ec,0x1d4));var _0xc90e=function(_0x2b5edd,_0x5bf41b){_0x2b5edd=_0x2b5edd-0x0;var _0x56b8f5=_0x90ec[_0x2b5edd];return _0x56b8f5;};'use strict';var _=require(_0xc90e('0x0'));var util=require(_0xc90e('0x1'));var logger=require('../../config/logger')(_0xc90e('0x2'));var moment=require(_0xc90e('0x3'));var BPromise=require(_0xc90e('0x4'));var rp=require(_0xc90e('0x5'));var fs=require('fs');var path=require(_0xc90e('0x6'));var rimraf=require('rimraf');var config=require(_0xc90e('0x7'));var attributes=require(_0xc90e('0x8'));module[_0xc90e('0x9')]=function(_0x54a0a8,_0x259c62){return _0x54a0a8['define'](_0xc90e('0xa'),attributes,{'tableName':_0xc90e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e4eda7..cdc002b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f28=['message','request\x20sent','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x440ba5,_0x573515){var _0x218106=function(_0x1b9eb6){while(--_0x1b9eb6){_0x440ba5['push'](_0x440ba5['shift']());}};_0x218106(++_0x573515);}(_0x7f28,0x180));var _0x87f2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7f28[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x87f2('0x0'));var rs=require(_0x87f2('0x1'));var fs=require('fs');var Redis=require(_0x87f2('0x2'));var db=require(_0x87f2('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x87f2('0x4'));var jayson=require(_0x87f2('0x5'));var client=jayson['client'][_0x87f2('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1bb897,_0x2b33bb,_0x30bea2){return new BPromise(function(_0x121901,_0x254ecf){return client[_0x87f2('0x7')](_0x1bb897,_0x30bea2)[_0x87f2('0x8')](function(_0x19d9c5){logger[_0x87f2('0x9')](_0x87f2('0xa'),_0x2b33bb,'request\x20sent');logger[_0x87f2('0xb')](_0x87f2('0xc'),_0x2b33bb,'request\x20sent',JSON[_0x87f2('0xd')](_0x19d9c5));if(_0x19d9c5['error']){if(_0x19d9c5[_0x87f2('0xe')]['code']===0x1f4){logger[_0x87f2('0xe')](_0x87f2('0xa'),_0x2b33bb,_0x19d9c5[_0x87f2('0xe')][_0x87f2('0xf')]);return _0x254ecf(_0x19d9c5[_0x87f2('0xe')][_0x87f2('0xf')]);}logger[_0x87f2('0xe')]('UserSmsQueue,\x20%s,\x20%s',_0x2b33bb,_0x19d9c5[_0x87f2('0xe')]['message']);return _0x121901(_0x19d9c5[_0x87f2('0xe')]['message']);}else{logger[_0x87f2('0x9')](_0x87f2('0xa'),_0x2b33bb,_0x87f2('0x10'));_0x121901(_0x19d9c5[_0x87f2('0x11')][_0x87f2('0xf')]);}})[_0x87f2('0x12')](function(_0x1874f5){logger[_0x87f2('0xe')](_0x87f2('0xa'),_0x2b33bb,_0x1874f5);_0x254ecf(_0x1874f5);});});}
\ No newline at end of file
+var _0x8579=['message','info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4bd712,_0x1d683f){var _0x41b9d7=function(_0x390d02){while(--_0x390d02){_0x4bd712['push'](_0x4bd712['shift']());}};_0x41b9d7(++_0x1d683f);}(_0x8579,0x184));var _0x9857=function(_0x40d43f,_0x3d9436){_0x40d43f=_0x40d43f-0x0;var _0x67d911=_0x8579[_0x40d43f];return _0x67d911;};'use strict';var _=require(_0x9857('0x0'));var util=require(_0x9857('0x1'));var moment=require(_0x9857('0x2'));var BPromise=require('bluebird');var rs=require(_0x9857('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9857('0x4'))['db'];var utils=require(_0x9857('0x5'));var logger=require(_0x9857('0x6'))(_0x9857('0x7'));var config=require(_0x9857('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9857('0x9')][_0x9857('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2ee0a4,_0x180074,_0x32e4d3){return new BPromise(function(_0x2249e3,_0x20feaf){return client[_0x9857('0xb')](_0x2ee0a4,_0x32e4d3)[_0x9857('0xc')](function(_0x10a4d3){logger['info'](_0x9857('0xd'),_0x180074,_0x9857('0xe'));logger[_0x9857('0xf')](_0x9857('0x10'),_0x180074,'request\x20sent',JSON[_0x9857('0x11')](_0x10a4d3));if(_0x10a4d3[_0x9857('0x12')]){if(_0x10a4d3['error'][_0x9857('0x13')]===0x1f4){logger[_0x9857('0x12')](_0x9857('0xd'),_0x180074,_0x10a4d3[_0x9857('0x12')][_0x9857('0x14')]);return _0x20feaf(_0x10a4d3[_0x9857('0x12')]['message']);}logger[_0x9857('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x180074,_0x10a4d3[_0x9857('0x12')]['message']);return _0x2249e3(_0x10a4d3[_0x9857('0x12')][_0x9857('0x14')]);}else{logger[_0x9857('0x15')](_0x9857('0xd'),_0x180074,_0x9857('0xe'));_0x2249e3(_0x10a4d3[_0x9857('0x16')][_0x9857('0x14')]);}})[_0x9857('0x17')](function(_0xabb8a9){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x180074,_0xabb8a9);_0x20feaf(_0xabb8a9);});});}
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a30=['rimraf','../../config/environment','define','Realtime','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4d2752,_0x16f0c5){var _0x3d2e74=function(_0x50d2d6){while(--_0x50d2d6){_0x4d2752['push'](_0x4d2752['shift']());}};_0x3d2e74(++_0x16f0c5);}(_0x6a30,0x1bc));var _0x06a3=function(_0x59a0af,_0x543d28){_0x59a0af=_0x59a0af-0x0;var _0x9aaae5=_0x6a30[_0x59a0af];return _0x9aaae5;};'use strict';var _=require(_0x06a3('0x0'));var util=require(_0x06a3('0x1'));var logger=require(_0x06a3('0x2'))(_0x06a3('0x3'));var moment=require(_0x06a3('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a3('0x5'));var fs=require('fs');var path=require(_0x06a3('0x6'));var rimraf=require(_0x06a3('0x7'));var config=require(_0x06a3('0x8'));;module['exports']=function(_0x266b06,_0x5d9f68){return _0x266b06[_0x06a3('0x9')](_0x06a3('0xa'),[],{});};
\ No newline at end of file
+var _0x716a=['INTEGER'];(function(_0x491e90,_0xcc5113){var _0x5a32f3=function(_0xf6f767){while(--_0xf6f767){_0x491e90['push'](_0x491e90['shift']());}};_0x5a32f3(++_0xcc5113);}(_0x716a,0xaf));var _0xa716=function(_0x5b36bd,_0x4dfb36){_0x5b36bd=_0x5b36bd-0x0;var _0x1614fe=_0x716a[_0x5b36bd];return _0x1614fe;};'use strict';var Sequelize=require('sequelize');module['exports']={'UserId':{'type':Sequelize[_0xa716('0x0')]},'VoicePrefixId':{'type':Sequelize[_0xa716('0x0')]}};
\ No newline at end of file
similarity index 55%
rename from server/api/realtime/realtime.model.js
rename to server/api/userVoicePrefix/userVoicePrefix.model.js
index c50b21f..f42da55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a30=['rimraf','../../config/environment','define','Realtime','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4d2752,_0x16f0c5){var _0x3d2e74=function(_0x50d2d6){while(--_0x50d2d6){_0x4d2752['push'](_0x4d2752['shift']());}};_0x3d2e74(++_0x16f0c5);}(_0x6a30,0x1bc));var _0x06a3=function(_0x59a0af,_0x543d28){_0x59a0af=_0x59a0af-0x0;var _0x9aaae5=_0x6a30[_0x59a0af];return _0x9aaae5;};'use strict';var _=require(_0x06a3('0x0'));var util=require(_0x06a3('0x1'));var logger=require(_0x06a3('0x2'))(_0x06a3('0x3'));var moment=require(_0x06a3('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a3('0x5'));var fs=require('fs');var path=require(_0x06a3('0x6'));var rimraf=require(_0x06a3('0x7'));var config=require(_0x06a3('0x8'));;module['exports']=function(_0x266b06,_0x5d9f68){return _0x266b06[_0x06a3('0x9')](_0x06a3('0xa'),[],{});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x1d835b,_0x36dd94){var _0x15a25a=function(_0x22dff9){while(--_0x22dff9){_0x1d835b['push'](_0x1d835b['shift']());}};_0x15a25a(++_0x36dd94);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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 d583d63..ef3f923 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(_0x1cc07e,_0x527192){var _0xb762fc=function(_0x408f78){while(--_0x408f78){_0x1cc07e['push'](_0x1cc07e['shift']());}};_0xb762fc(++_0x527192);}(_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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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 94f2f48..bc30573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74e2=['sequelize','exports','INTEGER'];(function(_0xaf2c53,_0x5986ee){var _0x232d86=function(_0x388637){while(--_0x388637){_0xaf2c53['push'](_0xaf2c53['shift']());}};_0x232d86(++_0x5986ee);}(_0x74e2,0x1d4));var _0x274e=function(_0x1a9607,_0x39d774){_0x1a9607=_0x1a9607-0x0;var _0x43773c=_0x74e2[_0x1a9607];return _0x43773c;};'use strict';var Sequelize=require(_0x274e('0x0'));module[_0x274e('0x1')]={'penalty':{'type':Sequelize[_0x274e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1cb9=['sequelize','INTEGER'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x1cb9,0x14e));var _0x91cb=function(_0x543a8f,_0x8d37b5){_0x543a8f=_0x543a8f-0x0;var _0x170437=_0x1cb9[_0x543a8f];return _0x170437;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x91cb('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 5fed28b..36dcc0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ac=['UserVoiceQueue','user_has_voice_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x313df3,_0x4fca45){var _0x241d59=function(_0x452786){while(--_0x452786){_0x313df3['push'](_0x313df3['shift']());}};_0x241d59(++_0x4fca45);}(_0x54ac,0x7a));var _0xc54a=function(_0x2567f0,_0x4fa60){_0x2567f0=_0x2567f0-0x0;var _0x14852a=_0x54ac[_0x2567f0];return _0x14852a;};'use strict';var _=require(_0xc54a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc54a('0x1'));var moment=require(_0xc54a('0x2'));var BPromise=require(_0xc54a('0x3'));var rp=require(_0xc54a('0x4'));var fs=require('fs');var path=require(_0xc54a('0x5'));var rimraf=require(_0xc54a('0x6'));var config=require(_0xc54a('0x7'));var attributes=require('./userVoiceQueue.attributes');module[_0xc54a('0x8')]=function(_0x3c76ec,_0x51218a){return _0x3c76ec[_0xc54a('0x9')](_0xc54a('0xa'),attributes,{'tableName':_0xc54a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b31=['api','moment','bluebird','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger'];(function(_0x1ee358,_0x42fdfb){var _0x4d01b9=function(_0x2ad69d){while(--_0x2ad69d){_0x1ee358['push'](_0x1ee358['shift']());}};_0x4d01b9(++_0x42fdfb);}(_0x2b31,0x1bd));var _0x12b3=function(_0x4e4ad6,_0x358edb){_0x4e4ad6=_0x4e4ad6-0x0;var _0x1ac9f1=_0x2b31[_0x4e4ad6];return _0x1ac9f1;};'use strict';var _=require(_0x12b3('0x0'));var util=require(_0x12b3('0x1'));var logger=require(_0x12b3('0x2'))(_0x12b3('0x3'));var moment=require(_0x12b3('0x4'));var BPromise=require(_0x12b3('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x12b3('0x6'));var rimraf=require(_0x12b3('0x7'));var config=require(_0x12b3('0x8'));var attributes=require(_0x12b3('0x9'));module[_0x12b3('0xa')]=function(_0x4489d7,_0x354863){return _0x4489d7[_0x12b3('0xb')](_0x12b3('0xc'),attributes,{'tableName':_0x12b3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4501ca..d73b11a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f80=['http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x2f80,0xd2));var _0x02f8=function(_0x118d99,_0x2988df){_0x118d99=_0x118d99-0x0;var _0x26038a=_0x2f80[_0x118d99];return _0x26038a;};'use strict';var _=require(_0x02f8('0x0'));var util=require('util');var moment=require(_0x02f8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x02f8('0x2'));var db=require(_0x02f8('0x3'))['db'];var utils=require(_0x02f8('0x4'));var logger=require(_0x02f8('0x5'))(_0x02f8('0x6'));var config=require(_0x02f8('0x7'));var jayson=require(_0x02f8('0x8'));var client=jayson[_0x02f8('0x9')][_0x02f8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x360ef5,_0x2322ff,_0x26883b){return new BPromise(function(_0x462c44,_0x17f279){return client[_0x02f8('0xb')](_0x360ef5,_0x26883b)['then'](function(_0x3f6ce3){logger[_0x02f8('0xc')](_0x02f8('0xd'),_0x2322ff,_0x02f8('0xe'));logger[_0x02f8('0xf')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x2322ff,'request\x20sent',JSON[_0x02f8('0x10')](_0x3f6ce3));if(_0x3f6ce3[_0x02f8('0x11')]){if(_0x3f6ce3[_0x02f8('0x11')]['code']===0x1f4){logger[_0x02f8('0x11')](_0x02f8('0xd'),_0x2322ff,_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);return _0x17f279(_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);}logger[_0x02f8('0x11')](_0x02f8('0xd'),_0x2322ff,_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);return _0x462c44(_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);}else{logger[_0x02f8('0xc')](_0x02f8('0xd'),_0x2322ff,_0x02f8('0xe'));_0x462c44(_0x3f6ce3[_0x02f8('0x13')][_0x02f8('0x12')]);}})['catch'](function(_0x58f4b9){logger['error'](_0x02f8('0xd'),_0x2322ff,_0x58f4b9);_0x17f279(_0x58f4b9);});});}
\ No newline at end of file
+var _0x6e82=['../../config/environment','client','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x29cf27,_0x13544f){var _0x4f18ff=function(_0x269177){while(--_0x269177){_0x29cf27['push'](_0x29cf27['shift']());}};_0x4f18ff(++_0x13544f);}(_0x6e82,0x7c));var _0x26e8=function(_0x1f1837,_0x4b304e){_0x1f1837=_0x1f1837-0x0;var _0x25ab57=_0x6e82[_0x1f1837];return _0x25ab57;};'use strict';var _=require(_0x26e8('0x0'));var util=require(_0x26e8('0x1'));var moment=require(_0x26e8('0x2'));var BPromise=require('bluebird');var rs=require(_0x26e8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x26e8('0x4'))['db'];var utils=require(_0x26e8('0x5'));var logger=require(_0x26e8('0x6'))(_0x26e8('0x7'));var config=require(_0x26e8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x26e8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d30ce,_0x4e487e,_0x162a1d){return new BPromise(function(_0x460b18,_0x4cf012){return client[_0x26e8('0xa')](_0x2d30ce,_0x162a1d)['then'](function(_0x49c2a1){logger[_0x26e8('0xb')](_0x26e8('0xc'),_0x4e487e,_0x26e8('0xd'));logger[_0x26e8('0xe')](_0x26e8('0xf'),_0x4e487e,'request\x20sent',JSON[_0x26e8('0x10')](_0x49c2a1));if(_0x49c2a1['error']){if(_0x49c2a1['error'][_0x26e8('0x11')]===0x1f4){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x4e487e,_0x49c2a1[_0x26e8('0x12')][_0x26e8('0x13')]);return _0x4cf012(_0x49c2a1[_0x26e8('0x12')][_0x26e8('0x13')]);}logger[_0x26e8('0x12')](_0x26e8('0xc'),_0x4e487e,_0x49c2a1[_0x26e8('0x12')]['message']);return _0x460b18(_0x49c2a1['error'][_0x26e8('0x13')]);}else{logger['info'](_0x26e8('0xc'),_0x4e487e,_0x26e8('0xd'));_0x460b18(_0x49c2a1[_0x26e8('0x14')][_0x26e8('0x13')]);}})[_0x26e8('0x15')](function(_0x345150){logger['error'](_0x26e8('0xc'),_0x4e487e,_0x345150);_0x4cf012(_0x345150);});});}
\ No newline at end of file
index 774e3a0..c9b4542 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(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3dda1e,_0x17a46c){var _0x4b8cee=function(_0x7b86e6){while(--_0x7b86e6){_0x3dda1e['push'](_0x3dda1e['shift']());}};_0x4b8cee(++_0x17a46c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5951e8,_0x42b9a7){_0x5951e8=_0x5951e8-0x0;var _0x20a1f5=_0xcb91[_0x5951e8];return _0x20a1f5;};'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 5100fe9..6db9263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bce=['exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface','sequelize'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x9bce,0x125));var _0xe9bc=function(_0x363db7,_0x2220f7){_0x363db7=_0x363db7-0x0;var _0x4e82ee=_0x9bce[_0x363db7];return _0x4e82ee;};'use strict';var Sequelize=require(_0xe9bc('0x0'));module[_0xe9bc('0x1')]={'uniqueid':{'type':Sequelize[_0xe9bc('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xe9bc('0x3')],'allowNull':![],'comment':_0xe9bc('0x4')},'UserId':{'type':Sequelize[_0xe9bc('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xe9bc('0x3')],'allowNull':![],'unique':_0xe9bc('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xe9bc('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xe9bc('0x3')],'allowNull':![],'unique':_0xe9bc('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xe9bc('0x2')](0xb),'defaultValue':0x0,'comment':_0xe9bc('0x4')},'paused':{'type':Sequelize[_0xe9bc('0x2')](0xb),'defaultValue':0x0,'comment':_0xe9bc('0x4')}};
\ No newline at end of file
+var _0xeb5d=['sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0xa388a2,_0x40bde6){var _0x7ce7f6=function(_0x5a242a){while(--_0x5a242a){_0xa388a2['push'](_0xa388a2['shift']());}};_0x7ce7f6(++_0x40bde6);}(_0xeb5d,0x174));var _0xdeb5=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xeb5d[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0xdeb5('0x0'));module[_0xdeb5('0x1')]={'uniqueid':{'type':Sequelize[_0xdeb5('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xdeb5('0x3')},'membername':{'type':Sequelize[_0xdeb5('0x4')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xdeb5('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xdeb5('0x4')],'allowNull':![],'unique':_0xdeb5('0x5'),'comment':_0xdeb5('0x3')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0xdeb5('0x4')],'allowNull':![],'unique':'queue_interface','comment':_0xdeb5('0x3')},'penalty':{'type':Sequelize[_0xdeb5('0x2')](0xb),'defaultValue':0x0,'comment':_0xdeb5('0x3')},'paused':{'type':Sequelize[_0xdeb5('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index c907726..8de371d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe68d=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners'];(function(_0xa85689,_0x1313fb){var _0x4049b8=function(_0x2ea7f8){while(--_0x2ea7f8){_0xa85689['push'](_0xa85689['shift']());}};_0x4049b8(++_0x1313fb);}(_0xe68d,0xd8));var _0xde68=function(_0x366e99,_0x15d82d){_0x366e99=_0x366e99-0x0;var _0x180bbe=_0xe68d[_0x366e99];return _0x180bbe;};'use strict';var EventEmitter=require(_0xde68('0x0'));var UserVoiceQueueRt=require(_0xde68('0x1'))['db'][_0xde68('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xde68('0x3')](0x0);var events={'afterCreate':_0xde68('0x4'),'afterUpdate':_0xde68('0x5'),'afterDestroy':_0xde68('0x6')};function emitEvent(_0xbed05d){return function(_0x232cd4,_0x223110,_0x36c435){UserVoiceQueueRtEvents['emit'](_0xbed05d+':'+_0x232cd4['id'],_0x232cd4);UserVoiceQueueRtEvents[_0xde68('0x7')](_0xbed05d,_0x232cd4);_0x36c435(null);};}for(var e in events){if(events[_0xde68('0x8')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xde68('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x6902=['UserVoiceQueueRt','update','remove','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x79a3f3,_0x406bb2){var _0x5b6c9b=function(_0x1daa8d){while(--_0x1daa8d){_0x79a3f3['push'](_0x79a3f3['shift']());}};_0x5b6c9b(++_0x406bb2);}(_0x6902,0x171));var _0x2690=function(_0x4493c8,_0x345611){_0x4493c8=_0x4493c8-0x0;var _0x33c0f7=_0x6902[_0x4493c8];return _0x33c0f7;};'use strict';var EventEmitter=require(_0x2690('0x0'));var UserVoiceQueueRt=require(_0x2690('0x1'))['db'][_0x2690('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2690('0x3'),'afterDestroy':_0x2690('0x4')};function emitEvent(_0xa504a9){return function(_0x4f83e6,_0x521b30,_0x2748f5){UserVoiceQueueRtEvents['emit'](_0xa504a9+':'+_0x4f83e6['id'],_0x4f83e6);UserVoiceQueueRtEvents['emit'](_0xa504a9,_0x4f83e6);_0x2748f5(null);};}for(var e in events){if(events[_0x2690('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0x2690('0x6')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index 70165f0..5aab3cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9e8=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','api'];(function(_0x473f42,_0x4f8e9e){var _0x2eb99c=function(_0x32b83f){while(--_0x32b83f){_0x473f42['push'](_0x473f42['shift']());}};_0x2eb99c(++_0x4f8e9e);}(_0xf9e8,0x115));var _0x8f9e=function(_0x34b855,_0x28b4cf){_0x34b855=_0x34b855-0x0;var _0x351c0e=_0xf9e8[_0x34b855];return _0x351c0e;};'use strict';var _=require(_0x8f9e('0x0'));var util=require(_0x8f9e('0x1'));var logger=require('../../config/logger')(_0x8f9e('0x2'));var moment=require(_0x8f9e('0x3'));var BPromise=require(_0x8f9e('0x4'));var rp=require(_0x8f9e('0x5'));var fs=require('fs');var path=require(_0x8f9e('0x6'));var rimraf=require(_0x8f9e('0x7'));var config=require(_0x8f9e('0x8'));var attributes=require(_0x8f9e('0x9'));module[_0x8f9e('0xa')]=function(_0x5c0930,_0x146ade){return _0x5c0930[_0x8f9e('0xb')](_0x8f9e('0xc'),attributes,{'tableName':_0x8f9e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x19d6=['define','UserVoiceQueueRt','lodash','util','moment','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports'];(function(_0x2af0bd,_0x30c3ac){var _0x1f52cd=function(_0x3101ee){while(--_0x3101ee){_0x2af0bd['push'](_0x2af0bd['shift']());}};_0x1f52cd(++_0x30c3ac);}(_0x19d6,0xf4));var _0x619d=function(_0x355a29,_0x4480e7){_0x355a29=_0x355a29-0x0;var _0x401ac8=_0x19d6[_0x355a29];return _0x401ac8;};'use strict';var _=require(_0x619d('0x0'));var util=require(_0x619d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x619d('0x2'));var BPromise=require('bluebird');var rp=require(_0x619d('0x3'));var fs=require('fs');var path=require(_0x619d('0x4'));var rimraf=require(_0x619d('0x5'));var config=require(_0x619d('0x6'));var attributes=require(_0x619d('0x7'));module[_0x619d('0x8')]=function(_0x3fbab0,_0x5babff){return _0x3fbab0[_0x619d('0x9')](_0x619d('0xa'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c58def..39db8e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e18=['request\x20sent','error','code','message','result','catch','GetVoiceQueueRtPauses','findAll','options','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','debug','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s'];(function(_0xe220b0,_0x5761ee){var _0xe1b034=function(_0x1c97d1){while(--_0x1c97d1){_0xe220b0['push'](_0xe220b0['shift']());}};_0xe1b034(++_0x5761ee);}(_0x8e18,0xa9));var _0x88e1=function(_0x43b409,_0x183438){_0x43b409=_0x43b409-0x0;var _0x24e85c=_0x8e18[_0x43b409];return _0x24e85c;};'use strict';var _=require('lodash');var util=require(_0x88e1('0x0'));var moment=require(_0x88e1('0x1'));var BPromise=require(_0x88e1('0x2'));var rs=require(_0x88e1('0x3'));var fs=require('fs');var Redis=require(_0x88e1('0x4'));var db=require(_0x88e1('0x5'))['db'];var utils=require(_0x88e1('0x6'));var logger=require(_0x88e1('0x7'))(_0x88e1('0x8'));var config=require(_0x88e1('0x9'));var jayson=require(_0x88e1('0xa'));var client=jayson[_0x88e1('0xb')]['http']({'port':0x232a});config['redis']=_[_0x88e1('0xc')](config[_0x88e1('0xd')],{'host':_0x88e1('0xe'),'port':0x18eb});var socket=require(_0x88e1('0xf'))(new Redis(config['redis']));require('./userVoiceQueueRt.socket')[_0x88e1('0x10')](socket);function respondWithRpcPromise(_0x3f9207,_0x39ce88,_0xefd7de){return new BPromise(function(_0x69a8f1,_0x1eead4){return client[_0x88e1('0x11')](_0x3f9207,_0xefd7de)[_0x88e1('0x12')](function(_0x44ce17){logger[_0x88e1('0x13')](_0x88e1('0x14'),_0x39ce88,_0x88e1('0x15'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x39ce88,_0x88e1('0x15'),JSON['stringify'](_0x44ce17));if(_0x44ce17[_0x88e1('0x16')]){if(_0x44ce17[_0x88e1('0x16')][_0x88e1('0x17')]===0x1f4){logger[_0x88e1('0x16')](_0x88e1('0x14'),_0x39ce88,_0x44ce17[_0x88e1('0x16')][_0x88e1('0x18')]);return _0x1eead4(_0x44ce17['error'][_0x88e1('0x18')]);}logger[_0x88e1('0x16')](_0x88e1('0x14'),_0x39ce88,_0x44ce17[_0x88e1('0x16')]['message']);return _0x69a8f1(_0x44ce17[_0x88e1('0x16')][_0x88e1('0x18')]);}else{logger[_0x88e1('0x13')](_0x88e1('0x14'),_0x39ce88,_0x88e1('0x15'));_0x69a8f1(_0x44ce17[_0x88e1('0x19')]['message']);}})[_0x88e1('0x1a')](function(_0x23264e){logger['error'](_0x88e1('0x14'),_0x39ce88,_0x23264e);_0x1eead4(_0x23264e);});});}exports[_0x88e1('0x1b')]=function(_0x287e0b){var _0x3d9c75=this;return new Promise(function(_0x57986a,_0xdcc09e){return db['UserVoiceQueueRt'][_0x88e1('0x1c')]({'raw':_0x287e0b[_0x88e1('0x1d')]?_0x287e0b[_0x88e1('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x287e0b[_0x88e1('0x1d')]?_0x287e0b[_0x88e1('0x1d')][_0x88e1('0x1e')]||null:null,'attributes':[[db[_0x88e1('0x1f')]['fn'](_0x88e1('0x20'),db[_0x88e1('0x1f')]['fn']('IF',db[_0x88e1('0x1f')][_0x88e1('0x21')](_0x88e1('0x22')))),_0x88e1('0x23')]]})['then'](function(_0x117a9b){logger[_0x88e1('0x13')]('GetVoiceQueueRtPauses',_0x287e0b);logger[_0x88e1('0x24')](_0x88e1('0x1b'),_0x287e0b,JSON[_0x88e1('0x25')](_0x117a9b));_0x57986a(_0x117a9b);})['catch'](function(_0x10942a){logger[_0x88e1('0x16')](_0x88e1('0x1b'),_0x10942a[_0x88e1('0x18')],_0x287e0b);_0xdcc09e(_0x3d9c75[_0x88e1('0x16')](0x1f4,_0x10942a[_0x88e1('0x18')]));});});};
\ No newline at end of file
+var _0x0ac6=['register','then','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','message','UserVoiceQueueRt,\x20%s,\x20%s','info','result','catch','GetVoiceQueueRtPauses','findAll','options','raw','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket'];(function(_0x188220,_0x5b6e5a){var _0x5edf4d=function(_0x5d842f){while(--_0x5d842f){_0x188220['push'](_0x188220['shift']());}};_0x5edf4d(++_0x5b6e5a);}(_0x0ac6,0x83));var _0x60ac=function(_0x3ca10e,_0x3a9ec8){_0x3ca10e=_0x3ca10e-0x0;var _0x123077=_0x0ac6[_0x3ca10e];return _0x123077;};'use strict';var _=require(_0x60ac('0x0'));var util=require(_0x60ac('0x1'));var moment=require(_0x60ac('0x2'));var BPromise=require(_0x60ac('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x60ac('0x4'));var db=require(_0x60ac('0x5'))['db'];var utils=require(_0x60ac('0x6'));var logger=require('../../config/logger')(_0x60ac('0x7'));var config=require(_0x60ac('0x8'));var jayson=require(_0x60ac('0x9'));var client=jayson[_0x60ac('0xa')][_0x60ac('0xb')]({'port':0x232a});config[_0x60ac('0xc')]=_[_0x60ac('0xd')](config[_0x60ac('0xc')],{'host':_0x60ac('0xe'),'port':0x18eb});var socket=require(_0x60ac('0xf'))(new Redis(config[_0x60ac('0xc')]));require(_0x60ac('0x10'))[_0x60ac('0x11')](socket);function respondWithRpcPromise(_0x142765,_0x222647,_0x376fdd){return new BPromise(function(_0x44e532,_0x341348){return client['request'](_0x142765,_0x376fdd)[_0x60ac('0x12')](function(_0x341b8a){logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x222647,_0x60ac('0x13'));logger[_0x60ac('0x14')](_0x60ac('0x15'),_0x222647,'request\x20sent',JSON['stringify'](_0x341b8a));if(_0x341b8a[_0x60ac('0x16')]){if(_0x341b8a[_0x60ac('0x16')]['code']===0x1f4){logger[_0x60ac('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x222647,_0x341b8a[_0x60ac('0x16')][_0x60ac('0x17')]);return _0x341348(_0x341b8a[_0x60ac('0x16')]['message']);}logger[_0x60ac('0x16')](_0x60ac('0x18'),_0x222647,_0x341b8a[_0x60ac('0x16')][_0x60ac('0x17')]);return _0x44e532(_0x341b8a['error']['message']);}else{logger[_0x60ac('0x19')](_0x60ac('0x18'),_0x222647,_0x60ac('0x13'));_0x44e532(_0x341b8a[_0x60ac('0x1a')][_0x60ac('0x17')]);}})[_0x60ac('0x1b')](function(_0x42a57d){logger[_0x60ac('0x16')](_0x60ac('0x18'),_0x222647,_0x42a57d);_0x341348(_0x42a57d);});});}exports[_0x60ac('0x1c')]=function(_0x5dbb4b){var _0x9cd050=this;return new Promise(function(_0x58a136,_0x87c6b3){return db['UserVoiceQueueRt'][_0x60ac('0x1d')]({'raw':_0x5dbb4b[_0x60ac('0x1e')]?_0x5dbb4b[_0x60ac('0x1e')][_0x60ac('0x1f')]===undefined?!![]:![]:!![],'where':_0x5dbb4b[_0x60ac('0x1e')]?_0x5dbb4b[_0x60ac('0x1e')]['where']||null:null,'attributes':[[db[_0x60ac('0x20')]['fn'](_0x60ac('0x21'),db['sequelize']['fn']('IF',db[_0x60ac('0x20')][_0x60ac('0x22')](_0x60ac('0x23')))),_0x60ac('0x24')]]})['then'](function(_0x505a5b){logger[_0x60ac('0x19')](_0x60ac('0x1c'),_0x5dbb4b);logger['debug'](_0x60ac('0x1c'),_0x5dbb4b,JSON['stringify'](_0x505a5b));_0x58a136(_0x505a5b);})[_0x60ac('0x1b')](function(_0x4c9166){logger[_0x60ac('0x16')](_0x60ac('0x1c'),_0x4c9166[_0x60ac('0x17')],_0x5dbb4b);_0x87c6b3(_0x9cd050[_0x60ac('0x16')](0x1f4,_0x4c9166[_0x60ac('0x17')]));});});};
\ No newline at end of file
index 5e595d9..6967d83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x737d=['length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','removeListener','register'];(function(_0x494313,_0x11a24e){var _0x244773=function(_0x45da9e){while(--_0x45da9e){_0x494313['push'](_0x494313['shift']());}};_0x244773(++_0x11a24e);}(_0x737d,0xbc));var _0xd737=function(_0x149726,_0x3de58c){_0x149726=_0x149726-0x0;var _0x339753=_0x737d[_0x149726];return _0x339753;};'use strict';var UserVoiceQueueRtEvents=require(_0xd737('0x0'));var events=[_0xd737('0x1'),'remove','update'];function createListener(_0x58b187,_0x47ae10){return function(_0x2e966e){_0x47ae10['emit'](_0x58b187,_0x2e966e);};}function removeListener(_0x2f8396,_0x4a19e0){return function(){UserVoiceQueueRtEvents[_0xd737('0x2')](_0x2f8396,_0x4a19e0);};}exports[_0xd737('0x3')]=function(_0x1cf86e){for(var _0x2e7d75=0x0,_0x46f559=events[_0xd737('0x4')];_0x2e7d75<_0x46f559;_0x2e7d75++){var _0x3a78be=events[_0x2e7d75];var _0xb077fb=createListener(_0xd737('0x5')+_0x3a78be,_0x1cf86e);UserVoiceQueueRtEvents['on'](_0x3a78be,_0xb077fb);}};
\ No newline at end of file
+var _0x1cb9=['update','emit','removeListener','register','length','./userVoiceQueueRt.events','remove'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0x1cb9,0x14e));var _0x91cb=function(_0x5dd2a0,_0xb64834){_0x5dd2a0=_0x5dd2a0-0x0;var _0x4526c3=_0x1cb9[_0x5dd2a0];return _0x4526c3;};'use strict';var UserVoiceQueueRtEvents=require(_0x91cb('0x0'));var events=['save',_0x91cb('0x1'),_0x91cb('0x2')];function createListener(_0x2b1894,_0x351bdb){return function(_0x57ea48){_0x351bdb[_0x91cb('0x3')](_0x2b1894,_0x57ea48);};}function removeListener(_0x2b7314,_0x5652cd){return function(){UserVoiceQueueRtEvents[_0x91cb('0x4')](_0x2b7314,_0x5652cd);};}exports[_0x91cb('0x5')]=function(_0x186dc3){for(var _0x28543e=0x0,_0x3b9d98=events[_0x91cb('0x6')];_0x28543e<_0x3b9d98;_0x28543e++){var _0x4c1f56=events[_0x28543e];var _0x15c517=createListener('userVoiceQueueRt:'+_0x4c1f56,_0x186dc3);UserVoiceQueueRtEvents['on'](_0x4c1f56,_0x15c517);}};
\ No newline at end of file
index b185d35..163a612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3d4db3,_0x4f90da){var _0x389472=function(_0x303d38){while(--_0x303d38){_0x3d4db3['push'](_0x3d4db3['shift']());}};_0x389472(++_0x4f90da);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4d35f3,_0x19ba66){_0x4d35f3=_0x4d35f3-0x0;var _0x382fea=_0xcb91[_0x4d35f3];return _0x382fea;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x412f2e,_0x4a28ef){var _0xd8ce04=function(_0x43cdb2){while(--_0x43cdb2){_0x412f2e['push'](_0x412f2e['shift']());}};_0xd8ce04(++_0x4a28ef);}(_0xe706,0xa3));var _0x6e70=function(_0x1a4528,_0x54d423){_0x1a4528=_0x1a4528-0x0;var _0x368a2c=_0xe706[_0x1a4528];return _0x368a2c;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 0c8067f..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ecd=['INTEGER','sequelize','exports'];(function(_0x4100a4,_0xfe31e8){var _0x3ea19e=function(_0x4a35e8){while(--_0x4a35e8){_0x4100a4['push'](_0x4100a4['shift']());}};_0x3ea19e(++_0xfe31e8);}(_0x7ecd,0x1ea));var _0xd7ec=function(_0x12bedb,_0x48c64f){_0x12bedb=_0x12bedb-0x0;var _0x41c2e3=_0x7ecd[_0x12bedb];return _0x41c2e3;};'use strict';var Sequelize=require(_0xd7ec('0x0'));module[_0xd7ec('0x1')]={'penalty':{'type':Sequelize[_0xd7ec('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index fdf4b2c..41af149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f3d=['path','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x279e6f,_0x566574){var _0x489a5f=function(_0x57e285){while(--_0x57e285){_0x279e6f['push'](_0x279e6f['shift']());}};_0x489a5f(++_0x566574);}(_0x3f3d,0xd7));var _0xd3f3=function(_0x51f357,_0x58d147){_0x51f357=_0x51f357-0x0;var _0x186473=_0x3f3d[_0x51f357];return _0x186473;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd3f3('0x0'))(_0xd3f3('0x1'));var moment=require(_0xd3f3('0x2'));var BPromise=require(_0xd3f3('0x3'));var rp=require(_0xd3f3('0x4'));var fs=require('fs');var path=require(_0xd3f3('0x5'));var rimraf=require('rimraf');var config=require(_0xd3f3('0x6'));var attributes=require(_0xd3f3('0x7'));module[_0xd3f3('0x8')]=function(_0x4ad972,_0x551fd8){return _0x4ad972[_0xd3f3('0x9')](_0xd3f3('0xa'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a15=['./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','api','bluebird','request-promise','path','../../config/environment'];(function(_0x134717,_0x5b6841){var _0x321b06=function(_0x335ac2){while(--_0x335ac2){_0x134717['push'](_0x134717['shift']());}};_0x321b06(++_0x5b6841);}(_0x8a15,0x65));var _0x58a1=function(_0x767b78,_0x16270b){_0x767b78=_0x767b78-0x0;var _0x5daeed=_0x8a15[_0x767b78];return _0x5daeed;};'use strict';var _=require(_0x58a1('0x0'));var util=require(_0x58a1('0x1'));var logger=require('../../config/logger')(_0x58a1('0x2'));var moment=require('moment');var BPromise=require(_0x58a1('0x3'));var rp=require(_0x58a1('0x4'));var fs=require('fs');var path=require(_0x58a1('0x5'));var rimraf=require('rimraf');var config=require(_0x58a1('0x6'));var attributes=require(_0x58a1('0x7'));module[_0x58a1('0x8')]=function(_0x4e287e,_0x779536){return _0x4e287e[_0x58a1('0x9')](_0x58a1('0xa'),attributes,{'tableName':_0x58a1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dc5729..aa09471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa028=['then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','UserWhatsappQueue,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','http','request'];(function(_0x310a54,_0x212d9a){var _0x4e4caa=function(_0x6baec9){while(--_0x6baec9){_0x310a54['push'](_0x310a54['shift']());}};_0x4e4caa(++_0x212d9a);}(_0xa028,0x19a));var _0x8a02=function(_0x20f0b3,_0x2b51cf){_0x20f0b3=_0x20f0b3-0x0;var _0x234d21=_0xa028[_0x20f0b3];return _0x234d21;};'use strict';var _=require(_0x8a02('0x0'));var util=require(_0x8a02('0x1'));var moment=require(_0x8a02('0x2'));var BPromise=require(_0x8a02('0x3'));var rs=require(_0x8a02('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8a02('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8a02('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8a02('0x7'));var client=jayson['client'][_0x8a02('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1a29c9,_0x15f5da,_0x4d234a){return new BPromise(function(_0x50e6e3,_0x432f1d){return client[_0x8a02('0x9')](_0x1a29c9,_0x4d234a)[_0x8a02('0xa')](function(_0x324f99){logger[_0x8a02('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0x15f5da,_0x8a02('0xc'));logger[_0x8a02('0xd')](_0x8a02('0xe'),_0x15f5da,_0x8a02('0xc'),JSON[_0x8a02('0xf')](_0x324f99));if(_0x324f99[_0x8a02('0x10')]){if(_0x324f99[_0x8a02('0x10')]['code']===0x1f4){logger[_0x8a02('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x15f5da,_0x324f99['error'][_0x8a02('0x11')]);return _0x432f1d(_0x324f99[_0x8a02('0x10')][_0x8a02('0x11')]);}logger[_0x8a02('0x10')](_0x8a02('0x12'),_0x15f5da,_0x324f99[_0x8a02('0x10')][_0x8a02('0x11')]);return _0x50e6e3(_0x324f99['error'][_0x8a02('0x11')]);}else{logger[_0x8a02('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0x15f5da,_0x8a02('0xc'));_0x50e6e3(_0x324f99[_0x8a02('0x13')][_0x8a02('0x11')]);}})['catch'](function(_0x40ad26){logger[_0x8a02('0x10')](_0x8a02('0x12'),_0x15f5da,_0x40ad26);_0x432f1d(_0x40ad26);});});}
\ No newline at end of file
+var _0xdd43=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','UserWhatsappQueue,\x20%s,\x20%s'];(function(_0x28a5ad,_0x520afa){var _0x176b8a=function(_0x3d71b){while(--_0x3d71b){_0x28a5ad['push'](_0x28a5ad['shift']());}};_0x176b8a(++_0x520afa);}(_0xdd43,0x17c));var _0x3dd4=function(_0x10aaa6,_0xc635ca){_0x10aaa6=_0x10aaa6-0x0;var _0x1bd169=_0xdd43[_0x10aaa6];return _0x1bd169;};'use strict';var _=require(_0x3dd4('0x0'));var util=require(_0x3dd4('0x1'));var moment=require('moment');var BPromise=require(_0x3dd4('0x2'));var rs=require(_0x3dd4('0x3'));var fs=require('fs');var Redis=require(_0x3dd4('0x4'));var db=require(_0x3dd4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3dd4('0x6'))(_0x3dd4('0x7'));var config=require('../../config/environment');var jayson=require(_0x3dd4('0x8'));var client=jayson[_0x3dd4('0x9')][_0x3dd4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c1e49,_0x4b3dd3,_0x5ddc0a){return new BPromise(function(_0x3a723,_0x469080){return client[_0x3dd4('0xb')](_0x4c1e49,_0x5ddc0a)['then'](function(_0x21cb3a){logger[_0x3dd4('0xc')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4b3dd3,'request\x20sent');logger['debug'](_0x3dd4('0xd'),_0x4b3dd3,_0x3dd4('0xe'),JSON[_0x3dd4('0xf')](_0x21cb3a));if(_0x21cb3a[_0x3dd4('0x10')]){if(_0x21cb3a[_0x3dd4('0x10')][_0x3dd4('0x11')]===0x1f4){logger[_0x3dd4('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4b3dd3,_0x21cb3a[_0x3dd4('0x10')][_0x3dd4('0x12')]);return _0x469080(_0x21cb3a[_0x3dd4('0x10')][_0x3dd4('0x12')]);}logger['error'](_0x3dd4('0x13'),_0x4b3dd3,_0x21cb3a[_0x3dd4('0x10')][_0x3dd4('0x12')]);return _0x3a723(_0x21cb3a[_0x3dd4('0x10')][_0x3dd4('0x12')]);}else{logger[_0x3dd4('0xc')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4b3dd3,_0x3dd4('0xe'));_0x3a723(_0x21cb3a['result']['message']);}})['catch'](function(_0x5437c6){logger[_0x3dd4('0x10')](_0x3dd4('0x13'),_0x4b3dd3,_0x5437c6);_0x469080(_0x5437c6);});});}
\ No newline at end of file
index 3101398..f0c0e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c0=['update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','post','/:id'];(function(_0x3879bd,_0x4a4857){var _0x4d37b2=function(_0x12e65d){while(--_0x12e65d){_0x3879bd['push'](_0x3879bd['shift']());}};_0x4d37b2(++_0x4a4857);}(_0x32c0,0x1f3));var _0x032c=function(_0x2ef054,_0x14a9e1){_0x2ef054=_0x2ef054-0x0;var _0x5e94e0=_0x32c0[_0x2ef054];return _0x5e94e0;};'use strict';var multer=require(_0x032c('0x0'));var util=require(_0x032c('0x1'));var path=require('path');var timeout=require(_0x032c('0x2'));var express=require(_0x032c('0x3'));var router=express['Router']();var fs_extra=require(_0x032c('0x4'));var auth=require(_0x032c('0x5'));var interaction=require(_0x032c('0x6'));var config=require(_0x032c('0x7'));var controller=require('./variable.controller');router[_0x032c('0x8')]('/',auth[_0x032c('0x9')](),controller[_0x032c('0xa')]);router[_0x032c('0x8')]('/:id',auth[_0x032c('0x9')](),controller['show']);router[_0x032c('0xb')]('/',auth[_0x032c('0x9')](),controller['create']);router['put'](_0x032c('0xc'),auth['isAuthenticated'](),controller[_0x032c('0xd')]);router['delete'](_0x032c('0xc'),auth[_0x032c('0x9')](),controller[_0x032c('0xe')]);module[_0x032c('0xf')]=router;
\ No newline at end of file
+var _0x861c=['get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller'];(function(_0x174a2d,_0x44cf92){var _0x3a58c3=function(_0x43afaf){while(--_0x43afaf){_0x174a2d['push'](_0x174a2d['shift']());}};_0x3a58c3(++_0x44cf92);}(_0x861c,0xdb));var _0xc861=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x861c[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0xc861('0x0'));var util=require(_0xc861('0x1'));var path=require(_0xc861('0x2'));var timeout=require(_0xc861('0x3'));var express=require(_0xc861('0x4'));var router=express[_0xc861('0x5')]();var fs_extra=require(_0xc861('0x6'));var auth=require(_0xc861('0x7'));var interaction=require(_0xc861('0x8'));var config=require(_0xc861('0x9'));var controller=require(_0xc861('0xa'));router[_0xc861('0xb')]('/',auth['isAuthenticated'](),controller[_0xc861('0xc')]);router[_0xc861('0xb')](_0xc861('0xd'),auth[_0xc861('0xe')](),controller[_0xc861('0xf')]);router[_0xc861('0x10')]('/',auth[_0xc861('0xe')](),controller[_0xc861('0x11')]);router[_0xc861('0x12')](_0xc861('0xd'),auth[_0xc861('0xe')](),controller[_0xc861('0x13')]);router[_0xc861('0x14')]('/:id',auth[_0xc861('0xe')](),controller[_0xc861('0x15')]);module[_0xc861('0x16')]=router;
\ No newline at end of file
index db22c61..ed4f5e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd3=['name'];(function(_0x229527,_0x337664){var _0x1b88d3=function(_0x571b4e){while(--_0x571b4e){_0x229527['push'](_0x229527['shift']());}};_0x1b88d3(++_0x337664);}(_0x5bd3,0x1a3));var _0x35bd=function(_0x368fb9,_0x1a9895){_0x368fb9=_0x368fb9-0x0;var _0x4892fb=_0x5bd3[_0x368fb9];return _0x4892fb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x35bd('0x0'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb654=['exports','STRING','name'];(function(_0xf21c83,_0x56047d){var _0x511324=function(_0x37d9cd){while(--_0x37d9cd){_0xf21c83['push'](_0xf21c83['shift']());}};_0x511324(++_0x56047d);}(_0xb654,0xc3));var _0x4b65=function(_0x599cb1,_0x109670){_0x599cb1=_0x599cb1-0x0;var _0x18e65e=_0xb654[_0x599cb1];return _0x18e65e;};'use strict';var Sequelize=require('sequelize');module[_0x4b65('0x0')]={'name':{'type':Sequelize[_0x4b65('0x1')],'unique':_0x4b65('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4b65('0x1')]}};
\ No newline at end of file
index b6d8824..c903838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6a0=['reject','save','update','then','destroy','stack','name','send','Variable','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','Variables','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply'];(function(_0x51beba,_0x202d19){var _0x167ee0=function(_0x2d5b21){while(--_0x2d5b21){_0x51beba['push'](_0x51beba['shift']());}};_0x167ee0(++_0x202d19);}(_0xd6a0,0x135));var _0x0d6a=function(_0xab07d5,_0x10bd96){_0xab07d5=_0xab07d5-0x0;var _0x3c6a14=_0xd6a0[_0xab07d5];return _0x3c6a14;};'use strict';var emlformat=require(_0x0d6a('0x0'));var rimraf=require(_0x0d6a('0x1'));var zipdir=require(_0x0d6a('0x2'));var jsonpatch=require(_0x0d6a('0x3'));var rp=require(_0x0d6a('0x4'));var moment=require(_0x0d6a('0x5'));var BPromise=require(_0x0d6a('0x6'));var Mustache=require(_0x0d6a('0x7'));var util=require(_0x0d6a('0x8'));var path=require(_0x0d6a('0x9'));var sox=require('sox');var csv=require(_0x0d6a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0d6a('0xb'));var _=require(_0x0d6a('0xc'));var squel=require(_0x0d6a('0xd'));var crypto=require(_0x0d6a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0d6a('0xf'));var toCsv=require(_0x0d6a('0xa'));var querystring=require(_0x0d6a('0x10'));var Papa=require('papaparse');var Redis=require(_0x0d6a('0x11'));var authService=require(_0x0d6a('0x12'));var qs=require(_0x0d6a('0x13'));var as=require(_0x0d6a('0x14'));var hardwareService=require(_0x0d6a('0x15'));var logger=require(_0x0d6a('0x16'))(_0x0d6a('0x17'));var utils=require(_0x0d6a('0x18'));var config=require(_0x0d6a('0x19'));var licenseUtil=require(_0x0d6a('0x1a'));var db=require(_0x0d6a('0x1b'))['db'];function respondWithStatusCode(_0x3e7f7f,_0x1f728d){_0x1f728d=_0x1f728d||0xcc;return function(_0x161120){if(_0x161120){return _0x3e7f7f[_0x0d6a('0x1c')](_0x1f728d);}return _0x3e7f7f['status'](_0x1f728d)[_0x0d6a('0x1d')]();};}function respondWithResult(_0x594603,_0x23cd4d){_0x23cd4d=_0x23cd4d||0xc8;return function(_0x10919d){if(_0x10919d){return _0x594603[_0x0d6a('0x1e')](_0x23cd4d)['json'](_0x10919d);}};}function respondWithFilteredResult(_0x41bd6,_0x342e04){return function(_0x3d1028){if(_0x3d1028){var _0x2261fe=typeof _0x342e04[_0x0d6a('0x1f')]==='undefined'&&typeof _0x342e04[_0x0d6a('0x20')]===_0x0d6a('0x21');var _0x941015=_0x3d1028[_0x0d6a('0x22')];var _0x2ed1e8=_0x2261fe?0x0:_0x342e04[_0x0d6a('0x1f')];var _0x38acdf=_0x2261fe?_0x3d1028[_0x0d6a('0x22')]:_0x342e04[_0x0d6a('0x1f')]+_0x342e04[_0x0d6a('0x20')];var _0x3a79e7;if(_0x38acdf>=_0x941015){_0x38acdf=_0x941015;_0x3a79e7=0xc8;}else{_0x3a79e7=0xce;}_0x41bd6[_0x0d6a('0x1e')](_0x3a79e7);return _0x41bd6[_0x0d6a('0x23')](_0x0d6a('0x24'),_0x2ed1e8+'-'+_0x38acdf+'/'+_0x941015)[_0x0d6a('0x25')](_0x3d1028);}return null;};}function patchUpdates(_0x1c647a){return function(_0x12b34d){try{jsonpatch[_0x0d6a('0x26')](_0x12b34d,_0x1c647a,!![]);}catch(_0x4863ab){return BPromise[_0x0d6a('0x27')](_0x4863ab);}return _0x12b34d[_0x0d6a('0x28')]();};}function saveUpdates(_0x1ac86b,_0x552b1a){return function(_0xfb98b){if(_0xfb98b){return _0xfb98b[_0x0d6a('0x29')](_0x1ac86b)[_0x0d6a('0x2a')](function(_0x35d8ad){return _0x35d8ad;});}return null;};}function removeEntity(_0x3b7f2f,_0x5ba334){return function(_0x2c2832){if(_0x2c2832){return _0x2c2832[_0x0d6a('0x2b')]()[_0x0d6a('0x2a')](function(){var _0x3840ec=_0x2c2832['get']({'plain':!![]});var _0x3bcee3='Variables';return db['UserProfileResource'][_0x0d6a('0x2b')]({'where':{'type':_0x3bcee3,'resourceId':_0x3840ec['id']}})['then'](function(){return _0x2c2832;});})[_0x0d6a('0x2a')](function(){_0x3b7f2f[_0x0d6a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39e0f7,_0x2a3477){return function(_0x1b92a4){if(!_0x1b92a4){_0x39e0f7['sendStatus'](0x194);}return _0x1b92a4;};}function handleError(_0x376875,_0x27f5b9){_0x27f5b9=_0x27f5b9||0x1f4;return function(_0x4bad7d){logger['error'](_0x4bad7d[_0x0d6a('0x2c')]);if(_0x4bad7d[_0x0d6a('0x2d')]){delete _0x4bad7d[_0x0d6a('0x2d')];}_0x376875[_0x0d6a('0x1e')](_0x27f5b9)[_0x0d6a('0x2e')](_0x4bad7d);};}exports['index']=function(_0x21254e,_0x4fdbce){var _0xa64805={},_0x241a2f={},_0x42e406={'count':0x0,'rows':[]};var _0x43b7e8=_['map'](db[_0x0d6a('0x2f')][_0x0d6a('0x30')],function(_0xa42751){return{'name':_0xa42751[_0x0d6a('0x31')],'type':_0xa42751[_0x0d6a('0x32')]['key']};});_0x241a2f[_0x0d6a('0x33')]=_[_0x0d6a('0x34')](_0x43b7e8,_0x0d6a('0x2d'));_0x241a2f['query']=_[_0x0d6a('0x35')](_0x21254e[_0x0d6a('0x36')]);_0x241a2f[_0x0d6a('0x37')]=_['intersection'](_0x241a2f[_0x0d6a('0x33')],_0x241a2f['query']);_0xa64805[_0x0d6a('0x38')]=_[_0x0d6a('0x39')](_0x241a2f['model'],qs[_0x0d6a('0x3a')](_0x21254e[_0x0d6a('0x36')][_0x0d6a('0x3a')]));_0xa64805[_0x0d6a('0x38')]=_0xa64805[_0x0d6a('0x38')][_0x0d6a('0x3b')]?_0xa64805[_0x0d6a('0x38')]:_0x241a2f[_0x0d6a('0x33')];if(!_0x21254e['query']['hasOwnProperty']('nolimit')){_0xa64805[_0x0d6a('0x20')]=qs[_0x0d6a('0x20')](_0x21254e['query'][_0x0d6a('0x20')]);_0xa64805[_0x0d6a('0x1f')]=qs[_0x0d6a('0x1f')](_0x21254e[_0x0d6a('0x36')]['offset']);}_0xa64805[_0x0d6a('0x3c')]=qs[_0x0d6a('0x3d')](_0x21254e[_0x0d6a('0x36')][_0x0d6a('0x3d')]);_0xa64805[_0x0d6a('0x3e')]=qs['filters'](_[_0x0d6a('0x3f')](_0x21254e[_0x0d6a('0x36')],_0x241a2f[_0x0d6a('0x37')]),_0x43b7e8);if(_0x21254e[_0x0d6a('0x36')]['filter']){_0xa64805['where']=_['merge'](_0xa64805[_0x0d6a('0x3e')],{'$or':_[_0x0d6a('0x34')](_0x43b7e8,function(_0x15ca71){if(_0x15ca71['type']!==_0x0d6a('0x40')){var _0x4f38b5={};_0x4f38b5[_0x15ca71[_0x0d6a('0x2d')]]={'$like':'%'+_0x21254e[_0x0d6a('0x36')][_0x0d6a('0x41')]+'%'};return _0x4f38b5;}})});}_0xa64805=_[_0x0d6a('0x42')]({},_0xa64805,_0x21254e['options']);var _0x3136dc={'where':_0xa64805[_0x0d6a('0x3e')]};return db[_0x0d6a('0x2f')][_0x0d6a('0x22')](_0x3136dc)[_0x0d6a('0x2a')](function(_0x56663){_0x42e406[_0x0d6a('0x22')]=_0x56663;if(_0x21254e['query'][_0x0d6a('0x43')]){_0xa64805[_0x0d6a('0x44')]=[{'all':!![]}];}return db['Variable']['findAll'](_0xa64805);})[_0x0d6a('0x2a')](function(_0x578976){_0x42e406[_0x0d6a('0x45')]=_0x578976;return _0x42e406;})[_0x0d6a('0x2a')](respondWithFilteredResult(_0x4fdbce,_0xa64805))[_0x0d6a('0x46')](handleError(_0x4fdbce,null));};exports[_0x0d6a('0x47')]=function(_0x359595,_0x15c60b){var _0x164362={'raw':!![],'where':{'id':_0x359595[_0x0d6a('0x48')]['id']}},_0xceb0b2={};_0xceb0b2[_0x0d6a('0x33')]=_[_0x0d6a('0x35')](db[_0x0d6a('0x2f')][_0x0d6a('0x30')]);_0xceb0b2[_0x0d6a('0x36')]=_[_0x0d6a('0x35')](_0x359595[_0x0d6a('0x36')]);_0xceb0b2[_0x0d6a('0x37')]=_['intersection'](_0xceb0b2[_0x0d6a('0x33')],_0xceb0b2[_0x0d6a('0x36')]);_0x164362[_0x0d6a('0x38')]=_[_0x0d6a('0x39')](_0xceb0b2[_0x0d6a('0x33')],qs['fields'](_0x359595[_0x0d6a('0x36')][_0x0d6a('0x3a')]));_0x164362[_0x0d6a('0x38')]=_0x164362[_0x0d6a('0x38')][_0x0d6a('0x3b')]?_0x164362['attributes']:_0xceb0b2[_0x0d6a('0x33')];if(_0x359595[_0x0d6a('0x36')][_0x0d6a('0x43')]){_0x164362[_0x0d6a('0x44')]=[{'all':!![]}];}_0x164362=_[_0x0d6a('0x42')]({},_0x164362,_0x359595[_0x0d6a('0x49')]);return db['Variable'][_0x0d6a('0x4a')](_0x164362)['then'](handleEntityNotFound(_0x15c60b,null))['then'](respondWithResult(_0x15c60b,null))['catch'](handleError(_0x15c60b,null));};exports['create']=function(_0x248803,_0x8137bc){return db['Variable'][_0x0d6a('0x4b')](_0x248803[_0x0d6a('0x4c')],{})[_0x0d6a('0x2a')](function(_0x48d92c){var _0x171d07=_0x248803['user']['get']({'plain':!![]});if(!_0x171d07)throw new Error(_0x0d6a('0x4d'));if(_0x171d07[_0x0d6a('0x4e')]===_0x0d6a('0x4f')){var _0x2aa99c=_0x48d92c[_0x0d6a('0x50')]({'plain':!![]});var _0x4bfde9=_0x0d6a('0x51');return db['UserProfileSection'][_0x0d6a('0x4a')]({'where':{'name':_0x4bfde9,'userProfileId':_0x171d07[_0x0d6a('0x52')]},'raw':!![]})[_0x0d6a('0x2a')](function(_0x3c1f8e){if(_0x3c1f8e&&_0x3c1f8e[_0x0d6a('0x53')]===0x0){return db[_0x0d6a('0x54')][_0x0d6a('0x4b')]({'name':_0x2aa99c[_0x0d6a('0x2d')],'resourceId':_0x2aa99c['id'],'type':_0x3c1f8e[_0x0d6a('0x2d')],'sectionId':_0x3c1f8e['id']},{})[_0x0d6a('0x2a')](function(){return _0x48d92c;});}else{return _0x48d92c;}})[_0x0d6a('0x46')](function(_0x2e72c3){logger[_0x0d6a('0x55')](_0x0d6a('0x56'),_0x2e72c3);throw _0x2e72c3;});}return _0x48d92c;})[_0x0d6a('0x2a')](respondWithResult(_0x8137bc,0xc9))['catch'](handleError(_0x8137bc,null));};exports[_0x0d6a('0x29')]=function(_0x48ad16,_0xb766a9){if(_0x48ad16[_0x0d6a('0x4c')]['id']){delete _0x48ad16['body']['id'];}return db['Variable']['find']({'where':{'id':_0x48ad16['params']['id']}})[_0x0d6a('0x2a')](handleEntityNotFound(_0xb766a9,null))[_0x0d6a('0x2a')](saveUpdates(_0x48ad16[_0x0d6a('0x4c')],null))[_0x0d6a('0x2a')](respondWithResult(_0xb766a9,null))['catch'](handleError(_0xb766a9,null));};exports[_0x0d6a('0x2b')]=function(_0x1080c8,_0x179da6){return db[_0x0d6a('0x2f')][_0x0d6a('0x4a')]({'where':{'id':_0x1080c8[_0x0d6a('0x48')]['id']}})[_0x0d6a('0x2a')](handleEntityNotFound(_0x179da6,null))[_0x0d6a('0x2a')](removeEntity(_0x179da6,null))[_0x0d6a('0x46')](handleError(_0x179da6,null));};
\ No newline at end of file
+var _0x83b3=['attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','UserProfileResource','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set','json','apply','update','then','get','Variables','destroy','end','sendStatus','error','stack','name','send','map','Variable','rawAttributes','fieldName','type','key','keys','query','filters','intersection'];(function(_0x4949a3,_0x574ef0){var _0x5b4d9c=function(_0x2c145d){while(--_0x2c145d){_0x4949a3['push'](_0x4949a3['shift']());}};_0x5b4d9c(++_0x574ef0);}(_0x83b3,0x1ad));var _0x383b=function(_0x46d798,_0x26fa4f){_0x46d798=_0x46d798-0x0;var _0x2a1e=_0x83b3[_0x46d798];return _0x2a1e;};'use strict';var emlformat=require(_0x383b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x383b('0x1'));var jsonpatch=require(_0x383b('0x2'));var rp=require(_0x383b('0x3'));var moment=require(_0x383b('0x4'));var BPromise=require(_0x383b('0x5'));var Mustache=require('mustache');var util=require(_0x383b('0x6'));var path=require(_0x383b('0x7'));var sox=require('sox');var csv=require(_0x383b('0x8'));var ejs=require(_0x383b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x383b('0xa'));var squel=require(_0x383b('0xb'));var crypto=require(_0x383b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x383b('0xd'));var toCsv=require(_0x383b('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x383b('0xe'));var qs=require(_0x383b('0xf'));var as=require(_0x383b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x383b('0x11'))(_0x383b('0x12'));var utils=require(_0x383b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x383b('0x14'));var db=require(_0x383b('0x15'))['db'];function respondWithStatusCode(_0x48f652,_0x26a08e){_0x26a08e=_0x26a08e||0xcc;return function(_0x2d1164){if(_0x2d1164){return _0x48f652['sendStatus'](_0x26a08e);}return _0x48f652[_0x383b('0x16')](_0x26a08e)['end']();};}function respondWithResult(_0x4c1f7c,_0x15d1ae){_0x15d1ae=_0x15d1ae||0xc8;return function(_0x1d9fed){if(_0x1d9fed){return _0x4c1f7c[_0x383b('0x16')](_0x15d1ae)['json'](_0x1d9fed);}};}function respondWithFilteredResult(_0x20f99d,_0x17c29e){return function(_0x17543f){if(_0x17543f){var _0x1b086d=typeof _0x17c29e[_0x383b('0x17')]==='undefined'&&typeof _0x17c29e[_0x383b('0x18')]===_0x383b('0x19');var _0x2d6ba5=_0x17543f[_0x383b('0x1a')];var _0x562392=_0x1b086d?0x0:_0x17c29e[_0x383b('0x17')];var _0x5f25d1=_0x1b086d?_0x17543f[_0x383b('0x1a')]:_0x17c29e['offset']+_0x17c29e[_0x383b('0x18')];var _0x279b2a;if(_0x5f25d1>=_0x2d6ba5){_0x5f25d1=_0x2d6ba5;_0x279b2a=0xc8;}else{_0x279b2a=0xce;}_0x20f99d['status'](_0x279b2a);return _0x20f99d[_0x383b('0x1b')]('Content-Range',_0x562392+'-'+_0x5f25d1+'/'+_0x2d6ba5)[_0x383b('0x1c')](_0x17543f);}return null;};}function patchUpdates(_0x4cab3b){return function(_0x8b5ca9){try{jsonpatch[_0x383b('0x1d')](_0x8b5ca9,_0x4cab3b,!![]);}catch(_0x1f1ba0){return BPromise['reject'](_0x1f1ba0);}return _0x8b5ca9['save']();};}function saveUpdates(_0x3e9f7b,_0x3d81b5){return function(_0x356ad0){if(_0x356ad0){return _0x356ad0[_0x383b('0x1e')](_0x3e9f7b)[_0x383b('0x1f')](function(_0x10c7b4){return _0x10c7b4;});}return null;};}function removeEntity(_0x6693cc,_0x168072){return function(_0x2887c5){if(_0x2887c5){return _0x2887c5['destroy']()[_0x383b('0x1f')](function(){var _0x266a91=_0x2887c5[_0x383b('0x20')]({'plain':!![]});var _0x4d37df=_0x383b('0x21');return db['UserProfileResource'][_0x383b('0x22')]({'where':{'type':_0x4d37df,'resourceId':_0x266a91['id']}})[_0x383b('0x1f')](function(){return _0x2887c5;});})[_0x383b('0x1f')](function(){_0x6693cc[_0x383b('0x16')](0xcc)[_0x383b('0x23')]();});}};}function handleEntityNotFound(_0x2b4455,_0x402e09){return function(_0x58cba3){if(!_0x58cba3){_0x2b4455[_0x383b('0x24')](0x194);}return _0x58cba3;};}function handleError(_0x112e29,_0x5ec697){_0x5ec697=_0x5ec697||0x1f4;return function(_0x325292){logger[_0x383b('0x25')](_0x325292[_0x383b('0x26')]);if(_0x325292[_0x383b('0x27')]){delete _0x325292[_0x383b('0x27')];}_0x112e29['status'](_0x5ec697)[_0x383b('0x28')](_0x325292);};}exports['index']=function(_0x3ae8e0,_0x40df33){var _0x32dfbb={},_0x35dd3f={},_0x42a01b={'count':0x0,'rows':[]};var _0x58b227=_[_0x383b('0x29')](db[_0x383b('0x2a')][_0x383b('0x2b')],function(_0x364957){return{'name':_0x364957[_0x383b('0x2c')],'type':_0x364957[_0x383b('0x2d')][_0x383b('0x2e')]};});_0x35dd3f['model']=_[_0x383b('0x29')](_0x58b227,_0x383b('0x27'));_0x35dd3f['query']=_[_0x383b('0x2f')](_0x3ae8e0[_0x383b('0x30')]);_0x35dd3f[_0x383b('0x31')]=_[_0x383b('0x32')](_0x35dd3f['model'],_0x35dd3f['query']);_0x32dfbb[_0x383b('0x33')]=_[_0x383b('0x32')](_0x35dd3f[_0x383b('0x34')],qs[_0x383b('0x35')](_0x3ae8e0[_0x383b('0x30')][_0x383b('0x35')]));_0x32dfbb[_0x383b('0x33')]=_0x32dfbb[_0x383b('0x33')][_0x383b('0x36')]?_0x32dfbb[_0x383b('0x33')]:_0x35dd3f[_0x383b('0x34')];if(!_0x3ae8e0[_0x383b('0x30')]['hasOwnProperty'](_0x383b('0x37'))){_0x32dfbb[_0x383b('0x18')]=qs[_0x383b('0x18')](_0x3ae8e0[_0x383b('0x30')]['limit']);_0x32dfbb[_0x383b('0x17')]=qs[_0x383b('0x17')](_0x3ae8e0[_0x383b('0x30')]['offset']);}_0x32dfbb[_0x383b('0x38')]=qs[_0x383b('0x39')](_0x3ae8e0[_0x383b('0x30')]['sort']);_0x32dfbb[_0x383b('0x3a')]=qs['filters'](_[_0x383b('0x3b')](_0x3ae8e0[_0x383b('0x30')],_0x35dd3f['filters']),_0x58b227);if(_0x3ae8e0['query'][_0x383b('0x3c')]){_0x32dfbb[_0x383b('0x3a')]=_[_0x383b('0x3d')](_0x32dfbb[_0x383b('0x3a')],{'$or':_['map'](_0x58b227,function(_0x2f8285){if(_0x2f8285[_0x383b('0x2d')]!==_0x383b('0x3e')){var _0x1582b9={};_0x1582b9[_0x2f8285[_0x383b('0x27')]]={'$like':'%'+_0x3ae8e0[_0x383b('0x30')][_0x383b('0x3c')]+'%'};return _0x1582b9;}})});}_0x32dfbb=_[_0x383b('0x3d')]({},_0x32dfbb,_0x3ae8e0['options']);var _0x5a5634={'where':_0x32dfbb['where']};return db[_0x383b('0x2a')][_0x383b('0x1a')](_0x5a5634)[_0x383b('0x1f')](function(_0x351547){_0x42a01b['count']=_0x351547;if(_0x3ae8e0[_0x383b('0x30')][_0x383b('0x3f')]){_0x32dfbb[_0x383b('0x40')]=[{'all':!![]}];}return db[_0x383b('0x2a')][_0x383b('0x41')](_0x32dfbb);})[_0x383b('0x1f')](function(_0x26f385){_0x42a01b[_0x383b('0x42')]=_0x26f385;return _0x42a01b;})['then'](respondWithFilteredResult(_0x40df33,_0x32dfbb))[_0x383b('0x43')](handleError(_0x40df33,null));};exports[_0x383b('0x44')]=function(_0x37c98d,_0x37bee6){var _0x4cc9da={'raw':!![],'where':{'id':_0x37c98d['params']['id']}},_0x4ac58b={};_0x4ac58b[_0x383b('0x34')]=_[_0x383b('0x2f')](db['Variable'][_0x383b('0x2b')]);_0x4ac58b['query']=_['keys'](_0x37c98d[_0x383b('0x30')]);_0x4ac58b[_0x383b('0x31')]=_[_0x383b('0x32')](_0x4ac58b[_0x383b('0x34')],_0x4ac58b[_0x383b('0x30')]);_0x4cc9da[_0x383b('0x33')]=_[_0x383b('0x32')](_0x4ac58b[_0x383b('0x34')],qs[_0x383b('0x35')](_0x37c98d[_0x383b('0x30')][_0x383b('0x35')]));_0x4cc9da[_0x383b('0x33')]=_0x4cc9da[_0x383b('0x33')][_0x383b('0x36')]?_0x4cc9da[_0x383b('0x33')]:_0x4ac58b[_0x383b('0x34')];if(_0x37c98d[_0x383b('0x30')][_0x383b('0x3f')]){_0x4cc9da['include']=[{'all':!![]}];}_0x4cc9da=_[_0x383b('0x3d')]({},_0x4cc9da,_0x37c98d[_0x383b('0x45')]);return db[_0x383b('0x2a')]['find'](_0x4cc9da)[_0x383b('0x1f')](handleEntityNotFound(_0x37bee6,null))[_0x383b('0x1f')](respondWithResult(_0x37bee6,null))[_0x383b('0x43')](handleError(_0x37bee6,null));};exports['create']=function(_0x450aeb,_0x2fc7d8){return db[_0x383b('0x2a')][_0x383b('0x46')](_0x450aeb[_0x383b('0x47')],{})['then'](function(_0x5d3ca2){var _0x530010=_0x450aeb[_0x383b('0x48')]['get']({'plain':!![]});if(!_0x530010)throw new Error(_0x383b('0x49'));if(_0x530010[_0x383b('0x4a')]===_0x383b('0x48')){var _0x55ddc7=_0x5d3ca2[_0x383b('0x20')]({'plain':!![]});var _0x205a9a=_0x383b('0x21');return db['UserProfileSection'][_0x383b('0x4b')]({'where':{'name':_0x205a9a,'userProfileId':_0x530010[_0x383b('0x4c')]},'raw':!![]})[_0x383b('0x1f')](function(_0x140b97){if(_0x140b97&&_0x140b97[_0x383b('0x4d')]===0x0){return db[_0x383b('0x4e')][_0x383b('0x46')]({'name':_0x55ddc7[_0x383b('0x27')],'resourceId':_0x55ddc7['id'],'type':_0x140b97['name'],'sectionId':_0x140b97['id']},{})[_0x383b('0x1f')](function(){return _0x5d3ca2;});}else{return _0x5d3ca2;}})[_0x383b('0x43')](function(_0x55c45f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55c45f);throw _0x55c45f;});}return _0x5d3ca2;})[_0x383b('0x1f')](respondWithResult(_0x2fc7d8,0xc9))['catch'](handleError(_0x2fc7d8,null));};exports[_0x383b('0x1e')]=function(_0x200a94,_0x25ed88){if(_0x200a94['body']['id']){delete _0x200a94[_0x383b('0x47')]['id'];}return db['Variable'][_0x383b('0x4b')]({'where':{'id':_0x200a94['params']['id']}})[_0x383b('0x1f')](handleEntityNotFound(_0x25ed88,null))[_0x383b('0x1f')](saveUpdates(_0x200a94['body'],null))['then'](respondWithResult(_0x25ed88,null))[_0x383b('0x43')](handleError(_0x25ed88,null));};exports[_0x383b('0x22')]=function(_0x2e2799,_0x1493df){return db[_0x383b('0x2a')]['find']({'where':{'id':_0x2e2799[_0x383b('0x4f')]['id']}})[_0x383b('0x1f')](handleEntityNotFound(_0x1493df,null))[_0x383b('0x1f')](removeEntity(_0x1493df,null))[_0x383b('0x43')](handleError(_0x1493df,null));};
\ No newline at end of file
index 579f78a..fc8de69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba8=['request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','lodash','util','moment','bluebird'];(function(_0x1c647e,_0x4efcc7){var _0x5db0c9=function(_0x1be155){while(--_0x1be155){_0x1c647e['push'](_0x1c647e['shift']());}};_0x5db0c9(++_0x4efcc7);}(_0xcba8,0x71));var _0x8cba=function(_0x25d4a1,_0x5f13e0){_0x25d4a1=_0x25d4a1-0x0;var _0x4cf763=_0xcba8[_0x25d4a1];return _0x4cf763;};'use strict';var _=require(_0x8cba('0x0'));var util=require(_0x8cba('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8cba('0x2'));var BPromise=require(_0x8cba('0x3'));var rp=require(_0x8cba('0x4'));var fs=require('fs');var path=require(_0x8cba('0x5'));var rimraf=require(_0x8cba('0x6'));var config=require(_0x8cba('0x7'));var attributes=require(_0x8cba('0x8'));module[_0x8cba('0x9')]=function(_0xc83617,_0x25cd05){return _0xc83617[_0x8cba('0xa')](_0x8cba('0xb'),attributes,{'tableName':_0x8cba('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d2a=['bluebird','../../config/environment','exports','define','Variable','tools_variables','lodash','util','../../config/logger','api','moment'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7d2a,0x1b3));var _0xa7d2=function(_0x49b30d,_0x477b0b){_0x49b30d=_0x49b30d-0x0;var _0x56b787=_0x7d2a[_0x49b30d];return _0x56b787;};'use strict';var _=require(_0xa7d2('0x0'));var util=require(_0xa7d2('0x1'));var logger=require(_0xa7d2('0x2'))(_0xa7d2('0x3'));var moment=require(_0xa7d2('0x4'));var BPromise=require(_0xa7d2('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa7d2('0x6'));var attributes=require('./variable.attributes');module[_0xa7d2('0x7')]=function(_0x193345,_0x286389){return _0x193345[_0xa7d2('0x8')](_0xa7d2('0x9'),attributes,{'tableName':_0xa7d2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e19769a..ad00560 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(_0x3865ea,_0x45f818){var _0x9845a6=function(_0x11efed){while(--_0x11efed){_0x3865ea['push'](_0x3865ea['shift']());}};_0x9845a6(++_0x45f818);}(_0x55ca,0x126));var _0xa55c=function(_0x3cd283,_0x2b8542){_0x3cd283=_0x3cd283-0x0;var _0x5ea1f0=_0x55ca[_0x3cd283];return _0x5ea1f0;};'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 _0x1cb9=['include','map','model','then','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowVariable','Variable','options','attributes'];(function(_0x38c24b,_0x5a4734){var _0x4f8737=function(_0x4da2ee){while(--_0x4da2ee){_0x38c24b['push'](_0x38c24b['shift']());}};_0x4f8737(++_0x5a4734);}(_0x1cb9,0x14e));var _0x91cb=function(_0x5324cb,_0x2de975){_0x5324cb=_0x5324cb-0x0;var _0x104552=_0x1cb9[_0x5324cb];return _0x104552;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Variable,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}exports[_0x91cb('0x16')]=function(_0x1cd34b){var _0xcd1a78=this;return new Promise(function(_0x5cc1c3,_0x3fba4f){return db[_0x91cb('0x17')]['find']({'raw':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b['options']['raw']===undefined?!![]:![]:!![],'where':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')]['where']||null:null,'attributes':_0x1cd34b['options']?_0x1cd34b['options'][_0x91cb('0x19')]||null:null,'include':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')]?_['map'](_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')],function(_0x1fa837){return{'model':db[_0x1fa837['model']],'as':_0x1fa837['as'],'attributes':_0x1fa837[_0x91cb('0x19')],'include':_0x1fa837[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x1fa837[_0x91cb('0x1a')],function(_0x3ca500){return{'model':db[_0x3ca500[_0x91cb('0x1c')]],'as':_0x3ca500['as'],'attributes':_0x3ca500[_0x91cb('0x19')],'include':_0x3ca500[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x3ca500['include'],function(_0x59bf3a){return{'model':db[_0x59bf3a[_0x91cb('0x1c')]],'as':_0x59bf3a['as'],'attributes':_0x59bf3a['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cb('0x1d')](function(_0x34d372){logger[_0x91cb('0xc')]('ShowVariable',_0x1cd34b);logger[_0x91cb('0xf')]('ShowVariable',_0x1cd34b,JSON[_0x91cb('0x11')](_0x34d372));_0x5cc1c3(_0x34d372);})[_0x91cb('0x15')](function(_0x3b3ee6){logger[_0x91cb('0x12')](_0x91cb('0x16'),_0x3b3ee6['message'],_0x1cd34b);_0x3fba4f(_0xcd1a78[_0x91cb('0x12')](0x1f4,_0x3b3ee6['message']));});});};
\ No newline at end of file
index f9b5241..ed414b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a22=['../../components/auth/service','./version.controller','index','/fetch','canUpdate','get','/reset','isAuthenticated','reset','restart','/migrations','migrations','exports','Router'];(function(_0x4ae625,_0xf396d0){var _0x31accf=function(_0x3ded6b){while(--_0x3ded6b){_0x4ae625['push'](_0x4ae625['shift']());}};_0x31accf(++_0xf396d0);}(_0x8a22,0xa7));var _0x28a2=function(_0x1eb9a8,_0x4ef290){_0x1eb9a8=_0x1eb9a8-0x0;var _0x1f3836=_0x8a22[_0x1eb9a8];return _0x1f3836;};'use strict';var express=require('express');var router=express[_0x28a2('0x0')]();var auth=require(_0x28a2('0x1'));var controller=require(_0x28a2('0x2'));router['get']('/',controller[_0x28a2('0x3')]);router['get'](_0x28a2('0x4'),auth['isAuthenticated'](),auth[_0x28a2('0x5')](),controller['fetch']);router[_0x28a2('0x6')](_0x28a2('0x7'),auth[_0x28a2('0x8')](),auth[_0x28a2('0x5')](),controller[_0x28a2('0x9')]);router[_0x28a2('0x6')]('/pull',auth[_0x28a2('0x8')](),auth['canUpdate'](),controller['pull']);router[_0x28a2('0x6')]('/restart',auth[_0x28a2('0x8')](),controller[_0x28a2('0xa')]);router[_0x28a2('0x6')](_0x28a2('0xb'),controller[_0x28a2('0xc')]);module[_0x28a2('0xd')]=router;
\ No newline at end of file
+var _0x3d8b=['exports','express','Router','../../components/auth/service','./version.controller','isAuthenticated','canUpdate','fetch','get','/reset','reset','/pull','pull','restart','migrations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3d8b,0x14b));var _0xb3d8=function(_0x357791,_0x599bf0){_0x357791=_0x357791-0x0;var _0x546016=_0x3d8b[_0x357791];return _0x546016;};'use strict';var express=require(_0xb3d8('0x0'));var router=express[_0xb3d8('0x1')]();var auth=require(_0xb3d8('0x2'));var controller=require(_0xb3d8('0x3'));router['get']('/',controller['index']);router['get']('/fetch',auth[_0xb3d8('0x4')](),auth[_0xb3d8('0x5')](),controller[_0xb3d8('0x6')]);router[_0xb3d8('0x7')](_0xb3d8('0x8'),auth['isAuthenticated'](),auth[_0xb3d8('0x5')](),controller[_0xb3d8('0x9')]);router[_0xb3d8('0x7')](_0xb3d8('0xa'),auth['isAuthenticated'](),auth[_0xb3d8('0x5')](),controller[_0xb3d8('0xb')]);router['get']('/restart',auth[_0xb3d8('0x4')](),controller[_0xb3d8('0xc')]);router[_0xb3d8('0x7')]('/migrations',controller[_0xb3d8('0xd')]);module[_0xb3d8('0xe')]=router;
\ No newline at end of file
index 3554b2e..e3a5bbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a01=['status','json','error','info','git\x20fetch','reset','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','migrations','join','server','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.','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','Database\x20already\x20up-to-date','umzug','path','version','compare-versions','child_process','exec','../../config/environment','../../config/logger','update','simple-git','root','index','exports','query','fetch','tags','latest','2.0.0'];(function(_0x35676d,_0x1ec71c){var _0x1f622b=function(_0x5e9e1f){while(--_0x5e9e1f){_0x35676d['push'](_0x35676d['shift']());}};_0x1f622b(++_0x1ec71c);}(_0x1a01,0x84));var _0x11a0=function(_0x1e6cf1,_0x40c6d8){_0x1e6cf1=_0x1e6cf1-0x0;var _0x527676=_0x1a01[_0x1e6cf1];return _0x527676;};'use strict';var Umzug=require(_0x11a0('0x0'));var path=require(_0x11a0('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require('pkginfo')(module,_0x11a0('0x2'));var compareVersions=require(_0x11a0('0x3'));var exec=require(_0x11a0('0x4'))[_0x11a0('0x5')];var db=require('../../mysqldb')['db'];var config=require(_0x11a0('0x6'));var pm2=require('../../config/pm2');var logger=require(_0x11a0('0x7'))(_0x11a0('0x8'));var git=require(_0x11a0('0x9'))(config[_0x11a0('0xa')]);exports[_0x11a0('0xb')]=function(_0x1c9085,_0x1136a0){var _0x1507d9={'current':module[_0x11a0('0xc')]['version'],'phonebar':0x2};if(_0x1c9085[_0x11a0('0xd')]&&_0x1c9085[_0x11a0('0xd')]['latest']){return git[_0x11a0('0xe')]()[_0x11a0('0xf')](function(_0x53c969,_0xfbb5a8){_0x1507d9[_0x11a0('0x10')]=(_0x53c969?module[_0x11a0('0xc')][_0x11a0('0x2')]:_0xfbb5a8[_0x11a0('0x10')])||_0x11a0('0x11');return _0x1136a0[_0x11a0('0x12')](0xc8)['json'](_0x1507d9);});}else{return _0x1136a0[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')](_0x1507d9);}};exports[_0x11a0('0xe')]=function(_0x4f5872,_0x3c14f5){return git[_0x11a0('0xe')](['origin','master'],function(_0x303bc9){if(_0x303bc9){logger[_0x11a0('0x14')](_0x303bc9);return _0x3c14f5['status'](0x1f4)[_0x11a0('0x13')](_0x303bc9);}logger[_0x11a0('0x15')](_0x11a0('0x16'));return _0x3c14f5['status'](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x11a0('0x17')]=function(_0x398e49,_0x3d206e){return git[_0x11a0('0x17')](['--hard',_0x11a0('0x18')],function(_0x2c4745){if(_0x2c4745){logger[_0x11a0('0x14')](_0x2c4745);return _0x3d206e[_0x11a0('0x12')](0x1f4)[_0x11a0('0x13')](_0x2c4745);}logger[_0x11a0('0x15')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x3d206e[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')]({'output':_0x11a0('0x19')});});};exports[_0x11a0('0x1a')]=function(_0x2fcb18,_0x18b55b){exec(_0x11a0('0x1b'),function(_0x4b7927,_0x29d89d,_0x49c6ce){logger[_0x11a0('0x15')](_0x29d89d);logger[_0x11a0('0x15')](_0x49c6ce);if(_0x4b7927){logger[_0x11a0('0x14')](_0x4b7927);return _0x18b55b['status'](0x1f4)[_0x11a0('0x13')](_0x4b7927);}return _0x18b55b['status'](0xc8)[_0x11a0('0x13')]({'output':_0x29d89d});});};exports[_0x11a0('0x1c')]=function(_0x377509,_0x46ac1f){return pm2[_0x11a0('0x1c')](_0x11a0('0x1d'))[_0x11a0('0x1e')](function(_0xe5657){logger[_0x11a0('0x15')](_0x11a0('0x1f'),_0xe5657);return _0x46ac1f[_0x11a0('0x12')](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})['catch'](function(_0x12aedb){logger[_0x11a0('0x14')](_0x12aedb);return _0x46ac1f[_0x11a0('0x12')](0x1f4)[_0x11a0('0x13')](_0x12aedb);});};exports[_0x11a0('0x20')]=function(_0xa50c4b,_0x40b6b9){var _0x2ef8de=fs['readdirSync'](path[_0x11a0('0x21')](config['root'],_0x11a0('0x22'),_0x11a0('0x20')));var _0x5f283d=[];for(var _0x432b75=0x0;_0x432b75<_0x2ef8de[_0x11a0('0x23')];_0x432b75++){var _0x576492=_0x2ef8de[_0x432b75][_0x11a0('0x24')](_0x11a0('0x25'),'');if(compareVersions(module['exports'][_0x11a0('0x2')],_0x576492)===-0x1){_0x5f283d[_0x11a0('0x26')](_0x576492);}}if(_0x5f283d[_0x11a0('0x23')]){var _0x365215=_0x5f283d[_0x11a0('0x27')](compareVersions);var _0x56dac7=new Umzug({'storage':_0x11a0('0x28'),'storageOptions':{'model':db[_0x11a0('0x29')],'modelName':_0x11a0('0x29'),'columnName':_0x11a0('0x2')},'migrations':{'params':[db[_0x11a0('0x28')][_0x11a0('0x2a')](),db[_0x11a0('0x28')]['constructor'],function(){throw new Error(_0x11a0('0x2b'));}],'path':path[_0x11a0('0x21')](config[_0x11a0('0xa')],_0x11a0('0x22'),_0x11a0('0x20')),'pattern':/\.js$/}});_0x56dac7['up']({'migrations':_[_0x11a0('0x2c')](_0x365215,function(_0x5d9863){return _0x5d9863+_0x11a0('0x25');})})[_0x11a0('0x1e')](function(){return _0x40b6b9[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')]({'output':_0x11a0('0x2d')+module[_0x11a0('0xc')][_0x11a0('0x2')]+_0x11a0('0x2e')+_[_0x11a0('0x2f')](_0x365215),'migrations':_[_0x11a0('0x21')](_0x365215)});})[_0x11a0('0x30')](function(_0x44dab9){if(_0x44dab9 instanceof db['sequelize']['UniqueConstraintError']){return _0x40b6b9[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x40b6b9[_0x11a0('0x12')](0x1f4)[_0x11a0('0x13')](_0x44dab9);}});}else{return _0x40b6b9['status'](0xc8)[_0x11a0('0x13')]({'output':_0x11a0('0x31')});}};
\ No newline at end of file
+var _0xf5f0=['last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/logger','update','simple-git','root','index','exports','query','latest','tags','status','json','fetch','master','error','info','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xf5f0,0x1e9));var _0x0f5f=function(_0x34bf74,_0x5aac9f){_0x34bf74=_0x34bf74-0x0;var _0x34b65c=_0xf5f0[_0x34bf74];return _0x34b65c;};'use strict';var Umzug=require(_0x0f5f('0x0'));var path=require('path');var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x0f5f('0x1'))(module,_0x0f5f('0x2'));var compareVersions=require(_0x0f5f('0x3'));var exec=require(_0x0f5f('0x4'))[_0x0f5f('0x5')];var db=require(_0x0f5f('0x6'))['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require(_0x0f5f('0x7'))(_0x0f5f('0x8'));var git=require(_0x0f5f('0x9'))(config[_0x0f5f('0xa')]);exports[_0x0f5f('0xb')]=function(_0x4bc906,_0x5594de){var _0x3c6336={'current':module[_0x0f5f('0xc')][_0x0f5f('0x2')],'phonebar':0x2};if(_0x4bc906[_0x0f5f('0xd')]&&_0x4bc906[_0x0f5f('0xd')][_0x0f5f('0xe')]){return git['fetch']()[_0x0f5f('0xf')](function(_0x5b2a2b,_0x5a3fca){_0x3c6336[_0x0f5f('0xe')]=(_0x5b2a2b?module['exports'][_0x0f5f('0x2')]:_0x5a3fca[_0x0f5f('0xe')])||'2.0.0';return _0x5594de[_0x0f5f('0x10')](0xc8)[_0x0f5f('0x11')](_0x3c6336);});}else{return _0x5594de[_0x0f5f('0x10')](0xc8)[_0x0f5f('0x11')](_0x3c6336);}};exports['fetch']=function(_0x1e3d60,_0x5992b3){return git[_0x0f5f('0x12')](['origin',_0x0f5f('0x13')],function(_0x30823e){if(_0x30823e){logger[_0x0f5f('0x14')](_0x30823e);return _0x5992b3[_0x0f5f('0x10')](0x1f4)[_0x0f5f('0x11')](_0x30823e);}logger[_0x0f5f('0x15')]('git\x20fetch');return _0x5992b3[_0x0f5f('0x10')](0xc8)[_0x0f5f('0x11')]({'output':'git\x20fetch\x20origin\x20master'});});};exports['reset']=function(_0x5ce16d,_0x29e15c){return git[_0x0f5f('0x16')]([_0x0f5f('0x17'),_0x0f5f('0x18')],function(_0x20950a){if(_0x20950a){logger[_0x0f5f('0x14')](_0x20950a);return _0x29e15c['status'](0x1f4)['json'](_0x20950a);}logger[_0x0f5f('0x15')](_0x0f5f('0x19'));return _0x29e15c[_0x0f5f('0x10')](0xc8)[_0x0f5f('0x11')]({'output':_0x0f5f('0x1a')});});};exports[_0x0f5f('0x1b')]=function(_0x3707c6,_0x56b10b){exec(_0x0f5f('0x1c'),function(_0x3b18d4,_0x34c54e,_0xb0e4c){logger[_0x0f5f('0x15')](_0x34c54e);logger[_0x0f5f('0x15')](_0xb0e4c);if(_0x3b18d4){logger[_0x0f5f('0x14')](_0x3b18d4);return _0x56b10b[_0x0f5f('0x10')](0x1f4)[_0x0f5f('0x11')](_0x3b18d4);}return _0x56b10b[_0x0f5f('0x10')](0xc8)['json']({'output':_0x34c54e});});};exports[_0x0f5f('0x1d')]=function(_0x329988,_0x349b93){return pm2[_0x0f5f('0x1d')](_0x0f5f('0x1e'))[_0x0f5f('0x1f')](function(_0x31b8cb){logger['info'](_0x0f5f('0x20'),_0x31b8cb);return _0x349b93[_0x0f5f('0x10')](0xc8)[_0x0f5f('0x11')]({'output':_0x0f5f('0x21')});})[_0x0f5f('0x22')](function(_0x52339d){logger['error'](_0x52339d);return _0x349b93[_0x0f5f('0x10')](0x1f4)[_0x0f5f('0x11')](_0x52339d);});};exports[_0x0f5f('0x23')]=function(_0x3e3f5f,_0x4fd0c1){var _0x55471f=fs[_0x0f5f('0x24')](path[_0x0f5f('0x25')](config[_0x0f5f('0xa')],_0x0f5f('0x26'),_0x0f5f('0x23')));var _0x238b8b=[];for(var _0x3cf468=0x0;_0x3cf468<_0x55471f[_0x0f5f('0x27')];_0x3cf468++){var _0x77b762=_0x55471f[_0x3cf468]['replace'](_0x0f5f('0x28'),'');if(compareVersions(module[_0x0f5f('0xc')][_0x0f5f('0x2')],_0x77b762)===-0x1){_0x238b8b[_0x0f5f('0x29')](_0x77b762);}}if(_0x238b8b[_0x0f5f('0x27')]){var _0xe71656=_0x238b8b[_0x0f5f('0x2a')](compareVersions);var _0x179606=new Umzug({'storage':_0x0f5f('0x2b'),'storageOptions':{'model':db[_0x0f5f('0x2c')],'modelName':_0x0f5f('0x2c'),'columnName':_0x0f5f('0x2')},'migrations':{'params':[db['sequelize'][_0x0f5f('0x2d')](),db[_0x0f5f('0x2b')][_0x0f5f('0x2e')],function(){throw new Error(_0x0f5f('0x2f'));}],'path':path[_0x0f5f('0x25')](config[_0x0f5f('0xa')],'server',_0x0f5f('0x23')),'pattern':/\.js$/}});_0x179606['up']({'migrations':_[_0x0f5f('0x30')](_0xe71656,function(_0x4f7041){return _0x4f7041+_0x0f5f('0x28');})})[_0x0f5f('0x1f')](function(){return _0x4fd0c1['status'](0xc8)['json']({'output':_0x0f5f('0x31')+module[_0x0f5f('0xc')][_0x0f5f('0x2')]+_0x0f5f('0x32')+_[_0x0f5f('0x33')](_0xe71656),'migrations':_[_0x0f5f('0x25')](_0xe71656)});})[_0x0f5f('0x22')](function(_0x332d88){if(_0x332d88 instanceof db[_0x0f5f('0x2b')][_0x0f5f('0x34')]){return _0x4fd0c1[_0x0f5f('0x10')](0xc8)[_0x0f5f('0x11')]({'output':_0x0f5f('0x35')});}else{return _0x4fd0c1['status'](0x1f4)[_0x0f5f('0x11')](_0x332d88);}});}else{return _0x4fd0c1[_0x0f5f('0x10')](0xc8)['json']({'output':_0x0f5f('0x35')});}};
\ No newline at end of file
index f31b593..21204e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1807=['../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','/describe','describe','/:id','post','create','put','delete','multer','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x46f203,_0x4198cc){var _0x562669=function(_0x1fe334){while(--_0x1fe334){_0x46f203['push'](_0x46f203['shift']());}};_0x562669(++_0x4198cc);}(_0x1807,0xdb));var _0x7180=function(_0x4aa51f,_0x33e730){_0x4aa51f=_0x4aa51f-0x0;var _0x233451=_0x1807[_0x4aa51f];return _0x233451;};'use strict';var multer=require(_0x7180('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7180('0x1'));var express=require(_0x7180('0x2'));var router=express['Router']();var fs_extra=require(_0x7180('0x3'));var auth=require(_0x7180('0x4'));var interaction=require(_0x7180('0x5'));var config=require('../../config/environment');var controller=require(_0x7180('0x6'));router[_0x7180('0x7')]('/',auth[_0x7180('0x8')](),controller['index']);router[_0x7180('0x7')](_0x7180('0x9'),auth[_0x7180('0x8')](),controller[_0x7180('0xa')]);router[_0x7180('0x7')](_0x7180('0xb'),auth[_0x7180('0x8')](),controller['show']);router[_0x7180('0xc')]('/',auth['isAuthenticated'](),controller[_0x7180('0xd')]);router[_0x7180('0xe')](_0x7180('0xb'),auth[_0x7180('0x8')](),controller['update']);router[_0x7180('0xf')](_0x7180('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x832e=['express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','show','post','create','put','update','delete','/:id','destroy','exports','multer','util','connect-timeout'];(function(_0x150322,_0x2199fb){var _0x606a08=function(_0x22cace){while(--_0x22cace){_0x150322['push'](_0x150322['shift']());}};_0x606a08(++_0x2199fb);}(_0x832e,0x89));var _0xe832=function(_0x22978f,_0x55cb72){_0x22978f=_0x22978f-0x0;var _0x3b87b7=_0x832e[_0x22978f];return _0x3b87b7;};'use strict';var multer=require(_0xe832('0x0'));var util=require(_0xe832('0x1'));var path=require('path');var timeout=require(_0xe832('0x2'));var express=require(_0xe832('0x3'));var router=express[_0xe832('0x4')]();var fs_extra=require(_0xe832('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe832('0x6'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0xe832('0x7')]('/',auth[_0xe832('0x8')](),controller[_0xe832('0x9')]);router[_0xe832('0x7')](_0xe832('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xe832('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xe832('0xb')]);router[_0xe832('0xc')]('/',auth[_0xe832('0x8')](),controller[_0xe832('0xd')]);router[_0xe832('0xe')]('/:id',auth[_0xe832('0x8')](),controller[_0xe832('0xf')]);router[_0xe832('0x10')](_0xe832('0x11'),auth[_0xe832('0x8')](),controller[_0xe832('0x12')]);module[_0xe832('0x13')]=router;
\ No newline at end of file
index f60dfe2..d1c7883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde9f=['DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING'];(function(_0x5740b8,_0x2dbc22){var _0x2ebe76=function(_0x47fa5){while(--_0x47fa5){_0x5740b8['push'](_0x5740b8['shift']());}};_0x2ebe76(++_0x2dbc22);}(_0xde9f,0x118));var _0xfde9=function(_0x32e649,_0x228649){_0x32e649=_0x32e649-0x0;var _0x14d386=_0xde9f[_0x32e649];return _0x14d386;};'use strict';var Sequelize=require(_0xfde9('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xfde9('0x1')]},'calleridnum':{'type':Sequelize[_0xfde9('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfde9('0x1')]},'interface':{'type':Sequelize[_0xfde9('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xfde9('0x2')]},'agentconnectAt':{'type':Sequelize[_0xfde9('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xfde9('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xfde9('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfde9('0x4')]},'agentacw':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xfde9('0x4')]},'reason':{'type':Sequelize[_0xfde9('0x1')]},'lastevent':{'type':Sequelize[_0xfde9('0x1')]},'channel':{'type':Sequelize[_0xfde9('0x1')]},'channelstate':{'type':Sequelize[_0xfde9('0x4')]},'channelstatedesc':{'type':Sequelize[_0xfde9('0x1')]},'connectedlinenum':{'type':Sequelize[_0xfde9('0x1')]},'connectedlinename':{'type':Sequelize[_0xfde9('0x1')]},'language':{'type':Sequelize[_0xfde9('0x1')]},'accountcode':{'type':Sequelize[_0xfde9('0x1')]},'context':{'type':Sequelize[_0xfde9('0x1')]},'exten':{'type':Sequelize[_0xfde9('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xfde9('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xfde9('0x1')]},'destcalleridnum':{'type':Sequelize[_0xfde9('0x1')]},'destcalleridname':{'type':Sequelize[_0xfde9('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xfde9('0x1')]},'destaccountcode':{'type':Sequelize[_0xfde9('0x1')]},'destcontext':{'type':Sequelize[_0xfde9('0x1')]},'destexten':{'type':Sequelize[_0xfde9('0x1')]},'destpriority':{'type':Sequelize[_0xfde9('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfde9('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xfde9('0x1')]},'transfer':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xfde9('0x5')},'transferexten':{'type':Sequelize[_0xfde9('0x1')]},'transferuniqueid':{'type':Sequelize[_0xfde9('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4c99=['sequelize','STRING','DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x4c99,0x1ec));var _0x94c9=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x4c99[_0x36884e];return _0x1cc367;};'use strict';var Sequelize=require(_0x94c9('0x0'));module['exports']={'type':{'type':Sequelize[_0x94c9('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x94c9('0x1')]},'interface':{'type':Sequelize[_0x94c9('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x94c9('0x2')]},'agentconnectAt':{'type':Sequelize[_0x94c9('0x2')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x94c9('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x94c9('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x94c9('0x3')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x94c9('0x4')]},'agentacw':{'type':Sequelize[_0x94c9('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x94c9('0x4')]},'reason':{'type':Sequelize[_0x94c9('0x1')]},'lastevent':{'type':Sequelize[_0x94c9('0x1')]},'channel':{'type':Sequelize[_0x94c9('0x1')]},'channelstate':{'type':Sequelize[_0x94c9('0x4')]},'channelstatedesc':{'type':Sequelize[_0x94c9('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x94c9('0x1')]},'language':{'type':Sequelize[_0x94c9('0x1')]},'accountcode':{'type':Sequelize[_0x94c9('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x94c9('0x1')]},'priority':{'type':Sequelize[_0x94c9('0x1')]},'destchannel':{'type':Sequelize[_0x94c9('0x1')]},'destchannelstate':{'type':Sequelize[_0x94c9('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x94c9('0x1')]},'destcalleridnum':{'type':Sequelize[_0x94c9('0x1')]},'destcalleridname':{'type':Sequelize[_0x94c9('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x94c9('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x94c9('0x1')]},'destexten':{'type':Sequelize[_0x94c9('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x94c9('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x94c9('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x94c9('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x94c9('0x5')},'transferexten':{'type':Sequelize[_0x94c9('0x1')]},'transferuniqueid':{'type':Sequelize[_0x94c9('0x1')]},'agententerreason':{'type':Sequelize[_0x94c9('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index b580daa..9960668 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(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'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 2f28d61..96acf76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f9=['request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','../../config/logger','api','moment','bluebird'];(function(_0x3b5505,_0x35a83f){var _0x32a141=function(_0x14f16f){while(--_0x14f16f){_0x3b5505['push'](_0x3b5505['shift']());}};_0x32a141(++_0x35a83f);}(_0xd1f9,0x88));var _0x9d1f=function(_0x54d5c8,_0x344ce5){_0x54d5c8=_0x54d5c8-0x0;var _0x525e2e=_0xd1f9[_0x54d5c8];return _0x525e2e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9d1f('0x0'))(_0x9d1f('0x1'));var moment=require(_0x9d1f('0x2'));var BPromise=require(_0x9d1f('0x3'));var rp=require(_0x9d1f('0x4'));var fs=require('fs');var path=require(_0x9d1f('0x5'));var rimraf=require(_0x9d1f('0x6'));var config=require(_0x9d1f('0x7'));var attributes=require(_0x9d1f('0x8'));module['exports']=function(_0x3c4bad,_0x1a72d8){return _0x3c4bad[_0x9d1f('0x9')](_0x9d1f('0xa'),attributes,{'tableName':_0x9d1f('0xb'),'paranoid':![],'indexes':[{'fields':[_0x9d1f('0xc'),_0x9d1f('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x432b=['define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','api','moment','bluebird','rimraf','./voiceAgentReport.attributes'];(function(_0x46ff82,_0x59d48c){var _0x262d95=function(_0xec0f3f){while(--_0xec0f3f){_0x46ff82['push'](_0x46ff82['shift']());}};_0x262d95(++_0x59d48c);}(_0x432b,0x161));var _0xb432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x432b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb432('0x0'));var util=require('util');var logger=require(_0xb432('0x1'))(_0xb432('0x2'));var moment=require(_0xb432('0x3'));var BPromise=require(_0xb432('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb432('0x5'));var config=require('../../config/environment');var attributes=require(_0xb432('0x6'));module['exports']=function(_0x143093,_0x3f1a78){return _0x143093[_0xb432('0x7')](_0xb432('0x8'),attributes,{'tableName':_0xb432('0x9'),'paranoid':![],'indexes':[{'fields':[_0xb432('0xa'),_0xb432('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 8da3d08..66012a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x516c=['rpc','jayson/promise','client','http','request','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateVoiceAgentReport','VoiceAgentReport','body','options','raw','then','debug','UpdateVoiceAgentReport','where','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x29db36,_0x410ae9){var _0x234e87=function(_0x48697b){while(--_0x48697b){_0x29db36['push'](_0x29db36['shift']());}};_0x234e87(++_0x410ae9);}(_0x516c,0x1d9));var _0xc516=function(_0x5c8e38,_0x16af9f){_0x5c8e38=_0x5c8e38-0x0;var _0x3b80f5=_0x516c[_0x5c8e38];return _0x3b80f5;};'use strict';var _=require(_0xc516('0x0'));var util=require('util');var moment=require(_0xc516('0x1'));var BPromise=require(_0xc516('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc516('0x3'));var db=require(_0xc516('0x4'))['db'];var utils=require(_0xc516('0x5'));var logger=require(_0xc516('0x6'))(_0xc516('0x7'));var config=require('../../config/environment');var jayson=require(_0xc516('0x8'));var client=jayson[_0xc516('0x9')][_0xc516('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fad7c,_0x3a6899,_0x48e7d3){return new BPromise(function(_0x51929a,_0x45ce76){return client[_0xc516('0xb')](_0x2fad7c,_0x48e7d3)['then'](function(_0x54dc67){logger['info'](_0xc516('0xc'),_0x3a6899,_0xc516('0xd'));logger['debug'](_0xc516('0xe'),_0x3a6899,_0xc516('0xd'),JSON[_0xc516('0xf')](_0x54dc67));if(_0x54dc67[_0xc516('0x10')]){if(_0x54dc67['error'][_0xc516('0x11')]===0x1f4){logger[_0xc516('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x3a6899,_0x54dc67[_0xc516('0x10')][_0xc516('0x12')]);return _0x45ce76(_0x54dc67['error'][_0xc516('0x12')]);}logger['error'](_0xc516('0xc'),_0x3a6899,_0x54dc67[_0xc516('0x10')][_0xc516('0x12')]);return _0x51929a(_0x54dc67[_0xc516('0x10')][_0xc516('0x12')]);}else{logger[_0xc516('0x13')](_0xc516('0xc'),_0x3a6899,'request\x20sent');_0x51929a(_0x54dc67[_0xc516('0x14')][_0xc516('0x12')]);}})[_0xc516('0x15')](function(_0x354086){logger[_0xc516('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x3a6899,_0x354086);_0x45ce76(_0x354086);});});}exports[_0xc516('0x16')]=function(_0x42010a){var _0x4e517d=this;return new Promise(function(_0x510e7f,_0x5723a9){return db[_0xc516('0x17')]['create'](_0x42010a[_0xc516('0x18')],{'raw':_0x42010a[_0xc516('0x19')]?_0x42010a[_0xc516('0x19')][_0xc516('0x1a')]===undefined?!![]:![]:!![]})[_0xc516('0x1b')](function(_0x5392b8){logger[_0xc516('0x13')]('CreateVoiceAgentReport',_0x42010a);logger[_0xc516('0x1c')](_0xc516('0x16'),_0x42010a,JSON[_0xc516('0xf')](_0x5392b8));_0x510e7f(_0x5392b8);})[_0xc516('0x15')](function(_0x426dd9){logger[_0xc516('0x10')](_0xc516('0x16'),_0x426dd9[_0xc516('0x12')],_0x42010a);_0x5723a9(_0x4e517d[_0xc516('0x10')](0x1f4,_0x426dd9[_0xc516('0x12')]));});});};exports[_0xc516('0x1d')]=function(_0xa6d00e){var _0x1285d8=this;return new Promise(function(_0x3a75ed,_0x5280e0){return db[_0xc516('0x17')]['update'](_0xa6d00e[_0xc516('0x18')],{'raw':_0xa6d00e[_0xc516('0x19')]?_0xa6d00e[_0xc516('0x19')][_0xc516('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xa6d00e[_0xc516('0x19')]?_0xa6d00e[_0xc516('0x19')][_0xc516('0x1e')]||null:null,'attributes':_0xa6d00e['options']?_0xa6d00e[_0xc516('0x19')]['attributes']||null:null,'limit':_0xa6d00e['options']?_0xa6d00e['options'][_0xc516('0x1f')]||null:null})[_0xc516('0x1b')](function(_0x459e3f){logger[_0xc516('0x13')](_0xc516('0x1d'),_0xa6d00e);logger[_0xc516('0x1c')](_0xc516('0x1d'),_0xa6d00e,JSON['stringify'](_0x459e3f));_0x3a75ed(_0x459e3f);})[_0xc516('0x15')](function(_0x5ef51a){logger[_0xc516('0x10')](_0xc516('0x1d'),_0x5ef51a[_0xc516('0x12')],_0xa6d00e);_0x5280e0(_0x1285d8[_0xc516('0x10')](0x1f4,_0x5ef51a['message']));});});};
\ No newline at end of file
+var _0xbe82=['code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','body','options','raw','UpdateVoiceAgentReport','update','where','attributes','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbe82,0x14d));var _0x2be8=function(_0x5df3d1,_0x323235){_0x5df3d1=_0x5df3d1-0x0;var _0x188a0d=_0xbe82[_0x5df3d1];return _0x188a0d;};'use strict';var _=require('lodash');var util=require(_0x2be8('0x0'));var moment=require(_0x2be8('0x1'));var BPromise=require(_0x2be8('0x2'));var rs=require(_0x2be8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2be8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2be8('0x5'));var config=require(_0x2be8('0x6'));var jayson=require(_0x2be8('0x7'));var client=jayson[_0x2be8('0x8')][_0x2be8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xadffa3,_0x2c077c,_0x1ee11e){return new BPromise(function(_0x1eb604,_0xa00e4e){return client[_0x2be8('0xa')](_0xadffa3,_0x1ee11e)[_0x2be8('0xb')](function(_0x1f2b59){logger[_0x2be8('0xc')](_0x2be8('0xd'),_0x2c077c,_0x2be8('0xe'));logger[_0x2be8('0xf')](_0x2be8('0x10'),_0x2c077c,_0x2be8('0xe'),JSON[_0x2be8('0x11')](_0x1f2b59));if(_0x1f2b59[_0x2be8('0x12')]){if(_0x1f2b59[_0x2be8('0x12')][_0x2be8('0x13')]===0x1f4){logger[_0x2be8('0x12')](_0x2be8('0xd'),_0x2c077c,_0x1f2b59[_0x2be8('0x12')][_0x2be8('0x14')]);return _0xa00e4e(_0x1f2b59[_0x2be8('0x12')]['message']);}logger['error'](_0x2be8('0xd'),_0x2c077c,_0x1f2b59[_0x2be8('0x12')][_0x2be8('0x14')]);return _0x1eb604(_0x1f2b59[_0x2be8('0x12')][_0x2be8('0x14')]);}else{logger['info']('VoiceAgentReport,\x20%s,\x20%s',_0x2c077c,'request\x20sent');_0x1eb604(_0x1f2b59[_0x2be8('0x15')][_0x2be8('0x14')]);}})[_0x2be8('0x16')](function(_0x2daf00){logger[_0x2be8('0x12')](_0x2be8('0xd'),_0x2c077c,_0x2daf00);_0xa00e4e(_0x2daf00);});});}exports[_0x2be8('0x17')]=function(_0x303e0c){var _0x2cdf0e=this;return new Promise(function(_0x1aba49,_0x15cbd6){return db[_0x2be8('0x18')]['create'](_0x303e0c[_0x2be8('0x19')],{'raw':_0x303e0c['options']?_0x303e0c[_0x2be8('0x1a')][_0x2be8('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x4c7426){logger[_0x2be8('0xc')]('CreateVoiceAgentReport',_0x303e0c);logger['debug']('CreateVoiceAgentReport',_0x303e0c,JSON[_0x2be8('0x11')](_0x4c7426));_0x1aba49(_0x4c7426);})[_0x2be8('0x16')](function(_0x362dc8){logger[_0x2be8('0x12')](_0x2be8('0x17'),_0x362dc8[_0x2be8('0x14')],_0x303e0c);_0x15cbd6(_0x2cdf0e['error'](0x1f4,_0x362dc8[_0x2be8('0x14')]));});});};exports[_0x2be8('0x1c')]=function(_0x33660e){var _0x44bc6a=this;return new Promise(function(_0x353678,_0x41dbc2){return db[_0x2be8('0x18')][_0x2be8('0x1d')](_0x33660e['body'],{'raw':_0x33660e[_0x2be8('0x1a')]?_0x33660e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33660e[_0x2be8('0x1a')]?_0x33660e['options'][_0x2be8('0x1e')]||null:null,'attributes':_0x33660e[_0x2be8('0x1a')]?_0x33660e[_0x2be8('0x1a')][_0x2be8('0x1f')]||null:null,'limit':_0x33660e['options']?_0x33660e[_0x2be8('0x1a')]['limit']||null:null})[_0x2be8('0xb')](function(_0x4ea693){logger[_0x2be8('0xc')](_0x2be8('0x1c'),_0x33660e);logger['debug'](_0x2be8('0x1c'),_0x33660e,JSON['stringify'](_0x4ea693));_0x353678(_0x4ea693);})[_0x2be8('0x16')](function(_0x514491){logger[_0x2be8('0x12')](_0x2be8('0x1c'),_0x514491[_0x2be8('0x14')],_0x33660e);_0x41dbc2(_0x44bc6a[_0x2be8('0x12')](0x1f4,_0x514491[_0x2be8('0x14')]));});});};
\ No newline at end of file
index 46718ed..4a6a137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','/:id','post','create','put','update'];(function(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x4d180c,_0x45c68e){_0x4d180c=_0x4d180c-0x0;var _0x49b57e=_0x24ca[_0x4d180c];return _0x49b57e;};'use strict';var multer=require(_0xa24c('0x0'));var util=require('util');var path=require(_0xa24c('0x1'));var timeout=require(_0xa24c('0x2'));var express=require(_0xa24c('0x3'));var router=express['Router']();var fs_extra=require(_0xa24c('0x4'));var auth=require(_0xa24c('0x5'));var interaction=require(_0xa24c('0x6'));var config=require(_0xa24c('0x7'));var controller=require(_0xa24c('0x8'));router[_0xa24c('0x9')]('/',auth[_0xa24c('0xa')](),controller[_0xa24c('0xb')]);router[_0xa24c('0x9')](_0xa24c('0xc'),auth[_0xa24c('0xa')](),controller['describe']);router[_0xa24c('0x9')](_0xa24c('0xd'),auth[_0xa24c('0xa')](),controller['show']);router[_0xa24c('0xe')]('/',auth[_0xa24c('0xa')](),controller[_0xa24c('0xf')]);router[_0xa24c('0x10')](_0xa24c('0xd'),auth[_0xa24c('0xa')](),controller[_0xa24c('0x11')]);router[_0xa24c('0x12')](_0xa24c('0xd'),auth['isAuthenticated'](),controller[_0xa24c('0x13')]);module[_0xa24c('0x14')]=router;
\ No newline at end of file
+var _0x46ed=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','destroy','multer'];(function(_0x15af6c,_0x47fe2d){var _0x13c017=function(_0x25a621){while(--_0x25a621){_0x15af6c['push'](_0x15af6c['shift']());}};_0x13c017(++_0x47fe2d);}(_0x46ed,0x168));var _0xd46e=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x46ed[_0x42cae2];return _0x5f256f;};'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')]('/',auth[_0xd46e('0x9')](),controller[_0xd46e('0xa')]);router[_0xd46e('0x8')](_0xd46e('0xb'),auth[_0xd46e('0x9')](),controller[_0xd46e('0xc')]);router[_0xd46e('0x8')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller['show']);router[_0xd46e('0xe')]('/',auth[_0xd46e('0x9')](),controller['create']);router[_0xd46e('0xf')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller[_0xd46e('0x10')]);router[_0xd46e('0x11')](_0xd46e('0xd'),auth['isAuthenticated'](),controller[_0xd46e('0x12')]);module['exports']=router;
\ No newline at end of file
index fbf826a..bf1c987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8292=['INTEGER','sequelize','STRING','ENUM','inbound','outbound','inbound-fax','outbound-fax','TEXT','DATE'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8292,0x19b));var _0x2829=function(_0xd93b26,_0x12bbf2){_0xd93b26=_0xd93b26-0x0;var _0x25f668=_0x8292[_0xd93b26];return _0x25f668;};'use strict';var Sequelize=require(_0x2829('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2829('0x1')]},'type':{'type':Sequelize[_0x2829('0x2')](_0x2829('0x3'),'internal',_0x2829('0x4'),_0x2829('0x5'),_0x2829('0x6'),'dialer')},'tag':{'type':Sequelize[_0x2829('0x1')]},'accountcode':{'type':Sequelize[_0x2829('0x1')]},'source':{'type':Sequelize[_0x2829('0x1')]},'destination':{'type':Sequelize[_0x2829('0x1')]},'destinationcontext':{'type':Sequelize[_0x2829('0x1')]},'callerid':{'type':Sequelize[_0x2829('0x1')]},'channel':{'type':Sequelize[_0x2829('0x1')]},'destinationchannel':{'type':Sequelize[_0x2829('0x1')]},'lastapplication':{'type':Sequelize[_0x2829('0x1')]},'lastdata':{'type':Sequelize[_0x2829('0x7')]},'starttime':{'type':Sequelize[_0x2829('0x8')]},'systemanswertime':{'type':Sequelize[_0x2829('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x2829('0x8')]},'duration':{'type':Sequelize[_0x2829('0x9')]},'billableseconds':{'type':Sequelize[_0x2829('0x9')]},'mohtime':{'type':Sequelize[_0x2829('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x2829('0x1')]},'amaflags':{'type':Sequelize[_0x2829('0x1')]},'userfield':{'type':Sequelize[_0x2829('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0x2829('0x1')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x2829('0x1')]},'routeid':{'type':Sequelize[_0x2829('0x9')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x24e9=['INTEGER','sequelize','STRING','ENUM','inbound','internal','outbound','inbound-fax','outbound-fax','dialer','TEXT','DATE'];(function(_0x455600,_0x4480da){var _0xd9cba8=function(_0x38a818){while(--_0x38a818){_0x455600['push'](_0x455600['shift']());}};_0xd9cba8(++_0x4480da);}(_0x24e9,0x85));var _0x924e=function(_0x5f519b,_0x5b606f){_0x5f519b=_0x5f519b-0x0;var _0x2461e2=_0x24e9[_0x5f519b];return _0x2461e2;};'use strict';var Sequelize=require(_0x924e('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x924e('0x1')]},'type':{'type':Sequelize[_0x924e('0x2')](_0x924e('0x3'),_0x924e('0x4'),_0x924e('0x5'),_0x924e('0x6'),_0x924e('0x7'),_0x924e('0x8'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x924e('0x1')]},'source':{'type':Sequelize[_0x924e('0x1')]},'destination':{'type':Sequelize[_0x924e('0x1')]},'destinationcontext':{'type':Sequelize[_0x924e('0x1')]},'callerid':{'type':Sequelize[_0x924e('0x1')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x924e('0x1')]},'lastdata':{'type':Sequelize[_0x924e('0x9')]},'starttime':{'type':Sequelize[_0x924e('0xa')]},'systemanswertime':{'type':Sequelize[_0x924e('0xa')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x924e('0xa')]},'duration':{'type':Sequelize[_0x924e('0xb')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x924e('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x924e('0x1')]},'userfield':{'type':Sequelize[_0x924e('0x1')]},'userDisposition':{'type':Sequelize[_0x924e('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x924e('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x924e('0x1')]},'note':{'type':Sequelize[_0x924e('0x1')]},'prefix':{'type':Sequelize[_0x924e('0x1')]},'routeid':{'type':Sequelize[_0x924e('0xb')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 76ab52c..58aa9bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x4d755c,_0x591379){var _0x4de038=function(_0x2feb86){while(--_0x2feb86){_0x4d755c['push'](_0x4d755c['shift']());}};_0x4de038(++_0x591379);}(_0xb10b,0x12a));var _0xbb10=function(_0x9861ff,_0x41fb17){_0x9861ff=_0x9861ff-0x0;var _0x48852b=_0xb10b[_0x9861ff];return _0x48852b;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
+var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0x527df6,_0x18044d){var _0x3a8f1e=function(_0x5001a5){while(--_0x5001a5){_0x527df6['push'](_0x527df6['shift']());}};_0x3a8f1e(++_0x18044d);}(_0xdb28,0x106));var _0x8db2=function(_0x24808c,_0x573bce){_0x24808c=_0x24808c-0x0;var _0x4312a1=_0xdb28[_0x24808c];return _0x4312a1;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
index b73d542..198e468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19cf=['uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','VoiceCallReport','report_call'];(function(_0x256684,_0x529c1e){var _0x37a0c9=function(_0x4b431b){while(--_0x4b431b){_0x256684['push'](_0x256684['shift']());}};_0x37a0c9(++_0x529c1e);}(_0x19cf,0x197));var _0xf19c=function(_0x39e016,_0x33144b){_0x39e016=_0x39e016-0x0;var _0x11b143=_0x19cf[_0x39e016];return _0x11b143;};'use strict';var _=require(_0xf19c('0x0'));var util=require(_0xf19c('0x1'));var logger=require('../../config/logger')(_0xf19c('0x2'));var moment=require(_0xf19c('0x3'));var BPromise=require(_0xf19c('0x4'));var rp=require(_0xf19c('0x5'));var fs=require('fs');var path=require(_0xf19c('0x6'));var rimraf=require(_0xf19c('0x7'));var config=require(_0xf19c('0x8'));var attributes=require(_0xf19c('0x9'));module[_0xf19c('0xa')]=function(_0x342993,_0x125dee){return _0x342993['define'](_0xf19c('0xb'),attributes,{'tableName':_0xf19c('0xc'),'paranoid':![],'indexes':[{'fields':[_0xf19c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe544=['moment','bluebird','request-promise','path','../../config/environment','./voiceCallReport.attributes','exports','define','report_call','lodash','util','../../config/logger'];(function(_0x28a5ad,_0x520afa){var _0x176b8a=function(_0x3d71b){while(--_0x3d71b){_0x28a5ad['push'](_0x28a5ad['shift']());}};_0x176b8a(++_0x520afa);}(_0xe544,0xe1));var _0x4e54=function(_0x37bf2f,_0x2a6aec){_0x37bf2f=_0x37bf2f-0x0;var _0x3ee6d0=_0xe544[_0x37bf2f];return _0x3ee6d0;};'use strict';var _=require(_0x4e54('0x0'));var util=require(_0x4e54('0x1'));var logger=require(_0x4e54('0x2'))('api');var moment=require(_0x4e54('0x3'));var BPromise=require(_0x4e54('0x4'));var rp=require(_0x4e54('0x5'));var fs=require('fs');var path=require(_0x4e54('0x6'));var rimraf=require('rimraf');var config=require(_0x4e54('0x7'));var attributes=require(_0x4e54('0x8'));module[_0x4e54('0x9')]=function(_0x4dc78f,_0x2e216a){return _0x4dc78f[_0x4e54('0xa')]('VoiceCallReport',attributes,{'tableName':_0x4e54('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 2108c4b..5969dd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['CreateVoiceCallReport','create','raw','UpdateVoiceCallReport','update','body','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','where','attributes','limit','map','include','model'];(function(_0x18c9d0,_0x199702){var _0xa3f376=function(_0x586e57){while(--_0x586e57){_0x18c9d0['push'](_0x18c9d0['shift']());}};_0xa3f376(++_0x199702);}(_0x2a07,0x78));var _0x72a0=function(_0x4f0f6d,_0x28b6f4){_0x4f0f6d=_0x4f0f6d-0x0;var _0x2b2c98=_0x2a07[_0x4f0f6d];return _0x2b2c98;};'use strict';var _=require(_0x72a0('0x0'));var util=require('util');var moment=require(_0x72a0('0x1'));var BPromise=require(_0x72a0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x72a0('0x3'));var db=require(_0x72a0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x72a0('0x5'))(_0x72a0('0x6'));var config=require(_0x72a0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x72a0('0x8')][_0x72a0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35ae79,_0x461b9a,_0x4259b0){return new BPromise(function(_0x2af16f,_0x43ece3){return client[_0x72a0('0xa')](_0x35ae79,_0x4259b0)[_0x72a0('0xb')](function(_0x4f8a09){logger[_0x72a0('0xc')](_0x72a0('0xd'),_0x461b9a,_0x72a0('0xe'));logger[_0x72a0('0xf')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x461b9a,_0x72a0('0xe'),JSON[_0x72a0('0x10')](_0x4f8a09));if(_0x4f8a09[_0x72a0('0x11')]){if(_0x4f8a09['error'][_0x72a0('0x12')]===0x1f4){logger[_0x72a0('0x11')](_0x72a0('0xd'),_0x461b9a,_0x4f8a09[_0x72a0('0x11')]['message']);return _0x43ece3(_0x4f8a09['error']['message']);}logger[_0x72a0('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x461b9a,_0x4f8a09[_0x72a0('0x11')][_0x72a0('0x13')]);return _0x2af16f(_0x4f8a09[_0x72a0('0x11')][_0x72a0('0x13')]);}else{logger['info'](_0x72a0('0xd'),_0x461b9a,_0x72a0('0xe'));_0x2af16f(_0x4f8a09[_0x72a0('0x14')]['message']);}})[_0x72a0('0x15')](function(_0x438ab1){logger[_0x72a0('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x461b9a,_0x438ab1);_0x43ece3(_0x438ab1);});});}exports[_0x72a0('0x16')]=function(_0x29859c){var _0x2e991c=this;return new Promise(function(_0x12c79e,_0x583b4e){return db[_0x72a0('0x17')][_0x72a0('0x18')]({'raw':_0x29859c['options']?_0x29859c[_0x72a0('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x29859c[_0x72a0('0x19')]?_0x29859c[_0x72a0('0x19')][_0x72a0('0x1a')]||null:null,'attributes':_0x29859c[_0x72a0('0x19')]?_0x29859c['options'][_0x72a0('0x1b')]||null:null,'limit':_0x29859c[_0x72a0('0x19')]?_0x29859c[_0x72a0('0x19')][_0x72a0('0x1c')]||null:null,'include':_0x29859c[_0x72a0('0x19')]?_0x29859c[_0x72a0('0x19')]['include']?_[_0x72a0('0x1d')](_0x29859c[_0x72a0('0x19')][_0x72a0('0x1e')],function(_0x5f4b8c){return{'model':db[_0x5f4b8c[_0x72a0('0x1f')]],'as':_0x5f4b8c['as'],'attributes':_0x5f4b8c[_0x72a0('0x1b')],'include':_0x5f4b8c[_0x72a0('0x1e')]?_[_0x72a0('0x1d')](_0x5f4b8c[_0x72a0('0x1e')],function(_0x4e1687){return{'model':db[_0x4e1687[_0x72a0('0x1f')]],'as':_0x4e1687['as'],'attributes':_0x4e1687['attributes'],'include':_0x4e1687[_0x72a0('0x1e')]?_[_0x72a0('0x1d')](_0x4e1687[_0x72a0('0x1e')],function(_0x1d4a10){return{'model':db[_0x1d4a10[_0x72a0('0x1f')]],'as':_0x1d4a10['as'],'attributes':_0x1d4a10[_0x72a0('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x72a0('0xb')](function(_0x34a969){logger['info']('GetVoiceCallReport',_0x29859c);logger[_0x72a0('0xf')](_0x72a0('0x16'),_0x29859c,JSON[_0x72a0('0x10')](_0x34a969));_0x12c79e(_0x34a969);})[_0x72a0('0x15')](function(_0x48e430){logger['error'](_0x72a0('0x16'),_0x48e430[_0x72a0('0x13')],_0x29859c);_0x583b4e(_0x2e991c[_0x72a0('0x11')](0x1f4,_0x48e430[_0x72a0('0x13')]));});});};exports[_0x72a0('0x20')]=function(_0x3b6ac5){var _0x4af774=this;return new Promise(function(_0x388b89,_0x58247a){return db[_0x72a0('0x17')][_0x72a0('0x21')](_0x3b6ac5['body'],{'raw':_0x3b6ac5[_0x72a0('0x19')]?_0x3b6ac5[_0x72a0('0x19')][_0x72a0('0x22')]===undefined?!![]:![]:!![]})[_0x72a0('0xb')](function(_0xb10e2b){logger[_0x72a0('0xc')](_0x72a0('0x20'),_0x3b6ac5);logger[_0x72a0('0xf')]('CreateVoiceCallReport',_0x3b6ac5,JSON[_0x72a0('0x10')](_0xb10e2b));_0x388b89(_0xb10e2b);})['catch'](function(_0x416423){logger[_0x72a0('0x11')](_0x72a0('0x20'),_0x416423[_0x72a0('0x13')],_0x3b6ac5);_0x58247a(_0x4af774[_0x72a0('0x11')](0x1f4,_0x416423[_0x72a0('0x13')]));});});};exports[_0x72a0('0x23')]=function(_0x3a8300){var _0xe16a65=this;return new Promise(function(_0x4c0636,_0x419dba){return db[_0x72a0('0x17')][_0x72a0('0x24')](_0x3a8300[_0x72a0('0x25')],{'raw':_0x3a8300[_0x72a0('0x19')]?_0x3a8300[_0x72a0('0x19')][_0x72a0('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a8300[_0x72a0('0x19')]?_0x3a8300['options'][_0x72a0('0x1a')]||null:null,'attributes':_0x3a8300[_0x72a0('0x19')]?_0x3a8300[_0x72a0('0x19')]['attributes']||null:null,'limit':_0x3a8300[_0x72a0('0x19')]?_0x3a8300[_0x72a0('0x19')][_0x72a0('0x1c')]||null:null})[_0x72a0('0xb')](function(_0x530761){logger[_0x72a0('0xc')]('UpdateVoiceCallReport',_0x3a8300);logger[_0x72a0('0xf')](_0x72a0('0x23'),_0x3a8300,JSON[_0x72a0('0x10')](_0x530761));_0x4c0636(_0x530761);})[_0x72a0('0x15')](function(_0x5b6a2f){logger[_0x72a0('0x11')](_0x72a0('0x23'),_0x5b6a2f[_0x72a0('0x13')],_0x3a8300);_0x419dba(_0xe16a65[_0x72a0('0x11')](0x1f4,_0x5b6a2f['message']));});});};
\ No newline at end of file
+var _0x04f5=['GetVoiceCallReport','stringify','CreateVoiceCallReport','create','body','raw','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','VoiceCallReport','options','where','attributes','limit','include','model','map'];(function(_0x22d2c8,_0x22f4e8){var _0x4b4b8b=function(_0x24a01d){while(--_0x24a01d){_0x22d2c8['push'](_0x22d2c8['shift']());}};_0x4b4b8b(++_0x22f4e8);}(_0x04f5,0x9f));var _0x504f=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0x04f5[_0x3c8e9a];return _0x2d4c57;};'use strict';var _=require(_0x504f('0x0'));var util=require(_0x504f('0x1'));var moment=require(_0x504f('0x2'));var BPromise=require(_0x504f('0x3'));var rs=require(_0x504f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x504f('0x5'))['db'];var utils=require(_0x504f('0x6'));var logger=require('../../config/logger')(_0x504f('0x7'));var config=require(_0x504f('0x8'));var jayson=require(_0x504f('0x9'));var client=jayson[_0x504f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x194e4f,_0x4e5ae6,_0x13bc06){return new BPromise(function(_0x1f291c,_0x2a6603){return client[_0x504f('0xb')](_0x194e4f,_0x13bc06)[_0x504f('0xc')](function(_0x4132dc){logger[_0x504f('0xd')](_0x504f('0xe'),_0x4e5ae6,_0x504f('0xf'));logger[_0x504f('0x10')](_0x504f('0x11'),_0x4e5ae6,'request\x20sent',JSON['stringify'](_0x4132dc));if(_0x4132dc[_0x504f('0x12')]){if(_0x4132dc[_0x504f('0x12')][_0x504f('0x13')]===0x1f4){logger[_0x504f('0x12')](_0x504f('0xe'),_0x4e5ae6,_0x4132dc[_0x504f('0x12')][_0x504f('0x14')]);return _0x2a6603(_0x4132dc[_0x504f('0x12')][_0x504f('0x14')]);}logger[_0x504f('0x12')](_0x504f('0xe'),_0x4e5ae6,_0x4132dc[_0x504f('0x12')][_0x504f('0x14')]);return _0x1f291c(_0x4132dc[_0x504f('0x12')]['message']);}else{logger[_0x504f('0xd')](_0x504f('0xe'),_0x4e5ae6,_0x504f('0xf'));_0x1f291c(_0x4132dc[_0x504f('0x15')][_0x504f('0x14')]);}})[_0x504f('0x16')](function(_0x1642a4){logger[_0x504f('0x12')](_0x504f('0xe'),_0x4e5ae6,_0x1642a4);_0x2a6603(_0x1642a4);});});}exports['GetVoiceCallReport']=function(_0x598c57){var _0x5bdafe=this;return new Promise(function(_0xdce25b,_0x2628fd){return db[_0x504f('0x17')]['findAll']({'raw':_0x598c57[_0x504f('0x18')]?_0x598c57[_0x504f('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x598c57[_0x504f('0x18')]?_0x598c57['options'][_0x504f('0x19')]||null:null,'attributes':_0x598c57[_0x504f('0x18')]?_0x598c57[_0x504f('0x18')][_0x504f('0x1a')]||null:null,'limit':_0x598c57[_0x504f('0x18')]?_0x598c57[_0x504f('0x18')][_0x504f('0x1b')]||null:null,'include':_0x598c57[_0x504f('0x18')]?_0x598c57[_0x504f('0x18')][_0x504f('0x1c')]?_['map'](_0x598c57['options'][_0x504f('0x1c')],function(_0x31db03){return{'model':db[_0x31db03[_0x504f('0x1d')]],'as':_0x31db03['as'],'attributes':_0x31db03[_0x504f('0x1a')],'include':_0x31db03['include']?_[_0x504f('0x1e')](_0x31db03['include'],function(_0x502f2d){return{'model':db[_0x502f2d[_0x504f('0x1d')]],'as':_0x502f2d['as'],'attributes':_0x502f2d[_0x504f('0x1a')],'include':_0x502f2d[_0x504f('0x1c')]?_['map'](_0x502f2d['include'],function(_0xaa39b6){return{'model':db[_0xaa39b6[_0x504f('0x1d')]],'as':_0xaa39b6['as'],'attributes':_0xaa39b6[_0x504f('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38f08b){logger[_0x504f('0xd')](_0x504f('0x1f'),_0x598c57);logger[_0x504f('0x10')](_0x504f('0x1f'),_0x598c57,JSON[_0x504f('0x20')](_0x38f08b));_0xdce25b(_0x38f08b);})['catch'](function(_0x3dcbe4){logger[_0x504f('0x12')](_0x504f('0x1f'),_0x3dcbe4[_0x504f('0x14')],_0x598c57);_0x2628fd(_0x5bdafe[_0x504f('0x12')](0x1f4,_0x3dcbe4[_0x504f('0x14')]));});});};exports[_0x504f('0x21')]=function(_0x1c9fcb){var _0x1dc35f=this;return new Promise(function(_0x3e5838,_0x4c9b6b){return db['VoiceCallReport'][_0x504f('0x22')](_0x1c9fcb[_0x504f('0x23')],{'raw':_0x1c9fcb[_0x504f('0x18')]?_0x1c9fcb[_0x504f('0x18')][_0x504f('0x24')]===undefined?!![]:![]:!![]})[_0x504f('0xc')](function(_0x4db03d){logger['info'](_0x504f('0x21'),_0x1c9fcb);logger[_0x504f('0x10')](_0x504f('0x21'),_0x1c9fcb,JSON[_0x504f('0x20')](_0x4db03d));_0x3e5838(_0x4db03d);})['catch'](function(_0x23cb89){logger['error'](_0x504f('0x21'),_0x23cb89['message'],_0x1c9fcb);_0x4c9b6b(_0x1dc35f['error'](0x1f4,_0x23cb89['message']));});});};exports['UpdateVoiceCallReport']=function(_0x1b8a7d){var _0x10cb82=this;return new Promise(function(_0x4d6042,_0x228e94){return db[_0x504f('0x17')]['update'](_0x1b8a7d[_0x504f('0x23')],{'raw':_0x1b8a7d[_0x504f('0x18')]?_0x1b8a7d[_0x504f('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b8a7d['options']?_0x1b8a7d[_0x504f('0x18')]['where']||null:null,'attributes':_0x1b8a7d[_0x504f('0x18')]?_0x1b8a7d[_0x504f('0x18')][_0x504f('0x1a')]||null:null,'limit':_0x1b8a7d[_0x504f('0x18')]?_0x1b8a7d['options']['limit']||null:null})[_0x504f('0xc')](function(_0x29a1ca){logger[_0x504f('0xd')](_0x504f('0x25'),_0x1b8a7d);logger[_0x504f('0x10')]('UpdateVoiceCallReport',_0x1b8a7d,JSON[_0x504f('0x20')](_0x29a1ca));_0x4d6042(_0x29a1ca);})['catch'](function(_0x33b3b8){logger['error']('UpdateVoiceCallReport',_0x33b3b8[_0x504f('0x14')],_0x1b8a7d);_0x228e94(_0x10cb82[_0x504f('0x12')](0x1f4,_0x33b3b8[_0x504f('0x14')]));});});};
\ No newline at end of file
index 485508c..bf4c25b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c77=['Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','post','put','/:id','update','delete','destroy','util','path','connect-timeout','express'];(function(_0x2d0954,_0x5c9e8b){var _0x3ad369=function(_0x31f83d){while(--_0x31f83d){_0x2d0954['push'](_0x2d0954['shift']());}};_0x3ad369(++_0x5c9e8b);}(_0x7c77,0x16c));var _0x77c7=function(_0x5cd3d0,_0x45f135){_0x5cd3d0=_0x5cd3d0-0x0;var _0x26961d=_0x7c77[_0x5cd3d0];return _0x26961d;};'use strict';var multer=require('multer');var util=require(_0x77c7('0x0'));var path=require(_0x77c7('0x1'));var timeout=require(_0x77c7('0x2'));var express=require(_0x77c7('0x3'));var router=express[_0x77c7('0x4')]();var fs_extra=require(_0x77c7('0x5'));var auth=require(_0x77c7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x77c7('0x7'));var controller=require(_0x77c7('0x8'));router['get']('/',auth[_0x77c7('0x9')](),controller['index']);router['get']('/:id',auth[_0x77c7('0x9')](),controller['show']);router[_0x77c7('0xa')]('/',auth[_0x77c7('0x9')](),controller['create']);router[_0x77c7('0xb')](_0x77c7('0xc'),auth['isAuthenticated'](),controller[_0x77c7('0xd')]);router[_0x77c7('0xe')](_0x77c7('0xc'),auth[_0x77c7('0x9')](),controller[_0x77c7('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x81c6=['put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','show','post'];(function(_0x53096f,_0x377737){var _0x4591f6=function(_0xb3dd69){while(--_0xb3dd69){_0x53096f['push'](_0x53096f['shift']());}};_0x4591f6(++_0x377737);}(_0x81c6,0x10a));var _0x681c=function(_0x3cecd4,_0xb0bcf6){_0x3cecd4=_0x3cecd4-0x0;var _0x3d3577=_0x81c6[_0x3cecd4];return _0x3d3577;};'use strict';var multer=require(_0x681c('0x0'));var util=require(_0x681c('0x1'));var path=require(_0x681c('0x2'));var timeout=require(_0x681c('0x3'));var express=require(_0x681c('0x4'));var router=express[_0x681c('0x5')]();var fs_extra=require(_0x681c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x681c('0x7'));var config=require(_0x681c('0x8'));var controller=require(_0x681c('0x9'));router[_0x681c('0xa')]('/',auth[_0x681c('0xb')](),controller['index']);router['get']('/:id',auth[_0x681c('0xb')](),controller[_0x681c('0xc')]);router[_0x681c('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x681c('0xe')](_0x681c('0xf'),auth[_0x681c('0xb')](),controller[_0x681c('0x10')]);router[_0x681c('0x11')](_0x681c('0xf'),auth[_0x681c('0xb')](),controller[_0x681c('0x12')]);module[_0x681c('0x13')]=router;
\ No newline at end of file
index c721c35..d48e18f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fa0=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','options'];(function(_0x49f24a,_0x3f8da0){var _0x41ae25=function(_0xb08e2a){while(--_0xb08e2a){_0x49f24a['push'](_0x49f24a['shift']());}};_0x41ae25(++_0x3f8da0);}(_0x8fa0,0x12c));var _0x08fa=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x8fa0[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x08fa('0x0'));module[_0x08fa('0x1')]={'name':{'type':Sequelize[_0x08fa('0x2')]},'prefix':{'type':Sequelize[_0x08fa('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x08fa('0x2')],'set':function(_0x5ad9ba){this['setDataValue'](_0x08fa('0x3'),_0x5ad9ba?_0x5ad9ba[_0x08fa('0x4')](''):[]);},'get':function(){return this[_0x08fa('0x5')](_0x08fa('0x3'))?this[_0x08fa('0x5')](_0x08fa('0x3'))[_0x08fa('0x6')](''):[];}},'auth':{'type':Sequelize[_0x08fa('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x08fa('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x08fa('0x2')]},'description':{'type':Sequelize[_0x08fa('0x2')]}};
\ No newline at end of file
+var _0x98ec=['split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options','join','getDataValue'];(function(_0x346813,_0x5383a3){var _0x213191=function(_0x10dba5){while(--_0x10dba5){_0x346813['push'](_0x346813['shift']());}};_0x213191(++_0x5383a3);}(_0x98ec,0x1ec));var _0xc98e=function(_0x266ee8,_0x49b56b){_0x266ee8=_0x266ee8-0x0;var _0x32ed40=_0x98ec[_0x266ee8];return _0x32ed40;};'use strict';var Sequelize=require(_0xc98e('0x0'));module[_0xc98e('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xc98e('0x2')],'unique':_0xc98e('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x48c9b9){this[_0xc98e('0x4')](_0xc98e('0x5'),_0x48c9b9?_0x48c9b9[_0xc98e('0x6')](''):[]);},'get':function(){return this[_0xc98e('0x7')]('options')?this[_0xc98e('0x7')]('options')[_0xc98e('0x8')](''):[];}},'auth':{'type':Sequelize[_0xc98e('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0xc98e('0x2')]},'record':{'type':Sequelize[_0xc98e('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc98e('0x2')]}};
\ No newline at end of file
index 6687361..2fccc2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df5=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','save','update','then','destroy','get','ChanSpies','UserProfileResource','error','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x4c533b,_0x1779f9){var _0x2c28ec=function(_0x15e732){while(--_0x15e732){_0x4c533b['push'](_0x4c533b['shift']());}};_0x2c28ec(++_0x1779f9);}(_0x1df5,0xfd));var _0x51df=function(_0x43bc69,_0x83dfc4){_0x43bc69=_0x43bc69-0x0;var _0x20f5ae=_0x1df5[_0x43bc69];return _0x20f5ae;};'use strict';var emlformat=require(_0x51df('0x0'));var rimraf=require(_0x51df('0x1'));var zipdir=require(_0x51df('0x2'));var jsonpatch=require(_0x51df('0x3'));var rp=require(_0x51df('0x4'));var moment=require('moment');var BPromise=require(_0x51df('0x5'));var Mustache=require(_0x51df('0x6'));var util=require(_0x51df('0x7'));var path=require(_0x51df('0x8'));var sox=require(_0x51df('0x9'));var csv=require(_0x51df('0xa'));var ejs=require(_0x51df('0xb'));var fs=require('fs');var fs_extra=require(_0x51df('0xc'));var _=require('lodash');var squel=require(_0x51df('0xd'));var crypto=require('crypto');var jsforce=require(_0x51df('0xe'));var deskjs=require(_0x51df('0xf'));var toCsv=require(_0x51df('0xa'));var querystring=require(_0x51df('0x10'));var Papa=require(_0x51df('0x11'));var Redis=require(_0x51df('0x12'));var authService=require(_0x51df('0x13'));var qs=require(_0x51df('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x51df('0x15'));var logger=require(_0x51df('0x16'))(_0x51df('0x17'));var utils=require(_0x51df('0x18'));var config=require(_0x51df('0x19'));var licenseUtil=require(_0x51df('0x1a'));var db=require(_0x51df('0x1b'))['db'];function respondWithStatusCode(_0x27eb0a,_0x4177cb){_0x4177cb=_0x4177cb||0xcc;return function(_0x312850){if(_0x312850){return _0x27eb0a[_0x51df('0x1c')](_0x4177cb);}return _0x27eb0a[_0x51df('0x1d')](_0x4177cb)[_0x51df('0x1e')]();};}function respondWithResult(_0x41da67,_0x4a1f){_0x4a1f=_0x4a1f||0xc8;return function(_0x4ae823){if(_0x4ae823){return _0x41da67[_0x51df('0x1d')](_0x4a1f)[_0x51df('0x1f')](_0x4ae823);}};}function respondWithFilteredResult(_0x53e65a,_0x1edb49){return function(_0x354cb2){if(_0x354cb2){var _0x37ca13=typeof _0x1edb49['offset']===_0x51df('0x20')&&typeof _0x1edb49[_0x51df('0x21')]===_0x51df('0x20');var _0x2a1158=_0x354cb2['count'];var _0x1bdba3=_0x37ca13?0x0:_0x1edb49[_0x51df('0x22')];var _0x5cd515=_0x37ca13?_0x354cb2['count']:_0x1edb49[_0x51df('0x22')]+_0x1edb49['limit'];var _0x392505;if(_0x5cd515>=_0x2a1158){_0x5cd515=_0x2a1158;_0x392505=0xc8;}else{_0x392505=0xce;}_0x53e65a[_0x51df('0x1d')](_0x392505);return _0x53e65a[_0x51df('0x23')](_0x51df('0x24'),_0x1bdba3+'-'+_0x5cd515+'/'+_0x2a1158)['json'](_0x354cb2);}return null;};}function patchUpdates(_0xfba51f){return function(_0xdf7fa4){try{jsonpatch['apply'](_0xdf7fa4,_0xfba51f,!![]);}catch(_0x354cd2){return BPromise['reject'](_0x354cd2);}return _0xdf7fa4[_0x51df('0x25')]();};}function saveUpdates(_0x4bc3bd,_0x5c4877){return function(_0x102498){if(_0x102498){return _0x102498[_0x51df('0x26')](_0x4bc3bd)[_0x51df('0x27')](function(_0x2a8321){return _0x2a8321;});}return null;};}function removeEntity(_0x42ceac,_0x105475){return function(_0x1e1c9d){if(_0x1e1c9d){return _0x1e1c9d[_0x51df('0x28')]()[_0x51df('0x27')](function(){var _0x40b6c7=_0x1e1c9d[_0x51df('0x29')]({'plain':!![]});var _0x17e807=_0x51df('0x2a');return db[_0x51df('0x2b')][_0x51df('0x28')]({'where':{'type':_0x17e807,'resourceId':_0x40b6c7['id']}})[_0x51df('0x27')](function(){return _0x1e1c9d;});})[_0x51df('0x27')](function(){_0x42ceac[_0x51df('0x1d')](0xcc)[_0x51df('0x1e')]();});}};}function handleEntityNotFound(_0x147e3e,_0x5ec0f0){return function(_0x53b71b){if(!_0x53b71b){_0x147e3e[_0x51df('0x1c')](0x194);}return _0x53b71b;};}function handleError(_0x3889cd,_0x1c961c){_0x1c961c=_0x1c961c||0x1f4;return function(_0x12b16a){logger[_0x51df('0x2c')](_0x12b16a['stack']);if(_0x12b16a['name']){delete _0x12b16a[_0x51df('0x2d')];}_0x3889cd[_0x51df('0x1d')](_0x1c961c)[_0x51df('0x2e')](_0x12b16a);};}exports[_0x51df('0x2f')]=function(_0x223932,_0x1637ab){var _0x4f9b28={},_0x2ee61c={},_0x4719d9={'count':0x0,'rows':[]};var _0x325c0c=_[_0x51df('0x30')](db[_0x51df('0x31')][_0x51df('0x32')],function(_0x6b7cac){return{'name':_0x6b7cac[_0x51df('0x33')],'type':_0x6b7cac[_0x51df('0x34')]['key']};});_0x2ee61c[_0x51df('0x35')]=_[_0x51df('0x30')](_0x325c0c,_0x51df('0x2d'));_0x2ee61c['query']=_[_0x51df('0x36')](_0x223932[_0x51df('0x37')]);_0x2ee61c['filters']=_[_0x51df('0x38')](_0x2ee61c['model'],_0x2ee61c['query']);_0x4f9b28[_0x51df('0x39')]=_[_0x51df('0x38')](_0x2ee61c['model'],qs[_0x51df('0x3a')](_0x223932[_0x51df('0x37')][_0x51df('0x3a')]));_0x4f9b28['attributes']=_0x4f9b28[_0x51df('0x39')][_0x51df('0x3b')]?_0x4f9b28[_0x51df('0x39')]:_0x2ee61c[_0x51df('0x35')];if(!_0x223932[_0x51df('0x37')][_0x51df('0x3c')](_0x51df('0x3d'))){_0x4f9b28[_0x51df('0x21')]=qs[_0x51df('0x21')](_0x223932['query'][_0x51df('0x21')]);_0x4f9b28[_0x51df('0x22')]=qs['offset'](_0x223932[_0x51df('0x37')]['offset']);}_0x4f9b28['order']=qs[_0x51df('0x3e')](_0x223932[_0x51df('0x37')][_0x51df('0x3e')]);_0x4f9b28[_0x51df('0x3f')]=qs[_0x51df('0x40')](_[_0x51df('0x41')](_0x223932[_0x51df('0x37')],_0x2ee61c[_0x51df('0x40')]),_0x325c0c);if(_0x223932[_0x51df('0x37')][_0x51df('0x42')]){_0x4f9b28[_0x51df('0x3f')]=_[_0x51df('0x43')](_0x4f9b28[_0x51df('0x3f')],{'$or':_[_0x51df('0x30')](_0x325c0c,function(_0x417ac0){if(_0x417ac0[_0x51df('0x34')]!==_0x51df('0x44')){var _0x3dcdf5={};_0x3dcdf5[_0x417ac0[_0x51df('0x2d')]]={'$like':'%'+_0x223932['query'][_0x51df('0x42')]+'%'};return _0x3dcdf5;}})});}_0x4f9b28=_[_0x51df('0x43')]({},_0x4f9b28,_0x223932[_0x51df('0x45')]);var _0x23db08={'where':_0x4f9b28['where']};return db[_0x51df('0x31')]['count'](_0x23db08)['then'](function(_0x5e66c7){_0x4719d9[_0x51df('0x46')]=_0x5e66c7;if(_0x223932[_0x51df('0x37')][_0x51df('0x47')]){_0x4f9b28[_0x51df('0x48')]=[{'all':!![]}];}return db[_0x51df('0x31')][_0x51df('0x49')](_0x4f9b28);})[_0x51df('0x27')](function(_0x465707){_0x4719d9[_0x51df('0x4a')]=_0x465707;return _0x4719d9;})[_0x51df('0x27')](respondWithFilteredResult(_0x1637ab,_0x4f9b28))[_0x51df('0x4b')](handleError(_0x1637ab,null));};exports[_0x51df('0x4c')]=function(_0x3e3b70,_0x289531){var _0x4608fc={'raw':![],'where':{'id':_0x3e3b70[_0x51df('0x4d')]['id']}},_0x300e41={};_0x300e41[_0x51df('0x35')]=_[_0x51df('0x36')](db[_0x51df('0x31')][_0x51df('0x32')]);_0x300e41[_0x51df('0x37')]=_[_0x51df('0x36')](_0x3e3b70['query']);_0x300e41[_0x51df('0x40')]=_[_0x51df('0x38')](_0x300e41[_0x51df('0x35')],_0x300e41[_0x51df('0x37')]);_0x4608fc['attributes']=_[_0x51df('0x38')](_0x300e41[_0x51df('0x35')],qs[_0x51df('0x3a')](_0x3e3b70[_0x51df('0x37')][_0x51df('0x3a')]));_0x4608fc[_0x51df('0x39')]=_0x4608fc[_0x51df('0x39')]['length']?_0x4608fc[_0x51df('0x39')]:_0x300e41[_0x51df('0x35')];if(_0x3e3b70[_0x51df('0x37')][_0x51df('0x47')]){_0x4608fc['include']=[{'all':!![]}];}_0x4608fc=_['merge']({},_0x4608fc,_0x3e3b70[_0x51df('0x45')]);return db[_0x51df('0x31')][_0x51df('0x4e')](_0x4608fc)[_0x51df('0x27')](handleEntityNotFound(_0x289531,null))[_0x51df('0x27')](respondWithResult(_0x289531,null))[_0x51df('0x4b')](handleError(_0x289531,null));};exports[_0x51df('0x4f')]=function(_0x1a502a,_0x493da5){return db[_0x51df('0x31')]['create'](_0x1a502a[_0x51df('0x50')],{})[_0x51df('0x27')](function(_0x80c139){var _0x4c1561=_0x1a502a['user'][_0x51df('0x29')]({'plain':!![]});if(!_0x4c1561)throw new Error(_0x51df('0x51'));if(_0x4c1561[_0x51df('0x52')]===_0x51df('0x53')){var _0x58ec08=_0x80c139['get']({'plain':!![]});var _0x7dd3f4=_0x51df('0x2a');return db[_0x51df('0x54')]['find']({'where':{'name':_0x7dd3f4,'userProfileId':_0x4c1561['userProfileId']},'raw':!![]})[_0x51df('0x27')](function(_0x8bf2f3){if(_0x8bf2f3&&_0x8bf2f3['autoAssociation']===0x0){return db[_0x51df('0x2b')]['create']({'name':_0x58ec08[_0x51df('0x2d')],'resourceId':_0x58ec08['id'],'type':_0x8bf2f3['name'],'sectionId':_0x8bf2f3['id']},{})['then'](function(){return _0x80c139;});}else{return _0x80c139;}})[_0x51df('0x4b')](function(_0x3aed50){logger[_0x51df('0x2c')](_0x51df('0x55'),_0x3aed50);throw _0x3aed50;});}return _0x80c139;})[_0x51df('0x27')](respondWithResult(_0x493da5,0xc9))[_0x51df('0x4b')](handleError(_0x493da5,null));};exports[_0x51df('0x26')]=function(_0x418cce,_0xc08422){if(_0x418cce[_0x51df('0x50')]['id']){delete _0x418cce[_0x51df('0x50')]['id'];}return db[_0x51df('0x31')]['find']({'where':{'id':_0x418cce[_0x51df('0x4d')]['id']}})[_0x51df('0x27')](handleEntityNotFound(_0xc08422,null))[_0x51df('0x27')](saveUpdates(_0x418cce['body'],null))['then'](respondWithResult(_0xc08422,null))[_0x51df('0x4b')](handleError(_0xc08422,null));};exports['destroy']=function(_0x1a6cb1,_0x18a686){return db[_0x51df('0x31')][_0x51df('0x4e')]({'where':{'id':_0x1a6cb1[_0x51df('0x4d')]['id']}})[_0x51df('0x27')](handleEntityNotFound(_0x18a686,null))[_0x51df('0x27')](removeEntity(_0x18a686,null))[_0x51df('0x4b')](handleError(_0x18a686,null));};
\ No newline at end of file
+var _0x9c5e=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x6216a0,_0x194a4d){var _0x15ce83=function(_0x30a05e){while(--_0x30a05e){_0x6216a0['push'](_0x6216a0['shift']());}};_0x15ce83(++_0x194a4d);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x2e4434,_0x3d027a){_0x2e4434=_0x2e4434-0x0;var _0x37fdf3=_0x9c5e[_0x2e4434];return _0x37fdf3;};'use strict';var emlformat=require(_0xe9c5('0x0'));var rimraf=require(_0xe9c5('0x1'));var zipdir=require(_0xe9c5('0x2'));var jsonpatch=require(_0xe9c5('0x3'));var rp=require(_0xe9c5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe9c5('0x5'));var path=require(_0xe9c5('0x6'));var sox=require('sox');var csv=require(_0xe9c5('0x7'));var ejs=require(_0xe9c5('0x8'));var fs=require('fs');var fs_extra=require(_0xe9c5('0x9'));var _=require(_0xe9c5('0xa'));var squel=require('squel');var crypto=require(_0xe9c5('0xb'));var jsforce=require(_0xe9c5('0xc'));var deskjs=require(_0xe9c5('0xd'));var toCsv=require(_0xe9c5('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe9c5('0xe'));var authService=require(_0xe9c5('0xf'));var qs=require(_0xe9c5('0x10'));var as=require(_0xe9c5('0x11'));var hardwareService=require(_0xe9c5('0x12'));var logger=require(_0xe9c5('0x13'))(_0xe9c5('0x14'));var utils=require(_0xe9c5('0x15'));var config=require(_0xe9c5('0x16'));var licenseUtil=require(_0xe9c5('0x17'));var db=require(_0xe9c5('0x18'))['db'];function respondWithStatusCode(_0x27f3e1,_0x471401){_0x471401=_0x471401||0xcc;return function(_0x25ff11){if(_0x25ff11){return _0x27f3e1[_0xe9c5('0x19')](_0x471401);}return _0x27f3e1[_0xe9c5('0x1a')](_0x471401)['end']();};}function respondWithResult(_0x3cce36,_0xe98b11){_0xe98b11=_0xe98b11||0xc8;return function(_0x5eb474){if(_0x5eb474){return _0x3cce36[_0xe9c5('0x1a')](_0xe98b11)[_0xe9c5('0x1b')](_0x5eb474);}};}function respondWithFilteredResult(_0x232584,_0x5d8236){return function(_0x163253){if(_0x163253){var _0x14eb41=typeof _0x5d8236['offset']===_0xe9c5('0x1c')&&typeof _0x5d8236[_0xe9c5('0x1d')]===_0xe9c5('0x1c');var _0x154390=_0x163253[_0xe9c5('0x1e')];var _0x4d9c7d=_0x14eb41?0x0:_0x5d8236[_0xe9c5('0x1f')];var _0x1cecae=_0x14eb41?_0x163253[_0xe9c5('0x1e')]:_0x5d8236[_0xe9c5('0x1f')]+_0x5d8236['limit'];var _0x26492a;if(_0x1cecae>=_0x154390){_0x1cecae=_0x154390;_0x26492a=0xc8;}else{_0x26492a=0xce;}_0x232584[_0xe9c5('0x1a')](_0x26492a);return _0x232584[_0xe9c5('0x20')](_0xe9c5('0x21'),_0x4d9c7d+'-'+_0x1cecae+'/'+_0x154390)[_0xe9c5('0x1b')](_0x163253);}return null;};}function patchUpdates(_0x58fbad){return function(_0x51e860){try{jsonpatch[_0xe9c5('0x22')](_0x51e860,_0x58fbad,!![]);}catch(_0x57818d){return BPromise[_0xe9c5('0x23')](_0x57818d);}return _0x51e860[_0xe9c5('0x24')]();};}function saveUpdates(_0x21b02a,_0x4d16bc){return function(_0x5750ff){if(_0x5750ff){return _0x5750ff[_0xe9c5('0x25')](_0x21b02a)[_0xe9c5('0x26')](function(_0x37fb90){return _0x37fb90;});}return null;};}function removeEntity(_0x189a13,_0x34a7c8){return function(_0x245161){if(_0x245161){return _0x245161[_0xe9c5('0x27')]()[_0xe9c5('0x26')](function(){var _0x1cd9c4=_0x245161[_0xe9c5('0x28')]({'plain':!![]});var _0x5a3caa='ChanSpies';return db[_0xe9c5('0x29')][_0xe9c5('0x27')]({'where':{'type':_0x5a3caa,'resourceId':_0x1cd9c4['id']}})[_0xe9c5('0x26')](function(){return _0x245161;});})[_0xe9c5('0x26')](function(){_0x189a13[_0xe9c5('0x1a')](0xcc)[_0xe9c5('0x2a')]();});}};}function handleEntityNotFound(_0x493108,_0x2c3fcb){return function(_0x480187){if(!_0x480187){_0x493108[_0xe9c5('0x19')](0x194);}return _0x480187;};}function handleError(_0x50256b,_0x4fa0c2){_0x4fa0c2=_0x4fa0c2||0x1f4;return function(_0x2112a6){logger['error'](_0x2112a6[_0xe9c5('0x2b')]);if(_0x2112a6[_0xe9c5('0x2c')]){delete _0x2112a6[_0xe9c5('0x2c')];}_0x50256b[_0xe9c5('0x1a')](_0x4fa0c2)[_0xe9c5('0x2d')](_0x2112a6);};}exports['index']=function(_0xe3464c,_0x4fcabd){var _0x46d3e6={},_0x5088a6={},_0x348fee={'count':0x0,'rows':[]};var _0x32e267=_[_0xe9c5('0x2e')](db[_0xe9c5('0x2f')][_0xe9c5('0x30')],function(_0x4e6043){return{'name':_0x4e6043[_0xe9c5('0x31')],'type':_0x4e6043[_0xe9c5('0x32')][_0xe9c5('0x33')]};});_0x5088a6[_0xe9c5('0x34')]=_[_0xe9c5('0x2e')](_0x32e267,'name');_0x5088a6['query']=_[_0xe9c5('0x35')](_0xe3464c[_0xe9c5('0x36')]);_0x5088a6[_0xe9c5('0x37')]=_[_0xe9c5('0x38')](_0x5088a6[_0xe9c5('0x34')],_0x5088a6[_0xe9c5('0x36')]);_0x46d3e6[_0xe9c5('0x39')]=_[_0xe9c5('0x38')](_0x5088a6['model'],qs[_0xe9c5('0x3a')](_0xe3464c[_0xe9c5('0x36')]['fields']));_0x46d3e6[_0xe9c5('0x39')]=_0x46d3e6['attributes'][_0xe9c5('0x3b')]?_0x46d3e6[_0xe9c5('0x39')]:_0x5088a6[_0xe9c5('0x34')];if(!_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x3c')](_0xe9c5('0x3d'))){_0x46d3e6[_0xe9c5('0x1d')]=qs[_0xe9c5('0x1d')](_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x1d')]);_0x46d3e6[_0xe9c5('0x1f')]=qs[_0xe9c5('0x1f')](_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x1f')]);}_0x46d3e6[_0xe9c5('0x3e')]=qs[_0xe9c5('0x3f')](_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x3f')]);_0x46d3e6[_0xe9c5('0x40')]=qs['filters'](_[_0xe9c5('0x41')](_0xe3464c[_0xe9c5('0x36')],_0x5088a6[_0xe9c5('0x37')]),_0x32e267);if(_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x42')]){_0x46d3e6[_0xe9c5('0x40')]=_['merge'](_0x46d3e6[_0xe9c5('0x40')],{'$or':_[_0xe9c5('0x2e')](_0x32e267,function(_0x3a8be8){if(_0x3a8be8['type']!==_0xe9c5('0x43')){var _0x1bf7c5={};_0x1bf7c5[_0x3a8be8[_0xe9c5('0x2c')]]={'$like':'%'+_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x42')]+'%'};return _0x1bf7c5;}})});}_0x46d3e6=_[_0xe9c5('0x44')]({},_0x46d3e6,_0xe3464c[_0xe9c5('0x45')]);var _0x1fdf92={'where':_0x46d3e6[_0xe9c5('0x40')]};return db[_0xe9c5('0x2f')][_0xe9c5('0x1e')](_0x1fdf92)['then'](function(_0x51dd18){_0x348fee[_0xe9c5('0x1e')]=_0x51dd18;if(_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x46')]){_0x46d3e6[_0xe9c5('0x47')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x46d3e6);})[_0xe9c5('0x26')](function(_0x144e85){_0x348fee['rows']=_0x144e85;return _0x348fee;})[_0xe9c5('0x26')](respondWithFilteredResult(_0x4fcabd,_0x46d3e6))['catch'](handleError(_0x4fcabd,null));};exports['show']=function(_0x5c395d,_0x3c7e42){var _0x232ab0={'raw':![],'where':{'id':_0x5c395d[_0xe9c5('0x48')]['id']}},_0x1d081a={};_0x1d081a['model']=_[_0xe9c5('0x35')](db[_0xe9c5('0x2f')][_0xe9c5('0x30')]);_0x1d081a[_0xe9c5('0x36')]=_[_0xe9c5('0x35')](_0x5c395d[_0xe9c5('0x36')]);_0x1d081a[_0xe9c5('0x37')]=_[_0xe9c5('0x38')](_0x1d081a['model'],_0x1d081a[_0xe9c5('0x36')]);_0x232ab0[_0xe9c5('0x39')]=_[_0xe9c5('0x38')](_0x1d081a[_0xe9c5('0x34')],qs[_0xe9c5('0x3a')](_0x5c395d[_0xe9c5('0x36')]['fields']));_0x232ab0['attributes']=_0x232ab0['attributes']['length']?_0x232ab0[_0xe9c5('0x39')]:_0x1d081a[_0xe9c5('0x34')];if(_0x5c395d[_0xe9c5('0x36')]['includeAll']){_0x232ab0[_0xe9c5('0x47')]=[{'all':!![]}];}_0x232ab0=_[_0xe9c5('0x44')]({},_0x232ab0,_0x5c395d[_0xe9c5('0x45')]);return db[_0xe9c5('0x2f')][_0xe9c5('0x49')](_0x232ab0)[_0xe9c5('0x26')](handleEntityNotFound(_0x3c7e42,null))['then'](respondWithResult(_0x3c7e42,null))[_0xe9c5('0x4a')](handleError(_0x3c7e42,null));};exports[_0xe9c5('0x4b')]=function(_0x1da6a3,_0x249940){return db['VoiceChanSpy'][_0xe9c5('0x4b')](_0x1da6a3[_0xe9c5('0x4c')],{})[_0xe9c5('0x26')](function(_0x2d68be){var _0x38396f=_0x1da6a3[_0xe9c5('0x4d')]['get']({'plain':!![]});if(!_0x38396f)throw new Error(_0xe9c5('0x4e'));if(_0x38396f[_0xe9c5('0x4f')]===_0xe9c5('0x4d')){var _0x9d0154=_0x2d68be['get']({'plain':!![]});var _0x375f60=_0xe9c5('0x50');return db[_0xe9c5('0x51')][_0xe9c5('0x49')]({'where':{'name':_0x375f60,'userProfileId':_0x38396f[_0xe9c5('0x52')]},'raw':!![]})[_0xe9c5('0x26')](function(_0x581f8f){if(_0x581f8f&&_0x581f8f['autoAssociation']===0x0){return db[_0xe9c5('0x29')][_0xe9c5('0x4b')]({'name':_0x9d0154[_0xe9c5('0x2c')],'resourceId':_0x9d0154['id'],'type':_0x581f8f[_0xe9c5('0x2c')],'sectionId':_0x581f8f['id']},{})[_0xe9c5('0x26')](function(){return _0x2d68be;});}else{return _0x2d68be;}})[_0xe9c5('0x4a')](function(_0x2a9260){logger[_0xe9c5('0x53')](_0xe9c5('0x54'),_0x2a9260);throw _0x2a9260;});}return _0x2d68be;})[_0xe9c5('0x26')](respondWithResult(_0x249940,0xc9))[_0xe9c5('0x4a')](handleError(_0x249940,null));};exports[_0xe9c5('0x25')]=function(_0x2086fd,_0x3cd72b){if(_0x2086fd[_0xe9c5('0x4c')]['id']){delete _0x2086fd[_0xe9c5('0x4c')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x2086fd['params']['id']}})[_0xe9c5('0x26')](handleEntityNotFound(_0x3cd72b,null))[_0xe9c5('0x26')](saveUpdates(_0x2086fd[_0xe9c5('0x4c')],null))['then'](respondWithResult(_0x3cd72b,null))[_0xe9c5('0x4a')](handleError(_0x3cd72b,null));};exports['destroy']=function(_0x227370,_0xbac8ef){return db[_0xe9c5('0x2f')][_0xe9c5('0x49')]({'where':{'id':_0x227370[_0xe9c5('0x48')]['id']}})['then'](handleEntityNotFound(_0xbac8ef,null))[_0xe9c5('0x26')](removeEntity(_0xbac8ef,null))[_0xe9c5('0x4a')](handleError(_0xbac8ef,null));};
\ No newline at end of file
index 81d93b5..2abf972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ee6=['${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join','concat','internal','name','User','findAll','agent','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','format','%s%s','prefix','system','push','merge','CDR(type)=%s','chanspy','record','MixMonitor'];(function(_0x50221f,_0x59ef1a){var _0x5ed563=function(_0x2464b2){while(--_0x2464b2){_0x50221f['push'](_0x50221f['shift']());}};_0x5ed563(++_0x59ef1a);}(_0x1ee6,0x1c6));var _0x61ee=function(_0x123d52,_0x2f9c3c){_0x123d52=_0x123d52-0x0;var _0x5467c8=_0x1ee6[_0x123d52];return _0x5467c8;};'use strict';var _=require(_0x61ee('0x0'));var util=require(_0x61ee('0x1'));var BPromise=require(_0x61ee('0x2'));var attributes=require(_0x61ee('0x3'));var getUserApplications=function(_0x215412,_0x5bbcd2,_0x312953){var _0x6ce57e=0x1;var _0x5eb691=[];var _0x32530f={'context':_0x5bbcd2['context']||'from-sip','exten':util[_0x61ee('0x4')](_0x61ee('0x5'),_0x215412[_0x61ee('0x6')],_0x312953),'type':_0x61ee('0x7'),'isApp':![],'ChanSpyId':_0x215412['id'],'UserId':_0x5bbcd2['id']};_0x5eb691[_0x61ee('0x8')](_[_0x61ee('0x9')]({'app':'Set','appdata':util['format'](_0x61ee('0xa'),_0x61ee('0xb')),'priority':_0x6ce57e++},_0x32530f));if(_0x215412[_0x61ee('0xc')]){_0x5eb691[_0x61ee('0x8')](_[_0x61ee('0x9')]({'app':_0x61ee('0xd'),'appdata':util[_0x61ee('0x4')](_0x61ee('0xe'),_0x215412[_0x61ee('0xf')]),'priority':_0x6ce57e++},_0x32530f));}if(_0x215412[_0x61ee('0x10')]){_0x5eb691[_0x61ee('0x8')](_['merge']({'app':_0x61ee('0x11'),'appdata':_0x215412[_0x61ee('0x12')],'priority':_0x6ce57e++},_0x32530f));}_0x5eb691[_0x61ee('0x8')](_['merge']({'app':'ChanSpy','appdata':util[_0x61ee('0x4')](_0x61ee('0x13'),_0x5bbcd2['name'],_0x215412['options']?_0x215412[_0x61ee('0x14')][_0x61ee('0x15')](''):''),'priority':_0x6ce57e++},_0x32530f));if(_0x215412[_0x61ee('0xc')]){_0x5eb691[_0x61ee('0x8')](_[_0x61ee('0x9')]({'app':'StopMixMonitor','priority':_0x6ce57e++},_0x32530f));}return _0x5eb691;};var getChanSpyApplications=function(_0x20a620,_0x5ab219){var _0x19530b=[];for(var _0x22fd6d=0x0,_0x2c5a24=0x1;_0x22fd6d<_0x5ab219['length'];_0x22fd6d++,_0x2c5a24=0x1){_0x19530b=_0x19530b[_0x61ee('0x16')](getUserApplications(_0x20a620,_0x5ab219[_0x22fd6d],_0x5ab219[_0x22fd6d][_0x61ee('0x17')]));if(_0x5ab219[_0x22fd6d]['internal']!=_0x5ab219[_0x22fd6d][_0x61ee('0x18')]){_0x19530b=_0x19530b[_0x61ee('0x16')](getUserApplications(_0x20a620,_0x5ab219[_0x22fd6d],_0x5ab219[_0x22fd6d][_0x61ee('0x18')]));}}return _0x19530b;};var getChanSpyPromise=function(_0x22471d,_0x13b338){return new BPromise(function(_0x4e8a0a,_0x45c0ee){return _0x22471d[_0x61ee('0x19')][_0x61ee('0x1a')]({'attributes':['id','name','internal'],'where':{'role':_0x61ee('0x1b'),'chanspy':!![]},'raw':!![]})['then'](function(_0x486ba5){if(_0x486ba5){return _0x4e8a0a(getChanSpyApplications(_0x13b338,_0x486ba5));}return _0x4e8a0a([]);})[_0x61ee('0x1c')](function(_0x56ce37){_0x45c0ee(_0x56ce37);});});};module[_0x61ee('0x1d')]=function(_0x3df5fc,_0x5c3ff0){var _0x35eb37=_0x3df5fc[_0x61ee('0x1e')];return _0x3df5fc[_0x61ee('0x1f')](_0x61ee('0x20'),attributes,{'tableName':_0x61ee('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x270b29,_0x489071,_0x25e24f){return getChanSpyPromise(_0x35eb37,_0x270b29)[_0x61ee('0x22')](function(_0x54b7b9){if(_0x54b7b9&&_0x54b7b9[_0x61ee('0x23')]){return _0x35eb37[_0x61ee('0x24')][_0x61ee('0x25')](_0x54b7b9);}})[_0x61ee('0x22')](function(){_0x25e24f();})[_0x61ee('0x1c')](function(_0xf1d5a8){_0x25e24f(_0xf1d5a8);});},'afterUpdate':function(_0x244156,_0x2eabbe,_0x193a64){return _0x35eb37['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x244156['id']}})[_0x61ee('0x22')](function(){return getChanSpyPromise(_0x35eb37,_0x244156);})['then'](function(_0x3974ac){if(_0x3974ac&&_0x3974ac[_0x61ee('0x23')]){return _0x35eb37['VoiceExtension'][_0x61ee('0x25')](_0x3974ac);}})[_0x61ee('0x22')](function(){_0x193a64();})[_0x61ee('0x1c')](function(_0x19f824){_0x193a64(_0x19f824);});},'afterDestroy':function(_0x33e373,_0x1278a8,_0x3101f0){return _0x35eb37[_0x61ee('0x24')][_0x61ee('0x26')]({'where':{'ChanSpyId':_0x33e373['id']}})[_0x61ee('0x22')](function(){_0x3101f0();})[_0x61ee('0x1c')](function(_0x4400e1){_0x3101f0(_0x4400e1);});}}});};
\ No newline at end of file
+var _0xb1a8=['merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','concat','internal','User','catch','exports','define','VoiceChanSpy','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','lodash','bluebird','context','from-sip','format','%s%s','system','push','Set','CDR(type)=%s','chanspy','record'];(function(_0x1b5b3e,_0xcc4803){var _0x4a5124=function(_0x19c9fc){while(--_0x19c9fc){_0x1b5b3e['push'](_0x1b5b3e['shift']());}};_0x4a5124(++_0xcc4803);}(_0xb1a8,0x175));var _0x8b1a=function(_0x37c99f,_0x297890){_0x37c99f=_0x37c99f-0x0;var _0x458984=_0xb1a8[_0x37c99f];return _0x458984;};'use strict';var _=require(_0x8b1a('0x0'));var util=require('util');var BPromise=require(_0x8b1a('0x1'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x52236b,_0x52a7df,_0x5e2e8a){var _0xfa2cc8=0x1;var _0x401ad7=[];var _0x1290f0={'context':_0x52a7df[_0x8b1a('0x2')]||_0x8b1a('0x3'),'exten':util[_0x8b1a('0x4')](_0x8b1a('0x5'),_0x52236b['prefix'],_0x5e2e8a),'type':_0x8b1a('0x6'),'isApp':![],'ChanSpyId':_0x52236b['id'],'UserId':_0x52a7df['id']};_0x401ad7[_0x8b1a('0x7')](_['merge']({'app':_0x8b1a('0x8'),'appdata':util[_0x8b1a('0x4')](_0x8b1a('0x9'),_0x8b1a('0xa')),'priority':_0xfa2cc8++},_0x1290f0));if(_0x52236b[_0x8b1a('0xb')]){_0x401ad7[_0x8b1a('0x7')](_[_0x8b1a('0xc')]({'app':_0x8b1a('0xd'),'appdata':util[_0x8b1a('0x4')](_0x8b1a('0xe'),_0x52236b[_0x8b1a('0xf')]),'priority':_0xfa2cc8++},_0x1290f0));}if(_0x52236b[_0x8b1a('0x10')]){_0x401ad7[_0x8b1a('0x7')](_[_0x8b1a('0xc')]({'app':_0x8b1a('0x11'),'appdata':_0x52236b[_0x8b1a('0x12')],'priority':_0xfa2cc8++},_0x1290f0));}_0x401ad7[_0x8b1a('0x7')](_[_0x8b1a('0xc')]({'app':_0x8b1a('0x13'),'appdata':util[_0x8b1a('0x4')]('SIP/%s,%s',_0x52a7df[_0x8b1a('0x14')],_0x52236b[_0x8b1a('0x15')]?_0x52236b[_0x8b1a('0x15')]['join'](''):''),'priority':_0xfa2cc8++},_0x1290f0));if(_0x52236b[_0x8b1a('0xb')]){_0x401ad7[_0x8b1a('0x7')](_[_0x8b1a('0xc')]({'app':'StopMixMonitor','priority':_0xfa2cc8++},_0x1290f0));}return _0x401ad7;};var getChanSpyApplications=function(_0x369938,_0x159717){var _0x1a333e=[];for(var _0x44d440=0x0,_0x531724=0x1;_0x44d440<_0x159717['length'];_0x44d440++,_0x531724=0x1){_0x1a333e=_0x1a333e[_0x8b1a('0x16')](getUserApplications(_0x369938,_0x159717[_0x44d440],_0x159717[_0x44d440][_0x8b1a('0x17')]));if(_0x159717[_0x44d440][_0x8b1a('0x17')]!=_0x159717[_0x44d440][_0x8b1a('0x14')]){_0x1a333e=_0x1a333e['concat'](getUserApplications(_0x369938,_0x159717[_0x44d440],_0x159717[_0x44d440][_0x8b1a('0x14')]));}}return _0x1a333e;};var getChanSpyPromise=function(_0x3e8acd,_0x425a78){return new BPromise(function(_0x102005,_0xd0933){return _0x3e8acd[_0x8b1a('0x18')]['findAll']({'attributes':['id','name',_0x8b1a('0x17')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x48f25b){if(_0x48f25b){return _0x102005(getChanSpyApplications(_0x425a78,_0x48f25b));}return _0x102005([]);})[_0x8b1a('0x19')](function(_0x54c5a8){_0xd0933(_0x54c5a8);});});};module[_0x8b1a('0x1a')]=function(_0x516b23,_0x13e04a){var _0x22459a=_0x516b23['models'];return _0x516b23[_0x8b1a('0x1b')](_0x8b1a('0x1c'),attributes,{'tableName':_0x8b1a('0x1d'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3d42b1,_0x3ef0ac,_0x754445){return getChanSpyPromise(_0x22459a,_0x3d42b1)[_0x8b1a('0x1e')](function(_0x53915b){if(_0x53915b&&_0x53915b[_0x8b1a('0x1f')]){return _0x22459a[_0x8b1a('0x20')][_0x8b1a('0x21')](_0x53915b);}})[_0x8b1a('0x1e')](function(){_0x754445();})[_0x8b1a('0x19')](function(_0x53427d){_0x754445(_0x53427d);});},'afterUpdate':function(_0x356619,_0x23de01,_0x4a3812){return _0x22459a['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x356619['id']}})[_0x8b1a('0x1e')](function(){return getChanSpyPromise(_0x22459a,_0x356619);})[_0x8b1a('0x1e')](function(_0x309613){if(_0x309613&&_0x309613[_0x8b1a('0x1f')]){return _0x22459a[_0x8b1a('0x20')][_0x8b1a('0x21')](_0x309613);}})[_0x8b1a('0x1e')](function(){_0x4a3812();})[_0x8b1a('0x19')](function(_0x10aafe){_0x4a3812(_0x10aafe);});},'afterDestroy':function(_0x33d957,_0x432ce8,_0xf1d6d4){return _0x22459a[_0x8b1a('0x20')][_0x8b1a('0x22')]({'where':{'ChanSpyId':_0x33d957['id']}})[_0x8b1a('0x1e')](function(){_0xf1d6d4();})['catch'](function(_0x4ddf41){_0xf1d6d4(_0x4ddf41);});}}});};
\ No newline at end of file
index 236870b..4f63068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird'];(function(_0x559593,_0x1ddef7){var _0x101d6a=function(_0x1edb2c){while(--_0x1edb2c){_0x559593['push'](_0x559593['shift']());}};_0x101d6a(++_0x1ddef7);}(_0x8ce3,0xc3));var _0x38ce=function(_0x1f01f4,_0x5ea9ef){_0x1f01f4=_0x1f01f4-0x0;var _0x42dcb5=_0x8ce3[_0x1f01f4];return _0x42dcb5;};'use strict';var _=require(_0x38ce('0x0'));var util=require(_0x38ce('0x1'));var moment=require('moment');var BPromise=require(_0x38ce('0x2'));var rs=require(_0x38ce('0x3'));var fs=require('fs');var Redis=require(_0x38ce('0x4'));var db=require(_0x38ce('0x5'))['db'];var utils=require(_0x38ce('0x6'));var logger=require(_0x38ce('0x7'))(_0x38ce('0x8'));var config=require(_0x38ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x38ce('0xa')][_0x38ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x58074c,_0x262b13,_0xbe7332){return new BPromise(function(_0x3f8011,_0x482955){return client[_0x38ce('0xc')](_0x58074c,_0xbe7332)['then'](function(_0x725d27){logger['info'](_0x38ce('0xd'),_0x262b13,_0x38ce('0xe'));logger[_0x38ce('0xf')](_0x38ce('0x10'),_0x262b13,_0x38ce('0xe'),JSON[_0x38ce('0x11')](_0x725d27));if(_0x725d27[_0x38ce('0x12')]){if(_0x725d27[_0x38ce('0x12')][_0x38ce('0x13')]===0x1f4){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);return _0x482955(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}logger[_0x38ce('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x262b13,_0x725d27['error'][_0x38ce('0x14')]);return _0x3f8011(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}else{logger['info'](_0x38ce('0xd'),_0x262b13,'request\x20sent');_0x3f8011(_0x725d27[_0x38ce('0x15')][_0x38ce('0x14')]);}})['catch'](function(_0x5fc115){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x5fc115);_0x482955(_0x5fc115);});});}
\ No newline at end of file
+var _0x6324=['client','http','then','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise'];(function(_0x3cff7d,_0x330a92){var _0x322395=function(_0x4ae0bc){while(--_0x4ae0bc){_0x3cff7d['push'](_0x3cff7d['shift']());}};_0x322395(++_0x330a92);}(_0x6324,0x142));var _0x4632=function(_0x15d4d8,_0x447edc){_0x15d4d8=_0x15d4d8-0x0;var _0x1ca21f=_0x6324[_0x15d4d8];return _0x1ca21f;};'use strict';var _=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var moment=require(_0x4632('0x2'));var BPromise=require(_0x4632('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4632('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4632('0x5'));var logger=require('../../config/logger')(_0x4632('0x6'));var config=require('../../config/environment');var jayson=require(_0x4632('0x7'));var client=jayson[_0x4632('0x8')][_0x4632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x126e9a,_0x4a15b2,_0x17e860){return new BPromise(function(_0x44dd6d,_0x390a46){return client['request'](_0x126e9a,_0x17e860)[_0x4632('0xa')](function(_0x47824c){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,_0x4632('0xb'));logger[_0x4632('0xc')](_0x4632('0xd'),_0x4a15b2,_0x4632('0xb'),JSON[_0x4632('0xe')](_0x47824c));if(_0x47824c[_0x4632('0xf')]){if(_0x47824c[_0x4632('0xf')][_0x4632('0x10')]===0x1f4){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x47824c['error'][_0x4632('0x12')]);return _0x390a46(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}logger[_0x4632('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);return _0x44dd6d(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}else{logger[_0x4632('0x13')]('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,'request\x20sent');_0x44dd6d(_0x47824c[_0x4632('0x14')][_0x4632('0x12')]);}})[_0x4632('0x15')](function(_0x125eb9){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x125eb9);_0x390a46(_0x125eb9);});});}
\ No newline at end of file
index 87f8dc6..ba93dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f2=['post','create','put','update','delete','exports','multer','util','Router','../../components/auth/service','./voiceContext.controller','get','isAuthenticated','index','/:id'];(function(_0x19b680,_0x2a05c3){var _0x17cbe8=function(_0x4c215e){while(--_0x4c215e){_0x19b680['push'](_0x19b680['shift']());}};_0x17cbe8(++_0x2a05c3);}(_0xd9f2,0x1e6));var _0x2d9f=function(_0xea2c93,_0x1b6090){_0xea2c93=_0xea2c93-0x0;var _0x434329=_0xd9f2[_0xea2c93];return _0x434329;};'use strict';var multer=require(_0x2d9f('0x0'));var util=require(_0x2d9f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2d9f('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d9f('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2d9f('0x4'));router[_0x2d9f('0x5')]('/',auth[_0x2d9f('0x6')](),controller[_0x2d9f('0x7')]);router[_0x2d9f('0x5')](_0x2d9f('0x8'),auth[_0x2d9f('0x6')](),controller['show']);router[_0x2d9f('0x9')]('/',auth[_0x2d9f('0x6')](),controller[_0x2d9f('0xa')]);router[_0x2d9f('0xb')](_0x2d9f('0x8'),auth[_0x2d9f('0x6')](),controller[_0x2d9f('0xc')]);router[_0x2d9f('0xd')](_0x2d9f('0x8'),auth[_0x2d9f('0x6')](),controller['destroy']);module[_0x2d9f('0xe')]=router;
\ No newline at end of file
+var _0xdf63=['destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete'];(function(_0x313b9e,_0x577dd7){var _0x4f73be=function(_0x3af1cd){while(--_0x3af1cd){_0x313b9e['push'](_0x313b9e['shift']());}};_0x4f73be(++_0x577dd7);}(_0xdf63,0x113));var _0x3df6=function(_0x1ea124,_0x2244b3){_0x1ea124=_0x1ea124-0x0;var _0x480f33=_0xdf63[_0x1ea124];return _0x480f33;};'use strict';var multer=require(_0x3df6('0x0'));var util=require('util');var path=require(_0x3df6('0x1'));var timeout=require('connect-timeout');var express=require(_0x3df6('0x2'));var router=express[_0x3df6('0x3')]();var fs_extra=require(_0x3df6('0x4'));var auth=require(_0x3df6('0x5'));var interaction=require(_0x3df6('0x6'));var config=require(_0x3df6('0x7'));var controller=require(_0x3df6('0x8'));router[_0x3df6('0x9')]('/',auth['isAuthenticated'](),controller[_0x3df6('0xa')]);router[_0x3df6('0x9')](_0x3df6('0xb'),auth['isAuthenticated'](),controller[_0x3df6('0xc')]);router[_0x3df6('0xd')]('/',auth[_0x3df6('0xe')](),controller[_0x3df6('0xf')]);router[_0x3df6('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x3df6('0x11')]);router[_0x3df6('0x12')]('/:id',auth[_0x3df6('0xe')](),controller[_0x3df6('0x13')]);module[_0x3df6('0x14')]=router;
\ No newline at end of file
index be12007..b7b922a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe61c=['exports','STRING','name','BOOLEAN','sequelize'];(function(_0x42127d,_0x319f25){var _0x338b8c=function(_0x2360c5){while(--_0x2360c5){_0x42127d['push'](_0x42127d['shift']());}};_0x338b8c(++_0x319f25);}(_0xe61c,0x10d));var _0xce61=function(_0x199c03,_0x3254aa){_0x199c03=_0x199c03-0x0;var _0x11a7d4=_0xe61c[_0x199c03];return _0x11a7d4;};'use strict';var Sequelize=require(_0xce61('0x0'));module[_0xce61('0x1')]={'name':{'type':Sequelize[_0xce61('0x2')],'unique':_0xce61('0x3')},'description':{'type':Sequelize[_0xce61('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xce61('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xeb40=['name','BOOLEAN','sequelize','STRING'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0xeb40,0x176));var _0x0eb4=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xeb40[_0x9df060];return _0x338dfe;};'use strict';var Sequelize=require(_0x0eb4('0x0'));module['exports']={'name':{'type':Sequelize[_0x0eb4('0x1')],'unique':_0x0eb4('0x2')},'description':{'type':Sequelize[_0x0eb4('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x0eb4('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 383e028..64221db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aed=['autoAssociation','update','writeFileSync','rimraf','fast-json-patch','request-promise','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','api','../../mysqldb','jayson/promise','client','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','get','Contexts','UserProfileResource','stack','send','index','map','VoiceContext','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0x3cba5e,_0x15dac9){var _0x312d63=function(_0x473041){while(--_0x473041){_0x3cba5e['push'](_0x3cba5e['shift']());}};_0x312d63(++_0x15dac9);}(_0x7aed,0x1a3));var _0xd7ae=function(_0x2fe828,_0x44e714){_0x2fe828=_0x2fe828-0x0;var _0x4bfbac=_0x7aed[_0x2fe828];return _0x4bfbac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd7ae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd7ae('0x1'));var rp=require(_0xd7ae('0x2'));var moment=require('moment');var BPromise=require(_0xd7ae('0x3'));var Mustache=require(_0xd7ae('0x4'));var util=require(_0xd7ae('0x5'));var path=require(_0xd7ae('0x6'));var sox=require(_0xd7ae('0x7'));var csv=require(_0xd7ae('0x8'));var ejs=require(_0xd7ae('0x9'));var fs=require('fs');var fs_extra=require(_0xd7ae('0xa'));var _=require(_0xd7ae('0xb'));var squel=require('squel');var crypto=require(_0xd7ae('0xc'));var jsforce=require(_0xd7ae('0xd'));var deskjs=require(_0xd7ae('0xe'));var toCsv=require(_0xd7ae('0x8'));var querystring=require(_0xd7ae('0xf'));var Papa=require(_0xd7ae('0x10'));var Redis=require(_0xd7ae('0x11'));var authService=require(_0xd7ae('0x12'));var qs=require(_0xd7ae('0x13'));var as=require(_0xd7ae('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd7ae('0x15'))(_0xd7ae('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd7ae('0x17'))['db'];var jayson=require(_0xd7ae('0x18'));var client=jayson[_0xd7ae('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x398e1e,_0x5293f6,_0x763436,_0x2dbedb){return new BPromise(function(_0x2554a2,_0x4f2b44){var _0x5d8d=_0x2dbedb||client;return _0x5d8d[_0xd7ae('0x1a')](_0x398e1e,_0x763436)[_0xd7ae('0x1b')](function(_0x5c894d){logger[_0xd7ae('0x1c')](_0xd7ae('0x1d'),_0x5293f6,_0xd7ae('0x1e'));logger['debug'](_0xd7ae('0x1f'),_0x5293f6,_0xd7ae('0x1e'),JSON[_0xd7ae('0x20')](_0x5c894d));if(_0x5c894d[_0xd7ae('0x21')]){if(_0x5c894d[_0xd7ae('0x21')]['code']===0x1f4){logger[_0xd7ae('0x21')](_0xd7ae('0x1d'),_0x5293f6,_0x5c894d['error'][_0xd7ae('0x22')]);return _0x4f2b44(_0x5c894d[_0xd7ae('0x21')]['message']);}logger[_0xd7ae('0x21')](_0xd7ae('0x1d'),_0x5293f6,_0x5c894d['error'][_0xd7ae('0x22')]);return _0x2554a2(_0x5c894d['error']['message']);}else{logger[_0xd7ae('0x1c')](_0xd7ae('0x1d'),_0x5293f6,_0xd7ae('0x1e'));_0x2554a2(_0x5c894d[_0xd7ae('0x23')][_0xd7ae('0x22')]);}})[_0xd7ae('0x24')](function(_0x5bbf3a){logger[_0xd7ae('0x21')](_0xd7ae('0x1d'),_0x5293f6,_0x5bbf3a);_0x4f2b44(_0x5bbf3a);});});}function respondWithStatusCode(_0x2da67c,_0x4ddd3c){_0x4ddd3c=_0x4ddd3c||0xcc;return function(_0x4a3513){if(_0x4a3513){return _0x2da67c[_0xd7ae('0x25')](_0x4ddd3c);}return _0x2da67c[_0xd7ae('0x26')](_0x4ddd3c)[_0xd7ae('0x27')]();};}function respondWithResult(_0x3ef143,_0x1ec79f){_0x1ec79f=_0x1ec79f||0xc8;return function(_0x25c0d2){if(_0x25c0d2){return _0x3ef143[_0xd7ae('0x26')](_0x1ec79f)[_0xd7ae('0x28')](_0x25c0d2);}};}function respondWithFilteredResult(_0x381e73,_0x400905){return function(_0x3730c2){if(_0x3730c2){var _0x4c2b57=typeof _0x400905[_0xd7ae('0x29')]===_0xd7ae('0x2a')&&typeof _0x400905[_0xd7ae('0x2b')]==='undefined';var _0x39b714=_0x3730c2[_0xd7ae('0x2c')];var _0x1c5515=_0x4c2b57?0x0:_0x400905['offset'];var _0x8e0085=_0x4c2b57?_0x3730c2[_0xd7ae('0x2c')]:_0x400905['offset']+_0x400905[_0xd7ae('0x2b')];var _0x2b337f;if(_0x8e0085>=_0x39b714){_0x8e0085=_0x39b714;_0x2b337f=0xc8;}else{_0x2b337f=0xce;}_0x381e73[_0xd7ae('0x26')](_0x2b337f);return _0x381e73[_0xd7ae('0x2d')](_0xd7ae('0x2e'),_0x1c5515+'-'+_0x8e0085+'/'+_0x39b714)[_0xd7ae('0x28')](_0x3730c2);}return null;};}function patchUpdates(_0x4ea41f){return function(_0x26af94){try{jsonpatch[_0xd7ae('0x2f')](_0x26af94,_0x4ea41f,!![]);}catch(_0x2148e6){return BPromise[_0xd7ae('0x30')](_0x2148e6);}return _0x26af94['save']();};}function saveUpdates(_0x50c95b,_0x140156){return function(_0x192871){if(_0x192871){return _0x192871['update'](_0x50c95b)[_0xd7ae('0x1b')](function(_0x13b6bd){return _0x13b6bd;});}return null;};}function removeEntity(_0x2f6269,_0x3dafd5){return function(_0x58fb00){if(_0x58fb00){return _0x58fb00[_0xd7ae('0x31')]()[_0xd7ae('0x1b')](function(){var _0x5a0cc3=_0x58fb00[_0xd7ae('0x32')]({'plain':!![]});var _0xe4ccec=_0xd7ae('0x33');return db[_0xd7ae('0x34')][_0xd7ae('0x31')]({'where':{'type':_0xe4ccec,'resourceId':_0x5a0cc3['id']}})[_0xd7ae('0x1b')](function(){return _0x58fb00;});})[_0xd7ae('0x1b')](function(){_0x2f6269[_0xd7ae('0x26')](0xcc)[_0xd7ae('0x27')]();});}};}function handleEntityNotFound(_0x48972f,_0x1ae8f7){return function(_0xb411cc){if(!_0xb411cc){_0x48972f['sendStatus'](0x194);}return _0xb411cc;};}function handleError(_0x3fbc58,_0x521d5c){_0x521d5c=_0x521d5c||0x1f4;return function(_0x2bf317){logger[_0xd7ae('0x21')](_0x2bf317[_0xd7ae('0x35')]);if(_0x2bf317['name']){delete _0x2bf317['name'];}_0x3fbc58[_0xd7ae('0x26')](_0x521d5c)[_0xd7ae('0x36')](_0x2bf317);};}exports[_0xd7ae('0x37')]=function(_0x53247e,_0x5c4c68){var _0x4d1f0e={},_0x9a4506={},_0x187554={'count':0x0,'rows':[]};var _0x1453d2=_[_0xd7ae('0x38')](db[_0xd7ae('0x39')][_0xd7ae('0x3a')],function(_0x2db8ca){return{'name':_0x2db8ca[_0xd7ae('0x3b')],'type':_0x2db8ca[_0xd7ae('0x3c')]['key']};});_0x9a4506[_0xd7ae('0x3d')]=_[_0xd7ae('0x38')](_0x1453d2,_0xd7ae('0x3e'));_0x9a4506[_0xd7ae('0x3f')]=_[_0xd7ae('0x40')](_0x53247e['query']);_0x9a4506[_0xd7ae('0x41')]=_[_0xd7ae('0x42')](_0x9a4506[_0xd7ae('0x3d')],_0x9a4506[_0xd7ae('0x3f')]);_0x4d1f0e[_0xd7ae('0x43')]=_[_0xd7ae('0x42')](_0x9a4506[_0xd7ae('0x3d')],qs['fields'](_0x53247e['query'][_0xd7ae('0x44')]));_0x4d1f0e[_0xd7ae('0x43')]=_0x4d1f0e['attributes'][_0xd7ae('0x45')]?_0x4d1f0e[_0xd7ae('0x43')]:_0x9a4506[_0xd7ae('0x3d')];if(!_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x46')](_0xd7ae('0x47'))){_0x4d1f0e[_0xd7ae('0x2b')]=qs['limit'](_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x2b')]);_0x4d1f0e['offset']=qs[_0xd7ae('0x29')](_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x29')]);}_0x4d1f0e[_0xd7ae('0x48')]=qs[_0xd7ae('0x49')](_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x49')]);_0x4d1f0e['where']=qs[_0xd7ae('0x41')](_[_0xd7ae('0x4a')](_0x53247e['query'],_0x9a4506[_0xd7ae('0x41')]),_0x1453d2);if(_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x4b')]){_0x4d1f0e['where']=_[_0xd7ae('0x4c')](_0x4d1f0e[_0xd7ae('0x4d')],{'$or':_[_0xd7ae('0x38')](_0x1453d2,function(_0x266413){if(_0x266413[_0xd7ae('0x3c')]!==_0xd7ae('0x4e')){var _0x404d77={};_0x404d77[_0x266413[_0xd7ae('0x3e')]]={'$like':'%'+_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x4b')]+'%'};return _0x404d77;}})});}_0x4d1f0e=_[_0xd7ae('0x4c')]({},_0x4d1f0e,_0x53247e[_0xd7ae('0x4f')]);var _0x342c55={'where':_0x4d1f0e[_0xd7ae('0x4d')]};return db['VoiceContext']['count'](_0x342c55)[_0xd7ae('0x1b')](function(_0x510aea){_0x187554[_0xd7ae('0x2c')]=_0x510aea;if(_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x50')]){_0x4d1f0e[_0xd7ae('0x51')]=[{'all':!![]}];}return db['VoiceContext'][_0xd7ae('0x52')](_0x4d1f0e);})[_0xd7ae('0x1b')](function(_0x35c2e0){_0x187554[_0xd7ae('0x53')]=_0x35c2e0;return _0x187554;})[_0xd7ae('0x1b')](respondWithFilteredResult(_0x5c4c68,_0x4d1f0e))[_0xd7ae('0x24')](handleError(_0x5c4c68,null));};exports[_0xd7ae('0x54')]=function(_0x4ea14f,_0xf2a43){var _0x5943a8={'raw':![],'where':{'id':_0x4ea14f[_0xd7ae('0x55')]['id']}},_0x37029d={};_0x37029d[_0xd7ae('0x3d')]=_[_0xd7ae('0x40')](db['VoiceContext'][_0xd7ae('0x3a')]);_0x37029d[_0xd7ae('0x3f')]=_[_0xd7ae('0x40')](_0x4ea14f[_0xd7ae('0x3f')]);_0x37029d[_0xd7ae('0x41')]=_['intersection'](_0x37029d[_0xd7ae('0x3d')],_0x37029d[_0xd7ae('0x3f')]);_0x5943a8[_0xd7ae('0x43')]=_[_0xd7ae('0x42')](_0x37029d['model'],qs['fields'](_0x4ea14f[_0xd7ae('0x3f')][_0xd7ae('0x44')]));_0x5943a8[_0xd7ae('0x43')]=_0x5943a8[_0xd7ae('0x43')][_0xd7ae('0x45')]?_0x5943a8[_0xd7ae('0x43')]:_0x37029d['model'];if(_0x4ea14f[_0xd7ae('0x3f')][_0xd7ae('0x50')]){_0x5943a8[_0xd7ae('0x51')]=[{'all':!![]}];}_0x5943a8=_[_0xd7ae('0x4c')]({},_0x5943a8,_0x4ea14f[_0xd7ae('0x4f')]);return db[_0xd7ae('0x39')][_0xd7ae('0x56')](_0x5943a8)[_0xd7ae('0x1b')](handleEntityNotFound(_0xf2a43,null))[_0xd7ae('0x1b')](respondWithResult(_0xf2a43,null))[_0xd7ae('0x24')](handleError(_0xf2a43,null));};exports['create']=function(_0x4e4519,_0x2f64a0,_0x27652f){var _0xaaa019;return db[_0xd7ae('0x39')][_0xd7ae('0x57')](_0x4e4519[_0xd7ae('0x58')],{'raw':!![]})[_0xd7ae('0x1b')](function(_0x3e4874){_0xaaa019=_0x3e4874;return db[_0xd7ae('0x39')][_0xd7ae('0x52')]({'raw':!![]});})[_0xd7ae('0x1b')](function(_0x2b4617){var _0x2013de=fs[_0xd7ae('0x59')](path[_0xd7ae('0x5a')](config[_0xd7ae('0x5b')],_0xd7ae('0x5c')),_0xd7ae('0x5d'));var _0x184c22=ejs['render'](_0x2013de,{'contexts':_0x2b4617||[]});fs['writeFileSync'](_0xd7ae('0x5e'),_0x184c22);})[_0xd7ae('0x1b')](function(){return respondWithRpcPromise(_0xd7ae('0x5f'),_0xd7ae('0x57'),{'module':_0xd7ae('0x60')});})[_0xd7ae('0x1b')](function(){var _0x4513cb=_0x4e4519[_0xd7ae('0x61')][_0xd7ae('0x32')]({'plain':!![]});if(!_0x4513cb)throw new Error(_0xd7ae('0x62'));if(_0x4513cb[_0xd7ae('0x63')]===_0xd7ae('0x61')){var _0xaa5f2=_0xaaa019[_0xd7ae('0x32')]({'plain':!![]});return db[_0xd7ae('0x64')][_0xd7ae('0x56')]({'where':{'name':_0xd7ae('0x33'),'userProfileId':_0x4513cb['userProfileId']},'raw':!![]})[_0xd7ae('0x1b')](function(_0x11ff15){if(_0x11ff15&&_0x11ff15[_0xd7ae('0x65')]===0x0){return db[_0xd7ae('0x34')][_0xd7ae('0x57')]({'name':_0xaa5f2[_0xd7ae('0x3e')],'resourceId':_0xaa5f2['id'],'type':_0x11ff15['name'],'sectionId':_0x11ff15['id']},{})[_0xd7ae('0x1b')](function(){return _0xaaa019;});}else{return _0xaaa019;}})['catch'](function(_0xf776d8){logger[_0xd7ae('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf776d8);throw _0xf776d8;});}return _0xaaa019;})['then'](respondWithResult(_0x2f64a0,0xc9))[_0xd7ae('0x24')](handleError(_0x2f64a0,null));};exports[_0xd7ae('0x66')]=function(_0x4f8999,_0x15a5f1,_0x25adcf){var _0x4b79d4;return db['VoiceContext'][_0xd7ae('0x56')]({'where':{'id':_0x4f8999[_0xd7ae('0x55')]['id']}})['then'](handleEntityNotFound(_0x15a5f1,null))[_0xd7ae('0x1b')](saveUpdates(_0x4f8999[_0xd7ae('0x58')],null))[_0xd7ae('0x1b')](function(_0x286716){if(_0x286716){_0x4b79d4=_0x286716;return db[_0xd7ae('0x39')][_0xd7ae('0x52')]({'raw':!![]});}})[_0xd7ae('0x1b')](function(_0x40dbe0){var _0x3e43fe=fs['readFileSync'](path[_0xd7ae('0x5a')](config['root'],_0xd7ae('0x5c')),'utf8');var _0x4dec99=ejs['render'](_0x3e43fe,{'contexts':_0x40dbe0||[]});fs[_0xd7ae('0x67')](_0xd7ae('0x5e'),_0x4dec99);})['then'](function(){return respondWithRpcPromise(_0xd7ae('0x5f'),_0xd7ae('0x66'),{'module':_0xd7ae('0x60')});})[_0xd7ae('0x1b')](function(){return _0x4b79d4;})[_0xd7ae('0x1b')](respondWithResult(_0x15a5f1,null))[_0xd7ae('0x24')](handleError(_0x15a5f1,null));};exports['destroy']=function(_0x138776,_0x1af145,_0x7c1cb6){var _0x2d71cb;return db['VoiceContext'][_0xd7ae('0x56')]({'where':{'id':_0x138776[_0xd7ae('0x55')]['id']}})['then'](handleEntityNotFound(_0x1af145,null))[_0xd7ae('0x1b')](removeEntity(_0x1af145,null))[_0xd7ae('0x1b')](function(){return db[_0xd7ae('0x39')][_0xd7ae('0x52')]({'raw':!![]});})['then'](function(_0x39eff3){var _0x2a7834=fs[_0xd7ae('0x59')](path[_0xd7ae('0x5a')](config[_0xd7ae('0x5b')],_0xd7ae('0x5c')),_0xd7ae('0x5d'));var _0x3e0f16=ejs['render'](_0x2a7834,{'contexts':_0x39eff3});fs[_0xd7ae('0x67')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x3e0f16);return respondWithRpcPromise('Reload',_0xd7ae('0x31'),{'module':_0xd7ae('0x60')});})[_0xd7ae('0x24')](handleError(_0x1af145,null));};
\ No newline at end of file
+var _0x95f5=['utf8','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','then','info','request\x20sent','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','name','send','map','VoiceContext','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','find','create','body','findAll','readFileSync','root','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','join','server/files/templates/context.ejs'];(function(_0x581960,_0x1232ff){var _0x4ee892=function(_0x2a920d){while(--_0x2a920d){_0x581960['push'](_0x581960['shift']());}};_0x4ee892(++_0x1232ff);}(_0x95f5,0x12a));var _0x595f=function(_0x1df483,_0x340648){_0x1df483=_0x1df483-0x0;var _0x376fac=_0x95f5[_0x1df483];return _0x376fac;};'use strict';var emlformat=require(_0x595f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x595f('0x1'));var jsonpatch=require(_0x595f('0x2'));var rp=require(_0x595f('0x3'));var moment=require(_0x595f('0x4'));var BPromise=require(_0x595f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x595f('0x6'));var sox=require('sox');var csv=require(_0x595f('0x7'));var ejs=require(_0x595f('0x8'));var fs=require('fs');var fs_extra=require(_0x595f('0x9'));var _=require('lodash');var squel=require(_0x595f('0xa'));var crypto=require('crypto');var jsforce=require(_0x595f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x595f('0x7'));var querystring=require('querystring');var Papa=require(_0x595f('0xc'));var Redis=require('ioredis');var authService=require(_0x595f('0xd'));var qs=require(_0x595f('0xe'));var as=require(_0x595f('0xf'));var hardwareService=require(_0x595f('0x10'));var logger=require(_0x595f('0x11'))(_0x595f('0x12'));var utils=require(_0x595f('0x13'));var config=require(_0x595f('0x14'));var licenseUtil=require(_0x595f('0x15'));var db=require(_0x595f('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x595f('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x55f775,_0x43df41,_0xacf976,_0xf94c8f){return new BPromise(function(_0x4232ee,_0x423463){var _0x28bd44=_0xf94c8f||client;return _0x28bd44['request'](_0x55f775,_0xacf976)[_0x595f('0x18')](function(_0x3af046){logger[_0x595f('0x19')]('VoiceContext,\x20%s,\x20%s',_0x43df41,_0x595f('0x1a'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x43df41,_0x595f('0x1a'),JSON[_0x595f('0x1b')](_0x3af046));if(_0x3af046[_0x595f('0x1c')]){if(_0x3af046[_0x595f('0x1c')][_0x595f('0x1d')]===0x1f4){logger[_0x595f('0x1c')](_0x595f('0x1e'),_0x43df41,_0x3af046[_0x595f('0x1c')]['message']);return _0x423463(_0x3af046['error'][_0x595f('0x1f')]);}logger[_0x595f('0x1c')](_0x595f('0x1e'),_0x43df41,_0x3af046[_0x595f('0x1c')][_0x595f('0x1f')]);return _0x4232ee(_0x3af046['error'][_0x595f('0x1f')]);}else{logger[_0x595f('0x19')]('VoiceContext,\x20%s,\x20%s',_0x43df41,_0x595f('0x1a'));_0x4232ee(_0x3af046[_0x595f('0x20')][_0x595f('0x1f')]);}})[_0x595f('0x21')](function(_0x3ae729){logger[_0x595f('0x1c')](_0x595f('0x1e'),_0x43df41,_0x3ae729);_0x423463(_0x3ae729);});});}function respondWithStatusCode(_0x57d751,_0x29d60c){_0x29d60c=_0x29d60c||0xcc;return function(_0x127ff1){if(_0x127ff1){return _0x57d751[_0x595f('0x22')](_0x29d60c);}return _0x57d751[_0x595f('0x23')](_0x29d60c)['end']();};}function respondWithResult(_0x560d9c,_0x4a72a1){_0x4a72a1=_0x4a72a1||0xc8;return function(_0x5d6b63){if(_0x5d6b63){return _0x560d9c[_0x595f('0x23')](_0x4a72a1)[_0x595f('0x24')](_0x5d6b63);}};}function respondWithFilteredResult(_0x32564e,_0x27e151){return function(_0x194719){if(_0x194719){var _0xe818af=typeof _0x27e151[_0x595f('0x25')]==='undefined'&&typeof _0x27e151[_0x595f('0x26')]===_0x595f('0x27');var _0x2f440f=_0x194719[_0x595f('0x28')];var _0x3b333f=_0xe818af?0x0:_0x27e151['offset'];var _0x255aaf=_0xe818af?_0x194719[_0x595f('0x28')]:_0x27e151[_0x595f('0x25')]+_0x27e151[_0x595f('0x26')];var _0x1ad866;if(_0x255aaf>=_0x2f440f){_0x255aaf=_0x2f440f;_0x1ad866=0xc8;}else{_0x1ad866=0xce;}_0x32564e[_0x595f('0x23')](_0x1ad866);return _0x32564e['set'](_0x595f('0x29'),_0x3b333f+'-'+_0x255aaf+'/'+_0x2f440f)[_0x595f('0x24')](_0x194719);}return null;};}function patchUpdates(_0x35f8c5){return function(_0x4db5a4){try{jsonpatch[_0x595f('0x2a')](_0x4db5a4,_0x35f8c5,!![]);}catch(_0x542656){return BPromise[_0x595f('0x2b')](_0x542656);}return _0x4db5a4[_0x595f('0x2c')]();};}function saveUpdates(_0x19b3db,_0x22c186){return function(_0x88c93a){if(_0x88c93a){return _0x88c93a[_0x595f('0x2d')](_0x19b3db)[_0x595f('0x18')](function(_0xd5dcfc){return _0xd5dcfc;});}return null;};}function removeEntity(_0x39ea6e,_0xddf130){return function(_0x77123d){if(_0x77123d){return _0x77123d[_0x595f('0x2e')]()['then'](function(){var _0x2ee663=_0x77123d[_0x595f('0x2f')]({'plain':!![]});var _0x4d713f=_0x595f('0x30');return db[_0x595f('0x31')][_0x595f('0x2e')]({'where':{'type':_0x4d713f,'resourceId':_0x2ee663['id']}})[_0x595f('0x18')](function(){return _0x77123d;});})[_0x595f('0x18')](function(){_0x39ea6e[_0x595f('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49d50f,_0x51333a){return function(_0x43fd5f){if(!_0x43fd5f){_0x49d50f['sendStatus'](0x194);}return _0x43fd5f;};}function handleError(_0x1caa85,_0x2ea12a){_0x2ea12a=_0x2ea12a||0x1f4;return function(_0x28225e){logger[_0x595f('0x1c')](_0x28225e['stack']);if(_0x28225e[_0x595f('0x32')]){delete _0x28225e['name'];}_0x1caa85[_0x595f('0x23')](_0x2ea12a)[_0x595f('0x33')](_0x28225e);};}exports['index']=function(_0xc613c4,_0x27b04e){var _0x1f99f9={},_0x1d8c24={},_0x426446={'count':0x0,'rows':[]};var _0x2a4fb1=_[_0x595f('0x34')](db[_0x595f('0x35')][_0x595f('0x36')],function(_0x806516){return{'name':_0x806516[_0x595f('0x37')],'type':_0x806516[_0x595f('0x38')][_0x595f('0x39')]};});_0x1d8c24[_0x595f('0x3a')]=_[_0x595f('0x34')](_0x2a4fb1,_0x595f('0x32'));_0x1d8c24[_0x595f('0x3b')]=_[_0x595f('0x3c')](_0xc613c4[_0x595f('0x3b')]);_0x1d8c24[_0x595f('0x3d')]=_[_0x595f('0x3e')](_0x1d8c24[_0x595f('0x3a')],_0x1d8c24[_0x595f('0x3b')]);_0x1f99f9[_0x595f('0x3f')]=_[_0x595f('0x3e')](_0x1d8c24['model'],qs['fields'](_0xc613c4[_0x595f('0x3b')][_0x595f('0x40')]));_0x1f99f9[_0x595f('0x3f')]=_0x1f99f9[_0x595f('0x3f')][_0x595f('0x41')]?_0x1f99f9[_0x595f('0x3f')]:_0x1d8c24[_0x595f('0x3a')];if(!_0xc613c4[_0x595f('0x3b')][_0x595f('0x42')](_0x595f('0x43'))){_0x1f99f9['limit']=qs[_0x595f('0x26')](_0xc613c4[_0x595f('0x3b')]['limit']);_0x1f99f9[_0x595f('0x25')]=qs[_0x595f('0x25')](_0xc613c4[_0x595f('0x3b')]['offset']);}_0x1f99f9[_0x595f('0x44')]=qs['sort'](_0xc613c4[_0x595f('0x3b')]['sort']);_0x1f99f9[_0x595f('0x45')]=qs[_0x595f('0x3d')](_[_0x595f('0x46')](_0xc613c4[_0x595f('0x3b')],_0x1d8c24['filters']),_0x2a4fb1);if(_0xc613c4[_0x595f('0x3b')][_0x595f('0x47')]){_0x1f99f9[_0x595f('0x45')]=_[_0x595f('0x48')](_0x1f99f9[_0x595f('0x45')],{'$or':_['map'](_0x2a4fb1,function(_0x270163){if(_0x270163[_0x595f('0x38')]!==_0x595f('0x49')){var _0x31b197={};_0x31b197[_0x270163[_0x595f('0x32')]]={'$like':'%'+_0xc613c4[_0x595f('0x3b')][_0x595f('0x47')]+'%'};return _0x31b197;}})});}_0x1f99f9=_[_0x595f('0x48')]({},_0x1f99f9,_0xc613c4[_0x595f('0x4a')]);var _0x5dc39c={'where':_0x1f99f9['where']};return db[_0x595f('0x35')][_0x595f('0x28')](_0x5dc39c)[_0x595f('0x18')](function(_0x102534){_0x426446['count']=_0x102534;if(_0xc613c4['query'][_0x595f('0x4b')]){_0x1f99f9[_0x595f('0x4c')]=[{'all':!![]}];}return db[_0x595f('0x35')]['findAll'](_0x1f99f9);})[_0x595f('0x18')](function(_0x3fffb2){_0x426446[_0x595f('0x4d')]=_0x3fffb2;return _0x426446;})[_0x595f('0x18')](respondWithFilteredResult(_0x27b04e,_0x1f99f9))[_0x595f('0x21')](handleError(_0x27b04e,null));};exports['show']=function(_0x549d8e,_0x50b66e){var _0x4c033a={'raw':![],'where':{'id':_0x549d8e['params']['id']}},_0x5f09d0={};_0x5f09d0['model']=_[_0x595f('0x3c')](db[_0x595f('0x35')][_0x595f('0x36')]);_0x5f09d0[_0x595f('0x3b')]=_['keys'](_0x549d8e['query']);_0x5f09d0[_0x595f('0x3d')]=_[_0x595f('0x3e')](_0x5f09d0[_0x595f('0x3a')],_0x5f09d0[_0x595f('0x3b')]);_0x4c033a[_0x595f('0x3f')]=_['intersection'](_0x5f09d0['model'],qs['fields'](_0x549d8e[_0x595f('0x3b')][_0x595f('0x40')]));_0x4c033a[_0x595f('0x3f')]=_0x4c033a[_0x595f('0x3f')]['length']?_0x4c033a[_0x595f('0x3f')]:_0x5f09d0[_0x595f('0x3a')];if(_0x549d8e['query'][_0x595f('0x4b')]){_0x4c033a[_0x595f('0x4c')]=[{'all':!![]}];}_0x4c033a=_['merge']({},_0x4c033a,_0x549d8e['options']);return db['VoiceContext'][_0x595f('0x4e')](_0x4c033a)[_0x595f('0x18')](handleEntityNotFound(_0x50b66e,null))['then'](respondWithResult(_0x50b66e,null))[_0x595f('0x21')](handleError(_0x50b66e,null));};exports[_0x595f('0x4f')]=function(_0x3061fb,_0x5a46ed,_0x422c0f){var _0x1c6c99;return db['VoiceContext'][_0x595f('0x4f')](_0x3061fb[_0x595f('0x50')],{'raw':!![]})['then'](function(_0x502047){_0x1c6c99=_0x502047;return db[_0x595f('0x35')][_0x595f('0x51')]({'raw':!![]});})[_0x595f('0x18')](function(_0x15e8d1){var _0x1f2ba8=fs[_0x595f('0x52')](path['join'](config[_0x595f('0x53')],'server/files/templates/context.ejs'),'utf8');var _0x57d806=ejs[_0x595f('0x54')](_0x1f2ba8,{'contexts':_0x15e8d1||[]});fs[_0x595f('0x55')](_0x595f('0x56'),_0x57d806);})[_0x595f('0x18')](function(){return respondWithRpcPromise(_0x595f('0x57'),_0x595f('0x4f'),{'module':_0x595f('0x58')});})['then'](function(){var _0x1df5b2=_0x3061fb[_0x595f('0x59')][_0x595f('0x2f')]({'plain':!![]});if(!_0x1df5b2)throw new Error(_0x595f('0x5a'));if(_0x1df5b2[_0x595f('0x5b')]===_0x595f('0x59')){var _0x572681=_0x1c6c99[_0x595f('0x2f')]({'plain':!![]});return db[_0x595f('0x5c')][_0x595f('0x4e')]({'where':{'name':'Contexts','userProfileId':_0x1df5b2[_0x595f('0x5d')]},'raw':!![]})['then'](function(_0xc6ae5c){if(_0xc6ae5c&&_0xc6ae5c['autoAssociation']===0x0){return db[_0x595f('0x31')][_0x595f('0x4f')]({'name':_0x572681[_0x595f('0x32')],'resourceId':_0x572681['id'],'type':_0xc6ae5c[_0x595f('0x32')],'sectionId':_0xc6ae5c['id']},{})[_0x595f('0x18')](function(){return _0x1c6c99;});}else{return _0x1c6c99;}})[_0x595f('0x21')](function(_0x468de9){logger[_0x595f('0x1c')](_0x595f('0x5e'),_0x468de9);throw _0x468de9;});}return _0x1c6c99;})[_0x595f('0x18')](respondWithResult(_0x5a46ed,0xc9))['catch'](handleError(_0x5a46ed,null));};exports[_0x595f('0x2d')]=function(_0x45ee29,_0x55a4d5,_0x359994){var _0xc17a62;return db[_0x595f('0x35')][_0x595f('0x4e')]({'where':{'id':_0x45ee29[_0x595f('0x5f')]['id']}})[_0x595f('0x18')](handleEntityNotFound(_0x55a4d5,null))[_0x595f('0x18')](saveUpdates(_0x45ee29[_0x595f('0x50')],null))['then'](function(_0x41e0c1){if(_0x41e0c1){_0xc17a62=_0x41e0c1;return db[_0x595f('0x35')][_0x595f('0x51')]({'raw':!![]});}})['then'](function(_0x53a341){var _0x3ff6ea=fs[_0x595f('0x52')](path[_0x595f('0x60')](config[_0x595f('0x53')],_0x595f('0x61')),'utf8');var _0x10b503=ejs['render'](_0x3ff6ea,{'contexts':_0x53a341||[]});fs[_0x595f('0x55')](_0x595f('0x56'),_0x10b503);})[_0x595f('0x18')](function(){return respondWithRpcPromise('Reload','update',{'module':_0x595f('0x58')});})[_0x595f('0x18')](function(){return _0xc17a62;})['then'](respondWithResult(_0x55a4d5,null))['catch'](handleError(_0x55a4d5,null));};exports[_0x595f('0x2e')]=function(_0x305392,_0x3ac3d7,_0x2ec2bd){var _0x5ee203;return db['VoiceContext'][_0x595f('0x4e')]({'where':{'id':_0x305392['params']['id']}})[_0x595f('0x18')](handleEntityNotFound(_0x3ac3d7,null))[_0x595f('0x18')](removeEntity(_0x3ac3d7,null))[_0x595f('0x18')](function(){return db[_0x595f('0x35')]['findAll']({'raw':!![]});})[_0x595f('0x18')](function(_0x471ea5){var _0x114e3e=fs[_0x595f('0x52')](path['join'](config['root'],'server/files/templates/context.ejs'),_0x595f('0x62'));var _0x5cd8ed=ejs['render'](_0x114e3e,{'contexts':_0x471ea5});fs['writeFileSync'](_0x595f('0x56'),_0x5cd8ed);return respondWithRpcPromise(_0x595f('0x57'),_0x595f('0x2e'),{'module':_0x595f('0x58')});})['catch'](handleError(_0x3ac3d7,null));};
\ No newline at end of file
index caa1be9..0183285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf057=['VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceContext.attributes','exports','define'];(function(_0x441b00,_0x36b2a9){var _0x254172=function(_0x2bf715){while(--_0x2bf715){_0x441b00['push'](_0x441b00['shift']());}};_0x254172(++_0x36b2a9);}(_0xf057,0x16e));var _0x7f05=function(_0x462c17,_0x57357e){_0x462c17=_0x462c17-0x0;var _0x114255=_0xf057[_0x462c17];return _0x114255;};'use strict';var _=require(_0x7f05('0x0'));var util=require(_0x7f05('0x1'));var logger=require(_0x7f05('0x2'))(_0x7f05('0x3'));var moment=require(_0x7f05('0x4'));var BPromise=require(_0x7f05('0x5'));var rp=require(_0x7f05('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7f05('0x7'));var config=require(_0x7f05('0x8'));var attributes=require(_0x7f05('0x9'));module[_0x7f05('0xa')]=function(_0x5b43c6,_0x4d4940){return _0x5b43c6[_0x7f05('0xb')](_0x7f05('0xc'),attributes,{'tableName':_0x7f05('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2129=['util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./voiceContext.attributes','exports','VoiceContext','voice_contexts'];(function(_0x26b308,_0x397dfc){var _0x59478d=function(_0x20b4c4){while(--_0x20b4c4){_0x26b308['push'](_0x26b308['shift']());}};_0x59478d(++_0x397dfc);}(_0x2129,0x1ea));var _0x9212=function(_0x43e918,_0x363513){_0x43e918=_0x43e918-0x0;var _0x1694fd=_0x2129[_0x43e918];return _0x1694fd;};'use strict';var _=require('lodash');var util=require(_0x9212('0x0'));var logger=require(_0x9212('0x1'))('api');var moment=require(_0x9212('0x2'));var BPromise=require(_0x9212('0x3'));var rp=require(_0x9212('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9212('0x5'));var attributes=require(_0x9212('0x6'));module[_0x9212('0x7')]=function(_0x32d5c8,_0x400a5e){return _0x32d5c8['define'](_0x9212('0x8'),attributes,{'tableName':_0x9212('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5754a44..2462667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1053=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0xcf2677,_0x890c0e){var _0x80f8a6=function(_0x435069){while(--_0x435069){_0xcf2677['push'](_0xcf2677['shift']());}};_0x80f8a6(++_0x890c0e);}(_0x1053,0xd5));var _0x3105=function(_0x518b99,_0x4333e4){_0x518b99=_0x518b99-0x0;var _0x45faed=_0x1053[_0x518b99];return _0x45faed;};'use strict';var _=require(_0x3105('0x0'));var util=require(_0x3105('0x1'));var moment=require(_0x3105('0x2'));var BPromise=require(_0x3105('0x3'));var rs=require(_0x3105('0x4'));var fs=require('fs');var Redis=require(_0x3105('0x5'));var db=require(_0x3105('0x6'))['db'];var utils=require(_0x3105('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x3105('0x8'));var jayson=require(_0x3105('0x9'));var client=jayson[_0x3105('0xa')][_0x3105('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a97d7,_0x2ef16e,_0x5454c0){return new BPromise(function(_0x50c9cc,_0x49edb4){return client[_0x3105('0xc')](_0x5a97d7,_0x5454c0)['then'](function(_0x35e9cc){logger[_0x3105('0xd')](_0x3105('0xe'),_0x2ef16e,'request\x20sent');logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x2ef16e,_0x3105('0xf'),JSON['stringify'](_0x35e9cc));if(_0x35e9cc[_0x3105('0x10')]){if(_0x35e9cc[_0x3105('0x10')][_0x3105('0x11')]===0x1f4){logger[_0x3105('0x10')](_0x3105('0xe'),_0x2ef16e,_0x35e9cc[_0x3105('0x10')]['message']);return _0x49edb4(_0x35e9cc['error'][_0x3105('0x12')]);}logger[_0x3105('0x10')](_0x3105('0xe'),_0x2ef16e,_0x35e9cc['error']['message']);return _0x50c9cc(_0x35e9cc[_0x3105('0x10')][_0x3105('0x12')]);}else{logger[_0x3105('0xd')](_0x3105('0xe'),_0x2ef16e,_0x3105('0xf'));_0x50c9cc(_0x35e9cc[_0x3105('0x13')]['message']);}})[_0x3105('0x14')](function(_0x2a3483){logger[_0x3105('0x10')](_0x3105('0xe'),_0x2ef16e,_0x2a3483);_0x49edb4(_0x2a3483);});});}
\ No newline at end of file
+var _0xca1d=['code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xca1d,0x1e6));var _0xdca1=function(_0x23d264,_0x119506){_0x23d264=_0x23d264-0x0;var _0x50aa69=_0xca1d[_0x23d264];return _0x50aa69;};'use strict';var _=require(_0xdca1('0x0'));var util=require(_0xdca1('0x1'));var moment=require(_0xdca1('0x2'));var BPromise=require(_0xdca1('0x3'));var rs=require(_0xdca1('0x4'));var fs=require('fs');var Redis=require(_0xdca1('0x5'));var db=require(_0xdca1('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xdca1('0x7'))(_0xdca1('0x8'));var config=require('../../config/environment');var jayson=require(_0xdca1('0x9'));var client=jayson[_0xdca1('0xa')][_0xdca1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4de495,_0x290b14,_0x124ced){return new BPromise(function(_0x43f029,_0x1837b1){return client[_0xdca1('0xc')](_0x4de495,_0x124ced)['then'](function(_0x319e07){logger[_0xdca1('0xd')](_0xdca1('0xe'),_0x290b14,_0xdca1('0xf'));logger[_0xdca1('0x10')](_0xdca1('0x11'),_0x290b14,'request\x20sent',JSON[_0xdca1('0x12')](_0x319e07));if(_0x319e07[_0xdca1('0x13')]){if(_0x319e07['error'][_0xdca1('0x14')]===0x1f4){logger[_0xdca1('0x13')](_0xdca1('0xe'),_0x290b14,_0x319e07[_0xdca1('0x13')][_0xdca1('0x15')]);return _0x1837b1(_0x319e07[_0xdca1('0x13')]['message']);}logger[_0xdca1('0x13')]('VoiceContext,\x20%s,\x20%s',_0x290b14,_0x319e07[_0xdca1('0x13')][_0xdca1('0x15')]);return _0x43f029(_0x319e07[_0xdca1('0x13')][_0xdca1('0x15')]);}else{logger[_0xdca1('0xd')](_0xdca1('0xe'),_0x290b14,_0xdca1('0xf'));_0x43f029(_0x319e07['result']['message']);}})[_0xdca1('0x16')](function(_0x2f1a03){logger[_0xdca1('0x13')](_0xdca1('0xe'),_0x290b14,_0x2f1a03);_0x1837b1(_0x2f1a03);});});}
\ No newline at end of file
index 6fc5aa9..cf6e044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0269=['put','/:id','update','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','show','post','create'];(function(_0x1265ed,_0x4b85e8){var _0x5ac459=function(_0xf0c114){while(--_0xf0c114){_0x1265ed['push'](_0x1265ed['shift']());}};_0x5ac459(++_0x4b85e8);}(_0x0269,0x135));var _0x9026=function(_0xd6df92,_0x3e8060){_0xd6df92=_0xd6df92-0x0;var _0x5cd33b=_0x0269[_0xd6df92];return _0x5cd33b;};'use strict';var multer=require(_0x9026('0x0'));var util=require('util');var path=require(_0x9026('0x1'));var timeout=require('connect-timeout');var express=require(_0x9026('0x2'));var router=express['Router']();var fs_extra=require(_0x9026('0x3'));var auth=require(_0x9026('0x4'));var interaction=require(_0x9026('0x5'));var config=require(_0x9026('0x6'));var controller=require('./voiceDialReport.controller');router[_0x9026('0x7')]('/',auth[_0x9026('0x8')](),controller['index']);router['get'](_0x9026('0x9'),auth[_0x9026('0x8')](),controller[_0x9026('0xa')]);router[_0x9026('0x7')]('/:id',auth[_0x9026('0x8')](),controller[_0x9026('0xb')]);router[_0x9026('0xc')]('/',auth['isAuthenticated'](),controller[_0x9026('0xd')]);router[_0x9026('0xe')](_0x9026('0xf'),auth['isAuthenticated'](),controller[_0x9026('0x10')]);router['delete'](_0x9026('0xf'),auth[_0x9026('0x8')](),controller[_0x9026('0x11')]);module[_0x9026('0x12')]=router;
\ No newline at end of file
+var _0x2f90=['show','post','create','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x587ba2,_0x42eb40){var _0x50ec73=function(_0x2f32e3){while(--_0x2f32e3){_0x587ba2['push'](_0x587ba2['shift']());}};_0x50ec73(++_0x42eb40);}(_0x2f90,0x1e9));var _0x02f9=function(_0x396b3f,_0x15a716){_0x396b3f=_0x396b3f-0x0;var _0x183f02=_0x2f90[_0x396b3f];return _0x183f02;};'use strict';var multer=require('multer');var util=require(_0x02f9('0x0'));var path=require(_0x02f9('0x1'));var timeout=require(_0x02f9('0x2'));var express=require(_0x02f9('0x3'));var router=express[_0x02f9('0x4')]();var fs_extra=require(_0x02f9('0x5'));var auth=require(_0x02f9('0x6'));var interaction=require(_0x02f9('0x7'));var config=require(_0x02f9('0x8'));var controller=require('./voiceDialReport.controller');router[_0x02f9('0x9')]('/',auth[_0x02f9('0xa')](),controller[_0x02f9('0xb')]);router['get'](_0x02f9('0xc'),auth['isAuthenticated'](),controller[_0x02f9('0xd')]);router[_0x02f9('0x9')](_0x02f9('0xe'),auth[_0x02f9('0xa')](),controller[_0x02f9('0xf')]);router[_0x02f9('0x10')]('/',auth[_0x02f9('0xa')](),controller[_0x02f9('0x11')]);router[_0x02f9('0x12')](_0x02f9('0xe'),auth[_0x02f9('0xa')](),controller[_0x02f9('0x13')]);router['delete'](_0x02f9('0xe'),auth[_0x02f9('0xa')](),controller['destroy']);module[_0x02f9('0x14')]=router;
\ No newline at end of file
index 1423232..1576a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['INTEGER','DATE','sequelize','exports','STRING'];(function(_0x3dd991,_0x4bef12){var _0x251609=function(_0x371481){while(--_0x371481){_0x3dd991['push'](_0x3dd991['shift']());}};_0x251609(++_0x4bef12);}(_0x8ef6,0xf2));var _0x68ef=function(_0x444fa9,_0x27c1f7){_0x444fa9=_0x444fa9-0x0;var _0x455a79=_0x8ef6[_0x444fa9];return _0x455a79;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'privilege':{'type':Sequelize[_0x68ef('0x2')]},'channel':{'type':Sequelize[_0x68ef('0x2')]},'channelstate':{'type':Sequelize[_0x68ef('0x3')]},'channelstatedesc':{'type':Sequelize[_0x68ef('0x2')]},'calleridnum':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x68ef('0x2')]},'connectedlinename':{'type':Sequelize[_0x68ef('0x2')]},'language':{'type':Sequelize[_0x68ef('0x2')]},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x68ef('0x3')]},'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'linkedid':{'type':Sequelize[_0x68ef('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x68ef('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x68ef('0x2')]},'destcalleridnum':{'type':Sequelize[_0x68ef('0x2')]},'destcalleridname':{'type':Sequelize[_0x68ef('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x68ef('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x68ef('0x2')]},'destlanguage':{'type':Sequelize[_0x68ef('0x2')]},'destaccountcode':{'type':Sequelize[_0x68ef('0x2')]},'destcontext':{'type':Sequelize[_0x68ef('0x2')]},'destexten':{'type':Sequelize[_0x68ef('0x2')]},'destpriority':{'type':Sequelize[_0x68ef('0x3')]},'destuniqueid':{'type':Sequelize[_0x68ef('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x68ef('0x2')]},'dialstatus':{'type':Sequelize[_0x68ef('0x2')]},'starttime':{'type':Sequelize[_0x68ef('0x4')]},'answertime':{'type':Sequelize[_0x68ef('0x4')]},'endtime':{'type':Sequelize[_0x68ef('0x4')]},'lastevent':{'type':Sequelize[_0x68ef('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x68ef('0x3')]},'duration':{'type':Sequelize[_0x68ef('0x3')]},'holdtime':{'type':Sequelize[_0x68ef('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x55ca=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x2be7d6,_0x26d443){var _0xa44132=function(_0x40e9bb){while(--_0x40e9bb){_0x2be7d6['push'](_0x2be7d6['shift']());}};_0xa44132(++_0x26d443);}(_0x55ca,0x126));var _0xa55c=function(_0x335f37,_0x37302b){_0x335f37=_0x335f37-0x0;var _0x1768f4=_0x55ca[_0x335f37];return _0x1768f4;};'use strict';var Sequelize=require(_0xa55c('0x0'));module[_0xa55c('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'calleridnum':{'type':Sequelize[_0xa55c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xa55c('0x2')]},'connectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'language':{'type':Sequelize[_0xa55c('0x2')]},'accountcode':{'type':Sequelize[_0xa55c('0x2')]},'context':{'type':Sequelize[_0xa55c('0x2')]},'exten':{'type':Sequelize[_0xa55c('0x2')]},'priority':{'type':Sequelize[_0xa55c('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xa55c('0x2')]},'destchannel':{'type':Sequelize[_0xa55c('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridnum':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'destlanguage':{'type':Sequelize[_0xa55c('0x2')]},'destaccountcode':{'type':Sequelize[_0xa55c('0x2')]},'destcontext':{'type':Sequelize[_0xa55c('0x2')]},'destexten':{'type':Sequelize[_0xa55c('0x2')]},'destpriority':{'type':Sequelize[_0xa55c('0x3')]},'destuniqueid':{'type':Sequelize[_0xa55c('0x2')]},'destlinkedid':{'type':Sequelize[_0xa55c('0x2')]},'dialstring':{'type':Sequelize[_0xa55c('0x2')]},'dialstatus':{'type':Sequelize[_0xa55c('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xa55c('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xa55c('0x3')]},'holdtime':{'type':Sequelize[_0xa55c('0x3')]},'billableseconds':{'type':Sequelize[_0xa55c('0x3')]}};
\ No newline at end of file
index 52c9f25..10d8f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a4f=['catch','params','keys','length','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','limit','count','offset','apply','update','then','destroy','error','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','rows'];(function(_0x41a8ce,_0x57fd7a){var _0x472459=function(_0x3e55f7){while(--_0x3e55f7){_0x41a8ce['push'](_0x41a8ce['shift']());}};_0x472459(++_0x57fd7a);}(_0x8a4f,0x161));var _0xf8a4=function(_0x4cf76b,_0x5a46a0){_0x4cf76b=_0x4cf76b-0x0;var _0x1b916f=_0x8a4f[_0x4cf76b];return _0x1b916f;};'use strict';var emlformat=require(_0xf8a4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf8a4('0x1'));var rp=require(_0xf8a4('0x2'));var moment=require(_0xf8a4('0x3'));var BPromise=require(_0xf8a4('0x4'));var Mustache=require(_0xf8a4('0x5'));var util=require(_0xf8a4('0x6'));var path=require(_0xf8a4('0x7'));var sox=require(_0xf8a4('0x8'));var csv=require('to-csv');var ejs=require(_0xf8a4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf8a4('0xa'));var squel=require(_0xf8a4('0xb'));var crypto=require('crypto');var jsforce=require(_0xf8a4('0xc'));var deskjs=require(_0xf8a4('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf8a4('0xe'));var Papa=require(_0xf8a4('0xf'));var Redis=require(_0xf8a4('0x10'));var authService=require(_0xf8a4('0x11'));var qs=require(_0xf8a4('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf8a4('0x13'))(_0xf8a4('0x14'));var utils=require('../../config/utils');var config=require(_0xf8a4('0x15'));var licenseUtil=require(_0xf8a4('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38e3b9,_0x4605e3){_0x4605e3=_0x4605e3||0xcc;return function(_0x558257){if(_0x558257){return _0x38e3b9['sendStatus'](_0x4605e3);}return _0x38e3b9[_0xf8a4('0x17')](_0x4605e3)[_0xf8a4('0x18')]();};}function respondWithResult(_0x337f0f,_0x3a2e61){_0x3a2e61=_0x3a2e61||0xc8;return function(_0x36cdac){if(_0x36cdac){return _0x337f0f[_0xf8a4('0x17')](_0x3a2e61)[_0xf8a4('0x19')](_0x36cdac);}};}function respondWithFilteredResult(_0x42f698,_0x57c0e){return function(_0x56378f){if(_0x56378f){var _0x16e0d2=typeof _0x57c0e['offset']==='undefined'&&typeof _0x57c0e[_0xf8a4('0x1a')]==='undefined';var _0x594a26=_0x56378f[_0xf8a4('0x1b')];var _0x4eade8=_0x16e0d2?0x0:_0x57c0e[_0xf8a4('0x1c')];var _0x25549a=_0x16e0d2?_0x56378f[_0xf8a4('0x1b')]:_0x57c0e['offset']+_0x57c0e['limit'];var _0x467eb7;if(_0x25549a>=_0x594a26){_0x25549a=_0x594a26;_0x467eb7=0xc8;}else{_0x467eb7=0xce;}_0x42f698[_0xf8a4('0x17')](_0x467eb7);return _0x42f698['set']('Content-Range',_0x4eade8+'-'+_0x25549a+'/'+_0x594a26)[_0xf8a4('0x19')](_0x56378f);}return null;};}function patchUpdates(_0x27a67e){return function(_0x300196){try{jsonpatch[_0xf8a4('0x1d')](_0x300196,_0x27a67e,!![]);}catch(_0x4067af){return BPromise['reject'](_0x4067af);}return _0x300196['save']();};}function saveUpdates(_0x1e63e1,_0x6a3a7b){return function(_0x27185d){if(_0x27185d){return _0x27185d[_0xf8a4('0x1e')](_0x1e63e1)[_0xf8a4('0x1f')](function(_0x2c691d){return _0x2c691d;});}return null;};}function removeEntity(_0x314b7e,_0x23d08f){return function(_0x27d758){if(_0x27d758){return _0x27d758[_0xf8a4('0x20')]()[_0xf8a4('0x1f')](function(){_0x314b7e[_0xf8a4('0x17')](0xcc)[_0xf8a4('0x18')]();});}};}function handleEntityNotFound(_0x5745c2,_0x19b644){return function(_0x5defe3){if(!_0x5defe3){_0x5745c2['sendStatus'](0x194);}return _0x5defe3;};}function handleError(_0x3a0075,_0x19404b){_0x19404b=_0x19404b||0x1f4;return function(_0x46bc87){logger[_0xf8a4('0x21')](_0x46bc87['stack']);if(_0x46bc87[_0xf8a4('0x22')]){delete _0x46bc87['name'];}_0x3a0075['status'](_0x19404b)[_0xf8a4('0x23')](_0x46bc87);};}exports[_0xf8a4('0x24')]=function(_0x2f3110,_0x49f238){var _0x2f4518={},_0x15635d={},_0x1d7a71={'count':0x0,'rows':[]};var _0x597f88=_[_0xf8a4('0x25')](db[_0xf8a4('0x26')][_0xf8a4('0x27')],function(_0x201e73){return{'name':_0x201e73[_0xf8a4('0x28')],'type':_0x201e73['type'][_0xf8a4('0x29')]};});_0x15635d[_0xf8a4('0x2a')]=_['map'](_0x597f88,_0xf8a4('0x22'));_0x15635d[_0xf8a4('0x2b')]=_['keys'](_0x2f3110[_0xf8a4('0x2b')]);_0x15635d[_0xf8a4('0x2c')]=_[_0xf8a4('0x2d')](_0x15635d[_0xf8a4('0x2a')],_0x15635d[_0xf8a4('0x2b')]);_0x2f4518[_0xf8a4('0x2e')]=_[_0xf8a4('0x2d')](_0x15635d['model'],qs[_0xf8a4('0x2f')](_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x2f')]));_0x2f4518['attributes']=_0x2f4518[_0xf8a4('0x2e')]['length']?_0x2f4518[_0xf8a4('0x2e')]:_0x15635d[_0xf8a4('0x2a')];if(!_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x30')](_0xf8a4('0x31'))){_0x2f4518[_0xf8a4('0x1a')]=qs['limit'](_0x2f3110[_0xf8a4('0x2b')]['limit']);_0x2f4518['offset']=qs['offset'](_0x2f3110['query'][_0xf8a4('0x1c')]);}_0x2f4518[_0xf8a4('0x32')]=qs[_0xf8a4('0x33')](_0x2f3110['query'][_0xf8a4('0x33')]);_0x2f4518['where']=qs['filters'](_['pick'](_0x2f3110['query'],_0x15635d[_0xf8a4('0x2c')]),_0x597f88);if(_0x2f3110[_0xf8a4('0x2b')]['filter']){_0x2f4518[_0xf8a4('0x34')]=_[_0xf8a4('0x35')](_0x2f4518[_0xf8a4('0x34')],{'$or':_['map'](_0x597f88,function(_0x43cc8d){if(_0x43cc8d[_0xf8a4('0x36')]!==_0xf8a4('0x37')){var _0x30f5f4={};_0x30f5f4[_0x43cc8d[_0xf8a4('0x22')]]={'$like':'%'+_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x38')]+'%'};return _0x30f5f4;}})});}_0x2f4518=_[_0xf8a4('0x35')]({},_0x2f4518,_0x2f3110[_0xf8a4('0x39')]);var _0xac628b={'where':_0x2f4518[_0xf8a4('0x34')]};return db[_0xf8a4('0x26')][_0xf8a4('0x1b')](_0xac628b)['then'](function(_0x36ea9e){_0x1d7a71[_0xf8a4('0x1b')]=_0x36ea9e;if(_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x3a')]){_0x2f4518[_0xf8a4('0x3b')]=[{'all':!![]}];}return db[_0xf8a4('0x26')]['findAll'](_0x2f4518);})[_0xf8a4('0x1f')](function(_0x4837a5){_0x1d7a71[_0xf8a4('0x3c')]=_0x4837a5;return _0x1d7a71;})[_0xf8a4('0x1f')](respondWithFilteredResult(_0x49f238,_0x2f4518))[_0xf8a4('0x3d')](handleError(_0x49f238,null));};exports['show']=function(_0x4eab7d,_0x3012e6){var _0x416030={'raw':!![],'where':{'id':_0x4eab7d[_0xf8a4('0x3e')]['id']}},_0x2e1d73={};_0x2e1d73[_0xf8a4('0x2a')]=_[_0xf8a4('0x3f')](db['VoiceDialReport'][_0xf8a4('0x27')]);_0x2e1d73['query']=_[_0xf8a4('0x3f')](_0x4eab7d[_0xf8a4('0x2b')]);_0x2e1d73[_0xf8a4('0x2c')]=_[_0xf8a4('0x2d')](_0x2e1d73[_0xf8a4('0x2a')],_0x2e1d73[_0xf8a4('0x2b')]);_0x416030['attributes']=_[_0xf8a4('0x2d')](_0x2e1d73[_0xf8a4('0x2a')],qs[_0xf8a4('0x2f')](_0x4eab7d[_0xf8a4('0x2b')]['fields']));_0x416030['attributes']=_0x416030[_0xf8a4('0x2e')][_0xf8a4('0x40')]?_0x416030[_0xf8a4('0x2e')]:_0x2e1d73[_0xf8a4('0x2a')];if(_0x4eab7d[_0xf8a4('0x2b')][_0xf8a4('0x3a')]){_0x416030[_0xf8a4('0x3b')]=[{'all':!![]}];}_0x416030=_[_0xf8a4('0x35')]({},_0x416030,_0x4eab7d['options']);return db[_0xf8a4('0x26')][_0xf8a4('0x41')](_0x416030)['then'](handleEntityNotFound(_0x3012e6,null))[_0xf8a4('0x1f')](respondWithResult(_0x3012e6,null))['catch'](handleError(_0x3012e6,null));};exports[_0xf8a4('0x42')]=function(_0xfe6c85,_0x36611d){return db[_0xf8a4('0x26')][_0xf8a4('0x42')](_0xfe6c85['body'],{})[_0xf8a4('0x1f')](respondWithResult(_0x36611d,0xc9))['catch'](handleError(_0x36611d,null));};exports[_0xf8a4('0x1e')]=function(_0x2b3b9b,_0x293a51){if(_0x2b3b9b[_0xf8a4('0x43')]['id']){delete _0x2b3b9b[_0xf8a4('0x43')]['id'];}return db[_0xf8a4('0x26')][_0xf8a4('0x41')]({'where':{'id':_0x2b3b9b[_0xf8a4('0x3e')]['id']}})['then'](handleEntityNotFound(_0x293a51,null))[_0xf8a4('0x1f')](saveUpdates(_0x2b3b9b['body'],null))[_0xf8a4('0x1f')](respondWithResult(_0x293a51,null))[_0xf8a4('0x3d')](handleError(_0x293a51,null));};exports[_0xf8a4('0x20')]=function(_0x538725,_0x486a53){return db[_0xf8a4('0x26')][_0xf8a4('0x41')]({'where':{'id':_0x538725[_0xf8a4('0x3e')]['id']}})[_0xf8a4('0x1f')](handleEntityNotFound(_0x486a53,null))[_0xf8a4('0x1f')](removeEntity(_0x486a53,null))['catch'](handleError(_0x486a53,null));};exports[_0xf8a4('0x44')]=function(_0x4994dc,_0x4d39e6){return db[_0xf8a4('0x26')]['describe']()[_0xf8a4('0x1f')](respondWithResult(_0x4d39e6,null))[_0xf8a4('0x3d')](handleError(_0x4d39e6,null));};
\ No newline at end of file
+var _0xa929=['then','destroy','error','stack','name','send','VoiceDialReport','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','type','VIRTUAL','where','includeAll','include','rows','params','keys','options','create','body','find','catch','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update'];(function(_0x36633d,_0x2b0962){var _0x42aff9=function(_0x4ebd85){while(--_0x4ebd85){_0x36633d['push'](_0x36633d['shift']());}};_0x42aff9(++_0x2b0962);}(_0xa929,0x194));var _0x9a92=function(_0x283885,_0x25d3ec){_0x283885=_0x283885-0x0;var _0x52bc98=_0xa929[_0x283885];return _0x52bc98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a92('0x0'));var zipdir=require(_0x9a92('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a92('0x2'));var moment=require('moment');var BPromise=require(_0x9a92('0x3'));var Mustache=require(_0x9a92('0x4'));var util=require(_0x9a92('0x5'));var path=require('path');var sox=require(_0x9a92('0x6'));var csv=require(_0x9a92('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9a92('0x8'));var squel=require(_0x9a92('0x9'));var crypto=require(_0x9a92('0xa'));var jsforce=require(_0x9a92('0xb'));var deskjs=require(_0x9a92('0xc'));var toCsv=require(_0x9a92('0x7'));var querystring=require(_0x9a92('0xd'));var Papa=require('papaparse');var Redis=require(_0x9a92('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9a92('0xf'));var logger=require(_0x9a92('0x10'))(_0x9a92('0x11'));var utils=require(_0x9a92('0x12'));var config=require(_0x9a92('0x13'));var licenseUtil=require(_0x9a92('0x14'));var db=require(_0x9a92('0x15'))['db'];function respondWithStatusCode(_0x149ceb,_0x42f3eb){_0x42f3eb=_0x42f3eb||0xcc;return function(_0x2351ec){if(_0x2351ec){return _0x149ceb[_0x9a92('0x16')](_0x42f3eb);}return _0x149ceb[_0x9a92('0x17')](_0x42f3eb)[_0x9a92('0x18')]();};}function respondWithResult(_0x57ea3a,_0x54d86a){_0x54d86a=_0x54d86a||0xc8;return function(_0x24436d){if(_0x24436d){return _0x57ea3a[_0x9a92('0x17')](_0x54d86a)[_0x9a92('0x19')](_0x24436d);}};}function respondWithFilteredResult(_0x470b,_0x10704c){return function(_0x137dac){if(_0x137dac){var _0x144dad=typeof _0x10704c[_0x9a92('0x1a')]===_0x9a92('0x1b')&&typeof _0x10704c[_0x9a92('0x1c')]===_0x9a92('0x1b');var _0x211c74=_0x137dac[_0x9a92('0x1d')];var _0x5e12e4=_0x144dad?0x0:_0x10704c['offset'];var _0x55c550=_0x144dad?_0x137dac['count']:_0x10704c[_0x9a92('0x1a')]+_0x10704c[_0x9a92('0x1c')];var _0x332101;if(_0x55c550>=_0x211c74){_0x55c550=_0x211c74;_0x332101=0xc8;}else{_0x332101=0xce;}_0x470b[_0x9a92('0x17')](_0x332101);return _0x470b[_0x9a92('0x1e')](_0x9a92('0x1f'),_0x5e12e4+'-'+_0x55c550+'/'+_0x211c74)[_0x9a92('0x19')](_0x137dac);}return null;};}function patchUpdates(_0x552b70){return function(_0x532da5){try{jsonpatch[_0x9a92('0x20')](_0x532da5,_0x552b70,!![]);}catch(_0x4b7411){return BPromise['reject'](_0x4b7411);}return _0x532da5['save']();};}function saveUpdates(_0x1ef682,_0x66a38){return function(_0x45685c){if(_0x45685c){return _0x45685c[_0x9a92('0x21')](_0x1ef682)[_0x9a92('0x22')](function(_0x5001f9){return _0x5001f9;});}return null;};}function removeEntity(_0x27ab5b,_0x15e962){return function(_0x3d3629){if(_0x3d3629){return _0x3d3629[_0x9a92('0x23')]()[_0x9a92('0x22')](function(){_0x27ab5b[_0x9a92('0x17')](0xcc)[_0x9a92('0x18')]();});}};}function handleEntityNotFound(_0x49c254,_0x9e6723){return function(_0x4f3fd3){if(!_0x4f3fd3){_0x49c254[_0x9a92('0x16')](0x194);}return _0x4f3fd3;};}function handleError(_0x2fc621,_0x2263e2){_0x2263e2=_0x2263e2||0x1f4;return function(_0x41c8f0){logger[_0x9a92('0x24')](_0x41c8f0[_0x9a92('0x25')]);if(_0x41c8f0['name']){delete _0x41c8f0[_0x9a92('0x26')];}_0x2fc621['status'](_0x2263e2)[_0x9a92('0x27')](_0x41c8f0);};}exports['index']=function(_0x488795,_0x563aee){var _0xd617a2={},_0x359515={},_0x1771e5={'count':0x0,'rows':[]};var _0x114935=_['map'](db[_0x9a92('0x28')][_0x9a92('0x29')],function(_0x5ed2c0){return{'name':_0x5ed2c0[_0x9a92('0x2a')],'type':_0x5ed2c0['type'][_0x9a92('0x2b')]};});_0x359515[_0x9a92('0x2c')]=_[_0x9a92('0x2d')](_0x114935,'name');_0x359515[_0x9a92('0x2e')]=_['keys'](_0x488795[_0x9a92('0x2e')]);_0x359515[_0x9a92('0x2f')]=_[_0x9a92('0x30')](_0x359515[_0x9a92('0x2c')],_0x359515['query']);_0xd617a2[_0x9a92('0x31')]=_['intersection'](_0x359515[_0x9a92('0x2c')],qs[_0x9a92('0x32')](_0x488795[_0x9a92('0x2e')]['fields']));_0xd617a2[_0x9a92('0x31')]=_0xd617a2[_0x9a92('0x31')][_0x9a92('0x33')]?_0xd617a2[_0x9a92('0x31')]:_0x359515[_0x9a92('0x2c')];if(!_0x488795[_0x9a92('0x2e')][_0x9a92('0x34')](_0x9a92('0x35'))){_0xd617a2[_0x9a92('0x1c')]=qs['limit'](_0x488795[_0x9a92('0x2e')][_0x9a92('0x1c')]);_0xd617a2[_0x9a92('0x1a')]=qs[_0x9a92('0x1a')](_0x488795['query'][_0x9a92('0x1a')]);}_0xd617a2[_0x9a92('0x36')]=qs[_0x9a92('0x37')](_0x488795[_0x9a92('0x2e')]['sort']);_0xd617a2['where']=qs[_0x9a92('0x2f')](_[_0x9a92('0x38')](_0x488795[_0x9a92('0x2e')],_0x359515[_0x9a92('0x2f')]),_0x114935);if(_0x488795[_0x9a92('0x2e')][_0x9a92('0x39')]){_0xd617a2['where']=_[_0x9a92('0x3a')](_0xd617a2['where'],{'$or':_[_0x9a92('0x2d')](_0x114935,function(_0x46b7ad){if(_0x46b7ad[_0x9a92('0x3b')]!==_0x9a92('0x3c')){var _0x155c33={};_0x155c33[_0x46b7ad[_0x9a92('0x26')]]={'$like':'%'+_0x488795[_0x9a92('0x2e')][_0x9a92('0x39')]+'%'};return _0x155c33;}})});}_0xd617a2=_['merge']({},_0xd617a2,_0x488795['options']);var _0x564801={'where':_0xd617a2[_0x9a92('0x3d')]};return db[_0x9a92('0x28')][_0x9a92('0x1d')](_0x564801)[_0x9a92('0x22')](function(_0x340934){_0x1771e5[_0x9a92('0x1d')]=_0x340934;if(_0x488795[_0x9a92('0x2e')][_0x9a92('0x3e')]){_0xd617a2[_0x9a92('0x3f')]=[{'all':!![]}];}return db['VoiceDialReport']['findAll'](_0xd617a2);})[_0x9a92('0x22')](function(_0x2ef0e8){_0x1771e5[_0x9a92('0x40')]=_0x2ef0e8;return _0x1771e5;})[_0x9a92('0x22')](respondWithFilteredResult(_0x563aee,_0xd617a2))['catch'](handleError(_0x563aee,null));};exports['show']=function(_0x36dff8,_0x524c11){var _0x544792={'raw':!![],'where':{'id':_0x36dff8[_0x9a92('0x41')]['id']}},_0x481f4b={};_0x481f4b['model']=_[_0x9a92('0x42')](db['VoiceDialReport'][_0x9a92('0x29')]);_0x481f4b[_0x9a92('0x2e')]=_['keys'](_0x36dff8[_0x9a92('0x2e')]);_0x481f4b[_0x9a92('0x2f')]=_[_0x9a92('0x30')](_0x481f4b[_0x9a92('0x2c')],_0x481f4b[_0x9a92('0x2e')]);_0x544792['attributes']=_[_0x9a92('0x30')](_0x481f4b[_0x9a92('0x2c')],qs['fields'](_0x36dff8[_0x9a92('0x2e')][_0x9a92('0x32')]));_0x544792[_0x9a92('0x31')]=_0x544792[_0x9a92('0x31')][_0x9a92('0x33')]?_0x544792['attributes']:_0x481f4b['model'];if(_0x36dff8[_0x9a92('0x2e')][_0x9a92('0x3e')]){_0x544792[_0x9a92('0x3f')]=[{'all':!![]}];}_0x544792=_[_0x9a92('0x3a')]({},_0x544792,_0x36dff8[_0x9a92('0x43')]);return db[_0x9a92('0x28')]['find'](_0x544792)[_0x9a92('0x22')](handleEntityNotFound(_0x524c11,null))['then'](respondWithResult(_0x524c11,null))['catch'](handleError(_0x524c11,null));};exports[_0x9a92('0x44')]=function(_0x1444cc,_0x5ce844){return db[_0x9a92('0x28')]['create'](_0x1444cc[_0x9a92('0x45')],{})[_0x9a92('0x22')](respondWithResult(_0x5ce844,0xc9))['catch'](handleError(_0x5ce844,null));};exports['update']=function(_0x530c92,_0x4c5a03){if(_0x530c92[_0x9a92('0x45')]['id']){delete _0x530c92['body']['id'];}return db[_0x9a92('0x28')][_0x9a92('0x46')]({'where':{'id':_0x530c92[_0x9a92('0x41')]['id']}})[_0x9a92('0x22')](handleEntityNotFound(_0x4c5a03,null))['then'](saveUpdates(_0x530c92[_0x9a92('0x45')],null))[_0x9a92('0x22')](respondWithResult(_0x4c5a03,null))[_0x9a92('0x47')](handleError(_0x4c5a03,null));};exports['destroy']=function(_0x1abc20,_0x14e3a8){return db[_0x9a92('0x28')][_0x9a92('0x46')]({'where':{'id':_0x1abc20[_0x9a92('0x41')]['id']}})['then'](handleEntityNotFound(_0x14e3a8,null))[_0x9a92('0x22')](removeEntity(_0x14e3a8,null))['catch'](handleError(_0x14e3a8,null));};exports[_0x9a92('0x48')]=function(_0x3d1148,_0x27da64){return db[_0x9a92('0x28')][_0x9a92('0x48')]()[_0x9a92('0x22')](respondWithResult(_0x27da64,null))[_0x9a92('0x47')](handleError(_0x27da64,null));};
\ No newline at end of file
index 34664cc..cf26de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cde=['VoiceDialReport','report_dial','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceDialReport.attributes','define'];(function(_0x23e337,_0x1e3c57){var _0x45facf=function(_0x2abfa3){while(--_0x2abfa3){_0x23e337['push'](_0x23e337['shift']());}};_0x45facf(++_0x1e3c57);}(_0x1cde,0x1f1));var _0xe1cd=function(_0x12b938,_0x453109){_0x12b938=_0x12b938-0x0;var _0x46093b=_0x1cde[_0x12b938];return _0x46093b;};'use strict';var _=require('lodash');var util=require(_0xe1cd('0x0'));var logger=require(_0xe1cd('0x1'))(_0xe1cd('0x2'));var moment=require(_0xe1cd('0x3'));var BPromise=require(_0xe1cd('0x4'));var rp=require(_0xe1cd('0x5'));var fs=require('fs');var path=require(_0xe1cd('0x6'));var rimraf=require('rimraf');var config=require(_0xe1cd('0x7'));var attributes=require(_0xe1cd('0x8'));module['exports']=function(_0x2d11d3,_0x2580e8){return _0x2d11d3[_0xe1cd('0x9')](_0xe1cd('0xa'),attributes,{'tableName':_0xe1cd('0xb'),'paranoid':![],'indexes':[{'fields':[_0xe1cd('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1daf=['rimraf','../../config/environment','./voiceDialReport.attributes','VoiceDialReport','report_dial','uniqueid','lodash','api','moment','bluebird','path'];(function(_0xfed4dd,_0x36bef9){var _0xf3bcfc=function(_0x52641a){while(--_0x52641a){_0xfed4dd['push'](_0xfed4dd['shift']());}};_0xf3bcfc(++_0x36bef9);}(_0x1daf,0x17c));var _0xf1da=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x1daf[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xf1da('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf1da('0x1'));var moment=require(_0xf1da('0x2'));var BPromise=require(_0xf1da('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf1da('0x4'));var rimraf=require(_0xf1da('0x5'));var config=require(_0xf1da('0x6'));var attributes=require(_0xf1da('0x7'));module['exports']=function(_0x10188,_0x5d5cd9){return _0x10188['define'](_0xf1da('0x8'),attributes,{'tableName':_0xf1da('0x9'),'paranoid':![],'indexes':[{'fields':[_0xf1da('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index a3d6785..21f8a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b0=['CreateVoiceDialReport','VoiceDialReport','create','body','options','UpdateVoiceDialReport','update','raw','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xd3b0,0x1f4));var _0x0d3b=function(_0x10c15e,_0x20d272){_0x10c15e=_0x10c15e-0x0;var _0x1c1600=_0xd3b0[_0x10c15e];return _0x1c1600;};'use strict';var _=require(_0x0d3b('0x0'));var util=require(_0x0d3b('0x1'));var moment=require(_0x0d3b('0x2'));var BPromise=require(_0x0d3b('0x3'));var rs=require(_0x0d3b('0x4'));var fs=require('fs');var Redis=require(_0x0d3b('0x5'));var db=require(_0x0d3b('0x6'))['db'];var utils=require(_0x0d3b('0x7'));var logger=require(_0x0d3b('0x8'))(_0x0d3b('0x9'));var config=require(_0x0d3b('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0d3b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3eafc8,_0x2c6f6f,_0x36d0ab){return new BPromise(function(_0xd5d10b,_0x1a0b63){return client[_0x0d3b('0xc')](_0x3eafc8,_0x36d0ab)[_0x0d3b('0xd')](function(_0x51dca2){logger['info'](_0x0d3b('0xe'),_0x2c6f6f,_0x0d3b('0xf'));logger[_0x0d3b('0x10')](_0x0d3b('0x11'),_0x2c6f6f,_0x0d3b('0xf'),JSON[_0x0d3b('0x12')](_0x51dca2));if(_0x51dca2[_0x0d3b('0x13')]){if(_0x51dca2[_0x0d3b('0x13')][_0x0d3b('0x14')]===0x1f4){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x2c6f6f,_0x51dca2[_0x0d3b('0x13')]['message']);return _0x1a0b63(_0x51dca2[_0x0d3b('0x13')][_0x0d3b('0x15')]);}logger['error'](_0x0d3b('0xe'),_0x2c6f6f,_0x51dca2['error'][_0x0d3b('0x15')]);return _0xd5d10b(_0x51dca2[_0x0d3b('0x13')]['message']);}else{logger[_0x0d3b('0x16')](_0x0d3b('0xe'),_0x2c6f6f,'request\x20sent');_0xd5d10b(_0x51dca2[_0x0d3b('0x17')][_0x0d3b('0x15')]);}})[_0x0d3b('0x18')](function(_0x329f2c){logger[_0x0d3b('0x13')](_0x0d3b('0xe'),_0x2c6f6f,_0x329f2c);_0x1a0b63(_0x329f2c);});});}exports[_0x0d3b('0x19')]=function(_0x47cd07){var _0xe34a8c=this;return new Promise(function(_0x3283c0,_0x7e1af5){return db[_0x0d3b('0x1a')][_0x0d3b('0x1b')](_0x47cd07[_0x0d3b('0x1c')],{'raw':_0x47cd07[_0x0d3b('0x1d')]?_0x47cd07[_0x0d3b('0x1d')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xb3be12){logger['info'](_0x0d3b('0x19'),_0x47cd07);logger[_0x0d3b('0x10')](_0x0d3b('0x19'),_0x47cd07,JSON[_0x0d3b('0x12')](_0xb3be12));_0x3283c0(_0xb3be12);})[_0x0d3b('0x18')](function(_0x300c44){logger['error'](_0x0d3b('0x19'),_0x300c44[_0x0d3b('0x15')],_0x47cd07);_0x7e1af5(_0xe34a8c[_0x0d3b('0x13')](0x1f4,_0x300c44[_0x0d3b('0x15')]));});});};exports[_0x0d3b('0x1e')]=function(_0x2eb6a1){var _0x13acf8=this;return new Promise(function(_0x539f6a,_0xac6bab){return db['VoiceDialReport'][_0x0d3b('0x1f')](_0x2eb6a1[_0x0d3b('0x1c')],{'raw':_0x2eb6a1['options']?_0x2eb6a1['options'][_0x0d3b('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2eb6a1[_0x0d3b('0x1d')]?_0x2eb6a1[_0x0d3b('0x1d')][_0x0d3b('0x21')]||null:null,'attributes':_0x2eb6a1[_0x0d3b('0x1d')]?_0x2eb6a1[_0x0d3b('0x1d')]['attributes']||null:null,'limit':_0x2eb6a1[_0x0d3b('0x1d')]?_0x2eb6a1[_0x0d3b('0x1d')][_0x0d3b('0x22')]||null:null})['then'](function(_0x5d8212){logger[_0x0d3b('0x16')](_0x0d3b('0x1e'),_0x2eb6a1);logger[_0x0d3b('0x10')](_0x0d3b('0x1e'),_0x2eb6a1,JSON[_0x0d3b('0x12')](_0x5d8212));_0x539f6a(_0x5d8212);})[_0x0d3b('0x18')](function(_0x21f422){logger[_0x0d3b('0x13')]('UpdateVoiceDialReport',_0x21f422[_0x0d3b('0x15')],_0x2eb6a1);_0xac6bab(_0x13acf8[_0x0d3b('0x13')](0x1f4,_0x21f422[_0x0d3b('0x15')]));});});};
\ No newline at end of file
+var _0xbffc=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','CreateVoiceDialReport','VoiceDialReport','create','body','options','catch','UpdateVoiceDialReport','update','raw','where','util','moment','randomstring'];(function(_0x1c5bbc,_0x479227){var _0x3911c7=function(_0x444c6d){while(--_0x444c6d){_0x1c5bbc['push'](_0x1c5bbc['shift']());}};_0x3911c7(++_0x479227);}(_0xbffc,0x17d));var _0xcbff=function(_0x7d8dc9,_0xdbc2f){_0x7d8dc9=_0x7d8dc9-0x0;var _0x5ac253=_0xbffc[_0x7d8dc9];return _0x5ac253;};'use strict';var _=require('lodash');var util=require(_0xcbff('0x0'));var moment=require(_0xcbff('0x1'));var BPromise=require('bluebird');var rs=require(_0xcbff('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcbff('0x3'))['db'];var utils=require(_0xcbff('0x4'));var logger=require(_0xcbff('0x5'))(_0xcbff('0x6'));var config=require('../../config/environment');var jayson=require(_0xcbff('0x7'));var client=jayson[_0xcbff('0x8')][_0xcbff('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x18151a,_0x25f9c3,_0x5b1db7){return new BPromise(function(_0x45b556,_0x370ae1){return client[_0xcbff('0xa')](_0x18151a,_0x5b1db7)[_0xcbff('0xb')](function(_0x40e789){logger['info'](_0xcbff('0xc'),_0x25f9c3,'request\x20sent');logger[_0xcbff('0xd')](_0xcbff('0xe'),_0x25f9c3,_0xcbff('0xf'),JSON[_0xcbff('0x10')](_0x40e789));if(_0x40e789['error']){if(_0x40e789[_0xcbff('0x11')][_0xcbff('0x12')]===0x1f4){logger[_0xcbff('0x11')](_0xcbff('0xc'),_0x25f9c3,_0x40e789[_0xcbff('0x11')][_0xcbff('0x13')]);return _0x370ae1(_0x40e789['error'][_0xcbff('0x13')]);}logger[_0xcbff('0x11')](_0xcbff('0xc'),_0x25f9c3,_0x40e789[_0xcbff('0x11')][_0xcbff('0x13')]);return _0x45b556(_0x40e789[_0xcbff('0x11')][_0xcbff('0x13')]);}else{logger[_0xcbff('0x14')]('VoiceDialReport,\x20%s,\x20%s',_0x25f9c3,_0xcbff('0xf'));_0x45b556(_0x40e789[_0xcbff('0x15')][_0xcbff('0x13')]);}})['catch'](function(_0x57e9f1){logger[_0xcbff('0x11')](_0xcbff('0xc'),_0x25f9c3,_0x57e9f1);_0x370ae1(_0x57e9f1);});});}exports[_0xcbff('0x16')]=function(_0x1c8b62){var _0x375a73=this;return new Promise(function(_0xc0cadf,_0x3716b9){return db[_0xcbff('0x17')][_0xcbff('0x18')](_0x1c8b62[_0xcbff('0x19')],{'raw':_0x1c8b62[_0xcbff('0x1a')]?_0x1c8b62[_0xcbff('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xcbff('0xb')](function(_0x8cd8ad){logger[_0xcbff('0x14')](_0xcbff('0x16'),_0x1c8b62);logger['debug'](_0xcbff('0x16'),_0x1c8b62,JSON[_0xcbff('0x10')](_0x8cd8ad));_0xc0cadf(_0x8cd8ad);})[_0xcbff('0x1b')](function(_0x7c24d3){logger[_0xcbff('0x11')]('CreateVoiceDialReport',_0x7c24d3[_0xcbff('0x13')],_0x1c8b62);_0x3716b9(_0x375a73[_0xcbff('0x11')](0x1f4,_0x7c24d3[_0xcbff('0x13')]));});});};exports[_0xcbff('0x1c')]=function(_0x1fec45){var _0x4f4451=this;return new Promise(function(_0xaf035b,_0x9e8214){return db['VoiceDialReport'][_0xcbff('0x1d')](_0x1fec45[_0xcbff('0x19')],{'raw':_0x1fec45['options']?_0x1fec45['options'][_0xcbff('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1fec45[_0xcbff('0x1a')]?_0x1fec45[_0xcbff('0x1a')][_0xcbff('0x1f')]||null:null,'attributes':_0x1fec45[_0xcbff('0x1a')]?_0x1fec45['options']['attributes']||null:null,'limit':_0x1fec45['options']?_0x1fec45[_0xcbff('0x1a')]['limit']||null:null})[_0xcbff('0xb')](function(_0x20f6a6){logger[_0xcbff('0x14')](_0xcbff('0x1c'),_0x1fec45);logger[_0xcbff('0xd')](_0xcbff('0x1c'),_0x1fec45,JSON[_0xcbff('0x10')](_0x20f6a6));_0xaf035b(_0x20f6a6);})['catch'](function(_0x4d8a55){logger['error'](_0xcbff('0x1c'),_0x4d8a55[_0xcbff('0x13')],_0x1fec45);_0x9e8214(_0x4f4451[_0xcbff('0x11')](0x1f4,_0x4d8a55[_0xcbff('0x13')]));});});};
\ No newline at end of file
index 023d9a4..a45e9ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8166=['post','create','/:id/applications','addApplications','update','util','path','connect-timeout','express','Router','./voiceExtension.controller','isAuthenticated','index','get','/:id','show'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x8166,0x135));var _0x6816=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x8166[_0x3e44fa];return _0x2a0aba;};'use strict';var multer=require('multer');var util=require(_0x6816('0x0'));var path=require(_0x6816('0x1'));var timeout=require(_0x6816('0x2'));var express=require(_0x6816('0x3'));var router=express[_0x6816('0x4')]();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(_0x6816('0x5'));router['get']('/',auth[_0x6816('0x6')](),controller[_0x6816('0x7')]);router[_0x6816('0x8')](_0x6816('0x9'),auth[_0x6816('0x6')](),controller[_0x6816('0xa')]);router[_0x6816('0xb')]('/',auth['isAuthenticated'](),controller[_0x6816('0xc')]);router[_0x6816('0xb')](_0x6816('0xd'),auth[_0x6816('0x6')](),controller[_0x6816('0xe')]);router['put'](_0x6816('0x9'),auth[_0x6816('0x6')](),controller[_0x6816('0xf')]);router['delete'](_0x6816('0x9'),auth[_0x6816('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa45d=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','put','update','delete','destroy'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xa45d,0x94));var _0xda45=function(_0x391c45,_0x24faad){_0x391c45=_0x391c45-0x0;var _0xaa1c13=_0xa45d[_0x391c45];return _0xaa1c13;};'use strict';var multer=require(_0xda45('0x0'));var util=require(_0xda45('0x1'));var path=require(_0xda45('0x2'));var timeout=require(_0xda45('0x3'));var express=require(_0xda45('0x4'));var router=express[_0xda45('0x5')]();var fs_extra=require(_0xda45('0x6'));var auth=require(_0xda45('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceExtension.controller');router[_0xda45('0x8')]('/',auth[_0xda45('0x9')](),controller[_0xda45('0xa')]);router['get'](_0xda45('0xb'),auth[_0xda45('0x9')](),controller[_0xda45('0xc')]);router[_0xda45('0xd')]('/',auth[_0xda45('0x9')](),controller[_0xda45('0xe')]);router[_0xda45('0xd')](_0xda45('0xf'),auth[_0xda45('0x9')](),controller['addApplications']);router[_0xda45('0x10')]('/:id',auth[_0xda45('0x9')](),controller[_0xda45('0x11')]);router[_0xda45('0x12')](_0xda45('0xb'),auth[_0xda45('0x9')](),controller[_0xda45('0x13')]);module[_0xda45('0x14')]=router;
\ No newline at end of file
index 2593745..4fc75cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64da=['exten','sequelize','exports','STRING','compositeIndex','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue'];(function(_0x13c946,_0x59c790){var _0x40d568=function(_0x2ffe80){while(--_0x2ffe80){_0x13c946['push'](_0x13c946['shift']());}};_0x40d568(++_0x59c790);}(_0x64da,0x131));var _0xa64d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x64da[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0xa64d('0x0'));module[_0xa64d('0x1')]={'context':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa64d('0x3')},'priority':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xa64d('0x3')},'tag':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xa64d('0x4')](_0xa64d('0x5'),_0xa64d('0x6'),_0xa64d('0x7'),_0xa64d('0x8'),_0xa64d('0x9'),_0xa64d('0xa'),_0xa64d('0xb')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa64d('0xc')},'IntervalId':{'type':Sequelize[_0xa64d('0xd')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0xa64d('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xa64d('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xa64d('0xd')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xa64d('0xf')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0xa64d('0x10')],'get':function(_0x112406){return this[_0xa64d('0x11')](_0xa64d('0x12'));}},'alias':{'type':Sequelize[_0xa64d('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xa1ae=['*,*,*,*','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','inbound-fax','outbound-fax'];(function(_0x4cf8d4,_0x5aee73){var _0x2c1beb=function(_0x39b0a4){while(--_0x39b0a4){_0x4cf8d4['push'](_0x4cf8d4['shift']());}};_0x2c1beb(++_0x5aee73);}(_0xa1ae,0xa6));var _0xea1a=function(_0xf78469,_0x1fbdf9){_0xf78469=_0xf78469-0x0;var _0x222618=_0xa1ae[_0xf78469];return _0x222618;};'use strict';var Sequelize=require(_0xea1a('0x0'));module[_0xea1a('0x1')]={'context':{'type':Sequelize[_0xea1a('0x2')],'allowNull':![],'unique':_0xea1a('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xea1a('0x2')],'allowNull':![],'unique':_0xea1a('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0xea1a('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xea1a('0x4')},'appdata':{'type':Sequelize[_0xea1a('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xea1a('0x5')](_0xea1a('0x6'),_0xea1a('0x7'),'internal',_0xea1a('0x8'),_0xea1a('0x9'),'system','any'),'allowNull':![]},'description':{'type':Sequelize[_0xea1a('0x2')]},'interval':{'type':Sequelize[_0xea1a('0x2')],'allowNull':![],'defaultValue':_0xea1a('0xa')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0xea1a('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0xea1a('0x2')],'defaultValue':_0xea1a('0xc')},'answer':{'type':Sequelize[_0xea1a('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0xea1a('0xd')],'get':function(_0x33220c){return this[_0xea1a('0xe')](_0xea1a('0xf'));}},'alias':{'type':Sequelize[_0xea1a('0x2')],'allowNull':!![]}};
\ No newline at end of file
index c7ddc95..f3f3a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a71=['map','value','includes','type','name','UserProfileResource','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','OutboundRoutes','InternalRoutes','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','createRouting','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','./voiceExtension.socket','register','end','undefined','limit','count','offset','status','set','Content-Range','json','update','then','destroy','get','InboundRoutes','inbound','outbound','internal','filter','ignore'];(function(_0x41273c,_0x4c0c04){var _0x453ce4=function(_0x5504e9){while(--_0x5504e9){_0x41273c['push'](_0x41273c['shift']());}};_0x453ce4(++_0x4c0c04);}(_0x1a71,0xb9));var _0x11a7=function(_0xd49d86,_0x426071){_0xd49d86=_0xd49d86-0x0;var _0x12cd0b=_0x1a71[_0xd49d86];return _0x12cd0b;};'use strict';var emlformat=require(_0x11a7('0x0'));var rimraf=require(_0x11a7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x11a7('0x2'));var rp=require(_0x11a7('0x3'));var moment=require(_0x11a7('0x4'));var BPromise=require(_0x11a7('0x5'));var Mustache=require(_0x11a7('0x6'));var util=require(_0x11a7('0x7'));var path=require(_0x11a7('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x11a7('0x9'));var fs=require('fs');var fs_extra=require(_0x11a7('0xa'));var _=require(_0x11a7('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x11a7('0xc'));var deskjs=require(_0x11a7('0xd'));var toCsv=require(_0x11a7('0xe'));var querystring=require(_0x11a7('0xf'));var Papa=require('papaparse');var Redis=require(_0x11a7('0x10'));var authService=require(_0x11a7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x11a7('0x12'));var hardwareService=require(_0x11a7('0x13'));var logger=require(_0x11a7('0x14'))(_0x11a7('0x15'));var utils=require(_0x11a7('0x16'));var config=require(_0x11a7('0x17'));var licenseUtil=require(_0x11a7('0x18'));var db=require(_0x11a7('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x11a7('0x1a'),'port':0x18eb});var socket=require(_0x11a7('0x1b'))(new Redis(config['redis']));require(_0x11a7('0x1c'))[_0x11a7('0x1d')](socket);function respondWithStatusCode(_0x36a105,_0xe98242){_0xe98242=_0xe98242||0xcc;return function(_0x5a97af){if(_0x5a97af){return _0x36a105['sendStatus'](_0xe98242);}return _0x36a105['status'](_0xe98242)[_0x11a7('0x1e')]();};}function respondWithResult(_0x4b9470,_0x590622){_0x590622=_0x590622||0xc8;return function(_0x48a60c){if(_0x48a60c){return _0x4b9470['status'](_0x590622)['json'](_0x48a60c);}};}function respondWithFilteredResult(_0x4de031,_0xcf0585){return function(_0x1dc459){if(_0x1dc459){var _0x56a70c=typeof _0xcf0585['offset']===_0x11a7('0x1f')&&typeof _0xcf0585[_0x11a7('0x20')]==='undefined';var _0x5a0802=_0x1dc459[_0x11a7('0x21')];var _0x51a8df=_0x56a70c?0x0:_0xcf0585['offset'];var _0x3bd89b=_0x56a70c?_0x1dc459['count']:_0xcf0585[_0x11a7('0x22')]+_0xcf0585[_0x11a7('0x20')];var _0x2e08a6;if(_0x3bd89b>=_0x5a0802){_0x3bd89b=_0x5a0802;_0x2e08a6=0xc8;}else{_0x2e08a6=0xce;}_0x4de031[_0x11a7('0x23')](_0x2e08a6);return _0x4de031[_0x11a7('0x24')](_0x11a7('0x25'),_0x51a8df+'-'+_0x3bd89b+'/'+_0x5a0802)[_0x11a7('0x26')](_0x1dc459);}return null;};}function patchUpdates(_0x23a4fb){return function(_0xa40a4a){try{jsonpatch['apply'](_0xa40a4a,_0x23a4fb,!![]);}catch(_0x52b755){return BPromise['reject'](_0x52b755);}return _0xa40a4a['save']();};}function saveUpdates(_0x1fc253,_0x1c2aaa){return function(_0x3f5ca8){if(_0x3f5ca8){return _0x3f5ca8[_0x11a7('0x27')](_0x1fc253)[_0x11a7('0x28')](function(_0x4ea62f){return _0x4ea62f;});}return null;};}function removeEntity(_0x10d55a,_0x146742){return function(_0x4a9bd3){if(_0x4a9bd3){return _0x4a9bd3[_0x11a7('0x29')]()[_0x11a7('0x28')](function(){var _0x271aa9=_0x4a9bd3[_0x11a7('0x2a')]({'plain':!![]});var _0x3e2bfb=[{'name':_0x11a7('0x2b'),'value':_0x11a7('0x2c'),'ignore':![]},{'name':'OutboundRoutes','value':_0x11a7('0x2d'),'ignore':![]},{'name':'InternalRoutes','value':_0x11a7('0x2e'),'ignore':![]}];var _0x30131b=_(_0x3e2bfb)[_0x11a7('0x2f')](_0x11a7('0x30'))[_0x11a7('0x31')](_0x11a7('0x32'))[_0x11a7('0x32')]();if(_[_0x11a7('0x33')](_0x30131b,_0x271aa9['type'])){return;}var _0x46b01e=_['find'](_0x3e2bfb,[_0x11a7('0x32'),_0x271aa9[_0x11a7('0x34')]])[_0x11a7('0x35')];return db[_0x11a7('0x36')][_0x11a7('0x29')]({'where':{'type':_0x46b01e,'resourceId':_0x271aa9['id']}})['then'](function(){return _0x4a9bd3;});})['then'](function(){_0x10d55a[_0x11a7('0x23')](0xcc)[_0x11a7('0x1e')]();});}};}function handleEntityNotFound(_0x105379,_0x113c1a){return function(_0x1244e2){if(!_0x1244e2){_0x105379['sendStatus'](0x194);}return _0x1244e2;};}function handleError(_0x2a1049,_0x5e5511){_0x5e5511=_0x5e5511||0x1f4;return function(_0x43b1bb){logger[_0x11a7('0x37')](_0x43b1bb[_0x11a7('0x38')]);if(_0x43b1bb['name']){delete _0x43b1bb[_0x11a7('0x35')];}_0x2a1049[_0x11a7('0x23')](_0x5e5511)[_0x11a7('0x39')](_0x43b1bb);};}exports[_0x11a7('0x3a')]=function(_0x16e69d,_0x2f6dc6){var _0x260c63={},_0x1412c2={},_0x55282e={'count':0x0,'rows':[]};var _0x3d269f=_[_0x11a7('0x31')](db[_0x11a7('0x3b')][_0x11a7('0x3c')],function(_0x544810){return{'name':_0x544810[_0x11a7('0x3d')],'type':_0x544810[_0x11a7('0x34')][_0x11a7('0x3e')]};});_0x1412c2[_0x11a7('0x3f')]=_[_0x11a7('0x31')](_0x3d269f,'name');_0x1412c2[_0x11a7('0x40')]=_[_0x11a7('0x41')](_0x16e69d[_0x11a7('0x40')]);_0x1412c2['filters']=_[_0x11a7('0x42')](_0x1412c2['model'],_0x1412c2[_0x11a7('0x40')]);_0x260c63['attributes']=_[_0x11a7('0x42')](_0x1412c2[_0x11a7('0x3f')],qs[_0x11a7('0x43')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x43')]));_0x260c63[_0x11a7('0x44')]=_0x260c63[_0x11a7('0x44')][_0x11a7('0x45')]?_0x260c63['attributes']:_0x1412c2[_0x11a7('0x3f')];if(!_0x16e69d[_0x11a7('0x40')][_0x11a7('0x46')](_0x11a7('0x47'))){_0x260c63[_0x11a7('0x20')]=qs[_0x11a7('0x20')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x20')]);_0x260c63['offset']=qs[_0x11a7('0x22')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x22')]);}_0x260c63[_0x11a7('0x48')]=qs[_0x11a7('0x49')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x49')]);_0x260c63[_0x11a7('0x4a')]=qs[_0x11a7('0x4b')](_[_0x11a7('0x4c')](_0x16e69d[_0x11a7('0x40')],_0x1412c2[_0x11a7('0x4b')]),_0x3d269f);if(_0x16e69d['query'][_0x11a7('0x2f')]){_0x260c63['where']=_['merge'](_0x260c63[_0x11a7('0x4a')],{'$or':_[_0x11a7('0x31')](_0x3d269f,function(_0x2109bd){if(_0x2109bd[_0x11a7('0x34')]!==_0x11a7('0x4d')){var _0x5b6c1f={};_0x5b6c1f[_0x2109bd[_0x11a7('0x35')]]={'$like':'%'+_0x16e69d[_0x11a7('0x40')][_0x11a7('0x2f')]+'%'};return _0x5b6c1f;}})});}_0x260c63=_[_0x11a7('0x4e')]({},_0x260c63,_0x16e69d[_0x11a7('0x4f')]);var _0xa0add7={'where':_0x260c63[_0x11a7('0x4a')]};return db['VoiceExtension']['count'](_0xa0add7)[_0x11a7('0x28')](function(_0x4a3ca6){_0x55282e[_0x11a7('0x21')]=_0x4a3ca6;if(_0x16e69d['query'][_0x11a7('0x50')]){_0x260c63[_0x11a7('0x51')]=[{'all':!![]}];}return db['VoiceExtension'][_0x11a7('0x52')](_0x260c63);})[_0x11a7('0x28')](function(_0x40e830){_0x55282e[_0x11a7('0x53')]=_0x40e830;return _0x55282e;})['then'](respondWithFilteredResult(_0x2f6dc6,_0x260c63))[_0x11a7('0x54')](handleError(_0x2f6dc6,null));};exports[_0x11a7('0x55')]=function(_0x2dfb2a,_0x1f47b8){var _0x1925fb={'raw':![],'where':{'id':_0x2dfb2a[_0x11a7('0x56')]['id']}},_0x4e1e97={};_0x4e1e97['model']=_[_0x11a7('0x41')](db[_0x11a7('0x3b')][_0x11a7('0x3c')]);_0x4e1e97[_0x11a7('0x40')]=_[_0x11a7('0x41')](_0x2dfb2a['query']);_0x4e1e97[_0x11a7('0x4b')]=_[_0x11a7('0x42')](_0x4e1e97[_0x11a7('0x3f')],_0x4e1e97[_0x11a7('0x40')]);_0x1925fb['attributes']=_[_0x11a7('0x42')](_0x4e1e97[_0x11a7('0x3f')],qs[_0x11a7('0x43')](_0x2dfb2a[_0x11a7('0x40')][_0x11a7('0x43')]));_0x1925fb[_0x11a7('0x44')]=_0x1925fb[_0x11a7('0x44')][_0x11a7('0x45')]?_0x1925fb['attributes']:_0x4e1e97[_0x11a7('0x3f')];if(_0x2dfb2a[_0x11a7('0x40')][_0x11a7('0x50')]){_0x1925fb[_0x11a7('0x51')]=[{'all':!![]}];}_0x1925fb=_['merge']({},_0x1925fb,_0x2dfb2a[_0x11a7('0x4f')]);return db[_0x11a7('0x3b')][_0x11a7('0x57')](_0x1925fb)['then'](handleEntityNotFound(_0x1f47b8,null))[_0x11a7('0x28')](respondWithResult(_0x1f47b8,null))[_0x11a7('0x54')](handleError(_0x1f47b8,null));};exports['destroy']=function(_0xee2885,_0x2e3c32){return db['VoiceExtension']['find']({'where':{'id':_0xee2885['params']['id']}})[_0x11a7('0x28')](handleEntityNotFound(_0x2e3c32,null))[_0x11a7('0x28')](removeEntity(_0x2e3c32,null))['catch'](handleError(_0x2e3c32,null));};exports[_0x11a7('0x58')]=function(_0x5a62ab,_0xe972c0){if(_0x5a62ab[_0x11a7('0x59')][_0x11a7('0x34')]==='outbound'&&!_[_0x11a7('0x5a')](_0x5a62ab[_0x11a7('0x59')][_0x11a7('0x5b')],'_')){_0x5a62ab['body'][_0x11a7('0x5b')]='_'[_0x11a7('0x5c')](_0x5a62ab[_0x11a7('0x59')][_0x11a7('0x5b')]);}return db[_0x11a7('0x3b')][_0x11a7('0x58')](_0x5a62ab[_0x11a7('0x59')],{'raw':![]})[_0x11a7('0x28')](function(_0x37a95c){var _0x34d8a8=_0x5a62ab[_0x11a7('0x5d')][_0x11a7('0x2a')]({'plain':!![]});if(!_0x34d8a8)throw new Error(_0x11a7('0x5e'));if(_0x34d8a8['role']==='user'){var _0x366bc2=_0x37a95c[_0x11a7('0x2a')]({'plain':!![]});var _0x383adc=[{'name':_0x11a7('0x2b'),'value':_0x11a7('0x2c')},{'name':_0x11a7('0x5f'),'value':_0x11a7('0x2d')},{'name':_0x11a7('0x60'),'value':_0x11a7('0x2e')}];var _0x106187=_[_0x11a7('0x57')](_0x383adc,[_0x11a7('0x32'),_0x366bc2[_0x11a7('0x34')]])[_0x11a7('0x35')];return db[_0x11a7('0x61')][_0x11a7('0x57')]({'where':{'name':_0x106187,'userProfileId':_0x34d8a8[_0x11a7('0x62')]},'raw':!![]})[_0x11a7('0x28')](function(_0x229ad4){if(_0x229ad4&&_0x229ad4[_0x11a7('0x63')]===0x0){return db[_0x11a7('0x36')][_0x11a7('0x58')]({'name':_0x366bc2[_0x11a7('0x35')],'resourceId':_0x366bc2['id'],'type':_0x229ad4[_0x11a7('0x35')],'sectionId':_0x229ad4['id']},{})['then'](function(){return _0x37a95c;});}else{return _0x37a95c;}})['catch'](function(_0x47aa65){logger['error'](_0x11a7('0x64'),_0x47aa65);throw _0x47aa65;});}return _0x37a95c;})['then'](respondWithResult(_0xe972c0,0xc9))['catch'](handleError(_0xe972c0,null));};exports[_0x11a7('0x27')]=function(_0x59cea3,_0x14e645){if(_0x59cea3[_0x11a7('0x59')]['id']){delete _0x59cea3[_0x11a7('0x59')]['id'];}return db['VoiceExtension'][_0x11a7('0x57')]({'where':{'id':_0x59cea3[_0x11a7('0x56')]['id']}})[_0x11a7('0x28')](handleEntityNotFound(_0x14e645,null))[_0x11a7('0x28')](function(_0x9d8038){if(_0x9d8038){return db['VoiceExtension'][_0x11a7('0x27')](_['pick'](_0x59cea3['body'],[_0x11a7('0x5b'),_0x11a7('0x65'),_0x11a7('0x66'),_0x11a7('0x67'),_0x11a7('0x68'),_0x11a7('0x69'),_0x11a7('0x6a')]),{'where':{'context':_0x9d8038[_0x11a7('0x65')],'exten':_0x9d8038['exten']},'individualHooks':!![]})[_0x11a7('0x28')](function(_0x54796d){return _0x54796d;});}return null;})['then'](respondWithStatusCode(_0x14e645,null))[_0x11a7('0x54')](handleError(_0x14e645,null));};exports[_0x11a7('0x6b')]=function(_0x5b0657,_0x3d4421){return db[_0x11a7('0x3b')]['findOne']({'where':{'id':_0x5b0657['params']['id']}})[_0x11a7('0x28')](function(_0x109058){if(_0x109058){return db[_0x11a7('0x6c')][_0x11a7('0x6d')](function(_0xe85fb4){return db['VoiceExtension'][_0x11a7('0x29')]({'where':{'VoiceExtensionId':_0x5b0657[_0x11a7('0x56')]['id']},'transaction':_0xe85fb4})[_0x11a7('0x28')](function(){var _0x5615c4=_['map'](_0x5b0657[_0x11a7('0x59')],function(_0xb7835b){_0xb7835b[_0x11a7('0x6e')]=_0x5b0657[_0x11a7('0x56')]['id'];_0xb7835b[_0x11a7('0x6f')]=!![];return _0xb7835b;});var _0x17237f=_0x5b0657[_0x11a7('0x40')][_0x11a7('0x70')]&&_0x5b0657[_0x11a7('0x40')][_0x11a7('0x70')][_0x11a7('0x71')]()==='true'?!![]:![];return _0x109058[_0x11a7('0x72')](_0x5615c4,_0x17237f);})[_0x11a7('0x28')](function(_0x42aafd){return db[_0x11a7('0x3b')]['bulkCreate'](_0x42aafd,{'transaction':_0xe85fb4});});})['then'](function(){return db['VoiceExtension'][_0x11a7('0x73')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5b0657[_0x11a7('0x56')]['id']},'order':_0x11a7('0x74')});});}})[_0x11a7('0x28')](respondWithResult(_0x3d4421,null))[_0x11a7('0x54')](handleError(_0x3d4421,null));};
\ No newline at end of file
+var _0x7173=['attributes','nolimit','sort','pick','where','merge','VIRTUAL','options','findAll','show','params','intersection','length','includeAll','include','catch','body','exten','concat','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','true','createRouting','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','type','find','name','error','stack','send','VoiceExtension','rawAttributes','key','model','keys','query','filters','fields'];(function(_0x3bbe04,_0x173375){var _0xb03ec7=function(_0x1f8059){while(--_0x1f8059){_0x3bbe04['push'](_0x3bbe04['shift']());}};_0xb03ec7(++_0x173375);}(_0x7173,0x183));var _0x3717=function(_0x4aa4e6,_0x278c45){_0x4aa4e6=_0x4aa4e6-0x0;var _0x322588=_0x7173[_0x4aa4e6];return _0x322588;};'use strict';var emlformat=require(_0x3717('0x0'));var rimraf=require(_0x3717('0x1'));var zipdir=require(_0x3717('0x2'));var jsonpatch=require(_0x3717('0x3'));var rp=require(_0x3717('0x4'));var moment=require(_0x3717('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3717('0x6'));var util=require(_0x3717('0x7'));var path=require('path');var sox=require(_0x3717('0x8'));var csv=require(_0x3717('0x9'));var ejs=require(_0x3717('0xa'));var fs=require('fs');var fs_extra=require(_0x3717('0xb'));var _=require('lodash');var squel=require(_0x3717('0xc'));var crypto=require(_0x3717('0xd'));var jsforce=require(_0x3717('0xe'));var deskjs=require(_0x3717('0xf'));var toCsv=require(_0x3717('0x9'));var querystring=require('querystring');var Papa=require(_0x3717('0x10'));var Redis=require('ioredis');var authService=require(_0x3717('0x11'));var qs=require(_0x3717('0x12'));var as=require(_0x3717('0x13'));var hardwareService=require(_0x3717('0x14'));var logger=require(_0x3717('0x15'))(_0x3717('0x16'));var utils=require('../../config/utils');var config=require(_0x3717('0x17'));var licenseUtil=require(_0x3717('0x18'));var db=require(_0x3717('0x19'))['db'];config['redis']=_[_0x3717('0x1a')](config['redis'],{'host':_0x3717('0x1b'),'port':0x18eb});var socket=require(_0x3717('0x1c'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0x3717('0x1d')](socket);function respondWithStatusCode(_0x10dc99,_0x421290){_0x421290=_0x421290||0xcc;return function(_0x570e9b){if(_0x570e9b){return _0x10dc99[_0x3717('0x1e')](_0x421290);}return _0x10dc99[_0x3717('0x1f')](_0x421290)[_0x3717('0x20')]();};}function respondWithResult(_0x382758,_0x43f5b5){_0x43f5b5=_0x43f5b5||0xc8;return function(_0x30a12a){if(_0x30a12a){return _0x382758[_0x3717('0x1f')](_0x43f5b5)[_0x3717('0x21')](_0x30a12a);}};}function respondWithFilteredResult(_0x164abb,_0x34a927){return function(_0x6d2dc3){if(_0x6d2dc3){var _0x42e791=typeof _0x34a927[_0x3717('0x22')]===_0x3717('0x23')&&typeof _0x34a927[_0x3717('0x24')]==='undefined';var _0x5a074e=_0x6d2dc3[_0x3717('0x25')];var _0x28088c=_0x42e791?0x0:_0x34a927[_0x3717('0x22')];var _0x451f04=_0x42e791?_0x6d2dc3[_0x3717('0x25')]:_0x34a927['offset']+_0x34a927[_0x3717('0x24')];var _0x599916;if(_0x451f04>=_0x5a074e){_0x451f04=_0x5a074e;_0x599916=0xc8;}else{_0x599916=0xce;}_0x164abb['status'](_0x599916);return _0x164abb[_0x3717('0x26')](_0x3717('0x27'),_0x28088c+'-'+_0x451f04+'/'+_0x5a074e)[_0x3717('0x21')](_0x6d2dc3);}return null;};}function patchUpdates(_0x222bc0){return function(_0x128bf8){try{jsonpatch[_0x3717('0x28')](_0x128bf8,_0x222bc0,!![]);}catch(_0x5278c8){return BPromise[_0x3717('0x29')](_0x5278c8);}return _0x128bf8['save']();};}function saveUpdates(_0x46800a,_0x491b29){return function(_0x2ccd72){if(_0x2ccd72){return _0x2ccd72[_0x3717('0x2a')](_0x46800a)[_0x3717('0x2b')](function(_0x5946b5){return _0x5946b5;});}return null;};}function removeEntity(_0xcd4c2a,_0x247ab2){return function(_0x42276f){if(_0x42276f){return _0x42276f[_0x3717('0x2c')]()['then'](function(){var _0x1425cc=_0x42276f['get']({'plain':!![]});var _0x547bf8=[{'name':_0x3717('0x2d'),'value':_0x3717('0x2e'),'ignore':![]},{'name':_0x3717('0x2f'),'value':_0x3717('0x30'),'ignore':![]},{'name':_0x3717('0x31'),'value':_0x3717('0x32'),'ignore':![]}];var _0x48a40d=_(_0x547bf8)[_0x3717('0x33')](_0x3717('0x34'))[_0x3717('0x35')](_0x3717('0x36'))[_0x3717('0x36')]();if(_['includes'](_0x48a40d,_0x1425cc[_0x3717('0x37')])){return;}var _0x620609=_[_0x3717('0x38')](_0x547bf8,[_0x3717('0x36'),_0x1425cc['type']])[_0x3717('0x39')];return db['UserProfileResource']['destroy']({'where':{'type':_0x620609,'resourceId':_0x1425cc['id']}})[_0x3717('0x2b')](function(){return _0x42276f;});})['then'](function(){_0xcd4c2a[_0x3717('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b6032,_0x2d35da){return function(_0x3d1bdd){if(!_0x3d1bdd){_0x4b6032['sendStatus'](0x194);}return _0x3d1bdd;};}function handleError(_0x5a40a3,_0x4d48ea){_0x4d48ea=_0x4d48ea||0x1f4;return function(_0x316843){logger[_0x3717('0x3a')](_0x316843[_0x3717('0x3b')]);if(_0x316843[_0x3717('0x39')]){delete _0x316843[_0x3717('0x39')];}_0x5a40a3[_0x3717('0x1f')](_0x4d48ea)[_0x3717('0x3c')](_0x316843);};}exports['index']=function(_0x353ba0,_0x3ab73d){var _0x352792={},_0x25fda1={},_0x14c6f1={'count':0x0,'rows':[]};var _0x1bb569=_[_0x3717('0x35')](db[_0x3717('0x3d')][_0x3717('0x3e')],function(_0x1f10f8){return{'name':_0x1f10f8['fieldName'],'type':_0x1f10f8[_0x3717('0x37')][_0x3717('0x3f')]};});_0x25fda1[_0x3717('0x40')]=_['map'](_0x1bb569,_0x3717('0x39'));_0x25fda1['query']=_[_0x3717('0x41')](_0x353ba0[_0x3717('0x42')]);_0x25fda1[_0x3717('0x43')]=_['intersection'](_0x25fda1[_0x3717('0x40')],_0x25fda1[_0x3717('0x42')]);_0x352792['attributes']=_['intersection'](_0x25fda1[_0x3717('0x40')],qs[_0x3717('0x44')](_0x353ba0[_0x3717('0x42')][_0x3717('0x44')]));_0x352792[_0x3717('0x45')]=_0x352792['attributes']['length']?_0x352792[_0x3717('0x45')]:_0x25fda1[_0x3717('0x40')];if(!_0x353ba0[_0x3717('0x42')]['hasOwnProperty'](_0x3717('0x46'))){_0x352792['limit']=qs[_0x3717('0x24')](_0x353ba0['query'][_0x3717('0x24')]);_0x352792[_0x3717('0x22')]=qs['offset'](_0x353ba0['query'][_0x3717('0x22')]);}_0x352792['order']=qs[_0x3717('0x47')](_0x353ba0['query'][_0x3717('0x47')]);_0x352792['where']=qs[_0x3717('0x43')](_[_0x3717('0x48')](_0x353ba0['query'],_0x25fda1[_0x3717('0x43')]),_0x1bb569);if(_0x353ba0[_0x3717('0x42')][_0x3717('0x33')]){_0x352792[_0x3717('0x49')]=_[_0x3717('0x4a')](_0x352792[_0x3717('0x49')],{'$or':_[_0x3717('0x35')](_0x1bb569,function(_0x3b2a4d){if(_0x3b2a4d['type']!==_0x3717('0x4b')){var _0x31112d={};_0x31112d[_0x3b2a4d[_0x3717('0x39')]]={'$like':'%'+_0x353ba0['query'][_0x3717('0x33')]+'%'};return _0x31112d;}})});}_0x352792=_[_0x3717('0x4a')]({},_0x352792,_0x353ba0[_0x3717('0x4c')]);var _0x269932={'where':_0x352792[_0x3717('0x49')]};return db['VoiceExtension'][_0x3717('0x25')](_0x269932)[_0x3717('0x2b')](function(_0x16facb){_0x14c6f1[_0x3717('0x25')]=_0x16facb;if(_0x353ba0[_0x3717('0x42')]['includeAll']){_0x352792['include']=[{'all':!![]}];}return db[_0x3717('0x3d')][_0x3717('0x4d')](_0x352792);})[_0x3717('0x2b')](function(_0x473104){_0x14c6f1['rows']=_0x473104;return _0x14c6f1;})[_0x3717('0x2b')](respondWithFilteredResult(_0x3ab73d,_0x352792))['catch'](handleError(_0x3ab73d,null));};exports[_0x3717('0x4e')]=function(_0x28fef2,_0x418c07){var _0x124b7c={'raw':![],'where':{'id':_0x28fef2[_0x3717('0x4f')]['id']}},_0x25cc61={};_0x25cc61[_0x3717('0x40')]=_[_0x3717('0x41')](db[_0x3717('0x3d')][_0x3717('0x3e')]);_0x25cc61[_0x3717('0x42')]=_['keys'](_0x28fef2[_0x3717('0x42')]);_0x25cc61[_0x3717('0x43')]=_[_0x3717('0x50')](_0x25cc61[_0x3717('0x40')],_0x25cc61['query']);_0x124b7c[_0x3717('0x45')]=_[_0x3717('0x50')](_0x25cc61[_0x3717('0x40')],qs[_0x3717('0x44')](_0x28fef2[_0x3717('0x42')][_0x3717('0x44')]));_0x124b7c[_0x3717('0x45')]=_0x124b7c['attributes'][_0x3717('0x51')]?_0x124b7c[_0x3717('0x45')]:_0x25cc61[_0x3717('0x40')];if(_0x28fef2['query'][_0x3717('0x52')]){_0x124b7c[_0x3717('0x53')]=[{'all':!![]}];}_0x124b7c=_[_0x3717('0x4a')]({},_0x124b7c,_0x28fef2[_0x3717('0x4c')]);return db[_0x3717('0x3d')]['find'](_0x124b7c)[_0x3717('0x2b')](handleEntityNotFound(_0x418c07,null))[_0x3717('0x2b')](respondWithResult(_0x418c07,null))[_0x3717('0x54')](handleError(_0x418c07,null));};exports[_0x3717('0x2c')]=function(_0x56cf7f,_0x5e94dd){return db[_0x3717('0x3d')][_0x3717('0x38')]({'where':{'id':_0x56cf7f['params']['id']}})[_0x3717('0x2b')](handleEntityNotFound(_0x5e94dd,null))[_0x3717('0x2b')](removeEntity(_0x5e94dd,null))['catch'](handleError(_0x5e94dd,null));};exports['create']=function(_0x3325b4,_0x33186e){if(_0x3325b4[_0x3717('0x55')][_0x3717('0x37')]===_0x3717('0x30')&&!_['startsWith'](_0x3325b4['body'][_0x3717('0x56')],'_')){_0x3325b4['body'][_0x3717('0x56')]='_'[_0x3717('0x57')](_0x3325b4[_0x3717('0x55')][_0x3717('0x56')]);}return db[_0x3717('0x3d')][_0x3717('0x58')](_0x3325b4[_0x3717('0x55')],{'raw':![]})[_0x3717('0x2b')](function(_0x1cf912){var _0x2e7e78=_0x3325b4[_0x3717('0x59')][_0x3717('0x5a')]({'plain':!![]});if(!_0x2e7e78)throw new Error(_0x3717('0x5b'));if(_0x2e7e78['role']===_0x3717('0x59')){var _0x284139=_0x1cf912[_0x3717('0x5a')]({'plain':!![]});var _0x33b7a9=[{'name':_0x3717('0x2d'),'value':_0x3717('0x2e')},{'name':_0x3717('0x2f'),'value':_0x3717('0x30')},{'name':'InternalRoutes','value':'internal'}];var _0x212250=_[_0x3717('0x38')](_0x33b7a9,[_0x3717('0x36'),_0x284139[_0x3717('0x37')]])[_0x3717('0x39')];return db['UserProfileSection'][_0x3717('0x38')]({'where':{'name':_0x212250,'userProfileId':_0x2e7e78[_0x3717('0x5c')]},'raw':!![]})[_0x3717('0x2b')](function(_0x533d76){if(_0x533d76&&_0x533d76[_0x3717('0x5d')]===0x0){return db[_0x3717('0x5e')][_0x3717('0x58')]({'name':_0x284139[_0x3717('0x39')],'resourceId':_0x284139['id'],'type':_0x533d76[_0x3717('0x39')],'sectionId':_0x533d76['id']},{})['then'](function(){return _0x1cf912;});}else{return _0x1cf912;}})[_0x3717('0x54')](function(_0x25966e){logger[_0x3717('0x3a')](_0x3717('0x5f'),_0x25966e);throw _0x25966e;});}return _0x1cf912;})[_0x3717('0x2b')](respondWithResult(_0x33186e,0xc9))[_0x3717('0x54')](handleError(_0x33186e,null));};exports[_0x3717('0x2a')]=function(_0x4906ba,_0x40c63e){if(_0x4906ba['body']['id']){delete _0x4906ba[_0x3717('0x55')]['id'];}return db[_0x3717('0x3d')][_0x3717('0x38')]({'where':{'id':_0x4906ba['params']['id']}})[_0x3717('0x2b')](handleEntityNotFound(_0x40c63e,null))[_0x3717('0x2b')](function(_0x3bc563){if(_0x3bc563){return db[_0x3717('0x3d')][_0x3717('0x2a')](_[_0x3717('0x48')](_0x4906ba['body'],[_0x3717('0x56'),_0x3717('0x60'),_0x3717('0x61'),_0x3717('0x62'),_0x3717('0x63'),_0x3717('0x64'),_0x3717('0x65')]),{'where':{'context':_0x3bc563[_0x3717('0x60')],'exten':_0x3bc563[_0x3717('0x56')]},'individualHooks':!![]})[_0x3717('0x2b')](function(_0x8c4477){return _0x8c4477;});}return null;})[_0x3717('0x2b')](respondWithStatusCode(_0x40c63e,null))[_0x3717('0x54')](handleError(_0x40c63e,null));};exports[_0x3717('0x66')]=function(_0x30d5b1,_0x2fb453){return db[_0x3717('0x3d')][_0x3717('0x67')]({'where':{'id':_0x30d5b1[_0x3717('0x4f')]['id']}})[_0x3717('0x2b')](function(_0x5b22d3){if(_0x5b22d3){return db[_0x3717('0x68')][_0x3717('0x69')](function(_0xbbbbf8){return db['VoiceExtension'][_0x3717('0x2c')]({'where':{'VoiceExtensionId':_0x30d5b1[_0x3717('0x4f')]['id']},'transaction':_0xbbbbf8})[_0x3717('0x2b')](function(){var _0xb0b773=_[_0x3717('0x35')](_0x30d5b1[_0x3717('0x55')],function(_0x2276b1){_0x2276b1[_0x3717('0x6a')]=_0x30d5b1[_0x3717('0x4f')]['id'];_0x2276b1[_0x3717('0x6b')]=!![];return _0x2276b1;});var _0x26d7a6=_0x30d5b1[_0x3717('0x42')]['rewriteDial']&&_0x30d5b1[_0x3717('0x42')][_0x3717('0x6c')][_0x3717('0x6d')]()===_0x3717('0x6e')?!![]:![];return _0x5b22d3[_0x3717('0x6f')](_0xb0b773,_0x26d7a6);})[_0x3717('0x2b')](function(_0x1a2325){return db[_0x3717('0x3d')]['bulkCreate'](_0x1a2325,{'transaction':_0xbbbbf8});});})[_0x3717('0x2b')](function(){return db[_0x3717('0x3d')][_0x3717('0x70')]({'where':{'isApp':!![],'VoiceExtensionId':_0x30d5b1[_0x3717('0x4f')]['id']},'order':_0x3717('0x71')});});}})[_0x3717('0x2b')](respondWithResult(_0x2fb453,null))[_0x3717('0x54')](handleError(_0x2fb453,null));};
\ No newline at end of file
index 10fba5d..86d779d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958b=['emit','hook','events','setMaxListeners','save','update','remove'];(function(_0x5bf53d,_0x4a1d37){var _0x22e809=function(_0x30b26a){while(--_0x30b26a){_0x5bf53d['push'](_0x5bf53d['shift']());}};_0x22e809(++_0x4a1d37);}(_0x958b,0x16e));var _0xb958=function(_0x54bd53,_0x179214){_0x54bd53=_0x54bd53-0x0;var _0x528c0e=_0x958b[_0x54bd53];return _0x528c0e;};'use strict';var EventEmitter=require(_0xb958('0x0'));var VoiceExtension=require('../../mysqldb')['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xb958('0x1')](0x0);var events={'afterCreate':_0xb958('0x2'),'afterUpdate':_0xb958('0x3'),'afterDestroy':_0xb958('0x4')};function emitEvent(_0x5127f6){return function(_0x56799b,_0xbb9453,_0x4d7819){VoiceExtensionEvents['emit'](_0x5127f6+':'+_0x56799b['id'],_0x56799b);VoiceExtensionEvents[_0xb958('0x5')](_0x5127f6,_0x56799b);_0x4d7819(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xb958('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x67e1=['../../mysqldb','VoiceExtension','update','remove','hook','exports','events'];(function(_0x406eed,_0xca9500){var _0x3ef1fc=function(_0x64df18){while(--_0x64df18){_0x406eed['push'](_0x406eed['shift']());}};_0x3ef1fc(++_0xca9500);}(_0x67e1,0x99));var _0x167e=function(_0x299dec,_0x3553ff){_0x299dec=_0x299dec-0x0;var _0x32d6fb=_0x67e1[_0x299dec];return _0x32d6fb;};'use strict';var EventEmitter=require(_0x167e('0x0'));var VoiceExtension=require(_0x167e('0x1'))['db'][_0x167e('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x167e('0x3'),'afterDestroy':_0x167e('0x4')};function emitEvent(_0x336ec8){return function(_0x14dd9e,_0x417037,_0xa13fe7){VoiceExtensionEvents['emit'](_0x336ec8+':'+_0x14dd9e['id'],_0x14dd9e);VoiceExtensionEvents['emit'](_0x336ec8,_0x14dd9e);_0xa13fe7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x167e('0x5')](e,emitEvent(event));}}module[_0x167e('0x6')]=VoiceExtensionEvents;
\ No newline at end of file
index c5b3d3c..4840490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x299c=['playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','last','priority','concat','catch','define','Hangup','util','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','CDR(routeAlias)=','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','NoOp','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','timeout','options','url','length','name','trunk','split','phone','param','prefix','SIP','join','U(xcally-mixmonitor-context)','isEmpty','Interval','interval','IntervalId','then','*,*,*,*','intervals','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer'];(function(_0x4ca796,_0x10dc47){var _0x171f87=function(_0x198d29){while(--_0x198d29){_0x4ca796['push'](_0x4ca796['shift']());}};_0x171f87(++_0x10dc47);}(_0x299c,0x67));var _0xc299=function(_0x6fedd9,_0x2b6515){_0x6fedd9=_0x6fedd9-0x0;var _0x1fc06a=_0x299c[_0x6fedd9];return _0x1fc06a;};'use strict';var util=require(_0xc299('0x0'));var _=require('lodash');var attributes=require(_0xc299('0x1'));module[_0xc299('0x2')]=function(_0x431864){var _0x525acf=_0x431864[_0xc299('0x3')];function _0x6ad2cc(_0x41fbe5){var _0x51dde2=0x2;var _0x40f9f6=[{'type':_0x41fbe5[_0xc299('0x4')],'app':_0xc299('0x5'),'appdata':_0xc299('0x6')+_0x41fbe5[_0xc299('0x4')],'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']},{'type':_0x41fbe5[_0xc299('0x4')],'app':_0x41fbe5[_0xc299('0x9')]?'Set':'NoOp','appdata':_0x41fbe5[_0xc299('0x9')]?_0xc299('0xa')+_0x41fbe5['alias']:'No\x20alias\x20set','context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']}];if(_0x41fbe5[_0xc299('0x4')]===_0xc299('0xb')){_0x40f9f6[_0xc299('0xc')]({'type':_0xc299('0xb'),'app':_0xc299('0x5'),'appdata':_0xc299('0xd')+_0x41fbe5['id'],'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']});}_0x40f9f6[_0xc299('0xc')]({'type':_0x41fbe5['type'],'app':_0xc299('0x5'),'appdata':_0xc299('0xe'),'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']},{'type':_0x41fbe5[_0xc299('0x4')],'app':'Set','appdata':_0xc299('0xf'),'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']},{'type':_0x41fbe5['type'],'app':_0xc299('0x5'),'appdata':_0xc299('0x10'),'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']});return _0x40f9f6;}function _0x450eb1(_0x206430){var _0x21e724=0x2;var _0xcf2987=[{'type':'outbound','app':_0xc299('0x5'),'appdata':_0xc299('0x11'),'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':_0x206430[_0xc299('0x9')]?_0xc299('0x5'):_0xc299('0x13'),'appdata':_0x206430[_0xc299('0x9')]?_0xc299('0xa')+_0x206430['alias']:_0xc299('0x14'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':'Set','appdata':_0xc299('0x15')+(_0x206430[_0xc299('0x16')]?_0xc299('0x17')+_0x206430['cutdigits']+'}':_0xc299('0x18')),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430['exten'],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':_0xc299('0x5'),'appdata':_0xc299('0xd')+_0x206430['id'],'context':_0x206430[_0xc299('0x7')],'exten':_0x206430['exten'],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':_0xc299('0x19'),'appdata':_0xc299('0x1a')+(_0x21e724+0x2)+'):Goto('+(_0x21e724+0x1)+')','context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':'Set','appdata':_0x206430[_0xc299('0x16')]?_0xc299('0x1b')+_0x206430[_0xc299('0x16')]+'}':_0xc299('0x1c'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':'Set','appdata':_0xc299('0xe'),'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':_0xc299('0x5'),'appdata':_0xc299('0xf'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':_0xc299('0x5'),'appdata':_0xc299('0x1d')+_0x206430['id'],'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']}];if(_0x206430[_0xc299('0x1e')](_0xc299('0x1f'))&&_0x206430['recordingFormat']!==_0xc299('0x20')){_0xcf2987[_0xc299('0xc')]({'type':'outbound','app':'Set','appdata':_0xc299('0x21'),'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x206430['recordingFormat']||_0xc299('0x22'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']});}return _0xcf2987;}function _0xe4553d(_0x272c42){var _0x1390c1=[{'name':'trunk','param':0x0},{'name':_0xc299('0x23'),'param':0x1},{'name':_0xc299('0x24'),'param':0x2},{'name':_0xc299('0x25'),'param':0x3}];var _0x99fa0f={};var _0x37eda4=_0x272c42['split'](',');var _0x177310=[];for(var _0x206a84=0x0;_0x206a84<_0x1390c1[_0xc299('0x26')];_0x206a84++){switch(_0x1390c1[_0x206a84][_0xc299('0x27')]){case _0xc299('0x28'):_0x99fa0f[_0xc299('0x28')]=_0x37eda4[_0x1390c1[_0x206a84]['param']][_0xc299('0x29')]('/')[0x1];_0x99fa0f[_0xc299('0x2a')]=_0x37eda4[_0x1390c1[_0x206a84][_0xc299('0x2b')]][_0xc299('0x29')]('/')[0x2];_0x99fa0f[_0xc299('0x2c')]=_0x99fa0f[_0xc299('0x2a')]?_0x99fa0f[_0xc299('0x2a')]['split']('$')[0x0]:undefined;_0x99fa0f[_0xc299('0x2a')]=route['cutdigits']?(_0x99fa0f[_0xc299('0x2c')]||'')+_0xc299('0x17')+route[_0xc299('0x16')]+'}':(_0x99fa0f[_0xc299('0x2c')]||'')+_0xc299('0x18');_0x177310[_0x1390c1[_0x206a84][_0xc299('0x2b')]]=[_0xc299('0x2d'),_0x99fa0f[_0xc299('0x28')],_0x99fa0f['phone']][_0xc299('0x2e')]('/');break;case'options':_0x99fa0f[_0xc299('0x24')]=_0x37eda4[_0x1390c1[_0x206a84][_0xc299('0x2b')]];if(route['recordingFormat']!==_0xc299('0x20')){if(_0x99fa0f[_0xc299('0x24')]['indexOf'](_0xc299('0x2f'))<0x0){_0x99fa0f[_0xc299('0x24')]+='U(xcally-mixmonitor-context)';}}else{_0x99fa0f[_0xc299('0x24')]=_0x99fa0f['options']['replace']('U(xcally-mixmonitor-context)','');}_0x177310[_0x1390c1[_0x206a84][_0xc299('0x2b')]]=_0x99fa0f[_0xc299('0x24')];break;default:_0x177310[_0x1390c1[_0x206a84][_0xc299('0x2b')]]=_0x37eda4[_0x1390c1[_0x206a84][_0xc299('0x2b')]];}}return _0x177310[_0xc299('0x2e')](',');}function _0x2d8914(_0x18025d,_0x31aa94,_0x4f63b0,_0x1c79b0){return new Promise(function(_0x2df671,_0x25e010){var _0x5b9d3b=[];if(_[_0xc299('0x30')](_0x31aa94))return _0x2df671(_0x5b9d3b);_0x525acf[_0xc299('0x31')]['findAll']({'attributes':['id',_0xc299('0x32'),_0xc299('0x33')],'raw':!![]})[_0xc299('0x34')](function(_0x1f919b){for(var _0x847e15=0x0,_0x4af60b=0x0;_0x847e15<_0x31aa94[_0xc299('0x26')];_0x847e15++,_0x4af60b=0x0){var _0x1c5a07=_0x31aa94[_0x847e15];var _0x380736=[];var _0x28eb19=[];if(_0x1c5a07[_0xc299('0x32')]!==_0xc299('0x35')){_0x1c5a07['intervals']=[_0x1c5a07[_0xc299('0x32')]];}else{_0x1c5a07[_0xc299('0x36')]=_0x1c5a07[_0xc299('0x33')]?_['map'](_[_0xc299('0x37')](_0x1f919b,{'IntervalId':_0x1c5a07[_0xc299('0x33')]}),_0xc299('0x32')):[];}_0x1c5a07['context']=_0x18025d[_0xc299('0x7')];_0x1c5a07[_0xc299('0x8')]=_0x18025d['exten'];if(_0x1c5a07[_0xc299('0x4')])_0x1c5a07[_0xc299('0x4')]=_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')]();if(_0x18025d[_0xc299('0x4')]==='outbound'){if(_0x1c5a07[_0xc299('0x1e')](_0xc299('0x39'))&&_0x1c5a07['tag']&&_0x1c5a07[_0xc299('0x39')]!=='--'){_0x380736['push']({'type':_0x1c5a07['type']['toLowerCase'](),'app':_0xc299('0x5'),'appdata':'CDR(tag)='+_0x1c5a07['tag'],'context':_0x18025d['context'],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}_0x380736[_0xc299('0xc')]({'type':_0x1c5a07['type'][_0xc299('0x38')](),'app':'ExecIf','appdata':_0xc299('0x3a')+(_0x1c5a07[_0xc299('0x3b')]?_0xc299('0x3c')+_0x1c5a07[_0xc299('0x3b')]+')':_0xc299('0x3d')),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d['exten'],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}else{if(_0x1c5a07[_0xc299('0x1e')](_0xc299('0x3e'))){if(['queue',_0xc299('0x3f')][_0xc299('0x40')](_0x1c5a07[_0xc299('0x41')]['toLowerCase']())&&_0x1c5a07[_0xc299('0x42')]!==_0xc299('0x43')){if(_0x1c5a07[_0xc299('0x3e')]){_0x380736[_0xc299('0xc')]({'type':_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')](),'app':'ExecIf','appdata':_0xc299('0x44'),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07['intervals'][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});_0x380736['push']({'type':_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')](),'app':_0xc299('0x5'),'appdata':_0xc299('0x45'),'context':_0x18025d['context'],'exten':_0x18025d['exten'],'priority':_0x1c5a07['intervals'][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}else{_0x380736[_0xc299('0xc')]({'type':_0x1c5a07[_0xc299('0x4')]['toLowerCase'](),'app':_0xc299('0x19'),'appdata':_0xc299('0x46'),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});_0x380736[_0xc299('0xc')]({'type':_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')](),'app':'Set','appdata':_0xc299('0x47'),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}}}}for(var _0x1b132f=0x0;_0x1b132f<_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')];_0x1b132f++){var _0x9dc9de=_0x4f63b0+_0x1c5a07['intervals'][_0xc299('0x26')];var _0x1bcede=_0x1b132f===_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]-0x1?_0x4f63b0+_0x380736[_0xc299('0x26')]+_0x28eb19[_0xc299('0x26')]+0x2:_0x4f63b0+_0x1b132f+0x1;_0x380736[_0xc299('0x48')](_0x1b132f,0x0,{'type':_0x18025d[_0xc299('0x4')],'app':_0xc299('0x49'),'appdata':_0x1c5a07['intervals'][_0x1b132f]+'?'+_0x18025d[_0xc299('0x7')]+_0xc299('0x4a')+_0x9dc9de+':'+_0x18025d[_0xc299('0x7')]+_0xc299('0x4a')+_0x1bcede,'exten':_0x18025d['exten'],'context':_0x18025d[_0xc299('0x7')],'priority':_0x4f63b0+_0x1b132f,'VoiceExtensionId':_0x18025d['id']});}if(_0x1c79b0&&_0x1c5a07['appType']===_0xc299('0x4b'))_0x1c5a07[_0xc299('0x4c')]=_0xe4553d(_0x1c5a07['appdata']);_0x1c5a07['priority']=_0x380736['length']?_[_0xc299('0x4d')](_0x380736)[_0xc299('0x4e')]+0x1:_0x4f63b0;_0x5b9d3b=_[_0xc299('0x4f')](_0x5b9d3b,_0x380736,[_0x1c5a07],_0x28eb19);_0x4f63b0=_[_0xc299('0x4d')](_0x5b9d3b)['priority']+0x1;}return _0x2df671(_0x5b9d3b);})[_0xc299('0x50')](function(_0x2a5961){_0x25e010(_0x2a5961);});});}return _0x431864[_0xc299('0x51')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x16ddf2,_0x2fabb4){var _0x5c961f=this;var _0x315eef=_0x5c961f[_0xc299('0x4')]===_0xc299('0x12')?_0x450eb1(_0x5c961f):_0x6ad2cc(_0x5c961f);return _0x2d8914(_0x5c961f,_0x16ddf2,_[_0xc299('0x4d')](_0x315eef)['priority']+0x1,_0x2fabb4)[_0xc299('0x34')](function(_0x465560){var _0x5ed215=_[_0xc299('0x4f')](_0x315eef,_0x465560);_0x5ed215[_0xc299('0xc')]({'type':_0x5c961f[_0xc299('0x4')],'app':_0xc299('0x52'),'exten':_0x5c961f[_0xc299('0x8')],'context':_0x5c961f[_0xc299('0x7')],'priority':_['last'](_0x5ed215)[_0xc299('0x4e')]+0x1,'VoiceExtensionId':_0x5c961f['id']});return _0x5ed215;});}}});};
\ No newline at end of file
+var _0x1bbe=['MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(routeAlias)=','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','trunk','options','url','split','name','param','phone','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','length','*,*,*,*','intervals','filter','toLowerCase','tag','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','playback','includes','appType','custom','splice','GotoIfTime',',${EXTEN},','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','then','Hangup','util','./voiceExtension.attributes','type','CDR(type)=','context','exten','alias','Set','NoOp','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0'];(function(_0x31e00a,_0x50aded){var _0x48cb7a=function(_0x6c35b3){while(--_0x6c35b3){_0x31e00a['push'](_0x31e00a['shift']());}};_0x48cb7a(++_0x50aded);}(_0x1bbe,0x169));var _0xe1bb=function(_0x1ce67b,_0x5d1e9f){_0x1ce67b=_0x1ce67b-0x0;var _0xc64cb0=_0x1bbe[_0x1ce67b];return _0xc64cb0;};'use strict';var util=require(_0xe1bb('0x0'));var _=require('lodash');var attributes=require(_0xe1bb('0x1'));module['exports']=function(_0x3b88c0){var _0x432315=_0x3b88c0['models'];function _0x2784b2(_0x25f130){var _0x378d75=0x2;var _0x400d58=[{'type':_0x25f130[_0xe1bb('0x2')],'app':'Set','appdata':_0xe1bb('0x3')+_0x25f130[_0xe1bb('0x2')],'context':_0x25f130[_0xe1bb('0x4')],'exten':_0x25f130[_0xe1bb('0x5')],'priority':_0x378d75++,'VoiceExtensionId':_0x25f130['id']},{'type':_0x25f130[_0xe1bb('0x2')],'app':_0x25f130[_0xe1bb('0x6')]?_0xe1bb('0x7'):_0xe1bb('0x8'),'appdata':_0x25f130[_0xe1bb('0x6')]?'CDR(routeAlias)='+_0x25f130[_0xe1bb('0x6')]:_0xe1bb('0x9'),'context':_0x25f130[_0xe1bb('0x4')],'exten':_0x25f130[_0xe1bb('0x5')],'priority':_0x378d75++,'VoiceExtensionId':_0x25f130['id']}];if(_0x25f130[_0xe1bb('0x2')]===_0xe1bb('0xa')){_0x400d58[_0xe1bb('0xb')]({'type':_0xe1bb('0xa'),'app':'Set','appdata':_0xe1bb('0xc')+_0x25f130['id'],'context':_0x25f130[_0xe1bb('0x4')],'exten':_0x25f130['exten'],'priority':_0x378d75++,'VoiceExtensionId':_0x25f130['id']});}_0x400d58['push']({'type':_0x25f130[_0xe1bb('0x2')],'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0xd'),'context':_0x25f130[_0xe1bb('0x4')],'exten':_0x25f130[_0xe1bb('0x5')],'priority':_0x378d75++,'VoiceExtensionId':_0x25f130['id']},{'type':_0x25f130[_0xe1bb('0x2')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x25f130[_0xe1bb('0x4')],'exten':_0x25f130[_0xe1bb('0x5')],'priority':_0x378d75++,'VoiceExtensionId':_0x25f130['id']},{'type':_0x25f130[_0xe1bb('0x2')],'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0xe'),'context':_0x25f130[_0xe1bb('0x4')],'exten':_0x25f130[_0xe1bb('0x5')],'priority':_0x378d75++,'VoiceExtensionId':_0x25f130['id']});return _0x400d58;}function _0x3e2be0(_0x20f8e5){var _0x560c1b=0x2;var _0x41aea5=[{'type':_0xe1bb('0xf'),'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0x10'),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5['exten'],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':_0x20f8e5[_0xe1bb('0x6')]?_0xe1bb('0x7'):_0xe1bb('0x8'),'appdata':_0x20f8e5['alias']?_0xe1bb('0x11')+_0x20f8e5[_0xe1bb('0x6')]:_0xe1bb('0x9'),'context':_0x20f8e5['context'],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0x12')+(_0x20f8e5[_0xe1bb('0x13')]?_0xe1bb('0x14')+_0x20f8e5[_0xe1bb('0x13')]+'}':_0xe1bb('0x15')),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5['exten'],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':'outbound','app':_0xe1bb('0x7'),'appdata':_0xe1bb('0xc')+_0x20f8e5['id'],'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':_0xe1bb('0x16'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x560c1b+0x2)+'):Goto('+(_0x560c1b+0x1)+')','context':_0x20f8e5['context'],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':'outbound','app':_0xe1bb('0x7'),'appdata':_0x20f8e5[_0xe1bb('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0x20f8e5['cutdigits']+'}':_0xe1bb('0x17'),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0xd'),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5['exten'],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':'Set','appdata':_0xe1bb('0x18'),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5['exten'],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0xe'),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':'outbound','app':_0xe1bb('0x7'),'appdata':_0xe1bb('0x19')+_0x20f8e5['id'],'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5['exten'],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']}];if(_0x20f8e5[_0xe1bb('0x1a')](_0xe1bb('0x1b'))&&_0x20f8e5['recordingFormat']!==_0xe1bb('0x1c')){_0x41aea5[_0xe1bb('0xb')]({'type':_0xe1bb('0xf'),'app':_0xe1bb('0x7'),'appdata':_0xe1bb('0x1d'),'context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']},{'type':_0xe1bb('0xf'),'app':_0xe1bb('0x7'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x20f8e5[_0xe1bb('0x1b')]||'wav','context':_0x20f8e5[_0xe1bb('0x4')],'exten':_0x20f8e5[_0xe1bb('0x5')],'priority':_0x560c1b++,'VoiceExtensionId':_0x20f8e5['id']});}return _0x41aea5;}function _0x186c61(_0xb31103){var _0x222f09=[{'name':_0xe1bb('0x1e'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0xe1bb('0x1f'),'param':0x2},{'name':_0xe1bb('0x20'),'param':0x3}];var _0xa7b9b1={};var _0x5af965=_0xb31103[_0xe1bb('0x21')](',');var _0xb5bf08=[];for(var _0x4ddecd=0x0;_0x4ddecd<_0x222f09['length'];_0x4ddecd++){switch(_0x222f09[_0x4ddecd][_0xe1bb('0x22')]){case _0xe1bb('0x1e'):_0xa7b9b1[_0xe1bb('0x1e')]=_0x5af965[_0x222f09[_0x4ddecd][_0xe1bb('0x23')]][_0xe1bb('0x21')]('/')[0x1];_0xa7b9b1[_0xe1bb('0x24')]=_0x5af965[_0x222f09[_0x4ddecd][_0xe1bb('0x23')]]['split']('/')[0x2];_0xa7b9b1[_0xe1bb('0x25')]=_0xa7b9b1[_0xe1bb('0x24')]?_0xa7b9b1['phone'][_0xe1bb('0x21')]('$')[0x0]:undefined;_0xa7b9b1['phone']=route[_0xe1bb('0x13')]?(_0xa7b9b1[_0xe1bb('0x25')]||'')+_0xe1bb('0x14')+route[_0xe1bb('0x13')]+'}':(_0xa7b9b1[_0xe1bb('0x25')]||'')+_0xe1bb('0x15');_0xb5bf08[_0x222f09[_0x4ddecd][_0xe1bb('0x23')]]=[_0xe1bb('0x26'),_0xa7b9b1[_0xe1bb('0x1e')],_0xa7b9b1[_0xe1bb('0x24')]][_0xe1bb('0x27')]('/');break;case _0xe1bb('0x1f'):_0xa7b9b1[_0xe1bb('0x1f')]=_0x5af965[_0x222f09[_0x4ddecd]['param']];if(route[_0xe1bb('0x1b')]!=='none'){if(_0xa7b9b1[_0xe1bb('0x1f')][_0xe1bb('0x28')](_0xe1bb('0x29'))<0x0){_0xa7b9b1[_0xe1bb('0x1f')]+='U(xcally-mixmonitor-context)';}}else{_0xa7b9b1[_0xe1bb('0x1f')]=_0xa7b9b1[_0xe1bb('0x1f')][_0xe1bb('0x2a')]('U(xcally-mixmonitor-context)','');}_0xb5bf08[_0x222f09[_0x4ddecd][_0xe1bb('0x23')]]=_0xa7b9b1[_0xe1bb('0x1f')];break;default:_0xb5bf08[_0x222f09[_0x4ddecd]['param']]=_0x5af965[_0x222f09[_0x4ddecd][_0xe1bb('0x23')]];}}return _0xb5bf08['join'](',');}function _0x3ed9b6(_0x3776c3,_0x12eef3,_0x464fb0,_0x1eb59f){return new Promise(function(_0x1655ef,_0x123068){var _0x584eee=[];if(_[_0xe1bb('0x2b')](_0x12eef3))return _0x1655ef(_0x584eee);_0x432315[_0xe1bb('0x2c')][_0xe1bb('0x2d')]({'attributes':['id',_0xe1bb('0x2e'),_0xe1bb('0x2f')],'raw':!![]})['then'](function(_0x33ec94){for(var _0x5dc17b=0x0,_0x164aad=0x0;_0x5dc17b<_0x12eef3[_0xe1bb('0x30')];_0x5dc17b++,_0x164aad=0x0){var _0x4be831=_0x12eef3[_0x5dc17b];var _0xa720f4=[];var _0x533cf6=[];if(_0x4be831['interval']!==_0xe1bb('0x31')){_0x4be831[_0xe1bb('0x32')]=[_0x4be831[_0xe1bb('0x2e')]];}else{_0x4be831[_0xe1bb('0x32')]=_0x4be831[_0xe1bb('0x2f')]?_['map'](_[_0xe1bb('0x33')](_0x33ec94,{'IntervalId':_0x4be831[_0xe1bb('0x2f')]}),_0xe1bb('0x2e')):[];}_0x4be831[_0xe1bb('0x4')]=_0x3776c3[_0xe1bb('0x4')];_0x4be831['exten']=_0x3776c3[_0xe1bb('0x5')];if(_0x4be831['type'])_0x4be831[_0xe1bb('0x2')]=_0x4be831[_0xe1bb('0x2')][_0xe1bb('0x34')]();if(_0x3776c3[_0xe1bb('0x2')]===_0xe1bb('0xf')){if(_0x4be831[_0xe1bb('0x1a')]('tag')&&_0x4be831['tag']&&_0x4be831[_0xe1bb('0x35')]!=='--'){_0xa720f4['push']({'type':_0x4be831[_0xe1bb('0x2')][_0xe1bb('0x34')](),'app':'Set','appdata':'CDR(tag)='+_0x4be831['tag'],'context':_0x3776c3[_0xe1bb('0x4')],'exten':_0x3776c3[_0xe1bb('0x5')],'priority':_0x4be831['intervals'][_0xe1bb('0x30')]+_0x464fb0+_0x164aad++,'VoiceExtensionId':_0x3776c3['id']});}_0xa720f4[_0xe1bb('0xb')]({'type':_0x4be831[_0xe1bb('0x2')][_0xe1bb('0x34')](),'app':_0xe1bb('0x16'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x4be831['callerID']?_0xe1bb('0x36')+_0x4be831[_0xe1bb('0x37')]+')':_0xe1bb('0x38')),'context':_0x3776c3['context'],'exten':_0x3776c3['exten'],'priority':_0x4be831[_0xe1bb('0x32')][_0xe1bb('0x30')]+_0x464fb0+_0x164aad++,'VoiceExtensionId':_0x3776c3['id']});}else{if(_0x4be831[_0xe1bb('0x1a')](_0xe1bb('0x39'))){if(['queue',_0xe1bb('0x3a')][_0xe1bb('0x3b')](_0x4be831['app'][_0xe1bb('0x34')]())&&_0x4be831[_0xe1bb('0x3c')]!==_0xe1bb('0x3d')){if(_0x4be831['answer']){_0xa720f4[_0xe1bb('0xb')]({'type':_0x4be831[_0xe1bb('0x2')]['toLowerCase'](),'app':_0xe1bb('0x16'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x3776c3['context'],'exten':_0x3776c3[_0xe1bb('0x5')],'priority':_0x4be831['intervals'][_0xe1bb('0x30')]+_0x464fb0+_0x164aad++,'VoiceExtensionId':_0x3776c3['id']});_0xa720f4[_0xe1bb('0xb')]({'type':_0x4be831[_0xe1bb('0x2')]['toLowerCase'](),'app':_0xe1bb('0x7'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x3776c3[_0xe1bb('0x4')],'exten':_0x3776c3['exten'],'priority':_0x4be831['intervals'][_0xe1bb('0x30')]+_0x464fb0+_0x164aad++,'VoiceExtensionId':_0x3776c3['id']});}else{_0xa720f4[_0xe1bb('0xb')]({'type':_0x4be831['type'][_0xe1bb('0x34')](),'app':_0xe1bb('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x3776c3['context'],'exten':_0x3776c3[_0xe1bb('0x5')],'priority':_0x4be831[_0xe1bb('0x32')][_0xe1bb('0x30')]+_0x464fb0+_0x164aad++,'VoiceExtensionId':_0x3776c3['id']});_0xa720f4['push']({'type':_0x4be831[_0xe1bb('0x2')][_0xe1bb('0x34')](),'app':_0xe1bb('0x7'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x3776c3[_0xe1bb('0x4')],'exten':_0x3776c3[_0xe1bb('0x5')],'priority':_0x4be831[_0xe1bb('0x32')][_0xe1bb('0x30')]+_0x464fb0+_0x164aad++,'VoiceExtensionId':_0x3776c3['id']});}}}}for(var _0x51b8df=0x0;_0x51b8df<_0x4be831['intervals'][_0xe1bb('0x30')];_0x51b8df++){var _0x1e2c48=_0x464fb0+_0x4be831[_0xe1bb('0x32')][_0xe1bb('0x30')];var _0x195e18=_0x51b8df===_0x4be831['intervals'][_0xe1bb('0x30')]-0x1?_0x464fb0+_0xa720f4[_0xe1bb('0x30')]+_0x533cf6[_0xe1bb('0x30')]+0x2:_0x464fb0+_0x51b8df+0x1;_0xa720f4[_0xe1bb('0x3e')](_0x51b8df,0x0,{'type':_0x3776c3['type'],'app':_0xe1bb('0x3f'),'appdata':_0x4be831['intervals'][_0x51b8df]+'?'+_0x3776c3['context']+_0xe1bb('0x40')+_0x1e2c48+':'+_0x3776c3[_0xe1bb('0x4')]+_0xe1bb('0x40')+_0x195e18,'exten':_0x3776c3[_0xe1bb('0x5')],'context':_0x3776c3[_0xe1bb('0x4')],'priority':_0x464fb0+_0x51b8df,'VoiceExtensionId':_0x3776c3['id']});}if(_0x1eb59f&&_0x4be831[_0xe1bb('0x3c')]==='outboundDial')_0x4be831[_0xe1bb('0x41')]=_0x186c61(_0x4be831[_0xe1bb('0x41')]);_0x4be831[_0xe1bb('0x42')]=_0xa720f4['length']?_[_0xe1bb('0x43')](_0xa720f4)['priority']+0x1:_0x464fb0;_0x584eee=_[_0xe1bb('0x44')](_0x584eee,_0xa720f4,[_0x4be831],_0x533cf6);_0x464fb0=_['last'](_0x584eee)[_0xe1bb('0x42')]+0x1;}return _0x1655ef(_0x584eee);})[_0xe1bb('0x45')](function(_0x4f0f56){_0x123068(_0x4f0f56);});});}return _0x3b88c0[_0xe1bb('0x46')](_0xe1bb('0x47'),attributes,{'tableName':_0xe1bb('0x48'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0xa2e32f,_0x14f51b){var _0x4f5ea9=this;var _0x1991d2=_0x4f5ea9[_0xe1bb('0x2')]==='outbound'?_0x3e2be0(_0x4f5ea9):_0x2784b2(_0x4f5ea9);return _0x3ed9b6(_0x4f5ea9,_0xa2e32f,_[_0xe1bb('0x43')](_0x1991d2)['priority']+0x1,_0x14f51b)[_0xe1bb('0x49')](function(_0x57eba0){var _0x15458c=_[_0xe1bb('0x44')](_0x1991d2,_0x57eba0);_0x15458c['push']({'type':_0x4f5ea9['type'],'app':_0xe1bb('0x4a'),'exten':_0x4f5ea9[_0xe1bb('0x5')],'context':_0x4f5ea9[_0xe1bb('0x4')],'priority':_[_0xe1bb('0x43')](_0x15458c)[_0xe1bb('0x42')]+0x1,'VoiceExtensionId':_0x4f5ea9['id']});return _0x15458c;});}}});};
\ No newline at end of file
index d75484d..e4a684e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d7e=['VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','then','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voiceExtension.socket','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x1d7e,0x7d));var _0xe1d7=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x1d7e[_0x4243a3];return _0x1b2a33;};'use strict';var _=require('lodash');var util=require(_0xe1d7('0x0'));var moment=require(_0xe1d7('0x1'));var BPromise=require(_0xe1d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe1d7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1d7('0x4'));var logger=require(_0xe1d7('0x5'))(_0xe1d7('0x6'));var config=require(_0xe1d7('0x7'));var jayson=require(_0xe1d7('0x8'));var client=jayson[_0xe1d7('0x9')][_0xe1d7('0xa')]({'port':0x232a});config[_0xe1d7('0xb')]=_[_0xe1d7('0xc')](config[_0xe1d7('0xb')],{'host':_0xe1d7('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe1d7('0xb')]));require(_0xe1d7('0xe'))['register'](socket);function respondWithRpcPromise(_0xce8fb3,_0x56f8df,_0x28f0c4){return new BPromise(function(_0x57f715,_0x46e179){return client['request'](_0xce8fb3,_0x28f0c4)['then'](function(_0x3ffa8e){logger[_0xe1d7('0xf')](_0xe1d7('0x10'),_0x56f8df,_0xe1d7('0x11'));logger[_0xe1d7('0x12')](_0xe1d7('0x13'),_0x56f8df,_0xe1d7('0x11'),JSON[_0xe1d7('0x14')](_0x3ffa8e));if(_0x3ffa8e['error']){if(_0x3ffa8e[_0xe1d7('0x15')][_0xe1d7('0x16')]===0x1f4){logger[_0xe1d7('0x15')](_0xe1d7('0x10'),_0x56f8df,_0x3ffa8e[_0xe1d7('0x15')][_0xe1d7('0x17')]);return _0x46e179(_0x3ffa8e[_0xe1d7('0x15')]['message']);}logger[_0xe1d7('0x15')](_0xe1d7('0x10'),_0x56f8df,_0x3ffa8e[_0xe1d7('0x15')]['message']);return _0x57f715(_0x3ffa8e[_0xe1d7('0x15')][_0xe1d7('0x17')]);}else{logger[_0xe1d7('0xf')](_0xe1d7('0x10'),_0x56f8df,_0xe1d7('0x11'));_0x57f715(_0x3ffa8e[_0xe1d7('0x18')][_0xe1d7('0x17')]);}})[_0xe1d7('0x19')](function(_0x4722aa){logger[_0xe1d7('0x15')](_0xe1d7('0x10'),_0x56f8df,_0x4722aa);_0x46e179(_0x4722aa);});});}exports[_0xe1d7('0x1a')]=function(_0x4d8c7d){var _0x10cde2=this;return new Promise(function(_0x17317e,_0x1e9a1e){return db[_0xe1d7('0x1b')][_0xe1d7('0x1c')]({'raw':_0x4d8c7d['options']?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x1e')]===undefined?!![]:![]:!![],'where':_0x4d8c7d[_0xe1d7('0x1d')]?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x1f')]||null:null,'attributes':_0x4d8c7d['options']?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x20')]||null:null,'limit':_0x4d8c7d[_0xe1d7('0x1d')]?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x21')]||null:null,'include':_0x4d8c7d[_0xe1d7('0x1d')]?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x22')]?_[_0xe1d7('0x23')](_0x4d8c7d[_0xe1d7('0x1d')]['include'],function(_0x672bed){return{'model':db[_0x672bed[_0xe1d7('0x24')]],'as':_0x672bed['as'],'attributes':_0x672bed[_0xe1d7('0x20')],'include':_0x672bed['include']?_[_0xe1d7('0x23')](_0x672bed[_0xe1d7('0x22')],function(_0x19c671){return{'model':db[_0x19c671[_0xe1d7('0x24')]],'as':_0x19c671['as'],'attributes':_0x19c671[_0xe1d7('0x20')],'include':_0x19c671[_0xe1d7('0x22')]?_[_0xe1d7('0x23')](_0x19c671['include'],function(_0x3e8ca3){return{'model':db[_0x3e8ca3['model']],'as':_0x3e8ca3['as'],'attributes':_0x3e8ca3[_0xe1d7('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe1d7('0x25')](function(_0x48d17e){logger['info'](_0xe1d7('0x1a'),_0x4d8c7d);logger[_0xe1d7('0x12')](_0xe1d7('0x1a'),_0x4d8c7d,JSON[_0xe1d7('0x14')](_0x48d17e));_0x17317e(_0x48d17e);})[_0xe1d7('0x19')](function(_0x5bf10c){logger[_0xe1d7('0x15')](_0xe1d7('0x1a'),_0x5bf10c[_0xe1d7('0x17')],_0x4d8c7d);_0x1e9a1e(_0x10cde2[_0xe1d7('0x15')](0x1f4,_0x5bf10c[_0xe1d7('0x17')]));});});};
\ No newline at end of file
+var _0xd6d2=['findAll','options','raw','where','include','map','attributes','model','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','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'];(function(_0x3524d6,_0x1daa5f){var _0x357243=function(_0x480f6d){while(--_0x480f6d){_0x3524d6['push'](_0x3524d6['shift']());}};_0x357243(++_0x1daa5f);}(_0xd6d2,0xcb));var _0x2d6d=function(_0x130319,_0x481c86){_0x130319=_0x130319-0x0;var _0x48474a=_0xd6d2[_0x130319];return _0x48474a;};'use strict';var _=require(_0x2d6d('0x0'));var util=require(_0x2d6d('0x1'));var moment=require('moment');var BPromise=require(_0x2d6d('0x2'));var rs=require(_0x2d6d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d6d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2d6d('0x5'))(_0x2d6d('0x6'));var config=require(_0x2d6d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2d6d('0x8')][_0x2d6d('0x9')]({'port':0x232a});config[_0x2d6d('0xa')]=_[_0x2d6d('0xb')](config[_0x2d6d('0xa')],{'host':_0x2d6d('0xc'),'port':0x18eb});var socket=require(_0x2d6d('0xd'))(new Redis(config[_0x2d6d('0xa')]));require(_0x2d6d('0xe'))[_0x2d6d('0xf')](socket);function respondWithRpcPromise(_0x1a1f60,_0x4bf440,_0x25fc41){return new BPromise(function(_0x32a9c3,_0x3ea447){return client[_0x2d6d('0x10')](_0x1a1f60,_0x25fc41)[_0x2d6d('0x11')](function(_0x4f1a98){logger[_0x2d6d('0x12')](_0x2d6d('0x13'),_0x4bf440,_0x2d6d('0x14'));logger[_0x2d6d('0x15')](_0x2d6d('0x16'),_0x4bf440,'request\x20sent',JSON[_0x2d6d('0x17')](_0x4f1a98));if(_0x4f1a98[_0x2d6d('0x18')]){if(_0x4f1a98[_0x2d6d('0x18')][_0x2d6d('0x19')]===0x1f4){logger['error'](_0x2d6d('0x13'),_0x4bf440,_0x4f1a98[_0x2d6d('0x18')]['message']);return _0x3ea447(_0x4f1a98['error'][_0x2d6d('0x1a')]);}logger[_0x2d6d('0x18')](_0x2d6d('0x13'),_0x4bf440,_0x4f1a98['error'][_0x2d6d('0x1a')]);return _0x32a9c3(_0x4f1a98['error']['message']);}else{logger['info'](_0x2d6d('0x13'),_0x4bf440,_0x2d6d('0x14'));_0x32a9c3(_0x4f1a98[_0x2d6d('0x1b')][_0x2d6d('0x1a')]);}})[_0x2d6d('0x1c')](function(_0x1bb4db){logger[_0x2d6d('0x18')](_0x2d6d('0x13'),_0x4bf440,_0x1bb4db);_0x3ea447(_0x1bb4db);});});}exports[_0x2d6d('0x1d')]=function(_0x4898a7){var _0x315d13=this;return new Promise(function(_0x41d287,_0x5b0c61){return db[_0x2d6d('0x1e')][_0x2d6d('0x1f')]({'raw':_0x4898a7[_0x2d6d('0x20')]?_0x4898a7[_0x2d6d('0x20')][_0x2d6d('0x21')]===undefined?!![]:![]:!![],'where':_0x4898a7[_0x2d6d('0x20')]?_0x4898a7['options'][_0x2d6d('0x22')]||null:null,'attributes':_0x4898a7[_0x2d6d('0x20')]?_0x4898a7[_0x2d6d('0x20')]['attributes']||null:null,'limit':_0x4898a7['options']?_0x4898a7[_0x2d6d('0x20')]['limit']||null:null,'include':_0x4898a7['options']?_0x4898a7['options'][_0x2d6d('0x23')]?_[_0x2d6d('0x24')](_0x4898a7[_0x2d6d('0x20')][_0x2d6d('0x23')],function(_0x3e5a92){return{'model':db[_0x3e5a92['model']],'as':_0x3e5a92['as'],'attributes':_0x3e5a92[_0x2d6d('0x25')],'include':_0x3e5a92[_0x2d6d('0x23')]?_[_0x2d6d('0x24')](_0x3e5a92[_0x2d6d('0x23')],function(_0x33817d){return{'model':db[_0x33817d[_0x2d6d('0x26')]],'as':_0x33817d['as'],'attributes':_0x33817d[_0x2d6d('0x25')],'include':_0x33817d[_0x2d6d('0x23')]?_[_0x2d6d('0x24')](_0x33817d['include'],function(_0x1016e1){return{'model':db[_0x1016e1[_0x2d6d('0x26')]],'as':_0x1016e1['as'],'attributes':_0x1016e1[_0x2d6d('0x25')]};}):[]};}):[]};}):[]:[]})[_0x2d6d('0x11')](function(_0x486963){logger[_0x2d6d('0x12')]('GetVoiceExtension',_0x4898a7);logger[_0x2d6d('0x15')]('GetVoiceExtension',_0x4898a7,JSON['stringify'](_0x486963));_0x41d287(_0x486963);})[_0x2d6d('0x1c')](function(_0x557ad8){logger[_0x2d6d('0x18')](_0x2d6d('0x1d'),_0x557ad8['message'],_0x4898a7);_0x5b0c61(_0x315d13[_0x2d6d('0x18')](0x1f4,_0x557ad8['message']));});});};
\ No newline at end of file
index 81a77c8..12ca87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['update','emit','removeListener','register','length','./voiceExtension.events'];(function(_0x2f9955,_0x281db4){var _0x174ae7=function(_0x243112){while(--_0x243112){_0x2f9955['push'](_0x2f9955['shift']());}};_0x174ae7(++_0x281db4);}(_0x326f,0xd1));var _0xf326=function(_0x12d8f8,_0x3b0fd2){_0x12d8f8=_0x12d8f8-0x0;var _0x2ceca1=_0x326f[_0x12d8f8];return _0x2ceca1;};'use strict';var VoiceExtensionEvents=require(_0xf326('0x0'));var events=['save','remove',_0xf326('0x1')];function createListener(_0x330ddb,_0x22aabf){return function(_0x408257){_0x22aabf[_0xf326('0x2')](_0x330ddb,_0x408257);};}function removeListener(_0x120a26,_0x9445c6){return function(){VoiceExtensionEvents[_0xf326('0x3')](_0x120a26,_0x9445c6);};}exports[_0xf326('0x4')]=function(_0x3ace29){for(var _0x4c2249=0x0,_0x3c254d=events[_0xf326('0x5')];_0x4c2249<_0x3c254d;_0x4c2249++){var _0x165f95=events[_0x4c2249];var _0x1e7b8a=createListener('voiceExtension:'+_0x165f95,_0x3ace29);VoiceExtensionEvents['on'](_0x165f95,_0x1e7b8a);}};
\ No newline at end of file
+var _0x814b=['removeListener','register','length','voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0x814b,0x1a2));var _0xb814=function(_0x387dc1,_0x3ba649){_0x387dc1=_0x387dc1-0x0;var _0x17567c=_0x814b[_0x387dc1];return _0x17567c;};'use strict';var VoiceExtensionEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0xfbb64b,_0x477725){return function(_0x4a98af){_0x477725[_0xb814('0x4')](_0xfbb64b,_0x4a98af);};}function removeListener(_0x3e1e9,_0x258866){return function(){VoiceExtensionEvents[_0xb814('0x5')](_0x3e1e9,_0x258866);};}exports[_0xb814('0x6')]=function(_0x322a70){for(var _0x53e507=0x0,_0x3b0829=events[_0xb814('0x7')];_0x53e507<_0x3b0829;_0x53e507++){var _0x5c8539=events[_0x53e507];var _0x271af9=createListener(_0xb814('0x8')+_0x5c8539,_0x322a70);VoiceExtensionEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
index 5e060e6..83bfe20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','index','isAuthenticated','show','/:id/messages','create','put','update'];(function(_0x1e8683,_0x39ed26){var _0x10553f=function(_0x2b172e){while(--_0x2b172e){_0x1e8683['push'](_0x1e8683['shift']());}};_0x10553f(++_0x39ed26);}(_0xa46e,0x8a));var _0xea46=function(_0x21205e,_0x7eb8e7){_0x21205e=_0x21205e-0x0;var _0x136ebb=_0xa46e[_0x21205e];return _0x136ebb;};'use strict';var multer=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var path=require('path');var timeout=require(_0xea46('0x2'));var express=require(_0xea46('0x3'));var router=express[_0xea46('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xea46('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xea46('0x6'));var controller=require('./voiceMail.controller');router[_0xea46('0x7')]('/',auth['isAuthenticated'](),controller[_0xea46('0x8')]);router[_0xea46('0x7')]('/:id',auth[_0xea46('0x9')](),controller[_0xea46('0xa')]);router[_0xea46('0x7')](_0xea46('0xb'),auth[_0xea46('0x9')](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller[_0xea46('0xc')]);router[_0xea46('0xd')]('/:id',auth[_0xea46('0x9')](),controller[_0xea46('0xe')]);router[_0xea46('0xf')]('/:id',auth[_0xea46('0x9')](),controller[_0xea46('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xc6ac=['./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5d05e4,_0x4c3e1c){var _0x18ca9b=function(_0x242bf5){while(--_0x242bf5){_0x5d05e4['push'](_0x5d05e4['shift']());}};_0x18ca9b(++_0x4c3e1c);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x537db8,_0x1de566){_0x537db8=_0x537db8-0x0;var _0x2f8e94=_0xc6ac[_0x537db8];return _0x2f8e94;};'use strict';var multer=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var path=require(_0xcc6a('0x2'));var timeout=require(_0xcc6a('0x3'));var express=require(_0xcc6a('0x4'));var router=express[_0xcc6a('0x5')]();var fs_extra=require(_0xcc6a('0x6'));var auth=require(_0xcc6a('0x7'));var interaction=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var controller=require(_0xcc6a('0xa'));router[_0xcc6a('0xb')]('/',auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xd')]);router['get'](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xf')]);router['get'](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0x11')]);router[_0xcc6a('0x12')]('/',auth[_0xcc6a('0xc')](),controller['create']);router[_0xcc6a('0x13')](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller['update']);router[_0xcc6a('0x14')](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8a63529..df0c283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f2=['\x20-\x20','mailbox','sequelize','exports','STRING','contest_mailbox','email','string','trim','ENUM','yes','TIMESTAMP','INTEGER','getDataValue','fullname'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe0f2,0x98));var _0x2e0f=function(_0x4e5f1d,_0x3725bf){_0x4e5f1d=_0x4e5f1d-0x0;var _0x2c093=_0xe0f2[_0x4e5f1d];return _0x2c093;};'use strict';var Sequelize=require(_0x2e0f('0x0'));module[_0x2e0f('0x1')]={'customer_id':{'type':Sequelize[_0x2e0f('0x2')]},'context':{'type':Sequelize[_0x2e0f('0x2')],'defaultValue':'from-voicemail','unique':_0x2e0f('0x3')},'mailbox':{'type':Sequelize[_0x2e0f('0x2')],'defaultValue':'','allowNull':![],'unique':_0x2e0f('0x3')},'password':{'type':Sequelize[_0x2e0f('0x2')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x597dcc){this['setDataValue'](_0x2e0f('0x4'),typeof _0x597dcc===_0x2e0f('0x5')&&_0x597dcc['trim']()?_0x597dcc[_0x2e0f('0x6')]():null);}},'pager':{'type':Sequelize[_0x2e0f('0x2')]},'tz':{'type':Sequelize[_0x2e0f('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':_0x2e0f('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':_0x2e0f('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x2e0f('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':_0x2e0f('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x2e0f('0x9')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x2e0f('0x2')]},'maxsecs':{'type':Sequelize[_0x2e0f('0xa')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x2e0f('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x2e0f('0xb')](_0x2e0f('0xc'))+_0x2e0f('0xd')+this[_0x2e0f('0xb')](_0x2e0f('0xe'));}}};
\ No newline at end of file
+var _0xa927=['contest_mailbox','setDataValue','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING'];(function(_0x5c33be,_0x19e63d){var _0x27e9ea=function(_0x418147){while(--_0x418147){_0x5c33be['push'](_0x5c33be['shift']());}};_0x27e9ea(++_0x19e63d);}(_0xa927,0x10d));var _0x7a92=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xa927[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x7a92('0x0'));module[_0x7a92('0x1')]={'customer_id':{'type':Sequelize[_0x7a92('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':'from-voicemail','unique':_0x7a92('0x3')},'mailbox':{'type':Sequelize[_0x7a92('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x7a92('0x2')]},'email':{'type':Sequelize[_0x7a92('0x2')],'validate':{'isEmail':!![]},'set':function(_0x41e0e6){this[_0x7a92('0x4')]('email',typeof _0x41e0e6==='string'&&_0x41e0e6[_0x7a92('0x5')]()?_0x41e0e6['trim']():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0x7a92('0x2')],'defaultValue':_0x7a92('0x6')},'attach':{'type':Sequelize[_0x7a92('0x7')]('yes','no'),'defaultValue':_0x7a92('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x7a92('0x7')]('yes','no'),'defaultValue':_0x7a92('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x7a92('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x7a92('0x7')](_0x7a92('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x7a92('0x7')](_0x7a92('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x7a92('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x7a92('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x7a92('0x7')](_0x7a92('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x7a92('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x7a92('0x7')]('yes','no'),'defaultValue':_0x7a92('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x7a92('0x7')](_0x7a92('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x7a92('0x7')](_0x7a92('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x7a92('0x8'),'allowNull':![]},'stamp':{'type':_0x7a92('0xa')},'emailsubject':{'type':Sequelize[_0x7a92('0x2')]},'emailbody':{'type':Sequelize[_0x7a92('0x2')]},'maxsecs':{'type':Sequelize[_0x7a92('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x7a92('0xc')],'get':function(){return this[_0x7a92('0xd')](_0x7a92('0xe'))+_0x7a92('0xf')+this[_0x7a92('0xd')](_0x7a92('0x10'));}}};
\ No newline at end of file
index f8d8ede..7e55fdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['Content-Range','apply','reject','save','update','then','get','Voicemails','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','model','keys','query','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','map','type','VIRTUAL','merge','options','VoiceMail','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','destroy','getMessages','findOne','VoiceMailMessage','hasOwnProperty','order','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x65c1eb,_0x31191b){var _0x65f45c=function(_0xee6714){while(--_0xee6714){_0x65c1eb['push'](_0x65c1eb['shift']());}};_0x65f45c(++_0x31191b);}(_0x0abf,0xe8));var _0xf0ab=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x0abf[_0x2b4411];return _0x8e41ef;};'use strict';var emlformat=require(_0xf0ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0ab('0x1'));var jsonpatch=require(_0xf0ab('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0ab('0x3'));var Mustache=require('mustache');var util=require(_0xf0ab('0x4'));var path=require(_0xf0ab('0x5'));var sox=require(_0xf0ab('0x6'));var csv=require(_0xf0ab('0x7'));var ejs=require(_0xf0ab('0x8'));var fs=require('fs');var fs_extra=require(_0xf0ab('0x9'));var _=require(_0xf0ab('0xa'));var squel=require('squel');var crypto=require(_0xf0ab('0xb'));var jsforce=require(_0xf0ab('0xc'));var deskjs=require(_0xf0ab('0xd'));var toCsv=require(_0xf0ab('0x7'));var querystring=require('querystring');var Papa=require(_0xf0ab('0xe'));var Redis=require(_0xf0ab('0xf'));var authService=require(_0xf0ab('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0ab('0x11'));var logger=require('../../config/logger')(_0xf0ab('0x12'));var utils=require(_0xf0ab('0x13'));var config=require(_0xf0ab('0x14'));var licenseUtil=require(_0xf0ab('0x15'));var db=require(_0xf0ab('0x16'))['db'];function respondWithStatusCode(_0x38ca67,_0x34ccdc){_0x34ccdc=_0x34ccdc||0xcc;return function(_0x4fdd5f){if(_0x4fdd5f){return _0x38ca67[_0xf0ab('0x17')](_0x34ccdc);}return _0x38ca67[_0xf0ab('0x18')](_0x34ccdc)[_0xf0ab('0x19')]();};}function respondWithResult(_0x35c75f,_0x1824ef){_0x1824ef=_0x1824ef||0xc8;return function(_0x36cabe){if(_0x36cabe){return _0x35c75f[_0xf0ab('0x18')](_0x1824ef)[_0xf0ab('0x1a')](_0x36cabe);}};}function respondWithFilteredResult(_0x180d0b,_0x3c5bfd){return function(_0x20f453){if(_0x20f453){var _0x221bac=typeof _0x3c5bfd[_0xf0ab('0x1b')]===_0xf0ab('0x1c')&&typeof _0x3c5bfd[_0xf0ab('0x1d')]==='undefined';var _0x457465=_0x20f453[_0xf0ab('0x1e')];var _0x1803f0=_0x221bac?0x0:_0x3c5bfd[_0xf0ab('0x1b')];var _0x776619=_0x221bac?_0x20f453[_0xf0ab('0x1e')]:_0x3c5bfd[_0xf0ab('0x1b')]+_0x3c5bfd[_0xf0ab('0x1d')];var _0x1713d6;if(_0x776619>=_0x457465){_0x776619=_0x457465;_0x1713d6=0xc8;}else{_0x1713d6=0xce;}_0x180d0b[_0xf0ab('0x18')](_0x1713d6);return _0x180d0b[_0xf0ab('0x1f')](_0xf0ab('0x20'),_0x1803f0+'-'+_0x776619+'/'+_0x457465)[_0xf0ab('0x1a')](_0x20f453);}return null;};}function patchUpdates(_0x22a205){return function(_0x2cd961){try{jsonpatch[_0xf0ab('0x21')](_0x2cd961,_0x22a205,!![]);}catch(_0x537673){return BPromise[_0xf0ab('0x22')](_0x537673);}return _0x2cd961[_0xf0ab('0x23')]();};}function saveUpdates(_0x1e1483,_0x11ab3a){return function(_0x3bf6a1){if(_0x3bf6a1){return _0x3bf6a1[_0xf0ab('0x24')](_0x1e1483)[_0xf0ab('0x25')](function(_0x20140b){return _0x20140b;});}return null;};}function removeEntity(_0x36ad01,_0x18bb37){return function(_0x43119f){if(_0x43119f){return _0x43119f['destroy']()['then'](function(){var _0x4eee21=_0x43119f[_0xf0ab('0x26')]({'plain':!![]});var _0x4f0caf=_0xf0ab('0x27');return db[_0xf0ab('0x28')]['destroy']({'where':{'type':_0x4f0caf,'resourceId':_0x4eee21['id']}})[_0xf0ab('0x25')](function(){return _0x43119f;});})[_0xf0ab('0x25')](function(){_0x36ad01[_0xf0ab('0x18')](0xcc)[_0xf0ab('0x19')]();});}};}function handleEntityNotFound(_0x7d4ff9,_0x502921){return function(_0x2d0da7){if(!_0x2d0da7){_0x7d4ff9['sendStatus'](0x194);}return _0x2d0da7;};}function handleError(_0x55d799,_0x1dcd2e){_0x1dcd2e=_0x1dcd2e||0x1f4;return function(_0x4306c6){logger[_0xf0ab('0x29')](_0x4306c6[_0xf0ab('0x2a')]);if(_0x4306c6[_0xf0ab('0x2b')]){delete _0x4306c6[_0xf0ab('0x2b')];}_0x55d799[_0xf0ab('0x18')](_0x1dcd2e)[_0xf0ab('0x2c')](_0x4306c6);};}exports[_0xf0ab('0x2d')]=function(_0x2f0fcd,_0x21e8ac){var _0x199753={},_0x58cbe1={},_0x1e1ffb={'count':0x0,'rows':[]};var _0x35973a=_['map'](db['VoiceMail'][_0xf0ab('0x2e')],function(_0x1dc84e){return{'name':_0x1dc84e[_0xf0ab('0x2f')],'type':_0x1dc84e['type']['key']};});_0x58cbe1[_0xf0ab('0x30')]=_['map'](_0x35973a,_0xf0ab('0x2b'));_0x58cbe1['query']=_[_0xf0ab('0x31')](_0x2f0fcd[_0xf0ab('0x32')]);_0x58cbe1['filters']=_['intersection'](_0x58cbe1[_0xf0ab('0x30')],_0x58cbe1[_0xf0ab('0x32')]);_0x199753[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x58cbe1[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x2f0fcd[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x199753[_0xf0ab('0x33')]=_0x199753[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x199753[_0xf0ab('0x33')]:_0x58cbe1[_0xf0ab('0x30')];if(!_0x2f0fcd[_0xf0ab('0x32')]['hasOwnProperty'](_0xf0ab('0x37'))){_0x199753[_0xf0ab('0x1d')]=qs[_0xf0ab('0x1d')](_0x2f0fcd['query'][_0xf0ab('0x1d')]);_0x199753[_0xf0ab('0x1b')]=qs[_0xf0ab('0x1b')](_0x2f0fcd['query'][_0xf0ab('0x1b')]);}_0x199753['order']=qs[_0xf0ab('0x38')](_0x2f0fcd['query'][_0xf0ab('0x38')]);_0x199753[_0xf0ab('0x39')]=qs[_0xf0ab('0x3a')](_[_0xf0ab('0x3b')](_0x2f0fcd[_0xf0ab('0x32')],_0x58cbe1[_0xf0ab('0x3a')]),_0x35973a);if(_0x2f0fcd['query'][_0xf0ab('0x3c')]){_0x199753[_0xf0ab('0x39')]=_['merge'](_0x199753[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x35973a,function(_0x1d4eec){if(_0x1d4eec[_0xf0ab('0x3e')]!==_0xf0ab('0x3f')){var _0x11e3b7={};_0x11e3b7[_0x1d4eec[_0xf0ab('0x2b')]]={'$like':'%'+_0x2f0fcd['query'][_0xf0ab('0x3c')]+'%'};return _0x11e3b7;}})});}_0x199753=_[_0xf0ab('0x40')]({},_0x199753,_0x2f0fcd[_0xf0ab('0x41')]);var _0x4bd6d1={'where':_0x199753[_0xf0ab('0x39')]};return db[_0xf0ab('0x42')][_0xf0ab('0x1e')](_0x4bd6d1)[_0xf0ab('0x25')](function(_0x2b7ed5){_0x1e1ffb['count']=_0x2b7ed5;if(_0x2f0fcd[_0xf0ab('0x32')][_0xf0ab('0x43')]){_0x199753[_0xf0ab('0x44')]=[{'all':!![]}];}return db[_0xf0ab('0x42')][_0xf0ab('0x45')](_0x199753);})[_0xf0ab('0x25')](function(_0x45849c){_0x1e1ffb[_0xf0ab('0x46')]=_0x45849c;return _0x1e1ffb;})[_0xf0ab('0x25')](respondWithFilteredResult(_0x21e8ac,_0x199753))[_0xf0ab('0x47')](handleError(_0x21e8ac,null));};exports[_0xf0ab('0x48')]=function(_0x32ec93,_0x22a265){var _0x5e6b6b={'raw':!![],'where':{'id':_0x32ec93[_0xf0ab('0x49')]['id']}},_0x4c4ab9={};_0x4c4ab9['model']=_[_0xf0ab('0x31')](db[_0xf0ab('0x42')]['rawAttributes']);_0x4c4ab9[_0xf0ab('0x32')]=_[_0xf0ab('0x31')](_0x32ec93['query']);_0x4c4ab9[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x4c4ab9[_0xf0ab('0x30')],_0x4c4ab9[_0xf0ab('0x32')]);_0x5e6b6b[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x4c4ab9[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x32ec93[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x5e6b6b[_0xf0ab('0x33')]=_0x5e6b6b[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x5e6b6b[_0xf0ab('0x33')]:_0x4c4ab9['model'];if(_0x32ec93['query'][_0xf0ab('0x43')]){_0x5e6b6b['include']=[{'all':!![]}];}_0x5e6b6b=_['merge']({},_0x5e6b6b,_0x32ec93['options']);return db[_0xf0ab('0x42')][_0xf0ab('0x4a')](_0x5e6b6b)[_0xf0ab('0x25')](handleEntityNotFound(_0x22a265,null))[_0xf0ab('0x25')](respondWithResult(_0x22a265,null))[_0xf0ab('0x47')](handleError(_0x22a265,null));};exports[_0xf0ab('0x4b')]=function(_0x472c1b,_0x1a0f21){return db[_0xf0ab('0x42')][_0xf0ab('0x4b')](_0x472c1b[_0xf0ab('0x4c')],{})[_0xf0ab('0x25')](function(_0x4e6c9b){var _0x393c9a=_0x472c1b[_0xf0ab('0x4d')][_0xf0ab('0x26')]({'plain':!![]});if(!_0x393c9a)throw new Error(_0xf0ab('0x4e'));if(_0x393c9a[_0xf0ab('0x4f')]===_0xf0ab('0x4d')){var _0x430921=_0x4e6c9b[_0xf0ab('0x26')]({'plain':!![]});var _0x47f564='Voicemails';return db['UserProfileSection'][_0xf0ab('0x4a')]({'where':{'name':_0x47f564,'userProfileId':_0x393c9a[_0xf0ab('0x50')]},'raw':!![]})['then'](function(_0xa1a416){if(_0xa1a416&&_0xa1a416[_0xf0ab('0x51')]===0x0){return db['UserProfileResource'][_0xf0ab('0x4b')]({'name':_0x430921[_0xf0ab('0x2b')],'resourceId':_0x430921['id'],'type':_0xa1a416[_0xf0ab('0x2b')],'sectionId':_0xa1a416['id']},{})[_0xf0ab('0x25')](function(){return _0x4e6c9b;});}else{return _0x4e6c9b;}})[_0xf0ab('0x47')](function(_0x33112b){logger[_0xf0ab('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x33112b);throw _0x33112b;});}return _0x4e6c9b;})[_0xf0ab('0x25')](respondWithResult(_0x1a0f21,0xc9))['catch'](handleError(_0x1a0f21,null));};exports[_0xf0ab('0x24')]=function(_0x4c9d2b,_0x1a402b){if(_0x4c9d2b['body']['id']){delete _0x4c9d2b['body']['id'];}return db[_0xf0ab('0x42')]['find']({'where':{'id':_0x4c9d2b[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a402b,null))[_0xf0ab('0x25')](saveUpdates(_0x4c9d2b['body'],null))[_0xf0ab('0x25')](respondWithResult(_0x1a402b,null))[_0xf0ab('0x47')](handleError(_0x1a402b,null));};exports[_0xf0ab('0x52')]=function(_0x57f9dd,_0x47f270){return db['VoiceMail'][_0xf0ab('0x4a')]({'where':{'id':_0x57f9dd[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x47f270,null))['then'](removeEntity(_0x47f270,null))[_0xf0ab('0x47')](handleError(_0x47f270,null));};exports[_0xf0ab('0x53')]=function(_0x8df75a,_0x4ead7d,_0x227597){return db[_0xf0ab('0x42')][_0xf0ab('0x54')]({'where':{'id':_0x8df75a[_0xf0ab('0x49')]['id']}})[_0xf0ab('0x25')](handleEntityNotFound(_0x4ead7d,null))[_0xf0ab('0x25')](function(_0x1e6a4e){var _0x4d80a6;var _0x41ed17={},_0x5b24e3={};_0x5b24e3[_0xf0ab('0x30')]=_[_0xf0ab('0x31')](db[_0xf0ab('0x55')][_0xf0ab('0x2e')]);_0x5b24e3[_0xf0ab('0x32')]=_[_0xf0ab('0x31')](_0x8df75a[_0xf0ab('0x32')]);_0x5b24e3[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x5b24e3[_0xf0ab('0x30')],_0x5b24e3['query']);_0x41ed17[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x5b24e3[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x41ed17[_0xf0ab('0x33')]=_0x41ed17[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x41ed17['attributes']:_0x5b24e3['model'];if(!_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x56')](_0xf0ab('0x37'))){_0x41ed17['limit']=qs[_0xf0ab('0x1d')](_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x1d')]);_0x41ed17['offset']=qs[_0xf0ab('0x1b')](_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x1b')]);}_0x41ed17[_0xf0ab('0x57')]=qs[_0xf0ab('0x38')](_0x8df75a['query'][_0xf0ab('0x38')]);_0x41ed17[_0xf0ab('0x39')]=qs[_0xf0ab('0x3a')](_[_0xf0ab('0x3b')](_0x8df75a[_0xf0ab('0x32')],_0x5b24e3[_0xf0ab('0x3a')]));if(_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x3c')]){_0x41ed17[_0xf0ab('0x39')]=_[_0xf0ab('0x40')](_0x41ed17[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x41ed17[_0xf0ab('0x33')],function(_0x513ed3){var _0x5c9c0e={};_0x5c9c0e[_0x513ed3]={'$like':'%'+_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x3c')]+'%'};return _0x5c9c0e;})});}_0x41ed17[_0xf0ab('0x39')]=_['merge'](_0x41ed17[_0xf0ab('0x39')],{'mailboxuser':_0x1e6a4e['mailbox']});_0x41ed17=_[_0xf0ab('0x40')]({},_0x41ed17,_0x8df75a[_0xf0ab('0x41')]);return db[_0xf0ab('0x55')]['findAndCountAll'](_0x41ed17)[_0xf0ab('0x25')](respondWithFilteredResult(_0x4ead7d,_0x41ed17));})['catch'](handleError(_0x4ead7d,null));};
\ No newline at end of file
+var _0x5ec6=['map','VoiceMail','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','where','filter','merge','VIRTUAL','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','findOne','hasOwnProperty','order','sort','pick','eml-format','rimraf','zip-dir','request-promise','bluebird','util','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','stack','name','send','index'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x5ec6,0x7f));var _0x65ec=function(_0x373dc5,_0x17faa8){_0x373dc5=_0x373dc5-0x0;var _0x26cbfa=_0x5ec6[_0x373dc5];return _0x26cbfa;};'use strict';var emlformat=require(_0x65ec('0x0'));var rimraf=require(_0x65ec('0x1'));var zipdir=require(_0x65ec('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x65ec('0x3'));var moment=require('moment');var BPromise=require(_0x65ec('0x4'));var Mustache=require('mustache');var util=require(_0x65ec('0x5'));var path=require('path');var sox=require(_0x65ec('0x6'));var csv=require('to-csv');var ejs=require(_0x65ec('0x7'));var fs=require('fs');var fs_extra=require(_0x65ec('0x8'));var _=require('lodash');var squel=require(_0x65ec('0x9'));var crypto=require(_0x65ec('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x65ec('0xb'));var toCsv=require(_0x65ec('0xc'));var querystring=require(_0x65ec('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65ec('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x65ec('0xf'));var hardwareService=require(_0x65ec('0x10'));var logger=require('../../config/logger')(_0x65ec('0x11'));var utils=require(_0x65ec('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x65ec('0x13'));var db=require(_0x65ec('0x14'))['db'];function respondWithStatusCode(_0x53d62b,_0x3e52c8){_0x3e52c8=_0x3e52c8||0xcc;return function(_0x2af7d6){if(_0x2af7d6){return _0x53d62b[_0x65ec('0x15')](_0x3e52c8);}return _0x53d62b[_0x65ec('0x16')](_0x3e52c8)[_0x65ec('0x17')]();};}function respondWithResult(_0x434e20,_0x344724){_0x344724=_0x344724||0xc8;return function(_0x3edbfd){if(_0x3edbfd){return _0x434e20['status'](_0x344724)[_0x65ec('0x18')](_0x3edbfd);}};}function respondWithFilteredResult(_0x3ed6f7,_0x35d06b){return function(_0x4bbe88){if(_0x4bbe88){var _0x5a0442=typeof _0x35d06b[_0x65ec('0x19')]===_0x65ec('0x1a')&&typeof _0x35d06b[_0x65ec('0x1b')]==='undefined';var _0x25dae7=_0x4bbe88[_0x65ec('0x1c')];var _0x1254f8=_0x5a0442?0x0:_0x35d06b[_0x65ec('0x19')];var _0x29ebc4=_0x5a0442?_0x4bbe88[_0x65ec('0x1c')]:_0x35d06b[_0x65ec('0x19')]+_0x35d06b[_0x65ec('0x1b')];var _0x2127e2;if(_0x29ebc4>=_0x25dae7){_0x29ebc4=_0x25dae7;_0x2127e2=0xc8;}else{_0x2127e2=0xce;}_0x3ed6f7[_0x65ec('0x16')](_0x2127e2);return _0x3ed6f7[_0x65ec('0x1d')](_0x65ec('0x1e'),_0x1254f8+'-'+_0x29ebc4+'/'+_0x25dae7)[_0x65ec('0x18')](_0x4bbe88);}return null;};}function patchUpdates(_0x1467ac){return function(_0x3804a4){try{jsonpatch[_0x65ec('0x1f')](_0x3804a4,_0x1467ac,!![]);}catch(_0x15d4eb){return BPromise[_0x65ec('0x20')](_0x15d4eb);}return _0x3804a4[_0x65ec('0x21')]();};}function saveUpdates(_0x4ff93c,_0x170703){return function(_0x297fba){if(_0x297fba){return _0x297fba[_0x65ec('0x22')](_0x4ff93c)[_0x65ec('0x23')](function(_0x1d60fb){return _0x1d60fb;});}return null;};}function removeEntity(_0x163e55,_0x47288d){return function(_0x58239f){if(_0x58239f){return _0x58239f[_0x65ec('0x24')]()[_0x65ec('0x23')](function(){var _0x13ac27=_0x58239f[_0x65ec('0x25')]({'plain':!![]});var _0x288e66=_0x65ec('0x26');return db[_0x65ec('0x27')][_0x65ec('0x24')]({'where':{'type':_0x288e66,'resourceId':_0x13ac27['id']}})[_0x65ec('0x23')](function(){return _0x58239f;});})['then'](function(){_0x163e55[_0x65ec('0x16')](0xcc)[_0x65ec('0x17')]();});}};}function handleEntityNotFound(_0x251831,_0x23b1a3){return function(_0x4de451){if(!_0x4de451){_0x251831[_0x65ec('0x15')](0x194);}return _0x4de451;};}function handleError(_0x588fe4,_0x37489f){_0x37489f=_0x37489f||0x1f4;return function(_0x1ada47){logger[_0x65ec('0x28')](_0x1ada47[_0x65ec('0x29')]);if(_0x1ada47[_0x65ec('0x2a')]){delete _0x1ada47[_0x65ec('0x2a')];}_0x588fe4[_0x65ec('0x16')](_0x37489f)[_0x65ec('0x2b')](_0x1ada47);};}exports[_0x65ec('0x2c')]=function(_0xeec5d4,_0x3c97e2){var _0x4b435c={},_0x50d81f={},_0x1d2e24={'count':0x0,'rows':[]};var _0x5084af=_[_0x65ec('0x2d')](db[_0x65ec('0x2e')]['rawAttributes'],function(_0x1dd1c0){return{'name':_0x1dd1c0[_0x65ec('0x2f')],'type':_0x1dd1c0[_0x65ec('0x30')][_0x65ec('0x31')]};});_0x50d81f['model']=_[_0x65ec('0x2d')](_0x5084af,_0x65ec('0x2a'));_0x50d81f[_0x65ec('0x32')]=_[_0x65ec('0x33')](_0xeec5d4[_0x65ec('0x32')]);_0x50d81f[_0x65ec('0x34')]=_[_0x65ec('0x35')](_0x50d81f[_0x65ec('0x36')],_0x50d81f[_0x65ec('0x32')]);_0x4b435c[_0x65ec('0x37')]=_['intersection'](_0x50d81f[_0x65ec('0x36')],qs[_0x65ec('0x38')](_0xeec5d4['query'][_0x65ec('0x38')]));_0x4b435c[_0x65ec('0x37')]=_0x4b435c[_0x65ec('0x37')][_0x65ec('0x39')]?_0x4b435c[_0x65ec('0x37')]:_0x50d81f[_0x65ec('0x36')];if(!_0xeec5d4[_0x65ec('0x32')]['hasOwnProperty'](_0x65ec('0x3a'))){_0x4b435c[_0x65ec('0x1b')]=qs[_0x65ec('0x1b')](_0xeec5d4[_0x65ec('0x32')]['limit']);_0x4b435c[_0x65ec('0x19')]=qs[_0x65ec('0x19')](_0xeec5d4[_0x65ec('0x32')][_0x65ec('0x19')]);}_0x4b435c['order']=qs['sort'](_0xeec5d4[_0x65ec('0x32')]['sort']);_0x4b435c[_0x65ec('0x3b')]=qs[_0x65ec('0x34')](_['pick'](_0xeec5d4[_0x65ec('0x32')],_0x50d81f[_0x65ec('0x34')]),_0x5084af);if(_0xeec5d4[_0x65ec('0x32')][_0x65ec('0x3c')]){_0x4b435c[_0x65ec('0x3b')]=_[_0x65ec('0x3d')](_0x4b435c[_0x65ec('0x3b')],{'$or':_[_0x65ec('0x2d')](_0x5084af,function(_0x470bb3){if(_0x470bb3[_0x65ec('0x30')]!==_0x65ec('0x3e')){var _0x5cdb0f={};_0x5cdb0f[_0x470bb3[_0x65ec('0x2a')]]={'$like':'%'+_0xeec5d4['query'][_0x65ec('0x3c')]+'%'};return _0x5cdb0f;}})});}_0x4b435c=_[_0x65ec('0x3d')]({},_0x4b435c,_0xeec5d4[_0x65ec('0x3f')]);var _0x1bfc44={'where':_0x4b435c[_0x65ec('0x3b')]};return db[_0x65ec('0x2e')]['count'](_0x1bfc44)[_0x65ec('0x23')](function(_0x4ba7df){_0x1d2e24['count']=_0x4ba7df;if(_0xeec5d4[_0x65ec('0x32')][_0x65ec('0x40')]){_0x4b435c[_0x65ec('0x41')]=[{'all':!![]}];}return db[_0x65ec('0x2e')][_0x65ec('0x42')](_0x4b435c);})['then'](function(_0x4843ca){_0x1d2e24[_0x65ec('0x43')]=_0x4843ca;return _0x1d2e24;})[_0x65ec('0x23')](respondWithFilteredResult(_0x3c97e2,_0x4b435c))[_0x65ec('0x44')](handleError(_0x3c97e2,null));};exports[_0x65ec('0x45')]=function(_0x11edd1,_0x55642b){var _0x5c8bfd={'raw':!![],'where':{'id':_0x11edd1[_0x65ec('0x46')]['id']}},_0x38d1fe={};_0x38d1fe[_0x65ec('0x36')]=_[_0x65ec('0x33')](db[_0x65ec('0x2e')][_0x65ec('0x47')]);_0x38d1fe[_0x65ec('0x32')]=_['keys'](_0x11edd1[_0x65ec('0x32')]);_0x38d1fe[_0x65ec('0x34')]=_[_0x65ec('0x35')](_0x38d1fe['model'],_0x38d1fe[_0x65ec('0x32')]);_0x5c8bfd[_0x65ec('0x37')]=_['intersection'](_0x38d1fe[_0x65ec('0x36')],qs[_0x65ec('0x38')](_0x11edd1[_0x65ec('0x32')][_0x65ec('0x38')]));_0x5c8bfd[_0x65ec('0x37')]=_0x5c8bfd['attributes'][_0x65ec('0x39')]?_0x5c8bfd[_0x65ec('0x37')]:_0x38d1fe[_0x65ec('0x36')];if(_0x11edd1[_0x65ec('0x32')]['includeAll']){_0x5c8bfd[_0x65ec('0x41')]=[{'all':!![]}];}_0x5c8bfd=_['merge']({},_0x5c8bfd,_0x11edd1[_0x65ec('0x3f')]);return db[_0x65ec('0x2e')][_0x65ec('0x48')](_0x5c8bfd)['then'](handleEntityNotFound(_0x55642b,null))['then'](respondWithResult(_0x55642b,null))[_0x65ec('0x44')](handleError(_0x55642b,null));};exports[_0x65ec('0x49')]=function(_0xf5419,_0x2111af){return db[_0x65ec('0x2e')][_0x65ec('0x49')](_0xf5419[_0x65ec('0x4a')],{})[_0x65ec('0x23')](function(_0x590b5a){var _0x646e97=_0xf5419[_0x65ec('0x4b')][_0x65ec('0x25')]({'plain':!![]});if(!_0x646e97)throw new Error(_0x65ec('0x4c'));if(_0x646e97[_0x65ec('0x4d')]===_0x65ec('0x4b')){var _0x14eaef=_0x590b5a[_0x65ec('0x25')]({'plain':!![]});var _0x5eb6d3=_0x65ec('0x26');return db[_0x65ec('0x4e')]['find']({'where':{'name':_0x5eb6d3,'userProfileId':_0x646e97[_0x65ec('0x4f')]},'raw':!![]})[_0x65ec('0x23')](function(_0x3e963d){if(_0x3e963d&&_0x3e963d['autoAssociation']===0x0){return db[_0x65ec('0x27')][_0x65ec('0x49')]({'name':_0x14eaef[_0x65ec('0x2a')],'resourceId':_0x14eaef['id'],'type':_0x3e963d['name'],'sectionId':_0x3e963d['id']},{})[_0x65ec('0x23')](function(){return _0x590b5a;});}else{return _0x590b5a;}})['catch'](function(_0x4c9905){logger[_0x65ec('0x28')](_0x65ec('0x50'),_0x4c9905);throw _0x4c9905;});}return _0x590b5a;})[_0x65ec('0x23')](respondWithResult(_0x2111af,0xc9))['catch'](handleError(_0x2111af,null));};exports[_0x65ec('0x22')]=function(_0x28a686,_0x29f88){if(_0x28a686[_0x65ec('0x4a')]['id']){delete _0x28a686[_0x65ec('0x4a')]['id'];}return db[_0x65ec('0x2e')][_0x65ec('0x48')]({'where':{'id':_0x28a686[_0x65ec('0x46')]['id']}})[_0x65ec('0x23')](handleEntityNotFound(_0x29f88,null))['then'](saveUpdates(_0x28a686['body'],null))[_0x65ec('0x23')](respondWithResult(_0x29f88,null))['catch'](handleError(_0x29f88,null));};exports[_0x65ec('0x24')]=function(_0x592838,_0x347336){return db[_0x65ec('0x2e')][_0x65ec('0x48')]({'where':{'id':_0x592838[_0x65ec('0x46')]['id']}})[_0x65ec('0x23')](handleEntityNotFound(_0x347336,null))[_0x65ec('0x23')](removeEntity(_0x347336,null))[_0x65ec('0x44')](handleError(_0x347336,null));};exports['getMessages']=function(_0x2c7657,_0x474bc0,_0x1b5356){return db[_0x65ec('0x2e')][_0x65ec('0x51')]({'where':{'id':_0x2c7657['params']['id']}})[_0x65ec('0x23')](handleEntityNotFound(_0x474bc0,null))[_0x65ec('0x23')](function(_0xb85e9a){var _0x411d72;var _0x44fbba={},_0x3f2fd3={};_0x3f2fd3[_0x65ec('0x36')]=_[_0x65ec('0x33')](db['VoiceMailMessage'][_0x65ec('0x47')]);_0x3f2fd3[_0x65ec('0x32')]=_[_0x65ec('0x33')](_0x2c7657[_0x65ec('0x32')]);_0x3f2fd3[_0x65ec('0x34')]=_[_0x65ec('0x35')](_0x3f2fd3[_0x65ec('0x36')],_0x3f2fd3['query']);_0x44fbba['attributes']=_[_0x65ec('0x35')](_0x3f2fd3['model'],qs[_0x65ec('0x38')](_0x2c7657[_0x65ec('0x32')]['fields']));_0x44fbba[_0x65ec('0x37')]=_0x44fbba[_0x65ec('0x37')][_0x65ec('0x39')]?_0x44fbba[_0x65ec('0x37')]:_0x3f2fd3[_0x65ec('0x36')];if(!_0x2c7657[_0x65ec('0x32')][_0x65ec('0x52')]('nolimit')){_0x44fbba['limit']=qs[_0x65ec('0x1b')](_0x2c7657[_0x65ec('0x32')][_0x65ec('0x1b')]);_0x44fbba['offset']=qs[_0x65ec('0x19')](_0x2c7657[_0x65ec('0x32')][_0x65ec('0x19')]);}_0x44fbba[_0x65ec('0x53')]=qs[_0x65ec('0x54')](_0x2c7657[_0x65ec('0x32')][_0x65ec('0x54')]);_0x44fbba['where']=qs[_0x65ec('0x34')](_[_0x65ec('0x55')](_0x2c7657[_0x65ec('0x32')],_0x3f2fd3[_0x65ec('0x34')]));if(_0x2c7657[_0x65ec('0x32')][_0x65ec('0x3c')]){_0x44fbba[_0x65ec('0x3b')]=_[_0x65ec('0x3d')](_0x44fbba[_0x65ec('0x3b')],{'$or':_['map'](_0x44fbba['attributes'],function(_0x41d28d){var _0x484f5a={};_0x484f5a[_0x41d28d]={'$like':'%'+_0x2c7657['query'][_0x65ec('0x3c')]+'%'};return _0x484f5a;})});}_0x44fbba[_0x65ec('0x3b')]=_[_0x65ec('0x3d')](_0x44fbba['where'],{'mailboxuser':_0xb85e9a['mailbox']});_0x44fbba=_[_0x65ec('0x3d')]({},_0x44fbba,_0x2c7657['options']);return db['VoiceMailMessage']['findAndCountAll'](_0x44fbba)[_0x65ec('0x23')](respondWithFilteredResult(_0x474bc0,_0x44fbba));})['catch'](handleError(_0x474bc0,null));};
\ No newline at end of file
index d2cd5b4..1f4cc71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aed=['api','moment','bluebird','request-promise','path','rimraf','./voiceMail.attributes','exports','VoiceMail','voice_voicemail','mailbox_context','mailbox','lodash','../../config/logger'];(function(_0x50bb7d,_0x44e3d9){var _0x16b1f3=function(_0x385910){while(--_0x385910){_0x50bb7d['push'](_0x50bb7d['shift']());}};_0x16b1f3(++_0x44e3d9);}(_0x3aed,0x7c));var _0xd3ae=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x3aed[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0xd3ae('0x0'));var util=require('util');var logger=require(_0xd3ae('0x1'))(_0xd3ae('0x2'));var moment=require(_0xd3ae('0x3'));var BPromise=require(_0xd3ae('0x4'));var rp=require(_0xd3ae('0x5'));var fs=require('fs');var path=require(_0xd3ae('0x6'));var rimraf=require(_0xd3ae('0x7'));var config=require('../../config/environment');var attributes=require(_0xd3ae('0x8'));module[_0xd3ae('0x9')]=function(_0x520c3c,_0x408375){return _0x520c3c['define'](_0xd3ae('0xa'),attributes,{'tableName':_0xd3ae('0xb'),'paranoid':![],'indexes':[{'name':_0xd3ae('0xc'),'fields':[_0xd3ae('0xd'),'context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3ee=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./voiceMail.attributes','exports','define','voice_voicemail','mailbox_context','mailbox','context','lodash'];(function(_0x2107bc,_0x453103){var _0x1f39d3=function(_0x3fe3e7){while(--_0x3fe3e7){_0x2107bc['push'](_0x2107bc['shift']());}};_0x1f39d3(++_0x453103);}(_0xd3ee,0x1ee));var _0xed3e=function(_0x29b046,_0x3d830f){_0x29b046=_0x29b046-0x0;var _0x204735=_0xd3ee[_0x29b046];return _0x204735;};'use strict';var _=require(_0xed3e('0x0'));var util=require(_0xed3e('0x1'));var logger=require(_0xed3e('0x2'))(_0xed3e('0x3'));var moment=require('moment');var BPromise=require(_0xed3e('0x4'));var rp=require(_0xed3e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xed3e('0x6'));var config=require(_0xed3e('0x7'));var attributes=require(_0xed3e('0x8'));module[_0xed3e('0x9')]=function(_0x135f8f,_0x123e84){return _0x135f8f[_0xed3e('0xa')]('VoiceMail',attributes,{'tableName':_0xed3e('0xb'),'paranoid':![],'indexes':[{'name':_0xed3e('0xc'),'fields':[_0xed3e('0xd'),_0xed3e('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index cef1a28..668aeea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95e=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0xf95e,0xa2));var _0xef95=function(_0x3b73af,_0x33924d){_0x3b73af=_0x3b73af-0x0;var _0x252174=_0xf95e[_0x3b73af];return _0x252174;};'use strict';var _=require(_0xef95('0x0'));var util=require(_0xef95('0x1'));var moment=require(_0xef95('0x2'));var BPromise=require(_0xef95('0x3'));var rs=require(_0xef95('0x4'));var fs=require('fs');var Redis=require(_0xef95('0x5'));var db=require(_0xef95('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xef95('0x7'))(_0xef95('0x8'));var config=require(_0xef95('0x9'));var jayson=require(_0xef95('0xa'));var client=jayson['client'][_0xef95('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xfcfebc,_0xdc3936,_0x237fdb){return new BPromise(function(_0x62c8d0,_0x2723c2){return client[_0xef95('0xc')](_0xfcfebc,_0x237fdb)['then'](function(_0xd56b07){logger['info'](_0xef95('0xd'),_0xdc3936,_0xef95('0xe'));logger[_0xef95('0xf')](_0xef95('0x10'),_0xdc3936,'request\x20sent',JSON[_0xef95('0x11')](_0xd56b07));if(_0xd56b07[_0xef95('0x12')]){if(_0xd56b07[_0xef95('0x12')][_0xef95('0x13')]===0x1f4){logger[_0xef95('0x12')]('VoiceMail,\x20%s,\x20%s',_0xdc3936,_0xd56b07[_0xef95('0x12')][_0xef95('0x14')]);return _0x2723c2(_0xd56b07[_0xef95('0x12')][_0xef95('0x14')]);}logger['error'](_0xef95('0xd'),_0xdc3936,_0xd56b07['error'][_0xef95('0x14')]);return _0x62c8d0(_0xd56b07[_0xef95('0x12')][_0xef95('0x14')]);}else{logger[_0xef95('0x15')](_0xef95('0xd'),_0xdc3936,_0xef95('0xe'));_0x62c8d0(_0xd56b07[_0xef95('0x16')]['message']);}})['catch'](function(_0x24c782){logger[_0xef95('0x12')](_0xef95('0xd'),_0xdc3936,_0x24c782);_0x2723c2(_0x24c782);});});}
\ No newline at end of file
+var _0xb0dd=['catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','VoiceMail,\x20%s,\x20%s','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x280f93,_0x583726){var _0x572fcd=function(_0x3f76a6){while(--_0x3f76a6){_0x280f93['push'](_0x280f93['shift']());}};_0x572fcd(++_0x583726);}(_0xb0dd,0xe8));var _0xdb0d=function(_0x14c68e,_0x85ab42){_0x14c68e=_0x14c68e-0x0;var _0x2ac171=_0xb0dd[_0x14c68e];return _0x2ac171;};'use strict';var _=require(_0xdb0d('0x0'));var util=require(_0xdb0d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xdb0d('0x2'));var fs=require('fs');var Redis=require(_0xdb0d('0x3'));var db=require(_0xdb0d('0x4'))['db'];var utils=require(_0xdb0d('0x5'));var logger=require(_0xdb0d('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xdb0d('0x7'));var client=jayson[_0xdb0d('0x8')][_0xdb0d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbae542,_0x1df383,_0x483f71){return new BPromise(function(_0x57ac27,_0x453874){return client[_0xdb0d('0xa')](_0xbae542,_0x483f71)['then'](function(_0x43853e){logger[_0xdb0d('0xb')](_0xdb0d('0xc'),_0x1df383,_0xdb0d('0xd'));logger['debug'](_0xdb0d('0xe'),_0x1df383,_0xdb0d('0xd'),JSON[_0xdb0d('0xf')](_0x43853e));if(_0x43853e[_0xdb0d('0x10')]){if(_0x43853e[_0xdb0d('0x10')][_0xdb0d('0x11')]===0x1f4){logger[_0xdb0d('0x10')](_0xdb0d('0xc'),_0x1df383,_0x43853e[_0xdb0d('0x10')][_0xdb0d('0x12')]);return _0x453874(_0x43853e[_0xdb0d('0x10')][_0xdb0d('0x12')]);}logger[_0xdb0d('0x10')](_0xdb0d('0xc'),_0x1df383,_0x43853e[_0xdb0d('0x10')][_0xdb0d('0x12')]);return _0x57ac27(_0x43853e[_0xdb0d('0x10')][_0xdb0d('0x12')]);}else{logger[_0xdb0d('0xb')](_0xdb0d('0xc'),_0x1df383,_0xdb0d('0xd'));_0x57ac27(_0x43853e[_0xdb0d('0x13')][_0xdb0d('0x12')]);}})[_0xdb0d('0x14')](function(_0x29eb36){logger[_0xdb0d('0x10')](_0xdb0d('0xc'),_0x1df383,_0x29eb36);_0x453874(_0x29eb36);});});}
\ No newline at end of file
index 4f7c765..d7527e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dac=['util','path','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id/download','post','create','update','delete','/:id','multer'];(function(_0x3e186f,_0x2eb7be){var _0x3595bf=function(_0x5cb578){while(--_0x5cb578){_0x3e186f['push'](_0x3e186f['shift']());}};_0x3595bf(++_0x2eb7be);}(_0x9dac,0x11f));var _0xc9da=function(_0x166660,_0x42943a){_0x166660=_0x166660-0x0;var _0x56f116=_0x9dac[_0x166660];return _0x56f116;};'use strict';var multer=require(_0xc9da('0x0'));var util=require(_0xc9da('0x1'));var path=require(_0xc9da('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xc9da('0x3'));var auth=require(_0xc9da('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc9da('0x5'));var controller=require(_0xc9da('0x6'));router[_0xc9da('0x7')]('/',auth[_0xc9da('0x8')](),controller[_0xc9da('0x9')]);router[_0xc9da('0x7')]('/:id',auth[_0xc9da('0x8')](),controller['show']);router[_0xc9da('0x7')](_0xc9da('0xa'),auth['isAuthenticated'](),controller['download']);router[_0xc9da('0xb')]('/',auth[_0xc9da('0x8')](),controller[_0xc9da('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc9da('0xd')]);router[_0xc9da('0xe')](_0xc9da('0xf'),auth[_0xc9da('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xfc26=['destroy','exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','show','download','create','put','/:id','update'];(function(_0x1d1ec8,_0x1e36df){var _0x18a155=function(_0x4bdd04){while(--_0x4bdd04){_0x1d1ec8['push'](_0x1d1ec8['shift']());}};_0x18a155(++_0x1e36df);}(_0xfc26,0x188));var _0x6fc2=function(_0x1ebe90,_0x5d29fc){_0x1ebe90=_0x1ebe90-0x0;var _0x447c82=_0xfc26[_0x1ebe90];return _0x447c82;};'use strict';var multer=require(_0x6fc2('0x0'));var util=require(_0x6fc2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6fc2('0x2'));var auth=require(_0x6fc2('0x3'));var interaction=require(_0x6fc2('0x4'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0x6fc2('0x5')]('/',auth[_0x6fc2('0x6')](),controller['index']);router[_0x6fc2('0x5')]('/:id',auth[_0x6fc2('0x6')](),controller[_0x6fc2('0x7')]);router['get']('/:id/download',auth[_0x6fc2('0x6')](),controller[_0x6fc2('0x8')]);router['post']('/',auth[_0x6fc2('0x6')](),controller[_0x6fc2('0x9')]);router[_0x6fc2('0xa')](_0x6fc2('0xb'),auth['isAuthenticated'](),controller[_0x6fc2('0xc')]);router['delete'](_0x6fc2('0xb'),auth[_0x6fc2('0x6')](),controller[_0x6fc2('0xd')]);module[_0x6fc2('0xe')]=router;
\ No newline at end of file
index 111076c..d1f2df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ea=['VIRTUAL','getDataValue','INTEGER','STRING','long','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports'];(function(_0x4fec1c,_0x456bb0){var _0x20d244=function(_0x42f9e3){while(--_0x42f9e3){_0x4fec1c['push'](_0x4fec1c['shift']());}};_0x20d244(++_0x456bb0);}(_0xe6ea,0xbb));var _0xae6e=function(_0x404e06,_0x31a9da){_0x404e06=_0x404e06-0x0;var _0x115a01=_0xe6ea[_0x404e06];return _0x115a01;};'use strict';var Sequelize=require(_0xae6e('0x0'));module[_0xae6e('0x1')]={'name':{'type':Sequelize[_0xae6e('0x2')],'get':function(_0x4a56b6){return this[_0xae6e('0x3')]('id');}},'msgnum':{'type':Sequelize[_0xae6e('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xae6e('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0xae6e('0x7')](_0xae6e('0x8'))}};
\ No newline at end of file
+var _0xf551=['sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x1b0452,_0x3c69a5){var _0x140bb1=function(_0x3a0e1d){while(--_0x3a0e1d){_0x1b0452['push'](_0x1b0452['shift']());}};_0x140bb1(++_0x3c69a5);}(_0xf551,0xe7));var _0x1f55=function(_0x14c84e,_0x306ead){_0x14c84e=_0x14c84e-0x0;var _0x37f7db=_0xf551[_0x14c84e];return _0x37f7db;};'use strict';var Sequelize=require(_0x1f55('0x0'));module[_0x1f55('0x1')]={'name':{'type':Sequelize[_0x1f55('0x2')],'get':function(_0x44441c){return this[_0x1f55('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x1f55('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x1f55('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x1f55('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x1f55('0x5')],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0x1f55('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x1f55('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x1f55('0x6')](_0x1f55('0x7')),'defaultValue':null},'flag':{'type':Sequelize[_0x1f55('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x1f55('0x8'),'defaultValue':Sequelize[_0x1f55('0x9')](_0x1f55('0xa'))}};
\ No newline at end of file
index 81f977a..1112b26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7500=['Content-Range','reject','save','then','stack','name','send','index','rawAttributes','fieldName','type','key','model','differenceBy','map','query','keys','filters','intersection','fields','attributes','sort','where','merge','VIRTUAL','filter','VoiceMailMessage','includeAll','include','findAll','length','find','catch','create','body','update','params','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x7500,0x1be));var _0x0750=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7500[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0750('0x0'));var rimraf=require(_0x0750('0x1'));var zipdir=require(_0x0750('0x2'));var jsonpatch=require(_0x0750('0x3'));var rp=require(_0x0750('0x4'));var moment=require(_0x0750('0x5'));var BPromise=require(_0x0750('0x6'));var Mustache=require(_0x0750('0x7'));var util=require(_0x0750('0x8'));var path=require(_0x0750('0x9'));var sox=require('sox');var csv=require(_0x0750('0xa'));var ejs=require(_0x0750('0xb'));var fs=require('fs');var fs_extra=require(_0x0750('0xc'));var _=require('lodash');var squel=require(_0x0750('0xd'));var crypto=require(_0x0750('0xe'));var jsforce=require(_0x0750('0xf'));var deskjs=require(_0x0750('0x10'));var toCsv=require(_0x0750('0xa'));var querystring=require('querystring');var Papa=require(_0x0750('0x11'));var Redis=require(_0x0750('0x12'));var authService=require(_0x0750('0x13'));var qs=require(_0x0750('0x14'));var as=require(_0x0750('0x15'));var hardwareService=require(_0x0750('0x16'));var logger=require(_0x0750('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0750('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x293d1d,_0x9855e2){_0x9855e2=_0x9855e2||0xcc;return function(_0x19a5a4){if(_0x19a5a4){return _0x293d1d[_0x0750('0x19')](_0x9855e2);}return _0x293d1d[_0x0750('0x1a')](_0x9855e2)[_0x0750('0x1b')]();};}function respondWithResult(_0x43c051,_0x3d06a3){_0x3d06a3=_0x3d06a3||0xc8;return function(_0x3ceb5e){if(_0x3ceb5e){return _0x43c051[_0x0750('0x1a')](_0x3d06a3)[_0x0750('0x1c')](_0x3ceb5e);}};}function respondWithFilteredResult(_0x5c2132,_0x54ccb3){return function(_0x34961f){if(_0x34961f){var _0x81ab58=typeof _0x54ccb3['offset']==='undefined'&&typeof _0x54ccb3[_0x0750('0x1d')]===_0x0750('0x1e');var _0x227253=_0x34961f[_0x0750('0x1f')];var _0x5701c7=_0x81ab58?0x0:_0x54ccb3[_0x0750('0x20')];var _0x4a3f25=_0x81ab58?_0x34961f['count']:_0x54ccb3['offset']+_0x54ccb3[_0x0750('0x1d')];var _0x1829bc;if(_0x4a3f25>=_0x227253){_0x4a3f25=_0x227253;_0x1829bc=0xc8;}else{_0x1829bc=0xce;}_0x5c2132['status'](_0x1829bc);return _0x5c2132[_0x0750('0x21')](_0x0750('0x22'),_0x5701c7+'-'+_0x4a3f25+'/'+_0x227253)[_0x0750('0x1c')](_0x34961f);}return null;};}function patchUpdates(_0x2c0e86){return function(_0x418367){try{jsonpatch['apply'](_0x418367,_0x2c0e86,!![]);}catch(_0x4d6aad){return BPromise[_0x0750('0x23')](_0x4d6aad);}return _0x418367[_0x0750('0x24')]();};}function saveUpdates(_0x13cad7,_0xa6ebdc){return function(_0x1e2240){if(_0x1e2240){return _0x1e2240['update'](_0x13cad7)[_0x0750('0x25')](function(_0x1d50f2){return _0x1d50f2;});}return null;};}function removeEntity(_0x2d4e20,_0x4cbaac){return function(_0x67c7fc){if(_0x67c7fc){return _0x67c7fc['destroy']()[_0x0750('0x25')](function(){_0x2d4e20['status'](0xcc)[_0x0750('0x1b')]();});}};}function handleEntityNotFound(_0x11fe90,_0x417032){return function(_0x5da7bf){if(!_0x5da7bf){_0x11fe90[_0x0750('0x19')](0x194);}return _0x5da7bf;};}function handleError(_0x1bfe2b,_0xb7f3f1){_0xb7f3f1=_0xb7f3f1||0x1f4;return function(_0x45a81d){logger['error'](_0x45a81d[_0x0750('0x26')]);if(_0x45a81d[_0x0750('0x27')]){delete _0x45a81d[_0x0750('0x27')];}_0x1bfe2b['status'](_0xb7f3f1)[_0x0750('0x28')](_0x45a81d);};}exports[_0x0750('0x29')]=function(_0x35e071,_0x3cf936){var _0x12ae9f={},_0x3b4ddb={},_0x237126={'count':0x0,'rows':[]};var _0x3d2049=_['map'](db['VoiceMailMessage'][_0x0750('0x2a')],function(_0x1b9d4d){return{'name':_0x1b9d4d[_0x0750('0x2b')],'type':_0x1b9d4d[_0x0750('0x2c')][_0x0750('0x2d')]};});_0x3b4ddb[_0x0750('0x2e')]=_[_0x0750('0x2f')](_[_0x0750('0x30')](_0x3d2049,_0x0750('0x27')),['name']);_0x3b4ddb[_0x0750('0x31')]=_[_0x0750('0x32')](_0x35e071['query']);_0x3b4ddb[_0x0750('0x33')]=_['intersection'](_0x3b4ddb[_0x0750('0x2e')],_0x3b4ddb['query']);_0x12ae9f['attributes']=_[_0x0750('0x34')](_0x3b4ddb[_0x0750('0x2e')],qs[_0x0750('0x35')](_0x35e071['query'][_0x0750('0x35')]));_0x12ae9f[_0x0750('0x36')]=_0x12ae9f[_0x0750('0x36')]['length']?_0x12ae9f[_0x0750('0x36')]:_0x3b4ddb[_0x0750('0x2e')];if(!_0x35e071[_0x0750('0x31')]['hasOwnProperty']('nolimit')){_0x12ae9f['limit']=qs['limit'](_0x35e071[_0x0750('0x31')][_0x0750('0x1d')]);_0x12ae9f[_0x0750('0x20')]=qs[_0x0750('0x20')](_0x35e071[_0x0750('0x31')][_0x0750('0x20')]);}_0x12ae9f['order']=qs[_0x0750('0x37')](_0x35e071[_0x0750('0x31')][_0x0750('0x37')]);_0x12ae9f['where']=qs['filters'](_['pick'](_0x35e071[_0x0750('0x31')],_0x3b4ddb[_0x0750('0x33')]),_0x3d2049);if(_0x35e071['query']['filter']){_0x12ae9f[_0x0750('0x38')]=_[_0x0750('0x39')](_0x12ae9f[_0x0750('0x38')],{'$or':_[_0x0750('0x30')](_0x3d2049,function(_0x243a17){if(_0x243a17['type']!==_0x0750('0x3a')){var _0x1881f7={};_0x1881f7[_0x243a17[_0x0750('0x27')]]={'$like':'%'+_0x35e071[_0x0750('0x31')][_0x0750('0x3b')]+'%'};return _0x1881f7;}})});}_0x12ae9f=_[_0x0750('0x39')]({},_0x12ae9f,_0x35e071['options']);var _0x247be6={'where':_0x12ae9f['where']};return db[_0x0750('0x3c')][_0x0750('0x1f')](_0x247be6)['then'](function(_0x3a8449){_0x237126['count']=_0x3a8449;if(_0x35e071[_0x0750('0x31')][_0x0750('0x3d')]){_0x12ae9f[_0x0750('0x3e')]=[{'all':!![]}];}return db[_0x0750('0x3c')][_0x0750('0x3f')](_0x12ae9f);})[_0x0750('0x25')](function(_0x485b8){_0x237126['rows']=_0x485b8;return _0x237126;})['then'](respondWithFilteredResult(_0x3cf936,_0x12ae9f))['catch'](handleError(_0x3cf936,null));};exports['show']=function(_0x258564,_0x238811){var _0x4ceb07={'raw':!![],'where':{'id':_0x258564['params']['id']}},_0x1ec776={};_0x1ec776[_0x0750('0x2e')]=_[_0x0750('0x32')](db[_0x0750('0x3c')][_0x0750('0x2a')]);_0x1ec776[_0x0750('0x31')]=_[_0x0750('0x32')](_0x258564[_0x0750('0x31')]);_0x1ec776[_0x0750('0x33')]=_[_0x0750('0x34')](_0x1ec776[_0x0750('0x2e')],_0x1ec776['query']);_0x4ceb07[_0x0750('0x36')]=_['intersection'](_0x1ec776[_0x0750('0x2e')],qs[_0x0750('0x35')](_0x258564[_0x0750('0x31')][_0x0750('0x35')]));_0x4ceb07['attributes']=_0x4ceb07[_0x0750('0x36')][_0x0750('0x40')]?_0x4ceb07[_0x0750('0x36')]:_0x1ec776[_0x0750('0x2e')];if(_0x258564[_0x0750('0x31')][_0x0750('0x3d')]){_0x4ceb07[_0x0750('0x3e')]=[{'all':!![]}];}_0x4ceb07=_['merge']({},_0x4ceb07,_0x258564['options']);return db['VoiceMailMessage'][_0x0750('0x41')](_0x4ceb07)[_0x0750('0x25')](handleEntityNotFound(_0x238811,null))['then'](respondWithResult(_0x238811,null))[_0x0750('0x42')](handleError(_0x238811,null));};exports['create']=function(_0xffca79,_0x124841){return db[_0x0750('0x3c')][_0x0750('0x43')](_0xffca79[_0x0750('0x44')],{})[_0x0750('0x25')](respondWithResult(_0x124841,0xc9))[_0x0750('0x42')](handleError(_0x124841,null));};exports[_0x0750('0x45')]=function(_0x4bbef2,_0x384f40){if(_0x4bbef2[_0x0750('0x44')]['id']){delete _0x4bbef2['body']['id'];}return db[_0x0750('0x3c')]['find']({'where':{'id':_0x4bbef2[_0x0750('0x46')]['id']}})['then'](handleEntityNotFound(_0x384f40,null))['then'](saveUpdates(_0x4bbef2['body'],null))['then'](respondWithResult(_0x384f40,null))[_0x0750('0x42')](handleError(_0x384f40,null));};exports['destroy']=function(_0x141aae,_0x3a571b){return db[_0x0750('0x3c')][_0x0750('0x41')]({'where':{'id':_0x141aae['params']['id']}})[_0x0750('0x25')](handleEntityNotFound(_0x3a571b,null))[_0x0750('0x25')](removeEntity(_0x3a571b,null))[_0x0750('0x42')](handleError(_0x3a571b,null));};exports['download']=function(_0x23e3f4,_0x285820,_0x12fdfd){return db['VoiceMailMessage']['find']({'where':{'id':_0x23e3f4[_0x0750('0x46')]['id']},'attributes':['id',_0x0750('0x47'),_0x0750('0x48')]})[_0x0750('0x25')](handleEntityNotFound(_0x285820,null))[_0x0750('0x25')](function(_0x65726b){if(_0x65726b){if(!_0x65726b[_0x0750('0x47')]){throw new db[(_0x0750('0x49'))]['ValidationError'](_0x0750('0x4a'));}var _0x5b435f={'Content-Type':_0x0750('0x4b'),'Content-Disposition':_0x0750('0x4c')};if(_0x65726b[_0x0750('0x48')]){_0x5b435f[_0x0750('0x4d')]=_0x0750('0x4e')+_0x65726b['msg_id']+_0x0750('0x4f');}_0x285820[_0x0750('0x21')](_0x5b435f);return _0x285820[_0x0750('0x28')](new Buffer(_0x65726b[_0x0750('0x47')]));}})[_0x0750('0x42')](handleError(_0x285820,null));};
\ No newline at end of file
+var _0x5eaf=['nolimit','order','sort','filter','where','merge','type','VIRTUAL','VoiceMailMessage','includeAll','include','show','params','options','find','create','body','catch','download','recording','msg_id','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x1d2ed4,_0x1e15de){var _0x11b2fa=function(_0x259bbb){while(--_0x259bbb){_0x1d2ed4['push'](_0x1d2ed4['shift']());}};_0x11b2fa(++_0x1e15de);}(_0x5eaf,0x16a));var _0xf5ea=function(_0x2af89e,_0x2aa6d6){_0x2af89e=_0x2af89e-0x0;var _0x469bf6=_0x5eaf[_0x2af89e];return _0x469bf6;};'use strict';var emlformat=require(_0xf5ea('0x0'));var rimraf=require(_0xf5ea('0x1'));var zipdir=require(_0xf5ea('0x2'));var jsonpatch=require(_0xf5ea('0x3'));var rp=require(_0xf5ea('0x4'));var moment=require(_0xf5ea('0x5'));var BPromise=require(_0xf5ea('0x6'));var Mustache=require(_0xf5ea('0x7'));var util=require(_0xf5ea('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf5ea('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf5ea('0xa'));var squel=require(_0xf5ea('0xb'));var crypto=require(_0xf5ea('0xc'));var jsforce=require(_0xf5ea('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf5ea('0xe'));var querystring=require(_0xf5ea('0xf'));var Papa=require(_0xf5ea('0x10'));var Redis=require('ioredis');var authService=require(_0xf5ea('0x11'));var qs=require(_0xf5ea('0x12'));var as=require(_0xf5ea('0x13'));var hardwareService=require(_0xf5ea('0x14'));var logger=require('../../config/logger')(_0xf5ea('0x15'));var utils=require(_0xf5ea('0x16'));var config=require(_0xf5ea('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf5ea('0x18'))['db'];function respondWithStatusCode(_0x26f7fe,_0x225b77){_0x225b77=_0x225b77||0xcc;return function(_0x14db9f){if(_0x14db9f){return _0x26f7fe['sendStatus'](_0x225b77);}return _0x26f7fe['status'](_0x225b77)[_0xf5ea('0x19')]();};}function respondWithResult(_0x510265,_0x27539b){_0x27539b=_0x27539b||0xc8;return function(_0x544bda){if(_0x544bda){return _0x510265[_0xf5ea('0x1a')](_0x27539b)[_0xf5ea('0x1b')](_0x544bda);}};}function respondWithFilteredResult(_0x5611bb,_0xc77c97){return function(_0xde678e){if(_0xde678e){var _0x52f731=typeof _0xc77c97[_0xf5ea('0x1c')]==='undefined'&&typeof _0xc77c97[_0xf5ea('0x1d')]===_0xf5ea('0x1e');var _0xadfbf8=_0xde678e[_0xf5ea('0x1f')];var _0x254955=_0x52f731?0x0:_0xc77c97[_0xf5ea('0x1c')];var _0x4153d1=_0x52f731?_0xde678e[_0xf5ea('0x1f')]:_0xc77c97[_0xf5ea('0x1c')]+_0xc77c97[_0xf5ea('0x1d')];var _0x1d365a;if(_0x4153d1>=_0xadfbf8){_0x4153d1=_0xadfbf8;_0x1d365a=0xc8;}else{_0x1d365a=0xce;}_0x5611bb[_0xf5ea('0x1a')](_0x1d365a);return _0x5611bb[_0xf5ea('0x20')](_0xf5ea('0x21'),_0x254955+'-'+_0x4153d1+'/'+_0xadfbf8)['json'](_0xde678e);}return null;};}function patchUpdates(_0x376710){return function(_0x5d20ed){try{jsonpatch[_0xf5ea('0x22')](_0x5d20ed,_0x376710,!![]);}catch(_0x5db75a){return BPromise[_0xf5ea('0x23')](_0x5db75a);}return _0x5d20ed['save']();};}function saveUpdates(_0x26af16,_0x437e56){return function(_0x3e27cb){if(_0x3e27cb){return _0x3e27cb[_0xf5ea('0x24')](_0x26af16)[_0xf5ea('0x25')](function(_0x7a595d){return _0x7a595d;});}return null;};}function removeEntity(_0x28d96c,_0x1315b7){return function(_0x4bde18){if(_0x4bde18){return _0x4bde18[_0xf5ea('0x26')]()[_0xf5ea('0x25')](function(){_0x28d96c[_0xf5ea('0x1a')](0xcc)[_0xf5ea('0x19')]();});}};}function handleEntityNotFound(_0x20062d,_0x57ec6b){return function(_0x302578){if(!_0x302578){_0x20062d[_0xf5ea('0x27')](0x194);}return _0x302578;};}function handleError(_0x5beeac,_0x18f339){_0x18f339=_0x18f339||0x1f4;return function(_0x5e39e1){logger[_0xf5ea('0x28')](_0x5e39e1[_0xf5ea('0x29')]);if(_0x5e39e1['name']){delete _0x5e39e1[_0xf5ea('0x2a')];}_0x5beeac['status'](_0x18f339)[_0xf5ea('0x2b')](_0x5e39e1);};}exports[_0xf5ea('0x2c')]=function(_0x5791ec,_0x33b45a){var _0x53dead={},_0x233f4c={},_0xeafae3={'count':0x0,'rows':[]};var _0x20be50=_[_0xf5ea('0x2d')](db['VoiceMailMessage']['rawAttributes'],function(_0xd2d0a2){return{'name':_0xd2d0a2[_0xf5ea('0x2e')],'type':_0xd2d0a2['type'][_0xf5ea('0x2f')]};});_0x233f4c[_0xf5ea('0x30')]=_[_0xf5ea('0x31')](_[_0xf5ea('0x2d')](_0x20be50,'name'),[_0xf5ea('0x2a')]);_0x233f4c[_0xf5ea('0x32')]=_[_0xf5ea('0x33')](_0x5791ec[_0xf5ea('0x32')]);_0x233f4c[_0xf5ea('0x34')]=_[_0xf5ea('0x35')](_0x233f4c[_0xf5ea('0x30')],_0x233f4c[_0xf5ea('0x32')]);_0x53dead[_0xf5ea('0x36')]=_['intersection'](_0x233f4c[_0xf5ea('0x30')],qs[_0xf5ea('0x37')](_0x5791ec['query'][_0xf5ea('0x37')]));_0x53dead['attributes']=_0x53dead['attributes'][_0xf5ea('0x38')]?_0x53dead['attributes']:_0x233f4c[_0xf5ea('0x30')];if(!_0x5791ec[_0xf5ea('0x32')][_0xf5ea('0x39')](_0xf5ea('0x3a'))){_0x53dead[_0xf5ea('0x1d')]=qs['limit'](_0x5791ec[_0xf5ea('0x32')][_0xf5ea('0x1d')]);_0x53dead['offset']=qs[_0xf5ea('0x1c')](_0x5791ec[_0xf5ea('0x32')][_0xf5ea('0x1c')]);}_0x53dead[_0xf5ea('0x3b')]=qs[_0xf5ea('0x3c')](_0x5791ec[_0xf5ea('0x32')][_0xf5ea('0x3c')]);_0x53dead['where']=qs['filters'](_['pick'](_0x5791ec['query'],_0x233f4c['filters']),_0x20be50);if(_0x5791ec[_0xf5ea('0x32')][_0xf5ea('0x3d')]){_0x53dead[_0xf5ea('0x3e')]=_[_0xf5ea('0x3f')](_0x53dead[_0xf5ea('0x3e')],{'$or':_[_0xf5ea('0x2d')](_0x20be50,function(_0x48cd1e){if(_0x48cd1e[_0xf5ea('0x40')]!==_0xf5ea('0x41')){var _0x467da5={};_0x467da5[_0x48cd1e[_0xf5ea('0x2a')]]={'$like':'%'+_0x5791ec['query'][_0xf5ea('0x3d')]+'%'};return _0x467da5;}})});}_0x53dead=_[_0xf5ea('0x3f')]({},_0x53dead,_0x5791ec['options']);var _0x3a7c87={'where':_0x53dead['where']};return db[_0xf5ea('0x42')][_0xf5ea('0x1f')](_0x3a7c87)[_0xf5ea('0x25')](function(_0x265d09){_0xeafae3[_0xf5ea('0x1f')]=_0x265d09;if(_0x5791ec[_0xf5ea('0x32')][_0xf5ea('0x43')]){_0x53dead[_0xf5ea('0x44')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x53dead);})['then'](function(_0x23149){_0xeafae3['rows']=_0x23149;return _0xeafae3;})[_0xf5ea('0x25')](respondWithFilteredResult(_0x33b45a,_0x53dead))['catch'](handleError(_0x33b45a,null));};exports[_0xf5ea('0x45')]=function(_0x316963,_0x5253b8){var _0x3fbe75={'raw':!![],'where':{'id':_0x316963[_0xf5ea('0x46')]['id']}},_0x4fc820={};_0x4fc820['model']=_['keys'](db[_0xf5ea('0x42')]['rawAttributes']);_0x4fc820[_0xf5ea('0x32')]=_[_0xf5ea('0x33')](_0x316963[_0xf5ea('0x32')]);_0x4fc820[_0xf5ea('0x34')]=_[_0xf5ea('0x35')](_0x4fc820[_0xf5ea('0x30')],_0x4fc820['query']);_0x3fbe75[_0xf5ea('0x36')]=_[_0xf5ea('0x35')](_0x4fc820[_0xf5ea('0x30')],qs['fields'](_0x316963[_0xf5ea('0x32')][_0xf5ea('0x37')]));_0x3fbe75[_0xf5ea('0x36')]=_0x3fbe75['attributes']['length']?_0x3fbe75[_0xf5ea('0x36')]:_0x4fc820[_0xf5ea('0x30')];if(_0x316963[_0xf5ea('0x32')][_0xf5ea('0x43')]){_0x3fbe75[_0xf5ea('0x44')]=[{'all':!![]}];}_0x3fbe75=_[_0xf5ea('0x3f')]({},_0x3fbe75,_0x316963[_0xf5ea('0x47')]);return db[_0xf5ea('0x42')][_0xf5ea('0x48')](_0x3fbe75)[_0xf5ea('0x25')](handleEntityNotFound(_0x5253b8,null))['then'](respondWithResult(_0x5253b8,null))['catch'](handleError(_0x5253b8,null));};exports[_0xf5ea('0x49')]=function(_0x15762a,_0x52a0ac){return db['VoiceMailMessage'][_0xf5ea('0x49')](_0x15762a[_0xf5ea('0x4a')],{})[_0xf5ea('0x25')](respondWithResult(_0x52a0ac,0xc9))['catch'](handleError(_0x52a0ac,null));};exports['update']=function(_0x1356ac,_0x4c778f){if(_0x1356ac[_0xf5ea('0x4a')]['id']){delete _0x1356ac[_0xf5ea('0x4a')]['id'];}return db['VoiceMailMessage'][_0xf5ea('0x48')]({'where':{'id':_0x1356ac[_0xf5ea('0x46')]['id']}})['then'](handleEntityNotFound(_0x4c778f,null))[_0xf5ea('0x25')](saveUpdates(_0x1356ac[_0xf5ea('0x4a')],null))['then'](respondWithResult(_0x4c778f,null))[_0xf5ea('0x4b')](handleError(_0x4c778f,null));};exports[_0xf5ea('0x26')]=function(_0x268944,_0x299f0d){return db[_0xf5ea('0x42')]['find']({'where':{'id':_0x268944['params']['id']}})[_0xf5ea('0x25')](handleEntityNotFound(_0x299f0d,null))[_0xf5ea('0x25')](removeEntity(_0x299f0d,null))[_0xf5ea('0x4b')](handleError(_0x299f0d,null));};exports[_0xf5ea('0x4c')]=function(_0x5bb12e,_0x56163c,_0x489672){return db[_0xf5ea('0x42')][_0xf5ea('0x48')]({'where':{'id':_0x5bb12e[_0xf5ea('0x46')]['id']},'attributes':['id',_0xf5ea('0x4d'),_0xf5ea('0x4e')]})['then'](handleEntityNotFound(_0x56163c,null))[_0xf5ea('0x25')](function(_0x4369af){if(_0x4369af){if(!_0x4369af[_0xf5ea('0x4d')]){throw new db['Sequelize'][(_0xf5ea('0x4f'))](_0xf5ea('0x50'));}var _0x6e9a17={'Content-Type':_0xf5ea('0x51'),'Content-Disposition':'attachment'};if(_0x4369af['msg_id']){_0x6e9a17['Content-Disposition']=_0xf5ea('0x52')+_0x4369af[_0xf5ea('0x4e')]+_0xf5ea('0x53');}_0x56163c[_0xf5ea('0x20')](_0x6e9a17);return _0x56163c['send'](new Buffer(_0x4369af['recording']));}})[_0xf5ea('0x4b')](handleError(_0x56163c,null));};
\ No newline at end of file
index ede122b..736c28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f76=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','voice_voicemail_messages','dir'];(function(_0x3e3c85,_0x4d6d5a){var _0x2dfa5e=function(_0xacbb16){while(--_0xacbb16){_0x3e3c85['push'](_0x3e3c85['shift']());}};_0x2dfa5e(++_0x4d6d5a);}(_0x3f76,0x1ad));var _0x63f7=function(_0x40fb13,_0x194e76){_0x40fb13=_0x40fb13-0x0;var _0x13ddcc=_0x3f76[_0x40fb13];return _0x13ddcc;};'use strict';var _=require(_0x63f7('0x0'));var util=require(_0x63f7('0x1'));var logger=require(_0x63f7('0x2'))(_0x63f7('0x3'));var moment=require('moment');var BPromise=require(_0x63f7('0x4'));var rp=require(_0x63f7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x63f7('0x6'));var config=require(_0x63f7('0x7'));var attributes=require('./voiceMailMessage.attributes');module[_0x63f7('0x8')]=function(_0x555af4,_0x4b293a){return _0x555af4['define']('VoiceMailMessage',attributes,{'tableName':_0x63f7('0x9'),'paranoid':![],'indexes':[{'name':_0x63f7('0xa'),'fields':[_0x63f7('0xa')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xb3a1=['voice_voicemail_messages','dir','lodash','util','moment','bluebird','request-promise','path','./voiceMailMessage.attributes'];(function(_0x2d898e,_0x492523){var _0x52bf43=function(_0x3b780c){while(--_0x3b780c){_0x2d898e['push'](_0x2d898e['shift']());}};_0x52bf43(++_0x492523);}(_0xb3a1,0x16a));var _0x1b3a=function(_0x3c212b,_0x323816){_0x3c212b=_0x3c212b-0x0;var _0x1f6aa2=_0xb3a1[_0x3c212b];return _0x1f6aa2;};'use strict';var _=require(_0x1b3a('0x0'));var util=require(_0x1b3a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1b3a('0x2'));var BPromise=require(_0x1b3a('0x3'));var rp=require(_0x1b3a('0x4'));var fs=require('fs');var path=require(_0x1b3a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1b3a('0x6'));module['exports']=function(_0x532812,_0x2c6ba2){return _0x532812['define']('VoiceMailMessage',attributes,{'tableName':_0x1b3a('0x7'),'paranoid':![],'indexes':[{'name':_0x1b3a('0x8'),'fields':[_0x1b3a('0x8')]}],'timestamps':![]});};
\ No newline at end of file
index dbfb257..7ae7a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdd2=['error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x361d3f,_0x3be2aa){var _0x320229=function(_0x138319){while(--_0x138319){_0x361d3f['push'](_0x361d3f['shift']());}};_0x320229(++_0x3be2aa);}(_0xbdd2,0x124));var _0x2bdd=function(_0xb47d5d,_0x3a5e70){_0xb47d5d=_0xb47d5d-0x0;var _0x5dfd0a=_0xbdd2[_0xb47d5d];return _0x5dfd0a;};'use strict';var _=require(_0x2bdd('0x0'));var util=require(_0x2bdd('0x1'));var moment=require(_0x2bdd('0x2'));var BPromise=require(_0x2bdd('0x3'));var rs=require(_0x2bdd('0x4'));var fs=require('fs');var Redis=require(_0x2bdd('0x5'));var db=require(_0x2bdd('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2bdd('0x7'))(_0x2bdd('0x8'));var config=require(_0x2bdd('0x9'));var jayson=require(_0x2bdd('0xa'));var client=jayson[_0x2bdd('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c61b4,_0x504909,_0x42f36f){return new BPromise(function(_0x43de54,_0x3876a8){return client[_0x2bdd('0xc')](_0x1c61b4,_0x42f36f)['then'](function(_0x16fff7){logger['info'](_0x2bdd('0xd'),_0x504909,_0x2bdd('0xe'));logger[_0x2bdd('0xf')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x504909,_0x2bdd('0xe'),JSON['stringify'](_0x16fff7));if(_0x16fff7['error']){if(_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x11')]===0x1f4){logger['error'](_0x2bdd('0xd'),_0x504909,_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x12')]);return _0x3876a8(_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x12')]);}logger['error'](_0x2bdd('0xd'),_0x504909,_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x12')]);return _0x43de54(_0x16fff7['error'][_0x2bdd('0x12')]);}else{logger[_0x2bdd('0x13')](_0x2bdd('0xd'),_0x504909,_0x2bdd('0xe'));_0x43de54(_0x16fff7[_0x2bdd('0x14')]['message']);}})[_0x2bdd('0x15')](function(_0x5af150){logger[_0x2bdd('0x10')](_0x2bdd('0xd'),_0x504909,_0x5af150);_0x3876a8(_0x5af150);});});}
\ No newline at end of file
+var _0x9bd6=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','info','VoiceMailMessage,\x20%s,\x20%s','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch'];(function(_0x1d8a15,_0x4acbca){var _0x17b14b=function(_0x52c9e9){while(--_0x52c9e9){_0x1d8a15['push'](_0x1d8a15['shift']());}};_0x17b14b(++_0x4acbca);}(_0x9bd6,0x118));var _0x69bd=function(_0x441599,_0x94b9ae){_0x441599=_0x441599-0x0;var _0x2d3591=_0x9bd6[_0x441599];return _0x2d3591;};'use strict';var _=require(_0x69bd('0x0'));var util=require('util');var moment=require(_0x69bd('0x1'));var BPromise=require(_0x69bd('0x2'));var rs=require(_0x69bd('0x3'));var fs=require('fs');var Redis=require(_0x69bd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x69bd('0x5'));var logger=require(_0x69bd('0x6'))(_0x69bd('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x69bd('0x8')][_0x69bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x136cb6,_0x3efac0,_0x1246d6){return new BPromise(function(_0x4f441f,_0x1ffa13){return client['request'](_0x136cb6,_0x1246d6)['then'](function(_0x5f220a){logger[_0x69bd('0xa')](_0x69bd('0xb'),_0x3efac0,'request\x20sent');logger[_0x69bd('0xc')](_0x69bd('0xd'),_0x3efac0,_0x69bd('0xe'),JSON[_0x69bd('0xf')](_0x5f220a));if(_0x5f220a[_0x69bd('0x10')]){if(_0x5f220a[_0x69bd('0x10')][_0x69bd('0x11')]===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x3efac0,_0x5f220a[_0x69bd('0x10')][_0x69bd('0x12')]);return _0x1ffa13(_0x5f220a[_0x69bd('0x10')]['message']);}logger[_0x69bd('0x10')]('VoiceMailMessage,\x20%s,\x20%s',_0x3efac0,_0x5f220a['error'][_0x69bd('0x12')]);return _0x4f441f(_0x5f220a[_0x69bd('0x10')][_0x69bd('0x12')]);}else{logger[_0x69bd('0xa')]('VoiceMailMessage,\x20%s,\x20%s',_0x3efac0,'request\x20sent');_0x4f441f(_0x5f220a['result']['message']);}})[_0x69bd('0x13')](function(_0x89aad1){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x3efac0,_0x89aad1);_0x1ffa13(_0x89aad1);});});}
\ No newline at end of file
index 2e4a17d..a7174b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f6=['put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','index','/:id','show','get','/:id/sounds','isAuthenticated','getSounds','post','create','addSound'];(function(_0x25701b,_0x2a6976){var _0x3a8a2c=function(_0x1a5e78){while(--_0x1a5e78){_0x25701b['push'](_0x25701b['shift']());}};_0x3a8a2c(++_0x2a6976);}(_0xb1f6,0x14b));var _0x6b1f=function(_0x53f123,_0x799d11){_0x53f123=_0x53f123-0x0;var _0x19ce62=_0xb1f6[_0x53f123];return _0x19ce62;};'use strict';var multer=require(_0x6b1f('0x0'));var util=require(_0x6b1f('0x1'));var path=require(_0x6b1f('0x2'));var timeout=require(_0x6b1f('0x3'));var express=require(_0x6b1f('0x4'));var router=express[_0x6b1f('0x5')]();var fs_extra=require(_0x6b1f('0x6'));var auth=require(_0x6b1f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6b1f('0x8'));var controller=require(_0x6b1f('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x6b1f('0xa')]);router['get'](_0x6b1f('0xb'),auth['isAuthenticated'](),controller[_0x6b1f('0xc')]);router[_0x6b1f('0xd')](_0x6b1f('0xe'),auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x10')]);router[_0x6b1f('0x11')]('/',auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x12')]);router[_0x6b1f('0x11')](_0x6b1f('0xe'),auth['isAuthenticated'](),controller[_0x6b1f('0x13')]);router[_0x6b1f('0x14')](_0x6b1f('0xb'),auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x15')]);router[_0x6b1f('0x16')](_0x6b1f('0xb'),auth['isAuthenticated'](),controller[_0x6b1f('0x17')]);router[_0x6b1f('0x16')](_0x6b1f('0x18'),auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x19')]);module[_0x6b1f('0x1a')]=router;
\ No newline at end of file
+var _0x3852=['util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','/:id','isAuthenticated','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','removeSound','exports','multer'];(function(_0x236347,_0x11f096){var _0xcb6800=function(_0x11aef1){while(--_0x11aef1){_0x236347['push'](_0x236347['shift']());}};_0xcb6800(++_0x11f096);}(_0x3852,0x19d));var _0x2385=function(_0x2c6bbb,_0x47fd8d){_0x2c6bbb=_0x2c6bbb-0x0;var _0x18998f=_0x3852[_0x2c6bbb];return _0x18998f;};'use strict';var multer=require(_0x2385('0x0'));var util=require(_0x2385('0x1'));var path=require(_0x2385('0x2'));var timeout=require(_0x2385('0x3'));var express=require('express');var router=express[_0x2385('0x4')]();var fs_extra=require(_0x2385('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2385('0x6'));var config=require(_0x2385('0x7'));var controller=require(_0x2385('0x8'));router[_0x2385('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2385('0x9')](_0x2385('0xa'),auth[_0x2385('0xb')](),controller['show']);router[_0x2385('0x9')](_0x2385('0xc'),auth[_0x2385('0xb')](),controller[_0x2385('0xd')]);router[_0x2385('0xe')]('/',auth[_0x2385('0xb')](),controller[_0x2385('0xf')]);router[_0x2385('0xe')](_0x2385('0xc'),auth[_0x2385('0xb')](),controller[_0x2385('0x10')]);router[_0x2385('0x11')](_0x2385('0xa'),auth['isAuthenticated'](),controller[_0x2385('0x12')]);router[_0x2385('0x13')](_0x2385('0xa'),auth[_0x2385('0xb')](),controller[_0x2385('0x14')]);router[_0x2385('0x13')]('/:id/sounds/:id2',auth['isAuthenticated'](),controller[_0x2385('0x15')]);module[_0x2385('0x16')]=router;
\ No newline at end of file
index a223018..de367dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a77=['alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','files','mp3nb','quietmp3nb','mp3'];(function(_0x38c699,_0x56fea7){var _0x3b1ded=function(_0x100851){while(--_0x100851){_0x38c699['push'](_0x38c699['shift']());}};_0x3b1ded(++_0x56fea7);}(_0x2a77,0xff));var _0x72a7=function(_0x364cba,_0x19c43b){_0x364cba=_0x364cba-0x0;var _0x1e6de2=_0x2a77[_0x364cba];return _0x1e6de2;};'use strict';var Sequelize=require(_0x72a7('0x0'));module[_0x72a7('0x1')]={'name':{'type':Sequelize[_0x72a7('0x2')],'allowNull':![],'unique':_0x72a7('0x3')},'mode':{'type':Sequelize[_0x72a7('0x4')]('custom',_0x72a7('0x5'),_0x72a7('0x6'),_0x72a7('0x7'),'quietmp3',_0x72a7('0x8')),'allowNull':!![],'defaultValue':_0x72a7('0x5')},'directory':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![],'defaultValue':_0x72a7('0x9')},'format':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'stamp':{'type':_0x72a7('0xa')},'defaultEntry':{'type':Sequelize[_0x72a7('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x26c9=['quietmp3','mp3','STRING','TIMESTAMP','BOOLEAN','sequelize','name','ENUM','custom','files','mp3nb'];(function(_0x36f4f7,_0x5aeb3c){var _0x93cd50=function(_0x33b43f){while(--_0x33b43f){_0x36f4f7['push'](_0x36f4f7['shift']());}};_0x93cd50(++_0x5aeb3c);}(_0x26c9,0x15a));var _0x926c=function(_0x3e2775,_0x15504f){_0x3e2775=_0x3e2775-0x0;var _0x3bd340=_0x26c9[_0x3e2775];return _0x3bd340;};'use strict';var Sequelize=require(_0x926c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x926c('0x1')},'mode':{'type':Sequelize[_0x926c('0x2')](_0x926c('0x3'),_0x926c('0x4'),_0x926c('0x5'),'quietmp3nb',_0x926c('0x6'),_0x926c('0x7')),'allowNull':!![],'defaultValue':_0x926c('0x4')},'directory':{'type':Sequelize[_0x926c('0x8')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x926c('0x8')],'allowNull':!![]},'sort':{'type':Sequelize[_0x926c('0x8')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x926c('0x8')],'allowNull':!![]},'stamp':{'type':_0x926c('0x9')},'defaultEntry':{'type':Sequelize[_0x926c('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index d0adc22..de484d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6772=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','update','destroy','UserProfileResource','then','error','stack','name','index','map','VoiceMusicOnHold','fieldName','model','query','filters','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','catch','show','params','keys','rawAttributes','intersection','find','body','create','sequelize','transaction','mode','files','join','root','mkdirSync','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','directory','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','addSound','Sound','findOne','save_name','converted_format','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','symlinkSync','message','removeSound','id2','getSounds','order','rimraf','zip-dir'];(function(_0x220afa,_0xf5f6cc){var _0x1b79d1=function(_0x178a39){while(--_0x178a39){_0x220afa['push'](_0x220afa['shift']());}};_0x1b79d1(++_0xf5f6cc);}(_0x6772,0x1c2));var _0x2677=function(_0x3008f8,_0x547d7a){_0x3008f8=_0x3008f8-0x0;var _0x4f8bac=_0x6772[_0x3008f8];return _0x4f8bac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2677('0x0'));var zipdir=require(_0x2677('0x1'));var jsonpatch=require(_0x2677('0x2'));var rp=require(_0x2677('0x3'));var moment=require(_0x2677('0x4'));var BPromise=require(_0x2677('0x5'));var Mustache=require(_0x2677('0x6'));var util=require(_0x2677('0x7'));var path=require(_0x2677('0x8'));var sox=require(_0x2677('0x9'));var csv=require(_0x2677('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2677('0xb'));var _=require(_0x2677('0xc'));var squel=require(_0x2677('0xd'));var crypto=require('crypto');var jsforce=require(_0x2677('0xe'));var deskjs=require(_0x2677('0xf'));var toCsv=require(_0x2677('0xa'));var querystring=require('querystring');var Papa=require(_0x2677('0x10'));var Redis=require(_0x2677('0x11'));var authService=require(_0x2677('0x12'));var qs=require(_0x2677('0x13'));var as=require(_0x2677('0x14'));var hardwareService=require(_0x2677('0x15'));var logger=require('../../config/logger')(_0x2677('0x16'));var utils=require(_0x2677('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2677('0x18'));var db=require(_0x2677('0x19'))['db'];function respondWithStatusCode(_0x23a23b,_0x1347dc){_0x1347dc=_0x1347dc||0xcc;return function(_0x38af19){if(_0x38af19){return _0x23a23b[_0x2677('0x1a')](_0x1347dc);}return _0x23a23b[_0x2677('0x1b')](_0x1347dc)[_0x2677('0x1c')]();};}function respondWithResult(_0x1c7266,_0x2429c){_0x2429c=_0x2429c||0xc8;return function(_0x3b13cc){if(_0x3b13cc){return _0x1c7266['status'](_0x2429c)['json'](_0x3b13cc);}};}function respondWithFilteredResult(_0x8ece86,_0x11f3b6){return function(_0x5e37fb){if(_0x5e37fb){var _0x127c82=typeof _0x11f3b6['offset']===_0x2677('0x1d')&&typeof _0x11f3b6[_0x2677('0x1e')]===_0x2677('0x1d');var _0x3b3b6c=_0x5e37fb[_0x2677('0x1f')];var _0xc9d06c=_0x127c82?0x0:_0x11f3b6[_0x2677('0x20')];var _0x572ca6=_0x127c82?_0x5e37fb['count']:_0x11f3b6['offset']+_0x11f3b6[_0x2677('0x1e')];var _0x2fc1b8;if(_0x572ca6>=_0x3b3b6c){_0x572ca6=_0x3b3b6c;_0x2fc1b8=0xc8;}else{_0x2fc1b8=0xce;}_0x8ece86[_0x2677('0x1b')](_0x2fc1b8);return _0x8ece86[_0x2677('0x21')](_0x2677('0x22'),_0xc9d06c+'-'+_0x572ca6+'/'+_0x3b3b6c)[_0x2677('0x23')](_0x5e37fb);}return null;};}function patchUpdates(_0xacf2f0){return function(_0x1321ed){try{jsonpatch['apply'](_0x1321ed,_0xacf2f0,!![]);}catch(_0x3e47d5){return BPromise['reject'](_0x3e47d5);}return _0x1321ed['save']();};}function saveUpdates(_0x302d1a,_0x1df20c){return function(_0x4287a2){if(_0x4287a2){return _0x4287a2[_0x2677('0x24')](_0x302d1a)['then'](function(_0x12ecaa){return _0x12ecaa;});}return null;};}function removeEntity(_0x23210a,_0x64dc2f){return function(_0x51eeed){if(_0x51eeed){return _0x51eeed[_0x2677('0x25')]()['then'](function(){var _0xdee327=_0x51eeed['get']({'plain':!![]});var _0x8f1b61='MusicOnHolds';return db[_0x2677('0x26')][_0x2677('0x25')]({'where':{'type':_0x8f1b61,'resourceId':_0xdee327['id']}})['then'](function(){return _0x51eeed;});})[_0x2677('0x27')](function(){_0x23210a[_0x2677('0x1b')](0xcc)[_0x2677('0x1c')]();});}};}function handleEntityNotFound(_0x30819c,_0x1dab5a){return function(_0x20b6e6){if(!_0x20b6e6){_0x30819c[_0x2677('0x1a')](0x194);}return _0x20b6e6;};}function handleError(_0x3fbc5e,_0x138601){_0x138601=_0x138601||0x1f4;return function(_0x42f7bc){logger[_0x2677('0x28')](_0x42f7bc[_0x2677('0x29')]);if(_0x42f7bc[_0x2677('0x2a')]){delete _0x42f7bc[_0x2677('0x2a')];}_0x3fbc5e[_0x2677('0x1b')](_0x138601)['send'](_0x42f7bc);};}exports[_0x2677('0x2b')]=function(_0x5a7a49,_0x11f924){var _0x3601b6={},_0x3a22af={},_0x8adf26={'count':0x0,'rows':[]};var _0x53834f=_[_0x2677('0x2c')](db[_0x2677('0x2d')]['rawAttributes'],function(_0xb0979b){return{'name':_0xb0979b[_0x2677('0x2e')],'type':_0xb0979b['type']['key']};});_0x3a22af[_0x2677('0x2f')]=_[_0x2677('0x2c')](_0x53834f,'name');_0x3a22af[_0x2677('0x30')]=_['keys'](_0x5a7a49[_0x2677('0x30')]);_0x3a22af[_0x2677('0x31')]=_['intersection'](_0x3a22af['model'],_0x3a22af['query']);_0x3601b6['attributes']=_['intersection'](_0x3a22af['model'],qs[_0x2677('0x32')](_0x5a7a49['query'][_0x2677('0x32')]));_0x3601b6['attributes']=_0x3601b6[_0x2677('0x33')][_0x2677('0x34')]?_0x3601b6[_0x2677('0x33')]:_0x3a22af['model'];if(!_0x5a7a49[_0x2677('0x30')][_0x2677('0x35')](_0x2677('0x36'))){_0x3601b6['limit']=qs[_0x2677('0x1e')](_0x5a7a49[_0x2677('0x30')][_0x2677('0x1e')]);_0x3601b6[_0x2677('0x20')]=qs[_0x2677('0x20')](_0x5a7a49[_0x2677('0x30')][_0x2677('0x20')]);}_0x3601b6['order']=qs['sort'](_0x5a7a49[_0x2677('0x30')][_0x2677('0x37')]);delete _0x5a7a49['query']['sort'];_0x3601b6[_0x2677('0x38')]=qs[_0x2677('0x31')](_[_0x2677('0x39')](_0x5a7a49['query'],_0x3a22af[_0x2677('0x31')]),_0x53834f);if(_0x5a7a49['query']['filter']){_0x3601b6[_0x2677('0x38')]=_[_0x2677('0x3a')](_0x3601b6['where'],{'$or':_['map'](_0x53834f,function(_0x6d1305){if(_0x6d1305[_0x2677('0x3b')]!==_0x2677('0x3c')){var _0x4c76a0={};_0x4c76a0[_0x6d1305[_0x2677('0x2a')]]={'$like':'%'+_0x5a7a49[_0x2677('0x30')][_0x2677('0x3d')]+'%'};return _0x4c76a0;}})});}_0x3601b6=_['merge']({},_0x3601b6,_0x5a7a49[_0x2677('0x3e')]);var _0x513fdb={'where':_0x3601b6[_0x2677('0x38')]};return db[_0x2677('0x2d')][_0x2677('0x1f')](_0x513fdb)['then'](function(_0x1c2de0){_0x8adf26[_0x2677('0x1f')]=_0x1c2de0;if(_0x5a7a49[_0x2677('0x30')][_0x2677('0x3f')]){_0x3601b6[_0x2677('0x40')]=[{'all':!![]}];}return db[_0x2677('0x2d')]['findAll'](_0x3601b6);})['then'](function(_0x5d73c8){_0x8adf26['rows']=_0x5d73c8;return _0x8adf26;})[_0x2677('0x27')](respondWithFilteredResult(_0x11f924,_0x3601b6))[_0x2677('0x41')](handleError(_0x11f924,null));};exports[_0x2677('0x42')]=function(_0x97493,_0x29df42){var _0x552ffa={'raw':![],'where':{'id':_0x97493[_0x2677('0x43')]['id']}},_0x594b10={};_0x594b10[_0x2677('0x2f')]=_[_0x2677('0x44')](db[_0x2677('0x2d')][_0x2677('0x45')]);_0x594b10[_0x2677('0x30')]=_['keys'](_0x97493[_0x2677('0x30')]);_0x594b10[_0x2677('0x31')]=_[_0x2677('0x46')](_0x594b10[_0x2677('0x2f')],_0x594b10['query']);_0x552ffa[_0x2677('0x33')]=_[_0x2677('0x46')](_0x594b10['model'],qs[_0x2677('0x32')](_0x97493[_0x2677('0x30')]['fields']));_0x552ffa[_0x2677('0x33')]=_0x552ffa[_0x2677('0x33')]['length']?_0x552ffa['attributes']:_0x594b10[_0x2677('0x2f')];if(_0x97493[_0x2677('0x30')]['includeAll']){_0x552ffa[_0x2677('0x40')]=[{'all':!![]}];}_0x552ffa=_[_0x2677('0x3a')]({},_0x552ffa,_0x97493[_0x2677('0x3e')]);return db[_0x2677('0x2d')][_0x2677('0x47')](_0x552ffa)[_0x2677('0x27')](handleEntityNotFound(_0x29df42,null))['then'](respondWithResult(_0x29df42,null))[_0x2677('0x41')](handleError(_0x29df42,null));};exports[_0x2677('0x24')]=function(_0x243774,_0xfe8a91){if(_0x243774['body']['id']){delete _0x243774[_0x2677('0x48')]['id'];}return db[_0x2677('0x2d')][_0x2677('0x47')]({'where':{'id':_0x243774[_0x2677('0x43')]['id']}})['then'](handleEntityNotFound(_0xfe8a91,null))['then'](saveUpdates(_0x243774[_0x2677('0x48')],null))[_0x2677('0x27')](respondWithResult(_0xfe8a91,null))[_0x2677('0x41')](handleError(_0xfe8a91,null));};exports[_0x2677('0x49')]=function(_0x49c252,_0x384585,_0x2ef3a6){return db[_0x2677('0x4a')][_0x2677('0x4b')](function(_0x5016ab){if(_0x49c252[_0x2677('0x48')][_0x2677('0x4c')]===_0x2677('0x4d')){_0x49c252['body']['directory']=path[_0x2677('0x4e')](config[_0x2677('0x4f')],'server/files/moh',_0x49c252[_0x2677('0x48')][_0x2677('0x2a')]);}return db[_0x2677('0x2d')]['create'](_0x49c252[_0x2677('0x48')],{'transaction':_0x5016ab})[_0x2677('0x27')](function(_0x16e741){if(_0x49c252[_0x2677('0x48')][_0x2677('0x4c')]===_0x2677('0x4d')){fs[_0x2677('0x50')](_0x16e741['directory'],parseInt(_0x2677('0x51'),0x8));}var _0x5f2366=_0x49c252[_0x2677('0x52')][_0x2677('0x53')]({'plain':!![]});if(!_0x5f2366)throw new Error(_0x2677('0x54'));if(_0x5f2366[_0x2677('0x55')]==='user'){var _0x5ac00f=_0x16e741[_0x2677('0x53')]({'plain':!![]});return db[_0x2677('0x56')][_0x2677('0x47')]({'where':{'name':_0x2677('0x57'),'userProfileId':_0x5f2366['userProfileId']},'raw':!![]})['then'](function(_0x2503ab){if(_0x2503ab&&_0x2503ab['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x5ac00f[_0x2677('0x2a')],'resourceId':_0x5ac00f['id'],'type':_0x2503ab[_0x2677('0x2a')],'sectionId':_0x2503ab['id']},{})[_0x2677('0x27')](function(){return _0x16e741;});}else{return _0x16e741;}})['catch'](function(_0x226a91){logger[_0x2677('0x28')](_0x2677('0x58'),_0x226a91);});}return _0x16e741;});})['then'](respondWithResult(_0x384585,0xc9))[_0x2677('0x41')](handleError(_0x384585,null));};exports[_0x2677('0x25')]=function(_0x4a4e75,_0x589512,_0x5dad44){var _0x53a783;return db[_0x2677('0x2d')][_0x2677('0x47')]({'where':{'id':_0x4a4e75[_0x2677('0x43')]['id']}})['then'](function(_0xf79c1){if(_0xf79c1){return db[_0x2677('0x4a')]['transaction'](function(_0xc35548){return _0xf79c1[_0x2677('0x25')]({'transaction':_0xc35548,'raw':!![]})[_0x2677('0x27')](function(_0x7b53e){if(_0x7b53e[_0x2677('0x59')]){fs[_0x2677('0x5a')](_0x7b53e['directory'])[_0x2677('0x5b')](function(_0xf2147){fs[_0x2677('0x5c')](path[_0x2677('0x4e')](_0x7b53e['directory'],_0xf2147));});fs[_0x2677('0x5d')](_0x7b53e[_0x2677('0x59')]);}return _0x7b53e;});})[_0x2677('0x41')](function(_0x327179){throw new db[(_0x2677('0x5e'))][(_0x2677('0x5f'))](_0x327179['message']);});}})[_0x2677('0x27')](handleEntityNotFound(_0x589512,null))[_0x2677('0x27')](removeEntity(_0x589512,null))['catch'](handleError(_0x589512,null));};exports[_0x2677('0x60')]=function(_0x498c2f,_0x411671,_0x509282){return db['sequelize'][_0x2677('0x4b')](function(_0x42bc10){var _0x276ede;return db[_0x2677('0x2d')][_0x2677('0x47')]({'where':{'id':_0x498c2f[_0x2677('0x43')]['id']}})[_0x2677('0x27')](function(_0x46b692){if(_0x46b692){_0x276ede=_0x46b692;return _0x46b692[_0x2677('0x60')](_0x498c2f['body']['id'],{'transaction':_0x42bc10});}})[_0x2677('0x27')](function(_0x32b6af){if(_0x32b6af){return db[_0x2677('0x61')][_0x2677('0x62')]({'where':{'id':_0x498c2f[_0x2677('0x48')]['id']},'attributes':['id',_0x2677('0x2a'),_0x2677('0x63'),_0x2677('0x64'),'createdAt'],'raw':!![]});}})[_0x2677('0x27')](function(_0x4e65b5){if(_0x4e65b5){var _0xdb2ab6=path[_0x2677('0x4e')](config[_0x2677('0x4f')],_0x2677('0x65'),util[_0x2677('0x66')](_0x2677('0x67'),path[_0x2677('0x68')](_0x4e65b5[_0x2677('0x63')],path[_0x2677('0x69')](_0x4e65b5['save_name'])),_0x4e65b5['converted_format']));var _0x22da2b=path[_0x2677('0x4e')](config['root'],_0x2677('0x6a'),_0x276ede[_0x2677('0x2a')],util[_0x2677('0x66')](_0x2677('0x67'),_0x4e65b5['name'],_0x4e65b5[_0x2677('0x64')]));fs[_0x2677('0x6b')](_0xdb2ab6,_0x22da2b);return _0x4e65b5;}})[_0x2677('0x41')](function(_0x40a1b3){throw new db[(_0x2677('0x5e'))][(_0x2677('0x5f'))](_0x40a1b3[_0x2677('0x6c')]);});})[_0x2677('0x27')](handleEntityNotFound(_0x411671,null))['then'](respondWithResult(_0x411671,0xc9))[_0x2677('0x41')](handleError(_0x411671,null));};exports[_0x2677('0x6d')]=function(_0x3ae86d,_0x5556ce,_0x13516d){return db[_0x2677('0x4a')][_0x2677('0x4b')](function(_0xe85983){var _0xd694a;return db[_0x2677('0x2d')][_0x2677('0x62')]({'where':{'id':_0x3ae86d[_0x2677('0x43')]['id']}})['then'](handleEntityNotFound(_0x5556ce,null))[_0x2677('0x27')](function(_0x262ab3){if(_0x262ab3){_0xd694a=_0x262ab3;return _0x262ab3[_0x2677('0x6d')](_0x3ae86d[_0x2677('0x43')][_0x2677('0x6e')]);}})[_0x2677('0x27')](function(_0x42bba4){if(_0x42bba4){return db[_0x2677('0x61')]['findOne']({'where':{'id':_0x3ae86d[_0x2677('0x43')]['id2']},'attributes':['id','name',_0x2677('0x63'),_0x2677('0x64'),'createdAt'],'raw':!![]});}})[_0x2677('0x27')](function(_0x40f7cc){if(_0x40f7cc){fs[_0x2677('0x5c')](path['join'](_0xd694a[_0x2677('0x59')],util[_0x2677('0x66')](_0x2677('0x67'),_0x40f7cc[_0x2677('0x2a')],_0x40f7cc[_0x2677('0x64')])));return _0x40f7cc;}})[_0x2677('0x41')](function(_0x2cae50){throw new db[(_0x2677('0x5e'))][(_0x2677('0x5f'))](_0x2cae50[_0x2677('0x6c')]);});})['then'](handleEntityNotFound(_0x5556ce,null))[_0x2677('0x27')](respondWithStatusCode(_0x5556ce,0xcc))[_0x2677('0x41')](handleError(_0x5556ce,null));};exports[_0x2677('0x6f')]=function(_0x1f928c,_0x4d6a60,_0x2779fa){var _0x5c2c00={};var _0x10db55={};var _0x4a0402;var _0x519500;return db[_0x2677('0x2d')]['findOne']({'where':{'id':_0x1f928c[_0x2677('0x43')]['id']}})[_0x2677('0x27')](handleEntityNotFound(_0x4d6a60,null))[_0x2677('0x27')](function(_0x21ef4a){if(_0x21ef4a){_0x4a0402=_0x21ef4a;_0x10db55[_0x2677('0x2f')]=_['keys'](db[_0x2677('0x61')][_0x2677('0x45')]);_0x10db55[_0x2677('0x30')]=_['keys'](_0x1f928c[_0x2677('0x30')]);_0x10db55[_0x2677('0x31')]=_[_0x2677('0x46')](_0x10db55[_0x2677('0x2f')],_0x10db55[_0x2677('0x30')]);_0x5c2c00[_0x2677('0x33')]=_['intersection'](_0x10db55[_0x2677('0x2f')],qs['fields'](_0x1f928c['query']['fields']));_0x5c2c00[_0x2677('0x33')]=_0x5c2c00[_0x2677('0x33')]['length']?_0x5c2c00[_0x2677('0x33')]:_0x10db55['model'];_0x5c2c00[_0x2677('0x70')]=qs[_0x2677('0x37')](_0x1f928c['query'][_0x2677('0x37')]);_0x5c2c00['where']=qs[_0x2677('0x31')](_[_0x2677('0x39')](_0x1f928c['query'],_0x10db55[_0x2677('0x31')]));if(_0x1f928c[_0x2677('0x30')][_0x2677('0x3d')]){_0x5c2c00[_0x2677('0x38')]=_['merge'](_0x5c2c00['where'],{'$or':_[_0x2677('0x2c')](_0x5c2c00[_0x2677('0x33')],function(_0x34e477){var _0x18be69={};_0x18be69[_0x34e477]={'$like':'%'+_0x1f928c['query'][_0x2677('0x3d')]+'%'};return _0x18be69;})});}_0x5c2c00=_['merge']({},_0x5c2c00,_0x1f928c['options']);return _0x4a0402[_0x2677('0x6f')](_0x5c2c00);}})[_0x2677('0x27')](function(_0x4182a8){if(_0x4182a8){_0x519500=_0x4182a8[_0x2677('0x34')];if(!_0x1f928c[_0x2677('0x30')]['hasOwnProperty'](_0x2677('0x36'))){_0x5c2c00[_0x2677('0x1e')]=qs['limit'](_0x1f928c[_0x2677('0x30')][_0x2677('0x1e')]);_0x5c2c00['offset']=qs[_0x2677('0x20')](_0x1f928c['query']['offset']);}return _0x4a0402[_0x2677('0x6f')](_0x5c2c00);}})['then'](function(_0x128211){if(_0x128211){return _0x128211?{'count':_0x519500,'rows':_0x128211}:null;}})[_0x2677('0x27')](respondWithResult(_0x4d6a60,null))[_0x2677('0x41')](handleError(_0x4d6a60,null));};
\ No newline at end of file
+var _0x8b1c=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','then','MusicOnHolds','error','stack','name','send','index','VoiceMusicOnHold','fieldName','type','map','keys','filters','intersection','query','model','fields','attributes','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','include','findAll','params','rawAttributes','length','includeAll','options','find','catch','update','body','create','sequelize','mode','files','directory','join','root','server/files/moh','mkdirSync','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','transaction','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','message','addSound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','ValidationError','removeSound','id2','Sound','pick','getSounds','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash'];(function(_0x4ffec2,_0x39a42c){var _0x1dccc3=function(_0x3b619f){while(--_0x3b619f){_0x4ffec2['push'](_0x4ffec2['shift']());}};_0x1dccc3(++_0x39a42c);}(_0x8b1c,0x152));var _0xc8b1=function(_0x4f4cd4,_0x4116bf){_0x4f4cd4=_0x4f4cd4-0x0;var _0x4b242a=_0x8b1c[_0x4f4cd4];return _0x4b242a;};'use strict';var emlformat=require(_0xc8b1('0x0'));var rimraf=require(_0xc8b1('0x1'));var zipdir=require(_0xc8b1('0x2'));var jsonpatch=require(_0xc8b1('0x3'));var rp=require(_0xc8b1('0x4'));var moment=require(_0xc8b1('0x5'));var BPromise=require(_0xc8b1('0x6'));var Mustache=require('mustache');var util=require(_0xc8b1('0x7'));var path=require(_0xc8b1('0x8'));var sox=require(_0xc8b1('0x9'));var csv=require(_0xc8b1('0xa'));var ejs=require(_0xc8b1('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc8b1('0xc'));var squel=require(_0xc8b1('0xd'));var crypto=require(_0xc8b1('0xe'));var jsforce=require(_0xc8b1('0xf'));var deskjs=require(_0xc8b1('0x10'));var toCsv=require(_0xc8b1('0xa'));var querystring=require('querystring');var Papa=require(_0xc8b1('0x11'));var Redis=require(_0xc8b1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xc8b1('0x13'));var as=require(_0xc8b1('0x14'));var hardwareService=require(_0xc8b1('0x15'));var logger=require(_0xc8b1('0x16'))('api');var utils=require(_0xc8b1('0x17'));var config=require(_0xc8b1('0x18'));var licenseUtil=require(_0xc8b1('0x19'));var db=require(_0xc8b1('0x1a'))['db'];function respondWithStatusCode(_0x4d3fae,_0x5685d1){_0x5685d1=_0x5685d1||0xcc;return function(_0x346a05){if(_0x346a05){return _0x4d3fae[_0xc8b1('0x1b')](_0x5685d1);}return _0x4d3fae['status'](_0x5685d1)[_0xc8b1('0x1c')]();};}function respondWithResult(_0x4c12cc,_0x3350e3){_0x3350e3=_0x3350e3||0xc8;return function(_0x239b16){if(_0x239b16){return _0x4c12cc['status'](_0x3350e3)[_0xc8b1('0x1d')](_0x239b16);}};}function respondWithFilteredResult(_0x4c5a9a,_0x41b639){return function(_0x160cde){if(_0x160cde){var _0x6e4ff9=typeof _0x41b639[_0xc8b1('0x1e')]===_0xc8b1('0x1f')&&typeof _0x41b639[_0xc8b1('0x20')]==='undefined';var _0x37d31f=_0x160cde[_0xc8b1('0x21')];var _0x17a1fc=_0x6e4ff9?0x0:_0x41b639['offset'];var _0x51bd7c=_0x6e4ff9?_0x160cde[_0xc8b1('0x21')]:_0x41b639[_0xc8b1('0x1e')]+_0x41b639[_0xc8b1('0x20')];var _0x56dea0;if(_0x51bd7c>=_0x37d31f){_0x51bd7c=_0x37d31f;_0x56dea0=0xc8;}else{_0x56dea0=0xce;}_0x4c5a9a[_0xc8b1('0x22')](_0x56dea0);return _0x4c5a9a[_0xc8b1('0x23')](_0xc8b1('0x24'),_0x17a1fc+'-'+_0x51bd7c+'/'+_0x37d31f)[_0xc8b1('0x1d')](_0x160cde);}return null;};}function patchUpdates(_0x265894){return function(_0x35bd22){try{jsonpatch[_0xc8b1('0x25')](_0x35bd22,_0x265894,!![]);}catch(_0x3b2883){return BPromise[_0xc8b1('0x26')](_0x3b2883);}return _0x35bd22['save']();};}function saveUpdates(_0x3f7113,_0x2a49b5){return function(_0x279fb7){if(_0x279fb7){return _0x279fb7['update'](_0x3f7113)[_0xc8b1('0x27')](function(_0x3a2e2c){return _0x3a2e2c;});}return null;};}function removeEntity(_0x985e89,_0x38e519){return function(_0x1d718a){if(_0x1d718a){return _0x1d718a['destroy']()[_0xc8b1('0x27')](function(){var _0x27e4be=_0x1d718a['get']({'plain':!![]});var _0x37868a=_0xc8b1('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x37868a,'resourceId':_0x27e4be['id']}})['then'](function(){return _0x1d718a;});})['then'](function(){_0x985e89['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e269e,_0x372911){return function(_0x3728fa){if(!_0x3728fa){_0x4e269e['sendStatus'](0x194);}return _0x3728fa;};}function handleError(_0x5237cd,_0x43e5e4){_0x43e5e4=_0x43e5e4||0x1f4;return function(_0x38d764){logger[_0xc8b1('0x29')](_0x38d764[_0xc8b1('0x2a')]);if(_0x38d764[_0xc8b1('0x2b')]){delete _0x38d764[_0xc8b1('0x2b')];}_0x5237cd[_0xc8b1('0x22')](_0x43e5e4)[_0xc8b1('0x2c')](_0x38d764);};}exports[_0xc8b1('0x2d')]=function(_0x1f34f9,_0x16007e){var _0x2c140f={},_0x447072={},_0x1c313a={'count':0x0,'rows':[]};var _0x491809=_['map'](db[_0xc8b1('0x2e')]['rawAttributes'],function(_0x2f9891){return{'name':_0x2f9891[_0xc8b1('0x2f')],'type':_0x2f9891[_0xc8b1('0x30')]['key']};});_0x447072['model']=_[_0xc8b1('0x31')](_0x491809,_0xc8b1('0x2b'));_0x447072['query']=_[_0xc8b1('0x32')](_0x1f34f9['query']);_0x447072[_0xc8b1('0x33')]=_[_0xc8b1('0x34')](_0x447072['model'],_0x447072[_0xc8b1('0x35')]);_0x2c140f['attributes']=_[_0xc8b1('0x34')](_0x447072[_0xc8b1('0x36')],qs[_0xc8b1('0x37')](_0x1f34f9[_0xc8b1('0x35')]['fields']));_0x2c140f[_0xc8b1('0x38')]=_0x2c140f[_0xc8b1('0x38')]['length']?_0x2c140f[_0xc8b1('0x38')]:_0x447072['model'];if(!_0x1f34f9['query'][_0xc8b1('0x39')]('nolimit')){_0x2c140f['limit']=qs[_0xc8b1('0x20')](_0x1f34f9[_0xc8b1('0x35')][_0xc8b1('0x20')]);_0x2c140f['offset']=qs[_0xc8b1('0x1e')](_0x1f34f9['query']['offset']);}_0x2c140f[_0xc8b1('0x3a')]=qs[_0xc8b1('0x3b')](_0x1f34f9[_0xc8b1('0x35')][_0xc8b1('0x3b')]);delete _0x1f34f9['query'][_0xc8b1('0x3b')];_0x2c140f[_0xc8b1('0x3c')]=qs[_0xc8b1('0x33')](_['pick'](_0x1f34f9[_0xc8b1('0x35')],_0x447072[_0xc8b1('0x33')]),_0x491809);if(_0x1f34f9[_0xc8b1('0x35')][_0xc8b1('0x3d')]){_0x2c140f[_0xc8b1('0x3c')]=_['merge'](_0x2c140f[_0xc8b1('0x3c')],{'$or':_[_0xc8b1('0x31')](_0x491809,function(_0x2cf98b){if(_0x2cf98b[_0xc8b1('0x30')]!==_0xc8b1('0x3e')){var _0x1cf3b8={};_0x1cf3b8[_0x2cf98b[_0xc8b1('0x2b')]]={'$like':'%'+_0x1f34f9[_0xc8b1('0x35')][_0xc8b1('0x3d')]+'%'};return _0x1cf3b8;}})});}_0x2c140f=_[_0xc8b1('0x3f')]({},_0x2c140f,_0x1f34f9['options']);var _0x58a023={'where':_0x2c140f[_0xc8b1('0x3c')]};return db[_0xc8b1('0x2e')][_0xc8b1('0x21')](_0x58a023)[_0xc8b1('0x27')](function(_0x55264d){_0x1c313a[_0xc8b1('0x21')]=_0x55264d;if(_0x1f34f9[_0xc8b1('0x35')]['includeAll']){_0x2c140f[_0xc8b1('0x40')]=[{'all':!![]}];}return db[_0xc8b1('0x2e')][_0xc8b1('0x41')](_0x2c140f);})[_0xc8b1('0x27')](function(_0x15be44){_0x1c313a['rows']=_0x15be44;return _0x1c313a;})['then'](respondWithFilteredResult(_0x16007e,_0x2c140f))['catch'](handleError(_0x16007e,null));};exports['show']=function(_0x5c8844,_0x23f1b8){var _0xf56f3b={'raw':![],'where':{'id':_0x5c8844[_0xc8b1('0x42')]['id']}},_0x1e5f3f={};_0x1e5f3f[_0xc8b1('0x36')]=_[_0xc8b1('0x32')](db[_0xc8b1('0x2e')][_0xc8b1('0x43')]);_0x1e5f3f[_0xc8b1('0x35')]=_[_0xc8b1('0x32')](_0x5c8844[_0xc8b1('0x35')]);_0x1e5f3f['filters']=_[_0xc8b1('0x34')](_0x1e5f3f[_0xc8b1('0x36')],_0x1e5f3f[_0xc8b1('0x35')]);_0xf56f3b[_0xc8b1('0x38')]=_[_0xc8b1('0x34')](_0x1e5f3f[_0xc8b1('0x36')],qs[_0xc8b1('0x37')](_0x5c8844['query'][_0xc8b1('0x37')]));_0xf56f3b[_0xc8b1('0x38')]=_0xf56f3b['attributes'][_0xc8b1('0x44')]?_0xf56f3b[_0xc8b1('0x38')]:_0x1e5f3f[_0xc8b1('0x36')];if(_0x5c8844[_0xc8b1('0x35')][_0xc8b1('0x45')]){_0xf56f3b[_0xc8b1('0x40')]=[{'all':!![]}];}_0xf56f3b=_[_0xc8b1('0x3f')]({},_0xf56f3b,_0x5c8844[_0xc8b1('0x46')]);return db[_0xc8b1('0x2e')][_0xc8b1('0x47')](_0xf56f3b)[_0xc8b1('0x27')](handleEntityNotFound(_0x23f1b8,null))[_0xc8b1('0x27')](respondWithResult(_0x23f1b8,null))[_0xc8b1('0x48')](handleError(_0x23f1b8,null));};exports[_0xc8b1('0x49')]=function(_0x3e9fe3,_0x562468){if(_0x3e9fe3['body']['id']){delete _0x3e9fe3[_0xc8b1('0x4a')]['id'];}return db['VoiceMusicOnHold'][_0xc8b1('0x47')]({'where':{'id':_0x3e9fe3[_0xc8b1('0x42')]['id']}})['then'](handleEntityNotFound(_0x562468,null))['then'](saveUpdates(_0x3e9fe3['body'],null))[_0xc8b1('0x27')](respondWithResult(_0x562468,null))['catch'](handleError(_0x562468,null));};exports[_0xc8b1('0x4b')]=function(_0x81bdff,_0x548a5c,_0x963723){return db[_0xc8b1('0x4c')]['transaction'](function(_0x33d598){if(_0x81bdff[_0xc8b1('0x4a')][_0xc8b1('0x4d')]===_0xc8b1('0x4e')){_0x81bdff[_0xc8b1('0x4a')][_0xc8b1('0x4f')]=path[_0xc8b1('0x50')](config[_0xc8b1('0x51')],_0xc8b1('0x52'),_0x81bdff['body'][_0xc8b1('0x2b')]);}return db[_0xc8b1('0x2e')][_0xc8b1('0x4b')](_0x81bdff[_0xc8b1('0x4a')],{'transaction':_0x33d598})[_0xc8b1('0x27')](function(_0x46f75d){if(_0x81bdff['body'][_0xc8b1('0x4d')]===_0xc8b1('0x4e')){fs[_0xc8b1('0x53')](_0x46f75d['directory'],parseInt('0777',0x8));}var _0x3c95a6=_0x81bdff[_0xc8b1('0x54')][_0xc8b1('0x55')]({'plain':!![]});if(!_0x3c95a6)throw new Error(_0xc8b1('0x56'));if(_0x3c95a6[_0xc8b1('0x57')]===_0xc8b1('0x54')){var _0x3719ee=_0x46f75d[_0xc8b1('0x55')]({'plain':!![]});return db[_0xc8b1('0x58')][_0xc8b1('0x47')]({'where':{'name':_0xc8b1('0x28'),'userProfileId':_0x3c95a6[_0xc8b1('0x59')]},'raw':!![]})[_0xc8b1('0x27')](function(_0x3f4071){if(_0x3f4071&&_0x3f4071[_0xc8b1('0x5a')]===0x0){return db['UserProfileResource']['create']({'name':_0x3719ee[_0xc8b1('0x2b')],'resourceId':_0x3719ee['id'],'type':_0x3f4071[_0xc8b1('0x2b')],'sectionId':_0x3f4071['id']},{})[_0xc8b1('0x27')](function(){return _0x46f75d;});}else{return _0x46f75d;}})[_0xc8b1('0x48')](function(_0x47cc1a){logger[_0xc8b1('0x29')](_0xc8b1('0x5b'),_0x47cc1a);});}return _0x46f75d;});})[_0xc8b1('0x27')](respondWithResult(_0x548a5c,0xc9))[_0xc8b1('0x48')](handleError(_0x548a5c,null));};exports[_0xc8b1('0x5c')]=function(_0xe9ee68,_0x6a36ba,_0xf37947){var _0x2a994d;return db[_0xc8b1('0x2e')][_0xc8b1('0x47')]({'where':{'id':_0xe9ee68[_0xc8b1('0x42')]['id']}})['then'](function(_0x31ae26){if(_0x31ae26){return db[_0xc8b1('0x4c')][_0xc8b1('0x5d')](function(_0x4faa6e){return _0x31ae26['destroy']({'transaction':_0x4faa6e,'raw':!![]})[_0xc8b1('0x27')](function(_0x5bf12e){if(_0x5bf12e[_0xc8b1('0x4f')]){fs[_0xc8b1('0x5e')](_0x5bf12e[_0xc8b1('0x4f')])[_0xc8b1('0x5f')](function(_0x148e78){fs[_0xc8b1('0x60')](path['join'](_0x5bf12e[_0xc8b1('0x4f')],_0x148e78));});fs[_0xc8b1('0x61')](_0x5bf12e[_0xc8b1('0x4f')]);}return _0x5bf12e;});})[_0xc8b1('0x48')](function(_0x29df8e){throw new db[(_0xc8b1('0x62'))]['ValidationError'](_0x29df8e[_0xc8b1('0x63')]);});}})[_0xc8b1('0x27')](handleEntityNotFound(_0x6a36ba,null))['then'](removeEntity(_0x6a36ba,null))[_0xc8b1('0x48')](handleError(_0x6a36ba,null));};exports[_0xc8b1('0x64')]=function(_0x457be1,_0x24e856,_0x362223){return db[_0xc8b1('0x4c')][_0xc8b1('0x5d')](function(_0x423593){var _0x2f3df5;return db[_0xc8b1('0x2e')][_0xc8b1('0x47')]({'where':{'id':_0x457be1[_0xc8b1('0x42')]['id']}})[_0xc8b1('0x27')](function(_0x479bb2){if(_0x479bb2){_0x2f3df5=_0x479bb2;return _0x479bb2['addSound'](_0x457be1[_0xc8b1('0x4a')]['id'],{'transaction':_0x423593});}})[_0xc8b1('0x27')](function(_0x17c2a9){if(_0x17c2a9){return db['Sound'][_0xc8b1('0x65')]({'where':{'id':_0x457be1[_0xc8b1('0x4a')]['id']},'attributes':['id',_0xc8b1('0x2b'),_0xc8b1('0x66'),_0xc8b1('0x67'),_0xc8b1('0x68')],'raw':!![]});}})['then'](function(_0x3bd6da){if(_0x3bd6da){var _0x3f41e0=path['join'](config[_0xc8b1('0x51')],_0xc8b1('0x69'),util[_0xc8b1('0x6a')](_0xc8b1('0x6b'),path[_0xc8b1('0x6c')](_0x3bd6da[_0xc8b1('0x66')],path[_0xc8b1('0x6d')](_0x3bd6da[_0xc8b1('0x66')])),_0x3bd6da[_0xc8b1('0x67')]));var _0x2868ea=path[_0xc8b1('0x50')](config['root'],_0xc8b1('0x52'),_0x2f3df5[_0xc8b1('0x2b')],util[_0xc8b1('0x6a')](_0xc8b1('0x6b'),_0x3bd6da[_0xc8b1('0x2b')],_0x3bd6da['converted_format']));fs['symlinkSync'](_0x3f41e0,_0x2868ea);return _0x3bd6da;}})['catch'](function(_0x31c2c9){throw new db[(_0xc8b1('0x62'))][(_0xc8b1('0x6e'))](_0x31c2c9[_0xc8b1('0x63')]);});})[_0xc8b1('0x27')](handleEntityNotFound(_0x24e856,null))[_0xc8b1('0x27')](respondWithResult(_0x24e856,0xc9))[_0xc8b1('0x48')](handleError(_0x24e856,null));};exports[_0xc8b1('0x6f')]=function(_0x1d9b31,_0x4d6494,_0x511bcd){return db[_0xc8b1('0x4c')][_0xc8b1('0x5d')](function(_0x2a4c7f){var _0x7b1f8a;return db[_0xc8b1('0x2e')][_0xc8b1('0x65')]({'where':{'id':_0x1d9b31[_0xc8b1('0x42')]['id']}})[_0xc8b1('0x27')](handleEntityNotFound(_0x4d6494,null))['then'](function(_0x269023){if(_0x269023){_0x7b1f8a=_0x269023;return _0x269023[_0xc8b1('0x6f')](_0x1d9b31['params']['id2']);}})['then'](function(_0x34b6c6){if(_0x34b6c6){return db['Sound'][_0xc8b1('0x65')]({'where':{'id':_0x1d9b31[_0xc8b1('0x42')][_0xc8b1('0x70')]},'attributes':['id','name','save_name',_0xc8b1('0x67'),_0xc8b1('0x68')],'raw':!![]});}})[_0xc8b1('0x27')](function(_0x558b60){if(_0x558b60){fs['unlinkSync'](path[_0xc8b1('0x50')](_0x7b1f8a['directory'],util[_0xc8b1('0x6a')]('%s.%s',_0x558b60[_0xc8b1('0x2b')],_0x558b60[_0xc8b1('0x67')])));return _0x558b60;}})[_0xc8b1('0x48')](function(_0x19e234){throw new db[(_0xc8b1('0x62'))]['ValidationError'](_0x19e234[_0xc8b1('0x63')]);});})[_0xc8b1('0x27')](handleEntityNotFound(_0x4d6494,null))['then'](respondWithStatusCode(_0x4d6494,0xcc))[_0xc8b1('0x48')](handleError(_0x4d6494,null));};exports['getSounds']=function(_0x1ab155,_0x5bca19,_0x4538f0){var _0x1b8472={};var _0xd0b0c8={};var _0x13b013;var _0x13e25c;return db['VoiceMusicOnHold'][_0xc8b1('0x65')]({'where':{'id':_0x1ab155[_0xc8b1('0x42')]['id']}})[_0xc8b1('0x27')](handleEntityNotFound(_0x5bca19,null))[_0xc8b1('0x27')](function(_0x27cb79){if(_0x27cb79){_0x13b013=_0x27cb79;_0xd0b0c8['model']=_[_0xc8b1('0x32')](db[_0xc8b1('0x71')][_0xc8b1('0x43')]);_0xd0b0c8['query']=_[_0xc8b1('0x32')](_0x1ab155[_0xc8b1('0x35')]);_0xd0b0c8[_0xc8b1('0x33')]=_[_0xc8b1('0x34')](_0xd0b0c8['model'],_0xd0b0c8[_0xc8b1('0x35')]);_0x1b8472['attributes']=_['intersection'](_0xd0b0c8[_0xc8b1('0x36')],qs[_0xc8b1('0x37')](_0x1ab155[_0xc8b1('0x35')][_0xc8b1('0x37')]));_0x1b8472[_0xc8b1('0x38')]=_0x1b8472[_0xc8b1('0x38')][_0xc8b1('0x44')]?_0x1b8472[_0xc8b1('0x38')]:_0xd0b0c8['model'];_0x1b8472['order']=qs[_0xc8b1('0x3b')](_0x1ab155['query']['sort']);_0x1b8472[_0xc8b1('0x3c')]=qs[_0xc8b1('0x33')](_[_0xc8b1('0x72')](_0x1ab155[_0xc8b1('0x35')],_0xd0b0c8[_0xc8b1('0x33')]));if(_0x1ab155[_0xc8b1('0x35')]['filter']){_0x1b8472['where']=_[_0xc8b1('0x3f')](_0x1b8472['where'],{'$or':_['map'](_0x1b8472[_0xc8b1('0x38')],function(_0x5c7551){var _0x55995e={};_0x55995e[_0x5c7551]={'$like':'%'+_0x1ab155[_0xc8b1('0x35')][_0xc8b1('0x3d')]+'%'};return _0x55995e;})});}_0x1b8472=_['merge']({},_0x1b8472,_0x1ab155[_0xc8b1('0x46')]);return _0x13b013[_0xc8b1('0x73')](_0x1b8472);}})[_0xc8b1('0x27')](function(_0x5b1561){if(_0x5b1561){_0x13e25c=_0x5b1561[_0xc8b1('0x44')];if(!_0x1ab155[_0xc8b1('0x35')][_0xc8b1('0x39')](_0xc8b1('0x74'))){_0x1b8472[_0xc8b1('0x20')]=qs[_0xc8b1('0x20')](_0x1ab155[_0xc8b1('0x35')][_0xc8b1('0x20')]);_0x1b8472[_0xc8b1('0x1e')]=qs[_0xc8b1('0x1e')](_0x1ab155['query'][_0xc8b1('0x1e')]);}return _0x13b013[_0xc8b1('0x73')](_0x1b8472);}})[_0xc8b1('0x27')](function(_0x50ab58){if(_0x50ab58){return _0x50ab58?{'count':_0x13e25c,'rows':_0x50ab58}:null;}})['then'](respondWithResult(_0x5bca19,null))[_0xc8b1('0x48')](handleError(_0x5bca19,null));};
\ No newline at end of file
index cf5e829..51b950c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfecc=['../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','voice_musiconhold','lodash','util'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xfecc,0x153));var _0xcfec=function(_0x1ef610,_0x365f7b){_0x1ef610=_0x1ef610-0x0;var _0x376f34=_0xfecc[_0x1ef610];return _0x376f34;};'use strict';var _=require(_0xcfec('0x0'));var util=require(_0xcfec('0x1'));var logger=require(_0xcfec('0x2'))(_0xcfec('0x3'));var moment=require(_0xcfec('0x4'));var BPromise=require(_0xcfec('0x5'));var rp=require(_0xcfec('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcfec('0x7'));var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module[_0xcfec('0x8')]=function(_0x569e79,_0x38cf45){return _0x569e79[_0xcfec('0x9')]('VoiceMusicOnHold',attributes,{'tableName':_0xcfec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa902=['define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes'];(function(_0x59f842,_0x512d91){var _0x245104=function(_0x5e411d){while(--_0x5e411d){_0x59f842['push'](_0x59f842['shift']());}};_0x245104(++_0x512d91);}(_0xa902,0xc7));var _0x2a90=function(_0x2ee500,_0x4f6d20){_0x2ee500=_0x2ee500-0x0;var _0x1da789=_0xa902[_0x2ee500];return _0x1da789;};'use strict';var _=require(_0x2a90('0x0'));var util=require(_0x2a90('0x1'));var logger=require(_0x2a90('0x2'))(_0x2a90('0x3'));var moment=require(_0x2a90('0x4'));var BPromise=require(_0x2a90('0x5'));var rp=require(_0x2a90('0x6'));var fs=require('fs');var path=require(_0x2a90('0x7'));var rimraf=require(_0x2a90('0x8'));var config=require(_0x2a90('0x9'));var attributes=require(_0x2a90('0xa'));module['exports']=function(_0x32c8ab,_0x1f9519){return _0x32c8ab[_0x2a90('0xb')](_0x2a90('0xc'),attributes,{'tableName':_0x2a90('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3e880f..26d081d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x493be8,_0x43eb88){var _0x1add63=function(_0x119d95){while(--_0x119d95){_0x493be8['push'](_0x493be8['shift']());}};_0x1add63(++_0x43eb88);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
+var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x132f5b,_0x47ca2c){var _0x1e0cd6=function(_0x36ab83){while(--_0x36ab83){_0x132f5b['push'](_0x132f5b['shift']());}};_0x1e0cd6(++_0x47ca2c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 9649e50..e5508f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe462=['/:id/users','getAgents','post','create','addAgents','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x426c3f,_0x54db0a){var _0x24e6ef=function(_0x11e3cf){while(--_0x11e3cf){_0x426c3f['push'](_0x426c3f['shift']());}};_0x24e6ef(++_0x54db0a);}(_0xe462,0x172));var _0x2e46=function(_0x16aa70,_0x5b1f73){_0x16aa70=_0x16aa70-0x0;var _0x11875f=_0xe462[_0x16aa70];return _0x11875f;};'use strict';var multer=require(_0x2e46('0x0'));var util=require(_0x2e46('0x1'));var path=require('path');var timeout=require(_0x2e46('0x2'));var express=require(_0x2e46('0x3'));var router=express[_0x2e46('0x4')]();var fs_extra=require(_0x2e46('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2e46('0x6'));var config=require(_0x2e46('0x7'));var controller=require('./voicePrefix.controller');router[_0x2e46('0x8')]('/',auth[_0x2e46('0x9')](),controller[_0x2e46('0xa')]);router['get'](_0x2e46('0xb'),auth[_0x2e46('0x9')](),controller['describe']);router[_0x2e46('0x8')](_0x2e46('0xc'),auth[_0x2e46('0x9')](),controller[_0x2e46('0xd')]);router[_0x2e46('0x8')](_0x2e46('0xe'),auth[_0x2e46('0x9')](),controller[_0x2e46('0xf')]);router[_0x2e46('0x10')]('/',auth['isAuthenticated'](),controller[_0x2e46('0x11')]);router[_0x2e46('0x10')](_0x2e46('0xe'),auth[_0x2e46('0x9')](),controller[_0x2e46('0x12')]);router[_0x2e46('0x13')](_0x2e46('0xc'),auth[_0x2e46('0x9')](),controller[_0x2e46('0x14')]);router[_0x2e46('0x15')](_0x2e46('0xc'),auth['isAuthenticated'](),controller[_0x2e46('0x16')]);router[_0x2e46('0x15')](_0x2e46('0xe'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x2e46('0x17')]=router;
\ No newline at end of file
+var _0xe0cc=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getTeams','post','create','/:id/users','addAgents','/:id/teams','update','destroy','delete','removeAgents','removeTeams','exports','multer','util','path'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xe0cc,0x1cd));var _0xce0c=function(_0x3cf4a9,_0x47f308){_0x3cf4a9=_0x3cf4a9-0x0;var _0x5a639c=_0xe0cc[_0x3cf4a9];return _0x5a639c;};'use strict';var multer=require(_0xce0c('0x0'));var util=require(_0xce0c('0x1'));var path=require(_0xce0c('0x2'));var timeout=require('connect-timeout');var express=require(_0xce0c('0x3'));var router=express[_0xce0c('0x4')]();var fs_extra=require(_0xce0c('0x5'));var auth=require(_0xce0c('0x6'));var interaction=require(_0xce0c('0x7'));var config=require(_0xce0c('0x8'));var controller=require(_0xce0c('0x9'));router[_0xce0c('0xa')]('/',auth[_0xce0c('0xb')](),controller[_0xce0c('0xc')]);router[_0xce0c('0xa')](_0xce0c('0xd'),auth['isAuthenticated'](),controller[_0xce0c('0xe')]);router[_0xce0c('0xa')](_0xce0c('0xf'),auth[_0xce0c('0xb')](),controller[_0xce0c('0x10')]);router[_0xce0c('0xa')]('/:id/users',auth[_0xce0c('0xb')](),controller['getAgents']);router[_0xce0c('0xa')]('/:id/teams',auth[_0xce0c('0xb')](),controller[_0xce0c('0x11')]);router[_0xce0c('0x12')]('/',auth['isAuthenticated'](),controller[_0xce0c('0x13')]);router['post'](_0xce0c('0x14'),auth[_0xce0c('0xb')](),controller[_0xce0c('0x15')]);router[_0xce0c('0x12')](_0xce0c('0x16'),auth['isAuthenticated'](),controller['addTeams']);router['put'](_0xce0c('0xf'),auth[_0xce0c('0xb')](),controller[_0xce0c('0x17')]);router['delete'](_0xce0c('0xf'),auth['isAuthenticated'](),controller[_0xce0c('0x18')]);router[_0xce0c('0x19')](_0xce0c('0x14'),auth['isAuthenticated'](),controller[_0xce0c('0x1a')]);router[_0xce0c('0x19')]('/:id/teams',auth['isAuthenticated'](),controller[_0xce0c('0x1b')]);module[_0xce0c('0x1c')]=router;
\ No newline at end of file
index 400fbdd..f72d264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd969=['VIRTUAL','getDataValue','INTEGER','exports','STRING','name'];(function(_0x48f29a,_0x1f9f1a){var _0x467232=function(_0xf1ae7e){while(--_0xf1ae7e){_0x48f29a['push'](_0x48f29a['shift']());}};_0x467232(++_0x1f9f1a);}(_0xd969,0xed));var _0x9d96=function(_0x285800,_0x26765e){_0x285800=_0x285800-0x0;var _0x4b809e=_0xd969[_0x285800];return _0x4b809e;};'use strict';var Sequelize=require('sequelize');module[_0x9d96('0x0')]={'name':{'type':Sequelize[_0x9d96('0x1')],'allowNull':![],'unique':_0x9d96('0x2')},'prefix':{'type':Sequelize[_0x9d96('0x3')],'get':function(_0x405512){return'system-'+this[_0x9d96('0x4')](_0x9d96('0x2'))+'-';}},'description':{'type':Sequelize[_0x9d96('0x1')]},'callerIdAll':{'type':Sequelize[_0x9d96('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x9d96('0x5')]}};
\ No newline at end of file
+var _0x2575=['VIRTUAL','system-','getDataValue','INTEGER','STRING','name'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x2575,0x112));var _0x5257=function(_0x14de1a,_0x4bf6fa){_0x14de1a=_0x14de1a-0x0;var _0x4960de=_0x2575[_0x14de1a];return _0x4960de;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x5257('0x0')],'allowNull':![],'unique':_0x5257('0x1')},'prefix':{'type':Sequelize[_0x5257('0x2')],'get':function(_0x3c4fcc){return _0x5257('0x3')+this[_0x5257('0x4')]('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x5257('0x0')]},'VoiceExtensionId':{'type':Sequelize[_0x5257('0x5')]}};
\ No newline at end of file
index 8ea5bed..ce63517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9b=['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','defaults','localhost','sendStatus','status','end','undefined','limit','count','offset','json','reject','update','then','VoicePrefixes','UserProfileResource','destroy','error','stack','name','send','index','map','VoicePrefix','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','find','describe','transaction','create','VoiceExtension','VoiceExtensionId','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','app','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','addAgents','body','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','nolimit','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','lodash','crypto'];(function(_0x17dae7,_0x3efb5a){var _0x40ce05=function(_0x58c225){while(--_0x58c225){_0x17dae7['push'](_0x17dae7['shift']());}};_0x40ce05(++_0x3efb5a);}(_0xdc9b,0x70));var _0xbdc9=function(_0x3f4e38,_0x256ded){_0x3f4e38=_0x3f4e38-0x0;var _0x2d2249=_0xdc9b[_0x3f4e38];return _0x2d2249;};'use strict';var emlformat=require(_0xbdc9('0x0'));var rimraf=require(_0xbdc9('0x1'));var zipdir=require(_0xbdc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbdc9('0x3'));var moment=require(_0xbdc9('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbdc9('0x5'));var path=require(_0xbdc9('0x6'));var sox=require('sox');var csv=require(_0xbdc9('0x7'));var ejs=require(_0xbdc9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbdc9('0x9'));var squel=require('squel');var crypto=require(_0xbdc9('0xa'));var jsforce=require(_0xbdc9('0xb'));var deskjs=require(_0xbdc9('0xc'));var toCsv=require(_0xbdc9('0x7'));var querystring=require(_0xbdc9('0xd'));var Papa=require(_0xbdc9('0xe'));var Redis=require(_0xbdc9('0xf'));var authService=require(_0xbdc9('0x10'));var qs=require(_0xbdc9('0x11'));var as=require(_0xbdc9('0x12'));var hardwareService=require(_0xbdc9('0x13'));var logger=require(_0xbdc9('0x14'))(_0xbdc9('0x15'));var utils=require(_0xbdc9('0x16'));var config=require(_0xbdc9('0x17'));var licenseUtil=require(_0xbdc9('0x18'));var db=require(_0xbdc9('0x19'))['db'];config[_0xbdc9('0x1a')]=_[_0xbdc9('0x1b')](config[_0xbdc9('0x1a')],{'host':_0xbdc9('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbdc9('0x1a')]));require('./voicePrefix.socket')['register'](socket);function respondWithStatusCode(_0x180f38,_0x29356f){_0x29356f=_0x29356f||0xcc;return function(_0x56f1f2){if(_0x56f1f2){return _0x180f38[_0xbdc9('0x1d')](_0x29356f);}return _0x180f38[_0xbdc9('0x1e')](_0x29356f)[_0xbdc9('0x1f')]();};}function respondWithResult(_0x18bd36,_0x46d44d){_0x46d44d=_0x46d44d||0xc8;return function(_0x36e256){if(_0x36e256){return _0x18bd36['status'](_0x46d44d)['json'](_0x36e256);}};}function respondWithFilteredResult(_0x1756e6,_0x11e0c1){return function(_0x32b094){if(_0x32b094){var _0x54add5=typeof _0x11e0c1['offset']===_0xbdc9('0x20')&&typeof _0x11e0c1[_0xbdc9('0x21')]==='undefined';var _0x7d3d9f=_0x32b094[_0xbdc9('0x22')];var _0x1f112d=_0x54add5?0x0:_0x11e0c1['offset'];var _0x15540e=_0x54add5?_0x32b094[_0xbdc9('0x22')]:_0x11e0c1[_0xbdc9('0x23')]+_0x11e0c1[_0xbdc9('0x21')];var _0x35671a;if(_0x15540e>=_0x7d3d9f){_0x15540e=_0x7d3d9f;_0x35671a=0xc8;}else{_0x35671a=0xce;}_0x1756e6[_0xbdc9('0x1e')](_0x35671a);return _0x1756e6['set']('Content-Range',_0x1f112d+'-'+_0x15540e+'/'+_0x7d3d9f)[_0xbdc9('0x24')](_0x32b094);}return null;};}function patchUpdates(_0x26f72){return function(_0x25e634){try{jsonpatch['apply'](_0x25e634,_0x26f72,!![]);}catch(_0x2604fb){return BPromise[_0xbdc9('0x25')](_0x2604fb);}return _0x25e634['save']();};}function saveUpdates(_0x715fa1,_0x18ca88){return function(_0x38d868){if(_0x38d868){return _0x38d868[_0xbdc9('0x26')](_0x715fa1)[_0xbdc9('0x27')](function(_0x27c6c7){return _0x27c6c7;});}return null;};}function removeEntity(_0xdaffa9,_0x41f103){return function(_0x1f085f){if(_0x1f085f){return _0x1f085f['destroy']()[_0xbdc9('0x27')](function(){var _0x1a1324=_0x1f085f['get']({'plain':!![]});var _0x23ea10=_0xbdc9('0x28');return db[_0xbdc9('0x29')][_0xbdc9('0x2a')]({'where':{'type':_0x23ea10,'resourceId':_0x1a1324['id']}})[_0xbdc9('0x27')](function(){return _0x1f085f;});})[_0xbdc9('0x27')](function(){_0xdaffa9['status'](0xcc)[_0xbdc9('0x1f')]();});}};}function handleEntityNotFound(_0x36b0dd,_0x1cb43b){return function(_0x5338ea){if(!_0x5338ea){_0x36b0dd['sendStatus'](0x194);}return _0x5338ea;};}function handleError(_0x47cda2,_0x214d74){_0x214d74=_0x214d74||0x1f4;return function(_0x2ce975){logger[_0xbdc9('0x2b')](_0x2ce975[_0xbdc9('0x2c')]);if(_0x2ce975[_0xbdc9('0x2d')]){delete _0x2ce975[_0xbdc9('0x2d')];}_0x47cda2['status'](_0x214d74)[_0xbdc9('0x2e')](_0x2ce975);};}exports[_0xbdc9('0x2f')]=function(_0x10eee2,_0x1a92a5){var _0x5681f8={},_0x3b8954={},_0x282341={'count':0x0,'rows':[]};var _0x381cd3=_[_0xbdc9('0x30')](db[_0xbdc9('0x31')]['rawAttributes'],function(_0x202844){return{'name':_0x202844['fieldName'],'type':_0x202844[_0xbdc9('0x32')][_0xbdc9('0x33')]};});_0x3b8954[_0xbdc9('0x34')]=_[_0xbdc9('0x30')](_0x381cd3,_0xbdc9('0x2d'));_0x3b8954[_0xbdc9('0x35')]=_[_0xbdc9('0x36')](_0x10eee2[_0xbdc9('0x35')]);_0x3b8954[_0xbdc9('0x37')]=_['intersection'](_0x3b8954[_0xbdc9('0x34')],_0x3b8954[_0xbdc9('0x35')]);_0x5681f8['attributes']=_[_0xbdc9('0x38')](_0x3b8954['model'],qs['fields'](_0x10eee2['query'][_0xbdc9('0x39')]));_0x5681f8['attributes']=_0x5681f8[_0xbdc9('0x3a')]['length']?_0x5681f8[_0xbdc9('0x3a')]:_0x3b8954[_0xbdc9('0x34')];if(!_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x3b')]('nolimit')){_0x5681f8[_0xbdc9('0x21')]=qs['limit'](_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x21')]);_0x5681f8['offset']=qs[_0xbdc9('0x23')](_0x10eee2['query'][_0xbdc9('0x23')]);}_0x5681f8[_0xbdc9('0x3c')]=qs[_0xbdc9('0x3d')](_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x3d')]);_0x5681f8[_0xbdc9('0x3e')]=qs['filters'](_['pick'](_0x10eee2[_0xbdc9('0x35')],_0x3b8954['filters']),_0x381cd3);if(_0x10eee2['query'][_0xbdc9('0x3f')]){_0x5681f8[_0xbdc9('0x3e')]=_[_0xbdc9('0x40')](_0x5681f8[_0xbdc9('0x3e')],{'$or':_[_0xbdc9('0x30')](_0x381cd3,function(_0x3c9c23){if(_0x3c9c23['type']!==_0xbdc9('0x41')){var _0x441346={};_0x441346[_0x3c9c23[_0xbdc9('0x2d')]]={'$like':'%'+_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x3f')]+'%'};return _0x441346;}})});}_0x5681f8=_[_0xbdc9('0x40')]({},_0x5681f8,_0x10eee2[_0xbdc9('0x42')]);var _0x577858={'where':_0x5681f8[_0xbdc9('0x3e')]};return db[_0xbdc9('0x31')]['count'](_0x577858)['then'](function(_0x537138){_0x282341[_0xbdc9('0x22')]=_0x537138;if(_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x43')]){_0x5681f8['include']=[{'all':!![]}];}return db[_0xbdc9('0x31')][_0xbdc9('0x44')](_0x5681f8);})[_0xbdc9('0x27')](function(_0x54ceb8){_0x282341[_0xbdc9('0x45')]=_0x54ceb8;return _0x282341;})[_0xbdc9('0x27')](respondWithFilteredResult(_0x1a92a5,_0x5681f8))[_0xbdc9('0x46')](handleError(_0x1a92a5,null));};exports[_0xbdc9('0x47')]=function(_0x20068a,_0x51b387){var _0x467b7c={'raw':![],'where':{'id':_0x20068a[_0xbdc9('0x48')]['id']}},_0xa62040={};_0xa62040[_0xbdc9('0x34')]=_[_0xbdc9('0x36')](db[_0xbdc9('0x31')][_0xbdc9('0x49')]);_0xa62040['query']=_[_0xbdc9('0x36')](_0x20068a[_0xbdc9('0x35')]);_0xa62040['filters']=_[_0xbdc9('0x38')](_0xa62040[_0xbdc9('0x34')],_0xa62040[_0xbdc9('0x35')]);_0x467b7c[_0xbdc9('0x3a')]=_[_0xbdc9('0x38')](_0xa62040[_0xbdc9('0x34')],qs[_0xbdc9('0x39')](_0x20068a[_0xbdc9('0x35')][_0xbdc9('0x39')]));_0x467b7c[_0xbdc9('0x3a')]=_0x467b7c['attributes'][_0xbdc9('0x4a')]?_0x467b7c[_0xbdc9('0x3a')]:_0xa62040[_0xbdc9('0x34')];if(_0x20068a['query'][_0xbdc9('0x43')]){_0x467b7c['include']=[{'all':!![]}];}_0x467b7c=_['merge']({},_0x467b7c,_0x20068a[_0xbdc9('0x42')]);return db[_0xbdc9('0x31')][_0xbdc9('0x4b')](_0x467b7c)[_0xbdc9('0x27')](handleEntityNotFound(_0x51b387,null))['then'](respondWithResult(_0x51b387,null))[_0xbdc9('0x46')](handleError(_0x51b387,null));};exports[_0xbdc9('0x2a')]=function(_0x40100e,_0x5dad83){return db['VoicePrefix'][_0xbdc9('0x4b')]({'where':{'id':_0x40100e[_0xbdc9('0x48')]['id']}})[_0xbdc9('0x27')](handleEntityNotFound(_0x5dad83,null))['then'](removeEntity(_0x5dad83,null))[_0xbdc9('0x46')](handleError(_0x5dad83,null));};exports[_0xbdc9('0x4c')]=function(_0x1a2d80,_0x39d5aa){return db[_0xbdc9('0x31')][_0xbdc9('0x4c')]()[_0xbdc9('0x27')](respondWithResult(_0x39d5aa,null))[_0xbdc9('0x46')](handleError(_0x39d5aa,null));};exports['create']=function(_0x54f4c0,_0x49d66f){var _0x38931b;return db['sequelize'][_0xbdc9('0x4d')](function(_0x3aa21d){return db[_0xbdc9('0x31')][_0xbdc9('0x4e')](_0x54f4c0['body'],{'transaction':_0x3aa21d})[_0xbdc9('0x27')](function(_0x370dd4){_0x38931b=_0x370dd4['get']({'plain':!![]});return db[_0xbdc9('0x4f')][_0xbdc9('0x4b')]({'where':{'id':_0x38931b[_0xbdc9('0x50')]},'raw':!![]})[_0xbdc9('0x27')](function(_0x5887f4){return createVoicePrefixExtensions(_0x38931b,_0x5887f4,_0x3aa21d);});});})['then'](function(){var _0x1f6075=_0x54f4c0[_0xbdc9('0x51')][_0xbdc9('0x52')]({'plain':!![]});if(!_0x1f6075)throw new Error(_0xbdc9('0x53'));if(_0x1f6075[_0xbdc9('0x54')]===_0xbdc9('0x51')){var _0x52772c=_0x38931b;return db['UserProfileSection'][_0xbdc9('0x4b')]({'where':{'name':_0xbdc9('0x28'),'userProfileId':_0x1f6075[_0xbdc9('0x55')]},'raw':!![]})[_0xbdc9('0x27')](function(_0x44aa9a){if(_0x44aa9a&&_0x44aa9a[_0xbdc9('0x56')]===0x0){return db[_0xbdc9('0x29')]['create']({'name':_0x52772c['name'],'resourceId':_0x52772c['id'],'type':_0x44aa9a[_0xbdc9('0x2d')],'sectionId':_0x44aa9a['id']},{})[_0xbdc9('0x27')](function(){return _0x38931b;});}else{return _0x38931b;}})[_0xbdc9('0x46')](function(_0x3497eb){logger['error'](_0xbdc9('0x57'),_0x3497eb);throw _0x3497eb;});}return _0x38931b;})['then'](respondWithResult(_0x49d66f,null))['catch'](handleError(_0x49d66f,null));};function Extension(_0x293b86,_0x3ca18d,_0x34221d,_0x4770d9){this[_0xbdc9('0x58')]=_0xbdc9('0x59');this['exten']=_0x293b86;this[_0xbdc9('0x5a')]=_0x34221d;this[_0xbdc9('0x32')]=_0xbdc9('0x5b');this[_0xbdc9('0x5c')]=_0xbdc9('0x5d');this['priority']=_0x3ca18d;this[_0xbdc9('0x5e')]=_0x4770d9;}function createVoicePrefixExtensions(_0x513399,_0x158a95,_0x8969c1){return new BPromise(function(_0x5226bc,_0x57281a){var _0x3188f6=new Extension(formatPrefixName(_0x513399[_0xbdc9('0x5f')]),0x1,_0xbdc9('0x60'),_0xbdc9('0x61'));_0x3188f6[_0xbdc9('0x62')]=_0x513399['id'];return db[_0xbdc9('0x4f')]['create'](_0x3188f6,{'transaction':_0x8969c1})[_0xbdc9('0x27')](function(_0x4db008){var _0x4c3e0d=_0x4db008[_0xbdc9('0x52')]({'plain':!![]});var _0x142935=_[_0xbdc9('0x30')](addVoicePrefixExtensions(_0x513399,_0x158a95),function(_0x31a96f){_0x31a96f[_0xbdc9('0x50')]=_0x4c3e0d['id'];_0x31a96f[_0xbdc9('0x62')]=_0x513399['id'];return _0x31a96f;});return db[_0xbdc9('0x4f')]['bulkCreate'](_0x142935,{'transaction':_0x8969c1})[_0xbdc9('0x27')](function(_0x4f08f0){if(!_0x4f08f0){return _0x57281a('Extensions\x20creation\x20failed');}else{return _0x5226bc(_0x4f08f0);}})[_0xbdc9('0x46')](function(_0x4e6a32){return _0x57281a(_0x4e6a32);});});;});};function addVoicePrefixExtensions(_0x4e27b3,_0x15de05){var _0x253957=[];var _0x132e80=formatPrefixName(_0x4e27b3[_0xbdc9('0x5f')]);_0x253957[_0xbdc9('0x63')](new Extension(_0x132e80,0x2,_0xbdc9('0x64'),_0xbdc9('0x65')+_0x4e27b3[_0xbdc9('0x2d')]));if(_0x4e27b3[_0xbdc9('0x66')]){_0x253957['push'](new Extension(_0x132e80,0x3,'Set','PREFIX-CALLERIDALL='+_0x4e27b3['callerIdAll']));}else{_0x253957[_0xbdc9('0x63')](new Extension(_0x132e80,0x3,'NoOp',_0xbdc9('0x67')));}_0x253957[_0xbdc9('0x63')](new Extension(_0x132e80,0x4,_0xbdc9('0x68'),_0x15de05[_0xbdc9('0x58')]+','+_0xbdc9('0x69')+(0x8+_0x4e27b3[_0xbdc9('0x2d')][_0xbdc9('0x4a')])+'}'+','+0x1));return _0x253957;}function formatPrefixName(_0x5aee15){var _0x490552='_';for(var _0x2846ff=0x0;_0x2846ff<_0x5aee15['length'];_0x2846ff++){if(_0x5aee15[_0xbdc9('0x6a')](_0x2846ff)=='-'){_0x490552+=_0x5aee15[_0xbdc9('0x6a')](_0x2846ff);}else{_0x490552+='['+_0x5aee15[_0xbdc9('0x6a')](_0x2846ff)+']';}}_0x490552+='.';return _0x490552;}exports[_0xbdc9('0x26')]=function(_0x42fb37,_0x257b39,_0x56120d){var _0x5e6569=_0x42fb37['body'];_0x5e6569[_0xbdc9('0x5f')]=_0xbdc9('0x6b')+_0x5e6569[_0xbdc9('0x2d')]+'-';return db[_0xbdc9('0x6c')][_0xbdc9('0x4d')](function(_0xf21a3f){return db['VoicePrefix'][_0xbdc9('0x26')](_0x5e6569,{'where':{'id':_0x5e6569['id']},'transaction':_0xf21a3f})['then'](function(){return db[_0xbdc9('0x4f')][_0xbdc9('0x2a')]({'where':{'VoicePrefixId':_0x5e6569['id']},'transaction':_0xf21a3f})['then'](function(){return db[_0xbdc9('0x4f')][_0xbdc9('0x4b')]({'where':{'id':_0x5e6569['VoiceExtensionId']},'raw':!![]})[_0xbdc9('0x27')](function(_0x1d1072){return createVoicePrefixExtensions(_0x5e6569,_0x1d1072,_0xf21a3f);});});});})[_0xbdc9('0x27')](function(){return db[_0xbdc9('0x31')]['findById'](_0x5e6569['id']);})['then'](respondWithResult(_0x257b39,null))[_0xbdc9('0x46')](handleError(_0x257b39,null));};exports[_0xbdc9('0x6d')]=function(_0x1c461c,_0x1cb30e,_0x5e3687){return db[_0xbdc9('0x31')][_0xbdc9('0x4b')]({'where':{'id':_0x1c461c['params']['id']}})['then'](handleEntityNotFound(_0x1cb30e,null))[_0xbdc9('0x27')](function(_0x4c2b2a){if(_0x4c2b2a){return _0x4c2b2a['addAgents'](_0x1c461c[_0xbdc9('0x6e')][_0xbdc9('0x6f')],_[_0xbdc9('0x70')](_0x1c461c['body'],[_0xbdc9('0x6f'),'id'])||{})[_0xbdc9('0x71')](function(_0xdeb275){for(var _0x9deb8f=0x0;_0x9deb8f<_0x1c461c[_0xbdc9('0x6e')][_0xbdc9('0x6f')][_0xbdc9('0x4a')];_0x9deb8f+=0x1){socket[_0xbdc9('0x72')](_0xbdc9('0x73'),{'UserId':Number(_0x1c461c[_0xbdc9('0x6e')][_0xbdc9('0x6f')][_0x9deb8f]),'VoicePrefixId':Number(_0x1c461c[_0xbdc9('0x48')]['id'])});}return _0xdeb275;});}})[_0xbdc9('0x27')](respondWithResult(_0x1cb30e,null))[_0xbdc9('0x46')](handleError(_0x1cb30e,null));};exports[_0xbdc9('0x74')]=function(_0x55e783,_0x3e293d,_0x136816){return db[_0xbdc9('0x31')][_0xbdc9('0x4b')]({'where':{'id':_0x55e783[_0xbdc9('0x48')]['id']}})[_0xbdc9('0x27')](handleEntityNotFound(_0x3e293d,null))['then'](function(_0x4e31b1){if(_0x4e31b1){return _0x4e31b1['removeAgents'](_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')])['then'](function(){if(_[_0xbdc9('0x75')](_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')])){for(var _0x58023b=0x0;_0x58023b<_0x55e783['query'][_0xbdc9('0x6f')][_0xbdc9('0x4a')];_0x58023b+=0x1){socket['emit'](_0xbdc9('0x76'),{'UserId':Number(_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')][_0x58023b]),'VoicePrefixId':Number(_0x55e783[_0xbdc9('0x48')]['id'])});}}else{socket[_0xbdc9('0x72')](_0xbdc9('0x76'),{'UserId':Number(_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')]),'VoicePrefixId':Number(_0x55e783['params']['id'])});}});}})[_0xbdc9('0x27')](respondWithStatusCode(_0x3e293d,null))[_0xbdc9('0x46')](handleError(_0x3e293d,null));};exports[_0xbdc9('0x77')]=function(_0x1fc1a6,_0x44b41b,_0x4e077b){var _0x59caeb={};var _0x5d8dad={};var _0x3b044e;var _0x31c0ae;return db['VoicePrefix'][_0xbdc9('0x78')]({'where':{'id':_0x1fc1a6[_0xbdc9('0x48')]['id']}})[_0xbdc9('0x27')](handleEntityNotFound(_0x44b41b,null))[_0xbdc9('0x27')](function(_0x2beb55){if(_0x2beb55){_0x3b044e=_0x2beb55;_0x5d8dad['model']=_[_0xbdc9('0x36')](db[_0xbdc9('0x79')]['rawAttributes']);_0x5d8dad[_0xbdc9('0x35')]=_[_0xbdc9('0x36')](_0x1fc1a6[_0xbdc9('0x35')]);_0x5d8dad['filters']=_[_0xbdc9('0x38')](_0x5d8dad[_0xbdc9('0x34')],_0x5d8dad['query']);_0x59caeb['attributes']=_[_0xbdc9('0x38')](_0x5d8dad['model'],qs['fields'](_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x39')]));_0x59caeb['attributes']=_0x59caeb[_0xbdc9('0x3a')]['length']?_0x59caeb[_0xbdc9('0x3a')]:_0x5d8dad[_0xbdc9('0x34')];_0x59caeb[_0xbdc9('0x3c')]=qs[_0xbdc9('0x3d')](_0x1fc1a6[_0xbdc9('0x35')]['sort']);_0x59caeb[_0xbdc9('0x3e')]=qs[_0xbdc9('0x37')](_['pick'](_0x1fc1a6['query'],_0x5d8dad['filters']));if(_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x3f')]){_0x59caeb[_0xbdc9('0x3e')]=_[_0xbdc9('0x40')](_0x59caeb[_0xbdc9('0x3e')],{'$or':_[_0xbdc9('0x30')](_0x59caeb[_0xbdc9('0x3a')],function(_0x3d7dfb){var _0x36c9fa={};_0x36c9fa[_0x3d7dfb]={'$like':'%'+_0x1fc1a6['query']['filter']+'%'};return _0x36c9fa;})});}_0x59caeb=_[_0xbdc9('0x40')]({},_0x59caeb,_0x1fc1a6[_0xbdc9('0x42')]);return _0x3b044e[_0xbdc9('0x77')](_0x59caeb);}})[_0xbdc9('0x27')](function(_0x341686){if(_0x341686){_0x31c0ae=_0x341686[_0xbdc9('0x4a')];if(!_0x1fc1a6['query'][_0xbdc9('0x3b')](_0xbdc9('0x7a'))){_0x59caeb['limit']=qs[_0xbdc9('0x21')](_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x21')]);_0x59caeb[_0xbdc9('0x23')]=qs['offset'](_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x23')]);}return _0x3b044e[_0xbdc9('0x77')](_0x59caeb);}})['then'](function(_0x570db9){if(_0x570db9){return _0x570db9?{'count':_0x31c0ae,'rows':_0x570db9}:null;}})[_0xbdc9('0x27')](respondWithResult(_0x44b41b,null))[_0xbdc9('0x46')](handleError(_0x44b41b,null));};
\ No newline at end of file
+var _0x8aad=['Team','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','removeTeams','isEmpty','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','VoicePrefix','includeAll','include','rows','catch','show','length','find','params','describe','create','transaction','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','context','exten','app','type','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','addAgents','body','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','User','getTeams','findOne','nolimit','findAll','online','voicePause','interface','flatMap','Agents','addTeams','each','TeamVoicePrefix','forEach'];(function(_0x6ef703,_0x2695d9){var _0x4a13a3=function(_0x3f14aa){while(--_0x3f14aa){_0x6ef703['push'](_0x6ef703['shift']());}};_0x4a13a3(++_0x2695d9);}(_0x8aad,0x146));var _0xd8aa=function(_0x4fb32f,_0x47794e){_0x4fb32f=_0x4fb32f-0x0;var _0x3b172b=_0x8aad[_0x4fb32f];return _0x3b172b;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];config[_0xd8aa('0x17')]=_[_0xd8aa('0x18')](config[_0xd8aa('0x17')],{'host':_0xd8aa('0x19'),'port':0x18eb});var socket=require(_0xd8aa('0x1a'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0xd8aa('0x1b')](socket);function respondWithStatusCode(_0x319ffe,_0x2bbd1e){_0x2bbd1e=_0x2bbd1e||0xcc;return function(_0x47c131){if(_0x47c131){return _0x319ffe[_0xd8aa('0x1c')](_0x2bbd1e);}return _0x319ffe[_0xd8aa('0x1d')](_0x2bbd1e)[_0xd8aa('0x1e')]();};}function respondWithResult(_0x404ed6,_0x47a0e3){_0x47a0e3=_0x47a0e3||0xc8;return function(_0x476930){if(_0x476930){return _0x404ed6[_0xd8aa('0x1d')](_0x47a0e3)['json'](_0x476930);}};}function respondWithFilteredResult(_0x16d5c6,_0x223a34){return function(_0x32e2cd){if(_0x32e2cd){var _0x3a29ca=typeof _0x223a34[_0xd8aa('0x1f')]==='undefined'&&typeof _0x223a34[_0xd8aa('0x20')]===_0xd8aa('0x21');var _0xb156e6=_0x32e2cd[_0xd8aa('0x22')];var _0x56936b=_0x3a29ca?0x0:_0x223a34[_0xd8aa('0x1f')];var _0x3df281=_0x3a29ca?_0x32e2cd[_0xd8aa('0x22')]:_0x223a34[_0xd8aa('0x1f')]+_0x223a34[_0xd8aa('0x20')];var _0x4fe5d8;if(_0x3df281>=_0xb156e6){_0x3df281=_0xb156e6;_0x4fe5d8=0xc8;}else{_0x4fe5d8=0xce;}_0x16d5c6[_0xd8aa('0x1d')](_0x4fe5d8);return _0x16d5c6[_0xd8aa('0x23')](_0xd8aa('0x24'),_0x56936b+'-'+_0x3df281+'/'+_0xb156e6)['json'](_0x32e2cd);}return null;};}function patchUpdates(_0xa7cf85){return function(_0x7a4ce7){try{jsonpatch[_0xd8aa('0x25')](_0x7a4ce7,_0xa7cf85,!![]);}catch(_0x290849){return BPromise[_0xd8aa('0x26')](_0x290849);}return _0x7a4ce7[_0xd8aa('0x27')]();};}function saveUpdates(_0x1f64f8,_0x34d957){return function(_0x375f64){if(_0x375f64){return _0x375f64[_0xd8aa('0x28')](_0x1f64f8)[_0xd8aa('0x29')](function(_0x370d6f){return _0x370d6f;});}return null;};}function removeEntity(_0x26cc66,_0x5f1027){return function(_0x1f066a){if(_0x1f066a){return _0x1f066a[_0xd8aa('0x2a')]()[_0xd8aa('0x29')](function(){var _0x1f6ab2=_0x1f066a[_0xd8aa('0x2b')]({'plain':!![]});var _0x3696fd=_0xd8aa('0x2c');return db[_0xd8aa('0x2d')][_0xd8aa('0x2a')]({'where':{'type':_0x3696fd,'resourceId':_0x1f6ab2['id']}})[_0xd8aa('0x29')](function(){return _0x1f066a;});})['then'](function(){_0x26cc66[_0xd8aa('0x1d')](0xcc)[_0xd8aa('0x1e')]();});}};}function handleEntityNotFound(_0x214393,_0x49a7c8){return function(_0x19a59d){if(!_0x19a59d){_0x214393['sendStatus'](0x194);}return _0x19a59d;};}function handleError(_0x3052c6,_0x441466){_0x441466=_0x441466||0x1f4;return function(_0x37902c){logger[_0xd8aa('0x2e')](_0x37902c[_0xd8aa('0x2f')]);if(_0x37902c[_0xd8aa('0x30')]){delete _0x37902c[_0xd8aa('0x30')];}_0x3052c6[_0xd8aa('0x1d')](_0x441466)['send'](_0x37902c);};}exports[_0xd8aa('0x31')]=function(_0x1c6fe6,_0x11071f){var _0x2d615a={},_0x1b475a={},_0x3b8476={'count':0x0,'rows':[]};var _0x271230=_[_0xd8aa('0x32')](db['VoicePrefix'][_0xd8aa('0x33')],function(_0x172673){return{'name':_0x172673[_0xd8aa('0x34')],'type':_0x172673['type'][_0xd8aa('0x35')]};});_0x1b475a[_0xd8aa('0x36')]=_[_0xd8aa('0x32')](_0x271230,_0xd8aa('0x30'));_0x1b475a[_0xd8aa('0x37')]=_[_0xd8aa('0x38')](_0x1c6fe6[_0xd8aa('0x37')]);_0x1b475a[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x1b475a['model'],_0x1b475a[_0xd8aa('0x37')]);_0x2d615a[_0xd8aa('0x3b')]=_[_0xd8aa('0x3a')](_0x1b475a[_0xd8aa('0x36')],qs[_0xd8aa('0x3c')](_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x3c')]));_0x2d615a[_0xd8aa('0x3b')]=_0x2d615a[_0xd8aa('0x3b')]['length']?_0x2d615a[_0xd8aa('0x3b')]:_0x1b475a['model'];if(!_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x3d')]('nolimit')){_0x2d615a[_0xd8aa('0x20')]=qs[_0xd8aa('0x20')](_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x20')]);_0x2d615a[_0xd8aa('0x1f')]=qs['offset'](_0x1c6fe6['query'][_0xd8aa('0x1f')]);}_0x2d615a['order']=qs[_0xd8aa('0x3e')](_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x3e')]);_0x2d615a[_0xd8aa('0x3f')]=qs[_0xd8aa('0x39')](_[_0xd8aa('0x40')](_0x1c6fe6[_0xd8aa('0x37')],_0x1b475a[_0xd8aa('0x39')]),_0x271230);if(_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x41')]){_0x2d615a[_0xd8aa('0x3f')]=_['merge'](_0x2d615a[_0xd8aa('0x3f')],{'$or':_[_0xd8aa('0x32')](_0x271230,function(_0x1d8d59){if(_0x1d8d59['type']!==_0xd8aa('0x42')){var _0x7e3882={};_0x7e3882[_0x1d8d59[_0xd8aa('0x30')]]={'$like':'%'+_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x41')]+'%'};return _0x7e3882;}})});}_0x2d615a=_[_0xd8aa('0x43')]({},_0x2d615a,_0x1c6fe6[_0xd8aa('0x44')]);var _0x4570b7={'where':_0x2d615a[_0xd8aa('0x3f')]};return db[_0xd8aa('0x45')][_0xd8aa('0x22')](_0x4570b7)[_0xd8aa('0x29')](function(_0x3b26c9){_0x3b8476[_0xd8aa('0x22')]=_0x3b26c9;if(_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x2d615a[_0xd8aa('0x47')]=[{'all':!![]}];}return db[_0xd8aa('0x45')]['findAll'](_0x2d615a);})[_0xd8aa('0x29')](function(_0x22cce6){_0x3b8476[_0xd8aa('0x48')]=_0x22cce6;return _0x3b8476;})[_0xd8aa('0x29')](respondWithFilteredResult(_0x11071f,_0x2d615a))[_0xd8aa('0x49')](handleError(_0x11071f,null));};exports[_0xd8aa('0x4a')]=function(_0x55af22,_0x253bce){var _0x5b34ec={'raw':![],'where':{'id':_0x55af22['params']['id']}},_0x30e2e0={};_0x30e2e0[_0xd8aa('0x36')]=_['keys'](db['VoicePrefix'][_0xd8aa('0x33')]);_0x30e2e0[_0xd8aa('0x37')]=_[_0xd8aa('0x38')](_0x55af22[_0xd8aa('0x37')]);_0x30e2e0[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x30e2e0['model'],_0x30e2e0[_0xd8aa('0x37')]);_0x5b34ec[_0xd8aa('0x3b')]=_[_0xd8aa('0x3a')](_0x30e2e0[_0xd8aa('0x36')],qs[_0xd8aa('0x3c')](_0x55af22['query']['fields']));_0x5b34ec['attributes']=_0x5b34ec[_0xd8aa('0x3b')][_0xd8aa('0x4b')]?_0x5b34ec[_0xd8aa('0x3b')]:_0x30e2e0[_0xd8aa('0x36')];if(_0x55af22[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x5b34ec['include']=[{'all':!![]}];}_0x5b34ec=_[_0xd8aa('0x43')]({},_0x5b34ec,_0x55af22[_0xd8aa('0x44')]);return db['VoicePrefix'][_0xd8aa('0x4c')](_0x5b34ec)[_0xd8aa('0x29')](handleEntityNotFound(_0x253bce,null))[_0xd8aa('0x29')](respondWithResult(_0x253bce,null))['catch'](handleError(_0x253bce,null));};exports[_0xd8aa('0x2a')]=function(_0x625df9,_0x3b93b1){return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x625df9[_0xd8aa('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3b93b1,null))['then'](removeEntity(_0x3b93b1,null))[_0xd8aa('0x49')](handleError(_0x3b93b1,null));};exports[_0xd8aa('0x4e')]=function(_0x361d5d,_0x1ea58a){return db[_0xd8aa('0x45')][_0xd8aa('0x4e')]()[_0xd8aa('0x29')](respondWithResult(_0x1ea58a,null))['catch'](handleError(_0x1ea58a,null));};exports[_0xd8aa('0x4f')]=function(_0x4035c2,_0x54e8cc){var _0x281e1c;return db['sequelize'][_0xd8aa('0x50')](function(_0x13f202){return db[_0xd8aa('0x45')]['create'](_0x4035c2['body'],{'transaction':_0x13f202})['then'](function(_0x4b85bc){_0x281e1c=_0x4b85bc[_0xd8aa('0x2b')]({'plain':!![]});return db[_0xd8aa('0x51')][_0xd8aa('0x4c')]({'where':{'id':_0x281e1c['VoiceExtensionId']},'raw':!![]})['then'](function(_0x495a33){return createVoicePrefixExtensions(_0x281e1c,_0x495a33,_0x13f202);});});})[_0xd8aa('0x29')](function(){var _0x40f356=_0x4035c2[_0xd8aa('0x52')][_0xd8aa('0x2b')]({'plain':!![]});if(!_0x40f356)throw new Error(_0xd8aa('0x53'));if(_0x40f356[_0xd8aa('0x54')]===_0xd8aa('0x52')){var _0x101105=_0x281e1c;return db[_0xd8aa('0x55')][_0xd8aa('0x4c')]({'where':{'name':_0xd8aa('0x2c'),'userProfileId':_0x40f356[_0xd8aa('0x56')]},'raw':!![]})[_0xd8aa('0x29')](function(_0x5da09b){if(_0x5da09b&&_0x5da09b['autoAssociation']===0x0){return db[_0xd8aa('0x2d')][_0xd8aa('0x4f')]({'name':_0x101105[_0xd8aa('0x30')],'resourceId':_0x101105['id'],'type':_0x5da09b[_0xd8aa('0x30')],'sectionId':_0x5da09b['id']},{})['then'](function(){return _0x281e1c;});}else{return _0x281e1c;}})[_0xd8aa('0x49')](function(_0x34efde){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x34efde);throw _0x34efde;});}return _0x281e1c;})[_0xd8aa('0x29')](respondWithResult(_0x54e8cc,null))[_0xd8aa('0x49')](handleError(_0x54e8cc,null));};function Extension(_0x157b97,_0x410436,_0x54aaef,_0x541a8b){this[_0xd8aa('0x57')]='from-sip';this[_0xd8aa('0x58')]=_0x157b97;this[_0xd8aa('0x59')]=_0x54aaef;this[_0xd8aa('0x5a')]=_0xd8aa('0x5b');this[_0xd8aa('0x5c')]=_0xd8aa('0x5d');this['priority']=_0x410436;this[_0xd8aa('0x5e')]=_0x541a8b;}function createVoicePrefixExtensions(_0x349cf0,_0x170192,_0x9f4561){return new BPromise(function(_0x17c5ac,_0x170954){var _0x3368ce=new Extension(formatPrefixName(_0x349cf0[_0xd8aa('0x5f')]),0x1,_0xd8aa('0x60'),_0xd8aa('0x61'));_0x3368ce[_0xd8aa('0x62')]=_0x349cf0['id'];return db[_0xd8aa('0x51')][_0xd8aa('0x4f')](_0x3368ce,{'transaction':_0x9f4561})[_0xd8aa('0x29')](function(_0x477454){var _0x406c32=_0x477454[_0xd8aa('0x2b')]({'plain':!![]});var _0x33989e=_[_0xd8aa('0x32')](addVoicePrefixExtensions(_0x349cf0,_0x170192),function(_0x11a715){_0x11a715[_0xd8aa('0x63')]=_0x406c32['id'];_0x11a715['VoicePrefixId']=_0x349cf0['id'];return _0x11a715;});return db['VoiceExtension']['bulkCreate'](_0x33989e,{'transaction':_0x9f4561})[_0xd8aa('0x29')](function(_0x5e3369){if(!_0x5e3369){return _0x170954(_0xd8aa('0x64'));}else{return _0x17c5ac(_0x5e3369);}})[_0xd8aa('0x49')](function(_0x2926e8){return _0x170954(_0x2926e8);});});;});};function addVoicePrefixExtensions(_0x26ed1e,_0x2d6de3){var _0x253dbb=[];var _0xdb3a5f=formatPrefixName(_0x26ed1e[_0xd8aa('0x5f')]);_0x253dbb[_0xd8aa('0x65')](new Extension(_0xdb3a5f,0x2,_0xd8aa('0x66'),_0xd8aa('0x67')+_0x26ed1e['name']));if(_0x26ed1e['callerIdAll']){_0x253dbb[_0xd8aa('0x65')](new Extension(_0xdb3a5f,0x3,'Set',_0xd8aa('0x68')+_0x26ed1e['callerIdAll']));}else{_0x253dbb['push'](new Extension(_0xdb3a5f,0x3,_0xd8aa('0x60'),_0xd8aa('0x69')));}_0x253dbb[_0xd8aa('0x65')](new Extension(_0xdb3a5f,0x4,_0xd8aa('0x6a'),_0x2d6de3['context']+','+_0xd8aa('0x6b')+(0x8+_0x26ed1e[_0xd8aa('0x30')][_0xd8aa('0x4b')])+'}'+','+0x1));return _0x253dbb;}function formatPrefixName(_0x9f73cf){var _0x17bc21='_';for(var _0x24132d=0x0;_0x24132d<_0x9f73cf[_0xd8aa('0x4b')];_0x24132d++){if(_0x9f73cf[_0xd8aa('0x6c')](_0x24132d)=='-'){_0x17bc21+=_0x9f73cf[_0xd8aa('0x6c')](_0x24132d);}else{_0x17bc21+='['+_0x9f73cf[_0xd8aa('0x6c')](_0x24132d)+']';}}_0x17bc21+='.';return _0x17bc21;}exports['update']=function(_0x190fdf,_0x4102a3,_0x19651c){var _0x588880=_0x190fdf['body'];_0x588880[_0xd8aa('0x5f')]=_0xd8aa('0x6d')+_0x588880['name']+'-';return db[_0xd8aa('0x6e')][_0xd8aa('0x50')](function(_0x2def5a){return db[_0xd8aa('0x45')][_0xd8aa('0x28')](_0x588880,{'where':{'id':_0x588880['id']},'transaction':_0x2def5a})[_0xd8aa('0x29')](function(){return db[_0xd8aa('0x51')]['destroy']({'where':{'VoicePrefixId':_0x588880['id']},'transaction':_0x2def5a})[_0xd8aa('0x29')](function(){return db[_0xd8aa('0x51')][_0xd8aa('0x4c')]({'where':{'id':_0x588880[_0xd8aa('0x63')]},'raw':!![]})[_0xd8aa('0x29')](function(_0x3ede08){return createVoicePrefixExtensions(_0x588880,_0x3ede08,_0x2def5a);});});});})[_0xd8aa('0x29')](function(){return db[_0xd8aa('0x45')]['findById'](_0x588880['id']);})[_0xd8aa('0x29')](respondWithResult(_0x4102a3,null))[_0xd8aa('0x49')](handleError(_0x4102a3,null));};exports[_0xd8aa('0x6f')]=function(_0x4c0df7,_0x1f8902,_0x32e01f){return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x4c0df7[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x1f8902,null))[_0xd8aa('0x29')](function(_0x2c6083){if(_0x2c6083){return _0x2c6083[_0xd8aa('0x6f')](_0x4c0df7[_0xd8aa('0x70')][_0xd8aa('0x71')],_[_0xd8aa('0x72')](_0x4c0df7[_0xd8aa('0x70')],[_0xd8aa('0x71'),'id'])||{})[_0xd8aa('0x73')](function(_0x12638b){for(var _0x2e1f93=0x0;_0x2e1f93<_0x4c0df7[_0xd8aa('0x70')]['ids'][_0xd8aa('0x4b')];_0x2e1f93+=0x1){socket[_0xd8aa('0x74')](_0xd8aa('0x75'),{'UserId':Number(_0x4c0df7[_0xd8aa('0x70')]['ids'][_0x2e1f93]),'VoicePrefixId':Number(_0x4c0df7[_0xd8aa('0x4d')]['id'])});}return _0x12638b;});}})[_0xd8aa('0x29')](respondWithResult(_0x1f8902,null))[_0xd8aa('0x49')](handleError(_0x1f8902,null));};exports[_0xd8aa('0x76')]=function(_0x5bb727,_0x247365,_0x549511){return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x5bb727[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x247365,null))[_0xd8aa('0x29')](function(_0xabf19e){if(_0xabf19e){return _0xabf19e[_0xd8aa('0x76')](_0x5bb727['query']['ids'])[_0xd8aa('0x29')](function(){if(_[_0xd8aa('0x77')](_0x5bb727[_0xd8aa('0x37')]['ids'])){for(var _0xc575c8=0x0;_0xc575c8<_0x5bb727[_0xd8aa('0x37')][_0xd8aa('0x71')][_0xd8aa('0x4b')];_0xc575c8+=0x1){socket[_0xd8aa('0x74')]('userVoicePrefix:remove',{'UserId':Number(_0x5bb727['query'][_0xd8aa('0x71')][_0xc575c8]),'VoicePrefixId':Number(_0x5bb727['params']['id'])});}}else{socket[_0xd8aa('0x74')](_0xd8aa('0x78'),{'UserId':Number(_0x5bb727[_0xd8aa('0x37')][_0xd8aa('0x71')]),'VoicePrefixId':Number(_0x5bb727[_0xd8aa('0x4d')]['id'])});}});}})[_0xd8aa('0x29')](respondWithStatusCode(_0x247365,null))['catch'](handleError(_0x247365,null));};exports[_0xd8aa('0x79')]=function(_0x1faa83,_0x3b574f,_0x51fa1a){var _0x501992={};var _0x5c261b={};var _0x5133c2;var _0x38e8d3;return db[_0xd8aa('0x45')]['findOne']({'where':{'id':_0x1faa83['params']['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x3b574f,null))[_0xd8aa('0x29')](function(_0x5f0700){if(_0x5f0700){_0x5133c2=_0x5f0700;_0x5c261b['model']=_[_0xd8aa('0x38')](db[_0xd8aa('0x7a')][_0xd8aa('0x33')]);_0x5c261b['query']=_['keys'](_0x1faa83[_0xd8aa('0x37')]);_0x5c261b[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x5c261b[_0xd8aa('0x36')],_0x5c261b[_0xd8aa('0x37')]);_0x501992[_0xd8aa('0x3b')]=_[_0xd8aa('0x3a')](_0x5c261b[_0xd8aa('0x36')],qs[_0xd8aa('0x3c')](_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x3c')]));_0x501992[_0xd8aa('0x3b')]=_0x501992[_0xd8aa('0x3b')][_0xd8aa('0x4b')]?_0x501992[_0xd8aa('0x3b')]:_0x5c261b[_0xd8aa('0x36')];_0x501992['order']=qs[_0xd8aa('0x3e')](_0x1faa83[_0xd8aa('0x37')]['sort']);_0x501992[_0xd8aa('0x3f')]=qs[_0xd8aa('0x39')](_[_0xd8aa('0x40')](_0x1faa83[_0xd8aa('0x37')],_0x5c261b[_0xd8aa('0x39')]));if(_0x1faa83['query'][_0xd8aa('0x41')]){_0x501992[_0xd8aa('0x3f')]=_['merge'](_0x501992[_0xd8aa('0x3f')],{'$or':_[_0xd8aa('0x32')](_0x501992['attributes'],function(_0x20fc1b){var _0x2b95de={};_0x2b95de[_0x20fc1b]={'$like':'%'+_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x41')]+'%'};return _0x2b95de;})});}_0x501992=_[_0xd8aa('0x43')]({},_0x501992,_0x1faa83[_0xd8aa('0x44')]);return _0x5133c2['getAgents'](_0x501992);}})[_0xd8aa('0x29')](function(_0x580eb2){if(_0x580eb2){_0x38e8d3=_0x580eb2[_0xd8aa('0x4b')];if(!_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x3d')]('nolimit')){_0x501992[_0xd8aa('0x20')]=qs['limit'](_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x20')]);_0x501992[_0xd8aa('0x1f')]=qs[_0xd8aa('0x1f')](_0x1faa83['query'][_0xd8aa('0x1f')]);}return _0x5133c2[_0xd8aa('0x79')](_0x501992);}})[_0xd8aa('0x29')](function(_0x1b4a36){if(_0x1b4a36){return _0x1b4a36?{'count':_0x38e8d3,'rows':_0x1b4a36}:null;}})['then'](respondWithResult(_0x3b574f,null))[_0xd8aa('0x49')](handleError(_0x3b574f,null));};exports[_0xd8aa('0x7b')]=function(_0x2d7177,_0x36d479,_0x3cfcb9){var _0x5e4bca={};var _0x5b0831={};var _0x3289cf;var _0x28052a;return db[_0xd8aa('0x45')][_0xd8aa('0x7c')]({'where':{'id':_0x2d7177[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x36d479,null))[_0xd8aa('0x29')](function(_0x553fa6){if(_0x553fa6){_0x3289cf=_0x553fa6;_0x5b0831[_0xd8aa('0x36')]=_[_0xd8aa('0x38')](db['Team']['rawAttributes']);_0x5b0831[_0xd8aa('0x37')]=_['keys'](_0x2d7177[_0xd8aa('0x37')]);_0x5b0831[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x5b0831[_0xd8aa('0x36')],_0x5b0831[_0xd8aa('0x37')]);_0x5e4bca[_0xd8aa('0x3b')]=_['intersection'](_0x5b0831['model'],qs['fields'](_0x2d7177[_0xd8aa('0x37')][_0xd8aa('0x3c')]));_0x5e4bca[_0xd8aa('0x3b')]=_0x5e4bca[_0xd8aa('0x3b')]['length']?_0x5e4bca[_0xd8aa('0x3b')]:_0x5b0831[_0xd8aa('0x36')];_0x5e4bca['order']=qs[_0xd8aa('0x3e')](_0x2d7177[_0xd8aa('0x37')][_0xd8aa('0x3e')]);_0x5e4bca[_0xd8aa('0x3f')]=qs[_0xd8aa('0x39')](_[_0xd8aa('0x40')](_0x2d7177[_0xd8aa('0x37')],_0x5b0831['filters']));if(_0x2d7177[_0xd8aa('0x37')]['filter']){_0x5e4bca[_0xd8aa('0x3f')]=_[_0xd8aa('0x43')](_0x5e4bca['where'],{'$or':_[_0xd8aa('0x32')](_0x5e4bca[_0xd8aa('0x3b')],function(_0x182cbd){var _0x422186={};_0x422186[_0x182cbd]={'$like':'%'+_0x2d7177[_0xd8aa('0x37')][_0xd8aa('0x41')]+'%'};return _0x422186;})});}_0x5e4bca=_[_0xd8aa('0x43')]({},_0x5e4bca,_0x2d7177['options']);return _0x3289cf[_0xd8aa('0x7b')](_0x5e4bca);}})[_0xd8aa('0x29')](function(_0x2b4fac){if(_0x2b4fac){_0x28052a=_0x2b4fac[_0xd8aa('0x4b')];if(!_0x2d7177['query'][_0xd8aa('0x3d')](_0xd8aa('0x7d'))){_0x5e4bca['limit']=qs['limit'](_0x2d7177['query']['limit']);_0x5e4bca[_0xd8aa('0x1f')]=qs[_0xd8aa('0x1f')](_0x2d7177[_0xd8aa('0x37')]['offset']);}return _0x3289cf[_0xd8aa('0x7b')](_0x5e4bca);}})['then'](function(_0x76dc90){if(_0x76dc90){return _0x76dc90?{'count':_0x28052a,'rows':_0x76dc90}:null;}})['then'](respondWithResult(_0x36d479,null))['catch'](handleError(_0x36d479,null));};exports['addTeams']=function(_0x933331,_0x4b7947,_0x212a44){var _0x33c91a=_0x933331[_0xd8aa('0x70')][_0xd8aa('0x71')];var _0x161aaa;return db['Team'][_0xd8aa('0x7e')]({'where':{'id':_0x33c91a},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xd8aa('0x30'),_0xd8aa('0x7f'),_0xd8aa('0x80'),_0xd8aa('0x81')],'raw':!![]}]})['then'](function(_0x1b04c2){if(_0x1b04c2){_0x161aaa=_0x1b04c2;var _0x439ab1=_[_0xd8aa('0x82')](_0x1b04c2,function(_0x2a4108){var _0x4bf0a9=_0x2a4108[_0xd8aa('0x2b')]({'plain':!![]});return _0x4bf0a9[_0xd8aa('0x83')];});return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x933331[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](function(_0x3d5219){return db[_0xd8aa('0x6e')][_0xd8aa('0x50')](function(_0x55b814){return _0x3d5219[_0xd8aa('0x84')](_0x33c91a,{'transaction':_0x55b814})['then'](function(){return BPromise[_0xd8aa('0x85')](_0x161aaa,function(_0x4cdf86){return db[_0xd8aa('0x86')]['upsert']({'TeamId':_0x4cdf86['id'],'VoicePrefixId':_0x933331[_0xd8aa('0x4d')]['id']},{'transaction':_0x55b814});});})[_0xd8aa('0x29')](function(){return BPromise[_0xd8aa('0x85')](_0x439ab1,function(_0xa55a54){return db['UserVoicePrefix']['findOrCreate']({'where':{'UserId':_0xa55a54['id'],'VoicePrefixId':_0x933331['params']['id']},'transaction':_0x55b814});});})[_0xd8aa('0x29')](function(){_0x439ab1[_0xd8aa('0x87')](function(_0x889d19){socket[_0xd8aa('0x74')](_0xd8aa('0x75'),{'UserId':_0x889d19['id'],'VoicePrefixId':_0x3d5219['id']});});});});});}})[_0xd8aa('0x29')](respondWithStatusCode(_0x4b7947,null))[_0xd8aa('0x49')](handleError(_0x4b7947,null));};exports['removeTeams']=function(_0x4b88c9,_0x6ac90d,_0x6dc54f){return db[_0xd8aa('0x88')]['findAll']({'where':{'id':_0x4b88c9[_0xd8aa('0x37')][_0xd8aa('0x71')]},'attributes':['id'],'include':[{'model':db[_0xd8aa('0x7a')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xd8aa('0x29')](handleEntityNotFound(_0x6ac90d,null))[_0xd8aa('0x29')](function(_0x76609d){var _0x3d3427=_[_0xd8aa('0x32')](_0x76609d,'id');var _0x38e64d=[];var _0xbec25a=[];var _0x278686=squel[_0xd8aa('0x89')]();_0x278686[_0xd8aa('0x8a')](_0xd8aa('0x8b'))['from']('team_has_voice_prefixes','tq')[_0xd8aa('0x8c')](_0xd8aa('0x8d'),'ut',_0xd8aa('0x8e'))['where']('VoicePrefixId\x20=\x20?',_0x4b88c9[_0xd8aa('0x4d')]['id']);for(var _0x8879c7=0x0;_0x8879c7<_0x76609d[_0xd8aa('0x4b')];_0x8879c7+=0x1){let _0x555672=_0x76609d[_0x8879c7];for(var _0x598eed=0x0;_0x598eed<_0x555672[_0xd8aa('0x83')][_0xd8aa('0x4b')];_0x598eed+=0x1){let _0x533d64=_0x555672[_0xd8aa('0x83')][_0x598eed];var _0x502ea0=_0x278686['clone']();_0x502ea0[_0xd8aa('0x3f')](_0xd8aa('0x8f'),_0x533d64['id']);_0xbec25a['push'](db[_0xd8aa('0x6e')][_0xd8aa('0x37')](_0x502ea0[_0xd8aa('0x90')](),{'type':db[_0xd8aa('0x6e')][_0xd8aa('0x91')][_0xd8aa('0x92')]})['then'](function(_0x2854df){if(_0x2854df[_0xd8aa('0x4b')]===0x1){return _0x533d64['id'];}else{var _0x299fd9=_[_0xd8aa('0x93')](_[_0xd8aa('0x32')](_0x2854df,_0xd8aa('0x94')),function(_0x15a392){return _[_0xd8aa('0x95')](_0x3d3427,_0x15a392);});if(_0x299fd9){return _0x533d64['id'];}}}));}}return BPromise['all'](_0xbec25a)[_0xd8aa('0x29')](function(_0xeced06){_0x38e64d=_(_0x38e64d)[_0xd8aa('0x96')](_0xeced06)[_0xd8aa('0x97')]()['value']();return db[_0xd8aa('0x45')]['find']({'where':{'id':_0x4b88c9['params']['id']}})[_0xd8aa('0x29')](function(_0x1cae55){return db[_0xd8aa('0x6e')][_0xd8aa('0x50')](function(_0x3d5f42){return _0x1cae55[_0xd8aa('0x98')](_0x4b88c9[_0xd8aa('0x37')][_0xd8aa('0x71')],{'transaction':_0x3d5f42})['then'](function(){if(!_[_0xd8aa('0x99')](_0x38e64d)){return _0x1cae55[_0xd8aa('0x76')](_0x38e64d,{'transaction':_0x3d5f42});}})[_0xd8aa('0x29')](function(){_0x38e64d[_0xd8aa('0x87')](function(_0x32998c){socket[_0xd8aa('0x74')](_0xd8aa('0x78'),{'UserId':_0x32998c,'VoicePrefixId':_0x1cae55['id']});});});});});});})[_0xd8aa('0x29')](respondWithStatusCode(_0x6ac90d,null))[_0xd8aa('0x49')](handleError(_0x6ac90d,null));};
\ No newline at end of file
index aeb6ccf..73e4c54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e4=['events','../../mysqldb','VoicePrefix','setMaxListeners','update','emit','hook','exports'];(function(_0xdd3240,_0x24b3ae){var _0x3af090=function(_0x36f941){while(--_0x36f941){_0xdd3240['push'](_0xdd3240['shift']());}};_0x3af090(++_0x24b3ae);}(_0xb9e4,0x140));var _0x4b9e=function(_0x26859f,_0x1b907f){_0x26859f=_0x26859f-0x0;var _0x10bbe0=_0xb9e4[_0x26859f];return _0x10bbe0;};'use strict';var EventEmitter=require(_0x4b9e('0x0'));var VoicePrefix=require(_0x4b9e('0x1'))['db'][_0x4b9e('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4b9e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4b9e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x33d626){return function(_0x7e1167,_0x3f51cd,_0x5b850b){VoicePrefixEvents[_0x4b9e('0x5')](_0x33d626+':'+_0x7e1167['id'],_0x7e1167);VoicePrefixEvents[_0x4b9e('0x5')](_0x33d626,_0x7e1167);_0x5b850b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x4b9e('0x6')](e,emitEvent(event));}}module[_0x4b9e('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x131b=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update'];(function(_0x4d831e,_0x308056){var _0x572cdb=function(_0x16240a){while(--_0x16240a){_0x4d831e['push'](_0x4d831e['shift']());}};_0x572cdb(++_0x308056);}(_0x131b,0x165));var _0xb131=function(_0x44508f,_0x3d2edc){_0x44508f=_0x44508f-0x0;var _0x3cc7b9=_0x131b[_0x44508f];return _0x3cc7b9;};'use strict';var EventEmitter=require(_0xb131('0x0'));var VoicePrefix=require(_0xb131('0x1'))['db'][_0xb131('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xb131('0x3')](0x0);var events={'afterCreate':_0xb131('0x4'),'afterUpdate':_0xb131('0x5'),'afterDestroy':_0xb131('0x6')};function emitEvent(_0x561370){return function(_0x1f11ea,_0x1ad3fa,_0x38de6e){VoicePrefixEvents[_0xb131('0x7')](_0x561370+':'+_0x1f11ea['id'],_0x1f11ea);VoicePrefixEvents[_0xb131('0x7')](_0x561370,_0x1f11ea);_0x38de6e(null);};}for(var e in events){if(events[_0xb131('0x8')](e)){var event=events[e];VoicePrefix[_0xb131('0x9')](e,emitEvent(event));}}module[_0xb131('0xa')]=VoicePrefixEvents;
\ No newline at end of file
index 70e0672..fdda43e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3964=['VoicePrefix','voice_prefixes','api','moment','bluebird','./voicePrefix.attributes'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3964,0xf8));var _0x4396=function(_0x1ec3fb,_0x31649f){_0x1ec3fb=_0x1ec3fb-0x0;var _0x32b222=_0x3964[_0x1ec3fb];return _0x32b222;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4396('0x0'));var moment=require(_0x4396('0x1'));var BPromise=require(_0x4396('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4396('0x3'));module['exports']=function(_0x397cf0,_0x3e44a8){return _0x397cf0['define'](_0x4396('0x4'),attributes,{'tableName':_0x4396('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1e0=['VoicePrefix','voice_prefixes','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes','exports','define'];(function(_0x28066c,_0x208767){var _0x541a32=function(_0x3917cc){while(--_0x3917cc){_0x28066c['push'](_0x28066c['shift']());}};_0x541a32(++_0x208767);}(_0xd1e0,0x64));var _0x0d1e=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xd1e0[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0x0d1e('0x0'));var util=require(_0x0d1e('0x1'));var logger=require('../../config/logger')(_0x0d1e('0x2'));var moment=require(_0x0d1e('0x3'));var BPromise=require(_0x0d1e('0x4'));var rp=require(_0x0d1e('0x5'));var fs=require('fs');var path=require(_0x0d1e('0x6'));var rimraf=require(_0x0d1e('0x7'));var config=require(_0x0d1e('0x8'));var attributes=require(_0x0d1e('0x9'));module[_0x0d1e('0xa')]=function(_0x154a68,_0x1fc902){return _0x154a68[_0x0d1e('0xb')](_0x0d1e('0xc'),attributes,{'tableName':_0x0d1e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af9a525..4bc9bd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0e=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','info','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3bdbdb,_0x2e8715){var _0x5eeb4d=function(_0x3522d5){while(--_0x3522d5){_0x3bdbdb['push'](_0x3bdbdb['shift']());}};_0x5eeb4d(++_0x2e8715);}(_0x8b0e,0x166));var _0xe8b0=function(_0x4394b6,_0x12357f){_0x4394b6=_0x4394b6-0x0;var _0x360244=_0x8b0e[_0x4394b6];return _0x360244;};'use strict';var _=require(_0xe8b0('0x0'));var util=require(_0xe8b0('0x1'));var moment=require(_0xe8b0('0x2'));var BPromise=require(_0xe8b0('0x3'));var rs=require(_0xe8b0('0x4'));var fs=require('fs');var Redis=require(_0xe8b0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe8b0('0x6'));var logger=require('../../config/logger')(_0xe8b0('0x7'));var config=require(_0xe8b0('0x8'));var jayson=require(_0xe8b0('0x9'));var client=jayson[_0xe8b0('0xa')][_0xe8b0('0xb')]({'port':0x232a});config[_0xe8b0('0xc')]=_[_0xe8b0('0xd')](config[_0xe8b0('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8b0('0xe'))(new Redis(config[_0xe8b0('0xc')]));require(_0xe8b0('0xf'))[_0xe8b0('0x10')](socket);function respondWithRpcPromise(_0x326408,_0x39ebdc,_0x3cfdc2){return new BPromise(function(_0xadf7d,_0x4092d4){return client['request'](_0x326408,_0x3cfdc2)['then'](function(_0x35358f){logger[_0xe8b0('0x11')](_0xe8b0('0x12'),_0x39ebdc,'request\x20sent');logger[_0xe8b0('0x13')](_0xe8b0('0x14'),_0x39ebdc,_0xe8b0('0x15'),JSON[_0xe8b0('0x16')](_0x35358f));if(_0x35358f[_0xe8b0('0x17')]){if(_0x35358f[_0xe8b0('0x17')][_0xe8b0('0x18')]===0x1f4){logger['error'](_0xe8b0('0x12'),_0x39ebdc,_0x35358f[_0xe8b0('0x17')][_0xe8b0('0x19')]);return _0x4092d4(_0x35358f['error'][_0xe8b0('0x19')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x39ebdc,_0x35358f['error'][_0xe8b0('0x19')]);return _0xadf7d(_0x35358f[_0xe8b0('0x17')]['message']);}else{logger[_0xe8b0('0x11')](_0xe8b0('0x12'),_0x39ebdc,_0xe8b0('0x15'));_0xadf7d(_0x35358f[_0xe8b0('0x1a')][_0xe8b0('0x19')]);}})[_0xe8b0('0x1b')](function(_0x49cf4e){logger['error'](_0xe8b0('0x12'),_0x39ebdc,_0x49cf4e);_0x4092d4(_0x49cf4e);});});}
\ No newline at end of file
+var _0xfc65=['redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../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);}(_0xfc65,0x1e1));var _0x5fc6=function(_0x1fd79a,_0x5a29c8){_0x1fd79a=_0x1fd79a-0x0;var _0x4bce34=_0xfc65[_0x1fd79a];return _0x4bce34;};'use strict';var _=require(_0x5fc6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5fc6('0x1'));var rs=require(_0x5fc6('0x2'));var fs=require('fs');var Redis=require(_0x5fc6('0x3'));var db=require(_0x5fc6('0x4'))['db'];var utils=require(_0x5fc6('0x5'));var logger=require(_0x5fc6('0x6'))(_0x5fc6('0x7'));var config=require(_0x5fc6('0x8'));var jayson=require(_0x5fc6('0x9'));var client=jayson[_0x5fc6('0xa')][_0x5fc6('0xb')]({'port':0x232a});config[_0x5fc6('0xc')]=_[_0x5fc6('0xd')](config['redis'],{'host':_0x5fc6('0xe'),'port':0x18eb});var socket=require(_0x5fc6('0xf'))(new Redis(config[_0x5fc6('0xc')]));require(_0x5fc6('0x10'))[_0x5fc6('0x11')](socket);function respondWithRpcPromise(_0xbc3db9,_0x23c4e2,_0x27cad8){return new BPromise(function(_0x3d8781,_0x29781f){return client['request'](_0xbc3db9,_0x27cad8)[_0x5fc6('0x12')](function(_0x51ad7e){logger[_0x5fc6('0x13')](_0x5fc6('0x14'),_0x23c4e2,_0x5fc6('0x15'));logger[_0x5fc6('0x16')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x23c4e2,_0x5fc6('0x15'),JSON[_0x5fc6('0x17')](_0x51ad7e));if(_0x51ad7e[_0x5fc6('0x18')]){if(_0x51ad7e[_0x5fc6('0x18')][_0x5fc6('0x19')]===0x1f4){logger[_0x5fc6('0x18')](_0x5fc6('0x14'),_0x23c4e2,_0x51ad7e[_0x5fc6('0x18')][_0x5fc6('0x1a')]);return _0x29781f(_0x51ad7e[_0x5fc6('0x18')]['message']);}logger['error'](_0x5fc6('0x14'),_0x23c4e2,_0x51ad7e[_0x5fc6('0x18')]['message']);return _0x3d8781(_0x51ad7e[_0x5fc6('0x18')][_0x5fc6('0x1a')]);}else{logger[_0x5fc6('0x13')](_0x5fc6('0x14'),_0x23c4e2,_0x5fc6('0x15'));_0x3d8781(_0x51ad7e[_0x5fc6('0x1b')]['message']);}})[_0x5fc6('0x1c')](function(_0x4363c1){logger[_0x5fc6('0x18')](_0x5fc6('0x14'),_0x23c4e2,_0x4363c1);_0x29781f(_0x4363c1);});});}
\ No newline at end of file
index 7d92d94..d08d141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x574d=['./voicePrefix.events','save','remove','update','removeListener','register','length','voicePrefix:'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x574d,0xc0));var _0xd574=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x574d[_0x5f09c5];return _0x426ad9;};'use strict';var VoicePrefixEvents=require(_0xd574('0x0'));var events=[_0xd574('0x1'),_0xd574('0x2'),_0xd574('0x3')];function createListener(_0x1d2268,_0x336175){return function(_0x46aec5){_0x336175['emit'](_0x1d2268,_0x46aec5);};}function removeListener(_0x2a54ff,_0x1be154){return function(){VoicePrefixEvents[_0xd574('0x4')](_0x2a54ff,_0x1be154);};}exports[_0xd574('0x5')]=function(_0x56ecee){for(var _0x16a152=0x0,_0x13a566=events[_0xd574('0x6')];_0x16a152<_0x13a566;_0x16a152++){var _0x1558b3=events[_0x16a152];var _0x3a1e54=createListener(_0xd574('0x7')+_0x1558b3,_0x56ecee);VoicePrefixEvents['on'](_0x1558b3,_0x3a1e54);}};
\ No newline at end of file
+var _0xf257=['removeListener','register','length','voicePrefix:','remove','update','emit'];(function(_0x365c07,_0x3ef179){var _0x348481=function(_0x2323ec){while(--_0x2323ec){_0x365c07['push'](_0x365c07['shift']());}};_0x348481(++_0x3ef179);}(_0xf257,0x82));var _0x7f25=function(_0xa530be,_0x50eae3){_0xa530be=_0xa530be-0x0;var _0x4ed49b=_0xf257[_0xa530be];return _0x4ed49b;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=['save',_0x7f25('0x0'),_0x7f25('0x1')];function createListener(_0x3f7a94,_0x22d4a9){return function(_0x5c712c){_0x22d4a9[_0x7f25('0x2')](_0x3f7a94,_0x5c712c);};}function removeListener(_0x2aca61,_0xd94d7a){return function(){VoicePrefixEvents[_0x7f25('0x3')](_0x2aca61,_0xd94d7a);};}exports[_0x7f25('0x4')]=function(_0x36b013){for(var _0x1998d7=0x0,_0x242a3e=events[_0x7f25('0x5')];_0x1998d7<_0x242a3e;_0x1998d7++){var _0x16e278=events[_0x1998d7];var _0x31a5d8=createListener(_0x7f25('0x6')+_0x16e278,_0x36b013);VoicePrefixEvents['on'](_0x16e278,_0x31a5d8);}};
\ No newline at end of file
index 5daa122..67fd2cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe425=['get','isAuthenticated','index','/:id','show','/:id/hoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addTeams','addAgents','addBlackLists','put','delete','destroy','removeTeams','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xe425,0x1b0));var _0x5e42=function(_0x4e9fed,_0x19f4f3){_0x4e9fed=_0x4e9fed-0x0;var _0x5c8cc0=_0xe425[_0x4e9fed];return _0x5c8cc0;};'use strict';var multer=require(_0x5e42('0x0'));var util=require(_0x5e42('0x1'));var path=require(_0x5e42('0x2'));var timeout=require(_0x5e42('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5e42('0x4'));var auth=require(_0x5e42('0x5'));var interaction=require(_0x5e42('0x6'));var config=require(_0x5e42('0x7'));var controller=require('./voiceQueue.controller');router[_0x5e42('0x8')]('/',auth[_0x5e42('0x9')](),controller[_0x5e42('0xa')]);router['get'](_0x5e42('0xb'),auth[_0x5e42('0x9')](),controller[_0x5e42('0xc')]);router[_0x5e42('0x8')](_0x5e42('0xd'),auth[_0x5e42('0x9')](),controller['getHoppers']);router['get'](_0x5e42('0xe'),auth[_0x5e42('0x9')](),controller['getHopperHistories']);router[_0x5e42('0x8')](_0x5e42('0xf'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x10')]);router['get'](_0x5e42('0x11'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x12')]);router[_0x5e42('0x8')](_0x5e42('0x13'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x14')]);router['get'](_0x5e42('0x15'),auth['isAuthenticated'](),controller[_0x5e42('0x16')]);router['get']('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0x5e42('0x8')](_0x5e42('0x17'),auth['isAuthenticated'](),controller['getLists']);router['get'](_0x5e42('0x18'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x19')]);router[_0x5e42('0x1a')]('/',auth[_0x5e42('0x9')](),controller[_0x5e42('0x1b')]);router[_0x5e42('0x1a')](_0x5e42('0x1c'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x1d')]);router['post'](_0x5e42('0x13'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x1e')]);router[_0x5e42('0x1a')](_0x5e42('0x15'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x1f')]);router[_0x5e42('0x1a')](_0x5e42('0x17'),auth[_0x5e42('0x9')](),controller['addLists']);router[_0x5e42('0x1a')](_0x5e42('0x18'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x20')]);router[_0x5e42('0x21')](_0x5e42('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x5e42('0x22')](_0x5e42('0xb'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x23')]);router[_0x5e42('0x22')](_0x5e42('0x13'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x24')]);router[_0x5e42('0x22')](_0x5e42('0x15'),auth[_0x5e42('0x9')](),controller['removeAgents']);router[_0x5e42('0x22')]('/:id/lists',auth[_0x5e42('0x9')](),controller[_0x5e42('0x25')]);router['delete'](_0x5e42('0x18'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x26')]);module[_0x5e42('0x27')]=router;
\ No newline at end of file
+var _0x97b6=['put','/:id','delete','destroy','removeTeams','removeAgents','removeBlackLists','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','show','/:id/hoppers','getHoppers','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','getBlackLists','post','create','/:id/clone','clone','addTeams','addAgents','addLists'];(function(_0x12efee,_0x223567){var _0x1ceca3=function(_0x264f07){while(--_0x264f07){_0x12efee['push'](_0x12efee['shift']());}};_0x1ceca3(++_0x223567);}(_0x97b6,0x150));var _0x697b=function(_0x1440d9,_0x4a2c7e){_0x1440d9=_0x1440d9-0x0;var _0x4a0cfb=_0x97b6[_0x1440d9];return _0x4a0cfb;};'use strict';var multer=require('multer');var util=require(_0x697b('0x0'));var path=require(_0x697b('0x1'));var timeout=require(_0x697b('0x2'));var express=require(_0x697b('0x3'));var router=express[_0x697b('0x4')]();var fs_extra=require(_0x697b('0x5'));var auth=require(_0x697b('0x6'));var interaction=require(_0x697b('0x7'));var config=require('../../config/environment');var controller=require('./voiceQueue.controller');router['get']('/',auth[_0x697b('0x8')](),controller[_0x697b('0x9')]);router[_0x697b('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x697b('0xb')]);router[_0x697b('0xa')](_0x697b('0xc'),auth[_0x697b('0x8')](),controller[_0x697b('0xd')]);router[_0x697b('0xa')]('/:id/hopper_histories',auth[_0x697b('0x8')](),controller['getHopperHistories']);router[_0x697b('0xa')](_0x697b('0xe'),auth[_0x697b('0x8')](),controller[_0x697b('0xf')]);router[_0x697b('0xa')](_0x697b('0x10'),auth['isAuthenticated'](),controller['getHopperBlacks']);router[_0x697b('0xa')](_0x697b('0x11'),auth[_0x697b('0x8')](),controller[_0x697b('0x12')]);router[_0x697b('0xa')](_0x697b('0x13'),auth['isAuthenticated'](),controller[_0x697b('0x14')]);router[_0x697b('0xa')](_0x697b('0x15'),auth[_0x697b('0x8')](),controller[_0x697b('0x16')]);router[_0x697b('0xa')](_0x697b('0x17'),auth[_0x697b('0x8')](),controller[_0x697b('0x18')]);router[_0x697b('0xa')]('/:id/blacklists',auth[_0x697b('0x8')](),controller[_0x697b('0x19')]);router[_0x697b('0x1a')]('/',auth[_0x697b('0x8')](),controller[_0x697b('0x1b')]);router[_0x697b('0x1a')](_0x697b('0x1c'),auth[_0x697b('0x8')](),controller[_0x697b('0x1d')]);router[_0x697b('0x1a')]('/:id/teams',auth[_0x697b('0x8')](),controller[_0x697b('0x1e')]);router[_0x697b('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x697b('0x1f')]);router[_0x697b('0x1a')](_0x697b('0x17'),auth[_0x697b('0x8')](),controller[_0x697b('0x20')]);router[_0x697b('0x1a')]('/:id/blacklists',auth[_0x697b('0x8')](),controller['addBlackLists']);router[_0x697b('0x21')](_0x697b('0x22'),auth[_0x697b('0x8')](),controller['update']);router[_0x697b('0x23')](_0x697b('0x22'),auth['isAuthenticated'](),controller[_0x697b('0x24')]);router[_0x697b('0x23')](_0x697b('0x11'),auth['isAuthenticated'](),controller[_0x697b('0x25')]);router[_0x697b('0x23')](_0x697b('0x13'),auth[_0x697b('0x8')](),controller[_0x697b('0x26')]);router['delete']('/:id/lists',auth[_0x697b('0x8')](),controller['removeLists']);router[_0x697b('0x23')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x697b('0x27')]);module[_0x697b('0x28')]=router;
\ No newline at end of file
index 3688b5f..f9564a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdba=['wrandom','rrordered','setDataValue','getDataValue','dialMethod','strategy','booked','roundrobin','predictive','INTEGER','yes','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','progressive','power','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Originate\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)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Initial\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','DESC','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','STRING','name','ENUM','inbound','ringall','fewestcalls','random','rrmemory'];(function(_0x55814d,_0x1d9476){var _0x4fa2e7=function(_0x28a977){while(--_0x28a977){_0x55814d['push'](_0x55814d['shift']());}};_0x4fa2e7(++_0x1d9476);}(_0xbdba,0x107));var _0xabdb=function(_0x254c64,_0x369948){_0x254c64=_0x254c64-0x0;var _0x179762=_0xbdba[_0x254c64];return _0x179762;};'use strict';var Sequelize=require(_0xabdb('0x0'));module['exports']={'name':{'type':Sequelize[_0xabdb('0x1')],'allowNull':![],'unique':_0xabdb('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x4'),'outbound'),'allowNull':![],'defaultValue':_0xabdb('0x4')},'musiconhold':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xabdb('0x3')]('rr',_0xabdb('0x5'),'leastrecent',_0xabdb('0x6'),_0xabdb('0x7'),_0xabdb('0x8'),'linear',_0xabdb('0x9'),_0xabdb('0xa')),'allowNull':![],'defaultValue':'ringall','set':function(_0x5b2d56){this[_0xabdb('0xb')]('strategy',_0x5b2d56?_0x5b2d56:_0xabdb('0x8'));},'get':function(){var _0x365c4d=this['getDataValue']('type');var _0x4e074a=this[_0xabdb('0xc')](_0xabdb('0xd'));var _0xfeb31e=this[_0xabdb('0xc')](_0xabdb('0xe'));if(_0x365c4d==='inbound'){return _0xfeb31e;}if(_0x4e074a===_0xabdb('0xf')&&_0xfeb31e===_0xabdb('0x8')||_0x4e074a===_0xabdb('0xf')&&_0xfeb31e===_0xabdb('0x10')){return _0xfeb31e;}if(_0x4e074a==='progressive'||_0x4e074a===_0xabdb('0x11')||_0x4e074a==='power'){return _0xfeb31e;}return null;}},'servicelevel':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xabdb('0x12')](0xb)},'timeout':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':_0xabdb('0x13')},'autopause':{'type':Sequelize['ENUM']('yes','no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xabdb('0x13'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xabdb('0x13'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xabdb('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xabdb('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0xabdb('0x13'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xabdb('0x3')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0xabdb('0x12')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xabdb('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xabdb('0x1')]},'queue_quantity1':{'type':Sequelize[_0xabdb('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xabdb('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1d064e){this[_0xabdb('0xb')](_0xabdb('0x14'),_0x1d064e?_0x1d064e[_0xabdb('0x15')](','):[]);},'get':function(){return this[_0xabdb('0xc')](_0xabdb('0x14'))?this[_0xabdb('0xc')](_0xabdb('0x14'))[_0xabdb('0x16')](','):[];}},'joinempty':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':_0xabdb('0x13'),'set':function(_0xfbdfd8){this[_0xabdb('0xb')](_0xabdb('0x17'),_0xfbdfd8?_0xfbdfd8[_0xabdb('0x15')](','):undefined);},'get':function(){return this[_0xabdb('0xc')](_0xabdb('0x17'))?this['getDataValue']('joinempty')[_0xabdb('0x16')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'no','set':function(_0x48e32f){this[_0xabdb('0xb')](_0xabdb('0x18'),_0x48e32f?_0x48e32f[_0xabdb('0x15')](','):undefined);},'get':function(){return this['getDataValue'](_0xabdb('0x18'))?this['getDataValue']('leavewhenempty')[_0xabdb('0x16')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xabdb('0x3')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xabdb('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xabdb('0x1')]},'description':{'type':Sequelize[_0xabdb('0x1')]},'acw':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':0x0,'set':function(_0x157ae7){this[_0xabdb('0xb')](_0xabdb('0x1a'),_0x157ae7);if(_0x157ae7){if(this[_0xabdb('0xc')](_0xabdb('0x1b'))<0x2){this[_0xabdb('0xb')](_0xabdb('0x1b'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':0x0,'comment':_0xabdb('0x1c')},'dialMethod':{'type':Sequelize[_0xabdb('0x3')]('preview',_0xabdb('0x1d'),_0xabdb('0x1e'),_0xabdb('0x11'),_0xabdb('0xf')),'defaultValue':'progressive','comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xabdb('0x12')](0x4)[_0xabdb('0x1f')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xabdb('0x20')},'dialPowerLevel':{'type':Sequelize[_0xabdb('0x21')](0x2)[_0xabdb('0x1f')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xabdb('0x22')},'dialPredictiveOptimization':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x23'),_0xabdb('0x24')),'defaultValue':_0xabdb('0x24'),'comment':_0xabdb('0x25')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xabdb('0x26')},'dialPredictiveInterval':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0xabdb('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x27')},'dialQueueOptions':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xabdb('0x1')],'comment':_0xabdb('0x28')},'dialCongestionMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x29')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x2a')},'dialBusyMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x2b')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x2c')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'comment':_0xabdb('0x2d')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x2e')},'dialGlobalMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':_0xabdb('0x2f')},'dialPrefix':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x30'),'never',_0xabdb('0x31')),'defaultValue':_0xabdb('0x30')},'dialAMDActive':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xabdb('0x32')},'dialAMDGreeting':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xabdb('0x12')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xabdb('0x33')},'dialAMDMinWordLength':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xabdb('0x34')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xabdb('0x35')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xabdb('0x36')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xabdb('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xabdb('0x1f')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xabdb('0x37')},'dialRecallMeTimeout':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xabdb('0x38')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xabdb('0x39')},'dialOrderByScheduledAt':{'type':Sequelize[_0xabdb('0x3')]('DESC','ASC'),'defaultValue':_0xabdb('0x3a')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0xabdb('0x28')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x3b')},'dialDropMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x3c')},'dialDropRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x3d')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x3e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x3f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x40')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xabdb('0x12')],'allowNull':!![],'comment':_0xabdb('0x41')},'mandatoryDisposition':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':![],'comment':_0xabdb('0x42'),'set':function(_0x2182f5){if(!_0x2182f5)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xabdb('0xb')](_0xabdb('0x43'),_0x2182f5);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x2b67=['strategy','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#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)','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\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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','inbound','default','fewestcalls','random','rrmemory','linear','wrandom','ringall','getDataValue','type'];(function(_0x2523f5,_0x41a159){var _0x656bbc=function(_0x30e26f){while(--_0x30e26f){_0x2523f5['push'](_0x2523f5['shift']());}};_0x656bbc(++_0x41a159);}(_0x2b67,0xf3));var _0x72b6=function(_0x35326c,_0x43ef2e){_0x35326c=_0x35326c-0x0;var _0x3c04ca=_0x2b67[_0x35326c];return _0x3c04ca;};'use strict';var Sequelize=require(_0x72b6('0x0'));module[_0x72b6('0x1')]={'name':{'type':Sequelize[_0x72b6('0x2')],'allowNull':![],'unique':_0x72b6('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x5'),'outbound'),'allowNull':![],'defaultValue':_0x72b6('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0x72b6('0x6')},'announce':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall','leastrecent',_0x72b6('0x7'),_0x72b6('0x8'),_0x72b6('0x9'),_0x72b6('0xa'),_0x72b6('0xb'),'rrordered'),'allowNull':![],'defaultValue':_0x72b6('0xc'),'set':function(_0xd05917){this['setDataValue']('strategy',_0xd05917?_0xd05917:_0x72b6('0x9'));},'get':function(){var _0x3ec108=this[_0x72b6('0xd')](_0x72b6('0xe'));var _0x3495fb=this['getDataValue']('dialMethod');var _0x51e040=this[_0x72b6('0xd')](_0x72b6('0xf'));if(_0x3ec108===_0x72b6('0x5')){return _0x51e040;}if(_0x3495fb===_0x72b6('0x10')&&_0x51e040===_0x72b6('0x9')||_0x3495fb===_0x72b6('0x10')&&_0x51e040===_0x72b6('0x11')){return _0x51e040;}if(_0x3495fb===_0x72b6('0x12')||_0x3495fb===_0x72b6('0x13')||_0x3495fb===_0x72b6('0x14')){return _0x51e040;}return null;}},'servicelevel':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x72b6('0x15')](0xb)},'timeout':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x72b6('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x72b6('0x16'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no',_0x72b6('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x72b6('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x72b6('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x72b6('0x16'),'no'),'defaultValue':_0x72b6('0x16')},'announce_holdtime':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no',_0x72b6('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0x72b6('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x72b6('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x72b6('0x2')]},'queue_youarenext':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x72b6('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x72b6('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0x72b6('0x2')]},'periodic_announce':{'type':Sequelize[_0x72b6('0x19')],'set':function(_0x44451b){this[_0x72b6('0x1a')](_0x72b6('0x1b'),_0x44451b?_0x44451b[_0x72b6('0x1c')](','):[]);},'get':function(){return this[_0x72b6('0xd')](_0x72b6('0x1b'))?this[_0x72b6('0xd')](_0x72b6('0x1b'))[_0x72b6('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':_0x72b6('0x16'),'set':function(_0x395631){this['setDataValue'](_0x72b6('0x1e'),_0x395631?_0x395631[_0x72b6('0x1c')](','):undefined);},'get':function(){return this[_0x72b6('0xd')](_0x72b6('0x1e'))?this['getDataValue'](_0x72b6('0x1e'))[_0x72b6('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x323823){this[_0x72b6('0x1a')](_0x72b6('0x1f'),_0x323823?_0x323823['join'](','):undefined);},'get':function(){return this[_0x72b6('0xd')](_0x72b6('0x1f'))?this[_0x72b6('0xd')](_0x72b6('0x1f'))[_0x72b6('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x72b6('0x2')]},'description':{'type':Sequelize[_0x72b6('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x19e427){this['setDataValue']('acw',_0x19e427);if(_0x19e427){if(this[_0x72b6('0xd')](_0x72b6('0x20'))<0x2){this[_0x72b6('0x1a')](_0x72b6('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x72b6('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x72b6('0x21')],'defaultValue':0x0,'comment':_0x72b6('0x22')},'dialMethod':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x23'),_0x72b6('0x12'),_0x72b6('0x14'),_0x72b6('0x13'),_0x72b6('0x10')),'defaultValue':'progressive','comment':_0x72b6('0x24')},'dialLimitChannel':{'type':Sequelize[_0x72b6('0x15')](0x4)[_0x72b6('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x72b6('0x26')},'dialLimitQueue':{'type':Sequelize[_0x72b6('0x15')](0x4)[_0x72b6('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x72b6('0x27')},'dialPowerLevel':{'type':Sequelize[_0x72b6('0x28')](0x2)[_0x72b6('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x72b6('0x29')},'dialPredictiveOptimization':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x2a'),_0x72b6('0x2b')),'defaultValue':'dropRate','comment':_0x72b6('0x2c')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x72b6('0x28')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x72b6('0x2d')},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0x72b6('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x72b6('0x2e')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x72b6('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x2f')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x72b6('0x30'),'comment':_0x72b6('0x31')},'dialQueueTimeout':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x72b6('0x2')],'comment':_0x72b6('0x32')},'dialCongestionMaxRetry':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x33')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x35')},'dialBusyRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x36')},'dialGlobalMaxRetry':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x72b6('0x37')},'dialTimezone':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':_0x72b6('0x38')},'dialPrefix':{'type':Sequelize[_0x72b6('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x72b6('0x4')](_0x72b6('0x39'),_0x72b6('0x3a'),'onlyIfOpen'),'defaultValue':_0x72b6('0x39')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x72b6('0x3b')},'dialAMDInitialSilence':{'type':Sequelize[_0x72b6('0x15')](0x9)[_0x72b6('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x72b6('0x3c')},'dialAMDGreeting':{'type':Sequelize[_0x72b6('0x15')](0x9)[_0x72b6('0x25')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x72b6('0x15')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x72b6('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x72b6('0x15')](0x9)[_0x72b6('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x72b6('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0x72b6('0x15')](0x9)[_0x72b6('0x25')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x72b6('0x15')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x72b6('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x72b6('0x15')](0x9)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x72b6('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x72b6('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x72b6('0x15')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x72b6('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x72b6('0x43')},'dialRecallInQueue':{'type':Sequelize[_0x72b6('0x21')],'defaultValue':0x0,'comment':_0x72b6('0x44')},'dialOrderByScheduledAt':{'type':Sequelize[_0x72b6('0x4')]('DESC',_0x72b6('0x45')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x72b6('0x2')],'comment':_0x72b6('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x72b6('0x21')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x72b6('0x21')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x72b6('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x72b6('0x46')},'dialCutDigit':{'type':Sequelize[_0x72b6('0x15')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x72b6('0x47')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x48')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x49')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x4a')},'dialDropRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x4b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x4c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x4d')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x4e')},'dialMachineRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x4f')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x72b6('0x15')](0x3)[_0x72b6('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x72b6('0x50')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x72b6('0x15')](0x5)[_0x72b6('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x72b6('0x51')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x72b6('0x15')],'allowNull':!![],'comment':_0x72b6('0x52')},'mandatoryDisposition':{'type':Sequelize[_0x72b6('0x21')],'defaultValue':![],'comment':_0x72b6('0x53'),'set':function(_0x354ece){if(!_0x354ece)this[_0x72b6('0x1a')](_0x72b6('0x54'),null);this[_0x72b6('0x1a')](_0x72b6('0x55'),_0x354ece);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x72b6('0x15')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x72b6('0x25')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index 9d37bea..da3a5c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['userVoiceQueue:remove','addAgents','spread','isEmpty','push','isNil','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','select','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','from','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','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/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','./voiceQueue.socket','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','get','QueueCampaigns','outbound','map','value','includes','name','UserProfileResource','error','stack','send','VoiceQueue','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','catch','params','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','role','inbound','getHoppers','VoiceQueueId','CmHopper','findAll','rows','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','interface','flatMap','penalty','sequelize','transaction','each','TeamVoiceQueue','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','format','SIP/%s','forEach','emit','removeTeams','ids','field','tq.TeamId','join','user_has_teams','VoiceQueueId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','removeAgents'];(function(_0x15a176,_0xfea70a){var _0x157570=function(_0x3f86dc){while(--_0x3f86dc){_0x15a176['push'](_0x15a176['shift']());}};_0x157570(++_0xfea70a);}(_0x3a6d,0x196));var _0xd3a6=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x3a6d[_0x2070da];return _0x4f9fe1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd3a6('0x0'));var jsonpatch=require(_0xd3a6('0x1'));var rp=require('request-promise');var moment=require(_0xd3a6('0x2'));var BPromise=require(_0xd3a6('0x3'));var Mustache=require(_0xd3a6('0x4'));var util=require(_0xd3a6('0x5'));var path=require(_0xd3a6('0x6'));var sox=require(_0xd3a6('0x7'));var csv=require(_0xd3a6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd3a6('0x9'));var _=require(_0xd3a6('0xa'));var squel=require(_0xd3a6('0xb'));var crypto=require(_0xd3a6('0xc'));var jsforce=require(_0xd3a6('0xd'));var deskjs=require(_0xd3a6('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd3a6('0xf'));var Papa=require(_0xd3a6('0x10'));var Redis=require(_0xd3a6('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd3a6('0x12'));var hardwareService=require(_0xd3a6('0x13'));var logger=require(_0xd3a6('0x14'))(_0xd3a6('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd3a6('0x16'));var db=require(_0xd3a6('0x17'))['db'];config[_0xd3a6('0x18')]=_[_0xd3a6('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd3a6('0x18')]));require(_0xd3a6('0x1a'))['register'](socket);function respondWithStatusCode(_0x3c2705,_0x2bad14){_0x2bad14=_0x2bad14||0xcc;return function(_0x17abed){if(_0x17abed){return _0x3c2705[_0xd3a6('0x1b')](_0x2bad14);}return _0x3c2705['status'](_0x2bad14)[_0xd3a6('0x1c')]();};}function respondWithResult(_0x5e032f,_0x26c866){_0x26c866=_0x26c866||0xc8;return function(_0x51ddd7){if(_0x51ddd7){return _0x5e032f[_0xd3a6('0x1d')](_0x26c866)[_0xd3a6('0x1e')](_0x51ddd7);}};}function respondWithFilteredResult(_0x169926,_0x36c979){return function(_0x556d42){if(_0x556d42){var _0x5cd436=typeof _0x36c979['offset']===_0xd3a6('0x1f')&&typeof _0x36c979[_0xd3a6('0x20')]==='undefined';var _0x3d03ca=_0x556d42[_0xd3a6('0x21')];var _0x19f96b=_0x5cd436?0x0:_0x36c979[_0xd3a6('0x22')];var _0x3f5d29=_0x5cd436?_0x556d42[_0xd3a6('0x21')]:_0x36c979[_0xd3a6('0x22')]+_0x36c979[_0xd3a6('0x20')];var _0x3b4490;if(_0x3f5d29>=_0x3d03ca){_0x3f5d29=_0x3d03ca;_0x3b4490=0xc8;}else{_0x3b4490=0xce;}_0x169926[_0xd3a6('0x1d')](_0x3b4490);return _0x169926[_0xd3a6('0x23')](_0xd3a6('0x24'),_0x19f96b+'-'+_0x3f5d29+'/'+_0x3d03ca)['json'](_0x556d42);}return null;};}function patchUpdates(_0x4c01e8){return function(_0x222c1f){try{jsonpatch['apply'](_0x222c1f,_0x4c01e8,!![]);}catch(_0x16e4af){return BPromise['reject'](_0x16e4af);}return _0x222c1f[_0xd3a6('0x25')]();};}function saveUpdates(_0x58dc08,_0x4fcde6){return function(_0x437494){if(_0x437494){return _0x437494[_0xd3a6('0x26')](_0x58dc08)[_0xd3a6('0x27')](function(_0x25235f){return _0x25235f;});}return null;};}function removeEntity(_0x13fbaf,_0xc3eb68){return function(_0x5cef15){if(_0x5cef15){return _0x5cef15[_0xd3a6('0x28')]()['then'](function(){var _0x30e067=_0x5cef15[_0xd3a6('0x29')]({'plain':!![]});var _0x525e65=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':_0xd3a6('0x2a'),'value':_0xd3a6('0x2b'),'ignore':![]}];var _0x26b285=_(_0x525e65)['filter']('ignore')[_0xd3a6('0x2c')](_0xd3a6('0x2d'))[_0xd3a6('0x2d')]();if(_[_0xd3a6('0x2e')](_0x26b285,_0x30e067['type'])){return;}var _0x27169a=_['find'](_0x525e65,[_0xd3a6('0x2d'),_0x30e067['type']])[_0xd3a6('0x2f')];return db[_0xd3a6('0x30')][_0xd3a6('0x28')]({'where':{'type':_0x27169a,'resourceId':_0x30e067['id']}})[_0xd3a6('0x27')](function(){return _0x5cef15;});})['then'](function(){_0x13fbaf[_0xd3a6('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x580e1e,_0x1ef4b8){return function(_0x579dc2){if(!_0x579dc2){_0x580e1e[_0xd3a6('0x1b')](0x194);}return _0x579dc2;};}function handleError(_0x586cfc,_0x585c66){_0x585c66=_0x585c66||0x1f4;return function(_0x26b9da){logger[_0xd3a6('0x31')](_0x26b9da[_0xd3a6('0x32')]);if(_0x26b9da['name']){delete _0x26b9da[_0xd3a6('0x2f')];}_0x586cfc[_0xd3a6('0x1d')](_0x585c66)[_0xd3a6('0x33')](_0x26b9da);};}exports['index']=function(_0xb31dd1,_0x60b4){var _0x5e5f26={},_0x54907a={},_0x468346={'count':0x0,'rows':[]};var _0x12764d=_[_0xd3a6('0x2c')](db[_0xd3a6('0x34')][_0xd3a6('0x35')],function(_0x54c0a2){return{'name':_0x54c0a2[_0xd3a6('0x36')],'type':_0x54c0a2[_0xd3a6('0x37')]['key']};});_0x54907a['model']=_[_0xd3a6('0x2c')](_0x12764d,_0xd3a6('0x2f'));_0x54907a[_0xd3a6('0x38')]=_['keys'](_0xb31dd1[_0xd3a6('0x38')]);_0x54907a[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x54907a['model'],_0x54907a[_0xd3a6('0x38')]);_0x5e5f26[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x54907a[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x5e5f26[_0xd3a6('0x3b')]=_0x5e5f26[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x5e5f26[_0xd3a6('0x3b')]:_0x54907a[_0xd3a6('0x3c')];if(!_0xb31dd1['query'][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x5e5f26[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0xb31dd1[_0xd3a6('0x38')]['limit']);_0x5e5f26[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x22')]);}_0x5e5f26[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x5e5f26[_0xd3a6('0x43')]=qs['filters'](_[_0xd3a6('0x44')](_0xb31dd1[_0xd3a6('0x38')],_0x54907a[_0xd3a6('0x39')]),_0x12764d);if(_0xb31dd1[_0xd3a6('0x38')]['filter']){_0x5e5f26[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x5e5f26['where'],{'$or':_[_0xd3a6('0x2c')](_0x12764d,function(_0x520c2c){if(_0x520c2c[_0xd3a6('0x37')]!=='VIRTUAL'){var _0x5cdd8a={};_0x5cdd8a[_0x520c2c[_0xd3a6('0x2f')]]={'$like':'%'+_0xb31dd1['query'][_0xd3a6('0x46')]+'%'};return _0x5cdd8a;}})});}_0x5e5f26=_[_0xd3a6('0x45')]({},_0x5e5f26,_0xb31dd1[_0xd3a6('0x47')]);var _0x5b3f91={'where':_0x5e5f26[_0xd3a6('0x43')]};return db[_0xd3a6('0x34')]['count'](_0x5b3f91)[_0xd3a6('0x27')](function(_0x36c9c0){_0x468346[_0xd3a6('0x21')]=_0x36c9c0;if(_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x48')]){_0x5e5f26['include']=[{'all':!![]}];}return db[_0xd3a6('0x34')]['findAll'](_0x5e5f26);})[_0xd3a6('0x27')](function(_0x1551f6){_0x468346['rows']=_0x1551f6;return _0x468346;})[_0xd3a6('0x27')](respondWithFilteredResult(_0x60b4,_0x5e5f26))[_0xd3a6('0x49')](handleError(_0x60b4,null));};exports['show']=function(_0x5322af,_0x493926){var _0x8ac1fa={'raw':![],'where':{'id':_0x5322af[_0xd3a6('0x4a')]['id']}},_0x85780b={};_0x85780b['model']=_[_0xd3a6('0x4b')](db[_0xd3a6('0x34')][_0xd3a6('0x35')]);_0x85780b[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x5322af[_0xd3a6('0x38')]);_0x85780b['filters']=_[_0xd3a6('0x3a')](_0x85780b['model'],_0x85780b[_0xd3a6('0x38')]);_0x8ac1fa[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x85780b[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x5322af[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x8ac1fa[_0xd3a6('0x3b')]=_0x8ac1fa[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x8ac1fa[_0xd3a6('0x3b')]:_0x85780b[_0xd3a6('0x3c')];if(_0x5322af[_0xd3a6('0x38')][_0xd3a6('0x48')]){_0x8ac1fa[_0xd3a6('0x4c')]=[{'all':!![]}];}_0x8ac1fa=_[_0xd3a6('0x45')]({},_0x8ac1fa,_0x5322af[_0xd3a6('0x47')]);return db[_0xd3a6('0x34')][_0xd3a6('0x4d')](_0x8ac1fa)[_0xd3a6('0x27')](handleEntityNotFound(_0x493926,null))[_0xd3a6('0x27')](respondWithResult(_0x493926,null))['catch'](handleError(_0x493926,null));};exports[_0xd3a6('0x4e')]=function(_0x21a6fa,_0x1c5b36){return db['VoiceQueue'][_0xd3a6('0x4e')](_0x21a6fa[_0xd3a6('0x4f')],{})[_0xd3a6('0x27')](function(_0x548140){var _0xfa00de=_0x21a6fa[_0xd3a6('0x50')][_0xd3a6('0x29')]({'plain':!![]});if(!_0xfa00de)throw new Error(_0xd3a6('0x51'));if(_0xfa00de['role']===_0xd3a6('0x50')){var _0x46e883=_0x548140[_0xd3a6('0x29')]({'plain':!![]});var _0x1f2aea=[{'name':'VoiceQueues','value':'inbound'},{'name':'QueueCampaigns','value':'outbound'}];var _0x222ad3=_[_0xd3a6('0x4d')](_0x1f2aea,[_0xd3a6('0x2d'),_0x46e883[_0xd3a6('0x37')]])[_0xd3a6('0x2f')];return db[_0xd3a6('0x52')]['find']({'where':{'name':_0x222ad3,'userProfileId':_0xfa00de[_0xd3a6('0x53')]},'raw':!![]})[_0xd3a6('0x27')](function(_0x174e51){if(_0x174e51&&_0x174e51[_0xd3a6('0x54')]===0x0){return db[_0xd3a6('0x30')][_0xd3a6('0x4e')]({'name':_0x46e883[_0xd3a6('0x2f')],'resourceId':_0x46e883['id'],'type':_0x174e51[_0xd3a6('0x2f')],'sectionId':_0x174e51['id']},{})[_0xd3a6('0x27')](function(){return _0x548140;});}else{return _0x548140;}})[_0xd3a6('0x49')](function(_0x37aace){logger[_0xd3a6('0x31')](_0xd3a6('0x55'),_0x37aace);throw _0x37aace;});}return _0x548140;})['then'](respondWithResult(_0x1c5b36,0xc9))[_0xd3a6('0x49')](handleError(_0x1c5b36,null));};exports[_0xd3a6('0x56')]=function(_0x2c01f2,_0x3d5841){var _0x1249c8={'where':{'id':_0x2c01f2['params']['id']}},_0x3bd143={};_0x3bd143['model']=_[_0xd3a6('0x4b')](db['VoiceQueue'][_0xd3a6('0x35')]);_0x1249c8['attributes']=_[_0xd3a6('0x3a')](_0x3bd143[_0xd3a6('0x3c')],qs['fields'](_0x2c01f2[_0xd3a6('0x38')]['fields']));_0x1249c8[_0xd3a6('0x3b')]=_0x1249c8[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x1249c8[_0xd3a6('0x3b')]:_0x3bd143[_0xd3a6('0x3c')];if(_0x2c01f2['query'][_0xd3a6('0x48')]){_0x1249c8[_0xd3a6('0x4c')]=[{'all':!![]}];}_0x1249c8=_[_0xd3a6('0x45')]({},_0x1249c8,_0x2c01f2[_0xd3a6('0x47')]);return db['VoiceQueue']['find'](_0x1249c8)[_0xd3a6('0x27')](handleEntityNotFound(_0x3d5841,null))[_0xd3a6('0x27')](function(_0x10324c){if(_0x10324c){var _0x1cb4d2=_0x10324c[_0xd3a6('0x29')]({'plain':!![]});_0x1cb4d2=qs[_0xd3a6('0x57')](_0x1cb4d2,['id','createdAt',_0xd3a6('0x58')]);_0x2c01f2['body']=_[_0xd3a6('0x57')](_0x2c01f2[_0xd3a6('0x4f')],['id',_0xd3a6('0x59'),'updatedAt']);return db[_0xd3a6('0x34')][_0xd3a6('0x4e')](_[_0xd3a6('0x45')](_0x1cb4d2,_0x2c01f2[_0xd3a6('0x4f')]),{'include':_0x2c01f2[_0xd3a6('0x38')][_0xd3a6('0x48')]?[{'all':!![]}]:undefined})[_0xd3a6('0x27')](function(_0x1a6d6e){var _0x26efc8=_0x2c01f2['user'][_0xd3a6('0x29')]({'plain':!![]});if(!_0x26efc8)throw new Error(_0xd3a6('0x51'));if(_0x26efc8[_0xd3a6('0x5a')]==='user'){var _0x5b232a=_0x1a6d6e[_0xd3a6('0x29')]({'plain':!![]});var _0x4ea880=[{'name':'VoiceQueues','value':_0xd3a6('0x5b')},{'name':'QueueCampaigns','value':'outbound'}];var _0x56fa6a=_[_0xd3a6('0x4d')](_0x4ea880,[_0xd3a6('0x2d'),_0x5b232a['type']])[_0xd3a6('0x2f')];return db['UserProfileSection']['find']({'where':{'name':_0x56fa6a,'userProfileId':_0x26efc8[_0xd3a6('0x53')]},'raw':!![]})['then'](function(_0x22c381){if(_0x22c381&&_0x22c381[_0xd3a6('0x54')]===0x0){return db[_0xd3a6('0x30')][_0xd3a6('0x4e')]({'name':_0x5b232a['name'],'resourceId':_0x5b232a['id'],'type':_0x22c381['name'],'sectionId':_0x22c381['id']},{})[_0xd3a6('0x27')](function(){return _0x1a6d6e;});}else{return _0x1a6d6e;}})[_0xd3a6('0x49')](function(_0xb712f4){logger[_0xd3a6('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb712f4);throw _0xb712f4;});}return _0x1a6d6e;});}})[_0xd3a6('0x27')](respondWithResult(_0x3d5841,0xc9))[_0xd3a6('0x49')](handleError(_0x3d5841,null));};exports[_0xd3a6('0x26')]=function(_0x32fc1d,_0x4e2298){if(_0x32fc1d[_0xd3a6('0x4f')]['id']){delete _0x32fc1d['body']['id'];}return db['VoiceQueue'][_0xd3a6('0x4d')]({'where':{'id':_0x32fc1d[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x4e2298,null))[_0xd3a6('0x27')](saveUpdates(_0x32fc1d['body'],null))[_0xd3a6('0x27')](respondWithResult(_0x4e2298,null))[_0xd3a6('0x49')](handleError(_0x4e2298,null));};exports[_0xd3a6('0x28')]=function(_0x3dfc48,_0x254983){return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x3dfc48[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x254983,null))['then'](removeEntity(_0x254983,null))[_0xd3a6('0x49')](handleError(_0x254983,null));};exports[_0xd3a6('0x5c')]=function(_0x14f2ae,_0xe5f93f,_0x4fe2c4){var _0x1b7c6a={'raw':![],'where':{}};var _0x329bdd={};var _0x2d11b9={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')]['findOne']({'where':{'id':_0x14f2ae[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0xe5f93f,null))[_0xd3a6('0x27')](function(_0x506f6b){if(_0x506f6b){_0x329bdd['model']=_[_0xd3a6('0x4b')](db['CmHopper'][_0xd3a6('0x35')]);_0x329bdd[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x14f2ae[_0xd3a6('0x38')]);_0x329bdd[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x329bdd[_0xd3a6('0x3c')],_0x329bdd['query']);_0x1b7c6a[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x329bdd[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x1b7c6a[_0xd3a6('0x3b')]=_0x1b7c6a[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x1b7c6a[_0xd3a6('0x3b')]:_0x329bdd[_0xd3a6('0x3c')];if(!_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x1b7c6a['limit']=qs[_0xd3a6('0x20')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x1b7c6a['offset']=qs[_0xd3a6('0x22')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x22')]);}_0x1b7c6a[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x1b7c6a[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x14f2ae[_0xd3a6('0x38')],_0x329bdd[_0xd3a6('0x39')]));_0x1b7c6a[_0xd3a6('0x43')][_0xd3a6('0x5d')]=_0x506f6b['id'];if(_0x14f2ae['query'][_0xd3a6('0x46')]){_0x1b7c6a['where']=_[_0xd3a6('0x45')](_0x1b7c6a[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x1b7c6a[_0xd3a6('0x3b')],function(_0x41940f){var _0x4797c1={};_0x4797c1[_0x41940f]={'$like':'%'+_0x14f2ae[_0xd3a6('0x38')]['filter']+'%'};return _0x4797c1;})});}_0x1b7c6a=_[_0xd3a6('0x45')]({},_0x1b7c6a,_0x14f2ae['options']);return db[_0xd3a6('0x5e')][_0xd3a6('0x21')]({'where':_0x1b7c6a[_0xd3a6('0x43')]})[_0xd3a6('0x27')](function(_0x36a619){_0x2d11b9[_0xd3a6('0x21')]=_0x36a619;if(_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x48')]){_0x1b7c6a[_0xd3a6('0x4c')]=[{'all':!![]}];}return db['CmHopper'][_0xd3a6('0x5f')](_0x1b7c6a);})[_0xd3a6('0x27')](function(_0x3e27f6){_0x2d11b9[_0xd3a6('0x60')]=_0x3e27f6;return _0x2d11b9;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0xe5f93f,_0x1b7c6a))[_0xd3a6('0x49')](handleError(_0xe5f93f,null));};exports[_0xd3a6('0x61')]=function(_0x2fba64,_0x140903,_0x6d84c2){var _0x56d28b={'raw':!![],'where':{}};var _0x3b00e4={};var _0x3d487a={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x2fba64['params']['id']}})['then'](handleEntityNotFound(_0x140903,null))[_0xd3a6('0x27')](function(_0x34a8b8){if(_0x34a8b8){_0x3b00e4[_0xd3a6('0x3c')]=_['keys'](db[_0xd3a6('0x63')]['rawAttributes']);_0x3b00e4[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x2fba64[_0xd3a6('0x38')]);_0x3b00e4[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x3b00e4['model'],_0x3b00e4['query']);_0x56d28b[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x3b00e4[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x56d28b[_0xd3a6('0x3b')]=_0x56d28b['attributes']['length']?_0x56d28b[_0xd3a6('0x3b')]:_0x3b00e4[_0xd3a6('0x3c')];if(!_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x56d28b[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x2fba64[_0xd3a6('0x38')]['limit']);_0x56d28b[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0x2fba64['query'][_0xd3a6('0x22')]);}_0x56d28b[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x56d28b[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x2fba64[_0xd3a6('0x38')],_0x3b00e4[_0xd3a6('0x39')]));_0x56d28b[_0xd3a6('0x43')][_0xd3a6('0x5d')]=_0x34a8b8['id'];if(_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x56d28b['where']=_['merge'](_0x56d28b['where'],{'$or':_[_0xd3a6('0x2c')](_0x56d28b[_0xd3a6('0x3b')],function(_0x5ec5fb){var _0x5c1f2f={};_0x5c1f2f[_0x5ec5fb]={'$like':'%'+_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x5c1f2f;})});}_0x56d28b=_[_0xd3a6('0x45')]({},_0x56d28b,_0x2fba64['options']);return db[_0xd3a6('0x63')]['count']({'where':_0x56d28b[_0xd3a6('0x43')]})['then'](function(_0x3b71d4){_0x3d487a[_0xd3a6('0x21')]=_0x3b71d4;if(_0x2fba64[_0xd3a6('0x38')]['includeAll']){_0x56d28b['include']=[{'all':!![]}];}return db[_0xd3a6('0x63')]['findAll'](_0x56d28b);})[_0xd3a6('0x27')](function(_0x7a4606){_0x3d487a[_0xd3a6('0x60')]=_0x7a4606;return _0x3d487a;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0x140903,_0x56d28b))[_0xd3a6('0x49')](handleError(_0x140903,null));};exports[_0xd3a6('0x64')]=function(_0x33d25f,_0x41f4fa,_0xdfbbcd){var _0x405c4c={'raw':!![],'where':{}};var _0x19770c={};var _0x3f584c={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x33d25f[_0xd3a6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x41f4fa,null))[_0xd3a6('0x27')](function(_0xddda06){if(_0xddda06){_0x19770c[_0xd3a6('0x3c')]=_['keys'](db[_0xd3a6('0x65')][_0xd3a6('0x35')]);_0x19770c['query']=_['keys'](_0x33d25f[_0xd3a6('0x38')]);_0x19770c[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x19770c[_0xd3a6('0x3c')],_0x19770c['query']);_0x405c4c[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x19770c['model'],qs[_0xd3a6('0x3d')](_0x33d25f['query'][_0xd3a6('0x3d')]));_0x405c4c['attributes']=_0x405c4c[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x405c4c[_0xd3a6('0x3b')]:_0x19770c[_0xd3a6('0x3c')];if(!_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x405c4c[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x405c4c['offset']=qs[_0xd3a6('0x22')](_0x33d25f[_0xd3a6('0x38')]['offset']);}_0x405c4c['order']=qs[_0xd3a6('0x42')](_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x405c4c['where']=qs[_0xd3a6('0x39')](_['pick'](_0x33d25f['query'],_0x19770c[_0xd3a6('0x39')]));_0x405c4c[_0xd3a6('0x43')][_0xd3a6('0x5d')]=_0xddda06['id'];if(_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x405c4c[_0xd3a6('0x43')]=_['merge'](_0x405c4c[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x405c4c['attributes'],function(_0x25668e){var _0x581cd6={};_0x581cd6[_0x25668e]={'$like':'%'+_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x581cd6;})});}_0x405c4c=_[_0xd3a6('0x45')]({},_0x405c4c,_0x33d25f[_0xd3a6('0x47')]);return db['CmHopperFinal']['count']({'where':_0x405c4c[_0xd3a6('0x43')]})[_0xd3a6('0x27')](function(_0x42e730){_0x3f584c['count']=_0x42e730;if(_0x33d25f['query'][_0xd3a6('0x48')]){_0x405c4c[_0xd3a6('0x4c')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd3a6('0x5f')](_0x405c4c);})[_0xd3a6('0x27')](function(_0x1fe123){_0x3f584c[_0xd3a6('0x60')]=_0x1fe123;return _0x3f584c;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0x41f4fa,_0x405c4c))[_0xd3a6('0x49')](handleError(_0x41f4fa,null));};exports[_0xd3a6('0x66')]=function(_0x5ceca0,_0x3a3f98,_0x35397e){var _0x2ef667={'raw':!![],'where':{}};var _0x10ea20={};var _0x2460f0={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x5ceca0['params']['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x3a3f98,null))[_0xd3a6('0x27')](function(_0x56d043){if(_0x56d043){_0x10ea20[_0xd3a6('0x3c')]=_['keys'](db[_0xd3a6('0x67')][_0xd3a6('0x35')]);_0x10ea20[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x5ceca0[_0xd3a6('0x38')]);_0x10ea20[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x10ea20['model'],_0x10ea20[_0xd3a6('0x38')]);_0x2ef667[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x10ea20['model'],qs[_0xd3a6('0x3d')](_0x5ceca0[_0xd3a6('0x38')]['fields']));_0x2ef667['attributes']=_0x2ef667[_0xd3a6('0x3b')]['length']?_0x2ef667[_0xd3a6('0x3b')]:_0x10ea20['model'];if(!_0x5ceca0[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x2ef667[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x5ceca0[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x2ef667[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0x5ceca0[_0xd3a6('0x38')]['offset']);}_0x2ef667[_0xd3a6('0x41')]=qs['sort'](_0x5ceca0[_0xd3a6('0x38')]['sort']);_0x2ef667[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x5ceca0[_0xd3a6('0x38')],_0x10ea20[_0xd3a6('0x39')]));_0x2ef667['where'][_0xd3a6('0x5d')]=_0x56d043['id'];if(_0x5ceca0[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x2ef667[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x2ef667[_0xd3a6('0x43')],{'$or':_['map'](_0x2ef667[_0xd3a6('0x3b')],function(_0x9f1b1e){var _0x5909fa={};_0x5909fa[_0x9f1b1e]={'$like':'%'+_0x5ceca0['query'][_0xd3a6('0x46')]+'%'};return _0x5909fa;})});}_0x2ef667=_['merge']({},_0x2ef667,_0x5ceca0['options']);return db[_0xd3a6('0x67')][_0xd3a6('0x21')]({'where':_0x2ef667['where']})['then'](function(_0x1b3a0c){_0x2460f0[_0xd3a6('0x21')]=_0x1b3a0c;if(_0x5ceca0[_0xd3a6('0x38')]['includeAll']){_0x2ef667[_0xd3a6('0x4c')]=[{'all':!![]}];}return db[_0xd3a6('0x67')][_0xd3a6('0x5f')](_0x2ef667);})['then'](function(_0x5712f2){_0x2460f0[_0xd3a6('0x60')]=_0x5712f2;return _0x2460f0;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0x3a3f98,_0x2ef667))[_0xd3a6('0x49')](handleError(_0x3a3f98,null));};exports[_0xd3a6('0x68')]=function(_0x42e574,_0x1c2bae,_0x26689f){var _0x1564e3={};var _0x2af5a4={};var _0x47f08c;var _0x35cb0a;return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x42e574[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x1c2bae,null))['then'](function(_0x5b889c){if(_0x5b889c){_0x47f08c=_0x5b889c;_0x2af5a4[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db[_0xd3a6('0x69')][_0xd3a6('0x35')]);_0x2af5a4[_0xd3a6('0x38')]=_['keys'](_0x42e574[_0xd3a6('0x38')]);_0x2af5a4['filters']=_[_0xd3a6('0x3a')](_0x2af5a4[_0xd3a6('0x3c')],_0x2af5a4['query']);_0x1564e3['attributes']=_['intersection'](_0x2af5a4[_0xd3a6('0x3c')],qs['fields'](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x1564e3[_0xd3a6('0x3b')]=_0x1564e3['attributes'][_0xd3a6('0x3e')]?_0x1564e3[_0xd3a6('0x3b')]:_0x2af5a4[_0xd3a6('0x3c')];_0x1564e3[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x1564e3[_0xd3a6('0x43')]=qs['filters'](_[_0xd3a6('0x44')](_0x42e574['query'],_0x2af5a4[_0xd3a6('0x39')]));if(_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x1564e3[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x1564e3[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x1564e3['attributes'],function(_0x536b37){var _0x30a3a7={};_0x30a3a7[_0x536b37]={'$like':'%'+_0x42e574['query'][_0xd3a6('0x46')]+'%'};return _0x30a3a7;})});}_0x1564e3=_[_0xd3a6('0x45')]({},_0x1564e3,_0x42e574[_0xd3a6('0x47')]);return _0x47f08c[_0xd3a6('0x68')](_0x1564e3);}})[_0xd3a6('0x27')](function(_0x506c28){if(_0x506c28){_0x35cb0a=_0x506c28[_0xd3a6('0x3e')];if(!_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x1564e3[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x1564e3['offset']=qs[_0xd3a6('0x22')](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x22')]);}return _0x47f08c['getTeams'](_0x1564e3);}})['then'](function(_0x3a776f){if(_0x3a776f){return _0x3a776f?{'count':_0x35cb0a,'rows':_0x3a776f}:null;}})['then'](respondWithResult(_0x1c2bae,null))[_0xd3a6('0x49')](handleError(_0x1c2bae,null));};exports[_0xd3a6('0x6a')]=function(_0x3f3112,_0x79c0f5,_0x2c1268){var _0x190f0b=_0x3f3112[_0xd3a6('0x4f')][_0xd3a6('0x6b')];var _0x323f75=_[_0xd3a6('0x2c')](_0x190f0b,'id');return db[_0xd3a6('0x69')][_0xd3a6('0x5f')]({'where':{'id':_0x323f75},'attributes':['id'],'include':[{'model':db[_0xd3a6('0x6c')],'as':_0xd3a6('0x6d'),'attributes':['id','name',_0xd3a6('0x6e'),_0xd3a6('0x6f'),_0xd3a6('0x70')],'raw':!![]}]})[_0xd3a6('0x27')](function(_0x5782d4){if(_0x5782d4){var _0x1b8959=_[_0xd3a6('0x71')](_0x5782d4,function(_0x5d4833){var _0xbf0f87=_0x5d4833['get']({'plain':!![]});_0xbf0f87[_0xd3a6('0x6d')]['forEach'](function(_0x161402){_0x161402[_0xd3a6('0x72')]=_[_0xd3a6('0x4d')](_0x190f0b,{'id':_0xbf0f87['id']})[_0xd3a6('0x72')];});return _0xbf0f87[_0xd3a6('0x6d')];});return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x3f3112[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(_0x445bd7){return db[_0xd3a6('0x73')][_0xd3a6('0x74')](function(_0x3d1a4d){return _0x445bd7['addTeams'](_0x323f75,{'transaction':_0x3d1a4d})[_0xd3a6('0x27')](function(){return BPromise[_0xd3a6('0x75')](_0x190f0b,function(_0x2e791b){return db[_0xd3a6('0x76')]['upsert']({'TeamId':_0x2e791b['id'],'VoiceQueueId':_0x3f3112[_0xd3a6('0x4a')]['id'],'penalty':_0x2e791b[_0xd3a6('0x72')]},{'transaction':_0x3d1a4d});});})[_0xd3a6('0x27')](function(){return BPromise[_0xd3a6('0x75')](_0x1b8959,function(_0x4e493f){return db[_0xd3a6('0x77')][_0xd3a6('0x78')]({'where':{'UserId':_0x4e493f['id'],'VoiceQueueId':_0x3f3112[_0xd3a6('0x4a')]['id']},'defaults':{'penalty':_0x4e493f['penalty']},'transaction':_0x3d1a4d});});})[_0xd3a6('0x27')](function(){return BPromise[_0xd3a6('0x75')](_['filter'](_0x1b8959,{'online':!![]}),function(_0x6bedb2){return db[_0xd3a6('0x79')][_0xd3a6('0x7a')]({'membername':_0x6bedb2['name'],'UserId':_0x6bedb2['id'],'queue_name':_0x445bd7['name'],'VoiceQueueId':_0x445bd7['id'],'interface':_['isNil'](_0x6bedb2[_0xd3a6('0x70')])?util[_0xd3a6('0x7b')](_0xd3a6('0x7c'),_0x6bedb2[_0xd3a6('0x2f')]):_0x6bedb2[_0xd3a6('0x70')],'paused':_0x6bedb2[_0xd3a6('0x6f')]||![],'penalty':_0x6bedb2['penalty']},{'transaction':_0x3d1a4d});});})[_0xd3a6('0x27')](function(){_0x1b8959[_0xd3a6('0x7d')](function(_0x3cdf6c){socket[_0xd3a6('0x7e')]('userVoiceQueue:save',{'UserId':_0x3cdf6c['id'],'VoiceQueueId':_0x445bd7['id']});});});});});}})['then'](respondWithStatusCode(_0x79c0f5,null))['catch'](handleError(_0x79c0f5,null));};exports[_0xd3a6('0x7f')]=function(_0x3b064e,_0x44fbeb,_0x216a08){return db[_0xd3a6('0x69')][_0xd3a6('0x5f')]({'where':{'id':_0x3b064e[_0xd3a6('0x38')][_0xd3a6('0x80')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd3a6('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xd3a6('0x27')](handleEntityNotFound(_0x44fbeb,null))[_0xd3a6('0x27')](function(_0x4111a8){var _0x11c124=_['map'](_0x4111a8,'id');var _0x1096cf=[];var _0x3312d8=[];var _0x49661c=squel['select']();_0x49661c[_0xd3a6('0x81')](_0xd3a6('0x82'))['from']('team_has_voice_queues','tq')[_0xd3a6('0x83')](_0xd3a6('0x84'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xd3a6('0x43')](_0xd3a6('0x85'),_0x3b064e['params']['id']);for(var _0x32f181=0x0;_0x32f181<_0x4111a8[_0xd3a6('0x3e')];_0x32f181+=0x1){let _0x1159d8=_0x4111a8[_0x32f181];for(var _0x300524=0x0;_0x300524<_0x1159d8['Agents'][_0xd3a6('0x3e')];_0x300524+=0x1){let _0x447e7=_0x1159d8['Agents'][_0x300524];var _0x504a35=_0x49661c[_0xd3a6('0x56')]();_0x504a35[_0xd3a6('0x43')]('ut.UserId\x20=\x20?',_0x447e7['id']);_0x3312d8['push'](db[_0xd3a6('0x73')][_0xd3a6('0x38')](_0x504a35[_0xd3a6('0x86')](),{'type':db[_0xd3a6('0x73')][_0xd3a6('0x87')][_0xd3a6('0x88')]})[_0xd3a6('0x27')](function(_0x4e1590){if(_0x4e1590[_0xd3a6('0x3e')]===0x1){return _0x447e7['id'];}else{var _0x32f85a=_[_0xd3a6('0x89')](_[_0xd3a6('0x2c')](_0x4e1590,_0xd3a6('0x8a')),function(_0x3a6ff8){return _[_0xd3a6('0x2e')](_0x11c124,_0x3a6ff8);});if(_0x32f85a){return _0x447e7['id'];}}}));}}return BPromise[_0xd3a6('0x8b')](_0x3312d8)[_0xd3a6('0x27')](function(_0x48631a){_0x1096cf=_(_0x1096cf)[_0xd3a6('0x8c')](_0x48631a)[_0xd3a6('0x8d')]()[_0xd3a6('0x2d')]();return db['VoiceQueue'][_0xd3a6('0x4d')]({'where':{'id':_0x3b064e[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(_0xdd59d3){return db[_0xd3a6('0x73')][_0xd3a6('0x74')](function(_0x324dd3){return _0xdd59d3[_0xd3a6('0x7f')](_0x3b064e['query'][_0xd3a6('0x80')],{'transaction':_0x324dd3})[_0xd3a6('0x27')](function(){if(!_['isEmpty'](_0x1096cf)){return _0xdd59d3[_0xd3a6('0x8e')](_0x1096cf,{'transaction':_0x324dd3})['then'](function(){return db[_0xd3a6('0x79')][_0xd3a6('0x28')]({'where':{'VoiceQueueId':_0x3b064e[_0xd3a6('0x4a')]['id'],'UserId':_0x1096cf},'transaction':_0x324dd3});});}})[_0xd3a6('0x27')](function(){_0x1096cf[_0xd3a6('0x7d')](function(_0x241ee4){socket[_0xd3a6('0x7e')](_0xd3a6('0x8f'),{'UserId':_0x241ee4,'VoiceQueueId':_0xdd59d3['id']});});});});});});})['then'](respondWithStatusCode(_0x44fbeb,null))['catch'](handleError(_0x44fbeb,null));};exports[_0xd3a6('0x90')]=function(_0x4098d2,_0x3576b3,_0x3cd651){var _0x832584,_0x12db74;return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x4098d2['params']['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x3576b3,null))['then'](function(_0x4efde4){if(_0x4efde4){_0x12db74=_0x4efde4;return _0x4efde4[_0xd3a6('0x90')](_0x4098d2[_0xd3a6('0x4f')][_0xd3a6('0x80')],_[_0xd3a6('0x57')](_0x4098d2['body'],['ids','id'])||{})[_0xd3a6('0x91')](function(_0x111419){for(var _0x5be0ae=0x0;_0x5be0ae<_0x4098d2['body'][_0xd3a6('0x80')][_0xd3a6('0x3e')];_0x5be0ae+=0x1){socket['emit']('userVoiceQueue:save',{'UserId':Number(_0x4098d2[_0xd3a6('0x4f')][_0xd3a6('0x80')][_0x5be0ae]),'VoiceQueueId':Number(_0x4098d2[_0xd3a6('0x4a')]['id'])});}return _0x111419;});}})['then'](function(_0x5c2374){_0x832584=_0x5c2374||[];if(_0x12db74){return db[_0xd3a6('0x6c')][_0xd3a6('0x5f')]({'where':{'id':_0x4098d2['body']['ids']},'attributes':['id','name','online',_0xd3a6('0x6f'),_0xd3a6('0x70')],'raw':!![]});}})[_0xd3a6('0x27')](function(_0x48aca2){if(!_[_0xd3a6('0x92')](_0x48aca2)){var _0x553851=[];for(var _0xf18901=0x0;_0xf18901<_0x48aca2[_0xd3a6('0x3e')];_0xf18901++){if(_0x48aca2[_0xf18901][_0xd3a6('0x6e')]){_0x553851[_0xd3a6('0x93')](db[_0xd3a6('0x79')][_0xd3a6('0x7a')]({'membername':_0x48aca2[_0xf18901]['name'],'UserId':_0x48aca2[_0xf18901]['id'],'queue_name':_0x12db74[_0xd3a6('0x2f')],'VoiceQueueId':_0x12db74['id'],'interface':_[_0xd3a6('0x94')](_0x48aca2[_0xf18901][_0xd3a6('0x70')])?util[_0xd3a6('0x7b')](_0xd3a6('0x7c'),_0x48aca2[_0xf18901][_0xd3a6('0x2f')]):_0x48aca2[_0xf18901][_0xd3a6('0x70')],'paused':_0x48aca2[_0xf18901][_0xd3a6('0x6f')]||![],'penalty':_0x4098d2['body'][_0xd3a6('0x72')]||0x0}));}}return BPromise[_0xd3a6('0x8b')](_0x553851);}})[_0xd3a6('0x27')](function(){return _0x832584;})[_0xd3a6('0x27')](respondWithResult(_0x3576b3,null))[_0xd3a6('0x49')](handleError(_0x3576b3,null));};exports[_0xd3a6('0x8e')]=function(_0x385b7b,_0x5230b0,_0x5b1560){return db['VoiceQueue'][_0xd3a6('0x4d')]({'where':{'id':_0x385b7b[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x5230b0,null))[_0xd3a6('0x27')](function(_0x9fbdd2){if(_0x9fbdd2){return _0x9fbdd2[_0xd3a6('0x8e')](_0x385b7b['query']['ids'])[_0xd3a6('0x27')](function(){if(_[_0xd3a6('0x95')](_0x385b7b[_0xd3a6('0x38')]['ids'])){for(var _0x1a828e=0x0;_0x1a828e<_0x385b7b['query']['ids'][_0xd3a6('0x3e')];_0x1a828e+=0x1){socket[_0xd3a6('0x7e')](_0xd3a6('0x8f'),{'UserId':Number(_0x385b7b['query'][_0xd3a6('0x80')][_0x1a828e]),'VoiceQueueId':Number(_0x385b7b[_0xd3a6('0x4a')]['id'])});}}else{socket['emit'](_0xd3a6('0x8f'),{'UserId':Number(_0x385b7b['query'][_0xd3a6('0x80')]),'VoiceQueueId':Number(_0x385b7b[_0xd3a6('0x4a')]['id'])});}});}})[_0xd3a6('0x27')](function(_0x5538c5){return db[_0xd3a6('0x79')]['destroy']({'where':{'VoiceQueueId':_0x385b7b[_0xd3a6('0x4a')]['id'],'UserId':_0x385b7b['query'][_0xd3a6('0x80')]}})[_0xd3a6('0x27')](function(){return _0x5538c5;});})[_0xd3a6('0x27')](respondWithStatusCode(_0x5230b0,null))[_0xd3a6('0x49')](handleError(_0x5230b0,null));};exports['getAgents']=function(_0xa58086,_0x1cf352,_0x47cad6){var _0x16fa20={};var _0x43b108={};var _0x174d84;var _0xc387a4;return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0xa58086[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x1cf352,null))[_0xd3a6('0x27')](function(_0x66788d){if(_0x66788d){_0x174d84=_0x66788d;_0x43b108[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db['User'][_0xd3a6('0x35')]);_0x43b108['query']=_[_0xd3a6('0x4b')](_0xa58086[_0xd3a6('0x38')]);_0x43b108[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x43b108['model'],_0x43b108[_0xd3a6('0x38')]);_0x16fa20[_0xd3a6('0x3b')]=_['intersection'](_0x43b108[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0xa58086['query'][_0xd3a6('0x3d')]));_0x16fa20['attributes']=_0x16fa20['attributes'][_0xd3a6('0x3e')]?_0x16fa20['attributes']:_0x43b108[_0xd3a6('0x3c')];_0x16fa20[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x16fa20[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0xa58086[_0xd3a6('0x38')],_0x43b108[_0xd3a6('0x39')]));if(_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x16fa20[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x16fa20['where'],{'$or':_[_0xd3a6('0x2c')](_0x16fa20[_0xd3a6('0x3b')],function(_0x12b5d1){var _0x38c4f7={};_0x38c4f7[_0x12b5d1]={'$like':'%'+_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x38c4f7;})});}_0x16fa20=_[_0xd3a6('0x45')]({},_0x16fa20,_0xa58086[_0xd3a6('0x47')]);return _0x174d84[_0xd3a6('0x96')](_0x16fa20);}})[_0xd3a6('0x27')](function(_0x10513b){if(_0x10513b){_0xc387a4=_0x10513b[_0xd3a6('0x3e')];if(!_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x16fa20[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0xa58086['query'][_0xd3a6('0x20')]);_0x16fa20[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x22')]);}return _0x174d84['getAgents'](_0x16fa20);}})[_0xd3a6('0x27')](function(_0x395619){if(_0x395619){return _0x395619?{'count':_0xc387a4,'rows':_0x395619}:null;}})[_0xd3a6('0x27')](respondWithResult(_0x1cf352,null))[_0xd3a6('0x49')](handleError(_0x1cf352,null));};exports[_0xd3a6('0x97')]=function(_0x4342e5,_0x5a248b,_0x480c06){var _0x2114a5={};var _0x25fc88={};var _0x5a11b9;var _0x5b179d;return db['VoiceQueue'][_0xd3a6('0x62')]({'where':{'id':_0x4342e5[_0xd3a6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5a248b,null))['then'](function(_0x254433){if(_0x254433){_0x5a11b9=_0x254433;_0x25fc88['model']=_[_0xd3a6('0x4b')](db['UserVoiceQueueRt'][_0xd3a6('0x35')]);_0x25fc88[_0xd3a6('0x38')]=_['keys'](_0x4342e5[_0xd3a6('0x38')]);_0x25fc88[_0xd3a6('0x39')]=_['intersection'](_0x25fc88[_0xd3a6('0x3c')],_0x25fc88[_0xd3a6('0x38')]);_0x2114a5[_0xd3a6('0x3b')]=_['intersection'](_0x25fc88[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x4342e5[_0xd3a6('0x38')]['fields']));_0x2114a5[_0xd3a6('0x3b')]=_0x2114a5[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x2114a5['attributes']:_0x25fc88[_0xd3a6('0x3c')];_0x2114a5[_0xd3a6('0x41')]=qs['sort'](_0x4342e5[_0xd3a6('0x38')]['sort']);_0x2114a5[_0xd3a6('0x43')]=qs['filters'](_[_0xd3a6('0x44')](_0x4342e5[_0xd3a6('0x38')],_0x25fc88[_0xd3a6('0x39')]));if(_0x4342e5[_0xd3a6('0x38')]['filter']){_0x2114a5[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x2114a5[_0xd3a6('0x43')],{'$or':_['map'](_0x2114a5['attributes'],function(_0x37cd2e){var _0x54d3c5={};_0x54d3c5[_0x37cd2e]={'$like':'%'+_0x4342e5['query'][_0xd3a6('0x46')]+'%'};return _0x54d3c5;})});}_0x2114a5=_[_0xd3a6('0x45')]({},_0x2114a5,_0x4342e5[_0xd3a6('0x47')]);return _0x5a11b9[_0xd3a6('0x97')](_0x2114a5);}})[_0xd3a6('0x27')](function(_0x5af90f){if(_0x5af90f){_0x5b179d=_0x5af90f['length'];if(!_0x4342e5[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x2114a5[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x4342e5[_0xd3a6('0x38')]['limit']);_0x2114a5[_0xd3a6('0x22')]=qs['offset'](_0x4342e5['query'][_0xd3a6('0x22')]);}return _0x5a11b9['getMembers'](_0x2114a5);}})[_0xd3a6('0x27')](function(_0x4d4553){return _0x4d4553?{'count':_0x5b179d,'rows':_0x4d4553}:null;})[_0xd3a6('0x27')](respondWithResult(_0x5a248b,null))[_0xd3a6('0x49')](handleError(_0x5a248b,null));};exports[_0xd3a6('0x98')]=function(_0x33e586,_0x34022d,_0x2bbf49){var _0x17936b={};var _0x594043={};var _0x2aa76d;var _0x40ef19;return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x33e586[_0xd3a6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x34022d,null))[_0xd3a6('0x27')](function(_0x232c1f){if(_0x232c1f){_0x2aa76d=_0x232c1f;_0x594043[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db[_0xd3a6('0x99')]['rawAttributes']);_0x594043[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x33e586['query']);_0x594043[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x594043[_0xd3a6('0x3c')],_0x594043[_0xd3a6('0x38')]);_0x17936b[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x594043[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x17936b[_0xd3a6('0x3b')]=_0x17936b[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x17936b[_0xd3a6('0x3b')]:_0x594043[_0xd3a6('0x3c')];_0x17936b[_0xd3a6('0x41')]=qs['sort'](_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x17936b[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x33e586['query'],_0x594043['filters']));if(_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x17936b[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x17936b[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x17936b[_0xd3a6('0x3b')],function(_0x266847){var _0x3ce259={};_0x3ce259[_0x266847]={'$like':'%'+_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x3ce259;})});}_0x17936b=_['merge']({},_0x17936b,_0x33e586['options']);return _0x2aa76d['getLists'](_0x17936b);}})[_0xd3a6('0x27')](function(_0x49684c){if(_0x49684c){_0x40ef19=_0x49684c['length'];if(!_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x17936b['limit']=qs['limit'](_0x33e586[_0xd3a6('0x38')]['limit']);_0x17936b['offset']=qs['offset'](_0x33e586[_0xd3a6('0x38')]['offset']);}return _0x2aa76d[_0xd3a6('0x98')](_0x17936b);}})['then'](function(_0x284abc){if(_0x284abc){return _0x284abc?{'count':_0x40ef19,'rows':_0x284abc}:null;}})[_0xd3a6('0x27')](respondWithResult(_0x34022d,null))[_0xd3a6('0x49')](handleError(_0x34022d,null));};exports[_0xd3a6('0x9a')]=function(_0x6116de,_0xae82b3,_0x35b63c){var _0x563a40,_0x4e1fae;return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x6116de['params']['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0xae82b3,null))['then'](function(_0x4929ad){if(_0x4929ad){_0x4e1fae=_0x4929ad;return _0x4929ad[_0xd3a6('0x9a')](_0x6116de['body'][_0xd3a6('0x80')],_[_0xd3a6('0x57')](_0x6116de['body'],[_0xd3a6('0x80'),'id'])||{});}return null;})[_0xd3a6('0x91')](function(_0x50cce2){var _0x592b28;_0x563a40=_0x50cce2||[];var _0x5a8e59=[];if(_0x50cce2){for(var _0x16a7b0=0x0;_0x16a7b0<_0x50cce2[_0xd3a6('0x3e')];_0x16a7b0+=0x1){var _0x4098d1=_0x50cce2[_0x16a7b0][_0xd3a6('0x29')]({'plain':!![]});_0x4e1fae[_0xd3a6('0x9b')]=_0x6116de['body']['dialCheckDuplicateType']?_0x6116de[_0xd3a6('0x4f')][_0xd3a6('0x9b')]:_0x4e1fae[_0xd3a6('0x9b')];switch(_0x4e1fae[_0xd3a6('0x9b')]){case _0xd3a6('0x9c'):_0x592b28=squel[_0xd3a6('0x9d')]()[_0xd3a6('0x9e')](_0xd3a6('0x9f'))['fromQuery']([_0xd3a6('0xa0'),_0xd3a6('0xa1'),_0xd3a6('0xa2'),_0xd3a6('0xa3'),_0xd3a6('0x5d'),'createdAt',_0xd3a6('0x58')],squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')]('phone',_0xd3a6('0xa0'))[_0xd3a6('0x81')]('NOW()',_0xd3a6('0xa1'))[_0xd3a6('0x81')]('id','ContactId')[_0xd3a6('0x81')](_0x4098d1['CmListId'][_0xd3a6('0x86')](),'ListId')[_0xd3a6('0x81')](_0x6116de['params']['id']['toString'](),_0xd3a6('0x5d'))['field'](_0xd3a6('0xa5'),_0xd3a6('0x59'))['field'](_0xd3a6('0xa5'),_0xd3a6('0x58'))['from'](_0xd3a6('0xa6'))[_0xd3a6('0x43')](_0xd3a6('0xa7'))['where'](_0xd3a6('0xa8'),_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')]())[_0xd3a6('0x43')](_0xd3a6('0xaa'))[_0xd3a6('0x43')](_0xd3a6('0xab'),squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')](_0xd3a6('0xac'))['from'](_0xd3a6('0xad'))[_0xd3a6('0x43')](_0xd3a6('0x85'),_0x6116de[_0xd3a6('0x4a')]['id'][_0xd3a6('0x86')]()))[_0xd3a6('0x43')](_0xd3a6('0xab'),squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')](_0xd3a6('0xae'))['from']('cm_hopper')[_0xd3a6('0x43')]('VoiceQueueId\x20=\x20?',_0x6116de['params']['id'][_0xd3a6('0x86')]())))[_0xd3a6('0x86')]();break;case _0xd3a6('0xaf'):_0x592b28=squel[_0xd3a6('0x9d')]()[_0xd3a6('0x9e')](_0xd3a6('0x9f'))[_0xd3a6('0xb0')](['phone',_0xd3a6('0xa1'),_0xd3a6('0xa2'),'ListId',_0xd3a6('0x5d'),_0xd3a6('0x59'),_0xd3a6('0x58')],squel['select']()[_0xd3a6('0x81')](_0xd3a6('0xa0'),'phone')[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0xa1'))['field']('id',_0xd3a6('0xa2'))['field'](_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')](),_0xd3a6('0xa3'))[_0xd3a6('0x81')](_0x6116de[_0xd3a6('0x4a')]['id']['toString'](),_0xd3a6('0x5d'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0x59'))[_0xd3a6('0x81')]('NOW()',_0xd3a6('0x58'))['from'](_0xd3a6('0xa6'))[_0xd3a6('0x43')](_0xd3a6('0xa7'))[_0xd3a6('0x43')](_0xd3a6('0xa8'),_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')]())[_0xd3a6('0x43')](_0xd3a6('0xaa'))[_0xd3a6('0x43')](_0xd3a6('0xab'),squel['select']()['field'](_0xd3a6('0xae'))[_0xd3a6('0xb1')](_0xd3a6('0x9f'))[_0xd3a6('0x43')](_0xd3a6('0x85'),_0x6116de[_0xd3a6('0x4a')]['id']['toString']())))[_0xd3a6('0x86')]();break;default:_0x592b28=squel[_0xd3a6('0x9d')]()['into'](_0xd3a6('0x9f'))[_0xd3a6('0xb0')]([_0xd3a6('0xa0'),'scheduledAt',_0xd3a6('0xa2'),'ListId',_0xd3a6('0x5d'),_0xd3a6('0x59'),_0xd3a6('0x58')],squel['select']()[_0xd3a6('0x81')]('phone',_0xd3a6('0xa0'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0xa1'))['field']('id',_0xd3a6('0xa2'))['field'](_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')](),_0xd3a6('0xa3'))[_0xd3a6('0x81')](_0x6116de['params']['id'][_0xd3a6('0x86')](),_0xd3a6('0x5d'))[_0xd3a6('0x81')]('NOW()',_0xd3a6('0x59'))['field']('NOW()',_0xd3a6('0x58'))['from'](_0xd3a6('0xa6'))[_0xd3a6('0x43')](_0xd3a6('0xa7'))[_0xd3a6('0x43')](_0xd3a6('0xa8'),_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xd3a6('0x86')]();}_0x5a8e59[_0xd3a6('0x93')](db['sequelize'][_0xd3a6('0x38')](_0x592b28));}return BPromise[_0xd3a6('0x8b')](_0x5a8e59);}})['then'](function(){return _0x563a40;})[_0xd3a6('0x27')](respondWithResult(_0xae82b3,null))['catch'](handleError(_0xae82b3,null));};exports[_0xd3a6('0xb2')]=function(_0x235eeb,_0x4a618c,_0x21a1da){return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x235eeb[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x4a618c,null))[_0xd3a6('0x27')](function(_0x27efb){if(_0x27efb){return _0x27efb[_0xd3a6('0xb2')](_0x235eeb[_0xd3a6('0x38')]['ids']);}})[_0xd3a6('0x27')](function(_0x58c899){if(_0x58c899){return db['CmHopper']['destroy']({'where':{'ListId':_0x235eeb[_0xd3a6('0x38')][_0xd3a6('0x80')],'VoiceQueueId':_0x235eeb[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(){return _0x58c899;});}})[_0xd3a6('0x27')](respondWithStatusCode(_0x4a618c,null))[_0xd3a6('0x49')](handleError(_0x4a618c,null));};exports[_0xd3a6('0xb3')]=function(_0x2d72d0,_0x2107b4,_0x1c80a6){var _0x5aac6b={};var _0x444428={};var _0x51a0df;var _0x5a3861;return db['VoiceQueue'][_0xd3a6('0x62')]({'where':{'id':_0x2d72d0[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x2107b4,null))[_0xd3a6('0x27')](function(_0x418672){if(_0x418672){_0x51a0df=_0x418672;_0x444428[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db[_0xd3a6('0x99')][_0xd3a6('0x35')]);_0x444428[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x2d72d0[_0xd3a6('0x38')]);_0x444428[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x444428['model'],_0x444428[_0xd3a6('0x38')]);_0x5aac6b[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x444428['model'],qs[_0xd3a6('0x3d')](_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x5aac6b[_0xd3a6('0x3b')]=_0x5aac6b[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x5aac6b[_0xd3a6('0x3b')]:_0x444428[_0xd3a6('0x3c')];_0x5aac6b[_0xd3a6('0x41')]=qs['sort'](_0x2d72d0['query']['sort']);_0x5aac6b['where']=qs['filters'](_['pick'](_0x2d72d0[_0xd3a6('0x38')],_0x444428[_0xd3a6('0x39')]));if(_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x5aac6b['where']=_[_0xd3a6('0x45')](_0x5aac6b['where'],{'$or':_[_0xd3a6('0x2c')](_0x5aac6b[_0xd3a6('0x3b')],function(_0x37f278){var _0x50bda8={};_0x50bda8[_0x37f278]={'$like':'%'+_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x50bda8;})});}_0x5aac6b=_[_0xd3a6('0x45')]({},_0x5aac6b,_0x2d72d0['options']);return _0x51a0df[_0xd3a6('0xb3')](_0x5aac6b);}})[_0xd3a6('0x27')](function(_0x5caf52){if(_0x5caf52){_0x5a3861=_0x5caf52['length'];if(!_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x5aac6b['limit']=qs[_0xd3a6('0x20')](_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x5aac6b[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x22')]);}return _0x51a0df[_0xd3a6('0xb3')](_0x5aac6b);}})[_0xd3a6('0x27')](function(_0x4c1730){if(_0x4c1730){return _0x4c1730?{'count':_0x5a3861,'rows':_0x4c1730}:null;}})[_0xd3a6('0x27')](respondWithResult(_0x2107b4,null))[_0xd3a6('0x49')](handleError(_0x2107b4,null));};exports[_0xd3a6('0xb4')]=function(_0x31ea33,_0xfe23ae,_0x40bfd4){var _0xb1dbdb,_0x421e53;return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x31ea33['params']['id']}})['then'](handleEntityNotFound(_0xfe23ae,null))[_0xd3a6('0x27')](function(_0x323432){if(_0x323432){_0x421e53=_0x323432;return _0x323432[_0xd3a6('0xb4')](_0x31ea33[_0xd3a6('0x4f')][_0xd3a6('0x80')],_[_0xd3a6('0x57')](_0x31ea33['body'],[_0xd3a6('0x80'),'id'])||{});}return null;})[_0xd3a6('0x91')](function(_0x4c3589){var _0x254de8;_0xb1dbdb=_0x4c3589||[];var _0x5db7d5=[];if(_0x4c3589){for(var _0x6b79ee=0x0;_0x6b79ee<_0x4c3589['length'];_0x6b79ee+=0x1){var _0x3f7890=_0x4c3589[_0x6b79ee][_0xd3a6('0x29')]({'plain':!![]});_0x254de8=squel[_0xd3a6('0x9d')]()[_0xd3a6('0x9e')](_0xd3a6('0xb5'))['fromQuery']([_0xd3a6('0xa0'),'ContactId',_0xd3a6('0xa3'),_0xd3a6('0x5d'),_0xd3a6('0x59'),_0xd3a6('0x58')],squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')]('phone',_0xd3a6('0xa0'))[_0xd3a6('0x81')]('id',_0xd3a6('0xa2'))['field'](_0x3f7890['CmListId']['toString'](),_0xd3a6('0xa3'))[_0xd3a6('0x81')](_0x31ea33['params']['id'][_0xd3a6('0x86')](),_0xd3a6('0x5d'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0x59'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0x58'))['from']('cm_contacts')[_0xd3a6('0x43')](_0xd3a6('0xa7'))[_0xd3a6('0x43')]('ListId\x20=\x20?',_0x3f7890[_0xd3a6('0xa9')][_0xd3a6('0x86')]())[_0xd3a6('0x43')](_0xd3a6('0xaa')))[_0xd3a6('0x86')]();_0x5db7d5[_0xd3a6('0x93')](db[_0xd3a6('0x73')][_0xd3a6('0x38')](_0x254de8));}return BPromise['all'](_0x5db7d5);}})[_0xd3a6('0x27')](function(){return _0xb1dbdb;})[_0xd3a6('0x27')](respondWithResult(_0xfe23ae,null))[_0xd3a6('0x49')](handleError(_0xfe23ae,null));};exports[_0xd3a6('0xb6')]=function(_0x5385ee,_0xd2f97a,_0x111a68){return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x5385ee['params']['id']}})['then'](handleEntityNotFound(_0xd2f97a,null))['then'](function(_0x3084a3){if(_0x3084a3){return _0x3084a3[_0xd3a6('0xb6')](_0x5385ee[_0xd3a6('0x38')]['ids']);}})[_0xd3a6('0x27')](function(_0xfe6933){if(_0xfe6933){return db['CmHopperBlack'][_0xd3a6('0x28')]({'where':{'ListId':_0x5385ee[_0xd3a6('0x38')][_0xd3a6('0x80')],'VoiceQueueId':_0x5385ee[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(){return _0xfe6933;});}})['then'](respondWithStatusCode(_0xd2f97a,null))['catch'](handleError(_0xd2f97a,null));};
\ No newline at end of file
+var _0x9ced=['undefined','limit','count','set','apply','reject','save','update','then','get','inbound','outbound','ignore','map','value','type','find','name','UserProfileResource','destroy','sendStatus','error','stack','VoiceQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoiceQueues','QueueCampaigns','autoAssociation','clone','createdAt','body','omit','updatedAt','UserProfileSection','userProfileId','getHoppers','findOne','CmHopper','VoiceQueueId','merge','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','online','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','isNil','format','SIP/%s','emit','userVoiceQueue:save','ids','Agents','tq.TeamId','team_has_voice_queues','join','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','removeTeams','isEmpty','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','spread','isArray','getAgents','getMembers','getLists','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','select','field','CmListId','NOW()','from','cm_contacts','phone\x20IS\x20NOT\x20NULL','cm_hopper_final','VoiceQueueId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','ListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','lodash','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./voiceQueue.socket','status','end','json','offset'];(function(_0x55120d,_0x5e7eaf){var _0x3f6707=function(_0x5f054f){while(--_0x5f054f){_0x55120d['push'](_0x55120d['shift']());}};_0x3f6707(++_0x5e7eaf);}(_0x9ced,0x9c));var _0xd9ce=function(_0x315aea,_0x318a80){_0x315aea=_0x315aea-0x0;var _0x4a4bdb=_0x9ced[_0x315aea];return _0x4a4bdb;};'use strict';var emlformat=require(_0xd9ce('0x0'));var rimraf=require(_0xd9ce('0x1'));var zipdir=require(_0xd9ce('0x2'));var jsonpatch=require(_0xd9ce('0x3'));var rp=require(_0xd9ce('0x4'));var moment=require(_0xd9ce('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xd9ce('0x6'));var util=require(_0xd9ce('0x7'));var path=require(_0xd9ce('0x8'));var sox=require(_0xd9ce('0x9'));var csv=require('to-csv');var ejs=require(_0xd9ce('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd9ce('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd9ce('0xc'));var toCsv=require(_0xd9ce('0xd'));var querystring=require('querystring');var Papa=require(_0xd9ce('0xe'));var Redis=require(_0xd9ce('0xf'));var authService=require(_0xd9ce('0x10'));var qs=require(_0xd9ce('0x11'));var as=require(_0xd9ce('0x12'));var hardwareService=require(_0xd9ce('0x13'));var logger=require('../../config/logger')(_0xd9ce('0x14'));var utils=require(_0xd9ce('0x15'));var config=require(_0xd9ce('0x16'));var licenseUtil=require(_0xd9ce('0x17'));var db=require('../../mysqldb')['db'];config[_0xd9ce('0x18')]=_['defaults'](config[_0xd9ce('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xd9ce('0x19'))(new Redis(config['redis']));require(_0xd9ce('0x1a'))['register'](socket);function respondWithStatusCode(_0x141d42,_0x412c69){_0x412c69=_0x412c69||0xcc;return function(_0x1d5b2b){if(_0x1d5b2b){return _0x141d42['sendStatus'](_0x412c69);}return _0x141d42[_0xd9ce('0x1b')](_0x412c69)[_0xd9ce('0x1c')]();};}function respondWithResult(_0x1f9dcf,_0x954736){_0x954736=_0x954736||0xc8;return function(_0x4c59c8){if(_0x4c59c8){return _0x1f9dcf[_0xd9ce('0x1b')](_0x954736)[_0xd9ce('0x1d')](_0x4c59c8);}};}function respondWithFilteredResult(_0xb207f5,_0x9c79d1){return function(_0x16af4e){if(_0x16af4e){var _0x30ff82=typeof _0x9c79d1[_0xd9ce('0x1e')]===_0xd9ce('0x1f')&&typeof _0x9c79d1[_0xd9ce('0x20')]===_0xd9ce('0x1f');var _0x212201=_0x16af4e[_0xd9ce('0x21')];var _0xc37246=_0x30ff82?0x0:_0x9c79d1[_0xd9ce('0x1e')];var _0x388ac4=_0x30ff82?_0x16af4e[_0xd9ce('0x21')]:_0x9c79d1[_0xd9ce('0x1e')]+_0x9c79d1[_0xd9ce('0x20')];var _0x22d44d;if(_0x388ac4>=_0x212201){_0x388ac4=_0x212201;_0x22d44d=0xc8;}else{_0x22d44d=0xce;}_0xb207f5[_0xd9ce('0x1b')](_0x22d44d);return _0xb207f5[_0xd9ce('0x22')]('Content-Range',_0xc37246+'-'+_0x388ac4+'/'+_0x212201)[_0xd9ce('0x1d')](_0x16af4e);}return null;};}function patchUpdates(_0x37cdfa){return function(_0x12c6e9){try{jsonpatch[_0xd9ce('0x23')](_0x12c6e9,_0x37cdfa,!![]);}catch(_0x563736){return BPromise[_0xd9ce('0x24')](_0x563736);}return _0x12c6e9[_0xd9ce('0x25')]();};}function saveUpdates(_0x5dac43,_0x116160){return function(_0x2efe63){if(_0x2efe63){return _0x2efe63[_0xd9ce('0x26')](_0x5dac43)[_0xd9ce('0x27')](function(_0x42bd04){return _0x42bd04;});}return null;};}function removeEntity(_0x5a4359,_0x250dbb){return function(_0x380d1a){if(_0x380d1a){return _0x380d1a['destroy']()['then'](function(){var _0x2a1991=_0x380d1a[_0xd9ce('0x28')]({'plain':!![]});var _0x42fac7=[{'name':'VoiceQueues','value':_0xd9ce('0x29'),'ignore':![]},{'name':'QueueCampaigns','value':_0xd9ce('0x2a'),'ignore':![]}];var _0x40e8c1=_(_0x42fac7)['filter'](_0xd9ce('0x2b'))[_0xd9ce('0x2c')](_0xd9ce('0x2d'))[_0xd9ce('0x2d')]();if(_['includes'](_0x40e8c1,_0x2a1991[_0xd9ce('0x2e')])){return;}var _0x2e7d50=_[_0xd9ce('0x2f')](_0x42fac7,['value',_0x2a1991['type']])[_0xd9ce('0x30')];return db[_0xd9ce('0x31')][_0xd9ce('0x32')]({'where':{'type':_0x2e7d50,'resourceId':_0x2a1991['id']}})[_0xd9ce('0x27')](function(){return _0x380d1a;});})[_0xd9ce('0x27')](function(){_0x5a4359[_0xd9ce('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ca700,_0x145f43){return function(_0x4e6913){if(!_0x4e6913){_0x2ca700[_0xd9ce('0x33')](0x194);}return _0x4e6913;};}function handleError(_0x5f3147,_0x46dd16){_0x46dd16=_0x46dd16||0x1f4;return function(_0x19eea2){logger[_0xd9ce('0x34')](_0x19eea2[_0xd9ce('0x35')]);if(_0x19eea2['name']){delete _0x19eea2[_0xd9ce('0x30')];}_0x5f3147[_0xd9ce('0x1b')](_0x46dd16)['send'](_0x19eea2);};}exports['index']=function(_0x57d72f,_0x3f7749){var _0x423e18={},_0x471af3={},_0x1721ff={'count':0x0,'rows':[]};var _0xe73007=_[_0xd9ce('0x2c')](db[_0xd9ce('0x36')][_0xd9ce('0x37')],function(_0x556ab9){return{'name':_0x556ab9[_0xd9ce('0x38')],'type':_0x556ab9[_0xd9ce('0x2e')][_0xd9ce('0x39')]};});_0x471af3[_0xd9ce('0x3a')]=_['map'](_0xe73007,_0xd9ce('0x30'));_0x471af3[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x57d72f[_0xd9ce('0x3b')]);_0x471af3[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0x471af3[_0xd9ce('0x3a')],_0x471af3[_0xd9ce('0x3b')]);_0x423e18['attributes']=_['intersection'](_0x471af3[_0xd9ce('0x3a')],qs[_0xd9ce('0x3f')](_0x57d72f[_0xd9ce('0x3b')]['fields']));_0x423e18[_0xd9ce('0x40')]=_0x423e18['attributes'][_0xd9ce('0x41')]?_0x423e18[_0xd9ce('0x40')]:_0x471af3['model'];if(!_0x57d72f[_0xd9ce('0x3b')][_0xd9ce('0x42')](_0xd9ce('0x43'))){_0x423e18['limit']=qs[_0xd9ce('0x20')](_0x57d72f[_0xd9ce('0x3b')][_0xd9ce('0x20')]);_0x423e18[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x57d72f[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}_0x423e18[_0xd9ce('0x44')]=qs['sort'](_0x57d72f[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x423e18[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_[_0xd9ce('0x47')](_0x57d72f[_0xd9ce('0x3b')],_0x471af3[_0xd9ce('0x3d')]),_0xe73007);if(_0x57d72f[_0xd9ce('0x3b')][_0xd9ce('0x48')]){_0x423e18[_0xd9ce('0x46')]=_['merge'](_0x423e18[_0xd9ce('0x46')],{'$or':_[_0xd9ce('0x2c')](_0xe73007,function(_0x385b61){if(_0x385b61['type']!==_0xd9ce('0x49')){var _0x3a742d={};_0x3a742d[_0x385b61[_0xd9ce('0x30')]]={'$like':'%'+_0x57d72f[_0xd9ce('0x3b')]['filter']+'%'};return _0x3a742d;}})});}_0x423e18=_['merge']({},_0x423e18,_0x57d72f[_0xd9ce('0x4a')]);var _0x22da5d={'where':_0x423e18['where']};return db[_0xd9ce('0x36')][_0xd9ce('0x21')](_0x22da5d)[_0xd9ce('0x27')](function(_0xd9c5bb){_0x1721ff[_0xd9ce('0x21')]=_0xd9c5bb;if(_0x57d72f['query'][_0xd9ce('0x4b')]){_0x423e18[_0xd9ce('0x4c')]=[{'all':!![]}];}return db[_0xd9ce('0x36')][_0xd9ce('0x4d')](_0x423e18);})[_0xd9ce('0x27')](function(_0x282bff){_0x1721ff[_0xd9ce('0x4e')]=_0x282bff;return _0x1721ff;})[_0xd9ce('0x27')](respondWithFilteredResult(_0x3f7749,_0x423e18))[_0xd9ce('0x4f')](handleError(_0x3f7749,null));};exports[_0xd9ce('0x50')]=function(_0x2f70c3,_0x5a515f){var _0x8967b0={'raw':![],'where':{'id':_0x2f70c3[_0xd9ce('0x51')]['id']}},_0xed6aa7={};_0xed6aa7[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0x36')]['rawAttributes']);_0xed6aa7[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x2f70c3[_0xd9ce('0x3b')]);_0xed6aa7[_0xd9ce('0x3d')]=_['intersection'](_0xed6aa7[_0xd9ce('0x3a')],_0xed6aa7[_0xd9ce('0x3b')]);_0x8967b0[_0xd9ce('0x40')]=_['intersection'](_0xed6aa7['model'],qs[_0xd9ce('0x3f')](_0x2f70c3[_0xd9ce('0x3b')][_0xd9ce('0x3f')]));_0x8967b0['attributes']=_0x8967b0[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x8967b0[_0xd9ce('0x40')]:_0xed6aa7[_0xd9ce('0x3a')];if(_0x2f70c3[_0xd9ce('0x3b')][_0xd9ce('0x4b')]){_0x8967b0['include']=[{'all':!![]}];}_0x8967b0=_['merge']({},_0x8967b0,_0x2f70c3[_0xd9ce('0x4a')]);return db[_0xd9ce('0x36')][_0xd9ce('0x2f')](_0x8967b0)[_0xd9ce('0x27')](handleEntityNotFound(_0x5a515f,null))[_0xd9ce('0x27')](respondWithResult(_0x5a515f,null))[_0xd9ce('0x4f')](handleError(_0x5a515f,null));};exports['create']=function(_0x3283c2,_0x4cc599){return db[_0xd9ce('0x36')][_0xd9ce('0x52')](_0x3283c2['body'],{})[_0xd9ce('0x27')](function(_0x350b89){var _0x30cbae=_0x3283c2[_0xd9ce('0x53')][_0xd9ce('0x28')]({'plain':!![]});if(!_0x30cbae)throw new Error(_0xd9ce('0x54'));if(_0x30cbae[_0xd9ce('0x55')]===_0xd9ce('0x53')){var _0x7d59d4=_0x350b89[_0xd9ce('0x28')]({'plain':!![]});var _0xaeae0f=[{'name':_0xd9ce('0x56'),'value':_0xd9ce('0x29')},{'name':_0xd9ce('0x57'),'value':_0xd9ce('0x2a')}];var _0x366cfb=_['find'](_0xaeae0f,[_0xd9ce('0x2d'),_0x7d59d4[_0xd9ce('0x2e')]])[_0xd9ce('0x30')];return db['UserProfileSection'][_0xd9ce('0x2f')]({'where':{'name':_0x366cfb,'userProfileId':_0x30cbae['userProfileId']},'raw':!![]})[_0xd9ce('0x27')](function(_0x5b0a68){if(_0x5b0a68&&_0x5b0a68[_0xd9ce('0x58')]===0x0){return db[_0xd9ce('0x31')][_0xd9ce('0x52')]({'name':_0x7d59d4[_0xd9ce('0x30')],'resourceId':_0x7d59d4['id'],'type':_0x5b0a68[_0xd9ce('0x30')],'sectionId':_0x5b0a68['id']},{})['then'](function(){return _0x350b89;});}else{return _0x350b89;}})[_0xd9ce('0x4f')](function(_0x30f535){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x30f535);throw _0x30f535;});}return _0x350b89;})['then'](respondWithResult(_0x4cc599,0xc9))[_0xd9ce('0x4f')](handleError(_0x4cc599,null));};exports[_0xd9ce('0x59')]=function(_0x38413a,_0x55d9f0){var _0x3ed031={'where':{'id':_0x38413a['params']['id']}},_0x152602={};_0x152602[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db['VoiceQueue'][_0xd9ce('0x37')]);_0x3ed031[_0xd9ce('0x40')]=_[_0xd9ce('0x3e')](_0x152602[_0xd9ce('0x3a')],qs[_0xd9ce('0x3f')](_0x38413a['query'][_0xd9ce('0x3f')]));_0x3ed031['attributes']=_0x3ed031['attributes'][_0xd9ce('0x41')]?_0x3ed031['attributes']:_0x152602['model'];if(_0x38413a[_0xd9ce('0x3b')][_0xd9ce('0x4b')]){_0x3ed031['include']=[{'all':!![]}];}_0x3ed031=_['merge']({},_0x3ed031,_0x38413a['options']);return db[_0xd9ce('0x36')][_0xd9ce('0x2f')](_0x3ed031)[_0xd9ce('0x27')](handleEntityNotFound(_0x55d9f0,null))[_0xd9ce('0x27')](function(_0x43293e){if(_0x43293e){var _0x3c2454=_0x43293e[_0xd9ce('0x28')]({'plain':!![]});_0x3c2454=qs['omit'](_0x3c2454,['id',_0xd9ce('0x5a'),'updatedAt']);_0x38413a[_0xd9ce('0x5b')]=_[_0xd9ce('0x5c')](_0x38413a['body'],['id',_0xd9ce('0x5a'),_0xd9ce('0x5d')]);return db['VoiceQueue'][_0xd9ce('0x52')](_['merge'](_0x3c2454,_0x38413a['body']),{'include':_0x38413a['query'][_0xd9ce('0x4b')]?[{'all':!![]}]:undefined})[_0xd9ce('0x27')](function(_0x404aff){var _0x47eb03=_0x38413a[_0xd9ce('0x53')]['get']({'plain':!![]});if(!_0x47eb03)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x47eb03[_0xd9ce('0x55')]===_0xd9ce('0x53')){var _0x4dcf8a=_0x404aff[_0xd9ce('0x28')]({'plain':!![]});var _0x35bff2=[{'name':_0xd9ce('0x56'),'value':_0xd9ce('0x29')},{'name':_0xd9ce('0x57'),'value':_0xd9ce('0x2a')}];var _0x2f34cf=_[_0xd9ce('0x2f')](_0x35bff2,[_0xd9ce('0x2d'),_0x4dcf8a[_0xd9ce('0x2e')]])[_0xd9ce('0x30')];return db[_0xd9ce('0x5e')][_0xd9ce('0x2f')]({'where':{'name':_0x2f34cf,'userProfileId':_0x47eb03[_0xd9ce('0x5f')]},'raw':!![]})['then'](function(_0x3d1e74){if(_0x3d1e74&&_0x3d1e74[_0xd9ce('0x58')]===0x0){return db[_0xd9ce('0x31')][_0xd9ce('0x52')]({'name':_0x4dcf8a[_0xd9ce('0x30')],'resourceId':_0x4dcf8a['id'],'type':_0x3d1e74[_0xd9ce('0x30')],'sectionId':_0x3d1e74['id']},{})[_0xd9ce('0x27')](function(){return _0x404aff;});}else{return _0x404aff;}})['catch'](function(_0x3f45eb){logger[_0xd9ce('0x34')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f45eb);throw _0x3f45eb;});}return _0x404aff;});}})[_0xd9ce('0x27')](respondWithResult(_0x55d9f0,0xc9))['catch'](handleError(_0x55d9f0,null));};exports[_0xd9ce('0x26')]=function(_0x3a3db1,_0x2a1275){if(_0x3a3db1[_0xd9ce('0x5b')]['id']){delete _0x3a3db1[_0xd9ce('0x5b')]['id'];}return db['VoiceQueue'][_0xd9ce('0x2f')]({'where':{'id':_0x3a3db1[_0xd9ce('0x51')]['id']}})['then'](handleEntityNotFound(_0x2a1275,null))[_0xd9ce('0x27')](saveUpdates(_0x3a3db1['body'],null))[_0xd9ce('0x27')](respondWithResult(_0x2a1275,null))['catch'](handleError(_0x2a1275,null));};exports[_0xd9ce('0x32')]=function(_0x1c90d1,_0x36c3a7){return db[_0xd9ce('0x36')][_0xd9ce('0x2f')]({'where':{'id':_0x1c90d1[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x36c3a7,null))[_0xd9ce('0x27')](removeEntity(_0x36c3a7,null))['catch'](handleError(_0x36c3a7,null));};exports[_0xd9ce('0x60')]=function(_0x59605c,_0x489024,_0x49ccde){var _0x364a5b={'raw':![],'where':{}};var _0x189f1c={};var _0x182516={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd9ce('0x61')]({'where':{'id':_0x59605c[_0xd9ce('0x51')]['id']}})['then'](handleEntityNotFound(_0x489024,null))[_0xd9ce('0x27')](function(_0x3f08eb){if(_0x3f08eb){_0x189f1c['model']=_[_0xd9ce('0x3c')](db[_0xd9ce('0x62')][_0xd9ce('0x37')]);_0x189f1c[_0xd9ce('0x3b')]=_['keys'](_0x59605c[_0xd9ce('0x3b')]);_0x189f1c[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0x189f1c[_0xd9ce('0x3a')],_0x189f1c[_0xd9ce('0x3b')]);_0x364a5b[_0xd9ce('0x40')]=_[_0xd9ce('0x3e')](_0x189f1c['model'],qs[_0xd9ce('0x3f')](_0x59605c[_0xd9ce('0x3b')][_0xd9ce('0x3f')]));_0x364a5b['attributes']=_0x364a5b[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x364a5b[_0xd9ce('0x40')]:_0x189f1c['model'];if(!_0x59605c['query'][_0xd9ce('0x42')]('nolimit')){_0x364a5b[_0xd9ce('0x20')]=qs[_0xd9ce('0x20')](_0x59605c['query']['limit']);_0x364a5b[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x59605c[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}_0x364a5b[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x59605c[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x364a5b[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_[_0xd9ce('0x47')](_0x59605c[_0xd9ce('0x3b')],_0x189f1c['filters']));_0x364a5b[_0xd9ce('0x46')][_0xd9ce('0x63')]=_0x3f08eb['id'];if(_0x59605c[_0xd9ce('0x3b')][_0xd9ce('0x48')]){_0x364a5b[_0xd9ce('0x46')]=_[_0xd9ce('0x64')](_0x364a5b[_0xd9ce('0x46')],{'$or':_[_0xd9ce('0x2c')](_0x364a5b[_0xd9ce('0x40')],function(_0x5f0a9f){var _0x33aeb3={};_0x33aeb3[_0x5f0a9f]={'$like':'%'+_0x59605c['query'][_0xd9ce('0x48')]+'%'};return _0x33aeb3;})});}_0x364a5b=_[_0xd9ce('0x64')]({},_0x364a5b,_0x59605c[_0xd9ce('0x4a')]);return db['CmHopper'][_0xd9ce('0x21')]({'where':_0x364a5b['where']})[_0xd9ce('0x27')](function(_0x142e2e){_0x182516[_0xd9ce('0x21')]=_0x142e2e;if(_0x59605c[_0xd9ce('0x3b')][_0xd9ce('0x4b')]){_0x364a5b['include']=[{'all':!![]}];}return db[_0xd9ce('0x62')]['findAll'](_0x364a5b);})[_0xd9ce('0x27')](function(_0x4e7302){_0x182516[_0xd9ce('0x4e')]=_0x4e7302;return _0x182516;});}})['then'](respondWithFilteredResult(_0x489024,_0x364a5b))[_0xd9ce('0x4f')](handleError(_0x489024,null));};exports[_0xd9ce('0x65')]=function(_0x3c90e0,_0x607a26,_0x254005){var _0x120789={'raw':!![],'where':{}};var _0x115e97={};var _0x2785b5={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd9ce('0x61')]({'where':{'id':_0x3c90e0[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x607a26,null))[_0xd9ce('0x27')](function(_0x27e22b){if(_0x27e22b){_0x115e97[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0x66')]['rawAttributes']);_0x115e97[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x3c90e0['query']);_0x115e97[_0xd9ce('0x3d')]=_['intersection'](_0x115e97[_0xd9ce('0x3a')],_0x115e97['query']);_0x120789[_0xd9ce('0x40')]=_['intersection'](_0x115e97['model'],qs[_0xd9ce('0x3f')](_0x3c90e0['query'][_0xd9ce('0x3f')]));_0x120789[_0xd9ce('0x40')]=_0x120789[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x120789[_0xd9ce('0x40')]:_0x115e97[_0xd9ce('0x3a')];if(!_0x3c90e0['query'][_0xd9ce('0x42')](_0xd9ce('0x43'))){_0x120789[_0xd9ce('0x20')]=qs[_0xd9ce('0x20')](_0x3c90e0[_0xd9ce('0x3b')][_0xd9ce('0x20')]);_0x120789[_0xd9ce('0x1e')]=qs['offset'](_0x3c90e0[_0xd9ce('0x3b')]['offset']);}_0x120789[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x3c90e0[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x120789[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_['pick'](_0x3c90e0['query'],_0x115e97[_0xd9ce('0x3d')]));_0x120789['where'][_0xd9ce('0x63')]=_0x27e22b['id'];if(_0x3c90e0['query'][_0xd9ce('0x48')]){_0x120789[_0xd9ce('0x46')]=_[_0xd9ce('0x64')](_0x120789['where'],{'$or':_[_0xd9ce('0x2c')](_0x120789[_0xd9ce('0x40')],function(_0x408ad9){var _0x3381f3={};_0x3381f3[_0x408ad9]={'$like':'%'+_0x3c90e0[_0xd9ce('0x3b')][_0xd9ce('0x48')]+'%'};return _0x3381f3;})});}_0x120789=_[_0xd9ce('0x64')]({},_0x120789,_0x3c90e0['options']);return db['CmHopperHistory']['count']({'where':_0x120789['where']})[_0xd9ce('0x27')](function(_0x2e4573){_0x2785b5[_0xd9ce('0x21')]=_0x2e4573;if(_0x3c90e0[_0xd9ce('0x3b')][_0xd9ce('0x4b')]){_0x120789[_0xd9ce('0x4c')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x120789);})['then'](function(_0x2b3331){_0x2785b5[_0xd9ce('0x4e')]=_0x2b3331;return _0x2785b5;});}})[_0xd9ce('0x27')](respondWithFilteredResult(_0x607a26,_0x120789))[_0xd9ce('0x4f')](handleError(_0x607a26,null));};exports[_0xd9ce('0x67')]=function(_0x11c752,_0x4bb5df,_0x51d2c4){var _0x2d8cb6={'raw':!![],'where':{}};var _0x561e38={};var _0x556bcf={'count':0x0,'rows':[]};return db[_0xd9ce('0x36')]['findOne']({'where':{'id':_0x11c752[_0xd9ce('0x51')]['id']}})['then'](handleEntityNotFound(_0x4bb5df,null))[_0xd9ce('0x27')](function(_0x4aeebb){if(_0x4aeebb){_0x561e38[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db['CmHopperFinal'][_0xd9ce('0x37')]);_0x561e38['query']=_[_0xd9ce('0x3c')](_0x11c752['query']);_0x561e38[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0x561e38[_0xd9ce('0x3a')],_0x561e38['query']);_0x2d8cb6['attributes']=_['intersection'](_0x561e38[_0xd9ce('0x3a')],qs[_0xd9ce('0x3f')](_0x11c752['query'][_0xd9ce('0x3f')]));_0x2d8cb6[_0xd9ce('0x40')]=_0x2d8cb6[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x2d8cb6[_0xd9ce('0x40')]:_0x561e38[_0xd9ce('0x3a')];if(!_0x11c752[_0xd9ce('0x3b')]['hasOwnProperty'](_0xd9ce('0x43'))){_0x2d8cb6['limit']=qs[_0xd9ce('0x20')](_0x11c752[_0xd9ce('0x3b')][_0xd9ce('0x20')]);_0x2d8cb6[_0xd9ce('0x1e')]=qs['offset'](_0x11c752['query'][_0xd9ce('0x1e')]);}_0x2d8cb6[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x11c752[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x2d8cb6[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_[_0xd9ce('0x47')](_0x11c752[_0xd9ce('0x3b')],_0x561e38[_0xd9ce('0x3d')]));_0x2d8cb6[_0xd9ce('0x46')]['VoiceQueueId']=_0x4aeebb['id'];if(_0x11c752[_0xd9ce('0x3b')]['filter']){_0x2d8cb6[_0xd9ce('0x46')]=_[_0xd9ce('0x64')](_0x2d8cb6[_0xd9ce('0x46')],{'$or':_[_0xd9ce('0x2c')](_0x2d8cb6[_0xd9ce('0x40')],function(_0x465d82){var _0x22305c={};_0x22305c[_0x465d82]={'$like':'%'+_0x11c752[_0xd9ce('0x3b')]['filter']+'%'};return _0x22305c;})});}_0x2d8cb6=_['merge']({},_0x2d8cb6,_0x11c752[_0xd9ce('0x4a')]);return db[_0xd9ce('0x68')][_0xd9ce('0x21')]({'where':_0x2d8cb6['where']})['then'](function(_0x439428){_0x556bcf[_0xd9ce('0x21')]=_0x439428;if(_0x11c752[_0xd9ce('0x3b')]['includeAll']){_0x2d8cb6[_0xd9ce('0x4c')]=[{'all':!![]}];}return db[_0xd9ce('0x68')][_0xd9ce('0x4d')](_0x2d8cb6);})[_0xd9ce('0x27')](function(_0x5c21d1){_0x556bcf[_0xd9ce('0x4e')]=_0x5c21d1;return _0x556bcf;});}})[_0xd9ce('0x27')](respondWithFilteredResult(_0x4bb5df,_0x2d8cb6))[_0xd9ce('0x4f')](handleError(_0x4bb5df,null));};exports[_0xd9ce('0x69')]=function(_0x1dd30a,_0x5160a5,_0x23b650){var _0x36fcc7={'raw':!![],'where':{}};var _0x36ce7a={};var _0x298df2={'count':0x0,'rows':[]};return db[_0xd9ce('0x36')]['findOne']({'where':{'id':_0x1dd30a[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x5160a5,null))[_0xd9ce('0x27')](function(_0x1c8d02){if(_0x1c8d02){_0x36ce7a[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0x6a')][_0xd9ce('0x37')]);_0x36ce7a[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x1dd30a['query']);_0x36ce7a[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0x36ce7a[_0xd9ce('0x3a')],_0x36ce7a[_0xd9ce('0x3b')]);_0x36fcc7[_0xd9ce('0x40')]=_['intersection'](_0x36ce7a['model'],qs[_0xd9ce('0x3f')](_0x1dd30a[_0xd9ce('0x3b')][_0xd9ce('0x3f')]));_0x36fcc7[_0xd9ce('0x40')]=_0x36fcc7[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x36fcc7['attributes']:_0x36ce7a[_0xd9ce('0x3a')];if(!_0x1dd30a[_0xd9ce('0x3b')]['hasOwnProperty'](_0xd9ce('0x43'))){_0x36fcc7[_0xd9ce('0x20')]=qs['limit'](_0x1dd30a[_0xd9ce('0x3b')][_0xd9ce('0x20')]);_0x36fcc7[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x1dd30a[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}_0x36fcc7[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x1dd30a[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x36fcc7[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_[_0xd9ce('0x47')](_0x1dd30a[_0xd9ce('0x3b')],_0x36ce7a[_0xd9ce('0x3d')]));_0x36fcc7[_0xd9ce('0x46')][_0xd9ce('0x63')]=_0x1c8d02['id'];if(_0x1dd30a['query']['filter']){_0x36fcc7['where']=_[_0xd9ce('0x64')](_0x36fcc7[_0xd9ce('0x46')],{'$or':_[_0xd9ce('0x2c')](_0x36fcc7[_0xd9ce('0x40')],function(_0x320c79){var _0x4e6216={};_0x4e6216[_0x320c79]={'$like':'%'+_0x1dd30a[_0xd9ce('0x3b')][_0xd9ce('0x48')]+'%'};return _0x4e6216;})});}_0x36fcc7=_[_0xd9ce('0x64')]({},_0x36fcc7,_0x1dd30a[_0xd9ce('0x4a')]);return db['CmHopperBlack'][_0xd9ce('0x21')]({'where':_0x36fcc7[_0xd9ce('0x46')]})['then'](function(_0x1906af){_0x298df2[_0xd9ce('0x21')]=_0x1906af;if(_0x1dd30a[_0xd9ce('0x3b')]['includeAll']){_0x36fcc7[_0xd9ce('0x4c')]=[{'all':!![]}];}return db[_0xd9ce('0x6a')][_0xd9ce('0x4d')](_0x36fcc7);})[_0xd9ce('0x27')](function(_0x5b865b){_0x298df2[_0xd9ce('0x4e')]=_0x5b865b;return _0x298df2;});}})[_0xd9ce('0x27')](respondWithFilteredResult(_0x5160a5,_0x36fcc7))['catch'](handleError(_0x5160a5,null));};exports[_0xd9ce('0x6b')]=function(_0x1dbf12,_0x43444c,_0x7255ce){var _0x3b86d0={};var _0x576d01={};var _0x3e19c6;var _0x2c727a;return db[_0xd9ce('0x36')]['findOne']({'where':{'id':_0x1dbf12['params']['id']}})['then'](handleEntityNotFound(_0x43444c,null))[_0xd9ce('0x27')](function(_0x137f5c){if(_0x137f5c){_0x3e19c6=_0x137f5c;_0x576d01[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0x6c')][_0xd9ce('0x37')]);_0x576d01[_0xd9ce('0x3b')]=_['keys'](_0x1dbf12['query']);_0x576d01[_0xd9ce('0x3d')]=_['intersection'](_0x576d01[_0xd9ce('0x3a')],_0x576d01[_0xd9ce('0x3b')]);_0x3b86d0[_0xd9ce('0x40')]=_[_0xd9ce('0x3e')](_0x576d01[_0xd9ce('0x3a')],qs['fields'](_0x1dbf12[_0xd9ce('0x3b')]['fields']));_0x3b86d0[_0xd9ce('0x40')]=_0x3b86d0[_0xd9ce('0x40')]['length']?_0x3b86d0[_0xd9ce('0x40')]:_0x576d01['model'];_0x3b86d0[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x1dbf12[_0xd9ce('0x3b')]['sort']);_0x3b86d0['where']=qs[_0xd9ce('0x3d')](_['pick'](_0x1dbf12[_0xd9ce('0x3b')],_0x576d01[_0xd9ce('0x3d')]));if(_0x1dbf12['query']['filter']){_0x3b86d0['where']=_[_0xd9ce('0x64')](_0x3b86d0[_0xd9ce('0x46')],{'$or':_[_0xd9ce('0x2c')](_0x3b86d0[_0xd9ce('0x40')],function(_0x359806){var _0x27163f={};_0x27163f[_0x359806]={'$like':'%'+_0x1dbf12[_0xd9ce('0x3b')][_0xd9ce('0x48')]+'%'};return _0x27163f;})});}_0x3b86d0=_[_0xd9ce('0x64')]({},_0x3b86d0,_0x1dbf12['options']);return _0x3e19c6[_0xd9ce('0x6b')](_0x3b86d0);}})['then'](function(_0x557f7c){if(_0x557f7c){_0x2c727a=_0x557f7c[_0xd9ce('0x41')];if(!_0x1dbf12[_0xd9ce('0x3b')][_0xd9ce('0x42')](_0xd9ce('0x43'))){_0x3b86d0[_0xd9ce('0x20')]=qs['limit'](_0x1dbf12[_0xd9ce('0x3b')][_0xd9ce('0x20')]);_0x3b86d0[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x1dbf12[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}return _0x3e19c6[_0xd9ce('0x6b')](_0x3b86d0);}})[_0xd9ce('0x27')](function(_0x5eee4a){if(_0x5eee4a){return _0x5eee4a?{'count':_0x2c727a,'rows':_0x5eee4a}:null;}})[_0xd9ce('0x27')](respondWithResult(_0x43444c,null))[_0xd9ce('0x4f')](handleError(_0x43444c,null));};exports[_0xd9ce('0x6d')]=function(_0x36be84,_0x456fa2,_0x27679b){var _0x498100=_0x36be84[_0xd9ce('0x5b')][_0xd9ce('0x6e')];var _0x2693d8=_[_0xd9ce('0x2c')](_0x498100,'id');return db[_0xd9ce('0x6c')]['findAll']({'where':{'id':_0x2693d8},'attributes':['id'],'include':[{'model':db[_0xd9ce('0x6f')],'as':'Agents','attributes':['id',_0xd9ce('0x30'),_0xd9ce('0x70'),_0xd9ce('0x71'),_0xd9ce('0x72')],'raw':!![]}]})[_0xd9ce('0x27')](function(_0x4adf32){if(_0x4adf32){var _0x3b456e=_[_0xd9ce('0x73')](_0x4adf32,function(_0x215ee3){var _0x2d7dc2=_0x215ee3[_0xd9ce('0x28')]({'plain':!![]});_0x2d7dc2['Agents'][_0xd9ce('0x74')](function(_0x430c36){_0x430c36[_0xd9ce('0x75')]=_['find'](_0x498100,{'id':_0x2d7dc2['id']})['penalty'];});return _0x2d7dc2['Agents'];});return db[_0xd9ce('0x36')][_0xd9ce('0x2f')]({'where':{'id':_0x36be84[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](function(_0x2d0975){return db[_0xd9ce('0x76')][_0xd9ce('0x77')](function(_0x59de43){return _0x2d0975[_0xd9ce('0x6d')](_0x2693d8,{'transaction':_0x59de43})[_0xd9ce('0x27')](function(){return BPromise[_0xd9ce('0x78')](_0x498100,function(_0x3cecb7){return db[_0xd9ce('0x79')][_0xd9ce('0x7a')]({'TeamId':_0x3cecb7['id'],'VoiceQueueId':_0x36be84[_0xd9ce('0x51')]['id'],'penalty':_0x3cecb7[_0xd9ce('0x75')]},{'transaction':_0x59de43});});})[_0xd9ce('0x27')](function(){return BPromise['each'](_0x3b456e,function(_0x1dbcfd){return db[_0xd9ce('0x7b')][_0xd9ce('0x7c')]({'where':{'UserId':_0x1dbcfd['id'],'VoiceQueueId':_0x36be84['params']['id']},'defaults':{'penalty':_0x1dbcfd[_0xd9ce('0x75')]},'transaction':_0x59de43});});})['then'](function(){return BPromise['each'](_[_0xd9ce('0x48')](_0x3b456e,{'online':!![]}),function(_0x564aeb){return db['UserVoiceQueueRt'][_0xd9ce('0x7a')]({'membername':_0x564aeb['name'],'UserId':_0x564aeb['id'],'queue_name':_0x2d0975[_0xd9ce('0x30')],'VoiceQueueId':_0x2d0975['id'],'interface':_[_0xd9ce('0x7d')](_0x564aeb[_0xd9ce('0x72')])?util[_0xd9ce('0x7e')](_0xd9ce('0x7f'),_0x564aeb[_0xd9ce('0x30')]):_0x564aeb[_0xd9ce('0x72')],'paused':_0x564aeb[_0xd9ce('0x71')]||![],'penalty':_0x564aeb[_0xd9ce('0x75')]},{'transaction':_0x59de43});});})[_0xd9ce('0x27')](function(){_0x3b456e['forEach'](function(_0x13fdba){socket[_0xd9ce('0x80')](_0xd9ce('0x81'),{'UserId':_0x13fdba['id'],'VoiceQueueId':_0x2d0975['id']});});});});});}})[_0xd9ce('0x27')](respondWithStatusCode(_0x456fa2,null))[_0xd9ce('0x4f')](handleError(_0x456fa2,null));};exports['removeTeams']=function(_0x1bed0f,_0x4784ed,_0x1d6c18){return db['Team'][_0xd9ce('0x4d')]({'where':{'id':_0x1bed0f[_0xd9ce('0x3b')][_0xd9ce('0x82')]},'attributes':['id'],'include':[{'model':db[_0xd9ce('0x6f')],'as':_0xd9ce('0x83'),'attributes':['id'],'raw':!![]}]})[_0xd9ce('0x27')](handleEntityNotFound(_0x4784ed,null))[_0xd9ce('0x27')](function(_0x59983f){var _0x12ab7b=_['map'](_0x59983f,'id');var _0x2edff3=[];var _0x59d94b=[];var _0x1de048=squel['select']();_0x1de048['field'](_0xd9ce('0x84'))['from'](_0xd9ce('0x85'),'tq')[_0xd9ce('0x86')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xd9ce('0x46')]('VoiceQueueId\x20=\x20?',_0x1bed0f[_0xd9ce('0x51')]['id']);for(var _0x579001=0x0;_0x579001<_0x59983f[_0xd9ce('0x41')];_0x579001+=0x1){let _0x3669ed=_0x59983f[_0x579001];for(var _0x249d52=0x0;_0x249d52<_0x3669ed[_0xd9ce('0x83')][_0xd9ce('0x41')];_0x249d52+=0x1){let _0x53e227=_0x3669ed[_0xd9ce('0x83')][_0x249d52];var _0x14dac9=_0x1de048[_0xd9ce('0x59')]();_0x14dac9[_0xd9ce('0x46')](_0xd9ce('0x87'),_0x53e227['id']);_0x59d94b[_0xd9ce('0x88')](db[_0xd9ce('0x76')]['query'](_0x14dac9[_0xd9ce('0x89')](),{'type':db[_0xd9ce('0x76')][_0xd9ce('0x8a')][_0xd9ce('0x8b')]})[_0xd9ce('0x27')](function(_0x4164d1){if(_0x4164d1[_0xd9ce('0x41')]===0x1){return _0x53e227['id'];}else{var _0x329d7b=_[_0xd9ce('0x8c')](_['map'](_0x4164d1,_0xd9ce('0x8d')),function(_0x144738){return _[_0xd9ce('0x8e')](_0x12ab7b,_0x144738);});if(_0x329d7b){return _0x53e227['id'];}}}));}}return BPromise[_0xd9ce('0x8f')](_0x59d94b)[_0xd9ce('0x27')](function(_0x126dd5){_0x2edff3=_(_0x2edff3)['union'](_0x126dd5)[_0xd9ce('0x90')]()[_0xd9ce('0x2d')]();return db[_0xd9ce('0x36')][_0xd9ce('0x2f')]({'where':{'id':_0x1bed0f[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](function(_0x4cb0f0){return db[_0xd9ce('0x76')][_0xd9ce('0x77')](function(_0x3f4822){return _0x4cb0f0[_0xd9ce('0x91')](_0x1bed0f[_0xd9ce('0x3b')]['ids'],{'transaction':_0x3f4822})[_0xd9ce('0x27')](function(){if(!_[_0xd9ce('0x92')](_0x2edff3)){return _0x4cb0f0[_0xd9ce('0x93')](_0x2edff3,{'transaction':_0x3f4822})[_0xd9ce('0x27')](function(){return db[_0xd9ce('0x94')][_0xd9ce('0x32')]({'where':{'VoiceQueueId':_0x1bed0f[_0xd9ce('0x51')]['id'],'UserId':_0x2edff3},'transaction':_0x3f4822});});}})['then'](function(){_0x2edff3['forEach'](function(_0x4fb716){socket[_0xd9ce('0x80')](_0xd9ce('0x95'),{'UserId':_0x4fb716,'VoiceQueueId':_0x4cb0f0['id']});});});});});});})['then'](respondWithStatusCode(_0x4784ed,null))[_0xd9ce('0x4f')](handleError(_0x4784ed,null));};exports[_0xd9ce('0x96')]=function(_0x4aa02c,_0x4b05e8,_0x3f34c0){var _0x3d0566,_0x2b6c52;return db[_0xd9ce('0x36')][_0xd9ce('0x2f')]({'where':{'id':_0x4aa02c[_0xd9ce('0x51')]['id']}})['then'](handleEntityNotFound(_0x4b05e8,null))[_0xd9ce('0x27')](function(_0x138cee){if(_0x138cee){_0x2b6c52=_0x138cee;return _0x138cee[_0xd9ce('0x96')](_0x4aa02c['body']['ids'],_[_0xd9ce('0x5c')](_0x4aa02c[_0xd9ce('0x5b')],['ids','id'])||{})[_0xd9ce('0x97')](function(_0x223fba){for(var _0x50b1ad=0x0;_0x50b1ad<_0x4aa02c[_0xd9ce('0x5b')][_0xd9ce('0x82')][_0xd9ce('0x41')];_0x50b1ad+=0x1){socket[_0xd9ce('0x80')](_0xd9ce('0x81'),{'UserId':Number(_0x4aa02c[_0xd9ce('0x5b')][_0xd9ce('0x82')][_0x50b1ad]),'VoiceQueueId':Number(_0x4aa02c[_0xd9ce('0x51')]['id'])});}return _0x223fba;});}})[_0xd9ce('0x27')](function(_0x4409c6){_0x3d0566=_0x4409c6||[];if(_0x2b6c52){return db[_0xd9ce('0x6f')][_0xd9ce('0x4d')]({'where':{'id':_0x4aa02c['body']['ids']},'attributes':['id','name',_0xd9ce('0x70'),_0xd9ce('0x71'),'interface'],'raw':!![]});}})['then'](function(_0x50a165){if(!_[_0xd9ce('0x92')](_0x50a165)){var _0xb88a4e=[];for(var _0x5e8437=0x0;_0x5e8437<_0x50a165[_0xd9ce('0x41')];_0x5e8437++){if(_0x50a165[_0x5e8437][_0xd9ce('0x70')]){_0xb88a4e['push'](db[_0xd9ce('0x94')][_0xd9ce('0x7a')]({'membername':_0x50a165[_0x5e8437][_0xd9ce('0x30')],'UserId':_0x50a165[_0x5e8437]['id'],'queue_name':_0x2b6c52[_0xd9ce('0x30')],'VoiceQueueId':_0x2b6c52['id'],'interface':_[_0xd9ce('0x7d')](_0x50a165[_0x5e8437][_0xd9ce('0x72')])?util[_0xd9ce('0x7e')](_0xd9ce('0x7f'),_0x50a165[_0x5e8437]['name']):_0x50a165[_0x5e8437][_0xd9ce('0x72')],'paused':_0x50a165[_0x5e8437][_0xd9ce('0x71')]||![],'penalty':_0x4aa02c['body'][_0xd9ce('0x75')]||0x0}));}}return BPromise[_0xd9ce('0x8f')](_0xb88a4e);}})[_0xd9ce('0x27')](function(){return _0x3d0566;})[_0xd9ce('0x27')](respondWithResult(_0x4b05e8,null))[_0xd9ce('0x4f')](handleError(_0x4b05e8,null));};exports[_0xd9ce('0x93')]=function(_0xddf8a0,_0xca457b,_0x63da06){return db[_0xd9ce('0x36')]['find']({'where':{'id':_0xddf8a0[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0xca457b,null))[_0xd9ce('0x27')](function(_0x5d7b28){if(_0x5d7b28){return _0x5d7b28['removeAgents'](_0xddf8a0[_0xd9ce('0x3b')][_0xd9ce('0x82')])[_0xd9ce('0x27')](function(){if(_[_0xd9ce('0x98')](_0xddf8a0[_0xd9ce('0x3b')]['ids'])){for(var _0x248c05=0x0;_0x248c05<_0xddf8a0[_0xd9ce('0x3b')][_0xd9ce('0x82')]['length'];_0x248c05+=0x1){socket[_0xd9ce('0x80')](_0xd9ce('0x95'),{'UserId':Number(_0xddf8a0[_0xd9ce('0x3b')][_0xd9ce('0x82')][_0x248c05]),'VoiceQueueId':Number(_0xddf8a0[_0xd9ce('0x51')]['id'])});}}else{socket['emit'](_0xd9ce('0x95'),{'UserId':Number(_0xddf8a0['query'][_0xd9ce('0x82')]),'VoiceQueueId':Number(_0xddf8a0[_0xd9ce('0x51')]['id'])});}});}})['then'](function(_0x48bbae){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0xddf8a0[_0xd9ce('0x51')]['id'],'UserId':_0xddf8a0[_0xd9ce('0x3b')][_0xd9ce('0x82')]}})[_0xd9ce('0x27')](function(){return _0x48bbae;});})[_0xd9ce('0x27')](respondWithStatusCode(_0xca457b,null))['catch'](handleError(_0xca457b,null));};exports['getAgents']=function(_0x30ddd9,_0x2ee5f5,_0x598446){var _0x20d5f9={};var _0xafa2f0={};var _0x17f91c;var _0x55f656;return db['VoiceQueue'][_0xd9ce('0x61')]({'where':{'id':_0x30ddd9[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x2ee5f5,null))[_0xd9ce('0x27')](function(_0x1a912d){if(_0x1a912d){_0x17f91c=_0x1a912d;_0xafa2f0[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0x6f')]['rawAttributes']);_0xafa2f0[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x30ddd9[_0xd9ce('0x3b')]);_0xafa2f0[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0xafa2f0['model'],_0xafa2f0[_0xd9ce('0x3b')]);_0x20d5f9[_0xd9ce('0x40')]=_['intersection'](_0xafa2f0['model'],qs[_0xd9ce('0x3f')](_0x30ddd9[_0xd9ce('0x3b')][_0xd9ce('0x3f')]));_0x20d5f9[_0xd9ce('0x40')]=_0x20d5f9[_0xd9ce('0x40')]['length']?_0x20d5f9[_0xd9ce('0x40')]:_0xafa2f0[_0xd9ce('0x3a')];_0x20d5f9[_0xd9ce('0x44')]=qs['sort'](_0x30ddd9[_0xd9ce('0x3b')]['sort']);_0x20d5f9[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_[_0xd9ce('0x47')](_0x30ddd9['query'],_0xafa2f0[_0xd9ce('0x3d')]));if(_0x30ddd9[_0xd9ce('0x3b')][_0xd9ce('0x48')]){_0x20d5f9[_0xd9ce('0x46')]=_['merge'](_0x20d5f9['where'],{'$or':_[_0xd9ce('0x2c')](_0x20d5f9[_0xd9ce('0x40')],function(_0x3fb258){var _0x59e922={};_0x59e922[_0x3fb258]={'$like':'%'+_0x30ddd9['query'][_0xd9ce('0x48')]+'%'};return _0x59e922;})});}_0x20d5f9=_[_0xd9ce('0x64')]({},_0x20d5f9,_0x30ddd9[_0xd9ce('0x4a')]);return _0x17f91c['getAgents'](_0x20d5f9);}})[_0xd9ce('0x27')](function(_0x55c600){if(_0x55c600){_0x55f656=_0x55c600[_0xd9ce('0x41')];if(!_0x30ddd9[_0xd9ce('0x3b')][_0xd9ce('0x42')](_0xd9ce('0x43'))){_0x20d5f9['limit']=qs[_0xd9ce('0x20')](_0x30ddd9[_0xd9ce('0x3b')][_0xd9ce('0x20')]);_0x20d5f9[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x30ddd9[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}return _0x17f91c[_0xd9ce('0x99')](_0x20d5f9);}})[_0xd9ce('0x27')](function(_0x4cd9c8){if(_0x4cd9c8){return _0x4cd9c8?{'count':_0x55f656,'rows':_0x4cd9c8}:null;}})['then'](respondWithResult(_0x2ee5f5,null))[_0xd9ce('0x4f')](handleError(_0x2ee5f5,null));};exports['getMembers']=function(_0x46dd9c,_0x302e18,_0x271294){var _0x1c33fa={};var _0x36d8ff={};var _0x1807b8;var _0x3e072b;return db[_0xd9ce('0x36')]['findOne']({'where':{'id':_0x46dd9c[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x302e18,null))[_0xd9ce('0x27')](function(_0x1f869f){if(_0x1f869f){_0x1807b8=_0x1f869f;_0x36d8ff[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0x94')][_0xd9ce('0x37')]);_0x36d8ff[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x46dd9c[_0xd9ce('0x3b')]);_0x36d8ff[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0x36d8ff[_0xd9ce('0x3a')],_0x36d8ff[_0xd9ce('0x3b')]);_0x1c33fa[_0xd9ce('0x40')]=_['intersection'](_0x36d8ff[_0xd9ce('0x3a')],qs['fields'](_0x46dd9c[_0xd9ce('0x3b')][_0xd9ce('0x3f')]));_0x1c33fa[_0xd9ce('0x40')]=_0x1c33fa[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x1c33fa[_0xd9ce('0x40')]:_0x36d8ff['model'];_0x1c33fa[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x46dd9c[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x1c33fa[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_['pick'](_0x46dd9c[_0xd9ce('0x3b')],_0x36d8ff[_0xd9ce('0x3d')]));if(_0x46dd9c[_0xd9ce('0x3b')][_0xd9ce('0x48')]){_0x1c33fa[_0xd9ce('0x46')]=_[_0xd9ce('0x64')](_0x1c33fa[_0xd9ce('0x46')],{'$or':_[_0xd9ce('0x2c')](_0x1c33fa[_0xd9ce('0x40')],function(_0x561992){var _0xa61dc={};_0xa61dc[_0x561992]={'$like':'%'+_0x46dd9c[_0xd9ce('0x3b')][_0xd9ce('0x48')]+'%'};return _0xa61dc;})});}_0x1c33fa=_[_0xd9ce('0x64')]({},_0x1c33fa,_0x46dd9c[_0xd9ce('0x4a')]);return _0x1807b8[_0xd9ce('0x9a')](_0x1c33fa);}})[_0xd9ce('0x27')](function(_0x65e849){if(_0x65e849){_0x3e072b=_0x65e849[_0xd9ce('0x41')];if(!_0x46dd9c[_0xd9ce('0x3b')][_0xd9ce('0x42')](_0xd9ce('0x43'))){_0x1c33fa[_0xd9ce('0x20')]=qs['limit'](_0x46dd9c['query'][_0xd9ce('0x20')]);_0x1c33fa[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x46dd9c[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}return _0x1807b8['getMembers'](_0x1c33fa);}})[_0xd9ce('0x27')](function(_0x48ba44){return _0x48ba44?{'count':_0x3e072b,'rows':_0x48ba44}:null;})[_0xd9ce('0x27')](respondWithResult(_0x302e18,null))[_0xd9ce('0x4f')](handleError(_0x302e18,null));};exports[_0xd9ce('0x9b')]=function(_0x557c7a,_0x40f2a7,_0x15ba6f){var _0x57cf71={};var _0x4d8e3e={};var _0x3e8912;var _0x5789d2;return db[_0xd9ce('0x36')][_0xd9ce('0x61')]({'where':{'id':_0x557c7a['params']['id']}})['then'](handleEntityNotFound(_0x40f2a7,null))[_0xd9ce('0x27')](function(_0x392a26){if(_0x392a26){_0x3e8912=_0x392a26;_0x4d8e3e[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db['CmList']['rawAttributes']);_0x4d8e3e[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x557c7a[_0xd9ce('0x3b')]);_0x4d8e3e[_0xd9ce('0x3d')]=_[_0xd9ce('0x3e')](_0x4d8e3e['model'],_0x4d8e3e[_0xd9ce('0x3b')]);_0x57cf71[_0xd9ce('0x40')]=_[_0xd9ce('0x3e')](_0x4d8e3e[_0xd9ce('0x3a')],qs['fields'](_0x557c7a['query'][_0xd9ce('0x3f')]));_0x57cf71['attributes']=_0x57cf71[_0xd9ce('0x40')][_0xd9ce('0x41')]?_0x57cf71['attributes']:_0x4d8e3e['model'];_0x57cf71[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x557c7a[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x57cf71[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_['pick'](_0x557c7a[_0xd9ce('0x3b')],_0x4d8e3e[_0xd9ce('0x3d')]));if(_0x557c7a[_0xd9ce('0x3b')][_0xd9ce('0x48')]){_0x57cf71['where']=_[_0xd9ce('0x64')](_0x57cf71[_0xd9ce('0x46')],{'$or':_['map'](_0x57cf71[_0xd9ce('0x40')],function(_0x52085e){var _0x448794={};_0x448794[_0x52085e]={'$like':'%'+_0x557c7a['query'][_0xd9ce('0x48')]+'%'};return _0x448794;})});}_0x57cf71=_['merge']({},_0x57cf71,_0x557c7a[_0xd9ce('0x4a')]);return _0x3e8912['getLists'](_0x57cf71);}})['then'](function(_0x4868a2){if(_0x4868a2){_0x5789d2=_0x4868a2['length'];if(!_0x557c7a[_0xd9ce('0x3b')][_0xd9ce('0x42')]('nolimit')){_0x57cf71[_0xd9ce('0x20')]=qs[_0xd9ce('0x20')](_0x557c7a[_0xd9ce('0x3b')]['limit']);_0x57cf71[_0xd9ce('0x1e')]=qs[_0xd9ce('0x1e')](_0x557c7a[_0xd9ce('0x3b')]['offset']);}return _0x3e8912[_0xd9ce('0x9b')](_0x57cf71);}})['then'](function(_0x4f3cbb){if(_0x4f3cbb){return _0x4f3cbb?{'count':_0x5789d2,'rows':_0x4f3cbb}:null;}})[_0xd9ce('0x27')](respondWithResult(_0x40f2a7,null))[_0xd9ce('0x4f')](handleError(_0x40f2a7,null));};exports[_0xd9ce('0x9c')]=function(_0x9cb54d,_0x294c78,_0x1ef72a){var _0xebf732,_0x1c50d3;return db[_0xd9ce('0x36')][_0xd9ce('0x2f')]({'where':{'id':_0x9cb54d[_0xd9ce('0x51')]['id']}})['then'](handleEntityNotFound(_0x294c78,null))[_0xd9ce('0x27')](function(_0x3a533){if(_0x3a533){_0x1c50d3=_0x3a533;return _0x3a533[_0xd9ce('0x9c')](_0x9cb54d[_0xd9ce('0x5b')][_0xd9ce('0x82')],_[_0xd9ce('0x5c')](_0x9cb54d[_0xd9ce('0x5b')],[_0xd9ce('0x82'),'id'])||{});}return null;})['spread'](function(_0x152c09){var _0x132288;_0xebf732=_0x152c09||[];var _0x3072bc=[];if(_0x152c09){for(var _0x271fe9=0x0;_0x271fe9<_0x152c09['length'];_0x271fe9+=0x1){var _0x19f8c2=_0x152c09[_0x271fe9][_0xd9ce('0x28')]({'plain':!![]});_0x1c50d3[_0xd9ce('0x9d')]=_0x9cb54d[_0xd9ce('0x5b')][_0xd9ce('0x9d')]?_0x9cb54d[_0xd9ce('0x5b')][_0xd9ce('0x9d')]:_0x1c50d3[_0xd9ce('0x9d')];switch(_0x1c50d3[_0xd9ce('0x9d')]){case _0xd9ce('0x9e'):_0x132288=squel[_0xd9ce('0x9f')]()[_0xd9ce('0xa0')](_0xd9ce('0xa1'))[_0xd9ce('0xa2')]([_0xd9ce('0xa3'),_0xd9ce('0xa4'),_0xd9ce('0xa5'),'ListId','VoiceQueueId',_0xd9ce('0x5a'),_0xd9ce('0x5d')],squel[_0xd9ce('0xa6')]()[_0xd9ce('0xa7')](_0xd9ce('0xa3'),_0xd9ce('0xa3'))[_0xd9ce('0xa7')]('NOW()',_0xd9ce('0xa4'))[_0xd9ce('0xa7')]('id',_0xd9ce('0xa5'))[_0xd9ce('0xa7')](_0x19f8c2[_0xd9ce('0xa8')][_0xd9ce('0x89')](),'ListId')[_0xd9ce('0xa7')](_0x9cb54d[_0xd9ce('0x51')]['id']['toString'](),_0xd9ce('0x63'))[_0xd9ce('0xa7')](_0xd9ce('0xa9'),'createdAt')[_0xd9ce('0xa7')](_0xd9ce('0xa9'),_0xd9ce('0x5d'))[_0xd9ce('0xaa')](_0xd9ce('0xab'))[_0xd9ce('0x46')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x19f8c2[_0xd9ce('0xa8')][_0xd9ce('0x89')]())['where'](_0xd9ce('0xac'))[_0xd9ce('0x46')]('phone\x20NOT\x20IN\x20(?)',squel[_0xd9ce('0xa6')]()['field']('COALESCE(calleridnum,\x27\x27)')[_0xd9ce('0xaa')](_0xd9ce('0xad'))[_0xd9ce('0x46')](_0xd9ce('0xae'),_0x9cb54d[_0xd9ce('0x51')]['id']['toString']()))[_0xd9ce('0x46')](_0xd9ce('0xaf'),squel[_0xd9ce('0xa6')]()[_0xd9ce('0xa7')]('COALESCE(phone,\x27\x27)')[_0xd9ce('0xaa')]('cm_hopper')[_0xd9ce('0x46')](_0xd9ce('0xae'),_0x9cb54d[_0xd9ce('0x51')]['id'][_0xd9ce('0x89')]())))[_0xd9ce('0x89')]();break;case _0xd9ce('0xb0'):_0x132288=squel['insert']()[_0xd9ce('0xa0')](_0xd9ce('0xa1'))[_0xd9ce('0xa2')]([_0xd9ce('0xa3'),'scheduledAt','ContactId',_0xd9ce('0xb1'),_0xd9ce('0x63'),_0xd9ce('0x5a'),_0xd9ce('0x5d')],squel[_0xd9ce('0xa6')]()['field'](_0xd9ce('0xa3'),'phone')['field']('NOW()',_0xd9ce('0xa4'))[_0xd9ce('0xa7')]('id',_0xd9ce('0xa5'))[_0xd9ce('0xa7')](_0x19f8c2['CmListId']['toString'](),_0xd9ce('0xb1'))[_0xd9ce('0xa7')](_0x9cb54d[_0xd9ce('0x51')]['id'][_0xd9ce('0x89')](),'VoiceQueueId')[_0xd9ce('0xa7')](_0xd9ce('0xa9'),'createdAt')[_0xd9ce('0xa7')](_0xd9ce('0xa9'),_0xd9ce('0x5d'))['from'](_0xd9ce('0xab'))[_0xd9ce('0x46')](_0xd9ce('0xb2'))[_0xd9ce('0x46')](_0xd9ce('0xb3'),_0x19f8c2[_0xd9ce('0xa8')][_0xd9ce('0x89')]())[_0xd9ce('0x46')](_0xd9ce('0xac'))[_0xd9ce('0x46')](_0xd9ce('0xaf'),squel[_0xd9ce('0xa6')]()[_0xd9ce('0xa7')](_0xd9ce('0xb4'))['from'](_0xd9ce('0xa1'))['where']('VoiceQueueId\x20=\x20?',_0x9cb54d[_0xd9ce('0x51')]['id'][_0xd9ce('0x89')]())))[_0xd9ce('0x89')]();break;default:_0x132288=squel[_0xd9ce('0x9f')]()[_0xd9ce('0xa0')](_0xd9ce('0xa1'))[_0xd9ce('0xa2')](['phone',_0xd9ce('0xa4'),_0xd9ce('0xa5'),_0xd9ce('0xb1'),_0xd9ce('0x63'),'createdAt',_0xd9ce('0x5d')],squel['select']()[_0xd9ce('0xa7')](_0xd9ce('0xa3'),_0xd9ce('0xa3'))[_0xd9ce('0xa7')](_0xd9ce('0xa9'),_0xd9ce('0xa4'))[_0xd9ce('0xa7')]('id','ContactId')[_0xd9ce('0xa7')](_0x19f8c2['CmListId'][_0xd9ce('0x89')](),'ListId')[_0xd9ce('0xa7')](_0x9cb54d[_0xd9ce('0x51')]['id'][_0xd9ce('0x89')](),_0xd9ce('0x63'))[_0xd9ce('0xa7')](_0xd9ce('0xa9'),_0xd9ce('0x5a'))['field'](_0xd9ce('0xa9'),_0xd9ce('0x5d'))[_0xd9ce('0xaa')](_0xd9ce('0xab'))[_0xd9ce('0x46')](_0xd9ce('0xb2'))[_0xd9ce('0x46')](_0xd9ce('0xb3'),_0x19f8c2[_0xd9ce('0xa8')]['toString']())[_0xd9ce('0x46')](_0xd9ce('0xac')))[_0xd9ce('0x89')]();}_0x3072bc[_0xd9ce('0x88')](db[_0xd9ce('0x76')][_0xd9ce('0x3b')](_0x132288));}return BPromise[_0xd9ce('0x8f')](_0x3072bc);}})['then'](function(){return _0xebf732;})[_0xd9ce('0x27')](respondWithResult(_0x294c78,null))[_0xd9ce('0x4f')](handleError(_0x294c78,null));};exports['removeLists']=function(_0x85ee37,_0x28ba3f,_0x104c1a){return db[_0xd9ce('0x36')]['find']({'where':{'id':_0x85ee37['params']['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x28ba3f,null))[_0xd9ce('0x27')](function(_0x120d90){if(_0x120d90){return _0x120d90[_0xd9ce('0xb5')](_0x85ee37[_0xd9ce('0x3b')][_0xd9ce('0x82')]);}})[_0xd9ce('0x27')](function(_0xd6bcd0){if(_0xd6bcd0){return db[_0xd9ce('0x62')][_0xd9ce('0x32')]({'where':{'ListId':_0x85ee37[_0xd9ce('0x3b')][_0xd9ce('0x82')],'VoiceQueueId':_0x85ee37[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](function(){return _0xd6bcd0;});}})['then'](respondWithStatusCode(_0x28ba3f,null))[_0xd9ce('0x4f')](handleError(_0x28ba3f,null));};exports[_0xd9ce('0xb6')]=function(_0x3fae55,_0x1658b4,_0x4d7be1){var _0x244d62={};var _0xaa7a3a={};var _0x5f0759;var _0x48ad3a;return db[_0xd9ce('0x36')][_0xd9ce('0x61')]({'where':{'id':_0x3fae55[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x1658b4,null))['then'](function(_0x45b187){if(_0x45b187){_0x5f0759=_0x45b187;_0xaa7a3a[_0xd9ce('0x3a')]=_[_0xd9ce('0x3c')](db[_0xd9ce('0xb7')][_0xd9ce('0x37')]);_0xaa7a3a[_0xd9ce('0x3b')]=_[_0xd9ce('0x3c')](_0x3fae55['query']);_0xaa7a3a[_0xd9ce('0x3d')]=_['intersection'](_0xaa7a3a[_0xd9ce('0x3a')],_0xaa7a3a[_0xd9ce('0x3b')]);_0x244d62['attributes']=_[_0xd9ce('0x3e')](_0xaa7a3a['model'],qs['fields'](_0x3fae55[_0xd9ce('0x3b')]['fields']));_0x244d62[_0xd9ce('0x40')]=_0x244d62['attributes']['length']?_0x244d62[_0xd9ce('0x40')]:_0xaa7a3a[_0xd9ce('0x3a')];_0x244d62[_0xd9ce('0x44')]=qs[_0xd9ce('0x45')](_0x3fae55[_0xd9ce('0x3b')][_0xd9ce('0x45')]);_0x244d62[_0xd9ce('0x46')]=qs[_0xd9ce('0x3d')](_[_0xd9ce('0x47')](_0x3fae55[_0xd9ce('0x3b')],_0xaa7a3a[_0xd9ce('0x3d')]));if(_0x3fae55[_0xd9ce('0x3b')][_0xd9ce('0x48')]){_0x244d62[_0xd9ce('0x46')]=_[_0xd9ce('0x64')](_0x244d62['where'],{'$or':_['map'](_0x244d62[_0xd9ce('0x40')],function(_0x474bec){var _0x377ef1={};_0x377ef1[_0x474bec]={'$like':'%'+_0x3fae55[_0xd9ce('0x3b')][_0xd9ce('0x48')]+'%'};return _0x377ef1;})});}_0x244d62=_['merge']({},_0x244d62,_0x3fae55[_0xd9ce('0x4a')]);return _0x5f0759['getBlackLists'](_0x244d62);}})[_0xd9ce('0x27')](function(_0x4a785e){if(_0x4a785e){_0x48ad3a=_0x4a785e['length'];if(!_0x3fae55[_0xd9ce('0x3b')][_0xd9ce('0x42')](_0xd9ce('0x43'))){_0x244d62['limit']=qs[_0xd9ce('0x20')](_0x3fae55['query']['limit']);_0x244d62['offset']=qs[_0xd9ce('0x1e')](_0x3fae55[_0xd9ce('0x3b')][_0xd9ce('0x1e')]);}return _0x5f0759['getBlackLists'](_0x244d62);}})[_0xd9ce('0x27')](function(_0x5332e4){if(_0x5332e4){return _0x5332e4?{'count':_0x48ad3a,'rows':_0x5332e4}:null;}})['then'](respondWithResult(_0x1658b4,null))[_0xd9ce('0x4f')](handleError(_0x1658b4,null));};exports['addBlackLists']=function(_0x4a7bd3,_0x3920f4,_0x2515eb){var _0xd5d5fd,_0x5530fe;return db[_0xd9ce('0x36')][_0xd9ce('0x2f')]({'where':{'id':_0x4a7bd3['params']['id']}})['then'](handleEntityNotFound(_0x3920f4,null))[_0xd9ce('0x27')](function(_0x156d08){if(_0x156d08){_0x5530fe=_0x156d08;return _0x156d08[_0xd9ce('0xb8')](_0x4a7bd3[_0xd9ce('0x5b')]['ids'],_[_0xd9ce('0x5c')](_0x4a7bd3[_0xd9ce('0x5b')],['ids','id'])||{});}return null;})[_0xd9ce('0x97')](function(_0x15c0e5){var _0x109a83;_0xd5d5fd=_0x15c0e5||[];var _0x377143=[];if(_0x15c0e5){for(var _0x5cab85=0x0;_0x5cab85<_0x15c0e5[_0xd9ce('0x41')];_0x5cab85+=0x1){var _0x331c02=_0x15c0e5[_0x5cab85]['get']({'plain':!![]});_0x109a83=squel[_0xd9ce('0x9f')]()[_0xd9ce('0xa0')](_0xd9ce('0xb9'))[_0xd9ce('0xa2')]([_0xd9ce('0xa3'),_0xd9ce('0xa5'),_0xd9ce('0xb1'),_0xd9ce('0x63'),_0xd9ce('0x5a'),_0xd9ce('0x5d')],squel['select']()[_0xd9ce('0xa7')]('phone','phone')[_0xd9ce('0xa7')]('id','ContactId')[_0xd9ce('0xa7')](_0x331c02[_0xd9ce('0xa8')]['toString'](),_0xd9ce('0xb1'))['field'](_0x4a7bd3[_0xd9ce('0x51')]['id'][_0xd9ce('0x89')](),'VoiceQueueId')['field'](_0xd9ce('0xa9'),_0xd9ce('0x5a'))[_0xd9ce('0xa7')]('NOW()','updatedAt')[_0xd9ce('0xaa')](_0xd9ce('0xab'))[_0xd9ce('0x46')](_0xd9ce('0xb2'))['where'](_0xd9ce('0xb3'),_0x331c02['CmListId']['toString']())[_0xd9ce('0x46')]('phone\x20IS\x20NOT\x20NULL'))[_0xd9ce('0x89')]();_0x377143[_0xd9ce('0x88')](db[_0xd9ce('0x76')]['query'](_0x109a83));}return BPromise[_0xd9ce('0x8f')](_0x377143);}})['then'](function(){return _0xd5d5fd;})[_0xd9ce('0x27')](respondWithResult(_0x3920f4,null))['catch'](handleError(_0x3920f4,null));};exports['removeBlackLists']=function(_0x5003ed,_0x52ecfd,_0x5d658a){return db['VoiceQueue'][_0xd9ce('0x2f')]({'where':{'id':_0x5003ed[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](handleEntityNotFound(_0x52ecfd,null))['then'](function(_0x12dd9a){if(_0x12dd9a){return _0x12dd9a[_0xd9ce('0xba')](_0x5003ed['query'][_0xd9ce('0x82')]);}})[_0xd9ce('0x27')](function(_0x3e81de){if(_0x3e81de){return db[_0xd9ce('0x6a')][_0xd9ce('0x32')]({'where':{'ListId':_0x5003ed[_0xd9ce('0x3b')]['ids'],'VoiceQueueId':_0x5003ed[_0xd9ce('0x51')]['id']}})[_0xd9ce('0x27')](function(){return _0x3e81de;});}})['then'](respondWithStatusCode(_0x52ecfd,null))[_0xd9ce('0x4f')](handleError(_0x52ecfd,null));};
\ No newline at end of file
index d573412..3075675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca5=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ca5,0x104));var _0x59ca=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x9ca5[_0x1ab180];return _0xfb2c2d;};'use strict';var EventEmitter=require(_0x59ca('0x0'));var VoiceQueue=require(_0x59ca('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x59ca('0x2')](0x0);var events={'afterCreate':_0x59ca('0x3'),'afterUpdate':_0x59ca('0x4'),'afterDestroy':_0x59ca('0x5')};function emitEvent(_0x130598){return function(_0x34b57d,_0x17b54b,_0x353cdb){VoiceQueueEvents[_0x59ca('0x6')](_0x130598+':'+_0x34b57d['id'],_0x34b57d);VoiceQueueEvents[_0x59ca('0x6')](_0x130598,_0x34b57d);_0x353cdb(null);};}for(var e in events){if(events[_0x59ca('0x7')](e)){var event=events[e];VoiceQueue[_0x59ca('0x8')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0x2710=['events','../../mysqldb','VoiceQueue','setMaxListeners','remove','hook'];(function(_0x5302c2,_0x3716aa){var _0x4fce1f=function(_0x2980ff){while(--_0x2980ff){_0x5302c2['push'](_0x5302c2['shift']());}};_0x4fce1f(++_0x3716aa);}(_0x2710,0x1b6));var _0x0271=function(_0x25e14a,_0x5e0787){_0x25e14a=_0x25e14a-0x0;var _0x32749f=_0x2710[_0x25e14a];return _0x32749f;};'use strict';var EventEmitter=require(_0x0271('0x0'));var VoiceQueue=require(_0x0271('0x1'))['db'][_0x0271('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x0271('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x0271('0x4')};function emitEvent(_0x41fcd3){return function(_0x396cee,_0x3477d,_0x4f8081){VoiceQueueEvents['emit'](_0x41fcd3+':'+_0x396cee['id'],_0x396cee);VoiceQueueEvents['emit'](_0x41fcd3,_0x396cee);_0x4f8081(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x0271('0x5')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index 3d3e6e7..12933e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5a3241,_0x58e3ed){var _0x1088bd=function(_0x214e23){while(--_0x214e23){_0x5a3241['push'](_0x5a3241['shift']());}};_0x1088bd(++_0x58e3ed);}(_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 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':'voice_queues','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(_0x48df04,_0x1522b1){var _0x4de5fa=function(_0x3ae6db){while(--_0x3ae6db){_0x48df04['push'](_0x48df04['shift']());}};_0x4de5fa(++_0x1522b1);}(_0x008c,0x188));var _0xc008=function(_0x14a791,_0xee32e9){_0x14a791=_0x14a791-0x0;var _0x2150f3=_0x008c[_0x14a791];return _0x2150f3;};'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 35be06e..3557a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78e=['VoiceQueue,\x20%s,\x20%s','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','include','map','model','debug','ShowVoiceQueue','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then'];(function(_0x18a231,_0xcfb728){var _0x30fd8f=function(_0x5cc136){while(--_0x5cc136){_0x18a231['push'](_0x18a231['shift']());}};_0x30fd8f(++_0xcfb728);}(_0xb78e,0xc3));var _0xeb78=function(_0x4d705f,_0x101f88){_0x4d705f=_0x4d705f-0x0;var _0x4fd29e=_0xb78e[_0x4d705f];return _0x4fd29e;};'use strict';var _=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var moment=require('moment');var BPromise=require(_0xeb78('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb78('0x3'));var db=require(_0xeb78('0x4'))['db'];var utils=require(_0xeb78('0x5'));var logger=require(_0xeb78('0x6'))(_0xeb78('0x7'));var config=require(_0xeb78('0x8'));var jayson=require(_0xeb78('0x9'));var client=jayson[_0xeb78('0xa')][_0xeb78('0xb')]({'port':0x232a});config['redis']=_[_0xeb78('0xc')](config[_0xeb78('0xd')],{'host':_0xeb78('0xe'),'port':0x18eb});var socket=require(_0xeb78('0xf'))(new Redis(config[_0xeb78('0xd')]));require(_0xeb78('0x10'))[_0xeb78('0x11')](socket);function respondWithRpcPromise(_0x8e1c88,_0x8e4bff,_0x222144){return new BPromise(function(_0x4edad2,_0x232492){return client[_0xeb78('0x12')](_0x8e1c88,_0x222144)[_0xeb78('0x13')](function(_0x36581e){logger['info'](_0xeb78('0x14'),_0x8e4bff,'request\x20sent');logger['debug'](_0xeb78('0x15'),_0x8e4bff,_0xeb78('0x16'),JSON[_0xeb78('0x17')](_0x36581e));if(_0x36581e[_0xeb78('0x18')]){if(_0x36581e[_0xeb78('0x18')][_0xeb78('0x19')]===0x1f4){logger[_0xeb78('0x18')](_0xeb78('0x14'),_0x8e4bff,_0x36581e['error']['message']);return _0x232492(_0x36581e['error'][_0xeb78('0x1a')]);}logger[_0xeb78('0x18')](_0xeb78('0x14'),_0x8e4bff,_0x36581e[_0xeb78('0x18')][_0xeb78('0x1a')]);return _0x4edad2(_0x36581e[_0xeb78('0x18')]['message']);}else{logger[_0xeb78('0x1b')]('VoiceQueue,\x20%s,\x20%s',_0x8e4bff,'request\x20sent');_0x4edad2(_0x36581e[_0xeb78('0x1c')]['message']);}})[_0xeb78('0x1d')](function(_0x4fc702){logger[_0xeb78('0x18')](_0xeb78('0x14'),_0x8e4bff,_0x4fc702);_0x232492(_0x4fc702);});});}exports[_0xeb78('0x1e')]=function(_0x47338b){var _0xd14373=this;return new Promise(function(_0x5f5bd8,_0x9f6e3a){return db[_0xeb78('0x1f')][_0xeb78('0x20')]({'raw':_0x47338b[_0xeb78('0x21')]?_0x47338b[_0xeb78('0x21')][_0xeb78('0x22')]===undefined?!![]:![]:!![],'where':_0x47338b[_0xeb78('0x21')]?_0x47338b['options'][_0xeb78('0x23')]||null:null,'attributes':_0x47338b['options']?_0x47338b[_0xeb78('0x21')][_0xeb78('0x24')]||null:null,'limit':_0x47338b[_0xeb78('0x21')]?_0x47338b[_0xeb78('0x21')]['limit']||null:null,'include':_0x47338b[_0xeb78('0x21')]?_0x47338b[_0xeb78('0x21')][_0xeb78('0x25')]?_[_0xeb78('0x26')](_0x47338b['options'][_0xeb78('0x25')],function(_0xbe3199){return{'model':db[_0xbe3199[_0xeb78('0x27')]],'as':_0xbe3199['as'],'attributes':_0xbe3199['attributes'],'include':_0xbe3199['include']?_[_0xeb78('0x26')](_0xbe3199[_0xeb78('0x25')],function(_0x561c72){return{'model':db[_0x561c72[_0xeb78('0x27')]],'as':_0x561c72['as'],'attributes':_0x561c72[_0xeb78('0x24')],'include':_0x561c72[_0xeb78('0x25')]?_[_0xeb78('0x26')](_0x561c72['include'],function(_0x2b1fef){return{'model':db[_0x2b1fef['model']],'as':_0x2b1fef['as'],'attributes':_0x2b1fef[_0xeb78('0x24')]};}):[]};}):[]};}):[]:[]})[_0xeb78('0x13')](function(_0x381fc5){logger['info'](_0xeb78('0x1e'),_0x47338b);logger[_0xeb78('0x28')]('GetVoiceQueue',_0x47338b,JSON[_0xeb78('0x17')](_0x381fc5));_0x5f5bd8(_0x381fc5);})[_0xeb78('0x1d')](function(_0x585db1){logger[_0xeb78('0x18')](_0xeb78('0x1e'),_0x585db1[_0xeb78('0x1a')],_0x47338b);_0x9f6e3a(_0xd14373['error'](0x1f4,_0x585db1[_0xeb78('0x1a')]));});});};exports[_0xeb78('0x29')]=function(_0x18edf2){var _0x2cbc20=this;return new Promise(function(_0x59f883,_0x16c0da){return db['VoiceQueue'][_0xeb78('0x2a')]({'raw':_0x18edf2[_0xeb78('0x21')]?_0x18edf2['options'][_0xeb78('0x22')]===undefined?!![]:![]:!![],'where':_0x18edf2[_0xeb78('0x21')]?_0x18edf2[_0xeb78('0x21')][_0xeb78('0x23')]||null:null,'attributes':_0x18edf2['options']?_0x18edf2[_0xeb78('0x21')][_0xeb78('0x24')]||null:null,'include':_0x18edf2[_0xeb78('0x21')]?_0x18edf2['options']['include']?_[_0xeb78('0x26')](_0x18edf2['options'][_0xeb78('0x25')],function(_0x227fde){return{'model':db[_0x227fde['model']],'as':_0x227fde['as'],'attributes':_0x227fde['attributes'],'include':_0x227fde[_0xeb78('0x25')]?_[_0xeb78('0x26')](_0x227fde['include'],function(_0x35bddb){return{'model':db[_0x35bddb['model']],'as':_0x35bddb['as'],'attributes':_0x35bddb[_0xeb78('0x24')],'include':_0x35bddb['include']?_[_0xeb78('0x26')](_0x35bddb[_0xeb78('0x25')],function(_0x302c56){return{'model':db[_0x302c56[_0xeb78('0x27')]],'as':_0x302c56['as'],'attributes':_0x302c56['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e635f){logger[_0xeb78('0x1b')](_0xeb78('0x29'),_0x18edf2);logger['debug'](_0xeb78('0x29'),_0x18edf2,JSON[_0xeb78('0x17')](_0x1e635f));_0x59f883(_0x1e635f);})[_0xeb78('0x1d')](function(_0x5d27fa){logger[_0xeb78('0x18')](_0xeb78('0x29'),_0x5d27fa[_0xeb78('0x1a')],_0x18edf2);_0x16c0da(_0x2cbc20[_0xeb78('0x18')](0x1f4,_0x5d27fa[_0xeb78('0x1a')]));});});};
\ No newline at end of file
+var _0x3394=['VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','options','raw','where','attributes','include','model','map','ShowVoiceQueue','find','lodash','util','randomstring','ioredis','../../config/logger','rpc','jayson/promise','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','request','then','info'];(function(_0x5f4365,_0x3a8545){var _0x29db01=function(_0x3c5aee){while(--_0x3c5aee){_0x5f4365['push'](_0x5f4365['shift']());}};_0x29db01(++_0x3a8545);}(_0x3394,0x111));var _0x4339=function(_0x3c3024,_0x2af55e){_0x3c3024=_0x3c3024-0x0;var _0x118b39=_0x3394[_0x3c3024];return _0x118b39;};'use strict';var _=require(_0x4339('0x0'));var util=require(_0x4339('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4339('0x2'));var fs=require('fs');var Redis=require(_0x4339('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4339('0x4'))(_0x4339('0x5'));var config=require('../../config/environment');var jayson=require(_0x4339('0x6'));var client=jayson['client']['http']({'port':0x232a});config[_0x4339('0x7')]=_[_0x4339('0x8')](config[_0x4339('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x4339('0x9'))(new Redis(config[_0x4339('0x7')]));require(_0x4339('0xa'))[_0x4339('0xb')](socket);function respondWithRpcPromise(_0x5f674c,_0x4579f7,_0x2f2773){return new BPromise(function(_0x2e9258,_0x1c7e66){return client[_0x4339('0xc')](_0x5f674c,_0x2f2773)[_0x4339('0xd')](function(_0x47771b){logger[_0x4339('0xe')](_0x4339('0xf'),_0x4579f7,_0x4339('0x10'));logger[_0x4339('0x11')](_0x4339('0x12'),_0x4579f7,_0x4339('0x10'),JSON[_0x4339('0x13')](_0x47771b));if(_0x47771b[_0x4339('0x14')]){if(_0x47771b['error'][_0x4339('0x15')]===0x1f4){logger['error'](_0x4339('0xf'),_0x4579f7,_0x47771b[_0x4339('0x14')]['message']);return _0x1c7e66(_0x47771b['error']['message']);}logger[_0x4339('0x14')](_0x4339('0xf'),_0x4579f7,_0x47771b['error'][_0x4339('0x16')]);return _0x2e9258(_0x47771b[_0x4339('0x14')]['message']);}else{logger['info'](_0x4339('0xf'),_0x4579f7,'request\x20sent');_0x2e9258(_0x47771b[_0x4339('0x17')][_0x4339('0x16')]);}})[_0x4339('0x18')](function(_0x33fb75){logger[_0x4339('0x14')](_0x4339('0xf'),_0x4579f7,_0x33fb75);_0x1c7e66(_0x33fb75);});});}exports[_0x4339('0x19')]=function(_0x5dc6d8){var _0x5a0993=this;return new Promise(function(_0x3606c3,_0x15bfbb){return db[_0x4339('0x1a')]['findAll']({'raw':_0x5dc6d8[_0x4339('0x1b')]?_0x5dc6d8[_0x4339('0x1b')][_0x4339('0x1c')]===undefined?!![]:![]:!![],'where':_0x5dc6d8[_0x4339('0x1b')]?_0x5dc6d8[_0x4339('0x1b')][_0x4339('0x1d')]||null:null,'attributes':_0x5dc6d8[_0x4339('0x1b')]?_0x5dc6d8[_0x4339('0x1b')][_0x4339('0x1e')]||null:null,'limit':_0x5dc6d8[_0x4339('0x1b')]?_0x5dc6d8[_0x4339('0x1b')]['limit']||null:null,'include':_0x5dc6d8[_0x4339('0x1b')]?_0x5dc6d8[_0x4339('0x1b')][_0x4339('0x1f')]?_['map'](_0x5dc6d8[_0x4339('0x1b')][_0x4339('0x1f')],function(_0x1338d4){return{'model':db[_0x1338d4[_0x4339('0x20')]],'as':_0x1338d4['as'],'attributes':_0x1338d4[_0x4339('0x1e')],'include':_0x1338d4[_0x4339('0x1f')]?_[_0x4339('0x21')](_0x1338d4[_0x4339('0x1f')],function(_0x4acc83){return{'model':db[_0x4acc83['model']],'as':_0x4acc83['as'],'attributes':_0x4acc83['attributes'],'include':_0x4acc83['include']?_[_0x4339('0x21')](_0x4acc83[_0x4339('0x1f')],function(_0x5c459b){return{'model':db[_0x5c459b[_0x4339('0x20')]],'as':_0x5c459b['as'],'attributes':_0x5c459b[_0x4339('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4339('0xd')](function(_0x114cda){logger['info'](_0x4339('0x19'),_0x5dc6d8);logger[_0x4339('0x11')]('GetVoiceQueue',_0x5dc6d8,JSON[_0x4339('0x13')](_0x114cda));_0x3606c3(_0x114cda);})[_0x4339('0x18')](function(_0x24529e){logger[_0x4339('0x14')]('GetVoiceQueue',_0x24529e[_0x4339('0x16')],_0x5dc6d8);_0x15bfbb(_0x5a0993[_0x4339('0x14')](0x1f4,_0x24529e['message']));});});};exports[_0x4339('0x22')]=function(_0x2a6ff0){var _0x213761=this;return new Promise(function(_0x50c2cb,_0x364542){return db[_0x4339('0x1a')][_0x4339('0x23')]({'raw':_0x2a6ff0[_0x4339('0x1b')]?_0x2a6ff0[_0x4339('0x1b')][_0x4339('0x1c')]===undefined?!![]:![]:!![],'where':_0x2a6ff0[_0x4339('0x1b')]?_0x2a6ff0[_0x4339('0x1b')][_0x4339('0x1d')]||null:null,'attributes':_0x2a6ff0[_0x4339('0x1b')]?_0x2a6ff0[_0x4339('0x1b')][_0x4339('0x1e')]||null:null,'include':_0x2a6ff0[_0x4339('0x1b')]?_0x2a6ff0['options'][_0x4339('0x1f')]?_['map'](_0x2a6ff0[_0x4339('0x1b')][_0x4339('0x1f')],function(_0x22026c){return{'model':db[_0x22026c[_0x4339('0x20')]],'as':_0x22026c['as'],'attributes':_0x22026c[_0x4339('0x1e')],'include':_0x22026c[_0x4339('0x1f')]?_[_0x4339('0x21')](_0x22026c[_0x4339('0x1f')],function(_0xb401f5){return{'model':db[_0xb401f5[_0x4339('0x20')]],'as':_0xb401f5['as'],'attributes':_0xb401f5['attributes'],'include':_0xb401f5['include']?_[_0x4339('0x21')](_0xb401f5['include'],function(_0x201239){return{'model':db[_0x201239[_0x4339('0x20')]],'as':_0x201239['as'],'attributes':_0x201239[_0x4339('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4339('0xd')](function(_0x175c2b){logger['info'](_0x4339('0x22'),_0x2a6ff0);logger[_0x4339('0x11')](_0x4339('0x22'),_0x2a6ff0,JSON[_0x4339('0x13')](_0x175c2b));_0x50c2cb(_0x175c2b);})[_0x4339('0x18')](function(_0x1ae035){logger[_0x4339('0x14')](_0x4339('0x22'),_0x1ae035[_0x4339('0x16')],_0x2a6ff0);_0x364542(_0x213761[_0x4339('0x14')](0x1f4,_0x1ae035['message']));});});};
\ No newline at end of file
index 8c1f511..ee198b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4496=['update','emit','register','length','voiceQueue:','./voiceQueue.events','save','remove'];(function(_0x435553,_0x38efb7){var _0x4fb934=function(_0x256bec){while(--_0x256bec){_0x435553['push'](_0x435553['shift']());}};_0x4fb934(++_0x38efb7);}(_0x4496,0x1bd));var _0x6449=function(_0x56ce32,_0x5296b5){_0x56ce32=_0x56ce32-0x0;var _0x4aae97=_0x4496[_0x56ce32];return _0x4aae97;};'use strict';var VoiceQueueEvents=require(_0x6449('0x0'));var events=[_0x6449('0x1'),_0x6449('0x2'),_0x6449('0x3')];function createListener(_0x204823,_0x122588){return function(_0x81ccd3){_0x122588[_0x6449('0x4')](_0x204823,_0x81ccd3);};}function removeListener(_0x5cb77c,_0x17f6c5){return function(){VoiceQueueEvents['removeListener'](_0x5cb77c,_0x17f6c5);};}exports[_0x6449('0x5')]=function(_0x397f49){for(var _0x5532ce=0x0,_0x321cd0=events[_0x6449('0x6')];_0x5532ce<_0x321cd0;_0x5532ce++){var _0x30258c=events[_0x5532ce];var _0x5e893f=createListener(_0x6449('0x7')+_0x30258c,_0x397f49);VoiceQueueEvents['on'](_0x30258c,_0x5e893f);}};
\ No newline at end of file
+var _0x9f50=['save','remove','update','removeListener','register','length','./voiceQueue.events'];(function(_0x502e61,_0x30ba4a){var _0x3273fb=function(_0x1fddd1){while(--_0x1fddd1){_0x502e61['push'](_0x502e61['shift']());}};_0x3273fb(++_0x30ba4a);}(_0x9f50,0xfb));var _0x09f5=function(_0xc2c0c3,_0x2bf8a9){_0xc2c0c3=_0xc2c0c3-0x0;var _0x292acf=_0x9f50[_0xc2c0c3];return _0x292acf;};'use strict';var VoiceQueueEvents=require(_0x09f5('0x0'));var events=[_0x09f5('0x1'),_0x09f5('0x2'),_0x09f5('0x3')];function createListener(_0x2890a5,_0x3de4e5){return function(_0x26ba53){_0x3de4e5['emit'](_0x2890a5,_0x26ba53);};}function removeListener(_0x487df4,_0x3284c0){return function(){VoiceQueueEvents[_0x09f5('0x4')](_0x487df4,_0x3284c0);};}exports[_0x09f5('0x5')]=function(_0x5ab987){for(var _0x5f15da=0x0,_0x1bb353=events[_0x09f5('0x6')];_0x5f15da<_0x1bb353;_0x5f15da++){var _0x10e689=events[_0x5f15da];var _0x11e445=createListener('voiceQueue:'+_0x10e689,_0x5ab987);VoiceQueueEvents['on'](_0x10e689,_0x11e445);}};
\ No newline at end of file
index 619b524..9697354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc86b=['util','path','connect-timeout','express','Router','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','/index','getVoiceQueuesReport','/:id','show','create','put','update','delete','exports','multer'];(function(_0x3210ee,_0x345bbd){var _0x5cba93=function(_0x1a5566){while(--_0x1a5566){_0x3210ee['push'](_0x3210ee['shift']());}};_0x5cba93(++_0x345bbd);}(_0xc86b,0x1cd));var _0xbc86=function(_0x50c754,_0x44c558){_0x50c754=_0x50c754-0x0;var _0x4fc8b4=_0xc86b[_0x50c754];return _0x4fc8b4;};'use strict';var multer=require(_0xbc86('0x0'));var util=require(_0xbc86('0x1'));var path=require(_0xbc86('0x2'));var timeout=require(_0xbc86('0x3'));var express=require(_0xbc86('0x4'));var router=express[_0xbc86('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbc86('0x6'));var controller=require(_0xbc86('0x7'));router[_0xbc86('0x8')]('/',auth[_0xbc86('0x9')](),controller[_0xbc86('0xa')]);router[_0xbc86('0x8')](_0xbc86('0xb'),auth[_0xbc86('0x9')](),controller['describe']);router[_0xbc86('0x8')](_0xbc86('0xc'),auth['isAuthenticated'](),controller[_0xbc86('0xd')]);router[_0xbc86('0x8')](_0xbc86('0xe'),auth[_0xbc86('0x9')](),controller[_0xbc86('0xf')]);router['post']('/',auth[_0xbc86('0x9')](),controller[_0xbc86('0x10')]);router[_0xbc86('0x11')](_0xbc86('0xe'),auth[_0xbc86('0x9')](),controller[_0xbc86('0x12')]);router[_0xbc86('0x13')](_0xbc86('0xe'),auth[_0xbc86('0x9')](),controller['destroy']);module[_0xbc86('0x14')]=router;
\ No newline at end of file
+var _0x17af=['exports','util','path','connect-timeout','express','Router','fs-extra','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','/:id','post','create','put','update','delete','destroy'];(function(_0x51f593,_0x38d2ec){var _0x4ccfbf=function(_0x4267c8){while(--_0x4267c8){_0x51f593['push'](_0x51f593['shift']());}};_0x4ccfbf(++_0x38d2ec);}(_0x17af,0x127));var _0xf17a=function(_0x46de08,_0x350a03){_0x46de08=_0x46de08-0x0;var _0x11dcff=_0x17af[_0x46de08];return _0x11dcff;};'use strict';var multer=require('multer');var util=require(_0xf17a('0x0'));var path=require(_0xf17a('0x1'));var timeout=require(_0xf17a('0x2'));var express=require(_0xf17a('0x3'));var router=express[_0xf17a('0x4')]();var fs_extra=require(_0xf17a('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf17a('0x6'));router[_0xf17a('0x7')]('/',auth[_0xf17a('0x8')](),controller[_0xf17a('0x9')]);router['get'](_0xf17a('0xa'),auth[_0xf17a('0x8')](),controller[_0xf17a('0xb')]);router[_0xf17a('0x7')](_0xf17a('0xc'),auth[_0xf17a('0x8')](),controller['getVoiceQueuesReport']);router[_0xf17a('0x7')](_0xf17a('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xf17a('0xe')]('/',auth[_0xf17a('0x8')](),controller[_0xf17a('0xf')]);router[_0xf17a('0x10')]('/:id',auth[_0xf17a('0x8')](),controller[_0xf17a('0x11')]);router[_0xf17a('0x12')]('/:id',auth[_0xf17a('0x8')](),controller[_0xf17a('0x13')]);module[_0xf17a('0x14')]=router;
\ No newline at end of file
index 076e0ca..ca09b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5da=['YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format'];(function(_0x1c09ba,_0x5eb0c0){var _0x4b3a39=function(_0x50ed32){while(--_0x50ed32){_0x1c09ba['push'](_0x1c09ba['shift']());}};_0x4b3a39(++_0x5eb0c0);}(_0xd5da,0x14e));var _0xad5d=function(_0x2f9c4b,_0x5f2503){_0x2f9c4b=_0x2f9c4b-0x0;var _0xf075df=_0xd5da[_0x2f9c4b];return _0xf075df;};'use strict';var Sequelize=require(_0xad5d('0x0'));var moment=require(_0xad5d('0x1'));module[_0xad5d('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xad5d('0x3')]},'calleridname':{'type':Sequelize[_0xad5d('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xad5d('0x4')],'set':function(_0x3c9862){var _0x308a9a=moment(_0x3c9862);var _0xf70d53=moment(this[_0xad5d('0x5')](_0xad5d('0x6')))[_0xad5d('0x7')](_0xad5d('0x8'));var _0x6997c3=_0x308a9a[_0xad5d('0x9')](_0xf70d53,_0xad5d('0xa'));this[_0xad5d('0xb')](_0xad5d('0xc'),_0x3c9862);this[_0xad5d('0xb')](_0xad5d('0xd'),_0x6997c3||null);}},'position':{'type':Sequelize[_0xad5d('0xe')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xad5d('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xad5d('0x4')]},'queuecallerexit':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xad5d('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xad5d('0x3')],'comment':_0xad5d('0x10')},'originalposition':{'type':Sequelize[_0xad5d('0xe')]},'channel':{'type':Sequelize[_0xad5d('0x3')]},'connectedlinenum':{'type':Sequelize[_0xad5d('0x3')]},'connectedlinename':{'type':Sequelize[_0xad5d('0x3')]},'accountcode':{'type':Sequelize[_0xad5d('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xad5d('0x3')]},'holdtime':{'type':Sequelize[_0xad5d('0xe')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xad5d('0x3')]},'transfer':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xad5d('0x3')],'comment':_0xad5d('0x11')},'transferexten':{'type':Sequelize[_0xad5d('0x3')]},'transferuniqueid':{'type':Sequelize[_0xad5d('0x3')]},'disposition':{'type':Sequelize[_0xad5d('0x3')]},'secondDisposition':{'type':Sequelize[_0xad5d('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0xad5d('0xe')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x486b=['exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment'];(function(_0x19c0c7,_0x3de90c){var _0x148d13=function(_0x6fdc95){while(--_0x6fdc95){_0x19c0c7['push'](_0x19c0c7['shift']());}};_0x148d13(++_0x3de90c);}(_0x486b,0xee));var _0xb486=function(_0x4e67a9,_0x161d03){_0x4e67a9=_0x4e67a9-0x0;var _0xcd6f23=_0x486b[_0x4e67a9];return _0xcd6f23;};'use strict';var Sequelize=require(_0xb486('0x0'));var moment=require(_0xb486('0x1'));module[_0xb486('0x2')]={'type':{'type':Sequelize[_0xb486('0x3')]},'uniqueid':{'type':Sequelize[_0xb486('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xb486('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xb486('0x4')],'set':function(_0x30ccf1){var _0x4c980c=moment(_0x30ccf1);var _0xa2b004=moment(this[_0xb486('0x5')](_0xb486('0x6')))[_0xb486('0x7')](_0xb486('0x8'));var _0x2e9a6e=_0x4c980c[_0xb486('0x9')](_0xa2b004,'seconds');this[_0xb486('0xa')](_0xb486('0xb'),_0x30ccf1);this[_0xb486('0xa')](_0xb486('0xc'),_0x2e9a6e||null);}},'position':{'type':Sequelize[_0xb486('0xd')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xb486('0xe')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xb486('0x4')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0xb486('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xb486('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xb486('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0xb486('0xd')]},'channel':{'type':Sequelize[_0xb486('0x3')]},'connectedlinenum':{'type':Sequelize[_0xb486('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xb486('0x3')]},'context':{'type':Sequelize[_0xb486('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb486('0x3')]},'holdtime':{'type':Sequelize[_0xb486('0xd')]},'mohtime':{'type':Sequelize[_0xb486('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xb486('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xb486('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb486('0x3')],'comment':_0xb486('0xf')},'transferexten':{'type':Sequelize[_0xb486('0x3')]},'transferuniqueid':{'type':Sequelize[_0xb486('0x3')]},'disposition':{'type':Sequelize[_0xb486('0x3')]},'secondDisposition':{'type':Sequelize[_0xb486('0x3')]},'thirdDisposition':{'type':Sequelize[_0xb486('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0xb486('0xd')],'defaultValue':0x0}};
\ No newline at end of file
index 585caf8..ffeee3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18e0=['then','end','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','options','includeAll','rows','catch','params','keys','include','find','create','body','destroy','describe','getVoiceQueuesReport','hasOwnProperty','order','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','./voiceQueueReport.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save'];(function(_0x5ba7df,_0x30e226){var _0x547a00=function(_0x17679f){while(--_0x17679f){_0x5ba7df['push'](_0x5ba7df['shift']());}};_0x547a00(++_0x30e226);}(_0x18e0,0x7e));var _0x018e=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x18e0[_0x1203f];return _0x365f0a;};'use strict';var emlformat=require(_0x018e('0x0'));var rimraf=require(_0x018e('0x1'));var zipdir=require(_0x018e('0x2'));var jsonpatch=require(_0x018e('0x3'));var rp=require(_0x018e('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x018e('0x5'));var util=require(_0x018e('0x6'));var path=require(_0x018e('0x7'));var sox=require(_0x018e('0x8'));var csv=require('to-csv');var ejs=require(_0x018e('0x9'));var fs=require('fs');var fs_extra=require(_0x018e('0xa'));var _=require(_0x018e('0xb'));var squel=require(_0x018e('0xc'));var crypto=require(_0x018e('0xd'));var jsforce=require(_0x018e('0xe'));var deskjs=require(_0x018e('0xf'));var toCsv=require(_0x018e('0x10'));var querystring=require(_0x018e('0x11'));var Papa=require(_0x018e('0x12'));var Redis=require(_0x018e('0x13'));var authService=require(_0x018e('0x14'));var qs=require(_0x018e('0x15'));var as=require(_0x018e('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x018e('0x17'))(_0x018e('0x18'));var utils=require(_0x018e('0x19'));var config=require(_0x018e('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x018e('0x1b')]=_[_0x018e('0x1c')](config['redis'],{'host':_0x018e('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x018e('0x1e'))[_0x018e('0x1f')](socket);function respondWithStatusCode(_0x51c7f6,_0x497b60){_0x497b60=_0x497b60||0xcc;return function(_0x3319ed){if(_0x3319ed){return _0x51c7f6[_0x018e('0x20')](_0x497b60);}return _0x51c7f6[_0x018e('0x21')](_0x497b60)['end']();};}function respondWithResult(_0x3c6bac,_0x4de313){_0x4de313=_0x4de313||0xc8;return function(_0x368594){if(_0x368594){return _0x3c6bac[_0x018e('0x21')](_0x4de313)['json'](_0x368594);}};}function respondWithFilteredResult(_0x58b8f5,_0x5ab2dd){return function(_0x399fe0){if(_0x399fe0){var _0x15f184=typeof _0x5ab2dd[_0x018e('0x22')]===_0x018e('0x23')&&typeof _0x5ab2dd[_0x018e('0x24')]==='undefined';var _0x2df33c=_0x399fe0[_0x018e('0x25')];var _0x497e04=_0x15f184?0x0:_0x5ab2dd['offset'];var _0x5de541=_0x15f184?_0x399fe0[_0x018e('0x25')]:_0x5ab2dd[_0x018e('0x22')]+_0x5ab2dd['limit'];var _0x2dc163;if(_0x5de541>=_0x2df33c){_0x5de541=_0x2df33c;_0x2dc163=0xc8;}else{_0x2dc163=0xce;}_0x58b8f5[_0x018e('0x21')](_0x2dc163);return _0x58b8f5[_0x018e('0x26')](_0x018e('0x27'),_0x497e04+'-'+_0x5de541+'/'+_0x2df33c)[_0x018e('0x28')](_0x399fe0);}return null;};}function patchUpdates(_0x2445f0){return function(_0x3f9fa1){try{jsonpatch[_0x018e('0x29')](_0x3f9fa1,_0x2445f0,!![]);}catch(_0x425b0e){return BPromise[_0x018e('0x2a')](_0x425b0e);}return _0x3f9fa1[_0x018e('0x2b')]();};}function saveUpdates(_0x274d7b,_0x3fdff2){return function(_0x319720){if(_0x319720){return _0x319720['update'](_0x274d7b)[_0x018e('0x2c')](function(_0x3258c7){return _0x3258c7;});}return null;};}function removeEntity(_0x373cf7,_0x278adc){return function(_0x54281e){if(_0x54281e){return _0x54281e['destroy']()['then'](function(){_0x373cf7[_0x018e('0x21')](0xcc)[_0x018e('0x2d')]();});}};}function handleEntityNotFound(_0x2e7d38,_0x306225){return function(_0x12b480){if(!_0x12b480){_0x2e7d38[_0x018e('0x20')](0x194);}return _0x12b480;};}function handleError(_0x192734,_0x354de8){_0x354de8=_0x354de8||0x1f4;return function(_0x390910){logger[_0x018e('0x2e')](_0x390910[_0x018e('0x2f')]);if(_0x390910[_0x018e('0x30')]){delete _0x390910[_0x018e('0x30')];}_0x192734[_0x018e('0x21')](_0x354de8)[_0x018e('0x31')](_0x390910);};}exports[_0x018e('0x32')]=function(_0x53c35f,_0x3298c9){var _0xa4e6e0={},_0x1d7606={},_0xea93c5={'count':0x0,'rows':[]};var _0x45e3ab=_[_0x018e('0x33')](db[_0x018e('0x34')][_0x018e('0x35')],function(_0x5d1a8f){return{'name':_0x5d1a8f[_0x018e('0x36')],'type':_0x5d1a8f[_0x018e('0x37')][_0x018e('0x38')]};});_0x1d7606[_0x018e('0x39')]=_[_0x018e('0x33')](_0x45e3ab,_0x018e('0x30'));_0x1d7606[_0x018e('0x3a')]=_['keys'](_0x53c35f[_0x018e('0x3a')]);_0x1d7606[_0x018e('0x3b')]=_[_0x018e('0x3c')](_0x1d7606['model'],_0x1d7606[_0x018e('0x3a')]);_0xa4e6e0[_0x018e('0x3d')]=_['intersection'](_0x1d7606[_0x018e('0x39')],qs[_0x018e('0x3e')](_0x53c35f[_0x018e('0x3a')]['fields']));_0xa4e6e0[_0x018e('0x3d')]=_0xa4e6e0[_0x018e('0x3d')][_0x018e('0x3f')]?_0xa4e6e0[_0x018e('0x3d')]:_0x1d7606[_0x018e('0x39')];if(!_0x53c35f['query']['hasOwnProperty'](_0x018e('0x40'))){_0xa4e6e0['limit']=qs[_0x018e('0x24')](_0x53c35f['query'][_0x018e('0x24')]);_0xa4e6e0['offset']=qs[_0x018e('0x22')](_0x53c35f[_0x018e('0x3a')][_0x018e('0x22')]);}_0xa4e6e0['order']=qs['sort'](_0x53c35f['query'][_0x018e('0x41')]);_0xa4e6e0[_0x018e('0x42')]=qs['filters'](_[_0x018e('0x43')](_0x53c35f[_0x018e('0x3a')],_0x1d7606['filters']),_0x45e3ab);if(_0x53c35f[_0x018e('0x3a')][_0x018e('0x44')]){_0xa4e6e0['where']=_[_0x018e('0x45')](_0xa4e6e0[_0x018e('0x42')],{'$or':_[_0x018e('0x33')](_0x45e3ab,function(_0xd840ac){if(_0xd840ac[_0x018e('0x37')]!=='VIRTUAL'){var _0x180d00={};_0x180d00[_0xd840ac[_0x018e('0x30')]]={'$like':'%'+_0x53c35f[_0x018e('0x3a')][_0x018e('0x44')]+'%'};return _0x180d00;}})});}_0xa4e6e0=_['merge']({},_0xa4e6e0,_0x53c35f[_0x018e('0x46')]);var _0x164bd2={'where':_0xa4e6e0[_0x018e('0x42')]};return db[_0x018e('0x34')]['count'](_0x164bd2)[_0x018e('0x2c')](function(_0x4eae7e){_0xea93c5[_0x018e('0x25')]=_0x4eae7e;if(_0x53c35f['query'][_0x018e('0x47')]){_0xa4e6e0['include']=[{'all':!![]}];}return db[_0x018e('0x34')]['findAll'](_0xa4e6e0);})['then'](function(_0x43bfb9){_0xea93c5[_0x018e('0x48')]=_0x43bfb9;return _0xea93c5;})[_0x018e('0x2c')](respondWithFilteredResult(_0x3298c9,_0xa4e6e0))[_0x018e('0x49')](handleError(_0x3298c9,null));};exports['show']=function(_0x4bc46c,_0x404bad){var _0x2c7bd1={'raw':![],'where':{'id':_0x4bc46c[_0x018e('0x4a')]['id']}},_0x57e8a1={};_0x57e8a1[_0x018e('0x39')]=_[_0x018e('0x4b')](db[_0x018e('0x34')]['rawAttributes']);_0x57e8a1[_0x018e('0x3a')]=_[_0x018e('0x4b')](_0x4bc46c['query']);_0x57e8a1[_0x018e('0x3b')]=_[_0x018e('0x3c')](_0x57e8a1[_0x018e('0x39')],_0x57e8a1[_0x018e('0x3a')]);_0x2c7bd1['attributes']=_[_0x018e('0x3c')](_0x57e8a1['model'],qs[_0x018e('0x3e')](_0x4bc46c[_0x018e('0x3a')][_0x018e('0x3e')]));_0x2c7bd1['attributes']=_0x2c7bd1[_0x018e('0x3d')][_0x018e('0x3f')]?_0x2c7bd1[_0x018e('0x3d')]:_0x57e8a1['model'];if(_0x4bc46c[_0x018e('0x3a')][_0x018e('0x47')]){_0x2c7bd1[_0x018e('0x4c')]=[{'all':!![]}];}_0x2c7bd1=_[_0x018e('0x45')]({},_0x2c7bd1,_0x4bc46c[_0x018e('0x46')]);return db[_0x018e('0x34')][_0x018e('0x4d')](_0x2c7bd1)[_0x018e('0x2c')](handleEntityNotFound(_0x404bad,null))['then'](respondWithResult(_0x404bad,null))[_0x018e('0x49')](handleError(_0x404bad,null));};exports[_0x018e('0x4e')]=function(_0x21d769,_0x107399){return db['VoiceQueueReport']['create'](_0x21d769[_0x018e('0x4f')],{})[_0x018e('0x2c')](respondWithResult(_0x107399,0xc9))[_0x018e('0x49')](handleError(_0x107399,null));};exports['update']=function(_0x1a0659,_0x2c50d4){if(_0x1a0659['body']['id']){delete _0x1a0659[_0x018e('0x4f')]['id'];}return db['VoiceQueueReport'][_0x018e('0x4d')]({'where':{'id':_0x1a0659[_0x018e('0x4a')]['id']}})[_0x018e('0x2c')](handleEntityNotFound(_0x2c50d4,null))['then'](saveUpdates(_0x1a0659[_0x018e('0x4f')],null))[_0x018e('0x2c')](respondWithResult(_0x2c50d4,null))[_0x018e('0x49')](handleError(_0x2c50d4,null));};exports[_0x018e('0x50')]=function(_0x350cc2,_0x3789ed){return db[_0x018e('0x34')][_0x018e('0x4d')]({'where':{'id':_0x350cc2['params']['id']}})[_0x018e('0x2c')](handleEntityNotFound(_0x3789ed,null))[_0x018e('0x2c')](removeEntity(_0x3789ed,null))[_0x018e('0x49')](handleError(_0x3789ed,null));};exports['describe']=function(_0x2dd88f,_0x51ac07){return db[_0x018e('0x34')][_0x018e('0x51')]()['then'](respondWithResult(_0x51ac07,null))[_0x018e('0x49')](handleError(_0x51ac07,null));};exports[_0x018e('0x52')]=function(_0x46bf62,_0x2a0a45){var _0x190118={},_0x113b9b={},_0x5d3066={'count':0x0,'rows':[]};_0x113b9b['model']=_[_0x018e('0x4b')](db['VoiceQueueReport'][_0x018e('0x35')]);_0x113b9b['query']=_['keys'](_0x46bf62[_0x018e('0x3a')]);_0x113b9b[_0x018e('0x3b')]=_['intersection'](_0x113b9b['model'],_0x113b9b[_0x018e('0x3a')]);_0x190118[_0x018e('0x3d')]=_['intersection'](_0x113b9b[_0x018e('0x39')],qs[_0x018e('0x3e')](_0x46bf62[_0x018e('0x3a')][_0x018e('0x3e')]));_0x190118[_0x018e('0x3d')]=_0x190118[_0x018e('0x3d')]['length']?_0x190118[_0x018e('0x3d')]:_0x113b9b[_0x018e('0x39')];if(!_0x46bf62['query'][_0x018e('0x53')](_0x018e('0x40'))){_0x190118[_0x018e('0x24')]=qs[_0x018e('0x24')](_0x46bf62[_0x018e('0x3a')][_0x018e('0x24')]);_0x190118['offset']=qs['offset'](_0x46bf62['query'][_0x018e('0x22')]);}_0x190118[_0x018e('0x54')]=qs[_0x018e('0x41')](_0x46bf62[_0x018e('0x3a')][_0x018e('0x41')]);_0x190118[_0x018e('0x42')]=qs[_0x018e('0x3b')](_[_0x018e('0x43')](_0x46bf62[_0x018e('0x3a')],_0x113b9b[_0x018e('0x3b')]));if(_0x46bf62[_0x018e('0x3a')][_0x018e('0x44')]){_0x190118['where']=_[_0x018e('0x45')](_0x190118[_0x018e('0x42')],{'$or':_[_0x018e('0x33')](_0x190118[_0x018e('0x3d')],function(_0x5ea51a){var _0x28c637={};_0x28c637[_0x5ea51a]={'$like':'%'+_0x46bf62[_0x018e('0x3a')][_0x018e('0x44')]+'%'};return _0x28c637;})});}_0x190118=_['merge']({},_0x190118,_0x46bf62[_0x018e('0x46')]);var _0x22a6ec={'where':_0x190118['where']};return db[_0x018e('0x34')][_0x018e('0x25')](_0x22a6ec)[_0x018e('0x2c')](function(_0x5577e7){_0x5d3066[_0x018e('0x25')]=_0x5577e7;if(_0x46bf62[_0x018e('0x3a')][_0x018e('0x47')]){_0x190118['include']=[{'all':!![]}];}return db[_0x018e('0x34')]['findAll'](_0x190118);})[_0x018e('0x2c')](function(_0x5057ea){_0x5d3066[_0x018e('0x48')]=_0x5057ea;return _0x5d3066;})['then'](respondWithFilteredResult(_0x2a0a45,_0x190118,'getVoiceQueuesReport'))['catch'](handleError(_0x2a0a45,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0xa716=['jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','end','stack','name','send','VoiceQueueReport','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','include','rows','catch','params','includeAll','merge','find','create','body','describe','getVoiceQueuesReport','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2a1382,_0x11b967){var _0x3c0b65=function(_0x38ab11){while(--_0x38ab11){_0x2a1382['push'](_0x2a1382['shift']());}};_0x3c0b65(++_0x11b967);}(_0xa716,0x1ea));var _0x6a71=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xa716[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x6a71('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a71('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a71('0x2'));var moment=require(_0x6a71('0x3'));var BPromise=require(_0x6a71('0x4'));var Mustache=require(_0x6a71('0x5'));var util=require(_0x6a71('0x6'));var path=require(_0x6a71('0x7'));var sox=require('sox');var csv=require(_0x6a71('0x8'));var ejs=require(_0x6a71('0x9'));var fs=require('fs');var fs_extra=require(_0x6a71('0xa'));var _=require(_0x6a71('0xb'));var squel=require(_0x6a71('0xc'));var crypto=require(_0x6a71('0xd'));var jsforce=require(_0x6a71('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6a71('0x8'));var querystring=require(_0x6a71('0xf'));var Papa=require(_0x6a71('0x10'));var Redis=require(_0x6a71('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6a71('0x12'));var as=require(_0x6a71('0x13'));var hardwareService=require(_0x6a71('0x14'));var logger=require(_0x6a71('0x15'))(_0x6a71('0x16'));var utils=require(_0x6a71('0x17'));var config=require(_0x6a71('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6a71('0x19'))['db'];config[_0x6a71('0x1a')]=_[_0x6a71('0x1b')](config[_0x6a71('0x1a')],{'host':_0x6a71('0x1c'),'port':0x18eb});var socket=require(_0x6a71('0x1d'))(new Redis(config[_0x6a71('0x1a')]));require(_0x6a71('0x1e'))[_0x6a71('0x1f')](socket);function respondWithStatusCode(_0x776b2f,_0x103951){_0x103951=_0x103951||0xcc;return function(_0x58332e){if(_0x58332e){return _0x776b2f[_0x6a71('0x20')](_0x103951);}return _0x776b2f[_0x6a71('0x21')](_0x103951)['end']();};}function respondWithResult(_0x1afd07,_0x44cf06){_0x44cf06=_0x44cf06||0xc8;return function(_0x2a763f){if(_0x2a763f){return _0x1afd07[_0x6a71('0x21')](_0x44cf06)[_0x6a71('0x22')](_0x2a763f);}};}function respondWithFilteredResult(_0x50dc06,_0x87ea3){return function(_0x2b8f54){if(_0x2b8f54){var _0x48541f=typeof _0x87ea3['offset']===_0x6a71('0x23')&&typeof _0x87ea3[_0x6a71('0x24')]===_0x6a71('0x23');var _0x1ac68f=_0x2b8f54[_0x6a71('0x25')];var _0x872e11=_0x48541f?0x0:_0x87ea3[_0x6a71('0x26')];var _0x26af3d=_0x48541f?_0x2b8f54[_0x6a71('0x25')]:_0x87ea3[_0x6a71('0x26')]+_0x87ea3[_0x6a71('0x24')];var _0x36048c;if(_0x26af3d>=_0x1ac68f){_0x26af3d=_0x1ac68f;_0x36048c=0xc8;}else{_0x36048c=0xce;}_0x50dc06[_0x6a71('0x21')](_0x36048c);return _0x50dc06[_0x6a71('0x27')](_0x6a71('0x28'),_0x872e11+'-'+_0x26af3d+'/'+_0x1ac68f)[_0x6a71('0x22')](_0x2b8f54);}return null;};}function patchUpdates(_0x4e41b8){return function(_0x14d461){try{jsonpatch['apply'](_0x14d461,_0x4e41b8,!![]);}catch(_0x1b2b75){return BPromise[_0x6a71('0x29')](_0x1b2b75);}return _0x14d461[_0x6a71('0x2a')]();};}function saveUpdates(_0xe8086d,_0xc1495){return function(_0x34d74f){if(_0x34d74f){return _0x34d74f[_0x6a71('0x2b')](_0xe8086d)['then'](function(_0x30995e){return _0x30995e;});}return null;};}function removeEntity(_0x17fe0a,_0x227f79){return function(_0x89ae6e){if(_0x89ae6e){return _0x89ae6e[_0x6a71('0x2c')]()[_0x6a71('0x2d')](function(){_0x17fe0a[_0x6a71('0x21')](0xcc)[_0x6a71('0x2e')]();});}};}function handleEntityNotFound(_0x598dbb,_0xad8ff8){return function(_0x225aea){if(!_0x225aea){_0x598dbb[_0x6a71('0x20')](0x194);}return _0x225aea;};}function handleError(_0x43f601,_0x35a885){_0x35a885=_0x35a885||0x1f4;return function(_0x4a6ca5){logger['error'](_0x4a6ca5[_0x6a71('0x2f')]);if(_0x4a6ca5[_0x6a71('0x30')]){delete _0x4a6ca5[_0x6a71('0x30')];}_0x43f601['status'](_0x35a885)[_0x6a71('0x31')](_0x4a6ca5);};}exports['index']=function(_0x488e21,_0x1d81ba){var _0x1a043c={},_0x1c632e={},_0x304d41={'count':0x0,'rows':[]};var _0x56116a=_['map'](db[_0x6a71('0x32')][_0x6a71('0x33')],function(_0x35662a){return{'name':_0x35662a[_0x6a71('0x34')],'type':_0x35662a['type'][_0x6a71('0x35')]};});_0x1c632e[_0x6a71('0x36')]=_[_0x6a71('0x37')](_0x56116a,_0x6a71('0x30'));_0x1c632e[_0x6a71('0x38')]=_[_0x6a71('0x39')](_0x488e21['query']);_0x1c632e[_0x6a71('0x3a')]=_['intersection'](_0x1c632e[_0x6a71('0x36')],_0x1c632e['query']);_0x1a043c[_0x6a71('0x3b')]=_[_0x6a71('0x3c')](_0x1c632e[_0x6a71('0x36')],qs[_0x6a71('0x3d')](_0x488e21[_0x6a71('0x38')]['fields']));_0x1a043c[_0x6a71('0x3b')]=_0x1a043c[_0x6a71('0x3b')][_0x6a71('0x3e')]?_0x1a043c['attributes']:_0x1c632e[_0x6a71('0x36')];if(!_0x488e21[_0x6a71('0x38')][_0x6a71('0x3f')](_0x6a71('0x40'))){_0x1a043c[_0x6a71('0x24')]=qs[_0x6a71('0x24')](_0x488e21[_0x6a71('0x38')]['limit']);_0x1a043c['offset']=qs['offset'](_0x488e21['query'][_0x6a71('0x26')]);}_0x1a043c[_0x6a71('0x41')]=qs['sort'](_0x488e21[_0x6a71('0x38')][_0x6a71('0x42')]);_0x1a043c[_0x6a71('0x43')]=qs[_0x6a71('0x3a')](_[_0x6a71('0x44')](_0x488e21['query'],_0x1c632e[_0x6a71('0x3a')]),_0x56116a);if(_0x488e21[_0x6a71('0x38')][_0x6a71('0x45')]){_0x1a043c[_0x6a71('0x43')]=_['merge'](_0x1a043c[_0x6a71('0x43')],{'$or':_['map'](_0x56116a,function(_0x53749a){if(_0x53749a[_0x6a71('0x46')]!==_0x6a71('0x47')){var _0x1641b1={};_0x1641b1[_0x53749a[_0x6a71('0x30')]]={'$like':'%'+_0x488e21[_0x6a71('0x38')]['filter']+'%'};return _0x1641b1;}})});}_0x1a043c=_['merge']({},_0x1a043c,_0x488e21[_0x6a71('0x48')]);var _0xb2929e={'where':_0x1a043c[_0x6a71('0x43')]};return db[_0x6a71('0x32')][_0x6a71('0x25')](_0xb2929e)['then'](function(_0x36c8e7){_0x304d41[_0x6a71('0x25')]=_0x36c8e7;if(_0x488e21[_0x6a71('0x38')]['includeAll']){_0x1a043c[_0x6a71('0x49')]=[{'all':!![]}];}return db[_0x6a71('0x32')]['findAll'](_0x1a043c);})[_0x6a71('0x2d')](function(_0x4f04a8){_0x304d41[_0x6a71('0x4a')]=_0x4f04a8;return _0x304d41;})['then'](respondWithFilteredResult(_0x1d81ba,_0x1a043c))[_0x6a71('0x4b')](handleError(_0x1d81ba,null));};exports['show']=function(_0x8d0432,_0x16ebc5){var _0x139321={'raw':![],'where':{'id':_0x8d0432[_0x6a71('0x4c')]['id']}},_0x427006={};_0x427006[_0x6a71('0x36')]=_[_0x6a71('0x39')](db['VoiceQueueReport']['rawAttributes']);_0x427006[_0x6a71('0x38')]=_['keys'](_0x8d0432[_0x6a71('0x38')]);_0x427006['filters']=_['intersection'](_0x427006[_0x6a71('0x36')],_0x427006['query']);_0x139321[_0x6a71('0x3b')]=_[_0x6a71('0x3c')](_0x427006[_0x6a71('0x36')],qs[_0x6a71('0x3d')](_0x8d0432[_0x6a71('0x38')][_0x6a71('0x3d')]));_0x139321[_0x6a71('0x3b')]=_0x139321[_0x6a71('0x3b')][_0x6a71('0x3e')]?_0x139321['attributes']:_0x427006[_0x6a71('0x36')];if(_0x8d0432['query'][_0x6a71('0x4d')]){_0x139321['include']=[{'all':!![]}];}_0x139321=_[_0x6a71('0x4e')]({},_0x139321,_0x8d0432['options']);return db['VoiceQueueReport'][_0x6a71('0x4f')](_0x139321)[_0x6a71('0x2d')](handleEntityNotFound(_0x16ebc5,null))[_0x6a71('0x2d')](respondWithResult(_0x16ebc5,null))['catch'](handleError(_0x16ebc5,null));};exports[_0x6a71('0x50')]=function(_0x20d912,_0x2dc064){return db[_0x6a71('0x32')]['create'](_0x20d912['body'],{})[_0x6a71('0x2d')](respondWithResult(_0x2dc064,0xc9))[_0x6a71('0x4b')](handleError(_0x2dc064,null));};exports[_0x6a71('0x2b')]=function(_0x214c99,_0x1f8e00){if(_0x214c99[_0x6a71('0x51')]['id']){delete _0x214c99[_0x6a71('0x51')]['id'];}return db['VoiceQueueReport']['find']({'where':{'id':_0x214c99[_0x6a71('0x4c')]['id']}})[_0x6a71('0x2d')](handleEntityNotFound(_0x1f8e00,null))[_0x6a71('0x2d')](saveUpdates(_0x214c99['body'],null))['then'](respondWithResult(_0x1f8e00,null))[_0x6a71('0x4b')](handleError(_0x1f8e00,null));};exports[_0x6a71('0x2c')]=function(_0x4a418d,_0x70e1fd){return db['VoiceQueueReport'][_0x6a71('0x4f')]({'where':{'id':_0x4a418d[_0x6a71('0x4c')]['id']}})[_0x6a71('0x2d')](handleEntityNotFound(_0x70e1fd,null))['then'](removeEntity(_0x70e1fd,null))['catch'](handleError(_0x70e1fd,null));};exports['describe']=function(_0x20e98c,_0x13f3d8){return db[_0x6a71('0x32')][_0x6a71('0x52')]()['then'](respondWithResult(_0x13f3d8,null))['catch'](handleError(_0x13f3d8,null));};exports[_0x6a71('0x53')]=function(_0x36bea7,_0x281a22){var _0x5b0a8b={},_0xd76f47={},_0x43c6a9={'count':0x0,'rows':[]};_0xd76f47[_0x6a71('0x36')]=_[_0x6a71('0x39')](db[_0x6a71('0x32')][_0x6a71('0x33')]);_0xd76f47[_0x6a71('0x38')]=_[_0x6a71('0x39')](_0x36bea7[_0x6a71('0x38')]);_0xd76f47[_0x6a71('0x3a')]=_['intersection'](_0xd76f47[_0x6a71('0x36')],_0xd76f47[_0x6a71('0x38')]);_0x5b0a8b[_0x6a71('0x3b')]=_[_0x6a71('0x3c')](_0xd76f47[_0x6a71('0x36')],qs[_0x6a71('0x3d')](_0x36bea7[_0x6a71('0x38')][_0x6a71('0x3d')]));_0x5b0a8b['attributes']=_0x5b0a8b[_0x6a71('0x3b')]['length']?_0x5b0a8b[_0x6a71('0x3b')]:_0xd76f47[_0x6a71('0x36')];if(!_0x36bea7[_0x6a71('0x38')][_0x6a71('0x3f')](_0x6a71('0x40'))){_0x5b0a8b[_0x6a71('0x24')]=qs[_0x6a71('0x24')](_0x36bea7[_0x6a71('0x38')][_0x6a71('0x24')]);_0x5b0a8b[_0x6a71('0x26')]=qs[_0x6a71('0x26')](_0x36bea7[_0x6a71('0x38')][_0x6a71('0x26')]);}_0x5b0a8b[_0x6a71('0x41')]=qs[_0x6a71('0x42')](_0x36bea7[_0x6a71('0x38')][_0x6a71('0x42')]);_0x5b0a8b[_0x6a71('0x43')]=qs[_0x6a71('0x3a')](_[_0x6a71('0x44')](_0x36bea7[_0x6a71('0x38')],_0xd76f47['filters']));if(_0x36bea7[_0x6a71('0x38')][_0x6a71('0x45')]){_0x5b0a8b['where']=_[_0x6a71('0x4e')](_0x5b0a8b[_0x6a71('0x43')],{'$or':_[_0x6a71('0x37')](_0x5b0a8b['attributes'],function(_0x5365ab){var _0x4ed30b={};_0x4ed30b[_0x5365ab]={'$like':'%'+_0x36bea7[_0x6a71('0x38')][_0x6a71('0x45')]+'%'};return _0x4ed30b;})});}_0x5b0a8b=_[_0x6a71('0x4e')]({},_0x5b0a8b,_0x36bea7[_0x6a71('0x48')]);var _0x1d89e7={'where':_0x5b0a8b['where']};return db[_0x6a71('0x32')]['count'](_0x1d89e7)['then'](function(_0x2cf75d){_0x43c6a9[_0x6a71('0x25')]=_0x2cf75d;if(_0x36bea7[_0x6a71('0x38')][_0x6a71('0x4d')]){_0x5b0a8b[_0x6a71('0x49')]=[{'all':!![]}];}return db[_0x6a71('0x32')]['findAll'](_0x5b0a8b);})[_0x6a71('0x2d')](function(_0x86b3ee){_0x43c6a9['rows']=_0x86b3ee;return _0x43c6a9;})[_0x6a71('0x2d')](respondWithFilteredResult(_0x281a22,_0x5b0a8b,_0x6a71('0x53')))[_0x6a71('0x4b')](handleError(_0x281a22,null,_0x6a71('0x53')));};
\ No newline at end of file
index fe096b9..b03d76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c0c=['update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x45c48f,_0x4aa891){var _0xaf5037=function(_0x3e3c1f){while(--_0x3e3c1f){_0x45c48f['push'](_0x45c48f['shift']());}};_0xaf5037(++_0x4aa891);}(_0x0c0c,0x19b));var _0xc0c0=function(_0x4dade3,_0x59651c){_0x4dade3=_0x4dade3-0x0;var _0x5799d7=_0x0c0c[_0x4dade3];return _0x5799d7;};'use strict';var EventEmitter=require(_0xc0c0('0x0'));var VoiceQueueReport=require(_0xc0c0('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc0c0('0x2'),'afterDestroy':_0xc0c0('0x3')};function emitEvent(_0xc02c05){return function(_0x32ea2b,_0x3ab8a0,_0x192d90){VoiceQueueReportEvents[_0xc0c0('0x4')](_0xc02c05+':'+_0x32ea2b['id'],_0x32ea2b);VoiceQueueReportEvents['emit'](_0xc02c05,_0x32ea2b);_0x192d90(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xc0c0('0x5')](e,emitEvent(event));}}module[_0xc0c0('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x05ba=['emit','hasOwnProperty','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x531546,_0x3a0f83){var _0x5cc9ed=function(_0x2569d5){while(--_0x2569d5){_0x531546['push'](_0x531546['shift']());}};_0x5cc9ed(++_0x3a0f83);}(_0x05ba,0x8e));var _0xa05b=function(_0x43444b,_0x8cf95b){_0x43444b=_0x43444b-0x0;var _0x392fe5=_0x05ba[_0x43444b];return _0x392fe5;};'use strict';var EventEmitter=require(_0xa05b('0x0'));var VoiceQueueReport=require(_0xa05b('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xa05b('0x2')](0x0);var events={'afterCreate':_0xa05b('0x3'),'afterUpdate':_0xa05b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2a6c15){return function(_0x1d2bc1,_0x14cee0,_0xc23b7){VoiceQueueReportEvents['emit'](_0x2a6c15+':'+_0x1d2bc1['id'],_0x1d2bc1);VoiceQueueReportEvents[_0xa05b('0x5')](_0x2a6c15,_0x1d2bc1);_0xc23b7(null);};}for(var e in events){if(events[_0xa05b('0x6')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 9733c56..57ef783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bbf=['moment','bluebird','request-promise','path','rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','lodash','api'];(function(_0x27e617,_0x5cfdc2){var _0x218586=function(_0x9a012d){while(--_0x9a012d){_0x27e617['push'](_0x27e617['shift']());}};_0x218586(++_0x5cfdc2);}(_0x5bbf,0xa7));var _0xf5bb=function(_0x3686f4,_0xd4a373){_0x3686f4=_0x3686f4-0x0;var _0x168f2b=_0x5bbf[_0x3686f4];return _0x168f2b;};'use strict';var _=require(_0xf5bb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf5bb('0x1'));var moment=require(_0xf5bb('0x2'));var BPromise=require(_0xf5bb('0x3'));var rp=require(_0xf5bb('0x4'));var fs=require('fs');var path=require(_0xf5bb('0x5'));var rimraf=require(_0xf5bb('0x6'));var config=require('../../config/environment');var attributes=require(_0xf5bb('0x7'));module[_0xf5bb('0x8')]=function(_0x4707c7,_0x59af7d){return _0x4707c7[_0xf5bb('0x9')](_0xf5bb('0xa'),attributes,{'tableName':_0xf5bb('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf5bb('0xc')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e3f=['uniqueid','calleridnum','lodash','util','moment','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','report_queue'];(function(_0x1b330f,_0x114d01){var _0x1b2bc2=function(_0x29e1da){while(--_0x29e1da){_0x1b330f['push'](_0x1b330f['shift']());}};_0x1b2bc2(++_0x114d01);}(_0x3e3f,0xe8));var _0xf3e3=function(_0x395c47,_0x59abb6){_0x395c47=_0x395c47-0x0;var _0x4c2e07=_0x3e3f[_0x395c47];return _0x4c2e07;};'use strict';var _=require(_0xf3e3('0x0'));var util=require(_0xf3e3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf3e3('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf3e3('0x3'));var config=require(_0xf3e3('0x4'));var attributes=require(_0xf3e3('0x5'));module[_0xf3e3('0x6')]=function(_0x2d976d,_0x474fc5){return _0x2d976d['define']('VoiceQueueReport',attributes,{'tableName':_0xf3e3('0x7'),'paranoid':![],'indexes':[{'fields':[_0xf3e3('0x8')]},{'fields':[_0xf3e3('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index cb26c76..874d712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e3=['options','raw','where','attributes','limit','include','map','model','stringify','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','./voiceQueueReport.socket','register','request','then','info','request\x20sent','debug','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll'];(function(_0x49c24d,_0x134b43){var _0x322cb9=function(_0x3028a2){while(--_0x3028a2){_0x49c24d['push'](_0x49c24d['shift']());}};_0x322cb9(++_0x134b43);}(_0x25e3,0x8f));var _0x325e=function(_0x4ab251,_0x29bde7){_0x4ab251=_0x4ab251-0x0;var _0x4d694f=_0x25e3[_0x4ab251];return _0x4d694f;};'use strict';var _=require(_0x325e('0x0'));var util=require(_0x325e('0x1'));var moment=require(_0x325e('0x2'));var BPromise=require('bluebird');var rs=require(_0x325e('0x3'));var fs=require('fs');var Redis=require(_0x325e('0x4'));var db=require(_0x325e('0x5'))['db'];var utils=require(_0x325e('0x6'));var logger=require(_0x325e('0x7'))(_0x325e('0x8'));var config=require(_0x325e('0x9'));var jayson=require(_0x325e('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x325e('0xb')]=_['defaults'](config[_0x325e('0xb')],{'host':_0x325e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x325e('0xb')]));require(_0x325e('0xd'))[_0x325e('0xe')](socket);function respondWithRpcPromise(_0x27ac5a,_0x3ccf96,_0x45192f){return new BPromise(function(_0x277372,_0x230a5d){return client[_0x325e('0xf')](_0x27ac5a,_0x45192f)[_0x325e('0x10')](function(_0x1c1da7){logger[_0x325e('0x11')]('VoiceQueueReport,\x20%s,\x20%s',_0x3ccf96,_0x325e('0x12'));logger[_0x325e('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x3ccf96,_0x325e('0x12'),JSON['stringify'](_0x1c1da7));if(_0x1c1da7[_0x325e('0x14')]){if(_0x1c1da7[_0x325e('0x14')][_0x325e('0x15')]===0x1f4){logger[_0x325e('0x14')](_0x325e('0x16'),_0x3ccf96,_0x1c1da7[_0x325e('0x14')]['message']);return _0x230a5d(_0x1c1da7[_0x325e('0x14')][_0x325e('0x17')]);}logger['error'](_0x325e('0x16'),_0x3ccf96,_0x1c1da7[_0x325e('0x14')]['message']);return _0x277372(_0x1c1da7['error'][_0x325e('0x17')]);}else{logger[_0x325e('0x11')](_0x325e('0x16'),_0x3ccf96,_0x325e('0x12'));_0x277372(_0x1c1da7[_0x325e('0x18')][_0x325e('0x17')]);}})[_0x325e('0x19')](function(_0x5a5b8d){logger['error'](_0x325e('0x16'),_0x3ccf96,_0x5a5b8d);_0x230a5d(_0x5a5b8d);});});}exports[_0x325e('0x1a')]=function(_0x3621ae){var _0x8a6199=this;return new Promise(function(_0x52a102,_0x50572b){return db[_0x325e('0x1b')][_0x325e('0x1c')]({'raw':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x1e')]===undefined?!![]:![]:!![],'where':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x1f')]||null:null,'attributes':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x20')]||null:null,'limit':_0x3621ae['options']?_0x3621ae[_0x325e('0x1d')][_0x325e('0x21')]||null:null,'include':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x22')]?_[_0x325e('0x23')](_0x3621ae['options'][_0x325e('0x22')],function(_0x270dba){return{'model':db[_0x270dba['model']],'as':_0x270dba['as'],'attributes':_0x270dba['attributes'],'include':_0x270dba[_0x325e('0x22')]?_[_0x325e('0x23')](_0x270dba[_0x325e('0x22')],function(_0xb4c788){return{'model':db[_0xb4c788[_0x325e('0x24')]],'as':_0xb4c788['as'],'attributes':_0xb4c788['attributes'],'include':_0xb4c788['include']?_[_0x325e('0x23')](_0xb4c788[_0x325e('0x22')],function(_0x137117){return{'model':db[_0x137117[_0x325e('0x24')]],'as':_0x137117['as'],'attributes':_0x137117[_0x325e('0x20')]};}):[]};}):[]};}):[]:[]})[_0x325e('0x10')](function(_0x1239b5){logger[_0x325e('0x11')](_0x325e('0x1a'),_0x3621ae);logger[_0x325e('0x13')](_0x325e('0x1a'),_0x3621ae,JSON[_0x325e('0x25')](_0x1239b5));_0x52a102(_0x1239b5);})['catch'](function(_0x55ea9a){logger[_0x325e('0x14')](_0x325e('0x1a'),_0x55ea9a[_0x325e('0x17')],_0x3621ae);_0x50572b(_0x8a6199[_0x325e('0x14')](0x1f4,_0x55ea9a[_0x325e('0x17')]));});});};exports['CreateVoiceQueueReport']=function(_0x57fe72){var _0x226d52=this;return new Promise(function(_0x483617,_0x246ea5){return db[_0x325e('0x1b')][_0x325e('0x26')](_0x57fe72[_0x325e('0x27')],{'raw':_0x57fe72['options']?_0x57fe72[_0x325e('0x1d')][_0x325e('0x1e')]===undefined?!![]:![]:!![]})[_0x325e('0x10')](function(_0x13e702){logger[_0x325e('0x11')](_0x325e('0x28'),_0x57fe72);logger[_0x325e('0x13')](_0x325e('0x28'),_0x57fe72,JSON[_0x325e('0x25')](_0x13e702));_0x483617(_0x13e702);})[_0x325e('0x19')](function(_0x313681){logger['error']('CreateVoiceQueueReport',_0x313681[_0x325e('0x17')],_0x57fe72);_0x246ea5(_0x226d52['error'](0x1f4,_0x313681[_0x325e('0x17')]));});});};exports[_0x325e('0x29')]=function(_0x5b2ef7){var _0x2b0b94=this;return new Promise(function(_0x4de4a1,_0x1c1f12){return db[_0x325e('0x1b')][_0x325e('0x2a')](_0x5b2ef7[_0x325e('0x27')],{'raw':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7[_0x325e('0x1d')][_0x325e('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7[_0x325e('0x1d')][_0x325e('0x1f')]||null:null,'attributes':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7[_0x325e('0x1d')][_0x325e('0x20')]||null:null,'limit':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7['options'][_0x325e('0x21')]||null:null})['then'](function(_0x51c7b0){logger[_0x325e('0x11')](_0x325e('0x29'),_0x5b2ef7);logger[_0x325e('0x13')](_0x325e('0x29'),_0x5b2ef7,JSON[_0x325e('0x25')](_0x51c7b0));_0x4de4a1(_0x51c7b0);})[_0x325e('0x19')](function(_0x596f4a){logger[_0x325e('0x14')](_0x325e('0x29'),_0x596f4a[_0x325e('0x17')],_0x5b2ef7);_0x1c1f12(_0x2b0b94[_0x325e('0x14')](0x1f4,_0x596f4a[_0x325e('0x17')]));});});};
\ No newline at end of file
+var _0x9d50=['attributes','model','map','include','then','GetVoiceQueueReport','debug','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','raw','limit','lodash','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','./voiceQueueReport.socket','register','info','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','VoiceQueueReport,\x20%s,\x20%s','message','catch','VoiceQueueReport','findAll','options','where'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x9d50,0xa5));var _0x09d5=function(_0x40aa03,_0xacf577){_0x40aa03=_0x40aa03-0x0;var _0x190fb8=_0x9d50[_0x40aa03];return _0x190fb8;};'use strict';var _=require(_0x09d5('0x0'));var util=require('util');var moment=require(_0x09d5('0x1'));var BPromise=require(_0x09d5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x09d5('0x3'));var logger=require(_0x09d5('0x4'))(_0x09d5('0x5'));var config=require(_0x09d5('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x09d5('0x7')][_0x09d5('0x8')]({'port':0x232a});config[_0x09d5('0x9')]=_[_0x09d5('0xa')](config[_0x09d5('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x09d5('0xb'))[_0x09d5('0xc')](socket);function respondWithRpcPromise(_0x526ae1,_0xd723db,_0x42ce3b){return new BPromise(function(_0x44ca3a,_0x2cdf56){return client['request'](_0x526ae1,_0x42ce3b)['then'](function(_0xe0f7a3){logger[_0x09d5('0xd')]('VoiceQueueReport,\x20%s,\x20%s',_0xd723db,'request\x20sent');logger['debug'](_0x09d5('0xe'),_0xd723db,_0x09d5('0xf'),JSON[_0x09d5('0x10')](_0xe0f7a3));if(_0xe0f7a3[_0x09d5('0x11')]){if(_0xe0f7a3[_0x09d5('0x11')]['code']===0x1f4){logger[_0x09d5('0x11')](_0x09d5('0x12'),_0xd723db,_0xe0f7a3[_0x09d5('0x11')][_0x09d5('0x13')]);return _0x2cdf56(_0xe0f7a3[_0x09d5('0x11')][_0x09d5('0x13')]);}logger[_0x09d5('0x11')](_0x09d5('0x12'),_0xd723db,_0xe0f7a3[_0x09d5('0x11')][_0x09d5('0x13')]);return _0x44ca3a(_0xe0f7a3[_0x09d5('0x11')]['message']);}else{logger[_0x09d5('0xd')]('VoiceQueueReport,\x20%s,\x20%s',_0xd723db,_0x09d5('0xf'));_0x44ca3a(_0xe0f7a3['result']['message']);}})[_0x09d5('0x14')](function(_0x176170){logger['error'](_0x09d5('0x12'),_0xd723db,_0x176170);_0x2cdf56(_0x176170);});});}exports['GetVoiceQueueReport']=function(_0x181c69){var _0x292483=this;return new Promise(function(_0x222baf,_0x13d1a7){return db[_0x09d5('0x15')][_0x09d5('0x16')]({'raw':_0x181c69['options']?_0x181c69['options']['raw']===undefined?!![]:![]:!![],'where':_0x181c69['options']?_0x181c69[_0x09d5('0x17')][_0x09d5('0x18')]||null:null,'attributes':_0x181c69[_0x09d5('0x17')]?_0x181c69[_0x09d5('0x17')][_0x09d5('0x19')]||null:null,'limit':_0x181c69['options']?_0x181c69[_0x09d5('0x17')]['limit']||null:null,'include':_0x181c69[_0x09d5('0x17')]?_0x181c69['options']['include']?_['map'](_0x181c69[_0x09d5('0x17')]['include'],function(_0x5f1317){return{'model':db[_0x5f1317[_0x09d5('0x1a')]],'as':_0x5f1317['as'],'attributes':_0x5f1317[_0x09d5('0x19')],'include':_0x5f1317['include']?_[_0x09d5('0x1b')](_0x5f1317[_0x09d5('0x1c')],function(_0x4351a6){return{'model':db[_0x4351a6['model']],'as':_0x4351a6['as'],'attributes':_0x4351a6[_0x09d5('0x19')],'include':_0x4351a6['include']?_[_0x09d5('0x1b')](_0x4351a6['include'],function(_0x129f39){return{'model':db[_0x129f39[_0x09d5('0x1a')]],'as':_0x129f39['as'],'attributes':_0x129f39[_0x09d5('0x19')]};}):[]};}):[]};}):[]:[]})[_0x09d5('0x1d')](function(_0x1c3879){logger[_0x09d5('0xd')](_0x09d5('0x1e'),_0x181c69);logger[_0x09d5('0x1f')]('GetVoiceQueueReport',_0x181c69,JSON['stringify'](_0x1c3879));_0x222baf(_0x1c3879);})['catch'](function(_0x5547dc){logger[_0x09d5('0x11')](_0x09d5('0x1e'),_0x5547dc[_0x09d5('0x13')],_0x181c69);_0x13d1a7(_0x292483['error'](0x1f4,_0x5547dc[_0x09d5('0x13')]));});});};exports[_0x09d5('0x20')]=function(_0x243b90){var _0x23a7b0=this;return new Promise(function(_0x526893,_0x2cb559){return db['VoiceQueueReport'][_0x09d5('0x21')](_0x243b90[_0x09d5('0x22')],{'raw':_0x243b90['options']?_0x243b90[_0x09d5('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x09d5('0x1d')](function(_0x5a79d6){logger[_0x09d5('0xd')]('CreateVoiceQueueReport',_0x243b90);logger[_0x09d5('0x1f')](_0x09d5('0x20'),_0x243b90,JSON[_0x09d5('0x10')](_0x5a79d6));_0x526893(_0x5a79d6);})[_0x09d5('0x14')](function(_0x2664ae){logger['error']('CreateVoiceQueueReport',_0x2664ae[_0x09d5('0x13')],_0x243b90);_0x2cb559(_0x23a7b0[_0x09d5('0x11')](0x1f4,_0x2664ae['message']));});});};exports[_0x09d5('0x23')]=function(_0x520109){var _0x29fcca=this;return new Promise(function(_0x496219,_0x3e2faf){return db[_0x09d5('0x15')]['update'](_0x520109[_0x09d5('0x22')],{'raw':_0x520109[_0x09d5('0x17')]?_0x520109[_0x09d5('0x17')][_0x09d5('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x520109[_0x09d5('0x17')]?_0x520109['options'][_0x09d5('0x18')]||null:null,'attributes':_0x520109[_0x09d5('0x17')]?_0x520109[_0x09d5('0x17')]['attributes']||null:null,'limit':_0x520109[_0x09d5('0x17')]?_0x520109[_0x09d5('0x17')][_0x09d5('0x25')]||null:null})['then'](function(_0x59cec3){logger[_0x09d5('0xd')](_0x09d5('0x23'),_0x520109);logger[_0x09d5('0x1f')]('UpdateVoiceQueueReport',_0x520109,JSON['stringify'](_0x59cec3));_0x496219(_0x59cec3);})[_0x09d5('0x14')](function(_0x63b247){logger[_0x09d5('0x11')]('UpdateVoiceQueueReport',_0x63b247[_0x09d5('0x13')],_0x520109);_0x3e2faf(_0x29fcca[_0x09d5('0x11')](0x1f4,_0x63b247[_0x09d5('0x13')]));});});};
\ No newline at end of file
index d96f608..6e28172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a01=['save','remove','removeListener','length','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x5b9c2b,_0x18429b){var _0x1c6389=function(_0x25ae1f){while(--_0x25ae1f){_0x5b9c2b['push'](_0x5b9c2b['shift']());}};_0x1c6389(++_0x18429b);}(_0x5a01,0x1af));var _0x15a0=function(_0x4a095e,_0x381cd5){_0x4a095e=_0x4a095e-0x0;var _0x10ef73=_0x5a01[_0x4a095e];return _0x10ef73;};'use strict';var VoiceQueueReportEvents=require(_0x15a0('0x0'));var events=[_0x15a0('0x1'),_0x15a0('0x2'),'update'];function createListener(_0x58ef33,_0x2e5096){return function(_0x2c65fb){_0x2e5096['emit'](_0x58ef33,_0x2c65fb);};}function removeListener(_0x1c83a1,_0x12ae6b){return function(){VoiceQueueReportEvents[_0x15a0('0x3')](_0x1c83a1,_0x12ae6b);};}exports['register']=function(_0x5cc5bd){for(var _0x2e15f2=0x0,_0x52ab0=events[_0x15a0('0x4')];_0x2e15f2<_0x52ab0;_0x2e15f2++){var _0x502248=events[_0x2e15f2];var _0x44f39a=createListener(_0x15a0('0x5')+_0x502248,_0x5cc5bd);VoiceQueueReportEvents['on'](_0x502248,_0x44f39a);}};
\ No newline at end of file
+var _0x3c06=['save','remove','update','emit','removeListener','register','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x10677e,_0x1e6c90){var _0x33c753=function(_0x35ecbf){while(--_0x35ecbf){_0x10677e['push'](_0x10677e['shift']());}};_0x33c753(++_0x1e6c90);}(_0x3c06,0xf7));var _0x63c0=function(_0x2659e7,_0x377ed1){_0x2659e7=_0x2659e7-0x0;var _0x2f86e5=_0x3c06[_0x2659e7];return _0x2f86e5;};'use strict';var VoiceQueueReportEvents=require(_0x63c0('0x0'));var events=[_0x63c0('0x1'),_0x63c0('0x2'),_0x63c0('0x3')];function createListener(_0x306a60,_0x26c91d){return function(_0x599594){_0x26c91d[_0x63c0('0x4')](_0x306a60,_0x599594);};}function removeListener(_0x215a64,_0x299cdc){return function(){VoiceQueueReportEvents[_0x63c0('0x5')](_0x215a64,_0x299cdc);};}exports[_0x63c0('0x6')]=function(_0x4474bd){for(var _0x2fe268=0x0,_0x4e1f3f=events['length'];_0x2fe268<_0x4e1f3f;_0x2fe268++){var _0x10fe3a=events[_0x2fe268];var _0x349be4=createListener(_0x63c0('0x7')+_0x10fe3a,_0x4474bd);VoiceQueueReportEvents['on'](_0x10fe3a,_0x349be4);}};
\ No newline at end of file
index 5da3f21..596cbcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ca=['update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','index','/:id','isAuthenticated','show','post','create','put'];(function(_0x394955,_0x59ea69){var _0x1c02d4=function(_0x333b97){while(--_0x333b97){_0x394955['push'](_0x394955['shift']());}};_0x1c02d4(++_0x59ea69);}(_0x10ca,0x1a7));var _0xa10c=function(_0x104d0d,_0x81e4ad){_0x104d0d=_0x104d0d-0x0;var _0x3889ac=_0x10ca[_0x104d0d];return _0x3889ac;};'use strict';var multer=require(_0xa10c('0x0'));var util=require(_0xa10c('0x1'));var path=require('path');var timeout=require(_0xa10c('0x2'));var express=require(_0xa10c('0x3'));var router=express['Router']();var fs_extra=require(_0xa10c('0x4'));var auth=require(_0xa10c('0x5'));var interaction=require(_0xa10c('0x6'));var config=require(_0xa10c('0x7'));var controller=require(_0xa10c('0x8'));router[_0xa10c('0x9')]('/',auth['isAuthenticated'](),controller[_0xa10c('0xa')]);router[_0xa10c('0x9')](_0xa10c('0xb'),auth[_0xa10c('0xc')](),controller[_0xa10c('0xd')]);router[_0xa10c('0xe')]('/',auth[_0xa10c('0xc')](),controller[_0xa10c('0xf')]);router[_0xa10c('0x10')](_0xa10c('0xb'),auth[_0xa10c('0xc')](),controller[_0xa10c('0x11')]);router[_0xa10c('0x12')]('/:id',auth[_0xa10c('0xc')](),controller['destroy']);module[_0xa10c('0x13')]=router;
\ No newline at end of file
+var _0xbfb0=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','isAuthenticated','index','get','show','post','create','put','/:id','update','delete','exports','multer','path'];(function(_0x1b80e7,_0x12d2a3){var _0x4145e4=function(_0x23de4b){while(--_0x23de4b){_0x1b80e7['push'](_0x1b80e7['shift']());}};_0x4145e4(++_0x12d2a3);}(_0xbfb0,0x166));var _0x0bfb=function(_0x3d9176,_0x399d6f){_0x3d9176=_0x3d9176-0x0;var _0x12adc5=_0xbfb0[_0x3d9176];return _0x12adc5;};'use strict';var multer=require(_0x0bfb('0x0'));var util=require('util');var path=require(_0x0bfb('0x1'));var timeout=require('connect-timeout');var express=require(_0x0bfb('0x2'));var router=express[_0x0bfb('0x3')]();var fs_extra=require(_0x0bfb('0x4'));var auth=require(_0x0bfb('0x5'));var interaction=require(_0x0bfb('0x6'));var config=require(_0x0bfb('0x7'));var controller=require(_0x0bfb('0x8'));router['get']('/',auth[_0x0bfb('0x9')](),controller[_0x0bfb('0xa')]);router[_0x0bfb('0xb')]('/:id',auth[_0x0bfb('0x9')](),controller[_0x0bfb('0xc')]);router[_0x0bfb('0xd')]('/',auth[_0x0bfb('0x9')](),controller[_0x0bfb('0xe')]);router[_0x0bfb('0xf')](_0x0bfb('0x10'),auth[_0x0bfb('0x9')](),controller[_0x0bfb('0x11')]);router[_0x0bfb('0x12')](_0x0bfb('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x0bfb('0x13')]=router;
\ No newline at end of file
index cfe75a2..707c6ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd1b=['exports','STRING','DATE','moment'];(function(_0x38dc1e,_0x2435e4){var _0x4e69e7=function(_0x4026d){while(--_0x4026d){_0x38dc1e['push'](_0x38dc1e['shift']());}};_0x4e69e7(++_0x2435e4);}(_0xdd1b,0x1e7));var _0xbdd1=function(_0x49372a,_0x2970c8){_0x49372a=_0x49372a-0x0;var _0x2b8144=_0xdd1b[_0x49372a];return _0x2b8144;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xbdd1('0x0'));module[_0xbdd1('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xbdd1('0x3')],'allowNull':![],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
+var _0x0bfd=['moment','STRING','format','sequelize'];(function(_0x201de1,_0x4f219a){var _0x438939=function(_0x56878c){while(--_0x56878c){_0x201de1['push'](_0x201de1['shift']());}};_0x438939(++_0x4f219a);}(_0x0bfd,0x10f));var _0xd0bf=function(_0x56ef27,_0x4b8894){_0x56ef27=_0x56ef27-0x0;var _0x457ae3=_0x0bfd[_0x56ef27];return _0x457ae3;};'use strict';var Sequelize=require(_0xd0bf('0x0'));var moment=require(_0xd0bf('0x1'));module['exports']={'time':{'type':Sequelize[_0xd0bf('0x2')]},'callid':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xd0bf('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0xd0bf('0x3')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
index 659f61e..6117127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6bd=['path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','params','length','find','update','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util'];(function(_0xd7b0a4,_0x53c7d3){var _0x184e9e=function(_0x325bbd){while(--_0x325bbd){_0xd7b0a4['push'](_0xd7b0a4['shift']());}};_0x184e9e(++_0x53c7d3);}(_0xf6bd,0xd5));var _0xdf6b=function(_0x3984a6,_0x4adaba){_0x3984a6=_0x3984a6-0x0;var _0x2cc75f=_0xf6bd[_0x3984a6];return _0x2cc75f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdf6b('0x0'));var zipdir=require(_0xdf6b('0x1'));var jsonpatch=require(_0xdf6b('0x2'));var rp=require(_0xdf6b('0x3'));var moment=require('moment');var BPromise=require(_0xdf6b('0x4'));var Mustache=require('mustache');var util=require(_0xdf6b('0x5'));var path=require(_0xdf6b('0x6'));var sox=require(_0xdf6b('0x7'));var csv=require(_0xdf6b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdf6b('0x9'));var _=require(_0xdf6b('0xa'));var squel=require(_0xdf6b('0xb'));var crypto=require('crypto');var jsforce=require(_0xdf6b('0xc'));var deskjs=require(_0xdf6b('0xd'));var toCsv=require(_0xdf6b('0x8'));var querystring=require(_0xdf6b('0xe'));var Papa=require(_0xdf6b('0xf'));var Redis=require(_0xdf6b('0x10'));var authService=require(_0xdf6b('0x11'));var qs=require(_0xdf6b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdf6b('0x13'))('api');var utils=require(_0xdf6b('0x14'));var config=require(_0xdf6b('0x15'));var licenseUtil=require(_0xdf6b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53ede8,_0x4cf33c){_0x4cf33c=_0x4cf33c||0xcc;return function(_0x24b425){if(_0x24b425){return _0x53ede8[_0xdf6b('0x17')](_0x4cf33c);}return _0x53ede8[_0xdf6b('0x18')](_0x4cf33c)[_0xdf6b('0x19')]();};}function respondWithResult(_0x2d7cb8,_0x457b13){_0x457b13=_0x457b13||0xc8;return function(_0x5294f9){if(_0x5294f9){return _0x2d7cb8[_0xdf6b('0x18')](_0x457b13)['json'](_0x5294f9);}};}function respondWithFilteredResult(_0x1847b0,_0x12b411){return function(_0x4ccb82){if(_0x4ccb82){var _0x12d870=typeof _0x12b411[_0xdf6b('0x1a')]===_0xdf6b('0x1b')&&typeof _0x12b411[_0xdf6b('0x1c')]===_0xdf6b('0x1b');var _0x5a1bdb=_0x4ccb82[_0xdf6b('0x1d')];var _0x37b5cc=_0x12d870?0x0:_0x12b411[_0xdf6b('0x1a')];var _0x56d597=_0x12d870?_0x4ccb82[_0xdf6b('0x1d')]:_0x12b411[_0xdf6b('0x1a')]+_0x12b411[_0xdf6b('0x1c')];var _0x1e055d;if(_0x56d597>=_0x5a1bdb){_0x56d597=_0x5a1bdb;_0x1e055d=0xc8;}else{_0x1e055d=0xce;}_0x1847b0['status'](_0x1e055d);return _0x1847b0['set'](_0xdf6b('0x1e'),_0x37b5cc+'-'+_0x56d597+'/'+_0x5a1bdb)['json'](_0x4ccb82);}return null;};}function patchUpdates(_0x575c2f){return function(_0x14c019){try{jsonpatch[_0xdf6b('0x1f')](_0x14c019,_0x575c2f,!![]);}catch(_0x241e87){return BPromise[_0xdf6b('0x20')](_0x241e87);}return _0x14c019[_0xdf6b('0x21')]();};}function saveUpdates(_0x1a8a6e,_0xf3fa40){return function(_0x212452){if(_0x212452){return _0x212452['update'](_0x1a8a6e)['then'](function(_0x29df3a){return _0x29df3a;});}return null;};}function removeEntity(_0x17f2c5,_0x650e9a){return function(_0x2679b6){if(_0x2679b6){return _0x2679b6['destroy']()['then'](function(){_0x17f2c5[_0xdf6b('0x18')](0xcc)[_0xdf6b('0x19')]();});}};}function handleEntityNotFound(_0x4f7aa2,_0x405db6){return function(_0x2240ab){if(!_0x2240ab){_0x4f7aa2[_0xdf6b('0x17')](0x194);}return _0x2240ab;};}function handleError(_0x1ee98b,_0x5c3922){_0x5c3922=_0x5c3922||0x1f4;return function(_0x30a7ef){logger[_0xdf6b('0x22')](_0x30a7ef[_0xdf6b('0x23')]);if(_0x30a7ef['name']){delete _0x30a7ef[_0xdf6b('0x24')];}_0x1ee98b[_0xdf6b('0x18')](_0x5c3922)[_0xdf6b('0x25')](_0x30a7ef);};}exports[_0xdf6b('0x26')]=function(_0x594897,_0x30d431){var _0xca4d68={},_0x36e688={},_0x11aa16={'count':0x0,'rows':[]};var _0x379f28=_[_0xdf6b('0x27')](db[_0xdf6b('0x28')][_0xdf6b('0x29')],function(_0x14fca2){return{'name':_0x14fca2[_0xdf6b('0x2a')],'type':_0x14fca2[_0xdf6b('0x2b')][_0xdf6b('0x2c')]};});_0x36e688[_0xdf6b('0x2d')]=_[_0xdf6b('0x27')](_0x379f28,_0xdf6b('0x24'));_0x36e688[_0xdf6b('0x2e')]=_[_0xdf6b('0x2f')](_0x594897['query']);_0x36e688['filters']=_[_0xdf6b('0x30')](_0x36e688[_0xdf6b('0x2d')],_0x36e688[_0xdf6b('0x2e')]);_0xca4d68[_0xdf6b('0x31')]=_['intersection'](_0x36e688[_0xdf6b('0x2d')],qs[_0xdf6b('0x32')](_0x594897[_0xdf6b('0x2e')][_0xdf6b('0x32')]));_0xca4d68[_0xdf6b('0x31')]=_0xca4d68[_0xdf6b('0x31')]['length']?_0xca4d68['attributes']:_0x36e688[_0xdf6b('0x2d')];if(!_0x594897[_0xdf6b('0x2e')]['hasOwnProperty'](_0xdf6b('0x33'))){_0xca4d68[_0xdf6b('0x1c')]=qs[_0xdf6b('0x1c')](_0x594897[_0xdf6b('0x2e')][_0xdf6b('0x1c')]);_0xca4d68[_0xdf6b('0x1a')]=qs[_0xdf6b('0x1a')](_0x594897[_0xdf6b('0x2e')]['offset']);}_0xca4d68[_0xdf6b('0x34')]=qs[_0xdf6b('0x35')](_0x594897['query']['sort']);_0xca4d68['where']=qs[_0xdf6b('0x36')](_[_0xdf6b('0x37')](_0x594897[_0xdf6b('0x2e')],_0x36e688[_0xdf6b('0x36')]),_0x379f28);if(_0x594897['query'][_0xdf6b('0x38')]){_0xca4d68['where']=_[_0xdf6b('0x39')](_0xca4d68[_0xdf6b('0x3a')],{'$or':_[_0xdf6b('0x27')](_0x379f28,function(_0x295f55){if(_0x295f55[_0xdf6b('0x2b')]!==_0xdf6b('0x3b')){var _0x2efa96={};_0x2efa96[_0x295f55[_0xdf6b('0x24')]]={'$like':'%'+_0x594897[_0xdf6b('0x2e')][_0xdf6b('0x38')]+'%'};return _0x2efa96;}})});}_0xca4d68=_[_0xdf6b('0x39')]({},_0xca4d68,_0x594897[_0xdf6b('0x3c')]);var _0x4c3f20={'where':_0xca4d68[_0xdf6b('0x3a')]};return db[_0xdf6b('0x28')]['count'](_0x4c3f20)[_0xdf6b('0x3d')](function(_0x7fe3e5){_0x11aa16[_0xdf6b('0x1d')]=_0x7fe3e5;if(_0x594897['query'][_0xdf6b('0x3e')]){_0xca4d68[_0xdf6b('0x3f')]=[{'all':!![]}];}return db[_0xdf6b('0x28')][_0xdf6b('0x40')](_0xca4d68);})[_0xdf6b('0x3d')](function(_0x236a88){_0x11aa16[_0xdf6b('0x41')]=_0x236a88;return _0x11aa16;})[_0xdf6b('0x3d')](respondWithFilteredResult(_0x30d431,_0xca4d68))[_0xdf6b('0x42')](handleError(_0x30d431,null));};exports['show']=function(_0x2fa8c6,_0xd6d34d){var _0x250aa1={'raw':!![],'where':{'id':_0x2fa8c6[_0xdf6b('0x43')]['id']}},_0x52fbb1={};_0x52fbb1[_0xdf6b('0x2d')]=_[_0xdf6b('0x2f')](db[_0xdf6b('0x28')]['rawAttributes']);_0x52fbb1[_0xdf6b('0x2e')]=_[_0xdf6b('0x2f')](_0x2fa8c6[_0xdf6b('0x2e')]);_0x52fbb1[_0xdf6b('0x36')]=_[_0xdf6b('0x30')](_0x52fbb1['model'],_0x52fbb1[_0xdf6b('0x2e')]);_0x250aa1[_0xdf6b('0x31')]=_[_0xdf6b('0x30')](_0x52fbb1[_0xdf6b('0x2d')],qs[_0xdf6b('0x32')](_0x2fa8c6[_0xdf6b('0x2e')][_0xdf6b('0x32')]));_0x250aa1[_0xdf6b('0x31')]=_0x250aa1['attributes'][_0xdf6b('0x44')]?_0x250aa1[_0xdf6b('0x31')]:_0x52fbb1[_0xdf6b('0x2d')];if(_0x2fa8c6[_0xdf6b('0x2e')][_0xdf6b('0x3e')]){_0x250aa1[_0xdf6b('0x3f')]=[{'all':!![]}];}_0x250aa1=_[_0xdf6b('0x39')]({},_0x250aa1,_0x2fa8c6[_0xdf6b('0x3c')]);return db[_0xdf6b('0x28')][_0xdf6b('0x45')](_0x250aa1)[_0xdf6b('0x3d')](handleEntityNotFound(_0xd6d34d,null))[_0xdf6b('0x3d')](respondWithResult(_0xd6d34d,null))[_0xdf6b('0x42')](handleError(_0xd6d34d,null));};exports['create']=function(_0x2fb4dc,_0x16f230){return db[_0xdf6b('0x28')]['create'](_0x2fb4dc['body'],{})['then'](respondWithResult(_0x16f230,0xc9))['catch'](handleError(_0x16f230,null));};exports[_0xdf6b('0x46')]=function(_0x5d69b2,_0x2a0efa){if(_0x5d69b2[_0xdf6b('0x47')]['id']){delete _0x5d69b2[_0xdf6b('0x47')]['id'];}return db['VoiceQueuesLog'][_0xdf6b('0x45')]({'where':{'id':_0x5d69b2[_0xdf6b('0x43')]['id']}})['then'](handleEntityNotFound(_0x2a0efa,null))[_0xdf6b('0x3d')](saveUpdates(_0x5d69b2['body'],null))[_0xdf6b('0x3d')](respondWithResult(_0x2a0efa,null))[_0xdf6b('0x42')](handleError(_0x2a0efa,null));};exports[_0xdf6b('0x48')]=function(_0x39da3f,_0x253c95){return db['VoiceQueuesLog'][_0xdf6b('0x45')]({'where':{'id':_0x39da3f['params']['id']}})[_0xdf6b('0x3d')](handleEntityNotFound(_0x253c95,null))[_0xdf6b('0x3d')](removeEntity(_0x253c95,null))['catch'](handleError(_0x253c95,null));};
\ No newline at end of file
+var _0xddd0=['index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueuesLog','includeAll','findAll','rows','catch','show','params','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','name','send'];(function(_0x1f8db4,_0xd697e){var _0x128f66=function(_0x12e3e5){while(--_0x12e3e5){_0x1f8db4['push'](_0x1f8db4['shift']());}};_0x128f66(++_0xd697e);}(_0xddd0,0x6a));var _0x0ddd=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0xddd0[_0x13ce0c];return _0x4388fb;};'use strict';var emlformat=require(_0x0ddd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0ddd('0x1'));var jsonpatch=require(_0x0ddd('0x2'));var rp=require(_0x0ddd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0ddd('0x4'));var util=require(_0x0ddd('0x5'));var path=require(_0x0ddd('0x6'));var sox=require(_0x0ddd('0x7'));var csv=require(_0x0ddd('0x8'));var ejs=require(_0x0ddd('0x9'));var fs=require('fs');var fs_extra=require(_0x0ddd('0xa'));var _=require(_0x0ddd('0xb'));var squel=require(_0x0ddd('0xc'));var crypto=require(_0x0ddd('0xd'));var jsforce=require(_0x0ddd('0xe'));var deskjs=require(_0x0ddd('0xf'));var toCsv=require(_0x0ddd('0x8'));var querystring=require(_0x0ddd('0x10'));var Papa=require(_0x0ddd('0x11'));var Redis=require(_0x0ddd('0x12'));var authService=require(_0x0ddd('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ddd('0x14'));var logger=require(_0x0ddd('0x15'))('api');var utils=require(_0x0ddd('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0ddd('0x17'));var db=require(_0x0ddd('0x18'))['db'];function respondWithStatusCode(_0x508439,_0x57f622){_0x57f622=_0x57f622||0xcc;return function(_0x2c8a01){if(_0x2c8a01){return _0x508439[_0x0ddd('0x19')](_0x57f622);}return _0x508439[_0x0ddd('0x1a')](_0x57f622)[_0x0ddd('0x1b')]();};}function respondWithResult(_0x304ed6,_0x2c7d52){_0x2c7d52=_0x2c7d52||0xc8;return function(_0x4fc1da){if(_0x4fc1da){return _0x304ed6[_0x0ddd('0x1a')](_0x2c7d52)[_0x0ddd('0x1c')](_0x4fc1da);}};}function respondWithFilteredResult(_0xb2703d,_0x505700){return function(_0x9f5a35){if(_0x9f5a35){var _0x591a5c=typeof _0x505700[_0x0ddd('0x1d')]===_0x0ddd('0x1e')&&typeof _0x505700[_0x0ddd('0x1f')]===_0x0ddd('0x1e');var _0x4d82ef=_0x9f5a35[_0x0ddd('0x20')];var _0x165535=_0x591a5c?0x0:_0x505700[_0x0ddd('0x1d')];var _0x29ec18=_0x591a5c?_0x9f5a35['count']:_0x505700[_0x0ddd('0x1d')]+_0x505700[_0x0ddd('0x1f')];var _0x51bd49;if(_0x29ec18>=_0x4d82ef){_0x29ec18=_0x4d82ef;_0x51bd49=0xc8;}else{_0x51bd49=0xce;}_0xb2703d[_0x0ddd('0x1a')](_0x51bd49);return _0xb2703d[_0x0ddd('0x21')](_0x0ddd('0x22'),_0x165535+'-'+_0x29ec18+'/'+_0x4d82ef)[_0x0ddd('0x1c')](_0x9f5a35);}return null;};}function patchUpdates(_0x1a054d){return function(_0x5eb55c){try{jsonpatch['apply'](_0x5eb55c,_0x1a054d,!![]);}catch(_0x3d71dc){return BPromise['reject'](_0x3d71dc);}return _0x5eb55c[_0x0ddd('0x23')]();};}function saveUpdates(_0x248bc5,_0x2d4548){return function(_0x190c05){if(_0x190c05){return _0x190c05['update'](_0x248bc5)[_0x0ddd('0x24')](function(_0x31bac9){return _0x31bac9;});}return null;};}function removeEntity(_0x2d9031,_0x5ec845){return function(_0x5a88c0){if(_0x5a88c0){return _0x5a88c0[_0x0ddd('0x25')]()[_0x0ddd('0x24')](function(){_0x2d9031[_0x0ddd('0x1a')](0xcc)[_0x0ddd('0x1b')]();});}};}function handleEntityNotFound(_0x566a13,_0x123e1e){return function(_0x39b705){if(!_0x39b705){_0x566a13[_0x0ddd('0x19')](0x194);}return _0x39b705;};}function handleError(_0x3a7d25,_0x302c98){_0x302c98=_0x302c98||0x1f4;return function(_0x20b1bd){logger['error'](_0x20b1bd['stack']);if(_0x20b1bd[_0x0ddd('0x26')]){delete _0x20b1bd[_0x0ddd('0x26')];}_0x3a7d25[_0x0ddd('0x1a')](_0x302c98)[_0x0ddd('0x27')](_0x20b1bd);};}exports[_0x0ddd('0x28')]=function(_0x52b53b,_0x16910f){var _0xf9a690={},_0x5ff1a9={},_0x32881d={'count':0x0,'rows':[]};var _0x225dbe=_['map'](db['VoiceQueuesLog'][_0x0ddd('0x29')],function(_0x38ae20){return{'name':_0x38ae20['fieldName'],'type':_0x38ae20[_0x0ddd('0x2a')][_0x0ddd('0x2b')]};});_0x5ff1a9[_0x0ddd('0x2c')]=_[_0x0ddd('0x2d')](_0x225dbe,_0x0ddd('0x26'));_0x5ff1a9[_0x0ddd('0x2e')]=_[_0x0ddd('0x2f')](_0x52b53b[_0x0ddd('0x2e')]);_0x5ff1a9[_0x0ddd('0x30')]=_[_0x0ddd('0x31')](_0x5ff1a9[_0x0ddd('0x2c')],_0x5ff1a9[_0x0ddd('0x2e')]);_0xf9a690[_0x0ddd('0x32')]=_[_0x0ddd('0x31')](_0x5ff1a9[_0x0ddd('0x2c')],qs[_0x0ddd('0x33')](_0x52b53b[_0x0ddd('0x2e')][_0x0ddd('0x33')]));_0xf9a690[_0x0ddd('0x32')]=_0xf9a690[_0x0ddd('0x32')][_0x0ddd('0x34')]?_0xf9a690[_0x0ddd('0x32')]:_0x5ff1a9[_0x0ddd('0x2c')];if(!_0x52b53b['query']['hasOwnProperty'](_0x0ddd('0x35'))){_0xf9a690[_0x0ddd('0x1f')]=qs['limit'](_0x52b53b[_0x0ddd('0x2e')][_0x0ddd('0x1f')]);_0xf9a690['offset']=qs[_0x0ddd('0x1d')](_0x52b53b[_0x0ddd('0x2e')][_0x0ddd('0x1d')]);}_0xf9a690[_0x0ddd('0x36')]=qs[_0x0ddd('0x37')](_0x52b53b[_0x0ddd('0x2e')][_0x0ddd('0x37')]);_0xf9a690[_0x0ddd('0x38')]=qs[_0x0ddd('0x30')](_[_0x0ddd('0x39')](_0x52b53b[_0x0ddd('0x2e')],_0x5ff1a9['filters']),_0x225dbe);if(_0x52b53b[_0x0ddd('0x2e')][_0x0ddd('0x3a')]){_0xf9a690[_0x0ddd('0x38')]=_[_0x0ddd('0x3b')](_0xf9a690[_0x0ddd('0x38')],{'$or':_[_0x0ddd('0x2d')](_0x225dbe,function(_0x58845a){if(_0x58845a[_0x0ddd('0x2a')]!==_0x0ddd('0x3c')){var _0x9b0507={};_0x9b0507[_0x58845a[_0x0ddd('0x26')]]={'$like':'%'+_0x52b53b['query']['filter']+'%'};return _0x9b0507;}})});}_0xf9a690=_['merge']({},_0xf9a690,_0x52b53b[_0x0ddd('0x3d')]);var _0x197c3f={'where':_0xf9a690['where']};return db[_0x0ddd('0x3e')][_0x0ddd('0x20')](_0x197c3f)[_0x0ddd('0x24')](function(_0x2e5f00){_0x32881d[_0x0ddd('0x20')]=_0x2e5f00;if(_0x52b53b[_0x0ddd('0x2e')][_0x0ddd('0x3f')]){_0xf9a690['include']=[{'all':!![]}];}return db['VoiceQueuesLog'][_0x0ddd('0x40')](_0xf9a690);})[_0x0ddd('0x24')](function(_0x5bf23a){_0x32881d[_0x0ddd('0x41')]=_0x5bf23a;return _0x32881d;})[_0x0ddd('0x24')](respondWithFilteredResult(_0x16910f,_0xf9a690))[_0x0ddd('0x42')](handleError(_0x16910f,null));};exports[_0x0ddd('0x43')]=function(_0x2195bd,_0x1ffedf){var _0xacaeae={'raw':!![],'where':{'id':_0x2195bd[_0x0ddd('0x44')]['id']}},_0x5059dc={};_0x5059dc[_0x0ddd('0x2c')]=_[_0x0ddd('0x2f')](db[_0x0ddd('0x3e')][_0x0ddd('0x29')]);_0x5059dc[_0x0ddd('0x2e')]=_[_0x0ddd('0x2f')](_0x2195bd[_0x0ddd('0x2e')]);_0x5059dc[_0x0ddd('0x30')]=_[_0x0ddd('0x31')](_0x5059dc['model'],_0x5059dc[_0x0ddd('0x2e')]);_0xacaeae['attributes']=_[_0x0ddd('0x31')](_0x5059dc['model'],qs[_0x0ddd('0x33')](_0x2195bd[_0x0ddd('0x2e')][_0x0ddd('0x33')]));_0xacaeae[_0x0ddd('0x32')]=_0xacaeae[_0x0ddd('0x32')]['length']?_0xacaeae['attributes']:_0x5059dc[_0x0ddd('0x2c')];if(_0x2195bd['query'][_0x0ddd('0x3f')]){_0xacaeae[_0x0ddd('0x45')]=[{'all':!![]}];}_0xacaeae=_[_0x0ddd('0x3b')]({},_0xacaeae,_0x2195bd[_0x0ddd('0x3d')]);return db[_0x0ddd('0x3e')][_0x0ddd('0x46')](_0xacaeae)[_0x0ddd('0x24')](handleEntityNotFound(_0x1ffedf,null))[_0x0ddd('0x24')](respondWithResult(_0x1ffedf,null))[_0x0ddd('0x42')](handleError(_0x1ffedf,null));};exports[_0x0ddd('0x47')]=function(_0x58ce48,_0x3e59e5){return db[_0x0ddd('0x3e')][_0x0ddd('0x47')](_0x58ce48['body'],{})['then'](respondWithResult(_0x3e59e5,0xc9))[_0x0ddd('0x42')](handleError(_0x3e59e5,null));};exports['update']=function(_0x4f252f,_0x24a643){if(_0x4f252f[_0x0ddd('0x48')]['id']){delete _0x4f252f['body']['id'];}return db[_0x0ddd('0x3e')][_0x0ddd('0x46')]({'where':{'id':_0x4f252f['params']['id']}})[_0x0ddd('0x24')](handleEntityNotFound(_0x24a643,null))[_0x0ddd('0x24')](saveUpdates(_0x4f252f[_0x0ddd('0x48')],null))['then'](respondWithResult(_0x24a643,null))['catch'](handleError(_0x24a643,null));};exports[_0x0ddd('0x25')]=function(_0x4e2016,_0x55d681){return db[_0x0ddd('0x3e')][_0x0ddd('0x46')]({'where':{'id':_0x4e2016[_0x0ddd('0x44')]['id']}})[_0x0ddd('0x24')](handleEntityNotFound(_0x55d681,null))[_0x0ddd('0x24')](removeEntity(_0x55d681,null))['catch'](handleError(_0x55d681,null));};
\ No newline at end of file
index 8375d38..f8a3c25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a1b=['exports','define','event_dtm','event','lodash','util','api','request-promise','path','./voiceQueuesLog.attributes'];(function(_0x343d2b,_0x5c9f07){var _0x5de679=function(_0x174f77){while(--_0x174f77){_0x343d2b['push'](_0x343d2b['shift']());}};_0x5de679(++_0x5c9f07);}(_0x7a1b,0x11c));var _0xb7a1=function(_0x51217d,_0x3be502){_0x51217d=_0x51217d-0x0;var _0x4d996e=_0x7a1b[_0x51217d];return _0x4d996e;};'use strict';var _=require(_0xb7a1('0x0'));var util=require(_0xb7a1('0x1'));var logger=require('../../config/logger')(_0xb7a1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb7a1('0x3'));var fs=require('fs');var path=require(_0xb7a1('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb7a1('0x5'));module[_0xb7a1('0x6')]=function(_0x32b2fa,_0x10862a){return _0x32b2fa[_0xb7a1('0x7')]('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0xb7a1('0x8'),'fields':[_0xb7a1('0x9'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0xf26c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','voice_queues_log','event','dtm','lodash','util','../../config/logger'];(function(_0x2f538b,_0x159807){var _0x52906b=function(_0x2b6f76){while(--_0x2b6f76){_0x2f538b['push'](_0x2f538b['shift']());}};_0x52906b(++_0x159807);}(_0xf26c,0x1b0));var _0xcf26=function(_0x22e556,_0x1608a3){_0x22e556=_0x22e556-0x0;var _0x4ab7c9=_0xf26c[_0x22e556];return _0x4ab7c9;};'use strict';var _=require(_0xcf26('0x0'));var util=require(_0xcf26('0x1'));var logger=require(_0xcf26('0x2'))(_0xcf26('0x3'));var moment=require(_0xcf26('0x4'));var BPromise=require(_0xcf26('0x5'));var rp=require(_0xcf26('0x6'));var fs=require('fs');var path=require(_0xcf26('0x7'));var rimraf=require(_0xcf26('0x8'));var config=require(_0xcf26('0x9'));var attributes=require('./voiceQueuesLog.attributes');module[_0xcf26('0xa')]=function(_0x34c679,_0x3d409f){return _0x34c679[_0xcf26('0xb')]('VoiceQueuesLog',attributes,{'tableName':_0xcf26('0xc'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0xcf26('0xd'),_0xcf26('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index ff62f14..0562c2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d8=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','request','then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','lodash'];(function(_0x5ed68b,_0x25296c){var _0x510eaf=function(_0x34fdc6){while(--_0x34fdc6){_0x5ed68b['push'](_0x5ed68b['shift']());}};_0x510eaf(++_0x25296c);}(_0xd5d8,0x1a3));var _0x8d5d=function(_0x498b29,_0x6dd10f){_0x498b29=_0x498b29-0x0;var _0x260875=_0xd5d8[_0x498b29];return _0x260875;};'use strict';var _=require(_0x8d5d('0x0'));var util=require(_0x8d5d('0x1'));var moment=require(_0x8d5d('0x2'));var BPromise=require(_0x8d5d('0x3'));var rs=require(_0x8d5d('0x4'));var fs=require('fs');var Redis=require(_0x8d5d('0x5'));var db=require(_0x8d5d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8d5d('0x7'))(_0x8d5d('0x8'));var config=require('../../config/environment');var jayson=require(_0x8d5d('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xf576d9,_0x598e94,_0x4ebe96){return new BPromise(function(_0x5dd009,_0x39a07d){return client[_0x8d5d('0xa')](_0xf576d9,_0x4ebe96)[_0x8d5d('0xb')](function(_0x3bc59d){logger['info'](_0x8d5d('0xc'),_0x598e94,_0x8d5d('0xd'));logger[_0x8d5d('0xe')](_0x8d5d('0xf'),_0x598e94,_0x8d5d('0xd'),JSON[_0x8d5d('0x10')](_0x3bc59d));if(_0x3bc59d['error']){if(_0x3bc59d['error'][_0x8d5d('0x11')]===0x1f4){logger[_0x8d5d('0x12')](_0x8d5d('0xc'),_0x598e94,_0x3bc59d[_0x8d5d('0x12')]['message']);return _0x39a07d(_0x3bc59d[_0x8d5d('0x12')][_0x8d5d('0x13')]);}logger[_0x8d5d('0x12')](_0x8d5d('0xc'),_0x598e94,_0x3bc59d[_0x8d5d('0x12')]['message']);return _0x5dd009(_0x3bc59d['error']['message']);}else{logger['info'](_0x8d5d('0xc'),_0x598e94,'request\x20sent');_0x5dd009(_0x3bc59d['result'][_0x8d5d('0x13')]);}})[_0x8d5d('0x14')](function(_0xd66fe1){logger[_0x8d5d('0x12')](_0x8d5d('0xc'),_0x598e94,_0xd66fe1);_0x39a07d(_0xd66fe1);});});}
\ No newline at end of file
+var _0x8430=['stringify','error','code','message','info','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x8430,0xd7));var _0x0843=function(_0x3a0b7f,_0x550d3b){_0x3a0b7f=_0x3a0b7f-0x0;var _0x551562=_0x8430[_0x3a0b7f];return _0x551562;};'use strict';var _=require('lodash');var util=require(_0x0843('0x0'));var moment=require(_0x0843('0x1'));var BPromise=require('bluebird');var rs=require(_0x0843('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0843('0x3'))['db'];var utils=require(_0x0843('0x4'));var logger=require(_0x0843('0x5'))('rpc');var config=require(_0x0843('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0843('0x7')][_0x0843('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x568d49,_0x137069,_0x43d908){return new BPromise(function(_0x45c2e7,_0x4c0b5e){return client[_0x0843('0x9')](_0x568d49,_0x43d908)[_0x0843('0xa')](function(_0x89b3b0){logger['info'](_0x0843('0xb'),_0x137069,_0x0843('0xc'));logger['debug']('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x137069,_0x0843('0xc'),JSON[_0x0843('0xd')](_0x89b3b0));if(_0x89b3b0[_0x0843('0xe')]){if(_0x89b3b0[_0x0843('0xe')][_0x0843('0xf')]===0x1f4){logger[_0x0843('0xe')](_0x0843('0xb'),_0x137069,_0x89b3b0[_0x0843('0xe')][_0x0843('0x10')]);return _0x4c0b5e(_0x89b3b0['error'][_0x0843('0x10')]);}logger['error'](_0x0843('0xb'),_0x137069,_0x89b3b0[_0x0843('0xe')][_0x0843('0x10')]);return _0x45c2e7(_0x89b3b0['error'][_0x0843('0x10')]);}else{logger[_0x0843('0x11')](_0x0843('0xb'),_0x137069,_0x0843('0xc'));_0x45c2e7(_0x89b3b0['result']['message']);}})[_0x0843('0x12')](function(_0x522c56){logger['error'](_0x0843('0xb'),_0x137069,_0x522c56);_0x4c0b5e(_0x522c56);});});}
\ No newline at end of file
index 206b433..b86ba78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88bc=['index','get','/describe','describe','/:id','show','/:id/download','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','isAuthenticated'];(function(_0x63c9c0,_0x1253a9){var _0x3118cb=function(_0x22aea3){while(--_0x22aea3){_0x63c9c0['push'](_0x63c9c0['shift']());}};_0x3118cb(++_0x1253a9);}(_0x88bc,0x1d1));var _0xc88b=function(_0x51ed62,_0x574379){_0x51ed62=_0x51ed62-0x0;var _0x34aee3=_0x88bc[_0x51ed62];return _0x34aee3;};'use strict';var multer=require(_0xc88b('0x0'));var util=require(_0xc88b('0x1'));var path=require('path');var timeout=require(_0xc88b('0x2'));var express=require(_0xc88b('0x3'));var router=express[_0xc88b('0x4')]();var fs_extra=require(_0xc88b('0x5'));var auth=require(_0xc88b('0x6'));var interaction=require(_0xc88b('0x7'));var config=require(_0xc88b('0x8'));var controller=require(_0xc88b('0x9'));router['get']('/',auth[_0xc88b('0xa')](),controller[_0xc88b('0xb')]);router[_0xc88b('0xc')](_0xc88b('0xd'),auth['isAuthenticated'](),controller[_0xc88b('0xe')]);router[_0xc88b('0xc')](_0xc88b('0xf'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x10')]);router['get'](_0xc88b('0x11'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x12')]);router[_0xc88b('0xc')](_0xc88b('0x13'),controller['downloads']);router[_0xc88b('0xc')](_0xc88b('0x14'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x15')]);router[_0xc88b('0x16')]('/',auth[_0xc88b('0xa')](),controller[_0xc88b('0x17')]);router[_0xc88b('0x16')](_0xc88b('0x14'),auth[_0xc88b('0xa')](),controller['runTranscribe']);router[_0xc88b('0x18')](_0xc88b('0xf'),auth[_0xc88b('0xa')](),controller['update']);router[_0xc88b('0x19')](_0xc88b('0xf'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x1a')]);module[_0xc88b('0x1b')]=router;
\ No newline at end of file
+var _0xd0a7=['/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/download'];(function(_0x35a089,_0x2c1536){var _0x2f3cb2=function(_0x356f58){while(--_0x356f58){_0x35a089['push'](_0x35a089['shift']());}};_0x2f3cb2(++_0x2c1536);}(_0xd0a7,0x1f0));var _0x7d0a=function(_0x490b7b,_0x269766){_0x490b7b=_0x490b7b-0x0;var _0x36e9f7=_0xd0a7[_0x490b7b];return _0x36e9f7;};'use strict';var multer=require(_0x7d0a('0x0'));var util=require(_0x7d0a('0x1'));var path=require(_0x7d0a('0x2'));var timeout=require('connect-timeout');var express=require(_0x7d0a('0x3'));var router=express[_0x7d0a('0x4')]();var fs_extra=require(_0x7d0a('0x5'));var auth=require(_0x7d0a('0x6'));var interaction=require(_0x7d0a('0x7'));var config=require(_0x7d0a('0x8'));var controller=require(_0x7d0a('0x9'));router[_0x7d0a('0xa')]('/',auth['isAuthenticated'](),controller[_0x7d0a('0xb')]);router[_0x7d0a('0xa')](_0x7d0a('0xc'),auth[_0x7d0a('0xd')](),controller['describe']);router[_0x7d0a('0xa')](_0x7d0a('0xe'),auth[_0x7d0a('0xd')](),controller[_0x7d0a('0xf')]);router[_0x7d0a('0xa')](_0x7d0a('0x10'),auth[_0x7d0a('0xd')](),controller['download']);router['get'](_0x7d0a('0x11'),controller[_0x7d0a('0x12')]);router[_0x7d0a('0xa')](_0x7d0a('0x13'),auth[_0x7d0a('0xd')](),controller[_0x7d0a('0x14')]);router[_0x7d0a('0x15')]('/',auth[_0x7d0a('0xd')](),controller[_0x7d0a('0x16')]);router[_0x7d0a('0x15')](_0x7d0a('0x13'),auth[_0x7d0a('0xd')](),controller[_0x7d0a('0x17')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x7d0a('0x18')]('/:id',auth[_0x7d0a('0xd')](),controller[_0x7d0a('0x19')]);module[_0x7d0a('0x1a')]=router;
\ No newline at end of file
index 02ae1b6..41326f7 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(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'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 1e971a1..2549870 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd330=['[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','crypto','jsforce','desk.js','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','VoiceRecording','key','model','differenceBy','format','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','../../components/encryptor','value','%s.cypher','existsSync','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','download','filename','extname','unlink','downloads','sequelize','MD5','uniqueid','token','$and','push','secrets','Entity\x20not\x20found','info','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','createBucket','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','TranscriptionJobStatus','findOne','decryptFile','Setting','transcribe','transcribeAccountId','transcribeRegion','language','runSentiment','sentimentAccountId','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd330,0x9d));var _0x0d33=function(_0x25c0fa,_0x2b74c4){_0x25c0fa=_0x25c0fa-0x0;var _0x4aef4a=_0xd330[_0x25c0fa];return _0x4aef4a;};'use strict';var emlformat=require(_0x0d33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0d33('0x1'));var jsonpatch=require(_0x0d33('0x2'));var rp=require(_0x0d33('0x3'));var moment=require(_0x0d33('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0d33('0x5'));var util=require('util');var path=require(_0x0d33('0x6'));var sox=require('sox');var csv=require(_0x0d33('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0d33('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0d33('0x9'));var jsforce=require(_0x0d33('0xa'));var deskjs=require(_0x0d33('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var AWS=require('aws-sdk');var uuidv4=require(_0x0d33('0xc'));var Redis=require(_0x0d33('0xd'));var authService=require(_0x0d33('0xe'));var qs=require(_0x0d33('0xf'));var as=require(_0x0d33('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0d33('0x11'))(_0x0d33('0x12'));var utils=require(_0x0d33('0x13'));var config=require(_0x0d33('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d498c,_0xd9116b){_0xd9116b=_0xd9116b||0xcc;return function(_0xf6f75e){if(_0xf6f75e){return _0x5d498c[_0x0d33('0x15')](_0xd9116b);}return _0x5d498c[_0x0d33('0x16')](_0xd9116b)[_0x0d33('0x17')]();};}function respondWithResult(_0x5d2a1d,_0x47c799){_0x47c799=_0x47c799||0xc8;return function(_0x384cf6){if(_0x384cf6){return _0x5d2a1d[_0x0d33('0x16')](_0x47c799)[_0x0d33('0x18')](_0x384cf6);}};}function respondWithFilteredResult(_0x1456be,_0x71c0f3){return function(_0xdb56f8){if(_0xdb56f8){var _0x3f15f7=typeof _0x71c0f3[_0x0d33('0x19')]===_0x0d33('0x1a')&&typeof _0x71c0f3[_0x0d33('0x1b')]===_0x0d33('0x1a');var _0x55cd2f=_0xdb56f8[_0x0d33('0x1c')];var _0x11b785=_0x3f15f7?0x0:_0x71c0f3[_0x0d33('0x19')];var _0x147ee5=_0x3f15f7?_0xdb56f8[_0x0d33('0x1c')]:_0x71c0f3['offset']+_0x71c0f3[_0x0d33('0x1b')];var _0xfecf26;if(_0x147ee5>=_0x55cd2f){_0x147ee5=_0x55cd2f;_0xfecf26=0xc8;}else{_0xfecf26=0xce;}_0x1456be[_0x0d33('0x16')](_0xfecf26);return _0x1456be['set'](_0x0d33('0x1d'),_0x11b785+'-'+_0x147ee5+'/'+_0x55cd2f)[_0x0d33('0x18')](_0xdb56f8);}return null;};}function patchUpdates(_0x1d68be){return function(_0x2563b2){try{jsonpatch[_0x0d33('0x1e')](_0x2563b2,_0x1d68be,!![]);}catch(_0xed9f1d){return BPromise[_0x0d33('0x1f')](_0xed9f1d);}return _0x2563b2['save']();};}function saveUpdates(_0x2e145e,_0x5c09c7){return function(_0x5ae8ed){if(_0x5ae8ed){return _0x5ae8ed[_0x0d33('0x20')](_0x2e145e)[_0x0d33('0x21')](function(_0x4f14cc){return _0x4f14cc;});}return null;};}function removeEntity(_0x46b3fb,_0x411ec2){return function(_0x803ea5){if(_0x803ea5){return _0x803ea5[_0x0d33('0x22')]()['then'](function(){_0x46b3fb[_0x0d33('0x16')](0xcc)[_0x0d33('0x17')]();});}};}function handleEntityNotFound(_0x509f38,_0x3fdb20){return function(_0x533117){if(!_0x533117){_0x509f38[_0x0d33('0x15')](0x194);}return _0x533117;};}function handleError(_0x12acee,_0x8b9bc2){_0x8b9bc2=_0x8b9bc2||0x1f4;return function(_0x5867d7){logger[_0x0d33('0x23')](_0x5867d7[_0x0d33('0x24')]);if(_0x5867d7[_0x0d33('0x25')]){delete _0x5867d7[_0x0d33('0x25')];}_0x12acee[_0x0d33('0x16')](_0x8b9bc2)[_0x0d33('0x26')](_0x5867d7);};}exports[_0x0d33('0x27')]=function(_0xd5ec5b,_0x5b1278){var _0x3839ad={},_0xc1b48={},_0x5b170b={'count':0x0,'rows':[]};var _0x57fc72=_[_0x0d33('0x28')](db[_0x0d33('0x29')]['rawAttributes'],function(_0x46b176){return{'name':_0x46b176['fieldName'],'type':_0x46b176['type'][_0x0d33('0x2a')]};});_0xc1b48[_0x0d33('0x2b')]=_[_0x0d33('0x2c')](_[_0x0d33('0x28')](_0x57fc72,_0x0d33('0x25')),[_0x0d33('0x2d')]);_0xc1b48['query']=_[_0x0d33('0x2e')](_0xd5ec5b['query']);_0xc1b48[_0x0d33('0x2f')]=_[_0x0d33('0x30')](_0xc1b48[_0x0d33('0x2b')],_0xc1b48[_0x0d33('0x31')]);_0x3839ad[_0x0d33('0x32')]=_[_0x0d33('0x30')](_0xc1b48[_0x0d33('0x2b')],qs[_0x0d33('0x33')](_0xd5ec5b['query'][_0x0d33('0x33')]));_0x3839ad[_0x0d33('0x32')]=_0x3839ad[_0x0d33('0x32')]['length']?_0x3839ad[_0x0d33('0x32')]:_0xc1b48[_0x0d33('0x2b')];if(!_0xd5ec5b[_0x0d33('0x31')][_0x0d33('0x34')](_0x0d33('0x35'))){_0x3839ad[_0x0d33('0x1b')]=qs[_0x0d33('0x1b')](_0xd5ec5b['query']['limit']);_0x3839ad[_0x0d33('0x19')]=qs[_0x0d33('0x19')](_0xd5ec5b['query'][_0x0d33('0x19')]);}_0x3839ad[_0x0d33('0x36')]=qs[_0x0d33('0x37')](_0xd5ec5b['query']['sort']);_0x3839ad['where']=qs['filters'](_['pick'](_0xd5ec5b['query'],_0xc1b48[_0x0d33('0x2f')]),_0x57fc72);if(_0xd5ec5b['query'][_0x0d33('0x38')]){_0x3839ad[_0x0d33('0x39')]=_[_0x0d33('0x3a')](_0x3839ad[_0x0d33('0x39')],{'$or':_[_0x0d33('0x28')](_0x57fc72,function(_0x9d1757){if(_0x9d1757[_0x0d33('0x3b')]!=='VIRTUAL'){var _0x300e32={};_0x300e32[_0x9d1757[_0x0d33('0x25')]]={'$like':'%'+_0xd5ec5b[_0x0d33('0x31')][_0x0d33('0x38')]+'%'};return _0x300e32;}})});}_0x3839ad=_[_0x0d33('0x3a')]({},_0x3839ad,_0xd5ec5b[_0x0d33('0x3c')]);var _0x2ad5be={'where':_0x3839ad[_0x0d33('0x39')]};return db['VoiceRecording'][_0x0d33('0x1c')](_0x2ad5be)['then'](function(_0x21b747){_0x5b170b[_0x0d33('0x1c')]=_0x21b747;if(_0xd5ec5b['query'][_0x0d33('0x3d')]){_0x3839ad[_0x0d33('0x3e')]=[{'all':!![]}];}return db['VoiceRecording'][_0x0d33('0x3f')](_0x3839ad);})[_0x0d33('0x21')](function(_0x2d31d5){_0x5b170b[_0x0d33('0x40')]=_0x2d31d5;return _0x5b170b;})['then'](respondWithFilteredResult(_0x5b1278,_0x3839ad))[_0x0d33('0x41')](handleError(_0x5b1278,null));};exports[_0x0d33('0x42')]=function(_0x3f4060,_0x27c04f){var _0x3a6bae={'raw':![],'where':{'id':_0x3f4060[_0x0d33('0x43')]['id']}},_0x194cac={};_0x194cac[_0x0d33('0x2b')]=_[_0x0d33('0x2e')](db[_0x0d33('0x29')][_0x0d33('0x44')]);_0x194cac['query']=_[_0x0d33('0x2e')](_0x3f4060['query']);_0x194cac['filters']=_['intersection'](_0x194cac[_0x0d33('0x2b')],_0x194cac[_0x0d33('0x31')]);_0x3a6bae[_0x0d33('0x32')]=_[_0x0d33('0x30')](_0x194cac[_0x0d33('0x2b')],qs[_0x0d33('0x33')](_0x3f4060[_0x0d33('0x31')]['fields']));_0x3a6bae[_0x0d33('0x32')]=_0x3a6bae[_0x0d33('0x32')]['length']?_0x3a6bae['attributes']:_0x194cac[_0x0d33('0x2b')];if(_0x3f4060['query'][_0x0d33('0x3d')]){_0x3a6bae['include']=[{'all':!![]}];}_0x3a6bae=_[_0x0d33('0x3a')]({},_0x3a6bae,_0x3f4060[_0x0d33('0x3c')]);return db['VoiceRecording'][_0x0d33('0x45')](_0x3a6bae)[_0x0d33('0x21')](handleEntityNotFound(_0x27c04f,null))[_0x0d33('0x21')](respondWithResult(_0x27c04f,null))['catch'](handleError(_0x27c04f,null));};exports[_0x0d33('0x46')]=function(_0x53463d,_0x597ac7){return db[_0x0d33('0x29')][_0x0d33('0x46')](_0x53463d[_0x0d33('0x47')],{})[_0x0d33('0x21')](respondWithResult(_0x597ac7,0xc9))[_0x0d33('0x41')](handleError(_0x597ac7,null));};exports['update']=function(_0x433ff1,_0x42d064){if(_0x433ff1[_0x0d33('0x47')]['id']){delete _0x433ff1['body']['id'];}return db[_0x0d33('0x29')][_0x0d33('0x45')]({'where':{'id':_0x433ff1[_0x0d33('0x43')]['id']}})[_0x0d33('0x21')](handleEntityNotFound(_0x42d064,null))[_0x0d33('0x21')](saveUpdates(_0x433ff1[_0x0d33('0x47')],null))[_0x0d33('0x21')](respondWithResult(_0x42d064,null))['catch'](handleError(_0x42d064,null));};exports[_0x0d33('0x48')]=function(_0x2005b0,_0x385ac1){return db[_0x0d33('0x29')]['describe']()['then'](respondWithResult(_0x385ac1,null))[_0x0d33('0x41')](handleError(_0x385ac1,null));};exports['download']=function(_0x1d79cc,_0xe814db,_0x2785fc){var _0x36165a=require(_0x0d33('0x49'));var _0x5108ed=![];var _0x223060={};if(_0x1d79cc[_0x0d33('0x31')]['type']&&_0x1d79cc['query'][_0x0d33('0x3b')]==='uniqueid'){_0x223060['uniqueid']=_0x1d79cc[_0x0d33('0x43')]['id'];}else{_0x223060['id']=_0x1d79cc[_0x0d33('0x43')]['id'];}return db['VoiceRecording'][_0x0d33('0x45')]({'where':_0x223060,'attributes':['id',_0x0d33('0x4a')],'raw':!![]})[_0x0d33('0x21')](handleEntityNotFound(_0xe814db,null))['then'](function(_0x189cea){if(_0x189cea){var _0x397928=_0x189cea[_0x0d33('0x4a')];var _0x4fa199=util[_0x0d33('0x2d')](_0x0d33('0x4b'),_0x397928);if(fs[_0x0d33('0x4c')](_0x4fa199)){_0x5108ed=!![];return _0x36165a['decryptFile'](_0x4fa199,_0x397928,config['secrets'][_0x0d33('0x4d')])[_0x0d33('0x21')](function(){return _0x189cea;});}return _0x189cea;}})['then'](function(_0x4d8626){if(_0x4d8626){var _0x2fc0e1=_0x4d8626[_0x0d33('0x4a')];if(!fs[_0x0d33('0x4c')](_0x2fc0e1)){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x50'));}if(_0x4d8626['filename']){return _0xe814db[_0x0d33('0x51')](_0x2fc0e1,_0x4d8626[_0x0d33('0x52')]+path[_0x0d33('0x53')](_0x2fc0e1),function(){if(_0x5108ed){fs[_0x0d33('0x54')](_0x2fc0e1);}});}else{return _0xe814db[_0x0d33('0x51')](_0x2fc0e1,function(_0x23169c){if(_0x5108ed){fs['unlink'](_0x2fc0e1);}});}}})[_0x0d33('0x41')](function(_0x1cea15){if(_0x1cea15['message']===_0x0d33('0x50')){_0xe814db[_0x0d33('0x16')](0x194)[_0x0d33('0x26')]('Not\x20found');}else{return handleError(_0xe814db,null);}});};exports[_0x0d33('0x55')]=function(_0xba7905,_0x41fbc7,_0x3701c8){var _0x2e881d=require(_0x0d33('0x49'));var _0x56e805=![];var _0x13ecd8={'$and':[db[_0x0d33('0x56')][_0x0d33('0x39')](db[_0x0d33('0x56')]['fn'](_0x0d33('0x57'),db[_0x0d33('0x56')]['col'](_0x0d33('0x58'))),_0xba7905['query'][_0x0d33('0x59')])]};if(_0xba7905[_0x0d33('0x31')][_0x0d33('0x3b')]&&_0xba7905[_0x0d33('0x31')][_0x0d33('0x3b')]===_0x0d33('0x58')){_0x13ecd8[_0x0d33('0x5a')][_0x0d33('0x5b')]({'uniqueid':_0xba7905['params']['id']});}else{_0x13ecd8['$and'][_0x0d33('0x5b')]({'id':_0xba7905[_0x0d33('0x43')]['id']});}return db['VoiceRecording'][_0x0d33('0x45')]({'where':_0x13ecd8,'attributes':['id',_0x0d33('0x4a')],'raw':!![]})[_0x0d33('0x21')](handleEntityNotFound(_0x41fbc7,null))[_0x0d33('0x21')](function(_0x6d321f){if(_0x6d321f){var _0x420d09=util['format'](_0x0d33('0x4b'),_0x6d321f[_0x0d33('0x4a')]);if(fs[_0x0d33('0x4c')](_0x420d09)){_0x56e805=!![];return _0x2e881d['decryptFile'](_0x420d09,_0x6d321f[_0x0d33('0x4a')],config[_0x0d33('0x5c')][_0x0d33('0x4d')])['then'](function(){return _0x6d321f;});}return _0x6d321f;}})[_0x0d33('0x21')](function(_0x1d3b49){if(_0x1d3b49){if(!fs['existsSync'](_0x1d3b49[_0x0d33('0x4a')])){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x50'));}if(_0x1d3b49[_0x0d33('0x52')]){return _0x41fbc7[_0x0d33('0x51')](_0x1d3b49[_0x0d33('0x4a')],_0x1d3b49[_0x0d33('0x52')]+path[_0x0d33('0x53')](_0x1d3b49[_0x0d33('0x4a')]),function(){if(_0x56e805){fs[_0x0d33('0x54')](_0x1d3b49[_0x0d33('0x4a')]);}});}else{return _0x41fbc7[_0x0d33('0x51')](_0x1d3b49[_0x0d33('0x4a')],function(_0x4f5f07){if(_0x56e805){fs['unlink'](_0x1d3b49['value']);}});}}})[_0x0d33('0x41')](handleError(_0x41fbc7,null));};exports[_0x0d33('0x22')]=function(_0x31187d,_0x450bd3){return db['VoiceRecording'][_0x0d33('0x45')]({'where':{'id':_0x31187d['params']['id']}})[_0x0d33('0x21')](function(_0x173cd0){if(_['isNil'](_0x173cd0)){throw new ReferenceError(_0x0d33('0x5d'));}return _0x173cd0;})[_0x0d33('0x21')](function(_0x2a3309){var _0x1d311d=_0x2a3309['value'];logger[_0x0d33('0x5e')]('cancellazione\x20fisica\x20documento\x20%s',_0x1d311d);if(!_[_0x0d33('0x5f')](_0x2a3309[_0x0d33('0x4a')])&&fs[_0x0d33('0x4c')](_0x1d311d)){logger[_0x0d33('0x5e')](_0x0d33('0x60')+_0x1d311d+_0x0d33('0x61'));fs[_0x0d33('0x62')](_0x1d311d);}_0x1d311d=_0x1d311d+_0x0d33('0x63');if(!_[_0x0d33('0x5f')](_0x2a3309['value'])&&fs['existsSync'](_0x1d311d)){logger[_0x0d33('0x5e')]('File:\x20\x22'+_0x1d311d+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x0d33('0x62')](_0x1d311d);}return _0x2a3309;})[_0x0d33('0x21')](function(_0x2aa6e2){if(!_0x2aa6e2)throw new InternalError();return _0x2aa6e2['destroy']();})[_0x0d33('0x21')](function(){_0x450bd3['status'](0xcc)[_0x0d33('0x17')]();})[_0x0d33('0x41')](handleError(_0x450bd3,null));};function getBucketslist(_0x1227b7,_0x5a6127,_0x43baf8){return new Promise(function(_0x195c76,_0x2554f7){var _0x5aec7a=new AWS['S3']({'accessKeyId':_0x5a6127,'secretAccessKey':_0x1227b7,'region':_0x43baf8});_0x5aec7a['listBuckets']({},function(_0x3a8b91,_0x14e802){if(_0x3a8b91){return _0x2554f7(_0x3a8b91);}else{return _0x195c76(_0x14e802);}});});}function createBucket(_0x2514ff,_0x37e877,_0x32aa73,_0x19a477){return new Promise(function(_0x40c907,_0x16ffb8){var _0x41cbae=new AWS['S3']({'accessKeyId':_0x37e877,'secretAccessKey':_0x2514ff,'region':_0x32aa73});_0x41cbae[_0x0d33('0x64')]({'Bucket':_0x19a477},function(_0x532c20,_0x45271f){if(_0x532c20){return _0x16ffb8(_0x532c20);}else{return _0x40c907(_0x45271f);}});});}function uploadFile(_0x564c5a,_0x118ba2,_0x56b433,_0x3e6f37,_0x3d260e,_0x430bdb){return new Promise(function(_0x3061d5,_0x2b9a07){var _0xf8d4e3=new AWS['S3']({'accessKeyId':_0x118ba2,'secretAccessKey':_0x564c5a,'region':_0x56b433});_0xf8d4e3[_0x0d33('0x65')]({'Bucket':_0x3e6f37,'Key':_0x3d260e,'Body':_0x430bdb},function(_0x11a7a1,_0x36c02d){if(_0x11a7a1){return _0x2b9a07(_0x11a7a1);}else{return _0x3061d5(_0x36c02d);}});});}function startTranscribe(_0x1f9c2d,_0x5bdb03,_0xf2dee7,_0x47661f,_0x4f3eaa,_0x10aa7e){return new Promise(function(_0xee5171,_0x49e4f9){var _0x546fd6=new AWS[(_0x0d33('0x66'))]({'accessKeyId':_0x5bdb03,'secretAccessKey':_0x1f9c2d,'region':_0xf2dee7});_0x546fd6['startTranscriptionJob']({'TranscriptionJobName':_0x47661f,'LanguageCode':_0x4f3eaa,'Media':{'MediaFileUri':_0x10aa7e}},function(_0x2cdff1,_0x1039b0){if(_0x2cdff1){return _0x49e4f9(_0x2cdff1);}else{return _0xee5171(_0x1039b0);}});});}function transcribe(_0x5a15a1,_0xc1bc0c,_0x24c366,_0x4d2db0,_0x53763d,_0x532b38,_0x34e396){return new Promise(function(_0xe98796,_0x2f8a15){var _0x2a12a4={};logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x67'),_0x5a15a1,_0x53763d));return uploadFile(_0xc1bc0c,_0x24c366,_0x4d2db0,_0x53763d,path[_0x0d33('0x68')](_0x532b38),fs['readFileSync'](_0x532b38))[_0x0d33('0x21')](function(_0x1ac955){logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x69'),_0x5a15a1,_0x53763d,_0x1ac955[_0x0d33('0x6a')]));_0x2a12a4['bucket']=_0x1ac955[_0x0d33('0x6b')];_0x2a12a4['location']=_0x1ac955[_0x0d33('0x6a')];logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x5a15a1));return startTranscribe(_0xc1bc0c,_0x24c366,_0x4d2db0,uuidv4(),_0x34e396,_0x1ac955['Location']);})['then'](function(_0x4be800){logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x6c'),_0x5a15a1,_0x4be800[_0x0d33('0x6d')]['TranscriptionJobName']));_0x2a12a4['transcribeName']=_0x4be800[_0x0d33('0x6d')][_0x0d33('0x6e')];_0x2a12a4['transcribeStatus']=_0x4be800[_0x0d33('0x6d')][_0x0d33('0x6f')];return _0xe98796(_0x2a12a4);})[_0x0d33('0x41')](function(_0xb091a2){return _0x2f8a15(_0xb091a2);});});}exports['runTranscribe']=function(_0x539d84,_0x1e128b,_0x567baf){var _0x28e1e2;var _0x5eef36;var _0x5b555e;var _0xef42a=require(_0x0d33('0x49'));return db['VoiceRecording'][_0x0d33('0x70')]({'where':{'id':_0x539d84[_0x0d33('0x43')]['id']}})[_0x0d33('0x21')](function(_0x57219b){if(_0x57219b){var _0x5b9aad=util[_0x0d33('0x2d')]('%s.cypher',_0x57219b[_0x0d33('0x4a')]);if(fs[_0x0d33('0x4c')](_0x5b9aad)){cypher=!![];return _0xef42a[_0x0d33('0x71')](_0x5b9aad,_0x57219b[_0x0d33('0x4a')],config['secrets'][_0x0d33('0x4d')])[_0x0d33('0x21')](function(){return _0x57219b;});}return _0x57219b;}})['then'](function(_0xa0a471){if(!_0xa0a471){throw new db['Sequelize'][(_0x0d33('0x4f'))]('Voice\x20Recording\x20not\x20found');}_0x5eef36=_0xa0a471;return db[_0x0d33('0x72')][_0x0d33('0x70')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x1e128b,null))[_0x0d33('0x21')](function(_0x4f4df0){if(_0x4f4df0){_0x28e1e2=_0x4f4df0;if(!_0x28e1e2[_0x0d33('0x73')]||!_0x28e1e2[_0x0d33('0x74')]||!_0x28e1e2[_0x0d33('0x75')]||!_0x28e1e2[_0x0d33('0x76')]||!_0x28e1e2['bucket']){throw new db['Sequelize'][(_0x0d33('0x4f'))]('Transcribe\x20not\x20configured');}if(_0x539d84[_0x0d33('0x47')][_0x0d33('0x77')]&&(!_0x28e1e2['sentiment']||!_0x28e1e2[_0x0d33('0x78')]||!_0x28e1e2['sentimentRegion']||!_0x28e1e2[_0x0d33('0x76')]||!_0x28e1e2[_0x0d33('0x79')])){throw new db[(_0x0d33('0x4e'))]['ValidationError'](_0x0d33('0x7a'));}return db[_0x0d33('0x7b')][_0x0d33('0x70')]({'where':{'id':_0x28e1e2['transcribeAccountId']}});}})[_0x0d33('0x21')](function(_0x5f24ad){if(!_0x5f24ad){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x7c'));}if(!_0x5f24ad[_0x0d33('0x7d')]||!_0x5f24ad[_0x0d33('0x7e')]){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x7f'));}_0x5b555e=_0x5f24ad;return getBucketslist(_0x5b555e[_0x0d33('0x7d')],_0x5b555e[_0x0d33('0x7e')],_0x28e1e2['transcribeRegion']);})['then'](function(_0x152ff5){if(_0x152ff5&&_0x152ff5[_0x0d33('0x80')]){var _0x462cc3=_[_0x0d33('0x45')](_0x152ff5[_0x0d33('0x80')],function(_0x1614c0){return _0x1614c0[_0x0d33('0x81')]===_0x28e1e2[_0x0d33('0x79')];});if(!_0x462cc3){logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x82'),_0x539d84['params']['id'],_0x28e1e2[_0x0d33('0x79')]));return createBucket(_0x5b555e[_0x0d33('0x7d')],_0x5b555e[_0x0d33('0x7e')],_0x28e1e2[_0x0d33('0x75')],_0x28e1e2['bucket']);}logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x83'),_0x539d84[_0x0d33('0x43')]['id'],_0x28e1e2[_0x0d33('0x79')]));return;}})[_0x0d33('0x21')](function(_0x1faeca){if(_0x5eef36['transcribeStatus']===_0x0d33('0x84')){return transcribe(_0x539d84[_0x0d33('0x43')]['id'],_0x5b555e[_0x0d33('0x7d')],_0x5b555e['data2'],_0x28e1e2[_0x0d33('0x75')],_0x28e1e2[_0x0d33('0x79')],_0x5eef36['value'],_0x28e1e2[_0x0d33('0x76')]);}else{logger[_0x0d33('0x5e')](util['format'](_0x0d33('0x85'),_0x539d84['params']['id']));return{'transcribeStatus':_0x0d33('0x86')};}})['then'](function(_0x5efd70){if(_0x5efd70){_0x5efd70[_0x0d33('0x87')]=_0x539d84[_0x0d33('0x47')][_0x0d33('0x77')];return _0x5eef36[_0x0d33('0x88')](_0x5efd70);}})[_0x0d33('0x21')](respondWithResult(_0x1e128b,null))[_0x0d33('0x41')](handleError(_0x1e128b,null));};function writeFile(_0x11085d,_0x503a94){return new Promise(function(_0x46a262,_0x46810e){fs[_0x0d33('0x89')](_0x503a94,_0x11085d,function(_0x33f556,_0x2ca5ee){if(_0x33f556){return _0x46810e(_0x33f556);}else{return _0x46a262(_0x2ca5ee);}});});}exports[_0x0d33('0x8a')]=function(_0x4e90e4,_0x4792a0,_0x3eeb2d){return db['VoiceRecording']['findOne']({'where':{'id':_0x4e90e4[_0x0d33('0x43')]['id']}})[_0x0d33('0x21')](handleEntityNotFound(_0x4792a0))[_0x0d33('0x21')](function(_0x525999){if(_0x525999&&_0x525999[_0x0d33('0x8b')]){var _0x3b4dff=_0x525999[_0x0d33('0x8b')];var _0x57dd01=config[_0x0d33('0x8c')]+_0x0d33('0x8d')+_0x525999['id']+_0x0d33('0x8e');if(fs['existsSync'](_0x57dd01)){return _0x57dd01;}return writeFile(_0x3b4dff,_0x57dd01)[_0x0d33('0x21')](function(){return _0x57dd01;});}else{throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x8f'));}})[_0x0d33('0x21')](function(_0xc8f152){return _0x4792a0[_0x0d33('0x51')](_0xc8f152);})[_0x0d33('0x41')](handleError(_0x4792a0));};
\ No newline at end of file
+var _0x0fc7=['Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','save','destroy','then','end','stack','name','send','map','VoiceRecording','rawAttributes','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','count','findAll','rows','catch','show','params','include','create','update','body','find','describe','download','../../components/encryptor','uniqueid','value','existsSync','decryptFile','secrets','recording','Sequelize','VoiceRecording\x20not\x20found','extname','unlink','Not\x20found','downloads','sequelize','MD5','col','token','$and','push','filename','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','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','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribeAccountId','transcribeRegion','ValidationError','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','data1','data2'];(function(_0x12cebc,_0x488262){var _0x1c9043=function(_0x469224){while(--_0x469224){_0x12cebc['push'](_0x12cebc['shift']());}};_0x1c9043(++_0x488262);}(_0x0fc7,0x1d9));var _0x70fc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0fc7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x70fc('0x0'));var rimraf=require(_0x70fc('0x1'));var zipdir=require(_0x70fc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x70fc('0x3'));var moment=require(_0x70fc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x70fc('0x5'));var path=require(_0x70fc('0x6'));var sox=require(_0x70fc('0x7'));var csv=require('to-csv');var ejs=require(_0x70fc('0x8'));var fs=require('fs');var fs_extra=require(_0x70fc('0x9'));var _=require(_0x70fc('0xa'));var squel=require(_0x70fc('0xb'));var crypto=require(_0x70fc('0xc'));var jsforce=require(_0x70fc('0xd'));var deskjs=require(_0x70fc('0xe'));var toCsv=require('to-csv');var querystring=require(_0x70fc('0xf'));var Papa=require(_0x70fc('0x10'));var AWS=require(_0x70fc('0x11'));var uuidv4=require(_0x70fc('0x12'));var Redis=require(_0x70fc('0x13'));var authService=require(_0x70fc('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x70fc('0x15'));var hardwareService=require(_0x70fc('0x16'));var logger=require(_0x70fc('0x17'))('api');var utils=require(_0x70fc('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x70fc('0x19'));var db=require(_0x70fc('0x1a'))['db'];function respondWithStatusCode(_0x36a157,_0x396ecd){_0x396ecd=_0x396ecd||0xcc;return function(_0x2c43fe){if(_0x2c43fe){return _0x36a157[_0x70fc('0x1b')](_0x396ecd);}return _0x36a157[_0x70fc('0x1c')](_0x396ecd)['end']();};}function respondWithResult(_0x1e7021,_0x3d3645){_0x3d3645=_0x3d3645||0xc8;return function(_0x587e5b){if(_0x587e5b){return _0x1e7021[_0x70fc('0x1c')](_0x3d3645)[_0x70fc('0x1d')](_0x587e5b);}};}function respondWithFilteredResult(_0x55fe69,_0x1e580c){return function(_0x10e382){if(_0x10e382){var _0x64ccf9=typeof _0x1e580c[_0x70fc('0x1e')]===_0x70fc('0x1f')&&typeof _0x1e580c[_0x70fc('0x20')]===_0x70fc('0x1f');var _0x2bb99f=_0x10e382['count'];var _0x37a9c8=_0x64ccf9?0x0:_0x1e580c[_0x70fc('0x1e')];var _0x7f14a7=_0x64ccf9?_0x10e382['count']:_0x1e580c['offset']+_0x1e580c[_0x70fc('0x20')];var _0x13a075;if(_0x7f14a7>=_0x2bb99f){_0x7f14a7=_0x2bb99f;_0x13a075=0xc8;}else{_0x13a075=0xce;}_0x55fe69[_0x70fc('0x1c')](_0x13a075);return _0x55fe69[_0x70fc('0x21')](_0x70fc('0x22'),_0x37a9c8+'-'+_0x7f14a7+'/'+_0x2bb99f)[_0x70fc('0x1d')](_0x10e382);}return null;};}function patchUpdates(_0x430e05){return function(_0x2623a2){try{jsonpatch['apply'](_0x2623a2,_0x430e05,!![]);}catch(_0x175dfe){return BPromise['reject'](_0x175dfe);}return _0x2623a2[_0x70fc('0x23')]();};}function saveUpdates(_0x2acb5e,_0x178f10){return function(_0x1f78bf){if(_0x1f78bf){return _0x1f78bf['update'](_0x2acb5e)['then'](function(_0x2e7ac0){return _0x2e7ac0;});}return null;};}function removeEntity(_0x5d96f2,_0x522234){return function(_0x3fa0f3){if(_0x3fa0f3){return _0x3fa0f3[_0x70fc('0x24')]()[_0x70fc('0x25')](function(){_0x5d96f2[_0x70fc('0x1c')](0xcc)[_0x70fc('0x26')]();});}};}function handleEntityNotFound(_0x9fa749,_0x17d64b){return function(_0x35a311){if(!_0x35a311){_0x9fa749[_0x70fc('0x1b')](0x194);}return _0x35a311;};}function handleError(_0x262890,_0x5c0802){_0x5c0802=_0x5c0802||0x1f4;return function(_0xde8093){logger['error'](_0xde8093[_0x70fc('0x27')]);if(_0xde8093[_0x70fc('0x28')]){delete _0xde8093[_0x70fc('0x28')];}_0x262890[_0x70fc('0x1c')](_0x5c0802)[_0x70fc('0x29')](_0xde8093);};}exports['index']=function(_0x18c200,_0x396857){var _0xfa917d={},_0x504341={},_0x4b7a30={'count':0x0,'rows':[]};var _0x516ea0=_[_0x70fc('0x2a')](db[_0x70fc('0x2b')][_0x70fc('0x2c')],function(_0x2b833e){return{'name':_0x2b833e['fieldName'],'type':_0x2b833e['type']['key']};});_0x504341[_0x70fc('0x2d')]=_[_0x70fc('0x2e')](_[_0x70fc('0x2a')](_0x516ea0,_0x70fc('0x28')),[_0x70fc('0x2f')]);_0x504341[_0x70fc('0x30')]=_[_0x70fc('0x31')](_0x18c200[_0x70fc('0x30')]);_0x504341[_0x70fc('0x32')]=_[_0x70fc('0x33')](_0x504341['model'],_0x504341[_0x70fc('0x30')]);_0xfa917d[_0x70fc('0x34')]=_['intersection'](_0x504341[_0x70fc('0x2d')],qs[_0x70fc('0x35')](_0x18c200[_0x70fc('0x30')]['fields']));_0xfa917d[_0x70fc('0x34')]=_0xfa917d[_0x70fc('0x34')]['length']?_0xfa917d[_0x70fc('0x34')]:_0x504341[_0x70fc('0x2d')];if(!_0x18c200[_0x70fc('0x30')]['hasOwnProperty'](_0x70fc('0x36'))){_0xfa917d[_0x70fc('0x20')]=qs[_0x70fc('0x20')](_0x18c200[_0x70fc('0x30')][_0x70fc('0x20')]);_0xfa917d[_0x70fc('0x1e')]=qs[_0x70fc('0x1e')](_0x18c200[_0x70fc('0x30')][_0x70fc('0x1e')]);}_0xfa917d[_0x70fc('0x37')]=qs[_0x70fc('0x38')](_0x18c200['query'][_0x70fc('0x38')]);_0xfa917d[_0x70fc('0x39')]=qs[_0x70fc('0x32')](_['pick'](_0x18c200[_0x70fc('0x30')],_0x504341[_0x70fc('0x32')]),_0x516ea0);if(_0x18c200[_0x70fc('0x30')][_0x70fc('0x3a')]){_0xfa917d[_0x70fc('0x39')]=_[_0x70fc('0x3b')](_0xfa917d[_0x70fc('0x39')],{'$or':_[_0x70fc('0x2a')](_0x516ea0,function(_0x31f668){if(_0x31f668[_0x70fc('0x3c')]!==_0x70fc('0x3d')){var _0x448e53={};_0x448e53[_0x31f668[_0x70fc('0x28')]]={'$like':'%'+_0x18c200[_0x70fc('0x30')][_0x70fc('0x3a')]+'%'};return _0x448e53;}})});}_0xfa917d=_[_0x70fc('0x3b')]({},_0xfa917d,_0x18c200[_0x70fc('0x3e')]);var _0x15a556={'where':_0xfa917d[_0x70fc('0x39')]};return db[_0x70fc('0x2b')][_0x70fc('0x3f')](_0x15a556)[_0x70fc('0x25')](function(_0x2bb941){_0x4b7a30[_0x70fc('0x3f')]=_0x2bb941;if(_0x18c200[_0x70fc('0x30')]['includeAll']){_0xfa917d['include']=[{'all':!![]}];}return db[_0x70fc('0x2b')][_0x70fc('0x40')](_0xfa917d);})[_0x70fc('0x25')](function(_0x41b611){_0x4b7a30[_0x70fc('0x41')]=_0x41b611;return _0x4b7a30;})['then'](respondWithFilteredResult(_0x396857,_0xfa917d))[_0x70fc('0x42')](handleError(_0x396857,null));};exports[_0x70fc('0x43')]=function(_0x44dd43,_0x42c51e){var _0x15d348={'raw':![],'where':{'id':_0x44dd43[_0x70fc('0x44')]['id']}},_0x7b8135={};_0x7b8135[_0x70fc('0x2d')]=_['keys'](db[_0x70fc('0x2b')][_0x70fc('0x2c')]);_0x7b8135[_0x70fc('0x30')]=_[_0x70fc('0x31')](_0x44dd43[_0x70fc('0x30')]);_0x7b8135[_0x70fc('0x32')]=_[_0x70fc('0x33')](_0x7b8135[_0x70fc('0x2d')],_0x7b8135['query']);_0x15d348[_0x70fc('0x34')]=_[_0x70fc('0x33')](_0x7b8135[_0x70fc('0x2d')],qs[_0x70fc('0x35')](_0x44dd43[_0x70fc('0x30')][_0x70fc('0x35')]));_0x15d348['attributes']=_0x15d348[_0x70fc('0x34')]['length']?_0x15d348[_0x70fc('0x34')]:_0x7b8135[_0x70fc('0x2d')];if(_0x44dd43[_0x70fc('0x30')]['includeAll']){_0x15d348[_0x70fc('0x45')]=[{'all':!![]}];}_0x15d348=_['merge']({},_0x15d348,_0x44dd43[_0x70fc('0x3e')]);return db[_0x70fc('0x2b')]['find'](_0x15d348)[_0x70fc('0x25')](handleEntityNotFound(_0x42c51e,null))[_0x70fc('0x25')](respondWithResult(_0x42c51e,null))[_0x70fc('0x42')](handleError(_0x42c51e,null));};exports['create']=function(_0x450995,_0x50834f){return db[_0x70fc('0x2b')][_0x70fc('0x46')](_0x450995['body'],{})['then'](respondWithResult(_0x50834f,0xc9))['catch'](handleError(_0x50834f,null));};exports[_0x70fc('0x47')]=function(_0x152751,_0x5d258b){if(_0x152751[_0x70fc('0x48')]['id']){delete _0x152751[_0x70fc('0x48')]['id'];}return db['VoiceRecording'][_0x70fc('0x49')]({'where':{'id':_0x152751['params']['id']}})[_0x70fc('0x25')](handleEntityNotFound(_0x5d258b,null))[_0x70fc('0x25')](saveUpdates(_0x152751[_0x70fc('0x48')],null))[_0x70fc('0x25')](respondWithResult(_0x5d258b,null))[_0x70fc('0x42')](handleError(_0x5d258b,null));};exports[_0x70fc('0x4a')]=function(_0x2b27bf,_0x1c6af4){return db['VoiceRecording'][_0x70fc('0x4a')]()[_0x70fc('0x25')](respondWithResult(_0x1c6af4,null))[_0x70fc('0x42')](handleError(_0x1c6af4,null));};exports[_0x70fc('0x4b')]=function(_0x3573ff,_0x4afb31,_0x47e189){var _0x5f22e7=require(_0x70fc('0x4c'));var _0x15246c=![];var _0x1543b6={};if(_0x3573ff[_0x70fc('0x30')]['type']&&_0x3573ff['query']['type']===_0x70fc('0x4d')){_0x1543b6[_0x70fc('0x4d')]=_0x3573ff[_0x70fc('0x44')]['id'];}else{_0x1543b6['id']=_0x3573ff[_0x70fc('0x44')]['id'];}return db[_0x70fc('0x2b')][_0x70fc('0x49')]({'where':_0x1543b6,'attributes':['id',_0x70fc('0x4e')],'raw':!![]})[_0x70fc('0x25')](handleEntityNotFound(_0x4afb31,null))[_0x70fc('0x25')](function(_0x280aa5){if(_0x280aa5){var _0x3e7bf1=_0x280aa5[_0x70fc('0x4e')];var _0x39a3e1=util[_0x70fc('0x2f')]('%s.cypher',_0x3e7bf1);if(fs[_0x70fc('0x4f')](_0x39a3e1)){_0x15246c=!![];return _0x5f22e7[_0x70fc('0x50')](_0x39a3e1,_0x3e7bf1,config[_0x70fc('0x51')][_0x70fc('0x52')])[_0x70fc('0x25')](function(){return _0x280aa5;});}return _0x280aa5;}})['then'](function(_0x9b4c9f){if(_0x9b4c9f){var _0x3ece79=_0x9b4c9f['value'];if(!fs['existsSync'](_0x3ece79)){throw new db[(_0x70fc('0x53'))]['ValidationError'](_0x70fc('0x54'));}if(_0x9b4c9f['filename']){return _0x4afb31['download'](_0x3ece79,_0x9b4c9f['filename']+path[_0x70fc('0x55')](_0x3ece79),function(){if(_0x15246c){fs['unlink'](_0x3ece79);}});}else{return _0x4afb31[_0x70fc('0x4b')](_0x3ece79,function(_0x1cc95c){if(_0x15246c){fs[_0x70fc('0x56')](_0x3ece79);}});}}})[_0x70fc('0x42')](function(_0x93c1fb){if(_0x93c1fb['message']===_0x70fc('0x54')){_0x4afb31[_0x70fc('0x1c')](0x194)['send'](_0x70fc('0x57'));}else{return handleError(_0x4afb31,null);}});};exports[_0x70fc('0x58')]=function(_0x307653,_0x349d7b,_0x1b6eef){var _0x2e0254=require(_0x70fc('0x4c'));var _0x51a492=![];var _0x37b0a7={'$and':[db[_0x70fc('0x59')]['where'](db[_0x70fc('0x59')]['fn'](_0x70fc('0x5a'),db[_0x70fc('0x59')][_0x70fc('0x5b')](_0x70fc('0x4d'))),_0x307653[_0x70fc('0x30')][_0x70fc('0x5c')])]};if(_0x307653[_0x70fc('0x30')]['type']&&_0x307653[_0x70fc('0x30')][_0x70fc('0x3c')]===_0x70fc('0x4d')){_0x37b0a7['$and']['push']({'uniqueid':_0x307653[_0x70fc('0x44')]['id']});}else{_0x37b0a7[_0x70fc('0x5d')][_0x70fc('0x5e')]({'id':_0x307653[_0x70fc('0x44')]['id']});}return db[_0x70fc('0x2b')][_0x70fc('0x49')]({'where':_0x37b0a7,'attributes':['id',_0x70fc('0x4e')],'raw':!![]})[_0x70fc('0x25')](handleEntityNotFound(_0x349d7b,null))[_0x70fc('0x25')](function(_0x4720b1){if(_0x4720b1){var _0x406b8c=util[_0x70fc('0x2f')]('%s.cypher',_0x4720b1['value']);if(fs['existsSync'](_0x406b8c)){_0x51a492=!![];return _0x2e0254['decryptFile'](_0x406b8c,_0x4720b1[_0x70fc('0x4e')],config['secrets'][_0x70fc('0x52')])['then'](function(){return _0x4720b1;});}return _0x4720b1;}})[_0x70fc('0x25')](function(_0x4d7d61){if(_0x4d7d61){if(!fs[_0x70fc('0x4f')](_0x4d7d61[_0x70fc('0x4e')])){throw new db[(_0x70fc('0x53'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x4d7d61[_0x70fc('0x5f')]){return _0x349d7b['download'](_0x4d7d61[_0x70fc('0x4e')],_0x4d7d61[_0x70fc('0x5f')]+path[_0x70fc('0x55')](_0x4d7d61[_0x70fc('0x4e')]),function(){if(_0x51a492){fs[_0x70fc('0x56')](_0x4d7d61[_0x70fc('0x4e')]);}});}else{return _0x349d7b[_0x70fc('0x4b')](_0x4d7d61[_0x70fc('0x4e')],function(_0x37cd73){if(_0x51a492){fs[_0x70fc('0x56')](_0x4d7d61['value']);}});}}})[_0x70fc('0x42')](handleError(_0x349d7b,null));};exports[_0x70fc('0x24')]=function(_0x56c0a5,_0x9b4dd5){return db[_0x70fc('0x2b')][_0x70fc('0x49')]({'where':{'id':_0x56c0a5[_0x70fc('0x44')]['id']}})['then'](function(_0x2993b8){if(_['isNil'](_0x2993b8)){throw new ReferenceError(_0x70fc('0x60'));}return _0x2993b8;})['then'](function(_0x5f704f){var _0x2f413e=_0x5f704f[_0x70fc('0x4e')];logger['info'](_0x70fc('0x61'),_0x2f413e);if(!_[_0x70fc('0x62')](_0x5f704f['value'])&&fs[_0x70fc('0x4f')](_0x2f413e)){logger[_0x70fc('0x63')](_0x70fc('0x64')+_0x2f413e+_0x70fc('0x65'));fs[_0x70fc('0x66')](_0x2f413e);}_0x2f413e=_0x2f413e+_0x70fc('0x67');if(!_['isNil'](_0x5f704f['value'])&&fs['existsSync'](_0x2f413e)){logger[_0x70fc('0x63')]('File:\x20\x22'+_0x2f413e+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x70fc('0x66')](_0x2f413e);}return _0x5f704f;})[_0x70fc('0x25')](function(_0x248775){if(!_0x248775)throw new InternalError();return _0x248775[_0x70fc('0x24')]();})[_0x70fc('0x25')](function(){_0x9b4dd5[_0x70fc('0x1c')](0xcc)['end']();})[_0x70fc('0x42')](handleError(_0x9b4dd5,null));};function getBucketslist(_0x4fa98e,_0x2aa25f,_0x43e86f){return new Promise(function(_0x3a9267,_0x286fa4){var _0x36b348=new AWS['S3']({'accessKeyId':_0x2aa25f,'secretAccessKey':_0x4fa98e,'region':_0x43e86f});_0x36b348[_0x70fc('0x68')]({},function(_0x1de292,_0x2e4f88){if(_0x1de292){return _0x286fa4(_0x1de292);}else{return _0x3a9267(_0x2e4f88);}});});}function createBucket(_0x194c71,_0x73ce70,_0x2a776b,_0xd0f017){return new Promise(function(_0x27b13e,_0x3a2d35){var _0x2fba43=new AWS['S3']({'accessKeyId':_0x73ce70,'secretAccessKey':_0x194c71,'region':_0x2a776b});_0x2fba43[_0x70fc('0x69')]({'Bucket':_0xd0f017},function(_0x479720,_0x353cc9){if(_0x479720){return _0x3a2d35(_0x479720);}else{return _0x27b13e(_0x353cc9);}});});}function uploadFile(_0x4383a4,_0x51e832,_0x426176,_0x1701d8,_0x63f56e,_0x257039){return new Promise(function(_0x5d975c,_0x2cb4cf){var _0x42f92f=new AWS['S3']({'accessKeyId':_0x51e832,'secretAccessKey':_0x4383a4,'region':_0x426176});_0x42f92f[_0x70fc('0x6a')]({'Bucket':_0x1701d8,'Key':_0x63f56e,'Body':_0x257039},function(_0xd2e7d3,_0xcfe29b){if(_0xd2e7d3){return _0x2cb4cf(_0xd2e7d3);}else{return _0x5d975c(_0xcfe29b);}});});}function startTranscribe(_0x314fb1,_0x303d98,_0x3b4815,_0x2c2424,_0x1fb9ab,_0xb1cd18){return new Promise(function(_0x49c2a3,_0x7ede93){var _0x3e9399=new AWS['TranscribeService']({'accessKeyId':_0x303d98,'secretAccessKey':_0x314fb1,'region':_0x3b4815});_0x3e9399[_0x70fc('0x6b')]({'TranscriptionJobName':_0x2c2424,'LanguageCode':_0x1fb9ab,'Media':{'MediaFileUri':_0xb1cd18}},function(_0x6bb641,_0x126e22){if(_0x6bb641){return _0x7ede93(_0x6bb641);}else{return _0x49c2a3(_0x126e22);}});});}function transcribe(_0x4fb604,_0x869c6d,_0x59e383,_0x1ecfa7,_0x454024,_0x4eeef3,_0x3a947d){return new Promise(function(_0xbda1e1,_0x484179){var _0x5dde19={};logger[_0x70fc('0x63')](util[_0x70fc('0x2f')](_0x70fc('0x6c'),_0x4fb604,_0x454024));return uploadFile(_0x869c6d,_0x59e383,_0x1ecfa7,_0x454024,path[_0x70fc('0x6d')](_0x4eeef3),fs[_0x70fc('0x6e')](_0x4eeef3))['then'](function(_0x181cc5){logger[_0x70fc('0x63')](util[_0x70fc('0x2f')](_0x70fc('0x6f'),_0x4fb604,_0x454024,_0x181cc5[_0x70fc('0x70')]));_0x5dde19[_0x70fc('0x71')]=_0x181cc5[_0x70fc('0x72')];_0x5dde19[_0x70fc('0x73')]=_0x181cc5['Location'];logger[_0x70fc('0x63')](util[_0x70fc('0x2f')](_0x70fc('0x74'),_0x4fb604));return startTranscribe(_0x869c6d,_0x59e383,_0x1ecfa7,uuidv4(),_0x3a947d,_0x181cc5[_0x70fc('0x70')]);})['then'](function(_0x20a1a2){logger[_0x70fc('0x63')](util[_0x70fc('0x2f')](_0x70fc('0x75'),_0x4fb604,_0x20a1a2[_0x70fc('0x76')][_0x70fc('0x77')]));_0x5dde19[_0x70fc('0x78')]=_0x20a1a2['TranscriptionJob'][_0x70fc('0x77')];_0x5dde19[_0x70fc('0x79')]=_0x20a1a2[_0x70fc('0x76')][_0x70fc('0x7a')];return _0xbda1e1(_0x5dde19);})[_0x70fc('0x42')](function(_0x33981e){return _0x484179(_0x33981e);});});}exports[_0x70fc('0x7b')]=function(_0x50fe75,_0x5647f9,_0x47be78){var _0x25fa74;var _0x5d3d0c;var _0x29667d;var _0x85b4cb=require(_0x70fc('0x4c'));return db['VoiceRecording']['findOne']({'where':{'id':_0x50fe75[_0x70fc('0x44')]['id']}})['then'](function(_0x43a7a2){if(_0x43a7a2){var _0x52e2e6=util[_0x70fc('0x2f')]('%s.cypher',_0x43a7a2['value']);if(fs[_0x70fc('0x4f')](_0x52e2e6)){cypher=!![];return _0x85b4cb[_0x70fc('0x50')](_0x52e2e6,_0x43a7a2[_0x70fc('0x4e')],config[_0x70fc('0x51')]['recording'])[_0x70fc('0x25')](function(){return _0x43a7a2;});}return _0x43a7a2;}})[_0x70fc('0x25')](function(_0x10e6dd){if(!_0x10e6dd){throw new db[(_0x70fc('0x53'))]['ValidationError'](_0x70fc('0x7c'));}_0x5d3d0c=_0x10e6dd;return db[_0x70fc('0x7d')][_0x70fc('0x7e')]({'where':{'id':0x1}});})[_0x70fc('0x25')](handleEntityNotFound(_0x5647f9,null))['then'](function(_0x956005){if(_0x956005){_0x25fa74=_0x956005;if(!_0x25fa74['transcribe']||!_0x25fa74[_0x70fc('0x7f')]||!_0x25fa74[_0x70fc('0x80')]||!_0x25fa74['language']||!_0x25fa74[_0x70fc('0x71')]){throw new db['Sequelize'][(_0x70fc('0x81'))](_0x70fc('0x82'));}if(_0x50fe75[_0x70fc('0x48')][_0x70fc('0x83')]&&(!_0x25fa74[_0x70fc('0x84')]||!_0x25fa74['sentimentAccountId']||!_0x25fa74[_0x70fc('0x85')]||!_0x25fa74[_0x70fc('0x86')]||!_0x25fa74['bucket'])){throw new db[(_0x70fc('0x53'))][(_0x70fc('0x81'))](_0x70fc('0x87'));}return db['CloudProvider'][_0x70fc('0x7e')]({'where':{'id':_0x25fa74[_0x70fc('0x7f')]}});}})['then'](function(_0xdfb7a9){if(!_0xdfb7a9){throw new db[(_0x70fc('0x53'))][(_0x70fc('0x81'))](_0x70fc('0x88'));}if(!_0xdfb7a9[_0x70fc('0x89')]||!_0xdfb7a9[_0x70fc('0x8a')]){throw new db[(_0x70fc('0x53'))]['ValidationError'](_0x70fc('0x8b'));}_0x29667d=_0xdfb7a9;return getBucketslist(_0x29667d[_0x70fc('0x89')],_0x29667d['data2'],_0x25fa74[_0x70fc('0x80')]);})[_0x70fc('0x25')](function(_0x2184d8){if(_0x2184d8&&_0x2184d8[_0x70fc('0x8c')]){var _0x3c0f3d=_[_0x70fc('0x49')](_0x2184d8['Buckets'],function(_0x23169d){return _0x23169d[_0x70fc('0x8d')]===_0x25fa74['bucket'];});if(!_0x3c0f3d){logger[_0x70fc('0x63')](util[_0x70fc('0x2f')](_0x70fc('0x8e'),_0x50fe75[_0x70fc('0x44')]['id'],_0x25fa74[_0x70fc('0x71')]));return createBucket(_0x29667d[_0x70fc('0x89')],_0x29667d['data2'],_0x25fa74[_0x70fc('0x80')],_0x25fa74[_0x70fc('0x71')]);}logger[_0x70fc('0x63')](util[_0x70fc('0x2f')](_0x70fc('0x8f'),_0x50fe75[_0x70fc('0x44')]['id'],_0x25fa74[_0x70fc('0x71')]));return;}})[_0x70fc('0x25')](function(_0x4ac6b6){if(_0x5d3d0c[_0x70fc('0x79')]===_0x70fc('0x90')){return transcribe(_0x50fe75[_0x70fc('0x44')]['id'],_0x29667d[_0x70fc('0x89')],_0x29667d[_0x70fc('0x8a')],_0x25fa74[_0x70fc('0x80')],_0x25fa74['bucket'],_0x5d3d0c[_0x70fc('0x4e')],_0x25fa74[_0x70fc('0x86')]);}else{logger[_0x70fc('0x63')](util['format'](_0x70fc('0x91'),_0x50fe75[_0x70fc('0x44')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x70fc('0x25')](function(_0x135f80){if(_0x135f80){_0x135f80[_0x70fc('0x92')]=_0x50fe75[_0x70fc('0x48')][_0x70fc('0x83')];return _0x5d3d0c[_0x70fc('0x93')](_0x135f80);}})[_0x70fc('0x25')](respondWithResult(_0x5647f9,null))[_0x70fc('0x42')](handleError(_0x5647f9,null));};function writeFile(_0x3aef68,_0x29e56a){return new Promise(function(_0x66d22e,_0x1457be){fs[_0x70fc('0x94')](_0x29e56a,_0x3aef68,function(_0x192384,_0x53cc4f){if(_0x192384){return _0x1457be(_0x192384);}else{return _0x66d22e(_0x53cc4f);}});});}exports[_0x70fc('0x95')]=function(_0x263c79,_0x46aa9d,_0xd4325b){return db[_0x70fc('0x2b')]['findOne']({'where':{'id':_0x263c79[_0x70fc('0x44')]['id']}})[_0x70fc('0x25')](handleEntityNotFound(_0x46aa9d))[_0x70fc('0x25')](function(_0x16d84a){if(_0x16d84a&&_0x16d84a['fileText']){var _0x1e2a0b=_0x16d84a[_0x70fc('0x96')];var _0x45187b=config['root']+'/server/files/transcribes/transcribe_'+_0x16d84a['id']+_0x70fc('0x97');if(fs[_0x70fc('0x4f')](_0x45187b)){return _0x45187b;}return writeFile(_0x1e2a0b,_0x45187b)[_0x70fc('0x25')](function(){return _0x45187b;});}else{throw new db[(_0x70fc('0x53'))][(_0x70fc('0x81'))](_0x70fc('0x98'));}})[_0x70fc('0x25')](function(_0x933fc9){return _0x46aa9d[_0x70fc('0x4b')](_0x933fc9);})[_0x70fc('0x42')](handleError(_0x46aa9d));};
\ No newline at end of file
index 0cf9383..588fb62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe82e=['api','moment','bluebird','path','../../config/environment','./voiceRecording.attributes','exports','define','voice_recordings','uniqueid','lodash','util','../../config/logger'];(function(_0x5f2739,_0x7705b9){var _0x3cb3d4=function(_0x1cd5b0){while(--_0x1cd5b0){_0x5f2739['push'](_0x5f2739['shift']());}};_0x3cb3d4(++_0x7705b9);}(_0xe82e,0x101));var _0xee82=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xe82e[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0xee82('0x0'));var util=require(_0xee82('0x1'));var logger=require(_0xee82('0x2'))(_0xee82('0x3'));var moment=require(_0xee82('0x4'));var BPromise=require(_0xee82('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xee82('0x6'));var rimraf=require('rimraf');var config=require(_0xee82('0x7'));var attributes=require(_0xee82('0x8'));module[_0xee82('0x9')]=function(_0x4f13cf,_0x4d471c){return _0x4f13cf[_0xee82('0xa')]('VoiceRecording',attributes,{'tableName':_0xee82('0xb'),'paranoid':![],'indexes':[{'name':_0xee82('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd16c=['api','bluebird','request-promise','./voiceRecording.attributes','exports','VoiceRecording','uniqueid','lodash','../../config/logger'];(function(_0x1f0045,_0xfe3dd0){var _0x4072e2=function(_0x63abfe){while(--_0x63abfe){_0x1f0045['push'](_0x1f0045['shift']());}};_0x4072e2(++_0xfe3dd0);}(_0xd16c,0xd6));var _0xcd16=function(_0x1e5ce2,_0x2a3a92){_0x1e5ce2=_0x1e5ce2-0x0;var _0x2287a2=_0xd16c[_0x1e5ce2];return _0x2287a2;};'use strict';var _=require(_0xcd16('0x0'));var util=require('util');var logger=require(_0xcd16('0x1'))(_0xcd16('0x2'));var moment=require('moment');var BPromise=require(_0xcd16('0x3'));var rp=require(_0xcd16('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcd16('0x5'));module[_0xcd16('0x6')]=function(_0x5eb2ae,_0x5cd58a){return _0x5eb2ae['define'](_0xcd16('0x7'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xcd16('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 26459ca..4a2d03f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceRecording','update','body','options','raw','where','attributes','limit','UpdateVoiceRecording','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher'];(function(_0xed6261,_0x1f0ee2){var _0x4de7a5=function(_0x2783d6){while(--_0x2783d6){_0xed6261['push'](_0xed6261['shift']());}};_0x4de7a5(++_0x1f0ee2);}(_0x47c5,0x165));var _0x547c=function(_0x510794,_0x120e85){_0x510794=_0x510794-0x0;var _0x3bd818=_0x47c5[_0x510794];return _0x3bd818;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var moment=require(_0x547c('0x2'));var BPromise=require(_0x547c('0x3'));var rs=require(_0x547c('0x4'));var fs=require('fs');var Redis=require(_0x547c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x547c('0x6'));var logger=require(_0x547c('0x7'))('rpc');var config=require(_0x547c('0x8'));var jayson=require(_0x547c('0x9'));var client=jayson['client'][_0x547c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x439f25,_0x381f2e,_0x10a334){return new BPromise(function(_0x12fb7d,_0x4ef079){return client[_0x547c('0xb')](_0x439f25,_0x10a334)[_0x547c('0xc')](function(_0x10dec9){logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));logger[_0x547c('0x10')](_0x547c('0x11'),_0x381f2e,_0x547c('0xf'),JSON[_0x547c('0x12')](_0x10dec9));if(_0x10dec9[_0x547c('0x13')]){if(_0x10dec9['error'][_0x547c('0x14')]===0x1f4){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x4ef079(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}logger[_0x547c('0x13')](_0x547c('0xe'),_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x12fb7d(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}else{logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));_0x12fb7d(_0x10dec9[_0x547c('0x16')][_0x547c('0x15')]);}})[_0x547c('0x17')](function(_0x39498d){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}exports['UpdateVoiceRecording']=function(_0x23fa9e){var _0x199e4f=this;return new Promise(function(_0xeb059e,_0x4a8901){return db[_0x547c('0x18')][_0x547c('0x19')](_0x23fa9e[_0x547c('0x1a')],{'raw':_0x23fa9e['options']?_0x23fa9e[_0x547c('0x1b')][_0x547c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23fa9e['options']?_0x23fa9e['options'][_0x547c('0x1d')]||null:null,'attributes':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1e')]||null:null,'limit':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1f')]||null:null})[_0x547c('0xc')](function(_0x436e67){logger['info'](_0x547c('0x20'),_0x23fa9e);logger[_0x547c('0x10')](_0x547c('0x20'),_0x23fa9e,JSON[_0x547c('0x12')](_0x436e67));_0xeb059e(_0x436e67);})[_0x547c('0x17')](function(_0x2663bc){logger[_0x547c('0x13')](_0x547c('0x20'),_0x2663bc['message'],_0x23fa9e);_0x4a8901(_0x199e4f[_0x547c('0x13')](0x1f4,_0x2663bc['message']));});});};exports['CreateVoiceRecording']=function(_0x4855fd){var _0x478f04=this;return new Promise(function(_0x2c725d,_0x4c5256){var _0x93985c=require('../../components/encryptor');var _0x3ea493;return db['Setting'][_0x547c('0x21')]({'attributes':['id',_0x547c('0x22')],'where':{'id':0x1},'raw':!![]})[_0x547c('0xc')](function(_0x30a96c){_0x3ea493=_0x30a96c;return db[_0x547c('0x18')]['create'](_0x4855fd['body']);})[_0x547c('0xc')](function(_0x54de6f){if(_0x3ea493[_0x547c('0x22')]&&fs[_0x547c('0x23')](_0x54de6f[_0x547c('0x24')])){var _0x1695be=util[_0x547c('0x25')](_0x547c('0x26'),_0x54de6f[_0x547c('0x24')]);return _0x93985c['encryptFile'](_0x54de6f['value'],_0x1695be,config[_0x547c('0x27')][_0x547c('0x28')])[_0x547c('0xc')](function(){fs[_0x547c('0x29')](_0x54de6f[_0x547c('0x24')]);logger[_0x547c('0xd')](_0x547c('0x2a'));return _0x54de6f;});}return _0x54de6f;})[_0x547c('0xc')](function(_0x378bac){logger[_0x547c('0xd')](_0x547c('0x2b'),_0x4855fd);logger[_0x547c('0x10')](_0x547c('0x2b'),_0x4855fd,JSON[_0x547c('0x12')](_0x378bac));_0x2c725d(_0x378bac);})['catch'](function(_0x3afc28){logger['error']('CreateVoiceRecording',_0x3afc28['message'],_0x4855fd);_0x4c5256(_0x478f04[_0x547c('0x13')](0x1f4,_0x3afc28[_0x547c('0x15')]));});});};
\ No newline at end of file
+var _0x958a=['unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher'];(function(_0x23f132,_0x5d919e){var _0x2b10bf=function(_0x396c0d){while(--_0x396c0d){_0x23f132['push'](_0x23f132['shift']());}};_0x2b10bf(++_0x5d919e);}(_0x958a,0x128));var _0xa958=function(_0x2433db,_0xe4a9bd){_0x2433db=_0x2433db-0x0;var _0xee4bc=_0x958a[_0x2433db];return _0xee4bc;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var moment=require('moment');var BPromise=require(_0xa958('0x2'));var rs=require(_0xa958('0x3'));var fs=require('fs');var Redis=require(_0xa958('0x4'));var db=require(_0xa958('0x5'))['db'];var utils=require(_0xa958('0x6'));var logger=require('../../config/logger')(_0xa958('0x7'));var config=require('../../config/environment');var jayson=require(_0xa958('0x8'));var client=jayson[_0xa958('0x9')][_0xa958('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ddaa9,_0x3ca01f,_0x3b2693){return new BPromise(function(_0x1895da,_0x54c0e0){return client['request'](_0x3ddaa9,_0x3b2693)[_0xa958('0xb')](function(_0x249764){logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));logger[_0xa958('0xf')](_0xa958('0x10'),_0x3ca01f,_0xa958('0xe'),JSON[_0xa958('0x11')](_0x249764));if(_0x249764[_0xa958('0x12')]){if(_0x249764[_0xa958('0x12')][_0xa958('0x13')]===0x1f4){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764['error']['message']);return _0x54c0e0(_0x249764[_0xa958('0x12')][_0xa958('0x14')]);}logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764[_0xa958('0x12')]['message']);return _0x1895da(_0x249764['error']['message']);}else{logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));_0x1895da(_0x249764[_0xa958('0x15')][_0xa958('0x14')]);}})[_0xa958('0x16')](function(_0x23736f){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x23736f);_0x54c0e0(_0x23736f);});});}exports[_0xa958('0x17')]=function(_0x4eadc9){var _0x3a053f=this;return new Promise(function(_0x70d13e,_0x52a184){return db[_0xa958('0x18')][_0xa958('0x19')](_0x4eadc9[_0xa958('0x1a')],{'raw':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')][_0xa958('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eadc9['options']?_0x4eadc9['options'][_0xa958('0x1d')]||null:null,'attributes':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['attributes']||null:null,'limit':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['limit']||null:null})[_0xa958('0xb')](function(_0x401175){logger['info']('UpdateVoiceRecording',_0x4eadc9);logger[_0xa958('0xf')](_0xa958('0x17'),_0x4eadc9,JSON['stringify'](_0x401175));_0x70d13e(_0x401175);})[_0xa958('0x16')](function(_0x27097a){logger[_0xa958('0x12')](_0xa958('0x17'),_0x27097a[_0xa958('0x14')],_0x4eadc9);_0x52a184(_0x3a053f[_0xa958('0x12')](0x1f4,_0x27097a['message']));});});};exports[_0xa958('0x1e')]=function(_0x48ef34){var _0x43df63=this;return new Promise(function(_0x3c2ea3,_0x32ea36){var _0x18f600=require(_0xa958('0x1f'));var _0xddc7f6;return db[_0xa958('0x20')][_0xa958('0x21')]({'attributes':['id',_0xa958('0x22')],'where':{'id':0x1},'raw':!![]})[_0xa958('0xb')](function(_0x4c4c37){_0xddc7f6=_0x4c4c37;return db['VoiceRecording'][_0xa958('0x23')](_0x48ef34['body']);})[_0xa958('0xb')](function(_0x1b76de){if(_0xddc7f6['callRecordingEncryption']&&fs[_0xa958('0x24')](_0x1b76de[_0xa958('0x25')])){var _0x179bc2=util[_0xa958('0x26')](_0xa958('0x27'),_0x1b76de['value']);return _0x18f600['encryptFile'](_0x1b76de[_0xa958('0x25')],_0x179bc2,config['secrets']['recording'])[_0xa958('0xb')](function(){fs[_0xa958('0x28')](_0x1b76de[_0xa958('0x25')]);logger[_0xa958('0xc')](_0xa958('0x29'));return _0x1b76de;});}return _0x1b76de;})[_0xa958('0xb')](function(_0x516a2f){logger[_0xa958('0xc')]('CreateVoiceRecording',_0x48ef34);logger['debug'](_0xa958('0x1e'),_0x48ef34,JSON[_0xa958('0x11')](_0x516a2f));_0x3c2ea3(_0x516a2f);})[_0xa958('0x16')](function(_0x1cc55d){logger[_0xa958('0x12')](_0xa958('0x1e'),_0x1cc55d[_0xa958('0x14')],_0x48ef34);_0x32ea36(_0x43df63[_0xa958('0x12')](0x1f4,_0x1cc55d['message']));});});};
\ No newline at end of file
index ea0a549..dad3267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe12d=['create','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/:id','show'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xe12d,0xcb));var _0xde12=function(_0x2b5f49,_0xd9dbfb){_0x2b5f49=_0x2b5f49-0x0;var _0x1f9bdc=_0xe12d[_0x2b5f49];return _0x1f9bdc;};'use strict';var multer=require(_0xde12('0x0'));var util=require(_0xde12('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xde12('0x2'));var router=express[_0xde12('0x3')]();var fs_extra=require(_0xde12('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xde12('0x5'));var config=require(_0xde12('0x6'));var controller=require(_0xde12('0x7'));router[_0xde12('0x8')]('/',auth[_0xde12('0x9')](),controller[_0xde12('0xa')]);router['get']('/describe',auth[_0xde12('0x9')](),controller['describe']);router[_0xde12('0x8')](_0xde12('0xb'),auth[_0xde12('0x9')](),controller[_0xde12('0xc')]);router['post']('/',auth[_0xde12('0x9')](),controller[_0xde12('0xd')]);router['put']('/:id',auth[_0xde12('0x9')](),controller[_0xde12('0xe')]);router[_0xde12('0xf')](_0xde12('0xb'),auth[_0xde12('0x9')](),controller[_0xde12('0x10')]);module[_0xde12('0x11')]=router;
\ No newline at end of file
+var _0x413e=['get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','destroy','exports','util','Router','../../components/auth/service','../../config/environment'];(function(_0x4f74ac,_0x2999aa){var _0x58ed4f=function(_0x1c7378){while(--_0x1c7378){_0x4f74ac['push'](_0x4f74ac['shift']());}};_0x58ed4f(++_0x2999aa);}(_0x413e,0x1bc));var _0xe413=function(_0x24465a,_0x26d803){_0x24465a=_0x24465a-0x0;var _0x511336=_0x413e[_0x24465a];return _0x511336;};'use strict';var multer=require('multer');var util=require(_0xe413('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe413('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xe413('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xe413('0x3'));var controller=require('./voiceTransferReport.controller');router[_0xe413('0x4')]('/',auth[_0xe413('0x5')](),controller[_0xe413('0x6')]);router[_0xe413('0x4')](_0xe413('0x7'),auth[_0xe413('0x5')](),controller[_0xe413('0x8')]);router[_0xe413('0x4')](_0xe413('0x9'),auth[_0xe413('0x5')](),controller[_0xe413('0xa')]);router[_0xe413('0xb')]('/',auth[_0xe413('0x5')](),controller['create']);router[_0xe413('0xc')]('/:id',auth[_0xe413('0x5')](),controller[_0xe413('0xd')]);router['delete'](_0xe413('0x9'),auth[_0xe413('0x5')](),controller[_0xe413('0xe')]);module[_0xe413('0xf')]=router;
\ No newline at end of file
index 6f9178b..c8095ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b2=['STRING','Yes','sequelize','moment','exports','ENUM','blind','attended'];(function(_0x37ce49,_0x3eb0bd){var _0x5a6f52=function(_0x3a644a){while(--_0x3a644a){_0x37ce49['push'](_0x37ce49['shift']());}};_0x5a6f52(++_0x3eb0bd);}(_0x49b2,0x142));var _0x249b=function(_0x1a92fe,_0x5a9af1){_0x1a92fe=_0x1a92fe-0x0;var _0x7977d9=_0x49b2[_0x1a92fe];return _0x7977d9;};'use strict';var Sequelize=require(_0x249b('0x0'));var moment=require(_0x249b('0x1'));module[_0x249b('0x2')]={'type':{'type':Sequelize[_0x249b('0x3')](_0x249b('0x4'),_0x249b('0x5'))},'result':{'type':Sequelize[_0x249b('0x6')]},'transfererchannel':{'type':Sequelize[_0x249b('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x249b('0x6')]},'transferercalleridname':{'type':Sequelize[_0x249b('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0x249b('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x249b('0x6')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0x249b('0x6')]},'transfererlinkedid':{'type':Sequelize[_0x249b('0x6')]},'transfereechannel':{'type':Sequelize[_0x249b('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0x249b('0x6')]},'transfereecalleridname':{'type':Sequelize[_0x249b('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x249b('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0x249b('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x249b('0x6')]},'transfereecontext':{'type':Sequelize[_0x249b('0x6')]},'transfereeexten':{'type':Sequelize[_0x249b('0x6')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM'](_0x249b('0x7'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x249b('0x6')]}};
\ No newline at end of file
+var _0xe7aa=['Yes','moment','exports','ENUM','blind','attended','STRING'];(function(_0x59e703,_0x62b160){var _0x5e46c3=function(_0x5757b5){while(--_0x5757b5){_0x59e703['push'](_0x59e703['shift']());}};_0x5e46c3(++_0x62b160);}(_0xe7aa,0xe8));var _0xae7a=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xe7aa[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xae7a('0x0'));module[_0xae7a('0x1')]={'type':{'type':Sequelize[_0xae7a('0x2')](_0xae7a('0x3'),_0xae7a('0x4'))},'result':{'type':Sequelize[_0xae7a('0x5')]},'transfererchannel':{'type':Sequelize[_0xae7a('0x5')]},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xae7a('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0xae7a('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0xae7a('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xae7a('0x5')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0xae7a('0x5')]},'transfererlinkedid':{'type':Sequelize[_0xae7a('0x5')]},'transfereechannel':{'type':Sequelize[_0xae7a('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0xae7a('0x5')]},'transfereecalleridname':{'type':Sequelize[_0xae7a('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xae7a('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0xae7a('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xae7a('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0xae7a('0x5')]},'isexternal':{'type':Sequelize['ENUM'](_0xae7a('0x6'),'No')},'context':{'type':Sequelize[_0xae7a('0x5')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 62c1fbb..57af4dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d67=['util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','sendStatus','error','stack','name','send','index','VoiceTransferReport','rawAttributes','key','map','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6d67,0x135));var _0x76d6=function(_0x57441a,_0x5b3353){_0x57441a=_0x57441a-0x0;var _0x37a09a=_0x6d67[_0x57441a];return _0x37a09a;};'use strict';var emlformat=require(_0x76d6('0x0'));var rimraf=require(_0x76d6('0x1'));var zipdir=require(_0x76d6('0x2'));var jsonpatch=require(_0x76d6('0x3'));var rp=require('request-promise');var moment=require(_0x76d6('0x4'));var BPromise=require(_0x76d6('0x5'));var Mustache=require(_0x76d6('0x6'));var util=require(_0x76d6('0x7'));var path=require(_0x76d6('0x8'));var sox=require(_0x76d6('0x9'));var csv=require(_0x76d6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x76d6('0xb'));var _=require(_0x76d6('0xc'));var squel=require(_0x76d6('0xd'));var crypto=require(_0x76d6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x76d6('0xf'));var toCsv=require(_0x76d6('0xa'));var querystring=require(_0x76d6('0x10'));var Papa=require(_0x76d6('0x11'));var Redis=require(_0x76d6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x76d6('0x13'));var as=require(_0x76d6('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x76d6('0x15'))('api');var utils=require(_0x76d6('0x16'));var config=require(_0x76d6('0x17'));var licenseUtil=require(_0x76d6('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x99ad6c,_0x484c63){_0x484c63=_0x484c63||0xcc;return function(_0x58334b){if(_0x58334b){return _0x99ad6c['sendStatus'](_0x484c63);}return _0x99ad6c[_0x76d6('0x19')](_0x484c63)[_0x76d6('0x1a')]();};}function respondWithResult(_0x4fc353,_0x5de5c0){_0x5de5c0=_0x5de5c0||0xc8;return function(_0x4acf69){if(_0x4acf69){return _0x4fc353[_0x76d6('0x19')](_0x5de5c0)[_0x76d6('0x1b')](_0x4acf69);}};}function respondWithFilteredResult(_0x52d913,_0x3d65f7){return function(_0x2be39c){if(_0x2be39c){var _0x4d70f2=typeof _0x3d65f7[_0x76d6('0x1c')]===_0x76d6('0x1d')&&typeof _0x3d65f7['limit']===_0x76d6('0x1d');var _0x3d4e06=_0x2be39c[_0x76d6('0x1e')];var _0x379cc3=_0x4d70f2?0x0:_0x3d65f7['offset'];var _0x5402b0=_0x4d70f2?_0x2be39c[_0x76d6('0x1e')]:_0x3d65f7['offset']+_0x3d65f7[_0x76d6('0x1f')];var _0xb409d9;if(_0x5402b0>=_0x3d4e06){_0x5402b0=_0x3d4e06;_0xb409d9=0xc8;}else{_0xb409d9=0xce;}_0x52d913[_0x76d6('0x19')](_0xb409d9);return _0x52d913[_0x76d6('0x20')](_0x76d6('0x21'),_0x379cc3+'-'+_0x5402b0+'/'+_0x3d4e06)['json'](_0x2be39c);}return null;};}function patchUpdates(_0x29e2c6){return function(_0x2a225b){try{jsonpatch[_0x76d6('0x22')](_0x2a225b,_0x29e2c6,!![]);}catch(_0x51b59e){return BPromise[_0x76d6('0x23')](_0x51b59e);}return _0x2a225b['save']();};}function saveUpdates(_0x576206,_0x1ccb8b){return function(_0x246023){if(_0x246023){return _0x246023[_0x76d6('0x24')](_0x576206)['then'](function(_0x2c6140){return _0x2c6140;});}return null;};}function removeEntity(_0x2beb53,_0x112618){return function(_0x39cf4d){if(_0x39cf4d){return _0x39cf4d[_0x76d6('0x25')]()['then'](function(){_0x2beb53[_0x76d6('0x19')](0xcc)[_0x76d6('0x1a')]();});}};}function handleEntityNotFound(_0x35ba45,_0x54ca75){return function(_0x167302){if(!_0x167302){_0x35ba45[_0x76d6('0x26')](0x194);}return _0x167302;};}function handleError(_0x446759,_0x7da0b9){_0x7da0b9=_0x7da0b9||0x1f4;return function(_0x1bc334){logger[_0x76d6('0x27')](_0x1bc334[_0x76d6('0x28')]);if(_0x1bc334[_0x76d6('0x29')]){delete _0x1bc334[_0x76d6('0x29')];}_0x446759[_0x76d6('0x19')](_0x7da0b9)[_0x76d6('0x2a')](_0x1bc334);};}exports[_0x76d6('0x2b')]=function(_0x508f1d,_0x81e4c0){var _0x2b3f7f={},_0x184e0f={},_0x2b3769={'count':0x0,'rows':[]};var _0x119598=_['map'](db[_0x76d6('0x2c')][_0x76d6('0x2d')],function(_0x3fc5f2){return{'name':_0x3fc5f2['fieldName'],'type':_0x3fc5f2['type'][_0x76d6('0x2e')]};});_0x184e0f['model']=_[_0x76d6('0x2f')](_0x119598,'name');_0x184e0f[_0x76d6('0x30')]=_[_0x76d6('0x31')](_0x508f1d[_0x76d6('0x30')]);_0x184e0f[_0x76d6('0x32')]=_['intersection'](_0x184e0f[_0x76d6('0x33')],_0x184e0f[_0x76d6('0x30')]);_0x2b3f7f[_0x76d6('0x34')]=_[_0x76d6('0x35')](_0x184e0f[_0x76d6('0x33')],qs[_0x76d6('0x36')](_0x508f1d[_0x76d6('0x30')][_0x76d6('0x36')]));_0x2b3f7f[_0x76d6('0x34')]=_0x2b3f7f[_0x76d6('0x34')]['length']?_0x2b3f7f[_0x76d6('0x34')]:_0x184e0f[_0x76d6('0x33')];if(!_0x508f1d[_0x76d6('0x30')][_0x76d6('0x37')](_0x76d6('0x38'))){_0x2b3f7f['limit']=qs['limit'](_0x508f1d['query']['limit']);_0x2b3f7f['offset']=qs['offset'](_0x508f1d[_0x76d6('0x30')][_0x76d6('0x1c')]);}_0x2b3f7f[_0x76d6('0x39')]=qs[_0x76d6('0x3a')](_0x508f1d[_0x76d6('0x30')]['sort']);_0x2b3f7f[_0x76d6('0x3b')]=qs[_0x76d6('0x32')](_[_0x76d6('0x3c')](_0x508f1d[_0x76d6('0x30')],_0x184e0f[_0x76d6('0x32')]),_0x119598);if(_0x508f1d['query'][_0x76d6('0x3d')]){_0x2b3f7f[_0x76d6('0x3b')]=_[_0x76d6('0x3e')](_0x2b3f7f[_0x76d6('0x3b')],{'$or':_[_0x76d6('0x2f')](_0x119598,function(_0x402a70){if(_0x402a70[_0x76d6('0x3f')]!==_0x76d6('0x40')){var _0x1163b4={};_0x1163b4[_0x402a70[_0x76d6('0x29')]]={'$like':'%'+_0x508f1d[_0x76d6('0x30')][_0x76d6('0x3d')]+'%'};return _0x1163b4;}})});}_0x2b3f7f=_[_0x76d6('0x3e')]({},_0x2b3f7f,_0x508f1d[_0x76d6('0x41')]);var _0x27eb2a={'where':_0x2b3f7f[_0x76d6('0x3b')]};return db[_0x76d6('0x2c')][_0x76d6('0x1e')](_0x27eb2a)[_0x76d6('0x42')](function(_0x354f06){_0x2b3769[_0x76d6('0x1e')]=_0x354f06;if(_0x508f1d[_0x76d6('0x30')][_0x76d6('0x43')]){_0x2b3f7f[_0x76d6('0x44')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x76d6('0x45')](_0x2b3f7f);})[_0x76d6('0x42')](function(_0x599e81){_0x2b3769[_0x76d6('0x46')]=_0x599e81;return _0x2b3769;})[_0x76d6('0x42')](respondWithFilteredResult(_0x81e4c0,_0x2b3f7f))[_0x76d6('0x47')](handleError(_0x81e4c0,null));};exports[_0x76d6('0x48')]=function(_0xa2cbf4,_0x552754){var _0x29ea9f={'raw':!![],'where':{'id':_0xa2cbf4[_0x76d6('0x49')]['id']}},_0xfedb1d={};_0xfedb1d['model']=_[_0x76d6('0x31')](db[_0x76d6('0x2c')][_0x76d6('0x2d')]);_0xfedb1d[_0x76d6('0x30')]=_[_0x76d6('0x31')](_0xa2cbf4['query']);_0xfedb1d[_0x76d6('0x32')]=_[_0x76d6('0x35')](_0xfedb1d[_0x76d6('0x33')],_0xfedb1d['query']);_0x29ea9f[_0x76d6('0x34')]=_[_0x76d6('0x35')](_0xfedb1d[_0x76d6('0x33')],qs[_0x76d6('0x36')](_0xa2cbf4[_0x76d6('0x30')][_0x76d6('0x36')]));_0x29ea9f['attributes']=_0x29ea9f[_0x76d6('0x34')][_0x76d6('0x4a')]?_0x29ea9f['attributes']:_0xfedb1d[_0x76d6('0x33')];if(_0xa2cbf4['query'][_0x76d6('0x43')]){_0x29ea9f[_0x76d6('0x44')]=[{'all':!![]}];}_0x29ea9f=_[_0x76d6('0x3e')]({},_0x29ea9f,_0xa2cbf4[_0x76d6('0x41')]);return db['VoiceTransferReport']['find'](_0x29ea9f)[_0x76d6('0x42')](handleEntityNotFound(_0x552754,null))[_0x76d6('0x42')](respondWithResult(_0x552754,null))[_0x76d6('0x47')](handleError(_0x552754,null));};exports[_0x76d6('0x4b')]=function(_0x4b572f,_0x4c9c1f){return db['VoiceTransferReport']['create'](_0x4b572f[_0x76d6('0x4c')],{})[_0x76d6('0x42')](respondWithResult(_0x4c9c1f,0xc9))[_0x76d6('0x47')](handleError(_0x4c9c1f,null));};exports[_0x76d6('0x24')]=function(_0x551af8,_0x3f7478){if(_0x551af8[_0x76d6('0x4c')]['id']){delete _0x551af8['body']['id'];}return db[_0x76d6('0x2c')]['find']({'where':{'id':_0x551af8['params']['id']}})[_0x76d6('0x42')](handleEntityNotFound(_0x3f7478,null))[_0x76d6('0x42')](saveUpdates(_0x551af8['body'],null))[_0x76d6('0x42')](respondWithResult(_0x3f7478,null))[_0x76d6('0x47')](handleError(_0x3f7478,null));};exports[_0x76d6('0x25')]=function(_0x45224e,_0x59da88){return db[_0x76d6('0x2c')][_0x76d6('0x4d')]({'where':{'id':_0x45224e['params']['id']}})['then'](handleEntityNotFound(_0x59da88,null))[_0x76d6('0x42')](removeEntity(_0x59da88,null))[_0x76d6('0x47')](handleError(_0x59da88,null));};exports[_0x76d6('0x4e')]=function(_0x3bb02d,_0x34e24e){return db[_0x76d6('0x2c')][_0x76d6('0x4e')]()[_0x76d6('0x42')](respondWithResult(_0x34e24e,null))[_0x76d6('0x47')](handleError(_0x34e24e,null));};
\ No newline at end of file
+var _0x0274=['eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','name','index','map','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','VoiceTransferReport','findAll','rows','show','params','include','catch','create','body','find','describe'];(function(_0x555d87,_0x207a9c){var _0x47a78e=function(_0x20691b){while(--_0x20691b){_0x555d87['push'](_0x555d87['shift']());}};_0x47a78e(++_0x207a9c);}(_0x0274,0xd8));var _0x4027=function(_0x58949d,_0x3a3912){_0x58949d=_0x58949d-0x0;var _0x4a2929=_0x0274[_0x58949d];return _0x4a2929;};'use strict';var emlformat=require(_0x4027('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4027('0x1'));var rp=require(_0x4027('0x2'));var moment=require(_0x4027('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4027('0x4'));var util=require(_0x4027('0x5'));var path=require(_0x4027('0x6'));var sox=require(_0x4027('0x7'));var csv=require(_0x4027('0x8'));var ejs=require(_0x4027('0x9'));var fs=require('fs');var fs_extra=require(_0x4027('0xa'));var _=require(_0x4027('0xb'));var squel=require(_0x4027('0xc'));var crypto=require(_0x4027('0xd'));var jsforce=require(_0x4027('0xe'));var deskjs=require(_0x4027('0xf'));var toCsv=require(_0x4027('0x8'));var querystring=require('querystring');var Papa=require(_0x4027('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4027('0x11'));var as=require(_0x4027('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4027('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x4027('0x14'));var licenseUtil=require(_0x4027('0x15'));var db=require(_0x4027('0x16'))['db'];function respondWithStatusCode(_0x10e879,_0x483fa5){_0x483fa5=_0x483fa5||0xcc;return function(_0xa09c7a){if(_0xa09c7a){return _0x10e879['sendStatus'](_0x483fa5);}return _0x10e879[_0x4027('0x17')](_0x483fa5)[_0x4027('0x18')]();};}function respondWithResult(_0x43b3b4,_0x1b36e9){_0x1b36e9=_0x1b36e9||0xc8;return function(_0x523a1d){if(_0x523a1d){return _0x43b3b4[_0x4027('0x17')](_0x1b36e9)['json'](_0x523a1d);}};}function respondWithFilteredResult(_0x4f8b18,_0x5100f2){return function(_0x1e1999){if(_0x1e1999){var _0x21a058=typeof _0x5100f2[_0x4027('0x19')]===_0x4027('0x1a')&&typeof _0x5100f2[_0x4027('0x1b')]==='undefined';var _0x45cb88=_0x1e1999[_0x4027('0x1c')];var _0x5ceaff=_0x21a058?0x0:_0x5100f2[_0x4027('0x19')];var _0x3a9b62=_0x21a058?_0x1e1999[_0x4027('0x1c')]:_0x5100f2[_0x4027('0x19')]+_0x5100f2[_0x4027('0x1b')];var _0x390cdb;if(_0x3a9b62>=_0x45cb88){_0x3a9b62=_0x45cb88;_0x390cdb=0xc8;}else{_0x390cdb=0xce;}_0x4f8b18['status'](_0x390cdb);return _0x4f8b18[_0x4027('0x1d')](_0x4027('0x1e'),_0x5ceaff+'-'+_0x3a9b62+'/'+_0x45cb88)[_0x4027('0x1f')](_0x1e1999);}return null;};}function patchUpdates(_0x366ee6){return function(_0x268ea8){try{jsonpatch[_0x4027('0x20')](_0x268ea8,_0x366ee6,!![]);}catch(_0xedadc2){return BPromise[_0x4027('0x21')](_0xedadc2);}return _0x268ea8[_0x4027('0x22')]();};}function saveUpdates(_0xf4454d,_0x138a53){return function(_0xdc4ca3){if(_0xdc4ca3){return _0xdc4ca3[_0x4027('0x23')](_0xf4454d)[_0x4027('0x24')](function(_0x5922da){return _0x5922da;});}return null;};}function removeEntity(_0x26e85e,_0x2f014e){return function(_0x2ce2f8){if(_0x2ce2f8){return _0x2ce2f8[_0x4027('0x25')]()[_0x4027('0x24')](function(){_0x26e85e[_0x4027('0x17')](0xcc)[_0x4027('0x18')]();});}};}function handleEntityNotFound(_0x4b2c88,_0x32674e){return function(_0x4ff738){if(!_0x4ff738){_0x4b2c88['sendStatus'](0x194);}return _0x4ff738;};}function handleError(_0x2080f1,_0xc9c2d6){_0xc9c2d6=_0xc9c2d6||0x1f4;return function(_0x1fd466){logger['error'](_0x1fd466['stack']);if(_0x1fd466[_0x4027('0x26')]){delete _0x1fd466[_0x4027('0x26')];}_0x2080f1[_0x4027('0x17')](_0xc9c2d6)['send'](_0x1fd466);};}exports[_0x4027('0x27')]=function(_0x13fb78,_0x1fc0da){var _0x4602f3={},_0x46cbf2={},_0x36e302={'count':0x0,'rows':[]};var _0x16376c=_[_0x4027('0x28')](db['VoiceTransferReport']['rawAttributes'],function(_0x3147ef){return{'name':_0x3147ef[_0x4027('0x29')],'type':_0x3147ef[_0x4027('0x2a')][_0x4027('0x2b')]};});_0x46cbf2[_0x4027('0x2c')]=_[_0x4027('0x28')](_0x16376c,_0x4027('0x26'));_0x46cbf2['query']=_[_0x4027('0x2d')](_0x13fb78[_0x4027('0x2e')]);_0x46cbf2['filters']=_[_0x4027('0x2f')](_0x46cbf2[_0x4027('0x2c')],_0x46cbf2[_0x4027('0x2e')]);_0x4602f3[_0x4027('0x30')]=_[_0x4027('0x2f')](_0x46cbf2[_0x4027('0x2c')],qs[_0x4027('0x31')](_0x13fb78['query'][_0x4027('0x31')]));_0x4602f3[_0x4027('0x30')]=_0x4602f3[_0x4027('0x30')]['length']?_0x4602f3[_0x4027('0x30')]:_0x46cbf2[_0x4027('0x2c')];if(!_0x13fb78[_0x4027('0x2e')][_0x4027('0x32')](_0x4027('0x33'))){_0x4602f3['limit']=qs[_0x4027('0x1b')](_0x13fb78[_0x4027('0x2e')][_0x4027('0x1b')]);_0x4602f3[_0x4027('0x19')]=qs[_0x4027('0x19')](_0x13fb78[_0x4027('0x2e')]['offset']);}_0x4602f3[_0x4027('0x34')]=qs[_0x4027('0x35')](_0x13fb78[_0x4027('0x2e')][_0x4027('0x35')]);_0x4602f3[_0x4027('0x36')]=qs[_0x4027('0x37')](_[_0x4027('0x38')](_0x13fb78['query'],_0x46cbf2['filters']),_0x16376c);if(_0x13fb78[_0x4027('0x2e')][_0x4027('0x39')]){_0x4602f3[_0x4027('0x36')]=_[_0x4027('0x3a')](_0x4602f3[_0x4027('0x36')],{'$or':_['map'](_0x16376c,function(_0x4e1483){if(_0x4e1483[_0x4027('0x2a')]!=='VIRTUAL'){var _0x12ce8e={};_0x12ce8e[_0x4e1483[_0x4027('0x26')]]={'$like':'%'+_0x13fb78[_0x4027('0x2e')][_0x4027('0x39')]+'%'};return _0x12ce8e;}})});}_0x4602f3=_[_0x4027('0x3a')]({},_0x4602f3,_0x13fb78[_0x4027('0x3b')]);var _0x1d1489={'where':_0x4602f3['where']};return db['VoiceTransferReport'][_0x4027('0x1c')](_0x1d1489)[_0x4027('0x24')](function(_0x48e26a){_0x36e302[_0x4027('0x1c')]=_0x48e26a;if(_0x13fb78['query'][_0x4027('0x3c')]){_0x4602f3['include']=[{'all':!![]}];}return db[_0x4027('0x3d')][_0x4027('0x3e')](_0x4602f3);})['then'](function(_0xe3d53){_0x36e302[_0x4027('0x3f')]=_0xe3d53;return _0x36e302;})['then'](respondWithFilteredResult(_0x1fc0da,_0x4602f3))['catch'](handleError(_0x1fc0da,null));};exports[_0x4027('0x40')]=function(_0x5446c9,_0xaa59f2){var _0x21d526={'raw':!![],'where':{'id':_0x5446c9[_0x4027('0x41')]['id']}},_0x565b99={};_0x565b99[_0x4027('0x2c')]=_[_0x4027('0x2d')](db[_0x4027('0x3d')]['rawAttributes']);_0x565b99['query']=_['keys'](_0x5446c9[_0x4027('0x2e')]);_0x565b99[_0x4027('0x37')]=_[_0x4027('0x2f')](_0x565b99[_0x4027('0x2c')],_0x565b99[_0x4027('0x2e')]);_0x21d526['attributes']=_[_0x4027('0x2f')](_0x565b99[_0x4027('0x2c')],qs[_0x4027('0x31')](_0x5446c9[_0x4027('0x2e')]['fields']));_0x21d526[_0x4027('0x30')]=_0x21d526[_0x4027('0x30')]['length']?_0x21d526[_0x4027('0x30')]:_0x565b99[_0x4027('0x2c')];if(_0x5446c9[_0x4027('0x2e')][_0x4027('0x3c')]){_0x21d526[_0x4027('0x42')]=[{'all':!![]}];}_0x21d526=_[_0x4027('0x3a')]({},_0x21d526,_0x5446c9['options']);return db[_0x4027('0x3d')]['find'](_0x21d526)[_0x4027('0x24')](handleEntityNotFound(_0xaa59f2,null))[_0x4027('0x24')](respondWithResult(_0xaa59f2,null))[_0x4027('0x43')](handleError(_0xaa59f2,null));};exports[_0x4027('0x44')]=function(_0xd94de1,_0x615c8e){return db[_0x4027('0x3d')][_0x4027('0x44')](_0xd94de1[_0x4027('0x45')],{})[_0x4027('0x24')](respondWithResult(_0x615c8e,0xc9))[_0x4027('0x43')](handleError(_0x615c8e,null));};exports[_0x4027('0x23')]=function(_0x363bc9,_0xf392f4){if(_0x363bc9[_0x4027('0x45')]['id']){delete _0x363bc9['body']['id'];}return db[_0x4027('0x3d')][_0x4027('0x46')]({'where':{'id':_0x363bc9['params']['id']}})[_0x4027('0x24')](handleEntityNotFound(_0xf392f4,null))[_0x4027('0x24')](saveUpdates(_0x363bc9[_0x4027('0x45')],null))[_0x4027('0x24')](respondWithResult(_0xf392f4,null))['catch'](handleError(_0xf392f4,null));};exports[_0x4027('0x25')]=function(_0x5103ed,_0x26aa64){return db['VoiceTransferReport'][_0x4027('0x46')]({'where':{'id':_0x5103ed['params']['id']}})[_0x4027('0x24')](handleEntityNotFound(_0x26aa64,null))[_0x4027('0x24')](removeEntity(_0x26aa64,null))[_0x4027('0x43')](handleError(_0x26aa64,null));};exports['describe']=function(_0x1205ee,_0x267e5e){return db[_0x4027('0x3d')][_0x4027('0x47')]()[_0x4027('0x24')](respondWithResult(_0x267e5e,null))['catch'](handleError(_0x267e5e,null));};
\ No newline at end of file
index 00c1ea3..abd1d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6abb=['lodash','util','api','request-promise','path','./voiceTransferReport.attributes','define','VoiceTransferReport'];(function(_0x2fe457,_0x1c58d6){var _0x40dac7=function(_0x29839b){while(--_0x29839b){_0x2fe457['push'](_0x2fe457['shift']());}};_0x40dac7(++_0x1c58d6);}(_0x6abb,0xe8));var _0xb6ab=function(_0x22c405,_0x397999){_0x22c405=_0x22c405-0x0;var _0x13c8bd=_0x6abb[_0x22c405];return _0x13c8bd;};'use strict';var _=require(_0xb6ab('0x0'));var util=require(_0xb6ab('0x1'));var logger=require('../../config/logger')(_0xb6ab('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb6ab('0x3'));var fs=require('fs');var path=require(_0xb6ab('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb6ab('0x5'));module['exports']=function(_0x2b7f75,_0x2e6d9c){return _0x2b7f75[_0xb6ab('0x6')](_0xb6ab('0x7'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe80f=['VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports'];(function(_0x1485b0,_0x32b467){var _0x47cb9=function(_0x505cbf){while(--_0x505cbf){_0x1485b0['push'](_0x1485b0['shift']());}};_0x47cb9(++_0x32b467);}(_0xe80f,0xd2));var _0xfe80=function(_0x3ad99c,_0x967c5d){_0x3ad99c=_0x3ad99c-0x0;var _0x3add43=_0xe80f[_0x3ad99c];return _0x3add43;};'use strict';var _=require(_0xfe80('0x0'));var util=require(_0xfe80('0x1'));var logger=require(_0xfe80('0x2'))(_0xfe80('0x3'));var moment=require('moment');var BPromise=require(_0xfe80('0x4'));var rp=require(_0xfe80('0x5'));var fs=require('fs');var path=require(_0xfe80('0x6'));var rimraf=require(_0xfe80('0x7'));var config=require(_0xfe80('0x8'));var attributes=require(_0xfe80('0x9'));module[_0xfe80('0xa')]=function(_0x48753e,_0x2bf585){return _0x48753e['define'](_0xfe80('0xb'),attributes,{'tableName':_0xfe80('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57ef9c8..84c89d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d51=['../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceTransferReport,\x20%s,\x20%s','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x479618,_0x18c294){var _0x141016=function(_0x4d9cb3){while(--_0x4d9cb3){_0x479618['push'](_0x479618['shift']());}};_0x141016(++_0x18c294);}(_0x5d51,0x172));var _0x15d5=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5d51[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x15d5('0x0'));var util=require(_0x15d5('0x1'));var moment=require(_0x15d5('0x2'));var BPromise=require(_0x15d5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x15d5('0x4'));var db=require(_0x15d5('0x5'))['db'];var utils=require(_0x15d5('0x6'));var logger=require(_0x15d5('0x7'))('rpc');var config=require(_0x15d5('0x8'));var jayson=require(_0x15d5('0x9'));var client=jayson[_0x15d5('0xa')][_0x15d5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9e7b53,_0x3ba8af,_0x66164d){return new BPromise(function(_0x91918e,_0x97a593){return client['request'](_0x9e7b53,_0x66164d)[_0x15d5('0xc')](function(_0x31bb7b){logger[_0x15d5('0xd')](_0x15d5('0xe'),_0x3ba8af,'request\x20sent');logger[_0x15d5('0xf')](_0x15d5('0x10'),_0x3ba8af,'request\x20sent',JSON[_0x15d5('0x11')](_0x31bb7b));if(_0x31bb7b[_0x15d5('0x12')]){if(_0x31bb7b[_0x15d5('0x12')][_0x15d5('0x13')]===0x1f4){logger[_0x15d5('0x12')](_0x15d5('0xe'),_0x3ba8af,_0x31bb7b[_0x15d5('0x12')][_0x15d5('0x14')]);return _0x97a593(_0x31bb7b[_0x15d5('0x12')]['message']);}logger['error'](_0x15d5('0xe'),_0x3ba8af,_0x31bb7b['error'][_0x15d5('0x14')]);return _0x91918e(_0x31bb7b[_0x15d5('0x12')][_0x15d5('0x14')]);}else{logger[_0x15d5('0xd')](_0x15d5('0xe'),_0x3ba8af,_0x15d5('0x15'));_0x91918e(_0x31bb7b[_0x15d5('0x16')][_0x15d5('0x14')]);}})[_0x15d5('0x17')](function(_0x4bb70b){logger[_0x15d5('0x12')](_0x15d5('0xe'),_0x3ba8af,_0x4bb70b);_0x97a593(_0x4bb70b);});});}exports[_0x15d5('0x18')]=function(_0x4c06fe){var _0x13506b=this;return new Promise(function(_0x34b330,_0xed8867){return db[_0x15d5('0x19')][_0x15d5('0x1a')](_0x4c06fe['body'],{'raw':_0x4c06fe[_0x15d5('0x1b')]?_0x4c06fe[_0x15d5('0x1b')][_0x15d5('0x1c')]===undefined?!![]:![]:!![]})[_0x15d5('0xc')](function(_0x571d1b){logger['info'](_0x15d5('0x18'),_0x4c06fe);logger[_0x15d5('0xf')]('CreateVoiceTransferReport',_0x4c06fe,JSON[_0x15d5('0x11')](_0x571d1b));_0x34b330(_0x571d1b);})[_0x15d5('0x17')](function(_0x4ac495){logger[_0x15d5('0x12')]('CreateVoiceTransferReport',_0x4ac495[_0x15d5('0x14')],_0x4c06fe);_0xed8867(_0x13506b[_0x15d5('0x12')](0x1f4,_0x4ac495[_0x15d5('0x14')]));});});};
\ No newline at end of file
+var _0xebf1=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','error','code','VoiceTransferReport,\x20%s,\x20%s','message','info','result','catch','create','body','options','raw','CreateVoiceTransferReport','debug','stringify','lodash'];(function(_0x2b9b7f,_0x4d47df){var _0x4ed19a=function(_0x72b5ff){while(--_0x72b5ff){_0x2b9b7f['push'](_0x2b9b7f['shift']());}};_0x4ed19a(++_0x4d47df);}(_0xebf1,0x1df));var _0x1ebf=function(_0x4d2263,_0x3fbf0d){_0x4d2263=_0x4d2263-0x0;var _0x24aba0=_0xebf1[_0x4d2263];return _0x24aba0;};'use strict';var _=require(_0x1ebf('0x0'));var util=require(_0x1ebf('0x1'));var moment=require('moment');var BPromise=require(_0x1ebf('0x2'));var rs=require(_0x1ebf('0x3'));var fs=require('fs');var Redis=require(_0x1ebf('0x4'));var db=require(_0x1ebf('0x5'))['db'];var utils=require(_0x1ebf('0x6'));var logger=require(_0x1ebf('0x7'))(_0x1ebf('0x8'));var config=require(_0x1ebf('0x9'));var jayson=require(_0x1ebf('0xa'));var client=jayson[_0x1ebf('0xb')][_0x1ebf('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x19243f,_0x50500a,_0x1f3a09){return new BPromise(function(_0x4c0298,_0x4d1a30){return client[_0x1ebf('0xd')](_0x19243f,_0x1f3a09)[_0x1ebf('0xe')](function(_0x35eb70){logger['info']('VoiceTransferReport,\x20%s,\x20%s',_0x50500a,_0x1ebf('0xf'));logger['debug']('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x50500a,_0x1ebf('0xf'),JSON['stringify'](_0x35eb70));if(_0x35eb70[_0x1ebf('0x10')]){if(_0x35eb70['error'][_0x1ebf('0x11')]===0x1f4){logger[_0x1ebf('0x10')](_0x1ebf('0x12'),_0x50500a,_0x35eb70[_0x1ebf('0x10')][_0x1ebf('0x13')]);return _0x4d1a30(_0x35eb70[_0x1ebf('0x10')]['message']);}logger[_0x1ebf('0x10')](_0x1ebf('0x12'),_0x50500a,_0x35eb70['error'][_0x1ebf('0x13')]);return _0x4c0298(_0x35eb70[_0x1ebf('0x10')]['message']);}else{logger[_0x1ebf('0x14')]('VoiceTransferReport,\x20%s,\x20%s',_0x50500a,'request\x20sent');_0x4c0298(_0x35eb70[_0x1ebf('0x15')][_0x1ebf('0x13')]);}})[_0x1ebf('0x16')](function(_0x29fceb){logger[_0x1ebf('0x10')](_0x1ebf('0x12'),_0x50500a,_0x29fceb);_0x4d1a30(_0x29fceb);});});}exports['CreateVoiceTransferReport']=function(_0x17a3ed){var _0x134775=this;return new Promise(function(_0x380077,_0x14ccff){return db['VoiceTransferReport'][_0x1ebf('0x17')](_0x17a3ed[_0x1ebf('0x18')],{'raw':_0x17a3ed[_0x1ebf('0x19')]?_0x17a3ed['options'][_0x1ebf('0x1a')]===undefined?!![]:![]:!![]})[_0x1ebf('0xe')](function(_0x3989a9){logger[_0x1ebf('0x14')](_0x1ebf('0x1b'),_0x17a3ed);logger[_0x1ebf('0x1c')](_0x1ebf('0x1b'),_0x17a3ed,JSON[_0x1ebf('0x1d')](_0x3989a9));_0x380077(_0x3989a9);})[_0x1ebf('0x16')](function(_0x3879d8){logger['error'](_0x1ebf('0x1b'),_0x3879d8[_0x1ebf('0x13')],_0x17a3ed);_0x14ccff(_0x134775[_0x1ebf('0x10')](0x1f4,_0x3879d8[_0x1ebf('0x13')]));});});};
\ No newline at end of file
index b142762..d72de4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9990=['express','./webbar.controller','post','isAuthenticated','originate','/hangup','canUpdate','hangup','/answer','answer','/hold','/unhold','unhold','/calls','transfer'];(function(_0x414bc5,_0x1b8d46){var _0x511faa=function(_0x1c28c2){while(--_0x1c28c2){_0x414bc5['push'](_0x414bc5['shift']());}};_0x511faa(++_0x1b8d46);}(_0x9990,0x11d));var _0x0999=function(_0x361704,_0x3af61c){_0x361704=_0x361704-0x0;var _0x258953=_0x9990[_0x361704];return _0x258953;};'use strict';var express=require(_0x0999('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x0999('0x1'));router[_0x0999('0x2')]('/originate',auth[_0x0999('0x3')](),auth['canUpdate'](),controller[_0x0999('0x4')]);router[_0x0999('0x2')](_0x0999('0x5'),auth['isAuthenticated'](),auth[_0x0999('0x6')](),controller[_0x0999('0x7')]);router[_0x0999('0x2')](_0x0999('0x8'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller[_0x0999('0x9')]);router[_0x0999('0x2')](_0x0999('0xa'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller['hold']);router[_0x0999('0x2')](_0x0999('0xb'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller[_0x0999('0xc')]);router[_0x0999('0x2')](_0x0999('0xd'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller['calls']);router[_0x0999('0x2')]('/transfer',auth['isAuthenticated'](),auth[_0x0999('0x6')](),controller[_0x0999('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x340b=['/originate','canUpdate','originate','/hangup','isAuthenticated','hangup','/answer','answer','/unhold','unhold','calls','/transfer','transfer','express','./webbar.controller','post'];(function(_0x3e51f3,_0xd46a47){var _0x582e01=function(_0x13001c){while(--_0x13001c){_0x3e51f3['push'](_0x3e51f3['shift']());}};_0x582e01(++_0xd46a47);}(_0x340b,0x13d));var _0xb340=function(_0x37baaf,_0xfe26d){_0x37baaf=_0x37baaf-0x0;var _0x2abbf0=_0x340b[_0x37baaf];return _0x2abbf0;};'use strict';var express=require(_0xb340('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0xb340('0x1'));router[_0xb340('0x2')](_0xb340('0x3'),auth['isAuthenticated'](),auth[_0xb340('0x4')](),controller[_0xb340('0x5')]);router['post'](_0xb340('0x6'),auth[_0xb340('0x7')](),auth[_0xb340('0x4')](),controller[_0xb340('0x8')]);router[_0xb340('0x2')](_0xb340('0x9'),auth[_0xb340('0x7')](),auth[_0xb340('0x4')](),controller[_0xb340('0xa')]);router[_0xb340('0x2')]('/hold',auth['isAuthenticated'](),auth['canUpdate'](),controller['hold']);router['post'](_0xb340('0xb'),auth['isAuthenticated'](),auth[_0xb340('0x4')](),controller[_0xb340('0xc')]);router['post']('/calls',auth[_0xb340('0x7')](),auth[_0xb340('0x4')](),controller[_0xb340('0xd')]);router[_0xb340('0x2')](_0xb340('0xe'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xb340('0xf')]);module['exports']=router;
\ No newline at end of file
index f887d48..d059315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9b=['rows','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','info','user:%s','webbar:originate','json','originate\x20executed!','catch','hangup\x20fired:','entityFound:','format','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','all','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','lodash','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','stringify','log','handleError:','stack','name','status','send','NotFound','request','error','code','message','findOne','agent','then','VoiceChannels','filter'];(function(_0x374afe,_0x3a638e){var _0x3b0064=function(_0x3f1596){while(--_0x3f1596){_0x374afe['push'](_0x374afe['shift']());}};_0x3b0064(++_0x3a638e);}(_0x9b9b,0x114));var _0xb9b9=function(_0x540178,_0x1feb3d){_0x540178=_0x540178-0x0;var _0x58a85c=_0x9b9b[_0x540178];return _0x58a85c;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xb9b9('0x0'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0xb9b9('0x1'));var BPromise=require(_0xb9b9('0x2'));var jayson=require(_0xb9b9('0x3'));var amiClient=jayson[_0xb9b9('0x4')][_0xb9b9('0x5')]({'port':0x232a});var logger=require(_0xb9b9('0x6'))(_0xb9b9('0x7'));var Redis=require(_0xb9b9('0x8'));config[_0xb9b9('0x9')]=_[_0xb9b9('0xa')](config[_0xb9b9('0x9')],{'host':_0xb9b9('0xb'),'port':0x18eb});var io=require(_0xb9b9('0xc'))(new Redis(config[_0xb9b9('0x9')]));var Schema=require(_0xb9b9('0xd'));var originateValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xb9b9('0xf')]},'callerId':{'type':_0xb9b9('0x10')},'callbackUrl':{'type':_0xb9b9('0x10')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':_0xb9b9('0x10'),'required':[!![],_0xb9b9('0x12')]},'transferNumber':{'type':_0xb9b9('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]}});function emit(_0x3fd09c,_0x42a55f,_0x2b2e3d){logger['info'](_0x3fd09c,_0x42a55f,JSON[_0xb9b9('0x13')](_0x2b2e3d));io['to'](_0x3fd09c)['emit'](_0x42a55f,_0x2b2e3d);}function handleError(_0x403a5b){return function(_0x3e6d23){console[_0xb9b9('0x14')](_0xb9b9('0x15'),_0x3e6d23,_0x3e6d23 instanceof RangeError);logger['error'](_0x3e6d23[_0xb9b9('0x16')]);if(_0x3e6d23 instanceof RangeError){if(_0x3e6d23[_0xb9b9('0x17')]){delete _0x3e6d23[_0xb9b9('0x17')];}_0x403a5b[_0xb9b9('0x18')](0x194)[_0xb9b9('0x19')](_0x3e6d23);}else{if(_0x3e6d23[_0xb9b9('0x17')]){delete _0x3e6d23[_0xb9b9('0x17')];}_0x403a5b[_0xb9b9('0x18')](0x1f4)[_0xb9b9('0x19')](_0x3e6d23);}};}function checkError(){return function(_0x47d3e3){if(!_0x47d3e3){throw new RangeError(_0xb9b9('0x1a'));}return _0x47d3e3;};}function respondWithRpcPromise(_0x1246b9,_0x1554d0){return new BPromise(function(_0x4e33a0,_0x10b7e1){var _0xe1e1d7=amiClient;return _0xe1e1d7[_0xb9b9('0x1b')](_0x1246b9,_0x1554d0)['then'](function(_0x9898bc){if(_0x9898bc[_0xb9b9('0x1c')]){if(_0x9898bc['error'][_0xb9b9('0x1d')]===0x1f4){return _0x10b7e1(_0x9898bc[_0xb9b9('0x1c')][_0xb9b9('0x1e')]);}return _0x4e33a0(_0x9898bc[_0xb9b9('0x1c')][_0xb9b9('0x1e')]);}else{_0x4e33a0(_0x9898bc['result']);}})['catch'](function(_0x33ab82){_0x10b7e1(_0x33ab82);});});}function getAgent(_0x426f2c){return db['User'][_0xb9b9('0x1f')]({'where':{'id':_0x426f2c,'role':_0xb9b9('0x20')}})[_0xb9b9('0x21')](checkError());}function getAgentCheckSession(_0x21f68f,_0x125f6c){return new BPromise(function(_0x54bf18,_0x388042){var _0x554850=respondWithRpcPromise(_0xb9b9('0x22'));var _0xe28f3c=getAgent(_0x21f68f);Promise['all']([_0x554850,_0xe28f3c])[_0xb9b9('0x21')](function(_0x31b509){var _0x17a6f6=_0x31b509[0x0];var _0x5eb860=_0x31b509[0x1];var _0x16df87=_[_0xb9b9('0x23')](_0x17a6f6[_0xb9b9('0x24')],function(_0x300453){return _0x300453['UserId']==_0x5eb860['id']&&_0x300453[_0xb9b9('0x25')]==_0x125f6c;});if(_0x16df87[_0xb9b9('0x26')]==0x1){_0x54bf18(_0x5eb860);}else{_0x388042(new RangeError('sessionId\x20'+_0x125f6c+_0xb9b9('0x27')));}});});}exports[_0xb9b9('0x28')]=function(_0x247e8d,_0xc47845){logger['info'](_0xb9b9('0x29'),_0x247e8d[_0xb9b9('0x2a')]);var _0x28e2da=originateValidation[_0xb9b9('0xd')](_0x247e8d['body']);if(_0x28e2da[_0xb9b9('0x26')]>0x0){return _0xc47845[_0xb9b9('0x18')](0x190)['json'](_0x28e2da);}var _0x126fe2=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0xa680b5=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2c')];var _0x5e10c9=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2d')];var _0x48bcd2=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2e')];return getAgent(_0x126fe2)[_0xb9b9('0x21')](function(_0x5837c0){logger[_0xb9b9('0x2f')]('entityFound:',_0x5837c0[_0xb9b9('0x17')]);emit(util['format'](_0xb9b9('0x30'),_0x5837c0[_0xb9b9('0x17')]),_0xb9b9('0x31'),{'callNumber':_0xa680b5,'callerId':_0x5e10c9,'callbackUrl':_0x48bcd2});return _0xc47845[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x33')});})[_0xb9b9('0x34')](handleError(_0xc47845));};exports['hangup']=function(_0x57396a,_0xb54d68){logger[_0xb9b9('0x2f')](_0xb9b9('0x35'),_0x57396a['body']);var _0x29c60f=hangupValidation['validate'](_0x57396a[_0xb9b9('0x2a')]);if(_0x29c60f[_0xb9b9('0x26')]>0x0){return _0xb54d68[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0x29c60f);}var _0x46abe7=_0x57396a[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x1eb1b4=_0x57396a[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x46abe7)['then'](function(_0xf484fd){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0xf484fd[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0xf484fd[_0xb9b9('0x17')]),_0xb9b9('0x38'),{'sessionId':_0x1eb1b4});return _0xb54d68[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':'hangup\x20executed!'});})[_0xb9b9('0x34')](handleError(_0xb54d68));};exports[_0xb9b9('0x39')]=function(_0x21307e,_0x386a6c){logger['info'](_0xb9b9('0x3a'),_0x21307e['body']);var _0x5b439e=answerValidation[_0xb9b9('0xd')](_0x21307e[_0xb9b9('0x2a')]);if(_0x5b439e['length']>0x0){return _0x386a6c['status'](0x190)[_0xb9b9('0x32')](_0x5b439e);}var _0x1a5888=_0x21307e[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x493786=_0x21307e[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x1a5888)[_0xb9b9('0x21')](function(_0x53483d){logger['info'](_0xb9b9('0x36'),_0x53483d['name']);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x53483d[_0xb9b9('0x17')]),_0xb9b9('0x3b'),{'sessionId':_0x493786});return _0x386a6c['status'](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x3c')});})[_0xb9b9('0x34')](handleError(_0x386a6c));};exports[_0xb9b9('0x3d')]=function(_0x2af5bf,_0x2bdbb5){logger[_0xb9b9('0x2f')](_0xb9b9('0x3e'),_0x2af5bf[_0xb9b9('0x2a')]);var _0x2fe8e2=holdValidation[_0xb9b9('0xd')](_0x2af5bf[_0xb9b9('0x2a')]);if(_0x2fe8e2['length']>0x0){return _0x2bdbb5[_0xb9b9('0x18')](0x190)['json'](_0x2fe8e2);}var _0x8254f9=_0x2af5bf[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x1ad24d=_0x2af5bf['body'][_0xb9b9('0x25')];return getAgent(_0x8254f9)['then'](function(_0x2b3e22){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x2b3e22[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x2b3e22[_0xb9b9('0x17')]),_0xb9b9('0x3f'),{'sessionId':_0x1ad24d});return _0x2bdbb5[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x40')});})['catch'](handleError(_0x2bdbb5));};exports['unhold']=function(_0x4da7d8,_0x124b54){logger['info'](_0xb9b9('0x41'),_0x4da7d8[_0xb9b9('0x2a')]);var _0x3a9d1b=unholdValidation[_0xb9b9('0xd')](_0x4da7d8['body']);if(_0x3a9d1b[_0xb9b9('0x26')]>0x0){return _0x124b54[_0xb9b9('0x18')](0x190)['json'](_0x3a9d1b);}var _0x27a9ed=_0x4da7d8[_0xb9b9('0x2a')]['userId'];var _0x50f2e0=_0x4da7d8[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x27a9ed)[_0xb9b9('0x21')](function(_0x4d5116){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x4d5116['name']);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x4d5116[_0xb9b9('0x17')]),_0xb9b9('0x42'),{'sessionId':_0x50f2e0});return _0x124b54['status'](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x43')});})[_0xb9b9('0x34')](handleError(_0x124b54));};exports['calls']=function(_0x190e09,_0x2e6db1){logger[_0xb9b9('0x2f')](_0xb9b9('0x44'),_0x2e6db1[_0xb9b9('0x2a')]);var _0x49956d=callsValidation['validate'](_0x190e09[_0xb9b9('0x2a')]);if(_0x49956d[_0xb9b9('0x26')]>0x0){return _0x2e6db1[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0x49956d);}var _0x3331f0=_0x190e09['body'][_0xb9b9('0x2b')];var _0x30e19e=respondWithRpcPromise(_0xb9b9('0x22'));var _0x340c73=getAgent(_0x3331f0);return Promise[_0xb9b9('0x45')]([_0x30e19e,_0x340c73])['then'](function(_0x3741c1){var _0x2da6ad=_0x3741c1[0x0];var _0x1a34b6=_0x3741c1[0x1];var _0x1e38f5=_['filter'](_0x2da6ad[_0xb9b9('0x24')],function(_0x5c9d1d){return _0x5c9d1d[_0xb9b9('0x46')]==_0x1a34b6['id'];});return _0x2e6db1[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'count':_0x1e38f5[_0xb9b9('0x26')],'rows':_0x1e38f5});})[_0xb9b9('0x34')](handleError(_0x2e6db1));};exports[_0xb9b9('0x47')]=function(_0x1f19b2,_0x24ae48){logger[_0xb9b9('0x2f')](_0xb9b9('0x48'),_0x1f19b2['body']);var _0xac7b51=conferenceValidation[_0xb9b9('0xd')](_0x1f19b2[_0xb9b9('0x2a')]);if(_0xac7b51['length']>0x0){return _0x24ae48[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0xac7b51);}var _0x412a7b=_0x1f19b2[_0xb9b9('0x2a')][_0xb9b9('0x2b')];return getAgent(_0x412a7b)[_0xb9b9('0x21')](function(_0x564008){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x564008[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x564008[_0xb9b9('0x17')]),_0xb9b9('0x49'));return _0x24ae48[_0xb9b9('0x18')](0xc8)['json']({'error':![],'message':_0xb9b9('0x4a')});})[_0xb9b9('0x34')](handleError(_0x24ae48));};exports[_0xb9b9('0x4b')]=function(_0x5823ac,_0x3c2830){logger[_0xb9b9('0x2f')]('transfer\x20fired:',_0x5823ac[_0xb9b9('0x2a')]);var _0x35c05b=transferValidation[_0xb9b9('0xd')](_0x5823ac[_0xb9b9('0x2a')]);if(_0x35c05b[_0xb9b9('0x26')]>0x0){return _0x3c2830[_0xb9b9('0x18')](0x190)['json'](_0x35c05b);}var _0x2be3c7=_0x5823ac[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x21ed42=_0x5823ac[_0xb9b9('0x2a')]['sessionId'];var _0x4a7536=_0x5823ac[_0xb9b9('0x2a')][_0xb9b9('0x4c')];return getAgent(_0x2be3c7)[_0xb9b9('0x21')](function(_0x53159a){logger[_0xb9b9('0x2f')]('entityFound:',_0x53159a[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x53159a[_0xb9b9('0x17')]),_0xb9b9('0x4d'),{'sessionId':_0x21ed42,'transferNumber':_0x4a7536});return _0x3c2830[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x3c2830));};
\ No newline at end of file
+var _0x593e=['number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','name','status','send','NotFound','request','code','message','catch','findOne','agent','then','all','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callerId','callbackUrl','entityFound:','format','user:%s','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','webbar:hold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','rows','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required'];(function(_0x5ae384,_0x37ea6e){var _0x44d8e0=function(_0x5e4326){while(--_0x5e4326){_0x5ae384['push'](_0x5ae384['shift']());}};_0x44d8e0(++_0x37ea6e);}(_0x593e,0xcb));var _0xe593=function(_0x3c0082,_0x2c7644){_0x3c0082=_0x3c0082-0x0;var _0x5049e7=_0x593e[_0x3c0082];return _0x5049e7;};'use strict';var path=require(_0xe593('0x0'));var fs=require('fs');var _=require(_0xe593('0x1'));var db=require(_0xe593('0x2'))['db'];var config=require(_0xe593('0x3'));var util=require(_0xe593('0x4'));var BPromise=require(_0xe593('0x5'));var jayson=require(_0xe593('0x6'));var amiClient=jayson[_0xe593('0x7')]['http']({'port':0x232a});var logger=require(_0xe593('0x8'))(_0xe593('0x9'));var Redis=require(_0xe593('0xa'));config[_0xe593('0xb')]=_[_0xe593('0xc')](config[_0xe593('0xb')],{'host':_0xe593('0xd'),'port':0x18eb});var io=require(_0xe593('0xe'))(new Redis(config[_0xe593('0xb')]));var Schema=require(_0xe593('0xf'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]},'callNumber':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x12')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x14')]},'transferNumber':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]}});function emit(_0x40416c,_0x1c6de3,_0x2d525c){logger[_0xe593('0x16')](_0x40416c,_0x1c6de3,JSON[_0xe593('0x17')](_0x2d525c));io['to'](_0x40416c)['emit'](_0x1c6de3,_0x2d525c);}function handleError(_0xfbc79f){return function(_0x470d07){console['log'](_0xe593('0x18'),_0x470d07,_0x470d07 instanceof RangeError);logger[_0xe593('0x19')](_0x470d07['stack']);if(_0x470d07 instanceof RangeError){if(_0x470d07[_0xe593('0x1a')]){delete _0x470d07[_0xe593('0x1a')];}_0xfbc79f[_0xe593('0x1b')](0x194)[_0xe593('0x1c')](_0x470d07);}else{if(_0x470d07[_0xe593('0x1a')]){delete _0x470d07[_0xe593('0x1a')];}_0xfbc79f[_0xe593('0x1b')](0x1f4)['send'](_0x470d07);}};}function checkError(){return function(_0x4af4c8){if(!_0x4af4c8){throw new RangeError(_0xe593('0x1d'));}return _0x4af4c8;};}function respondWithRpcPromise(_0x5d4895,_0x56c23f){return new BPromise(function(_0x1bb8e8,_0x3c65b5){var _0x57379d=amiClient;return _0x57379d[_0xe593('0x1e')](_0x5d4895,_0x56c23f)['then'](function(_0x1672bf){if(_0x1672bf[_0xe593('0x19')]){if(_0x1672bf[_0xe593('0x19')][_0xe593('0x1f')]===0x1f4){return _0x3c65b5(_0x1672bf[_0xe593('0x19')][_0xe593('0x20')]);}return _0x1bb8e8(_0x1672bf[_0xe593('0x19')][_0xe593('0x20')]);}else{_0x1bb8e8(_0x1672bf['result']);}})[_0xe593('0x21')](function(_0x347d7d){_0x3c65b5(_0x347d7d);});});}function getAgent(_0x480218){return db['User'][_0xe593('0x22')]({'where':{'id':_0x480218,'role':_0xe593('0x23')}})[_0xe593('0x24')](checkError());}function getAgentCheckSession(_0x43699d,_0x3b66bc){return new BPromise(function(_0x27a3d2,_0x5918cd){var _0x350e2b=respondWithRpcPromise('VoiceChannels');var _0x1dacf6=getAgent(_0x43699d);Promise[_0xe593('0x25')]([_0x350e2b,_0x1dacf6])['then'](function(_0x337ee0){var _0x561a01=_0x337ee0[0x0];var _0x44a68c=_0x337ee0[0x1];var _0x1c147b=_[_0xe593('0x26')](_0x561a01['rows'],function(_0x1ae8d9){return _0x1ae8d9[_0xe593('0x27')]==_0x44a68c['id']&&_0x1ae8d9[_0xe593('0x28')]==_0x3b66bc;});if(_0x1c147b[_0xe593('0x29')]==0x1){_0x27a3d2(_0x44a68c);}else{_0x5918cd(new RangeError(_0xe593('0x2a')+_0x3b66bc+_0xe593('0x2b')));}});});}exports[_0xe593('0x2c')]=function(_0x4efc93,_0x4098a9){logger[_0xe593('0x16')]('originate\x20fired:',_0x4efc93[_0xe593('0x2d')]);var _0x571995=originateValidation[_0xe593('0xf')](_0x4efc93[_0xe593('0x2d')]);if(_0x571995[_0xe593('0x29')]>0x0){return _0x4098a9[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x571995);}var _0x24a560=_0x4efc93[_0xe593('0x2d')][_0xe593('0x2f')];var _0x11f287=_0x4efc93[_0xe593('0x2d')]['callNumber'];var _0x27a563=_0x4efc93[_0xe593('0x2d')][_0xe593('0x30')];var _0x5a55c0=_0x4efc93['body'][_0xe593('0x31')];return getAgent(_0x24a560)['then'](function(_0x232bf1){logger[_0xe593('0x16')](_0xe593('0x32'),_0x232bf1[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x232bf1[_0xe593('0x1a')]),'webbar:originate',{'callNumber':_0x11f287,'callerId':_0x27a563,'callbackUrl':_0x5a55c0});return _0x4098a9['status'](0xc8)[_0xe593('0x2e')]({'error':![],'message':'originate\x20executed!'});})[_0xe593('0x21')](handleError(_0x4098a9));};exports['hangup']=function(_0x206775,_0x5b9589){logger['info'](_0xe593('0x35'),_0x206775[_0xe593('0x2d')]);var _0x2aa9d8=hangupValidation['validate'](_0x206775['body']);if(_0x2aa9d8['length']>0x0){return _0x5b9589[_0xe593('0x1b')](0x190)['json'](_0x2aa9d8);}var _0x37ba0e=_0x206775[_0xe593('0x2d')][_0xe593('0x2f')];var _0x475207=_0x206775['body'][_0xe593('0x28')];return getAgent(_0x37ba0e)['then'](function(_0x36c08e){logger['info']('entityFound:',_0x36c08e['name']);emit(util[_0xe593('0x33')]('user:%s',_0x36c08e[_0xe593('0x1a')]),_0xe593('0x36'),{'sessionId':_0x475207});return _0x5b9589[_0xe593('0x1b')](0xc8)['json']({'error':![],'message':_0xe593('0x37')});})[_0xe593('0x21')](handleError(_0x5b9589));};exports[_0xe593('0x38')]=function(_0x4655dd,_0x26ff41){logger[_0xe593('0x16')](_0xe593('0x39'),_0x4655dd[_0xe593('0x2d')]);var _0x4b36e1=answerValidation[_0xe593('0xf')](_0x4655dd[_0xe593('0x2d')]);if(_0x4b36e1[_0xe593('0x29')]>0x0){return _0x26ff41[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x4b36e1);}var _0x4d3018=_0x4655dd['body'][_0xe593('0x2f')];var _0x380429=_0x4655dd[_0xe593('0x2d')]['sessionId'];return getAgent(_0x4d3018)[_0xe593('0x24')](function(_0x8a4c26){logger['info']('entityFound:',_0x8a4c26[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x8a4c26['name']),_0xe593('0x3a'),{'sessionId':_0x380429});return _0x26ff41[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x3b')});})['catch'](handleError(_0x26ff41));};exports['hold']=function(_0x4a7434,_0x4c8d14){logger[_0xe593('0x16')]('hold\x20fired:',_0x4a7434[_0xe593('0x2d')]);var _0xd016b3=holdValidation[_0xe593('0xf')](_0x4a7434[_0xe593('0x2d')]);if(_0xd016b3[_0xe593('0x29')]>0x0){return _0x4c8d14[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0xd016b3);}var _0x297c3e=_0x4a7434['body'][_0xe593('0x2f')];var _0x1a5e0f=_0x4a7434[_0xe593('0x2d')]['sessionId'];return getAgent(_0x297c3e)[_0xe593('0x24')](function(_0x5dfdb1){logger[_0xe593('0x16')](_0xe593('0x32'),_0x5dfdb1[_0xe593('0x1a')]);emit(util['format']('user:%s',_0x5dfdb1[_0xe593('0x1a')]),_0xe593('0x3c'),{'sessionId':_0x1a5e0f});return _0x4c8d14['status'](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x4c8d14));};exports['unhold']=function(_0x383645,_0x1e48d8){logger[_0xe593('0x16')](_0xe593('0x3d'),_0x383645[_0xe593('0x2d')]);var _0x44201e=unholdValidation[_0xe593('0xf')](_0x383645[_0xe593('0x2d')]);if(_0x44201e[_0xe593('0x29')]>0x0){return _0x1e48d8[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x44201e);}var _0x1ea4ef=_0x383645[_0xe593('0x2d')][_0xe593('0x2f')];var _0xa25aa8=_0x383645[_0xe593('0x2d')]['sessionId'];return getAgent(_0x1ea4ef)[_0xe593('0x24')](function(_0x12e2ac){logger[_0xe593('0x16')](_0xe593('0x32'),_0x12e2ac[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x12e2ac[_0xe593('0x1a')]),_0xe593('0x3e'),{'sessionId':_0xa25aa8});return _0x1e48d8[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x3f')});})[_0xe593('0x21')](handleError(_0x1e48d8));};exports[_0xe593('0x40')]=function(_0x93ca5e,_0x5e8f9c){logger[_0xe593('0x16')](_0xe593('0x41'),_0x5e8f9c[_0xe593('0x2d')]);var _0x24d061=callsValidation[_0xe593('0xf')](_0x93ca5e['body']);if(_0x24d061['length']>0x0){return _0x5e8f9c[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x24d061);}var _0x318dd2=_0x93ca5e[_0xe593('0x2d')][_0xe593('0x2f')];var _0x1e49ed=respondWithRpcPromise(_0xe593('0x42'));var _0x518b6f=getAgent(_0x318dd2);return Promise['all']([_0x1e49ed,_0x518b6f])[_0xe593('0x24')](function(_0x23ee3b){var _0x4ff51d=_0x23ee3b[0x0];var _0x103403=_0x23ee3b[0x1];var _0xf8ed1d=_[_0xe593('0x26')](_0x4ff51d[_0xe593('0x43')],function(_0x3a3d7b){return _0x3a3d7b[_0xe593('0x27')]==_0x103403['id'];});return _0x5e8f9c[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'count':_0xf8ed1d[_0xe593('0x29')],'rows':_0xf8ed1d});})[_0xe593('0x21')](handleError(_0x5e8f9c));};exports['conference']=function(_0x36f38e,_0x13e368){logger[_0xe593('0x16')](_0xe593('0x44'),_0x36f38e[_0xe593('0x2d')]);var _0x202b18=conferenceValidation[_0xe593('0xf')](_0x36f38e['body']);if(_0x202b18[_0xe593('0x29')]>0x0){return _0x13e368[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x202b18);}var _0x14f8e1=_0x36f38e['body'][_0xe593('0x2f')];return getAgent(_0x14f8e1)[_0xe593('0x24')](function(_0x207c3d){logger[_0xe593('0x16')](_0xe593('0x32'),_0x207c3d['name']);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x207c3d[_0xe593('0x1a')]),_0xe593('0x45'));return _0x13e368[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x46')});})[_0xe593('0x21')](handleError(_0x13e368));};exports['transfer']=function(_0x2145c0,_0x16f9fc){logger[_0xe593('0x16')](_0xe593('0x47'),_0x2145c0[_0xe593('0x2d')]);var _0x9f1813=transferValidation[_0xe593('0xf')](_0x2145c0[_0xe593('0x2d')]);if(_0x9f1813[_0xe593('0x29')]>0x0){return _0x16f9fc[_0xe593('0x1b')](0x190)['json'](_0x9f1813);}var _0x190e90=_0x2145c0[_0xe593('0x2d')][_0xe593('0x2f')];var _0x492a9e=_0x2145c0[_0xe593('0x2d')][_0xe593('0x28')];var _0x4001b7=_0x2145c0[_0xe593('0x2d')][_0xe593('0x48')];return getAgent(_0x190e90)['then'](function(_0x17a1bc){logger[_0xe593('0x16')]('entityFound:',_0x17a1bc[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x17a1bc[_0xe593('0x1a')]),'webbar:transfer',{'sessionId':_0x492a9e,'transferNumber':_0x4001b7});return _0x16f9fc[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x49')});})['catch'](handleError(_0x16f9fc));};
\ No newline at end of file
index a11d089..a888298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['addDisposition','/:id/canned_answers','addAnswer','/:id/users','addAgents','/:id/applications','addApplications','/:id/notify','notify','put','/:id','update','delete','removeDispositions','removeAnswers','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','getDispositions','getAnswers','getAgents','post','create','/:id/dispositions'];(function(_0x3008c6,_0x5dec63){var _0x344f83=function(_0x1db825){while(--_0x1db825){_0x3008c6['push'](_0x3008c6['shift']());}};_0x344f83(++_0x5dec63);}(_0x0295,0x1f0));var _0x5029=function(_0xf20b6,_0x49ddbb){_0xf20b6=_0xf20b6-0x0;var _0x4ff567=_0x0295[_0xf20b6];return _0x4ff567;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x5029('0x7')]('/:id',auth[_0x5029('0x8')](),controller['show']);router[_0x5029('0x7')]('/:id/dispositions',auth[_0x5029('0x8')](),controller[_0x5029('0xa')]);router[_0x5029('0x7')]('/:id/canned_answers',auth[_0x5029('0x8')](),controller[_0x5029('0xb')]);router[_0x5029('0x7')]('/:id/users',auth[_0x5029('0x8')](),controller[_0x5029('0xc')]);router['get']('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0x5029('0xd')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0xe')]);router[_0x5029('0xd')](_0x5029('0xf'),auth[_0x5029('0x8')](),controller[_0x5029('0x10')]);router[_0x5029('0xd')](_0x5029('0x11'),auth[_0x5029('0x8')](),controller[_0x5029('0x12')]);router[_0x5029('0xd')](_0x5029('0x13'),auth[_0x5029('0x8')](),controller[_0x5029('0x14')]);router['post'](_0x5029('0x15'),auth[_0x5029('0x8')](),controller[_0x5029('0x16')]);router[_0x5029('0xd')](_0x5029('0x17'),controller[_0x5029('0x18')]);router[_0x5029('0xd')]('/:id/send',auth[_0x5029('0x8')](),controller['send']);router[_0x5029('0x19')](_0x5029('0x1a'),auth[_0x5029('0x8')](),controller[_0x5029('0x1b')]);router['delete']('/:id',auth[_0x5029('0x8')](),controller['destroy']);router[_0x5029('0x1c')](_0x5029('0xf'),auth[_0x5029('0x8')](),controller[_0x5029('0x1d')]);router[_0x5029('0x1c')](_0x5029('0x11'),auth[_0x5029('0x8')](),controller[_0x5029('0x1e')]);router[_0x5029('0x1c')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x5029('0x1f')]=router;
\ No newline at end of file
+var _0x47c5=['/:id/notify','notify','send','update','delete','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addDisposition','addAnswer','addApplications'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x47c5,0x165));var _0x547c=function(_0x452dee,_0x3f6955){_0x452dee=_0x452dee-0x0;var _0x3af62e=_0x47c5[_0x452dee];return _0x3af62e;};'use strict';var multer=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var path=require(_0x547c('0x2'));var timeout=require(_0x547c('0x3'));var express=require(_0x547c('0x4'));var router=express[_0x547c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x547c('0x6'));var interaction=require(_0x547c('0x7'));var config=require('../../config/environment');var controller=require(_0x547c('0x8'));router[_0x547c('0x9')]('/',auth['isAuthenticated'](),controller[_0x547c('0xa')]);router[_0x547c('0x9')](_0x547c('0xb'),auth[_0x547c('0xc')](),controller[_0x547c('0xd')]);router[_0x547c('0x9')](_0x547c('0xe'),auth[_0x547c('0xc')](),controller[_0x547c('0xf')]);router[_0x547c('0x9')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller[_0x547c('0x11')]);router[_0x547c('0x9')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x13')]);router['get'](_0x547c('0x14'),auth[_0x547c('0xc')](),controller['getAgents']);router[_0x547c('0x9')](_0x547c('0x15'),auth[_0x547c('0xc')](),controller[_0x547c('0x16')]);router[_0x547c('0x17')]('/',auth[_0x547c('0xc')](),controller[_0x547c('0x18')]);router[_0x547c('0x17')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller[_0x547c('0x19')]);router[_0x547c('0x17')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x1a')]);router[_0x547c('0x17')](_0x547c('0x14'),auth[_0x547c('0xc')](),controller['addAgents']);router['post'](_0x547c('0x15'),auth[_0x547c('0xc')](),controller[_0x547c('0x1b')]);router['post'](_0x547c('0x1c'),controller[_0x547c('0x1d')]);router[_0x547c('0x17')]('/:id/send',auth[_0x547c('0xc')](),controller[_0x547c('0x1e')]);router['put']('/:id',auth[_0x547c('0xc')](),controller[_0x547c('0x1f')]);router['delete'](_0x547c('0xe'),auth[_0x547c('0xc')](),controller['destroy']);router[_0x547c('0x20')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller['removeDispositions']);router[_0x547c('0x20')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x21')]);router[_0x547c('0x20')](_0x547c('0x14'),auth[_0x547c('0xc')](),controller[_0x547c('0x22')]);module['exports']=router;
\ No newline at end of file
index 1f080c9..161a4f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5580=['STRING','generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5580,0xa2));var _0x0558=function(_0x3dbd97,_0x44163f){_0x3dbd97=_0x3dbd97-0x0;var _0x55454f=_0x5580[_0x3dbd97];return _0x55454f;};'use strict';var Sequelize=require(_0x0558('0x0'));var rs=require(_0x0558('0x1'));module[_0x0558('0x2')]={'name':{'type':Sequelize[_0x0558('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x0558('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x0558('0x3')],'defaultValue':function(){return rs[_0x0558('0x4')]();}},'phone':{'type':Sequelize[_0x0558('0x3')]},'type':{'type':Sequelize[_0x0558('0x5')](_0x0558('0x6'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x0558('0x3')]},'notificationTemplate':{'type':Sequelize[_0x0558('0x7')],'defaultValue':function(){return _0x0558('0x8');}},'notificationSound':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0558('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0558('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0558('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0558('0xa')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![],'comment':_0x0558('0xb'),'set':function(_0x5d0431){if(!_0x5d0431){this[_0x0558('0xc')](_0x0558('0xd'),null);}this[_0x0558('0xc')](_0x0558('0xe'),_0x5d0431);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xab1a=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','twilio','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x18abd2,_0x22d4b3){var _0x1dcad6=function(_0xcc08c4){while(--_0xcc08c4){_0x18abd2['push'](_0x18abd2['shift']());}};_0x1dcad6(++_0x22d4b3);}(_0xab1a,0x84));var _0xaab1=function(_0x79b649,_0x2115b3){_0x79b649=_0x79b649-0x0;var _0x1af9b1=_0xab1a[_0x79b649];return _0x1af9b1;};'use strict';var Sequelize=require(_0xaab1('0x0'));var rs=require(_0xaab1('0x1'));module['exports']={'name':{'type':Sequelize[_0xaab1('0x2')],'unique':_0xaab1('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xaab1('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0xaab1('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0xaab1('0x2')],'defaultValue':function(){return rs[_0xaab1('0x4')]();}},'phone':{'type':Sequelize[_0xaab1('0x2')]},'type':{'type':Sequelize['ENUM'](_0xaab1('0x5'))},'accountSid':{'type':Sequelize[_0xaab1('0x2')]},'authToken':{'type':Sequelize[_0xaab1('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xaab1('0x6');}},'notificationSound':{'type':Sequelize[_0xaab1('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaab1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaab1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaab1('0x8')],'comment':_0xaab1('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xaab1('0x7')],'defaultValue':![],'comment':_0xaab1('0xa'),'set':function(_0x2810b4){if(!_0x2810b4){this['setDataValue'](_0xaab1('0xb'),null);}this[_0xaab1('0xc')](_0xaab1('0xd'),_0x2810b4);}},'description':{'type':Sequelize[_0xaab1('0x2')]}};
\ No newline at end of file
index e9e9410..7cfabbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d9=['from','From','replace','Body','messageId','MessageSid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','list','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','CmList','List','DESC','out','dataValues','Messages','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','get','destroy','name','send','index','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','Pause','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','WhatsappAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','WhatsappAccountId','Disposition','findOne','nolimit','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','applications','orderBy','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio'];(function(_0x252db9,_0x3434b2){var _0x37c009=function(_0x1839ac){while(--_0x1839ac){_0x252db9['push'](_0x252db9['shift']());}};_0x37c009(++_0x3434b2);}(_0x45d9,0x1b0));var _0x945d=function(_0xf643ed,_0x481403){_0xf643ed=_0xf643ed-0x0;var _0x28c242=_0x45d9[_0xf643ed];return _0x28c242;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x945d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x945d('0x1'));var rp=require(_0x945d('0x2'));var moment=require(_0x945d('0x3'));var BPromise=require(_0x945d('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x945d('0x5'));var sox=require(_0x945d('0x6'));var csv=require(_0x945d('0x7'));var ejs=require(_0x945d('0x8'));var fs=require('fs');var fs_extra=require(_0x945d('0x9'));var _=require(_0x945d('0xa'));var squel=require(_0x945d('0xb'));var crypto=require('crypto');var jsforce=require(_0x945d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x945d('0xd'));var Papa=require(_0x945d('0xe'));var Redis=require(_0x945d('0xf'));var authService=require(_0x945d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x945d('0x11'));var hardwareService=require(_0x945d('0x12'));var logger=require(_0x945d('0x13'))(_0x945d('0x14'));var utils=require(_0x945d('0x15'));var config=require(_0x945d('0x16'));var licenseUtil=require(_0x945d('0x17'));var db=require(_0x945d('0x18'))['db'];config[_0x945d('0x19')]=_[_0x945d('0x1a')](config[_0x945d('0x19')],{'host':_0x945d('0x1b'),'port':0x18eb});var socket=require(_0x945d('0x1c'))(new Redis(config[_0x945d('0x19')]));require(_0x945d('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x945d('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x4c75ae,_0x30a0e4,_0x4d8028,_0x59c513){return new BPromise(function(_0x24cf0c,_0x11006c){var _0x467287=_0x59c513||client;return _0x467287[_0x945d('0x1f')](_0x4c75ae,_0x4d8028)[_0x945d('0x20')](function(_0xeb13fc){logger['info'](_0x945d('0x21'),_0x30a0e4,_0x945d('0x22'));logger[_0x945d('0x23')](_0x945d('0x24'),_0x30a0e4,'request\x20sent',JSON[_0x945d('0x25')](_0xeb13fc));if(_0xeb13fc[_0x945d('0x26')]){if(_0xeb13fc[_0x945d('0x26')]['code']===0x1f4){logger[_0x945d('0x26')](_0x945d('0x21'),_0x30a0e4,_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);return _0x11006c(_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);}logger[_0x945d('0x26')](_0x945d('0x21'),_0x30a0e4,_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);return _0x24cf0c(_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);}else{logger['info'](_0x945d('0x21'),_0x30a0e4,_0x945d('0x22'));_0x24cf0c(_0xeb13fc[_0x945d('0x28')][_0x945d('0x27')]);}})[_0x945d('0x29')](function(_0x3f7cf6){logger['error'](_0x945d('0x21'),_0x30a0e4,_0x3f7cf6);_0x11006c(_0x3f7cf6);});});}function respondWithStatusCode(_0xd85e9f,_0x4e83f1){_0x4e83f1=_0x4e83f1||0xcc;return function(_0x2e664e){if(_0x2e664e){return _0xd85e9f[_0x945d('0x2a')](_0x4e83f1);}return _0xd85e9f[_0x945d('0x2b')](_0x4e83f1)[_0x945d('0x2c')]();};}function respondWithResult(_0x109522,_0x4b8f91){_0x4b8f91=_0x4b8f91||0xc8;return function(_0x5cef07){if(_0x5cef07){return _0x109522[_0x945d('0x2b')](_0x4b8f91)['json'](_0x5cef07);}};}function respondWithFilteredResult(_0x27f400,_0x2a8032){return function(_0x58349d){if(_0x58349d){var _0x120468=typeof _0x2a8032[_0x945d('0x2d')]===_0x945d('0x2e')&&typeof _0x2a8032[_0x945d('0x2f')]===_0x945d('0x2e');var _0x3aae24=_0x58349d[_0x945d('0x30')];var _0x2326ff=_0x120468?0x0:_0x2a8032[_0x945d('0x2d')];var _0x584c13=_0x120468?_0x58349d[_0x945d('0x30')]:_0x2a8032[_0x945d('0x2d')]+_0x2a8032[_0x945d('0x2f')];var _0x2554dc;if(_0x584c13>=_0x3aae24){_0x584c13=_0x3aae24;_0x2554dc=0xc8;}else{_0x2554dc=0xce;}_0x27f400[_0x945d('0x2b')](_0x2554dc);return _0x27f400[_0x945d('0x31')]('Content-Range',_0x2326ff+'-'+_0x584c13+'/'+_0x3aae24)[_0x945d('0x32')](_0x58349d);}return null;};}function patchUpdates(_0x150376){return function(_0x556466){try{jsonpatch[_0x945d('0x33')](_0x556466,_0x150376,!![]);}catch(_0x34ef4c){return BPromise[_0x945d('0x34')](_0x34ef4c);}return _0x556466[_0x945d('0x35')]();};}function saveUpdates(_0x18de46,_0x4c7abf){return function(_0x4163c3){if(_0x4163c3){return _0x4163c3[_0x945d('0x36')](_0x18de46)['then'](function(_0x353a51){return _0x353a51;});}return null;};}function removeEntity(_0x9c86e7,_0x46d8f0){return function(_0xc539e2){if(_0xc539e2){return _0xc539e2['destroy']()[_0x945d('0x20')](function(){var _0x3e43e1=_0xc539e2[_0x945d('0x37')]({'plain':!![]});var _0x43e902='WhatsappAccounts';return db['UserProfileResource'][_0x945d('0x38')]({'where':{'type':_0x43e902,'resourceId':_0x3e43e1['id']}})[_0x945d('0x20')](function(){return _0xc539e2;});})[_0x945d('0x20')](function(){_0x9c86e7[_0x945d('0x2b')](0xcc)[_0x945d('0x2c')]();});}};}function handleEntityNotFound(_0x5ed711,_0x7aebe3){return function(_0x17cdff){if(!_0x17cdff){_0x5ed711[_0x945d('0x2a')](0x194);}return _0x17cdff;};}function handleError(_0x2cddd9,_0x1476db){_0x1476db=_0x1476db||0x1f4;return function(_0x477fc0){logger[_0x945d('0x26')](_0x477fc0['stack']);if(_0x477fc0[_0x945d('0x39')]){delete _0x477fc0[_0x945d('0x39')];}_0x2cddd9[_0x945d('0x2b')](_0x1476db)[_0x945d('0x3a')](_0x477fc0);};}exports[_0x945d('0x3b')]=function(_0x1ae2b8,_0x442210){var _0x3a2309={'include':[{'model':db['Pause'],'as':_0x945d('0x3c')}]},_0x16a728={},_0x45faf5={'count':0x0,'rows':[]};var _0x1258cf=_[_0x945d('0x3d')](db[_0x945d('0x3e')][_0x945d('0x3f')],function(_0xf08248){return{'name':_0xf08248[_0x945d('0x40')],'type':_0xf08248[_0x945d('0x41')][_0x945d('0x42')]};});_0x16a728[_0x945d('0x43')]=_[_0x945d('0x3d')](_0x1258cf,_0x945d('0x39'));_0x16a728[_0x945d('0x44')]=_['keys'](_0x1ae2b8[_0x945d('0x44')]);_0x16a728[_0x945d('0x45')]=_[_0x945d('0x46')](_0x16a728[_0x945d('0x43')],_0x16a728[_0x945d('0x44')]);_0x3a2309['attributes']=_[_0x945d('0x46')](_0x16a728['model'],qs[_0x945d('0x47')](_0x1ae2b8[_0x945d('0x44')][_0x945d('0x47')]));_0x3a2309['attributes']=_0x3a2309[_0x945d('0x48')][_0x945d('0x49')]?_0x3a2309[_0x945d('0x48')]:_0x16a728[_0x945d('0x43')];if(!_0x1ae2b8[_0x945d('0x44')][_0x945d('0x4a')]('nolimit')){_0x3a2309[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x1ae2b8[_0x945d('0x44')][_0x945d('0x2f')]);_0x3a2309['offset']=qs[_0x945d('0x2d')](_0x1ae2b8[_0x945d('0x44')][_0x945d('0x2d')]);}_0x3a2309[_0x945d('0x4b')]=qs[_0x945d('0x4c')](_0x1ae2b8['query'][_0x945d('0x4c')]);_0x3a2309[_0x945d('0x4d')]=qs['filters'](_[_0x945d('0x4e')](_0x1ae2b8[_0x945d('0x44')],_0x16a728[_0x945d('0x45')]),_0x1258cf);if(_0x1ae2b8[_0x945d('0x44')]['filter']){_0x3a2309[_0x945d('0x4d')]=_[_0x945d('0x4f')](_0x3a2309[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x1258cf,function(_0x1f4929){if(_0x1f4929[_0x945d('0x41')]!==_0x945d('0x50')){var _0x58af2b={};_0x58af2b[_0x1f4929[_0x945d('0x39')]]={'$like':'%'+_0x1ae2b8[_0x945d('0x44')][_0x945d('0x51')]+'%'};return _0x58af2b;}})});}_0x3a2309=_[_0x945d('0x4f')]({},_0x3a2309,_0x1ae2b8[_0x945d('0x52')]);var _0x4d4650={'where':_0x3a2309['where']};return db[_0x945d('0x3e')][_0x945d('0x30')](_0x4d4650)[_0x945d('0x20')](function(_0x2baf87){_0x45faf5['count']=_0x2baf87;if(_0x1ae2b8[_0x945d('0x44')][_0x945d('0x53')]){_0x3a2309[_0x945d('0x54')]=[{'all':!![]}];}return db[_0x945d('0x3e')][_0x945d('0x55')](_0x3a2309);})[_0x945d('0x20')](function(_0x4748fb){_0x45faf5[_0x945d('0x56')]=_0x4748fb;return _0x45faf5;})['then'](respondWithFilteredResult(_0x442210,_0x3a2309))['catch'](handleError(_0x442210,null));};exports[_0x945d('0x57')]=function(_0x539c29,_0x4a49c2){var _0x2e38c7={'raw':![],'where':{'id':_0x539c29['params']['id']},'include':[{'model':db[_0x945d('0x58')],'as':_0x945d('0x3c')}]},_0x374f1d={};_0x374f1d[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x3e')]['rawAttributes']);_0x374f1d[_0x945d('0x44')]=_['keys'](_0x539c29[_0x945d('0x44')]);_0x374f1d[_0x945d('0x45')]=_['intersection'](_0x374f1d[_0x945d('0x43')],_0x374f1d[_0x945d('0x44')]);_0x2e38c7[_0x945d('0x48')]=_[_0x945d('0x46')](_0x374f1d[_0x945d('0x43')],qs[_0x945d('0x47')](_0x539c29[_0x945d('0x44')]['fields']));_0x2e38c7[_0x945d('0x48')]=_0x2e38c7[_0x945d('0x48')]['length']?_0x2e38c7[_0x945d('0x48')]:_0x374f1d[_0x945d('0x43')];if(_0x539c29[_0x945d('0x44')][_0x945d('0x53')]){_0x2e38c7['include']=[{'all':!![]}];}_0x2e38c7=_[_0x945d('0x4f')]({},_0x2e38c7,_0x539c29[_0x945d('0x52')]);return db[_0x945d('0x3e')][_0x945d('0x5a')](_0x2e38c7)['then'](handleEntityNotFound(_0x4a49c2,null))['then'](respondWithResult(_0x4a49c2,null))[_0x945d('0x29')](handleError(_0x4a49c2,null));};exports[_0x945d('0x5b')]=function(_0x48e859,_0x101725){return db[_0x945d('0x3e')][_0x945d('0x5b')](_0x48e859[_0x945d('0x5c')],{})[_0x945d('0x20')](function(_0xe5d3a5){var _0x53d310=_0x48e859['user'][_0x945d('0x37')]({'plain':!![]});if(!_0x53d310)throw new Error(_0x945d('0x5d'));if(_0x53d310['role']===_0x945d('0x5e')){var _0x1225cc=_0xe5d3a5['get']({'plain':!![]});var _0x5953d4=_0x945d('0x5f');return db[_0x945d('0x60')][_0x945d('0x5a')]({'where':{'name':_0x5953d4,'userProfileId':_0x53d310[_0x945d('0x61')]},'raw':!![]})[_0x945d('0x20')](function(_0x4bdcd3){if(_0x4bdcd3&&_0x4bdcd3[_0x945d('0x62')]===0x0){return db[_0x945d('0x63')][_0x945d('0x5b')]({'name':_0x1225cc['name'],'resourceId':_0x1225cc['id'],'type':_0x4bdcd3[_0x945d('0x39')],'sectionId':_0x4bdcd3['id']},{})[_0x945d('0x20')](function(){return _0xe5d3a5;});}else{return _0xe5d3a5;}})[_0x945d('0x29')](function(_0x4b49b5){logger[_0x945d('0x26')](_0x945d('0x64'),_0x4b49b5);throw _0x4b49b5;});}return _0xe5d3a5;})['then'](respondWithResult(_0x101725,0xc9))[_0x945d('0x29')](handleError(_0x101725,null));};exports[_0x945d('0x36')]=function(_0x505b9c,_0x417d48){if(_0x505b9c[_0x945d('0x5c')]['id']){delete _0x505b9c[_0x945d('0x5c')]['id'];}return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x505b9c['params']['id']},'include':[{'model':db['Pause'],'as':_0x945d('0x3c')}]})['then'](handleEntityNotFound(_0x417d48,null))[_0x945d('0x20')](saveUpdates(_0x505b9c[_0x945d('0x5c')],null))[_0x945d('0x20')](respondWithResult(_0x417d48,null))[_0x945d('0x29')](handleError(_0x417d48,null));};exports[_0x945d('0x38')]=function(_0x5dd021,_0x5ff61d){return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x5dd021[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x5ff61d,null))[_0x945d('0x20')](removeEntity(_0x5ff61d,null))[_0x945d('0x29')](handleError(_0x5ff61d,null));};exports[_0x945d('0x66')]=function(_0x32a9ba,_0x488893){return db[_0x945d('0x3e')][_0x945d('0x66')]()[_0x945d('0x20')](respondWithResult(_0x488893,null))['catch'](handleError(_0x488893,null));};exports[_0x945d('0x67')]=function(_0x7b3020,_0x36a261,_0x7c2e0e){if(_0x7b3020[_0x945d('0x5c')]['id']){delete _0x7b3020[_0x945d('0x5c')]['id'];}return db[_0x945d('0x3e')]['find']({'where':{'id':_0x7b3020[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x36a261,null))['then'](function(_0xf40157){if(_0xf40157){_0x7b3020[_0x945d('0x5c')][_0x945d('0x68')]=_0xf40157['id'];return db[_0x945d('0x69')]['create'](_0x7b3020['body']);}})[_0x945d('0x20')](respondWithResult(_0x36a261,null))[_0x945d('0x29')](handleError(_0x36a261,null));};exports['getDispositions']=function(_0x200c34,_0xb07159,_0x2bebdb){var _0x1066d6={'raw':![],'where':{}};var _0x2127c7={};var _0x83ed8={'count':0x0,'rows':[]};return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x200c34[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0xb07159,null))[_0x945d('0x20')](function(_0x408e57){if(_0x408e57){_0x2127c7[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x69')][_0x945d('0x3f')]);_0x2127c7[_0x945d('0x44')]=_[_0x945d('0x59')](_0x200c34['query']);_0x2127c7[_0x945d('0x45')]=_['intersection'](_0x2127c7[_0x945d('0x43')],_0x2127c7[_0x945d('0x44')]);_0x1066d6[_0x945d('0x48')]=_[_0x945d('0x46')](_0x2127c7[_0x945d('0x43')],qs['fields'](_0x200c34[_0x945d('0x44')][_0x945d('0x47')]));_0x1066d6['attributes']=_0x1066d6['attributes'][_0x945d('0x49')]?_0x1066d6[_0x945d('0x48')]:_0x2127c7[_0x945d('0x43')];if(!_0x200c34['query'][_0x945d('0x4a')](_0x945d('0x6b'))){_0x1066d6[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x200c34[_0x945d('0x44')]['limit']);_0x1066d6[_0x945d('0x2d')]=qs['offset'](_0x200c34[_0x945d('0x44')]['offset']);}_0x1066d6['order']=qs['sort'](_0x200c34['query'][_0x945d('0x4c')]);_0x1066d6[_0x945d('0x4d')]=qs[_0x945d('0x45')](_[_0x945d('0x4e')](_0x200c34[_0x945d('0x44')],_0x2127c7['filters']));_0x1066d6[_0x945d('0x4d')][_0x945d('0x68')]=_0x408e57['id'];if(_0x200c34[_0x945d('0x44')][_0x945d('0x51')]){_0x1066d6[_0x945d('0x4d')]=_[_0x945d('0x4f')](_0x1066d6[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x1066d6[_0x945d('0x48')],function(_0x78de2f){var _0x424176={};_0x424176[_0x78de2f]={'$like':'%'+_0x200c34[_0x945d('0x44')]['filter']+'%'};return _0x424176;})});}_0x1066d6=_['merge']({},_0x1066d6,_0x200c34[_0x945d('0x52')]);return db['Disposition'][_0x945d('0x30')]({'where':_0x1066d6[_0x945d('0x4d')]})['then'](function(_0x8cdcea){_0x83ed8['count']=_0x8cdcea;if(_0x200c34[_0x945d('0x44')][_0x945d('0x53')]){_0x1066d6[_0x945d('0x54')]=[{'all':!![]}];}return db[_0x945d('0x69')]['findAll'](_0x1066d6);})[_0x945d('0x20')](function(_0x118714){_0x83ed8[_0x945d('0x56')]=_0x118714;return _0x83ed8;});}})[_0x945d('0x20')](respondWithFilteredResult(_0xb07159,_0x1066d6))[_0x945d('0x29')](handleError(_0xb07159,null));};exports[_0x945d('0x6c')]=function(_0x288868,_0x42ec15,_0x49899a){return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x288868[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x42ec15,null))['then'](function(_0x186705){if(_0x186705){return _0x186705[_0x945d('0x6c')](_0x288868[_0x945d('0x44')][_0x945d('0x6d')]);}})['then'](respondWithStatusCode(_0x42ec15,null))[_0x945d('0x29')](handleError(_0x42ec15,null));};exports[_0x945d('0x6e')]=function(_0x42cfe8,_0x1b87e0,_0x20655e){if(_0x42cfe8[_0x945d('0x5c')]['id']){delete _0x42cfe8[_0x945d('0x5c')]['id'];}return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x42cfe8[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x1b87e0,null))[_0x945d('0x20')](function(_0x1cbc80){if(_0x1cbc80){_0x42cfe8[_0x945d('0x5c')]['WhatsappAccountId']=_0x1cbc80['id'];return db[_0x945d('0x6f')]['create'](_0x42cfe8[_0x945d('0x5c')]);}})['then'](respondWithResult(_0x1b87e0,null))[_0x945d('0x29')](handleError(_0x1b87e0,null));};exports[_0x945d('0x70')]=function(_0x34605d,_0x12a40f,_0x3f3c7c){var _0x512045={'raw':![],'where':{}};var _0x38cc85={};var _0x8f72fe={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x945d('0x6a')]({'where':{'id':_0x34605d[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x12a40f,null))[_0x945d('0x20')](function(_0x5d2667){if(_0x5d2667){_0x38cc85['model']=_['keys'](db['CannedAnswer'][_0x945d('0x3f')]);_0x38cc85['query']=_['keys'](_0x34605d[_0x945d('0x44')]);_0x38cc85[_0x945d('0x45')]=_[_0x945d('0x46')](_0x38cc85[_0x945d('0x43')],_0x38cc85[_0x945d('0x44')]);_0x512045[_0x945d('0x48')]=_[_0x945d('0x46')](_0x38cc85[_0x945d('0x43')],qs[_0x945d('0x47')](_0x34605d[_0x945d('0x44')][_0x945d('0x47')]));_0x512045['attributes']=_0x512045[_0x945d('0x48')][_0x945d('0x49')]?_0x512045[_0x945d('0x48')]:_0x38cc85[_0x945d('0x43')];if(!_0x34605d[_0x945d('0x44')][_0x945d('0x4a')](_0x945d('0x6b'))){_0x512045[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x34605d[_0x945d('0x44')]['limit']);_0x512045[_0x945d('0x2d')]=qs['offset'](_0x34605d[_0x945d('0x44')][_0x945d('0x2d')]);}_0x512045['order']=qs[_0x945d('0x4c')](_0x34605d[_0x945d('0x44')][_0x945d('0x4c')]);_0x512045['where']=qs[_0x945d('0x45')](_[_0x945d('0x4e')](_0x34605d[_0x945d('0x44')],_0x38cc85[_0x945d('0x45')]));_0x512045[_0x945d('0x4d')][_0x945d('0x68')]=_0x5d2667['id'];if(_0x34605d[_0x945d('0x44')][_0x945d('0x51')]){_0x512045['where']=_[_0x945d('0x4f')](_0x512045[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x512045[_0x945d('0x48')],function(_0x3919de){var _0x575eb1={};_0x575eb1[_0x3919de]={'$like':'%'+_0x34605d[_0x945d('0x44')][_0x945d('0x51')]+'%'};return _0x575eb1;})});}_0x512045=_[_0x945d('0x4f')]({},_0x512045,_0x34605d[_0x945d('0x52')]);return db['CannedAnswer']['count']({'where':_0x512045[_0x945d('0x4d')]})[_0x945d('0x20')](function(_0x4c55ac){_0x8f72fe[_0x945d('0x30')]=_0x4c55ac;if(_0x34605d['query'][_0x945d('0x53')]){_0x512045[_0x945d('0x54')]=[{'all':!![]}];}return db['CannedAnswer'][_0x945d('0x55')](_0x512045);})['then'](function(_0x133a0d){_0x8f72fe[_0x945d('0x56')]=_0x133a0d;return _0x8f72fe;});}})[_0x945d('0x20')](respondWithFilteredResult(_0x12a40f,_0x512045))[_0x945d('0x29')](handleError(_0x12a40f,null));};exports[_0x945d('0x71')]=function(_0x39a4a2,_0x2a1543,_0x55ee69){return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x39a4a2[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x2a1543,null))['then'](function(_0x2b42ac){if(_0x2b42ac){return _0x2b42ac[_0x945d('0x71')](_0x39a4a2['query'][_0x945d('0x6d')]);}})[_0x945d('0x20')](respondWithStatusCode(_0x2a1543,null))['catch'](handleError(_0x2a1543,null));};exports['addAgents']=function(_0x48279e,_0x33f5ad,_0x4144fe){return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x48279e[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x33f5ad,null))[_0x945d('0x20')](function(_0x26e5c1){if(_0x26e5c1){return _0x26e5c1[_0x945d('0x72')](_0x48279e['body'][_0x945d('0x6d')],_[_0x945d('0x73')](_0x48279e[_0x945d('0x5c')],['ids','id'])||{})[_0x945d('0x74')](function(_0x1a1eb8){for(var _0x2495e2=0x0;_0x2495e2<_0x48279e[_0x945d('0x5c')][_0x945d('0x6d')][_0x945d('0x49')];_0x2495e2+=0x1){socket[_0x945d('0x75')](_0x945d('0x76'),{'UserId':Number(_0x48279e[_0x945d('0x5c')][_0x945d('0x6d')][_0x2495e2]),'WhatsappAccountId':Number(_0x48279e[_0x945d('0x65')]['id'])});}return _0x1a1eb8;});}})[_0x945d('0x20')](respondWithResult(_0x33f5ad,null))[_0x945d('0x29')](handleError(_0x33f5ad,null));};exports[_0x945d('0x77')]=function(_0x18dd75,_0xc5b31b,_0x200bcf){return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x18dd75[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0xc5b31b,null))[_0x945d('0x20')](function(_0x5a1127){if(_0x5a1127){return _0x5a1127[_0x945d('0x77')](_0x18dd75[_0x945d('0x44')][_0x945d('0x6d')])[_0x945d('0x20')](function(){if(_[_0x945d('0x78')](_0x18dd75[_0x945d('0x44')]['ids'])){for(var _0x156705=0x0;_0x156705<_0x18dd75['query']['ids'][_0x945d('0x49')];_0x156705+=0x1){socket['emit'](_0x945d('0x79'),{'UserId':Number(_0x18dd75[_0x945d('0x44')]['ids'][_0x156705]),'WhatsappAccountId':Number(_0x18dd75[_0x945d('0x65')]['id'])});}}else{socket['emit'](_0x945d('0x79'),{'UserId':Number(_0x18dd75[_0x945d('0x44')][_0x945d('0x6d')]),'WhatsappAccountId':Number(_0x18dd75[_0x945d('0x65')]['id'])});}});}})['then'](respondWithStatusCode(_0xc5b31b,null))['catch'](handleError(_0xc5b31b,null));};exports['getAgents']=function(_0x21f654,_0xbf1114,_0x259aa4){var _0x30540e={};var _0x132760={};var _0x102f62;var _0x463f3c;return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x21f654[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0xbf1114,null))[_0x945d('0x20')](function(_0x38f1a2){if(_0x38f1a2){_0x102f62=_0x38f1a2;_0x132760[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x7a')][_0x945d('0x3f')]);_0x132760[_0x945d('0x44')]=_['keys'](_0x21f654[_0x945d('0x44')]);_0x132760[_0x945d('0x45')]=_[_0x945d('0x46')](_0x132760[_0x945d('0x43')],_0x132760['query']);_0x30540e['attributes']=_[_0x945d('0x46')](_0x132760[_0x945d('0x43')],qs[_0x945d('0x47')](_0x21f654[_0x945d('0x44')]['fields']));_0x30540e[_0x945d('0x48')]=_0x30540e[_0x945d('0x48')][_0x945d('0x49')]?_0x30540e[_0x945d('0x48')]:_0x132760[_0x945d('0x43')];_0x30540e[_0x945d('0x4b')]=qs[_0x945d('0x4c')](_0x21f654[_0x945d('0x44')][_0x945d('0x4c')]);_0x30540e['where']=qs[_0x945d('0x45')](_['pick'](_0x21f654[_0x945d('0x44')],_0x132760[_0x945d('0x45')]));if(_0x21f654[_0x945d('0x44')][_0x945d('0x51')]){_0x30540e[_0x945d('0x4d')]=_['merge'](_0x30540e[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x30540e['attributes'],function(_0x27822c){var _0x578b1d={};_0x578b1d[_0x27822c]={'$like':'%'+_0x21f654[_0x945d('0x44')]['filter']+'%'};return _0x578b1d;})});}_0x30540e=_[_0x945d('0x4f')]({},_0x30540e,_0x21f654[_0x945d('0x52')]);return _0x102f62[_0x945d('0x7b')](_0x30540e);}})[_0x945d('0x20')](function(_0xebd4df){if(_0xebd4df){_0x463f3c=_0xebd4df['length'];if(!_0x21f654['query']['hasOwnProperty'](_0x945d('0x6b'))){_0x30540e[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x21f654[_0x945d('0x44')]['limit']);_0x30540e['offset']=qs[_0x945d('0x2d')](_0x21f654[_0x945d('0x44')][_0x945d('0x2d')]);}return _0x102f62[_0x945d('0x7b')](_0x30540e);}})[_0x945d('0x20')](function(_0x3f2a52){if(_0x3f2a52){return _0x3f2a52?{'count':_0x463f3c,'rows':_0x3f2a52}:null;}})[_0x945d('0x20')](respondWithResult(_0xbf1114,null))[_0x945d('0x29')](handleError(_0xbf1114,null));};exports[_0x945d('0x7c')]=function(_0x17f358,_0x163d26,_0x9ffdeb){return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x17f358[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x163d26,null))['then'](function(_0x33f0ea){if(_0x33f0ea){return db['sequelize'][_0x945d('0x7d')](function(_0x2b71dd){return db[_0x945d('0x7e')]['destroy']({'where':{'WhatsappAccountId':_0x17f358[_0x945d('0x65')]['id']},'transaction':_0x2b71dd})[_0x945d('0x20')](function(_0x2a0bdc){var _0x44a0c8=_[_0x945d('0x3d')](_0x17f358[_0x945d('0x5c')],function(_0x1f2f05){_0x1f2f05[_0x945d('0x68')]=_0x17f358[_0x945d('0x65')]['id'];return _0x1f2f05;});return db[_0x945d('0x7e')][_0x945d('0x7f')](_0x44a0c8,{'transaction':_0x2b71dd});});})[_0x945d('0x20')](function(){return db['WhatsappApplication'][_0x945d('0x80')]({'where':{'WhatsappAccountId':_0x17f358[_0x945d('0x65')]['id']},'order':_0x945d('0x81')});});}})['then'](respondWithResult(_0x163d26,null))[_0x945d('0x29')](handleError(_0x163d26,null));};exports[_0x945d('0x82')]=function(_0x25a159,_0x31b93c,_0x486c5c){var _0x2641e9={};var _0x26dd86={};var _0x2c44e1;var _0x4fd61d;return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x25a159[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x31b93c,null))['then'](function(_0x8a638a){if(_0x8a638a){_0x2c44e1=_0x8a638a;_0x26dd86[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x7e')]['rawAttributes']);_0x26dd86[_0x945d('0x44')]=_['keys'](_0x25a159[_0x945d('0x44')]);_0x26dd86['filters']=_[_0x945d('0x46')](_0x26dd86['model'],_0x26dd86[_0x945d('0x44')]);_0x2641e9[_0x945d('0x48')]=_[_0x945d('0x46')](_0x26dd86[_0x945d('0x43')],qs['fields'](_0x25a159[_0x945d('0x44')]['fields']));_0x2641e9[_0x945d('0x48')]=_0x2641e9[_0x945d('0x48')][_0x945d('0x49')]?_0x2641e9[_0x945d('0x48')]:_0x26dd86[_0x945d('0x43')];_0x2641e9[_0x945d('0x4b')]=qs[_0x945d('0x4c')](_0x25a159[_0x945d('0x44')][_0x945d('0x4c')]);_0x2641e9[_0x945d('0x4d')]=qs[_0x945d('0x45')](_[_0x945d('0x4e')](_0x25a159[_0x945d('0x44')],_0x26dd86[_0x945d('0x45')]));if(_0x25a159[_0x945d('0x44')]['filter']){_0x2641e9['where']=_['merge'](_0x2641e9['where'],{'$or':_['map'](_0x2641e9[_0x945d('0x48')],function(_0x2b681a){var _0x1a6093={};_0x1a6093[_0x2b681a]={'$like':'%'+_0x25a159[_0x945d('0x44')][_0x945d('0x51')]+'%'};return _0x1a6093;})});}_0x2641e9=_[_0x945d('0x4f')]({},_0x2641e9,_0x25a159[_0x945d('0x52')]);return _0x2c44e1[_0x945d('0x82')](_0x2641e9);}})[_0x945d('0x20')](function(_0x578b88){if(_0x578b88){_0x4fd61d=_0x578b88[_0x945d('0x49')];if(!_0x25a159['query'][_0x945d('0x4a')](_0x945d('0x6b'))){_0x2641e9[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x25a159[_0x945d('0x44')][_0x945d('0x2f')]);_0x2641e9[_0x945d('0x2d')]=qs['offset'](_0x25a159['query'][_0x945d('0x2d')]);}return _0x2c44e1[_0x945d('0x82')](_0x2641e9);}})[_0x945d('0x20')](function(_0x42fa8d){if(_0x42fa8d){return _0x42fa8d?{'count':_0x4fd61d,'rows':_0x42fa8d}:null;}})[_0x945d('0x20')](respondWithResult(_0x31b93c,null))['catch'](handleError(_0x31b93c,null));};exports[_0x945d('0x83')]=function(_0x199fd0,_0x3acf43,_0x16aeb4){var _0x446ee7={'channel':_0x945d('0x84')};var _0x57acd8=[];var _0x3b6c8b=[];var _0x4c7c40={};return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x199fd0[_0x945d('0x65')]['id']},'include':[{'model':db[_0x945d('0x7e')],'as':_0x945d('0x85')}]})['then'](handleEntityNotFound(_0x3acf43,null))[_0x945d('0x20')](function(_0x577401){_0x446ee7[_0x945d('0x86')]=_0x577401;_0x446ee7[_0x945d('0x87')]=_[_0x945d('0x88')](_0x577401[_0x945d('0x85')],[_0x945d('0x81')],['asc']);if(_0x446ee7[_0x945d('0x86')][_0x945d('0x85')]){delete _0x446ee7[_0x945d('0x86')][_0x945d('0x85')];}return db[_0x945d('0x89')][_0x945d('0x66')]();})[_0x945d('0x20')](function(_0x233627){if(!_0x233627){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))]('no\x20available\x20attributes');}_0x57acd8=_[_0x945d('0x8c')](_[_0x945d('0x59')](_0x233627),[_0x945d('0x8d'),_0x945d('0x8e')]);_0x3b6c8b=_['difference'](_['keys'](_0x233627),['createdAt',_0x945d('0x8e'),_0x945d('0x8f'),_0x945d('0x90')]);_0x446ee7[_0x945d('0x5c')]={'mapKey':_0x945d('0x91')};if(_0x446ee7[_0x945d('0x86')][_0x945d('0x41')]&&_0x446ee7[_0x945d('0x86')][_0x945d('0x41')]===_0x945d('0x92')){_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')]=_0x199fd0[_0x945d('0x5c')][_0x945d('0x94')][_0x945d('0x95')]('whatsapp:','');_0x446ee7['body'][_0x945d('0x5c')]=_0x199fd0['body'][_0x945d('0x96')];_0x446ee7[_0x945d('0x5c')][_0x945d('0x97')]=_0x199fd0[_0x945d('0x5c')][_0x945d('0x98')];}if(_0x446ee7[_0x945d('0x5c')]['id']){delete _0x446ee7['body']['id'];}if(_[_0x945d('0x99')](_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')])){throw new db[(_0x945d('0x8a'))]['ValidationError'](_0x945d('0x9a'));}if(_[_0x945d('0x99')](_0x446ee7['body'][_0x945d('0x5c')])||_0x446ee7[_0x945d('0x5c')][_0x945d('0x5c')]===''){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0x9b'));}if(_[_0x945d('0x99')](_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')])){throw new db['Sequelize'][(_0x945d('0x8b'))](_0x945d('0x9d')+_0x3b6c8b);}if(!_[_0x945d('0x9e')](_0x3b6c8b,_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')])){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0x9f')+_0x3b6c8b);}_0x4c7c40[_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')]]=_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')];return db['CmList'][_0x945d('0x5a')]({'where':{'id':_0x446ee7['account'][_0x945d('0x90')]},'include':[{'model':db['CmContact'],'as':_0x945d('0xa0'),'where':_0x4c7c40,'limit':0x1,'order':[[_0x945d('0x8e'),'DESC']]}]});})['then'](handleEntityNotFound(_0x3acf43,null))[_0x945d('0x20')](function(_0x32dc0c){if(_0x32dc0c){_0x446ee7[_0x945d('0xa1')]=_[_0x945d('0x73')](_0x32dc0c,[_0x945d('0xa0')]);if(_0x32dc0c[_0x945d('0xa0')][_0x945d('0x49')]){return _0x32dc0c['Contacts'][0x0];}var _0x2e146c=_[_0x945d('0x1a')](_0x446ee7[_0x945d('0x5c')],{'firstName':_0x446ee7['body'][_0x945d('0x93')],'ListId':_0x32dc0c['id']});_0x2e146c[_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')]]=_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')];return db[_0x945d('0x89')][_0x945d('0x5b')](_0x2e146c,{'fields':_0x57acd8,'raw':!![]});}})[_0x945d('0x20')](handleEntityNotFound(_0x3acf43,null))[_0x945d('0x20')](function(_0x31bd6d){if(_0x31bd6d){_0x446ee7[_0x945d('0xa2')]=_0x31bd6d;var _0x562c92={'ContactId':_0x31bd6d['id'],'phone':_0x446ee7['body'][_0x945d('0x93')],'WhatsappAccountId':_0x199fd0['params']['id']};var _0x1215f1={'ContactId':_0x31bd6d['id'],'WhatsappAccountId':_0x199fd0[_0x945d('0x65')]['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x1215f1})['then'](function(_0x136360){if(_0x136360){return[_0x136360,![]];}return db[_0x945d('0xa3')]['create'](_0x562c92)[_0x945d('0x20')](function(_0x274285){return[_0x274285,!![]];});});}})[_0x945d('0x74')](function(_0x3b4917,_0x46cfe){_0x446ee7[_0x945d('0xa4')]=_0x3b4917[_0x945d('0x37')]({'plain':!![]});_0x446ee7[_0x945d('0xa4')][_0x945d('0xa5')]=![];if(_0x46cfe){if(_0x446ee7[_0x945d('0x86')][_0x945d('0xa6')]){_0x446ee7[_0x945d('0x87')][_0x945d('0xa7')]({'id':0x0,'priority':_0x446ee7[_0x945d('0x87')][_0x945d('0x49')]+0x1,'app':_0x945d('0xa8'),'appdata':_0x945d('0xa9'),'interval':_0x945d('0xaa')});}_0x446ee7[_0x945d('0xa4')][_0x945d('0xa5')]=!![];}return db[_0x945d('0xab')]['create']({'phone':_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')],'messageId':_0x446ee7['body'][_0x945d('0x97')],'body':_0x446ee7[_0x945d('0x5c')][_0x945d('0x5c')],'WhatsappAccountId':_0x199fd0['params']['id'],'WhatsappInteractionId':_0x3b4917['id'],'direction':'in','ContactId':_0x3b4917[_0x945d('0xac')],'AttachmentId':_0x446ee7['body'][_0x945d('0xad')]});})['then'](function(_0x2c19ea){_0x446ee7['message']=_0x2c19ea;if(_0x446ee7[_0x945d('0xa4')][_0x945d('0xae')]){return db[_0x945d('0x7a')]['find']({'attributes':['id',_0x945d('0x39')],'where':{'id':_0x446ee7['interaction'][_0x945d('0xae')]}})[_0x945d('0x20')](function(_0x315dd8){if(_0x315dd8){_0x446ee7['applications'][_0x945d('0xaf')]({'id':0x0,'priority':0x0,'app':_0x945d('0xb0'),'appdata':_0x315dd8[_0x945d('0x39')]+','+(_0x446ee7[_0x945d('0x86')][_0x945d('0xb1')]||0xa),'interval':_0x945d('0xaa')});}return respondWithRpcPromise(_0x945d('0xb2'),_0x945d('0xb3'),_0x446ee7);});}return respondWithRpcPromise(_0x945d('0xb2'),'startRouting',_0x446ee7);})[_0x945d('0x20')](function(_0xb9af18){if(_0xb9af18){var _0x3ca6a2=0xc8;var _0xc0493=_0x945d('0xb4');logger['info'](_0x945d('0x24'),_0xc0493,_0x3ca6a2,_0x945d('0xb5'));logger[_0x945d('0x23')](_0x945d('0xb6'),_0xc0493,_0x3ca6a2,_0x945d('0xb5'),JSON[_0x945d('0x25')](_0xb9af18));if(_0x446ee7[_0x945d('0x86')][_0x945d('0x41')]==='twilio'){return _0x3acf43[_0x945d('0x2b')](_0x3ca6a2)[_0x945d('0x31')](_0x945d('0xb7'),_0x945d('0xb8'))[_0x945d('0x3a')](_0x945d('0xb9'));}else{return _0x3acf43[_0x945d('0x2b')](_0x3ca6a2)['json'](_0xb9af18);}}})[_0x945d('0x29')](handleError(_0x3acf43,null));};exports[_0x945d('0x3a')]=function(_0x2ac8c7,_0x1e50ca,_0x45ebeb){var _0x343000,_0x3abbce,_0x52c577;if(_[_0x945d('0x99')](_0x2ac8c7[_0x945d('0x5c')][_0x945d('0x5c')])||_0x2ac8c7[_0x945d('0x5c')]['body']===''){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0x9b'));}if(_[_0x945d('0x99')](_0x2ac8c7[_0x945d('0x5c')]['to'])){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0xba'));}_0x343000=_0x2ac8c7[_0x945d('0x5c')]['to'];return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x2ac8c7['params']['id']},'include':[{'model':db[_0x945d('0xbb')],'as':_0x945d('0xbc'),'include':[{'model':db['CmContact'],'as':_0x945d('0xa0'),'where':{'mobile':_0x343000},'limit':0x1,'order':[[_0x945d('0x8e'),_0x945d('0xbd')]]}]}]})[_0x945d('0x20')](handleEntityNotFound(_0x1e50ca,null))[_0x945d('0x20')](function(_0x2f9bbd){if(_0x2f9bbd&&_0x2f9bbd[_0x945d('0xbc')]){_0x3abbce=_0x2f9bbd[_0x945d('0x37')]({'plain':!![]});if(_0x3abbce[_0x945d('0xbc')]&&_0x3abbce[_0x945d('0xbc')][_0x945d('0xa0')]['length']){return _0x3abbce[_0x945d('0xbc')][_0x945d('0xa0')][0x0];}return db['CmContact'][_0x945d('0x5b')](_[_0x945d('0x1a')](_0x2ac8c7[_0x945d('0x5c')],{'firstName':_0x343000,'mobile':_0x343000,'phone':_0x343000,'ListId':_0x3abbce[_0x945d('0x90')]}));}})['then'](handleEntityNotFound(_0x1e50ca,null))[_0x945d('0x20')](function(_0x2b5072){if(_0x2b5072){_0x52c577=_0x2b5072;return db['WhatsappInteraction'][_0x945d('0x5a')]({'where':{'ContactId':_0x52c577['id'],'closed':![],'WhatsappAccountId':_0x3abbce['id']}})[_0x945d('0x20')](function(_0x8c0d49){if(_0x8c0d49){return[_0x8c0d49,![]];}return db[_0x945d('0xa3')][_0x945d('0x5b')]({'UserId':_0x2ac8c7['user']['id'],'ContactId':_0x52c577['id'],'WhatsappAccountId':_0x3abbce['id'],'phone':_0x343000,'firstMsgDirection':_0x945d('0xbe'),'Messages':[_['merge'](_0x2ac8c7[_0x945d('0x5c')],{'read':![],'body':_0x2ac8c7[_0x945d('0x5c')]['body'],'phone':_0x343000,'WhatsappAccountId':_0x3abbce['id'],'UserId':_0x2ac8c7['user']['id'],'ContactId':_0x52c577['id']})]},{'include':[{'model':db[_0x945d('0xab')],'as':'Messages'}]})[_0x945d('0x20')](function(_0x431cf1){return[_0x431cf1,!![]];});});}})[_0x945d('0x74')](function(_0x546787,_0x48575c){if(_0x48575c){return _0x546787;}return db[_0x945d('0xab')][_0x945d('0x5b')](_['merge'](_0x2ac8c7['body'],{'read':![],'body':_0x2ac8c7[_0x945d('0x5c')]['body'],'phone':_0x343000,'WhatsappAccountId':_0x3abbce['id'],'WhatsappInteractionId':_0x546787['id'],'UserId':_0x2ac8c7[_0x945d('0x5e')]['id'],'ContactId':_0x52c577['id']}))[_0x945d('0x20')](function(_0x9cb78a){_0x546787[_0x945d('0xbf')][_0x945d('0xc0')]=[];_0x546787[_0x945d('0xbf')]['Messages']['push'](_0x9cb78a['dataValues']);return _0x546787;});})[_0x945d('0x20')](respondWithResult(_0x1e50ca,null))[_0x945d('0x29')](handleError(_0x1e50ca,null));};
\ No newline at end of file
+var _0x4ca2=['papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','update','get','WhatsappAccounts','UserProfileResource','destroy','stack','name','send','index','Pause','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','WhatsappAccount','includeAll','include','findAll','rows','params','mandatoryDispositionPause','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','Disposition','nolimit','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','findOne','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','priority','getApplications','notify','whatsapp','account','applications','orderBy','Applications','asc','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','From','replace','whatsapp:','messageId','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','Contacts','DESC','list','defaults','CmContact','contact','WhatsappInteraction','spread','interaction','autoclose','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','User','unshift','agent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','to\x20is\x20mandatory','CmList','List','out','Messages','dataValues','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring'];(function(_0x2918cf,_0x39ffed){var _0x5373d6=function(_0x352136){while(--_0x352136){_0x2918cf['push'](_0x2918cf['shift']());}};_0x5373d6(++_0x39ffed);}(_0x4ca2,0x16e));var _0x24ca=function(_0x367448,_0x3e9deb){_0x367448=_0x367448-0x0;var _0x28b046=_0x4ca2[_0x367448];return _0x28b046;};'use strict';var emlformat=require(_0x24ca('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x24ca('0x1'));var rp=require(_0x24ca('0x2'));var moment=require(_0x24ca('0x3'));var BPromise=require(_0x24ca('0x4'));var Mustache=require(_0x24ca('0x5'));var util=require('util');var path=require(_0x24ca('0x6'));var sox=require(_0x24ca('0x7'));var csv=require(_0x24ca('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x24ca('0x9'));var _=require(_0x24ca('0xa'));var squel=require('squel');var crypto=require(_0x24ca('0xb'));var jsforce=require(_0x24ca('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x24ca('0x8'));var querystring=require(_0x24ca('0xd'));var Papa=require(_0x24ca('0xe'));var Redis=require('ioredis');var authService=require(_0x24ca('0xf'));var qs=require(_0x24ca('0x10'));var as=require(_0x24ca('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x24ca('0x12'))(_0x24ca('0x13'));var utils=require(_0x24ca('0x14'));var config=require(_0x24ca('0x15'));var licenseUtil=require(_0x24ca('0x16'));var db=require(_0x24ca('0x17'))['db'];config[_0x24ca('0x18')]=_['defaults'](config[_0x24ca('0x18')],{'host':_0x24ca('0x19'),'port':0x18eb});var socket=require(_0x24ca('0x1a'))(new Redis(config[_0x24ca('0x18')]));require(_0x24ca('0x1b'))[_0x24ca('0x1c')](socket);var jayson=require(_0x24ca('0x1d'));var client=jayson[_0x24ca('0x1e')][_0x24ca('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x44ee7c,_0x48386d,_0x1bafd9,_0x5741c3){return new BPromise(function(_0x579205,_0x1b9913){var _0x2b031a=_0x5741c3||client;return _0x2b031a[_0x24ca('0x20')](_0x44ee7c,_0x1bafd9)[_0x24ca('0x21')](function(_0x434809){logger[_0x24ca('0x22')](_0x24ca('0x23'),_0x48386d,_0x24ca('0x24'));logger[_0x24ca('0x25')](_0x24ca('0x26'),_0x48386d,'request\x20sent',JSON[_0x24ca('0x27')](_0x434809));if(_0x434809[_0x24ca('0x28')]){if(_0x434809[_0x24ca('0x28')][_0x24ca('0x29')]===0x1f4){logger[_0x24ca('0x28')](_0x24ca('0x23'),_0x48386d,_0x434809[_0x24ca('0x28')][_0x24ca('0x2a')]);return _0x1b9913(_0x434809[_0x24ca('0x28')]['message']);}logger[_0x24ca('0x28')](_0x24ca('0x23'),_0x48386d,_0x434809[_0x24ca('0x28')][_0x24ca('0x2a')]);return _0x579205(_0x434809[_0x24ca('0x28')][_0x24ca('0x2a')]);}else{logger[_0x24ca('0x22')]('WhatsappAccount,\x20%s,\x20%s',_0x48386d,'request\x20sent');_0x579205(_0x434809['result'][_0x24ca('0x2a')]);}})['catch'](function(_0xf25501){logger[_0x24ca('0x28')](_0x24ca('0x23'),_0x48386d,_0xf25501);_0x1b9913(_0xf25501);});});}function respondWithStatusCode(_0x1fe4a4,_0x468c25){_0x468c25=_0x468c25||0xcc;return function(_0x2b12e0){if(_0x2b12e0){return _0x1fe4a4['sendStatus'](_0x468c25);}return _0x1fe4a4[_0x24ca('0x2b')](_0x468c25)[_0x24ca('0x2c')]();};}function respondWithResult(_0x3a3c11,_0x58286b){_0x58286b=_0x58286b||0xc8;return function(_0x56ed63){if(_0x56ed63){return _0x3a3c11[_0x24ca('0x2b')](_0x58286b)[_0x24ca('0x2d')](_0x56ed63);}};}function respondWithFilteredResult(_0x49d438,_0x50024c){return function(_0x3a6349){if(_0x3a6349){var _0x59e96b=typeof _0x50024c['offset']===_0x24ca('0x2e')&&typeof _0x50024c[_0x24ca('0x2f')]===_0x24ca('0x2e');var _0x56fe83=_0x3a6349['count'];var _0x2f7908=_0x59e96b?0x0:_0x50024c[_0x24ca('0x30')];var _0x2b791d=_0x59e96b?_0x3a6349[_0x24ca('0x31')]:_0x50024c[_0x24ca('0x30')]+_0x50024c[_0x24ca('0x2f')];var _0x15ff6d;if(_0x2b791d>=_0x56fe83){_0x2b791d=_0x56fe83;_0x15ff6d=0xc8;}else{_0x15ff6d=0xce;}_0x49d438[_0x24ca('0x2b')](_0x15ff6d);return _0x49d438[_0x24ca('0x32')](_0x24ca('0x33'),_0x2f7908+'-'+_0x2b791d+'/'+_0x56fe83)[_0x24ca('0x2d')](_0x3a6349);}return null;};}function patchUpdates(_0x5294a4){return function(_0x2d2892){try{jsonpatch[_0x24ca('0x34')](_0x2d2892,_0x5294a4,!![]);}catch(_0x3998eb){return BPromise[_0x24ca('0x35')](_0x3998eb);}return _0x2d2892['save']();};}function saveUpdates(_0x35400e,_0x711e74){return function(_0x11a58a){if(_0x11a58a){return _0x11a58a[_0x24ca('0x36')](_0x35400e)[_0x24ca('0x21')](function(_0x41cefd){return _0x41cefd;});}return null;};}function removeEntity(_0x353b28,_0x5a811c){return function(_0x3ea60f){if(_0x3ea60f){return _0x3ea60f['destroy']()[_0x24ca('0x21')](function(){var _0xd207ff=_0x3ea60f[_0x24ca('0x37')]({'plain':!![]});var _0x18b5a0=_0x24ca('0x38');return db[_0x24ca('0x39')][_0x24ca('0x3a')]({'where':{'type':_0x18b5a0,'resourceId':_0xd207ff['id']}})['then'](function(){return _0x3ea60f;});})[_0x24ca('0x21')](function(){_0x353b28[_0x24ca('0x2b')](0xcc)[_0x24ca('0x2c')]();});}};}function handleEntityNotFound(_0x559f4f,_0x3b72c5){return function(_0x41ea31){if(!_0x41ea31){_0x559f4f['sendStatus'](0x194);}return _0x41ea31;};}function handleError(_0x876b4c,_0x3fa059){_0x3fa059=_0x3fa059||0x1f4;return function(_0x204c4d){logger[_0x24ca('0x28')](_0x204c4d[_0x24ca('0x3b')]);if(_0x204c4d[_0x24ca('0x3c')]){delete _0x204c4d[_0x24ca('0x3c')];}_0x876b4c[_0x24ca('0x2b')](_0x3fa059)[_0x24ca('0x3d')](_0x204c4d);};}exports[_0x24ca('0x3e')]=function(_0x3678f1,_0xbcbe6e){var _0x216f6d={'include':[{'model':db[_0x24ca('0x3f')],'as':'mandatoryDispositionPause'}]},_0x5ad9cb={},_0x341817={'count':0x0,'rows':[]};var _0x43427b=_[_0x24ca('0x40')](db['WhatsappAccount'][_0x24ca('0x41')],function(_0x50c495){return{'name':_0x50c495[_0x24ca('0x42')],'type':_0x50c495[_0x24ca('0x43')]['key']};});_0x5ad9cb[_0x24ca('0x44')]=_['map'](_0x43427b,_0x24ca('0x3c'));_0x5ad9cb[_0x24ca('0x45')]=_[_0x24ca('0x46')](_0x3678f1[_0x24ca('0x45')]);_0x5ad9cb[_0x24ca('0x47')]=_[_0x24ca('0x48')](_0x5ad9cb['model'],_0x5ad9cb[_0x24ca('0x45')]);_0x216f6d[_0x24ca('0x49')]=_[_0x24ca('0x48')](_0x5ad9cb[_0x24ca('0x44')],qs['fields'](_0x3678f1[_0x24ca('0x45')][_0x24ca('0x4a')]));_0x216f6d[_0x24ca('0x49')]=_0x216f6d[_0x24ca('0x49')][_0x24ca('0x4b')]?_0x216f6d[_0x24ca('0x49')]:_0x5ad9cb[_0x24ca('0x44')];if(!_0x3678f1[_0x24ca('0x45')][_0x24ca('0x4c')]('nolimit')){_0x216f6d[_0x24ca('0x2f')]=qs['limit'](_0x3678f1[_0x24ca('0x45')][_0x24ca('0x2f')]);_0x216f6d[_0x24ca('0x30')]=qs['offset'](_0x3678f1[_0x24ca('0x45')][_0x24ca('0x30')]);}_0x216f6d[_0x24ca('0x4d')]=qs[_0x24ca('0x4e')](_0x3678f1[_0x24ca('0x45')][_0x24ca('0x4e')]);_0x216f6d['where']=qs[_0x24ca('0x47')](_[_0x24ca('0x4f')](_0x3678f1[_0x24ca('0x45')],_0x5ad9cb[_0x24ca('0x47')]),_0x43427b);if(_0x3678f1[_0x24ca('0x45')][_0x24ca('0x50')]){_0x216f6d[_0x24ca('0x51')]=_[_0x24ca('0x52')](_0x216f6d[_0x24ca('0x51')],{'$or':_['map'](_0x43427b,function(_0x1beacb){if(_0x1beacb[_0x24ca('0x43')]!=='VIRTUAL'){var _0xe37995={};_0xe37995[_0x1beacb[_0x24ca('0x3c')]]={'$like':'%'+_0x3678f1[_0x24ca('0x45')]['filter']+'%'};return _0xe37995;}})});}_0x216f6d=_[_0x24ca('0x52')]({},_0x216f6d,_0x3678f1[_0x24ca('0x53')]);var _0x38e09b={'where':_0x216f6d[_0x24ca('0x51')]};return db[_0x24ca('0x54')]['count'](_0x38e09b)[_0x24ca('0x21')](function(_0x86b8de){_0x341817['count']=_0x86b8de;if(_0x3678f1[_0x24ca('0x45')][_0x24ca('0x55')]){_0x216f6d[_0x24ca('0x56')]=[{'all':!![]}];}return db[_0x24ca('0x54')][_0x24ca('0x57')](_0x216f6d);})[_0x24ca('0x21')](function(_0xebace2){_0x341817[_0x24ca('0x58')]=_0xebace2;return _0x341817;})[_0x24ca('0x21')](respondWithFilteredResult(_0xbcbe6e,_0x216f6d))['catch'](handleError(_0xbcbe6e,null));};exports['show']=function(_0x1e0b1f,_0x26ba99){var _0x3913e8={'raw':![],'where':{'id':_0x1e0b1f[_0x24ca('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0x24ca('0x5a')}]},_0xff5bc0={};_0xff5bc0[_0x24ca('0x44')]=_[_0x24ca('0x46')](db[_0x24ca('0x54')][_0x24ca('0x41')]);_0xff5bc0[_0x24ca('0x45')]=_[_0x24ca('0x46')](_0x1e0b1f[_0x24ca('0x45')]);_0xff5bc0[_0x24ca('0x47')]=_['intersection'](_0xff5bc0[_0x24ca('0x44')],_0xff5bc0[_0x24ca('0x45')]);_0x3913e8[_0x24ca('0x49')]=_[_0x24ca('0x48')](_0xff5bc0[_0x24ca('0x44')],qs[_0x24ca('0x4a')](_0x1e0b1f[_0x24ca('0x45')][_0x24ca('0x4a')]));_0x3913e8['attributes']=_0x3913e8[_0x24ca('0x49')]['length']?_0x3913e8[_0x24ca('0x49')]:_0xff5bc0[_0x24ca('0x44')];if(_0x1e0b1f[_0x24ca('0x45')][_0x24ca('0x55')]){_0x3913e8[_0x24ca('0x56')]=[{'all':!![]}];}_0x3913e8=_['merge']({},_0x3913e8,_0x1e0b1f['options']);return db[_0x24ca('0x54')][_0x24ca('0x5b')](_0x3913e8)['then'](handleEntityNotFound(_0x26ba99,null))[_0x24ca('0x21')](respondWithResult(_0x26ba99,null))[_0x24ca('0x5c')](handleError(_0x26ba99,null));};exports[_0x24ca('0x5d')]=function(_0x5535fd,_0x2a10b3){return db[_0x24ca('0x54')][_0x24ca('0x5d')](_0x5535fd[_0x24ca('0x5e')],{})[_0x24ca('0x21')](function(_0x216a4f){var _0x4ce225=_0x5535fd['user'][_0x24ca('0x37')]({'plain':!![]});if(!_0x4ce225)throw new Error(_0x24ca('0x5f'));if(_0x4ce225['role']===_0x24ca('0x60')){var _0x262622=_0x216a4f['get']({'plain':!![]});var _0x242703='WhatsappAccounts';return db[_0x24ca('0x61')][_0x24ca('0x5b')]({'where':{'name':_0x242703,'userProfileId':_0x4ce225[_0x24ca('0x62')]},'raw':!![]})['then'](function(_0x11784f){if(_0x11784f&&_0x11784f[_0x24ca('0x63')]===0x0){return db[_0x24ca('0x39')]['create']({'name':_0x262622[_0x24ca('0x3c')],'resourceId':_0x262622['id'],'type':_0x11784f[_0x24ca('0x3c')],'sectionId':_0x11784f['id']},{})[_0x24ca('0x21')](function(){return _0x216a4f;});}else{return _0x216a4f;}})[_0x24ca('0x5c')](function(_0x2a4952){logger[_0x24ca('0x28')](_0x24ca('0x64'),_0x2a4952);throw _0x2a4952;});}return _0x216a4f;})['then'](respondWithResult(_0x2a10b3,0xc9))[_0x24ca('0x5c')](handleError(_0x2a10b3,null));};exports[_0x24ca('0x36')]=function(_0x4ee1a7,_0x2c7a53){if(_0x4ee1a7[_0x24ca('0x5e')]['id']){delete _0x4ee1a7[_0x24ca('0x5e')]['id'];}return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x4ee1a7[_0x24ca('0x59')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x24ca('0x21')](handleEntityNotFound(_0x2c7a53,null))['then'](saveUpdates(_0x4ee1a7[_0x24ca('0x5e')],null))[_0x24ca('0x21')](respondWithResult(_0x2c7a53,null))[_0x24ca('0x5c')](handleError(_0x2c7a53,null));};exports[_0x24ca('0x3a')]=function(_0x392e59,_0x3be1ad){return db['WhatsappAccount']['find']({'where':{'id':_0x392e59[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x3be1ad,null))[_0x24ca('0x21')](removeEntity(_0x3be1ad,null))[_0x24ca('0x5c')](handleError(_0x3be1ad,null));};exports[_0x24ca('0x65')]=function(_0x4d8536,_0x5c27dd){return db['WhatsappAccount'][_0x24ca('0x65')]()['then'](respondWithResult(_0x5c27dd,null))['catch'](handleError(_0x5c27dd,null));};exports[_0x24ca('0x66')]=function(_0x4c9f51,_0x1290e3,_0x40d630){if(_0x4c9f51[_0x24ca('0x5e')]['id']){delete _0x4c9f51['body']['id'];}return db['WhatsappAccount'][_0x24ca('0x5b')]({'where':{'id':_0x4c9f51['params']['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x1290e3,null))[_0x24ca('0x21')](function(_0x367fe8){if(_0x367fe8){_0x4c9f51[_0x24ca('0x5e')][_0x24ca('0x67')]=_0x367fe8['id'];return db[_0x24ca('0x68')][_0x24ca('0x5d')](_0x4c9f51[_0x24ca('0x5e')]);}})[_0x24ca('0x21')](respondWithResult(_0x1290e3,null))[_0x24ca('0x5c')](handleError(_0x1290e3,null));};exports['getDispositions']=function(_0x33ada7,_0x11025a,_0x274054){var _0x4181f5={'raw':![],'where':{}};var _0xb94f86={};var _0x3272bf={'count':0x0,'rows':[]};return db[_0x24ca('0x54')]['findOne']({'where':{'id':_0x33ada7[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x11025a,null))['then'](function(_0x14a12d){if(_0x14a12d){_0xb94f86[_0x24ca('0x44')]=_['keys'](db['Disposition'][_0x24ca('0x41')]);_0xb94f86['query']=_[_0x24ca('0x46')](_0x33ada7['query']);_0xb94f86[_0x24ca('0x47')]=_[_0x24ca('0x48')](_0xb94f86[_0x24ca('0x44')],_0xb94f86['query']);_0x4181f5[_0x24ca('0x49')]=_[_0x24ca('0x48')](_0xb94f86[_0x24ca('0x44')],qs[_0x24ca('0x4a')](_0x33ada7['query'][_0x24ca('0x4a')]));_0x4181f5[_0x24ca('0x49')]=_0x4181f5['attributes'][_0x24ca('0x4b')]?_0x4181f5['attributes']:_0xb94f86['model'];if(!_0x33ada7[_0x24ca('0x45')][_0x24ca('0x4c')](_0x24ca('0x69'))){_0x4181f5[_0x24ca('0x2f')]=qs[_0x24ca('0x2f')](_0x33ada7[_0x24ca('0x45')][_0x24ca('0x2f')]);_0x4181f5[_0x24ca('0x30')]=qs[_0x24ca('0x30')](_0x33ada7[_0x24ca('0x45')][_0x24ca('0x30')]);}_0x4181f5[_0x24ca('0x4d')]=qs[_0x24ca('0x4e')](_0x33ada7[_0x24ca('0x45')][_0x24ca('0x4e')]);_0x4181f5[_0x24ca('0x51')]=qs[_0x24ca('0x47')](_[_0x24ca('0x4f')](_0x33ada7[_0x24ca('0x45')],_0xb94f86[_0x24ca('0x47')]));_0x4181f5[_0x24ca('0x51')][_0x24ca('0x67')]=_0x14a12d['id'];if(_0x33ada7[_0x24ca('0x45')][_0x24ca('0x50')]){_0x4181f5['where']=_[_0x24ca('0x52')](_0x4181f5[_0x24ca('0x51')],{'$or':_[_0x24ca('0x40')](_0x4181f5[_0x24ca('0x49')],function(_0x4e533a){var _0x33d8f1={};_0x33d8f1[_0x4e533a]={'$like':'%'+_0x33ada7[_0x24ca('0x45')][_0x24ca('0x50')]+'%'};return _0x33d8f1;})});}_0x4181f5=_[_0x24ca('0x52')]({},_0x4181f5,_0x33ada7['options']);return db[_0x24ca('0x68')][_0x24ca('0x31')]({'where':_0x4181f5[_0x24ca('0x51')]})[_0x24ca('0x21')](function(_0x4850b6){_0x3272bf[_0x24ca('0x31')]=_0x4850b6;if(_0x33ada7['query']['includeAll']){_0x4181f5[_0x24ca('0x56')]=[{'all':!![]}];}return db[_0x24ca('0x68')][_0x24ca('0x57')](_0x4181f5);})[_0x24ca('0x21')](function(_0x15d1e6){_0x3272bf[_0x24ca('0x58')]=_0x15d1e6;return _0x3272bf;});}})[_0x24ca('0x21')](respondWithFilteredResult(_0x11025a,_0x4181f5))['catch'](handleError(_0x11025a,null));};exports[_0x24ca('0x6a')]=function(_0xaaff5f,_0x506a5d,_0x2300c6){return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0xaaff5f[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x506a5d,null))[_0x24ca('0x21')](function(_0x47c4c1){if(_0x47c4c1){return _0x47c4c1[_0x24ca('0x6a')](_0xaaff5f[_0x24ca('0x45')][_0x24ca('0x6b')]);}})[_0x24ca('0x21')](respondWithStatusCode(_0x506a5d,null))['catch'](handleError(_0x506a5d,null));};exports[_0x24ca('0x6c')]=function(_0x22971c,_0x20d50c,_0x4269cb){if(_0x22971c['body']['id']){delete _0x22971c[_0x24ca('0x5e')]['id'];}return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x22971c[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x20d50c,null))['then'](function(_0x1e7ccb){if(_0x1e7ccb){_0x22971c[_0x24ca('0x5e')][_0x24ca('0x67')]=_0x1e7ccb['id'];return db[_0x24ca('0x6d')]['create'](_0x22971c[_0x24ca('0x5e')]);}})[_0x24ca('0x21')](respondWithResult(_0x20d50c,null))[_0x24ca('0x5c')](handleError(_0x20d50c,null));};exports[_0x24ca('0x6e')]=function(_0x12588e,_0xa2db14,_0x53216b){var _0x5d3b53={'raw':![],'where':{}};var _0x23c0e7={};var _0x437c7d={'count':0x0,'rows':[]};return db[_0x24ca('0x54')]['findOne']({'where':{'id':_0x12588e[_0x24ca('0x59')]['id']}})['then'](handleEntityNotFound(_0xa2db14,null))['then'](function(_0x58ca20){if(_0x58ca20){_0x23c0e7['model']=_[_0x24ca('0x46')](db[_0x24ca('0x6d')][_0x24ca('0x41')]);_0x23c0e7[_0x24ca('0x45')]=_[_0x24ca('0x46')](_0x12588e[_0x24ca('0x45')]);_0x23c0e7[_0x24ca('0x47')]=_[_0x24ca('0x48')](_0x23c0e7[_0x24ca('0x44')],_0x23c0e7[_0x24ca('0x45')]);_0x5d3b53[_0x24ca('0x49')]=_[_0x24ca('0x48')](_0x23c0e7[_0x24ca('0x44')],qs[_0x24ca('0x4a')](_0x12588e[_0x24ca('0x45')]['fields']));_0x5d3b53[_0x24ca('0x49')]=_0x5d3b53[_0x24ca('0x49')][_0x24ca('0x4b')]?_0x5d3b53['attributes']:_0x23c0e7[_0x24ca('0x44')];if(!_0x12588e[_0x24ca('0x45')][_0x24ca('0x4c')](_0x24ca('0x69'))){_0x5d3b53[_0x24ca('0x2f')]=qs[_0x24ca('0x2f')](_0x12588e['query'][_0x24ca('0x2f')]);_0x5d3b53['offset']=qs[_0x24ca('0x30')](_0x12588e[_0x24ca('0x45')][_0x24ca('0x30')]);}_0x5d3b53[_0x24ca('0x4d')]=qs['sort'](_0x12588e[_0x24ca('0x45')]['sort']);_0x5d3b53['where']=qs[_0x24ca('0x47')](_['pick'](_0x12588e[_0x24ca('0x45')],_0x23c0e7[_0x24ca('0x47')]));_0x5d3b53['where']['WhatsappAccountId']=_0x58ca20['id'];if(_0x12588e[_0x24ca('0x45')][_0x24ca('0x50')]){_0x5d3b53[_0x24ca('0x51')]=_[_0x24ca('0x52')](_0x5d3b53[_0x24ca('0x51')],{'$or':_[_0x24ca('0x40')](_0x5d3b53[_0x24ca('0x49')],function(_0x5629f6){var _0x28b27a={};_0x28b27a[_0x5629f6]={'$like':'%'+_0x12588e[_0x24ca('0x45')]['filter']+'%'};return _0x28b27a;})});}_0x5d3b53=_['merge']({},_0x5d3b53,_0x12588e[_0x24ca('0x53')]);return db[_0x24ca('0x6d')]['count']({'where':_0x5d3b53[_0x24ca('0x51')]})[_0x24ca('0x21')](function(_0x42d053){_0x437c7d[_0x24ca('0x31')]=_0x42d053;if(_0x12588e['query']['includeAll']){_0x5d3b53[_0x24ca('0x56')]=[{'all':!![]}];}return db[_0x24ca('0x6d')][_0x24ca('0x57')](_0x5d3b53);})[_0x24ca('0x21')](function(_0x49e757){_0x437c7d['rows']=_0x49e757;return _0x437c7d;});}})[_0x24ca('0x21')](respondWithFilteredResult(_0xa2db14,_0x5d3b53))[_0x24ca('0x5c')](handleError(_0xa2db14,null));};exports[_0x24ca('0x6f')]=function(_0x226f92,_0x4f8bc7,_0x5435e9){return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x226f92[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x4f8bc7,null))['then'](function(_0x10f3b4){if(_0x10f3b4){return _0x10f3b4[_0x24ca('0x6f')](_0x226f92[_0x24ca('0x45')]['ids']);}})[_0x24ca('0x21')](respondWithStatusCode(_0x4f8bc7,null))[_0x24ca('0x5c')](handleError(_0x4f8bc7,null));};exports[_0x24ca('0x70')]=function(_0x4299e8,_0x66f001,_0x3b7498){return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x4299e8['params']['id']}})['then'](handleEntityNotFound(_0x66f001,null))[_0x24ca('0x21')](function(_0x2b284a){if(_0x2b284a){return _0x2b284a[_0x24ca('0x70')](_0x4299e8[_0x24ca('0x5e')][_0x24ca('0x6b')],_[_0x24ca('0x71')](_0x4299e8['body'],[_0x24ca('0x6b'),'id'])||{})['spread'](function(_0x4db4c6){for(var _0x1dbd2d=0x0;_0x1dbd2d<_0x4299e8[_0x24ca('0x5e')][_0x24ca('0x6b')][_0x24ca('0x4b')];_0x1dbd2d+=0x1){socket['emit'](_0x24ca('0x72'),{'UserId':Number(_0x4299e8[_0x24ca('0x5e')][_0x24ca('0x6b')][_0x1dbd2d]),'WhatsappAccountId':Number(_0x4299e8[_0x24ca('0x59')]['id'])});}return _0x4db4c6;});}})[_0x24ca('0x21')](respondWithResult(_0x66f001,null))['catch'](handleError(_0x66f001,null));};exports[_0x24ca('0x73')]=function(_0x4fe6b6,_0x37a4fc,_0x1f8501){return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x4fe6b6[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x37a4fc,null))[_0x24ca('0x21')](function(_0x2128a1){if(_0x2128a1){return _0x2128a1[_0x24ca('0x73')](_0x4fe6b6[_0x24ca('0x45')]['ids'])[_0x24ca('0x21')](function(){if(_[_0x24ca('0x74')](_0x4fe6b6[_0x24ca('0x45')]['ids'])){for(var _0x3ed2dc=0x0;_0x3ed2dc<_0x4fe6b6[_0x24ca('0x45')][_0x24ca('0x6b')][_0x24ca('0x4b')];_0x3ed2dc+=0x1){socket[_0x24ca('0x75')]('userWhatsappAccount:remove',{'UserId':Number(_0x4fe6b6[_0x24ca('0x45')]['ids'][_0x3ed2dc]),'WhatsappAccountId':Number(_0x4fe6b6[_0x24ca('0x59')]['id'])});}}else{socket[_0x24ca('0x75')](_0x24ca('0x76'),{'UserId':Number(_0x4fe6b6['query'][_0x24ca('0x6b')]),'WhatsappAccountId':Number(_0x4fe6b6[_0x24ca('0x59')]['id'])});}});}})[_0x24ca('0x21')](respondWithStatusCode(_0x37a4fc,null))[_0x24ca('0x5c')](handleError(_0x37a4fc,null));};exports[_0x24ca('0x77')]=function(_0x45cf5d,_0x517924,_0x190967){var _0x2e6c02={};var _0x3a2c08={};var _0x2678c8;var _0x519143;return db[_0x24ca('0x54')][_0x24ca('0x78')]({'where':{'id':_0x45cf5d[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x517924,null))[_0x24ca('0x21')](function(_0x37c70b){if(_0x37c70b){_0x2678c8=_0x37c70b;_0x3a2c08[_0x24ca('0x44')]=_[_0x24ca('0x46')](db['User'][_0x24ca('0x41')]);_0x3a2c08[_0x24ca('0x45')]=_[_0x24ca('0x46')](_0x45cf5d[_0x24ca('0x45')]);_0x3a2c08[_0x24ca('0x47')]=_[_0x24ca('0x48')](_0x3a2c08['model'],_0x3a2c08['query']);_0x2e6c02[_0x24ca('0x49')]=_[_0x24ca('0x48')](_0x3a2c08[_0x24ca('0x44')],qs[_0x24ca('0x4a')](_0x45cf5d[_0x24ca('0x45')]['fields']));_0x2e6c02['attributes']=_0x2e6c02['attributes']['length']?_0x2e6c02[_0x24ca('0x49')]:_0x3a2c08[_0x24ca('0x44')];_0x2e6c02[_0x24ca('0x4d')]=qs[_0x24ca('0x4e')](_0x45cf5d['query']['sort']);_0x2e6c02[_0x24ca('0x51')]=qs[_0x24ca('0x47')](_['pick'](_0x45cf5d[_0x24ca('0x45')],_0x3a2c08[_0x24ca('0x47')]));if(_0x45cf5d[_0x24ca('0x45')][_0x24ca('0x50')]){_0x2e6c02[_0x24ca('0x51')]=_[_0x24ca('0x52')](_0x2e6c02[_0x24ca('0x51')],{'$or':_['map'](_0x2e6c02[_0x24ca('0x49')],function(_0x25257e){var _0x489e91={};_0x489e91[_0x25257e]={'$like':'%'+_0x45cf5d['query']['filter']+'%'};return _0x489e91;})});}_0x2e6c02=_[_0x24ca('0x52')]({},_0x2e6c02,_0x45cf5d[_0x24ca('0x53')]);return _0x2678c8[_0x24ca('0x77')](_0x2e6c02);}})['then'](function(_0x538963){if(_0x538963){_0x519143=_0x538963[_0x24ca('0x4b')];if(!_0x45cf5d[_0x24ca('0x45')]['hasOwnProperty']('nolimit')){_0x2e6c02[_0x24ca('0x2f')]=qs['limit'](_0x45cf5d['query'][_0x24ca('0x2f')]);_0x2e6c02[_0x24ca('0x30')]=qs['offset'](_0x45cf5d[_0x24ca('0x45')]['offset']);}return _0x2678c8[_0x24ca('0x77')](_0x2e6c02);}})[_0x24ca('0x21')](function(_0x25b890){if(_0x25b890){return _0x25b890?{'count':_0x519143,'rows':_0x25b890}:null;}})[_0x24ca('0x21')](respondWithResult(_0x517924,null))['catch'](handleError(_0x517924,null));};exports[_0x24ca('0x79')]=function(_0x159f1b,_0x42772e,_0x1b2bac){return db[_0x24ca('0x54')][_0x24ca('0x78')]({'where':{'id':_0x159f1b[_0x24ca('0x59')]['id']}})[_0x24ca('0x21')](handleEntityNotFound(_0x42772e,null))[_0x24ca('0x21')](function(_0x2a05cd){if(_0x2a05cd){return db[_0x24ca('0x7a')][_0x24ca('0x7b')](function(_0x4836d6){return db[_0x24ca('0x7c')][_0x24ca('0x3a')]({'where':{'WhatsappAccountId':_0x159f1b[_0x24ca('0x59')]['id']},'transaction':_0x4836d6})[_0x24ca('0x21')](function(_0x258a52){var _0x502cab=_['map'](_0x159f1b['body'],function(_0xbd8ae2){_0xbd8ae2[_0x24ca('0x67')]=_0x159f1b[_0x24ca('0x59')]['id'];return _0xbd8ae2;});return db['WhatsappApplication'][_0x24ca('0x7d')](_0x502cab,{'transaction':_0x4836d6});});})[_0x24ca('0x21')](function(){return db[_0x24ca('0x7c')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x159f1b[_0x24ca('0x59')]['id']},'order':_0x24ca('0x7e')});});}})[_0x24ca('0x21')](respondWithResult(_0x42772e,null))['catch'](handleError(_0x42772e,null));};exports[_0x24ca('0x7f')]=function(_0x7ed17a,_0x586a0e,_0x2049e0){var _0x59fa2d={};var _0x2fb2ef={};var _0x11e51d;var _0x1b406e;return db['WhatsappAccount'][_0x24ca('0x78')]({'where':{'id':_0x7ed17a[_0x24ca('0x59')]['id']}})['then'](handleEntityNotFound(_0x586a0e,null))[_0x24ca('0x21')](function(_0x2cc789){if(_0x2cc789){_0x11e51d=_0x2cc789;_0x2fb2ef[_0x24ca('0x44')]=_[_0x24ca('0x46')](db['WhatsappApplication'][_0x24ca('0x41')]);_0x2fb2ef[_0x24ca('0x45')]=_[_0x24ca('0x46')](_0x7ed17a[_0x24ca('0x45')]);_0x2fb2ef[_0x24ca('0x47')]=_[_0x24ca('0x48')](_0x2fb2ef[_0x24ca('0x44')],_0x2fb2ef[_0x24ca('0x45')]);_0x59fa2d[_0x24ca('0x49')]=_[_0x24ca('0x48')](_0x2fb2ef['model'],qs[_0x24ca('0x4a')](_0x7ed17a['query'][_0x24ca('0x4a')]));_0x59fa2d['attributes']=_0x59fa2d['attributes']['length']?_0x59fa2d[_0x24ca('0x49')]:_0x2fb2ef[_0x24ca('0x44')];_0x59fa2d[_0x24ca('0x4d')]=qs[_0x24ca('0x4e')](_0x7ed17a[_0x24ca('0x45')][_0x24ca('0x4e')]);_0x59fa2d['where']=qs[_0x24ca('0x47')](_[_0x24ca('0x4f')](_0x7ed17a[_0x24ca('0x45')],_0x2fb2ef['filters']));if(_0x7ed17a[_0x24ca('0x45')][_0x24ca('0x50')]){_0x59fa2d[_0x24ca('0x51')]=_['merge'](_0x59fa2d[_0x24ca('0x51')],{'$or':_[_0x24ca('0x40')](_0x59fa2d[_0x24ca('0x49')],function(_0x1c30ed){var _0x915133={};_0x915133[_0x1c30ed]={'$like':'%'+_0x7ed17a[_0x24ca('0x45')][_0x24ca('0x50')]+'%'};return _0x915133;})});}_0x59fa2d=_[_0x24ca('0x52')]({},_0x59fa2d,_0x7ed17a[_0x24ca('0x53')]);return _0x11e51d[_0x24ca('0x7f')](_0x59fa2d);}})[_0x24ca('0x21')](function(_0x3c2bc5){if(_0x3c2bc5){_0x1b406e=_0x3c2bc5['length'];if(!_0x7ed17a['query'][_0x24ca('0x4c')](_0x24ca('0x69'))){_0x59fa2d[_0x24ca('0x2f')]=qs[_0x24ca('0x2f')](_0x7ed17a[_0x24ca('0x45')][_0x24ca('0x2f')]);_0x59fa2d['offset']=qs[_0x24ca('0x30')](_0x7ed17a[_0x24ca('0x45')][_0x24ca('0x30')]);}return _0x11e51d[_0x24ca('0x7f')](_0x59fa2d);}})[_0x24ca('0x21')](function(_0x2b72f9){if(_0x2b72f9){return _0x2b72f9?{'count':_0x1b406e,'rows':_0x2b72f9}:null;}})[_0x24ca('0x21')](respondWithResult(_0x586a0e,null))[_0x24ca('0x5c')](handleError(_0x586a0e,null));};exports[_0x24ca('0x80')]=function(_0x9aa029,_0x151dd1,_0x2c1f7e){var _0x468804={'channel':_0x24ca('0x81')};var _0x109b1e=[];var _0x4a4dc6=[];var _0x33b2bb={};return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x9aa029[_0x24ca('0x59')]['id']},'include':[{'model':db['WhatsappApplication'],'as':'Applications'}]})[_0x24ca('0x21')](handleEntityNotFound(_0x151dd1,null))[_0x24ca('0x21')](function(_0x27f827){_0x468804[_0x24ca('0x82')]=_0x27f827;_0x468804[_0x24ca('0x83')]=_[_0x24ca('0x84')](_0x27f827[_0x24ca('0x85')],['priority'],[_0x24ca('0x86')]);if(_0x468804[_0x24ca('0x82')][_0x24ca('0x85')]){delete _0x468804[_0x24ca('0x82')]['Applications'];}return db['CmContact']['describe']();})[_0x24ca('0x21')](function(_0x345b5a){if(!_0x345b5a){throw new db['Sequelize'][(_0x24ca('0x87'))]('no\x20available\x20attributes');}_0x109b1e=_[_0x24ca('0x88')](_[_0x24ca('0x46')](_0x345b5a),[_0x24ca('0x89'),_0x24ca('0x8a')]);_0x4a4dc6=_[_0x24ca('0x88')](_[_0x24ca('0x46')](_0x345b5a),[_0x24ca('0x89'),_0x24ca('0x8a'),_0x24ca('0x8b'),_0x24ca('0x8c')]);_0x468804[_0x24ca('0x5e')]={'mapKey':_0x24ca('0x8d')};if(_0x468804['account'][_0x24ca('0x43')]&&_0x468804[_0x24ca('0x82')][_0x24ca('0x43')]===_0x24ca('0x8e')){_0x468804['body']['from']=_0x9aa029[_0x24ca('0x5e')][_0x24ca('0x8f')][_0x24ca('0x90')](_0x24ca('0x91'),'');_0x468804['body'][_0x24ca('0x5e')]=_0x9aa029['body']['Body'];_0x468804[_0x24ca('0x5e')][_0x24ca('0x92')]=_0x9aa029[_0x24ca('0x5e')]['MessageSid'];}if(_0x468804[_0x24ca('0x5e')]['id']){delete _0x468804['body']['id'];}if(_[_0x24ca('0x93')](_0x468804[_0x24ca('0x5e')][_0x24ca('0x94')])){throw new db[(_0x24ca('0x95'))][(_0x24ca('0x87'))](_0x24ca('0x96'));}if(_['isNil'](_0x468804[_0x24ca('0x5e')][_0x24ca('0x5e')])||_0x468804[_0x24ca('0x5e')][_0x24ca('0x5e')]===''){throw new db['Sequelize'][(_0x24ca('0x87'))](_0x24ca('0x97'));}if(_[_0x24ca('0x93')](_0x468804['body'][_0x24ca('0x98')])){throw new db[(_0x24ca('0x95'))][(_0x24ca('0x87'))](_0x24ca('0x99')+_0x4a4dc6);}if(!_[_0x24ca('0x9a')](_0x4a4dc6,_0x468804[_0x24ca('0x5e')][_0x24ca('0x98')])){throw new db['Sequelize'][(_0x24ca('0x87'))](_0x24ca('0x9b')+_0x4a4dc6);}_0x33b2bb[_0x468804[_0x24ca('0x5e')]['mapKey']]=_0x468804[_0x24ca('0x5e')]['from'];return db['CmList'][_0x24ca('0x5b')]({'where':{'id':_0x468804['account'][_0x24ca('0x8c')]},'include':[{'model':db['CmContact'],'as':_0x24ca('0x9c'),'where':_0x33b2bb,'limit':0x1,'order':[['updatedAt',_0x24ca('0x9d')]]}]});})[_0x24ca('0x21')](handleEntityNotFound(_0x151dd1,null))[_0x24ca('0x21')](function(_0x22e421){if(_0x22e421){_0x468804[_0x24ca('0x9e')]=_['omit'](_0x22e421,[_0x24ca('0x9c')]);if(_0x22e421[_0x24ca('0x9c')][_0x24ca('0x4b')]){return _0x22e421[_0x24ca('0x9c')][0x0];}var _0x2cf77a=_[_0x24ca('0x9f')](_0x468804['body'],{'firstName':_0x468804[_0x24ca('0x5e')][_0x24ca('0x94')],'ListId':_0x22e421['id']});_0x2cf77a[_0x468804[_0x24ca('0x5e')][_0x24ca('0x98')]]=_0x468804[_0x24ca('0x5e')]['from'];return db[_0x24ca('0xa0')]['create'](_0x2cf77a,{'fields':_0x109b1e,'raw':!![]});}})['then'](handleEntityNotFound(_0x151dd1,null))['then'](function(_0x1bf774){if(_0x1bf774){_0x468804[_0x24ca('0xa1')]=_0x1bf774;var _0xecc0ac={'ContactId':_0x1bf774['id'],'phone':_0x468804[_0x24ca('0x5e')][_0x24ca('0x94')],'WhatsappAccountId':_0x9aa029[_0x24ca('0x59')]['id']};var _0x4a3f5d={'ContactId':_0x1bf774['id'],'WhatsappAccountId':_0x9aa029[_0x24ca('0x59')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x24ca('0x5b')]({'where':_0x4a3f5d})[_0x24ca('0x21')](function(_0x1ddaa3){if(_0x1ddaa3){return[_0x1ddaa3,![]];}return db[_0x24ca('0xa2')][_0x24ca('0x5d')](_0xecc0ac)[_0x24ca('0x21')](function(_0x4812eb){return[_0x4812eb,!![]];});});}})[_0x24ca('0xa3')](function(_0x9ae536,_0x3170f2){_0x468804[_0x24ca('0xa4')]=_0x9ae536[_0x24ca('0x37')]({'plain':!![]});_0x468804[_0x24ca('0xa4')]['created']=![];if(_0x3170f2){if(_0x468804[_0x24ca('0x82')][_0x24ca('0xa5')]){_0x468804[_0x24ca('0x83')][_0x24ca('0xa6')]({'id':0x0,'priority':_0x468804[_0x24ca('0x83')][_0x24ca('0x4b')]+0x1,'app':_0x24ca('0xa7'),'appdata':_0x24ca('0xa8'),'interval':_0x24ca('0xa9')});}_0x468804[_0x24ca('0xa4')]['created']=!![];}return db[_0x24ca('0xaa')]['create']({'phone':_0x468804[_0x24ca('0x5e')][_0x24ca('0x94')],'messageId':_0x468804[_0x24ca('0x5e')][_0x24ca('0x92')],'body':_0x468804['body'][_0x24ca('0x5e')],'WhatsappAccountId':_0x9aa029[_0x24ca('0x59')]['id'],'WhatsappInteractionId':_0x9ae536['id'],'direction':'in','ContactId':_0x9ae536[_0x24ca('0xab')],'AttachmentId':_0x468804[_0x24ca('0x5e')][_0x24ca('0xac')]});})['then'](function(_0x492072){_0x468804[_0x24ca('0x2a')]=_0x492072;if(_0x468804['interaction'][_0x24ca('0xad')]){return db[_0x24ca('0xae')]['find']({'attributes':['id','name'],'where':{'id':_0x468804[_0x24ca('0xa4')]['UserId']}})['then'](function(_0x498a78){if(_0x498a78){_0x468804[_0x24ca('0x83')][_0x24ca('0xaf')]({'id':0x0,'priority':0x0,'app':_0x24ca('0xb0'),'appdata':_0x498a78['name']+','+(_0x468804['account']['waitForTheAssignedAgent']||0xa),'interval':_0x24ca('0xa9')});}return respondWithRpcPromise(_0x24ca('0xb1'),_0x24ca('0xb2'),_0x468804);});}return respondWithRpcPromise(_0x24ca('0xb1'),_0x24ca('0xb2'),_0x468804);})[_0x24ca('0x21')](function(_0x330552){if(_0x330552){var _0x4dd33a=0xc8;var _0x1ebbdf=_0x24ca('0xb3');logger[_0x24ca('0x22')](_0x24ca('0x26'),_0x1ebbdf,_0x4dd33a,_0x24ca('0xb4'));logger[_0x24ca('0x25')](_0x24ca('0xb5'),_0x1ebbdf,_0x4dd33a,_0x24ca('0xb4'),JSON[_0x24ca('0x27')](_0x330552));if(_0x468804[_0x24ca('0x82')]['type']===_0x24ca('0x8e')){return _0x151dd1[_0x24ca('0x2b')](_0x4dd33a)[_0x24ca('0x32')](_0x24ca('0xb6'),_0x24ca('0xb7'))[_0x24ca('0x3d')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x151dd1[_0x24ca('0x2b')](_0x4dd33a)['json'](_0x330552);}}})[_0x24ca('0x5c')](handleError(_0x151dd1,null));};exports[_0x24ca('0x3d')]=function(_0x412445,_0x4e0344,_0x9a39f0){var _0x53d8f5,_0x1a6bf7,_0x39e466;if(_[_0x24ca('0x93')](_0x412445['body'][_0x24ca('0x5e')])||_0x412445[_0x24ca('0x5e')]['body']===''){throw new db[(_0x24ca('0x95'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x24ca('0x93')](_0x412445[_0x24ca('0x5e')]['to'])){throw new db[(_0x24ca('0x95'))][(_0x24ca('0x87'))](_0x24ca('0xb8'));}_0x53d8f5=_0x412445[_0x24ca('0x5e')]['to'];return db[_0x24ca('0x54')][_0x24ca('0x5b')]({'where':{'id':_0x412445[_0x24ca('0x59')]['id']},'include':[{'model':db[_0x24ca('0xb9')],'as':'List','include':[{'model':db[_0x24ca('0xa0')],'as':_0x24ca('0x9c'),'where':{'mobile':_0x53d8f5},'limit':0x1,'order':[[_0x24ca('0x8a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x4e0344,null))[_0x24ca('0x21')](function(_0x43f35b){if(_0x43f35b&&_0x43f35b[_0x24ca('0xba')]){_0x1a6bf7=_0x43f35b[_0x24ca('0x37')]({'plain':!![]});if(_0x1a6bf7['List']&&_0x1a6bf7[_0x24ca('0xba')]['Contacts'][_0x24ca('0x4b')]){return _0x1a6bf7[_0x24ca('0xba')][_0x24ca('0x9c')][0x0];}return db[_0x24ca('0xa0')]['create'](_[_0x24ca('0x9f')](_0x412445[_0x24ca('0x5e')],{'firstName':_0x53d8f5,'mobile':_0x53d8f5,'phone':_0x53d8f5,'ListId':_0x1a6bf7['ListId']}));}})[_0x24ca('0x21')](handleEntityNotFound(_0x4e0344,null))[_0x24ca('0x21')](function(_0x32d5f1){if(_0x32d5f1){_0x39e466=_0x32d5f1;return db[_0x24ca('0xa2')][_0x24ca('0x5b')]({'where':{'ContactId':_0x39e466['id'],'closed':![],'WhatsappAccountId':_0x1a6bf7['id']}})[_0x24ca('0x21')](function(_0x48f9fb){if(_0x48f9fb){return[_0x48f9fb,![]];}return db[_0x24ca('0xa2')][_0x24ca('0x5d')]({'UserId':_0x412445[_0x24ca('0x60')]['id'],'ContactId':_0x39e466['id'],'WhatsappAccountId':_0x1a6bf7['id'],'phone':_0x53d8f5,'firstMsgDirection':_0x24ca('0xbb'),'Messages':[_[_0x24ca('0x52')](_0x412445[_0x24ca('0x5e')],{'read':![],'body':_0x412445[_0x24ca('0x5e')][_0x24ca('0x5e')],'phone':_0x53d8f5,'WhatsappAccountId':_0x1a6bf7['id'],'UserId':_0x412445[_0x24ca('0x60')]['id'],'ContactId':_0x39e466['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':'Messages'}]})['then'](function(_0x31bf6f){return[_0x31bf6f,!![]];});});}})['spread'](function(_0x5918f8,_0x1a031a){if(_0x1a031a){return _0x5918f8;}return db[_0x24ca('0xaa')][_0x24ca('0x5d')](_['merge'](_0x412445[_0x24ca('0x5e')],{'read':![],'body':_0x412445['body'][_0x24ca('0x5e')],'phone':_0x53d8f5,'WhatsappAccountId':_0x1a6bf7['id'],'WhatsappInteractionId':_0x5918f8['id'],'UserId':_0x412445['user']['id'],'ContactId':_0x39e466['id']}))[_0x24ca('0x21')](function(_0x439c80){_0x5918f8['dataValues']['Messages']=[];_0x5918f8['dataValues'][_0x24ca('0xbc')][_0x24ca('0xa6')](_0x439c80[_0x24ca('0xbd')]);return _0x5918f8;});})[_0x24ca('0x21')](respondWithResult(_0x4e0344,null))['catch'](handleError(_0x4e0344,null));};
\ No newline at end of file
index 85ece33..4adf072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb0=['setMaxListeners','save','emit','hasOwnProperty','events','WhatsappAccount'];(function(_0x5c3f8a,_0x123701){var _0x270abd=function(_0x57e189){while(--_0x57e189){_0x5c3f8a['push'](_0x5c3f8a['shift']());}};_0x270abd(++_0x123701);}(_0x9bb0,0x142));var _0x09bb=function(_0x53f122,_0x2cdeca){_0x53f122=_0x53f122-0x0;var _0x59a134=_0x9bb0[_0x53f122];return _0x59a134;};'use strict';var EventEmitter=require(_0x09bb('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x09bb('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x09bb('0x2')](0x0);var events={'afterCreate':_0x09bb('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4fb5ec){return function(_0x38db2c,_0x35cff2,_0xaf8e72){WhatsappAccountEvents['emit'](_0x4fb5ec+':'+_0x38db2c['id'],_0x38db2c);WhatsappAccountEvents[_0x09bb('0x4')](_0x4fb5ec,_0x38db2c);_0xaf8e72(null);};}for(var e in events){if(events[_0x09bb('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x6528=['WhatsappAccount','setMaxListeners','save','update','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x38a140,_0x484518){var _0x1292a0=function(_0x3772cd){while(--_0x3772cd){_0x38a140['push'](_0x38a140['shift']());}};_0x1292a0(++_0x484518);}(_0x6528,0x1ae));var _0x8652=function(_0x1cc75f,_0x8bf7aa){_0x1cc75f=_0x1cc75f-0x0;var _0x3440c6=_0x6528[_0x1cc75f];return _0x3440c6;};'use strict';var EventEmitter=require(_0x8652('0x0'));var WhatsappAccount=require(_0x8652('0x1'))['db'][_0x8652('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x8652('0x3')](0x0);var events={'afterCreate':_0x8652('0x4'),'afterUpdate':_0x8652('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3f56f1){return function(_0x5ec9b3,_0x1669cc,_0x591cee){WhatsappAccountEvents[_0x8652('0x6')](_0x3f56f1+':'+_0x5ec9b3['id'],_0x5ec9b3);WhatsappAccountEvents[_0x8652('0x6')](_0x3f56f1,_0x5ec9b3);_0x591cee(null);};}for(var e in events){if(events[_0x8652('0x7')](e)){var event=events[e];WhatsappAccount[_0x8652('0x8')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 034a99d..22e43cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80cd=['request-promise','rimraf','../../config/environment','./whatsappAccount.attributes','exports','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x53aa71,_0x7486b4){var _0x54a88f=function(_0x372d96){while(--_0x372d96){_0x53aa71['push'](_0x53aa71['shift']());}};_0x54a88f(++_0x7486b4);}(_0x80cd,0x13e));var _0xd80c=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x80cd[_0x29b609];return _0x54c952;};'use strict';var _=require(_0xd80c('0x0'));var util=require(_0xd80c('0x1'));var logger=require(_0xd80c('0x2'))(_0xd80c('0x3'));var moment=require(_0xd80c('0x4'));var BPromise=require(_0xd80c('0x5'));var rp=require(_0xd80c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd80c('0x7'));var config=require(_0xd80c('0x8'));var attributes=require(_0xd80c('0x9'));module[_0xd80c('0xa')]=function(_0x1aa459,_0x2fe750){return _0x1aa459['define']('WhatsappAccount',attributes,{'tableName':_0xd80c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc56b=['path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','WhatsappAccount','whatsapp_accounts','lodash','api','bluebird','request-promise'];(function(_0x4ee91d,_0x490814){var _0x24cfc3=function(_0x1c4c8a){while(--_0x1c4c8a){_0x4ee91d['push'](_0x4ee91d['shift']());}};_0x24cfc3(++_0x490814);}(_0xc56b,0x172));var _0xbc56=function(_0x3c8606,_0x14a18a){_0x3c8606=_0x3c8606-0x0;var _0x11da7e=_0xc56b[_0x3c8606];return _0x11da7e;};'use strict';var _=require(_0xbc56('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xbc56('0x1'));var moment=require('moment');var BPromise=require(_0xbc56('0x2'));var rp=require(_0xbc56('0x3'));var fs=require('fs');var path=require(_0xbc56('0x4'));var rimraf=require(_0xbc56('0x5'));var config=require(_0xbc56('0x6'));var attributes=require(_0xbc56('0x7'));module[_0xbc56('0x8')]=function(_0x1f9f54,_0x8712d0){return _0x1f9f54['define'](_0xbc56('0x9'),attributes,{'tableName':_0xbc56('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8fee5c0..d26ea8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd407=['model','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappAccount,\x20%s,\x20%s','ShowWhatsappAccount','options','where','attributes','include','map'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xd407,0x1de));var _0x7d40=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd407[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7d40('0x0'));var util=require(_0x7d40('0x1'));var moment=require('moment');var BPromise=require(_0x7d40('0x2'));var rs=require(_0x7d40('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7d40('0x4'))['db'];var utils=require(_0x7d40('0x5'));var logger=require(_0x7d40('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7d40('0x7'));var client=jayson[_0x7d40('0x8')][_0x7d40('0x9')]({'port':0x232a});config[_0x7d40('0xa')]=_['defaults'](config[_0x7d40('0xa')],{'host':_0x7d40('0xb'),'port':0x18eb});var socket=require(_0x7d40('0xc'))(new Redis(config[_0x7d40('0xa')]));require(_0x7d40('0xd'))[_0x7d40('0xe')](socket);function respondWithRpcPromise(_0x21be6c,_0x2d9084,_0x3a0070){return new BPromise(function(_0x533ef7,_0x546bff){return client[_0x7d40('0xf')](_0x21be6c,_0x3a0070)[_0x7d40('0x10')](function(_0xf6a64a){logger[_0x7d40('0x11')]('WhatsappAccount,\x20%s,\x20%s',_0x2d9084,_0x7d40('0x12'));logger[_0x7d40('0x13')](_0x7d40('0x14'),_0x2d9084,_0x7d40('0x12'),JSON[_0x7d40('0x15')](_0xf6a64a));if(_0xf6a64a[_0x7d40('0x16')]){if(_0xf6a64a[_0x7d40('0x16')][_0x7d40('0x17')]===0x1f4){logger[_0x7d40('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x2d9084,_0xf6a64a[_0x7d40('0x16')][_0x7d40('0x18')]);return _0x546bff(_0xf6a64a['error'][_0x7d40('0x18')]);}logger[_0x7d40('0x16')](_0x7d40('0x19'),_0x2d9084,_0xf6a64a[_0x7d40('0x16')][_0x7d40('0x18')]);return _0x533ef7(_0xf6a64a[_0x7d40('0x16')]['message']);}else{logger[_0x7d40('0x11')](_0x7d40('0x19'),_0x2d9084,'request\x20sent');_0x533ef7(_0xf6a64a['result'][_0x7d40('0x18')]);}})['catch'](function(_0x274e84){logger[_0x7d40('0x16')](_0x7d40('0x19'),_0x2d9084,_0x274e84);_0x546bff(_0x274e84);});});}exports[_0x7d40('0x1a')]=function(_0x4159ba){var _0x31eb33=this;return new Promise(function(_0x5c203d,_0x121332){return db['WhatsappAccount']['find']({'raw':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1c')]||null:null,'attributes':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1d')]||null:null,'include':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1e')]?_[_0x7d40('0x1f')](_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1e')],function(_0x1ed398){return{'model':db[_0x1ed398[_0x7d40('0x20')]],'as':_0x1ed398['as'],'attributes':_0x1ed398[_0x7d40('0x1d')],'include':_0x1ed398[_0x7d40('0x1e')]?_[_0x7d40('0x1f')](_0x1ed398[_0x7d40('0x1e')],function(_0xc15d19){return{'model':db[_0xc15d19['model']],'as':_0xc15d19['as'],'attributes':_0xc15d19[_0x7d40('0x1d')],'include':_0xc15d19[_0x7d40('0x1e')]?_[_0x7d40('0x1f')](_0xc15d19[_0x7d40('0x1e')],function(_0x4fc736){return{'model':db[_0x4fc736[_0x7d40('0x20')]],'as':_0x4fc736['as'],'attributes':_0x4fc736['attributes']};}):[]};}):[]};}):[]:[]})[_0x7d40('0x10')](function(_0xe5ea11){logger[_0x7d40('0x11')]('ShowWhatsappAccount',_0x4159ba);logger['debug'](_0x7d40('0x1a'),_0x4159ba,JSON[_0x7d40('0x15')](_0xe5ea11));_0x5c203d(_0xe5ea11);})[_0x7d40('0x21')](function(_0x29b43f){logger[_0x7d40('0x16')](_0x7d40('0x1a'),_0x29b43f[_0x7d40('0x18')],_0x4159ba);_0x121332(_0x31eb33[_0x7d40('0x16')](0x1f4,_0x29b43f[_0x7d40('0x18')]));});});};
\ No newline at end of file
+var _0xc35f=['request\x20sent','debug','stringify','error','code','message','info','result','catch','ShowWhatsappAccount','find','options','raw','where','attributes','include','map','model','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','WhatsappAccount,\x20%s,\x20%s'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc35f,0x82));var _0xfc35=function(_0x1ad1dc,_0xb99fb4){_0x1ad1dc=_0x1ad1dc-0x0;var _0x1d1e9c=_0xc35f[_0x1ad1dc];return _0x1d1e9c;};'use strict';var _=require(_0xfc35('0x0'));var util=require(_0xfc35('0x1'));var moment=require(_0xfc35('0x2'));var BPromise=require(_0xfc35('0x3'));var rs=require(_0xfc35('0x4'));var fs=require('fs');var Redis=require(_0xfc35('0x5'));var db=require(_0xfc35('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xfc35('0x7'))(_0xfc35('0x8'));var config=require(_0xfc35('0x9'));var jayson=require(_0xfc35('0xa'));var client=jayson['client'][_0xfc35('0xb')]({'port':0x232a});config[_0xfc35('0xc')]=_[_0xfc35('0xd')](config[_0xfc35('0xc')],{'host':_0xfc35('0xe'),'port':0x18eb});var socket=require(_0xfc35('0xf'))(new Redis(config['redis']));require(_0xfc35('0x10'))['register'](socket);function respondWithRpcPromise(_0x1d4b4a,_0x3a4674,_0x32650c){return new BPromise(function(_0x9045c2,_0x41ef96){return client['request'](_0x1d4b4a,_0x32650c)['then'](function(_0x2cf06f){logger['info'](_0xfc35('0x11'),_0x3a4674,_0xfc35('0x12'));logger[_0xfc35('0x13')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x3a4674,'request\x20sent',JSON[_0xfc35('0x14')](_0x2cf06f));if(_0x2cf06f['error']){if(_0x2cf06f[_0xfc35('0x15')][_0xfc35('0x16')]===0x1f4){logger[_0xfc35('0x15')]('WhatsappAccount,\x20%s,\x20%s',_0x3a4674,_0x2cf06f[_0xfc35('0x15')]['message']);return _0x41ef96(_0x2cf06f[_0xfc35('0x15')][_0xfc35('0x17')]);}logger['error'](_0xfc35('0x11'),_0x3a4674,_0x2cf06f[_0xfc35('0x15')][_0xfc35('0x17')]);return _0x9045c2(_0x2cf06f['error'][_0xfc35('0x17')]);}else{logger[_0xfc35('0x18')](_0xfc35('0x11'),_0x3a4674,_0xfc35('0x12'));_0x9045c2(_0x2cf06f[_0xfc35('0x19')][_0xfc35('0x17')]);}})[_0xfc35('0x1a')](function(_0x5361ea){logger['error'](_0xfc35('0x11'),_0x3a4674,_0x5361ea);_0x41ef96(_0x5361ea);});});}exports[_0xfc35('0x1b')]=function(_0x14a135){var _0x58ee00=this;return new Promise(function(_0x395081,_0x4e6b41){return db['WhatsappAccount'][_0xfc35('0x1c')]({'raw':_0x14a135[_0xfc35('0x1d')]?_0x14a135[_0xfc35('0x1d')][_0xfc35('0x1e')]===undefined?!![]:![]:!![],'where':_0x14a135[_0xfc35('0x1d')]?_0x14a135[_0xfc35('0x1d')][_0xfc35('0x1f')]||null:null,'attributes':_0x14a135['options']?_0x14a135['options'][_0xfc35('0x20')]||null:null,'include':_0x14a135[_0xfc35('0x1d')]?_0x14a135[_0xfc35('0x1d')][_0xfc35('0x21')]?_[_0xfc35('0x22')](_0x14a135[_0xfc35('0x1d')]['include'],function(_0x397afe){return{'model':db[_0x397afe[_0xfc35('0x23')]],'as':_0x397afe['as'],'attributes':_0x397afe[_0xfc35('0x20')],'include':_0x397afe[_0xfc35('0x21')]?_['map'](_0x397afe[_0xfc35('0x21')],function(_0x541f47){return{'model':db[_0x541f47[_0xfc35('0x23')]],'as':_0x541f47['as'],'attributes':_0x541f47[_0xfc35('0x20')],'include':_0x541f47[_0xfc35('0x21')]?_[_0xfc35('0x22')](_0x541f47[_0xfc35('0x21')],function(_0x2c73fd){return{'model':db[_0x2c73fd[_0xfc35('0x23')]],'as':_0x2c73fd['as'],'attributes':_0x2c73fd[_0xfc35('0x20')]};}):[]};}):[]};}):[]:[]})[_0xfc35('0x24')](function(_0x4cfc6b){logger['info']('ShowWhatsappAccount',_0x14a135);logger[_0xfc35('0x13')]('ShowWhatsappAccount',_0x14a135,JSON['stringify'](_0x4cfc6b));_0x395081(_0x4cfc6b);})[_0xfc35('0x1a')](function(_0x2ecf09){logger[_0xfc35('0x15')]('ShowWhatsappAccount',_0x2ecf09[_0xfc35('0x17')],_0x14a135);_0x4e6b41(_0x58ee00[_0xfc35('0x15')](0x1f4,_0x2ecf09[_0xfc35('0x17')]));});});};
\ No newline at end of file
index af72ae6..1f9eb7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a6f=['update','removeListener','register','whatsappAccount:','./whatsappAccount.events','save','remove'];(function(_0x3328b4,_0x2b28c3){var _0x573bf9=function(_0xa52d49){while(--_0xa52d49){_0x3328b4['push'](_0x3328b4['shift']());}};_0x573bf9(++_0x2b28c3);}(_0x5a6f,0x82));var _0xf5a6=function(_0x31b78d,_0x2c5f1d){_0x31b78d=_0x31b78d-0x0;var _0x518304=_0x5a6f[_0x31b78d];return _0x518304;};'use strict';var WhatsappAccountEvents=require(_0xf5a6('0x0'));var events=[_0xf5a6('0x1'),_0xf5a6('0x2'),_0xf5a6('0x3')];function createListener(_0x4f24ba,_0x2c6ac4){return function(_0x5cccfa){_0x2c6ac4['emit'](_0x4f24ba,_0x5cccfa);};}function removeListener(_0x5c684b,_0x2a11ea){return function(){WhatsappAccountEvents[_0xf5a6('0x4')](_0x5c684b,_0x2a11ea);};}exports[_0xf5a6('0x5')]=function(_0x305089){for(var _0x517956=0x0,_0x4d9207=events['length'];_0x517956<_0x4d9207;_0x517956++){var _0x45af0c=events[_0x517956];var _0x4eb07d=createListener(_0xf5a6('0x6')+_0x45af0c,_0x305089);WhatsappAccountEvents['on'](_0x45af0c,_0x4eb07d);}};
\ No newline at end of file
+var _0x6710=['save','remove','emit','removeListener','register','whatsappAccount:','./whatsappAccount.events'];(function(_0x23d234,_0x18d9e9){var _0xfb0729=function(_0x50a637){while(--_0x50a637){_0x23d234['push'](_0x23d234['shift']());}};_0xfb0729(++_0x18d9e9);}(_0x6710,0x148));var _0x0671=function(_0x2e123c,_0x11ff36){_0x2e123c=_0x2e123c-0x0;var _0xe258ff=_0x6710[_0x2e123c];return _0xe258ff;};'use strict';var WhatsappAccountEvents=require(_0x0671('0x0'));var events=[_0x0671('0x1'),_0x0671('0x2'),'update'];function createListener(_0x326254,_0x1fcb22){return function(_0x4890f6){_0x1fcb22[_0x0671('0x3')](_0x326254,_0x4890f6);};}function removeListener(_0xdeb047,_0x2b1bfd){return function(){WhatsappAccountEvents[_0x0671('0x4')](_0xdeb047,_0x2b1bfd);};}exports[_0x0671('0x5')]=function(_0x245012){for(var _0x59ee67=0x0,_0x51dd6f=events['length'];_0x59ee67<_0x51dd6f;_0x59ee67++){var _0x204277=events[_0x59ee67];var _0x48274a=createListener(_0x0671('0x6')+_0x204277,_0x245012);WhatsappAccountEvents['on'](_0x204277,_0x48274a);}};
\ No newline at end of file
index bc399b4..dba90f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3787=['put','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','index','get','/:id','isAuthenticated','show','post'];(function(_0x31ab90,_0x145a96){var _0x2d6123=function(_0x2bf73f){while(--_0x2bf73f){_0x31ab90['push'](_0x31ab90['shift']());}};_0x2d6123(++_0x145a96);}(_0x3787,0x7b));var _0x7378=function(_0x2b4e30,_0x4f9e10){_0x2b4e30=_0x2b4e30-0x0;var _0x5753c0=_0x3787[_0x2b4e30];return _0x5753c0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7378('0x0'));var timeout=require(_0x7378('0x1'));var express=require(_0x7378('0x2'));var router=express['Router']();var fs_extra=require(_0x7378('0x3'));var auth=require(_0x7378('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7378('0x5'));var controller=require(_0x7378('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7378('0x7')]);router[_0x7378('0x8')](_0x7378('0x9'),auth[_0x7378('0xa')](),controller[_0x7378('0xb')]);router[_0x7378('0xc')]('/',auth[_0x7378('0xa')](),controller['create']);router[_0x7378('0xd')]('/:id',auth[_0x7378('0xa')](),controller[_0x7378('0xe')]);router['delete']('/:id',auth[_0x7378('0xa')](),controller[_0x7378('0xf')]);module[_0x7378('0x10')]=router;
\ No newline at end of file
+var _0x4421=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post','create','put','update','delete','multer'];(function(_0xca7903,_0x31160e){var _0x9ae08a=function(_0x5b12fe){while(--_0x5b12fe){_0xca7903['push'](_0xca7903['shift']());}};_0x9ae08a(++_0x31160e);}(_0x4421,0x11f));var _0x1442=function(_0x520456,_0xe8f00c){_0x520456=_0x520456-0x0;var _0x2101ec=_0x4421[_0x520456];return _0x2101ec;};'use strict';var multer=require(_0x1442('0x0'));var util=require(_0x1442('0x1'));var path=require(_0x1442('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1442('0x3')]();var fs_extra=require(_0x1442('0x4'));var auth=require(_0x1442('0x5'));var interaction=require(_0x1442('0x6'));var config=require(_0x1442('0x7'));var controller=require('./whatsappApplication.controller');router[_0x1442('0x8')]('/',auth[_0x1442('0x9')](),controller['index']);router[_0x1442('0x8')](_0x1442('0xa'),auth[_0x1442('0x9')](),controller['show']);router[_0x1442('0xb')]('/',auth[_0x1442('0x9')](),controller[_0x1442('0xc')]);router[_0x1442('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x1442('0xe')]);router[_0x1442('0xf')](_0x1442('0xa'),auth[_0x1442('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 65af76f..08b661e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x037d=['INTEGER','STRING','TEXT','*,*,*,*','sequelize','exports'];(function(_0x231821,_0x586d8f){var _0x12ad1b=function(_0x4a96f2){while(--_0x4a96f2){_0x231821['push'](_0x231821['shift']());}};_0x12ad1b(++_0x586d8f);}(_0x037d,0x1ba));var _0xd037=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x037d[_0x2070da];return _0x4f9fe1;};'use strict';var Sequelize=require(_0xd037('0x0'));module[_0xd037('0x1')]={'priority':{'type':Sequelize[_0xd037('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd037('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xd037('0x4')]()},'description':{'type':Sequelize[_0xd037('0x3')]},'interval':{'type':Sequelize[_0xd037('0x3')],'defaultValue':_0xd037('0x5')}};
\ No newline at end of file
+var _0x985c=['exports','INTEGER','STRING','noop','*,*,*,*','sequelize'];(function(_0x1aed8c,_0x166af1){var _0x26396c=function(_0x3bf0c9){while(--_0x3bf0c9){_0x1aed8c['push'](_0x1aed8c['shift']());}};_0x26396c(++_0x166af1);}(_0x985c,0x71));var _0xc985=function(_0x4f32d2,_0x1b51c3){_0x4f32d2=_0x4f32d2-0x0;var _0x5a08e6=_0x985c[_0x4f32d2];return _0x5a08e6;};'use strict';var Sequelize=require(_0xc985('0x0'));module[_0xc985('0x1')]={'priority':{'type':Sequelize[_0xc985('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc985('0x3')],'allowNull':![],'defaultValue':_0xc985('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xc985('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xc985('0x5')}};
\ No newline at end of file
index f46f65d..c47ff14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77c=['create','body','destroy','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','rows','catch','show','WhatsappApplication','find'];(function(_0x5e9817,_0xa29439){var _0x25b437=function(_0x46851b){while(--_0x46851b){_0x5e9817['push'](_0x5e9817['shift']());}};_0x25b437(++_0xa29439);}(_0xe77c,0x176));var _0xce77=function(_0x234ab7,_0x4e8666){_0x234ab7=_0x234ab7-0x0;var _0x1093ff=_0xe77c[_0x234ab7];return _0x1093ff;};'use strict';var emlformat=require(_0xce77('0x0'));var rimraf=require(_0xce77('0x1'));var zipdir=require(_0xce77('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xce77('0x3'));var moment=require(_0xce77('0x4'));var BPromise=require(_0xce77('0x5'));var Mustache=require(_0xce77('0x6'));var util=require(_0xce77('0x7'));var path=require(_0xce77('0x8'));var sox=require(_0xce77('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce77('0xa'));var _=require('lodash');var squel=require(_0xce77('0xb'));var crypto=require(_0xce77('0xc'));var jsforce=require(_0xce77('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xce77('0xe'));var querystring=require(_0xce77('0xf'));var Papa=require(_0xce77('0x10'));var Redis=require(_0xce77('0x11'));var authService=require(_0xce77('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xce77('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xce77('0x14'))(_0xce77('0x15'));var utils=require(_0xce77('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xce77('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x564d7f,_0x4a8b8e){_0x4a8b8e=_0x4a8b8e||0xcc;return function(_0x5e1cdb){if(_0x5e1cdb){return _0x564d7f[_0xce77('0x18')](_0x4a8b8e);}return _0x564d7f['status'](_0x4a8b8e)[_0xce77('0x19')]();};}function respondWithResult(_0x1da355,_0x3040d5){_0x3040d5=_0x3040d5||0xc8;return function(_0x1e964f){if(_0x1e964f){return _0x1da355[_0xce77('0x1a')](_0x3040d5)[_0xce77('0x1b')](_0x1e964f);}};}function respondWithFilteredResult(_0x49418a,_0x3bcc4e){return function(_0x5b97e8){if(_0x5b97e8){var _0x3ea788=typeof _0x3bcc4e[_0xce77('0x1c')]===_0xce77('0x1d')&&typeof _0x3bcc4e['limit']===_0xce77('0x1d');var _0x78db73=_0x5b97e8[_0xce77('0x1e')];var _0x1caf50=_0x3ea788?0x0:_0x3bcc4e[_0xce77('0x1c')];var _0x4ddd2c=_0x3ea788?_0x5b97e8[_0xce77('0x1e')]:_0x3bcc4e['offset']+_0x3bcc4e[_0xce77('0x1f')];var _0x3f9beb;if(_0x4ddd2c>=_0x78db73){_0x4ddd2c=_0x78db73;_0x3f9beb=0xc8;}else{_0x3f9beb=0xce;}_0x49418a[_0xce77('0x1a')](_0x3f9beb);return _0x49418a[_0xce77('0x20')]('Content-Range',_0x1caf50+'-'+_0x4ddd2c+'/'+_0x78db73)[_0xce77('0x1b')](_0x5b97e8);}return null;};}function patchUpdates(_0x3dc264){return function(_0x174240){try{jsonpatch[_0xce77('0x21')](_0x174240,_0x3dc264,!![]);}catch(_0x5378f3){return BPromise[_0xce77('0x22')](_0x5378f3);}return _0x174240['save']();};}function saveUpdates(_0x18da30,_0x42802a){return function(_0x490ce3){if(_0x490ce3){return _0x490ce3[_0xce77('0x23')](_0x18da30)[_0xce77('0x24')](function(_0x541e2e){return _0x541e2e;});}return null;};}function removeEntity(_0x3319d1,_0x261a11){return function(_0x3ffd4a){if(_0x3ffd4a){return _0x3ffd4a['destroy']()['then'](function(){_0x3319d1[_0xce77('0x1a')](0xcc)[_0xce77('0x19')]();});}};}function handleEntityNotFound(_0x223511,_0x14f4b8){return function(_0x580994){if(!_0x580994){_0x223511['sendStatus'](0x194);}return _0x580994;};}function handleError(_0x471b79,_0x3b6a61){_0x3b6a61=_0x3b6a61||0x1f4;return function(_0xa9b7cf){logger[_0xce77('0x25')](_0xa9b7cf[_0xce77('0x26')]);if(_0xa9b7cf[_0xce77('0x27')]){delete _0xa9b7cf[_0xce77('0x27')];}_0x471b79['status'](_0x3b6a61)[_0xce77('0x28')](_0xa9b7cf);};}exports[_0xce77('0x29')]=function(_0x379489,_0x231aac){var _0x4d0466={},_0x3e4a40={},_0x19fddb={'count':0x0,'rows':[]};var _0x3d4199=_[_0xce77('0x2a')](db['WhatsappApplication'][_0xce77('0x2b')],function(_0x11ac42){return{'name':_0x11ac42[_0xce77('0x2c')],'type':_0x11ac42[_0xce77('0x2d')][_0xce77('0x2e')]};});_0x3e4a40[_0xce77('0x2f')]=_['map'](_0x3d4199,_0xce77('0x27'));_0x3e4a40['query']=_[_0xce77('0x30')](_0x379489[_0xce77('0x31')]);_0x3e4a40['filters']=_[_0xce77('0x32')](_0x3e4a40[_0xce77('0x2f')],_0x3e4a40['query']);_0x4d0466['attributes']=_['intersection'](_0x3e4a40[_0xce77('0x2f')],qs['fields'](_0x379489[_0xce77('0x31')][_0xce77('0x33')]));_0x4d0466[_0xce77('0x34')]=_0x4d0466[_0xce77('0x34')]['length']?_0x4d0466[_0xce77('0x34')]:_0x3e4a40[_0xce77('0x2f')];if(!_0x379489[_0xce77('0x31')][_0xce77('0x35')](_0xce77('0x36'))){_0x4d0466[_0xce77('0x1f')]=qs['limit'](_0x379489[_0xce77('0x31')]['limit']);_0x4d0466[_0xce77('0x1c')]=qs[_0xce77('0x1c')](_0x379489[_0xce77('0x31')][_0xce77('0x1c')]);}_0x4d0466[_0xce77('0x37')]=qs[_0xce77('0x38')](_0x379489[_0xce77('0x31')][_0xce77('0x38')]);_0x4d0466[_0xce77('0x39')]=qs[_0xce77('0x3a')](_[_0xce77('0x3b')](_0x379489[_0xce77('0x31')],_0x3e4a40['filters']),_0x3d4199);if(_0x379489[_0xce77('0x31')][_0xce77('0x3c')]){_0x4d0466['where']=_[_0xce77('0x3d')](_0x4d0466[_0xce77('0x39')],{'$or':_[_0xce77('0x2a')](_0x3d4199,function(_0xca923b){if(_0xca923b[_0xce77('0x2d')]!=='VIRTUAL'){var _0x5cd587={};_0x5cd587[_0xca923b[_0xce77('0x27')]]={'$like':'%'+_0x379489[_0xce77('0x31')][_0xce77('0x3c')]+'%'};return _0x5cd587;}})});}_0x4d0466=_[_0xce77('0x3d')]({},_0x4d0466,_0x379489['options']);var _0x183c85={'where':_0x4d0466['where']};return db['WhatsappApplication'][_0xce77('0x1e')](_0x183c85)[_0xce77('0x24')](function(_0x59fcc1){_0x19fddb['count']=_0x59fcc1;if(_0x379489[_0xce77('0x31')][_0xce77('0x3e')]){_0x4d0466[_0xce77('0x3f')]=[{'all':!![]}];}return db['WhatsappApplication'][_0xce77('0x40')](_0x4d0466);})[_0xce77('0x24')](function(_0x4b5ca1){_0x19fddb[_0xce77('0x41')]=_0x4b5ca1;return _0x19fddb;})['then'](respondWithFilteredResult(_0x231aac,_0x4d0466))[_0xce77('0x42')](handleError(_0x231aac,null));};exports[_0xce77('0x43')]=function(_0x4ed1d4,_0x4c3c09){var _0x49104d={'raw':!![],'where':{'id':_0x4ed1d4['params']['id']}},_0x17511a={};_0x17511a[_0xce77('0x2f')]=_[_0xce77('0x30')](db[_0xce77('0x44')][_0xce77('0x2b')]);_0x17511a['query']=_['keys'](_0x4ed1d4[_0xce77('0x31')]);_0x17511a['filters']=_[_0xce77('0x32')](_0x17511a[_0xce77('0x2f')],_0x17511a[_0xce77('0x31')]);_0x49104d['attributes']=_[_0xce77('0x32')](_0x17511a[_0xce77('0x2f')],qs[_0xce77('0x33')](_0x4ed1d4[_0xce77('0x31')][_0xce77('0x33')]));_0x49104d[_0xce77('0x34')]=_0x49104d[_0xce77('0x34')]['length']?_0x49104d[_0xce77('0x34')]:_0x17511a[_0xce77('0x2f')];if(_0x4ed1d4['query']['includeAll']){_0x49104d[_0xce77('0x3f')]=[{'all':!![]}];}_0x49104d=_[_0xce77('0x3d')]({},_0x49104d,_0x4ed1d4['options']);return db[_0xce77('0x44')][_0xce77('0x45')](_0x49104d)[_0xce77('0x24')](handleEntityNotFound(_0x4c3c09,null))[_0xce77('0x24')](respondWithResult(_0x4c3c09,null))['catch'](handleError(_0x4c3c09,null));};exports['create']=function(_0x3181b8,_0x3fc209){return db['WhatsappApplication'][_0xce77('0x46')](_0x3181b8[_0xce77('0x47')],{})[_0xce77('0x24')](respondWithResult(_0x3fc209,0xc9))[_0xce77('0x42')](handleError(_0x3fc209,null));};exports['update']=function(_0x3c313b,_0x3ae3b8){if(_0x3c313b[_0xce77('0x47')]['id']){delete _0x3c313b[_0xce77('0x47')]['id'];}return db[_0xce77('0x44')]['find']({'where':{'id':_0x3c313b['params']['id']}})['then'](handleEntityNotFound(_0x3ae3b8,null))[_0xce77('0x24')](saveUpdates(_0x3c313b['body'],null))[_0xce77('0x24')](respondWithResult(_0x3ae3b8,null))[_0xce77('0x42')](handleError(_0x3ae3b8,null));};exports[_0xce77('0x48')]=function(_0x2a6097,_0x5d6048){return db[_0xce77('0x44')][_0xce77('0x45')]({'where':{'id':_0x2a6097[_0xce77('0x49')]['id']}})[_0xce77('0x24')](handleEntityNotFound(_0x5d6048,null))[_0xce77('0x24')](removeEntity(_0x5d6048,null))['catch'](handleError(_0x5d6048,null));};
\ No newline at end of file
+var _0x7f59=['fields','length','attributes','nolimit','limit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','show','intersection','find','catch','create','body','update','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','count','set','apply','reject','save','then','destroy','end','sendStatus','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters'];(function(_0x2eb785,_0x4c73e4){var _0x450b49=function(_0x3af49d){while(--_0x3af49d){_0x2eb785['push'](_0x2eb785['shift']());}};_0x450b49(++_0x4c73e4);}(_0x7f59,0x12e));var _0x97f5=function(_0x25cdcf,_0x2a63d1){_0x25cdcf=_0x25cdcf-0x0;var _0x160df0=_0x7f59[_0x25cdcf];return _0x160df0;};'use strict';var emlformat=require(_0x97f5('0x0'));var rimraf=require(_0x97f5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x97f5('0x2'));var rp=require(_0x97f5('0x3'));var moment=require(_0x97f5('0x4'));var BPromise=require(_0x97f5('0x5'));var Mustache=require(_0x97f5('0x6'));var util=require(_0x97f5('0x7'));var path=require(_0x97f5('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(_0x97f5('0x9'));var squel=require(_0x97f5('0xa'));var crypto=require(_0x97f5('0xb'));var jsforce=require(_0x97f5('0xc'));var deskjs=require(_0x97f5('0xd'));var toCsv=require(_0x97f5('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x97f5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x97f5('0x10'));var hardwareService=require(_0x97f5('0x11'));var logger=require('../../config/logger')(_0x97f5('0x12'));var utils=require(_0x97f5('0x13'));var config=require(_0x97f5('0x14'));var licenseUtil=require(_0x97f5('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e9348,_0x51ecf0){_0x51ecf0=_0x51ecf0||0xcc;return function(_0x52e270){if(_0x52e270){return _0x3e9348['sendStatus'](_0x51ecf0);}return _0x3e9348[_0x97f5('0x16')](_0x51ecf0)['end']();};}function respondWithResult(_0x2bb71d,_0x50c051){_0x50c051=_0x50c051||0xc8;return function(_0x40d970){if(_0x40d970){return _0x2bb71d[_0x97f5('0x16')](_0x50c051)[_0x97f5('0x17')](_0x40d970);}};}function respondWithFilteredResult(_0x2d7365,_0x149f5c){return function(_0x22b60c){if(_0x22b60c){var _0x4324e7=typeof _0x149f5c[_0x97f5('0x18')]==='undefined'&&typeof _0x149f5c['limit']===_0x97f5('0x19');var _0xb5cd54=_0x22b60c['count'];var _0x197be7=_0x4324e7?0x0:_0x149f5c[_0x97f5('0x18')];var _0x26caac=_0x4324e7?_0x22b60c[_0x97f5('0x1a')]:_0x149f5c[_0x97f5('0x18')]+_0x149f5c['limit'];var _0x2b4735;if(_0x26caac>=_0xb5cd54){_0x26caac=_0xb5cd54;_0x2b4735=0xc8;}else{_0x2b4735=0xce;}_0x2d7365[_0x97f5('0x16')](_0x2b4735);return _0x2d7365[_0x97f5('0x1b')]('Content-Range',_0x197be7+'-'+_0x26caac+'/'+_0xb5cd54)['json'](_0x22b60c);}return null;};}function patchUpdates(_0x43b957){return function(_0x52f92f){try{jsonpatch[_0x97f5('0x1c')](_0x52f92f,_0x43b957,!![]);}catch(_0x266703){return BPromise[_0x97f5('0x1d')](_0x266703);}return _0x52f92f[_0x97f5('0x1e')]();};}function saveUpdates(_0x47a1f1,_0x15201f){return function(_0xf7e42b){if(_0xf7e42b){return _0xf7e42b['update'](_0x47a1f1)[_0x97f5('0x1f')](function(_0x55697d){return _0x55697d;});}return null;};}function removeEntity(_0x3e7dcc,_0x57281e){return function(_0x297627){if(_0x297627){return _0x297627[_0x97f5('0x20')]()[_0x97f5('0x1f')](function(){_0x3e7dcc['status'](0xcc)[_0x97f5('0x21')]();});}};}function handleEntityNotFound(_0xefef9a,_0x1943c9){return function(_0x1eafce){if(!_0x1eafce){_0xefef9a[_0x97f5('0x22')](0x194);}return _0x1eafce;};}function handleError(_0x64284,_0x658a4c){_0x658a4c=_0x658a4c||0x1f4;return function(_0x284265){logger['error'](_0x284265['stack']);if(_0x284265[_0x97f5('0x23')]){delete _0x284265['name'];}_0x64284[_0x97f5('0x16')](_0x658a4c)[_0x97f5('0x24')](_0x284265);};}exports[_0x97f5('0x25')]=function(_0x1d758d,_0x33fa2d){var _0x561398={},_0x48e1e5={},_0x62e957={'count':0x0,'rows':[]};var _0x49bf8b=_[_0x97f5('0x26')](db[_0x97f5('0x27')][_0x97f5('0x28')],function(_0x38cfcc){return{'name':_0x38cfcc[_0x97f5('0x29')],'type':_0x38cfcc[_0x97f5('0x2a')][_0x97f5('0x2b')]};});_0x48e1e5[_0x97f5('0x2c')]=_[_0x97f5('0x26')](_0x49bf8b,_0x97f5('0x23'));_0x48e1e5[_0x97f5('0x2d')]=_[_0x97f5('0x2e')](_0x1d758d[_0x97f5('0x2d')]);_0x48e1e5[_0x97f5('0x2f')]=_['intersection'](_0x48e1e5[_0x97f5('0x2c')],_0x48e1e5[_0x97f5('0x2d')]);_0x561398['attributes']=_['intersection'](_0x48e1e5[_0x97f5('0x2c')],qs[_0x97f5('0x30')](_0x1d758d[_0x97f5('0x2d')][_0x97f5('0x30')]));_0x561398['attributes']=_0x561398['attributes'][_0x97f5('0x31')]?_0x561398[_0x97f5('0x32')]:_0x48e1e5['model'];if(!_0x1d758d[_0x97f5('0x2d')]['hasOwnProperty'](_0x97f5('0x33'))){_0x561398[_0x97f5('0x34')]=qs['limit'](_0x1d758d['query']['limit']);_0x561398[_0x97f5('0x18')]=qs[_0x97f5('0x18')](_0x1d758d[_0x97f5('0x2d')][_0x97f5('0x18')]);}_0x561398['order']=qs['sort'](_0x1d758d[_0x97f5('0x2d')][_0x97f5('0x35')]);_0x561398['where']=qs[_0x97f5('0x2f')](_[_0x97f5('0x36')](_0x1d758d[_0x97f5('0x2d')],_0x48e1e5[_0x97f5('0x2f')]),_0x49bf8b);if(_0x1d758d[_0x97f5('0x2d')][_0x97f5('0x37')]){_0x561398[_0x97f5('0x38')]=_['merge'](_0x561398[_0x97f5('0x38')],{'$or':_[_0x97f5('0x26')](_0x49bf8b,function(_0x7f1b98){if(_0x7f1b98[_0x97f5('0x2a')]!==_0x97f5('0x39')){var _0x1e447b={};_0x1e447b[_0x7f1b98[_0x97f5('0x23')]]={'$like':'%'+_0x1d758d[_0x97f5('0x2d')][_0x97f5('0x37')]+'%'};return _0x1e447b;}})});}_0x561398=_[_0x97f5('0x3a')]({},_0x561398,_0x1d758d[_0x97f5('0x3b')]);var _0xdd1c20={'where':_0x561398[_0x97f5('0x38')]};return db['WhatsappApplication']['count'](_0xdd1c20)[_0x97f5('0x1f')](function(_0x121719){_0x62e957[_0x97f5('0x1a')]=_0x121719;if(_0x1d758d[_0x97f5('0x2d')][_0x97f5('0x3c')]){_0x561398[_0x97f5('0x3d')]=[{'all':!![]}];}return db[_0x97f5('0x27')]['findAll'](_0x561398);})[_0x97f5('0x1f')](function(_0x166099){_0x62e957['rows']=_0x166099;return _0x62e957;})[_0x97f5('0x1f')](respondWithFilteredResult(_0x33fa2d,_0x561398))['catch'](handleError(_0x33fa2d,null));};exports[_0x97f5('0x3e')]=function(_0x1a9149,_0xa444bc){var _0x3945ad={'raw':!![],'where':{'id':_0x1a9149['params']['id']}},_0x5bbc8a={};_0x5bbc8a[_0x97f5('0x2c')]=_[_0x97f5('0x2e')](db['WhatsappApplication'][_0x97f5('0x28')]);_0x5bbc8a[_0x97f5('0x2d')]=_[_0x97f5('0x2e')](_0x1a9149['query']);_0x5bbc8a[_0x97f5('0x2f')]=_[_0x97f5('0x3f')](_0x5bbc8a[_0x97f5('0x2c')],_0x5bbc8a[_0x97f5('0x2d')]);_0x3945ad[_0x97f5('0x32')]=_[_0x97f5('0x3f')](_0x5bbc8a[_0x97f5('0x2c')],qs['fields'](_0x1a9149[_0x97f5('0x2d')][_0x97f5('0x30')]));_0x3945ad[_0x97f5('0x32')]=_0x3945ad[_0x97f5('0x32')][_0x97f5('0x31')]?_0x3945ad[_0x97f5('0x32')]:_0x5bbc8a[_0x97f5('0x2c')];if(_0x1a9149[_0x97f5('0x2d')][_0x97f5('0x3c')]){_0x3945ad[_0x97f5('0x3d')]=[{'all':!![]}];}_0x3945ad=_[_0x97f5('0x3a')]({},_0x3945ad,_0x1a9149[_0x97f5('0x3b')]);return db[_0x97f5('0x27')][_0x97f5('0x40')](_0x3945ad)['then'](handleEntityNotFound(_0xa444bc,null))[_0x97f5('0x1f')](respondWithResult(_0xa444bc,null))[_0x97f5('0x41')](handleError(_0xa444bc,null));};exports['create']=function(_0x512a16,_0x57d9eb){return db['WhatsappApplication'][_0x97f5('0x42')](_0x512a16[_0x97f5('0x43')],{})[_0x97f5('0x1f')](respondWithResult(_0x57d9eb,0xc9))['catch'](handleError(_0x57d9eb,null));};exports[_0x97f5('0x44')]=function(_0x13b34d,_0x3e4261){if(_0x13b34d[_0x97f5('0x43')]['id']){delete _0x13b34d[_0x97f5('0x43')]['id'];}return db['WhatsappApplication']['find']({'where':{'id':_0x13b34d[_0x97f5('0x45')]['id']}})[_0x97f5('0x1f')](handleEntityNotFound(_0x3e4261,null))[_0x97f5('0x1f')](saveUpdates(_0x13b34d['body'],null))['then'](respondWithResult(_0x3e4261,null))[_0x97f5('0x41')](handleError(_0x3e4261,null));};exports[_0x97f5('0x20')]=function(_0x323ccf,_0x4f483c){return db['WhatsappApplication']['find']({'where':{'id':_0x323ccf[_0x97f5('0x45')]['id']}})[_0x97f5('0x1f')](handleEntityNotFound(_0x4f483c,null))[_0x97f5('0x1f')](removeEntity(_0x4f483c,null))['catch'](handleError(_0x4f483c,null));};
\ No newline at end of file
index 036f725..9d01006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf93=['path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','WhatsappApplication','utf8mb4','lodash','util','moment','bluebird'];(function(_0x3a7634,_0x2db384){var _0x23bbe9=function(_0x226734){while(--_0x226734){_0x3a7634['push'](_0x3a7634['shift']());}};_0x23bbe9(++_0x2db384);}(_0xaf93,0x151));var _0x3af9=function(_0x545942,_0x10e02c){_0x545942=_0x545942-0x0;var _0x3d0499=_0xaf93[_0x545942];return _0x3d0499;};'use strict';var _=require(_0x3af9('0x0'));var util=require(_0x3af9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3af9('0x2'));var BPromise=require(_0x3af9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3af9('0x4'));var rimraf=require(_0x3af9('0x5'));var config=require(_0x3af9('0x6'));var attributes=require(_0x3af9('0x7'));module[_0x3af9('0x8')]=function(_0x1ad446,_0x333abb){return _0x1ad446['define'](_0x3af9('0x9'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3af9('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9de3=['lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4'];(function(_0x129046,_0x519448){var _0x4d06d9=function(_0x425c26){while(--_0x425c26){_0x129046['push'](_0x129046['shift']());}};_0x4d06d9(++_0x519448);}(_0x9de3,0xea));var _0x39de=function(_0x38a5e6,_0x36ed47){_0x38a5e6=_0x38a5e6-0x0;var _0x3fd480=_0x9de3[_0x38a5e6];return _0x3fd480;};'use strict';var _=require(_0x39de('0x0'));var util=require('util');var logger=require(_0x39de('0x1'))(_0x39de('0x2'));var moment=require(_0x39de('0x3'));var BPromise=require('bluebird');var rp=require(_0x39de('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x39de('0x5'));var config=require(_0x39de('0x6'));var attributes=require(_0x39de('0x7'));module[_0x39de('0x8')]=function(_0x529524,_0x2e8f82){return _0x529524[_0x39de('0x9')](_0x39de('0xa'),attributes,{'tableName':_0x39de('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x39de('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 9a64dc6..7b21afb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error'];(function(_0x1defb2,_0x429099){var _0xad8973=function(_0xe26c42){while(--_0xe26c42){_0x1defb2['push'](_0x1defb2['shift']());}};_0xad8973(++_0x429099);}(_0x207c,0x1e8));var _0xc207=function(_0xf61c79,_0x43c6fa){_0xf61c79=_0xf61c79-0x0;var _0x127d26=_0x207c[_0xf61c79];return _0x127d26;};'use strict';var _=require('lodash');var util=require(_0xc207('0x0'));var moment=require(_0xc207('0x1'));var BPromise=require(_0xc207('0x2'));var rs=require(_0xc207('0x3'));var fs=require('fs');var Redis=require(_0xc207('0x4'));var db=require(_0xc207('0x5'))['db'];var utils=require(_0xc207('0x6'));var logger=require('../../config/logger')(_0xc207('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc207('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x314561,_0x3395e4,_0x59ff6f){return new BPromise(function(_0x25cb97,_0xad159b){return client[_0xc207('0x9')](_0x314561,_0x59ff6f)['then'](function(_0xffae6c){logger[_0xc207('0xa')](_0xc207('0xb'),_0x3395e4,_0xc207('0xc'));logger[_0xc207('0xd')](_0xc207('0xe'),_0x3395e4,'request\x20sent',JSON['stringify'](_0xffae6c));if(_0xffae6c['error']){if(_0xffae6c[_0xc207('0xf')]['code']===0x1f4){logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0xad159b(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0x25cb97(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}else{logger[_0xc207('0xa')]('WhatsappApplication,\x20%s,\x20%s',_0x3395e4,'request\x20sent');_0x25cb97(_0xffae6c['result'][_0xc207('0x10')]);}})[_0xc207('0x11')](function(_0x3d9c7b){logger[_0xc207('0xf')]('WhatsappApplication,\x20%s,\x20%s',_0x3395e4,_0x3d9c7b);_0xad159b(_0x3d9c7b);});});}
\ No newline at end of file
+var _0xe14d=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x2b45d9,_0x3f4e3e){var _0x26f957=function(_0x487782){while(--_0x487782){_0x2b45d9['push'](_0x2b45d9['shift']());}};_0x26f957(++_0x3f4e3e);}(_0xe14d,0x1ee));var _0xde14=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0xe14d[_0x257642];return _0x3d813b;};'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});function respondWithRpcPromise(_0x4b1f6b,_0x5a1344,_0x1bd49d){return new BPromise(function(_0x115b7d,_0x2b0e7c){return client[_0xde14('0xc')](_0x4b1f6b,_0x1bd49d)[_0xde14('0xd')](function(_0x176909){logger[_0xde14('0xe')](_0xde14('0xf'),_0x5a1344,'request\x20sent');logger[_0xde14('0x10')](_0xde14('0x11'),_0x5a1344,_0xde14('0x12'),JSON[_0xde14('0x13')](_0x176909));if(_0x176909[_0xde14('0x14')]){if(_0x176909[_0xde14('0x14')][_0xde14('0x15')]===0x1f4){logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x176909[_0xde14('0x14')][_0xde14('0x16')]);return _0x2b0e7c(_0x176909[_0xde14('0x14')][_0xde14('0x16')]);}logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x176909['error']['message']);return _0x115b7d(_0x176909[_0xde14('0x14')][_0xde14('0x16')]);}else{logger[_0xde14('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x5a1344,_0xde14('0x12'));_0x115b7d(_0x176909[_0xde14('0x17')][_0xde14('0x16')]);}})[_0xde14('0x18')](function(_0x3de959){logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x3de959);_0x2b0e7c(_0x3de959);});});}
\ No newline at end of file
index af671d3..84b56bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5334=['connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','index','describe','get','/:id','isAuthenticated','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','tracked','whatsappinteraction:addtags','whatsapp','whatsappinteraction:update','update','destroy','removeTags','multer','util','path'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x5334,0x84));var _0x4533=function(_0x25e8e8,_0x34f7df){_0x25e8e8=_0x25e8e8-0x0;var _0x563f39=_0x5334[_0x25e8e8];return _0x563f39;};'use strict';var multer=require(_0x4533('0x0'));var util=require(_0x4533('0x1'));var path=require(_0x4533('0x2'));var timeout=require(_0x4533('0x3'));var express=require(_0x4533('0x4'));var router=express['Router']();var fs_extra=require(_0x4533('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4533('0x6'));var config=require(_0x4533('0x7'));var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4533('0x8')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x4533('0x9')]);router[_0x4533('0xa')](_0x4533('0xb'),auth[_0x4533('0xc')](),controller[_0x4533('0xd')]);router[_0x4533('0xa')](_0x4533('0xe'),auth['isAuthenticated'](),controller[_0x4533('0xf')]);router[_0x4533('0xa')](_0x4533('0x10'),auth[_0x4533('0xc')](),controller['download']);router[_0x4533('0x11')]('/',auth['isAuthenticated'](),controller[_0x4533('0x12')]);router[_0x4533('0x11')](_0x4533('0xe'),auth[_0x4533('0xc')](),controller['addMessage']);router[_0x4533('0x11')](_0x4533('0x13'),auth[_0x4533('0xc')](),interaction[_0x4533('0x14')]('whatsapp',_0x4533('0x15')),controller['addTags']);router['put'](_0x4533('0xb'),auth[_0x4533('0xc')](),interaction['tracked'](_0x4533('0x16'),_0x4533('0x17')),controller[_0x4533('0x18')]);router['delete'](_0x4533('0xb'),auth['isAuthenticated'](),interaction[_0x4533('0x14')](_0x4533('0x16'),'whatsappinteraction:destroy'),controller[_0x4533('0x19')]);router['delete']('/:id/tags',auth[_0x4533('0xc')](),controller[_0x4533('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x8819=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','show','/:id/messages','getMessages','/:id/download','download','post','create','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','/:id','whatsappinteraction:update','delete','/:id/tags','removeTags','exports','path','connect-timeout'];(function(_0x1120c7,_0x18f931){var _0x436f8a=function(_0x19f1dd){while(--_0x19f1dd){_0x1120c7['push'](_0x1120c7['shift']());}};_0x436f8a(++_0x18f931);}(_0x8819,0x94));var _0x9881=function(_0x53b388,_0x1c852a){_0x53b388=_0x53b388-0x0;var _0x182bdb=_0x8819[_0x53b388];return _0x182bdb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9881('0x0'));var timeout=require(_0x9881('0x1'));var express=require(_0x9881('0x2'));var router=express[_0x9881('0x3')]();var fs_extra=require(_0x9881('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9881('0x5'));var config=require(_0x9881('0x6'));var controller=require(_0x9881('0x7'));router[_0x9881('0x8')]('/',auth[_0x9881('0x9')](),controller[_0x9881('0xa')]);router['get'](_0x9881('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x9881('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x9881('0xc')]);router['get'](_0x9881('0xd'),auth[_0x9881('0x9')](),controller[_0x9881('0xe')]);router['get'](_0x9881('0xf'),auth[_0x9881('0x9')](),controller[_0x9881('0x10')]);router[_0x9881('0x11')]('/',auth['isAuthenticated'](),controller[_0x9881('0x12')]);router[_0x9881('0x11')]('/:id/messages',auth[_0x9881('0x9')](),controller['addMessage']);router['post']('/:id/tags',auth['isAuthenticated'](),interaction[_0x9881('0x13')](_0x9881('0x14'),_0x9881('0x15')),controller[_0x9881('0x16')]);router[_0x9881('0x17')](_0x9881('0x18'),auth['isAuthenticated'](),interaction[_0x9881('0x13')](_0x9881('0x14'),_0x9881('0x19')),controller['update']);router['delete']('/:id',auth[_0x9881('0x9')](),interaction['tracked'](_0x9881('0x14'),'whatsappinteraction:destroy'),controller['destroy']);router[_0x9881('0x1a')](_0x9881('0x1b'),auth[_0x9881('0x9')](),controller[_0x9881('0x1c')]);module[_0x9881('0x1d')]=router;
\ No newline at end of file
index f5df376..3fc2089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9485=['DATE','ENUM','out','sequelize','moment','exports','BOOLEAN','STRING'];(function(_0x144d7b,_0x4e0e8c){var _0x484738=function(_0x301b84){while(--_0x301b84){_0x144d7b['push'](_0x144d7b['shift']());}};_0x484738(++_0x4e0e8c);}(_0x9485,0x8b));var _0x5948=function(_0xc7bc01,_0x3868b5){_0xc7bc01=_0xc7bc01-0x0;var _0x566813=_0x9485[_0xc7bc01];return _0x566813;};'use strict';var Sequelize=require(_0x5948('0x0'));var moment=require(_0x5948('0x1'));module[_0x5948('0x2')]={'closed':{'type':Sequelize[_0x5948('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x5948('0x4')]},'secondDisposition':{'type':Sequelize[_0x5948('0x4')]},'thirdDisposition':{'type':Sequelize[_0x5948('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x5948('0x4')]},'read1stAt':{'type':Sequelize[_0x5948('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x5948('0x6')]('in',_0x5948('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5948('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x5948('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x5948('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xd5da=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xd5da,0x9f));var _0xad5d=function(_0x582fcf,_0x46f454){_0x582fcf=_0x582fcf-0x0;var _0x38c4c9=_0xd5da[_0x582fcf];return _0x38c4c9;};'use strict';var Sequelize=require(_0xad5d('0x0'));var moment=require(_0xad5d('0x1'));module['exports']={'closed':{'type':Sequelize[_0xad5d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xad5d('0x3')]},'disposition':{'type':Sequelize[_0xad5d('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xad5d('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xad5d('0x4')]},'read1stAt':{'type':Sequelize[_0xad5d('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xad5d('0x5')]('in',_0xad5d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xad5d('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xad5d('0x5')]('in',_0xad5d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xad5d('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 20c3045..93f25d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb3c=['basename','existsSync','createReadStream','pipe','createWriteStream','out','System','lastName','secret','renderFile','server','views','downloadInteraction.ejs','transcript-','Whatsapp','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','end','error','name','send','Users','map','fullname','Tags','forEach','push','catch','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','field','color','tools_tags','select','u.id','from','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','length','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','text','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','start','some','compact','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','i.*','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','WhatsappInteractionId','all','rows','show','params','includeAll','include','options','create','body','destroy','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','files','tmp','attachments','transcript-%d-%s.zip','firstName','Attachment','direction','Account','Owner','get','N.A.','closed','closedAt','disposition','Messages'];(function(_0x3c126c,_0x22f353){var _0x3b89e4=function(_0x1472c0){while(--_0x1472c0){_0x3c126c['push'](_0x3c126c['shift']());}};_0x3b89e4(++_0x22f353);}(_0xfb3c,0x1df));var _0xcfb3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xfb3c[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0xcfb3('0x0'));var rimraf=require(_0xcfb3('0x1'));var zipdir=require(_0xcfb3('0x2'));var jsonpatch=require(_0xcfb3('0x3'));var rp=require('request-promise');var moment=require(_0xcfb3('0x4'));var BPromise=require(_0xcfb3('0x5'));var Mustache=require('mustache');var util=require(_0xcfb3('0x6'));var path=require(_0xcfb3('0x7'));var sox=require('sox');var csv=require(_0xcfb3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcfb3('0x9'));var _=require(_0xcfb3('0xa'));var squel=require(_0xcfb3('0xb'));var crypto=require(_0xcfb3('0xc'));var jsforce=require(_0xcfb3('0xd'));var deskjs=require(_0xcfb3('0xe'));var toCsv=require(_0xcfb3('0x8'));var querystring=require(_0xcfb3('0xf'));var Papa=require(_0xcfb3('0x10'));var Redis=require('ioredis');var authService=require(_0xcfb3('0x11'));var qs=require(_0xcfb3('0x12'));var as=require(_0xcfb3('0x13'));var pdf=require(_0xcfb3('0x14'));var hardwareService=require(_0xcfb3('0x15'));var logger=require(_0xcfb3('0x16'))(_0xcfb3('0x17'));var utils=require(_0xcfb3('0x18'));var config=require(_0xcfb3('0x19'));var licenseUtil=require(_0xcfb3('0x1a'));var db=require(_0xcfb3('0x1b'))['db'];config[_0xcfb3('0x1c')]=_[_0xcfb3('0x1d')](config[_0xcfb3('0x1c')],{'host':_0xcfb3('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcfb3('0x1c')]));require(_0xcfb3('0x1f'))[_0xcfb3('0x20')](socket);function respondWithStatusCode(_0x5d1c65,_0x45283a){_0x45283a=_0x45283a||0xcc;return function(_0x5d530b){if(_0x5d530b){return _0x5d1c65[_0xcfb3('0x21')](_0x45283a);}return _0x5d1c65[_0xcfb3('0x22')](_0x45283a)['end']();};}function respondWithResult(_0x32db42,_0x281041){_0x281041=_0x281041||0xc8;return function(_0x23165d){if(_0x23165d){return _0x32db42[_0xcfb3('0x22')](_0x281041)[_0xcfb3('0x23')](_0x23165d);}};}function respondWithFilteredResult(_0x4ed4f4,_0x11d50c){return function(_0x22f066){if(_0x22f066){var _0x207206=typeof _0x11d50c[_0xcfb3('0x24')]==='undefined'&&typeof _0x11d50c['limit']===_0xcfb3('0x25');var _0x1981b8=_0x22f066[_0xcfb3('0x26')];var _0x5b777e=_0x207206?0x0:_0x11d50c['offset'];var _0x40b0f6=_0x207206?_0x22f066['count']:_0x11d50c[_0xcfb3('0x24')]+_0x11d50c[_0xcfb3('0x27')];var _0x13a370;if(_0x40b0f6>=_0x1981b8){_0x40b0f6=_0x1981b8;_0x13a370=0xc8;}else{_0x13a370=0xce;}_0x4ed4f4['status'](_0x13a370);return _0x4ed4f4[_0xcfb3('0x28')]('Content-Range',_0x5b777e+'-'+_0x40b0f6+'/'+_0x1981b8)['json'](_0x22f066);}return null;};}function patchUpdates(_0x522161){return function(_0x181a46){try{jsonpatch[_0xcfb3('0x29')](_0x181a46,_0x522161,!![]);}catch(_0x14ae25){return BPromise[_0xcfb3('0x2a')](_0x14ae25);}return _0x181a46[_0xcfb3('0x2b')]();};}function saveUpdates(_0x594ca9,_0x49ffd1){return function(_0x2edbf5){if(_0x2edbf5){return _0x2edbf5[_0xcfb3('0x2c')](_0x594ca9)[_0xcfb3('0x2d')](function(_0x2df6c5){return _0x2df6c5;});}return null;};}function removeEntity(_0x6155ed,_0x1b6e23){return function(_0x2a9f2d){if(_0x2a9f2d){return _0x2a9f2d['destroy']()[_0xcfb3('0x2d')](function(){_0x6155ed[_0xcfb3('0x22')](0xcc)[_0xcfb3('0x2e')]();});}};}function handleEntityNotFound(_0x5b943a,_0x48ae26){return function(_0x103010){if(!_0x103010){_0x5b943a[_0xcfb3('0x21')](0x194);}return _0x103010;};}function handleError(_0x1f9844,_0x44c118){_0x44c118=_0x44c118||0x1f4;return function(_0x25da79){logger[_0xcfb3('0x2f')](_0x25da79['stack']);if(_0x25da79[_0xcfb3('0x30')]){delete _0x25da79[_0xcfb3('0x30')];}_0x1f9844[_0xcfb3('0x22')](_0x44c118)[_0xcfb3('0x31')](_0x25da79);};}function getInteractionUsers(_0x52c9aa,_0x116f41){return new BPromise(function(_0x3f4284,_0x22db21){try{if(_0x116f41[_0x52c9aa['id']]){_0x52c9aa[_0xcfb3('0x32')]=_[_0xcfb3('0x33')](_0x116f41[_0x52c9aa['id']],function(_0xaea3a0){return{'id':_0xaea3a0['id'],'fullname':_0xaea3a0[_0xcfb3('0x34')]};});}}catch(_0x5c05e8){_0x22db21(_0x5c05e8);}_0x3f4284(_0x52c9aa);});}function getInteractionTags(_0x1b5939,_0x471670){return new BPromise(function(_0x102b61,_0x256f1d){try{if(_0x1b5939['TagIds']){_0x1b5939[_0xcfb3('0x35')]=[];_0x1b5939['TagIds']['split'](',')[_0xcfb3('0x36')](function(_0x4c2da2){_0x1b5939[_0xcfb3('0x35')][_0xcfb3('0x37')](_0x471670[_0x4c2da2]);});}delete _0x1b5939['TagIds'];}catch(_0x2928d0){_0x256f1d(_0x2928d0);}_0x102b61(_0x1b5939);});}function updateWhatsappInteraction(_0x366a80,_0x5449b6,_0x201733){return new BPromise(function(_0x32c897,_0x3dea16){return getInteractionUsers(_0x366a80,_0x201733)[_0xcfb3('0x2d')](function(_0x4e4758){return getInteractionTags(_0x4e4758,_0x5449b6);})[_0xcfb3('0x2d')](function(_0x5519cb){_0x32c897(_0x5519cb);})[_0xcfb3('0x38')](function(_0x4d0d8c){_0x3dea16(_0x4d0d8c);});});}exports[_0xcfb3('0x39')]=function(_0x352abf,_0x5ded87){var _0x1f4dff={},_0x2c0859={},_0xf7d4b1={'count':0x0,'rows':[]};var _0x3d66f9=_[_0xcfb3('0x33')](db[_0xcfb3('0x3a')][_0xcfb3('0x3b')],function(_0x3017ab){return{'name':_0x3017ab[_0xcfb3('0x3c')],'type':_0x3017ab[_0xcfb3('0x3d')][_0xcfb3('0x3e')]};});_0x2c0859[_0xcfb3('0x3f')]=_['map'](_0x3d66f9,_0xcfb3('0x30'));_0x2c0859['query']=_[_0xcfb3('0x40')](_0x352abf[_0xcfb3('0x41')]);_0x2c0859[_0xcfb3('0x42')]=_[_0xcfb3('0x43')](_0x2c0859[_0xcfb3('0x3f')],_0x2c0859[_0xcfb3('0x41')]);_0x1f4dff['attributes']=_[_0xcfb3('0x43')](_0x2c0859[_0xcfb3('0x3f')],qs[_0xcfb3('0x44')](_0x352abf['query'][_0xcfb3('0x44')]));_0x1f4dff[_0xcfb3('0x45')]=_0x1f4dff[_0xcfb3('0x45')]['length']?_0x1f4dff[_0xcfb3('0x45')]:_0x2c0859[_0xcfb3('0x3f')];if(!_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x46')]('nolimit')){_0x1f4dff[_0xcfb3('0x27')]=qs[_0xcfb3('0x27')](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x27')]);_0x1f4dff['offset']=qs['offset'](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x24')]);}_0x1f4dff[_0xcfb3('0x47')]=qs['sort'](_0x352abf['query'][_0xcfb3('0x48')]);_0x1f4dff[_0xcfb3('0x49')]=qs[_0xcfb3('0x42')](_[_0xcfb3('0x4a')](_0x352abf[_0xcfb3('0x41')],_0x2c0859[_0xcfb3('0x42')]),_0x3d66f9);var _0x2b9d5=[];var _0x374527=squel['select']()[_0xcfb3('0x4b')]('id')[_0xcfb3('0x4b')](_0xcfb3('0x30'))[_0xcfb3('0x4b')](_0xcfb3('0x4c'))['from'](_0xcfb3('0x4d'));var _0x310c3c=squel[_0xcfb3('0x4e')]()['field'](_0xcfb3('0x4f'))['field']('u.fullname')['field']('ui.WhatsappInteractionId')[_0xcfb3('0x50')]('user_has_whatsapp_interactions','ui')['left_join'](_0xcfb3('0x51'),'u',_0xcfb3('0x52'));var _0x3549c8=squel[_0xcfb3('0x4e')]()[_0xcfb3('0x50')](_0xcfb3('0x53'),'i')[_0xcfb3('0x54')]('cm_contacts','c',_0xcfb3('0x55'))[_0xcfb3('0x54')](_0xcfb3('0x51'),'o',_0xcfb3('0x56'))[_0xcfb3('0x54')](_0xcfb3('0x57'),'a',_0xcfb3('0x58'))[_0xcfb3('0x54')](_0xcfb3('0x59'),'me','me.WhatsappInteractionId\x20=\x20i.id')['left_join']('whatsapp_interaction_has_tags','it',_0xcfb3('0x5a'))[_0xcfb3('0x54')](_0xcfb3('0x4d'),'t',_0xcfb3('0x5b'));var _0x37f26b=squel['expr']();var _0x46d04e=[];var _0x1d4d37=squel[_0xcfb3('0x5c')]();var _0x48893a;if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x5d')]){_0x48893a=as[_0xcfb3('0x5e')](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x5d')]);var _0x38370c=_0x48893a[_0xcfb3('0x5f')];for(var _0x3810de=0x0;_0x3810de<_0x48893a[_0xcfb3('0x60')]['length'];_0x3810de++){var _0x15947a=_0x48893a[_0xcfb3('0x60')][_0x3810de];var _0x1dccff='i';var _0x3078f3=_[_0xcfb3('0x61')](_0x3d66f9,[_0xcfb3('0x30'),_0x15947a[_0xcfb3('0x4b')]]);if(!_0x3078f3){switch(_0x15947a['field']){case _0xcfb3('0x62'):if(_0x15947a[_0xcfb3('0x63')]==0x1){_0x3549c8[_0xcfb3('0x64')]('`'+_0x15947a['field']+_0xcfb3('0x65'));}else{_0x3549c8[_0xcfb3('0x64')]('`'+_0x15947a[_0xcfb3('0x4b')]+_0xcfb3('0x66'));}break;case _0xcfb3('0x67'):if(_0x15947a[_0xcfb3('0x68')]===_0xcfb3('0x69')){if(_0x15947a[_0xcfb3('0x63')][_0xcfb3('0x6a')]('\x20')[_0xcfb3('0x6b')]>0x1){_0x37f26b[_0x38370c](_0xcfb3('0x6c'),qs['getFullTextValue'](_0x15947a['value']),null);}else{var _0x917c76='%'+_0x15947a[_0xcfb3('0x63')]+'%';_0x37f26b[_0x38370c](_0xcfb3('0x6d'),_0x917c76,_0x917c76,_0x917c76);}}else{_0x3078f3=_['find'](_0x3d66f9,[_0xcfb3('0x30'),'ContactId']);_0x15947a['field']=_0xcfb3('0x6e');_0x87ae88=as['buildExpression'](_0x1dccff,_0x3078f3['type'],_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88[_0xcfb3('0x63')]['start'],_0x87ae88[_0xcfb3('0x63')][_0xcfb3('0x2e')]);}break;case _0xcfb3('0x70'):var _0x2ed230=_0x15947a[_0xcfb3('0x63')]['split'](',')[_0xcfb3('0x33')](function(_0x3d0abf){return Number(_0x3d0abf);});_0x2ed230['forEach'](function(_0x315dda){_0x1d4d37['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x315dda+',%');});_0x46d04e=_['union'](_0x46d04e,_0x2ed230);break;case _0xcfb3('0x71'):if(_0x15947a[_0xcfb3('0x68')]===_0xcfb3('0x69')){_0x37f26b[_0x38370c](_0xcfb3('0x72'),'%'+_0x15947a[_0xcfb3('0x63')]+'%',null);}else{_0x3078f3=_[_0xcfb3('0x61')](_0x3d66f9,[_0xcfb3('0x30'),_0xcfb3('0x73')]);_0x15947a[_0xcfb3('0x4b')]='UserId';_0x87ae88=as[_0xcfb3('0x74')](_0x1dccff,_0x3078f3[_0xcfb3('0x3d')],_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88[_0xcfb3('0x63')][_0xcfb3('0x75')],_0x87ae88['value'][_0xcfb3('0x2e')]);}break;case'body':_0x87ae88=as['buildExpression']('me',null,_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88['value']['start'],_0x87ae88[_0xcfb3('0x63')]['end']);break;}}else{var _0x87ae88=as[_0xcfb3('0x74')](_0x1dccff,_0x3078f3['type'],_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88['value'][_0xcfb3('0x75')],_0x87ae88['value'][_0xcfb3('0x2e')]);}}}else{var _0x4304a8=_(_0x352abf[_0xcfb3('0x41')])[_0xcfb3('0x40')]()[_0xcfb3('0x33')](function(_0x50d502){return _[_0xcfb3('0x76')](_0x3d66f9,[_0xcfb3('0x30'),_0x50d502])?_0x50d502:undefined;})[_0xcfb3('0x77')]()[_0xcfb3('0x63')]();if(!_['isEmpty'](_0x4304a8)){_0x4304a8[_0xcfb3('0x36')](function(_0x1cea20){if(_0x1cea20===_0xcfb3('0x78')){_0x3549c8['where'](_0xcfb3('0x79'),[]['concat'](_0x352abf[_0xcfb3('0x41')][_0x1cea20]));}else if(_0x1cea20===_0xcfb3('0x7a')){var _0x79c0fa=JSON[_0xcfb3('0x7b')](_0x352abf[_0xcfb3('0x41')][_0x1cea20])[_0xcfb3('0x7c')];var _0x1e6380=JSON[_0xcfb3('0x7b')](_0x352abf[_0xcfb3('0x41')][_0x1cea20])['$lte'];_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x7d'),_0x79c0fa,_0x1e6380);}else{if(_0x352abf[_0xcfb3('0x41')][_0x1cea20]===_0xcfb3('0x7e')){_0x3549c8[_0xcfb3('0x49')]('i.'+_0x1cea20+_0xcfb3('0x7f'));}else{_0x3549c8['where']('i.'+_0x1cea20+_0xcfb3('0x80'),_0x352abf[_0xcfb3('0x41')][_0x1cea20]);}}});}if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x81')]){if(_0x352abf[_0xcfb3('0x41')]['read']==0x1){_0x3549c8['having'](_0xcfb3('0x82'));}else{_0x3549c8[_0xcfb3('0x64')]('`unreadMessages`\x20>\x200');}}if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')]){_0x46d04e=_['isArray'](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')])?_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')]:new Array(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')]);_0x46d04e[_0xcfb3('0x36')](function(_0x10b861){_0x1d4d37['or'](_0xcfb3('0x84'),'%,'+_0x10b861+',%');});}if(_0x352abf['query'][_0xcfb3('0x85')]){var _0x4e32fe=_0x352abf[_0xcfb3('0x41')]['filter'][_0xcfb3('0x86')]('\x5c','\x5c\x5c')[_0xcfb3('0x86')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4e32fe)){_0x37f26b['or'](_0xcfb3('0x87'),_0x4e32fe+'%')['or'](_0xcfb3('0x88'),_0x4e32fe+'%');}else{_0x37f26b['or'](_0xcfb3('0x89'),qs['getFullTextValue'](_0x4e32fe))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x4e32fe+'%');}}}_0x3549c8[_0xcfb3('0x49')](_0x37f26b);_0x3549c8['group']('i.id');var _0x3e498b={'type':db['Sequelize'][_0xcfb3('0x8a')][_0xcfb3('0x8b')],'raw':!![]};var _0xeb2a8a=_0x3549c8[_0xcfb3('0x8c')]();_0xeb2a8a[_0xcfb3('0x4b')]('i.id');_0xeb2a8a[_0xcfb3('0x4b')](_0xcfb3('0x8d'),_0xcfb3('0x62'));if(_0x1f4dff[_0xcfb3('0x47')]){_0x1f4dff['order'][_0xcfb3('0x36')](function(_0x4443f4){var _0x44f675=_0x4443f4[0x0]===_0xcfb3('0x8e')?_0x4443f4[0x0]:'i.'+_0x4443f4[0x0];_0x3549c8[_0xcfb3('0x47')](_0x44f675,_0x4443f4[0x1]===_0xcfb3('0x8f')?![]:!![]);});}if(!_[_0xcfb3('0x90')](_0x46d04e)){_0x3549c8[_0xcfb3('0x64')](_0x1d4d37);_0xeb2a8a['where']('t.id\x20IN\x20?',_0x46d04e);}BPromise['resolve']()[_0xcfb3('0x2d')](function(){if(!_0x48893a){if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x78')])return;_0xeb2a8a[_0xcfb3('0x49')](_0xcfb3('0x91'));_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x91'));return;}if(_0x352abf[_0xcfb3('0x92')][_0xcfb3('0x93')]!==_0xcfb3('0x94'))return;return _0x352abf[_0xcfb3('0x92')][_0xcfb3('0x95')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4352da){if(_[_0xcfb3('0x90')](_0x4352da)){_0xeb2a8a[_0xcfb3('0x49')](_0xcfb3('0x96'));_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x96'));}else{_0xeb2a8a[_0xcfb3('0x49')](_0xcfb3('0x79'),_[_0xcfb3('0x33')](_0x4352da,'id'));_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x79'),_[_0xcfb3('0x33')](_0x4352da,'id'));}});})[_0xcfb3('0x2d')](function(){if(_0x352abf[_0xcfb3('0x92')][_0xcfb3('0x93')]===_0xcfb3('0x94')&&!_0x48893a&&!_0x352abf[_0xcfb3('0x41')]['WhatsappAccountId'])return[];return db[_0xcfb3('0x97')]['query'](_0xeb2a8a[_0xcfb3('0x98')](),_0x3e498b);})[_0xcfb3('0x2d')](function(_0x340e86){_0xf7d4b1[_0xcfb3('0x26')]=_0x340e86[_0xcfb3('0x6b')];if(_0xf7d4b1[_0xcfb3('0x26')]===0x0)return[];return db[_0xcfb3('0x97')]['query'](_0x374527[_0xcfb3('0x98')](),_0x3e498b)[_0xcfb3('0x2d')](function(_0x556de1){_0x2b9d5=_[_0xcfb3('0x99')](_0x556de1,'id');_0x3e498b=_[_0xcfb3('0x9a')](_0x3e498b,{'model':db[_0xcfb3('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x44')]){_0x1f4dff[_0xcfb3('0x45')][_0xcfb3('0x36')](function(_0xa66cd7){_0x3549c8['field']('i.'+_0xa66cd7);});}else{_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0x8d'),_0xcfb3('0x62'));_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0x9b'),_0xcfb3('0x9c'));_0x3549c8[_0xcfb3('0x4b')]('a.mandatoryDisposition',_0xcfb3('0x9d'));_0x3549c8[_0xcfb3('0x4b')]('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',_0xcfb3('0x8e'));_0x3549c8['field'](_0xcfb3('0x9e'));_0x3549c8[_0xcfb3('0x4b')]('c.firstName','Contact.firstName');_0x3549c8['field']('c.lastName','Contact.lastName');_0x3549c8[_0xcfb3('0x4b')]('c.email','Contact.email');_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0x9f'),_0xcfb3('0xa0'));_0x3549c8['field'](_0xcfb3('0xa1'),_0xcfb3('0xa2'));_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0xa3'),_0xcfb3('0xa4'));_0x3549c8[_0xcfb3('0x4b')]('o.fullname','Owner.fullname');_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0xa5'),'Owner.internal');_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0xa6'),_0xcfb3('0xa7'));}if(_0x1f4dff[_0xcfb3('0x27')])_0x3549c8[_0xcfb3('0x27')](_0x1f4dff['limit']);if(_0x1f4dff['offset'])_0x3549c8['offset'](_0x1f4dff[_0xcfb3('0x24')]);return db['sequelize'][_0xcfb3('0x41')](_0x3549c8[_0xcfb3('0x98')](),_0x3e498b);})[_0xcfb3('0x2d')](function(_0x3e60e3){if(_0x3e60e3[_0xcfb3('0x6b')]>0x0)_0x310c3c['where']('ui.WhatsappInteractionId\x20IN\x20?',_[_0xcfb3('0x33')](_0x3e60e3,'id'));return db[_0xcfb3('0x97')][_0xcfb3('0x41')](_0x310c3c['toString'](),_0x3e498b)[_0xcfb3('0x2d')](function(_0x4a2544){var _0x17aefb=_['groupBy'](_0x4a2544,_0xcfb3('0xa8'));var _0x1a5bee=[];_0x3e60e3['forEach'](function(_0x4839af){_0x1a5bee[_0xcfb3('0x37')](updateWhatsappInteraction(_0x4839af,_0x2b9d5,_0x17aefb));});return BPromise[_0xcfb3('0xa9')](_0x1a5bee);});});})['then'](function(_0x1aa5c0){_0xf7d4b1[_0xcfb3('0xaa')]=_0x1aa5c0;return _0xf7d4b1;})['then'](respondWithFilteredResult(_0x5ded87,_0x1f4dff))[_0xcfb3('0x38')](handleError(_0x5ded87,null));};exports[_0xcfb3('0xab')]=function(_0x2ae495,_0x5a3044){var _0x49ff47={'raw':![],'where':{'id':_0x2ae495[_0xcfb3('0xac')]['id']}},_0x162e9a={};_0x162e9a[_0xcfb3('0x3f')]=_[_0xcfb3('0x40')](db['WhatsappInteraction'][_0xcfb3('0x3b')]);_0x162e9a[_0xcfb3('0x41')]=_[_0xcfb3('0x40')](_0x2ae495[_0xcfb3('0x41')]);_0x162e9a[_0xcfb3('0x42')]=_[_0xcfb3('0x43')](_0x162e9a[_0xcfb3('0x3f')],_0x162e9a[_0xcfb3('0x41')]);_0x49ff47[_0xcfb3('0x45')]=_[_0xcfb3('0x43')](_0x162e9a[_0xcfb3('0x3f')],qs[_0xcfb3('0x44')](_0x2ae495['query'][_0xcfb3('0x44')]));_0x49ff47[_0xcfb3('0x45')]=_0x49ff47[_0xcfb3('0x45')][_0xcfb3('0x6b')]?_0x49ff47[_0xcfb3('0x45')]:_0x162e9a[_0xcfb3('0x3f')];if(_0x2ae495['query'][_0xcfb3('0xad')]){_0x49ff47[_0xcfb3('0xae')]=[{'all':!![]}];}_0x49ff47=_['merge']({},_0x49ff47,_0x2ae495[_0xcfb3('0xaf')]);return db[_0xcfb3('0x3a')][_0xcfb3('0x61')](_0x49ff47)['then'](handleEntityNotFound(_0x5a3044,null))[_0xcfb3('0x2d')](respondWithResult(_0x5a3044,null))[_0xcfb3('0x38')](handleError(_0x5a3044,null));};exports[_0xcfb3('0xb0')]=function(_0x109e85,_0x1d5d55){return db[_0xcfb3('0x3a')][_0xcfb3('0xb0')](_0x109e85['body'],{})[_0xcfb3('0x2d')](respondWithResult(_0x1d5d55,0xc9))['catch'](handleError(_0x1d5d55,null));};exports[_0xcfb3('0x2c')]=function(_0xc69141,_0x29c302){if(_0xc69141[_0xcfb3('0xb1')]['id']){delete _0xc69141['body']['id'];}return db[_0xcfb3('0x3a')]['find']({'where':{'id':_0xc69141[_0xcfb3('0xac')]['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x29c302,null))[_0xcfb3('0x2d')](saveUpdates(_0xc69141['body'],null))[_0xcfb3('0x2d')](respondWithResult(_0x29c302,null))[_0xcfb3('0x38')](handleError(_0x29c302,null));};exports[_0xcfb3('0xb2')]=function(_0x28f3e3,_0x4a45ca){return db['WhatsappInteraction']['find']({'where':{'id':_0x28f3e3['params']['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x4a45ca,null))[_0xcfb3('0x2d')](removeEntity(_0x4a45ca,null))[_0xcfb3('0x38')](handleError(_0x4a45ca,null));};exports[_0xcfb3('0xb3')]=function(_0x343936,_0xca1932){return db['WhatsappInteraction'][_0xcfb3('0xb3')]()[_0xcfb3('0x2d')](respondWithResult(_0xca1932,null))[_0xcfb3('0x38')](handleError(_0xca1932,null));};exports[_0xcfb3('0xb4')]=function(_0x5dbf06,_0x7be03,_0x30b42c){return db[_0xcfb3('0xb5')][_0xcfb3('0x61')]({'where':{'id':_0x5dbf06[_0xcfb3('0xac')]['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x7be03,null))['then'](function(_0x1d71c8){if(_0x1d71c8){return _0x1d71c8['addMessage'](_0x5dbf06[_0xcfb3('0xb1')][_0xcfb3('0xb6')],_[_0xcfb3('0xb7')](_0x5dbf06[_0xcfb3('0xb1')],['ids','id'])||{});}})[_0xcfb3('0x2d')](respondWithResult(_0x7be03,null))[_0xcfb3('0x38')](handleError(_0x7be03,null));};exports[_0xcfb3('0xb8')]=function(_0x365d8d,_0x242534,_0x123ea7){var _0x3b565a={'raw':![],'where':{}};var _0x864f9={};var _0x32221c={'count':0x0,'rows':[]};return db[_0xcfb3('0x3a')][_0xcfb3('0xb9')]({'where':{'id':_0x365d8d['params']['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x242534,null))[_0xcfb3('0x2d')](function(_0x3521cc){if(_0x3521cc){_0x864f9[_0xcfb3('0x3f')]=_[_0xcfb3('0x40')](db[_0xcfb3('0xb5')]['rawAttributes']);_0x864f9[_0xcfb3('0x41')]=_[_0xcfb3('0x40')](_0x365d8d[_0xcfb3('0x41')]);_0x864f9[_0xcfb3('0x42')]=_['intersection'](_0x864f9[_0xcfb3('0x3f')],_0x864f9[_0xcfb3('0x41')]);_0x3b565a['attributes']=_['intersection'](_0x864f9[_0xcfb3('0x3f')],qs[_0xcfb3('0x44')](_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x44')]));_0x3b565a[_0xcfb3('0x45')]=_0x3b565a[_0xcfb3('0x45')][_0xcfb3('0x6b')]?_0x3b565a['attributes']:_0x864f9[_0xcfb3('0x3f')];if(!_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x46')](_0xcfb3('0xba'))){_0x3b565a['limit']=qs[_0xcfb3('0x27')](_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x27')]);_0x3b565a[_0xcfb3('0x24')]=qs[_0xcfb3('0x24')](_0x365d8d['query']['offset']);}_0x3b565a['order']=qs['sort'](_0x365d8d['query'][_0xcfb3('0x48')]);_0x3b565a[_0xcfb3('0x49')]=qs[_0xcfb3('0x42')](_[_0xcfb3('0x4a')](_0x365d8d['query'],_0x864f9[_0xcfb3('0x42')]));_0x3b565a['where']['WhatsappInteractionId']=_0x3521cc['id'];if(_0x365d8d[_0xcfb3('0x41')]['filter']){_0x3b565a[_0xcfb3('0x49')]=_[_0xcfb3('0x9a')](_0x3b565a[_0xcfb3('0x49')],{'$or':_['map'](_0x3b565a[_0xcfb3('0x45')],function(_0x37aaca){var _0x2f4c6b={};_0x2f4c6b[_0x37aaca]={'$like':'%'+_0x365d8d[_0xcfb3('0x41')]['filter']+'%'};return _0x2f4c6b;})});}if(_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x7c')]){var _0x40aa23=_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x7c')][_0xcfb3('0x6a')](',');var _0x3aa372={};_0x3aa372[_0x40aa23[0x0]]={'$gte':moment(_0x40aa23[0x1])[_0xcfb3('0xbb')](_0xcfb3('0xbc'))};_0x3b565a['where']=_['merge'](_0x3b565a[_0xcfb3('0x49')],_0x3aa372);}_0x3b565a=_[_0xcfb3('0x9a')]({},_0x3b565a,_0x365d8d[_0xcfb3('0xaf')]);return db[_0xcfb3('0xb5')][_0xcfb3('0x26')]({'where':_0x3b565a[_0xcfb3('0x49')]})[_0xcfb3('0x2d')](function(_0x273da1){_0x32221c[_0xcfb3('0x26')]=_0x273da1;if(_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0xad')]){_0x3b565a[_0xcfb3('0xae')]=[{'all':!![]}];}return db[_0xcfb3('0xb5')]['findAll'](_0x3b565a);})[_0xcfb3('0x2d')](function(_0x4d48c1){_0x32221c[_0xcfb3('0xaa')]=_0x4d48c1;return _0x32221c;});}})['then'](respondWithFilteredResult(_0x242534,_0x3b565a))['catch'](handleError(_0x242534,null));};exports[_0xcfb3('0xbd')]=function(_0x5cdd25,_0x4bf07a,_0x4cbcc0){return db[_0xcfb3('0x3a')][_0xcfb3('0x61')]({'where':{'id':_0x5cdd25[_0xcfb3('0xac')]['id']}})['then'](handleEntityNotFound(_0x4bf07a,null))[_0xcfb3('0x2d')](function(_0x388e09){if(_0x388e09){return _0x388e09[_0xcfb3('0xbe')](_0x5cdd25[_0xcfb3('0xb1')]['ids'],_[_0xcfb3('0xb7')](_0x5cdd25[_0xcfb3('0xb1')],[_0xcfb3('0xb6'),'id'])||{})[_0xcfb3('0xbf')](function(){return db[_0xcfb3('0x70')]['findAll']({'attributes':['id',_0xcfb3('0x30'),_0xcfb3('0x4c')],'where':{'id':_0x5cdd25[_0xcfb3('0xb1')][_0xcfb3('0xb6')]}});})[_0xcfb3('0x2d')](function(_0x57c772){socket[_0xcfb3('0xc0')](_0xcfb3('0xc1'),{'id':Number(_0x5cdd25[_0xcfb3('0xac')]['id']),'tags':_0x57c772||[]});return{'id':Number(_0x5cdd25[_0xcfb3('0xac')]['id']),'tags':_0x57c772||[]};});}})[_0xcfb3('0x2d')](respondWithResult(_0x4bf07a,null))[_0xcfb3('0x38')](handleError(_0x4bf07a,null));};exports['removeTags']=function(_0x87bc4d,_0x11ff83,_0x1beaf4){return db[_0xcfb3('0x3a')]['find']({'where':{'id':_0x87bc4d[_0xcfb3('0xac')]['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x11ff83,null))[_0xcfb3('0x2d')](function(_0xdbea19){if(_0xdbea19){return _0xdbea19[_0xcfb3('0xc2')](_0x87bc4d[_0xcfb3('0x41')]['ids']);}})[_0xcfb3('0x2d')](respondWithStatusCode(_0x11ff83,null))[_0xcfb3('0x38')](handleError(_0x11ff83,null));};exports[_0xcfb3('0xc3')]=function(_0x473a1e,_0x405801){var _0x44e808=moment()[_0xcfb3('0xc4')]()['toString']();var _0x75f3a6=path[_0xcfb3('0xc5')](config[_0xcfb3('0xc6')],'server',_0xcfb3('0xc7'),_0xcfb3('0xc8'));var _0x54a235=path[_0xcfb3('0xc5')](config[_0xcfb3('0xc6')],'server',_0xcfb3('0xc7'),_0xcfb3('0xc9'));var _0x40ad95=path[_0xcfb3('0xc5')](_0x75f3a6,_0x44e808);var _0x3a2d75=util[_0xcfb3('0xbb')](_0xcfb3('0xca'),_0x473a1e[_0xcfb3('0xac')]['id'],_0x44e808);var _0x105bf5=path[_0xcfb3('0xc5')](_0x75f3a6,_0x3a2d75);var _0x1d6040=[];_0x1d6040[_0xcfb3('0x37')]({'model':db[_0xcfb3('0x71')],'as':_0xcfb3('0x71'),'attributes':['id',_0xcfb3('0x34')],'raw':!![]});_0x1d6040['push']({'model':db['CmContact'],'as':_0xcfb3('0x67'),'attributes':['id',_0xcfb3('0xcb'),'lastName'],'raw':!![]});if(_0x473a1e[_0xcfb3('0x41')][_0xcfb3('0xc9')]){_0x1d6040[_0xcfb3('0x37')]({'model':db[_0xcfb3('0xcc')],'as':'Attachment','raw':!![]});}var _0x5e5d75=[{'model':db[_0xcfb3('0xb5')],'as':'Messages','attributes':['id',_0xcfb3('0xb1'),'createdAt',_0xcfb3('0xcd'),'secret',_0xcfb3('0x81')],'include':_0x1d6040}];_0x5e5d75[_0xcfb3('0x37')]({'model':db['WhatsappAccount'],'as':_0xcfb3('0xce'),'attributes':['id',_0xcfb3('0x30')]});_0x5e5d75[_0xcfb3('0x37')]({'model':db[_0xcfb3('0x71')],'as':_0xcfb3('0xcf'),'attributes':['id','fullname']});return db[_0xcfb3('0x3a')]['find']({'where':{'id':_0x473a1e[_0xcfb3('0xac')]['id']},'include':_0x5e5d75})[_0xcfb3('0x2d')](handleEntityNotFound(_0x405801,null))['then'](function(_0x156c50){if(_0x156c50){var _0x5d52ff=_0x156c50[_0xcfb3('0xd0')]({'plain':!![]});fs['mkdirSync'](_0x40ad95);var _0x270800={'channel':'Whatsapp','account':_0x5d52ff['Account']['name'],'agent':_0x5d52ff[_0xcfb3('0xcf')]?_0x5d52ff[_0xcfb3('0xcf')]['fullname']:_0xcfb3('0xd1'),'createdAt':moment(_0x5d52ff['createdAt'])['format'](_0xcfb3('0xbc'))['toString'](),'closedAt':_0x5d52ff[_0xcfb3('0xd2')]?moment(_0x5d52ff[_0xcfb3('0xd3')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xcfb3('0x98')]():'','disposition':_0x5d52ff[_0xcfb3('0xd4')],'messages':_(_0x5d52ff[_0xcfb3('0xd5')])[_0xcfb3('0x85')]({'secret':![]})[_0xcfb3('0x33')](function(_0x84b898){if(_0x84b898[_0xcfb3('0xcc')]){var _0x1767cd=path[_0xcfb3('0xc5')](_0x54a235,_0x84b898['Attachment'][_0xcfb3('0xd6')]);if(fs[_0xcfb3('0xd7')](_0x1767cd)){fs[_0xcfb3('0xd8')](_0x1767cd)[_0xcfb3('0xd9')](fs[_0xcfb3('0xda')](path[_0xcfb3('0xc5')](_0x40ad95,_0x84b898[_0xcfb3('0xcc')][_0xcfb3('0xd6')])));}}return{'date':moment(_0x84b898[_0xcfb3('0x7a')])['format'](_0xcfb3('0xbc'))[_0xcfb3('0x98')](),'sender':_0x84b898[_0xcfb3('0xcd')]===_0xcfb3('0xdb')?_0x84b898[_0xcfb3('0x71')]?_0x84b898['User']['fullname']:_0xcfb3('0xdc'):_0x84b898['Contact'][_0xcfb3('0xcb')]+(_0x84b898[_0xcfb3('0x67')][_0xcfb3('0xdd')]?'\x20'+_0x84b898[_0xcfb3('0x67')]['lastName']:''),'body':_0x84b898[_0xcfb3('0xcc')]?_0x84b898['Attachment'][_0xcfb3('0xd6')]:_0x84b898[_0xcfb3('0xb1')],'direction':_0x84b898['direction']===_0xcfb3('0xdb')?'A':'C','secret':_0x84b898[_0xcfb3('0xde')],'read':_0x84b898['read'],'attachment':_0x84b898[_0xcfb3('0xcc')]};})[_0xcfb3('0x63')]()};return ejs[_0xcfb3('0xdf')](path[_0xcfb3('0xc5')](config[_0xcfb3('0xc6')],_0xcfb3('0xe0'),_0xcfb3('0xe1'),_0xcfb3('0xe2')),{'interaction':_0x270800})[_0xcfb3('0x2d')](function(_0x10eb11){var _0x2acdbe=path['join'](_0x40ad95,_0xcfb3('0xe3')+_0x5d52ff['id']+'-'+_0x44e808+'.pdf');var _0x5b111e={'path':_0x2acdbe,'channel':_0xcfb3('0xe4'),'interactionId':_0x5d52ff['id']};return pdf['createPdfFromHTML'](_0x10eb11,_0x5b111e);})['then'](function(){return new BPromise(function(_0x30e7ed,_0x3e22a0){zipdir(_0x40ad95,{'saveTo':_0x105bf5},function(_0x5c1f84,_0x5989a8){if(_0x5c1f84)return _0x3e22a0(_0x5c1f84);return _0x30e7ed(_0x5989a8);});})[_0xcfb3('0x2d')](function(){return new BPromise(function(_0x3719e0,_0x41952c){rimraf(_0x40ad95,function(_0x96f266){if(_0x96f266)_0x41952c(_0x96f266);return _0x3719e0();});});})['then'](function(){return _0x405801['download'](_0x105bf5,_0x3a2d75,function(_0xbb6474){if(_0xbb6474){console['log'](_0xcfb3('0xe5'),_0xbb6474);}else{fs[_0xcfb3('0xe6')](_0x105bf5);}});});});}else{return _0x405801['sendStatus'](0xc8);}})[_0xcfb3('0x38')](handleError(_0x405801,null));};
\ No newline at end of file
+var _0x0eec=['attributes','fields','hasOwnProperty','nolimit','order','sort','pick','select','field','color','from','tools_tags','u.id','u.fullname','user_has_whatsapp_interactions','left_join','cm_contacts','users','o.id\x20=\x20i.UserId','whatsapp_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','length','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','$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','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','some','compact','isEmpty','WhatsappAccountId','where','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','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?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','sequelize','toString','count','keyBy','merge','a.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','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','show','params','include','options','create','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','findAll','emit','whatsappInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','CmContact','firstName','lastName','Attachment','Messages','secret','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','closed','closedAt','basename','existsSync','createReadStream','pipe','createWriteStream','direction','System','out','views','downloadInteraction.ejs','createPdfFromHTML','log','err','unlinkSync','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','apply','reject','save','update','then','destroy','end','error','stack','name','send','Users','fullname','TagIds','Tags','split','forEach','push','catch','index','map','WhatsappInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection'];(function(_0x2631f6,_0x552ce5){var _0x45917c=function(_0x14b140){while(--_0x14b140){_0x2631f6['push'](_0x2631f6['shift']());}};_0x45917c(++_0x552ce5);}(_0x0eec,0xac));var _0xc0ee=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0eec[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xc0ee('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc0ee('0x1'));var rp=require(_0xc0ee('0x2'));var moment=require(_0xc0ee('0x3'));var BPromise=require(_0xc0ee('0x4'));var Mustache=require(_0xc0ee('0x5'));var util=require(_0xc0ee('0x6'));var path=require(_0xc0ee('0x7'));var sox=require('sox');var csv=require(_0xc0ee('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc0ee('0x9'));var _=require(_0xc0ee('0xa'));var squel=require(_0xc0ee('0xb'));var crypto=require(_0xc0ee('0xc'));var jsforce=require(_0xc0ee('0xd'));var deskjs=require(_0xc0ee('0xe'));var toCsv=require(_0xc0ee('0x8'));var querystring=require('querystring');var Papa=require(_0xc0ee('0xf'));var Redis=require(_0xc0ee('0x10'));var authService=require(_0xc0ee('0x11'));var qs=require(_0xc0ee('0x12'));var as=require(_0xc0ee('0x13'));var pdf=require(_0xc0ee('0x14'));var hardwareService=require(_0xc0ee('0x15'));var logger=require('../../config/logger')(_0xc0ee('0x16'));var utils=require(_0xc0ee('0x17'));var config=require(_0xc0ee('0x18'));var licenseUtil=require(_0xc0ee('0x19'));var db=require(_0xc0ee('0x1a'))['db'];config[_0xc0ee('0x1b')]=_[_0xc0ee('0x1c')](config[_0xc0ee('0x1b')],{'host':_0xc0ee('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc0ee('0x1e'))[_0xc0ee('0x1f')](socket);function respondWithStatusCode(_0x3743c3,_0x5f27e9){_0x5f27e9=_0x5f27e9||0xcc;return function(_0x170bf9){if(_0x170bf9){return _0x3743c3[_0xc0ee('0x20')](_0x5f27e9);}return _0x3743c3[_0xc0ee('0x21')](_0x5f27e9)['end']();};}function respondWithResult(_0x5124df,_0x30db89){_0x30db89=_0x30db89||0xc8;return function(_0x4dc6de){if(_0x4dc6de){return _0x5124df[_0xc0ee('0x21')](_0x30db89)[_0xc0ee('0x22')](_0x4dc6de);}};}function respondWithFilteredResult(_0x24672f,_0x59aad9){return function(_0x4e7e82){if(_0x4e7e82){var _0x16d050=typeof _0x59aad9[_0xc0ee('0x23')]===_0xc0ee('0x24')&&typeof _0x59aad9['limit']===_0xc0ee('0x24');var _0xe15d59=_0x4e7e82['count'];var _0x5c7652=_0x16d050?0x0:_0x59aad9[_0xc0ee('0x23')];var _0x233333=_0x16d050?_0x4e7e82['count']:_0x59aad9[_0xc0ee('0x23')]+_0x59aad9[_0xc0ee('0x25')];var _0x92c724;if(_0x233333>=_0xe15d59){_0x233333=_0xe15d59;_0x92c724=0xc8;}else{_0x92c724=0xce;}_0x24672f['status'](_0x92c724);return _0x24672f['set']('Content-Range',_0x5c7652+'-'+_0x233333+'/'+_0xe15d59)[_0xc0ee('0x22')](_0x4e7e82);}return null;};}function patchUpdates(_0x45d880){return function(_0x5d3abf){try{jsonpatch[_0xc0ee('0x26')](_0x5d3abf,_0x45d880,!![]);}catch(_0x453490){return BPromise[_0xc0ee('0x27')](_0x453490);}return _0x5d3abf[_0xc0ee('0x28')]();};}function saveUpdates(_0x216e64,_0x1892da){return function(_0x9863d1){if(_0x9863d1){return _0x9863d1[_0xc0ee('0x29')](_0x216e64)[_0xc0ee('0x2a')](function(_0x6d1087){return _0x6d1087;});}return null;};}function removeEntity(_0x2b0584,_0x25ae36){return function(_0x168ab5){if(_0x168ab5){return _0x168ab5[_0xc0ee('0x2b')]()[_0xc0ee('0x2a')](function(){_0x2b0584['status'](0xcc)[_0xc0ee('0x2c')]();});}};}function handleEntityNotFound(_0xe2e075,_0x4c1b5c){return function(_0x264542){if(!_0x264542){_0xe2e075['sendStatus'](0x194);}return _0x264542;};}function handleError(_0x1c08cb,_0x410fb2){_0x410fb2=_0x410fb2||0x1f4;return function(_0x44b511){logger[_0xc0ee('0x2d')](_0x44b511[_0xc0ee('0x2e')]);if(_0x44b511[_0xc0ee('0x2f')]){delete _0x44b511[_0xc0ee('0x2f')];}_0x1c08cb[_0xc0ee('0x21')](_0x410fb2)[_0xc0ee('0x30')](_0x44b511);};}function getInteractionUsers(_0x5a20d1,_0x394777){return new BPromise(function(_0x3d4d82,_0x31ea56){try{if(_0x394777[_0x5a20d1['id']]){_0x5a20d1[_0xc0ee('0x31')]=_['map'](_0x394777[_0x5a20d1['id']],function(_0x5cd9bd){return{'id':_0x5cd9bd['id'],'fullname':_0x5cd9bd[_0xc0ee('0x32')]};});}}catch(_0x4552fc){_0x31ea56(_0x4552fc);}_0x3d4d82(_0x5a20d1);});}function getInteractionTags(_0x252ce9,_0x4261ad){return new BPromise(function(_0x345ee5,_0x5b6819){try{if(_0x252ce9[_0xc0ee('0x33')]){_0x252ce9[_0xc0ee('0x34')]=[];_0x252ce9[_0xc0ee('0x33')][_0xc0ee('0x35')](',')[_0xc0ee('0x36')](function(_0x5ec415){_0x252ce9[_0xc0ee('0x34')][_0xc0ee('0x37')](_0x4261ad[_0x5ec415]);});}delete _0x252ce9[_0xc0ee('0x33')];}catch(_0x31a4ee){_0x5b6819(_0x31a4ee);}_0x345ee5(_0x252ce9);});}function updateWhatsappInteraction(_0x397f4e,_0x5c9cab,_0x5e84a3){return new BPromise(function(_0x37d8bf,_0x3f6a85){return getInteractionUsers(_0x397f4e,_0x5e84a3)['then'](function(_0x2ba9c3){return getInteractionTags(_0x2ba9c3,_0x5c9cab);})[_0xc0ee('0x2a')](function(_0x100971){_0x37d8bf(_0x100971);})[_0xc0ee('0x38')](function(_0x5eb97e){_0x3f6a85(_0x5eb97e);});});}exports[_0xc0ee('0x39')]=function(_0x4c6d28,_0x429956){var _0x2489dd={},_0x175f24={},_0xc669e5={'count':0x0,'rows':[]};var _0x27febb=_[_0xc0ee('0x3a')](db[_0xc0ee('0x3b')][_0xc0ee('0x3c')],function(_0x22dc91){return{'name':_0x22dc91[_0xc0ee('0x3d')],'type':_0x22dc91[_0xc0ee('0x3e')]['key']};});_0x175f24[_0xc0ee('0x3f')]=_[_0xc0ee('0x3a')](_0x27febb,_0xc0ee('0x2f'));_0x175f24[_0xc0ee('0x40')]=_[_0xc0ee('0x41')](_0x4c6d28[_0xc0ee('0x40')]);_0x175f24[_0xc0ee('0x42')]=_[_0xc0ee('0x43')](_0x175f24['model'],_0x175f24['query']);_0x2489dd[_0xc0ee('0x44')]=_['intersection'](_0x175f24[_0xc0ee('0x3f')],qs[_0xc0ee('0x45')](_0x4c6d28['query'][_0xc0ee('0x45')]));_0x2489dd['attributes']=_0x2489dd[_0xc0ee('0x44')]['length']?_0x2489dd['attributes']:_0x175f24['model'];if(!_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x46')](_0xc0ee('0x47'))){_0x2489dd[_0xc0ee('0x25')]=qs['limit'](_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x25')]);_0x2489dd[_0xc0ee('0x23')]=qs[_0xc0ee('0x23')](_0x4c6d28[_0xc0ee('0x40')]['offset']);}_0x2489dd[_0xc0ee('0x48')]=qs[_0xc0ee('0x49')](_0x4c6d28['query'][_0xc0ee('0x49')]);_0x2489dd['where']=qs[_0xc0ee('0x42')](_[_0xc0ee('0x4a')](_0x4c6d28['query'],_0x175f24[_0xc0ee('0x42')]),_0x27febb);var _0x3a1bd5=[];var _0x5f2b29=squel[_0xc0ee('0x4b')]()[_0xc0ee('0x4c')]('id')['field'](_0xc0ee('0x2f'))[_0xc0ee('0x4c')](_0xc0ee('0x4d'))[_0xc0ee('0x4e')](_0xc0ee('0x4f'));var _0x5af5a9=squel['select']()[_0xc0ee('0x4c')](_0xc0ee('0x50'))[_0xc0ee('0x4c')](_0xc0ee('0x51'))['field']('ui.WhatsappInteractionId')[_0xc0ee('0x4e')](_0xc0ee('0x52'),'ui')[_0xc0ee('0x53')]('users','u','u.id\x20=\x20ui.UserId');var _0x42a122=squel[_0xc0ee('0x4b')]()[_0xc0ee('0x4e')]('whatsapp_interactions','i')[_0xc0ee('0x53')](_0xc0ee('0x54'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xc0ee('0x53')](_0xc0ee('0x55'),'o',_0xc0ee('0x56'))[_0xc0ee('0x53')]('whatsapp_accounts','a','a.id\x20=\x20i.WhatsappAccountId')[_0xc0ee('0x53')]('whatsapp_messages','me','me.WhatsappInteractionId\x20=\x20i.id')['left_join'](_0xc0ee('0x57'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0xc0ee('0x53')](_0xc0ee('0x4f'),'t',_0xc0ee('0x58'));var _0x5de143=squel[_0xc0ee('0x59')]();var _0x59f2e9=[];var _0x2918c6=squel['expr']();var _0x3bb5ae;if(_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x5a')]){_0x3bb5ae=as[_0xc0ee('0x5b')](_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x5a')]);var _0x496187=_0x3bb5ae['sqlOperator'];for(var _0x6e6b2c=0x0;_0x6e6b2c<_0x3bb5ae['conditions'][_0xc0ee('0x5c')];_0x6e6b2c++){var _0x59f19f=_0x3bb5ae[_0xc0ee('0x5d')][_0x6e6b2c];var _0x3843eb='i';var _0x45ac12=_[_0xc0ee('0x5e')](_0x27febb,[_0xc0ee('0x2f'),_0x59f19f[_0xc0ee('0x4c')]]);if(!_0x45ac12){switch(_0x59f19f['field']){case _0xc0ee('0x5f'):if(_0x59f19f[_0xc0ee('0x60')]==0x1){_0x42a122['having']('`'+_0x59f19f[_0xc0ee('0x4c')]+_0xc0ee('0x61'));}else{_0x42a122[_0xc0ee('0x62')]('`'+_0x59f19f[_0xc0ee('0x4c')]+_0xc0ee('0x63'));}break;case _0xc0ee('0x64'):if(_0x59f19f['operator']===_0xc0ee('0x65')){if(_0x59f19f[_0xc0ee('0x60')]['split']('\x20')['length']>0x1){_0x5de143[_0x496187](_0xc0ee('0x66'),qs['getFullTextValue'](_0x59f19f[_0xc0ee('0x60')]),null);}else{var _0x2fe985='%'+_0x59f19f[_0xc0ee('0x60')]+'%';_0x5de143[_0x496187](_0xc0ee('0x67'),_0x2fe985,_0x2fe985,_0x2fe985);}}else{_0x45ac12=_[_0xc0ee('0x5e')](_0x27febb,[_0xc0ee('0x2f'),_0xc0ee('0x68')]);_0x59f19f[_0xc0ee('0x4c')]=_0xc0ee('0x68');_0x1e48fd=as[_0xc0ee('0x69')](_0x3843eb,_0x45ac12[_0xc0ee('0x3e')],_0x59f19f);_0x5de143[_0x496187](_0x1e48fd[_0xc0ee('0x6a')],_0x1e48fd[_0xc0ee('0x60')]['start'],_0x1e48fd[_0xc0ee('0x60')][_0xc0ee('0x2c')]);}break;case _0xc0ee('0x6b'):var _0x43c9ed=_0x59f19f[_0xc0ee('0x60')]['split'](',')[_0xc0ee('0x3a')](function(_0x5ee013){return Number(_0x5ee013);});_0x43c9ed[_0xc0ee('0x36')](function(_0x22eba5){_0x2918c6['or'](_0xc0ee('0x6c'),'%,'+_0x22eba5+',%');});_0x59f2e9=_[_0xc0ee('0x6d')](_0x59f2e9,_0x43c9ed);break;case _0xc0ee('0x6e'):if(_0x59f19f[_0xc0ee('0x6f')]==='$substring'){_0x5de143[_0x496187](_0xc0ee('0x70'),'%'+_0x59f19f['value']+'%',null);}else{_0x45ac12=_[_0xc0ee('0x5e')](_0x27febb,[_0xc0ee('0x2f'),_0xc0ee('0x71')]);_0x59f19f[_0xc0ee('0x4c')]=_0xc0ee('0x71');_0x1e48fd=as[_0xc0ee('0x69')](_0x3843eb,_0x45ac12[_0xc0ee('0x3e')],_0x59f19f);_0x5de143[_0x496187](_0x1e48fd[_0xc0ee('0x6a')],_0x1e48fd[_0xc0ee('0x60')][_0xc0ee('0x72')],_0x1e48fd[_0xc0ee('0x60')][_0xc0ee('0x2c')]);}break;case _0xc0ee('0x73'):_0x1e48fd=as[_0xc0ee('0x69')]('me',null,_0x59f19f);_0x5de143[_0x496187](_0x1e48fd[_0xc0ee('0x6a')],_0x1e48fd[_0xc0ee('0x60')][_0xc0ee('0x72')],_0x1e48fd['value']['end']);break;}}else{var _0x1e48fd=as[_0xc0ee('0x69')](_0x3843eb,_0x45ac12['type'],_0x59f19f);_0x5de143[_0x496187](_0x1e48fd[_0xc0ee('0x6a')],_0x1e48fd[_0xc0ee('0x60')]['start'],_0x1e48fd['value'][_0xc0ee('0x2c')]);}}}else{var _0x256cdf=_(_0x4c6d28[_0xc0ee('0x40')])['keys']()[_0xc0ee('0x3a')](function(_0x1d9cec){return _[_0xc0ee('0x74')](_0x27febb,['name',_0x1d9cec])?_0x1d9cec:undefined;})[_0xc0ee('0x75')]()[_0xc0ee('0x60')]();if(!_[_0xc0ee('0x76')](_0x256cdf)){_0x256cdf[_0xc0ee('0x36')](function(_0x257be9){if(_0x257be9===_0xc0ee('0x77')){_0x42a122[_0xc0ee('0x78')]('i.WhatsappAccountId\x20IN\x20?',[][_0xc0ee('0x79')](_0x4c6d28['query'][_0x257be9]));}else if(_0x257be9===_0xc0ee('0x7a')){var _0x596373=JSON[_0xc0ee('0x7b')](_0x4c6d28[_0xc0ee('0x40')][_0x257be9])[_0xc0ee('0x7c')];var _0x14b1af=JSON[_0xc0ee('0x7b')](_0x4c6d28[_0xc0ee('0x40')][_0x257be9])[_0xc0ee('0x7d')];_0x42a122[_0xc0ee('0x78')](_0xc0ee('0x7e'),_0x596373,_0x14b1af);}else{if(_0x4c6d28[_0xc0ee('0x40')][_0x257be9]==='null'){_0x42a122[_0xc0ee('0x78')]('i.'+_0x257be9+_0xc0ee('0x7f'));}else{_0x42a122[_0xc0ee('0x78')]('i.'+_0x257be9+_0xc0ee('0x80'),_0x4c6d28['query'][_0x257be9]);}}});}if(_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x81')]){if(_0x4c6d28['query']['read']==0x1){_0x42a122[_0xc0ee('0x62')](_0xc0ee('0x82'));}else{_0x42a122[_0xc0ee('0x62')](_0xc0ee('0x83'));}}if(_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x84')]){_0x59f2e9=_[_0xc0ee('0x85')](_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x84')])?_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x84')]:new Array(_0x4c6d28['query'][_0xc0ee('0x84')]);_0x59f2e9[_0xc0ee('0x36')](function(_0x170a15){_0x2918c6['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x170a15+',%');});}if(_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x86')]){var _0x5794d5=_0x4c6d28[_0xc0ee('0x40')][_0xc0ee('0x86')][_0xc0ee('0x87')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xc0ee('0x88')](_0x5794d5)){_0x5de143['or'](_0xc0ee('0x89'),_0x5794d5+'%')['or'](_0xc0ee('0x8a'),_0x5794d5+'%');}else{_0x5de143['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc0ee('0x8b')](_0x5794d5))['or'](_0xc0ee('0x8c'),_0x5794d5+'%');}}}_0x42a122[_0xc0ee('0x78')](_0x5de143);_0x42a122[_0xc0ee('0x8d')](_0xc0ee('0x8e'));var _0x419953={'type':db[_0xc0ee('0x8f')][_0xc0ee('0x90')][_0xc0ee('0x91')],'raw':!![]};var _0x53e5b5=_0x42a122[_0xc0ee('0x92')]();_0x53e5b5[_0xc0ee('0x4c')]('i.id');_0x53e5b5[_0xc0ee('0x4c')](_0xc0ee('0x93'),_0xc0ee('0x5f'));if(_0x2489dd['order']){_0x2489dd[_0xc0ee('0x48')][_0xc0ee('0x36')](function(_0x34746c){var _0x5c3255=_0x34746c[0x0]===_0xc0ee('0x94')?_0x34746c[0x0]:'i.'+_0x34746c[0x0];_0x42a122[_0xc0ee('0x48')](_0x5c3255,_0x34746c[0x1]===_0xc0ee('0x95')?![]:!![]);});}if(!_[_0xc0ee('0x76')](_0x59f2e9)){_0x42a122[_0xc0ee('0x62')](_0x2918c6);_0x53e5b5['where'](_0xc0ee('0x96'),_0x59f2e9);}BPromise[_0xc0ee('0x97')]()['then'](function(){if(!_0x3bb5ae){if(_0x4c6d28[_0xc0ee('0x40')]['WhatsappAccountId'])return;_0x53e5b5['where'](_0xc0ee('0x98'));_0x42a122['where'](_0xc0ee('0x98'));return;}if(_0x4c6d28[_0xc0ee('0x99')][_0xc0ee('0x9a')]!==_0xc0ee('0x9b'))return;return _0x4c6d28[_0xc0ee('0x99')][_0xc0ee('0x9c')]({'attributes':['id'],'raw':!![]})[_0xc0ee('0x2a')](function(_0x5643a9){if(_['isEmpty'](_0x5643a9)){_0x53e5b5[_0xc0ee('0x78')](_0xc0ee('0x9d'));_0x42a122[_0xc0ee('0x78')](_0xc0ee('0x9d'));}else{_0x53e5b5[_0xc0ee('0x78')](_0xc0ee('0x9e'),_[_0xc0ee('0x3a')](_0x5643a9,'id'));_0x42a122[_0xc0ee('0x78')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x5643a9,'id'));}});})[_0xc0ee('0x2a')](function(){if(_0x4c6d28['user'][_0xc0ee('0x9a')]===_0xc0ee('0x9b')&&!_0x3bb5ae&&!_0x4c6d28['query'][_0xc0ee('0x77')])return[];return db[_0xc0ee('0x9f')]['query'](_0x53e5b5[_0xc0ee('0xa0')](),_0x419953);})[_0xc0ee('0x2a')](function(_0x37d575){_0xc669e5[_0xc0ee('0xa1')]=_0x37d575[_0xc0ee('0x5c')];if(_0xc669e5[_0xc0ee('0xa1')]===0x0)return[];return db['sequelize'][_0xc0ee('0x40')](_0x5f2b29[_0xc0ee('0xa0')](),_0x419953)['then'](function(_0x1423a2){_0x3a1bd5=_[_0xc0ee('0xa2')](_0x1423a2,'id');_0x419953=_[_0xc0ee('0xa3')](_0x419953,{'model':db[_0xc0ee('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4c6d28[_0xc0ee('0x40')]['fields']){_0x2489dd[_0xc0ee('0x44')][_0xc0ee('0x36')](function(_0x112f74){_0x42a122[_0xc0ee('0x4c')]('i.'+_0x112f74);});}else{_0x42a122['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x42a122['field'](_0xc0ee('0xa4'),'Account.key');_0x42a122[_0xc0ee('0x4c')]('a.mandatoryDisposition',_0xc0ee('0xa5'));_0x42a122['field'](_0xc0ee('0xa6'),_0xc0ee('0x94'));_0x42a122[_0xc0ee('0x4c')](_0xc0ee('0xa7'));_0x42a122['field'](_0xc0ee('0xa8'),_0xc0ee('0xa9'));_0x42a122[_0xc0ee('0x4c')](_0xc0ee('0xaa'),'Contact.lastName');_0x42a122[_0xc0ee('0x4c')](_0xc0ee('0xab'),_0xc0ee('0xac'));_0x42a122[_0xc0ee('0x4c')](_0xc0ee('0xad'),_0xc0ee('0xae'));_0x42a122[_0xc0ee('0x4c')](_0xc0ee('0xaf'),_0xc0ee('0xb0'));_0x42a122[_0xc0ee('0x4c')](_0xc0ee('0xb1'),_0xc0ee('0xb2'));_0x42a122[_0xc0ee('0x4c')]('o.fullname',_0xc0ee('0xb3'));_0x42a122['field'](_0xc0ee('0xb4'),_0xc0ee('0xb5'));_0x42a122[_0xc0ee('0x4c')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xc0ee('0x33'));}if(_0x2489dd[_0xc0ee('0x25')])_0x42a122[_0xc0ee('0x25')](_0x2489dd[_0xc0ee('0x25')]);if(_0x2489dd[_0xc0ee('0x23')])_0x42a122['offset'](_0x2489dd[_0xc0ee('0x23')]);return db['sequelize'][_0xc0ee('0x40')](_0x42a122['toString'](),_0x419953);})[_0xc0ee('0x2a')](function(_0x4338b9){if(_0x4338b9[_0xc0ee('0x5c')]>0x0)_0x5af5a9[_0xc0ee('0x78')](_0xc0ee('0xb6'),_['map'](_0x4338b9,'id'));return db[_0xc0ee('0x9f')]['query'](_0x5af5a9[_0xc0ee('0xa0')](),_0x419953)['then'](function(_0x2560e3){var _0x18eaf6=_[_0xc0ee('0xb7')](_0x2560e3,_0xc0ee('0xb8'));var _0x10f40a=[];_0x4338b9[_0xc0ee('0x36')](function(_0x10fa8d){_0x10f40a[_0xc0ee('0x37')](updateWhatsappInteraction(_0x10fa8d,_0x3a1bd5,_0x18eaf6));});return BPromise['all'](_0x10f40a);});});})[_0xc0ee('0x2a')](function(_0x511cc0){_0xc669e5['rows']=_0x511cc0;return _0xc669e5;})[_0xc0ee('0x2a')](respondWithFilteredResult(_0x429956,_0x2489dd))[_0xc0ee('0x38')](handleError(_0x429956,null));};exports[_0xc0ee('0xb9')]=function(_0x89daec,_0x3c3067){var _0x5c9758={'raw':![],'where':{'id':_0x89daec[_0xc0ee('0xba')]['id']}},_0x280ae1={};_0x280ae1['model']=_[_0xc0ee('0x41')](db[_0xc0ee('0x3b')][_0xc0ee('0x3c')]);_0x280ae1[_0xc0ee('0x40')]=_[_0xc0ee('0x41')](_0x89daec[_0xc0ee('0x40')]);_0x280ae1[_0xc0ee('0x42')]=_[_0xc0ee('0x43')](_0x280ae1[_0xc0ee('0x3f')],_0x280ae1[_0xc0ee('0x40')]);_0x5c9758[_0xc0ee('0x44')]=_[_0xc0ee('0x43')](_0x280ae1[_0xc0ee('0x3f')],qs[_0xc0ee('0x45')](_0x89daec[_0xc0ee('0x40')][_0xc0ee('0x45')]));_0x5c9758[_0xc0ee('0x44')]=_0x5c9758[_0xc0ee('0x44')][_0xc0ee('0x5c')]?_0x5c9758[_0xc0ee('0x44')]:_0x280ae1[_0xc0ee('0x3f')];if(_0x89daec[_0xc0ee('0x40')]['includeAll']){_0x5c9758[_0xc0ee('0xbb')]=[{'all':!![]}];}_0x5c9758=_[_0xc0ee('0xa3')]({},_0x5c9758,_0x89daec[_0xc0ee('0xbc')]);return db[_0xc0ee('0x3b')][_0xc0ee('0x5e')](_0x5c9758)['then'](handleEntityNotFound(_0x3c3067,null))['then'](respondWithResult(_0x3c3067,null))[_0xc0ee('0x38')](handleError(_0x3c3067,null));};exports[_0xc0ee('0xbd')]=function(_0x29df5a,_0x72e33f){return db[_0xc0ee('0x3b')]['create'](_0x29df5a[_0xc0ee('0x73')],{})[_0xc0ee('0x2a')](respondWithResult(_0x72e33f,0xc9))[_0xc0ee('0x38')](handleError(_0x72e33f,null));};exports[_0xc0ee('0x29')]=function(_0x2b1bc6,_0x1e6111){if(_0x2b1bc6['body']['id']){delete _0x2b1bc6[_0xc0ee('0x73')]['id'];}return db[_0xc0ee('0x3b')][_0xc0ee('0x5e')]({'where':{'id':_0x2b1bc6[_0xc0ee('0xba')]['id']}})[_0xc0ee('0x2a')](handleEntityNotFound(_0x1e6111,null))[_0xc0ee('0x2a')](saveUpdates(_0x2b1bc6[_0xc0ee('0x73')],null))['then'](respondWithResult(_0x1e6111,null))[_0xc0ee('0x38')](handleError(_0x1e6111,null));};exports['destroy']=function(_0x4f2ce7,_0x50af9d){return db[_0xc0ee('0x3b')][_0xc0ee('0x5e')]({'where':{'id':_0x4f2ce7[_0xc0ee('0xba')]['id']}})[_0xc0ee('0x2a')](handleEntityNotFound(_0x50af9d,null))[_0xc0ee('0x2a')](removeEntity(_0x50af9d,null))[_0xc0ee('0x38')](handleError(_0x50af9d,null));};exports[_0xc0ee('0xbe')]=function(_0x28edca,_0x3a6390){return db[_0xc0ee('0x3b')][_0xc0ee('0xbe')]()[_0xc0ee('0x2a')](respondWithResult(_0x3a6390,null))[_0xc0ee('0x38')](handleError(_0x3a6390,null));};exports[_0xc0ee('0xbf')]=function(_0x3e1dcb,_0x295597,_0x3bac5a){return db[_0xc0ee('0xc0')]['find']({'where':{'id':_0x3e1dcb['params']['id']}})[_0xc0ee('0x2a')](handleEntityNotFound(_0x295597,null))['then'](function(_0x336ae2){if(_0x336ae2){return _0x336ae2[_0xc0ee('0xbf')](_0x3e1dcb[_0xc0ee('0x73')][_0xc0ee('0xc1')],_[_0xc0ee('0xc2')](_0x3e1dcb[_0xc0ee('0x73')],[_0xc0ee('0xc1'),'id'])||{});}})[_0xc0ee('0x2a')](respondWithResult(_0x295597,null))[_0xc0ee('0x38')](handleError(_0x295597,null));};exports[_0xc0ee('0xc3')]=function(_0x48d4c8,_0x3973fb,_0x598460){var _0x792c78={'raw':![],'where':{}};var _0x4195db={};var _0x4eb3d6={'count':0x0,'rows':[]};return db[_0xc0ee('0x3b')][_0xc0ee('0xc4')]({'where':{'id':_0x48d4c8[_0xc0ee('0xba')]['id']}})[_0xc0ee('0x2a')](handleEntityNotFound(_0x3973fb,null))[_0xc0ee('0x2a')](function(_0x3d43e4){if(_0x3d43e4){_0x4195db['model']=_[_0xc0ee('0x41')](db[_0xc0ee('0xc0')][_0xc0ee('0x3c')]);_0x4195db['query']=_[_0xc0ee('0x41')](_0x48d4c8['query']);_0x4195db[_0xc0ee('0x42')]=_[_0xc0ee('0x43')](_0x4195db[_0xc0ee('0x3f')],_0x4195db[_0xc0ee('0x40')]);_0x792c78[_0xc0ee('0x44')]=_[_0xc0ee('0x43')](_0x4195db[_0xc0ee('0x3f')],qs['fields'](_0x48d4c8['query'][_0xc0ee('0x45')]));_0x792c78['attributes']=_0x792c78[_0xc0ee('0x44')][_0xc0ee('0x5c')]?_0x792c78[_0xc0ee('0x44')]:_0x4195db[_0xc0ee('0x3f')];if(!_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0x46')](_0xc0ee('0x47'))){_0x792c78[_0xc0ee('0x25')]=qs['limit'](_0x48d4c8['query'][_0xc0ee('0x25')]);_0x792c78[_0xc0ee('0x23')]=qs[_0xc0ee('0x23')](_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0x23')]);}_0x792c78[_0xc0ee('0x48')]=qs[_0xc0ee('0x49')](_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0x49')]);_0x792c78[_0xc0ee('0x78')]=qs[_0xc0ee('0x42')](_[_0xc0ee('0x4a')](_0x48d4c8['query'],_0x4195db[_0xc0ee('0x42')]));_0x792c78[_0xc0ee('0x78')][_0xc0ee('0xb8')]=_0x3d43e4['id'];if(_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0x86')]){_0x792c78[_0xc0ee('0x78')]=_[_0xc0ee('0xa3')](_0x792c78[_0xc0ee('0x78')],{'$or':_[_0xc0ee('0x3a')](_0x792c78['attributes'],function(_0x3b35f0){var _0xb98eb={};_0xb98eb[_0x3b35f0]={'$like':'%'+_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0x86')]+'%'};return _0xb98eb;})});}if(_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0x7c')]){var _0x3ef87b=_0x48d4c8['query'][_0xc0ee('0x7c')]['split'](',');var _0x2a78c4={};_0x2a78c4[_0x3ef87b[0x0]]={'$gte':moment(_0x3ef87b[0x1])[_0xc0ee('0xc5')](_0xc0ee('0xc6'))};_0x792c78['where']=_['merge'](_0x792c78['where'],_0x2a78c4);}_0x792c78=_[_0xc0ee('0xa3')]({},_0x792c78,_0x48d4c8[_0xc0ee('0xbc')]);return db[_0xc0ee('0xc0')][_0xc0ee('0xa1')]({'where':_0x792c78['where']})['then'](function(_0x173c42){_0x4eb3d6[_0xc0ee('0xa1')]=_0x173c42;if(_0x48d4c8[_0xc0ee('0x40')][_0xc0ee('0xc7')]){_0x792c78[_0xc0ee('0xbb')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x792c78);})[_0xc0ee('0x2a')](function(_0x12de8a){_0x4eb3d6['rows']=_0x12de8a;return _0x4eb3d6;});}})[_0xc0ee('0x2a')](respondWithFilteredResult(_0x3973fb,_0x792c78))[_0xc0ee('0x38')](handleError(_0x3973fb,null));};exports[_0xc0ee('0xc8')]=function(_0x285847,_0x4c9f31,_0x3559dc){return db[_0xc0ee('0x3b')]['find']({'where':{'id':_0x285847[_0xc0ee('0xba')]['id']}})[_0xc0ee('0x2a')](handleEntityNotFound(_0x4c9f31,null))['then'](function(_0x55e8f1){if(_0x55e8f1){return _0x55e8f1['setTags'](_0x285847[_0xc0ee('0x73')][_0xc0ee('0xc1')],_[_0xc0ee('0xc2')](_0x285847['body'],['ids','id'])||{})['spread'](function(){return db[_0xc0ee('0x6b')][_0xc0ee('0xc9')]({'attributes':['id',_0xc0ee('0x2f'),'color'],'where':{'id':_0x285847['body']['ids']}});})[_0xc0ee('0x2a')](function(_0x32385d){socket[_0xc0ee('0xca')](_0xc0ee('0xcb'),{'id':Number(_0x285847['params']['id']),'tags':_0x32385d||[]});return{'id':Number(_0x285847[_0xc0ee('0xba')]['id']),'tags':_0x32385d||[]};});}})['then'](respondWithResult(_0x4c9f31,null))[_0xc0ee('0x38')](handleError(_0x4c9f31,null));};exports[_0xc0ee('0xcc')]=function(_0x3768b0,_0x483c73,_0x3c9075){return db[_0xc0ee('0x3b')][_0xc0ee('0x5e')]({'where':{'id':_0x3768b0[_0xc0ee('0xba')]['id']}})[_0xc0ee('0x2a')](handleEntityNotFound(_0x483c73,null))[_0xc0ee('0x2a')](function(_0x4b88ed){if(_0x4b88ed){return _0x4b88ed[_0xc0ee('0xcc')](_0x3768b0[_0xc0ee('0x40')][_0xc0ee('0xc1')]);}})['then'](respondWithStatusCode(_0x483c73,null))[_0xc0ee('0x38')](handleError(_0x483c73,null));};exports[_0xc0ee('0xcd')]=function(_0x2b9d29,_0x31d485){var _0x464d41=moment()['unix']()['toString']();var _0x52ef49=path[_0xc0ee('0xce')](config[_0xc0ee('0xcf')],_0xc0ee('0xd0'),_0xc0ee('0xd1'),_0xc0ee('0xd2'));var _0x3f888c=path[_0xc0ee('0xce')](config['root'],_0xc0ee('0xd0'),'files',_0xc0ee('0xd3'));var _0x546ba3=path['join'](_0x52ef49,_0x464d41);var _0x37163a=util[_0xc0ee('0xc5')]('transcript-%d-%s.zip',_0x2b9d29['params']['id'],_0x464d41);var _0x1fdacb=path[_0xc0ee('0xce')](_0x52ef49,_0x37163a);var _0x115a19=[];_0x115a19[_0xc0ee('0x37')]({'model':db[_0xc0ee('0x6e')],'as':'User','attributes':['id',_0xc0ee('0x32')],'raw':!![]});_0x115a19[_0xc0ee('0x37')]({'model':db[_0xc0ee('0xd4')],'as':'Contact','attributes':['id',_0xc0ee('0xd5'),_0xc0ee('0xd6')],'raw':!![]});if(_0x2b9d29['query']['attachments']){_0x115a19['push']({'model':db['Attachment'],'as':_0xc0ee('0xd7'),'raw':!![]});}var _0x11a21f=[{'model':db['WhatsappMessage'],'as':_0xc0ee('0xd8'),'attributes':['id',_0xc0ee('0x73'),_0xc0ee('0x7a'),'direction',_0xc0ee('0xd9'),_0xc0ee('0x81')],'include':_0x115a19}];_0x11a21f[_0xc0ee('0x37')]({'model':db[_0xc0ee('0xda')],'as':_0xc0ee('0xdb'),'attributes':['id',_0xc0ee('0x2f')]});_0x11a21f[_0xc0ee('0x37')]({'model':db[_0xc0ee('0x6e')],'as':_0xc0ee('0xdc'),'attributes':['id','fullname']});return db[_0xc0ee('0x3b')][_0xc0ee('0x5e')]({'where':{'id':_0x2b9d29[_0xc0ee('0xba')]['id']},'include':_0x11a21f})[_0xc0ee('0x2a')](handleEntityNotFound(_0x31d485,null))['then'](function(_0x2b7d02){if(_0x2b7d02){var _0x3b2f12=_0x2b7d02[_0xc0ee('0xdd')]({'plain':!![]});fs[_0xc0ee('0xde')](_0x546ba3);var _0x10219c={'channel':_0xc0ee('0xdf'),'account':_0x3b2f12[_0xc0ee('0xdb')]['name'],'agent':_0x3b2f12[_0xc0ee('0xdc')]?_0x3b2f12[_0xc0ee('0xdc')]['fullname']:'N.A.','createdAt':moment(_0x3b2f12[_0xc0ee('0x7a')])[_0xc0ee('0xc5')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x3b2f12[_0xc0ee('0xe0')]?moment(_0x3b2f12[_0xc0ee('0xe1')])['format'](_0xc0ee('0xc6'))[_0xc0ee('0xa0')]():'','disposition':_0x3b2f12['disposition'],'messages':_(_0x3b2f12['Messages'])[_0xc0ee('0x86')]({'secret':![]})[_0xc0ee('0x3a')](function(_0x1e05ca){if(_0x1e05ca[_0xc0ee('0xd7')]){var _0x4877c2=path[_0xc0ee('0xce')](_0x3f888c,_0x1e05ca['Attachment'][_0xc0ee('0xe2')]);if(fs[_0xc0ee('0xe3')](_0x4877c2)){fs[_0xc0ee('0xe4')](_0x4877c2)[_0xc0ee('0xe5')](fs[_0xc0ee('0xe6')](path['join'](_0x546ba3,_0x1e05ca[_0xc0ee('0xd7')]['basename'])));}}return{'date':moment(_0x1e05ca[_0xc0ee('0x7a')])[_0xc0ee('0xc5')](_0xc0ee('0xc6'))[_0xc0ee('0xa0')](),'sender':_0x1e05ca[_0xc0ee('0xe7')]==='out'?_0x1e05ca[_0xc0ee('0x6e')]?_0x1e05ca[_0xc0ee('0x6e')][_0xc0ee('0x32')]:_0xc0ee('0xe8'):_0x1e05ca['Contact'][_0xc0ee('0xd5')]+(_0x1e05ca[_0xc0ee('0x64')][_0xc0ee('0xd6')]?'\x20'+_0x1e05ca[_0xc0ee('0x64')][_0xc0ee('0xd6')]:''),'body':_0x1e05ca[_0xc0ee('0xd7')]?_0x1e05ca[_0xc0ee('0xd7')][_0xc0ee('0xe2')]:_0x1e05ca['body'],'direction':_0x1e05ca[_0xc0ee('0xe7')]===_0xc0ee('0xe9')?'A':'C','secret':_0x1e05ca[_0xc0ee('0xd9')],'read':_0x1e05ca[_0xc0ee('0x81')],'attachment':_0x1e05ca[_0xc0ee('0xd7')]};})[_0xc0ee('0x60')]()};return ejs['renderFile'](path[_0xc0ee('0xce')](config[_0xc0ee('0xcf')],_0xc0ee('0xd0'),_0xc0ee('0xea'),_0xc0ee('0xeb')),{'interaction':_0x10219c})['then'](function(_0x32a476){var _0x3d1842=path[_0xc0ee('0xce')](_0x546ba3,'transcript-'+_0x3b2f12['id']+'-'+_0x464d41+'.pdf');var _0xc54620={'path':_0x3d1842,'channel':_0xc0ee('0xdf'),'interactionId':_0x3b2f12['id']};return pdf[_0xc0ee('0xec')](_0x32a476,_0xc54620);})[_0xc0ee('0x2a')](function(){return new BPromise(function(_0x1276dd,_0x171545){zipdir(_0x546ba3,{'saveTo':_0x1fdacb},function(_0x1be8b4,_0x92b9b3){if(_0x1be8b4)return _0x171545(_0x1be8b4);return _0x1276dd(_0x92b9b3);});})[_0xc0ee('0x2a')](function(){return new BPromise(function(_0x5721b9,_0x36abef){rimraf(_0x546ba3,function(_0x2a1397){if(_0x2a1397)_0x36abef(_0x2a1397);return _0x5721b9();});});})[_0xc0ee('0x2a')](function(){return _0x31d485['download'](_0x1fdacb,_0x37163a,function(_0x23b144){if(_0x23b144){console[_0xc0ee('0xed')](_0xc0ee('0xee'),_0x23b144);}else{fs[_0xc0ee('0xef')](_0x1fdacb);}});});});}else{return _0x31d485['sendStatus'](0xc8);}})[_0xc0ee('0x38')](handleError(_0x31d485,null));};
\ No newline at end of file
index f7a9e9f..4283751 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e5=['remove','getUsers','then','setDataValue','map','findAll','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x2781bb,_0x5c9cf0){var _0x36126a=function(_0x96dcc5){while(--_0x96dcc5){_0x2781bb['push'](_0x2781bb['shift']());}};_0x36126a(++_0x5c9cf0);}(_0xa9e5,0x8a));var _0x5a9e=function(_0x1fc49e,_0x4d31d1){_0x1fc49e=_0x1fc49e-0x0;var _0x57d011=_0xa9e5[_0x1fc49e];return _0x57d011;};'use strict';var EventEmitter=require(_0x5a9e('0x0'));var WhatsappInteraction=require(_0x5a9e('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x5a9e('0x1'))['db'][_0x5a9e('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x5a9e('0x3')](0x0);var events={'afterCreate':_0x5a9e('0x4'),'afterUpdate':_0x5a9e('0x5'),'afterDestroy':_0x5a9e('0x6')};function emitEvent(_0x3ce605){return function(_0x2f42f8,_0x120d60,_0x34a9ed){_0x2f42f8[_0x5a9e('0x7')]({'attributes':['id'],'raw':!![]})[_0x5a9e('0x8')](function(_0x69b06a){_0x2f42f8[_0x5a9e('0x9')]('Users',_0x69b06a[_0x5a9e('0xa')](function(_0x18ee71){return{'id':_0x18ee71['id']};}));return WhatsappMessage[_0x5a9e('0xb')]({'where':{'WhatsappInteractionId':_0x2f42f8['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5a9e('0x8')](function(_0x4ffdb3){_0x2f42f8[_0x5a9e('0x9')]('unreadMessages',_0x4ffdb3[_0x5a9e('0xc')]);WhatsappInteractionEvents[_0x5a9e('0xd')](_0x3ce605+':'+_0x2f42f8['id'],_0x2f42f8);WhatsappInteractionEvents[_0x5a9e('0xd')](_0x3ce605,_0x2f42f8);_0x34a9ed(null);})[_0x5a9e('0xe')](_0x34a9ed(null));};}for(var e in events){if(events[_0x5a9e('0xf')](e)){var event=events[e];WhatsappInteraction[_0x5a9e('0x10')](e,emitEvent(event));}}module[_0x5a9e('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x345e=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0x25c326,_0x250137){var _0x762452=function(_0x50ce5e){while(--_0x50ce5e){_0x25c326['push'](_0x25c326['shift']());}};_0x762452(++_0x250137);}(_0x345e,0x168));var _0xe345=function(_0x2b5c60,_0xddad37){_0x2b5c60=_0x2b5c60-0x0;var _0x40ef50=_0x345e[_0x2b5c60];return _0x40ef50;};'use strict';var EventEmitter=require(_0xe345('0x0'));var WhatsappInteraction=require(_0xe345('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0xe345('0x1'))['db'][_0xe345('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xe345('0x3')](0x0);var events={'afterCreate':_0xe345('0x4'),'afterUpdate':_0xe345('0x5'),'afterDestroy':_0xe345('0x6')};function emitEvent(_0x469d06){return function(_0x304b67,_0x414110,_0x575c38){_0x304b67[_0xe345('0x7')]({'attributes':['id'],'raw':!![]})[_0xe345('0x8')](function(_0x27fc55){_0x304b67[_0xe345('0x9')](_0xe345('0xa'),_0x27fc55[_0xe345('0xb')](function(_0x517809){return{'id':_0x517809['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x304b67['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe345('0x8')](function(_0x47382b){_0x304b67[_0xe345('0x9')](_0xe345('0xc'),_0x47382b[_0xe345('0xd')]);WhatsappInteractionEvents[_0xe345('0xe')](_0x469d06+':'+_0x304b67['id'],_0x304b67);WhatsappInteractionEvents[_0xe345('0xe')](_0x469d06,_0x304b67);_0x575c38(null);})[_0xe345('0xf')](_0x575c38(null));};}for(var e in events){if(events[_0xe345('0x10')](e)){var event=events[e];WhatsappInteraction[_0xe345('0x11')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index 3d9b37c..056f68c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb2a=['changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappInteraction','whatsapp_interactions'];(function(_0x51e90d,_0x9c2076){var _0x3abeee=function(_0xdee17c){while(--_0xdee17c){_0x51e90d['push'](_0x51e90d['shift']());}};_0x3abeee(++_0x9c2076);}(_0xcb2a,0x147));var _0xacb2=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xcb2a[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xacb2('0x0'));var util=require(_0xacb2('0x1'));var logger=require(_0xacb2('0x2'))(_0xacb2('0x3'));var moment=require('moment');var BPromise=require(_0xacb2('0x4'));var rp=require(_0xacb2('0x5'));var fs=require('fs');var path=require(_0xacb2('0x6'));var rimraf=require(_0xacb2('0x7'));var config=require(_0xacb2('0x8'));var attributes=require('./whatsappInteraction.attributes');module[_0xacb2('0x9')]=function(_0x7b78d0,_0x1769db){return _0x7b78d0[_0xacb2('0xa')](_0xacb2('0xb'),attributes,{'tableName':_0xacb2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x18e278,_0x22c908,_0x2e0ba2){if(_0x18e278[_0xacb2('0xd')](_0xacb2('0xe'))){_0x18e278[_0xacb2('0xf')]=moment()['format'](_0xacb2('0x10'));}_0x2e0ba2(null,_0x18e278);}}});};
\ No newline at end of file
+var _0x2354=['changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappInteraction.attributes','define','WhatsappInteraction','whatsapp_interactions'];(function(_0x493ad8,_0x1e6a40){var _0x1bc083=function(_0x5449ee){while(--_0x5449ee){_0x493ad8['push'](_0x493ad8['shift']());}};_0x1bc083(++_0x1e6a40);}(_0x2354,0x125));var _0x4235=function(_0x2744fd,_0x5f4950){_0x2744fd=_0x2744fd-0x0;var _0x766401=_0x2354[_0x2744fd];return _0x766401;};'use strict';var _=require('lodash');var util=require(_0x4235('0x0'));var logger=require('../../config/logger')(_0x4235('0x1'));var moment=require(_0x4235('0x2'));var BPromise=require(_0x4235('0x3'));var rp=require(_0x4235('0x4'));var fs=require('fs');var path=require(_0x4235('0x5'));var rimraf=require('rimraf');var config=require(_0x4235('0x6'));var attributes=require(_0x4235('0x7'));module['exports']=function(_0x56c2ad,_0x3bb0e3){return _0x56c2ad[_0x4235('0x8')](_0x4235('0x9'),attributes,{'tableName':_0x4235('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3380e5,_0x372883,_0x11c77e){if(_0x3380e5[_0x4235('0xb')](_0x4235('0xc'))){_0x3380e5[_0x4235('0xd')]=moment()[_0x4235('0xe')](_0x4235('0xf'));}_0x11c77e(null,_0x3380e5);}}});};
\ No newline at end of file
index c941b95..4fdace4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d9=['body','options','raw','attributes','limit','info','AddTagsToWhatsappInteraction','find','where','omit','ids','spread','AddTags','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','then','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateWhatsappInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53d9,0x117));var _0x953d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x953d('0x0'));var moment=require(_0x953d('0x1'));var BPromise=require(_0x953d('0x2'));var rs=require(_0x953d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x953d('0x4'));var logger=require(_0x953d('0x5'))(_0x953d('0x6'));var config=require(_0x953d('0x7'));var jayson=require(_0x953d('0x8'));var client=jayson['client'][_0x953d('0x9')]({'port':0x232a});config[_0x953d('0xa')]=_['defaults'](config[_0x953d('0xa')],{'host':_0x953d('0xb'),'port':0x18eb});var socket=require(_0x953d('0xc'))(new Redis(config['redis']));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x341ce9,_0x58b176,_0x1f0c07){return new BPromise(function(_0xc8de4e,_0x5e6241){return client['request'](_0x341ce9,_0x1f0c07)[_0x953d('0xd')](function(_0xb954b1){logger['info'](_0x953d('0xe'),_0x58b176,'request\x20sent');logger[_0x953d('0xf')](_0x953d('0x10'),_0x58b176,_0x953d('0x11'),JSON[_0x953d('0x12')](_0xb954b1));if(_0xb954b1[_0x953d('0x13')]){if(_0xb954b1[_0x953d('0x13')][_0x953d('0x14')]===0x1f4){logger[_0x953d('0x13')](_0x953d('0xe'),_0x58b176,_0xb954b1['error'][_0x953d('0x15')]);return _0x5e6241(_0xb954b1['error'][_0x953d('0x15')]);}logger['error'](_0x953d('0xe'),_0x58b176,_0xb954b1['error'][_0x953d('0x15')]);return _0xc8de4e(_0xb954b1[_0x953d('0x13')][_0x953d('0x15')]);}else{logger['info'](_0x953d('0xe'),_0x58b176,_0x953d('0x11'));_0xc8de4e(_0xb954b1[_0x953d('0x16')][_0x953d('0x15')]);}})[_0x953d('0x17')](function(_0x40b926){logger[_0x953d('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x58b176,_0x40b926);_0x5e6241(_0x40b926);});});}exports[_0x953d('0x18')]=function(_0x41106d){var _0x600066=this;return new Promise(function(_0x10a7dc,_0x65817d){return db['WhatsappInteraction']['update'](_0x41106d[_0x953d('0x19')],{'raw':_0x41106d[_0x953d('0x1a')]?_0x41106d[_0x953d('0x1a')][_0x953d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41106d['options']?_0x41106d[_0x953d('0x1a')]['where']||null:null,'attributes':_0x41106d[_0x953d('0x1a')]?_0x41106d[_0x953d('0x1a')][_0x953d('0x1c')]||null:null,'limit':_0x41106d[_0x953d('0x1a')]?_0x41106d[_0x953d('0x1a')][_0x953d('0x1d')]||null:null})['then'](function(_0x1184c0){logger[_0x953d('0x1e')](_0x953d('0x18'),_0x41106d);logger[_0x953d('0xf')](_0x953d('0x18'),_0x41106d,JSON['stringify'](_0x1184c0));_0x10a7dc(_0x1184c0);})[_0x953d('0x17')](function(_0x5757ae){logger[_0x953d('0x13')]('UpdateWhatsappInteraction',_0x5757ae[_0x953d('0x15')],_0x41106d);_0x65817d(_0x600066['error'](0x1f4,_0x5757ae['message']));});});};exports[_0x953d('0x1f')]=function(_0xbb196c){return new Promise(function(_0xbc5664,_0x294270){return db['WhatsappInteraction'][_0x953d('0x20')]({'where':_0xbb196c[_0x953d('0x1a')]?_0xbb196c['options'][_0x953d('0x21')]||null:null})[_0x953d('0xd')](function(_0x1f2f21){if(_0x1f2f21){return _0x1f2f21['addTags'](_0xbb196c['body']['ids'],_[_0x953d('0x22')](_0xbb196c[_0x953d('0x19')],[_0x953d('0x23'),'id'])||{});}})[_0x953d('0x24')](function(_0x440419){logger[_0x953d('0x1e')]('AddTags',_0xbb196c);logger['debug'](_0x953d('0x25'),_0xbb196c,JSON['stringify'](_0x440419));_0xbc5664(_0x440419);})[_0x953d('0x17')](function(_0x37c423){logger[_0x953d('0x13')](_0x953d('0x25'),_0x37c423[_0x953d('0x15')],_0xbb196c);_0x294270(_this[_0x953d('0x13')](0x1f4,_0x37c423['message']));});});};
\ No newline at end of file
+var _0x2891=['WhatsappInteraction,\x20%s,\x20%s','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','attributes','debug','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1c5387,_0x57c9c8){var _0x5f3253=function(_0x2ef948){while(--_0x2ef948){_0x1c5387['push'](_0x1c5387['shift']());}};_0x5f3253(++_0x57c9c8);}(_0x2891,0xef));var _0x1289=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0x2891[_0x1da04e];return _0xdd8c41;};'use strict';var _=require(_0x1289('0x0'));var util=require('util');var moment=require(_0x1289('0x1'));var BPromise=require(_0x1289('0x2'));var rs=require(_0x1289('0x3'));var fs=require('fs');var Redis=require(_0x1289('0x4'));var db=require(_0x1289('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1289('0x6'))('rpc');var config=require(_0x1289('0x7'));var jayson=require(_0x1289('0x8'));var client=jayson[_0x1289('0x9')][_0x1289('0xa')]({'port':0x232a});config[_0x1289('0xb')]=_[_0x1289('0xc')](config[_0x1289('0xb')],{'host':_0x1289('0xd'),'port':0x18eb});var socket=require(_0x1289('0xe'))(new Redis(config['redis']));require(_0x1289('0xf'))[_0x1289('0x10')](socket);function respondWithRpcPromise(_0x248bfa,_0x211d28,_0x54b5bf){return new BPromise(function(_0xad32f4,_0x38809a){return client[_0x1289('0x11')](_0x248bfa,_0x54b5bf)[_0x1289('0x12')](function(_0x4011f9){logger[_0x1289('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x211d28,_0x1289('0x14'));logger['debug'](_0x1289('0x15'),_0x211d28,_0x1289('0x14'),JSON[_0x1289('0x16')](_0x4011f9));if(_0x4011f9[_0x1289('0x17')]){if(_0x4011f9[_0x1289('0x17')][_0x1289('0x18')]===0x1f4){logger[_0x1289('0x17')](_0x1289('0x19'),_0x211d28,_0x4011f9[_0x1289('0x17')][_0x1289('0x1a')]);return _0x38809a(_0x4011f9[_0x1289('0x17')]['message']);}logger[_0x1289('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x211d28,_0x4011f9['error'][_0x1289('0x1a')]);return _0xad32f4(_0x4011f9[_0x1289('0x17')][_0x1289('0x1a')]);}else{logger[_0x1289('0x13')](_0x1289('0x19'),_0x211d28,_0x1289('0x14'));_0xad32f4(_0x4011f9[_0x1289('0x1b')][_0x1289('0x1a')]);}})[_0x1289('0x1c')](function(_0x3ca980){logger['error'](_0x1289('0x19'),_0x211d28,_0x3ca980);_0x38809a(_0x3ca980);});});}exports[_0x1289('0x1d')]=function(_0x363919){var _0x3ea1e3=this;return new Promise(function(_0x520641,_0x2f438d){return db[_0x1289('0x1e')][_0x1289('0x1f')](_0x363919[_0x1289('0x20')],{'raw':_0x363919[_0x1289('0x21')]?_0x363919[_0x1289('0x21')][_0x1289('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x363919['options']?_0x363919[_0x1289('0x21')]['where']||null:null,'attributes':_0x363919[_0x1289('0x21')]?_0x363919[_0x1289('0x21')][_0x1289('0x23')]||null:null,'limit':_0x363919[_0x1289('0x21')]?_0x363919['options']['limit']||null:null})[_0x1289('0x12')](function(_0x5f4fd6){logger[_0x1289('0x13')](_0x1289('0x1d'),_0x363919);logger[_0x1289('0x24')]('UpdateWhatsappInteraction',_0x363919,JSON['stringify'](_0x5f4fd6));_0x520641(_0x5f4fd6);})[_0x1289('0x1c')](function(_0x32bade){logger[_0x1289('0x17')](_0x1289('0x1d'),_0x32bade[_0x1289('0x1a')],_0x363919);_0x2f438d(_0x3ea1e3['error'](0x1f4,_0x32bade[_0x1289('0x1a')]));});});};exports[_0x1289('0x25')]=function(_0x58504e){return new Promise(function(_0x14dff7,_0x18cc73){return db[_0x1289('0x1e')][_0x1289('0x26')]({'where':_0x58504e[_0x1289('0x21')]?_0x58504e['options']['where']||null:null})[_0x1289('0x12')](function(_0x59ad8c){if(_0x59ad8c){return _0x59ad8c[_0x1289('0x27')](_0x58504e[_0x1289('0x20')][_0x1289('0x28')],_[_0x1289('0x29')](_0x58504e[_0x1289('0x20')],[_0x1289('0x28'),'id'])||{});}})[_0x1289('0x2a')](function(_0x22d9bc){logger[_0x1289('0x13')](_0x1289('0x2b'),_0x58504e);logger[_0x1289('0x24')](_0x1289('0x2b'),_0x58504e,JSON[_0x1289('0x16')](_0x22d9bc));_0x14dff7(_0x22d9bc);})[_0x1289('0x1c')](function(_0x3ddc2e){logger[_0x1289('0x17')](_0x1289('0x2b'),_0x3ddc2e['message'],_0x58504e);_0x18cc73(_this[_0x1289('0x17')](0x1f4,_0x3ddc2e[_0x1289('0x1a')]));});});};
\ No newline at end of file
index df38144..4d989e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf688=['update','emit','removeListener','register','whatsappInteraction:','./whatsappInteraction.events','save','remove'];(function(_0xb119da,_0x42d325){var _0x3ecb48=function(_0x361539){while(--_0x361539){_0xb119da['push'](_0xb119da['shift']());}};_0x3ecb48(++_0x42d325);}(_0xf688,0x125));var _0x8f68=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf688[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappInteractionEvents=require(_0x8f68('0x0'));var events=[_0x8f68('0x1'),_0x8f68('0x2'),_0x8f68('0x3')];function createListener(_0x487545,_0x19133c){return function(_0x10ccea){_0x19133c[_0x8f68('0x4')](_0x487545,_0x10ccea);};}function removeListener(_0x71aad3,_0x404bd0){return function(){WhatsappInteractionEvents[_0x8f68('0x5')](_0x71aad3,_0x404bd0);};}exports[_0x8f68('0x6')]=function(_0x215d40){for(var _0x3acc9c=0x0,_0x3947c9=events['length'];_0x3acc9c<_0x3947c9;_0x3acc9c++){var _0x426907=events[_0x3acc9c];var _0x48be06=createListener(_0x8f68('0x7')+_0x426907,_0x215d40);WhatsappInteractionEvents['on'](_0x426907,_0x48be06);}};
\ No newline at end of file
+var _0x1b1c=['remove','update','register','length','./whatsappInteraction.events','save'];(function(_0x5cbd3c,_0x378d7c){var _0x30f460=function(_0x38523b){while(--_0x38523b){_0x5cbd3c['push'](_0x5cbd3c['shift']());}};_0x30f460(++_0x378d7c);}(_0x1b1c,0x6a));var _0xc1b1=function(_0x3818f0,_0x328080){_0x3818f0=_0x3818f0-0x0;var _0x5466cb=_0x1b1c[_0x3818f0];return _0x5466cb;};'use strict';var WhatsappInteractionEvents=require(_0xc1b1('0x0'));var events=[_0xc1b1('0x1'),_0xc1b1('0x2'),_0xc1b1('0x3')];function createListener(_0x44ac50,_0x4957dc){return function(_0x54d5dc){_0x4957dc['emit'](_0x44ac50,_0x54d5dc);};}function removeListener(_0x2e3503,_0x37661c){return function(){WhatsappInteractionEvents['removeListener'](_0x2e3503,_0x37661c);};}exports[_0xc1b1('0x4')]=function(_0x208cab){for(var _0x35037d=0x0,_0x39af8a=events[_0xc1b1('0x5')];_0x35037d<_0x39af8a;_0x35037d++){var _0x2cbf9f=events[_0x35037d];var _0x278933=createListener('whatsappInteraction:'+_0x2cbf9f,_0x208cab);WhatsappInteractionEvents['on'](_0x2cbf9f,_0x278933);}};
\ No newline at end of file
index d5498e2..69b58b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7e9=['status','update','/:id/accept','put','/:id/reject','reject','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','tracked','whatsapp','whatsappmessage:create','create','post','/:id/status'];(function(_0x32fbfb,_0x722ffd){var _0x37602a=function(_0x5232fd){while(--_0x5232fd){_0x32fbfb['push'](_0x32fbfb['shift']());}};_0x37602a(++_0x722ffd);}(_0xd7e9,0x183));var _0x9d7e=function(_0x17b616,_0x5d4e60){_0x17b616=_0x17b616-0x0;var _0x5e1ed9=_0xd7e9[_0x17b616];return _0x5e1ed9;};'use strict';var multer=require(_0x9d7e('0x0'));var util=require('util');var path=require(_0x9d7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x9d7e('0x2'));var router=express[_0x9d7e('0x3')]();var fs_extra=require(_0x9d7e('0x4'));var auth=require(_0x9d7e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0x9d7e('0x6')]('/',auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x8')]);router[_0x9d7e('0x6')](_0x9d7e('0x9'),auth[_0x9d7e('0x7')](),controller[_0x9d7e('0xa')]);router['get'](_0x9d7e('0xb'),auth[_0x9d7e('0x7')](),controller['show']);router['post']('/',auth[_0x9d7e('0x7')](),interaction[_0x9d7e('0xc')](_0x9d7e('0xd'),_0x9d7e('0xe')),controller[_0x9d7e('0xf')]);router[_0x9d7e('0x10')](_0x9d7e('0x11'),controller[_0x9d7e('0x12')]);router['put'](_0x9d7e('0xb'),auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x13')]);router['put'](_0x9d7e('0x14'),auth[_0x9d7e('0x7')](),controller['accept']);router[_0x9d7e('0x15')](_0x9d7e('0x16'),auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x17')]);router[_0x9d7e('0x18')]('/:id',auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x19')]);module[_0x9d7e('0x1a')]=router;
\ No newline at end of file
+var _0x717a=['get','show','post','tracked','whatsapp','whatsappmessage:create','create','status','put','/:id','update','/:id/accept','/:id/reject','delete','destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe'];(function(_0x2863f7,_0x2ef47b){var _0xda2c=function(_0x4ea077){while(--_0x4ea077){_0x2863f7['push'](_0x2863f7['shift']());}};_0xda2c(++_0x2ef47b);}(_0x717a,0x96));var _0xa717=function(_0xce6f11,_0x3c3137){_0xce6f11=_0xce6f11-0x0;var _0x35b709=_0x717a[_0xce6f11];return _0x35b709;};'use strict';var multer=require('multer');var util=require(_0xa717('0x0'));var path=require('path');var timeout=require(_0xa717('0x1'));var express=require(_0xa717('0x2'));var router=express[_0xa717('0x3')]();var fs_extra=require(_0xa717('0x4'));var auth=require(_0xa717('0x5'));var interaction=require(_0xa717('0x6'));var config=require(_0xa717('0x7'));var controller=require('./whatsappMessage.controller');router['get']('/',auth[_0xa717('0x8')](),controller[_0xa717('0x9')]);router['get'](_0xa717('0xa'),auth[_0xa717('0x8')](),controller[_0xa717('0xb')]);router[_0xa717('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xa717('0xd')]);router[_0xa717('0xe')]('/',auth[_0xa717('0x8')](),interaction[_0xa717('0xf')](_0xa717('0x10'),_0xa717('0x11')),controller[_0xa717('0x12')]);router[_0xa717('0xe')]('/:id/status',controller[_0xa717('0x13')]);router[_0xa717('0x14')](_0xa717('0x15'),auth['isAuthenticated'](),controller[_0xa717('0x16')]);router[_0xa717('0x14')](_0xa717('0x17'),auth[_0xa717('0x8')](),controller['accept']);router[_0xa717('0x14')](_0xa717('0x18'),auth[_0xa717('0x8')](),controller['reject']);router[_0xa717('0x19')](_0xa717('0x15'),auth[_0xa717('0x8')](),controller[_0xa717('0x1a')]);module['exports']=router;
\ No newline at end of file
index 01486c0..4dbf1fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb264=['out','STRING','DATE','TEXT','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x4c9da7,_0xbb8d65){var _0x3e6a12=function(_0x3169a6){while(--_0x3169a6){_0x4c9da7['push'](_0x4c9da7['shift']());}};_0x3e6a12(++_0xbb8d65);}(_0xb264,0x1b4));var _0x4b26=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb264[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4b26('0x0'));module[_0x4b26('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4b26('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4b26('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4b26('0x4')]('in',_0x4b26('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x4b26('0x6')](0xbe)},'phone':{'type':Sequelize[_0x4b26('0x6')]},'readAt':{'type':Sequelize[_0x4b26('0x7')]},'secret':{'type':Sequelize[_0x4b26('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x4b26('0x6')]},'providerResponse':{'type':Sequelize[_0x4b26('0x8')]}};
\ No newline at end of file
+var _0x2cd3=['STRING','sequelize','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x53407f,_0x294cdf){var _0x17a8e2=function(_0x10d152){while(--_0x10d152){_0x53407f['push'](_0x53407f['shift']());}};_0x17a8e2(++_0x294cdf);}(_0x2cd3,0xf1));var _0x32cd=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0x2cd3[_0x545b71];return _0x26e587;};'use strict';var Sequelize=require(_0x32cd('0x0'));module['exports']={'body':{'type':Sequelize[_0x32cd('0x1')](_0x32cd('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x32cd('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x32cd('0x4')]('in',_0x32cd('0x5')),'defaultValue':_0x32cd('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x32cd('0x6')]},'secret':{'type':Sequelize[_0x32cd('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x32cd('0x7')]},'providerResponse':{'type':Sequelize[_0x32cd('0x1')]}};
\ No newline at end of file
index ff75eb1..f0f3f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe91=['filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','WhatsappMessage','includeAll','include','findAll','rows','show','params','options','find','create','body','catch','describe','whatsapp-interactions','whatsapp','readAt','format','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','fast-json-patch','moment','bluebird','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/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','name','send','index','map','rawAttributes','fieldName','type','key','query','keys'];(function(_0x404eee,_0x319a42){var _0x585b65=function(_0x43ff2b){while(--_0x43ff2b){_0x404eee['push'](_0x404eee['shift']());}};_0x585b65(++_0x319a42);}(_0xfe91,0xd4));var _0x1fe9=function(_0x249d99,_0x16b584){_0x249d99=_0x249d99-0x0;var _0x5bfb05=_0xfe91[_0x249d99];return _0x5bfb05;};'use strict';var emlformat=require(_0x1fe9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1fe9('0x1'));var rp=require('request-promise');var moment=require(_0x1fe9('0x2'));var BPromise=require(_0x1fe9('0x3'));var Mustache=require(_0x1fe9('0x4'));var util=require(_0x1fe9('0x5'));var path=require(_0x1fe9('0x6'));var sox=require(_0x1fe9('0x7'));var csv=require(_0x1fe9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1fe9('0x9'));var _=require(_0x1fe9('0xa'));var squel=require(_0x1fe9('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1fe9('0xc'));var toCsv=require(_0x1fe9('0x8'));var querystring=require('querystring');var Papa=require(_0x1fe9('0xd'));var Redis=require(_0x1fe9('0xe'));var authService=require(_0x1fe9('0xf'));var qs=require(_0x1fe9('0x10'));var as=require(_0x1fe9('0x11'));var hardwareService=require(_0x1fe9('0x12'));var logger=require(_0x1fe9('0x13'))(_0x1fe9('0x14'));var utils=require('../../config/utils');var config=require(_0x1fe9('0x15'));var licenseUtil=require(_0x1fe9('0x16'));var db=require('../../mysqldb')['db'];config[_0x1fe9('0x17')]=_[_0x1fe9('0x18')](config[_0x1fe9('0x17')],{'host':_0x1fe9('0x19'),'port':0x18eb});var socket=require(_0x1fe9('0x1a'))(new Redis(config['redis']));require(_0x1fe9('0x1b'))[_0x1fe9('0x1c')](socket);var jayson=require(_0x1fe9('0x1d'));var client=jayson[_0x1fe9('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0x1fe9('0x1e')][_0x1fe9('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2f62a8,_0x5da3c1,_0x2d2068,_0x15bfab){return new BPromise(function(_0x827331,_0x5da384){var _0x440e0a=_0x15bfab||client;return _0x440e0a[_0x1fe9('0x20')](_0x2f62a8,_0x2d2068)[_0x1fe9('0x21')](function(_0x4cd11f){logger[_0x1fe9('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x5da3c1,_0x1fe9('0x23'));logger[_0x1fe9('0x24')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x5da3c1,_0x1fe9('0x23'),JSON[_0x1fe9('0x25')](_0x4cd11f));if(_0x4cd11f[_0x1fe9('0x26')]){if(_0x4cd11f[_0x1fe9('0x26')][_0x1fe9('0x27')]===0x1f4){logger[_0x1fe9('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x5da3c1,_0x4cd11f[_0x1fe9('0x26')]['message']);return _0x5da384(_0x4cd11f['error'][_0x1fe9('0x28')]);}logger[_0x1fe9('0x26')](_0x1fe9('0x29'),_0x5da3c1,_0x4cd11f[_0x1fe9('0x26')][_0x1fe9('0x28')]);return _0x827331(_0x4cd11f[_0x1fe9('0x26')]['message']);}else{logger[_0x1fe9('0x22')](_0x1fe9('0x29'),_0x5da3c1,'request\x20sent');_0x827331(_0x4cd11f[_0x1fe9('0x2a')][_0x1fe9('0x28')]);}})['catch'](function(_0x2e492f){logger[_0x1fe9('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x5da3c1,_0x2e492f);_0x5da384(_0x2e492f);});});}function respondWithStatusCode(_0x35cb4f,_0x44ae36){_0x44ae36=_0x44ae36||0xcc;return function(_0x5206a0){if(_0x5206a0){return _0x35cb4f[_0x1fe9('0x2b')](_0x44ae36);}return _0x35cb4f[_0x1fe9('0x2c')](_0x44ae36)[_0x1fe9('0x2d')]();};}function respondWithResult(_0x477229,_0x36b7f4){_0x36b7f4=_0x36b7f4||0xc8;return function(_0x31cf2b){if(_0x31cf2b){return _0x477229[_0x1fe9('0x2c')](_0x36b7f4)[_0x1fe9('0x2e')](_0x31cf2b);}};}function respondWithFilteredResult(_0xed426c,_0x1828ca){return function(_0x2aea20){if(_0x2aea20){var _0x11f374=typeof _0x1828ca[_0x1fe9('0x2f')]==='undefined'&&typeof _0x1828ca[_0x1fe9('0x30')]===_0x1fe9('0x31');var _0x1d95a5=_0x2aea20[_0x1fe9('0x32')];var _0x216ed4=_0x11f374?0x0:_0x1828ca[_0x1fe9('0x2f')];var _0x4865f9=_0x11f374?_0x2aea20[_0x1fe9('0x32')]:_0x1828ca['offset']+_0x1828ca[_0x1fe9('0x30')];var _0x22b736;if(_0x4865f9>=_0x1d95a5){_0x4865f9=_0x1d95a5;_0x22b736=0xc8;}else{_0x22b736=0xce;}_0xed426c[_0x1fe9('0x2c')](_0x22b736);return _0xed426c[_0x1fe9('0x33')](_0x1fe9('0x34'),_0x216ed4+'-'+_0x4865f9+'/'+_0x1d95a5)[_0x1fe9('0x2e')](_0x2aea20);}return null;};}function patchUpdates(_0x40f53d){return function(_0xfdb4fb){try{jsonpatch[_0x1fe9('0x35')](_0xfdb4fb,_0x40f53d,!![]);}catch(_0x576b7d){return BPromise[_0x1fe9('0x36')](_0x576b7d);}return _0xfdb4fb[_0x1fe9('0x37')]();};}function saveUpdates(_0x54a80e,_0x37fda5){return function(_0x26d5e1){if(_0x26d5e1){return _0x26d5e1[_0x1fe9('0x38')](_0x54a80e)[_0x1fe9('0x21')](function(_0x34a250){return _0x34a250;});}return null;};}function removeEntity(_0x41de31,_0x487fea){return function(_0x5ba591){if(_0x5ba591){return _0x5ba591[_0x1fe9('0x39')]()['then'](function(){_0x41de31['status'](0xcc)[_0x1fe9('0x2d')]();});}};}function handleEntityNotFound(_0x266956,_0x1f98e0){return function(_0x3141ed){if(!_0x3141ed){_0x266956['sendStatus'](0x194);}return _0x3141ed;};}function handleError(_0x1772ab,_0x5b930e){_0x5b930e=_0x5b930e||0x1f4;return function(_0x145b29){logger[_0x1fe9('0x26')](_0x145b29['stack']);if(_0x145b29[_0x1fe9('0x3a')]){delete _0x145b29['name'];}_0x1772ab[_0x1fe9('0x2c')](_0x5b930e)[_0x1fe9('0x3b')](_0x145b29);};}exports[_0x1fe9('0x3c')]=function(_0x527b9e,_0x166908){var _0x30c1ce={},_0x365b2e={},_0x497681={'count':0x0,'rows':[]};var _0x15e8c0=_[_0x1fe9('0x3d')](db['WhatsappMessage'][_0x1fe9('0x3e')],function(_0x36ef35){return{'name':_0x36ef35[_0x1fe9('0x3f')],'type':_0x36ef35[_0x1fe9('0x40')][_0x1fe9('0x41')]};});_0x365b2e['model']=_[_0x1fe9('0x3d')](_0x15e8c0,_0x1fe9('0x3a'));_0x365b2e[_0x1fe9('0x42')]=_[_0x1fe9('0x43')](_0x527b9e[_0x1fe9('0x42')]);_0x365b2e[_0x1fe9('0x44')]=_[_0x1fe9('0x45')](_0x365b2e['model'],_0x365b2e['query']);_0x30c1ce['attributes']=_[_0x1fe9('0x45')](_0x365b2e['model'],qs['fields'](_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x46')]));_0x30c1ce[_0x1fe9('0x47')]=_0x30c1ce[_0x1fe9('0x47')][_0x1fe9('0x48')]?_0x30c1ce[_0x1fe9('0x47')]:_0x365b2e[_0x1fe9('0x49')];if(!_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x4a')](_0x1fe9('0x4b'))){_0x30c1ce[_0x1fe9('0x30')]=qs[_0x1fe9('0x30')](_0x527b9e['query'][_0x1fe9('0x30')]);_0x30c1ce['offset']=qs['offset'](_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x2f')]);}_0x30c1ce[_0x1fe9('0x4c')]=qs['sort'](_0x527b9e['query'][_0x1fe9('0x4d')]);_0x30c1ce[_0x1fe9('0x4e')]=qs[_0x1fe9('0x44')](_['pick'](_0x527b9e[_0x1fe9('0x42')],_0x365b2e[_0x1fe9('0x44')]),_0x15e8c0);if(_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x4f')]){_0x30c1ce[_0x1fe9('0x4e')]=_[_0x1fe9('0x50')](_0x30c1ce[_0x1fe9('0x4e')],{'$or':_[_0x1fe9('0x3d')](_0x15e8c0,function(_0xcf47f5){if(_0xcf47f5[_0x1fe9('0x40')]!==_0x1fe9('0x51')){var _0x1cedd9={};_0x1cedd9[_0xcf47f5[_0x1fe9('0x3a')]]={'$like':'%'+_0x527b9e[_0x1fe9('0x42')]['filter']+'%'};return _0x1cedd9;}})});}_0x30c1ce=_['merge']({},_0x30c1ce,_0x527b9e['options']);var _0x144afb={'where':_0x30c1ce[_0x1fe9('0x4e')]};return db[_0x1fe9('0x52')][_0x1fe9('0x32')](_0x144afb)[_0x1fe9('0x21')](function(_0x3975b9){_0x497681[_0x1fe9('0x32')]=_0x3975b9;if(_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x53')]){_0x30c1ce[_0x1fe9('0x54')]=[{'all':!![]}];}return db[_0x1fe9('0x52')][_0x1fe9('0x55')](_0x30c1ce);})[_0x1fe9('0x21')](function(_0x3ee644){_0x497681[_0x1fe9('0x56')]=_0x3ee644;return _0x497681;})[_0x1fe9('0x21')](respondWithFilteredResult(_0x166908,_0x30c1ce))['catch'](handleError(_0x166908,null));};exports[_0x1fe9('0x57')]=function(_0x3ce524,_0x498e4b){var _0xd3aecb={'raw':!![],'where':{'id':_0x3ce524[_0x1fe9('0x58')]['id']}},_0x39df0d={};_0x39df0d[_0x1fe9('0x49')]=_['keys'](db[_0x1fe9('0x52')][_0x1fe9('0x3e')]);_0x39df0d[_0x1fe9('0x42')]=_[_0x1fe9('0x43')](_0x3ce524[_0x1fe9('0x42')]);_0x39df0d[_0x1fe9('0x44')]=_[_0x1fe9('0x45')](_0x39df0d['model'],_0x39df0d[_0x1fe9('0x42')]);_0xd3aecb[_0x1fe9('0x47')]=_['intersection'](_0x39df0d[_0x1fe9('0x49')],qs[_0x1fe9('0x46')](_0x3ce524[_0x1fe9('0x42')][_0x1fe9('0x46')]));_0xd3aecb[_0x1fe9('0x47')]=_0xd3aecb[_0x1fe9('0x47')]['length']?_0xd3aecb[_0x1fe9('0x47')]:_0x39df0d[_0x1fe9('0x49')];if(_0x3ce524[_0x1fe9('0x42')][_0x1fe9('0x53')]){_0xd3aecb[_0x1fe9('0x54')]=[{'all':!![]}];}_0xd3aecb=_['merge']({},_0xd3aecb,_0x3ce524[_0x1fe9('0x59')]);return db['WhatsappMessage'][_0x1fe9('0x5a')](_0xd3aecb)[_0x1fe9('0x21')](handleEntityNotFound(_0x498e4b,null))[_0x1fe9('0x21')](respondWithResult(_0x498e4b,null))['catch'](handleError(_0x498e4b,null));};exports[_0x1fe9('0x5b')]=function(_0x26fe86,_0x3c5493){return db[_0x1fe9('0x52')][_0x1fe9('0x5b')](_0x26fe86[_0x1fe9('0x5c')],{})['then'](respondWithResult(_0x3c5493,0xc9))[_0x1fe9('0x5d')](handleError(_0x3c5493,null));};exports[_0x1fe9('0x38')]=function(_0x602f9,_0x2ec4d1){if(_0x602f9[_0x1fe9('0x5c')]['id']){delete _0x602f9['body']['id'];}return db[_0x1fe9('0x52')][_0x1fe9('0x5a')]({'where':{'id':_0x602f9[_0x1fe9('0x58')]['id']}})[_0x1fe9('0x21')](handleEntityNotFound(_0x2ec4d1,null))[_0x1fe9('0x21')](saveUpdates(_0x602f9[_0x1fe9('0x5c')],null))[_0x1fe9('0x21')](respondWithResult(_0x2ec4d1,null))[_0x1fe9('0x5d')](handleError(_0x2ec4d1,null));};exports[_0x1fe9('0x39')]=function(_0x49f764,_0x3256f0){return db['WhatsappMessage'][_0x1fe9('0x5a')]({'where':{'id':_0x49f764[_0x1fe9('0x58')]['id']}})[_0x1fe9('0x21')](handleEntityNotFound(_0x3256f0,null))[_0x1fe9('0x21')](removeEntity(_0x3256f0,null))[_0x1fe9('0x5d')](handleError(_0x3256f0,null));};exports['describe']=function(_0x5c697c,_0x35bfd2){return db[_0x1fe9('0x52')][_0x1fe9('0x5e')]()['then'](respondWithResult(_0x35bfd2,null))[_0x1fe9('0x5d')](handleError(_0x35bfd2,null));};var interaction_log=require(_0x1fe9('0x13'))(_0x1fe9('0x5f'));exports['accept']=function(_0x4cb990,_0x20dba7,_0x1f0317){var _0x1ffc8a={'agent':{},'channel':_0x1fe9('0x60')};if(_0x4cb990['body']['id']){delete _0x4cb990[_0x1fe9('0x5c')]['id'];}_0x4cb990[_0x1fe9('0x5c')]['read']=!![];_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x61')]=moment()[_0x1fe9('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0x4cb990[_0x1fe9('0x5c')]['UserId']=_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')]||_0x4cb990[_0x1fe9('0x64')]['id'];_0x1ffc8a['agent']['id']=_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')];return db[_0x1fe9('0x52')][_0x1fe9('0x5a')]({'where':{'id':_0x4cb990[_0x1fe9('0x58')]['id'],'UserId':null}})[_0x1fe9('0x21')](handleEntityNotFound(_0x20dba7,null))['then'](saveUpdates(_0x4cb990[_0x1fe9('0x5c')],null))[_0x1fe9('0x21')](function(_0x583108){if(_0x583108){_0x1ffc8a['message']=_0x583108[_0x1fe9('0x65')]({'plain':!![]});return db[_0x1fe9('0x66')][_0x1fe9('0x5a')]({'where':{'id':_0x583108[_0x1fe9('0x67')]}});}return null;})[_0x1fe9('0x21')](handleEntityNotFound(_0x20dba7,null))[_0x1fe9('0x21')](function(_0x32598b){if(_0x32598b){return _0x32598b[_0x1fe9('0x38')]({'UserId':_0x4cb990[_0x1fe9('0x5c')]['UserId'],'read1stAt':_['isNil'](_0x32598b[_0x1fe9('0x68')])?moment()[_0x1fe9('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x1fe9('0x21')](function(_0x335696){if(_0x335696){_0x1ffc8a['interaction']=_0x335696[_0x1fe9('0x65')]({'plain':!![]});interaction_log[_0x1fe9('0x22')](_0x1fe9('0x69'),_0x4cb990[_0x1fe9('0x64')]['id'],_0x4cb990[_0x1fe9('0x64')][_0x1fe9('0x3a')],_0x4cb990[_0x1fe9('0x64')][_0x1fe9('0x6a')],_0x1ffc8a[_0x1fe9('0x6b')]['id'],_0x4cb990[_0x1fe9('0x5c')]?JSON['stringify'](_0x4cb990[_0x1fe9('0x5c')]):_0x1fe9('0x6c'));return respondWithRpcPromise(_0x1fe9('0x6d'),_0x1fe9('0x6e'),_0x1ffc8a);}return null;})[_0x1fe9('0x21')](function(_0x448732){var _0x1c08d5=_0x1fe9('0x6f')+_0x448732['message'][_0x1fe9('0x70')];return db['sequelize'][_0x1fe9('0x42')](_0x1c08d5,{'type':db[_0x1fe9('0x71')][_0x1fe9('0x72')][_0x1fe9('0x73')],'raw':!![]})[_0x1fe9('0x21')](function(_0x46032e){return _0x46032e;});})[_0x1fe9('0x21')](function(_0x1903c9){if(_0x1903c9){_0x1ffc8a[_0x1fe9('0x28')]['contact']=_0x1903c9[0x0];if(!_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')])return;return db[_0x1fe9('0x74')][_0x1fe9('0x5a')]({'where':{'id':_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')],'role':_0x1fe9('0x75')},'attributes':['id',_0x1fe9('0x3a'),_0x1fe9('0x76'),_0x1fe9('0x77'),_0x1fe9('0x78')],'raw':!![]});}return null;})[_0x1fe9('0x21')](function(_0x3b4f3f){if(!_0x3b4f3f)return null;_0x1ffc8a[_0x1fe9('0x28')][_0x1fe9('0x75')]=_0x3b4f3f;return _0x1ffc8a;})[_0x1fe9('0x21')](function(_0x42394d){if(_0x42394d){if(_0x4cb990['body'][_0x1fe9('0x79')]){_0x1ffc8a[_0x1fe9('0x28')][_0x1fe9('0x7a')]=util['format'](_0x1fe9('0x7b'),_0x4cb990['user'][_0x1fe9('0x3a')]);_0x1ffc8a['message'][_0x1fe9('0x7c')]=_0x1ffc8a[_0x1fe9('0x7c')];_0x1ffc8a[_0x1fe9('0x28')][_0x1fe9('0x7d')]=_0x1fe9('0x7e');return respondWithRpcPromise(_0x1fe9('0x7f'),_0x1fe9('0x7f'),{'event':_0x1fe9('0x80'),'message':_0x1ffc8a['message']},client9002)[_0x1fe9('0x21')](function(){return _0x1ffc8a;});}return _0x1ffc8a;}return null;})[_0x1fe9('0x21')](respondWithResult(_0x20dba7,null))['catch'](handleError(_0x20dba7,null));};var interaction_log=require('../../config/logger')(_0x1fe9('0x5f'));exports[_0x1fe9('0x36')]=function(_0x307009,_0x1d7b7e,_0x405339){var _0x18edbf={'agent':{},'channel':'whatsapp'};if(_0x307009[_0x1fe9('0x5c')]['id']){delete _0x307009['body']['id'];}_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')]=_0x307009['body'][_0x1fe9('0x63')]||_0x307009[_0x1fe9('0x64')]['id'];_0x18edbf[_0x1fe9('0x75')]['id']=_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')];return db[_0x1fe9('0x52')]['find']({'where':{'id':_0x307009[_0x1fe9('0x58')]['id'],'UserId':null}})[_0x1fe9('0x21')](handleEntityNotFound(_0x1d7b7e,null))[_0x1fe9('0x21')](function(_0x297a35){if(_0x297a35){_0x18edbf[_0x1fe9('0x28')]=_0x297a35[_0x1fe9('0x65')]({'plain':!![]});return db[_0x1fe9('0x66')][_0x1fe9('0x5a')]({'where':{'id':_0x297a35[_0x1fe9('0x67')]}});}return null;})[_0x1fe9('0x21')](handleEntityNotFound(_0x1d7b7e,null))['then'](function(_0x4c4d6a){if(_0x4c4d6a){_0x18edbf[_0x1fe9('0x6b')]=_0x4c4d6a[_0x1fe9('0x65')]({'plain':!![]});interaction_log[_0x1fe9('0x22')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x307009[_0x1fe9('0x64')]['id'],_0x307009[_0x1fe9('0x64')][_0x1fe9('0x3a')],_0x307009[_0x1fe9('0x64')][_0x1fe9('0x6a')],_0x18edbf['interaction']['id'],_0x307009[_0x1fe9('0x5c')]?JSON[_0x1fe9('0x25')](_0x307009['body']):_0x1fe9('0x6c'));return respondWithRpcPromise(_0x1fe9('0x81'),_0x1fe9('0x82'),_0x18edbf);}return null;})[_0x1fe9('0x21')](function(_0x599309){var _0x5db01f=_0x1fe9('0x6f')+_0x599309[_0x1fe9('0x28')][_0x1fe9('0x70')];return db['sequelize'][_0x1fe9('0x42')](_0x5db01f,{'type':db[_0x1fe9('0x71')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x338bd0){return _0x338bd0;});})[_0x1fe9('0x21')](function(_0x4d19b8){if(_0x4d19b8){_0x18edbf[_0x1fe9('0x28')]['contact']=_0x4d19b8[0x0];if(!_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')])return;return db[_0x1fe9('0x74')][_0x1fe9('0x5a')]({'where':{'id':_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')],'role':'agent'},'attributes':['id',_0x1fe9('0x3a'),_0x1fe9('0x76'),_0x1fe9('0x77'),_0x1fe9('0x78')],'raw':!![]});}return null;})['then'](function(_0x2598f4){if(!_0x2598f4)return null;_0x18edbf[_0x1fe9('0x28')][_0x1fe9('0x75')]=_0x2598f4;return _0x18edbf;})[_0x1fe9('0x21')](function(_0x340fbb){if(_0x340fbb){_0x340fbb[_0x1fe9('0x28')][_0x1fe9('0x7a')]=util[_0x1fe9('0x62')](_0x1fe9('0x7b'),_0x307009[_0x1fe9('0x64')]['name']);_0x340fbb['message']['channel']=_0x18edbf[_0x1fe9('0x7c')];_0x340fbb[_0x1fe9('0x28')]['event']='reject';respondWithRpcPromise(_0x1fe9('0x7f'),_0x1fe9('0x7f'),{'event':_0x1fe9('0x83'),'message':_0x340fbb[_0x1fe9('0x28')]},client9002);return _0x18edbf;}return null;})[_0x1fe9('0x21')](respondWithResult(_0x1d7b7e,null))[_0x1fe9('0x5d')](handleError(_0x1d7b7e,null));};exports[_0x1fe9('0x2c')]=function(_0x2233ea,_0x1eb9b3,_0x1882f6){if(_0x2233ea[_0x1fe9('0x5c')]['id']){delete _0x2233ea[_0x1fe9('0x5c')]['id'];}var _0x12d983;return db[_0x1fe9('0x52')][_0x1fe9('0x5a')]({'where':{'id':_0x2233ea[_0x1fe9('0x58')]['id']}})[_0x1fe9('0x21')](handleEntityNotFound(_0x1eb9b3,null))['then'](function(_0x49b331){if(_0x49b331){_0x12d983=_0x49b331;return db[_0x1fe9('0x84')][_0x1fe9('0x5a')]({'where':{'id':_0x49b331[_0x1fe9('0x85')]}});}})[_0x1fe9('0x21')](handleEntityNotFound(_0x1eb9b3,null))[_0x1fe9('0x21')](function(_0x16fd41){if(_0x16fd41){logger[_0x1fe9('0x24')](_0x1fe9('0x86'),_0x1fe9('0x2c'),'received\x20delivery\x20report\x20from',_0x16fd41['type'],util['inspect'](_0x2233ea[_0x1fe9('0x5c')],{'showHidden':![],'depth':null}));switch(_0x16fd41[_0x1fe9('0x40')]){case'twilio':if(_0x2233ea[_0x1fe9('0x5c')][_0x1fe9('0x87')]&&_0x2233ea[_0x1fe9('0x5c')]['MessageSid']===_0x12d983[_0x1fe9('0x88')]&&_0x2233ea[_0x1fe9('0x5c')][_0x1fe9('0x89')]&&_0x2233ea['body'][_0x1fe9('0x89')]===_0x1fe9('0x8a')){return _0x12d983['update']({'read':!![]});}else{logger['error'](_0x1fe9('0x8b'),'status','twilio',util['inspect'](_0x2233ea[_0x1fe9('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x12d983;}})[_0x1fe9('0x21')](respondWithResult(_0x1eb9b3,null))['catch'](handleError(_0x1eb9b3,null));};
\ No newline at end of file
+var _0xdb90=['filter','type','VIRTUAL','merge','includeAll','include','show','keys','create','body','find','params','destroy','describe','whatsapp-interactions','accept','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteractionId','update','isNil','read1stAt','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','whatsapp','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT','fullname','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','MessageStatus','read','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','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','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','client','request','then','request\x20sent','debug','stringify','error','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','name','index','WhatsappMessage','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xdb90,0xcb));var _0x0db9=function(_0x2f1ae9,_0x11ce9a){_0x2f1ae9=_0x2f1ae9-0x0;var _0x2420e7=_0xdb90[_0x2f1ae9];return _0x2420e7;};'use strict';var emlformat=require(_0x0db9('0x0'));var rimraf=require(_0x0db9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0db9('0x2'));var rp=require(_0x0db9('0x3'));var moment=require('moment');var BPromise=require(_0x0db9('0x4'));var Mustache=require(_0x0db9('0x5'));var util=require(_0x0db9('0x6'));var path=require(_0x0db9('0x7'));var sox=require(_0x0db9('0x8'));var csv=require(_0x0db9('0x9'));var ejs=require(_0x0db9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0db9('0xb'));var squel=require(_0x0db9('0xc'));var crypto=require(_0x0db9('0xd'));var jsforce=require(_0x0db9('0xe'));var deskjs=require(_0x0db9('0xf'));var toCsv=require(_0x0db9('0x9'));var querystring=require('querystring');var Papa=require(_0x0db9('0x10'));var Redis=require(_0x0db9('0x11'));var authService=require(_0x0db9('0x12'));var qs=require(_0x0db9('0x13'));var as=require(_0x0db9('0x14'));var hardwareService=require(_0x0db9('0x15'));var logger=require(_0x0db9('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x0db9('0x17'));var licenseUtil=require(_0x0db9('0x18'));var db=require(_0x0db9('0x19'))['db'];config[_0x0db9('0x1a')]=_[_0x0db9('0x1b')](config[_0x0db9('0x1a')],{'host':_0x0db9('0x1c'),'port':0x18eb});var socket=require(_0x0db9('0x1d'))(new Redis(config[_0x0db9('0x1a')]));require(_0x0db9('0x1e'))[_0x0db9('0x1f')](socket);var jayson=require(_0x0db9('0x20'));var client=jayson['client'][_0x0db9('0x21')]({'port':0x232c});var client9002=jayson[_0x0db9('0x22')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51c41b,_0x2c6d9e,_0x381fa1,_0x5e96ee){return new BPromise(function(_0x44591e,_0x1c9af3){var _0x4b4096=_0x5e96ee||client;return _0x4b4096[_0x0db9('0x23')](_0x51c41b,_0x381fa1)[_0x0db9('0x24')](function(_0x143c0b){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x2c6d9e,_0x0db9('0x25'));logger[_0x0db9('0x26')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2c6d9e,_0x0db9('0x25'),JSON[_0x0db9('0x27')](_0x143c0b));if(_0x143c0b['error']){if(_0x143c0b[_0x0db9('0x28')]['code']===0x1f4){logger[_0x0db9('0x28')]('WhatsappMessage,\x20%s,\x20%s',_0x2c6d9e,_0x143c0b[_0x0db9('0x28')][_0x0db9('0x29')]);return _0x1c9af3(_0x143c0b[_0x0db9('0x28')][_0x0db9('0x29')]);}logger[_0x0db9('0x28')]('WhatsappMessage,\x20%s,\x20%s',_0x2c6d9e,_0x143c0b[_0x0db9('0x28')]['message']);return _0x44591e(_0x143c0b[_0x0db9('0x28')][_0x0db9('0x29')]);}else{logger[_0x0db9('0x2a')]('WhatsappMessage,\x20%s,\x20%s',_0x2c6d9e,'request\x20sent');_0x44591e(_0x143c0b['result'][_0x0db9('0x29')]);}})[_0x0db9('0x2b')](function(_0x8682a2){logger[_0x0db9('0x28')]('WhatsappMessage,\x20%s,\x20%s',_0x2c6d9e,_0x8682a2);_0x1c9af3(_0x8682a2);});});}function respondWithStatusCode(_0x2d4529,_0x4151e2){_0x4151e2=_0x4151e2||0xcc;return function(_0x7a3dd1){if(_0x7a3dd1){return _0x2d4529[_0x0db9('0x2c')](_0x4151e2);}return _0x2d4529[_0x0db9('0x2d')](_0x4151e2)[_0x0db9('0x2e')]();};}function respondWithResult(_0x58be24,_0x2de361){_0x2de361=_0x2de361||0xc8;return function(_0x5226e8){if(_0x5226e8){return _0x58be24[_0x0db9('0x2d')](_0x2de361)[_0x0db9('0x2f')](_0x5226e8);}};}function respondWithFilteredResult(_0x533dad,_0x4ba1d8){return function(_0x45316a){if(_0x45316a){var _0x5c5841=typeof _0x4ba1d8[_0x0db9('0x30')]===_0x0db9('0x31')&&typeof _0x4ba1d8[_0x0db9('0x32')]==='undefined';var _0x27e9dc=_0x45316a[_0x0db9('0x33')];var _0x8ae36=_0x5c5841?0x0:_0x4ba1d8['offset'];var _0x49f1de=_0x5c5841?_0x45316a['count']:_0x4ba1d8[_0x0db9('0x30')]+_0x4ba1d8[_0x0db9('0x32')];var _0xe7a4d2;if(_0x49f1de>=_0x27e9dc){_0x49f1de=_0x27e9dc;_0xe7a4d2=0xc8;}else{_0xe7a4d2=0xce;}_0x533dad[_0x0db9('0x2d')](_0xe7a4d2);return _0x533dad[_0x0db9('0x34')]('Content-Range',_0x8ae36+'-'+_0x49f1de+'/'+_0x27e9dc)[_0x0db9('0x2f')](_0x45316a);}return null;};}function patchUpdates(_0xef5e46){return function(_0x159a0e){try{jsonpatch[_0x0db9('0x35')](_0x159a0e,_0xef5e46,!![]);}catch(_0x2eb3a7){return BPromise[_0x0db9('0x36')](_0x2eb3a7);}return _0x159a0e[_0x0db9('0x37')]();};}function saveUpdates(_0x47cc15,_0x4a152b){return function(_0x1de7cf){if(_0x1de7cf){return _0x1de7cf['update'](_0x47cc15)['then'](function(_0x578efa){return _0x578efa;});}return null;};}function removeEntity(_0x1f3431,_0x3801f1){return function(_0x4c45ed){if(_0x4c45ed){return _0x4c45ed['destroy']()[_0x0db9('0x24')](function(){_0x1f3431['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x22de42,_0x50c676){return function(_0x3eee24){if(!_0x3eee24){_0x22de42[_0x0db9('0x2c')](0x194);}return _0x3eee24;};}function handleError(_0x275236,_0x39bcdb){_0x39bcdb=_0x39bcdb||0x1f4;return function(_0x2f1c6d){logger['error'](_0x2f1c6d['stack']);if(_0x2f1c6d[_0x0db9('0x38')]){delete _0x2f1c6d[_0x0db9('0x38')];}_0x275236[_0x0db9('0x2d')](_0x39bcdb)['send'](_0x2f1c6d);};}exports[_0x0db9('0x39')]=function(_0x4877d8,_0x24b8c4){var _0xdbf24f={},_0x2590cc={},_0x5a3ac1={'count':0x0,'rows':[]};var _0x43a835=_['map'](db[_0x0db9('0x3a')]['rawAttributes'],function(_0x5b54ba){return{'name':_0x5b54ba[_0x0db9('0x3b')],'type':_0x5b54ba['type'][_0x0db9('0x3c')]};});_0x2590cc[_0x0db9('0x3d')]=_[_0x0db9('0x3e')](_0x43a835,'name');_0x2590cc[_0x0db9('0x3f')]=_['keys'](_0x4877d8[_0x0db9('0x3f')]);_0x2590cc['filters']=_[_0x0db9('0x40')](_0x2590cc['model'],_0x2590cc['query']);_0xdbf24f[_0x0db9('0x41')]=_['intersection'](_0x2590cc[_0x0db9('0x3d')],qs[_0x0db9('0x42')](_0x4877d8[_0x0db9('0x3f')][_0x0db9('0x42')]));_0xdbf24f[_0x0db9('0x41')]=_0xdbf24f[_0x0db9('0x41')][_0x0db9('0x43')]?_0xdbf24f[_0x0db9('0x41')]:_0x2590cc[_0x0db9('0x3d')];if(!_0x4877d8[_0x0db9('0x3f')][_0x0db9('0x44')](_0x0db9('0x45'))){_0xdbf24f[_0x0db9('0x32')]=qs[_0x0db9('0x32')](_0x4877d8['query'][_0x0db9('0x32')]);_0xdbf24f[_0x0db9('0x30')]=qs[_0x0db9('0x30')](_0x4877d8['query'][_0x0db9('0x30')]);}_0xdbf24f[_0x0db9('0x46')]=qs[_0x0db9('0x47')](_0x4877d8[_0x0db9('0x3f')][_0x0db9('0x47')]);_0xdbf24f[_0x0db9('0x48')]=qs[_0x0db9('0x49')](_[_0x0db9('0x4a')](_0x4877d8[_0x0db9('0x3f')],_0x2590cc['filters']),_0x43a835);if(_0x4877d8[_0x0db9('0x3f')][_0x0db9('0x4b')]){_0xdbf24f[_0x0db9('0x48')]=_['merge'](_0xdbf24f[_0x0db9('0x48')],{'$or':_[_0x0db9('0x3e')](_0x43a835,function(_0x591926){if(_0x591926[_0x0db9('0x4c')]!==_0x0db9('0x4d')){var _0x38a2de={};_0x38a2de[_0x591926[_0x0db9('0x38')]]={'$like':'%'+_0x4877d8[_0x0db9('0x3f')]['filter']+'%'};return _0x38a2de;}})});}_0xdbf24f=_[_0x0db9('0x4e')]({},_0xdbf24f,_0x4877d8['options']);var _0x11c6a7={'where':_0xdbf24f['where']};return db['WhatsappMessage'][_0x0db9('0x33')](_0x11c6a7)[_0x0db9('0x24')](function(_0x15c1ce){_0x5a3ac1['count']=_0x15c1ce;if(_0x4877d8[_0x0db9('0x3f')][_0x0db9('0x4f')]){_0xdbf24f[_0x0db9('0x50')]=[{'all':!![]}];}return db[_0x0db9('0x3a')]['findAll'](_0xdbf24f);})[_0x0db9('0x24')](function(_0x335aa6){_0x5a3ac1['rows']=_0x335aa6;return _0x5a3ac1;})[_0x0db9('0x24')](respondWithFilteredResult(_0x24b8c4,_0xdbf24f))[_0x0db9('0x2b')](handleError(_0x24b8c4,null));};exports[_0x0db9('0x51')]=function(_0x534a37,_0x2c993e){var _0x14cf03={'raw':!![],'where':{'id':_0x534a37['params']['id']}},_0x4a75a1={};_0x4a75a1['model']=_[_0x0db9('0x52')](db[_0x0db9('0x3a')]['rawAttributes']);_0x4a75a1['query']=_['keys'](_0x534a37['query']);_0x4a75a1[_0x0db9('0x49')]=_[_0x0db9('0x40')](_0x4a75a1[_0x0db9('0x3d')],_0x4a75a1[_0x0db9('0x3f')]);_0x14cf03['attributes']=_[_0x0db9('0x40')](_0x4a75a1[_0x0db9('0x3d')],qs[_0x0db9('0x42')](_0x534a37[_0x0db9('0x3f')][_0x0db9('0x42')]));_0x14cf03[_0x0db9('0x41')]=_0x14cf03[_0x0db9('0x41')][_0x0db9('0x43')]?_0x14cf03[_0x0db9('0x41')]:_0x4a75a1[_0x0db9('0x3d')];if(_0x534a37['query'][_0x0db9('0x4f')]){_0x14cf03[_0x0db9('0x50')]=[{'all':!![]}];}_0x14cf03=_['merge']({},_0x14cf03,_0x534a37['options']);return db[_0x0db9('0x3a')]['find'](_0x14cf03)['then'](handleEntityNotFound(_0x2c993e,null))[_0x0db9('0x24')](respondWithResult(_0x2c993e,null))[_0x0db9('0x2b')](handleError(_0x2c993e,null));};exports[_0x0db9('0x53')]=function(_0x5f0445,_0x14f07a){return db['WhatsappMessage']['create'](_0x5f0445[_0x0db9('0x54')],{})[_0x0db9('0x24')](respondWithResult(_0x14f07a,0xc9))[_0x0db9('0x2b')](handleError(_0x14f07a,null));};exports['update']=function(_0x4d756d,_0x100162){if(_0x4d756d[_0x0db9('0x54')]['id']){delete _0x4d756d['body']['id'];}return db['WhatsappMessage'][_0x0db9('0x55')]({'where':{'id':_0x4d756d[_0x0db9('0x56')]['id']}})[_0x0db9('0x24')](handleEntityNotFound(_0x100162,null))['then'](saveUpdates(_0x4d756d[_0x0db9('0x54')],null))['then'](respondWithResult(_0x100162,null))[_0x0db9('0x2b')](handleError(_0x100162,null));};exports[_0x0db9('0x57')]=function(_0x562e37,_0x4461e6){return db[_0x0db9('0x3a')][_0x0db9('0x55')]({'where':{'id':_0x562e37[_0x0db9('0x56')]['id']}})[_0x0db9('0x24')](handleEntityNotFound(_0x4461e6,null))[_0x0db9('0x24')](removeEntity(_0x4461e6,null))['catch'](handleError(_0x4461e6,null));};exports[_0x0db9('0x58')]=function(_0xa699a1,_0x59fa3c){return db[_0x0db9('0x3a')][_0x0db9('0x58')]()[_0x0db9('0x24')](respondWithResult(_0x59fa3c,null))[_0x0db9('0x2b')](handleError(_0x59fa3c,null));};var interaction_log=require(_0x0db9('0x16'))(_0x0db9('0x59'));exports[_0x0db9('0x5a')]=function(_0x5b417c,_0x5790fb,_0x57a3b4){var _0x3de6d4={'agent':{},'channel':'whatsapp'};if(_0x5b417c['body']['id']){delete _0x5b417c['body']['id'];}_0x5b417c['body']['read']=!![];_0x5b417c['body'][_0x0db9('0x5b')]=moment()['format'](_0x0db9('0x5c'));_0x5b417c[_0x0db9('0x54')][_0x0db9('0x5d')]=_0x5b417c[_0x0db9('0x54')][_0x0db9('0x5d')]||_0x5b417c[_0x0db9('0x5e')]['id'];_0x3de6d4[_0x0db9('0x5f')]['id']=_0x5b417c[_0x0db9('0x54')][_0x0db9('0x5d')];return db[_0x0db9('0x3a')][_0x0db9('0x55')]({'where':{'id':_0x5b417c['params']['id'],'UserId':null}})[_0x0db9('0x24')](handleEntityNotFound(_0x5790fb,null))['then'](saveUpdates(_0x5b417c[_0x0db9('0x54')],null))[_0x0db9('0x24')](function(_0xdcfdd3){if(_0xdcfdd3){_0x3de6d4['message']=_0xdcfdd3[_0x0db9('0x60')]({'plain':!![]});return db['WhatsappInteraction'][_0x0db9('0x55')]({'where':{'id':_0xdcfdd3[_0x0db9('0x61')]}});}return null;})[_0x0db9('0x24')](handleEntityNotFound(_0x5790fb,null))['then'](function(_0x3e77af){if(_0x3e77af){return _0x3e77af[_0x0db9('0x62')]({'UserId':_0x5b417c['body']['UserId'],'read1stAt':_[_0x0db9('0x63')](_0x3e77af[_0x0db9('0x64')])?moment()[_0x0db9('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0db9('0x24')](function(_0x56bf34){if(_0x56bf34){_0x3de6d4[_0x0db9('0x66')]=_0x56bf34[_0x0db9('0x60')]({'plain':!![]});interaction_log[_0x0db9('0x2a')](_0x0db9('0x67'),_0x5b417c[_0x0db9('0x5e')]['id'],_0x5b417c[_0x0db9('0x5e')]['name'],_0x5b417c[_0x0db9('0x5e')][_0x0db9('0x68')],_0x3de6d4[_0x0db9('0x66')]['id'],_0x5b417c['body']?JSON[_0x0db9('0x27')](_0x5b417c[_0x0db9('0x54')]):_0x0db9('0x69'));return respondWithRpcPromise(_0x0db9('0x6a'),_0x0db9('0x6b'),_0x3de6d4);}return null;})[_0x0db9('0x24')](function(_0x495314){var _0x14f1b2=_0x0db9('0x6c')+_0x495314[_0x0db9('0x29')][_0x0db9('0x6d')];return db[_0x0db9('0x6e')][_0x0db9('0x3f')](_0x14f1b2,{'type':db[_0x0db9('0x6f')][_0x0db9('0x70')]['SELECT'],'raw':!![]})['then'](function(_0x4e2653){return _0x4e2653;});})[_0x0db9('0x24')](function(_0x4bc03d){if(_0x4bc03d){_0x3de6d4[_0x0db9('0x29')][_0x0db9('0x71')]=_0x4bc03d[0x0];if(!_0x5b417c[_0x0db9('0x54')]['UserId'])return;return db[_0x0db9('0x72')]['find']({'where':{'id':_0x5b417c[_0x0db9('0x54')]['UserId'],'role':_0x0db9('0x5f')},'attributes':['id',_0x0db9('0x38'),'fullname',_0x0db9('0x73'),_0x0db9('0x74')],'raw':!![]});}return null;})[_0x0db9('0x24')](function(_0x3fd7f9){if(!_0x3fd7f9)return null;_0x3de6d4[_0x0db9('0x29')][_0x0db9('0x5f')]=_0x3fd7f9;return _0x3de6d4;})[_0x0db9('0x24')](function(_0x2d02db){if(_0x2d02db){if(_0x5b417c[_0x0db9('0x54')][_0x0db9('0x75')]){_0x3de6d4['message'][_0x0db9('0x76')]=util['format'](_0x0db9('0x77'),_0x5b417c[_0x0db9('0x5e')][_0x0db9('0x38')]);_0x3de6d4['message']['channel']=_0x3de6d4['channel'];_0x3de6d4[_0x0db9('0x29')]['motionChannel']=_0x3de6d4[_0x0db9('0x78')];_0x3de6d4[_0x0db9('0x29')][_0x0db9('0x79')]=_0x0db9('0x5a');return respondWithRpcPromise(_0x0db9('0x7a'),_0x0db9('0x7a'),{'event':_0x0db9('0x7b'),'message':_0x3de6d4[_0x0db9('0x29')]},client9002)[_0x0db9('0x24')](function(){return _0x3de6d4;});}return _0x3de6d4;}return null;})[_0x0db9('0x24')](respondWithResult(_0x5790fb,null))[_0x0db9('0x2b')](handleError(_0x5790fb,null));};var interaction_log=require(_0x0db9('0x16'))(_0x0db9('0x59'));exports[_0x0db9('0x36')]=function(_0x52546e,_0x1e67b1,_0x5676b9){var _0x31513f={'agent':{},'channel':_0x0db9('0x7c')};if(_0x52546e['body']['id']){delete _0x52546e[_0x0db9('0x54')]['id'];}_0x52546e[_0x0db9('0x54')][_0x0db9('0x5d')]=_0x52546e[_0x0db9('0x54')]['UserId']||_0x52546e[_0x0db9('0x5e')]['id'];_0x31513f[_0x0db9('0x5f')]['id']=_0x52546e[_0x0db9('0x54')][_0x0db9('0x5d')];return db[_0x0db9('0x3a')][_0x0db9('0x55')]({'where':{'id':_0x52546e[_0x0db9('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1e67b1,null))[_0x0db9('0x24')](function(_0x4db018){if(_0x4db018){_0x31513f[_0x0db9('0x29')]=_0x4db018[_0x0db9('0x60')]({'plain':!![]});return db[_0x0db9('0x7d')][_0x0db9('0x55')]({'where':{'id':_0x4db018[_0x0db9('0x61')]}});}return null;})[_0x0db9('0x24')](handleEntityNotFound(_0x1e67b1,null))['then'](function(_0x1b7433){if(_0x1b7433){_0x31513f[_0x0db9('0x66')]=_0x1b7433[_0x0db9('0x60')]({'plain':!![]});interaction_log['info'](_0x0db9('0x7e'),_0x52546e[_0x0db9('0x5e')]['id'],_0x52546e[_0x0db9('0x5e')][_0x0db9('0x38')],_0x52546e[_0x0db9('0x5e')][_0x0db9('0x68')],_0x31513f['interaction']['id'],_0x52546e[_0x0db9('0x54')]?JSON[_0x0db9('0x27')](_0x52546e[_0x0db9('0x54')]):_0x0db9('0x69'));return respondWithRpcPromise('RejectMessage',_0x0db9('0x7f'),_0x31513f);}return null;})[_0x0db9('0x24')](function(_0x50cfd6){var _0x3432b5='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x50cfd6['message'][_0x0db9('0x6d')];return db[_0x0db9('0x6e')][_0x0db9('0x3f')](_0x3432b5,{'type':db[_0x0db9('0x6f')]['QueryTypes'][_0x0db9('0x80')],'raw':!![]})[_0x0db9('0x24')](function(_0x12fd61){return _0x12fd61;});})['then'](function(_0x54989f){if(_0x54989f){_0x31513f[_0x0db9('0x29')][_0x0db9('0x71')]=_0x54989f[0x0];if(!_0x52546e[_0x0db9('0x54')][_0x0db9('0x5d')])return;return db[_0x0db9('0x72')][_0x0db9('0x55')]({'where':{'id':_0x52546e[_0x0db9('0x54')][_0x0db9('0x5d')],'role':_0x0db9('0x5f')},'attributes':['id',_0x0db9('0x38'),_0x0db9('0x81'),'email','internal'],'raw':!![]});}return null;})[_0x0db9('0x24')](function(_0x51352c){if(!_0x51352c)return null;_0x31513f[_0x0db9('0x29')][_0x0db9('0x5f')]=_0x51352c;return _0x31513f;})[_0x0db9('0x24')](function(_0x4755ee){if(_0x4755ee){_0x4755ee[_0x0db9('0x29')][_0x0db9('0x76')]=util['format']('SIP/%s',_0x52546e[_0x0db9('0x5e')]['name']);_0x4755ee[_0x0db9('0x29')][_0x0db9('0x78')]=_0x31513f[_0x0db9('0x78')];_0x4755ee[_0x0db9('0x29')]['motionChannel']=_0x31513f[_0x0db9('0x78')];_0x4755ee[_0x0db9('0x29')][_0x0db9('0x79')]=_0x0db9('0x36');respondWithRpcPromise(_0x0db9('0x7a'),'EventManager',{'event':_0x0db9('0x82'),'message':_0x4755ee[_0x0db9('0x29')]},client9002);return _0x31513f;}return null;})['then'](respondWithResult(_0x1e67b1,null))[_0x0db9('0x2b')](handleError(_0x1e67b1,null));};exports['status']=function(_0x2ac827,_0x3f4eeb,_0x58b980){if(_0x2ac827[_0x0db9('0x54')]['id']){delete _0x2ac827[_0x0db9('0x54')]['id'];}var _0x3a8f04;return db['WhatsappMessage']['find']({'where':{'id':_0x2ac827['params']['id']}})[_0x0db9('0x24')](handleEntityNotFound(_0x3f4eeb,null))[_0x0db9('0x24')](function(_0x54e978){if(_0x54e978){_0x3a8f04=_0x54e978;return db[_0x0db9('0x83')][_0x0db9('0x55')]({'where':{'id':_0x54e978[_0x0db9('0x84')]}});}})[_0x0db9('0x24')](handleEntityNotFound(_0x3f4eeb,null))[_0x0db9('0x24')](function(_0x4e1354){if(_0x4e1354){logger[_0x0db9('0x26')](_0x0db9('0x85'),'status',_0x0db9('0x86'),_0x4e1354['type'],util[_0x0db9('0x87')](_0x2ac827[_0x0db9('0x54')],{'showHidden':![],'depth':null}));switch(_0x4e1354[_0x0db9('0x4c')]){case'twilio':if(_0x2ac827[_0x0db9('0x54')][_0x0db9('0x88')]&&_0x2ac827['body']['MessageSid']===_0x3a8f04['messageId']&&_0x2ac827[_0x0db9('0x54')][_0x0db9('0x89')]&&_0x2ac827['body'][_0x0db9('0x89')]===_0x0db9('0x8a')){return _0x3a8f04[_0x0db9('0x62')]({'read':!![]});}else{logger[_0x0db9('0x28')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x0db9('0x2d'),'twilio',util[_0x0db9('0x87')](_0x2ac827['body'],{'showHidden':![],'depth':null}));}break;}return _0x3a8f04;}})['then'](respondWithResult(_0x3f4eeb,null))[_0x0db9('0x2b')](handleError(_0x3f4eeb,null));};
\ No newline at end of file
index 4f12b64..d849d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','update','remove','emit'];(function(_0x15fe4d,_0xf2e7d5){var _0x5a172b=function(_0x31760b){while(--_0x31760b){_0x15fe4d['push'](_0x15fe4d['shift']());}};_0x5a172b(++_0xf2e7d5);}(_0x0972,0x64));var _0x2097=function(_0x149a2c,_0xc9c360){_0x149a2c=_0x149a2c-0x0;var _0x5b685d=_0x0972[_0x149a2c];return _0x5b685d;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x2097('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2097('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2097('0x2'),'afterDestroy':_0x2097('0x3')};function emitEvent(_0x5b16c0){return function(_0x348ad8,_0x431d1c,_0xe6fbae){WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0+':'+_0x348ad8['id'],_0x348ad8);WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0,_0x348ad8);_0xe6fbae(null);};}for(var e in events){if(events[_0x2097('0x5')](e)){var event=events[e];WhatsappMessage[_0x2097('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xb688=['../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x4a2b3c,_0xc69f59){var _0x4b081b=function(_0x3dfcb1){while(--_0x3dfcb1){_0x4a2b3c['push'](_0x4a2b3c['shift']());}};_0x4b081b(++_0xc69f59);}(_0xb688,0xcf));var _0x8b68=function(_0x5cc43a,_0x408a98){_0x5cc43a=_0x5cc43a-0x0;var _0x161996=_0xb688[_0x5cc43a];return _0x161996;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x8b68('0x2')](0x0);var events={'afterCreate':_0x8b68('0x3'),'afterUpdate':_0x8b68('0x4'),'afterDestroy':_0x8b68('0x5')};function emitEvent(_0x4e281c){return function(_0x41030e,_0x27925d,_0x30f33d){WhatsappMessageEvents[_0x8b68('0x6')](_0x4e281c+':'+_0x41030e['id'],_0x41030e);WhatsappMessageEvents['emit'](_0x4e281c,_0x41030e);_0x30f33d(null);};}for(var e in events){if(events[_0x8b68('0x7')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x8b68('0x8')]=WhatsappMessageEvents;
\ No newline at end of file
index 024a199..99ee2b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3514=['WhatsappInteractionId','then','update','createdAt','catch','error','WhatsappAccount','find','type','twilio','authToken','phone','accountSid','whatsapp:','remote','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','utf8mb4_unicode_ci','lodash','util','moment','bluebird','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','direction','toLowerCase','out','UserId'];(function(_0x3bb557,_0x2d4e15){var _0x5eebcb=function(_0x309c44){while(--_0x309c44){_0x3bb557['push'](_0x3bb557['shift']());}};_0x5eebcb(++_0x2d4e15);}(_0x3514,0x118));var _0x4351=function(_0x316e14,_0x460e82){_0x316e14=_0x316e14-0x0;var _0x49b86a=_0x3514[_0x316e14];return _0x49b86a;};'use strict';var _=require(_0x4351('0x0'));var util=require(_0x4351('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4351('0x2'));var BPromise=require(_0x4351('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4351('0x4'));var rimraf=require(_0x4351('0x5'));var config=require(_0x4351('0x6'));var attributes=require(_0x4351('0x7'));module[_0x4351('0x8')]=function(_0x8cabb,_0x32db6a){return _0x8cabb[_0x4351('0x9')](_0x4351('0xa'),attributes,{'tableName':_0x4351('0xb'),'paranoid':![],'indexes':[{'name':_0x4351('0xc'),'fields':['messageId']},{'name':_0x4351('0xd'),'fields':[_0x4351('0xe')],'type':_0x4351('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x162410,_0x36e819,_0x5d8c97){var _0x2b028d=_0x8cabb[_0x4351('0x10')];var _0x2560b6=_0x162410['get']({'plain':!![]});if(_0x2560b6[_0x4351('0x11')]['toLowerCase']()==='in'||_0x2560b6['direction'][_0x4351('0x12')]()===_0x4351('0x13')&&!_0x2560b6['secret']&&!_['isNil'](_0x2560b6[_0x4351('0x14')])){_0x2b028d['WhatsappInteraction']['findOne']({'where':{'id':_0x2560b6[_0x4351('0x15')]}})[_0x4351('0x16')](function(_0x26ac15){if(_0x26ac15){_0x26ac15[_0x4351('0x17')]({'lastMsgAt':_0x2560b6[_0x4351('0x18')],'lastMsgDirection':_0x2560b6['direction'][_0x4351('0x12')]()});}})[_0x4351('0x19')](function(_0x1558d2){console[_0x4351('0x1a')](_0x1558d2);});}if(_0x2560b6['direction']===_0x4351('0x13')&&!_0x2560b6['secret']){var _0x1037c8;_0x2b028d[_0x4351('0x1b')][_0x4351('0x1c')]({'where':{'id':_0x2560b6['WhatsappAccountId']},'raw':!![]})[_0x4351('0x16')](function(_0x51b39c){_0x1037c8=_0x51b39c;if(_0x1037c8&&_0x1037c8['type']){switch(_0x1037c8[_0x4351('0x1d')]){case _0x4351('0x1e'):var _0x46b96a=require(_0x4351('0x1e'));if(_0x1037c8['accountSid']&&_0x1037c8[_0x4351('0x1f')]&&_0x1037c8[_0x4351('0x20')]){var _0x2f7b09=new _0x46b96a(_0x1037c8[_0x4351('0x21')],_0x1037c8['authToken']);_0x2f7b09['messages']['create']({'body':_0x2560b6[_0x4351('0xe')],'to':'whatsapp:'+_0x2560b6[_0x4351('0x20')],'from':_0x4351('0x22')+_0x1037c8[_0x4351('0x20')],'statusCallback':_0x1037c8[_0x4351('0x23')]+'/api/whatsapp/messages/'+_0x2560b6['id']+_0x4351('0x24')+_0x1037c8[_0x4351('0x25')]})[_0x4351('0x16')](function(_0x455517){if(_0x455517[_0x4351('0x26')]){return _0x162410[_0x4351('0x17')]({'messageId':_0x455517[_0x4351('0x26')]});}})[_0x4351('0x19')](function(_0x253585){logger[_0x4351('0x1a')](_0x4351('0x27'),_0x4351('0x28'),_0x4351('0x1e'),util[_0x4351('0x29')](_0x253585,{'showHidden':![],'depth':null}));});}else{logger[_0x4351('0x1a')](_0x4351('0x27'),_0x4351('0x28'),_0x4351('0x1e'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})['finally'](function(){_0x5d8c97();});}else{_0x5d8c97();}}},'charset':'utf8mb4','collate':_0x4351('0x2a')});};
\ No newline at end of file
+var _0x4e5a=['token','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','UserId','WhatsappInteractionId','then','update','error','WhatsappAccount','find','WhatsappAccountId','twilio','accountSid','authToken','whatsapp:','phone','remote','/api/whatsapp/messages/'];(function(_0x148870,_0x2253e8){var _0x11410f=function(_0x4439e9){while(--_0x4439e9){_0x148870['push'](_0x148870['shift']());}};_0x11410f(++_0x2253e8);}(_0x4e5a,0x143));var _0xa4e5=function(_0x1eb6ea,_0x55050e){_0x1eb6ea=_0x1eb6ea-0x0;var _0x17a663=_0x4e5a[_0x1eb6ea];return _0x17a663;};'use strict';var _=require(_0xa4e5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa4e5('0x1'));var moment=require(_0xa4e5('0x2'));var BPromise=require(_0xa4e5('0x3'));var rp=require(_0xa4e5('0x4'));var fs=require('fs');var path=require(_0xa4e5('0x5'));var rimraf=require(_0xa4e5('0x6'));var config=require(_0xa4e5('0x7'));var attributes=require(_0xa4e5('0x8'));module[_0xa4e5('0x9')]=function(_0x334291,_0x39799b){return _0x334291[_0xa4e5('0xa')](_0xa4e5('0xb'),attributes,{'tableName':_0xa4e5('0xc'),'paranoid':![],'indexes':[{'name':_0xa4e5('0xd'),'fields':['messageId']},{'name':_0xa4e5('0xe'),'fields':[_0xa4e5('0xf')],'type':_0xa4e5('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x203879,_0x22313c,_0x343c05){var _0x57ab1d=_0x334291['models'];var _0x502774=_0x203879[_0xa4e5('0x11')]({'plain':!![]});if(_0x502774[_0xa4e5('0x12')][_0xa4e5('0x13')]()==='in'||_0x502774[_0xa4e5('0x12')][_0xa4e5('0x13')]()===_0xa4e5('0x14')&&!_0x502774[_0xa4e5('0x15')]&&!_['isNil'](_0x502774[_0xa4e5('0x16')])){_0x57ab1d['WhatsappInteraction']['findOne']({'where':{'id':_0x502774[_0xa4e5('0x17')]}})[_0xa4e5('0x18')](function(_0x3529bc){if(_0x3529bc){_0x3529bc[_0xa4e5('0x19')]({'lastMsgAt':_0x502774['createdAt'],'lastMsgDirection':_0x502774[_0xa4e5('0x12')][_0xa4e5('0x13')]()});}})['catch'](function(_0x3b547f){console[_0xa4e5('0x1a')](_0x3b547f);});}if(_0x502774[_0xa4e5('0x12')]==='out'&&!_0x502774['secret']){var _0x6ef650;_0x57ab1d[_0xa4e5('0x1b')][_0xa4e5('0x1c')]({'where':{'id':_0x502774[_0xa4e5('0x1d')]},'raw':!![]})[_0xa4e5('0x18')](function(_0x4cb636){_0x6ef650=_0x4cb636;if(_0x6ef650&&_0x6ef650['type']){switch(_0x6ef650['type']){case _0xa4e5('0x1e'):var _0x56b23b=require(_0xa4e5('0x1e'));if(_0x6ef650[_0xa4e5('0x1f')]&&_0x6ef650['authToken']&&_0x6ef650['phone']){var _0x26392a=new _0x56b23b(_0x6ef650[_0xa4e5('0x1f')],_0x6ef650[_0xa4e5('0x20')]);_0x26392a['messages']['create']({'body':_0x502774[_0xa4e5('0xf')],'to':_0xa4e5('0x21')+_0x502774[_0xa4e5('0x22')],'from':_0xa4e5('0x21')+_0x6ef650['phone'],'statusCallback':_0x6ef650[_0xa4e5('0x23')]+_0xa4e5('0x24')+_0x502774['id']+'/status?token='+_0x6ef650[_0xa4e5('0x25')]})[_0xa4e5('0x18')](function(_0x4a60fc){if(_0x4a60fc['sid']){return _0x203879[_0xa4e5('0x19')]({'messageId':_0x4a60fc['sid']});}})[_0xa4e5('0x26')](function(_0x3c6e52){logger['error'](_0xa4e5('0x27'),_0xa4e5('0x28'),_0xa4e5('0x1e'),util['inspect'](_0x3c6e52,{'showHidden':![],'depth':null}));});}else{logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xa4e5('0x28'),_0xa4e5('0x1e'),_0xa4e5('0x29'));}break;}}})[_0xa4e5('0x2a')](function(){_0x343c05();});}else{_0x343c05();}}},'charset':_0xa4e5('0x2b'),'collate':_0xa4e5('0x2c')});};
\ No newline at end of file
index 973adb3..41223ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddfc=['./whatsappMessage.socket','register','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','options','raw','stringify','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xddfc,0x17b));var _0xcddf=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xddfc[_0x5f0089];return _0x193892;};'use strict';var _=require(_0xcddf('0x0'));var util=require(_0xcddf('0x1'));var moment=require(_0xcddf('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcddf('0x3'));var db=require(_0xcddf('0x4'))['db'];var utils=require(_0xcddf('0x5'));var logger=require('../../config/logger')(_0xcddf('0x6'));var config=require(_0xcddf('0x7'));var jayson=require(_0xcddf('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xcddf('0x9')]=_[_0xcddf('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcddf('0xb'))[_0xcddf('0xc')](socket);function respondWithRpcPromise(_0x3318ab,_0x77bd54,_0xe49dd1){return new BPromise(function(_0x423551,_0xfa4076){return client[_0xcddf('0xd')](_0x3318ab,_0xe49dd1)['then'](function(_0x274bfb){logger[_0xcddf('0xe')](_0xcddf('0xf'),_0x77bd54,_0xcddf('0x10'));logger[_0xcddf('0x11')](_0xcddf('0x12'),_0x77bd54,_0xcddf('0x10'),JSON['stringify'](_0x274bfb));if(_0x274bfb[_0xcddf('0x13')]){if(_0x274bfb[_0xcddf('0x13')][_0xcddf('0x14')]===0x1f4){logger[_0xcddf('0x13')](_0xcddf('0xf'),_0x77bd54,_0x274bfb[_0xcddf('0x13')][_0xcddf('0x15')]);return _0xfa4076(_0x274bfb[_0xcddf('0x13')]['message']);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x77bd54,_0x274bfb['error'][_0xcddf('0x15')]);return _0x423551(_0x274bfb['error'][_0xcddf('0x15')]);}else{logger[_0xcddf('0xe')]('WhatsappMessage,\x20%s,\x20%s',_0x77bd54,'request\x20sent');_0x423551(_0x274bfb[_0xcddf('0x16')][_0xcddf('0x15')]);}})[_0xcddf('0x17')](function(_0x15301a){logger[_0xcddf('0x13')](_0xcddf('0xf'),_0x77bd54,_0x15301a);_0xfa4076(_0x15301a);});});}exports[_0xcddf('0x18')]=function(_0x50848b){var _0x3838bc=this;return new Promise(function(_0x415244,_0x507cec){return db[_0xcddf('0x19')][_0xcddf('0x1a')](_0x50848b['body'],{'raw':_0x50848b[_0xcddf('0x1b')]?_0x50848b['options'][_0xcddf('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x388e41){logger['info'](_0xcddf('0x18'),_0x50848b);logger[_0xcddf('0x11')](_0xcddf('0x18'),_0x50848b,JSON[_0xcddf('0x1d')](_0x388e41));_0x415244(_0x388e41);})[_0xcddf('0x17')](function(_0x283930){logger[_0xcddf('0x13')](_0xcddf('0x18'),_0x283930[_0xcddf('0x15')],_0x50848b);_0x507cec(_0x3838bc[_0xcddf('0x13')](0x1f4,_0x283930[_0xcddf('0x15')]));});});};
\ No newline at end of file
+var _0x82af=['then','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','redis','socket.io-emitter','./whatsappMessage.socket','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x82af,0xf2));var _0xf82a=function(_0x187399,_0x40c56d){_0x187399=_0x187399-0x0;var _0x40fa92=_0x82af[_0x187399];return _0x40fa92;};'use strict';var _=require(_0xf82a('0x0'));var util=require(_0xf82a('0x1'));var moment=require(_0xf82a('0x2'));var BPromise=require(_0xf82a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf82a('0x4'))['db'];var utils=require(_0xf82a('0x5'));var logger=require('../../config/logger')(_0xf82a('0x6'));var config=require('../../config/environment');var jayson=require(_0xf82a('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xf82a('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xf82a('0x9'))(new Redis(config[_0xf82a('0x8')]));require(_0xf82a('0xa'))['register'](socket);function respondWithRpcPromise(_0x2322c6,_0x5995ff,_0x3d2adb){return new BPromise(function(_0x44835e,_0x5a1aba){return client[_0xf82a('0xb')](_0x2322c6,_0x3d2adb)['then'](function(_0x5f5b70){logger[_0xf82a('0xc')](_0xf82a('0xd'),_0x5995ff,_0xf82a('0xe'));logger[_0xf82a('0xf')](_0xf82a('0x10'),_0x5995ff,_0xf82a('0xe'),JSON['stringify'](_0x5f5b70));if(_0x5f5b70[_0xf82a('0x11')]){if(_0x5f5b70[_0xf82a('0x11')][_0xf82a('0x12')]===0x1f4){logger[_0xf82a('0x11')](_0xf82a('0xd'),_0x5995ff,_0x5f5b70['error']['message']);return _0x5a1aba(_0x5f5b70['error'][_0xf82a('0x13')]);}logger[_0xf82a('0x11')](_0xf82a('0xd'),_0x5995ff,_0x5f5b70[_0xf82a('0x11')][_0xf82a('0x13')]);return _0x44835e(_0x5f5b70[_0xf82a('0x11')][_0xf82a('0x13')]);}else{logger['info'](_0xf82a('0xd'),_0x5995ff,_0xf82a('0xe'));_0x44835e(_0x5f5b70[_0xf82a('0x14')]['message']);}})[_0xf82a('0x15')](function(_0x6a1acf){logger['error'](_0xf82a('0xd'),_0x5995ff,_0x6a1acf);_0x5a1aba(_0x6a1acf);});});}exports[_0xf82a('0x16')]=function(_0x547eb4){var _0xd69076=this;return new Promise(function(_0x3d4424,_0x5060e5){return db[_0xf82a('0x17')][_0xf82a('0x18')](_0x547eb4[_0xf82a('0x19')],{'raw':_0x547eb4['options']?_0x547eb4[_0xf82a('0x1a')][_0xf82a('0x1b')]===undefined?!![]:![]:!![]})[_0xf82a('0x1c')](function(_0x2b61c9){logger[_0xf82a('0xc')](_0xf82a('0x16'),_0x547eb4);logger[_0xf82a('0xf')](_0xf82a('0x16'),_0x547eb4,JSON[_0xf82a('0x1d')](_0x2b61c9));_0x3d4424(_0x2b61c9);})[_0xf82a('0x15')](function(_0x30baf1){logger[_0xf82a('0x11')]('CreateWhatsappMessage',_0x30baf1['message'],_0x547eb4);_0x5060e5(_0xd69076[_0xf82a('0x11')](0x1f4,_0x30baf1[_0xf82a('0x13')]));});});};
\ No newline at end of file
index 9433f10..e56ab02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2e0=['emit','removeListener','length','whatsappMessage:','./whatsappMessage.events'];(function(_0x7c4613,_0x40700e){var _0x9184a6=function(_0x25b449){while(--_0x25b449){_0x7c4613['push'](_0x7c4613['shift']());}};_0x9184a6(++_0x40700e);}(_0xc2e0,0x167));var _0x0c2e=function(_0x2658c8,_0x5197a3){_0x2658c8=_0x2658c8-0x0;var _0x377f10=_0xc2e0[_0x2658c8];return _0x377f10;};'use strict';var WhatsappMessageEvents=require(_0x0c2e('0x0'));var events=['save','remove','update'];function createListener(_0x5c56aa,_0x78198c){return function(_0x22315e){_0x78198c[_0x0c2e('0x1')](_0x5c56aa,_0x22315e);};}function removeListener(_0xde9490,_0x36d476){return function(){WhatsappMessageEvents[_0x0c2e('0x2')](_0xde9490,_0x36d476);};}exports['register']=function(_0xe5b346){for(var _0xbc56c=0x0,_0x10cad6=events[_0x0c2e('0x3')];_0xbc56c<_0x10cad6;_0xbc56c++){var _0x22684b=events[_0xbc56c];var _0x58c72c=createListener(_0x0c2e('0x4')+_0x22684b,_0xe5b346);WhatsappMessageEvents['on'](_0x22684b,_0x58c72c);}};
\ No newline at end of file
+var _0xc4ff=['./whatsappMessage.events','save','remove','update','emit','removeListener','register','length','whatsappMessage:'];(function(_0x150297,_0x95d3ac){var _0x69c5e8=function(_0x1bbf11){while(--_0x1bbf11){_0x150297['push'](_0x150297['shift']());}};_0x69c5e8(++_0x95d3ac);}(_0xc4ff,0xf3));var _0xfc4f=function(_0x28eaab,_0x414ddb){_0x28eaab=_0x28eaab-0x0;var _0x1c534d=_0xc4ff[_0x28eaab];return _0x1c534d;};'use strict';var WhatsappMessageEvents=require(_0xfc4f('0x0'));var events=[_0xfc4f('0x1'),_0xfc4f('0x2'),_0xfc4f('0x3')];function createListener(_0x2cda5a,_0x3085ff){return function(_0x29a2f8){_0x3085ff[_0xfc4f('0x4')](_0x2cda5a,_0x29a2f8);};}function removeListener(_0x547112,_0x2d1015){return function(){WhatsappMessageEvents[_0xfc4f('0x5')](_0x547112,_0x2d1015);};}exports[_0xfc4f('0x6')]=function(_0x9d0381){for(var _0x133d45=0x0,_0x20af7f=events[_0xfc4f('0x7')];_0x133d45<_0x20af7f;_0x133d45++){var _0x2b69f9=events[_0x133d45];var _0x2aec8e=createListener(_0xfc4f('0x8')+_0x2b69f9,_0x9d0381);WhatsappMessageEvents['on'](_0x2b69f9,_0x2aec8e);}};
\ No newline at end of file
index d209406..cee0c2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2581=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','/:id/teams','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router'];(function(_0x188d89,_0x5a32ee){var _0x3916ba=function(_0x4e0cc4){while(--_0x4e0cc4){_0x188d89['push'](_0x188d89['shift']());}};_0x3916ba(++_0x5a32ee);}(_0x2581,0x72));var _0x1258=function(_0x8f472b,_0x39ef2c){_0x8f472b=_0x8f472b-0x0;var _0x3c79e4=_0x2581[_0x8f472b];return _0x3c79e4;};'use strict';var multer=require(_0x1258('0x0'));var util=require(_0x1258('0x1'));var path=require(_0x1258('0x2'));var timeout=require(_0x1258('0x3'));var express=require(_0x1258('0x4'));var router=express[_0x1258('0x5')]();var fs_extra=require(_0x1258('0x6'));var auth=require(_0x1258('0x7'));var interaction=require(_0x1258('0x8'));var config=require(_0x1258('0x9'));var controller=require('./whatsappQueue.controller');router[_0x1258('0xa')]('/',auth[_0x1258('0xb')](),controller[_0x1258('0xc')]);router[_0x1258('0xa')](_0x1258('0xd'),auth[_0x1258('0xb')](),controller[_0x1258('0xe')]);router[_0x1258('0xa')](_0x1258('0xf'),auth[_0x1258('0xb')](),controller['show']);router[_0x1258('0xa')](_0x1258('0x10'),auth[_0x1258('0xb')](),controller[_0x1258('0x11')]);router[_0x1258('0xa')]('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0x1258('0xa')](_0x1258('0x12'),auth[_0x1258('0xb')](),controller[_0x1258('0x13')]);router[_0x1258('0x14')]('/',auth['isAuthenticated'](),controller[_0x1258('0x15')]);router[_0x1258('0x14')]('/:id/teams',auth[_0x1258('0xb')](),controller[_0x1258('0x16')]);router[_0x1258('0x14')](_0x1258('0x12'),auth[_0x1258('0xb')](),controller['addAgents']);router[_0x1258('0x17')](_0x1258('0xf'),auth[_0x1258('0xb')](),controller[_0x1258('0x18')]);router[_0x1258('0x19')](_0x1258('0xf'),auth['isAuthenticated'](),controller[_0x1258('0x1a')]);router['delete'](_0x1258('0x1b'),auth[_0x1258('0xb')](),controller[_0x1258('0x1c')]);router[_0x1258('0x19')]('/:id/users',auth[_0x1258('0xb')](),controller[_0x1258('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0xb679=['addAgents','put','/:id','update','delete','destroy','removeTeams','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','/:id/users'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xb679,0x1e8));var _0x9b67=function(_0x231e39,_0x27af17){_0x231e39=_0x231e39-0x0;var _0x4bfc5e=_0xb679[_0x231e39];return _0x4bfc5e;};'use strict';var multer=require('multer');var util=require(_0x9b67('0x0'));var path=require(_0x9b67('0x1'));var timeout=require(_0x9b67('0x2'));var express=require(_0x9b67('0x3'));var router=express[_0x9b67('0x4')]();var fs_extra=require(_0x9b67('0x5'));var auth=require(_0x9b67('0x6'));var interaction=require(_0x9b67('0x7'));var config=require(_0x9b67('0x8'));var controller=require('./whatsappQueue.controller');router[_0x9b67('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9b67('0x9')](_0x9b67('0xa'),auth[_0x9b67('0xb')](),controller[_0x9b67('0xc')]);router[_0x9b67('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x9b67('0xd')]);router[_0x9b67('0x9')](_0x9b67('0xe'),auth[_0x9b67('0xb')](),controller[_0x9b67('0xf')]);router[_0x9b67('0x9')](_0x9b67('0x10'),auth[_0x9b67('0xb')](),controller[_0x9b67('0x11')]);router['get']('/:id/users',auth[_0x9b67('0xb')](),controller[_0x9b67('0x12')]);router['post']('/',auth[_0x9b67('0xb')](),controller['create']);router[_0x9b67('0x13')](_0x9b67('0x10'),auth['isAuthenticated'](),controller[_0x9b67('0x14')]);router[_0x9b67('0x13')](_0x9b67('0x15'),auth[_0x9b67('0xb')](),controller[_0x9b67('0x16')]);router[_0x9b67('0x17')](_0x9b67('0x18'),auth[_0x9b67('0xb')](),controller[_0x9b67('0x19')]);router[_0x9b67('0x1a')](_0x9b67('0x18'),auth[_0x9b67('0xb')](),controller[_0x9b67('0x1b')]);router[_0x9b67('0x1a')](_0x9b67('0x10'),auth[_0x9b67('0xb')](),controller[_0x9b67('0x1c')]);router['delete'](_0x9b67('0x15'),auth[_0x9b67('0xb')](),controller['removeAgents']);module[_0x9b67('0x1d')]=router;
\ No newline at end of file
index d114c92..207c8d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b75=['INTEGER','rrmemory','roundrobin','sequelize','exports','STRING','name'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0x3b75,0xdc));var _0x53b7=function(_0x2d4421,_0x15a84f){_0x2d4421=_0x2d4421-0x0;var _0x2d3b01=_0x3b75[_0x2d4421];return _0x2d3b01;};'use strict';var Sequelize=require(_0x53b7('0x0'));module[_0x53b7('0x1')]={'name':{'type':Sequelize[_0x53b7('0x2')],'unique':_0x53b7('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x53b7('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x53b7('0x5'),'beepall',_0x53b7('0x6'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x89c4=['rrmemory','beepall','roundrobin','STRING','sequelize','exports','name'];(function(_0x4fcd41,_0x5964ce){var _0x9e4e4=function(_0x5f51e0){while(--_0x5f51e0){_0x4fcd41['push'](_0x4fcd41['shift']());}};_0x9e4e4(++_0x5964ce);}(_0x89c4,0x82));var _0x489c=function(_0x329f48,_0x3887a6){_0x329f48=_0x329f48-0x0;var _0x1a933a=_0x89c4[_0x329f48];return _0x1a933a;};'use strict';var Sequelize=require(_0x489c('0x0'));module[_0x489c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x489c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x489c('0x3'),_0x489c('0x4'),_0x489c('0x5'))},'description':{'type':Sequelize[_0x489c('0x6')]}};
\ No newline at end of file
index ead792a..9c489f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5ab=['spread','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','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/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','./whatsappQueue.socket','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','end','sendStatus','error','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','nolimit','order','sort','filter','merge','VIRTUAL','options','where','include','findAll','rows','catch','show','params','intersection','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','WhatsappQueues','UserProfileSection','userProfileId','autoAssociation','describe','findOne','hasOwnProperty','WhatsappQueueId','User','findAndCountAll','UserId','agent','updatedAt','format','%s/%s','SIP','whatsappPause','createdAt','pick','getTeams','addTeams','ids','Team','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','field','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','SELECT','every','includes','all','compact','value','removeAgents','addAgents','omit'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0xa5ab,0x92));var _0xba5a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5ab[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xba5a('0x0'));var rimraf=require(_0xba5a('0x1'));var zipdir=require(_0xba5a('0x2'));var jsonpatch=require(_0xba5a('0x3'));var rp=require(_0xba5a('0x4'));var moment=require(_0xba5a('0x5'));var BPromise=require(_0xba5a('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xba5a('0x7'));var sox=require(_0xba5a('0x8'));var csv=require('to-csv');var ejs=require(_0xba5a('0x9'));var fs=require('fs');var fs_extra=require(_0xba5a('0xa'));var _=require(_0xba5a('0xb'));var squel=require(_0xba5a('0xc'));var crypto=require(_0xba5a('0xd'));var jsforce=require(_0xba5a('0xe'));var deskjs=require(_0xba5a('0xf'));var toCsv=require('to-csv');var querystring=require(_0xba5a('0x10'));var Papa=require(_0xba5a('0x11'));var Redis=require(_0xba5a('0x12'));var authService=require(_0xba5a('0x13'));var qs=require(_0xba5a('0x14'));var as=require(_0xba5a('0x15'));var hardwareService=require(_0xba5a('0x16'));var logger=require(_0xba5a('0x17'))('api');var utils=require(_0xba5a('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xba5a('0x19'));var db=require(_0xba5a('0x1a'))['db'];config['redis']=_[_0xba5a('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba5a('0x1c'))(new Redis(config['redis']));require(_0xba5a('0x1d'))['register'](socket);function respondWithStatusCode(_0x40d7a7,_0x302e98){_0x302e98=_0x302e98||0xcc;return function(_0x109947){if(_0x109947){return _0x40d7a7['sendStatus'](_0x302e98);}return _0x40d7a7[_0xba5a('0x1e')](_0x302e98)['end']();};}function respondWithResult(_0x13adbf,_0x2df45e){_0x2df45e=_0x2df45e||0xc8;return function(_0x520da3){if(_0x520da3){return _0x13adbf[_0xba5a('0x1e')](_0x2df45e)['json'](_0x520da3);}};}function respondWithFilteredResult(_0x32a4dd,_0x1766be){return function(_0x4cedb1){if(_0x4cedb1){var _0x91f187=typeof _0x1766be[_0xba5a('0x1f')]===_0xba5a('0x20')&&typeof _0x1766be[_0xba5a('0x21')]===_0xba5a('0x20');var _0x550c17=_0x4cedb1[_0xba5a('0x22')];var _0x1ed0a9=_0x91f187?0x0:_0x1766be[_0xba5a('0x1f')];var _0x1a2914=_0x91f187?_0x4cedb1[_0xba5a('0x22')]:_0x1766be[_0xba5a('0x1f')]+_0x1766be[_0xba5a('0x21')];var _0x5e3fe9;if(_0x1a2914>=_0x550c17){_0x1a2914=_0x550c17;_0x5e3fe9=0xc8;}else{_0x5e3fe9=0xce;}_0x32a4dd[_0xba5a('0x1e')](_0x5e3fe9);return _0x32a4dd[_0xba5a('0x23')](_0xba5a('0x24'),_0x1ed0a9+'-'+_0x1a2914+'/'+_0x550c17)[_0xba5a('0x25')](_0x4cedb1);}return null;};}function patchUpdates(_0x1d97e4){return function(_0x513b77){try{jsonpatch[_0xba5a('0x26')](_0x513b77,_0x1d97e4,!![]);}catch(_0x3eb83c){return BPromise['reject'](_0x3eb83c);}return _0x513b77[_0xba5a('0x27')]();};}function saveUpdates(_0x56735f,_0x556ac7){return function(_0x49bb74){if(_0x49bb74){return _0x49bb74[_0xba5a('0x28')](_0x56735f)[_0xba5a('0x29')](function(_0x4d6bcd){return _0x4d6bcd;});}return null;};}function removeEntity(_0x4aab53,_0x48a10d){return function(_0x38e433){if(_0x38e433){return _0x38e433[_0xba5a('0x2a')]()['then'](function(){var _0x3bc2d6=_0x38e433[_0xba5a('0x2b')]({'plain':!![]});var _0x3a1d19='WhatsappQueues';return db[_0xba5a('0x2c')][_0xba5a('0x2a')]({'where':{'type':_0x3a1d19,'resourceId':_0x3bc2d6['id']}})['then'](function(){return _0x38e433;});})['then'](function(){_0x4aab53[_0xba5a('0x1e')](0xcc)[_0xba5a('0x2d')]();});}};}function handleEntityNotFound(_0x330129,_0x196177){return function(_0x5b2068){if(!_0x5b2068){_0x330129[_0xba5a('0x2e')](0x194);}return _0x5b2068;};}function handleError(_0x59a77a,_0x27dc0d){_0x27dc0d=_0x27dc0d||0x1f4;return function(_0x24487b){logger[_0xba5a('0x2f')](_0x24487b[_0xba5a('0x30')]);if(_0x24487b[_0xba5a('0x31')]){delete _0x24487b[_0xba5a('0x31')];}_0x59a77a[_0xba5a('0x1e')](_0x27dc0d)[_0xba5a('0x32')](_0x24487b);};}exports[_0xba5a('0x33')]=function(_0x14c521,_0x5458ba){var _0x1346e9={},_0x26d202={},_0x314816={'count':0x0,'rows':[]};var _0x523f41=_['map'](db[_0xba5a('0x34')][_0xba5a('0x35')],function(_0x3237db){return{'name':_0x3237db[_0xba5a('0x36')],'type':_0x3237db[_0xba5a('0x37')][_0xba5a('0x38')]};});_0x26d202[_0xba5a('0x39')]=_[_0xba5a('0x3a')](_0x523f41,_0xba5a('0x31'));_0x26d202[_0xba5a('0x3b')]=_[_0xba5a('0x3c')](_0x14c521[_0xba5a('0x3b')]);_0x26d202[_0xba5a('0x3d')]=_['intersection'](_0x26d202[_0xba5a('0x39')],_0x26d202[_0xba5a('0x3b')]);_0x1346e9[_0xba5a('0x3e')]=_['intersection'](_0x26d202[_0xba5a('0x39')],qs['fields'](_0x14c521[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x1346e9['attributes']=_0x1346e9[_0xba5a('0x3e')]['length']?_0x1346e9[_0xba5a('0x3e')]:_0x26d202['model'];if(!_0x14c521[_0xba5a('0x3b')]['hasOwnProperty'](_0xba5a('0x40'))){_0x1346e9[_0xba5a('0x21')]=qs[_0xba5a('0x21')](_0x14c521['query'][_0xba5a('0x21')]);_0x1346e9[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x14c521[_0xba5a('0x3b')][_0xba5a('0x1f')]);}_0x1346e9[_0xba5a('0x41')]=qs['sort'](_0x14c521[_0xba5a('0x3b')][_0xba5a('0x42')]);_0x1346e9['where']=qs[_0xba5a('0x3d')](_['pick'](_0x14c521['query'],_0x26d202[_0xba5a('0x3d')]),_0x523f41);if(_0x14c521[_0xba5a('0x3b')][_0xba5a('0x43')]){_0x1346e9['where']=_[_0xba5a('0x44')](_0x1346e9['where'],{'$or':_[_0xba5a('0x3a')](_0x523f41,function(_0x2322e7){if(_0x2322e7[_0xba5a('0x37')]!==_0xba5a('0x45')){var _0x75e9aa={};_0x75e9aa[_0x2322e7[_0xba5a('0x31')]]={'$like':'%'+_0x14c521[_0xba5a('0x3b')][_0xba5a('0x43')]+'%'};return _0x75e9aa;}})});}_0x1346e9=_['merge']({},_0x1346e9,_0x14c521[_0xba5a('0x46')]);var _0x5af8fb={'where':_0x1346e9[_0xba5a('0x47')]};return db[_0xba5a('0x34')][_0xba5a('0x22')](_0x5af8fb)['then'](function(_0x39c115){_0x314816['count']=_0x39c115;if(_0x14c521[_0xba5a('0x3b')]['includeAll']){_0x1346e9[_0xba5a('0x48')]=[{'all':!![]}];}return db[_0xba5a('0x34')][_0xba5a('0x49')](_0x1346e9);})[_0xba5a('0x29')](function(_0x3111ba){_0x314816[_0xba5a('0x4a')]=_0x3111ba;return _0x314816;})[_0xba5a('0x29')](respondWithFilteredResult(_0x5458ba,_0x1346e9))[_0xba5a('0x4b')](handleError(_0x5458ba,null));};exports[_0xba5a('0x4c')]=function(_0x182311,_0x42c300){var _0x58c4dd={'raw':!![],'where':{'id':_0x182311[_0xba5a('0x4d')]['id']}},_0x47e4b0={};_0x47e4b0[_0xba5a('0x39')]=_['keys'](db['WhatsappQueue'][_0xba5a('0x35')]);_0x47e4b0[_0xba5a('0x3b')]=_['keys'](_0x182311[_0xba5a('0x3b')]);_0x47e4b0[_0xba5a('0x3d')]=_[_0xba5a('0x4e')](_0x47e4b0[_0xba5a('0x39')],_0x47e4b0['query']);_0x58c4dd[_0xba5a('0x3e')]=_[_0xba5a('0x4e')](_0x47e4b0[_0xba5a('0x39')],qs[_0xba5a('0x3f')](_0x182311[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x58c4dd[_0xba5a('0x3e')]=_0x58c4dd[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x58c4dd['attributes']:_0x47e4b0[_0xba5a('0x39')];if(_0x182311[_0xba5a('0x3b')][_0xba5a('0x50')]){_0x58c4dd['include']=[{'all':!![]}];}_0x58c4dd=_[_0xba5a('0x44')]({},_0x58c4dd,_0x182311[_0xba5a('0x46')]);return db[_0xba5a('0x34')][_0xba5a('0x51')](_0x58c4dd)['then'](handleEntityNotFound(_0x42c300,null))[_0xba5a('0x29')](respondWithResult(_0x42c300,null))[_0xba5a('0x4b')](handleError(_0x42c300,null));};exports[_0xba5a('0x52')]=function(_0x4f7271,_0x18395f){return db[_0xba5a('0x34')][_0xba5a('0x52')](_0x4f7271[_0xba5a('0x53')],{})[_0xba5a('0x29')](function(_0x2c1100){var _0x322860=_0x4f7271[_0xba5a('0x54')][_0xba5a('0x2b')]({'plain':!![]});if(!_0x322860)throw new Error(_0xba5a('0x55'));if(_0x322860['role']===_0xba5a('0x54')){var _0x14dc72=_0x2c1100[_0xba5a('0x2b')]({'plain':!![]});var _0x3423b6=_0xba5a('0x56');return db[_0xba5a('0x57')][_0xba5a('0x51')]({'where':{'name':_0x3423b6,'userProfileId':_0x322860[_0xba5a('0x58')]},'raw':!![]})[_0xba5a('0x29')](function(_0x102279){if(_0x102279&&_0x102279[_0xba5a('0x59')]===0x0){return db['UserProfileResource']['create']({'name':_0x14dc72[_0xba5a('0x31')],'resourceId':_0x14dc72['id'],'type':_0x102279[_0xba5a('0x31')],'sectionId':_0x102279['id']},{})[_0xba5a('0x29')](function(){return _0x2c1100;});}else{return _0x2c1100;}})['catch'](function(_0x5a80a0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a80a0);throw _0x5a80a0;});}return _0x2c1100;})[_0xba5a('0x29')](respondWithResult(_0x18395f,0xc9))['catch'](handleError(_0x18395f,null));};exports[_0xba5a('0x28')]=function(_0x17c739,_0xdb1095){if(_0x17c739[_0xba5a('0x53')]['id']){delete _0x17c739[_0xba5a('0x53')]['id'];}return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x17c739[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0xdb1095,null))[_0xba5a('0x29')](saveUpdates(_0x17c739['body'],null))[_0xba5a('0x29')](respondWithResult(_0xdb1095,null))[_0xba5a('0x4b')](handleError(_0xdb1095,null));};exports[_0xba5a('0x2a')]=function(_0x3faeac,_0x30e6e5){return db[_0xba5a('0x34')]['find']({'where':{'id':_0x3faeac[_0xba5a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x30e6e5,null))[_0xba5a('0x29')](removeEntity(_0x30e6e5,null))[_0xba5a('0x4b')](handleError(_0x30e6e5,null));};exports[_0xba5a('0x5a')]=function(_0x11bc8f,_0x27f2b4){return db[_0xba5a('0x34')][_0xba5a('0x5a')]()['then'](respondWithResult(_0x27f2b4,null))['catch'](handleError(_0x27f2b4,null));};exports['getMembers']=function(_0x5b746c,_0x3ee548,_0x4e3291){var _0x27767d={'raw':!![],'where':{}},_0x349783={},_0x165d61;return db[_0xba5a('0x34')][_0xba5a('0x5b')]({'where':{'id':_0x5b746c[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0x3ee548,null))[_0xba5a('0x29')](function(_0x1505c4){if(_0x1505c4){_0x165d61=_0x1505c4[_0xba5a('0x2b')]({'plain':!![]});_0x349783[_0xba5a('0x39')]=_[_0xba5a('0x3c')](db['UserWhatsappQueue'][_0xba5a('0x35')]);_0x349783[_0xba5a('0x3b')]=_[_0xba5a('0x3c')](_0x5b746c[_0xba5a('0x3b')]);_0x349783[_0xba5a('0x3d')]=_['intersection'](_0x349783['model'],_0x349783[_0xba5a('0x3b')]);_0x27767d[_0xba5a('0x3e')]=_[_0xba5a('0x4e')](_0x349783[_0xba5a('0x39')],qs[_0xba5a('0x3f')](_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x27767d[_0xba5a('0x3e')]=_0x27767d[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x27767d[_0xba5a('0x3e')]:_0x349783['model'];if(!_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x5c')]('nolimit')){_0x27767d[_0xba5a('0x21')]=qs[_0xba5a('0x21')](_0x5b746c[_0xba5a('0x3b')]['limit']);_0x27767d[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x1f')]);}_0x27767d[_0xba5a('0x41')]=qs['sort'](_0x5b746c['query']['sort']);_0x27767d[_0xba5a('0x47')]=qs['filters'](_['pick'](_0x5b746c[_0xba5a('0x3b')],_0x349783[_0xba5a('0x3d')]));_0x27767d[_0xba5a('0x47')][_0xba5a('0x5d')]=_0x1505c4['id'];if(_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x43')]){_0x27767d[_0xba5a('0x47')]=_['merge'](_0x27767d[_0xba5a('0x47')],{'$or':_[_0xba5a('0x3a')](_0x27767d[_0xba5a('0x3e')],function(_0x13361f){var _0x5d7e81={};_0x5d7e81[_0x13361f]={'$like':'%'+_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x43')]+'%'};return _0x5d7e81;})});}_0x27767d=_['merge']({},_0x27767d,_0x5b746c['options']);return db['UserWhatsappQueue']['findAll'](_0x27767d);}})[_0xba5a('0x29')](function(_0x179f94){if(_0x179f94){return db[_0xba5a('0x5e')][_0xba5a('0x5f')]({'where':{'id':_[_0xba5a('0x3a')](_0x179f94,_0xba5a('0x60')),'role':_0xba5a('0x61')},'attributes':['id','name','whatsappPause',_0xba5a('0x62'),'createdAt']});}})[_0xba5a('0x29')](function(_0x1a39b8){if(_0x1a39b8){return{'count':_0x1a39b8['count'],'rows':_['map'](_0x1a39b8[_0xba5a('0x4a')],function(_0x135565){return{'membername':_0x135565[_0xba5a('0x31')],'UserId':_0x135565['id'],'queue_name':_0x165d61[_0xba5a('0x31')],'WhatsappQueueId':_0x165d61['id'],'interface':util[_0xba5a('0x63')](_0xba5a('0x64'),_0xba5a('0x65'),_0x135565[_0xba5a('0x31')]),'penalty':0x0,'paused':_0x135565[_0xba5a('0x66')],'createdAt':_0x135565[_0xba5a('0x67')],'updatedAt':_0x135565[_0xba5a('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xba5a('0x29')](respondWithFilteredResult(_0x3ee548,_0x27767d))[_0xba5a('0x4b')](handleError(_0x3ee548,null));};exports['getTeams']=function(_0x72bb40,_0xb375d1,_0x50405a){var _0x23d79a={};var _0x25b379={};var _0x417313;var _0x564295;return db['WhatsappQueue'][_0xba5a('0x5b')]({'where':{'id':_0x72bb40['params']['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0xb375d1,null))['then'](function(_0x43e645){if(_0x43e645){_0x417313=_0x43e645;_0x25b379[_0xba5a('0x39')]=_[_0xba5a('0x3c')](db['Team'][_0xba5a('0x35')]);_0x25b379['query']=_[_0xba5a('0x3c')](_0x72bb40[_0xba5a('0x3b')]);_0x25b379[_0xba5a('0x3d')]=_['intersection'](_0x25b379[_0xba5a('0x39')],_0x25b379['query']);_0x23d79a['attributes']=_[_0xba5a('0x4e')](_0x25b379['model'],qs[_0xba5a('0x3f')](_0x72bb40['query']['fields']));_0x23d79a[_0xba5a('0x3e')]=_0x23d79a[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x23d79a[_0xba5a('0x3e')]:_0x25b379[_0xba5a('0x39')];_0x23d79a[_0xba5a('0x41')]=qs[_0xba5a('0x42')](_0x72bb40[_0xba5a('0x3b')][_0xba5a('0x42')]);_0x23d79a[_0xba5a('0x47')]=qs[_0xba5a('0x3d')](_[_0xba5a('0x68')](_0x72bb40[_0xba5a('0x3b')],_0x25b379['filters']));if(_0x72bb40[_0xba5a('0x3b')]['filter']){_0x23d79a[_0xba5a('0x47')]=_[_0xba5a('0x44')](_0x23d79a[_0xba5a('0x47')],{'$or':_[_0xba5a('0x3a')](_0x23d79a[_0xba5a('0x3e')],function(_0x38e27b){var _0x37bf7d={};_0x37bf7d[_0x38e27b]={'$like':'%'+_0x72bb40['query'][_0xba5a('0x43')]+'%'};return _0x37bf7d;})});}_0x23d79a=_[_0xba5a('0x44')]({},_0x23d79a,_0x72bb40[_0xba5a('0x46')]);return _0x417313[_0xba5a('0x69')](_0x23d79a);}})[_0xba5a('0x29')](function(_0x384600){if(_0x384600){_0x564295=_0x384600['length'];if(!_0x72bb40[_0xba5a('0x3b')][_0xba5a('0x5c')](_0xba5a('0x40'))){_0x23d79a[_0xba5a('0x21')]=qs['limit'](_0x72bb40[_0xba5a('0x3b')]['limit']);_0x23d79a[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x72bb40[_0xba5a('0x3b')]['offset']);}return _0x417313[_0xba5a('0x69')](_0x23d79a);}})[_0xba5a('0x29')](function(_0x224f5c){if(_0x224f5c){return _0x224f5c?{'count':_0x564295,'rows':_0x224f5c}:null;}})[_0xba5a('0x29')](respondWithResult(_0xb375d1,null))[_0xba5a('0x4b')](handleError(_0xb375d1,null));};exports[_0xba5a('0x6a')]=function(_0x4bf176,_0x574add,_0xf11de1){var _0x500fcc=_0x4bf176[_0xba5a('0x53')][_0xba5a('0x6b')];return db[_0xba5a('0x6c')][_0xba5a('0x49')]({'where':{'id':_0x500fcc},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0xba5a('0x6d'),_0xba5a('0x6e'),_0xba5a('0x6f')],'raw':!![]}]})['then'](function(_0x5d274b){if(_0x5d274b){var _0xf26fed=_[_0xba5a('0x70')](_0x5d274b,function(_0x27de58){var _0x2cdb18=_0x27de58['get']({'plain':!![]});return _0x2cdb18[_0xba5a('0x71')];});return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x4bf176[_0xba5a('0x4d')]['id']}})['then'](function(_0x5e1462){return db[_0xba5a('0x72')][_0xba5a('0x73')](function(_0x216bae){return _0x5e1462[_0xba5a('0x6a')](_0x500fcc,{'transaction':_0x216bae})[_0xba5a('0x29')](function(){return BPromise[_0xba5a('0x74')](_0xf26fed,function(_0x2be987){return db['UserWhatsappQueue'][_0xba5a('0x75')]({'where':{'UserId':_0x2be987['id'],'WhatsappQueueId':_0x4bf176[_0xba5a('0x4d')]['id']},'transaction':_0x216bae});});})[_0xba5a('0x29')](function(){_0xf26fed[_0xba5a('0x76')](function(_0x1f0e47){socket[_0xba5a('0x77')](_0xba5a('0x78'),{'UserId':_0x1f0e47['id'],'WhatsappQueueId':_0x5e1462['id']});});});});});}})[_0xba5a('0x29')](respondWithStatusCode(_0x574add,null))[_0xba5a('0x4b')](handleError(_0x574add,null));};exports[_0xba5a('0x79')]=function(_0xf71626,_0x582fef,_0xb1f362){return db[_0xba5a('0x6c')][_0xba5a('0x49')]({'where':{'id':_0xf71626[_0xba5a('0x3b')][_0xba5a('0x6b')]},'attributes':['id'],'include':[{'model':db[_0xba5a('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x582fef,null))[_0xba5a('0x29')](function(_0x28fb02){var _0x8bbbd2=_[_0xba5a('0x3a')](_0x28fb02,'id');var _0x2f406a=[];var _0x27f51a=[];var _0x2432a7=squel['select']();_0x2432a7[_0xba5a('0x7a')]('tq.TeamId')['from']('team_has_whatsapp_queues','tq')[_0xba5a('0x7b')](_0xba5a('0x7c'),'ut',_0xba5a('0x7d'))[_0xba5a('0x47')](_0xba5a('0x7e'),_0xf71626['params']['id']);for(var _0x3dc61b=0x0;_0x3dc61b<_0x28fb02[_0xba5a('0x4f')];_0x3dc61b+=0x1){let _0x55adad=_0x28fb02[_0x3dc61b];for(var _0x566d21=0x0;_0x566d21<_0x55adad[_0xba5a('0x71')]['length'];_0x566d21+=0x1){let _0x574a88=_0x55adad[_0xba5a('0x71')][_0x566d21];var _0x430194=_0x2432a7[_0xba5a('0x7f')]();_0x430194['where']('ut.UserId\x20=\x20?',_0x574a88['id']);_0x27f51a[_0xba5a('0x80')](db[_0xba5a('0x72')]['query'](_0x430194['toString'](),{'type':db[_0xba5a('0x72')]['QueryTypes'][_0xba5a('0x81')]})['then'](function(_0x47b291){if(_0x47b291[_0xba5a('0x4f')]===0x1){return _0x574a88['id'];}else{var _0x2ca4ab=_[_0xba5a('0x82')](_[_0xba5a('0x3a')](_0x47b291,'TeamId'),function(_0xf60c5a){return _[_0xba5a('0x83')](_0x8bbbd2,_0xf60c5a);});if(_0x2ca4ab){return _0x574a88['id'];}}}));}}return BPromise[_0xba5a('0x84')](_0x27f51a)[_0xba5a('0x29')](function(_0x37243a){_0x2f406a=_(_0x2f406a)['union'](_0x37243a)[_0xba5a('0x85')]()[_0xba5a('0x86')]();return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0xf71626[_0xba5a('0x4d')]['id']}})['then'](function(_0x4e266d){return db['sequelize'][_0xba5a('0x73')](function(_0x11313d){return _0x4e266d[_0xba5a('0x79')](_0xf71626[_0xba5a('0x3b')][_0xba5a('0x6b')],{'transaction':_0x11313d})['then'](function(){if(!_['isEmpty'](_0x2f406a)){return _0x4e266d[_0xba5a('0x87')](_0x2f406a,{'transaction':_0x11313d});}})[_0xba5a('0x29')](function(){_0x2f406a[_0xba5a('0x76')](function(_0x4bcaa9){socket[_0xba5a('0x77')]('userWhatsappQueue:remove',{'UserId':_0x4bcaa9,'WhatsappQueueId':_0x4e266d['id']});});});});});});})[_0xba5a('0x29')](respondWithStatusCode(_0x582fef,null))[_0xba5a('0x4b')](handleError(_0x582fef,null));};exports['addAgents']=function(_0x34abfc,_0x31693e,_0x31896d){return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x34abfc[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0x31693e,null))[_0xba5a('0x29')](function(_0x1b5483){if(_0x1b5483){return _0x1b5483[_0xba5a('0x88')](_0x34abfc['body']['ids'],_[_0xba5a('0x89')](_0x34abfc[_0xba5a('0x53')],['ids','id'])||{})[_0xba5a('0x8a')](function(_0x1279bd){for(var _0x164e56=0x0;_0x164e56<_0x34abfc[_0xba5a('0x53')][_0xba5a('0x6b')][_0xba5a('0x4f')];_0x164e56+=0x1){socket['emit'](_0xba5a('0x78'),{'UserId':Number(_0x34abfc['body'][_0xba5a('0x6b')][_0x164e56]),'WhatsappQueueId':Number(_0x34abfc[_0xba5a('0x4d')]['id'])});}return _0x1279bd;});}})[_0xba5a('0x29')](respondWithResult(_0x31693e,null))['catch'](handleError(_0x31693e,null));};exports[_0xba5a('0x87')]=function(_0x5d403d,_0x5a1cee,_0x42f8f7){return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x5d403d[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0x5a1cee,null))['then'](function(_0x4109b0){if(_0x4109b0){return _0x4109b0[_0xba5a('0x87')](_0x5d403d['query'][_0xba5a('0x6b')])[_0xba5a('0x29')](function(){if(_[_0xba5a('0x8b')](_0x5d403d['query']['ids'])){for(var _0x2192c2=0x0;_0x2192c2<_0x5d403d[_0xba5a('0x3b')][_0xba5a('0x6b')][_0xba5a('0x4f')];_0x2192c2+=0x1){socket[_0xba5a('0x77')](_0xba5a('0x8c'),{'UserId':Number(_0x5d403d[_0xba5a('0x3b')][_0xba5a('0x6b')][_0x2192c2]),'WhatsappQueueId':Number(_0x5d403d[_0xba5a('0x4d')]['id'])});}}else{socket['emit'](_0xba5a('0x8c'),{'UserId':Number(_0x5d403d[_0xba5a('0x3b')][_0xba5a('0x6b')]),'WhatsappQueueId':Number(_0x5d403d[_0xba5a('0x4d')]['id'])});}});}})[_0xba5a('0x29')](respondWithStatusCode(_0x5a1cee,null))[_0xba5a('0x4b')](handleError(_0x5a1cee,null));};exports[_0xba5a('0x8d')]=function(_0x4963d2,_0x577300,_0x222cc8){var _0x220497={};var _0x90abb1={};var _0x53032c;var _0x566467;return db[_0xba5a('0x34')][_0xba5a('0x5b')]({'where':{'id':_0x4963d2[_0xba5a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x577300,null))['then'](function(_0x513dbf){if(_0x513dbf){_0x53032c=_0x513dbf;_0x90abb1[_0xba5a('0x39')]=_[_0xba5a('0x3c')](db[_0xba5a('0x5e')][_0xba5a('0x35')]);_0x90abb1[_0xba5a('0x3b')]=_['keys'](_0x4963d2[_0xba5a('0x3b')]);_0x90abb1[_0xba5a('0x3d')]=_[_0xba5a('0x4e')](_0x90abb1[_0xba5a('0x39')],_0x90abb1[_0xba5a('0x3b')]);_0x220497['attributes']=_[_0xba5a('0x4e')](_0x90abb1[_0xba5a('0x39')],qs[_0xba5a('0x3f')](_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x220497[_0xba5a('0x3e')]=_0x220497[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x220497[_0xba5a('0x3e')]:_0x90abb1[_0xba5a('0x39')];_0x220497['order']=qs['sort'](_0x4963d2['query'][_0xba5a('0x42')]);_0x220497[_0xba5a('0x47')]=qs[_0xba5a('0x3d')](_['pick'](_0x4963d2[_0xba5a('0x3b')],_0x90abb1[_0xba5a('0x3d')]));if(_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x43')]){_0x220497[_0xba5a('0x47')]=_[_0xba5a('0x44')](_0x220497[_0xba5a('0x47')],{'$or':_[_0xba5a('0x3a')](_0x220497[_0xba5a('0x3e')],function(_0x112560){var _0x49e207={};_0x49e207[_0x112560]={'$like':'%'+_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x43')]+'%'};return _0x49e207;})});}_0x220497=_[_0xba5a('0x44')]({},_0x220497,_0x4963d2[_0xba5a('0x46')]);return _0x53032c['getAgents'](_0x220497);}})[_0xba5a('0x29')](function(_0x547c2d){if(_0x547c2d){_0x566467=_0x547c2d[_0xba5a('0x4f')];if(!_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x5c')]('nolimit')){_0x220497[_0xba5a('0x21')]=qs['limit'](_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x21')]);_0x220497[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x1f')]);}return _0x53032c[_0xba5a('0x8d')](_0x220497);}})[_0xba5a('0x29')](function(_0x17c49e){if(_0x17c49e){return _0x17c49e?{'count':_0x566467,'rows':_0x17c49e}:null;}})['then'](respondWithResult(_0x577300,null))[_0xba5a('0x4b')](handleError(_0x577300,null));};
\ No newline at end of file
+var _0x37ef=['describe','UserWhatsappQueue','nolimit','WhatsappQueueId','findAndCountAll','agent','whatsappPause','updatedAt','createdAt','format','findOne','getTeams','addTeams','ids','Team','User','Agents','online','flatMap','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','every','includes','compact','removeAgents','userWhatsappQueue:remove','addAgents','omit','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','status','offset','undefined','count','set','json','apply','reject','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','fields','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappQueues','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x20340a,_0x589c1f){var _0x3ff8c1=function(_0x3fa9cd){while(--_0x3fa9cd){_0x20340a['push'](_0x20340a['shift']());}};_0x3ff8c1(++_0x589c1f);}(_0x37ef,0x13c));var _0xf37e=function(_0x2e0763,_0x37e6e4){_0x2e0763=_0x2e0763-0x0;var _0x189643=_0x37ef[_0x2e0763];return _0x189643;};'use strict';var emlformat=require(_0xf37e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf37e('0x1'));var jsonpatch=require(_0xf37e('0x2'));var rp=require(_0xf37e('0x3'));var moment=require(_0xf37e('0x4'));var BPromise=require(_0xf37e('0x5'));var Mustache=require('mustache');var util=require(_0xf37e('0x6'));var path=require(_0xf37e('0x7'));var sox=require('sox');var csv=require(_0xf37e('0x8'));var ejs=require(_0xf37e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf37e('0xa'));var squel=require(_0xf37e('0xb'));var crypto=require(_0xf37e('0xc'));var jsforce=require(_0xf37e('0xd'));var deskjs=require(_0xf37e('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf37e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf37e('0x10'));var authService=require(_0xf37e('0x11'));var qs=require(_0xf37e('0x12'));var as=require(_0xf37e('0x13'));var hardwareService=require(_0xf37e('0x14'));var logger=require(_0xf37e('0x15'))(_0xf37e('0x16'));var utils=require(_0xf37e('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf37e('0x18'));var db=require(_0xf37e('0x19'))['db'];config[_0xf37e('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf37e('0x1b'))(new Redis(config[_0xf37e('0x1a')]));require('./whatsappQueue.socket')[_0xf37e('0x1c')](socket);function respondWithStatusCode(_0x5d003a,_0x18047f){_0x18047f=_0x18047f||0xcc;return function(_0x910a2a){if(_0x910a2a){return _0x5d003a[_0xf37e('0x1d')](_0x18047f);}return _0x5d003a['status'](_0x18047f)['end']();};}function respondWithResult(_0x25e11c,_0x424bb5){_0x424bb5=_0x424bb5||0xc8;return function(_0x14cfae){if(_0x14cfae){return _0x25e11c[_0xf37e('0x1e')](_0x424bb5)['json'](_0x14cfae);}};}function respondWithFilteredResult(_0x26ceae,_0xaf0e6){return function(_0x59ed52){if(_0x59ed52){var _0x38ebfd=typeof _0xaf0e6[_0xf37e('0x1f')]===_0xf37e('0x20')&&typeof _0xaf0e6['limit']===_0xf37e('0x20');var _0x10b467=_0x59ed52[_0xf37e('0x21')];var _0x23e6e9=_0x38ebfd?0x0:_0xaf0e6[_0xf37e('0x1f')];var _0xba57ed=_0x38ebfd?_0x59ed52[_0xf37e('0x21')]:_0xaf0e6[_0xf37e('0x1f')]+_0xaf0e6['limit'];var _0x24bca2;if(_0xba57ed>=_0x10b467){_0xba57ed=_0x10b467;_0x24bca2=0xc8;}else{_0x24bca2=0xce;}_0x26ceae[_0xf37e('0x1e')](_0x24bca2);return _0x26ceae[_0xf37e('0x22')]('Content-Range',_0x23e6e9+'-'+_0xba57ed+'/'+_0x10b467)[_0xf37e('0x23')](_0x59ed52);}return null;};}function patchUpdates(_0x59da18){return function(_0x2e592e){try{jsonpatch[_0xf37e('0x24')](_0x2e592e,_0x59da18,!![]);}catch(_0x30a8c8){return BPromise[_0xf37e('0x25')](_0x30a8c8);}return _0x2e592e['save']();};}function saveUpdates(_0xf0a58a,_0x22d3cd){return function(_0x353dd0){if(_0x353dd0){return _0x353dd0[_0xf37e('0x26')](_0xf0a58a)[_0xf37e('0x27')](function(_0x5ba376){return _0x5ba376;});}return null;};}function removeEntity(_0x1c4011,_0x17b3e4){return function(_0x46bef3){if(_0x46bef3){return _0x46bef3[_0xf37e('0x28')]()[_0xf37e('0x27')](function(){var _0x43a305=_0x46bef3[_0xf37e('0x29')]({'plain':!![]});var _0x2bbd22='WhatsappQueues';return db[_0xf37e('0x2a')]['destroy']({'where':{'type':_0x2bbd22,'resourceId':_0x43a305['id']}})[_0xf37e('0x27')](function(){return _0x46bef3;});})[_0xf37e('0x27')](function(){_0x1c4011['status'](0xcc)[_0xf37e('0x2b')]();});}};}function handleEntityNotFound(_0x29e404,_0x5ce2d8){return function(_0x2f80cb){if(!_0x2f80cb){_0x29e404[_0xf37e('0x1d')](0x194);}return _0x2f80cb;};}function handleError(_0x5c3862,_0x5e6dcb){_0x5e6dcb=_0x5e6dcb||0x1f4;return function(_0x36d7b6){logger[_0xf37e('0x2c')](_0x36d7b6[_0xf37e('0x2d')]);if(_0x36d7b6['name']){delete _0x36d7b6[_0xf37e('0x2e')];}_0x5c3862[_0xf37e('0x1e')](_0x5e6dcb)[_0xf37e('0x2f')](_0x36d7b6);};}exports[_0xf37e('0x30')]=function(_0x131792,_0x5e7849){var _0x50df28={},_0x5cb02c={},_0x5264b0={'count':0x0,'rows':[]};var _0x45d230=_['map'](db[_0xf37e('0x31')][_0xf37e('0x32')],function(_0x39fcf0){return{'name':_0x39fcf0[_0xf37e('0x33')],'type':_0x39fcf0[_0xf37e('0x34')]['key']};});_0x5cb02c[_0xf37e('0x35')]=_[_0xf37e('0x36')](_0x45d230,_0xf37e('0x2e'));_0x5cb02c[_0xf37e('0x37')]=_[_0xf37e('0x38')](_0x131792['query']);_0x5cb02c[_0xf37e('0x39')]=_[_0xf37e('0x3a')](_0x5cb02c[_0xf37e('0x35')],_0x5cb02c[_0xf37e('0x37')]);_0x50df28[_0xf37e('0x3b')]=_[_0xf37e('0x3a')](_0x5cb02c[_0xf37e('0x35')],qs['fields'](_0x131792[_0xf37e('0x37')]['fields']));_0x50df28[_0xf37e('0x3b')]=_0x50df28[_0xf37e('0x3b')][_0xf37e('0x3c')]?_0x50df28['attributes']:_0x5cb02c['model'];if(!_0x131792[_0xf37e('0x37')][_0xf37e('0x3d')]('nolimit')){_0x50df28[_0xf37e('0x3e')]=qs[_0xf37e('0x3e')](_0x131792['query']['limit']);_0x50df28['offset']=qs[_0xf37e('0x1f')](_0x131792[_0xf37e('0x37')][_0xf37e('0x1f')]);}_0x50df28[_0xf37e('0x3f')]=qs[_0xf37e('0x40')](_0x131792[_0xf37e('0x37')][_0xf37e('0x40')]);_0x50df28[_0xf37e('0x41')]=qs[_0xf37e('0x39')](_[_0xf37e('0x42')](_0x131792['query'],_0x5cb02c['filters']),_0x45d230);if(_0x131792[_0xf37e('0x37')]['filter']){_0x50df28[_0xf37e('0x41')]=_[_0xf37e('0x43')](_0x50df28['where'],{'$or':_[_0xf37e('0x36')](_0x45d230,function(_0x31670f){if(_0x31670f[_0xf37e('0x34')]!==_0xf37e('0x44')){var _0x4b2107={};_0x4b2107[_0x31670f['name']]={'$like':'%'+_0x131792[_0xf37e('0x37')][_0xf37e('0x45')]+'%'};return _0x4b2107;}})});}_0x50df28=_[_0xf37e('0x43')]({},_0x50df28,_0x131792[_0xf37e('0x46')]);var _0x56f71d={'where':_0x50df28[_0xf37e('0x41')]};return db[_0xf37e('0x31')]['count'](_0x56f71d)[_0xf37e('0x27')](function(_0x2472f1){_0x5264b0[_0xf37e('0x21')]=_0x2472f1;if(_0x131792[_0xf37e('0x37')][_0xf37e('0x47')]){_0x50df28['include']=[{'all':!![]}];}return db['WhatsappQueue'][_0xf37e('0x48')](_0x50df28);})['then'](function(_0x5208e8){_0x5264b0[_0xf37e('0x49')]=_0x5208e8;return _0x5264b0;})[_0xf37e('0x27')](respondWithFilteredResult(_0x5e7849,_0x50df28))[_0xf37e('0x4a')](handleError(_0x5e7849,null));};exports[_0xf37e('0x4b')]=function(_0x5b93d8,_0x3deefa){var _0x3d25f2={'raw':!![],'where':{'id':_0x5b93d8[_0xf37e('0x4c')]['id']}},_0x34d983={};_0x34d983[_0xf37e('0x35')]=_[_0xf37e('0x38')](db[_0xf37e('0x31')][_0xf37e('0x32')]);_0x34d983[_0xf37e('0x37')]=_[_0xf37e('0x38')](_0x5b93d8[_0xf37e('0x37')]);_0x34d983[_0xf37e('0x39')]=_[_0xf37e('0x3a')](_0x34d983[_0xf37e('0x35')],_0x34d983[_0xf37e('0x37')]);_0x3d25f2[_0xf37e('0x3b')]=_['intersection'](_0x34d983[_0xf37e('0x35')],qs[_0xf37e('0x4d')](_0x5b93d8[_0xf37e('0x37')][_0xf37e('0x4d')]));_0x3d25f2[_0xf37e('0x3b')]=_0x3d25f2['attributes'][_0xf37e('0x3c')]?_0x3d25f2[_0xf37e('0x3b')]:_0x34d983[_0xf37e('0x35')];if(_0x5b93d8['query'][_0xf37e('0x47')]){_0x3d25f2[_0xf37e('0x4e')]=[{'all':!![]}];}_0x3d25f2=_[_0xf37e('0x43')]({},_0x3d25f2,_0x5b93d8['options']);return db[_0xf37e('0x31')]['find'](_0x3d25f2)[_0xf37e('0x27')](handleEntityNotFound(_0x3deefa,null))['then'](respondWithResult(_0x3deefa,null))[_0xf37e('0x4a')](handleError(_0x3deefa,null));};exports[_0xf37e('0x4f')]=function(_0x96e7a6,_0x575ea6){return db[_0xf37e('0x31')][_0xf37e('0x4f')](_0x96e7a6[_0xf37e('0x50')],{})['then'](function(_0x2bcb96){var _0x264160=_0x96e7a6[_0xf37e('0x51')][_0xf37e('0x29')]({'plain':!![]});if(!_0x264160)throw new Error(_0xf37e('0x52'));if(_0x264160[_0xf37e('0x53')]===_0xf37e('0x51')){var _0x4539a6=_0x2bcb96['get']({'plain':!![]});var _0x38ae14=_0xf37e('0x54');return db['UserProfileSection'][_0xf37e('0x55')]({'where':{'name':_0x38ae14,'userProfileId':_0x264160[_0xf37e('0x56')]},'raw':!![]})[_0xf37e('0x27')](function(_0x55063a){if(_0x55063a&&_0x55063a[_0xf37e('0x57')]===0x0){return db['UserProfileResource'][_0xf37e('0x4f')]({'name':_0x4539a6[_0xf37e('0x2e')],'resourceId':_0x4539a6['id'],'type':_0x55063a[_0xf37e('0x2e')],'sectionId':_0x55063a['id']},{})['then'](function(){return _0x2bcb96;});}else{return _0x2bcb96;}})['catch'](function(_0x569aed){logger['error'](_0xf37e('0x58'),_0x569aed);throw _0x569aed;});}return _0x2bcb96;})[_0xf37e('0x27')](respondWithResult(_0x575ea6,0xc9))[_0xf37e('0x4a')](handleError(_0x575ea6,null));};exports[_0xf37e('0x26')]=function(_0xba3e37,_0x3e908d){if(_0xba3e37[_0xf37e('0x50')]['id']){delete _0xba3e37[_0xf37e('0x50')]['id'];}return db['WhatsappQueue'][_0xf37e('0x55')]({'where':{'id':_0xba3e37[_0xf37e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3e908d,null))[_0xf37e('0x27')](saveUpdates(_0xba3e37[_0xf37e('0x50')],null))[_0xf37e('0x27')](respondWithResult(_0x3e908d,null))['catch'](handleError(_0x3e908d,null));};exports[_0xf37e('0x28')]=function(_0x211886,_0x5320a0){return db[_0xf37e('0x31')][_0xf37e('0x55')]({'where':{'id':_0x211886[_0xf37e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5320a0,null))['then'](removeEntity(_0x5320a0,null))[_0xf37e('0x4a')](handleError(_0x5320a0,null));};exports['describe']=function(_0x418029,_0x5e4eb2){return db['WhatsappQueue'][_0xf37e('0x59')]()[_0xf37e('0x27')](respondWithResult(_0x5e4eb2,null))[_0xf37e('0x4a')](handleError(_0x5e4eb2,null));};exports['getMembers']=function(_0x409913,_0x5e6833,_0x401e8c){var _0xa229bd={'raw':!![],'where':{}},_0x18b370={},_0x245891;return db[_0xf37e('0x31')]['findOne']({'where':{'id':_0x409913[_0xf37e('0x4c')]['id']}})[_0xf37e('0x27')](handleEntityNotFound(_0x5e6833,null))['then'](function(_0xa96ea9){if(_0xa96ea9){_0x245891=_0xa96ea9[_0xf37e('0x29')]({'plain':!![]});_0x18b370[_0xf37e('0x35')]=_[_0xf37e('0x38')](db[_0xf37e('0x5a')][_0xf37e('0x32')]);_0x18b370[_0xf37e('0x37')]=_[_0xf37e('0x38')](_0x409913[_0xf37e('0x37')]);_0x18b370[_0xf37e('0x39')]=_[_0xf37e('0x3a')](_0x18b370[_0xf37e('0x35')],_0x18b370['query']);_0xa229bd[_0xf37e('0x3b')]=_[_0xf37e('0x3a')](_0x18b370[_0xf37e('0x35')],qs[_0xf37e('0x4d')](_0x409913[_0xf37e('0x37')][_0xf37e('0x4d')]));_0xa229bd[_0xf37e('0x3b')]=_0xa229bd['attributes'][_0xf37e('0x3c')]?_0xa229bd[_0xf37e('0x3b')]:_0x18b370['model'];if(!_0x409913['query'][_0xf37e('0x3d')](_0xf37e('0x5b'))){_0xa229bd[_0xf37e('0x3e')]=qs[_0xf37e('0x3e')](_0x409913[_0xf37e('0x37')][_0xf37e('0x3e')]);_0xa229bd[_0xf37e('0x1f')]=qs[_0xf37e('0x1f')](_0x409913['query'][_0xf37e('0x1f')]);}_0xa229bd[_0xf37e('0x3f')]=qs[_0xf37e('0x40')](_0x409913['query'][_0xf37e('0x40')]);_0xa229bd[_0xf37e('0x41')]=qs[_0xf37e('0x39')](_[_0xf37e('0x42')](_0x409913[_0xf37e('0x37')],_0x18b370[_0xf37e('0x39')]));_0xa229bd[_0xf37e('0x41')][_0xf37e('0x5c')]=_0xa96ea9['id'];if(_0x409913[_0xf37e('0x37')][_0xf37e('0x45')]){_0xa229bd['where']=_['merge'](_0xa229bd[_0xf37e('0x41')],{'$or':_['map'](_0xa229bd[_0xf37e('0x3b')],function(_0x3683d7){var _0x32bf23={};_0x32bf23[_0x3683d7]={'$like':'%'+_0x409913[_0xf37e('0x37')][_0xf37e('0x45')]+'%'};return _0x32bf23;})});}_0xa229bd=_['merge']({},_0xa229bd,_0x409913['options']);return db[_0xf37e('0x5a')][_0xf37e('0x48')](_0xa229bd);}})['then'](function(_0xda406c){if(_0xda406c){return db['User'][_0xf37e('0x5d')]({'where':{'id':_[_0xf37e('0x36')](_0xda406c,'UserId'),'role':_0xf37e('0x5e')},'attributes':['id','name',_0xf37e('0x5f'),_0xf37e('0x60'),_0xf37e('0x61')]});}})[_0xf37e('0x27')](function(_0x2f0b81){if(_0x2f0b81){return{'count':_0x2f0b81['count'],'rows':_[_0xf37e('0x36')](_0x2f0b81[_0xf37e('0x49')],function(_0x1e3637){return{'membername':_0x1e3637['name'],'UserId':_0x1e3637['id'],'queue_name':_0x245891[_0xf37e('0x2e')],'WhatsappQueueId':_0x245891['id'],'interface':util[_0xf37e('0x62')]('%s/%s','SIP',_0x1e3637[_0xf37e('0x2e')]),'penalty':0x0,'paused':_0x1e3637['whatsappPause'],'createdAt':_0x1e3637[_0xf37e('0x61')],'updatedAt':_0x1e3637['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xf37e('0x27')](respondWithFilteredResult(_0x5e6833,_0xa229bd))['catch'](handleError(_0x5e6833,null));};exports['getTeams']=function(_0x165dfd,_0xaa6699,_0x4af532){var _0x8fe4a4={};var _0x9ba397={};var _0x3a84b1;var _0x2cc8aa;return db['WhatsappQueue'][_0xf37e('0x63')]({'where':{'id':_0x165dfd[_0xf37e('0x4c')]['id']}})[_0xf37e('0x27')](handleEntityNotFound(_0xaa6699,null))[_0xf37e('0x27')](function(_0x27af8b){if(_0x27af8b){_0x3a84b1=_0x27af8b;_0x9ba397['model']=_[_0xf37e('0x38')](db['Team'][_0xf37e('0x32')]);_0x9ba397[_0xf37e('0x37')]=_[_0xf37e('0x38')](_0x165dfd[_0xf37e('0x37')]);_0x9ba397[_0xf37e('0x39')]=_[_0xf37e('0x3a')](_0x9ba397[_0xf37e('0x35')],_0x9ba397[_0xf37e('0x37')]);_0x8fe4a4[_0xf37e('0x3b')]=_['intersection'](_0x9ba397[_0xf37e('0x35')],qs[_0xf37e('0x4d')](_0x165dfd[_0xf37e('0x37')][_0xf37e('0x4d')]));_0x8fe4a4['attributes']=_0x8fe4a4['attributes'][_0xf37e('0x3c')]?_0x8fe4a4[_0xf37e('0x3b')]:_0x9ba397['model'];_0x8fe4a4[_0xf37e('0x3f')]=qs[_0xf37e('0x40')](_0x165dfd[_0xf37e('0x37')][_0xf37e('0x40')]);_0x8fe4a4[_0xf37e('0x41')]=qs[_0xf37e('0x39')](_[_0xf37e('0x42')](_0x165dfd[_0xf37e('0x37')],_0x9ba397[_0xf37e('0x39')]));if(_0x165dfd[_0xf37e('0x37')][_0xf37e('0x45')]){_0x8fe4a4[_0xf37e('0x41')]=_['merge'](_0x8fe4a4[_0xf37e('0x41')],{'$or':_[_0xf37e('0x36')](_0x8fe4a4[_0xf37e('0x3b')],function(_0x575ef3){var _0xbbb6b8={};_0xbbb6b8[_0x575ef3]={'$like':'%'+_0x165dfd[_0xf37e('0x37')]['filter']+'%'};return _0xbbb6b8;})});}_0x8fe4a4=_[_0xf37e('0x43')]({},_0x8fe4a4,_0x165dfd[_0xf37e('0x46')]);return _0x3a84b1[_0xf37e('0x64')](_0x8fe4a4);}})[_0xf37e('0x27')](function(_0x668ea){if(_0x668ea){_0x2cc8aa=_0x668ea[_0xf37e('0x3c')];if(!_0x165dfd[_0xf37e('0x37')][_0xf37e('0x3d')](_0xf37e('0x5b'))){_0x8fe4a4[_0xf37e('0x3e')]=qs['limit'](_0x165dfd['query']['limit']);_0x8fe4a4[_0xf37e('0x1f')]=qs[_0xf37e('0x1f')](_0x165dfd['query'][_0xf37e('0x1f')]);}return _0x3a84b1['getTeams'](_0x8fe4a4);}})[_0xf37e('0x27')](function(_0x5802b2){if(_0x5802b2){return _0x5802b2?{'count':_0x2cc8aa,'rows':_0x5802b2}:null;}})['then'](respondWithResult(_0xaa6699,null))[_0xf37e('0x4a')](handleError(_0xaa6699,null));};exports[_0xf37e('0x65')]=function(_0x449a74,_0x524ada,_0x126bec){var _0x36ca49=_0x449a74['body'][_0xf37e('0x66')];return db[_0xf37e('0x67')][_0xf37e('0x48')]({'where':{'id':_0x36ca49},'attributes':['id'],'include':[{'model':db[_0xf37e('0x68')],'as':_0xf37e('0x69'),'attributes':['id',_0xf37e('0x2e'),_0xf37e('0x6a'),'voicePause','interface'],'raw':!![]}]})[_0xf37e('0x27')](function(_0x5dcca6){if(_0x5dcca6){var _0x139512=_[_0xf37e('0x6b')](_0x5dcca6,function(_0x3fccc2){var _0x1156e6=_0x3fccc2[_0xf37e('0x29')]({'plain':!![]});return _0x1156e6['Agents'];});return db['WhatsappQueue']['find']({'where':{'id':_0x449a74[_0xf37e('0x4c')]['id']}})[_0xf37e('0x27')](function(_0x177edd){return db['sequelize']['transaction'](function(_0x46cb2f){return _0x177edd[_0xf37e('0x65')](_0x36ca49,{'transaction':_0x46cb2f})[_0xf37e('0x27')](function(){return BPromise[_0xf37e('0x6c')](_0x139512,function(_0x480f73){return db['UserWhatsappQueue'][_0xf37e('0x6d')]({'where':{'UserId':_0x480f73['id'],'WhatsappQueueId':_0x449a74[_0xf37e('0x4c')]['id']},'transaction':_0x46cb2f});});})[_0xf37e('0x27')](function(){_0x139512[_0xf37e('0x6e')](function(_0xff5d88){socket[_0xf37e('0x6f')](_0xf37e('0x70'),{'UserId':_0xff5d88['id'],'WhatsappQueueId':_0x177edd['id']});});});});});}})[_0xf37e('0x27')](respondWithStatusCode(_0x524ada,null))[_0xf37e('0x4a')](handleError(_0x524ada,null));};exports[_0xf37e('0x71')]=function(_0x28dc8d,_0x134a04,_0x3e4039){return db[_0xf37e('0x67')][_0xf37e('0x48')]({'where':{'id':_0x28dc8d[_0xf37e('0x37')][_0xf37e('0x66')]},'attributes':['id'],'include':[{'model':db[_0xf37e('0x68')],'as':_0xf37e('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x134a04,null))[_0xf37e('0x27')](function(_0x380d44){var _0x1faa30=_[_0xf37e('0x36')](_0x380d44,'id');var _0x36ea1e=[];var _0x50ba97=[];var _0xabd548=squel[_0xf37e('0x72')]();_0xabd548[_0xf37e('0x73')](_0xf37e('0x74'))[_0xf37e('0x75')](_0xf37e('0x76'),'tq')[_0xf37e('0x77')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xf37e('0x41')](_0xf37e('0x78'),_0x28dc8d[_0xf37e('0x4c')]['id']);for(var _0x5155ac=0x0;_0x5155ac<_0x380d44[_0xf37e('0x3c')];_0x5155ac+=0x1){let _0x2a2778=_0x380d44[_0x5155ac];for(var _0x55d00f=0x0;_0x55d00f<_0x2a2778['Agents']['length'];_0x55d00f+=0x1){let _0x587d2f=_0x2a2778[_0xf37e('0x69')][_0x55d00f];var _0x107272=_0xabd548['clone']();_0x107272['where'](_0xf37e('0x79'),_0x587d2f['id']);_0x50ba97[_0xf37e('0x7a')](db[_0xf37e('0x7b')][_0xf37e('0x37')](_0x107272[_0xf37e('0x7c')](),{'type':db['sequelize'][_0xf37e('0x7d')]['SELECT']})[_0xf37e('0x27')](function(_0xf2bcb9){if(_0xf2bcb9[_0xf37e('0x3c')]===0x1){return _0x587d2f['id'];}else{var _0x1d5ac4=_[_0xf37e('0x7e')](_[_0xf37e('0x36')](_0xf2bcb9,'TeamId'),function(_0x5be9bb){return _[_0xf37e('0x7f')](_0x1faa30,_0x5be9bb);});if(_0x1d5ac4){return _0x587d2f['id'];}}}));}}return BPromise['all'](_0x50ba97)[_0xf37e('0x27')](function(_0x1f6a48){_0x36ea1e=_(_0x36ea1e)['union'](_0x1f6a48)[_0xf37e('0x80')]()['value']();return db[_0xf37e('0x31')][_0xf37e('0x55')]({'where':{'id':_0x28dc8d['params']['id']}})[_0xf37e('0x27')](function(_0xcedbcb){return db[_0xf37e('0x7b')]['transaction'](function(_0x598218){return _0xcedbcb[_0xf37e('0x71')](_0x28dc8d['query'][_0xf37e('0x66')],{'transaction':_0x598218})[_0xf37e('0x27')](function(){if(!_['isEmpty'](_0x36ea1e)){return _0xcedbcb[_0xf37e('0x81')](_0x36ea1e,{'transaction':_0x598218});}})[_0xf37e('0x27')](function(){_0x36ea1e['forEach'](function(_0x25c0af){socket[_0xf37e('0x6f')](_0xf37e('0x82'),{'UserId':_0x25c0af,'WhatsappQueueId':_0xcedbcb['id']});});});});});});})[_0xf37e('0x27')](respondWithStatusCode(_0x134a04,null))[_0xf37e('0x4a')](handleError(_0x134a04,null));};exports[_0xf37e('0x83')]=function(_0x10016a,_0x50378c,_0x769576){return db['WhatsappQueue'][_0xf37e('0x55')]({'where':{'id':_0x10016a[_0xf37e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x50378c,null))[_0xf37e('0x27')](function(_0x45bf73){if(_0x45bf73){return _0x45bf73['addAgents'](_0x10016a[_0xf37e('0x50')]['ids'],_[_0xf37e('0x84')](_0x10016a[_0xf37e('0x50')],[_0xf37e('0x66'),'id'])||{})['spread'](function(_0x1d4a3a){for(var _0x59e598=0x0;_0x59e598<_0x10016a[_0xf37e('0x50')][_0xf37e('0x66')][_0xf37e('0x3c')];_0x59e598+=0x1){socket['emit'](_0xf37e('0x70'),{'UserId':Number(_0x10016a['body'][_0xf37e('0x66')][_0x59e598]),'WhatsappQueueId':Number(_0x10016a['params']['id'])});}return _0x1d4a3a;});}})[_0xf37e('0x27')](respondWithResult(_0x50378c,null))[_0xf37e('0x4a')](handleError(_0x50378c,null));};exports[_0xf37e('0x81')]=function(_0x3d5dcd,_0x626cb7,_0x535e4b){return db[_0xf37e('0x31')][_0xf37e('0x55')]({'where':{'id':_0x3d5dcd[_0xf37e('0x4c')]['id']}})[_0xf37e('0x27')](handleEntityNotFound(_0x626cb7,null))['then'](function(_0x21de59){if(_0x21de59){return _0x21de59[_0xf37e('0x81')](_0x3d5dcd[_0xf37e('0x37')][_0xf37e('0x66')])['then'](function(){if(_[_0xf37e('0x85')](_0x3d5dcd[_0xf37e('0x37')][_0xf37e('0x66')])){for(var _0x158e82=0x0;_0x158e82<_0x3d5dcd[_0xf37e('0x37')][_0xf37e('0x66')][_0xf37e('0x3c')];_0x158e82+=0x1){socket[_0xf37e('0x6f')](_0xf37e('0x82'),{'UserId':Number(_0x3d5dcd['query']['ids'][_0x158e82]),'WhatsappQueueId':Number(_0x3d5dcd[_0xf37e('0x4c')]['id'])});}}else{socket[_0xf37e('0x6f')]('userWhatsappQueue:remove',{'UserId':Number(_0x3d5dcd['query'][_0xf37e('0x66')]),'WhatsappQueueId':Number(_0x3d5dcd[_0xf37e('0x4c')]['id'])});}});}})[_0xf37e('0x27')](respondWithStatusCode(_0x626cb7,null))[_0xf37e('0x4a')](handleError(_0x626cb7,null));};exports['getAgents']=function(_0x24b866,_0x26f537,_0x34a736){var _0x31d58d={};var _0x520d6c={};var _0x255cf3;var _0x3c0e48;return db['WhatsappQueue'][_0xf37e('0x63')]({'where':{'id':_0x24b866[_0xf37e('0x4c')]['id']}})[_0xf37e('0x27')](handleEntityNotFound(_0x26f537,null))[_0xf37e('0x27')](function(_0x4bc163){if(_0x4bc163){_0x255cf3=_0x4bc163;_0x520d6c[_0xf37e('0x35')]=_[_0xf37e('0x38')](db['User'][_0xf37e('0x32')]);_0x520d6c[_0xf37e('0x37')]=_[_0xf37e('0x38')](_0x24b866['query']);_0x520d6c['filters']=_[_0xf37e('0x3a')](_0x520d6c[_0xf37e('0x35')],_0x520d6c[_0xf37e('0x37')]);_0x31d58d[_0xf37e('0x3b')]=_[_0xf37e('0x3a')](_0x520d6c[_0xf37e('0x35')],qs[_0xf37e('0x4d')](_0x24b866['query'][_0xf37e('0x4d')]));_0x31d58d[_0xf37e('0x3b')]=_0x31d58d[_0xf37e('0x3b')]['length']?_0x31d58d['attributes']:_0x520d6c[_0xf37e('0x35')];_0x31d58d['order']=qs[_0xf37e('0x40')](_0x24b866[_0xf37e('0x37')][_0xf37e('0x40')]);_0x31d58d[_0xf37e('0x41')]=qs[_0xf37e('0x39')](_[_0xf37e('0x42')](_0x24b866['query'],_0x520d6c[_0xf37e('0x39')]));if(_0x24b866['query'][_0xf37e('0x45')]){_0x31d58d['where']=_[_0xf37e('0x43')](_0x31d58d[_0xf37e('0x41')],{'$or':_[_0xf37e('0x36')](_0x31d58d[_0xf37e('0x3b')],function(_0x233f14){var _0x70f4d0={};_0x70f4d0[_0x233f14]={'$like':'%'+_0x24b866[_0xf37e('0x37')][_0xf37e('0x45')]+'%'};return _0x70f4d0;})});}_0x31d58d=_[_0xf37e('0x43')]({},_0x31d58d,_0x24b866['options']);return _0x255cf3[_0xf37e('0x86')](_0x31d58d);}})[_0xf37e('0x27')](function(_0x30c07f){if(_0x30c07f){_0x3c0e48=_0x30c07f['length'];if(!_0x24b866[_0xf37e('0x37')][_0xf37e('0x3d')]('nolimit')){_0x31d58d[_0xf37e('0x3e')]=qs['limit'](_0x24b866[_0xf37e('0x37')][_0xf37e('0x3e')]);_0x31d58d[_0xf37e('0x1f')]=qs[_0xf37e('0x1f')](_0x24b866[_0xf37e('0x37')]['offset']);}return _0x255cf3['getAgents'](_0x31d58d);}})['then'](function(_0x1ac0ce){if(_0x1ac0ce){return _0x1ac0ce?{'count':_0x3c0e48,'rows':_0x1ac0ce}:null;}})['then'](respondWithResult(_0x26f537,null))[_0xf37e('0x4a')](handleError(_0x26f537,null));};
\ No newline at end of file
index 2694323..779d66f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x911a=['update','emit','hook','exports','events','../../mysqldb','WhatsappQueue','save'];(function(_0x5e06e0,_0x43a2ca){var _0x356b2a=function(_0x13fea9){while(--_0x13fea9){_0x5e06e0['push'](_0x5e06e0['shift']());}};_0x356b2a(++_0x43a2ca);}(_0x911a,0x164));var _0xa911=function(_0x4ab11f,_0x4d165e){_0x4ab11f=_0x4ab11f-0x0;var _0x1f5a82=_0x911a[_0x4ab11f];return _0x1f5a82;};'use strict';var EventEmitter=require(_0xa911('0x0'));var WhatsappQueue=require(_0xa911('0x1'))['db'][_0xa911('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa911('0x3'),'afterUpdate':_0xa911('0x4'),'afterDestroy':'remove'};function emitEvent(_0x425142){return function(_0x4ba777,_0x26b8d2,_0x1540a7){WhatsappQueueEvents[_0xa911('0x5')](_0x425142+':'+_0x4ba777['id'],_0x4ba777);WhatsappQueueEvents['emit'](_0x425142,_0x4ba777);_0x1540a7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xa911('0x6')](e,emitEvent(event));}}module[_0xa911('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x1f35=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x5e0df1,_0x2e7586){var _0x293381=function(_0x5bbee8){while(--_0x5bbee8){_0x5e0df1['push'](_0x5e0df1['shift']());}};_0x293381(++_0x2e7586);}(_0x1f35,0x11c));var _0x51f3=function(_0x4480e6,_0x5df4bf){_0x4480e6=_0x4480e6-0x0;var _0xa087d9=_0x1f35[_0x4480e6];return _0xa087d9;};'use strict';var EventEmitter=require(_0x51f3('0x0'));var WhatsappQueue=require(_0x51f3('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x51f3('0x2')](0x0);var events={'afterCreate':_0x51f3('0x3'),'afterUpdate':_0x51f3('0x4'),'afterDestroy':_0x51f3('0x5')};function emitEvent(_0x3b5d91){return function(_0x19bdcb,_0x15a23f,_0x46512f){WhatsappQueueEvents[_0x51f3('0x6')](_0x3b5d91+':'+_0x19bdcb['id'],_0x19bdcb);WhatsappQueueEvents[_0x51f3('0x6')](_0x3b5d91,_0x19bdcb);_0x46512f(null);};}for(var e in events){if(events[_0x51f3('0x7')](e)){var event=events[e];WhatsappQueue[_0x51f3('0x8')](e,emitEvent(event));}}module[_0x51f3('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
index 8ad5318..1d1532e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd817=['../../config/logger','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','exports','whatsapp_queues','lodash','util'];(function(_0x3a7768,_0x52709f){var _0x423cb1=function(_0x10fa7a){while(--_0x10fa7a){_0x3a7768['push'](_0x3a7768['shift']());}};_0x423cb1(++_0x52709f);}(_0xd817,0x8a));var _0x7d81=function(_0x1bb0b8,_0x24add2){_0x1bb0b8=_0x1bb0b8-0x0;var _0x22fc67=_0xd817[_0x1bb0b8];return _0x22fc67;};'use strict';var _=require(_0x7d81('0x0'));var util=require(_0x7d81('0x1'));var logger=require(_0x7d81('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7d81('0x3'));var rp=require(_0x7d81('0x4'));var fs=require('fs');var path=require(_0x7d81('0x5'));var rimraf=require(_0x7d81('0x6'));var config=require('../../config/environment');var attributes=require(_0x7d81('0x7'));module[_0x7d81('0x8')]=function(_0x12161d,_0xc70de8){return _0x12161d['define']('WhatsappQueue',attributes,{'tableName':_0x7d81('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x94fb=['exports','define','WhatsappQueue','whatsapp_queues','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x94fb,0xcc));var _0xb94f=function(_0x2c1aa8,_0x3e0609){_0x2c1aa8=_0x2c1aa8-0x0;var _0x4019f5=_0x94fb[_0x2c1aa8];return _0x4019f5;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb94f('0x0'));var BPromise=require(_0xb94f('0x1'));var rp=require(_0xb94f('0x2'));var fs=require('fs');var path=require(_0xb94f('0x3'));var rimraf=require(_0xb94f('0x4'));var config=require(_0xb94f('0x5'));var attributes=require('./whatsappQueue.attributes');module[_0xb94f('0x6')]=function(_0x1efa42,_0x4ce97b){return _0x1efa42[_0xb94f('0x7')](_0xb94f('0x8'),attributes,{'tableName':_0xb94f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b1b7362..e2ad126 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf899=['GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowWhatsappQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','register','then','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x1c99c1,_0x37b7ae){var _0x1cf1f2=function(_0x430fcc){while(--_0x430fcc){_0x1c99c1['push'](_0x1c99c1['shift']());}};_0x1cf1f2(++_0x37b7ae);}(_0xf899,0x14d));var _0x9f89=function(_0x2fd9c8,_0x4afe3b){_0x2fd9c8=_0x2fd9c8-0x0;var _0xe59e37=_0xf899[_0x2fd9c8];return _0xe59e37;};'use strict';var _=require(_0x9f89('0x0'));var util=require(_0x9f89('0x1'));var moment=require(_0x9f89('0x2'));var BPromise=require(_0x9f89('0x3'));var rs=require(_0x9f89('0x4'));var fs=require('fs');var Redis=require(_0x9f89('0x5'));var db=require(_0x9f89('0x6'))['db'];var utils=require(_0x9f89('0x7'));var logger=require(_0x9f89('0x8'))('rpc');var config=require(_0x9f89('0x9'));var jayson=require(_0x9f89('0xa'));var client=jayson['client'][_0x9f89('0xb')]({'port':0x232a});config[_0x9f89('0xc')]=_['defaults'](config[_0x9f89('0xc')],{'host':_0x9f89('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9f89('0xc')]));require('./whatsappQueue.socket')[_0x9f89('0xe')](socket);function respondWithRpcPromise(_0x1d87de,_0x19b746,_0x3cdbba){return new BPromise(function(_0x2f61b5,_0x16430e){return client['request'](_0x1d87de,_0x3cdbba)[_0x9f89('0xf')](function(_0x3548d0){logger[_0x9f89('0x10')](_0x9f89('0x11'),_0x19b746,'request\x20sent');logger[_0x9f89('0x12')](_0x9f89('0x13'),_0x19b746,_0x9f89('0x14'),JSON[_0x9f89('0x15')](_0x3548d0));if(_0x3548d0['error']){if(_0x3548d0[_0x9f89('0x16')][_0x9f89('0x17')]===0x1f4){logger[_0x9f89('0x16')](_0x9f89('0x11'),_0x19b746,_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);return _0x16430e(_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);}logger['error'](_0x9f89('0x11'),_0x19b746,_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);return _0x2f61b5(_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);}else{logger[_0x9f89('0x10')](_0x9f89('0x11'),_0x19b746,'request\x20sent');_0x2f61b5(_0x3548d0[_0x9f89('0x19')][_0x9f89('0x18')]);}})[_0x9f89('0x1a')](function(_0x4c5965){logger[_0x9f89('0x16')](_0x9f89('0x11'),_0x19b746,_0x4c5965);_0x16430e(_0x4c5965);});});}exports[_0x9f89('0x1b')]=function(_0x4203f2){var _0x4e6ca4=this;return new Promise(function(_0x38c59e,_0x1c94be){return db[_0x9f89('0x1c')][_0x9f89('0x1d')]({'raw':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x1f')]===undefined?!![]:![]:!![],'where':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x20')]||null:null,'attributes':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x21')]||null:null,'limit':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x22')]||null:null,'include':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2[_0x9f89('0x1e')][_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x4203f2[_0x9f89('0x1e')][_0x9f89('0x23')],function(_0x381807){return{'model':db[_0x381807[_0x9f89('0x25')]],'as':_0x381807['as'],'attributes':_0x381807['attributes'],'include':_0x381807[_0x9f89('0x23')]?_['map'](_0x381807['include'],function(_0xf39f1b){return{'model':db[_0xf39f1b[_0x9f89('0x25')]],'as':_0xf39f1b['as'],'attributes':_0xf39f1b[_0x9f89('0x21')],'include':_0xf39f1b[_0x9f89('0x23')]?_['map'](_0xf39f1b['include'],function(_0x39e553){return{'model':db[_0x39e553[_0x9f89('0x25')]],'as':_0x39e553['as'],'attributes':_0x39e553[_0x9f89('0x21')]};}):[]};}):[]};}):[]:[]})[_0x9f89('0xf')](function(_0x3de318){logger[_0x9f89('0x10')](_0x9f89('0x1b'),_0x4203f2);logger['debug'](_0x9f89('0x1b'),_0x4203f2,JSON['stringify'](_0x3de318));_0x38c59e(_0x3de318);})[_0x9f89('0x1a')](function(_0x19bcf0){logger['error']('GetWhatsappQueue',_0x19bcf0[_0x9f89('0x18')],_0x4203f2);_0x1c94be(_0x4e6ca4[_0x9f89('0x16')](0x1f4,_0x19bcf0['message']));});});};exports[_0x9f89('0x26')]=function(_0x1d75b5){var _0x2ff2e8=this;return new Promise(function(_0x47089f,_0x16ca57){return db[_0x9f89('0x1c')][_0x9f89('0x27')]({'raw':_0x1d75b5[_0x9f89('0x1e')]?_0x1d75b5[_0x9f89('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1d75b5[_0x9f89('0x1e')]?_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x20')]||null:null,'attributes':_0x1d75b5[_0x9f89('0x1e')]?_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x21')]||null:null,'include':_0x1d75b5['options']?_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x23')],function(_0x2662b1){return{'model':db[_0x2662b1[_0x9f89('0x25')]],'as':_0x2662b1['as'],'attributes':_0x2662b1[_0x9f89('0x21')],'include':_0x2662b1[_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x2662b1['include'],function(_0x3173c3){return{'model':db[_0x3173c3[_0x9f89('0x25')]],'as':_0x3173c3['as'],'attributes':_0x3173c3[_0x9f89('0x21')],'include':_0x3173c3[_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x3173c3[_0x9f89('0x23')],function(_0x283ca9){return{'model':db[_0x283ca9[_0x9f89('0x25')]],'as':_0x283ca9['as'],'attributes':_0x283ca9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d2d3c){logger[_0x9f89('0x10')](_0x9f89('0x26'),_0x1d75b5);logger[_0x9f89('0x12')](_0x9f89('0x26'),_0x1d75b5,JSON[_0x9f89('0x15')](_0x2d2d3c));_0x47089f(_0x2d2d3c);})[_0x9f89('0x1a')](function(_0x1f2dd5){logger[_0x9f89('0x16')](_0x9f89('0x26'),_0x1f2dd5[_0x9f89('0x18')],_0x1d75b5);_0x16ca57(_0x2ff2e8[_0x9f89('0x16')](0x1f4,_0x1f2dd5['message']));});});};
\ No newline at end of file
+var _0x553d=['error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','options','where','attributes','limit','include','map','model','debug','find','raw','ShowWhatsappQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x553d,0x1ca));var _0xd553=function(_0x3611a7,_0x371312){_0x3611a7=_0x3611a7-0x0;var _0x41e82e=_0x553d[_0x3611a7];return _0x41e82e;};'use strict';var _=require(_0xd553('0x0'));var util=require(_0xd553('0x1'));var moment=require(_0xd553('0x2'));var BPromise=require(_0xd553('0x3'));var rs=require(_0xd553('0x4'));var fs=require('fs');var Redis=require(_0xd553('0x5'));var db=require(_0xd553('0x6'))['db'];var utils=require(_0xd553('0x7'));var logger=require(_0xd553('0x8'))(_0xd553('0x9'));var config=require(_0xd553('0xa'));var jayson=require(_0xd553('0xb'));var client=jayson[_0xd553('0xc')][_0xd553('0xd')]({'port':0x232a});config[_0xd553('0xe')]=_[_0xd553('0xf')](config[_0xd553('0xe')],{'host':_0xd553('0x10'),'port':0x18eb});var socket=require(_0xd553('0x11'))(new Redis(config['redis']));require(_0xd553('0x12'))[_0xd553('0x13')](socket);function respondWithRpcPromise(_0x4294d0,_0x5e007e,_0x290b67){return new BPromise(function(_0x3db372,_0x172225){return client[_0xd553('0x14')](_0x4294d0,_0x290b67)[_0xd553('0x15')](function(_0x5822ab){logger[_0xd553('0x16')](_0xd553('0x17'),_0x5e007e,_0xd553('0x18'));logger['debug']('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x5e007e,_0xd553('0x18'),JSON[_0xd553('0x19')](_0x5822ab));if(_0x5822ab[_0xd553('0x1a')]){if(_0x5822ab['error'][_0xd553('0x1b')]===0x1f4){logger[_0xd553('0x1a')](_0xd553('0x17'),_0x5e007e,_0x5822ab[_0xd553('0x1a')][_0xd553('0x1c')]);return _0x172225(_0x5822ab['error'][_0xd553('0x1c')]);}logger['error'](_0xd553('0x17'),_0x5e007e,_0x5822ab[_0xd553('0x1a')]['message']);return _0x3db372(_0x5822ab[_0xd553('0x1a')][_0xd553('0x1c')]);}else{logger[_0xd553('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x5e007e,_0xd553('0x18'));_0x3db372(_0x5822ab[_0xd553('0x1d')][_0xd553('0x1c')]);}})[_0xd553('0x1e')](function(_0x544b32){logger[_0xd553('0x1a')](_0xd553('0x17'),_0x5e007e,_0x544b32);_0x172225(_0x544b32);});});}exports[_0xd553('0x1f')]=function(_0x4cb6fc){var _0x570441=this;return new Promise(function(_0x4b3a95,_0x2f040e){return db[_0xd553('0x20')]['findAll']({'raw':_0x4cb6fc[_0xd553('0x21')]?_0x4cb6fc[_0xd553('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x4cb6fc[_0xd553('0x21')]?_0x4cb6fc[_0xd553('0x21')][_0xd553('0x22')]||null:null,'attributes':_0x4cb6fc[_0xd553('0x21')]?_0x4cb6fc[_0xd553('0x21')][_0xd553('0x23')]||null:null,'limit':_0x4cb6fc[_0xd553('0x21')]?_0x4cb6fc[_0xd553('0x21')][_0xd553('0x24')]||null:null,'include':_0x4cb6fc[_0xd553('0x21')]?_0x4cb6fc[_0xd553('0x21')][_0xd553('0x25')]?_[_0xd553('0x26')](_0x4cb6fc[_0xd553('0x21')]['include'],function(_0x3b1e13){return{'model':db[_0x3b1e13[_0xd553('0x27')]],'as':_0x3b1e13['as'],'attributes':_0x3b1e13[_0xd553('0x23')],'include':_0x3b1e13[_0xd553('0x25')]?_[_0xd553('0x26')](_0x3b1e13['include'],function(_0x175a58){return{'model':db[_0x175a58[_0xd553('0x27')]],'as':_0x175a58['as'],'attributes':_0x175a58['attributes'],'include':_0x175a58[_0xd553('0x25')]?_[_0xd553('0x26')](_0x175a58[_0xd553('0x25')],function(_0x28fedc){return{'model':db[_0x28fedc['model']],'as':_0x28fedc['as'],'attributes':_0x28fedc[_0xd553('0x23')]};}):[]};}):[]};}):[]:[]})[_0xd553('0x15')](function(_0x5e4f46){logger[_0xd553('0x16')](_0xd553('0x1f'),_0x4cb6fc);logger[_0xd553('0x28')]('GetWhatsappQueue',_0x4cb6fc,JSON[_0xd553('0x19')](_0x5e4f46));_0x4b3a95(_0x5e4f46);})[_0xd553('0x1e')](function(_0x57e78c){logger[_0xd553('0x1a')](_0xd553('0x1f'),_0x57e78c[_0xd553('0x1c')],_0x4cb6fc);_0x2f040e(_0x570441['error'](0x1f4,_0x57e78c['message']));});});};exports['ShowWhatsappQueue']=function(_0x44be2f){var _0x2373d7=this;return new Promise(function(_0x437966,_0x5620e7){return db['WhatsappQueue'][_0xd553('0x29')]({'raw':_0x44be2f[_0xd553('0x21')]?_0x44be2f[_0xd553('0x21')][_0xd553('0x2a')]===undefined?!![]:![]:!![],'where':_0x44be2f['options']?_0x44be2f[_0xd553('0x21')][_0xd553('0x22')]||null:null,'attributes':_0x44be2f[_0xd553('0x21')]?_0x44be2f['options'][_0xd553('0x23')]||null:null,'include':_0x44be2f[_0xd553('0x21')]?_0x44be2f[_0xd553('0x21')][_0xd553('0x25')]?_[_0xd553('0x26')](_0x44be2f['options'][_0xd553('0x25')],function(_0x54e136){return{'model':db[_0x54e136[_0xd553('0x27')]],'as':_0x54e136['as'],'attributes':_0x54e136[_0xd553('0x23')],'include':_0x54e136[_0xd553('0x25')]?_[_0xd553('0x26')](_0x54e136['include'],function(_0x3f4ea0){return{'model':db[_0x3f4ea0[_0xd553('0x27')]],'as':_0x3f4ea0['as'],'attributes':_0x3f4ea0['attributes'],'include':_0x3f4ea0['include']?_[_0xd553('0x26')](_0x3f4ea0['include'],function(_0xcb651e){return{'model':db[_0xcb651e[_0xd553('0x27')]],'as':_0xcb651e['as'],'attributes':_0xcb651e[_0xd553('0x23')]};}):[]};}):[]};}):[]:[]})[_0xd553('0x15')](function(_0x72d0d9){logger['info'](_0xd553('0x2b'),_0x44be2f);logger[_0xd553('0x28')](_0xd553('0x2b'),_0x44be2f,JSON['stringify'](_0x72d0d9));_0x437966(_0x72d0d9);})[_0xd553('0x1e')](function(_0x12512e){logger[_0xd553('0x1a')](_0xd553('0x2b'),_0x12512e['message'],_0x44be2f);_0x5620e7(_0x2373d7['error'](0x1f4,_0x12512e[_0xd553('0x1c')]));});});};
\ No newline at end of file
index 76d3583..a205355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['emit','removeListener','register','./whatsappQueue.events','save','remove'];(function(_0x1e9817,_0x5c220e){var _0x2d9640=function(_0x12a7ec){while(--_0x12a7ec){_0x1e9817['push'](_0x1e9817['shift']());}};_0x2d9640(++_0x5c220e);}(_0x5b12,0x1cb));var _0x25b1=function(_0x50a699,_0x5ebab5){_0x50a699=_0x50a699-0x0;var _0xc6ace7=_0x5b12[_0x50a699];return _0xc6ace7;};'use strict';var WhatsappQueueEvents=require(_0x25b1('0x0'));var events=[_0x25b1('0x1'),_0x25b1('0x2'),'update'];function createListener(_0x575d85,_0x146e30){return function(_0x353545){_0x146e30[_0x25b1('0x3')](_0x575d85,_0x353545);};}function removeListener(_0x40dada,_0xf109bd){return function(){WhatsappQueueEvents[_0x25b1('0x4')](_0x40dada,_0xf109bd);};}exports[_0x25b1('0x5')]=function(_0x217ac8){for(var _0x1408a0=0x0,_0x8f7bb7=events['length'];_0x1408a0<_0x8f7bb7;_0x1408a0++){var _0x3f6c04=events[_0x1408a0];var _0x3ab45a=createListener('whatsappQueue:'+_0x3f6c04,_0x217ac8);WhatsappQueueEvents['on'](_0x3f6c04,_0x3ab45a);}};
\ No newline at end of file
+var _0x58b8=['emit','whatsappQueue:','save','remove','update'];(function(_0xbd51c2,_0x56e35a){var _0x3a84a4=function(_0x333685){while(--_0x333685){_0xbd51c2['push'](_0xbd51c2['shift']());}};_0x3a84a4(++_0x56e35a);}(_0x58b8,0x179));var _0x858b=function(_0x274dd7,_0x2e6051){_0x274dd7=_0x274dd7-0x0;var _0x148829=_0x58b8[_0x274dd7];return _0x148829;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x858b('0x0'),_0x858b('0x1'),_0x858b('0x2')];function createListener(_0x2b3f86,_0x44d692){return function(_0x1618ca){_0x44d692[_0x858b('0x3')](_0x2b3f86,_0x1618ca);};}function removeListener(_0x48bd73,_0x5ddcdd){return function(){WhatsappQueueEvents['removeListener'](_0x48bd73,_0x5ddcdd);};}exports['register']=function(_0x4a81aa){for(var _0x554fd0=0x0,_0x3b5057=events['length'];_0x554fd0<_0x3b5057;_0x554fd0++){var _0x22b3bc=events[_0x554fd0];var _0x40dbca=createListener(_0x858b('0x4')+_0x22b3bc,_0x4a81aa);WhatsappQueueEvents['on'](_0x22b3bc,_0x40dbca);}};
\ No newline at end of file
index 81c807b..92c2ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x803f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','/describe','describe','show','create','put','update','delete','/:id','destroy','exports','multer','util','path'];(function(_0x317aa6,_0x18c7bf){var _0x36c518=function(_0x304029){while(--_0x304029){_0x317aa6['push'](_0x317aa6['shift']());}};_0x36c518(++_0x18c7bf);}(_0x803f,0x156));var _0xf803=function(_0xf775f1,_0x29c487){_0xf775f1=_0xf775f1-0x0;var _0x546296=_0x803f[_0xf775f1];return _0x546296;};'use strict';var multer=require(_0xf803('0x0'));var util=require(_0xf803('0x1'));var path=require(_0xf803('0x2'));var timeout=require(_0xf803('0x3'));var express=require(_0xf803('0x4'));var router=express[_0xf803('0x5')]();var fs_extra=require(_0xf803('0x6'));var auth=require(_0xf803('0x7'));var interaction=require(_0xf803('0x8'));var config=require(_0xf803('0x9'));var controller=require(_0xf803('0xa'));router[_0xf803('0xb')]('/',auth[_0xf803('0xc')](),controller['index']);router[_0xf803('0xb')](_0xf803('0xd'),auth[_0xf803('0xc')](),controller[_0xf803('0xe')]);router['get']('/:id',auth[_0xf803('0xc')](),controller[_0xf803('0xf')]);router['post']('/',auth[_0xf803('0xc')](),controller[_0xf803('0x10')]);router[_0xf803('0x11')]('/:id',auth[_0xf803('0xc')](),controller[_0xf803('0x12')]);router[_0xf803('0x13')](_0xf803('0x14'),auth['isAuthenticated'](),controller[_0xf803('0x15')]);module[_0xf803('0x16')]=router;
\ No newline at end of file
+var _0x969c=['connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/describe','isAuthenticated','/:id','post','create','update','delete','destroy','exports','multer','util','path'];(function(_0x5d0818,_0x188411){var _0x37fcdb=function(_0x10c95a){while(--_0x10c95a){_0x5d0818['push'](_0x5d0818['shift']());}};_0x37fcdb(++_0x188411);}(_0x969c,0x1eb));var _0xc969=function(_0x198ebc,_0x38aa11){_0x198ebc=_0x198ebc-0x0;var _0x3905d2=_0x969c[_0x198ebc];return _0x3905d2;};'use strict';var multer=require(_0xc969('0x0'));var util=require(_0xc969('0x1'));var path=require(_0xc969('0x2'));var timeout=require(_0xc969('0x3'));var express=require(_0xc969('0x4'));var router=express[_0xc969('0x5')]();var fs_extra=require(_0xc969('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc969('0x7'));var controller=require('./whatsappQueueReport.controller');router[_0xc969('0x8')]('/',auth['isAuthenticated'](),controller[_0xc969('0x9')]);router[_0xc969('0x8')](_0xc969('0xa'),auth[_0xc969('0xb')](),controller['describe']);router[_0xc969('0x8')](_0xc969('0xc'),auth[_0xc969('0xb')](),controller['show']);router[_0xc969('0xd')]('/',auth['isAuthenticated'](),controller[_0xc969('0xe')]);router['put'](_0xc969('0xc'),auth[_0xc969('0xb')](),controller[_0xc969('0xf')]);router[_0xc969('0x10')](_0xc969('0xc'),auth[_0xc969('0xb')](),controller[_0xc969('0x11')]);module[_0xc969('0x12')]=router;
\ No newline at end of file
index 9287b53..2989fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x3e5a16,_0x59ba3e){var _0x388f2e=function(_0x15e14f){while(--_0x15e14f){_0x3e5a16['push'](_0x3e5a16['shift']());}};_0x388f2e(++_0x59ba3e);}(_0x7a54,0x106));var _0x47a5=function(_0xe59058,_0x4c96c2){_0xe59058=_0xe59058-0x0;var _0x5dbe44=_0x7a54[_0xe59058];return _0x5dbe44;};'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
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4ab948,_0xb3f543){var _0x34fe90=function(_0x106ee1){while(--_0x106ee1){_0x4ab948['push'](_0x4ab948['shift']());}};_0x34fe90(++_0xb3f543);}(_0x7a54,0x106));var _0x47a5=function(_0xb31ba8,_0x58043f){_0xb31ba8=_0xb31ba8-0x0;var _0x51138c=_0x7a54[_0xb31ba8];return _0x51138c;};'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 090c14e..6e607f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0102=['filters','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','type','options','then','findAll','rows','catch','params','rawAttributes','intersection','include','find','create','update','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','sox','to-csv','ejs','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','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','reject','save','sendStatus','error','stack','name','send','index','map','WhatsappQueueReport','fieldName','key','model','query','keys'];(function(_0x323ab3,_0x506e07){var _0x38a3e2=function(_0x441414){while(--_0x441414){_0x323ab3['push'](_0x323ab3['shift']());}};_0x38a3e2(++_0x506e07);}(_0x0102,0x186));var _0x2010=function(_0x9a0d7f,_0x36c59f){_0x9a0d7f=_0x9a0d7f-0x0;var _0x4a63e4=_0x0102[_0x9a0d7f];return _0x4a63e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2010('0x0'));var zipdir=require(_0x2010('0x1'));var jsonpatch=require(_0x2010('0x2'));var rp=require(_0x2010('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x2010('0x4'));var csv=require(_0x2010('0x5'));var ejs=require(_0x2010('0x6'));var fs=require('fs');var fs_extra=require(_0x2010('0x7'));var _=require('lodash');var squel=require(_0x2010('0x8'));var crypto=require('crypto');var jsforce=require(_0x2010('0x9'));var deskjs=require(_0x2010('0xa'));var toCsv=require('to-csv');var querystring=require(_0x2010('0xb'));var Papa=require(_0x2010('0xc'));var Redis=require(_0x2010('0xd'));var authService=require(_0x2010('0xe'));var qs=require(_0x2010('0xf'));var as=require(_0x2010('0x10'));var hardwareService=require(_0x2010('0x11'));var logger=require(_0x2010('0x12'))(_0x2010('0x13'));var utils=require(_0x2010('0x14'));var config=require(_0x2010('0x15'));var licenseUtil=require(_0x2010('0x16'));var db=require(_0x2010('0x17'))['db'];function respondWithStatusCode(_0x3f307c,_0x3e8624){_0x3e8624=_0x3e8624||0xcc;return function(_0x388991){if(_0x388991){return _0x3f307c['sendStatus'](_0x3e8624);}return _0x3f307c['status'](_0x3e8624)[_0x2010('0x18')]();};}function respondWithResult(_0x385720,_0x2e8ec2){_0x2e8ec2=_0x2e8ec2||0xc8;return function(_0x10b587){if(_0x10b587){return _0x385720[_0x2010('0x19')](_0x2e8ec2)[_0x2010('0x1a')](_0x10b587);}};}function respondWithFilteredResult(_0x517ff4,_0x3195fa){return function(_0x136418){if(_0x136418){var _0x5ad412=typeof _0x3195fa[_0x2010('0x1b')]===_0x2010('0x1c')&&typeof _0x3195fa[_0x2010('0x1d')]===_0x2010('0x1c');var _0x2d0bf2=_0x136418[_0x2010('0x1e')];var _0x83cd35=_0x5ad412?0x0:_0x3195fa[_0x2010('0x1b')];var _0x309477=_0x5ad412?_0x136418['count']:_0x3195fa['offset']+_0x3195fa[_0x2010('0x1d')];var _0x38a15a;if(_0x309477>=_0x2d0bf2){_0x309477=_0x2d0bf2;_0x38a15a=0xc8;}else{_0x38a15a=0xce;}_0x517ff4[_0x2010('0x19')](_0x38a15a);return _0x517ff4[_0x2010('0x1f')]('Content-Range',_0x83cd35+'-'+_0x309477+'/'+_0x2d0bf2)['json'](_0x136418);}return null;};}function patchUpdates(_0x22c252){return function(_0x171e45){try{jsonpatch[_0x2010('0x20')](_0x171e45,_0x22c252,!![]);}catch(_0x26facc){return BPromise[_0x2010('0x21')](_0x26facc);}return _0x171e45[_0x2010('0x22')]();};}function saveUpdates(_0x4f621c,_0x3db13d){return function(_0x1cfa57){if(_0x1cfa57){return _0x1cfa57['update'](_0x4f621c)['then'](function(_0x50aecc){return _0x50aecc;});}return null;};}function removeEntity(_0x424453,_0x574719){return function(_0x277dcc){if(_0x277dcc){return _0x277dcc['destroy']()['then'](function(){_0x424453[_0x2010('0x19')](0xcc)[_0x2010('0x18')]();});}};}function handleEntityNotFound(_0x52b4fe,_0x99ebe0){return function(_0x4cff59){if(!_0x4cff59){_0x52b4fe[_0x2010('0x23')](0x194);}return _0x4cff59;};}function handleError(_0x27b425,_0x3929d9){_0x3929d9=_0x3929d9||0x1f4;return function(_0x3dcea4){logger[_0x2010('0x24')](_0x3dcea4[_0x2010('0x25')]);if(_0x3dcea4[_0x2010('0x26')]){delete _0x3dcea4[_0x2010('0x26')];}_0x27b425[_0x2010('0x19')](_0x3929d9)[_0x2010('0x27')](_0x3dcea4);};}exports[_0x2010('0x28')]=function(_0x2ebdbb,_0x499cbe){var _0x2a4691={},_0x52fe5e={},_0x5b52fb={'count':0x0,'rows':[]};var _0x147a5a=_[_0x2010('0x29')](db[_0x2010('0x2a')]['rawAttributes'],function(_0x554f66){return{'name':_0x554f66[_0x2010('0x2b')],'type':_0x554f66['type'][_0x2010('0x2c')]};});_0x52fe5e[_0x2010('0x2d')]=_['map'](_0x147a5a,_0x2010('0x26'));_0x52fe5e[_0x2010('0x2e')]=_[_0x2010('0x2f')](_0x2ebdbb[_0x2010('0x2e')]);_0x52fe5e[_0x2010('0x30')]=_['intersection'](_0x52fe5e[_0x2010('0x2d')],_0x52fe5e[_0x2010('0x2e')]);_0x2a4691[_0x2010('0x31')]=_['intersection'](_0x52fe5e['model'],qs[_0x2010('0x32')](_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x32')]));_0x2a4691['attributes']=_0x2a4691['attributes'][_0x2010('0x33')]?_0x2a4691[_0x2010('0x31')]:_0x52fe5e[_0x2010('0x2d')];if(!_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x34')]('nolimit')){_0x2a4691['limit']=qs['limit'](_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x1d')]);_0x2a4691[_0x2010('0x1b')]=qs['offset'](_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x1b')]);}_0x2a4691[_0x2010('0x35')]=qs[_0x2010('0x36')](_0x2ebdbb['query'][_0x2010('0x36')]);_0x2a4691[_0x2010('0x37')]=qs[_0x2010('0x30')](_['pick'](_0x2ebdbb[_0x2010('0x2e')],_0x52fe5e['filters']),_0x147a5a);if(_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x38')]){_0x2a4691[_0x2010('0x37')]=_[_0x2010('0x39')](_0x2a4691[_0x2010('0x37')],{'$or':_[_0x2010('0x29')](_0x147a5a,function(_0x53c09e){if(_0x53c09e[_0x2010('0x3a')]!=='VIRTUAL'){var _0x3e5422={};_0x3e5422[_0x53c09e[_0x2010('0x26')]]={'$like':'%'+_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x38')]+'%'};return _0x3e5422;}})});}_0x2a4691=_[_0x2010('0x39')]({},_0x2a4691,_0x2ebdbb[_0x2010('0x3b')]);var _0x398f10={'where':_0x2a4691[_0x2010('0x37')]};return db[_0x2010('0x2a')][_0x2010('0x1e')](_0x398f10)[_0x2010('0x3c')](function(_0x2f37ca){_0x5b52fb[_0x2010('0x1e')]=_0x2f37ca;if(_0x2ebdbb[_0x2010('0x2e')]['includeAll']){_0x2a4691['include']=[{'all':!![]}];}return db[_0x2010('0x2a')][_0x2010('0x3d')](_0x2a4691);})[_0x2010('0x3c')](function(_0x35d631){_0x5b52fb[_0x2010('0x3e')]=_0x35d631;return _0x5b52fb;})[_0x2010('0x3c')](respondWithFilteredResult(_0x499cbe,_0x2a4691))[_0x2010('0x3f')](handleError(_0x499cbe,null));};exports['show']=function(_0x392576,_0x578645){var _0x27fd64={'raw':!![],'where':{'id':_0x392576[_0x2010('0x40')]['id']}},_0x3ff496={};_0x3ff496[_0x2010('0x2d')]=_[_0x2010('0x2f')](db['WhatsappQueueReport'][_0x2010('0x41')]);_0x3ff496[_0x2010('0x2e')]=_[_0x2010('0x2f')](_0x392576[_0x2010('0x2e')]);_0x3ff496['filters']=_[_0x2010('0x42')](_0x3ff496['model'],_0x3ff496['query']);_0x27fd64['attributes']=_[_0x2010('0x42')](_0x3ff496[_0x2010('0x2d')],qs[_0x2010('0x32')](_0x392576[_0x2010('0x2e')][_0x2010('0x32')]));_0x27fd64[_0x2010('0x31')]=_0x27fd64['attributes'][_0x2010('0x33')]?_0x27fd64[_0x2010('0x31')]:_0x3ff496[_0x2010('0x2d')];if(_0x392576['query']['includeAll']){_0x27fd64[_0x2010('0x43')]=[{'all':!![]}];}_0x27fd64=_['merge']({},_0x27fd64,_0x392576[_0x2010('0x3b')]);return db[_0x2010('0x2a')][_0x2010('0x44')](_0x27fd64)[_0x2010('0x3c')](handleEntityNotFound(_0x578645,null))['then'](respondWithResult(_0x578645,null))[_0x2010('0x3f')](handleError(_0x578645,null));};exports[_0x2010('0x45')]=function(_0x2e2703,_0x231db7){return db[_0x2010('0x2a')][_0x2010('0x45')](_0x2e2703['body'],{})[_0x2010('0x3c')](respondWithResult(_0x231db7,0xc9))[_0x2010('0x3f')](handleError(_0x231db7,null));};exports[_0x2010('0x46')]=function(_0x4dc0cf,_0x30e5d0){if(_0x4dc0cf[_0x2010('0x47')]['id']){delete _0x4dc0cf['body']['id'];}return db[_0x2010('0x2a')][_0x2010('0x44')]({'where':{'id':_0x4dc0cf[_0x2010('0x40')]['id']}})[_0x2010('0x3c')](handleEntityNotFound(_0x30e5d0,null))[_0x2010('0x3c')](saveUpdates(_0x4dc0cf[_0x2010('0x47')],null))[_0x2010('0x3c')](respondWithResult(_0x30e5d0,null))[_0x2010('0x3f')](handleError(_0x30e5d0,null));};exports['destroy']=function(_0x5258b9,_0xc9f070){return db[_0x2010('0x2a')]['find']({'where':{'id':_0x5258b9[_0x2010('0x40')]['id']}})[_0x2010('0x3c')](handleEntityNotFound(_0xc9f070,null))[_0x2010('0x3c')](removeEntity(_0xc9f070,null))[_0x2010('0x3f')](handleError(_0xc9f070,null));};exports[_0x2010('0x48')]=function(_0x506943,_0x5f4e98){return db[_0x2010('0x2a')][_0x2010('0x48')]()[_0x2010('0x3c')](respondWithResult(_0x5f4e98,null))[_0x2010('0x3f')](handleError(_0x5f4e98,null));};
\ No newline at end of file
+var _0x6e6c=['reject','save','update','then','destroy','end','error','stack','name','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x404182,_0x3aee28){var _0x52ed9d=function(_0x219b77){while(--_0x219b77){_0x404182['push'](_0x404182['shift']());}};_0x52ed9d(++_0x3aee28);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6e6c[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xc6e6('0x0'));var rimraf=require(_0xc6e6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc6e6('0x2'));var rp=require(_0xc6e6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc6e6('0x4'));var util=require('util');var path=require(_0xc6e6('0x5'));var sox=require('sox');var csv=require(_0xc6e6('0x6'));var ejs=require(_0xc6e6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc6e6('0x8'));var squel=require(_0xc6e6('0x9'));var crypto=require('crypto');var jsforce=require(_0xc6e6('0xa'));var deskjs=require(_0xc6e6('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc6e6('0xc'));var Papa=require('papaparse');var Redis=require(_0xc6e6('0xd'));var authService=require(_0xc6e6('0xe'));var qs=require(_0xc6e6('0xf'));var as=require(_0xc6e6('0x10'));var hardwareService=require(_0xc6e6('0x11'));var logger=require(_0xc6e6('0x12'))(_0xc6e6('0x13'));var utils=require(_0xc6e6('0x14'));var config=require(_0xc6e6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc6e6('0x16'))['db'];function respondWithStatusCode(_0x525d60,_0x3a30ce){_0x3a30ce=_0x3a30ce||0xcc;return function(_0x314d0f){if(_0x314d0f){return _0x525d60[_0xc6e6('0x17')](_0x3a30ce);}return _0x525d60[_0xc6e6('0x18')](_0x3a30ce)['end']();};}function respondWithResult(_0x149ac6,_0x2bfe7d){_0x2bfe7d=_0x2bfe7d||0xc8;return function(_0x13be73){if(_0x13be73){return _0x149ac6[_0xc6e6('0x18')](_0x2bfe7d)[_0xc6e6('0x19')](_0x13be73);}};}function respondWithFilteredResult(_0x4cdf15,_0x413cf8){return function(_0x178b34){if(_0x178b34){var _0x569474=typeof _0x413cf8[_0xc6e6('0x1a')]===_0xc6e6('0x1b')&&typeof _0x413cf8[_0xc6e6('0x1c')]==='undefined';var _0x51fd7c=_0x178b34['count'];var _0x3a1ccc=_0x569474?0x0:_0x413cf8['offset'];var _0x46e58f=_0x569474?_0x178b34[_0xc6e6('0x1d')]:_0x413cf8[_0xc6e6('0x1a')]+_0x413cf8[_0xc6e6('0x1c')];var _0x19e1e4;if(_0x46e58f>=_0x51fd7c){_0x46e58f=_0x51fd7c;_0x19e1e4=0xc8;}else{_0x19e1e4=0xce;}_0x4cdf15[_0xc6e6('0x18')](_0x19e1e4);return _0x4cdf15[_0xc6e6('0x1e')](_0xc6e6('0x1f'),_0x3a1ccc+'-'+_0x46e58f+'/'+_0x51fd7c)[_0xc6e6('0x19')](_0x178b34);}return null;};}function patchUpdates(_0x3d734d){return function(_0x4a36b6){try{jsonpatch[_0xc6e6('0x20')](_0x4a36b6,_0x3d734d,!![]);}catch(_0x4ad70e){return BPromise[_0xc6e6('0x21')](_0x4ad70e);}return _0x4a36b6[_0xc6e6('0x22')]();};}function saveUpdates(_0x2be6fc,_0x2f69f1){return function(_0x4f1d68){if(_0x4f1d68){return _0x4f1d68[_0xc6e6('0x23')](_0x2be6fc)[_0xc6e6('0x24')](function(_0x3a96df){return _0x3a96df;});}return null;};}function removeEntity(_0x36ebfa,_0x107561){return function(_0x4c35ae){if(_0x4c35ae){return _0x4c35ae[_0xc6e6('0x25')]()['then'](function(){_0x36ebfa[_0xc6e6('0x18')](0xcc)[_0xc6e6('0x26')]();});}};}function handleEntityNotFound(_0x2e5e0e,_0x64e1dc){return function(_0x53a1bf){if(!_0x53a1bf){_0x2e5e0e[_0xc6e6('0x17')](0x194);}return _0x53a1bf;};}function handleError(_0x5a5e47,_0x28577b){_0x28577b=_0x28577b||0x1f4;return function(_0x534745){logger[_0xc6e6('0x27')](_0x534745[_0xc6e6('0x28')]);if(_0x534745[_0xc6e6('0x29')]){delete _0x534745[_0xc6e6('0x29')];}_0x5a5e47[_0xc6e6('0x18')](_0x28577b)['send'](_0x534745);};}exports[_0xc6e6('0x2a')]=function(_0x1501bd,_0x166313){var _0x1af05c={},_0x4d1284={},_0x34ae96={'count':0x0,'rows':[]};var _0x50b735=_[_0xc6e6('0x2b')](db[_0xc6e6('0x2c')][_0xc6e6('0x2d')],function(_0xc578b3){return{'name':_0xc578b3[_0xc6e6('0x2e')],'type':_0xc578b3[_0xc6e6('0x2f')][_0xc6e6('0x30')]};});_0x4d1284[_0xc6e6('0x31')]=_[_0xc6e6('0x2b')](_0x50b735,_0xc6e6('0x29'));_0x4d1284[_0xc6e6('0x32')]=_[_0xc6e6('0x33')](_0x1501bd[_0xc6e6('0x32')]);_0x4d1284[_0xc6e6('0x34')]=_[_0xc6e6('0x35')](_0x4d1284[_0xc6e6('0x31')],_0x4d1284[_0xc6e6('0x32')]);_0x1af05c['attributes']=_[_0xc6e6('0x35')](_0x4d1284[_0xc6e6('0x31')],qs['fields'](_0x1501bd['query'][_0xc6e6('0x36')]));_0x1af05c[_0xc6e6('0x37')]=_0x1af05c[_0xc6e6('0x37')][_0xc6e6('0x38')]?_0x1af05c[_0xc6e6('0x37')]:_0x4d1284[_0xc6e6('0x31')];if(!_0x1501bd['query'][_0xc6e6('0x39')](_0xc6e6('0x3a'))){_0x1af05c[_0xc6e6('0x1c')]=qs['limit'](_0x1501bd['query'][_0xc6e6('0x1c')]);_0x1af05c[_0xc6e6('0x1a')]=qs[_0xc6e6('0x1a')](_0x1501bd[_0xc6e6('0x32')]['offset']);}_0x1af05c['order']=qs[_0xc6e6('0x3b')](_0x1501bd['query'][_0xc6e6('0x3b')]);_0x1af05c['where']=qs[_0xc6e6('0x34')](_[_0xc6e6('0x3c')](_0x1501bd[_0xc6e6('0x32')],_0x4d1284[_0xc6e6('0x34')]),_0x50b735);if(_0x1501bd['query']['filter']){_0x1af05c[_0xc6e6('0x3d')]=_[_0xc6e6('0x3e')](_0x1af05c[_0xc6e6('0x3d')],{'$or':_[_0xc6e6('0x2b')](_0x50b735,function(_0x4bb732){if(_0x4bb732['type']!==_0xc6e6('0x3f')){var _0x1326c7={};_0x1326c7[_0x4bb732[_0xc6e6('0x29')]]={'$like':'%'+_0x1501bd[_0xc6e6('0x32')]['filter']+'%'};return _0x1326c7;}})});}_0x1af05c=_[_0xc6e6('0x3e')]({},_0x1af05c,_0x1501bd[_0xc6e6('0x40')]);var _0x5ddab4={'where':_0x1af05c['where']};return db[_0xc6e6('0x2c')]['count'](_0x5ddab4)[_0xc6e6('0x24')](function(_0x3817fc){_0x34ae96['count']=_0x3817fc;if(_0x1501bd[_0xc6e6('0x32')]['includeAll']){_0x1af05c[_0xc6e6('0x41')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0xc6e6('0x42')](_0x1af05c);})[_0xc6e6('0x24')](function(_0x247076){_0x34ae96[_0xc6e6('0x43')]=_0x247076;return _0x34ae96;})[_0xc6e6('0x24')](respondWithFilteredResult(_0x166313,_0x1af05c))[_0xc6e6('0x44')](handleError(_0x166313,null));};exports[_0xc6e6('0x45')]=function(_0x69766,_0x5ecf6c){var _0x5722db={'raw':!![],'where':{'id':_0x69766[_0xc6e6('0x46')]['id']}},_0x3e3da6={};_0x3e3da6[_0xc6e6('0x31')]=_[_0xc6e6('0x33')](db['WhatsappQueueReport'][_0xc6e6('0x2d')]);_0x3e3da6[_0xc6e6('0x32')]=_[_0xc6e6('0x33')](_0x69766[_0xc6e6('0x32')]);_0x3e3da6['filters']=_[_0xc6e6('0x35')](_0x3e3da6[_0xc6e6('0x31')],_0x3e3da6[_0xc6e6('0x32')]);_0x5722db[_0xc6e6('0x37')]=_[_0xc6e6('0x35')](_0x3e3da6['model'],qs[_0xc6e6('0x36')](_0x69766['query'][_0xc6e6('0x36')]));_0x5722db['attributes']=_0x5722db[_0xc6e6('0x37')][_0xc6e6('0x38')]?_0x5722db[_0xc6e6('0x37')]:_0x3e3da6[_0xc6e6('0x31')];if(_0x69766[_0xc6e6('0x32')][_0xc6e6('0x47')]){_0x5722db[_0xc6e6('0x41')]=[{'all':!![]}];}_0x5722db=_[_0xc6e6('0x3e')]({},_0x5722db,_0x69766['options']);return db[_0xc6e6('0x2c')][_0xc6e6('0x48')](_0x5722db)[_0xc6e6('0x24')](handleEntityNotFound(_0x5ecf6c,null))['then'](respondWithResult(_0x5ecf6c,null))[_0xc6e6('0x44')](handleError(_0x5ecf6c,null));};exports[_0xc6e6('0x49')]=function(_0x38ecc3,_0x42ed90){return db[_0xc6e6('0x2c')][_0xc6e6('0x49')](_0x38ecc3[_0xc6e6('0x4a')],{})[_0xc6e6('0x24')](respondWithResult(_0x42ed90,0xc9))[_0xc6e6('0x44')](handleError(_0x42ed90,null));};exports[_0xc6e6('0x23')]=function(_0x3bfe85,_0x470167){if(_0x3bfe85[_0xc6e6('0x4a')]['id']){delete _0x3bfe85[_0xc6e6('0x4a')]['id'];}return db['WhatsappQueueReport'][_0xc6e6('0x48')]({'where':{'id':_0x3bfe85['params']['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x470167,null))[_0xc6e6('0x24')](saveUpdates(_0x3bfe85['body'],null))['then'](respondWithResult(_0x470167,null))['catch'](handleError(_0x470167,null));};exports['destroy']=function(_0x531dca,_0x3edc16){return db[_0xc6e6('0x2c')][_0xc6e6('0x48')]({'where':{'id':_0x531dca[_0xc6e6('0x46')]['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x3edc16,null))['then'](removeEntity(_0x3edc16,null))['catch'](handleError(_0x3edc16,null));};exports[_0xc6e6('0x4b')]=function(_0x2d5e44,_0x1aa872){return db[_0xc6e6('0x2c')]['describe']()[_0xc6e6('0x24')](respondWithResult(_0x1aa872,null))[_0xc6e6('0x44')](handleError(_0x1aa872,null));};
\ No newline at end of file
index b4f3d6d..0be0010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9735=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9735,0x110));var _0x5973=function(_0x2989a7,_0x38b7f6){_0x2989a7=_0x2989a7-0x0;var _0x14dcfe=_0x9735[_0x2989a7];return _0x14dcfe;};'use strict';var _=require('lodash');var util=require(_0x5973('0x0'));var logger=require('../../config/logger')(_0x5973('0x1'));var moment=require(_0x5973('0x2'));var BPromise=require(_0x5973('0x3'));var rp=require(_0x5973('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5973('0x5'));var config=require(_0x5973('0x6'));var attributes=require(_0x5973('0x7'));module[_0x5973('0x8')]=function(_0x387d6c,_0x54aca9){return _0x387d6c[_0x5973('0x9')](_0x5973('0xa'),attributes,{'tableName':_0x5973('0xb'),'paranoid':![],'indexes':[{'name':_0x5973('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d65=['define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','api','request-promise','path','rimraf','./whatsappQueueReport.attributes','exports'];(function(_0x478216,_0x2a66ba){var _0x469422=function(_0x2fef15){while(--_0x2fef15){_0x478216['push'](_0x478216['shift']());}};_0x469422(++_0x2a66ba);}(_0x7d65,0xf6));var _0x57d6=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x7d65[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require(_0x57d6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x57d6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x57d6('0x2'));var fs=require('fs');var path=require(_0x57d6('0x3'));var rimraf=require(_0x57d6('0x4'));var config=require('../../config/environment');var attributes=require(_0x57d6('0x5'));module[_0x57d6('0x6')]=function(_0x438e42,_0x59be95){return _0x438e42[_0x57d6('0x7')](_0x57d6('0x8'),attributes,{'tableName':_0x57d6('0x9'),'paranoid':![],'indexes':[{'name':_0x57d6('0xa'),'fields':[_0x57d6('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 430474e..b2e8bfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6273=['CreateWhatsappQueueReport','update','where','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','WhatsappQueueReport','create','body','options','raw','debug'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x6273,0xb0));var _0x3627=function(_0x18be84,_0x5359cb){_0x18be84=_0x18be84-0x0;var _0x1520ac=_0x6273[_0x18be84];return _0x1520ac;};'use strict';var _=require(_0x3627('0x0'));var util=require(_0x3627('0x1'));var moment=require(_0x3627('0x2'));var BPromise=require('bluebird');var rs=require(_0x3627('0x3'));var fs=require('fs');var Redis=require(_0x3627('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3627('0x5'));var logger=require(_0x3627('0x6'))(_0x3627('0x7'));var config=require(_0x3627('0x8'));var jayson=require(_0x3627('0x9'));var client=jayson['client'][_0x3627('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x417685,_0x462051,_0x11f164){return new BPromise(function(_0x4046f5,_0x3dc8b2){return client[_0x3627('0xb')](_0x417685,_0x11f164)[_0x3627('0xc')](function(_0x4d0f20){logger[_0x3627('0xd')](_0x3627('0xe'),_0x462051,_0x3627('0xf'));logger['debug'](_0x3627('0x10'),_0x462051,_0x3627('0xf'),JSON[_0x3627('0x11')](_0x4d0f20));if(_0x4d0f20[_0x3627('0x12')]){if(_0x4d0f20[_0x3627('0x12')][_0x3627('0x13')]===0x1f4){logger['error'](_0x3627('0xe'),_0x462051,_0x4d0f20[_0x3627('0x12')][_0x3627('0x14')]);return _0x3dc8b2(_0x4d0f20['error'][_0x3627('0x14')]);}logger[_0x3627('0x12')](_0x3627('0xe'),_0x462051,_0x4d0f20['error'][_0x3627('0x14')]);return _0x4046f5(_0x4d0f20[_0x3627('0x12')][_0x3627('0x14')]);}else{logger[_0x3627('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x462051,_0x3627('0xf'));_0x4046f5(_0x4d0f20['result'][_0x3627('0x14')]);}})[_0x3627('0x15')](function(_0x485ee5){logger['error'](_0x3627('0xe'),_0x462051,_0x485ee5);_0x3dc8b2(_0x485ee5);});});}exports['CreateWhatsappQueueReport']=function(_0x148b4f){var _0x34be70=this;return new Promise(function(_0x528dbf,_0x1e34cf){return db[_0x3627('0x16')][_0x3627('0x17')](_0x148b4f[_0x3627('0x18')],{'raw':_0x148b4f[_0x3627('0x19')]?_0x148b4f['options'][_0x3627('0x1a')]===undefined?!![]:![]:!![]})[_0x3627('0xc')](function(_0x290f77){logger[_0x3627('0xd')]('CreateWhatsappQueueReport',_0x148b4f);logger[_0x3627('0x1b')](_0x3627('0x1c'),_0x148b4f,JSON['stringify'](_0x290f77));_0x528dbf(_0x290f77);})[_0x3627('0x15')](function(_0x5d23fa){logger['error'](_0x3627('0x1c'),_0x5d23fa[_0x3627('0x14')],_0x148b4f);_0x1e34cf(_0x34be70[_0x3627('0x12')](0x1f4,_0x5d23fa[_0x3627('0x14')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x3fe923){var _0x52a587=this;return new Promise(function(_0x2f0a8c,_0x3e3a53){return db[_0x3627('0x16')][_0x3627('0x1d')](_0x3fe923[_0x3627('0x18')],{'raw':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x1e')]||null:null,'attributes':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x1f')]||null:null,'limit':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x20')]||null:null})['then'](function(_0x1d9460){logger['info'](_0x3627('0x21'),_0x3fe923);logger[_0x3627('0x1b')](_0x3627('0x21'),_0x3fe923,JSON[_0x3627('0x11')](_0x1d9460));_0x2f0a8c(_0x1d9460);})[_0x3627('0x15')](function(_0x565589){logger[_0x3627('0x12')](_0x3627('0x21'),_0x565589[_0x3627('0x14')],_0x3fe923);_0x3e3a53(_0x52a587['error'](0x1f4,_0x565589[_0x3627('0x14')]));});});};
\ No newline at end of file
+var _0x7674=['debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','info','update','where','attributes','limit','UpdateWhatsappQueueReport','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x4e28d3,_0x327052){var _0x194390=function(_0x4e6b09){while(--_0x4e6b09){_0x4e28d3['push'](_0x4e28d3['shift']());}};_0x194390(++_0x327052);}(_0x7674,0xbd));var _0x4767=function(_0x39ce5a,_0x260622){_0x39ce5a=_0x39ce5a-0x0;var _0x46cd9a=_0x7674[_0x39ce5a];return _0x46cd9a;};'use strict';var _=require(_0x4767('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4767('0x1'));var rs=require(_0x4767('0x2'));var fs=require('fs');var Redis=require(_0x4767('0x3'));var db=require(_0x4767('0x4'))['db'];var utils=require(_0x4767('0x5'));var logger=require(_0x4767('0x6'))(_0x4767('0x7'));var config=require(_0x4767('0x8'));var jayson=require(_0x4767('0x9'));var client=jayson['client'][_0x4767('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47eff,_0x37d8bc,_0x3d05f7){return new BPromise(function(_0xff1107,_0x2d44ec){return client[_0x4767('0xb')](_0x47eff,_0x3d05f7)[_0x4767('0xc')](function(_0xe29a3b){logger['info'](_0x4767('0xd'),_0x37d8bc,_0x4767('0xe'));logger[_0x4767('0xf')](_0x4767('0x10'),_0x37d8bc,_0x4767('0xe'),JSON[_0x4767('0x11')](_0xe29a3b));if(_0xe29a3b['error']){if(_0xe29a3b[_0x4767('0x12')]['code']===0x1f4){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x37d8bc,_0xe29a3b[_0x4767('0x12')]['message']);return _0x2d44ec(_0xe29a3b[_0x4767('0x12')]['message']);}logger[_0x4767('0x12')]('WhatsappQueueReport,\x20%s,\x20%s',_0x37d8bc,_0xe29a3b[_0x4767('0x12')]['message']);return _0xff1107(_0xe29a3b['error'][_0x4767('0x13')]);}else{logger['info'](_0x4767('0xd'),_0x37d8bc,'request\x20sent');_0xff1107(_0xe29a3b[_0x4767('0x14')]['message']);}})[_0x4767('0x15')](function(_0x33d0ae){logger[_0x4767('0x12')](_0x4767('0xd'),_0x37d8bc,_0x33d0ae);_0x2d44ec(_0x33d0ae);});});}exports[_0x4767('0x16')]=function(_0x5813fb){var _0x297308=this;return new Promise(function(_0x1ca06b,_0x283f90){return db[_0x4767('0x17')][_0x4767('0x18')](_0x5813fb[_0x4767('0x19')],{'raw':_0x5813fb['options']?_0x5813fb[_0x4767('0x1a')][_0x4767('0x1b')]===undefined?!![]:![]:!![]})[_0x4767('0xc')](function(_0x4929c3){logger[_0x4767('0x1c')](_0x4767('0x16'),_0x5813fb);logger[_0x4767('0xf')](_0x4767('0x16'),_0x5813fb,JSON[_0x4767('0x11')](_0x4929c3));_0x1ca06b(_0x4929c3);})[_0x4767('0x15')](function(_0x3e712c){logger[_0x4767('0x12')](_0x4767('0x16'),_0x3e712c['message'],_0x5813fb);_0x283f90(_0x297308['error'](0x1f4,_0x3e712c['message']));});});};exports['UpdateWhatsappQueueReport']=function(_0x418fef){var _0x55bc2c=this;return new Promise(function(_0x49c0b4,_0x1bdbb0){return db['WhatsappQueueReport'][_0x4767('0x1d')](_0x418fef[_0x4767('0x19')],{'raw':_0x418fef['options']?_0x418fef[_0x4767('0x1a')][_0x4767('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x418fef[_0x4767('0x1a')]?_0x418fef[_0x4767('0x1a')][_0x4767('0x1e')]||null:null,'attributes':_0x418fef['options']?_0x418fef[_0x4767('0x1a')][_0x4767('0x1f')]||null:null,'limit':_0x418fef[_0x4767('0x1a')]?_0x418fef[_0x4767('0x1a')][_0x4767('0x20')]||null:null})[_0x4767('0xc')](function(_0x3aeec0){logger['info']('UpdateWhatsappQueueReport',_0x418fef);logger[_0x4767('0xf')](_0x4767('0x21'),_0x418fef,JSON['stringify'](_0x3aeec0));_0x49c0b4(_0x3aeec0);})[_0x4767('0x15')](function(_0x29a915){logger[_0x4767('0x12')](_0x4767('0x21'),_0x29a915[_0x4767('0x13')],_0x418fef);_0x1bdbb0(_0x55bc2c['error'](0x1f4,_0x29a915[_0x4767('0x13')]));});});};
\ No newline at end of file
index c961479..1f94b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1d3=['get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','/describe','describe'];(function(_0x6884ae,_0x4db047){var _0x2db264=function(_0x536d84){while(--_0x536d84){_0x6884ae['push'](_0x6884ae['shift']());}};_0x2db264(++_0x4db047);}(_0xa1d3,0x1c2));var _0x3a1d=function(_0x31f5b0,_0x3ceb60){_0x31f5b0=_0x31f5b0-0x0;var _0x25dfd3=_0xa1d3[_0x31f5b0];return _0x25dfd3;};'use strict';var multer=require(_0x3a1d('0x0'));var util=require(_0x3a1d('0x1'));var path=require(_0x3a1d('0x2'));var timeout=require(_0x3a1d('0x3'));var express=require(_0x3a1d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3a1d('0x5'));var interaction=require(_0x3a1d('0x6'));var config=require(_0x3a1d('0x7'));var controller=require(_0x3a1d('0x8'));router['get']('/',auth[_0x3a1d('0x9')](),controller['index']);router['get'](_0x3a1d('0xa'),auth[_0x3a1d('0x9')](),controller[_0x3a1d('0xb')]);router[_0x3a1d('0xc')](_0x3a1d('0xd'),auth[_0x3a1d('0x9')](),controller[_0x3a1d('0xe')]);router[_0x3a1d('0xf')]('/',auth[_0x3a1d('0x9')](),controller[_0x3a1d('0x10')]);router[_0x3a1d('0x11')]('/:id',auth[_0x3a1d('0x9')](),controller[_0x3a1d('0x12')]);router[_0x3a1d('0x13')](_0x3a1d('0xd'),auth['isAuthenticated'](),controller[_0x3a1d('0x14')]);module[_0x3a1d('0x15')]=router;
\ No newline at end of file
+var _0x0e6a=['post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','/describe','isAuthenticated','/:id','show'];(function(_0x1fa857,_0x20d17a){var _0x5f4420=function(_0x3e9169){while(--_0x3e9169){_0x1fa857['push'](_0x1fa857['shift']());}};_0x5f4420(++_0x20d17a);}(_0x0e6a,0x1e1));var _0xa0e6=function(_0x324f7d,_0x3a0184){_0x324f7d=_0x324f7d-0x0;var _0x158d1e=_0x0e6a[_0x324f7d];return _0x158d1e;};'use strict';var multer=require(_0xa0e6('0x0'));var util=require('util');var path=require(_0xa0e6('0x1'));var timeout=require(_0xa0e6('0x2'));var express=require(_0xa0e6('0x3'));var router=express[_0xa0e6('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa0e6('0x5'));var config=require(_0xa0e6('0x6'));var controller=require(_0xa0e6('0x7'));router[_0xa0e6('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa0e6('0x8')](_0xa0e6('0x9'),auth[_0xa0e6('0xa')](),controller['describe']);router[_0xa0e6('0x8')](_0xa0e6('0xb'),auth[_0xa0e6('0xa')](),controller[_0xa0e6('0xc')]);router[_0xa0e6('0xd')]('/',auth[_0xa0e6('0xa')](),controller[_0xa0e6('0xe')]);router[_0xa0e6('0xf')]('/:id',auth[_0xa0e6('0xa')](),controller[_0xa0e6('0x10')]);router[_0xa0e6('0x11')]('/:id',auth[_0xa0e6('0xa')](),controller['destroy']);module[_0xa0e6('0x12')]=router;
\ No newline at end of file
index eb46773..99e7b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['agent','queue','DATE','sequelize','exports','ENUM','account'];(function(_0x27d027,_0x8fbcb){var _0x3cdb48=function(_0x5575f0){while(--_0x5575f0){_0x27d027['push'](_0x27d027['shift']());}};_0x3cdb48(++_0x8fbcb);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x10b9ae,_0x4612e5){_0x10b9ae=_0x10b9ae-0x0;var _0x20ae4a=_0xf4f4[_0x10b9ae];return _0x20ae4a;};'use strict';var Sequelize=require(_0x4f4f('0x0'));module[_0x4f4f('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x4f4f('0x2')](_0x4f4f('0x3'),_0x4f4f('0x4'),_0x4f4f('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x4f4f('0x6')]}};
\ No newline at end of file
+var _0x253d=['agent','queue','DATE','sequelize'];(function(_0x42aaeb,_0x5bdc9a){var _0x468b9e=function(_0x23993a){while(--_0x23993a){_0x42aaeb['push'](_0x42aaeb['shift']());}};_0x468b9e(++_0x5bdc9a);}(_0x253d,0x1b3));var _0xd253=function(_0x1f64f4,_0x1f4efb){_0x1f64f4=_0x1f64f4-0x0;var _0x24fab0=_0x253d[_0x1f64f4];return _0x24fab0;};'use strict';var Sequelize=require(_0xd253('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('account',_0xd253('0x1'),_0xd253('0x2')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xd253('0x3')]}};
\ No newline at end of file
index 39cb378..f0240b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce14=['request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','WhatsappTransferReport','rows','catch','show','params','find','create','body','describe','rimraf','fast-json-patch'];(function(_0x4e94c9,_0x59afc1){var _0x30d003=function(_0x3e47a0){while(--_0x3e47a0){_0x4e94c9['push'](_0x4e94c9['shift']());}};_0x30d003(++_0x59afc1);}(_0xce14,0x17f));var _0x4ce1=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xce14[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4ce1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4ce1('0x1'));var rp=require(_0x4ce1('0x2'));var moment=require('moment');var BPromise=require(_0x4ce1('0x3'));var Mustache=require(_0x4ce1('0x4'));var util=require(_0x4ce1('0x5'));var path=require(_0x4ce1('0x6'));var sox=require(_0x4ce1('0x7'));var csv=require('to-csv');var ejs=require(_0x4ce1('0x8'));var fs=require('fs');var fs_extra=require(_0x4ce1('0x9'));var _=require(_0x4ce1('0xa'));var squel=require(_0x4ce1('0xb'));var crypto=require('crypto');var jsforce=require(_0x4ce1('0xc'));var deskjs=require(_0x4ce1('0xd'));var toCsv=require(_0x4ce1('0xe'));var querystring=require('querystring');var Papa=require(_0x4ce1('0xf'));var Redis=require(_0x4ce1('0x10'));var authService=require(_0x4ce1('0x11'));var qs=require(_0x4ce1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4ce1('0x13'));var logger=require(_0x4ce1('0x14'))(_0x4ce1('0x15'));var utils=require(_0x4ce1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4ce1('0x17'));var db=require(_0x4ce1('0x18'))['db'];function respondWithStatusCode(_0x1297d8,_0x16dade){_0x16dade=_0x16dade||0xcc;return function(_0x171b8f){if(_0x171b8f){return _0x1297d8[_0x4ce1('0x19')](_0x16dade);}return _0x1297d8[_0x4ce1('0x1a')](_0x16dade)[_0x4ce1('0x1b')]();};}function respondWithResult(_0x45f57e,_0x15407b){_0x15407b=_0x15407b||0xc8;return function(_0x321df9){if(_0x321df9){return _0x45f57e['status'](_0x15407b)[_0x4ce1('0x1c')](_0x321df9);}};}function respondWithFilteredResult(_0x4fa4bc,_0x172e2c){return function(_0x1bfd82){if(_0x1bfd82){var _0x1decc2=typeof _0x172e2c[_0x4ce1('0x1d')]==='undefined'&&typeof _0x172e2c[_0x4ce1('0x1e')]==='undefined';var _0x548452=_0x1bfd82['count'];var _0xafda9e=_0x1decc2?0x0:_0x172e2c[_0x4ce1('0x1d')];var _0x3105a9=_0x1decc2?_0x1bfd82[_0x4ce1('0x1f')]:_0x172e2c['offset']+_0x172e2c[_0x4ce1('0x1e')];var _0x48a4ed;if(_0x3105a9>=_0x548452){_0x3105a9=_0x548452;_0x48a4ed=0xc8;}else{_0x48a4ed=0xce;}_0x4fa4bc['status'](_0x48a4ed);return _0x4fa4bc[_0x4ce1('0x20')](_0x4ce1('0x21'),_0xafda9e+'-'+_0x3105a9+'/'+_0x548452)[_0x4ce1('0x1c')](_0x1bfd82);}return null;};}function patchUpdates(_0x44a166){return function(_0x1cb999){try{jsonpatch[_0x4ce1('0x22')](_0x1cb999,_0x44a166,!![]);}catch(_0x896adf){return BPromise[_0x4ce1('0x23')](_0x896adf);}return _0x1cb999['save']();};}function saveUpdates(_0x95457f,_0x3bce9d){return function(_0x5c0b4f){if(_0x5c0b4f){return _0x5c0b4f[_0x4ce1('0x24')](_0x95457f)[_0x4ce1('0x25')](function(_0x5aa1c2){return _0x5aa1c2;});}return null;};}function removeEntity(_0x3cf168,_0x2da360){return function(_0x4de527){if(_0x4de527){return _0x4de527['destroy']()['then'](function(){_0x3cf168[_0x4ce1('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41f6ed,_0x7e6cb3){return function(_0x53895a){if(!_0x53895a){_0x41f6ed[_0x4ce1('0x19')](0x194);}return _0x53895a;};}function handleError(_0x173c1c,_0x312486){_0x312486=_0x312486||0x1f4;return function(_0x7bca8c){logger[_0x4ce1('0x26')](_0x7bca8c[_0x4ce1('0x27')]);if(_0x7bca8c[_0x4ce1('0x28')]){delete _0x7bca8c[_0x4ce1('0x28')];}_0x173c1c[_0x4ce1('0x1a')](_0x312486)[_0x4ce1('0x29')](_0x7bca8c);};}exports[_0x4ce1('0x2a')]=function(_0x1fda83,_0x4e895e){var _0x161fc7={},_0x1ceb1e={},_0x1b9f3c={'count':0x0,'rows':[]};var _0x2002b9=_[_0x4ce1('0x2b')](db['WhatsappTransferReport'][_0x4ce1('0x2c')],function(_0x355f10){return{'name':_0x355f10[_0x4ce1('0x2d')],'type':_0x355f10[_0x4ce1('0x2e')][_0x4ce1('0x2f')]};});_0x1ceb1e[_0x4ce1('0x30')]=_['map'](_0x2002b9,_0x4ce1('0x28'));_0x1ceb1e[_0x4ce1('0x31')]=_[_0x4ce1('0x32')](_0x1fda83['query']);_0x1ceb1e['filters']=_[_0x4ce1('0x33')](_0x1ceb1e[_0x4ce1('0x30')],_0x1ceb1e[_0x4ce1('0x31')]);_0x161fc7[_0x4ce1('0x34')]=_[_0x4ce1('0x33')](_0x1ceb1e[_0x4ce1('0x30')],qs['fields'](_0x1fda83['query'][_0x4ce1('0x35')]));_0x161fc7[_0x4ce1('0x34')]=_0x161fc7['attributes'][_0x4ce1('0x36')]?_0x161fc7[_0x4ce1('0x34')]:_0x1ceb1e[_0x4ce1('0x30')];if(!_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x37')](_0x4ce1('0x38'))){_0x161fc7[_0x4ce1('0x1e')]=qs[_0x4ce1('0x1e')](_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x1e')]);_0x161fc7[_0x4ce1('0x1d')]=qs['offset'](_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x1d')]);}_0x161fc7[_0x4ce1('0x39')]=qs['sort'](_0x1fda83['query'][_0x4ce1('0x3a')]);_0x161fc7['where']=qs[_0x4ce1('0x3b')](_[_0x4ce1('0x3c')](_0x1fda83[_0x4ce1('0x31')],_0x1ceb1e[_0x4ce1('0x3b')]),_0x2002b9);if(_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x3d')]){_0x161fc7[_0x4ce1('0x3e')]=_['merge'](_0x161fc7['where'],{'$or':_[_0x4ce1('0x2b')](_0x2002b9,function(_0x27d5f4){if(_0x27d5f4[_0x4ce1('0x2e')]!==_0x4ce1('0x3f')){var _0x3a5dd5={};_0x3a5dd5[_0x27d5f4[_0x4ce1('0x28')]]={'$like':'%'+_0x1fda83['query'][_0x4ce1('0x3d')]+'%'};return _0x3a5dd5;}})});}_0x161fc7=_[_0x4ce1('0x40')]({},_0x161fc7,_0x1fda83[_0x4ce1('0x41')]);var _0x3f5d7d={'where':_0x161fc7[_0x4ce1('0x3e')]};return db['WhatsappTransferReport'][_0x4ce1('0x1f')](_0x3f5d7d)[_0x4ce1('0x25')](function(_0x2247c1){_0x1b9f3c[_0x4ce1('0x1f')]=_0x2247c1;if(_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x42')]){_0x161fc7[_0x4ce1('0x43')]=[{'all':!![]}];}return db[_0x4ce1('0x44')]['findAll'](_0x161fc7);})[_0x4ce1('0x25')](function(_0x17422){_0x1b9f3c[_0x4ce1('0x45')]=_0x17422;return _0x1b9f3c;})[_0x4ce1('0x25')](respondWithFilteredResult(_0x4e895e,_0x161fc7))[_0x4ce1('0x46')](handleError(_0x4e895e,null));};exports[_0x4ce1('0x47')]=function(_0x22643b,_0x37b9af){var _0x542d5c={'raw':!![],'where':{'id':_0x22643b[_0x4ce1('0x48')]['id']}},_0x44127a={};_0x44127a[_0x4ce1('0x30')]=_[_0x4ce1('0x32')](db[_0x4ce1('0x44')][_0x4ce1('0x2c')]);_0x44127a[_0x4ce1('0x31')]=_[_0x4ce1('0x32')](_0x22643b[_0x4ce1('0x31')]);_0x44127a['filters']=_[_0x4ce1('0x33')](_0x44127a[_0x4ce1('0x30')],_0x44127a[_0x4ce1('0x31')]);_0x542d5c['attributes']=_[_0x4ce1('0x33')](_0x44127a[_0x4ce1('0x30')],qs[_0x4ce1('0x35')](_0x22643b[_0x4ce1('0x31')]['fields']));_0x542d5c[_0x4ce1('0x34')]=_0x542d5c[_0x4ce1('0x34')][_0x4ce1('0x36')]?_0x542d5c[_0x4ce1('0x34')]:_0x44127a['model'];if(_0x22643b['query'][_0x4ce1('0x42')]){_0x542d5c['include']=[{'all':!![]}];}_0x542d5c=_[_0x4ce1('0x40')]({},_0x542d5c,_0x22643b[_0x4ce1('0x41')]);return db[_0x4ce1('0x44')][_0x4ce1('0x49')](_0x542d5c)[_0x4ce1('0x25')](handleEntityNotFound(_0x37b9af,null))[_0x4ce1('0x25')](respondWithResult(_0x37b9af,null))[_0x4ce1('0x46')](handleError(_0x37b9af,null));};exports[_0x4ce1('0x4a')]=function(_0x36d714,_0x4ba44c){return db[_0x4ce1('0x44')]['create'](_0x36d714[_0x4ce1('0x4b')],{})[_0x4ce1('0x25')](respondWithResult(_0x4ba44c,0xc9))['catch'](handleError(_0x4ba44c,null));};exports[_0x4ce1('0x24')]=function(_0x544cac,_0xea34e6){if(_0x544cac[_0x4ce1('0x4b')]['id']){delete _0x544cac[_0x4ce1('0x4b')]['id'];}return db['WhatsappTransferReport'][_0x4ce1('0x49')]({'where':{'id':_0x544cac[_0x4ce1('0x48')]['id']}})[_0x4ce1('0x25')](handleEntityNotFound(_0xea34e6,null))[_0x4ce1('0x25')](saveUpdates(_0x544cac[_0x4ce1('0x4b')],null))[_0x4ce1('0x25')](respondWithResult(_0xea34e6,null))[_0x4ce1('0x46')](handleError(_0xea34e6,null));};exports['destroy']=function(_0x1e67cb,_0x19c220){return db[_0x4ce1('0x44')]['find']({'where':{'id':_0x1e67cb[_0x4ce1('0x48')]['id']}})[_0x4ce1('0x25')](handleEntityNotFound(_0x19c220,null))[_0x4ce1('0x25')](removeEntity(_0x19c220,null))['catch'](handleError(_0x19c220,null));};exports[_0x4ce1('0x4c')]=function(_0x177da,_0x5efbbf){return db['WhatsappTransferReport'][_0x4ce1('0x4c')]()[_0x4ce1('0x25')](respondWithResult(_0x5efbbf,null))['catch'](handleError(_0x5efbbf,null));};
\ No newline at end of file
+var _0x751c=['name','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','VIRTUAL','options','count','includeAll','include','findAll','catch','params','merge','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','reject','save','update','then','destroy','error'];(function(_0x51da6c,_0x34507e){var _0x3fe312=function(_0x13b99d){while(--_0x13b99d){_0x51da6c['push'](_0x51da6c['shift']());}};_0x3fe312(++_0x34507e);}(_0x751c,0x69));var _0xc751=function(_0x457dcd,_0x1d8d3f){_0x457dcd=_0x457dcd-0x0;var _0x31465a=_0x751c[_0x457dcd];return _0x31465a;};'use strict';var emlformat=require(_0xc751('0x0'));var rimraf=require(_0xc751('0x1'));var zipdir=require(_0xc751('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc751('0x3'));var moment=require('moment');var BPromise=require(_0xc751('0x4'));var Mustache=require('mustache');var util=require(_0xc751('0x5'));var path=require(_0xc751('0x6'));var sox=require(_0xc751('0x7'));var csv=require(_0xc751('0x8'));var ejs=require(_0xc751('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc751('0xa'));var squel=require(_0xc751('0xb'));var crypto=require('crypto');var jsforce=require(_0xc751('0xc'));var deskjs=require(_0xc751('0xd'));var toCsv=require('to-csv');var querystring=require(_0xc751('0xe'));var Papa=require(_0xc751('0xf'));var Redis=require(_0xc751('0x10'));var authService=require(_0xc751('0x11'));var qs=require(_0xc751('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc751('0x13'));var utils=require('../../config/utils');var config=require(_0xc751('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc751('0x15'))['db'];function respondWithStatusCode(_0x21cfff,_0x4221ce){_0x4221ce=_0x4221ce||0xcc;return function(_0x490214){if(_0x490214){return _0x21cfff[_0xc751('0x16')](_0x4221ce);}return _0x21cfff['status'](_0x4221ce)[_0xc751('0x17')]();};}function respondWithResult(_0x497cf7,_0x3dafe4){_0x3dafe4=_0x3dafe4||0xc8;return function(_0x405e49){if(_0x405e49){return _0x497cf7[_0xc751('0x18')](_0x3dafe4)[_0xc751('0x19')](_0x405e49);}};}function respondWithFilteredResult(_0x17af51,_0x5a7d75){return function(_0x3ca29d){if(_0x3ca29d){var _0x184f0e=typeof _0x5a7d75[_0xc751('0x1a')]===_0xc751('0x1b')&&typeof _0x5a7d75[_0xc751('0x1c')]===_0xc751('0x1b');var _0x49411d=_0x3ca29d['count'];var _0x6884e0=_0x184f0e?0x0:_0x5a7d75[_0xc751('0x1a')];var _0x1e98f1=_0x184f0e?_0x3ca29d['count']:_0x5a7d75[_0xc751('0x1a')]+_0x5a7d75[_0xc751('0x1c')];var _0x5a074b;if(_0x1e98f1>=_0x49411d){_0x1e98f1=_0x49411d;_0x5a074b=0xc8;}else{_0x5a074b=0xce;}_0x17af51[_0xc751('0x18')](_0x5a074b);return _0x17af51['set']('Content-Range',_0x6884e0+'-'+_0x1e98f1+'/'+_0x49411d)[_0xc751('0x19')](_0x3ca29d);}return null;};}function patchUpdates(_0x55bd5c){return function(_0x2cef60){try{jsonpatch['apply'](_0x2cef60,_0x55bd5c,!![]);}catch(_0x350090){return BPromise[_0xc751('0x1d')](_0x350090);}return _0x2cef60[_0xc751('0x1e')]();};}function saveUpdates(_0x419794,_0x3ad3e7){return function(_0x3be4eb){if(_0x3be4eb){return _0x3be4eb[_0xc751('0x1f')](_0x419794)[_0xc751('0x20')](function(_0x154625){return _0x154625;});}return null;};}function removeEntity(_0x37c921,_0x4df4a4){return function(_0x5b9413){if(_0x5b9413){return _0x5b9413[_0xc751('0x21')]()['then'](function(){_0x37c921['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3210a4,_0x446d23){return function(_0xf61b04){if(!_0xf61b04){_0x3210a4['sendStatus'](0x194);}return _0xf61b04;};}function handleError(_0x2a3052,_0x394a7d){_0x394a7d=_0x394a7d||0x1f4;return function(_0x2f64b9){logger[_0xc751('0x22')](_0x2f64b9['stack']);if(_0x2f64b9[_0xc751('0x23')]){delete _0x2f64b9[_0xc751('0x23')];}_0x2a3052['status'](_0x394a7d)['send'](_0x2f64b9);};}exports[_0xc751('0x24')]=function(_0x212385,_0x37b573){var _0x4286e0={},_0xbf05e={},_0x3a5f89={'count':0x0,'rows':[]};var _0x1e3a07=_[_0xc751('0x25')](db[_0xc751('0x26')][_0xc751('0x27')],function(_0x4d01ab){return{'name':_0x4d01ab[_0xc751('0x28')],'type':_0x4d01ab[_0xc751('0x29')][_0xc751('0x2a')]};});_0xbf05e[_0xc751('0x2b')]=_[_0xc751('0x25')](_0x1e3a07,_0xc751('0x23'));_0xbf05e['query']=_[_0xc751('0x2c')](_0x212385[_0xc751('0x2d')]);_0xbf05e['filters']=_[_0xc751('0x2e')](_0xbf05e[_0xc751('0x2b')],_0xbf05e[_0xc751('0x2d')]);_0x4286e0[_0xc751('0x2f')]=_['intersection'](_0xbf05e['model'],qs[_0xc751('0x30')](_0x212385[_0xc751('0x2d')]['fields']));_0x4286e0[_0xc751('0x2f')]=_0x4286e0[_0xc751('0x2f')][_0xc751('0x31')]?_0x4286e0[_0xc751('0x2f')]:_0xbf05e[_0xc751('0x2b')];if(!_0x212385[_0xc751('0x2d')][_0xc751('0x32')](_0xc751('0x33'))){_0x4286e0[_0xc751('0x1c')]=qs[_0xc751('0x1c')](_0x212385['query'][_0xc751('0x1c')]);_0x4286e0['offset']=qs[_0xc751('0x1a')](_0x212385[_0xc751('0x2d')][_0xc751('0x1a')]);}_0x4286e0[_0xc751('0x34')]=qs['sort'](_0x212385['query'][_0xc751('0x35')]);_0x4286e0['where']=qs[_0xc751('0x36')](_['pick'](_0x212385[_0xc751('0x2d')],_0xbf05e[_0xc751('0x36')]),_0x1e3a07);if(_0x212385[_0xc751('0x2d')][_0xc751('0x37')]){_0x4286e0[_0xc751('0x38')]=_['merge'](_0x4286e0[_0xc751('0x38')],{'$or':_['map'](_0x1e3a07,function(_0x3e4377){if(_0x3e4377[_0xc751('0x29')]!==_0xc751('0x39')){var _0x38c35c={};_0x38c35c[_0x3e4377['name']]={'$like':'%'+_0x212385['query'][_0xc751('0x37')]+'%'};return _0x38c35c;}})});}_0x4286e0=_['merge']({},_0x4286e0,_0x212385[_0xc751('0x3a')]);var _0x35adde={'where':_0x4286e0[_0xc751('0x38')]};return db[_0xc751('0x26')]['count'](_0x35adde)[_0xc751('0x20')](function(_0x31c795){_0x3a5f89[_0xc751('0x3b')]=_0x31c795;if(_0x212385[_0xc751('0x2d')][_0xc751('0x3c')]){_0x4286e0[_0xc751('0x3d')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xc751('0x3e')](_0x4286e0);})['then'](function(_0x433d4d){_0x3a5f89['rows']=_0x433d4d;return _0x3a5f89;})[_0xc751('0x20')](respondWithFilteredResult(_0x37b573,_0x4286e0))[_0xc751('0x3f')](handleError(_0x37b573,null));};exports['show']=function(_0x35fb80,_0x132935){var _0x2b5a52={'raw':!![],'where':{'id':_0x35fb80[_0xc751('0x40')]['id']}},_0x4d30f9={};_0x4d30f9[_0xc751('0x2b')]=_['keys'](db[_0xc751('0x26')][_0xc751('0x27')]);_0x4d30f9[_0xc751('0x2d')]=_['keys'](_0x35fb80[_0xc751('0x2d')]);_0x4d30f9['filters']=_['intersection'](_0x4d30f9[_0xc751('0x2b')],_0x4d30f9[_0xc751('0x2d')]);_0x2b5a52[_0xc751('0x2f')]=_['intersection'](_0x4d30f9[_0xc751('0x2b')],qs[_0xc751('0x30')](_0x35fb80[_0xc751('0x2d')][_0xc751('0x30')]));_0x2b5a52[_0xc751('0x2f')]=_0x2b5a52[_0xc751('0x2f')]['length']?_0x2b5a52[_0xc751('0x2f')]:_0x4d30f9[_0xc751('0x2b')];if(_0x35fb80[_0xc751('0x2d')]['includeAll']){_0x2b5a52[_0xc751('0x3d')]=[{'all':!![]}];}_0x2b5a52=_[_0xc751('0x41')]({},_0x2b5a52,_0x35fb80[_0xc751('0x3a')]);return db[_0xc751('0x26')][_0xc751('0x42')](_0x2b5a52)['then'](handleEntityNotFound(_0x132935,null))[_0xc751('0x20')](respondWithResult(_0x132935,null))[_0xc751('0x3f')](handleError(_0x132935,null));};exports['create']=function(_0x544e79,_0x1273fe){return db[_0xc751('0x26')][_0xc751('0x43')](_0x544e79['body'],{})[_0xc751('0x20')](respondWithResult(_0x1273fe,0xc9))[_0xc751('0x3f')](handleError(_0x1273fe,null));};exports[_0xc751('0x1f')]=function(_0x1b3e07,_0x210095){if(_0x1b3e07[_0xc751('0x44')]['id']){delete _0x1b3e07['body']['id'];}return db[_0xc751('0x26')][_0xc751('0x42')]({'where':{'id':_0x1b3e07[_0xc751('0x40')]['id']}})['then'](handleEntityNotFound(_0x210095,null))['then'](saveUpdates(_0x1b3e07['body'],null))['then'](respondWithResult(_0x210095,null))['catch'](handleError(_0x210095,null));};exports[_0xc751('0x21')]=function(_0x3082f4,_0x192607){return db[_0xc751('0x26')][_0xc751('0x42')]({'where':{'id':_0x3082f4[_0xc751('0x40')]['id']}})[_0xc751('0x20')](handleEntityNotFound(_0x192607,null))['then'](removeEntity(_0x192607,null))[_0xc751('0x3f')](handleError(_0x192607,null));};exports[_0xc751('0x45')]=function(_0x3406dc,_0x2a8d42){return db[_0xc751('0x26')][_0xc751('0x45')]()[_0xc751('0x20')](respondWithResult(_0x2a8d42,null))['catch'](handleError(_0x2a8d42,null));};
\ No newline at end of file
index dac4f5b..7b80502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8095=['path','rimraf','../../config/environment','exports','define','WhatsappTransferReport','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8095,0x10b));var _0x5809=function(_0x19933a,_0x31b17f){_0x19933a=_0x19933a-0x0;var _0x1e72bf=_0x8095[_0x19933a];return _0x1e72bf;};'use strict';var _=require('lodash');var util=require(_0x5809('0x0'));var logger=require(_0x5809('0x1'))(_0x5809('0x2'));var moment=require(_0x5809('0x3'));var BPromise=require(_0x5809('0x4'));var rp=require(_0x5809('0x5'));var fs=require('fs');var path=require(_0x5809('0x6'));var rimraf=require(_0x5809('0x7'));var config=require(_0x5809('0x8'));var attributes=require('./whatsappTransferReport.attributes');module[_0x5809('0x9')]=function(_0x5997ea,_0x1023ae){return _0x5997ea[_0x5809('0xa')](_0x5809('0xb'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x5809('0xc'),'fields':[_0x5809('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe267=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./whatsappTransferReport.attributes','exports','define'];(function(_0x4cfe65,_0x561689){var _0x187a6f=function(_0x1178b5){while(--_0x1178b5){_0x4cfe65['push'](_0x4cfe65['shift']());}};_0x187a6f(++_0x561689);}(_0xe267,0x11b));var _0x7e26=function(_0x2f2377,_0x11cc21){_0x2f2377=_0x2f2377-0x0;var _0x441e6b=_0xe267[_0x2f2377];return _0x441e6b;};'use strict';var _=require(_0x7e26('0x0'));var util=require(_0x7e26('0x1'));var logger=require(_0x7e26('0x2'))(_0x7e26('0x3'));var moment=require(_0x7e26('0x4'));var BPromise=require(_0x7e26('0x5'));var rp=require(_0x7e26('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7e26('0x7'));var config=require('../../config/environment');var attributes=require(_0x7e26('0x8'));module[_0x7e26('0x9')]=function(_0x24373a,_0x64b793){return _0x24373a[_0x7e26('0xa')](_0x7e26('0xb'),attributes,{'tableName':_0x7e26('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x7e26('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index e33345f..0eed16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4e=['then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e4e,0x14e));var _0xe0e4=function(_0x39c4b6,_0x394a3b){_0x39c4b6=_0x39c4b6-0x0;var _0x2562ba=_0x0e4e[_0x39c4b6];return _0x2562ba;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe0e4('0x0'));var BPromise=require(_0xe0e4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe0e4('0x2'));var db=require(_0xe0e4('0x3'))['db'];var utils=require(_0xe0e4('0x4'));var logger=require('../../config/logger')(_0xe0e4('0x5'));var config=require(_0xe0e4('0x6'));var jayson=require(_0xe0e4('0x7'));var client=jayson[_0xe0e4('0x8')][_0xe0e4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x256e65,_0x4f4a8c,_0x1e4dc2){return new BPromise(function(_0xdeb5d2,_0x54c9be){return client[_0xe0e4('0xa')](_0x256e65,_0x1e4dc2)[_0xe0e4('0xb')](function(_0x5187bd){logger[_0xe0e4('0xc')](_0xe0e4('0xd'),_0x4f4a8c,_0xe0e4('0xe'));logger[_0xe0e4('0xf')](_0xe0e4('0x10'),_0x4f4a8c,_0xe0e4('0xe'),JSON[_0xe0e4('0x11')](_0x5187bd));if(_0x5187bd[_0xe0e4('0x12')]){if(_0x5187bd[_0xe0e4('0x12')][_0xe0e4('0x13')]===0x1f4){logger[_0xe0e4('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f4a8c,_0x5187bd[_0xe0e4('0x12')][_0xe0e4('0x14')]);return _0x54c9be(_0x5187bd[_0xe0e4('0x12')]['message']);}logger[_0xe0e4('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f4a8c,_0x5187bd[_0xe0e4('0x12')]['message']);return _0xdeb5d2(_0x5187bd[_0xe0e4('0x12')][_0xe0e4('0x14')]);}else{logger['info'](_0xe0e4('0xd'),_0x4f4a8c,_0xe0e4('0xe'));_0xdeb5d2(_0x5187bd[_0xe0e4('0x15')]['message']);}})[_0xe0e4('0x16')](function(_0x1ddf59){logger['error'](_0xe0e4('0xd'),_0x4f4a8c,_0x1ddf59);_0x54c9be(_0x1ddf59);});});}
\ No newline at end of file
+var _0x24bc=['lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x9d8be4,_0x30bcb1){var _0x193637=function(_0x1084c7){while(--_0x1084c7){_0x9d8be4['push'](_0x9d8be4['shift']());}};_0x193637(++_0x30bcb1);}(_0x24bc,0xc6));var _0xc24b=function(_0x494025,_0x1b7858){_0x494025=_0x494025-0x0;var _0x1a9415=_0x24bc[_0x494025];return _0x1a9415;};'use strict';var _=require(_0xc24b('0x0'));var util=require(_0xc24b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc24b('0x2'));var db=require(_0xc24b('0x3'))['db'];var utils=require(_0xc24b('0x4'));var logger=require(_0xc24b('0x5'))(_0xc24b('0x6'));var config=require('../../config/environment');var jayson=require(_0xc24b('0x7'));var client=jayson[_0xc24b('0x8')][_0xc24b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x17abaa,_0x2248e4,_0x27562a){return new BPromise(function(_0x4357d,_0x5aca82){return client[_0xc24b('0xa')](_0x17abaa,_0x27562a)[_0xc24b('0xb')](function(_0x2f1fa6){logger[_0xc24b('0xc')](_0xc24b('0xd'),_0x2248e4,'request\x20sent');logger['debug'](_0xc24b('0xe'),_0x2248e4,_0xc24b('0xf'),JSON[_0xc24b('0x10')](_0x2f1fa6));if(_0x2f1fa6[_0xc24b('0x11')]){if(_0x2f1fa6[_0xc24b('0x11')][_0xc24b('0x12')]===0x1f4){logger[_0xc24b('0x11')](_0xc24b('0xd'),_0x2248e4,_0x2f1fa6[_0xc24b('0x11')][_0xc24b('0x13')]);return _0x5aca82(_0x2f1fa6['error']['message']);}logger[_0xc24b('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x2248e4,_0x2f1fa6[_0xc24b('0x11')][_0xc24b('0x13')]);return _0x4357d(_0x2f1fa6[_0xc24b('0x11')]['message']);}else{logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x2248e4,'request\x20sent');_0x4357d(_0x2f1fa6[_0xc24b('0x14')][_0xc24b('0x13')]);}})[_0xc24b('0x15')](function(_0x3850f2){logger[_0xc24b('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x2248e4,_0x3850f2);_0x5aca82(_0x3850f2);});});}
\ No newline at end of file
index 34eeafc..b27a27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32be=['None','default','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./rpc','./config/environment','./config/pm2','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start','Online\x20apps:','filter','online','name','join','Offline\x20apps:'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x32be,0x125));var _0xe32b=function(_0x1ca29f,_0x318ac5){_0x1ca29f=_0x1ca29f-0x0;var _0x576c3b=_0x32be[_0x1ca29f];return _0x576c3b;};'use strict';var _=require(_0xe32b('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0xe32b('0x1'));var config=require(_0xe32b('0x2'));var logger=require('./config/logger')('app');var pm2=require(_0xe32b('0x3'));var pm2Config=require('./config/pm2/config');var schedule=require('./config/schedule');var chat=require(_0xe32b('0x4'));var whatsapp=require(_0xe32b('0x5'));var transcribe=require(_0xe32b('0x6'));function main(){return mysqldb['db'][_0xe32b('0x7')][_0xe32b('0x8')]()[_0xe32b('0x9')](function(){return rpc[_0xe32b('0xa')]();})[_0xe32b('0x9')](function(_0x1b6b7e){logger[_0xe32b('0xb')](_0x1b6b7e);return chat[_0xe32b('0xc')]();})[_0xe32b('0x9')](function(){return whatsapp['start']();})[_0xe32b('0x9')](function(){return schedule['start']();})[_0xe32b('0x9')](function(){return transcribe[_0xe32b('0xc')]();})[_0xe32b('0x9')](function(_0x26d7dd){logger[_0xe32b('0xb')](_0x26d7dd);return pm2[_0xe32b('0xc')](pm2Config);})[_0xe32b('0x9')](function(_0x587fee){logger[_0xe32b('0xb')](_0xe32b('0xd'),_['map'](_[_0xe32b('0xe')](_0x587fee,{'status':_0xe32b('0xf')}),_0xe32b('0x10'))[_0xe32b('0x11')]());logger[_0xe32b('0xb')](_0xe32b('0x12'),_['map'](_[_0xe32b('0xe')](_0x587fee,function(_0x51cf1b){return _0x51cf1b['status']!==_0xe32b('0xf');}),_0xe32b('0x10'))[_0xe32b('0x11')]()||_0xe32b('0x13'));config['seedDB']&&require('./config/seedDB')[_0xe32b('0x14')]();require('./config/license')[_0xe32b('0x14')]();})[_0xe32b('0x15')](function(_0x78d1b9){logger['error'](_0xe32b('0x16'),_0x78d1b9);process[_0xe32b('0x17')](0x1);});}main();
\ No newline at end of file
+var _0x38ea=['./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','info','start','Online\x20apps:','filter','online','name','Offline\x20apps:','map','join','None','seedDB','./config/seedDB','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x38ea,0xf5));var _0xa38e=function(_0x2112b1,_0x58ca79){_0x2112b1=_0x2112b1-0x0;var _0x4a7a01=_0x38ea[_0x2112b1];return _0x4a7a01;};'use strict';var _=require(_0xa38e('0x0'));var mysqldb=require(_0xa38e('0x1'));var rpc=require(_0xa38e('0x2'));var config=require(_0xa38e('0x3'));var logger=require(_0xa38e('0x4'))('app');var pm2=require(_0xa38e('0x5'));var pm2Config=require(_0xa38e('0x6'));var schedule=require(_0xa38e('0x7'));var chat=require(_0xa38e('0x8'));var whatsapp=require(_0xa38e('0x9'));var transcribe=require(_0xa38e('0xa'));function main(){return mysqldb['db'][_0xa38e('0xb')][_0xa38e('0xc')]()[_0xa38e('0xd')](function(){return rpc['listen']();})['then'](function(_0x24d66e){logger[_0xa38e('0xe')](_0x24d66e);return chat[_0xa38e('0xf')]();})['then'](function(){return whatsapp['start']();})[_0xa38e('0xd')](function(){return schedule[_0xa38e('0xf')]();})[_0xa38e('0xd')](function(){return transcribe[_0xa38e('0xf')]();})[_0xa38e('0xd')](function(_0x545fc4){logger['info'](_0x545fc4);return pm2[_0xa38e('0xf')](pm2Config);})[_0xa38e('0xd')](function(_0x2e91b0){logger['info'](_0xa38e('0x10'),_['map'](_[_0xa38e('0x11')](_0x2e91b0,{'status':_0xa38e('0x12')}),_0xa38e('0x13'))['join']());logger['info'](_0xa38e('0x14'),_[_0xa38e('0x15')](_[_0xa38e('0x11')](_0x2e91b0,function(_0x5a1d1e){return _0x5a1d1e['status']!==_0xa38e('0x12');}),_0xa38e('0x13'))[_0xa38e('0x16')]()||_0xa38e('0x17'));config[_0xa38e('0x18')]&&require(_0xa38e('0x19'))['default']();require('./config/license')[_0xa38e('0x1a')]();})[_0xa38e('0x1b')](function(_0x308288){logger[_0xa38e('0x1c')](_0xa38e('0x1d'),_0x308288);process[_0xa38e('0x1e')](0x1);});}main();
\ No newline at end of file
index d57fb8b..46ffeca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b24=['options','promisify','verify','randomBytes','toString','hex','floor','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','crypto','bluebird','util','moment','session','role','fullname','internal','email','userpic','permissions','voicePause','chatPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadOmnichannelInteractions','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','params','closed','disposition','then','status','unmanaged','Unmanaged.','Forbidden.','headers','authorization','startsWith','Basic','find','name','authenticate','pass','json','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','query','Setting','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','catch','User','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isMiddleware','signToken','setTokenCookie','redirect','/dashboards/general','send','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~!@#$%^&-_=+[{]}.','split','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','decryptString','length','join','sign','secrets','payload'];(function(_0x3d8ca8,_0x1a9764){var _0x517e45=function(_0x641ad9){while(--_0x641ad9){_0x3d8ca8['push'](_0x3d8ca8['shift']());}};_0x517e45(++_0x1a9764);}(_0x6b24,0x100));var _0x46b2=function(_0x4108e9,_0x58da63){_0x4108e9=_0x4108e9-0x0;var _0x369cc4=_0x6b24[_0x4108e9];return _0x369cc4;};'use strict';var db=require(_0x46b2('0x0'))['db'];var config=require(_0x46b2('0x1'));var hardwareConf=require(_0x46b2('0x2'));var licenseUtil=require(_0x46b2('0x3'));var encryptor=require('../encryptor');var _=require(_0x46b2('0x4'));var jwt=require(_0x46b2('0x5'));var expressJwt=require(_0x46b2('0x6'));var compose=require(_0x46b2('0x7'));var basicAuth=require('basic-auth');var crypto=require(_0x46b2('0x8'));var BPromise=require(_0x46b2('0x9'));var util=require(_0x46b2('0xa'));var moment=require(_0x46b2('0xb'));var validateJwt=expressJwt({'secret':config['secrets'][_0x46b2('0xc')]});var userAttributes=['id',_0x46b2('0xd'),_0x46b2('0xe'),'name',_0x46b2('0xf'),_0x46b2('0x10'),_0x46b2('0x11'),_0x46b2('0x12'),'md5secret',_0x46b2('0x13'),_0x46b2('0x14'),'mailPause','faxPause',_0x46b2('0x15'),_0x46b2('0x16'),_0x46b2('0x17'),_0x46b2('0x18'),'lastLoginAt',_0x46b2('0x19'),_0x46b2('0x1a'),_0x46b2('0x1b'),_0x46b2('0x1c'),_0x46b2('0x1d'),_0x46b2('0x1e'),_0x46b2('0x1f'),_0x46b2('0x20'),_0x46b2('0x21'),'phoneBarEnableDtmfTone',_0x46b2('0x22'),_0x46b2('0x23'),_0x46b2('0x24'),_0x46b2('0x25'),'phoneBarRemoteControlPort',_0x46b2('0x26'),_0x46b2('0x27'),_0x46b2('0x28'),_0x46b2('0x29'),_0x46b2('0x2a'),_0x46b2('0x2b'),'downloadVoiceRecordings',_0x46b2('0x2c'),'downloadAttachments'];exports[_0x46b2('0x2d')]=function(){return this[_0x46b2('0x2e')](!![])[_0x46b2('0x2f')](function(_0x2a489a,_0x3a7935,_0x3d60d4){if(_0x2a489a[_0x46b2('0x30')]){_0x3d60d4();}else{return db['ChatInteraction'][_0x46b2('0x31')]({'where':{'id':_0x2a489a[_0x46b2('0x32')]['id']},'attributes':['id',_0x46b2('0x33'),_0x46b2('0x34')],'raw':!![]})[_0x46b2('0x35')](function(_0x29c8ce){if(_0x29c8ce&&_0x29c8ce[_0x46b2('0x33')]){return _0x3a7935[_0x46b2('0x36')](_0x29c8ce[_0x46b2('0x34')]==='unmanaged'?0x195:0x193)['json']({'message':_0x29c8ce[_0x46b2('0x34')]===_0x46b2('0x37')?_0x46b2('0x38'):_0x46b2('0x39')});}else{_0x3d60d4();}})['catch'](function(_0x41bc0a){_0x3d60d4(_0x41bc0a);});}});};exports[_0x46b2('0x2e')]=function isAuthenticated(_0x2db8ba){return compose()[_0x46b2('0x2f')](function(_0x43b54b,_0x4b26bd,_0x48728f){var _0x344ff6;if(_0x43b54b[_0x46b2('0x3a')][_0x46b2('0x3b')]){if(_[_0x46b2('0x3c')](_0x43b54b[_0x46b2('0x3a')]['authorization'],_0x46b2('0x3d'))){var _0x2780aa=basicAuth(_0x43b54b);db['User'][_0x46b2('0x3e')]({'where':{'name':_0x2780aa[_0x46b2('0x3f')]}})[_0x46b2('0x35')](function(_0x5ad77d){if(!_0x5ad77d||!_0x5ad77d[_0x46b2('0x40')](_0x2780aa[_0x46b2('0x41')])){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x43')});}_0x43b54b['user']={'id':_0x5ad77d['id']};_0x48728f();})['catch'](function(_0x565b51){_0x48728f(_0x565b51);});}else if(_[_0x46b2('0x3c')](_0x43b54b['headers'][_0x46b2('0x3b')],_0x46b2('0x44'))){validateJwt(_0x43b54b,_0x4b26bd,_0x48728f);}else{if(_0x2db8ba){_0x48728f();}else{return _0x4b26bd[_0x46b2('0x36')](0x193)[_0x46b2('0x42')]({'message':_0x46b2('0x45')});}}}else if(_0x43b54b['query'][_0x46b2('0x46')]){try{var _0x44b646={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x46b2('0x47')]()};verifyJwt(_0x43b54b[_0x46b2('0x48')][_0x46b2('0x46')],_0x44b646)['then'](function(_0x582577){return db['User']['find']({'where':{'id':_0x582577['sub']}})[_0x46b2('0x35')](function(_0x1d8656){_0x344ff6=_0x1d8656;return db[_0x46b2('0x49')][_0x46b2('0x31')]({'where':{'id':0x1},'attributes':[_0x46b2('0x4a'),_0x46b2('0x4b')],'raw':!![]});})[_0x46b2('0x35')](function(_0x379ff5){if(!_0x344ff6||!_['isEqual'](_0x344ff6[_0x46b2('0x4c')],_0x582577[_0x46b2('0x4d')])){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4e')});}if(_0x344ff6['disabled']){return _0x4b26bd[_0x46b2('0x36')](0x191)['json']({'message':_0x46b2('0x4f')});}if(_0x344ff6[_0x46b2('0x50')]){if(_0x379ff5['blockDuration']>0x0){if(moment(_0x344ff6[_0x46b2('0x51')])[_0x46b2('0x52')](_0x379ff5[_0x46b2('0x4b')],_0x46b2('0x53'))>moment()){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4f')});}}else{return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4f')});}}_0x43b54b[_0x46b2('0x30')]={'id':_0x344ff6['id']};_0x48728f();});})[_0x46b2('0x54')](function(){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4f')});});}catch(_0x8b3ffc){_0x48728f(_0x8b3ffc);}}else if(_0x2db8ba){_0x48728f();}else{return _0x4b26bd['status'](0x193)['json']({'message':_0x46b2('0x45')});}})[_0x46b2('0x2f')](function(_0x1baf63,_0x160846,_0x191a0f){if(_0x1baf63['user']){db[_0x46b2('0x55')][_0x46b2('0x3e')]({'where':{'id':_0x1baf63[_0x46b2('0x30')]['id']},'attributes':userAttributes})[_0x46b2('0x35')](function(_0x373be6){if(!_0x373be6){return _0x160846['status'](0x194)[_0x46b2('0x42')]({'message':_0x46b2('0x56')});}_0x1baf63['user']=_0x373be6;_0x191a0f();})[_0x46b2('0x54')](function(_0x149b9f){_0x191a0f(_0x149b9f);});}else if(_0x2db8ba){_0x191a0f();}else{return _0x160846[_0x46b2('0x36')](0x194)[_0x46b2('0x42')]({'message':_0x46b2('0x57')});}});};exports[_0x46b2('0x58')]=function canUpdate(){return compose()[_0x46b2('0x2f')](function(_0xbb664c,_0x26d422,_0x1f05c3){return licenseUtil[_0x46b2('0x59')]()[_0x46b2('0x35')](function(_0x33dc1e){if(_0x33dc1e['update']){_0x1f05c3();}else{return _0x26d422[_0x46b2('0x36')](0x193)[_0x46b2('0x42')]({'message':_0x46b2('0x5a')});}})[_0x46b2('0x54')](function(_0x21ee53){_0x1f05c3(_0x21ee53);});});};exports[_0x46b2('0x5b')]=function(_0x75e128,_0x1857a9,_0x88fc0c){_0x75e128[_0x46b2('0x5b')]=!![];return _0x88fc0c();};exports[_0x46b2('0x5c')]=function signToken(_0x541fc9){return signJwt(_0x541fc9);};exports[_0x46b2('0x5d')]=function(_0x100a0e,_0x5b9869){if(!_0x100a0e[_0x46b2('0x30')]){return _0x5b9869[_0x46b2('0x36')](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x2888a5={'payload':{'id':_0x100a0e['user']['id'],'role':_0x100a0e[_0x46b2('0x30')][_0x46b2('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x2888a5)[_0x46b2('0x35')](function(_0x47de5f){_0x5b9869['cookie']('motion.token',_0x47de5f);_0x5b9869[_0x46b2('0x5e')](_0x46b2('0x5f'));})[_0x46b2('0x54')](function(_0x355238){return _0x5b9869[_0x46b2('0x36')](0x1f4)[_0x46b2('0x60')](_0x355238);});};exports['retrieveApiKey']=function(_0x3618f4){if(_['isNil'](_0x3618f4[_0x46b2('0x4c')])||_[_0x46b2('0x61')](_0x3618f4[_0x46b2('0x62')])){return null;}else{return createJwt(_0x3618f4);}};exports['generateApiKey']=function(_0x116af2){_0x116af2[_0x46b2('0x4c')]=generateNonce();_0x116af2[_0x46b2('0x62')]=generateIssuedAt();return createJwt(_0x116af2);};exports[_0x46b2('0x63')]=function(_0x1235a7,_0x31965f){var _0x1e204c=_0x1235a7[_0x46b2('0x48')][_0x46b2('0x46')];if(_0x1e204c){var _0xf8b028={'nonce':_0x31965f[_0x46b2('0x4c')],'iat':_0x31965f[_0x46b2('0x62')],'audience':hardwareConf[_0x46b2('0x47')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x1e204c,_0xf8b028)[_0x46b2('0x35')](function(){return generateApiKey(_0x31965f);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x46b2('0x64')]=function(_0x581617){var _0x383acd=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x383acd[_0x46b2('0x65')](_0x581617))throw new db[(_0x46b2('0x66'))][(_0x46b2('0x67'))](_0x46b2('0x68'));return;};exports['validatePasswordHistory']=function(_0x1f2dfa,_0x5e2b10,_0x162518){var _0x20dfc8=encryptor['decryptString'](_0x5e2b10)[_0x46b2('0x69')](',');for(var _0x6c8746=0x0;_0x6c8746<_0x162518;_0x6c8746++){if(!_0x20dfc8[_0x6c8746])break;if(_0x1f2dfa['toLowerCase']()===_0x20dfc8[_0x6c8746]['toLowerCase']()){var _0x1f7038=util[_0x46b2('0x6a')](_0x46b2('0x6b'),_0x162518);if(_0x162518===0x1){_0x1f7038=_0x46b2('0x6c');}throw new db['Sequelize'][(_0x46b2('0x67'))](_0x1f7038);}}return;};exports[_0x46b2('0x6d')]=function(_0x1983a4,_0x5ebef4){var _0x4ca4d=_0x5ebef4?encryptor[_0x46b2('0x6e')](_0x5ebef4)[_0x46b2('0x69')](','):[];if(_0x4ca4d[_0x46b2('0x6f')]===0x5){_0x4ca4d['splice'](-0x1,0x1);}_0x4ca4d['unshift'](_0x1983a4);return encryptor['encryptString'](_0x4ca4d[_0x46b2('0x70')](','));};function signJwt(_0x34dc07){var _0x103ebd=BPromise['promisify'](jwt[_0x46b2('0x71')],{'context':jwt});var _0x46e44d=_0x34dc07['secret']||config[_0x46b2('0x72')]['session'];return new BPromise(function(_0x4eb147,_0xfc3d5e){_0x103ebd(_0x34dc07[_0x46b2('0x73')],_0x46e44d,_0x34dc07[_0x46b2('0x74')])[_0x46b2('0x35')](function(_0x4100bb){_0x4eb147(_0x4100bb);})[_0x46b2('0x54')](function(_0x381ed7){_0xfc3d5e(_0x381ed7);});});}function verifyJwt(_0x37e308,_0x29b312,_0x2ecddd){var _0x3bddbc=BPromise[_0x46b2('0x75')](jwt[_0x46b2('0x76')],{'context':jwt});var _0x5972d1=_0x2ecddd||config[_0x46b2('0x72')]['session'];return new BPromise(function(_0xe334a6,_0x13a892){_0x3bddbc(_0x37e308,_0x5972d1,_0x29b312)[_0x46b2('0x35')](function(_0x4a1c10){_0xe334a6(_0x4a1c10);})['catch'](function(_0x10a0cd){_0x13a892(_0x10a0cd);});});}function generateNonce(){return crypto[_0x46b2('0x77')](0x10)[_0x46b2('0x78')](_0x46b2('0x79'));}function generateIssuedAt(){return Math[_0x46b2('0x7a')](Date['now']()/0x3e8)[_0x46b2('0x78')]();}function createJwt(_0x3c80f0){var _0x453dd0={'payload':{'iat':_0x3c80f0[_0x46b2('0x62')],'nonce':_0x3c80f0['apiKeyNonce']},'options':{'algorithm':_0x46b2('0x7b'),'subject':_0x3c80f0['id']['toString'](),'issuer':hardwareConf[_0x46b2('0x47')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x453dd0)[_0x46b2('0x35')](function(_0x450628){return{'iat':_0x3c80f0[_0x46b2('0x62')],'nonce':_0x3c80f0[_0x46b2('0x4c')],'token':_0x450628};});}
\ No newline at end of file
+var _0x1f73=['mailPause','faxPause','smsPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','user','params','disposition','then','status','json','unmanaged','Unmanaged.','Forbidden.','catch','use','headers','authorization','startsWith','User','find','name','authenticate','pass','Wrong\x20credentials.','query','apikey','getUuid','Setting','allowedLoginAttempts','blockDuration','nonce','disabled','blocked','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isMiddleware','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','generateApiKey','apiKeyNonce','apiKeyIat','regenerateApiKey','validatePasswordPattern','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~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','encryptString','join','sign','secret','session','payload','verify','toString','floor','HS512','../../config/environment','../../config/license/hardware','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','role','fullname','email','userpic','permissions','md5secret','voicePause','chatPause'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x1f73,0x1cc));var _0x31f7=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1f73[_0x57b54c];return _0x59cc19;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x31f7('0x0'));var hardwareConf=require(_0x31f7('0x1'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0x31f7('0x2'));var _=require('lodash');var jwt=require(_0x31f7('0x3'));var expressJwt=require(_0x31f7('0x4'));var compose=require(_0x31f7('0x5'));var basicAuth=require(_0x31f7('0x6'));var crypto=require(_0x31f7('0x7'));var BPromise=require(_0x31f7('0x8'));var util=require(_0x31f7('0x9'));var moment=require(_0x31f7('0xa'));var validateJwt=expressJwt({'secret':config[_0x31f7('0xb')]['session']});var userAttributes=['id',_0x31f7('0xc'),_0x31f7('0xd'),'name','internal',_0x31f7('0xe'),_0x31f7('0xf'),_0x31f7('0x10'),_0x31f7('0x11'),_0x31f7('0x12'),_0x31f7('0x13'),_0x31f7('0x14'),_0x31f7('0x15'),_0x31f7('0x16'),'openchannelPause',_0x31f7('0x17'),_0x31f7('0x18'),_0x31f7('0x19'),_0x31f7('0x1a'),_0x31f7('0x1b'),'allowmessenger',_0x31f7('0x1c'),_0x31f7('0x1d'),_0x31f7('0x1e'),_0x31f7('0x1f'),'phoneBarDnd',_0x31f7('0x20'),_0x31f7('0x21'),_0x31f7('0x22'),_0x31f7('0x23'),_0x31f7('0x24'),_0x31f7('0x25'),_0x31f7('0x26'),_0x31f7('0x27'),_0x31f7('0x28'),_0x31f7('0x29'),_0x31f7('0x2a'),'settingsEnabled','wssPort',_0x31f7('0x2b'),_0x31f7('0x2c'),_0x31f7('0x2d')];exports[_0x31f7('0x2e')]=function(){return this[_0x31f7('0x2f')](!![])['use'](function(_0x523bcb,_0x3ab585,_0x2042d8){if(_0x523bcb[_0x31f7('0x30')]){_0x2042d8();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x523bcb[_0x31f7('0x31')]['id']},'attributes':['id','closed',_0x31f7('0x32')],'raw':!![]})[_0x31f7('0x33')](function(_0x396d25){if(_0x396d25&&_0x396d25['closed']){return _0x3ab585[_0x31f7('0x34')](_0x396d25[_0x31f7('0x32')]==='unmanaged'?0x195:0x193)[_0x31f7('0x35')]({'message':_0x396d25[_0x31f7('0x32')]===_0x31f7('0x36')?_0x31f7('0x37'):_0x31f7('0x38')});}else{_0x2042d8();}})[_0x31f7('0x39')](function(_0x3ea2fd){_0x2042d8(_0x3ea2fd);});}});};exports[_0x31f7('0x2f')]=function isAuthenticated(_0x87d746){return compose()[_0x31f7('0x3a')](function(_0x24de39,_0xbaaf11,_0x3d848b){var _0x16943f;if(_0x24de39[_0x31f7('0x3b')][_0x31f7('0x3c')]){if(_[_0x31f7('0x3d')](_0x24de39[_0x31f7('0x3b')]['authorization'],'Basic')){var _0x3cf484=basicAuth(_0x24de39);db[_0x31f7('0x3e')][_0x31f7('0x3f')]({'where':{'name':_0x3cf484[_0x31f7('0x40')]}})[_0x31f7('0x33')](function(_0x9ed6dd){if(!_0x9ed6dd||!_0x9ed6dd[_0x31f7('0x41')](_0x3cf484[_0x31f7('0x42')])){return _0xbaaf11[_0x31f7('0x34')](0x191)['json']({'message':_0x31f7('0x43')});}_0x24de39[_0x31f7('0x30')]={'id':_0x9ed6dd['id']};_0x3d848b();})['catch'](function(_0x563a2e){_0x3d848b(_0x563a2e);});}else if(_[_0x31f7('0x3d')](_0x24de39['headers'][_0x31f7('0x3c')],'Bearer')){validateJwt(_0x24de39,_0xbaaf11,_0x3d848b);}else{if(_0x87d746){_0x3d848b();}else{return _0xbaaf11[_0x31f7('0x34')](0x193)[_0x31f7('0x35')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x24de39[_0x31f7('0x44')][_0x31f7('0x45')]){try{var _0x39b396={'audience':hardwareConf[_0x31f7('0x46')](),'issuer':hardwareConf[_0x31f7('0x46')]()};verifyJwt(_0x24de39[_0x31f7('0x44')][_0x31f7('0x45')],_0x39b396)[_0x31f7('0x33')](function(_0x33e667){return db[_0x31f7('0x3e')][_0x31f7('0x3f')]({'where':{'id':_0x33e667['sub']}})[_0x31f7('0x33')](function(_0x18a20b){_0x16943f=_0x18a20b;return db[_0x31f7('0x47')]['findOne']({'where':{'id':0x1},'attributes':[_0x31f7('0x48'),_0x31f7('0x49')],'raw':!![]});})[_0x31f7('0x33')](function(_0x2b3ef8){if(!_0x16943f||!_['isEqual'](_0x16943f['apiKeyNonce'],_0x33e667[_0x31f7('0x4a')])){return _0xbaaf11[_0x31f7('0x34')](0x191)[_0x31f7('0x35')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x16943f[_0x31f7('0x4b')]){return _0xbaaf11[_0x31f7('0x34')](0x191)[_0x31f7('0x35')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x16943f[_0x31f7('0x4c')]){if(_0x2b3ef8[_0x31f7('0x49')]>0x0){if(moment(_0x16943f['blockedAt'])['add'](_0x2b3ef8[_0x31f7('0x49')],_0x31f7('0x4d'))>moment()){return _0xbaaf11['status'](0x191)[_0x31f7('0x35')]({'message':_0x31f7('0x4e')});}}else{return _0xbaaf11[_0x31f7('0x34')](0x191)[_0x31f7('0x35')]({'message':_0x31f7('0x4e')});}}_0x24de39[_0x31f7('0x30')]={'id':_0x16943f['id']};_0x3d848b();});})[_0x31f7('0x39')](function(){return _0xbaaf11[_0x31f7('0x34')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x4fe19d){_0x3d848b(_0x4fe19d);}}else if(_0x87d746){_0x3d848b();}else{return _0xbaaf11[_0x31f7('0x34')](0x193)[_0x31f7('0x35')]({'message':'Unknown\x20authorization\x20format'});}})['use'](function(_0x4e929c,_0x1e78ea,_0x4c2315){if(_0x4e929c[_0x31f7('0x30')]){db[_0x31f7('0x3e')][_0x31f7('0x3f')]({'where':{'id':_0x4e929c[_0x31f7('0x30')]['id']},'attributes':userAttributes})[_0x31f7('0x33')](function(_0x54b847){if(!_0x54b847){return _0x1e78ea[_0x31f7('0x34')](0x194)['json']({'message':_0x31f7('0x4f')});}_0x4e929c[_0x31f7('0x30')]=_0x54b847;_0x4c2315();})[_0x31f7('0x39')](function(_0x5495be){_0x4c2315(_0x5495be);});}else if(_0x87d746){_0x4c2315();}else{return _0x1e78ea[_0x31f7('0x34')](0x194)['json']({'message':_0x31f7('0x50')});}});};exports[_0x31f7('0x51')]=function canUpdate(){return compose()[_0x31f7('0x3a')](function(_0x4a00f7,_0x379981,_0x5b73d9){return licenseUtil[_0x31f7('0x52')]()[_0x31f7('0x33')](function(_0x151aec){if(_0x151aec['update']){_0x5b73d9();}else{return _0x379981['status'](0x193)[_0x31f7('0x35')]({'message':_0x31f7('0x53')});}})['catch'](function(_0x4212a9){_0x5b73d9(_0x4212a9);});});};exports[_0x31f7('0x54')]=function(_0x105aea,_0x4d8a91,_0x154e5e){_0x105aea[_0x31f7('0x54')]=!![];return _0x154e5e();};exports['signToken']=function signToken(_0x38173b){return signJwt(_0x38173b);};exports['setTokenCookie']=function(_0x1fe675,_0x354c50){if(!_0x1fe675[_0x31f7('0x30')]){return _0x354c50[_0x31f7('0x34')](0x194)['json']({'message':_0x31f7('0x55')});}var _0x1a1ad9={'payload':{'id':_0x1fe675['user']['id'],'role':_0x1fe675['user']['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x1a1ad9)['then'](function(_0x2dd8cf){_0x354c50[_0x31f7('0x56')](_0x31f7('0x57'),_0x2dd8cf);_0x354c50[_0x31f7('0x58')](_0x31f7('0x59'));})[_0x31f7('0x39')](function(_0x1b2793){return _0x354c50[_0x31f7('0x34')](0x1f4)[_0x31f7('0x5a')](_0x1b2793);});};exports[_0x31f7('0x5b')]=function(_0x3f5b4f){if(_['isNil'](_0x3f5b4f['apiKeyNonce'])||_[_0x31f7('0x5c')](_0x3f5b4f['apiKeyIat'])){return null;}else{return createJwt(_0x3f5b4f);}};exports[_0x31f7('0x5d')]=function(_0x59f65b){_0x59f65b[_0x31f7('0x5e')]=generateNonce();_0x59f65b[_0x31f7('0x5f')]=generateIssuedAt();return createJwt(_0x59f65b);};exports[_0x31f7('0x60')]=function(_0x57fcde,_0xbe97a6){var _0x4e83ea=_0x57fcde[_0x31f7('0x44')][_0x31f7('0x45')];if(_0x4e83ea){var _0x799372={'nonce':_0xbe97a6[_0x31f7('0x5e')],'iat':_0xbe97a6['apiKeyIat'],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x4e83ea,_0x799372)[_0x31f7('0x33')](function(){return generateApiKey(_0xbe97a6);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x31f7('0x61')]=function(_0x5a4b12){var _0x3664da=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3664da['test'](_0x5a4b12))throw new db[(_0x31f7('0x62'))][(_0x31f7('0x63'))](_0x31f7('0x64'));return;};exports[_0x31f7('0x65')]=function(_0x55ed01,_0x1911e5,_0x30b45a){var _0x278df0=encryptor[_0x31f7('0x66')](_0x1911e5)[_0x31f7('0x67')](',');for(var _0x24f82c=0x0;_0x24f82c<_0x30b45a;_0x24f82c++){if(!_0x278df0[_0x24f82c])break;if(_0x55ed01[_0x31f7('0x68')]()===_0x278df0[_0x24f82c][_0x31f7('0x68')]()){var _0x23bd70=util['format'](_0x31f7('0x69'),_0x30b45a);if(_0x30b45a===0x1){_0x23bd70=_0x31f7('0x6a');}throw new db[(_0x31f7('0x62'))][(_0x31f7('0x63'))](_0x23bd70);}}return;};exports[_0x31f7('0x6b')]=function(_0x1daa68,_0x10ee36){var _0x178055=_0x10ee36?encryptor[_0x31f7('0x66')](_0x10ee36)[_0x31f7('0x67')](','):[];if(_0x178055[_0x31f7('0x6c')]===0x5){_0x178055[_0x31f7('0x6d')](-0x1,0x1);}_0x178055['unshift'](_0x1daa68);return encryptor[_0x31f7('0x6e')](_0x178055[_0x31f7('0x6f')](','));};function signJwt(_0x5eef73){var _0x2f37eb=BPromise['promisify'](jwt[_0x31f7('0x70')],{'context':jwt});var _0x5719ed=_0x5eef73[_0x31f7('0x71')]||config[_0x31f7('0xb')][_0x31f7('0x72')];return new BPromise(function(_0x53eec1,_0x1ad469){_0x2f37eb(_0x5eef73[_0x31f7('0x73')],_0x5719ed,_0x5eef73['options'])[_0x31f7('0x33')](function(_0x23f845){_0x53eec1(_0x23f845);})[_0x31f7('0x39')](function(_0x1e8de6){_0x1ad469(_0x1e8de6);});});}function verifyJwt(_0x18a7d0,_0x5f580b,_0x581943){var _0x50acca=BPromise['promisify'](jwt[_0x31f7('0x74')],{'context':jwt});var _0x21efa7=_0x581943||config['secrets'][_0x31f7('0x72')];return new BPromise(function(_0x546928,_0x43d8bb){_0x50acca(_0x18a7d0,_0x21efa7,_0x5f580b)['then'](function(_0x253943){_0x546928(_0x253943);})['catch'](function(_0x103f2e){_0x43d8bb(_0x103f2e);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x31f7('0x75')]('hex');}function generateIssuedAt(){return Math[_0x31f7('0x76')](Date['now']()/0x3e8)[_0x31f7('0x75')]();}function createJwt(_0xe0bb89){var _0x3addd5={'payload':{'iat':_0xe0bb89[_0x31f7('0x5f')],'nonce':_0xe0bb89[_0x31f7('0x5e')]},'options':{'algorithm':_0x31f7('0x77'),'subject':_0xe0bb89['id'][_0x31f7('0x75')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0x31f7('0x46')]()}};return signJwt(_0x3addd5)[_0x31f7('0x33')](function(_0x41ea47){return{'iat':_0xe0bb89[_0x31f7('0x5f')],'nonce':_0xe0bb89[_0x31f7('0x5e')],'token':_0x41ea47};});}
\ No newline at end of file
index 0e755ed..bc3475e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefc5=['write','end','unlink','decryptFile','createDecipher','final','close','secret','base64','decryptString','utf8','bluebird','../../config/logger','app','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','update','binary'];(function(_0x43796f,_0xbe5069){var _0x280b3=function(_0x173e28){while(--_0x173e28){_0x43796f['push'](_0x43796f['shift']());}};_0x280b3(++_0xbe5069);}(_0xefc5,0x83));var _0x5efc=function(_0x46ec32,_0x1e842f){_0x46ec32=_0x46ec32-0x0;var _0x338f60=_0xefc5[_0x46ec32];return _0x338f60;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x5efc('0x0'));var _=require('lodash');var config=require('../../config/environment');var logger=require(_0x5efc('0x1'))(_0x5efc('0x2'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x5efc('0x3')};const fileOptions={'algorithm':_0x5efc('0x4')};if(config[_0x5efc('0x5')]&&config[_0x5efc('0x5')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x5efc('0x5')][_0x5efc('0x6')]);if(isSupported){fileOptions['algorithm']=config[_0x5efc('0x5')][_0x5efc('0x6')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x5efc('0x7')](',\x20');logger['error'](config[_0x5efc('0x5')]['algorithm'],_0x5efc('0x8'),supportedAlgorithms);}}function isASupportedCipher(_0x20585c){return AES_SUPPORTED_RX[_0x5efc('0x9')](_0x20585c);}function getSupportedCiphers(){return crypto[_0x5efc('0xa')]()[_0x5efc('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x2671dd){return getSupportedCiphers()['indexOf'](_0x2671dd)>-0x1;}function combineOptions(_0xf1af1){var _0x3e7bdc={};for(var _0x19cf7c in fileOptions){if(fileOptions['hasOwnProperty'](_0x19cf7c)){_0x3e7bdc[_0x19cf7c]=fileOptions[_0x19cf7c];}}if(_0xf1af1){for(var _0x384e66 in _0xf1af1){if(_0xf1af1[_0x5efc('0xc')](_0x384e66)){_0x3e7bdc[_0x384e66]=_0xf1af1[_0x384e66];}}}return _0x3e7bdc;}exports['encryptFile']=function(_0x328b40,_0x11dc15,_0x5f5889,_0x3ea69e){return new BPromise(function(_0x24a1ef,_0x2e1ad7){_0x3ea69e=combineOptions(_0x3ea69e);var _0x55a21b=new Buffer(_0x5f5889);var _0x30ad99=fs[_0x5efc('0xd')](_0x328b40);var _0x454e46=fs[_0x5efc('0xe')](_0x11dc15);var _0x27f38b=crypto[_0x5efc('0xf')](_0x3ea69e[_0x5efc('0x6')],_0x55a21b);_0x30ad99['on'](_0x5efc('0x10'),function(_0x67fcd5){var _0x2ace86=new Buffer(_0x27f38b[_0x5efc('0x11')](_0x67fcd5),_0x5efc('0x12'));_0x454e46[_0x5efc('0x13')](_0x2ace86);});_0x30ad99['on'](_0x5efc('0x14'),function(){try{var _0x468160=new Buffer(_0x27f38b['final'](_0x5efc('0x12')),_0x5efc('0x12'));_0x454e46[_0x5efc('0x13')](_0x468160);_0x454e46[_0x5efc('0x14')]();_0x454e46['on']('close',function(){return _0x24a1ef(_0x11dc15);});}catch(_0xd99d6e){fs[_0x5efc('0x15')](_0x11dc15);return _0x2e1ad7(_0xd99d6e);}});});};exports[_0x5efc('0x16')]=function(_0x293664,_0x1af32c,_0x19a2cf,_0x1cb888){return new BPromise(function(_0x4b7f24,_0x7e5f04){_0x1cb888=combineOptions(_0x1cb888);var _0x35fc59=new Buffer(_0x19a2cf);var _0x362bf9=fs[_0x5efc('0xd')](_0x293664);var _0x369e53=fs[_0x5efc('0xe')](_0x1af32c);var _0x10804e=crypto[_0x5efc('0x17')](_0x1cb888['algorithm'],_0x35fc59);_0x362bf9['on']('data',function(_0x3f6ff4){var _0x5387f0=new Buffer(_0x10804e['update'](_0x3f6ff4),_0x5efc('0x12'));_0x369e53[_0x5efc('0x13')](_0x5387f0);});_0x362bf9['on'](_0x5efc('0x14'),function(){try{var _0xdba9ef=new Buffer(_0x10804e[_0x5efc('0x18')](_0x5efc('0x12')),_0x5efc('0x12'));_0x369e53[_0x5efc('0x13')](_0xdba9ef);_0x369e53[_0x5efc('0x14')]();_0x369e53['on'](_0x5efc('0x19'),function(){return _0x4b7f24(_0x1af32c);});}catch(_0x35c1b7){fs[_0x5efc('0x15')](_0x1af32c);return _0x7e5f04(_0x35c1b7);}});});};exports['encryptString']=function(_0x15cd17,_0x2671fd,_0x4c7c7c){var _0x5ef4bd=_0x4c7c7c||stringOptions[_0x5efc('0x6')];var _0x8f19b1=_0x2671fd||stringOptions[_0x5efc('0x1a')];var _0x4f45df=crypto[_0x5efc('0xf')](_0x5ef4bd,_0x8f19b1);var _0x1f9065=_0x4f45df[_0x5efc('0x11')](_0x15cd17,'utf8',_0x5efc('0x1b'));_0x1f9065+=_0x4f45df['final'](_0x5efc('0x1b'));return _0x1f9065;};exports[_0x5efc('0x1c')]=function(_0x32331e,_0xee0b0f,_0x324ddf){var _0x57ab43=_0x324ddf||stringOptions[_0x5efc('0x6')];var _0x25f806=_0xee0b0f||stringOptions[_0x5efc('0x1a')];var _0x12862d=crypto[_0x5efc('0x17')](_0x57ab43,_0x25f806);var _0x373105=_0x12862d[_0x5efc('0x11')](_0x32331e,'base64',_0x5efc('0x1d'));_0x373105+=_0x12862d[_0x5efc('0x18')](_0x5efc('0x1d'));return _0x373105;};
\ No newline at end of file
+var _0x4117=['utf8','base64','decryptString','createDecipher','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','test','indexOf','hasOwnProperty','createCipher','data','update','binary','write','final','close','unlink','decryptFile','createReadStream','end','encryptString','secret'];(function(_0x26e727,_0x3e65be){var _0x563800=function(_0xbcf999){while(--_0xbcf999){_0x26e727['push'](_0x26e727['shift']());}};_0x563800(++_0x3e65be);}(_0x4117,0x124));var _0x7411=function(_0x8eea78,_0x563fc7){_0x8eea78=_0x8eea78-0x0;var _0x448d18=_0x4117[_0x8eea78];return _0x448d18;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x7411('0x0'));var config=require(_0x7411('0x1'));var logger=require(_0x7411('0x2'))(_0x7411('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x7411('0x4')][_0x7411('0x5')],'algorithm':_0x7411('0x6')};const fileOptions={'algorithm':_0x7411('0x7')};if(config[_0x7411('0x8')]&&config[_0x7411('0x8')][_0x7411('0x9')]){var isSupported=isAlgorithmSupported(config[_0x7411('0x8')][_0x7411('0x9')]);if(isSupported){fileOptions[_0x7411('0x9')]=config[_0x7411('0x8')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x7411('0xa')](',\x20');logger[_0x7411('0xb')](config['encrypt'][_0x7411('0x9')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x163602){return AES_SUPPORTED_RX[_0x7411('0xc')](_0x163602);}function getSupportedCiphers(){return crypto['getCiphers']()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x35c3b3){return getSupportedCiphers()[_0x7411('0xd')](_0x35c3b3)>-0x1;}function combineOptions(_0x2e3495){var _0x59927a={};for(var _0x1181ca in fileOptions){if(fileOptions[_0x7411('0xe')](_0x1181ca)){_0x59927a[_0x1181ca]=fileOptions[_0x1181ca];}}if(_0x2e3495){for(var _0x4460fd in _0x2e3495){if(_0x2e3495[_0x7411('0xe')](_0x4460fd)){_0x59927a[_0x4460fd]=_0x2e3495[_0x4460fd];}}}return _0x59927a;}exports['encryptFile']=function(_0xf350d4,_0x394a4a,_0x34260e,_0x4cee84){return new BPromise(function(_0x564fa9,_0x2fafba){_0x4cee84=combineOptions(_0x4cee84);var _0x1ef8d4=new Buffer(_0x34260e);var _0x16d948=fs['createReadStream'](_0xf350d4);var _0x25d07d=fs['createWriteStream'](_0x394a4a);var _0x26d713=crypto[_0x7411('0xf')](_0x4cee84[_0x7411('0x9')],_0x1ef8d4);_0x16d948['on'](_0x7411('0x10'),function(_0x19305a){var _0x3107ca=new Buffer(_0x26d713[_0x7411('0x11')](_0x19305a),_0x7411('0x12'));_0x25d07d[_0x7411('0x13')](_0x3107ca);});_0x16d948['on']('end',function(){try{var _0x1b1294=new Buffer(_0x26d713[_0x7411('0x14')](_0x7411('0x12')),_0x7411('0x12'));_0x25d07d[_0x7411('0x13')](_0x1b1294);_0x25d07d['end']();_0x25d07d['on'](_0x7411('0x15'),function(){return _0x564fa9(_0x394a4a);});}catch(_0x5a7a5c){fs[_0x7411('0x16')](_0x394a4a);return _0x2fafba(_0x5a7a5c);}});});};exports[_0x7411('0x17')]=function(_0x1ea464,_0x5da1ed,_0xdba075,_0x98499e){return new BPromise(function(_0x2dfab6,_0x266b97){_0x98499e=combineOptions(_0x98499e);var _0x1b2dd4=new Buffer(_0xdba075);var _0x4e1703=fs[_0x7411('0x18')](_0x1ea464);var _0xf964a5=fs['createWriteStream'](_0x5da1ed);var _0x55d287=crypto['createDecipher'](_0x98499e[_0x7411('0x9')],_0x1b2dd4);_0x4e1703['on'](_0x7411('0x10'),function(_0xd37851){var _0x23e6a3=new Buffer(_0x55d287[_0x7411('0x11')](_0xd37851),'binary');_0xf964a5[_0x7411('0x13')](_0x23e6a3);});_0x4e1703['on'](_0x7411('0x19'),function(){try{var _0x3eae42=new Buffer(_0x55d287[_0x7411('0x14')](_0x7411('0x12')),'binary');_0xf964a5[_0x7411('0x13')](_0x3eae42);_0xf964a5['end']();_0xf964a5['on']('close',function(){return _0x2dfab6(_0x5da1ed);});}catch(_0x1e6fa8){fs[_0x7411('0x16')](_0x5da1ed);return _0x266b97(_0x1e6fa8);}});});};exports[_0x7411('0x1a')]=function(_0x44fb27,_0x14ed26,_0x32961f){var _0x1bd150=_0x32961f||stringOptions[_0x7411('0x9')];var _0x25b064=_0x14ed26||stringOptions[_0x7411('0x1b')];var _0x281976=crypto[_0x7411('0xf')](_0x1bd150,_0x25b064);var _0x46e9df=_0x281976[_0x7411('0x11')](_0x44fb27,_0x7411('0x1c'),_0x7411('0x1d'));_0x46e9df+=_0x281976[_0x7411('0x14')](_0x7411('0x1d'));return _0x46e9df;};exports[_0x7411('0x1e')]=function(_0x1ca05e,_0xbb63e0,_0x2b8244){var _0x4d689e=_0x2b8244||stringOptions[_0x7411('0x9')];var _0x4a5bf1=_0xbb63e0||stringOptions['secret'];var _0xe44390=crypto[_0x7411('0x1f')](_0x4d689e,_0x4a5bf1);var _0x260b5c=_0xe44390[_0x7411('0x11')](_0x1ca05e,_0x7411('0x1d'),_0x7411('0x1c'));_0x260b5c+=_0xe44390[_0x7411('0x14')](_0x7411('0x1c'));return _0x260b5c;};
\ No newline at end of file
index e9f2888..0432c52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7341=['sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','push','basename','.csv','existsSync','join','csv','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','lodash','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then'];(function(_0x420b24,_0x382adc){var _0x4da552=function(_0x4e1623){while(--_0x4e1623){_0x420b24['push'](_0x420b24['shift']());}};_0x4da552(++_0x382adc);}(_0x7341,0xe4));var _0x1734=function(_0x55597f,_0x2fcd09){_0x55597f=_0x55597f-0x0;var _0x54aad4=_0x7341[_0x55597f];return _0x54aad4;};'use strict';var util=require('util');var path=require('path');var _=require(_0x1734('0x0'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x1734('0x1'));var zipdir=require(_0x1734('0x2'));var rimraf=require('rimraf');var db=require(_0x1734('0x3'))['db'];var dbH=require(_0x1734('0x3'))[_0x1734('0x4')];var logger=require(_0x1734('0x5'))(_0x1734('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x1734('0x7')][0x2]);var QUERY=process[_0x1734('0x7')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1ca30b,_0x2c223d){var _0x45c529={'status':_0x1ca30b};var _0x5b8977={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2c223d){_0x45c529[_0x1734('0x8')]=_0x2c223d;}return db['AnalyticExtractedReport']['update'](_0x45c529,_0x5b8977);}function main(){var _0x55b846=0x1388;var _0xcf0632;logger[_0x1734('0x9')](util[_0x1734('0xa')](_0x1734('0xb'),EXTRACTED_REPORT_ID,_0x1734('0xc')));return db[_0x1734('0xd')][_0x1734('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1734('0xf'),_0x1734('0x10')]})['then'](function(_0x4391a1){if(_0x4391a1){_0xcf0632=_0x4391a1;_0x55b846=_0xcf0632[_0x1734('0x10')]||0x1388;}})[_0x1734('0x11')](function(){return dbH[_0x1734('0x12')][_0x1734('0x13')](util[_0x1734('0xa')](_0x1734('0x14'),QUERY),{'type':dbH[_0x1734('0x12')][_0x1734('0x15')][_0x1734('0x16')]});})[_0x1734('0x11')](function(_0x27679e){if(!_0x27679e[0x0][_0x1734('0x17')]){return analyticExtractedReport(_0x1734('0x18'));}var _0x3989a6=[];var _0x24bbf3=0x0;var _0x2b375d=!![];if(_0x27679e&&_0x27679e[_0x1734('0x19')]){var _0x414b7c=_0x27679e[0x0]['num']%(_0x24bbf3+_0x55b846);if(_0xcf0632['split']){for(;_0x2b375d;_0x24bbf3+=_0x55b846,_0x414b7c=_0x27679e[0x0][_0x1734('0x17')]%(_0x24bbf3+_0x55b846)){if(_0x414b7c==0x0||_0x414b7c==_0x27679e[0x0][_0x1734('0x17')]){_0x2b375d=![];}_0x3989a6['push'](dbH[_0x1734('0x12')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x55b846,_0x24bbf3),{'type':dbH[_0x1734('0x12')]['QueryTypes'][_0x1734('0x16')]}));}}else{_0x3989a6[_0x1734('0x1a')](dbH['sequelize']['query'](QUERY,{'type':dbH['sequelize'][_0x1734('0x15')]['SELECT']}));}}var _0x183f7a=path['dirname'](PATH);var _0x215ae4=path[_0x1734('0x1b')](PATH,_0x1734('0x1c'));var _0x27d1a4=_0xcf0632[_0x1734('0xf')]&&_0x3989a6[_0x1734('0x19')]>0x1;var _0x4285ee=[];if(!fs[_0x1734('0x1d')](path[_0x1734('0x1e')](_0x183f7a,_0x215ae4))&&_0x27d1a4){fs['mkdirSync'](path[_0x1734('0x1e')](_0x183f7a,_0x215ae4));}return BPromise['each'](_0x3989a6,function(_0x5e0023){_0x4285ee[_0x1734('0x1a')](_0x5e0023);})[_0x1734('0x11')](function(){for(var _0x309d3f=0x0;_0x309d3f<_0x4285ee[_0x1734('0x19')];_0x309d3f+=0x1){var _0x4435ac;var _0x2a95e3=_0x4285ee[_0x309d3f];if(_0x27d1a4){_0x4435ac=path[_0x1734('0x1e')](_0x183f7a,_0x215ae4,util[_0x1734('0xa')]('%s%d.%s',_0x215ae4,_0x309d3f,_0x1734('0x1f')));}else{_0x4435ac=path['join'](_0x183f7a,util[_0x1734('0xa')](_0x1734('0x20'),_0x215ae4,_0x1734('0x1f')));}fs['writeFileSync'](_0x4435ac,csv(_0x2a95e3));}})[_0x1734('0x11')](function(){if(_0x27d1a4){zipdir(path[_0x1734('0x1e')](_0x183f7a,_0x215ae4),{'saveTo':path[_0x1734('0x1e')](_0x183f7a,util['format'](_0x1734('0x20'),_0x215ae4,_0x1734('0x21')))},function(_0x5594c0,_0x1bd659){});rimraf(path[_0x1734('0x1e')](_0x183f7a,_0x215ae4),function(){});}})[_0x1734('0x11')](function(){logger[_0x1734('0x9')](util['format'](_0x1734('0x22'),EXTRACTED_REPORT_ID,_0x1734('0xc')));return analyticExtractedReport('Completed',_0x27d1a4?util['format'](_0x1734('0x20'),_0x215ae4,_0x27d1a4?_0x1734('0x21'):_0x1734('0x1f')):null);});})[_0x1734('0x23')](function(_0x2c95d2){logger[_0x1734('0x9')](util[_0x1734('0xa')](_0x1734('0x24'),EXTRACTED_REPORT_ID,_0x1734('0xc')),util[_0x1734('0x25')](_0x2c95d2,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1734('0x26'));})[_0x1734('0x27')](function(){process[_0x1734('0x28')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x3694=['sequelize','QueryTypes','SELECT','num','Empty','range','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.csv','existsSync','join','length','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','inspect','Failed','exit','util','path','lodash','to-csv','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t'];(function(_0x167d69,_0x4cdbec){var _0x56b66a=function(_0x1f38cb){while(--_0x1f38cb){_0x167d69['push'](_0x167d69['shift']());}};_0x56b66a(++_0x4cdbec);}(_0x3694,0x191));var _0x4369=function(_0xac9426,_0x157ce6){_0xac9426=_0xac9426-0x0;var _0xc5ab5e=_0x3694[_0xac9426];return _0xc5ab5e;};'use strict';var util=require(_0x4369('0x0'));var path=require(_0x4369('0x1'));var _=require(_0x4369('0x2'));var csv=require(_0x4369('0x3'));var fs=require('fs');var BPromise=require(_0x4369('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x4369('0x5'));var db=require(_0x4369('0x6'))['db'];var dbH=require(_0x4369('0x6'))[_0x4369('0x7')];var logger=require(_0x4369('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x4369('0x9')][0x2]);var QUERY=process[_0x4369('0x9')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2a99e6,_0x2a4d69){var _0x3047f3={'status':_0x2a99e6};var _0x515ea1={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2a4d69){_0x3047f3['savename']=_0x2a4d69;}return db[_0x4369('0xa')][_0x4369('0xb')](_0x3047f3,_0x515ea1);}function main(){var _0x3d588a=0x1388;var _0xf204bd;logger[_0x4369('0xc')](util[_0x4369('0xd')](_0x4369('0xe'),EXTRACTED_REPORT_ID,_0x4369('0xf')));return db[_0x4369('0x10')][_0x4369('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4369('0x12'),'splitSizeCsv']})[_0x4369('0x13')](function(_0x12b08c){if(_0x12b08c){_0xf204bd=_0x12b08c;_0x3d588a=_0xf204bd['splitSizeCsv']||0x1388;}})[_0x4369('0x13')](function(){return dbH['sequelize'][_0x4369('0x14')](util[_0x4369('0xd')](_0x4369('0x15'),QUERY),{'type':dbH[_0x4369('0x16')][_0x4369('0x17')][_0x4369('0x18')]});})['then'](function(_0x305d71){if(!_0x305d71[0x0][_0x4369('0x19')]){return analyticExtractedReport(_0x4369('0x1a'));}var _0x12f3ec=[];var _0x435a8f=0x0;if(_0xf204bd[_0x4369('0x12')]){if(_0x305d71&&_0x305d71['length']){var _0x263d6f=_[_0x4369('0x1b')](_0x305d71[0x0]['num']/_0x3d588a);var _0x2015f5=Number['isInteger'](_0x305d71[0x0][_0x4369('0x19')]/_0x3d588a)?_0x305d71[0x0][_0x4369('0x19')]%_0x3d588a:0x0;_0x263d6f[_0x4369('0x1c')](function(_0x14813c){if(_0x14813c>0x0){_0x435a8f+=_0x3d588a;}_0x12f3ec[_0x4369('0x1d')](dbH['sequelize']['query'](util[_0x4369('0xd')](_0x4369('0x1e'),QUERY,_0x3d588a,_0x435a8f),{'type':dbH['sequelize'][_0x4369('0x17')][_0x4369('0x18')]}));});if(_0x2015f5>0x0){_0x435a8f+=_0x3d588a;_0x12f3ec['push'](dbH[_0x4369('0x16')]['query'](util[_0x4369('0xd')](_0x4369('0x1e'),QUERY,_0x2015f5,_0x435a8f),{'type':dbH[_0x4369('0x16')]['QueryTypes'][_0x4369('0x18')]}));}}}else{_0x12f3ec[_0x4369('0x1d')](dbH[_0x4369('0x16')][_0x4369('0x14')](QUERY,{'type':dbH[_0x4369('0x16')][_0x4369('0x17')][_0x4369('0x18')]}));}var _0xedf3ca=path['dirname'](PATH);var _0x106cc9=path[_0x4369('0x1f')](PATH,_0x4369('0x20'));var _0x45ccf9=_0xf204bd['split']&&_0x12f3ec['length']>0x1;var _0xcace71=[];if(!fs[_0x4369('0x21')](path[_0x4369('0x22')](_0xedf3ca,_0x106cc9))&&_0x45ccf9){fs['mkdirSync'](path[_0x4369('0x22')](_0xedf3ca,_0x106cc9));}return BPromise['each'](_0x12f3ec,function(_0x4e9ae0){_0xcace71['push'](_0x4e9ae0);})[_0x4369('0x13')](function(){for(var _0x14f6d8=0x0;_0x14f6d8<_0xcace71[_0x4369('0x23')];_0x14f6d8+=0x1){var _0x7d8da7;var _0x1f9ca1=_0xcace71[_0x14f6d8];if(_0x45ccf9){_0x7d8da7=path['join'](_0xedf3ca,_0x106cc9,util[_0x4369('0xd')](_0x4369('0x24'),_0x106cc9,_0x14f6d8,_0x4369('0x25')));}else{_0x7d8da7=path[_0x4369('0x22')](_0xedf3ca,util[_0x4369('0xd')](_0x4369('0x26'),_0x106cc9,_0x4369('0x25')));}fs[_0x4369('0x27')](_0x7d8da7,csv(_0x1f9ca1));}})[_0x4369('0x13')](function(){if(_0x45ccf9){return new Promise(function(_0x815491){zipdir(path['join'](_0xedf3ca,_0x106cc9),{'saveTo':path[_0x4369('0x22')](_0xedf3ca,util['format'](_0x4369('0x26'),_0x106cc9,_0x4369('0x28')))},function(_0xd0b671,_0x2eccb5){rimraf(path['join'](_0xedf3ca,_0x106cc9),function(){});_0x815491(_0x4369('0x29'));});});}})[_0x4369('0x13')](function(){logger[_0x4369('0xc')](util['format'](_0x4369('0x2a'),EXTRACTED_REPORT_ID,_0x4369('0xf')));return analyticExtractedReport('Completed',_0x45ccf9?util[_0x4369('0xd')](_0x4369('0x26'),_0x106cc9,_0x45ccf9?'zip':_0x4369('0x25')):null);});})[_0x4369('0x2b')](function(_0x2856da){logger['info'](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util[_0x4369('0x2c')](_0x2856da,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4369('0x2d'));})['finally'](function(){process[_0x4369('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index d3b8d85..d9c8805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a8=['then','num','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','split','existsSync','mkdirSync','flatten','createPdfKitDocument','%s%d.%s','zip','info','PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','end','createPdfFromHTML','lodash','util','path','pdfmake/src/printer','rimraf','window','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','map','tableHeader','pick','toString','value','fill','length','auto','push','body','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','header','pageBreak','margin','landscape','footer','Arial','black','Empty','dirname','basename','.pdf','join','%s.%s','pdf','Setting','find','splitSizePdf'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x26a8,0x1b1));var _0x826a=function(_0x8a14b2,_0x4a15c7){_0x8a14b2=_0x8a14b2-0x0;var _0x35dc8e=_0x26a8[_0x8a14b2];return _0x35dc8e;};'use strict';var _=require(_0x826a('0x0'));var fs=require('fs');var util=require(_0x826a('0x1'));var path=require(_0x826a('0x2'));var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x826a('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x826a('0x4'));var JSDOM=require('jsdom')['JSDOM'];var window=new JSDOM('')[_0x826a('0x5')];var db=require(_0x826a('0x6'))['db'];var dbH=require(_0x826a('0x6'))[_0x826a('0x7')];var logger=require(_0x826a('0x8'))(_0x826a('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x826a('0xa')][0x2]);var QUERY=process[_0x826a('0xa')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3001ef,_0x2d7db5){var _0x2c3ee={'status':_0x3001ef};var _0x4aed5d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2d7db5){_0x2c3ee['savename']=_0x2d7db5;}return db[_0x826a('0xb')]['update'](_0x2c3ee,_0x4aed5d);}function getHeaders(_0x450d93){return _[_0x826a('0xc')](_0x450d93,function(_0x273a0f){return{'text':_0x273a0f,'style':_0x826a('0xd')};});}function getRows(_0x1cdba2,_0x495cc8){return _[_0x826a('0xc')](_0x495cc8,function(_0x5a7b10){return _(_0x5a7b10)[_0x826a('0xe')](_0x1cdba2)[_0x826a('0xc')](function(_0x216159){return _0x216159?_[_0x826a('0xf')](_0x216159):'';})[_0x826a('0x10')]();});}function createTable(_0x4928e3,_0x507a1e){var _0x37710d={'widths':_[_0x826a('0x11')](Array(_0x4928e3[_0x826a('0x12')]),0x91),'heights':function(_0xc39b2f){return _0xc39b2f===0x0?_0x826a('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x35f3f6=getHeaders(_0x4928e3);_0x37710d['body'][_0x826a('0x14')](_0x35f3f6);var _0xff2fd4=getRows(_0x4928e3,_0x507a1e);_0x37710d[_0x826a('0x15')]=_0x37710d[_0x826a('0x15')][_0x826a('0x16')](_0xff2fd4);return _0x37710d;}function createTables(_0x29eb85){var _0x27b088=[];var _0x2336f3=_[_0x826a('0x17')](Object[_0x826a('0x18')](_0x29eb85[0x0]),0x5);_0x2336f3[_0x826a('0x19')](function(_0x5a6bd4){_0x27b088[_0x826a('0x14')](createTable(_0x5a6bd4,_0x29eb85));});return _0x27b088;}function getPDFDocDefinition(_0x3de85d){var _0x3b200e=util[_0x826a('0x1a')](_0x826a('0x1b'),NAME,EXTRACTED_REPORT[_0x826a('0x1c')],moment(EXTRACTED_REPORT[_0x826a('0x1d')])[_0x826a('0x1a')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x528e03=[];for(var _0x12ef6f=0x0;_0x12ef6f<_0x3de85d[_0x826a('0x12')];_0x12ef6f++){var _0xcc3418=[];if(_0x12ef6f===0x0){_0xcc3418[_0x826a('0x14')]({'text':_0x3b200e,'style':_0x826a('0x1e')});}var _0x12d50d={'table':_0x3de85d[_0x12ef6f]};if(_0x12ef6f>0x0){_0x12d50d[_0x826a('0x1f')]='before';_0x12d50d[_0x826a('0x20')]=[0x0,0x46,0x0,0x0];}_0xcc3418['push'](_0x12d50d);_0x528e03[_0x826a('0x14')](_0xcc3418);}return{'pageSize':'A4','pageOrientation':_0x826a('0x21'),'content':_0x528e03,'footer':function(_0x52f9c6,_0x418631){return{'text':_0x52f9c6[_0x826a('0xf')]()+'\x20/\x20'+_0x418631,'style':_0x826a('0x22')};},'defaultStyle':{'font':_0x826a('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x826a('0x24')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4d2814){var _0x46fa3c=0x1388;var _0x1b4727;if(!_0x4d2814[0x0]['num']){return analyticExtractedReport(_0x826a('0x25'));}var _0x337bb4=[];var _0xac271=0x0;var _0x550919=!![];var _0x44d490=path[_0x826a('0x26')](PATH);var _0x31a64d=path[_0x826a('0x27')](PATH,_0x826a('0x28'));var _0x515bbe=path[_0x826a('0x29')](_0x44d490,util[_0x826a('0x1a')](_0x826a('0x2a'),_0x31a64d,_0x826a('0x2b')));var _0x39895e=![];return db[_0x826a('0x2c')][_0x826a('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})['then'](function(_0x37a670){if(_0x37a670){_0x1b4727=_0x37a670;_0x46fa3c=_0x1b4727[_0x826a('0x2e')]||0x3e8;}})[_0x826a('0x2f')](function(){if(_0x4d2814&&_0x4d2814['length']){var _0x1e43f9=_0x4d2814[0x0][_0x826a('0x30')]%(_0xac271+_0x46fa3c);if(_0x1b4727['split']){for(;_0x550919;_0xac271+=_0x46fa3c,_0x1e43f9=_0x4d2814[0x0]['num']%(_0xac271+_0x46fa3c)){if(_0x1e43f9==0x0||_0x1e43f9==_0x4d2814[0x0][_0x826a('0x30')]){_0x550919=![];}_0x337bb4['push'](dbH['sequelize'][_0x826a('0x31')](util[_0x826a('0x1a')](_0x826a('0x32'),QUERY,_0x46fa3c,_0xac271),{'type':dbH[_0x826a('0x33')][_0x826a('0x34')][_0x826a('0x35')]}));}}else{_0x337bb4['push'](dbH['sequelize'][_0x826a('0x31')](QUERY,{'type':dbH[_0x826a('0x33')][_0x826a('0x34')][_0x826a('0x35')]}));}}_0x39895e=_0x1b4727[_0x826a('0x36')]&&_0x337bb4[_0x826a('0x12')]>0x1;if(!fs[_0x826a('0x37')](path['join'](_0x44d490,_0x31a64d))&&_0x39895e){fs[_0x826a('0x38')](path['join'](_0x44d490,_0x31a64d));}return Promise['all'](_0x337bb4);})[_0x826a('0x2f')](function(_0x4a39d2){return createTables(_[_0x826a('0x39')](_0x4a39d2));})[_0x826a('0x2f')](function(_0x4e560d){var _0x312ad6=getPDFDocDefinition(_0x4e560d);var _0x5de80e=getPDFPrinter();var _0x575584=_0x5de80e[_0x826a('0x3a')](_0x312ad6);if(_0x39895e)_0x515bbe=path[_0x826a('0x29')](_0x44d490,_0x31a64d,util[_0x826a('0x1a')](_0x826a('0x3b'),_0x31a64d,index,_0x826a('0x2b')));return writePDFDocument(_0x575584,_0x515bbe);})[_0x826a('0x2f')](function(){if(!_0x39895e)return;zipdir(path[_0x826a('0x29')](_0x44d490,_0x31a64d),{'saveTo':path[_0x826a('0x29')](_0x44d490,util[_0x826a('0x1a')]('%s.%s',_0x31a64d,_0x826a('0x3c')))},function(_0x3f8445){if(_0x3f8445)throw _0x3f8445;return;});})['then'](function(){if(!_0x39895e)return;rimraf(path[_0x826a('0x29')](_0x44d490,_0x31a64d),function(){});})[_0x826a('0x2f')](function(){logger[_0x826a('0x3d')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport('Completed',_0x39895e?util[_0x826a('0x1a')]('%s.%s',_0x31a64d,_0x39895e?_0x826a('0x3c'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x826a('0x3d')](util[_0x826a('0x1a')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x826a('0x3e')));return db[_0x826a('0xb')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x2665d0){EXTRACTED_REPORT=_0x2665d0;return dbH[_0x826a('0x33')][_0x826a('0x31')](util[_0x826a('0x1a')](_0x826a('0x3f'),QUERY),{'type':dbH[_0x826a('0x33')][_0x826a('0x34')][_0x826a('0x35')]});})[_0x826a('0x2f')](extractReport)[_0x826a('0x40')](function(_0x1019a7){logger[_0x826a('0x3d')](util['format'](_0x826a('0x41'),EXTRACTED_REPORT_ID,_0x826a('0x3e')),util[_0x826a('0x42')](_0x1019a7,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x826a('0x43')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x520094=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x826a('0x44'),'italics':__dirname+_0x826a('0x45'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x520094;}function getPDFDocDefinitionFromHTML(_0x186fba,_0x4c190d){var _0x17b2ba=util['format'](_0x826a('0x46'),_0x4c190d[_0x826a('0x47')],_0x4c190d['interactionId']);var _0x2af3aa=moment()[_0x826a('0x1a')](_0x826a('0x48'))[_0x826a('0xf')]();var _0x568d44=htmlToPdfmake(_0x186fba,{'window':window,'tableAutoSize':!![]});return{'content':[_0x568d44],'defaultStyle':{'font':_0x826a('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x826a('0x49'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x826a('0x49'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x826a('0x49')}},'header':function(){return[{'text':_0x826a('0x4a'),'style':_0x826a('0x1e')}];},'footer':function(_0xb363ad,_0x2bf4c5){return[{'text':util[_0x826a('0x1a')](_0x826a('0x4b'),_0x17b2ba,_0xb363ad,_0x2bf4c5,_0x2af3aa),'style':_0x826a('0x22')}];}};}function writePDFDocument(_0x2098d5,_0x33aac2){return new Promise(function(_0x388f14,_0x1c6fac){var _0xe629d0=_0x2098d5[_0x826a('0x4c')](fs['createWriteStream'](_0x33aac2));_0xe629d0['on'](_0x826a('0x4d'),function(){_0x388f14('finish');});_0xe629d0['on']('error',function(_0x373ac6){_0x1c6fac(_0x373ac6);});_0x2098d5[_0x826a('0x4e')]();});}exports[_0x826a('0x4f')]=function(_0x4f03ac,_0x40521a){var _0x32de70=getPDFPrinter();var _0x16494a=getPDFDocDefinitionFromHTML(_0x4f03ac,_0x40521a);var _0x4c5970=_0x32de70[_0x826a('0x3a')](_0x16494a);return writePDFDocument(_0x4c5970,_0x40521a[_0x826a('0x2')])[_0x826a('0x40')](function(_0x377ed1){throw _0x377ed1;});};
\ No newline at end of file
+var _0x419e=['/fonts/arial-bold-italic.ttf','%s\x20#%d','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','createWriteStream','finish','error','createPdfFromHTML','catch','lodash','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','pick','toString','fill','length','auto','body','push','concat','chunk','keys','forEach','format','name','startDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Empty','find','split','splitSizePdf','then','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','dirname','basename','join','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','AnalyticExtractedReport','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf'];(function(_0x2a25ae,_0x37e6ec){var _0x3b863f=function(_0x32fb0f){while(--_0x32fb0f){_0x2a25ae['push'](_0x2a25ae['shift']());}};_0x3b863f(++_0x37e6ec);}(_0x419e,0x112));var _0xe419=function(_0x3a44e4,_0x3ab711){_0x3a44e4=_0x3a44e4-0x0;var _0x2c94c1=_0x419e[_0x3a44e4];return _0x2c94c1;};'use strict';var _=require(_0xe419('0x0'));var fs=require('fs');var util=require('util');var path=require(_0xe419('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0xe419('0x2'));var PdfPrinter=require(_0xe419('0x3'));var zipdir=require(_0xe419('0x4'));var rimraf=require(_0xe419('0x5'));var JSDOM=require(_0xe419('0x6'))[_0xe419('0x7')];var window=new JSDOM('')['window'];var BPromise=require(_0xe419('0x8'));var db=require(_0xe419('0x9'))['db'];var dbH=require('../../mysqldb')[_0xe419('0xa')];var logger=require(_0xe419('0xb'))(_0xe419('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0xe419('0xd')][0x2]);var QUERY=process[_0xe419('0xd')][0x3];var PATH=process[_0xe419('0xd')][0x4];var NAME=process[_0xe419('0xd')][0x5];var FORMAT=_0xe419('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1308c2,_0x266adb){var _0x55f7b7={'status':_0x1308c2};var _0x3fb15d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x266adb){_0x55f7b7[_0xe419('0xf')]=_0x266adb;}return db['AnalyticExtractedReport'][_0xe419('0x10')](_0x55f7b7,_0x3fb15d);}function getHeaders(_0x49777c){return _[_0xe419('0x11')](_0x49777c,function(_0xd96d84){return{'text':_0xd96d84,'style':_0xe419('0x12')};});}function getRows(_0x5afaa6,_0x24086b){return _['map'](_0x24086b,function(_0x5aa2d0){return _(_0x5aa2d0)[_0xe419('0x13')](_0x5afaa6)['map'](function(_0x614a5b){return _0x614a5b?_[_0xe419('0x14')](_0x614a5b):'';})['value']();});}function createTable(_0x224649,_0x211bf9){var _0x3a015a={'widths':_[_0xe419('0x15')](Array(_0x224649[_0xe419('0x16')]),0x91),'heights':function(_0x5b6c9a){return _0x5b6c9a===0x0?_0xe419('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1b799f=getHeaders(_0x224649);_0x3a015a[_0xe419('0x18')][_0xe419('0x19')](_0x1b799f);var _0x34b544=getRows(_0x224649,_0x211bf9);_0x3a015a['body']=_0x3a015a[_0xe419('0x18')][_0xe419('0x1a')](_0x34b544);return _0x3a015a;}function createTables(_0x358336){var _0x500c89=[];var _0x5506a9=_[_0xe419('0x1b')](Object[_0xe419('0x1c')](_0x358336[0x0]),0x5);_0x5506a9[_0xe419('0x1d')](function(_0x129d35){_0x500c89['push'](createTable(_0x129d35,_0x358336));});return _0x500c89;}function getPDFDocDefinition(_0x1d9eb1){var _0x329402=util[_0xe419('0x1e')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xe419('0x1f')],moment(EXTRACTED_REPORT[_0xe419('0x20')])[_0xe419('0x1e')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0xe419('0x1e')](FORMAT));var _0x152f8c=[];for(var _0x5c624f=0x0;_0x5c624f<_0x1d9eb1[_0xe419('0x16')];_0x5c624f++){var _0x4c1c64=[];if(_0x5c624f===0x0){_0x4c1c64['push']({'text':_0x329402,'style':_0xe419('0x21')});}var _0x59c3c4={'table':_0x1d9eb1[_0x5c624f]};if(_0x5c624f>0x0){_0x59c3c4[_0xe419('0x22')]=_0xe419('0x23');_0x59c3c4[_0xe419('0x24')]=[0x0,0x46,0x0,0x0];}_0x4c1c64[_0xe419('0x19')](_0x59c3c4);_0x152f8c[_0xe419('0x19')](_0x4c1c64);}return{'pageSize':'A4','pageOrientation':_0xe419('0x25'),'content':_0x152f8c,'footer':function(_0x36c8ba,_0x589356){return{'text':_0x36c8ba[_0xe419('0x14')]()+_0xe419('0x26')+_0x589356,'style':_0xe419('0x27')};},'defaultStyle':{'font':_0xe419('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xe419('0x29')},'footer':{'alignment':_0xe419('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x272cdc){var _0x15feaf=0x1388;var _0x3006a0;if(!_0x272cdc[0x0][_0xe419('0x2b')]){return analyticExtractedReport(_0xe419('0x2c'));}return db['Setting'][_0xe419('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xe419('0x2e'),_0xe419('0x2f')]})[_0xe419('0x30')](function(_0x1750c0){if(_0x1750c0){_0x3006a0=_0x1750c0;_0x15feaf=_0x3006a0[_0xe419('0x2f')]||0x3e8;}})[_0xe419('0x30')](function(){var _0x19f5dd=[];var _0x3845c4=0x0;if(_0x3006a0['split']){if(_0x272cdc&&_0x272cdc[_0xe419('0x16')]){var _0x4f2d08=_['range'](_0x272cdc[0x0][_0xe419('0x2b')]/_0x15feaf);var _0x317f6f=Number[_0xe419('0x31')](_0x272cdc[0x0][_0xe419('0x2b')]/_0x15feaf)?_0x272cdc[0x0][_0xe419('0x2b')]%_0x15feaf:0x0;_0x4f2d08[_0xe419('0x1d')](function(_0x569403){if(_0x569403>0x0){_0x3845c4+=_0x15feaf;}_0x19f5dd[_0xe419('0x19')](dbH[_0xe419('0x32')]['query'](util[_0xe419('0x1e')](_0xe419('0x33'),QUERY,_0x15feaf,_0x3845c4),{'type':dbH[_0xe419('0x32')][_0xe419('0x34')][_0xe419('0x35')]}));});if(_0x317f6f>0x0){_0x3845c4+=_0x15feaf;_0x19f5dd[_0xe419('0x19')](dbH['sequelize'][_0xe419('0x36')](util[_0xe419('0x1e')](_0xe419('0x33'),QUERY,_0x317f6f,_0x3845c4),{'type':dbH[_0xe419('0x32')]['QueryTypes'][_0xe419('0x35')]}));}}}else{_0x19f5dd[_0xe419('0x19')](dbH[_0xe419('0x32')][_0xe419('0x36')](QUERY,{'type':dbH[_0xe419('0x32')][_0xe419('0x34')]['SELECT']}));}var _0x25d299=path[_0xe419('0x37')](PATH);var _0x549230=path[_0xe419('0x38')](PATH,'.pdf');var _0x14e42f=_0x3006a0[_0xe419('0x2e')]&&_0x19f5dd[_0xe419('0x16')]>0x1;var _0x164fe4=[];if(!fs['existsSync'](path[_0xe419('0x39')](_0x25d299,_0x549230))&&_0x14e42f){fs['mkdirSync'](path[_0xe419('0x39')](_0x25d299,_0x549230));}return BPromise['each'](_0x19f5dd,function(_0x437456){_0x164fe4[_0xe419('0x19')](_0x437456);})[_0xe419('0x30')](function(){var _0x49428=[];for(var _0x302934=0x0;_0x302934<_0x164fe4[_0xe419('0x16')];_0x302934+=0x1){var _0x167021=_0x164fe4[_0x302934];var _0x114109=createTables(_['flatten'](_0x167021));var _0x40aa45;var _0x129904=getPDFDocDefinition(_0x114109);var _0x2e1103=getPDFPrinter();var _0x367e16=_0x2e1103[_0xe419('0x3a')](_0x129904);if(_0x14e42f){_0x40aa45=path[_0xe419('0x39')](_0x25d299,_0x549230,util['format'](_0xe419('0x3b'),_0x549230,_0x302934,_0xe419('0x3c')));}else{_0x40aa45=path[_0xe419('0x39')](_0x25d299,util[_0xe419('0x1e')](_0xe419('0x3d'),_0x549230,'pdf'));}_0x49428[_0xe419('0x19')](writePDFDocument(_0x367e16,_0x40aa45));}return Promise[_0xe419('0x3e')](_0x49428);})[_0xe419('0x30')](function(){if(_0x14e42f){return new Promise(function(_0x4844bb){zipdir(path[_0xe419('0x39')](_0x25d299,_0x549230),{'saveTo':path[_0xe419('0x39')](_0x25d299,util['format']('%s.%s',_0x549230,_0xe419('0x3f')))},function(){rimraf(path['join'](_0x25d299,_0x549230),function(){});_0x4844bb(_0xe419('0x40'));});});}})[_0xe419('0x30')](function(){if(!_0x14e42f)return;rimraf(path[_0xe419('0x39')](_0x25d299,_0x549230),function(){});})[_0xe419('0x30')](function(){logger[_0xe419('0x41')](util[_0xe419('0x1e')](_0xe419('0x42'),EXTRACTED_REPORT_ID,_0xe419('0x43')));return analyticExtractedReport(_0xe419('0x44'),_0x14e42f?util[_0xe419('0x1e')]('%s.%s',_0x549230,_0x14e42f?_0xe419('0x3f'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xe419('0x41')](util[_0xe419('0x1e')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xe419('0x43')));return db[_0xe419('0x45')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0xe419('0x30')](function(_0x28737c){EXTRACTED_REPORT=_0x28737c;return dbH[_0xe419('0x32')][_0xe419('0x36')](util[_0xe419('0x1e')](_0xe419('0x46'),QUERY),{'type':dbH['sequelize'][_0xe419('0x34')][_0xe419('0x35')]});})['then'](extractReport)['catch'](function(_0xb35e50){logger[_0xe419('0x41')](util[_0xe419('0x1e')](_0xe419('0x47'),EXTRACTED_REPORT_ID,'PDF'),util[_0xe419('0x48')](_0xb35e50,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xe419('0x49'));})[_0xe419('0x4a')](function(){process[_0xe419('0x4b')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x20047e=new PdfPrinter({'Arial':{'normal':__dirname+_0xe419('0x4c'),'bold':__dirname+_0xe419('0x4d'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xe419('0x4e')}});return _0x20047e;}function getPDFDocDefinitionFromHTML(_0x3e75de,_0x56d9d4){var _0x3c4648=util['format'](_0xe419('0x4f'),_0x56d9d4['channel'],_0x56d9d4['interactionId']);var _0x41b3bd=moment()['format'](_0xe419('0x50'))[_0xe419('0x14')]();var _0x2de91f=htmlToPdfmake(_0x3e75de,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2de91f],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xe419('0x51'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xe419('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xe419('0x51')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0xe419('0x21')}];},'footer':function(_0x244b58,_0x20fa6c){return[{'text':util[_0xe419('0x1e')](_0xe419('0x52'),_0x3c4648,_0x244b58,_0x20fa6c,_0x41b3bd),'style':'footer'}];}};}function writePDFDocument(_0x37c8a4,_0x1a58be){return new Promise(function(_0x19256c,_0x42a5e5){var _0x1f7c89=_0x37c8a4['pipe'](fs[_0xe419('0x53')](_0x1a58be));_0x1f7c89['on'](_0xe419('0x54'),function(){_0x19256c('finish');});_0x1f7c89['on'](_0xe419('0x55'),function(_0x5d9aa8){_0x42a5e5(_0x5d9aa8);});_0x37c8a4['end']();});}exports[_0xe419('0x56')]=function(_0x3241a4,_0x46c256){var _0x143198=getPDFPrinter();var _0xfc2899=getPDFDocDefinitionFromHTML(_0x3241a4,_0x46c256);var _0x264537=_0x143198[_0xe419('0x3a')](_0xfc2899);return writePDFDocument(_0x264537,_0x46c256[_0xe419('0x1')])[_0xe419('0x57')](function(_0x51dadc){throw _0x51dadc;});};
\ No newline at end of file
index ba36113..88ac9c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4f=['%s.%s','zip','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','sequelize','QueryTypes','SELECT','then','num','Empty','length','query','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','join','mkdirSync','%s%d.%s','xlsx','writeFileSync','binary'];(function(_0xe524df,_0x4e81b6){var _0xc3fedf=function(_0x1b7127){while(--_0x1b7127){_0xe524df['push'](_0xe524df['shift']());}};_0xc3fedf(++_0x4e81b6);}(_0x5c4f,0xf3));var _0xf5c4=function(_0x4661f6,_0x1b94eb){_0x4661f6=_0x4661f6-0x0;var _0x40d1e6=_0x5c4f[_0x4661f6];return _0x40d1e6;};'use strict';var util=require(_0xf5c4('0x0'));var path=require('path');var _=require(_0xf5c4('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xf5c4('0x2'));var zipdir=require(_0xf5c4('0x3'));var rimraf=require(_0xf5c4('0x4'));var db=require(_0xf5c4('0x5'))['db'];var dbH=require('../../mysqldb')[_0xf5c4('0x6')];var logger=require(_0xf5c4('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xf5c4('0x8')][0x2]);var QUERY=process[_0xf5c4('0x8')][0x3];var PATH=process[_0xf5c4('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x25e42b,_0x157865){var _0x1dc3cc={'status':_0x25e42b};var _0x29063f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x157865){_0x1dc3cc[_0xf5c4('0x9')]=_0x157865;}return db[_0xf5c4('0xa')][_0xf5c4('0xb')](_0x1dc3cc,_0x29063f);}function main(){var _0x48ba49=0x1388;var _0x50626e;logger[_0xf5c4('0xc')](util[_0xf5c4('0xd')](_0xf5c4('0xe'),EXTRACTED_REPORT_ID,_0xf5c4('0xf')));return db[_0xf5c4('0x10')][_0xf5c4('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf5c4('0x12'),_0xf5c4('0x13')]})['then'](function(_0xb16fee){if(_0xb16fee){_0x50626e=_0xb16fee;_0x48ba49=_0x50626e['splitSizeXlsx']||0x1388;}})['then'](function(){return dbH['sequelize']['query'](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xf5c4('0x14')][_0xf5c4('0x15')][_0xf5c4('0x16')]});})[_0xf5c4('0x17')](function(_0x3eec56){if(!_0x3eec56[0x0][_0xf5c4('0x18')]){return analyticExtractedReport(_0xf5c4('0x19'));}var _0x1d1087=[];var _0xfa2310=0x0;var _0x448f07=!![];if(_0x50626e[_0xf5c4('0x12')]){if(_0x3eec56&&_0x3eec56[_0xf5c4('0x1a')]){var _0x47ada1=_0x3eec56[0x0]['num']%(_0xfa2310+_0x48ba49);for(;_0x448f07;_0xfa2310+=_0x48ba49,_0x47ada1=_0x3eec56[0x0][_0xf5c4('0x18')]%(_0xfa2310+_0x48ba49)){if(_0x47ada1==0x0||_0x47ada1==_0x3eec56[0x0][_0xf5c4('0x18')]){_0x448f07=![];}_0x1d1087['push'](dbH[_0xf5c4('0x14')][_0xf5c4('0x1b')](util[_0xf5c4('0xd')](_0xf5c4('0x1c'),QUERY,_0x48ba49,_0xfa2310),{'type':dbH[_0xf5c4('0x14')][_0xf5c4('0x15')]['SELECT']}));}}}else{_0x1d1087[_0xf5c4('0x1d')](dbH[_0xf5c4('0x14')]['query'](QUERY,{'type':dbH[_0xf5c4('0x14')]['QueryTypes']['SELECT']}));}var _0x4b42d6=path[_0xf5c4('0x1e')](PATH);var _0x4d10dd=path[_0xf5c4('0x1f')](PATH,_0xf5c4('0x20'));var _0x20a0ee=_0x50626e[_0xf5c4('0x12')]&&_0x1d1087[_0xf5c4('0x1a')]>0x1;var _0x40d1bc=[];if(!fs['existsSync'](path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd))&&_0x20a0ee){fs[_0xf5c4('0x22')](path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd));}return BPromise['each'](_0x1d1087,function(_0x424976){_0x40d1bc['push'](_0x424976);})[_0xf5c4('0x17')](function(){for(var _0x49f5f6=0x0;_0x49f5f6<_0x40d1bc['length'];_0x49f5f6+=0x1){var _0x5a659a;var _0x57f379=_0x40d1bc[_0x49f5f6];if(_0x20a0ee){_0x5a659a=path['join'](_0x4b42d6,_0x4d10dd,util[_0xf5c4('0xd')](_0xf5c4('0x23'),_0x4d10dd,_0x49f5f6,'xlsx'));}else{_0x5a659a=path['join'](_0x4b42d6,util[_0xf5c4('0xd')]('%s.%s',_0x4d10dd,_0xf5c4('0x24')));}fs[_0xf5c4('0x25')](_0x5a659a,json2xls(_0x57f379),_0xf5c4('0x26'));}})['then'](function(){if(_0x20a0ee){zipdir(path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd),{'saveTo':path[_0xf5c4('0x21')](_0x4b42d6,util['format'](_0xf5c4('0x27'),_0x4d10dd,_0xf5c4('0x28')))},function(_0x515c0d,_0x45accc){});rimraf(path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd),function(){});}})[_0xf5c4('0x17')](function(){logger[_0xf5c4('0xc')](util[_0xf5c4('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xf5c4('0xf')));return analyticExtractedReport(_0xf5c4('0x29'),_0x20a0ee?util[_0xf5c4('0xd')](_0xf5c4('0x27'),_0x4d10dd,_0x20a0ee?_0xf5c4('0x28'):_0xf5c4('0x24')):null);});})[_0xf5c4('0x2a')](function(_0x3f99ba){logger[_0xf5c4('0xc')](util[_0xf5c4('0xd')](_0xf5c4('0x2b'),EXTRACTED_REPORT_ID,_0xf5c4('0xf')),util[_0xf5c4('0x2c')](_0x3f99ba,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xf5c4('0x2d'));})['finally'](function(){process[_0xf5c4('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xa5ea=['%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.xlsx','length','existsSync','mkdirSync','each','join','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','lodash','json2xls','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','then','splitSizeXlsx','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','range','isInteger','forEach','push','format'];(function(_0x281cf0,_0x2b7246){var _0x2aca5d=function(_0x4983b9){while(--_0x4983b9){_0x281cf0['push'](_0x281cf0['shift']());}};_0x2aca5d(++_0x2b7246);}(_0xa5ea,0x1e9));var _0xaa5e=function(_0x19db24,_0x2497c9){_0x19db24=_0x19db24-0x0;var _0x56ce5b=_0xa5ea[_0x19db24];return _0x56ce5b;};'use strict';var util=require('util');var path=require('path');var _=require(_0xaa5e('0x0'));var fs=require('fs');var json2xls=require(_0xaa5e('0x1'));var BPromise=require(_0xaa5e('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0xaa5e('0x3'));var db=require(_0xaa5e('0x4'))['db'];var dbH=require(_0xaa5e('0x4'))[_0xaa5e('0x5')];var logger=require(_0xaa5e('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xaa5e('0x7')][0x3];var PATH=process[_0xaa5e('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2305fd,_0xeb267f){var _0x1cf2ee={'status':_0x2305fd};var _0x1d8c19={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xeb267f){_0x1cf2ee[_0xaa5e('0x8')]=_0xeb267f;}return db[_0xaa5e('0x9')][_0xaa5e('0xa')](_0x1cf2ee,_0x1d8c19);}function main(){var _0x481dfc=0x1388;var _0x4af263;logger[_0xaa5e('0xb')](util['format'](_0xaa5e('0xc'),EXTRACTED_REPORT_ID,_0xaa5e('0xd')));return db[_0xaa5e('0xe')][_0xaa5e('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeXlsx']})[_0xaa5e('0x10')](function(_0x423abc){if(_0x423abc){_0x4af263=_0x423abc;_0x481dfc=_0x4af263[_0xaa5e('0x11')]||0x1388;}})[_0xaa5e('0x10')](function(){return dbH[_0xaa5e('0x12')][_0xaa5e('0x13')](util['format'](_0xaa5e('0x14'),QUERY),{'type':dbH[_0xaa5e('0x12')][_0xaa5e('0x15')][_0xaa5e('0x16')]});})[_0xaa5e('0x10')](function(_0x40e2cd){if(!_0x40e2cd[0x0][_0xaa5e('0x17')]){return analyticExtractedReport(_0xaa5e('0x18'));}var _0x4a6bc9=[];var _0x42abf5=0x0;if(_0x4af263[_0xaa5e('0x19')]){if(_0x40e2cd&&_0x40e2cd['length']){var _0x411e67=_[_0xaa5e('0x1a')](_0x40e2cd[0x0]['num']/_0x481dfc);var _0x28e87c=Number[_0xaa5e('0x1b')](_0x40e2cd[0x0][_0xaa5e('0x17')]/_0x481dfc)?_0x40e2cd[0x0][_0xaa5e('0x17')]%_0x481dfc:0x0;_0x411e67[_0xaa5e('0x1c')](function(_0x2ec41e){if(_0x2ec41e>0x0){_0x42abf5+=_0x481dfc;}_0x4a6bc9[_0xaa5e('0x1d')](dbH[_0xaa5e('0x12')]['query'](util[_0xaa5e('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x481dfc,_0x42abf5),{'type':dbH[_0xaa5e('0x12')][_0xaa5e('0x15')][_0xaa5e('0x16')]}));});if(_0x28e87c>0x0){_0x42abf5+=_0x481dfc;_0x4a6bc9[_0xaa5e('0x1d')](dbH[_0xaa5e('0x12')][_0xaa5e('0x13')](util[_0xaa5e('0x1e')](_0xaa5e('0x1f'),QUERY,_0x28e87c,_0x42abf5),{'type':dbH[_0xaa5e('0x12')]['QueryTypes'][_0xaa5e('0x16')]}));}}}else{_0x4a6bc9[_0xaa5e('0x1d')](dbH[_0xaa5e('0x12')][_0xaa5e('0x13')](QUERY,{'type':dbH[_0xaa5e('0x12')][_0xaa5e('0x15')]['SELECT']}));}var _0x5a3450=path[_0xaa5e('0x20')](PATH);var _0x2cb824=path[_0xaa5e('0x21')](PATH,_0xaa5e('0x22'));var _0x5cf869=_0x4af263['split']&&_0x4a6bc9[_0xaa5e('0x23')]>0x1;var _0x443607=[];if(!fs[_0xaa5e('0x24')](path['join'](_0x5a3450,_0x2cb824))&&_0x5cf869){fs[_0xaa5e('0x25')](path['join'](_0x5a3450,_0x2cb824));}return BPromise[_0xaa5e('0x26')](_0x4a6bc9,function(_0x326f54){_0x443607[_0xaa5e('0x1d')](_0x326f54);})[_0xaa5e('0x10')](function(){for(var _0x35cbf0=0x0;_0x35cbf0<_0x443607[_0xaa5e('0x23')];_0x35cbf0+=0x1){var _0x376be0;var _0x4821df=_0x443607[_0x35cbf0];if(_0x5cf869){_0x376be0=path[_0xaa5e('0x27')](_0x5a3450,_0x2cb824,util['format'](_0xaa5e('0x28'),_0x2cb824,_0x35cbf0,_0xaa5e('0x29')));}else{_0x376be0=path['join'](_0x5a3450,util[_0xaa5e('0x1e')](_0xaa5e('0x2a'),_0x2cb824,_0xaa5e('0x29')));}fs[_0xaa5e('0x2b')](_0x376be0,json2xls(_0x4821df),_0xaa5e('0x2c'));}})[_0xaa5e('0x10')](function(){if(_0x5cf869){return new Promise(function(_0xdc1318){zipdir(path[_0xaa5e('0x27')](_0x5a3450,_0x2cb824),{'saveTo':path[_0xaa5e('0x27')](_0x5a3450,util[_0xaa5e('0x1e')]('%s.%s',_0x2cb824,_0xaa5e('0x2d')))},function(_0x29a736,_0xdfe164){rimraf(path['join'](_0x5a3450,_0x2cb824),function(){});_0xdc1318('zip\x20finished');});});}})[_0xaa5e('0x10')](function(){logger[_0xaa5e('0xb')](util[_0xaa5e('0x1e')](_0xaa5e('0x2e'),EXTRACTED_REPORT_ID,_0xaa5e('0xd')));return analyticExtractedReport('Completed',_0x5cf869?util[_0xaa5e('0x1e')](_0xaa5e('0x2a'),_0x2cb824,_0x5cf869?_0xaa5e('0x2d'):_0xaa5e('0x29')):null);});})[_0xaa5e('0x2f')](function(_0xfff1c4){logger['info'](util[_0xaa5e('0x1e')](_0xaa5e('0x30'),EXTRACTED_REPORT_ID,_0xaa5e('0xd')),util[_0xaa5e('0x31')](_0xfff1c4,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xaa5e('0x32')](function(){process[_0xaa5e('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
index d839adc..a90f61b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da5=['exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','push','CDR(type)=%s','context','VoiceExtensionId','type','inbound','CDR(routeid)=','Set','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','map','intervals','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','sortBy','catch','error','rewrite','util','models','Interval','findAll','then','VoiceExtension','uniq'];(function(_0x50e662,_0x464fa5){var _0x203ec5=function(_0x16f354){while(--_0x16f354){_0x50e662['push'](_0x50e662['shift']());}};_0x203ec5(++_0x464fa5);}(_0x5da5,0x1dc));var _0x55da=function(_0x5a147f,_0x5df280){_0x5a147f=_0x5a147f-0x0;var _0x1d7bed=_0x5da5[_0x5a147f];return _0x1d7bed;};'use strict';var _=require('lodash');var util=require(_0x55da('0x0'));function rewrite(_0x2848c8,_0x1ca046){var _0x301547=this;return _0x2848c8[_0x55da('0x1')][_0x55da('0x2')][_0x55da('0x3')]({'raw':!![]})[_0x55da('0x4')](function(_0x9874d3){_0x301547['intervals']=_0x9874d3;return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')][_0x55da('0x3')]({'where':{'IntervalId':_0x1ca046['IntervalId']},'raw':!![]});})[_0x55da('0x4')](function(_0xda47e0){return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')][_0x55da('0x3')]({'where':{'exten':{'$in':_[_0x55da('0x6')](_['map'](_0xda47e0,_0x55da('0x7')))}},'order':[{'raw':_0x55da('0x8')}],'raw':!![]});})[_0x55da('0x4')](function(_0x2d9f55){var _0x5cb7d1=_['filter'](_0x2d9f55,{'priority':'1'});var _0x21e683=_[_0x55da('0x9')](_0x2d9f55,{'isApp':0x1});var _0x41c5e9=_[_0x55da('0xa')](_0x21e683,_0x55da('0x7'));var _0x45fc00=[_0x55da('0xb'),_0x55da('0xc')];var _0x478463=[];var _0x238698=[];for(var _0x34ba5e in _0x41c5e9){if(_0x41c5e9[_0x55da('0xd')](_0x34ba5e)){_0x301547[_0x55da('0xe')]=0x2;_0x301547[_0x55da('0xf')]=[];_0x301547[_0x55da('0x10')]=_['find'](_0x5cb7d1,{'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')]});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':'Set','appdata':util['format'](_0x55da('0x12'),_0x41c5e9[_0x34ba5e][0x0]['type']),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0]['exten'],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});if(_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')]===_0x55da('0x16')){_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x17')+_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId'],'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});}else if(_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')]==='outbound'){if(_0x301547[_0x55da('0x10')]){_0x301547[_0x55da('0xf')]['push']({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':_0x55da('0x19')+(_0x301547['extension'][_0x55da('0x1a')]?'${EXTEN:'+_0x301547[_0x55da('0x10')][_0x55da('0x1a')]+'}':_0x55da('0x1b')),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});}_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':_0x55da('0x17')+_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')],'context':_0x41c5e9[_0x34ba5e][0x0]['context'],'exten':_0x41c5e9[_0x34ba5e][0x0]['exten'],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});var _0x1545d5=_0x301547['priority']++;_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':_0x55da('0x1c'),'appdata':_0x55da('0x1d')+(_0x1545d5+0x2)+_0x55da('0x1e')+(_0x1545d5+0x1)+')','context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x1545d5,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});if(_0x301547[_0x55da('0x10')]){_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':'Set','appdata':_0x301547[_0x55da('0x10')][_0x55da('0x1a')]?_0x55da('0x1f')+_0x301547[_0x55da('0x10')]['cutdigits']+'}':_0x55da('0x20'),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0]['exten'],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});}_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':'outboundrouteid='+_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')],'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});if(_0x301547[_0x55da('0x10')]&&_0x301547[_0x55da('0x10')][_0x55da('0xd')](_0x55da('0x21'))&&_0x301547[_0x55da('0x10')][_0x55da('0x21')]!=='none'){_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x41c5e9[_0x34ba5e][0x0]['context'],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':_0x55da('0x18'),'appdata':_0x55da('0x22')+_0x301547[_0x55da('0x10')]['recordingFormat']||'wav','context':_0x41c5e9[_0x34ba5e][0x0]['context'],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});}}_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x23'),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x24'),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});for(var _0x5a469b=0x0,_0x158abe=0x0;_0x5a469b<_0x41c5e9[_0x34ba5e][_0x55da('0x25')];_0x5a469b+=0x1,_0x158abe=0x0){var _0x436820=_0x41c5e9[_0x34ba5e][_0x5a469b];if(_0x436820[_0x55da('0x15')]){_0x436820['type']=_0x436820['type'][_0x55da('0x26')]();}var _0x40f8f6=[];var _0x393376=[];delete _0x436820['id'];delete _0x436820[_0x55da('0x27')];delete _0x436820[_0x55da('0x28')];var _0x10404d=_0x436820[_0x55da('0x29')]!==_0x55da('0x2a')?[_0x436820[_0x55da('0x29')]]:_0x436820[_0x55da('0x2b')]?_[_0x55da('0x2c')](_[_0x55da('0x9')](_0x301547[_0x55da('0x2d')],{'IntervalId':_0x436820['IntervalId']}),'interval'):[];if(_0x436820[_0x55da('0xd')](_0x55da('0x2e'))){if(_0x436820[_0x55da('0x2e')]&&_0x436820[_0x55da('0x2e')]!=='--'){_0x40f8f6[_0x55da('0x11')]({'type':_0x436820[_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':_0x55da('0x2f')+_0x436820[_0x55da('0x2e')],'context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d['length']+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820['VoiceExtensionId']});}}if(_0x436820[_0x55da('0x15')]===_0x55da('0x30')&&_0x436820[_0x55da('0xd')]('callerID')){if(_0x436820['callerID']){_0x40f8f6[_0x55da('0x11')]({'type':_0x436820['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x436820[_0x55da('0x31')]+')','context':_0x436820[_0x55da('0x13')],'exten':_0x436820['exten'],'priority':_0x10404d[_0x55da('0x25')]+_0x301547['priority']+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}else{_0x40f8f6['push']({'type':_0x436820[_0x55da('0x15')],'app':'ExecIf','appdata':_0x55da('0x32'),'context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}}if(_0x436820[_0x55da('0xd')](_0x55da('0x33'))){if(_0x45fc00['indexOf'](_0x436820[_0x55da('0x34')][_0x55da('0x26')]())>=0x0&&_0x436820[_0x55da('0x35')]!==_0x55da('0x36')){if(_0x436820[_0x55da('0x33')]){_0x40f8f6[_0x55da('0x11')]({'type':_0x436820[_0x55da('0x15')],'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});_0x40f8f6[_0x55da('0x11')]({'type':_0x436820[_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x37'),'context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}else{_0x40f8f6['push']({'type':_0x436820[_0x55da('0x15')],'app':_0x55da('0x1c'),'appdata':_0x55da('0x38'),'context':_0x436820[_0x55da('0x13')],'exten':_0x436820['exten'],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});_0x40f8f6['push']({'type':_0x436820[_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}}}for(var _0x2c89ff=0x0;_0x2c89ff<_0x10404d[_0x55da('0x25')];_0x2c89ff+=0x1){var _0x488153=_0x301547[_0x55da('0xe')]+_0x10404d['length'];var _0x2b3fbb=_0x2c89ff===_0x10404d['length']-0x1?_0x301547['priority']+_0x40f8f6['length']+_0x393376[_0x55da('0x25')]+0x2:_0x301547[_0x55da('0xe')]+_0x2c89ff+0x1;_0x40f8f6[_0x55da('0x39')](_0x2c89ff,0x0,{'type':_0x436820['type'],'app':_0x55da('0x3a'),'appdata':_0x10404d[_0x2c89ff]+'?'+_0x436820[_0x55da('0x13')]+',${EXTEN},'+_0x488153+':'+_0x436820['context']+_0x55da('0x3b')+_0x2b3fbb,'exten':_0x436820[_0x55da('0x7')],'context':_0x436820[_0x55da('0x13')],'priority':_0x301547[_0x55da('0xe')]+_0x2c89ff,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});}_0x436820['priority']=_0x40f8f6[_0x55da('0x25')]?_['last'](_0x40f8f6)['priority']+0x1:_0x301547[_0x55da('0xe')];_0x301547[_0x55da('0xe')]=(_0x393376[_0x55da('0x25')]?_[_0x55da('0x3c')](_0x393376)[_0x55da('0xe')]:_0x436820['priority'])+0x1;_0x301547['extensions']=_[_0x55da('0x3d')](_0x301547[_0x55da('0xf')],_0x40f8f6,[_0x436820],_0x393376);}_0x301547['extensions'][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':_0x55da('0x3e'),'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'priority':_0x301547[_0x55da('0xe')],'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});_0x478463[_0x55da('0x11')](_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]);_0x238698=_[_0x55da('0x3d')](_0x238698,_0x301547[_0x55da('0xf')]);}}return _0x2848c8[_0x55da('0x3f')](function(_0x13741c){return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')][_0x55da('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x478463}},'transaction':_0x13741c})[_0x55da('0x4')](function(_0x24f233){return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')]['bulkCreate'](_[_0x55da('0x41')](_0x238698,_0x55da('0xe')),{'transaction':_0x13741c});});});})[_0x55da('0x42')](function(_0x5143f7){console[_0x55da('0x43')](_0x5143f7);});}exports[_0x55da('0x44')]=rewrite;
\ No newline at end of file
+var _0xf994=[',${EXTEN},','last','concat','destroy','models','sortBy','catch','error','rewrite','lodash','util','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','filter','groupBy','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(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','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','splice','GotoIfTime'];(function(_0x329a9e,_0x67516c){var _0x2afa23=function(_0x2907aa){while(--_0x2907aa){_0x329a9e['push'](_0x329a9e['shift']());}};_0x2afa23(++_0x67516c);}(_0xf994,0x8f));var _0x4f99=function(_0x7b9eff,_0x3bcb47){_0x7b9eff=_0x7b9eff-0x0;var _0x228f42=_0xf994[_0x7b9eff];return _0x228f42;};'use strict';var _=require(_0x4f99('0x0'));var util=require(_0x4f99('0x1'));function rewrite(_0x6b83eb,_0x8a4500){var _0xebb7e7=this;return _0x6b83eb['models']['Interval'][_0x4f99('0x2')]({'raw':!![]})[_0x4f99('0x3')](function(_0x16f85e){_0xebb7e7[_0x4f99('0x4')]=_0x16f85e;return _0x6b83eb['models'][_0x4f99('0x5')][_0x4f99('0x2')]({'where':{'IntervalId':_0x8a4500[_0x4f99('0x6')]},'raw':!![]});})[_0x4f99('0x3')](function(_0x3f7d0e){return _0x6b83eb['models']['VoiceExtension'][_0x4f99('0x2')]({'where':{'exten':{'$in':_[_0x4f99('0x7')](_[_0x4f99('0x8')](_0x3f7d0e,_0x4f99('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x4f99('0x3')](function(_0x42e0b2){var _0x326976=_[_0x4f99('0xa')](_0x42e0b2,{'priority':'1'});var _0x48b1d8=_['filter'](_0x42e0b2,{'isApp':0x1});var _0xb285bf=_[_0x4f99('0xb')](_0x48b1d8,_0x4f99('0x9'));var _0x581d8a=['queue','playback'];var _0x2938e1=[];var _0x3b4be2=[];for(var _0x313f7f in _0xb285bf){if(_0xb285bf[_0x4f99('0xc')](_0x313f7f)){_0xebb7e7[_0x4f99('0xd')]=0x2;_0xebb7e7[_0x4f99('0xe')]=[];_0xebb7e7[_0x4f99('0xf')]=_[_0x4f99('0x10')](_0x326976,{'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')]});_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':util[_0x4f99('0x14')](_0x4f99('0x15'),_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')]),'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0]['exten'],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});if(_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')]===_0x4f99('0x18')){_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x19')+_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId'],'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0]['exten'],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});}else if(_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')]===_0x4f99('0x1a')){if(_0xebb7e7['extension']){_0xebb7e7['extensions'][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0]['type'],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x1b')+(_0xebb7e7[_0x4f99('0xf')][_0x4f99('0x1c')]?_0x4f99('0x1d')+_0xebb7e7['extension'][_0x4f99('0x1c')]+'}':_0x4f99('0x1e')),'context':_0xb285bf[_0x313f7f][0x0]['context'],'exten':_0xb285bf[_0x313f7f][0x0]['exten'],'priority':_0xebb7e7['priority']++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});}_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':'Set','appdata':_0x4f99('0x19')+_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId'],'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});var _0x4db13c=_0xebb7e7[_0x4f99('0xd')]++;_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x1f'),'appdata':_0x4f99('0x20')+(_0x4db13c+0x2)+'):Goto('+(_0x4db13c+0x1)+')','context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0x4db13c,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId']});if(_0xebb7e7[_0x4f99('0xf')]){_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0]['type'],'app':_0x4f99('0x13'),'appdata':_0xebb7e7[_0x4f99('0xf')]['cutdigits']?_0x4f99('0x21')+_0xebb7e7[_0x4f99('0xf')]['cutdigits']+'}':_0x4f99('0x22'),'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});}_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0]['type'],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x23')+_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')],'context':_0xb285bf[_0x313f7f][0x0]['context'],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7['priority']++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});if(_0xebb7e7[_0x4f99('0xf')]&&_0xebb7e7[_0x4f99('0xf')]['hasOwnProperty'](_0x4f99('0x24'))&&_0xebb7e7['extension'][_0x4f99('0x24')]!=='none'){_0xebb7e7['extensions']['push']({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});_0xebb7e7[_0x4f99('0xe')]['push']({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x25')+_0xebb7e7[_0x4f99('0xf')][_0x4f99('0x24')]||_0x4f99('0x26'),'context':_0xb285bf[_0x313f7f][0x0]['context'],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7['priority']++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId']});}}_0xebb7e7['extensions']['push']({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x27'),'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});_0xebb7e7['extensions'][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x28'),'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});_0xebb7e7[_0x4f99('0xe')][_0x4f99('0x11')]({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'priority':_0xebb7e7[_0x4f99('0xd')]++,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x17')]});for(var _0x225e1f=0x0,_0x4d584e=0x0;_0x225e1f<_0xb285bf[_0x313f7f][_0x4f99('0x29')];_0x225e1f+=0x1,_0x4d584e=0x0){var _0x593b22=_0xb285bf[_0x313f7f][_0x225e1f];if(_0x593b22[_0x4f99('0x12')]){_0x593b22['type']=_0x593b22[_0x4f99('0x12')]['toLowerCase']();}var _0x15cbdf=[];var _0x4329ee=[];delete _0x593b22['id'];delete _0x593b22[_0x4f99('0x2a')];delete _0x593b22[_0x4f99('0x2b')];var _0x1011f=_0x593b22[_0x4f99('0x2c')]!==_0x4f99('0x2d')?[_0x593b22[_0x4f99('0x2c')]]:_0x593b22[_0x4f99('0x6')]?_[_0x4f99('0x8')](_['filter'](_0xebb7e7[_0x4f99('0x4')],{'IntervalId':_0x593b22['IntervalId']}),_0x4f99('0x2c')):[];if(_0x593b22[_0x4f99('0xc')](_0x4f99('0x2e'))){if(_0x593b22['tag']&&_0x593b22[_0x4f99('0x2e')]!=='--'){_0x15cbdf[_0x4f99('0x11')]({'type':_0x593b22[_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':_0x4f99('0x2f')+_0x593b22[_0x4f99('0x2e')],'context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22[_0x4f99('0x9')],'priority':_0x1011f['length']+_0xebb7e7[_0x4f99('0xd')]+_0x4d584e++,'VoiceExtensionId':_0x593b22['VoiceExtensionId']});}}if(_0x593b22[_0x4f99('0x12')]===_0x4f99('0x1a')&&_0x593b22['hasOwnProperty']('callerID')){if(_0x593b22[_0x4f99('0x30')]){_0x15cbdf[_0x4f99('0x11')]({'type':_0x593b22[_0x4f99('0x12')],'app':_0x4f99('0x1f'),'appdata':_0x4f99('0x31')+_0x593b22[_0x4f99('0x30')]+')','context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22['exten'],'priority':_0x1011f['length']+_0xebb7e7['priority']+_0x4d584e++,'VoiceExtensionId':_0x593b22['VoiceExtensionId']});}else{_0x15cbdf[_0x4f99('0x11')]({'type':_0x593b22['type'],'app':_0x4f99('0x1f'),'appdata':_0x4f99('0x32'),'context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22[_0x4f99('0x9')],'priority':_0x1011f[_0x4f99('0x29')]+_0xebb7e7[_0x4f99('0xd')]+_0x4d584e++,'VoiceExtensionId':_0x593b22['VoiceExtensionId']});}}if(_0x593b22[_0x4f99('0xc')](_0x4f99('0x33'))){if(_0x581d8a['indexOf'](_0x593b22[_0x4f99('0x34')]['toLowerCase']())>=0x0&&_0x593b22[_0x4f99('0x35')]!==_0x4f99('0x36')){if(_0x593b22[_0x4f99('0x33')]){_0x15cbdf[_0x4f99('0x11')]({'type':_0x593b22[_0x4f99('0x12')],'app':_0x4f99('0x1f'),'appdata':_0x4f99('0x37'),'context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22['exten'],'priority':_0x1011f[_0x4f99('0x29')]+_0xebb7e7[_0x4f99('0xd')]+_0x4d584e++,'VoiceExtensionId':_0x593b22[_0x4f99('0x17')]});_0x15cbdf[_0x4f99('0x11')]({'type':_0x593b22[_0x4f99('0x12')],'app':_0x4f99('0x13'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22[_0x4f99('0x9')],'priority':_0x1011f[_0x4f99('0x29')]+_0xebb7e7[_0x4f99('0xd')]+_0x4d584e++,'VoiceExtensionId':_0x593b22['VoiceExtensionId']});}else{_0x15cbdf[_0x4f99('0x11')]({'type':_0x593b22[_0x4f99('0x12')],'app':_0x4f99('0x1f'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22['exten'],'priority':_0x1011f[_0x4f99('0x29')]+_0xebb7e7['priority']+_0x4d584e++,'VoiceExtensionId':_0x593b22[_0x4f99('0x17')]});_0x15cbdf['push']({'type':_0x593b22[_0x4f99('0x12')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x593b22[_0x4f99('0x16')],'exten':_0x593b22['exten'],'priority':_0x1011f[_0x4f99('0x29')]+_0xebb7e7[_0x4f99('0xd')]+_0x4d584e++,'VoiceExtensionId':_0x593b22['VoiceExtensionId']});}}}for(var _0x5e4fca=0x0;_0x5e4fca<_0x1011f[_0x4f99('0x29')];_0x5e4fca+=0x1){var _0x222f46=_0xebb7e7[_0x4f99('0xd')]+_0x1011f[_0x4f99('0x29')];var _0x412029=_0x5e4fca===_0x1011f['length']-0x1?_0xebb7e7[_0x4f99('0xd')]+_0x15cbdf['length']+_0x4329ee[_0x4f99('0x29')]+0x2:_0xebb7e7[_0x4f99('0xd')]+_0x5e4fca+0x1;_0x15cbdf[_0x4f99('0x38')](_0x5e4fca,0x0,{'type':_0x593b22[_0x4f99('0x12')],'app':_0x4f99('0x39'),'appdata':_0x1011f[_0x5e4fca]+'?'+_0x593b22['context']+_0x4f99('0x3a')+_0x222f46+':'+_0x593b22[_0x4f99('0x16')]+_0x4f99('0x3a')+_0x412029,'exten':_0x593b22[_0x4f99('0x9')],'context':_0x593b22['context'],'priority':_0xebb7e7[_0x4f99('0xd')]+_0x5e4fca,'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId']});}_0x593b22[_0x4f99('0xd')]=_0x15cbdf['length']?_[_0x4f99('0x3b')](_0x15cbdf)[_0x4f99('0xd')]+0x1:_0xebb7e7['priority'];_0xebb7e7[_0x4f99('0xd')]=(_0x4329ee[_0x4f99('0x29')]?_[_0x4f99('0x3b')](_0x4329ee)[_0x4f99('0xd')]:_0x593b22['priority'])+0x1;_0xebb7e7[_0x4f99('0xe')]=_['concat'](_0xebb7e7[_0x4f99('0xe')],_0x15cbdf,[_0x593b22],_0x4329ee);}_0xebb7e7['extensions']['push']({'type':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x12')],'app':'Hangup','exten':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x9')],'context':_0xb285bf[_0x313f7f][0x0][_0x4f99('0x16')],'priority':_0xebb7e7[_0x4f99('0xd')],'VoiceExtensionId':_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId']});_0x2938e1['push'](_0xb285bf[_0x313f7f][0x0]['VoiceExtensionId']);_0x3b4be2=_[_0x4f99('0x3c')](_0x3b4be2,_0xebb7e7[_0x4f99('0xe')]);}}return _0x6b83eb['transaction'](function(_0x39177e){return _0x6b83eb['models'][_0x4f99('0x5')][_0x4f99('0x3d')]({'where':{'VoiceExtensionId':{'$in':_0x2938e1}},'transaction':_0x39177e})[_0x4f99('0x3')](function(_0x2b76bf){return _0x6b83eb[_0x4f99('0x3e')]['VoiceExtension']['bulkCreate'](_[_0x4f99('0x3f')](_0x3b4be2,_0x4f99('0xd')),{'transaction':_0x39177e});});});})[_0x4f99('0x40')](function(_0x3f53cf){console[_0x4f99('0x41')](_0x3f53cf);});}exports[_0x4f99('0x42')]=rewrite;
\ No newline at end of file
index 1e09be8..c04a8b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39cc=['always','query','VoiceQueueId','onlyIfOpen','push','sequelize','all','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','resume','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','stringify','exit','CSV\x20import\x20process\x20stopped!','resolve','createReadStream','duplicate','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','lodash','../../../config/environment','api','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','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','map','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','email','ListId','Duplicate\x20Contact','CmContact','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','cmContact','inspect','insert','into','cm_hopper','fromQuery','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','cm_contacts','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','str','id\x20IN\x20?','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x39cc,0x14c));var _0xc39c=function(_0x3b5c14,_0xc3ffa5){_0x3b5c14=_0x3b5c14-0x0;var _0x37e2f2=_0x39cc[_0x3b5c14];return _0x37e2f2;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0xc39c('0x0'));var fs=require('fs');var squel=require('squel');var Papa=require('papaparse');var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xc39c('0x1'));var logger=require('../../../config/logger')(_0xc39c('0x2'));config[_0xc39c('0x3')]=_['defaults'](config[_0xc39c('0x3')],{'host':_0xc39c('0x4'),'port':0x18eb});var socket=require(_0xc39c('0x5'))(new Redis(config[_0xc39c('0x3')]));require(_0xc39c('0x6'))[_0xc39c('0x7')](socket);try{if(!process[_0xc39c('0x8')][0x2]||process[_0xc39c('0x8')][0x2]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x2]===_0xc39c('0xa')){throw new Error(_0xc39c('0xb'));}var FILEPATH=process[_0xc39c('0x8')][0x2];if(!process[_0xc39c('0x8')][0x3]||process[_0xc39c('0x8')][0x3]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x3]===_0xc39c('0xa')||!process[_0xc39c('0x8')][0x4]||process['argv'][0x4]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x4]===_0xc39c('0xa')){throw new Error(_0xc39c('0xc'));}var FIELDS=_['zipObject'](process[_0xc39c('0x8')][0x3][_0xc39c('0xd')](','),process[_0xc39c('0x8')][0x4][_0xc39c('0xd')](','));if(!process[_0xc39c('0x8')][0x5]||process['argv'][0x5]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x5]===_0xc39c('0xa')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process['argv'][0x5];var COMPANYID=process['argv'][0x6]&&process['argv'][0x6]!==_0xc39c('0x9')&&process[_0xc39c('0x8')][0x6]!==_0xc39c('0xa')?process[_0xc39c('0x8')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xc39c('0x8')][0x7]!=='undefined'&&process[_0xc39c('0x8')][0x7]!==_0xc39c('0xa')?process[_0xc39c('0x8')][0x7]:null;if(!process[_0xc39c('0x8')][0x8]||process[_0xc39c('0x8')][0x8]==='undefined'||process['argv'][0x8]===_0xc39c('0xa')){throw new Error(_0xc39c('0xe'));}var SOCKET_TIMESTAMP=process[_0xc39c('0x8')][0x8];}catch(_0x566053){logger['error'](_0x566053);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(_0x258ad2,_0x4ed2e0,_0x14bdce,_0x26a592){var _0x3e59d4={'message':_0x4ed2e0};_0x3e59d4[_0x258ad2]=!![];if(_0x14bdce){_0x3e59d4[_0xc39c('0xf')]=_0x14bdce;}if(_0x26a592){_0x3e59d4[_0xc39c('0x10')]=_0x26a592;}return _0x3e59d4;}function isEmail(_0x1df1b1){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))*$/[_0xc39c('0x11')](_0x1df1b1);}function checkRow(_0x12d24b,_0x5ce892,_0x239a42){return new BPromise(function(_0x4a6970,_0x4a7cce){if(_[_0xc39c('0x12')](_0x12d24b)){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),_0xc39c('0x14'),null,_0x239a42));}if(_0x12d24b[_0xc39c('0x15')]&&_0x12d24b[_0xc39c('0x15')][_0xc39c('0x16')]){var _0x114b78=_[_0xc39c('0x17')](_0x12d24b[_0xc39c('0x15')],'message')[_0xc39c('0x18')](';');return _0x4a7cce(handleCheckRowError('error',_0x114b78,null,_0x239a42));}var _0x50a751={};for(var _0x29eeb5 in FIELDS){if(FIELDS[_0xc39c('0x19')](_0x29eeb5)&&FIELDS[_0x29eeb5]){_0x50a751[_0x29eeb5]=_0x12d24b[_0xc39c('0x1a')][0x0][FIELDS[_0x29eeb5]]||_0x12d24b[_0xc39c('0x1a')][0x0]['\ufeff'+FIELDS[_0x29eeb5]];}}if(!_0x50a751[_0xc39c('0x1b')]){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),'firstName\x20not\x20specified!',null,_0x239a42));}if(!_0x50a751[_0xc39c('0x1c')]){return _0x4a7cce(handleCheckRowError('error',_0xc39c('0x1d'),null,_0x239a42));}if(_0x50a751[_0xc39c('0x1e')]){var _0x47f453=moment(_0x50a751[_0xc39c('0x1e')],'YYYY-MM-DD');if(!_0x47f453[_0xc39c('0x1f')]()){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x239a42));}}if(_0x50a751['email']){if(!isEmail(_0x50a751[_0xc39c('0x20')])){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x239a42));}}_0x50a751[_0xc39c('0x21')]=LISTID;_0x50a751['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xc39c('0x16')]&&_0x5ce892){var _0x33bbd7={};for(var _0x26eccb=0x0,_0x42dbdf=DUPLICATES['length'];_0x26eccb<_0x42dbdf;_0x26eccb+=0x1){_0x33bbd7[DUPLICATES[_0x26eccb]]=_0x50a751[DUPLICATES[_0x26eccb]];}var _0x523e72=_['find'](_0x5ce892,_0x33bbd7);if(_0x523e72){return _0x4a7cce(handleCheckRowError('duplicate',_0xc39c('0x22'),_0x523e72,_0x239a42));}}return db[_0xc39c('0x23')]['create'](_0x50a751,{'raw':!![],'hooks':![],'fields':_['keys'](_0x50a751)})[_0xc39c('0x24')](function(_0x44a0fc){if(DUPLICATES&&DUPLICATES['length']&&_0x5ce892){_0x5ce892['push'](_[_0xc39c('0x25')](_0x50a751,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x44a0fc['id'];return _0x4a6970();})[_0xc39c('0x26')](function(_0x2e786c){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),_0xc39c('0x27')+(_0x2e786c[_0xc39c('0x28')]||JSON['stringify'](_0x2e786c)),null,_0x239a42));});});}function checkHopper(){function _0x5f3ccd(){return function(_0x5bfbdc){logger['error'](_0xc39c('0x29'),'checkHopper',util[_0xc39c('0x2a')](_0x5bfbdc,{'showHidden':![],'depth':null}));};}var _0x2965ea=function(_0x532bed,_0x2c9379){var _0x352513=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')](_0xc39c('0x2d'))[_0xc39c('0x2e')]([_0xc39c('0x1c'),'scheduledAt',_0xc39c('0x2f'),_0xc39c('0x21'),_0x2c9379,_0xc39c('0x30'),_0xc39c('0x31')],squel[_0xc39c('0x32')]()['field'](_0xc39c('0x1c'),_0xc39c('0x1c'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x35'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID[_0xc39c('0x36')](),_0xc39c('0x21'))['field'](_0x532bed['id'][_0xc39c('0x36')](),_0x2c9379)['field']('NOW()',_0xc39c('0x30'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x31'))[_0xc39c('0x37')](_0xc39c('0x38'))['where']('deletedAt\x20IS\x20NULL')[_0xc39c('0x39')]('ListId\x20=\x20?',LISTID[_0xc39c('0x36')]())[_0xc39c('0x39')](_0xc39c('0x3a'))['where'](_0xc39c('0x3b'),squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'))[_0xc39c('0x37')](_0xc39c('0x2d'))[_0xc39c('0x39')](_0x2c9379+_0xc39c('0x3c'),_0x532bed['id'][_0xc39c('0x36')]())))['toString']();return _0x352513;};var _0x34fcd5=function(_0x4c276e,_0x4a1e18){var _0x514201=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')](_0xc39c('0x2d'))[_0xc39c('0x2e')]([_0xc39c('0x1c'),'scheduledAt',_0xc39c('0x2f'),_0xc39c('0x21'),_0x4a1e18,_0xc39c('0x30'),_0xc39c('0x31')],squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'),_0xc39c('0x1c'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x35'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID[_0xc39c('0x36')](),_0xc39c('0x21'))[_0xc39c('0x33')](_0x4c276e['id'][_0xc39c('0x36')](),_0x4a1e18)[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x30'))['field'](_0xc39c('0x34'),_0xc39c('0x31'))[_0xc39c('0x37')]('cm_contacts')[_0xc39c('0x39')](_0xc39c('0x3d'))['where'](_0xc39c('0x3e'),LISTID[_0xc39c('0x36')]())[_0xc39c('0x39')]('id\x20IN\x20?',squel[_0xc39c('0x3f')](hopperContacts))[_0xc39c('0x39')](_0xc39c('0x3a'))['where'](_0xc39c('0x3b'),squel[_0xc39c('0x32')]()[_0xc39c('0x33')]('calleridnum')[_0xc39c('0x37')]('cm_hopper_final')[_0xc39c('0x39')](_0x4a1e18+'\x20=\x20?',_0x4c276e['id'][_0xc39c('0x36')]()))[_0xc39c('0x39')](_0xc39c('0x3b'),squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'))[_0xc39c('0x37')]('cm_hopper')[_0xc39c('0x39')](_0x4a1e18+_0xc39c('0x3c'),_0x4c276e['id'][_0xc39c('0x36')]())))['toString']();return _0x514201;};function _0x30333a(_0x14f6f2,_0x4f17ee){var _0x50a203=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')](_0xc39c('0x2d'))[_0xc39c('0x2e')]([_0xc39c('0x1c'),_0xc39c('0x35'),_0xc39c('0x2f'),_0xc39c('0x21'),_0x4f17ee,_0xc39c('0x30'),_0xc39c('0x31')],squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'),_0xc39c('0x1c'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x35'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID['toString'](),_0xc39c('0x21'))[_0xc39c('0x33')](_0x14f6f2['id'][_0xc39c('0x36')](),_0x4f17ee)['field'](_0xc39c('0x34'),_0xc39c('0x30'))['field']('NOW()','updatedAt')[_0xc39c('0x37')]('cm_contacts')[_0xc39c('0x39')](_0xc39c('0x3d'))[_0xc39c('0x39')]('ListId\x20=\x20?',LISTID[_0xc39c('0x36')]())[_0xc39c('0x39')](_0xc39c('0x40'),squel[_0xc39c('0x3f')](hopperContacts))[_0xc39c('0x39')](_0xc39c('0x3a')))[_0xc39c('0x36')]();return _0x50a203;}function _0xc9b0f6(_0x1badf8,_0x537539){var _0x4817b2=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')]('cm_hopper_black')['fromQuery']([_0xc39c('0x1c'),_0xc39c('0x2f'),'ListId',_0x537539,_0xc39c('0x30'),_0xc39c('0x31')],squel['select']()['field']('phone',_0xc39c('0x1c'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID[_0xc39c('0x36')](),'ListId')[_0xc39c('0x33')](_0x1badf8['id']['toString'](),_0x537539)[_0xc39c('0x33')]('NOW()',_0xc39c('0x30'))['field'](_0xc39c('0x34'),_0xc39c('0x31'))[_0xc39c('0x37')](_0xc39c('0x38'))[_0xc39c('0x39')](_0xc39c('0x3d'))[_0xc39c('0x39')]('ListId\x20=\x20?',LISTID['toString']())[_0xc39c('0x39')]('id\x20IN\x20?',squel[_0xc39c('0x3f')](hopperContacts))[_0xc39c('0x39')](_0xc39c('0x3a')))[_0xc39c('0x36')]();return _0x4817b2;}return db[_0xc39c('0x41')][_0xc39c('0x42')]({'where':{'type':_0xc39c('0x43')},'attributes':['id',_0xc39c('0x44')],'include':[{'model':db[_0xc39c('0x45')],'as':_0xc39c('0x46'),'where':{'id':LISTID}}]})['then'](function(_0x35c45a){var _0x4d7b77=[];if(_0x35c45a){var _0x54ae01;for(var _0x1dd4f3=0x0,_0x44fb84;_0x1dd4f3<_0x35c45a[_0xc39c('0x16')];_0x1dd4f3+=0x1){_0x44fb84=_0x35c45a[_0x1dd4f3][_0xc39c('0x47')]({'plain':!![]});switch(_0x44fb84[_0xc39c('0x44')]){case _0xc39c('0x48'):_0x4d7b77['push'](db['sequelize'][_0xc39c('0x49')](_0x34fcd5(_0x44fb84,_0xc39c('0x4a')))['then'](function(){})['catch'](_0x5f3ccd()));break;case _0xc39c('0x4b'):_0x4d7b77[_0xc39c('0x4c')](db[_0xc39c('0x4d')]['query'](_0x2965ea(_0x44fb84,'VoiceQueueId'))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));break;default:_0x4d7b77['push'](db['sequelize']['query'](_0x30333a(_0x44fb84,'VoiceQueueId'))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));}}}return _0x4d7b77;})[_0xc39c('0x4e')]()[_0xc39c('0x24')](function(){return db[_0xc39c('0x41')][_0xc39c('0x42')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0xc39c('0x45')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xc39c('0x24')](function(_0x1fde02){var _0x3fe8c2=[];if(_0x1fde02){var _0xcb65b0;for(var _0x58e951=0x0,_0x315feb;_0x58e951<_0x1fde02[_0xc39c('0x16')];_0x58e951+=0x1){_0x315feb=_0x1fde02[_0x58e951][_0xc39c('0x47')]({'plain':!![]});_0x3fe8c2['push'](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0xc9b0f6(_0x315feb,_0xc39c('0x4a')))[_0xc39c('0x24')](function(){})['catch'](_0x5f3ccd()));}}return _0x3fe8c2;})['all']();})[_0xc39c('0x24')](function(){return db['Campaign'][_0xc39c('0x42')]({'attributes':['id',_0xc39c('0x44')],'include':[{'model':db[_0xc39c('0x45')],'as':'Lists','where':{'id':LISTID}}]})[_0xc39c('0x24')](function(_0x297b2e){var _0x460a7b=[];if(_0x297b2e){for(var _0x346d62=0x0,_0x3df6aa;_0x346d62<_0x297b2e[_0xc39c('0x16')];_0x346d62+=0x1){_0x3df6aa=_0x297b2e[_0x346d62][_0xc39c('0x47')]({'plain':!![]});switch(_0x3df6aa[_0xc39c('0x44')]){case _0xc39c('0x48'):_0x460a7b[_0xc39c('0x4c')](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0x34fcd5(_0x3df6aa,_0xc39c('0x4f')))['then'](function(){})['catch'](_0x5f3ccd()));break;case _0xc39c('0x4b'):_0x460a7b['push'](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0x2965ea(_0x3df6aa,_0xc39c('0x4f')))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));break;default:_0x460a7b[_0xc39c('0x4c')](db[_0xc39c('0x4d')]['query'](_0x30333a(_0x3df6aa,_0xc39c('0x4f')))[_0xc39c('0x24')](function(){})['catch'](_0x5f3ccd()));}}}return _0x460a7b;})[_0xc39c('0x4e')]();})[_0xc39c('0x24')](function(){return db['Campaign'][_0xc39c('0x42')]({'attributes':['id'],'include':[{'model':db[_0xc39c('0x45')],'as':_0xc39c('0x50'),'where':{'id':LISTID}}]})[_0xc39c('0x24')](function(_0x20ab93){var _0x4ee0ce=[];if(_0x20ab93){for(var _0x5b5671=0x0,_0x3c7b08;_0x5b5671<_0x20ab93['length'];_0x5b5671+=0x1){_0x3c7b08=_0x20ab93[_0x5b5671]['get']({'plain':!![]});_0x4ee0ce[_0xc39c('0x4c')](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0xc9b0f6(_0x3c7b08,_0xc39c('0x4f')))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));}}return _0x4ee0ce;})[_0xc39c('0x4e')]();})[_0xc39c('0x26')](function(_0x3e2b26){logger[_0xc39c('0x13')](_0xc39c('0x51'),_0xc39c('0x52'),_0x3e2b26[_0xc39c('0x28')]);});}var processPromises=function(_0x45eceb){return BPromise[_0xc39c('0x4e')](promises)[_0xc39c('0x24')](function(_0x12c964){})[_0xc39c('0x26')](function(_0x7a1879){logger[_0xc39c('0x13')](_0xc39c('0x53'),JSON['stringify'](_0x7a1879));})[_0xc39c('0x54')](function(){socket[_0xc39c('0x55')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x45eceb){return _0x45eceb[_0xc39c('0x56')]();}});};var endCsv=function(){return BPromise['resolve']()[_0xc39c('0x24')](function(){if(hopperContacts){return checkHopper();}})[_0xc39c('0x24')](function(){socket[_0xc39c('0x55')](_0xc39c('0x57')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xc39c('0x58')](FILEPATH);}catch(_0x422959){logger[_0xc39c('0x13')](_0xc39c('0x59'),JSON[_0xc39c('0x5a')](_0x422959));}finally{process[_0xc39c('0x5b')](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0xc39c('0x5c'));endCsv();});function main(){return BPromise[_0xc39c('0x5d')]()[_0xc39c('0x24')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0xc39c('0x23')][_0xc39c('0x42')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x581556){var _0x52da30=fs[_0xc39c('0x5e')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x52da30,{'header':!![],'skipEmptyLines':!![],'step':function(_0x15734f,_0x1b0fa2){total+=0x1;var _0x391e7e=total;promises['push'](checkRow(_0x15734f,_0x581556,_0x391e7e)[_0xc39c('0x24')](function(){success+=0x1;})['catch'](function(_0x48e007){if(_0x48e007[_0xc39c('0x13')]){errors+=0x1;delete _0x48e007['error'];}else if(_0x48e007['duplicate']){duplicates+=0x1;delete _0x48e007[_0xc39c('0x5f')];}rows['push'](_0x48e007);}));if(total%0xc8===0x0){_0x1b0fa2[_0xc39c('0x60')]();return processPromises(_0x1b0fa2);}},'complete':function(){return processPromises()[_0xc39c('0x24')](function(){logger[_0xc39c('0x61')](_0xc39c('0x62'));endCsv();});},'error':function(_0x23f07e,_0x5be4ea){logger['info'](_0xc39c('0x63'),JSON[_0xc39c('0x5a')](_0x23f07e));endCsv();}});})[_0xc39c('0x26')](function(_0x290d18){logger[_0xc39c('0x13')](_0xc39c('0x64'),JSON['stringify'](_0x290d18));});}main();
\ No newline at end of file
+var _0xd8c5=['resume','resolve','emit','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','redis','defaults','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','CmContact','create','keys','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','insert','into','cm_hopper','scheduledAt','ContactId','createdAt','field','NOW()','toString','updatedAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','fromQuery','id\x20IN\x20?','str','calleridnum','\x20=\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','then','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','BlackLists','CmList','CampaignId','Campaign','cmContact,\x20%s,\x20%s','generalCheckHopper','finally'];(function(_0x54d49e,_0x5d9911){var _0x4af0f1=function(_0xf117b3){while(--_0xf117b3){_0x54d49e['push'](_0x54d49e['shift']());}};_0x4af0f1(++_0x5d9911);}(_0xd8c5,0xe3));var _0x5d8c=function(_0x2d3a13,_0x19e6cc){_0x2d3a13=_0x2d3a13-0x0;var _0x135fa2=_0xd8c5[_0x2d3a13];return _0x135fa2;};'use strict';var BPromise=require(_0x5d8c('0x0'));var util=require(_0x5d8c('0x1'));var _=require(_0x5d8c('0x2'));var fs=require('fs');var squel=require(_0x5d8c('0x3'));var Papa=require(_0x5d8c('0x4'));var Redis=require('ioredis');var db=require(_0x5d8c('0x5'))['db'];var config=require(_0x5d8c('0x6'));var logger=require(_0x5d8c('0x7'))('api');config[_0x5d8c('0x8')]=_[_0x5d8c('0x9')](config[_0x5d8c('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5d8c('0xa'))[_0x5d8c('0xb')](socket);try{if(!process[_0x5d8c('0xc')][0x2]||process[_0x5d8c('0xc')][0x2]===_0x5d8c('0xd')||process[_0x5d8c('0xc')][0x2]===_0x5d8c('0xe')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x5d8c('0xc')][0x2];if(!process[_0x5d8c('0xc')][0x3]||process[_0x5d8c('0xc')][0x3]==='undefined'||process[_0x5d8c('0xc')][0x3]==='null'||!process[_0x5d8c('0xc')][0x4]||process[_0x5d8c('0xc')][0x4]===_0x5d8c('0xd')||process['argv'][0x4]===_0x5d8c('0xe')){throw new Error(_0x5d8c('0xf'));}var FIELDS=_[_0x5d8c('0x10')](process[_0x5d8c('0xc')][0x3][_0x5d8c('0x11')](','),process[_0x5d8c('0xc')][0x4]['split'](','));if(!process[_0x5d8c('0xc')][0x5]||process[_0x5d8c('0xc')][0x5]===_0x5d8c('0xd')||process[_0x5d8c('0xc')][0x5]===_0x5d8c('0xe')){throw new Error(_0x5d8c('0x12'));}var LISTID=process['argv'][0x5];var COMPANYID=process['argv'][0x6]&&process[_0x5d8c('0xc')][0x6]!==_0x5d8c('0xd')&&process['argv'][0x6]!==_0x5d8c('0xe')?process[_0x5d8c('0xc')][0x6]:null;var DUPLICATES=process[_0x5d8c('0xc')][0x7]&&process[_0x5d8c('0xc')][0x7]!==_0x5d8c('0xd')&&process[_0x5d8c('0xc')][0x7]!=='null'?process[_0x5d8c('0xc')][0x7]:null;if(!process['argv'][0x8]||process[_0x5d8c('0xc')][0x8]===_0x5d8c('0xd')||process[_0x5d8c('0xc')][0x8]===_0x5d8c('0xe')){throw new Error(_0x5d8c('0x13'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x211f31){logger[_0x5d8c('0x14')](_0x211f31);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(_0xf42b5a,_0x20bdee,_0x18660d,_0xc463e0){var _0x275fce={'message':_0x20bdee};_0x275fce[_0xf42b5a]=!![];if(_0x18660d){_0x275fce[_0x5d8c('0x15')]=_0x18660d;}if(_0xc463e0){_0x275fce[_0x5d8c('0x16')]=_0xc463e0;}return _0x275fce;}function isEmail(_0x5d32b7){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x5d32b7);}function checkRow(_0x1486f4,_0x245b1f,_0x1dc214){return new BPromise(function(_0x39f470,_0x12d75e){if(_[_0x5d8c('0x17')](_0x1486f4)){return _0x12d75e(handleCheckRowError(_0x5d8c('0x14'),_0x5d8c('0x18'),null,_0x1dc214));}if(_0x1486f4['errors']&&_0x1486f4[_0x5d8c('0x19')][_0x5d8c('0x1a')]){var _0xbb18b3=_[_0x5d8c('0x1b')](_0x1486f4['errors'],_0x5d8c('0x1c'))['join'](';');return _0x12d75e(handleCheckRowError(_0x5d8c('0x14'),_0xbb18b3,null,_0x1dc214));}var _0x32673c={};for(var _0x4e4bf9 in FIELDS){if(FIELDS['hasOwnProperty'](_0x4e4bf9)&&FIELDS[_0x4e4bf9]){_0x32673c[_0x4e4bf9]=_0x1486f4[_0x5d8c('0x1d')][0x0][FIELDS[_0x4e4bf9]]||_0x1486f4[_0x5d8c('0x1d')][0x0]['\ufeff'+FIELDS[_0x4e4bf9]];}}if(!_0x32673c['firstName']){return _0x12d75e(handleCheckRowError(_0x5d8c('0x14'),_0x5d8c('0x1e'),null,_0x1dc214));}if(!_0x32673c[_0x5d8c('0x1f')]){return _0x12d75e(handleCheckRowError(_0x5d8c('0x14'),_0x5d8c('0x20'),null,_0x1dc214));}if(_0x32673c[_0x5d8c('0x21')]){var _0x159280=moment(_0x32673c['birthDate'],_0x5d8c('0x22'));if(!_0x159280[_0x5d8c('0x23')]()){return _0x12d75e(handleCheckRowError('error',_0x5d8c('0x24'),null,_0x1dc214));}}if(_0x32673c[_0x5d8c('0x25')]){if(!isEmail(_0x32673c[_0x5d8c('0x25')])){return _0x12d75e(handleCheckRowError(_0x5d8c('0x14'),_0x5d8c('0x26'),null,_0x1dc214));}}_0x32673c[_0x5d8c('0x27')]=LISTID;_0x32673c[_0x5d8c('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x5d8c('0x1a')]&&_0x245b1f){var _0xce0d0={};for(var _0x1f3c35=0x0,_0x44c1b1=DUPLICATES['length'];_0x1f3c35<_0x44c1b1;_0x1f3c35+=0x1){_0xce0d0[DUPLICATES[_0x1f3c35]]=_0x32673c[DUPLICATES[_0x1f3c35]];}var _0x4cb3ee=_['find'](_0x245b1f,_0xce0d0);if(_0x4cb3ee){return _0x12d75e(handleCheckRowError('duplicate','Duplicate\x20Contact',_0x4cb3ee,_0x1dc214));}}return db[_0x5d8c('0x29')][_0x5d8c('0x2a')](_0x32673c,{'raw':!![],'hooks':![],'fields':_[_0x5d8c('0x2b')](_0x32673c)})['then'](function(_0x2d7e8a){if(DUPLICATES&&DUPLICATES[_0x5d8c('0x1a')]&&_0x245b1f){_0x245b1f[_0x5d8c('0x2c')](_[_0x5d8c('0x2d')](_0x32673c,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2d7e8a['id'];return _0x39f470();})[_0x5d8c('0x2e')](function(_0x4ae70c){return _0x12d75e(handleCheckRowError(_0x5d8c('0x14'),_0x5d8c('0x2f')+(_0x4ae70c[_0x5d8c('0x1c')]||JSON[_0x5d8c('0x30')](_0x4ae70c)),null,_0x1dc214));});});}function checkHopper(){function _0x4c978b(){return function(_0x13e16e){logger['error'](_0x5d8c('0x31'),_0x5d8c('0x32'),util['inspect'](_0x13e16e,{'showHidden':![],'depth':null}));};}var _0x3b4763=function(_0x505f71,_0x258715){var _0x3d2fea=squel[_0x5d8c('0x33')]()[_0x5d8c('0x34')](_0x5d8c('0x35'))['fromQuery']([_0x5d8c('0x1f'),_0x5d8c('0x36'),_0x5d8c('0x37'),_0x5d8c('0x27'),_0x258715,_0x5d8c('0x38'),'updatedAt'],squel['select']()[_0x5d8c('0x39')](_0x5d8c('0x1f'),'phone')[_0x5d8c('0x39')](_0x5d8c('0x3a'),_0x5d8c('0x36'))[_0x5d8c('0x39')]('id',_0x5d8c('0x37'))[_0x5d8c('0x39')](LISTID[_0x5d8c('0x3b')](),_0x5d8c('0x27'))[_0x5d8c('0x39')](_0x505f71['id'][_0x5d8c('0x3b')](),_0x258715)[_0x5d8c('0x39')](_0x5d8c('0x3a'),_0x5d8c('0x38'))[_0x5d8c('0x39')](_0x5d8c('0x3a'),_0x5d8c('0x3c'))[_0x5d8c('0x3d')](_0x5d8c('0x3e'))[_0x5d8c('0x3f')](_0x5d8c('0x40'))[_0x5d8c('0x3f')](_0x5d8c('0x41'),LISTID[_0x5d8c('0x3b')]())[_0x5d8c('0x3f')](_0x5d8c('0x42'))[_0x5d8c('0x3f')](_0x5d8c('0x43'),squel[_0x5d8c('0x44')]()[_0x5d8c('0x39')](_0x5d8c('0x1f'))[_0x5d8c('0x3d')](_0x5d8c('0x35'))[_0x5d8c('0x3f')](_0x258715+'\x20=\x20?',_0x505f71['id']['toString']())))['toString']();return _0x3d2fea;};var _0xabd5e8=function(_0x3c126e,_0xc44bfc){var _0x43336b=squel[_0x5d8c('0x33')]()[_0x5d8c('0x34')](_0x5d8c('0x35'))[_0x5d8c('0x45')]([_0x5d8c('0x1f'),'scheduledAt',_0x5d8c('0x37'),'ListId',_0xc44bfc,_0x5d8c('0x38'),_0x5d8c('0x3c')],squel[_0x5d8c('0x44')]()[_0x5d8c('0x39')](_0x5d8c('0x1f'),'phone')[_0x5d8c('0x39')](_0x5d8c('0x3a'),_0x5d8c('0x36'))[_0x5d8c('0x39')]('id',_0x5d8c('0x37'))[_0x5d8c('0x39')](LISTID[_0x5d8c('0x3b')](),'ListId')['field'](_0x3c126e['id'][_0x5d8c('0x3b')](),_0xc44bfc)[_0x5d8c('0x39')]('NOW()','createdAt')['field'](_0x5d8c('0x3a'),'updatedAt')['from'](_0x5d8c('0x3e'))[_0x5d8c('0x3f')](_0x5d8c('0x40'))[_0x5d8c('0x3f')](_0x5d8c('0x41'),LISTID[_0x5d8c('0x3b')]())[_0x5d8c('0x3f')](_0x5d8c('0x46'),squel[_0x5d8c('0x47')](hopperContacts))[_0x5d8c('0x3f')](_0x5d8c('0x42'))[_0x5d8c('0x3f')](_0x5d8c('0x43'),squel[_0x5d8c('0x44')]()['field'](_0x5d8c('0x48'))['from']('cm_hopper_final')[_0x5d8c('0x3f')](_0xc44bfc+_0x5d8c('0x49'),_0x3c126e['id'][_0x5d8c('0x3b')]()))['where'](_0x5d8c('0x43'),squel['select']()[_0x5d8c('0x39')](_0x5d8c('0x1f'))[_0x5d8c('0x3d')](_0x5d8c('0x35'))[_0x5d8c('0x3f')](_0xc44bfc+_0x5d8c('0x49'),_0x3c126e['id'][_0x5d8c('0x3b')]())))[_0x5d8c('0x3b')]();return _0x43336b;};function _0x5b8619(_0x32c833,_0x510603){var _0x239ff0=squel[_0x5d8c('0x33')]()[_0x5d8c('0x34')]('cm_hopper')['fromQuery']([_0x5d8c('0x1f'),_0x5d8c('0x36'),'ContactId',_0x5d8c('0x27'),_0x510603,_0x5d8c('0x38'),'updatedAt'],squel[_0x5d8c('0x44')]()[_0x5d8c('0x39')](_0x5d8c('0x1f'),'phone')[_0x5d8c('0x39')](_0x5d8c('0x3a'),'scheduledAt')[_0x5d8c('0x39')]('id',_0x5d8c('0x37'))[_0x5d8c('0x39')](LISTID[_0x5d8c('0x3b')](),'ListId')[_0x5d8c('0x39')](_0x32c833['id'][_0x5d8c('0x3b')](),_0x510603)['field'](_0x5d8c('0x3a'),_0x5d8c('0x38'))['field'](_0x5d8c('0x3a'),_0x5d8c('0x3c'))[_0x5d8c('0x3d')]('cm_contacts')[_0x5d8c('0x3f')](_0x5d8c('0x40'))['where'](_0x5d8c('0x41'),LISTID[_0x5d8c('0x3b')]())[_0x5d8c('0x3f')]('id\x20IN\x20?',squel['str'](hopperContacts))['where'](_0x5d8c('0x42')))[_0x5d8c('0x3b')]();return _0x239ff0;}function _0x18f6ea(_0x39dd34,_0x112391){var _0x6e8a2d=squel[_0x5d8c('0x33')]()[_0x5d8c('0x34')](_0x5d8c('0x4a'))[_0x5d8c('0x45')]([_0x5d8c('0x1f'),_0x5d8c('0x37'),_0x5d8c('0x27'),_0x112391,_0x5d8c('0x38'),_0x5d8c('0x3c')],squel[_0x5d8c('0x44')]()[_0x5d8c('0x39')](_0x5d8c('0x1f'),'phone')[_0x5d8c('0x39')]('id',_0x5d8c('0x37'))[_0x5d8c('0x39')](LISTID[_0x5d8c('0x3b')](),_0x5d8c('0x27'))['field'](_0x39dd34['id'][_0x5d8c('0x3b')](),_0x112391)[_0x5d8c('0x39')](_0x5d8c('0x3a'),_0x5d8c('0x38'))[_0x5d8c('0x39')]('NOW()',_0x5d8c('0x3c'))['from'](_0x5d8c('0x3e'))[_0x5d8c('0x3f')]('deletedAt\x20IS\x20NULL')[_0x5d8c('0x3f')](_0x5d8c('0x41'),LISTID[_0x5d8c('0x3b')]())[_0x5d8c('0x3f')](_0x5d8c('0x46'),squel[_0x5d8c('0x47')](hopperContacts))['where'](_0x5d8c('0x42')))[_0x5d8c('0x3b')]();return _0x6e8a2d;}return db[_0x5d8c('0x4b')][_0x5d8c('0x4c')]({'where':{'type':_0x5d8c('0x4d')},'attributes':['id',_0x5d8c('0x4e')],'include':[{'model':db['CmList'],'as':_0x5d8c('0x4f'),'where':{'id':LISTID}}]})[_0x5d8c('0x50')](function(_0x3bc185){var _0x518500=[];if(_0x3bc185){var _0x14e4a7;for(var _0x30a143=0x0,_0x13b70e;_0x30a143<_0x3bc185['length'];_0x30a143+=0x1){_0x13b70e=_0x3bc185[_0x30a143][_0x5d8c('0x51')]({'plain':!![]});switch(_0x13b70e[_0x5d8c('0x4e')]){case _0x5d8c('0x52'):_0x518500[_0x5d8c('0x2c')](db[_0x5d8c('0x53')][_0x5d8c('0x54')](_0xabd5e8(_0x13b70e,_0x5d8c('0x55')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));break;case _0x5d8c('0x56'):_0x518500[_0x5d8c('0x2c')](db['sequelize'][_0x5d8c('0x54')](_0x3b4763(_0x13b70e,_0x5d8c('0x55')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));break;default:_0x518500[_0x5d8c('0x2c')](db[_0x5d8c('0x53')]['query'](_0x5b8619(_0x13b70e,_0x5d8c('0x55')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));}}}return _0x518500;})['all']()['then'](function(){return db[_0x5d8c('0x4b')]['findAll']({'where':{'type':_0x5d8c('0x4d')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x5d8c('0x57'),'where':{'id':LISTID}}]})[_0x5d8c('0x50')](function(_0x4c1caa){var _0x473fdd=[];if(_0x4c1caa){var _0x59a63e;for(var _0xb0841=0x0,_0x12a13a;_0xb0841<_0x4c1caa[_0x5d8c('0x1a')];_0xb0841+=0x1){_0x12a13a=_0x4c1caa[_0xb0841][_0x5d8c('0x51')]({'plain':!![]});_0x473fdd['push'](db['sequelize']['query'](_0x18f6ea(_0x12a13a,_0x5d8c('0x55')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));}}return _0x473fdd;})['all']();})[_0x5d8c('0x50')](function(){return db['Campaign'][_0x5d8c('0x4c')]({'attributes':['id',_0x5d8c('0x4e')],'include':[{'model':db[_0x5d8c('0x58')],'as':_0x5d8c('0x4f'),'where':{'id':LISTID}}]})[_0x5d8c('0x50')](function(_0x1ec216){var _0x12868f=[];if(_0x1ec216){for(var _0x1ffb69=0x0,_0x29070a;_0x1ffb69<_0x1ec216[_0x5d8c('0x1a')];_0x1ffb69+=0x1){_0x29070a=_0x1ec216[_0x1ffb69][_0x5d8c('0x51')]({'plain':!![]});switch(_0x29070a[_0x5d8c('0x4e')]){case _0x5d8c('0x52'):_0x12868f['push'](db[_0x5d8c('0x53')][_0x5d8c('0x54')](_0xabd5e8(_0x29070a,'CampaignId'))['then'](function(){})['catch'](_0x4c978b()));break;case _0x5d8c('0x56'):_0x12868f[_0x5d8c('0x2c')](db['sequelize'][_0x5d8c('0x54')](_0x3b4763(_0x29070a,_0x5d8c('0x59')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));break;default:_0x12868f[_0x5d8c('0x2c')](db[_0x5d8c('0x53')][_0x5d8c('0x54')](_0x5b8619(_0x29070a,_0x5d8c('0x59')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));}}}return _0x12868f;})['all']();})['then'](function(){return db[_0x5d8c('0x5a')][_0x5d8c('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x5d8c('0x58')],'as':_0x5d8c('0x57'),'where':{'id':LISTID}}]})[_0x5d8c('0x50')](function(_0x531708){var _0x3e1afa=[];if(_0x531708){for(var _0xc3ed54=0x0,_0x2e5121;_0xc3ed54<_0x531708[_0x5d8c('0x1a')];_0xc3ed54+=0x1){_0x2e5121=_0x531708[_0xc3ed54][_0x5d8c('0x51')]({'plain':!![]});_0x3e1afa[_0x5d8c('0x2c')](db[_0x5d8c('0x53')][_0x5d8c('0x54')](_0x18f6ea(_0x2e5121,_0x5d8c('0x59')))[_0x5d8c('0x50')](function(){})[_0x5d8c('0x2e')](_0x4c978b()));}}return _0x3e1afa;})['all']();})[_0x5d8c('0x2e')](function(_0x2506cb){logger[_0x5d8c('0x14')](_0x5d8c('0x5b'),_0x5d8c('0x5c'),_0x2506cb[_0x5d8c('0x1c')]);});}var processPromises=function(_0x301cf0){return BPromise['all'](promises)[_0x5d8c('0x50')](function(_0x3fa199){})[_0x5d8c('0x2e')](function(_0x36bae6){logger['error']('Error\x20processing\x20rows\x20block:',JSON[_0x5d8c('0x30')](_0x36bae6));})[_0x5d8c('0x5d')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x301cf0){return _0x301cf0[_0x5d8c('0x5e')]();}});};var endCsv=function(){return BPromise[_0x5d8c('0x5f')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x5d8c('0x50')](function(){socket[_0x5d8c('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x5d8c('0x61')](FILEPATH);}catch(_0x1b19de){logger[_0x5d8c('0x14')](_0x5d8c('0x62'),JSON['stringify'](_0x1b19de));}finally{process['exit'](0x0);}});};process['on'](_0x5d8c('0x63'),function(){logger[_0x5d8c('0x64')](_0x5d8c('0x65'));endCsv();});function main(){return BPromise[_0x5d8c('0x5f')]()[_0x5d8c('0x50')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x5d8c('0x11')](',');return db[_0x5d8c('0x29')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x2253c8){var _0x10bc6a=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x10bc6a,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3ae1a7,_0x19922b){total+=0x1;var _0x369ac9=total;promises[_0x5d8c('0x2c')](checkRow(_0x3ae1a7,_0x2253c8,_0x369ac9)[_0x5d8c('0x50')](function(){success+=0x1;})[_0x5d8c('0x2e')](function(_0x16a492){if(_0x16a492[_0x5d8c('0x14')]){errors+=0x1;delete _0x16a492[_0x5d8c('0x14')];}else if(_0x16a492['duplicate']){duplicates+=0x1;delete _0x16a492[_0x5d8c('0x66')];}rows[_0x5d8c('0x2c')](_0x16a492);}));if(total%0xc8===0x0){_0x19922b[_0x5d8c('0x67')]();return processPromises(_0x19922b);}},'complete':function(){return processPromises()[_0x5d8c('0x50')](function(){logger[_0x5d8c('0x64')](_0x5d8c('0x68'));endCsv();});},'error':function(_0x378fbe,_0x50c72c){logger[_0x5d8c('0x64')](_0x5d8c('0x69'),JSON[_0x5d8c('0x30')](_0x378fbe));endCsv();}});})['catch'](function(_0x54c703){logger[_0x5d8c('0x14')](_0x5d8c('0x6a'),JSON[_0x5d8c('0x30')](_0x54c703));});}main();
\ No newline at end of file
index 9f19ca0..24b0def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0371=['path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/logger','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','field','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','insert','into','cm_hopper','phone','ContactId','ListId','createdAt','updatedAt','priority','UserId','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.ListId','cm_hopper_black','fromQuery','select','.CmListId','ListId\x20=\x20?','\x20=\x20?','concat',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','error','message','errors','push','sequelize','query','spread','catch','main','stringify','binding','socket_timestamp','server/files/tmp','keys','header','createReadStream','data','hasOwnProperty','trim','replace','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','length','appendFileSync','contact:import:','abort','SystemError','step','duplicates','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','CompanyId','isNil',',\x20scheduledAt\x20=\x20NOW()','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','then','finish','affectedRows','unlink','exit','argv','root','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException'];(function(_0x239174,_0x32b098){var _0x46c4bd=function(_0x1f0a18){while(--_0x1f0a18){_0x239174['push'](_0x239174['shift']());}};_0x46c4bd(++_0x32b098);}(_0x0371,0x180));var _0x1037=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x0371[_0x3e25c1];return _0x52e7f2;};'use strict';var fs=require('fs');var path=require(_0x1037('0x0'));var _=require(_0x1037('0x1'));var Papa=require(_0x1037('0x2'));var util=require('util');var BPromise=require(_0x1037('0x3'));var moment=require(_0x1037('0x4'));var squel=require(_0x1037('0x5'));var Redis=require(_0x1037('0x6'));var db=require(_0x1037('0x7'))['db'];var config=require('../../../config/environment');var logger=require(_0x1037('0x8'))('import');config[_0x1037('0x9')]=_[_0x1037('0xa')](config[_0x1037('0x9')],{'host':_0x1037('0xb'),'port':0x18eb});var socket=require(_0x1037('0xc'))(new Redis(config[_0x1037('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x1037('0xd')](_0x1037('0xe'));function isEmail(_0x5a662b){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x5a662b);}function selectNotIn(_0x35692c,_0x203d7a,_0x692468,_0x1ba8d3,_0x2ab115){return squel['select']()[_0x1037('0xf')]('phone')['from'](_0x1ba8d3)[_0x1037('0x10')](_0x203d7a,null,_0x203d7a+_0x1037('0x11')+_0x1ba8d3+'.'+_0x692468)[_0x1037('0x12')](_0x1ba8d3+'.'+_0x692468+_0x1037('0x13')+_0x35692c+'.'+_0x692468)[_0x1037('0x12')](_0x203d7a+_0x1037('0x14')+_0x2ab115[_0x1037('0x10')]()+')');}function insertCmHopper(_0x15c478,_0xd7c7a3,_0x1130c9,_0x1c07e6,_0x440d4b){var _0x129b6f=[_0x1037('0x15'),_0x1037('0x16'),_0x1037('0x17'),'cm_contacts.ListId',_0xd7c7a3+'.'+_0x1c07e6,'cm_contacts.createdAt',_0x1037('0x18'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x440d4b+'\x22'];return squel[_0x1037('0x19')]()[_0x1037('0x1a')](_0x1037('0x1b'))['fromQuery']([_0x1037('0x1c'),'scheduledat',_0x1037('0x1d'),_0x1037('0x1e'),_0x1c07e6,_0x1037('0x1f'),_0x1037('0x20'),_0x1037('0x21'),_0x1037('0x22'),'recallme'],squel['select']()[_0x1037('0x23')](_0x129b6f)[_0x1037('0x24')](_0xd7c7a3)['join'](_0x1037('0x25'),null,_0x1037('0x26')+_0xd7c7a3+'.CmListId')[_0x1037('0x10')](_0x1130c9,null,_0x1130c9+_0x1037('0x11')+_0xd7c7a3+'.'+_0x1c07e6)[_0x1037('0x12')](_0xd7c7a3+_0x1037('0x27'),_0x15c478)[_0x1037('0x12')](_0x1037('0x28'),NOW)[_0x1037('0x12')](_0x1037('0x29'),selectNotIn(_0xd7c7a3,_0x1130c9,_0x1c07e6,_0x1037('0x1b'),['\x22always\x22',_0x1037('0x2a')]))['where'](_0x1037('0x29'),selectNotIn(_0xd7c7a3,_0x1130c9,_0x1c07e6,'cm_hopper',[_0x1037('0x2b')])))[_0x1037('0x2c')]();}function insertCmHopperBlack(_0x1b16a8,_0x367be5,_0x591db7,_0xaa2556){var _0x45d025=[_0x1037('0x15'),'cm_contacts.id',_0x1037('0x2d'),_0x367be5+'.'+_0xaa2556,'cm_contacts.createdAt',_0x1037('0x18')];return squel[_0x1037('0x19')]()[_0x1037('0x1a')](_0x1037('0x2e'))[_0x1037('0x2f')]([_0x1037('0x1c'),_0x1037('0x1d'),_0x1037('0x1e'),_0xaa2556,_0x1037('0x1f'),_0x1037('0x20')],squel[_0x1037('0x30')]()[_0x1037('0x23')](_0x45d025)[_0x1037('0x24')](_0x367be5)[_0x1037('0x10')]('cm_contacts',null,_0x1037('0x26')+_0x367be5+_0x1037('0x31'))[_0x1037('0x10')](_0x591db7,null,_0x591db7+'.id\x20=\x20'+_0x367be5+'.'+_0xaa2556)[_0x1037('0x12')](_0x367be5+_0x1037('0x27'),_0x1b16a8)[_0x1037('0x12')](_0x1037('0x28'),NOW)[_0x1037('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x1037('0x30')]()[_0x1037('0xf')]('phone')[_0x1037('0x24')](_0x1037('0x2e'))[_0x1037('0x12')](_0x1037('0x32'),_0x1b16a8)[_0x1037('0x12')](_0xaa2556+_0x1037('0x33'),_0x367be5+'.'+_0xaa2556)))['toString']();}function insertCmContact(_0x9b8b45,_0x531103,_0x225f17,_0x393975){var _0x3fedf3=_[_0x1037('0x34')](_['keys'](_0x393975),[_0x1037('0x1e'),'CompanyId',_0x1037('0x1f'),'updatedAt']);return squel[_0x1037('0x19')]()[_0x1037('0x1a')](_0x1037('0x25'))['fromQuery'](_0x3fedf3,squel[_0x1037('0x30')]()[_0x1037('0x23')](_0x3fedf3)[_0x1037('0x24')](_0x531103)[_0x1037('0x12')]('('+_0x225f17[_0x1037('0x10')](',')+_0x1037('0x35'),squel['select']()[_0x1037('0x23')](_0x225f17)['from']('cm_contacts')[_0x1037('0x12')]('ListId\x20=\x20?',_0x9b8b45)[_0x1037('0x12')]('deletedAt\x20IS\x20NULL'))['where'](_0x1037('0x36'),squel[_0x1037('0x30')]()[_0x1037('0xf')](_0x1037('0x37'),_0x1037('0x38'))[_0x1037('0x24')](_0x531103)[_0x1037('0x39')](_0x225f17['join'](','))))[_0x1037('0x2c')]();}function handleStop(){logger[_0x1037('0x3a')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x1a6ae3){logger[_0x1037('0x3b')](_0x1a6ae3[_0x1037('0x3c')]);process['exit'](0x1);}function handleError(_0x2eb0b5,_0x368360){stats[_0x1037('0x3d')][_0x1037('0x3e')]({'name':_0x368360['code'],'message':_0x368360[_0x1037('0x3c')],'row':_0x2eb0b5});}function handleQuery(_0x1ea261){logger[_0x1037('0x3a')](_0x1ea261);return db[_0x1037('0x3f')][_0x1037('0x40')](_0x1ea261)[_0x1037('0x41')](function(_0x5410bc){results[_0x1037('0x3e')](_0x5410bc);})[_0x1037('0x42')](function(_0x4b8bc1){logger[_0x1037('0x3b')](_0x4b8bc1[_0x1037('0x3c')]);});}function main(_0x134a77,_0xb9f006,_0x124a13,_0x4284df){logger['info'](_0x1037('0x43'),_0x134a77,JSON[_0x1037('0x44')](_0xb9f006));process['send']('start');var _0x27e8dc=_0xb9f006[_0x1037('0x45')];var _0x385678=_0xb9f006[_0x1037('0x46')];var _0x18ef3c=path[_0x1037('0x10')](config['root'],_0x1037('0x47'),_0x385678+'.csv');var _0x41adb4=_[_0x1037('0x48')](_0x27e8dc)[_0x1037('0x10')]();logger[_0x1037('0x3a')](_0x1037('0x49'),_0x41adb4);fs['writeFileSync'](_0x18ef3c,_0x41adb4+'\x0a');Papa['parse'](fs[_0x1037('0x4a')](_0x134a77),{'header':!![],'skipEmptyLines':!![],'step':function(_0x156bb1,_0x54e038){try{for(var _0x22f71a=0x0,_0x23ad88=[];_0x22f71a<_0x156bb1[_0x1037('0x4b')]['length'];_0x22f71a++){stats['rows']+=0x1;if(_0x156bb1['errors'][_0x22f71a]){handleError(_0x156bb1[_0x1037('0x4b')][_0x22f71a],_0x156bb1['errors'][_0x22f71a]);}else{var _0x415d59=[];for(var _0x21159f in _0x27e8dc){if(_0x27e8dc[_0x1037('0x4c')](_0x21159f)){if(_0x156bb1[_0x1037('0x4b')][_0x22f71a][_0x27e8dc[_0x21159f]]){var _0x5b96ad=_[_0x1037('0x4d')](_0x156bb1['data'][_0x22f71a][_0x27e8dc[_0x21159f]][_0x1037('0x4e')](/"/g,'\x27'));switch(_0x21159f){case _0x1037('0x4f'):var _0x40016f=moment(_0x5b96ad,_0x1037('0xe'),!![]);if(_0x40016f[_0x1037('0x50')]()){_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');}else{_0x415d59['push'](_0x1037('0x51'));}break;case _0x1037('0x21'):var _0x753564=parseInt(_0x5b96ad);_0x5b96ad=_[_0x1037('0x52')](_0x753564)||_0x753564<0x0||_0x753564>0x4?_0x4284df?0x3:0x2:_0x753564;_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');break;case _0x1037('0x22'):var _0x1eb1a4=parseInt(_0x5b96ad);if(_[_0x1037('0x53')](_0x1eb1a4)&&_[_0x1037('0x54')](_0x124a13,_0x1eb1a4)){_0x23ad88['push']('\x22'+_0x1eb1a4+'\x22');}else{_0x415d59[_0x1037('0x3e')](_0x1037('0x55'));}break;case _0x1037('0x56'):if(isEmail(_0x5b96ad)){_0x23ad88['push']('\x22'+_0x5b96ad+'\x22');}else{_0x415d59[_0x1037('0x3e')](_0x1037('0x57'));}break;case _0x1037('0x58'):var _0x2897f3=moment(_0x5b96ad,'YYYY-MM-DD',!![]);if(_0x2897f3[_0x1037('0x50')]()){_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');}else{_0x415d59[_0x1037('0x3e')](_0x1037('0x59'));}break;default:_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');}}else{switch(_0x21159f){case _0x1037('0x5a'):case _0x1037('0x1c'):_0x415d59['push'](_0x21159f+_0x1037('0x5b'));break;default:_0x23ad88['push']('\x22\x22');}}}}if(_0x415d59[_0x1037('0x5c')]){handleError(_0x156bb1[_0x1037('0x4b')][_0x22f71a],{'code':'SystemRow','message':_0x415d59['join']()});}else{fs[_0x1037('0x5d')](_0x18ef3c,_0x23ad88[_0x1037('0x10')]()+'\x0a');}_0x23ad88=[];}if(!(stats['rows']%0xc8)){socket['emit'](_0x1037('0x5e')+_0x385678,stats);stats['errors']=[];}}if(stopped){logger[_0x1037('0x3a')]('Abort\x20parser');_0x54e038[_0x1037('0x5f')]();}}catch(_0x232b65){handleError(_0x156bb1[_0x1037('0x4b')][_0x22f71a],{'code':_0x1037('0x60'),'message':_0x232b65[_0x1037('0x3c')]});logger['error'](_0x1037('0x61'),_0x232b65[_0x1037('0x3c')]);}},'complete':function(){try{var _0x39abd5=[];var _0x43d5c9=_0x1037('0x25');if(_0xb9f006['duplicates']&&_0xb9f006[_0x1037('0x62')][_0x1037('0x5c')]){_0x43d5c9='cm_contacts_'+_0x385678;_0x39abd5[_0x1037('0x3e')]('CREATE\x20TABLE\x20'+_0x43d5c9+_0x1037('0x63'));}var _0x3616e4=util[_0x1037('0xd')](_0x1037('0x64'),_0x18ef3c,_0x43d5c9,_0x41adb4,_0xb9f006[_0x1037('0x1e')],_0xb9f006[_0x1037('0x65')]||null,NOW,NOW);if(_[_0x1037('0x66')](_0x27e8dc[_0x1037('0x4f')])){_0x3616e4+=_0x1037('0x67');}_0x39abd5[_0x1037('0x3e')](_0x3616e4);if(_0xb9f006[_0x1037('0x62')]&&_0xb9f006[_0x1037('0x62')][_0x1037('0x5c')]){_0x39abd5[_0x1037('0x3e')](insertCmContact(_0xb9f006[_0x1037('0x1e')],_0x43d5c9,_0xb9f006[_0x1037('0x62')],_0x27e8dc));_0x39abd5['push']('DROP\x20TABLE\x20'+_0x43d5c9+';');}_0x39abd5[_0x1037('0x3e')](insertCmHopper(_0xb9f006[_0x1037('0x1e')],'voice_queues_has_cm_lists',_0x1037('0x68'),_0x1037('0x69'),_0x4284df));_0x39abd5[_0x1037('0x3e')](insertCmHopperBlack(_0xb9f006[_0x1037('0x1e')],'voice_queues_has_cm_blacklists','voice_queues',_0x1037('0x69')));_0x39abd5[_0x1037('0x3e')](insertCmHopper(_0xb9f006[_0x1037('0x1e')],_0x1037('0x6a'),_0x1037('0x6b'),_0x1037('0x6c'),_0x4284df));_0x39abd5['push'](insertCmHopperBlack(_0xb9f006[_0x1037('0x1e')],_0x1037('0x6d'),'campaigns',_0x1037('0x6c')));BPromise['each'](_0x39abd5,handleQuery)[_0x1037('0x6e')](function(_0x3fa73b){stats[_0x1037('0x6f')]=!![];stats[_0x1037('0x70')]=_0xb9f006[_0x1037('0x62')]&&_0xb9f006[_0x1037('0x62')][_0x1037('0x5c')]?results[0x2]['affectedRows']:results[0x0][_0x1037('0x70')];socket['emit'](_0x1037('0x5e')+_0x385678,stats);fs['unlink'](_0x134a77);fs[_0x1037('0x71')](_0x18ef3c);process[_0x1037('0x72')](0x0);})['catch'](function(_0x430f00){logger['error'](_0x430f00['message']);process[_0x1037('0x72')](0x1);});}catch(_0x4bed75){logger[_0x1037('0x3b')]('complete',_0x4bed75[_0x1037('0x3c')]);process['exit'](0x1);}},'error':function(_0x33d338,_0x90cc36,_0x1e2f66,_0x51827c){throw new Error(_0x51827c);}});}function validate(){if(process[_0x1037('0x73')]&&process[_0x1037('0x73')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x1cbdbc=path[_0x1037('0x10')](config[_0x1037('0x74')],_0x1037('0x47'),process[_0x1037('0x73')][0x2]);if(!fs[_0x1037('0x75')](_0x1cbdbc)){throw new Error(_0x1037('0x76'));}var _0x24dc8d={};try{_0x24dc8d=JSON[_0x1037('0x77')](process[_0x1037('0x73')][0x3]);if(!_0x24dc8d['binding']){throw new Error(_0x1037('0x78'));}if(!_0x24dc8d['binding'][_0x1037('0x1c')]){throw new Error(_0x1037('0x79'));}if(!_0x24dc8d[_0x1037('0x45')][_0x1037('0x5a')]){throw new Error(_0x1037('0x7a'));}var _0x5728eb=0x0;if(_0x24dc8d['binding'][_0x1037('0x22')]){_0x5728eb=0x1;}if(!_0x24dc8d[_0x1037('0x1e')]){throw new Error(_0x1037('0x7b'));}}catch(_0x3cea0a){throw new Error(_0x1037('0x7c'));}var _0x990280=[];try{_0x990280=_[_0x1037('0x7d')](JSON[_0x1037('0x77')](process['argv'][0x4]),'id');}catch(_0x5bddf5){logger[_0x1037('0x3a')]('No\x20agent\x20available');}main(_0x1cbdbc,_0x24dc8d,_0x990280,_0x5728eb);}validate();process['on'](_0x1037('0x7e'),handleStop);process['on'](_0x1037('0x7f'),handleUncaughtException);
\ No newline at end of file
+var _0xe98b=['.CmListId','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','toString','cm_contacts.id','cm_contacts.createdAt','ContactId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','message','exit','errors','push','sequelize','spread','error','main','send','start','binding','socket_timestamp','root','.csv','header','writeFileSync','createReadStream','data','length','rows','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','campaigns','each','then','affectedRows','emit','unlink','complete','server/files/tmp','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','parse','No\x20agent\x20available','path','lodash','papaparse','util','bluebird','ioredis','../../../mysqldb','../../../config/environment','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','.id\x20=\x20','where','\x20=\x20','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','insert','into','fromQuery','scheduledat','ListId','createdAt','updatedAt','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20'];(function(_0xaf8b25,_0x6e2111){var _0x39b012=function(_0x7185e2){while(--_0x7185e2){_0xaf8b25['push'](_0xaf8b25['shift']());}};_0x39b012(++_0x6e2111);}(_0xe98b,0x15c));var _0xbe98=function(_0x53bf0c,_0x52d795){_0x53bf0c=_0x53bf0c-0x0;var _0x13a2e5=_0xe98b[_0x53bf0c];return _0x13a2e5;};'use strict';var fs=require('fs');var path=require(_0xbe98('0x0'));var _=require(_0xbe98('0x1'));var Papa=require(_0xbe98('0x2'));var util=require(_0xbe98('0x3'));var BPromise=require(_0xbe98('0x4'));var moment=require('moment');var squel=require('squel');var Redis=require(_0xbe98('0x5'));var db=require(_0xbe98('0x6'))['db'];var config=require(_0xbe98('0x7'));var logger=require('../../../config/logger')('import');config[_0xbe98('0x8')]=_[_0xbe98('0x9')](config[_0xbe98('0x8')],{'host':_0xbe98('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbe98('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xbe98('0xb')](_0xbe98('0xc'));function isEmail(_0x39cce3){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))*$/[_0xbe98('0xd')](_0x39cce3);}function selectNotIn(_0x381f6a,_0x5758e8,_0x16db88,_0x1bc696,_0x19f9f3){return squel['select']()[_0xbe98('0xe')](_0xbe98('0xf'))[_0xbe98('0x10')](_0x1bc696)['join'](_0x5758e8,null,_0x5758e8+_0xbe98('0x11')+_0x1bc696+'.'+_0x16db88)[_0xbe98('0x12')](_0x1bc696+'.'+_0x16db88+_0xbe98('0x13')+_0x381f6a+'.'+_0x16db88)[_0xbe98('0x12')](_0x5758e8+'.dialCheckDuplicateType\x20IN\x20('+_0x19f9f3[_0xbe98('0x14')]()+')');}function insertCmHopper(_0x29e90c,_0x4e84a5,_0x2fcc3b,_0x4e0c5a,_0x40d0a0){var _0x49dec4=[_0xbe98('0x15'),_0xbe98('0x16'),'cm_contacts.id',_0xbe98('0x17'),_0x4e84a5+'.'+_0x4e0c5a,'cm_contacts.createdAt',_0xbe98('0x18'),_0xbe98('0x19'),'cm_contacts.UserId','\x22'+_0x40d0a0+'\x22'];return squel[_0xbe98('0x1a')]()[_0xbe98('0x1b')]('cm_hopper')[_0xbe98('0x1c')]([_0xbe98('0xf'),_0xbe98('0x1d'),'ContactId',_0xbe98('0x1e'),_0x4e0c5a,_0xbe98('0x1f'),_0xbe98('0x20'),'priority',_0xbe98('0x21'),_0xbe98('0x22')],squel[_0xbe98('0x23')]()[_0xbe98('0x24')](_0x49dec4)['from'](_0x4e84a5)[_0xbe98('0x14')](_0xbe98('0x25'),null,_0xbe98('0x26')+_0x4e84a5+_0xbe98('0x27'))['join'](_0x2fcc3b,null,_0x2fcc3b+_0xbe98('0x11')+_0x4e84a5+'.'+_0x4e0c5a)[_0xbe98('0x12')](_0x4e84a5+'.CmListId\x20=\x20?',_0x29e90c)[_0xbe98('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xbe98('0x12')](_0xbe98('0x28'),selectNotIn(_0x4e84a5,_0x2fcc3b,_0x4e0c5a,_0xbe98('0x29'),[_0xbe98('0x2a'),'\x22onlyIfOpen\x22']))[_0xbe98('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4e84a5,_0x2fcc3b,_0x4e0c5a,_0xbe98('0x29'),['\x22always\x22'])))[_0xbe98('0x2b')]();}function insertCmHopperBlack(_0x54833b,_0x526d60,_0x3d4242,_0x187fdf){var _0x34a768=['cm_contacts.phone',_0xbe98('0x2c'),'cm_contacts.ListId',_0x526d60+'.'+_0x187fdf,_0xbe98('0x2d'),'cm_contacts.updatedAt'];return squel['insert']()[_0xbe98('0x1b')]('cm_hopper_black')[_0xbe98('0x1c')]([_0xbe98('0xf'),_0xbe98('0x2e'),_0xbe98('0x1e'),_0x187fdf,_0xbe98('0x1f'),_0xbe98('0x20')],squel[_0xbe98('0x23')]()['fields'](_0x34a768)['from'](_0x526d60)[_0xbe98('0x14')](_0xbe98('0x25'),null,_0xbe98('0x26')+_0x526d60+_0xbe98('0x27'))[_0xbe98('0x14')](_0x3d4242,null,_0x3d4242+'.id\x20=\x20'+_0x526d60+'.'+_0x187fdf)[_0xbe98('0x12')](_0x526d60+_0xbe98('0x2f'),_0x54833b)[_0xbe98('0x12')](_0xbe98('0x30'),NOW)[_0xbe98('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xbe98('0x23')]()[_0xbe98('0xe')](_0xbe98('0xf'))[_0xbe98('0x10')](_0xbe98('0x31'))[_0xbe98('0x12')](_0xbe98('0x32'),_0x54833b)['where'](_0x187fdf+_0xbe98('0x33'),_0x526d60+'.'+_0x187fdf)))[_0xbe98('0x2b')]();}function insertCmContact(_0x2ffcc4,_0x5d4166,_0x2974e6,_0x9e6afe){var _0x16063a=_[_0xbe98('0x34')](_[_0xbe98('0x35')](_0x9e6afe),['ListId','CompanyId','createdAt',_0xbe98('0x20')]);return squel[_0xbe98('0x1a')]()[_0xbe98('0x1b')]('cm_contacts')[_0xbe98('0x1c')](_0x16063a,squel[_0xbe98('0x23')]()[_0xbe98('0x24')](_0x16063a)['from'](_0x5d4166)['where']('('+_0x2974e6['join'](',')+_0xbe98('0x36'),squel['select']()[_0xbe98('0x24')](_0x2974e6)[_0xbe98('0x10')](_0xbe98('0x25'))[_0xbe98('0x12')](_0xbe98('0x32'),_0x2ffcc4)['where'](_0xbe98('0x37')))[_0xbe98('0x12')](_0xbe98('0x38'),squel['select']()[_0xbe98('0xe')](_0xbe98('0x39'),_0xbe98('0x3a'))[_0xbe98('0x10')](_0x5d4166)[_0xbe98('0x3b')](_0x2974e6['join'](','))))[_0xbe98('0x2b')]();}function handleStop(){logger[_0xbe98('0x3c')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x3fd302){logger['error'](_0x3fd302[_0xbe98('0x3d')]);process[_0xbe98('0x3e')](0x1);}function handleError(_0x301c8f,_0x5d7699){stats[_0xbe98('0x3f')][_0xbe98('0x40')]({'name':_0x5d7699['code'],'message':_0x5d7699['message'],'row':_0x301c8f});}function handleQuery(_0x262503){logger[_0xbe98('0x3c')](_0x262503);return db[_0xbe98('0x41')]['query'](_0x262503)[_0xbe98('0x42')](function(_0x470bb4){results[_0xbe98('0x40')](_0x470bb4);})['catch'](function(_0x356d18){logger[_0xbe98('0x43')](_0x356d18[_0xbe98('0x3d')]);});}function main(_0x2276da,_0x51aa8d,_0x559d86,_0xf69b2b){logger[_0xbe98('0x3c')](_0xbe98('0x44'),_0x2276da,JSON['stringify'](_0x51aa8d));process[_0xbe98('0x45')](_0xbe98('0x46'));var _0x2eb66a=_0x51aa8d[_0xbe98('0x47')];var _0x5ab2b6=_0x51aa8d[_0xbe98('0x48')];var _0x553bb1=path[_0xbe98('0x14')](config[_0xbe98('0x49')],'server/files/tmp',_0x5ab2b6+_0xbe98('0x4a'));var _0x378fe2=_[_0xbe98('0x35')](_0x2eb66a)[_0xbe98('0x14')]();logger['info'](_0xbe98('0x4b'),_0x378fe2);fs[_0xbe98('0x4c')](_0x553bb1,_0x378fe2+'\x0a');Papa['parse'](fs[_0xbe98('0x4d')](_0x2276da),{'header':!![],'skipEmptyLines':!![],'step':function(_0xe558a1,_0x221418){try{for(var _0x176d29=0x0,_0x12fa3a=[];_0x176d29<_0xe558a1[_0xbe98('0x4e')][_0xbe98('0x4f')];_0x176d29++){stats[_0xbe98('0x50')]+=0x1;if(_0xe558a1['errors'][_0x176d29]){handleError(_0xe558a1[_0xbe98('0x4e')][_0x176d29],_0xe558a1['errors'][_0x176d29]);}else{var _0x458c27=[];for(var _0x285b83 in _0x2eb66a){if(_0x2eb66a[_0xbe98('0x51')](_0x285b83)){if(_0xe558a1[_0xbe98('0x4e')][_0x176d29][_0x2eb66a[_0x285b83]]){var _0x4c0f16=_[_0xbe98('0x52')](_0xe558a1[_0xbe98('0x4e')][_0x176d29][_0x2eb66a[_0x285b83]][_0xbe98('0x53')](/"/g,'\x27'));switch(_0x285b83){case'scheduledat':var _0x21eafd=moment(_0x4c0f16,_0xbe98('0xc'),!![]);if(_0x21eafd[_0xbe98('0x54')]()){_0x12fa3a[_0xbe98('0x40')]('\x22'+_0x4c0f16+'\x22');}else{_0x458c27[_0xbe98('0x40')](_0xbe98('0x55'));}break;case'priority':var _0x59761b=parseInt(_0x4c0f16);_0x4c0f16=_[_0xbe98('0x56')](_0x59761b)||_0x59761b<0x0||_0x59761b>0x4?_0xf69b2b?0x3:0x2:_0x59761b;_0x12fa3a['push']('\x22'+_0x4c0f16+'\x22');break;case'UserId':var _0x4bb261=parseInt(_0x4c0f16);if(_['isNumber'](_0x4bb261)&&_['includes'](_0x559d86,_0x4bb261)){_0x12fa3a[_0xbe98('0x40')]('\x22'+_0x4bb261+'\x22');}else{_0x458c27[_0xbe98('0x40')](_0xbe98('0x57'));}break;case _0xbe98('0x58'):if(isEmail(_0x4c0f16)){_0x12fa3a[_0xbe98('0x40')]('\x22'+_0x4c0f16+'\x22');}else{_0x458c27[_0xbe98('0x40')](_0xbe98('0x59'));}break;case _0xbe98('0x5a'):var _0x1ab6fc=moment(_0x4c0f16,_0xbe98('0x5b'),!![]);if(_0x1ab6fc[_0xbe98('0x54')]()){_0x12fa3a[_0xbe98('0x40')]('\x22'+_0x4c0f16+'\x22');}else{_0x458c27[_0xbe98('0x40')](_0xbe98('0x5c'));}break;default:_0x12fa3a[_0xbe98('0x40')]('\x22'+_0x4c0f16+'\x22');}}else{switch(_0x285b83){case _0xbe98('0x5d'):case _0xbe98('0xf'):_0x458c27[_0xbe98('0x40')](_0x285b83+_0xbe98('0x5e'));break;default:_0x12fa3a['push']('\x22\x22');}}}}if(_0x458c27['length']){handleError(_0xe558a1[_0xbe98('0x4e')][_0x176d29],{'code':_0xbe98('0x5f'),'message':_0x458c27['join']()});}else{fs['appendFileSync'](_0x553bb1,_0x12fa3a[_0xbe98('0x14')]()+'\x0a');}_0x12fa3a=[];}if(!(stats[_0xbe98('0x50')]%0xc8)){socket['emit'](_0xbe98('0x60')+_0x5ab2b6,stats);stats[_0xbe98('0x3f')]=[];}}if(stopped){logger[_0xbe98('0x3c')](_0xbe98('0x61'));_0x221418[_0xbe98('0x62')]();}}catch(_0x547b59){handleError(_0xe558a1[_0xbe98('0x4e')][_0x176d29],{'code':_0xbe98('0x63'),'message':_0x547b59[_0xbe98('0x3d')]});logger[_0xbe98('0x43')](_0xbe98('0x64'),_0x547b59['message']);}},'complete':function(){try{var _0x35bc8d=[];var _0x340ea1=_0xbe98('0x25');if(_0x51aa8d[_0xbe98('0x65')]&&_0x51aa8d[_0xbe98('0x65')][_0xbe98('0x4f')]){_0x340ea1='cm_contacts_'+_0x5ab2b6;_0x35bc8d[_0xbe98('0x40')](_0xbe98('0x66')+_0x340ea1+_0xbe98('0x67'));}var _0x470591=util[_0xbe98('0xb')](_0xbe98('0x68'),_0x553bb1,_0x340ea1,_0x378fe2,_0x51aa8d['ListId'],_0x51aa8d['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x2eb66a[_0xbe98('0x1d')])){_0x470591+=_0xbe98('0x69');}_0x35bc8d[_0xbe98('0x40')](_0x470591);if(_0x51aa8d[_0xbe98('0x65')]&&_0x51aa8d[_0xbe98('0x65')][_0xbe98('0x4f')]){_0x35bc8d[_0xbe98('0x40')](insertCmContact(_0x51aa8d[_0xbe98('0x1e')],_0x340ea1,_0x51aa8d[_0xbe98('0x65')],_0x2eb66a));_0x35bc8d[_0xbe98('0x40')](_0xbe98('0x6a')+_0x340ea1+';');}_0x35bc8d[_0xbe98('0x40')](insertCmHopper(_0x51aa8d[_0xbe98('0x1e')],_0xbe98('0x6b'),_0xbe98('0x6c'),'VoiceQueueId',_0xf69b2b));_0x35bc8d['push'](insertCmHopperBlack(_0x51aa8d[_0xbe98('0x1e')],'voice_queues_has_cm_blacklists',_0xbe98('0x6c'),_0xbe98('0x6d')));_0x35bc8d[_0xbe98('0x40')](insertCmHopper(_0x51aa8d[_0xbe98('0x1e')],_0xbe98('0x6e'),'campaigns',_0xbe98('0x6f'),_0xf69b2b));_0x35bc8d['push'](insertCmHopperBlack(_0x51aa8d[_0xbe98('0x1e')],_0xbe98('0x70'),_0xbe98('0x71'),_0xbe98('0x6f')));BPromise[_0xbe98('0x72')](_0x35bc8d,handleQuery)[_0xbe98('0x73')](function(_0x2b7424){stats['finish']=!![];stats[_0xbe98('0x74')]=_0x51aa8d[_0xbe98('0x65')]&&_0x51aa8d['duplicates'][_0xbe98('0x4f')]?results[0x2][_0xbe98('0x74')]:results[0x0]['affectedRows'];socket[_0xbe98('0x75')](_0xbe98('0x60')+_0x5ab2b6,stats);fs['unlink'](_0x2276da);fs[_0xbe98('0x76')](_0x553bb1);process[_0xbe98('0x3e')](0x0);})['catch'](function(_0x18a66b){logger[_0xbe98('0x43')](_0x18a66b['message']);process[_0xbe98('0x3e')](0x1);});}catch(_0x49748a){logger['error'](_0xbe98('0x77'),_0x49748a['message']);process[_0xbe98('0x3e')](0x1);}},'error':function(_0x2a2be4,_0x3f1eae,_0x4dcd3f,_0x2880ee){throw new Error(_0x2880ee);}});}function validate(){if(process['argv']&&process['argv'][_0xbe98('0x4f')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0xdec5c9=path[_0xbe98('0x14')](config[_0xbe98('0x49')],_0xbe98('0x78'),process['argv'][0x2]);if(!fs[_0xbe98('0x79')](_0xdec5c9)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x3edf56={};try{_0x3edf56=JSON['parse'](process['argv'][0x3]);if(!_0x3edf56['binding']){throw new Error(_0xbe98('0x7a'));}if(!_0x3edf56['binding'][_0xbe98('0xf')]){throw new Error(_0xbe98('0x7b'));}if(!_0x3edf56[_0xbe98('0x47')]['firstName']){throw new Error(_0xbe98('0x7c'));}var _0x30a8fc=0x0;if(_0x3edf56[_0xbe98('0x47')][_0xbe98('0x21')]){_0x30a8fc=0x1;}if(!_0x3edf56[_0xbe98('0x1e')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x3a61d1){throw new Error(_0xbe98('0x7d'));}var _0x4ad18e=[];try{_0x4ad18e=_[_0xbe98('0x7e')](JSON[_0xbe98('0x7f')](process['argv'][0x4]),'id');}catch(_0x51fd70){logger[_0xbe98('0x3c')](_0xbe98('0x80'));}main(_0xdec5c9,_0x3edf56,_0x4ad18e,_0x30a8fc);}validate();process['on']('SIGINT',handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 23d349c..714adad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0875=['voice','variable','queue','push','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','inbound','***\x20Call\x20Info\x20***','Caller\x20Number','keyValue','calleridname','Queue','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Ring','agentcompleteAt','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','uniqueid','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','duration','billableseconds','getSubjects','string','toLowerCase'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x0875,0x1e9));var _0x5087=function(_0x327886,_0x4a92fd){_0x327886=_0x327886-0x0;var _0x180fa1=_0x0875[_0x327886];return _0x180fa1;};'use strict';exports[_0x5087('0x0')]=function(_0x14db26,_0x50b036){var _0x5a90c1=[{'type':_0x5087('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x14db26[_0x5087('0x2')]()){case _0x5087('0x3'):switch(_0x50b036[_0x5087('0x2')]()){case'inbound':_0x5a90c1['push']({'type':_0x5087('0x4'),'content':'','variableName':_0x5087('0x5')});_0x5a90c1[_0x5087('0x6')]({'type':'variable','content':'','variableName':_0x5087('0x7')});break;case _0x5087('0x8'):_0x5a90c1['push']({'type':_0x5087('0x1'),'content':_0x5087('0x9'),'variableName':null});_0x5a90c1[_0x5087('0x6')]({'type':_0x5087('0x4'),'content':'','variableName':_0x5087('0xa')});break;}}return _0x5a90c1;};exports[_0x5087('0xb')]=function(_0x16fc8b,_0xef3604){var _0x1e26cd=[];switch(_0x16fc8b[_0x5087('0x2')]()){case'voice':switch(_0xef3604[_0x5087('0x2')]()){case _0x5087('0xc'):_0x1e26cd=[{'type':_0x5087('0x1'),'content':_0x5087('0xd'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x5087('0xe'),'keyType':_0x5087('0x4'),'variableName':'calleridnum'},{'type':_0x5087('0xf'),'content':'','key':'Caller\x20Name','keyType':'variable','variableName':_0x5087('0x10')},{'type':_0x5087('0xf'),'content':'','key':'Call\x20To','keyType':_0x5087('0x4'),'variableName':'destexten'},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x11'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x5')},{'type':_0x5087('0xf'),'content':'','key':'UniqueId','keyType':_0x5087('0x4'),'variableName':'uniqueid'},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x12'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x13')},{'type':'string','content':_0x5087('0x14'),'key':null,'keyType':null,'variableName':null},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x15'),'keyType':_0x5087('0x4'),'variableName':'destcalleridname'},{'type':_0x5087('0xf'),'content':'','key':'Agent\x20Number','keyType':_0x5087('0x4'),'variableName':'destcalleridnum'},{'type':_0x5087('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x5087('0x16'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x13')},{'type':_0x5087('0xf'),'content':'','key':'Agent\x20Connect','keyType':_0x5087('0x4'),'variableName':'agentconnectAt'},{'type':_0x5087('0xf'),'content':'','key':'Agent\x20Complete','keyType':_0x5087('0x4'),'variableName':_0x5087('0x17')},{'type':_0x5087('0xf'),'content':'','key':'Hold\x20Time','keyType':_0x5087('0x4'),'variableName':_0x5087('0x18')},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x19'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x1a')}];break;case'outbound':_0x1e26cd=[{'type':_0x5087('0x1'),'content':_0x5087('0xd'),'variableName':null},{'type':'keyValue','content':'','key':_0x5087('0x1b'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0xa')},{'type':'keyValue','content':'','key':_0x5087('0x1c'),'keyType':'variable','keyContent':'','variableName':_0x5087('0x1d')},{'type':'keyValue','content':'','key':_0x5087('0x1e'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x1f')},{'type':'keyValue','content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x5087('0x20')},{'type':_0x5087('0x1'),'content':_0x5087('0x21')},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x22'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x23')},{'type':'keyValue','content':'','key':_0x5087('0x24'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x25')},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x26'),'keyType':'variable','keyContent':'','variableName':_0x5087('0x27')},{'type':_0x5087('0xf'),'content':'','key':'Billable\x20Time','keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x28')}];break;}}return _0x1e26cd;};
\ No newline at end of file
+var _0x5a2d=['push','variable','queue','calleridnum','Outbound\x20Call','getDescriptions','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','Queue','UniqueId','Date','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','outbound','***\x20Call\x20Info\x20***','membername','uniqueid','Answer\x20Time','Complete\x20Time','endtime','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','voice','toLowerCase','inbound'];(function(_0x440c09,_0x8a7054){var _0x53a0e3=function(_0x1cc34c){while(--_0x1cc34c){_0x440c09['push'](_0x440c09['shift']());}};_0x53a0e3(++_0x8a7054);}(_0x5a2d,0x1bd));var _0xd5a2=function(_0x353abb,_0x194c80){_0x353abb=_0x353abb-0x0;var _0x43c9c5=_0x5a2d[_0x353abb];return _0x43c9c5;};'use strict';exports[_0xd5a2('0x0')]=function(_0x21c898,_0x3c17e1){var _0xf66171=[{'type':_0xd5a2('0x1'),'content':_0xd5a2('0x2'),'variableName':null}];switch(_0x21c898['toLowerCase']()){case _0xd5a2('0x3'):switch(_0x3c17e1[_0xd5a2('0x4')]()){case _0xd5a2('0x5'):_0xf66171[_0xd5a2('0x6')]({'type':_0xd5a2('0x7'),'content':'','variableName':_0xd5a2('0x8')});_0xf66171[_0xd5a2('0x6')]({'type':'variable','content':'','variableName':_0xd5a2('0x9')});break;case'outbound':_0xf66171[_0xd5a2('0x6')]({'type':_0xd5a2('0x1'),'content':_0xd5a2('0xa'),'variableName':null});_0xf66171['push']({'type':_0xd5a2('0x7'),'content':'','variableName':'destcalleridnum'});break;}}return _0xf66171;};exports[_0xd5a2('0xb')]=function(_0x5b32bf,_0x34d226){var _0x15c342=[];switch(_0x5b32bf[_0xd5a2('0x4')]()){case _0xd5a2('0x3'):switch(_0x34d226[_0xd5a2('0x4')]()){case _0xd5a2('0x5'):_0x15c342=[{'type':_0xd5a2('0x1'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0xd'),'keyType':_0xd5a2('0x7'),'variableName':'calleridnum'},{'type':'keyValue','content':'','key':_0xd5a2('0xe'),'keyType':'variable','variableName':_0xd5a2('0xf')},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x10'),'keyType':_0xd5a2('0x7'),'variableName':'destexten'},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x11'),'keyType':_0xd5a2('0x7'),'variableName':_0xd5a2('0x8')},{'type':'keyValue','content':'','key':_0xd5a2('0x12'),'keyType':_0xd5a2('0x7'),'variableName':'uniqueid'},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x13'),'keyType':'variable','variableName':'agentcalledAt'},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x14'),'keyType':'variable','variableName':_0xd5a2('0x15')},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x16'),'keyType':_0xd5a2('0x7'),'variableName':_0xd5a2('0x17')},{'type':'string','content':_0xd5a2('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xd5a2('0x19'),'keyType':_0xd5a2('0x7'),'variableName':_0xd5a2('0x1a')},{'type':'keyValue','content':'','key':'Agent\x20Connect','keyType':_0xd5a2('0x7'),'variableName':'agentconnectAt'},{'type':_0xd5a2('0xc'),'content':'','key':'Agent\x20Complete','keyType':_0xd5a2('0x7'),'variableName':_0xd5a2('0x1b')},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x1c'),'keyType':_0xd5a2('0x7'),'variableName':_0xd5a2('0x1d')},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x1e'),'keyType':_0xd5a2('0x7'),'variableName':_0xd5a2('0x1f')}];break;case _0xd5a2('0x20'):_0x15c342=[{'type':_0xd5a2('0x1'),'content':_0xd5a2('0x21'),'variableName':null},{'type':_0xd5a2('0xc'),'content':'','key':'Called\x20Number','keyType':_0xd5a2('0x7'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xd5a2('0xc'),'content':'','key':'Member\x20Name','keyType':_0xd5a2('0x7'),'keyContent':'','variableName':_0xd5a2('0x22')},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x12'),'keyType':_0xd5a2('0x7'),'keyContent':'','variableName':_0xd5a2('0x23')},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x13'),'keyType':_0xd5a2('0x7'),'keyContent':'','variableName':'starttime'},{'type':_0xd5a2('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':'keyValue','content':'','key':_0xd5a2('0x24'),'keyType':_0xd5a2('0x7'),'keyContent':'','variableName':'answertime'},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x25'),'keyType':_0xd5a2('0x7'),'keyContent':'','variableName':_0xd5a2('0x26')},{'type':_0xd5a2('0xc'),'content':'','key':'Duration','keyType':_0xd5a2('0x7'),'keyContent':'','variableName':'duration'},{'type':_0xd5a2('0xc'),'content':'','key':_0xd5a2('0x27'),'keyType':_0xd5a2('0x7'),'keyContent':'','variableName':_0xd5a2('0x28')}];break;}}return _0x15c342;};
\ No newline at end of file
index 4bc0f36..78f0111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9783=['name','stringify','null','then','update','info','catch','error','query','body','omit','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','upperFirst','InteractionId','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase'];(function(_0x2ce0e2,_0x554db9){var _0x10ec85=function(_0x4c8138){while(--_0x4c8138){_0x2ce0e2['push'](_0x2ce0e2['shift']());}};_0x10ec85(++_0x554db9);}(_0x9783,0x146));var _0x3978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9783[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3978('0x0'));var db=require(_0x3978('0x1'))['db'];var loggers={'openchannel':require(_0x3978('0x2'))(_0x3978('0x3')),'mail':require('../../config/logger')(_0x3978('0x4')),'fax':require(_0x3978('0x2'))(_0x3978('0x5')),'sms':require('../../config/logger')('sms-interactions'),'chat':require(_0x3978('0x2'))('chat-interactions'),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x4c4099,_0x474572,_0x17326e){if(_0x4c4099&&_0x4c4099[_[_0x3978('0x6')](_0x17326e)+'InteractionId']){return _0x4c4099[_[_0x3978('0x6')](_0x17326e)+_0x3978('0x7')];}else if(_0x4c4099&&_0x4c4099['id']){return _0x4c4099['id'];}else if(_0x474572&&_0x474572['id']){return _0x474572['id'];}else{return'unknown';}}function log(_0x280e4c,_0x5b88e1,_0x3cd9cc,_0x12eca1,_0x38cd07,_0x4fbd4d){loggers[_0x38cd07['toLowerCase']()][_0x280e4c](_0x3978('0x8'),_0x4fbd4d[_0x3978('0x9')](),_0x5b88e1?_0x5b88e1['id']:null,_0x5b88e1?_0x5b88e1[_0x3978('0xa')]:null,_0x5b88e1?_0x5b88e1['role']:null,getInteractionId(_0x3cd9cc,_0x12eca1,_0x38cd07),_0x3cd9cc?JSON[_0x3978('0xb')](_0x3cd9cc):_0x3978('0xc'));}function updateUser(_0x2a74cb,_0x65d838,_0x35452c,_0x39c956,_0x30123b){db[_[_0x3978('0x6')](_0x39c956)+'Interaction']['findOne']({'where':{'id':getInteractionId(_0x65d838,_0x35452c,_0x39c956)}})[_0x3978('0xd')](function(_0x9ea046){if(_0x9ea046){return _0x9ea046[_0x3978('0xe')]({'UserId':_0x2a74cb?_0x2a74cb['id']:null});}})['then'](function(_0x4b6f1d){if(_0x4b6f1d){log(_0x3978('0xf'),_0x2a74cb,_0x65d838,_0x35452c,_0x39c956,_0x30123b);}})[_0x3978('0x10')](function(){log(_0x3978('0x11'),_0x2a74cb,_0x65d838,_0x35452c,_0x39c956,_0x30123b);});}exports['tracked']=function(_0x27f355,_0x19ea30){return function(_0x4b448a,_0x2ac4d7,_0x7c0103){var _0x43ae16=_0x4b448a['user'];var _0x2ca7b1={};var _0xf73a99=_0x4b448a[_0x3978('0x12')];if(_0x2ca7b1){_0x2ca7b1=_['clone'](_0x4b448a[_0x3978('0x13')]);_0x2ca7b1=_[_0x3978('0x14')](_0x2ca7b1,[_0x3978('0x13'),'html',_0x3978('0x15'),_0x3978('0x16'),_0x3978('0x17')]);}updateUser(_0x43ae16,_0x2ca7b1,_0xf73a99,_0x27f355,_0x19ea30);_0x7c0103(null);};};
\ No newline at end of file
+var _0xfddb=['sms-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','toUpperCase','name','stringify','null','then','info','error','tracked','body','omit','html','phone','fax','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','mail-interactions','fax-interactions'];(function(_0x407aef,_0x1c1b81){var _0x8c669b=function(_0x50598a){while(--_0x50598a){_0x407aef['push'](_0x407aef['shift']());}};_0x8c669b(++_0x1c1b81);}(_0xfddb,0x174));var _0xbfdd=function(_0x1dc37b,_0x277a64){_0x1dc37b=_0x1dc37b-0x0;var _0x4d7513=_0xfddb[_0x1dc37b];return _0x4d7513;};'use strict';var _=require(_0xbfdd('0x0'));var db=require(_0xbfdd('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0xbfdd('0x2')),'mail':require(_0xbfdd('0x3'))(_0xbfdd('0x4')),'fax':require('../../config/logger')(_0xbfdd('0x5')),'sms':require(_0xbfdd('0x3'))(_0xbfdd('0x6')),'chat':require(_0xbfdd('0x3'))(_0xbfdd('0x7')),'whatsapp':require(_0xbfdd('0x3'))(_0xbfdd('0x8'))};function getInteractionId(_0x21223f,_0x605792,_0x67e40){if(_0x21223f&&_0x21223f[_[_0xbfdd('0x9')](_0x67e40)+_0xbfdd('0xa')]){return _0x21223f[_[_0xbfdd('0x9')](_0x67e40)+_0xbfdd('0xa')];}else if(_0x21223f&&_0x21223f['id']){return _0x21223f['id'];}else if(_0x605792&&_0x605792['id']){return _0x605792['id'];}else{return _0xbfdd('0xb');}}function log(_0x5a825b,_0x58a48f,_0x288698,_0x2d3213,_0x558d47,_0x238207){loggers[_0x558d47[_0xbfdd('0xc')]()][_0x5a825b]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x238207[_0xbfdd('0xd')](),_0x58a48f?_0x58a48f['id']:null,_0x58a48f?_0x58a48f[_0xbfdd('0xe')]:null,_0x58a48f?_0x58a48f['role']:null,getInteractionId(_0x288698,_0x2d3213,_0x558d47),_0x288698?JSON[_0xbfdd('0xf')](_0x288698):_0xbfdd('0x10'));}function updateUser(_0x2b120c,_0x189225,_0xc92620,_0x6e1e60,_0x9f5938){db[_['upperFirst'](_0x6e1e60)+'Interaction']['findOne']({'where':{'id':getInteractionId(_0x189225,_0xc92620,_0x6e1e60)}})[_0xbfdd('0x11')](function(_0x39027e){if(_0x39027e){return _0x39027e['update']({'UserId':_0x2b120c?_0x2b120c['id']:null});}})['then'](function(_0x1baf09){if(_0x1baf09){log(_0xbfdd('0x12'),_0x2b120c,_0x189225,_0xc92620,_0x6e1e60,_0x9f5938);}})['catch'](function(){log(_0xbfdd('0x13'),_0x2b120c,_0x189225,_0xc92620,_0x6e1e60,_0x9f5938);});}exports[_0xbfdd('0x14')]=function(_0xaeb144,_0x19e68c){return function(_0x146038,_0x527ba3,_0x15cbc2){var _0x1bf94d=_0x146038['user'];var _0x34ca06={};var _0x3b2382=_0x146038['query'];if(_0x34ca06){_0x34ca06=_['clone'](_0x146038[_0xbfdd('0x15')]);_0x34ca06=_[_0xbfdd('0x16')](_0x34ca06,['body',_0xbfdd('0x17'),_0xbfdd('0x18'),_0xbfdd('0x19'),_0xbfdd('0x1a')]);}updateUser(_0x1bf94d,_0x34ca06,_0x3b2382,_0xaeb144,_0x19e68c);_0x15cbc2(null);};};
\ No newline at end of file
index 946dd15..2e7bde8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9331=['User','admin','user','crypto','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','License','then','count','status','json','catch','users'];(function(_0x578c66,_0x3e090f){var _0x586aa2=function(_0x33291a){while(--_0x33291a){_0x578c66['push'](_0x578c66['shift']());}};_0x586aa2(++_0x3e090f);}(_0x9331,0xab));var _0x1933=function(_0x1ac0dd,_0x5a1e5f){_0x1ac0dd=_0x1ac0dd-0x0;var _0x31fc81=_0x9331[_0x1ac0dd];return _0x31fc81;};'use strict';var crypto=require(_0x1933('0x0'));var util=require('util');var compose=require(_0x1933('0x1'));var db=require(_0x1933('0x2'))['db'];var config=require(_0x1933('0x3'));function getValueFromLicense(_0x5539df,_0x263c07){if(_0x5539df&&_0x263c07){if(_0x263c07[_0x1933('0x4')]&&_0x263c07[_0x1933('0x5')]){var _0x49eb98=_0x263c07[_0x1933('0x4')];var _0x58405b=_0x263c07[_0x1933('0x5')];var _0x340445=_0x49eb98[_0x1933('0x6')]('-')[0x4];var _0x13742a=_0x49eb98[_0x1933('0x6')]('-')[0x0];var _0x36eae5=crypto[_0x1933('0x7')](_0x1933('0x8'),util[_0x1933('0x9')](_0x1933('0xa'),_0x340445,_0x49eb98,_0x13742a));var _0x47cf27=_0x36eae5[_0x1933('0xb')](_0x58405b,_0x1933('0xc'),_0x1933('0xd'));_0x47cf27+=_0x36eae5[_0x1933('0xe')](_0x1933('0xd'));var _0x103213=JSON[_0x1933('0xf')](_0x47cf27);return _0x103213[_0x1933('0x10')](_0x5539df)?_0x103213[_0x5539df]:null;}}return null;}function isLimit(_0x143eaa,_0x4eea5d,_0x4a19c7,_0x4c93d2){var _0x3db761=_0x4eea5d;return compose()[_0x1933('0x11')](function(_0x6842ca,_0x38bb9b,_0x4675b6){return db[_0x1933('0x12')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x1933('0x13')](function(_0xcb9fa6){var _0x25d1d5=getValueFromLicense(_0x143eaa,_0xcb9fa6);return _0x25d1d5?_0x25d1d5:_0x3db761;})[_0x1933('0x13')](function(_0x429bdf){_0x3db761=_0x429bdf;return _0x4a19c7[_0x1933('0x14')](_0x4c93d2);})[_0x1933('0x13')](function(_0x4ecefb){if(_0x4ecefb>=_0x3db761){return _0x38bb9b[_0x1933('0x15')](0x193)[_0x1933('0x16')]({'message':util[_0x1933('0x9')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x143eaa)});}_0x4675b6();})[_0x1933('0x17')](function(_0x124cf9){_0x4675b6(_0x124cf9);});});}function isUserLimit(){return isLimit(_0x1933('0x18'),0x1,db[_0x1933('0x19')],{'where':{'$or':[{'role':_0x1933('0x1a')},{'role':_0x1933('0x1b')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0x3b32=['data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','License','then','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','user','isUserLimit','crypto','composable-middleware','../../mysqldb','../../config/environment'];(function(_0x5b1097,_0x3ed62f){var _0x57979c=function(_0x512f68){while(--_0x512f68){_0x5b1097['push'](_0x5b1097['shift']());}};_0x57979c(++_0x3ed62f);}(_0x3b32,0x1f0));var _0x23b3=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x3b32[_0x2112d4];return _0x434972;};'use strict';var crypto=require(_0x23b3('0x0'));var util=require('util');var compose=require(_0x23b3('0x1'));var db=require(_0x23b3('0x2'))['db'];var config=require(_0x23b3('0x3'));function getValueFromLicense(_0x599e77,_0x5e72d7){if(_0x599e77&&_0x5e72d7){if(_0x5e72d7[_0x23b3('0x4')]&&_0x5e72d7['license']){var _0x161cfc=_0x5e72d7[_0x23b3('0x4')];var _0x8dca0a=_0x5e72d7[_0x23b3('0x5')];var _0x4832f6=_0x161cfc[_0x23b3('0x6')]('-')[0x4];var _0x4f45ce=_0x161cfc[_0x23b3('0x6')]('-')[0x0];var _0x31a274=crypto[_0x23b3('0x7')](_0x23b3('0x8'),util[_0x23b3('0x9')](_0x23b3('0xa'),_0x4832f6,_0x161cfc,_0x4f45ce));var _0x37a392=_0x31a274[_0x23b3('0xb')](_0x8dca0a,_0x23b3('0xc'),_0x23b3('0xd'));_0x37a392+=_0x31a274[_0x23b3('0xe')](_0x23b3('0xd'));var _0x5f0be1=JSON[_0x23b3('0xf')](_0x37a392);return _0x5f0be1[_0x23b3('0x10')](_0x599e77)?_0x5f0be1[_0x599e77]:null;}}return null;}function isLimit(_0x2f00aa,_0x305829,_0x4d5289,_0x4d3a71){var _0x45915c=_0x305829;return compose()['use'](function(_0x358889,_0x3d54ed,_0x1a40ed){return db[_0x23b3('0x11')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x23b3('0x12')](function(_0x15357c){var _0x3c24e1=getValueFromLicense(_0x2f00aa,_0x15357c);return _0x3c24e1?_0x3c24e1:_0x45915c;})[_0x23b3('0x12')](function(_0x3816dc){_0x45915c=_0x3816dc;return _0x4d5289['count'](_0x4d3a71);})['then'](function(_0x2c2f69){if(_0x2c2f69>=_0x45915c){return _0x3d54ed['status'](0x193)['json']({'message':util['format'](_0x23b3('0x13'),_0x2f00aa)});}_0x1a40ed();})[_0x23b3('0x14')](function(_0x55f7f8){_0x1a40ed(_0x55f7f8);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x23b3('0x15')],{'where':{'$or':[{'role':_0x23b3('0x16')},{'role':_0x23b3('0x17')}]}});}exports[_0x23b3('0x18')]=isUserLimit;
\ No newline at end of file
index 406bc15..041ad08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1351=['filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$eq','value','includes','$gt','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$lt','<\x20?','>\x20?','$lte','<=\x20?','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','$startsWith','start','$endsWith','pop','utcOffset','hours','minutes','seconds','lodash','parseSearch','sqlOperator','startsWith','[$or]','replace','split','length','slice','shift','match'];(function(_0x3a533e,_0x1348ab){var _0xdaaf26=function(_0x576700){while(--_0x576700){_0x3a533e['push'](_0x3a533e['shift']());}};_0xdaaf26(++_0x1348ab);}(_0x1351,0x14b));var _0x1135=function(_0x5e5ea1,_0x4502cd){_0x5e5ea1=_0x5e5ea1-0x0;var _0x17e916=_0x1351[_0x5e5ea1];return _0x17e916;};'use strict';var _=require(_0x1135('0x0'));var moment=require('moment');exports[_0x1135('0x1')]=function(_0x5de58c){var _0x24fc86={'conditions':[]};_0x24fc86[_0x1135('0x2')]=_[_0x1135('0x3')](_0x5de58c,_0x1135('0x4'))?'or':'and';var _0x57c285=_0x5de58c[_0x1135('0x5')]('[$and]','')[_0x1135('0x5')](_0x1135('0x4'),'')[_0x1135('0x6')]('||');for(var _0x42004f=0x0;_0x42004f<_0x57c285[_0x1135('0x7')];_0x42004f++){var _0x3abeca=_0x57c285[_0x42004f]['split'](':=');var _0x266b61=_0x3abeca[0x0];var _0x3296d2=_0x3abeca[_0x1135('0x8')](0x1);_0x3296d2['forEach'](function(_0xec9d90){var _0x1c2e06=_0xec9d90['split']('[')[_0x1135('0x9')]();var _0x63386f=_0xec9d90[_0x1135('0xa')](/\[(.*?)\]/g);_0x63386f['forEach'](function(_0x530db8){var _0x2df40d=_0x530db8['split']('[')[_0x1135('0xb')](function(_0x179884){return _0x179884[_0x1135('0xc')](']')>-0x1;})[_0x1135('0xd')](function(_0x3aada2){return _0x3aada2[_0x1135('0x6')](']')[0x0];})[0x0];_0x24fc86[_0x1135('0xe')][_0x1135('0xf')]({'field':_0x266b61,'operator':_0x1c2e06,'value':_0x2df40d});});});}return _0x24fc86;};exports[_0x1135('0x10')]=function(_0x303674,_0x24bffa,_0x3cc3f1){var _0x45beaf={};if(_0x24bffa===_0x1135('0x11')){if(_0x3cc3f1[_0x1135('0x12')]===_0x1135('0x13')){_0x3cc3f1[_0x1135('0x12')]='$between';_0x3cc3f1[_0x1135('0x14')]+=','+_0x3cc3f1[_0x1135('0x14')];}else if(_[_0x1135('0x15')]([_0x1135('0x16'),'$lte'],_0x3cc3f1[_0x1135('0x12')])){_0x3cc3f1[_0x1135('0x14')]=moment(_0x3cc3f1['value'])[_0x1135('0x17')](0x1,_0x1135('0x18'))[_0x1135('0x19')](_0x1135('0x1a'));}}if(_0x3cc3f1['castTo']){_0x24bffa=_0x3cc3f1[_0x1135('0x1b')];_0x45beaf[_0x1135('0x1c')]=_0x1135('0x1d')+_0x303674+'.'+_0x3cc3f1[_0x1135('0x1e')]+_0x1135('0x1f')+_0x3cc3f1[_0x1135('0x1b')]+')\x20'+parseOperator(_0x3cc3f1['operator']);}else{_0x45beaf['text']=_0x303674+'.'+_0x3cc3f1['field']+'\x20'+parseOperator(_0x3cc3f1[_0x1135('0x12')]);}if(_['includes']([_0x1135('0x20'),_0x1135('0x21')],_0x3cc3f1[_0x1135('0x12')]))_0x45beaf[_0x1135('0x1c')]='('+_0x45beaf[_0x1135('0x1c')]+'\x20OR\x20'+_0x303674+'.'+_0x3cc3f1[_0x1135('0x1e')]+_0x1135('0x22');_0x45beaf[_0x1135('0x14')]=parseValue(_0x24bffa,_0x3cc3f1['operator'],_0x3cc3f1[_0x1135('0x14')]);return _0x45beaf;};function parseOperator(_0x1c4801){var _0x294a66;switch(_0x1c4801){case _0x1135('0x23'):_0x294a66=_0x1135('0x24');break;case'$notIn':_0x294a66=_0x1135('0x25');break;case'$eq':_0x294a66=_0x1135('0x26');break;case _0x1135('0x20'):_0x294a66=_0x1135('0x27');break;case _0x1135('0x28'):case'$startsWith':case'$endsWith':_0x294a66='LIKE\x20?';break;case _0x1135('0x29'):_0x294a66=_0x1135('0x2a');break;case _0x1135('0x16'):_0x294a66=_0x1135('0x2b');break;case _0x1135('0x2c'):_0x294a66=_0x1135('0x2d');break;case'$gte':_0x294a66=_0x1135('0x2e');break;case _0x1135('0x2f'):_0x294a66=_0x1135('0x30');break;}return _0x294a66;}function parseValue(_0x55c25e,_0x552166,_0x5717e5){var _0x1764c2={'start':undefined,'end':undefined};switch(_0x552166){case _0x1135('0x23'):case'$notIn':_0x1764c2['start']=_0x5717e5[_0x1135('0x6')](',');break;case _0x1135('0x28'):_0x1764c2['start']='%'+_0x5717e5+'%';break;case _0x1135('0x31'):_0x1764c2[_0x1135('0x32')]=_0x5717e5+'%';break;case _0x1135('0x33'):_0x1764c2[_0x1135('0x32')]='%'+_0x5717e5;break;case _0x1135('0x2f'):var _0x1d7ea4=_0x5717e5[_0x1135('0x6')](',');var _0x5717e5=_0x1d7ea4[_0x1135('0x9')]();var _0xf73654=_0x1d7ea4[_0x1135('0x34')]();if(_0x55c25e==='DATE'){_0x5717e5=moment(_0x5717e5)[_0x1135('0x35')](0x0,!![])[_0x1135('0x19')]();_0xf73654=moment(_0xf73654)['utcOffset'](0x0,!![])[_0x1135('0x17')](0x17,_0x1135('0x36'))[_0x1135('0x17')](0x3b,_0x1135('0x37'))['add'](0x3b,_0x1135('0x38'))[_0x1135('0x19')]();}_0x1764c2={'start':_0x5717e5,'end':_0xf73654};break;default:_0x1764c2[_0x1135('0x32')]=_0x5717e5;break;}return _0x1764c2;}
\ No newline at end of file
+var _0xeaf8=['$endsWith','$lt','>\x20?','<=\x20?','$gte','$between','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','add','hours','minutes','seconds','lodash','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','slice','forEach','filter','indexOf','push','DATE','operator','$eq','value','$gt','$lte','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','includes','\x20OR\x20','$in','$notIn','NOT\x20IN\x20?','=\x20?','$ne','<>\x20?','$substring','$startsWith'];(function(_0x2eaedd,_0x32c265){var _0x267c72=function(_0x2555a3){while(--_0x2555a3){_0x2eaedd['push'](_0x2eaedd['shift']());}};_0x267c72(++_0x32c265);}(_0xeaf8,0x1e2));var _0x8eaf=function(_0x115b57,_0x4c87fc){_0x115b57=_0x115b57-0x0;var _0x45e777=_0xeaf8[_0x115b57];return _0x45e777;};'use strict';var _=require(_0x8eaf('0x0'));var moment=require(_0x8eaf('0x1'));exports['parseSearch']=function(_0x54df80){var _0x4ddd03={'conditions':[]};_0x4ddd03[_0x8eaf('0x2')]=_[_0x8eaf('0x3')](_0x54df80,_0x8eaf('0x4'))?'or':_0x8eaf('0x5');var _0x3033e7=_0x54df80[_0x8eaf('0x6')](_0x8eaf('0x7'),'')[_0x8eaf('0x6')](_0x8eaf('0x4'),'')['split']('||');for(var _0x1ba26a=0x0;_0x1ba26a<_0x3033e7['length'];_0x1ba26a++){var _0x4460f0=_0x3033e7[_0x1ba26a][_0x8eaf('0x8')](':=');var _0x2600e2=_0x4460f0[0x0];var _0x36939e=_0x4460f0[_0x8eaf('0x9')](0x1);_0x36939e[_0x8eaf('0xa')](function(_0x5020fc){var _0x4098e3=_0x5020fc['split']('[')['shift']();var _0x2bbeee=_0x5020fc['match'](/\[(.*?)\]/g);_0x2bbeee[_0x8eaf('0xa')](function(_0x155ea8){var _0x3e9d04=_0x155ea8[_0x8eaf('0x8')]('[')[_0x8eaf('0xb')](function(_0x5eccb2){return _0x5eccb2[_0x8eaf('0xc')](']')>-0x1;})['map'](function(_0x7f75b1){return _0x7f75b1[_0x8eaf('0x8')](']')[0x0];})[0x0];_0x4ddd03['conditions'][_0x8eaf('0xd')]({'field':_0x2600e2,'operator':_0x4098e3,'value':_0x3e9d04});});});}return _0x4ddd03;};exports['buildExpression']=function(_0x29a37a,_0x33d2cf,_0x24d312){var _0x2dfc19={};if(_0x33d2cf===_0x8eaf('0xe')){if(_0x24d312[_0x8eaf('0xf')]===_0x8eaf('0x10')){_0x24d312[_0x8eaf('0xf')]='$between';_0x24d312[_0x8eaf('0x11')]+=','+_0x24d312[_0x8eaf('0x11')];}else if(_['includes']([_0x8eaf('0x12'),_0x8eaf('0x13')],_0x24d312[_0x8eaf('0xf')])){_0x24d312[_0x8eaf('0x11')]=moment(_0x24d312[_0x8eaf('0x11')])['add'](0x1,_0x8eaf('0x14'))[_0x8eaf('0x15')](_0x8eaf('0x16'));}}if(_0x24d312[_0x8eaf('0x17')]){_0x33d2cf=_0x24d312[_0x8eaf('0x17')];_0x2dfc19[_0x8eaf('0x18')]=_0x8eaf('0x19')+_0x29a37a+'.'+_0x24d312[_0x8eaf('0x1a')]+_0x8eaf('0x1b')+_0x24d312[_0x8eaf('0x17')]+')\x20'+parseOperator(_0x24d312[_0x8eaf('0xf')]);}else{_0x2dfc19['text']=_0x29a37a+'.'+_0x24d312[_0x8eaf('0x1a')]+'\x20'+parseOperator(_0x24d312[_0x8eaf('0xf')]);}if(_[_0x8eaf('0x1c')](['$ne','$notIn'],_0x24d312[_0x8eaf('0xf')]))_0x2dfc19[_0x8eaf('0x18')]='('+_0x2dfc19[_0x8eaf('0x18')]+_0x8eaf('0x1d')+_0x29a37a+'.'+_0x24d312[_0x8eaf('0x1a')]+'\x20IS\x20NULL)';_0x2dfc19[_0x8eaf('0x11')]=parseValue(_0x33d2cf,_0x24d312[_0x8eaf('0xf')],_0x24d312[_0x8eaf('0x11')]);return _0x2dfc19;};function parseOperator(_0x2cfe95){var _0x23db46;switch(_0x2cfe95){case _0x8eaf('0x1e'):_0x23db46='IN\x20?';break;case _0x8eaf('0x1f'):_0x23db46=_0x8eaf('0x20');break;case _0x8eaf('0x10'):_0x23db46=_0x8eaf('0x21');break;case _0x8eaf('0x22'):_0x23db46=_0x8eaf('0x23');break;case _0x8eaf('0x24'):case _0x8eaf('0x25'):case _0x8eaf('0x26'):_0x23db46='LIKE\x20?';break;case _0x8eaf('0x27'):_0x23db46='<\x20?';break;case _0x8eaf('0x12'):_0x23db46=_0x8eaf('0x28');break;case _0x8eaf('0x13'):_0x23db46=_0x8eaf('0x29');break;case _0x8eaf('0x2a'):_0x23db46='>=\x20?';break;case _0x8eaf('0x2b'):_0x23db46=_0x8eaf('0x2c');break;}return _0x23db46;}function parseValue(_0x138057,_0x159438,_0x1ca967){var _0x25328c={'start':undefined,'end':undefined};switch(_0x159438){case _0x8eaf('0x1e'):case _0x8eaf('0x1f'):_0x25328c[_0x8eaf('0x2d')]=_0x1ca967[_0x8eaf('0x8')](',');break;case _0x8eaf('0x24'):_0x25328c[_0x8eaf('0x2d')]='%'+_0x1ca967+'%';break;case _0x8eaf('0x25'):_0x25328c[_0x8eaf('0x2d')]=_0x1ca967+'%';break;case _0x8eaf('0x26'):_0x25328c[_0x8eaf('0x2d')]='%'+_0x1ca967;break;case'$between':var _0x4a208e=_0x1ca967['split'](',');var _0x1ca967=_0x4a208e['shift']();var _0x4ddf53=_0x4a208e[_0x8eaf('0x2e')]();if(_0x138057===_0x8eaf('0xe')){_0x1ca967=moment(_0x1ca967)[_0x8eaf('0x2f')](0x0,!![])[_0x8eaf('0x15')]();_0x4ddf53=moment(_0x4ddf53)['utcOffset'](0x0,!![])[_0x8eaf('0x30')](0x17,_0x8eaf('0x31'))[_0x8eaf('0x30')](0x3b,_0x8eaf('0x32'))[_0x8eaf('0x30')](0x3b,_0x8eaf('0x33'))[_0x8eaf('0x15')]();}_0x25328c={'start':_0x1ca967,'end':_0x4ddf53};break;default:_0x25328c[_0x8eaf('0x2d')]=_0x1ca967;break;}return _0x25328c;}
\ No newline at end of file
index 522f04d..6e5b7d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b5=['format','$lte','subtract','name','uniqueid','isArray','split','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','omit','length','isObject','isString','unset','hasOwnProperty','^[+]?[0-9]*$','match','forEach','replace','push','join','getOptions','$id','query','model','keys','intersection','attributes','nolimit','order','where','merge','VIRTUAL','filter','lodash','sequelize','moment','parse','fields','filters','isEmpty','find','type','DATE','isPlainObject','$gte'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0xc9b5,0x1da));var _0x5c9b=function(_0x566154,_0x561b10){_0x566154=_0x566154-0x0;var _0x5c8408=_0xc9b5[_0x566154];return _0x5c8408;};'use strict';var _=require(_0x5c9b('0x0'));var sequelize=require(_0x5c9b('0x1'));var moment=require(_0x5c9b('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x422890){var _0x43b1da=['ne'];try{var _0x77b35b=JSON['parse'](_0x422890);var _0x3eafc8=Object['keys'](_0x77b35b)[0x0];return _0x43b1da['includes'](_0x3eafc8);}catch(_0x41c186){return![];}}function getOperatorValue(_0x386be6){var _0x297db1=JSON[_0x5c9b('0x3')](_0x386be6);var _0x593a76=Object['keys'](_0x297db1)[0x0];var _0x279f3b=_0x297db1[_0x593a76];return{['$'+_0x593a76]:_0x279f3b};}exports[_0x5c9b('0x4')]=function(_0x1d99f0){var _0x35d5a9=null;if(_0x1d99f0){_0x35d5a9=_0x1d99f0['split'](',');}return _0x35d5a9;};exports[_0x5c9b('0x5')]=function(_0x401cbe,_0x37b956){var _0x4b4776={};if(!_[_0x5c9b('0x6')](_0x401cbe)){_['forOwn'](_0x401cbe,function(_0x494f7f,_0x2abc8f){try{if(_0x37b956){var _0x4bb6c5=_[_0x5c9b('0x7')](_0x37b956,{'name':_0x2abc8f})||{};if(hasSequelizeOperator(_0x494f7f)){_0x4b4776[_0x2abc8f]=getOperatorValue(_0x494f7f);}else if(_0x4bb6c5[_0x5c9b('0x8')]===_0x5c9b('0x9')&&_[_0x5c9b('0xa')](_0x494f7f)){var _0x21d22c=JSON[_0x5c9b('0x3')](_0x494f7f);var _0x4ead7e={'$gte':moment(moment(_0x21d22c[_0x5c9b('0xb')])[_0x5c9b('0xc')]('YYYY-MM-DD'))['utc']()[_0x5c9b('0xc')](),'$lte':moment(moment(_0x21d22c[_0x5c9b('0xd')])[_0x5c9b('0xc')]('YYYY-MM-DD'))['utc']()[_0x5c9b('0xe')](0x1,'s')['format']()};_0x4b4776[_0x2abc8f]=_0x4ead7e;}else if(_0x4bb6c5[_0x5c9b('0xf')]===_0x5c9b('0x10')){_0x4b4776[_0x2abc8f]=_0x494f7f;}else{_0x4b4776[_0x2abc8f]=_['isArray'](_0x494f7f)?_0x494f7f:JSON[_0x5c9b('0x3')](_0x494f7f);}}else{_0x4b4776[_0x2abc8f]=_[_0x5c9b('0x11')](_0x494f7f)?_0x494f7f:JSON[_0x5c9b('0x3')](_0x494f7f);}}catch(_0x270316){_0x4b4776[_0x2abc8f]=_0x494f7f[_0x5c9b('0x12')](',');}});}return _0x4b4776;};exports[_0x5c9b('0x13')]=function(_0x43dfcc){_0x43dfcc=parseInt(_0x43dfcc,0xa);if(!_0x43dfcc||_0x43dfcc<0x0){_0x43dfcc=LIMIT_VALUE;}return _0x43dfcc;};exports[_0x5c9b('0x14')]=function(_0x1a00ad){_0x1a00ad=parseInt(_0x1a00ad,0xa);if(!_0x1a00ad||_0x1a00ad<0x0){_0x1a00ad=0x0;}return _0x1a00ad;};exports[_0x5c9b('0x15')]=function(_0x5f2f7d){var _0x2f9424,_0x2a6168=null;if(_0x5f2f7d){_0x2f9424=_0x5f2f7d[_0x5c9b('0x12')](',');_0x2a6168=_[_0x5c9b('0x16')](_0x2f9424,function(_0x3f7080){if(_0x3f7080[_0x5c9b('0x17')]('-')===0x0){return[_0x3f7080===_0x5c9b('0x18')?sequelize[_0x5c9b('0x19')](sequelize[_0x5c9b('0x1a')]('priority'),_0x5c9b('0x1b')):_0x3f7080[_0x5c9b('0x1c')](0x1),'DESC'];}else{return[_0x3f7080===_0x5c9b('0x18')?sequelize['cast'](sequelize[_0x5c9b('0x1a')]('priority'),_0x5c9b('0x1b')):_0x3f7080,'ASC'];}});}return _0x2a6168;};exports[_0x5c9b('0x1d')]=function(_0x2f7fcc,_0x10a3c9){if(_[_0x5c9b('0x6')](_0x2f7fcc)){return _0x2f7fcc;}if(_['isArray'](_0x2f7fcc)){for(var _0x2600b5=0x0;_0x2600b5<_0x2f7fcc[_0x5c9b('0x1e')];_0x2600b5+=0x1){_0x2f7fcc[_0x2600b5]=this[_0x5c9b('0x1d')](_0x2f7fcc[_0x2600b5],_0x10a3c9);}return _0x2f7fcc;}if(!_[_0x5c9b('0x1f')](_0x2f7fcc)){return _0x2f7fcc;}if(_[_0x5c9b('0x20')](_0x10a3c9)){_0x10a3c9=[_0x10a3c9];}if(!_['isArray'](_0x10a3c9)){return _0x2f7fcc;}for(var _0x21041f=0x0;_0x21041f<_0x10a3c9[_0x5c9b('0x1e')];_0x21041f+=0x1){_[_0x5c9b('0x21')](_0x2f7fcc,_0x10a3c9[_0x21041f]);}for(var _0xcc1a2f in _0x2f7fcc){if(_0x2f7fcc[_0x5c9b('0x22')](_0xcc1a2f)){_0x2f7fcc[_0xcc1a2f]=this[_0x5c9b('0x1d')](_0x2f7fcc[_0xcc1a2f],_0x10a3c9);}}return _0x2f7fcc;};exports['isNumeric']=function(_0x2e3aa0){return _0x2e3aa0['match'](RegExp(_0x5c9b('0x23')))?!![]:![];};exports['isEmail']=function(_0x32e4b3){return _0x32e4b3[_0x5c9b('0x24')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x2691f8){var _0x45f399=[];_0x2691f8[_0x5c9b('0x12')](/[ ,]+/)[_0x5c9b('0x25')](function(_0x1347f1){_0x1347f1=_0x1347f1[_0x5c9b('0x26')](/([^:]")"+/g,'$1');_0x1347f1='+'+_0x1347f1+'*';if(_0x1347f1['includes']('@'))_0x1347f1='\x22'+_0x1347f1+'\x22';_0x45f399[_0x5c9b('0x27')](_0x1347f1);});return _0x45f399[_0x5c9b('0x28')]('\x20');};exports[_0x5c9b('0x29')]=function(_0x19c2cf,_0x22dceb,_0x4eff4c){var _0x22d06b={},_0x40947a={};if(_0x22dceb['query'][_0x5c9b('0x2a')]){_0x22dceb[_0x5c9b('0x2b')]['id']=_0x22dceb['query'][_0x5c9b('0x2a')];delete _0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x2a')];}_0x22d06b[_0x5c9b('0x2c')]=_[_0x5c9b('0x16')](_0x19c2cf,'name');_0x22d06b['query']=_[_0x5c9b('0x2d')](_0x22dceb[_0x5c9b('0x2b')]);_0x22d06b[_0x5c9b('0x5')]=_[_0x5c9b('0x2e')](_0x22d06b[_0x5c9b('0x2c')],_0x22d06b['query']);_0x40947a[_0x5c9b('0x2f')]=_['intersection'](_0x22d06b[_0x5c9b('0x2c')],this[_0x5c9b('0x4')](_0x22dceb[_0x5c9b('0x2b')]['fields']));_0x40947a['attributes']=_0x40947a[_0x5c9b('0x2f')][_0x5c9b('0x1e')]?_0x40947a[_0x5c9b('0x2f')]:_0x22d06b['model'];if(!_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x22')](_0x5c9b('0x30'))){_0x40947a['limit']=this[_0x5c9b('0x13')](_0x22dceb[_0x5c9b('0x2b')]['limit']);_0x40947a['offset']=this[_0x5c9b('0x14')](_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x14')]);}_0x40947a[_0x5c9b('0x31')]=this[_0x5c9b('0x15')](_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x15')]);_0x40947a[_0x5c9b('0x32')]=this['filters'](_['pick'](_0x22dceb['query'],_0x22d06b[_0x5c9b('0x5')]),_0x19c2cf);if(_0x22dceb[_0x5c9b('0x2b')]['filter']){_0x40947a[_0x5c9b('0x32')]=_[_0x5c9b('0x33')](_0x40947a[_0x5c9b('0x32')],{'$or':_[_0x5c9b('0x16')](_0x19c2cf,function(_0x5d322e){if(_0x5d322e[_0x5c9b('0x8')]!==_0x5c9b('0x34')){if(_0x4eff4c){return sequelize[_0x5c9b('0x32')](sequelize['fn']('lower',sequelize[_0x5c9b('0x1a')](_0x5d322e[_0x5c9b('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x22dceb['query']['filter']+'%')});}else{var _0x4c64fd={};_0x4c64fd[_0x5d322e[_0x5c9b('0xf')]]={'$like':'%'+_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x35')]+'%'};return _0x4c64fd;}}})});}_0x40947a=_[_0x5c9b('0x33')]({},_0x40947a,_0x22dceb['options']);return _0x40947a;};
\ No newline at end of file
+var _0xb222=['substr','DESC','ASC','omit','isEmpty','length','isObject','isString','unset','hasOwnProperty','match','^[+]?[0-9]*$','forEach','replace','includes','push','getOptions','query','$id','model','attributes','nolimit','limit','sort','filters','merge','where','type','VIRTUAL','lower','filter','options','sequelize','moment','parse','keys','fields','split','forOwn','isPlainObject','$gte','format','$lte','YYYY-MM-DD','utc','subtract','name','isArray','offset','map','indexOf','priority','cast','col','unsigned'];(function(_0x5ee0ee,_0x3ce413){var _0x198093=function(_0x29dcc9){while(--_0x29dcc9){_0x5ee0ee['push'](_0x5ee0ee['shift']());}};_0x198093(++_0x3ce413);}(_0xb222,0xfc));var _0x2b22=function(_0x499ae5,_0x392de9){_0x499ae5=_0x499ae5-0x0;var _0x466ee9=_0xb222[_0x499ae5];return _0x466ee9;};'use strict';var _=require('lodash');var sequelize=require(_0x2b22('0x0'));var moment=require(_0x2b22('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x147de5){var _0x46fd7a=['ne'];try{var _0x125393=JSON[_0x2b22('0x2')](_0x147de5);var _0x2d92dc=Object[_0x2b22('0x3')](_0x125393)[0x0];return _0x46fd7a['includes'](_0x2d92dc);}catch(_0x18512c){return![];}}function getOperatorValue(_0x34cf6c){var _0x4cc893=JSON['parse'](_0x34cf6c);var _0x2cfc2d=Object[_0x2b22('0x3')](_0x4cc893)[0x0];var _0x4d6f13=_0x4cc893[_0x2cfc2d];return{['$'+_0x2cfc2d]:_0x4d6f13};}exports[_0x2b22('0x4')]=function(_0xf719ff){var _0x500d9f=null;if(_0xf719ff){_0x500d9f=_0xf719ff[_0x2b22('0x5')](',');}return _0x500d9f;};exports['filters']=function(_0x4cbd1a,_0x3f9395){var _0x60a947={};if(!_['isEmpty'](_0x4cbd1a)){_[_0x2b22('0x6')](_0x4cbd1a,function(_0x3188ae,_0x584083){try{if(_0x3f9395){var _0x445ef5=_['find'](_0x3f9395,{'name':_0x584083})||{};if(hasSequelizeOperator(_0x3188ae)){_0x60a947[_0x584083]=getOperatorValue(_0x3188ae);}else if(_0x445ef5['type']==='DATE'&&_[_0x2b22('0x7')](_0x3188ae)){var _0x234508=JSON[_0x2b22('0x2')](_0x3188ae);var _0x262742={'$gte':moment(moment(_0x234508[_0x2b22('0x8')])['format']('YYYY-MM-DD'))['utc']()[_0x2b22('0x9')](),'$lte':moment(moment(_0x234508[_0x2b22('0xa')])[_0x2b22('0x9')](_0x2b22('0xb')))[_0x2b22('0xc')]()[_0x2b22('0xd')](0x1,'s')[_0x2b22('0x9')]()};_0x60a947[_0x584083]=_0x262742;}else if(_0x445ef5[_0x2b22('0xe')]==='uniqueid'){_0x60a947[_0x584083]=_0x3188ae;}else{_0x60a947[_0x584083]=_['isArray'](_0x3188ae)?_0x3188ae:JSON[_0x2b22('0x2')](_0x3188ae);}}else{_0x60a947[_0x584083]=_[_0x2b22('0xf')](_0x3188ae)?_0x3188ae:JSON[_0x2b22('0x2')](_0x3188ae);}}catch(_0x853193){_0x60a947[_0x584083]=_0x3188ae[_0x2b22('0x5')](',');}});}return _0x60a947;};exports['limit']=function(_0x4b0a81){_0x4b0a81=parseInt(_0x4b0a81,0xa);if(!_0x4b0a81||_0x4b0a81<0x0){_0x4b0a81=LIMIT_VALUE;}return _0x4b0a81;};exports[_0x2b22('0x10')]=function(_0x5a76d4){_0x5a76d4=parseInt(_0x5a76d4,0xa);if(!_0x5a76d4||_0x5a76d4<0x0){_0x5a76d4=0x0;}return _0x5a76d4;};exports['sort']=function(_0x253f37){var _0x2bcc87,_0xfeb504=null;if(_0x253f37){_0x2bcc87=_0x253f37[_0x2b22('0x5')](',');_0xfeb504=_[_0x2b22('0x11')](_0x2bcc87,function(_0x422341){if(_0x422341[_0x2b22('0x12')]('-')===0x0){return[_0x422341===_0x2b22('0x13')?sequelize[_0x2b22('0x14')](sequelize[_0x2b22('0x15')](_0x2b22('0x13')),_0x2b22('0x16')):_0x422341[_0x2b22('0x17')](0x1),_0x2b22('0x18')];}else{return[_0x422341===_0x2b22('0x13')?sequelize[_0x2b22('0x14')](sequelize['col'](_0x2b22('0x13')),'unsigned'):_0x422341,_0x2b22('0x19')];}});}return _0xfeb504;};exports[_0x2b22('0x1a')]=function(_0x5a6894,_0x5ad76b){if(_[_0x2b22('0x1b')](_0x5a6894)){return _0x5a6894;}if(_[_0x2b22('0xf')](_0x5a6894)){for(var _0x69a54f=0x0;_0x69a54f<_0x5a6894[_0x2b22('0x1c')];_0x69a54f+=0x1){_0x5a6894[_0x69a54f]=this['omit'](_0x5a6894[_0x69a54f],_0x5ad76b);}return _0x5a6894;}if(!_[_0x2b22('0x1d')](_0x5a6894)){return _0x5a6894;}if(_[_0x2b22('0x1e')](_0x5ad76b)){_0x5ad76b=[_0x5ad76b];}if(!_['isArray'](_0x5ad76b)){return _0x5a6894;}for(var _0x21f5b7=0x0;_0x21f5b7<_0x5ad76b[_0x2b22('0x1c')];_0x21f5b7+=0x1){_[_0x2b22('0x1f')](_0x5a6894,_0x5ad76b[_0x21f5b7]);}for(var _0x514a84 in _0x5a6894){if(_0x5a6894[_0x2b22('0x20')](_0x514a84)){_0x5a6894[_0x514a84]=this[_0x2b22('0x1a')](_0x5a6894[_0x514a84],_0x5ad76b);}}return _0x5a6894;};exports['isNumeric']=function(_0x51215c){return _0x51215c[_0x2b22('0x21')](RegExp(_0x2b22('0x22')))?!![]:![];};exports['isEmail']=function(_0x44d2a9){return _0x44d2a9[_0x2b22('0x21')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x456acd){var _0xf51c9b=[];_0x456acd[_0x2b22('0x5')](/[ ,]+/)[_0x2b22('0x23')](function(_0x1f06aa){_0x1f06aa=_0x1f06aa[_0x2b22('0x24')](/([^:]")"+/g,'$1');_0x1f06aa='+'+_0x1f06aa+'*';if(_0x1f06aa[_0x2b22('0x25')]('@'))_0x1f06aa='\x22'+_0x1f06aa+'\x22';_0xf51c9b[_0x2b22('0x26')](_0x1f06aa);});return _0xf51c9b['join']('\x20');};exports[_0x2b22('0x27')]=function(_0x13502d,_0x50004c,_0x54c58a){var _0x1e8757={},_0x1c2bff={};if(_0x50004c[_0x2b22('0x28')][_0x2b22('0x29')]){_0x50004c[_0x2b22('0x28')]['id']=_0x50004c[_0x2b22('0x28')][_0x2b22('0x29')];delete _0x50004c['query']['$id'];}_0x1e8757[_0x2b22('0x2a')]=_[_0x2b22('0x11')](_0x13502d,_0x2b22('0xe'));_0x1e8757[_0x2b22('0x28')]=_['keys'](_0x50004c[_0x2b22('0x28')]);_0x1e8757['filters']=_['intersection'](_0x1e8757[_0x2b22('0x2a')],_0x1e8757['query']);_0x1c2bff['attributes']=_['intersection'](_0x1e8757[_0x2b22('0x2a')],this[_0x2b22('0x4')](_0x50004c[_0x2b22('0x28')][_0x2b22('0x4')]));_0x1c2bff[_0x2b22('0x2b')]=_0x1c2bff[_0x2b22('0x2b')][_0x2b22('0x1c')]?_0x1c2bff['attributes']:_0x1e8757[_0x2b22('0x2a')];if(!_0x50004c[_0x2b22('0x28')]['hasOwnProperty'](_0x2b22('0x2c'))){_0x1c2bff['limit']=this[_0x2b22('0x2d')](_0x50004c[_0x2b22('0x28')]['limit']);_0x1c2bff[_0x2b22('0x10')]=this[_0x2b22('0x10')](_0x50004c['query']['offset']);}_0x1c2bff['order']=this['sort'](_0x50004c[_0x2b22('0x28')][_0x2b22('0x2e')]);_0x1c2bff['where']=this['filters'](_['pick'](_0x50004c['query'],_0x1e8757[_0x2b22('0x2f')]),_0x13502d);if(_0x50004c[_0x2b22('0x28')]['filter']){_0x1c2bff['where']=_[_0x2b22('0x30')](_0x1c2bff[_0x2b22('0x31')],{'$or':_[_0x2b22('0x11')](_0x13502d,function(_0x1b9515){if(_0x1b9515[_0x2b22('0x32')]!==_0x2b22('0x33')){if(_0x54c58a){return sequelize[_0x2b22('0x31')](sequelize['fn'](_0x2b22('0x34'),sequelize[_0x2b22('0x15')](_0x1b9515[_0x2b22('0xe')])),{'$like':sequelize['fn']('lower','%'+_0x50004c['query'][_0x2b22('0x35')]+'%')});}else{var _0x5ec835={};_0x5ec835[_0x1b9515[_0x2b22('0xe')]]={'$like':'%'+_0x50004c['query'][_0x2b22('0x35')]+'%'};return _0x5ec835;}}})});}_0x1c2bff=_[_0x2b22('0x30')]({},_0x1c2bff,_0x50004c[_0x2b22('0x36')]);return _0x1c2bff;};
\ No newline at end of file
index 492f30f..72084d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99c8=['production','appPath','public','development','test','set','root','use','toISOString','split','static','/server/views','engine','html','ejs','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','path','passport','cors','../mysqldb','default','get','env'];(function(_0x2dde4e,_0x20db42){var _0x3085d6=function(_0x3e960b){while(--_0x3e960b){_0x2dde4e['push'](_0x2dde4e['shift']());}};_0x3085d6(++_0x20db42);}(_0x99c8,0x1f4));var _0x899c=function(_0x5ebc32,_0x21804d){_0x5ebc32=_0x5ebc32-0x0;var _0x3bb8b3=_0x99c8[_0x5ebc32];return _0x3bb8b3;};'use strict';var express=require(_0x899c('0x0'));var favicon=require(_0x899c('0x1'));var bodyParser=require(_0x899c('0x2'));var methodOverride=require(_0x899c('0x3'));var cookieParser=require(_0x899c('0x4'));var errorHandler=require('errorhandler');var path=require(_0x899c('0x5'));var passport=require(_0x899c('0x6'));var cors=require(_0x899c('0x7'));var moment=require('moment');var config=require('./environment');var db=require(_0x899c('0x8'))['db'];exports[_0x899c('0x9')]=function(_0x3fd3f1){var _0x51bdae=_0x3fd3f1[_0x899c('0xa')](_0x899c('0xb'));if(_0x51bdae===_0x899c('0xc')){_0x3fd3f1['set'](_0x899c('0xd'),path['join'](config['root'],_0x899c('0xe')));}if(_0x51bdae===_0x899c('0xf')||_0x51bdae===_0x899c('0x10')){_0x3fd3f1[_0x899c('0x11')](_0x899c('0xd'),path['join'](config[_0x899c('0x12')],'client'));_0x3fd3f1[_0x899c('0x13')](errorHandler());}_0x3fd3f1['set']('json\x20replacer',function(_0xe958cb,_0x9ed6c4){if(this[_0xe958cb]instanceof Date){_0x9ed6c4=this[_0xe958cb][_0x899c('0x14')]()[_0x899c('0x15')]('.')[0x0]+'Z';}return _0x9ed6c4;});_0x3fd3f1[_0x899c('0x13')](express[_0x899c('0x16')](_0x3fd3f1[_0x899c('0xa')](_0x899c('0xd'))));_0x3fd3f1['set']('views',config[_0x899c('0x12')]+_0x899c('0x17'));_0x3fd3f1[_0x899c('0x18')](_0x899c('0x19'),require(_0x899c('0x1a'))['renderFile']);_0x3fd3f1[_0x899c('0x11')](_0x899c('0x1b'),_0x899c('0x19'));_0x3fd3f1[_0x899c('0x13')](bodyParser[_0x899c('0x1c')]({'limit':_0x899c('0x1d'),'extended':!![]}));_0x3fd3f1[_0x899c('0x13')](bodyParser[_0x899c('0x1e')]({'limit':'50mb'}));_0x3fd3f1[_0x899c('0x13')](cors());_0x3fd3f1[_0x899c('0x13')](methodOverride());_0x3fd3f1[_0x899c('0x13')](cookieParser());_0x3fd3f1[_0x899c('0x13')](passport[_0x899c('0x1f')]());};
\ No newline at end of file
+var _0x2d2d=['development','test','appPath','client','use','json\x20replacer','toISOString','split','static','/server/views','html','ejs','renderFile','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','method-override','errorhandler','path','passport','cors','moment','./environment','../mysqldb','get','production','set','join','root','public'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x2d2d,0x7b));var _0xd2d2=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x2d2d[_0x4ae6ef];return _0x3cbb4e;};'use strict';var express=require(_0xd2d2('0x0'));var favicon=require(_0xd2d2('0x1'));var bodyParser=require(_0xd2d2('0x2'));var methodOverride=require(_0xd2d2('0x3'));var cookieParser=require('cookie-parser');var errorHandler=require(_0xd2d2('0x4'));var path=require(_0xd2d2('0x5'));var passport=require(_0xd2d2('0x6'));var cors=require(_0xd2d2('0x7'));var moment=require(_0xd2d2('0x8'));var config=require(_0xd2d2('0x9'));var db=require(_0xd2d2('0xa'))['db'];exports['default']=function(_0x2fb25f){var _0xfd4828=_0x2fb25f[_0xd2d2('0xb')]('env');if(_0xfd4828===_0xd2d2('0xc')){_0x2fb25f[_0xd2d2('0xd')]('appPath',path[_0xd2d2('0xe')](config[_0xd2d2('0xf')],_0xd2d2('0x10')));}if(_0xfd4828===_0xd2d2('0x11')||_0xfd4828===_0xd2d2('0x12')){_0x2fb25f[_0xd2d2('0xd')](_0xd2d2('0x13'),path['join'](config[_0xd2d2('0xf')],_0xd2d2('0x14')));_0x2fb25f[_0xd2d2('0x15')](errorHandler());}_0x2fb25f[_0xd2d2('0xd')](_0xd2d2('0x16'),function(_0x1a7911,_0x333f5f){if(this[_0x1a7911]instanceof Date){_0x333f5f=this[_0x1a7911][_0xd2d2('0x17')]()[_0xd2d2('0x18')]('.')[0x0]+'Z';}return _0x333f5f;});_0x2fb25f[_0xd2d2('0x15')](express[_0xd2d2('0x19')](_0x2fb25f['get']('appPath')));_0x2fb25f[_0xd2d2('0xd')]('views',config[_0xd2d2('0xf')]+_0xd2d2('0x1a'));_0x2fb25f['engine'](_0xd2d2('0x1b'),require(_0xd2d2('0x1c'))[_0xd2d2('0x1d')]);_0x2fb25f['set'](_0xd2d2('0x1e'),_0xd2d2('0x1b'));_0x2fb25f[_0xd2d2('0x15')](bodyParser[_0xd2d2('0x1f')]({'limit':_0xd2d2('0x20'),'extended':!![]}));_0x2fb25f[_0xd2d2('0x15')](bodyParser[_0xd2d2('0x21')]({'limit':_0xd2d2('0x20')}));_0x2fb25f[_0xd2d2('0x15')](cors());_0x2fb25f['use'](methodOverride());_0x2fb25f[_0xd2d2('0x15')](cookieParser());_0x2fb25f[_0xd2d2('0x15')](passport[_0xd2d2('0x22')]());};
\ No newline at end of file
index 00ec354..485ef72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74ed=['head','mac','00:00:00:00:00:00','address','getFirstInterface','orderBy','map','model','join','createHash','md5','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','update','substring','crypto','child_process','execSync','networkInterfaces','length','filter','family','IPv4','concat'];(function(_0x152170,_0x26f7d2){var _0x17c1d6=function(_0x255224){while(--_0x255224){_0x152170['push'](_0x152170['shift']());}};_0x17c1d6(++_0x26f7d2);}(_0x74ed,0x105));var _0xd74e=function(_0x3f21e0,_0x3e3f3d){_0x3f21e0=_0x3f21e0-0x0;var _0x19b54d=_0x74ed[_0x3f21e0];return _0x19b54d;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0xd74e('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0xd74e('0x1'))[_0xd74e('0x2')];var config=require('../environment');function getInterfaces(){var _0x5d5b7e=[];var _0x5e3801=os[_0xd74e('0x3')]();var _0x2c17b5=_['orderBy'](_['keys'](_0x5e3801));for(var _0x3a106a=0x0;_0x3a106a<_0x2c17b5[_0xd74e('0x4')];_0x3a106a++){var _0x2a9369=_0x5e3801[_0x2c17b5[_0x3a106a]][_0xd74e('0x5')](function(_0x5bd781){return _0x5bd781[_0xd74e('0x6')]===_0xd74e('0x7')&&_0x5bd781['internal']===![];});_0x5d5b7e=_0x5d5b7e[_0xd74e('0x8')](_0x2a9369);}return _0x5d5b7e;}function getFirstInterface(){var _0xc36cc0=_[_0xd74e('0x9')](getInterfaces());return{'macAddress':_0xc36cc0&&_0xc36cc0[_0xd74e('0xa')]?_0xc36cc0[_0xd74e('0xa')]:_0xd74e('0xb'),'ipAddress':_0xc36cc0&&_0xc36cc0[_0xd74e('0xc')]?_0xc36cc0[_0xd74e('0xc')]:'127.0.0.1'};}exports[_0xd74e('0xd')]=getFirstInterface;function getCPUhash(){var _0x3919ad=_[_0xd74e('0xe')](os['cpus']()[_0xd74e('0xf')](function(_0x44e2ba){return _0x44e2ba[_0xd74e('0x10')];}))[_0xd74e('0x11')](':');return crypto[_0xd74e('0x12')](_0xd74e('0x13'))['update'](_0x3919ad)['digest']('hex');}exports[_0xd74e('0x14')]=function(){var _0x55abc3=os[_0xd74e('0x15')]();var _0x47d98c=/[0-9a-f-]{36}/;if(config[_0xd74e('0x16')]&&_0x47d98c[_0xd74e('0x17')](config[_0xd74e('0x16')])){return config[_0xd74e('0x16')];}else if(_0x55abc3===_0xd74e('0x18')){return exec(_0xd74e('0x19'),{'encoding':_0xd74e('0x1a')})['replace']('\x0d\x0a','');}else{var _0x2bea13=getFirstInterface();var _0x43d1be=getCPUhash();var _0x45cbfb=_0x43d1be+'|'+os[_0xd74e('0x1b')]()+'|'+_0x2bea13['macAddress']+'|'+_0x2bea13['ipAddress'];var _0xe43ec2=crypto[_0xd74e('0x12')](_0xd74e('0x13'))[_0xd74e('0x1c')](_0x45cbfb)['digest']('hex');return _0xe43ec2['substring'](0x0,0x8)+'-'+_0xe43ec2['substring'](0x8,0xc)+'-'+_0xe43ec2[_0xd74e('0x1d')](0xc,0x10)+'-'+_0xe43ec2[_0xd74e('0x1d')](0x10,0x14)+'-'+_0xe43ec2['substring'](0x14);}};
\ No newline at end of file
+var _0x360c=['00:00:00:00:00:00','address','127.0.0.1','cpus','map','model','join','createHash','md5','digest','hex','getUuid','platform','licenseToken','test','replace','hostname','macAddress','update','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','orderBy','keys','length','filter','family','internal','concat','head','mac'];(function(_0x4937fb,_0x2bbfea){var _0x439ef0=function(_0x5316e1){while(--_0x5316e1){_0x4937fb['push'](_0x4937fb['shift']());}};_0x439ef0(++_0x2bbfea);}(_0x360c,0x1b8));var _0xc360=function(_0x706d7e,_0x24a5ac){_0x706d7e=_0x706d7e-0x0;var _0x1ecbeb=_0x360c[_0x706d7e];return _0x1ecbeb;};'use strict';var _=require(_0xc360('0x0'));var os=require('os');var crypto=require(_0xc360('0x1'));var machine=require(_0xc360('0x2'));var exec=require(_0xc360('0x3'))[_0xc360('0x4')];var config=require(_0xc360('0x5'));function getInterfaces(){var _0x53a8ab=[];var _0x23f9bc=os['networkInterfaces']();var _0x21c19c=_[_0xc360('0x6')](_[_0xc360('0x7')](_0x23f9bc));for(var _0x1d02c3=0x0;_0x1d02c3<_0x21c19c[_0xc360('0x8')];_0x1d02c3++){var _0xf2f26e=_0x23f9bc[_0x21c19c[_0x1d02c3]][_0xc360('0x9')](function(_0x19afcb){return _0x19afcb[_0xc360('0xa')]==='IPv4'&&_0x19afcb[_0xc360('0xb')]===![];});_0x53a8ab=_0x53a8ab[_0xc360('0xc')](_0xf2f26e);}return _0x53a8ab;}function getFirstInterface(){var _0x5308e2=_[_0xc360('0xd')](getInterfaces());return{'macAddress':_0x5308e2&&_0x5308e2[_0xc360('0xe')]?_0x5308e2[_0xc360('0xe')]:_0xc360('0xf'),'ipAddress':_0x5308e2&&_0x5308e2[_0xc360('0x10')]?_0x5308e2[_0xc360('0x10')]:_0xc360('0x11')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x2cf4f3=_[_0xc360('0x6')](os[_0xc360('0x12')]()[_0xc360('0x13')](function(_0x16f5a7){return _0x16f5a7[_0xc360('0x14')];}))[_0xc360('0x15')](':');return crypto[_0xc360('0x16')](_0xc360('0x17'))['update'](_0x2cf4f3)[_0xc360('0x18')](_0xc360('0x19'));}exports[_0xc360('0x1a')]=function(){var _0x222b22=os[_0xc360('0x1b')]();var _0x2dc5a2=/[0-9a-f-]{36}/;if(config[_0xc360('0x1c')]&&_0x2dc5a2[_0xc360('0x1d')](config[_0xc360('0x1c')])){return config[_0xc360('0x1c')];}else if(_0x222b22==='win32'){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':'utf8'})[_0xc360('0x1e')]('\x0d\x0a','');}else{var _0x4f5c74=getFirstInterface();var _0x24142d=getCPUhash();var _0x2dfdff=_0x24142d+'|'+os[_0xc360('0x1f')]()+'|'+_0x4f5c74[_0xc360('0x20')]+'|'+_0x4f5c74['ipAddress'];var _0x42a0ba=crypto[_0xc360('0x16')](_0xc360('0x17'))[_0xc360('0x21')](_0x2dfdff)[_0xc360('0x18')]('hex');return _0x42a0ba[_0xc360('0x22')](0x0,0x8)+'-'+_0x42a0ba[_0xc360('0x22')](0x8,0xc)+'-'+_0x42a0ba[_0xc360('0x22')](0xc,0x10)+'-'+_0x42a0ba['substring'](0x10,0x14)+'-'+_0x42a0ba[_0xc360('0x22')](0x14);}};
\ No newline at end of file
index 598954f..12a7263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86ef=['../../mysqldb','../../components/encryptor','./hardware','license','https://www.xcallymotion.com','format','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','version','GET','data1','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','days','DEMO\x20START\x20AT\x20%s','catch','error','message','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x86ef,0xeb));var _0xf86e=function(_0xc1e0a2,_0x44852c){_0xc1e0a2=_0xc1e0a2-0x0;var _0x2fabdd=_0x86ef[_0xc1e0a2];return _0x2fabdd;};'use strict';var util=require(_0xf86e('0x0'));var moment=require(_0xf86e('0x1'));var rp=require(_0xf86e('0x2'));var BPromise=require(_0xf86e('0x3'));var pkginfo=require(_0xf86e('0x4'))(module,'version');var db=require(_0xf86e('0x5'))['db'];var encryptor=require(_0xf86e('0x6'));var hardware=require(_0xf86e('0x7'));var logger=require('../logger')(_0xf86e('0x8'));var HOST=_0xf86e('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x472cc2){return new BPromise(function(_0x51f6de,_0x3b6521){var _0x242bd5=util[_0xf86e('0xa')]('%s/api/servers/%s/check?version=%s',HOST,_0x472cc2,module[_0xf86e('0xb')]['version']);if(oldToken){_0x242bd5=util[_0xf86e('0xa')](_0xf86e('0xc'),HOST,_0x472cc2,module[_0xf86e('0xb')][_0xf86e('0xd')],oldToken);}var _0x3a5c76={'uri':_0x242bd5,'method':_0xf86e('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x3a5c76)['then'](function(_0x31363f){_0x51f6de(_0x31363f);})['catch'](function(_0x732150){_0x3b6521(_0x732150);});});}function manageLicense(_0x54d77f,_0x547c81){var _0x12a047=_0x547c81['get']({'plain':!![]});if(!isOldTokenSent&&_0x12a047['data1']!==_0x54d77f&&!_0x12a047['data2']){oldToken=_0x12a047[_0xf86e('0xf')];}httpRequest(_0x54d77f)['then'](function(_0x1ba94c){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1ba94c[_0xf86e('0x10')]){isOldTokenSent=![];if(!_0x12a047[_0xf86e('0x8')]&&_0x12a047[_0xf86e('0x8')]!=_0x1ba94c['license']||_0x12a047['license']&&_0x12a047[_0xf86e('0x11')]){logger[_0xf86e('0x12')](_0xf86e('0x13'));}if(_0x12a047[_0xf86e('0x8')]&&!_0x12a047[_0xf86e('0x11')]&&_0x12a047['license']!=_0x1ba94c['license']){logger[_0xf86e('0x12')](_0xf86e('0x14'));}if(_0x12a047[_0xf86e('0x8')]&&!_0x12a047[_0xf86e('0x11')]&&_0x12a047[_0xf86e('0x8')]==_0x1ba94c[_0xf86e('0x8')]){return _0x547c81;}return _0x547c81[_0xf86e('0x15')]({'data1':_0x54d77f,'data2':null,'license':_0x1ba94c['license']});}else{if(_0x1ba94c[_0xf86e('0x8')]||_0x12a047[_0xf86e('0x8')]){if(!_0x12a047[_0xf86e('0x11')]){if(_0x12a047[_0xf86e('0xf')]==_0x54d77f){GRAY_PERIOD_REASON=_0xf86e('0x16');logger['info'](_0xf86e('0x17'));}else{GRAY_PERIOD_REASON=_0xf86e('0x18');logger[_0xf86e('0x12')](_0xf86e('0x19'),_0x12a047['data1'],_0x54d77f);}logger[_0xf86e('0x12')](_0xf86e('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0xf86e('0xa')](_0xf86e('0x1b')));return _0x547c81[_0xf86e('0x15')]({'data2':encryptor[_0xf86e('0x1c')](moment()['format'](_0xf86e('0x1b')))});}else{if(moment()[_0xf86e('0x1d')](encryptor['decryptString'](_0x12a047[_0xf86e('0x11')]),_0xf86e('0x1e'))>DAYS){logger[_0xf86e('0x12')](_0xf86e('0x1f'),moment()['format']('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x547c81['update']({'data1':_0x54d77f,'data2':null,'license':null});}}}else{if(_0x12a047[_0xf86e('0xf')]!=_0x54d77f){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x12a047[_0xf86e('0xf')],_0x54d77f);return _0x547c81[_0xf86e('0x15')]({'data1':_0x54d77f,'data2':null,'license':null});}}}return _0x547c81;})['then'](function(_0x444825){_0x547c81=_0x444825;})[_0xf86e('0x20')](function(_0x19694c){logger[_0xf86e('0x21')](_0x19694c[_0xf86e('0x22')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x547c81);},TIME);});}function defaultLicense(){var _0x7c16ef=hardware[_0xf86e('0x23')]();if(_0x7c16ef){return db['License'][_0xf86e('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x7c16ef}})[_0xf86e('0x25')](function(_0x3529d5,_0x44ff2f){logger[_0xf86e('0x12')](_0xf86e('0x26'),_0x7c16ef);manageLicense(_0x7c16ef,_0x3529d5);})['catch'](function(_0x381490){logger['error'](_0x381490[_0xf86e('0x22')]);});}}exports[_0xf86e('0x27')]=defaultLicense;
\ No newline at end of file
+var _0xc2bb=['version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','update','encryptString','YYYY-MM-DD\x20HH:mm','diff','decryptString','DEMO\x20START\x20AT\x20%s','catch','error','message','getUuid','License','findOrCreate','default','util','bluebird','pkginfo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc2bb,0x107));var _0xbc2b=function(_0x3b6a6d,_0x3ba7df){_0x3b6a6d=_0x3b6a6d-0x0;var _0x13268d=_0xc2bb[_0x3b6a6d];return _0x13268d;};'use strict';var util=require(_0xbc2b('0x0'));var moment=require('moment');var rp=require('request-promise');var BPromise=require(_0xbc2b('0x1'));var pkginfo=require(_0xbc2b('0x2'))(module,_0xbc2b('0x3'));var db=require(_0xbc2b('0x4'))['db'];var encryptor=require(_0xbc2b('0x5'));var hardware=require(_0xbc2b('0x6'));var logger=require(_0xbc2b('0x7'))(_0xbc2b('0x8'));var HOST=_0xbc2b('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x37cf3f){return new BPromise(function(_0x428f28,_0x36f04a){var _0x153bfe=util[_0xbc2b('0xa')](_0xbc2b('0xb'),HOST,_0x37cf3f,module['exports'][_0xbc2b('0x3')]);if(oldToken){_0x153bfe=util['format'](_0xbc2b('0xc'),HOST,_0x37cf3f,module['exports'][_0xbc2b('0x3')],oldToken);}var _0x1c8832={'uri':_0x153bfe,'method':_0xbc2b('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x1c8832)[_0xbc2b('0xe')](function(_0x24c957){_0x428f28(_0x24c957);})['catch'](function(_0x4f17bf){_0x36f04a(_0x4f17bf);});});}function manageLicense(_0x146f1e,_0x5044ca){var _0x32b929=_0x5044ca['get']({'plain':!![]});if(!isOldTokenSent&&_0x32b929[_0xbc2b('0xf')]!==_0x146f1e&&!_0x32b929[_0xbc2b('0x10')]){oldToken=_0x32b929['data1'];}httpRequest(_0x146f1e)[_0xbc2b('0xe')](function(_0x48f8b4){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x48f8b4['active']){isOldTokenSent=![];if(!_0x32b929[_0xbc2b('0x8')]&&_0x32b929[_0xbc2b('0x8')]!=_0x48f8b4[_0xbc2b('0x8')]||_0x32b929[_0xbc2b('0x8')]&&_0x32b929[_0xbc2b('0x10')]){logger[_0xbc2b('0x11')](_0xbc2b('0x12'));}if(_0x32b929['license']&&!_0x32b929['data2']&&_0x32b929['license']!=_0x48f8b4[_0xbc2b('0x8')]){logger[_0xbc2b('0x11')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x32b929[_0xbc2b('0x8')]&&!_0x32b929['data2']&&_0x32b929[_0xbc2b('0x8')]==_0x48f8b4['license']){return _0x5044ca;}return _0x5044ca['update']({'data1':_0x146f1e,'data2':null,'license':_0x48f8b4['license']});}else{if(_0x48f8b4[_0xbc2b('0x8')]||_0x32b929[_0xbc2b('0x8')]){if(!_0x32b929[_0xbc2b('0x10')]){if(_0x32b929[_0xbc2b('0xf')]==_0x146f1e){GRAY_PERIOD_REASON=_0xbc2b('0x13');logger[_0xbc2b('0x11')](_0xbc2b('0x14'));}else{GRAY_PERIOD_REASON=_0xbc2b('0x15');logger['info'](_0xbc2b('0x16'),_0x32b929['data1'],_0x146f1e);}logger[_0xbc2b('0x11')](_0xbc2b('0x17'),GRAY_PERIOD_REASON[_0xbc2b('0x18')](),moment()[_0xbc2b('0xa')]('YYYY-MM-DD\x20HH:mm'));return _0x5044ca[_0xbc2b('0x19')]({'data2':encryptor[_0xbc2b('0x1a')](moment()[_0xbc2b('0xa')](_0xbc2b('0x1b')))});}else{if(moment()[_0xbc2b('0x1c')](encryptor[_0xbc2b('0x1d')](_0x32b929[_0xbc2b('0x10')]),'days')>DAYS){logger[_0xbc2b('0x11')](_0xbc2b('0x1e'),moment()['format'](_0xbc2b('0x1b')));isOldTokenSent=![];return _0x5044ca['update']({'data1':_0x146f1e,'data2':null,'license':null});}}}else{if(_0x32b929[_0xbc2b('0xf')]!=_0x146f1e){logger[_0xbc2b('0x11')](_0xbc2b('0x16'),_0x32b929[_0xbc2b('0xf')],_0x146f1e);return _0x5044ca['update']({'data1':_0x146f1e,'data2':null,'license':null});}}}return _0x5044ca;})[_0xbc2b('0xe')](function(_0x3c1d79){_0x5044ca=_0x3c1d79;})[_0xbc2b('0x1f')](function(_0x37207b){logger[_0xbc2b('0x20')](_0x37207b[_0xbc2b('0x21')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0xbc2b('0x22')](),_0x5044ca);},TIME);});}function defaultLicense(){var _0x3e84e1=hardware[_0xbc2b('0x22')]();if(_0x3e84e1){return db[_0xbc2b('0x23')][_0xbc2b('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x3e84e1}})['spread'](function(_0xdde3ba,_0x4a5c85){logger[_0xbc2b('0x11')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x3e84e1);manageLicense(_0x3e84e1,_0xdde3ba);})['catch'](function(_0x28c3a6){logger[_0xbc2b('0x20')](_0x28c3a6[_0xbc2b('0x21')]);});}}exports[_0xbc2b('0x25')]=defaultLicense;
\ No newline at end of file
index 4d3c9ea..2b6150c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc32=['admin','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','deadline','days','disabled','message','User','role','sequelize','COUNT','col','count','user','telephone','users'];(function(_0xc1fac2,_0x725358){var _0x1a31f8=function(_0x22e4f3){while(--_0x22e4f3){_0xc1fac2['push'](_0xc1fac2['shift']());}};_0x1a31f8(++_0x725358);}(_0xbc32,0x120));var _0x2bc3=function(_0x46a9a1,_0x5325fd){_0x46a9a1=_0x46a9a1-0x0;var _0x50d5b5=_0xbc32[_0x46a9a1];return _0x50d5b5;};'use strict';var util=require(_0x2bc3('0x0'));var _=require(_0x2bc3('0x1'));var moment=require(_0x2bc3('0x2'));var BPromise=require(_0x2bc3('0x3'));var hardware=require(_0x2bc3('0x4'));var encryptor=require(_0x2bc3('0x5'));var db=require(_0x2bc3('0x6'))['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':_0x2bc3('0x7'),'machineUuid':hardware[_0x2bc3('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2bc3('0x9'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x2bc3('0xa'),'machineUuid':hardware[_0x2bc3('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2c2f6f){return new BPromise(function(_0x58d98d,_0x1dd172){return db[_0x2bc3('0xb')]['find'](_[_0x2bc3('0xc')](_0x2c2f6f,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x4046f1){return checkLicense(_0x4046f1,null);})[_0x2bc3('0xd')](function(_0x413310){_0x58d98d(_0x413310);return;})[_0x2bc3('0xe')](function(_0x1b56e4){_0x1dd172(_0x1b56e4);});});}function checkLicense(_0x2c9a10,_0x1356f5){if(!_0x2c9a10){demoLicense[_0x2bc3('0xf')]=_0x2c9a10[_0x2bc3('0x10')];return demoLicense;}try{var _0x29d8b6=_0x1356f5||_0x2c9a10[_0x2bc3('0x11')];if(_[_0x2bc3('0x12')](_0x29d8b6)){throw new Error(_0x2bc3('0x13'));}var _0x372b56=_0x2c9a10[_0x2bc3('0x10')];var _0x10de04=_0x2c9a10[_0x2bc3('0x14')];var _0x3412de=_0x372b56[_0x2bc3('0x15')]('-')[0x4];var _0x35ea94=_0x372b56[_0x2bc3('0x15')]('-')[0x0];var _0x5b3a80=encryptor[_0x2bc3('0x16')](_0x29d8b6,util[_0x2bc3('0x17')](_0x2bc3('0x18'),_0x3412de,_0x372b56,_0x35ea94));var _0x2b79ef=JSON[_0x2bc3('0x19')](_0x5b3a80);_0x2b79ef[_0x2bc3('0x1a')]=![];_0x2b79ef[_0x2bc3('0xf')]=_0x372b56;_0x2b79ef[_0x2bc3('0x1b')]=hardware['getUuid']();if(_0x10de04){var _0x2c8602=encryptor[_0x2bc3('0x16')](_0x10de04);_0x2b79ef['gray']=_0x2c8602;_0x2b79ef[_0x2bc3('0x1c')]=moment(_0x2c8602)['add'](0x7,_0x2bc3('0x1d'))[_0x2bc3('0x17')]();_0x2b79ef['grayReason']=_0x2b79ef[_0x2bc3('0xf')]!=_0x2b79ef[_0x2bc3('0x1b')]?'changed':_0x2bc3('0x1e');}return _0x2b79ef;}catch(_0x5215f0){breakingLicense[_0x2bc3('0xf')]=_0x2c9a10[_0x2bc3('0x10')];breakingLicense[_0x2bc3('0x1f')]=_0x5215f0[_0x2bc3('0x1f')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2aef76,_0x3f86ea){getLicense()[_0x2bc3('0xd')](function(_0x1ef836){return db[_0x2bc3('0x20')]['findAll']({'attributes':[_0x2bc3('0x21'),[db[_0x2bc3('0x22')]['fn'](_0x2bc3('0x23'),db[_0x2bc3('0x22')][_0x2bc3('0x24')]('role')),_0x2bc3('0x25')]],'group':_0x2bc3('0x21'),'where':{'role':{'$or':['admin',_0x2bc3('0x26'),_0x2bc3('0x27')]}},'raw':!![]})[_0x2bc3('0xd')](function(_0x36253c){var _0x14682c={'user':_0x1ef836[_0x2bc3('0x28')]||0x0,'telephone':_0x1ef836['telephones']||0x0};_0x36253c['forEach'](function(_0x511529){var _0x2b313e=_0x511529[_0x2bc3('0x21')]===_0x2bc3('0x29')?'user':_0x511529[_0x2bc3('0x21')];_0x14682c[_0x2b313e]-=_0x511529['count'];if(_0x14682c[_0x2b313e]<0x0)_0x14682c[_0x2b313e]=0x0;});_0x2aef76(_0x14682c);return;});})['catch'](function(_0x13869b){_0x3f86ea(_0x13869b);});});}function checkUserLimits(_0x328e66){return new BPromise(function(_0x5d89ce,_0x40da70){getLimits()[_0x2bc3('0xd')](function(_0x3dce26){var _0x1c9b47=_[_0x2bc3('0x2a')](_[_0x2bc3('0x2b')](_0x328e66,_0x2bc3('0x21')),['admin',_0x2bc3('0x26'),'telephone']);var _0x58e316=(_0x1c9b47[_0x2bc3('0x29')]||0x0)+(_0x1c9b47['user']||0x0);var _0x142e36=_0x1c9b47['telephone']||0x0;if(_0x58e316>_0x3dce26['user'])return _0x40da70(_0x2bc3('0x2c'));if(_0x142e36>_0x3dce26[_0x2bc3('0x27')])return _0x40da70(_0x2bc3('0x2d'));return _0x5d89ce();})[_0x2bc3('0xe')](function(_0x22abfe){_0x40da70(_0x22abfe);});});}module[_0x2bc3('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x161a=['data1','license','isEmpty','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','days','grayReason','changed','disabled','message','findAll','role','COUNT','sequelize','col','admin','user','users','forEach','pick','countBy','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','util','lodash','bluebird','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x161a,0x1b4));var _0xa161=function(_0x42ca15,_0x193ccb){_0x42ca15=_0x42ca15-0x0;var _0x1c6ded=_0x161a[_0x42ca15];return _0x1c6ded;};'use strict';var util=require(_0xa161('0x0'));var _=require(_0xa161('0x1'));var moment=require('moment');var BPromise=require(_0xa161('0x2'));var hardware=require('./hardware');var encryptor=require(_0xa161('0x3'));var db=require(_0xa161('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':_0xa161('0x5'),'machineUuid':hardware[_0xa161('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'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':![],'update':![],'description':_0xa161('0x7'),'machineUuid':hardware[_0xa161('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5a0520){return new BPromise(function(_0x34096a,_0x56c9af){return db[_0xa161('0x8')][_0xa161('0x9')](_[_0xa161('0xa')](_0x5a0520,{'raw':!![],'where':{'id':0x1}}))[_0xa161('0xb')](function(_0x129659){return checkLicense(_0x129659,null);})[_0xa161('0xb')](function(_0x158f7c){_0x34096a(_0x158f7c);return;})[_0xa161('0xc')](function(_0x3cdac2){_0x56c9af(_0x3cdac2);});});}function checkLicense(_0xf5d2ac,_0x52a5be){if(!_0xf5d2ac){demoLicense[_0xa161('0xd')]=_0xf5d2ac[_0xa161('0xe')];return demoLicense;}try{var _0x220661=_0x52a5be||_0xf5d2ac[_0xa161('0xf')];if(_[_0xa161('0x10')](_0x220661)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x4ded62=_0xf5d2ac[_0xa161('0xe')];var _0x15f959=_0xf5d2ac['data2'];var _0x5ac87d=_0x4ded62[_0xa161('0x11')]('-')[0x4];var _0x3227fe=_0x4ded62[_0xa161('0x11')]('-')[0x0];var _0x197f4f=encryptor[_0xa161('0x12')](_0x220661,util[_0xa161('0x13')](_0xa161('0x14'),_0x5ac87d,_0x4ded62,_0x3227fe));var _0x2123e4=JSON[_0xa161('0x15')](_0x197f4f);_0x2123e4[_0xa161('0x16')]=![];_0x2123e4[_0xa161('0xd')]=_0x4ded62;_0x2123e4[_0xa161('0x17')]=hardware['getUuid']();if(_0x15f959){var _0x4daaad=encryptor[_0xa161('0x12')](_0x15f959);_0x2123e4[_0xa161('0x18')]=_0x4daaad;_0x2123e4[_0xa161('0x19')]=moment(_0x4daaad)['add'](0x7,_0xa161('0x1a'))['format']();_0x2123e4[_0xa161('0x1b')]=_0x2123e4[_0xa161('0xd')]!=_0x2123e4['machineUuid']?_0xa161('0x1c'):_0xa161('0x1d');}return _0x2123e4;}catch(_0x261150){breakingLicense[_0xa161('0xd')]=_0xf5d2ac[_0xa161('0xe')];breakingLicense['message']=_0x261150[_0xa161('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x47f897,_0xfd6c48){getLicense()[_0xa161('0xb')](function(_0x5a36bd){return db['User'][_0xa161('0x1f')]({'attributes':[_0xa161('0x20'),[db['sequelize']['fn'](_0xa161('0x21'),db[_0xa161('0x22')][_0xa161('0x23')](_0xa161('0x20'))),'count']],'group':_0xa161('0x20'),'where':{'role':{'$or':[_0xa161('0x24'),_0xa161('0x25'),'telephone']}},'raw':!![]})[_0xa161('0xb')](function(_0x3c7402){var _0x1a5ae9={'user':_0x5a36bd[_0xa161('0x26')]||0x0,'telephone':_0x5a36bd['telephones']||0x0};_0x3c7402[_0xa161('0x27')](function(_0x4f50b2){var _0x5daa0b=_0x4f50b2[_0xa161('0x20')]===_0xa161('0x24')?_0xa161('0x25'):_0x4f50b2['role'];_0x1a5ae9[_0x5daa0b]-=_0x4f50b2['count'];if(_0x1a5ae9[_0x5daa0b]<0x0)_0x1a5ae9[_0x5daa0b]=0x0;});_0x47f897(_0x1a5ae9);return;});})[_0xa161('0xc')](function(_0x17a2bb){_0xfd6c48(_0x17a2bb);});});}function checkUserLimits(_0x13fb1a){return new BPromise(function(_0x5e0b46,_0x51ce35){getLimits()['then'](function(_0x3a0f8e){var _0x31400b=_[_0xa161('0x28')](_[_0xa161('0x29')](_0x13fb1a,_0xa161('0x20')),[_0xa161('0x24'),_0xa161('0x25'),_0xa161('0x2a')]);var _0x1333ee=(_0x31400b[_0xa161('0x24')]||0x0)+(_0x31400b['user']||0x0);var _0x230f35=_0x31400b[_0xa161('0x2a')]||0x0;if(_0x1333ee>_0x3a0f8e[_0xa161('0x25')])return _0x51ce35(_0xa161('0x2b'));if(_0x230f35>_0x3a0f8e[_0xa161('0x2a')])return _0x51ce35(_0xa161('0x2c'));return _0x5e0b46();})[_0xa161('0xc')](function(_0x2a93ac){_0x51ce35(_0x2a93ac);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index e8e08ce..d405de5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['http://localhost:9000','myappanuglar-secret','app-id','secret','exports'];(function(_0x102475,_0x3e079d){var _0x1ae736=function(_0x1a109c){while(--_0x1a109c){_0x102475['push'](_0x102475['shift']());}};_0x1ae736(++_0x3e079d);}(_0x896e,0x1e9));var _0xe896=function(_0x28f076,_0x115ea6){_0x28f076=_0x28f076-0x0;var _0x3ff8fb=_0x896e[_0x28f076];return _0x3ff8fb;};'use strict';module[_0xe896('0x0')]={'DOMAIN':_0xe896('0x1'),'SESSION_SECRET':_0xe896('0x2'),'GOOGLE_ID':_0xe896('0x3'),'GOOGLE_SECRET':_0xe896('0x4'),'DEBUG':''};
\ No newline at end of file
+var _0x36ee=['myappanuglar-secret','secret'];(function(_0x569894,_0xe9497f){var _0x2ffbc7=function(_0x6d0c56){while(--_0x6d0c56){_0x569894['push'](_0x569894['shift']());}};_0x2ffbc7(++_0xe9497f);}(_0x36ee,0xe8));var _0xe36e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36ee[_0x3dd15e];return _0x231fd0;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xe36e('0x0'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xe36e('0x1'),'DEBUG':''};
\ No newline at end of file
index 43b5fe8..dcfc52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x470c=['%s-%s','info','Console','env','moment','winston','util','path','INFO','join','log','xcally','format','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger','transports','error','File'];(function(_0x578c80,_0x3afea8){var _0x13f94e=function(_0x2a1427){while(--_0x2a1427){_0x578c80['push'](_0x578c80['shift']());}};_0x13f94e(++_0x3afea8);}(_0x470c,0x1be));var _0xc470=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x470c[_0xc4001c];return _0x49f7bc;};'use strict';var moment=require(_0xc470('0x0'));var winston=require(_0xc470('0x1'));var util=require(_0xc470('0x2'));var path=require(_0xc470('0x3'));var debugLevel=_0xc470('0x4');function filename(_0x21f54e,_0x4809f3){return path[_0xc470('0x5')]('/var',_0xc470('0x6'),_0xc470('0x7'),util[_0xc470('0x8')](_0xc470('0x9'),_0x21f54e,_0x4809f3));}function formatter(_0xb02833,_0x2af7b2){_0x2af7b2[_0xc470('0xa')]=_0x2af7b2[_0xc470('0xa')][_0xc470('0xb')](/@@{/g,_0xc470('0xc'))[_0xc470('0xb')](/}@@/g,'}}}')[_0xc470('0xb')](/@{/g,'{{')[_0xc470('0xb')](/}@/g,'}}');return util['format'](_0xc470('0xd'),moment()[_0xc470('0x8')](_0xc470('0xe')),_0x2af7b2[_0xc470('0xf')][_0xc470('0x10')](),_0xb02833,_0x2af7b2['message']);}module[_0xc470('0x11')]=function(_0x1f52f7){return new winston[(_0xc470('0x12'))]({'transports':[new winston[(_0xc470('0x13'))]['File']({'name':util[_0xc470('0x8')]('%s-%s',_0x1f52f7,_0xc470('0x14')),'filename':filename(_0x1f52f7,_0xc470('0x14')),'level':_0xc470('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3fe57e){return formatter(_0x1f52f7,_0x3fe57e);}}),new winston[(_0xc470('0x13'))][(_0xc470('0x15'))]({'name':util['format'](_0xc470('0x16'),_0x1f52f7,'info'),'filename':filename(_0x1f52f7,_0xc470('0x17')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4940d3){return formatter(_0x1f52f7,_0x4940d3);}}),new winston[(_0xc470('0x13'))][(_0xc470('0x18'))]({'level':process[_0xc470('0x19')]['debugLevel']||debugLevel,'json':![],'formatter':function(_0x3e1cc1){return formatter(_0x1f52f7,_0x3e1cc1);}})]});};
\ No newline at end of file
+var _0x0401=['File','info','Console','env','debugLevel','moment','winston','util','path','INFO','join','xcally','%s-%s.log','message','replace','{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','Logger','transports','%s-%s','error'];(function(_0x18b66a,_0x3ac3de){var _0x29a04d=function(_0x1df222){while(--_0x1df222){_0x18b66a['push'](_0x18b66a['shift']());}};_0x29a04d(++_0x3ac3de);}(_0x0401,0x1f3));var _0x1040=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x0401[_0x243b59];return _0x3e1676;};'use strict';var moment=require(_0x1040('0x0'));var winston=require(_0x1040('0x1'));var util=require(_0x1040('0x2'));var path=require(_0x1040('0x3'));var debugLevel=_0x1040('0x4');function filename(_0x5577f0,_0x4cf9be){return path[_0x1040('0x5')]('/var','log',_0x1040('0x6'),util['format'](_0x1040('0x7'),_0x5577f0,_0x4cf9be));}function formatter(_0x2983a0,_0xf35479){_0xf35479[_0x1040('0x8')]=_0xf35479[_0x1040('0x8')][_0x1040('0x9')](/@@{/g,_0x1040('0xa'))[_0x1040('0x9')](/}@@/g,_0x1040('0xb'))[_0x1040('0x9')](/@{/g,'{{')[_0x1040('0x9')](/}@/g,'}}');return util[_0x1040('0xc')](_0x1040('0xd'),moment()['format'](_0x1040('0xe')),_0xf35479[_0x1040('0xf')][_0x1040('0x10')](),_0x2983a0,_0xf35479[_0x1040('0x8')]);}module['exports']=function(_0x4a9612){return new winston[(_0x1040('0x11'))]({'transports':[new winston[(_0x1040('0x12'))]['File']({'name':util[_0x1040('0xc')](_0x1040('0x13'),_0x4a9612,_0x1040('0x14')),'filename':filename(_0x4a9612,'error'),'level':_0x1040('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4718e9){return formatter(_0x4a9612,_0x4718e9);}}),new winston[(_0x1040('0x12'))][(_0x1040('0x15'))]({'name':util['format'](_0x1040('0x13'),_0x4a9612,'info'),'filename':filename(_0x4a9612,'info'),'level':_0x1040('0x16'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3bc37d){return formatter(_0x4a9612,_0x3bc37d);}}),new winston['transports'][(_0x1040('0x17'))]({'level':process[_0x1040('0x18')][_0x1040('0x19')]||debugLevel,'json':![],'formatter':function(_0x4d8d92){return formatter(_0x4a9612,_0x4d8d92);}})]});};
\ No newline at end of file
index 8ee9be2..6e4a90a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ef=['xdr','../../services/xdr/index.js','exports','express','join','ami','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js'];(function(_0x386525,_0xefae6){var _0x14d015=function(_0x4a45c1){while(--_0x4a45c1){_0x386525['push'](_0x386525['shift']());}};_0x14d015(++_0xefae6);}(_0x07ef,0x10b));var _0xf07e=function(_0xb8f65,_0x5b3d4f){_0xb8f65=_0xb8f65-0x0;var _0x537221=_0x07ef[_0xb8f65];return _0x537221;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0xf07e('0x0'),'script':path[_0xf07e('0x1')](__dirname,'../../services/express/index.js')},{'name':_0xf07e('0x2'),'script':path[_0xf07e('0x1')](__dirname,'../../services/ami/index.js')},{'name':_0xf07e('0x3'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0x4'))},{'name':_0xf07e('0x5'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0x6'))},{'name':_0xf07e('0x7'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0x8'))},{'name':_0xf07e('0x9'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0xa'))}]};module[_0xf07e('0xb')]=config;
\ No newline at end of file
+var _0x6121=['path','express','join','../../services/express/index.js','ami','agi','email','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports'];(function(_0x4aed6f,_0xb9a95a){var _0x1011b1=function(_0x2d6e7a){while(--_0x2d6e7a){_0x4aed6f['push'](_0x4aed6f['shift']());}};_0x1011b1(++_0xb9a95a);}(_0x6121,0x14a));var _0x1612=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6121[_0x501510];return _0x1e6ee5;};'use strict';var path=require(_0x1612('0x0'));var os=require('os');var config={'apps':[{'name':_0x1612('0x1'),'script':path[_0x1612('0x2')](__dirname,_0x1612('0x3'))},{'name':_0x1612('0x4'),'script':path[_0x1612('0x2')](__dirname,'../../services/ami/index.js')},{'name':_0x1612('0x5'),'script':path['join'](__dirname,'../../services/agi/index.js')},{'name':_0x1612('0x6'),'script':path[_0x1612('0x2')](__dirname,'../../services/email/index.js')},{'name':'routing','script':path[_0x1612('0x2')](__dirname,_0x1612('0x7'))},{'name':_0x1612('0x8'),'script':path['join'](__dirname,_0x1612('0x9'))}]};module[_0x1612('0xa')]=config;
\ No newline at end of file
index f210f20..d80e619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b49=['list','describe','delete','dump','bluebird','./config','start','then','disconnect','stop','restart'];(function(_0x19f55e,_0xd4ffc3){var _0x44cfee=function(_0x138a86){while(--_0x138a86){_0x19f55e['push'](_0x19f55e['shift']());}};_0x44cfee(++_0xd4ffc3);}(_0x8b49,0x10c));var _0x98b4=function(_0xbb36a0,_0x1cb1e4){_0xbb36a0=_0xbb36a0-0x0;var _0x306db2=_0x8b49[_0xbb36a0];return _0x306db2;};'use strict';var pm2=require('pm2');var BPromise=require(_0x98b4('0x0'));var config=require(_0x98b4('0x1'));function connect(){return new BPromise(function(_0x3318fb,_0x1b78d9){return pm2['connect'](function(_0x4a7f8c){if(_0x4a7f8c){return _0x1b78d9(_0x4a7f8c);}return _0x3318fb('connected');});});};exports[_0x98b4('0x2')]=function(_0x27d85b){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x39edef,_0x300ea1){return pm2[_0x98b4('0x2')](_0x27d85b,function(_0x171522,_0x388a64){if(_0x171522){return _0x300ea1(_0x171522);}pm2[_0x98b4('0x4')]();return _0x39edef(_0x388a64);});});});};exports['stop']=function(_0x3fcce1){return connect()['then'](function(){return new BPromise(function(_0x4b5c3e,_0x404bd9){return pm2[_0x98b4('0x5')](_0x3fcce1,function(_0x3dee67,_0x32751a){if(_0x3dee67){return _0x404bd9(_0x3dee67);}pm2[_0x98b4('0x4')]();return _0x4b5c3e(_0x32751a);});});});};exports['restart']=function(_0x2be129){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x3fef9e,_0x1d6cdb){return pm2[_0x98b4('0x6')](_0x2be129,function(_0x549da5,_0x5e72b3){if(_0x549da5){return _0x1d6cdb(_0x549da5);}pm2[_0x98b4('0x4')]();return _0x3fef9e(_0x5e72b3);});});});};exports['list']=function(){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0xcb0c62,_0x443306){return pm2[_0x98b4('0x7')](function(_0x4e705a,_0x5de8df){if(_0x4e705a){return _0x443306(_0x4e705a);}pm2[_0x98b4('0x4')]();return _0xcb0c62(_0x5de8df);});});});};exports[_0x98b4('0x8')]=function(_0x66db20){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x3e75d5,_0x32be01){return pm2[_0x98b4('0x8')](_0x66db20,function(_0x529954,_0x202c37){if(_0x529954){return _0x32be01(_0x529954);}pm2[_0x98b4('0x4')]();return _0x3e75d5(_0x202c37);});});});};exports[_0x98b4('0x9')]=function(_0x538683){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x4ac9a5,_0xeb448b){return pm2[_0x98b4('0x9')](_0x538683,function(_0x3f885a,_0x8f24cf){if(_0x3f885a){return _0xeb448b(_0x3f885a);}pm2[_0x98b4('0x4')]();return _0x4ac9a5(_0x8f24cf);});});});};exports[_0x98b4('0xa')]=function(){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x22a396,_0x56e926){return pm2[_0x98b4('0xa')](function(_0x2871a7){if(_0x2871a7){return _0x56e926(_0x2871a7);}return _0x22a396('saved');});});});};
\ No newline at end of file
+var _0x7a62=['stop','restart','list','describe','delete','pm2','bluebird','./config','connect','connected','start','then','disconnect'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x7a62,0x87));var _0x27a6=function(_0x16eff6,_0x18fa7c){_0x16eff6=_0x16eff6-0x0;var _0x3c3744=_0x7a62[_0x16eff6];return _0x3c3744;};'use strict';var pm2=require(_0x27a6('0x0'));var BPromise=require(_0x27a6('0x1'));var config=require(_0x27a6('0x2'));function connect(){return new BPromise(function(_0x58afc4,_0x20e9e7){return pm2[_0x27a6('0x3')](function(_0x565091){if(_0x565091){return _0x20e9e7(_0x565091);}return _0x58afc4(_0x27a6('0x4'));});});};exports[_0x27a6('0x5')]=function(_0x72ff00){return connect()[_0x27a6('0x6')](function(){return new BPromise(function(_0xaf6dc1,_0x31c893){return pm2['start'](_0x72ff00,function(_0xabfe2a,_0x14cdd7){if(_0xabfe2a){return _0x31c893(_0xabfe2a);}pm2[_0x27a6('0x7')]();return _0xaf6dc1(_0x14cdd7);});});});};exports[_0x27a6('0x8')]=function(_0x25ad74){return connect()[_0x27a6('0x6')](function(){return new BPromise(function(_0x52f912,_0x266a5a){return pm2[_0x27a6('0x8')](_0x25ad74,function(_0x287076,_0x46d0b6){if(_0x287076){return _0x266a5a(_0x287076);}pm2[_0x27a6('0x7')]();return _0x52f912(_0x46d0b6);});});});};exports[_0x27a6('0x9')]=function(_0x50b525){return connect()['then'](function(){return new BPromise(function(_0x4dd154,_0x4c20b6){return pm2[_0x27a6('0x9')](_0x50b525,function(_0x25936c,_0x515740){if(_0x25936c){return _0x4c20b6(_0x25936c);}pm2[_0x27a6('0x7')]();return _0x4dd154(_0x515740);});});});};exports[_0x27a6('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x584b4e,_0x3a817d){return pm2[_0x27a6('0xa')](function(_0x1c4c91,_0x11a1cd){if(_0x1c4c91){return _0x3a817d(_0x1c4c91);}pm2[_0x27a6('0x7')]();return _0x584b4e(_0x11a1cd);});});});};exports[_0x27a6('0xb')]=function(_0x3a34bd){return connect()['then'](function(){return new BPromise(function(_0x16524b,_0x2443bd){return pm2[_0x27a6('0xb')](_0x3a34bd,function(_0x57a824,_0x54386f){if(_0x57a824){return _0x2443bd(_0x57a824);}pm2['disconnect']();return _0x16524b(_0x54386f);});});});};exports[_0x27a6('0xc')]=function(_0x1f10b1){return connect()['then'](function(){return new BPromise(function(_0x301f27,_0x2a24ae){return pm2[_0x27a6('0xc')](_0x1f10b1,function(_0x5062d6,_0x42bddd){if(_0x5062d6){return _0x2a24ae(_0x5062d6);}pm2['disconnect']();return _0x301f27(_0x42bddd);});});});};exports['dump']=function(){return connect()[_0x27a6('0x6')](function(){return new BPromise(function(_0x111509,_0x30ecf2){return pm2['dump'](function(_0x5c40c0){if(_0x5c40c0){return _0x30ecf2(_0x5c40c0);}return _0x111509('saved');});});});};
\ No newline at end of file
index fb397a4..107b0b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aa2=['findAll','lastMsgAt','subtract','minutes','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','start','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x4aa2,0xb7));var _0x24aa=function(_0x10d840,_0x5164df){_0x10d840=_0x10d840-0x0;var _0x39f65e=_0x4aa2[_0x10d840];return _0x39f65e;};'use strict';var _=require('lodash');var moment=require(_0x24aa('0x0'));var Redis=require(_0x24aa('0x1'));var util=require('util');var config=require(_0x24aa('0x2'));var db=require(_0x24aa('0x3'))['db'];var logger=require(_0x24aa('0x4'))(_0x24aa('0x5'));config[_0x24aa('0x6')]=_[_0x24aa('0x7')](config['redis'],{'host':_0x24aa('0x8'),'port':0x18eb});var io=require(_0x24aa('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x3ae0b7=0x0;var _0xd3febc=[];return db[_0x24aa('0xa')][_0x24aa('0xb')]({'raw':!![],'attributes':['id',_0x24aa('0xc')],'where':{'id':0x1}})[_0x24aa('0xd')](function(_0x51a273){_0x3ae0b7=_0x51a273[_0x24aa('0xc')];if(_0x3ae0b7){return db[_0x24aa('0xe')][_0x24aa('0xf')]({'raw':!![],'attributes':['id',_0x24aa('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x24aa('0x11')](_0x51a273[_0x24aa('0xc')],_0x24aa('0x12'))}}});}else{return[];}})['then'](function(_0x4daa4e){if(_0x4daa4e&&_0x4daa4e['length']){_0xd3febc=_['map'](_0x4daa4e||[],'id');logger[_0x24aa('0x13')](_0x24aa('0x14'),_0xd3febc[_0x24aa('0x15')]());return db[_0x24aa('0xe')][_0x24aa('0x16')]({'closeReason':_0x24aa('0x17'),'disposition':_0x24aa('0x18'),'closed':!![],'closedAt':moment()[_0x24aa('0x19')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0xd3febc}});}})['then'](function(){if(_0xd3febc&&_0xd3febc[_0x24aa('0x1a')]){logger[_0x24aa('0x13')](_0x24aa('0x1b'),_0xd3febc[_0x24aa('0x15')]());for(var _0x2072cd=0x0;_0x2072cd<_0xd3febc['length'];_0x2072cd++){io[_0x24aa('0x1c')](_0x24aa('0x1d'),{'id':_0xd3febc[_0x2072cd],'closed':!![]});}}})[_0x24aa('0x1e')](function(_0x142709){logger['error'](_0x24aa('0x1f'),_0x142709?util['inspect'](_0x142709,{'showHidden':![],'depth':null}):'');});}exports[_0x24aa('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x0142=['subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','ChatInteraction','update','system','format','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','defaults','Setting','chatTimeout','then','findAll'];(function(_0x4e836f,_0x4c301c){var _0x214486=function(_0x2d1684){while(--_0x2d1684){_0x4e836f['push'](_0x4e836f['shift']());}};_0x214486(++_0x4c301c);}(_0x0142,0x6c));var _0x2014=function(_0x2c9f17,_0x2c28c5){_0x2c9f17=_0x2c9f17-0x0;var _0x3112e4=_0x0142[_0x2c9f17];return _0x3112e4;};'use strict';var _=require(_0x2014('0x0'));var moment=require('moment');var Redis=require(_0x2014('0x1'));var util=require(_0x2014('0x2'));var config=require(_0x2014('0x3'));var db=require(_0x2014('0x4'))['db'];var logger=require('../logger')(_0x2014('0x5'));config[_0x2014('0x6')]=_[_0x2014('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2014('0x6')]));function closeInteractions(){var _0x27b8d9=0x0;var _0x1ed1f8=[];return db[_0x2014('0x8')]['find']({'raw':!![],'attributes':['id',_0x2014('0x9')],'where':{'id':0x1}})[_0x2014('0xa')](function(_0x2aaa83){_0x27b8d9=_0x2aaa83[_0x2014('0x9')];if(_0x27b8d9){return db['ChatInteraction'][_0x2014('0xb')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x2014('0xc')](_0x2aaa83[_0x2014('0x9')],_0x2014('0xd'))}}});}else{return[];}})['then'](function(_0x4187c3){if(_0x4187c3&&_0x4187c3[_0x2014('0xe')]){_0x1ed1f8=_[_0x2014('0xf')](_0x4187c3||[],'id');logger[_0x2014('0x10')](_0x2014('0x11'),_0x1ed1f8['join']());return db[_0x2014('0x12')][_0x2014('0x13')]({'closeReason':_0x2014('0x14'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x2014('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x1ed1f8}});}})[_0x2014('0xa')](function(){if(_0x1ed1f8&&_0x1ed1f8[_0x2014('0xe')]){logger[_0x2014('0x10')](_0x2014('0x16'),_0x1ed1f8[_0x2014('0x17')]());for(var _0x5e5eea=0x0;_0x5e5eea<_0x1ed1f8[_0x2014('0xe')];_0x5e5eea++){io[_0x2014('0x18')](_0x2014('0x19'),{'id':_0x1ed1f8[_0x5e5eea],'closed':!![]});}}})['catch'](function(_0x30947c){logger[_0x2014('0x1a')](_0x2014('0x1b'),_0x30947c?util[_0x2014('0x1c')](_0x30947c,{'showHidden':![],'depth':null}):'');});}exports[_0x2014('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 1c8cc78..f6ebbfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba5d=['toString','keyBy','difference','intersection','exists','stop','deleteJob','delete\x20cron','toRun','length','my\x20id','resolve','cron','active','isBetween','startAt','endAt','add','start','stop\x20cron','update','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','auth','user','pass','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','zip','existsSync','status','attachments','message','stringify','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','email\x20sent','catch','error\x20mail','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','keys','jobs','map'];(function(_0x4d79bc,_0x32c905){var _0x4b4760=function(_0x212302){while(--_0x212302){_0x4d79bc['push'](_0x4d79bc['shift']());}};_0x4b4760(++_0x32c905);}(_0xba5d,0x75));var _0xdba5=function(_0x2144d9,_0xdee16){_0x2144d9=_0x2144d9-0x0;var _0xac271c=_0xba5d[_0x2144d9];return _0xac271c;};'use strict';var fs=require('fs');var util=require(_0xdba5('0x0'));var path=require(_0xdba5('0x1'));var _=require(_0xdba5('0x2'));var moment=require(_0xdba5('0x3'));var CronJobManager=require(_0xdba5('0x4'));var jayson=require(_0xdba5('0x5'));var BPromise=require(_0xdba5('0x6'));var logger=require(_0xdba5('0x7'))(_0xdba5('0x8'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xdba5('0x9'));var analyticDefaultReportController=require(_0xdba5('0xa'));var client=jayson[_0xdba5('0xb')][_0xdba5('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x19fe6e,_0x57cefd){return function(){logger[_0xdba5('0xd')](_0xdba5('0xe'),_0x19fe6e[_0xdba5('0xf')]);var _0x312a9c=!![];var _0x45c20e={'tls':{'rejectUnauthorized':![]}};if(_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x12')]){_0x45c20e['service']=_0x19fe6e[_0xdba5('0x10')]['Smtp'][_0xdba5('0x12')];}else{_0x45c20e[_0xdba5('0x13')]=_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x13')];_0x45c20e[_0xdba5('0x14')]=_0x19fe6e[_0xdba5('0x10')]['Smtp'][_0xdba5('0x14')];_0x45c20e[_0xdba5('0x15')]=_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')]['secure'];}if(_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')]['authentication']){_0x45c20e[_0xdba5('0x16')]={'user':_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x17')],'pass':_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x18')]};}var _0x3eb968={'account':_0x45c20e,'message':{'from':util['format'](_0xdba5('0x19'),_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x1a')],_0x19fe6e[_0xdba5('0x10')]['email']||_0x19fe6e[_0xdba5('0x10')]['Smtp'][_0xdba5('0x17')]),'to':_0x19fe6e[_0xdba5('0xf')],'cc':_0x19fe6e['cc'],'bcc':_0x19fe6e[_0xdba5('0x1b')],'subject':util[_0xdba5('0x1c')](_0xdba5('0x1d'),_0x57cefd[_0xdba5('0x1a')],_0x19fe6e[_0xdba5('0x1e')],_0x19fe6e[_0xdba5('0x1f')])}};var _0x15e033=path[_0xdba5('0x20')](__dirname,_0xdba5('0x21'));var _0x248e78=_0x57cefd[_0xdba5('0x22')];var _0x32d6d4=util['format']('%s.%s',path[_0xdba5('0x23')](_0x57cefd[_0xdba5('0x22')],path[_0xdba5('0x24')](_0x57cefd['savename'])),_0xdba5('0x25'));var _0x1cf865=path[_0xdba5('0x20')](_0x15e033,_0x248e78);var _0x395e00=path['join'](_0x15e033,_0x32d6d4);if(fs[_0xdba5('0x26')](_0x1cf865)){_0x57cefd[_0xdba5('0x27')]='Sent';_0x3eb968['message'][_0xdba5('0x28')]=[{'filename':_0x248e78,'path':_0x1cf865}];_0x3eb968[_0xdba5('0x29')]['text']=util[_0xdba5('0x1c')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xdba5('0x2a')](_0x57cefd,null,0x2));}else if(fs['existsSync'](_0x395e00)){_0x57cefd['status']='Sent';_0x3eb968['message']['attachments']=[{'filename':_0x32d6d4,'path':_0x395e00}];}else{_0x3eb968[_0xdba5('0x29')][_0xdba5('0x2b')]=_0xdba5('0x2c');if(!_0x19fe6e[_0xdba5('0x2d')]){_0x312a9c=![];logger['info'](_0xdba5('0x2e'));}}if(_0x312a9c){return client[_0xdba5('0x2f')](_0xdba5('0x30'),_0x3eb968)[_0xdba5('0x31')](function(_0xa7ecfa){if(_0xa7ecfa[_0xdba5('0x32')]){return logger['error']('error\x20mail',JSON['stringify'](_0xa7ecfa));}return logger['info'](_0xdba5('0x33'));})[_0xdba5('0x34')](function(_0xa29825){return logger[_0xdba5('0x32')](_0xdba5('0x35'),JSON[_0xdba5('0x2a')](_0xa29825));});}};}function handleError(){return function(_0x59a47f){return logger[_0xdba5('0x32')](JSON[_0xdba5('0x2a')](_0x59a47f));};}function handleResult(_0x3b1e36){return function(_0x120da){logger[_0xdba5('0xd')](_0xdba5('0x36'),JSON['stringify'](_0x120da));if(_0x3b1e36[_0xdba5('0x10')]&&_0x3b1e36[_0xdba5('0x10')][_0xdba5('0x11')]&&!_[_0xdba5('0x37')](_0x3b1e36[_0xdba5('0xf')])){setTimeout(handleSendEmail(_0x3b1e36,_0x120da),0x3c*0x3e8);}};}function handleJob(_0x8e011c){return function(){try{if(_[_0xdba5('0x37')](_0x8e011c['subtractNumber'])){return logger[_0xdba5('0xd')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xdba5('0x37')](_0x8e011c[_0xdba5('0x1f')])){return logger['info'](_0xdba5('0x38'));}var _0x30b137={'startDate':moment()[_0xdba5('0x39')](_0x8e011c[_0xdba5('0x1e')],_0x8e011c[_0xdba5('0x1f')])[_0xdba5('0x1c')](_0xdba5('0x3a')),'endDate':moment()['format'](_0xdba5('0x3a')),'type':'scheduled','output':_0x8e011c[_0xdba5('0x3b')],'name':_0x8e011c[_0xdba5('0x1a')]};if(!_[_0xdba5('0x37')](_0x8e011c[_0xdba5('0x3c')])){logger[_0xdba5('0xd')](_0xdba5('0x3d'),_0x8e011c[_0xdba5('0x3c')]);return analyticDefaultReportController[_0xdba5('0x3e')]({'id':_0x8e011c['DefaultReportId']},_0x30b137)[_0xdba5('0x31')](handleResult(_0x8e011c))[_0xdba5('0x34')](handleError());}if(!_[_0xdba5('0x37')](_0x8e011c[_0xdba5('0x3f')])){logger[_0xdba5('0xd')](_0xdba5('0x40'),_0x8e011c[_0xdba5('0x3f')]);return analyticCustomReportController[_0xdba5('0x3e')]({'id':_0x8e011c[_0xdba5('0x3f')]},_0x30b137)[_0xdba5('0x31')](handleResult(_0x8e011c))[_0xdba5('0x34')](handleError());}}catch(_0x39f643){logger[_0xdba5('0x32')](JSON[_0xdba5('0x2a')](_0x39f643));}return logger[_0xdba5('0xd')](_0xdba5('0x41'));};}function getJobs(_0x544038){var _0xc07fb={};if(_0x544038){_0xc07fb['id']=_0x544038;}return db['Schedule'][_0xdba5('0x42')]({'where':_0xc07fb,'include':[{'model':db[_0xdba5('0x10')],'attributes':['id','name',_0xdba5('0xf')],'include':[{'model':db[_0xdba5('0x43')],'as':'Smtp'}]}]})[_0xdba5('0x31')](function(_0x1e1c3d){var _0x54bfc7=_[_0xdba5('0x44')](manager[_0xdba5('0x45')]);var _0x41354b=_[_0xdba5('0x46')](_0x1e1c3d,function(_0x305513){return _0x305513['id'][_0xdba5('0x47')]();});var _0x3f1cd3=_[_0xdba5('0x48')](_0x1e1c3d,function(_0x27dede){return _0x27dede['id'][_0xdba5('0x47')]();});var _0x11e303=_0x544038?_0x41354b:_[_0xdba5('0x49')](_0x41354b,_0x54bfc7);var _0x4d8ab0=_[_0xdba5('0x4a')](_0x41354b,_0x54bfc7);var _0x62422f=_['difference'](_0x54bfc7,_0x41354b);var _0xcf66da;var _0x4b52fd;for(_0xcf66da=0x0;_0xcf66da<_0x62422f['length']&&!_0x544038;_0xcf66da+=0x1){_0x4b52fd=_0x62422f[_0xcf66da][_0xdba5('0x47')]();if(manager[_0xdba5('0x4b')](_0x4b52fd)){manager[_0xdba5('0x4c')](_0x4b52fd);manager[_0xdba5('0x4d')](_0x4b52fd);logger[_0xdba5('0xd')](_0xdba5('0x4e'),_0x4b52fd);}}logger[_0xdba5('0xd')](_0xdba5('0x4f'),JSON[_0xdba5('0x2a')](_0x11e303));for(_0xcf66da=0x0;_0xcf66da<_0x11e303[_0xdba5('0x50')];_0xcf66da+=0x1){_0x4b52fd=_0x11e303[_0xcf66da][_0xdba5('0x47')]();logger['info']('index',_0x4b52fd);if(_0x544038){logger[_0xdba5('0xd')](_0xdba5('0x51'),_0x544038);logger['info'](JSON['stringify'](_0x3f1cd3[_0x4b52fd]));BPromise[_0xdba5('0x52')]()[_0xdba5('0x31')](handleJob(_0x3f1cd3[_0x4b52fd]));logger[_0xdba5('0xd')]('run\x20job',_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]);}else if(_0x3f1cd3[_0x4b52fd]['cron']&&_0x3f1cd3[_0x4b52fd][_0xdba5('0x54')]&&moment()[_0xdba5('0x55')](_0x3f1cd3[_0x4b52fd][_0xdba5('0x56')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x57')])){manager[_0xdba5('0x58')](_0x4b52fd,_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')],handleJob(_0x3f1cd3[_0x4b52fd]));manager[_0xdba5('0x59')](_0x4b52fd);logger[_0xdba5('0xd')]('add\x20cron',_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]);}else if(manager['exists'](_0x4b52fd)){manager['stop'](_0x4b52fd);manager[_0xdba5('0x4d')](_0x4b52fd);logger[_0xdba5('0xd')](_0xdba5('0x5a'),_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]);}}for(_0xcf66da=0x0,_0x4b52fd;_0xcf66da<_0x4d8ab0['length']&&!_0x544038;_0xcf66da+=0x1){_0x4b52fd=_0x4d8ab0[_0xcf66da][_0xdba5('0x47')]();if(manager['exists'](_0x4b52fd)){if(_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]&&_0x3f1cd3[_0x4b52fd][_0xdba5('0x54')]&&moment()[_0xdba5('0x55')](_0x3f1cd3[_0x4b52fd][_0xdba5('0x56')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x57')])){manager[_0xdba5('0x5b')](_0x4b52fd,_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')],handleJob(_0x3f1cd3[_0x4b52fd]));logger[_0xdba5('0xd')](_0xdba5('0x5c'),_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd]['cron']);}else{manager[_0xdba5('0x4c')](_0x4b52fd);manager[_0xdba5('0x4d')](_0x4b52fd);logger[_0xdba5('0xd')]('stop\x20cron',_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd]['cron']);}}}})[_0xdba5('0x34')](function(_0x4a2870){logger[_0xdba5('0x32')](JSON['stringify'](_0x4a2870));});}exports[_0xdba5('0x5d')]=function(_0x936e63){return getJobs(_0x936e63);};exports[_0xdba5('0x59')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xa232=['error\x20mail','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','intersection','length','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','cron','active','isBetween','startAt','endAt','add','add\x20cron','exists','update\x20cron','stop\x20cron','run','start','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','email','service','MailAccount','Smtp','host','port','secure','auth','user','pass','format','\x22%s\x22\x20<%s>','name','bcc','subtractNumber','subtractUnit','../../files/reports','savename','%s.%s','basename','extname','zip','join','Sent','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','existsSync','status','attachments','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error'];(function(_0x1df47a,_0x5c844e){var _0x5ab2e0=function(_0x4eb715){while(--_0x4eb715){_0x1df47a['push'](_0x1df47a['shift']());}};_0x5ab2e0(++_0x5c844e);}(_0xa232,0xdb));var _0x2a23=function(_0x2a6ea8,_0x150a79){_0x2a6ea8=_0x2a6ea8-0x0;var _0x4ca660=_0xa232[_0x2a6ea8];return _0x4ca660;};'use strict';var fs=require('fs');var util=require(_0x2a23('0x0'));var path=require(_0x2a23('0x1'));var _=require(_0x2a23('0x2'));var moment=require('moment');var CronJobManager=require(_0x2a23('0x3'));var jayson=require(_0x2a23('0x4'));var BPromise=require(_0x2a23('0x5'));var logger=require(_0x2a23('0x6'))(_0x2a23('0x7'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x2a23('0x8'));var analyticDefaultReportController=require(_0x2a23('0x9'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x339b76,_0x5a36df){return function(){logger[_0x2a23('0xa')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x339b76[_0x2a23('0xb')]);var _0x5d5642=!![];var _0x19ea0e={'tls':{'rejectUnauthorized':![]}};if(_0x339b76['MailAccount']['Smtp']['service']){_0x19ea0e[_0x2a23('0xc')]=_0x339b76[_0x2a23('0xd')][_0x2a23('0xe')][_0x2a23('0xc')];}else{_0x19ea0e[_0x2a23('0xf')]=_0x339b76[_0x2a23('0xd')][_0x2a23('0xe')][_0x2a23('0xf')];_0x19ea0e[_0x2a23('0x10')]=_0x339b76[_0x2a23('0xd')]['Smtp'][_0x2a23('0x10')];_0x19ea0e[_0x2a23('0x11')]=_0x339b76['MailAccount'][_0x2a23('0xe')]['secure'];}if(_0x339b76[_0x2a23('0xd')]['Smtp']['authentication']){_0x19ea0e[_0x2a23('0x12')]={'user':_0x339b76[_0x2a23('0xd')]['Smtp'][_0x2a23('0x13')],'pass':_0x339b76[_0x2a23('0xd')][_0x2a23('0xe')][_0x2a23('0x14')]};}var _0x5d22d4={'account':_0x19ea0e,'message':{'from':util[_0x2a23('0x15')](_0x2a23('0x16'),_0x339b76[_0x2a23('0xd')][_0x2a23('0x17')],_0x339b76[_0x2a23('0xd')][_0x2a23('0xb')]||_0x339b76[_0x2a23('0xd')]['Smtp']['user']),'to':_0x339b76[_0x2a23('0xb')],'cc':_0x339b76['cc'],'bcc':_0x339b76[_0x2a23('0x18')],'subject':util[_0x2a23('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x5a36df[_0x2a23('0x17')],_0x339b76[_0x2a23('0x19')],_0x339b76[_0x2a23('0x1a')])}};var _0x27ddbf=path['join'](__dirname,_0x2a23('0x1b'));var _0x2afde5=_0x5a36df[_0x2a23('0x1c')];var _0x18159c=util[_0x2a23('0x15')](_0x2a23('0x1d'),path[_0x2a23('0x1e')](_0x5a36df[_0x2a23('0x1c')],path[_0x2a23('0x1f')](_0x5a36df[_0x2a23('0x1c')])),_0x2a23('0x20'));var _0x190abf=path['join'](_0x27ddbf,_0x2afde5);var _0x4d7c2a=path[_0x2a23('0x21')](_0x27ddbf,_0x18159c);if(fs['existsSync'](_0x190abf)){_0x5a36df['status']=_0x2a23('0x22');_0x5d22d4['message']['attachments']=[{'filename':_0x2afde5,'path':_0x190abf}];_0x5d22d4['message'][_0x2a23('0x23')]=util['format'](_0x2a23('0x24'),JSON[_0x2a23('0x25')](_0x5a36df,null,0x2));}else if(fs[_0x2a23('0x26')](_0x4d7c2a)){_0x5a36df[_0x2a23('0x27')]=_0x2a23('0x22');_0x5d22d4['message'][_0x2a23('0x28')]=[{'filename':_0x18159c,'path':_0x4d7c2a}];}else{_0x5d22d4['message']['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x339b76['sendIfEmpty']){_0x5d5642=![];logger['info'](_0x2a23('0x29'));}}if(_0x5d5642){return client['request'](_0x2a23('0x2a'),_0x5d22d4)[_0x2a23('0x2b')](function(_0x570277){if(_0x570277[_0x2a23('0x2c')]){return logger[_0x2a23('0x2c')](_0x2a23('0x2d'),JSON[_0x2a23('0x25')](_0x570277));}return logger[_0x2a23('0xa')](_0x2a23('0x2e'));})['catch'](function(_0x3970d5){return logger['error']('error\x20mail',JSON[_0x2a23('0x25')](_0x3970d5));});}};}function handleError(){return function(_0x157aba){return logger[_0x2a23('0x2c')](JSON['stringify'](_0x157aba));};}function handleResult(_0x48556f){return function(_0x1e92b4){logger[_0x2a23('0xa')](_0x2a23('0x2f'),JSON[_0x2a23('0x25')](_0x1e92b4));if(_0x48556f[_0x2a23('0xd')]&&_0x48556f[_0x2a23('0xd')]['Smtp']&&!_[_0x2a23('0x30')](_0x48556f[_0x2a23('0xb')])){setTimeout(handleSendEmail(_0x48556f,_0x1e92b4),0x3c*0x3e8);}};}function handleJob(_0x4938c7){return function(){try{if(_[_0x2a23('0x30')](_0x4938c7[_0x2a23('0x19')])){return logger[_0x2a23('0xa')](_0x2a23('0x31'));}if(_[_0x2a23('0x30')](_0x4938c7[_0x2a23('0x1a')])){return logger[_0x2a23('0xa')]('subtractUnit\x20null\x20or\x20undefined');}var _0x8457a6={'startDate':moment()[_0x2a23('0x32')](_0x4938c7[_0x2a23('0x19')],_0x4938c7['subtractUnit'])['format'](_0x2a23('0x33')),'endDate':moment()[_0x2a23('0x15')](_0x2a23('0x33')),'type':'scheduled','output':_0x4938c7[_0x2a23('0x34')],'name':_0x4938c7[_0x2a23('0x17')]};if(!_[_0x2a23('0x30')](_0x4938c7[_0x2a23('0x35')])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x4938c7['DefaultReportId']);return analyticDefaultReportController[_0x2a23('0x36')]({'id':_0x4938c7[_0x2a23('0x35')]},_0x8457a6)[_0x2a23('0x2b')](handleResult(_0x4938c7))[_0x2a23('0x37')](handleError());}if(!_[_0x2a23('0x30')](_0x4938c7[_0x2a23('0x38')])){logger[_0x2a23('0xa')](_0x2a23('0x39'),_0x4938c7[_0x2a23('0x38')]);return analyticCustomReportController[_0x2a23('0x36')]({'id':_0x4938c7[_0x2a23('0x38')]},_0x8457a6)[_0x2a23('0x2b')](handleResult(_0x4938c7))[_0x2a23('0x37')](handleError());}}catch(_0x3c8127){logger['error'](JSON[_0x2a23('0x25')](_0x3c8127));}return logger[_0x2a23('0xa')](_0x2a23('0x3a'));};}function getJobs(_0x46329d){var _0x4f87c9={};if(_0x46329d){_0x4f87c9['id']=_0x46329d;}return db[_0x2a23('0x3b')][_0x2a23('0x3c')]({'where':_0x4f87c9,'include':[{'model':db[_0x2a23('0xd')],'attributes':['id',_0x2a23('0x17'),_0x2a23('0xb')],'include':[{'model':db[_0x2a23('0x3d')],'as':_0x2a23('0xe')}]}]})[_0x2a23('0x2b')](function(_0x35140b){var _0x1d7476=_[_0x2a23('0x3e')](manager[_0x2a23('0x3f')]);var _0x3a6ece=_['map'](_0x35140b,function(_0x9b1d43){return _0x9b1d43['id'][_0x2a23('0x40')]();});var _0x1adf10=_[_0x2a23('0x41')](_0x35140b,function(_0x335df2){return _0x335df2['id'][_0x2a23('0x40')]();});var _0x1da3e8=_0x46329d?_0x3a6ece:_[_0x2a23('0x42')](_0x3a6ece,_0x1d7476);var _0x66ac23=_[_0x2a23('0x43')](_0x3a6ece,_0x1d7476);var _0x11b2e4=_['difference'](_0x1d7476,_0x3a6ece);var _0x2c24f3;var _0x388a28;for(_0x2c24f3=0x0;_0x2c24f3<_0x11b2e4[_0x2a23('0x44')]&&!_0x46329d;_0x2c24f3+=0x1){_0x388a28=_0x11b2e4[_0x2c24f3][_0x2a23('0x40')]();if(manager['exists'](_0x388a28)){manager[_0x2a23('0x45')](_0x388a28);manager[_0x2a23('0x46')](_0x388a28);logger[_0x2a23('0xa')](_0x2a23('0x47'),_0x388a28);}}logger[_0x2a23('0xa')](_0x2a23('0x48'),JSON[_0x2a23('0x25')](_0x1da3e8));for(_0x2c24f3=0x0;_0x2c24f3<_0x1da3e8[_0x2a23('0x44')];_0x2c24f3+=0x1){_0x388a28=_0x1da3e8[_0x2c24f3][_0x2a23('0x40')]();logger[_0x2a23('0xa')](_0x2a23('0x49'),_0x388a28);if(_0x46329d){logger['info'](_0x2a23('0x4a'),_0x46329d);logger[_0x2a23('0xa')](JSON[_0x2a23('0x25')](_0x1adf10[_0x388a28]));BPromise[_0x2a23('0x4b')]()[_0x2a23('0x2b')](handleJob(_0x1adf10[_0x388a28]));logger[_0x2a23('0xa')]('run\x20job',_0x1adf10[_0x388a28]['name'],_0x1adf10[_0x388a28][_0x2a23('0x4c')]);}else if(_0x1adf10[_0x388a28][_0x2a23('0x4c')]&&_0x1adf10[_0x388a28][_0x2a23('0x4d')]&&moment()[_0x2a23('0x4e')](_0x1adf10[_0x388a28][_0x2a23('0x4f')],_0x1adf10[_0x388a28][_0x2a23('0x50')])){manager[_0x2a23('0x51')](_0x388a28,_0x1adf10[_0x388a28][_0x2a23('0x4c')],handleJob(_0x1adf10[_0x388a28]));manager['start'](_0x388a28);logger[_0x2a23('0xa')](_0x2a23('0x52'),_0x1adf10[_0x388a28][_0x2a23('0x17')],_0x1adf10[_0x388a28][_0x2a23('0x4c')]);}else if(manager[_0x2a23('0x53')](_0x388a28)){manager['stop'](_0x388a28);manager['deleteJob'](_0x388a28);logger[_0x2a23('0xa')]('stop\x20cron',_0x1adf10[_0x388a28][_0x2a23('0x17')],_0x1adf10[_0x388a28]['cron']);}}for(_0x2c24f3=0x0,_0x388a28;_0x2c24f3<_0x66ac23[_0x2a23('0x44')]&&!_0x46329d;_0x2c24f3+=0x1){_0x388a28=_0x66ac23[_0x2c24f3][_0x2a23('0x40')]();if(manager[_0x2a23('0x53')](_0x388a28)){if(_0x1adf10[_0x388a28][_0x2a23('0x4c')]&&_0x1adf10[_0x388a28]['active']&&moment()[_0x2a23('0x4e')](_0x1adf10[_0x388a28][_0x2a23('0x4f')],_0x1adf10[_0x388a28][_0x2a23('0x50')])){manager['update'](_0x388a28,_0x1adf10[_0x388a28]['cron'],handleJob(_0x1adf10[_0x388a28]));logger[_0x2a23('0xa')](_0x2a23('0x54'),_0x1adf10[_0x388a28][_0x2a23('0x17')],_0x1adf10[_0x388a28][_0x2a23('0x4c')]);}else{manager[_0x2a23('0x45')](_0x388a28);manager[_0x2a23('0x46')](_0x388a28);logger['info'](_0x2a23('0x55'),_0x1adf10[_0x388a28]['name'],_0x1adf10[_0x388a28]['cron']);}}}})[_0x2a23('0x37')](function(_0x2c545a){logger[_0x2a23('0x2c')](JSON[_0x2a23('0x25')](_0x2c545a));});}exports[_0x2a23('0x56')]=function(_0x45f9f4){return getJobs(_0x45f9f4);};exports[_0x2a23('0x57')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index fdd5196..5157b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c8a=['[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','ValidationError','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','sentimentRegion','findOne','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','CloudProvider','forEach','push','inspect','lodash','aws-sdk','request-promise','util','bluebird','../../config/logger','getTranscriptionJob','Comprehend','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','fileText','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri'];(function(_0x458dfb,_0x40463d){var _0x46e1e8=function(_0x48513e){while(--_0x48513e){_0x458dfb['push'](_0x458dfb['shift']());}};_0x46e1e8(++_0x40463d);}(_0x1c8a,0x140));var _0xa1c8=function(_0x50952b,_0x46476a){_0x50952b=_0x50952b-0x0;var _0x21cbec=_0x1c8a[_0x50952b];return _0x21cbec;};var _=require(_0xa1c8('0x0'));var AWS=require(_0xa1c8('0x1'));var rp=require(_0xa1c8('0x2'));var util=require(_0xa1c8('0x3'));var BPromise=require(_0xa1c8('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0xa1c8('0x5'))('transcribe');function getTranscriptionJob(_0x122813,_0x1cdee0,_0x4668e8,_0x559330){return new Promise(function(_0x331282,_0x14b85c){var _0x14d2f0=new AWS['TranscribeService']({'accessKeyId':_0x1cdee0,'secretAccessKey':_0x122813,'region':_0x4668e8});_0x14d2f0[_0xa1c8('0x6')]({'TranscriptionJobName':_0x559330},function(_0xf93962,_0x44cf0d){if(_0xf93962){return _0x14b85c(_0xf93962);}else{return _0x331282(_0x44cf0d);}});});}function sentiment(_0x4a5d71,_0xb3751e,_0x23d253,_0x6e2ad7,_0x4c6bd3){return new Promise(function(_0x578c5d,_0x441602){var _0x5d87e2=new AWS[(_0xa1c8('0x7'))]({'accessKeyId':_0xb3751e,'secretAccessKey':_0x4a5d71,'region':_0x23d253});_0x5d87e2['detectSentiment']({'Text':_0x6e2ad7,'LanguageCode':_0x4c6bd3['substring'](0x0,0x2)},function(_0x4fa1a7,_0x398133){if(_0x4fa1a7){return _0x441602(_0x4fa1a7);}else{return _0x578c5d(_0x398133);}});});}function checkTranscribeJob(_0x35c9d7,_0x2647fa,_0x707249){var _0x644e9c;return new BPromise(function(_0x4097bf,_0x5e3816){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0xa'),_0x35c9d7['id'],_0x35c9d7[_0xa1c8('0xb')]));return getTranscriptionJob(_0x707249[_0xa1c8('0xc')],_0x707249[_0xa1c8('0xd')],_0x2647fa['transcribeRegion'],_0x35c9d7[_0xa1c8('0xb')])[_0xa1c8('0xe')](function(_0x17d4d2){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x35c9d7['id'],_0x35c9d7[_0xa1c8('0xb')],_0x17d4d2['TranscriptionJob']['TranscriptionJobStatus']));if(!_0x35c9d7[_0xa1c8('0xf')]){switch(_0x17d4d2[_0xa1c8('0x10')]['TranscriptionJobStatus']){case _0xa1c8('0x11'):var _0x367094={'transcribeStatus':_0x17d4d2[_0xa1c8('0x10')]['TranscriptionJobStatus'],'fileUri':_0x17d4d2[_0xa1c8('0x10')][_0xa1c8('0x12')][_0xa1c8('0x13')]};logger['info'](util[_0xa1c8('0x9')](_0xa1c8('0x14'),_0x35c9d7['id']));return rp({'uri':_0x17d4d2['TranscriptionJob'][_0xa1c8('0x12')][_0xa1c8('0x13')],'json':!![]})[_0xa1c8('0xe')](function(_0x2a7fa5){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0x15'),_0x35c9d7['id']));if(_0x2a7fa5&&_0x2a7fa5[_0xa1c8('0x16')]&&_0x2a7fa5[_0xa1c8('0x16')][_0xa1c8('0x17')]&&_0x2a7fa5[_0xa1c8('0x16')][_0xa1c8('0x17')][_0xa1c8('0x18')]){_0x367094[_0xa1c8('0xf')]='';for(var _0x3f929f=0x0;_0x3f929f<_0x2a7fa5[_0xa1c8('0x16')]['transcripts'][_0xa1c8('0x18')];_0x3f929f++){_0x367094['fileText']+=_0x2a7fa5[_0xa1c8('0x16')]['transcripts'][_0x3f929f][_0xa1c8('0x19')]+'';}}return _0x35c9d7[_0xa1c8('0x1a')](_0x367094);})[_0xa1c8('0xe')](function(){logger['info'](util[_0xa1c8('0x9')](_0xa1c8('0x1b'),_0x35c9d7['id']));if(!_0x35c9d7[_0xa1c8('0x1c')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x1e'));}if(!_0x2647fa[_0xa1c8('0x1f')]||!_0x2647fa[_0xa1c8('0x20')]||!_0x2647fa['sentimentRegion']||!_0x2647fa['language']||!_0x2647fa[_0xa1c8('0x21')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x22'));}if(!_0x367094[_0xa1c8('0xf')]){throw new Error(_0xa1c8('0x23'));}if(_0x2647fa['sentimentAccountId']===_0x707249['id']){return _0x707249;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xa1c8('0x20')]}});}})['then'](function(_0x27cb09){if(!_0x27cb09){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x25'));}if(!_0x27cb09[_0xa1c8('0xc')]||!_0x27cb09[_0xa1c8('0xd')]){throw new db['Sequelize'][(_0xa1c8('0x24'))](_0xa1c8('0x26'));}_0x644e9c=_0x27cb09;logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x35c9d7['id']));return sentiment(_0x644e9c['data1'],_0x644e9c[_0xa1c8('0xd')],_0x2647fa['sentimentRegion'],_0x367094[_0xa1c8('0xf')],_0x2647fa[_0xa1c8('0x27')]);})[_0xa1c8('0xe')](function(_0x20ab0d){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0x28'),_0x35c9d7['id']));return _0x35c9d7[_0xa1c8('0x1a')]({'sentiment':_0x20ab0d['Sentiment'],'sPositive':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2a')],'sNegative':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2b')],'sMixed':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2c')],'sNeutral':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2d')]});})[_0xa1c8('0xe')](function(){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0x1b'),_0x35c9d7['id']));_0x4097bf();});case _0xa1c8('0x2e'):return _0x35c9d7[_0xa1c8('0x1a')]({'transcribeStatus':'FAILED','failureReason':_0x17d4d2['TranscriptionJob'][_0xa1c8('0x2f')]})[_0xa1c8('0xe')](function(){logger[_0xa1c8('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x35c9d7['id']));_0x4097bf();});default:logger['info'](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x35c9d7['id']));break;}}else{return BPromise['resolve']()[_0xa1c8('0xe')](function(){if(!_0x35c9d7[_0xa1c8('0x1c')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x1e'));}if(!_0x2647fa[_0xa1c8('0x1f')]||!_0x2647fa['sentimentAccountId']||!_0x2647fa[_0xa1c8('0x30')]||!_0x2647fa[_0xa1c8('0x27')]||!_0x2647fa[_0xa1c8('0x21')]){throw new db['Sequelize'][(_0xa1c8('0x24'))](_0xa1c8('0x22'));}if(!_0x35c9d7[_0xa1c8('0xf')]){throw new Error(_0xa1c8('0x23'));}if(_0x2647fa[_0xa1c8('0x20')]===_0x707249['id']){return _0x707249;}else{return db['CloudProvider'][_0xa1c8('0x31')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4c7472){if(!_0x4c7472){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x25'));}if(!_0x4c7472[_0xa1c8('0xc')]||!_0x4c7472[_0xa1c8('0xd')]){throw new db['Sequelize']['ValidationError'](_0xa1c8('0x26'));}_0x644e9c=_0x4c7472;logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x35c9d7['id']));return sentiment(_0x644e9c['data1'],_0x644e9c[_0xa1c8('0xd')],_0x2647fa[_0xa1c8('0x30')],_0x35c9d7[_0xa1c8('0xf')],_0x2647fa[_0xa1c8('0x27')]);})[_0xa1c8('0xe')](function(_0x113136){logger[_0xa1c8('0x8')](util['format'](_0xa1c8('0x28'),_0x35c9d7['id']));return _0x35c9d7['update']({'sentiment':_0x113136[_0xa1c8('0x32')],'sPositive':_0x113136[_0xa1c8('0x29')][_0xa1c8('0x2a')],'sNegative':_0x113136['SentimentScore'][_0xa1c8('0x2b')],'sMixed':_0x113136['SentimentScore'][_0xa1c8('0x2c')],'sNeutral':_0x113136[_0xa1c8('0x29')][_0xa1c8('0x2d')],'transcribeStatus':'COMPLETED'});})[_0xa1c8('0xe')](function(){logger[_0xa1c8('0x8')](util['format'](_0xa1c8('0x1b'),_0x35c9d7['id']));_0x4097bf();});}})[_0xa1c8('0x33')](function(_0x266954){if(_0x266954){if(!_0x266954[_0xa1c8('0x34')]||_0x266954[_0xa1c8('0x34')]!==_0xa1c8('0x35')){logger[_0xa1c8('0x36')](util[_0xa1c8('0x9')](_0xa1c8('0x37'),_0x35c9d7['id']),util['inspect'](_0x266954,{'showHidden':![],'depth':null}));}}_0x4097bf();});});}function checkTranscribe(){var _0x2517ca;var _0x44e153;var _0x470479;return db[_0xa1c8('0x38')]['findAll']({'where':{'transcribeStatus':_0xa1c8('0x39')}})[_0xa1c8('0xe')](function(_0x5ecbee){if(!_0x5ecbee||!_0x5ecbee[_0xa1c8('0x18')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x3a'));}_0x2517ca=_0x5ecbee;return db[_0xa1c8('0x3b')][_0xa1c8('0x31')]({'where':{'id':0x1}});})[_0xa1c8('0xe')](function(_0x14ce13){if(!_0x14ce13){throw new db['Sequelize']['ValidationError'](_0xa1c8('0x3c'));}_0x44e153=_0x14ce13;if(!_0x44e153[_0xa1c8('0x3d')]||!_0x44e153[_0xa1c8('0x3e')]||!_0x44e153['transcribeRegion']||!_0x44e153[_0xa1c8('0x27')]||!_0x44e153[_0xa1c8('0x21')]){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x3f'));}return db[_0xa1c8('0x40')][_0xa1c8('0x31')]({'where':{'id':_0x44e153[_0xa1c8('0x3e')]}});})[_0xa1c8('0xe')](function(_0xf13fa3){if(!_0xf13fa3){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x25'));}if(!_0xf13fa3['data1']||!_0xf13fa3[_0xa1c8('0xd')]){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x26'));}_0x470479=_0xf13fa3;var _0x56a38d=[];_0x2517ca[_0xa1c8('0x41')](function(_0x1898b4){_0x56a38d[_0xa1c8('0x42')](checkTranscribeJob(_0x1898b4,_0x44e153,_0x470479));});return BPromise['all'](_0x56a38d);})[_0xa1c8('0x33')](function(_0x185c17){if(_0x185c17){if(!_0x185c17[_0xa1c8('0x34')]||_0x185c17[_0xa1c8('0x34')]!=='SequelizeValidationError'){logger['error'](util[_0xa1c8('0x43')](_0x185c17,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xf2a6=['[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','results','transcripts','fileText','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','update','SentimentScore','Positive','Negative','Mixed','FAILED','FailureReason','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Neutral','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','start','lodash','bluebird','../../config/logger','transcribe','TranscribeService','detectSentiment','info','format'];(function(_0x2819cd,_0x1f7703){var _0x47874c=function(_0x523698){while(--_0x523698){_0x2819cd['push'](_0x2819cd['shift']());}};_0x47874c(++_0x1f7703);}(_0xf2a6,0x13d));var _0x6f2a=function(_0x46ea74,_0x148f26){_0x46ea74=_0x46ea74-0x0;var _0x35c2c0=_0xf2a6[_0x46ea74];return _0x35c2c0;};var _=require(_0x6f2a('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require('util');var BPromise=require(_0x6f2a('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x6f2a('0x2'))(_0x6f2a('0x3'));function getTranscriptionJob(_0x454ff7,_0x32ddb6,_0x1b4af5,_0x21a7db){return new Promise(function(_0x4684f4,_0x19ebe9){var _0x1efd8=new AWS[(_0x6f2a('0x4'))]({'accessKeyId':_0x32ddb6,'secretAccessKey':_0x454ff7,'region':_0x1b4af5});_0x1efd8['getTranscriptionJob']({'TranscriptionJobName':_0x21a7db},function(_0x379b80,_0xda4179){if(_0x379b80){return _0x19ebe9(_0x379b80);}else{return _0x4684f4(_0xda4179);}});});}function sentiment(_0x372663,_0x28ac69,_0x5b1229,_0x2fabc5,_0x5663e2){return new Promise(function(_0x310635,_0x601b21){var _0x396cb9=new AWS['Comprehend']({'accessKeyId':_0x28ac69,'secretAccessKey':_0x372663,'region':_0x5b1229});_0x396cb9[_0x6f2a('0x5')]({'Text':_0x2fabc5,'LanguageCode':_0x5663e2['substring'](0x0,0x2)},function(_0x231691,_0x398822){if(_0x231691){return _0x601b21(_0x231691);}else{return _0x310635(_0x398822);}});});}function checkTranscribeJob(_0x1c2665,_0x59df4e,_0x46a54f){var _0x4f1b32;return new BPromise(function(_0x1df919,_0x45eab9){logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')](_0x6f2a('0x8'),_0x1c2665['id'],_0x1c2665['transcribeName']));return getTranscriptionJob(_0x46a54f[_0x6f2a('0x9')],_0x46a54f[_0x6f2a('0xa')],_0x59df4e[_0x6f2a('0xb')],_0x1c2665[_0x6f2a('0xc')])[_0x6f2a('0xd')](function(_0x3dfc44){logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')](_0x6f2a('0xe'),_0x1c2665['id'],_0x1c2665[_0x6f2a('0xc')],_0x3dfc44[_0x6f2a('0xf')][_0x6f2a('0x10')]));if(!_0x1c2665['fileText']){switch(_0x3dfc44[_0x6f2a('0xf')][_0x6f2a('0x10')]){case _0x6f2a('0x11'):var _0x1ff155={'transcribeStatus':_0x3dfc44[_0x6f2a('0xf')][_0x6f2a('0x10')],'fileUri':_0x3dfc44[_0x6f2a('0xf')][_0x6f2a('0x12')][_0x6f2a('0x13')]};logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')]('[RECORDING:%d]\x20Get\x20transcript',_0x1c2665['id']));return rp({'uri':_0x3dfc44[_0x6f2a('0xf')][_0x6f2a('0x12')][_0x6f2a('0x13')],'json':!![]})[_0x6f2a('0xd')](function(_0x1da29f){logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x1c2665['id']));if(_0x1da29f&&_0x1da29f[_0x6f2a('0x14')]&&_0x1da29f['results'][_0x6f2a('0x15')]&&_0x1da29f[_0x6f2a('0x14')][_0x6f2a('0x15')]['length']){_0x1ff155[_0x6f2a('0x16')]='';for(var _0xb7cd00=0x0;_0xb7cd00<_0x1da29f['results']['transcripts'][_0x6f2a('0x17')];_0xb7cd00++){_0x1ff155[_0x6f2a('0x16')]+=_0x1da29f[_0x6f2a('0x14')][_0x6f2a('0x15')][_0xb7cd00][_0x6f2a('0x18')]+'';}}return _0x1c2665['update'](_0x1ff155);})[_0x6f2a('0xd')](function(){logger['info'](util[_0x6f2a('0x7')](_0x6f2a('0x19'),_0x1c2665['id']));if(!_0x1c2665['tempSentiment']){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x59df4e[_0x6f2a('0x1c')]||!_0x59df4e[_0x6f2a('0x1d')]||!_0x59df4e[_0x6f2a('0x1e')]||!_0x59df4e[_0x6f2a('0x1f')]||!_0x59df4e[_0x6f2a('0x20')]){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x1ff155[_0x6f2a('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x59df4e[_0x6f2a('0x1d')]===_0x46a54f['id']){return _0x46a54f;}else{return db['CloudProvider'][_0x6f2a('0x21')]({'where':{'id':_settings[_0x6f2a('0x1d')]}});}})[_0x6f2a('0xd')](function(_0x53eb10){if(!_0x53eb10){throw new db[(_0x6f2a('0x1a'))]['ValidationError'](_0x6f2a('0x22'));}if(!_0x53eb10[_0x6f2a('0x9')]||!_0x53eb10['data2']){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))](_0x6f2a('0x23'));}_0x4f1b32=_0x53eb10;logger['info'](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1c2665['id']));return sentiment(_0x4f1b32[_0x6f2a('0x9')],_0x4f1b32['data2'],_0x59df4e[_0x6f2a('0x1e')],_0x1ff155[_0x6f2a('0x16')],_0x59df4e['language']);})[_0x6f2a('0xd')](function(_0x277e8f){logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x1c2665['id']));return _0x1c2665[_0x6f2a('0x24')]({'sentiment':_0x277e8f['Sentiment'],'sPositive':_0x277e8f[_0x6f2a('0x25')][_0x6f2a('0x26')],'sNegative':_0x277e8f[_0x6f2a('0x25')][_0x6f2a('0x27')],'sMixed':_0x277e8f[_0x6f2a('0x25')][_0x6f2a('0x28')],'sNeutral':_0x277e8f[_0x6f2a('0x25')]['Neutral']});})[_0x6f2a('0xd')](function(){logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')](_0x6f2a('0x19'),_0x1c2665['id']));_0x1df919();});case _0x6f2a('0x29'):return _0x1c2665[_0x6f2a('0x24')]({'transcribeStatus':_0x6f2a('0x29'),'failureReason':_0x3dfc44[_0x6f2a('0xf')][_0x6f2a('0x2a')]})[_0x6f2a('0xd')](function(){logger[_0x6f2a('0x6')](util['format'](_0x6f2a('0x19'),_0x1c2665['id']));_0x1df919();});default:logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x1c2665['id']));break;}}else{return BPromise[_0x6f2a('0x2b')]()[_0x6f2a('0xd')](function(){if(!_0x1c2665[_0x6f2a('0x2c')]){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))](_0x6f2a('0x2d'));}if(!_0x59df4e[_0x6f2a('0x1c')]||!_0x59df4e[_0x6f2a('0x1d')]||!_0x59df4e[_0x6f2a('0x1e')]||!_0x59df4e[_0x6f2a('0x1f')]||!_0x59df4e[_0x6f2a('0x20')]){throw new db['Sequelize'][(_0x6f2a('0x1b'))](_0x6f2a('0x2e'));}if(!_0x1c2665[_0x6f2a('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x59df4e[_0x6f2a('0x1d')]===_0x46a54f['id']){return _0x46a54f;}else{return db[_0x6f2a('0x2f')][_0x6f2a('0x21')]({'where':{'id':_settings[_0x6f2a('0x1d')]}});}})[_0x6f2a('0xd')](function(_0x2c5fbb){if(!_0x2c5fbb){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2c5fbb[_0x6f2a('0x9')]||!_0x2c5fbb['data2']){throw new db['Sequelize'][(_0x6f2a('0x1b'))](_0x6f2a('0x23'));}_0x4f1b32=_0x2c5fbb;logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1c2665['id']));return sentiment(_0x4f1b32[_0x6f2a('0x9')],_0x4f1b32[_0x6f2a('0xa')],_0x59df4e[_0x6f2a('0x1e')],_0x1c2665[_0x6f2a('0x16')],_0x59df4e[_0x6f2a('0x1f')]);})[_0x6f2a('0xd')](function(_0x47d221){logger[_0x6f2a('0x6')](util[_0x6f2a('0x7')](_0x6f2a('0x30'),_0x1c2665['id']));return _0x1c2665[_0x6f2a('0x24')]({'sentiment':_0x47d221[_0x6f2a('0x31')],'sPositive':_0x47d221[_0x6f2a('0x25')]['Positive'],'sNegative':_0x47d221['SentimentScore'][_0x6f2a('0x27')],'sMixed':_0x47d221['SentimentScore'][_0x6f2a('0x28')],'sNeutral':_0x47d221['SentimentScore'][_0x6f2a('0x32')],'transcribeStatus':_0x6f2a('0x11')});})['then'](function(){logger['info'](util['format'](_0x6f2a('0x19'),_0x1c2665['id']));_0x1df919();});}})['catch'](function(_0x4e726b){if(_0x4e726b){if(!_0x4e726b[_0x6f2a('0x33')]||_0x4e726b[_0x6f2a('0x33')]!==_0x6f2a('0x34')){logger[_0x6f2a('0x35')](util['format'](_0x6f2a('0x36'),_0x1c2665['id']),util[_0x6f2a('0x37')](_0x4e726b,{'showHidden':![],'depth':null}));}}_0x1df919();});});}function checkTranscribe(){var _0x254233;var _0x364573;var _0x3d8f60;return db[_0x6f2a('0x38')]['findAll']({'where':{'transcribeStatus':_0x6f2a('0x39')}})[_0x6f2a('0xd')](function(_0x2ae19b){if(!_0x2ae19b||!_0x2ae19b[_0x6f2a('0x17')]){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))]('No\x20transcribe\x20job\x20to\x20check');}_0x254233=_0x2ae19b;return db[_0x6f2a('0x3a')][_0x6f2a('0x21')]({'where':{'id':0x1}});})[_0x6f2a('0xd')](function(_0x5e72fe){if(!_0x5e72fe){throw new db['Sequelize'][(_0x6f2a('0x1b'))](_0x6f2a('0x3b'));}_0x364573=_0x5e72fe;if(!_0x364573[_0x6f2a('0x3')]||!_0x364573[_0x6f2a('0x3c')]||!_0x364573[_0x6f2a('0xb')]||!_0x364573[_0x6f2a('0x1f')]||!_0x364573[_0x6f2a('0x20')]){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))](_0x6f2a('0x3d'));}return db[_0x6f2a('0x2f')][_0x6f2a('0x21')]({'where':{'id':_0x364573[_0x6f2a('0x3c')]}});})['then'](function(_0x2c26fc){if(!_0x2c26fc){throw new db['Sequelize'][(_0x6f2a('0x1b'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2c26fc[_0x6f2a('0x9')]||!_0x2c26fc['data2']){throw new db[(_0x6f2a('0x1a'))][(_0x6f2a('0x1b'))](_0x6f2a('0x23'));}_0x3d8f60=_0x2c26fc;var _0x4a89a3=[];_0x254233[_0x6f2a('0x3e')](function(_0x5314a2){_0x4a89a3[_0x6f2a('0x3f')](checkTranscribeJob(_0x5314a2,_0x364573,_0x3d8f60));});return BPromise['all'](_0x4a89a3);})['catch'](function(_0x2e0078){if(_0x2e0078){if(!_0x2e0078[_0x6f2a('0x33')]||_0x2e0078[_0x6f2a('0x33')]!==_0x6f2a('0x34')){logger[_0x6f2a('0x35')](util[_0x6f2a('0x37')](_0x2e0078,{'showHidden':![],'depth':null}));}}});}exports[_0x6f2a('0x40')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 11e9109..8410213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ee2=['update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join'];(function(_0x1c443f,_0x51319d){var _0x4a4a71=function(_0x355b73){while(--_0x355b73){_0x1c443f['push'](_0x1c443f['shift']());}};_0x4a4a71(++_0x51319d);}(_0x6ee2,0x155));var _0x26ee=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x6ee2[_0x2faddb];return _0x273c05;};'use strict';var _=require(_0x26ee('0x0'));var moment=require(_0x26ee('0x1'));var Redis=require(_0x26ee('0x2'));var util=require('util');var config=require(_0x26ee('0x3'));var db=require(_0x26ee('0x4'))['db'];var logger=require('../logger')('schedule');config[_0x26ee('0x5')]=_[_0x26ee('0x6')](config[_0x26ee('0x5')],{'host':_0x26ee('0x7'),'port':0x18eb});var io=require(_0x26ee('0x8'))(new Redis(config[_0x26ee('0x5')]));function closeInteractions(){var _0x2f9cd4=[];return db[_0x26ee('0x9')][_0x26ee('0xa')]({'raw':!![],'attributes':['id',_0x26ee('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x26ee('0xc')](0x18,_0x26ee('0xd'))}}})['then'](function(_0x1b0a18){if(_0x1b0a18&&_0x1b0a18[_0x26ee('0xe')]){_0x2f9cd4=_[_0x26ee('0xf')](_0x1b0a18||[],'id');logger[_0x26ee('0x10')](_0x26ee('0x11'),_0x2f9cd4[_0x26ee('0x12')]());return db[_0x26ee('0x9')][_0x26ee('0x13')]({'closeReason':'system','disposition':_0x26ee('0x14'),'closed':!![],'closedAt':moment()[_0x26ee('0x15')](_0x26ee('0x16'))},{'where':{'id':_0x2f9cd4}});}})['then'](function(){if(_0x2f9cd4&&_0x2f9cd4[_0x26ee('0xe')]){logger[_0x26ee('0x10')](_0x26ee('0x17'),_0x2f9cd4[_0x26ee('0x12')]());for(var _0x507446=0x0;_0x507446<_0x2f9cd4[_0x26ee('0xe')];_0x507446++){io[_0x26ee('0x18')](_0x26ee('0x19'),{'id':_0x2f9cd4[_0x507446],'closed':!![]});}}})[_0x26ee('0x1a')](function(_0x38f552){logger['error'](_0x26ee('0x1b'),_0x38f552?util[_0x26ee('0x1c')](_0x38f552,{'showHidden':![],'depth':null}):'');});}exports[_0x26ee('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x6aa1=['map','info','system','timeout','format','join','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','lastMsgAt','subtract','hours','then','length'];(function(_0xabef33,_0x1fb40f){var _0x1e0d5a=function(_0x15e5f3){while(--_0x15e5f3){_0xabef33['push'](_0xabef33['shift']());}};_0x1e0d5a(++_0x1fb40f);}(_0x6aa1,0x7b));var _0x16aa=function(_0x385fd3,_0x561745){_0x385fd3=_0x385fd3-0x0;var _0x49d7af=_0x6aa1[_0x385fd3];return _0x49d7af;};'use strict';var _=require(_0x16aa('0x0'));var moment=require(_0x16aa('0x1'));var Redis=require(_0x16aa('0x2'));var util=require(_0x16aa('0x3'));var config=require(_0x16aa('0x4'));var db=require(_0x16aa('0x5'))['db'];var logger=require(_0x16aa('0x6'))(_0x16aa('0x7'));config[_0x16aa('0x8')]=_['defaults'](config['redis'],{'host':_0x16aa('0x9'),'port':0x18eb});var io=require(_0x16aa('0xa'))(new Redis(config[_0x16aa('0x8')]));function closeInteractions(){var _0x496fd7=[];return db[_0x16aa('0xb')]['findAll']({'raw':!![],'attributes':['id',_0x16aa('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x16aa('0xd')](0x18,_0x16aa('0xe'))}}})[_0x16aa('0xf')](function(_0x17bb1f){if(_0x17bb1f&&_0x17bb1f[_0x16aa('0x10')]){_0x496fd7=_[_0x16aa('0x11')](_0x17bb1f||[],'id');logger[_0x16aa('0x12')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x496fd7['join']());return db[_0x16aa('0xb')]['update']({'closeReason':_0x16aa('0x13'),'disposition':_0x16aa('0x14'),'closed':!![],'closedAt':moment()[_0x16aa('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x496fd7}});}})[_0x16aa('0xf')](function(){if(_0x496fd7&&_0x496fd7[_0x16aa('0x10')]){logger[_0x16aa('0x12')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x496fd7[_0x16aa('0x16')]());for(var _0x2cce5b=0x0;_0x2cce5b<_0x496fd7[_0x16aa('0x10')];_0x2cce5b++){io['emit'](_0x16aa('0x17'),{'id':_0x496fd7[_0x2cce5b],'closed':!![]});}}})[_0x16aa('0x18')](function(_0x2a152e){logger[_0x16aa('0x19')](_0x16aa('0x1a'),_0x2a152e?util[_0x16aa('0x1b')](_0x2a152e,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index c589db9..2177b83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0242=['CmHopper','bulkCreate','hopper1','contacts2','catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','then','log','finished\x20populating','contacts1'];(function(_0x56b48d,_0x5d7664){var _0x4dd598=function(_0x25c02c){while(--_0x25c02c){_0x56b48d['push'](_0x56b48d['shift']());}};_0x4dd598(++_0x5d7664);}(_0x0242,0x1d9));var _0x2024=function(_0x113a6c,_0x10df30){_0x113a6c=_0x113a6c-0x0;var _0x1ac632=_0x0242[_0x113a6c];return _0x1ac632;};'use strict';var util=require(_0x2024('0x0'));var db=require(_0x2024('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x2024('0x2')]({'id':i,'firstName':_0x2024('0x3')+i,'lastName':_0x2024('0x4')+i,'phone':0xf879fb460+i,'email':_0x2024('0x5')+i+_0x2024('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x2024('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2024('0x7')](),'updatedAt':Date[_0x2024('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x2024('0x2')]({'id':i,'firstName':_0x2024('0x3')+i,'lastName':_0x2024('0x4')+i,'phone':0xf879fb460+i,'email':_0x2024('0x5')+i+_0x2024('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x2024('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x2024('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0x2024('0x8')]['destroy']({'where':{}})[_0x2024('0x9')](function(){return db[_0x2024('0x8')]['bulkCreate'](contacts);})[_0x2024('0x9')](function(){console[_0x2024('0xa')](_0x2024('0xb'),_0x2024('0xc'));return db[_0x2024('0xd')]['destroy']({'where':{}});})[_0x2024('0x9')](function(){return db['CmHopper'][_0x2024('0xe')](hopper);})['then'](function(){console[_0x2024('0xa')](_0x2024('0xb'),_0x2024('0xf'));return db[_0x2024('0x8')][_0x2024('0xe')](contacts2);})[_0x2024('0x9')](function(){console[_0x2024('0xa')](_0x2024('0xb'),_0x2024('0x10'));return db['CmHopper']['bulkCreate'](hopper2);})[_0x2024('0x9')](function(){console['log']('finished\x20populating','hopper2');})[_0x2024('0x11')](function(_0x4e6fb1){console[_0x2024('0xa')](_0x4e6fb1);});
\ No newline at end of file
+var _0x6032=['now','CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com'];(function(_0x1a996e,_0x2f240f){var _0xa9a2ee=function(_0x2ec01c){while(--_0x2ec01c){_0x1a996e['push'](_0x1a996e['shift']());}};_0xa9a2ee(++_0x2f240f);}(_0x6032,0x19b));var _0x2603=function(_0xe4076c,_0x5b67bd){_0xe4076c=_0xe4076c-0x0;var _0x401026=_0x6032[_0xe4076c];return _0x401026;};'use strict';var util=require(_0x2603('0x0'));var db=require(_0x2603('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x2603('0x2')]({'id':i,'firstName':_0x2603('0x3')+i,'lastName':_0x2603('0x4')+i,'phone':0xf879fb460+i,'email':_0x2603('0x5')+i+_0x2603('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x2603('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x2603('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2603('0x7')](),'updatedAt':Date[_0x2603('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x2603('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x2603('0x4')+i,'phone':0xf879fb460+i,'email':_0x2603('0x5')+i+_0x2603('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x2603('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x2603('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2603('0x7')](),'updatedAt':Date[_0x2603('0x7')]()});}db[_0x2603('0x8')][_0x2603('0x9')]({'where':{}})[_0x2603('0xa')](function(){return db[_0x2603('0x8')][_0x2603('0xb')](contacts);})[_0x2603('0xa')](function(){console[_0x2603('0xc')](_0x2603('0xd'),_0x2603('0xe'));return db['CmHopper'][_0x2603('0x9')]({'where':{}});})['then'](function(){return db[_0x2603('0xf')][_0x2603('0xb')](hopper);})[_0x2603('0xa')](function(){console[_0x2603('0xc')](_0x2603('0xd'),_0x2603('0x10'));return db[_0x2603('0x8')]['bulkCreate'](contacts2);})[_0x2603('0xa')](function(){console[_0x2603('0xc')](_0x2603('0xd'),_0x2603('0x11'));return db[_0x2603('0xf')][_0x2603('0xb')](hopper2);})[_0x2603('0xa')](function(){console[_0x2603('0xc')]('finished\x20populating',_0x2603('0x12'));})['catch'](function(_0x59eddf){console[_0x2603('0xc')](_0x59eddf);});
\ No newline at end of file
index 8afc531..f852859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d4=['catch','util','../mysqldb','push','format','agent','password','friend','udp','all','ulaw','%s%s','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','then','log','add\x20user'];(function(_0x60a3d,_0xf21ee4){var _0x2a8e0f=function(_0x542f19){while(--_0x542f19){_0x60a3d['push'](_0x60a3d['shift']());}};_0x2a8e0f(++_0xf21ee4);}(_0x23d4,0x166));var _0x423d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x23d4[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x423d('0x0'));var db=require(_0x423d('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x423d('0x2')]({'name':util[_0x423d('0x3')]('%s%s','agent',i),'fullname':util[_0x423d('0x3')]('%s%s',_0x423d('0x4'),i),'email':util['format']('%s%s@xcally.com',_0x423d('0x4'),i),'role':_0x423d('0x4'),'password':_0x423d('0x5'),'internal':0xfa0+i,'type':_0x423d('0x6'),'transport':[_0x423d('0x7'),'ws','wss'],'disallow':[_0x423d('0x8')],'allow':[_0x423d('0x9')],'defaultuser':util[_0x423d('0x3')](_0x423d('0xa'),'agent',i),'encryption':'yes','avpf':'yes','force_avp':_0x423d('0xb'),'icesupport':'yes','dtlsenable':_0x423d('0xb'),'dtlsverify':'no','dtlscertfile':_0x423d('0xc'),'dtlsprivatekey':_0x423d('0xd'),'dtlssetup':_0x423d('0xe'),'callerid':util['format'](_0x423d('0xf'),util[_0x423d('0x3')](_0x423d('0xa'),_0x423d('0x4'),i),0xfa0+i)});}db[_0x423d('0x10')]['bulkCreate'](users)[_0x423d('0x11')](function(){console[_0x423d('0x12')](_0x423d('0x13'));})[_0x423d('0x14')](function(_0x392f89){console[_0x423d('0x12')](_0x392f89);});
\ No newline at end of file
+var _0x9544=['yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','then','log','catch','util','../mysqldb','push','format','%s%s','agent','password','friend','wss','ulaw'];(function(_0x5d1a90,_0x44ad7d){var _0x4a1dfc=function(_0x10e4d6){while(--_0x10e4d6){_0x5d1a90['push'](_0x5d1a90['shift']());}};_0x4a1dfc(++_0x44ad7d);}(_0x9544,0x172));var _0x4954=function(_0x246def,_0x3fbc74){_0x246def=_0x246def-0x0;var _0x5c3889=_0x9544[_0x246def];return _0x5c3889;};'use strict';var util=require(_0x4954('0x0'));var db=require(_0x4954('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x4954('0x2')]({'name':util[_0x4954('0x3')](_0x4954('0x4'),_0x4954('0x5'),i),'fullname':util[_0x4954('0x3')](_0x4954('0x4'),_0x4954('0x5'),i),'email':util['format']('%s%s@xcally.com',_0x4954('0x5'),i),'role':_0x4954('0x5'),'password':_0x4954('0x6'),'internal':0xfa0+i,'type':_0x4954('0x7'),'transport':['udp','ws',_0x4954('0x8')],'disallow':['all'],'allow':[_0x4954('0x9')],'defaultuser':util['format'](_0x4954('0x4'),_0x4954('0x5'),i),'encryption':_0x4954('0xa'),'avpf':_0x4954('0xa'),'force_avp':_0x4954('0xa'),'icesupport':_0x4954('0xa'),'dtlsenable':_0x4954('0xa'),'dtlsverify':'no','dtlscertfile':_0x4954('0xb'),'dtlsprivatekey':_0x4954('0xc'),'dtlssetup':_0x4954('0xd'),'callerid':util[_0x4954('0x3')](_0x4954('0xe'),util['format'](_0x4954('0x4'),_0x4954('0x5'),i),0xfa0+i)});}db['User'][_0x4954('0xf')](users)[_0x4954('0x10')](function(){console[_0x4954('0x11')]('add\x20user');})[_0x4954('0x12')](function(_0x43afb9){console[_0x4954('0x11')](_0x43afb9);});
\ No newline at end of file
index 1bd75f6..f01344e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c14=['request','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','User','name','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','role','Campaign','%s:queue:%s','length','format','user:%s','handshake','query','find','userProfileId','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','voice:inbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','OpenchannelQueue','WhatsappQueue','user','voice:outbound','VoiceQueues','VoiceQueue','SmsQueue','OpenchannelQueues','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','sms','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','join','default','connection','setMaxListeners'];(function(_0x247f45,_0x3cc889){var _0x400dae=function(_0x276354){while(--_0x276354){_0x247f45['push'](_0x247f45['shift']());}};_0x400dae(++_0x3cc889);}(_0x6c14,0xd1));var _0x46c1=function(_0x13cf70,_0x1ccfc7){_0x13cf70=_0x13cf70-0x0;var _0x50a500=_0x6c14[_0x13cf70];return _0x50a500;};'use strict';var _=require(_0x46c1('0x0'));var util=require(_0x46c1('0x1'));var BPromise=require(_0x46c1('0x2'));var db=require(_0x46c1('0x3'))['db'];var config=require(_0x46c1('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x46c1('0x5'),'model':db[_0x46c1('0x6')],'attributes':['id',_0x46c1('0x7'),'role'],'raw':!![],'where':{'role':_0x46c1('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x46c1('0x7')],'where':{'role':_0x46c1('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x46c1('0x7')]};var queryAgents={'raw':!![],'attributes':['id',_0x46c1('0x7')],'where':{'role':_0x46c1('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x46c1('0x7'),_0x46c1('0xa')],'where':{'type':_0x46c1('0xb')}};function getAssociatedResources(_0x5d0018,_0x3ba837,_0x5f5b75){return db[_0x46c1('0xc')]['findOne']({'where':{'name':_0x5d0018,'userProfileId':_0x3ba837},'raw':!![]})[_0x46c1('0xd')](function(_0x3676e3){if(_0x3676e3){if(_0x3676e3[_0x46c1('0xe')]){switch(_0x5d0018){case'VoiceQueues':case _0x46c1('0xf'):case _0x46c1('0x10'):case _0x46c1('0x11'):case _0x46c1('0x12'):case'OpenchannelQueues':case _0x46c1('0x13'):return db[_0x5f5b75][_0x46c1('0x14')](queryQueues);case'Telephones':return db[_0x5f5b75]['findAll'](queryTelephones);case _0x46c1('0x15'):return db[_0x5f5b75][_0x46c1('0x14')](queryTrunks);case _0x46c1('0x16'):return db[_0x5f5b75][_0x46c1('0x14')](queryCampaigns);}}else{return db[_0x46c1('0x17')]['findAll']({'attributes':[_0x46c1('0x18')],'where':{'sectionId':_0x3676e3['id']},'raw':!![]})[_0x46c1('0xd')](function(_0x221905){if(_0x221905){var _0x414a3f={'where':{'id':_[_0x46c1('0x19')](_0x221905,'resourceId')},'raw':!![]};switch(_0x5f5b75){case'User':_0x414a3f[_0x46c1('0x1a')][_0x46c1('0x1b')]=_0x46c1('0x9');break;case _0x46c1('0x1c'):_0x414a3f[_0x46c1('0x1a')][_0x46c1('0xa')]=_0x46c1('0xb');break;}return db[_0x5f5b75]['findAll'](_0x414a3f);}else{return[];}});}}else{return[];}})[_0x46c1('0xd')](function(_0x20e3e2){return _0x20e3e2;});}function joinOrLeaveQueues(_0x537a9d,_0x50a76c,_0x17ff1d,_0x5a5d95){_0x537a9d[_0x50a76c](util['format'](_0x46c1('0x1d'),_0x17ff1d,_0x5a5d95[_0x46c1('0x7')]));if(_0x5a5d95[_0x46c1('0x5')]){for(var _0x261c6d=0x0;_0x261c6d<_0x5a5d95[_0x46c1('0x5')][_0x46c1('0x1e')];_0x261c6d+=0x1){_0x537a9d[_0x50a76c](util[_0x46c1('0x1f')](_0x46c1('0x20'),_0x5a5d95[_0x46c1('0x5')][_0x261c6d][_0x46c1('0x7')]));}}}function joinOrLeave(_0x473514,_0x217c2c,_0x12ce45){var _0x712eb8;if(_0x473514[_0x46c1('0x21')][_0x46c1('0x22')]['id']){db[_0x46c1('0x6')][_0x46c1('0x23')]({'attributes':['id',_0x46c1('0x7'),_0x46c1('0x1b'),_0x46c1('0x24')],'where':{'id':_0x473514[_0x46c1('0x21')][_0x46c1('0x22')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x25')],'as':_0x46c1('0x26'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x46c1('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x28')],'as':_0x46c1('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x2a')],'as':_0x46c1('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x2c')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x46c1('0xd')](function(_0x4475f7){if(_0x4475f7){_0x712eb8=_0x4475f7;_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x20'),_0x4475f7[_0x46c1('0x7')]));var _0x15e48d=[];switch(_0x4475f7[_0x46c1('0x1b')]){case'admin':_0x473514[_0x217c2c](_0x46c1('0x2d'));_0x473514[_0x217c2c]('voice:outbound');if(queryQueues[_0x46c1('0x2e')](_0x46c1('0x2f'))){delete queryQueues[_0x46c1('0x2f')];}_0x15e48d[_0x46c1('0x30')](db['VoiceQueue']['findAll'](queryQueues));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x31')]['findAll'](queryQueues));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x32')][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db['SmsQueue'][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db['MailQueue'][_0x46c1('0x14')](queryQueues));_0x15e48d['push'](db[_0x46c1('0x33')][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x34')][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db['User']['findAll'](queryTelephones));_0x15e48d[_0x46c1('0x30')](db['Trunk'][_0x46c1('0x14')](queryTrunks));_0x15e48d['push'](db['Campaign'][_0x46c1('0x14')](queryCampaigns));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x6')]['findAll'](queryAgents));break;case _0x46c1('0x35'):_0x473514[_0x217c2c](_0x46c1('0x2d'));_0x473514[_0x217c2c](_0x46c1('0x36'));_0x15e48d['push'](getAssociatedResources(_0x46c1('0x37'),_0x4475f7[_0x46c1('0x24')],_0x46c1('0x38')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0xf'),_0x4475f7[_0x46c1('0x24')],_0x46c1('0x31')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x10'),_0x4475f7['userProfileId'],_0x46c1('0x32')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x11'),_0x4475f7[_0x46c1('0x24')],_0x46c1('0x39')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources('MailQueues',_0x4475f7[_0x46c1('0x24')],'MailQueue'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x3a'),_0x4475f7[_0x46c1('0x24')],'OpenchannelQueue'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources('WhatsappQueues',_0x4475f7[_0x46c1('0x24')],_0x46c1('0x34')));_0x15e48d['push'](getAssociatedResources('Telephones',_0x4475f7[_0x46c1('0x24')],'User'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x15'),_0x4475f7[_0x46c1('0x24')],'Trunk'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x16'),_0x4475f7['userProfileId'],_0x46c1('0x1c')));_0x15e48d[_0x46c1('0x30')](db['User']['findAll'](queryAgents));break;case _0x46c1('0x8'):_0x473514[_0x217c2c]('voice:inbound');_0x473514[_0x217c2c](_0x46c1('0x36'));_0x15e48d[_0x46c1('0x30')](_0x4475f7[_0x46c1('0x3b')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d['push'](_0x4475f7['getChatQueues']({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d[_0x46c1('0x30')](_0x4475f7[_0x46c1('0x3c')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d['push'](_0x4475f7[_0x46c1('0x3d')]({'attributes':['id','name']}));_0x15e48d['push'](_0x4475f7[_0x46c1('0x3e')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d['push'](_0x4475f7[_0x46c1('0x3f')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d[_0x46c1('0x30')](_0x4475f7[_0x46c1('0x40')]({'attributes':['id',_0x46c1('0x7')]}));break;}return BPromise[_0x46c1('0x41')](_0x15e48d);}})['then'](function(_0x163962){if(_0x163962&&_0x163962[_0x46c1('0x1e')]){for(var _0x11e092=0x0;_0x11e092<_0x163962[_0x46c1('0x1e')];_0x11e092+=0x1){for(var _0x49fcc1=0x0;_0x49fcc1<_0x163962[_0x11e092][_0x46c1('0x1e')];_0x49fcc1+=0x1){switch(_0x11e092){case 0x0:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x42'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x1:joinOrLeaveQueues(_0x473514,_0x217c2c,'chat',_0x163962[_0x11e092][_0x49fcc1]);break;case 0x2:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x43'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x3:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x44'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x4:joinOrLeaveQueues(_0x473514,_0x217c2c,'mail',_0x163962[_0x11e092][_0x49fcc1]);break;case 0x5:joinOrLeaveQueues(_0x473514,_0x217c2c,'openchannel',_0x163962[_0x11e092][_0x49fcc1]);break;case 0x6:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x45'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x7:if(_0x712eb8[_0x46c1('0x1b')]!==_0x46c1('0x8'))_0x473514[_0x217c2c](util['format'](_0x46c1('0x46'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;case 0x8:if(_0x712eb8[_0x46c1('0x1b')]!=='agent')_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x47'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;case 0x9:if(_0x712eb8[_0x46c1('0x1b')]!==_0x46c1('0x8'))_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x48'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0xa')],_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;case 0xa:_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x20'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;}}}}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x23f838=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x4a')],'id');return _0x712eb8['removeChatInteractions'](_0x23f838)[_0x46c1('0xd')](function(){for(var _0x2e7037=0x0;_0x2e7037<_0x23f838[_0x46c1('0x1e')];_0x2e7037+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x4c'),{'ChatInteractionId':Number(_0x23f838[_0x2e7037]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x4de56f=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x26')],'id');return _0x712eb8[_0x46c1('0x4d')](_0x4de56f)[_0x46c1('0xd')](function(){for(var _0xe90960=0x0;_0xe90960<_0x4de56f[_0x46c1('0x1e')];_0xe90960+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x4e'),{'MailInteractionId':Number(_0x4de56f[_0xe90960]),'UserId':Number(_0x712eb8['id'])});}});}})['then'](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x52df7b=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x27')],'id');return _0x712eb8[_0x46c1('0x4f')](_0x52df7b)['then'](function(){for(var _0x10590b=0x0;_0x10590b<_0x52df7b[_0x46c1('0x1e')];_0x10590b+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x50'),{'FaxInteractionId':Number(_0x52df7b[_0x10590b]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x22c18c=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x29')],'id');return _0x712eb8[_0x46c1('0x51')](_0x22c18c)[_0x46c1('0xd')](function(){for(var _0x551a0f=0x0;_0x551a0f<_0x22c18c[_0x46c1('0x1e')];_0x551a0f+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x52'),{'SmsInteractionId':Number(_0x22c18c[_0x551a0f]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x54f357=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x2b')],'id');return _0x712eb8['removeOpenchannelInteractions'](_0x54f357)[_0x46c1('0xd')](function(){for(var _0x55ad79=0x0;_0x55ad79<_0x54f357[_0x46c1('0x1e')];_0x55ad79+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x53'),{'OpenchannelInteractionId':Number(_0x54f357[_0x55ad79]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x5a3a43=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x54')],'id');return _0x712eb8[_0x46c1('0x55')](_0x5a3a43)[_0x46c1('0xd')](function(){for(var _0x498dc7=0x0;_0x498dc7<_0x5a3a43[_0x46c1('0x1e')];_0x498dc7+=0x1){_0x12ce45['emit'](_0x46c1('0x56'),{'WhatsappInteractionId':Number(_0x5a3a43[_0x498dc7]),'UserId':Number(_0x712eb8['id'])});}});}})['catch'](function(_0x190f48){_0x473514['log'](_0x190f48);});}}function onDisconnect(_0x3cdd1e,_0xc52ca6){joinOrLeave(_0x3cdd1e,'leave',_0xc52ca6);}function onConnect(_0x2dc78a){joinOrLeave(_0x2dc78a,_0x46c1('0x57'));}exports[_0x46c1('0x58')]=function(_0x321a6b){_0x321a6b['on'](_0x46c1('0x59'),function(_0x573747){_0x573747[_0x46c1('0x5a')](0x0);_0x573747['address']=_0x573747[_0x46c1('0x5b')][_0x46c1('0x59')]['remoteAddress']+':'+_0x573747['request'][_0x46c1('0x59')]['remotePort'];_0x573747[_0x46c1('0x5c')]=new Date();_0x573747[_0x46c1('0x5d')]=function(_0x2311f2){console[_0x46c1('0x5d')](_0x46c1('0x5e')+_0x573747[_0x46c1('0x5f')][_0x46c1('0x7')]+'['+_0x573747[_0x46c1('0x60')]+']',_0x2311f2);};_0x573747['on'](_0x46c1('0x61'),function(){onDisconnect(_0x573747,_0x321a6b);_0x573747[_0x46c1('0x5d')](_0x46c1('0x62'));});onConnect(_0x573747);_0x573747[_0x46c1('0x5d')](_0x46c1('0x63'));});};
\ No newline at end of file
+var _0x6a0b=['SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','VoiceQueue','FaxQueue','MailQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','mail','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','OpenchannelInteractions','removeOpenchannelInteractions','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','default','connection','setMaxListeners','remoteAddress','request','remotePort','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','lodash','../mysqldb','./environment','Agents','User','name','role','agent','telephone','type','ivr','autoAssociation','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','then','map','where','Campaign','format','length','user:%s','handshake','find','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue'];(function(_0x53a697,_0x4388d7){var _0x32127d=function(_0x5ca333){while(--_0x5ca333){_0x53a697['push'](_0x53a697['shift']());}};_0x32127d(++_0x4388d7);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x48d58f,_0x5b41dc){_0x48d58f=_0x48d58f-0x0;var _0x228e99=_0x6a0b[_0x48d58f];return _0x228e99;};'use strict';var _=require(_0xb6a0('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xb6a0('0x1'))['db'];var config=require(_0xb6a0('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0xb6a0('0x3'),'model':db[_0xb6a0('0x4')],'attributes':['id',_0xb6a0('0x5'),_0xb6a0('0x6')],'raw':!![],'where':{'role':_0xb6a0('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xb6a0('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xb6a0('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xb6a0('0x5')],'where':{'role':_0xb6a0('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb6a0('0x5'),_0xb6a0('0x9')],'where':{'type':_0xb6a0('0xa')}};function getAssociatedResources(_0x32f7e8,_0x1d1427,_0x4e3aaf){return db['UserProfileSection']['findOne']({'where':{'name':_0x32f7e8,'userProfileId':_0x1d1427},'raw':!![]})['then'](function(_0x5e093b){if(_0x5e093b){if(_0x5e093b[_0xb6a0('0xb')]){switch(_0x32f7e8){case'VoiceQueues':case _0xb6a0('0xc'):case _0xb6a0('0xd'):case'SmsQueues':case _0xb6a0('0xe'):case _0xb6a0('0xf'):case _0xb6a0('0x10'):return db[_0x4e3aaf][_0xb6a0('0x11')](queryQueues);case _0xb6a0('0x12'):return db[_0x4e3aaf][_0xb6a0('0x11')](queryTelephones);case _0xb6a0('0x13'):return db[_0x4e3aaf][_0xb6a0('0x11')](queryTrunks);case _0xb6a0('0x14'):return db[_0x4e3aaf][_0xb6a0('0x11')](queryCampaigns);}}else{return db['UserProfileResource'][_0xb6a0('0x11')]({'attributes':[_0xb6a0('0x15')],'where':{'sectionId':_0x5e093b['id']},'raw':!![]})[_0xb6a0('0x16')](function(_0x2d41de){if(_0x2d41de){var _0x45a4df={'where':{'id':_[_0xb6a0('0x17')](_0x2d41de,_0xb6a0('0x15'))},'raw':!![]};switch(_0x4e3aaf){case _0xb6a0('0x4'):_0x45a4df[_0xb6a0('0x18')]['role']=_0xb6a0('0x8');break;case _0xb6a0('0x19'):_0x45a4df[_0xb6a0('0x18')]['type']=_0xb6a0('0xa');break;}return db[_0x4e3aaf][_0xb6a0('0x11')](_0x45a4df);}else{return[];}});}}else{return[];}})[_0xb6a0('0x16')](function(_0x17b9ee){return _0x17b9ee;});}function joinOrLeaveQueues(_0x25accb,_0x4b70ca,_0x5117b1,_0x265a8b){_0x25accb[_0x4b70ca](util[_0xb6a0('0x1a')]('%s:queue:%s',_0x5117b1,_0x265a8b[_0xb6a0('0x5')]));if(_0x265a8b['Agents']){for(var _0x2de5a2=0x0;_0x2de5a2<_0x265a8b[_0xb6a0('0x3')][_0xb6a0('0x1b')];_0x2de5a2+=0x1){_0x25accb[_0x4b70ca](util['format'](_0xb6a0('0x1c'),_0x265a8b[_0xb6a0('0x3')][_0x2de5a2][_0xb6a0('0x5')]));}}}function joinOrLeave(_0x4eb485,_0xfa0ef6,_0x2e0cb0){var _0x5eb55f;if(_0x4eb485[_0xb6a0('0x1d')]['query']['id']){db['User'][_0xb6a0('0x1e')]({'attributes':['id','name',_0xb6a0('0x6'),_0xb6a0('0x1f')],'where':{'id':_0x4eb485[_0xb6a0('0x1d')][_0xb6a0('0x20')]['id']},'include':[{'model':db[_0xb6a0('0x21')],'as':_0xb6a0('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xb6a0('0x23')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb6a0('0x24')],'as':_0xb6a0('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xb6a0('0x26')],'as':_0xb6a0('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xb6a0('0x28')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb6a0('0x29')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xb6a0('0x16')](function(_0x261ed7){if(_0x261ed7){_0x5eb55f=_0x261ed7;_0x4eb485[_0xfa0ef6](util[_0xb6a0('0x1a')](_0xb6a0('0x1c'),_0x261ed7[_0xb6a0('0x5')]));var _0x440375=[];switch(_0x261ed7['role']){case'admin':_0x4eb485[_0xfa0ef6](_0xb6a0('0x2a'));_0x4eb485[_0xfa0ef6](_0xb6a0('0x2b'));if(queryQueues[_0xb6a0('0x2c')](_0xb6a0('0x2d'))){delete queryQueues[_0xb6a0('0x2d')];}_0x440375['push'](db['VoiceQueue'][_0xb6a0('0x11')](queryQueues));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x2f')][_0xb6a0('0x11')](queryQueues));_0x440375['push'](db['FaxQueue'][_0xb6a0('0x11')](queryQueues));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x30')][_0xb6a0('0x11')](queryQueues));_0x440375[_0xb6a0('0x2e')](db['MailQueue']['findAll'](queryQueues));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x31')][_0xb6a0('0x11')](queryQueues));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x32')][_0xb6a0('0x11')](queryQueues));_0x440375[_0xb6a0('0x2e')](db['User'][_0xb6a0('0x11')](queryTelephones));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x33')]['findAll'](queryTrunks));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x19')]['findAll'](queryCampaigns));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x4')][_0xb6a0('0x11')](queryAgents));break;case _0xb6a0('0x34'):_0x4eb485[_0xfa0ef6](_0xb6a0('0x2a'));_0x4eb485[_0xfa0ef6](_0xb6a0('0x2b'));_0x440375['push'](getAssociatedResources(_0xb6a0('0x35'),_0x261ed7[_0xb6a0('0x1f')],_0xb6a0('0x36')));_0x440375['push'](getAssociatedResources('ChatQueues',_0x261ed7[_0xb6a0('0x1f')],_0xb6a0('0x2f')));_0x440375[_0xb6a0('0x2e')](getAssociatedResources(_0xb6a0('0xd'),_0x261ed7[_0xb6a0('0x1f')],_0xb6a0('0x37')));_0x440375[_0xb6a0('0x2e')](getAssociatedResources('SmsQueues',_0x261ed7[_0xb6a0('0x1f')],'SmsQueue'));_0x440375[_0xb6a0('0x2e')](getAssociatedResources(_0xb6a0('0xe'),_0x261ed7['userProfileId'],_0xb6a0('0x38')));_0x440375['push'](getAssociatedResources('OpenchannelQueues',_0x261ed7[_0xb6a0('0x1f')],'OpenchannelQueue'));_0x440375[_0xb6a0('0x2e')](getAssociatedResources('WhatsappQueues',_0x261ed7['userProfileId'],_0xb6a0('0x32')));_0x440375[_0xb6a0('0x2e')](getAssociatedResources(_0xb6a0('0x12'),_0x261ed7[_0xb6a0('0x1f')],_0xb6a0('0x4')));_0x440375[_0xb6a0('0x2e')](getAssociatedResources(_0xb6a0('0x13'),_0x261ed7[_0xb6a0('0x1f')],_0xb6a0('0x33')));_0x440375[_0xb6a0('0x2e')](getAssociatedResources(_0xb6a0('0x14'),_0x261ed7[_0xb6a0('0x1f')],_0xb6a0('0x19')));_0x440375[_0xb6a0('0x2e')](db[_0xb6a0('0x4')][_0xb6a0('0x11')](queryAgents));break;case'agent':_0x4eb485[_0xfa0ef6](_0xb6a0('0x2a'));_0x4eb485[_0xfa0ef6]('voice:outbound');_0x440375['push'](_0x261ed7[_0xb6a0('0x39')]({'attributes':['id',_0xb6a0('0x5')]}));_0x440375[_0xb6a0('0x2e')](_0x261ed7[_0xb6a0('0x3a')]({'attributes':['id',_0xb6a0('0x5')]}));_0x440375[_0xb6a0('0x2e')](_0x261ed7[_0xb6a0('0x3b')]({'attributes':['id',_0xb6a0('0x5')]}));_0x440375[_0xb6a0('0x2e')](_0x261ed7[_0xb6a0('0x3c')]({'attributes':['id',_0xb6a0('0x5')]}));_0x440375[_0xb6a0('0x2e')](_0x261ed7[_0xb6a0('0x3d')]({'attributes':['id',_0xb6a0('0x5')]}));_0x440375[_0xb6a0('0x2e')](_0x261ed7[_0xb6a0('0x3e')]({'attributes':['id',_0xb6a0('0x5')]}));_0x440375[_0xb6a0('0x2e')](_0x261ed7['getWhatsappQueues']({'attributes':['id',_0xb6a0('0x5')]}));break;}return BPromise[_0xb6a0('0x3f')](_0x440375);}})[_0xb6a0('0x16')](function(_0x5be1f9){if(_0x5be1f9&&_0x5be1f9[_0xb6a0('0x1b')]){for(var _0x320d04=0x0;_0x320d04<_0x5be1f9['length'];_0x320d04+=0x1){for(var _0x112217=0x0;_0x112217<_0x5be1f9[_0x320d04]['length'];_0x112217+=0x1){switch(_0x320d04){case 0x0:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,_0xb6a0('0x40'),_0x5be1f9[_0x320d04][_0x112217]);break;case 0x1:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,_0xb6a0('0x41'),_0x5be1f9[_0x320d04][_0x112217]);break;case 0x2:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,_0xb6a0('0x42'),_0x5be1f9[_0x320d04][_0x112217]);break;case 0x3:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,'sms',_0x5be1f9[_0x320d04][_0x112217]);break;case 0x4:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,_0xb6a0('0x43'),_0x5be1f9[_0x320d04][_0x112217]);break;case 0x5:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,'openchannel',_0x5be1f9[_0x320d04][_0x112217]);break;case 0x6:joinOrLeaveQueues(_0x4eb485,_0xfa0ef6,_0xb6a0('0x44'),_0x5be1f9[_0x320d04][_0x112217]);break;case 0x7:if(_0x5eb55f[_0xb6a0('0x6')]!==_0xb6a0('0x7'))_0x4eb485[_0xfa0ef6](util[_0xb6a0('0x1a')]('telephone:%s',_0x5be1f9[_0x320d04][_0x112217][_0xb6a0('0x5')]));break;case 0x8:if(_0x5eb55f[_0xb6a0('0x6')]!=='agent')_0x4eb485[_0xfa0ef6](util[_0xb6a0('0x1a')](_0xb6a0('0x45'),_0x5be1f9[_0x320d04][_0x112217][_0xb6a0('0x5')]));break;case 0x9:if(_0x5eb55f[_0xb6a0('0x6')]!==_0xb6a0('0x7'))_0x4eb485[_0xfa0ef6](util[_0xb6a0('0x1a')](_0xb6a0('0x46'),_0x5be1f9[_0x320d04][_0x112217][_0xb6a0('0x9')],_0x5be1f9[_0x320d04][_0x112217]['name']));break;case 0xa:_0x4eb485[_0xfa0ef6](util['format'](_0xb6a0('0x1c'),_0x5be1f9[_0x320d04][_0x112217][_0xb6a0('0x5')]));break;}}}}})[_0xb6a0('0x16')](function(){if(_0xfa0ef6===_0xb6a0('0x47')){var _0x2aad5b=_[_0xb6a0('0x17')](_0x5eb55f['ChatInteractions'],'id');return _0x5eb55f[_0xb6a0('0x48')](_0x2aad5b)[_0xb6a0('0x16')](function(){for(var _0x251477=0x0;_0x251477<_0x2aad5b['length'];_0x251477+=0x1){_0x2e0cb0[_0xb6a0('0x49')](_0xb6a0('0x4a'),{'ChatInteractionId':Number(_0x2aad5b[_0x251477]),'UserId':Number(_0x5eb55f['id'])});}});}})[_0xb6a0('0x16')](function(){if(_0xfa0ef6==='leave'){var _0x2060d6=_[_0xb6a0('0x17')](_0x5eb55f[_0xb6a0('0x4b')],'id');return _0x5eb55f[_0xb6a0('0x4c')](_0x2060d6)[_0xb6a0('0x16')](function(){for(var _0x52125c=0x0;_0x52125c<_0x2060d6[_0xb6a0('0x1b')];_0x52125c+=0x1){_0x2e0cb0['emit'](_0xb6a0('0x4d'),{'MailInteractionId':Number(_0x2060d6[_0x52125c]),'UserId':Number(_0x5eb55f['id'])});}});}})[_0xb6a0('0x16')](function(){if(_0xfa0ef6===_0xb6a0('0x47')){var _0x3eb478=_[_0xb6a0('0x17')](_0x5eb55f[_0xb6a0('0x25')],'id');return _0x5eb55f[_0xb6a0('0x4e')](_0x3eb478)[_0xb6a0('0x16')](function(){for(var _0x299aa3=0x0;_0x299aa3<_0x3eb478[_0xb6a0('0x1b')];_0x299aa3+=0x1){_0x2e0cb0['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3eb478[_0x299aa3]),'UserId':Number(_0x5eb55f['id'])});}});}})[_0xb6a0('0x16')](function(){if(_0xfa0ef6===_0xb6a0('0x47')){var _0x469f7d=_[_0xb6a0('0x17')](_0x5eb55f[_0xb6a0('0x27')],'id');return _0x5eb55f['removeSmsInteractions'](_0x469f7d)[_0xb6a0('0x16')](function(){for(var _0x636fa1=0x0;_0x636fa1<_0x469f7d[_0xb6a0('0x1b')];_0x636fa1+=0x1){_0x2e0cb0['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x469f7d[_0x636fa1]),'UserId':Number(_0x5eb55f['id'])});}});}})[_0xb6a0('0x16')](function(){if(_0xfa0ef6==='leave'){var _0x583d6f=_['map'](_0x5eb55f[_0xb6a0('0x4f')],'id');return _0x5eb55f[_0xb6a0('0x50')](_0x583d6f)['then'](function(){for(var _0x46efc5=0x0;_0x46efc5<_0x583d6f[_0xb6a0('0x1b')];_0x46efc5+=0x1){_0x2e0cb0[_0xb6a0('0x49')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x583d6f[_0x46efc5]),'UserId':Number(_0x5eb55f['id'])});}});}})[_0xb6a0('0x16')](function(){if(_0xfa0ef6==='leave'){var _0x3d5ca1=_['map'](_0x5eb55f[_0xb6a0('0x51')],'id');return _0x5eb55f[_0xb6a0('0x52')](_0x3d5ca1)[_0xb6a0('0x16')](function(){for(var _0x31304f=0x0;_0x31304f<_0x3d5ca1['length'];_0x31304f+=0x1){_0x2e0cb0[_0xb6a0('0x49')](_0xb6a0('0x53'),{'WhatsappInteractionId':Number(_0x3d5ca1[_0x31304f]),'UserId':Number(_0x5eb55f['id'])});}});}})[_0xb6a0('0x54')](function(_0x1ce0a4){_0x4eb485['log'](_0x1ce0a4);});}}function onDisconnect(_0x3712c6,_0x435883){joinOrLeave(_0x3712c6,_0xb6a0('0x47'),_0x435883);}function onConnect(_0x41ace8){joinOrLeave(_0x41ace8,'join');}exports[_0xb6a0('0x55')]=function(_0x595a58){_0x595a58['on'](_0xb6a0('0x56'),function(_0x63da8e){_0x63da8e[_0xb6a0('0x57')](0x0);_0x63da8e['address']=_0x63da8e['request']['connection'][_0xb6a0('0x58')]+':'+_0x63da8e[_0xb6a0('0x59')][_0xb6a0('0x56')][_0xb6a0('0x5a')];_0x63da8e[_0xb6a0('0x5b')]=new Date();_0x63da8e['log']=function(_0x465ac9){console[_0xb6a0('0x5c')](_0xb6a0('0x5d')+_0x63da8e[_0xb6a0('0x5e')][_0xb6a0('0x5')]+'['+_0x63da8e[_0xb6a0('0x5f')]+']',_0x465ac9);};_0x63da8e['on'](_0xb6a0('0x60'),function(){onDisconnect(_0x63da8e,_0x595a58);_0x63da8e[_0xb6a0('0x5c')](_0xb6a0('0x61'));});onConnect(_0x63da8e);_0x63da8e[_0xb6a0('0x5c')]('CONNECTED');});};
\ No newline at end of file
index 9eb258b..10b040b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa267=['ContactId','sequelize','Sequelize','QueryTypes','contact','UserId','User','find','name','fullname','email','internal','interface','format','SIP/%s','agent','incomingmessage','opened','SELECT','changed','closed','query','default','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../logger','triggers','lodash','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','ChatMessage','newmessage','Sms','SmsInteraction','closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','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'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa267,0xf0));var _0x7a26=function(_0xfbe810,_0x40c59c){_0xfbe810=_0xfbe810-0x0;var _0x5804ef=_0xa267[_0xfbe810];return _0x5804ef;};'use strict';var util=require(_0x7a26('0x0'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var logger=require(_0x7a26('0x1'))(_0x7a26('0x2'));var _=require(_0x7a26('0x3'));var client=jayson['client'][_0x7a26('0x4')]({'port':0x232a});var triggers=[{'channel':_0x7a26('0x5'),'model':_0x7a26('0x6'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':_0x7a26('0x5'),'model':_0x7a26('0x6'),'event':_0x7a26('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x7a26('0x5'),'model':_0x7a26('0xa'),'event':'afterCreate','condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0xc'),'model':_0x7a26('0xd'),'event':'afterCreate','condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Sms','model':_0x7a26('0xd'),'event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Sms','model':_0x7a26('0xf'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0x10'),'model':_0x7a26('0x11'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':_0x7a26('0x10'),'model':_0x7a26('0x11'),'event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0x7a26('0x12'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0x13'),'model':_0x7a26('0x14'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Fax','model':_0x7a26('0x14'),'event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Fax','model':_0x7a26('0x15'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0x16'),'model':_0x7a26('0x17'),'event':'afterCreate','condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Mail','model':'MailInteraction','event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Mail','model':_0x7a26('0x18'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x7a26('0x19'),'model':_0x7a26('0x1a'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x7a26('0x1b'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage}];function request(_0x577397){return client[_0x7a26('0x1c')](_0x7a26('0x1d'),_0x577397)[_0x7a26('0x1e')](function(_0x368900){logger['info'](_0x7a26('0x1f'),_0x7a26('0x1d'),_0x368900);if(_0x368900['error']){if(_0x368900[_0x7a26('0x20')][_0x7a26('0x21')]===0x1f4){logger[_0x7a26('0x20')](_0x7a26('0x1f'),_0x7a26('0x1d'),_0x368900[_0x7a26('0x20')]);}}})[_0x7a26('0x22')](function(_0x249300){logger[_0x7a26('0x20')]('Trigger,\x20%s',_0x7a26('0x1d'),_0x249300);});}function afterCreateMessage(_0x292b6d,_0x434809){return function(_0x180752,_0x2b7050){_0x180752=_0x180752[_0x7a26('0x23')]({'plain':!![]});_0x180752[_0x7a26('0x24')]=_0x292b6d;_0x180752[_0x7a26('0x25')]=_0x180752[_0x7a26('0x26')];var _0x3390c6=_0x7a26('0x27')+_0x180752[_0x7a26('0x28')];return db[_0x7a26('0x29')]['query'](_0x3390c6,{'type':db[_0x7a26('0x2a')][_0x7a26('0x2b')]['SELECT'],'raw':!![]})[_0x7a26('0x1e')](function(_0x56b0ec){return _0x56b0ec;})['then'](function(_0x65cf47){if(_0x65cf47){_0x180752[_0x7a26('0x2c')]=_0x65cf47[0x0];}if(_0x180752[_0x7a26('0x2d')]){return db[_0x7a26('0x2e')][_0x7a26('0x2f')]({'where':{'id':_0x180752[_0x7a26('0x2d')]},'attributes':['id',_0x7a26('0x30'),_0x7a26('0x31'),_0x7a26('0x32'),_0x7a26('0x33')],'raw':!![]})[_0x7a26('0x1e')](function(_0x43d04f){_0x180752[_0x7a26('0x34')]=util[_0x7a26('0x35')](_0x7a26('0x36'),_0x43d04f['name']);_0x180752[_0x7a26('0x24')]=_0x292b6d;_0x180752[_0x7a26('0x37')]=_0x43d04f;return request({'event':_0x7a26('0x38'),'message':_0x180752});})[_0x7a26('0x22')](function(_0x2c37a9){console['error'](_0x2c37a9);});}else{return request({'event':'outgoingmessage','message':_0x180752});}});};}function afterCreate(_0x1fdc81,_0x232509){return function(_0x1e7902,_0x29cbfe){_0x1e7902=_0x1e7902['get']({'plain':!![]});_0x1e7902[_0x7a26('0x24')]=_0x1fdc81;_0x1e7902[_0x7a26('0x25')]=_0x7a26('0x39');var _0x32b1bb=_0x7a26('0x27')+_0x1e7902['ContactId'];return db[_0x7a26('0x29')]['query'](_0x32b1bb,{'type':db[_0x7a26('0x2a')][_0x7a26('0x2b')][_0x7a26('0x3a')],'raw':!![]})['then'](function(_0x2f1231){return _0x2f1231;})['then'](function(_0xae0d07){if(_0xae0d07){_0x1e7902[_0x7a26('0x2c')]=_0xae0d07[0x0];}return request({'event':_0x232509,'message':_0x1e7902});});};}function afterUpdate(_0x51ce1b,_0xe1d77f){return function(_0x54b6f8,_0x3cb770){if(_0x54b6f8[_0x7a26('0x3b')]('closed')&&_0x54b6f8[_0x7a26('0x3c')]){_0x54b6f8=_0x54b6f8[_0x7a26('0x23')]({'plain':!![]});_0x54b6f8[_0x7a26('0x24')]=_0x51ce1b;_0x54b6f8['event']=_0x7a26('0x3c');var _0x27e3c6=_0x7a26('0x27')+_0x54b6f8[_0x7a26('0x28')];return db[_0x7a26('0x29')][_0x7a26('0x3d')](_0x27e3c6,{'type':db['Sequelize']['QueryTypes'][_0x7a26('0x3a')],'raw':!![]})[_0x7a26('0x1e')](function(_0x44ba20){return _0x44ba20;})[_0x7a26('0x1e')](function(_0x29cd8d){if(_0x29cd8d){_0x54b6f8[_0x7a26('0x2c')]=_0x29cd8d[0x0];}if(_0x54b6f8[_0x7a26('0x2d')]){return db[_0x7a26('0x2e')]['find']({'where':{'id':_0x54b6f8[_0x7a26('0x2d')]},'attributes':['id',_0x7a26('0x30'),_0x7a26('0x31'),_0x7a26('0x32'),_0x7a26('0x33')],'raw':!![]})['then'](function(_0x188d40){_0x54b6f8['interface']=util[_0x7a26('0x35')]('SIP/%s',_0x188d40[_0x7a26('0x30')]);_0x54b6f8[_0x7a26('0x37')]=_0x188d40;return request({'event':_0xe1d77f,'message':_0x54b6f8});})['catch'](function(_0x370085){console[_0x7a26('0x20')](_0x370085);});}else{return request({'event':_0xe1d77f,'message':_0x54b6f8});}});}};}exports[_0x7a26('0x3e')]=function(){for(var _0x4d1c3a=0x0;_0x4d1c3a<triggers[_0x7a26('0x3f')];_0x4d1c3a+=0x1){if(db[_0x7a26('0x40')](triggers[_0x4d1c3a][_0x7a26('0x41')])){db[triggers[_0x4d1c3a][_0x7a26('0x41')]][_0x7a26('0x42')](triggers[_0x4d1c3a][_0x7a26('0x25')],triggers[_0x4d1c3a][_0x7a26('0x43')](triggers[_0x4d1c3a]['channel'][_0x7a26('0x44')](),triggers[_0x4d1c3a][_0x7a26('0x45')]));}}};
\ No newline at end of file
+var _0x2b81=['hook','callback','condition','util','../../mysqldb','jayson/promise','../logger','triggers','lodash','client','http','afterCreate','newinteraction','Chat','ChatInteraction','afterUpdate','closedinteraction','newmessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','substatus','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','code','catch','get','motionChannel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','UserId','User','name','email','internal','interface','format','SIP/%s','channel','agent','incomingmessage','opened','query','contact','changed','closed','fullname','default','length','hasOwnProperty','model'];(function(_0x2e94d5,_0x355633){var _0x543746=function(_0x45e839){while(--_0x45e839){_0x2e94d5['push'](_0x2e94d5['shift']());}};_0x543746(++_0x355633);}(_0x2b81,0x123));var _0x12b8=function(_0x1b2f95,_0x4a2430){_0x1b2f95=_0x1b2f95-0x0;var _0x45ea46=_0x2b81[_0x1b2f95];return _0x45ea46;};'use strict';var util=require(_0x12b8('0x0'));var db=require(_0x12b8('0x1'))['db'];var jayson=require(_0x12b8('0x2'));var logger=require(_0x12b8('0x3'))(_0x12b8('0x4'));var _=require(_0x12b8('0x5'));var client=jayson[_0x12b8('0x6')][_0x12b8('0x7')]({'port':0x232a});var triggers=[{'channel':'Chat','model':'ChatInteraction','event':_0x12b8('0x8'),'condition':_0x12b8('0x9'),'callback':afterCreate},{'channel':_0x12b8('0xa'),'model':_0x12b8('0xb'),'event':_0x12b8('0xc'),'condition':_0x12b8('0xd'),'callback':afterUpdate},{'channel':_0x12b8('0xa'),'model':'ChatMessage','event':_0x12b8('0x8'),'condition':_0x12b8('0xe'),'callback':afterCreateMessage},{'channel':_0x12b8('0xf'),'model':_0x12b8('0x10'),'event':_0x12b8('0x8'),'condition':_0x12b8('0x9'),'callback':afterCreate},{'channel':_0x12b8('0xf'),'model':_0x12b8('0x10'),'event':'afterUpdate','condition':_0x12b8('0xd'),'callback':afterUpdate},{'channel':_0x12b8('0xf'),'model':'SmsMessage','event':_0x12b8('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x12b8('0x11'),'model':_0x12b8('0x12'),'event':_0x12b8('0x8'),'condition':_0x12b8('0x9'),'callback':afterCreate},{'channel':'Whatsapp','model':_0x12b8('0x12'),'event':_0x12b8('0xc'),'condition':_0x12b8('0xd'),'callback':afterUpdate},{'channel':_0x12b8('0x11'),'model':_0x12b8('0x13'),'event':'afterCreate','condition':_0x12b8('0xe'),'callback':afterCreateMessage},{'channel':_0x12b8('0x14'),'model':_0x12b8('0x15'),'event':_0x12b8('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x12b8('0x14'),'model':_0x12b8('0x15'),'event':'afterUpdate','condition':_0x12b8('0xd'),'callback':afterUpdate},{'channel':_0x12b8('0x14'),'model':_0x12b8('0x16'),'event':_0x12b8('0x8'),'condition':_0x12b8('0xe'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x12b8('0x17'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x12b8('0x18'),'model':'MailInteraction','event':'afterUpdate','condition':_0x12b8('0xd'),'callback':afterUpdate},{'channel':'Mail','model':_0x12b8('0x17'),'event':_0x12b8('0x19'),'condition':_0x12b8('0x19'),'callback':afterUpdate},{'channel':'Mail','model':_0x12b8('0x1a'),'event':'afterCreate','condition':_0x12b8('0xe'),'callback':afterCreateMessage},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x12b8('0x8'),'condition':_0x12b8('0x9'),'callback':afterCreate},{'channel':_0x12b8('0x1b'),'model':_0x12b8('0x1c'),'event':_0x12b8('0xc'),'condition':_0x12b8('0xd'),'callback':afterUpdate},{'channel':_0x12b8('0x1b'),'model':_0x12b8('0x1d'),'event':'afterCreate','condition':_0x12b8('0xe'),'callback':afterCreateMessage}];function request(_0x5340d4){return client[_0x12b8('0x1e')](_0x12b8('0x1f'),_0x5340d4)[_0x12b8('0x20')](function(_0xe54b9a){logger[_0x12b8('0x21')](_0x12b8('0x22'),_0x12b8('0x1f'),_0xe54b9a);if(_0xe54b9a['error']){if(_0xe54b9a[_0x12b8('0x23')][_0x12b8('0x24')]===0x1f4){logger['error'](_0x12b8('0x22'),_0x12b8('0x1f'),_0xe54b9a[_0x12b8('0x23')]);}}})[_0x12b8('0x25')](function(_0xc2072){logger['error'](_0x12b8('0x22'),_0x12b8('0x1f'),_0xc2072);});}function afterCreateMessage(_0x4764b4,_0x8ed8ab){return function(_0x3ad102,_0x1f0a33){_0x3ad102=_0x3ad102[_0x12b8('0x26')]({'plain':!![]});_0x3ad102['channel']=_0x4764b4;_0x3ad102[_0x12b8('0x27')]=_0x4764b4;_0x3ad102[_0x12b8('0x28')]=_0x3ad102[_0x12b8('0x29')];var _0x49d5d3=_0x12b8('0x2a')+_0x3ad102[_0x12b8('0x2b')];return db[_0x12b8('0x2c')]['query'](_0x49d5d3,{'type':db[_0x12b8('0x2d')][_0x12b8('0x2e')][_0x12b8('0x2f')],'raw':!![]})['then'](function(_0x19d3b8){return _0x19d3b8;})[_0x12b8('0x20')](function(_0x2394b2){if(_0x2394b2){_0x3ad102['contact']=_0x2394b2[0x0];}if(_0x3ad102[_0x12b8('0x30')]){return db[_0x12b8('0x31')]['find']({'where':{'id':_0x3ad102[_0x12b8('0x30')]},'attributes':['id',_0x12b8('0x32'),'fullname',_0x12b8('0x33'),_0x12b8('0x34')],'raw':!![]})['then'](function(_0x52fd1d){_0x3ad102[_0x12b8('0x35')]=util[_0x12b8('0x36')](_0x12b8('0x37'),_0x52fd1d[_0x12b8('0x32')]);_0x3ad102[_0x12b8('0x38')]=_0x4764b4;_0x3ad102[_0x12b8('0x39')]=_0x52fd1d;return request({'event':_0x12b8('0x3a'),'message':_0x3ad102});})[_0x12b8('0x25')](function(_0x475d8d){console['error'](_0x475d8d);});}else{return request({'event':'outgoingmessage','message':_0x3ad102});}});};}function afterCreate(_0x100f01,_0x51ebc6){return function(_0x4bcb34,_0x332488){_0x4bcb34=_0x4bcb34['get']({'plain':!![]});_0x4bcb34['channel']=_0x100f01;_0x4bcb34['motionChannel']=_0x100f01;_0x4bcb34[_0x12b8('0x28')]=_0x12b8('0x3b');var _0x3dddf6=_0x12b8('0x2a')+_0x4bcb34['ContactId'];return db['sequelize'][_0x12b8('0x3c')](_0x3dddf6,{'type':db['Sequelize'][_0x12b8('0x2e')][_0x12b8('0x2f')],'raw':!![]})[_0x12b8('0x20')](function(_0x559a7f){return _0x559a7f;})[_0x12b8('0x20')](function(_0xbc7194){if(_0xbc7194){_0x4bcb34[_0x12b8('0x3d')]=_0xbc7194[0x0];}return request({'event':_0x51ebc6,'message':_0x4bcb34});});};}function afterUpdate(_0x7b3914,_0x42602f){return function(_0x50b651,_0x4729db){if(_0x50b651[_0x12b8('0x3e')]('closed')&&_0x50b651[_0x12b8('0x3f')]){_0x50b651=_0x50b651['get']({'plain':!![]});_0x50b651[_0x12b8('0x38')]=_0x7b3914;_0x50b651[_0x12b8('0x27')]=_0x7b3914;_0x50b651['event']='closed';var _0x5c0ffb=_0x12b8('0x2a')+_0x50b651[_0x12b8('0x2b')];return db['sequelize'][_0x12b8('0x3c')](_0x5c0ffb,{'type':db[_0x12b8('0x2d')][_0x12b8('0x2e')]['SELECT'],'raw':!![]})['then'](function(_0x40c18a){return _0x40c18a;})[_0x12b8('0x20')](function(_0x19574e){if(_0x19574e){_0x50b651[_0x12b8('0x3d')]=_0x19574e[0x0];}if(_0x50b651[_0x12b8('0x30')]){return db['User']['find']({'where':{'id':_0x50b651[_0x12b8('0x30')]},'attributes':['id',_0x12b8('0x32'),_0x12b8('0x40'),_0x12b8('0x33'),'internal'],'raw':!![]})[_0x12b8('0x20')](function(_0x5e3541){_0x50b651[_0x12b8('0x35')]=util[_0x12b8('0x36')](_0x12b8('0x37'),_0x5e3541['name']);_0x50b651[_0x12b8('0x39')]=_0x5e3541;return request({'event':_0x42602f,'message':_0x50b651});})[_0x12b8('0x25')](function(_0x111b01){console[_0x12b8('0x23')](_0x111b01);});}else{return request({'event':_0x42602f,'message':_0x50b651});}});}else if(_0x50b651['changed'](_0x12b8('0x19'))){_0x50b651=_0x50b651[_0x12b8('0x26')]({'plain':!![]});_0x50b651['channel']=_0x7b3914;_0x50b651[_0x12b8('0x28')]='substatus';var _0x5c0ffb=_0x12b8('0x2a')+_0x50b651[_0x12b8('0x2b')];return db[_0x12b8('0x2c')][_0x12b8('0x3c')](_0x5c0ffb,{'type':db[_0x12b8('0x2d')][_0x12b8('0x2e')][_0x12b8('0x2f')],'raw':!![]})[_0x12b8('0x20')](function(_0x1bf349){return _0x1bf349;})[_0x12b8('0x20')](function(_0x5a02bb){if(_0x5a02bb){_0x50b651[_0x12b8('0x3d')]=_0x5a02bb[0x0];}if(_0x50b651[_0x12b8('0x30')]){return db['User']['find']({'where':{'id':_0x50b651[_0x12b8('0x30')]},'attributes':['id',_0x12b8('0x32'),'fullname',_0x12b8('0x33'),'internal'],'raw':!![]})[_0x12b8('0x20')](function(_0x28471d){_0x50b651[_0x12b8('0x35')]=util['format']('SIP/%s',_0x28471d[_0x12b8('0x32')]);_0x50b651[_0x12b8('0x39')]=_0x28471d;return request({'event':_0x42602f,'message':_0x50b651});})[_0x12b8('0x25')](function(_0x385395){console['error'](_0x385395);});}else{return request({'event':_0x42602f,'message':_0x50b651});}});}};}exports[_0x12b8('0x41')]=function(){for(var _0xf9ad6a=0x0;_0xf9ad6a<triggers[_0x12b8('0x42')];_0xf9ad6a+=0x1){if(db[_0x12b8('0x43')](triggers[_0xf9ad6a][_0x12b8('0x44')])){db[triggers[_0xf9ad6a][_0x12b8('0x44')]][_0x12b8('0x45')](triggers[_0xf9ad6a]['event'],triggers[_0xf9ad6a][_0x12b8('0x46')](triggers[_0xf9ad6a][_0x12b8('0x38')]['toLowerCase'](),triggers[_0xf9ad6a][_0x12b8('0x47')]));}}};
\ No newline at end of file
index 0f96f0a..090b48a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa44=['then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','chat','sms','whatsapp','getChannels','isValidChannel','toLowerCase','blockedAt','updateAttributes','getLicense','agent','User','count'];(function(_0x26df91,_0x52aba1){var _0x3993f8=function(_0x20c506){while(--_0x20c506){_0x26df91['push'](_0x26df91['shift']());}};_0x3993f8(++_0x52aba1);}(_0xaa44,0xd4));var _0x4aa4=function(_0x5107d8,_0x3f742a){_0x5107d8=_0x5107d8-0x0;var _0xb27fe7=_0xaa44[_0x5107d8];return _0xb27fe7;};'use strict';var _=require(_0x4aa4('0x0'));var BPromise=require(_0x4aa4('0x1'));var db=require(_0x4aa4('0x2'))['db'];var util=require(_0x4aa4('0x3'));var channels=['voice','mail',_0x4aa4('0x4'),'fax',_0x4aa4('0x5'),_0x4aa4('0x6'),'openchannel'];exports[_0x4aa4('0x7')]=function(){return channels;};exports[_0x4aa4('0x8')]=function(_0x39d79b){_0x39d79b=_0x39d79b[_0x4aa4('0x9')]();return _['includes'](channels,_0x39d79b);};exports['clearBlockUser']=function(_0x17ca63,_0x33673c,_0x4ffa2d,_0x45eb76){var _0x17edb8={'loginAttempts':_0x33673c,'blocked':_0x4ffa2d};if(!_['isUndefined'](_0x45eb76)){_0x17edb8[_0x4aa4('0xa')]=_0x45eb76;}return _0x17ca63[_0x4aa4('0xb')](_0x17edb8);};exports[_0x4aa4('0xc')]=function(_0x16b55a){return new BPromise(function(_0x2ebce1,_0x2cc5a5){var _0x4edcda=0x0;if(_0x16b55a['role']!==_0x4aa4('0xd')){_0x2ebce1(_0x16b55a);}db[_0x4aa4('0xe')][_0x4aa4('0xf')]({'where':{'role':_0x4aa4('0xd'),'online':!![],'id':{'$ne':_0x16b55a['id']}}})[_0x4aa4('0x10')](function(_0x233520){_0x4edcda=_0x233520;return util[_0x4aa4('0xc')]();})[_0x4aa4('0x10')](function(_0xae5e75){if(_0xae5e75&&_0xae5e75[_0x4aa4('0x11')]&&_0x4edcda>=_0xae5e75[_0x4aa4('0x11')]){throw Error(_0x4aa4('0x12'));}_0x2ebce1(_0x16b55a);})['catch'](function(_0x7a82ad){_0x2cc5a5(_0x7a82ad);});});};
\ No newline at end of file
+var _0x7d6c=['agent','count','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','fax','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','updateAttributes','role'];(function(_0x129c92,_0x35d9ea){var _0x23629d=function(_0x322376){while(--_0x322376){_0x129c92['push'](_0x129c92['shift']());}};_0x23629d(++_0x35d9ea);}(_0x7d6c,0x115));var _0xc7d6=function(_0x18037c,_0x212d26){_0x18037c=_0x18037c-0x0;var _0x41ec66=_0x7d6c[_0x18037c];return _0x41ec66;};'use strict';var _=require(_0xc7d6('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require('./license/util');var channels=['voice','mail','chat',_0xc7d6('0x1'),'sms',_0xc7d6('0x2'),_0xc7d6('0x3')];exports[_0xc7d6('0x4')]=function(){return channels;};exports[_0xc7d6('0x5')]=function(_0x25360e){_0x25360e=_0x25360e[_0xc7d6('0x6')]();return _[_0xc7d6('0x7')](channels,_0x25360e);};exports[_0xc7d6('0x8')]=function(_0xb17a26,_0x484610,_0x5ad308,_0x323bc9){var _0x175c52={'loginAttempts':_0x484610,'blocked':_0x5ad308};if(!_['isUndefined'](_0x323bc9)){_0x175c52['blockedAt']=_0x323bc9;}return _0xb17a26[_0xc7d6('0x9')](_0x175c52);};exports['getLicense']=function(_0x5ae5e7){return new BPromise(function(_0x33c2ee,_0x51b4a9){var _0x224305=0x0;if(_0x5ae5e7[_0xc7d6('0xa')]!==_0xc7d6('0xb')){_0x33c2ee(_0x5ae5e7);}db['User'][_0xc7d6('0xc')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x5ae5e7['id']}}})[_0xc7d6('0xd')](function(_0x12d83a){_0x224305=_0x12d83a;return util[_0xc7d6('0xe')]();})['then'](function(_0x5d328c){if(_0x5d328c&&_0x5d328c['agents']&&_0x224305>=_0x5d328c[_0xc7d6('0xf')]){throw Error(_0xc7d6('0x10'));}_0x33c2ee(_0x5ae5e7);})[_0xc7d6('0x11')](function(_0x13ae99){_0x51b4a9(_0x13ae99);});});};
\ No newline at end of file
index 154320f..e4ec2d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x557d=['status','json','send','exports'];(function(_0x3c1be6,_0x1649fd){var _0x42db4f=function(_0x390799){while(--_0x390799){_0x3c1be6['push'](_0x3c1be6['shift']());}};_0x42db4f(++_0x1649fd);}(_0x557d,0xcb));var _0xd557=function(_0x40eac7,_0x2144e6){_0x40eac7=_0x40eac7-0x0;var _0x1c304f=_0x557d[_0x40eac7];return _0x1c304f;};'use strict';module[_0xd557('0x0')][0x194]=function pageNotFound(_0x1b3a44,_0x157a69){var _0x103eb0='404';var _0x479f66=0x194;var _0x2ee354={'status':_0x479f66};_0x157a69[_0xd557('0x1')](_0x2ee354['status']);_0x157a69['render'](_0x103eb0,{},function(_0x479940,_0x7f3f34){if(_0x479940){return _0x157a69['status'](_0x2ee354[_0xd557('0x1')])[_0xd557('0x2')](_0x2ee354);}_0x157a69[_0xd557('0x3')](_0x7f3f34);});};
\ No newline at end of file
+var _0xefda=['exports','404','status','render','json','send'];(function(_0xdbfaca,_0x11dfe3){var _0x103039=function(_0x565774){while(--_0x565774){_0xdbfaca['push'](_0xdbfaca['shift']());}};_0x103039(++_0x11dfe3);}(_0xefda,0x96));var _0xaefd=function(_0x305b93,_0x220608){_0x305b93=_0x305b93-0x0;var _0x2e02e9=_0xefda[_0x305b93];return _0x2e02e9;};'use strict';module[_0xaefd('0x0')][0x194]=function pageNotFound(_0x4ae616,_0x4d8f17){var _0x3d1b8d=_0xaefd('0x1');var _0x4ae272=0x194;var _0x24c204={'status':_0x4ae272};_0x4d8f17[_0xaefd('0x2')](_0x24c204[_0xaefd('0x2')]);_0x4d8f17[_0xaefd('0x3')](_0x3d1b8d,{},function(_0x1ef6b4,_0x3288f9){if(_0x1ef6b4){return _0x4d8f17['status'](_0x24c204[_0xaefd('0x2')])[_0xaefd('0x4')](_0x24c204);}_0x4d8f17[_0xaefd('0x5')](_0x3288f9);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.34.js b/server/migrations/2.5.34.js
new file mode 100644 (file)
index 0000000..f7d42ec
--- /dev/null
@@ -0,0 +1,165 @@
+'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.35.js b/server/migrations/2.5.35.js
new file mode 100644 (file)
index 0000000..f7d42ec
--- /dev/null
@@ -0,0 +1,165 @@
+'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
index 320f118..34d06b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7634=['jstz','determine','defaultsDeep','motion2','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','utf8_general_ci','xcall','mysql','password','options','sequelizeHistory','database','User','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','Dashboard','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','Tag','Template','../api/variable/variable.model','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareRecording/squareRecording.model','SquareMessage','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','Realtime','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','UserId','Recordings','hasMany','VoiceQueuesRt','HopperFinals','HopperHistory','ChatInteraction','ChatInteractions','SmsInteractions','FaxInteraction','FaxInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','FaxQueues','SmsQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','ChatWebsites','user_has_chat_websites','MailAccounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Sounds','Members','VoiceQueueId','Hoppers','HopperHistories','JscriptySessions','TrunkBackupId','IntervalId','Pause','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailServerOut','MailAccountId','MailServerIn','Smtp','Dispositions','Answers','Interactions','List','ListId','TemplateId','team_has_mail_queues','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachment','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','DashboardItem','Items','FaxAccountId','CannedAnswer','Exntensions','user_has_fax_accounts','TagId','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','Applications','SmsInteractionId','sms_interaction_has_tags','user_has_sms_interactions','team_has_sms_queues','OpenchannelAccountId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','Agent','ChatQueue','Queue','ChatQueueId','chat_interaction_has_tags','ChatInteractionId','ChatGroupId','Website','CompanyId','MailInteractions','Company','cm_contact_has_tags','CampaignId','OwnerId','OneAll','AutomationAllId','Condition','Any','AutomationAnyId','Actions','AutomationId','Intervals','Extensions','MailApplications','ChatApplications','SmsApplications','Schedule','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerId','Fields','MetricId','Subjects','SubjectId','SalesforceField','Descriptions','DescriptionId','FieldId','AccountId','Subject','Field','Variable','VariableId','SugarcrmAccount','SugarcrmConfiguration','Configurations','Description','DeskField','int_desk_configuration_has_tags','ZendeskConfiguration','int_freshdesk_configuration_has_tags','Dynamics365Account','FromId','ToId','SessionId','ProjectId','team_has_chat_queues','ChatQueues','team_has_whatsapp_queues','TrunkId','TrunkBackup','SquareProjectId','Lists','FromMailAccountId','FromAccount','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','ToChatQueueId','FromFaxAccountId','FromUserId','FromAgent','ToFaxQueueId','ToQueue','ToFaxAccountId','ToOpenchannelQueueId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','WhatsappQueueId','../config/environment','sequelize','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7634,0x1ed));var _0x4763=function(_0xdfbe21,_0xbc92de){_0xdfbe21=_0xdfbe21-0x0;var _0x5e1e86=_0x7634[_0xdfbe21];return _0x5e1e86;};'use strict';var path=require('path');var config=require(_0x4763('0x0'));var Sequelize=require(_0x4763('0x1'));var _=require(_0x4763('0x2'));var jstz=require(_0x4763('0x3'));var timezone=jstz[_0x4763('0x4')]();config[_0x4763('0x1')]=_[_0x4763('0x5')](config[_0x4763('0x1')],{'database':_0x4763('0x6'),'username':'xcall','password':_0x4763('0x7'),'options':{'host':_0x4763('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x4763('0x9')},'logging':![],'timezone':timezone[_0x4763('0xa')](),'define':{'charset':_0x4763('0xb'),'collate':_0x4763('0xc')}}});config['sequelizeHistory']=_[_0x4763('0x5')](config['sequelizeHistory'],{'database':'motion2','username':_0x4763('0xd'),'password':_0x4763('0x7'),'options':{'host':_0x4763('0x8'),'port':0xcea,'dialect':_0x4763('0xe'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x4763('0xb'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x4763('0x1')]['database'],config[_0x4763('0x1')]['username'],config['sequelize'][_0x4763('0xf')],config[_0x4763('0x1')][_0x4763('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x4763('0x11')][_0x4763('0x12')],config[_0x4763('0x11')]['username'],config[_0x4763('0x11')][_0x4763('0xf')],config['sequelizeHistory'][_0x4763('0x10')])};db[_0x4763('0x13')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x15'));db['VoiceChanSpy']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x16'));db['VoiceContext']=db[_0x4763('0x1')]['import']('../api/voiceContext/voiceContext.model');db[_0x4763('0x17')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x18'));db[_0x4763('0x19')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x1a'));db[_0x4763('0x1b')]=db[_0x4763('0x1')]['import'](_0x4763('0x1c'));db[_0x4763('0x1d')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x1e'));db[_0x4763('0x1f')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x20'));db[_0x4763('0x21')]=db[_0x4763('0x1')]['import'](_0x4763('0x22'));db[_0x4763('0x23')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0x4763('0x24')]=db['sequelize'][_0x4763('0x14')]('../api/voiceCallReport/voiceCallReport.model');db['VoiceDialReport']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/voiceDialReport/voiceDialReport.model');db[_0x4763('0x25')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x26'));db[_0x4763('0x27')]=db[_0x4763('0x1')]['import'](_0x4763('0x28'));db[_0x4763('0x29')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x2a'));db[_0x4763('0x2b')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/trunk/trunk.model');db[_0x4763('0x2c')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x2d'));db[_0x4763('0x2e')]=db['sequelize'][_0x4763('0x14')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0x4763('0x2f')]=db[_0x4763('0x1')]['import'](_0x4763('0x30'));db[_0x4763('0x31')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/userChatQueue/userChatQueue.model');db[_0x4763('0x32')]=db[_0x4763('0x1')]['import'](_0x4763('0x33'));db[_0x4763('0x34')]=db[_0x4763('0x1')]['import'](_0x4763('0x35'));db[_0x4763('0x36')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x37'));db['UserOpenchannelQueue']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x38'));db[_0x4763('0x39')]=db['sequelize']['import'](_0x4763('0x3a'));db['MailServerIn']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x3b'));db['MailServerOut']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x3c'));db[_0x4763('0x3d')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x3e'));db[_0x4763('0x3f')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x40'));db[_0x4763('0x41')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x42'));db[_0x4763('0x43')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x44'));db[_0x4763('0x45')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x46'));db[_0x4763('0x47')]=db['sequelize']['import']('../api/mailApplication/mailApplication.model');db[_0x4763('0x48')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/mailQueueReport/mailQueueReport.model');db[_0x4763('0x49')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x4a'));db['DashboardItem']=db['sequelize'][_0x4763('0x14')](_0x4763('0x4b'));db[_0x4763('0x4c')]=db[_0x4763('0x1')]['import'](_0x4763('0x4d'));db[_0x4763('0x4e')]=db['sequelize'][_0x4763('0x14')]('../api/faxApplication/faxApplication.model');db['FaxInteraction']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x4f'));db[_0x4763('0x50')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x51'));db[_0x4763('0x52')]=db[_0x4763('0x1')]['import']('../api/faxQueue/faxQueue.model');db[_0x4763('0x53')]=db[_0x4763('0x1')]['import'](_0x4763('0x54'));db[_0x4763('0x55')]=db['sequelize'][_0x4763('0x14')]('../api/smsAccount/smsAccount.model');db[_0x4763('0x56')]=db[_0x4763('0x1')]['import'](_0x4763('0x57'));db[_0x4763('0x58')]=db[_0x4763('0x1')]['import']('../api/smsInteraction/smsInteraction.model');db[_0x4763('0x59')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x5a'));db[_0x4763('0x5b')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x5c'));db[_0x4763('0x5d')]=db['sequelize']['import'](_0x4763('0x5e'));db[_0x4763('0x5f')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x60'));db[_0x4763('0x61')]=db[_0x4763('0x1')]['import'](_0x4763('0x62'));db[_0x4763('0x63')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/openchannelMessage/openchannelMessage.model');db[_0x4763('0x64')]=db['sequelize']['import'](_0x4763('0x65'));db[_0x4763('0x66')]=db[_0x4763('0x1')]['import'](_0x4763('0x67'));db[_0x4763('0x68')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x69'));db[_0x4763('0x6a')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x6b'));db['ChatInteraction']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/chatInteraction/chatInteraction.model');db[_0x4763('0x6c')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x6d'));db[_0x4763('0x6e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x6f'));db['ChatQueue']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x70'));db[_0x4763('0x71')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x72'));db[_0x4763('0x73')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x74'));db[_0x4763('0x75')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x76'));db[_0x4763('0x77')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x78'));db[_0x4763('0x79')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x7a'));db[_0x4763('0x7b')]=db[_0x4763('0x1')]['import'](_0x4763('0x7c'));db[_0x4763('0x7d')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x7e'));db[_0x4763('0x7f')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x80'));db[_0x4763('0x81')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x82'));db['CmCustomField']=db['sequelize'][_0x4763('0x14')](_0x4763('0x83'));db[_0x4763('0x84')]=db[_0x4763('0x1')]['import'](_0x4763('0x85'));db[_0x4763('0x86')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/automation/automation.model');db['CannedAnswer']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x87'));db[_0x4763('0x88')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x89'));db['Condition']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x8a'));db[_0x4763('0x8b')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x8c'));db['Pause']=db[_0x4763('0x1')]['import'](_0x4763('0x8d'));db[_0x4763('0x8e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x8f'));db[_0x4763('0x90')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x91'));db['Schedule']=db[_0x4763('0x1')]['import'](_0x4763('0x92'));db[_0x4763('0x93')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/sound/sound.model');db[_0x4763('0x94')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/tag/tag.model');db[_0x4763('0x95')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/template/template.model');db['Trigger']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/trigger/trigger.model');db['Variable']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x96'));db['Integration']=db[_0x4763('0x1')]['import'](_0x4763('0x97'));db[_0x4763('0x98')]=db[_0x4763('0x1')]['import'](_0x4763('0x99'));db[_0x4763('0x9a')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x9b'));db[_0x4763('0x9c')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x9d'));db['AnalyticExtractedReport']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x4763('0x9e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x9f'));db[_0x4763('0xa0')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xa1'));db['AnalyticTreeReport']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xa2'));db[_0x4763('0xa3')]=db['sequelize'][_0x4763('0x14')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x4763('0xa4')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db[_0x4763('0x1')]['import'](_0x4763('0xa5'));db['SugarcrmAccount']=db['sequelize'][_0x4763('0x14')](_0x4763('0xa6'));db['SugarcrmConfiguration']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xa7'));db[_0x4763('0xa8')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0x4763('0xa9')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xaa'));db[_0x4763('0xab')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xac'));db['DeskField']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intDeskField/intDeskField.model');db[_0x4763('0xad')]=db['sequelize'][_0x4763('0x14')]('../api/intZohoAccount/intZohoAccount.model');db[_0x4763('0xae')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xaf'));db[_0x4763('0xb0')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb1'));db[_0x4763('0xb2')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb3'));db['ZendeskConfiguration']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb4'));db[_0x4763('0xb5')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb6'));db[_0x4763('0xb7')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x4763('0xb8')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x4763('0xb9')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xba'));db[_0x4763('0xbb')]=db['sequelize']['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0x4763('0xbc')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x4763('0xbd')]=db[_0x4763('0x1')]['import'](_0x4763('0xbe'));db[_0x4763('0xbf')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xc0'));db[_0x4763('0xc1')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x4763('0xc2')]=db[_0x4763('0x1')]['import'](_0x4763('0xc3'));db['Dynamics365Account']=db[_0x4763('0x1')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0x4763('0xc4')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xc5'));db[_0x4763('0xc6')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xc7'));db[_0x4763('0xc8')]=db[_0x4763('0x1')]['import'](_0x4763('0xc9'));db[_0x4763('0xca')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xcb'));db[_0x4763('0xcc')]=db[_0x4763('0x1')]['import'](_0x4763('0xcd'));db['Integration']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x97'));db[_0x4763('0xce')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xcf'));db[_0x4763('0xd0')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xd1'));db[_0x4763('0xd2')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xd3'));db[_0x4763('0xd4')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xd5'));db[_0x4763('0xd6')]=db['sequelize'][_0x4763('0x14')]('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0x4763('0xd7')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xd8'));db[_0x4763('0xd9')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xda'));db[_0x4763('0xdb')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xdc'));db['SquareDetailsReport']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xdd'));db[_0x4763('0xde')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xdf'));db[_0x4763('0xe0')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe1'));db[_0x4763('0xe2')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe3'));db[_0x4763('0xe4')]=db['sequelize']['import']('../api/squareProject/squareProject.model');db['SquareRecording']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe5'));db[_0x4763('0xe6')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/squareMessage/squareMessage.model');db[_0x4763('0xe7')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe8'));db[_0x4763('0xe9')]=db[_0x4763('0x1')]['import'](_0x4763('0xea'));db[_0x4763('0xeb')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xec'));db[_0x4763('0xed')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xee'));db['Attachment']=db['sequelize'][_0x4763('0x14')](_0x4763('0xef'));db[_0x4763('0xf0')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/plugin/plugin.model');db[_0x4763('0xf1')]=db[_0x4763('0x1')]['import'](_0x4763('0xf2'));db[_0x4763('0xf3')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xf4'));db[_0x4763('0xf5')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xf6'));db[_0x4763('0xf7')]=db[_0x4763('0x1')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x4763('0xf8')]=db[_0x4763('0x1')]['import'](_0x4763('0xf9'));db[_0x4763('0xfa')]=db[_0x4763('0x1')]['import'](_0x4763('0xfb'));db[_0x4763('0xfc')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xfd'));db[_0x4763('0xfe')]=db['sequelize'][_0x4763('0x14')]('../api/userProfile/userProfile.model');db[_0x4763('0xff')]=db[_0x4763('0x1')]['import'](_0x4763('0x100'));db[_0x4763('0x101')]=db[_0x4763('0x1')]['import'](_0x4763('0x102'));db[_0x4763('0x103')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x104'));db[_0x4763('0x105')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x106'));db[_0x4763('0x107')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/whatsappApplication/whatsappApplication.model');db[_0x4763('0x108')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x109'));db[_0x4763('0x10a')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x10b'));db[_0x4763('0x10c')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x4763('0x10d')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x4763('0x10e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x10f'));db[_0x4763('0x110')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x111'));db[_0x4763('0x112')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/realtime/realtime.model');db[_0x4763('0x113')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x114'));db['User'][_0x4763('0x115')](db[_0x4763('0x21')],{'as':_0x4763('0x21'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')]['hasMany'](db['VoiceRecording'],{'as':_0x4763('0x118'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x2e')],{'as':_0x4763('0x11a'),'foreignKey':'UserId'});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x17')],{'as':'Extensions','onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':_0x4763('0x11b'),'foreignKey':'UserId'});db[_0x4763('0x13')][_0x4763('0x119')](db['CmHopperHistory'],{'as':_0x4763('0x11c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x81')],{'as':'ReportAgentPreview','foreignKey':_0x4763('0x117')});db['User'][_0x4763('0x119')](db[_0x4763('0x61')],{'as':'OpenchannelInteractions','foreignKey':_0x4763('0x117')});db[_0x4763('0x13')]['hasMany'](db[_0x4763('0x11d')],{'as':_0x4763('0x11e'),'foreignKey':'UserId'});db['User'][_0x4763('0x119')](db[_0x4763('0x58')],{'as':_0x4763('0x11f'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x120')],{'as':_0x4763('0x121'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x43')],{'as':'MailInteractions','foreignKey':'UserId'});db['User'][_0x4763('0x119')](db['WhatsappInteraction'],{'as':_0x4763('0x122'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db['UserNotification'],{'as':_0x4763('0x123'),'foreignKey':_0x4763('0x124')});db[_0x4763('0x13')][_0x4763('0x125')](db[_0x4763('0xfe')],{'as':_0x4763('0xfe'),'foreignKey':_0x4763('0x126')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x71')],{'as':_0x4763('0x128'),'through':_0x4763('0x129')});db['User']['belongsToMany'](db[_0x4763('0x77')],{'as':_0x4763('0x12a'),'through':_0x4763('0x12b')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':'Lists','through':_0x4763('0x12c')});db['User'][_0x4763('0x127')](db['Team'],{'through':_0x4763('0x12d')});db[_0x4763('0x13')]['belongsToMany'](db['MailInteraction'],{'as':'MailInteractions','through':_0x4763('0x12e')});db[_0x4763('0x13')][_0x4763('0x127')](db['ChatInteraction'],{'as':_0x4763('0x11e'),'through':_0x4763('0x12f')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x120')],{'as':_0x4763('0x121'),'through':_0x4763('0x130')});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x58')],{'as':'SmsInteractions','through':'user_has_sms_interactions'});db['User'][_0x4763('0x127')](db[_0x4763('0x61')],{'as':_0x4763('0x131'),'through':_0x4763('0x132')});db[_0x4763('0x13')][_0x4763('0x127')](db['WhatsappInteraction'],{'as':_0x4763('0x122'),'through':_0x4763('0x133')});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x1b')],{'as':_0x4763('0x134'),'through':_0x4763('0x2f'),'required':![]});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x3f')],{'as':_0x4763('0x135'),'through':'UserMailQueue','required':![]});db['User'][_0x4763('0x127')](db['ChatQueue'],{'as':'ChatQueues','through':_0x4763('0x31'),'required':![],'hooks':!![]});db[_0x4763('0x13')][_0x4763('0x127')](db['FaxQueue'],{'as':_0x4763('0x136'),'through':'UserFaxQueue','required':![]});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x5b')],{'as':_0x4763('0x137'),'through':'UserSmsQueue','required':![]});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x64')],{'as':_0x4763('0x138'),'through':_0x4763('0x139'),'required':![]});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x10e')],{'as':_0x4763('0x13a'),'through':_0x4763('0x39'),'required':![]});db['User']['belongsToMany'](db[_0x4763('0xfa')],{'through':'cm_user_has_lists'});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0xfc')],{'as':'VoicePrefixes','through':'user_has_voice_prefixes','required':![]});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x66')],{'as':_0x4763('0x13b'),'through':_0x4763('0x13c')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x4c')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x3d')],{'as':_0x4763('0x13d'),'through':'user_has_mail_accounts'});db[_0x4763('0x13')][_0x4763('0x127')](db['OpenchannelAccount'],{'as':_0x4763('0x13e'),'through':_0x4763('0x13f')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x55')],{'as':_0x4763('0x140'),'through':_0x4763('0x141')});db['User'][_0x4763('0x127')](db[_0x4763('0x105')],{'as':_0x4763('0x142'),'through':_0x4763('0x143')});db[_0x4763('0x13')][_0x4763('0x127')](db['SquareProject'],{'as':'SquareProjects','through':_0x4763('0x144')});db['VoiceChanSpy']['hasMany'](db['VoiceExtension'],{'as':_0x4763('0x145'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x146')});db[_0x4763('0x147')][_0x4763('0x119')](db[_0x4763('0x17')],{'onDelete':_0x4763('0x116')});db['VoiceExtension'][_0x4763('0x119')](db[_0x4763('0x17')],{'as':'Applications','onDelete':_0x4763('0x116')});db['VoiceMusicOnHold'][_0x4763('0x127')](db[_0x4763('0x93')],{'as':_0x4763('0x148'),'through':'moh_has_sounds'});db['VoiceQueue'][_0x4763('0x119')](db[_0x4763('0x2e')],{'as':_0x4763('0x149'),'foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')]['hasMany'](db['CmHopper'],{'as':_0x4763('0x14b'),'foreignKey':_0x4763('0x14a')});db['VoiceQueue']['hasMany'](db['CmHopperFinal'],{'as':_0x4763('0x11b'),'foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')][_0x4763('0x119')](db['CmHopperHistory'],{'as':_0x4763('0x14c'),'foreignKey':_0x4763('0x14a')});db['VoiceQueue']['hasMany'](db[_0x4763('0x81')],{'as':_0x4763('0x81'),'foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')]['hasMany'](db[_0x4763('0x7b')],{'as':'HopperBlacks','foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')][_0x4763('0x119')](db['JscriptySessionReport'],{'as':_0x4763('0x14d'),'foreignKey':_0x4763('0x14a')});db['VoiceQueue'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x2b'),'foreignKey':'TrunkId'});db['VoiceQueue'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':'TrunkBackup','foreignKey':_0x4763('0x14e')});db[_0x4763('0x1b')][_0x4763('0x125')](db[_0x4763('0x8b')],{'as':_0x4763('0x8b'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x1b')]['belongsTo'](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x1b')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':'Lists','through':_0x4763('0x153')});db[_0x4763('0x1b')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x2f')});db['VoiceQueue'][_0x4763('0x127')](db['Team'],{'as':_0x4763('0x155'),'through':_0x4763('0x113')});db['VoiceQueue']['belongsToMany'](db['CmList'],{'as':_0x4763('0x156'),'through':'voice_queues_has_cm_blacklists'});db[_0x4763('0x1d')]['belongsTo'](db[_0x4763('0x13')],{'as':_0x4763('0x13'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x1f')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13'),'foreignKey':_0x4763('0x117')});db['VoiceMail'][_0x4763('0x119')](db['VoiceMailMessage'],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x158'),'sourceKey':_0x4763('0x159')});db[_0x4763('0x23')][_0x4763('0x125')](db[_0x4763('0x21')],{'foreignKey':_0x4763('0x158'),'targetKey':_0x4763('0x159')});db['VoiceCallReport'][_0x4763('0x119')](db['VoiceQueueReport'],{'as':_0x4763('0x15a'),'foreignKey':_0x4763('0x15b'),'constraints':![]});db['VoiceCallReport']['hasMany'](db[_0x4763('0x25')],{'as':_0x4763('0x15c'),'foreignKey':_0x4763('0x15b'),'constraints':![]});db[_0x4763('0x24')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':'User','foreignKey':_0x4763('0x117')});db[_0x4763('0x24')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db['MailServerIn'][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x3d'),'foreignKey':'MailAccountId'});db[_0x4763('0x15f')][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x3d'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x3d')]['hasOne'](db[_0x4763('0x161')],{'as':'Imap','onDelete':_0x4763('0x116')});db[_0x4763('0x3d')]['hasOne'](db[_0x4763('0x15f')],{'as':_0x4763('0x162'),'onDelete':_0x4763('0x116')});db[_0x4763('0x3d')][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':_0x4763('0x160'),'onDelete':'cascade'});db[_0x4763('0x3d')][_0x4763('0x119')](db['CannedAnswer'],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x3d')][_0x4763('0x119')](db[_0x4763('0x45')],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x3d')]['hasMany'](db['MailInteraction'],{'as':_0x4763('0x165')});db[_0x4763('0x3d')][_0x4763('0x119')](db[_0x4763('0x47')],{'as':'Applications'});db['MailAccount'][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db['MailAccount'][_0x4763('0x125')](db[_0x4763('0x95')],{'as':_0x4763('0x95'),'foreignKey':_0x4763('0x168')});db['MailAccount'][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x4763('0x3d')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':'user_has_mail_accounts'});db[_0x4763('0x3f')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x32')});db[_0x4763('0x3f')][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x169'),'as':_0x4763('0x155')});db[_0x4763('0x43')][_0x4763('0x119')](db[_0x4763('0x45')],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x16a')});db['MailInteraction'][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x43')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':'Contact','foreignKey':_0x4763('0x15e')});db[_0x4763('0x43')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x43')]['belongsToMany'](db[_0x4763('0x94')],{'through':_0x4763('0x16d'),'as':_0x4763('0x16e')});db['MailInteraction'][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x16d'),'as':_0x4763('0x16f')});db['MailInteraction'][_0x4763('0x127')](db['User'],{'as':_0x4763('0x170'),'through':_0x4763('0x12e'),'foreignKey':_0x4763('0x16a')});db[_0x4763('0x45')][_0x4763('0x119')](db[_0x4763('0x171')],{'as':_0x4763('0x172'),'onDelete':_0x4763('0x116')});db['MailMessage'][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13')});db[_0x4763('0x45')]['belongsTo'](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db['MailMessage']['belongsTo'](db[_0x4763('0x43')],{'as':_0x4763('0x173'),'foreignKey':_0x4763('0x16a')});db[_0x4763('0x45')][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x16b'),'foreignKey':'MailAccountId'});db[_0x4763('0x45')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':'ChatWebsite','foreignKey':_0x4763('0x174')});db[_0x4763('0x45')][_0x4763('0x125')](db[_0x4763('0x6e')],{'as':'ChatOfflineMessage','foreignKey':_0x4763('0x175')});db[_0x4763('0x47')][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':_0x4763('0x176')});db[_0x4763('0x47')]['belongsTo'](db[_0x4763('0x3f')],{'onDelete':'restrict'});db[_0x4763('0x47')]['belongsTo'](db['MailAccount'],{'onDelete':'restrict'});db['MailApplication']['belongsTo'](db[_0x4763('0x8b')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0x4763('0x47')][_0x4763('0x125')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x4763('0x48')][_0x4763('0x125')](db[_0x4763('0x3d')],{});db['MailQueueReport']['belongsTo'](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x48')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db['MailQueueReport'][_0x4763('0x125')](db['MailInteraction'],{});db[_0x4763('0x48')]['belongsTo'](db[_0x4763('0x45')],{});db[_0x4763('0x48')]['belongsTo'](db[_0x4763('0x13')],{});db[_0x4763('0x48')]['belongsTo'](db[_0x4763('0x3f')],{});db['Dashboard'][_0x4763('0x119')](db[_0x4763('0x177')],{'as':_0x4763('0x178'),'onDelete':_0x4763('0x116')});db['FaxAccount'][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':_0x4763('0x179'),'onDelete':_0x4763('0x116')});db['FaxAccount']['hasMany'](db[_0x4763('0x17a')],{'as':'Answers','foreignKey':_0x4763('0x179')});db[_0x4763('0x4c')][_0x4763('0x119')](db[_0x4763('0x120')],{'as':_0x4763('0x165')});db[_0x4763('0x4c')]['hasMany'](db[_0x4763('0x4e')],{'as':'Applications'});db[_0x4763('0x4c')]['hasMany'](db['VoiceExtension'],{'as':_0x4763('0x17b'),'onDelete':_0x4763('0x116')});db['FaxAccount']['hasMany'](db[_0x4763('0x50')],{'as':'Messages'});db['FaxAccount'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x2b')});db[_0x4763('0x4c')]['belongsTo'](db[_0x4763('0xfa')],{'as':'List','foreignKey':'ListId'});db['FaxAccount'][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db['FaxAccount'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x17c')});db[_0x4763('0x4e')][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':'restrict'});db[_0x4763('0x4e')][_0x4763('0x125')](db[_0x4763('0x52')],{'onDelete':_0x4763('0x176')});db['FaxApplication']['belongsTo'](db[_0x4763('0x4c')],{'onDelete':_0x4763('0x176')});db[_0x4763('0x4e')]['belongsTo'](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x17d')});db[_0x4763('0x120')][_0x4763('0x119')](db['FaxMessage'],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x17e')});db[_0x4763('0x120')][_0x4763('0x125')](db['FaxAccount'],{'as':'Account','foreignKey':_0x4763('0x179')});db[_0x4763('0x120')]['belongsTo'](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x120')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':'Owner','foreignKey':_0x4763('0x117')});db[_0x4763('0x120')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x17f'),'as':_0x4763('0x16e')});db[_0x4763('0x120')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x17f'),'as':_0x4763('0x16f')});db[_0x4763('0x120')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':_0x4763('0x130'),'foreignKey':_0x4763('0x17e')});db['FaxMessage'][_0x4763('0x125')](db['User'],{'onDelete':_0x4763('0x116'),'as':'User'});db[_0x4763('0x50')][_0x4763('0x125')](db[_0x4763('0x120')],{'as':'Interaction','foreignKey':_0x4763('0x17e')});db[_0x4763('0x50')][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':'Contact'});db[_0x4763('0x50')][_0x4763('0x125')](db[_0x4763('0x171')],{'as':'Attachment','foreignKey':_0x4763('0x180')});db['FaxMessage'][_0x4763('0x125')](db[_0x4763('0x4c')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x179')});db[_0x4763('0x52')]['belongsToMany'](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x34')});db['FaxQueue'][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x181'),'as':_0x4763('0x155')});db['FaxQueueReport']['belongsTo'](db[_0x4763('0x4c')],{});db[_0x4763('0x53')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db['FaxQueueReport'][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':'ContactId'});db[_0x4763('0x53')][_0x4763('0x125')](db[_0x4763('0x120')],{});db['FaxQueueReport']['belongsTo'](db['FaxMessage'],{});db[_0x4763('0x53')]['belongsTo'](db[_0x4763('0x13')],{});db[_0x4763('0x53')][_0x4763('0x125')](db['FaxQueue'],{});db[_0x4763('0x55')][_0x4763('0x119')](db['Disposition'],{'as':'Dispositions','foreignKey':'SmsAccountId','onDelete':_0x4763('0x116')});db[_0x4763('0x55')][_0x4763('0x119')](db['CannedAnswer'],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x182')});db['SmsAccount'][_0x4763('0x119')](db['SmsMessage'],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x182')});db['SmsAccount'][_0x4763('0x119')](db[_0x4763('0x58')],{'as':_0x4763('0x165')});db[_0x4763('0x55')][_0x4763('0x119')](db[_0x4763('0x56')],{'as':_0x4763('0x183')});db[_0x4763('0x55')][_0x4763('0x125')](db['CmList'],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x55')][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x55')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x141')});db[_0x4763('0x56')][_0x4763('0x125')](db['User'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x56')][_0x4763('0x125')](db[_0x4763('0x5b')],{'onDelete':_0x4763('0x176')});db['SmsApplication'][_0x4763('0x125')](db[_0x4763('0x55')],{'onDelete':_0x4763('0x176')});db[_0x4763('0x56')][_0x4763('0x125')](db['Interval'],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x56')][_0x4763('0x125')](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':'TagId'});db[_0x4763('0x58')]['hasMany'](db['SmsMessage'],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x184')});db[_0x4763('0x58')]['belongsTo'](db['SmsAccount'],{'as':'Account','foreignKey':_0x4763('0x182')});db[_0x4763('0x58')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x58')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':'Owner','foreignKey':_0x4763('0x117')});db[_0x4763('0x58')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x185'),'as':'Tags'});db['SmsInteraction']['belongsToMany'](db['Tag'],{'through':_0x4763('0x185'),'as':'ThroughTags'});db[_0x4763('0x58')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':_0x4763('0x186'),'foreignKey':_0x4763('0x184')});db[_0x4763('0x59')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13')});db[_0x4763('0x59')][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db['SmsMessage'][_0x4763('0x125')](db[_0x4763('0x58')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x173'),'foreignKey':_0x4763('0x184')});db[_0x4763('0x59')]['belongsTo'](db[_0x4763('0x55')],{'as':_0x4763('0x16b'),'foreignKey':'SmsAccountId'});db[_0x4763('0x5b')]['belongsToMany'](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x36'),'foreignKey':'SmsQueueId'});db[_0x4763('0x5b')][_0x4763('0x127')](db['Team'],{'through':_0x4763('0x187'),'as':_0x4763('0x155')});db['OpenchannelAccount']['hasMany'](db[_0x4763('0x88')],{'as':'Dispositions','foreignKey':_0x4763('0x188'),'onDelete':_0x4763('0x116')});db[_0x4763('0x5d')][_0x4763('0x119')](db[_0x4763('0x17a')],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')]['hasMany'](db[_0x4763('0x61')],{'as':_0x4763('0x165'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')][_0x4763('0x119')](db[_0x4763('0x63')],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')][_0x4763('0x119')](db[_0x4763('0x5f')],{'as':'Applications','foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')]['belongsTo'](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x5d')]['belongsTo'](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x5d')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x13f')});db['OpenchannelApplication'][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':_0x4763('0x176')});db['OpenchannelApplication'][_0x4763('0x125')](db[_0x4763('0x64')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db[_0x4763('0x5f')][_0x4763('0x125')](db[_0x4763('0x5d')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5f')][_0x4763('0x125')](db[_0x4763('0x8b')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x5f')][_0x4763('0x125')](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0x4763('0x119')](db[_0x4763('0x63')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x4763('0x189')});db[_0x4763('0x61')]['belongsTo'](db[_0x4763('0x5d')],{'as':'Account','foreignKey':_0x4763('0x188')});db['OpenchannelInteraction'][_0x4763('0x125')](db['CmContact'],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x61')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x61')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x18a'),'as':_0x4763('0x16e')});db[_0x4763('0x61')]['belongsToMany'](db[_0x4763('0x94')],{'through':_0x4763('0x18a'),'as':'ThroughTags'});db['OpenchannelInteraction'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':'Users','through':'user_has_openchannel_interactions','foreignKey':'OpenchannelInteractionId'});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':'cascade','as':_0x4763('0x13')});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x61')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x173'),'foreignKey':'OpenchannelInteractionId'});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x171')],{'as':_0x4763('0x171'),'foreignKey':_0x4763('0x180')});db['OpenchannelMessage'][_0x4763('0x125')](db[_0x4763('0x5d')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x64')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x139'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelQueue'][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x18b'),'as':_0x4763('0x155')});db[_0x4763('0x66')]['hasMany'](db['Disposition'],{'as':_0x4763('0x163'),'foreignKey':'ChatWebsiteId','onDelete':_0x4763('0x116')});db[_0x4763('0x66')]['hasMany'](db[_0x4763('0x17a')],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x174')});db['ChatWebsite'][_0x4763('0x119')](db[_0x4763('0x73')],{'as':_0x4763('0x18c')});db[_0x4763('0x66')]['hasMany'](db[_0x4763('0x11d')],{'as':'Interactions'});db[_0x4763('0x66')]['hasMany'](db[_0x4763('0x6a')],{'as':_0x4763('0x183')});db[_0x4763('0x66')][_0x4763('0x119')](db['ChatMessage'],{'as':'Messages'});db[_0x4763('0x66')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x66')][_0x4763('0x125')](db[_0x4763('0x8b')],{'as':_0x4763('0x8b'),'foreignKey':_0x4763('0x14f')});db['ChatWebsite'][_0x4763('0x125')](db['MailAccount'],{'as':_0x4763('0x3d'),'foreignKey':'MailAccountId'});db['ChatWebsite'][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x4763('0x66')][_0x4763('0x127')](db['User'],{'as':_0x4763('0x154'),'through':_0x4763('0x13c')});db[_0x4763('0x68')]['belongsTo'](db[_0x4763('0x5d')],{});db[_0x4763('0x68')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':'List','foreignKey':'ListId'});db[_0x4763('0x68')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x68')]['belongsTo'](db[_0x4763('0x61')],{});db[_0x4763('0x68')]['belongsTo'](db[_0x4763('0x63')],{});db['OpenchannelQueueReport'][_0x4763('0x125')](db[_0x4763('0x13')],{});db[_0x4763('0x68')][_0x4763('0x125')](db[_0x4763('0x64')],{});db[_0x4763('0x6a')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x18d'),'foreignKey':_0x4763('0x117'),'onDelete':_0x4763('0x176')});db[_0x4763('0x6a')][_0x4763('0x125')](db[_0x4763('0x18e')],{'as':_0x4763('0x18f'),'foreignKey':_0x4763('0x190'),'onDelete':_0x4763('0x176')});db[_0x4763('0x6a')]['belongsTo'](db[_0x4763('0x66')],{'as':'Website','foreignKey':'ChatWebsiteId','onDelete':_0x4763('0x176')});db['ChatApplication']['belongsTo'](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x17d')});db[_0x4763('0x11d')][_0x4763('0x119')](db[_0x4763('0x6c')],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':'ChatInteractionId'});db[_0x4763('0x11d')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':_0x4763('0x16b'),'foreignKey':'ChatWebsiteId'});db[_0x4763('0x11d')]['belongsTo'](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db[_0x4763('0x13')],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x11d')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x191'),'as':_0x4763('0x16e')});db[_0x4763('0x11d')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x191'),'as':'ThroughTags'});db['ChatInteraction'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':'user_has_chat_interactions','foreignKey':_0x4763('0x192')});db['ChatMessage'][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x13')});db[_0x4763('0x6c')][_0x4763('0x125')](db['CmContact'],{'onDelete':_0x4763('0x116'),'as':'Contact','foreignKey':_0x4763('0x15e')});db['ChatMessage'][_0x4763('0x125')](db[_0x4763('0x11d')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x173'),'foreignKey':_0x4763('0x192')});db[_0x4763('0x6c')][_0x4763('0x125')](db[_0x4763('0x171')],{'as':_0x4763('0x171'),'foreignKey':_0x4763('0x180')});db['ChatMessage'][_0x4763('0x125')](db['ChatWebsite'],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x174')});db[_0x4763('0x6e')][_0x4763('0x119')](db['Attachment'],{'as':'Attachments','foreignKey':_0x4763('0x175'),'onDelete':_0x4763('0x116'),'hooks':!![]});db['ChatOfflineMessage'][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x6e')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x174')});db[_0x4763('0x18e')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x31'),'hooks':!![]});db[_0x4763('0x18e')]['belongsToMany'](db['Team'],{'through':'team_has_chat_queues','as':_0x4763('0x155')});db[_0x4763('0x71')]['hasMany'](db['ChatInternalMessage'],{'as':'Messages','foreignKey':_0x4763('0x193'),'onDelete':_0x4763('0x116')});db['ChatGroup'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x149'),'through':_0x4763('0x129')});db[_0x4763('0x73')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':_0x4763('0x194'),'foreignKey':_0x4763('0x174')});db[_0x4763('0x75')][_0x4763('0x119')](db[_0x4763('0x77')],{'as':_0x4763('0x12a'),'foreignKey':_0x4763('0x195')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x79')],{'as':_0x4763('0x14b'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':'HopperFinals','foreignKey':'ContactId'});db['CmContact']['hasMany'](db[_0x4763('0x7f')],{'as':_0x4763('0x14c'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x81')],{'as':_0x4763('0x81'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0xd7')],{'as':_0x4763('0x14d'),'foreignKey':_0x4763('0x15e')});db['CmContact'][_0x4763('0x119')](db[_0x4763('0x61')],{'as':_0x4763('0x131'),'foreignKey':_0x4763('0x15e'),'onDelete':_0x4763('0x176')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x11d')],{'as':_0x4763('0x11e'),'foreignKey':'ContactId','onDelete':_0x4763('0x176')});db['CmContact'][_0x4763('0x119')](db[_0x4763('0x58')],{'as':_0x4763('0x11f'),'foreignKey':_0x4763('0x15e'),'onDelete':_0x4763('0x176')});db[_0x4763('0x77')][_0x4763('0x119')](db['FaxInteraction'],{'as':_0x4763('0x121'),'foreignKey':_0x4763('0x15e'),'onDelete':'restrict'});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x43')],{'as':_0x4763('0x196'),'foreignKey':_0x4763('0x15e'),'onDelete':_0x4763('0x176')});db[_0x4763('0x77')][_0x4763('0x125')](db['CmCompany'],{'as':_0x4763('0x197'),'foreignKey':'CompanyId'});db[_0x4763('0x77')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db['CmContact'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':'cm_user_has_contacts'});db[_0x4763('0x77')][_0x4763('0x127')](db[_0x4763('0x94')],{'as':'Tags','through':_0x4763('0x198')});db[_0x4763('0x77')][_0x4763('0x127')](db['Tag'],{'through':'cm_contact_has_tags','as':_0x4763('0x16f')});db[_0x4763('0x79')]['belongsTo'](db[_0x4763('0x77')],{'as':'Contact','foreignKey':'ContactId','onDelete':'cascade'});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x18d'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0x1b')],{'as':_0x4763('0x18f'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0xeb')],{'as':_0x4763('0xeb'),'foreignKey':_0x4763('0x199'),'onDelete':_0x4763('0x116')});db[_0x4763('0x79')][_0x4763('0x125')](db['User'],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x19a')});db[_0x4763('0x7b')][_0x4763('0x125')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId','onDelete':_0x4763('0x116')});db[_0x4763('0x7b')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':'List','foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db[_0x4763('0x7b')][_0x4763('0x125')](db[_0x4763('0x1b')],{'as':_0x4763('0x18f'),'foreignKey':_0x4763('0x14a'),'onDelete':_0x4763('0x116')});db['CmHopperBlack'][_0x4763('0x125')](db[_0x4763('0xeb')],{'as':_0x4763('0xeb'),'foreignKey':_0x4763('0x199'),'onDelete':_0x4763('0x116')});db[_0x4763('0x86')][_0x4763('0x119')](db['Condition'],{'as':{'plural':'All','singular':_0x4763('0x19b')},'foreignKey':_0x4763('0x19c'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x86')][_0x4763('0x119')](db[_0x4763('0x19d')],{'as':{'plural':_0x4763('0x19e'),'singular':'OneAny'},'foreignKey':_0x4763('0x19f'),'onDelete':'cascade','hooks':!![]});db[_0x4763('0x86')]['hasMany'](db[_0x4763('0x84')],{'as':_0x4763('0x1a0'),'foreignKey':_0x4763('0x1a1'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x88')]['hasMany'](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':'ParentId','onDelete':'cascade'});db[_0x4763('0x8b')][_0x4763('0x119')](db[_0x4763('0x8b')],{'as':_0x4763('0x1a2'),'foreignKey':'IntervalId','onDelete':_0x4763('0x116'),'hooks':!![],'required':![]});db[_0x4763('0x8b')]['hasMany'](db[_0x4763('0x17')],{'as':_0x4763('0x1a3'),'foreignKey':_0x4763('0x14f'),'onDelete':_0x4763('0x176')});db[_0x4763('0x8b')][_0x4763('0x119')](db['MailApplication'],{'as':_0x4763('0x1a4'),'foreignKey':'IntervalId'});db[_0x4763('0x8b')]['hasMany'](db[_0x4763('0x6a')],{'as':_0x4763('0x1a5'),'foreignKey':'IntervalId'});db[_0x4763('0x8b')][_0x4763('0x119')](db['FaxApplication'],{'as':'FaxApplications','foreignKey':_0x4763('0x14f')});db['Interval'][_0x4763('0x119')](db[_0x4763('0x56')],{'as':_0x4763('0x1a6'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x1a7')][_0x4763('0x125')](db[_0x4763('0x3d')],{});db[_0x4763('0x1a7')][_0x4763('0x125')](db['AnalyticDefaultReport'],{'foreignKey':_0x4763('0x1a8')});db[_0x4763('0x1a7')]['belongsTo'](db[_0x4763('0x9a')],{'foreignKey':_0x4763('0x1a9')});db[_0x4763('0x93')][_0x4763('0x127')](db[_0x4763('0x19')],{'as':_0x4763('0x1aa'),'through':'moh_has_sounds','onDelete':_0x4763('0x176')});db['Tag']['belongsToMany'](db[_0x4763('0x77')],{'through':_0x4763('0x198')});db[_0x4763('0x94')][_0x4763('0x127')](db[_0x4763('0x11d')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x4763('0x127')](db[_0x4763('0x43')],{'through':_0x4763('0x16d')});db['Tag']['belongsToMany'](db[_0x4763('0x58')],{'through':'sms_interaction_has_tags'});db[_0x4763('0x94')]['belongsToMany'](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db['Tag']['belongsToMany'](db[_0x4763('0x61')],{'through':_0x4763('0x18a')});db['Tag'][_0x4763('0x127')](db[_0x4763('0x108')],{'through':_0x4763('0x1ab')});db[_0x4763('0x1ac')][_0x4763('0x119')](db[_0x4763('0x19d')],{'as':{'plural':_0x4763('0x1ad'),'singular':_0x4763('0x1ae')},'foreignKey':_0x4763('0x1af'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x1ac')][_0x4763('0x119')](db[_0x4763('0x19d')],{'as':{'plural':_0x4763('0x1b0'),'singular':_0x4763('0x1b1')},'foreignKey':'TriggerAnyId','onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x1ac')][_0x4763('0x119')](db[_0x4763('0x84')],{'as':_0x4763('0x1a0'),'foreignKey':_0x4763('0x1b2'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x9a')][_0x4763('0x119')](db[_0x4763('0xa0')],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1a9'),'hooks':!![]});db[_0x4763('0x9c')]['hasMany'](db[_0x4763('0xa0')],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1a8')});db['AnalyticMetric']['hasMany'](db['AnalyticFieldReport'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b4')});db[_0x4763('0xa0')][_0x4763('0x125')](db[_0x4763('0x9e')],{'foreignKey':'MetricId'});db['SalesforceAccount'][_0x4763('0x119')](db[_0x4763('0xa4')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db[_0x4763('0xa4')][_0x4763('0x119')](db['SalesforceField'],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xa4')][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':_0x4763('0x1b8'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xa4')]['hasMany'](db['SalesforceField'],{'as':_0x4763('0x1b3'),'onDelete':'cascade','foreignKey':_0x4763('0x1ba')});db[_0x4763('0xa4')][_0x4763('0x125')](db[_0x4763('0xa3')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0x1b7')][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['SalesforceField'][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':'Description','foreignKey':'DescriptionId'});db['SalesforceField'][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':_0x4763('0x1bd'),'foreignKey':'FieldId'});db['SalesforceField'][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0x1c0')][_0x4763('0x119')](db[_0x4763('0x1c1')],{'as':_0x4763('0x1c2'),'onDelete':'cascade','foreignKey':_0x4763('0x1bb')});db[_0x4763('0x1c1')][_0x4763('0x119')](db[_0x4763('0xa8')],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0x1c1')][_0x4763('0x119')](db[_0x4763('0xa8')],{'as':'Descriptions','onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0x1c1')][_0x4763('0x119')](db['SugarcrmField'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':'FieldId'});db[_0x4763('0x1c1')]['belongsTo'](db[_0x4763('0x1c0')],{'as':'Account','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xa8')]['hasMany'](db['SugarcrmField'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['SugarcrmField']['hasMany'](db[_0x4763('0xa8')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db['SugarcrmField'][_0x4763('0x119')](db[_0x4763('0xa8')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xa8')][_0x4763('0x125')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db['DeskAccount'][_0x4763('0x119')](db[_0x4763('0xab')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xab')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':_0x4763('0x1b5'),'onDelete':'cascade','foreignKey':_0x4763('0x1b6')});db[_0x4763('0xab')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':_0x4763('0x1b8'),'onDelete':'cascade','foreignKey':_0x4763('0x1b9')});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xab')][_0x4763('0x125')](db['DeskAccount'],{'as':'Account','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xab')]['belongsToMany'](db[_0x4763('0x94')],{'through':_0x4763('0x1c5')});db[_0x4763('0x1c4')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':'Subject','foreignKey':_0x4763('0x1b6')});db['DeskField'][_0x4763('0x119')](db['DeskField'],{'as':_0x4763('0x1c3'),'foreignKey':'DescriptionId'});db[_0x4763('0x1c4')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db['DeskField']['belongsTo'](db[_0x4763('0x1be')],{'as':'Variable','foreignKey':'VariableId'});db['ZohoAccount']['hasMany'](db[_0x4763('0xae')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':'AccountId'});db[_0x4763('0xae')][_0x4763('0x119')](db[_0x4763('0xb0')],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xae')]['hasMany'](db[_0x4763('0xb0')],{'as':_0x4763('0x1b8'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xae')][_0x4763('0x119')](db[_0x4763('0xb0')],{'as':_0x4763('0x1b3'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x4763('0xae')][_0x4763('0x125')](db[_0x4763('0xad')],{'as':'Account','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xb0')][_0x4763('0x119')](db[_0x4763('0xb0')],{'as':_0x4763('0x1bc'),'foreignKey':'SubjectId'});db[_0x4763('0xb0')]['hasMany'](db['ZohoField'],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xb0')][_0x4763('0x119')](db['ZohoField'],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xb0')]['belongsTo'](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xb2')][_0x4763('0x119')](db[_0x4763('0x1c6')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0x1c6')][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0x1c6')][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1b8'),'foreignKey':'DescriptionId'});db[_0x4763('0x1c6')][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1b3'),'foreignKey':'FieldId'});db[_0x4763('0x1c6')][_0x4763('0x125')](db[_0x4763('0xb2')],{'as':_0x4763('0x16b'),'foreignKey':'AccountId'});db[_0x4763('0x1c6')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField'][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xb5')][_0x4763('0x119')](db['ZendeskField'],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db['ZendeskField'][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xb5')][_0x4763('0x125')](db['Variable'],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xb7')][_0x4763('0x119')](db[_0x4763('0xb8')],{'as':_0x4763('0x1c2'),'onDelete':'cascade','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xb8')][_0x4763('0x119')](db['FreshdeskField'],{'as':_0x4763('0x1b5'),'onDelete':'cascade','foreignKey':_0x4763('0x1b6')});db[_0x4763('0xb8')]['hasMany'](db['FreshdeskField'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x4763('0x1b9')});db[_0x4763('0xb8')][_0x4763('0x119')](db['FreshdeskField'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':'FieldId'});db[_0x4763('0xb8')][_0x4763('0x125')](db[_0x4763('0xb7')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db['FreshdeskConfiguration'][_0x4763('0x127')](db['Tag'],{'through':_0x4763('0x1c7')});db[_0x4763('0xb9')]['hasMany'](db['FreshdeskField'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['FreshdeskField'][_0x4763('0x119')](db[_0x4763('0xb9')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xb9')]['hasMany'](db['FreshdeskField'],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db['FreshdeskField'][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xbb')][_0x4763('0x119')](db[_0x4763('0xbc')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':'AccountId'});db[_0x4763('0xbc')]['hasMany'](db[_0x4763('0xbd')],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db['VtigerConfiguration'][_0x4763('0x119')](db[_0x4763('0xbd')],{'as':_0x4763('0x1b8'),'foreignKey':_0x4763('0x1b9')});db['VtigerConfiguration'][_0x4763('0x119')](db[_0x4763('0xbd')],{'as':_0x4763('0x1b3'),'foreignKey':'FieldId'});db[_0x4763('0xbc')]['belongsTo'](db[_0x4763('0xbb')],{'as':_0x4763('0x16b'),'foreignKey':'AccountId'});db[_0x4763('0xbd')][_0x4763('0x119')](db[_0x4763('0xbd')],{'as':_0x4763('0x1bc'),'foreignKey':'SubjectId'});db[_0x4763('0xbd')][_0x4763('0x119')](db['VtigerField'],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db['VtigerField'][_0x4763('0x119')](db['VtigerField'],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xbd')][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':'Variable','foreignKey':_0x4763('0x1bf')});db[_0x4763('0xbf')][_0x4763('0x119')](db[_0x4763('0xc1')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xc1')][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xc1')][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1b8'),'foreignKey':_0x4763('0x1b9')});db['ServicenowConfiguration'][_0x4763('0x119')](db['ServicenowField'],{'as':'Fields','foreignKey':_0x4763('0x1ba')});db[_0x4763('0xc1')]['belongsTo'](db[_0x4763('0xbf')],{'as':'Account','foreignKey':'AccountId'});db[_0x4763('0xc2')][_0x4763('0x119')](db['ServicenowField'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['ServicenowField'][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xc2')][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xc2')][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0x1c8')][_0x4763('0x119')](db['Dynamics365Configuration'],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xc4')][_0x4763('0x119')](db[_0x4763('0xc6')],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xc4')][_0x4763('0x119')](db[_0x4763('0xc6')],{'as':_0x4763('0x1b8'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xc4')]['hasMany'](db[_0x4763('0xc6')],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':'FieldId'});db[_0x4763('0xc4')][_0x4763('0x125')](db[_0x4763('0x1c8')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xc6')][_0x4763('0x119')](db['Dynamics365Field'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xc6')]['hasMany'](db[_0x4763('0xc6')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xc6')][_0x4763('0x119')](db[_0x4763('0xc6')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xc6')][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xc8')][_0x4763('0x119')](db[_0x4763('0xca')],{'as':'Configurations','onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xca')][_0x4763('0x119')](db['FreshsalesField'],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db['FreshsalesConfiguration'][_0x4763('0x119')](db[_0x4763('0xcc')],{'as':_0x4763('0x1b8'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xca')][_0x4763('0x119')](db[_0x4763('0xcc')],{'as':'Fields','foreignKey':'FieldId'});db['FreshsalesConfiguration'][_0x4763('0x125')](db[_0x4763('0xc8')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db['FreshsalesField']['hasMany'](db[_0x4763('0xcc')],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xcc')]['hasMany'](db['FreshsalesField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshsalesField'][_0x4763('0x119')](db[_0x4763('0xcc')],{'as':'Field','foreignKey':_0x4763('0x1ba')});db[_0x4763('0xcc')][_0x4763('0x125')](db['Variable'],{'as':_0x4763('0x1be'),'foreignKey':'VariableId'});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x66')],{});db[_0x4763('0xd0')]['belongsTo'](db['CmList'],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db['ChatQueueReport'][_0x4763('0x125')](db[_0x4763('0x77')],{'as':'Contact','foreignKey':_0x4763('0x15e')});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x11d')],{});db[_0x4763('0xd0')]['belongsTo'](db['ChatMessage'],{});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x13')],{});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x18e')],{});db['ChatInternalMessage']['belongsTo'](db[_0x4763('0x13')],{'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1c9')});db[_0x4763('0xd2')]['belongsTo'](db[_0x4763('0x13')],{'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1ca')});db[_0x4763('0xd7')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0x4763('0x1cb'),'onDelete':_0x4763('0x116')});db[_0x4763('0xd7')]['hasMany'](db['JscriptyAnswerReport'],{'foreignKey':'SessionId','onDelete':_0x4763('0x116')});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x55')],{});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db['SmsQueueReport'][_0x4763('0x125')](db[_0x4763('0x58')],{});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x59')],{});db['SmsQueueReport']['belongsTo'](db['User'],{});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x5b')],{});db[_0x4763('0xde')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x4763('0x1cc')});db[_0x4763('0xde')][_0x4763('0x119')](db['JscriptyQuestionReport'],{'foreignKey':_0x4763('0x1cc')});db['JscriptyProject'][_0x4763('0x119')](db[_0x4763('0xd4')],{'foreignKey':_0x4763('0x1cc')});db[_0x4763('0xe4')]['belongsToMany'](db[_0x4763('0x13')],{'as':'Users','through':_0x4763('0x144')});db[_0x4763('0xe7')]['belongsToMany'](db['User'],{'as':_0x4763('0x154'),'through':_0x4763('0x12d')});db['Team'][_0x4763('0x127')](db['VoiceQueue'],{'through':_0x4763('0x113'),'as':_0x4763('0x134')});db[_0x4763('0xe7')][_0x4763('0x127')](db['MailQueue'],{'through':_0x4763('0x169'),'as':'MailQueues'});db[_0x4763('0xe7')][_0x4763('0x127')](db[_0x4763('0x18e')],{'through':_0x4763('0x1cd'),'as':_0x4763('0x1ce')});db['Team'][_0x4763('0x127')](db[_0x4763('0x52')],{'through':'team_has_fax_queues','as':_0x4763('0x136')});db[_0x4763('0xe7')][_0x4763('0x127')](db[_0x4763('0x5b')],{'through':'team_has_sms_queues','as':_0x4763('0x137')});db['Team']['belongsToMany'](db[_0x4763('0x64')],{'through':_0x4763('0x18b'),'as':_0x4763('0x138')});db[_0x4763('0xe7')][_0x4763('0x127')](db['WhatsappQueue'],{'through':_0x4763('0x1cf'),'as':_0x4763('0x13a')});db[_0x4763('0xeb')][_0x4763('0x119')](db[_0x4763('0x79')],{'as':'Hoppers','foreignKey':_0x4763('0x199')});db['Campaign'][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':'HopperFinals','foreignKey':'CampaignId'});db[_0x4763('0xeb')]['hasMany'](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':_0x4763('0x199')});db[_0x4763('0xeb')][_0x4763('0x119')](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0x4763('0x199')});db[_0x4763('0xeb')][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x2b'),'foreignKey':_0x4763('0x1d0')});db['Campaign'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x1d1'),'foreignKey':_0x4763('0x14e')});db[_0x4763('0xeb')][_0x4763('0x125')](db[_0x4763('0x8b')],{'as':_0x4763('0x8b'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0xeb')]['belongsTo'](db[_0x4763('0xe4')],{'as':_0x4763('0xe4'),'foreignKey':_0x4763('0x1d2')});db[_0x4763('0xeb')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':_0x4763('0x1d3'),'through':'campaigns_has_cm_lists'});db[_0x4763('0xeb')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':_0x4763('0x156'),'through':'campaigns_has_cm_blacklists'});db[_0x4763('0x171')][_0x4763('0x125')](db[_0x4763('0x6e')],{'as':_0x4763('0x6e'),'foreignKey':_0x4763('0x175')});db[_0x4763('0xf1')][_0x4763('0x125')](db[_0x4763('0x45')],{});db[_0x4763('0xf1')]['belongsTo'](db[_0x4763('0x43')],{});db[_0x4763('0xf1')][_0x4763('0x125')](db['MailAccount'],{'foreignKey':_0x4763('0x1d4'),'as':_0x4763('0x1d5')});db['MailTransferReport'][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x4763('0xf1')]['belongsTo'](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db['MailTransferReport'][_0x4763('0x125')](db[_0x4763('0x3f')],{'foreignKey':_0x4763('0x1d8'),'as':'ToQueue'});db[_0x4763('0xf1')][_0x4763('0x125')](db['MailAccount'],{'foreignKey':_0x4763('0x1d9'),'as':_0x4763('0x1da')});db[_0x4763('0xf3')][_0x4763('0x125')](db['ChatMessage'],{});db[_0x4763('0xf3')][_0x4763('0x125')](db[_0x4763('0x11d')],{});db[_0x4763('0xf3')][_0x4763('0x125')](db[_0x4763('0x66')],{'foreignKey':'FromChatWebsiteId','as':_0x4763('0x1d5')});db['ChatTransferReport'][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x4763('0xf3')]['belongsTo'](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':'ToAgent'});db[_0x4763('0xf3')]['belongsTo'](db['ChatQueue'],{'foreignKey':_0x4763('0x1db'),'as':'ToQueue'});db[_0x4763('0xf3')][_0x4763('0x125')](db[_0x4763('0x66')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db[_0x4763('0xf5')][_0x4763('0x125')](db['FaxMessage'],{});db[_0x4763('0xf5')][_0x4763('0x125')](db[_0x4763('0x120')],{});db['FaxTransferReport'][_0x4763('0x125')](db['FaxAccount'],{'foreignKey':_0x4763('0x1dc'),'as':_0x4763('0x1d5')});db[_0x4763('0xf5')]['belongsTo'](db['User'],{'foreignKey':_0x4763('0x1dd'),'as':_0x4763('0x1de')});db['FaxTransferReport'][_0x4763('0x125')](db['User'],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db[_0x4763('0xf5')][_0x4763('0x125')](db[_0x4763('0x52')],{'foreignKey':_0x4763('0x1df'),'as':_0x4763('0x1e0')});db['FaxTransferReport'][_0x4763('0x125')](db[_0x4763('0x4c')],{'foreignKey':_0x4763('0x1e1'),'as':_0x4763('0x1da')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x63')],{});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x61')],{});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x5d')],{'foreignKey':'FromOpenchannelAccountId','as':_0x4763('0x1d5')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':'FromUserId','as':_0x4763('0x1de')});db['OpenchannelTransferReport']['belongsTo'](db['User'],{'foreignKey':'ToUserId','as':_0x4763('0x1d7')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x64')],{'foreignKey':_0x4763('0x1e2'),'as':_0x4763('0x1e0')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x5d')],{'foreignKey':'ToOpenchannelAccountId','as':_0x4763('0x1da')});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x59')],{});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x58')],{});db[_0x4763('0xf8')][_0x4763('0x125')](db['SmsAccount'],{'foreignKey':_0x4763('0x1e3'),'as':_0x4763('0x1d5')});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1dd'),'as':_0x4763('0x1de')});db['SmsTransferReport'][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db['SmsTransferReport']['belongsTo'](db[_0x4763('0x5b')],{'foreignKey':_0x4763('0x1e4'),'as':_0x4763('0x1e0')});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x55')],{'foreignKey':_0x4763('0x1e5'),'as':_0x4763('0x1da')});db[_0x4763('0xfa')][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db['CmList'][_0x4763('0x119')](db[_0x4763('0x1e6')],{'as':_0x4763('0x1e7'),'foreignKey':_0x4763('0x167')});db['CmList']['hasMany'](db[_0x4763('0x77')],{'as':_0x4763('0x12a'),'onDelete':_0x4763('0x116'),'foreignKey':'ListId'});db['CmList'][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':_0x4763('0x11b'),'foreignKey':'ListId'});db['CmList'][_0x4763('0x119')](db[_0x4763('0x7f')],{'as':'HopperHistory','foreignKey':'ListId'});db[_0x4763('0xfa')]['hasMany'](db[_0x4763('0x81')],{'as':_0x4763('0x81'),'foreignKey':_0x4763('0x167')});db[_0x4763('0xfa')]['belongsToMany'](db[_0x4763('0x1b')],{'as':_0x4763('0x1e8'),'through':_0x4763('0x153')});db[_0x4763('0xfa')][_0x4763('0x127')](db['User'],{'as':_0x4763('0x154'),'through':_0x4763('0x12c')});db[_0x4763('0xfc')][_0x4763('0x119')](db[_0x4763('0x17')],{'as':_0x4763('0x1a3'),'onDelete':_0x4763('0x116')});db[_0x4763('0xfc')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':'user_has_voice_prefixes'});db['UserProfile']['hasMany'](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'foreignKey':'userProfileId'});db[_0x4763('0xfe')]['hasMany'](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0x4763('0x126'),'onDelete':_0x4763('0x116')});db[_0x4763('0xff')][_0x4763('0x119')](db['UserProfileResource'],{'as':_0x4763('0x1e9'),'foreignKey':_0x4763('0x1ea'),'onDelete':_0x4763('0x116')});db[_0x4763('0x105')][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':'WhatsappAccountId','onDelete':_0x4763('0x116')});db['WhatsappAccount'][_0x4763('0x119')](db[_0x4763('0x17a')],{'as':_0x4763('0x164'),'foreignKey':'WhatsappAccountId'});db[_0x4763('0x105')][_0x4763('0x119')](db[_0x4763('0x10a')],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x1eb')});db['WhatsappAccount'][_0x4763('0x119')](db[_0x4763('0x108')],{'as':_0x4763('0x165')});db[_0x4763('0x105')][_0x4763('0x119')](db['WhatsappApplication'],{'as':_0x4763('0x183')});db[_0x4763('0x105')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x105')][_0x4763('0x125')](db['Pause'],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x105')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x143')});db[_0x4763('0x107')]['belongsTo'](db['User'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x107')][_0x4763('0x125')](db['WhatsappQueue'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x107')]['belongsTo'](db['WhatsappAccount'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x107')][_0x4763('0x125')](db[_0x4763('0x8b')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x107')][_0x4763('0x125')](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x17d')});db[_0x4763('0x108')][_0x4763('0x119')](db[_0x4763('0x10a')],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1ec')});db[_0x4763('0x108')][_0x4763('0x125')](db[_0x4763('0x105')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1eb')});db[_0x4763('0x108')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x108')][_0x4763('0x125')](db['User'],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x108')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x1ab'),'as':'Tags'});db[_0x4763('0x108')][_0x4763('0x127')](db['Tag'],{'through':_0x4763('0x1ab'),'as':_0x4763('0x16f')});db[_0x4763('0x108')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':_0x4763('0x133'),'foreignKey':_0x4763('0x1ec')});db['WhatsappMessage'][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13')});db['WhatsappMessage'][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db['WhatsappMessage'][_0x4763('0x125')](db[_0x4763('0x108')],{'onDelete':'cascade','as':_0x4763('0x173'),'foreignKey':_0x4763('0x1ec')});db[_0x4763('0x10a')][_0x4763('0x125')](db['WhatsappAccount'],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1eb')});db[_0x4763('0x10c')]['belongsTo'](db[_0x4763('0x105')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':'ContactId'});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x108')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x10e')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x10a')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db['User'],{});db[_0x4763('0x10d')][_0x4763('0x125')](db['WhatsappMessage'],{});db[_0x4763('0x10d')][_0x4763('0x125')](db[_0x4763('0x108')],{});db['WhatsappTransferReport']['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x4763('0x1ed'),'as':_0x4763('0x1d5')});db[_0x4763('0x10d')]['belongsTo'](db[_0x4763('0x105')],{'foreignKey':_0x4763('0x1ee'),'as':_0x4763('0x1da')});db[_0x4763('0x10d')][_0x4763('0x125')](db['WhatsappQueue'],{'foreignKey':'ToQueueId','as':_0x4763('0x1e0')});db[_0x4763('0x10d')][_0x4763('0x125')](db['User'],{'foreignKey':'FromUserId','as':_0x4763('0x1de')});db[_0x4763('0x10d')][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db[_0x4763('0x10e')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x39'),'foreignKey':_0x4763('0x1ef')});db[_0x4763('0x10e')][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x1cf'),'as':_0x4763('0x155')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x4483=['../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','../api/template/template.model','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','DeskAccount','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','ChatInternalMessage','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','../api/mailTransferReport/mailTransferReport.model','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','cascade','UserId','hasMany','Recordings','VoiceQueuesRt','VoiceExtension','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteraction','WhatsappInteractions','SenderId','belongsTo','UserProfile','userProfileId','belongsToMany','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_sms_interactions','user_has_openchannel_interactions','UserVoiceQueue','VoicePrefixes','MailQueues','UserMailQueue','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','WhatsappQueues','ChatWebsite','ChatWebsites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','Hoppers','VoiceQueueId','HopperHistories','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','Interval','IntervalId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','ContactId','MailAccountId','hasOne','Imap','Smtp','Dispositions','List','ListId','Template','TemplateId','mandatoryDispositionPauseId','MailInteractionId','Account','Owner','mail_interaction_has_tags','ThroughTags','Contact','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','Dashboard','Items','Disposition','FaxAccountId','Answers','Interactions','FaxApplication','mandatoryDispositionPause','TagId','FaxInteractionId','Tags','fax_interaction_has_tags','user_has_fax_interactions','team_has_fax_queues','FaxQueueReport','SmsAccountId','sms_interaction_has_tags','Users','SmsInteractionId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','OpenchannelInteractionId','openchannel_interaction_has_tags','AttachmentId','OpenchannelQueueId','team_has_openchannel_queues','ProactiveActions','ChatMessage','user_has_chat_websites','ChatApplication','Agent','Website','ChatInteractionId','chat_interaction_has_tags','UserChatQueue','team_has_chat_queues','CompanyId','Company','cm_contact_has_tags','Queue','CampaignId','OwnerId','Automation','Condition','All','OneAll','AutomationAllId','AutomationAnyId','Actions','ParentId','Intervals','Extensions','MailApplications','ChatApplications','SmsApplications','AnalyticDefaultReport','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerId','Fields','MetricId','Configurations','AccountId','Subjects','SubjectId','SalesforceConfiguration','Descriptions','DescriptionId','Description','Field','FieldId','Variable','VariableId','SugarcrmConfiguration','SugarcrmField','SugarcrmAccount','int_desk_configuration_has_tags','Subject','ZohoField','ZendeskField','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','VtigerConfiguration','VtigerField','Dynamics365Account','Dynamics365Configuration','Dynamics365Field','FreshsalesConfiguration','FreshsalesField','FromId','ToId','JscriptyQuestionReport','SessionId','JscriptyAnswerReport','ProjectId','VoiceQueues','team_has_whatsapp_queues','TeamVoicePrefix','HopperBlacks','campaigns_has_cm_lists','MailTransferReport','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ChatTransferReport','FromUserId','ToChatQueueId','ToChatWebsiteId','ToAccount','FromFaxAccountId','FromAccount','ToFaxQueueId','ToQueue','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','UserVoicePrefix','UserProfileSection','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappApplication','user_has_whatsapp_interactions','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','../config/environment','sequelize','lodash','determine','defaultsDeep','motion2','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','xcall','database','password','options','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','Trunk','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','../api/userVoiceQueue/userVoiceQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication'];(function(_0x1f363e,_0x550a46){var _0x41b735=function(_0x1bdca0){while(--_0x1bdca0){_0x1f363e['push'](_0x1f363e['shift']());}};_0x41b735(++_0x550a46);}(_0x4483,0x1a3));var _0x3448=function(_0x39a3ef,_0x52f13a){_0x39a3ef=_0x39a3ef-0x0;var _0x1ce1a1=_0x4483[_0x39a3ef];return _0x1ce1a1;};'use strict';var config=require(_0x3448('0x0'));var Sequelize=require(_0x3448('0x1'));var _=require(_0x3448('0x2'));var jstz=require('jstz');var timezone=jstz[_0x3448('0x3')]();config[_0x3448('0x1')]=_[_0x3448('0x4')](config[_0x3448('0x1')],{'database':_0x3448('0x5'),'username':'xcall','password':_0x3448('0x6'),'options':{'host':_0x3448('0x7'),'port':0xcea,'dialect':_0x3448('0x8'),'dialectOptions':{'charset':_0x3448('0x9')},'logging':![],'timezone':timezone[_0x3448('0xa')](),'define':{'charset':_0x3448('0xb'),'collate':_0x3448('0xc')}}});config[_0x3448('0xd')]=_['defaultsDeep'](config['sequelizeHistory'],{'database':_0x3448('0x5'),'username':_0x3448('0xe'),'password':_0x3448('0x6'),'options':{'host':_0x3448('0x7'),'port':0xcea,'dialect':_0x3448('0x8'),'dialectOptions':{'charset':_0x3448('0x9')},'logging':![],'timezone':timezone[_0x3448('0xa')](),'define':{'charset':_0x3448('0xb'),'collate':_0x3448('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x3448('0x1')][_0x3448('0xf')],config['sequelize']['username'],config[_0x3448('0x1')][_0x3448('0x10')],config['sequelize'][_0x3448('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x3448('0xd')][_0x3448('0xf')],config['sequelizeHistory'][_0x3448('0x12')],config[_0x3448('0xd')]['password'],config[_0x3448('0xd')][_0x3448('0x11')])};db[_0x3448('0x13')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x15'));db[_0x3448('0x16')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x17'));db[_0x3448('0x18')]=db[_0x3448('0x1')]['import'](_0x3448('0x19'));db['VoiceExtension']=db['sequelize']['import'](_0x3448('0x1a'));db[_0x3448('0x1b')]=db[_0x3448('0x1')]['import'](_0x3448('0x1c'));db[_0x3448('0x1d')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x1e'));db[_0x3448('0x1f')]=db['sequelize']['import']('../api/voiceRecording/voiceRecording.model');db[_0x3448('0x20')]=db[_0x3448('0x1')]['import']('../api/screenRecording/screenRecording.model');db[_0x3448('0x21')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x22'));db[_0x3448('0x23')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x24'));db[_0x3448('0x25')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/voiceCallReport/voiceCallReport.model');db[_0x3448('0x26')]=db[_0x3448('0x1')]['import'](_0x3448('0x27'));db[_0x3448('0x28')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x29'));db[_0x3448('0x2a')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/voiceQueueReport/voiceQueueReport.model');db[_0x3448('0x2b')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/memberReport/memberReport.model');db[_0x3448('0x2c')]=db['sequelize']['import']('../api/trunk/trunk.model');db[_0x3448('0x2d')]=db[_0x3448('0x1')]['import']('../api/voiceTransferReport/voiceTransferReport.model');db[_0x3448('0x2e')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x2f'));db['UserVoiceQueue']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x30'));db['UserChatQueue']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/userChatQueue/userChatQueue.model');db['UserMailQueue']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x31'));db[_0x3448('0x32')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x33'));db[_0x3448('0x34')]=db[_0x3448('0x1')]['import'](_0x3448('0x35'));db[_0x3448('0x36')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x37'));db[_0x3448('0x38')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x39'));db[_0x3448('0x3a')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x3448('0x1')]['import'](_0x3448('0x3b'));db[_0x3448('0x3c')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/mailAccount/mailAccount.model');db[_0x3448('0x3d')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x3e'));db[_0x3448('0x3f')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x40'));db[_0x3448('0x41')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x42'));db[_0x3448('0x43')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/mailMessage/mailMessage.model');db[_0x3448('0x44')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x45'));db[_0x3448('0x46')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x47'));db['Dashboard']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x48'));db['DashboardItem']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x49'));db[_0x3448('0x4a')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x4b'));db['FaxApplication']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x4c'));db[_0x3448('0x4d')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/faxInteraction/faxInteraction.model');db[_0x3448('0x4e')]=db['sequelize']['import'](_0x3448('0x4f'));db[_0x3448('0x50')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x51'));db['FaxQueueReport']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/faxQueueReport/faxQueueReport.model');db[_0x3448('0x52')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x53'));db[_0x3448('0x54')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/smsApplication/smsApplication.model');db['SmsInteraction']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x55'));db[_0x3448('0x56')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x57'));db[_0x3448('0x58')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/smsQueue/smsQueue.model');db[_0x3448('0x59')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x5a'));db['OpenchannelApplication']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x5b'));db[_0x3448('0x5c')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x5d'));db['OpenchannelMessage']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/openchannelQueue/openchannelQueue.model');db['ChatWebsite']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x5e'));db[_0x3448('0x5f')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x60'));db['ChatApplication']=db['sequelize']['import'](_0x3448('0x61'));db[_0x3448('0x62')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x63'));db['ChatMessage']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/chatMessage/chatMessage.model');db[_0x3448('0x64')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x65'));db[_0x3448('0x66')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x67'));db[_0x3448('0x68')]=db['sequelize'][_0x3448('0x14')]('../api/chatGroup/chatGroup.model');db[_0x3448('0x69')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x6a'));db[_0x3448('0x6b')]=db[_0x3448('0x1')]['import'](_0x3448('0x6c'));db['CmContact']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x6d'));db[_0x3448('0x6e')]=db[_0x3448('0x1')]['import']('../api/cmHopper/cmHopper.model');db[_0x3448('0x6f')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x3448('0x70')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x71'));db[_0x3448('0x72')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x73'));db[_0x3448('0x74')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x75'));db[_0x3448('0x76')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x77'));db[_0x3448('0x78')]=db[_0x3448('0x1')]['import'](_0x3448('0x79'));db['Automation']=db[_0x3448('0x1')]['import'](_0x3448('0x7a'));db[_0x3448('0x7b')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x7c'));db['Disposition']=db['sequelize'][_0x3448('0x14')]('../api/disposition/disposition.model');db['Condition']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/condition/condition.model');db['Interval']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x7d'));db[_0x3448('0x7e')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x7f'));db[_0x3448('0x80')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x81'));db[_0x3448('0x82')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x3448('0x83')]=db[_0x3448('0x1')]['import'](_0x3448('0x84'));db[_0x3448('0x85')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x86'));db[_0x3448('0x87')]=db['sequelize']['import'](_0x3448('0x88'));db['Template']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x89'));db['Trigger']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x8a'));db['Variable']=db['sequelize'][_0x3448('0x14')](_0x3448('0x8b'));db[_0x3448('0x8c')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x8d'));db['IntegrationReport']=db[_0x3448('0x1')]['import'](_0x3448('0x8e'));db[_0x3448('0x8f')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x90'));db['AnalyticDefaultReport']=db['sequelize'][_0x3448('0x14')](_0x3448('0x91'));db[_0x3448('0x92')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x93'));db[_0x3448('0x94')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x95'));db[_0x3448('0x96')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x97'));db[_0x3448('0x98')]=db[_0x3448('0x1')]['import']('../api/analyticTreeReport/analyticTreeReport.model');db[_0x3448('0x99')]=db['sequelize'][_0x3448('0x14')](_0x3448('0x9a'));db['SalesforceConfiguration']=db[_0x3448('0x1')]['import'](_0x3448('0x9b'));db[_0x3448('0x9c')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x9d'));db['SugarcrmAccount']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x9e'));db['SugarcrmConfiguration']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x9f'));db['SugarcrmField']=db[_0x3448('0x1')]['import']('../api/intSugarcrmField/intSugarcrmField.model');db[_0x3448('0xa0')]=db['sequelize'][_0x3448('0x14')]('../api/intDeskAccount/intDeskAccount.model');db[_0x3448('0xa1')]=db[_0x3448('0x1')]['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x3448('0xa2')]=db[_0x3448('0x1')]['import'](_0x3448('0xa3'));db[_0x3448('0xa4')]=db['sequelize'][_0x3448('0x14')](_0x3448('0xa5'));db[_0x3448('0xa6')]=db[_0x3448('0x1')]['import'](_0x3448('0xa7'));db['ZohoField']=db[_0x3448('0x1')]['import'](_0x3448('0xa8'));db[_0x3448('0xa9')]=db[_0x3448('0x1')]['import'](_0x3448('0xaa'));db[_0x3448('0xab')]=db['sequelize'][_0x3448('0x14')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db['ZendeskField']=db[_0x3448('0x1')]['import'](_0x3448('0xac'));db[_0x3448('0xad')]=db[_0x3448('0x1')]['import'](_0x3448('0xae'));db[_0x3448('0xaf')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xb0'));db[_0x3448('0xb1')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xb2'));db[_0x3448('0xb3')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xb4'));db['VtigerConfiguration']=db['sequelize']['import'](_0x3448('0xb5'));db['VtigerField']=db['sequelize'][_0x3448('0x14')](_0x3448('0xb6'));db[_0x3448('0xb7')]=db[_0x3448('0x1')]['import']('../api/intServicenowAccount/intServicenowAccount.model');db[_0x3448('0xb8')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x3448('0xb9')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xba'));db['Dynamics365Account']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/intDynamics365Account/intDynamics365Account.model');db['Dynamics365Configuration']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xbb'));db['Dynamics365Field']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xbc'));db[_0x3448('0xbd')]=db['sequelize'][_0x3448('0x14')](_0x3448('0xbe'));db['FreshsalesConfiguration']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db['FreshsalesField']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xbf'));db[_0x3448('0x8c')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x8d'));db[_0x3448('0xc0')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/network/network.model');db[_0x3448('0xc1')]=db['sequelize'][_0x3448('0x14')]('../api/chatQueueReport/chatQueueReport.model');db[_0x3448('0xc2')]=db[_0x3448('0x1')]['import']('../api/chatInternalMessage/chatInternalMessage.model');db['JscriptyAnswerReport']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xc3'));db['JscriptyQuestionReport']=db[_0x3448('0x1')][_0x3448('0x14')]('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db['JscriptySessionReport']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xc4'));db[_0x3448('0xc5')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xc6'));db[_0x3448('0xc7')]=db[_0x3448('0x1')]['import']('../api/squareReport/squareReport.model');db[_0x3448('0xc8')]=db['sequelize'][_0x3448('0x14')]('../api/squareReportDetail/squareReportDetail.model');db[_0x3448('0xc9')]=db[_0x3448('0x1')]['import'](_0x3448('0xca'));db[_0x3448('0xcb')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xcc'));db[_0x3448('0xcd')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xce'));db[_0x3448('0xcf')]=db[_0x3448('0x1')]['import'](_0x3448('0xd0'));db[_0x3448('0xd1')]=db[_0x3448('0x1')]['import'](_0x3448('0xd2'));db[_0x3448('0xd3')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xd4'));db[_0x3448('0xd5')]=db['sequelize']['import'](_0x3448('0xd6'));db[_0x3448('0xd7')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xd8'));db[_0x3448('0xd9')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xda'));db[_0x3448('0xdb')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xdc'));db[_0x3448('0xdd')]=db['sequelize']['import']('../api/attachment/attachment.model');db[_0x3448('0xde')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xdf'));db['MailTransferReport']=db[_0x3448('0x1')]['import'](_0x3448('0xe0'));db['ChatTransferReport']=db[_0x3448('0x1')]['import'](_0x3448('0xe1'));db[_0x3448('0xe2')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xe3'));db[_0x3448('0xe4')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xe5'));db['SmsTransferReport']=db['sequelize'][_0x3448('0x14')](_0x3448('0xe6'));db[_0x3448('0xe7')]=db[_0x3448('0x1')]['import'](_0x3448('0xe8'));db[_0x3448('0xe9')]=db[_0x3448('0x1')]['import'](_0x3448('0xea'));db['UserProfile']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xeb'));db['UserProfileSection']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xec'));db[_0x3448('0xed')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xee'));db[_0x3448('0xef')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xf0'));db[_0x3448('0xf1')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/whatsappAccount/whatsappAccount.model');db['WhatsappApplication']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xf2'));db['WhatsappInteraction']=db['sequelize'][_0x3448('0x14')](_0x3448('0xf3'));db[_0x3448('0xf4')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xf5'));db[_0x3448('0xf6')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xf7'));db[_0x3448('0xf8')]=db[_0x3448('0x1')]['import'](_0x3448('0xf9'));db[_0x3448('0xfa')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xfb'));db[_0x3448('0xfc')]=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xfd'));db[_0x3448('0xfe')]=db[_0x3448('0x1')][_0x3448('0x14')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0xff'));db['UserVoicePrefix']=db[_0x3448('0x1')][_0x3448('0x14')](_0x3448('0x100'));db['User']['hasOne'](db[_0x3448('0x21')],{'as':_0x3448('0x21'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x1f')],{'as':_0x3448('0x104'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x2e')],{'as':_0x3448('0x105'),'foreignKey':_0x3448('0x102')});db['User'][_0x3448('0x103')](db[_0x3448('0x106')],{'as':'Extensions','onDelete':_0x3448('0x101'),'hooks':!![]});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x70')],{'as':_0x3448('0x107'),'foreignKey':_0x3448('0x102')});db['User'][_0x3448('0x103')](db[_0x3448('0x72')],{'as':_0x3448('0x108'),'foreignKey':'UserId'});db['User'][_0x3448('0x103')](db[_0x3448('0x74')],{'as':_0x3448('0x74'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x5c')],{'as':_0x3448('0x109'),'foreignKey':_0x3448('0x102')});db['User'][_0x3448('0x103')](db[_0x3448('0x62')],{'as':_0x3448('0x10a'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')]['hasMany'](db[_0x3448('0x10b')],{'as':_0x3448('0x10c'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x4d')],{'as':_0x3448('0x10d'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x41')],{'as':_0x3448('0x10e'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0x10f')],{'as':_0x3448('0x110'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x13')][_0x3448('0x103')](db[_0x3448('0xef')],{'as':'UserNotifications','foreignKey':_0x3448('0x111')});db['User'][_0x3448('0x112')](db[_0x3448('0x113')],{'as':'UserProfile','foreignKey':_0x3448('0x114')});db['User'][_0x3448('0x115')](db[_0x3448('0x68')],{'as':'Groups','through':_0x3448('0x116')});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x117')],{'as':_0x3448('0x118'),'through':_0x3448('0x119')});db['User']['belongsToMany'](db[_0x3448('0xe7')],{'as':_0x3448('0x11a'),'through':_0x3448('0x11b')});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0xd5')],{'through':_0x3448('0x11c')});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x41')],{'as':_0x3448('0x10e'),'through':_0x3448('0x11d')});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x62')],{'as':_0x3448('0x10a'),'through':_0x3448('0x11e')});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x4d')],{'as':'FaxInteractions','through':'user_has_fax_interactions'});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x10b')],{'as':'SmsInteractions','through':_0x3448('0x11f')});db['User'][_0x3448('0x115')](db[_0x3448('0x5c')],{'as':_0x3448('0x109'),'through':_0x3448('0x120')});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x10f')],{'as':_0x3448('0x110'),'through':'user_has_whatsapp_interactions'});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x1d')],{'as':'VoiceQueues','through':_0x3448('0x121'),'required':![]});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0xe9')],{'as':_0x3448('0x122'),'through':'UserVoicePrefix','required':![]});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x3d')],{'as':_0x3448('0x123'),'through':_0x3448('0x124'),'required':![]});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x66')],{'as':_0x3448('0x125'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x3448('0x13')][_0x3448('0x115')](db['FaxQueue'],{'as':_0x3448('0x126'),'through':'UserFaxQueue','required':![]});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x58')],{'as':_0x3448('0x127'),'through':_0x3448('0x34'),'required':![]});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x128')],{'as':_0x3448('0x129'),'through':_0x3448('0x36'),'required':![]});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0xfa')],{'as':_0x3448('0x12a'),'through':_0x3448('0x38'),'required':![]});db['User'][_0x3448('0x115')](db['CmList'],{'through':_0x3448('0x11b')});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0x12b')],{'as':_0x3448('0x12c'),'through':'user_has_chat_websites'});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x4a')],{'as':_0x3448('0x12d'),'through':_0x3448('0x12e')});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x3c')],{'as':_0x3448('0x12f'),'through':_0x3448('0x130')});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0x59')],{'as':_0x3448('0x131'),'through':_0x3448('0x132')});db['User'][_0x3448('0x115')](db['SmsAccount'],{'as':_0x3448('0x133'),'through':_0x3448('0x134')});db[_0x3448('0x13')][_0x3448('0x115')](db[_0x3448('0xf1')],{'as':_0x3448('0x135'),'through':_0x3448('0x136')});db[_0x3448('0x13')]['belongsToMany'](db[_0x3448('0xcf')],{'as':_0x3448('0x137'),'through':_0x3448('0x138')});db[_0x3448('0x16')]['hasMany'](db[_0x3448('0x106')],{'as':_0x3448('0x139'),'onDelete':'cascade','foreignKey':_0x3448('0x13a')});db['VoiceContext'][_0x3448('0x103')](db['VoiceExtension'],{'onDelete':_0x3448('0x101')});db[_0x3448('0x106')][_0x3448('0x103')](db[_0x3448('0x106')],{'as':_0x3448('0x13b'),'onDelete':_0x3448('0x101')});db[_0x3448('0x1b')][_0x3448('0x115')](db[_0x3448('0x85')],{'as':_0x3448('0x13c'),'through':_0x3448('0x13d')});db[_0x3448('0x1d')][_0x3448('0x103')](db['UserVoiceQueueRt'],{'as':_0x3448('0x13e'),'foreignKey':'VoiceQueueId'});db[_0x3448('0x1d')][_0x3448('0x103')](db['CmHopper'],{'as':_0x3448('0x13f'),'foreignKey':'VoiceQueueId'});db[_0x3448('0x1d')][_0x3448('0x103')](db[_0x3448('0x70')],{'as':_0x3448('0x107'),'foreignKey':_0x3448('0x140')});db[_0x3448('0x1d')][_0x3448('0x103')](db[_0x3448('0x72')],{'as':_0x3448('0x141'),'foreignKey':_0x3448('0x140')});db[_0x3448('0x1d')][_0x3448('0x103')](db[_0x3448('0x74')],{'as':_0x3448('0x74'),'foreignKey':_0x3448('0x140')});db['VoiceQueue']['hasMany'](db[_0x3448('0x6f')],{'as':'HopperBlacks','foreignKey':_0x3448('0x140')});db[_0x3448('0x1d')][_0x3448('0x103')](db[_0x3448('0x142')],{'as':_0x3448('0x143'),'foreignKey':_0x3448('0x140')});db[_0x3448('0x1d')][_0x3448('0x112')](db[_0x3448('0x2c')],{'as':_0x3448('0x2c'),'foreignKey':_0x3448('0x144')});db[_0x3448('0x1d')]['belongsTo'](db['Trunk'],{'as':_0x3448('0x145'),'foreignKey':_0x3448('0x146')});db[_0x3448('0x1d')][_0x3448('0x112')](db[_0x3448('0x147')],{'as':'Interval','foreignKey':_0x3448('0x148')});db[_0x3448('0x1d')][_0x3448('0x112')](db[_0x3448('0x7e')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x3448('0x1d')]['belongsToMany'](db[_0x3448('0xe7')],{'as':'Lists','through':_0x3448('0x149')});db[_0x3448('0x1d')]['belongsToMany'](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x121')});db[_0x3448('0x1d')][_0x3448('0x115')](db[_0x3448('0xd5')],{'as':_0x3448('0x14b'),'through':_0x3448('0xfe')});db[_0x3448('0x1d')][_0x3448('0x115')](db[_0x3448('0xe7')],{'as':_0x3448('0x14c'),'through':'voice_queues_has_cm_blacklists'});db[_0x3448('0x1f')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':'User','foreignKey':'UserId'});db[_0x3448('0x20')][_0x3448('0x112')](db['User'],{'as':'User','foreignKey':'UserId'});db[_0x3448('0x21')][_0x3448('0x103')](db['VoiceMailMessage'],{'as':_0x3448('0x14d'),'onDelete':'cascade','foreignKey':_0x3448('0x14e'),'sourceKey':_0x3448('0x14f')});db['VoiceMailMessage'][_0x3448('0x112')](db['VoiceMail'],{'foreignKey':'mailboxuser','targetKey':_0x3448('0x14f')});db[_0x3448('0x25')][_0x3448('0x103')](db[_0x3448('0x2a')],{'as':_0x3448('0x150'),'foreignKey':_0x3448('0x151'),'constraints':![]});db[_0x3448('0x25')][_0x3448('0x103')](db['VoiceAgentReport'],{'as':_0x3448('0x152'),'foreignKey':_0x3448('0x151'),'constraints':![]});db[_0x3448('0x25')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x13'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x25')][_0x3448('0x112')](db[_0x3448('0x117')],{'as':'Contact','foreignKey':_0x3448('0x153')});db[_0x3448('0x3a')][_0x3448('0x112')](db['MailAccount'],{'as':_0x3448('0x3c'),'foreignKey':'MailAccountId'});db['MailServerOut'][_0x3448('0x112')](db[_0x3448('0x3c')],{'as':_0x3448('0x3c'),'foreignKey':_0x3448('0x154')});db[_0x3448('0x3c')][_0x3448('0x155')](db[_0x3448('0x3a')],{'as':_0x3448('0x156'),'onDelete':_0x3448('0x101')});db[_0x3448('0x3c')][_0x3448('0x155')](db['MailServerOut'],{'as':_0x3448('0x157'),'onDelete':_0x3448('0x101')});db[_0x3448('0x3c')][_0x3448('0x103')](db['Disposition'],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x154'),'onDelete':'cascade'});db['MailAccount'][_0x3448('0x103')](db[_0x3448('0x7b')],{'as':'Answers','foreignKey':'MailAccountId'});db[_0x3448('0x3c')][_0x3448('0x103')](db[_0x3448('0x43')],{'as':_0x3448('0x14d'),'foreignKey':_0x3448('0x154')});db[_0x3448('0x3c')][_0x3448('0x103')](db[_0x3448('0x41')],{'as':'Interactions'});db[_0x3448('0x3c')][_0x3448('0x103')](db[_0x3448('0x44')],{'as':'Applications'});db['MailAccount'][_0x3448('0x112')](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db[_0x3448('0x3c')]['belongsTo'](db[_0x3448('0x15b')],{'as':_0x3448('0x15b'),'foreignKey':_0x3448('0x15c')});db[_0x3448('0x3c')][_0x3448('0x112')](db[_0x3448('0x7e')],{'as':'mandatoryDispositionPause','foreignKey':_0x3448('0x15d')});db[_0x3448('0x3c')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x130')});db['MailQueue'][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':'UserMailQueue'});db[_0x3448('0x3d')][_0x3448('0x115')](db[_0x3448('0xd5')],{'through':'team_has_mail_queues','as':_0x3448('0x14b')});db[_0x3448('0x41')][_0x3448('0x103')](db[_0x3448('0x43')],{'as':'Messages','onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x15e')});db[_0x3448('0x41')]['belongsTo'](db[_0x3448('0x3c')],{'as':_0x3448('0x15f'),'foreignKey':'MailAccountId'});db['MailInteraction'][_0x3448('0x112')](db[_0x3448('0x117')],{'as':'Contact','foreignKey':_0x3448('0x153')});db['MailInteraction']['belongsTo'](db['User'],{'as':_0x3448('0x160'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x41')]['belongsToMany'](db[_0x3448('0x87')],{'through':_0x3448('0x161'),'as':'Tags'});db['MailInteraction'][_0x3448('0x115')](db['Tag'],{'through':_0x3448('0x161'),'as':_0x3448('0x162')});db[_0x3448('0x41')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':'Users','through':_0x3448('0x11d'),'foreignKey':_0x3448('0x15e')});db[_0x3448('0x43')][_0x3448('0x103')](db['Attachment'],{'as':'Attachments','onDelete':_0x3448('0x101')});db['MailMessage'][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x13')});db[_0x3448('0x43')][_0x3448('0x112')](db[_0x3448('0x117')],{'onDelete':'cascade','as':_0x3448('0x163')});db[_0x3448('0x43')][_0x3448('0x112')](db[_0x3448('0x41')],{'as':_0x3448('0x164'),'foreignKey':_0x3448('0x15e')});db[_0x3448('0x43')][_0x3448('0x112')](db[_0x3448('0x3c')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x154')});db[_0x3448('0x43')][_0x3448('0x112')](db['ChatWebsite'],{'as':_0x3448('0x12b'),'foreignKey':_0x3448('0x165')});db['MailMessage'][_0x3448('0x112')](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':_0x3448('0x166')});db[_0x3448('0x44')][_0x3448('0x112')](db[_0x3448('0x13')],{'onDelete':_0x3448('0x167')});db['MailApplication'][_0x3448('0x112')](db[_0x3448('0x3d')],{'onDelete':_0x3448('0x167')});db[_0x3448('0x44')][_0x3448('0x112')](db['MailAccount'],{'onDelete':_0x3448('0x167')});db[_0x3448('0x44')]['belongsTo'](db[_0x3448('0x147')],{'onDelete':_0x3448('0x167'),'foreignKey':'IntervalId'});db[_0x3448('0x44')][_0x3448('0x112')](db[_0x3448('0x87')],{'onDelete':_0x3448('0x167'),'foreignKey':'TagId'});db[_0x3448('0x46')][_0x3448('0x112')](db[_0x3448('0x3c')],{});db[_0x3448('0x46')]['belongsTo'](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db['MailQueueReport'][_0x3448('0x112')](db['CmContact'],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153')});db[_0x3448('0x46')][_0x3448('0x112')](db['MailInteraction'],{});db['MailQueueReport'][_0x3448('0x112')](db[_0x3448('0x43')],{});db[_0x3448('0x46')][_0x3448('0x112')](db[_0x3448('0x13')],{});db[_0x3448('0x46')][_0x3448('0x112')](db['MailQueue'],{});db[_0x3448('0x168')][_0x3448('0x103')](db['DashboardItem'],{'as':_0x3448('0x169'),'onDelete':_0x3448('0x101')});db[_0x3448('0x4a')][_0x3448('0x103')](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x16b'),'onDelete':_0x3448('0x101')});db[_0x3448('0x4a')]['hasMany'](db[_0x3448('0x7b')],{'as':_0x3448('0x16c'),'foreignKey':'FaxAccountId'});db[_0x3448('0x4a')]['hasMany'](db[_0x3448('0x4d')],{'as':_0x3448('0x16d')});db[_0x3448('0x4a')][_0x3448('0x103')](db[_0x3448('0x16e')],{'as':_0x3448('0x13b')});db['FaxAccount'][_0x3448('0x103')](db[_0x3448('0x106')],{'as':'Exntensions','onDelete':_0x3448('0x101')});db['FaxAccount'][_0x3448('0x103')](db['FaxMessage'],{'as':'Messages'});db[_0x3448('0x4a')][_0x3448('0x112')](db[_0x3448('0x2c')],{'as':'Trunk'});db['FaxAccount'][_0x3448('0x112')](db[_0x3448('0xe7')],{'as':'List','foreignKey':'ListId'});db[_0x3448('0x4a')]['belongsTo'](db['Pause'],{'as':_0x3448('0x16f'),'foreignKey':_0x3448('0x15d')});db['FaxAccount'][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':'user_has_fax_accounts'});db[_0x3448('0x16e')][_0x3448('0x112')](db['User'],{'onDelete':_0x3448('0x167')});db[_0x3448('0x16e')][_0x3448('0x112')](db[_0x3448('0x50')],{'onDelete':_0x3448('0x167')});db[_0x3448('0x16e')][_0x3448('0x112')](db[_0x3448('0x4a')],{'onDelete':_0x3448('0x167')});db[_0x3448('0x16e')][_0x3448('0x112')](db[_0x3448('0x87')],{'onDelete':_0x3448('0x167'),'foreignKey':_0x3448('0x170')});db[_0x3448('0x4d')][_0x3448('0x103')](db[_0x3448('0x4e')],{'as':_0x3448('0x14d'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x171')});db['FaxInteraction']['belongsTo'](db['FaxAccount'],{'as':'Account','foreignKey':'FaxAccountId'});db[_0x3448('0x4d')][_0x3448('0x112')](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153')});db['FaxInteraction'][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x160'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x4d')][_0x3448('0x115')](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x3448('0x172')});db['FaxInteraction'][_0x3448('0x115')](db[_0x3448('0x87')],{'through':_0x3448('0x173'),'as':'ThroughTags'});db[_0x3448('0x4d')]['belongsToMany'](db[_0x3448('0x13')],{'as':'Users','through':_0x3448('0x174'),'foreignKey':_0x3448('0x171')});db[_0x3448('0x4e')][_0x3448('0x112')](db['User'],{'onDelete':'cascade','as':_0x3448('0x13')});db[_0x3448('0x4e')]['belongsTo'](db[_0x3448('0x4d')],{'as':_0x3448('0x164'),'foreignKey':_0x3448('0x171')});db[_0x3448('0x4e')]['belongsTo'](db[_0x3448('0x117')],{'onDelete':'cascade','as':_0x3448('0x163')});db['FaxMessage'][_0x3448('0x112')](db[_0x3448('0xdd')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x3448('0x4e')][_0x3448('0x112')](db[_0x3448('0x4a')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x16b')});db[_0x3448('0x50')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':'Agents','through':_0x3448('0x32')});db['FaxQueue'][_0x3448('0x115')](db[_0x3448('0xd5')],{'through':_0x3448('0x175'),'as':_0x3448('0x14b')});db['FaxQueueReport'][_0x3448('0x112')](db['FaxAccount'],{});db['FaxQueueReport']['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0x3448('0x15a')});db[_0x3448('0x176')][_0x3448('0x112')](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153')});db[_0x3448('0x176')]['belongsTo'](db['FaxInteraction'],{});db[_0x3448('0x176')][_0x3448('0x112')](db['FaxMessage'],{});db[_0x3448('0x176')][_0x3448('0x112')](db[_0x3448('0x13')],{});db[_0x3448('0x176')][_0x3448('0x112')](db[_0x3448('0x50')],{});db[_0x3448('0x52')]['hasMany'](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x177'),'onDelete':_0x3448('0x101')});db[_0x3448('0x52')][_0x3448('0x103')](db['CannedAnswer'],{'as':_0x3448('0x16c'),'foreignKey':_0x3448('0x177')});db[_0x3448('0x52')][_0x3448('0x103')](db[_0x3448('0x56')],{'as':_0x3448('0x14d'),'foreignKey':_0x3448('0x177')});db[_0x3448('0x52')]['hasMany'](db['SmsInteraction'],{'as':_0x3448('0x16d')});db[_0x3448('0x52')][_0x3448('0x103')](db['SmsApplication'],{'as':_0x3448('0x13b')});db[_0x3448('0x52')]['belongsTo'](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db['SmsAccount'][_0x3448('0x112')](db[_0x3448('0x7e')],{'as':_0x3448('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x3448('0x52')]['belongsToMany'](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':'user_has_sms_accounts'});db[_0x3448('0x54')][_0x3448('0x112')](db[_0x3448('0x13')],{'onDelete':_0x3448('0x167')});db[_0x3448('0x54')][_0x3448('0x112')](db[_0x3448('0x58')],{'onDelete':_0x3448('0x167')});db[_0x3448('0x54')][_0x3448('0x112')](db['SmsAccount'],{'onDelete':'restrict'});db[_0x3448('0x54')][_0x3448('0x112')](db[_0x3448('0x147')],{'onDelete':_0x3448('0x167'),'foreignKey':_0x3448('0x148')});db['SmsApplication'][_0x3448('0x112')](db[_0x3448('0x87')],{'onDelete':_0x3448('0x167'),'foreignKey':'TagId'});db[_0x3448('0x10b')][_0x3448('0x103')](db[_0x3448('0x56')],{'as':_0x3448('0x14d'),'onDelete':'cascade','foreignKey':'SmsInteractionId'});db[_0x3448('0x10b')][_0x3448('0x112')](db[_0x3448('0x52')],{'as':'Account','foreignKey':_0x3448('0x177')});db['SmsInteraction'][_0x3448('0x112')](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':'ContactId'});db[_0x3448('0x10b')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x160'),'foreignKey':'UserId'});db[_0x3448('0x10b')][_0x3448('0x115')](db[_0x3448('0x87')],{'through':'sms_interaction_has_tags','as':_0x3448('0x172')});db[_0x3448('0x10b')]['belongsToMany'](db[_0x3448('0x87')],{'through':_0x3448('0x178'),'as':_0x3448('0x162')});db[_0x3448('0x10b')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x179'),'through':_0x3448('0x11f'),'foreignKey':'SmsInteractionId'});db[_0x3448('0x56')][_0x3448('0x112')](db['User'],{'as':_0x3448('0x13')});db[_0x3448('0x56')][_0x3448('0x112')](db[_0x3448('0x117')],{'onDelete':_0x3448('0x101'),'as':_0x3448('0x163')});db[_0x3448('0x56')][_0x3448('0x112')](db[_0x3448('0x10b')],{'onDelete':'cascade','as':_0x3448('0x164'),'foreignKey':_0x3448('0x17a')});db['SmsMessage'][_0x3448('0x112')](db[_0x3448('0x52')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x177')});db[_0x3448('0x58')]['belongsToMany'](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x34'),'foreignKey':'SmsQueueId'});db[_0x3448('0x58')][_0x3448('0x115')](db[_0x3448('0xd5')],{'through':_0x3448('0x17b'),'as':_0x3448('0x14b')});db[_0x3448('0x59')][_0x3448('0x103')](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x17c'),'onDelete':_0x3448('0x101')});db[_0x3448('0x59')][_0x3448('0x103')](db[_0x3448('0x7b')],{'as':_0x3448('0x16c'),'foreignKey':'OpenchannelAccountId'});db[_0x3448('0x59')]['hasMany'](db[_0x3448('0x5c')],{'as':_0x3448('0x16d'),'foreignKey':_0x3448('0x17c')});db[_0x3448('0x59')][_0x3448('0x103')](db[_0x3448('0x17d')],{'as':_0x3448('0x14d'),'foreignKey':_0x3448('0x17c')});db[_0x3448('0x59')]['hasMany'](db[_0x3448('0x17e')],{'as':_0x3448('0x13b'),'foreignKey':'OpenchannelAccountId'});db[_0x3448('0x59')][_0x3448('0x112')](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db['OpenchannelAccount'][_0x3448('0x112')](db['Pause'],{'as':_0x3448('0x16f'),'foreignKey':_0x3448('0x15d')});db[_0x3448('0x59')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x132')});db[_0x3448('0x17e')][_0x3448('0x112')](db['User'],{'onDelete':_0x3448('0x167')});db['OpenchannelApplication'][_0x3448('0x112')](db[_0x3448('0x128')],{'onDelete':_0x3448('0x167'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelApplication']['belongsTo'](db['OpenchannelAccount'],{'onDelete':_0x3448('0x167'),'foreignKey':'OpenchannelAccountId'});db[_0x3448('0x17e')]['belongsTo'](db['Interval'],{'onDelete':_0x3448('0x167'),'foreignKey':_0x3448('0x148')});db[_0x3448('0x17e')][_0x3448('0x112')](db[_0x3448('0x87')],{'onDelete':'restrict','foreignKey':_0x3448('0x170')});db[_0x3448('0x5c')][_0x3448('0x103')](db[_0x3448('0x17d')],{'as':'Messages','onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x17f')});db[_0x3448('0x5c')][_0x3448('0x112')](db['OpenchannelAccount'],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x17c')});db[_0x3448('0x5c')]['belongsTo'](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0x3448('0x5c')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x160'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x5c')][_0x3448('0x115')](db['Tag'],{'through':_0x3448('0x180'),'as':_0x3448('0x172')});db[_0x3448('0x5c')]['belongsToMany'](db[_0x3448('0x87')],{'through':'openchannel_interaction_has_tags','as':_0x3448('0x162')});db[_0x3448('0x5c')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':'Users','through':_0x3448('0x120'),'foreignKey':'OpenchannelInteractionId'});db[_0x3448('0x17d')]['belongsTo'](db[_0x3448('0x13')],{'onDelete':_0x3448('0x101'),'as':_0x3448('0x13')});db[_0x3448('0x17d')]['belongsTo'](db[_0x3448('0x117')],{'onDelete':'cascade','as':_0x3448('0x163')});db[_0x3448('0x17d')]['belongsTo'](db['OpenchannelInteraction'],{'onDelete':'cascade','as':_0x3448('0x164'),'foreignKey':_0x3448('0x17f')});db[_0x3448('0x17d')][_0x3448('0x112')](db[_0x3448('0xdd')],{'as':_0x3448('0xdd'),'foreignKey':_0x3448('0x181')});db[_0x3448('0x17d')][_0x3448('0x112')](db[_0x3448('0x59')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x17c')});db[_0x3448('0x128')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':'UserOpenchannelQueue','foreignKey':_0x3448('0x182')});db['OpenchannelQueue']['belongsToMany'](db[_0x3448('0xd5')],{'through':_0x3448('0x183'),'as':'Teams'});db[_0x3448('0x12b')][_0x3448('0x103')](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':'ChatWebsiteId','onDelete':_0x3448('0x101')});db['ChatWebsite'][_0x3448('0x103')](db[_0x3448('0x7b')],{'as':_0x3448('0x16c'),'foreignKey':_0x3448('0x165')});db[_0x3448('0x12b')]['hasMany'](db['ChatProactiveAction'],{'as':_0x3448('0x184')});db[_0x3448('0x12b')][_0x3448('0x103')](db[_0x3448('0x62')],{'as':'Interactions'});db[_0x3448('0x12b')]['hasMany'](db['ChatApplication'],{'as':_0x3448('0x13b')});db[_0x3448('0x12b')][_0x3448('0x103')](db[_0x3448('0x185')],{'as':_0x3448('0x14d')});db[_0x3448('0x12b')][_0x3448('0x112')](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':'ListId'});db['ChatWebsite'][_0x3448('0x112')](db['Interval'],{'as':_0x3448('0x147'),'foreignKey':_0x3448('0x148')});db[_0x3448('0x12b')][_0x3448('0x112')](db[_0x3448('0x3c')],{'as':_0x3448('0x3c'),'foreignKey':_0x3448('0x154')});db['ChatWebsite']['belongsTo'](db[_0x3448('0x7e')],{'as':_0x3448('0x16f'),'foreignKey':_0x3448('0x15d')});db[_0x3448('0x12b')][_0x3448('0x115')](db['User'],{'as':_0x3448('0x14a'),'through':_0x3448('0x186')});db[_0x3448('0x5f')][_0x3448('0x112')](db[_0x3448('0x59')],{});db[_0x3448('0x5f')][_0x3448('0x112')](db['CmList'],{'as':_0x3448('0x159'),'foreignKey':'ListId'});db[_0x3448('0x5f')]['belongsTo'](db[_0x3448('0x117')],{'as':'Contact','foreignKey':_0x3448('0x153')});db[_0x3448('0x5f')]['belongsTo'](db['OpenchannelInteraction'],{});db[_0x3448('0x5f')][_0x3448('0x112')](db['OpenchannelMessage'],{});db['OpenchannelQueueReport'][_0x3448('0x112')](db[_0x3448('0x13')],{});db[_0x3448('0x5f')][_0x3448('0x112')](db[_0x3448('0x128')],{});db[_0x3448('0x187')][_0x3448('0x112')](db['User'],{'as':_0x3448('0x188'),'foreignKey':_0x3448('0x102'),'onDelete':_0x3448('0x167')});db['ChatApplication'][_0x3448('0x112')](db[_0x3448('0x66')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':'restrict'});db[_0x3448('0x187')][_0x3448('0x112')](db['ChatWebsite'],{'as':_0x3448('0x189'),'foreignKey':_0x3448('0x165'),'onDelete':_0x3448('0x167')});db[_0x3448('0x187')]['belongsTo'](db[_0x3448('0x87')],{'onDelete':_0x3448('0x167'),'foreignKey':'TagId'});db['ChatInteraction'][_0x3448('0x103')](db['ChatMessage'],{'as':_0x3448('0x14d'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x18a')});db[_0x3448('0x62')][_0x3448('0x112')](db[_0x3448('0x12b')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x165')});db['ChatInteraction']['belongsTo'](db[_0x3448('0x117')],{'as':'Contact','foreignKey':'ContactId'});db[_0x3448('0x62')]['belongsTo'](db[_0x3448('0x13')],{'as':'Owner','foreignKey':_0x3448('0x102')});db[_0x3448('0x62')]['belongsToMany'](db[_0x3448('0x87')],{'through':'chat_interaction_has_tags','as':'Tags'});db['ChatInteraction'][_0x3448('0x115')](db[_0x3448('0x87')],{'through':_0x3448('0x18b'),'as':_0x3448('0x162')});db['ChatInteraction'][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x179'),'through':_0x3448('0x11e'),'foreignKey':_0x3448('0x18a')});db[_0x3448('0x185')]['belongsTo'](db[_0x3448('0x13')],{'onDelete':_0x3448('0x101'),'as':_0x3448('0x13')});db['ChatMessage'][_0x3448('0x112')](db[_0x3448('0x117')],{'onDelete':'cascade','as':'Contact','foreignKey':'ContactId'});db[_0x3448('0x185')]['belongsTo'](db[_0x3448('0x62')],{'onDelete':_0x3448('0x101'),'as':_0x3448('0x164'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0x3448('0x112')](db[_0x3448('0xdd')],{'as':_0x3448('0xdd'),'foreignKey':_0x3448('0x181')});db['ChatMessage'][_0x3448('0x112')](db[_0x3448('0x12b')],{'as':_0x3448('0x15f'),'foreignKey':'ChatWebsiteId'});db[_0x3448('0x64')][_0x3448('0x103')](db[_0x3448('0xdd')],{'as':'Attachments','foreignKey':'ChatOfflineMessageId','onDelete':_0x3448('0x101'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x3448('0x101'),'as':'Contact','foreignKey':'ContactId'});db[_0x3448('0x64')][_0x3448('0x112')](db[_0x3448('0x12b')],{'as':'Account','foreignKey':_0x3448('0x165')});db['ChatQueue'][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x18c'),'hooks':!![]});db[_0x3448('0x66')][_0x3448('0x115')](db[_0x3448('0xd5')],{'through':_0x3448('0x18d'),'as':_0x3448('0x14b')});db[_0x3448('0x68')][_0x3448('0x103')](db[_0x3448('0xc2')],{'as':'Messages','foreignKey':'ChatGroupId','onDelete':'cascade'});db[_0x3448('0x68')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x13e'),'through':'chat_group_has_users'});db[_0x3448('0x69')]['belongsTo'](db['ChatWebsite'],{'as':'Website','foreignKey':_0x3448('0x165')});db[_0x3448('0x6b')]['hasMany'](db[_0x3448('0x117')],{'as':_0x3448('0x118'),'foreignKey':_0x3448('0x18e')});db[_0x3448('0x117')]['hasMany'](db['CmHopper'],{'as':'Hoppers','foreignKey':'ContactId'});db['CmContact'][_0x3448('0x103')](db['CmHopperFinal'],{'as':_0x3448('0x107'),'foreignKey':_0x3448('0x153')});db[_0x3448('0x117')]['hasMany'](db[_0x3448('0x72')],{'as':_0x3448('0x141'),'foreignKey':_0x3448('0x153')});db['CmContact'][_0x3448('0x103')](db[_0x3448('0x74')],{'as':'ReportAgentPreview','foreignKey':_0x3448('0x153')});db[_0x3448('0x117')][_0x3448('0x103')](db[_0x3448('0x142')],{'as':_0x3448('0x143'),'foreignKey':_0x3448('0x153')});db[_0x3448('0x117')][_0x3448('0x103')](db[_0x3448('0x5c')],{'as':_0x3448('0x109'),'foreignKey':_0x3448('0x153'),'onDelete':_0x3448('0x167')});db[_0x3448('0x117')][_0x3448('0x103')](db[_0x3448('0x62')],{'as':_0x3448('0x10a'),'foreignKey':'ContactId','onDelete':_0x3448('0x167')});db['CmContact'][_0x3448('0x103')](db[_0x3448('0x10b')],{'as':_0x3448('0x10c'),'foreignKey':_0x3448('0x153'),'onDelete':_0x3448('0x167')});db[_0x3448('0x117')][_0x3448('0x103')](db[_0x3448('0x4d')],{'as':'FaxInteractions','foreignKey':_0x3448('0x153'),'onDelete':_0x3448('0x167')});db[_0x3448('0x117')]['hasMany'](db[_0x3448('0x41')],{'as':'MailInteractions','foreignKey':_0x3448('0x153'),'onDelete':'restrict'});db[_0x3448('0x117')]['belongsTo'](db[_0x3448('0x6b')],{'as':_0x3448('0x18f'),'foreignKey':'CompanyId'});db[_0x3448('0x117')][_0x3448('0x112')](db['CmList'],{'as':'List','foreignKey':_0x3448('0x15a'),'onDelete':_0x3448('0x101')});db[_0x3448('0x117')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x179'),'through':_0x3448('0x119')});db[_0x3448('0x117')][_0x3448('0x115')](db[_0x3448('0x87')],{'as':_0x3448('0x172'),'through':'cm_contact_has_tags'});db['CmContact'][_0x3448('0x115')](db['Tag'],{'through':_0x3448('0x190'),'as':_0x3448('0x162')});db['CmHopper'][_0x3448('0x112')](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153'),'onDelete':_0x3448('0x101')});db[_0x3448('0x6e')][_0x3448('0x112')](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a'),'onDelete':_0x3448('0x101')});db[_0x3448('0x6e')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x188'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x6e')][_0x3448('0x112')](db[_0x3448('0x1d')],{'as':_0x3448('0x191'),'foreignKey':_0x3448('0x140'),'onDelete':_0x3448('0x101')});db['CmHopper']['belongsTo'](db[_0x3448('0xd9')],{'as':_0x3448('0xd9'),'foreignKey':_0x3448('0x192'),'onDelete':_0x3448('0x101')});db[_0x3448('0x6e')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x160'),'foreignKey':_0x3448('0x193')});db[_0x3448('0x6f')][_0x3448('0x112')](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153'),'onDelete':_0x3448('0x101')});db[_0x3448('0x6f')]['belongsTo'](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a'),'onDelete':'cascade'});db[_0x3448('0x6f')]['belongsTo'](db[_0x3448('0x1d')],{'as':_0x3448('0x191'),'foreignKey':_0x3448('0x140'),'onDelete':_0x3448('0x101')});db['CmHopperBlack'][_0x3448('0x112')](db[_0x3448('0xd9')],{'as':_0x3448('0xd9'),'foreignKey':_0x3448('0x192'),'onDelete':_0x3448('0x101')});db[_0x3448('0x194')][_0x3448('0x103')](db[_0x3448('0x195')],{'as':{'plural':_0x3448('0x196'),'singular':_0x3448('0x197')},'foreignKey':_0x3448('0x198'),'onDelete':_0x3448('0x101'),'hooks':!![]});db[_0x3448('0x194')]['hasMany'](db[_0x3448('0x195')],{'as':{'plural':'Any','singular':'OneAny'},'foreignKey':_0x3448('0x199'),'onDelete':_0x3448('0x101'),'hooks':!![]});db['Automation'][_0x3448('0x103')](db[_0x3448('0x78')],{'as':_0x3448('0x19a'),'foreignKey':'AutomationId','onDelete':_0x3448('0x101'),'hooks':!![]});db[_0x3448('0x16a')]['hasMany'](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x19b'),'onDelete':'cascade'});db[_0x3448('0x147')][_0x3448('0x103')](db[_0x3448('0x147')],{'as':_0x3448('0x19c'),'foreignKey':_0x3448('0x148'),'onDelete':_0x3448('0x101'),'hooks':!![],'required':![]});db[_0x3448('0x147')][_0x3448('0x103')](db[_0x3448('0x106')],{'as':_0x3448('0x19d'),'foreignKey':_0x3448('0x148'),'onDelete':'restrict'});db[_0x3448('0x147')][_0x3448('0x103')](db[_0x3448('0x44')],{'as':_0x3448('0x19e'),'foreignKey':_0x3448('0x148')});db[_0x3448('0x147')][_0x3448('0x103')](db[_0x3448('0x187')],{'as':_0x3448('0x19f'),'foreignKey':_0x3448('0x148')});db[_0x3448('0x147')][_0x3448('0x103')](db['FaxApplication'],{'as':'FaxApplications','foreignKey':_0x3448('0x148')});db['Interval']['hasMany'](db['SmsApplication'],{'as':_0x3448('0x1a0'),'foreignKey':'IntervalId'});db['Schedule']['belongsTo'](db[_0x3448('0x3c')],{});db[_0x3448('0x83')][_0x3448('0x112')](db[_0x3448('0x1a1')],{'foreignKey':_0x3448('0x1a2')});db[_0x3448('0x83')][_0x3448('0x112')](db[_0x3448('0x8f')],{'foreignKey':_0x3448('0x1a3')});db[_0x3448('0x85')][_0x3448('0x115')](db[_0x3448('0x1b')],{'as':_0x3448('0x1a4'),'through':'moh_has_sounds','onDelete':_0x3448('0x167')});db[_0x3448('0x87')][_0x3448('0x115')](db['CmContact'],{'through':_0x3448('0x190')});db['Tag'][_0x3448('0x115')](db[_0x3448('0x62')],{'through':_0x3448('0x18b')});db['Tag'][_0x3448('0x115')](db['MailInteraction'],{'through':_0x3448('0x161')});db[_0x3448('0x87')][_0x3448('0x115')](db[_0x3448('0x10b')],{'through':_0x3448('0x178')});db[_0x3448('0x87')]['belongsToMany'](db['FaxInteraction'],{'through':_0x3448('0x173')});db[_0x3448('0x87')][_0x3448('0x115')](db[_0x3448('0x5c')],{'through':_0x3448('0x180')});db[_0x3448('0x87')][_0x3448('0x115')](db[_0x3448('0x10f')],{'through':_0x3448('0x1a5')});db[_0x3448('0x1a6')][_0x3448('0x103')](db[_0x3448('0x195')],{'as':{'plural':_0x3448('0x1a7'),'singular':_0x3448('0x1a8')},'foreignKey':_0x3448('0x1a9'),'onDelete':'cascade','hooks':!![]});db['Trigger'][_0x3448('0x103')](db[_0x3448('0x195')],{'as':{'plural':_0x3448('0x1aa'),'singular':_0x3448('0x1ab')},'foreignKey':'TriggerAnyId','onDelete':_0x3448('0x101'),'hooks':!![]});db['Trigger'][_0x3448('0x103')](db[_0x3448('0x78')],{'as':'Actions','foreignKey':_0x3448('0x1ac'),'onDelete':_0x3448('0x101'),'hooks':!![]});db[_0x3448('0x8f')][_0x3448('0x103')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1a3'),'hooks':!![]});db[_0x3448('0x1a1')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x3448('0x1ad'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1a2')});db[_0x3448('0x94')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x3448('0x1ad'),'onDelete':'cascade','foreignKey':'MetricId'});db[_0x3448('0x96')][_0x3448('0x112')](db['AnalyticMetric'],{'foreignKey':_0x3448('0x1ae')});db['SalesforceAccount']['hasMany'](db['SalesforceConfiguration'],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db['SalesforceConfiguration'][_0x3448('0x103')](db[_0x3448('0x9c')],{'as':_0x3448('0x1b1'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b2')});db[_0x3448('0x1b3')][_0x3448('0x103')](db[_0x3448('0x9c')],{'as':_0x3448('0x1b4'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b5')});db['SalesforceConfiguration'][_0x3448('0x103')](db[_0x3448('0x9c')],{'as':_0x3448('0x1ad'),'onDelete':'cascade','foreignKey':'FieldId'});db['SalesforceConfiguration'][_0x3448('0x112')](db[_0x3448('0x99')],{'as':'Account','foreignKey':_0x3448('0x1b0')});db[_0x3448('0x9c')]['hasMany'](db[_0x3448('0x9c')],{'as':'Subject','foreignKey':_0x3448('0x1b2')});db[_0x3448('0x9c')][_0x3448('0x103')](db[_0x3448('0x9c')],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db['SalesforceField'][_0x3448('0x103')](db[_0x3448('0x9c')],{'as':_0x3448('0x1b7'),'foreignKey':_0x3448('0x1b8')});db['SalesforceField'][_0x3448('0x112')](db[_0x3448('0x1b9')],{'as':'Variable','foreignKey':_0x3448('0x1ba')});db['SugarcrmAccount'][_0x3448('0x103')](db[_0x3448('0x1bb')],{'as':_0x3448('0x1af'),'onDelete':'cascade','foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1bb')][_0x3448('0x103')](db[_0x3448('0x1bc')],{'as':'Subjects','onDelete':_0x3448('0x101'),'foreignKey':'SubjectId'});db[_0x3448('0x1bb')][_0x3448('0x103')](db['SugarcrmField'],{'as':_0x3448('0x1b4'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x3448('0x1bb')][_0x3448('0x103')](db['SugarcrmField'],{'as':'Fields','onDelete':'cascade','foreignKey':_0x3448('0x1b8')});db[_0x3448('0x1bb')][_0x3448('0x112')](db[_0x3448('0x1bd')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db['SugarcrmField'][_0x3448('0x103')](db[_0x3448('0x1bc')],{'as':'Subject','foreignKey':_0x3448('0x1b2')});db['SugarcrmField'][_0x3448('0x103')](db[_0x3448('0x1bc')],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0x1bc')][_0x3448('0x103')](db[_0x3448('0x1bc')],{'as':_0x3448('0x1b7'),'foreignKey':'FieldId'});db['SugarcrmField'][_0x3448('0x112')](db[_0x3448('0x1b9')],{'as':_0x3448('0x1b9'),'foreignKey':'VariableId'});db[_0x3448('0xa0')][_0x3448('0x103')](db[_0x3448('0xa1')],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0xa1')][_0x3448('0x103')](db[_0x3448('0xa2')],{'as':_0x3448('0x1b1'),'onDelete':'cascade','foreignKey':_0x3448('0x1b2')});db[_0x3448('0xa1')][_0x3448('0x103')](db['DeskField'],{'as':_0x3448('0x1b4'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0xa1')]['hasMany'](db['DeskField'],{'as':_0x3448('0x1ad'),'onDelete':_0x3448('0x101'),'foreignKey':'FieldId'});db[_0x3448('0xa1')][_0x3448('0x112')](db[_0x3448('0xa0')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db['DeskConfiguration'][_0x3448('0x115')](db[_0x3448('0x87')],{'through':_0x3448('0x1be')});db[_0x3448('0xa2')][_0x3448('0x103')](db[_0x3448('0xa2')],{'as':_0x3448('0x1bf'),'foreignKey':'SubjectId'});db['DeskField']['hasMany'](db[_0x3448('0xa2')],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0xa2')][_0x3448('0x103')](db[_0x3448('0xa2')],{'as':_0x3448('0x1b7'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0xa2')]['belongsTo'](db[_0x3448('0x1b9')],{'as':_0x3448('0x1b9'),'foreignKey':'VariableId'});db[_0x3448('0xa4')][_0x3448('0x103')](db[_0x3448('0xa6')],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0xa6')][_0x3448('0x103')](db['ZohoField'],{'as':_0x3448('0x1b1'),'onDelete':_0x3448('0x101'),'foreignKey':'SubjectId'});db['ZohoConfiguration'][_0x3448('0x103')](db[_0x3448('0x1c0')],{'as':_0x3448('0x1b4'),'onDelete':'cascade','foreignKey':_0x3448('0x1b5')});db[_0x3448('0xa6')]['hasMany'](db[_0x3448('0x1c0')],{'as':_0x3448('0x1ad'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0xa6')][_0x3448('0x112')](db[_0x3448('0xa4')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1c0')][_0x3448('0x103')](db[_0x3448('0x1c0')],{'as':_0x3448('0x1bf'),'foreignKey':'SubjectId'});db[_0x3448('0x1c0')][_0x3448('0x103')](db['ZohoField'],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0x1c0')][_0x3448('0x103')](db[_0x3448('0x1c0')],{'as':_0x3448('0x1b7'),'foreignKey':'FieldId'});db[_0x3448('0x1c0')][_0x3448('0x112')](db[_0x3448('0x1b9')],{'as':_0x3448('0x1b9'),'foreignKey':_0x3448('0x1ba')});db[_0x3448('0xa9')][_0x3448('0x103')](db['ZendeskConfiguration'],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0xab')]['hasMany'](db[_0x3448('0x1c1')],{'as':_0x3448('0x1b1'),'foreignKey':_0x3448('0x1b2')});db[_0x3448('0xab')][_0x3448('0x103')](db['ZendeskField'],{'as':_0x3448('0x1b4'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0xab')]['hasMany'](db[_0x3448('0x1c1')],{'as':_0x3448('0x1ad'),'foreignKey':'FieldId'});db[_0x3448('0xab')][_0x3448('0x112')](db['ZendeskAccount'],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db['ZendeskConfiguration'][_0x3448('0x115')](db[_0x3448('0x87')],{'through':_0x3448('0x1c2')});db[_0x3448('0x1c1')][_0x3448('0x103')](db[_0x3448('0x1c1')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x3448('0x1c1')][_0x3448('0x103')](db[_0x3448('0x1c1')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x3448('0x1c1')][_0x3448('0x103')](db[_0x3448('0x1c1')],{'as':_0x3448('0x1b7'),'foreignKey':_0x3448('0x1b8')});db['ZendeskField'][_0x3448('0x112')](db['Variable'],{'as':_0x3448('0x1b9'),'foreignKey':'VariableId'});db['FreshdeskAccount'][_0x3448('0x103')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0xaf')]['hasMany'](db['FreshdeskField'],{'as':_0x3448('0x1b1'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b2')});db[_0x3448('0xaf')]['hasMany'](db['FreshdeskField'],{'as':_0x3448('0x1b4'),'onDelete':'cascade','foreignKey':_0x3448('0x1b5')});db[_0x3448('0xaf')][_0x3448('0x103')](db[_0x3448('0xb1')],{'as':_0x3448('0x1ad'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0xaf')]['belongsTo'](db['FreshdeskAccount'],{'as':_0x3448('0x15f'),'foreignKey':'AccountId'});db[_0x3448('0xaf')][_0x3448('0x115')](db[_0x3448('0x87')],{'through':_0x3448('0x1c3')});db[_0x3448('0xb1')][_0x3448('0x103')](db['FreshdeskField'],{'as':_0x3448('0x1bf'),'foreignKey':'SubjectId'});db[_0x3448('0xb1')][_0x3448('0x103')](db[_0x3448('0xb1')],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0xb1')]['hasMany'](db[_0x3448('0xb1')],{'as':_0x3448('0x1b7'),'foreignKey':'FieldId'});db[_0x3448('0xb1')]['belongsTo'](db[_0x3448('0x1b9')],{'as':_0x3448('0x1b9'),'foreignKey':_0x3448('0x1ba')});db[_0x3448('0xb3')][_0x3448('0x103')](db['VtigerConfiguration'],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1c4')][_0x3448('0x103')](db[_0x3448('0x1c5')],{'as':_0x3448('0x1b1'),'foreignKey':_0x3448('0x1b2')});db['VtigerConfiguration'][_0x3448('0x103')](db['VtigerField'],{'as':'Descriptions','foreignKey':_0x3448('0x1b5')});db[_0x3448('0x1c4')][_0x3448('0x103')](db[_0x3448('0x1c5')],{'as':_0x3448('0x1ad'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0x1c4')][_0x3448('0x112')](db[_0x3448('0xb3')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1c5')][_0x3448('0x103')](db['VtigerField'],{'as':_0x3448('0x1bf'),'foreignKey':_0x3448('0x1b2')});db['VtigerField']['hasMany'](db[_0x3448('0x1c5')],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0x1c5')][_0x3448('0x103')](db[_0x3448('0x1c5')],{'as':'Field','foreignKey':_0x3448('0x1b8')});db[_0x3448('0x1c5')][_0x3448('0x112')](db[_0x3448('0x1b9')],{'as':'Variable','foreignKey':'VariableId'});db['ServicenowAccount'][_0x3448('0x103')](db[_0x3448('0xb8')],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0xb8')]['hasMany'](db['ServicenowField'],{'as':_0x3448('0x1b1'),'foreignKey':'SubjectId'});db['ServicenowConfiguration'][_0x3448('0x103')](db[_0x3448('0xb9')],{'as':'Descriptions','foreignKey':_0x3448('0x1b5')});db['ServicenowConfiguration'][_0x3448('0x103')](db[_0x3448('0xb9')],{'as':_0x3448('0x1ad'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0xb8')][_0x3448('0x112')](db[_0x3448('0xb7')],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0xb9')]['hasMany'](db[_0x3448('0xb9')],{'as':_0x3448('0x1bf'),'foreignKey':_0x3448('0x1b2')});db['ServicenowField'][_0x3448('0x103')](db[_0x3448('0xb9')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x3448('0xb9')][_0x3448('0x103')](db[_0x3448('0xb9')],{'as':'Field','foreignKey':_0x3448('0x1b8')});db[_0x3448('0xb9')][_0x3448('0x112')](db['Variable'],{'as':_0x3448('0x1b9'),'foreignKey':_0x3448('0x1ba')});db[_0x3448('0x1c6')][_0x3448('0x103')](db[_0x3448('0x1c7')],{'as':_0x3448('0x1af'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1c7')]['hasMany'](db[_0x3448('0x1c8')],{'as':_0x3448('0x1b1'),'onDelete':'cascade','foreignKey':_0x3448('0x1b2')});db['Dynamics365Configuration'][_0x3448('0x103')](db[_0x3448('0x1c8')],{'as':_0x3448('0x1b4'),'onDelete':_0x3448('0x101'),'foreignKey':'DescriptionId'});db[_0x3448('0x1c7')][_0x3448('0x103')](db[_0x3448('0x1c8')],{'as':_0x3448('0x1ad'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0x1c7')][_0x3448('0x112')](db['Dynamics365Account'],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1b0')});db['Dynamics365Field'][_0x3448('0x103')](db[_0x3448('0x1c8')],{'as':_0x3448('0x1bf'),'foreignKey':'SubjectId'});db['Dynamics365Field']['hasMany'](db[_0x3448('0x1c8')],{'as':_0x3448('0x1b6'),'foreignKey':'DescriptionId'});db[_0x3448('0x1c8')][_0x3448('0x103')](db[_0x3448('0x1c8')],{'as':'Field','foreignKey':_0x3448('0x1b8')});db[_0x3448('0x1c8')][_0x3448('0x112')](db[_0x3448('0x1b9')],{'as':'Variable','foreignKey':'VariableId'});db['FreshsalesAccount'][_0x3448('0x103')](db[_0x3448('0x1c9')],{'as':'Configurations','onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1c9')]['hasMany'](db[_0x3448('0x1ca')],{'as':_0x3448('0x1b1'),'foreignKey':_0x3448('0x1b2')});db[_0x3448('0x1c9')][_0x3448('0x103')](db['FreshsalesField'],{'as':_0x3448('0x1b4'),'foreignKey':'DescriptionId'});db['FreshsalesConfiguration'][_0x3448('0x103')](db['FreshsalesField'],{'as':'Fields','foreignKey':_0x3448('0x1b8')});db['FreshsalesConfiguration'][_0x3448('0x112')](db[_0x3448('0xbd')],{'as':'Account','foreignKey':_0x3448('0x1b0')});db[_0x3448('0x1ca')][_0x3448('0x103')](db['FreshsalesField'],{'as':_0x3448('0x1bf'),'foreignKey':'SubjectId'});db[_0x3448('0x1ca')][_0x3448('0x103')](db['FreshsalesField'],{'as':_0x3448('0x1b6'),'foreignKey':_0x3448('0x1b5')});db[_0x3448('0x1ca')][_0x3448('0x103')](db[_0x3448('0x1ca')],{'as':_0x3448('0x1b7'),'foreignKey':_0x3448('0x1b8')});db[_0x3448('0x1ca')][_0x3448('0x112')](db[_0x3448('0x1b9')],{'as':_0x3448('0x1b9'),'foreignKey':_0x3448('0x1ba')});db[_0x3448('0xc1')][_0x3448('0x112')](db[_0x3448('0x12b')],{});db['ChatQueueReport'][_0x3448('0x112')](db['CmList'],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db['ChatQueueReport']['belongsTo'](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':'ContactId'});db[_0x3448('0xc1')][_0x3448('0x112')](db[_0x3448('0x62')],{});db[_0x3448('0xc1')][_0x3448('0x112')](db[_0x3448('0x185')],{});db[_0x3448('0xc1')][_0x3448('0x112')](db['User'],{});db[_0x3448('0xc1')][_0x3448('0x112')](db['ChatQueue'],{});db['ChatInternalMessage'][_0x3448('0x112')](db[_0x3448('0x13')],{'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1cb')});db[_0x3448('0xc2')][_0x3448('0x112')](db[_0x3448('0x13')],{'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x1cc')});db[_0x3448('0x142')][_0x3448('0x103')](db[_0x3448('0x1cd')],{'foreignKey':_0x3448('0x1ce'),'onDelete':_0x3448('0x101')});db[_0x3448('0x142')][_0x3448('0x103')](db[_0x3448('0x1cf')],{'foreignKey':_0x3448('0x1ce'),'onDelete':_0x3448('0x101')});db[_0x3448('0xc5')][_0x3448('0x112')](db[_0x3448('0x52')],{});db['SmsQueueReport']['belongsTo'](db[_0x3448('0xe7')],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db[_0x3448('0xc5')]['belongsTo'](db['CmContact'],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153')});db[_0x3448('0xc5')][_0x3448('0x112')](db[_0x3448('0x10b')],{});db['SmsQueueReport']['belongsTo'](db['SmsMessage'],{});db[_0x3448('0xc5')][_0x3448('0x112')](db[_0x3448('0x13')],{});db[_0x3448('0xc5')][_0x3448('0x112')](db[_0x3448('0x58')],{});db[_0x3448('0xc9')][_0x3448('0x103')](db[_0x3448('0x142')],{'foreignKey':'ProjectId'});db[_0x3448('0xc9')][_0x3448('0x103')](db[_0x3448('0x1cd')],{'foreignKey':_0x3448('0x1d0')});db['JscriptyProject']['hasMany'](db[_0x3448('0x1cf')],{'foreignKey':'ProjectId'});db[_0x3448('0xcf')]['belongsToMany'](db[_0x3448('0x13')],{'as':'Users','through':_0x3448('0x138')});db[_0x3448('0xd5')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x11c')});db['Team'][_0x3448('0x115')](db['VoiceQueue'],{'through':'TeamVoiceQueue','as':_0x3448('0x1d1')});db[_0x3448('0xd5')][_0x3448('0x115')](db['MailQueue'],{'through':'team_has_mail_queues','as':_0x3448('0x123')});db['Team'][_0x3448('0x115')](db['ChatQueue'],{'through':_0x3448('0x18d'),'as':_0x3448('0x125')});db[_0x3448('0xd5')][_0x3448('0x115')](db[_0x3448('0x50')],{'through':'team_has_fax_queues','as':'FaxQueues'});db['Team']['belongsToMany'](db[_0x3448('0x58')],{'through':_0x3448('0x17b'),'as':_0x3448('0x127')});db[_0x3448('0xd5')][_0x3448('0x115')](db[_0x3448('0x128')],{'through':_0x3448('0x183'),'as':_0x3448('0x129')});db[_0x3448('0xd5')][_0x3448('0x115')](db[_0x3448('0xfa')],{'through':_0x3448('0x1d2'),'as':_0x3448('0x12a')});db['Team'][_0x3448('0x115')](db[_0x3448('0xe9')],{'through':_0x3448('0x1d3'),'as':_0x3448('0x122')});db['Campaign'][_0x3448('0x103')](db[_0x3448('0x6e')],{'as':_0x3448('0x13f'),'foreignKey':_0x3448('0x192')});db[_0x3448('0xd9')]['hasMany'](db['CmHopperFinal'],{'as':_0x3448('0x107'),'foreignKey':_0x3448('0x192')});db[_0x3448('0xd9')][_0x3448('0x103')](db[_0x3448('0x72')],{'as':_0x3448('0x141'),'foreignKey':_0x3448('0x192')});db[_0x3448('0xd9')]['hasMany'](db[_0x3448('0x6f')],{'as':_0x3448('0x1d4'),'foreignKey':_0x3448('0x192')});db[_0x3448('0xd9')]['belongsTo'](db[_0x3448('0x2c')],{'as':'Trunk','foreignKey':_0x3448('0x144')});db['Campaign'][_0x3448('0x112')](db[_0x3448('0x2c')],{'as':_0x3448('0x145'),'foreignKey':_0x3448('0x146')});db[_0x3448('0xd9')]['belongsTo'](db[_0x3448('0x147')],{'as':_0x3448('0x147'),'foreignKey':'IntervalId'});db['Campaign'][_0x3448('0x112')](db[_0x3448('0xcf')],{'as':_0x3448('0xcf'),'foreignKey':'SquareProjectId'});db['Campaign']['belongsToMany'](db['CmList'],{'as':_0x3448('0x11a'),'through':_0x3448('0x1d5')});db['Campaign'][_0x3448('0x115')](db[_0x3448('0xe7')],{'as':'BlackLists','through':'campaigns_has_cm_blacklists'});db['Attachment']['belongsTo'](db[_0x3448('0x64')],{'as':_0x3448('0x64'),'foreignKey':_0x3448('0x166')});db[_0x3448('0x1d6')][_0x3448('0x112')](db[_0x3448('0x43')],{});db[_0x3448('0x1d6')][_0x3448('0x112')](db['MailInteraction'],{});db[_0x3448('0x1d6')]['belongsTo'](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':'FromAccount'});db[_0x3448('0x1d6')][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':'FromUserId','as':_0x3448('0x1d7')});db['MailTransferReport'][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1d8'),'as':_0x3448('0x1d9')});db[_0x3448('0x1d6')][_0x3448('0x112')](db[_0x3448('0x3d')],{'foreignKey':_0x3448('0x1da'),'as':'ToQueue'});db[_0x3448('0x1d6')]['belongsTo'](db[_0x3448('0x3c')],{'foreignKey':_0x3448('0x1db'),'as':'ToAccount'});db[_0x3448('0x1dc')][_0x3448('0x112')](db[_0x3448('0x185')],{});db[_0x3448('0x1dc')][_0x3448('0x112')](db[_0x3448('0x62')],{});db[_0x3448('0x1dc')][_0x3448('0x112')](db[_0x3448('0x12b')],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db[_0x3448('0x1dc')]['belongsTo'](db['User'],{'foreignKey':_0x3448('0x1dd'),'as':'FromAgent'});db[_0x3448('0x1dc')][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x3448('0x1dc')][_0x3448('0x112')](db[_0x3448('0x66')],{'foreignKey':_0x3448('0x1de'),'as':'ToQueue'});db[_0x3448('0x1dc')][_0x3448('0x112')](db['ChatWebsite'],{'foreignKey':_0x3448('0x1df'),'as':_0x3448('0x1e0')});db['FaxTransferReport'][_0x3448('0x112')](db[_0x3448('0x4e')],{});db[_0x3448('0xe2')][_0x3448('0x112')](db['FaxInteraction'],{});db['FaxTransferReport'][_0x3448('0x112')](db['FaxAccount'],{'foreignKey':_0x3448('0x1e1'),'as':_0x3448('0x1e2')});db[_0x3448('0xe2')][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':'FromUserId','as':_0x3448('0x1d7')});db[_0x3448('0xe2')]['belongsTo'](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1d8'),'as':_0x3448('0x1d9')});db[_0x3448('0xe2')][_0x3448('0x112')](db[_0x3448('0x50')],{'foreignKey':_0x3448('0x1e3'),'as':_0x3448('0x1e4')});db[_0x3448('0xe2')][_0x3448('0x112')](db['FaxAccount'],{'foreignKey':_0x3448('0x1e5'),'as':'ToAccount'});db[_0x3448('0xe4')][_0x3448('0x112')](db[_0x3448('0x17d')],{});db[_0x3448('0xe4')][_0x3448('0x112')](db[_0x3448('0x5c')],{});db[_0x3448('0xe4')][_0x3448('0x112')](db['OpenchannelAccount'],{'foreignKey':_0x3448('0x1e6'),'as':_0x3448('0x1e2')});db[_0x3448('0xe4')]['belongsTo'](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1dd'),'as':_0x3448('0x1d7')});db[_0x3448('0xe4')][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':'ToUserId','as':_0x3448('0x1d9')});db[_0x3448('0xe4')][_0x3448('0x112')](db[_0x3448('0x128')],{'foreignKey':_0x3448('0x1e7'),'as':'ToQueue'});db[_0x3448('0xe4')][_0x3448('0x112')](db[_0x3448('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db[_0x3448('0x1e8')]['belongsTo'](db[_0x3448('0x56')],{});db[_0x3448('0x1e8')]['belongsTo'](db[_0x3448('0x10b')],{});db[_0x3448('0x1e8')][_0x3448('0x112')](db[_0x3448('0x52')],{'foreignKey':_0x3448('0x1e9'),'as':_0x3448('0x1e2')});db[_0x3448('0x1e8')][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1dd'),'as':_0x3448('0x1d7')});db[_0x3448('0x1e8')]['belongsTo'](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1d8'),'as':_0x3448('0x1d9')});db[_0x3448('0x1e8')][_0x3448('0x112')](db[_0x3448('0x58')],{'foreignKey':_0x3448('0x1ea'),'as':_0x3448('0x1e4')});db[_0x3448('0x1e8')][_0x3448('0x112')](db['SmsAccount'],{'foreignKey':_0x3448('0x1eb'),'as':'ToAccount'});db[_0x3448('0xe7')][_0x3448('0x103')](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x15a'),'onDelete':'cascade'});db['CmList'][_0x3448('0x103')](db[_0x3448('0x76')],{'as':'CustomFields','foreignKey':_0x3448('0x15a')});db['CmList'][_0x3448('0x103')](db[_0x3448('0x117')],{'as':_0x3448('0x118'),'onDelete':_0x3448('0x101'),'foreignKey':_0x3448('0x15a')});db[_0x3448('0xe7')][_0x3448('0x103')](db['CmHopperFinal'],{'as':_0x3448('0x107'),'foreignKey':_0x3448('0x15a')});db[_0x3448('0xe7')][_0x3448('0x103')](db[_0x3448('0x72')],{'as':_0x3448('0x108'),'foreignKey':_0x3448('0x15a')});db[_0x3448('0xe7')][_0x3448('0x103')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x3448('0x15a')});db[_0x3448('0xe7')][_0x3448('0x115')](db[_0x3448('0x1d')],{'as':'Queues','through':_0x3448('0x149')});db[_0x3448('0xe7')]['belongsToMany'](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x11b')});db[_0x3448('0xe9')][_0x3448('0x103')](db[_0x3448('0x106')],{'as':_0x3448('0x19d'),'onDelete':_0x3448('0x101')});db[_0x3448('0xe9')][_0x3448('0x115')](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x1ec')});db[_0x3448('0xe9')][_0x3448('0x115')](db[_0x3448('0xd5')],{'through':'TeamVoicePrefix','as':'Teams'});db[_0x3448('0x113')][_0x3448('0x103')](db[_0x3448('0x13')],{'as':_0x3448('0x179'),'foreignKey':_0x3448('0x114')});db['UserProfile'][_0x3448('0x103')](db[_0x3448('0x1ed')],{'as':_0x3448('0x1ee'),'foreignKey':_0x3448('0x114'),'onDelete':_0x3448('0x101')});db['UserProfileSection'][_0x3448('0x103')](db[_0x3448('0xed')],{'as':_0x3448('0x1ef'),'foreignKey':_0x3448('0x1f0'),'onDelete':'cascade'});db[_0x3448('0xf1')]['hasMany'](db[_0x3448('0x16a')],{'as':_0x3448('0x158'),'foreignKey':_0x3448('0x1f1'),'onDelete':_0x3448('0x101')});db['WhatsappAccount'][_0x3448('0x103')](db[_0x3448('0x7b')],{'as':'Answers','foreignKey':_0x3448('0x1f1')});db['WhatsappAccount'][_0x3448('0x103')](db[_0x3448('0xf4')],{'as':_0x3448('0x14d'),'foreignKey':_0x3448('0x1f1')});db['WhatsappAccount']['hasMany'](db[_0x3448('0x10f')],{'as':_0x3448('0x16d')});db[_0x3448('0xf1')][_0x3448('0x103')](db[_0x3448('0x1f2')],{'as':_0x3448('0x13b')});db[_0x3448('0xf1')]['belongsTo'](db[_0x3448('0xe7')],{'as':'List','foreignKey':_0x3448('0x15a')});db['WhatsappAccount'][_0x3448('0x112')](db[_0x3448('0x7e')],{'as':'mandatoryDispositionPause','foreignKey':_0x3448('0x15d')});db[_0x3448('0xf1')]['belongsToMany'](db[_0x3448('0x13')],{'as':_0x3448('0x14a'),'through':_0x3448('0x136')});db[_0x3448('0x1f2')]['belongsTo'](db['User'],{'onDelete':_0x3448('0x167')});db['WhatsappApplication'][_0x3448('0x112')](db[_0x3448('0xfa')],{'onDelete':'restrict'});db[_0x3448('0x1f2')]['belongsTo'](db[_0x3448('0xf1')],{'onDelete':_0x3448('0x167')});db[_0x3448('0x1f2')][_0x3448('0x112')](db[_0x3448('0x147')],{'onDelete':_0x3448('0x167'),'foreignKey':_0x3448('0x148')});db[_0x3448('0x1f2')][_0x3448('0x112')](db[_0x3448('0x87')],{'onDelete':_0x3448('0x167'),'foreignKey':'TagId'});db[_0x3448('0x10f')][_0x3448('0x103')](db['WhatsappMessage'],{'as':'Messages','onDelete':_0x3448('0x101'),'foreignKey':'WhatsappInteractionId'});db['WhatsappInteraction']['belongsTo'](db[_0x3448('0xf1')],{'as':_0x3448('0x15f'),'foreignKey':'WhatsappAccountId'});db['WhatsappInteraction'][_0x3448('0x112')](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':'ContactId'});db[_0x3448('0x10f')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x160'),'foreignKey':_0x3448('0x102')});db[_0x3448('0x10f')][_0x3448('0x115')](db[_0x3448('0x87')],{'through':_0x3448('0x1a5'),'as':_0x3448('0x172')});db[_0x3448('0x10f')][_0x3448('0x115')](db[_0x3448('0x87')],{'through':'whatsapp_interaction_has_tags','as':'ThroughTags'});db[_0x3448('0x10f')]['belongsToMany'](db['User'],{'as':_0x3448('0x179'),'through':_0x3448('0x1f3'),'foreignKey':_0x3448('0x1f4')});db[_0x3448('0xf4')][_0x3448('0x112')](db[_0x3448('0x13')],{'as':_0x3448('0x13')});db[_0x3448('0xf4')][_0x3448('0x112')](db[_0x3448('0x117')],{'onDelete':_0x3448('0x101'),'as':'Contact'});db['WhatsappMessage'][_0x3448('0x112')](db[_0x3448('0x10f')],{'onDelete':_0x3448('0x101'),'as':_0x3448('0x164'),'foreignKey':'WhatsappInteractionId'});db[_0x3448('0xf4')][_0x3448('0x112')](db['WhatsappAccount'],{'as':_0x3448('0x15f'),'foreignKey':_0x3448('0x1f1')});db[_0x3448('0xf6')]['belongsTo'](db[_0x3448('0xf1')],{});db[_0x3448('0xf6')][_0x3448('0x112')](db['CmList'],{'as':_0x3448('0x159'),'foreignKey':_0x3448('0x15a')});db['WhatsappQueueReport']['belongsTo'](db[_0x3448('0x117')],{'as':_0x3448('0x163'),'foreignKey':_0x3448('0x153')});db['WhatsappQueueReport']['belongsTo'](db[_0x3448('0x10f')],{});db[_0x3448('0xf6')][_0x3448('0x112')](db[_0x3448('0xfa')],{});db[_0x3448('0xf6')][_0x3448('0x112')](db[_0x3448('0xf4')],{});db[_0x3448('0xf6')][_0x3448('0x112')](db[_0x3448('0x13')],{});db[_0x3448('0xf8')][_0x3448('0x112')](db[_0x3448('0xf4')],{});db['WhatsappTransferReport'][_0x3448('0x112')](db[_0x3448('0x10f')],{});db[_0x3448('0xf8')][_0x3448('0x112')](db['WhatsappAccount'],{'foreignKey':_0x3448('0x1f5'),'as':_0x3448('0x1e2')});db[_0x3448('0xf8')][_0x3448('0x112')](db[_0x3448('0xf1')],{'foreignKey':_0x3448('0x1f6'),'as':_0x3448('0x1e0')});db[_0x3448('0xf8')][_0x3448('0x112')](db[_0x3448('0xfa')],{'foreignKey':_0x3448('0x1f7'),'as':_0x3448('0x1e4')});db[_0x3448('0xf8')][_0x3448('0x112')](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1dd'),'as':_0x3448('0x1d7')});db[_0x3448('0xf8')]['belongsTo'](db[_0x3448('0x13')],{'foreignKey':_0x3448('0x1d8'),'as':_0x3448('0x1d9')});db['WhatsappQueue'][_0x3448('0x115')](db[_0x3448('0x13')],{'as':'Agents','through':'UserWhatsappQueue','foreignKey':'WhatsappQueueId'});db[_0x3448('0xfa')][_0x3448('0x115')](db['Team'],{'through':_0x3448('0x1d2'),'as':_0x3448('0x14b')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 1031624..3a3029a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecfa=['./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','/api/sms/reports/queue','./api/squareReport','./api/squareReportDetail','./api/jscriptyProject','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','/api/square/messages','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/jira','./api/rpc','/api/version','./api/version','/api/system','./api/system','./api/pm2','/api/webbar','/apidoc','static','join','root','/www','/demo','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','password','newPassword','apiKey','lastName','phone','mobile','fax','email','clientId','clientSecret','securityToken','accessKey','channelSecret','authToken','consumerKey','consumerSecret','membername','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','accountSid','localstationid','dsn','registry','oldPassword','isPlainObject','isArray','length','isString','@@{','replace','includes','path','express','express-winston','util','./errors','./config/environment','./config/logger','default','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','method','headers','x-forwarded-for','remoteAddress','url','statusCode','responseTime','user','name','inspect','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','connection','other','agent_name','test','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','./api/memberReport','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_history','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/disposition','/api/conditions','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','/api/integrations','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_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/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts'];(function(_0x319cb9,_0x4b8d35){var _0x1735fc=function(_0x43b061){while(--_0x43b061){_0x319cb9['push'](_0x319cb9['shift']());}};_0x1735fc(++_0x4b8d35);}(_0xecfa,0x1d2));var _0xaecf=function(_0x38c2d5,_0x578397){_0x38c2d5=_0x38c2d5-0x0;var _0x731c1e=_0xecfa[_0x38c2d5];return _0x731c1e;};'use strict';var _=require('lodash');var path=require(_0xaecf('0x0'));var express=require(_0xaecf('0x1'));var ewinston=require(_0xaecf('0x2'));var util=require(_0xaecf('0x3'));var errors=require(_0xaecf('0x4'));var config=require(_0xaecf('0x5'));var logger=require(_0xaecf('0x6'))('api');var authLogger=require(_0xaecf('0x6'))('auth');exports[_0xaecf('0x7')]=function(_0x2308b4){_0x2308b4['use'](ewinston[_0xaecf('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4d21c9,_0x58e502){var _0x22f5d6=_0xaecf('0x9');if(!_[_0xaecf('0xa')](_0x4d21c9[_0xaecf('0xb')])){_0x22f5d6+=_0xaecf('0xc');var _0x11a152=_0x4d21c9[_0xaecf('0xb')];maskSensitiveData(_0x11a152);}return util['format'](_0x22f5d6,_0x4d21c9[_0xaecf('0xd')],_0x4d21c9[_0xaecf('0xe')][_0xaecf('0xf')]?_0x4d21c9[_0xaecf('0xe')][_0xaecf('0xf')]:_0x4d21c9['connection'][_0xaecf('0x10')]||_0x4d21c9['ip'],_0x4d21c9[_0xaecf('0x11')],_0x58e502[_0xaecf('0x12')],_0x58e502[_0xaecf('0x13')],_0x4d21c9[_0xaecf('0x14')]?_0x4d21c9[_0xaecf('0x14')]['id']:null,_0x4d21c9['user']?_0x4d21c9['user'][_0xaecf('0x15')]:null,_0x4d21c9[_0xaecf('0x14')]?_0x4d21c9[_0xaecf('0x14')]['role']:null,_0x11a152?util[_0xaecf('0x16')](_0x11a152,![],null):'');}}));_0x2308b4['use'](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x13c0a3,_0x2090a7){var _0x40875e='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3['body'][_0xaecf('0x17')]&&_0x13c0a3['body'][_0xaecf('0x18')]){_0x40875e=_0xaecf('0x19');}return util[_0xaecf('0x1a')](_0x40875e,_0x13c0a3[_0xaecf('0xd')],_0x13c0a3[_0xaecf('0xe')][_0xaecf('0xf')]?_0x13c0a3[_0xaecf('0xe')]['x-forwarded-for']:_0x13c0a3[_0xaecf('0x1b')][_0xaecf('0x10')]||_0x13c0a3['ip'],_0x13c0a3[_0xaecf('0x11')],_0x2090a7[_0xaecf('0x12')],_0x2090a7[_0xaecf('0x13')],_0x13c0a3[_0xaecf('0x14')]?_0x13c0a3[_0xaecf('0x14')]['id']:null,_0x13c0a3[_0xaecf('0x14')]?_0x13c0a3['user'][_0xaecf('0x15')]:null,_0x13c0a3['user']?_0x13c0a3['user']['role']:null,_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3[_0xaecf('0xb')][_0xaecf('0x17')]?_0x13c0a3[_0xaecf('0xb')][_0xaecf('0x17')]:_0xaecf('0x1c'),_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3[_0xaecf('0xb')][_0xaecf('0x18')]?_0x13c0a3['body'][_0xaecf('0x18')]:'',_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3['body']['agent_name']?_0x13c0a3['body'][_0xaecf('0x1d')]:'');},'ignoreRoute':function(_0x44107b){var _0x199471=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x199471[_0xaecf('0x1e')](_0x44107b['url']);}}));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x20'),require(_0xaecf('0x21')));_0x2308b4['use'](_0xaecf('0x22'),require(_0xaecf('0x23')));_0x2308b4[_0xaecf('0x1f')]('/api/voice/contexts',require('./api/voiceContext'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x24'),require(_0xaecf('0x25')));_0x2308b4['use'](_0xaecf('0x26'),require(_0xaecf('0x27')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x28'),require('./api/voiceQueue'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x29'),require(_0xaecf('0x2a')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x2b'),require(_0xaecf('0x2c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x2d'),require('./api/voiceMail'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x2e'),require('./api/voiceMailMessage'));_0x2308b4[_0xaecf('0x1f')]('/api/voice/calls/reports',require('./api/voiceCallReport'));_0x2308b4['use']('/api/voice/dials/reports',require(_0xaecf('0x2f')));_0x2308b4[_0xaecf('0x1f')]('/api/voice/agents/reports',require(_0xaecf('0x30')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x31'),require(_0xaecf('0x32')));_0x2308b4[_0xaecf('0x1f')]('/api/members/reports',require(_0xaecf('0x33')));_0x2308b4['use'](_0xaecf('0x34'),require('./api/trunk'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x35'),require(_0xaecf('0x36')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x37'),require('./api/mailServerOut'));_0x2308b4[_0xaecf('0x1f')]('/api/mail/accounts',require(_0xaecf('0x38')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x39'),require(_0xaecf('0x3a')));_0x2308b4['use'](_0xaecf('0x3b'),require(_0xaecf('0x3c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x3d'),require(_0xaecf('0x3e')));_0x2308b4['use'](_0xaecf('0x3f'),require('./api/mailMessage'));_0x2308b4[_0xaecf('0x1f')]('/api/mail/applications',require(_0xaecf('0x40')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x41'),require(_0xaecf('0x42')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x43'),require(_0xaecf('0x44')));_0x2308b4[_0xaecf('0x1f')]('/api/dashboards/items',require(_0xaecf('0x45')));_0x2308b4['use'](_0xaecf('0x46'),require(_0xaecf('0x47')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x48'),require(_0xaecf('0x49')));_0x2308b4['use'](_0xaecf('0x4a'),require(_0xaecf('0x4b')));_0x2308b4['use'](_0xaecf('0x4c'),require(_0xaecf('0x4d')));_0x2308b4['use']('/api/fax/queues',require('./api/faxQueue'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x4e'),require(_0xaecf('0x4f')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x50'),require('./api/smsAccount'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x51'),require(_0xaecf('0x52')));_0x2308b4['use']('/api/sms/interactions',require(_0xaecf('0x53')));_0x2308b4['use'](_0xaecf('0x54'),require(_0xaecf('0x55')));_0x2308b4[_0xaecf('0x1f')]('/api/sms/queues',require(_0xaecf('0x56')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x57'),require(_0xaecf('0x58')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x59'),require('./api/openchannelApplication'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x5a'),require(_0xaecf('0x5b')));_0x2308b4['use']('/api/openchannel/messages',require(_0xaecf('0x5c')));_0x2308b4['use'](_0xaecf('0x5d'),require(_0xaecf('0x5e')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x5f'),require('./api/chatWebsite'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x60'),require(_0xaecf('0x61')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x62'),require('./api/chatApplication'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x63'),require(_0xaecf('0x64')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x65'),require(_0xaecf('0x66')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x67'),require(_0xaecf('0x68')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x69'),require('./api/chatQueue'));_0x2308b4['use'](_0xaecf('0x6a'),require(_0xaecf('0x6b')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x6c'),require(_0xaecf('0x6d')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x6e'),require(_0xaecf('0x6f')));_0x2308b4['use'](_0xaecf('0x70'),require(_0xaecf('0x71')));_0x2308b4[_0xaecf('0x1f')]('/api/cm/hopper',require('./api/cmHopper'));_0x2308b4['use'](_0xaecf('0x72'),require(_0xaecf('0x73')));_0x2308b4[_0xaecf('0x1f')]('/api/cm/hopper_final',require('./api/cmHopperFinal'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x74'),require('./api/cmHopperHistory'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x75'),require('./api/cmCustomField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x76'),require(_0xaecf('0x77')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x78'),require(_0xaecf('0x79')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x7a'),require('./api/cannedAnswer'));_0x2308b4[_0xaecf('0x1f')]('/api/dispositions',require(_0xaecf('0x7b')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x7c'),require('./api/condition'));_0x2308b4['use'](_0xaecf('0x7d'),require(_0xaecf('0x7e')));_0x2308b4['use']('/api/pauses',require(_0xaecf('0x7f')));_0x2308b4['use'](_0xaecf('0x80'),require('./api/cdr'));_0x2308b4['use']('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x81'),require(_0xaecf('0x82')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x83'),require(_0xaecf('0x84')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x85'),require('./api/tag'));_0x2308b4['use'](_0xaecf('0x86'),require(_0xaecf('0x87')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x88'),require(_0xaecf('0x89')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8a'),require('./api/variable'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8b'),require('./api/integration'));_0x2308b4['use']('/api/integrations/reports',require(_0xaecf('0x8c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8d'),require(_0xaecf('0x8e')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8f'),require('./api/analyticDefaultReport'));_0x2308b4['use']('/api/analytics/extracted_reports',require(_0xaecf('0x90')));_0x2308b4['use'](_0xaecf('0x91'),require(_0xaecf('0x92')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x93'),require(_0xaecf('0x94')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x95'),require(_0xaecf('0x96')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x97'),require(_0xaecf('0x98')));_0x2308b4['use'](_0xaecf('0x99'),require('./api/intSalesforceConfiguration'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9a'),require('./api/intSalesforceField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9b'),require(_0xaecf('0x9c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9d'),require(_0xaecf('0x9e')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9f'),require(_0xaecf('0xa0')));_0x2308b4['use'](_0xaecf('0xa1'),require(_0xaecf('0xa2')));_0x2308b4[_0xaecf('0x1f')]('/api/integrations/desk/configurations',require(_0xaecf('0xa3')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa4'),require('./api/intDeskField'));_0x2308b4['use']('/api/integrations/zoho/accounts',require(_0xaecf('0xa5')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa6'),require(_0xaecf('0xa7')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa8'),require('./api/intZohoField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa9'),require('./api/intZendeskAccount'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xaa'),require(_0xaecf('0xab')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xac'),require(_0xaecf('0xad')));_0x2308b4['use'](_0xaecf('0xae'),require(_0xaecf('0xaf')));_0x2308b4[_0xaecf('0x1f')]('/api/integrations/freshdesk/configurations',require(_0xaecf('0xb0')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb1'),require(_0xaecf('0xb2')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb3'),require(_0xaecf('0xb4')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb5'),require(_0xaecf('0xb6')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb7'),require(_0xaecf('0xb8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb9'),require(_0xaecf('0xba')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xbb'),require(_0xaecf('0xbc')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xbd'),require(_0xaecf('0xbe')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xbf'),require(_0xaecf('0xc0')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc1'),require(_0xaecf('0xc2')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc3'),require('./api/intDynamics365Field'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc4'),require('./api/intFreshsalesAccount'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc5'),require('./api/intFreshsalesConfiguration'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc6'),require('./api/intFreshsalesField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc7'),require(_0xaecf('0xc8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc9'),require(_0xaecf('0xca')));_0x2308b4['use'](_0xaecf('0xcb'),require('./api/chatInternalMessage'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xcc'),require(_0xaecf('0xcd')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xce'),require(_0xaecf('0xcf')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd0'),require('./api/jscriptySessionReport'));_0x2308b4['use'](_0xaecf('0xd1'),require('./api/smsQueueReport'));_0x2308b4[_0xaecf('0x1f')]('/api/square/reports',require(_0xaecf('0xd2')));_0x2308b4['use']('/api/square/details/reports',require(_0xaecf('0xd3')));_0x2308b4[_0xaecf('0x1f')]('/api/jscripty/projects',require(_0xaecf('0xd4')));_0x2308b4['use']('/api/settings',require('./api/setting'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd5'),require(_0xaecf('0xd6')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd7'),require(_0xaecf('0xd8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd9'),require('./api/squareRecording'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xda'),require(_0xaecf('0xdb')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xdc'),require('./api/team'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xdd'),require(_0xaecf('0xde')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xdf'),require(_0xaecf('0xe0')));_0x2308b4['use'](_0xaecf('0xe1'),require(_0xaecf('0xe2')));_0x2308b4[_0xaecf('0x1f')]('/api/attachments',require('./api/attachment'));_0x2308b4['use']('/api/plugins',require(_0xaecf('0xe3')));_0x2308b4[_0xaecf('0x1f')]('/api/mail/reports/transfer',require(_0xaecf('0xe4')));_0x2308b4['use'](_0xaecf('0xe5'),require(_0xaecf('0xe6')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xe7'),require(_0xaecf('0xe8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xe9'),require(_0xaecf('0xea')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xeb'),require(_0xaecf('0xec')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xed'),require(_0xaecf('0xee')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xef'),require(_0xaecf('0xf0')));_0x2308b4['use'](_0xaecf('0xf1'),require('./api/userProfile'));_0x2308b4['use'](_0xaecf('0xf2'),require(_0xaecf('0xf3')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xf4'),require(_0xaecf('0xf5')));_0x2308b4['use']('/api/userNotifications',require('./api/userNotification'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xf6'),require(_0xaecf('0xf7')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xf8'),require(_0xaecf('0xf9')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xfa'),require(_0xaecf('0xfb')));_0x2308b4[_0xaecf('0x1f')]('/api/whatsapp/messages',require(_0xaecf('0xfc')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xfd'),require(_0xaecf('0xfe')));_0x2308b4['use'](_0xaecf('0xff'),require(_0xaecf('0x100')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x101'),require(_0xaecf('0x102')));_0x2308b4['use'](_0xaecf('0x103'),require(_0xaecf('0x104')));_0x2308b4['use'](_0xaecf('0x105'),require(_0xaecf('0x106')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x107'),require(_0xaecf('0x108')));_0x2308b4[_0xaecf('0x1f')]('/api/auth/google',require('./api/authGoogle'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x109'),require('./api/jira'));_0x2308b4['use']('/api/rpc',require(_0xaecf('0x10a')));_0x2308b4['use'](_0xaecf('0x10b'),require(_0xaecf('0x10c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x10d'),require(_0xaecf('0x10e')));_0x2308b4['use']('/api/pm2',require(_0xaecf('0x10f')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x110'),require('./api/webbar'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x111'),express[_0xaecf('0x112')](path[_0xaecf('0x113')](config[_0xaecf('0x114')],_0xaecf('0x111'))));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x115'),express[_0xaecf('0x112')](path[_0xaecf('0x113')](config[_0xaecf('0x114')],_0xaecf('0x115'))));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x116'),express[_0xaecf('0x112')](path['join'](config['root'],'/demo')));_0x2308b4['use']('/snippet',express[_0xaecf('0x112')](path['join'](config[_0xaecf('0x114')],_0xaecf('0x117'),_0xaecf('0x118'))));_0x2308b4['use'](_0xaecf('0x119'),express['static'](path[_0xaecf('0x113')](config[_0xaecf('0x114')],_0xaecf('0x11a'))));_0x2308b4[_0xaecf('0x11b')](_0xaecf('0x11c'))[_0xaecf('0x11d')](errors[0x194]);_0x2308b4[_0xaecf('0x11b')]('/*')[_0xaecf('0x11d')](function(_0x1c495c,_0x1709da){_0x1709da[_0xaecf('0x11e')](path[_0xaecf('0x11f')](_0x2308b4['get'](_0xaecf('0x120'))+_0xaecf('0x121')));});};var sensitiveFields=['username',_0xaecf('0x122'),_0xaecf('0x123'),_0xaecf('0x124'),'firstName',_0xaecf('0x125'),'street',_0xaecf('0x126'),_0xaecf('0x127'),_0xaecf('0x128'),_0xaecf('0x129'),_0xaecf('0x12a'),_0xaecf('0x12b'),_0xaecf('0x12c'),'code',_0xaecf('0x12d'),'tenantId','token',_0xaecf('0x12e'),'accessToken','accessTokenSecret',_0xaecf('0x12f'),_0xaecf('0x130'),_0xaecf('0x131'),_0xaecf('0x132'),'calleridname','calleridnum','exten',_0xaecf('0x133'),'clientEmail',_0xaecf('0x134'),_0xaecf('0x135'),_0xaecf('0x136'),'key',_0xaecf('0x14'),'pass',_0xaecf('0x137'),_0xaecf('0x138'),_0xaecf('0x139'),'secret',_0xaecf('0x13a'),_0xaecf('0x13b')];function maskSensitiveData(_0x1fcbda){var _0x268014=/(?!^)[\s\S](?!$)/g;if(!_[_0xaecf('0x13c')](_0x1fcbda))return;for(var _0x153eae in _0x1fcbda){if(_[_0xaecf('0x13d')](_0x1fcbda[_0x153eae])){for(var _0xde56ee=0x0;_0xde56ee<_0x1fcbda[_0x153eae][_0xaecf('0x13e')];_0xde56ee++){maskSensitiveData(_0x1fcbda[_0x153eae][_0xde56ee]);}}else if(_['isPlainObject'](_0x1fcbda[_0x153eae])){maskSensitiveData(_0x1fcbda[_0x153eae]);}else if(_[_0xaecf('0x13f')](_0x1fcbda[_0x153eae])){_0x1fcbda[_0x153eae]=_0x1fcbda[_0x153eae]['replace'](/{{{/g,_0xaecf('0x140'))[_0xaecf('0x141')](/}}}/g,'}@@')[_0xaecf('0x141')](/{{/g,'@{')[_0xaecf('0x141')](/}}/g,'}@');if(_[_0xaecf('0x142')](sensitiveFields,_0x153eae)){_0x1fcbda[_0x153eae]=_0x1fcbda[_0x153eae]['replace'](_0x268014,'*');}}}}
\ No newline at end of file
+var _0x4cea=['static','root','join','/snippet','3.0.0','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','route','sendFile','appPath','/index.html','username','password','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','securityToken','code','accessKey','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerSecret','calleridname','calleridnum','exten','clientEmail','privateKey','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isArray','length','isPlainObject','isString','replace','@@{','includes','lodash','express','util','./errors','./config/logger','auth','logger','isEmpty','body','\x20body=%s','format','method','x-forwarded-for','remoteAddress','url','statusCode','user','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','headers','connection','responseTime','name','device','other','agent_name','test','/api/users','./api/user','use','/api/voice/chanspy','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','/api/voice/mohs','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','/api/members/reports','./api/memberReport','./api/trunk','./api/voiceTransferReport','./api/mailServerOut','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/interactions','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards/items','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/cm/companies','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','./api/disposition','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/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/analytics/field_reports','./api/analyticFieldReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','./api/squareRecording','./api/squareMessage','./api/team','/api/license','./api/license','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','/www'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x4cea,0x182));var _0xa4ce=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4cea[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xa4ce('0x0'));var path=require('path');var express=require(_0xa4ce('0x1'));var ewinston=require('express-winston');var util=require(_0xa4ce('0x2'));var errors=require(_0xa4ce('0x3'));var config=require('./config/environment');var logger=require(_0xa4ce('0x4'))('api');var authLogger=require(_0xa4ce('0x4'))(_0xa4ce('0x5'));exports['default']=function(_0x541053){_0x541053['use'](ewinston[_0xa4ce('0x6')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x55d6d3,_0x14688a){var _0x454852='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xa4ce('0x7')](_0x55d6d3[_0xa4ce('0x8')])){_0x454852+=_0xa4ce('0x9');var _0x1411d7=_0x55d6d3[_0xa4ce('0x8')];maskSensitiveData(_0x1411d7);}return util[_0xa4ce('0xa')](_0x454852,_0x55d6d3[_0xa4ce('0xb')],_0x55d6d3['headers']['x-forwarded-for']?_0x55d6d3['headers'][_0xa4ce('0xc')]:_0x55d6d3['connection'][_0xa4ce('0xd')]||_0x55d6d3['ip'],_0x55d6d3[_0xa4ce('0xe')],_0x14688a[_0xa4ce('0xf')],_0x14688a['responseTime'],_0x55d6d3[_0xa4ce('0x10')]?_0x55d6d3[_0xa4ce('0x10')]['id']:null,_0x55d6d3[_0xa4ce('0x10')]?_0x55d6d3[_0xa4ce('0x10')]['name']:null,_0x55d6d3[_0xa4ce('0x10')]?_0x55d6d3['user'][_0xa4ce('0x11')]:null,_0x1411d7?util[_0xa4ce('0x12')](_0x1411d7,![],null):'');}}));_0x541053['use'](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0xa7a774,_0x1e4b43){var _0x3ee02f=_0xa4ce('0x13');if(_0xa7a774[_0xa4ce('0x8')]&&_0xa7a774[_0xa4ce('0x8')]['device']&&_0xa7a774[_0xa4ce('0x8')][_0xa4ce('0x14')]){_0x3ee02f=_0xa4ce('0x15');}return util[_0xa4ce('0xa')](_0x3ee02f,_0xa7a774['method'],_0xa7a774[_0xa4ce('0x16')]['x-forwarded-for']?_0xa7a774[_0xa4ce('0x16')][_0xa4ce('0xc')]:_0xa7a774[_0xa4ce('0x17')]['remoteAddress']||_0xa7a774['ip'],_0xa7a774[_0xa4ce('0xe')],_0x1e4b43[_0xa4ce('0xf')],_0x1e4b43[_0xa4ce('0x18')],_0xa7a774[_0xa4ce('0x10')]?_0xa7a774[_0xa4ce('0x10')]['id']:null,_0xa7a774['user']?_0xa7a774[_0xa4ce('0x10')][_0xa4ce('0x19')]:null,_0xa7a774['user']?_0xa7a774[_0xa4ce('0x10')][_0xa4ce('0x11')]:null,_0xa7a774[_0xa4ce('0x8')]&&_0xa7a774[_0xa4ce('0x8')][_0xa4ce('0x1a')]?_0xa7a774[_0xa4ce('0x8')][_0xa4ce('0x1a')]:_0xa4ce('0x1b'),_0xa7a774[_0xa4ce('0x8')]&&_0xa7a774[_0xa4ce('0x8')][_0xa4ce('0x14')]?_0xa7a774['body'][_0xa4ce('0x14')]:'',_0xa7a774[_0xa4ce('0x8')]&&_0xa7a774[_0xa4ce('0x8')][_0xa4ce('0x1c')]?_0xa7a774['body']['agent_name']:'');},'ignoreRoute':function(_0x37a473){var _0x831e01=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x831e01[_0xa4ce('0x1d')](_0x37a473[_0xa4ce('0xe')]);}}));_0x541053['use'](_0xa4ce('0x1e'),require(_0xa4ce('0x1f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x21'),require(_0xa4ce('0x22')));_0x541053[_0xa4ce('0x20')]('/api/voice/contexts',require(_0xa4ce('0x23')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x24'),require('./api/voiceExtension'));_0x541053['use'](_0xa4ce('0x25'),require('./api/voiceMusicOnHold'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x26'),require(_0xa4ce('0x27')));_0x541053['use'](_0xa4ce('0x28'),require(_0xa4ce('0x29')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x2a'),require('./api/screenRecording'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x2b'),require(_0xa4ce('0x2c')));_0x541053['use'](_0xa4ce('0x2d'),require(_0xa4ce('0x2e')));_0x541053['use']('/api/voice/calls/reports',require(_0xa4ce('0x2f')));_0x541053['use'](_0xa4ce('0x30'),require(_0xa4ce('0x31')));_0x541053[_0xa4ce('0x20')]('/api/voice/agents/reports',require(_0xa4ce('0x32')));_0x541053['use'](_0xa4ce('0x33'),require('./api/voiceQueueReport'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x34'),require(_0xa4ce('0x35')));_0x541053['use']('/api/trunks',require(_0xa4ce('0x36')));_0x541053['use']('/api/voice/transfers/reports',require(_0xa4ce('0x37')));_0x541053['use']('/api/mail/out_servers',require(_0xa4ce('0x38')));_0x541053[_0xa4ce('0x20')]('/api/mail/accounts',require(_0xa4ce('0x39')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x3a'),require(_0xa4ce('0x3b')));_0x541053[_0xa4ce('0x20')]('/api/mail/substatuses',require('./api/mailSubstatus'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x3c'),require('./api/mailInteraction'));_0x541053['use']('/api/mail/messages',require(_0xa4ce('0x3d')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x3e'),require(_0xa4ce('0x3f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x40'),require(_0xa4ce('0x41')));_0x541053[_0xa4ce('0x20')]('/api/dashboards',require('./api/dashboard'));_0x541053['use'](_0xa4ce('0x42'),require('./api/dashboardItem'));_0x541053[_0xa4ce('0x20')]('/api/fax/accounts',require('./api/faxAccount'));_0x541053[_0xa4ce('0x20')]('/api/fax/applications',require(_0xa4ce('0x43')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x44'),require(_0xa4ce('0x45')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x46'),require(_0xa4ce('0x47')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x48'),require(_0xa4ce('0x49')));_0x541053['use'](_0xa4ce('0x4a'),require(_0xa4ce('0x4b')));_0x541053[_0xa4ce('0x20')]('/api/sms/accounts',require('./api/smsAccount'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x4c'),require(_0xa4ce('0x4d')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x4e'),require(_0xa4ce('0x4f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x50'),require('./api/smsMessage'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x51'),require(_0xa4ce('0x52')));_0x541053['use'](_0xa4ce('0x53'),require(_0xa4ce('0x54')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x55'),require(_0xa4ce('0x56')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x57'),require(_0xa4ce('0x58')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x59'),require('./api/openchannelMessage'));_0x541053['use'](_0xa4ce('0x5a'),require('./api/openchannelQueue'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x5b'),require(_0xa4ce('0x5c')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x5d'),require(_0xa4ce('0x5e')));_0x541053['use']('/api/chat/applications',require(_0xa4ce('0x5f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x60'),require(_0xa4ce('0x61')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x62'),require(_0xa4ce('0x63')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x64'),require('./api/chatOfflineMessage'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x65'),require(_0xa4ce('0x66')));_0x541053['use'](_0xa4ce('0x67'),require(_0xa4ce('0x68')));_0x541053[_0xa4ce('0x20')]('/api/chat/proactive_actions',require('./api/chatProactiveAction'));_0x541053['use'](_0xa4ce('0x69'),require('./api/cmCompany'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x6a'),require(_0xa4ce('0x6b')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x6c'),require(_0xa4ce('0x6d')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x6e'),require(_0xa4ce('0x6f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x70'),require('./api/cmHopperFinal'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x71'),require(_0xa4ce('0x72')));_0x541053['use']('/api/cm/custom_fields',require(_0xa4ce('0x73')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x74'),require(_0xa4ce('0x75')));_0x541053['use'](_0xa4ce('0x76'),require(_0xa4ce('0x77')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x78'),require(_0xa4ce('0x79')));_0x541053[_0xa4ce('0x20')]('/api/dispositions',require(_0xa4ce('0x7a')));_0x541053[_0xa4ce('0x20')]('/api/conditions',require(_0xa4ce('0x7b')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x7c'),require(_0xa4ce('0x7d')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x7e'),require(_0xa4ce('0x7f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x80'),require(_0xa4ce('0x81')));_0x541053[_0xa4ce('0x20')]('/api/voiceQueuesLog',require(_0xa4ce('0x82')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x83'),require(_0xa4ce('0x84')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x85'),require(_0xa4ce('0x86')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x87'),require(_0xa4ce('0x88')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x89'),require(_0xa4ce('0x8a')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x8b'),require('./api/trigger'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x8c'),require(_0xa4ce('0x8d')));_0x541053['use'](_0xa4ce('0x8e'),require(_0xa4ce('0x8f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x90'),require(_0xa4ce('0x91')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x92'),require(_0xa4ce('0x93')));_0x541053['use'](_0xa4ce('0x94'),require(_0xa4ce('0x95')));_0x541053['use'](_0xa4ce('0x96'),require(_0xa4ce('0x97')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x98'),require('./api/analyticMetric'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x99'),require(_0xa4ce('0x9a')));_0x541053[_0xa4ce('0x20')]('/api/analytics/tree_reports',require('./api/analyticTreeReport'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x9b'),require(_0xa4ce('0x9c')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x9d'),require(_0xa4ce('0x9e')));_0x541053['use'](_0xa4ce('0x9f'),require(_0xa4ce('0xa0')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xa1'),require(_0xa4ce('0xa2')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xa3'),require(_0xa4ce('0xa4')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xa5'),require(_0xa4ce('0xa6')));_0x541053['use']('/api/integrations/desk/accounts',require(_0xa4ce('0xa7')));_0x541053[_0xa4ce('0x20')]('/api/integrations/desk/configurations',require(_0xa4ce('0xa8')));_0x541053[_0xa4ce('0x20')]('/api/integrations/desk/fields',require(_0xa4ce('0xa9')));_0x541053['use'](_0xa4ce('0xaa'),require(_0xa4ce('0xab')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xac'),require(_0xa4ce('0xad')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xae'),require(_0xa4ce('0xaf')));_0x541053['use'](_0xa4ce('0xb0'),require(_0xa4ce('0xb1')));_0x541053['use'](_0xa4ce('0xb2'),require('./api/intZendeskConfiguration'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xb3'),require(_0xa4ce('0xb4')));_0x541053['use'](_0xa4ce('0xb5'),require(_0xa4ce('0xb6')));_0x541053[_0xa4ce('0x20')]('/api/integrations/freshdesk/configurations',require(_0xa4ce('0xb7')));_0x541053['use'](_0xa4ce('0xb8'),require(_0xa4ce('0xb9')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xba'),require(_0xa4ce('0xbb')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xbc'),require(_0xa4ce('0xbd')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xbe'),require(_0xa4ce('0xbf')));_0x541053['use']('/api/integrations/servicenow/accounts',require(_0xa4ce('0xc0')));_0x541053['use'](_0xa4ce('0xc1'),require('./api/intServicenowConfiguration'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xc2'),require(_0xa4ce('0xc3')));_0x541053[_0xa4ce('0x20')]('/api/integrations/dynamics365/accounts',require(_0xa4ce('0xc4')));_0x541053['use'](_0xa4ce('0xc5'),require('./api/intDynamics365Configuration'));_0x541053[_0xa4ce('0x20')]('/api/integrations/dynamics365/fields',require('./api/intDynamics365Field'));_0x541053[_0xa4ce('0x20')]('/api/integrations/freshsales/accounts',require(_0xa4ce('0xc6')));_0x541053[_0xa4ce('0x20')]('/api/integrations/freshsales/configurations',require(_0xa4ce('0xc7')));_0x541053['use'](_0xa4ce('0xc8'),require(_0xa4ce('0xc9')));_0x541053['use'](_0xa4ce('0xca'),require(_0xa4ce('0xcb')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xcc'),require(_0xa4ce('0xcd')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xce'),require('./api/chatInternalMessage'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xcf'),require(_0xa4ce('0xd0')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xd1'),require('./api/jscriptyQuestionReport'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xd2'),require(_0xa4ce('0xd3')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xd4'),require(_0xa4ce('0xd5')));_0x541053[_0xa4ce('0x20')]('/api/square/reports',require(_0xa4ce('0xd6')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xd7'),require('./api/squareReportDetail'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xd8'),require(_0xa4ce('0xd9')));_0x541053['use']('/api/settings',require(_0xa4ce('0xda')));_0x541053['use'](_0xa4ce('0xdb'),require(_0xa4ce('0xdc')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xdd'),require(_0xa4ce('0xde')));_0x541053[_0xa4ce('0x20')]('/api/square/recordings',require(_0xa4ce('0xdf')));_0x541053['use']('/api/square/messages',require(_0xa4ce('0xe0')));_0x541053[_0xa4ce('0x20')]('/api/teams',require(_0xa4ce('0xe1')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xe2'),require(_0xa4ce('0xe3')));_0x541053[_0xa4ce('0x20')]('/api/campaigns',require(_0xa4ce('0xe4')));_0x541053['use'](_0xa4ce('0xe5'),require(_0xa4ce('0xe6')));_0x541053['use'](_0xa4ce('0xe7'),require(_0xa4ce('0xe8')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xe9'),require('./api/plugin'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xea'),require(_0xa4ce('0xeb')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xec'),require('./api/chatTransferReport'));_0x541053['use'](_0xa4ce('0xed'),require(_0xa4ce('0xee')));_0x541053['use'](_0xa4ce('0xef'),require(_0xa4ce('0xf0')));_0x541053[_0xa4ce('0x20')]('/api/sms/reports/transfer',require(_0xa4ce('0xf1')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xf2'),require(_0xa4ce('0xf3')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xf4'),require('./api/voicePrefix'));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xf5'),require(_0xa4ce('0xf6')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xf7'),require('./api/userProfileSection'));_0x541053['use'](_0xa4ce('0xf8'),require(_0xa4ce('0xf9')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xfa'),require(_0xa4ce('0xfb')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xfc'),require(_0xa4ce('0xfd')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0xfe'),require('./api/whatsappApplication'));_0x541053['use'](_0xa4ce('0xff'),require(_0xa4ce('0x100')));_0x541053['use'](_0xa4ce('0x101'),require('./api/whatsappMessage'));_0x541053['use'](_0xa4ce('0x102'),require(_0xa4ce('0x103')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x104'),require(_0xa4ce('0x105')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x106'),require('./api/whatsappQueue'));_0x541053[_0xa4ce('0x20')]('/api/cloudProviders',require(_0xa4ce('0x107')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x108'),require(_0xa4ce('0x109')));_0x541053['use'](_0xa4ce('0x10a'),require('./api/authLocal'));_0x541053[_0xa4ce('0x20')]('/api/auth/google',require(_0xa4ce('0x10b')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x10c'),require(_0xa4ce('0x10d')));_0x541053['use'](_0xa4ce('0x10e'),require(_0xa4ce('0x10f')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x110'),require('./api/version'));_0x541053[_0xa4ce('0x20')]('/api/system',require(_0xa4ce('0x111')));_0x541053['use'](_0xa4ce('0x112'),require(_0xa4ce('0x113')));_0x541053['use'](_0xa4ce('0x114'),require(_0xa4ce('0x115')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x116'),express['static'](path['join'](config['root'],_0xa4ce('0x116'))));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x117'),express[_0xa4ce('0x118')](path['join'](config[_0xa4ce('0x119')],_0xa4ce('0x117'))));_0x541053[_0xa4ce('0x20')]('/demo',express[_0xa4ce('0x118')](path[_0xa4ce('0x11a')](config[_0xa4ce('0x119')],'/demo')));_0x541053[_0xa4ce('0x20')](_0xa4ce('0x11b'),express[_0xa4ce('0x118')](path[_0xa4ce('0x11a')](config[_0xa4ce('0x119')],'snippet',_0xa4ce('0x11c'))));_0x541053[_0xa4ce('0x20')]('/plugins',express[_0xa4ce('0x118')](path[_0xa4ce('0x11a')](config[_0xa4ce('0x119')],_0xa4ce('0x11d'))));_0x541053['route'](_0xa4ce('0x11e'))[_0xa4ce('0x11f')](errors[0x194]);_0x541053[_0xa4ce('0x120')]('/*')[_0xa4ce('0x11f')](function(_0x3452c4,_0x27581e){_0x27581e[_0xa4ce('0x121')](path['resolve'](_0x541053[_0xa4ce('0x11f')](_0xa4ce('0x122'))+_0xa4ce('0x123')));});};var sensitiveFields=[_0xa4ce('0x124'),_0xa4ce('0x125'),'newPassword',_0xa4ce('0x126'),_0xa4ce('0x127'),_0xa4ce('0x128'),_0xa4ce('0x129'),_0xa4ce('0x12a'),_0xa4ce('0x12b'),_0xa4ce('0x12c'),_0xa4ce('0x12d'),_0xa4ce('0x12e'),'clientSecret',_0xa4ce('0x12f'),_0xa4ce('0x130'),_0xa4ce('0x131'),'tenantId',_0xa4ce('0x132'),_0xa4ce('0x133'),_0xa4ce('0x134'),_0xa4ce('0x135'),_0xa4ce('0x136'),'consumerKey',_0xa4ce('0x137'),'membername',_0xa4ce('0x138'),_0xa4ce('0x139'),_0xa4ce('0x13a'),'vidaooApiKey',_0xa4ce('0x13b'),_0xa4ce('0x13c'),'accesskeyid',_0xa4ce('0x13d'),_0xa4ce('0x13e'),_0xa4ce('0x10'),_0xa4ce('0x13f'),_0xa4ce('0x140'),_0xa4ce('0x141'),_0xa4ce('0x142'),_0xa4ce('0x143'),_0xa4ce('0x144'),_0xa4ce('0x145')];function maskSensitiveData(_0x5659c7){var _0x504efc=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0x5659c7))return;for(var _0xf2e507 in _0x5659c7){if(_[_0xa4ce('0x146')](_0x5659c7[_0xf2e507])){for(var _0x2902c0=0x0;_0x2902c0<_0x5659c7[_0xf2e507][_0xa4ce('0x147')];_0x2902c0++){maskSensitiveData(_0x5659c7[_0xf2e507][_0x2902c0]);}}else if(_[_0xa4ce('0x148')](_0x5659c7[_0xf2e507])){maskSensitiveData(_0x5659c7[_0xf2e507]);}else if(_[_0xa4ce('0x149')](_0x5659c7[_0xf2e507])){_0x5659c7[_0xf2e507]=_0x5659c7[_0xf2e507][_0xa4ce('0x14a')](/{{{/g,_0xa4ce('0x14b'))['replace'](/}}}/g,'}@@')[_0xa4ce('0x14a')](/{{/g,'@{')[_0xa4ce('0x14a')](/}}/g,'}@');if(_[_0xa4ce('0x14c')](sensitiveFields,_0xf2e507)){_0x5659c7[_0xf2e507]=_0x5659c7[_0xf2e507]['replace'](_0x504efc,'*');}}}}
\ No newline at end of file
index 0223c33..211e741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5eb=['../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.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/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','lodash','listen','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.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/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc'];(function(_0x2778e5,_0x333575){var _0x42d718=function(_0x53ecf5){while(--_0x53ecf5){_0x2778e5['push'](_0x2778e5['shift']());}};_0x42d718(++_0x333575);}(_0xe5eb,0x137));var _0xbe5e=function(_0x43e955,_0x3c48aa){_0x43e955=_0x43e955-0x0;var _0x471cc9=_0xe5eb[_0x43e955];return _0x471cc9;};'use strict';var jayson=require(_0xbe5e('0x0'));var BPromise=require(_0xbe5e('0x1'));var _=require(_0xbe5e('0x2'));var config=require('../config/environment');exports[_0xbe5e('0x3')]=function(){return new BPromise(function(_0x18835d,_0x1fc4b3){var _0x494f77={};_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x4')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x5')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x7')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x8')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x9')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0xa')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xb')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xc')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xd')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xe')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xf')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/mailServerIn/mailServerIn.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x10')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x11')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x12')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x13')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/mailApplication/mailApplication.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x14')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/faxAccount/faxAccount.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x15')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/faxInteraction/faxInteraction.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x16')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x17')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x18')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/smsAccount/smsAccount.rpc'));_0x494f77=_['merge'](_0x494f77,require('../api/smsInteraction/smsInteraction.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x19')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1a')));_0x494f77=_['merge'](_0x494f77,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x494f77=_['merge'](_0x494f77,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1b')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x1c')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x1d')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1e')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1f')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x20')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x21')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x22')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x23')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x24')));_0x494f77=_['merge'](_0x494f77,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x25')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/interval/interval.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x26')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x27')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x28')));_0x494f77=_['merge'](_0x494f77,require('../api/trigger/trigger.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/variable/variable.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x29')));_0x494f77=_['merge'](_0x494f77,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x2a')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2b')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2c')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2d')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2e')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2f')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x30')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x31')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x32')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/squareReport/squareReport.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x33')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x34')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x35')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x36')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x37')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x38')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x39')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/attachment/attachment.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x3a')));_0x494f77=_['merge'](_0x494f77,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x3b')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x3c')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x3d')));var _0x21805e=jayson[_0xbe5e('0x3e')](_0x494f77)[_0xbe5e('0x3f')]();var _0x45e39c=config[_0xbe5e('0x40')][_0xbe5e('0x41')]||config['port']+0x1;var _0x1d64ad=config[_0xbe5e('0x40')]['ip']||_0xbe5e('0x42');_0x21805e['on'](_0xbe5e('0x43'),function(_0x3a69b1){return _0x1fc4b3(_0x3a69b1);});_0x21805e[_0xbe5e('0x3')](_0x45e39c,_0x1d64ad,function(){console[_0xbe5e('0x44')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x1d64ad,_0x45e39c);require('../config/triggers')[_0xbe5e('0x45')]();return _0x18835d(_0xbe5e('0x46')+_0x1d64ad+':'+_0x45e39c);});});};
\ No newline at end of file
+var _0x0ef2=['../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/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc'];(function(_0x305965,_0x3cbbac){var _0x495a17=function(_0x19ec7d){while(--_0x19ec7d){_0x305965['push'](_0x305965['shift']());}};_0x495a17(++_0x3cbbac);}(_0x0ef2,0x65));var _0x20ef=function(_0x277107,_0x3420dc){_0x277107=_0x277107-0x0;var _0x1da046=_0x0ef2[_0x277107];return _0x1da046;};'use strict';var jayson=require(_0x20ef('0x0'));var BPromise=require(_0x20ef('0x1'));var _=require(_0x20ef('0x2'));var config=require(_0x20ef('0x3'));exports[_0x20ef('0x4')]=function(){return new BPromise(function(_0x51d910,_0x200114){var _0x5608aa={};_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x6')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/voiceExtension/voiceExtension.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x7')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x8')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x9')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0xa')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x5608aa=_['merge'](_0x5608aa,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0xb')));_0x5608aa=_['merge'](_0x5608aa,require('../api/trunk/trunk.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0xc')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0xd')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0xe')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0xf')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x10')));_0x5608aa=_['merge'](_0x5608aa,require('../api/mailMessage/mailMessage.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/mailApplication/mailApplication.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x11')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x12')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x13')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x14')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/faxMessage/faxMessage.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x15')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x16')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/smsInteraction/smsInteraction.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x17')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x18')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x19')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x1a')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x1b')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x1c')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x1d')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x1e')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x1f')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x20')));_0x5608aa=_['merge'](_0x5608aa,require('../api/cmHopper/cmHopper.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x21')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x22')));_0x5608aa=_['merge'](_0x5608aa,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x23')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/interval/interval.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x24')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x25')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x26')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x27')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x28')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x29')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x2a')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x2b')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x2c')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x2d')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x2e')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x2f')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x30')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x31')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x32')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x33')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x34')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x35')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x36')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/setting/setting.rpc'));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x37')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x38')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x39')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/squareMessage/squareMessage.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x3a')));_0x5608aa=_['merge'](_0x5608aa,require(_0x20ef('0x3b')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x3c')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x3d')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x3e')));_0x5608aa=_[_0x20ef('0x5')](_0x5608aa,require(_0x20ef('0x3f')));var _0x135a7a=jayson[_0x20ef('0x40')](_0x5608aa)['http']();var _0x15baa4=config[_0x20ef('0x41')][_0x20ef('0x42')]||config[_0x20ef('0x42')]+0x1;var _0xc81aee=config[_0x20ef('0x41')]['ip']||_0x20ef('0x43');_0x135a7a['on'](_0x20ef('0x44'),function(_0x32b66d){return _0x200114(_0x32b66d);});_0x135a7a[_0x20ef('0x4')](_0x15baa4,_0xc81aee,function(){console[_0x20ef('0x45')](_0x20ef('0x46'),_0xc81aee,_0x15baa4);require(_0x20ef('0x47'))['default']();return _0x51d910(_0x20ef('0x48')+_0xc81aee+':'+_0x15baa4);});});};
\ No newline at end of file
index 1d1dc5e..0f0be6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb8=['isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setExtension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','agi','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','call','utf8','setTimeout','setEncoding','headers','emit','ready','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','destroy','pipe','command','write','inherits','prototype','sendRequest','sync','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP'];(function(_0x2f2ab1,_0x7dc23d){var _0x590f6b=function(_0x1914dc){while(--_0x1914dc){_0x2f2ab1['push'](_0x2f2ab1['shift']());}};_0x590f6b(++_0x7dc23d);}(_0x9bb8,0x1ae));var _0x89bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9bb8[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x89bb('0x0'));var _=require(_0x89bb('0x1'));var EventEmitter=require(_0x89bb('0x2'))[_0x89bb('0x3')];var AGIReply=require(_0x89bb('0x4'));var AGIError=require(_0x89bb('0x5'));function AGIChannel(_0x3e766d){var _0x1af2d3=this,_0xaa37b7=new AGIReply(),_0x26ecc2=![],_0x436902={};EventEmitter[_0x89bb('0x6')](_0x1af2d3);_0x3e766d['setEncoding'](_0x89bb('0x7'));_0x3e766d[_0x89bb('0x8')](0x8*0x3c*0x3c*0x3e8);_0xaa37b7[_0x89bb('0x9')](_0x89bb('0x7'));_0xaa37b7['on'](_0x89bb('0xa'),function(_0x392260){for(var _0x58ff32 in _0x392260){_0x1af2d3[_0x58ff32]=_0x392260[_0x58ff32];}_0x1af2d3[_0x89bb('0xb')](_0x89bb('0xc'));});_0xaa37b7['on']('line',function(_0x9da489){if(_0x9da489['toLowerCase']()==_0x89bb('0xd')){_0x1af2d3['emit'](_0x89bb('0xd'));return;}if(_0x9da489['substring'](0x0,0xb)==_0x89bb('0xe')){_0x26ecc2=!![];}if(_0x26ecc2){_0x436902['rx']+=_0x9da489+'\x0a';if(_0x9da489[_0x89bb('0xf')](_0x89bb('0x10'))!=-0x1){_0x26ecc2=![];}}else{_0x436902['rx']=_0x9da489;}if(_0x26ecc2){return;}if(typeof _0x436902['cb']==_0x89bb('0x11')){var _0x49c4ed=_0x436902['rx'][_0x89bb('0x12')](0x0,0x3),_0x4be9b=null,_0x145c52=null;_0x49c4ed=parseInt(_0x49c4ed);if(isNaN(_0x49c4ed)){_0x436902['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x89bb('0x13')});return;}if(_0x49c4ed!=0xc8){_0x436902['cb'](null,{'code':_0x49c4ed,'result':-0x1,'extra':'KO'});return;}_0x4be9b=_0x436902['rx']['substring'](0x4)['replace'](_0x89bb('0x14'),'');if(_0x4be9b[_0x89bb('0x15')]('\x20')!=-0x1){_0x4be9b=_0x4be9b[_0x89bb('0x16')](0x0,_0x4be9b[_0x89bb('0x15')]('\x20'));}if(_[_0x89bb('0x17')](_0x4be9b,'-1')){_0x4be9b=parseInt(_0x4be9b);}_0x145c52=_0x436902['rx'][_0x89bb('0x18')]('\x20');if(_0x145c52['length']==0x3){_0x145c52=_0x145c52[0x2][_0x89bb('0x12')](0x1,_0x145c52[0x2][_0x89bb('0x19')]-0x1);}else if(_0x145c52['length']>0x3){var _0x1c7666=/\((.+)\)/;var _0x9199ac=_0x436902['rx'][_0x89bb('0x1a')](_0x1c7666);if(_0x9199ac){_0x145c52=_0x9199ac[0x1];}else{_0x145c52=null;}}else{_0x145c52=null;}_0x436902['cb'](null,{'code':_0x49c4ed,'result':_0x4be9b,'extra':_0x145c52});}});_0x3e766d['on'](_0x89bb('0x1b'),function(_0x310e3d){_0x1af2d3['emit'](_0x89bb('0x1b'),new AGIError(_0x89bb('0x1c'),_0x310e3d[_0x89bb('0x1d')]));});_0x3e766d['on'](_0x89bb('0x1e'),function(){_0x1af2d3[_0x89bb('0xb')](_0x89bb('0x1e'),new AGIError(_0x89bb('0x1f')));});_0x3e766d['on'](_0x89bb('0x20'),function(){_0x1af2d3[_0x89bb('0xb')](_0x89bb('0x20'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x3e766d[_0x89bb('0x21')]();});_0x3e766d[_0x89bb('0x22')](_0xaa37b7);this[_0x89bb('0x23')]=function(_0x436b2a,_0x276eb6){var _0x436b2a=_0x436b2a||'',_0x276eb6=typeof _0x276eb6==_0x89bb('0x11')?_0x276eb6:new Function();_0x436902={'tx':_0x436b2a,'rx':'','cb':_0x276eb6};_0x3e766d[_0x89bb('0x24')](_0x436b2a+'\x0a');},this[_0x89bb('0x1e')]=function(){_0x3e766d[_0x89bb('0x21')]();};}util[_0x89bb('0x25')](AGIChannel,EventEmitter);AGIChannel[_0x89bb('0x26')][_0x89bb('0x27')]=function(_0x308726){return this[_0x89bb('0x23')][_0x89bb('0x28')](this,_0x308726);};AGIChannel['prototype']['answer']=function(){return this[_0x89bb('0x27')](_0x89bb('0x29'));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x2a')]=function(_0xfaf778,_0x1f557b,_0x5082af){_0xfaf778=_0xfaf778===undefined?_0x89bb('0x2b'):_0xfaf778;_0x1f557b=_0x1f557b===undefined?'5':_0x1f557b;_0x5082af=_0x5082af===undefined?'1':_0x5082af;return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x2d'),_0xfaf778,_0x1f557b*0x3e8,_0x5082af));};AGIChannel[_0x89bb('0x26')]['noop']=function(_0x1d7126){_0x1d7126=_0x1d7126||_0x89bb('0x2e');return this[_0x89bb('0x27')](util['format'](_0x89bb('0x2f'),_0x1d7126));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x30')]=function(_0x1f2a2e,_0x56284d){if(_[_0x89bb('0x31')](_0x56284d)){return this['sendRequest'](util[_0x89bb('0x2c')](_0x89bb('0x32'),_0x1f2a2e,_0x56284d['join'](',')));}return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x32'),_0x1f2a2e,_0x56284d));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x33')]=function(_0x486756){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x34'),_0x486756));};AGIChannel[_0x89bb('0x26')]['setExtension']=function(_0x33fb9b){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')]('SET\x20EXTENSION\x20%s',_0x33fb9b));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x35')]=function(_0x2b7177){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x36'),_0x2b7177));};AGIChannel[_0x89bb('0x26')][_0x89bb('0xd')]=function(){return this[_0x89bb('0x27')](_0x89bb('0x37'));};AGIChannel[_0x89bb('0x26')]['setVariable']=function(_0x219a7a,_0x46c471){var _0x5b1778=_[_0x89bb('0x38')](_0x46c471)||_[_0x89bb('0x39')](_0x46c471)?_0x46c471['toString']():_0x46c471;return this['sendRequest'](util['format'](_0x89bb('0x3a'),_0x219a7a,_0x5b1778?_0x5b1778['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x89bb('0x3b')]=function(_0x1b0562,_0x2a36e2){return this['sendRequest'](util[_0x89bb('0x2c')](_0x89bb('0x3c'),_0x1b0562,_0x2a36e2));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x3d')]=function(_0x24e4a3,_0x109cfc){return this['sendRequest'](util[_0x89bb('0x2c')](_0x89bb('0x3e'),_0x24e4a3,_0x109cfc));};AGIChannel['prototype'][_0x89bb('0x3f')]=function(_0x36cf74,_0x15b152){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x40'),_0x36cf74,_0x15b152));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x41')]=function(_0x220b2a,_0x5be8c0,_0x58ec00){_0x5be8c0=_0x5be8c0||this[_0x89bb('0x42')];_0x58ec00=_0x58ec00||0x1;this[_0x89bb('0x33')](_0x220b2a);this[_0x89bb('0x43')](_0x5be8c0);this[_0x89bb('0x35')](_0x58ec00);return this[_0x89bb('0x44')](util['format'](_0x89bb('0x45'),_0x220b2a,_0x5be8c0,_0x58ec00));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x46')]=function(_0x21acaf){return this[_0x89bb('0x27')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x21acaf));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x47')]=function(_0x1b3ba6,_0x2c8bc5,_0x278efa,_0x3b53c4,_0x609bec,_0x4baef9){_0x2c8bc5=_0x2c8bc5||_0x89bb('0x48');_0x278efa=_0x278efa||'';_0x3b53c4=_0x3b53c4===undefined?-0x1:_0x3b53c4==='-1'?-0x1:_0x3b53c4*0x3e8;_0x609bec=_0x609bec===undefined?'':'s='+_0x609bec;_0x4baef9=_0x4baef9?'BEEP':'';return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x49'),_0x1b3ba6,_0x2c8bc5,_0x278efa,_0x3b53c4,_0x4baef9,_0x609bec));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x4a')]=function(_0x19e87b,_0x3fb107){_0x3fb107=_0x3fb107||'';return this[_0x89bb('0x27')](util[_0x89bb('0x2c')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x19e87b,_0x3fb107));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x4b')]=function(_0x1575e3){return this[_0x89bb('0x30')]('AGI',_0x1575e3);};AGIChannel['prototype'][_0x89bb('0x4c')]=function(_0x5586c7){return this[_0x89bb('0x30')](_0x89bb('0x4d'),_0x5586c7);};AGIChannel[_0x89bb('0x26')][_0x89bb('0x1b')]=function(_0x48df1d,_0x2f5c62){this[_0x89bb('0x44')](util[_0x89bb('0x2c')](_0x89bb('0x4e'),_0x48df1d['id'],_0x48df1d[_0x89bb('0x4f')],_0x2f5c62));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x89bb('0x50')]=AGIChannel;
\ No newline at end of file
+var _0x53ec=['format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','extension','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','events','EventEmitter','./reply','./error','setEncoding','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','answer','sendRequest','ANSWER','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop'];(function(_0x5dcc00,_0x303385){var _0xe4aa2a=function(_0x4c9276){while(--_0x4c9276){_0x5dcc00['push'](_0x5dcc00['shift']());}};_0xe4aa2a(++_0x303385);}(_0x53ec,0x192));var _0xc53e=function(_0x18f3bf,_0x2f81f0){_0x18f3bf=_0x18f3bf-0x0;var _0x88488a=_0x53ec[_0x18f3bf];return _0x88488a;};'use strict';var util=require(_0xc53e('0x0'));var _=require(_0xc53e('0x1'));var EventEmitter=require(_0xc53e('0x2'))[_0xc53e('0x3')];var AGIReply=require(_0xc53e('0x4'));var AGIError=require(_0xc53e('0x5'));function AGIChannel(_0x51c435){var _0x266c42=this,_0x4e954a=new AGIReply(),_0x2b90f6=![],_0x38033d={};EventEmitter['call'](_0x266c42);_0x51c435[_0xc53e('0x6')]('utf8');_0x51c435[_0xc53e('0x7')](0x8*0x3c*0x3c*0x3e8);_0x4e954a[_0xc53e('0x6')]('utf8');_0x4e954a['on'](_0xc53e('0x8'),function(_0x1ac6c0){for(var _0x8b231f in _0x1ac6c0){_0x266c42[_0x8b231f]=_0x1ac6c0[_0x8b231f];}_0x266c42[_0xc53e('0x9')](_0xc53e('0xa'));});_0x4e954a['on'](_0xc53e('0xb'),function(_0xd82002){if(_0xd82002[_0xc53e('0xc')]()==_0xc53e('0xd')){_0x266c42['emit']('hangup');return;}if(_0xd82002[_0xc53e('0xe')](0x0,0xb)=='520-Invalid'){_0x2b90f6=!![];}if(_0x2b90f6){_0x38033d['rx']+=_0xd82002+'\x0a';if(_0xd82002['search'](_0xc53e('0xf'))!=-0x1){_0x2b90f6=![];}}else{_0x38033d['rx']=_0xd82002;}if(_0x2b90f6){return;}if(typeof _0x38033d['cb']==_0xc53e('0x10')){var _0x863fa=_0x38033d['rx']['substring'](0x0,0x3),_0x4203aa=null,_0x56f0e5=null;_0x863fa=parseInt(_0x863fa);if(isNaN(_0x863fa)){_0x38033d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xc53e('0x11')});return;}if(_0x863fa!=0xc8){_0x38033d['cb'](null,{'code':_0x863fa,'result':-0x1,'extra':'KO'});return;}_0x4203aa=_0x38033d['rx'][_0xc53e('0xe')](0x4)[_0xc53e('0x12')](_0xc53e('0x13'),'');if(_0x4203aa[_0xc53e('0x14')]('\x20')!=-0x1){_0x4203aa=_0x4203aa[_0xc53e('0x15')](0x0,_0x4203aa[_0xc53e('0x14')]('\x20'));}if(_[_0xc53e('0x16')](_0x4203aa,'-1')){_0x4203aa=parseInt(_0x4203aa);}_0x56f0e5=_0x38033d['rx'][_0xc53e('0x17')]('\x20');if(_0x56f0e5[_0xc53e('0x18')]==0x3){_0x56f0e5=_0x56f0e5[0x2]['substring'](0x1,_0x56f0e5[0x2][_0xc53e('0x18')]-0x1);}else if(_0x56f0e5[_0xc53e('0x18')]>0x3){var _0x535cd4=/\((.+)\)/;var _0x261c6c=_0x38033d['rx'][_0xc53e('0x19')](_0x535cd4);if(_0x261c6c){_0x56f0e5=_0x261c6c[0x1];}else{_0x56f0e5=null;}}else{_0x56f0e5=null;}_0x38033d['cb'](null,{'code':_0x863fa,'result':_0x4203aa,'extra':_0x56f0e5});}});_0x51c435['on'](_0xc53e('0x1a'),function(_0x164016){_0x266c42[_0xc53e('0x9')](_0xc53e('0x1a'),new AGIError('E_AGI_SOCKET_ERROR',_0x164016['code']));});_0x51c435['on'](_0xc53e('0x1b'),function(){_0x266c42[_0xc53e('0x9')](_0xc53e('0x1b'),new AGIError(_0xc53e('0x1c')));});_0x51c435['on'](_0xc53e('0x1d'),function(){_0x266c42[_0xc53e('0x9')](_0xc53e('0x1d'),new AGIError(_0xc53e('0x1e')));_0x51c435[_0xc53e('0x1f')]();});_0x51c435[_0xc53e('0x20')](_0x4e954a);this[_0xc53e('0x21')]=function(_0x44fd93,_0x426467){var _0x44fd93=_0x44fd93||'',_0x426467=typeof _0x426467=='function'?_0x426467:new Function();_0x38033d={'tx':_0x44fd93,'rx':'','cb':_0x426467};_0x51c435[_0xc53e('0x22')](_0x44fd93+'\x0a');},this[_0xc53e('0x1b')]=function(){_0x51c435[_0xc53e('0x1f')]();};}util[_0xc53e('0x23')](AGIChannel,EventEmitter);AGIChannel[_0xc53e('0x24')]['sendRequest']=function(_0x5e5377){return this[_0xc53e('0x21')]['sync'](this,_0x5e5377);};AGIChannel[_0xc53e('0x24')][_0xc53e('0x25')]=function(){return this[_0xc53e('0x26')](_0xc53e('0x27'));};AGIChannel[_0xc53e('0x24')]['getData']=function(_0x398e7a,_0x4b9f6a,_0x4d9a68){_0x398e7a=_0x398e7a===undefined?'beep':_0x398e7a;_0x4b9f6a=_0x4b9f6a===undefined?'5':_0x4b9f6a;_0x4d9a68=_0x4d9a68===undefined?'1':_0x4d9a68;return this[_0xc53e('0x26')](util['format'](_0xc53e('0x28'),_0x398e7a,_0x4b9f6a*0x3e8,_0x4d9a68));};AGIChannel['prototype'][_0xc53e('0x29')]=function(_0x5112d2){_0x5112d2=_0x5112d2||'NO\x20MESSAGE';return this[_0xc53e('0x26')](util[_0xc53e('0x2a')](_0xc53e('0x2b'),_0x5112d2));};AGIChannel[_0xc53e('0x24')][_0xc53e('0x2c')]=function(_0xf97d78,_0x3280fe){if(_[_0xc53e('0x2d')](_0x3280fe)){return this['sendRequest'](util[_0xc53e('0x2a')](_0xc53e('0x2e'),_0xf97d78,_0x3280fe[_0xc53e('0x2f')](',')));}return this['sendRequest'](util[_0xc53e('0x2a')]('EXEC\x20%s\x20%s',_0xf97d78,_0x3280fe));};AGIChannel[_0xc53e('0x24')][_0xc53e('0x30')]=function(_0x49ab9b){return this['sendRequest'](util[_0xc53e('0x2a')](_0xc53e('0x31'),_0x49ab9b));};AGIChannel[_0xc53e('0x24')][_0xc53e('0x32')]=function(_0x1b95c2){return this[_0xc53e('0x26')](util[_0xc53e('0x2a')](_0xc53e('0x33'),_0x1b95c2));};AGIChannel['prototype'][_0xc53e('0x34')]=function(_0x3bae8a){return this[_0xc53e('0x26')](util[_0xc53e('0x2a')](_0xc53e('0x35'),_0x3bae8a));};AGIChannel[_0xc53e('0x24')][_0xc53e('0xd')]=function(){return this[_0xc53e('0x26')](_0xc53e('0x36'));};AGIChannel['prototype'][_0xc53e('0x37')]=function(_0x48d7d0,_0x1059f3){var _0x46406b=_['isBoolean'](_0x1059f3)||_[_0xc53e('0x38')](_0x1059f3)?_0x1059f3[_0xc53e('0x39')]():_0x1059f3;return this[_0xc53e('0x26')](util['format'](_0xc53e('0x3a'),_0x48d7d0,_0x46406b?_0x46406b[_0xc53e('0x39')]()[_0xc53e('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xc53e('0x24')][_0xc53e('0x3b')]=function(_0x143101,_0x312c1b){return this['sendRequest'](util[_0xc53e('0x2a')](_0xc53e('0x3c'),_0x143101,_0x312c1b));};AGIChannel[_0xc53e('0x24')]['sayDigits']=function(_0x70b6c3,_0x5e8ab7){return this[_0xc53e('0x26')](util[_0xc53e('0x2a')](_0xc53e('0x3d'),_0x70b6c3,_0x5e8ab7));};AGIChannel[_0xc53e('0x24')][_0xc53e('0x3e')]=function(_0x5507d0,_0x3dda55){return this[_0xc53e('0x26')](util['format']('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x5507d0,_0x3dda55));};AGIChannel['prototype']['continueAt']=function(_0x1e2ea3,_0x9c3816,_0x49bd2c){_0x9c3816=_0x9c3816||this[_0xc53e('0x3f')];_0x49bd2c=_0x49bd2c||0x1;this['setContext'](_0x1e2ea3);this['setExtension'](_0x9c3816);this['setPriority'](_0x49bd2c);return this[_0xc53e('0x29')](util['format']('GOTO\x20%s\x20%s\x20%s',_0x1e2ea3,_0x9c3816,_0x49bd2c));};AGIChannel[_0xc53e('0x24')]['getVariable']=function(_0x422088){return this[_0xc53e('0x26')](util['format'](_0xc53e('0x40'),_0x422088));};AGIChannel[_0xc53e('0x24')]['recordFile']=function(_0x2ebce7,_0x529254,_0x547be0,_0x481e6d,_0x4efee5,_0x887d78){_0x529254=_0x529254||_0xc53e('0x41');_0x547be0=_0x547be0||'';_0x481e6d=_0x481e6d===undefined?-0x1:_0x481e6d==='-1'?-0x1:_0x481e6d*0x3e8;_0x4efee5=_0x4efee5===undefined?'':'s='+_0x4efee5;_0x887d78=_0x887d78?_0xc53e('0x42'):'';return this['sendRequest'](util[_0xc53e('0x2a')](_0xc53e('0x43'),_0x2ebce7,_0x529254,_0x547be0,_0x481e6d,_0x887d78,_0x4efee5));};AGIChannel['prototype']['streamFile']=function(_0x3ea11a,_0x1ab50e){_0x1ab50e=_0x1ab50e||'';return this[_0xc53e('0x26')](util['format'](_0xc53e('0x44'),_0x3ea11a,_0x1ab50e));};AGIChannel[_0xc53e('0x24')][_0xc53e('0x45')]=function(_0x10a766){return this[_0xc53e('0x2c')](_0xc53e('0x46'),_0x10a766);};AGIChannel[_0xc53e('0x24')]['wait']=function(_0xed757e){return this[_0xc53e('0x2c')](_0xc53e('0x47'),_0xed757e);};AGIChannel['prototype'][_0xc53e('0x1a')]=function(_0x2d1382,_0x4458c8){this[_0xc53e('0x29')](util[_0xc53e('0x2a')](_0xc53e('0x48'),_0x2d1382['id'],_0x2d1382['label'],_0x4458c8));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xc53e('0x49')]=AGIChannel;
\ No newline at end of file
index 0188769..0bde0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf34e=['Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','name','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.'];(function(_0x3b957f,_0x512f8c){var _0x419634=function(_0x1b925f){while(--_0x1b925f){_0x3b957f['push'](_0x3b957f['shift']());}};_0x419634(++_0x512f8c);}(_0xf34e,0x1ca));var _0xef34=function(_0x38c260,_0xb76036){_0x38c260=_0x38c260-0x0;var _0x38b0d3=_0xf34e[_0x38c260];return _0x38b0d3;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xef34('0x0'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0xef34('0x1'),'E_AGI_SERVER_CLOSE':_0xef34('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xef34('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xef34('0x4'),'E_AGI_SOCKET_ERROR':_0xef34('0x5'),'E_AGI_SOCKET_CLOSE':_0xef34('0x6'),'E_AGI_SOCKET_TIMEOUT':_0xef34('0x7'),'E_AGI_COMMAND_EMPTY':_0xef34('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xef34('0x9'),'E_AGI_IVR_ENTRY':_0xef34('0xa')};function AGIError(_0x47bde8){var _0x47bde8=_0x47bde8||null,_0x26042f=_0x26042f||[],_0x5c7779=0x1,_0x10c53f='';if(!error[_0x47bde8]){_0x47bde8=_0xef34('0xb');}_0x26042f[_0xef34('0xc')](error[_0x47bde8]);while(arguments[_0x5c7779]){_0x26042f[_0xef34('0xc')](arguments[_0x5c7779]);_0x5c7779++;}_0x10c53f=util[_0xef34('0xd')][_0xef34('0xe')](util,_0x26042f);this['message']=_0x10c53f;this[_0xef34('0xf')]=_0x47bde8;}module['exports']=AGIError;
\ No newline at end of file
+var _0x7e1f=['Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','message','name','exports','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.'];(function(_0x52c1a6,_0x5884c3){var _0x25c972=function(_0x1f92c0){while(--_0x1f92c0){_0x52c1a6['push'](_0x52c1a6['shift']());}};_0x25c972(++_0x5884c3);}(_0x7e1f,0x16e));var _0xf7e1=function(_0x121fea,_0x27ef6e){_0x121fea=_0x121fea-0x0;var _0x31db30=_0x7e1f[_0x121fea];return _0x31db30;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xf7e1('0x0'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0xf7e1('0x1'),'E_AGI_SERVER_CLOSE':_0xf7e1('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xf7e1('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xf7e1('0x4'),'E_AGI_SOCKET_ERROR':_0xf7e1('0x5'),'E_AGI_SOCKET_CLOSE':_0xf7e1('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xf7e1('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xf7e1('0x8'),'E_AGI_IVR_ENTRY':_0xf7e1('0x9')};function AGIError(_0x458b62){var _0x458b62=_0x458b62||null,_0x4c10e5=_0x4c10e5||[],_0x3b5dd9=0x1,_0x40f0e7='';if(!error[_0x458b62]){_0x458b62=_0xf7e1('0xa');}_0x4c10e5[_0xf7e1('0xb')](error[_0x458b62]);while(arguments[_0x3b5dd9]){_0x4c10e5['push'](arguments[_0x3b5dd9]);_0x3b5dd9++;}_0x40f0e7=util['format'][_0xf7e1('0xc')](util,_0x4c10e5);this[_0xf7e1('0xd')]=_0x40f0e7;this[_0xf7e1('0xe')]=_0x458b62;}module[_0xf7e1('0xf')]=AGIError;
\ No newline at end of file
index 0d1049f..13d168d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a5=['condition','split','agicommand','default','target','invalid','vswitch','default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','condition\x20not\x20found','exports','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','push','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length'];(function(_0x133cbb,_0x4fff01){var _0x18b198=function(_0x522ede){while(--_0x522ede){_0x133cbb['push'](_0x133cbb['shift']());}};_0x18b198(++_0x4fff01);}(_0x68a5,0xe3));var _0x568a=function(_0x4f64c8,_0xe04d80){_0x4f64c8=_0x4f64c8-0x0;var _0x241b26=_0x68a5[_0x4f64c8];return _0x241b26;};'use strict';var _=require('lodash');var logger=require('../../../config/logger')('agi');var verticesWithRetry=['menu',_0x568a('0x0'),_0x568a('0x1')];var Graph=function(){this[_0x568a('0x2')]={};this[_0x568a('0x3')]={};this[_0x568a('0x4')]=0x0;};Graph[_0x568a('0x5')][_0x568a('0x6')]=function(_0x1b3846){this['vertices'][_0x1b3846['id']]=_0x1b3846;this['edges'][_0x1b3846['id']]=[];};Graph[_0x568a('0x5')]['addEdge']=function(_0x2b6415,_0x14ea1a,_0x1e7041){this[_0x568a('0x3')][_0x2b6415][_0x568a('0x7')]({'target':_0x14ea1a,'condition':_0x1e7041});this[_0x568a('0x4')]+=0x1;};Graph[_0x568a('0x5')][_0x568a('0x8')]=function(){return _[_0x568a('0x8')](this[_0x568a('0x2')]);};Graph[_0x568a('0x5')][_0x568a('0x9')]=function(){return this['numberOfEdges'];};Graph[_0x568a('0x5')][_0x568a('0xa')]=function(_0x34532d){return this[_0x568a('0x2')][_0x34532d];};Graph[_0x568a('0x5')][_0x568a('0xb')]=function(_0x38c482,_0x1db359){if(!this[_0x568a('0x2')][_0x38c482]){return logger['info'](_0x568a('0xc'));}var _0x45d52f=_0x1db359(this[_0x568a('0x2')][_0x38c482]);if(!_0x45d52f){return logger[_0x568a('0xd')](_0x568a('0xe'));}if(this[_0x568a('0x3')][_0x38c482][_0x568a('0xf')]===0x0){return logger[_0x568a('0xd')]('no\x20edge/s\x20available');}for(var _0x30bd36=0x0,_0x44b2c1=[],_0x44a69f=![];_0x30bd36<this[_0x568a('0x3')][_0x38c482][_0x568a('0xf')];_0x30bd36+=0x1){if(this[_0x568a('0x3')][_0x38c482][_0x30bd36][_0x568a('0x10')]){_0x44b2c1=this['edges'][_0x38c482][_0x30bd36]['condition'][_0x568a('0x11')](',');for(var _0x3add1a=0x0;_0x3add1a<_0x44b2c1[_0x568a('0xf')];_0x3add1a+=0x1){if(this[_0x568a('0x2')][_0x38c482][_0x568a('0x12')]==='vswitch'&&_0x44b2c1[_0x3add1a]==='-'){_0x44a69f=this[_0x568a('0x3')][_0x38c482][_0x30bd36]['target'];logger[_0x568a('0xd')](_0x568a('0x13'),_0x44b2c1[_0x3add1a],this['edges'][_0x38c482][_0x30bd36][_0x568a('0x14')]);}else if(this['vertices'][_0x38c482]['agicommand']==='menu'&&_0x44b2c1[_0x3add1a]==='i'){_0x44a69f=this[_0x568a('0x3')][_0x38c482][_0x30bd36]['target'];logger[_0x568a('0xd')](_0x568a('0x15'),_0x44b2c1[_0x3add1a],this[_0x568a('0x3')][_0x38c482][_0x30bd36][_0x568a('0x14')]);}if(_0x44b2c1[_0x3add1a]===_0x45d52f){return this[_0x568a('0xb')](this['edges'][_0x38c482][_0x30bd36]['target'],_0x1db359);}}}else{return this[_0x568a('0xb')](this[_0x568a('0x3')][_0x38c482][_0x30bd36][_0x568a('0x14')],_0x1db359);}}if(_0x44b2c1['length']){if(this[_0x568a('0x2')][_0x38c482][_0x568a('0x12')]===_0x568a('0x16')){if(_0x44a69f){return this[_0x568a('0xb')](_0x44a69f,_0x1db359);}return logger[_0x568a('0xd')](_0x568a('0x17'));}else if(_['includes'](verticesWithRetry,this[_0x568a('0x2')][_0x38c482]['agicommand'])){if(_0x45d52f==='-'){return logger[_0x568a('0xd')](_0x568a('0x18'));}if(_0x44a69f&&_0x45d52f!=='t'){return this['traverseBFS'](_0x44a69f,_0x1db359);}return this[_0x568a('0xb')](_0x38c482,_0x1db359);}return logger[_0x568a('0xd')](_0x568a('0x19'));}};module[_0x568a('0x1a')]=Graph;
\ No newline at end of file
+var _0x1239=['split','agicommand','target','invalid','vswitch','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','no\x20edge/s\x20available','length'];(function(_0x2f06e0,_0x2e1c2a){var _0xf2711b=function(_0x32036c){while(--_0x32036c){_0x2f06e0['push'](_0x2f06e0['shift']());}};_0xf2711b(++_0x2e1c2a);}(_0x1239,0xd3));var _0x9123=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x1239[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x9123('0x0'));var logger=require(_0x9123('0x1'))(_0x9123('0x2'));var verticesWithRetry=[_0x9123('0x3'),_0x9123('0x4'),_0x9123('0x5')];var Graph=function(){this[_0x9123('0x6')]={};this[_0x9123('0x7')]={};this[_0x9123('0x8')]=0x0;};Graph[_0x9123('0x9')]['addVertex']=function(_0x481896){this[_0x9123('0x6')][_0x481896['id']]=_0x481896;this[_0x9123('0x7')][_0x481896['id']]=[];};Graph[_0x9123('0x9')][_0x9123('0xa')]=function(_0x16516f,_0x19f959,_0x22a7ca){this[_0x9123('0x7')][_0x16516f][_0x9123('0xb')]({'target':_0x19f959,'condition':_0x22a7ca});this[_0x9123('0x8')]+=0x1;};Graph['prototype'][_0x9123('0xc')]=function(){return _['size'](this['vertices']);};Graph['prototype'][_0x9123('0xd')]=function(){return this[_0x9123('0x8')];};Graph[_0x9123('0x9')][_0x9123('0xe')]=function(_0x4ef7a5){return this[_0x9123('0x6')][_0x4ef7a5];};Graph[_0x9123('0x9')][_0x9123('0xf')]=function(_0x36717d,_0x45993b){if(!this[_0x9123('0x6')][_0x36717d]){return logger[_0x9123('0x10')](_0x9123('0x11'));}var _0xe1c264=_0x45993b(this[_0x9123('0x6')][_0x36717d]);if(!_0xe1c264){return logger[_0x9123('0x10')](_0x9123('0x12'));}if(this[_0x9123('0x7')][_0x36717d]['length']===0x0){return logger[_0x9123('0x10')](_0x9123('0x13'));}for(var _0x183b59=0x0,_0x305f1f=[],_0x369db5=![];_0x183b59<this[_0x9123('0x7')][_0x36717d][_0x9123('0x14')];_0x183b59+=0x1){if(this[_0x9123('0x7')][_0x36717d][_0x183b59]['condition']){_0x305f1f=this['edges'][_0x36717d][_0x183b59]['condition'][_0x9123('0x15')](',');for(var _0x3cad92=0x0;_0x3cad92<_0x305f1f['length'];_0x3cad92+=0x1){if(this[_0x9123('0x6')][_0x36717d][_0x9123('0x16')]==='vswitch'&&_0x305f1f[_0x3cad92]==='-'){_0x369db5=this[_0x9123('0x7')][_0x36717d][_0x183b59][_0x9123('0x17')];logger['info']('default',_0x305f1f[_0x3cad92],this[_0x9123('0x7')][_0x36717d][_0x183b59][_0x9123('0x17')]);}else if(this[_0x9123('0x6')][_0x36717d][_0x9123('0x16')]===_0x9123('0x3')&&_0x305f1f[_0x3cad92]==='i'){_0x369db5=this[_0x9123('0x7')][_0x36717d][_0x183b59][_0x9123('0x17')];logger['info'](_0x9123('0x18'),_0x305f1f[_0x3cad92],this[_0x9123('0x7')][_0x36717d][_0x183b59]['target']);}if(_0x305f1f[_0x3cad92]===_0xe1c264){return this[_0x9123('0xf')](this[_0x9123('0x7')][_0x36717d][_0x183b59][_0x9123('0x17')],_0x45993b);}}}else{return this[_0x9123('0xf')](this['edges'][_0x36717d][_0x183b59]['target'],_0x45993b);}}if(_0x305f1f[_0x9123('0x14')]){if(this[_0x9123('0x6')][_0x36717d][_0x9123('0x16')]===_0x9123('0x19')){if(_0x369db5){return this[_0x9123('0xf')](_0x369db5,_0x45993b);}return logger[_0x9123('0x10')]('default\x20on\x20switch\x20not\x20found');}else if(_['includes'](verticesWithRetry,this[_0x9123('0x6')][_0x36717d][_0x9123('0x16')])){if(_0xe1c264==='-'){return logger[_0x9123('0x10')](_0x9123('0x1a'));}if(_0x369db5&&_0xe1c264!=='t'){return this[_0x9123('0xf')](_0x369db5,_0x45993b);}return this[_0x9123('0xf')](_0x36717d,_0x45993b);}return logger[_0x9123('0x10')](_0x9123('0x1b'));}};module[_0x9123('0x1c')]=Graph;
\ No newline at end of file
index 705226f..5b6480d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f54=['name','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','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','callerid','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','isArray','length','target','value','getSquareProject','then','createSquareReport','catch','indexOf','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','production','joinAt','mxCell','traverseBFS','vertex','gotoc','context','extension','priority','code','result','response','toString','clear','isUndefined','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','finally','./server','listening','connection','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./graph','./vertices','127.0.0.1','error','stack','log','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x3f54,0xef));var _0x43f5=function(_0x596f6e,_0x3f8857){_0x596f6e=_0x596f6e-0x0;var _0x1e0803=_0x3f54[_0x596f6e];return _0x1e0803;};'use strict';var parser=require('xml2json');var _=require(_0x43f5('0x0'));var syncho=require(_0x43f5('0x1'));var util=require(_0x43f5('0x2'));var moment=require(_0x43f5('0x3'));var config=require(_0x43f5('0x4'));var logger=require(_0x43f5('0x5'))(_0x43f5('0x6'));var utilLicense=require(_0x43f5('0x7'));var rpc=require(_0x43f5('0x8'));var mailRpc=require('./mailRpc');var Graph=require(_0x43f5('0x9'));var Vertices=require(_0x43f5('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x43f5('0x6')]=_['defaults'](config['agi'],{'ip':_0x43f5('0xb'),'port':0x11dd});function connectionHandler(_0xbb7605){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0xbb7605);agiHandler(_0xbb7605);}catch(_0x3385d0){logger[_0x43f5('0xc')](_0x3385d0[_0x43f5('0xd')]);}});});}function listeningHandler(){console[_0x43f5('0xe')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi']['port']);logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x11'),config['agi']['ip'],config[_0x43f5('0x6')][_0x43f5('0x12')]));}function errorHandler(_0x3b69e9){if(_0x3b69e9&&_0x3b69e9[_0x43f5('0x13')]&&_0x3b69e9['message']){logger['error'](util[_0x43f5('0x10')]('[%s]\x20%s',_0x3b69e9['name'],_0x3b69e9['message']));}else{logger[_0x43f5('0xc')](util['format'](_0x43f5('0x14'),_0x3b69e9['stack']));}}function closeHandler(){logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x15'),this[_0x43f5('0x16')],this[_0x43f5('0x17')],this['callerid'],this[_0x43f5('0x18')],this[_0x43f5('0x19')]));try{createSquareReport(this);}catch(_0x14eb69){logger['error'](_0x14eb69[_0x43f5('0xd')]);}}function timeoutHandler(){logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x1a'),this[_0x43f5('0x16')],this[_0x43f5('0x17')],this['callerid'],this[_0x43f5('0x18')],this[_0x43f5('0x19')]));}function hangupHandler(){logger['info'](util[_0x43f5('0x10')](_0x43f5('0x1b'),this[_0x43f5('0x16')],this[_0x43f5('0x17')],this[_0x43f5('0x1c')],this['dnid'],this[_0x43f5('0x19')]));this['evtHangup']=!![];}function getRoot(_0x4443d2){return parser[_0x43f5('0x1d')](_0x4443d2,{'object':!![]})[_0x43f5('0x1e')][_0x43f5('0x1f')];}function addVertex(_0x3d9b9c,_0x1dc50f,_0x31c8c5){_0x1dc50f[_0x43f5('0x20')]=_0x31c8c5;if(_0x1dc50f[_0x43f5('0x21')](_0x43f5('0x22'))){_0x1dc50f[_0x43f5('0x23')]=parseInt(_0x1dc50f[_0x43f5('0x22')],0xa);}_0x3d9b9c[_0x43f5('0x24')](_[_0x43f5('0x25')](_0x1dc50f,'mxCell'));}function initGraph(_0x231755,_0x5f650d){var _0x11a446=new Graph();for(var _0x78d395 in _0x231755){if(_0x231755[_0x43f5('0x21')](_0x78d395)){if(_[_0x43f5('0x26')](_0x231755[_0x78d395])){for(var _0x5cd723=0x0;_0x5cd723<_0x231755[_0x78d395]['length'];_0x5cd723+=0x1){addVertex(_0x11a446,_0x231755[_0x78d395][_0x5cd723],_0x78d395);}}else{addVertex(_0x11a446,_0x231755[_0x78d395],_0x78d395);}}}for(var _0x5bf2c7=0x0;_0x5bf2c7<_0x5f650d[_0x43f5('0x27')];_0x5bf2c7+=0x1){if(_0x5f650d[_0x5bf2c7]['source']&&_0x5f650d[_0x5bf2c7][_0x43f5('0x28')]){_0x11a446['addEdge'](_0x5f650d[_0x5bf2c7]['source'],_0x5f650d[_0x5bf2c7]['target'],_0x5f650d[_0x5bf2c7][_0x43f5('0x29')]);}}return _0x11a446;}function getSquareProject(_0x22acb7,_0xa335a4){rpc[_0x43f5('0x2a')](_0x22acb7)[_0x43f5('0x2b')](function(_0x632a0e){_0xa335a4(null,_0x632a0e);})['catch'](function(_0x1a7ba0){_0xa335a4(null,_0x1a7ba0);});}function createSquareReport(_0x4901ea,_0x35f8c7){rpc[_0x43f5('0x2c')](_0x4901ea)[_0x43f5('0x2b')](function(_0x5d29a2){if(_0x35f8c7){_0x35f8c7(null,_0x5d29a2);}})[_0x43f5('0x2d')](function(_0x4b0b4f){if(_0x35f8c7){_0x35f8c7(null,_0x4b0b4f);}});}function setChannelVariables(_0x323702){for(var _0x578e54 in _0x323702){if(_0x323702['hasOwnProperty'](_0x578e54)){if(_0x578e54[_0x43f5('0x2e')](_0x43f5('0x2f'))===0x0){_0x323702[_0x578e54[_0x43f5('0x30')](0x4)]=_0x323702[_0x578e54];delete _0x323702[_0x578e54];}}}}function getLogFromObject(_0x41f7b4){return util[_0x43f5('0x31')](_0x41f7b4,{'showHidden':![],'depth':null});}function agiHandler(_0xaeecec){var _0x40aa29,_0x33d4f8,_0x4349ee,_0x5b1d58,_0x3ae68e;logger[_0x43f5('0x32')](_0x43f5('0x33'),JSON[_0x43f5('0x34')](_0xaeecec,null,0x2));logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x35'),_0xaeecec[_0x43f5('0x16')],_0xaeecec[_0x43f5('0x17')],_0xaeecec['callerid'],_0xaeecec['dnid'],_0xaeecec[_0x43f5('0x19')]));_0xaeecec['on'](_0x43f5('0xc'),errorHandler);_0xaeecec['on'](_0x43f5('0x36'),closeHandler);_0xaeecec['on'](_0x43f5('0x37'),timeoutHandler);_0xaeecec[_0x43f5('0x38')]=![];_0xaeecec['on'](_0x43f5('0x39'),hangupHandler);var _0x45908e=getSquareProject['sync'](null,_0xaeecec[_0x43f5('0x16')]);if(_0x45908e){if(_0x45908e[_0x43f5('0x3a')]){_0x40aa29=getRoot(_0x45908e[_0x43f5('0x3a')]);if(_0x40aa29&&_0x40aa29['start']){logger[_0x43f5('0x32')]('root',JSON[_0x43f5('0x34')](_0x40aa29,null,0x2));_0xaeecec[_0x43f5('0x3b')]=moment()[_0x43f5('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x33d4f8=initGraph(_['omit'](_0x40aa29,_0x43f5('0x3c')),_0x40aa29['mxCell']);_0x4349ee=new Vertices(_0xaeecec,rpc,mailRpc);logger[_0x43f5('0xf')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xaeecec[_0x43f5('0x16')],_0xaeecec['calleridname'],_0xaeecec[_0x43f5('0x1c')],_0xaeecec[_0x43f5('0x18')],_0xaeecec[_0x43f5('0x19')]));_0x33d4f8[_0x43f5('0x3d')](_0x40aa29['start']['id'],function(_0x471d19){try{_0x471d19=_0x4349ee['clear'](_0x471d19);logger[_0x43f5('0x32')](_0x43f5('0x3e'),JSON[_0x43f5('0x34')](_0x471d19,null,0x2));if(_0x471d19[_0x43f5('0x20')]===_0x43f5('0x3f')){logger[_0x43f5('0xf')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0xaeecec[_0x43f5('0x40')]=_0x471d19['context']||_0xaeecec['context'];_0xaeecec[_0x43f5('0x41')]=_0x471d19['extension'];_0xaeecec[_0x43f5('0x42')]=_0x471d19['priority']?_0x471d19['priority']-0x1:0x1;return null;}else if(_0x471d19&&_0x4349ee[_0x471d19['agicommand']]){_0x3ae68e=_0x4349ee[_0x471d19['agicommand']](_0x471d19);logger[_0x43f5('0xf')]('response',JSON[_0x43f5('0x34')](_0x3ae68e,null,0x2));if(_0x3ae68e&&_0x3ae68e[_0x43f5('0x43')]===AGI_CODE_SUCCESS&&_0x3ae68e[_0x43f5('0x44')]!==AGI_RESULT_ERROR&&!_0xaeecec['evtHangup']){logger[_0x43f5('0x32')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return _['isUndefined'](_0x3ae68e[_0x43f5('0x44')])?null:_0x3ae68e[_0x43f5('0x44')][_0x43f5('0x46')]();}else{logger[_0x43f5('0xc')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x1e7665){logger[_0x43f5('0xc')](_0x1e7665['stack']);return null;}});if(_0x40aa29['finally']){logger[_0x43f5('0xf')](util[_0x43f5('0x10')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xaeecec['arg_1'],_0xaeecec[_0x43f5('0x17')],_0xaeecec[_0x43f5('0x1c')],_0xaeecec[_0x43f5('0x18')],_0xaeecec[_0x43f5('0x19')]));_0x33d4f8[_0x43f5('0x3d')](_0x40aa29['finally']['id'],function(_0x18ecb7){try{_0x18ecb7=_0x4349ee[_0x43f5('0x47')](_0x18ecb7);logger['debug'](_0x43f5('0x3e'),JSON[_0x43f5('0x34')](_0x18ecb7,null,0x2));if(_0x18ecb7&&_0x4349ee[_0x18ecb7[_0x43f5('0x20')]]){_0x3ae68e=_0x4349ee[_0x18ecb7[_0x43f5('0x20')]](_0x18ecb7);if(_0x3ae68e){logger[_0x43f5('0x32')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return _[_0x43f5('0x48')](_0x3ae68e[_0x43f5('0x44')])?null:_0x3ae68e['result']['toString']();}else{logger[_0x43f5('0xc')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return null;}}else{logger[_0x43f5('0xc')]('agicommand\x20not\x20found');return null;}}catch(_0x123f8b){logger['error'](_0x123f8b[_0x43f5('0xd')]);return null;}});}logger['info'](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xaeecec[_0x43f5('0x16')],_0xaeecec[_0x43f5('0x17')],_0xaeecec[_0x43f5('0x1c')],_0xaeecec['dnid'],_0xaeecec[_0x43f5('0x19')]));logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x49'),_0xaeecec[_0x43f5('0x40')],_0xaeecec[_0x43f5('0x41')],parseInt(_0xaeecec[_0x43f5('0x42')],0xa)+0x1));_0xaeecec[_0x43f5('0x4a')](_0xaeecec[_0x43f5('0x40')],_0xaeecec['extension'],parseInt(_0xaeecec[_0x43f5('0x42')],0xa)+0x1);_0xaeecec[_0x43f5('0x36')]();}}else{logger['error'](util[_0x43f5('0x10')](_0x43f5('0x4b'),_0xaeecec[_0x43f5('0x16')]));_0xaeecec[_0x43f5('0x4a')](_0xaeecec['context'],_0xaeecec['extension'],parseInt(_0xaeecec['priority'],0xa)+0x1);_0xaeecec[_0x43f5('0x36')]();}}else{logger[_0x43f5('0xc')](util['format'](_0x43f5('0x4c'),_0xaeecec[_0x43f5('0x16')]));_0xaeecec[_0x43f5('0x4a')](_0xaeecec['context'],_0xaeecec[_0x43f5('0x41')],parseInt(_0xaeecec[_0x43f5('0x42')],0xa)+0x1);_0xaeecec[_0x43f5('0x36')]();}}function main(){var _0x54a472;return utilLicense['getLicense']()[_0x43f5('0x2b')](function(_0x5999b6){if(_0x5999b6){if(_0x5999b6['voice']){if(_0x5999b6[_0x43f5('0x4d')]&&_0x5999b6['callysquare']>0x0){logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x4e'),_0x5999b6['callysquare']));_0x54a472=_0x5999b6[_0x43f5('0x4d')];}else{logger[_0x43f5('0xf')](_0x43f5('0x4f'));}}else{logger[_0x43f5('0xf')](_0x43f5('0x50'));_0x54a472=-0x1;}}})[_0x43f5('0x2d')](function(_0x53140f){logger['error'](_0x43f5('0x51'),_0x53140f['stack']);})[_0x43f5('0x52')](function(){var _0xd09593=require(_0x43f5('0x53'))(config[_0x43f5('0x6')]['port'],config[_0x43f5('0x6')]['ip'],_0x54a472);_0xd09593['on'](_0x43f5('0xc'),errorHandler);_0xd09593['on'](_0x43f5('0x54'),listeningHandler);_0xd09593['on'](_0x43f5('0x55'),connectionHandler);_0xd09593['on'](_0x43f5('0x36'),closeHandler);});}main();
\ No newline at end of file
+var _0x4fd6=['sync','start','debug','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','defaults','127.0.0.1','nextTick','stack','log','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','[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','uniqueid','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','addVertex','omit','mxCell','isArray','source','target','value','getSquareProject','then','createSquareReport','catch','indexOf','substring','inspect','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x4fd6,0x1d7));var _0x64fd=function(_0x1e50fc,_0x3d2684){_0x1e50fc=_0x1e50fc-0x0;var _0x497f51=_0x4fd6[_0x1e50fc];return _0x497f51;};'use strict';var parser=require(_0x64fd('0x0'));var _=require(_0x64fd('0x1'));var syncho=require(_0x64fd('0x2'));var util=require(_0x64fd('0x3'));var moment=require(_0x64fd('0x4'));var config=require(_0x64fd('0x5'));var logger=require(_0x64fd('0x6'))(_0x64fd('0x7'));var utilLicense=require(_0x64fd('0x8'));var rpc=require(_0x64fd('0x9'));var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x64fd('0x7')]=_[_0x64fd('0xa')](config[_0x64fd('0x7')],{'ip':_0x64fd('0xb'),'port':0x11dd});function connectionHandler(_0x31509f){process[_0x64fd('0xc')](function(){syncho(function(){try{setChannelVariables(_0x31509f);agiHandler(_0x31509f);}catch(_0x1cf6ac){logger['error'](_0x1cf6ac[_0x64fd('0xd')]);}});});}function listeningHandler(){console[_0x64fd('0xe')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x64fd('0x7')][_0x64fd('0xf')]);logger[_0x64fd('0x10')](util[_0x64fd('0x11')](_0x64fd('0x12'),config[_0x64fd('0x7')]['ip'],config[_0x64fd('0x7')][_0x64fd('0xf')]));}function errorHandler(_0xf89747){if(_0xf89747&&_0xf89747[_0x64fd('0x13')]&&_0xf89747[_0x64fd('0x14')]){logger[_0x64fd('0x15')](util[_0x64fd('0x11')](_0x64fd('0x16'),_0xf89747[_0x64fd('0x13')],_0xf89747[_0x64fd('0x14')]));}else{logger[_0x64fd('0x15')](util[_0x64fd('0x11')](_0x64fd('0x17'),_0xf89747['stack']));}}function closeHandler(){logger['info'](util[_0x64fd('0x11')](_0x64fd('0x18'),this[_0x64fd('0x19')],this[_0x64fd('0x1a')],this[_0x64fd('0x1b')],this[_0x64fd('0x1c')],this['uniqueid']));try{createSquareReport(this);}catch(_0x5487d3){logger['error'](_0x5487d3[_0x64fd('0xd')]);}}function timeoutHandler(){logger[_0x64fd('0x10')](util['format'](_0x64fd('0x1d'),this[_0x64fd('0x19')],this[_0x64fd('0x1a')],this[_0x64fd('0x1b')],this[_0x64fd('0x1c')],this['uniqueid']));}function hangupHandler(){logger[_0x64fd('0x10')](util[_0x64fd('0x11')](_0x64fd('0x1e'),this[_0x64fd('0x19')],this['calleridname'],this[_0x64fd('0x1b')],this[_0x64fd('0x1c')],this[_0x64fd('0x1f')]));this[_0x64fd('0x20')]=!![];}function getRoot(_0x1d3198){return parser[_0x64fd('0x21')](_0x1d3198,{'object':!![]})[_0x64fd('0x22')][_0x64fd('0x23')];}function addVertex(_0x10fe5e,_0x1b7587,_0x4703fd){_0x1b7587[_0x64fd('0x24')]=_0x4703fd;if(_0x1b7587[_0x64fd('0x25')](_0x64fd('0x26'))){_0x1b7587['maxRetry']=parseInt(_0x1b7587[_0x64fd('0x26')],0xa);}_0x10fe5e[_0x64fd('0x27')](_[_0x64fd('0x28')](_0x1b7587,_0x64fd('0x29')));}function initGraph(_0x411ceb,_0x4f010b){var _0x461b9d=new Graph();for(var _0xb99ad8 in _0x411ceb){if(_0x411ceb[_0x64fd('0x25')](_0xb99ad8)){if(_[_0x64fd('0x2a')](_0x411ceb[_0xb99ad8])){for(var _0x2eff7c=0x0;_0x2eff7c<_0x411ceb[_0xb99ad8]['length'];_0x2eff7c+=0x1){addVertex(_0x461b9d,_0x411ceb[_0xb99ad8][_0x2eff7c],_0xb99ad8);}}else{addVertex(_0x461b9d,_0x411ceb[_0xb99ad8],_0xb99ad8);}}}for(var _0x152573=0x0;_0x152573<_0x4f010b['length'];_0x152573+=0x1){if(_0x4f010b[_0x152573][_0x64fd('0x2b')]&&_0x4f010b[_0x152573]['target']){_0x461b9d['addEdge'](_0x4f010b[_0x152573][_0x64fd('0x2b')],_0x4f010b[_0x152573][_0x64fd('0x2c')],_0x4f010b[_0x152573][_0x64fd('0x2d')]);}}return _0x461b9d;}function getSquareProject(_0x42e280,_0x339792){rpc[_0x64fd('0x2e')](_0x42e280)[_0x64fd('0x2f')](function(_0x1c97a3){_0x339792(null,_0x1c97a3);})['catch'](function(_0x59fb83){_0x339792(null,_0x59fb83);});}function createSquareReport(_0x8a4b0f,_0x2f441c){rpc[_0x64fd('0x30')](_0x8a4b0f)['then'](function(_0xa9228f){if(_0x2f441c){_0x2f441c(null,_0xa9228f);}})[_0x64fd('0x31')](function(_0xfa991f){if(_0x2f441c){_0x2f441c(null,_0xfa991f);}});}function setChannelVariables(_0x4e05d4){for(var _0x1bd61a in _0x4e05d4){if(_0x4e05d4[_0x64fd('0x25')](_0x1bd61a)){if(_0x1bd61a[_0x64fd('0x32')]('agi_')===0x0){_0x4e05d4[_0x1bd61a[_0x64fd('0x33')](0x4)]=_0x4e05d4[_0x1bd61a];delete _0x4e05d4[_0x1bd61a];}}}}function getLogFromObject(_0x5bcbc1){return util[_0x64fd('0x34')](_0x5bcbc1,{'showHidden':![],'depth':null});}function agiHandler(_0x26be34){var _0x13987a,_0x4531c5,_0xdf0396,_0xe2aba8,_0x16f239;logger['debug']('variables',JSON[_0x64fd('0x35')](_0x26be34,null,0x2));logger[_0x64fd('0x10')](util[_0x64fd('0x11')](_0x64fd('0x36'),_0x26be34[_0x64fd('0x19')],_0x26be34[_0x64fd('0x1a')],_0x26be34[_0x64fd('0x1b')],_0x26be34[_0x64fd('0x1c')],_0x26be34[_0x64fd('0x1f')]));_0x26be34['on'](_0x64fd('0x15'),errorHandler);_0x26be34['on'](_0x64fd('0x37'),closeHandler);_0x26be34['on'](_0x64fd('0x38'),timeoutHandler);_0x26be34[_0x64fd('0x20')]=![];_0x26be34['on']('hangup',hangupHandler);var _0x540987=getSquareProject[_0x64fd('0x39')](null,_0x26be34[_0x64fd('0x19')]);if(_0x540987){if(_0x540987['production']){_0x13987a=getRoot(_0x540987['production']);if(_0x13987a&&_0x13987a[_0x64fd('0x3a')]){logger[_0x64fd('0x3b')](_0x64fd('0x23'),JSON[_0x64fd('0x35')](_0x13987a,null,0x2));_0x26be34[_0x64fd('0x3c')]=moment()['format'](_0x64fd('0x3d'));_0x4531c5=initGraph(_[_0x64fd('0x28')](_0x13987a,_0x64fd('0x29')),_0x13987a[_0x64fd('0x29')]);_0xdf0396=new Vertices(_0x26be34,rpc,mailRpc);logger[_0x64fd('0x10')](util[_0x64fd('0x11')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x26be34[_0x64fd('0x19')],_0x26be34[_0x64fd('0x1a')],_0x26be34[_0x64fd('0x1b')],_0x26be34['dnid'],_0x26be34[_0x64fd('0x1f')]));_0x4531c5[_0x64fd('0x3e')](_0x13987a[_0x64fd('0x3a')]['id'],function(_0x3ea89d){try{_0x3ea89d=_0xdf0396[_0x64fd('0x3f')](_0x3ea89d);logger[_0x64fd('0x3b')]('vertex',JSON['stringify'](_0x3ea89d,null,0x2));if(_0x3ea89d[_0x64fd('0x24')]===_0x64fd('0x40')){logger[_0x64fd('0x10')](_0x64fd('0x41'));_0x26be34[_0x64fd('0x42')]=_0x3ea89d[_0x64fd('0x42')]||_0x26be34['context'];_0x26be34[_0x64fd('0x43')]=_0x3ea89d[_0x64fd('0x43')];_0x26be34[_0x64fd('0x44')]=_0x3ea89d[_0x64fd('0x44')]?_0x3ea89d[_0x64fd('0x44')]-0x1:0x1;return null;}else if(_0x3ea89d&&_0xdf0396[_0x3ea89d[_0x64fd('0x24')]]){_0x16f239=_0xdf0396[_0x3ea89d[_0x64fd('0x24')]](_0x3ea89d);logger[_0x64fd('0x10')](_0x64fd('0x45'),JSON[_0x64fd('0x35')](_0x16f239,null,0x2));if(_0x16f239&&_0x16f239[_0x64fd('0x46')]===AGI_CODE_SUCCESS&&_0x16f239[_0x64fd('0x47')]!==AGI_RESULT_ERROR&&!_0x26be34[_0x64fd('0x20')]){logger['debug'](_0x64fd('0x45'),getLogFromObject(_0x16f239));return _[_0x64fd('0x48')](_0x16f239[_0x64fd('0x47')])?null:_0x16f239[_0x64fd('0x47')][_0x64fd('0x49')]();}else{logger[_0x64fd('0x15')](_0x64fd('0x45'),getLogFromObject(_0x16f239));return null;}}else{logger[_0x64fd('0x15')]('agicommand\x20not\x20found');return null;}}catch(_0x48426d){logger[_0x64fd('0x15')](_0x48426d[_0x64fd('0xd')]);return null;}});if(_0x13987a['finally']){logger[_0x64fd('0x10')](util['format'](_0x64fd('0x4a'),_0x26be34[_0x64fd('0x19')],_0x26be34[_0x64fd('0x1a')],_0x26be34[_0x64fd('0x1b')],_0x26be34[_0x64fd('0x1c')],_0x26be34[_0x64fd('0x1f')]));_0x4531c5[_0x64fd('0x3e')](_0x13987a['finally']['id'],function(_0x5e70ff){try{_0x5e70ff=_0xdf0396[_0x64fd('0x3f')](_0x5e70ff);logger['debug'](_0x64fd('0x4b'),JSON['stringify'](_0x5e70ff,null,0x2));if(_0x5e70ff&&_0xdf0396[_0x5e70ff['agicommand']]){_0x16f239=_0xdf0396[_0x5e70ff[_0x64fd('0x24')]](_0x5e70ff);if(_0x16f239){logger['debug']('response',getLogFromObject(_0x16f239));return _[_0x64fd('0x48')](_0x16f239[_0x64fd('0x47')])?null:_0x16f239['result'][_0x64fd('0x49')]();}else{logger[_0x64fd('0x15')](_0x64fd('0x45'),getLogFromObject(_0x16f239));return null;}}else{logger[_0x64fd('0x15')](_0x64fd('0x4c'));return null;}}catch(_0x54f27d){logger[_0x64fd('0x15')](_0x54f27d[_0x64fd('0xd')]);return null;}});}logger['info'](util[_0x64fd('0x11')](_0x64fd('0x4d'),_0x26be34[_0x64fd('0x19')],_0x26be34[_0x64fd('0x1a')],_0x26be34[_0x64fd('0x1b')],_0x26be34['dnid'],_0x26be34[_0x64fd('0x1f')]));logger[_0x64fd('0x10')](util[_0x64fd('0x11')](_0x64fd('0x4e'),_0x26be34['context'],_0x26be34[_0x64fd('0x43')],parseInt(_0x26be34[_0x64fd('0x44')],0xa)+0x1));_0x26be34[_0x64fd('0x4f')](_0x26be34[_0x64fd('0x42')],_0x26be34[_0x64fd('0x43')],parseInt(_0x26be34['priority'],0xa)+0x1);_0x26be34['close']();}}else{logger[_0x64fd('0x15')](util[_0x64fd('0x11')]('Project\x20%s\x20not\x20published',_0x26be34[_0x64fd('0x19')]));_0x26be34[_0x64fd('0x4f')](_0x26be34[_0x64fd('0x42')],_0x26be34['extension'],parseInt(_0x26be34[_0x64fd('0x44')],0xa)+0x1);_0x26be34[_0x64fd('0x37')]();}}else{logger[_0x64fd('0x15')](util[_0x64fd('0x11')]('Project\x20%s\x20not\x20found',_0x26be34['arg_1']));_0x26be34['continueAt'](_0x26be34[_0x64fd('0x42')],_0x26be34[_0x64fd('0x43')],parseInt(_0x26be34[_0x64fd('0x44')],0xa)+0x1);_0x26be34[_0x64fd('0x37')]();}}function main(){var _0x5d0527;return utilLicense['getLicense']()[_0x64fd('0x2f')](function(_0x12e4e2){if(_0x12e4e2){if(_0x12e4e2[_0x64fd('0x50')]){if(_0x12e4e2['callysquare']&&_0x12e4e2[_0x64fd('0x51')]>0x0){logger[_0x64fd('0x10')](util[_0x64fd('0x11')](_0x64fd('0x52'),_0x12e4e2[_0x64fd('0x51')]));_0x5d0527=_0x12e4e2['callysquare'];}else{logger[_0x64fd('0x10')](_0x64fd('0x53'));}}else{logger['info'](_0x64fd('0x54'));_0x5d0527=-0x1;}}})[_0x64fd('0x31')](function(_0x4894de){logger[_0x64fd('0x15')]('[LICENSE]',_0x4894de['stack']);})['finally'](function(){var _0x66dae6=require(_0x64fd('0x55'))(config[_0x64fd('0x7')][_0x64fd('0xf')],config[_0x64fd('0x7')]['ip'],_0x5d0527);_0x66dae6['on'](_0x64fd('0x15'),errorHandler);_0x66dae6['on'](_0x64fd('0x56'),listeningHandler);_0x66dae6['on'](_0x64fd('0x57'),connectionHandler);_0x66dae6['on']('close',closeHandler);});}main();
\ No newline at end of file
index 7740376..d52283a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb92b=['catch','sendMailMessage','jayson/promise','client','http','then','error','message','result'];(function(_0x1443eb,_0x203408){var _0x2b8810=function(_0x48bc4e){while(--_0x48bc4e){_0x1443eb['push'](_0x1443eb['shift']());}};_0x2b8810(++_0x203408);}(_0xb92b,0x80));var _0xbb92=function(_0x3403c9,_0x3134ee){_0x3403c9=_0x3403c9-0x0;var _0x1daa4b=_0xb92b[_0x3403c9];return _0x1daa4b;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xbb92('0x0'));var client=jayson[_0xbb92('0x1')][_0xbb92('0x2')]({'port':0x232b});function request(_0x157e61,_0x415e70){return new BPromise(function(_0x1987ba,_0x11521d){return client['request'](_0x157e61,_0x415e70)[_0xbb92('0x3')](function(_0xa54a20){if(_0xa54a20[_0xbb92('0x4')]){return _0x11521d(_0xa54a20['error'][_0xbb92('0x5')]);}else{return _0x1987ba(_0xa54a20[_0xbb92('0x6')]);}})[_0xbb92('0x7')](function(_0x8a7a4b){return _0x11521d(_0x8a7a4b);});});}exports[_0xbb92('0x8')]=function(_0x1cc46d,_0x45690e){return request('SendMail',{'account':_0x1cc46d,'message':_0x45690e});};
\ No newline at end of file
+var _0xb345=['client','request','then','error','result','catch','SendMail'];(function(_0x53ba6c,_0x527027){var _0x5e4938=function(_0x540f09){while(--_0x540f09){_0x53ba6c['push'](_0x53ba6c['shift']());}};_0x5e4938(++_0x527027);}(_0xb345,0x17a));var _0x5b34=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xb345[_0x433a86];return _0x23000c;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x5b34('0x0')]['http']({'port':0x232b});function request(_0x3f2c56,_0x33d3a3){return new BPromise(function(_0x18cd24,_0x3c3ea1){return client[_0x5b34('0x1')](_0x3f2c56,_0x33d3a3)[_0x5b34('0x2')](function(_0x532ee8){if(_0x532ee8[_0x5b34('0x3')]){return _0x3c3ea1(_0x532ee8[_0x5b34('0x3')]['message']);}else{return _0x18cd24(_0x532ee8[_0x5b34('0x4')]);}})[_0x5b34('0x5')](function(_0x4c7a8b){return _0x3c3ea1(_0x4c7a8b);});});}exports['sendMailMessage']=function(_0x1e2722,_0x58f5d5){return request(_0x5b34('0x6'),{'account':_0x1e2722,'message':_0x58f5d5});};
\ No newline at end of file
index c395f0a..bc92114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe5e=['_transform','\x0d\x0a\x0d\x0a','substring','split','slice','trim','length','emit','headers','exports','util','stream','call','_localBuffer','_inBody','inherits','prototype'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0xbe5e,0x81));var _0xebe5=function(_0x2dd651,_0x2cf524){_0x2dd651=_0x2dd651-0x0;var _0x3b6c9e=_0xbe5e[_0x2dd651];return _0x3b6c9e;};'use strict';var util=require(_0xebe5('0x0'));var Transform=require(_0xebe5('0x1'))['Transform'];function AGIReply(_0x3060a7){Transform[_0xebe5('0x2')](this,_0x3060a7);this[_0xebe5('0x3')]='';this[_0xebe5('0x4')]=![];}util[_0xebe5('0x5')](AGIReply,Transform);AGIReply[_0xebe5('0x6')][_0xebe5('0x7')]=function(_0x5edcee,_0x11a3c3,_0x5aa5e5){var _0x35cf69='\x0a',_0x43c6df=['\x0a\x0a',_0xebe5('0x8')],_0x152456=-0x1,_0x73d4df=-0x1,_0xd28853='',_0x34b82f=0x0,_0x5a1168='',_0x19be5c='';this['_localBuffer']+=_0x5edcee['toString']();_0x5a1168=this[_0xebe5('0x3')];if(!this[_0xebe5('0x4')]){_0x34b82f=0x0;while(_0x43c6df[_0x34b82f]){while((_0x73d4df=_0x5a1168['indexOf'](_0x43c6df[_0x34b82f]))!=-0x1){_0xd28853=_0x43c6df[_0x34b82f];_0x19be5c=_0x5a1168[_0xebe5('0x9')](0x0,_0x73d4df);_0x5a1168=_0x5a1168[_0xebe5('0x9')](_0x73d4df+_0xd28853['length']);var _0x45c3b4=_0x19be5c[_0xebe5('0xa')](_0x35cf69),_0x3285a7=0x0,_0x480042={},_0x594b3c='',_0x560126='',_0x213c72=-0x1;while(_0x45c3b4[_0x3285a7]){_0x213c72=_0x45c3b4[_0x3285a7]['indexOf'](':');if(_0x213c72!=-0x1){_0x594b3c=_0x45c3b4[_0x3285a7][_0xebe5('0xb')](0x0,_0x213c72)[_0xebe5('0xc')]();_0x560126=_0x45c3b4[_0x3285a7][_0xebe5('0xb')](_0x213c72+0x1)['trim']();if(_0x594b3c[_0xebe5('0xd')]>0x0){_0x480042[_0x594b3c]=_0x560126;}}else{}_0x3285a7++;}this[_0xebe5('0xe')](_0xebe5('0xf'),_0x480042);this['_inBody']=!![];}_0x34b82f++;}this['_localBuffer']=_0x5a1168;}else{while((_0x152456=_0x5a1168['indexOf'](_0x35cf69))!=-0x1){_0x19be5c=_0x5a1168[_0xebe5('0x9')](0x0,_0x152456);this['emit']('line',_0x19be5c);_0x5a1168=_0x5a1168[_0xebe5('0x9')](_0x152456+_0x35cf69[_0xebe5('0xd')]);}this[_0xebe5('0x3')]=_0x5a1168;}_0x5aa5e5();};module[_0xebe5('0x10')]=AGIReply;
\ No newline at end of file
+var _0xfe56=['prototype','\x0d\x0a\x0d\x0a','_inBody','indexOf','substring','slice','trim','length','emit','exports','util','stream','Transform','call','_localBuffer','inherits'];(function(_0x5aac74,_0x435958){var _0x3e999b=function(_0xdf7db1){while(--_0xdf7db1){_0x5aac74['push'](_0x5aac74['shift']());}};_0x3e999b(++_0x435958);}(_0xfe56,0x9a));var _0x6fe5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfe56[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x6fe5('0x0'));var Transform=require(_0x6fe5('0x1'))[_0x6fe5('0x2')];function AGIReply(_0x3c0d28){Transform[_0x6fe5('0x3')](this,_0x3c0d28);this[_0x6fe5('0x4')]='';this['_inBody']=![];}util[_0x6fe5('0x5')](AGIReply,Transform);AGIReply[_0x6fe5('0x6')]['_transform']=function(_0x24ba09,_0x32e694,_0x970ad6){var _0x343808='\x0a',_0x7684fd=['\x0a\x0a',_0x6fe5('0x7')],_0x4ecbd3=-0x1,_0x3d757e=-0x1,_0x5053fe='',_0x33aab7=0x0,_0x3da937='',_0x198bc1='';this['_localBuffer']+=_0x24ba09['toString']();_0x3da937=this['_localBuffer'];if(!this[_0x6fe5('0x8')]){_0x33aab7=0x0;while(_0x7684fd[_0x33aab7]){while((_0x3d757e=_0x3da937[_0x6fe5('0x9')](_0x7684fd[_0x33aab7]))!=-0x1){_0x5053fe=_0x7684fd[_0x33aab7];_0x198bc1=_0x3da937[_0x6fe5('0xa')](0x0,_0x3d757e);_0x3da937=_0x3da937[_0x6fe5('0xa')](_0x3d757e+_0x5053fe['length']);var _0xd14539=_0x198bc1['split'](_0x343808),_0x5928d9=0x0,_0xcb6602={},_0x2775c0='',_0x391d95='',_0x3abe00=-0x1;while(_0xd14539[_0x5928d9]){_0x3abe00=_0xd14539[_0x5928d9][_0x6fe5('0x9')](':');if(_0x3abe00!=-0x1){_0x2775c0=_0xd14539[_0x5928d9][_0x6fe5('0xb')](0x0,_0x3abe00)['trim']();_0x391d95=_0xd14539[_0x5928d9][_0x6fe5('0xb')](_0x3abe00+0x1)[_0x6fe5('0xc')]();if(_0x2775c0[_0x6fe5('0xd')]>0x0){_0xcb6602[_0x2775c0]=_0x391d95;}}else{}_0x5928d9++;}this[_0x6fe5('0xe')]('headers',_0xcb6602);this['_inBody']=!![];}_0x33aab7++;}this[_0x6fe5('0x4')]=_0x3da937;}else{while((_0x4ecbd3=_0x3da937[_0x6fe5('0x9')](_0x343808))!=-0x1){_0x198bc1=_0x3da937[_0x6fe5('0xa')](0x0,_0x4ecbd3);this['emit']('line',_0x198bc1);_0x3da937=_0x3da937[_0x6fe5('0xa')](_0x4ecbd3+_0x343808['length']);}this[_0x6fe5('0x4')]=_0x3da937;}_0x970ad6();};module[_0x6fe5('0xf')]=AGIReply;
\ No newline at end of file
index e462470..ea2e3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2824=['http','request','message','result','catch','getSquareProject','production','getMailAccountById','Smtp','name','email','getSquareProjectById','ShowSquareProject','ShowVoiceQueue','getVariableById','ShowVariable','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','agentUnpause','agentLogout','LogoutUser','moment','lodash','util','jayson/promise','client'];(function(_0x4c3ee2,_0x2221fa){var _0x5a5184=function(_0x17c594){while(--_0x17c594){_0x4c3ee2['push'](_0x4c3ee2['shift']());}};_0x5a5184(++_0x2221fa);}(_0x2824,0x6f));var _0x4282=function(_0x3b7b93,_0x24d857){_0x3b7b93=_0x3b7b93-0x0;var _0x31f24d=_0x2824[_0x3b7b93];return _0x31f24d;};'use strict';var BPromise=require('bluebird');var moment=require(_0x4282('0x0'));var _=require(_0x4282('0x1'));var util=require(_0x4282('0x2'));var jayson=require(_0x4282('0x3'));var client=jayson[_0x4282('0x4')][_0x4282('0x5')]({'port':0x2329});function request(_0xdafbaa,_0x4a1463){return new BPromise(function(_0x118382,_0x2b739b){return client[_0x4282('0x6')](_0xdafbaa,_0x4a1463)['then'](function(_0x1f0adc){if(_0x1f0adc['error']){return _0x2b739b(_0x1f0adc['error'][_0x4282('0x7')]);}else{return _0x118382(_0x1f0adc[_0x4282('0x8')]);}})[_0x4282('0x9')](function(_0x33c0e2){return _0x2b739b(_0x33c0e2);});});}exports[_0x4282('0xa')]=function(_0x27aa09){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x27aa09},'attributes':[_0x4282('0xb')]}});};exports[_0x4282('0xc')]=function(_0x1df73f){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x1df73f},'include':[{'model':'MailServerOut','as':_0x4282('0xd')}],'attributes':['id',_0x4282('0xe'),_0x4282('0xf')]}});};exports[_0x4282('0x10')]=function(_0x6c3042){return request(_0x4282('0x11'),{'options':{'where':{'id':_0x6c3042},'attributes':[_0x4282('0xe')]}});};exports['getVoiceQueueById']=function(_0x4c6771){return request(_0x4282('0x12'),{'options':{'where':{'id':_0x4c6771},'attributes':['name']}});};exports[_0x4282('0x13')]=function(_0x50b10f){return request(_0x4282('0x14'),{'options':{'where':{'id':_0x50b10f},'attributes':['name']}});};exports['getSquareOdbcById']=function(_0x7cc56f){return request(_0x4282('0x15'),{'options':{'where':{'id':_0x7cc56f},'attributes':[_0x4282('0x16')]}});};exports[_0x4282('0x17')]=function(_0x429546){return request(_0x4282('0x18'),{'options':{'where':{'id':_0x429546},'attributes':[_0x4282('0xe')]}});};exports[_0x4282('0x19')]=function(_0x2a7df5){return request(_0x4282('0x1a'),{'options':{'where':{'id':_0x2a7df5},'attributes':[_0x4282('0xe')]}});};exports[_0x4282('0x1b')]=function(_0x1a67f1){return request('ShowSound',{'options':{'where':{'id':_0x1a67f1},'attributes':[_0x4282('0x1c')]}});};exports[_0x4282('0x1d')]=function(_0x3d2fb1){return request(_0x4282('0x1e'),{'options':{'raw':![],'where':{'id':_0x3d2fb1},'include':[{'model':_0x4282('0x1f'),'as':_0x4282('0x20')}]}});};exports[_0x4282('0x21')]=function(_0x95ae92){return request(_0x4282('0x22'),{'options':{'where':{'id':_0x95ae92},'attributes':['id',_0x4282('0xe')]}});};exports['createSmsMessage']=function(_0x5f34fc){return request(_0x4282('0x23'),{'body':_0x5f34fc});};exports[_0x4282('0x24')]=function(_0x4ecd2f){return request(_0x4282('0x25'),{'body':_0x4ecd2f});};exports[_0x4282('0x26')]=function(_0x186862){return request(_0x4282('0x27'),{'body':_[_0x4282('0x28')](_0x186862,{'project_name':_0x186862[_0x4282('0x29')],'prev_project_name':_0x186862[_0x4282('0x2a')]||'','is_subproject':_0x186862['arg_2']?!![]:![],'leaveAt':moment()[_0x4282('0x2b')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x4282('0x2c')]=function(_0x218b41){return request('CreateSquareRecording',{'body':_0x218b41});};exports[_0x4282('0x2d')]=function(_0x2e1c22){return request(_0x4282('0x2e'),{'body':_0x2e1c22});};exports[_0x4282('0x2f')]=function(_0x3b5004){return request(_0x4282('0x30'),{'options':{'raw':![],'where':{'phone':_0x3b5004['phone'],'ListId':_0x3b5004[_0x4282('0x31')]}}})['then'](function(_0x43f0ef){if(_0x43f0ef){return _0x43f0ef;}return request('CreateCmContact',{'body':_0x3b5004});});};exports[_0x4282('0x32')]=function(_0x2db865){return request(_0x4282('0x33'),{'options':{'where':{'id':_0x2db865},'attributes':[_0x4282('0xe')]}});};exports[_0x4282('0x34')]=function(_0x1132cd,_0x24d145){return request(_0x4282('0x35'),{'body':{'interface':_0x24d145},'options':{'where':_0x1132cd}});};exports[_0x4282('0x36')]=function(_0x28c99c,_0x16b0df,_0x4f1c98){return request('PauseUser',{'body':{'type':_0x16b0df,'uniqueid':_0x4f1c98},'options':{'where':_0x28c99c}});};exports[_0x4282('0x37')]=function(_0x1a421a){return request('UnpauseUser',{'body':{},'options':{'where':_0x1a421a}});};exports[_0x4282('0x38')]=function(_0x35a60b){return request(_0x4282('0x39'),{'body':{},'options':{'where':_0x35a60b}});};
\ No newline at end of file
+var _0x37a9=['format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById','agentLogin','LoginUser','agentPause','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','jayson/promise','client','then','error','message','result','catch','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','getVoiceQueueById','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','getSmsAccountById','ShowSmsAccount','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2'];(function(_0x5e0ee5,_0x21d640){var _0x111937=function(_0x523b3c){while(--_0x523b3c){_0x5e0ee5['push'](_0x5e0ee5['shift']());}};_0x111937(++_0x21d640);}(_0x37a9,0x15b));var _0x937a=function(_0xa540a8,_0x45cbd2){_0xa540a8=_0xa540a8-0x0;var _0xda3077=_0x37a9[_0xa540a8];return _0xda3077;};'use strict';var BPromise=require(_0x937a('0x0'));var moment=require(_0x937a('0x1'));var _=require('lodash');var util=require('util');var jayson=require(_0x937a('0x2'));var client=jayson[_0x937a('0x3')]['http']({'port':0x2329});function request(_0x15cdc3,_0x1b87b1){return new BPromise(function(_0x4b7eb4,_0x2b5cca){return client['request'](_0x15cdc3,_0x1b87b1)[_0x937a('0x4')](function(_0x40dc91){if(_0x40dc91[_0x937a('0x5')]){return _0x2b5cca(_0x40dc91[_0x937a('0x5')][_0x937a('0x6')]);}else{return _0x4b7eb4(_0x40dc91[_0x937a('0x7')]);}})[_0x937a('0x8')](function(_0x3263ca){return _0x2b5cca(_0x3263ca);});});}exports['getSquareProject']=function(_0x1c32c5){return request(_0x937a('0x9'),{'options':{'raw':![],'where':{'name':_0x1c32c5},'attributes':[_0x937a('0xa')]}});};exports[_0x937a('0xb')]=function(_0x200a81){return request(_0x937a('0xc'),{'options':{'raw':![],'where':{'id':_0x200a81},'include':[{'model':_0x937a('0xd'),'as':_0x937a('0xe')}],'attributes':['id',_0x937a('0xf'),'email']}});};exports['getSquareProjectById']=function(_0x5bb384){return request(_0x937a('0x9'),{'options':{'where':{'id':_0x5bb384},'attributes':[_0x937a('0xf')]}});};exports[_0x937a('0x10')]=function(_0x427616){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x427616},'attributes':[_0x937a('0xf')]}});};exports[_0x937a('0x11')]=function(_0x56af41){return request(_0x937a('0x12'),{'options':{'where':{'id':_0x56af41},'attributes':['name']}});};exports[_0x937a('0x13')]=function(_0x33290b){return request(_0x937a('0x14'),{'options':{'where':{'id':_0x33290b},'attributes':[_0x937a('0x15')]}});};exports[_0x937a('0x16')]=function(_0x1efcad){return request(_0x937a('0x17'),{'options':{'where':{'id':_0x1efcad},'attributes':[_0x937a('0xf')]}});};exports[_0x937a('0x18')]=function(_0x16ad10){return request(_0x937a('0x19'),{'options':{'where':{'id':_0x16ad10},'attributes':[_0x937a('0xf')]}});};exports[_0x937a('0x1a')]=function(_0x25db15){return request(_0x937a('0x1b'),{'options':{'where':{'id':_0x25db15},'attributes':[_0x937a('0x1c')]}});};exports[_0x937a('0x1d')]=function(_0x1550ee){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x1550ee},'include':[{'model':_0x937a('0x1e'),'as':'Intervals'}]}});};exports[_0x937a('0x1f')]=function(_0x197523){return request(_0x937a('0x20'),{'options':{'where':{'id':_0x197523},'attributes':['id',_0x937a('0xf')]}});};exports['createSmsMessage']=function(_0x567b82){return request('CreateSmsMessage',{'body':_0x567b82});};exports['createSquareDetailsReport']=function(_0x2292c3){return request(_0x937a('0x21'),{'body':_0x2292c3});};exports[_0x937a('0x22')]=function(_0x147082){return request(_0x937a('0x23'),{'body':_['merge'](_0x147082,{'project_name':_0x147082[_0x937a('0x24')],'prev_project_name':_0x147082[_0x937a('0x25')]||'','is_subproject':_0x147082[_0x937a('0x25')]?!![]:![],'leaveAt':moment()[_0x937a('0x26')](_0x937a('0x27'))})});};exports[_0x937a('0x28')]=function(_0x49dbe4){return request(_0x937a('0x29'),{'body':_0x49dbe4});};exports[_0x937a('0x2a')]=function(_0xb70acc){return request(_0x937a('0x2b'),{'body':_0xb70acc});};exports[_0x937a('0x2c')]=function(_0x2b9d57){return request(_0x937a('0x2d'),{'options':{'raw':![],'where':{'phone':_0x2b9d57[_0x937a('0x2e')],'ListId':_0x2b9d57['ListId']}}})[_0x937a('0x4')](function(_0x12db63){if(_0x12db63){return _0x12db63;}return request(_0x937a('0x2f'),{'body':_0x2b9d57});});};exports[_0x937a('0x30')]=function(_0x455d25){return request('ShowPause',{'options':{'where':{'id':_0x455d25},'attributes':['name']}});};exports[_0x937a('0x31')]=function(_0x5efe22,_0x440984){return request(_0x937a('0x32'),{'body':{'interface':_0x440984},'options':{'where':_0x5efe22}});};exports[_0x937a('0x33')]=function(_0xe902ae,_0xd9c88,_0x1fbcf0){return request('PauseUser',{'body':{'type':_0xd9c88,'uniqueid':_0x1fbcf0},'options':{'where':_0xe902ae}});};exports['agentUnpause']=function(_0x5f34c0){return request(_0x937a('0x34'),{'body':{},'options':{'where':_0x5f34c0}});};exports[_0x937a('0x35')]=function(_0x2c4bba){return request(_0x937a('0x36'),{'body':{},'options':{'where':_0x2c4bba}});};
\ No newline at end of file
index 890f35d..ca03a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['./lex'];(function(_0x4b6dbc,_0x56ca7d){var _0x2c3ca9=function(_0x2e0aa9){while(--_0x2e0aa9){_0x4b6dbc['push'](_0x4b6dbc['shift']());}};_0x2c3ca9(++_0x56ca7d);}(_0x14f5,0xae));var _0x514f=function(_0x396991,_0x1f01e3){_0x396991=_0x396991-0x0;var _0x53b9f5=_0x14f5[_0x396991];return _0x53b9f5;};var polly=require('./polly');var lex=require(_0x514f('0x0'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x9ca0=['./lex','exports','./polly'];(function(_0x3af420,_0x8d948e){var _0x438241=function(_0x496772){while(--_0x496772){_0x3af420['push'](_0x3af420['shift']());}};_0x438241(++_0x8d948e);}(_0x9ca0,0x65));var _0x09ca=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x9ca0[_0x187ee1];return _0x388160;};var polly=require(_0x09ca('0x0'));var lex=require(_0x09ca('0x1'));module[_0x09ca('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index b4a209c..949f52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec56=['./lib/api'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0xec56,0x1bd));var _0x6ec5=function(_0x152c3b,_0x50d091){_0x152c3b=_0x152c3b-0x0;var _0x5e099b=_0xec56[_0x152c3b];return _0x5e099b;};'use strict';var lex=require(_0x6ec5('0x0'));module['exports']=function(_0x4d6dcd,_0x10a273,_0x3b8a3f,_0x26a5af,_0x240ccf,_0x43c2cd){return lex(_0x4d6dcd,_0x10a273,_0x3b8a3f,_0x26a5af,_0x240ccf,_0x43c2cd);};
\ No newline at end of file
+var _0x0bb5=['./lib/api','exports'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x0bb5,0x148));var _0x50bb=function(_0xd15cb7,_0x2f9f29){_0xd15cb7=_0xd15cb7-0x0;var _0x3b6b96=_0x0bb5[_0xd15cb7];return _0x3b6b96;};'use strict';var lex=require(_0x50bb('0x0'));module[_0x50bb('0x1')]=function(_0x5e61cf,_0x5a12b6,_0x348380,_0x1aaa37,_0x6b7575,_0x117e36){return lex(_0x5e61cf,_0x5a12b6,_0x348380,_0x1aaa37,_0x6b7575,_0x117e36);};
\ No newline at end of file
index 245834a..2226229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0xb32c3f,_0x3fff3b){var _0x55eb6e=function(_0x12addb){while(--_0x12addb){_0xb32c3f['push'](_0xb32c3f['shift']());}};_0x55eb6e(++_0x3fff3b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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(_0x197a65,_0x551005){var _0x5ddf03=function(_0xbee691){while(--_0xbee691){_0x197a65['push'](_0x197a65['shift']());}};_0x5ddf03(++_0x551005);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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 64125c0..3470a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x148d=['exports'];(function(_0xdb6477,_0x41bfd3){var _0x30732c=function(_0x1dc0c9){while(--_0x1dc0c9){_0xdb6477['push'](_0xdb6477['shift']());}};_0x30732c(++_0x41bfd3);}(_0x148d,0xd9));var _0xd148=function(_0x1a592f,_0x422a1a){_0x1a592f=_0x1a592f-0x0;var _0x26b8cb=_0x148d[_0x1a592f];return _0x26b8cb;};'use strict';var polly=require('./lib/api');module[_0xd148('0x0')]=function(_0x40c11d,_0xf4da8a,_0x54f708,_0x536afb,_0x3080f8,_0x1c9720,_0x392e1f){return polly(_0x40c11d,_0xf4da8a,_0x54f708,_0x536afb,_0x3080f8,_0x1c9720,_0x392e1f);};
\ No newline at end of file
+var _0xc1e8=['./lib/api','exports'];(function(_0x2709e8,_0xd83286){var _0x24b998=function(_0x3c4c6a){while(--_0x3c4c6a){_0x2709e8['push'](_0x2709e8['shift']());}};_0x24b998(++_0xd83286);}(_0xc1e8,0x7c));var _0x8c1e=function(_0x1a8caa,_0x195483){_0x1a8caa=_0x1a8caa-0x0;var _0x9021fe=_0xc1e8[_0x1a8caa];return _0x9021fe;};'use strict';var polly=require(_0x8c1e('0x0'));module[_0x8c1e('0x1')]=function(_0x149a31,_0x38858a,_0x473d79,_0x58cb17,_0x59825c,_0x3b5624,_0x1665ab){return polly(_0x149a31,_0x38858a,_0x473d79,_0x58cb17,_0x59825c,_0x3b5624,_0x1665ab);};
\ No newline at end of file
index 60e2bf4..6173ba4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54eb=['Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text','path','randomstring','aws-sdk','synthesizeSpeech','writeFile','AudioStream'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x54eb,0xe0));var _0xb54e=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x54eb[_0x51020b];return _0x371e47;};'use strict';var fs=require('fs');var path=require(_0xb54e('0x0'));var BPromise=require('bluebird');var rs=require(_0xb54e('0x1'));var AWS=require(_0xb54e('0x2'));function pollyResult(_0x111a4f,_0x340641,_0x2ebed8){return new BPromise(function(_0x1dd370,_0x3325d1){_0x111a4f[_0xb54e('0x3')](_0x340641,function(_0x49b26d,_0x27c80f){if(_0x49b26d){_0x3325d1(_0x49b26d);}else if(_0x27c80f){if(_0x27c80f['AudioStream']instanceof Buffer){fs[_0xb54e('0x4')](_0x2ebed8,_0x27c80f[_0xb54e('0x5')],function(_0x484642){if(_0x484642){_0x3325d1(_0x484642);}else{_0x1dd370();}});}else{_0x3325d1(new Error(_0xb54e('0x6')));}}else{_0x3325d1(new Error(_0xb54e('0x7')));}});});}module['exports']=function(_0x2b9c30,_0x452385,_0x51b91d,_0x3120c1,_0x1a92e4,_0x24be5e,_0x427c1a){var _0x353ae3=new AWS[(_0xb54e('0x8'))]({'accessKeyId':_0x2b9c30,'secretAccessKey':_0x452385,'region':_0x51b91d});var _0xf47bfa={'Text':_0x1a92e4,'TextType':_0x24be5e||_0xb54e('0x9'),'OutputFormat':'mp3','VoiceId':_0x3120c1};return pollyResult(_0x353ae3,_0xf47bfa,_0x427c1a);};
\ No newline at end of file
+var _0x6bf0=['No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','randomstring','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x2074c7,_0x186848){var _0x3d0326=function(_0x2e2ae6){while(--_0x2e2ae6){_0x2074c7['push'](_0x2074c7['shift']());}};_0x3d0326(++_0x186848);}(_0x6bf0,0xf4));var _0x06bf=function(_0x3463bf,_0x2644e2){_0x3463bf=_0x3463bf-0x0;var _0x2c304b=_0x6bf0[_0x3463bf];return _0x2c304b;};'use strict';var fs=require('fs');var path=require(_0x06bf('0x0'));var BPromise=require('bluebird');var rs=require(_0x06bf('0x1'));var AWS=require('aws-sdk');function pollyResult(_0x3b49f2,_0x548e5e,_0x534f3a){return new BPromise(function(_0x14d957,_0x56f12d){_0x3b49f2[_0x06bf('0x2')](_0x548e5e,function(_0x1417fa,_0x263dd7){if(_0x1417fa){_0x56f12d(_0x1417fa);}else if(_0x263dd7){if(_0x263dd7[_0x06bf('0x3')]instanceof Buffer){fs[_0x06bf('0x4')](_0x534f3a,_0x263dd7['AudioStream'],function(_0x4d8af7){if(_0x4d8af7){_0x56f12d(_0x4d8af7);}else{_0x14d957();}});}else{_0x56f12d(new Error(_0x06bf('0x5')));}}else{_0x56f12d(new Error(_0x06bf('0x6')));}});});}module[_0x06bf('0x7')]=function(_0x385d68,_0x18e32b,_0x472956,_0x3e97c7,_0x462cad,_0x13636c,_0x26a7ca){var _0x2bde7a=new AWS['Polly']({'accessKeyId':_0x385d68,'secretAccessKey':_0x18e32b,'region':_0x472956});var _0x3dbafe={'Text':_0x462cad,'TextType':_0x13636c||_0x06bf('0x8'),'OutputFormat':_0x06bf('0x9'),'VoiceId':_0x3e97c7};return pollyResult(_0x2bde7a,_0x3dbafe,_0x26a7ca);};
\ No newline at end of file
index e971829..173002c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a99=['./lib/api','exports'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x7a99,0x144));var _0x97a9=function(_0x1dfe0f,_0x1b41cf){_0x1dfe0f=_0x1dfe0f-0x0;var _0x264ed7=_0x7a99[_0x1dfe0f];return _0x264ed7;};'use strict';var asr=require(_0x97a9('0x0'));module[_0x97a9('0x1')]=function(_0x563455,_0x2593ae,_0x1ba874,_0x45c0f4){return asr(_0x563455,_0x2593ae,_0x1ba874);};
\ No newline at end of file
+var _0x33bf=['./lib/api'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x33bf,0x198));var _0xf33b=function(_0xdbd4f7,_0x4e3bdd){_0xdbd4f7=_0xdbd4f7-0x0;var _0x5c3f9d=_0x33bf[_0xdbd4f7];return _0x5c3f9d;};'use strict';var asr=require(_0xf33b('0x0'));module['exports']=function(_0x3995bc,_0x225b3a,_0x481886,_0x508d0a){return asr(_0x3995bc,_0x225b3a,_0x481886);};
\ No newline at end of file
index 3bedb5a..58dce09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32d=['filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','length'];(function(_0x20e51b,_0x3e9eb6){var _0x4e12a8=function(_0x271b0d){while(--_0x271b0d){_0x20e51b['push'](_0x20e51b['shift']());}};_0x4e12a8(++_0x3e9eb6);}(_0xb32d,0x1da));var _0xdb32=function(_0x3504a0,_0x3f770f){_0x3504a0=_0x3504a0-0x0;var _0x3dfca3=_0xb32d[_0x3504a0];return _0x3dfca3;};'use strict';var url=require(_0xdb32('0x0'));var BPromise=require(_0xdb32('0x1'));var fs=require('fs');var host=_0xdb32('0x2');module[_0xdb32('0x3')]=function(_0x298769,_0x56a5af,_0x56bb98){return new BPromise(function(_0x2fe96e,_0x2c5527){var _0x581ceb;if(typeof _0x298769!==_0xdb32('0x4')||_0x298769[_0xdb32('0x5')]===0x0){return _0x2c5527(_0xdb32('0x6'));}if(typeof _0x56a5af!==_0xdb32('0x4')||_0x56a5af[_0xdb32('0x5')]===0x0){return _0x2c5527(_0xdb32('0x7'));}if(typeof _0x56bb98!=='undefined'&&(typeof _0x56bb98!==_0xdb32('0x4')||_0x56bb98[_0xdb32('0x5')]===0x0)){return _0x2c5527(_0xdb32('0x8'));}try{_0x581ceb=fs[_0xdb32('0x9')](_0x298769)[_0xdb32('0xa')](_0xdb32('0xb'));}catch(_0x112db6){return _0x2c5527(_0x112db6);}return _0x2fe96e({'method':_0xdb32('0xc'),'uri':host+_0xdb32('0xd')+_0x56a5af,'body':{'config':{'encoding':_0xdb32('0xe'),'sampleRateHertz':_0xdb32('0xf'),'languageCode':_0x56bb98},'audio':{'content':_0x581ceb}},'json':!![]});});};
\ No newline at end of file
+var _0xf290=['length','string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','bluebird','exports'];(function(_0x3b089c,_0xb6ceaa){var _0x479fc2=function(_0x5d3d20){while(--_0x5d3d20){_0x3b089c['push'](_0x3b089c['shift']());}};_0x479fc2(++_0xb6ceaa);}(_0xf290,0xde));var _0x0f29=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0xf290[_0xdefbc3];return _0x367798;};'use strict';var url=require('url');var BPromise=require(_0x0f29('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0x0f29('0x1')]=function(_0x4b16e4,_0xb8a620,_0x1b4f85){return new BPromise(function(_0x38f5b5,_0x28b644){var _0xfdab92;if(typeof _0x4b16e4!=='string'||_0x4b16e4[_0x0f29('0x2')]===0x0){return _0x28b644('filepath\x20should\x20be\x20a\x20string');}if(typeof _0xb8a620!==_0x0f29('0x3')||_0xb8a620[_0x0f29('0x2')]===0x0){return _0x28b644(_0x0f29('0x4'));}if(typeof _0x1b4f85!==_0x0f29('0x5')&&(typeof _0x1b4f85!==_0x0f29('0x3')||_0x1b4f85[_0x0f29('0x2')]===0x0)){return _0x28b644(_0x0f29('0x6'));}try{_0xfdab92=fs[_0x0f29('0x7')](_0x4b16e4)[_0x0f29('0x8')](_0x0f29('0x9'));}catch(_0xd4d3af){return _0x28b644(_0xd4d3af);}return _0x38f5b5({'method':_0x0f29('0xa'),'uri':host+_0x0f29('0xb')+_0xb8a620,'body':{'config':{'encoding':_0x0f29('0xc'),'sampleRateHertz':_0x0f29('0xd'),'languageCode':_0x1b4f85},'audio':{'content':_0xfdab92}},'json':!![]});});};
\ No newline at end of file
index c70c4fd..a90d285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddc7=['./asr','exports'];(function(_0x1cdf19,_0x2c4b46){var _0x340a02=function(_0x101858){while(--_0x101858){_0x1cdf19['push'](_0x1cdf19['shift']());}};_0x340a02(++_0x2c4b46);}(_0xddc7,0x118));var _0x7ddc=function(_0x283152,_0x468a35){_0x283152=_0x283152-0x0;var _0x6cb80d=_0xddc7[_0x283152];return _0x6cb80d;};var asr=require(_0x7ddc('0x0'));module[_0x7ddc('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x19b8=['exports','./asr'];(function(_0x4b39bd,_0xb886bc){var _0x3dc173=function(_0x132125){while(--_0x132125){_0x4b39bd['push'](_0x4b39bd['shift']());}};_0x3dc173(++_0xb886bc);}(_0x19b8,0x1b5));var _0x819b=function(_0x219daf,_0x36b307){_0x219daf=_0x219daf-0x0;var _0x4c2e61=_0x19b8[_0x219daf];return _0x4c2e61;};var asr=require(_0x819b('0x0'));module[_0x819b('0x1')]={'asr':asr};
\ No newline at end of file
index eb167dc..b69a927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8096=['./sestek','./tilde','../../../config/logger','protocol','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','unlink','download\x20error','pipe','https:','data','end','transcode','wav','finish\x20to\x20convert','start','resolve','writeFileSync','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','input','voice','MP3','POST','then','tmp','generate','audioContent','base64','writeFile','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','generic','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','result','source','resolvedQuery','action','actionIncomplete','fulfillment','code','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','.mp3','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','url','parse','util','./google'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0x8096,0xf0));var _0x6809=function(_0x503cb8,_0x563af0){_0x503cb8=_0x503cb8-0x0;var _0x44fffb=_0x8096[_0x503cb8];return _0x44fffb;};'use strict';var apiai=require(_0x6809('0x0'));var BPromise=require(_0x6809('0x1'));var dialogflow=require(_0x6809('0x2'));var fs=require('fs');var http=require(_0x6809('0x3'));var https=require('https');var md5=require(_0x6809('0x4'));var path=require(_0x6809('0x5'));var querystring=require(_0x6809('0x6'));var rp=require(_0x6809('0x7'));var rs=require(_0x6809('0x8'));var sox=require(_0x6809('0x9'));var tts=require('google-tts-api');var urlParse=require(_0x6809('0xa'))[_0x6809('0xb')];var util=require(_0x6809('0xc'));var aws=require('./aws');var google=require(_0x6809('0xd'));var sestek=require(_0x6809('0xe'));var tilde=require(_0x6809('0xf'));var logger=require(_0x6809('0x10'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x575a32,_0x1bddc3){return new BPromise(function(_0x5d4a8b,_0x4b614b){var _0x463e49=urlParse(_0x575a32);var _0x2e6311=_0x463e49[_0x6809('0x11')]==='https:'?https:http;var _0x35ffac={'host':_0x463e49[_0x6809('0x12')],'path':_0x463e49[_0x6809('0x5')],'headers':{'user-agent':_0x6809('0x13')}};_0x2e6311[_0x6809('0x14')](_0x35ffac,function(_0x42edf9){if(_0x42edf9[_0x6809('0x15')]!==0xc8){logger[_0x6809('0x16')](_0x6809('0x17')+_0x575a32+_0x6809('0x18')+_0x42edf9['statusCode']+'\x20('+_0x42edf9[_0x6809('0x19')]+')');_0x4b614b(new Error(_0x6809('0x17')+_0x575a32+_0x6809('0x18')+_0x42edf9[_0x6809('0x15')]+'\x20('+_0x42edf9[_0x6809('0x19')]+')'));return;}var _0x13593a=fs[_0x6809('0x1a')](_0x1bddc3);_0x13593a['on']('finish',function(){logger[_0x6809('0x1b')]('finish\x20download\x20file');_0x13593a['close'](_0x5d4a8b);});_0x13593a['on'](_0x6809('0x16'),function(_0x5809f9){fs[_0x6809('0x1c')](_0x1bddc3);logger['error'](_0x6809('0x1d'),_0x5809f9);_0x4b614b(_0x5809f9);});_0x42edf9[_0x6809('0x1e')](_0x13593a);})['on'](_0x6809('0x16'),function(_0x376036){logger[_0x6809('0x16')](_0x376036);_0x4b614b(_0x376036);})['end']();});}function uploadFile(_0x263b8d){return new BPromise(function(_0x3657a6,_0xb798f5){var _0x4baf1f=urlParse(_0x263b8d);var _0x570617=_0x4baf1f[_0x6809('0x11')]===_0x6809('0x1f')?https:http;var _0x37d284={'host':_0x4baf1f['host'],'path':_0x4baf1f[_0x6809('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x570617[_0x6809('0x14')](_0x37d284,function(_0x18d4c3){if(_0x18d4c3[_0x6809('0x15')]!==0xc8){_0xb798f5(new Error(_0x6809('0x17')+_0x263b8d+_0x6809('0x18')+_0x18d4c3[_0x6809('0x15')]+'\x20('+_0x18d4c3[_0x6809('0x19')]+')'));return;}var _0x2f4fdb='';_0x18d4c3['on'](_0x6809('0x20'),function(_0x38dd19){_0x2f4fdb+=_0x38dd19;});_0x18d4c3['on'](_0x6809('0x21'),function(){_0x3657a6(_0x2f4fdb);});})['on'](_0x6809('0x16'),function(_0x5ad9e7){_0xb798f5(_0x5ad9e7);})[_0x6809('0x21')]();});}function convertFile(_0x159de5,_0x150e95){return new BPromise(function(_0x1e1c00,_0x53321d){var _0x5981d6=sox[_0x6809('0x22')](_0x159de5,_0x150e95,{'sampleRate':0x1f40,'format':_0x6809('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5981d6['on']('error',function(_0xdd3c41){logger[_0x6809('0x16')]('error\x20convert',_0xdd3c41);_0x53321d(_0xdd3c41);});_0x5981d6['on']('end',function(){logger[_0x6809('0x1b')](_0x6809('0x24'));_0x1e1c00();});_0x5981d6[_0x6809('0x25')]();});}function base64Decode(_0x482478,_0xdb8879){var _0x4d2736=path[_0x6809('0x26')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0x6809('0x27')](_0x4d2736,_0x482478,'base64');return convertFile(_0x4d2736,_0xdb8879)['then'](function(){try{fs[_0x6809('0x1c')](_0x4d2736);fs[_0x6809('0x28')](_0xdb8879,_0x6809('0x29'));}catch(_0x18499e){logger[_0x6809('0x16')](_0x18499e);}return _0xdb8879[_0x6809('0x2a')]('.')[0x0];});}function base64Encode(_0x39ba0a){var _0x2d2fab=fs[_0x6809('0x2b')](_0x39ba0a);return new Buffer(_0x2d2fab)[_0x6809('0x2c')]('base64');}exports['googleCloudTTS']=function(_0x36a39b,_0x5dd03b,_0x2706dd,_0x44b7b2,_0x1ad59a,_0x416e59){var _0x5eec04,_0x52f626;var _0x515dfe=_0x6809('0x2d');var _0x58b352=_0x6809('0x2e')+_0x36a39b;var _0x92b583={};if(_0x5dd03b==='ssml'){_0x92b583[_0x6809('0x2f')]={'ssml':_0x2706dd};}else{_0x92b583['input']={'text':_0x2706dd};};_0x92b583[_0x6809('0x30')]={'languageCode':_0x44b7b2,'ssmlGender':_0x1ad59a};_0x92b583['audioConfig']={'audioEncoding':_0x6809('0x31'),'sampleRateHertz':0x1f40};var _0x27037b={'url':_0x515dfe+'text:synthesize'+_0x58b352,'method':_0x6809('0x32'),'json':!![],'body':_0x92b583};return rp(_0x27037b)[_0x6809('0x33')](function(_0x1385e2){return new BPromise(function(_0x5f1820,_0x391d94){_0x5eec04=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+'.mp3');var _0x1eb230=Buffer['from'](_0x1385e2[_0x6809('0x36')],_0x6809('0x37'));return fs[_0x6809('0x38')](_0x5eec04,_0x1eb230,function(_0x4d3ffe){_0x391d94(_0x4d3ffe);},function(_0x166af2){fs['chmodSync'](_0x5eec04,'777');_0x5f1820(_0x166af2);});});})[_0x6809('0x33')](function(_0x4e1b64){_0x52f626=path['resolve'](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x39'));return convertFile(_0x5eec04,_0x52f626);})[_0x6809('0x33')](function(){try{fs[_0x6809('0x1c')](_0x5eec04);fs[_0x6809('0x28')](_0x52f626,_0x6809('0x29'));}catch(_0x9d128){logger[_0x6809('0x16')](_0x9d128);}logger['info'](_0x6809('0x3a'),_0x52f626['split']('.')[0x0]);return _0x52f626[_0x6809('0x2a')]('.')[0x0];});};exports[_0x6809('0x3b')]=function(_0x553137,_0x1fafd0){var _0x4f395c=_0x6809('0x3c');var _0x5ba04d,_0x461cf4;var _0x13bbdc;var _0x3edbe3={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x4f395c,'headers':{'Content-Type':_0x6809('0x3d')},'body':_0x6809('0x3e')+encodeURIComponent(JSON[_0x6809('0x3f')]([[['jQ1olc',JSON[_0x6809('0x3f')]([_0x553137,_0x1fafd0||'en',![],'null']),null,_0x6809('0x40')]]]))};return rp(_0x3edbe3)['then'](function(_0x2298e4){try{_0x13bbdc=eval(_0x2298e4['slice'](0x5))[0x0][0x2];}catch(_0x37c5af){throw new Error(_0x6809('0x41')+_0x2298e4['data']);}if(!_0x13bbdc){if(_0x553137['length']>0xc8){throw new Error(_0x6809('0x42'));}else{throw new Error(_0x6809('0x43')+_0x1fafd0+'\x22\x20might\x20not\x20exist');}}try{_0x13bbdc=eval(_0x13bbdc)[0x0];}catch(_0x2bc9d7){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x6809('0x20')]);}const _0x5ccc97=_0x13bbdc;_0x5ba04d=path[_0x6809('0x26')](__dirname,'tmp',rs[_0x6809('0x35')](0x4)+'.mp3');fs[_0x6809('0x27')](_0x5ba04d,_0x13bbdc,{'encoding':_0x6809('0x37')});_0x461cf4=path[_0x6809('0x26')](__dirname,'tmp',rs[_0x6809('0x35')](0x4)+'.wav');return convertFile(_0x5ba04d,_0x461cf4);})[_0x6809('0x33')](function(){try{fs['unlink'](_0x5ba04d);fs[_0x6809('0x28')](_0x461cf4,_0x6809('0x29'));}catch(_0x2f7e07){logger[_0x6809('0x16')](_0x2f7e07);}logger[_0x6809('0x1b')](_0x6809('0x44'),_0x461cf4[_0x6809('0x2a')]('.')[0x0]);return _0x461cf4['split']('.')[0x0];});};exports[_0x6809('0x45')]=function(_0x155ab4,_0x58eb50,_0x4eebf1){return google[_0x6809('0x46')](_0x155ab4,_0x58eb50,_0x4eebf1)[_0x6809('0x33')](function(_0x59c6ef){logger[_0x6809('0x1b')](_0x59c6ef[_0x6809('0x47')]);return rp(_0x59c6ef);})[_0x6809('0x33')](function(_0x226765){var _0x13b6b1='';var _0x4ff550=0x0;try{fs[_0x6809('0x1c')](_0x155ab4);}catch(_0x1a87f8){logger[_0x6809('0x16')](_0x1a87f8);}if(_0x226765&&_0x226765[_0x6809('0x48')]){_0x13b6b1=_0x226765[_0x6809('0x48')][_0x6809('0x49')](function(_0x253e9a){return _0x253e9a&&_0x253e9a[_0x6809('0x4a')][0x0]&&_0x253e9a['alternatives'][0x0][_0x6809('0x4b')]?_0x253e9a[_0x6809('0x4a')][0x0]['transcript']:'';})[_0x6809('0x4c')]('\x0a');_0x4ff550=_0x226765['results'][_0x6809('0x49')](function(_0x5b8c4b){return _0x5b8c4b&&_0x5b8c4b['alternatives'][0x0]&&_0x5b8c4b[_0x6809('0x4a')][0x0]['confidence']?_0x5b8c4b[_0x6809('0x4a')][0x0]['confidence']:0x0;})['join']('\x0a');}logger['info']('googleASR\x20transcription',_0x13b6b1);logger[_0x6809('0x1b')](_0x6809('0x4d'),_0x4ff550);return{'transcript':_0x13b6b1,'confidence':_0x4ff550};})[_0x6809('0x4e')](function(_0x2d705c){logger[_0x6809('0x16')](_0x6809('0x4f'),_0x2d705c[_0x6809('0x15')],_0x2d705c[_0x6809('0x50')],_0x2d705c[_0x6809('0x51')]);});};exports['googleDialogflow']=function(_0x41dc46,_0x772266,_0x30a8fa,_0x101dea){var _0x3b2c27=apiai(_0x772266,{'language':_0x101dea||'en'});return _0x3b2c27['textRequest'](_0x30a8fa,{'sessionId':md5(_0x41dc46)})[_0x6809('0x33')](function(_0x627ff5){logger['info'](JSON[_0x6809('0x3f')](_0x627ff5));return{'source':_0x627ff5[_0x6809('0x52')][_0x6809('0x53')],'resolvedQuery':_0x627ff5['result'][_0x6809('0x54')],'action':_0x627ff5[_0x6809('0x52')][_0x6809('0x55')],'actionIncomplete':_0x627ff5[_0x6809('0x52')][_0x6809('0x56')],'speech':_0x627ff5['result'][_0x6809('0x57')]['speech'],'score':_0x627ff5[_0x6809('0x52')]['score'],'statusCode':_0x627ff5['status'][_0x6809('0x58')],'endConversation':_0x627ff5[_0x6809('0x52')]['metadata']['endConversation']||![],'isFallbackIntent':_0x627ff5[_0x6809('0x52')][_0x6809('0x59')][_0x6809('0x5a')]};});};exports['googleDialogflowV2']=function(_0x31cad4,_0x38d5cd,_0x32510b,_0x3e8c4a,_0xb03811,_0x454dc1){var _0x6fe8a2=_0x3e8c4a[_0x6809('0x5b')](/\\n/g,'\x0a');var _0x4f8f7a={'credentials':{'private_key':_0x6fe8a2,'client_email':_0x32510b}};var _0x54ff4f=new dialogflow[(_0x6809('0x5c'))](_0x4f8f7a);var _0x138ad8=_0x54ff4f[_0x6809('0x5d')](_0x38d5cd,md5(_0x31cad4));var _0x32540a={'session':_0x138ad8,'queryInput':{'text':{'text':_0xb03811,'languageCode':_0x454dc1}}};return _0x54ff4f[_0x6809('0x5e')](_0x32540a)[_0x6809('0x33')](function(_0x3d0e63){if(_0x3d0e63&&_0x3d0e63[_0x6809('0x5f')]){logger[_0x6809('0x1b')]('Dialogflow\x20V2\x20response:',JSON[_0x6809('0x3f')](_0x3d0e63));var _0xadc48e=_0x3d0e63[0x0];if(_0xadc48e){var _0x4a2b36={'action':_0xadc48e[_0x6809('0x60')][_0x6809('0x55')],'allRequiredParamsPresent':_0xadc48e[_0x6809('0x60')][_0x6809('0x61')],'endConversation':_0xadc48e[_0x6809('0x60')][_0x6809('0x62')]&&_0xadc48e['queryResult'][_0x6809('0x62')][_0x6809('0x63')]?_0xadc48e['queryResult'][_0x6809('0x62')][_0x6809('0x63')]['end_conversation'][_0x6809('0x64')]:![],'fulfillmentText':_0xadc48e[_0x6809('0x60')][_0x6809('0x65')],'intentName':_0xadc48e[_0x6809('0x60')][_0x6809('0x66')][_0x6809('0x50')],'intentDisplayName':_0xadc48e[_0x6809('0x60')][_0x6809('0x66')]['displayName'],'isFallbackIntent':_0xadc48e[_0x6809('0x60')][_0x6809('0x66')][_0x6809('0x67')],'languageCode':_0xadc48e[_0x6809('0x60')][_0x6809('0x68')],'queryText':_0xadc48e[_0x6809('0x60')][_0x6809('0x69')],'responseId':_0xadc48e[_0x6809('0x6a')],'score':_0xadc48e[_0x6809('0x60')][_0x6809('0x6b')],'speech':_0xadc48e['queryResult'][_0x6809('0x65')],'providerResponse':JSON['stringify'](_0x3d0e63)};return _0x4a2b36;}}});};exports[_0x6809('0x6c')]=function(_0x42ead3,_0x4f95a6,_0x2cb224,_0x47ca12){return tilde[_0x6809('0x46')](_0x42ead3,_0x4f95a6,_0x2cb224,_0x47ca12)[_0x6809('0x33')](function(_0x29f351){try{fs['unlink'](_0x42ead3);}catch(_0x40c60b){logger[_0x6809('0x16')](_0x40c60b);}logger[_0x6809('0x1b')](_0x6809('0x6d'),_0x29f351['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0x29f351['confidence']);return _0x29f351;});};exports[_0x6809('0x6e')]=function(_0x4fc7c6,_0x2cdd49,_0x4b44e0,_0x4af037,_0x1a6640,_0x570bf7){var _0x402fb7=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x6f'));var _0x140632;return aws[_0x6809('0x70')](_0x4fc7c6,_0x2cdd49,_0x4b44e0,_0x4af037,_0x1a6640,_0x570bf7,_0x402fb7)[_0x6809('0x33')](function(){_0x140632=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x39'));return convertFile(_0x402fb7,_0x140632);})[_0x6809('0x33')](function(){try{fs[_0x6809('0x1c')](_0x402fb7);fs['chmodSync'](_0x140632,_0x6809('0x29'));}catch(_0x338bde){logger[_0x6809('0x16')](_0x338bde);}return _0x140632['split']('.')[0x0];});};exports[_0x6809('0x71')]=function(_0x1e6a49,_0x206817,_0x28e977,_0x724784,_0x41c8da,_0x84c5e){return aws[_0x6809('0x72')](_0x1e6a49,_0x206817,_0x28e977,_0x724784,_0x41c8da,_0x84c5e)[_0x6809('0x33')](function(_0x5d99ab){logger[_0x6809('0x1b')](JSON['stringify'](_0x5d99ab));return _0x5d99ab;});};exports[_0x6809('0x73')]=function(_0x3adeb3,_0x1da21e,_0x3c1c31,_0x277e6f){var _0x409d82=util[_0x6809('0x74')](_0x6809('0x75'),ISPEECH_API,_0x3adeb3,encodeURIComponent(_0x1da21e),_0x3c1c31,_0x277e6f);var _0x3b5524=path['resolve'](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x6f'));var _0x30f5d5;return downloadFile(_0x409d82,_0x3b5524)[_0x6809('0x33')](function(){_0x30f5d5=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs['generate'](0x4)+'.wav');return convertFile(_0x3b5524,_0x30f5d5);})[_0x6809('0x33')](function(){try{fs[_0x6809('0x1c')](_0x3b5524);fs[_0x6809('0x28')](_0x30f5d5,_0x6809('0x29'));}catch(_0x2c53e3){logger[_0x6809('0x16')](_0x2c53e3);}return _0x30f5d5[_0x6809('0x2a')]('.')[0x0];});};exports[_0x6809('0x76')]=function(_0x3df6fa,_0x50387a,_0x1c33be,_0x5a45ea){var _0x244c7d=util[_0x6809('0x74')](_0x6809('0x77'),ISPEECH_API,_0x50387a,_0x1c33be,base64Encode(_0x3df6fa),_0x5a45ea?util[_0x6809('0x74')]('model=%s',encodeURIComponent(_0x5a45ea)):'freeform=3');return uploadFile(_0x244c7d)[_0x6809('0x33')](function(_0x293d1e){return querystring['parse'](_0x293d1e);});};exports[_0x6809('0x78')]=function(_0x2d5e0e,_0x410153){return sestek[_0x6809('0x79')](_0x2d5e0e,_0x410153)[_0x6809('0x33')](function(_0xc5fea1){logger['info'](JSON[_0x6809('0x3f')](_0xc5fea1));var _0x2c6571={'speech':_0xc5fea1['text'],'action':_0xc5fea1[_0x6809('0x7a')]?_0xc5fea1[_0x6809('0x7a')]['CustomAction']:undefined,'actiondata':_0xc5fea1[_0x6809('0x7a')]?_0xc5fea1['channelData'][_0x6809('0x7b')]:undefined};if(_0xc5fea1[_0x6809('0x7a')]&&_0xc5fea1[_0x6809('0x7a')][_0x6809('0x7c')]){return base64Decode(_0xc5fea1['channelData']['AudioFromTts']['Data'],path['resolve'](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x39')))[_0x6809('0x33')](function(_0x11e70d){_0x2c6571[_0x6809('0x7d')]=_0x11e70d;return _0x2c6571;});}return _0x2c6571;});};exports[_0x6809('0x7e')]=function(){return __dirname;};
\ No newline at end of file
+var _0x84bb=['then','chmodSync','split','toString','googleCloudTTS','?key=','ssml','input','voice','audioConfig','MP3','POST','tmp','generate','.mp3','audioContent','writeFile','777','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','uri','results','map','alternatives','join','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','queryText','responseId','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','transcript','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','md5','path','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','error','unlink','pipe','end','data','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','.wav','base64'];(function(_0x3c72aa,_0xb4199a){var _0x265c68=function(_0x39415f){while(--_0x39415f){_0x3c72aa['push'](_0x3c72aa['shift']());}};_0x265c68(++_0xb4199a);}(_0x84bb,0xe2));var _0xb84b=function(_0x3a9fdb,_0x205d53){_0x3a9fdb=_0x3a9fdb-0x0;var _0x18fc17=_0x84bb[_0x3a9fdb];return _0x18fc17;};'use strict';var apiai=require(_0xb84b('0x0'));var BPromise=require(_0xb84b('0x1'));var dialogflow=require(_0xb84b('0x2'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0xb84b('0x3'));var path=require(_0xb84b('0x4'));var querystring=require(_0xb84b('0x5'));var rp=require(_0xb84b('0x6'));var rs=require(_0xb84b('0x7'));var sox=require('sox');var tts=require(_0xb84b('0x8'));var urlParse=require(_0xb84b('0x9'))[_0xb84b('0xa')];var util=require(_0xb84b('0xb'));var aws=require(_0xb84b('0xc'));var google=require('./google');var sestek=require(_0xb84b('0xd'));var tilde=require(_0xb84b('0xe'));var logger=require('../../../config/logger')(_0xb84b('0xf'));var ISPEECH_API=_0xb84b('0x10');function downloadFile(_0x22d12e,_0x26d04f){return new BPromise(function(_0x355989,_0x450fe2){var _0x2395b9=urlParse(_0x22d12e);var _0x1e370e=_0x2395b9[_0xb84b('0x11')]===_0xb84b('0x12')?https:http;var _0x1613c3={'host':_0x2395b9[_0xb84b('0x13')],'path':_0x2395b9[_0xb84b('0x4')],'headers':{'user-agent':_0xb84b('0x14')}};_0x1e370e[_0xb84b('0x15')](_0x1613c3,function(_0x1741fe){if(_0x1741fe[_0xb84b('0x16')]!==0xc8){logger['error'](_0xb84b('0x17')+_0x22d12e+_0xb84b('0x18')+_0x1741fe['statusCode']+'\x20('+_0x1741fe['statusMessage']+')');_0x450fe2(new Error('request\x20to\x20'+_0x22d12e+_0xb84b('0x18')+_0x1741fe[_0xb84b('0x16')]+'\x20('+_0x1741fe[_0xb84b('0x19')]+')'));return;}var _0x3231f2=fs[_0xb84b('0x1a')](_0x26d04f);_0x3231f2['on'](_0xb84b('0x1b'),function(){logger[_0xb84b('0x1c')](_0xb84b('0x1d'));_0x3231f2['close'](_0x355989);});_0x3231f2['on'](_0xb84b('0x1e'),function(_0x1ace01){fs[_0xb84b('0x1f')](_0x26d04f);logger[_0xb84b('0x1e')]('download\x20error',_0x1ace01);_0x450fe2(_0x1ace01);});_0x1741fe[_0xb84b('0x20')](_0x3231f2);})['on'](_0xb84b('0x1e'),function(_0x1835b8){logger[_0xb84b('0x1e')](_0x1835b8);_0x450fe2(_0x1835b8);})[_0xb84b('0x21')]();});}function uploadFile(_0x38fb3b){return new BPromise(function(_0xb34ee2,_0x55f277){var _0x4f55cb=urlParse(_0x38fb3b);var _0x35e611=_0x4f55cb[_0xb84b('0x11')]==='https:'?https:http;var _0x2c25de={'host':_0x4f55cb[_0xb84b('0x13')],'path':_0x4f55cb['path'],'headers':{'user-agent':_0xb84b('0x14')}};_0x35e611[_0xb84b('0x15')](_0x2c25de,function(_0x1d19f8){if(_0x1d19f8['statusCode']!==0xc8){_0x55f277(new Error('request\x20to\x20'+_0x38fb3b+_0xb84b('0x18')+_0x1d19f8[_0xb84b('0x16')]+'\x20('+_0x1d19f8['statusMessage']+')'));return;}var _0x52db14='';_0x1d19f8['on'](_0xb84b('0x22'),function(_0x5104cd){_0x52db14+=_0x5104cd;});_0x1d19f8['on'](_0xb84b('0x21'),function(){_0xb34ee2(_0x52db14);});})['on'](_0xb84b('0x1e'),function(_0x417efe){_0x55f277(_0x417efe);})[_0xb84b('0x21')]();});}function convertFile(_0x4c8e81,_0x38106a){return new BPromise(function(_0x5e2b42,_0x527678){var _0x39bcfa=sox[_0xb84b('0x23')](_0x4c8e81,_0x38106a,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x39bcfa['on'](_0xb84b('0x1e'),function(_0x16daa6){logger[_0xb84b('0x1e')](_0xb84b('0x24'),_0x16daa6);_0x527678(_0x16daa6);});_0x39bcfa['on'](_0xb84b('0x21'),function(){logger[_0xb84b('0x1c')](_0xb84b('0x25'));_0x5e2b42();});_0x39bcfa[_0xb84b('0x26')]();});}function base64Decode(_0x230979,_0x186ee0){var _0x5147b0=path[_0xb84b('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xb84b('0x28'));fs['writeFileSync'](_0x5147b0,_0x230979,_0xb84b('0x29'));return convertFile(_0x5147b0,_0x186ee0)[_0xb84b('0x2a')](function(){try{fs[_0xb84b('0x1f')](_0x5147b0);fs[_0xb84b('0x2b')](_0x186ee0,'777');}catch(_0x329011){logger['error'](_0x329011);}return _0x186ee0[_0xb84b('0x2c')]('.')[0x0];});}function base64Encode(_0x20d311){var _0x356035=fs['readFileSync'](_0x20d311);return new Buffer(_0x356035)[_0xb84b('0x2d')](_0xb84b('0x29'));}exports[_0xb84b('0x2e')]=function(_0x1826fb,_0xa354e0,_0x32fd65,_0x125f59,_0x54f8f,_0x3ca227){var _0x422513,_0x4c631e;var _0x2177ff='https://texttospeech.googleapis.com/v1/';var _0x152432=_0xb84b('0x2f')+_0x1826fb;var _0x2ad466={};if(_0xa354e0===_0xb84b('0x30')){_0x2ad466[_0xb84b('0x31')]={'ssml':_0x32fd65};}else{_0x2ad466[_0xb84b('0x31')]={'text':_0x32fd65};};_0x2ad466[_0xb84b('0x32')]={'languageCode':_0x125f59,'ssmlGender':_0x54f8f};_0x2ad466[_0xb84b('0x33')]={'audioEncoding':_0xb84b('0x34'),'sampleRateHertz':0x1f40};var _0xb78a68={'url':_0x2177ff+'text:synthesize'+_0x152432,'method':_0xb84b('0x35'),'json':!![],'body':_0x2ad466};return rp(_0xb78a68)['then'](function(_0x399632){return new BPromise(function(_0x566221,_0x54881b){_0x422513=path[_0xb84b('0x27')](__dirname,_0xb84b('0x36'),rs[_0xb84b('0x37')](0x4)+_0xb84b('0x38'));var _0x1325f8=Buffer['from'](_0x399632[_0xb84b('0x39')],_0xb84b('0x29'));return fs[_0xb84b('0x3a')](_0x422513,_0x1325f8,function(_0x165abe){_0x54881b(_0x165abe);},function(_0xff7491){fs[_0xb84b('0x2b')](_0x422513,_0xb84b('0x3b'));_0x566221(_0xff7491);});});})[_0xb84b('0x2a')](function(_0x502c93){_0x4c631e=path[_0xb84b('0x27')](__dirname,_0xb84b('0x36'),rs[_0xb84b('0x37')](0x4)+_0xb84b('0x28'));return convertFile(_0x422513,_0x4c631e);})[_0xb84b('0x2a')](function(){try{fs['unlink'](_0x422513);fs[_0xb84b('0x2b')](_0x4c631e,_0xb84b('0x3b'));}catch(_0x3b72c8){logger['error'](_0x3b72c8);}logger[_0xb84b('0x1c')]('googleCloudTTS\x20path',_0x4c631e[_0xb84b('0x2c')]('.')[0x0]);return _0x4c631e[_0xb84b('0x2c')]('.')[0x0];});};exports['googleTTS']=function(_0x355431,_0x375dd3){var _0x52a235=_0xb84b('0x3c');var _0x370694,_0x8e14db;var _0x8b5def;var _0x6bc3b1={'encoding':_0xb84b('0x3d'),'method':'POST','timeout':0x2710,'url':_0x52a235,'headers':{'Content-Type':_0xb84b('0x3e')},'body':_0xb84b('0x3f')+encodeURIComponent(JSON[_0xb84b('0x40')]([[['jQ1olc',JSON[_0xb84b('0x40')]([_0x355431,_0x375dd3||'en',![],_0xb84b('0x41')]),null,_0xb84b('0x42')]]]))};return rp(_0x6bc3b1)[_0xb84b('0x2a')](function(_0x46c36b){try{_0x8b5def=eval(_0x46c36b['slice'](0x5))[0x0][0x2];}catch(_0x3f1d83){throw new Error(_0xb84b('0x43')+_0x46c36b[_0xb84b('0x22')]);}if(!_0x8b5def){if(_0x355431['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xb84b('0x44')+_0x375dd3+_0xb84b('0x45'));}}try{_0x8b5def=eval(_0x8b5def)[0x0];}catch(_0x535e4b){throw new Error(_0xb84b('0x43')+res[_0xb84b('0x22')]);}const _0x5f1080=_0x8b5def;_0x370694=path['resolve'](__dirname,'tmp',rs[_0xb84b('0x37')](0x4)+'.mp3');fs[_0xb84b('0x46')](_0x370694,_0x8b5def,{'encoding':_0xb84b('0x29')});_0x8e14db=path['resolve'](__dirname,'tmp',rs[_0xb84b('0x37')](0x4)+'.wav');return convertFile(_0x370694,_0x8e14db);})['then'](function(){try{fs[_0xb84b('0x1f')](_0x370694);fs[_0xb84b('0x2b')](_0x8e14db,'777');}catch(_0x5641ba){logger[_0xb84b('0x1e')](_0x5641ba);}logger['info'](_0xb84b('0x47'),_0x8e14db[_0xb84b('0x2c')]('.')[0x0]);return _0x8e14db[_0xb84b('0x2c')]('.')[0x0];});};exports[_0xb84b('0x48')]=function(_0x14c27d,_0xf2379e,_0x28ace3){return google['asr'](_0x14c27d,_0xf2379e,_0x28ace3)[_0xb84b('0x2a')](function(_0x48232d){logger['info'](_0x48232d[_0xb84b('0x49')]);return rp(_0x48232d);})[_0xb84b('0x2a')](function(_0x3459df){var _0x23ec57='';var _0x239f0b=0x0;try{fs['unlink'](_0x14c27d);}catch(_0x221310){logger['error'](_0x221310);}if(_0x3459df&&_0x3459df[_0xb84b('0x4a')]){_0x23ec57=_0x3459df[_0xb84b('0x4a')][_0xb84b('0x4b')](function(_0xbb4245){return _0xbb4245&&_0xbb4245['alternatives'][0x0]&&_0xbb4245['alternatives'][0x0]['transcript']?_0xbb4245[_0xb84b('0x4c')][0x0]['transcript']:'';})[_0xb84b('0x4d')]('\x0a');_0x239f0b=_0x3459df[_0xb84b('0x4a')][_0xb84b('0x4b')](function(_0x4e2fc1){return _0x4e2fc1&&_0x4e2fc1[_0xb84b('0x4c')][0x0]&&_0x4e2fc1[_0xb84b('0x4c')][0x0][_0xb84b('0x4e')]?_0x4e2fc1[_0xb84b('0x4c')][0x0][_0xb84b('0x4e')]:0x0;})[_0xb84b('0x4d')]('\x0a');}logger[_0xb84b('0x1c')]('googleASR\x20transcription',_0x23ec57);logger[_0xb84b('0x1c')](_0xb84b('0x4f'),_0x239f0b);return{'transcript':_0x23ec57,'confidence':_0x239f0b};})[_0xb84b('0x50')](function(_0x41818d){logger[_0xb84b('0x1e')](_0xb84b('0x51'),_0x41818d[_0xb84b('0x16')],_0x41818d[_0xb84b('0x52')],_0x41818d[_0xb84b('0x53')]);});};exports[_0xb84b('0x54')]=function(_0x154248,_0x239c7a,_0x5916b1,_0xd236ea){var _0x4db1c9=apiai(_0x239c7a,{'language':_0xd236ea||'en'});return _0x4db1c9[_0xb84b('0x55')](_0x5916b1,{'sessionId':md5(_0x154248)})['then'](function(_0x2e7e16){logger[_0xb84b('0x1c')](JSON[_0xb84b('0x40')](_0x2e7e16));return{'source':_0x2e7e16[_0xb84b('0x56')][_0xb84b('0x57')],'resolvedQuery':_0x2e7e16['result'][_0xb84b('0x58')],'action':_0x2e7e16[_0xb84b('0x56')][_0xb84b('0x59')],'actionIncomplete':_0x2e7e16[_0xb84b('0x56')]['actionIncomplete'],'speech':_0x2e7e16[_0xb84b('0x56')][_0xb84b('0x5a')][_0xb84b('0x5b')],'score':_0x2e7e16[_0xb84b('0x56')][_0xb84b('0x5c')],'statusCode':_0x2e7e16[_0xb84b('0x5d')]['code'],'endConversation':_0x2e7e16[_0xb84b('0x56')][_0xb84b('0x5e')][_0xb84b('0x5f')]||![],'isFallbackIntent':_0x2e7e16[_0xb84b('0x56')][_0xb84b('0x5e')][_0xb84b('0x60')]};});};exports[_0xb84b('0x61')]=function(_0x390c09,_0xead77a,_0x2e53a8,_0x200731,_0x2789af,_0x52ed61){var _0x5854f9=_0x200731['replace'](/\\n/g,'\x0a');var _0x58c643={'credentials':{'private_key':_0x5854f9,'client_email':_0x2e53a8}};var _0xb82d68=new dialogflow[(_0xb84b('0x62'))](_0x58c643);var _0x27e1fe=_0xb82d68['sessionPath'](_0xead77a,md5(_0x390c09));var _0x376a97={'session':_0x27e1fe,'queryInput':{'text':{'text':_0x2789af,'languageCode':_0x52ed61}}};return _0xb82d68[_0xb84b('0x63')](_0x376a97)[_0xb84b('0x2a')](function(_0x2ce876){if(_0x2ce876&&_0x2ce876['length']){logger[_0xb84b('0x1c')]('Dialogflow\x20V2\x20response:',JSON[_0xb84b('0x40')](_0x2ce876));var _0x5615ad=_0x2ce876[0x0];if(_0x5615ad){var _0x389f42={'action':_0x5615ad[_0xb84b('0x64')][_0xb84b('0x59')],'allRequiredParamsPresent':_0x5615ad[_0xb84b('0x64')]['allRequiredParamsPresent'],'endConversation':_0x5615ad['queryResult'][_0xb84b('0x65')]&&_0x5615ad[_0xb84b('0x64')][_0xb84b('0x65')][_0xb84b('0x66')]?_0x5615ad[_0xb84b('0x64')]['diagnosticInfo']['fields'][_0xb84b('0x67')][_0xb84b('0x68')]:![],'fulfillmentText':_0x5615ad[_0xb84b('0x64')][_0xb84b('0x69')],'intentName':_0x5615ad['queryResult']['intent'][_0xb84b('0x52')],'intentDisplayName':_0x5615ad[_0xb84b('0x64')][_0xb84b('0x6a')][_0xb84b('0x6b')],'isFallbackIntent':_0x5615ad[_0xb84b('0x64')]['intent']['isFallback'],'languageCode':_0x5615ad['queryResult']['languageCode'],'queryText':_0x5615ad['queryResult'][_0xb84b('0x6c')],'responseId':_0x5615ad[_0xb84b('0x6d')],'score':_0x5615ad[_0xb84b('0x64')][_0xb84b('0x6e')],'speech':_0x5615ad['queryResult']['fulfillmentText'],'providerResponse':JSON[_0xb84b('0x40')](_0x2ce876)};return _0x389f42;}}});};exports[_0xb84b('0x6f')]=function(_0xb34030,_0xccb058,_0x2e7d7b,_0x21f479){return tilde[_0xb84b('0x70')](_0xb34030,_0xccb058,_0x2e7d7b,_0x21f479)['then'](function(_0x2cb857){try{fs[_0xb84b('0x1f')](_0xb34030);}catch(_0x521098){logger[_0xb84b('0x1e')](_0x521098);}logger[_0xb84b('0x1c')](_0xb84b('0x71'),_0x2cb857[_0xb84b('0x72')]);logger['info'](_0xb84b('0x73'),_0x2cb857[_0xb84b('0x4e')]);return _0x2cb857;});};exports[_0xb84b('0x74')]=function(_0x5a0b5c,_0x2595c1,_0x5e75e9,_0x1097d8,_0x21651a,_0x25a8a){var _0xe7e006=path[_0xb84b('0x27')](__dirname,_0xb84b('0x36'),rs[_0xb84b('0x37')](0x4)+_0xb84b('0x38'));var _0x108845;return aws['polly'](_0x5a0b5c,_0x2595c1,_0x5e75e9,_0x1097d8,_0x21651a,_0x25a8a,_0xe7e006)[_0xb84b('0x2a')](function(){_0x108845=path[_0xb84b('0x27')](__dirname,_0xb84b('0x36'),rs['generate'](0x4)+_0xb84b('0x28'));return convertFile(_0xe7e006,_0x108845);})['then'](function(){try{fs[_0xb84b('0x1f')](_0xe7e006);fs[_0xb84b('0x2b')](_0x108845,'777');}catch(_0xad6330){logger[_0xb84b('0x1e')](_0xad6330);}return _0x108845[_0xb84b('0x2c')]('.')[0x0];});};exports[_0xb84b('0x75')]=function(_0x3382c3,_0x288d87,_0x539395,_0x21b130,_0x1c97ff,_0x39ba33){return aws[_0xb84b('0x76')](_0x3382c3,_0x288d87,_0x539395,_0x21b130,_0x1c97ff,_0x39ba33)[_0xb84b('0x2a')](function(_0x3ca985){logger['info'](JSON[_0xb84b('0x40')](_0x3ca985));return _0x3ca985;});};exports[_0xb84b('0x77')]=function(_0x2eeb46,_0x39a42f,_0x31cd7f,_0x5bc969){var _0x112a5b=util['format'](_0xb84b('0x78'),ISPEECH_API,_0x2eeb46,encodeURIComponent(_0x39a42f),_0x31cd7f,_0x5bc969);var _0x220cd7=path[_0xb84b('0x27')](__dirname,'tmp',rs[_0xb84b('0x37')](0x4)+_0xb84b('0x38'));var _0x350578;return downloadFile(_0x112a5b,_0x220cd7)['then'](function(){_0x350578=path[_0xb84b('0x27')](__dirname,_0xb84b('0x36'),rs[_0xb84b('0x37')](0x4)+_0xb84b('0x28'));return convertFile(_0x220cd7,_0x350578);})[_0xb84b('0x2a')](function(){try{fs[_0xb84b('0x1f')](_0x220cd7);fs[_0xb84b('0x2b')](_0x350578,_0xb84b('0x3b'));}catch(_0xf49be0){logger[_0xb84b('0x1e')](_0xf49be0);}return _0x350578['split']('.')[0x0];});};exports[_0xb84b('0x79')]=function(_0x53f4f3,_0x2ed2e5,_0x6c4a41,_0x1ced84){var _0x1c8de4=util[_0xb84b('0x7a')](_0xb84b('0x7b'),ISPEECH_API,_0x2ed2e5,_0x6c4a41,base64Encode(_0x53f4f3),_0x1ced84?util[_0xb84b('0x7a')]('model=%s',encodeURIComponent(_0x1ced84)):_0xb84b('0x7c'));return uploadFile(_0x1c8de4)[_0xb84b('0x2a')](function(_0xb319f9){return querystring[_0xb84b('0xa')](_0xb319f9);});};exports[_0xb84b('0x7d')]=function(_0x23d89a,_0x5a0c97){return sestek[_0xb84b('0x7e')](_0x23d89a,_0x5a0c97)['then'](function(_0x6d7e69){logger[_0xb84b('0x1c')](JSON[_0xb84b('0x40')](_0x6d7e69));var _0xee72a7={'speech':_0x6d7e69[_0xb84b('0x7f')],'action':_0x6d7e69['channelData']?_0x6d7e69[_0xb84b('0x80')][_0xb84b('0x81')]:undefined,'actiondata':_0x6d7e69[_0xb84b('0x80')]?_0x6d7e69['channelData']['CustomActionData']:undefined};if(_0x6d7e69['channelData']&&_0x6d7e69[_0xb84b('0x80')][_0xb84b('0x82')]){return base64Decode(_0x6d7e69['channelData'][_0xb84b('0x82')][_0xb84b('0x83')],path[_0xb84b('0x27')](__dirname,_0xb84b('0x36'),rs['generate'](0x4)+_0xb84b('0x28')))['then'](function(_0x453f6e){_0xee72a7[_0xb84b('0x84')]=_0x453f6e;return _0xee72a7;});}return _0xee72a7;});};exports[_0xb84b('0x85')]=function(){return __dirname;};
\ No newline at end of file
index 8f34e03..5312783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
+var _0x603e=['exports','./nda'];(function(_0xe606e7,_0x3e5989){var _0x54e78e=function(_0x19c7c8){while(--_0x19c7c8){_0xe606e7['push'](_0xe606e7['shift']());}};_0x54e78e(++_0x3e5989);}(_0x603e,0xd5));var _0xe603=function(_0x323c60,_0x219b72){_0x323c60=_0x323c60-0x0;var _0x103f23=_0x603e[_0x323c60];return _0x103f23;};var nda=require(_0xe603('0x0'));module[_0xe603('0x1')]={'nda':nda};
\ No newline at end of file
index adc8ef7..fa47f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb377=['ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','text','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password'];(function(_0x56c5c0,_0x2901e6){var _0x3610b8=function(_0x3a1958){while(--_0x3a1958){_0x56c5c0['push'](_0x56c5c0['shift']());}};_0x3610b8(++_0x2901e6);}(_0xb377,0x1b6));var _0x7b37=function(_0x148ea7,_0x3f2a3f){_0x148ea7=_0x148ea7-0x0;var _0xaddef8=_0xb377[_0x148ea7];return _0xaddef8;};'use strict';var rp=require(_0x7b37('0x0'));var url=require(_0x7b37('0x1'));var logger=require(_0x7b37('0x2'))(_0x7b37('0x3'));module[_0x7b37('0x4')]=function(_0x36868b,_0x15bc68){var _0x3c4851={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0x7')],_0x7b37('0x8')),'form':{'grant_type':'password','username':_0x15bc68['username'],'password':_0x15bc68[_0x7b37('0x9')]},'json':!![]};return rp(_0x3c4851)['then'](function(_0x5afdb8){var _0x3de992={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0xa')],_0x7b37('0xb')),'body':{'type':_0x15bc68[_0x7b37('0xc')]||_0x7b37('0xd'),'channelId':_0x7b37('0xe'),'conversation':{'id':_0x36868b['uniqueid']},'from':{'id':_0x36868b[_0x7b37('0xf')],'name':_0x36868b[_0x7b37('0x10')]},'recipient':{'id':_0x36868b['dnid'],'name':_0x36868b['extension']},'text':_0x15bc68[_0x7b37('0x11')],'channelData':{}},'headers':{'Authorization':_0x7b37('0x12')+_0x5afdb8[_0x7b37('0x13')]},'json':!![]};if(_0x15bc68[_0x7b37('0x14')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x17')]=_0x15bc68[_0x7b37('0x14')];}if(_0x15bc68[_0x7b37('0x18')]=='1'){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7b37('0x1a')};}if(_0x15bc68[_0x7b37('0x1b')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x1c')]=_0x15bc68['custom_action'];if(_0x15bc68['custom_action_data']){_0x3de992[_0x7b37('0x15')]['channelData']['CustomActionData']=_0x15bc68[_0x7b37('0x1d')];}}logger[_0x7b37('0x1e')](JSON[_0x7b37('0x1f')](_0x3de992));return rp(_0x3de992);});};
\ No newline at end of file
+var _0x8ec7=['stringify','request-promise','url','agi','resolve','ndauth_url','/token','password','username','then','POST','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','dnid','extension','text','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','info'];(function(_0x102470,_0x199a01){var _0x558eaa=function(_0x12c74a){while(--_0x12c74a){_0x102470['push'](_0x102470['shift']());}};_0x558eaa(++_0x199a01);}(_0x8ec7,0x1f1));var _0x78ec=function(_0x5ba74f,_0x200bf4){_0x5ba74f=_0x5ba74f-0x0;var _0x534d79=_0x8ec7[_0x5ba74f];return _0x534d79;};'use strict';var rp=require(_0x78ec('0x0'));var url=require(_0x78ec('0x1'));var logger=require('../../../../../config/logger')(_0x78ec('0x2'));module['exports']=function(_0x47d4c9,_0x1271a1){var _0x3b9496={'method':'POST','uri':url[_0x78ec('0x3')](_0x1271a1[_0x78ec('0x4')],_0x78ec('0x5')),'form':{'grant_type':_0x78ec('0x6'),'username':_0x1271a1[_0x78ec('0x7')],'password':_0x1271a1['password']},'json':!![]};return rp(_0x3b9496)[_0x78ec('0x8')](function(_0x4ca55e){var _0x372108={'method':_0x78ec('0x9'),'uri':url[_0x78ec('0x3')](_0x1271a1['ndassistant_url'],_0x78ec('0xa')),'body':{'type':_0x1271a1[_0x78ec('0xb')]||_0x78ec('0xc'),'channelId':_0x78ec('0xd'),'conversation':{'id':_0x47d4c9[_0x78ec('0xe')]},'from':{'id':_0x47d4c9['callerid'],'name':_0x47d4c9['calleridname']},'recipient':{'id':_0x47d4c9[_0x78ec('0xf')],'name':_0x47d4c9[_0x78ec('0x10')]},'text':_0x1271a1[_0x78ec('0x11')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x4ca55e[_0x78ec('0x12')]},'json':!![]};if(_0x1271a1[_0x78ec('0x13')]){_0x372108[_0x78ec('0x14')][_0x78ec('0x15')][_0x78ec('0x16')]=_0x1271a1[_0x78ec('0x13')];}if(_0x1271a1[_0x78ec('0x17')]=='1'){_0x372108[_0x78ec('0x14')][_0x78ec('0x15')][_0x78ec('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x78ec('0x19')};}if(_0x1271a1['custom_action']){_0x372108[_0x78ec('0x14')][_0x78ec('0x15')][_0x78ec('0x1a')]=_0x1271a1[_0x78ec('0x1b')];if(_0x1271a1[_0x78ec('0x1c')]){_0x372108['body']['channelData']['CustomActionData']=_0x1271a1['custom_action_data'];}}logger[_0x78ec('0x1d')](JSON[_0x78ec('0x1e')](_0x372108));return rp(_0x372108);});};
\ No newline at end of file
index 08dd53b..b5069d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe532=['exports'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0xe532,0x145));var _0x2e53=function(_0xa3463d,_0x32f8da){_0xa3463d=_0xa3463d-0x0;var _0x50fd67=_0xe532[_0xa3463d];return _0x50fd67;};'use strict';var asr=require('./lib/api');module[_0x2e53('0x0')]=function(_0x5d9d88,_0x4e4128,_0x209234,_0x3dbbdf){return asr(_0x5d9d88,_0x4e4128,_0x209234,_0x3dbbdf);};
\ No newline at end of file
+'use strict';var asr=require('./lib/api');module['exports']=function(_0x4284be,_0x29495d,_0x3a4be0,_0x5ab617){return asr(_0x4284be,_0x29495d,_0x3a4be0,_0x5ab617);};
\ No newline at end of file
index 1d34ded..7db430a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dce=['close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','info','stringify','hypotheses','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','message','bluebird','moment','crypto','../../../../../../config/logger','agi','exports','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','data'];(function(_0xcab924,_0xe5cafb){var _0x3ff985=function(_0x43ac4e){while(--_0x43ac4e){_0xcab924['push'](_0xcab924['shift']());}};_0x3ff985(++_0xe5cafb);}(_0x1dce,0x1a7));var _0xe1dc=function(_0xfc8852,_0x2cf598){_0xfc8852=_0xfc8852-0x0;var _0x513d2e=_0x1dce[_0xfc8852];return _0x513d2e;};'use strict';var BPromise=require(_0xe1dc('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xe1dc('0x1'));var crypto=require(_0xe1dc('0x2'));var logger=require(_0xe1dc('0x3'))(_0xe1dc('0x4'));module[_0xe1dc('0x5')]=function(_0x147a8d,_0x1a0985,_0x39b737,_0x883b5f){return new BPromise(function(_0x38ff1a,_0x219b76){logger['info']('Tilde\x20URI',_0x883b5f||_0xe1dc('0x6'));var _0x580332=new WebSocket(_0x883b5f||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x30294f='';var _0xd241a9='0';var _0x249b79='1';var _0x383af6='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x4f4426(_0x445e54){var _0x44bce9=crypto[_0xe1dc('0x7')](_0xe1dc('0x8'));_0x44bce9[_0xe1dc('0x9')](_0x445e54);return _0x44bce9[_0xe1dc('0xa')](_0xe1dc('0xb'));}function _0xf80fa5(){try{logger['info'](_0xe1dc('0xc'));var _0x22a819=moment()[_0xe1dc('0xd')]();var _0xd8f907=_0x4f4426(_0x22a819+_0x1a0985+_0x39b737);_0x580332[_0xe1dc('0xe')](JSON['stringify']({'appID':_0x1a0985,'timestamp':_0x22a819,'appKey':_0xd8f907}));var _0x169831=fs[_0xe1dc('0xf')](_0x147a8d);_0x169831['on'](_0xe1dc('0x10'),function(_0x3b3151){_0x580332['send'](_0x3b3151);});_0x169831['on'](_0xe1dc('0x11'),function(){_0x580332['send'](_0xe1dc('0x12'));});}catch(_0xecd770){logger[_0xe1dc('0x13')](_0xe1dc('0x14'),JSON['stringify'](_0xecd770));_0x580332[_0xe1dc('0x15')]();}}function _0x4ddf3a(_0x5f4677){try{if(_0x5f4677){var _0x13d92d=JSON[_0xe1dc('0x16')](_0x5f4677);switch(_0x13d92d[_0xe1dc('0x17')]){case 0x0:if(_0x13d92d[_0xe1dc('0x18')]){if(_0x13d92d['result'][_0xe1dc('0x19')]){logger[_0xe1dc('0x1a')]('Tilde\x20ASR\x20hypoteses',JSON[_0xe1dc('0x1b')](_0x13d92d[_0xe1dc('0x18')][_0xe1dc('0x1c')]));_0x30294f=_0x13d92d[_0xe1dc('0x18')][_0xe1dc('0x1c')][0x0]['transcript'];_0xd241a9=_0x13d92d[_0xe1dc('0x18')][_0xe1dc('0x1c')][0x0][_0xe1dc('0x1d')];_0x249b79='0';_0x383af6=_0xe1dc('0x1e');_0x580332[_0xe1dc('0x15')]();}}break;case 0x1:logger['info']('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x249b79='1';_0x383af6='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger['info'](_0xe1dc('0x1f'));_0x249b79='2';_0x383af6='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xe1dc('0x1a')](_0xe1dc('0x20'));_0x249b79='9';_0x383af6=_0xe1dc('0x20');break;case 0xa:logger[_0xe1dc('0x1a')](_0xe1dc('0x21'));_0x249b79='10';_0x383af6=_0xe1dc('0x21');break;case 0xb:logger[_0xe1dc('0x1a')](_0xe1dc('0x22'));_0x249b79='11';_0x383af6=_0xe1dc('0x22');}}}catch(_0x58e497){logger[_0xe1dc('0x13')](_0xe1dc('0x23'),JSON['stringify'](_0x58e497));_0x580332[_0xe1dc('0x15')]();}}function _0x1b11b4(){logger[_0xe1dc('0x1a')](_0xe1dc('0x24'));_0x38ff1a({'transcript':_0x30294f,'confidence':_0xd241a9,'status':_0x249b79,'status_message':_0x383af6});}function _0x286c03(_0x4ff25d){logger[_0xe1dc('0x13')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xe1dc('0x25')](_0x4ff25d)){logger[_0xe1dc('0x13')](_[_0xe1dc('0x26')](_0x4ff25d)?JSON[_0xe1dc('0x1b')](_0x4ff25d):_0x4ff25d);}}_0x580332['on']('open',_0xf80fa5);_0x580332['on'](_0xe1dc('0x27'),_0x4ddf3a);_0x580332['on']('close',_0x1b11b4);_0x580332['on'](_0xe1dc('0x13'),_0x286c03);});};
\ No newline at end of file
+var _0x7293=['open','message','bluebird','lodash','../../../../../../config/logger','agi','info','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','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','hypotheses','Success.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket'];(function(_0x41ab68,_0x3e806f){var _0x134b6c=function(_0x4c3a80){while(--_0x4c3a80){_0x41ab68['push'](_0x41ab68['shift']());}};_0x134b6c(++_0x3e806f);}(_0x7293,0x1c4));var _0x3729=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x7293[_0x21a9d9];return _0x46adce;};'use strict';var BPromise=require(_0x3729('0x0'));var _=require(_0x3729('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require('crypto');var logger=require(_0x3729('0x2'))(_0x3729('0x3'));module['exports']=function(_0x363a4c,_0x27b7a5,_0x2a81f7,_0x4db7ba){return new BPromise(function(_0x30f434,_0x19f7c9){logger[_0x3729('0x4')]('Tilde\x20URI',_0x4db7ba||_0x3729('0x5'));var _0x1d04b6=new WebSocket(_0x4db7ba||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x1c6113='';var _0x173a82='0';var _0x82144a='1';var _0x45439c=_0x3729('0x6');function _0x5d62f2(_0x18a209){var _0x4013e6=crypto[_0x3729('0x7')](_0x3729('0x8'));_0x4013e6['update'](_0x18a209);return _0x4013e6['digest']('hex');}function _0x45349d(){try{logger[_0x3729('0x4')]('Open\x20Tilde\x20ASR\x20socket');var _0xbd6590=moment()['unix']();var _0x2da899=_0x5d62f2(_0xbd6590+_0x27b7a5+_0x2a81f7);_0x1d04b6[_0x3729('0x9')](JSON[_0x3729('0xa')]({'appID':_0x27b7a5,'timestamp':_0xbd6590,'appKey':_0x2da899}));var _0xabfa7a=fs[_0x3729('0xb')](_0x363a4c);_0xabfa7a['on'](_0x3729('0xc'),function(_0x5db451){_0x1d04b6['send'](_0x5db451);});_0xabfa7a['on'](_0x3729('0xd'),function(){_0x1d04b6[_0x3729('0x9')](_0x3729('0xe'));});}catch(_0x340d79){logger[_0x3729('0xf')](_0x3729('0x10'),JSON['stringify'](_0x340d79));_0x1d04b6[_0x3729('0x11')]();}}function _0x21cb1f(_0x4b5435){try{if(_0x4b5435){var _0x573fae=JSON['parse'](_0x4b5435);switch(_0x573fae[_0x3729('0x12')]){case 0x0:if(_0x573fae[_0x3729('0x13')]){if(_0x573fae['result']['final']){logger[_0x3729('0x4')]('Tilde\x20ASR\x20hypoteses',JSON['stringify'](_0x573fae['result'][_0x3729('0x14')]));_0x1c6113=_0x573fae[_0x3729('0x13')][_0x3729('0x14')][0x0]['transcript'];_0x173a82=_0x573fae[_0x3729('0x13')]['hypotheses'][0x0]['likelihood'];_0x82144a='0';_0x45439c=_0x3729('0x15');_0x1d04b6[_0x3729('0x11')]();}}break;case 0x1:logger['info'](_0x3729('0x6'));_0x82144a='1';_0x45439c=_0x3729('0x6');break;case 0x2:logger['info']('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x82144a='2';_0x45439c='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x3729('0x4')](_0x3729('0x16'));_0x82144a='9';_0x45439c=_0x3729('0x16');break;case 0xa:logger['info'](_0x3729('0x17'));_0x82144a='10';_0x45439c=_0x3729('0x17');break;case 0xb:logger[_0x3729('0x4')](_0x3729('0x18'));_0x82144a='11';_0x45439c='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x5215da){logger[_0x3729('0xf')](_0x3729('0x19'),JSON[_0x3729('0xa')](_0x5215da));_0x1d04b6[_0x3729('0x11')]();}}function _0x50dfc0(){logger[_0x3729('0x4')](_0x3729('0x1a'));_0x30f434({'transcript':_0x1c6113,'confidence':_0x173a82,'status':_0x82144a,'status_message':_0x45439c});}function _0x4ab5df(_0x7f339e){logger[_0x3729('0xf')](_0x3729('0x1b'));if(!_['isNil'](_0x7f339e)){logger[_0x3729('0xf')](_['isObject'](_0x7f339e)?JSON[_0x3729('0xa')](_0x7f339e):_0x7f339e);}}_0x1d04b6['on'](_0x3729('0x1c'),_0x45349d);_0x1d04b6['on'](_0x3729('0x1d'),_0x21cb1f);_0x1d04b6['on'](_0x3729('0xd'),_0x50dfc0);_0x1d04b6['on']('error',_0x4ab5df);});};
\ No newline at end of file
index 56c4afd..600c132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54fa=['exports','./asr'];(function(_0xa7f58b,_0xf501d3){var _0x53b602=function(_0x359cd2){while(--_0x359cd2){_0xa7f58b['push'](_0xa7f58b['shift']());}};_0x53b602(++_0xf501d3);}(_0x54fa,0x6f));var _0xa54f=function(_0x5a488c,_0x4cc470){_0x5a488c=_0x5a488c-0x0;var _0x53a7d6=_0x54fa[_0x5a488c];return _0x53a7d6;};var asr=require(_0xa54f('0x0'));module[_0xa54f('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x574a=['exports','./asr'];(function(_0x2c885a,_0x528411){var _0x1d5cd8=function(_0x2eb0d8){while(--_0x2eb0d8){_0x2c885a['push'](_0x2c885a['shift']());}};_0x1d5cd8(++_0x528411);}(_0x574a,0x18b));var _0xa574=function(_0x3e9825,_0x74b19d){_0x3e9825=_0x3e9825-0x0;var _0x10c0c1=_0x574a[_0x3e9825];return _0x10c0c1;};var asr=require(_0xa574('0x0'));module[_0xa574('0x1')]={'asr':asr};
\ No newline at end of file
index afef00e..442f3c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9a5=['code','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','EventEmitter','./channel','call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening','connection','E_AGI_SERVER_ERROR','destroy','ready'];(function(_0x18d3df,_0x19b39f){var _0x19a1fe=function(_0x910ec8){while(--_0x910ec8){_0x18d3df['push'](_0x18d3df['shift']());}};_0x19a1fe(++_0x19b39f);}(_0xc9a5,0x7d));var _0x5c9a=function(_0x40dca2,_0x4d9a8a){_0x40dca2=_0x40dca2-0x0;var _0x1a8cca=_0xc9a5[_0x40dca2];return _0x1a8cca;};'use strict';var util=require(_0x5c9a('0x0'));var net=require(_0x5c9a('0x1'));var EventEmitter=require(_0x5c9a('0x2'))[_0x5c9a('0x3')];var AGIError=require('./error');var AGIChannel=require(_0x5c9a('0x4'));var AGIServer=function(_0x5cbcf4,_0x12fd9a,_0xc8c454){var _0x1e2715=this,_0x5cbcf4=_0x5cbcf4||0x11dd,_0x12fd9a=_0x12fd9a||'127.0.0.1',_0x4f5502=null,_0x39248b=0x0;EventEmitter[_0x5c9a('0x5')](_0x1e2715);function _0x499e82(){if(!_0x5cbcf4){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError(_0x5c9a('0x8')));return![];}_0x4f5502=net['createServer']();_0x4f5502[_0x5c9a('0x9')](_0x5cbcf4,_0x12fd9a);_0x4f5502['on'](_0x5c9a('0xa'),function(){_0x1e2715['emit'](_0x5c9a('0xa'));});_0x4f5502['on'](_0x5c9a('0xb'),function(_0x2ca9f8){_0x4f5502['getConnections'](function(_0x2edb14,_0x511f78){if(_0x2edb14){_0x1e2715[_0x5c9a('0x6')]('error',new AGIError(_0x5c9a('0xc'),_0x2edb14));}else if(_0xc8c454&&_0xc8c454<0x0){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x2ca9f8[_0x5c9a('0xd')]();}else if(_0xc8c454&&_0xc8c454>0x0&&_0xc8c454<_0x511f78){_0x39248b+=0x1;_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x39248b));_0x2ca9f8[_0x5c9a('0xd')]();}else{var _0x443526=new AGIChannel(_0x2ca9f8);_0x443526['on'](_0x5c9a('0xe'),function(){_0x1e2715[_0x5c9a('0x6')]('connection',_0x443526);});}});});_0x4f5502['on']('error',function(_0x44ee05){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x44ee05[_0x5c9a('0xf')]));});_0x4f5502['on'](_0x5c9a('0x10'),function(){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x10'),new AGIError(_0x5c9a('0x11')));});}process['nextTick'](function(){_0x499e82();});};util[_0x5c9a('0x12')](AGIServer,EventEmitter);module[_0x5c9a('0x13')]=function(_0x2a2914,_0x48fe26,_0x267586){return new AGIServer(_0x2a2914,_0x48fe26,_0x267586);};
\ No newline at end of file
+var _0xb552=['listening','emit','connection','getConnections','destroy','E_AGI_SERVER_MAXCONNECTION','ready','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','inherits','exports','util','./channel','127.0.0.1','error','E_AGI_ARGUMENT_PORT','createServer','listen'];(function(_0x39ab51,_0x1f7db8){var _0x44afa5=function(_0x110e5e){while(--_0x110e5e){_0x39ab51['push'](_0x39ab51['shift']());}};_0x44afa5(++_0x1f7db8);}(_0xb552,0x19b));var _0x2b55=function(_0x37be85,_0xcea558){_0x37be85=_0x37be85-0x0;var _0x575125=_0xb552[_0x37be85];return _0x575125;};'use strict';var util=require(_0x2b55('0x0'));var net=require('net');var EventEmitter=require('events')['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x2b55('0x1'));var AGIServer=function(_0x4b8627,_0x23ff79,_0x4bc429){var _0x11eff0=this,_0x4b8627=_0x4b8627||0x11dd,_0x23ff79=_0x23ff79||_0x2b55('0x2'),_0x491cd5=null,_0x3e8c9c=0x0;EventEmitter['call'](_0x11eff0);function _0x189209(){if(!_0x4b8627){_0x11eff0['emit'](_0x2b55('0x3'),new AGIError(_0x2b55('0x4')));return![];}_0x491cd5=net[_0x2b55('0x5')]();_0x491cd5[_0x2b55('0x6')](_0x4b8627,_0x23ff79);_0x491cd5['on'](_0x2b55('0x7'),function(){_0x11eff0[_0x2b55('0x8')](_0x2b55('0x7'));});_0x491cd5['on'](_0x2b55('0x9'),function(_0x69d516){_0x491cd5[_0x2b55('0xa')](function(_0x4c7c27,_0x2f6a1c){if(_0x4c7c27){_0x11eff0[_0x2b55('0x8')](_0x2b55('0x3'),new AGIError('E_AGI_SERVER_ERROR',_0x4c7c27));}else if(_0x4bc429&&_0x4bc429<0x0){_0x11eff0['emit'](_0x2b55('0x3'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x69d516[_0x2b55('0xb')]();}else if(_0x4bc429&&_0x4bc429>0x0&&_0x4bc429<_0x2f6a1c){_0x3e8c9c+=0x1;_0x11eff0[_0x2b55('0x8')]('error',new AGIError(_0x2b55('0xc'),_0x3e8c9c));_0x69d516['destroy']();}else{var _0x500e80=new AGIChannel(_0x69d516);_0x500e80['on'](_0x2b55('0xd'),function(){_0x11eff0['emit'](_0x2b55('0x9'),_0x500e80);});}});});_0x491cd5['on']('error',function(_0x617053){_0x11eff0['emit'](_0x2b55('0x3'),new AGIError(_0x2b55('0xe'),_0x617053['code']));});_0x491cd5['on'](_0x2b55('0xf'),function(){_0x11eff0[_0x2b55('0x8')](_0x2b55('0xf'),new AGIError(_0x2b55('0x10')));});}process['nextTick'](function(){_0x189209();});};util[_0x2b55('0x11')](AGIServer,EventEmitter);module[_0x2b55('0x12')]=function(_0x2f8d2a,_0x343d2f,_0x25e82f){return new AGIServer(_0x2f8d2a,_0x343d2f,_0x25e82f);};
\ No newline at end of file
index dc53ed5..ac63736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6964=['Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','no\x20list\x20selected','delay','add','minutes','noop','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','SIP/%s','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','Dialogflow\x20Result\x20%s','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','dialogflowV2','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','out','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','response','test','mindigit','maxdigit','hiddendigitsnum','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws\x20Polly\x20%s\x20file\x20created','.wav','awslex','no\x20valid\x20credentials\x20configured','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','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','beep','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','%s/recordings/%s','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','Enter\x20in\x20GOTO\x20(%s)\x20block','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','wav','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20found','getData','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','opts','Executed\x20command\x20%s\x20%s','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','no\x20queue\x20found','indexOf','toLowerCase','macro','gosub','QUEUE','record','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','statusMessage','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','email','Smtp','user','service','host','port','secure','authentication','auth','pass','template_id','debug','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','no\x20variable\x20selected','start','Enter\x20in\x20START\x20(%s)\x20block','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','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','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','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','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','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','lodash','shelljs','randomstring','moment','request-promise','../../config/logger','agi','./scripts','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','Intervals','format','Error\x20getting\x20ODBC\x20connection\x20%s','Error\x20executing\x20query\x20%s','info','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','uniqueid','label','arg_1','callerid','createSquareRecording','calleridname','context','extension','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agent','agentPause','agentUnpause','agentLogout','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','number','POST','PUT','toUpperCase','body','parse','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','headers','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeechTTS','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','clear','includes','agicommand','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','createSquareDetailsReport','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','exec','MRCPRecog','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE'];(function(_0x11549d,_0x19fb27){var _0x429658=function(_0x1c663d){while(--_0x1c663d){_0x11549d['push'](_0x11549d['shift']());}};_0x429658(++_0x19fb27);}(_0x6964,0x114));var _0x4696=function(_0x5a1a51,_0x144c79){_0x5a1a51=_0x5a1a51-0x0;var _0x47edd7=_0x6964[_0x5a1a51];return _0x47edd7;};'use strict';var fs=require('fs');var path=require(_0x4696('0x0'));var util=require('util');var _=require(_0x4696('0x1'));var sh=require(_0x4696('0x2'));var odbc=require('odbc')();var rs=require(_0x4696('0x3'));var moment=require(_0x4696('0x4'));var Mustache=require('mustache');var rp=require(_0x4696('0x5'));var logger=require(_0x4696('0x6'))(_0x4696('0x7'));var config=require('../../config/environment');var scripts=require(_0x4696('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=['rawHeaders',_0x4696('0x9')];var verticesWithRetry=[_0x4696('0xa'),_0x4696('0xb'),_0x4696('0xc')];var AGIVertices=function(_0x259836,_0x4df3dd,_0x1bca99){this[_0x4696('0xd')]=_0x259836;this[_0x4696('0xe')]=_0x4df3dd;this[_0x4696('0xf')]=_0x1bca99;};AGIVertices[_0x4696('0x10')][_0x4696('0x11')]=function(_0x449425,_0x36e6ce){this[_0x4696('0xe')][_0x4696('0x12')](_0x449425)[_0x4696('0x13')](function(_0x508a23){_0x36e6ce(null,_0x508a23?_0x508a23[_0x4696('0x14')]:![]);})[_0x4696('0x15')](function(_0x676a35){_0x36e6ce(_0x676a35);});};AGIVertices[_0x4696('0x10')][_0x4696('0x16')]=function(_0x21f5cc,_0x8b7da4){this[_0x4696('0xe')][_0x4696('0x17')](_0x21f5cc)[_0x4696('0x13')](function(_0x36b51a){_0x8b7da4(null,_0x36b51a?_0x36b51a['name']:![]);})[_0x4696('0x15')](function(_0x2a9695){_0x8b7da4(_0x2a9695);});};AGIVertices[_0x4696('0x10')]['getSquareProject']=function(_0x2554f8,_0x53fda7){this[_0x4696('0xe')][_0x4696('0x18')](_0x2554f8)[_0x4696('0x13')](function(_0x16bdcb){_0x53fda7(null,_0x16bdcb?_0x16bdcb['name']:![]);})[_0x4696('0x15')](function(_0x30b38c){_0x53fda7(_0x30b38c);});};AGIVertices[_0x4696('0x10')][_0x4696('0x19')]=function(_0x5e0b05,_0x246f09){this[_0x4696('0xe')]['getSquareOdbcById'](_0x5e0b05)['then'](function(_0x396ddb){_0x246f09(null,_0x396ddb?_0x396ddb[_0x4696('0x1a')]:![]);})[_0x4696('0x15')](function(_0x1a03b2){_0x246f09(_0x1a03b2);});};AGIVertices[_0x4696('0x10')][_0x4696('0x1b')]=function(_0x5beb75,_0x2c1c36){this[_0x4696('0xe')][_0x4696('0x1c')](_0x5beb75)[_0x4696('0x13')](function(_0x31d208){_0x2c1c36(null,_0x31d208?_0x31d208[_0x4696('0x14')]:![]);})[_0x4696('0x15')](function(_0x148100){_0x2c1c36(_0x148100);});};AGIVertices['prototype'][_0x4696('0x1d')]=function(_0x133fc7,_0x48fa96){this[_0x4696('0xe')]['getTrunkById'](_0x133fc7)[_0x4696('0x13')](function(_0x131f26){_0x48fa96(null,_0x131f26?_0x131f26['name']:![]);})[_0x4696('0x15')](function(_0x36df3e){_0x48fa96(_0x36df3e);});};AGIVertices['prototype'][_0x4696('0x1e')]=function(_0x4b0282,_0x5d7aa1){var _0x31c5e4=this;this[_0x4696('0xe')][_0x4696('0x1f')](_0x4b0282)['then'](function(_0x23fbc3){_0x5d7aa1(null,_0x23fbc3?_0x31c5e4[_0x4696('0x20')](_0x23fbc3[_0x4696('0x21')]):![]);})[_0x4696('0x15')](function(_0x14d3ed){_0x5d7aa1(_0x14d3ed);});};AGIVertices[_0x4696('0x10')][_0x4696('0x22')]=function(_0x50e8a3,_0x1dae42){this[_0x4696('0xe')][_0x4696('0x23')](_0x50e8a3)[_0x4696('0x13')](function(_0x35957e){_0x1dae42(null,_0x35957e?_0x35957e:![]);})[_0x4696('0x15')](function(_0x505c69){_0x1dae42(_0x505c69);});};AGIVertices[_0x4696('0x10')][_0x4696('0x24')]=function(_0x2e8a5c,_0x3e18d9,_0x81f9ab){this[_0x4696('0xf')][_0x4696('0x24')](_0x2e8a5c,_0x3e18d9)[_0x4696('0x13')](function(){_0x81f9ab(null);})[_0x4696('0x15')](function(_0x21dcc1){_0x81f9ab(_0x21dcc1);});};AGIVertices[_0x4696('0x10')][_0x4696('0x25')]=function(_0x9a0d9f,_0x21cd9a){this[_0x4696('0xe')][_0x4696('0x26')](_0x9a0d9f)[_0x4696('0x13')](function(_0x1e53b4){if(_0x1e53b4){if(_0x1e53b4[_0x4696('0x27')]){_0x21cd9a(null,[_0x1e53b4['interval']]);}else{_0x21cd9a(null,_['map'](_0x1e53b4[_0x4696('0x28')],'interval'));}}else{_0x21cd9a(null,![]);}})[_0x4696('0x15')](function(_0x41ab8c){_0x21cd9a(_0x41ab8c);});};AGIVertices[_0x4696('0x10')]['getSoundPath']=function(_0x5ddf63){return util[_0x4696('0x29')]('%s/sounds/converted/%s',FILES_PATH,_0x5ddf63);};AGIVertices[_0x4696('0x10')]['getQueryOdbc']=function(_0x1acaaf,_0x305e88,_0x29b2e7){odbc['open'](_0x1acaaf,function(_0xefe487){if(_0xefe487){logger['error'](_0x4696('0x2a'),_0xefe487);_0x29b2e7(_0xefe487);}else{logger['info']('ODBC\x20connection\x20successfully');odbc['query'](_0x305e88,function(_0x30968f,_0x45f7f){if(_0x30968f){logger['info'](_0x4696('0x2b'),_0x305e88);_0x29b2e7(_0x30968f);}else{logger[_0x4696('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x305e88);odbc[_0x4696('0x2d')](function(_0x373bc1){if(_0x373bc1){logger[_0x4696('0x2e')](_0x4696('0x2f'),_0x373bc1);}_0x29b2e7(null,_0x45f7f);});}});}});};AGIVertices[_0x4696('0x10')][_0x4696('0x30')]=function(_0xa42675,_0x7120cb){this[_0x4696('0xe')][_0x4696('0x31')](_0xa42675)[_0x4696('0x13')](function(_0x4db7fb){_0x7120cb(null,_0x4db7fb?_0x4db7fb:![]);})[_0x4696('0x15')](function(_0x58f433){_0x7120cb(_0x58f433);});};AGIVertices['prototype'][_0x4696('0x32')]=function(_0x5eb54d,_0x5b59e5){this[_0x4696('0xe')][_0x4696('0x32')](_0x5eb54d)['then'](function(_0x4af057){_0x5b59e5(null,_0x4af057);})[_0x4696('0x15')](function(_0x491d1b){_0x5b59e5(_0x491d1b);});};AGIVertices[_0x4696('0x10')]['createSquareDetailsReport']=function(_0x47fbaa,_0x23aff4,_0x453098){this[_0x4696('0xe')]['createSquareDetailsReport']({'uniqueid':this[_0x4696('0xd')][_0x4696('0x33')],'node':_0x47fbaa[_0x4696('0x34')],'application':_0x47fbaa['agicommand'],'data':_0x23aff4||null,'project_name':this[_0x4696('0xd')][_0x4696('0x35')],'callerid':this[_0x4696('0xd')][_0x4696('0x36')]})[_0x4696('0x13')](function(_0x4de5a1){if(_0x453098){_0x453098(null,_0x4de5a1);}})['catch'](function(_0x3aa3bf){if(_0x453098){_0x453098(_0x3aa3bf);}});};AGIVertices[_0x4696('0x10')][_0x4696('0x37')]=function(_0x396e0d,_0x121891,_0x3cf5db,_0x4486eb){this['rpc'][_0x4696('0x37')]({'uniqueid':this['channel'][_0x4696('0x33')],'callerid':this['channel'][_0x4696('0x36')],'calleridname':this['channel'][_0x4696('0x38')],'context':this[_0x4696('0xd')][_0x4696('0x39')],'extension':this['channel'][_0x4696('0x3a')],'priority':this[_0x4696('0xd')]['priority'],'accountcode':this[_0x4696('0xd')][_0x4696('0x3b')],'dnid':this[_0x4696('0xd')][_0x4696('0x3c')],'projectName':this[_0x4696('0xd')]['arg_1'],'saveName':_0x121891,'filename':_0x396e0d[_0x4696('0x3d')]||_0x121891,'savePath':_0x3cf5db})['then'](function(_0x487bff){_0x4486eb(null,_0x487bff);})[_0x4696('0x15')](function(_0x429d4c){_0x4486eb(_0x429d4c);});};AGIVertices[_0x4696('0x10')]['createSquareMessage']=function(_0x2cce32,_0x13d755,_0x5bc6f6,_0x5a2a04,_0x5d8a42){this[_0x4696('0xe')][_0x4696('0x3e')]({'uniqueid':this['channel']['uniqueid'],'body':_0x2cce32,'direction':_0x13d755,'providerName':_0x5bc6f6,'providerResponse':_0x5a2a04})[_0x4696('0x13')](function(_0x1179e5){if(_0x5d8a42){_0x5d8a42(null,_0x1179e5);}})[_0x4696('0x15')](function(_0x4110e7){if(_0x5d8a42){_0x5d8a42(_0x4110e7);}});};AGIVertices[_0x4696('0x10')][_0x4696('0x3f')]=function(_0x4719c6,_0x1fa5e5){this[_0x4696('0xe')][_0x4696('0x3f')]({'firstName':_[_0x4696('0x40')](_0x4719c6[_0x4696('0x14')])||_[_0x4696('0x41')](_0x4719c6[_0x4696('0x14')])?_0x4696('0x42')+Math['random']():_0x4719c6[_0x4696('0x14')],'lastName':_['isEmpty'](_0x4719c6['lastName'])||_[_0x4696('0x41')](_0x4719c6[_0x4696('0x43')])?null:_0x4719c6[_0x4696('0x43')],'phone':_0x4719c6[_0x4696('0x44')],'ListId':_0x4719c6[_0x4696('0x45')],'scheduledat':_0x4719c6[_0x4696('0x46')],'callbackUniqueid':this[_0x4696('0xd')]['uniqueid'],'tags':_0x4696('0x47'),'description':_0x4696('0x48')+_0x4719c6['scheduledAt'][_0x4696('0x49')](),'priority':_0x4719c6[_0x4696('0x4a')]})[_0x4696('0x13')](function(_0x412a88){_0x1fa5e5(null,_0x412a88);})[_0x4696('0x15')](function(_0x1d006f){_0x1fa5e5(_0x1d006f);});};AGIVertices[_0x4696('0x10')][_0x4696('0x4b')]=function(_0x5ec75d,_0x15de93){this[_0x4696('0xe')][_0x4696('0x4c')](_0x5ec75d)['then'](function(_0x5985f1){_0x15de93(null,_0x5985f1?_0x5985f1[_0x4696('0x14')]:![]);})[_0x4696('0x15')](function(_0x22d3cc){_0x15de93(_0x22d3cc);});};AGIVertices[_0x4696('0x10')]['agentPause']=function(_0x19d6e8,_0x119b8e,_0x4d6976){var _0x5b593c={'role':_0x4696('0x4d')};_0x5b593c[_0x19d6e8]=this[_0x4696('0xd')][_0x4696('0x36')];this['rpc'][_0x4696('0x4e')](_0x5b593c,_0x119b8e,this[_0x4696('0xd')][_0x4696('0x33')])['then'](function(_0x57a12c){_0x4d6976(null,_['isNil'](_0x57a12c)?![]:!![]);})[_0x4696('0x15')](function(_0x36dcc9){logger[_0x4696('0x2e')](_0x36dcc9);_0x4d6976(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x295156,_0x569562){var _0x55ec59={'role':_0x4696('0x4d')};_0x55ec59[_0x295156]=this[_0x4696('0xd')][_0x4696('0x36')];this[_0x4696('0xe')][_0x4696('0x4f')](_0x55ec59)[_0x4696('0x13')](function(_0x5f259d){_0x569562(null,_[_0x4696('0x41')](_0x5f259d)?![]:!![]);})['catch'](function(_0x4c6e93){logger[_0x4696('0x2e')](_0x4c6e93);_0x569562(null,![]);});};AGIVertices[_0x4696('0x10')][_0x4696('0x50')]=function(_0x1ccdee,_0x207bf7){var _0x58c936={'role':_0x4696('0x4d')};_0x58c936[_0x1ccdee]=this[_0x4696('0xd')][_0x4696('0x36')];this[_0x4696('0xe')][_0x4696('0x50')](_0x58c936)[_0x4696('0x13')](function(_0x4d9479){_0x207bf7(null,_[_0x4696('0x41')](_0x4d9479)?![]:!![]);})[_0x4696('0x15')](function(_0x5792ab){logger[_0x4696('0x2e')](_0x5792ab);_0x207bf7(null,![]);});};AGIVertices[_0x4696('0x10')]['agentLogin']=function(_0x28914f,_0x1f6219){var _0x47f7a0={'role':_0x4696('0x4d')};_0x47f7a0[_0x28914f]=this[_0x4696('0xd')][_0x4696('0x36')];var _0xcd061d=_0x28914f!='internal'?util[_0x4696('0x29')](_0x4696('0x51'),_0x4696('0x52'),this[_0x4696('0xd')][_0x4696('0x36')]):undefined;this[_0x4696('0xe')][_0x4696('0x53')](_0x47f7a0,_0xcd061d)[_0x4696('0x13')](function(_0x37d890){_0x1f6219(null,_[_0x4696('0x41')](_0x37d890)?![]:!![]);})[_0x4696('0x15')](function(_0x25b030){logger['error'](_0x25b030);_0x1f6219(null,![]);});};AGIVertices['prototype'][_0x4696('0x54')]=function(_0x271d97,_0x230e1f){sh['exec'](_[_0x4696('0x55')](_0x271d97),function(_0x4dd882,_0x179ce2){var _0x4200f8=_0x179ce2['replace'](/(\r\n|\n|\r)/gm,'');_0x230e1f(null,_0x4200f8);});};AGIVertices[_0x4696('0x10')][_0x4696('0x56')]=function(_0x175d9e,_0x57728b){scripts[_0x4696('0x56')](_0x175d9e[_0x4696('0x57')],_0x175d9e[_0x4696('0x58')]||_0x4696('0x59'),_0x175d9e['text'],_0x175d9e[_0x4696('0x5a')]||_0x4696('0x5b'),_0x175d9e[_0x4696('0x5c')]||'MALE',_0x175d9e[_0x4696('0x5d')]||'MP3')[_0x4696('0x13')](function(_0x98502e){_0x57728b(null,_0x98502e);})[_0x4696('0x15')](function(_0x4c0229){_0x57728b(_0x4c0229);});};AGIVertices[_0x4696('0x10')][_0x4696('0x5e')]=function(_0xe6b0f2,_0x50dc9a){scripts['googleTTS'](_0xe6b0f2[_0x4696('0x59')],_0xe6b0f2[_0x4696('0x5f')]||'en',0x1)['then'](function(_0x4a4d49){_0x50dc9a(null,_0x4a4d49);})['catch'](function(_0x14289f){_0x50dc9a(_0x14289f);});};AGIVertices[_0x4696('0x10')][_0x4696('0x60')]=function(_0x370a3f,_0x5e0363){var _0x34820c={'uri':_0x370a3f[_0x4696('0x61')],'method':_0x370a3f[_0x4696('0x62')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x370a3f[_0x4696('0x63')])===_0x4696('0x64')&&parseInt(_0x370a3f[_0x4696('0x63')])>=0x1?parseInt(_0x370a3f[_0x4696('0x63')])*0x3e8:0x5*0x3e8};if(_['includes']([_0x4696('0x65'),_0x4696('0x66')],_0x34820c[_0x4696('0x62')][_0x4696('0x67')]())){try{_0x34820c[_0x4696('0x68')]=_0x370a3f[_0x4696('0x9')]?JSON[_0x4696('0x69')](_0x370a3f[_0x4696('0x9')]):{};}catch(_0x438505){logger[_0x4696('0x2e')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x438505);}}try{_0x34820c['headers']=_0x370a3f[_0x4696('0x6a')]?JSON[_0x4696('0x69')](_0x370a3f[_0x4696('0x6a')]):{};}catch(_0x2ff55d){logger[_0x4696('0x2e')](_0x4696('0x6b'),_0x2ff55d);}if(_0x370a3f['computedVariables']){try{var _0x5be6cb=require(_0x370a3f[_0x4696('0x6c')])[_0x4696('0x6d')](this,_0x34820c);_0x34820c['uri']=Mustache[_0x4696('0x6e')](_0x370a3f[_0x4696('0x61')],_0x5be6cb,{},['$$','$$']);if(_0x34820c[_0x4696('0x6f')]){_0x34820c[_0x4696('0x6f')]=JSON[_0x4696('0x69')](Mustache[_0x4696('0x6e')](JSON[_0x4696('0x70')](_0x34820c[_0x4696('0x6f')]),_0x5be6cb,{},['$$','$$']));}if(_0x34820c[_0x4696('0x68')]){_0x34820c[_0x4696('0x68')]=JSON['parse'](Mustache['render'](JSON[_0x4696('0x70')](_0x34820c[_0x4696('0x68')]),_0x5be6cb,{},['$$','$$']));}}catch(_0x28d68f){logger['error'](_0x4696('0x71'),_0x28d68f);}}rp(_0x34820c)['then'](function(_0x3a8b9f){var _0x30a6f8={'statusCode':_0x3a8b9f['statusCode']||0xc8,'statusMessage':_0x3a8b9f['statusMessage']||'OK','headers':_0x3a8b9f['headers']||{},'body':_0x3a8b9f[_0x4696('0x68')]||{}};_0x5e0363(null,_0x30a6f8);})['catch'](function(_0x74738e){var _0x952dc5={'statusCode':_0x74738e[_0x4696('0x72')]||0x1f4,'statusMessage':_0x74738e[_0x4696('0x73')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x74738e[_0x4696('0x74')][_0x4696('0x6f')]||{},'body':_0x74738e[_0x4696('0x74')]['body']||{}};_0x5e0363(null,_0x952dc5);});};AGIVertices[_0x4696('0x10')][_0x4696('0x75')]=function(_0x5b694f,_0x4ac431){scripts[_0x4696('0x75')](this[_0x4696('0xd')]['uniqueid'],_0x5b694f[_0x4696('0x76')],_0x5b694f[_0x4696('0x59')],_0x5b694f[_0x4696('0x77')]||'en')['then'](function(_0x4bf531){_0x4ac431(null,_0x4bf531);})[_0x4696('0x15')](function(_0x291e8f){_0x4ac431(_0x291e8f);});};AGIVertices[_0x4696('0x10')][_0x4696('0x78')]=function(_0x4a61fb,_0xe7f30c){scripts[_0x4696('0x78')](this[_0x4696('0xd')][_0x4696('0x33')],_0x4a61fb[_0x4696('0x79')],_0x4a61fb['client_email'],_0x4a61fb[_0x4696('0x7a')],_0x4a61fb[_0x4696('0x59')],_0x4a61fb['dialogflowV2_language']||'en')[_0x4696('0x13')](function(_0x63c6e6){_0xe7f30c(null,_0x63c6e6);})[_0x4696('0x15')](function(_0x11bd90){_0xe7f30c(_0x11bd90);});};AGIVertices[_0x4696('0x10')][_0x4696('0x7b')]=function(_0x543ead,_0x2458f2){scripts[_0x4696('0x7b')](this[_0x4696('0xd')],_0x543ead)[_0x4696('0x13')](function(_0x31a70f){_0x2458f2(null,_0x31a70f);})[_0x4696('0x15')](function(_0x3ffd2e){_0x2458f2(_0x3ffd2e);});};AGIVertices[_0x4696('0x10')]['ispeechTTS']=function(_0x53ded1,_0x5a3a6f){scripts[_0x4696('0x7c')](_0x53ded1['key'],_0x53ded1[_0x4696('0x59')],_0x53ded1['ispeech_tts_language']||'en-US',_0x53ded1['speed'])[_0x4696('0x13')](function(_0x5123f0){_0x5a3a6f(null,_0x5123f0);})[_0x4696('0x15')](function(_0x133e21){_0x5a3a6f(_0x133e21);});};AGIVertices[_0x4696('0x10')][_0x4696('0x7d')]=function(_0xe692f9,_0x4e757f,_0x4a3ba2){scripts[_0x4696('0x7d')](_0x4e757f,_0xe692f9[_0x4696('0x76')],_0xe692f9[_0x4696('0x7e')]||_0x4696('0x5b'),this[_0x4696('0x7f')](_0xe692f9[_0x4696('0x80')])?_0xe692f9['model']:undefined)['then'](function(_0x57584f){_0x4a3ba2(null,_0x57584f);})['catch'](function(_0x5916ec){_0x4a3ba2(_0x5916ec);});};AGIVertices[_0x4696('0x10')]['awsPolly']=function(_0x4e207b,_0x3cdfd9){scripts[_0x4696('0x81')](_0x4e207b[_0x4696('0x82')],_0x4e207b[_0x4696('0x83')],_0x4e207b[_0x4696('0x84')],_0x4e207b['aws_polly_voice']||_0x4696('0x85'),_0x4e207b['text'],_0x4e207b[_0x4696('0x86')]||_0x4696('0x59'))[_0x4696('0x13')](function(_0x9067c7){_0x3cdfd9(null,_0x9067c7);})[_0x4696('0x15')](function(_0x5ac572){_0x3cdfd9(_0x5ac572);});};AGIVertices[_0x4696('0x10')][_0x4696('0x87')]=function(_0x5d9a3d,_0x48324b){scripts[_0x4696('0x87')](this['channel'][_0x4696('0x33')],_0x5d9a3d['aws_access_key_id'],_0x5d9a3d[_0x4696('0x83')],_0x5d9a3d['aws_lex_region'],_0x5d9a3d[_0x4696('0x59')],_0x5d9a3d[_0x4696('0x88')])[_0x4696('0x13')](function(_0x2ab5ad){_0x48324b(null,_0x2ab5ad);})[_0x4696('0x15')](function(_0x2a41e5){_0x48324b(_0x2a41e5);});};AGIVertices[_0x4696('0x10')]['googleASR']=function(_0x150035,_0x8928c9,_0x83e27e){scripts[_0x4696('0x89')](_0x8928c9,_0x150035['key'],_0x150035[_0x4696('0x8a')]||_0x4696('0x5b'))['then'](function(_0x2d7e61){_0x83e27e(null,_0x2d7e61);})[_0x4696('0x15')](function(_0x5d8059){_0x83e27e(_0x5d8059);});};AGIVertices[_0x4696('0x10')][_0x4696('0x8b')]=function(_0xa8a404,_0xb50a87,_0x114c7c){scripts['tildeASR'](_0xb50a87,_0xa8a404[_0x4696('0x8c')],_0xa8a404[_0x4696('0x8d')],_0xa8a404[_0x4696('0x8e')])[_0x4696('0x13')](function(_0x56c79e){_0x114c7c(null,_0x56c79e);})[_0x4696('0x15')](function(_0x5f4652){_0x114c7c(_0x5f4652);});};AGIVertices['prototype'][_0x4696('0x8f')]=function(_0x19838c){var _0x2c38de=_[_0x4696('0x90')](verticesWithRetry,_0x19838c[_0x4696('0x91')])?_0x19838c:_[_0x4696('0x92')](_0x19838c);for(var _0x5c54ca in _0x2c38de){if(_0x2c38de[_0x4696('0x93')](_0x5c54ca)){if(_0x2c38de[_0x5c54ca]&&_[_0x4696('0x94')](_0x2c38de[_0x5c54ca])){if(_[_0x4696('0x90')](recursiveMapAttributes,_0x5c54ca)){_0x2c38de[_0x5c54ca]=this[_0x4696('0x95')](_0x2c38de[_0x5c54ca]);}else{_0x2c38de[_0x5c54ca]=this[_0x4696('0x96')](_0x2c38de[_0x5c54ca]);}}}}return _0x2c38de;};AGIVertices[_0x4696('0x10')]['recursiveNodeIndex']=function(_0x188cfa){for(var _0x55b9ce in _0x188cfa){if(_0x188cfa[_0x4696('0x93')](_0x55b9ce)){if(_[_0x4696('0x97')](_0x188cfa[_0x55b9ce])){this[_0x4696('0x98')](_0x188cfa[_0x55b9ce]);}else if(_[_0x4696('0x99')](_0x188cfa[_0x55b9ce])){for(var _0x4866fd=0x0;_0x4866fd<_0x188cfa[_0x55b9ce][_0x4696('0x9a')];_0x4866fd++){this[_0x4696('0x98')](_0x188cfa[_0x55b9ce][_0x4866fd]);}}else if(_[_0x4696('0x94')](_0x188cfa[_0x55b9ce])){_0x188cfa[_0x55b9ce]=this['replaceAllVariables'](_0x188cfa[_0x55b9ce]);}}}};AGIVertices[_0x4696('0x10')][_0x4696('0x9b')]=function(_0x5c5bb1,_0x48ae6a){for(var _0x556bf7 in _0x5c5bb1){if(_0x5c5bb1[_0x4696('0x93')](_0x556bf7)){if(_[_0x4696('0x97')](_0x5c5bb1[_0x556bf7])){if(!_[_0x4696('0x40')](_0x5c5bb1[_0x556bf7])){this[_0x4696('0x9b')](_0x5c5bb1[_0x556bf7],util[_0x4696('0x29')]('%s.%s',_0x48ae6a,_0x556bf7));}}else if(_[_0x4696('0x99')](_0x5c5bb1[_0x556bf7])){for(var _0x2d0527=0x0;_0x2d0527<_0x5c5bb1[_0x556bf7]['length'];_0x2d0527++){this[_0x4696('0x9b')](_0x5c5bb1[_0x556bf7][_0x2d0527],util['format'](_0x4696('0x9c'),_0x48ae6a,_0x556bf7+'['+_0x2d0527+']'));}}else{if(!_[_0x4696('0x41')](_0x5c5bb1[_0x556bf7])){this[_0x4696('0xd')][_0x4696('0x9d')](util[_0x4696('0x29')]('%s.%s',_0x48ae6a,_0x556bf7),_0x5c5bb1[_0x556bf7]);}}}}};AGIVertices[_0x4696('0x10')]['replaceObjectAllVariables']=function(_0x1b2357){try{var _0x5f41c3=JSON[_0x4696('0x69')](_0x1b2357);this[_0x4696('0x98')](_0x5f41c3);return JSON[_0x4696('0x70')](_0x5f41c3);}catch(_0x146d09){return this[_0x4696('0x96')](_0x1b2357);}};AGIVertices[_0x4696('0x10')][_0x4696('0x96')]=function(_0x50cf79){var _0x44d450=_0x50cf79[_0x4696('0x9e')]('{');for(var _0x50e055=0x1;_0x50e055<_0x44d450[_0x4696('0x9a')];_0x50e055+=0x1){var _0x4de146=_0x44d450[_0x50e055][_0x4696('0x9e')]('}');if(_0x4de146['length']>0x1){_0x50cf79=_0x50cf79[_0x4696('0x9f')]('{'+_0x4de146[0x0]+'}',this[_0x4696('0xd')][_0x4696('0x11')](_0x4de146[0x0])[_0x4696('0xa0')]||_0x4de146[0x0]);}}if(_0x44d450[_0x4696('0x9a')]===0x1){return _0x50cf79[_0x4696('0x49')]();}return this[_0x4696('0x96')](_0x50cf79);};AGIVertices['prototype'][_0x4696('0xa1')]=function(_0x23479a,_0x242463){var _0xab2778=this[_0x4696('0xd')][_0x4696('0x11')](_0x23479a);if(_0xab2778[_0x4696('0xa2')]===-0x1){return _0xab2778;}logger['info'](util[_0x4696('0x29')](_0x4696('0xa3'),_0x242463,_0xab2778['extra']));return this['channel'][_0x4696('0x9d')](_0x242463,_0xab2778[_0x4696('0xa0')]);};AGIVertices['prototype'][_0x4696('0x7f')]=function(_0x3e7bea){return _0x3e7bea&&_0x3e7bea!=='0'&&_0x3e7bea!=='-1'&&_0x3e7bea!=='';};AGIVertices[_0x4696('0x10')][_0x4696('0xa4')]=function(_0x4136f6){this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x4136f6,'-');_0x4136f6['retry']=_0x4136f6[_0x4696('0xa4')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x4696('0xa6')]=function(_0x55745a){logger[_0x4696('0x2c')](util['format'](_0x4696('0xa7'),_0x55745a[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x55745a[_0x4696('0x59')])){return this[_0x4696('0xd')]['noop']('no\x20text\x20configured');}var _0x28a2a2='\x22'+_0x55745a[_0x4696('0x59')]+'\x22';if(this[_0x4696('0x7f')](_0x55745a[_0x4696('0x74')])){_0x28a2a2+=','+_0x55745a[_0x4696('0x74')];}var _0x330f7c=this['channel']['exec'](_0x4696('0xa8'),_0x28a2a2);if(_0x330f7c[_0x4696('0xa2')]===-0x1){return _0x330f7c;}return this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0xa9'),_0x28a2a2));};AGIVertices[_0x4696('0x10')][_0x4696('0xaa')]=function(_0x4a9c0f){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xab'),_0x4a9c0f[_0x4696('0x34')]));if(!this['isConfigured'](_0x4a9c0f[_0x4696('0xac')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xad'));}var _0x52c7c3=_0x4a9c0f[_0x4696('0xac')];if(this[_0x4696('0x7f')](_0x4a9c0f[_0x4696('0x74')])){_0x52c7c3+=','+_0x4a9c0f['options'];}var _0x34e6c0=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xaf'),_0x52c7c3);if(_0x34e6c0[_0x4696('0xa2')]===-0x1){return _0x34e6c0;}var _0x273149=this[_0x4696('0xa1')]('RECOG_CONFIDENCE()',_0x4696('0xb0'));if(_0x273149[_0x4696('0xa2')]===-0x1){return _0x273149;}var _0x247400=this['getAndSetVariable']('RECOG_INPUT()',_0x4696('0xb1'));if(_0x247400[_0x4696('0xa2')]===-0x1){return _0x247400;}var _0x30058d=this[_0x4696('0xa1')]('RECOG_INSTANCE()',_0x4696('0xb2'));if(_0x30058d[_0x4696('0xa2')]===-0x1){return _0x30058d;}return this['channel']['noop'](util['format'](_0x4696('0xb3'),_0x52c7c3));};AGIVertices[_0x4696('0x10')]['agi']=function(_0x13b42a){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xb4'),_0x13b42a[_0x4696('0x34')]));return this['channel']['agi']([_0x13b42a[_0x4696('0xb5')],_0x13b42a[_0x4696('0xb6')]]);};AGIVertices[_0x4696('0x10')][_0x4696('0xb7')]=function(_0x5bdd89){logger[_0x4696('0x2c')](util['format'](_0x4696('0xb8'),_0x5bdd89[_0x4696('0x34')]));if(this[_0x4696('0x7f')](_0x5bdd89[_0x4696('0x63')])){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xb9'),_0x5bdd89['timeout']));var _0x5e3810=this[_0x4696('0xd')]['wait'](_0x5bdd89[_0x4696('0x63')]);if(_0x5e3810[_0x4696('0xa2')]===-0x1){return _0x5e3810;}}return this[_0x4696('0xd')][_0x4696('0xb7')]();};AGIVertices['prototype']['callback']=function(_0x28ff33){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x28ff33[_0x4696('0x34')]));if(!this['isConfigured'](_0x28ff33['list_id'])){return this['channel'][_0x4696('0x2e')](_0x28ff33,_0x4696('0xba'));}_0x28ff33['scheduledAt']=moment();if(this[_0x4696('0x7f')](_0x28ff33[_0x4696('0xbb')])){_0x28ff33[_0x4696('0x46')]=moment()[_0x4696('0xbc')](_0x28ff33[_0x4696('0xbb')],_0x4696('0xbd'));}if(!this[_0x4696('0x7f')](_0x28ff33[_0x4696('0x4a')])){_0x28ff33[_0x4696('0x4a')]=0x2;}this['createCmContact'][_0x4696('0x6d')](this,_0x28ff33);return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0xbf'),_0x28ff33[_0x4696('0x44')],_0x28ff33[_0x4696('0x45')],_0x28ff33[_0x4696('0x46')]));};AGIVertices[_0x4696('0x10')][_0x4696('0xc0')]=function(_0x585e28){logger['info'](util['format'](_0x4696('0xc1'),_0x585e28[_0x4696('0x34')]));var _0x1ca184=this[_0x4696('0xd')][_0x4696('0xae')](_0x585e28[_0x4696('0xc2')],_0x585e28[_0x4696('0x74')]);if(_0x1ca184[_0x4696('0xa2')]===-0x1){return _0x1ca184;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20%s\x20%s',_0x585e28['application'],_0x585e28[_0x4696('0x74')]));};AGIVertices[_0x4696('0x10')][_0x4696('0xc3')]=function(_0x261529){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xc4'),_0x261529[_0x4696('0x34')]));if(!this['isConfigured'](_0x261529[_0x4696('0x59')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xc5'));}var _0x193b16='\x22'+_0x261529['text']+'\x22';if(this[_0x4696('0x7f')](_0x261529[_0x4696('0x74')])){_0x193b16+=','+_0x261529[_0x4696('0x74')];}var _0x3db4f7=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xa8'),_0x193b16);if(_0x3db4f7['result']===-0x1){return _0x3db4f7;}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0xa9'),_0x193b16));};AGIVertices[_0x4696('0x10')][_0x4696('0xc6')]=function(_0x4c831b){logger[_0x4696('0x2c')](util['format'](_0x4696('0xc7'),_0x4c831b['label']));if(!this['isConfigured'](_0x4c831b[_0x4696('0x59')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}var _0x521f24='\x22'+_0x4c831b['text']+'\x22';if(this[_0x4696('0x7f')](_0x4c831b[_0x4696('0x74')])){_0x521f24+=','+_0x4c831b['options'];}var _0x17add6=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xa8'),_0x521f24);if(_0x17add6[_0x4696('0xa2')]===-0x1){return _0x17add6;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20MRCPSynth\x20%s',_0x521f24));};AGIVertices['prototype'][_0x4696('0xc8')]=function(_0xdba13f){logger['info'](util[_0x4696('0x29')](_0x4696('0xc9'),_0xdba13f[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xdba13f[_0x4696('0xac')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xad'));}var _0x26169d=_0xdba13f[_0x4696('0xac')];if(this[_0x4696('0x7f')](_0xdba13f[_0x4696('0x74')])){_0x26169d+=','+_0xdba13f['options'];}var _0x12a715=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xaf'),_0x26169d);if(_0x12a715['result']===-0x1){return _0x12a715;}var _0x43961b=this[_0x4696('0xa1')](_0x4696('0xca'),_0x4696('0xcb'));if(_0x43961b[_0x4696('0xa2')]===-0x1){return _0x43961b;}var _0x4a5a53=this[_0x4696('0xa1')](_0x4696('0xcc'),_0x4696('0xcd'));if(_0x4a5a53[_0x4696('0xa2')]===-0x1){return _0x4a5a53;}var _0x2ca82b=this['getAndSetVariable'](_0x4696('0xce'),_0x4696('0xcf'));if(_0x2ca82b[_0x4696('0xa2')]===-0x1){return _0x2ca82b;}return this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x26169d));};AGIVertices[_0x4696('0x10')][_0x4696('0xd0')]=function(_0x35048e){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xd1'),_0x35048e[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x35048e[_0x4696('0xac')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20grammar\x20configured');}var _0x4f045b=_0x35048e[_0x4696('0xac')];if(this['isConfigured'](_0x35048e[_0x4696('0x74')])){_0x4f045b+=','+_0x35048e[_0x4696('0x74')];}var _0x15068c=this[_0x4696('0xd')]['exec']('MRCPRecog',_0x4f045b);if(_0x15068c['result']===-0x1){return _0x15068c;}var _0x419b2a=this[_0x4696('0xa1')](_0x4696('0xca'),'SESTEK_ASR_CONFIDENCE');if(_0x419b2a[_0x4696('0xa2')]===-0x1){return _0x419b2a;}var _0x434b7f=this['getAndSetVariable'](_0x4696('0xcc'),'SESTEK_ASR_TRANSCRIPT');if(_0x434b7f[_0x4696('0xa2')]===-0x1){return _0x434b7f;}var _0x443194=this[_0x4696('0xa1')](_0x4696('0xce'),_0x4696('0xd2'));if(_0x443194[_0x4696('0xa2')]===-0x1){return _0x443194;}return this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x4f045b));};AGIVertices[_0x4696('0x10')][_0x4696('0xd3')]=function(_0x44bc57){logger['info'](util[_0x4696('0x29')](_0x4696('0xd4'),_0x44bc57[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x44bc57[_0x4696('0xd5')])){return this['channel'][_0x4696('0x2e')](_0x44bc57,_0x4696('0xd6'));}var _0x509ffe=this[_0x4696('0x19')][_0x4696('0x6d')](this,_0x44bc57[_0x4696('0xd5')]);if(!_0x509ffe){return this['channel'][_0x4696('0x2e')](_0x44bc57,_0x4696('0xd7'));}if(!this['isConfigured'](_0x44bc57[_0x4696('0xd8')])){return this['channel'][_0x4696('0x2e')](_0x44bc57,_0x4696('0xd9'));}var _0x4aa80b=_0x44bc57[_0x4696('0xd8')][_0x4696('0xda')](/(\r\n|\n|\r)/gm,'\x20');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xdb'),_0x4aa80b));var _0x17f700=this['getQueryOdbc']['sync'](this,_0x509ffe,_0x4aa80b);this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x44bc57,_0x4aa80b);if(!this[_0x4696('0x7f')](_0x44bc57[_0x4696('0xdc')])){return this['channel']['noop'](_0x4696('0xdd'));}var _0x3d2876=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x44bc57[_0x4696('0xdc')]);if(!_0x3d2876){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x44bc57,_0x4696('0xde'));}var _0x4c77bd=this;_0x17f700[_0x4696('0xdf')](function(_0x35a92c,_0x49e08c){Object[_0x4696('0xe0')](_0x35a92c)[_0x4696('0xdf')](function(_0x1f4111){_0x4c77bd[_0x4696('0xd')][_0x4696('0x9d')](util['format']('%s[%s][%s]',_0x3d2876,_0x49e08c,_0x1f4111),_0x35a92c[_0x1f4111]);});});this[_0x4696('0xd')]['setVariable'](util['format'](_0x4696('0xe1'),_0x3d2876),_0x17f700['length']);return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0xe2'),_0x3d2876));};AGIVertices[_0x4696('0x10')][_0x4696('0xe3')]=function(_0x253cd6){logger['debug'](util['format'](_0x4696('0xe4'),_0x253cd6[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x253cd6[_0x4696('0xe5')])){return this[_0x4696('0xd')]['error'](_0x253cd6,'no\x20user\x20selected');}var _0x49ede4=this[_0x4696('0x1b')][_0x4696('0x6d')](this,_0x253cd6[_0x4696('0xe5')]);if(!_0x49ede4){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x253cd6,_0x4696('0xe6'));}var _0x3cbef8=this[_0x4696('0xd')]['exec']('DIAL',[util['format'](_0x4696('0xe7'),_0x49ede4),_0x253cd6[_0x4696('0x63')],_0x253cd6['opts'],_0x253cd6[_0x4696('0x61')]]);if(_0x3cbef8[_0x4696('0xa2')]===-0x1){return _0x3cbef8;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xe8'),_0x4696('0xe9')));};AGIVertices[_0x4696('0x10')][_0x4696('0xea')]=function(_0x11390c){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xeb'),_0x11390c['label']));if(!this[_0x4696('0x7f')](_0x11390c[_0x4696('0x76')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xec'));}if(!this[_0x4696('0x7f')](_0x11390c['text'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xed')]=!![];this[_0x4696('0xa5')](_0x11390c);this[_0x4696('0x3e')](_0x11390c[_0x4696('0x59')],'in','','');this['channel']['noop'](util['format'](_0x4696('0xee'),_0x11390c[_0x4696('0x59')]));var _0x54d27c=this[_0x4696('0x75')][_0x4696('0x6d')](this,_0x11390c);if(_0x54d27c){for(var _0x4743e9 in _0x54d27c){if(_0x54d27c[_0x4696('0x93')](_0x4743e9)){this[_0x4696('0xd')][_0x4696('0x9d')](util[_0x4696('0x29')](_0x4696('0xef'),_0x4743e9[_0x4696('0x67')]()),_0x54d27c[_0x4743e9]);}}this[_0x4696('0x3e')](_0x54d27c[_0x4696('0xf0')],'out',_0x4696('0xea'),'');return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xf1'),_0x54d27c['speech']));}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x11390c,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')]['dialogflowV2']=function(_0x27150f){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xf2'),_0x27150f[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0x79')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20project_id\x20configured');}if(!this['isConfigured'](_0x27150f[_0x4696('0xf3')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xf4'));}if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0x7a')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xf5'));}if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0xf6')])){return this['channel'][_0x4696('0xbe')](_0x4696('0xf7'));}if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0x59')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xed')]=!![];this[_0x4696('0xa5')](_0x27150f);this[_0x4696('0x3e')](_0x27150f[_0x4696('0x59')],'in','','');this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xf8'),_0x27150f['text']));var _0x5a8d25=this[_0x4696('0x78')]['sync'](this,_0x27150f);if(_0x5a8d25){for(var _0x34dfa1 in _0x5a8d25){if(_0x5a8d25['hasOwnProperty'](_0x34dfa1)){if(_0x34dfa1!==_0x4696('0xf9')){this[_0x4696('0xd')]['setVariable'](util[_0x4696('0x29')](_0x4696('0xef'),_0x34dfa1[_0x4696('0x67')]()),_0x5a8d25[_0x34dfa1]);}}}this[_0x4696('0x3e')](_0x5a8d25[_0x4696('0xf0')],'out',_0x4696('0xfa'),_0x5a8d25['providerResponse']);return this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xfb'),_0x5a8d25['speech']));}return this['channel'][_0x4696('0x2e')](_0x27150f,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')][_0x4696('0xfc')]=function(_0x36f01d){logger['info'](util[_0x4696('0x29')](_0x4696('0xfd'),_0x36f01d[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x36f01d[_0x4696('0xfe')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x4696('0x7f')](_0x36f01d['username'])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20username\x20configured');}if(!this['isConfigured'](_0x36f01d[_0x4696('0xff')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x100'));}if(!this[_0x4696('0x7f')](_0x36f01d['ndassistant_url'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')]['bot']=!![];this[_0x4696('0xa5')](_0x36f01d);this[_0x4696('0x3e')](_0x36f01d[_0x4696('0x59')],'in','','');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x101'),_0x36f01d[_0x4696('0x59')]));var _0xfcc920=this[_0x4696('0x7b')][_0x4696('0x6d')](this,_0x36f01d);if(_0xfcc920){for(var _0x28d24d in _0xfcc920){if(_0xfcc920[_0x4696('0x93')](_0x28d24d)){this[_0x4696('0xd')]['setVariable'](util[_0x4696('0x29')]('SESTEK_NDA_%s',_0x28d24d['toUpperCase']()),_0xfcc920[_0x28d24d]);}}this[_0x4696('0x3e')](_0xfcc920['speech'],_0x4696('0x102'),_0x4696('0xfc'),'');if(_0xfcc920[_0x4696('0x103')]){this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x104'),_0xfcc920['audiofile']));var _0x49ec73=this[_0x4696('0xd')][_0x4696('0x105')](_0xfcc920['audiofile']);try{fs[_0x4696('0x106')](_0xfcc920[_0x4696('0x103')]+'.wav');}catch(_0x464997){logger[_0x4696('0x2e')](_0x464997);}return _0x49ec73;}else{return this[_0x4696('0xd')][_0x4696('0xbe')](util['format']('SestekNDA\x20Result\x20%s',_0xfcc920[_0x4696('0xf0')]));}}return this['channel'][_0x4696('0x2e')](_0x36f01d,_0x4696('0x107'));};AGIVertices[_0x4696('0x10')][_0x4696('0x108')]=function(_0x4f542f){logger['info'](util[_0x4696('0x29')](_0x4696('0x109'),_0x4f542f['label']));return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x108'));};AGIVertices['prototype'][_0x4696('0x10a')]=function(_0x4334e1){logger[_0x4696('0x2c')](util['format']('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x4334e1[_0x4696('0x34')]));var _0x42cdcf='';if(_0x4334e1[_0x4696('0x10b')]){if(!this[_0x4696('0x7f')](_0x4334e1[_0x4696('0x10b')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x4334e1,_0x4696('0x10c'));}else{var _0x43a610=parseInt(_0x4334e1[_0x4696('0x10b')],0xa);if(isNaN(_0x43a610)){_0x42cdcf=_0x4334e1[_0x4696('0x10b')];}else{_0x42cdcf=this[_0x4696('0x1d')][_0x4696('0x6d')](this,_0x4334e1[_0x4696('0x10b')]);if(!_0x42cdcf){return this['channel'][_0x4696('0x2e')](_0x4334e1,_0x4696('0x10d'));}}}}else if(_0x4334e1[_0x4696('0x10e')]){_0x42cdcf=_0x4334e1[_0x4696('0x10e')];}else{return this[_0x4696('0xd')][_0x4696('0x2e')](_0x4334e1,_0x4696('0x10c'));}var _0x2c7551=this['channel']['exec']('DIAL',[util[_0x4696('0x29')](_0x4696('0x10f'),_0x42cdcf,_0x4334e1[_0x4696('0x44')]),_0x4334e1[_0x4696('0x63')],_0x4334e1['opts'],_0x4334e1[_0x4696('0x61')]]);if(_0x2c7551['result']===-0x1){return _0x2c7551;}return this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0xe8'),'DIAL'));};AGIVertices[_0x4696('0x10')][_0x4696('0x110')]=function(_0x483faa){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x111'),_0x483faa['label']));return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x110'));};AGIVertices['prototype'][_0x4696('0xb')]=function(_0x2ababc){logger['info'](util[_0x4696('0x29')](_0x4696('0x112'),_0x2ababc[_0x4696('0x34')]));if(_0x2ababc[_0x4696('0x113')]===0x0){return this[_0x4696('0xa4')](_0x2ababc);}_0x2ababc[_0x4696('0x113')]-=0x1;if(!this[_0x4696('0x7f')](_0x2ababc[_0x4696('0x114')])){return this['channel'][_0x4696('0x2e')](_0x2ababc,_0x4696('0x115'));}var _0x5b114c=this['getSound'][_0x4696('0x6d')](this,_0x2ababc['file_id']);if(!_0x5b114c){return this[_0x4696('0xd')]['error'](_0x2ababc,'no\x20file\x20audio\x20found');}if(!this[_0x4696('0x7f')](_0x2ababc[_0x4696('0xdc')])){return this['channel'][_0x4696('0x2e')](_0x4696('0xdd'));}var _0x30ec38=this[_0x4696('0xd')]['getData'](_0x5b114c,_0x2ababc[_0x4696('0x116')],_0x2ababc['maxdigit']);var _0x1a062c=_0x30ec38[_0x4696('0xa2')]?_0x30ec38[_0x4696('0xa2')][_0x4696('0x49')]():'';logger[_0x4696('0x2c')](_0x4696('0x117'),JSON['stringify'](_0x30ec38));if(_0x30ec38[_0x4696('0xa2')]===-0x1){this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x2ababc,_0x1a062c);return _0x30ec38;}else if(_0x30ec38[_0x4696('0xa0')]===_0x4696('0x63')){_0x30ec38[_0x4696('0xa2')]=_0x1a062c[_0x4696('0x9a')]>=parseInt(_0x2ababc['mindigit'])?'x':'i';}else{_0x30ec38[_0x4696('0xa2')]=_0x1a062c['length']>=parseInt(_0x2ababc[_0x4696('0x118')])&&_0x1a062c['length']<=parseInt(_0x2ababc[_0x4696('0x119')])?'x':'i';}var _0x112e1e=this['getVariable'][_0x4696('0x6d')](this,_0x2ababc[_0x4696('0xdc')]);if(!_0x112e1e){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x2ababc,_0x4696('0xde'));}this[_0x4696('0xd')][_0x4696('0x9d')](_0x112e1e,_0x1a062c);if(this['isConfigured'](_0x2ababc[_0x4696('0x11a')])){var _0x303298=parseInt(_0x2ababc[_0x4696('0x11a')],0xa);var _0x4045bb=rs[_0x4696('0x11b')]({'charset':'*','length':_0x303298});var _0x41d616=_0x1a062c[_0x4696('0x9a')];if(_0x41d616>0x0){if(_0x41d616>_0x303298){this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x2ababc,_0x2ababc[_0x4696('0x11c')]==='first'?_0x4045bb+_0x1a062c[_0x4696('0x11d')](_0x303298):_0x1a062c[_0x4696('0x11d')](0x0,_0x41d616-_0x303298)+_0x4045bb);}else{this['createSquareDetailsReport'][_0x4696('0x6d')](this,_0x2ababc,rs[_0x4696('0x11b')]({'charset':'*','length':_0x41d616}));}}else{this['createSquareDetailsReport'][_0x4696('0x6d')](this,_0x2ababc,'');}}else{this[_0x4696('0xa5')]['sync'](this,_0x2ababc,_0x1a062c);}return _0x30ec38;};AGIVertices[_0x4696('0x10')][_0x4696('0xc')]=function(_0x18ec03){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x11e'),_0x18ec03[_0x4696('0x34')]));return this['getdigits'](_0x18ec03);};AGIVertices[_0x4696('0x10')][_0x4696('0x11f')]=function(_0x26d4a3){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x120'),_0x26d4a3['label']));this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x26d4a3,_0x26d4a3[_0x4696('0x121')]);return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x122'),_0x26d4a3['goalname']));};AGIVertices['prototype'][_0x4696('0x123')]=function(_0xd24cb0){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x124'),_0xd24cb0[_0x4696('0x34')]));if(!this['isConfigured'](_0xd24cb0['aws_access_key_id'])||!this[_0x4696('0x7f')](_0xd24cb0[_0x4696('0x83')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x4696('0x7f')](_0xd24cb0[_0x4696('0x59')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Trying\x20aws\x20Polly\x20%s',_0xd24cb0[_0x4696('0x59')]));var _0x258abf=this['awsPolly'][_0x4696('0x6d')](this,_0xd24cb0);if(_0x258abf){this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x125'),_0x258abf));var _0x2d3ed8=this['channel'][_0x4696('0x105')](_0x258abf);try{fs[_0x4696('0x106')](_0x258abf+_0x4696('0x126'));}catch(_0x337485){logger[_0x4696('0x2e')](_0x337485);}return _0x2d3ed8;}return this['channel'][_0x4696('0x2e')](_0xd24cb0,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')][_0x4696('0x127')]=function(_0x224fc8){logger[_0x4696('0x2c')](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x224fc8[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x224fc8['aws_access_key_id'])||!this['isConfigured'](_0x224fc8[_0x4696('0x83')])){return this[_0x4696('0xd')]['noop'](_0x4696('0x128'));}if(!this[_0x4696('0x7f')](_0x224fc8[_0x4696('0x88')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x129'));}if(!this['isConfigured'](_0x224fc8['text'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xed')]=!![];this[_0x4696('0xa5')](_0x224fc8);this[_0x4696('0x3e')](_0x224fc8[_0x4696('0x59')],'in','','');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x12a'),_0x224fc8[_0x4696('0x59')]));var _0x2ef3b8=this[_0x4696('0x87')][_0x4696('0x6d')](this,_0x224fc8);if(_0x2ef3b8){for(var _0x6e0069 in _0x2ef3b8){if(_0x2ef3b8[_0x4696('0x93')](_0x6e0069)&&_[_0x4696('0x94')](_0x2ef3b8[_0x6e0069])){this['channel'][_0x4696('0x9d')](util[_0x4696('0x29')](_0x4696('0x12b'),_0x6e0069[_0x4696('0x67')]()),_0x2ef3b8[_0x6e0069]);}}if(_[_0x4696('0x41')](_0x2ef3b8[_0x4696('0x73')])){return this['channel'][_0x4696('0xbe')](_0x4696('0x12c'));}else{this[_0x4696('0x3e')](_0x2ef3b8[_0x4696('0x73')],_0x4696('0x102'),_0x4696('0x12d'),'');return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x12e'),_0x2ef3b8['message']));}}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x224fc8,_0x4696('0x12f'));};AGIVertices[_0x4696('0x10')][_0x4696('0x130')]=function(_0x4457fa){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x131'),_0x4457fa['label'],_0x4457fa[_0x4696('0x63')]));if(!this[_0x4696('0x7f')](_0x4457fa[_0x4696('0x76')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xec'));}var _0x479574='wav';var _0x3aee35=util[_0x4696('0x29')]('%s/recordings/%s',FILES_PATH,rs[_0x4696('0x11b')](0x4));var _0x1051d5=util[_0x4696('0x29')]('%s.%s',_0x3aee35,_0x479574);var _0x42406c=!![];if(_0x4457fa[_0x4696('0x132')]===_0x4696('0x133')){_0x42406c=![];}var _0x1ea420=this[_0x4696('0xd')]['recordFile'](_0x3aee35,_0x479574,_0x4457fa[_0x4696('0x134')],_0x4457fa[_0x4696('0x63')],undefined,_0x42406c);if(_0x1ea420[_0x4696('0xa2')]!==-0x1){this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x135'),_0x1051d5));var _0x5d1d89=this[_0x4696('0x89')][_0x4696('0x6d')](this,_0x4457fa,_0x1051d5);if(_0x5d1d89){for(var _0x491086 in _0x5d1d89){if(_0x5d1d89[_0x4696('0x93')](_0x491086)){this[_0x4696('0xd')][_0x4696('0x9d')](util['format'](_0x4696('0x136'),_0x491086[_0x4696('0x67')]()),_0x5d1d89[_0x491086]);}}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x137'),JSON['stringify'](_0x5d1d89)));}}return _0x1ea420;};AGIVertices['prototype'][_0x4696('0x138')]=function(_0x444da9){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x139'),_0x444da9['label']));if(!this['isConfigured'](_0x444da9[_0x4696('0x8c')])){return this[_0x4696('0xd')]['noop'](_0x4696('0x13a'));}if(!this[_0x4696('0x7f')](_0x444da9['appsecret'])){return this[_0x4696('0xd')]['noop'](_0x4696('0x13b'));}var _0x535fde='wav';var _0x19f9e7=util['format'](_0x4696('0x13c'),FILES_PATH,rs[_0x4696('0x11b')](0x4));var _0x307d63=util[_0x4696('0x29')]('%s.%s',_0x19f9e7,_0x535fde);var _0x504208=!![];if(_0x444da9[_0x4696('0x132')]===_0x4696('0x133')){_0x504208=![];}var _0x2a29c8=this['channel'][_0x4696('0x13d')](_0x19f9e7,_0x535fde,_0x444da9['intKey'],_0x444da9[_0x4696('0x63')],undefined,_0x504208);if(_0x2a29c8[_0x4696('0xa2')]!==-0x1){this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x13e'),_0x307d63));var _0x1f99e8=this['tildeASR'][_0x4696('0x6d')](this,_0x444da9,_0x307d63);if(_0x1f99e8){for(var _0x103a8e in _0x1f99e8){if(_0x1f99e8[_0x4696('0x93')](_0x103a8e)){this[_0x4696('0xd')][_0x4696('0x9d')](util['format'](_0x4696('0x13f'),_0x103a8e[_0x4696('0x67')]()),_0x1f99e8[_0x103a8e]);}}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format']('TildeASR\x20Result\x20%s',JSON[_0x4696('0x70')](_0x1f99e8)));}}return _0x2a29c8;};AGIVertices['prototype']['gotoc']=function(_0x4247bc){logger['info'](util[_0x4696('0x29')](_0x4696('0x140'),_0x4247bc[_0x4696('0x34')]));return this['channel']['continueAt'](_0x4247bc[_0x4696('0x39')],_0x4247bc['extension'],_0x4247bc['priority']);};AGIVertices[_0x4696('0x10')]['gotoif']=function(_0x5842ec){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x141'),_0x5842ec['label']));if(!this[_0x4696('0x7f')](_0x5842ec[_0x4696('0x142')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x5842ec,_0x4696('0x143'));}try{var _0x5c0ccd=eval(_0x5842ec[_0x4696('0x142')])?_0x4696('0x144'):_0x4696('0x145');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('EVAL\x20CONDITION\x20%s\x20%s',_0x5842ec[_0x4696('0x142')],_0x5c0ccd));return{'code':0xc8,'result':_0x5c0ccd};}catch(_0x3e881c){return{'code':0xc8,'result':_0x4696('0x145')};}};AGIVertices[_0x4696('0x10')][_0x4696('0x146')]=function(_0x5d0c7a){logger['info'](util[_0x4696('0x29')](_0x4696('0x147'),_0x5d0c7a[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x5d0c7a['interval_id'])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x5d0c7a,'no\x20interval\x20configured');}var _0x3c42a5=this[_0x4696('0x25')]['sync'](this,_0x5d0c7a[_0x4696('0x148')]);if(!_0x3c42a5){return this[_0x4696('0xd')]['error'](_0x5d0c7a,_0x4696('0x149'));}for(var _0x57ac7e=0x0;_0x57ac7e<_0x3c42a5[_0x4696('0x9a')];_0x57ac7e+=0x1){var _0x32fbbf=this[_0x4696('0xd')][_0x4696('0x11')](util[_0x4696('0x29')](_0x4696('0x14a'),_0x3c42a5[_0x57ac7e]));if(_0x32fbbf[_0x4696('0xa2')]===-0x1){return _0x32fbbf;}logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x14b'),_0x3c42a5[_0x57ac7e],_0x32fbbf[_0x4696('0xa0')]));if(_0x32fbbf[_0x4696('0xa0')]==='true'){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x14b'),_0x3c42a5[_0x57ac7e],_0x4696('0x144')));this['channel'][_0x4696('0xbe')](util['format'](_0x4696('0x14b'),_0x3c42a5[_0x57ac7e],'true'));return{'code':0xc8,'result':_0x4696('0x144')};}else{logger['info'](util['format']('IFTIME\x20%s\x20%s',_0x3c42a5[_0x57ac7e],_0x4696('0x145')));this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')]('IFTIME\x20%s\x20%s',_0x3c42a5[_0x57ac7e],'false'));}}return{'code':0xc8,'result':'false'};};AGIVertices['prototype'][_0x4696('0x14c')]=function(_0x1d4d98){logger['info'](util[_0x4696('0x29')](_0x4696('0x14d'),_0x1d4d98[_0x4696('0x34')]));return this[_0x4696('0xd')]['hangup']();};AGIVertices[_0x4696('0x10')]['ispeechasr']=function(_0x142b56){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x14e'),_0x142b56['label']));if(!this[_0x4696('0x7f')](_0x142b56[_0x4696('0x76')])){return this['channel'][_0x4696('0xbe')](_0x4696('0xec'));}var _0x29d7ef=_0x4696('0x14f');var _0x2c5609=util[_0x4696('0x29')](_0x4696('0x13c'),FILES_PATH,rs[_0x4696('0x11b')](0x4));var _0x42b0da=util['format'](_0x4696('0x9c'),_0x2c5609,_0x29d7ef);var _0x61ed17=!![];if(_0x142b56[_0x4696('0x132')]==='NOBEEP'){_0x61ed17=![];}var _0x275dbc=this[_0x4696('0xd')][_0x4696('0x13d')](_0x2c5609,_0x29d7ef,_0x142b56[_0x4696('0x134')],_0x142b56[_0x4696('0x63')],undefined,_0x61ed17);if(_0x275dbc[_0x4696('0xa2')]!==-0x1){this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x150'),_0x42b0da));var _0x4010e6=this['ispeechASR'][_0x4696('0x6d')](this,_0x142b56,_0x42b0da);if(_0x4010e6){for(var _0x57f866 in _0x4010e6){if(_0x4010e6[_0x4696('0x93')](_0x57f866)){this[_0x4696('0xd')]['setVariable'](util['format']('ISPEECH_ASR_%s',_0x57f866['toUpperCase']()),_0x4010e6[_0x57f866]);}}return this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x151'),JSON['stringify'](_0x4010e6)));}}return _0x275dbc;};AGIVertices[_0x4696('0x10')][_0x4696('0x152')]=function(_0x2ad280){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x2ad280[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x2ad280[_0x4696('0x76')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20key\x20configured');}if(!this[_0x4696('0x7f')](_0x2ad280['text'])){return this['channel'][_0x4696('0xbe')]('no\x20text\x20configured');}this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x153'),_0x2ad280[_0x4696('0x59')]));var _0x2ee1ef=this[_0x4696('0x7c')][_0x4696('0x6d')](this,_0x2ad280);if(_0x2ee1ef){this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x150'),_0x2ee1ef));var _0x207ee9=this['channel'][_0x4696('0x105')](_0x2ee1ef,_0x2ad280[_0x4696('0x134')]);try{fs['unlink'](_0x2ee1ef+_0x4696('0x126'));}catch(_0x5e5be3){logger['error'](_0x5e5be3);}return _0x207ee9;}return this[_0x4696('0xd')]['error'](_0x2ad280,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')]['login']=function(_0xc70edd){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x154'),_0xc70edd[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xc70edd[_0x4696('0x155')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0xc70edd,_0x4696('0x156'));}logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x157'),this[_0x4696('0xd')][_0x4696('0x36')],_0xc70edd[_0x4696('0x155')]));var _0x4a0357=this[_0x4696('0x53')][_0x4696('0x6d')](this,_0xc70edd[_0x4696('0x155')]);if(_0x4a0357){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x158'),this['channel'][_0x4696('0x36')],_0xc70edd[_0x4696('0x155')]));this['channel'][_0x4696('0xbe')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x4696('0xd')][_0x4696('0x36')],_0xc70edd[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x159')};}else{logger['info'](util['format'](_0x4696('0x15a'),this['channel']['callerid'],_0xc70edd['findBy']));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x15a'),this['channel']['callerid'],_0xc70edd[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x15b')};}};AGIVertices['prototype'][_0x4696('0x15c')]=function(_0x10f42a){logger[_0x4696('0x2c')](util['format'](_0x4696('0x15d'),_0x10f42a['label']));if(!this['isConfigured'](_0x10f42a[_0x4696('0x155')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x10f42a,_0x4696('0x156'));}logger[_0x4696('0x2c')](util['format'](_0x4696('0x157'),this[_0x4696('0xd')][_0x4696('0x36')],_0x10f42a[_0x4696('0x155')]));var _0x28dcf6=this['agentLogout'][_0x4696('0x6d')](this,_0x10f42a[_0x4696('0x155')]);if(_0x28dcf6){logger[_0x4696('0x2c')](util['format'](_0x4696('0x158'),this[_0x4696('0xd')]['callerid'],_0x10f42a[_0x4696('0x155')]));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x158'),this[_0x4696('0xd')]['callerid'],_0x10f42a[_0x4696('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x15a'),this[_0x4696('0xd')][_0x4696('0x36')],_0x10f42a['findBy']));this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0x15a'),this[_0x4696('0xd')][_0x4696('0x36')],_0x10f42a[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x15b')};}};AGIVertices[_0x4696('0x10')][_0x4696('0x15e')]=function(_0x9ea035){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x15f'),_0x9ea035['label']));if(!this[_0x4696('0x7f')](_0x9ea035['operation'])){return this['channel'][_0x4696('0x2e')](_0x9ea035,_0x4696('0x160'));}this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x161'),_0x9ea035[_0x4696('0x162')]));var _0x33101d=eval(_0x9ea035['operation']);if(!this[_0x4696('0x7f')](_0x9ea035['variable_id'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xdd'));}var _0x403315=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x9ea035['variable_id']);if(!_0x403315){return this['channel'][_0x4696('0x2e')](_0x9ea035,'no\x20variable\x20found');}if(_[_0x4696('0x99')](_0x33101d)){var _0x32c869=this;_0x33101d[_0x4696('0xdf')](function(_0x5be198,_0x53ad1c){_0x32c869[_0x4696('0xd')][_0x4696('0x9d')](util[_0x4696('0x29')](_0x4696('0x163'),_0x403315,_0x53ad1c),_0x5be198);});return this[_0x4696('0xd')][_0x4696('0xbe')](util['format']('variable\x20%s[key]\x20set',_0x403315));}else{return this[_0x4696('0xd')]['setVariable'](_0x403315,_0x33101d);}};AGIVertices[_0x4696('0x10')][_0x4696('0xa')]=function(_0x2ff10b){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x164'),_0x2ff10b[_0x4696('0x34')]));if(_0x2ff10b[_0x4696('0x113')]===0x0){return this[_0x4696('0xa4')](_0x2ff10b);}_0x2ff10b[_0x4696('0x113')]-=0x1;if(!this[_0x4696('0x7f')](_0x2ff10b[_0x4696('0x114')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x2ff10b,_0x4696('0x115'));}var _0x2970a8=this[_0x4696('0x1e')][_0x4696('0x6d')](this,_0x2ff10b[_0x4696('0x114')]);if(!_0x2970a8){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x2ff10b,_0x4696('0x165'));}var _0x475ed5=this[_0x4696('0xd')][_0x4696('0x166')](_0x2970a8,_0x2ff10b[_0x4696('0x116')],_0x2ff10b[_0x4696('0x167')]);var _0x582572=_0x475ed5[_0x4696('0xa2')];if(_0x475ed5[_0x4696('0xa2')]===-0x1){this[_0x4696('0xa5')]['sync'](this,_0x2ff10b,'-1');return _0x475ed5;}else if(_0x475ed5[_0x4696('0xa0')]===_0x4696('0x63')){_0x475ed5['result']=_0x475ed5[_0x4696('0xa2')][_0x4696('0x9a')]>0x0?_0x475ed5['result']:'t';}else if(_[_0x4696('0x40')](_0x475ed5[_0x4696('0xa2')])){_0x475ed5[_0x4696('0xa2')]='#';_0x582572='#';}if(!this[_0x4696('0x7f')](_0x2ff10b[_0x4696('0xdc')])){this[_0x4696('0xd')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x4ba031=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x2ff10b['variable_id']);if(!_0x4ba031){return this['channel']['error'](_0x2ff10b,_0x4696('0xde'));}this[_0x4696('0xd')]['setVariable'](_0x4ba031,_0x582572);}this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x2ff10b,_0x582572);return _0x475ed5;};AGIVertices[_0x4696('0x10')]['noop']=function(_0x218aa3){logger['info'](util[_0x4696('0x29')](_0x4696('0x168'),_0x218aa3[_0x4696('0x34')]));return this[_0x4696('0xd')][_0x4696('0xbe')](_0x218aa3['output']||_0x218aa3[_0x4696('0x34')]);};AGIVertices['prototype']['pause']=function(_0x37ae2b){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x169'),_0x37ae2b[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x37ae2b[_0x4696('0x155')])){return this['channel'][_0x4696('0x2e')](_0x37ae2b,_0x4696('0x156'));}logger['info'](util[_0x4696('0x29')](_0x4696('0x157'),this[_0x4696('0xd')][_0x4696('0x36')],_0x37ae2b[_0x4696('0x155')]));var _0x2570eb=this[_0x4696('0x4b')][_0x4696('0x6d')](this,_0x37ae2b[_0x4696('0x16a')]);var _0x25fe76=this[_0x4696('0x4e')]['sync'](this,_0x37ae2b[_0x4696('0x155')],_0x2570eb);if(_0x25fe76){logger['info'](util[_0x4696('0x29')](_0x4696('0x158'),this['channel'][_0x4696('0x36')],_0x37ae2b['findBy']));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4696('0xd')][_0x4696('0x36')],_0x37ae2b['findBy']));return{'code':0xc8,'result':_0x4696('0x159')};}else{logger[_0x4696('0x2c')](util[_0x4696('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x4696('0x36')],_0x37ae2b[_0x4696('0x155')]));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x158'),this[_0x4696('0xd')][_0x4696('0x36')],_0x37ae2b['findBy']));return{'code':0xc8,'result':_0x4696('0x15b')};}};AGIVertices[_0x4696('0x10')][_0x4696('0x16b')]=function(_0xa6e74a){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x16c'),_0xa6e74a[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xa6e74a['file_id'])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0xa6e74a,_0x4696('0x115'));}var _0x3b7acf=this[_0x4696('0x1e')][_0x4696('0x6d')](this,_0xa6e74a[_0x4696('0x114')]);if(!_0x3b7acf){return this[_0x4696('0xd')][_0x4696('0x2e')](_0xa6e74a,_0x4696('0x165'));}var _0x5716f6=this[_0x4696('0xd')]['exec'](_0x4696('0x16d'),[_0x3b7acf,_0xa6e74a[_0x4696('0x16e')]]);if(_0x5716f6[_0x4696('0xa2')]===-0x1){return _0x5716f6;}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x16f'),'PLAYBACK',_0x3b7acf));};AGIVertices[_0x4696('0x10')]['queue']=function(_0x17d012){logger['info'](util[_0x4696('0x29')](_0x4696('0x170'),_0x17d012[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x17d012['queue_id'])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x17d012,_0x4696('0x171'));}var _0x231f25='';var _0x1bf71d=parseInt(_0x17d012[_0x4696('0x172')],0xa);if(isNaN(_0x1bf71d)){_0x231f25=_0x17d012[_0x4696('0x172')];}else{_0x231f25=this[_0x4696('0x16')][_0x4696('0x6d')](this,_0x17d012['queue_id']);if(!_0x231f25){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x17d012,_0x4696('0x173'));}}var _0x25c799='';if(this['isConfigured'](_0x17d012[_0x4696('0x114')])){var _0x296472=this['getSound'][_0x4696('0x6d')](this,_0x17d012[_0x4696('0x114')]);if(_0x296472){_0x25c799=_0x296472;}}this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x17d012,_0x231f25);if(_0x17d012[_0x4696('0x16e')]['indexOf']('x')<0x0){_0x17d012[_0x4696('0x16e')]+='x';}if(_0x17d012[_0x4696('0x16e')][_0x4696('0x174')]('X')<0x0){_0x17d012[_0x4696('0x16e')]+='X';}this[_0x4696('0xd')]['setVariable']('XMCS-QUEUE',_0x231f25?_0x231f25[_0x4696('0x175')]():'');var _0x264976=this['channel'][_0x4696('0xae')]('QUEUE',[_0x231f25,_0x17d012['opts'],_0x17d012['url'],_0x25c799,_0x17d012['timeout'],_0x17d012['agi'],_0x17d012[_0x4696('0x176')],_0x17d012[_0x4696('0x177')],'',_0x17d012['position']]);if(_0x264976['result']===-0x1){return _0x264976;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x16f'),_0x4696('0x178'),_0x231f25));};AGIVertices[_0x4696('0x10')][_0x4696('0x179')]=function(_0x5a59c9){logger[_0x4696('0x2c')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x5a59c9[_0x4696('0x34')]));var _0x5e8052=_0x5a59c9[_0x4696('0x17a')]||_0x4696('0x14f');var _0x124271=util[_0x4696('0x29')](_0x4696('0x17b'),this[_0x4696('0xd')]['uniqueid'],rs[_0x4696('0x11b')](0x5));var _0x563478=util[_0x4696('0x29')](_0x4696('0x17c'),FILES_PATH,_0x124271,_0x5e8052);var _0x3f1638=util['format']('%s/recordings/%s',FILES_PATH,_0x124271);this['createSquareRecording'][_0x4696('0x6d')](this,_0x5a59c9,_0x124271,_0x563478);this[_0x4696('0xd')]['setVariable'](_0x4696('0x17d'),_0x124271);logger[_0x4696('0x2c')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x3f1638,_0x5e8052,_0x5a59c9['escape_digits'],_0x5a59c9['timeout']);return this[_0x4696('0xd')]['recordFile'](_0x3f1638,_0x5e8052,_0x5a59c9[_0x4696('0x17e')],_0x5a59c9['timeout'],undefined,!![]);};AGIVertices['prototype'][_0x4696('0x17f')]=function(_0x395d49){logger['info'](util[_0x4696('0x29')](_0x4696('0x180'),_0x395d49[_0x4696('0x34')]));if(!this['isConfigured'](_0x395d49[_0x4696('0x61')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20url\x20configured');}var _0x9cf3cd=this['restAPI'][_0x4696('0x6d')](this,_0x395d49);logger['info'](util['format']('Response:',util[_0x4696('0x181')](_0x9cf3cd,{'showHidden':![],'depth':null})));if(!this[_0x4696('0x7f')](_0x395d49[_0x4696('0xdc')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x182'));}var _0x59d09d=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x395d49['variable_id']);if(!_0x59d09d){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x395d49,_0x4696('0xde'));}this[_0x4696('0xd')]['setVariable'](util[_0x4696('0x29')](_0x4696('0x183'),_0x59d09d),_0x9cf3cd[_0x4696('0x72')]?_0x9cf3cd[_0x4696('0x72')]:_0x4696('0x184'));this[_0x4696('0xd')][_0x4696('0x9d')](util['format']('%s_STATUS_MESSAGE',_0x59d09d),_0x9cf3cd[_0x4696('0x185')]?_0x9cf3cd[_0x4696('0x185')]:'OK');if(_0x9cf3cd['body']){try{this['saveRestApiResult'](_0x9cf3cd[_0x4696('0x68')],_0x59d09d);}catch(_0x59d119){logger[_0x4696('0x2e')](util[_0x4696('0x29')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x59d09d));}}return this['channel']['noop'](util['format']('variable\x20%s\x20set',_0x59d09d));};AGIVertices[_0x4696('0x10')][_0x4696('0x186')]=function(_0x28242a){logger[_0x4696('0x2c')](util['format'](_0x4696('0x187'),_0x28242a['label']));return this[_0x4696('0xd')]['sayDigits'](_0x28242a['digits'][_0x4696('0xda')](/\s+/g,''),_0x28242a[_0x4696('0x17e')]);};AGIVertices[_0x4696('0x10')]['saynumber']=function(_0x3d1d0e){logger['info'](util[_0x4696('0x29')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x3d1d0e[_0x4696('0x34')]));return this[_0x4696('0xd')][_0x4696('0x188')](_0x3d1d0e[_0x4696('0x64')][_0x4696('0xda')](/\s+/g,''),_0x3d1d0e[_0x4696('0x17e')]);};AGIVertices[_0x4696('0x10')][_0x4696('0x189')]=function(_0x413886){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x18a'),_0x413886[_0x4696('0x34')]));return this[_0x4696('0xd')]['sayPhonetic'](_0x413886['text'],_0x413886[_0x4696('0x17e')]);};AGIVertices[_0x4696('0x10')][_0x4696('0x18b')]=function(_0x11c74f){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x18c'),_0x11c74f[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x11c74f[_0x4696('0x18d')])){return this['channel'][_0x4696('0xbe')]('no\x20mail\x20account\x20configured');}var _0x174306=this['getMailAccount']['sync'](this,_0x11c74f[_0x4696('0x18d')]);if(!_0x174306||!_0x174306['Smtp']){return this['channel'][_0x4696('0x2e')](_0x11c74f,'no\x20mail\x20account\x20found');}var _0x32d006={'from':util[_0x4696('0x29')]('\x22%s\x22\x20<%s>',_0x174306['name'],_0x174306[_0x4696('0x18e')]||_0x174306[_0x4696('0x18f')][_0x4696('0x190')]),'to':_0x11c74f['to']||'','cc':_0x11c74f['cc']||'','bcc':_0x11c74f['bcc']||'','subject':_0x11c74f['subject'],'html':_0x11c74f[_0x4696('0x59')],'text':_0x11c74f[_0x4696('0x59')]};var _0xa1862a={'tls':{'rejectUnauthorized':![]}};if(_0x174306[_0x4696('0x18f')][_0x4696('0x191')]){_0xa1862a[_0x4696('0x191')]=_0x174306[_0x4696('0x18f')][_0x4696('0x191')];}else{_0xa1862a[_0x4696('0x192')]=_0x174306[_0x4696('0x18f')][_0x4696('0x192')];_0xa1862a[_0x4696('0x193')]=_0x174306[_0x4696('0x18f')][_0x4696('0x193')];_0xa1862a['secure']=_0x174306[_0x4696('0x18f')][_0x4696('0x194')];}if(_0x174306['Smtp'][_0x4696('0x195')]){_0xa1862a[_0x4696('0x196')]={'user':_0x174306['Smtp'][_0x4696('0x190')],'pass':_0x174306['Smtp'][_0x4696('0x197')]};}if(this[_0x4696('0x7f')](_0x11c74f[_0x4696('0x198')])){}logger[_0x4696('0x199')]('sendMail\x20message',JSON[_0x4696('0x70')](_0x32d006));this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x11c74f,_0x11c74f['account_id']);this['channel']['noop'](util[_0x4696('0x29')](_0x4696('0x19a'),_0x174306[_0x4696('0x14')]));this[_0x4696('0x24')][_0x4696('0x6d')](this,_0xa1862a,_0x32d006);return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x19b'));};AGIVertices[_0x4696('0x10')][_0x4696('0x19c')]=function(_0x446c90){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x446c90[_0x4696('0x34')]));return this[_0x4696('0xd')]['noop']('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0x4696('0x19d')]=function(_0x5125d5){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x5125d5[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x5125d5[_0x4696('0x19e')])){return this['channel']['noop'](_0x4696('0x19f'));}var _0x4ed44c=this['getSmsAccount']['sync'](this,_0x5125d5[_0x4696('0x19e')]);if(!_0x4ed44c){return this['channel'][_0x4696('0x2e')](_0x5125d5,_0x4696('0x1a0'));}var _0x444594={'body':_0x5125d5[_0x4696('0x1a1')],'phone':_0x5125d5['to']||'','SmsAccountId':_0x4ed44c['id']};logger[_0x4696('0x199')]('sendSMS\x20message',JSON[_0x4696('0x70')](_0x444594));this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x5125d5,_0x5125d5[_0x4696('0x19e')]);this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1a2'),_0x4ed44c[_0x4696('0x14')]));this['createSmsMessage'][_0x4696('0x6d')](this,_0x444594);return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x1a3'));};AGIVertices[_0x4696('0x10')]['set']=function(_0x1d2aa2){logger['info'](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x1d2aa2[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x1d2aa2[_0x4696('0xdc')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x1d2aa2,_0x4696('0x1a4'));}var _0x33a5a3=this['getVariable'][_0x4696('0x6d')](this,_0x1d2aa2[_0x4696('0xdc')]);if(!_0x33a5a3){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x1d2aa2,_0x4696('0xde'));}return this[_0x4696('0xd')][_0x4696('0x9d')](_0x33a5a3,_0x1d2aa2['variable_value']);};AGIVertices[_0x4696('0x10')][_0x4696('0x1a5')]=function(_0x26be95){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1a6'),_0x26be95[_0x4696('0x34')]));this[_0x4696('0xd')]['noop']('START\x20CALLY\x20SQUARE');if(_0x26be95[_0x4696('0xb7')]==='yes'){this['channel']['noop']('Answer');return this['channel'][_0x4696('0xb7')]();}return this['channel'][_0x4696('0xbe')]('Skipped\x20Answer');};AGIVertices['prototype'][_0x4696('0x1a7')]=function(_0x19ed5b){logger['info'](util['format'](_0x4696('0x1a8'),_0x19ed5b[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x19ed5b[_0x4696('0x1a9')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x19ed5b,_0x4696('0x1aa'));}var _0x144427=this[_0x4696('0x1ab')][_0x4696('0x6d')](this,_0x19ed5b[_0x4696('0x1a9')]);if(!this[_0x4696('0x7f')](_0x144427)){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x19ed5b,util[_0x4696('0x29')](_0x4696('0x1ac'),_0x19ed5b['project_id']));}if(_0x144427===this['channel']['arg_1']){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x19ed5b,_0x4696('0x1ad'));}this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x19ed5b,_0x144427);var _0x4a401b=this[_0x4696('0xd')]['exec'](_0x4696('0x1ae'),util[_0x4696('0x29')](_0x4696('0x1af'),config[_0x4696('0x7')]['host']||'127.0.0.1',_0x144427,this[_0x4696('0xd')][_0x4696('0x35')]));if(_0x4a401b['result']===-0x1){return _0x4a401b;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x16f'),'AGI',_0x144427));};AGIVertices['prototype'][_0x4696('0x1b0')]=function(_0xa26d64){logger['info'](util[_0x4696('0x29')](_0x4696('0x1b1'),_0xa26d64[_0x4696('0x34')]));var _0x8f4d58=this[_0x4696('0x54')][_0x4696('0x6d')](this,_0xa26d64[_0x4696('0xb5')]);this['createSquareDetailsReport'][_0x4696('0x6d')](this,_0xa26d64,_0xa26d64['command']);if(this[_0x4696('0x7f')](_0xa26d64[_0x4696('0xdc')])){var _0x49c97e=this[_0x4696('0x11')]['sync'](this,_0xa26d64[_0x4696('0xdc')]);if(_0x49c97e){this[_0x4696('0xd')][_0x4696('0x9d')](_0x49c97e,_0x8f4d58);return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1b2'),_0xa26d64[_0x4696('0xb5')],_0x49c97e));}}return this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0x1b3'),_0xa26d64[_0x4696('0xb5')]));};AGIVertices['prototype'][_0x4696('0x1b4')]=function(_0x4a724a){logger['info'](util[_0x4696('0x29')](_0x4696('0x1b5'),_0x4a724a[_0x4696('0x34')]));_0x4a724a[_0x4696('0x59')]=_0x4a724a['text'][_0x4696('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4696('0x7f')](_0x4a724a['apiKey'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x1b6'));}if(!this[_0x4696('0x7f')](_0x4a724a[_0x4696('0x59')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this['channel']['noop'](util[_0x4696('0x29')](_0x4696('0x1b7'),_0x4a724a[_0x4696('0x59')]));var _0x48cc39=this[_0x4696('0x56')][_0x4696('0x6d')](this,_0x4a724a);if(_0x48cc39){this['channel'][_0x4696('0xbe')](util['format'](_0x4696('0x1b8'),_0x48cc39));var _0x33c785=this[_0x4696('0xd')]['streamFile'](_0x48cc39);try{fs[_0x4696('0x106')](_0x48cc39+_0x4696('0x126'));}catch(_0x5ad1e3){logger[_0x4696('0x2e')](_0x5ad1e3);}return _0x33c785;}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x4a724a,_0x4696('0x1b9'));};AGIVertices[_0x4696('0x10')]['tts']=function(_0x18e69a){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1ba'),_0x18e69a[_0x4696('0x34')]));_0x18e69a[_0x4696('0x59')]=_0x18e69a['text'][_0x4696('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4696('0x7f')](_0x18e69a['text'])){return this[_0x4696('0xd')]['noop'](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1bb'),_0x18e69a[_0x4696('0x59')]));var _0x29abe4=this[_0x4696('0x5e')][_0x4696('0x6d')](this,_0x18e69a);if(_0x29abe4){this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1bc'),_0x29abe4));var _0x2a2df8=this[_0x4696('0xd')][_0x4696('0x105')](_0x29abe4);try{fs[_0x4696('0x106')](_0x29abe4+'.wav');}catch(_0x5b2905){logger['error'](_0x5b2905);}return _0x2a2df8;}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x18e69a,_0x4696('0x1bd'));};AGIVertices[_0x4696('0x10')][_0x4696('0x1be')]=function(_0xccd81b){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1bf'),_0xccd81b[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xccd81b[_0x4696('0x155')])){return this[_0x4696('0xd')]['error'](_0xccd81b,_0x4696('0x156'));}logger[_0x4696('0x2c')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel']['callerid'],_0xccd81b[_0x4696('0x155')]));var _0x2b9a3c=this[_0x4696('0x4f')]['sync'](this,_0xccd81b[_0x4696('0x155')]);if(_0x2b9a3c){logger['info'](util[_0x4696('0x29')](_0x4696('0x158'),this[_0x4696('0xd')][_0x4696('0x36')],_0xccd81b['findBy']));this['channel']['noop'](util['format'](_0x4696('0x158'),this[_0x4696('0xd')][_0x4696('0x36')],_0xccd81b[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x159')};}else{logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x15a'),this['channel'][_0x4696('0x36')],_0xccd81b[_0x4696('0x155')]));this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0x15a'),this['channel'][_0x4696('0x36')],_0xccd81b[_0x4696('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x4696('0x1c0')]=function(_0x294ac6){logger[_0x4696('0x2c')](util['format'](_0x4696('0x1c1'),_0x294ac6['label']));var _0x1c9a8e=this[_0x4696('0xd')][_0x4696('0xae')]('VOICEMAIL',[_0x294ac6[_0x4696('0x1c2')],_0x294ac6[_0x4696('0x74')]]);if(_0x1c9a8e['result']===-0x1){return _0x1c9a8e;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20%s\x20%s',_0x4696('0x1c3'),_0x294ac6['mailbox']));};AGIVertices[_0x4696('0x10')][_0x4696('0x1c4')]=function(_0x58ec88){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1c5'),_0x58ec88['label']));if(!this[_0x4696('0x7f')](_0x58ec88[_0x4696('0xdc')])){return this[_0x4696('0xd')]['error'](_0x58ec88,_0x4696('0x1a4'));}var _0x477e55=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x58ec88[_0x4696('0xdc')]);if(!_0x477e55){return this[_0x4696('0xd')]['error'](_0x58ec88,'no\x20variable\x20found');}var _0x321af2=this['channel']['getVariable'](_0x477e55);return{'code':0xc8,'result':_0x321af2[_0x4696('0xa0')]?_0x321af2[_0x4696('0xa0')]:'-'};};String[_0x4696('0x10')]['replaceAll']=function(_0x15710d,_0x191415){return this[_0x4696('0x9e')](_0x15710d)[_0x4696('0x1c6')](_0x191415);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x4e52=['math\x20%s','operation','no\x20variable\x20found','%s[%s]','getData','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','getPause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','recordingFormat','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','user','bcc','subject','service','host','port','secure','authentication','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sms_account_id','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','yes','Answer','subproject','no\x20subproject\x20selected','getSquareProject','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','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','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','failure','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','util','lodash','shelljs','odbc','moment','mustache','request-promise','../../config/logger','../../config/environment','./scripts','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariableById','then','name','catch','prototype','getVoiceQueue','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','sendMailMessage','getIntervals','IntervalId','interval','map','format','%s/sounds/converted/%s','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','query','info','Query\x20executed\x20correctly\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','extension','accountcode','dnid','file','createSquareMessage','uniqueid','createCmContact','isEmpty','isNil','callback_','lastName','phone','scheduledAt','callback','callback_priority','getPauseById','agent','agentPause','agentUnpause','agentLogout','agentLogin','LOCAL','shellCommand','trim','replace','googleCloudTTS','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','method','timeout','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','sync','uri','render','url','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','clear','includes','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','split','replaceAll','getVariable','toString','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','extra','setVariable','maxRetry','retry','mrcpsynth','noop','no\x20text\x20configured','exec','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','RECOG_CONFIDENCE()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','add','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','keys','forEach','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','SIP/%s','opts','DIAL','bot','Trying\x20Dialogflow:\x20%s','speech','out','dialogflow','Dialogflow\x20Result\x20%s','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DIALOGFLOW_%s','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','sestekNDA','SESTEK_NDA_%s','sesteknda','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','response','mindigit','maxdigit','hiddendigitsnum','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','wav','%s/recordings/%s','generate','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','beep','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured'];(function(_0x4959eb,_0x4174f5){var _0x5a404c=function(_0x149697){while(--_0x149697){_0x4959eb['push'](_0x4959eb['shift']());}};_0x5a404c(++_0x4174f5);}(_0x4e52,0x6e));var _0x24e5=function(_0x524407,_0x210c95){_0x524407=_0x524407-0x0;var _0x1a766c=_0x4e52[_0x524407];return _0x1a766c;};'use strict';var fs=require('fs');var path=require(_0x24e5('0x0'));var util=require(_0x24e5('0x1'));var _=require(_0x24e5('0x2'));var sh=require(_0x24e5('0x3'));var odbc=require(_0x24e5('0x4'))();var rs=require('randomstring');var moment=require(_0x24e5('0x5'));var Mustache=require(_0x24e5('0x6'));var rp=require(_0x24e5('0x7'));var logger=require(_0x24e5('0x8'))('agi');var config=require(_0x24e5('0x9'));var scripts=require(_0x24e5('0xa'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x24e5('0xb'),_0x24e5('0xc')];var verticesWithRetry=[_0x24e5('0xd'),_0x24e5('0xe'),_0x24e5('0xf')];var AGIVertices=function(_0x58aac5,_0x2311a9,_0x29ffdd){this[_0x24e5('0x10')]=_0x58aac5;this[_0x24e5('0x11')]=_0x2311a9;this[_0x24e5('0x12')]=_0x29ffdd;};AGIVertices['prototype']['getVariable']=function(_0x29618d,_0x8bf265){this[_0x24e5('0x11')][_0x24e5('0x13')](_0x29618d)[_0x24e5('0x14')](function(_0x40e566){_0x8bf265(null,_0x40e566?_0x40e566[_0x24e5('0x15')]:![]);})[_0x24e5('0x16')](function(_0x5dc4c7){_0x8bf265(_0x5dc4c7);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x18')]=function(_0x195c5d,_0x5668bd){this[_0x24e5('0x11')]['getVoiceQueueById'](_0x195c5d)[_0x24e5('0x14')](function(_0x3fa09a){_0x5668bd(null,_0x3fa09a?_0x3fa09a[_0x24e5('0x15')]:![]);})[_0x24e5('0x16')](function(_0x1829de){_0x5668bd(_0x1829de);});};AGIVertices['prototype']['getSquareProject']=function(_0x1c1a6b,_0x508174){this[_0x24e5('0x11')][_0x24e5('0x19')](_0x1c1a6b)['then'](function(_0x42e79f){_0x508174(null,_0x42e79f?_0x42e79f[_0x24e5('0x15')]:![]);})[_0x24e5('0x16')](function(_0x307f68){_0x508174(_0x307f68);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1a')]=function(_0x20e483,_0x9a007f){this['rpc'][_0x24e5('0x1b')](_0x20e483)[_0x24e5('0x14')](function(_0x461fb1){_0x9a007f(null,_0x461fb1?_0x461fb1[_0x24e5('0x1c')]:![]);})[_0x24e5('0x16')](function(_0x3ef7db){_0x9a007f(_0x3ef7db);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1d')]=function(_0x35ee3d,_0x102157){this[_0x24e5('0x11')][_0x24e5('0x1e')](_0x35ee3d)[_0x24e5('0x14')](function(_0xdebfcf){_0x102157(null,_0xdebfcf?_0xdebfcf['name']:![]);})[_0x24e5('0x16')](function(_0x22e3aa){_0x102157(_0x22e3aa);});};AGIVertices['prototype'][_0x24e5('0x1f')]=function(_0x48703f,_0x4ac163){this['rpc']['getTrunkById'](_0x48703f)[_0x24e5('0x14')](function(_0x12d1ac){_0x4ac163(null,_0x12d1ac?_0x12d1ac[_0x24e5('0x15')]:![]);})[_0x24e5('0x16')](function(_0x5d186f){_0x4ac163(_0x5d186f);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x20')]=function(_0x55ddfb,_0x18ac44){var _0x4beb71=this;this[_0x24e5('0x11')][_0x24e5('0x21')](_0x55ddfb)[_0x24e5('0x14')](function(_0x28214c){_0x18ac44(null,_0x28214c?_0x4beb71[_0x24e5('0x22')](_0x28214c[_0x24e5('0x23')]):![]);})[_0x24e5('0x16')](function(_0x80e74d){_0x18ac44(_0x80e74d);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x24')]=function(_0x33325e,_0x161d91){this[_0x24e5('0x11')]['getMailAccountById'](_0x33325e)[_0x24e5('0x14')](function(_0xd20986){_0x161d91(null,_0xd20986?_0xd20986:![]);})['catch'](function(_0x4729e9){_0x161d91(_0x4729e9);});};AGIVertices[_0x24e5('0x17')]['sendMailMessage']=function(_0x1110bf,_0xe713d8,_0x289a96){this[_0x24e5('0x12')][_0x24e5('0x25')](_0x1110bf,_0xe713d8)['then'](function(){_0x289a96(null);})[_0x24e5('0x16')](function(_0x3d903b){_0x289a96(_0x3d903b);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x26')]=function(_0x4927ad,_0x593177){this[_0x24e5('0x11')]['getIntervalById'](_0x4927ad)[_0x24e5('0x14')](function(_0x3c576f){if(_0x3c576f){if(_0x3c576f[_0x24e5('0x27')]){_0x593177(null,[_0x3c576f[_0x24e5('0x28')]]);}else{_0x593177(null,_[_0x24e5('0x29')](_0x3c576f['Intervals'],'interval'));}}else{_0x593177(null,![]);}})[_0x24e5('0x16')](function(_0x17bb54){_0x593177(_0x17bb54);});};AGIVertices['prototype']['getSoundPath']=function(_0x466eb7){return util[_0x24e5('0x2a')](_0x24e5('0x2b'),FILES_PATH,_0x466eb7);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x2c')]=function(_0x30ca4a,_0x14b1b1,_0xa2d100){odbc['open'](_0x30ca4a,function(_0x5095d7){if(_0x5095d7){logger[_0x24e5('0x2d')](_0x24e5('0x2e'),_0x5095d7);_0xa2d100(_0x5095d7);}else{logger['info']('ODBC\x20connection\x20successfully');odbc[_0x24e5('0x2f')](_0x14b1b1,function(_0x47c30c,_0x5aaf3e){if(_0x47c30c){logger[_0x24e5('0x30')]('Error\x20executing\x20query\x20%s',_0x14b1b1);_0xa2d100(_0x47c30c);}else{logger['info'](_0x24e5('0x31'),_0x14b1b1);odbc['close'](function(_0x539073){if(_0x539073){logger[_0x24e5('0x2d')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x539073);}_0xa2d100(null,_0x5aaf3e);});}});}});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x32')]=function(_0x4082e0,_0xd40f09){this[_0x24e5('0x11')][_0x24e5('0x33')](_0x4082e0)[_0x24e5('0x14')](function(_0x4d552a){_0xd40f09(null,_0x4d552a?_0x4d552a:![]);})[_0x24e5('0x16')](function(_0x5c2977){_0xd40f09(_0x5c2977);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x34')]=function(_0x4a485b,_0x870448){this[_0x24e5('0x11')]['createSmsMessage'](_0x4a485b)['then'](function(_0x469bf8){_0x870448(null,_0x469bf8);})[_0x24e5('0x16')](function(_0x5ba17e){_0x870448(_0x5ba17e);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x35')]=function(_0x394e6e,_0x2058ba,_0x194696){this[_0x24e5('0x11')]['createSquareDetailsReport']({'uniqueid':this['channel']['uniqueid'],'node':_0x394e6e[_0x24e5('0x36')],'application':_0x394e6e[_0x24e5('0x37')],'data':_0x2058ba||null,'project_name':this['channel'][_0x24e5('0x38')],'callerid':this[_0x24e5('0x10')][_0x24e5('0x39')]})[_0x24e5('0x14')](function(_0x24cb65){if(_0x194696){_0x194696(null,_0x24cb65);}})[_0x24e5('0x16')](function(_0x1288fd){if(_0x194696){_0x194696(_0x1288fd);}});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x3a')]=function(_0x31e360,_0x1952a1,_0x3ce81e,_0x2a86f8){this[_0x24e5('0x11')]['createSquareRecording']({'uniqueid':this[_0x24e5('0x10')]['uniqueid'],'callerid':this['channel'][_0x24e5('0x39')],'calleridname':this['channel']['calleridname'],'context':this[_0x24e5('0x10')]['context'],'extension':this['channel'][_0x24e5('0x3b')],'priority':this[_0x24e5('0x10')]['priority'],'accountcode':this[_0x24e5('0x10')][_0x24e5('0x3c')],'dnid':this[_0x24e5('0x10')][_0x24e5('0x3d')],'projectName':this[_0x24e5('0x10')]['arg_1'],'saveName':_0x1952a1,'filename':_0x31e360[_0x24e5('0x3e')]||_0x1952a1,'savePath':_0x3ce81e})[_0x24e5('0x14')](function(_0x420998){_0x2a86f8(null,_0x420998);})[_0x24e5('0x16')](function(_0x328e41){_0x2a86f8(_0x328e41);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x3f')]=function(_0x238c8d,_0x108c77,_0x367936,_0x2c8312,_0x13aa85){this['rpc']['createSquareMessage']({'uniqueid':this[_0x24e5('0x10')][_0x24e5('0x40')],'body':_0x238c8d,'direction':_0x108c77,'providerName':_0x367936,'providerResponse':_0x2c8312})[_0x24e5('0x14')](function(_0x92879d){if(_0x13aa85){_0x13aa85(null,_0x92879d);}})[_0x24e5('0x16')](function(_0x2f86be){if(_0x13aa85){_0x13aa85(_0x2f86be);}});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x41')]=function(_0x3b1f54,_0x8967bc){this['rpc'][_0x24e5('0x41')]({'firstName':_[_0x24e5('0x42')](_0x3b1f54[_0x24e5('0x15')])||_[_0x24e5('0x43')](_0x3b1f54['name'])?_0x24e5('0x44')+Math['random']():_0x3b1f54['name'],'lastName':_[_0x24e5('0x42')](_0x3b1f54['lastName'])||_[_0x24e5('0x43')](_0x3b1f54[_0x24e5('0x45')])?null:_0x3b1f54[_0x24e5('0x45')],'phone':_0x3b1f54[_0x24e5('0x46')],'ListId':_0x3b1f54['list_id'],'scheduledat':_0x3b1f54[_0x24e5('0x47')],'callbackUniqueid':this['channel']['uniqueid'],'tags':_0x24e5('0x48'),'description':'Callback\x20scheduled\x20at\x20'+_0x3b1f54[_0x24e5('0x47')]['toString'](),'priority':_0x3b1f54[_0x24e5('0x49')]})[_0x24e5('0x14')](function(_0x53a496){_0x8967bc(null,_0x53a496);})['catch'](function(_0x405692){_0x8967bc(_0x405692);});};AGIVertices[_0x24e5('0x17')]['getPause']=function(_0x542aeb,_0x169317){this[_0x24e5('0x11')][_0x24e5('0x4a')](_0x542aeb)[_0x24e5('0x14')](function(_0x364936){_0x169317(null,_0x364936?_0x364936['name']:![]);})[_0x24e5('0x16')](function(_0x3febc9){_0x169317(_0x3febc9);});};AGIVertices['prototype']['agentPause']=function(_0x588bf7,_0x104af6,_0x510734){var _0x11cd58={'role':_0x24e5('0x4b')};_0x11cd58[_0x588bf7]=this[_0x24e5('0x10')]['callerid'];this[_0x24e5('0x11')][_0x24e5('0x4c')](_0x11cd58,_0x104af6,this['channel'][_0x24e5('0x40')])[_0x24e5('0x14')](function(_0x4a76a7){_0x510734(null,_[_0x24e5('0x43')](_0x4a76a7)?![]:!![]);})[_0x24e5('0x16')](function(_0x726de4){logger[_0x24e5('0x2d')](_0x726de4);_0x510734(null,![]);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x4d')]=function(_0x3bd4b8,_0x127008){var _0x467dce={'role':_0x24e5('0x4b')};_0x467dce[_0x3bd4b8]=this[_0x24e5('0x10')][_0x24e5('0x39')];this['rpc'][_0x24e5('0x4d')](_0x467dce)[_0x24e5('0x14')](function(_0x37f4cd){_0x127008(null,_['isNil'](_0x37f4cd)?![]:!![]);})['catch'](function(_0x465ad5){logger[_0x24e5('0x2d')](_0x465ad5);_0x127008(null,![]);});};AGIVertices['prototype'][_0x24e5('0x4e')]=function(_0x238651,_0x240fc3){var _0x4f180d={'role':_0x24e5('0x4b')};_0x4f180d[_0x238651]=this['channel'][_0x24e5('0x39')];this[_0x24e5('0x11')][_0x24e5('0x4e')](_0x4f180d)[_0x24e5('0x14')](function(_0xd21131){_0x240fc3(null,_[_0x24e5('0x43')](_0xd21131)?![]:!![]);})['catch'](function(_0x33a660){logger[_0x24e5('0x2d')](_0x33a660);_0x240fc3(null,![]);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x4f')]=function(_0x315100,_0xdc85ff){var _0x5758d9={'role':_0x24e5('0x4b')};_0x5758d9[_0x315100]=this[_0x24e5('0x10')][_0x24e5('0x39')];var _0x229089=_0x315100!='internal'?util[_0x24e5('0x2a')]('%s/%s@from-sip/n',_0x24e5('0x50'),this[_0x24e5('0x10')][_0x24e5('0x39')]):undefined;this[_0x24e5('0x11')][_0x24e5('0x4f')](_0x5758d9,_0x229089)[_0x24e5('0x14')](function(_0x4518b0){_0xdc85ff(null,_['isNil'](_0x4518b0)?![]:!![]);})['catch'](function(_0x2d6b9d){logger[_0x24e5('0x2d')](_0x2d6b9d);_0xdc85ff(null,![]);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x51')]=function(_0x171dbf,_0x37a2a5){sh['exec'](_[_0x24e5('0x52')](_0x171dbf),function(_0x5be3ae,_0x3ff91e){var _0x3d143d=_0x3ff91e[_0x24e5('0x53')](/(\r\n|\n|\r)/gm,'');_0x37a2a5(null,_0x3d143d);});};AGIVertices['prototype'][_0x24e5('0x54')]=function(_0x4fb0e4,_0x4363c2){scripts[_0x24e5('0x54')](_0x4fb0e4['apiKey'],_0x4fb0e4['google_cloud_tts_text_type']||'text',_0x4fb0e4[_0x24e5('0x55')],_0x4fb0e4[_0x24e5('0x56')]||_0x24e5('0x57'),_0x4fb0e4[_0x24e5('0x58')]||_0x24e5('0x59'),_0x4fb0e4[_0x24e5('0x5a')]||_0x24e5('0x5b'))['then'](function(_0x5b1db9){_0x4363c2(null,_0x5b1db9);})[_0x24e5('0x16')](function(_0x10183e){_0x4363c2(_0x10183e);});};AGIVertices['prototype'][_0x24e5('0x5c')]=function(_0x3317f7,_0x1108fa){scripts['googleTTS'](_0x3317f7['text'],_0x3317f7[_0x24e5('0x5d')]||'en',0x1)[_0x24e5('0x14')](function(_0x458c54){_0x1108fa(null,_0x458c54);})[_0x24e5('0x16')](function(_0x15740d){_0x1108fa(_0x15740d);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x5e')]=function(_0x2cfa51,_0xaf7536){var _0x9d10b7={'uri':_0x2cfa51['url'],'method':_0x2cfa51[_0x24e5('0x5f')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2cfa51[_0x24e5('0x60')])==='number'&&parseInt(_0x2cfa51['timeout'])>=0x1?parseInt(_0x2cfa51[_0x24e5('0x60')])*0x3e8:0x5*0x3e8};if(_['includes'](['POST',_0x24e5('0x61')],_0x9d10b7[_0x24e5('0x5f')][_0x24e5('0x62')]())){try{_0x9d10b7[_0x24e5('0x63')]=_0x2cfa51[_0x24e5('0xc')]?JSON[_0x24e5('0x64')](_0x2cfa51[_0x24e5('0xc')]):{};}catch(_0xc74b9){logger['error'](_0x24e5('0x65'),_0xc74b9);}}try{_0x9d10b7[_0x24e5('0x66')]=_0x2cfa51['rawHeaders']?JSON[_0x24e5('0x64')](_0x2cfa51[_0x24e5('0xb')]):{};}catch(_0x224e95){logger[_0x24e5('0x2d')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x224e95);}if(_0x2cfa51['computedVariables']){try{var _0xc37b14=require(_0x2cfa51[_0x24e5('0x67')])[_0x24e5('0x68')](this,_0x9d10b7);_0x9d10b7[_0x24e5('0x69')]=Mustache[_0x24e5('0x6a')](_0x2cfa51[_0x24e5('0x6b')],_0xc37b14,{},['$$','$$']);if(_0x9d10b7['headers']){_0x9d10b7['headers']=JSON['parse'](Mustache[_0x24e5('0x6a')](JSON['stringify'](_0x9d10b7[_0x24e5('0x66')]),_0xc37b14,{},['$$','$$']));}if(_0x9d10b7['body']){_0x9d10b7[_0x24e5('0x63')]=JSON[_0x24e5('0x64')](Mustache[_0x24e5('0x6a')](JSON[_0x24e5('0x6c')](_0x9d10b7[_0x24e5('0x63')]),_0xc37b14,{},['$$','$$']));}}catch(_0x29b324){logger[_0x24e5('0x2d')](_0x24e5('0x6d'),_0x29b324);}}rp(_0x9d10b7)['then'](function(_0x4b1d01){var _0x4dfd84={'statusCode':_0x4b1d01['statusCode']||0xc8,'statusMessage':_0x4b1d01[_0x24e5('0x6e')]||'OK','headers':_0x4b1d01[_0x24e5('0x66')]||{},'body':_0x4b1d01[_0x24e5('0x63')]||{}};_0xaf7536(null,_0x4dfd84);})[_0x24e5('0x16')](function(_0x5148ec){var _0x414b8c={'statusCode':_0x5148ec[_0x24e5('0x6f')]||0x1f4,'statusMessage':_0x5148ec[_0x24e5('0x70')]||_0x24e5('0x71'),'headers':_0x5148ec[_0x24e5('0x72')][_0x24e5('0x66')]||{},'body':_0x5148ec[_0x24e5('0x72')]['body']||{}};_0xaf7536(null,_0x414b8c);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x73')]=function(_0x5a1758,_0x7f170d){scripts[_0x24e5('0x73')](this[_0x24e5('0x10')]['uniqueid'],_0x5a1758[_0x24e5('0x74')],_0x5a1758[_0x24e5('0x55')],_0x5a1758[_0x24e5('0x75')]||'en')['then'](function(_0x3c67ce){_0x7f170d(null,_0x3c67ce);})['catch'](function(_0xb115a){_0x7f170d(_0xb115a);});};AGIVertices['prototype'][_0x24e5('0x76')]=function(_0x5ca58b,_0x571636){scripts[_0x24e5('0x76')](this[_0x24e5('0x10')][_0x24e5('0x40')],_0x5ca58b[_0x24e5('0x77')],_0x5ca58b[_0x24e5('0x78')],_0x5ca58b[_0x24e5('0x79')],_0x5ca58b[_0x24e5('0x55')],_0x5ca58b[_0x24e5('0x7a')]||'en')[_0x24e5('0x14')](function(_0x812228){_0x571636(null,_0x812228);})[_0x24e5('0x16')](function(_0x3ee5ec){_0x571636(_0x3ee5ec);});};AGIVertices[_0x24e5('0x17')]['sestekNDA']=function(_0x85263b,_0x5f1433){scripts['sestekNDA'](this['channel'],_0x85263b)[_0x24e5('0x14')](function(_0x31dc7a){_0x5f1433(null,_0x31dc7a);})[_0x24e5('0x16')](function(_0x4c2e51){_0x5f1433(_0x4c2e51);});};AGIVertices['prototype'][_0x24e5('0x7b')]=function(_0x450e2c,_0x45353f){scripts[_0x24e5('0x7b')](_0x450e2c[_0x24e5('0x74')],_0x450e2c['text'],_0x450e2c[_0x24e5('0x7c')]||_0x24e5('0x57'),_0x450e2c[_0x24e5('0x7d')])['then'](function(_0x3fd214){_0x45353f(null,_0x3fd214);})[_0x24e5('0x16')](function(_0x454ec1){_0x45353f(_0x454ec1);});};AGIVertices['prototype'][_0x24e5('0x7e')]=function(_0x2654fc,_0x369520,_0x3b7b86){scripts[_0x24e5('0x7e')](_0x369520,_0x2654fc['key'],_0x2654fc[_0x24e5('0x7f')]||'en-US',this[_0x24e5('0x80')](_0x2654fc[_0x24e5('0x81')])?_0x2654fc[_0x24e5('0x81')]:undefined)[_0x24e5('0x14')](function(_0x18c672){_0x3b7b86(null,_0x18c672);})[_0x24e5('0x16')](function(_0x52f45c){_0x3b7b86(_0x52f45c);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x82')]=function(_0x2e53cb,_0xf47a30){scripts[_0x24e5('0x82')](_0x2e53cb[_0x24e5('0x83')],_0x2e53cb[_0x24e5('0x84')],_0x2e53cb[_0x24e5('0x85')],_0x2e53cb[_0x24e5('0x86')]||_0x24e5('0x87'),_0x2e53cb[_0x24e5('0x55')],_0x2e53cb['aws_text_type']||_0x24e5('0x55'))[_0x24e5('0x14')](function(_0x42eb37){_0xf47a30(null,_0x42eb37);})[_0x24e5('0x16')](function(_0xe0c28b){_0xf47a30(_0xe0c28b);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x88')]=function(_0x4ce576,_0x5a22c6){scripts[_0x24e5('0x88')](this[_0x24e5('0x10')][_0x24e5('0x40')],_0x4ce576['aws_access_key_id'],_0x4ce576[_0x24e5('0x84')],_0x4ce576[_0x24e5('0x89')],_0x4ce576[_0x24e5('0x55')],_0x4ce576[_0x24e5('0x8a')])[_0x24e5('0x14')](function(_0x25f5ae){_0x5a22c6(null,_0x25f5ae);})[_0x24e5('0x16')](function(_0x482339){_0x5a22c6(_0x482339);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x8b')]=function(_0x215c6b,_0x3ff8d7,_0xdbc78c){scripts[_0x24e5('0x8b')](_0x3ff8d7,_0x215c6b[_0x24e5('0x74')],_0x215c6b[_0x24e5('0x8c')]||_0x24e5('0x57'))[_0x24e5('0x14')](function(_0x4efbd2){_0xdbc78c(null,_0x4efbd2);})['catch'](function(_0x106b84){_0xdbc78c(_0x106b84);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x8d')]=function(_0x49e6d8,_0x1350f3,_0x15c0a7){scripts[_0x24e5('0x8d')](_0x1350f3,_0x49e6d8['appid'],_0x49e6d8['appsecret'],_0x49e6d8[_0x24e5('0x69')])['then'](function(_0x789d67){_0x15c0a7(null,_0x789d67);})[_0x24e5('0x16')](function(_0x343f99){_0x15c0a7(_0x343f99);});};AGIVertices[_0x24e5('0x17')][_0x24e5('0x8e')]=function(_0x572cd7){var _0x501198=_[_0x24e5('0x8f')](verticesWithRetry,_0x572cd7['agicommand'])?_0x572cd7:_[_0x24e5('0x90')](_0x572cd7);for(var _0x5ecd3d in _0x501198){if(_0x501198[_0x24e5('0x91')](_0x5ecd3d)){if(_0x501198[_0x5ecd3d]&&_[_0x24e5('0x92')](_0x501198[_0x5ecd3d])){if(_['includes'](recursiveMapAttributes,_0x5ecd3d)){_0x501198[_0x5ecd3d]=this[_0x24e5('0x93')](_0x501198[_0x5ecd3d]);}else{_0x501198[_0x5ecd3d]=this[_0x24e5('0x94')](_0x501198[_0x5ecd3d]);}}}}return _0x501198;};AGIVertices['prototype'][_0x24e5('0x95')]=function(_0x528bf0){for(var _0x34a2a0 in _0x528bf0){if(_0x528bf0['hasOwnProperty'](_0x34a2a0)){if(_[_0x24e5('0x96')](_0x528bf0[_0x34a2a0])){this[_0x24e5('0x95')](_0x528bf0[_0x34a2a0]);}else if(_[_0x24e5('0x97')](_0x528bf0[_0x34a2a0])){for(var _0x48174d=0x0;_0x48174d<_0x528bf0[_0x34a2a0][_0x24e5('0x98')];_0x48174d++){this[_0x24e5('0x95')](_0x528bf0[_0x34a2a0][_0x48174d]);}}else if(_[_0x24e5('0x92')](_0x528bf0[_0x34a2a0])){_0x528bf0[_0x34a2a0]=this[_0x24e5('0x94')](_0x528bf0[_0x34a2a0]);}}}};AGIVertices[_0x24e5('0x17')]['saveRestApiResult']=function(_0x517ae6,_0x181cf4){for(var _0x22c021 in _0x517ae6){if(_0x517ae6[_0x24e5('0x91')](_0x22c021)){if(_[_0x24e5('0x96')](_0x517ae6[_0x22c021])){if(!_[_0x24e5('0x42')](_0x517ae6[_0x22c021])){this[_0x24e5('0x99')](_0x517ae6[_0x22c021],util[_0x24e5('0x2a')](_0x24e5('0x9a'),_0x181cf4,_0x22c021));}}else if(_[_0x24e5('0x97')](_0x517ae6[_0x22c021])){for(var _0x53f6b7=0x0;_0x53f6b7<_0x517ae6[_0x22c021][_0x24e5('0x98')];_0x53f6b7++){this[_0x24e5('0x99')](_0x517ae6[_0x22c021][_0x53f6b7],util[_0x24e5('0x2a')]('%s.%s',_0x181cf4,_0x22c021+'['+_0x53f6b7+']'));}}else{if(!_['isNil'](_0x517ae6[_0x22c021])){this[_0x24e5('0x10')]['setVariable'](util[_0x24e5('0x2a')](_0x24e5('0x9a'),_0x181cf4,_0x22c021),_0x517ae6[_0x22c021]);}}}}};AGIVertices['prototype']['replaceObjectAllVariables']=function(_0x310528){try{var _0x3c3ca6=JSON[_0x24e5('0x64')](_0x310528);this[_0x24e5('0x95')](_0x3c3ca6);return JSON['stringify'](_0x3c3ca6);}catch(_0x497909){return this['replaceAllVariables'](_0x310528);}};AGIVertices[_0x24e5('0x17')]['replaceAllVariables']=function(_0x1cf27b){var _0x339237=_0x1cf27b[_0x24e5('0x9b')]('{');for(var _0x4ad326=0x1;_0x4ad326<_0x339237[_0x24e5('0x98')];_0x4ad326+=0x1){var _0x262408=_0x339237[_0x4ad326]['split']('}');if(_0x262408['length']>0x1){_0x1cf27b=_0x1cf27b[_0x24e5('0x9c')]('{'+_0x262408[0x0]+'}',this[_0x24e5('0x10')][_0x24e5('0x9d')](_0x262408[0x0])['extra']||_0x262408[0x0]);}}if(_0x339237['length']===0x1){return _0x1cf27b[_0x24e5('0x9e')]();}return this[_0x24e5('0x94')](_0x1cf27b);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x9f')]=function(_0x5ee333,_0x4b815b){var _0x5f0f21=this[_0x24e5('0x10')][_0x24e5('0x9d')](_0x5ee333);if(_0x5f0f21[_0x24e5('0xa0')]===-0x1){return _0x5f0f21;}logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xa1'),_0x4b815b,_0x5f0f21[_0x24e5('0xa2')]));return this['channel'][_0x24e5('0xa3')](_0x4b815b,_0x5f0f21['extra']);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x80')]=function(_0x159cb6){return _0x159cb6&&_0x159cb6!=='0'&&_0x159cb6!=='-1'&&_0x159cb6!=='';};AGIVertices['prototype'][_0x24e5('0xa4')]=function(_0x10edf0){this[_0x24e5('0x35')]['sync'](this,_0x10edf0,'-');_0x10edf0[_0x24e5('0xa5')]=_0x10edf0['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x24e5('0xa6')]=function(_0x1102cf){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x1102cf[_0x24e5('0x36')]));if(!this['isConfigured'](_0x1102cf[_0x24e5('0x55')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xa8'));}var _0x53db92='\x22'+_0x1102cf[_0x24e5('0x55')]+'\x22';if(this[_0x24e5('0x80')](_0x1102cf[_0x24e5('0x72')])){_0x53db92+=','+_0x1102cf[_0x24e5('0x72')];}var _0xb14a56=this[_0x24e5('0x10')][_0x24e5('0xa9')](_0x24e5('0xaa'),_0x53db92);if(_0xb14a56[_0x24e5('0xa0')]===-0x1){return _0xb14a56;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xab'),_0x53db92));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xac')]=function(_0x19aa54){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xad'),_0x19aa54['label']));if(!this[_0x24e5('0x80')](_0x19aa54[_0x24e5('0xae')])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0xaf'));}var _0x1140f6=_0x19aa54[_0x24e5('0xae')];if(this[_0x24e5('0x80')](_0x19aa54[_0x24e5('0x72')])){_0x1140f6+=','+_0x19aa54[_0x24e5('0x72')];}var _0x4532dc=this[_0x24e5('0x10')][_0x24e5('0xa9')]('MRCPRecog',_0x1140f6);if(_0x4532dc[_0x24e5('0xa0')]===-0x1){return _0x4532dc;}var _0x4a35e5=this['getAndSetVariable'](_0x24e5('0xb0'),'MRCP_RECOG_CONFIDENCE');if(_0x4a35e5[_0x24e5('0xa0')]===-0x1){return _0x4a35e5;}var _0x1a1833=this[_0x24e5('0x9f')]('RECOG_INPUT()',_0x24e5('0xb1'));if(_0x1a1833['result']===-0x1){return _0x1a1833;}var _0x34bbdf=this[_0x24e5('0x9f')](_0x24e5('0xb2'),'MRCP_RECOG_INSTANCE');if(_0x34bbdf[_0x24e5('0xa0')]===-0x1){return _0x34bbdf;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xb3'),_0x1140f6));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xb4')]=function(_0x34327d){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xb5'),_0x34327d[_0x24e5('0x36')]));return this[_0x24e5('0x10')][_0x24e5('0xb4')]([_0x34327d[_0x24e5('0xb6')],_0x34327d[_0x24e5('0xb7')]]);};AGIVertices[_0x24e5('0x17')][_0x24e5('0xb8')]=function(_0x3eeacb){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xb9'),_0x3eeacb[_0x24e5('0x36')]));if(this[_0x24e5('0x80')](_0x3eeacb[_0x24e5('0x60')])){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x3eeacb[_0x24e5('0x60')]));var _0x42de3c=this[_0x24e5('0x10')][_0x24e5('0xba')](_0x3eeacb[_0x24e5('0x60')]);if(_0x42de3c[_0x24e5('0xa0')]===-0x1){return _0x42de3c;}}return this['channel'][_0x24e5('0xb8')]();};AGIVertices[_0x24e5('0x17')]['callback']=function(_0x4da19a){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xbb'),_0x4da19a['label']));if(!this[_0x24e5('0x80')](_0x4da19a[_0x24e5('0xbc')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x4da19a,_0x24e5('0xbd'));}_0x4da19a[_0x24e5('0x47')]=moment();if(this['isConfigured'](_0x4da19a['delay'])){_0x4da19a[_0x24e5('0x47')]=moment()[_0x24e5('0xbe')](_0x4da19a['delay'],'minutes');}if(!this[_0x24e5('0x80')](_0x4da19a[_0x24e5('0x49')])){_0x4da19a[_0x24e5('0x49')]=0x2;}this[_0x24e5('0x41')][_0x24e5('0x68')](this,_0x4da19a);return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x4da19a[_0x24e5('0x46')],_0x4da19a[_0x24e5('0xbc')],_0x4da19a[_0x24e5('0x47')]));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xbf')]=function(_0x485025){logger[_0x24e5('0x30')](util['format'](_0x24e5('0xc0'),_0x485025[_0x24e5('0x36')]));var _0x52ba91=this[_0x24e5('0x10')][_0x24e5('0xa9')](_0x485025[_0x24e5('0xc1')],_0x485025[_0x24e5('0x72')]);if(_0x52ba91[_0x24e5('0xa0')]===-0x1){return _0x52ba91;}return this['channel']['noop'](util[_0x24e5('0x2a')]('Executed\x20command\x20%s\x20%s',_0x485025[_0x24e5('0xc1')],_0x485025[_0x24e5('0x72')]));};AGIVertices[_0x24e5('0x17')]['lumenvoxtts']=function(_0x2d7ad7){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0xc2'),_0x2d7ad7[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x2d7ad7[_0x24e5('0x55')])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0xa8'));}var _0x596861='\x22'+_0x2d7ad7[_0x24e5('0x55')]+'\x22';if(this['isConfigured'](_0x2d7ad7['options'])){_0x596861+=','+_0x2d7ad7['options'];}var _0x3c0727=this[_0x24e5('0x10')][_0x24e5('0xa9')](_0x24e5('0xaa'),_0x596861);if(_0x3c0727[_0x24e5('0xa0')]===-0x1){return _0x3c0727;}return this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0xab'),_0x596861));};AGIVertices['prototype'][_0x24e5('0xc3')]=function(_0x150e54){logger['info'](util['format'](_0x24e5('0xc4'),_0x150e54[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x150e54['text'])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xa8'));}var _0xcb3bf9='\x22'+_0x150e54[_0x24e5('0x55')]+'\x22';if(this[_0x24e5('0x80')](_0x150e54['options'])){_0xcb3bf9+=','+_0x150e54[_0x24e5('0x72')];}var _0xb4ce2a=this[_0x24e5('0x10')][_0x24e5('0xa9')](_0x24e5('0xaa'),_0xcb3bf9);if(_0xb4ce2a['result']===-0x1){return _0xb4ce2a;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0xcb3bf9));};AGIVertices[_0x24e5('0x17')]['lumenvoxasr']=function(_0x4b4901){logger['info'](util['format'](_0x24e5('0xc5'),_0x4b4901[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x4b4901['grammar'])){return this[_0x24e5('0x10')]['noop']('no\x20grammar\x20configured');}var _0x374622=_0x4b4901['grammar'];if(this['isConfigured'](_0x4b4901[_0x24e5('0x72')])){_0x374622+=','+_0x4b4901[_0x24e5('0x72')];}var _0x1b1fd8=this['channel'][_0x24e5('0xa9')]('MRCPRecog',_0x374622);if(_0x1b1fd8['result']===-0x1){return _0x1b1fd8;}var _0x31441b=this['getAndSetVariable'](_0x24e5('0xb0'),_0x24e5('0xc6'));if(_0x31441b['result']===-0x1){return _0x31441b;}var _0x39e6d1=this[_0x24e5('0x9f')]('RECOG_INPUT()',_0x24e5('0xc7'));if(_0x39e6d1[_0x24e5('0xa0')]===-0x1){return _0x39e6d1;}var _0x5c7b45=this[_0x24e5('0x9f')](_0x24e5('0xb2'),_0x24e5('0xc8'));if(_0x5c7b45[_0x24e5('0xa0')]===-0x1){return _0x5c7b45;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0xb3'),_0x374622));};AGIVertices[_0x24e5('0x17')]['sestekasr']=function(_0x3cd3c6){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x3cd3c6['label']));if(!this[_0x24e5('0x80')](_0x3cd3c6[_0x24e5('0xae')])){return this[_0x24e5('0x10')]['noop'](_0x24e5('0xaf'));}var _0x33f69a=_0x3cd3c6[_0x24e5('0xae')];if(this[_0x24e5('0x80')](_0x3cd3c6['options'])){_0x33f69a+=','+_0x3cd3c6[_0x24e5('0x72')];}var _0x25526b=this[_0x24e5('0x10')][_0x24e5('0xa9')]('MRCPRecog',_0x33f69a);if(_0x25526b[_0x24e5('0xa0')]===-0x1){return _0x25526b;}var _0x23a888=this[_0x24e5('0x9f')](_0x24e5('0xb0'),'SESTEK_ASR_CONFIDENCE');if(_0x23a888[_0x24e5('0xa0')]===-0x1){return _0x23a888;}var _0x42d330=this[_0x24e5('0x9f')]('RECOG_INPUT()',_0x24e5('0xc9'));if(_0x42d330[_0x24e5('0xa0')]===-0x1){return _0x42d330;}var _0x30ca9d=this['getAndSetVariable'](_0x24e5('0xb2'),_0x24e5('0xca'));if(_0x30ca9d[_0x24e5('0xa0')]===-0x1){return _0x30ca9d;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xb3'),_0x33f69a));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xcb')]=function(_0x194501){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x194501[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x194501['odbc_id'])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x194501,_0x24e5('0xcc'));}var _0x521921=this[_0x24e5('0x1a')][_0x24e5('0x68')](this,_0x194501[_0x24e5('0xcd')]);if(!_0x521921){return this['channel'][_0x24e5('0x2d')](_0x194501,_0x24e5('0xce'));}if(!this[_0x24e5('0x80')](_0x194501[_0x24e5('0x2f')])){return this[_0x24e5('0x10')]['error'](_0x194501,_0x24e5('0xcf'));}var _0x1636e6=_0x194501[_0x24e5('0x2f')][_0x24e5('0x53')](/(\r\n|\n|\r)/gm,'\x20');this['channel']['noop'](util[_0x24e5('0x2a')]('query:\x20%s',_0x1636e6));var _0x30bbe0=this[_0x24e5('0x2c')][_0x24e5('0x68')](this,_0x521921,_0x1636e6);this['createSquareDetailsReport'][_0x24e5('0x68')](this,_0x194501,_0x1636e6);if(!this[_0x24e5('0x80')](_0x194501[_0x24e5('0xd0')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xd1'));}var _0x18555c=this[_0x24e5('0x9d')][_0x24e5('0x68')](this,_0x194501[_0x24e5('0xd0')]);if(!_0x18555c){return this[_0x24e5('0x10')]['error'](_0x194501,'no\x20variable\x20found');}var _0x40ff95=this;_0x30bbe0['forEach'](function(_0x16191d,_0x17be1e){Object[_0x24e5('0xd2')](_0x16191d)[_0x24e5('0xd3')](function(_0x4b50c2){_0x40ff95[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')]('%s[%s][%s]',_0x18555c,_0x17be1e,_0x4b50c2),_0x16191d[_0x4b50c2]);});});this[_0x24e5('0x10')]['setVariable'](util[_0x24e5('0x2a')](_0x24e5('0xd4'),_0x18555c),_0x30bbe0[_0x24e5('0x98')]);return this['channel']['noop'](util['format'](_0x24e5('0xd5'),_0x18555c));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xd6')]=function(_0x53e472){logger[_0x24e5('0xd7')](util['format'](_0x24e5('0xd8'),_0x53e472['label']));if(!this['isConfigured'](_0x53e472[_0x24e5('0xd9')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x53e472,_0x24e5('0xda'));}var _0x3dc8a1=this['getUser'][_0x24e5('0x68')](this,_0x53e472[_0x24e5('0xd9')]);if(!_0x3dc8a1){return this[_0x24e5('0x10')]['error'](_0x53e472,_0x24e5('0xdb'));}var _0x200639=this[_0x24e5('0x10')][_0x24e5('0xa9')]('DIAL',[util[_0x24e5('0x2a')](_0x24e5('0xdc'),_0x3dc8a1),_0x53e472[_0x24e5('0x60')],_0x53e472[_0x24e5('0xdd')],_0x53e472['url']]);if(_0x200639[_0x24e5('0xa0')]===-0x1){return _0x200639;}return this[_0x24e5('0x10')]['noop'](util['format']('Executed\x20command\x20%s',_0x24e5('0xde')));};AGIVertices[_0x24e5('0x17')]['dialogflow']=function(_0xaf6ccc){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0xaf6ccc['label']));if(!this[_0x24e5('0x80')](_0xaf6ccc[_0x24e5('0x74')])){return this['channel'][_0x24e5('0xa7')]('no\x20key\x20configured');}if(!this['isConfigured'](_0xaf6ccc[_0x24e5('0x55')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')]('no\x20text\x20configured');}this[_0x24e5('0x10')][_0x24e5('0xdf')]=!![];this['createSquareDetailsReport'](_0xaf6ccc);this[_0x24e5('0x3f')](_0xaf6ccc['text'],'in','','');this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xe0'),_0xaf6ccc[_0x24e5('0x55')]));var _0x112362=this['googleDialogflow'][_0x24e5('0x68')](this,_0xaf6ccc);if(_0x112362){for(var _0x2e7145 in _0x112362){if(_0x112362[_0x24e5('0x91')](_0x2e7145)){this[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')]('DIALOGFLOW_%s',_0x2e7145['toUpperCase']()),_0x112362[_0x2e7145]);}}this[_0x24e5('0x3f')](_0x112362[_0x24e5('0xe1')],_0x24e5('0xe2'),_0x24e5('0xe3'),'');return this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0xe4'),_0x112362['speech']));}return this['channel']['error'](_0xaf6ccc,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x24e5('0x17')]['dialogflowV2']=function(_0x1f6454){logger[_0x24e5('0x30')](util['format'](_0x24e5('0xe5'),_0x1f6454[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x1f6454['dialogflowV2_project_id'])){return this[_0x24e5('0x10')]['noop']('no\x20project_id\x20configured');}if(!this[_0x24e5('0x80')](_0x1f6454[_0x24e5('0x78')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xe6'));}if(!this[_0x24e5('0x80')](_0x1f6454[_0x24e5('0x79')])){return this[_0x24e5('0x10')]['noop'](_0x24e5('0xe7'));}if(!this[_0x24e5('0x80')](_0x1f6454[_0x24e5('0x7a')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xe8'));}if(!this[_0x24e5('0x80')](_0x1f6454['text'])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xa8'));}this[_0x24e5('0x10')][_0x24e5('0xdf')]=!![];this[_0x24e5('0x35')](_0x1f6454);this[_0x24e5('0x3f')](_0x1f6454[_0x24e5('0x55')],'in','','');this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xe9'),_0x1f6454[_0x24e5('0x55')]));var _0x382ed2=this[_0x24e5('0x76')][_0x24e5('0x68')](this,_0x1f6454);if(_0x382ed2){for(var _0x229fba in _0x382ed2){if(_0x382ed2[_0x24e5('0x91')](_0x229fba)){if(_0x229fba!==_0x24e5('0xea')){this['channel']['setVariable'](util[_0x24e5('0x2a')](_0x24e5('0xeb'),_0x229fba[_0x24e5('0x62')]()),_0x382ed2[_0x229fba]);}}}this[_0x24e5('0x3f')](_0x382ed2[_0x24e5('0xe1')],_0x24e5('0xe2'),'dialogflowV2',_0x382ed2['providerResponse']);return this[_0x24e5('0x10')]['noop'](util['format']('DialogflowV2\x20Result\x20%s',_0x382ed2[_0x24e5('0xe1')]));}return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x1f6454,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0x24e5('0x17')]['sesteknda']=function(_0x900a74){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xec'),_0x900a74['label']));if(!this['isConfigured'](_0x900a74['ndauth_url'])){return this['channel'][_0x24e5('0xa7')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x24e5('0x80')](_0x900a74[_0x24e5('0xed')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xee'));}if(!this[_0x24e5('0x80')](_0x900a74[_0x24e5('0xef')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xf0'));}if(!this[_0x24e5('0x80')](_0x900a74[_0x24e5('0xf1')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')]('no\x20text\x20configured');}this['channel']['bot']=!![];this[_0x24e5('0x35')](_0x900a74);this['createSquareMessage'](_0x900a74[_0x24e5('0x55')],'in','','');this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xf2'),_0x900a74[_0x24e5('0x55')]));var _0x552163=this[_0x24e5('0xf3')]['sync'](this,_0x900a74);if(_0x552163){for(var _0x205da9 in _0x552163){if(_0x552163[_0x24e5('0x91')](_0x205da9)){this[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0xf4'),_0x205da9[_0x24e5('0x62')]()),_0x552163[_0x205da9]);}}this['createSquareMessage'](_0x552163[_0x24e5('0xe1')],_0x24e5('0xe2'),_0x24e5('0xf5'),'');if(_0x552163['audiofile']){this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0xf6'),_0x552163[_0x24e5('0xf7')]));var _0x41e545=this[_0x24e5('0x10')][_0x24e5('0xf8')](_0x552163[_0x24e5('0xf7')]);try{fs[_0x24e5('0xf9')](_0x552163[_0x24e5('0xf7')]+_0x24e5('0xfa'));}catch(_0x1b3691){logger[_0x24e5('0x2d')](_0x1b3691);}return _0x41e545;}else{return this['channel'][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xfb'),_0x552163['speech']));}}return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x900a74,_0x24e5('0xfc'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xfd')]=function(_0x1c8410){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0xfe'),_0x1c8410[_0x24e5('0x36')]));return this['channel'][_0x24e5('0xa7')](_0x24e5('0xfd'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xff')]=function(_0x4a6733){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x100'),_0x4a6733[_0x24e5('0x36')]));var _0xd1acf8='';if(_0x4a6733['trunk_id']){if(!this[_0x24e5('0x80')](_0x4a6733[_0x24e5('0x101')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x4a6733,_0x24e5('0x102'));}else{var _0x4cf8c2=parseInt(_0x4a6733[_0x24e5('0x101')],0xa);if(isNaN(_0x4cf8c2)){_0xd1acf8=_0x4a6733[_0x24e5('0x101')];}else{_0xd1acf8=this['getTrunk'][_0x24e5('0x68')](this,_0x4a6733[_0x24e5('0x101')]);if(!_0xd1acf8){return this['channel'][_0x24e5('0x2d')](_0x4a6733,_0x24e5('0x103'));}}}}else if(_0x4a6733[_0x24e5('0x104')]){_0xd1acf8=_0x4a6733[_0x24e5('0x104')];}else{return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x4a6733,'no\x20trunk\x20selected');}var _0x8880e4=this['channel']['exec'](_0x24e5('0xde'),[util['format'](_0x24e5('0x105'),_0xd1acf8,_0x4a6733['phone']),_0x4a6733[_0x24e5('0x60')],_0x4a6733[_0x24e5('0xdd')],_0x4a6733[_0x24e5('0x6b')]]);if(_0x8880e4[_0x24e5('0xa0')]===-0x1){return _0x8880e4;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x106'),_0x24e5('0xde')));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x107')]=function(_0x5b90b8){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x108'),_0x5b90b8[_0x24e5('0x36')]));return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x107'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0xe')]=function(_0x3b42ff){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x109'),_0x3b42ff[_0x24e5('0x36')]));if(_0x3b42ff['retry']===0x0){return this[_0x24e5('0xa4')](_0x3b42ff);}_0x3b42ff[_0x24e5('0xa5')]-=0x1;if(!this[_0x24e5('0x80')](_0x3b42ff[_0x24e5('0x10a')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x3b42ff,_0x24e5('0x10b'));}var _0x1356a3=this[_0x24e5('0x20')][_0x24e5('0x68')](this,_0x3b42ff[_0x24e5('0x10a')]);if(!_0x1356a3){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x3b42ff,'no\x20file\x20audio\x20found');}if(!this[_0x24e5('0x80')](_0x3b42ff[_0x24e5('0xd0')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x24e5('0xd1'));}var _0x3ef2e0=this['channel']['getData'](_0x1356a3,_0x3b42ff[_0x24e5('0x10c')],_0x3b42ff['maxdigit']);var _0x5349b7=_0x3ef2e0[_0x24e5('0xa0')]?_0x3ef2e0[_0x24e5('0xa0')]['toString']():'';logger[_0x24e5('0x30')]('test',JSON[_0x24e5('0x6c')](_0x3ef2e0));if(_0x3ef2e0[_0x24e5('0xa0')]===-0x1){this[_0x24e5('0x35')]['sync'](this,_0x3b42ff,_0x5349b7);return _0x3ef2e0;}else if(_0x3ef2e0[_0x24e5('0xa2')]===_0x24e5('0x60')){_0x3ef2e0[_0x24e5('0xa0')]=_0x5349b7[_0x24e5('0x98')]>=parseInt(_0x3b42ff[_0x24e5('0x10d')])?'x':'i';}else{_0x3ef2e0[_0x24e5('0xa0')]=_0x5349b7['length']>=parseInt(_0x3b42ff['mindigit'])&&_0x5349b7[_0x24e5('0x98')]<=parseInt(_0x3b42ff[_0x24e5('0x10e')])?'x':'i';}var _0x1e38e1=this[_0x24e5('0x9d')]['sync'](this,_0x3b42ff[_0x24e5('0xd0')]);if(!_0x1e38e1){return this['channel']['error'](_0x3b42ff,'no\x20variable\x20found');}this['channel'][_0x24e5('0xa3')](_0x1e38e1,_0x5349b7);if(this[_0x24e5('0x80')](_0x3b42ff['hiddendigitsnum'])){var _0x38ca96=parseInt(_0x3b42ff[_0x24e5('0x10f')],0xa);var _0x4593be=rs['generate']({'charset':'*','length':_0x38ca96});var _0xdb1406=_0x5349b7[_0x24e5('0x98')];if(_0xdb1406>0x0){if(_0xdb1406>_0x38ca96){this[_0x24e5('0x35')][_0x24e5('0x68')](this,_0x3b42ff,_0x3b42ff[_0x24e5('0x110')]==='first'?_0x4593be+_0x5349b7[_0x24e5('0x111')](_0x38ca96):_0x5349b7[_0x24e5('0x111')](0x0,_0xdb1406-_0x38ca96)+_0x4593be);}else{this[_0x24e5('0x35')][_0x24e5('0x68')](this,_0x3b42ff,rs['generate']({'charset':'*','length':_0xdb1406}));}}else{this[_0x24e5('0x35')]['sync'](this,_0x3b42ff,'');}}else{this[_0x24e5('0x35')][_0x24e5('0x68')](this,_0x3b42ff,_0x5349b7);}return _0x3ef2e0;};AGIVertices['prototype'][_0x24e5('0xf')]=function(_0x29f2f3){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x112'),_0x29f2f3[_0x24e5('0x36')]));return this['getdigits'](_0x29f2f3);};AGIVertices[_0x24e5('0x17')]['goal']=function(_0x5187f3){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x113'),_0x5187f3[_0x24e5('0x36')]));this[_0x24e5('0x35')][_0x24e5('0x68')](this,_0x5187f3,_0x5187f3['goalname']);return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x114'),_0x5187f3[_0x24e5('0x115')]));};AGIVertices['prototype'][_0x24e5('0x116')]=function(_0x521aca){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x117'),_0x521aca[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x521aca[_0x24e5('0x83')])||!this[_0x24e5('0x80')](_0x521aca[_0x24e5('0x84')])){return this['channel']['noop'](_0x24e5('0x118'));}if(!this[_0x24e5('0x80')](_0x521aca[_0x24e5('0x55')])){return this['channel'][_0x24e5('0xa7')]('no\x20text\x20configured');}this['channel']['noop'](util[_0x24e5('0x2a')](_0x24e5('0x119'),_0x521aca[_0x24e5('0x55')]));var _0x495dc6=this[_0x24e5('0x82')][_0x24e5('0x68')](this,_0x521aca);if(_0x495dc6){this['channel'][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x11a'),_0x495dc6));var _0x9a94c=this[_0x24e5('0x10')]['streamFile'](_0x495dc6);try{fs[_0x24e5('0xf9')](_0x495dc6+_0x24e5('0xfa'));}catch(_0x3c1dad){logger['error'](_0x3c1dad);}return _0x9a94c;}return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x521aca,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x24e5('0x17')]['awslex']=function(_0x5ee7a2){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x11b'),_0x5ee7a2['label']));if(!this[_0x24e5('0x80')](_0x5ee7a2[_0x24e5('0x83')])||!this[_0x24e5('0x80')](_0x5ee7a2[_0x24e5('0x84')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x118'));}if(!this[_0x24e5('0x80')](_0x5ee7a2['aws_bot_name'])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x11c'));}if(!this[_0x24e5('0x80')](_0x5ee7a2[_0x24e5('0x55')])){return this[_0x24e5('0x10')]['noop']('no\x20text\x20configured');}this[_0x24e5('0x10')][_0x24e5('0xdf')]=!![];this[_0x24e5('0x35')](_0x5ee7a2);this['createSquareMessage'](_0x5ee7a2['text'],'in','','');this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0x11d'),_0x5ee7a2['text']));var _0x230a5d=this[_0x24e5('0x88')]['sync'](this,_0x5ee7a2);if(_0x230a5d){for(var _0x201b1a in _0x230a5d){if(_0x230a5d['hasOwnProperty'](_0x201b1a)&&_[_0x24e5('0x92')](_0x230a5d[_0x201b1a])){this[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0x11e'),_0x201b1a[_0x24e5('0x62')]()),_0x230a5d[_0x201b1a]);}}if(_[_0x24e5('0x43')](_0x230a5d[_0x24e5('0x70')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x11f'));}else{this[_0x24e5('0x3f')](_0x230a5d[_0x24e5('0x70')],'out','amazonlex','');return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x120'),_0x230a5d['message']));}}return this[_0x24e5('0x10')]['error'](_0x5ee7a2,_0x24e5('0x121'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x122')]=function(_0x49bf9a){logger[_0x24e5('0x30')](util['format'](_0x24e5('0x123'),_0x49bf9a[_0x24e5('0x36')],_0x49bf9a['timeout']));if(!this[_0x24e5('0x80')](_0x49bf9a[_0x24e5('0x74')])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0x124'));}var _0x5d5895=_0x24e5('0x125');var _0x3e3787=util[_0x24e5('0x2a')](_0x24e5('0x126'),FILES_PATH,rs[_0x24e5('0x127')](0x4));var _0x3d9872=util[_0x24e5('0x2a')]('%s.%s',_0x3e3787,_0x5d5895);var _0x50a6b4=!![];if(_0x49bf9a['beep']==='NOBEEP'){_0x50a6b4=![];}var _0xd68aef=this[_0x24e5('0x10')][_0x24e5('0x128')](_0x3e3787,_0x5d5895,_0x49bf9a[_0x24e5('0x129')],_0x49bf9a[_0x24e5('0x60')],undefined,_0x50a6b4);if(_0xd68aef[_0x24e5('0xa0')]!==-0x1){this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x12a'),_0x3d9872));var _0xcc69b7=this[_0x24e5('0x8b')][_0x24e5('0x68')](this,_0x49bf9a,_0x3d9872);if(_0xcc69b7){for(var _0x3dc367 in _0xcc69b7){if(_0xcc69b7['hasOwnProperty'](_0x3dc367)){this[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0x12b'),_0x3dc367[_0x24e5('0x62')]()),_0xcc69b7[_0x3dc367]);}}return this['channel']['noop'](util[_0x24e5('0x2a')](_0x24e5('0x12c'),JSON[_0x24e5('0x6c')](_0xcc69b7)));}}return _0xd68aef;};AGIVertices[_0x24e5('0x17')][_0x24e5('0x12d')]=function(_0x3362a0){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x12e'),_0x3362a0[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x3362a0[_0x24e5('0x12f')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x130'));}if(!this[_0x24e5('0x80')](_0x3362a0[_0x24e5('0x131')])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0x132'));}var _0x59dcfd=_0x24e5('0x125');var _0x51130e=util[_0x24e5('0x2a')]('%s/recordings/%s',FILES_PATH,rs[_0x24e5('0x127')](0x4));var _0x30e237=util[_0x24e5('0x2a')](_0x24e5('0x9a'),_0x51130e,_0x59dcfd);var _0x3216ac=!![];if(_0x3362a0[_0x24e5('0x133')]===_0x24e5('0x134')){_0x3216ac=![];}var _0x33cb1d=this[_0x24e5('0x10')][_0x24e5('0x128')](_0x51130e,_0x59dcfd,_0x3362a0[_0x24e5('0x129')],_0x3362a0[_0x24e5('0x60')],undefined,_0x3216ac);if(_0x33cb1d[_0x24e5('0xa0')]!==-0x1){this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0x135'),_0x30e237));var _0x71ac2c=this[_0x24e5('0x8d')][_0x24e5('0x68')](this,_0x3362a0,_0x30e237);if(_0x71ac2c){for(var _0x436b69 in _0x71ac2c){if(_0x71ac2c['hasOwnProperty'](_0x436b69)){this[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0x136'),_0x436b69[_0x24e5('0x62')]()),_0x71ac2c[_0x436b69]);}}return this['channel'][_0x24e5('0xa7')](util['format']('TildeASR\x20Result\x20%s',JSON[_0x24e5('0x6c')](_0x71ac2c)));}}return _0x33cb1d;};AGIVertices['prototype'][_0x24e5('0x137')]=function(_0x4b350c){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x138'),_0x4b350c[_0x24e5('0x36')]));return this['channel'][_0x24e5('0x139')](_0x4b350c[_0x24e5('0x13a')],_0x4b350c[_0x24e5('0x3b')],_0x4b350c['priority']);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x13b')]=function(_0x3f7781){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x13c'),_0x3f7781[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x3f7781[_0x24e5('0x13d')])){return this[_0x24e5('0x10')]['error'](_0x3f7781,_0x24e5('0x13e'));}try{var _0x321ad6=eval(_0x3f7781['condition'])?_0x24e5('0x13f'):_0x24e5('0x140');this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x141'),_0x3f7781[_0x24e5('0x13d')],_0x321ad6));return{'code':0xc8,'result':_0x321ad6};}catch(_0x57818c){return{'code':0xc8,'result':_0x24e5('0x140')};}};AGIVertices[_0x24e5('0x17')][_0x24e5('0x142')]=function(_0x445213){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x445213[_0x24e5('0x36')]));if(!this['isConfigured'](_0x445213[_0x24e5('0x143')])){return this['channel'][_0x24e5('0x2d')](_0x445213,_0x24e5('0x144'));}var _0x57dce7=this['getIntervals'][_0x24e5('0x68')](this,_0x445213[_0x24e5('0x143')]);if(!_0x57dce7){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x445213,_0x24e5('0x145'));}for(var _0x5f0605=0x0;_0x5f0605<_0x57dce7[_0x24e5('0x98')];_0x5f0605+=0x1){var _0x14f098=this[_0x24e5('0x10')]['getVariable'](util[_0x24e5('0x2a')](_0x24e5('0x146'),_0x57dce7[_0x5f0605]));if(_0x14f098[_0x24e5('0xa0')]===-0x1){return _0x14f098;}logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('IFTIME\x20%s\x20%s',_0x57dce7[_0x5f0605],_0x14f098[_0x24e5('0xa2')]));if(_0x14f098[_0x24e5('0xa2')]===_0x24e5('0x13f')){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x147'),_0x57dce7[_0x5f0605],_0x24e5('0x13f')));this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x147'),_0x57dce7[_0x5f0605],'true'));return{'code':0xc8,'result':'true'};}else{logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('IFTIME\x20%s\x20%s',_0x57dce7[_0x5f0605],_0x24e5('0x140')));this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0x147'),_0x57dce7[_0x5f0605],_0x24e5('0x140')));}}return{'code':0xc8,'result':'false'};};AGIVertices['prototype'][_0x24e5('0x148')]=function(_0x4c6f67){logger[_0x24e5('0x30')](util['format'](_0x24e5('0x149'),_0x4c6f67['label']));return this[_0x24e5('0x10')][_0x24e5('0x148')]();};AGIVertices[_0x24e5('0x17')]['ispeechasr']=function(_0x258043){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x14a'),_0x258043['label']));if(!this['isConfigured'](_0x258043['key'])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0x124'));}var _0x4e67f1=_0x24e5('0x125');var _0x38d2b9=util[_0x24e5('0x2a')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x2aa0b4=util['format'](_0x24e5('0x9a'),_0x38d2b9,_0x4e67f1);var _0x9d88f7=!![];if(_0x258043['beep']===_0x24e5('0x134')){_0x9d88f7=![];}var _0x3bf14e=this[_0x24e5('0x10')][_0x24e5('0x128')](_0x38d2b9,_0x4e67f1,_0x258043[_0x24e5('0x129')],_0x258043[_0x24e5('0x60')],undefined,_0x9d88f7);if(_0x3bf14e[_0x24e5('0xa0')]!==-0x1){this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0x14b'),_0x2aa0b4));var _0x178fe8=this['ispeechASR'][_0x24e5('0x68')](this,_0x258043,_0x2aa0b4);if(_0x178fe8){for(var _0xc44ab in _0x178fe8){if(_0x178fe8[_0x24e5('0x91')](_0xc44ab)){this[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0x14c'),_0xc44ab[_0x24e5('0x62')]()),_0x178fe8[_0xc44ab]);}}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')]('IspeechASR\x20Result\x20%s',JSON[_0x24e5('0x6c')](_0x178fe8)));}}return _0x3bf14e;};AGIVertices[_0x24e5('0x17')][_0x24e5('0x14d')]=function(_0x13b7f7){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x14e'),_0x13b7f7[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x13b7f7[_0x24e5('0x74')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')]('no\x20key\x20configured');}if(!this[_0x24e5('0x80')](_0x13b7f7[_0x24e5('0x55')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')]('no\x20text\x20configured');}this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0x14f'),_0x13b7f7['text']));var _0x5082c3=this['ispeechTTS'][_0x24e5('0x68')](this,_0x13b7f7);if(_0x5082c3){this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0x14b'),_0x5082c3));var _0x2cbce5=this['channel'][_0x24e5('0xf8')](_0x5082c3,_0x13b7f7['intKey']);try{fs[_0x24e5('0xf9')](_0x5082c3+_0x24e5('0xfa'));}catch(_0x6c694d){logger['error'](_0x6c694d);}return _0x2cbce5;}return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x13b7f7,_0x24e5('0x150'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x151')]=function(_0x238fe5){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x152'),_0x238fe5['label']));if(!this[_0x24e5('0x80')](_0x238fe5['findBy'])){return this['channel'][_0x24e5('0x2d')](_0x238fe5,_0x24e5('0x153'));}logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x24e5('0x39')],_0x238fe5[_0x24e5('0x154')]));var _0xbcfe69=this[_0x24e5('0x4f')][_0x24e5('0x68')](this,_0x238fe5[_0x24e5('0x154')]);if(_0xbcfe69){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this[_0x24e5('0x10')]['callerid'],_0x238fe5[_0x24e5('0x154')]));this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this[_0x24e5('0x10')]['callerid'],_0x238fe5[_0x24e5('0x154')]));return{'code':0xc8,'result':_0x24e5('0x156')};}else{logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x157'),this['channel'][_0x24e5('0x39')],_0x238fe5[_0x24e5('0x154')]));this['channel'][_0x24e5('0xa7')](util['format'](_0x24e5('0x157'),this['channel']['callerid'],_0x238fe5[_0x24e5('0x154')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x24e5('0x17')][_0x24e5('0x158')]=function(_0x257b8c){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x159'),_0x257b8c[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x257b8c[_0x24e5('0x154')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x257b8c,_0x24e5('0x153'));}logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x24e5('0x39')],_0x257b8c['findBy']));var _0x2844f7=this[_0x24e5('0x4e')]['sync'](this,_0x257b8c[_0x24e5('0x154')]);if(_0x2844f7){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this[_0x24e5('0x10')][_0x24e5('0x39')],_0x257b8c[_0x24e5('0x154')]));this['channel'][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this['channel'][_0x24e5('0x39')],_0x257b8c[_0x24e5('0x154')]));return{'code':0xc8,'result':'success'};}else{logger[_0x24e5('0x30')](util['format'](_0x24e5('0x157'),this[_0x24e5('0x10')][_0x24e5('0x39')],_0x257b8c['findBy']));this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0x157'),this['channel'][_0x24e5('0x39')],_0x257b8c[_0x24e5('0x154')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x24e5('0x17')]['math']=function(_0x4cd828){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x15a'),_0x4cd828['label']));if(!this['isConfigured'](_0x4cd828['operation'])){return this['channel'][_0x24e5('0x2d')](_0x4cd828,_0x24e5('0x15b'));}this['channel'][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x15c'),_0x4cd828[_0x24e5('0x15d')]));var _0x720404=eval(_0x4cd828['operation']);if(!this['isConfigured'](_0x4cd828[_0x24e5('0xd0')])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0xd1'));}var _0x195694=this['getVariable']['sync'](this,_0x4cd828[_0x24e5('0xd0')]);if(!_0x195694){return this['channel'][_0x24e5('0x2d')](_0x4cd828,_0x24e5('0x15e'));}if(_[_0x24e5('0x97')](_0x720404)){var _0x388019=this;_0x720404[_0x24e5('0xd3')](function(_0x4573c7,_0xe72b35){_0x388019[_0x24e5('0x10')][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0x15f'),_0x195694,_0xe72b35),_0x4573c7);});return this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format']('variable\x20%s[key]\x20set',_0x195694));}else{return this[_0x24e5('0x10')][_0x24e5('0xa3')](_0x195694,_0x720404);}};AGIVertices[_0x24e5('0x17')][_0x24e5('0xd')]=function(_0x347d36){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x347d36[_0x24e5('0x36')]));if(_0x347d36['retry']===0x0){return this[_0x24e5('0xa4')](_0x347d36);}_0x347d36['retry']-=0x1;if(!this[_0x24e5('0x80')](_0x347d36[_0x24e5('0x10a')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x347d36,_0x24e5('0x10b'));}var _0x5131a4=this['getSound']['sync'](this,_0x347d36[_0x24e5('0x10a')]);if(!_0x5131a4){return this[_0x24e5('0x10')]['error'](_0x347d36,'no\x20file\x20audio\x20found');}var _0x1b3a5b=this['channel'][_0x24e5('0x160')](_0x5131a4,_0x347d36['response'],_0x347d36['digit']);var _0x24c55d=_0x1b3a5b[_0x24e5('0xa0')];if(_0x1b3a5b['result']===-0x1){this['createSquareDetailsReport']['sync'](this,_0x347d36,'-1');return _0x1b3a5b;}else if(_0x1b3a5b[_0x24e5('0xa2')]===_0x24e5('0x60')){_0x1b3a5b['result']=_0x1b3a5b['result'][_0x24e5('0x98')]>0x0?_0x1b3a5b['result']:'t';}else if(_[_0x24e5('0x42')](_0x1b3a5b[_0x24e5('0xa0')])){_0x1b3a5b[_0x24e5('0xa0')]='#';_0x24c55d='#';}if(!this[_0x24e5('0x80')](_0x347d36[_0x24e5('0xd0')])){this[_0x24e5('0x10')]['noop'](_0x24e5('0xd1'));}else{var _0x36a069=this['getVariable']['sync'](this,_0x347d36[_0x24e5('0xd0')]);if(!_0x36a069){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x347d36,'no\x20variable\x20found');}this[_0x24e5('0x10')][_0x24e5('0xa3')](_0x36a069,_0x24c55d);}this['createSquareDetailsReport'][_0x24e5('0x68')](this,_0x347d36,_0x24c55d);return _0x1b3a5b;};AGIVertices['prototype'][_0x24e5('0xa7')]=function(_0x219cb3){logger[_0x24e5('0x30')](util['format'](_0x24e5('0x161'),_0x219cb3[_0x24e5('0x36')]));return this[_0x24e5('0x10')]['noop'](_0x219cb3['output']||_0x219cb3[_0x24e5('0x36')]);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x162')]=function(_0x20d576){logger['info'](util['format'](_0x24e5('0x163'),_0x20d576[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x20d576[_0x24e5('0x154')])){return this['channel']['error'](_0x20d576,_0x24e5('0x153'));}logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x164'),this[_0x24e5('0x10')][_0x24e5('0x39')],_0x20d576[_0x24e5('0x154')]));var _0x1e85ed=this[_0x24e5('0x165')][_0x24e5('0x68')](this,_0x20d576[_0x24e5('0x166')]);var _0x26e80b=this[_0x24e5('0x4c')]['sync'](this,_0x20d576['findBy'],_0x1e85ed);if(_0x26e80b){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this['channel']['callerid'],_0x20d576[_0x24e5('0x154')]));this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x24e5('0x10')][_0x24e5('0x39')],_0x20d576[_0x24e5('0x154')]));return{'code':0xc8,'result':_0x24e5('0x156')};}else{logger['info'](util[_0x24e5('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x24e5('0x10')]['callerid'],_0x20d576[_0x24e5('0x154')]));this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this['channel']['callerid'],_0x20d576[_0x24e5('0x154')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x24e5('0x17')][_0x24e5('0x167')]=function(_0x365d2a){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x168'),_0x365d2a[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x365d2a[_0x24e5('0x10a')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x365d2a,_0x24e5('0x10b'));}var _0x5d1600=this['getSound'][_0x24e5('0x68')](this,_0x365d2a['file_id']);if(!_0x5d1600){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x365d2a,'no\x20file\x20audio\x20found');}var _0x3d7bc7=this[_0x24e5('0x10')]['exec']('PLAYBACK',[_0x5d1600,_0x365d2a[_0x24e5('0xdd')]]);if(_0x3d7bc7[_0x24e5('0xa0')]===-0x1){return _0x3d7bc7;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x169'),_0x24e5('0x16a'),_0x5d1600));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x16b')]=function(_0x2a66b9){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x16c'),_0x2a66b9[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x2a66b9[_0x24e5('0x16d')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x2a66b9,_0x24e5('0x16e'));}var _0x581fda='';var _0x3c49a0=parseInt(_0x2a66b9[_0x24e5('0x16d')],0xa);if(isNaN(_0x3c49a0)){_0x581fda=_0x2a66b9[_0x24e5('0x16d')];}else{_0x581fda=this[_0x24e5('0x18')][_0x24e5('0x68')](this,_0x2a66b9[_0x24e5('0x16d')]);if(!_0x581fda){return this[_0x24e5('0x10')]['error'](_0x2a66b9,_0x24e5('0x16f'));}}var _0x5de1bb='';if(this[_0x24e5('0x80')](_0x2a66b9[_0x24e5('0x10a')])){var _0x1aef9f=this[_0x24e5('0x20')]['sync'](this,_0x2a66b9[_0x24e5('0x10a')]);if(_0x1aef9f){_0x5de1bb=_0x1aef9f;}}this['createSquareDetailsReport']['sync'](this,_0x2a66b9,_0x581fda);if(_0x2a66b9[_0x24e5('0xdd')][_0x24e5('0x170')]('x')<0x0){_0x2a66b9[_0x24e5('0xdd')]+='x';}if(_0x2a66b9[_0x24e5('0xdd')][_0x24e5('0x170')]('X')<0x0){_0x2a66b9[_0x24e5('0xdd')]+='X';}this[_0x24e5('0x10')][_0x24e5('0xa3')](_0x24e5('0x171'),_0x581fda?_0x581fda[_0x24e5('0x172')]():'');var _0x362524=this[_0x24e5('0x10')][_0x24e5('0xa9')](_0x24e5('0x173'),[_0x581fda,_0x2a66b9[_0x24e5('0xdd')],_0x2a66b9[_0x24e5('0x6b')],_0x5de1bb,_0x2a66b9['timeout'],_0x2a66b9[_0x24e5('0xb4')],_0x2a66b9[_0x24e5('0x174')],_0x2a66b9[_0x24e5('0x175')],'',_0x2a66b9[_0x24e5('0x176')]]);if(_0x362524[_0x24e5('0xa0')]===-0x1){return _0x362524;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x169'),_0x24e5('0x173'),_0x581fda));};AGIVertices[_0x24e5('0x17')]['record']=function(_0x13612c){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x13612c['label']));var _0x442dc8=_0x13612c[_0x24e5('0x177')]||_0x24e5('0x125');var _0x2516ad=util[_0x24e5('0x2a')](_0x24e5('0x178'),this[_0x24e5('0x10')][_0x24e5('0x40')],rs[_0x24e5('0x127')](0x5));var _0xa1335e=util[_0x24e5('0x2a')](_0x24e5('0x179'),FILES_PATH,_0x2516ad,_0x442dc8);var _0xa28d57=util[_0x24e5('0x2a')](_0x24e5('0x126'),FILES_PATH,_0x2516ad);this['createSquareRecording'][_0x24e5('0x68')](this,_0x13612c,_0x2516ad,_0xa1335e);this[_0x24e5('0x10')][_0x24e5('0xa3')]('RECORDING_SAVENAME',_0x2516ad);logger['info'](_0x24e5('0x17a'),_0xa28d57,_0x442dc8,_0x13612c[_0x24e5('0x17b')],_0x13612c['timeout']);return this[_0x24e5('0x10')]['recordFile'](_0xa28d57,_0x442dc8,_0x13612c['escape_digits'],_0x13612c['timeout'],undefined,!![]);};AGIVertices['prototype'][_0x24e5('0x17c')]=function(_0x175284){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x17d'),_0x175284[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x175284['url'])){return this[_0x24e5('0x10')][_0x24e5('0xa7')]('no\x20url\x20configured');}var _0x252a4b=this[_0x24e5('0x5e')][_0x24e5('0x68')](this,_0x175284);logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x17e'),util[_0x24e5('0x17f')](_0x252a4b,{'showHidden':![],'depth':null})));if(!this[_0x24e5('0x80')](_0x175284[_0x24e5('0xd0')])){return this['channel'][_0x24e5('0xa7')](_0x24e5('0x180'));}var _0x4d865d=this[_0x24e5('0x9d')]['sync'](this,_0x175284[_0x24e5('0xd0')]);if(!_0x4d865d){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x175284,_0x24e5('0x15e'));}this['channel'][_0x24e5('0xa3')](util[_0x24e5('0x2a')](_0x24e5('0x181'),_0x4d865d),_0x252a4b[_0x24e5('0x6f')]?_0x252a4b[_0x24e5('0x6f')]:'200');this['channel'][_0x24e5('0xa3')](util['format'](_0x24e5('0x182'),_0x4d865d),_0x252a4b[_0x24e5('0x6e')]?_0x252a4b[_0x24e5('0x6e')]:'OK');if(_0x252a4b['body']){try{this[_0x24e5('0x99')](_0x252a4b[_0x24e5('0x63')],_0x4d865d);}catch(_0x8b6e55){logger[_0x24e5('0x2d')](util[_0x24e5('0x2a')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x4d865d));}}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0xd5'),_0x4d865d));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x183')]=function(_0xacd04f){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x184'),_0xacd04f[_0x24e5('0x36')]));return this[_0x24e5('0x10')][_0x24e5('0x185')](_0xacd04f[_0x24e5('0x186')]['replace'](/\s+/g,''),_0xacd04f['escape_digits']);};AGIVertices['prototype']['saynumber']=function(_0x4a3fdf){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x187'),_0x4a3fdf[_0x24e5('0x36')]));return this[_0x24e5('0x10')][_0x24e5('0x188')](_0x4a3fdf[_0x24e5('0x189')]['replace'](/\s+/g,''),_0x4a3fdf[_0x24e5('0x17b')]);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x18a')]=function(_0x580aa2){logger[_0x24e5('0x30')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x580aa2['label']));return this[_0x24e5('0x10')][_0x24e5('0x18b')](_0x580aa2['text'],_0x580aa2[_0x24e5('0x17b')]);};AGIVertices['prototype'][_0x24e5('0x18c')]=function(_0x1efd0f){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x18d'),_0x1efd0f[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x1efd0f[_0x24e5('0x18e')])){return this[_0x24e5('0x10')]['noop'](_0x24e5('0x18f'));}var _0x565368=this[_0x24e5('0x24')][_0x24e5('0x68')](this,_0x1efd0f[_0x24e5('0x18e')]);if(!_0x565368||!_0x565368[_0x24e5('0x190')]){return this['channel'][_0x24e5('0x2d')](_0x1efd0f,_0x24e5('0x191'));}var _0x42f77f={'from':util[_0x24e5('0x2a')](_0x24e5('0x192'),_0x565368[_0x24e5('0x15')],_0x565368['email']||_0x565368['Smtp'][_0x24e5('0x193')]),'to':_0x1efd0f['to']||'','cc':_0x1efd0f['cc']||'','bcc':_0x1efd0f[_0x24e5('0x194')]||'','subject':_0x1efd0f[_0x24e5('0x195')],'html':_0x1efd0f[_0x24e5('0x55')],'text':_0x1efd0f['text']};var _0x8e4442={'tls':{'rejectUnauthorized':![]}};if(_0x565368[_0x24e5('0x190')][_0x24e5('0x196')]){_0x8e4442[_0x24e5('0x196')]=_0x565368[_0x24e5('0x190')][_0x24e5('0x196')];}else{_0x8e4442['host']=_0x565368[_0x24e5('0x190')][_0x24e5('0x197')];_0x8e4442[_0x24e5('0x198')]=_0x565368[_0x24e5('0x190')]['port'];_0x8e4442[_0x24e5('0x199')]=_0x565368[_0x24e5('0x190')]['secure'];}if(_0x565368[_0x24e5('0x190')][_0x24e5('0x19a')]){_0x8e4442['auth']={'user':_0x565368['Smtp'][_0x24e5('0x193')],'pass':_0x565368[_0x24e5('0x190')]['pass']};}if(this[_0x24e5('0x80')](_0x1efd0f[_0x24e5('0x19b')])){}logger[_0x24e5('0xd7')](_0x24e5('0x19c'),JSON['stringify'](_0x42f77f));this[_0x24e5('0x35')]['sync'](this,_0x1efd0f,_0x1efd0f[_0x24e5('0x18e')]);this['channel'][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x19d'),_0x565368[_0x24e5('0x15')]));this[_0x24e5('0x25')][_0x24e5('0x68')](this,_0x8e4442,_0x42f77f);return this[_0x24e5('0x10')]['noop'](_0x24e5('0x19e'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x19f')]=function(_0x3647ef){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x1a0'),_0x3647ef[_0x24e5('0x36')]));return this['channel']['noop'](_0x24e5('0x1a1'));};AGIVertices[_0x24e5('0x17')]['sendSMS']=function(_0x40d2bd){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x40d2bd[_0x24e5('0x36')]));if(!this[_0x24e5('0x80')](_0x40d2bd[_0x24e5('0x1a2')])){return this[_0x24e5('0x10')]['noop']('no\x20sms\x20account\x20configured');}var _0x320b67=this[_0x24e5('0x32')][_0x24e5('0x68')](this,_0x40d2bd[_0x24e5('0x1a2')]);if(!_0x320b67){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x40d2bd,_0x24e5('0x1a3'));}var _0x504e37={'body':_0x40d2bd['sms_text'],'phone':_0x40d2bd['to']||'','SmsAccountId':_0x320b67['id']};logger[_0x24e5('0xd7')](_0x24e5('0x1a4'),JSON['stringify'](_0x504e37));this[_0x24e5('0x35')][_0x24e5('0x68')](this,_0x40d2bd,_0x40d2bd[_0x24e5('0x1a2')]);this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0x1a5'),_0x320b67[_0x24e5('0x15')]));this['createSmsMessage'][_0x24e5('0x68')](this,_0x504e37);return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x1a6'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1a7')]=function(_0x3b9417){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x1a8'),_0x3b9417[_0x24e5('0x36')]));if(!this['isConfigured'](_0x3b9417[_0x24e5('0xd0')])){return this[_0x24e5('0x10')]['error'](_0x3b9417,_0x24e5('0x1a9'));}var _0x238762=this[_0x24e5('0x9d')][_0x24e5('0x68')](this,_0x3b9417['variable_id']);if(!_0x238762){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x3b9417,_0x24e5('0x15e'));}return this[_0x24e5('0x10')]['setVariable'](_0x238762,_0x3b9417[_0x24e5('0x1aa')]);};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1ab')]=function(_0x1f97e6){logger[_0x24e5('0x30')](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x1f97e6[_0x24e5('0x36')]));this[_0x24e5('0x10')][_0x24e5('0xa7')]('START\x20CALLY\x20SQUARE');if(_0x1f97e6[_0x24e5('0xb8')]===_0x24e5('0x1ac')){this['channel'][_0x24e5('0xa7')](_0x24e5('0x1ad'));return this[_0x24e5('0x10')][_0x24e5('0xb8')]();}return this[_0x24e5('0x10')]['noop']('Skipped\x20Answer');};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1ae')]=function(_0x226806){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x226806['label']));if(!this[_0x24e5('0x80')](_0x226806['project_id'])){return this['channel'][_0x24e5('0x2d')](_0x226806,_0x24e5('0x1af'));}var _0x4fea22=this[_0x24e5('0x1b0')][_0x24e5('0x68')](this,_0x226806[_0x24e5('0x1b1')]);if(!this[_0x24e5('0x80')](_0x4fea22)){return this['channel'][_0x24e5('0x2d')](_0x226806,util[_0x24e5('0x2a')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x226806['project_id']));}if(_0x4fea22===this[_0x24e5('0x10')][_0x24e5('0x38')]){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x226806,_0x24e5('0x1b2'));}this[_0x24e5('0x35')][_0x24e5('0x68')](this,_0x226806,_0x4fea22);var _0x3a24db=this[_0x24e5('0x10')][_0x24e5('0xa9')](_0x24e5('0x1b3'),util[_0x24e5('0x2a')](_0x24e5('0x1b4'),config[_0x24e5('0xb4')][_0x24e5('0x197')]||_0x24e5('0x1b5'),_0x4fea22,this['channel'][_0x24e5('0x38')]));if(_0x3a24db[_0x24e5('0xa0')]===-0x1){return _0x3a24db;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x169'),_0x24e5('0x1b3'),_0x4fea22));};AGIVertices['prototype'][_0x24e5('0x1b6')]=function(_0x13d9e6){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x1b7'),_0x13d9e6['label']));var _0x18b7e8=this[_0x24e5('0x51')][_0x24e5('0x68')](this,_0x13d9e6['command']);this['createSquareDetailsReport']['sync'](this,_0x13d9e6,_0x13d9e6['command']);if(this[_0x24e5('0x80')](_0x13d9e6[_0x24e5('0xd0')])){var _0x28b40e=this['getVariable'][_0x24e5('0x68')](this,_0x13d9e6[_0x24e5('0xd0')]);if(_0x28b40e){this['channel'][_0x24e5('0xa3')](_0x28b40e,_0x18b7e8);return this['channel'][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x1b8'),_0x13d9e6[_0x24e5('0xb6')],_0x28b40e));}}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format'](_0x24e5('0x1b9'),_0x13d9e6['command']));};AGIVertices['prototype'][_0x24e5('0x1ba')]=function(_0x4d0870){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x1bb'),_0x4d0870[_0x24e5('0x36')]));_0x4d0870[_0x24e5('0x55')]=_0x4d0870['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x24e5('0x80')](_0x4d0870['apiKey'])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0x1bc'));}if(!this['isConfigured'](_0x4d0870[_0x24e5('0x55')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')]('no\x20text\x20configured');}this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format']('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x4d0870['text']));var _0x3d068a=this[_0x24e5('0x54')][_0x24e5('0x68')](this,_0x4d0870);if(_0x3d068a){this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x3d068a));var _0x313e6b=this['channel'][_0x24e5('0xf8')](_0x3d068a);try{fs[_0x24e5('0xf9')](_0x3d068a+_0x24e5('0xfa'));}catch(_0x128aba){logger[_0x24e5('0x2d')](_0x128aba);}return _0x313e6b;}return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x4d0870,_0x24e5('0x1bd'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1be')]=function(_0x335bca){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x335bca[_0x24e5('0x36')]));_0x335bca[_0x24e5('0x55')]=_0x335bca[_0x24e5('0x55')][_0x24e5('0x53')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x24e5('0x80')](_0x335bca[_0x24e5('0x55')])){return this[_0x24e5('0x10')][_0x24e5('0xa7')](_0x24e5('0xa8'));}this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x1bf'),_0x335bca['text']));var _0x4b918e=this['googleTTS'][_0x24e5('0x68')](this,_0x335bca);if(_0x4b918e){this[_0x24e5('0x10')]['noop'](util[_0x24e5('0x2a')](_0x24e5('0x1c0'),_0x4b918e));var _0x12fc40=this['channel'][_0x24e5('0xf8')](_0x4b918e);try{fs[_0x24e5('0xf9')](_0x4b918e+_0x24e5('0xfa'));}catch(_0x3f9d91){logger[_0x24e5('0x2d')](_0x3f9d91);}return _0x12fc40;}return this['channel'][_0x24e5('0x2d')](_0x335bca,_0x24e5('0x1c1'));};AGIVertices[_0x24e5('0x17')][_0x24e5('0x1c2')]=function(_0x188c1a){logger['info'](util[_0x24e5('0x2a')](_0x24e5('0x1c3'),_0x188c1a[_0x24e5('0x36')]));if(!this['isConfigured'](_0x188c1a[_0x24e5('0x154')])){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x188c1a,_0x24e5('0x153'));}logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x164'),this[_0x24e5('0x10')][_0x24e5('0x39')],_0x188c1a[_0x24e5('0x154')]));var _0x49e7a0=this['agentUnpause'][_0x24e5('0x68')](this,_0x188c1a[_0x24e5('0x154')]);if(_0x49e7a0){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x155'),this[_0x24e5('0x10')][_0x24e5('0x39')],_0x188c1a['findBy']));this[_0x24e5('0x10')][_0x24e5('0xa7')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x24e5('0x10')]['callerid'],_0x188c1a['findBy']));return{'code':0xc8,'result':_0x24e5('0x156')};}else{logger[_0x24e5('0x30')](util['format'](_0x24e5('0x157'),this['channel']['callerid'],_0x188c1a[_0x24e5('0x154')]));this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x157'),this['channel']['callerid'],_0x188c1a['findBy']));return{'code':0xc8,'result':_0x24e5('0x1c4')};}};AGIVertices['prototype']['voicemail']=function(_0x19418c){logger[_0x24e5('0x30')](util['format'](_0x24e5('0x1c5'),_0x19418c[_0x24e5('0x36')]));var _0x3236d3=this['channel'][_0x24e5('0xa9')](_0x24e5('0x1c6'),[_0x19418c[_0x24e5('0x1c7')],_0x19418c['options']]);if(_0x3236d3[_0x24e5('0xa0')]===-0x1){return _0x3236d3;}return this[_0x24e5('0x10')][_0x24e5('0xa7')](util[_0x24e5('0x2a')](_0x24e5('0x169'),_0x24e5('0x1c6'),_0x19418c[_0x24e5('0x1c7')]));};AGIVertices[_0x24e5('0x17')]['vswitch']=function(_0x3e70c8){logger[_0x24e5('0x30')](util[_0x24e5('0x2a')](_0x24e5('0x1c8'),_0x3e70c8['label']));if(!this[_0x24e5('0x80')](_0x3e70c8['variable_id'])){return this['channel']['error'](_0x3e70c8,_0x24e5('0x1a9'));}var _0x30594c=this['getVariable'][_0x24e5('0x68')](this,_0x3e70c8[_0x24e5('0xd0')]);if(!_0x30594c){return this[_0x24e5('0x10')][_0x24e5('0x2d')](_0x3e70c8,'no\x20variable\x20found');}var _0x18bdb0=this[_0x24e5('0x10')][_0x24e5('0x9d')](_0x30594c);return{'code':0xc8,'result':_0x18bdb0[_0x24e5('0xa2')]?_0x18bdb0[_0x24e5('0xa2')]:'-'};};String[_0x24e5('0x17')][_0x24e5('0x9c')]=function(_0x163823,_0x193d9e){return this['split'](_0x163823)[_0x24e5('0x1c9')](_0x193d9e);};module['exports']=AGIVertices;
\ No newline at end of file
index 8e257f9..b714f3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb754=['attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','channels','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','info','acwTimeout','timer','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','[%s][UPDATE][ERRORS:%s]','error','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','catch','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','agentringnoanswer'];(function(_0x3e8828,_0x2f67bc){var _0xb91cc9=function(_0x404a2b){while(--_0x404a2b){_0x3e8828['push'](_0x3e8828['shift']());}};_0xb91cc9(++_0x2f67bc);}(_0xb754,0xed));var _0x4b75=function(_0x625a73,_0x50ae08){_0x625a73=_0x625a73-0x0;var _0x3eceb5=_0xb754[_0x625a73];return _0x3eceb5;};'use strict';var util=require(_0x4b75('0x0'));var _=require('lodash');var moment=require(_0x4b75('0x1'));var ami=require('../ami');var logger=require(_0x4b75('0x2'))(_0x4b75('0x3'));var RpcUser=require(_0x4b75('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x44084b){this[_0x4b75('0x5')]=_0x44084b[_0x4b75('0x5')];this[_0x4b75('0x6')]=_0x44084b[_0x4b75('0x6')];this[_0x4b75('0x7')]=_0x44084b[_0x4b75('0x7')];this['channels']={};ami['on']('agentconnect',this[_0x4b75('0x8')][_0x4b75('0x9')](this));ami['on'](_0x4b75('0xa'),this['syncHangupRequest'][_0x4b75('0x9')](this));ami['on']('hangup',this['syncHangup'][_0x4b75('0x9')](this));ami['on'](_0x4b75('0xb'),this['syncAgentRingNoAnswer'][_0x4b75('0x9')](this));ami['on'](_0x4b75('0xc'),this[_0x4b75('0xd')]['bind'](this));ami['on'](_0x4b75('0xe'),this['syncBlindTransfer']['bind'](this));ami['on'](_0x4b75('0xf'),this[_0x4b75('0x10')][_0x4b75('0x9')](this));}function getDiff(_0x21cd71){var _0x481eb6=moment()[_0x4b75('0x11')](0x0);var _0x337db0=moment(_0x21cd71)['milliseconds'](0x0);return _0x481eb6[_0x4b75('0x12')](_0x337db0,_0x4b75('0x13'));}Acw[_0x4b75('0x14')][_0x4b75('0x15')]=function(_0x1b03c9){try{var _0x599c82=this;var _0x5cef11=this[_0x4b75('0x16')][_0x1b03c9][_0x4b75('0x17')];var _0x4e1f01=this['channels'][_0x1b03c9][_0x4b75('0x18')];var _0x567608=this[_0x4b75('0x5')][_0x4e1f01];var _0x41d1d2=![];var _0x49ace1=_0x4b75('0x19');if(_0x567608['mandatoryDisposition']){if(_0x567608[_0x4b75('0x1a')][_0x4b75('0x1b')]){_0x41d1d2=!![];_0x49ace1=_0x567608[_0x4b75('0x1a')][_0x4b75('0x1b')];}}ami[_0x4b75('0x1c')]({'action':_0x4b75('0x1d'),'interface':_0x5cef11,'paused':!![],'reason':_0x49ace1})[_0x4b75('0x1e')](function(_0x4b49fc){if(_0x599c82[_0x4b75('0x6')][_0x5cef11]){return RpcUser[_0x4b75('0x1f')](_0x599c82[_0x4b75('0x6')][_0x5cef11]['id'])['then'](function(_0xf01a24){if(_0xf01a24&&!_0xf01a24['voicePause']){logger['info'](_0x4b75('0x20'),_0x1b03c9,_0x5cef11,_0x4e1f01);var _0x318723=_0x599c82['channels'][_0x1b03c9][_0x4b75('0x21')]&&_0x599c82[_0x4b75('0x16')][_0x1b03c9]['destlinkedid']?_0x599c82[_0x4b75('0x16')][_0x1b03c9][_0x4b75('0x22')]:_0x1b03c9;return RpcUser['savePause'](_0x599c82[_0x4b75('0x6')][_0x5cef11],_0x49ace1,_0x318723)[_0x4b75('0x1e')](function(_0x4142ad){if(!_0x41d1d2){_0x599c82[_0x4b75('0x7')][_0x5cef11]={};logger[_0x4b75('0x23')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1b03c9,_0x599c82[_0x4b75('0x5')][_0x4e1f01][_0x4b75('0x24')],_0x5cef11,_0x4e1f01);_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x25')]=setTimeout(_0x599c82[_0x4b75('0x26')][_0x4b75('0x9')](_0x599c82,_0x5cef11),_0x599c82[_0x4b75('0x5')][_0x4e1f01]['acwTimeout']*0x3e8);_0x599c82['timers'][_0x5cef11][_0x4b75('0x27')]=moment()['format'](_0x4b75('0x28'));_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x29')]=_0x1b03c9;_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x18')]=_0x4e1f01;_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x2a')]=function(){var _0x101b7f=getDiff(_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x27')]);clearTimeout(_0x599c82['timers'][_0x5cef11]['timer']);_0x599c82[_0x4b75('0x7')][_0x5cef11]['timer']=![];RpcVoiceAgentReport['update']({'acwtime':_0x101b7f},_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x29')],_0x5cef11)['then'](function(_0x2ba780){logger[_0x4b75('0x23')](_0x4b75('0x2b'),_0x1b03c9,_0x101b7f,_0x2ba780);})['catch'](function(_0x2c1e9){logger['error'](_0x4b75('0x2c'),_0x1b03c9,_0x2c1e9);});delete _0x599c82[_0x4b75('0x7')][_0x5cef11];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x1b03c9,_0x5cef11,_0x4e1f01);}});}})['catch'](function(_0x3df97b){logger[_0x4b75('0x2d')](_0x4b75('0x2e'),_0x1b03c9,_0x599c82[_0x4b75('0x5')][_0x4e1f01][_0x4b75('0x24')],_0x5cef11,_0x4e1f01);})[_0x4b75('0x2f')](function(){delete _0x599c82[_0x4b75('0x16')][_0x1b03c9];});}catch(_0x299707){logger[_0x4b75('0x2d')](_0x4b75('0x30'),_0x299707[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['stopAcw']=function(_0xf94929){try{var _0x3abde3=this;if(_0x3abde3[_0x4b75('0x7')][_0xf94929]){_0x3abde3['timers'][_0xf94929][_0x4b75('0x25')]=![];var _0x501840=_0x3abde3[_0x4b75('0x7')][_0xf94929][_0x4b75('0x29')];var _0x109353=_0x3abde3[_0x4b75('0x7')][_0xf94929][_0x4b75('0x18')];var _0x1b22ef=_0x3abde3[_0x4b75('0x5')][_0x109353][_0x4b75('0x24')];logger[_0x4b75('0x23')](_0x4b75('0x32'),_0x501840,_0xf94929);RpcUser[_0x4b75('0x33')](this['agents'][_0xf94929]);RpcVoiceAgentReport[_0x4b75('0x34')]({'acwtime':_0x1b22ef,'agentacw':!![]},_0x501840,_0xf94929)[_0x4b75('0x1e')](function(_0x9fb6ec){logger[_0x4b75('0x23')]('[%s][UPDATE][ACWTIME:%s]',_0x501840,_0x1b22ef,_0x9fb6ec);})[_0x4b75('0x35')](function(_0x58515d){logger[_0x4b75('0x2d')](_0x4b75('0x2c'),_0x501840,_0x58515d);});}else{logger[_0x4b75('0x2d')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0xf94929);if(_0x3abde3['timers']){logger[_0x4b75('0x23')](_0x4b75('0x36'),JSON[_0x4b75('0x37')](_0x3abde3['timers']));}}}catch(_0x3dfe2b){logger[_0x4b75('0x2d')](_0x4b75('0x38'),_0x3dfe2b[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['syncAgentConnect']=function(_0x50b948){try{if(this[_0x4b75('0x5')][_0x50b948['queue']]&&(this[_0x4b75('0x5')][_0x50b948[_0x4b75('0x18')]][_0x4b75('0x3')]||this['voiceQueues'][_0x50b948[_0x4b75('0x18')]]['mandatoryDisposition'])){if(this[_0x4b75('0x6')][_0x50b948[_0x4b75('0x17')]]){this[_0x4b75('0x16')][_0x50b948[_0x4b75('0x29')]]={'queue':_0x50b948['queue'],'interface':_0x50b948[_0x4b75('0x17')],'destlinkedid':_0x50b948[_0x4b75('0x22')]};}}}catch(_0x4e10e9){logger[_0x4b75('0x2d')](_0x4b75('0x39'),_0x4e10e9[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')][_0x4b75('0x10')]=function(_0x362fbe){try{if(this[_0x4b75('0x5')][_0x362fbe['queue']]&&(this['voiceQueues'][_0x362fbe[_0x4b75('0x18')]][_0x4b75('0x3')]||this[_0x4b75('0x5')][_0x362fbe[_0x4b75('0x18')]]['mandatoryDisposition'])){if(this[_0x4b75('0x6')][_0x362fbe[_0x4b75('0x17')]]){this[_0x4b75('0x16')][_0x362fbe[_0x4b75('0x29')]]={'queue':_0x362fbe[_0x4b75('0x18')],'interface':_0x362fbe[_0x4b75('0x17')]};}}}catch(_0x3d43bd){logger[_0x4b75('0x2d')](_0x4b75('0x3a'),_0x3d43bd[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')][_0x4b75('0x3b')]=function(_0x48ff58){try{if(this[_0x4b75('0x16')][_0x48ff58[_0x4b75('0x29')]]&&_[_0x4b75('0x3c')](this['channels'][_0x48ff58[_0x4b75('0x29')]]['attended'])){logger[_0x4b75('0x23')]('[%s][HANGUP:UNIQUEID]',_0x48ff58[_0x4b75('0x29')]);this[_0x4b75('0x15')](_0x48ff58[_0x4b75('0x29')]);}else if(this[_0x4b75('0x16')][_0x48ff58[_0x4b75('0x3d')]]&&_[_0x4b75('0x3c')](this[_0x4b75('0x16')][_0x48ff58['linkedid']][_0x4b75('0x21')])){logger[_0x4b75('0x23')](_0x4b75('0x3e'),_0x48ff58[_0x4b75('0x3d')]);this[_0x4b75('0x15')](_0x48ff58['linkedid']);}}catch(_0x200343){logger[_0x4b75('0x2d')](_0x4b75('0x3f'),_0x200343[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['syncHangup']=function(_0x2e97ad){try{if(this[_0x4b75('0x16')][_0x2e97ad[_0x4b75('0x29')]]&&this['channels'][_0x2e97ad[_0x4b75('0x29')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x2e97ad[_0x4b75('0x29')]);this['startAcw'](_0x2e97ad[_0x4b75('0x29')]);}else if(this['channels'][_0x2e97ad[_0x4b75('0x3d')]]&&this[_0x4b75('0x16')][_0x2e97ad[_0x4b75('0x3d')]][_0x4b75('0x21')]){logger[_0x4b75('0x23')](_0x4b75('0x40'),_0x2e97ad[_0x4b75('0x3d')]);this[_0x4b75('0x15')](_0x2e97ad[_0x4b75('0x3d')]);}}catch(_0xdb0078){logger[_0x4b75('0x2d')](_0x4b75('0x41'),_0xdb0078['message']);}};Acw[_0x4b75('0x14')][_0x4b75('0xd')]=function(_0x570616){try{if(!_[_0x4b75('0x42')](this[_0x4b75('0x16')][_0x570616[_0x4b75('0x43')]])){this['startAcw'](_0x570616['transfereeuniqueid']);if(this[_0x4b75('0x16')][_0x570616[_0x4b75('0x44')]]){this[_0x4b75('0x16')][_0x570616['secondtransfereruniqueid']][_0x4b75('0x21')]=!![];this[_0x4b75('0x16')][_0x570616['transfertargetuniqueid']]=this[_0x4b75('0x16')][_0x570616[_0x4b75('0x44')]];delete this[_0x4b75('0x16')][_0x570616[_0x4b75('0x44')]];}}else if(!_[_0x4b75('0x42')](this[_0x4b75('0x16')][_0x570616[_0x4b75('0x45')]])){this[_0x4b75('0x15')](_0x570616[_0x4b75('0x45')]);if(this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]]){this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]][_0x4b75('0x21')]=!![];this['channels'][_0x570616['transfereeuniqueid']]=this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]];delete this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]];}}}catch(_0x3797d5){logger[_0x4b75('0x2d')](_0x4b75('0x47'),_0x3797d5[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['syncBlindTransfer']=function(_0x2d1b3c){try{if(this['channels'][_0x2d1b3c['transfereruniqueid']]){logger[_0x4b75('0x23')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x2d1b3c[_0x4b75('0x48')]));this[_0x4b75('0x15')](_0x2d1b3c[_0x4b75('0x48')]);}else if(this[_0x4b75('0x16')][_0x2d1b3c[_0x4b75('0x49')]]){logger['info'](_0x4b75('0x4a'),JSON[_0x4b75('0x37')](_0x2d1b3c['transfererlinkedid']));this[_0x4b75('0x15')](_0x2d1b3c['transfererlinkedid']);}}catch(_0x5f00e5){logger[_0x4b75('0x2d')](_0x4b75('0x4b'),_0x5f00e5['message']);}};Acw[_0x4b75('0x14')][_0x4b75('0x4c')]=function(_0x2d8e6d){try{if(this[_0x4b75('0x5')][_0x2d8e6d['queue']]&&this[_0x4b75('0x5')][_0x2d8e6d['queue']][_0x4b75('0x4d')]==='all'){if(this['agents'][_0x2d8e6d['interface']]){logger[_0x4b75('0x23')](_0x4b75('0x4e'),_0x2d8e6d[_0x4b75('0x29')],_0x2d8e6d[_0x4b75('0x17')],_0x2d8e6d['queue']);return RpcUser[_0x4b75('0x4f')](this[_0x4b75('0x6')][_0x2d8e6d[_0x4b75('0x17')]],_0x4b75('0x50'),_0x2d8e6d['uniqueid']);}}}catch(_0x356d65){logger[_0x4b75('0x2d')](_0x4b75('0x51'),_0x356d65['message']);}};module[_0x4b75('0x52')]=Acw;
\ No newline at end of file
+var _0x964a=['then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','lastPauseAt','uniqueid','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','queue','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','destlinkedid','[ACW][syncAgentConnect]\x20%s','isUndefined','linkedid','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','startAcw','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','transfertargetuniqueid','secondtransfereruniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','lodash','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause'];(function(_0x590591,_0x3ee7b3){var _0x26f97a=function(_0x8c43f2){while(--_0x8c43f2){_0x590591['push'](_0x590591['shift']());}};_0x26f97a(++_0x3ee7b3);}(_0x964a,0x12b));var _0xa964=function(_0x35ced7,_0x284c28){_0x35ced7=_0x35ced7-0x0;var _0x2e3bc3=_0x964a[_0x35ced7];return _0x2e3bc3;};'use strict';var util=require(_0xa964('0x0'));var _=require(_0xa964('0x1'));var moment=require('moment');var ami=require(_0xa964('0x2'));var logger=require(_0xa964('0x3'))(_0xa964('0x4'));var RpcUser=require(_0xa964('0x5'));var RpcVoiceAgentReport=require(_0xa964('0x6'));function Acw(_0x400dbf){this[_0xa964('0x7')]=_0x400dbf[_0xa964('0x7')];this[_0xa964('0x8')]=_0x400dbf[_0xa964('0x8')];this[_0xa964('0x9')]=_0x400dbf[_0xa964('0x9')];this[_0xa964('0xa')]={};ami['on']('agentconnect',this[_0xa964('0xb')][_0xa964('0xc')](this));ami['on'](_0xa964('0xd'),this[_0xa964('0xe')][_0xa964('0xc')](this));ami['on']('hangup',this[_0xa964('0xf')][_0xa964('0xc')](this));ami['on'](_0xa964('0x10'),this[_0xa964('0x11')][_0xa964('0xc')](this));ami['on']('attendedtransfer',this[_0xa964('0x12')][_0xa964('0xc')](this));ami['on'](_0xa964('0x13'),this[_0xa964('0x14')][_0xa964('0xc')](this));ami['on'](_0xa964('0x15'),this[_0xa964('0x16')][_0xa964('0xc')](this));}function getDiff(_0x4c4a8b){var _0x5b3e19=moment()['milliseconds'](0x0);var _0x5657b1=moment(_0x4c4a8b)[_0xa964('0x17')](0x0);return _0x5b3e19[_0xa964('0x18')](_0x5657b1,_0xa964('0x19'));}Acw[_0xa964('0x1a')]['startAcw']=function(_0x1f4775){try{var _0x23d6ca=this;var _0x249635=this[_0xa964('0xa')][_0x1f4775][_0xa964('0x1b')];var _0x5dc748=this[_0xa964('0xa')][_0x1f4775]['queue'];var _0x56388b=this[_0xa964('0x7')][_0x5dc748];var _0x57ceb2=![];var _0x4397b5='ACW';if(_0x56388b[_0xa964('0x1c')]){if(_0x56388b[_0xa964('0x1d')]['name']){_0x57ceb2=!![];_0x4397b5=_0x56388b[_0xa964('0x1d')][_0xa964('0x1e')];}}ami[_0xa964('0x1f')]({'action':_0xa964('0x20'),'interface':_0x249635,'paused':!![],'reason':_0x4397b5})[_0xa964('0x21')](function(_0x40e558){if(_0x23d6ca[_0xa964('0x8')][_0x249635]){return RpcUser[_0xa964('0x22')](_0x23d6ca['agents'][_0x249635]['id'])[_0xa964('0x21')](function(_0x55cb36){if(_0x55cb36&&!_0x55cb36[_0xa964('0x23')]){logger[_0xa964('0x24')](_0xa964('0x25'),_0x1f4775,_0x249635,_0x5dc748);var _0x54ebbb=_0x23d6ca[_0xa964('0xa')][_0x1f4775][_0xa964('0x26')]&&_0x23d6ca['channels'][_0x1f4775]['destlinkedid']?_0x23d6ca[_0xa964('0xa')][_0x1f4775]['destlinkedid']:_0x1f4775;return RpcUser[_0xa964('0x27')](_0x23d6ca[_0xa964('0x8')][_0x249635],_0x4397b5,_0x54ebbb)['then'](function(_0x255d56){if(!_0x57ceb2){_0x23d6ca[_0xa964('0x9')][_0x249635]={};logger[_0xa964('0x24')](_0xa964('0x28'),_0x1f4775,_0x23d6ca['voiceQueues'][_0x5dc748]['acwTimeout'],_0x249635,_0x5dc748);_0x23d6ca['timers'][_0x249635][_0xa964('0x29')]=setTimeout(_0x23d6ca[_0xa964('0x2a')]['bind'](_0x23d6ca,_0x249635),_0x23d6ca[_0xa964('0x7')][_0x5dc748][_0xa964('0x2b')]*0x3e8);_0x23d6ca[_0xa964('0x9')][_0x249635][_0xa964('0x2c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x23d6ca[_0xa964('0x9')][_0x249635][_0xa964('0x2d')]=_0x1f4775;_0x23d6ca[_0xa964('0x9')][_0x249635]['queue']=_0x5dc748;_0x23d6ca[_0xa964('0x9')][_0x249635][_0xa964('0x2e')]=function(){var _0x1e343b=getDiff(_0x23d6ca[_0xa964('0x9')][_0x249635]['lastPauseAt']);clearTimeout(_0x23d6ca['timers'][_0x249635]['timer']);_0x23d6ca['timers'][_0x249635][_0xa964('0x29')]=![];RpcVoiceAgentReport[_0xa964('0x2f')]({'acwtime':_0x1e343b},_0x23d6ca[_0xa964('0x9')][_0x249635][_0xa964('0x2d')],_0x249635)[_0xa964('0x21')](function(_0x4f0069){logger[_0xa964('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x1f4775,_0x1e343b,_0x4f0069);})[_0xa964('0x30')](function(_0x11fa48){logger[_0xa964('0x31')](_0xa964('0x32'),_0x1f4775,_0x11fa48);});delete _0x23d6ca[_0xa964('0x9')][_0x249635];};}});}else{logger[_0xa964('0x24')](_0xa964('0x33'),_0x1f4775,_0x249635,_0x5dc748);}});}})['catch'](function(_0x4dee79){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1f4775,_0x23d6ca[_0xa964('0x7')][_0x5dc748][_0xa964('0x2b')],_0x249635,_0x5dc748);})[_0xa964('0x34')](function(){delete _0x23d6ca[_0xa964('0xa')][_0x1f4775];});}catch(_0x2866e6){logger[_0xa964('0x31')](_0xa964('0x35'),_0x2866e6[_0xa964('0x36')]);}};Acw[_0xa964('0x1a')][_0xa964('0x2a')]=function(_0x24683f){try{var _0x54be33=this;if(_0x54be33[_0xa964('0x9')][_0x24683f]){_0x54be33[_0xa964('0x9')][_0x24683f]['timer']=![];var _0x344e26=_0x54be33[_0xa964('0x9')][_0x24683f][_0xa964('0x2d')];var _0x157e8d=_0x54be33[_0xa964('0x9')][_0x24683f][_0xa964('0x37')];var _0x5dcb80=_0x54be33[_0xa964('0x7')][_0x157e8d][_0xa964('0x2b')];logger[_0xa964('0x24')](_0xa964('0x38'),_0x344e26,_0x24683f);RpcUser[_0xa964('0x39')](this['agents'][_0x24683f]);RpcVoiceAgentReport[_0xa964('0x2f')]({'acwtime':_0x5dcb80,'agentacw':!![]},_0x344e26,_0x24683f)['then'](function(_0xdea04f){logger[_0xa964('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x344e26,_0x5dcb80,_0xdea04f);})[_0xa964('0x30')](function(_0x440a6b){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x344e26,_0x440a6b);});}else{logger[_0xa964('0x31')](_0xa964('0x3a'),_0x24683f);if(_0x54be33[_0xa964('0x9')]){logger[_0xa964('0x24')](_0xa964('0x3b'),JSON[_0xa964('0x3c')](_0x54be33[_0xa964('0x9')]));}}}catch(_0x5288a1){logger['error'](_0xa964('0x3d'),_0x5288a1[_0xa964('0x36')]);}};Acw[_0xa964('0x1a')]['syncAgentConnect']=function(_0x5f468b){try{if(this[_0xa964('0x7')][_0x5f468b[_0xa964('0x37')]]&&(this[_0xa964('0x7')][_0x5f468b[_0xa964('0x37')]][_0xa964('0x4')]||this['voiceQueues'][_0x5f468b[_0xa964('0x37')]][_0xa964('0x1c')])){if(this['agents'][_0x5f468b[_0xa964('0x1b')]]){this['channels'][_0x5f468b[_0xa964('0x2d')]]={'queue':_0x5f468b[_0xa964('0x37')],'interface':_0x5f468b['interface'],'destlinkedid':_0x5f468b[_0xa964('0x3e')]};}}}catch(_0x4c6759){logger[_0xa964('0x31')](_0xa964('0x3f'),_0x4c6759[_0xa964('0x36')]);}};Acw['prototype'][_0xa964('0x16')]=function(_0x3cc20b){try{if(this[_0xa964('0x7')][_0x3cc20b['queue']]&&(this[_0xa964('0x7')][_0x3cc20b[_0xa964('0x37')]][_0xa964('0x4')]||this[_0xa964('0x7')][_0x3cc20b['queue']][_0xa964('0x1c')])){if(this['agents'][_0x3cc20b[_0xa964('0x1b')]]){this[_0xa964('0xa')][_0x3cc20b['uniqueid']]={'queue':_0x3cc20b[_0xa964('0x37')],'interface':_0x3cc20b[_0xa964('0x1b')]};}}}catch(_0x31b8bd){logger[_0xa964('0x31')]('[ACW][syncAgentConnectPreview]\x20%s',_0x31b8bd[_0xa964('0x36')]);}};Acw[_0xa964('0x1a')][_0xa964('0xe')]=function(_0x2da933){try{if(this[_0xa964('0xa')][_0x2da933[_0xa964('0x2d')]]&&_[_0xa964('0x40')](this[_0xa964('0xa')][_0x2da933[_0xa964('0x2d')]][_0xa964('0x26')])){logger[_0xa964('0x24')]('[%s][HANGUP:UNIQUEID]',_0x2da933[_0xa964('0x2d')]);this['startAcw'](_0x2da933[_0xa964('0x2d')]);}else if(this['channels'][_0x2da933[_0xa964('0x41')]]&&_[_0xa964('0x40')](this[_0xa964('0xa')][_0x2da933['linkedid']]['attended'])){logger[_0xa964('0x24')]('[%s][HANGUP:LINKEDID]',_0x2da933['linkedid']);this['startAcw'](_0x2da933[_0xa964('0x41')]);}}catch(_0x2dcd71){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x2dcd71['message']);}};Acw[_0xa964('0x1a')][_0xa964('0xf')]=function(_0x183b3e){try{if(this[_0xa964('0xa')][_0x183b3e['uniqueid']]&&this['channels'][_0x183b3e[_0xa964('0x2d')]][_0xa964('0x26')]){logger['info'](_0xa964('0x42'),_0x183b3e[_0xa964('0x2d')]);this[_0xa964('0x43')](_0x183b3e[_0xa964('0x2d')]);}else if(this['channels'][_0x183b3e[_0xa964('0x41')]]&&this[_0xa964('0xa')][_0x183b3e[_0xa964('0x41')]][_0xa964('0x26')]){logger[_0xa964('0x24')](_0xa964('0x44'),_0x183b3e[_0xa964('0x41')]);this[_0xa964('0x43')](_0x183b3e[_0xa964('0x41')]);}}catch(_0x2904c4){logger[_0xa964('0x31')](_0xa964('0x45'),_0x2904c4[_0xa964('0x36')]);}};Acw['prototype'][_0xa964('0x12')]=function(_0x55a6d3){try{if(!_[_0xa964('0x46')](this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x47')]])){this[_0xa964('0x43')](_0x55a6d3['transfereeuniqueid']);if(this[_0xa964('0xa')][_0x55a6d3['secondtransfereruniqueid']]){this[_0xa964('0xa')][_0x55a6d3['secondtransfereruniqueid']][_0xa964('0x26')]=!![];this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x48')]]=this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x49')]];delete this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x49')]];}}else if(!_['isNil'](this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x48')]])){this['startAcw'](_0x55a6d3[_0xa964('0x48')]);if(this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x4a')]]){this['channels'][_0x55a6d3[_0xa964('0x4a')]][_0xa964('0x26')]=!![];this['channels'][_0x55a6d3[_0xa964('0x47')]]=this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x4a')]];delete this[_0xa964('0xa')][_0x55a6d3[_0xa964('0x4a')]];}}}catch(_0x3850ed){logger[_0xa964('0x31')](_0xa964('0x4b'),_0x3850ed[_0xa964('0x36')]);}};Acw[_0xa964('0x1a')][_0xa964('0x14')]=function(_0x52563b){try{if(this[_0xa964('0xa')][_0x52563b[_0xa964('0x4c')]]){logger[_0xa964('0x24')](_0xa964('0x4d'),JSON['stringify'](_0x52563b[_0xa964('0x4c')]));this[_0xa964('0x43')](_0x52563b['transfereruniqueid']);}else if(this['channels'][_0x52563b['transfererlinkedid']]){logger[_0xa964('0x24')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xa964('0x3c')](_0x52563b[_0xa964('0x4e')]));this[_0xa964('0x43')](_0x52563b['transfererlinkedid']);}}catch(_0x589486){logger[_0xa964('0x31')]('[ACW][syncBlindTransfer]\x20%s',_0x589486[_0xa964('0x36')]);}};Acw[_0xa964('0x1a')]['syncAgentRingNoAnswer']=function(_0x3154ec){try{if(this[_0xa964('0x7')][_0x3154ec[_0xa964('0x37')]]&&this[_0xa964('0x7')][_0x3154ec[_0xa964('0x37')]]['autopause']===_0xa964('0x4f')){if(this[_0xa964('0x8')][_0x3154ec[_0xa964('0x1b')]]){logger[_0xa964('0x24')](_0xa964('0x50'),_0x3154ec[_0xa964('0x2d')],_0x3154ec[_0xa964('0x1b')],_0x3154ec[_0xa964('0x37')]);return RpcUser[_0xa964('0x27')](this['agents'][_0x3154ec[_0xa964('0x1b')]],_0xa964('0x51'),_0x3154ec[_0xa964('0x2d')]);}}}catch(_0x5d8127){logger[_0xa964('0x31')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x5d8127[_0xa964('0x36')]);}};module[_0xa964('0x52')]=Acw;
\ No newline at end of file
index 422d8a0..1766bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7513=['connect','shutdown','fullybooted','resolve','then','actionQueueSummary','catch','log','exports','asterisk-manager','bluebird','moment','util','../../config/logger','../../config/environment','asterisk','port','username','password','Action','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionSipPeerStatus','queuesummary','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once'];(function(_0xdd598a,_0x2f4169){var _0x18c8d7=function(_0x52be9c){while(--_0x52be9c){_0xdd598a['push'](_0xdd598a['shift']());}};_0x18c8d7(++_0x2f4169);}(_0x7513,0x91));var _0x3751=function(_0x2e0d2a,_0x8d568){_0x2e0d2a=_0x2e0d2a-0x0;var _0x4014f0=_0x7513[_0x2e0d2a];return _0x4014f0;};'use strict';var Manager=require(_0x3751('0x0'));var BPromise=require(_0x3751('0x1'));var moment=require(_0x3751('0x2'));var util=require(_0x3751('0x3'));var _=require('lodash');var logger=require(_0x3751('0x4'))('ami');var config=require(_0x3751('0x5'));var ami=new Manager(config[_0x3751('0x6')][_0x3751('0x7')],config['asterisk']['ip'],config[_0x3751('0x6')][_0x3751('0x8')],config['asterisk'][_0x3751('0x9')],!![]);ami['keepConnected']();ami[_0x3751('0xa')]=BPromise['promisify'](ami[_0x3751('0xb')]);function error(_0x4fd739){logger[_0x3751('0xc')](util['format'](_0x3751('0xd'),config[_0x3751('0x6')]['username'],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')]['port'],util[_0x3751('0xe')](_0x4fd739,![],null)));}function close(){logger[_0x3751('0xc')](util[_0x3751('0xf')](_0x3751('0x10'),config[_0x3751('0x6')][_0x3751('0x8')],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')][_0x3751('0x7')]));}ami[_0x3751('0x11')]=function(){return function(){return ami['Action']({'action':_0x3751('0x12')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x3751('0xa')]({'action':'devicestatelist'});};};ami[_0x3751('0x13')]=function(){return function(){return ami[_0x3751('0xa')]({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x3751('0xa')]({'action':_0x3751('0x14')});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0x3751('0xa')]({'action':_0x3751('0x15')});};};function connect(_0x241a54){logger[_0x3751('0x16')](util['format'](_0x3751('0x17'),config[_0x3751('0x6')][_0x3751('0x8')],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')][_0x3751('0x7')]));ami['once'](_0x3751('0xc'),error);ami[_0x3751('0x18')]('close',close);}ami['on'](_0x3751('0x19'),connect);ami['on'](_0x3751('0x1a'),function(_0x47f437){logger[_0x3751('0x16')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk']['username'],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')]['port'],util[_0x3751('0xe')](_0x47f437,![],null)));});ami['on'](_0x3751('0x1b'),function(_0xd27923){logger[_0x3751('0x16')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x3751('0x6')][_0x3751('0x8')],config[_0x3751('0x6')]['ip'],config['asterisk'][_0x3751('0x7')]));return BPromise[_0x3751('0x1c')]()[_0x3751('0x1d')](ami[_0x3751('0x11')]())[_0x3751('0x1d')](ami['actionDeviceStateList']())[_0x3751('0x1d')](ami[_0x3751('0x13')]())[_0x3751('0x1d')](ami[_0x3751('0x1e')]())['then'](ami['actionCoreShowChannels']())[_0x3751('0x1f')](function(_0x5ee512){console[_0x3751('0x20')](_0x5ee512);});});ami[_0x3751('0x18')](_0x3751('0xc'),error);ami[_0x3751('0x18')]('close',close);module[_0x3751('0x21')]=ami;
\ No newline at end of file
+var _0x577c=['Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionSipPeerStatus','sippeerstatus','actionQueueSummary','actionCoreShowChannels','coreshowchannels','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','info','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','actionSipShowRegistry','then','actionDeviceStateList','catch','exports','asterisk-manager','util','lodash','../../config/logger','ami','../../config/environment','asterisk','port','username','keepConnected','Action','promisify','action','format'];(function(_0x10ce0d,_0x1daf61){var _0x24b668=function(_0x547649){while(--_0x547649){_0x10ce0d['push'](_0x10ce0d['shift']());}};_0x24b668(++_0x1daf61);}(_0x577c,0x194));var _0xc577=function(_0x2e0417,_0x4a365a){_0x2e0417=_0x2e0417-0x0;var _0x39ea9=_0x577c[_0x2e0417];return _0x39ea9;};'use strict';var Manager=require(_0xc577('0x0'));var BPromise=require('bluebird');var moment=require('moment');var util=require(_0xc577('0x1'));var _=require(_0xc577('0x2'));var logger=require(_0xc577('0x3'))(_0xc577('0x4'));var config=require(_0xc577('0x5'));var ami=new Manager(config[_0xc577('0x6')][_0xc577('0x7')],config['asterisk']['ip'],config[_0xc577('0x6')][_0xc577('0x8')],config['asterisk']['password'],!![]);ami[_0xc577('0x9')]();ami[_0xc577('0xa')]=BPromise[_0xc577('0xb')](ami[_0xc577('0xc')]);function error(_0x5ab2f3){logger['error'](util[_0xc577('0xd')](_0xc577('0xe'),config['asterisk'][_0xc577('0x8')],config[_0xc577('0x6')]['ip'],config['asterisk'][_0xc577('0x7')],util[_0xc577('0xf')](_0x5ab2f3,![],null)));}function close(){logger[_0xc577('0x10')](util[_0xc577('0xd')](_0xc577('0x11'),config[_0xc577('0x6')][_0xc577('0x8')],config[_0xc577('0x6')]['ip'],config[_0xc577('0x6')][_0xc577('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xc577('0xa')]({'action':_0xc577('0x12')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0xc577('0xa')]({'action':'devicestatelist'});};};ami[_0xc577('0x13')]=function(){return function(){return ami[_0xc577('0xa')]({'action':_0xc577('0x14')});};};ami[_0xc577('0x15')]=function(){return function(){return ami[_0xc577('0xa')]({'action':'queuesummary'});};};ami[_0xc577('0x16')]=function(){return function(){return ami[_0xc577('0xa')]({'action':_0xc577('0x17')});};};function connect(_0x318883){logger['info'](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xc577('0x6')][_0xc577('0x8')],config['asterisk']['ip'],config[_0xc577('0x6')][_0xc577('0x7')]));ami[_0xc577('0x18')]('error',error);ami[_0xc577('0x18')](_0xc577('0x19'),close);}ami['on'](_0xc577('0x1a'),connect);ami['on'](_0xc577('0x1b'),function(_0x57c60f){logger['info'](util[_0xc577('0xd')](_0xc577('0x1c'),config[_0xc577('0x6')][_0xc577('0x8')],config[_0xc577('0x6')]['ip'],config['asterisk']['port'],util[_0xc577('0xf')](_0x57c60f,![],null)));});ami['on'](_0xc577('0x1d'),function(_0xd66082){logger[_0xc577('0x1e')](util['format'](_0xc577('0x1f'),config[_0xc577('0x6')]['username'],config[_0xc577('0x6')]['ip'],config[_0xc577('0x6')][_0xc577('0x7')]));return BPromise[_0xc577('0x20')]()['then'](ami[_0xc577('0x21')]())[_0xc577('0x22')](ami[_0xc577('0x23')]())[_0xc577('0x22')](ami[_0xc577('0x13')]())[_0xc577('0x22')](ami[_0xc577('0x15')]())[_0xc577('0x22')](ami[_0xc577('0x16')]())[_0xc577('0x24')](function(_0x3727b6){console['log'](_0x3727b6);});});ami[_0xc577('0x18')](_0xc577('0x10'),error);ami[_0xc577('0x18')](_0xc577('0x19'),close);module[_0xc577('0x25')]=ami;
\ No newline at end of file
index b744dee..be3ed3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','memberReport','error','message'];(function(_0x31e5cb,_0x2f5adf){var _0x4170df=function(_0x31c53e){while(--_0x31c53e){_0x31e5cb['push'](_0x31e5cb['shift']());}};_0x4170df(++_0x2f5adf);}(_0xe706,0xa3));var _0x6e70=function(_0x4dcbe5,_0x3f98d7){_0x4dcbe5=_0x4dcbe5-0x0;var _0x45ac5c=_0xe706[_0x4dcbe5];return _0x45ac5c;};'use strict';var jayson=require(_0x6e70('0x0'));var BPromise=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('ami');var client=jayson[_0x6e70('0x3')][_0x6e70('0x4')]({'port':0x2329});client[_0x6e70('0x5')]=function(_0x7dfbc3,_0x142c27){return new BPromise(function(_0x2164a4,_0x376a8d){return client[_0x6e70('0x6')](_0x7dfbc3,_0x142c27)[_0x6e70('0x7')](function(_0x4381d1){logger[_0x6e70('0x8')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x142c27,_0x4381d1);if(_0x4381d1[_0x6e70('0xb')]){logger[_0x6e70('0xb')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')],_0x142c27);return _0x376a8d(_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')]);}else{return _0x2164a4(_0x4381d1[_0x6e70('0xd')]);}})[_0x6e70('0xe')](function(_0x4600f9){logger['error']('rpc',_0x6e70('0xa'),_0x7dfbc3,_0x4600f9,_0x142c27);return _0x376a8d(_0x4600f9);});});};module[_0x6e70('0xf')]=client;
\ No newline at end of file
+var _0xf4eb=['rpc','error','message','result','exports','jayson/promise','http','request','then','debug','memberReport'];(function(_0x23d5d6,_0xf042cd){var _0x5b9a99=function(_0x2b06c5){while(--_0x2b06c5){_0x23d5d6['push'](_0x23d5d6['shift']());}};_0x5b9a99(++_0xf042cd);}(_0xf4eb,0xec));var _0xbf4e=function(_0x248da0,_0x5d5d3c){_0x248da0=_0x248da0-0x0;var _0x2e6d3e=_0xf4eb[_0x248da0];return _0x2e6d3e;};'use strict';var jayson=require(_0xbf4e('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')('ami');var client=jayson['client'][_0xbf4e('0x1')]({'port':0x2329});client['Request']=function(_0x4e7fa7,_0x2e3070){return new BPromise(function(_0x1c7606,_0x32d1d7){return client[_0xbf4e('0x2')](_0x4e7fa7,_0x2e3070)[_0xbf4e('0x3')](function(_0x2fcfed){logger[_0xbf4e('0x4')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x2e3070,_0x2fcfed);if(_0x2fcfed['error']){logger['error'](_0xbf4e('0x6'),_0xbf4e('0x5'),_0x4e7fa7,_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')],_0x2e3070);return _0x32d1d7(_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')]);}else{return _0x1c7606(_0x2fcfed[_0xbf4e('0x9')]);}})['catch'](function(_0x4d9a07){logger[_0xbf4e('0x7')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x4d9a07,_0x2e3070);return _0x32d1d7(_0x4d9a07);});});};module[_0xbf4e('0xa')]=client;
\ No newline at end of file
index 136c08e..5534236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4547=['countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','exports','util','lodash','moment','isNil','string','voiceQueue','name','Contact','firstName','lastName','number','phone','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry'];(function(_0x26f169,_0x2d01b2){var _0x43aad9=function(_0x4395ea){while(--_0x4395ea){_0x26f169['push'](_0x26f169['shift']());}};_0x43aad9(++_0x2d01b2);}(_0x4547,0x129));var _0x7454=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x4547[_0x504df1];return _0x1063b5;};'use strict';var util=require(_0x7454('0x0'));var _=require(_0x7454('0x1'));var moment=require(_0x7454('0x2'));function checkNameSurname(_0x25414f,_0xf9927b,_0x445193){var _0x21462b='';if(!_[_0x7454('0x3')](_0xf9927b)&&_0x7454('0x4')===typeof _0xf9927b){_0x21462b+=_0xf9927b;}if(!_[_0x7454('0x3')](_0x445193)&&'string'===typeof _0x445193){_0x21462b+='\x20'+_0x445193;}if(_0x21462b!==''){return _0x21462b;}return _0x25414f;}function Action(_0x5d895c,_0x3a6770,_0x110a7b){this[_0x7454('0x5')]=_0x5d895c;this['uniqueid']=_0x110a7b||undefined;this[_0x7454('0x6')]=checkNameSurname(_0x3a6770[_0x7454('0x7')]['phone'],_0x3a6770[_0x7454('0x7')][_0x7454('0x8')],_0x3a6770[_0x7454('0x7')][_0x7454('0x9')]);this[_0x7454('0xa')]=_0x3a6770[_0x7454('0x7')][_0x7454('0xb')];this[_0x7454('0xc')]=_0x5d895c[_0x7454('0x6')];this['active']=_0x3a6770[_0x7454('0xd')]||![];this[_0x7454('0xe')]=_0x5d895c[_0x7454('0xe')];this['dialQueueTimeout']=_0x5d895c[_0x7454('0xf')]||0x3;this[_0x7454('0x10')]=_0x3a6770[_0x7454('0x10')];this[_0x7454('0x11')]=_0x3a6770['countbusyretry'];this[_0x7454('0x12')]=_0x3a6770[_0x7454('0x12')];this[_0x7454('0x13')]=_0x3a6770[_0x7454('0x13')];this[_0x7454('0x14')]=_0x3a6770[_0x7454('0x14')];this[_0x7454('0x15')]=_0x3a6770['countdropretry'];this[_0x7454('0x16')]=_0x3a6770[_0x7454('0x16')];this[_0x7454('0x17')]=_0x3a6770['countmachineretry'];this[_0x7454('0x18')]=_0x3a6770[_0x7454('0x18')];this['ContactId']=_0x3a6770[_0x7454('0x19')];this[_0x7454('0x1a')]=_0x3a6770['ListId'];this[_0x7454('0x1b')]=_0x3a6770['UserId'];this[_0x7454('0x1c')]=_0x3a6770[_0x7454('0x1c')];this[_0x7454('0x1d')]=_0x3a6770['CampaignId'];this['idHopper']=_0x3a6770['id'];this[_0x7454('0x1e')]=_0x3a6770[_0x7454('0x7')]['firstName']||'';this[_0x7454('0x1f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x7454('0x20')]=_0x3a6770[_0x7454('0x20')];this[_0x7454('0x21')]=_0x3a6770[_0x7454('0x21')];this[_0x7454('0x22')]=_0x3a6770['callbackat'];this[_0x7454('0x23')]=_0x3a6770['recallme'];this[_0x7454('0x24')]='';this[_0x7454('0x25')]='';}Action['prototype'][_0x7454('0x26')]=function(){return util[_0x7454('0x27')](_0x7454('0x28'),this['name'],this['voiceQueue'][_0x7454('0x29')]>0x0?this['number'][_0x7454('0x2a')](this[_0x7454('0x5')]['dialCutDigit']):this[_0x7454('0xa')]);};Action[_0x7454('0x2b')]['getQueue']=function(){return this[_0x7454('0xc')];};module[_0x7454('0x2c')]=Action;
\ No newline at end of file
+var _0x4ae7=['countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','name','dialCutDigit','substring','getQueue','exports','util','isNil','string','voiceQueue','uniqueid','Contact','firstName','lastName','number','phone','queue','active','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x39d7ab,_0x273de3){var _0x1f6bca=function(_0x31fd44){while(--_0x31fd44){_0x39d7ab['push'](_0x39d7ab['shift']());}};_0x1f6bca(++_0x273de3);}(_0x4ae7,0x121));var _0x74ae=function(_0xc20795,_0x15e968){_0xc20795=_0xc20795-0x0;var _0x490807=_0x4ae7[_0xc20795];return _0x490807;};'use strict';var util=require(_0x74ae('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x10d5d4,_0x2ee105,_0x148f68){var _0x1576c2='';if(!_[_0x74ae('0x1')](_0x2ee105)&&_0x74ae('0x2')===typeof _0x2ee105){_0x1576c2+=_0x2ee105;}if(!_['isNil'](_0x148f68)&&_0x74ae('0x2')===typeof _0x148f68){_0x1576c2+='\x20'+_0x148f68;}if(_0x1576c2!==''){return _0x1576c2;}return _0x10d5d4;}function Action(_0x15521d,_0xd76aff,_0x1f4b79){this[_0x74ae('0x3')]=_0x15521d;this[_0x74ae('0x4')]=_0x1f4b79||undefined;this['name']=checkNameSurname(_0xd76aff[_0x74ae('0x5')]['phone'],_0xd76aff[_0x74ae('0x5')][_0x74ae('0x6')],_0xd76aff[_0x74ae('0x5')][_0x74ae('0x7')]);this[_0x74ae('0x8')]=_0xd76aff['Contact'][_0x74ae('0x9')];this[_0x74ae('0xa')]=_0x15521d['name'];this[_0x74ae('0xb')]=_0xd76aff[_0x74ae('0xb')]||![];this['type']=_0x15521d['type'];this[_0x74ae('0xc')]=_0x15521d[_0x74ae('0xc')]||0x3;this[_0x74ae('0xd')]=_0xd76aff['scheduledat'];this['countbusyretry']=_0xd76aff[_0x74ae('0xe')];this[_0x74ae('0xf')]=_0xd76aff[_0x74ae('0xf')];this[_0x74ae('0x10')]=_0xd76aff[_0x74ae('0x10')];this[_0x74ae('0x11')]=_0xd76aff[_0x74ae('0x11')];this[_0x74ae('0x12')]=_0xd76aff[_0x74ae('0x12')];this[_0x74ae('0x13')]=_0xd76aff[_0x74ae('0x13')];this[_0x74ae('0x14')]=_0xd76aff['countmachineretry'];this[_0x74ae('0x15')]=_0xd76aff[_0x74ae('0x15')];this[_0x74ae('0x16')]=_0xd76aff[_0x74ae('0x16')];this[_0x74ae('0x17')]=_0xd76aff[_0x74ae('0x17')];this[_0x74ae('0x18')]=_0xd76aff[_0x74ae('0x18')];this['VoiceQueueId']=_0xd76aff[_0x74ae('0x19')];this['CampaignId']=_0xd76aff[_0x74ae('0x1a')];this[_0x74ae('0x1b')]=_0xd76aff['id'];this[_0x74ae('0x1c')]=_0xd76aff[_0x74ae('0x5')][_0x74ae('0x6')]||'';this[_0x74ae('0x1d')]=moment()[_0x74ae('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');this['callback']=_0xd76aff[_0x74ae('0x1f')];this[_0x74ae('0x20')]=_0xd76aff[_0x74ae('0x20')];this[_0x74ae('0x21')]=_0xd76aff[_0x74ae('0x21')];this[_0x74ae('0x22')]=_0xd76aff['recallme'];this['originatecalleridnum']='';this[_0x74ae('0x23')]='';}Action[_0x74ae('0x24')][_0x74ae('0x25')]=function(){return util[_0x74ae('0x1e')](_0x74ae('0x26'),this[_0x74ae('0x27')],this[_0x74ae('0x3')][_0x74ae('0x28')]>0x0?this[_0x74ae('0x8')][_0x74ae('0x29')](this[_0x74ae('0x3')][_0x74ae('0x28')]):this[_0x74ae('0x8')]);};Action[_0x74ae('0x24')][_0x74ae('0x2a')]=function(){return this['queue'];};module[_0x74ae('0x2b')]=Action;
\ No newline at end of file
index 908ce40..1f8ef26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63ce=['countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','calleridnum','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','answertime','talktime','membername','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','queue'];(function(_0x181670,_0x2f8162){var _0x427b22=function(_0xa3d907){while(--_0xa3d907){_0x181670['push'](_0x181670['shift']());}};_0x427b22(++_0x2f8162);}(_0x63ce,0x122));var _0xe63c=function(_0x3b1e3f,_0xf8826b){_0x3b1e3f=_0x3b1e3f-0x0;var _0x3b1cd3=_0x63ce[_0x3b1e3f];return _0x3b1cd3;};'use strict';var util=require(_0xe63c('0x0'));var _=require('lodash');var moment=require(_0xe63c('0x1'));function getSeconds(_0x265460,_0x313d09){var _0x4c74d2=moment(_0x265460)[_0xe63c('0x2')](0x0);var _0x47c679=moment(_0x313d09)['milliseconds'](0x0);return _0x4c74d2[_0xe63c('0x3')](_0x47c679,_0xe63c('0x4'));}function AgentComplete(_0x25e666,_0x55cb1e){this['state']=0x4;this[_0xe63c('0x5')]=_0xe63c('0x6');this[_0xe63c('0x7')]=_0x25e666[_0xe63c('0x7')];this['type']=_0x25e666[_0xe63c('0x8')];this[_0xe63c('0x9')]=_0x25e666[_0xe63c('0x8')]==='outbound'?_0xe63c('0xa'):_0x25e666[_0xe63c('0x8')];this[_0xe63c('0xb')]=_0x25e666['countbusyretry'];this['countcongestionretry']=_0x25e666[_0xe63c('0xc')];this['countnoanswerretry']=_0x25e666[_0xe63c('0xd')];this['countglobal']=_0x25e666[_0xe63c('0xb')]+_0x25e666[_0xe63c('0xc')]+_0x25e666['countnoanswerretry']+_0x25e666[_0xe63c('0xe')]+_0x25e666['countdropretry']+_0x25e666[_0xe63c('0xf')]+_0x25e666[_0xe63c('0x10')]+_0x25e666[_0xe63c('0x11')];this[_0xe63c('0xe')]=_0x25e666[_0xe63c('0xe')];this[_0xe63c('0x12')]=_0x25e666[_0xe63c('0x12')];this[_0xe63c('0xf')]=_0x25e666[_0xe63c('0xf')];this[_0xe63c('0x10')]=_0x25e666[_0xe63c('0x10')];this[_0xe63c('0x11')]=_0x25e666['countagentrejectretry'];this[_0xe63c('0x13')]=_0x55cb1e[_0xe63c('0x13')];this[_0xe63c('0x14')]=_0x25e666['name'];this[_0xe63c('0x15')]=_0x25e666['number'];this[_0xe63c('0x16')]=_0x25e666[_0xe63c('0x16')];this[_0xe63c('0x17')]=_0x25e666[_0xe63c('0x17')];this['answertime']=_0x25e666['answertime'];this[_0xe63c('0x18')]=moment()['format'](_0xe63c('0x19'));this[_0xe63c('0x1a')]=getSeconds(_0x25e666[_0xe63c('0x17')],_0x25e666[_0xe63c('0x16')]);this[_0xe63c('0x1b')]=getSeconds(_0x25e666[_0xe63c('0x1c')],_0x25e666[_0xe63c('0x17')]);this[_0xe63c('0x1d')]=getSeconds(this[_0xe63c('0x18')],_0x25e666[_0xe63c('0x1c')]);this['queue']=_0x55cb1e[_0xe63c('0xa')];this['membername']=_0x55cb1e[_0xe63c('0x1e')];this[_0xe63c('0x1f')]=_0x55cb1e[_0xe63c('0x1f')];this[_0xe63c('0x20')]=_0x25e666[_0xe63c('0x20')];this[_0xe63c('0x21')]=_0x25e666[_0xe63c('0x21')];this['callbackat']=_0x25e666[_0xe63c('0x22')];this['recallme']=_0x25e666['recallme'];this[_0xe63c('0x23')]=_0x25e666[_0xe63c('0x23')];this[_0xe63c('0x24')]=_0x25e666[_0xe63c('0x24')];this[_0xe63c('0x25')]=_0x25e666[_0xe63c('0x25')];this['VoiceQueueId']=_0x25e666[_0xe63c('0x26')];this[_0xe63c('0x27')]=_0x25e666['CampaignId'];this[_0xe63c('0x28')]=_0x25e666[_0xe63c('0x28')]||'';this[_0xe63c('0x29')]=_0x25e666[_0xe63c('0x29')]||'';}module[_0xe63c('0x2a')]=AgentComplete;
\ No newline at end of file
+var _0x43bc=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound'];(function(_0x3f819a,_0x42092b){var _0x10bc70=function(_0x49fb9f){while(--_0x49fb9f){_0x3f819a['push'](_0x3f819a['shift']());}};_0x10bc70(++_0x42092b);}(_0x43bc,0x1cb));var _0xc43b=function(_0x277721,_0x46971e){_0x277721=_0x277721-0x0;var _0x286051=_0x43bc[_0x277721];return _0x286051;};'use strict';var util=require(_0xc43b('0x0'));var _=require(_0xc43b('0x1'));var moment=require('moment');function getSeconds(_0x29e4b1,_0x3b6491){var _0x15a2cb=moment(_0x29e4b1)['milliseconds'](0x0);var _0x481227=moment(_0x3b6491)['milliseconds'](0x0);return _0x15a2cb[_0xc43b('0x2')](_0x481227,_0xc43b('0x3'));}function AgentComplete(_0x213a5a,_0x53bd6d){this[_0xc43b('0x4')]=0x4;this[_0xc43b('0x5')]=_0xc43b('0x6');this['scheduledat']=_0x213a5a[_0xc43b('0x7')];this['type']=_0x213a5a[_0xc43b('0x8')];this[_0xc43b('0x9')]=_0x213a5a[_0xc43b('0x8')]===_0xc43b('0xa')?'queue':_0x213a5a[_0xc43b('0x8')];this[_0xc43b('0xb')]=_0x213a5a[_0xc43b('0xb')];this[_0xc43b('0xc')]=_0x213a5a[_0xc43b('0xc')];this['countnoanswerretry']=_0x213a5a[_0xc43b('0xd')];this[_0xc43b('0xe')]=_0x213a5a[_0xc43b('0xb')]+_0x213a5a[_0xc43b('0xc')]+_0x213a5a[_0xc43b('0xd')]+_0x213a5a[_0xc43b('0xf')]+_0x213a5a['countdropretry']+_0x213a5a['countabandonedretry']+_0x213a5a[_0xc43b('0x10')]+_0x213a5a[_0xc43b('0x11')];this[_0xc43b('0xf')]=_0x213a5a[_0xc43b('0xf')];this[_0xc43b('0x12')]=_0x213a5a[_0xc43b('0x12')];this[_0xc43b('0x13')]=_0x213a5a['countabandonedretry'];this[_0xc43b('0x10')]=_0x213a5a['countmachineretry'];this[_0xc43b('0x11')]=_0x213a5a[_0xc43b('0x11')];this[_0xc43b('0x14')]=_0x53bd6d['uniqueid'];this[_0xc43b('0x15')]=_0x213a5a[_0xc43b('0x16')];this['calleridnum']=_0x213a5a[_0xc43b('0x17')];this['starttime']=_0x213a5a[_0xc43b('0x18')];this[_0xc43b('0x19')]=_0x213a5a[_0xc43b('0x19')];this[_0xc43b('0x1a')]=_0x213a5a['answertime'];this[_0xc43b('0x1b')]=moment()['format'](_0xc43b('0x1c'));this[_0xc43b('0x1d')]=getSeconds(_0x213a5a[_0xc43b('0x19')],_0x213a5a['starttime']);this[_0xc43b('0x1e')]=getSeconds(_0x213a5a['answertime'],_0x213a5a[_0xc43b('0x19')]);this[_0xc43b('0x1f')]=getSeconds(this[_0xc43b('0x1b')],_0x213a5a['answertime']);this[_0xc43b('0x20')]=_0x53bd6d[_0xc43b('0x20')];this['membername']=_0x53bd6d[_0xc43b('0x21')];this[_0xc43b('0x22')]=_0x53bd6d[_0xc43b('0x22')];this[_0xc43b('0x23')]=_0x213a5a[_0xc43b('0x23')];this[_0xc43b('0x24')]=_0x213a5a[_0xc43b('0x24')];this[_0xc43b('0x25')]=_0x213a5a[_0xc43b('0x25')];this[_0xc43b('0x26')]=_0x213a5a[_0xc43b('0x26')];this[_0xc43b('0x27')]=_0x213a5a['ContactId'];this[_0xc43b('0x28')]=_0x213a5a[_0xc43b('0x28')];this[_0xc43b('0x29')]=_0x213a5a[_0xc43b('0x29')];this['VoiceQueueId']=_0x213a5a[_0xc43b('0x2a')];this[_0xc43b('0x2b')]=_0x213a5a['CampaignId'];this[_0xc43b('0x2c')]=_0x213a5a['originatecalleridnum']||'';this[_0xc43b('0x2d')]=_0x213a5a[_0xc43b('0x2d')]||'';}module[_0xc43b('0x2e')]=AgentComplete;
\ No newline at end of file
index 54ad303..16066b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5577=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId'];(function(_0x476172,_0x5a4b53){var _0x3ec76b=function(_0x43d3fe){while(--_0x43d3fe){_0x476172['push'](_0x476172['shift']());}};_0x3ec76b(++_0x5a4b53);}(_0x5577,0x1b4));var _0x7557=function(_0x32f47e,_0x5acd97){_0x32f47e=_0x32f47e-0x0;var _0x1f1e6e=_0x5577[_0x32f47e];return _0x1f1e6e;};'use strict';var util=require(_0x7557('0x0'));var _=require('lodash');var moment=require(_0x7557('0x1'));function getSeconds(_0x389954,_0x52a8c6){var _0x34636a=moment(_0x389954)[_0x7557('0x2')](0x0);var _0x25c0da=moment(_0x52a8c6)[_0x7557('0x2')](0x0);return _0x34636a[_0x7557('0x3')](_0x25c0da,_0x7557('0x4'));}function Final(_0x5862e6){this[_0x7557('0x5')]=_0x5862e6[_0x7557('0x5')];this[_0x7557('0x6')]=_0x5862e6[_0x7557('0x6')];this[_0x7557('0x7')]=_0x5862e6[_0x7557('0x7')];this[_0x7557('0x8')]=_0x5862e6[_0x7557('0x7')]===_0x7557('0x9')?_0x7557('0xa'):_0x5862e6[_0x7557('0x7')];this[_0x7557('0xb')]=_0x5862e6[_0x7557('0xb')];this[_0x7557('0xc')]=_0x5862e6[_0x7557('0xc')];this['countnoanswerretry']=_0x5862e6['countnoanswerretry'];this[_0x7557('0xd')]=_0x5862e6[_0x7557('0xb')]+_0x5862e6[_0x7557('0xc')]+_0x5862e6[_0x7557('0xe')]+_0x5862e6[_0x7557('0xf')]+_0x5862e6[_0x7557('0x10')]+_0x5862e6[_0x7557('0x11')]+_0x5862e6[_0x7557('0x12')]+_0x5862e6[_0x7557('0x13')];this[_0x7557('0xf')]=_0x5862e6['countnosuchnumberretry'];this[_0x7557('0x10')]=_0x5862e6[_0x7557('0x10')];this[_0x7557('0x11')]=_0x5862e6['countabandonedretry'];this[_0x7557('0x12')]=_0x5862e6[_0x7557('0x12')];this[_0x7557('0x13')]=_0x5862e6[_0x7557('0x13')];this['queue']=_0x5862e6[_0x7557('0xa')];this[_0x7557('0x14')]=_0x5862e6['calleridname'];this['calleridnum']=_0x5862e6[_0x7557('0x15')];this[_0x7557('0x16')]=_0x5862e6[_0x7557('0x16')];this[_0x7557('0x17')]=_0x5862e6['responsetime'];this[_0x7557('0x18')]=_0x5862e6['responsetime'];this[_0x7557('0x19')]=_0x5862e6[_0x7557('0x19')]||0x0;this[_0x7557('0x1a')]=_0x5862e6[_0x7557('0x1a')]||0x0;this['talktime']=_0x5862e6[_0x7557('0x1b')]||0x0;this[_0x7557('0x1c')]=_0x5862e6[_0x7557('0x1c')];this[_0x7557('0x1d')]=_0x5862e6[_0x7557('0x1d')];this['callbackat']=_0x5862e6['callbackat'];this['recallme']=_0x5862e6[_0x7557('0x1e')];this['ContactId']=_0x5862e6[_0x7557('0x1f')];this[_0x7557('0x20')]=_0x5862e6[_0x7557('0x20')];this[_0x7557('0x21')]=_0x5862e6[_0x7557('0x21')];this[_0x7557('0x22')]=_0x5862e6[_0x7557('0x22')];this['CampaignId']=_0x5862e6[_0x7557('0x23')];this['originatecalleridnum']=_0x5862e6[_0x7557('0x24')]||'';this['originatecalleridname']=_0x5862e6[_0x7557('0x25')]||'';}module[_0x7557('0x26')]=Final;
\ No newline at end of file
+var _0xf8b2=['queue','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound'];(function(_0x5bfa82,_0x58744d){var _0x45e254=function(_0x3b58ba){while(--_0x3b58ba){_0x5bfa82['push'](_0x5bfa82['shift']());}};_0x45e254(++_0x58744d);}(_0xf8b2,0x15e));var _0x2f8b=function(_0x2fffff,_0x415518){_0x2fffff=_0x2fffff-0x0;var _0x4f2a2c=_0xf8b2[_0x2fffff];return _0x4f2a2c;};'use strict';var util=require(_0x2f8b('0x0'));var _=require(_0x2f8b('0x1'));var moment=require(_0x2f8b('0x2'));function getSeconds(_0x2f565c,_0x40353f){var _0x365b20=moment(_0x2f565c)[_0x2f8b('0x3')](0x0);var _0x2952c2=moment(_0x40353f)['milliseconds'](0x0);return _0x365b20['diff'](_0x2952c2,_0x2f8b('0x4'));}function Final(_0x242821){this[_0x2f8b('0x5')]=_0x242821[_0x2f8b('0x5')];this[_0x2f8b('0x6')]=_0x242821[_0x2f8b('0x6')];this[_0x2f8b('0x7')]=_0x242821[_0x2f8b('0x7')];this[_0x2f8b('0x8')]=_0x242821['type']===_0x2f8b('0x9')?_0x2f8b('0xa'):_0x242821[_0x2f8b('0x7')];this['countbusyretry']=_0x242821[_0x2f8b('0xb')];this[_0x2f8b('0xc')]=_0x242821[_0x2f8b('0xc')];this['countnoanswerretry']=_0x242821['countnoanswerretry'];this[_0x2f8b('0xd')]=_0x242821[_0x2f8b('0xb')]+_0x242821[_0x2f8b('0xc')]+_0x242821[_0x2f8b('0xe')]+_0x242821[_0x2f8b('0xf')]+_0x242821['countdropretry']+_0x242821[_0x2f8b('0x10')]+_0x242821['countmachineretry']+_0x242821[_0x2f8b('0x11')];this[_0x2f8b('0xf')]=_0x242821[_0x2f8b('0xf')];this[_0x2f8b('0x12')]=_0x242821[_0x2f8b('0x12')];this[_0x2f8b('0x10')]=_0x242821[_0x2f8b('0x10')];this[_0x2f8b('0x13')]=_0x242821['countmachineretry'];this[_0x2f8b('0x11')]=_0x242821[_0x2f8b('0x11')];this[_0x2f8b('0xa')]=_0x242821[_0x2f8b('0xa')];this[_0x2f8b('0x14')]=_0x242821[_0x2f8b('0x14')];this[_0x2f8b('0x15')]=_0x242821[_0x2f8b('0x15')];this[_0x2f8b('0x16')]=_0x242821['starttime'];this[_0x2f8b('0x17')]=_0x242821[_0x2f8b('0x17')];this[_0x2f8b('0x18')]=_0x242821['responsetime'];this[_0x2f8b('0x19')]=_0x242821['ringtime']||0x0;this[_0x2f8b('0x1a')]=_0x242821[_0x2f8b('0x1a')]||0x0;this[_0x2f8b('0x1b')]=_0x242821[_0x2f8b('0x1b')]||0x0;this[_0x2f8b('0x1c')]=_0x242821['callback'];this[_0x2f8b('0x1d')]=_0x242821[_0x2f8b('0x1d')];this[_0x2f8b('0x1e')]=_0x242821[_0x2f8b('0x1e')];this[_0x2f8b('0x1f')]=_0x242821[_0x2f8b('0x1f')];this[_0x2f8b('0x20')]=_0x242821['ContactId'];this[_0x2f8b('0x21')]=_0x242821[_0x2f8b('0x21')];this[_0x2f8b('0x22')]=_0x242821[_0x2f8b('0x22')];this[_0x2f8b('0x23')]=_0x242821['VoiceQueueId'];this[_0x2f8b('0x24')]=_0x242821[_0x2f8b('0x24')];this[_0x2f8b('0x25')]=_0x242821[_0x2f8b('0x25')]||'';this[_0x2f8b('0x26')]=_0x242821[_0x2f8b('0x26')]||'';}module[_0x2f8b('0x27')]=Final;
\ No newline at end of file
index e481788..f56a975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc71d=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype'];(function(_0x235271,_0x221549){var _0x150ae0=function(_0x92ce18){while(--_0x92ce18){_0x235271['push'](_0x235271['shift']());}};_0x150ae0(++_0x221549);}(_0xc71d,0xa3));var _0xdc71=function(_0xac0de1,_0x12d3d9){_0xac0de1=_0xac0de1-0x0;var _0x1c1995=_0xc71d[_0xac0de1];return _0x1c1995;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xdc71('0x0'));function getSeconds(_0x9e23fb,_0x4f2bd7){var _0x510a21=moment(_0x9e23fb)[_0xdc71('0x1')](0x0);var _0x262b71=moment(_0x4f2bd7)[_0xdc71('0x1')](0x0);return _0x510a21[_0xdc71('0x2')](_0x262b71,_0xdc71('0x3'));}function Hangup(_0x3452b6,_0x2502ff){this['state']=0x4;this[_0xdc71('0x4')]=_0xdc71('0x5');this[_0xdc71('0x6')]=_0x3452b6['scheduledat'];this['type']=_0x3452b6[_0xdc71('0x7')];this[_0xdc71('0x8')]=_0x3452b6['type']==='outbound'?_0xdc71('0x9'):_0x3452b6[_0xdc71('0x7')];this[_0xdc71('0xa')]=_0x3452b6[_0xdc71('0xa')];this[_0xdc71('0xb')]=_0x3452b6[_0xdc71('0xb')];this[_0xdc71('0xc')]=_0x3452b6[_0xdc71('0xc')];this[_0xdc71('0xd')]=_0x3452b6[_0xdc71('0xa')]+_0x3452b6[_0xdc71('0xb')]+_0x3452b6[_0xdc71('0xc')]+_0x3452b6[_0xdc71('0xe')]+_0x3452b6[_0xdc71('0xf')]+_0x3452b6['countabandonedretry']+_0x3452b6['countmachineretry']+_0x3452b6[_0xdc71('0x10')];this[_0xdc71('0xe')]=_0x3452b6[_0xdc71('0xe')];this[_0xdc71('0xf')]=_0x3452b6[_0xdc71('0xf')];this[_0xdc71('0x11')]=_0x3452b6[_0xdc71('0x11')];this[_0xdc71('0x12')]=_0x3452b6['countmachineretry'];this[_0xdc71('0x10')]=_0x3452b6[_0xdc71('0x10')];this[_0xdc71('0x13')]=_0x2502ff['uniqueid'];this[_0xdc71('0x14')]=_0x3452b6[_0xdc71('0x15')];this[_0xdc71('0x16')]=_0x3452b6[_0xdc71('0x17')];this[_0xdc71('0x18')]=_0x3452b6[_0xdc71('0x18')];this[_0xdc71('0x19')]=_0x3452b6[_0xdc71('0x19')];this[_0xdc71('0x1a')]=moment()['format'](_0xdc71('0x1b'));this[_0xdc71('0x1c')]=getSeconds(_0x3452b6['responsetime'],_0x3452b6[_0xdc71('0x18')]);this[_0xdc71('0x1d')]=0x0;this['talktime']=getSeconds(this[_0xdc71('0x1a')],_0x3452b6[_0xdc71('0x19')]);this[_0xdc71('0x9')]=_0x3452b6['queue'];this['membername']=_0xdc71('0x1e');this[_0xdc71('0x1f')]=_0x2502ff[_0xdc71('0x20')];this['callback']=_0x3452b6[_0xdc71('0x21')];this[_0xdc71('0x22')]=_0x3452b6[_0xdc71('0x22')];this[_0xdc71('0x23')]=_0x3452b6[_0xdc71('0x23')];this[_0xdc71('0x24')]=_0x3452b6[_0xdc71('0x24')];this['ContactId']=_0x3452b6[_0xdc71('0x25')];this[_0xdc71('0x26')]=_0x3452b6[_0xdc71('0x26')];this['UserId']=_0x3452b6[_0xdc71('0x27')];this[_0xdc71('0x28')]=_0x3452b6[_0xdc71('0x28')];this[_0xdc71('0x29')]=_0x3452b6[_0xdc71('0x29')];}module[_0xdc71('0x2a')]=Hangup;
\ No newline at end of file
+var _0x55ae=['UserId','VoiceQueueId','CampaignId','util','lodash','moment','milliseconds','diff','state','statedesc','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','format','ringtime','holdtime','talktime','endtime','membername','IVR','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x272dca,_0x37289b){var _0x2f3583=function(_0x1c1438){while(--_0x1c1438){_0x272dca['push'](_0x272dca['shift']());}};_0x2f3583(++_0x37289b);}(_0x55ae,0x1e7));var _0xe55a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x55ae[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0xe55a('0x0'));var _=require(_0xe55a('0x1'));var moment=require(_0xe55a('0x2'));function getSeconds(_0x533db6,_0x548b32){var _0x4daf8f=moment(_0x533db6)[_0xe55a('0x3')](0x0);var _0x3ff95d=moment(_0x548b32)[_0xe55a('0x3')](0x0);return _0x4daf8f[_0xe55a('0x4')](_0x3ff95d,'seconds');}function Hangup(_0x3af7c1,_0x2d98fd){this[_0xe55a('0x5')]=0x4;this[_0xe55a('0x6')]=_0xe55a('0x7');this[_0xe55a('0x8')]=_0x3af7c1['scheduledat'];this[_0xe55a('0x9')]=_0x3af7c1['type'];this['campaigntype']=_0x3af7c1[_0xe55a('0x9')]==='outbound'?_0xe55a('0xa'):_0x3af7c1[_0xe55a('0x9')];this[_0xe55a('0xb')]=_0x3af7c1['countbusyretry'];this[_0xe55a('0xc')]=_0x3af7c1['countcongestionretry'];this[_0xe55a('0xd')]=_0x3af7c1[_0xe55a('0xd')];this[_0xe55a('0xe')]=_0x3af7c1['countbusyretry']+_0x3af7c1[_0xe55a('0xc')]+_0x3af7c1[_0xe55a('0xd')]+_0x3af7c1[_0xe55a('0xf')]+_0x3af7c1['countdropretry']+_0x3af7c1[_0xe55a('0x10')]+_0x3af7c1[_0xe55a('0x11')]+_0x3af7c1[_0xe55a('0x12')];this['countnosuchnumberretry']=_0x3af7c1['countnosuchnumberretry'];this[_0xe55a('0x13')]=_0x3af7c1[_0xe55a('0x13')];this[_0xe55a('0x10')]=_0x3af7c1[_0xe55a('0x10')];this[_0xe55a('0x11')]=_0x3af7c1[_0xe55a('0x11')];this['countagentrejectretry']=_0x3af7c1[_0xe55a('0x12')];this['uniqueid']=_0x2d98fd[_0xe55a('0x14')];this[_0xe55a('0x15')]=_0x3af7c1[_0xe55a('0x16')];this[_0xe55a('0x17')]=_0x3af7c1[_0xe55a('0x18')];this[_0xe55a('0x19')]=_0x3af7c1[_0xe55a('0x19')];this[_0xe55a('0x1a')]=_0x3af7c1['responsetime'];this['endtime']=moment()[_0xe55a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xe55a('0x1c')]=getSeconds(_0x3af7c1[_0xe55a('0x1a')],_0x3af7c1[_0xe55a('0x19')]);this[_0xe55a('0x1d')]=0x0;this[_0xe55a('0x1e')]=getSeconds(this[_0xe55a('0x1f')],_0x3af7c1[_0xe55a('0x1a')]);this[_0xe55a('0xa')]=_0x3af7c1['queue'];this[_0xe55a('0x20')]=_0xe55a('0x21');this['reason']=_0x2d98fd[_0xe55a('0x22')];this[_0xe55a('0x23')]=_0x3af7c1[_0xe55a('0x23')];this[_0xe55a('0x24')]=_0x3af7c1[_0xe55a('0x24')];this['callbackat']=_0x3af7c1[_0xe55a('0x25')];this[_0xe55a('0x26')]=_0x3af7c1['recallme'];this[_0xe55a('0x27')]=_0x3af7c1[_0xe55a('0x27')];this[_0xe55a('0x28')]=_0x3af7c1[_0xe55a('0x28')];this[_0xe55a('0x29')]=_0x3af7c1[_0xe55a('0x29')];this[_0xe55a('0x2a')]=_0x3af7c1[_0xe55a('0x2a')];this[_0xe55a('0x2b')]=_0x3af7c1[_0xe55a('0x2b')];}module['exports']=Hangup;
\ No newline at end of file
index f06279a..18a873d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a20=['countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','queue','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0x5e7007,_0x5f58c5){var _0x4eddf3=function(_0xb186df){while(--_0xb186df){_0x5e7007['push'](_0x5e7007['shift']());}};_0x4eddf3(++_0x5f58c5);}(_0x1a20,0x1d2));var _0x01a2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1a20[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var _=require(_0x01a2('0x0'));var moment=require(_0x01a2('0x1'));function getSeconds(_0x4c9c54,_0x231c2f){var _0x47d760=moment(_0x4c9c54)['milliseconds'](0x0);var _0x27868f=moment(_0x231c2f)[_0x01a2('0x2')](0x0);return _0x47d760[_0x01a2('0x3')](_0x27868f,_0x01a2('0x4'));}function History(_0x975942){this[_0x01a2('0x5')]=_0x975942[_0x01a2('0x5')];this[_0x01a2('0x6')]=_0x975942[_0x01a2('0x6')]||undefined;this[_0x01a2('0x7')]=_0x975942[_0x01a2('0x7')];this[_0x01a2('0x8')]=_0x975942[_0x01a2('0x7')]==='outbound'?'queue':_0x975942['type'];this[_0x01a2('0x9')]=_0x975942[_0x01a2('0x9')];this['countcongestionretry']=_0x975942[_0x01a2('0xa')];this[_0x01a2('0xb')]=_0x975942['countnoanswerretry'];this[_0x01a2('0xc')]=_0x975942[_0x01a2('0x9')]+_0x975942[_0x01a2('0xa')]+_0x975942[_0x01a2('0xb')]+_0x975942[_0x01a2('0xd')]+_0x975942[_0x01a2('0xe')]+_0x975942['countabandonedretry']+_0x975942['countmachineretry']+_0x975942[_0x01a2('0xf')];this[_0x01a2('0xd')]=_0x975942['countnosuchnumberretry'];this[_0x01a2('0xe')]=_0x975942[_0x01a2('0xe')];this[_0x01a2('0x10')]=_0x975942[_0x01a2('0x10')];this[_0x01a2('0x11')]=_0x975942[_0x01a2('0x11')];this[_0x01a2('0xf')]=_0x975942[_0x01a2('0xf')];this[_0x01a2('0x12')]=_0x975942[_0x01a2('0x12')];this[_0x01a2('0x13')]=_0x975942[_0x01a2('0x14')];this[_0x01a2('0x15')]=_0x975942[_0x01a2('0x16')];this[_0x01a2('0x17')]=_0x975942[_0x01a2('0x17')];this['responsetime']=_0x975942[_0x01a2('0x18')];this[_0x01a2('0x19')]=_0x975942['responsetime'];this[_0x01a2('0x1a')]=getSeconds(_0x975942[_0x01a2('0x18')],_0x975942[_0x01a2('0x17')]);this[_0x01a2('0x1b')]=0x0;this['talktime']=0x0;this[_0x01a2('0x1c')]=_0x975942[_0x01a2('0x1c')];this[_0x01a2('0x1d')]=_0x975942[_0x01a2('0x1d')];this[_0x01a2('0x1e')]=_0x975942['callbackat'];this[_0x01a2('0x1f')]=_0x975942[_0x01a2('0x1f')];this[_0x01a2('0x20')]=_0x975942[_0x01a2('0x20')];this[_0x01a2('0x21')]=_0x975942[_0x01a2('0x21')];this[_0x01a2('0x22')]=_0x975942['UserId'];this['VoiceQueueId']=_0x975942[_0x01a2('0x23')];this['CampaignId']=_0x975942[_0x01a2('0x24')];this[_0x01a2('0x25')]=_0x975942[_0x01a2('0x25')]||'';this[_0x01a2('0x26')]=_0x975942[_0x01a2('0x26')]||'';}module[_0x01a2('0x27')]=History;
\ No newline at end of file
+var _0x17e9=['originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId'];(function(_0x387c2d,_0x1336f){var _0x230a18=function(_0x346b2b){while(--_0x346b2b){_0x387c2d['push'](_0x387c2d['shift']());}};_0x230a18(++_0x1336f);}(_0x17e9,0x142));var _0x917e=function(_0x22cccd,_0x3f1eae){_0x22cccd=_0x22cccd-0x0;var _0x5e38be=_0x17e9[_0x22cccd];return _0x5e38be;};'use strict';var util=require(_0x917e('0x0'));var _=require(_0x917e('0x1'));var moment=require(_0x917e('0x2'));function getSeconds(_0x4f5802,_0x14fcc3){var _0x3aa120=moment(_0x4f5802)[_0x917e('0x3')](0x0);var _0x17dc93=moment(_0x14fcc3)['milliseconds'](0x0);return _0x3aa120[_0x917e('0x4')](_0x17dc93,_0x917e('0x5'));}function History(_0x1a7fd8){this[_0x917e('0x6')]=_0x1a7fd8[_0x917e('0x6')];this[_0x917e('0x7')]=_0x1a7fd8[_0x917e('0x7')]||undefined;this[_0x917e('0x8')]=_0x1a7fd8[_0x917e('0x8')];this[_0x917e('0x9')]=_0x1a7fd8['type']===_0x917e('0xa')?_0x917e('0xb'):_0x1a7fd8[_0x917e('0x8')];this[_0x917e('0xc')]=_0x1a7fd8[_0x917e('0xc')];this[_0x917e('0xd')]=_0x1a7fd8[_0x917e('0xd')];this[_0x917e('0xe')]=_0x1a7fd8[_0x917e('0xe')];this[_0x917e('0xf')]=_0x1a7fd8[_0x917e('0xc')]+_0x1a7fd8[_0x917e('0xd')]+_0x1a7fd8[_0x917e('0xe')]+_0x1a7fd8[_0x917e('0x10')]+_0x1a7fd8['countdropretry']+_0x1a7fd8['countabandonedretry']+_0x1a7fd8[_0x917e('0x11')]+_0x1a7fd8[_0x917e('0x12')];this['countnosuchnumberretry']=_0x1a7fd8[_0x917e('0x10')];this['countdropretry']=_0x1a7fd8[_0x917e('0x13')];this[_0x917e('0x14')]=_0x1a7fd8[_0x917e('0x14')];this[_0x917e('0x11')]=_0x1a7fd8[_0x917e('0x11')];this[_0x917e('0x12')]=_0x1a7fd8['countagentrejectretry'];this['queue']=_0x1a7fd8[_0x917e('0xb')];this[_0x917e('0x15')]=_0x1a7fd8[_0x917e('0x16')];this[_0x917e('0x17')]=_0x1a7fd8[_0x917e('0x18')];this['starttime']=_0x1a7fd8[_0x917e('0x19')];this[_0x917e('0x1a')]=_0x1a7fd8[_0x917e('0x1a')];this[_0x917e('0x1b')]=_0x1a7fd8[_0x917e('0x1a')];this['ringtime']=getSeconds(_0x1a7fd8[_0x917e('0x1a')],_0x1a7fd8[_0x917e('0x19')]);this[_0x917e('0x1c')]=0x0;this[_0x917e('0x1d')]=0x0;this[_0x917e('0x1e')]=_0x1a7fd8[_0x917e('0x1e')];this[_0x917e('0x1f')]=_0x1a7fd8[_0x917e('0x1f')];this[_0x917e('0x20')]=_0x1a7fd8[_0x917e('0x20')];this[_0x917e('0x21')]=_0x1a7fd8[_0x917e('0x21')];this['ContactId']=_0x1a7fd8[_0x917e('0x22')];this['ListId']=_0x1a7fd8['ListId'];this[_0x917e('0x23')]=_0x1a7fd8[_0x917e('0x23')];this[_0x917e('0x24')]=_0x1a7fd8[_0x917e('0x24')];this[_0x917e('0x25')]=_0x1a7fd8[_0x917e('0x25')];this['originatecalleridnum']=_0x1a7fd8[_0x917e('0x26')]||'';this['originatecalleridname']=_0x1a7fd8[_0x917e('0x27')]||'';}module['exports']=History;
\ No newline at end of file
index cbb7e77..1686249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4214=['is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','starttime','[uniqueid]','sequence','enqueue','Action','status','channel','catch','voiceQueues','queue','[Dialer][checkChannel]','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','[countReScheduled]\x20','then','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','pick','ContactId','ListId','UserId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','isTrunkReachable','SIP/%s','reachable','unmonitored','uniqueid','isNil','variable','exten','xcally-motion-dialer','dialAMDActive','value','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','amd','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','countglobal','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','[rescheduleContact][Machine]','HANGUP','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countnoanswerretry','createStateFinal','syncHangup','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','[syncHangupIvr]','cause-txt','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','droptime','responsetime','dialQueueTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','countabandonedretry','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','locked','stateinterface','actionid','push','merge','idHopper','paused','queueStatusComplete','[booked][unlockQueueStatus]','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','run','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','INTERVAL_IS_NULL','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','indexOf','iftime\x20%s,%s','true','all','GLOBAL_INTERVAL_IS_OVERTIME','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','launchHandleIvr','handleIvr','dialActive','dialGlobalInterval','[syncQueueSummary]','checkIsTrunkReachable','dialTimezone','[syncCampaigns]','\x5cw{0,','pow','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-VOICEQUEUEID','tags','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','getQueue','response','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','callProgressDetecting','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','custom:agentnosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','abandonmentRate','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[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','Interval:\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','Error','[abandonmentRate]','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','exports','util','lodash','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','socket.io-emitter','redis','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','./action','./history','./agentComplete','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Interval','[ifTime][Action]','stringify','milliseconds','seconds','emit','type','outbound','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','Trunk','active','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','-----\x20Stats\x20Predictive\x20---','info','Dropped\x20Timeout:\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','predictiveIntervalAvgTalktime','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','---------------------------','diff','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED'];(function(_0x11c573,_0x9e7c6e){var _0x6b72de=function(_0x2e8a61){while(--_0x2e8a61){_0x11c573['push'](_0x11c573['shift']());}};_0x6b72de(++_0x9e7c6e);}(_0x4214,0x177));var _0x4421=function(_0x1c3dcf,_0x2bab00){_0x1c3dcf=_0x1c3dcf-0x0;var _0x343dc1=_0x4214[_0x1c3dcf];return _0x343dc1;};'use strict';var util=require(_0x4421('0x0'));var _=require(_0x4421('0x1'));var BPromise=require('bluebird');var uuid=require(_0x4421('0x2'));var moment=require(_0x4421('0x3'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x4421('0x4'));var ut=require(_0x4421('0x5'));var config=require(_0x4421('0x6'));var logger=require(_0x4421('0x7'))(_0x4421('0x8'));var loggerBooked=require(_0x4421('0x7'))(_0x4421('0x9'));var loggerPredictive=require(_0x4421('0x7'))(_0x4421('0xa'));var loggerPredictiveCalls=require('../../../config/logger')(_0x4421('0xb'));var loggerSyncQueueSummary=require(_0x4421('0x7'))(_0x4421('0xc'));var ami=require(_0x4421('0xd'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4421('0xe'))(new Redis(config[_0x4421('0xf')]));var cmHopper=require(_0x4421('0x10'));var cmHopperHistory=require(_0x4421('0x11'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x4421('0x12'));var Action=require(_0x4421('0x13'));var History=require(_0x4421('0x14'));var Final=require('./final');var AgentComplete=require(_0x4421('0x15'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require('./hangup');var ipAgi=process[_0x4421('0x16')][_0x4421('0x17')]||_0x4421('0x18');var strategy={'rrmemory':_0x4421('0x19'),'roundrobin':_0x4421('0x1a')};var Sequence=function(){};Sequence[_0x4421('0x1b')]['enqueue']=function(_0x283c77){this[_0x4421('0x1c')]=this[_0x4421('0x1c')]?this[_0x4421('0x1c')][_0x4421('0x1d')](_0x283c77):_0x283c77();};function Dialer(_0x4008a5,_0x7a9b1){this['sequence']=new Sequence();this['preview']=_0x7a9b1;this['voiceQueues']=_0x4008a5['voiceQueues'];this['campaigns']=_0x4008a5[_0x4421('0x1e')];this[_0x4421('0x1f')]=_0x4008a5[_0x4421('0x1f')];this['trunks']=_0x4008a5[_0x4421('0x20')];this[_0x4421('0x21')]=config['maxNumberOriginate']||0x2;this[_0x4421('0x22')]={};this[_0x4421('0x23')]={};this[_0x4421('0x24')]={};this[_0x4421('0x25')]={};this[_0x4421('0x26')]={};this[_0x4421('0x27')]={};this[_0x4421('0x28')]={};this[_0x4421('0x29')]={};this[_0x4421('0x2a')]={};this[_0x4421('0x2b')]={};ami['on'](_0x4421('0x2c'),this[_0x4421('0x2d')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x2f'),this[_0x4421('0x30')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x31'),this[_0x4421('0x32')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x33'),this[_0x4421('0x34')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x35'),this[_0x4421('0xc')][_0x4421('0x2e')](this));ami['on']('hangup',this['syncHangup']['bind'](this));ami['on'](_0x4421('0x36'),this[_0x4421('0x37')]['bind'](this));ami['on'](_0x4421('0x38'),this[_0x4421('0x39')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x3a'),this[_0x4421('0x3b')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x3c'),this[_0x4421('0x3d')]['bind'](this));this[_0x4421('0x3e')]();this[_0x4421('0x3f')]();}function isNotNull(_0x2e9cd8){return _0x2e9cd8!==null&&!_[_0x4421('0x40')](_0x2e9cd8);}function checkIsLoggedIn(_0x58119b,_0x58ed84){return function(){if(_0x58ed84<=0x0){_0x58119b[_0x4421('0x41')]=_0x4421('0x42');throw _0x58119b[_0x4421('0x43')]+_0x4421('0x44');}};}function isActive(_0x8abc3f){return _0x8abc3f;}function checkIsActive(_0x41fd5a,_0x1140ca){return function(){if(!isActive(_0x1140ca)){_0x41fd5a[_0x4421('0x41')]=_0x4421('0x45');throw _0x41fd5a[_0x4421('0x43')]+_0x4421('0x46');}};}function checkInterval(_0x2ebf5b){return function(){if(!isNotNull(_0x2ebf5b['Interval'])){_0x2ebf5b[_0x4421('0x41')]='INTERVAL_IS_NULL';throw _0x2ebf5b[_0x4421('0x43')]+_0x4421('0x47');}if(!isNotNull(_0x2ebf5b['Interval'][_0x4421('0x48')])){_0x2ebf5b['message']='INTERVAL_IS_NULL';throw _0x2ebf5b['name']+_0x4421('0x47');}if(!isNotNull(_[_0x4421('0x49')](_0x2ebf5b[_0x4421('0x4a')]['Intervals']))){_0x2ebf5b[_0x4421('0x41')]='INTERVAL_IS_NULL';throw _0x2ebf5b['name']+_0x4421('0x47');}};}function msgResponse(_0x898b9b,_0x4d2026,_0xf4e80b){return{'action':_0x898b9b,'response':_0x4d2026,'message':_0xf4e80b,'stack':_0xf4e80b};}function myreject(_0x394fd4){return function(_0x365370){return _0x394fd4(msgResponse(_0x4421('0x4b'),'Error',JSON[_0x4421('0x4c')](_0x365370)));};}function getSeconds(_0x4fe1ee,_0x3b42bb){var _0x6dccd4=moment(_0x4fe1ee)['milliseconds'](0x0);var _0x1c81d4=moment(_0x3b42bb)[_0x4421('0x4d')](0x0);return _0x6dccd4['diff'](_0x1c81d4,_0x4421('0x4e'));}function emit(_0x4a4ab8,_0x555222,_0x377de6){io['to'](_0x4a4ab8)[_0x4421('0x4f')](_0x555222,_0x377de6);}function emitVoiceQueueSummary(_0x180819){if(_0x180819[_0x4421('0x50')]===_0x4421('0x51')){var _0x3319e6={'id':_0x180819['id'],'name':_0x180819['name'],'strategy':_0x180819[_0x4421('0x52')],'answered':_0x180819['answered'],'available':_0x180819[_0x4421('0x53')],'loggedIn':_0x180819[_0x4421('0x54')],'pTalking':_0x180819[_0x4421('0x55')],'sumBillable':_0x180819[_0x4421('0x56')],'sumDuration':_0x180819[_0x4421('0x57')],'sumHoldTime':_0x180819['sumHoldTime']||0x0,'talking':_0x180819[_0x4421('0x58')],'total':_0x180819['total'],'type':_0x180819[_0x4421('0x50')],'unmanaged':_0x180819[_0x4421('0x59')],'abandoned':_0x180819[_0x4421('0x5a')],'waiting':_0x180819[_0x4421('0x5b')],'loggedInDb':_0x180819[_0x4421('0x5c')],'dialActive':_0x180819['dialActive'],'dialMethod':_0x180819[_0x4421('0x5d')],'dialOriginateCallerIdName':_0x180819[_0x4421('0x5e')],'dialOriginateCallerIdNumber':_0x180819['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x180819[_0x4421('0x5f')],'dialPrefix':_0x180819[_0x4421('0x60')],'outboundAnswerAgiCallsDay':_0x180819['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x180819['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x180819['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x180819[_0x4421('0x61')],'outboundCongestionCallsDay':_0x180819[_0x4421('0x62')],'outboundDropCallsDayACS':_0x180819[_0x4421('0x63')],'outboundDropCallsDayCallersExit':_0x180819[_0x4421('0x64')],'outboundDropCallsDayTimeout':_0x180819[_0x4421('0x65')],'outboundNoAnswerCallsDay':_0x180819[_0x4421('0x66')],'outboundNoSuchCallsDay':_0x180819[_0x4421('0x67')],'outboundOriginateFailureCallsDay':_0x180819['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x180819['outboundReCallsDay'],'outboundRejectCallsDay':_0x180819['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x180819[_0x4421('0x68')],'predictiveIntervalAnsweredCalls':_0x180819[_0x4421('0x69')],'predictiveIntervalAvgHoldtime':_0x180819[_0x4421('0x6a')],'predictiveIntervalAvgTalktime':_0x180819['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x180819['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x180819[_0x4421('0x6b')],'predictiveIntervalErlangCalls':_0x180819[_0x4421('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x180819['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x180819[_0x4421('0x6d')],'predictiveIntervalMultiplicativeFactor':_0x180819['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x180819['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x180819[_0x4421('0x6e')],'predictiveIntervalTotalCalls':_0x180819[_0x4421('0x6f')],'message':_0x180819[_0x4421('0x41')],'originated':_0x180819['originated'],'erlangCalls':_0x180819[_0x4421('0x70')],'erlangCallToSecond':_0x180819[_0x4421('0x71')],'erlangAbandonmentRate':_0x180819[_0x4421('0x72')],'erlangBusyFactor':_0x180819['erlangBusyFactor'],'startPredictive':_0x180819['startPredictive'],'startProgressive':_0x180819[_0x4421('0x28')]};if(_0x180819[_0x4421('0x73')]){_0x3319e6[_0x4421('0x73')]={'id':_0x180819['Trunk']['id'],'name':_0x180819[_0x4421('0x73')]['name'],'active':_0x180819[_0x4421('0x73')][_0x4421('0x74')],'callerid':_0x180819[_0x4421('0x73')][_0x4421('0x75')]};}if(_0x180819[_0x4421('0x4a')]){_0x3319e6['Interval']={'id':_0x180819[_0x4421('0x4a')]['id'],'name':_0x180819[_0x4421('0x4a')]['name']};}var _0xc41bad=md5(JSON[_0x4421('0x4c')](_0x3319e6));if(_0x180819[_0x4421('0x76')]!==_0xc41bad){_0x180819[_0x4421('0x76')]=_0xc41bad;emit(util[_0x4421('0x77')](_0x4421('0x78'),_0x3319e6['name']),_0x4421('0x79'),_0x3319e6);}}}function emitCampaignSummary(_0x22f136){if(_0x22f136[_0x4421('0x50')]===_0x4421('0x7a')){emit(util[_0x4421('0x77')](_0x4421('0x7b'),_0x22f136[_0x4421('0x43')]),_0x4421('0x7c'),_0x22f136);}}function checkGetDataPredictive(_0x2f5158){if(isNotNull(_0x2f5158)&&!_[_0x4421('0x49')](_0x2f5158)){loggerPredictive['info'](_0x4421('0x7d'));loggerPredictive[_0x4421('0x7e')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f5158['predictiveIntervalTotalCalls']);loggerPredictive[_0x4421('0x7e')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f5158[_0x4421('0x69')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x7f'),_0x2f5158[_0x4421('0x6b')]);loggerPredictive[_0x4421('0x7e')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f5158[_0x4421('0x80')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x81'),_0x2f5158[_0x4421('0x6a')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x82'),_0x2f5158[_0x4421('0x83')]);loggerPredictive[_0x4421('0x7e')]('---------------------------');if(_0x2f5158[_0x4421('0x6f')]>0x0){if(!_[_0x4421('0x40')](_0x2f5158[_0x4421('0x83')])&&_0x2f5158[_0x4421('0x83')]>0x0){return!![];}loggerPredictive[_0x4421('0x7e')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_['isUndefined'](_0x2f5158[_0x4421('0x6a')])&&_0x2f5158[_0x4421('0x6a')]>0x0){return!![];}loggerPredictive[_0x4421('0x7e')](_0x4421('0x84'));}else{loggerPredictive[_0x4421('0x7e')](_0x4421('0x85'));}}else{loggerPredictive[_0x4421('0x7e')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x512fa9){return function(_0xf1245a){loggerPredictive['info'](_0x4421('0x86'));loggerPredictive[_0x4421('0x7e')](_0x4421('0x87'),_0xf1245a['erlangCalls']);loggerPredictive[_0x4421('0x7e')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xf1245a['erlangCallToSecond']);loggerPredictive[_0x4421('0x7e')](_0x4421('0x88'),_0xf1245a[_0x4421('0x72')]);loggerPredictive['info'](_0x4421('0x89'),_0xf1245a[_0x4421('0x8a')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x88'),_0xf1245a[_0x4421('0x72')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x8b'));_['merge'](_0x512fa9,_0xf1245a);};}function getDiff(_0x42dae7){var _0x3042c8=moment()[_0x4421('0x4d')](0x0);var _0x4c9af5=moment(_0x42dae7)[_0x4421('0x4d')](0x0);return _0x3042c8[_0x4421('0x8c')](_0x4c9af5,_0x4421('0x4e'));}function ifInterval(_0x3ca61b,_0x598610){if(_[_0x4421('0x40')](_0x598610)){return![];}return getDiff(_0x598610)<_0x3ca61b*0x3c;}function freeVariablesPredictive(_0x247ca8){if(isNotNull(_0x247ca8)){if(!_[_0x4421('0x40')](_0x247ca8[_0x4421('0x28')])){_0x247ca8[_0x4421('0x28')]=undefined;loggerPredictive[_0x4421('0x7e')](_0x247ca8['name'],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x4421('0x40')](_0x247ca8[_0x4421('0x27')])){_0x247ca8[_0x4421('0x27')]=undefined;loggerPredictive[_0x4421('0x7e')](_0x247ca8['name'],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x4421('0x40')](_0x247ca8[_0x4421('0x8d')])){clearInterval(_0x247ca8[_0x4421('0x8d')]);_0x247ca8[_0x4421('0x8d')]=undefined;loggerPredictive[_0x4421('0x7e')](_0x247ca8[_0x4421('0x43')],_0x4421('0x8e'));}}}function erlangb(_0x38fd39,_0x103370){if(_0x103370===0x0){return 0x0;}var _0x544f0e=0x1;for(var _0x56e716=0x1;_0x56e716<=_0x103370;_0x56e716+=0x1){_0x544f0e=0x1+_0x544f0e*_0x56e716/_0x38fd39;}return 0x1/_0x544f0e;}function isVoiceQueueOutbound(_0x46a01c){return _0x46a01c==='outbound';}function isNotPreview(_0x17883c){return _0x17883c!==_0x4421('0x8f');}function isCampaignIvr(_0x5a5cc4){return _0x5a5cc4===_0x4421('0x7a');}function getCallerId(_0x1d68bf,_0x233607,_0x3fbe6f){if(!_[_0x4421('0x40')](_0x3fbe6f)&&typeof _0x3fbe6f==='string'&&!_[_0x4421('0x49')](_0x3fbe6f)){if(!_[_0x4421('0x40')](_0x233607)&&typeof _0x233607===_0x4421('0x90')&&!_[_0x4421('0x49')](_0x233607)){return util[_0x4421('0x77')](_0x4421('0x91'),_0x233607,_0x3fbe6f);}return util[_0x4421('0x77')]('\x22%s\x22\x20<%s>',_0x3fbe6f,_0x3fbe6f);}if(!_['isUndefined'](_0x1d68bf)&&typeof _0x1d68bf===_0x4421('0x90')&&!_[_0x4421('0x49')](_0x1d68bf)){return _0x1d68bf;}return _0x4421('0x92');}function loggerCatchQueueSummary(_0x2046a0,_0xe9b286){return function(_0x272ed7){freeVariablesPredictive(_0xe9b286);emitVoiceQueueSummary(_0xe9b286);emitCampaignSummary(_0xe9b286);loggerSyncQueueSummary['error'](_0x2046a0,util[_0x4421('0x93')](_0x272ed7,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0xf20003,_0x2c0b61){return function(_0x3c0231){loggerPredictive[_0x4421('0x94')](_0x2c0b61['name'],_0xf20003);loggerPredictive[_0x4421('0x94')](_0x3c0231[_0x4421('0x95')]);freeVariablesPredictive(_0x2c0b61);};}function loggerCatch(_0x4357d7){return function(_0x586a4b){logger[_0x4421('0x94')](_0x4357d7,util[_0x4421('0x93')](_0x586a4b,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x21d695){return _0x21d695&&!_[_0x4421('0x40')](_0x21d695)&&_0x21d695[_0x4421('0x96')]>0x0;}function decremetOriginate(_0x2d730e){if(!_['isUndefined'](_0x2d730e)&&_0x2d730e!==null){if(typeof _0x2d730e[_0x4421('0x97')]!==_0x4421('0x98')){if(_0x2d730e['originated']>0x0){_0x2d730e[_0x4421('0x97')]-=0x1;}else{logger[_0x4421('0x94')](_0x4421('0x99'));}}}else{logger['error'](_0x4421('0x9a'));}}function checkContactLowerLimitOriginate(_0x461c73,_0x3fb328,_0x29d7e1){if(_0x3fb328>_0x29d7e1){for(var _0x16df33=0x0;_0x16df33<_0x3fb328-_0x29d7e1;_0x16df33+=0x1){decremetOriginate(_0x461c73);}}}function loggerGetContactDialer(_0x578cf8,_0x26a5de,_0x14cf7a){return function(_0x10cb0b){checkContactLowerLimitOriginate(_0x26a5de,_0x14cf7a,0x0);logger[_0x4421('0x94')](_0x578cf8,util[_0x4421('0x93')](_0x10cb0b,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x2f9f77){return function(_0x3d56a6){if(isNotNull(_0x3d56a6)&&isNotNull(_0x3d56a6[0x0])){if(_0x3d56a6[0x0][_0x4421('0x9b')]>0x0){_0x2f9f77[_0x4421('0x41')]=_0x4421('0x9c');logger[_0x4421('0x7e')](_0x4421('0x9d')+_0x2f9f77[_0x4421('0x43')],_0x3d56a6[0x0][_0x4421('0x9b')],_0x4421('0x9e'));}else{_0x2f9f77[_0x4421('0x41')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x4421('0x7e')](_0x4421('0x9f')+_0x2f9f77[_0x4421('0x43')]);}}};}function notSendMessagesQueue(_0x2f98fb){if(_0x2f98fb[_0x4421('0xa0')]){freeVariablesPredictive(_0x2f98fb);if(_0x2f98fb[_0x4421('0x97')]===0x0&&_0x2f98fb[_0x4421('0x58')]===0x0&&_0x2f98fb['waiting']===0x0&&(_0x2f98fb[_0x4421('0x55')]||0x0)===0x0){_0x2f98fb[_0x4421('0xa0')]=![];_0x2f98fb[_0x4421('0x53')]=0x0;_0x2f98fb[_0x4421('0x41')]=_0x4421('0x45');loggerSyncQueueSummary[_0x4421('0x94')](_0x4421('0xa1'),_0x2f98fb[_0x4421('0x43')],_0x4421('0xa2'));}else{_0x2f98fb[_0x4421('0x41')]=_0x4421('0xa3');loggerSyncQueueSummary[_0x4421('0x94')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2f98fb[_0x4421('0x43')],_0x4421('0xa4'));}emitVoiceQueueSummary(_0x2f98fb);}}function notSendMessagesCampaign(_0x17cc00){if(_0x17cc00[_0x4421('0xa0')]){if(_0x17cc00['originated']===0x0){_0x17cc00[_0x4421('0xa0')]=![];_0x17cc00[_0x4421('0x41')]=_0x4421('0x45');loggerSyncQueueSummary[_0x4421('0x94')](_0x4421('0xa5'),_0x17cc00['name'],'is\x20not\x20active');}else{_0x17cc00[_0x4421('0x41')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x4421('0x94')](_0x4421('0xa5'),_0x17cc00[_0x4421('0x43')],_0x4421('0xa4'));}emitCampaignSummary(_0x17cc00);}}function createObjHistory(_0x56fb70,_0x4895e0,_0x357490,_0x50ab52,_0x2a70c0){_0x56fb70[_0x4421('0x41')]=_0x357490;var _0x5557a9=new Action(_0x56fb70,_0x4895e0);var _0x4693fe=new History(_0x5557a9);_0x4693fe[_0x4421('0xa6')]=_0x50ab52;_0x4693fe[_0x4421('0xa7')]=_0x2a70c0;_0x4693fe[_0x4421('0xa8')]=_0x5557a9[_0x4421('0xa9')];return _0x4693fe;}Dialer[_0x4421('0x1b')][_0x4421('0x3f')]=function(){var _0x4a5cde=this;setInterval(function(){_0x4a5cde['clearZombieChannels'](_0x4a5cde[_0x4421('0x25')],_0x4421('0xaa'));_0x4a5cde['clearZombieChannels'](_0x4a5cde[_0x4421('0x23')],'[actions]');},0x32c8);};Dialer[_0x4421('0x1b')]['clearZombieChannels']=function(_0x189a94,_0x5f1408){var _0x2e0c9f=this;for(var _0x3ef01f in _0x189a94){if(typeof _0x189a94[_0x3ef01f]!==_0x4421('0x98')){this[_0x4421('0xab')][_0x4421('0xac')](function(){if(!_['isNil'](_0x189a94[_0x3ef01f])){return ami[_0x4421('0xad')]({'action':_0x4421('0xae'),'channel':_0x189a94[_0x3ef01f][_0x4421('0xaf')]})[_0x4421('0xb0')](function(_0x5ddfde){if(_0x5ddfde['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x189a94[_0x3ef01f]&&_0x189a94[_0x3ef01f][_0x4421('0x50')]!==_0x4421('0x7a')){_0x2e0c9f['updateOriginated'](_0x2e0c9f[_0x4421('0xb1')][_0x189a94[_0x3ef01f][_0x4421('0xb2')]]);logger[_0x4421('0x94')](_0x4421('0xb3'),_0x5f1408,_0x3ef01f,_0x189a94[_0x3ef01f][_0x4421('0xb2')]);delete _0x189a94[_0x3ef01f];}if(_0x189a94[_0x3ef01f]&&_0x189a94[_0x3ef01f]['type']==='ivr'){_0x2e0c9f[_0x4421('0xb4')](_0x2e0c9f[_0x4421('0x1e')][_0x189a94[_0x3ef01f][_0x4421('0xb2')]]);logger['error'](_0x4421('0xb5'),_0x5f1408,_0x3ef01f,_0x189a94[_0x3ef01f][_0x4421('0xb2')]);delete _0x189a94[_0x3ef01f];}},0x2328);}});}});}}};Dialer[_0x4421('0x1b')][_0x4421('0xb6')]=function(_0x461a1a){return BPromise[_0x4421('0xb7')]()['then'](cmHopper[_0x4421('0xb6')](_0x461a1a))[_0x4421('0xb0')](loggerCatch(_0x4421('0xb8')));};Dialer[_0x4421('0x1b')]['checkIsBlackList']=function(_0x4529f4){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopperBlack['checkIsBlackList'](_0x4529f4))[_0x4421('0xb0')](loggerCatch(_0x4421('0xba')));};Dialer['prototype']['checkIsBlackListIvr']=function(_0x5033e6){return BPromise[_0x4421('0xb7')]()['then'](cmHopperBlack[_0x4421('0xbb')](_0x5033e6))[_0x4421('0xb0')](loggerCatch(_0x4421('0xbc')));};Dialer['prototype'][_0x4421('0xbd')]=function(_0x53a49a){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopperHistory['avgHandleTime'](_0x53a49a))['catch'](loggerCatch(_0x4421('0xbe')));};Dialer[_0x4421('0x1b')][_0x4421('0xbf')]=function(_0x24b2dd){return BPromise['resolve']()['then'](cmHopper['rescheduleContact'](_0x24b2dd))[_0x4421('0xb0')](loggerCatch(_0x4421('0xc0')));};Dialer['prototype'][_0x4421('0xc1')]=function(_0x2e8aa2,_0x249424,_0x2bd750){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0xc1')](_0x2e8aa2,_0x249424,_0x2bd750))['catch'](loggerCatch(_0x4421('0xc2')));};Dialer[_0x4421('0x1b')][_0x4421('0xc3')]=function(_0x3f25a6,_0xb9120c,_0x21e984,_0x39322a,_0x179bf8){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0xc3')](_0x3f25a6,_0xb9120c,_0x21e984,_0x39322a))['catch'](function(_0x5acc40){_0x179bf8[_0x4421('0xc4')]-=_0x21e984;_0x179bf8[_0x4421('0xc4')]=_0x179bf8[_0x4421('0xc4')]>0x0?_0x179bf8[_0x4421('0xc4')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x5acc40);});};Dialer[_0x4421('0x1b')]['getContactDialerIvr']=function(_0xbdccb1,_0x1db965,_0x3dcbab,_0x402c38){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0xc5')](_0xbdccb1,_0x1db965,_0x3dcbab))['catch'](function(_0x11a467){_0x402c38[_0x4421('0xc4')]-=_0x1db965;_0x402c38['temp']=_0x402c38['temp']>0x0?_0x402c38[_0x4421('0xc4')]:0x0;loggerCatch(_0x4421('0xc6'))(_0x11a467);});};Dialer['prototype'][_0x4421('0xc7')]=function(_0x3655fe){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](voiceQueueRt[_0x4421('0xc7')](_0x3655fe))['catch'](loggerCatch(_0x4421('0xc8')));};Dialer[_0x4421('0x1b')][_0x4421('0xc9')]=function(_0x2a9dc6){return BPromise[_0x4421('0xb7')]()['then'](cmHopper[_0x4421('0xc9')](_0x2a9dc6))[_0x4421('0xb0')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x4421('0x1b')][_0x4421('0xca')]=function(_0x730c65){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopperHistory['createHistory'](_0x730c65))['catch'](loggerCatch(_0x4421('0xcb')));};Dialer['prototype'][_0x4421('0xb4')]=function(_0x35f9b7){if(!_['isUndefined'](_0x35f9b7)&&_0x35f9b7!==null){if(typeof _0x35f9b7[_0x4421('0x97')]!==_0x4421('0x98')){if(_0x35f9b7[_0x4421('0x97')]>0x0){_0x35f9b7[_0x4421('0x97')]-=0x1;}else{logger[_0x4421('0x94')](_0x4421('0xcc'));}}}else{logger['error'](_0x4421('0xcd'));}};Dialer['prototype'][_0x4421('0xce')]=function(_0x3364d6,_0x78270c){var _0x3c8924=this;return function(_0x3f68be){_0x3c8924[_0x4421('0xb4')](_0x78270c);logger[_0x4421('0x94')](_0x3364d6,util[_0x4421('0x93')](_0x3f68be,{'showHidden':![],'depth':null}));};};Dialer[_0x4421('0x1b')][_0x4421('0xcf')]=function(_0x390661,_0x4d2be2,_0xa7b5cf){var _0x1f37f5={'state':0x19,'statedesc':'notFound'};this[_0x4421('0xb4')](_0x4d2be2);this[_0x4421('0xd0')](_['merge'](_0x1f37f5,_[_0x4421('0xd1')](_0xa7b5cf,[_0x4421('0xd2'),_0x4421('0xd3'),_0x4421('0xd4'),'VoiceQueueId',_0x4421('0xd5')])),_0x4421('0xd6'),_0x4421('0xd7'));logger['error'](_0x390661);};Dialer[_0x4421('0x1b')][_0x4421('0xd8')]=function(_0x49cda0){return _0x49cda0==='Success';};Dialer[_0x4421('0x1b')][_0x4421('0xd9')]=function(_0x56dd0c){return!_[_0x4421('0x40')](_0x56dd0c)&&_0x56dd0c&&!_[_0x4421('0x40')](_0x56dd0c[_0x4421('0x43')])&&!_[_0x4421('0x40')](_0x56dd0c[_0x4421('0x74')])&&_0x56dd0c[_0x4421('0x74')]&&(this['trunks'][util['format'](_0x4421('0xda'),_0x56dd0c[_0x4421('0x43')])][_0x4421('0xae')]===_0x4421('0xdb')||this[_0x4421('0x20')][util[_0x4421('0x77')](_0x4421('0xda'),_0x56dd0c['name'])][_0x4421('0xae')]===_0x4421('0xdc'));};Dialer[_0x4421('0x1b')][_0x4421('0xd0')]=function(_0x5dc033,_0x179085,_0x17dc35){this[_0x4421('0xca')](_0x5dc033)[_0x4421('0xb0')](loggerCatch(_0x179085));this[_0x4421('0xc9')](_0x5dc033)[_0x4421('0xb0')](loggerCatch(_0x17dc35));};Dialer['prototype'][_0x4421('0x39')]=function(_0x5f06d2){var _0x4d881d=this[_0x4421('0x25')][_0x5f06d2[_0x4421('0xdd')]];var _0x12aa80;if(!_[_0x4421('0xde')](_0x5f06d2)&&!_[_0x4421('0xde')](_0x5f06d2[_0x4421('0xdf')])&&!_[_0x4421('0xde')](_0x5f06d2[_0x4421('0xdf')]['amdstatus'])&&_0x5f06d2[_0x4421('0xe0')]===_0x4421('0xe1')&&_0x4d881d){if(_0x4d881d[_0x4421('0x50')]!=='ivr'&&this['voiceQueues'][_0x4d881d['queue']][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]==='HANGUP'){delete this['uniqueId'][_0x5f06d2[_0x4421('0xdd')]];this[_0x4421('0xb4')](this['voiceQueues'][_0x4d881d[_0x4421('0xb2')]]);this['voiceQueues'][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe4')]+=0x1;this[_0x4421('0xb1')][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe5')]+=0x1;_0x12aa80=new Hangup(_0x4d881d,_0x5f06d2);_0x12aa80[_0x4421('0xa6')]=0x12;_0x12aa80[_0x4421('0xa7')]=_0x4421('0xe6');_0x12aa80[_0x4421('0xe7')]=_0x4421('0xe8');ami['emit'](_0x4421('0xe9'),ut['buildObj'](_0x12aa80,_0x4421('0xea')));this[_0x4421('0xd0')](_0x12aa80,'[syncHangupInAMD][createHistory]',_0x4421('0xeb'));}if(_0x4d881d[_0x4421('0x50')]!==_0x4421('0x7a')&&this['voiceQueues'][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]===_0x4421('0xec')){var _0x44e643=this;return new BPromise(function(_0x2ebf50,_0x4a9927){delete _0x44e643[_0x4421('0x25')][_0x5f06d2[_0x4421('0xdd')]];_0x44e643[_0x4421('0xb4')](_0x44e643[_0x4421('0xb1')][_0x4d881d[_0x4421('0xb2')]]);_0x44e643[_0x4421('0xb1')][_0x4d881d[_0x4421('0xb2')]]['outboundAnswerCallsDay']+=0x1;_0x44e643['voiceQueues'][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe5')]+=0x1;var _0x438bcf=_0x44e643['voiceQueues'][_0x4d881d['queue']];var _0x27835a=new Hangup(_0x4d881d,_0x5f06d2);_0x27835a[_0x4421('0xa6')]=0x13;_0x27835a['statedesc']=_0x4421('0xed');_0x27835a[_0x4421('0xe7')]='AMD';_0x27835a[_0x4421('0xee')]+=0x1;_0x27835a[_0x4421('0xef')]+=0x1;_0x27835a[_0x4421('0xea')]=!![];ami[_0x4421('0x4f')](_0x4421('0xe9'),ut[_0x4421('0xf0')](_0x27835a,_0x4421('0xea')));_0x44e643[_0x4421('0xca')](_0x27835a)[_0x4421('0xb0')](loggerCatch(_0x4421('0xf1')));if(_0x27835a[_0x4421('0xf2')]+_0x27835a[_0x4421('0xf3')]+_0x27835a['countnoanswerretry']+_0x27835a[_0x4421('0xf4')]+_0x27835a[_0x4421('0xf5')]+_0x27835a['countabandonedretry']+_0x27835a[_0x4421('0xee')]+_0x27835a[_0x4421('0xf6')]>=_0x438bcf[_0x4421('0xf7')]){_0x44e643[_0x4421('0xf8')](_0x27835a,_0x2ebf50,_0x4a9927,_0x4421('0xf9'));}else{if(_0x27835a[_0x4421('0xee')]>=_0x438bcf[_0x4421('0xfa')]){_0x44e643['createStateFinal'](_0x27835a,_0x2ebf50,_0x4a9927,_0x4421('0xfb'));}else{_0x44e643['rescheduleContact']({'active':![],'countmachineretry':_0x27835a[_0x4421('0xee')],'scheduledat':moment()[_0x4421('0xfc')](_0x438bcf['dialMachineRetryFrequency'],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x27835a['ContactId'],'ListId':_0x27835a[_0x4421('0xd3')],'VoiceQueueId':_0x27835a[_0x4421('0xff')]||undefined,'CampaignId':_0x27835a['CampaignId']||undefined})['catch'](loggerCatch(_0x4421('0x100')));_0x2ebf50({'reschedule':0x1});}}});}if(_0x4d881d['type']==='ivr'&&this['campaigns'][_0x4d881d['queue']][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]===_0x4421('0x101')){delete this[_0x4421('0x25')][_0x5f06d2['uniqueid']];this[_0x4421('0xb4')](this[_0x4421('0x1e')][_0x4d881d[_0x4421('0xb2')]]);_0x12aa80=new Hangup(_0x4d881d,_0x5f06d2);_0x12aa80['state']=0x12;_0x12aa80[_0x4421('0xa7')]=_0x4421('0xe6');_0x12aa80[_0x4421('0xe7')]=_0x4421('0xe8');ami['emit'](_0x4421('0xe9'),ut[_0x4421('0xf0')](_0x12aa80,_0x4421('0xea')));this[_0x4421('0xd0')](_0x12aa80,_0x4421('0x102'),_0x4421('0x103'));}if(_0x4d881d[_0x4421('0x50')]==='ivr'&&this[_0x4421('0x1e')][_0x4d881d['queue']][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]===_0x4421('0xec')){var _0x44e643=this;return new BPromise(function(_0xfa56c2,_0x448d3b){delete _0x44e643[_0x4421('0x25')][_0x5f06d2[_0x4421('0xdd')]];_0x44e643['updateOriginated'](_0x44e643['campaigns'][_0x4d881d[_0x4421('0xb2')]]);_0x44e643[_0x4421('0x1e')][_0x4d881d['queue']][_0x4421('0xe4')]+=0x1;_0x44e643[_0x4421('0x1e')][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe5')]+=0x1;var _0xe3a5c2=_0x44e643[_0x4421('0x1e')][_0x4d881d[_0x4421('0xb2')]];var _0x2c1abf=new Hangup(_0x4d881d,_0x5f06d2);_0x2c1abf[_0x4421('0xa6')]=0x13;_0x2c1abf[_0x4421('0xa7')]=_0x4421('0xed');_0x2c1abf['membername']=_0x4421('0xe8');_0x2c1abf[_0x4421('0xee')]+=0x1;_0x2c1abf[_0x4421('0xef')]+=0x1;_0x2c1abf['amd']=!![];ami[_0x4421('0x4f')](_0x4421('0xe9'),ut[_0x4421('0xf0')](_0x2c1abf,_0x4421('0xea')));_0x44e643[_0x4421('0xca')](_0x2c1abf)[_0x4421('0xb0')](loggerCatch(_0x4421('0xf1')));if(_0x2c1abf[_0x4421('0xf2')]+_0x2c1abf[_0x4421('0xf3')]+_0x2c1abf[_0x4421('0x104')]+_0x2c1abf[_0x4421('0xf4')]+_0x2c1abf[_0x4421('0xf5')]+_0x2c1abf['countabandonedretry']+_0x2c1abf[_0x4421('0xee')]+_0x2c1abf[_0x4421('0xf6')]>=_0xe3a5c2['dialGlobalMaxRetry']){_0x44e643[_0x4421('0xf8')](_0x2c1abf,_0xfa56c2,_0x448d3b,'reason19\x20machine....');}else{if(_0x2c1abf[_0x4421('0xee')]>=_0xe3a5c2[_0x4421('0xfa')]){_0x44e643[_0x4421('0x105')](_0x2c1abf,_0xfa56c2,_0x448d3b,'reason\x2019\x20machine....');}else{_0x44e643[_0x4421('0xbf')]({'active':![],'countmachineretry':_0x2c1abf[_0x4421('0xee')],'scheduledat':moment()[_0x4421('0xfc')](_0xe3a5c2['dialMachineRetryFrequency'],'minutes')[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x2c1abf[_0x4421('0xd2')],'ListId':_0x2c1abf[_0x4421('0xd3')],'VoiceQueueId':_0x2c1abf[_0x4421('0xff')]||undefined,'CampaignId':_0x2c1abf[_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x100')));_0xfa56c2({'reschedule':0x1});}}});}}};Dialer[_0x4421('0x1b')][_0x4421('0x106')]=function(_0x56b556){var _0x375b06=this['uniqueId'][_0x56b556[_0x4421('0xdd')]];var _0x5f1306=this;var _0x5ed09d;if(_0x375b06&&_0x375b06[_0x4421('0x50')]==='ivr'){delete this[_0x4421('0x25')][_0x56b556[_0x4421('0xdd')]];this[_0x4421('0xb4')](this[_0x4421('0x1e')][_0x375b06[_0x4421('0xb2')]]);this[_0x4421('0x1e')][_0x375b06['queue']]['ivrAnswerCallsDay']+=0x1;_0x5ed09d=new Hangup(_0x375b06,_0x56b556);this[_0x4421('0xca')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x107')));this[_0x4421('0xc9')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x375b06&&_0x375b06['type']!==_0x4421('0x7a')&&isNotNull(this[_0x4421('0xb1')][_0x375b06['queue']][_0x4421('0x108')])){delete this[_0x4421('0x25')][_0x56b556['uniqueid']];this[_0x4421('0xb4')](this[_0x4421('0xb1')][_0x375b06['queue']]);this[_0x4421('0xb1')][_0x375b06[_0x4421('0xb2')]]['outboundAnswerCallsDay']+=0x1;this[_0x4421('0xb1')][_0x375b06['queue']][_0x4421('0xe5')]+=0x1;_0x5ed09d=new Hangup(_0x375b06,_0x56b556);_0x5ed09d[_0x4421('0xa6')]=0x10;_0x5ed09d[_0x4421('0xa7')]=_0x4421('0x109');_0x5ed09d[_0x4421('0xe7')]='AGI';this[_0x4421('0xca')](_0x5ed09d)['catch'](loggerCatch(_0x4421('0x107')));this[_0x4421('0xc9')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x10a')));}if(_0x375b06&&_0x375b06[_0x4421('0x50')]!==_0x4421('0x7a')&&!isNotNull(this['voiceQueues'][_0x375b06['queue']][_0x4421('0x108')])){delete this['uniqueId'][_0x56b556[_0x4421('0xdd')]];this[_0x4421('0xb4')](this['voiceQueues'][_0x375b06[_0x4421('0xb2')]]);this['voiceQueues'][_0x375b06['queue']][_0x4421('0x68')]+=0x1;_0x5ed09d=new Hangup(_0x375b06,_0x56b556);_0x5ed09d[_0x4421('0xa6')]=0xc;_0x5ed09d[_0x4421('0xa7')]=_0x56b556[_0x4421('0x10b')];_0x5ed09d[_0x4421('0xe7')]=_0x4421('0x10c');this['createHistory'](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x107')));this[_0x4421('0xc9')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x10a')));}};Dialer[_0x4421('0x1b')][_0x4421('0x34')]=function(_0x5d5f7e){var _0x8431ed=this['uniqueId'][_0x5d5f7e[_0x4421('0xdd')]];var _0x397f79=this;if(this[_0x4421('0xb1')][_0x5d5f7e[_0x4421('0xb2')]]){if(_0x8431ed&&_0x8431ed[_0x4421('0x50')]!=='ivr'){delete this[_0x4421('0x25')][_0x5d5f7e[_0x4421('0xdd')]];this[_0x4421('0xb1')][_0x5d5f7e[_0x4421('0xb2')]][_0x4421('0xe4')]+=0x1;var _0x273542=new AgentComplete(_0x8431ed,_0x5d5f7e);if(_0x5d5f7e[_0x4421('0x10d')]===_0x4421('0x10e')){_0x273542[_0x4421('0x10f')]=this[_0x4421('0xb1')][_0x5d5f7e[_0x4421('0xb2')]]['dialQueueProject2']&&this[_0x4421('0xb1')][_0x5d5f7e['queue']][_0x4421('0x110')]?moment()[_0x4421('0x77')](_0x4421('0xfe')):undefined;}this['createHistory'](_0x273542)[_0x4421('0xb0')](loggerCatch(_0x4421('0x111')));this[_0x4421('0xc9')](_0x273542)[_0x4421('0xb0')](loggerCatch(_0x4421('0x112')));}}};Dialer[_0x4421('0x1b')]['syncAgentConnect']=function(_0x379fd7){if(this[_0x4421('0xb1')][_0x379fd7['queue']]){if(this[_0x4421('0x25')][_0x379fd7[_0x4421('0xdd')]]&&this['uniqueId'][_0x379fd7['uniqueid']]['type']!==_0x4421('0x7a')){this[_0x4421('0xb4')](this['voiceQueues'][_0x379fd7[_0x4421('0xb2')]]);this[_0x4421('0x25')][_0x379fd7['uniqueid']][_0x4421('0x113')]=moment()['format'](_0x4421('0xfe'));}}};Dialer[_0x4421('0x1b')][_0x4421('0x114')]=function(_0x41db72){this[_0x4421('0xca')](_0x41db72)[_0x4421('0xb0')](loggerCatch(_0x4421('0x111')));this['moveContactManagedDialer'](_0x41db72)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer['prototype'][_0x4421('0x30')]=function(_0x161c8b){var _0x530815=this['uniqueId'][_0x161c8b[_0x4421('0xdd')]];var _0x2c50b8=this;if(this['voiceQueues'][_0x161c8b[_0x4421('0xb2')]]){if(_0x530815&&_0x530815['type']!=='ivr'){delete this['uniqueId'][_0x161c8b[_0x4421('0xdd')]];this[_0x4421('0xb4')](this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]]);_0x530815[_0x4421('0x115')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));var _0x5475b8=new QueueCallerAbandon(_0x530815,_0x161c8b);if(getSeconds(_0x530815[_0x4421('0x115')],_0x530815[_0x4421('0x116')])>=_0x530815[_0x4421('0x117')]){this[_0x4421('0xb1')][_0x161c8b['queue']][_0x4421('0x6b')]+=0x1;this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]]['outboundDropCallsDayTimeout']+=0x1;this[_0x4421('0xb1')][_0x161c8b['queue']][_0x4421('0x118')]+=0x1;_0x5475b8[_0x4421('0xa6')]=0xa;_0x5475b8[_0x4421('0xa7')]=_0x4421('0x119');_0x5475b8[_0x4421('0x11a')]=_0x4421('0x11b');_0x5475b8[_0x4421('0x10f')]=this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x11c')]?moment()['format'](_0x4421('0xfe')):undefined;_0x5475b8[_0x4421('0xf5')]+=0x1;_0x5475b8['countglobal']+=0x1;if(_0x5475b8[_0x4421('0xf5')]>=this['voiceQueues'][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x11d')]){this[_0x4421('0x114')](_0x5475b8);}else{this[_0x4421('0xbf')]({'active':![],'countdropretry':_0x5475b8['countdropretry'],'scheduledat':moment()[_0x4421('0xfc')](this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x11e')],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x530815['ContactId'],'ListId':_0x530815[_0x4421('0xd3')],'VoiceQueueId':_0x530815['VoiceQueueId']||undefined,'CampaignId':_0x530815['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));var _0x4b1e17=new History(_0x5475b8);_0x4b1e17[_0x4421('0xa6')]=0xa;_0x4b1e17[_0x4421('0xa7')]=_0x4421('0x119');_0x4b1e17[_0x4421('0xa9')]=moment()[_0x4421('0x77')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b1e17[_0x4421('0xa8')]=_0x4b1e17[_0x4421('0xa9')];_0x4b1e17[_0x4421('0x11f')]=_0x5475b8[_0x4421('0x11f')];_0x4b1e17[_0x4421('0x120')]=_0x5475b8[_0x4421('0x120')];this['createHistory'](_0x4b1e17)[_0x4421('0xb0')](loggerCatch(_0x4421('0x121')));}}else{this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x80')]+=0x1;this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x64')]+=0x1;_0x5475b8[_0x4421('0xa6')]=0xb;_0x5475b8[_0x4421('0xa7')]=_0x4421('0x122');_0x5475b8[_0x4421('0x11a')]=_0x4421('0x123');_0x5475b8[_0x4421('0x124')]+=0x1;_0x5475b8['countglobal']+=0x1;if(_0x5475b8[_0x4421('0x124')]>=this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x125')]){this[_0x4421('0x114')](_0x5475b8);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x5475b8['countabandonedretry'],'scheduledat':moment()['add'](this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]]['dialAbandonedRetryFrequency'],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x530815[_0x4421('0xd2')],'ListId':_0x530815[_0x4421('0xd3')],'VoiceQueueId':_0x530815[_0x4421('0xff')]||undefined,'CampaignId':_0x530815[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x126')));var _0x4b1e17=new History(_0x5475b8);_0x4b1e17[_0x4421('0xa6')]=0xb;_0x4b1e17[_0x4421('0xa7')]=_0x4421('0x122');_0x4b1e17[_0x4421('0xa9')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));_0x4b1e17['endtime']=_0x4b1e17[_0x4421('0xa9')];_0x4b1e17['calleridname']=_0x5475b8[_0x4421('0x11f')];_0x4b1e17[_0x4421('0x120')]=_0x5475b8[_0x4421('0x120')];this[_0x4421('0xca')](_0x4b1e17)[_0x4421('0xb0')](loggerCatch(_0x4421('0x127')));}}}}};Dialer['prototype'][_0x4421('0x37')]=function(_0x2fe996){if(this[_0x4421('0x23')][_0x2fe996[_0x4421('0xdd')]]){this[_0x4421('0x23')][_0x2fe996['uniqueid']][_0x4421('0xaf')]=_0x2fe996['channel'];}if(this['uniqueId'][_0x2fe996[_0x4421('0xdd')]]){this['uniqueId'][_0x2fe996['uniqueid']][_0x4421('0xaf')]=_0x2fe996['channel'];}};Dialer[_0x4421('0x1b')][_0x4421('0x3b')]=function(_0xd98cab){if(strategy[this[_0x4421('0xb1')][this[_0x4421('0x23')][_0xd98cab['actionid']]['queue']][_0x4421('0x52')]]===_0x4421('0x1a')){if(this[_0x4421('0x23')][_0xd98cab['actionid']]&&_[_0x4421('0xde')](this[_0x4421('0x23')][_0xd98cab['actionid']][_0x4421('0x128')])&&_0xd98cab[_0x4421('0xae')]==='1'&&_0xd98cab['paused']==='0'){if(this[_0x4421('0x1f')][_0xd98cab[_0x4421('0x129')]]){if(!this['agents'][_0xd98cab['stateinterface']][_0x4421('0x128')]){this[_0x4421('0x1f')][_0xd98cab[_0x4421('0x129')]][_0x4421('0x128')]=!![];this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]]['locked']=!![];this['actions'][_0xd98cab['actionid']]['stateinterface']=_0xd98cab[_0x4421('0x129')];}}}}else if((strategy[this[_0x4421('0xb1')][this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x52')]]||_0x4421('0x19'))==='rrmemory'){if(this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]]){if(this[_0x4421('0x1f')][_0xd98cab[_0x4421('0x129')]]){this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]][_0x4421('0x129')]=_0xd98cab[_0x4421('0x129')];if(_[_0x4421('0xde')](this['queueBooked'][this[_0x4421('0x23')][_0xd98cab['actionid']][_0x4421('0xb2')]])){this['queueBooked'][this['actions'][_0xd98cab[_0x4421('0x12a')]][_0x4421('0xb2')]]=[];}this['queueBooked'][this['actions'][_0xd98cab[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x12b')](_[_0x4421('0x12c')](_[_0x4421('0xd1')](this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]],[_0x4421('0x12d'),'stateinterface']),{'status':_0xd98cab['status'],'paused':_0xd98cab[_0x4421('0x12e')]}));}}}};function unlockQueueStatus(_0x3e1ab3,_0x513dea){setTimeout(function(){if(_[_0x4421('0x40')](_0x3e1ab3[_0x4421('0x12f')])){loggerBooked[_0x4421('0x94')]('[unlockQueueStatus][undefined]',_0x513dea);}_0x3e1ab3['queueStatusComplete']=!![];loggerBooked[_0x4421('0x7e')](_0x4421('0x130'),_0x513dea,JSON[_0x4421('0x4c')](_['pick'](_0x3e1ab3,['name','queueStatusComplete'])));},0x1f3);}Dialer[_0x4421('0x1b')][_0x4421('0x3d')]=function(_0x326669){var _0x14e636=this;var _0x3753e0=_0x14e636[_0x4421('0xb1')][_0x14e636[_0x4421('0x23')][_0x326669['actionid']][_0x4421('0xb2')]];if(strategy[this['voiceQueues'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]['strategy']]==='roundrobin'){if(this[_0x4421('0x23')][_0x326669['actionid']]&&this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0x129')]){this[_0x4421('0x8f')]['run'](this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0x12d')],this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['stateinterface'])[_0x4421('0xb0')](function(_0x18139e){logger[_0x4421('0x94')](_0x4421('0x131'),util[_0x4421('0x93')](_0x18139e,{'showHidden':![],'depth':null}));})['finally'](function(){_0x14e636[_0x4421('0xb4')](_0x14e636[_0x4421('0xb1')][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']]);_0x14e636[_0x4421('0x1f')][_0x14e636['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0x129')]][_0x4421('0x128')]=![];delete _0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);});}else{this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);this[_0x4421('0xbf')]({'active':![],'ContactId':this['actions'][_0x326669['actionid']][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this['actions'][_0x326669['actionid']][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x132')));delete this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);}}else if((strategy[this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x52')]]||_0x4421('0x19'))==='rrmemory'){var _0xa710ff;if(this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]&&!_[_0x4421('0x49')](this['queueBooked'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]])){if(this[_0x4421('0x2b')][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]){this['queueBookedRR'][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]=this[_0x4421('0x2b')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]?this[_0x4421('0x2b')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]:this['queueBooked'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]?this[_0x4421('0x2a')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x133')]||0x0:0x0;}this[_0x4421('0x2a')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x133')]=this[_0x4421('0x2b')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']];for(var _0x2a1d28=0x0;_0x2a1d28<this[_0x4421('0x2a')][this[_0x4421('0x23')][_0x326669['actionid']][_0x4421('0xb2')]][_0x4421('0x96')];_0x2a1d28+=0x1){_0xa710ff=rr(this['queueBooked'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);this[_0x4421('0x2b')][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']]=this[_0x4421('0x2a')][this['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x133')];if(_0xa710ff[_0x4421('0xae')]==='1'&&_0xa710ff[_0x4421('0x12e')]==='0'){break;}}if(!_[_0x4421('0xde')](_0xa710ff)){this[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]]['unlockRR']=_['isUndefined'](this[_0x4421('0x1f')][_0xa710ff['stateinterface']][_0x4421('0x134')])?!![]:this[_0x4421('0x1f')][_0xa710ff['stateinterface']]['unlockRR'];}loggerBooked[_0x4421('0x7e')](_0x4421('0x135'),_0x326669[_0x4421('0x12a')],_0x4421('0x136'),JSON['stringify'](_[_0x4421('0xd1')](this['agents'][_0xa710ff[_0x4421('0x129')]],[_0x4421('0x43'),_0x4421('0x134')])),'contactAgent-idHopper:\x20',JSON[_0x4421('0x4c')](_0xa710ff[_0x4421('0x12d')]));if(!_['isNil'](_0xa710ff)&&_0xa710ff['status']==='1'&&_0xa710ff[_0x4421('0x12e')]==='0'&&this[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]][_0x4421('0x134')]){this[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]][_0x4421('0x134')]=![];this[_0x4421('0x2a')][_0x14e636['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]=[];this[_0x4421('0x8f')][_0x4421('0x137')](_0xa710ff[_0x4421('0x12d')],_0xa710ff[_0x4421('0x129')])[_0x4421('0xb0')](function(_0x461b9a){logger[_0x4421('0x94')](_0x4421('0x131'),util[_0x4421('0x93')](_0x461b9a,{'showHidden':![],'depth':null}));})['finally'](function(){_0x14e636['updateOriginated'](_0x14e636['voiceQueues'][_0x14e636['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);setTimeout(function(){_0x14e636[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]][_0x4421('0x134')]=!![];loggerBooked[_0x4421('0x7e')](_0x4421('0x138'),_0x326669['actionid'],_0x4421('0x136'),JSON[_0x4421('0x4c')](_[_0x4421('0xd1')](_0x14e636[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]],[_0x4421('0x43'),_0x4421('0x134')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0xa710ff[_0x4421('0x12d')]));},0xc7);delete _0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0,_0x326669[_0x4421('0x12a')]);});}else{loggerBooked[_0x4421('0x7e')](_0x4421('0x139'));this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']]);this[_0x4421('0xbf')]({'active':![],'ContactId':this['actions'][_0x326669['actionid']][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x132')));delete this[_0x4421('0x23')][_0x326669['actionid']];unlockQueueStatus(_0x3753e0);}}else{loggerBooked['info'](_0x4421('0x13a'));this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669['actionid']][_0x4421('0xb2')]]);this[_0x4421('0xbf')]({'active':![],'ContactId':this['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x13b')));delete this['actions'][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);}}else{loggerBooked[_0x4421('0x7e')](_0x4421('0x13c'));this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x13d')));delete this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);}};Dialer[_0x4421('0x1b')][_0x4421('0x3e')]=function(){var _0x4f3617=this;return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0x13e')]({}))[_0x4421('0xb9')](function(){setInterval(function(){_0x4f3617[_0x4421('0x13f')]();},0x3e8);});};Dialer[_0x4421('0x1b')]['checkIsTrunkReachable']=function(_0x575354){var _0x23edf1=this;return function(){if(!_0x23edf1[_0x4421('0xd9')](_0x575354[_0x4421('0x73')])){if(!_0x23edf1[_0x4421('0xd9')](_0x575354['TrunkBackup'])){_0x575354['message']=_0x4421('0x140');throw _0x575354[_0x4421('0x43')]+_0x4421('0x141');}}};};Dialer[_0x4421('0x1b')][_0x4421('0x142')]=function(_0x579b51,_0x533c34,_0x38e22c,_0xc6504c){var _0x3f3dbc=this;return function(){var _0x2aea2f=!![];return _0x3f3dbc['ifTime'](_0x579b51,_0x533c34,_0x38e22c,_0xc6504c,_0x2aea2f);};};Dialer['prototype'][_0x4421('0x143')]=function(_0x42089b,_0x345a6b,_0x1fcb8c,_0xd30996){var _0x56a6c2=this;return function(){var _0x33bf7c=![];return _0x56a6c2[_0x4421('0x144')](_0x42089b[_0x4421('0x48')],_0x345a6b,_0x1fcb8c,_0xd30996,_0x33bf7c);};};Dialer['prototype'][_0x4421('0x144')]=function(_0xd8eec1,_0x4e8b52,_0xae9321,_0x172b3c,_0x9d19ad){var _0x4b440e=[];return new BPromise(function(_0xed5881,_0x968ee1){if(!isNotNull(_0xd8eec1)){_0x172b3c['message']=_0x4421('0x145');return _0x968ee1(msgResponse(_0x4421('0x144'),'Failure',_0xae9321+_0x4421('0x146')));}if(_[_0x4421('0x49')](_0xd8eec1)){_0x172b3c[_0x4421('0x41')]=_0x4421('0x147');return _0x968ee1(msgResponse(_0x4421('0x144'),_0x4421('0x148'),_0xae9321+_0x4421('0x149')));}if(_0x4e8b52&&_[_0x4421('0x40')](config[_0x4421('0x14a')][_0x4e8b52])){_0x172b3c[_0x4421('0x41')]=_0x4421('0x14b');return _0x968ee1(msgResponse(_0x4421('0x144'),'Failure',_0xae9321+_0x4421('0x14c')+_0x4e8b52));}if(_[_0x4421('0x14d')](_0xd8eec1)){for(var _0x10ea0b=0x0;_0x10ea0b<_0xd8eec1[_0x4421('0x96')];_0x10ea0b+=0x1){_0x4b440e['push'](ami[_0x4421('0xad')]({'action':_0x4421('0x14e'),'command':util[_0x4421('0x77')]('iftime\x20%s,%s',_0xd8eec1[_0x10ea0b]['interval'],!_['isUndefined'](config['timezones'][_0x4e8b52])?_0x4e8b52:'')})['then'](function(_0x51a305){return _0x51a305['content'][_0x4421('0x14f')]('true')>=0x0;})[_0x4421('0xb0')](myreject(_0x968ee1)));}}else{_0x4b440e[_0x4421('0x12b')](ami[_0x4421('0xad')]({'action':'command','command':util[_0x4421('0x77')](_0x4421('0x150'),_0xd8eec1,!_[_0x4421('0x40')](config[_0x4421('0x14a')][_0x4e8b52])?_0x4e8b52:'')})['then'](function(_0x42cebc){return _0x42cebc['content'][_0x4421('0x14f')](_0x4421('0x151'))>=0x0;})[_0x4421('0xb0')](myreject(_0x968ee1)));}BPromise[_0x4421('0x152')](_0x4b440e)[_0x4421('0xb9')](function(_0x8f2460){var _0x3fbb39=_['some'](_0x8f2460);if(_0x3fbb39){return _0xed5881(_0x3fbb39);}else{_0x172b3c['message']=_0x9d19ad?_0x4421('0x153'):'INTERVAL_IS_OVERTIME';return _0x968ee1(msgResponse('[ifTime][promiseAll]',_0x4421('0x148'),'Global:\x20'+_0x9d19ad+'\x20'+_0xae9321+_0x4421('0x154')+util[_0x4421('0x93')](_0xd8eec1,{'showHidden':![],'depth':null})+_0x4421('0x155')+_0x4e8b52));}})[_0x4421('0xb0')](function(_0x49ae85){return _0x968ee1(msgResponse(_0x4421('0x144'),_0x4421('0x148'),JSON[_0x4421('0x4c')](_0x49ae85)));});});};Dialer[_0x4421('0x1b')][_0x4421('0x156')]=function(_0x3317e5){var _0x513e12=this;return function(){switch(_0x3317e5[_0x4421('0x5d')]){case _0x4421('0x157'):freeVariablesPredictive(_0x3317e5);_0x513e12[_0x4421('0x158')](_0x3317e5,0x1);break;case _0x4421('0x159'):freeVariablesPredictive(_0x3317e5);_0x513e12[_0x4421('0x158')](_0x3317e5,_0x3317e5[_0x4421('0x15a')]);break;case _0x4421('0xa'):_0x513e12[_0x4421('0xa')](_0x3317e5);break;case _0x4421('0x9'):freeVariablesPredictive(_0x3317e5);_0x513e12['handlePower'](_0x3317e5,0x1);break;default:freeVariablesPredictive(_0x3317e5);logger[_0x4421('0x94')](_0x4421('0x15b'),_0x3317e5['name'],'method\x20not\x20recognized');}};};Dialer[_0x4421('0x1b')][_0x4421('0x15c')]=function(_0x3612db){var _0x394a4b=this;return function(){_0x394a4b[_0x4421('0x15d')](_0x3612db);};};Dialer[_0x4421('0x1b')][_0x4421('0xc')]=function(_0x33f85f){var _0x1b172f=this;if(isNotPreview(_0x33f85f[_0x4421('0x5d')])){if(isVoiceQueueOutbound(_0x33f85f[_0x4421('0x50')])&&isActive(_0x33f85f['dialActive'])){_0x33f85f[_0x4421('0xa0')]=!![];BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](checkIsLoggedIn(_0x33f85f,_0x33f85f['loggedIn']))['then'](checkIsActive(_0x33f85f,_0x33f85f[_0x4421('0x15e')]))[_0x4421('0xb9')](checkInterval(_0x33f85f))['then'](_0x1b172f['checkIsTrunkReachable'](_0x33f85f))[_0x4421('0xb9')](_0x1b172f[_0x4421('0x142')](_0x33f85f[_0x4421('0x15f')],_0x33f85f['dialTimezone'],_0x33f85f[_0x4421('0x43')],_0x33f85f))[_0x4421('0xb9')](_0x1b172f[_0x4421('0x143')](_0x33f85f[_0x4421('0x4a')],_0x33f85f['dialTimezone'],_0x33f85f[_0x4421('0x43')],_0x33f85f))[_0x4421('0xb9')](_0x1b172f['checkDialMethod'](_0x33f85f))[_0x4421('0xb0')](loggerCatchQueueSummary(_0x4421('0x160'),_0x33f85f));}else{notSendMessagesQueue(_0x33f85f);}}else{freeVariablesPredictive(_0x33f85f);}};Dialer[_0x4421('0x1b')][_0x4421('0x13f')]=function(){var _0x51d3e8=this;var _0x1c10e6;for(var _0x38d41a in this[_0x4421('0x1e')]){if(typeof this['campaigns'][_0x38d41a]!=='undefined'){_0x1c10e6=this['campaigns'][_0x38d41a];if(isCampaignIvr(_0x1c10e6[_0x4421('0x50')])&&isActive(_0x1c10e6[_0x4421('0x74')])){_0x1c10e6[_0x4421('0xa0')]=!![];BPromise['resolve']()[_0x4421('0xb9')](checkIsActive(_0x1c10e6,_0x1c10e6[_0x4421('0x74')]))[_0x4421('0xb9')](checkInterval(_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8[_0x4421('0x161')](_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8[_0x4421('0x142')](_0x1c10e6[_0x4421('0x15f')],_0x1c10e6[_0x4421('0x162')],_0x1c10e6[_0x4421('0x43')],_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8[_0x4421('0x143')](_0x1c10e6[_0x4421('0x4a')],_0x1c10e6[_0x4421('0x162')],_0x1c10e6[_0x4421('0x43')],_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8['launchHandleIvr'](_0x1c10e6))[_0x4421('0xb0')](loggerCatchQueueSummary(_0x4421('0x163'),_0x1c10e6));}else{notSendMessagesCampaign(_0x1c10e6);}}}};function getCallerIdRandom(_0x5744e0,_0x5d473b){var _0x52e6cd;var _0x58e7c6;var _0x2e34d3;if(_0x5d473b<=0x0){_0x5d473b=0x1;}_0x52e6cd=new RegExp(_0x4421('0x164')+_0x5d473b+'}$');_0x58e7c6=Math[_0x4421('0x165')](0xa,_0x5d473b-0x1);_0x2e34d3=Math[_0x4421('0x165')](0xa,_0x5d473b)-0x1;return util[_0x4421('0x77')]('%s',_['replace'](_0x5744e0,_0x52e6cd,_['random'](_0x58e7c6,_0x2e34d3)));}function extractCalleridName(_0x3e2d3a){var _0x49822f=_0x3e2d3a['match'](/"(.*?)"/);return _0x49822f?_0x49822f[0x1]:_0x3e2d3a;}function extractCalleridNumber(_0x3a40a6){var _0x576dbe=_0x3a40a6[_0x4421('0x166')](/<(.*?)>/);return _0x576dbe?_0x576dbe[0x1]:_0x3a40a6;}Dialer[_0x4421('0x1b')][_0x4421('0x167')]=function(_0x14f6c8,_0x5231dc){var _0x2ff5b7=this;var _0x2530cd=uuid['v4']();this[_0x4421('0x23')][_0x2530cd]=new Action(_0x14f6c8,_0x5231dc,_0x2530cd);return new BPromise(function(_0x43e3c9,_0x4602bc){if(_[_0x4421('0x40')](_0x14f6c8)&&typeof _0x14f6c8!=='object'){return _0x4602bc(msgResponse(_0x4421('0x168'),_0x4421('0x148'),_0x4421('0x169')));}if(_[_0x4421('0x40')](_0x5231dc[_0x4421('0x16a')][_0x4421('0x16b')])||_0x5231dc[_0x4421('0x16a')][_0x4421('0x16b')]===null){return _0x4602bc(msgResponse(_0x4421('0x168'),_0x4421('0x148'),_0x4421('0x16c')));}var _0x12f5d2={'XMD-CALLERID':_0x2ff5b7['actions'][_0x2530cd][_0x4421('0x16d')](),'XMD-AGI':_0x14f6c8[_0x4421('0x108')]?util[_0x4421('0x77')](_0x4421('0x16e'),ipAgi,_0x14f6c8[_0x4421('0x108')]):_0x4421('0x16f'),'XMD-AGIAFTER':_0x14f6c8[_0x4421('0x11c')]?util[_0x4421('0x77')]('\x22agi://%s/square,%s\x22',ipAgi,_0x14f6c8[_0x4421('0x11c')]):_0x4421('0x16f'),'XMD-QUEUE':_0x14f6c8[_0x4421('0x50')]===_0x4421('0x51')?util[_0x4421('0x77')]('\x22%s,%s%s,,,%s\x22',_0x14f6c8[_0x4421('0x43')],_0x14f6c8[_0x4421('0x170')]||'',_0x14f6c8[_0x4421('0x110')]?'c':'',_0x14f6c8[_0x4421('0x117')]||0x3):'NONE','XMD-CONTACTID':_0x5231dc[_0x4421('0xd2')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2ff5b7['actions'][_0x2530cd][_0x4421('0x16d')](),'XMD-AMD':_0x14f6c8[_0x4421('0xe2')]?_0x4421('0x171'):'NONE','XMD-DESTINATION':_0x4421('0xe1')};if(_0x14f6c8[_0x4421('0xe2')]){_0x12f5d2[_0x4421('0x172')]=_0x14f6c8[_0x4421('0x173')]||0x9c4;_0x12f5d2[_0x4421('0x174')]=_0x14f6c8[_0x4421('0x175')]||0x5dc;_0x12f5d2['XMD-AMDAFTERGREETINGSILENCE']=_0x14f6c8[_0x4421('0x176')]||0x320;_0x12f5d2[_0x4421('0x177')]=_0x14f6c8[_0x4421('0x178')]||0x1388;_0x12f5d2[_0x4421('0x179')]=_0x14f6c8[_0x4421('0x17a')]||0x64;_0x12f5d2['XMD-AMDBETWEENWORDSSILENCE']=_0x14f6c8[_0x4421('0x17b')]||0x32;_0x12f5d2[_0x4421('0x17c')]=_0x14f6c8['dialAMDMaximumNumberOfWords']||0x3;_0x12f5d2[_0x4421('0x17d')]=_0x14f6c8[_0x4421('0x17e')]||0x100;_0x12f5d2['XMD-AMDMAXIMUMWORDLENGTH']=_0x14f6c8['dialAMDMaximumWordLength']||0x1388;}if(_0x14f6c8[_0x4421('0x50')]===_0x4421('0x51')){_0x12f5d2[_0x4421('0x17f')]=_0x5231dc[_0x4421('0xff')];}else{_0x12f5d2['XMD-CAMPAIGNID']=_0x5231dc['CampaignId'];}for(var _0x63bc4 in _0x5231dc[_0x4421('0x16a')]){if(typeof _0x5231dc[_0x4421('0x16a')][_0x63bc4]!==_0x4421('0x98')){if(isNotNull(_0x5231dc[_0x4421('0x16a')][_0x63bc4])&&_0x63bc4!=='id'&&_0x63bc4!==_0x4421('0x180')&&_0x63bc4!=='createdAt'&&_0x63bc4!==_0x4421('0x181')){_0x12f5d2[util[_0x4421('0x77')](_0x4421('0x182'),_0x4421('0x183'),_['toUpper'](_0x63bc4))]=_0x5231dc[_0x4421('0x16a')][_0x63bc4];}}}var _0x31db5b=_0x2ff5b7['isTrunkReachable'](_0x14f6c8['Trunk'])?getCallerId(_0x14f6c8['Trunk'][_0x4421('0x75')],_0x14f6c8[_0x4421('0x5e')],_0x14f6c8[_0x4421('0x184')]>0x0?getCallerIdRandom(_0x14f6c8['dialOriginateCallerIdNumber'],_0x14f6c8[_0x4421('0x184')]):_0x14f6c8[_0x4421('0x185')]):getCallerId(_[_0x4421('0xde')](_0x14f6c8[_0x4421('0x186')])?_0x14f6c8[_0x4421('0x73')]['callerid']:_0x14f6c8[_0x4421('0x186')][_0x4421('0x75')],_0x14f6c8[_0x4421('0x5e')],_0x14f6c8[_0x4421('0x184')]>0x0?getCallerIdRandom(_0x14f6c8[_0x4421('0x185')],_0x14f6c8[_0x4421('0x184')]):_0x14f6c8[_0x4421('0x185')]);if(_0x31db5b){_0x12f5d2[_0x4421('0x187')]=_0x2ff5b7[_0x4421('0x23')][_0x2530cd]['originatecalleridname']=extractCalleridName(_0x31db5b);_0x12f5d2[_0x4421('0x188')]=_0x2ff5b7['actions'][_0x2530cd][_0x4421('0x189')]=extractCalleridNumber(_0x31db5b);}return ami['Action']({'actionid':_0x2530cd,'action':_0x4421('0x168'),'channel':_0x2ff5b7[_0x4421('0xd9')](_0x14f6c8[_0x4421('0x73')])?util['format'](_0x4421('0x18a'),_0x14f6c8[_0x4421('0x73')][_0x4421('0x43')],isNotNull(_0x14f6c8[_0x4421('0x60')])?_0x14f6c8[_0x4421('0x60')][_0x4421('0x18b')]()||'':'',_0x14f6c8[_0x4421('0x18c')]>0x0?_0x5231dc['Contact'][_0x4421('0x16b')][_0x4421('0x18d')](_0x14f6c8['dialCutDigit']):_0x5231dc[_0x4421('0x16a')]['phone']):util[_0x4421('0x77')](_0x4421('0x18a'),_['isNil'](_0x14f6c8[_0x4421('0x186')])?_0x14f6c8[_0x4421('0x73')][_0x4421('0x43')]:_0x14f6c8[_0x4421('0x186')][_0x4421('0x43')],isNotNull(_0x14f6c8[_0x4421('0x60')])?_0x14f6c8[_0x4421('0x60')]['trim']()||'':'',_0x14f6c8[_0x4421('0x18c')]>0x0?_0x5231dc[_0x4421('0x16a')]['phone']['substring'](_0x14f6c8[_0x4421('0x18c')]):_0x5231dc['Contact'][_0x4421('0x16b')]),'callerid':_0x31db5b,'Exten':_0x4421('0xe1'),'Context':_0x4421('0x18e'),'Priority':'1','variable':_0x12f5d2,'timeout':(_0x14f6c8[_0x4421('0x5f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2530cd})[_0x4421('0xb9')](function(_0x53c291){return _0x43e3c9(_0x53c291);})[_0x4421('0xb0')](function(_0x303d69){_0x14f6c8[_0x4421('0x18f')]+=0x1;var _0x326957=new History(_0x2ff5b7['actions'][_0x2530cd]);logger[_0x4421('0x94')](util[_0x4421('0x77')](_0x4421('0x190'),JSON['stringify'](_0x303d69)));_0x326957[_0x4421('0xa6')]=0xe;_0x326957['statedesc']=_0x4421('0x191');_0x326957['starttime']=moment()[_0x4421('0x77')](_0x4421('0xfe'));_0x326957[_0x4421('0xa8')]=_0x326957[_0x4421('0xa9')];_0x2ff5b7[_0x4421('0xca')](_0x326957)[_0x4421('0xb0')](loggerCatch(_0x4421('0x192')));_0x2ff5b7[_0x4421('0xc9')](_0x326957)['catch'](loggerCatch(_0x4421('0x192')))[_0x4421('0x1d')](function(){delete _0x2ff5b7['actions'][_0x2530cd];return _0x4602bc(msgResponse(_0x4421('0x168'),'Error','originate\x20action\x20Error'));});});});};Dialer[_0x4421('0x1b')][_0x4421('0x32')]=function(_0x217bea){var _0x32fd7e=this[_0x4421('0x23')][_0x217bea[_0x4421('0x12a')]];if(_0x32fd7e){delete this[_0x4421('0x23')][_0x217bea[_0x4421('0x12a')]];_0x32fd7e[_0x4421('0x116')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));var _0x3ae29b=_0x32fd7e['type']===_0x4421('0x7a')?this['campaigns'][_0x32fd7e[_0x4421('0xb2')]]:this['voiceQueues'][_0x32fd7e[_0x4421('0x193')]()];if(!this[_0x4421('0xd8')](_0x217bea[_0x4421('0x194')])){this[_0x4421('0xb4')](_0x3ae29b);return this['callProgressDetecting'](_0x32fd7e,_0x3ae29b,_0x217bea)[_0x4421('0xb0')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x4421('0x25')][_0x217bea[_0x4421('0xdd')]]=_0x32fd7e;}};Dialer[_0x4421('0x1b')][_0x4421('0x195')]=function(_0x775711,_0x723cbd,_0x2c2f57){var _0x526676=new History(_0x723cbd);if(_0x526676['countbusyretry']+_0x526676['countcongestionretry']+_0x526676[_0x4421('0x104')]+_0x526676['countnosuchnumberretry']+_0x526676[_0x4421('0xf5')]+_0x526676[_0x4421('0x124')]+_0x526676['countmachineretry']+_0x526676[_0x4421('0xf6')]>=_0x2c2f57[_0x4421('0xf7')]-0x1){return!![];}switch(_0x775711){case 0x3:if(_0x526676[_0x4421('0x104')]>=_0x2c2f57[_0x4421('0x196')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countnoanswerretry':_0x526676['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x197')],_0x4421('0xfd'))['format'](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x198')));break;case 0x5:if(_0x526676[_0x4421('0xf2')]>=_0x2c2f57[_0x4421('0x199')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countbusyretry':_0x526676[_0x4421('0xf2')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x19a')],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x19b')));break;case 0x8:if(_0x526676['countcongestionretry']>=_0x2c2f57[_0x4421('0x19c')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countcongestionretry':_0x526676[_0x4421('0xf3')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57['dialCongestionRetryFrequency'],_0x4421('0xfd'))['format'](_0x4421('0xfe')),'ContactId':_0x526676['ContactId'],'ListId':_0x526676['ListId'],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x19d')));break;case 0x0:if(_0x526676[_0x4421('0xf4')]>=_0x2c2f57[_0x4421('0x19e')]-0x1){return!![];}else{this[_0x4421('0xbf')]({'active':![],'countnosuchnumberretry':_0x526676['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x19f')],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1a0')));}break;case 0xa:if(_0x526676[_0x4421('0xf5')]>=_0x2c2f57[_0x4421('0x11d')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countdropretry':_0x526676[_0x4421('0xf5')]+=0x1,'scheduledat':moment()['add'](_0x2c2f57[_0x4421('0x11e')],'minutes')[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x526676[_0x4421('0x124')]>=_0x2c2f57[_0x4421('0x125')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countabandonedretry':_0x526676[_0x4421('0x124')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x1a1')],'minutes')[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676['CampaignId']||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x126')));break;case 0x13:if(_0x526676[_0x4421('0xee')]>=_0x2c2f57[_0x4421('0xfa')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x526676[_0x4421('0xee')]+=0x1,'scheduledat':moment()['add'](_0x2c2f57[_0x4421('0x1a2')],_0x4421('0xfd'))[_0x4421('0x77')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x100')));break;case 0x14:if(_0x526676[_0x4421('0xf6')]>=_0x2c2f57[_0x4421('0x1a3')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countagentrejectretry':_0x526676[_0x4421('0xf6')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57['dialAgentRejectRetryFrequency'],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676['ContactId'],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1a4')));break;default:return!![];}};Dialer[_0x4421('0x1b')][_0x4421('0x1a5')]=function(_0x59ed14,_0x1a14e7,_0x1fba2a){var _0x12e8ed=this;var _0x1c56a3=new History(_0x59ed14);return new BPromise(function(_0x346335,_0xb393bf){if(_[_0x4421('0x40')](_0x1a14e7)&&typeof _0x1a14e7!==_0x4421('0x1a6')){return _0xb393bf(msgResponse(_0x4421('0x1a7'),_0x4421('0x148'),_0x4421('0x1a8')));}if(_['isUndefined'](_0x1fba2a)&&typeof _0x1fba2a!==_0x4421('0x1a6')){return _0xb393bf(msgResponse(_0x4421('0x1a7'),_0x4421('0x148'),_0x4421('0x1a9')));}switch(_0x1fba2a[_0x4421('0x10d')]){case'0':_0x1a14e7[_0x4421('0x67')]+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x0;_0x1c56a3[_0x4421('0xa7')]='NoSuchNumber';_0x1c56a3[_0x4421('0xf4')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1aa'),ut[_0x4421('0xf0')](_0x59ed14,'nosuchnumber'));_0x12e8ed['createHistory'](_0x1c56a3)[_0x4421('0xb0')](loggerCatch(_0x4421('0xf1')));if(_0x12e8ed[_0x4421('0x195')](0x0,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf4')]>=_0x1a14e7['dialNoSuchNumberMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,'reason\x200\x20no\x20such\x20number....');}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1ab'));}}break;case'3':_0x1a14e7['outboundNoAnswerCallsDay']+=0x1;_0x1c56a3['state']=0x3;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x1ac');_0x1c56a3[_0x4421('0x104')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1ad'),ut[_0x4421('0xf0')](_0x59ed14,'noanswer'));_0x12e8ed[_0x4421('0xca')](_0x1c56a3)['catch'](loggerCatch(_0x4421('0x1ae')));if(_0x12e8ed[_0x4421('0x195')](0x3,_0x59ed14,_0x1a14e7)){if(_0x1c56a3['countnoanswerretry']>=_0x1a14e7['dialNoAnswerMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1af'));}else{_0x12e8ed['stateGlobal'](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1af'));}}break;case'5':_0x1a14e7[_0x4421('0x61')]+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x5;_0x1c56a3[_0x4421('0xa7')]='Busy';_0x1c56a3['countbusyretry']+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1b0'),ut[_0x4421('0xf0')](_0x59ed14,_0x4421('0x1b1')));_0x12e8ed[_0x4421('0xca')](_0x1c56a3)['catch'](loggerCatch(_0x4421('0x1b2')));if(_0x12e8ed[_0x4421('0x195')](0x5,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf2')]>=_0x1a14e7['dialBusyMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,'reason\x205\x20busy');}else{_0x12e8ed['stateGlobal'](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b3'));}}break;case'8':_0x1a14e7['outboundCongestionCallsDay']+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x8;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x1b4');_0x1c56a3[_0x4421('0xf3')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')]('custom:agentcongestion',ut[_0x4421('0xf0')](_0x59ed14,_0x4421('0x1b5')));_0x12e8ed['createHistory'](_0x1c56a3)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x12e8ed[_0x4421('0x195')](0x8,_0x59ed14,_0x1a14e7)){if(_0x1c56a3['countcongestionretry']>=_0x1a14e7[_0x4421('0x19c')]){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b6'));}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,'reason\x208\x20congestion');}}break;case'11':_0x1a14e7[_0x4421('0x1b7')]+=0x1;_0x1c56a3['state']=0xb;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x122');_0x1c56a3[_0x4421('0x124')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;_0x12e8ed['createHistory'](_0x1c56a3)[_0x4421('0xb0')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x12e8ed['checkRetriveMax'](0xb,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0x124')]>=_0x1a14e7['dialAbandonedMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b8'));}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b8'));}}break;case'20':_0x1a14e7[_0x4421('0x1b9')]+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x14;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x1ba');_0x1c56a3[_0x4421('0xf6')]+=0x1;_0x1c56a3['countglobal']+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1bb'),ut['buildObj'](_0x59ed14,_0x4421('0x1bc')));_0x12e8ed['createHistory'](_0x1c56a3)[_0x4421('0xb0')](loggerCatch(_0x4421('0x1bd')));if(_0x12e8ed[_0x4421('0x195')](0x14,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf6')]>=_0x1a14e7[_0x4421('0x1a3')]){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1be'));}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1be'));}}break;default:_0x1a14e7['outboundUnknownCallsDay']+=0x1;_0x1c56a3['state']=0xc;_0x1c56a3[_0x4421('0xa7')]=_0x1fba2a[_0x4421('0x10d')];_0x12e8ed[_0x4421('0xca')](_0x1c56a3)['catch'](loggerCatch(_0x4421('0x1bf')));if(_0x12e8ed[_0x4421('0x195')](_0x1fba2a['reason'],_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf2')]+_0x1c56a3[_0x4421('0xf3')]+_0x1c56a3['countnoanswerretry']+_0x1c56a3['countnosuchnumberretry']+_0x1c56a3[_0x4421('0xf5')]+_0x1c56a3[_0x4421('0x124')]+_0x1c56a3['countmachineretry']+_0x1c56a3[_0x4421('0xf6')]>=_0x1a14e7[_0x4421('0xf7')]){_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x1fba2a[_0x4421('0x10d')]);}else{_0x12e8ed['createStateFinal'](_0x1c56a3,_0x346335,_0xb393bf,_0x1fba2a[_0x4421('0x10d')]);}}}});};Dialer[_0x4421('0x1b')][_0x4421('0xf8')]=function(_0x3ea6e1,_0x18db1e,_0x202261,_0x4db12a){var _0x3ab23e=new Final(_0x3ea6e1);_0x3ab23e[_0x4421('0xa6')]=0xf;_0x3ab23e[_0x4421('0xa7')]=_0x4421('0x1c0');this[_0x4421('0x105')](_0x3ab23e,_0x18db1e,_0x202261,_0x4db12a);};Dialer[_0x4421('0x1b')][_0x4421('0x105')]=function(_0x95f4cc,_0x3e8160,_0x3fef75,_0x15561b){this[_0x4421('0xc9')](_0x95f4cc)[_0x4421('0xb9')](function(){return _0x3e8160(msgResponse(_0x4421('0x1a7'),'Success',_0x15561b));})[_0x4421('0xb0')](function(){return _0x3fef75(msgResponse(_0x4421('0x1c1'),'Failure',_0x4421('0x1c2')));});};Dialer['prototype'][_0x4421('0xa')]=function(_0x1b7672){var _0x34fe37=_0x1b7672[_0x4421('0x1c3')]/0x64;var _0x37bd8b=_0x1b7672[_0x4421('0x65')]/(_0x1b7672[_0x4421('0x65')]+_0x1b7672[_0x4421('0xe4')]);var _0x3d6697=Math['round'](_0x1b7672['predictiveIntervalAvailable']*(_0x1b7672[_0x4421('0x1c4')]/0x64));var _0x499dcd=Math['round'](_0x1b7672[_0x4421('0x6e')]*(_0x1b7672['predictiveIntervalMinThreshold']/0x64));var _0x4fac39=_0x1b7672[_0x4421('0x53')]+_0x1b7672[_0x4421('0x58')];var _0x848b8a=Math['floor'](_0x1b7672[_0x4421('0x70')]*_0x1b7672[_0x4421('0x72')]*_0x1b7672['predictiveIntervalHitRate']*_0x1b7672['predictiveIntervalMultiplicativeFactor']);if(_[_0x4421('0x40')](_0x1b7672[_0x4421('0x28')])){if(!_[_0x4421('0x40')](_0x1b7672['startPredictive'])){_0x1b7672[_0x4421('0x27')]=undefined;loggerPredictive['error'](_0x4421('0x1c5'),_0x4421('0x1c6'));}if(!_[_0x4421('0x40')](_0x1b7672[_0x4421('0x8d')])){loggerPredictive[_0x4421('0x94')](_0x4421('0x1c5'),_0x4421('0x1c7'));clearInterval(_0x1b7672[_0x4421('0x8d')]);_0x1b7672[_0x4421('0x8d')]=undefined;}_0x1b7672['startProgressive']=moment()['format'](_0x4421('0xfe'));loggerPredictive[_0x4421('0x7e')](_0x1b7672['name'],_0x4421('0x1c8'),_0x1b7672[_0x4421('0x28')]);this[_0x4421('0x158')](_0x1b7672,0x1);}else if(ifInterval(_0x1b7672[_0x4421('0x1c9')],_0x1b7672[_0x4421('0x28')])){this[_0x4421('0x158')](_0x1b7672,0x1);loggerPredictiveCalls[_0x4421('0x7e')](_0x4421('0x1ca'),_0x1b7672[_0x4421('0x28')],_0x1b7672[_0x4421('0x43')]);_0x1b7672['erlangCalls']=0x0;_0x1b7672['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x34fe37<_0x37bd8b&&_0x1b7672[_0x4421('0x1cb')]===_0x4421('0x1cc')){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x4421('0x1cd'),_0x4421('0x1ce'),_0x37bd8b,'startProgressive',_0x1b7672['name']);}else if(_0x848b8a<_0x1b7672[_0x4421('0x118')]&&_0x1b7672['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x4421('0x1cf'),_0x4421('0x1d0'),_0x848b8a,_0x4421('0x1d1'),_0x1b7672[_0x4421('0x118')],_0x4421('0x28'),_0x1b7672[_0x4421('0x43')]);}else if(!ifInterval(_0x1b7672[_0x4421('0x1c9')],_0x1b7672['startProgressive'])&&_[_0x4421('0x40')](_0x1b7672[_0x4421('0x27')])&&!_[_0x4421('0x40')](_0x1b7672[_0x4421('0x28')])){_0x1b7672[_0x4421('0x27')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));loggerPredictive[_0x4421('0x7e')](_0x1b7672[_0x4421('0x43')],_0x4421('0x1d2'),_0x1b7672[_0x4421('0x27')]);this[_0x4421('0xbd')](_0x1b7672[_0x4421('0x1c9')])['then'](this['getDataPredictive'](_0x1b7672))['then'](mergeDataErlangB(_0x1b7672))[_0x4421('0xb9')](this[_0x4421('0x1d3')](_0x1b7672))[_0x4421('0xb0')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x1b7672));}else if(!ifInterval(_0x1b7672['dialPredictiveInterval'],_0x1b7672[_0x4421('0x27')])){_0x1b7672[_0x4421('0x118')]=0x0;_0x1b7672[_0x4421('0x27')]=moment()['format'](_0x4421('0xfe'));loggerPredictive['info'](_0x1b7672[_0x4421('0x43')],'recalculate\x20predictive\x20at',_0x1b7672['startPredictive']);clearInterval(_0x1b7672[_0x4421('0x8d')]);_0x1b7672['handlePredictive']=undefined;this[_0x4421('0xbd')](_0x1b7672[_0x4421('0x1c9')])[_0x4421('0xb9')](this['getDataPredictive'](_0x1b7672))[_0x4421('0xb9')](mergeDataErlangB(_0x1b7672))[_0x4421('0xb9')](this[_0x4421('0x1d3')](_0x1b7672))['catch'](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x1b7672));}else if(_0x1b7672[_0x4421('0x6e')]&&_0x4fac39<_0x1b7672[_0x4421('0x6e')]-_0x499dcd){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x1b7672[_0x4421('0x43')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x4fac39,_0x4421('0x1d4'),_0x1b7672['predictiveIntervalAvailable'],'-',_0x499dcd,'=',_0x1b7672[_0x4421('0x6e')]-_0x499dcd,')');}else if(_0x1b7672['predictiveIntervalAvailable']&&_0x4fac39>_0x1b7672[_0x4421('0x6e')]+_0x3d6697){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x1b7672[_0x4421('0x43')],_0x4421('0x1d5'),_0x4fac39,')\x20are\x20more\x20than\x20threshold\x20(',_0x1b7672[_0x4421('0x6e')],'+',_0x3d6697,'=',_0x1b7672['predictiveIntervalAvailable']+_0x3d6697,')');}};Dialer[_0x4421('0x1b')]['getDataPredictive']=function(_0x5d3049){var _0x9bab0e=this;return function(_0xfc2959){return new BPromise(function(_0x2270b,_0x5561c8){_[_0x4421('0x12c')](_0x5d3049,_0xfc2959[0x0]);if(checkGetDataPredictive(_0xfc2959[0x0])){var _0x5a0f18=_0x5d3049[_0x4421('0x6e')]=_0x5d3049[_0x4421('0x58')]+_0x5d3049[_0x4421('0x53')];var _0x55cf88=_0x5d3049[_0x4421('0x1c9')]*0x3c;var _0x295582=_0xfc2959[0x0][_0x4421('0x83')]+_0xfc2959[0x0][_0x4421('0x6a')];var _0x32b8a5=(_0xfc2959[0x0][_0x4421('0x69')]+_0xfc2959[0x0][_0x4421('0x6b')]+_0xfc2959[0x0][_0x4421('0x80')])/_0xfc2959[0x0]['predictiveIntervalTotalCalls'];_0x5d3049[_0x4421('0x6d')]=_0x32b8a5>0x0?_0x32b8a5:0x1;switch(_0x5d3049[_0x4421('0x1cb')]){case'dropRate':var _0x30d4eb=_0x5d3049['dialPredictiveOptimizationPercentage']/0x64;return _0x9bab0e['abandonmentRate'](_0x5a0f18,_0x55cf88,_0x295582,_0x32b8a5,_0x30d4eb)[_0x4421('0xb9')](function(_0x49dcf8){return _0x2270b(_0x49dcf8);});case _0x4421('0x1d6'):var _0x145334=_0x5d3049[_0x4421('0x1c3')]/0x64;return _0x9bab0e[_0x4421('0x1d7')](_0x5a0f18,_0x55cf88,_0x295582,_0x32b8a5,_0x145334)['then'](function(_0x41a7ba){return _0x2270b(_0x41a7ba);});default:return _0x5561c8(msgResponse(_0x4421('0x1d8'),_0x4421('0x148'),_0x4421('0x1d9')));}}else{return _0x5561c8(msgResponse(_0x4421('0x1d8'),_0x4421('0x148'),_0x4421('0x1da')));}});};};Dialer['prototype'][_0x4421('0x1db')]=function(_0x2d05df){var _0x62d104=this;return function(_0x4bf769){return new BPromise(function(_0x1fdbc2,_0xce80c2){_[_0x4421('0x12c')](_0x2d05df,_0x4bf769[0x0]);if(checkGetDataPredictive(_0x4bf769[0x0])){loggerPredictive[_0x4421('0x7e')](JSON[_0x4421('0x4c')](_0x4bf769[0x0]));if(_0x2d05df[_0x4421('0x1cb')]===_0x4421('0x1cc')){return _0x62d104['getVoiceQueueRtPauses'](_0x2d05df['id'])['then'](function(_0x45af44){var _0x181390=_0x2d05df[_0x4421('0x54')]-_0x45af44[0x0][_0x4421('0x1dc')];var _0x510344=_0x2d05df[_0x4421('0x1c9')]*0x3c;var _0x535117=_0x4bf769[0x0]['predictiveIntervalAvgTalktime']+_0x4bf769[0x0][_0x4421('0x6a')];var _0x4eaff3=(_0x4bf769[0x0][_0x4421('0x69')]+_0x4bf769[0x0][_0x4421('0x6b')]+_0x4bf769[0x0][_0x4421('0x80')])/_0x4bf769[0x0][_0x4421('0x6f')];var _0x3ade9e=_0x2d05df[_0x4421('0x1c3')]/0x64;_0x2d05df[_0x4421('0x1dd')]=_0x45af44[0x0][_0x4421('0x1dc')]||0x0;_0x2d05df[_0x4421('0x6d')]=_0x4eaff3>0x0?_0x4eaff3:0x1;return _0x62d104[_0x4421('0x1de')](_0x181390,_0x510344,_0x535117,_0x4eaff3,_0x3ade9e);})['then'](function(_0x4d5387){return _0x1fdbc2(_0x4d5387);})[_0x4421('0xb0')](function(_0x450452){return _0xce80c2(msgResponse(_0x4421('0x1df'),'Failure',JSON[_0x4421('0x4c')](_0x450452)));});}if(_0x2d05df[_0x4421('0x1cb')]===_0x4421('0x1d6')){return _0x62d104[_0x4421('0xc7')](_0x2d05df['id'])[_0x4421('0xb9')](function(_0x3314b9){var _0x37eb58=_0x2d05df[_0x4421('0x54')]-_0x3314b9[0x0][_0x4421('0x1dc')];var _0x49c6d9=_0x2d05df['dialPredictiveInterval']*0x3c;var _0xbee3c0=_0x4bf769[0x0]['predictiveIntervalAvgTalktime']+_0x4bf769[0x0]['predictiveIntervalAvgHoldtime'];var _0x280829=(_0x4bf769[0x0][_0x4421('0x69')]+_0x4bf769[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x4bf769[0x0][_0x4421('0x80')])/_0x4bf769[0x0][_0x4421('0x6f')];var _0x25f39f=_0x2d05df[_0x4421('0x1c3')]/0x64;_0x2d05df[_0x4421('0x1dd')]=_0x3314b9[0x0][_0x4421('0x1dc')]||0x0;_0x2d05df[_0x4421('0x6d')]=_0x280829>0x0?_0x280829:0x1;return _0x62d104[_0x4421('0x1d7')](_0x37eb58,_0x49c6d9,_0xbee3c0,_0x280829,_0x25f39f);})['then'](function(_0x3ea367){return _0x1fdbc2(_0x3ea367);})['catch'](function(_0x2b1e41){return _0xce80c2(msgResponse(_0x4421('0x1df'),_0x4421('0x148'),JSON[_0x4421('0x4c')](_0x2b1e41)));});}}else{return _0xce80c2(msgResponse(_0x4421('0x1d8'),_0x4421('0x148'),_0x4421('0x1da')));}});};};Dialer[_0x4421('0x1b')][_0x4421('0x1d3')]=function(_0x3973c2){var _0x4c3606=this;return function(){var _0x43ab1f=0x0;var _0x211598=Math[_0x4421('0x1e0')](_0x3973c2[_0x4421('0x71')]*0x3e8);if(_0x211598>0x0){_0x211598=_0x211598<0x64?0x64:_0x211598;loggerPredictive['info'](_0x3973c2[_0x4421('0x43')],_0x4421('0x1e1'),_0x211598,_0x4421('0x4d'));_0x3973c2[_0x4421('0x8d')]=setInterval(function(){_0x4c3606[_0x4421('0x8d')](_0x3973c2);loggerPredictiveCalls[_0x4421('0x7e')]('[handlePredictive]',_0x43ab1f+=0x1);},_0x211598);}else{loggerPredictive[_0x4421('0x7e')](_0x3973c2[_0x4421('0x43')],_0x4421('0x1e2'));}};};Dialer[_0x4421('0x1b')][_0x4421('0x1e3')]=function(_0x4d0366,_0x3c3c0e){var _0x23fb24=this;return function(_0x4e34b7){if(_['isEmpty'](_0x4e34b7)){if(_[_0x4421('0xde')](_0x3c3c0e['UserId'])||!_0x3c3c0e[_0x4421('0x1e4')]){if(_0x4d0366[_0x4421('0x5d')]===_0x4421('0x9')){_0x4d0366['queueStatusComplete']=_[_0x4421('0x40')](_0x4d0366[_0x4421('0x12f')])?!![]:_0x4d0366[_0x4421('0x12f')];var _0x34d88b=uuid['v4']();_0x23fb24[_0x4421('0x23')][_0x34d88b]=new Action(_0x4d0366,_0x3c3c0e,_0x34d88b);loggerBooked[_0x4421('0x7e')](_0x4421('0x1e5'),_0x34d88b,_0x4421('0x1e6'),JSON['stringify'](_0x4d0366[_0x4421('0x12f')]),_0x4421('0x1e7'),_0x4d0366['name']);if(_0x4d0366[_0x4421('0x12f')]){_0x4d0366['queueStatusComplete']=![];_0x23fb24['queueBooked'][_0x23fb24['actions'][_0x34d88b][_0x4421('0xb2')]]=[];ami['Action']({'actionid':_0x34d88b,'action':_0x4421('0x1e8'),'queue':_0x4d0366[_0x4421('0x43')]})[_0x4421('0xb0')](function(){_0x23fb24[_0x4421('0xb4')](_0x4d0366);_0x23fb24[_0x4421('0xbf')]({'active':![],'ContactId':_0x23fb24['actions'][_0x34d88b][_0x4421('0xd2')],'ListId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd3')],'VoiceQueueId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xff')]||undefined,'CampaignId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x23fb24[_0x4421('0x23')][_0x34d88b];});}else{loggerBooked[_0x4421('0x7e')](_0x4421('0x1e9'),JSON[_0x4421('0x4c')](_0x4d0366[_0x4421('0x12f')]),_0x4421('0x1e7'),_0x4d0366[_0x4421('0x43')]);_0x23fb24[_0x4421('0xb4')](_0x4d0366);_0x23fb24[_0x4421('0xbf')]({'active':![],'ContactId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd2')],'ListId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd3')],'VoiceQueueId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xff')]||undefined,'CampaignId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1ea')));delete _0x23fb24[_0x4421('0x23')][_0x34d88b];}}else{return _0x23fb24[_0x4421('0x167')](_0x4d0366,_0x3c3c0e);}}else{if(getDiff(_0x3c3c0e[_0x4421('0x1eb')])<_0x4d0366[_0x4421('0x1ec')]*0x3c){if(_0x3c3c0e[_0x4421('0x1ed')]&&!_0x3c3c0e['Agent'][_0x4421('0x1ee')]){_0x23fb24[_0x4421('0x8f')][_0x4421('0x137')](_0x3c3c0e['id'])[_0x4421('0x1d')](function(){_0x23fb24[_0x4421('0xb4')](_0x4d0366);});}else{_0x23fb24['unlockContact']({'active':![]},_0x3c3c0e['id'],0x1)[_0x4421('0x1d')](function(){_0x23fb24[_0x4421('0xb4')](_0x4d0366);});}}else{_0x4d0366[_0x4421('0x1ef')]+=0x1;_0x23fb24['updateOriginated'](_0x4d0366);if(_0x4d0366[_0x4421('0x1f0')]){_0x23fb24[_0x4421('0xbf')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3c3c0e[_0x4421('0xd2')],'ListId':_0x3c3c0e[_0x4421('0xd3')],'VoiceQueueId':_0x3c3c0e[_0x4421('0xff')]||undefined,'CampaignId':_0x3c3c0e[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1f1')));_0x23fb24[_0x4421('0xca')](createObjHistory(_0x4d0366,_0x3c3c0e,_0x4421('0x1f2'),0x17,_0x4421('0x1f3')))[_0x4421('0xb0')](loggerCatch(_0x4421('0x1f4')));}else{_0x23fb24['saveInDb'](createObjHistory(_0x4d0366,_0x3c3c0e,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x4421('0x1f5'),_0x4421('0x1f6'));}}}}else{_0x4d0366[_0x4421('0x1f7')]+=0x1;_0x23fb24['saveInDb'](createObjHistory(_0x4d0366,_0x3c3c0e,_0x4421('0x1f8'),0xd,_0x4421('0x1f9')),_0x4421('0x1fa'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer[_0x4421('0x1b')][_0x4421('0x15d')]=function(_0x1ac6d2){var _0x2ceb1b=this;var _0x328c37=_0x1ac6d2[_0x4421('0x1fb')]-_0x1ac6d2['originated']-_0x1ac6d2[_0x4421('0xc4')];emitCampaignSummary(_0x1ac6d2);if(_0x328c37>0x0){if(_0x328c37>this[_0x4421('0x21')]){_0x328c37=this[_0x4421('0x21')];}_0x1ac6d2['temp']+=_0x328c37;this[_0x4421('0xc5')](_0x1ac6d2['id'],_0x328c37,_0x1ac6d2[_0x4421('0x1fc')],_0x1ac6d2)[_0x4421('0xb9')](function(_0x47e154){_0x1ac6d2[_0x4421('0xc4')]-=_0x328c37;_0x1ac6d2[_0x4421('0xc4')]=_0x1ac6d2['temp']>0x0?_0x1ac6d2['temp']:0x0;if(!checkContactEmpty(_0x47e154)){_0x1ac6d2[_0x4421('0x41')]=_0x4421('0x1fd');logger[_0x4421('0x7e')](_0x4421('0x1fe')+_0x1ac6d2[_0x4421('0x43')]);}else{_0x1ac6d2[_0x4421('0x97')]+=_0x47e154[_0x4421('0x96')];_0x1ac6d2[_0x4421('0x41')]=_0x4421('0x1ff');for(var _0x282877=0x0;_0x282877<_0x47e154[_0x4421('0x96')];_0x282877+=0x1){_0x1ac6d2['ivrTotalCallsDays']+=0x1;if(_[_0x4421('0xde')](_0x47e154[_0x282877])||_[_0x4421('0xde')](_0x47e154[_0x282877][_0x4421('0x16a')])||_['isNil'](_0x47e154[_0x282877][_0x4421('0x16a')][_0x4421('0x16b')])){_0x2ceb1b[_0x4421('0xcf')](_0x4421('0x200'),_0x1ac6d2,_0x47e154[_0x282877]);}else{_0x2ceb1b[_0x4421('0xbb')](_[_0x4421('0xd1')](_0x47e154[_0x282877],[_0x4421('0xd5'),_0x4421('0x201')]))['then'](_0x2ceb1b['checkContactBlack'](_0x1ac6d2,_0x47e154[_0x282877]))[_0x4421('0xb0')](_0x2ceb1b[_0x4421('0xce')](_0x4421('0x202'),_0x1ac6d2));}}}})['catch'](loggerGetContactDialer(_0x4421('0x203'),_0x1ac6d2,_0x328c37));}};Dialer[_0x4421('0x1b')]['handlePower']=function(_0x4514cd,_0x355a60){var _0x5505f1=this;var _0x20cae9=[];var _0xb075fa=_0x355a60>=0x1?_0x355a60:0x1;if(_0x4514cd[_0x4421('0x5d')]==='booked'){_0xb075fa=0x1;}var _0x28b65a=Math[_0x4421('0x1e0')](_0x4514cd[_0x4421('0x53')]*_0xb075fa)-_0x4514cd[_0x4421('0x97')]-_0x4514cd['temp'];emitVoiceQueueSummary(_0x4514cd);if(_0x4514cd[_0x4421('0x204')]>0x0){var _0x2e7e4a=_0x4514cd[_0x4421('0x204')]-_0x4514cd['originated']-_0x4514cd['talking']-_0x4514cd[_0x4421('0xc4')]-_0x4514cd[_0x4421('0x55')];if(_0x28b65a>_0x2e7e4a){_0x28b65a=_0x2e7e4a;}}if(_0x28b65a>0x0){if(_0x4514cd['dialMethod']==='booked'){_0x28b65a=0x1;}if(_0x28b65a>this[_0x4421('0x21')]){_0x28b65a=this[_0x4421('0x21')];}_0x4514cd[_0x4421('0xc4')]+=_0x28b65a;for(var _0x4823e2 in this['agents']){if(typeof this['agents'][_0x4823e2]!==_0x4421('0x98')){if(this[_0x4421('0x1f')][_0x4823e2][_0x4421('0xa6')]===_0x4421('0x205')&&this[_0x4421('0x1f')][_0x4823e2][_0x4421('0xae')]===_0x4421('0xdb')){_0x20cae9['push'](this[_0x4421('0x1f')][_0x4823e2]['id']);}}}this[_0x4421('0xc3')](_0x4514cd['id'],_0x20cae9,_0x28b65a,_0x4514cd[_0x4421('0x1fc')],_0x4514cd)['then'](function(_0x4730ae){_0x4514cd[_0x4421('0xc4')]-=_0x28b65a;_0x4514cd[_0x4421('0xc4')]=_0x4514cd[_0x4421('0xc4')]>0x0?_0x4514cd[_0x4421('0xc4')]:0x0;if(!checkContactEmpty(_0x4730ae)){_0x5505f1[_0x4421('0xb6')](_0x4514cd)[_0x4421('0xb9')](sendMessageReschedule(_0x4514cd))[_0x4421('0xb0')](loggerCatch(_0x4421('0xb8')));}else{_0x4514cd[_0x4421('0x97')]+=_0x4730ae[_0x4421('0x96')];_0x4514cd[_0x4421('0x41')]=_0x4514cd[_0x4421('0x5d')]===_0x4421('0x9')?_0x4421('0x171'):_0x4421('0x1ff');for(var _0x3e1b1c=0x0;_0x3e1b1c<_0x4730ae['length'];_0x3e1b1c+=0x1){if(_[_0x4421('0xde')](_0x4730ae[_0x3e1b1c])||_[_0x4421('0xde')](_0x4730ae[_0x3e1b1c][_0x4421('0x16a')])||_[_0x4421('0xde')](_0x4730ae[_0x3e1b1c][_0x4421('0x16a')][_0x4421('0x16b')])){_0x5505f1[_0x4421('0xcf')](_0x4421('0x200'),_0x4514cd,_0x4730ae[_0x3e1b1c]);}else{_0x5505f1[_0x4421('0x206')](_[_0x4421('0xd1')](_0x4730ae[_0x3e1b1c],[_0x4421('0xff'),_0x4421('0x201')]))[_0x4421('0xb9')](_0x5505f1[_0x4421('0x1e3')](_0x4514cd,_0x4730ae[_0x3e1b1c]))[_0x4421('0xb0')](_0x5505f1[_0x4421('0xce')](_0x4421('0x200'),_0x4514cd));}}}})[_0x4421('0xb0')](loggerGetContactDialer(_0x4421('0x207'),_0x4514cd,_0x28b65a));}};Dialer['prototype'][_0x4421('0x8d')]=function(_0x1c65d4){if(_0x1c65d4['dialLimitQueue']>0x0){var _0x263632=_0x1c65d4[_0x4421('0x204')]-_0x1c65d4['originated']-_0x1c65d4[_0x4421('0x58')];if(_0x263632>0x0){this['tryOriginatePredictive'](_0x1c65d4);}else{loggerPredictiveCalls[_0x4421('0x7e')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x1c65d4);}};Dialer['prototype'][_0x4421('0x208')]=function(_0x148937){var _0x3efbb0=this;var _0x628d79=[];_0x148937[_0x4421('0x97')]+=0x1;for(var _0x3491cb in this[_0x4421('0x1f')]){if(typeof this['agents'][_0x3491cb]!=='undefined'){if(this['agents'][_0x3491cb][_0x4421('0xa6')]===_0x4421('0x205')&&this['agents'][_0x3491cb][_0x4421('0xae')]===_0x4421('0xdb')){_0x628d79[_0x4421('0x12b')](this[_0x4421('0x1f')][_0x3491cb]['id']);}}}this['getContactDialer'](_0x148937['id'],_0x628d79,0x1,_0x148937[_0x4421('0x1fc')],_0x148937)['then'](function(_0x169564){if(!checkContactEmpty(_0x169564)){checkContactLowerLimitOriginate(_0x148937,0x1,0x0);_0x3efbb0[_0x4421('0xb6')](_0x148937)[_0x4421('0xb9')](sendMessageReschedule(_0x148937))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x148937[_0x4421('0x41')]=_0x4421('0x1ff');if(_[_0x4421('0xde')](_0x169564[0x0])||_[_0x4421('0xde')](_0x169564[0x0][_0x4421('0x16a')])||_['isNil'](_0x169564[0x0][_0x4421('0x16a')][_0x4421('0x16b')])){_0x3efbb0['emptyContact'](_0x4421('0x200'),_0x148937,_0x169564[0x0]);}else{_0x3efbb0['checkIsBlackList'](_[_0x4421('0xd1')](_0x169564[0x0],[_0x4421('0xff'),_0x4421('0x201')]))[_0x4421('0xb9')](_0x3efbb0[_0x4421('0x1e3')](_0x148937,_0x169564[0x0]))[_0x4421('0xb0')](_0x3efbb0[_0x4421('0xce')]('[actionOriginatePredictive]\x20',_0x148937));}}})[_0x4421('0xb0')](loggerGetContactDialer(_0x4421('0x209'),_0x148937,0x1));emitVoiceQueueSummary(_0x148937);};Dialer['prototype'][_0x4421('0x1de')]=function(_0x225ebb,_0x2cc2b,_0x3135eb,_0x562566,_0x4acc6d,_0x12c66f){loggerPredictive[_0x4421('0x7e')](_0x4421('0x20a'));loggerPredictive[_0x4421('0x7e')](_0x4421('0x20b'),_0x225ebb);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20c'),_0x2cc2b);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20d'),_0x3135eb);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20e'),_0x562566);loggerPredictive['info'](_0x4421('0x20f'),_0x4acc6d);loggerPredictive[_0x4421('0x7e')](_0x4421('0x8b'));return new BPromise(function(_0x352edb,_0x5c6bea){if(_0x225ebb<=0x0||isNaN(_0x225ebb)){return _0x5c6bea(msgResponse('[abandonmentRate]',_0x4421('0x210'),'m\x20=\x20'+_0x225ebb));}if(_0x3135eb<=0x0||isNaN(_0x3135eb)){return _0x5c6bea(msgResponse(_0x4421('0x211'),_0x4421('0x210'),'Ts\x20=\x20'+_0x3135eb));}if(_0x562566<=0x0||isNaN(_0x562566)){return _0x5c6bea(msgResponse(_0x4421('0x211'),_0x4421('0x210'),'p\x20=\x20'+_0x562566));}if(_0x2cc2b<=0x0||isNaN(_0x2cc2b)){return _0x5c6bea(msgResponse(_0x4421('0x211'),_0x4421('0x210'),_0x4421('0x212')+_0x2cc2b));}if(_0x4acc6d<=0x0||isNaN(_0x4acc6d)){return _0x5c6bea(msgResponse('[abandonmentRate]',_0x4421('0x210'),_0x4421('0x213')+_0x4acc6d));}_0x12c66f=_0x12c66f||0x0;var _0x479bdf=0x1/_0x3135eb;var _0x5eeca4=0x0;var _0x18225f=0x0;var _0x34f385=0x0;var _0xb7a5ae=0x0;for(var _0x48c349=0x0;_0x34f385<_0x4acc6d;_0x48c349+=0x1){_0x18225f=_0x48c349/_0x2cc2b;_0x5eeca4=(_0x562566*_0x18225f+_0x12c66f)/_0x479bdf;_0x34f385=erlangb(_0x5eeca4,_0x225ebb);_0xb7a5ae=_0x5eeca4/_0x225ebb*(0x1-erlangb(_0x5eeca4,_0x225ebb));}return _0x352edb({'erlangCalls':_0x48c349,'erlangCallToSecond':_0x2cc2b/_0x48c349,'erlangAbandonmentRate':_0x34f385,'erlangBusyFactor':_0xb7a5ae});});};Dialer[_0x4421('0x1b')]['busyFactor']=function(_0x3632f6,_0x3e08fd,_0x641c80,_0x19c5ef,_0x3f5f70,_0x54c138){loggerPredictive[_0x4421('0x7e')](_0x4421('0x214'));loggerPredictive['info'](_0x4421('0x20b'),_0x3632f6);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20c'),_0x3e08fd);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20d'),_0x641c80);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20e'),_0x19c5ef);loggerPredictive[_0x4421('0x7e')](_0x4421('0x215'),_0x3f5f70);loggerPredictive['info'](_0x4421('0x8b'));return new BPromise(function(_0x1c009d,_0x1b8c74){if(_0x3632f6<=0x0||isNaN(_0x3632f6)){return _0x1b8c74(msgResponse(_0x4421('0x216'),_0x4421('0x210'),_0x4421('0x217')+_0x3632f6));}if(_0x641c80<=0x0||isNaN(_0x641c80)){return _0x1b8c74(msgResponse(_0x4421('0x216'),_0x4421('0x210'),_0x4421('0x218')+_0x641c80));}if(_0x19c5ef<=0x0||isNaN(_0x19c5ef)){return _0x1b8c74(msgResponse('[busyFactor]',_0x4421('0x210'),_0x4421('0x219')+_0x19c5ef));}if(_0x3e08fd<=0x0||isNaN(_0x3e08fd)){return _0x1b8c74(msgResponse('[busyFactor]','Error','interval\x20=\x20'+_0x3e08fd));}if(_0x3f5f70<=0x0||isNaN(_0x3f5f70)){return _0x1b8c74(msgResponse('[busyFactor]','Error','Umin\x20=\x20'+_0x3f5f70));}_0x54c138=_0x54c138||0x0;var _0x67765a=0x1/_0x641c80;var _0x13d31c=0x0;var _0x5fb7dc=0x0;var _0x5a9c05=0x0;var _0x339b2c=0x0;for(var _0x45c3d7=0x0;_0x339b2c<_0x3f5f70;_0x45c3d7+=0x1){_0x5fb7dc=_0x45c3d7/_0x3e08fd;_0x13d31c=(_0x19c5ef*_0x5fb7dc+_0x54c138)/_0x67765a;_0x5a9c05=erlangb(_0x13d31c,_0x3632f6);_0x339b2c=_0x13d31c/_0x3632f6*(0x1-erlangb(_0x13d31c,_0x3632f6));}return _0x1c009d({'erlangCalls':_0x45c3d7,'erlangCallToSecond':_0x3e08fd/_0x45c3d7,'erlangAbandonmentRate':_0x5a9c05,'erlangBusyFactor':_0x339b2c});});};module[_0x4421('0x21a')]=Dialer;
\ No newline at end of file
+var _0xf874=['talking','waiting','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','statedesc','endtime','starttime','prototype','[uniqueid]','clearZombieChannels','[actions]','isNil','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','[countReScheduled]\x20','checkIsBlackList','then','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','ListId','VoiceQueueId','[emptyContact]','Success','isTrunkReachable','unmonitored','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','value','HANGUP','state','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','MACHINE','Machine','membername','countmachineretry','countglobal','emit','[syncAgentComplete][createHistory][0]','countnosuchnumberretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','CampaignId','HangupInAMD','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','YYYY-MM-DD\x20HH:mm:ss','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','cause-txt','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','syncQueueCallerAbandon','droptime','dialQueueTimeout','dropreason','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','actionid','strategy','locked','paused','stateinterface','rrmemory','idHopper','queueStatusComplete','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','iftime\x20%s,%s','interval','content','indexOf','true','push','command','all','some','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','predictive','method\x20not\x20recognized','handleIvr','syncQueueSummary','dialGlobalInterval','dialTimezone','[syncQueueSummary]','checkIfTime','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','dialPrefix','trim','dialCutDigit','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','responsetime','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countbusyretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Abandoned]','[rescheduleContact][Machine]','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','Abandoned','[syncAgentComplete][createHistory][11]','AgentReject','custom:agentreject','agentreject','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dropRate','Dropped\x20calls\x20day','predictiveIntervalErlangCallsDroppedCalls','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','Predictive\x20for\x20every\x20interval',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','outboundQueuePauses','predictiveIntervalAnsweredCalls','[CatchErlangB]','startMethodPredictive','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','booked','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','Blacklist','[Originate][historyBlacklist]','inBlackList','getContactDialerIvr','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','[actionOriginate]\x20','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','reachable','RUNNING','[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','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','Amax\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','moment','md5','ioredis','../preview/util/util','../../../config/environment/','dialer','../../../config/logger','../ami','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','syncAgentConnect','bind','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','type','outbound','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','total','unmanaged','dialActive','dialMethod','dialOriginateCallerIdName','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','Trunk','active','callerid','voice:queue:%s','voice_queue:save','format','campaign:ivr:%s','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','predictiveIntervalTotalCalls','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','merge','clearing\x20variable\x20start\x20progressive','handlePredictive','ivr','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive'];(function(_0x3dc046,_0x2bedc0){var _0x422c4f=function(_0x553411){while(--_0x553411){_0x3dc046['push'](_0x3dc046['shift']());}};_0x422c4f(++_0x2bedc0);}(_0xf874,0x177));var _0x4f87=function(_0x328731,_0x2a2503){_0x328731=_0x328731-0x0;var _0x1215cd=_0xf874[_0x328731];return _0x1215cd;};'use strict';var util=require(_0x4f87('0x0'));var _=require('lodash');var BPromise=require(_0x4f87('0x1'));var uuid=require(_0x4f87('0x2'));var moment=require(_0x4f87('0x3'));var rr=require('rr');var md5=require(_0x4f87('0x4'));var Redis=require(_0x4f87('0x5'));var ut=require(_0x4f87('0x6'));var config=require(_0x4f87('0x7'));var logger=require('../../../config/logger')(_0x4f87('0x8'));var loggerBooked=require(_0x4f87('0x9'))('booked');var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require('../../../config/logger')('predictiveCalls');var loggerSyncQueueSummary=require(_0x4f87('0x9'))('syncQueueSummary');var ami=require(_0x4f87('0xa'));config[_0x4f87('0xb')]=_[_0x4f87('0xc')](config[_0x4f87('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0x4f87('0xd'))(new Redis(config[_0x4f87('0xb')]));var cmHopper=require(_0x4f87('0xe'));var cmHopperHistory=require(_0x4f87('0xf'));var cmHopperBlack=require(_0x4f87('0x10'));var voiceQueueRt=require(_0x4f87('0x11'));var Action=require(_0x4f87('0x12'));var History=require(_0x4f87('0x13'));var Final=require(_0x4f87('0x14'));var AgentComplete=require(_0x4f87('0x15'));var QueueCallerAbandon=require(_0x4f87('0x16'));var Hangup=require('./hangup');var ipAgi=process[_0x4f87('0x17')][_0x4f87('0x18')]||'127.0.0.1';var strategy={'rrmemory':'rrmemory','roundrobin':_0x4f87('0x19')};var Sequence=function(){};Sequence['prototype'][_0x4f87('0x1a')]=function(_0x2ca512){this[_0x4f87('0x1b')]=this[_0x4f87('0x1b')]?this[_0x4f87('0x1b')][_0x4f87('0x1c')](_0x2ca512):_0x2ca512();};function Dialer(_0x3c327b,_0x418947){this[_0x4f87('0x1d')]=new Sequence();this[_0x4f87('0x1e')]=_0x418947;this[_0x4f87('0x1f')]=_0x3c327b[_0x4f87('0x1f')];this[_0x4f87('0x20')]=_0x3c327b[_0x4f87('0x20')];this[_0x4f87('0x21')]=_0x3c327b[_0x4f87('0x21')];this[_0x4f87('0x22')]=_0x3c327b[_0x4f87('0x22')];this[_0x4f87('0x23')]=config['maxNumberOriginate']||0x2;this[_0x4f87('0x24')]={};this[_0x4f87('0x25')]={};this['contactsId']={};this[_0x4f87('0x26')]={};this[_0x4f87('0x27')]={};this['startPredictive']={};this[_0x4f87('0x28')]={};this[_0x4f87('0x29')]={};this[_0x4f87('0x2a')]={};this[_0x4f87('0x2b')]={};ami['on']('agentconnect',this[_0x4f87('0x2c')][_0x4f87('0x2d')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x2e'),this[_0x4f87('0x2f')][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x30'),this[_0x4f87('0x31')][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x32'),this['syncQueueSummary'][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x33'),this[_0x4f87('0x34')][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x35'),this[_0x4f87('0x36')][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x37'),this[_0x4f87('0x38')][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x39'),this[_0x4f87('0x3a')][_0x4f87('0x2d')](this));ami['on'](_0x4f87('0x3b'),this[_0x4f87('0x3c')][_0x4f87('0x2d')](this));this[_0x4f87('0x3d')]();this[_0x4f87('0x3e')]();}function isNotNull(_0x60a0fb){return _0x60a0fb!==null&&!_['isUndefined'](_0x60a0fb);}function checkIsLoggedIn(_0x3c8c8c,_0x2b5eec){return function(){if(_0x2b5eec<=0x0){_0x3c8c8c['message']=_0x4f87('0x3f');throw _0x3c8c8c[_0x4f87('0x40')]+_0x4f87('0x41');}};}function isActive(_0x50c9ac){return _0x50c9ac;}function checkIsActive(_0x48dffa,_0x4bc337){return function(){if(!isActive(_0x4bc337)){_0x48dffa[_0x4f87('0x42')]=_0x4f87('0x43');throw _0x48dffa[_0x4f87('0x40')]+'\x20NOT\x20Active';}};}function checkInterval(_0x8df7f9){return function(){if(!isNotNull(_0x8df7f9[_0x4f87('0x44')])){_0x8df7f9[_0x4f87('0x42')]=_0x4f87('0x45');throw _0x8df7f9[_0x4f87('0x40')]+_0x4f87('0x46');}if(!isNotNull(_0x8df7f9['Interval'][_0x4f87('0x47')])){_0x8df7f9[_0x4f87('0x42')]=_0x4f87('0x45');throw _0x8df7f9['name']+_0x4f87('0x46');}if(!isNotNull(_[_0x4f87('0x48')](_0x8df7f9[_0x4f87('0x44')][_0x4f87('0x47')]))){_0x8df7f9[_0x4f87('0x42')]='INTERVAL_IS_NULL';throw _0x8df7f9[_0x4f87('0x40')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x4c31e7,_0x338cc3,_0x2c16a9){return{'action':_0x4c31e7,'response':_0x338cc3,'message':_0x2c16a9,'stack':_0x2c16a9};}function myreject(_0x37d1f3){return function(_0x3f459b){return _0x37d1f3(msgResponse(_0x4f87('0x49'),_0x4f87('0x4a'),JSON[_0x4f87('0x4b')](_0x3f459b)));};}function getSeconds(_0x3381f6,_0x1c0f1f){var _0x46cc56=moment(_0x3381f6)[_0x4f87('0x4c')](0x0);var _0x5b5ee1=moment(_0x1c0f1f)['milliseconds'](0x0);return _0x46cc56[_0x4f87('0x4d')](_0x5b5ee1,_0x4f87('0x4e'));}function emit(_0x58c8b1,_0x48c4c4,_0x2932e6){io['to'](_0x58c8b1)['emit'](_0x48c4c4,_0x2932e6);}function emitVoiceQueueSummary(_0x5dec55){if(_0x5dec55[_0x4f87('0x4f')]===_0x4f87('0x50')){var _0x52cba6={'id':_0x5dec55['id'],'name':_0x5dec55[_0x4f87('0x40')],'strategy':_0x5dec55['strategy'],'answered':_0x5dec55[_0x4f87('0x51')],'available':_0x5dec55[_0x4f87('0x52')],'loggedIn':_0x5dec55[_0x4f87('0x53')],'pTalking':_0x5dec55[_0x4f87('0x54')],'sumBillable':_0x5dec55['sumBillable'],'sumDuration':_0x5dec55[_0x4f87('0x55')],'sumHoldTime':_0x5dec55[_0x4f87('0x56')]||0x0,'talking':_0x5dec55['talking'],'total':_0x5dec55[_0x4f87('0x57')],'type':_0x5dec55['type'],'unmanaged':_0x5dec55[_0x4f87('0x58')],'abandoned':_0x5dec55['abandoned'],'waiting':_0x5dec55['waiting'],'loggedInDb':_0x5dec55['loggedInDb'],'dialActive':_0x5dec55[_0x4f87('0x59')],'dialMethod':_0x5dec55[_0x4f87('0x5a')],'dialOriginateCallerIdName':_0x5dec55[_0x4f87('0x5b')],'dialOriginateCallerIdNumber':_0x5dec55['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x5dec55['dialOriginateTimeout'],'dialPrefix':_0x5dec55['dialPrefix'],'outboundAnswerAgiCallsDay':_0x5dec55[_0x4f87('0x5c')],'outboundAnswerCallsDay':_0x5dec55[_0x4f87('0x5d')],'outboundBlacklistCallsDay':_0x5dec55[_0x4f87('0x5e')],'outboundBusyCallsDay':_0x5dec55['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x5dec55[_0x4f87('0x5f')],'outboundDropCallsDayACS':_0x5dec55[_0x4f87('0x60')],'outboundDropCallsDayCallersExit':_0x5dec55['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x5dec55[_0x4f87('0x61')],'outboundNoAnswerCallsDay':_0x5dec55[_0x4f87('0x62')],'outboundNoSuchCallsDay':_0x5dec55[_0x4f87('0x63')],'outboundOriginateFailureCallsDay':_0x5dec55[_0x4f87('0x64')],'outboundReCallsDay':_0x5dec55[_0x4f87('0x65')],'outboundRejectCallsDay':_0x5dec55[_0x4f87('0x66')],'outboundUnknownCallsDay':_0x5dec55[_0x4f87('0x67')],'predictiveIntervalAnsweredCalls':_0x5dec55['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x5dec55[_0x4f87('0x68')],'predictiveIntervalAvgTalktime':_0x5dec55['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x5dec55[_0x4f87('0x69')],'predictiveIntervalDroppedCallsTimeout':_0x5dec55[_0x4f87('0x6a')],'predictiveIntervalErlangCalls':_0x5dec55[_0x4f87('0x6b')],'predictiveIntervalErlangCallsDroppedCalls':_0x5dec55['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x5dec55['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x5dec55[_0x4f87('0x6c')],'predictiveIntervalPauses':_0x5dec55[_0x4f87('0x6d')],'predictiveIntervalAvailable':_0x5dec55[_0x4f87('0x6e')],'predictiveIntervalTotalCalls':_0x5dec55['predictiveIntervalTotalCalls'],'message':_0x5dec55[_0x4f87('0x42')],'originated':_0x5dec55['originated'],'erlangCalls':_0x5dec55[_0x4f87('0x6f')],'erlangCallToSecond':_0x5dec55[_0x4f87('0x70')],'erlangAbandonmentRate':_0x5dec55['erlangAbandonmentRate'],'erlangBusyFactor':_0x5dec55[_0x4f87('0x71')],'startPredictive':_0x5dec55[_0x4f87('0x72')],'startProgressive':_0x5dec55['startProgressive']};if(_0x5dec55[_0x4f87('0x73')]){_0x52cba6['Trunk']={'id':_0x5dec55[_0x4f87('0x73')]['id'],'name':_0x5dec55[_0x4f87('0x73')][_0x4f87('0x40')],'active':_0x5dec55[_0x4f87('0x73')][_0x4f87('0x74')],'callerid':_0x5dec55[_0x4f87('0x73')][_0x4f87('0x75')]};}if(_0x5dec55[_0x4f87('0x44')]){_0x52cba6['Interval']={'id':_0x5dec55['Interval']['id'],'name':_0x5dec55['Interval']['name']};}var _0x3c9e3c=md5(JSON[_0x4f87('0x4b')](_0x52cba6));if(_0x5dec55[_0x4f87('0x4')]!==_0x3c9e3c){_0x5dec55['md5']=_0x3c9e3c;emit(util['format'](_0x4f87('0x76'),_0x52cba6['name']),_0x4f87('0x77'),_0x52cba6);}}}function emitCampaignSummary(_0x174e6a){if(_0x174e6a[_0x4f87('0x4f')]==='ivr'){emit(util[_0x4f87('0x78')](_0x4f87('0x79'),_0x174e6a[_0x4f87('0x40')]),_0x4f87('0x7a'),_0x174e6a);}}function checkGetDataPredictive(_0x319192){if(isNotNull(_0x319192)&&!_[_0x4f87('0x48')](_0x319192)){loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x7c'));loggerPredictive['info']('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x319192['predictiveIntervalTotalCalls']);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x7d'),_0x319192['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x7e'),_0x319192[_0x4f87('0x6a')]);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x7f'),_0x319192[_0x4f87('0x69')]);loggerPredictive['info'](_0x4f87('0x80'),_0x319192['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x81'),_0x319192['predictiveIntervalAvgTalktime']);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x82'));if(_0x319192[_0x4f87('0x83')]>0x0){if(!_['isUndefined'](_0x319192[_0x4f87('0x84')])&&_0x319192['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive['info'](_0x4f87('0x85'));if(!_[_0x4f87('0x86')](_0x319192[_0x4f87('0x68')])&&_0x319192[_0x4f87('0x68')]>0x0){return!![];}loggerPredictive['info'](_0x4f87('0x87'));}else{loggerPredictive[_0x4f87('0x7b')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x88'));}return![];}function mergeDataErlangB(_0x44b99f){return function(_0x31d334){loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x89'));loggerPredictive['info']('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x31d334[_0x4f87('0x6f')]);loggerPredictive[_0x4f87('0x7b')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x31d334['erlangCallToSecond']);loggerPredictive['info'](_0x4f87('0x8a'),_0x31d334[_0x4f87('0x8b')]);loggerPredictive[_0x4f87('0x7b')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x31d334[_0x4f87('0x71')]);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x8a'),_0x31d334['erlangAbandonmentRate']);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x82'));_[_0x4f87('0x8c')](_0x44b99f,_0x31d334);};}function getDiff(_0x2c39a0){var _0x21c0eb=moment()['milliseconds'](0x0);var _0x25c3f1=moment(_0x2c39a0)['milliseconds'](0x0);return _0x21c0eb['diff'](_0x25c3f1,'seconds');}function ifInterval(_0x19ca66,_0x2e3b68){if(_[_0x4f87('0x86')](_0x2e3b68)){return![];}return getDiff(_0x2e3b68)<_0x19ca66*0x3c;}function freeVariablesPredictive(_0x2512d3){if(isNotNull(_0x2512d3)){if(!_['isUndefined'](_0x2512d3[_0x4f87('0x28')])){_0x2512d3['startProgressive']=undefined;loggerPredictive[_0x4f87('0x7b')](_0x2512d3['name'],_0x4f87('0x8d'));}if(!_[_0x4f87('0x86')](_0x2512d3[_0x4f87('0x72')])){_0x2512d3[_0x4f87('0x72')]=undefined;loggerPredictive['info'](_0x2512d3[_0x4f87('0x40')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x4f87('0x86')](_0x2512d3[_0x4f87('0x8e')])){clearInterval(_0x2512d3[_0x4f87('0x8e')]);_0x2512d3['handlePredictive']=undefined;loggerPredictive[_0x4f87('0x7b')](_0x2512d3[_0x4f87('0x40')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x14004f,_0x503778){if(_0x503778===0x0){return 0x0;}var _0x103233=0x1;for(var _0x3505a4=0x1;_0x3505a4<=_0x503778;_0x3505a4+=0x1){_0x103233=0x1+_0x103233*_0x3505a4/_0x14004f;}return 0x1/_0x103233;}function isVoiceQueueOutbound(_0x1426a8){return _0x1426a8===_0x4f87('0x50');}function isNotPreview(_0xaec23){return _0xaec23!==_0x4f87('0x1e');}function isCampaignIvr(_0x4bb4a9){return _0x4bb4a9===_0x4f87('0x8f');}function getCallerId(_0x4852ae,_0x56ce24,_0x286694){if(!_[_0x4f87('0x86')](_0x286694)&&typeof _0x286694===_0x4f87('0x90')&&!_[_0x4f87('0x48')](_0x286694)){if(!_[_0x4f87('0x86')](_0x56ce24)&&typeof _0x56ce24===_0x4f87('0x90')&&!_['isEmpty'](_0x56ce24)){return util['format'](_0x4f87('0x91'),_0x56ce24,_0x286694);}return util[_0x4f87('0x78')]('\x22%s\x22\x20<%s>',_0x286694,_0x286694);}if(!_[_0x4f87('0x86')](_0x4852ae)&&typeof _0x4852ae==='string'&&!_[_0x4f87('0x48')](_0x4852ae)){return _0x4852ae;}return _0x4f87('0x92');}function loggerCatchQueueSummary(_0x536a5b,_0x1853b1){return function(_0x2ee2e3){freeVariablesPredictive(_0x1853b1);emitVoiceQueueSummary(_0x1853b1);emitCampaignSummary(_0x1853b1);loggerSyncQueueSummary['error'](_0x536a5b,util[_0x4f87('0x93')](_0x2ee2e3,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x50d6fa,_0x47e568){return function(_0x3dec3f){loggerPredictive[_0x4f87('0x94')](_0x47e568['name'],_0x50d6fa);loggerPredictive[_0x4f87('0x94')](_0x3dec3f[_0x4f87('0x95')]);freeVariablesPredictive(_0x47e568);};}function loggerCatch(_0x276e5f){return function(_0xab8923){logger[_0x4f87('0x94')](_0x276e5f,util[_0x4f87('0x93')](_0xab8923,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2214f3){return _0x2214f3&&!_[_0x4f87('0x86')](_0x2214f3)&&_0x2214f3[_0x4f87('0x96')]>0x0;}function decremetOriginate(_0x31071f){if(!_[_0x4f87('0x86')](_0x31071f)&&_0x31071f!==null){if(typeof _0x31071f[_0x4f87('0x97')]!==_0x4f87('0x98')){if(_0x31071f[_0x4f87('0x97')]>0x0){_0x31071f[_0x4f87('0x97')]-=0x1;}else{logger[_0x4f87('0x94')](_0x4f87('0x99'));}}}else{logger[_0x4f87('0x94')](_0x4f87('0x9a'));}}function checkContactLowerLimitOriginate(_0x1fcc10,_0x5aab84,_0x2fbeeb){if(_0x5aab84>_0x2fbeeb){for(var _0x30b99c=0x0;_0x30b99c<_0x5aab84-_0x2fbeeb;_0x30b99c+=0x1){decremetOriginate(_0x1fcc10);}}}function loggerGetContactDialer(_0x115e94,_0x18c7d8,_0x2c9eef){return function(_0x410e60){checkContactLowerLimitOriginate(_0x18c7d8,_0x2c9eef,0x0);logger[_0x4f87('0x94')](_0x115e94,util['inspect'](_0x410e60,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5a78d0){return function(_0x4ca098){if(isNotNull(_0x4ca098)&&isNotNull(_0x4ca098[0x0])){if(_0x4ca098[0x0]['contactsRescheduled']>0x0){_0x5a78d0[_0x4f87('0x42')]=_0x4f87('0x9b');logger['info'](_0x4f87('0x9c')+_0x5a78d0['name'],_0x4ca098[0x0][_0x4f87('0x9d')],_0x4f87('0x9e'));}else{_0x5a78d0[_0x4f87('0x42')]=_0x4f87('0x9f');logger['info'](_0x4f87('0xa0')+_0x5a78d0[_0x4f87('0x40')]);}}};}function notSendMessagesQueue(_0x42cf82){if(_0x42cf82[_0x4f87('0xa1')]){freeVariablesPredictive(_0x42cf82);if(_0x42cf82[_0x4f87('0x97')]===0x0&&_0x42cf82[_0x4f87('0xa2')]===0x0&&_0x42cf82[_0x4f87('0xa3')]===0x0&&(_0x42cf82[_0x4f87('0x54')]||0x0)===0x0){_0x42cf82[_0x4f87('0xa1')]=![];_0x42cf82[_0x4f87('0x52')]=0x0;_0x42cf82[_0x4f87('0x42')]=_0x4f87('0x43');loggerSyncQueueSummary[_0x4f87('0x94')](_0x4f87('0xa4'),_0x42cf82['name'],_0x4f87('0xa5'));}else{_0x42cf82[_0x4f87('0x42')]=_0x4f87('0xa6');loggerSyncQueueSummary[_0x4f87('0x94')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x42cf82[_0x4f87('0x40')],'is\x20disactive');}emitVoiceQueueSummary(_0x42cf82);}}function notSendMessagesCampaign(_0x40352e){if(_0x40352e[_0x4f87('0xa1')]){if(_0x40352e[_0x4f87('0x97')]===0x0){_0x40352e[_0x4f87('0xa1')]=![];_0x40352e['message']=_0x4f87('0x43');loggerSyncQueueSummary[_0x4f87('0x94')](_0x4f87('0xa7'),_0x40352e[_0x4f87('0x40')],_0x4f87('0xa5'));}else{_0x40352e['message']=_0x4f87('0xa6');loggerSyncQueueSummary[_0x4f87('0x94')](_0x4f87('0xa7'),_0x40352e[_0x4f87('0x40')],_0x4f87('0xa8'));}emitCampaignSummary(_0x40352e);}}function createObjHistory(_0x226af3,_0x2707ea,_0x444079,_0xa82e57,_0x50e895){_0x226af3[_0x4f87('0x42')]=_0x444079;var _0x2dcc3=new Action(_0x226af3,_0x2707ea);var _0x583f2e=new History(_0x2dcc3);_0x583f2e['state']=_0xa82e57;_0x583f2e[_0x4f87('0xa9')]=_0x50e895;_0x583f2e[_0x4f87('0xaa')]=_0x2dcc3[_0x4f87('0xab')];return _0x583f2e;}Dialer[_0x4f87('0xac')]['loopClearZombieChannels']=function(){var _0x399723=this;setInterval(function(){_0x399723['clearZombieChannels'](_0x399723[_0x4f87('0x26')],_0x4f87('0xad'));_0x399723[_0x4f87('0xae')](_0x399723[_0x4f87('0x25')],_0x4f87('0xaf'));},0x32c8);};Dialer[_0x4f87('0xac')][_0x4f87('0xae')]=function(_0x5e2c3c,_0x109de8){var _0x20ee4a=this;for(var _0x61b873 in _0x5e2c3c){if(typeof _0x5e2c3c[_0x61b873]!==_0x4f87('0x98')){this['sequence'][_0x4f87('0x1a')](function(){if(!_[_0x4f87('0xb0')](_0x5e2c3c[_0x61b873])){return ami[_0x4f87('0xb1')]({'action':_0x4f87('0xb2'),'channel':_0x5e2c3c[_0x61b873][_0x4f87('0xb3')]})[_0x4f87('0xb4')](function(_0x27e3bf){if(_0x27e3bf[_0x4f87('0x42')]===_0x4f87('0xb5')){setTimeout(function(){if(_0x5e2c3c[_0x61b873]&&_0x5e2c3c[_0x61b873][_0x4f87('0x4f')]!==_0x4f87('0x8f')){_0x20ee4a[_0x4f87('0xb6')](_0x20ee4a[_0x4f87('0x1f')][_0x5e2c3c[_0x61b873][_0x4f87('0xb7')]]);logger[_0x4f87('0x94')]('[Dialer][checkChannel]',_0x109de8,_0x61b873,_0x5e2c3c[_0x61b873][_0x4f87('0xb7')]);delete _0x5e2c3c[_0x61b873];}if(_0x5e2c3c[_0x61b873]&&_0x5e2c3c[_0x61b873]['type']===_0x4f87('0x8f')){_0x20ee4a[_0x4f87('0xb6')](_0x20ee4a[_0x4f87('0x20')][_0x5e2c3c[_0x61b873][_0x4f87('0xb7')]]);logger[_0x4f87('0x94')](_0x4f87('0xb8'),_0x109de8,_0x61b873,_0x5e2c3c[_0x61b873][_0x4f87('0xb7')]);delete _0x5e2c3c[_0x61b873];}},0x2328);}});}});}}};Dialer[_0x4f87('0xac')][_0x4f87('0xb9')]=function(_0x2cbc00){return BPromise[_0x4f87('0xba')]()['then'](cmHopper[_0x4f87('0xb9')](_0x2cbc00))['catch'](loggerCatch(_0x4f87('0xbb')));};Dialer[_0x4f87('0xac')][_0x4f87('0xbc')]=function(_0x325fff){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopperBlack['checkIsBlackList'](_0x325fff))[_0x4f87('0xb4')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x4f87('0xac')][_0x4f87('0xbe')]=function(_0x70b3f5){return BPromise[_0x4f87('0xba')]()['then'](cmHopperBlack[_0x4f87('0xbe')](_0x70b3f5))[_0x4f87('0xb4')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x4f87('0xac')][_0x4f87('0xbf')]=function(_0x552a86){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopperHistory[_0x4f87('0xc0')](_0x552a86))[_0x4f87('0xb4')](loggerCatch(_0x4f87('0xc1')));};Dialer[_0x4f87('0xac')][_0x4f87('0xc2')]=function(_0x2a1b46){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopper['rescheduleContact'](_0x2a1b46))['catch'](loggerCatch(_0x4f87('0xc3')));};Dialer['prototype'][_0x4f87('0xc4')]=function(_0x19c3b1,_0x1cb189,_0x30e062){return BPromise['resolve']()[_0x4f87('0xbd')](cmHopper['unlockContact'](_0x19c3b1,_0x1cb189,_0x30e062))[_0x4f87('0xb4')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x4f87('0xac')][_0x4f87('0xc5')]=function(_0x5e5978,_0x22bf45,_0x1aa9cd,_0x40764d,_0x39303e){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopper[_0x4f87('0xc5')](_0x5e5978,_0x22bf45,_0x1aa9cd,_0x40764d))[_0x4f87('0xb4')](function(_0x30e4fc){_0x39303e[_0x4f87('0xc6')]-=_0x1aa9cd;_0x39303e[_0x4f87('0xc6')]=_0x39303e[_0x4f87('0xc6')]>0x0?_0x39303e[_0x4f87('0xc6')]:0x0;loggerCatch(_0x4f87('0xc7'))(_0x30e4fc);});};Dialer[_0x4f87('0xac')]['getContactDialerIvr']=function(_0x100bbf,_0x44c1dc,_0x47d391,_0x454ca9){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopper['getContactDialerIvr'](_0x100bbf,_0x44c1dc,_0x47d391))[_0x4f87('0xb4')](function(_0x241c3a){_0x454ca9[_0x4f87('0xc6')]-=_0x44c1dc;_0x454ca9[_0x4f87('0xc6')]=_0x454ca9[_0x4f87('0xc6')]>0x0?_0x454ca9[_0x4f87('0xc6')]:0x0;loggerCatch(_0x4f87('0xc8'))(_0x241c3a);});};Dialer[_0x4f87('0xac')][_0x4f87('0xc9')]=function(_0x34e3b3){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](voiceQueueRt['getVoiceQueueRtPauses'](_0x34e3b3))['catch'](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0x4f87('0xac')][_0x4f87('0xca')]=function(_0x63cbd){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopper[_0x4f87('0xca')](_0x63cbd))['catch'](loggerCatch(_0x4f87('0xcb')));};Dialer[_0x4f87('0xac')][_0x4f87('0xcc')]=function(_0x458175){return BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](cmHopperHistory[_0x4f87('0xcc')](_0x458175))['catch'](loggerCatch(_0x4f87('0xcd')));};Dialer['prototype'][_0x4f87('0xb6')]=function(_0x56f064){if(!_[_0x4f87('0x86')](_0x56f064)&&_0x56f064!==null){if(typeof _0x56f064[_0x4f87('0x97')]!==_0x4f87('0x98')){if(_0x56f064['originated']>0x0){_0x56f064['originated']-=0x1;}else{logger['error'](_0x4f87('0xce'));}}}else{logger[_0x4f87('0x94')](_0x4f87('0xcf'));}};Dialer[_0x4f87('0xac')][_0x4f87('0xd0')]=function(_0x132091,_0x43a23d){var _0x418678=this;return function(_0x5416bb){_0x418678['updateOriginated'](_0x43a23d);logger[_0x4f87('0x94')](_0x132091,util[_0x4f87('0x93')](_0x5416bb,{'showHidden':![],'depth':null}));};};Dialer[_0x4f87('0xac')][_0x4f87('0xd1')]=function(_0x1fcfff,_0x2c1c51,_0x316a7b){var _0x48808d={'state':0x19,'statedesc':_0x4f87('0xd2')};this[_0x4f87('0xb6')](_0x2c1c51);this[_0x4f87('0xd3')](_[_0x4f87('0x8c')](_0x48808d,_[_0x4f87('0xd4')](_0x316a7b,[_0x4f87('0xd5'),_0x4f87('0xd6'),'UserId',_0x4f87('0xd7'),'CampaignId'])),'[emptyContact][createHistory]',_0x4f87('0xd8'));logger['error'](_0x1fcfff);};Dialer[_0x4f87('0xac')]['isSuccess']=function(_0x29c5ee){return _0x29c5ee===_0x4f87('0xd9');};Dialer[_0x4f87('0xac')][_0x4f87('0xda')]=function(_0x2ea2ed){return!_['isUndefined'](_0x2ea2ed)&&_0x2ea2ed&&!_[_0x4f87('0x86')](_0x2ea2ed[_0x4f87('0x40')])&&!_['isUndefined'](_0x2ea2ed[_0x4f87('0x74')])&&_0x2ea2ed[_0x4f87('0x74')]&&(this[_0x4f87('0x22')][util[_0x4f87('0x78')]('SIP/%s',_0x2ea2ed[_0x4f87('0x40')])][_0x4f87('0xb2')]==='reachable'||this[_0x4f87('0x22')][util[_0x4f87('0x78')]('SIP/%s',_0x2ea2ed[_0x4f87('0x40')])][_0x4f87('0xb2')]===_0x4f87('0xdb'));};Dialer[_0x4f87('0xac')][_0x4f87('0xd3')]=function(_0x4d241b,_0x5a7179,_0x2084a9){this[_0x4f87('0xcc')](_0x4d241b)[_0x4f87('0xb4')](loggerCatch(_0x5a7179));this[_0x4f87('0xca')](_0x4d241b)[_0x4f87('0xb4')](loggerCatch(_0x2084a9));};Dialer[_0x4f87('0xac')][_0x4f87('0x38')]=function(_0x4cb39e){var _0x23effb=this[_0x4f87('0x26')][_0x4cb39e[_0x4f87('0xdc')]];var _0xea3145;if(!_[_0x4f87('0xb0')](_0x4cb39e)&&!_[_0x4f87('0xb0')](_0x4cb39e[_0x4f87('0xdd')])&&!_['isNil'](_0x4cb39e['variable'][_0x4f87('0xde')])&&_0x4cb39e[_0x4f87('0xdf')]===_0x4f87('0xe0')&&_0x23effb){if(_0x23effb[_0x4f87('0x4f')]!=='ivr'&&this[_0x4f87('0x1f')][_0x23effb[_0x4f87('0xb7')]]['dialAMDActive']&&_0x4cb39e[_0x4f87('0xe1')]===_0x4f87('0xe2')){delete this[_0x4f87('0x26')][_0x4cb39e['uniqueid']];this[_0x4f87('0xb6')](this[_0x4f87('0x1f')][_0x23effb['queue']]);this[_0x4f87('0x1f')][_0x23effb[_0x4f87('0xb7')]]['outboundAnswerCallsDay']+=0x1;this[_0x4f87('0x1f')][_0x23effb[_0x4f87('0xb7')]]['outboundAnswerAgiCallsDay']+=0x1;_0xea3145=new Hangup(_0x23effb,_0x4cb39e);_0xea3145[_0x4f87('0xe3')]=0x12;_0xea3145[_0x4f87('0xa9')]='HangupInAMD';_0xea3145['membername']=_0x4f87('0xe4');ami['emit'](_0x4f87('0xe5'),ut[_0x4f87('0xe6')](_0xea3145,_0x4f87('0xe7')));this['saveInDb'](_0xea3145,_0x4f87('0xe8'),_0x4f87('0xe9'));}if(_0x23effb[_0x4f87('0x4f')]!==_0x4f87('0x8f')&&this[_0x4f87('0x1f')][_0x23effb['queue']][_0x4f87('0xea')]&&_0x4cb39e[_0x4f87('0xe1')]===_0x4f87('0xeb')){var _0x419d48=this;return new BPromise(function(_0x39b943,_0x5177eb){delete _0x419d48[_0x4f87('0x26')][_0x4cb39e['uniqueid']];_0x419d48['updateOriginated'](_0x419d48[_0x4f87('0x1f')][_0x23effb['queue']]);_0x419d48[_0x4f87('0x1f')][_0x23effb[_0x4f87('0xb7')]][_0x4f87('0x5d')]+=0x1;_0x419d48[_0x4f87('0x1f')][_0x23effb[_0x4f87('0xb7')]][_0x4f87('0x5c')]+=0x1;var _0x16ff46=_0x419d48[_0x4f87('0x1f')][_0x23effb[_0x4f87('0xb7')]];var _0x1abfcb=new Hangup(_0x23effb,_0x4cb39e);_0x1abfcb['state']=0x13;_0x1abfcb['statedesc']=_0x4f87('0xec');_0x1abfcb[_0x4f87('0xed')]=_0x4f87('0xe4');_0x1abfcb[_0x4f87('0xee')]+=0x1;_0x1abfcb[_0x4f87('0xef')]+=0x1;_0x1abfcb[_0x4f87('0xe7')]=!![];ami[_0x4f87('0xf0')](_0x4f87('0xe5'),ut[_0x4f87('0xe6')](_0x1abfcb,_0x4f87('0xe7')));_0x419d48[_0x4f87('0xcc')](_0x1abfcb)['catch'](loggerCatch(_0x4f87('0xf1')));if(_0x1abfcb['countbusyretry']+_0x1abfcb['countcongestionretry']+_0x1abfcb['countnoanswerretry']+_0x1abfcb[_0x4f87('0xf2')]+_0x1abfcb['countdropretry']+_0x1abfcb['countabandonedretry']+_0x1abfcb[_0x4f87('0xee')]+_0x1abfcb[_0x4f87('0xf3')]>=_0x16ff46[_0x4f87('0xf4')]){_0x419d48[_0x4f87('0xf5')](_0x1abfcb,_0x39b943,_0x5177eb,_0x4f87('0xf6'));}else{if(_0x1abfcb[_0x4f87('0xee')]>=_0x16ff46[_0x4f87('0xf7')]){_0x419d48[_0x4f87('0xf8')](_0x1abfcb,_0x39b943,_0x5177eb,_0x4f87('0xf9'));}else{_0x419d48[_0x4f87('0xc2')]({'active':![],'countmachineretry':_0x1abfcb[_0x4f87('0xee')],'scheduledat':moment()[_0x4f87('0xfa')](_0x16ff46[_0x4f87('0xfb')],_0x4f87('0xfc'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1abfcb[_0x4f87('0xd5')],'ListId':_0x1abfcb[_0x4f87('0xd6')],'VoiceQueueId':_0x1abfcb[_0x4f87('0xd7')]||undefined,'CampaignId':_0x1abfcb[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch('[rescheduleContact][Machine]'));_0x39b943({'reschedule':0x1});}}});}if(_0x23effb[_0x4f87('0x4f')]==='ivr'&&this['campaigns'][_0x23effb['queue']][_0x4f87('0xea')]&&_0x4cb39e[_0x4f87('0xe1')]==='HANGUP'){delete this[_0x4f87('0x26')][_0x4cb39e['uniqueid']];this[_0x4f87('0xb6')](this['campaigns'][_0x23effb[_0x4f87('0xb7')]]);_0xea3145=new Hangup(_0x23effb,_0x4cb39e);_0xea3145[_0x4f87('0xe3')]=0x12;_0xea3145[_0x4f87('0xa9')]=_0x4f87('0xfe');_0xea3145[_0x4f87('0xed')]=_0x4f87('0xe4');ami[_0x4f87('0xf0')]('custom:amd',ut['buildObj'](_0xea3145,'amd'));this[_0x4f87('0xd3')](_0xea3145,'[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]');}if(_0x23effb['type']==='ivr'&&this[_0x4f87('0x20')][_0x23effb['queue']][_0x4f87('0xea')]&&_0x4cb39e['value']===_0x4f87('0xeb')){var _0x419d48=this;return new BPromise(function(_0x4bb4c2,_0x15e2c0){delete _0x419d48[_0x4f87('0x26')][_0x4cb39e['uniqueid']];_0x419d48[_0x4f87('0xb6')](_0x419d48[_0x4f87('0x20')][_0x23effb[_0x4f87('0xb7')]]);_0x419d48['campaigns'][_0x23effb[_0x4f87('0xb7')]][_0x4f87('0x5d')]+=0x1;_0x419d48[_0x4f87('0x20')][_0x23effb['queue']][_0x4f87('0x5c')]+=0x1;var _0x2bf4fa=_0x419d48[_0x4f87('0x20')][_0x23effb[_0x4f87('0xb7')]];var _0x3c137a=new Hangup(_0x23effb,_0x4cb39e);_0x3c137a[_0x4f87('0xe3')]=0x13;_0x3c137a['statedesc']=_0x4f87('0xec');_0x3c137a[_0x4f87('0xed')]=_0x4f87('0xe4');_0x3c137a[_0x4f87('0xee')]+=0x1;_0x3c137a[_0x4f87('0xef')]+=0x1;_0x3c137a[_0x4f87('0xe7')]=!![];ami['emit'](_0x4f87('0xe5'),ut[_0x4f87('0xe6')](_0x3c137a,_0x4f87('0xe7')));_0x419d48[_0x4f87('0xcc')](_0x3c137a)[_0x4f87('0xb4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x3c137a['countbusyretry']+_0x3c137a[_0x4f87('0xff')]+_0x3c137a[_0x4f87('0x100')]+_0x3c137a[_0x4f87('0xf2')]+_0x3c137a[_0x4f87('0x101')]+_0x3c137a[_0x4f87('0x102')]+_0x3c137a[_0x4f87('0xee')]+_0x3c137a[_0x4f87('0xf3')]>=_0x2bf4fa[_0x4f87('0xf4')]){_0x419d48[_0x4f87('0xf5')](_0x3c137a,_0x4bb4c2,_0x15e2c0,_0x4f87('0xf6'));}else{if(_0x3c137a[_0x4f87('0xee')]>=_0x2bf4fa['dialMachineMaxRetry']){_0x419d48[_0x4f87('0xf8')](_0x3c137a,_0x4bb4c2,_0x15e2c0,_0x4f87('0xf9'));}else{_0x419d48[_0x4f87('0xc2')]({'active':![],'countmachineretry':_0x3c137a['countmachineretry'],'scheduledat':moment()[_0x4f87('0xfa')](_0x2bf4fa['dialMachineRetryFrequency'],_0x4f87('0xfc'))[_0x4f87('0x78')](_0x4f87('0x103')),'ContactId':_0x3c137a[_0x4f87('0xd5')],'ListId':_0x3c137a[_0x4f87('0xd6')],'VoiceQueueId':_0x3c137a[_0x4f87('0xd7')]||undefined,'CampaignId':_0x3c137a[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch('[rescheduleContact][Machine]'));_0x4bb4c2({'reschedule':0x1});}}});}}};Dialer[_0x4f87('0xac')][_0x4f87('0x34')]=function(_0x41a100){var _0x8a8b7f=this['uniqueId'][_0x41a100['uniqueid']];var _0x2054c4=this;var _0x3323b1;if(_0x8a8b7f&&_0x8a8b7f[_0x4f87('0x4f')]===_0x4f87('0x8f')){delete this['uniqueId'][_0x41a100[_0x4f87('0xdc')]];this[_0x4f87('0xb6')](this['campaigns'][_0x8a8b7f[_0x4f87('0xb7')]]);this[_0x4f87('0x20')][_0x8a8b7f['queue']][_0x4f87('0x104')]+=0x1;_0x3323b1=new Hangup(_0x8a8b7f,_0x41a100);this[_0x4f87('0xcc')](_0x3323b1)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x105')));this['moveContactManagedDialer'](_0x3323b1)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x106')));}if(_0x8a8b7f&&_0x8a8b7f[_0x4f87('0x4f')]!=='ivr'&&isNotNull(this[_0x4f87('0x1f')][_0x8a8b7f[_0x4f87('0xb7')]]['dialQueueProject'])){delete this[_0x4f87('0x26')][_0x41a100[_0x4f87('0xdc')]];this['updateOriginated'](this[_0x4f87('0x1f')][_0x8a8b7f[_0x4f87('0xb7')]]);this[_0x4f87('0x1f')][_0x8a8b7f[_0x4f87('0xb7')]][_0x4f87('0x5d')]+=0x1;this[_0x4f87('0x1f')][_0x8a8b7f[_0x4f87('0xb7')]][_0x4f87('0x5c')]+=0x1;_0x3323b1=new Hangup(_0x8a8b7f,_0x41a100);_0x3323b1[_0x4f87('0xe3')]=0x10;_0x3323b1[_0x4f87('0xa9')]=_0x4f87('0x107');_0x3323b1[_0x4f87('0xed')]=_0x4f87('0x108');this[_0x4f87('0xcc')](_0x3323b1)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x105')));this['moveContactManagedDialer'](_0x3323b1)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x106')));}if(_0x8a8b7f&&_0x8a8b7f['type']!==_0x4f87('0x8f')&&!isNotNull(this[_0x4f87('0x1f')][_0x8a8b7f['queue']][_0x4f87('0x109')])){delete this[_0x4f87('0x26')][_0x41a100[_0x4f87('0xdc')]];this[_0x4f87('0xb6')](this['voiceQueues'][_0x8a8b7f[_0x4f87('0xb7')]]);this[_0x4f87('0x1f')][_0x8a8b7f[_0x4f87('0xb7')]][_0x4f87('0x67')]+=0x1;_0x3323b1=new Hangup(_0x8a8b7f,_0x41a100);_0x3323b1['state']=0xc;_0x3323b1[_0x4f87('0xa9')]=_0x41a100[_0x4f87('0x10a')];_0x3323b1[_0x4f87('0xed')]='Unknow';this[_0x4f87('0xcc')](_0x3323b1)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x105')));this[_0x4f87('0xca')](_0x3323b1)['catch'](loggerCatch(_0x4f87('0x106')));}};Dialer[_0x4f87('0xac')][_0x4f87('0x31')]=function(_0x5ecac2){var _0xe3359e=this[_0x4f87('0x26')][_0x5ecac2['uniqueid']];var _0x547d98=this;if(this[_0x4f87('0x1f')][_0x5ecac2[_0x4f87('0xb7')]]){if(_0xe3359e&&_0xe3359e[_0x4f87('0x4f')]!==_0x4f87('0x8f')){delete this[_0x4f87('0x26')][_0x5ecac2[_0x4f87('0xdc')]];this['voiceQueues'][_0x5ecac2[_0x4f87('0xb7')]][_0x4f87('0x5d')]+=0x1;var _0x2ce80=new AgentComplete(_0xe3359e,_0x5ecac2);if(_0x5ecac2[_0x4f87('0x10b')]===_0x4f87('0x10c')){_0x2ce80[_0x4f87('0x10d')]=this[_0x4f87('0x1f')][_0x5ecac2[_0x4f87('0xb7')]][_0x4f87('0x10e')]&&this[_0x4f87('0x1f')][_0x5ecac2[_0x4f87('0xb7')]][_0x4f87('0x10f')]?moment()['format'](_0x4f87('0x103')):undefined;}this[_0x4f87('0xcc')](_0x2ce80)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x110')));this[_0x4f87('0xca')](_0x2ce80)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x111')));}}};Dialer[_0x4f87('0xac')][_0x4f87('0x2c')]=function(_0x2843c7){if(this[_0x4f87('0x1f')][_0x2843c7[_0x4f87('0xb7')]]){if(this[_0x4f87('0x26')][_0x2843c7['uniqueid']]&&this['uniqueId'][_0x2843c7[_0x4f87('0xdc')]]['type']!==_0x4f87('0x8f')){this['updateOriginated'](this[_0x4f87('0x1f')][_0x2843c7[_0x4f87('0xb7')]]);this[_0x4f87('0x26')][_0x2843c7['uniqueid']]['answertime']=moment()[_0x4f87('0x78')](_0x4f87('0x103'));}}};Dialer['prototype'][_0x4f87('0x112')]=function(_0x5005a5){this[_0x4f87('0xcc')](_0x5005a5)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x110')));this[_0x4f87('0xca')](_0x5005a5)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x113')));};Dialer[_0x4f87('0xac')][_0x4f87('0x114')]=function(_0x49bcda){var _0x2b6595=this['uniqueId'][_0x49bcda[_0x4f87('0xdc')]];var _0x5d833d=this;if(this['voiceQueues'][_0x49bcda[_0x4f87('0xb7')]]){if(_0x2b6595&&_0x2b6595['type']!==_0x4f87('0x8f')){delete this[_0x4f87('0x26')][_0x49bcda[_0x4f87('0xdc')]];this['updateOriginated'](this[_0x4f87('0x1f')][_0x49bcda['queue']]);_0x2b6595[_0x4f87('0x115')]=moment()[_0x4f87('0x78')](_0x4f87('0x103'));var _0x5ebc55=new QueueCallerAbandon(_0x2b6595,_0x49bcda);if(getSeconds(_0x2b6595[_0x4f87('0x115')],_0x2b6595['responsetime'])>=_0x2b6595[_0x4f87('0x116')]){this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]][_0x4f87('0x61')]+=0x1;this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x5ebc55['state']=0xa;_0x5ebc55[_0x4f87('0xa9')]='Drop';_0x5ebc55[_0x4f87('0x117')]='TIMEOUT';_0x5ebc55['agiafterat']=this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]]['dialQueueProject2']?moment()[_0x4f87('0x78')](_0x4f87('0x103')):undefined;_0x5ebc55[_0x4f87('0x101')]+=0x1;_0x5ebc55[_0x4f87('0xef')]+=0x1;if(_0x5ebc55[_0x4f87('0x101')]>=this[_0x4f87('0x1f')][_0x49bcda['queue']][_0x4f87('0x118')]){this['queueCallerAbandonCreateState'](_0x5ebc55);}else{this[_0x4f87('0xc2')]({'active':![],'countdropretry':_0x5ebc55[_0x4f87('0x101')],'scheduledat':moment()['add'](this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]][_0x4f87('0x119')],'minutes')[_0x4f87('0x78')](_0x4f87('0x103')),'ContactId':_0x2b6595['ContactId'],'ListId':_0x2b6595['ListId'],'VoiceQueueId':_0x2b6595[_0x4f87('0xd7')]||undefined,'CampaignId':_0x2b6595[_0x4f87('0xfd')]||undefined})['catch'](loggerCatch(_0x4f87('0x11a')));var _0x5582ce=new History(_0x5ebc55);_0x5582ce['state']=0xa;_0x5582ce['statedesc']='Drop';_0x5582ce[_0x4f87('0xab')]=moment()[_0x4f87('0x78')](_0x4f87('0x103'));_0x5582ce['endtime']=_0x5582ce[_0x4f87('0xab')];_0x5582ce[_0x4f87('0x11b')]=_0x5ebc55['calleridname'];_0x5582ce[_0x4f87('0x11c')]=_0x5ebc55[_0x4f87('0x11c')];this['createHistory'](_0x5582ce)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x11d')));}}else{this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]][_0x4f87('0x69')]+=0x1;this[_0x4f87('0x1f')][_0x49bcda[_0x4f87('0xb7')]][_0x4f87('0x11e')]+=0x1;_0x5ebc55[_0x4f87('0xe3')]=0xb;_0x5ebc55[_0x4f87('0xa9')]='Abandoned';_0x5ebc55['dropreason']='CALLEREXIT';_0x5ebc55[_0x4f87('0x102')]+=0x1;_0x5ebc55[_0x4f87('0xef')]+=0x1;if(_0x5ebc55[_0x4f87('0x102')]>=this['voiceQueues'][_0x49bcda[_0x4f87('0xb7')]][_0x4f87('0x11f')]){this[_0x4f87('0x112')](_0x5ebc55);}else{this[_0x4f87('0xc2')]({'active':![],'countabandonedretry':_0x5ebc55['countabandonedretry'],'scheduledat':moment()[_0x4f87('0xfa')](this[_0x4f87('0x1f')][_0x49bcda['queue']][_0x4f87('0x120')],'minutes')[_0x4f87('0x78')](_0x4f87('0x103')),'ContactId':_0x2b6595['ContactId'],'ListId':_0x2b6595[_0x4f87('0xd6')],'VoiceQueueId':_0x2b6595[_0x4f87('0xd7')]||undefined,'CampaignId':_0x2b6595[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x5582ce=new History(_0x5ebc55);_0x5582ce[_0x4f87('0xe3')]=0xb;_0x5582ce[_0x4f87('0xa9')]='Abandoned';_0x5582ce['starttime']=moment()[_0x4f87('0x78')](_0x4f87('0x103'));_0x5582ce[_0x4f87('0xaa')]=_0x5582ce[_0x4f87('0xab')];_0x5582ce[_0x4f87('0x11b')]=_0x5ebc55[_0x4f87('0x11b')];_0x5582ce[_0x4f87('0x11c')]=_0x5ebc55[_0x4f87('0x11c')];this[_0x4f87('0xcc')](_0x5582ce)[_0x4f87('0xb4')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0x4f87('0xac')][_0x4f87('0x36')]=function(_0x4fb2e7){if(this[_0x4f87('0x25')][_0x4fb2e7[_0x4f87('0xdc')]]){this[_0x4f87('0x25')][_0x4fb2e7[_0x4f87('0xdc')]]['channel']=_0x4fb2e7[_0x4f87('0xb3')];}if(this[_0x4f87('0x26')][_0x4fb2e7[_0x4f87('0xdc')]]){this[_0x4f87('0x26')][_0x4fb2e7[_0x4f87('0xdc')]][_0x4f87('0xb3')]=_0x4fb2e7[_0x4f87('0xb3')];}};Dialer[_0x4f87('0xac')]['syncQueueMember']=function(_0x184a8f){if(strategy[this[_0x4f87('0x1f')][this['actions'][_0x184a8f[_0x4f87('0x121')]][_0x4f87('0xb7')]][_0x4f87('0x122')]]===_0x4f87('0x19')){if(this[_0x4f87('0x25')][_0x184a8f[_0x4f87('0x121')]]&&_[_0x4f87('0xb0')](this[_0x4f87('0x25')][_0x184a8f[_0x4f87('0x121')]][_0x4f87('0x123')])&&_0x184a8f['status']==='1'&&_0x184a8f[_0x4f87('0x124')]==='0'){if(this[_0x4f87('0x21')][_0x184a8f[_0x4f87('0x125')]]){if(!this[_0x4f87('0x21')][_0x184a8f['stateinterface']][_0x4f87('0x123')]){this[_0x4f87('0x21')][_0x184a8f[_0x4f87('0x125')]][_0x4f87('0x123')]=!![];this[_0x4f87('0x25')][_0x184a8f['actionid']][_0x4f87('0x123')]=!![];this['actions'][_0x184a8f[_0x4f87('0x121')]]['stateinterface']=_0x184a8f[_0x4f87('0x125')];}}}}else if((strategy[this[_0x4f87('0x1f')][this[_0x4f87('0x25')][_0x184a8f[_0x4f87('0x121')]][_0x4f87('0xb7')]]['strategy']]||_0x4f87('0x126'))===_0x4f87('0x126')){if(this[_0x4f87('0x25')][_0x184a8f['actionid']]){if(this[_0x4f87('0x21')][_0x184a8f[_0x4f87('0x125')]]){this['actions'][_0x184a8f[_0x4f87('0x121')]][_0x4f87('0x125')]=_0x184a8f[_0x4f87('0x125')];if(_[_0x4f87('0xb0')](this[_0x4f87('0x2a')][this[_0x4f87('0x25')][_0x184a8f['actionid']][_0x4f87('0xb7')]])){this[_0x4f87('0x2a')][this[_0x4f87('0x25')][_0x184a8f[_0x4f87('0x121')]][_0x4f87('0xb7')]]=[];}this[_0x4f87('0x2a')][this[_0x4f87('0x25')][_0x184a8f[_0x4f87('0x121')]][_0x4f87('0xb7')]]['push'](_[_0x4f87('0x8c')](_['pick'](this['actions'][_0x184a8f[_0x4f87('0x121')]],[_0x4f87('0x127'),_0x4f87('0x125')]),{'status':_0x184a8f[_0x4f87('0xb2')],'paused':_0x184a8f[_0x4f87('0x124')]}));}}}};function unlockQueueStatus(_0x32f88b,_0x4d7b2c){setTimeout(function(){if(_[_0x4f87('0x86')](_0x32f88b[_0x4f87('0x128')])){loggerBooked[_0x4f87('0x94')]('[unlockQueueStatus][undefined]',_0x4d7b2c);}_0x32f88b[_0x4f87('0x128')]=!![];loggerBooked[_0x4f87('0x7b')](_0x4f87('0x129'),_0x4d7b2c,JSON[_0x4f87('0x4b')](_[_0x4f87('0xd4')](_0x32f88b,['name',_0x4f87('0x128')])));},0x1f3);}Dialer[_0x4f87('0xac')][_0x4f87('0x3c')]=function(_0x4acee8){var _0x58cd0d=this;var _0x5438b8=_0x58cd0d[_0x4f87('0x1f')][_0x58cd0d['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]];if(strategy[this[_0x4f87('0x1f')][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]['strategy']]===_0x4f87('0x19')){if(this['actions'][_0x4acee8[_0x4f87('0x121')]]&&this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0x125')]){this[_0x4f87('0x1e')][_0x4f87('0x12a')](this[_0x4f87('0x25')][_0x4acee8['actionid']][_0x4f87('0x127')],this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0x125')])[_0x4f87('0xb4')](function(_0x2a3703){logger[_0x4f87('0x94')](_0x4f87('0x12b'),util[_0x4f87('0x93')](_0x2a3703,{'showHidden':![],'depth':null}));})['finally'](function(){_0x58cd0d[_0x4f87('0xb6')](_0x58cd0d[_0x4f87('0x1f')][_0x58cd0d[_0x4f87('0x25')][_0x4acee8['actionid']]['queue']]);_0x58cd0d['agents'][_0x58cd0d['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0x125')]][_0x4f87('0x123')]=![];delete _0x58cd0d['actions'][_0x4acee8[_0x4f87('0x121')]];unlockQueueStatus(_0x5438b8);});}else{this[_0x4f87('0xb6')](this[_0x4f87('0x1f')][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]);this[_0x4f87('0xc2')]({'active':![],'ContactId':this[_0x4f87('0x25')][_0x4acee8['actionid']][_0x4f87('0xd5')],'ListId':this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd6')],'VoiceQueueId':this['actions'][_0x4acee8[_0x4f87('0x121')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x12c')));delete this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]];unlockQueueStatus(_0x5438b8);}}else if((strategy[this[_0x4f87('0x1f')][this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]][_0x4f87('0x122')]]||_0x4f87('0x126'))===_0x4f87('0x126')){var _0x12793b;if(this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]]&&!_[_0x4f87('0x48')](this['queueBooked'][this['actions'][_0x4acee8['actionid']]['queue']])){if(this[_0x4f87('0x2b')][_0x58cd0d[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]){this[_0x4f87('0x2b')][_0x58cd0d[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]=this['queueBookedRR'][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]?this[_0x4f87('0x2b')][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]:this['queueBooked'][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]?this[_0x4f87('0x2a')][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]]['queue']][_0x4f87('0x12d')]||0x0:0x0;}this['queueBooked'][this['actions'][_0x4acee8['actionid']][_0x4f87('0xb7')]][_0x4f87('0x12d')]=this['queueBookedRR'][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]];for(var _0x3e0560=0x0;_0x3e0560<this[_0x4f87('0x2a')][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]]['queue']]['length'];_0x3e0560+=0x1){_0x12793b=rr(this[_0x4f87('0x2a')][this['actions'][_0x4acee8['actionid']][_0x4f87('0xb7')]]);this['queueBookedRR'][_0x58cd0d[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]=this[_0x4f87('0x2a')][this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]][_0x4f87('0x12d')];if(_0x12793b[_0x4f87('0xb2')]==='1'&&_0x12793b[_0x4f87('0x124')]==='0'){break;}}if(!_[_0x4f87('0xb0')](_0x12793b)){this[_0x4f87('0x21')][_0x12793b[_0x4f87('0x125')]]['unlockRR']=_['isUndefined'](this['agents'][_0x12793b[_0x4f87('0x125')]][_0x4f87('0x12e')])?!![]:this['agents'][_0x12793b['stateinterface']][_0x4f87('0x12e')];}loggerBooked[_0x4f87('0x7b')]('[booked][RR]',_0x4acee8[_0x4f87('0x121')],_0x4f87('0x12f'),JSON[_0x4f87('0x4b')](_[_0x4f87('0xd4')](this['agents'][_0x12793b[_0x4f87('0x125')]],[_0x4f87('0x40'),'unlockRR'])),_0x4f87('0x130'),JSON[_0x4f87('0x4b')](_0x12793b[_0x4f87('0x127')]));if(!_['isNil'](_0x12793b)&&_0x12793b[_0x4f87('0xb2')]==='1'&&_0x12793b[_0x4f87('0x124')]==='0'&&this['agents'][_0x12793b[_0x4f87('0x125')]][_0x4f87('0x12e')]){this['agents'][_0x12793b[_0x4f87('0x125')]][_0x4f87('0x12e')]=![];this[_0x4f87('0x2a')][_0x58cd0d[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]=[];this[_0x4f87('0x1e')][_0x4f87('0x12a')](_0x12793b[_0x4f87('0x127')],_0x12793b['stateinterface'])[_0x4f87('0xb4')](function(_0x15cfee){logger['error'](_0x4f87('0x12b'),util[_0x4f87('0x93')](_0x15cfee,{'showHidden':![],'depth':null}));})[_0x4f87('0x1c')](function(){_0x58cd0d['updateOriginated'](_0x58cd0d[_0x4f87('0x1f')][_0x58cd0d[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]);setTimeout(function(){_0x58cd0d[_0x4f87('0x21')][_0x12793b[_0x4f87('0x125')]][_0x4f87('0x12e')]=!![];loggerBooked[_0x4f87('0x7b')](_0x4f87('0x131'),_0x4acee8[_0x4f87('0x121')],_0x4f87('0x12f'),JSON['stringify'](_[_0x4f87('0xd4')](_0x58cd0d[_0x4f87('0x21')][_0x12793b['stateinterface']],[_0x4f87('0x40'),_0x4f87('0x12e')])),_0x4f87('0x130'),JSON[_0x4f87('0x4b')](_0x12793b[_0x4f87('0x127')]));},0xc7);delete _0x58cd0d[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]];unlockQueueStatus(_0x5438b8,_0x4acee8[_0x4f87('0x121')]);});}else{loggerBooked[_0x4f87('0x7b')](_0x4f87('0x132'));this['updateOriginated'](this[_0x4f87('0x1f')][this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]);this[_0x4f87('0xc2')]({'active':![],'ContactId':this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd5')],'ListId':this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd6')],'VoiceQueueId':this[_0x4f87('0x25')][_0x4acee8['actionid']][_0x4f87('0xd7')]||undefined,'CampaignId':this[_0x4f87('0x25')][_0x4acee8['actionid']][_0x4f87('0xfd')]||undefined})['catch'](loggerCatch(_0x4f87('0x12c')));delete this['actions'][_0x4acee8[_0x4f87('0x121')]];unlockQueueStatus(_0x5438b8);}}else{loggerBooked['info'](_0x4f87('0x133'));this[_0x4f87('0xb6')](this[_0x4f87('0x1f')][this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]);this[_0x4f87('0xc2')]({'active':![],'ContactId':this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd5')],'ListId':this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd6')],'VoiceQueueId':this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd7')]||undefined,'CampaignId':this[_0x4f87('0x25')][_0x4acee8['actionid']]['CampaignId']||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x134')));delete this[_0x4f87('0x25')][_0x4acee8['actionid']];unlockQueueStatus(_0x5438b8);}}else{loggerBooked[_0x4f87('0x7b')](_0x4f87('0x135'));this[_0x4f87('0xb6')](this[_0x4f87('0x1f')][this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xb7')]]);this[_0x4f87('0xc2')]({'active':![],'ContactId':this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd5')],'ListId':this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd6')],'VoiceQueueId':this['actions'][_0x4acee8[_0x4f87('0x121')]][_0x4f87('0xd7')]||undefined,'CampaignId':this['actions'][_0x4acee8['actionid']]['CampaignId']||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x136')));delete this[_0x4f87('0x25')][_0x4acee8[_0x4f87('0x121')]];unlockQueueStatus(_0x5438b8);}};Dialer[_0x4f87('0xac')]['loopCampaigns']=function(){var _0x19e9c3=this;setInterval(function(){_0x19e9c3[_0x4f87('0x137')]();},0x3e8);};Dialer[_0x4f87('0xac')][_0x4f87('0x138')]=function(_0x73b7c5){var _0x16a39b=this;return function(){if(!_0x16a39b[_0x4f87('0xda')](_0x73b7c5['Trunk'])){if(!_0x16a39b[_0x4f87('0xda')](_0x73b7c5[_0x4f87('0x139')])){_0x73b7c5['message']=_0x4f87('0x13a');throw _0x73b7c5['name']+_0x4f87('0x13b');}}};};Dialer['prototype']['checkIfTime']=function(_0x26968b,_0x41b474,_0x54a6a1,_0x22beb9){var _0xde01d2=this;return function(){var _0x1a9d83=!![];return _0xde01d2[_0x4f87('0x13c')](_0x26968b,_0x41b474,_0x54a6a1,_0x22beb9,_0x1a9d83);};};Dialer[_0x4f87('0xac')][_0x4f87('0x13d')]=function(_0x3ae5a1,_0x123e6e,_0x20e7d3,_0x1bf8ed){var _0xa8cd=this;return function(){var _0x126a54=![];return _0xa8cd[_0x4f87('0x13c')](_0x3ae5a1[_0x4f87('0x47')],_0x123e6e,_0x20e7d3,_0x1bf8ed,_0x126a54);};};Dialer[_0x4f87('0xac')]['ifTime']=function(_0x15789e,_0x19bc54,_0x2cf535,_0x4af92d,_0x328471){var _0x327420=[];return new BPromise(function(_0x18fdac,_0xbc5aa3){if(!isNotNull(_0x15789e)){_0x4af92d[_0x4f87('0x42')]=_0x4f87('0x45');return _0xbc5aa3(msgResponse(_0x4f87('0x13c'),_0x4f87('0x13e'),_0x2cf535+_0x4f87('0x13f')));}if(_[_0x4f87('0x48')](_0x15789e)){_0x4af92d['message']=_0x4f87('0x140');return _0xbc5aa3(msgResponse('ifTime',_0x4f87('0x13e'),_0x2cf535+_0x4f87('0x141')));}if(_0x19bc54&&_[_0x4f87('0x86')](config[_0x4f87('0x142')][_0x19bc54])){_0x4af92d[_0x4f87('0x42')]=_0x4f87('0x143');return _0xbc5aa3(msgResponse(_0x4f87('0x13c'),_0x4f87('0x13e'),_0x2cf535+_0x4f87('0x144')+_0x19bc54));}if(_['isArray'](_0x15789e)){for(var _0x54aa9f=0x0;_0x54aa9f<_0x15789e[_0x4f87('0x96')];_0x54aa9f+=0x1){_0x327420['push'](ami['Action']({'action':'command','command':util[_0x4f87('0x78')](_0x4f87('0x145'),_0x15789e[_0x54aa9f][_0x4f87('0x146')],!_[_0x4f87('0x86')](config[_0x4f87('0x142')][_0x19bc54])?_0x19bc54:'')})[_0x4f87('0xbd')](function(_0x4b64af){return _0x4b64af[_0x4f87('0x147')][_0x4f87('0x148')](_0x4f87('0x149'))>=0x0;})[_0x4f87('0xb4')](myreject(_0xbc5aa3)));}}else{_0x327420[_0x4f87('0x14a')](ami['Action']({'action':_0x4f87('0x14b'),'command':util[_0x4f87('0x78')](_0x4f87('0x145'),_0x15789e,!_[_0x4f87('0x86')](config[_0x4f87('0x142')][_0x19bc54])?_0x19bc54:'')})[_0x4f87('0xbd')](function(_0x394e7b){return _0x394e7b[_0x4f87('0x147')][_0x4f87('0x148')](_0x4f87('0x149'))>=0x0;})['catch'](myreject(_0xbc5aa3)));}BPromise[_0x4f87('0x14c')](_0x327420)[_0x4f87('0xbd')](function(_0x1af9be){var _0x4a68d7=_[_0x4f87('0x14d')](_0x1af9be);if(_0x4a68d7){return _0x18fdac(_0x4a68d7);}else{_0x4af92d['message']=_0x328471?'GLOBAL_INTERVAL_IS_OVERTIME':'INTERVAL_IS_OVERTIME';return _0xbc5aa3(msgResponse(_0x4f87('0x14e'),_0x4f87('0x13e'),_0x4f87('0x14f')+_0x328471+'\x20'+_0x2cf535+_0x4f87('0x150')+util[_0x4f87('0x93')](_0x15789e,{'showHidden':![],'depth':null})+_0x4f87('0x151')+_0x19bc54));}})[_0x4f87('0xb4')](function(_0x2952f7){return _0xbc5aa3(msgResponse('ifTime','Failure',JSON[_0x4f87('0x4b')](_0x2952f7)));});});};Dialer[_0x4f87('0xac')][_0x4f87('0x152')]=function(_0x19781e){var _0x5890d8=this;return function(){switch(_0x19781e[_0x4f87('0x5a')]){case _0x4f87('0x153'):freeVariablesPredictive(_0x19781e);_0x5890d8[_0x4f87('0x154')](_0x19781e,0x1);break;case _0x4f87('0x155'):freeVariablesPredictive(_0x19781e);_0x5890d8[_0x4f87('0x154')](_0x19781e,_0x19781e[_0x4f87('0x156')]);break;case'predictive':_0x5890d8[_0x4f87('0x157')](_0x19781e);break;case'booked':freeVariablesPredictive(_0x19781e);_0x5890d8['handlePower'](_0x19781e,0x1);break;default:freeVariablesPredictive(_0x19781e);logger['error']('Queue',_0x19781e[_0x4f87('0x40')],_0x4f87('0x158'));}};};Dialer[_0x4f87('0xac')]['launchHandleIvr']=function(_0xc572c){var _0x6b51bd=this;return function(){_0x6b51bd[_0x4f87('0x159')](_0xc572c);};};Dialer[_0x4f87('0xac')][_0x4f87('0x15a')]=function(_0x1160fb){var _0x53140e=this;if(isNotPreview(_0x1160fb[_0x4f87('0x5a')])){if(isVoiceQueueOutbound(_0x1160fb[_0x4f87('0x4f')])&&isActive(_0x1160fb[_0x4f87('0x59')])){_0x1160fb['sendMessageOneNotActive']=!![];BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](checkIsLoggedIn(_0x1160fb,_0x1160fb[_0x4f87('0x53')]))[_0x4f87('0xbd')](checkIsActive(_0x1160fb,_0x1160fb[_0x4f87('0x59')]))['then'](checkInterval(_0x1160fb))[_0x4f87('0xbd')](_0x53140e[_0x4f87('0x138')](_0x1160fb))['then'](_0x53140e['checkIfTime'](_0x1160fb[_0x4f87('0x15b')],_0x1160fb[_0x4f87('0x15c')],_0x1160fb['name'],_0x1160fb))[_0x4f87('0xbd')](_0x53140e[_0x4f87('0x13d')](_0x1160fb[_0x4f87('0x44')],_0x1160fb[_0x4f87('0x15c')],_0x1160fb[_0x4f87('0x40')],_0x1160fb))['then'](_0x53140e[_0x4f87('0x152')](_0x1160fb))[_0x4f87('0xb4')](loggerCatchQueueSummary(_0x4f87('0x15d'),_0x1160fb));}else{notSendMessagesQueue(_0x1160fb);}}else{freeVariablesPredictive(_0x1160fb);}};Dialer[_0x4f87('0xac')][_0x4f87('0x137')]=function(){var _0x4372fe=this;var _0x4a16c4;for(var _0x55f915 in this[_0x4f87('0x20')]){if(typeof this['campaigns'][_0x55f915]!==_0x4f87('0x98')){_0x4a16c4=this['campaigns'][_0x55f915];if(isCampaignIvr(_0x4a16c4[_0x4f87('0x4f')])&&isActive(_0x4a16c4[_0x4f87('0x74')])){_0x4a16c4[_0x4f87('0xa1')]=!![];BPromise[_0x4f87('0xba')]()[_0x4f87('0xbd')](checkIsActive(_0x4a16c4,_0x4a16c4['active']))['then'](checkInterval(_0x4a16c4))['then'](_0x4372fe[_0x4f87('0x138')](_0x4a16c4))[_0x4f87('0xbd')](_0x4372fe[_0x4f87('0x15e')](_0x4a16c4['dialGlobalInterval'],_0x4a16c4[_0x4f87('0x15c')],_0x4a16c4['name'],_0x4a16c4))[_0x4f87('0xbd')](_0x4372fe[_0x4f87('0x13d')](_0x4a16c4[_0x4f87('0x44')],_0x4a16c4['dialTimezone'],_0x4a16c4[_0x4f87('0x40')],_0x4a16c4))[_0x4f87('0xbd')](_0x4372fe[_0x4f87('0x15f')](_0x4a16c4))[_0x4f87('0xb4')](loggerCatchQueueSummary(_0x4f87('0x160'),_0x4a16c4));}else{notSendMessagesCampaign(_0x4a16c4);}}}};function getCallerIdRandom(_0x36575a,_0x1dcce){var _0x3f07ef;var _0x59ced2;var _0x30de0b;if(_0x1dcce<=0x0){_0x1dcce=0x1;}_0x3f07ef=new RegExp(_0x4f87('0x161')+_0x1dcce+'}$');_0x59ced2=Math['pow'](0xa,_0x1dcce-0x1);_0x30de0b=Math[_0x4f87('0x162')](0xa,_0x1dcce)-0x1;return util[_0x4f87('0x78')]('%s',_[_0x4f87('0x163')](_0x36575a,_0x3f07ef,_[_0x4f87('0x164')](_0x59ced2,_0x30de0b)));}function extractCalleridName(_0x572a9e){var _0x1ebfed=_0x572a9e[_0x4f87('0x165')](/"(.*?)"/);return _0x1ebfed?_0x1ebfed[0x1]:_0x572a9e;}function extractCalleridNumber(_0x5829ce){var _0x2cecea=_0x5829ce['match'](/<(.*?)>/);return _0x2cecea?_0x2cecea[0x1]:_0x5829ce;}Dialer[_0x4f87('0xac')][_0x4f87('0x166')]=function(_0x327410,_0x460a80){var _0x26e6c4=this;var _0x1472b8=uuid['v4']();this[_0x4f87('0x25')][_0x1472b8]=new Action(_0x327410,_0x460a80,_0x1472b8);return new BPromise(function(_0xc1d136,_0x130569){if(_[_0x4f87('0x86')](_0x327410)&&typeof _0x327410!==_0x4f87('0x167')){return _0x130569(msgResponse(_0x4f87('0x168'),_0x4f87('0x13e'),'voiceQueue\x20is\x20undefine'));}if(_[_0x4f87('0x86')](_0x460a80[_0x4f87('0x169')][_0x4f87('0x16a')])||_0x460a80['Contact'][_0x4f87('0x16a')]===null){return _0x130569(msgResponse(_0x4f87('0x168'),'Failure','contact\x20is\x20undefine'));}var _0x6f06e8={'XMD-CALLERID':_0x26e6c4[_0x4f87('0x25')][_0x1472b8][_0x4f87('0x16b')](),'XMD-AGI':_0x327410[_0x4f87('0x109')]?util[_0x4f87('0x78')](_0x4f87('0x16c'),ipAgi,_0x327410[_0x4f87('0x109')]):'NONE','XMD-AGIAFTER':_0x327410[_0x4f87('0x10e')]?util[_0x4f87('0x78')](_0x4f87('0x16c'),ipAgi,_0x327410[_0x4f87('0x10e')]):_0x4f87('0x16d'),'XMD-QUEUE':_0x327410[_0x4f87('0x4f')]==='outbound'?util[_0x4f87('0x78')](_0x4f87('0x16e'),_0x327410[_0x4f87('0x40')],_0x327410['dialQueueOptions']||'',_0x327410[_0x4f87('0x10f')]?'c':'',_0x327410['dialQueueTimeout']||0x3):'NONE','XMD-CONTACTID':_0x460a80[_0x4f87('0xd5')],'XMD-CDRTYPE':_0x4f87('0x8'),'CALLERID(all)':_0x26e6c4['actions'][_0x1472b8][_0x4f87('0x16b')](),'XMD-AMD':_0x327410['dialAMDActive']?_0x4f87('0x16f'):'NONE','XMD-DESTINATION':'xcally-motion-dialer'};if(_0x327410[_0x4f87('0xea')]){_0x6f06e8[_0x4f87('0x170')]=_0x327410[_0x4f87('0x171')]||0x9c4;_0x6f06e8[_0x4f87('0x172')]=_0x327410[_0x4f87('0x173')]||0x5dc;_0x6f06e8[_0x4f87('0x174')]=_0x327410[_0x4f87('0x175')]||0x320;_0x6f06e8[_0x4f87('0x176')]=_0x327410[_0x4f87('0x177')]||0x1388;_0x6f06e8[_0x4f87('0x178')]=_0x327410['dialAMDMinWordLength']||0x64;_0x6f06e8['XMD-AMDBETWEENWORDSSILENCE']=_0x327410[_0x4f87('0x179')]||0x32;_0x6f06e8[_0x4f87('0x17a')]=_0x327410[_0x4f87('0x17b')]||0x3;_0x6f06e8[_0x4f87('0x17c')]=_0x327410[_0x4f87('0x17d')]||0x100;_0x6f06e8[_0x4f87('0x17e')]=_0x327410[_0x4f87('0x17f')]||0x1388;}if(_0x327410[_0x4f87('0x4f')]===_0x4f87('0x50')){_0x6f06e8[_0x4f87('0x180')]=_0x460a80[_0x4f87('0xd7')];}else{_0x6f06e8['XMD-CAMPAIGNID']=_0x460a80[_0x4f87('0xfd')];}for(var _0x2bc7a9 in _0x460a80[_0x4f87('0x169')]){if(typeof _0x460a80['Contact'][_0x2bc7a9]!==_0x4f87('0x98')){if(isNotNull(_0x460a80[_0x4f87('0x169')][_0x2bc7a9])&&_0x2bc7a9!=='id'&&_0x2bc7a9!==_0x4f87('0x181')&&_0x2bc7a9!==_0x4f87('0x182')&&_0x2bc7a9!==_0x4f87('0x183')){_0x6f06e8[util[_0x4f87('0x78')](_0x4f87('0x184'),_0x4f87('0x185'),_[_0x4f87('0x186')](_0x2bc7a9))]=_0x460a80[_0x4f87('0x169')][_0x2bc7a9];}}}var _0x5bad22=_0x26e6c4['isTrunkReachable'](_0x327410['Trunk'])?getCallerId(_0x327410[_0x4f87('0x73')]['callerid'],_0x327410[_0x4f87('0x5b')],_0x327410[_0x4f87('0x187')]>0x0?getCallerIdRandom(_0x327410[_0x4f87('0x188')],_0x327410[_0x4f87('0x187')]):_0x327410[_0x4f87('0x188')]):getCallerId(_[_0x4f87('0xb0')](_0x327410['TrunkBackup'])?_0x327410[_0x4f87('0x73')]['callerid']:_0x327410[_0x4f87('0x139')][_0x4f87('0x75')],_0x327410[_0x4f87('0x5b')],_0x327410[_0x4f87('0x187')]>0x0?getCallerIdRandom(_0x327410['dialOriginateCallerIdNumber'],_0x327410[_0x4f87('0x187')]):_0x327410[_0x4f87('0x188')]);if(_0x5bad22){_0x6f06e8[_0x4f87('0x189')]=_0x26e6c4[_0x4f87('0x25')][_0x1472b8][_0x4f87('0x18a')]=extractCalleridName(_0x5bad22);_0x6f06e8[_0x4f87('0x18b')]=_0x26e6c4[_0x4f87('0x25')][_0x1472b8][_0x4f87('0x18c')]=extractCalleridNumber(_0x5bad22);}return ami['Action']({'actionid':_0x1472b8,'action':_0x4f87('0x168'),'channel':_0x26e6c4['isTrunkReachable'](_0x327410[_0x4f87('0x73')])?util['format']('SIP/%s/%s%s',_0x327410[_0x4f87('0x73')][_0x4f87('0x40')],isNotNull(_0x327410['dialPrefix'])?_0x327410[_0x4f87('0x18d')][_0x4f87('0x18e')]()||'':'',_0x327410[_0x4f87('0x18f')]>0x0?_0x460a80[_0x4f87('0x169')][_0x4f87('0x16a')]['substring'](_0x327410[_0x4f87('0x18f')]):_0x460a80[_0x4f87('0x169')][_0x4f87('0x16a')]):util['format']('SIP/%s/%s%s',_[_0x4f87('0xb0')](_0x327410[_0x4f87('0x139')])?_0x327410['Trunk'][_0x4f87('0x40')]:_0x327410['TrunkBackup'][_0x4f87('0x40')],isNotNull(_0x327410[_0x4f87('0x18d')])?_0x327410[_0x4f87('0x18d')][_0x4f87('0x18e')]()||'':'',_0x327410[_0x4f87('0x18f')]>0x0?_0x460a80['Contact']['phone']['substring'](_0x327410[_0x4f87('0x18f')]):_0x460a80[_0x4f87('0x169')][_0x4f87('0x16a')]),'callerid':_0x5bad22,'Exten':_0x4f87('0xe0'),'Context':_0x4f87('0x190'),'Priority':'1','variable':_0x6f06e8,'timeout':(_0x327410['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x1472b8})[_0x4f87('0xbd')](function(_0x128b1b){return _0xc1d136(_0x128b1b);})[_0x4f87('0xb4')](function(_0x4b02ef){_0x327410[_0x4f87('0x64')]+=0x1;var _0x36f399=new History(_0x26e6c4['actions'][_0x1472b8]);logger['error'](util[_0x4f87('0x78')]('[originateError]:\x20%s',JSON['stringify'](_0x4b02ef)));_0x36f399[_0x4f87('0xe3')]=0xe;_0x36f399[_0x4f87('0xa9')]=_0x4f87('0x191');_0x36f399[_0x4f87('0xab')]=moment()['format'](_0x4f87('0x103'));_0x36f399['endtime']=_0x36f399[_0x4f87('0xab')];_0x26e6c4[_0x4f87('0xcc')](_0x36f399)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x192')));_0x26e6c4['moveContactManagedDialer'](_0x36f399)['catch'](loggerCatch(_0x4f87('0x192')))[_0x4f87('0x1c')](function(){delete _0x26e6c4[_0x4f87('0x25')][_0x1472b8];return _0x130569(msgResponse(_0x4f87('0x168'),_0x4f87('0x4a'),_0x4f87('0x193')));});});});};Dialer[_0x4f87('0xac')]['syncOriginateResponse']=function(_0x434895){var _0x5756aa=this['actions'][_0x434895[_0x4f87('0x121')]];if(_0x5756aa){delete this[_0x4f87('0x25')][_0x434895[_0x4f87('0x121')]];_0x5756aa[_0x4f87('0x194')]=moment()[_0x4f87('0x78')](_0x4f87('0x103'));var _0x39f4c9=_0x5756aa[_0x4f87('0x4f')]===_0x4f87('0x8f')?this[_0x4f87('0x20')][_0x5756aa[_0x4f87('0xb7')]]:this[_0x4f87('0x1f')][_0x5756aa[_0x4f87('0x195')]()];if(!this[_0x4f87('0x196')](_0x434895[_0x4f87('0x197')])){this[_0x4f87('0xb6')](_0x39f4c9);return this[_0x4f87('0x198')](_0x5756aa,_0x39f4c9,_0x434895)['catch'](loggerCatch(_0x4f87('0x199')));}this[_0x4f87('0x26')][_0x434895[_0x4f87('0xdc')]]=_0x5756aa;}};Dialer[_0x4f87('0xac')][_0x4f87('0x19a')]=function(_0x253f41,_0x8b9c57,_0x42ecdc){var _0x20d9b0=new History(_0x8b9c57);if(_0x20d9b0[_0x4f87('0x19b')]+_0x20d9b0['countcongestionretry']+_0x20d9b0[_0x4f87('0x100')]+_0x20d9b0[_0x4f87('0xf2')]+_0x20d9b0[_0x4f87('0x101')]+_0x20d9b0['countabandonedretry']+_0x20d9b0['countmachineretry']+_0x20d9b0[_0x4f87('0xf3')]>=_0x42ecdc[_0x4f87('0xf4')]-0x1){return!![];}switch(_0x253f41){case 0x3:if(_0x20d9b0[_0x4f87('0x100')]>=_0x42ecdc[_0x4f87('0x19c')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x20d9b0['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x4f87('0xfa')](_0x42ecdc[_0x4f87('0x19d')],_0x4f87('0xfc'))['format'](_0x4f87('0x103')),'ContactId':_0x20d9b0['ContactId'],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0[_0x4f87('0xd7')]||undefined,'CampaignId':_0x20d9b0[_0x4f87('0xfd')]||undefined})['catch'](loggerCatch(_0x4f87('0x19e')));break;case 0x5:if(_0x20d9b0[_0x4f87('0x19b')]>=_0x42ecdc[_0x4f87('0x19f')]-0x1){return!![];}this[_0x4f87('0xc2')]({'active':![],'countbusyretry':_0x20d9b0[_0x4f87('0x19b')]+=0x1,'scheduledat':moment()[_0x4f87('0xfa')](_0x42ecdc['dialBusyRetryFrequency'],_0x4f87('0xfc'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x20d9b0[_0x4f87('0xd5')],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0['VoiceQueueId']||undefined,'CampaignId':_0x20d9b0[_0x4f87('0xfd')]||undefined})['catch'](loggerCatch(_0x4f87('0x1a0')));break;case 0x8:if(_0x20d9b0[_0x4f87('0xff')]>=_0x42ecdc[_0x4f87('0x1a1')]-0x1){return!![];}this[_0x4f87('0xc2')]({'active':![],'countcongestionretry':_0x20d9b0[_0x4f87('0xff')]+=0x1,'scheduledat':moment()[_0x4f87('0xfa')](_0x42ecdc['dialCongestionRetryFrequency'],'minutes')[_0x4f87('0x78')](_0x4f87('0x103')),'ContactId':_0x20d9b0[_0x4f87('0xd5')],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0['VoiceQueueId']||undefined,'CampaignId':_0x20d9b0['CampaignId']||undefined})['catch'](loggerCatch(_0x4f87('0x1a2')));break;case 0x0:if(_0x20d9b0['countnosuchnumberretry']>=_0x42ecdc['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x20d9b0[_0x4f87('0xf2')]+=0x1,'scheduledat':moment()[_0x4f87('0xfa')](_0x42ecdc['dialNoSuchNumberRetryFrequency'],_0x4f87('0xfc'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x20d9b0[_0x4f87('0xd5')],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0['VoiceQueueId']||undefined,'CampaignId':_0x20d9b0[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1a3')));}break;case 0xa:if(_0x20d9b0[_0x4f87('0x101')]>=_0x42ecdc[_0x4f87('0x118')]-0x1){return!![];}this[_0x4f87('0xc2')]({'active':![],'countdropretry':_0x20d9b0[_0x4f87('0x101')]+=0x1,'scheduledat':moment()['add'](_0x42ecdc['dialDropRetryFrequency'],_0x4f87('0xfc'))[_0x4f87('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x20d9b0[_0x4f87('0xd5')],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0[_0x4f87('0xd7')]||undefined,'CampaignId':_0x20d9b0[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x20d9b0[_0x4f87('0x102')]>=_0x42ecdc[_0x4f87('0x11f')]-0x1){return!![];}this[_0x4f87('0xc2')]({'active':![],'countabandonedretry':_0x20d9b0['countabandonedretry']+=0x1,'scheduledat':moment()[_0x4f87('0xfa')](_0x42ecdc[_0x4f87('0x120')],_0x4f87('0xfc'))['format'](_0x4f87('0x103')),'ContactId':_0x20d9b0['ContactId'],'ListId':_0x20d9b0['ListId'],'VoiceQueueId':_0x20d9b0[_0x4f87('0xd7')]||undefined,'CampaignId':_0x20d9b0[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1a4')));break;case 0x13:if(_0x20d9b0[_0x4f87('0xee')]>=_0x42ecdc[_0x4f87('0xf7')]-0x1){return!![];}this[_0x4f87('0xc2')]({'active':![],'countmachineretry':_0x20d9b0['countmachineretry']+=0x1,'scheduledat':moment()['add'](_0x42ecdc['dialMachineRetryFrequency'],_0x4f87('0xfc'))[_0x4f87('0x78')](_0x4f87('0x103')),'ContactId':_0x20d9b0[_0x4f87('0xd5')],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0[_0x4f87('0xd7')]||undefined,'CampaignId':_0x20d9b0['CampaignId']||undefined})['catch'](loggerCatch(_0x4f87('0x1a5')));break;case 0x14:if(_0x20d9b0[_0x4f87('0xf3')]>=_0x42ecdc['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x4f87('0xc2')]({'active':![],'countagentrejectretry':_0x20d9b0[_0x4f87('0xf3')]+=0x1,'scheduledat':moment()['add'](_0x42ecdc['dialAgentRejectRetryFrequency'],'minutes')[_0x4f87('0x78')](_0x4f87('0x103')),'ContactId':_0x20d9b0[_0x4f87('0xd5')],'ListId':_0x20d9b0[_0x4f87('0xd6')],'VoiceQueueId':_0x20d9b0[_0x4f87('0xd7')]||undefined,'CampaignId':_0x20d9b0[_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer['prototype'][_0x4f87('0x198')]=function(_0x5dcca0,_0x10fe72,_0xe782be){var _0x5cf24b=this;var _0x24375e=new History(_0x5dcca0);return new BPromise(function(_0x56e087,_0x485fd4){if(_[_0x4f87('0x86')](_0x10fe72)&&typeof _0x10fe72!=='object'){return _0x485fd4(msgResponse('[callProgressDetecting]','Failure','entity\x20is\x20undefine'));}if(_[_0x4f87('0x86')](_0xe782be)&&typeof _0xe782be!==_0x4f87('0x167')){return _0x485fd4(msgResponse(_0x4f87('0x1a6'),_0x4f87('0x13e'),_0x4f87('0x1a7')));}switch(_0xe782be[_0x4f87('0x10b')]){case'0':_0x10fe72[_0x4f87('0x63')]+=0x1;_0x24375e[_0x4f87('0xe3')]=0x0;_0x24375e['statedesc']=_0x4f87('0x1a8');_0x24375e[_0x4f87('0xf2')]+=0x1;_0x24375e['countglobal']+=0x1;ami[_0x4f87('0xf0')](_0x4f87('0x1a9'),ut[_0x4f87('0xe6')](_0x5dcca0,_0x4f87('0x1aa')));_0x5cf24b[_0x4f87('0xcc')](_0x24375e)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0xf1')));if(_0x5cf24b['checkRetriveMax'](0x0,_0x5dcca0,_0x10fe72)){if(_0x24375e['countnosuchnumberretry']>=_0x10fe72[_0x4f87('0x1ab')]){_0x5cf24b['createStateFinal'](_0x24375e,_0x56e087,_0x485fd4,'reason\x200\x20no\x20such\x20number....');}else{_0x5cf24b['stateGlobal'](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1ac'));}}break;case'3':_0x10fe72[_0x4f87('0x62')]+=0x1;_0x24375e[_0x4f87('0xe3')]=0x3;_0x24375e[_0x4f87('0xa9')]=_0x4f87('0x1ad');_0x24375e[_0x4f87('0x100')]+=0x1;_0x24375e['countglobal']+=0x1;ami[_0x4f87('0xf0')]('custom:agentnoanswer',ut[_0x4f87('0xe6')](_0x5dcca0,'noanswer'));_0x5cf24b[_0x4f87('0xcc')](_0x24375e)['catch'](loggerCatch(_0x4f87('0x1ae')));if(_0x5cf24b[_0x4f87('0x19a')](0x3,_0x5dcca0,_0x10fe72)){if(_0x24375e[_0x4f87('0x100')]>=_0x10fe72['dialNoAnswerMaxRetry']){_0x5cf24b['createStateFinal'](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1af'));}else{_0x5cf24b[_0x4f87('0xf5')](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1af'));}}break;case'5':_0x10fe72['outboundBusyCallsDay']+=0x1;_0x24375e[_0x4f87('0xe3')]=0x5;_0x24375e[_0x4f87('0xa9')]=_0x4f87('0x1b0');_0x24375e[_0x4f87('0x19b')]+=0x1;_0x24375e[_0x4f87('0xef')]+=0x1;ami[_0x4f87('0xf0')](_0x4f87('0x1b1'),ut[_0x4f87('0xe6')](_0x5dcca0,_0x4f87('0x1b2')));_0x5cf24b[_0x4f87('0xcc')](_0x24375e)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1b3')));if(_0x5cf24b['checkRetriveMax'](0x5,_0x5dcca0,_0x10fe72)){if(_0x24375e[_0x4f87('0x19b')]>=_0x10fe72[_0x4f87('0x19f')]){_0x5cf24b[_0x4f87('0xf8')](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1b4'));}else{_0x5cf24b['stateGlobal'](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1b4'));}}break;case'8':_0x10fe72[_0x4f87('0x5f')]+=0x1;_0x24375e['state']=0x8;_0x24375e[_0x4f87('0xa9')]='Congestion';_0x24375e[_0x4f87('0xff')]+=0x1;_0x24375e['countglobal']+=0x1;ami[_0x4f87('0xf0')](_0x4f87('0x1b5'),ut[_0x4f87('0xe6')](_0x5dcca0,_0x4f87('0x1b6')));_0x5cf24b[_0x4f87('0xcc')](_0x24375e)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1b7')));if(_0x5cf24b['checkRetriveMax'](0x8,_0x5dcca0,_0x10fe72)){if(_0x24375e[_0x4f87('0xff')]>=_0x10fe72[_0x4f87('0x1a1')]){_0x5cf24b[_0x4f87('0xf8')](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1b8'));}else{_0x5cf24b[_0x4f87('0xf5')](_0x24375e,_0x56e087,_0x485fd4,'reason\x208\x20congestion');}}break;case'11':_0x10fe72[_0x4f87('0x1b9')]+=0x1;_0x24375e[_0x4f87('0xe3')]=0xb;_0x24375e[_0x4f87('0xa9')]=_0x4f87('0x1ba');_0x24375e[_0x4f87('0x102')]+=0x1;_0x24375e['countglobal']+=0x1;_0x5cf24b[_0x4f87('0xcc')](_0x24375e)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1bb')));if(_0x5cf24b[_0x4f87('0x19a')](0xb,_0x5dcca0,_0x10fe72)){if(_0x24375e[_0x4f87('0x102')]>=_0x10fe72[_0x4f87('0x11f')]){_0x5cf24b['createStateFinal'](_0x24375e,_0x56e087,_0x485fd4,'reason\x2011\x20abandoned');}else{_0x5cf24b[_0x4f87('0xf5')](_0x24375e,_0x56e087,_0x485fd4,'reason\x2011\x20abandoned');}}break;case'20':_0x10fe72[_0x4f87('0x66')]+=0x1;_0x24375e[_0x4f87('0xe3')]=0x14;_0x24375e[_0x4f87('0xa9')]=_0x4f87('0x1bc');_0x24375e[_0x4f87('0xf3')]+=0x1;_0x24375e[_0x4f87('0xef')]+=0x1;ami['emit'](_0x4f87('0x1bd'),ut[_0x4f87('0xe6')](_0x5dcca0,_0x4f87('0x1be')));_0x5cf24b[_0x4f87('0xcc')](_0x24375e)[_0x4f87('0xb4')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x5cf24b[_0x4f87('0x19a')](0x14,_0x5dcca0,_0x10fe72)){if(_0x24375e[_0x4f87('0xf3')]>=_0x10fe72[_0x4f87('0x1bf')]){_0x5cf24b[_0x4f87('0xf8')](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1c0'));}else{_0x5cf24b['stateGlobal'](_0x24375e,_0x56e087,_0x485fd4,_0x4f87('0x1c0'));}}break;default:_0x10fe72['outboundUnknownCallsDay']+=0x1;_0x24375e[_0x4f87('0xe3')]=0xc;_0x24375e[_0x4f87('0xa9')]=_0xe782be['reason'];_0x5cf24b[_0x4f87('0xcc')](_0x24375e)[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1c1')));if(_0x5cf24b[_0x4f87('0x19a')](_0xe782be[_0x4f87('0x10b')],_0x5dcca0,_0x10fe72)){if(_0x24375e[_0x4f87('0x19b')]+_0x24375e[_0x4f87('0xff')]+_0x24375e['countnoanswerretry']+_0x24375e[_0x4f87('0xf2')]+_0x24375e[_0x4f87('0x101')]+_0x24375e[_0x4f87('0x102')]+_0x24375e[_0x4f87('0xee')]+_0x24375e['countagentrejectretry']>=_0x10fe72[_0x4f87('0xf4')]){_0x5cf24b[_0x4f87('0xf5')](_0x24375e,_0x56e087,_0x485fd4,_0xe782be[_0x4f87('0x10b')]);}else{_0x5cf24b[_0x4f87('0xf8')](_0x24375e,_0x56e087,_0x485fd4,_0xe782be[_0x4f87('0x10b')]);}}}});};Dialer[_0x4f87('0xac')][_0x4f87('0xf5')]=function(_0x66eb5c,_0x944fb8,_0x2a824b,_0x19d2df){var _0x16a438=new Final(_0x66eb5c);_0x16a438[_0x4f87('0xe3')]=0xf;_0x16a438[_0x4f87('0xa9')]=_0x4f87('0x1c2');this[_0x4f87('0xf8')](_0x16a438,_0x944fb8,_0x2a824b,_0x19d2df);};Dialer[_0x4f87('0xac')]['createStateFinal']=function(_0x48aaa0,_0x4efaef,_0x3dbb96,_0x58a759){this[_0x4f87('0xca')](_0x48aaa0)['then'](function(){return _0x4efaef(msgResponse(_0x4f87('0x1a6'),_0x4f87('0xd9'),_0x58a759));})[_0x4f87('0xb4')](function(){return _0x3dbb96(msgResponse('[moveContactManagedDialer][0]',_0x4f87('0x13e'),_0x4f87('0x1c3')));});};Dialer[_0x4f87('0xac')]['predictive']=function(_0x11fef5){var _0x674816=_0x11fef5[_0x4f87('0x1c4')]/0x64;var _0x183cec=_0x11fef5[_0x4f87('0x61')]/(_0x11fef5['outboundDropCallsDayTimeout']+_0x11fef5[_0x4f87('0x5d')]);var _0x16dba8=Math[_0x4f87('0x1c5')](_0x11fef5[_0x4f87('0x6e')]*(_0x11fef5[_0x4f87('0x1c6')]/0x64));var _0x45d65c=Math[_0x4f87('0x1c5')](_0x11fef5[_0x4f87('0x6e')]*(_0x11fef5[_0x4f87('0x1c7')]/0x64));var _0x2ccc4f=_0x11fef5[_0x4f87('0x52')]+_0x11fef5[_0x4f87('0xa2')];var _0x5043db=Math[_0x4f87('0x1c8')](_0x11fef5['erlangCalls']*_0x11fef5['erlangAbandonmentRate']*_0x11fef5[_0x4f87('0x1c9')]*_0x11fef5[_0x4f87('0x6c')]);if(_[_0x4f87('0x86')](_0x11fef5[_0x4f87('0x28')])){if(!_[_0x4f87('0x86')](_0x11fef5[_0x4f87('0x72')])){_0x11fef5[_0x4f87('0x72')]=undefined;loggerPredictive[_0x4f87('0x94')](_0x4f87('0x1ca'),_0x4f87('0x1cb'));}if(!_[_0x4f87('0x86')](_0x11fef5[_0x4f87('0x8e')])){loggerPredictive[_0x4f87('0x94')](_0x4f87('0x1ca'),_0x4f87('0x1cc'));clearInterval(_0x11fef5[_0x4f87('0x8e')]);_0x11fef5[_0x4f87('0x8e')]=undefined;}_0x11fef5[_0x4f87('0x28')]=moment()[_0x4f87('0x78')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x4f87('0x7b')](_0x11fef5[_0x4f87('0x40')],_0x4f87('0x1cd'),_0x11fef5[_0x4f87('0x28')]);this[_0x4f87('0x154')](_0x11fef5,0x1);}else if(ifInterval(_0x11fef5[_0x4f87('0x1ce')],_0x11fef5[_0x4f87('0x28')])){this[_0x4f87('0x154')](_0x11fef5,0x1);loggerPredictiveCalls[_0x4f87('0x7b')]('[startMethodPredictive][StartProgressive][Loop]',_0x11fef5['startProgressive'],_0x11fef5[_0x4f87('0x40')]);_0x11fef5[_0x4f87('0x6f')]=0x0;_0x11fef5['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x674816<_0x183cec&&_0x11fef5['dialPredictiveOptimization']===_0x4f87('0x1cf')){freeVariablesPredictive(_0x11fef5);loggerPredictive[_0x4f87('0x7b')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x4f87('0x1d0'),_0x183cec,_0x4f87('0x28'),_0x11fef5[_0x4f87('0x40')]);}else if(_0x5043db<_0x11fef5[_0x4f87('0x1d1')]&&_0x11fef5[_0x4f87('0x1d2')]===_0x4f87('0x1cf')){freeVariablesPredictive(_0x11fef5);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x1d3'),_0x4f87('0x1d4'),_0x5043db,_0x4f87('0x1d5'),_0x11fef5[_0x4f87('0x1d1')],_0x4f87('0x28'),_0x11fef5[_0x4f87('0x40')]);}else if(!ifInterval(_0x11fef5['dialPredictiveInterval'],_0x11fef5['startProgressive'])&&_['isUndefined'](_0x11fef5[_0x4f87('0x72')])&&!_[_0x4f87('0x86')](_0x11fef5[_0x4f87('0x28')])){_0x11fef5['startPredictive']=moment()[_0x4f87('0x78')](_0x4f87('0x103'));loggerPredictive['info'](_0x11fef5[_0x4f87('0x40')],'started\x20in\x20predictive\x20at',_0x11fef5['startPredictive']);this[_0x4f87('0xbf')](_0x11fef5['dialPredictiveInterval'])[_0x4f87('0xbd')](this['getDataPredictive'](_0x11fef5))[_0x4f87('0xbd')](mergeDataErlangB(_0x11fef5))[_0x4f87('0xbd')](this['startMethodPredictive'](_0x11fef5))[_0x4f87('0xb4')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x11fef5));}else if(!ifInterval(_0x11fef5[_0x4f87('0x1ce')],_0x11fef5[_0x4f87('0x72')])){_0x11fef5[_0x4f87('0x1d1')]=0x0;_0x11fef5[_0x4f87('0x72')]=moment()[_0x4f87('0x78')](_0x4f87('0x103'));loggerPredictive['info'](_0x11fef5[_0x4f87('0x40')],'recalculate\x20predictive\x20at',_0x11fef5[_0x4f87('0x72')]);clearInterval(_0x11fef5[_0x4f87('0x8e')]);_0x11fef5[_0x4f87('0x8e')]=undefined;this['averageHandleTime'](_0x11fef5[_0x4f87('0x1ce')])[_0x4f87('0xbd')](this['getDataPredictive'](_0x11fef5))[_0x4f87('0xbd')](mergeDataErlangB(_0x11fef5))[_0x4f87('0xbd')](this['startMethodPredictive'](_0x11fef5))[_0x4f87('0xb4')](loggerCatchPredictive(_0x4f87('0x1d6'),_0x11fef5));}else if(_0x11fef5[_0x4f87('0x6e')]&&_0x2ccc4f<_0x11fef5[_0x4f87('0x6e')]-_0x45d65c){freeVariablesPredictive(_0x11fef5);loggerPredictive[_0x4f87('0x7b')](_0x11fef5['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x2ccc4f,_0x4f87('0x1d7'),_0x11fef5['predictiveIntervalAvailable'],'-',_0x45d65c,'=',_0x11fef5[_0x4f87('0x6e')]-_0x45d65c,')');}else if(_0x11fef5[_0x4f87('0x6e')]&&_0x2ccc4f>_0x11fef5[_0x4f87('0x6e')]+_0x16dba8){freeVariablesPredictive(_0x11fef5);loggerPredictive[_0x4f87('0x7b')](_0x11fef5[_0x4f87('0x40')],_0x4f87('0x1d8'),_0x2ccc4f,_0x4f87('0x1d9'),_0x11fef5[_0x4f87('0x6e')],'+',_0x16dba8,'=',_0x11fef5['predictiveIntervalAvailable']+_0x16dba8,')');}};Dialer[_0x4f87('0xac')]['getDataPredictive']=function(_0x387da0){var _0x17248b=this;return function(_0xd19f62){return new BPromise(function(_0x58bddf,_0x17b475){_[_0x4f87('0x8c')](_0x387da0,_0xd19f62[0x0]);if(checkGetDataPredictive(_0xd19f62[0x0])){var _0xe4ba51=_0x387da0['predictiveIntervalAvailable']=_0x387da0[_0x4f87('0xa2')]+_0x387da0[_0x4f87('0x52')];var _0x42972f=_0x387da0['dialPredictiveInterval']*0x3c;var _0x299c5d=_0xd19f62[0x0][_0x4f87('0x84')]+_0xd19f62[0x0][_0x4f87('0x68')];var _0xac1789=(_0xd19f62[0x0]['predictiveIntervalAnsweredCalls']+_0xd19f62[0x0]['predictiveIntervalDroppedCallsTimeout']+_0xd19f62[0x0][_0x4f87('0x69')])/_0xd19f62[0x0]['predictiveIntervalTotalCalls'];_0x387da0[_0x4f87('0x1c9')]=_0xac1789>0x0?_0xac1789:0x1;switch(_0x387da0[_0x4f87('0x1d2')]){case _0x4f87('0x1cf'):var _0x2e096a=_0x387da0[_0x4f87('0x1c4')]/0x64;return _0x17248b[_0x4f87('0x1da')](_0xe4ba51,_0x42972f,_0x299c5d,_0xac1789,_0x2e096a)[_0x4f87('0xbd')](function(_0x45f6ba){return _0x58bddf(_0x45f6ba);});case _0x4f87('0x1db'):var _0x44bf5b=_0x387da0[_0x4f87('0x1c4')]/0x64;return _0x17248b[_0x4f87('0x1dc')](_0xe4ba51,_0x42972f,_0x299c5d,_0xac1789,_0x44bf5b)[_0x4f87('0xbd')](function(_0x7cce4c){return _0x58bddf(_0x7cce4c);});default:return _0x17b475(msgResponse(_0x4f87('0x1dd'),'Failure',_0x4f87('0x1de')));}}else{return _0x17b475(msgResponse(_0x4f87('0x1dd'),_0x4f87('0x13e'),_0x4f87('0x1df')));}});};};Dialer[_0x4f87('0xac')]['getDataPredictiveOld']=function(_0x5675df){var _0x477b1f=this;return function(_0x169dfd){return new BPromise(function(_0x3ea610,_0x38be65){_[_0x4f87('0x8c')](_0x5675df,_0x169dfd[0x0]);if(checkGetDataPredictive(_0x169dfd[0x0])){loggerPredictive[_0x4f87('0x7b')](JSON[_0x4f87('0x4b')](_0x169dfd[0x0]));if(_0x5675df[_0x4f87('0x1d2')]===_0x4f87('0x1cf')){return _0x477b1f[_0x4f87('0xc9')](_0x5675df['id'])[_0x4f87('0xbd')](function(_0x460e8c){var _0x5315f6=_0x5675df[_0x4f87('0x53')]-_0x460e8c[0x0][_0x4f87('0x1e0')];var _0x165578=_0x5675df[_0x4f87('0x1ce')]*0x3c;var _0x4bcbe4=_0x169dfd[0x0][_0x4f87('0x84')]+_0x169dfd[0x0][_0x4f87('0x68')];var _0x129166=(_0x169dfd[0x0][_0x4f87('0x1e1')]+_0x169dfd[0x0][_0x4f87('0x6a')]+_0x169dfd[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x169dfd[0x0][_0x4f87('0x83')];var _0x231e71=_0x5675df[_0x4f87('0x1c4')]/0x64;_0x5675df[_0x4f87('0x6d')]=_0x460e8c[0x0][_0x4f87('0x1e0')]||0x0;_0x5675df['predictiveIntervalHitRate']=_0x129166>0x0?_0x129166:0x1;return _0x477b1f[_0x4f87('0x1da')](_0x5315f6,_0x165578,_0x4bcbe4,_0x129166,_0x231e71);})[_0x4f87('0xbd')](function(_0x182118){return _0x3ea610(_0x182118);})['catch'](function(_0x32c346){return _0x38be65(msgResponse(_0x4f87('0x1e2'),_0x4f87('0x13e'),JSON[_0x4f87('0x4b')](_0x32c346)));});}if(_0x5675df[_0x4f87('0x1d2')]==='agentBusyFactor'){return _0x477b1f['getVoiceQueueRtPauses'](_0x5675df['id'])[_0x4f87('0xbd')](function(_0x404f38){var _0x5328d4=_0x5675df[_0x4f87('0x53')]-_0x404f38[0x0]['outboundQueuePauses'];var _0x2cefea=_0x5675df['dialPredictiveInterval']*0x3c;var _0x4bda2e=_0x169dfd[0x0][_0x4f87('0x84')]+_0x169dfd[0x0][_0x4f87('0x68')];var _0x53072c=(_0x169dfd[0x0]['predictiveIntervalAnsweredCalls']+_0x169dfd[0x0][_0x4f87('0x6a')]+_0x169dfd[0x0][_0x4f87('0x69')])/_0x169dfd[0x0][_0x4f87('0x83')];var _0x2803c5=_0x5675df[_0x4f87('0x1c4')]/0x64;_0x5675df[_0x4f87('0x6d')]=_0x404f38[0x0][_0x4f87('0x1e0')]||0x0;_0x5675df[_0x4f87('0x1c9')]=_0x53072c>0x0?_0x53072c:0x1;return _0x477b1f['busyFactor'](_0x5328d4,_0x2cefea,_0x4bda2e,_0x53072c,_0x2803c5);})['then'](function(_0x254ef8){return _0x3ea610(_0x254ef8);})[_0x4f87('0xb4')](function(_0x62acf3){return _0x38be65(msgResponse(_0x4f87('0x1e2'),_0x4f87('0x13e'),JSON[_0x4f87('0x4b')](_0x62acf3)));});}}else{return _0x38be65(msgResponse('[getDataPredictive]','Failure',_0x4f87('0x1df')));}});};};Dialer[_0x4f87('0xac')][_0x4f87('0x1e3')]=function(_0x1687af){var _0x2c8d0d=this;return function(){var _0xa6b48d=0x0;var _0x32032c=Math[_0x4f87('0x1c8')](_0x1687af[_0x4f87('0x70')]*0x3e8);if(_0x32032c>0x0){_0x32032c=_0x32032c<0x64?0x64:_0x32032c;loggerPredictive[_0x4f87('0x7b')](_0x1687af[_0x4f87('0x40')],'one\x20call\x20every:',_0x32032c,_0x4f87('0x4c'));_0x1687af[_0x4f87('0x8e')]=setInterval(function(){_0x2c8d0d[_0x4f87('0x8e')](_0x1687af);loggerPredictiveCalls[_0x4f87('0x7b')](_0x4f87('0x1e4'),_0xa6b48d+=0x1);},_0x32032c);}else{loggerPredictive['info'](_0x1687af['name'],_0x4f87('0x1e5'));}};};Dialer[_0x4f87('0xac')][_0x4f87('0x1e6')]=function(_0x54a5d3,_0x16a0c4){var _0x8f620f=this;return function(_0x1ca959){if(_[_0x4f87('0x48')](_0x1ca959)){if(_[_0x4f87('0xb0')](_0x16a0c4[_0x4f87('0x1e7')])||!_0x16a0c4['recallme']){if(_0x54a5d3[_0x4f87('0x5a')]===_0x4f87('0x1e8')){_0x54a5d3[_0x4f87('0x128')]=_[_0x4f87('0x86')](_0x54a5d3[_0x4f87('0x128')])?!![]:_0x54a5d3[_0x4f87('0x128')];var _0x31c1ae=uuid['v4']();_0x8f620f['actions'][_0x31c1ae]=new Action(_0x54a5d3,_0x16a0c4,_0x31c1ae);loggerBooked['info'](_0x4f87('0x1e9'),_0x31c1ae,_0x4f87('0x1ea'),JSON[_0x4f87('0x4b')](_0x54a5d3['queueStatusComplete']),_0x4f87('0x1eb'),_0x54a5d3[_0x4f87('0x40')]);if(_0x54a5d3[_0x4f87('0x128')]){_0x54a5d3['queueStatusComplete']=![];_0x8f620f['queueBooked'][_0x8f620f[_0x4f87('0x25')][_0x31c1ae][_0x4f87('0xb7')]]=[];ami['Action']({'actionid':_0x31c1ae,'action':_0x4f87('0x1ec'),'queue':_0x54a5d3[_0x4f87('0x40')]})['catch'](function(){_0x8f620f[_0x4f87('0xb6')](_0x54a5d3);_0x8f620f[_0x4f87('0xc2')]({'active':![],'ContactId':_0x8f620f['actions'][_0x31c1ae][_0x4f87('0xd5')],'ListId':_0x8f620f[_0x4f87('0x25')][_0x31c1ae][_0x4f87('0xd6')],'VoiceQueueId':_0x8f620f[_0x4f87('0x25')][_0x31c1ae][_0x4f87('0xd7')]||undefined,'CampaignId':_0x8f620f['actions'][_0x31c1ae]['CampaignId']||undefined})[_0x4f87('0xb4')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x8f620f[_0x4f87('0x25')][_0x31c1ae];});}else{loggerBooked[_0x4f87('0x7b')](_0x4f87('0x1ed'),JSON['stringify'](_0x54a5d3[_0x4f87('0x128')]),_0x4f87('0x1eb'),_0x54a5d3[_0x4f87('0x40')]);_0x8f620f[_0x4f87('0xb6')](_0x54a5d3);_0x8f620f['rescheduleContact']({'active':![],'ContactId':_0x8f620f[_0x4f87('0x25')][_0x31c1ae]['ContactId'],'ListId':_0x8f620f['actions'][_0x31c1ae]['ListId'],'VoiceQueueId':_0x8f620f['actions'][_0x31c1ae][_0x4f87('0xd7')]||undefined,'CampaignId':_0x8f620f[_0x4f87('0x25')][_0x31c1ae][_0x4f87('0xfd')]||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1ee')));delete _0x8f620f[_0x4f87('0x25')][_0x31c1ae];}}else{return _0x8f620f[_0x4f87('0x166')](_0x54a5d3,_0x16a0c4);}}else{if(getDiff(_0x16a0c4[_0x4f87('0x1ef')])<_0x54a5d3[_0x4f87('0x1f0')]*0x3c){if(_0x16a0c4[_0x4f87('0x1f1')]&&!_0x16a0c4[_0x4f87('0x1f1')][_0x4f87('0x1f2')]){_0x8f620f[_0x4f87('0x1e')][_0x4f87('0x12a')](_0x16a0c4['id'])[_0x4f87('0x1c')](function(){_0x8f620f[_0x4f87('0xb6')](_0x54a5d3);});}else{_0x8f620f[_0x4f87('0xc4')]({'active':![]},_0x16a0c4['id'],0x1)[_0x4f87('0x1c')](function(){_0x8f620f['updateOriginated'](_0x54a5d3);});}}else{_0x54a5d3[_0x4f87('0x65')]+=0x1;_0x8f620f[_0x4f87('0xb6')](_0x54a5d3);if(_0x54a5d3[_0x4f87('0x1f3')]){_0x8f620f['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x16a0c4[_0x4f87('0xd5')],'ListId':_0x16a0c4['ListId'],'VoiceQueueId':_0x16a0c4[_0x4f87('0xd7')]||undefined,'CampaignId':_0x16a0c4['CampaignId']||undefined})[_0x4f87('0xb4')](loggerCatch(_0x4f87('0x1f4')));_0x8f620f[_0x4f87('0xcc')](createObjHistory(_0x54a5d3,_0x16a0c4,_0x4f87('0x1f5'),0x17,_0x4f87('0x1f6')))[_0x4f87('0xb4')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x8f620f[_0x4f87('0xd3')](createObjHistory(_0x54a5d3,_0x16a0c4,'RECALLFAILEDTIMEOUT',0x16,_0x4f87('0x1f7')),_0x4f87('0x1f8'),'[Originate][HistoryRecallClose]');}}}}else{_0x54a5d3['outboundBlacklistCallsDay']+=0x1;_0x8f620f[_0x4f87('0xd3')](createObjHistory(_0x54a5d3,_0x16a0c4,'BLACKLIST',0xd,_0x4f87('0x1f9')),_0x4f87('0x1fa'),'[Originate][MoveBlacklist]');throw _0x4f87('0x1fb');}};};Dialer['prototype'][_0x4f87('0x159')]=function(_0x10b934){var _0x3afd68=this;var _0x4ec59f=_0x10b934['limitCalls']-_0x10b934[_0x4f87('0x97')]-_0x10b934[_0x4f87('0xc6')];emitCampaignSummary(_0x10b934);if(_0x4ec59f>0x0){if(_0x4ec59f>this[_0x4f87('0x23')]){_0x4ec59f=this[_0x4f87('0x23')];}_0x10b934[_0x4f87('0xc6')]+=_0x4ec59f;this[_0x4f87('0x1fc')](_0x10b934['id'],_0x4ec59f,_0x10b934[_0x4f87('0x1fd')],_0x10b934)[_0x4f87('0xbd')](function(_0x2a8f5e){_0x10b934['temp']-=_0x4ec59f;_0x10b934['temp']=_0x10b934[_0x4f87('0xc6')]>0x0?_0x10b934[_0x4f87('0xc6')]:0x0;if(!checkContactEmpty(_0x2a8f5e)){_0x10b934[_0x4f87('0x42')]=_0x4f87('0x9f');logger['info'](_0x4f87('0x1fe')+_0x10b934[_0x4f87('0x40')]);}else{_0x10b934[_0x4f87('0x97')]+=_0x2a8f5e[_0x4f87('0x96')];_0x10b934['message']='RUNNING';for(var _0x45eec6=0x0;_0x45eec6<_0x2a8f5e[_0x4f87('0x96')];_0x45eec6+=0x1){_0x10b934[_0x4f87('0x1ff')]+=0x1;if(_[_0x4f87('0xb0')](_0x2a8f5e[_0x45eec6])||_['isNil'](_0x2a8f5e[_0x45eec6][_0x4f87('0x169')])||_[_0x4f87('0xb0')](_0x2a8f5e[_0x45eec6][_0x4f87('0x169')][_0x4f87('0x16a')])){_0x3afd68['emptyContact']('[actionOriginate]\x20',_0x10b934,_0x2a8f5e[_0x45eec6]);}else{_0x3afd68[_0x4f87('0xbe')](_['pick'](_0x2a8f5e[_0x45eec6],[_0x4f87('0xfd'),_0x4f87('0x200')]))[_0x4f87('0xbd')](_0x3afd68['checkContactBlack'](_0x10b934,_0x2a8f5e[_0x45eec6]))['catch'](_0x3afd68[_0x4f87('0xd0')](_0x4f87('0x201'),_0x10b934));}}}})[_0x4f87('0xb4')](loggerGetContactDialer(_0x4f87('0x202'),_0x10b934,_0x4ec59f));}};Dialer[_0x4f87('0xac')][_0x4f87('0x154')]=function(_0x41705f,_0x29f7cd){var _0x19e330=this;var _0x4734ed=[];var _0x197928=_0x29f7cd>=0x1?_0x29f7cd:0x1;if(_0x41705f['dialMethod']===_0x4f87('0x1e8')){_0x197928=0x1;}var _0x1158c2=Math[_0x4f87('0x1c8')](_0x41705f[_0x4f87('0x52')]*_0x197928)-_0x41705f[_0x4f87('0x97')]-_0x41705f['temp'];emitVoiceQueueSummary(_0x41705f);if(_0x41705f[_0x4f87('0x203')]>0x0){var _0x3711b8=_0x41705f['dialLimitQueue']-_0x41705f['originated']-_0x41705f[_0x4f87('0xa2')]-_0x41705f[_0x4f87('0xc6')]-_0x41705f[_0x4f87('0x54')];if(_0x1158c2>_0x3711b8){_0x1158c2=_0x3711b8;}}if(_0x1158c2>0x0){if(_0x41705f[_0x4f87('0x5a')]===_0x4f87('0x1e8')){_0x1158c2=0x1;}if(_0x1158c2>this['maxNumberOriginate']){_0x1158c2=this[_0x4f87('0x23')];}_0x41705f[_0x4f87('0xc6')]+=_0x1158c2;for(var _0x4282ea in this['agents']){if(typeof this[_0x4f87('0x21')][_0x4282ea]!==_0x4f87('0x98')){if(this['agents'][_0x4282ea][_0x4f87('0xe3')]==='not_inuse'&&this[_0x4f87('0x21')][_0x4282ea][_0x4f87('0xb2')]==='reachable'){_0x4734ed['push'](this[_0x4f87('0x21')][_0x4282ea]['id']);}}}this[_0x4f87('0xc5')](_0x41705f['id'],_0x4734ed,_0x1158c2,_0x41705f['dialOrderByScheduledAt'],_0x41705f)['then'](function(_0x46ac2a){_0x41705f['temp']-=_0x1158c2;_0x41705f[_0x4f87('0xc6')]=_0x41705f[_0x4f87('0xc6')]>0x0?_0x41705f[_0x4f87('0xc6')]:0x0;if(!checkContactEmpty(_0x46ac2a)){_0x19e330[_0x4f87('0xb9')](_0x41705f)[_0x4f87('0xbd')](sendMessageReschedule(_0x41705f))[_0x4f87('0xb4')](loggerCatch(_0x4f87('0xbb')));}else{_0x41705f[_0x4f87('0x97')]+=_0x46ac2a[_0x4f87('0x96')];_0x41705f[_0x4f87('0x42')]=_0x41705f[_0x4f87('0x5a')]===_0x4f87('0x1e8')?_0x4f87('0x16f'):'RUNNING';for(var _0x493809=0x0;_0x493809<_0x46ac2a['length'];_0x493809+=0x1){if(_[_0x4f87('0xb0')](_0x46ac2a[_0x493809])||_[_0x4f87('0xb0')](_0x46ac2a[_0x493809][_0x4f87('0x169')])||_['isNil'](_0x46ac2a[_0x493809][_0x4f87('0x169')][_0x4f87('0x16a')])){_0x19e330[_0x4f87('0xd1')](_0x4f87('0x204'),_0x41705f,_0x46ac2a[_0x493809]);}else{_0x19e330['checkIsBlackList'](_[_0x4f87('0xd4')](_0x46ac2a[_0x493809],['VoiceQueueId','Contact.phone']))[_0x4f87('0xbd')](_0x19e330[_0x4f87('0x1e6')](_0x41705f,_0x46ac2a[_0x493809]))[_0x4f87('0xb4')](_0x19e330[_0x4f87('0xd0')](_0x4f87('0x204'),_0x41705f));}}}})[_0x4f87('0xb4')](loggerGetContactDialer('[getContactDialer2]',_0x41705f,_0x1158c2));}};Dialer[_0x4f87('0xac')][_0x4f87('0x8e')]=function(_0x4b1a36){if(_0x4b1a36[_0x4f87('0x203')]>0x0){var _0x4ceffc=_0x4b1a36[_0x4f87('0x203')]-_0x4b1a36[_0x4f87('0x97')]-_0x4b1a36['talking'];if(_0x4ceffc>0x0){this[_0x4f87('0x205')](_0x4b1a36);}else{loggerPredictiveCalls[_0x4f87('0x7b')](_0x4f87('0x206'));}}else{this[_0x4f87('0x205')](_0x4b1a36);}};Dialer[_0x4f87('0xac')][_0x4f87('0x205')]=function(_0x525f12){var _0x11ff50=this;var _0x6c0bcf=[];_0x525f12['originated']+=0x1;for(var _0x121b2d in this['agents']){if(typeof this[_0x4f87('0x21')][_0x121b2d]!==_0x4f87('0x98')){if(this['agents'][_0x121b2d][_0x4f87('0xe3')]===_0x4f87('0x207')&&this['agents'][_0x121b2d][_0x4f87('0xb2')]===_0x4f87('0x208')){_0x6c0bcf[_0x4f87('0x14a')](this[_0x4f87('0x21')][_0x121b2d]['id']);}}}this[_0x4f87('0xc5')](_0x525f12['id'],_0x6c0bcf,0x1,_0x525f12[_0x4f87('0x1fd')],_0x525f12)[_0x4f87('0xbd')](function(_0x3fc4a4){if(!checkContactEmpty(_0x3fc4a4)){checkContactLowerLimitOriginate(_0x525f12,0x1,0x0);_0x11ff50[_0x4f87('0xb9')](_0x525f12)['then'](sendMessageReschedule(_0x525f12))[_0x4f87('0xb4')](loggerCatch('[countReScheduled]\x20'));}else{_0x525f12[_0x4f87('0x42')]=_0x4f87('0x209');if(_[_0x4f87('0xb0')](_0x3fc4a4[0x0])||_[_0x4f87('0xb0')](_0x3fc4a4[0x0][_0x4f87('0x169')])||_['isNil'](_0x3fc4a4[0x0][_0x4f87('0x169')][_0x4f87('0x16a')])){_0x11ff50[_0x4f87('0xd1')](_0x4f87('0x204'),_0x525f12,_0x3fc4a4[0x0]);}else{_0x11ff50[_0x4f87('0xbc')](_['pick'](_0x3fc4a4[0x0],['VoiceQueueId',_0x4f87('0x200')]))[_0x4f87('0xbd')](_0x11ff50[_0x4f87('0x1e6')](_0x525f12,_0x3fc4a4[0x0]))[_0x4f87('0xb4')](_0x11ff50['loggerHandler'](_0x4f87('0x20a'),_0x525f12));}}})['catch'](loggerGetContactDialer(_0x4f87('0x20b'),_0x525f12,0x1));emitVoiceQueueSummary(_0x525f12);};Dialer[_0x4f87('0xac')][_0x4f87('0x1da')]=function(_0x5b8c07,_0x513b48,_0x386d84,_0x4b0024,_0x2d2556,_0x5218e4){loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x20c'));loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x20d'),_0x5b8c07);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x513b48);loggerPredictive[_0x4f87('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',_0x386d84);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x20e'),_0x4b0024);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x20f'),_0x2d2556);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x82'));return new BPromise(function(_0x193e42,_0x5a340f){if(_0x5b8c07<=0x0||isNaN(_0x5b8c07)){return _0x5a340f(msgResponse(_0x4f87('0x210'),'Error',_0x4f87('0x211')+_0x5b8c07));}if(_0x386d84<=0x0||isNaN(_0x386d84)){return _0x5a340f(msgResponse(_0x4f87('0x210'),'Error',_0x4f87('0x212')+_0x386d84));}if(_0x4b0024<=0x0||isNaN(_0x4b0024)){return _0x5a340f(msgResponse(_0x4f87('0x210'),_0x4f87('0x4a'),_0x4f87('0x213')+_0x4b0024));}if(_0x513b48<=0x0||isNaN(_0x513b48)){return _0x5a340f(msgResponse(_0x4f87('0x210'),'Error',_0x4f87('0x214')+_0x513b48));}if(_0x2d2556<=0x0||isNaN(_0x2d2556)){return _0x5a340f(msgResponse(_0x4f87('0x210'),'Error',_0x4f87('0x215')+_0x2d2556));}_0x5218e4=_0x5218e4||0x0;var _0x5eab8a=0x1/_0x386d84;var _0x5dedf5=0x0;var _0x57ac7c=0x0;var _0x52a253=0x0;var _0x410ec3=0x0;for(var _0xcfc1c4=0x0;_0x52a253<_0x2d2556;_0xcfc1c4+=0x1){_0x57ac7c=_0xcfc1c4/_0x513b48;_0x5dedf5=(_0x4b0024*_0x57ac7c+_0x5218e4)/_0x5eab8a;_0x52a253=erlangb(_0x5dedf5,_0x5b8c07);_0x410ec3=_0x5dedf5/_0x5b8c07*(0x1-erlangb(_0x5dedf5,_0x5b8c07));}return _0x193e42({'erlangCalls':_0xcfc1c4,'erlangCallToSecond':_0x513b48/_0xcfc1c4,'erlangAbandonmentRate':_0x52a253,'erlangBusyFactor':_0x410ec3});});};Dialer['prototype'][_0x4f87('0x1dc')]=function(_0x57e813,_0x2aba96,_0x1c9580,_0x1aa088,_0x438e8d,_0x3e61e6){loggerPredictive[_0x4f87('0x7b')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x20d'),_0x57e813);loggerPredictive[_0x4f87('0x7b')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2aba96);loggerPredictive[_0x4f87('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',_0x1c9580);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x20e'),_0x1aa088);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x216'),_0x438e8d);loggerPredictive[_0x4f87('0x7b')](_0x4f87('0x82'));return new BPromise(function(_0x3d361f,_0x454413){if(_0x57e813<=0x0||isNaN(_0x57e813)){return _0x454413(msgResponse(_0x4f87('0x217'),_0x4f87('0x4a'),'m\x20=\x20'+_0x57e813));}if(_0x1c9580<=0x0||isNaN(_0x1c9580)){return _0x454413(msgResponse('[busyFactor]',_0x4f87('0x4a'),_0x4f87('0x212')+_0x1c9580));}if(_0x1aa088<=0x0||isNaN(_0x1aa088)){return _0x454413(msgResponse(_0x4f87('0x217'),_0x4f87('0x4a'),_0x4f87('0x213')+_0x1aa088));}if(_0x2aba96<=0x0||isNaN(_0x2aba96)){return _0x454413(msgResponse(_0x4f87('0x217'),_0x4f87('0x4a'),_0x4f87('0x214')+_0x2aba96));}if(_0x438e8d<=0x0||isNaN(_0x438e8d)){return _0x454413(msgResponse(_0x4f87('0x217'),_0x4f87('0x4a'),_0x4f87('0x218')+_0x438e8d));}_0x3e61e6=_0x3e61e6||0x0;var _0x5ae2a2=0x1/_0x1c9580;var _0x46add7=0x0;var _0x1fa470=0x0;var _0xbb3bcb=0x0;var _0x43b637=0x0;for(var _0x33e625=0x0;_0x43b637<_0x438e8d;_0x33e625+=0x1){_0x1fa470=_0x33e625/_0x2aba96;_0x46add7=(_0x1aa088*_0x1fa470+_0x3e61e6)/_0x5ae2a2;_0xbb3bcb=erlangb(_0x46add7,_0x57e813);_0x43b637=_0x46add7/_0x57e813*(0x1-erlangb(_0x46add7,_0x57e813));}return _0x3d361f({'erlangCalls':_0x33e625,'erlangCallToSecond':_0x2aba96/_0x33e625,'erlangAbandonmentRate':_0xbb3bcb,'erlangBusyFactor':_0x43b637});});};module['exports']=Dialer;
\ No newline at end of file
index cef95ed..b25ecf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20f5=['originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','scheduledat','type','outbound','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','number','starttime','responsetime','droptime','endtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x59311f,_0x6899fe){var _0x4bd3c0=function(_0x14c4eb){while(--_0x14c4eb){_0x59311f['push'](_0x59311f['shift']());}};_0x4bd3c0(++_0x6899fe);}(_0x20f5,0x19d));var _0x520f=function(_0x3e7819,_0x2df679){_0x3e7819=_0x3e7819-0x0;var _0x1ab6f4=_0x20f5[_0x3e7819];return _0x1ab6f4;};'use strict';var util=require(_0x520f('0x0'));var _=require('lodash');var moment=require(_0x520f('0x1'));function getSeconds(_0x3c0945,_0x3f21ed){var _0x4622be=moment(_0x3c0945)[_0x520f('0x2')](0x0);var _0x3187f9=moment(_0x3f21ed)[_0x520f('0x2')](0x0);return _0x4622be[_0x520f('0x3')](_0x3187f9,'seconds');}function QueueCallerAbandon(_0x4c3c0d,_0x107954){this[_0x520f('0x4')]=_0x4c3c0d[_0x520f('0x4')];this['type']=_0x4c3c0d['type'];this['campaigntype']=_0x4c3c0d[_0x520f('0x5')]===_0x520f('0x6')?'queue':_0x4c3c0d['type'];this['countbusyretry']=_0x4c3c0d['countbusyretry'];this[_0x520f('0x7')]=_0x4c3c0d['countcongestionretry'];this['countnoanswerretry']=_0x4c3c0d[_0x520f('0x8')];this[_0x520f('0x9')]=_0x4c3c0d[_0x520f('0xa')]+_0x4c3c0d[_0x520f('0x7')]+_0x4c3c0d['countnoanswerretry']+_0x4c3c0d[_0x520f('0xb')]+_0x4c3c0d['countdropretry']+_0x4c3c0d['countabandonedretry']+_0x4c3c0d['countmachineretry']+_0x4c3c0d['countagentrejectretry'];this[_0x520f('0xb')]=_0x4c3c0d[_0x520f('0xb')];this['countdropretry']=_0x4c3c0d[_0x520f('0xc')];this[_0x520f('0xd')]=_0x4c3c0d[_0x520f('0xd')];this[_0x520f('0xe')]=_0x4c3c0d[_0x520f('0xe')];this[_0x520f('0xf')]=_0x4c3c0d[_0x520f('0xf')];this['uniqueid']=_0x107954['uniqueid'];this['calleridname']=_0x4c3c0d[_0x520f('0x10')];this[_0x520f('0x11')]=_0x4c3c0d[_0x520f('0x12')];this['starttime']=_0x4c3c0d[_0x520f('0x13')];this[_0x520f('0x14')]=_0x4c3c0d[_0x520f('0x14')];this[_0x520f('0x15')]=_0x4c3c0d[_0x520f('0x15')];this[_0x520f('0x16')]=this['droptime'];this['ringtime']=getSeconds(_0x4c3c0d['responsetime'],_0x4c3c0d[_0x520f('0x13')]);this[_0x520f('0x17')]=getSeconds(this[_0x520f('0x15')],_0x4c3c0d[_0x520f('0x14')]);this[_0x520f('0x18')]=0x0;this[_0x520f('0x19')]=_0x107954['queue'];this[_0x520f('0x1a')]=_0x107954[_0x520f('0x1b')];this[_0x520f('0x1c')]=_0x107954[_0x520f('0x1c')];this[_0x520f('0x1d')]=_0x4c3c0d[_0x520f('0x1d')];this[_0x520f('0x1e')]=_0x4c3c0d['callbackuniqueid'];this[_0x520f('0x1f')]=_0x4c3c0d[_0x520f('0x1f')];this[_0x520f('0x20')]=_0x4c3c0d[_0x520f('0x20')];this['ContactId']=_0x4c3c0d[_0x520f('0x21')];this['ListId']=_0x4c3c0d[_0x520f('0x22')];this[_0x520f('0x23')]=_0x4c3c0d[_0x520f('0x23')];this[_0x520f('0x24')]=_0x4c3c0d[_0x520f('0x24')];this['CampaignId']=_0x4c3c0d[_0x520f('0x25')];this[_0x520f('0x26')]=_0x4c3c0d[_0x520f('0x26')]||'';this['originatecalleridname']=_0x4c3c0d[_0x520f('0x27')]||'';}module[_0x520f('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xfb00=['talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','starttime','responsetime','droptime','ringtime','holdtime'];(function(_0xd96d70,_0x56a57f){var _0x5b116e=function(_0x302b4d){while(--_0x302b4d){_0xd96d70['push'](_0xd96d70['shift']());}};_0x5b116e(++_0x56a57f);}(_0xfb00,0x8a));var _0x0fb0=function(_0x38182b,_0x46285c){_0x38182b=_0x38182b-0x0;var _0xff1e8a=_0xfb00[_0x38182b];return _0xff1e8a;};'use strict';var util=require('util');var _=require(_0x0fb0('0x0'));var moment=require(_0x0fb0('0x1'));function getSeconds(_0x3cd8a1,_0x282ddc){var _0x1e4577=moment(_0x3cd8a1)[_0x0fb0('0x2')](0x0);var _0x1d748d=moment(_0x282ddc)[_0x0fb0('0x2')](0x0);return _0x1e4577['diff'](_0x1d748d,_0x0fb0('0x3'));}function QueueCallerAbandon(_0x6d120f,_0xd96799){this[_0x0fb0('0x4')]=_0x6d120f[_0x0fb0('0x4')];this[_0x0fb0('0x5')]=_0x6d120f['type'];this[_0x0fb0('0x6')]=_0x6d120f[_0x0fb0('0x5')]===_0x0fb0('0x7')?_0x0fb0('0x8'):_0x6d120f['type'];this[_0x0fb0('0x9')]=_0x6d120f[_0x0fb0('0x9')];this[_0x0fb0('0xa')]=_0x6d120f['countcongestionretry'];this[_0x0fb0('0xb')]=_0x6d120f[_0x0fb0('0xb')];this[_0x0fb0('0xc')]=_0x6d120f[_0x0fb0('0x9')]+_0x6d120f[_0x0fb0('0xa')]+_0x6d120f[_0x0fb0('0xb')]+_0x6d120f[_0x0fb0('0xd')]+_0x6d120f[_0x0fb0('0xe')]+_0x6d120f[_0x0fb0('0xf')]+_0x6d120f['countmachineretry']+_0x6d120f['countagentrejectretry'];this[_0x0fb0('0xd')]=_0x6d120f[_0x0fb0('0xd')];this['countdropretry']=_0x6d120f[_0x0fb0('0xe')];this[_0x0fb0('0xf')]=_0x6d120f[_0x0fb0('0xf')];this[_0x0fb0('0x10')]=_0x6d120f['countmachineretry'];this[_0x0fb0('0x11')]=_0x6d120f['countagentrejectretry'];this[_0x0fb0('0x12')]=_0xd96799[_0x0fb0('0x12')];this[_0x0fb0('0x13')]=_0x6d120f[_0x0fb0('0x14')];this['calleridnum']=_0x6d120f['number'];this[_0x0fb0('0x15')]=_0x6d120f['starttime'];this[_0x0fb0('0x16')]=_0x6d120f[_0x0fb0('0x16')];this[_0x0fb0('0x17')]=_0x6d120f[_0x0fb0('0x17')];this['endtime']=this[_0x0fb0('0x17')];this[_0x0fb0('0x18')]=getSeconds(_0x6d120f[_0x0fb0('0x16')],_0x6d120f[_0x0fb0('0x15')]);this[_0x0fb0('0x19')]=getSeconds(this[_0x0fb0('0x17')],_0x6d120f[_0x0fb0('0x16')]);this[_0x0fb0('0x1a')]=0x0;this[_0x0fb0('0x8')]=_0xd96799[_0x0fb0('0x8')];this[_0x0fb0('0x1b')]=_0xd96799[_0x0fb0('0x1c')];this['reason']=_0xd96799[_0x0fb0('0x1d')];this[_0x0fb0('0x1e')]=_0x6d120f[_0x0fb0('0x1e')];this['callbackuniqueid']=_0x6d120f[_0x0fb0('0x1f')];this[_0x0fb0('0x20')]=_0x6d120f[_0x0fb0('0x20')];this['recallme']=_0x6d120f[_0x0fb0('0x21')];this[_0x0fb0('0x22')]=_0x6d120f[_0x0fb0('0x22')];this[_0x0fb0('0x23')]=_0x6d120f[_0x0fb0('0x23')];this['UserId']=_0x6d120f['UserId'];this[_0x0fb0('0x24')]=_0x6d120f[_0x0fb0('0x24')];this[_0x0fb0('0x25')]=_0x6d120f[_0x0fb0('0x25')];this['originatecalleridnum']=_0x6d120f[_0x0fb0('0x26')]||'';this[_0x0fb0('0x27')]=_0x6d120f[_0x0fb0('0x27')]||'';}module[_0x0fb0('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index 9ee6bdc..1a5de53 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(_0x5ced8e,_0x213f55){var _0x568a4d=function(_0x249d93){while(--_0x249d93){_0x5ced8e['push'](_0x5ced8e['shift']());}};_0x568a4d(++_0x213f55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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(_0x11b283,_0x3f2b5f){var _0x596a4c=function(_0x352434){while(--_0x352434){_0x11b283['push'](_0x11b283['shift']());}};_0x596a4c(++_0x3f2b5f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 376a701..57a1233 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc884=['hasOwnProperty','exten','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','actions','info','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','response','reason','AttachmentId','update','logger','catch','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','FaxAccountId','isValid','Trunk\x20Reachable','format','execute','dir','XMF-PATH','Action','variablesAction','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Is\x20Valid','exports','lodash','uuid','moment','path','tiff2pdf','./util/gs','fax','../ami','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider'];(function(_0x252885,_0x433e3a){var _0x11d68e=function(_0x308a4f){while(--_0x308a4f){_0x252885['push'](_0x252885['shift']());}};_0x11d68e(++_0x433e3a);}(_0xc884,0xc6));var _0x4c88=function(_0x8a4ee4,_0x3798ac){_0x8a4ee4=_0x8a4ee4-0x0;var _0x234fdf=_0xc884[_0x8a4ee4];return _0x234fdf;};'use strict';var util=require('util');var _=require(_0x4c88('0x0'));var BPromise=require('bluebird');var uuid=require(_0x4c88('0x1'));var moment=require(_0x4c88('0x2'));var path=require(_0x4c88('0x3'));var tiff2pdf=require(_0x4c88('0x4'));var gs=require(_0x4c88('0x5'));var logger=require('../../../config/logger')(_0x4c88('0x6'));var ami=require(_0x4c88('0x7'));var rpcDb=require('./rpcDb');var Channel=require('./channel');var ut=require('./util/util');var Action=require('./action');var faxAccount=require(_0x4c88('0x8'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x4c88('0x9'));function Fax(_0x4efa9e){this[_0x4c88('0xa')]={};this[_0x4c88('0xb')]=_0x4efa9e['faxAccounts'];this[_0x4c88('0xc')]=_0x4efa9e[_0x4c88('0xc')];this['actions']={};ami['on'](_0x4c88('0xd'),this[_0x4c88('0xe')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x10'),this[_0x4c88('0x11')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x12'),this[_0x4c88('0x13')]['bind'](this));ami['on'](_0x4c88('0x14'),this[_0x4c88('0x15')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x16'),this[_0x4c88('0x17')]['bind'](this));ami['on']('receivefax',this[_0x4c88('0x18')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x19'),this[_0x4c88('0x1a')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x1b'),this[_0x4c88('0x1c')]['bind'](this));}Fax[_0x4c88('0x1d')][_0x4c88('0xe')]=function(_0x15e378){if(_0x15e378[_0x4c88('0x1e')]===_0x4c88('0x1f')){for(var _0x3c33a5 in this[_0x4c88('0xb')]){if(this[_0x4c88('0xb')][_0x4c88('0x20')](_0x3c33a5)){if(_0x15e378[_0x4c88('0x21')]===this['faxAccounts'][_0x3c33a5][_0x4c88('0x22')]){this[_0x4c88('0xa')][_0x15e378['uniqueid']]={};this['channels'][_0x15e378[_0x4c88('0x23')]][_0x4c88('0x24')]=_0x15e378[_0x4c88('0x24')];this['channels'][_0x15e378[_0x4c88('0x23')]]['id']=this['faxAccounts'][_0x3c33a5]['id'];this[_0x4c88('0xa')][_0x15e378[_0x4c88('0x23')]]['name']=this[_0x4c88('0xb')][_0x3c33a5][_0x4c88('0x25')];logger['info'](_0x15e378[_0x4c88('0x23')],_0x4c88('0x26'));}}}}if(this[_0x4c88('0x27')][_0x15e378[_0x4c88('0x23')]]){this['channels'][_0x15e378[_0x4c88('0x23')]]={};this[_0x4c88('0xa')][_0x15e378[_0x4c88('0x23')]][_0x4c88('0x24')]=_0x15e378[_0x4c88('0x24')];logger[_0x4c88('0x28')](_0x15e378['uniqueid'],'\x20syncNewchannel\x20');}};Fax[_0x4c88('0x1d')]['syncVarSet']=function(_0xea4dcd){if(this[_0x4c88('0xa')][_0xea4dcd['uniqueid']]){for(var _0x4d75fb in _0xea4dcd['variable']){if(_0xea4dcd[_0x4c88('0x29')][_0x4c88('0x20')](_0x4d75fb)){this[_0x4c88('0xa')][_0xea4dcd[_0x4c88('0x23')]][_0x4d75fb]=_0xea4dcd[_0x4c88('0x2a')];}}}};Fax[_0x4c88('0x1d')][_0x4c88('0x13')]=function(_0xcf88f0){if(this[_0x4c88('0xa')][_0xcf88f0['uniqueid']]){this['channels'][_0xcf88f0[_0x4c88('0x23')]]['channelstate']=_0xcf88f0[_0x4c88('0x2b')];this['channels'][_0xcf88f0[_0x4c88('0x23')]]['channelstatedesc']=_0xcf88f0[_0x4c88('0x2c')];}};Fax[_0x4c88('0x1d')][_0x4c88('0x15')]=function(_0x1f81ac){if(this[_0x4c88('0xa')][_0x1f81ac[_0x4c88('0x23')]]){for(var _0xaf8c4e in _0x1f81ac[_0x4c88('0x29')]){if(_0x1f81ac[_0x4c88('0x29')][_0x4c88('0x20')](_0xaf8c4e)){this['channels'][_0x1f81ac[_0x4c88('0x23')]][_0xaf8c4e]=_0x1f81ac[_0x4c88('0x2a')];}}}};Fax[_0x4c88('0x1d')][_0x4c88('0x17')]=function(_0x4c5e7b){if(this[_0x4c88('0xa')][_0x4c5e7b[_0x4c88('0x23')]]){this[_0x4c88('0xa')][_0x4c5e7b['uniqueid']][_0x4c88('0x2d')]=_0x4c5e7b['operation'];this[_0x4c88('0xa')][_0x4c5e7b[_0x4c88('0x23')]][_0x4c88('0x2e')]=_0x4c5e7b[_0x4c88('0x2e')];this[_0x4c88('0xa')][_0x4c5e7b['uniqueid']][_0x4c88('0x22')]=_0x4c5e7b[_0x4c88('0x22')];this['channels'][_0x4c5e7b[_0x4c88('0x23')]][_0x4c88('0x2f')]=_0x4c5e7b[_0x4c88('0x2f')];logger[_0x4c88('0x28')](_0x4c5e7b[_0x4c88('0x23')],_0x4c88('0x30'));}};Fax[_0x4c88('0x1d')][_0x4c88('0x18')]=function(_0x4af8d1){var _0x440bac=this;if(this[_0x4c88('0xa')][_0x4af8d1[_0x4c88('0x23')]]){var _0x47e614=this[_0x4c88('0xa')][_0x4af8d1[_0x4c88('0x23')]]['id'];this[_0x4c88('0xa')][_0x4af8d1[_0x4c88('0x23')]]['remotestationid']=_0x4af8d1[_0x4c88('0x31')];this[_0x4c88('0xa')][_0x4af8d1['uniqueid']][_0x4c88('0x32')]=_0x4af8d1[_0x4c88('0x32')];this[_0x4c88('0xa')][_0x4af8d1['uniqueid']]['localstationid']=_0x4af8d1[_0x4c88('0x22')];this['channels'][_0x4af8d1[_0x4c88('0x23')]]['resolution']=_0x4af8d1[_0x4c88('0x33')];this[_0x4c88('0xa')][_0x4af8d1['uniqueid']]['transferrate']=_0x4af8d1[_0x4c88('0x34')];this['channels'][_0x4af8d1['uniqueid']][_0x4c88('0x2f')]=_0x4af8d1[_0x4c88('0x2f')];this['channels'][_0x4af8d1['uniqueid']][_0x4c88('0x35')]=_0x4af8d1['calleridnum'];if(this['channels'][_0x4af8d1[_0x4c88('0x23')]][_0x4c88('0x32')]>0x0){tiff2pdf(_0x4af8d1[_0x4c88('0x2f')],_0x4c88('0x36'),function(_0x2c1875){logger[_0x4c88('0x28')](_0x4af8d1['uniqueid'],_0x4c88('0x37'),_0x2c1875[_0x4c88('0x38')]);attachment[_0x4c88('0x39')]({'name':path[_0x4c88('0x3a')](_0x4af8d1[_0x4c88('0x2f')])[_0x4c88('0x25')],'basename':path[_0x4c88('0x3a')](_0x4af8d1[_0x4c88('0x2f')])[_0x4c88('0x25')]+_0x4c88('0x3b'),'type':_0x4c88('0x3c')})[_0x4c88('0x3d')](function(_0x9ad16f){faxAccount['notify'](_0x47e614,{'from':_0x4af8d1[_0x4c88('0x35')],'mapKey':_0x4c88('0x6'),'body':path[_0x4c88('0x3a')](_0x4af8d1[_0x4c88('0x2f')])['name']+'.pdf','AttachmentId':_0x9ad16f['id']})['catch'](function(_0x370b42){logger[_0x4c88('0x3e')](_0x4af8d1[_0x4c88('0x23')],_0x4c88('0x3f'),JSON['stringify'](_0x370b42));});})['catch'](function(_0x54815f){logger['error'](_0x4af8d1[_0x4c88('0x23')],_0x4c88('0x40'),JSON[_0x4c88('0x41')](_0x54815f));});});}logger['info'](_0x4af8d1[_0x4c88('0x23')],_0x4c88('0x40'));}};Fax[_0x4c88('0x1d')][_0x4c88('0x1c')]=function(_0x4e40c1){if(this[_0x4c88('0x27')][_0x4e40c1[_0x4c88('0x23')]]){_[_0x4c88('0x42')](this['channels'][_0x4e40c1['uniqueid']],_[_0x4c88('0x43')](_0x4e40c1,[_0x4c88('0x44'),_0x4c88('0x45')]));}};function updateStatus(_0x59a007){if(_0x59a007[_0x4c88('0x46')]){faxMessage[_0x4c88('0x47')](_0x59a007[_0x4c88('0x46')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x4c88('0x3d')](function(_0x32468f){ut[_0x4c88('0x48')]('[Fax][Message][Error][Updated]',_0x32468f);})[_0x4c88('0x49')](function(_0x3bf093){ut[_0x4c88('0x48')](_0x4c88('0x4a'),_0x3bf093);});}else{ut[_0x4c88('0x48')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0x4c88('0x1d')][_0x4c88('0x4b')]=function(_0x126046,_0x52b05d,_0x293826){var _0x2ccb18=this;var _0x548570={};if(_0x52b05d){_0x548570={'read':_0x52b05d};}else{_0x548570={'failMessage':_0x293826};}if(this[_0x4c88('0x27')][_0x126046]['AttachmentId']){faxMessage['update'](this[_0x4c88('0x27')][_0x126046][_0x4c88('0x46')],_0x548570)[_0x4c88('0x3d')](function(_0x1e42b4){ut[_0x4c88('0x48')]('[Fax][Message][Updated]',_0x1e42b4);})[_0x4c88('0x49')](function(_0x453568){ut[_0x4c88('0x48')](_0x4c88('0x4c'),_0x453568);})[_0x4c88('0x4d')](function(){delete _0x2ccb18['channels'][_0x126046];delete _0x2ccb18[_0x4c88('0x27')][_0x126046];});}else{ut[_0x4c88('0x48')](_0x4c88('0x4e'));delete this[_0x4c88('0xa')][_0x126046];delete this['actions'][_0x126046];}};Fax[_0x4c88('0x1d')]['syncHangup']=function(_0x2924fa){var _0x471af7=this;if(this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]){if(this[_0x4c88('0x27')][_0x2924fa['uniqueid']]){this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]['id']=this[_0x4c88('0x27')][_0x2924fa[_0x4c88('0x23')]]['id'];this['channels'][_0x2924fa['uniqueid']][_0x4c88('0x25')]=this[_0x4c88('0x27')][_0x2924fa['uniqueid']]['name'];}logger[_0x4c88('0x28')](_0x2924fa['uniqueid'],this[_0x4c88('0x27')][_0x2924fa['uniqueid']]?_0x4c88('0x4f'):_0x4c88('0x50'),JSON[_0x4c88('0x41')](this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]));if(this[_0x4c88('0x27')][_0x2924fa[_0x4c88('0x23')]]){if(this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]][_0x4c88('0x51')]>0x0&&this['channels'][_0x2924fa['uniqueid']][_0x4c88('0x16')]===_0x4c88('0x52')){this[_0x4c88('0x4b')](_0x2924fa[_0x4c88('0x23')],!![]);}else{this['updateStatus'](_0x2924fa['uniqueid'],![],this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]['faxstatusstring']?_0x4c88('0x53')+this['channels'][_0x2924fa[_0x4c88('0x23')]][_0x4c88('0x54')]:_0x4c88('0x55'));}}}};Fax[_0x4c88('0x1d')][_0x4c88('0x56')]=function(_0xd1c35d){var _0x6325fa=this;return new BPromise(function(_0x23a6e3,_0x1bb074){_0x6325fa[_0x4c88('0x57')](_0xd1c35d,_0x6325fa[_0x4c88('0xb')][_0xd1c35d['FaxAccountId']])[_0x4c88('0x3d')](function(_0x2126ce){ut[_0x4c88('0x48')](_0x4c88('0x58'),_0x2126ce);_0x23a6e3(ut[_0x4c88('0x38')]('Fax\x20received'));})[_0x4c88('0x49')](function(_0xbab03){ut[_0x4c88('0x48')](_0x4c88('0x59'),_0xbab03);updateStatus(_0xd1c35d);_0x1bb074(ut[_0x4c88('0x38')]('Fax\x20failed'));});});};Fax[_0x4c88('0x1d')][_0x4c88('0x5a')]=function(_0x1ed8b2){var _0x5c4960=this;return new BPromise(function(_0x451f13,_0x555e9c){var _0x4b7fc8=_0x5c4960[_0x4c88('0x5b')](_0x5c4960[_0x4c88('0xb')][_0x1ed8b2[_0x4c88('0x5c')]]['Trunk'],_0x1ed8b2);if(_0x4b7fc8[_0x4c88('0x5d')]){_0x451f13(ut['message'](_0x4c88('0x5e')));}else{_0x555e9c(ut[_0x4c88('0x38')](_0x4b7fc8[_0x4c88('0x38')]));}});};function originate(_0x418a30,_0x5dc728,_0x22ddb7){return new BPromise(function(_0x2d811f,_0x48b9b2){if(_0x22ddb7){var _0x4f29aa=util[_0x4c88('0x5f')]('gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit',path[_0x4c88('0x3a')](_0x418a30[_0x4c88('0x3')])[_0x4c88('0x25')],_0x418a30[_0x4c88('0x3')]);gs[_0x4c88('0x60')](_0x4f29aa)[_0x4c88('0x3d')](function(){_0x418a30[_0x4c88('0x3')]=util[_0x4c88('0x5f')]('%s/%s.tif',path[_0x4c88('0x3a')](_0x418a30['path'])[_0x4c88('0x61')],path[_0x4c88('0x3a')](_0x418a30['path'])['name']);_0x5dc728[_0x4c88('0x62')]=_0x418a30[_0x4c88('0x3')];ut[_0x4c88('0x48')]('Convert\x20pdf\x20to\x20tif','');ami[_0x4c88('0x63')](ut[_0x4c88('0x64')](_0x418a30,_0x5dc728))[_0x4c88('0x3d')](function(_0x844034){_0x2d811f(_0x844034);})['catch'](function(_0x542d87){_0x48b9b2(_0x542d87);});})['catch'](function(_0x3f1bef){_0x48b9b2(_0x3f1bef);});}else{ami['Action'](ut['variablesAction'](_0x418a30,_0x5dc728))['then'](function(_0x1043bd){_0x2d811f(_0x1043bd);})['catch'](function(_0x25c1d6){_0x48b9b2(_0x25c1d6);});}});}Fax[_0x4c88('0x1d')][_0x4c88('0x57')]=function(_0xe07a25,_0x2248ef){var _0x586b70=this;return new BPromise(function(_0x4054c6,_0x47e3a0){var _0x3a5dea=uuid['v4']();var _0x2b432e=ut['addVariables'](_0xe07a25,_0x2248ef);_0x586b70[_0x4c88('0x27')][_0x3a5dea]=new Action(_0x3a5dea,_0x2248ef,_0xe07a25);var _0x3c5f1f=_0x586b70['actions'][_0x3a5dea];if(path[_0x4c88('0x3a')](_0xe07a25['path'])['ext']==='.pdf'){originate(_0x3c5f1f,_0x2b432e,!![])[_0x4c88('0x3d')](function(_0x1ebd4a){_0x4054c6(_0x1ebd4a);})[_0x4c88('0x49')](function(_0x520400){_0x47e3a0(_0x520400);});}else{originate(_0x3c5f1f,_0x2b432e,![])[_0x4c88('0x3d')](function(_0x107876){_0x4054c6(_0x107876);})[_0x4c88('0x49')](function(_0x2362fc){_0x47e3a0(_0x2362fc);});}});};Fax[_0x4c88('0x1d')][_0x4c88('0x65')]=function(_0x6a9c2d){return!_[_0x4c88('0x66')](_0x6a9c2d)&&!_[_0x4c88('0x66')](_0x6a9c2d[_0x4c88('0x25')])&&!_[_0x4c88('0x66')](_0x6a9c2d['active'])&&_0x6a9c2d[_0x4c88('0x67')]&&!_['isNil'](this[_0x4c88('0xc')][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d[_0x4c88('0x25')])])&&!_[_0x4c88('0x66')](this[_0x4c88('0xc')][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d[_0x4c88('0x25')])][_0x4c88('0x2e')])&&(this[_0x4c88('0xc')][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d['name'])][_0x4c88('0x2e')]===_0x4c88('0x69')||this['trunks'][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d['name'])]['status']===_0x4c88('0x6a'));};Fax[_0x4c88('0x1d')][_0x4c88('0x5b')]=function(_0x2d75d2,_0x3bac6f){if(!this[_0x4c88('0x65')](_0x2d75d2)){ut['logger'](_0x4c88('0x6b'),_[_0x4c88('0x66')](_0x2d75d2)?'':_0x2d75d2[_0x4c88('0x25')]+_0x4c88('0x6c'));return{'isValid':![],'message':_0x4c88('0x6d')};}if(_['isNil'](_0x3bac6f[_0x4c88('0x6')])){ut[_0x4c88('0x48')](_0x4c88('0x6e'),JSON['stringify'](_0x3bac6f));return{'isValid':![],'message':_0x4c88('0x6f')};}if(_['isNil'](_0x3bac6f['path'])){ut[_0x4c88('0x48')](_0x4c88('0x70'),JSON[_0x4c88('0x41')](_0x3bac6f));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x4c88('0x71')};};module[_0x4c88('0x72')]=Fax;
\ No newline at end of file
+var _0xe4d3=['faxAccounts','hasOwnProperty','exten','localstationid','channel','uniqueid','name','info','\x20syncNewchannel\x20','prototype','variable','value','syncNewState','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','then','notify','.pdf','\x20notify\x20','stringify','catch','error','\x20receiveFax\x20','pick','response','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]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','checkTrunk','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','path','tiff2pdf','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','context','from-voip-provider'];(function(_0x16ed87,_0x1be1a2){var _0xc1a1d8=function(_0x3c0fcf){while(--_0x3c0fcf){_0x16ed87['push'](_0x16ed87['shift']());}};_0xc1a1d8(++_0x1be1a2);}(_0xe4d3,0x1d1));var _0x3e4d=function(_0x4e516d,_0xa3274b){_0x4e516d=_0x4e516d-0x0;var _0xb79861=_0xe4d3[_0x4e516d];return _0xb79861;};'use strict';var util=require(_0x3e4d('0x0'));var _=require(_0x3e4d('0x1'));var BPromise=require(_0x3e4d('0x2'));var uuid=require(_0x3e4d('0x3'));var moment=require('moment');var path=require(_0x3e4d('0x4'));var tiff2pdf=require(_0x3e4d('0x5'));var gs=require('./util/gs');var logger=require('../../../config/logger')(_0x3e4d('0x6'));var ami=require(_0x3e4d('0x7'));var rpcDb=require(_0x3e4d('0x8'));var Channel=require(_0x3e4d('0x9'));var ut=require(_0x3e4d('0xa'));var Action=require(_0x3e4d('0xb'));var faxAccount=require(_0x3e4d('0xc'));var attachment=require(_0x3e4d('0xd'));var faxMessage=require(_0x3e4d('0xe'));function Fax(_0x505108){this[_0x3e4d('0xf')]={};this['faxAccounts']=_0x505108['faxAccounts'];this[_0x3e4d('0x10')]=_0x505108['trunks'];this[_0x3e4d('0x11')]={};ami['on'](_0x3e4d('0x12'),this[_0x3e4d('0x13')][_0x3e4d('0x14')](this));ami['on'](_0x3e4d('0x15'),this[_0x3e4d('0x16')]['bind'](this));ami['on']('newstate',this['syncNewState'][_0x3e4d('0x14')](this));ami['on'](_0x3e4d('0x17'),this[_0x3e4d('0x18')][_0x3e4d('0x14')](this));ami['on'](_0x3e4d('0x19'),this[_0x3e4d('0x1a')]['bind'](this));ami['on'](_0x3e4d('0x1b'),this[_0x3e4d('0x1c')][_0x3e4d('0x14')](this));ami['on'](_0x3e4d('0x1d'),this[_0x3e4d('0x1e')][_0x3e4d('0x14')](this));ami['on'](_0x3e4d('0x1f'),this[_0x3e4d('0x20')][_0x3e4d('0x14')](this));}Fax['prototype'][_0x3e4d('0x13')]=function(_0x172d33){if(_0x172d33[_0x3e4d('0x21')]===_0x3e4d('0x22')){for(var _0x32b8dc in this['faxAccounts']){if(this[_0x3e4d('0x23')][_0x3e4d('0x24')](_0x32b8dc)){if(_0x172d33[_0x3e4d('0x25')]===this[_0x3e4d('0x23')][_0x32b8dc][_0x3e4d('0x26')]){this[_0x3e4d('0xf')][_0x172d33['uniqueid']]={};this[_0x3e4d('0xf')][_0x172d33['uniqueid']][_0x3e4d('0x27')]=_0x172d33['channel'];this[_0x3e4d('0xf')][_0x172d33['uniqueid']]['id']=this[_0x3e4d('0x23')][_0x32b8dc]['id'];this[_0x3e4d('0xf')][_0x172d33[_0x3e4d('0x28')]][_0x3e4d('0x29')]=this[_0x3e4d('0x23')][_0x32b8dc]['name'];logger[_0x3e4d('0x2a')](_0x172d33['uniqueid'],_0x3e4d('0x2b'));}}}}if(this[_0x3e4d('0x11')][_0x172d33[_0x3e4d('0x28')]]){this[_0x3e4d('0xf')][_0x172d33[_0x3e4d('0x28')]]={};this[_0x3e4d('0xf')][_0x172d33['uniqueid']]['channel']=_0x172d33[_0x3e4d('0x27')];logger['info'](_0x172d33[_0x3e4d('0x28')],_0x3e4d('0x2b'));}};Fax[_0x3e4d('0x2c')][_0x3e4d('0x16')]=function(_0x3b0a55){if(this[_0x3e4d('0xf')][_0x3b0a55[_0x3e4d('0x28')]]){for(var _0x3eee6a in _0x3b0a55[_0x3e4d('0x2d')]){if(_0x3b0a55[_0x3e4d('0x2d')][_0x3e4d('0x24')](_0x3eee6a)){this[_0x3e4d('0xf')][_0x3b0a55['uniqueid']][_0x3eee6a]=_0x3b0a55[_0x3e4d('0x2e')];}}}};Fax['prototype'][_0x3e4d('0x2f')]=function(_0x27f274){if(this[_0x3e4d('0xf')][_0x27f274[_0x3e4d('0x28')]]){this[_0x3e4d('0xf')][_0x27f274[_0x3e4d('0x28')]][_0x3e4d('0x30')]=_0x27f274[_0x3e4d('0x30')];this['channels'][_0x27f274[_0x3e4d('0x28')]]['channelstatedesc']=_0x27f274[_0x3e4d('0x31')];}};Fax[_0x3e4d('0x2c')][_0x3e4d('0x18')]=function(_0x15b5f3){if(this[_0x3e4d('0xf')][_0x15b5f3[_0x3e4d('0x28')]]){for(var _0x1ae497 in _0x15b5f3[_0x3e4d('0x2d')]){if(_0x15b5f3['variable'][_0x3e4d('0x24')](_0x1ae497)){this[_0x3e4d('0xf')][_0x15b5f3[_0x3e4d('0x28')]][_0x1ae497]=_0x15b5f3[_0x3e4d('0x2e')];}}}};Fax[_0x3e4d('0x2c')][_0x3e4d('0x1a')]=function(_0x28ffef){if(this[_0x3e4d('0xf')][_0x28ffef['uniqueid']]){this[_0x3e4d('0xf')][_0x28ffef[_0x3e4d('0x28')]][_0x3e4d('0x32')]=_0x28ffef['operation'];this['channels'][_0x28ffef['uniqueid']][_0x3e4d('0x33')]=_0x28ffef[_0x3e4d('0x33')];this[_0x3e4d('0xf')][_0x28ffef['uniqueid']][_0x3e4d('0x26')]=_0x28ffef['localstationid'];this[_0x3e4d('0xf')][_0x28ffef[_0x3e4d('0x28')]][_0x3e4d('0x34')]=_0x28ffef[_0x3e4d('0x34')];logger[_0x3e4d('0x2a')](_0x28ffef['uniqueid'],_0x3e4d('0x35'));}};Fax[_0x3e4d('0x2c')][_0x3e4d('0x1c')]=function(_0x20ec32){var _0xa21b8=this;if(this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]]){var _0x3e0ec9=this['channels'][_0x20ec32['uniqueid']]['id'];this[_0x3e4d('0xf')][_0x20ec32['uniqueid']][_0x3e4d('0x36')]=_0x20ec32['remotestationid'];this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]][_0x3e4d('0x37')]=_0x20ec32[_0x3e4d('0x37')];this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]][_0x3e4d('0x26')]=_0x20ec32['localstationid'];this[_0x3e4d('0xf')][_0x20ec32['uniqueid']]['resolution']=_0x20ec32[_0x3e4d('0x38')];this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]][_0x3e4d('0x39')]=_0x20ec32['transferrate'];this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]][_0x3e4d('0x34')]=_0x20ec32['filename'];this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]][_0x3e4d('0x3a')]=_0x20ec32['calleridnum'];if(this[_0x3e4d('0xf')][_0x20ec32[_0x3e4d('0x28')]][_0x3e4d('0x37')]>0x0){tiff2pdf(_0x20ec32[_0x3e4d('0x34')],_0x3e4d('0x3b'),function(_0x5e144a){logger[_0x3e4d('0x2a')](_0x20ec32['uniqueid'],_0x3e4d('0x3c'),_0x5e144a[_0x3e4d('0x3d')]);attachment[_0x3e4d('0x3e')]({'name':path[_0x3e4d('0x3f')](_0x20ec32[_0x3e4d('0x34')])['name'],'basename':path[_0x3e4d('0x3f')](_0x20ec32['filename'])[_0x3e4d('0x29')]+'.pdf','type':_0x3e4d('0x40')})[_0x3e4d('0x41')](function(_0x33b202){faxAccount[_0x3e4d('0x42')](_0x3e0ec9,{'from':_0x20ec32[_0x3e4d('0x3a')],'mapKey':'fax','body':path['parse'](_0x20ec32[_0x3e4d('0x34')])['name']+_0x3e4d('0x43'),'AttachmentId':_0x33b202['id']})['catch'](function(_0x41375f){logger['error'](_0x20ec32[_0x3e4d('0x28')],_0x3e4d('0x44'),JSON[_0x3e4d('0x45')](_0x41375f));});})[_0x3e4d('0x46')](function(_0x202bd5){logger[_0x3e4d('0x47')](_0x20ec32[_0x3e4d('0x28')],_0x3e4d('0x48'),JSON[_0x3e4d('0x45')](_0x202bd5));});});}logger[_0x3e4d('0x2a')](_0x20ec32[_0x3e4d('0x28')],_0x3e4d('0x48'));}};Fax[_0x3e4d('0x2c')]['syncOriginateResponse']=function(_0x1ad8b4){if(this[_0x3e4d('0x11')][_0x1ad8b4['uniqueid']]){_['merge'](this[_0x3e4d('0xf')][_0x1ad8b4[_0x3e4d('0x28')]],_[_0x3e4d('0x49')](_0x1ad8b4,[_0x3e4d('0x4a'),_0x3e4d('0x4b')]));}};function updateStatus(_0x2b60c0){if(_0x2b60c0[_0x3e4d('0x4c')]){faxMessage[_0x3e4d('0x4d')](_0x2b60c0[_0x3e4d('0x4c')],{'failMessage':_0x3e4d('0x4e')})[_0x3e4d('0x41')](function(_0x1a6599){ut[_0x3e4d('0x4f')](_0x3e4d('0x50'),_0x1a6599);})['catch'](function(_0x563db9){ut[_0x3e4d('0x4f')](_0x3e4d('0x51'),_0x563db9);});}else{ut[_0x3e4d('0x4f')](_0x3e4d('0x52'));}}Fax['prototype'][_0x3e4d('0x53')]=function(_0x5ee215,_0x268fcb,_0x31bed1){var _0x59f286=this;var _0x4f7658={};if(_0x268fcb){_0x4f7658={'read':_0x268fcb};}else{_0x4f7658={'failMessage':_0x31bed1};}if(this[_0x3e4d('0x11')][_0x5ee215][_0x3e4d('0x4c')]){faxMessage[_0x3e4d('0x4d')](this[_0x3e4d('0x11')][_0x5ee215][_0x3e4d('0x4c')],_0x4f7658)[_0x3e4d('0x41')](function(_0x31d9b1){ut['logger'](_0x3e4d('0x54'),_0x31d9b1);})['catch'](function(_0x460021){ut[_0x3e4d('0x4f')](_0x3e4d('0x55'),_0x460021);})[_0x3e4d('0x56')](function(){delete _0x59f286[_0x3e4d('0xf')][_0x5ee215];delete _0x59f286[_0x3e4d('0x11')][_0x5ee215];});}else{ut['logger']('[Fax][Message][NoUpdate2]');delete this[_0x3e4d('0xf')][_0x5ee215];delete this[_0x3e4d('0x11')][_0x5ee215];}};Fax[_0x3e4d('0x2c')][_0x3e4d('0x1e')]=function(_0x3a65c9){var _0x2b35fa=this;if(this[_0x3e4d('0xf')][_0x3a65c9[_0x3e4d('0x28')]]){if(this[_0x3e4d('0x11')][_0x3a65c9[_0x3e4d('0x28')]]){this[_0x3e4d('0xf')][_0x3a65c9[_0x3e4d('0x28')]]['id']=this[_0x3e4d('0x11')][_0x3a65c9[_0x3e4d('0x28')]]['id'];this[_0x3e4d('0xf')][_0x3a65c9[_0x3e4d('0x28')]][_0x3e4d('0x29')]=this[_0x3e4d('0x11')][_0x3a65c9[_0x3e4d('0x28')]][_0x3e4d('0x29')];}logger[_0x3e4d('0x2a')](_0x3a65c9[_0x3e4d('0x28')],this[_0x3e4d('0x11')][_0x3a65c9[_0x3e4d('0x28')]]?_0x3e4d('0x57'):_0x3e4d('0x58'),JSON[_0x3e4d('0x45')](this[_0x3e4d('0xf')][_0x3a65c9[_0x3e4d('0x28')]]));if(this[_0x3e4d('0x11')][_0x3a65c9[_0x3e4d('0x28')]]){if(this[_0x3e4d('0xf')][_0x3a65c9['uniqueid']][_0x3e4d('0x59')]>0x0&&this[_0x3e4d('0xf')][_0x3a65c9[_0x3e4d('0x28')]]['faxstatus']===_0x3e4d('0x5a')){this[_0x3e4d('0x53')](_0x3a65c9[_0x3e4d('0x28')],!![]);}else{this[_0x3e4d('0x53')](_0x3a65c9[_0x3e4d('0x28')],![],this[_0x3e4d('0xf')][_0x3a65c9[_0x3e4d('0x28')]][_0x3e4d('0x5b')]?_0x3e4d('0x5c')+this['channels'][_0x3a65c9[_0x3e4d('0x28')]][_0x3e4d('0x5b')]:_0x3e4d('0x5d'));}}}};Fax[_0x3e4d('0x2c')][_0x3e4d('0x5e')]=function(_0x2c60c6){var _0xfeb88c=this;return new BPromise(function(_0x472bec,_0x305cf2){_0xfeb88c['execOriginate'](_0x2c60c6,_0xfeb88c[_0x3e4d('0x23')][_0x2c60c6[_0x3e4d('0x5f')]])[_0x3e4d('0x41')](function(_0x2a7090){ut[_0x3e4d('0x4f')](_0x3e4d('0x60'),_0x2a7090);_0x472bec(ut[_0x3e4d('0x3d')](_0x3e4d('0x61')));})[_0x3e4d('0x46')](function(_0x48ed9e){ut[_0x3e4d('0x4f')]('[Fax][execOriginate][failure]',_0x48ed9e);updateStatus(_0x2c60c6);_0x305cf2(ut[_0x3e4d('0x3d')]('Fax\x20failed'));});});};Fax[_0x3e4d('0x2c')]['checkAfterSend']=function(_0x2a39b6){var _0x4f2506=this;return new BPromise(function(_0x448e8c,_0x10806c){var _0x3e10e7=_0x4f2506['checkTrunk'](_0x4f2506[_0x3e4d('0x23')][_0x2a39b6[_0x3e4d('0x5f')]][_0x3e4d('0x62')],_0x2a39b6);if(_0x3e10e7[_0x3e4d('0x63')]){_0x448e8c(ut[_0x3e4d('0x3d')](_0x3e4d('0x64')));}else{_0x10806c(ut[_0x3e4d('0x3d')](_0x3e10e7[_0x3e4d('0x3d')]));}});};function originate(_0x3b5851,_0xf0a9b,_0x3c12d9){return new BPromise(function(_0x29d17e,_0x36a295){if(_0x3c12d9){var _0x467dfd=util[_0x3e4d('0x65')](_0x3e4d('0x66'),path['parse'](_0x3b5851[_0x3e4d('0x4')])['name'],_0x3b5851[_0x3e4d('0x4')]);gs[_0x3e4d('0x67')](_0x467dfd)[_0x3e4d('0x41')](function(){_0x3b5851[_0x3e4d('0x4')]=util[_0x3e4d('0x65')](_0x3e4d('0x68'),path['parse'](_0x3b5851[_0x3e4d('0x4')])['dir'],path[_0x3e4d('0x3f')](_0x3b5851['path'])[_0x3e4d('0x29')]);_0xf0a9b['XMF-PATH']=_0x3b5851[_0x3e4d('0x4')];ut[_0x3e4d('0x4f')](_0x3e4d('0x69'),'');ami[_0x3e4d('0x6a')](ut[_0x3e4d('0x6b')](_0x3b5851,_0xf0a9b))[_0x3e4d('0x41')](function(_0x45a19d){_0x29d17e(_0x45a19d);})[_0x3e4d('0x46')](function(_0x7afb00){_0x36a295(_0x7afb00);});})['catch'](function(_0x1b7fe0){_0x36a295(_0x1b7fe0);});}else{ami[_0x3e4d('0x6a')](ut[_0x3e4d('0x6b')](_0x3b5851,_0xf0a9b))[_0x3e4d('0x41')](function(_0x5d2566){_0x29d17e(_0x5d2566);})['catch'](function(_0x2eb398){_0x36a295(_0x2eb398);});}});}Fax['prototype'][_0x3e4d('0x6c')]=function(_0x203a05,_0x1c0e94){var _0xca9804=this;return new BPromise(function(_0x461dec,_0x190b09){var _0x5cbf2f=uuid['v4']();var _0x27a0ce=ut['addVariables'](_0x203a05,_0x1c0e94);_0xca9804[_0x3e4d('0x11')][_0x5cbf2f]=new Action(_0x5cbf2f,_0x1c0e94,_0x203a05);var _0x5d3cf5=_0xca9804[_0x3e4d('0x11')][_0x5cbf2f];if(path[_0x3e4d('0x3f')](_0x203a05['path'])[_0x3e4d('0x6d')]===_0x3e4d('0x43')){originate(_0x5d3cf5,_0x27a0ce,!![])['then'](function(_0x6bfb2a){_0x461dec(_0x6bfb2a);})[_0x3e4d('0x46')](function(_0x2faed4){_0x190b09(_0x2faed4);});}else{originate(_0x5d3cf5,_0x27a0ce,![])['then'](function(_0x33824){_0x461dec(_0x33824);})[_0x3e4d('0x46')](function(_0x5b487f){_0x190b09(_0x5b487f);});}});};Fax['prototype'][_0x3e4d('0x6e')]=function(_0x124941){return!_[_0x3e4d('0x6f')](_0x124941)&&!_[_0x3e4d('0x6f')](_0x124941[_0x3e4d('0x29')])&&!_[_0x3e4d('0x6f')](_0x124941[_0x3e4d('0x70')])&&_0x124941[_0x3e4d('0x70')]&&!_[_0x3e4d('0x6f')](this[_0x3e4d('0x10')][util[_0x3e4d('0x65')](_0x3e4d('0x71'),_0x124941[_0x3e4d('0x29')])])&&!_['isNil'](this[_0x3e4d('0x10')][util[_0x3e4d('0x65')](_0x3e4d('0x71'),_0x124941[_0x3e4d('0x29')])][_0x3e4d('0x33')])&&(this[_0x3e4d('0x10')][util['format'](_0x3e4d('0x71'),_0x124941['name'])]['status']===_0x3e4d('0x72')||this['trunks'][util[_0x3e4d('0x65')]('SIP/%s',_0x124941[_0x3e4d('0x29')])]['status']==='unmonitored');};Fax[_0x3e4d('0x2c')][_0x3e4d('0x73')]=function(_0x4fc775,_0x7fd598){if(!this[_0x3e4d('0x6e')](_0x4fc775)){ut[_0x3e4d('0x4f')](_0x3e4d('0x74'),_[_0x3e4d('0x6f')](_0x4fc775)?'':_0x4fc775[_0x3e4d('0x29')]+_0x3e4d('0x75'));return{'isValid':![],'message':_0x3e4d('0x76')};}if(_[_0x3e4d('0x6f')](_0x7fd598[_0x3e4d('0x6')])){ut[_0x3e4d('0x4f')](_0x3e4d('0x77'),JSON[_0x3e4d('0x45')](_0x7fd598));return{'isValid':![],'message':_0x3e4d('0x78')};}if(_[_0x3e4d('0x6f')](_0x7fd598[_0x3e4d('0x4')])){ut[_0x3e4d('0x4f')](_0x3e4d('0x79'),JSON[_0x3e4d('0x45')](_0x7fd598));return{'isValid':![],'message':_0x3e4d('0x7a')};}return{'isValid':!![],'message':_0x3e4d('0x7b')};};module[_0x3e4d('0x7c')]=Fax;
\ No newline at end of file
index 34cd68d..7c1b87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x523d=['bluebird','../../../config/logger','lodash','../rpc/faxAccount','error','inspect','then','catch','[Notify]\x20','util'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x523d,0x1d5));var _0xd523=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x523d[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0xd523('0x0'));var BPromise=require(_0xd523('0x1'));var logger=require(_0xd523('0x2'))('preview');var _=require(_0xd523('0x3'));var faxAccount=require(_0xd523('0x4'));function loggerCatch(_0x324612){return function(_0x556709){logger[_0xd523('0x5')](_0x324612,util[_0xd523('0x6')](_0x556709,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x406e40,_0x4fade4){return BPromise['resolve']()[_0xd523('0x7')](faxAccount['notify'](_0x406e40,_0x4fade4))[_0xd523('0x8')](loggerCatch(_0xd523('0x9')));};
\ No newline at end of file
+var _0x3439=['notify','resolve','then','catch','[Notify]\x20','util','bluebird','preview','../rpc/faxAccount','error','inspect'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x3439,0x89));var _0x9343=function(_0x2b0e20,_0x57a72a){_0x2b0e20=_0x2b0e20-0x0;var _0x5874a0=_0x3439[_0x2b0e20];return _0x5874a0;};'use strict';var util=require(_0x9343('0x0'));var BPromise=require(_0x9343('0x1'));var logger=require('../../../config/logger')(_0x9343('0x2'));var _=require('lodash');var faxAccount=require(_0x9343('0x3'));function loggerCatch(_0x5a7d71){return function(_0x5c3055){logger[_0x9343('0x4')](_0x5a7d71,util[_0x9343('0x5')](_0x5c3055,{'showHidden':![],'depth':null}));};}exports[_0x9343('0x6')]=function(_0x494288,_0xf0fc45){return BPromise[_0x9343('0x7')]()[_0x9343('0x8')](faxAccount[_0x9343('0x6')](_0x494288,_0xf0fc45))[_0x9343('0x9')](loggerCatch(_0x9343('0xa')));};
\ No newline at end of file
index 7071ca6..2e80630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec85=['exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','bluebird','child_process'];(function(_0x2d909d,_0x2e2072){var _0x40cc8d=function(_0x3733e3){while(--_0x3733e3){_0x2d909d['push'](_0x2d909d['shift']());}};_0x40cc8d(++_0x2e2072);}(_0xec85,0x9f));var _0x5ec8=function(_0x53a51d,_0x3ab5fe){_0x53a51d=_0x53a51d-0x0;var _0x5c8a7b=_0xec85[_0x53a51d];return _0x5c8a7b;};'use strict';var util=require('util');var logger=require(_0x5ec8('0x0'))('fax');var BPromise=require(_0x5ec8('0x1'));var exec=require(_0x5ec8('0x2'))[_0x5ec8('0x3')];exports[_0x5ec8('0x4')]=function(_0x224f15){return new BPromise(function(_0x38056e,_0x35a933){exec(_0x224f15,function(_0x26beeb,_0x314bbe,_0x180140){logger['info']('Exec\x20gs',_0x314bbe);if(_0x26beeb){logger[_0x5ec8('0x5')](_0x5ec8('0x6'),_0x5ec8('0x7'),util[_0x5ec8('0x8')](_0x26beeb,{'showHidden':![],'depth':null}),_0x314bbe,_0x180140);_0x35a933(_0x26beeb);}_0x38056e(_0x314bbe);});});};
\ No newline at end of file
+var _0xf9de=['fax','bluebird','exec','execute','info','Exec\x20gs','inspect','util'];(function(_0x4bfcbd,_0xc6bad5){var _0x542e96=function(_0x42ddc4){while(--_0x42ddc4){_0x4bfcbd['push'](_0x4bfcbd['shift']());}};_0x542e96(++_0xc6bad5);}(_0xf9de,0x14f));var _0xef9d=function(_0x49d04b,_0x487015){_0x49d04b=_0x49d04b-0x0;var _0x299628=_0xf9de[_0x49d04b];return _0x299628;};'use strict';var util=require(_0xef9d('0x0'));var logger=require('../../../../config/logger')(_0xef9d('0x1'));var BPromise=require(_0xef9d('0x2'));var exec=require('child_process')[_0xef9d('0x3')];exports[_0xef9d('0x4')]=function(_0x3e514a){return new BPromise(function(_0x411b68,_0x55dd1f){exec(_0x3e514a,function(_0x2e13a0,_0x488acc,_0x2d7177){logger[_0xef9d('0x5')]('Exec\x20gs',_0x488acc);if(_0x2e13a0){logger[_0xef9d('0x5')](_0xef9d('0x6'),'\x20Error\x20:',util[_0xef9d('0x7')](_0x2e13a0,{'showHidden':![],'depth':null}),_0x488acc,_0x2d7177);_0x55dd1f(_0x2e13a0);}_0x411b68(_0x488acc);});});};
\ No newline at end of file
index a8891b1..de29718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e07=['originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','util','../../../../config/logger','fax','logger','info','inspect','addVariables','headerinfo','minrate','maxrate','format','\x22%s\x22','t38timeout','localstationid','path','variablesAction'];(function(_0x25c2a6,_0xdc531d){var _0x23bd32=function(_0x74b79f){while(--_0x74b79f){_0x25c2a6['push'](_0x25c2a6['shift']());}};_0x23bd32(++_0xdc531d);}(_0x9e07,0xe0));var _0x79e0=function(_0x344847,_0x4f22a8){_0x344847=_0x344847-0x0;var _0x3fdb49=_0x9e07[_0x344847];return _0x3fdb49;};'use strict';var util=require(_0x79e0('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0x79e0('0x1'))(_0x79e0('0x2'));exports['message']=function(_0x53783a){return{'message':_0x53783a};};exports[_0x79e0('0x3')]=function(_0x5e2903,_0x2edbc1){logger[_0x79e0('0x4')](_0x5e2903,util[_0x79e0('0x5')](_0x2edbc1,{'showHidden':![],'depth':null}));};exports[_0x79e0('0x6')]=function(_0x31401e,_0x4fe87b){var _0x82e539={'XMF-ECM':_0x4fe87b['ecm'],'XMF-HEADERINFO':_0x4fe87b[_0x79e0('0x7')],'XMF-MINRATE':_0x4fe87b[_0x79e0('0x8')],'XMF-MAXRATE':_0x4fe87b[_0x79e0('0x9')],'XMF-MODEM':util[_0x79e0('0xa')](_0x79e0('0xb'),_0x4fe87b['modem']),'XMF-GATEWAY':_0x4fe87b['gateway'],'XMF-FAXDETECT':_0x4fe87b['faxdetect'],'XMF-T38TIMEOUT':_0x4fe87b[_0x79e0('0xc')],'XMF-LOCALSTATIONID':_0x4fe87b[_0x79e0('0xd')],'XMF-PATH':_0x31401e[_0x79e0('0xe')]};return _0x82e539;};exports[_0x79e0('0xf')]=function(_0x3a406e,_0xa18b9c){return{'actionid':_0x3a406e['uniqueid'],'action':_0x79e0('0x10'),'channel':_0x3a406e[_0x79e0('0x11')],'Exten':_0x79e0('0x12'),'Context':'from-sip','Priority':'1','callerid':util['format'](_0x79e0('0x13'),_0x3a406e[_0x79e0('0x7')]?_0x3a406e[_0x79e0('0x7')]:'',_0x3a406e[_0x79e0('0xd')]),'variable':_0xa18b9c,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3a406e['uniqueid']};};
\ No newline at end of file
+var _0x14a2=['ecm','headerinfo','minrate','maxrate','\x22%s\x22','gateway','faxdetect','t38timeout','path','uniqueid','channel','from-sip','format','\x22%s\x22\x20<%s>','localstationid','util','moment','fax','message','logger','info','inspect','addVariables'];(function(_0xe379d1,_0xc65ec8){var _0x54ed90=function(_0x49a9f3){while(--_0x49a9f3){_0xe379d1['push'](_0xe379d1['shift']());}};_0x54ed90(++_0xc65ec8);}(_0x14a2,0x17f));var _0x214a=function(_0x5d6bea,_0x2f1fd5){_0x5d6bea=_0x5d6bea-0x0;var _0x4f5637=_0x14a2[_0x5d6bea];return _0x4f5637;};'use strict';var util=require(_0x214a('0x0'));var _=require('lodash');var moment=require(_0x214a('0x1'));var logger=require('../../../../config/logger')(_0x214a('0x2'));exports[_0x214a('0x3')]=function(_0x4ccc7b){return{'message':_0x4ccc7b};};exports[_0x214a('0x4')]=function(_0x53bfe9,_0x1dba65){logger[_0x214a('0x5')](_0x53bfe9,util[_0x214a('0x6')](_0x1dba65,{'showHidden':![],'depth':null}));};exports[_0x214a('0x7')]=function(_0x511f15,_0x37dd4f){var _0x2bbe46={'XMF-ECM':_0x37dd4f[_0x214a('0x8')],'XMF-HEADERINFO':_0x37dd4f[_0x214a('0x9')],'XMF-MINRATE':_0x37dd4f[_0x214a('0xa')],'XMF-MAXRATE':_0x37dd4f[_0x214a('0xb')],'XMF-MODEM':util['format'](_0x214a('0xc'),_0x37dd4f['modem']),'XMF-GATEWAY':_0x37dd4f[_0x214a('0xd')],'XMF-FAXDETECT':_0x37dd4f[_0x214a('0xe')],'XMF-T38TIMEOUT':_0x37dd4f[_0x214a('0xf')],'XMF-LOCALSTATIONID':_0x37dd4f['localstationid'],'XMF-PATH':_0x511f15[_0x214a('0x10')]};return _0x2bbe46;};exports['variablesAction']=function(_0xa46aab,_0xd94d33){return{'actionid':_0xa46aab[_0x214a('0x11')],'action':'originate','channel':_0xa46aab[_0x214a('0x12')],'Exten':'xcally-motion-fax','Context':_0x214a('0x13'),'Priority':'1','callerid':util[_0x214a('0x14')](_0x214a('0x15'),_0xa46aab[_0x214a('0x9')]?_0xa46aab[_0x214a('0x9')]:'',_0xa46aab[_0x214a('0x16')]),'variable':_0xd94d33,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0xa46aab[_0x214a('0x11')]};};
\ No newline at end of file
index 1ba9b16..46dc06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2e0=['./rpc/integrations/vtiger','./rpc/integrations/freshsales','get','hour','then','initAgents','getTelephones','getTrunks','initTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','sync','bluebird','util','moment','./server','./realtime','./acw','./trigger','./dialer','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho'];(function(_0x28658b,_0x1c8a1e){var _0x58b430=function(_0x7e9bfb){while(--_0x7e9bfb){_0x28658b['push'](_0x28658b['shift']());}};_0x58b430(++_0x1c8a1e);}(_0xb2e0,0xb2));var _0x0b2e=function(_0x28ee3b,_0x1ee01a){_0x28ee3b=_0x28ee3b-0x0;var _0x461614=_0xb2e0[_0x28ee3b];return _0x461614;};'use strict';var BPromise=require(_0x0b2e('0x0'));var util=require(_0x0b2e('0x1'));var moment=require(_0x0b2e('0x2'));var server=require(_0x0b2e('0x3'));var Realtime=require(_0x0b2e('0x4'));var Report=require('./report');var Acw=require(_0x0b2e('0x5'));var Trigger=require(_0x0b2e('0x6'));var Dialer=require(_0x0b2e('0x7'));var Preview=require(_0x0b2e('0x8'));var Fax=require('./fax');var user=require(_0x0b2e('0x9'));var voiceQueue=require(_0x0b2e('0xa'));var voiceQueueReport=require(_0x0b2e('0xb'));var voiceCallReport=require(_0x0b2e('0xc'));var trunk=require(_0x0b2e('0xd'));var trigger=require(_0x0b2e('0xe'));var template=require(_0x0b2e('0xf'));var cmHopperHistory=require(_0x0b2e('0x10'));var campaign=require(_0x0b2e('0x11'));var voiceExtension=require(_0x0b2e('0x12'));var faxAccount=require(_0x0b2e('0x13'));var zendesk=require(_0x0b2e('0x14'));var salesforce=require(_0x0b2e('0x15'));var sugarcrm=require(_0x0b2e('0x16'));var freshdesk=require(_0x0b2e('0x17'));var desk=require(_0x0b2e('0x18'));var zoho=require(_0x0b2e('0x19'));var vtiger=require(_0x0b2e('0x1a'));var freshsales=require(_0x0b2e('0x1b'));var servicenow=require('./rpc/integrations/servicenow');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()[_0x0b2e('0x1c')](_0x0b2e('0x1d'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x0b2e('0x1c')](_0x0b2e('0x1d'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x0b2e('0x1e')](user['getAgents']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x1f')]())[_0x0b2e('0x1e')](user[_0x0b2e('0x20')]())[_0x0b2e('0x1e')](realtime['initTelephones']())['then'](trunk[_0x0b2e('0x21')]())['then'](realtime[_0x0b2e('0x22')]())[_0x0b2e('0x1e')](voiceQueue['getVoiceQueues']())['then'](realtime[_0x0b2e('0x23')]())[_0x0b2e('0x1e')](trigger[_0x0b2e('0x24')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x25')]())['then'](template[_0x0b2e('0x26')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x27')]())[_0x0b2e('0x1e')](zendesk['getZendeskAccounts']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x28')]())[_0x0b2e('0x1e')](salesforce[_0x0b2e('0x29')]())[_0x0b2e('0x1e')](realtime['initSalesforceAccounts']())['then'](sugarcrm['getSugarcrmAccounts']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x2a')]())[_0x0b2e('0x1e')](freshdesk[_0x0b2e('0x2b')]())[_0x0b2e('0x1e')](realtime['initFreshdeskAccounts']())[_0x0b2e('0x1e')](desk[_0x0b2e('0x2c')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x2d')]())['then'](zoho[_0x0b2e('0x2e')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x2f')]())['then'](vtiger[_0x0b2e('0x30')]())[_0x0b2e('0x1e')](realtime['initVtigerAccounts']())['then'](freshsales[_0x0b2e('0x31')]())['then'](realtime[_0x0b2e('0x32')]())[_0x0b2e('0x1e')](servicenow['getServicenowAccounts']())['then'](realtime['initServicenowAccounts']())[_0x0b2e('0x1e')](dynamics365[_0x0b2e('0x33')]())[_0x0b2e('0x1e')](realtime['initDynamics365Accounts']())[_0x0b2e('0x1e')](campaign['getCampaigns']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x34')]())['then'](voiceExtension[_0x0b2e('0x35')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x36')]())['then'](faxAccount[_0x0b2e('0x37')]())[_0x0b2e('0x1e')](realtime['initFaxAccounts']())[_0x0b2e('0x1e')](function(){return realtime;});}function initParams(){return BPromise[_0x0b2e('0x38')]()[_0x0b2e('0x1e')](voiceQueueReport[_0x0b2e('0x39')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3a')]())['then'](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3b')]())['then'](cmHopperHistory[_0x0b2e('0x3c')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3d')]())[_0x0b2e('0x1e')](voiceCallReport[_0x0b2e('0x3e')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3f')]())[_0x0b2e('0x1e')](function(_0x4880f1){})[_0x0b2e('0x40')](function(_0x2961e7){console[_0x0b2e('0x41')](_0x2961e7);});}function main(){return server[_0x0b2e('0x42')](realtime,preview,fax)[_0x0b2e('0x1e')](function(_0x12e3be){return initRealtime();})['then'](function(){return initParams();})[_0x0b2e('0x1e')](function(){report[_0x0b2e('0x43')]();setInterval(initRealtime,0x1388);})[_0x0b2e('0x40')](function(_0x45dddb){console[_0x0b2e('0x41')](_0x45dddb);});}main();
\ No newline at end of file
+var _0xfb4f=['getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','catch','listen','sync','log','bluebird','util','moment','./server','./report','./acw','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/freshdesk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','then','getTelephones','initTelephones','initTrunks','initVoiceQueues','getTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initCampaigns','getVoiceExtensions','initVoiceExtensions'];(function(_0x277873,_0x30f008){var _0x5593f9=function(_0x54d29e){while(--_0x54d29e){_0x277873['push'](_0x277873['shift']());}};_0x5593f9(++_0x30f008);}(_0xfb4f,0x199));var _0xffb4=function(_0x3f3ad8,_0x4bc014){_0x3f3ad8=_0x3f3ad8-0x0;var _0x3a2667=_0xfb4f[_0x3f3ad8];return _0x3a2667;};'use strict';var BPromise=require(_0xffb4('0x0'));var util=require(_0xffb4('0x1'));var moment=require(_0xffb4('0x2'));var server=require(_0xffb4('0x3'));var Realtime=require('./realtime');var Report=require(_0xffb4('0x4'));var Acw=require(_0xffb4('0x5'));var Trigger=require(_0xffb4('0x6'));var Dialer=require('./dialer');var Preview=require(_0xffb4('0x7'));var Fax=require(_0xffb4('0x8'));var user=require(_0xffb4('0x9'));var voiceQueue=require(_0xffb4('0xa'));var voiceQueueReport=require(_0xffb4('0xb'));var voiceCallReport=require(_0xffb4('0xc'));var trunk=require(_0xffb4('0xd'));var trigger=require(_0xffb4('0xe'));var template=require(_0xffb4('0xf'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0xffb4('0x10'));var voiceExtension=require(_0xffb4('0x11'));var faxAccount=require(_0xffb4('0x12'));var zendesk=require(_0xffb4('0x13'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0xffb4('0x14'));var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0xffb4('0x15'));var freshsales=require(_0xffb4('0x16'));var servicenow=require(_0xffb4('0x17'));var dynamics365=require(_0xffb4('0x18'));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()[_0xffb4('0x19')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xffb4('0x19')](_0xffb4('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xffb4('0x1b')]()['then'](user[_0xffb4('0x1c')]())[_0xffb4('0x1d')](realtime['initAgents']())[_0xffb4('0x1d')](user[_0xffb4('0x1e')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x1f')]())['then'](trunk['getTrunks']())[_0xffb4('0x1d')](realtime[_0xffb4('0x20')]())['then'](voiceQueue['getVoiceQueues']())[_0xffb4('0x1d')](realtime[_0xffb4('0x21')]())[_0xffb4('0x1d')](trigger[_0xffb4('0x22')]())['then'](realtime['initTriggers']())[_0xffb4('0x1d')](template[_0xffb4('0x23')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x24')]())[_0xffb4('0x1d')](zendesk['getZendeskAccounts']())[_0xffb4('0x1d')](realtime[_0xffb4('0x25')]())[_0xffb4('0x1d')](salesforce[_0xffb4('0x26')]())['then'](realtime['initSalesforceAccounts']())[_0xffb4('0x1d')](sugarcrm[_0xffb4('0x27')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x28')]())[_0xffb4('0x1d')](freshdesk['getFreshdeskAccounts']())[_0xffb4('0x1d')](realtime[_0xffb4('0x29')]())['then'](desk[_0xffb4('0x2a')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x2b')]())[_0xffb4('0x1d')](zoho[_0xffb4('0x2c')]())['then'](realtime[_0xffb4('0x2d')]())['then'](vtiger[_0xffb4('0x2e')]())[_0xffb4('0x1d')](realtime['initVtigerAccounts']())[_0xffb4('0x1d')](freshsales[_0xffb4('0x2f')]())[_0xffb4('0x1d')](realtime['initFreshsalesAccounts']())[_0xffb4('0x1d')](servicenow[_0xffb4('0x30')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x31')]())[_0xffb4('0x1d')](dynamics365['getDynamics365Accounts']())['then'](realtime['initDynamics365Accounts']())[_0xffb4('0x1d')](campaign['getCampaigns']())[_0xffb4('0x1d')](realtime[_0xffb4('0x32')]())['then'](voiceExtension[_0xffb4('0x33')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x34')]())[_0xffb4('0x1d')](faxAccount[_0xffb4('0x35')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x36')]())[_0xffb4('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0xffb4('0x1b')]()[_0xffb4('0x1d')](voiceQueueReport[_0xffb4('0x37')]())[_0xffb4('0x1d')](realtime[_0xffb4('0x38')]())[_0xffb4('0x1d')](cmHopperHistory[_0xffb4('0x39')]())['then'](realtime[_0xffb4('0x3a')]())[_0xffb4('0x1d')](cmHopperHistory[_0xffb4('0x3b')]())['then'](realtime[_0xffb4('0x3c')]())[_0xffb4('0x1d')](voiceCallReport['getVoiceCallReports']())[_0xffb4('0x1d')](realtime[_0xffb4('0x3d')]())['then'](function(_0x1164d5){})[_0xffb4('0x3e')](function(_0x3aa472){console['log'](_0x3aa472);});}function main(){return server[_0xffb4('0x3f')](realtime,preview,fax)['then'](function(_0x39042f){return initRealtime();})['then'](function(){return initParams();})[_0xffb4('0x1d')](function(){report[_0xffb4('0x40')]();setInterval(initRealtime,0x1388);})[_0xffb4('0x3e')](function(_0x30d3d1){console[_0xffb4('0x41')](_0x30d3d1);});}main();
\ No newline at end of file
index b2c6ea4..3557e94 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(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xedd9,0xfc));var _0x9edd=function(_0x48ceb0,_0x50214a){_0x48ceb0=_0x48ceb0-0x0;var _0xa2322d=_0xedd9[_0x48ceb0];return _0xa2322d;};'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 _0x0713=['idle','inuse','talking','voiceStatusTime','toNumber','format','voiceStatusQueue','stringify','user:%s','emit','user:save','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusCallerIdNumber','onhold','local','prototype','state','toLowerCase','not_inuse'];(function(_0x210e67,_0x11c056){var _0x21a8f6=function(_0x264189){while(--_0x264189){_0x210e67['push'](_0x210e67['shift']());}};_0x21a8f6(++_0x11c056);}(_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 md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));config[_0x3071('0x4')]=_['defaults'](config[_0x3071('0x4')],{'host':_0x3071('0x5'),'port':0x18eb});var io=require(_0x3071('0x6'))(new Redis(config[_0x3071('0x4')]));function Agent(_0xabd7b6){this['id']=_0xabd7b6['id']||0x0;this[_0x3071('0x7')]=_0xabd7b6[_0x3071('0x7')]||'';this[_0x3071('0x8')]=_0xabd7b6[_0x3071('0x8')]||'';this[_0x3071('0x9')]=_0xabd7b6[_0x3071('0x9')]||'';this[_0x3071('0xa')]=_0xabd7b6[_0x3071('0xa')]||'';this['state']=_0x3071('0xb');this[_0x3071('0xc')]=0x0;this[_0x3071('0xd')]=_0x3071('0xb');this[_0x3071('0xe')]='';this['phone']='';this[_0x3071('0xf')]='';this[_0x3071('0x10')]='';this[_0x3071('0x11')]=_0xabd7b6[_0x3071('0x11')]||![];this[_0x3071('0x12')]='unknown';this['voiceStatusTime']=0x0;this[_0x3071('0x13')]='';this['voiceStatusQueue']='';this[_0x3071('0x14')]=![];this[_0x3071('0x15')]=![];this['md5']='';}Agent[_0x3071('0x16')]['updateStatusRealtime']=function(_0x2fc15d){var _0x45c93b;if(_0x2fc15d&&_0x2fc15d[_0x3071('0x17')]){_0x45c93b=_0x2fc15d[_0x3071('0x17')][_0x3071('0x18')]();switch(_0x45c93b){case _0x3071('0x19'):_0x45c93b=_0x3071('0x1a');break;case _0x3071('0x1b'):_0x45c93b=_0x3071('0x1c');break;}}if(_0x45c93b&&this[_0x3071('0x12')]!==_0x45c93b||_0x2fc15d['statePause']){this[_0x3071('0x1d')]=_[_0x3071('0x1e')](moment()[_0x3071('0x1f')]('x'));}if(_0x45c93b){this[_0x3071('0x12')]=_0x45c93b;}var _0x3acf0e={'id':this['id'],'name':this[_0x3071('0x7')],'email':this[_0x3071('0x8')],'accountcode':this[_0x3071('0x9')],'fullname':this['fullname'],'state':this[_0x3071('0x17')],'stateTime':this[_0x3071('0xc')],'status':this[_0x3071('0xd')],'address':this['address'],'online':this[_0x3071('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x3071('0x1d')],'voiceStatusCallerIdNumber':this[_0x3071('0x13')],'voiceStatusQueue':this[_0x3071('0x20')],'interface':this[_0x3071('0x10')],'onhold':this[_0x3071('0x14')]};var _0x34c50e=md5(JSON[_0x3071('0x21')](_0x3acf0e));if(this[_0x3071('0x1')]!==_0x34c50e){this['md5']=_0x34c50e;io['to'](util['format'](_0x3071('0x22'),_0x3acf0e[_0x3071('0x7')]))[_0x3071('0x23')](_0x3071('0x24'),_0x3acf0e);io[_0x3071('0x23')](_0x3071('0x25'),_0x3acf0e);}};module[_0x3071('0x26')]=Agent;
\ No newline at end of file
index c73390a..9170050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd121=['dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive'];(function(_0xf71e6b,_0x8ea7d){var _0xacf3d1=function(_0x5b35e0){while(--_0x5b35e0){_0xf71e6b['push'](_0xf71e6b['shift']());}};_0xacf3d1(++_0x8ea7d);}(_0xd121,0x66));var _0x1d12=function(_0x2340c9,_0x29e3de){_0x2340c9=_0x2340c9-0x0;var _0x4ab6b5=_0xd121[_0x2340c9];return _0x4ab6b5;};'use strict';function Campaign(_0x4a1f8c){this['id']=_0x4a1f8c['id']||0x0;this['name']=_0x4a1f8c[_0x1d12('0x0')]||'';this[_0x1d12('0x1')]=_0x4a1f8c[_0x1d12('0x1')]||_0x1d12('0x2');this[_0x1d12('0x3')]=0x0;this['temp']=0x0;this[_0x1d12('0x4')]=0x0;this[_0x1d12('0x5')]=0x0;this['message']='';this[_0x1d12('0x6')]=!![];this[_0x1d12('0x7')]=_0x4a1f8c[_0x1d12('0x7')];this[_0x1d12('0x8')]=_0x4a1f8c[_0x1d12('0x8')];this[_0x1d12('0x9')]=_0x4a1f8c[_0x1d12('0x9')]||null;this[_0x1d12('0xa')]=_0x4a1f8c[_0x1d12('0xa')]?_0x4a1f8c[_0x1d12('0xa')]:null;this['dialOriginateCallerIdName']=_0x4a1f8c['dialOriginateCallerIdName'];this[_0x1d12('0xb')]=_0x4a1f8c['dialOriginateCallerIdNumber'];this['dialOriginateTimeout']=_0x4a1f8c['dialOriginateTimeout']||0x1e;this[_0x1d12('0xc')]=_0x4a1f8c['dialCongestionMaxRetry'];this[_0x1d12('0xd')]=_0x4a1f8c[_0x1d12('0xd')];this['dialBusyMaxRetry']=_0x4a1f8c['dialBusyMaxRetry'];this['dialBusyRetryFrequency']=_0x4a1f8c[_0x1d12('0xe')];this['dialNoAnswerMaxRetry']=_0x4a1f8c['dialNoAnswerMaxRetry'];this[_0x1d12('0xf')]=_0x4a1f8c['dialNoAnswerRetryFrequency'];this[_0x1d12('0x10')]=_0x4a1f8c[_0x1d12('0x10')];this[_0x1d12('0x11')]=_0x4a1f8c[_0x1d12('0x11')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x4a1f8c[_0x1d12('0x12')]||0x96;this['dialDropMaxRetry']=_0x4a1f8c['dialDropMaxRetry']||0x3;this[_0x1d12('0x13')]=_0x4a1f8c[_0x1d12('0x13')]||0x96;this[_0x1d12('0x14')]=_0x4a1f8c[_0x1d12('0x14')]||0x3;this[_0x1d12('0x15')]=_0x4a1f8c[_0x1d12('0x15')]||0x96;this['dialMachineMaxRetry']=_0x4a1f8c[_0x1d12('0x16')]||0x3;this['dialMachineRetryFrequency']=_0x4a1f8c[_0x1d12('0x17')]||0x96;this[_0x1d12('0x18')]=_0x4a1f8c[_0x1d12('0x18')]||0x3;this[_0x1d12('0x19')]=_0x4a1f8c[_0x1d12('0x19')]||0x96;this['dialOrderByScheduledAt']=_0x4a1f8c['dialOrderByScheduledAt']||_0x1d12('0x1a');this[_0x1d12('0x1b')]=_0x4a1f8c['dialPrefix']||undefined;this[_0x1d12('0x1c')]=_0x4a1f8c['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x1d12('0x1d')]=_0x4a1f8c['dialCutDigit']||undefined;this[_0x1d12('0x1e')]=_0x4a1f8c[_0x1d12('0x1e')]?_0x4a1f8c[_0x1d12('0x1e')]:undefined;this['Trunk']=_0x4a1f8c[_0x1d12('0x1f')]?_0x4a1f8c[_0x1d12('0x1f')]:undefined;this[_0x1d12('0x20')]=_0x4a1f8c[_0x1d12('0x20')]?_0x4a1f8c['Interval']:undefined;this[_0x1d12('0x21')]=_0x4a1f8c[_0x1d12('0x21')]?_0x4a1f8c[_0x1d12('0x21')]:undefined;this[_0x1d12('0x22')]=_0x4a1f8c[_0x1d12('0x21')]?_0x4a1f8c[_0x1d12('0x21')][_0x1d12('0x0')]:undefined;this[_0x1d12('0x23')]=_0x4a1f8c[_0x1d12('0x23')]||![];this[_0x1d12('0x24')]=_0x4a1f8c[_0x1d12('0x24')];this[_0x1d12('0x25')]=_0x4a1f8c[_0x1d12('0x25')];this[_0x1d12('0x26')]=_0x4a1f8c[_0x1d12('0x26')];this[_0x1d12('0x27')]=_0x4a1f8c[_0x1d12('0x27')];this[_0x1d12('0x28')]=_0x4a1f8c['dialAMDMinWordLength'];this[_0x1d12('0x29')]=_0x4a1f8c[_0x1d12('0x29')];this[_0x1d12('0x2a')]=_0x4a1f8c[_0x1d12('0x2a')];this[_0x1d12('0x2b')]=_0x4a1f8c['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x4a1f8c[_0x1d12('0x2c')];}module[_0x1d12('0x2d')]=Campaign;
\ No newline at end of file
+var _0x4050=['Interval','SquareProject','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','ivrAnswerCallsDay','ivrTotalCallsDays','message','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0x4050,0x9c));var _0x0405=function(_0x4fbb15,_0x21be0c){_0x4fbb15=_0x4fbb15-0x0;var _0x436338=_0x4050[_0x4fbb15];return _0x436338;};'use strict';function Campaign(_0x2d37fe){this['id']=_0x2d37fe['id']||0x0;this[_0x0405('0x0')]=_0x2d37fe[_0x0405('0x0')]||'';this[_0x0405('0x1')]=_0x2d37fe[_0x0405('0x1')]||_0x0405('0x2');this['originated']=0x0;this['temp']=0x0;this[_0x0405('0x3')]=0x0;this[_0x0405('0x4')]=0x0;this[_0x0405('0x5')]='';this['sendMessageOneNotActive']=!![];this[_0x0405('0x6')]=_0x2d37fe['active'];this['limitCalls']=_0x2d37fe[_0x0405('0x7')];this['dialTimezone']=_0x2d37fe[_0x0405('0x8')]||null;this['dialGlobalInterval']=_0x2d37fe[_0x0405('0x9')]?_0x2d37fe['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x2d37fe[_0x0405('0xa')];this[_0x0405('0xb')]=_0x2d37fe[_0x0405('0xb')];this['dialOriginateTimeout']=_0x2d37fe[_0x0405('0xc')]||0x1e;this[_0x0405('0xd')]=_0x2d37fe['dialCongestionMaxRetry'];this['dialCongestionRetryFrequency']=_0x2d37fe[_0x0405('0xe')];this[_0x0405('0xf')]=_0x2d37fe[_0x0405('0xf')];this[_0x0405('0x10')]=_0x2d37fe[_0x0405('0x10')];this[_0x0405('0x11')]=_0x2d37fe[_0x0405('0x11')];this['dialNoAnswerRetryFrequency']=_0x2d37fe[_0x0405('0x12')];this[_0x0405('0x13')]=_0x2d37fe[_0x0405('0x13')];this[_0x0405('0x14')]=_0x2d37fe[_0x0405('0x14')]||0x3;this[_0x0405('0x15')]=_0x2d37fe[_0x0405('0x15')]||0x96;this[_0x0405('0x16')]=_0x2d37fe[_0x0405('0x16')]||0x3;this['dialDropRetryFrequency']=_0x2d37fe[_0x0405('0x17')]||0x96;this[_0x0405('0x18')]=_0x2d37fe['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x2d37fe['dialAbandonedRetryFrequency']||0x96;this[_0x0405('0x19')]=_0x2d37fe[_0x0405('0x19')]||0x3;this[_0x0405('0x1a')]=_0x2d37fe[_0x0405('0x1a')]||0x96;this[_0x0405('0x1b')]=_0x2d37fe[_0x0405('0x1b')]||0x3;this[_0x0405('0x1c')]=_0x2d37fe['dialAgentRejectRetryFrequency']||0x96;this[_0x0405('0x1d')]=_0x2d37fe[_0x0405('0x1d')]||_0x0405('0x1e');this[_0x0405('0x1f')]=_0x2d37fe[_0x0405('0x1f')]||undefined;this[_0x0405('0x20')]=_0x2d37fe[_0x0405('0x20')]||undefined;this[_0x0405('0x21')]=_0x2d37fe['dialCutDigit']||undefined;this[_0x0405('0x22')]=_0x2d37fe[_0x0405('0x22')]?_0x2d37fe['TrunkBackup']:undefined;this['Trunk']=_0x2d37fe['Trunk']?_0x2d37fe[_0x0405('0x23')]:undefined;this['Interval']=_0x2d37fe[_0x0405('0x24')]?_0x2d37fe[_0x0405('0x24')]:undefined;this[_0x0405('0x25')]=_0x2d37fe['SquareProject']?_0x2d37fe[_0x0405('0x25')]:undefined;this['dialQueueProject']=_0x2d37fe['SquareProject']?_0x2d37fe[_0x0405('0x25')][_0x0405('0x0')]:undefined;this['dialAMDActive']=_0x2d37fe['dialAMDActive']||![];this[_0x0405('0x26')]=_0x2d37fe[_0x0405('0x26')];this[_0x0405('0x27')]=_0x2d37fe['dialAMDGreeting'];this[_0x0405('0x28')]=_0x2d37fe['dialAMDAfterGreetingSilence'];this[_0x0405('0x29')]=_0x2d37fe['dialAMDTotalAnalysisTime'];this[_0x0405('0x2a')]=_0x2d37fe[_0x0405('0x2a')];this[_0x0405('0x2b')]=_0x2d37fe[_0x0405('0x2b')];this[_0x0405('0x2c')]=_0x2d37fe[_0x0405('0x2c')];this[_0x0405('0x2d')]=_0x2d37fe[_0x0405('0x2d')];this['dialAMDMaximumWordLength']=_0x2d37fe[_0x0405('0x2e')];}module[_0x0405('0x2f')]=Campaign;
\ No newline at end of file
index e2224b0..84c7a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a3=['abandoned','duration','billableseconds','holdtime','type','tag','disposition','monitor','monitors','transfercalleridnum','mohtime','exports','channel','destinationchannel','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged'];(function(_0x45f111,_0x3a1a4a){var _0x483508=function(_0x3131ab){while(--_0x3131ab){_0x45f111['push'](_0x45f111['shift']());}};_0x483508(++_0x3a1a4a);}(_0xa0a3,0x1e0));var _0x3a0a=function(_0x500f66,_0x8e6936){_0x500f66=_0x500f66-0x0;var _0x10791e=_0xa0a3[_0x500f66];return _0x10791e;};'use strict';function Channel(){this['starttime']=null;this[_0x3a0a('0x0')]='';this[_0x3a0a('0x1')]='';this['calleridnum']=0x0;this[_0x3a0a('0x2')]='';this[_0x3a0a('0x3')]=undefined;this[_0x3a0a('0x4')]=undefined;this[_0x3a0a('0x5')]=0x0;this[_0x3a0a('0x6')]='';this[_0x3a0a('0x7')]=0x0;this[_0x3a0a('0x8')]=0x0;this[_0x3a0a('0x9')]=0x0;this[_0x3a0a('0xa')]=![];this[_0x3a0a('0xb')]=null;this[_0x3a0a('0xc')]=null;this[_0x3a0a('0xd')]=![];this[_0x3a0a('0xe')]=![];this['lastapplication']='';this['lastdata']='';this[_0x3a0a('0xf')]=0x0;this[_0x3a0a('0x10')]=0x0;this[_0x3a0a('0x11')]=0x0;this[_0x3a0a('0x12')]=null;this[_0x3a0a('0x13')]=null;this[_0x3a0a('0x14')]=null;this[_0x3a0a('0x15')]=![];this['monitorFilename']=null;this['queue']=null;this[_0x3a0a('0x16')]=[];this[_0x3a0a('0x17')]=undefined;this['transferconnectedlinenum']=undefined;this['transferType']=undefined;this[_0x3a0a('0x18')]=0x0;}module[_0x3a0a('0x19')]=Channel;
\ No newline at end of file
+var _0x720f=['answertime','unmanaged','abandoned','duration','billableseconds','type','tag','monitor','transferconnectedlinenum','transferType','exports','starttime','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered'];(function(_0x2b4af9,_0x51adf5){var _0x2bf019=function(_0x24271f){while(--_0x24271f){_0x2b4af9['push'](_0x2b4af9['shift']());}};_0x2bf019(++_0x51adf5);}(_0x720f,0x185));var _0xf720=function(_0x1cd674,_0x8d3638){_0x1cd674=_0x1cd674-0x0;var _0x27928f=_0x720f[_0x1cd674];return _0x27928f;};'use strict';function Channel(){this[_0xf720('0x0')]=null;this['channel']='';this['destinationchannel']='';this['calleridnum']=0x0;this[_0xf720('0x1')]='';this[_0xf720('0x2')]=undefined;this[_0xf720('0x3')]=undefined;this[_0xf720('0x4')]=0x0;this[_0xf720('0x5')]='';this[_0xf720('0x6')]=0x0;this[_0xf720('0x7')]=0x0;this[_0xf720('0x8')]=0x0;this[_0xf720('0x9')]=![];this[_0xf720('0xa')]=null;this['endtime']=null;this[_0xf720('0xb')]=![];this[_0xf720('0xc')]=![];this['lastapplication']='';this['lastdata']='';this[_0xf720('0xd')]=0x0;this[_0xf720('0xe')]=0x0;this['holdtime']=0x0;this[_0xf720('0xf')]=null;this[_0xf720('0x10')]=null;this['disposition']=null;this[_0xf720('0x11')]=![];this['monitorFilename']=null;this['queue']=null;this['monitors']=[];this['transfercalleridnum']=undefined;this[_0xf720('0x12')]=undefined;this[_0xf720('0x13')]=undefined;this['mohtime']=0x0;}module[_0xf720('0x14')]=Channel;
\ No newline at end of file
index 4d3fe26..779b22e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8785=['Configurations','name','username','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x43a84a,_0x6c500e){var _0x2ed43a=function(_0x8f88c3){while(--_0x8f88c3){_0x43a84a['push'](_0x43a84a['shift']());}};_0x2ed43a(++_0x6c500e);}(_0x8785,0xa6));var _0x5878=function(_0x126ebf,_0x1cdbd5){_0x126ebf=_0x126ebf-0x0;var _0x594574=_0x8785[_0x126ebf];return _0x594574;};'use strict';function DeskAccount(_0x4d6c45){this['id']=_0x4d6c45['id']||0x0;this[_0x5878('0x0')]=_0x4d6c45[_0x5878('0x0')]||'';this['username']=_0x4d6c45[_0x5878('0x1')]||'';this['remoteUri']=_0x4d6c45['remoteUri']||'';this[_0x5878('0x2')]=_0x4d6c45[_0x5878('0x2')]||'';this[_0x5878('0x3')]=_0x4d6c45[_0x5878('0x3')]||'';this[_0x5878('0x4')]=_0x4d6c45[_0x5878('0x4')]||'';this['consumerSecret']=_0x4d6c45[_0x5878('0x5')]||'';this['token']=_0x4d6c45[_0x5878('0x6')]||'';this['tokenSecret']=_0x4d6c45[_0x5878('0x7')]||'';this[_0x5878('0x8')]=_0x4d6c45[_0x5878('0x8')]||'';this[_0x5878('0x9')]=_0x4d6c45[_0x5878('0x9')]||'';this['Configurations']=_0x4d6c45[_0x5878('0xa')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x179b=['consumerSecret','tokenSecret','type','serverUrl','Configurations','name','username','remoteUri','authType','password'];(function(_0x580080,_0x349b13){var _0x4dd622=function(_0x226a01){while(--_0x226a01){_0x580080['push'](_0x580080['shift']());}};_0x4dd622(++_0x349b13);}(_0x179b,0xc3));var _0xb179=function(_0x2a56ad,_0x2b94bf){_0x2a56ad=_0x2a56ad-0x0;var _0x425175=_0x179b[_0x2a56ad];return _0x425175;};'use strict';function DeskAccount(_0x20e40e){this['id']=_0x20e40e['id']||0x0;this[_0xb179('0x0')]=_0x20e40e[_0xb179('0x0')]||'';this[_0xb179('0x1')]=_0x20e40e['username']||'';this[_0xb179('0x2')]=_0x20e40e[_0xb179('0x2')]||'';this[_0xb179('0x3')]=_0x20e40e['authType']||'';this[_0xb179('0x4')]=_0x20e40e[_0xb179('0x4')]||'';this['consumerKey']=_0x20e40e['consumerKey']||'';this[_0xb179('0x5')]=_0x20e40e[_0xb179('0x5')]||'';this['token']=_0x20e40e['token']||'';this[_0xb179('0x6')]=_0x20e40e[_0xb179('0x6')]||'';this[_0xb179('0x7')]=_0x20e40e['type']||'';this['serverUrl']=_0x20e40e[_0xb179('0x8')]||'';this[_0xb179('0x9')]=_0x20e40e['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
index c961eda..b5dcc56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['Configurations','exports','username','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x20c47c,_0x443272){var _0x1cfcd7=function(_0x144ced){while(--_0x144ced){_0x20c47c['push'](_0x20c47c['shift']());}};_0x1cfcd7(++_0x443272);}(_0xf7b4,0x152));var _0x4f7b=function(_0x369bae,_0xaed164){_0x369bae=_0x369bae-0x0;var _0x585cb8=_0xf7b4[_0x369bae];return _0x585cb8;};'use strict';function Dynamics365Account(_0x4e182d){this['id']=_0x4e182d['id']||0x0;this['name']=_0x4e182d['name']||'';this[_0x4f7b('0x0')]=_0x4e182d[_0x4f7b('0x0')]||'';this['password']=_0x4e182d['password']||'';this[_0x4f7b('0x1')]=_0x4e182d[_0x4f7b('0x1')]||'';this[_0x4f7b('0x2')]=_0x4e182d[_0x4f7b('0x2')]||'';this[_0x4f7b('0x3')]=_0x4e182d[_0x4f7b('0x3')]||'';this[_0x4f7b('0x4')]=_0x4e182d[_0x4f7b('0x4')]||{};this[_0x4f7b('0x5')]=_0x4e182d[_0x4f7b('0x5')]||'';this[_0x4f7b('0x6')]=_0x4e182d[_0x4f7b('0x6')]||{};}module[_0x4f7b('0x7')]=Dynamics365Account;
\ No newline at end of file
+var _0x6f7a=['name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','exports'];(function(_0x21b36c,_0x543483){var _0x236627=function(_0x174f99){while(--_0x174f99){_0x21b36c['push'](_0x21b36c['shift']());}};_0x236627(++_0x543483);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x2adf1c,_0x224d5c){_0x2adf1c=_0x2adf1c-0x0;var _0x4154f5=_0x6f7a[_0x2adf1c];return _0x4154f5;};'use strict';function Dynamics365Account(_0x31411a){this['id']=_0x31411a['id']||0x0;this[_0xa6f7('0x0')]=_0x31411a[_0xa6f7('0x0')]||'';this[_0xa6f7('0x1')]=_0x31411a['username']||'';this[_0xa6f7('0x2')]=_0x31411a[_0xa6f7('0x2')]||'';this[_0xa6f7('0x3')]=_0x31411a[_0xa6f7('0x3')]||'';this[_0xa6f7('0x4')]=_0x31411a[_0xa6f7('0x4')]||'';this[_0xa6f7('0x5')]=_0x31411a[_0xa6f7('0x5')]||'';this[_0xa6f7('0x6')]=_0x31411a[_0xa6f7('0x6')]||{};this[_0xa6f7('0x7')]=_0x31411a['serverUrl']||'';this['Configurations']=_0x31411a[_0xa6f7('0x8')]||{};}module[_0xa6f7('0x9')]=Dynamics365Account;
\ No newline at end of file
index 9192334..ee4b334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4a2=['SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','t38timeout','tech'];(function(_0x8e29e2,_0x1bb7bf){var _0x23efa5=function(_0x21417b){while(--_0x21417b){_0x8e29e2['push'](_0x8e29e2['shift']());}};_0x23efa5(++_0x1bb7bf);}(_0xb4a2,0xf5));var _0x2b4a=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0xb4a2[_0x1b2ff7];return _0x31656a;};'use strict';function FaxAccount(_0x44df33){this['id']=_0x44df33['id']||0x0;this[_0x2b4a('0x0')]=_0x44df33[_0x2b4a('0x0')]||'';this[_0x2b4a('0x1')]=_0x44df33['description'];this[_0x2b4a('0x2')]=_0x44df33[_0x2b4a('0x2')];this[_0x2b4a('0x3')]=_0x44df33[_0x2b4a('0x3')];this[_0x2b4a('0x4')]=_0x44df33[_0x2b4a('0x4')];this[_0x2b4a('0x5')]=_0x44df33[_0x2b4a('0x5')]||0x960;this['maxrate']=_0x44df33[_0x2b4a('0x6')]||0x3840;this[_0x2b4a('0x7')]=_0x44df33[_0x2b4a('0x7')]||'v17,v27,v29';this[_0x2b4a('0x8')]=_0x44df33[_0x2b4a('0x8')]||'no';this['faxdetect']=_0x44df33['faxdetect']||'no';this[_0x2b4a('0x9')]=_0x44df33[_0x2b4a('0x9')]||0x1388;this['tech']=_0x44df33[_0x2b4a('0xa')]||_0x2b4a('0xb');this['Trunk']=_0x44df33['Trunk']?_0x44df33[_0x2b4a('0xc')]:undefined;this[_0x2b4a('0xd')]=_0x44df33['ListId'];this['key']=_0x44df33[_0x2b4a('0xe')];}module[_0x2b4a('0xf')]=FaxAccount;
\ No newline at end of file
+var _0xf6de=['exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','v17,v27,v29','gateway','t38timeout','tech','SIP','Trunk','ListId','key'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xf6de,0x91));var _0xef6d=function(_0x1a1b6e,_0x3a07a9){_0x1a1b6e=_0x1a1b6e-0x0;var _0x571e2c=_0xf6de[_0x1a1b6e];return _0x571e2c;};'use strict';function FaxAccount(_0x16e3eb){this['id']=_0x16e3eb['id']||0x0;this[_0xef6d('0x0')]=_0x16e3eb[_0xef6d('0x0')]||'';this[_0xef6d('0x1')]=_0x16e3eb[_0xef6d('0x1')];this[_0xef6d('0x2')]=_0x16e3eb[_0xef6d('0x2')];this[_0xef6d('0x3')]=_0x16e3eb[_0xef6d('0x3')];this[_0xef6d('0x4')]=_0x16e3eb[_0xef6d('0x4')];this[_0xef6d('0x5')]=_0x16e3eb['minrate']||0x960;this[_0xef6d('0x6')]=_0x16e3eb[_0xef6d('0x6')]||0x3840;this['modem']=_0x16e3eb['modem']||_0xef6d('0x7');this[_0xef6d('0x8')]=_0x16e3eb['gateway']||'no';this['faxdetect']=_0x16e3eb['faxdetect']||'no';this[_0xef6d('0x9')]=_0x16e3eb[_0xef6d('0x9')]||0x1388;this[_0xef6d('0xa')]=_0x16e3eb[_0xef6d('0xa')]||_0xef6d('0xb');this[_0xef6d('0xc')]=_0x16e3eb['Trunk']?_0x16e3eb[_0xef6d('0xc')]:undefined;this['ListId']=_0x16e3eb[_0xef6d('0xd')];this[_0xef6d('0xe')]=_0x16e3eb['key'];}module[_0xef6d('0xf')]=FaxAccount;
\ No newline at end of file
index 0ba8dfe..61c876c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20b=['username','apiKey','token','remoteUri','serverUrl','Configurations','name'];(function(_0x25f1ee,_0x553540){var _0x475d73=function(_0x384c3e){while(--_0x384c3e){_0x25f1ee['push'](_0x25f1ee['shift']());}};_0x475d73(++_0x553540);}(_0xe20b,0xd8));var _0xbe20=function(_0xf38e73,_0x46d3c0){_0xf38e73=_0xf38e73-0x0;var _0x1ef546=_0xe20b[_0xf38e73];return _0x1ef546;};'use strict';function FreshdeskAccount(_0x49f1f1){this['id']=_0x49f1f1['id']||0x0;this[_0xbe20('0x0')]=_0x49f1f1[_0xbe20('0x0')]||'';this[_0xbe20('0x1')]=_0x49f1f1[_0xbe20('0x1')]||'';this[_0xbe20('0x2')]=_0x49f1f1[_0xbe20('0x3')]||'';this[_0xbe20('0x4')]=_0x49f1f1['remoteUri']||'';this[_0xbe20('0x5')]=_0x49f1f1['serverUrl']||'';this[_0xbe20('0x6')]=_0x49f1f1[_0xbe20('0x6')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0x0c36=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x29e871,_0x330b98){var _0x3380e3=function(_0x26eeae){while(--_0x26eeae){_0x29e871['push'](_0x29e871['shift']());}};_0x3380e3(++_0x330b98);}(_0x0c36,0x189));var _0x60c3=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0x0c36[_0xd09668];return _0x68726;};'use strict';function FreshdeskAccount(_0xa33205){this['id']=_0xa33205['id']||0x0;this['name']=_0xa33205[_0x60c3('0x0')]||'';this[_0x60c3('0x1')]=_0xa33205[_0x60c3('0x1')]||'';this[_0x60c3('0x2')]=_0xa33205[_0x60c3('0x3')]||'';this[_0x60c3('0x4')]=_0xa33205[_0x60c3('0x4')]||'';this[_0x60c3('0x5')]=_0xa33205[_0x60c3('0x5')]||'';this[_0x60c3('0x6')]=_0xa33205[_0x60c3('0x6')]||{};}module[_0x60c3('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 1ca3bd2..7999fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['serverUrl','Configurations','exports','name','username','token','remoteUri'];(function(_0x115d5b,_0x26aff2){var _0x6cfc50=function(_0x39a786){while(--_0x39a786){_0x115d5b['push'](_0x115d5b['shift']());}};_0x6cfc50(++_0x26aff2);}(_0x6f47,0xc7));var _0x76f4=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x6f47[_0x243b2f];return _0xcb3c2d;};'use strict';function FreshsalesAccount(_0xd05ad8){this['id']=_0xd05ad8['id']||0x0;this[_0x76f4('0x0')]=_0xd05ad8[_0x76f4('0x0')]||'';this['username']=_0xd05ad8[_0x76f4('0x1')]||'';this['apiKey']=_0xd05ad8[_0x76f4('0x2')]||'';this['remoteUri']=_0xd05ad8[_0x76f4('0x3')]||'';this[_0x76f4('0x4')]=_0xd05ad8[_0x76f4('0x4')]||'';this[_0x76f4('0x5')]=_0xd05ad8['Configurations']||{};}module[_0x76f4('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0xd101=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd101,0xc1));var _0x1d10=function(_0x4ebc78,_0x4163c8){_0x4ebc78=_0x4ebc78-0x0;var _0x1849ff=_0xd101[_0x4ebc78];return _0x1849ff;};'use strict';function FreshsalesAccount(_0x34b53f){this['id']=_0x34b53f['id']||0x0;this['name']=_0x34b53f[_0x1d10('0x0')]||'';this[_0x1d10('0x1')]=_0x34b53f[_0x1d10('0x1')]||'';this[_0x1d10('0x2')]=_0x34b53f[_0x1d10('0x3')]||'';this[_0x1d10('0x4')]=_0x34b53f[_0x1d10('0x4')]||'';this[_0x1d10('0x5')]=_0x34b53f['serverUrl']||'';this[_0x1d10('0x6')]=_0x34b53f[_0x1d10('0x6')]||{};}module[_0x1d10('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 3643972..bf5474f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf258=['channel','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','variables','type','inbound','uniqueid','calleridname','queuecallerjoinAt','count','queuecallerabandon','queuecallerabandonAt','queuecallerexit','originalposition'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf258,0x172));var _0x8f25=function(_0x13200f,_0x20d155){_0x13200f=_0x13200f-0x0;var _0x6fe8bd=_0xf258[_0x13200f];return _0x6fe8bd;};'use strict';function QueueReport(){this[_0x8f25('0x0')]=_0x8f25('0x1');this[_0x8f25('0x2')]='';this['calleridnum']='';this[_0x8f25('0x3')]='';this['queue']='';this[_0x8f25('0x4')]=null;this['queuecallerleaveAt']=null;this['position']=0x1;this[_0x8f25('0x5')]=0x1;this[_0x8f25('0x6')]=![];this[_0x8f25('0x7')]=null;this['queuecallercomplete']=![];this['queuecallercompleteAt']=null;this[_0x8f25('0x8')]=![];this['queuecallerexitAt']=null;this[_0x8f25('0x9')]=0x1;this[_0x8f25('0xa')]='';this['connectedlinenum']='';this['connectedlinename']='';this[_0x8f25('0xb')]='';this[_0x8f25('0xc')]='';this[_0x8f25('0xd')]='';this[_0x8f25('0xe')]='';this[_0x8f25('0xf')]=0x0;this[_0x8f25('0x10')]=![];this[_0x8f25('0x11')]='';this[_0x8f25('0x12')]=0x0;this[_0x8f25('0x13')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x2b7f=['calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallerexit','queuecallerexitAt','connectedlinenum','connectedlinename','accountcode','context','priority','assigned','lastAssignedTo','motionChannel','mohtime','variables','exports','type','inbound','uniqueid'];(function(_0x2cc594,_0x4d727b){var _0x4abff7=function(_0x22b01d){while(--_0x22b01d){_0x2cc594['push'](_0x2cc594['shift']());}};_0x4abff7(++_0x4d727b);}(_0x2b7f,0x11b));var _0xf2b7=function(_0x1a536a,_0x1a962a){_0x1a536a=_0x1a536a-0x0;var _0xb7fae4=_0x2b7f[_0x1a536a];return _0xb7fae4;};'use strict';function QueueReport(){this[_0xf2b7('0x0')]=_0xf2b7('0x1');this[_0xf2b7('0x2')]='';this[_0xf2b7('0x3')]='';this[_0xf2b7('0x4')]='';this[_0xf2b7('0x5')]='';this[_0xf2b7('0x6')]=null;this[_0xf2b7('0x7')]=null;this[_0xf2b7('0x8')]=0x1;this[_0xf2b7('0x9')]=0x1;this[_0xf2b7('0xa')]=![];this[_0xf2b7('0xb')]=null;this[_0xf2b7('0xc')]=![];this['queuecallercompleteAt']=null;this[_0xf2b7('0xd')]=![];this[_0xf2b7('0xe')]=null;this['originalposition']=0x1;this['channel']='';this[_0xf2b7('0xf')]='';this[_0xf2b7('0x10')]='';this[_0xf2b7('0x11')]='';this[_0xf2b7('0x12')]='';this['exten']='';this[_0xf2b7('0x13')]='';this['holdtime']=0x0;this[_0xf2b7('0x14')]=![];this[_0xf2b7('0x15')]='';this[_0xf2b7('0x16')]='voice';this[_0xf2b7('0x17')]=0x0;this[_0xf2b7('0x18')]={};}module[_0xf2b7('0x19')]=QueueReport;
\ No newline at end of file
index b88565c..c763779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ba=['clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0xa5bc43,_0xadf135){var _0x18b8a0=function(_0x4892b8){while(--_0x4892b8){_0xa5bc43['push'](_0xa5bc43['shift']());}};_0x18b8a0(++_0xadf135);}(_0xb6ba,0x1f4));var _0xab6b=function(_0x1ac120,_0x3e7e45){_0x1ac120=_0x1ac120-0x0;var _0x19b703=_0xb6ba[_0x1ac120];return _0x19b703;};'use strict';function SalesforceAccount(_0x5e289d){this['id']=_0x5e289d['id']||0x0;this[_0xab6b('0x0')]=_0x5e289d['name']||'';this[_0xab6b('0x1')]=_0x5e289d[_0xab6b('0x1')]||'';this['remoteUri']=_0x5e289d[_0xab6b('0x2')]||'';this[_0xab6b('0x3')]=_0x5e289d['password']||'';this[_0xab6b('0x4')]=_0x5e289d[_0xab6b('0x4')]||'';this[_0xab6b('0x5')]=_0x5e289d[_0xab6b('0x5')]||'';this[_0xab6b('0x6')]=_0x5e289d[_0xab6b('0x6')]||'';this[_0xab6b('0x7')]=_0x5e289d[_0xab6b('0x7')]||_0xab6b('0x8');this[_0xab6b('0x9')]=_0x5e289d['serverUrl']||'';this[_0xab6b('0xa')]=_0x5e289d[_0xab6b('0xa')]||{};}module[_0xab6b('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x5a91=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x145e9e,_0x2e6dd4){var _0x2264c2=function(_0x57d209){while(--_0x57d209){_0x145e9e['push'](_0x145e9e['shift']());}};_0x2264c2(++_0x2e6dd4);}(_0x5a91,0xdc));var _0x15a9=function(_0x2e3a9a,_0x359c4f){_0x2e3a9a=_0x2e3a9a-0x0;var _0x106931=_0x5a91[_0x2e3a9a];return _0x106931;};'use strict';function SalesforceAccount(_0x1eace6){this['id']=_0x1eace6['id']||0x0;this[_0x15a9('0x0')]=_0x1eace6[_0x15a9('0x0')]||'';this[_0x15a9('0x1')]=_0x1eace6[_0x15a9('0x1')]||'';this[_0x15a9('0x2')]=_0x1eace6[_0x15a9('0x2')]||'';this['password']=_0x1eace6[_0x15a9('0x3')]||'';this['clientId']=_0x1eace6[_0x15a9('0x4')]||'';this[_0x15a9('0x5')]=_0x1eace6[_0x15a9('0x5')]||'';this[_0x15a9('0x6')]=_0x1eace6['securityToken']||'';this['type']=_0x1eace6[_0x15a9('0x7')]||_0x15a9('0x8');this[_0x15a9('0x9')]=_0x1eace6[_0x15a9('0x9')]||'';this[_0x15a9('0xa')]=_0x1eace6[_0x15a9('0xa')]||{};}module[_0x15a9('0xb')]=SalesforceAccount;
\ No newline at end of file
index 97f92ab..44b4e32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca6e=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x102310,_0x1fa1cd){var _0x46d9f2=function(_0x2d338b){while(--_0x2d338b){_0x102310['push'](_0x102310['shift']());}};_0x46d9f2(++_0x1fa1cd);}(_0xca6e,0x11f));var _0xeca6=function(_0x58b2c2,_0x2a152c){_0x58b2c2=_0x58b2c2-0x0;var _0x4049cd=_0xca6e[_0x58b2c2];return _0x4049cd;};'use strict';function ServicenowAccount(_0x2698f1){this['id']=_0x2698f1['id']||0x0;this[_0xeca6('0x0')]=_0x2698f1[_0xeca6('0x0')]||'';this['username']=_0x2698f1[_0xeca6('0x1')]||'';this[_0xeca6('0x2')]=_0x2698f1['password']||'';this[_0xeca6('0x3')]=_0x2698f1[_0xeca6('0x3')]||'';this[_0xeca6('0x4')]=_0x2698f1['serverUrl']||'';this['Configurations']=_0x2698f1[_0xeca6('0x5')]||{};}module[_0xeca6('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x58e7=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x375e07,_0x58015a){var _0x2381af=function(_0x4a8f20){while(--_0x4a8f20){_0x375e07['push'](_0x375e07['shift']());}};_0x2381af(++_0x58015a);}(_0x58e7,0xcf));var _0x758e=function(_0x305cf8,_0x21b069){_0x305cf8=_0x305cf8-0x0;var _0x453567=_0x58e7[_0x305cf8];return _0x453567;};'use strict';function ServicenowAccount(_0x39c7d0){this['id']=_0x39c7d0['id']||0x0;this[_0x758e('0x0')]=_0x39c7d0[_0x758e('0x0')]||'';this[_0x758e('0x1')]=_0x39c7d0[_0x758e('0x1')]||'';this[_0x758e('0x2')]=_0x39c7d0['password']||'';this[_0x758e('0x3')]=_0x39c7d0[_0x758e('0x3')]||'';this[_0x758e('0x4')]=_0x39c7d0[_0x758e('0x4')]||'';this[_0x758e('0x5')]=_0x39c7d0[_0x758e('0x5')]||{};}module[_0x758e('0x6')]=ServicenowAccount;
\ No newline at end of file
index fbe98af..500cdb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedad=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x8d1175,_0x598a2f){var _0x4e1d64=function(_0x49770d){while(--_0x49770d){_0x8d1175['push'](_0x8d1175['shift']());}};_0x4e1d64(++_0x598a2f);}(_0xedad,0x17e));var _0xdeda=function(_0x281e5e,_0xf320e2){_0x281e5e=_0x281e5e-0x0;var _0x5a22d2=_0xedad[_0x281e5e];return _0x5a22d2;};'use strict';function SugarcrmAccount(_0x22560f){this['id']=_0x22560f['id']||0x0;this[_0xdeda('0x0')]=_0x22560f[_0xdeda('0x0')]||'';this['username']=_0x22560f[_0xdeda('0x1')]||'';this[_0xdeda('0x2')]=_0x22560f[_0xdeda('0x2')]||'';this[_0xdeda('0x3')]=_0x22560f[_0xdeda('0x3')]||'';this[_0xdeda('0x4')]=_0x22560f['serverUrl']||'';this[_0xdeda('0x5')]=_0x22560f['Configurations']||{};}module[_0xdeda('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x1f5c=['serverUrl','Configurations','name','username','password','remoteUri'];(function(_0x46c318,_0x19fedd){var _0xb110d2=function(_0x901f90){while(--_0x901f90){_0x46c318['push'](_0x46c318['shift']());}};_0xb110d2(++_0x19fedd);}(_0x1f5c,0x15e));var _0xc1f5=function(_0x438c3c,_0x325370){_0x438c3c=_0x438c3c-0x0;var _0x812b78=_0x1f5c[_0x438c3c];return _0x812b78;};'use strict';function SugarcrmAccount(_0x26cd65){this['id']=_0x26cd65['id']||0x0;this[_0xc1f5('0x0')]=_0x26cd65[_0xc1f5('0x0')]||'';this[_0xc1f5('0x1')]=_0x26cd65[_0xc1f5('0x1')]||'';this[_0xc1f5('0x2')]=_0x26cd65[_0xc1f5('0x2')]||'';this[_0xc1f5('0x3')]=_0x26cd65[_0xc1f5('0x3')]||'';this[_0xc1f5('0x4')]=_0x26cd65['serverUrl']||'';this[_0xc1f5('0x5')]=_0x26cd65['Configurations']||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 6bc6b28..4ae6541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x823c=['exports','name','accountcode','state','unknown','stateTime','address'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x823c,0x143));var _0xc823=function(_0x2fac27,_0x1c9445){_0x2fac27=_0x2fac27-0x0;var _0xdf9092=_0x823c[_0x2fac27];return _0xdf9092;};'use strict';function Telephone(_0x1ab2d4){this['id']=_0x1ab2d4['id']||0x0;this['name']=_0x1ab2d4[_0xc823('0x0')]||'';this[_0xc823('0x1')]=_0x1ab2d4[_0xc823('0x1')]||'';this[_0xc823('0x2')]=_0xc823('0x3');this[_0xc823('0x4')]=0x0;this['status']=_0xc823('0x3');this[_0xc823('0x5')]='';}module[_0xc823('0x6')]=Telephone;
\ No newline at end of file
+var _0xf81a=['unknown','status','exports','name','accountcode','state'];(function(_0x422d04,_0x33c121){var _0x3a2b6d=function(_0x3966cc){while(--_0x3966cc){_0x422d04['push'](_0x422d04['shift']());}};_0x3a2b6d(++_0x33c121);}(_0xf81a,0x16b));var _0xaf81=function(_0x57c244,_0x1a1b60){_0x57c244=_0x57c244-0x0;var _0x10b73b=_0xf81a[_0x57c244];return _0x10b73b;};'use strict';function Telephone(_0x2a6172){this['id']=_0x2a6172['id']||0x0;this[_0xaf81('0x0')]=_0x2a6172[_0xaf81('0x0')]||'';this['accountcode']=_0x2a6172[_0xaf81('0x1')]||'';this[_0xaf81('0x2')]=_0xaf81('0x3');this['stateTime']=0x0;this[_0xaf81('0x4')]=_0xaf81('0x3');this['address']='';}module[_0xaf81('0x5')]=Telephone;
\ No newline at end of file
index a407e40..2afc7c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x1a87cc,_0x1319bf){var _0xc85566=function(_0x3b4833){while(--_0x3b4833){_0x1a87cc['push'](_0x1a87cc['shift']());}};_0xc85566(++_0x1319bf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x34308e,_0x5495d2){var _0x460584=function(_0x1f1681){while(--_0x1f1681){_0x34308e['push'](_0x34308e['shift']());}};_0x460584(++_0x5495d2);}(_0xb10b,0x12a));var _0xbb10=function(_0x455c6c,_0x1e78b7){_0x455c6c=_0x455c6c-0x0;var _0x488242=_0xb10b[_0x455c6c];return _0x488242;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index 961bf2c..ee33e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x396e89,_0xe27465){var _0x1271aa=function(_0x2ba80b){while(--_0x2ba80b){_0x396e89['push'](_0x396e89['shift']());}};_0x1271aa(++_0xe27465);}(_0xb10b,0x12a));var _0xbb10=function(_0x550839,_0xf664c){_0x550839=_0x550839-0x0;var _0x145c26=_0xb10b[_0x550839];return _0x145c26;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
+var _0x14a0=['voice','status','AnyConditions','Actions','name','channel'];(function(_0x39de6a,_0x3ad41c){var _0x1507e4=function(_0x90e3a6){while(--_0x90e3a6){_0x39de6a['push'](_0x39de6a['shift']());}};_0x1507e4(++_0x3ad41c);}(_0x14a0,0x8e));var _0x014a=function(_0x1ac167,_0xd58b65){_0x1ac167=_0x1ac167-0x0;var _0x516d0a=_0x14a0[_0x1ac167];return _0x516d0a;};'use strict';function Trigger(_0x1ee939){this['id']=_0x1ee939['id']||0x0;this[_0x014a('0x0')]=_0x1ee939[_0x014a('0x0')]||'';this[_0x014a('0x1')]=_0x1ee939[_0x014a('0x1')]||_0x014a('0x2');this[_0x014a('0x3')]=_0x1ee939[_0x014a('0x3')]||![];this['AllConditions']=_0x1ee939['AllConditions']||[];this[_0x014a('0x4')]=_0x1ee939[_0x014a('0x4')]||[];this[_0x014a('0x5')]=_0x1ee939['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index f2af125..ee20f36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc7=['stateRegistry','address','defaultuser','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','port','domain','domainport','refresh'];(function(_0xa1f935,_0x4d2968){var _0x322366=function(_0x5bf558){while(--_0x5bf558){_0xa1f935['push'](_0xa1f935['shift']());}};_0x322366(++_0x4d2968);}(_0x1dc7,0x179));var _0x71dc=function(_0x171001,_0x3b8abd){_0x171001=_0x171001-0x0;var _0x4d3af1=_0x1dc7[_0x171001];return _0x4d3af1;};'use strict';function Trunk(_0xc46c1){this['id']=_0xc46c1['id']||0x0;this['active']=_0xc46c1[_0x71dc('0x0')]||![];this['name']=_0xc46c1[_0x71dc('0x1')]||'';this[_0x71dc('0x2')]='unknown';this[_0x71dc('0x3')]=0x0;this[_0x71dc('0x4')]=_0x71dc('0x5');this[_0x71dc('0x6')]=_0xc46c1['registry']&&_0xc46c1['registry'][_0x71dc('0x7')](':')?_0xc46c1[_0x71dc('0x6')][_0x71dc('0x8')](':')[0x0]:'';this[_0x71dc('0x9')]='';this[_0x71dc('0xa')]='';this[_0x71dc('0xb')]='';this[_0x71dc('0xc')]='';this[_0x71dc('0xd')]='';this[_0x71dc('0xe')]=_0x71dc('0x5');this['registrationtime']='';this[_0x71dc('0xf')]='';this[_0x71dc('0x10')]=_0xc46c1['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x1df1=['domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','unknown','stateTime','status','registry','indexOf','split','host'];(function(_0x408a0b,_0x16b2a3){var _0x482d19=function(_0x53cfa0){while(--_0x53cfa0){_0x408a0b['push'](_0x408a0b['shift']());}};_0x482d19(++_0x16b2a3);}(_0x1df1,0x17e));var _0x11df=function(_0x455afc,_0x26b2ed){_0x455afc=_0x455afc-0x0;var _0x401857=_0x1df1[_0x455afc];return _0x401857;};'use strict';function Trunk(_0x1aafbf){this['id']=_0x1aafbf['id']||0x0;this['active']=_0x1aafbf[_0x11df('0x0')]||![];this[_0x11df('0x1')]=_0x1aafbf[_0x11df('0x1')]||'';this['state']=_0x11df('0x2');this[_0x11df('0x3')]=0x0;this[_0x11df('0x4')]=_0x11df('0x2');this[_0x11df('0x5')]=_0x1aafbf[_0x11df('0x5')]&&_0x1aafbf[_0x11df('0x5')][_0x11df('0x6')](':')?_0x1aafbf[_0x11df('0x5')][_0x11df('0x7')](':')[0x0]:'';this[_0x11df('0x8')]='';this['port']='';this[_0x11df('0x9')]='';this[_0x11df('0xa')]='';this[_0x11df('0xb')]='';this[_0x11df('0xc')]=_0x11df('0x2');this[_0x11df('0xd')]='';this[_0x11df('0xe')]='';this[_0x11df('0xf')]=_0x1aafbf[_0x11df('0xf')]||'';}module[_0x11df('0x10')]=Trunk;
\ No newline at end of file
index bcb2351..cbcbae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf28=['mandatoryDisposition','exten','recordingFormat','none'];(function(_0x55dbb1,_0x51d71a){var _0x34da2b=function(_0x465a4c){while(--_0x465a4c){_0x55dbb1['push'](_0x55dbb1['shift']());}};_0x34da2b(++_0x51d71a);}(_0xdf28,0xd5));var _0x8df2=function(_0x46f6c6,_0x5f337d){_0x46f6c6=_0x46f6c6-0x0;var _0x462bb8=_0xdf28[_0x46f6c6];return _0x462bb8;};'use strict';function voiceExtension(_0x4afe8c){this['id']=_0x4afe8c['id']||0x0;this[_0x8df2('0x0')]=_0x4afe8c[_0x8df2('0x0')]||'';this[_0x8df2('0x1')]=_0x4afe8c[_0x8df2('0x1')]||_0x8df2('0x2');this[_0x8df2('0x3')]=_0x4afe8c[_0x8df2('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x23c0=['mandatoryDisposition','exten','recordingFormat','none'];(function(_0x3365f3,_0xc46b59){var _0x1f328a=function(_0x4ab611){while(--_0x4ab611){_0x3365f3['push'](_0x3365f3['shift']());}};_0x1f328a(++_0xc46b59);}(_0x23c0,0x9d));var _0x023c=function(_0xabe1a,_0x600a74){_0xabe1a=_0xabe1a-0x0;var _0x165265=_0x23c0[_0xabe1a];return _0x165265;};'use strict';function voiceExtension(_0x3ce85e){this['id']=_0x3ce85e['id']||0x0;this[_0x023c('0x0')]=_0x3ce85e[_0x023c('0x0')]||'';this['recordingFormat']=_0x3ce85e[_0x023c('0x1')]||_0x023c('0x2');this[_0x023c('0x3')]=_0x3ce85e[_0x023c('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
index aaf07d1..a891251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc080=['unknown','not_inuse','invalid','unavailable','onhold','wav','wav49','gsm','name','monitor_format','inbound','waiting','talking','total','answered','sumDuration','sumBillable','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports'];(function(_0x4a209a,_0x575ff9){var _0x4b3c20=function(_0x1a50c1){while(--_0x1a50c1){_0x4a209a['push'](_0x4a209a['shift']());}};_0x4b3c20(++_0x575ff9);}(_0xc080,0x16b));var _0x0c08=function(_0x392a14,_0x341fb3){_0x392a14=_0x392a14-0x0;var _0x2209f6=_0xc080[_0x392a14];return _0x2209f6;};'use strict';var statusDesc=[_0x0c08('0x0'),_0x0c08('0x1'),'inuse','busy',_0x0c08('0x2'),_0x0c08('0x3'),'ringing','ringinuse',_0x0c08('0x4')];var monitorFormat={'wav':_0x0c08('0x5'),'wav49':_0x0c08('0x6'),'gsm':_0x0c08('0x7')};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0x2be87f){this['id']=_0x2be87f['id']||0x0;this[_0x0c08('0x8')]=_0x2be87f[_0x0c08('0x8')]||'';this[_0x0c08('0x9')]=_0x2be87f[_0x0c08('0x9')]||'';this['type']=_0x2be87f['type']||_0x0c08('0xa');this[_0x0c08('0xb')]=0x0;this[_0x0c08('0xc')]=0x0;this[_0x0c08('0xd')]=0x0;this[_0x0c08('0xe')]=0x0;this[_0x0c08('0xf')]=0x0;this['sumHoldTime']=0x0;this[_0x0c08('0x10')]=0x0;this['unmanaged']=0x0;this[_0x0c08('0x11')]=0x0;this[_0x0c08('0x12')]=0x0;this[_0x0c08('0x13')]=0x0;this[_0x0c08('0x14')]=_0x2be87f[_0x0c08('0x14')]||![];this[_0x0c08('0x15')]=_0x2be87f[_0x0c08('0x15')]||0xa;this[_0x0c08('0x16')]=_0x2be87f[_0x0c08('0x16')]||'no';this[_0x0c08('0x17')]=!![];this['message']='';this[_0x0c08('0x18')]=0x0;this[_0x0c08('0x19')]=0x0;this[_0x0c08('0x1a')]=_0x2be87f[_0x0c08('0x1a')]||null;this[_0x0c08('0x1b')]=_0x2be87f[_0x0c08('0x1b')]?_0x2be87f[_0x0c08('0x1b')]:null;this[_0x0c08('0x1c')]=_0x2be87f[_0x0c08('0x1c')];this[_0x0c08('0x1d')]=_0x2be87f[_0x0c08('0x1d')]||'progressive';this[_0x0c08('0x1e')]=_0x2be87f[_0x0c08('0x1e')]||0x0;this[_0x0c08('0x1f')]=_0x2be87f[_0x0c08('0x1f')]||0x0;this[_0x0c08('0x20')]=_0x2be87f[_0x0c08('0x20')]||0x1;this[_0x0c08('0x21')]=_0x2be87f['dialPredictiveOptimization']||_0x0c08('0x22');this['dialPredictiveOptimizationPercentage']=_0x2be87f[_0x0c08('0x23')]||0.03;this[_0x0c08('0x24')]=_0x2be87f['dialPredictiveInterval']||0x258;this[_0x0c08('0x25')]=_0x2be87f[_0x0c08('0x25')]||'anonymous';this[_0x0c08('0x26')]=_0x2be87f[_0x0c08('0x26')]||_0x0c08('0x27');this['dialOriginateTimeout']=_0x2be87f[_0x0c08('0x28')]||0x1e;this[_0x0c08('0x29')]=_0x2be87f['dialQueueOptions']||_0x0c08('0x2a');this[_0x0c08('0x2b')]=_0x2be87f['dialQueueTimeout']||0x3;this[_0x0c08('0x2c')]=_0x2be87f[_0x0c08('0x2c')]||undefined;this[_0x0c08('0x2d')]=_0x2be87f[_0x0c08('0x2d')]||0x3;this[_0x0c08('0x2e')]=_0x2be87f[_0x0c08('0x2e')]||0x96;this[_0x0c08('0x2f')]=_0x2be87f[_0x0c08('0x2f')]||0x3;this[_0x0c08('0x30')]=_0x2be87f[_0x0c08('0x30')]||0x96;this[_0x0c08('0x31')]=_0x2be87f[_0x0c08('0x31')]||0x3;this[_0x0c08('0x32')]=_0x2be87f[_0x0c08('0x32')]||0x96;this[_0x0c08('0x33')]=_0x2be87f[_0x0c08('0x33')]||0x3;this[_0x0c08('0x34')]=_0x2be87f['dialNoSuchNumberRetryFrequency']||0x96;this['dialDropMaxRetry']=_0x2be87f['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x2be87f[_0x0c08('0x35')]||0x96;this['dialAbandonedMaxRetry']=_0x2be87f[_0x0c08('0x36')]||0x3;this[_0x0c08('0x37')]=_0x2be87f[_0x0c08('0x37')]||0x96;this['dialMachineMaxRetry']=_0x2be87f['dialMachineMaxRetry']||0x3;this[_0x0c08('0x38')]=_0x2be87f['dialMachineRetryFrequency']||0x96;this[_0x0c08('0x39')]=_0x2be87f[_0x0c08('0x39')]||0x3;this[_0x0c08('0x3a')]=_0x2be87f['dialAgentRejectRetryFrequency']||0x96;this[_0x0c08('0x3b')]=_0x2be87f[_0x0c08('0x3b')]||0x4;this[_0x0c08('0x3c')]=_0x2be87f[_0x0c08('0x3c')]?_0x2be87f[_0x0c08('0x3c')]:undefined;this[_0x0c08('0x3d')]=_0x2be87f[_0x0c08('0x3d')]?_0x2be87f[_0x0c08('0x3d')]:undefined;this[_0x0c08('0x3e')]=_0x2be87f[_0x0c08('0x3e')]||undefined;this['Interval']=_0x2be87f['Interval']?_0x2be87f[_0x0c08('0x3f')]:undefined;this[_0x0c08('0x40')]=_0x2be87f[_0x0c08('0x40')]||'DESC';this[_0x0c08('0x41')]=_0x2be87f[_0x0c08('0x41')]||undefined;this[_0x0c08('0x42')]=_0x2be87f[_0x0c08('0x42')]||undefined;this[_0x0c08('0x43')]=strategy[_0x2be87f[_0x0c08('0x43')]]||'rrmemory';this[_0x0c08('0x44')]=!![];this[_0x0c08('0x45')]=_0x2be87f['dialAMDActive']||![];this[_0x0c08('0x46')]=_0x2be87f['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x2be87f['dialAMDGreeting'];this[_0x0c08('0x47')]=_0x2be87f[_0x0c08('0x47')];this[_0x0c08('0x48')]=_0x2be87f['dialAMDTotalAnalysisTime'];this[_0x0c08('0x49')]=_0x2be87f[_0x0c08('0x49')];this['dialAMDBetweenWordsSilence']=_0x2be87f[_0x0c08('0x4a')];this[_0x0c08('0x4b')]=_0x2be87f[_0x0c08('0x4b')];this[_0x0c08('0x4c')]=_0x2be87f[_0x0c08('0x4c')];this[_0x0c08('0x4d')]=_0x2be87f[_0x0c08('0x4d')];this[_0x0c08('0x4e')]=0x0;this[_0x0c08('0x4f')]=0x0;this[_0x0c08('0x50')]=_0x2be87f[_0x0c08('0x50')];this[_0x0c08('0x51')]=0x0;this[_0x0c08('0x52')]=0x0;this[_0x0c08('0x53')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0x0c08('0x54')]=0x0;this[_0x0c08('0x55')]=0x0;this[_0x0c08('0x56')]=0x0;this[_0x0c08('0x57')]=0x0;this[_0x0c08('0x58')]=0x0;this[_0x0c08('0x59')]=0x0;this[_0x0c08('0x5a')]=0x0;this[_0x0c08('0x5b')]=0x0;this[_0x0c08('0x5c')]=0x0;this[_0x0c08('0x5d')]=0x0;this[_0x0c08('0x5e')]=undefined;this['startPredictive']=undefined;this[_0x0c08('0x5f')]=undefined;this[_0x0c08('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x0c08('0x61')]=0x0;this[_0x0c08('0x62')]=0x0;this[_0x0c08('0x63')]=0x0;this[_0x0c08('0x64')]=0x0;this[_0x0c08('0x65')]=0x0;this[_0x0c08('0x66')]=0x0;this[_0x0c08('0x67')]=0x0;this[_0x0c08('0x68')]=_0x2be87f[_0x0c08('0x69')]||0x14;this[_0x0c08('0x6a')]=_0x2be87f['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x0c08('0x6b')]=0x0;this[_0x0c08('0x6c')]=0x0;this[_0x0c08('0x6d')]=0x1;this['erlangCalls']=0x0;this[_0x0c08('0x6e')]=0x0;this[_0x0c08('0x6f')]=0x0;this[_0x0c08('0x70')]=0x0;this[_0x0c08('0x71')]=_0x2be87f[_0x0c08('0x71')]||0x1e;this[_0x0c08('0x72')]=_0x2be87f[_0x0c08('0x72')]||![];this[_0x0c08('0x73')]=_0x2be87f['dialQueueProject2']||undefined;this[_0x0c08('0x74')]=_0x2be87f['dialAgiAfterHangupClient']||![];this[_0x0c08('0x75')]=_0x2be87f[_0x0c08('0x75')]||![];this[_0x0c08('0x9')]=monitorFormat[_0x2be87f[_0x0c08('0x9')]]?monitorFormat[_0x2be87f['monitor_format']]:undefined;this[_0x0c08('0x76')]=_0x2be87f[_0x0c08('0x76')]||![];this[_0x0c08('0x77')]=_0x2be87f[_0x0c08('0x77')]?_0x2be87f[_0x0c08('0x77')]:undefined;}module[_0x0c08('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0x5f01=['dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','sumHoldTime','sumBillable','abandoned','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup'];(function(_0x487a4e,_0x5ea6c9){var _0x43dc2e=function(_0x5bd8c0){while(--_0x5bd8c0){_0x487a4e['push'](_0x487a4e['shift']());}};_0x43dc2e(++_0x5ea6c9);}(_0x5f01,0x19c));var _0x15f0=function(_0x36ee31,_0x5ce576){_0x36ee31=_0x36ee31-0x0;var _0x12cb01=_0x5f01[_0x36ee31];return _0x12cb01;};'use strict';var statusDesc=['unknown',_0x15f0('0x0'),_0x15f0('0x1'),_0x15f0('0x2'),_0x15f0('0x3'),_0x15f0('0x4'),_0x15f0('0x5'),_0x15f0('0x6'),_0x15f0('0x7')];var monitorFormat={'wav':_0x15f0('0x8'),'wav49':'wav49','gsm':_0x15f0('0x9')};var strategy={'rrmemory':_0x15f0('0xa'),'roundrobin':_0x15f0('0xb')};function VoiceQueue(_0x14bfe6){this['id']=_0x14bfe6['id']||0x0;this[_0x15f0('0xc')]=_0x14bfe6[_0x15f0('0xc')]||'';this[_0x15f0('0xd')]=_0x14bfe6[_0x15f0('0xd')]||'';this[_0x15f0('0xe')]=_0x14bfe6[_0x15f0('0xe')]||_0x15f0('0xf');this[_0x15f0('0x10')]=0x0;this[_0x15f0('0x11')]=0x0;this['total']=0x0;this['answered']=0x0;this['sumDuration']=0x0;this[_0x15f0('0x12')]=0x0;this[_0x15f0('0x13')]=0x0;this['unmanaged']=0x0;this[_0x15f0('0x14')]=0x0;this[_0x15f0('0x15')]=0x0;this['available']=0x0;this[_0x15f0('0x16')]=_0x14bfe6['acw']||![];this['acwTimeout']=_0x14bfe6[_0x15f0('0x17')]||0xa;this['autopause']=_0x14bfe6[_0x15f0('0x18')]||'no';this[_0x15f0('0x19')]=!![];this[_0x15f0('0x1a')]='';this[_0x15f0('0x1b')]=0x0;this[_0x15f0('0x1c')]=0x0;this['dialTimezone']=_0x14bfe6[_0x15f0('0x1d')]||null;this[_0x15f0('0x1e')]=_0x14bfe6[_0x15f0('0x1e')]?_0x14bfe6['dialGlobalInterval']:null;this[_0x15f0('0x1f')]=_0x14bfe6[_0x15f0('0x1f')];this[_0x15f0('0x20')]=_0x14bfe6[_0x15f0('0x20')]||'progressive';this['dialLimitChannel']=_0x14bfe6['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x14bfe6['dialLimitQueue']||0x0;this[_0x15f0('0x21')]=_0x14bfe6[_0x15f0('0x21')]||0x1;this[_0x15f0('0x22')]=_0x14bfe6['dialPredictiveOptimization']||_0x15f0('0x23');this[_0x15f0('0x24')]=_0x14bfe6[_0x15f0('0x24')]||0.03;this[_0x15f0('0x25')]=_0x14bfe6['dialPredictiveInterval']||0x258;this[_0x15f0('0x26')]=_0x14bfe6['dialOriginateCallerIdName']||_0x15f0('0x27');this['dialOriginateCallerIdNumber']=_0x14bfe6['dialOriginateCallerIdNumber']||'anonymous';this[_0x15f0('0x28')]=_0x14bfe6[_0x15f0('0x28')]||0x1e;this['dialQueueOptions']=_0x14bfe6[_0x15f0('0x29')]||_0x15f0('0x2a');this['dialQueueTimeout']=_0x14bfe6[_0x15f0('0x2b')]||0x3;this[_0x15f0('0x2c')]=_0x14bfe6[_0x15f0('0x2c')]||undefined;this[_0x15f0('0x2d')]=_0x14bfe6[_0x15f0('0x2d')]||0x3;this[_0x15f0('0x2e')]=_0x14bfe6[_0x15f0('0x2e')]||0x96;this['dialBusyMaxRetry']=_0x14bfe6[_0x15f0('0x2f')]||0x3;this[_0x15f0('0x30')]=_0x14bfe6[_0x15f0('0x30')]||0x96;this[_0x15f0('0x31')]=_0x14bfe6[_0x15f0('0x31')]||0x3;this[_0x15f0('0x32')]=_0x14bfe6[_0x15f0('0x32')]||0x96;this[_0x15f0('0x33')]=_0x14bfe6[_0x15f0('0x33')]||0x3;this[_0x15f0('0x34')]=_0x14bfe6[_0x15f0('0x34')]||0x96;this[_0x15f0('0x35')]=_0x14bfe6[_0x15f0('0x35')]||0x3;this[_0x15f0('0x36')]=_0x14bfe6[_0x15f0('0x36')]||0x96;this[_0x15f0('0x37')]=_0x14bfe6[_0x15f0('0x37')]||0x3;this[_0x15f0('0x38')]=_0x14bfe6[_0x15f0('0x38')]||0x96;this['dialMachineMaxRetry']=_0x14bfe6[_0x15f0('0x39')]||0x3;this[_0x15f0('0x3a')]=_0x14bfe6[_0x15f0('0x3a')]||0x96;this[_0x15f0('0x3b')]=_0x14bfe6[_0x15f0('0x3b')]||0x3;this['dialAgentRejectRetryFrequency']=_0x14bfe6[_0x15f0('0x3c')]||0x96;this[_0x15f0('0x3d')]=_0x14bfe6[_0x15f0('0x3d')]||0x4;this[_0x15f0('0x3e')]=_0x14bfe6[_0x15f0('0x3e')]?_0x14bfe6[_0x15f0('0x3e')]:undefined;this[_0x15f0('0x3f')]=_0x14bfe6[_0x15f0('0x3f')]?_0x14bfe6[_0x15f0('0x3f')]:undefined;this[_0x15f0('0x40')]=_0x14bfe6[_0x15f0('0x40')]||undefined;this['Interval']=_0x14bfe6[_0x15f0('0x41')]?_0x14bfe6[_0x15f0('0x41')]:undefined;this[_0x15f0('0x42')]=_0x14bfe6[_0x15f0('0x42')]||_0x15f0('0x43');this['dialRandomLastDigitCallerIdNumber']=_0x14bfe6[_0x15f0('0x44')]||undefined;this[_0x15f0('0x45')]=_0x14bfe6[_0x15f0('0x45')]||undefined;this[_0x15f0('0x46')]=strategy[_0x14bfe6['strategy']]||_0x15f0('0xa');this[_0x15f0('0x47')]=!![];this[_0x15f0('0x48')]=_0x14bfe6[_0x15f0('0x48')]||![];this['dialAMDInitialSilence']=_0x14bfe6[_0x15f0('0x49')];this['dialAMDGreeting']=_0x14bfe6[_0x15f0('0x4a')];this['dialAMDAfterGreetingSilence']=_0x14bfe6[_0x15f0('0x4b')];this[_0x15f0('0x4c')]=_0x14bfe6[_0x15f0('0x4c')];this['dialAMDMinWordLength']=_0x14bfe6[_0x15f0('0x4d')];this[_0x15f0('0x4e')]=_0x14bfe6[_0x15f0('0x4e')];this[_0x15f0('0x4f')]=_0x14bfe6[_0x15f0('0x4f')];this[_0x15f0('0x50')]=_0x14bfe6[_0x15f0('0x50')];this[_0x15f0('0x51')]=_0x14bfe6['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this[_0x15f0('0x52')]=0x0;this[_0x15f0('0x53')]=_0x14bfe6['timeout'];this[_0x15f0('0x54')]=0x0;this[_0x15f0('0x55')]=0x0;this[_0x15f0('0x56')]=0x0;this[_0x15f0('0x57')]=0x0;this[_0x15f0('0x58')]=0x0;this['outboundNoSuchCallsDay']=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x15f0('0x59')]=0x0;this[_0x15f0('0x5a')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0x15f0('0x5b')]=0x0;this[_0x15f0('0x5c')]=0x0;this[_0x15f0('0x5d')]=0x0;this[_0x15f0('0x5e')]=0x0;this[_0x15f0('0x5f')]=undefined;this[_0x15f0('0x60')]=undefined;this['handlePredictive']=undefined;this[_0x15f0('0x61')]=1.05;this[_0x15f0('0x62')]=0x0;this[_0x15f0('0x63')]=0x0;this[_0x15f0('0x64')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x15f0('0x65')]=0x0;this[_0x15f0('0x66')]=0x0;this[_0x15f0('0x67')]=0x0;this[_0x15f0('0x68')]=0x0;this['predictiveIntervalMaxThreshold']=_0x14bfe6['dialPredictiveIntervalMaxThreshold']||0x14;this['predictiveIntervalMinThreshold']=_0x14bfe6[_0x15f0('0x69')]||0xa;this[_0x15f0('0x6a')]=0x0;this[_0x15f0('0x6b')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x15f0('0x6c')]=0x0;this['erlangCallToSecond']=0x0;this[_0x15f0('0x6d')]=0x0;this[_0x15f0('0x6e')]=0x0;this[_0x15f0('0x6f')]=_0x14bfe6[_0x15f0('0x6f')]||0x1e;this[_0x15f0('0x70')]=_0x14bfe6['dialRecallInQueue']||![];this['dialQueueProject2']=_0x14bfe6[_0x15f0('0x71')]||undefined;this[_0x15f0('0x72')]=_0x14bfe6[_0x15f0('0x72')]||![];this['dialAgiAfterHangupAgent']=_0x14bfe6[_0x15f0('0x73')]||![];this[_0x15f0('0xd')]=monitorFormat[_0x14bfe6[_0x15f0('0xd')]]?monitorFormat[_0x14bfe6[_0x15f0('0xd')]]:undefined;this[_0x15f0('0x74')]=_0x14bfe6[_0x15f0('0x74')]||![];this[_0x15f0('0x75')]=_0x14bfe6[_0x15f0('0x75')]?_0x14bfe6[_0x15f0('0x75')]:undefined;}module[_0x15f0('0x76')]=VoiceQueue;
\ No newline at end of file
index 2d70cc4..b5f5340 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b0d=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b0d,0x72));var _0xd7b0=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x7b0d[_0x4154a6];return _0x3b2786;};'use strict';function VtigerAccount(_0x1d9952){this['id']=_0x1d9952['id']||0x0;this[_0xd7b0('0x0')]=_0x1d9952['name']||'';this['username']=_0x1d9952[_0xd7b0('0x1')]||'';this['accessKey']=_0x1d9952[_0xd7b0('0x2')]||'';this['remoteUri']=_0x1d9952[_0xd7b0('0x3')]||'';this[_0xd7b0('0x4')]=_0x1d9952[_0xd7b0('0x4')]||'';this[_0xd7b0('0x5')]=_0x1d9952[_0xd7b0('0x5')]||{};}module[_0xd7b0('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x9375=['serverUrl','Configurations','name','username','accessKey','remoteUri'];(function(_0x27b0c4,_0xaf6d02){var _0xcb87b2=function(_0x2bd20f){while(--_0x2bd20f){_0x27b0c4['push'](_0x27b0c4['shift']());}};_0xcb87b2(++_0xaf6d02);}(_0x9375,0xf8));var _0x5937=function(_0x5aef17,_0x592cd4){_0x5aef17=_0x5aef17-0x0;var _0x43f9d0=_0x9375[_0x5aef17];return _0x43f9d0;};'use strict';function VtigerAccount(_0x2a7b01){this['id']=_0x2a7b01['id']||0x0;this['name']=_0x2a7b01[_0x5937('0x0')]||'';this[_0x5937('0x1')]=_0x2a7b01[_0x5937('0x1')]||'';this[_0x5937('0x2')]=_0x2a7b01[_0x5937('0x2')]||'';this[_0x5937('0x3')]=_0x2a7b01['remoteUri']||'';this[_0x5937('0x4')]=_0x2a7b01[_0x5937('0x4')]||'';this[_0x5937('0x5')]=_0x2a7b01[_0x5937('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index c1e7b66..c311bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b81=['integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType'];(function(_0x3806f0,_0x3c2f41){var _0x4d915a=function(_0x347ad5){while(--_0x347ad5){_0x3806f0['push'](_0x3806f0['shift']());}};_0x4d915a(++_0x3c2f41);}(_0x6b81,0x86));var _0x16b8=function(_0x549664,_0x3eda87){_0x549664=_0x549664-0x0;var _0x48a125=_0x6b81[_0x549664];return _0x48a125;};'use strict';function ZendeskAccount(_0x3f3de3){this['id']=_0x3f3de3['id']||0x0;this['name']=_0x3f3de3[_0x16b8('0x0')]||'';this['username']=_0x3f3de3[_0x16b8('0x1')]||'';this[_0x16b8('0x2')]=_0x3f3de3[_0x16b8('0x2')]||'';this[_0x16b8('0x3')]=_0x3f3de3[_0x16b8('0x3')]||'';this[_0x16b8('0x4')]=_0x3f3de3[_0x16b8('0x4')]||'';this[_0x16b8('0x5')]=_0x3f3de3[_0x16b8('0x5')]||'';this['type']=_0x3f3de3['type']||_0x16b8('0x6');this[_0x16b8('0x7')]=_0x3f3de3[_0x16b8('0x7')]||'';this['Configurations']=_0x3f3de3[_0x16b8('0x8')]||{};}module[_0x16b8('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x179d=['name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x1b4f2e,_0xaf2b8f){var _0x3a483d=function(_0xdf3113){while(--_0xdf3113){_0x1b4f2e['push'](_0x1b4f2e['shift']());}};_0x3a483d(++_0xaf2b8f);}(_0x179d,0x134));var _0xd179=function(_0x4d4aa7,_0x3e9610){_0x4d4aa7=_0x4d4aa7-0x0;var _0x4d4df9=_0x179d[_0x4d4aa7];return _0x4d4df9;};'use strict';function ZendeskAccount(_0xf797f5){this['id']=_0xf797f5['id']||0x0;this[_0xd179('0x0')]=_0xf797f5['name']||'';this[_0xd179('0x1')]=_0xf797f5[_0xd179('0x1')]||'';this[_0xd179('0x2')]=_0xf797f5[_0xd179('0x2')]||'';this[_0xd179('0x3')]=_0xf797f5['token']||'';this['remoteUri']=_0xf797f5[_0xd179('0x4')]||'';this['authType']=_0xf797f5[_0xd179('0x5')]||'';this['type']=_0xf797f5[_0xd179('0x6')]||_0xd179('0x7');this[_0xd179('0x8')]=_0xf797f5[_0xd179('0x8')]||'';this[_0xd179('0x9')]=_0xf797f5[_0xd179('0x9')]||{};}module[_0xd179('0xa')]=ZendeskAccount;
\ No newline at end of file
index 9dfc47e..1d0685e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8bc=['code','refreshToken','Configurations','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0x498d83,_0x4d7bb5){var _0x5632a4=function(_0x5ec08b){while(--_0x5ec08b){_0x498d83['push'](_0x498d83['shift']());}};_0x5632a4(++_0x4d7bb5);}(_0xf8bc,0x1a1));var _0xcf8b=function(_0x409fb8,_0x5ab3d3){_0x409fb8=_0x409fb8-0x0;var _0x278270=_0xf8bc[_0x409fb8];return _0x278270;};'use strict';function ZohoAccount(_0x2e228a){this['id']=_0x2e228a['id']||0x0;this['name']=_0x2e228a['name']||'';this[_0xcf8b('0x0')]=_0x2e228a[_0xcf8b('0x0')]||'';this[_0xcf8b('0x1')]=_0x2e228a[_0xcf8b('0x1')]||'';this['zone']=_0x2e228a[_0xcf8b('0x2')]||'';this[_0xcf8b('0x3')]=_0x2e228a[_0xcf8b('0x3')]||'';this[_0xcf8b('0x4')]=_0x2e228a[_0xcf8b('0x4')]||'';this[_0xcf8b('0x5')]=_0x2e228a['serverUrl']||'';this['code']=_0x2e228a[_0xcf8b('0x6')]||'';this[_0xcf8b('0x7')]=_0x2e228a[_0xcf8b('0x7')]||'';this['Configurations']=_0x2e228a[_0xcf8b('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x4d34=['refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret','code'];(function(_0x55116f,_0x43b2ec){var _0x1cf516=function(_0x1e577f){while(--_0x1e577f){_0x55116f['push'](_0x55116f['shift']());}};_0x1cf516(++_0x43b2ec);}(_0x4d34,0x139));var _0x44d3=function(_0x4f8b85,_0x29dd35){_0x4f8b85=_0x4f8b85-0x0;var _0x42c0bb=_0x4d34[_0x4f8b85];return _0x42c0bb;};'use strict';function ZohoAccount(_0x46a370){this['id']=_0x46a370['id']||0x0;this['name']=_0x46a370[_0x44d3('0x0')]||'';this[_0x44d3('0x1')]=_0x46a370[_0x44d3('0x1')]||'';this[_0x44d3('0x2')]=_0x46a370[_0x44d3('0x2')]||'';this[_0x44d3('0x3')]=_0x46a370[_0x44d3('0x3')]||'';this['clientId']=_0x46a370[_0x44d3('0x4')]||'';this['clientSecret']=_0x46a370[_0x44d3('0x5')]||'';this['serverUrl']=_0x46a370['serverUrl']||'';this[_0x44d3('0x6')]=_0x46a370[_0x44d3('0x6')]||'';this[_0x44d3('0x7')]=_0x46a370['refreshToken']||'';this['Configurations']=_0x46a370[_0x44d3('0x8')]||{};}module[_0x44d3('0x9')]=ZohoAccount;
\ No newline at end of file
index 30afc81..268d5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0a7=['countnoanswerretry','countglobal','countdropretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry','countmachineretry','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','number','exports','util','isNil','string','uniqueid','idContact','queue','type','dialAnswer','membername','Agent','name','channelAgent','calleridname','Contact','phone','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry'];(function(_0x1c9063,_0x27ce15){var _0x42687c=function(_0x5990d4){while(--_0x5990d4){_0x1c9063['push'](_0x1c9063['shift']());}};_0x42687c(++_0x27ce15);}(_0xf0a7,0xbd));var _0x7f0a=function(_0x3cbcfa,_0x3af16b){_0x3cbcfa=_0x3cbcfa-0x0;var _0x546d83=_0xf0a7[_0x3cbcfa];return _0x546d83;};'use strict';var util=require(_0x7f0a('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x1fa3fe,_0x5972bf,_0x1c1ec0){var _0x4c9488='';if(!_[_0x7f0a('0x1')](_0x5972bf)&&_0x7f0a('0x2')===typeof _0x5972bf){_0x4c9488+=_0x5972bf;}if(!_[_0x7f0a('0x1')](_0x1c1ec0)&&'string'===typeof _0x1c1ec0){_0x4c9488+='\x20'+_0x1c1ec0;}if(_0x4c9488!==''){return _0x4c9488;}return _0x1fa3fe;}function Action(_0x588d72,_0x51bf5f,_0x211513,_0x12c7d9,_0x1d53e6){this[_0x7f0a('0x3')]=_0x211513||undefined;this[_0x7f0a('0x4')]=_0x588d72['id'];this[_0x7f0a('0x5')]=_0x51bf5f['name'];this[_0x7f0a('0x6')]=_0x51bf5f['type'];this['campaigntype']=_0x7f0a('0x5');this[_0x7f0a('0x7')]=![];this[_0x7f0a('0x8')]=_[_0x7f0a('0x1')](_0x588d72[_0x7f0a('0x9')])?undefined:_0x588d72[_0x7f0a('0x9')][_0x7f0a('0xa')];this[_0x7f0a('0xb')]=this['membername']?util['format']('SIP/%s',this['membername']):_0x12c7d9||undefined;this[_0x7f0a('0xc')]=checkNameSurname(_0x588d72[_0x7f0a('0xd')][_0x7f0a('0xe')],_0x588d72[_0x7f0a('0xd')]['firstName'],_0x588d72['Contact'][_0x7f0a('0xf')]);this[_0x7f0a('0x10')]=_0x588d72[_0x7f0a('0x10')]||![];this[_0x7f0a('0x11')]=_0x588d72[_0x7f0a('0xd')][_0x7f0a('0xe')];this[_0x7f0a('0x12')]=_0x588d72['scheduledat'];this[_0x7f0a('0x13')]=_0x588d72['countbusyretry']||0x0;this[_0x7f0a('0x14')]=_0x588d72[_0x7f0a('0x14')]||0x0;this[_0x7f0a('0x15')]=_0x588d72['countnoanswerretry']||0x0;this[_0x7f0a('0x16')]=(_0x588d72[_0x7f0a('0x13')]||0x0)+(_0x588d72[_0x7f0a('0x14')]||0x0)+(_0x588d72['countnoanswerretry']||0x0)+(_0x588d72['countnosuchnumberretry']||0x0)+(_0x588d72[_0x7f0a('0x17')]||0x0)+(_0x588d72[_0x7f0a('0x18')]||0x0)+(_0x588d72['countmachineretry']||0x0)+(_0x588d72[_0x7f0a('0x19')]||0x0);this[_0x7f0a('0x1a')]=_0x588d72['countnosuchnumberretry']||0x0;this['countdropretry']=_0x588d72[_0x7f0a('0x17')]||0x0;this[_0x7f0a('0x18')]=_0x588d72[_0x7f0a('0x18')]||0x0;this[_0x7f0a('0x1b')]=_0x588d72[_0x7f0a('0x1b')]||0x0;this[_0x7f0a('0x19')]=_0x588d72['countagentrejectretry']||0x0;this[_0x7f0a('0x1c')]=_0x588d72[_0x7f0a('0x1c')];this[_0x7f0a('0x1d')]=_0x588d72[_0x7f0a('0x1d')];this[_0x7f0a('0x1e')]=_0x588d72[_0x7f0a('0x1e')];this['recallme']=_0x588d72['recallme'];this[_0x7f0a('0x1f')]=_0x588d72[_0x7f0a('0x1f')];this[_0x7f0a('0x20')]=_0x588d72['ListId'];this[_0x7f0a('0x21')]=_[_0x7f0a('0x1')](_0x588d72[_0x7f0a('0x9')])?_0x588d72[_0x7f0a('0x21')]:_0x588d72[_0x7f0a('0x9')]['id'];this[_0x7f0a('0x22')]=_0x588d72['VoiceQueueId'];this[_0x7f0a('0x23')]='';this[_0x7f0a('0x24')]='';}Action['prototype'][_0x7f0a('0x25')]=function(){return util[_0x7f0a('0x26')](_0x7f0a('0x27'),this['calleridname'],this[_0x7f0a('0x28')]);};module[_0x7f0a('0x29')]=Action;
\ No newline at end of file
+var _0x0ef1=['queue','membername','Agent','channelAgent','format','calleridname','Contact','firstName','lastName','active','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','number','util','lodash','moment','isNil','string','name','type','campaigntype'];(function(_0x44e555,_0x1cbecd){var _0x24f8d1=function(_0x462822){while(--_0x462822){_0x44e555['push'](_0x44e555['shift']());}};_0x24f8d1(++_0x1cbecd);}(_0x0ef1,0x148));var _0x10ef=function(_0x525ef8,_0x5de54a){_0x525ef8=_0x525ef8-0x0;var _0x2b5dda=_0x0ef1[_0x525ef8];return _0x2b5dda;};'use strict';var util=require(_0x10ef('0x0'));var _=require(_0x10ef('0x1'));var moment=require(_0x10ef('0x2'));function checkNameSurname(_0x1eb22a,_0x35cf0f,_0x4578fe){var _0x88de03='';if(!_[_0x10ef('0x3')](_0x35cf0f)&&_0x10ef('0x4')===typeof _0x35cf0f){_0x88de03+=_0x35cf0f;}if(!_[_0x10ef('0x3')](_0x4578fe)&&_0x10ef('0x4')===typeof _0x4578fe){_0x88de03+='\x20'+_0x4578fe;}if(_0x88de03!==''){return _0x88de03;}return _0x1eb22a;}function Action(_0x5f4476,_0x24466c,_0x1116f2,_0x403565,_0x4ceaa7){this['uniqueid']=_0x1116f2||undefined;this['idContact']=_0x5f4476['id'];this['queue']=_0x24466c[_0x10ef('0x5')];this[_0x10ef('0x6')]=_0x24466c[_0x10ef('0x6')];this[_0x10ef('0x7')]=_0x10ef('0x8');this['dialAnswer']=![];this[_0x10ef('0x9')]=_[_0x10ef('0x3')](_0x5f4476[_0x10ef('0xa')])?undefined:_0x5f4476[_0x10ef('0xa')]['name'];this[_0x10ef('0xb')]=this[_0x10ef('0x9')]?util[_0x10ef('0xc')]('SIP/%s',this[_0x10ef('0x9')]):_0x403565||undefined;this[_0x10ef('0xd')]=checkNameSurname(_0x5f4476[_0x10ef('0xe')]['phone'],_0x5f4476['Contact'][_0x10ef('0xf')],_0x5f4476[_0x10ef('0xe')][_0x10ef('0x10')]);this[_0x10ef('0x11')]=_0x5f4476['active']||![];this['calleridnum']=_0x5f4476['Contact'][_0x10ef('0x12')];this[_0x10ef('0x13')]=_0x5f4476[_0x10ef('0x13')];this[_0x10ef('0x14')]=_0x5f4476[_0x10ef('0x14')]||0x0;this[_0x10ef('0x15')]=_0x5f4476[_0x10ef('0x15')]||0x0;this['countnoanswerretry']=_0x5f4476[_0x10ef('0x16')]||0x0;this[_0x10ef('0x17')]=(_0x5f4476[_0x10ef('0x14')]||0x0)+(_0x5f4476[_0x10ef('0x15')]||0x0)+(_0x5f4476[_0x10ef('0x16')]||0x0)+(_0x5f4476[_0x10ef('0x18')]||0x0)+(_0x5f4476[_0x10ef('0x19')]||0x0)+(_0x5f4476['countabandonedretry']||0x0)+(_0x5f4476[_0x10ef('0x1a')]||0x0)+(_0x5f4476[_0x10ef('0x1b')]||0x0);this[_0x10ef('0x18')]=_0x5f4476[_0x10ef('0x18')]||0x0;this[_0x10ef('0x19')]=_0x5f4476[_0x10ef('0x19')]||0x0;this['countabandonedretry']=_0x5f4476[_0x10ef('0x1c')]||0x0;this[_0x10ef('0x1a')]=_0x5f4476[_0x10ef('0x1a')]||0x0;this[_0x10ef('0x1b')]=_0x5f4476[_0x10ef('0x1b')]||0x0;this['callback']=_0x5f4476[_0x10ef('0x1d')];this[_0x10ef('0x1e')]=_0x5f4476[_0x10ef('0x1e')];this[_0x10ef('0x1f')]=_0x5f4476[_0x10ef('0x1f')];this[_0x10ef('0x20')]=_0x5f4476[_0x10ef('0x20')];this[_0x10ef('0x21')]=_0x5f4476['ContactId'];this[_0x10ef('0x22')]=_0x5f4476[_0x10ef('0x22')];this[_0x10ef('0x23')]=_[_0x10ef('0x3')](_0x5f4476[_0x10ef('0xa')])?_0x5f4476['UserId']:_0x5f4476[_0x10ef('0xa')]['id'];this[_0x10ef('0x24')]=_0x5f4476[_0x10ef('0x24')];this[_0x10ef('0x25')]='';this[_0x10ef('0x26')]='';}Action[_0x10ef('0x27')][_0x10ef('0x28')]=function(){return util['format']('\x22%s\x22\x20<%s>',this[_0x10ef('0xd')],this[_0x10ef('0x29')]);};module['exports']=Action;
\ No newline at end of file
index 113e598..4e1fa80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63ec=['custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','uniqueid','originated','destlinkedid','isUndefined','object','reason','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logNoAnswer]','Busy','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Queue','lookAgent','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Call\x20failed','createHistory','[Blacklist][error]','active','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','isValid','Contact.phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','isEmpty','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','ACTIVE','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','Is\x20Valid','trim','dialCutDigit','SIP/%s/%s%s','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','channelAgent','calleridnum','user:%s','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncOriginateResponse','logLookAgent','isFailure','response','callProgressDetectingAgent','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','variables','syncVarSet','filterKey','variable','addVariable','keys','value','error','inspect','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','bluebird','uuid','moment','../../../config/environment','../../../config/logger','preview','actionPreview','./rpcDb','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','blindtransfer','loopCampaigns','emit','type','outbound','name','strategy','available','loggedIn','sumBillable','talking','total','abandoned','loggedInDb','dialActive','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','Trunk','callerid','Interval','stringify','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','pTalking','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','syncCampaigns','hasOwnProperty','dialMethod','clearZombieChannels','setMessage','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','size','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','[getContactRecallMe]','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','callProgressDetectingCustomer','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','countnosuchnumberretry','activeContact','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','\x20Queue','custom:agentconnect','connect','acw','custom:agentcomplete','complete','answered','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','countbusyretry','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','scheduledAt','unlockAgent','NOANSWER','countnoanswerretry','NoAnswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','dialBusyRetryFrequency','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','countabandonedretry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus'];(function(_0x1c0c7c,_0x2ede87){var _0x1eeae0=function(_0x6d671b){while(--_0x6d671b){_0x1c0c7c['push'](_0x1c0c7c['shift']());}};_0x1eeae0(++_0x2ede87);}(_0x63ec,0x1cc));var _0xc63e=function(_0x119a9e,_0x1d22ab){_0x119a9e=_0x119a9e-0x0;var _0x400dd0=_0x63ec[_0x119a9e];return _0x400dd0;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xc63e('0x0'));var uuid=require(_0xc63e('0x1'));var moment=require(_0xc63e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0xc63e('0x3'));var logger=require(_0xc63e('0x4'))(_0xc63e('0x5'));var loggerAction=require(_0xc63e('0x4'))(_0xc63e('0x6'));var ami=require('../ami');var rpcDb=require(_0xc63e('0x7'));var Action=require('./action');var ut=require('./util/util');config[_0xc63e('0x8')]=_[_0xc63e('0x9')](config[_0xc63e('0x8')],{'host':_0xc63e('0xa'),'port':0x18eb});var io=require(_0xc63e('0xb'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xc63e('0xc')][_0xc63e('0xd')]=function(_0x52b4b8){this['tail']=this[_0xc63e('0xe')]?this['tail'][_0xc63e('0xf')](_0x52b4b8):_0x52b4b8();};function Preview(_0x121138){this[_0xc63e('0x10')]=new Sequence();this[_0xc63e('0x11')]=_0x121138[_0xc63e('0x12')];this[_0xc63e('0x13')]=_0x121138[_0xc63e('0x13')];this[_0xc63e('0x14')]={};this[_0xc63e('0x15')]=_0x121138[_0xc63e('0x15')];this[_0xc63e('0x16')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x18'),this[_0xc63e('0x19')][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x1a'),this[_0xc63e('0x1b')]['bind'](this));ami['on'](_0xc63e('0x1c'),this[_0xc63e('0x1d')][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x1e'),this[_0xc63e('0x1f')]['bind'](this));ami['on'](_0xc63e('0x20'),this['syncVarSet'][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x21'),this[_0xc63e('0x22')]['bind'](this));ami['on'](_0xc63e('0x23'),this['syncBlindTransfer'][_0xc63e('0x17')](this));this[_0xc63e('0x24')](this['campaignsPreview']);}function emit(_0x11c9b6,_0x263379,_0x22afad){io['to'](_0x11c9b6)[_0xc63e('0x25')](_0x263379,_0x22afad);}function emitCampaignPreview(_0x1e6d40){if(_0x1e6d40[_0xc63e('0x26')]===_0xc63e('0x27')){var _0x5e85e0={'id':_0x1e6d40['id'],'name':_0x1e6d40[_0xc63e('0x28')],'strategy':_0x1e6d40[_0xc63e('0x29')],'answered':_0x1e6d40['answered'],'available':_0x1e6d40[_0xc63e('0x2a')],'loggedIn':_0x1e6d40[_0xc63e('0x2b')],'pTalking':_0x1e6d40['pTalking'],'sumBillable':_0x1e6d40[_0xc63e('0x2c')],'sumDuration':_0x1e6d40['sumDuration'],'sumHoldTime':_0x1e6d40['sumHoldTime']||0x0,'talking':_0x1e6d40[_0xc63e('0x2d')],'total':_0x1e6d40[_0xc63e('0x2e')],'type':_0x1e6d40[_0xc63e('0x26')],'unmanaged':_0x1e6d40['unmanaged'],'abandoned':_0x1e6d40[_0xc63e('0x2f')],'waiting':_0x1e6d40['waiting'],'loggedInDb':_0x1e6d40[_0xc63e('0x30')],'dialActive':_0x1e6d40[_0xc63e('0x31')],'dialMethod':_0x1e6d40['dialMethod'],'dialOriginateCallerIdName':_0x1e6d40['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1e6d40[_0xc63e('0x32')],'dialOriginateTimeout':_0x1e6d40[_0xc63e('0x33')],'dialPrefix':_0x1e6d40[_0xc63e('0x34')],'outboundAnswerAgiCallsDay':_0x1e6d40['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x1e6d40[_0xc63e('0x35')],'outboundBlacklistCallsDay':_0x1e6d40[_0xc63e('0x36')],'outboundBusyCallsDay':_0x1e6d40[_0xc63e('0x37')],'outboundCongestionCallsDay':_0x1e6d40[_0xc63e('0x38')],'outboundDropCallsDayACS':_0x1e6d40['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1e6d40[_0xc63e('0x39')],'outboundDropCallsDayTimeout':_0x1e6d40[_0xc63e('0x3a')],'outboundNoAnswerCallsDay':_0x1e6d40[_0xc63e('0x3b')],'outboundNoSuchCallsDay':_0x1e6d40[_0xc63e('0x3c')],'outboundOriginateFailureCallsDay':_0x1e6d40[_0xc63e('0x3d')],'outboundReCallsDay':_0x1e6d40[_0xc63e('0x3e')],'outboundRejectCallsDay':_0x1e6d40[_0xc63e('0x3f')],'outboundUnknownCallsDay':_0x1e6d40[_0xc63e('0x40')],'outboundAbandonedCallsDay':_0x1e6d40[_0xc63e('0x41')],'predictiveIntervalAnsweredCalls':_0x1e6d40[_0xc63e('0x42')],'predictiveIntervalAvgHoldtime':_0x1e6d40[_0xc63e('0x43')],'predictiveIntervalAvgTalktime':_0x1e6d40[_0xc63e('0x44')],'predictiveIntervalDroppedCallsCallersExit':_0x1e6d40['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1e6d40['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x1e6d40[_0xc63e('0x45')],'predictiveIntervalErlangCallsDroppedCalls':_0x1e6d40[_0xc63e('0x46')],'predictiveIntervalHitRate':_0x1e6d40[_0xc63e('0x47')],'predictiveIntervalMultiplicativeFactor':_0x1e6d40[_0xc63e('0x48')],'predictiveIntervalPauses':_0x1e6d40[_0xc63e('0x49')],'predictiveIntervalAvailable':_0x1e6d40[_0xc63e('0x4a')],'predictiveIntervalTotalCalls':_0x1e6d40[_0xc63e('0x4b')],'message':_0x1e6d40[_0xc63e('0x4c')],'originated':_0x1e6d40['originated'],'erlangCalls':_0x1e6d40[_0xc63e('0x4d')],'erlangCallToSecond':_0x1e6d40[_0xc63e('0x4e')],'erlangAbandonmentRate':_0x1e6d40[_0xc63e('0x4f')],'erlangBusyFactor':_0x1e6d40['erlangBusyFactor'],'startPredictive':_0x1e6d40[_0xc63e('0x50')],'startProgressive':_0x1e6d40['startProgressive']};if(_0x1e6d40[_0xc63e('0x51')]){_0x5e85e0[_0xc63e('0x51')]={'id':_0x1e6d40[_0xc63e('0x51')]['id'],'name':_0x1e6d40['Trunk']['name'],'active':_0x1e6d40[_0xc63e('0x51')]['active'],'callerid':_0x1e6d40[_0xc63e('0x51')][_0xc63e('0x52')]};}if(_0x1e6d40['Interval']){_0x5e85e0[_0xc63e('0x53')]={'id':_0x1e6d40[_0xc63e('0x53')]['id'],'name':_0x1e6d40['Interval'][_0xc63e('0x28')]};}var _0x15512c=md5(JSON[_0xc63e('0x54')](_0x5e85e0));if(_0x1e6d40[_0xc63e('0x55')]!==_0x15512c){_0x1e6d40[_0xc63e('0x55')]=_0x15512c;emit(util[_0xc63e('0x56')](_0xc63e('0x57'),_0x5e85e0['name']),_0xc63e('0x58'),_0x5e85e0);}}}function emitVoiceQueueChannelRemove(_0x59edbf){logger[_0xc63e('0x59')](_0xc63e('0x5a'),JSON[_0xc63e('0x54')](_0x59edbf));emit(util[_0xc63e('0x56')]('voice:queue:%s',_0x59edbf[_0xc63e('0x28')]),_0xc63e('0x5b'),_0x59edbf);io['emit'](_0xc63e('0x5c'),_0x59edbf);}function notSendMessagesQueue(_0x11255c){if(_0x11255c[_0xc63e('0x5d')]){if(_0x11255c['originated']===0x0&&_0x11255c[_0xc63e('0x5e')]===0x0){_0x11255c[_0xc63e('0x5d')]=![];_0x11255c[_0xc63e('0x2a')]=0x0;_0x11255c[_0xc63e('0x5f')]=0x0;_0x11255c[_0xc63e('0x4c')]=_0xc63e('0x60');ut[_0xc63e('0x61')](_0xc63e('0x62'),_0x11255c[_0xc63e('0x28')]+_0xc63e('0x63'));}else{_0x11255c['message']='IS_DISACTIVED';ut[_0xc63e('0x61')](_0xc63e('0x62'),_0x11255c[_0xc63e('0x28')]+'\x20is\x20disactive');}emitCampaignPreview(_0x11255c);}}Preview[_0xc63e('0xc')][_0xc63e('0x24')]=function(){var _0x5705f7=this;setInterval(function(){_0x5705f7[_0xc63e('0x64')]();},0x7cf);};Preview['prototype'][_0xc63e('0x64')]=function(){var _0x17b677=this[_0xc63e('0x11')];this['clockClearZombieChannels']+=0x1;for(var _0x51daea in _0x17b677){if(_0x17b677[_0xc63e('0x65')](_0x51daea)&&(_0x17b677[_0x51daea]['dialMethod']===_0xc63e('0x5')||_0x17b677[_0x51daea][_0xc63e('0x66')]==='booked')&&_0x17b677[_0x51daea][_0xc63e('0x26')]==='outbound'){if(this[_0xc63e('0x16')]>0x7){this[_0xc63e('0x16')]=0x0;this[_0xc63e('0x67')]();}}if(_0x17b677[_0xc63e('0x65')](_0x51daea)&&_0x17b677[_0x51daea][_0xc63e('0x66')]==='preview'&&_0x17b677[_0x51daea]['type']===_0xc63e('0x27')){if(_0x17b677[_0x51daea][_0xc63e('0x31')]){this[_0xc63e('0x68')](_0x17b677[_0x51daea]);this[_0xc63e('0x69')](_0x17b677[_0x51daea]);}else{notSendMessagesQueue(_0x17b677[_0x51daea]);}}}};Preview[_0xc63e('0xc')][_0xc63e('0x6a')]=function(_0x3b318b){var _0x3d2c8a=this;this[_0xc63e('0x10')][_0xc63e('0xd')](function(){if(!_[_0xc63e('0x6b')](_0x3d2c8a[_0xc63e('0x14')][_0x3b318b])){loggerAction[_0xc63e('0x59')](_0xc63e('0x6c'),_0x3b318b,'Queue',_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')],_0xc63e('0x6e'),JSON[_0xc63e('0x54')](_0x3d2c8a['campaignsPreview'][_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]]['originated']),_0xc63e('0x6f'),JSON['stringify'](_0x3d2c8a[_0xc63e('0x11')][_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]][_0xc63e('0x5e')]),JSON[_0xc63e('0x54')](_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x70')]),JSON[_0xc63e('0x54')](_[_0xc63e('0x71')](_0x3d2c8a[_0xc63e('0x14')][_0x3b318b],[_0xc63e('0x72'),_0xc63e('0x73'),_0xc63e('0x74'),_0xc63e('0x75')])));return ami[_0xc63e('0x76')]({'action':_0xc63e('0x77'),'channel':_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x78')]})[_0xc63e('0x79')](function(_0x1b14da){if(_0x1b14da[_0xc63e('0x4c')]===_0xc63e('0x7a')){setTimeout(function(){if(_0x3d2c8a[_0xc63e('0x14')][_0x3b318b]){ut[_0xc63e('0x7b')](_0x3d2c8a[_0xc63e('0x11')][_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]],_0xc63e('0x7c'));if(_0x3d2c8a['actions'][_0x3b318b][_0xc63e('0x70')]===!![]){ut[_0xc63e('0x7d')](_0x3d2c8a['campaignsPreview'][_0x3d2c8a['actions'][_0x3b318b][_0xc63e('0x6d')]],_0xc63e('0x7c'));ut[_0xc63e('0x7e')](_0xc63e('0x7f')+_0x3b318b,_0x3d2c8a[_0xc63e('0x14')][_0x3b318b]['queue']);}ut[_0xc63e('0x7e')](_0xc63e('0x80')+_0x3b318b,_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]);delete _0x3d2c8a['actions'][_0x3b318b];}},0x2328);}});}});};Preview[_0xc63e('0xc')][_0xc63e('0x67')]=function(){var _0x206f5a=this;loggerAction[_0xc63e('0x59')]('[action]',_[_0xc63e('0x81')](this[_0xc63e('0x14')]));for(var _0x4caf21 in this[_0xc63e('0x14')]){if(_0x206f5a[_0xc63e('0x14')][_0xc63e('0x65')](_0x4caf21)){_0x206f5a[_0xc63e('0x6a')](_0x4caf21);}}};Preview[_0xc63e('0xc')]['recallMe']=function(_0x52a01c){var _0x243dad=this;rpcDb[_0xc63e('0x82')](_0x52a01c['id'],ut[_0xc63e('0x83')](this['agents']))[_0xc63e('0x84')](function(_0x1a4e6b){if(!_[_0xc63e('0x6b')](_0x1a4e6b)){for(var _0x404eb3=0x0;_0x404eb3<_0x1a4e6b['length'];_0x404eb3+=0x1){if(ut[_0xc63e('0x85')](_0x1a4e6b[_0x404eb3][_0xc63e('0x86')])<_0x52a01c[_0xc63e('0x87')]*0x3c){if(_0x1a4e6b[_0x404eb3]['Agent']&&!_0x1a4e6b[_0x404eb3][_0xc63e('0x88')][_0xc63e('0x89')]){_0x243dad[_0xc63e('0x8a')](_0x1a4e6b[_0x404eb3]['id'])['then'](ut[_0xc63e('0x8b')](_0xc63e('0x8c')))[_0xc63e('0x79')](ut['logger2'](_0xc63e('0x8c')));}else{rpcDb[_0xc63e('0x8d')](_0x1a4e6b[_0x404eb3]['id']);}}else{var _0x33569c=new Action(_0x1a4e6b[_0x404eb3],_0x52a01c);_0x33569c[_0xc63e('0x8e')]=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));_0x52a01c[_0xc63e('0x3e')]+=0x1;ut[_0xc63e('0x90')](_0x33569c,0x17,_0xc63e('0x91'));if(_0x52a01c[_0xc63e('0x92')]){rpcDb[_0xc63e('0x93')](ut[_0xc63e('0x94')](_0x1a4e6b[_0x404eb3]));rpcDb[_0xc63e('0x95')](_0x33569c,_0xc63e('0x96'));}else{ut[_0xc63e('0x90')](_0x33569c,0x16,'RecallFailedTimeout');rpcDb[_0xc63e('0x95')](_0x33569c,_0xc63e('0x97'));rpcDb['createCustomerFinal'](_0x33569c,_0xc63e('0x97'));}}}}})[_0xc63e('0x79')](ut[_0xc63e('0x8b')](_0xc63e('0x98')));};Preview[_0xc63e('0xc')][_0xc63e('0x68')]=function(_0x203602){_0x203602[_0xc63e('0x5d')]=!![];if(ut['IsNotLoggedIn'](_0x203602[_0xc63e('0x2b')])){_0x203602[_0xc63e('0x4c')]='AGENTS_NOT_LOGGED';}else if(!ut[_0xc63e('0x99')](_0x203602['dialActive'])){_0x203602[_0xc63e('0x4c')]='NOT_ACTIVE';}else if(!this[_0xc63e('0x9a')](_0x203602[_0xc63e('0x51')])){if(!this[_0xc63e('0x9a')](_0x203602['TrunkBackup'])){_0x203602[_0xc63e('0x4c')]=_0xc63e('0x9b');}else{_0x203602[_0xc63e('0x4c')]='ACTIVE';}}else{_0x203602[_0xc63e('0x4c')]='ACTIVE';}emitCampaignPreview(_0x203602);};Preview[_0xc63e('0xc')][_0xc63e('0x9c')]=function(_0x31b91a,_0x1ccdda,_0x401956){var _0x1c9e27=this;var _0x218abd=this[_0xc63e('0x14')][_0x1ccdda];var _0x5a4f0a=this[_0xc63e('0x11')][_0x218abd[_0xc63e('0x6d')]];var _0x782a80;if(_0x5a4f0a){switch(_0x401956){case'1':_0x5a4f0a[_0xc63e('0x3c')]+=0x1;_0x218abd['countnosuchnumberretry']+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x0,'NoSuchNumber');ami['emit'](_0xc63e('0x9f'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xa1')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xa2'));if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xa7'));}else{if(_0x218abd['countnosuchnumberretry']>=_0x5a4f0a[_0xc63e('0xa8')]){rpcDb[_0xc63e('0xa6')](_0x218abd,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0xc63e('0xa9')](ut['scheduledAt'](_0x218abd,_0xc63e('0xaa'),_0x5a4f0a['dialNoSuchNumberRetryFrequency']),_0x218abd['unlockAgent'],_0x218abd[_0xc63e('0xab')]);}}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;case _0xc63e('0xad'):var _0x248ba3=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x218abd[_0xc63e('0xae')]=_0x248ba3;_0x218abd[_0xc63e('0xaf')]=_0x248ba3;_0x218abd[_0xc63e('0x70')]=!![];_0x5a4f0a[_0xc63e('0x5e')]+=0x1;logger['info'](_0xc63e('0xb0'),_0x218abd['uniqueid'],_0xc63e('0xb1'),_0x5a4f0a['name'],_0xc63e('0x6f'),_0x5a4f0a['pTalking']);ami[_0xc63e('0x25')](_0xc63e('0xb2'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xb3'),this[_0xc63e('0x11')][_0x218abd[_0xc63e('0x6d')]]));if(_0x5a4f0a[_0xc63e('0xb4')]){ami[_0xc63e('0x25')]('custom:agentConnectPreview',ut['buildAcw'](_0x218abd));}break;case'16':ami['emit'](_0xc63e('0xb5'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xb6'),this[_0xc63e('0x11')][_0x218abd[_0xc63e('0x6d')]]));emitVoiceQueueChannelRemove(ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xb6')));_0x5a4f0a[_0xc63e('0x35')]+=0x1;_0x5a4f0a[_0xc63e('0x2e')]+=0x1;_0x5a4f0a[_0xc63e('0xb7')]+=0x1;ut[_0xc63e('0x7d')](_0x5a4f0a,_0xc63e('0xb8'));_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x4,_0xc63e('0xb9'));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xba'));rpcDb['createCustomerFinal'](_0x218abd,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0xc63e('0xbb')](_0x218abd);_0x5a4f0a[_0xc63e('0xbc')]+=_0x218abd[_0xc63e('0xbd')];_0x5a4f0a[_0xc63e('0x2c')]+=_0x218abd['talktime'];logger[_0xc63e('0x59')](_0xc63e('0xbe'),_0x218abd['uniqueid'],'\x20Queue',_0x5a4f0a['name'],_0xc63e('0x6f'),_0x5a4f0a['pTalking']);delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;case'BUSY':_0x5a4f0a[_0xc63e('0x37')]+=0x1;_0x218abd[_0xc63e('0xbf')]+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut['logCustomer'](_0x218abd,0x5,'Busy');ami[_0xc63e('0x25')]('custom:agentbusy',ut['buildObj'](_0x218abd,'busy'));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xc0'));if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut['cloneAction'](_0x218abd,0xf,'Global');rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xc1'));}else{if(_0x218abd[_0xc63e('0xbf')]>=_0x5a4f0a['dialBusyMaxRetry']){rpcDb[_0xc63e('0xa6')](_0x218abd,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb['rescheduleContact'](ut[_0xc63e('0xc2')](_0x218abd,'countbusyretry',_0x5a4f0a['dialBusyRetryFrequency']),_0x218abd[_0xc63e('0xc3')],_0x218abd[_0xc63e('0xab')]);}}break;case _0xc63e('0xc4'):_0x5a4f0a[_0xc63e('0x3b')]+=0x1;_0x218abd[_0xc63e('0xc5')]+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x3,_0xc63e('0xc6'));ami[_0xc63e('0x25')]('custom:agentnoanswer',ut['buildObj'](_0x218abd,_0xc63e('0xc7')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xc8'));if(ut['totalGlobal'](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut['cloneAction'](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb[_0xc63e('0xa6')](_0x782a80,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x218abd[_0xc63e('0xc5')]>=_0x5a4f0a[_0xc63e('0xc9')]){rpcDb[_0xc63e('0xa6')](_0x218abd,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0xc63e('0xa9')](ut[_0xc63e('0xc2')](_0x218abd,_0xc63e('0xc5'),_0x5a4f0a[_0xc63e('0xca')]),_0x218abd[_0xc63e('0xc3')],_0x218abd[_0xc63e('0xab')]);}}break;case _0xc63e('0xcb'):_0x5a4f0a[_0xc63e('0x38')]+=0x1;_0x218abd['countcongestionretry']+=0x1;_0x218abd[_0xc63e('0x9d')]=ut['totalGlobal'](_0x218abd);ut['logCustomer'](_0x218abd,0x8,'Congestion');ami[_0xc63e('0x25')](_0xc63e('0xcc'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xcd')));rpcDb[_0xc63e('0x95')](_0x218abd,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a['dialGlobalMaxRetry']){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,'Global');rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xce'));}else{if(_0x218abd[_0xc63e('0xcf')]>=_0x5a4f0a[_0xc63e('0xd0')]){rpcDb['createCustomerFinal'](_0x218abd,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0xc63e('0xa9')](ut[_0xc63e('0xc2')](_0x218abd,_0xc63e('0xcf'),_0x5a4f0a[_0xc63e('0xd1')]),_0x218abd['unlockAgent'],_0x218abd[_0xc63e('0xab')]);}}break;case _0xc63e('0xd2'):_0x5a4f0a[_0xc63e('0x3f')]+=0x1;_0x218abd[_0xc63e('0xd3')]+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut['logCustomer'](_0x218abd,0x14,_0xc63e('0xd4'));ami[_0xc63e('0x25')](_0xc63e('0xd5'),ut['buildObj'](_0x218abd,_0xc63e('0xd6')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xd7'));if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0x14,_0xc63e('0xd4'));rpcDb['createCustomerFinal'](_0x782a80,_0xc63e('0xd8'));}else{if(_0x218abd[_0xc63e('0xd3')]>=_0x5a4f0a[_0xc63e('0xd9')]){rpcDb[_0xc63e('0xa6')](_0x218abd,_0xc63e('0xd8'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x218abd,_0xc63e('0xd3'),_0x5a4f0a[_0xc63e('0xda')]),_0x218abd[_0xc63e('0xc3')],_0x218abd['activeContact']);}}break;case _0xc63e('0xdb'):_0x5a4f0a[_0xc63e('0x41')]+=0x1;_0x218abd['countabandonedretry']+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0xb,_0xc63e('0xdc'));rpcDb['createCustomerHistory'](_0x218abd,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a['dialGlobalMaxRetry']){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,'Global');rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xdd'));}else{if(_0x218abd[_0xc63e('0xde')]>=_0x5a4f0a['dialAbandonedMaxRety']){rpcDb['createCustomerFinal'](_0x218abd,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xc63e('0xa9')](ut['scheduledAt'](_0x218abd,_0xc63e('0xdf'),_0x5a4f0a[_0xc63e('0xe0')]),_0x218abd[_0xc63e('0xc3')],_0x218abd['activeContact']);}}break;case'18':_0x5a4f0a[_0xc63e('0x40')]+=0x1;_0x218abd[_0xc63e('0xe1')]+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x12,_0x31b91a[_0xc63e('0xe2')]||_0x31b91a[_0xc63e('0xe3')]);ami[_0xc63e('0x25')](_0xc63e('0xe4'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xe5')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xe6'));if(ut['totalGlobal'](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb['createCustomerFinal'](_0x782a80,_0xc63e('0xe6'));}else{rpcDb['createCustomerFinal'](_0x218abd,_0xc63e('0xe6'));}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;case'19':_0x5a4f0a[_0xc63e('0x40')]+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x13,_0x31b91a['cause-txt']||_0x31b91a['dialstatus']);ami[_0xc63e('0x25')](_0xc63e('0xe4'),ut[_0xc63e('0xa0')](_0x218abd,'amd'));rpcDb[_0xc63e('0x95')](_0x218abd,'[callProgressDetectingCustomer][machine]');if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb['createCustomerFinal'](_0x782a80,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xc63e('0xa6')](_0x218abd,_0xc63e('0xe7'));}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;default:if(_0x218abd[_0xc63e('0x70')]){ut['decrementTalkink'](_0x5a4f0a,_0xc63e('0xe8'));ut[_0xc63e('0x7e')](_0xc63e('0xe9')+_0x5a4f0a['name'],_0x31b91a);}_0x5a4f0a[_0xc63e('0x40')]+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut['logCustomer'](_0x218abd,0xc,_0x31b91a[_0xc63e('0xe2')]||_0x31b91a[_0xc63e('0xe3')]);rpcDb[_0xc63e('0x95')](_0x218abd,'[callProgressDetectingCustomer][logUnknown]');if(ut['totalGlobal'](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut['cloneAction'](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xea'));}else{rpcDb[_0xc63e('0xa6')](_0x218abd,_0xc63e('0xea'));}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];}if(!(_0x218abd[_0xc63e('0x70')]&&_0x401956==='16')){ut[_0xc63e('0x7b')](_0x5a4f0a,_0xc63e('0xeb'));logger[_0xc63e('0x59')](_0xc63e('0xec'),_0x218abd[_0xc63e('0xed')],_0xc63e('0xb1'),_0x5a4f0a[_0xc63e('0x28')],_0xc63e('0x6e'),_0x5a4f0a[_0xc63e('0xee')]);}if(_0x401956!=='ANSWER'){delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];delete this['actions'][_0x31b91a[_0xc63e('0xef')]];}}};Preview[_0xc63e('0xc')]['callProgressDetectingAgent']=function(_0x1b5964,_0x2275f,_0x4e8906){if(_[_0xc63e('0xf0')](_0x2275f)&&_0xc63e('0xf1')!==typeof _0x2275f){return;}if(_['isUndefined'](_0x4e8906)&&_0xc63e('0xf1')!==typeof _0x4e8906){return;}switch(_0x4e8906[_0xc63e('0xf2')]){case'0':ut['logAgent'](_0x1b5964,0x0,_0xc63e('0xf3'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xf5'));break;case'3':ut[_0xc63e('0xf6')](_0x1b5964,0x3,_0xc63e('0xc6'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xf7'));break;case'5':ut[_0xc63e('0xf6')](_0x1b5964,0x5,_0xc63e('0xf8'));rpcDb[_0xc63e('0xf4')](_0x1b5964,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0xc63e('0xf6')](_0x1b5964,0x8,_0xc63e('0xf9'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xfa'));break;case'22':ut[_0xc63e('0xf6')](_0x1b5964,0x16,_0xc63e('0xfb'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xfc'));break;default:ut[_0xc63e('0xf6')](_0x1b5964,0xc,_0x4e8906[_0xc63e('0xf2')]);rpcDb['createAgentHistory'](_0x1b5964,_0xc63e('0xfa'));}ut['updateOriginated'](_0x2275f,_0xc63e('0xfd'));logger[_0xc63e('0x59')](_0xc63e('0xfe'),_0x1b5964[_0xc63e('0xed')],_0xc63e('0xb1'),_0x2275f[_0xc63e('0x28')],_0xc63e('0x6e'),_0x2275f[_0xc63e('0xee')]);delete this[_0xc63e('0x14')][_0x1b5964[_0xc63e('0xed')]];};Preview['prototype'][_0xc63e('0xff')]=function(_0x46c4b9,_0x1bf6be,_0x339228,_0x4cbd94,_0x277cd2){var _0x47138a=this;return new BPromise(function(_0x45ebab,_0x327d82){if(_[_0xc63e('0x6b')](_0x1bf6be)||_[_0xc63e('0x6b')](_0x1bf6be[_0xc63e('0x100')])||_[_0xc63e('0x6b')](_0x1bf6be['Contact'][_0xc63e('0x101')])||_[_0xc63e('0x6b')](_0x1bf6be['VoiceQueueId'])){_0x327d82(ut[_0xc63e('0x4c')]('Contact\x20is\x20undefined',_0x4cbd94,_0x277cd2));return;}var _0x2dd08a=uuid['v4']();var _0x51d4fd=_0x47138a[_0xc63e('0x11')][_0x1bf6be[_0xc63e('0x102')][_0xc63e('0x28')]];var _0x5cdca5=_0x339228?_0x47138a[_0xc63e('0x15')][_0x339228]['id']:undefined;_0x47138a[_0xc63e('0x14')][_0x2dd08a]=new Action(_0x1bf6be,_0x51d4fd,_0x2dd08a,_0x339228,_0x5cdca5);var _0xc9be5e=_0x47138a['actions'][_0x2dd08a];_0xc9be5e[_0xc63e('0xc3')]=_0x4cbd94;_0xc9be5e[_0xc63e('0xab')]=_0x277cd2;_0xc9be5e[_0xc63e('0x103')]=_0x339228;if(_['isEmpty'](_0x46c4b9)){_0x47138a[_0xc63e('0x104')](_0xc9be5e,_0x51d4fd,_0x1bf6be,_0x339228)['then'](function(_0x4f0d41){logger[_0xc63e('0x59')](_0xc63e('0x105'),_0xc63e('0x106')+_0xc9be5e[_0xc63e('0x6d')]+_0xc63e('0x107')+_0xc9be5e[_0xc63e('0x108')],JSON[_0xc63e('0x54')](_0x4f0d41));ami[_0xc63e('0x25')](_0xc63e('0x109'),ut[_0xc63e('0xa0')](_0xc9be5e,_0xc63e('0x10a'),_0x47138a[_0xc63e('0x11')][_0xc9be5e[_0xc63e('0x6d')]]));_0x45ebab(ut['message']('Calling'));})['catch'](function(_0xfeb72f){ut['logger']('[Preview][execCall][failure]',_0xfeb72f);_0x327d82(ut['message'](_0xc63e('0x10b'),_0x4cbd94,_0x277cd2));});}else{_0x51d4fd[_0xc63e('0x36')]+=0x1;ut['logBlacklist'](_0xc9be5e);rpcDb[_0xc63e('0x10c')](_0xc9be5e,_0xc63e('0x10d'));delete _0x47138a[_0xc63e('0x14')][_0x2dd08a];_0x327d82(ut[_0xc63e('0x4c')]('Contact\x20in\x20black\x20List',_0x4cbd94,_0x277cd2));}});};Preview[_0xc63e('0xc')][_0xc63e('0x9a')]=function(_0xccad31){return!_[_0xc63e('0x6b')](_0xccad31)&&!_['isNil'](_0xccad31[_0xc63e('0x28')])&&!_[_0xc63e('0x6b')](_0xccad31[_0xc63e('0x10e')])&&_0xccad31[_0xc63e('0x10e')]&&!_[_0xc63e('0x6b')](this[_0xc63e('0x13')][util[_0xc63e('0x56')](_0xc63e('0x10f'),_0xccad31[_0xc63e('0x28')])])&&!_['isNil'](this[_0xc63e('0x13')][util[_0xc63e('0x56')](_0xc63e('0x10f'),_0xccad31[_0xc63e('0x28')])]['status'])&&(this[_0xc63e('0x13')][util['format'](_0xc63e('0x10f'),_0xccad31[_0xc63e('0x28')])][_0xc63e('0x77')]===_0xc63e('0x110')||this[_0xc63e('0x13')][util[_0xc63e('0x56')](_0xc63e('0x10f'),_0xccad31['name'])][_0xc63e('0x77')]===_0xc63e('0x111'));};Preview['prototype'][_0xc63e('0x8a')]=function(_0x37071d,_0xc97c53){var _0xa55878=this;return new BPromise(function(_0x9f607c,_0xfe418a){_0xa55878[_0xc63e('0x112')](_0x37071d,_0xc97c53)[_0xc63e('0x84')](function(_0xf359d9){_0x9f607c(_[_0xc63e('0x71')](_0xf359d9,[_0xc63e('0x4c')]));})['catch'](function(_0x4702ca){if(_0x4702ca[_0xc63e('0x113')]){rpcDb[_0xc63e('0x114')](_0x37071d);}if(_0x4702ca[_0xc63e('0x10e')]){rpcDb[_0xc63e('0x8d')](_0x37071d);}_0xfe418a(_[_0xc63e('0x71')](_0x4702ca,[_0xc63e('0x4c')]));});});};Preview[_0xc63e('0xc')][_0xc63e('0x112')]=function(_0x54083c,_0x354bea){var _0x14feec=this;return new BPromise(function(_0xac5512,_0x50bf45){var _0x4b1841,_0x3a0187;rpcDb['getContactPreview'](_0x54083c)['then'](function(_0x13c99f){if(!_[_0xc63e('0x6b')](_0x13c99f[0x0])){_0x3a0187=_0x13c99f[0x0]['recallme']?![]:!![];_0x4b1841=_0x13c99f[0x0][_0xc63e('0x115')]?!![]:![];_0x4b1841=_0x354bea?!![]:_0x4b1841;}var _0xe5f886=_0x14feec[_0xc63e('0x116')](_0x13c99f);if(_0xe5f886[_0xc63e('0x117')]){rpcDb['checkIsBlackList'](_[_0xc63e('0x71')](_0x13c99f[0x0],[_0xc63e('0x74'),_0xc63e('0x118')]))[_0xc63e('0x84')](function(_0x53e17e){_0x14feec['checkInBlack'](_0x53e17e,_0x13c99f[0x0],_0x354bea,_0x3a0187,_0x4b1841)[_0xc63e('0x84')](function(_0x592c29){_0xac5512(_0x592c29);})[_0xc63e('0x79')](function(_0x1a20f3){_0x50bf45(_0x1a20f3);});})[_0xc63e('0x79')](function(_0x969785){ut[_0xc63e('0x61')](_0xc63e('0x119'),_0x969785);_0x50bf45(ut['message']('Call\x20unsuccessful',_0x3a0187,_0x4b1841));});}else{_0x50bf45(ut['message'](_0xe5f886[_0xc63e('0x4c')],_0x3a0187,_0x4b1841));}})[_0xc63e('0x79')](function(_0x1ca4b5){ut[_0xc63e('0x61')](_0xc63e('0x11a'),_0x1ca4b5);_0x50bf45(ut['message']('Call\x20unsuccessful',![],!![]));});});};Preview[_0xc63e('0xc')][_0xc63e('0x116')]=function(_0x5799b2){if(_[_0xc63e('0x6b')](_0x5799b2)||_[_0xc63e('0x11b')](_0x5799b2)||!_[_0xc63e('0x6b')](_0x5799b2[0x0][_0xc63e('0x88')])&&_[_0xc63e('0x6b')](_0x5799b2[0x0][_0xc63e('0x88')][_0xc63e('0x28')])){ut[_0xc63e('0x61')](_0xc63e('0x11c'),_0x5799b2);return{'isValid':![],'message':_0xc63e('0x11d')};}var _0x6cdcc2=this[_0xc63e('0x11')][_0x5799b2[0x0][_0xc63e('0x102')][_0xc63e('0x28')]];_0x6cdcc2['message']=_0xc63e('0x11e');if(_[_0xc63e('0x6b')](_0x6cdcc2)){ut['logger'](_0xc63e('0x11f'),_0x6cdcc2);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0x6cdcc2[_0xc63e('0x51')])){ut[_0xc63e('0x61')](_0xc63e('0x120'),_0xc63e('0x121')+_0x6cdcc2[_0xc63e('0x28')]+_0xc63e('0x122'));if(!this[_0xc63e('0x9a')](_0x6cdcc2[_0xc63e('0x123')])){ut[_0xc63e('0x61')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x6cdcc2[_0xc63e('0x28')]+_0xc63e('0x124'));return{'isValid':![],'message':_0xc63e('0x125')};}}if(!ut[_0xc63e('0x99')](_0x6cdcc2[_0xc63e('0x31')])){ut['logger'](_0xc63e('0x126'),_0x6cdcc2[_0xc63e('0x28')]+'\x20Not\x20Active');return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x6cdcc2['name']+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xc63e('0x127')};};Preview[_0xc63e('0xc')]['execCall']=function(_0x514b3c,_0x48b1aa,_0x58c8c8,_0x58b92d){var _0x5bb2a5=this;return new BPromise(function(_0x5eb59b,_0x42e035){var _0x222a25=_0x514b3c[_0xc63e('0xed')];var _0x2d965b=_0x5bb2a5['isTrunkReachable'](_0x48b1aa[_0xc63e('0x51')])?util[_0xc63e('0x56')]('SIP/%s/%s%s',_0x48b1aa[_0xc63e('0x51')][_0xc63e('0x28')],_['isNil'](_0x48b1aa[_0xc63e('0x34')])?'':_0x48b1aa['dialPrefix'][_0xc63e('0x128')]()||'',_0x48b1aa[_0xc63e('0x129')]>0x0?_0x58c8c8[_0xc63e('0x100')][_0xc63e('0x101')]['substring'](_0x48b1aa[_0xc63e('0x129')]):_0x58c8c8['Contact']['phone']):util['format'](_0xc63e('0x12a'),_['isNil'](_0x48b1aa[_0xc63e('0x123')])?_0x48b1aa[_0xc63e('0x51')][_0xc63e('0x28')]:_0x48b1aa[_0xc63e('0x123')][_0xc63e('0x28')],_[_0xc63e('0x6b')](_0x48b1aa[_0xc63e('0x34')])?'':_0x48b1aa['dialPrefix'][_0xc63e('0x128')]()||'',_0x48b1aa[_0xc63e('0x129')]>0x0?_0x58c8c8[_0xc63e('0x100')][_0xc63e('0x101')][_0xc63e('0x12b')](_0x48b1aa['dialCutDigit']):_0x58c8c8[_0xc63e('0x100')]['phone']);var _0x4be25d=_0x5bb2a5[_0xc63e('0x9a')](_0x48b1aa['Trunk'])?ut[_0xc63e('0x12c')](_0x48b1aa['Trunk'][_0xc63e('0x52')],_0x48b1aa[_0xc63e('0x12d')],_0x48b1aa[_0xc63e('0x12e')]>0x0?ut['getCallerIdRandom'](_0x48b1aa[_0xc63e('0x32')],_0x48b1aa[_0xc63e('0x12e')]):_0x48b1aa[_0xc63e('0x32')]):ut['getCallerId'](_[_0xc63e('0x6b')](_0x48b1aa[_0xc63e('0x123')])?_0x48b1aa[_0xc63e('0x51')][_0xc63e('0x52')]:_0x48b1aa[_0xc63e('0x123')][_0xc63e('0x52')],_0x48b1aa[_0xc63e('0x12d')],_0x48b1aa['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xc63e('0x12f')](_0x48b1aa['dialOriginateCallerIdNumber'],_0x48b1aa[_0xc63e('0x12e')]):_0x48b1aa[_0xc63e('0x32')]);if(_0x4be25d){_0x514b3c[_0xc63e('0x130')]=ut[_0xc63e('0x131')](_0x4be25d);_0x514b3c['originatecalleridnum']=ut[_0xc63e('0x132')](_0x4be25d);}var _0x116c82=ut[_0xc63e('0x133')](_0x48b1aa,_0x58c8c8,_0x2d965b,_0x4be25d,_0x222a25,_0x514b3c);_[_0xc63e('0x134')](_0x514b3c,ut[_0xc63e('0x135')](_0x116c82));_0x514b3c['starttime']=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));ami[_0xc63e('0x76')](ut[_0xc63e('0x136')](_0x514b3c,_0x48b1aa,_0x116c82,_0x514b3c[_0xc63e('0xab')],_0x58b92d))[_0xc63e('0x84')](function(_0x3647b7){var _0x5e2297=_0x514b3c[_0xc63e('0x137')];if(!_[_0xc63e('0x6b')](_0x5e2297)){if(!_[_0xc63e('0x6b')](_0x5bb2a5[_0xc63e('0x15')][_0x5e2297])){_0x5bb2a5[_0xc63e('0x15')][_0x5e2297]['destconnectedlinenum']=_0x514b3c[_0xc63e('0x138')];emit(util['format'](_0xc63e('0x139'),_0x5bb2a5['agents'][_0x5e2297][_0xc63e('0x28')]),'user:agentconnect',{'destaccountcode':_0x5bb2a5[_0xc63e('0x15')][_0x5e2297][_0xc63e('0x13a')],'destconnectedlinenum':_0x514b3c[_0xc63e('0x138')]});}}_0x48b1aa[_0xc63e('0xee')]+=0x1;logger[_0xc63e('0x59')](_0xc63e('0x13b'),_0x222a25,_0xc63e('0xb1'),_0x48b1aa['name'],_0xc63e('0x6e'),_0x48b1aa[_0xc63e('0xee')]);_0x5eb59b(_0x3647b7);})[_0xc63e('0x79')](function(_0x519e96){ut[_0xc63e('0xf6')](_0x514b3c,0xe,_0xc63e('0x13c'));rpcDb[_0xc63e('0xf4')](_0x514b3c,_0xc63e('0x13d'));_0x42e035(_0x519e96);});});};Preview[_0xc63e('0xc')][_0xc63e('0x1f')]=function(_0x5722ef){if(this[_0xc63e('0x14')][_0x5722ef[_0xc63e('0xac')]]){this[_0xc63e('0x14')][_0x5722ef[_0xc63e('0xac')]][_0xc63e('0x78')]=_0x5722ef[_0xc63e('0x78')];}};Preview[_0xc63e('0xc')][_0xc63e('0x13e')]=function(_0x1c6176){var _0x4e398c=this;var _0x14385b=this['actions'][_0x1c6176['actionid']];if(_0x14385b){if(_0x14385b[_0xc63e('0x103')]&&this['agents'][_0x14385b['lookAgent']]){ut[_0xc63e('0x13f')](_0x14385b,this[_0xc63e('0x15')][_0x14385b[_0xc63e('0x103')]][_0xc63e('0x28')],this['agents'][_0x14385b[_0xc63e('0x103')]]['id']);}var _0x42a8d8=_['clone'](_0x14385b);_0x42a8d8[_0xc63e('0xae')]=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));var _0x49d00c=_0x4e398c['campaignsPreview'][_0x14385b[_0xc63e('0x6d')]];if(ut[_0xc63e('0x140')](_0x1c6176[_0xc63e('0x141')])){if(_0x14385b[_0xc63e('0xc3')]){rpcDb[_0xc63e('0x114')](_0x14385b[_0xc63e('0x108')]);}if(_0x14385b[_0xc63e('0xab')]){rpcDb[_0xc63e('0x8d')](_0x14385b[_0xc63e('0x108')]);}ami[_0xc63e('0x25')]('custom:agentringnoanswer',ut['buildObj'](_0x14385b,'rejected',this[_0xc63e('0x11')][_0x14385b['queue']]));this[_0xc63e('0x142')](_0x42a8d8,_0x49d00c,_0x1c6176);}else{_0x14385b[_0xc63e('0x8e')]=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));ut[_0xc63e('0xf6')](_0x42a8d8,0x4,_0xc63e('0xb9'));rpcDb[_0xc63e('0xf4')](_0x42a8d8,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xc63e('0xc')][_0xc63e('0x19')]=function(_0x5ec251){var _0x3c0c60=this;var _0x17e8e5=this['actions'][_0x5ec251[_0xc63e('0xac')]];var _0x27f1e4;if(_0x17e8e5){_0x27f1e4=this[_0xc63e('0x11')][_0x17e8e5[_0xc63e('0x6d')]];logger[_0xc63e('0x59')]('[syncHangup][talking]',_0x5ec251[_0xc63e('0xac')],_0xc63e('0xb1'),_0x27f1e4['name'],'pTalking:\x20',_0x27f1e4['pTalking']);}if(this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]]&&_0x5ec251[_0xc63e('0xac')]!==_0x5ec251[_0xc63e('0xed')]){if(_0x5ec251[_0xc63e('0x143')]==='16'&&this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]][_0xc63e('0x70')]){this['callProgressDetectingCustomer'](_0x5ec251,_0x5ec251['linkedid'],_0x5ec251[_0xc63e('0x143')]);}else if(this[_0xc63e('0x14')][_0x5ec251['linkedid']][_0xc63e('0x70')]){logger[_0xc63e('0x59')](_0xc63e('0x144'),_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')],_0xc63e('0xb1'),_0x27f1e4['name'],_0xc63e('0x6f'),_0x27f1e4[_0xc63e('0x5e')]);this[_0xc63e('0x9c')](_0x5ec251,_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')]);}}else if(_0x17e8e5&&_[_0xc63e('0x6b')](_0x17e8e5[_0xc63e('0x145')])&&_0x27f1e4[_0xc63e('0x146')]&&_0x5ec251[_0xc63e('0xac')]===_0x5ec251[_0xc63e('0xed')]&&_[_0xc63e('0x6b')](_0x5ec251['reason'])&&_0x5ec251[_0xc63e('0x143')]==='16'&&_0x5ec251[_0xc63e('0x147')]==='6'&&_[_0xc63e('0xf0')](_0x17e8e5[_0xc63e('0x148')])){if(_0x17e8e5[_0xc63e('0xc3')]){rpcDb[_0xc63e('0x114')](_0x17e8e5[_0xc63e('0x108')]);}if(_0x17e8e5[_0xc63e('0xab')]){rpcDb[_0xc63e('0x8d')](_0x17e8e5['idContact']);}_0x5ec251[_0xc63e('0xf2')]='22';this[_0xc63e('0x142')](_0x17e8e5,_0x27f1e4,_0x5ec251);}else if(_0x17e8e5&&_0x17e8e5[_0xc63e('0x148')]){if(_0x5ec251[_0xc63e('0x143')]==='16'&&this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]][_0xc63e('0x70')]){logger[_0xc63e('0x59')](_0xc63e('0x149'),_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')],_0xc63e('0xb1'),_0x27f1e4[_0xc63e('0x28')],_0xc63e('0x6f'),_0x27f1e4[_0xc63e('0x5e')]);this[_0xc63e('0x9c')](_0x5ec251,_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')]);}else if(this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]][_0xc63e('0x70')]){logger[_0xc63e('0x59')]('[syncHangup][talking][cause]',_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')],'\x20Queue',_0x27f1e4['name'],'pTalking:\x20',_0x27f1e4['pTalking']);this[_0xc63e('0x9c')](_0x5ec251,_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')]);}}};Preview[_0xc63e('0xc')][_0xc63e('0x1d')]=function(_0x194b49){if(this[_0xc63e('0x14')][_0x194b49[_0xc63e('0xef')]]&&_0x194b49[_0xc63e('0xef')]!==_0x194b49[_0xc63e('0x14a')]){this[_0xc63e('0x9c')](_0x194b49,_0x194b49[_0xc63e('0xef')],_0x194b49[_0xc63e('0xe3')]);}};Preview[_0xc63e('0xc')][_0xc63e('0x1b')]=function(_0x53d8b4){if(this[_0xc63e('0x14')][_0x53d8b4[_0xc63e('0xac')]]&&_0x53d8b4['linkedid']!==_0x53d8b4[_0xc63e('0xed')]&&!this[_0xc63e('0x14')][_0x53d8b4[_0xc63e('0xac')]][_0xc63e('0x70')]){if(_0x53d8b4[_0xc63e('0x143')]==='1'){this[_0xc63e('0x9c')](_0x53d8b4,_0x53d8b4[_0xc63e('0xac')],_0x53d8b4[_0xc63e('0x143')]);}}};Preview['prototype']['addVariable']=function(_0x26aa35,_0x200d6e,_0x246730){if(this[_0xc63e('0x14')][_0x26aa35]){if(_[_0xc63e('0x6b')](this['actions'][_0x26aa35][_0xc63e('0x14b')])){this[_0xc63e('0x14')][_0x26aa35][_0xc63e('0x14b')]={};}this['actions'][_0x26aa35][_0xc63e('0x14b')][_0x200d6e]=_0x246730;}};Preview[_0xc63e('0xc')][_0xc63e('0x14c')]=function(_0x4a022f){try{if(!_[_0xc63e('0x6b')](_0x4a022f)){if(ut[_0xc63e('0x14d')](_['keys'](_0x4a022f[_0xc63e('0x14e')])[0x0])){this[_0xc63e('0x14f')](_0x4a022f[_0xc63e('0xed')],_[_0xc63e('0x150')](_0x4a022f[_0xc63e('0x14e')])[0x0],_0x4a022f[_0xc63e('0x151')]);}}}catch(_0x1b22ae){logger[_0xc63e('0x152')]('[syncVarSet][Preview]',util[_0xc63e('0x153')](_0x1b22ae,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0xc63e('0x22')]=function(_0x4d0def){if(_0x4d0def){if(this[_0xc63e('0x14')][_0x4d0def[_0xc63e('0x154')]]){this['actions'][_0x4d0def[_0xc63e('0x154')]][_0xc63e('0x148')]=!![];}}};Preview[_0xc63e('0xc')][_0xc63e('0x155')]=function(_0x195531){if(_0x195531){if(this[_0xc63e('0x14')][_0x195531[_0xc63e('0x156')]]){this[_0xc63e('0x14')][_0x195531[_0xc63e('0x156')]][_0xc63e('0x148')]=!![];}}};module[_0xc63e('0x157')]=Preview;
\ No newline at end of file
+var _0x8090=['object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','checkInBlack','Contact','phone','lookAgent','isEmpty','execCall','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','pick','unlock','getContactPreview','recallme','validateContact','checkIsBlackList','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','isFailure','response','unlockContact','custom:agentringnoanswer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','variables','syncVarSet','filterKey','variable','keys','value','error','[syncVarSet][Preview]','inspect','transfererlinkedid','exports','lodash','ioredis','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','defaults','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','available','pTalking','sumBillable','sumHoldTime','total','unmanaged','abandoned','waiting','dialActive','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','syncCampaigns','clockClearZombieChannels','dialMethod','booked','setMessage','recallMe','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','contactId','UserId','VoiceQueueId','Action','status','channel','catch','No\x20such\x20channel','[clearZombieChannel]','dialAnswer','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','clearZombieChannels','[action]','size','hasOwnProperty','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','logCustomer','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','createCustomerFinal','rescheduleContact','scheduledAt','unlockAgent','linkedid','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','countglobal','Busy','custom:agentbusy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','activeContact','NOANSWER','countnoanswerretry','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoAnswerGlobal]','CONGESTION','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','countcongestionretry','dialBusyRetryFrequency','CANCEL','countagentrejectretry','custom:agentreject','agentreject','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','decrementTalkink','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined'];(function(_0x324d77,_0x307ef7){var _0x2a77a7=function(_0x54120e){while(--_0x54120e){_0x324d77['push'](_0x324d77['shift']());}};_0x2a77a7(++_0x307ef7);}(_0x8090,0x69));var _0x0809=function(_0x1233d2,_0x5416f4){_0x1233d2=_0x1233d2-0x0;var _0x22759e=_0x8090[_0x1233d2];return _0x22759e;};'use strict';var util=require('util');var _=require(_0x0809('0x0'));var BPromise=require('bluebird');var uuid=require('uuid');var moment=require('moment');var md5=require('md5');var Redis=require(_0x0809('0x1'));var config=require('../../../config/environment');var logger=require(_0x0809('0x2'))(_0x0809('0x3'));var loggerAction=require(_0x0809('0x2'))(_0x0809('0x4'));var ami=require(_0x0809('0x5'));var rpcDb=require(_0x0809('0x6'));var Action=require(_0x0809('0x7'));var ut=require(_0x0809('0x8'));config['redis']=_[_0x0809('0x9')](config[_0x0809('0xa')],{'host':_0x0809('0xb'),'port':0x18eb});var io=require(_0x0809('0xc'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x0809('0xd')][_0x0809('0xe')]=function(_0x54b173){this[_0x0809('0xf')]=this[_0x0809('0xf')]?this[_0x0809('0xf')][_0x0809('0x10')](_0x54b173):_0x54b173();};function Preview(_0x54a6d2){this[_0x0809('0x11')]=new Sequence();this[_0x0809('0x12')]=_0x54a6d2[_0x0809('0x13')];this[_0x0809('0x14')]=_0x54a6d2[_0x0809('0x14')];this[_0x0809('0x15')]={};this['agents']=_0x54a6d2[_0x0809('0x16')];this['clockClearZombieChannels']=0x0;ami['on'](_0x0809('0x17'),this[_0x0809('0x18')][_0x0809('0x19')](this));ami['on'](_0x0809('0x1a'),this[_0x0809('0x1b')]['bind'](this));ami['on'](_0x0809('0x1c'),this[_0x0809('0x1d')][_0x0809('0x19')](this));ami['on'](_0x0809('0x1e'),this[_0x0809('0x1f')][_0x0809('0x19')](this));ami['on'](_0x0809('0x20'),this['syncNewExten'][_0x0809('0x19')](this));ami['on']('varset',this['syncVarSet'][_0x0809('0x19')](this));ami['on'](_0x0809('0x21'),this[_0x0809('0x22')][_0x0809('0x19')](this));ami['on'](_0x0809('0x23'),this[_0x0809('0x24')][_0x0809('0x19')](this));this[_0x0809('0x25')](this[_0x0809('0x12')]);}function emit(_0x21ef1b,_0x13be16,_0x174a90){io['to'](_0x21ef1b)[_0x0809('0x26')](_0x13be16,_0x174a90);}function emitCampaignPreview(_0x25b376){if(_0x25b376[_0x0809('0x27')]===_0x0809('0x28')){var _0x3173ef={'id':_0x25b376['id'],'name':_0x25b376[_0x0809('0x29')],'strategy':_0x25b376[_0x0809('0x2a')],'answered':_0x25b376[_0x0809('0x2b')],'available':_0x25b376[_0x0809('0x2c')],'loggedIn':_0x25b376['loggedIn'],'pTalking':_0x25b376[_0x0809('0x2d')],'sumBillable':_0x25b376[_0x0809('0x2e')],'sumDuration':_0x25b376['sumDuration'],'sumHoldTime':_0x25b376[_0x0809('0x2f')]||0x0,'talking':_0x25b376['talking'],'total':_0x25b376[_0x0809('0x30')],'type':_0x25b376['type'],'unmanaged':_0x25b376[_0x0809('0x31')],'abandoned':_0x25b376[_0x0809('0x32')],'waiting':_0x25b376[_0x0809('0x33')],'loggedInDb':_0x25b376['loggedInDb'],'dialActive':_0x25b376[_0x0809('0x34')],'dialMethod':_0x25b376['dialMethod'],'dialOriginateCallerIdName':_0x25b376[_0x0809('0x35')],'dialOriginateCallerIdNumber':_0x25b376['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x25b376[_0x0809('0x36')],'dialPrefix':_0x25b376['dialPrefix'],'outboundAnswerAgiCallsDay':_0x25b376[_0x0809('0x37')],'outboundAnswerCallsDay':_0x25b376[_0x0809('0x38')],'outboundBlacklistCallsDay':_0x25b376[_0x0809('0x39')],'outboundBusyCallsDay':_0x25b376['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x25b376[_0x0809('0x3a')],'outboundDropCallsDayACS':_0x25b376[_0x0809('0x3b')],'outboundDropCallsDayCallersExit':_0x25b376[_0x0809('0x3c')],'outboundDropCallsDayTimeout':_0x25b376[_0x0809('0x3d')],'outboundNoAnswerCallsDay':_0x25b376[_0x0809('0x3e')],'outboundNoSuchCallsDay':_0x25b376['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x25b376[_0x0809('0x3f')],'outboundReCallsDay':_0x25b376[_0x0809('0x40')],'outboundRejectCallsDay':_0x25b376[_0x0809('0x41')],'outboundUnknownCallsDay':_0x25b376[_0x0809('0x42')],'outboundAbandonedCallsDay':_0x25b376[_0x0809('0x43')],'predictiveIntervalAnsweredCalls':_0x25b376['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x25b376['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x25b376[_0x0809('0x44')],'predictiveIntervalDroppedCallsCallersExit':_0x25b376[_0x0809('0x45')],'predictiveIntervalDroppedCallsTimeout':_0x25b376[_0x0809('0x46')],'predictiveIntervalErlangCalls':_0x25b376['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x25b376['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x25b376[_0x0809('0x47')],'predictiveIntervalMultiplicativeFactor':_0x25b376[_0x0809('0x48')],'predictiveIntervalPauses':_0x25b376[_0x0809('0x49')],'predictiveIntervalAvailable':_0x25b376[_0x0809('0x4a')],'predictiveIntervalTotalCalls':_0x25b376['predictiveIntervalTotalCalls'],'message':_0x25b376[_0x0809('0x4b')],'originated':_0x25b376[_0x0809('0x4c')],'erlangCalls':_0x25b376[_0x0809('0x4d')],'erlangCallToSecond':_0x25b376[_0x0809('0x4e')],'erlangAbandonmentRate':_0x25b376[_0x0809('0x4f')],'erlangBusyFactor':_0x25b376[_0x0809('0x50')],'startPredictive':_0x25b376[_0x0809('0x51')],'startProgressive':_0x25b376[_0x0809('0x52')]};if(_0x25b376[_0x0809('0x53')]){_0x3173ef[_0x0809('0x53')]={'id':_0x25b376[_0x0809('0x53')]['id'],'name':_0x25b376[_0x0809('0x53')][_0x0809('0x29')],'active':_0x25b376['Trunk'][_0x0809('0x54')],'callerid':_0x25b376['Trunk'][_0x0809('0x55')]};}if(_0x25b376[_0x0809('0x56')]){_0x3173ef[_0x0809('0x56')]={'id':_0x25b376[_0x0809('0x56')]['id'],'name':_0x25b376[_0x0809('0x56')][_0x0809('0x29')]};}var _0x44c124=md5(JSON[_0x0809('0x57')](_0x3173ef));if(_0x25b376[_0x0809('0x58')]!==_0x44c124){_0x25b376[_0x0809('0x58')]=_0x44c124;emit(util[_0x0809('0x59')](_0x0809('0x5a'),_0x3173ef[_0x0809('0x29')]),_0x0809('0x5b'),_0x3173ef);}}}function emitVoiceQueueChannelRemove(_0x338f6e){logger[_0x0809('0x5c')](_0x0809('0x5d'),JSON['stringify'](_0x338f6e));emit(util[_0x0809('0x59')]('voice:queue:%s',_0x338f6e[_0x0809('0x29')]),_0x0809('0x5e'),_0x338f6e);io[_0x0809('0x26')](_0x0809('0x5f'),_0x338f6e);}function notSendMessagesQueue(_0x34516c){if(_0x34516c[_0x0809('0x60')]){if(_0x34516c[_0x0809('0x4c')]===0x0&&_0x34516c[_0x0809('0x2d')]===0x0){_0x34516c[_0x0809('0x60')]=![];_0x34516c['available']=0x0;_0x34516c[_0x0809('0x61')]=0x0;_0x34516c[_0x0809('0x4b')]=_0x0809('0x62');ut[_0x0809('0x63')](_0x0809('0x64'),_0x34516c[_0x0809('0x29')]+_0x0809('0x65'));}else{_0x34516c[_0x0809('0x4b')]=_0x0809('0x66');ut[_0x0809('0x63')](_0x0809('0x64'),_0x34516c[_0x0809('0x29')]+'\x20is\x20disactive');}emitCampaignPreview(_0x34516c);}}Preview[_0x0809('0xd')]['loopCampaigns']=function(){var _0x14eea0=this;setInterval(function(){_0x14eea0[_0x0809('0x67')]();},0x7cf);};Preview[_0x0809('0xd')]['syncCampaigns']=function(){var _0x2fb5fc=this[_0x0809('0x12')];this[_0x0809('0x68')]+=0x1;for(var _0x12d214 in _0x2fb5fc){if(_0x2fb5fc['hasOwnProperty'](_0x12d214)&&(_0x2fb5fc[_0x12d214][_0x0809('0x69')]===_0x0809('0x3')||_0x2fb5fc[_0x12d214][_0x0809('0x69')]===_0x0809('0x6a'))&&_0x2fb5fc[_0x12d214][_0x0809('0x27')]==='outbound'){if(this[_0x0809('0x68')]>0x7){this[_0x0809('0x68')]=0x0;this['clearZombieChannels']();}}if(_0x2fb5fc['hasOwnProperty'](_0x12d214)&&_0x2fb5fc[_0x12d214][_0x0809('0x69')]===_0x0809('0x3')&&_0x2fb5fc[_0x12d214][_0x0809('0x27')]===_0x0809('0x28')){if(_0x2fb5fc[_0x12d214][_0x0809('0x34')]){this[_0x0809('0x6b')](_0x2fb5fc[_0x12d214]);this[_0x0809('0x6c')](_0x2fb5fc[_0x12d214]);}else{notSendMessagesQueue(_0x2fb5fc[_0x12d214]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x36d410){var _0x349cb2=this;this[_0x0809('0x11')][_0x0809('0xe')](function(){if(!_[_0x0809('0x6d')](_0x349cb2[_0x0809('0x15')][_0x36d410])){loggerAction['info'](_0x0809('0x6e'),_0x36d410,_0x0809('0x6f'),_0x349cb2[_0x0809('0x15')][_0x36d410][_0x0809('0x70')],_0x0809('0x71'),JSON[_0x0809('0x57')](_0x349cb2[_0x0809('0x12')][_0x349cb2['actions'][_0x36d410]['queue']][_0x0809('0x4c')]),_0x0809('0x72'),JSON[_0x0809('0x57')](_0x349cb2[_0x0809('0x12')][_0x349cb2['actions'][_0x36d410][_0x0809('0x70')]][_0x0809('0x2d')]),JSON['stringify'](_0x349cb2[_0x0809('0x15')][_0x36d410]['dialAnswer']),JSON[_0x0809('0x57')](_['pick'](_0x349cb2[_0x0809('0x15')][_0x36d410],[_0x0809('0x73'),_0x0809('0x74'),_0x0809('0x75'),'ListId'])));return ami[_0x0809('0x76')]({'action':_0x0809('0x77'),'channel':_0x349cb2[_0x0809('0x15')][_0x36d410][_0x0809('0x78')]})[_0x0809('0x79')](function(_0x2cfb58){if(_0x2cfb58[_0x0809('0x4b')]===_0x0809('0x7a')){setTimeout(function(){if(_0x349cb2[_0x0809('0x15')][_0x36d410]){ut['updateOriginated'](_0x349cb2[_0x0809('0x12')][_0x349cb2[_0x0809('0x15')][_0x36d410][_0x0809('0x70')]],_0x0809('0x7b'));if(_0x349cb2[_0x0809('0x15')][_0x36d410][_0x0809('0x7c')]===!![]){ut['decrementTalkink'](_0x349cb2[_0x0809('0x12')][_0x349cb2[_0x0809('0x15')][_0x36d410]['queue']],'[clearZombieChannel]');ut['loggerError'](_0x0809('0x7d')+_0x36d410,_0x349cb2[_0x0809('0x15')][_0x36d410][_0x0809('0x70')]);}ut[_0x0809('0x7e')](_0x0809('0x7f')+_0x36d410,_0x349cb2[_0x0809('0x15')][_0x36d410][_0x0809('0x70')]);delete _0x349cb2[_0x0809('0x15')][_0x36d410];}},0x2328);}});}});};Preview['prototype'][_0x0809('0x80')]=function(){var _0x60243f=this;loggerAction['info'](_0x0809('0x81'),_[_0x0809('0x82')](this['actions']));for(var _0x46f45c in this[_0x0809('0x15')]){if(_0x60243f[_0x0809('0x15')][_0x0809('0x83')](_0x46f45c)){_0x60243f['clearZombieChannel'](_0x46f45c);}}};Preview[_0x0809('0xd')]['recallMe']=function(_0x2ee8f8){var _0x181888=this;rpcDb[_0x0809('0x84')](_0x2ee8f8['id'],ut[_0x0809('0x85')](this[_0x0809('0x16')]))[_0x0809('0x86')](function(_0x374e1f){if(!_[_0x0809('0x6d')](_0x374e1f)){for(var _0x47c2a5=0x0;_0x47c2a5<_0x374e1f['length'];_0x47c2a5+=0x1){if(ut[_0x0809('0x87')](_0x374e1f[_0x47c2a5][_0x0809('0x88')])<_0x2ee8f8[_0x0809('0x89')]*0x3c){if(_0x374e1f[_0x47c2a5][_0x0809('0x8a')]&&!_0x374e1f[_0x47c2a5][_0x0809('0x8a')]['voicePause']){_0x181888[_0x0809('0x8b')](_0x374e1f[_0x47c2a5]['id'])[_0x0809('0x86')](ut[_0x0809('0x8c')](_0x0809('0x8d')))[_0x0809('0x79')](ut[_0x0809('0x8c')](_0x0809('0x8d')));}else{rpcDb[_0x0809('0x8e')](_0x374e1f[_0x47c2a5]['id']);}}else{var _0x2c00ca=new Action(_0x374e1f[_0x47c2a5],_0x2ee8f8);_0x2c00ca[_0x0809('0x8f')]=moment()['format'](_0x0809('0x90'));_0x2ee8f8[_0x0809('0x40')]+=0x1;ut['logCustomer'](_0x2c00ca,0x17,_0x0809('0x91'));if(_0x2ee8f8[_0x0809('0x92')]){rpcDb[_0x0809('0x93')](ut[_0x0809('0x94')](_0x374e1f[_0x47c2a5]));rpcDb[_0x0809('0x95')](_0x2c00ca,_0x0809('0x96'));}else{ut[_0x0809('0x97')](_0x2c00ca,0x16,_0x0809('0x98'));rpcDb[_0x0809('0x95')](_0x2c00ca,_0x0809('0x99'));rpcDb['createCustomerFinal'](_0x2c00ca,'[HistoryRecallClose]');}}}}})['catch'](ut[_0x0809('0x8c')](_0x0809('0x9a')));};Preview['prototype'][_0x0809('0x6b')]=function(_0x205854){_0x205854['sendMessageOneNotActive']=!![];if(ut[_0x0809('0x9b')](_0x205854['loggedIn'])){_0x205854['message']=_0x0809('0x9c');}else if(!ut['isActive'](_0x205854[_0x0809('0x34')])){_0x205854['message']=_0x0809('0x62');}else if(!this['isTrunkReachable'](_0x205854[_0x0809('0x53')])){if(!this[_0x0809('0x9d')](_0x205854[_0x0809('0x9e')])){_0x205854[_0x0809('0x4b')]=_0x0809('0x9f');}else{_0x205854[_0x0809('0x4b')]=_0x0809('0xa0');}}else{_0x205854[_0x0809('0x4b')]='ACTIVE';}emitCampaignPreview(_0x205854);};Preview[_0x0809('0xd')][_0x0809('0xa1')]=function(_0x29ce79,_0x235fe5,_0x337f21){var _0x41323a=this;var _0x2f4316=this[_0x0809('0x15')][_0x235fe5];var _0x3ae2e0=this[_0x0809('0x12')][_0x2f4316['queue']];var _0x157ffa;if(_0x3ae2e0){switch(_0x337f21){case'1':_0x3ae2e0[_0x0809('0xa2')]+=0x1;_0x2f4316[_0x0809('0xa3')]+=0x1;_0x2f4316['countglobal']=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x0,_0x0809('0xa5'));ami['emit'](_0x0809('0xa6'),ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xa8')));rpcDb[_0x0809('0x95')](_0x2f4316,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0['dialGlobalMaxRetry']){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,_0x0809('0xaa'));rpcDb['createCustomerFinal'](_0x157ffa,_0x0809('0xab'));}else{if(_0x2f4316[_0x0809('0xa3')]>=_0x3ae2e0[_0x0809('0xac')]){rpcDb[_0x0809('0xad')](_0x2f4316,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x0809('0xae')](ut[_0x0809('0xaf')](_0x2f4316,'countnosuchnumberretry',_0x3ae2e0['dialNoSuchNumberRetryFrequency']),_0x2f4316[_0x0809('0xb0')],_0x2f4316['activeContact']);}}delete this[_0x0809('0x15')][_0x29ce79[_0x0809('0xb1')]];break;case _0x0809('0xb2'):var _0x8016ee=moment()[_0x0809('0x59')]('YYYY-MM-DD\x20HH:mm:ss');_0x2f4316[_0x0809('0xb3')]=_0x8016ee;_0x2f4316['answertime']=_0x8016ee;_0x2f4316[_0x0809('0x7c')]=!![];_0x3ae2e0[_0x0809('0x2d')]+=0x1;logger['info'](_0x0809('0xb4'),_0x2f4316[_0x0809('0xb5')],_0x0809('0xb6'),_0x3ae2e0[_0x0809('0x29')],_0x0809('0x72'),_0x3ae2e0[_0x0809('0x2d')]);ami['emit'](_0x0809('0xb7'),ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xb8'),this['campaignsPreview'][_0x2f4316[_0x0809('0x70')]]));if(_0x3ae2e0[_0x0809('0xb9')]){ami[_0x0809('0x26')](_0x0809('0xba'),ut[_0x0809('0xbb')](_0x2f4316));}break;case'16':ami['emit'](_0x0809('0xbc'),ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xbd'),this[_0x0809('0x12')][_0x2f4316[_0x0809('0x70')]]));emitVoiceQueueChannelRemove(ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xbd')));_0x3ae2e0[_0x0809('0x38')]+=0x1;_0x3ae2e0['total']+=0x1;_0x3ae2e0[_0x0809('0x2b')]+=0x1;ut['decrementTalkink'](_0x3ae2e0,_0x0809('0xbe'));_0x2f4316['countglobal']=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x4,'Answer');rpcDb[_0x0809('0x95')](_0x2f4316,_0x0809('0xbf'));rpcDb[_0x0809('0xad')](_0x2f4316,_0x0809('0xc0'));rpcDb[_0x0809('0xc1')](_0x2f4316);_0x3ae2e0['sumDuration']+=_0x2f4316['talktime'];_0x3ae2e0[_0x0809('0x2e')]+=_0x2f4316[_0x0809('0xc2')];logger[_0x0809('0x5c')](_0x0809('0xc3'),_0x2f4316['uniqueid'],_0x0809('0xb6'),_0x3ae2e0[_0x0809('0x29')],_0x0809('0x72'),_0x3ae2e0[_0x0809('0x2d')]);delete this[_0x0809('0x15')][_0x29ce79['linkedid']];break;case _0x0809('0xc4'):_0x3ae2e0[_0x0809('0xc5')]+=0x1;_0x2f4316[_0x0809('0xc6')]+=0x1;_0x2f4316[_0x0809('0xc7')]=ut[_0x0809('0xa4')](_0x2f4316);ut['logCustomer'](_0x2f4316,0x5,_0x0809('0xc8'));ami[_0x0809('0x26')](_0x0809('0xc9'),ut[_0x0809('0xa7')](_0x2f4316,'busy'));rpcDb['createCustomerHistory'](_0x2f4316,'[callProgressDetectingCustomer][logBusy]');if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0['dialGlobalMaxRetry']){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,'Global');rpcDb[_0x0809('0xad')](_0x157ffa,_0x0809('0xca'));}else{if(_0x2f4316['countbusyretry']>=_0x3ae2e0[_0x0809('0xcb')]){rpcDb['createCustomerFinal'](_0x2f4316,_0x0809('0xcc'));}else{rpcDb[_0x0809('0xae')](ut['scheduledAt'](_0x2f4316,_0x0809('0xc6'),_0x3ae2e0['dialBusyRetryFrequency']),_0x2f4316['unlockAgent'],_0x2f4316[_0x0809('0xcd')]);}}break;case _0x0809('0xce'):_0x3ae2e0[_0x0809('0x3e')]+=0x1;_0x2f4316[_0x0809('0xcf')]+=0x1;_0x2f4316[_0x0809('0xc7')]=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x3,'NoAnswer');ami[_0x0809('0x26')](_0x0809('0xd0'),ut['buildObj'](_0x2f4316,'noanswer'));rpcDb['createCustomerHistory'](_0x2f4316,_0x0809('0xd1'));if(ut['totalGlobal'](_0x2f4316)>=_0x3ae2e0[_0x0809('0xd2')]){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,_0x0809('0xaa'));rpcDb['createCustomerFinal'](_0x157ffa,_0x0809('0xd3'));}else{if(_0x2f4316[_0x0809('0xcf')]>=_0x3ae2e0['dialNoAnswerMaxRetry']){rpcDb[_0x0809('0xad')](_0x2f4316,_0x0809('0xd1'));}else{rpcDb['rescheduleContact'](ut[_0x0809('0xaf')](_0x2f4316,_0x0809('0xcf'),_0x3ae2e0['dialNoAnswerRetryFrequency']),_0x2f4316[_0x0809('0xb0')],_0x2f4316['activeContact']);}}break;case _0x0809('0xd4'):_0x3ae2e0['outboundCongestionCallsDay']+=0x1;_0x2f4316['countcongestionretry']+=0x1;_0x2f4316[_0x0809('0xc7')]=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x8,_0x0809('0xd5'));ami[_0x0809('0x26')](_0x0809('0xd6'),ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xd7')));rpcDb[_0x0809('0x95')](_0x2f4316,_0x0809('0xd8'));if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0[_0x0809('0xd2')]){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,_0x0809('0xaa'));rpcDb[_0x0809('0xad')](_0x157ffa,_0x0809('0xd9'));}else{if(_0x2f4316['countcongestionretry']>=_0x3ae2e0[_0x0809('0xda')]){rpcDb[_0x0809('0xad')](_0x2f4316,_0x0809('0xd8'));}else{rpcDb[_0x0809('0xae')](ut['scheduledAt'](_0x2f4316,_0x0809('0xdb'),_0x3ae2e0[_0x0809('0xdc')]),_0x2f4316[_0x0809('0xb0')],_0x2f4316[_0x0809('0xcd')]);}}break;case _0x0809('0xdd'):_0x3ae2e0['outboundRejectCallsDay']+=0x1;_0x2f4316[_0x0809('0xde')]+=0x1;_0x2f4316[_0x0809('0xc7')]=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x14,'AgentReject');ami['emit'](_0x0809('0xdf'),ut['buildObj'](_0x2f4316,_0x0809('0xe0')));rpcDb['createCustomerHistory'](_0x2f4316,'[syncHangupRequest][logAgentReject]');if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0['dialGlobalMaxRetry']){_0x157ffa=ut['cloneAction'](_0x2f4316,0x14,_0x0809('0xe1'));rpcDb['createCustomerFinal'](_0x157ffa,_0x0809('0xe2'));}else{if(_0x2f4316[_0x0809('0xde')]>=_0x3ae2e0['dialAgentRejectMaxRetry']){rpcDb['createCustomerFinal'](_0x2f4316,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2f4316,'countagentrejectretry',_0x3ae2e0[_0x0809('0xe3')]),_0x2f4316[_0x0809('0xb0')],_0x2f4316[_0x0809('0xcd')]);}}break;case'ABANDONED':_0x3ae2e0['outboundAbandonedCallsDay']+=0x1;_0x2f4316[_0x0809('0xe4')]+=0x1;_0x2f4316['countglobal']=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0xb,'Abandoned');rpcDb[_0x0809('0x95')](_0x2f4316,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0['dialGlobalMaxRetry']){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,_0x0809('0xaa'));rpcDb[_0x0809('0xad')](_0x157ffa,_0x0809('0xe5'));}else{if(_0x2f4316[_0x0809('0xe6')]>=_0x3ae2e0[_0x0809('0xe7')]){rpcDb[_0x0809('0xad')](_0x2f4316,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x0809('0xae')](ut[_0x0809('0xaf')](_0x2f4316,_0x0809('0xe4'),_0x3ae2e0[_0x0809('0xe8')]),_0x2f4316[_0x0809('0xb0')],_0x2f4316['activeContact']);}}break;case'18':_0x3ae2e0[_0x0809('0x42')]+=0x1;_0x2f4316['countmachineretry']+=0x1;_0x2f4316[_0x0809('0xc7')]=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x12,_0x29ce79[_0x0809('0xe9')]||_0x29ce79[_0x0809('0xea')]);ami[_0x0809('0x26')](_0x0809('0xeb'),ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xec')));rpcDb[_0x0809('0x95')](_0x2f4316,_0x0809('0xed'));if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0[_0x0809('0xd2')]){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,_0x0809('0xaa'));rpcDb[_0x0809('0xad')](_0x157ffa,_0x0809('0xed'));}else{rpcDb['createCustomerFinal'](_0x2f4316,_0x0809('0xed'));}delete this[_0x0809('0x15')][_0x29ce79['linkedid']];break;case'19':_0x3ae2e0[_0x0809('0x42')]+=0x1;_0x2f4316['countglobal']=ut[_0x0809('0xa4')](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0x13,_0x29ce79['cause-txt']||_0x29ce79[_0x0809('0xea')]);ami[_0x0809('0x26')]('custom:amd',ut[_0x0809('0xa7')](_0x2f4316,_0x0809('0xec')));rpcDb['createCustomerHistory'](_0x2f4316,_0x0809('0xee'));if(ut['totalGlobal'](_0x2f4316)>=_0x3ae2e0[_0x0809('0xd2')]){_0x157ffa=ut['cloneAction'](_0x2f4316,0xf,'Global');rpcDb[_0x0809('0xad')](_0x157ffa,_0x0809('0xee'));}else{rpcDb[_0x0809('0xad')](_0x2f4316,_0x0809('0xee'));}delete this[_0x0809('0x15')][_0x29ce79[_0x0809('0xb1')]];break;default:if(_0x2f4316[_0x0809('0x7c')]){ut[_0x0809('0xef')](_0x3ae2e0,_0x0809('0xf0'));ut['loggerError'](_0x0809('0xf1')+_0x3ae2e0[_0x0809('0x29')],_0x29ce79);}_0x3ae2e0[_0x0809('0x42')]+=0x1;_0x2f4316['countglobal']=ut['totalGlobal'](_0x2f4316);ut[_0x0809('0x97')](_0x2f4316,0xc,_0x29ce79['cause-txt']||_0x29ce79[_0x0809('0xea')]);rpcDb[_0x0809('0x95')](_0x2f4316,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0x0809('0xa4')](_0x2f4316)>=_0x3ae2e0[_0x0809('0xd2')]){_0x157ffa=ut[_0x0809('0xa9')](_0x2f4316,0xf,_0x0809('0xaa'));rpcDb[_0x0809('0xad')](_0x157ffa,_0x0809('0xf2'));}else{rpcDb[_0x0809('0xad')](_0x2f4316,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0x0809('0x15')][_0x29ce79[_0x0809('0xb1')]];}if(!(_0x2f4316[_0x0809('0x7c')]&&_0x337f21==='16')){ut[_0x0809('0xf3')](_0x3ae2e0,_0x0809('0xf4'));logger[_0x0809('0x5c')](_0x0809('0xf5'),_0x2f4316[_0x0809('0xb5')],'\x20Queue',_0x3ae2e0['name'],'originated:\x20',_0x3ae2e0['originated']);}if(_0x337f21!==_0x0809('0xb2')){delete this[_0x0809('0x15')][_0x29ce79[_0x0809('0xb1')]];delete this['actions'][_0x29ce79['destlinkedid']];}}};Preview[_0x0809('0xd')][_0x0809('0xf6')]=function(_0x49f62f,_0x5ea714,_0x1e2ebd){if(_[_0x0809('0xf7')](_0x5ea714)&&_0x0809('0xf8')!==typeof _0x5ea714){return;}if(_[_0x0809('0xf7')](_0x1e2ebd)&&_0x0809('0xf8')!==typeof _0x1e2ebd){return;}switch(_0x1e2ebd[_0x0809('0xf9')]){case'0':ut['logAgent'](_0x49f62f,0x0,'NoSuchNumber');rpcDb[_0x0809('0xfa')](_0x49f62f,_0x0809('0xfb'));break;case'3':ut[_0x0809('0xfc')](_0x49f62f,0x3,_0x0809('0xfd'));rpcDb[_0x0809('0xfa')](_0x49f62f,_0x0809('0xfe'));break;case'5':ut[_0x0809('0xfc')](_0x49f62f,0x5,_0x0809('0xc8'));rpcDb[_0x0809('0xfa')](_0x49f62f,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x0809('0xfc')](_0x49f62f,0x8,_0x0809('0xd5'));rpcDb[_0x0809('0xfa')](_0x49f62f,_0x0809('0xff'));break;case'22':ut[_0x0809('0xfc')](_0x49f62f,0x16,_0x0809('0x100'));rpcDb[_0x0809('0xfa')](_0x49f62f,_0x0809('0x101'));break;default:ut[_0x0809('0xfc')](_0x49f62f,0xc,_0x1e2ebd['reason']);rpcDb[_0x0809('0xfa')](_0x49f62f,_0x0809('0xff'));}ut['updateOriginated'](_0x5ea714,_0x0809('0x102'));logger['info']('[originated][decrement][callProgressDetectingAgent]',_0x49f62f[_0x0809('0xb5')],'\x20Queue',_0x5ea714[_0x0809('0x29')],_0x0809('0x71'),_0x5ea714[_0x0809('0x4c')]);delete this[_0x0809('0x15')][_0x49f62f['uniqueid']];};Preview[_0x0809('0xd')][_0x0809('0x103')]=function(_0xf06f1e,_0x885fbe,_0x2c875d,_0x2e8a65,_0x5bf026){var _0x5ebef0=this;return new BPromise(function(_0x59537a,_0x3773b4){if(_['isNil'](_0x885fbe)||_[_0x0809('0x6d')](_0x885fbe['Contact'])||_[_0x0809('0x6d')](_0x885fbe[_0x0809('0x104')][_0x0809('0x105')])||_['isNil'](_0x885fbe[_0x0809('0x75')])){_0x3773b4(ut['message']('Contact\x20is\x20undefined',_0x2e8a65,_0x5bf026));return;}var _0x3e6f56=uuid['v4']();var _0x55e121=_0x5ebef0[_0x0809('0x12')][_0x885fbe['Queue']['name']];var _0x4c562d=_0x2c875d?_0x5ebef0['agents'][_0x2c875d]['id']:undefined;_0x5ebef0[_0x0809('0x15')][_0x3e6f56]=new Action(_0x885fbe,_0x55e121,_0x3e6f56,_0x2c875d,_0x4c562d);var _0x38e97f=_0x5ebef0[_0x0809('0x15')][_0x3e6f56];_0x38e97f[_0x0809('0xb0')]=_0x2e8a65;_0x38e97f[_0x0809('0xcd')]=_0x5bf026;_0x38e97f[_0x0809('0x106')]=_0x2c875d;if(_[_0x0809('0x107')](_0xf06f1e)){_0x5ebef0[_0x0809('0x108')](_0x38e97f,_0x55e121,_0x885fbe,_0x2c875d)[_0x0809('0x86')](function(_0x353991){logger[_0x0809('0x5c')]('[Preview][execCall][success]','Queue:\x20'+_0x38e97f[_0x0809('0x70')]+_0x0809('0x109')+_0x38e97f[_0x0809('0x10a')],JSON[_0x0809('0x57')](_0x353991));ami['emit'](_0x0809('0x10b'),ut['buildObj'](_0x38e97f,_0x0809('0x10c'),_0x5ebef0['campaignsPreview'][_0x38e97f[_0x0809('0x70')]]));_0x59537a(ut[_0x0809('0x4b')](_0x0809('0x10d')));})[_0x0809('0x79')](function(_0x31b8ab){ut[_0x0809('0x63')](_0x0809('0x10e'),_0x31b8ab);_0x3773b4(ut[_0x0809('0x4b')](_0x0809('0x10f'),_0x2e8a65,_0x5bf026));});}else{_0x55e121[_0x0809('0x39')]+=0x1;ut['logBlacklist'](_0x38e97f);rpcDb['createHistory'](_0x38e97f,_0x0809('0x110'));delete _0x5ebef0[_0x0809('0x15')][_0x3e6f56];_0x3773b4(ut['message'](_0x0809('0x111'),_0x2e8a65,_0x5bf026));}});};Preview[_0x0809('0xd')][_0x0809('0x9d')]=function(_0x5ab830){return!_['isNil'](_0x5ab830)&&!_['isNil'](_0x5ab830['name'])&&!_[_0x0809('0x6d')](_0x5ab830['active'])&&_0x5ab830[_0x0809('0x54')]&&!_[_0x0809('0x6d')](this['trunks'][util['format'](_0x0809('0x112'),_0x5ab830['name'])])&&!_[_0x0809('0x6d')](this[_0x0809('0x14')][util[_0x0809('0x59')](_0x0809('0x112'),_0x5ab830[_0x0809('0x29')])][_0x0809('0x77')])&&(this[_0x0809('0x14')][util['format'](_0x0809('0x112'),_0x5ab830[_0x0809('0x29')])][_0x0809('0x77')]===_0x0809('0x113')||this['trunks'][util[_0x0809('0x59')](_0x0809('0x112'),_0x5ab830['name'])][_0x0809('0x77')]===_0x0809('0x114'));};Preview['prototype'][_0x0809('0x8b')]=function(_0x487b44,_0x1f636c){var _0x2f5c5b=this;return new BPromise(function(_0x3c22db,_0x13d8a4){_0x2f5c5b[_0x0809('0x115')](_0x487b44,_0x1f636c)[_0x0809('0x86')](function(_0x3fe4f3){_0x3c22db(_[_0x0809('0x116')](_0x3fe4f3,[_0x0809('0x4b')]));})[_0x0809('0x79')](function(_0xd2b75f){if(_0xd2b75f[_0x0809('0x117')]){rpcDb['unlockContact'](_0x487b44);}if(_0xd2b75f[_0x0809('0x54')]){rpcDb['disableContact'](_0x487b44);}_0x13d8a4(_[_0x0809('0x116')](_0xd2b75f,[_0x0809('0x4b')]));});});};Preview[_0x0809('0xd')][_0x0809('0x115')]=function(_0x2e1f86,_0x3b87ba){var _0x48b4c5=this;return new BPromise(function(_0x4355b5,_0x5af74a){var _0x18a3e6,_0xa2b0e1;rpcDb[_0x0809('0x118')](_0x2e1f86)[_0x0809('0x86')](function(_0x50c912){if(!_[_0x0809('0x6d')](_0x50c912[0x0])){_0xa2b0e1=_0x50c912[0x0][_0x0809('0x119')]?![]:!![];_0x18a3e6=_0x50c912[0x0][_0x0809('0x119')]?!![]:![];_0x18a3e6=_0x3b87ba?!![]:_0x18a3e6;}var _0x28c70f=_0x48b4c5[_0x0809('0x11a')](_0x50c912);if(_0x28c70f['isValid']){rpcDb[_0x0809('0x11b')](_[_0x0809('0x116')](_0x50c912[0x0],[_0x0809('0x75'),'Contact.phone']))['then'](function(_0x13c9d8){_0x48b4c5['checkInBlack'](_0x13c9d8,_0x50c912[0x0],_0x3b87ba,_0xa2b0e1,_0x18a3e6)[_0x0809('0x86')](function(_0x2dbbed){_0x4355b5(_0x2dbbed);})['catch'](function(_0x1de101){_0x5af74a(_0x1de101);});})[_0x0809('0x79')](function(_0x466a9a){ut[_0x0809('0x63')]('[Preview][checkIsBlackList]',_0x466a9a);_0x5af74a(ut[_0x0809('0x4b')](_0x0809('0x11c'),_0xa2b0e1,_0x18a3e6));});}else{_0x5af74a(ut['message'](_0x28c70f['message'],_0xa2b0e1,_0x18a3e6));}})['catch'](function(_0x3a65bf){ut[_0x0809('0x63')](_0x0809('0x11d'),_0x3a65bf);_0x5af74a(ut[_0x0809('0x4b')](_0x0809('0x11c'),![],!![]));});});};Preview[_0x0809('0xd')][_0x0809('0x11a')]=function(_0x30d65c){if(_[_0x0809('0x6d')](_0x30d65c)||_['isEmpty'](_0x30d65c)||!_[_0x0809('0x6d')](_0x30d65c[0x0][_0x0809('0x8a')])&&_[_0x0809('0x6d')](_0x30d65c[0x0][_0x0809('0x8a')][_0x0809('0x29')])){ut[_0x0809('0x63')](_0x0809('0x11e'),_0x30d65c);return{'isValid':![],'message':_0x0809('0x11f')};}var _0xc45af2=this[_0x0809('0x12')][_0x30d65c[0x0][_0x0809('0x6f')][_0x0809('0x29')]];_0xc45af2['message']=_0x0809('0xa0');if(_['isNil'](_0xc45af2)){ut[_0x0809('0x63')](_0x0809('0x120'),_0xc45af2);return{'isValid':![],'message':_0x0809('0x121')};}if(!this[_0x0809('0x9d')](_0xc45af2['Trunk'])){ut[_0x0809('0x63')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x0809('0x122')+_0xc45af2['name']+_0x0809('0x123'));if(!this[_0x0809('0x9d')](_0xc45af2['TrunkBackup'])){ut[_0x0809('0x63')](_0x0809('0x124'),_0xc45af2['name']+_0x0809('0x125'));return{'isValid':![],'message':_0x0809('0x126')};}}if(!ut[_0x0809('0x127')](_0xc45af2[_0x0809('0x34')])){ut[_0x0809('0x63')](_0x0809('0x128'),_0xc45af2[_0x0809('0x29')]+_0x0809('0x129'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0xc45af2[_0x0809('0x29')]+_0x0809('0x129')};}return{'isValid':!![],'message':_0x0809('0x12a')};};Preview[_0x0809('0xd')][_0x0809('0x108')]=function(_0x4ef7ef,_0x2773bd,_0x40c7fb,_0x27adba){var _0x578a46=this;return new BPromise(function(_0x393b42,_0x355b91){var _0x37feb6=_0x4ef7ef[_0x0809('0xb5')];var _0x425dd4=_0x578a46[_0x0809('0x9d')](_0x2773bd[_0x0809('0x53')])?util['format'](_0x0809('0x12b'),_0x2773bd[_0x0809('0x53')][_0x0809('0x29')],_[_0x0809('0x6d')](_0x2773bd['dialPrefix'])?'':_0x2773bd[_0x0809('0x12c')][_0x0809('0x12d')]()||'',_0x2773bd[_0x0809('0x12e')]>0x0?_0x40c7fb[_0x0809('0x104')][_0x0809('0x105')]['substring'](_0x2773bd[_0x0809('0x12e')]):_0x40c7fb[_0x0809('0x104')]['phone']):util[_0x0809('0x59')](_0x0809('0x12b'),_[_0x0809('0x6d')](_0x2773bd[_0x0809('0x9e')])?_0x2773bd[_0x0809('0x53')][_0x0809('0x29')]:_0x2773bd[_0x0809('0x9e')][_0x0809('0x29')],_[_0x0809('0x6d')](_0x2773bd[_0x0809('0x12c')])?'':_0x2773bd['dialPrefix'][_0x0809('0x12d')]()||'',_0x2773bd[_0x0809('0x12e')]>0x0?_0x40c7fb[_0x0809('0x104')][_0x0809('0x105')][_0x0809('0x12f')](_0x2773bd[_0x0809('0x12e')]):_0x40c7fb[_0x0809('0x104')][_0x0809('0x105')]);var _0xc68faf=_0x578a46['isTrunkReachable'](_0x2773bd['Trunk'])?ut[_0x0809('0x130')](_0x2773bd['Trunk'][_0x0809('0x55')],_0x2773bd[_0x0809('0x35')],_0x2773bd[_0x0809('0x131')]>0x0?ut[_0x0809('0x132')](_0x2773bd[_0x0809('0x133')],_0x2773bd[_0x0809('0x131')]):_0x2773bd[_0x0809('0x133')]):ut['getCallerId'](_[_0x0809('0x6d')](_0x2773bd[_0x0809('0x9e')])?_0x2773bd[_0x0809('0x53')][_0x0809('0x55')]:_0x2773bd[_0x0809('0x9e')][_0x0809('0x55')],_0x2773bd['dialOriginateCallerIdName'],_0x2773bd[_0x0809('0x131')]>0x0?ut[_0x0809('0x132')](_0x2773bd[_0x0809('0x133')],_0x2773bd[_0x0809('0x131')]):_0x2773bd['dialOriginateCallerIdNumber']);if(_0xc68faf){_0x4ef7ef[_0x0809('0x134')]=ut[_0x0809('0x135')](_0xc68faf);_0x4ef7ef['originatecalleridnum']=ut[_0x0809('0x136')](_0xc68faf);}var _0x5685d0=ut[_0x0809('0x137')](_0x2773bd,_0x40c7fb,_0x425dd4,_0xc68faf,_0x37feb6,_0x4ef7ef);_[_0x0809('0x138')](_0x4ef7ef,ut[_0x0809('0x139')](_0x5685d0));_0x4ef7ef[_0x0809('0x8f')]=moment()[_0x0809('0x59')](_0x0809('0x90'));ami['Action'](ut[_0x0809('0x13a')](_0x4ef7ef,_0x2773bd,_0x5685d0,_0x4ef7ef[_0x0809('0xcd')],_0x27adba))[_0x0809('0x86')](function(_0x53070d){var _0x29e897=_0x4ef7ef[_0x0809('0x13b')];if(!_['isNil'](_0x29e897)){if(!_[_0x0809('0x6d')](_0x578a46['agents'][_0x29e897])){_0x578a46[_0x0809('0x16')][_0x29e897][_0x0809('0x13c')]=_0x4ef7ef[_0x0809('0x13d')];emit(util['format'](_0x0809('0x13e'),_0x578a46[_0x0809('0x16')][_0x29e897][_0x0809('0x29')]),_0x0809('0x13f'),{'destaccountcode':_0x578a46['agents'][_0x29e897][_0x0809('0x140')],'destconnectedlinenum':_0x4ef7ef['calleridnum']});}}_0x2773bd[_0x0809('0x4c')]+=0x1;logger['info'](_0x0809('0x141'),_0x37feb6,'\x20Queue',_0x2773bd[_0x0809('0x29')],'originated:\x20',_0x2773bd[_0x0809('0x4c')]);_0x393b42(_0x53070d);})[_0x0809('0x79')](function(_0x127cb0){ut['logAgent'](_0x4ef7ef,0xe,_0x0809('0x142'));rpcDb[_0x0809('0xfa')](_0x4ef7ef,_0x0809('0x143'));_0x355b91(_0x127cb0);});});};Preview['prototype']['syncNewExten']=function(_0x519a75){if(this[_0x0809('0x15')][_0x519a75[_0x0809('0xb1')]]){this['actions'][_0x519a75['linkedid']][_0x0809('0x78')]=_0x519a75['channel'];}};Preview[_0x0809('0xd')]['syncOriginateResponse']=function(_0x4dd8c0){var _0x3ff8ce=this;var _0x3a78a0=this[_0x0809('0x15')][_0x4dd8c0[_0x0809('0x144')]];if(_0x3a78a0){if(_0x3a78a0['lookAgent']&&this[_0x0809('0x16')][_0x3a78a0[_0x0809('0x106')]]){ut[_0x0809('0x145')](_0x3a78a0,this[_0x0809('0x16')][_0x3a78a0[_0x0809('0x106')]][_0x0809('0x29')],this['agents'][_0x3a78a0[_0x0809('0x106')]]['id']);}var _0x57b992=_['clone'](_0x3a78a0);_0x57b992[_0x0809('0xb3')]=moment()[_0x0809('0x59')]('YYYY-MM-DD\x20HH:mm:ss');var _0x48a38b=_0x3ff8ce[_0x0809('0x12')][_0x3a78a0[_0x0809('0x70')]];if(ut[_0x0809('0x146')](_0x4dd8c0[_0x0809('0x147')])){if(_0x3a78a0[_0x0809('0xb0')]){rpcDb[_0x0809('0x148')](_0x3a78a0[_0x0809('0x10a')]);}if(_0x3a78a0['activeContact']){rpcDb[_0x0809('0x8e')](_0x3a78a0[_0x0809('0x10a')]);}ami['emit'](_0x0809('0x149'),ut[_0x0809('0xa7')](_0x3a78a0,'rejected',this[_0x0809('0x12')][_0x3a78a0[_0x0809('0x70')]]));this['callProgressDetectingAgent'](_0x57b992,_0x48a38b,_0x4dd8c0);}else{_0x3a78a0[_0x0809('0x8f')]=moment()['format'](_0x0809('0x90'));ut['logAgent'](_0x57b992,0x4,'Answer');rpcDb[_0x0809('0xfa')](_0x57b992,_0x0809('0x14a'));}}};Preview[_0x0809('0xd')]['syncHangup']=function(_0x227620){var _0x29bfa5=this;var _0x815983=this[_0x0809('0x15')][_0x227620[_0x0809('0xb1')]];var _0x4ccf80;if(_0x815983){_0x4ccf80=this[_0x0809('0x12')][_0x815983[_0x0809('0x70')]];logger[_0x0809('0x5c')](_0x0809('0x14b'),_0x227620[_0x0809('0xb1')],'\x20Queue',_0x4ccf80['name'],_0x0809('0x72'),_0x4ccf80[_0x0809('0x2d')]);}if(this[_0x0809('0x15')][_0x227620['linkedid']]&&_0x227620[_0x0809('0xb1')]!==_0x227620[_0x0809('0xb5')]){if(_0x227620['cause']==='16'&&this[_0x0809('0x15')][_0x227620[_0x0809('0xb1')]]['dialAnswer']){this[_0x0809('0xa1')](_0x227620,_0x227620[_0x0809('0xb1')],_0x227620[_0x0809('0x14c')]);}else if(this[_0x0809('0x15')][_0x227620['linkedid']]['dialAnswer']){logger[_0x0809('0x5c')](_0x0809('0x14d'),_0x227620[_0x0809('0xb1')],_0x227620[_0x0809('0x14c')],'\x20Queue',_0x4ccf80[_0x0809('0x29')],_0x0809('0x72'),_0x4ccf80[_0x0809('0x2d')]);this[_0x0809('0xa1')](_0x227620,_0x227620['linkedid'],_0x227620['cause']);}}else if(_0x815983&&_['isNil'](_0x815983[_0x0809('0x14e')])&&_0x4ccf80[_0x0809('0x14f')]&&_0x227620['linkedid']===_0x227620[_0x0809('0xb5')]&&_[_0x0809('0x6d')](_0x227620[_0x0809('0xf9')])&&_0x227620['cause']==='16'&&_0x227620[_0x0809('0x150')]==='6'&&_[_0x0809('0xf7')](_0x815983[_0x0809('0x151')])){if(_0x815983['unlockAgent']){rpcDb['unlockContact'](_0x815983[_0x0809('0x10a')]);}if(_0x815983[_0x0809('0xcd')]){rpcDb[_0x0809('0x8e')](_0x815983['idContact']);}_0x227620['reason']='22';this['callProgressDetectingAgent'](_0x815983,_0x4ccf80,_0x227620);}else if(_0x815983&&_0x815983[_0x0809('0x151')]){if(_0x227620[_0x0809('0x14c')]==='16'&&this[_0x0809('0x15')][_0x227620[_0x0809('0xb1')]][_0x0809('0x7c')]){logger[_0x0809('0x5c')](_0x0809('0x152'),_0x227620[_0x0809('0xb1')],_0x227620[_0x0809('0x14c')],_0x0809('0xb6'),_0x4ccf80[_0x0809('0x29')],_0x0809('0x72'),_0x4ccf80[_0x0809('0x2d')]);this['callProgressDetectingCustomer'](_0x227620,_0x227620['linkedid'],_0x227620['cause']);}else if(this[_0x0809('0x15')][_0x227620[_0x0809('0xb1')]][_0x0809('0x7c')]){logger[_0x0809('0x5c')](_0x0809('0x14d'),_0x227620['linkedid'],_0x227620['cause'],_0x0809('0xb6'),_0x4ccf80[_0x0809('0x29')],_0x0809('0x72'),_0x4ccf80['pTalking']);this['callProgressDetectingCustomer'](_0x227620,_0x227620['linkedid'],_0x227620[_0x0809('0x14c')]);}}};Preview[_0x0809('0xd')][_0x0809('0x1f')]=function(_0x39668a){if(this[_0x0809('0x15')][_0x39668a[_0x0809('0x153')]]&&_0x39668a['destlinkedid']!==_0x39668a[_0x0809('0x154')]){this['callProgressDetectingCustomer'](_0x39668a,_0x39668a[_0x0809('0x153')],_0x39668a['dialstatus']);}};Preview[_0x0809('0xd')][_0x0809('0x1d')]=function(_0x369828){if(this[_0x0809('0x15')][_0x369828[_0x0809('0xb1')]]&&_0x369828[_0x0809('0xb1')]!==_0x369828[_0x0809('0xb5')]&&!this[_0x0809('0x15')][_0x369828[_0x0809('0xb1')]][_0x0809('0x7c')]){if(_0x369828[_0x0809('0x14c')]==='1'){this['callProgressDetectingCustomer'](_0x369828,_0x369828['linkedid'],_0x369828[_0x0809('0x14c')]);}}};Preview['prototype'][_0x0809('0x155')]=function(_0x3504f6,_0x1e4ca4,_0x26dc17){if(this[_0x0809('0x15')][_0x3504f6]){if(_['isNil'](this[_0x0809('0x15')][_0x3504f6][_0x0809('0x156')])){this[_0x0809('0x15')][_0x3504f6]['variables']={};}this[_0x0809('0x15')][_0x3504f6][_0x0809('0x156')][_0x1e4ca4]=_0x26dc17;}};Preview[_0x0809('0xd')][_0x0809('0x157')]=function(_0x16e88b){try{if(!_[_0x0809('0x6d')](_0x16e88b)){if(ut[_0x0809('0x158')](_['keys'](_0x16e88b[_0x0809('0x159')])[0x0])){this[_0x0809('0x155')](_0x16e88b[_0x0809('0xb5')],_[_0x0809('0x15a')](_0x16e88b['variable'])[0x0],_0x16e88b[_0x0809('0x15b')]);}}}catch(_0x4580b1){logger[_0x0809('0x15c')](_0x0809('0x15d'),util[_0x0809('0x15e')](_0x4580b1,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x4f7a53){if(_0x4f7a53){if(this['actions'][_0x4f7a53['transfertargetlinkedid']]){this['actions'][_0x4f7a53['transfertargetlinkedid']]['transfer']=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0xb37346){if(_0xb37346){if(this['actions'][_0xb37346[_0x0809('0x15f')]]){this[_0x0809('0x15')][_0xb37346[_0x0809('0x15f')]]['transfer']=!![];}}};module[_0x0809('0x160')]=Preview;
\ No newline at end of file
index 5095fc4..5bdbc65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaa9=['[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercompleteAt','connectedlinename','membername','context','exten','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','inspect','then','createHistory','catch','resolve','[createHistory]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xfaa9,0x1c9));var _0x9faa=function(_0x285de6,_0x27d47e){_0x285de6=_0x285de6-0x0;var _0x1fd5cf=_0xfaa9[_0x285de6];return _0x1fd5cf;};'use strict';var util=require(_0x9faa('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var _=require(_0x9faa('0x1'));var cmHopper=require(_0x9faa('0x2'));var cmHopperFinal=require(_0x9faa('0x3'));var cmHopperHistory=require(_0x9faa('0x4'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x9faa('0x5'));var agentReportPreview=require(_0x9faa('0x6'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x500d13){return function(_0xd6ee97){logger['error'](_0x500d13,util[_0x9faa('0x7')](_0xd6ee97,{'showHidden':![],'depth':null}));};}function create(_0x1a92eb){return BPromise['resolve']()[_0x9faa('0x8')](cmHopperHistory[_0x9faa('0x9')](_0x1a92eb))[_0x9faa('0xa')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x45199e){return BPromise[_0x9faa('0xb')]()['then'](agentReportPreview['createHistory'](_0x45199e))['catch'](loggerCatch(_0x9faa('0xc')));}function moveContact(_0x70e0f){return BPromise['resolve']()[_0x9faa('0x8')](cmHopper['moveContactManagedDialer'](_0x70e0f,!![]))[_0x9faa('0xa')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x9faa('0xd')]=function(_0x112fde){return BPromise['resolve']()['then'](cmHopperBlack[_0x9faa('0xd')](_0x112fde))[_0x9faa('0xa')](loggerCatch(_0x9faa('0xe')));};exports[_0x9faa('0xf')]=function(_0x458c20){return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](cmHopper['getContactPreview'](_0x458c20))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x10')));};exports[_0x9faa('0x9')]=function(_0x524c6c,_0x3ab1bd){create(_0x524c6c)[_0x9faa('0xa')](loggerCatch(_0x3ab1bd));moveContact(_0x524c6c)['catch'](loggerCatch(_0x3ab1bd));};exports['createAgentHistory']=function(_0x3b6a4b,_0x501cef){createAgent(_0x3b6a4b)[_0x9faa('0xa')](loggerCatch(_0x501cef));};exports['createCustomerHistory']=function(_0x45fb2d,_0x371c6a){create(_0x45fb2d)[_0x9faa('0xa')](loggerCatch(_0x371c6a));};exports[_0x9faa('0x11')]=function(_0x2b9a09,_0x57baa6){moveContact(_0x2b9a09)[_0x9faa('0xa')](loggerCatch(_0x57baa6));};exports[_0x9faa('0x12')]=function(_0xac7b53,_0x468ae0,_0x20f90c){if(_0x468ae0){_0xac7b53[_0x9faa('0x13')]=null;}if(_0x20f90c){_0xac7b53[_0x9faa('0x14')]=![];}return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](cmHopper[_0x9faa('0x12')](_0xac7b53))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x15')));};exports['countReScheduled']=function(_0x4c242f){return BPromise[_0x9faa('0xb')]()['then'](cmHopper[_0x9faa('0x16')](_0x4c242f))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x17')));};exports[_0x9faa('0x18')]=function(_0x195295){return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](cmHopper['unlockContact']({'UserId':null},_0x195295,0x1))['catch'](loggerCatch(_0x9faa('0x19')));};exports[_0x9faa('0x1a')]=function(_0xeb1b6){return BPromise['resolve']()['then'](cmHopper[_0x9faa('0x18')]({'active':![]},_0xeb1b6,0x1))[_0x9faa('0xa')](loggerCatch('[activeContact]\x20'));};exports[_0x9faa('0x1b')]=function(_0x488dba){var _0x291714={};_0x291714[_0x9faa('0x1c')]=_0x488dba[_0x9faa('0x1c')];_0x291714[_0x9faa('0x1d')]=_0x488dba[_0x9faa('0x1d')];_0x291714['calleridnum']=_0x488dba[_0x9faa('0x1e')];_0x291714['calleridname']=_0x488dba[_0x9faa('0x1f')];_0x291714[_0x9faa('0x20')]=_0x488dba[_0x9faa('0x20')];_0x291714[_0x9faa('0x21')]=_0x488dba[_0x9faa('0x22')];_0x291714[_0x9faa('0x23')]=_0x488dba[_0x9faa('0x22')];_0x291714['queuecallercomplete']=0x1;_0x291714[_0x9faa('0x24')]=_0x488dba['endtime'];_0x291714[_0x9faa('0x25')]=_0x488dba[_0x9faa('0x26')];_0x291714[_0x9faa('0x27')]='from-sip';_0x291714[_0x9faa('0x28')]='xcally-motion-preview';_0x291714['holdtime']=0x0;_0x291714['assigned']=0x1;_0x291714[_0x9faa('0x29')]=_0x488dba[_0x9faa('0x26')];_0x291714[_0x9faa('0x2a')]=_0x9faa('0x2b');return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](voiceQueueReport[_0x9faa('0x2c')](_0x291714))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x2d')));};exports['getContactRecallMe']=function(_0x42f343,_0x129786){return BPromise[_0x9faa('0xb')]()['then'](cmHopper[_0x9faa('0x2e')](_0x42f343,_0x129786))[_0x9faa('0xa')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x2259a5){return BPromise[_0x9faa('0xb')]()['then'](cmHopper[_0x9faa('0x12')](_0x2259a5,!![],!![]))['catch'](loggerCatch(_0x9faa('0x2f')));};
\ No newline at end of file
+var _0xc9a4=['createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','createHistory','catch','[createHistory]\x20','then','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xc9a4,0x1e3));var _0x4c9a=function(_0x5b491d,_0x43b14c){_0x5b491d=_0x5b491d-0x0;var _0x74fdec=_0xc9a4[_0x5b491d];return _0x74fdec;};'use strict';var util=require(_0x4c9a('0x0'));var BPromise=require('bluebird');var logger=require(_0x4c9a('0x1'))(_0x4c9a('0x2'));var _=require(_0x4c9a('0x3'));var cmHopper=require(_0x4c9a('0x4'));var cmHopperFinal=require(_0x4c9a('0x5'));var cmHopperHistory=require(_0x4c9a('0x6'));var cmHopperBlack=require(_0x4c9a('0x7'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x4c9a('0x8'));var voiceQueueReport=require(_0x4c9a('0x9'));function loggerCatch(_0x28e7a3){return function(_0x5cf655){logger[_0x4c9a('0xa')](_0x28e7a3,util[_0x4c9a('0xb')](_0x5cf655,{'showHidden':![],'depth':null}));};}function create(_0xbe5b87){return BPromise[_0x4c9a('0xc')]()['then'](cmHopperHistory[_0x4c9a('0xd')](_0xbe5b87))[_0x4c9a('0xe')](loggerCatch(_0x4c9a('0xf')));}function createAgent(_0x3e2617){return BPromise[_0x4c9a('0xc')]()['then'](agentReportPreview['createHistory'](_0x3e2617))[_0x4c9a('0xe')](loggerCatch(_0x4c9a('0xf')));}function moveContact(_0x13f2d4){return BPromise[_0x4c9a('0xc')]()[_0x4c9a('0x10')](cmHopper['moveContactManagedDialer'](_0x13f2d4,!![]))[_0x4c9a('0xe')](loggerCatch('[moveContactManagedDialer]\x20'));}exports['checkIsBlackList']=function(_0x5c6e32){return BPromise['resolve']()[_0x4c9a('0x10')](cmHopperBlack[_0x4c9a('0x11')](_0x5c6e32))[_0x4c9a('0xe')](loggerCatch(_0x4c9a('0x12')));};exports[_0x4c9a('0x13')]=function(_0x3e18f6){return BPromise[_0x4c9a('0xc')]()['then'](cmHopper[_0x4c9a('0x13')](_0x3e18f6))[_0x4c9a('0xe')](loggerCatch('[getContactPreview]\x20'));};exports[_0x4c9a('0xd')]=function(_0x2a8ea5,_0x3555d6){create(_0x2a8ea5)[_0x4c9a('0xe')](loggerCatch(_0x3555d6));moveContact(_0x2a8ea5)[_0x4c9a('0xe')](loggerCatch(_0x3555d6));};exports[_0x4c9a('0x14')]=function(_0x53eb4c,_0x5ddd17){createAgent(_0x53eb4c)[_0x4c9a('0xe')](loggerCatch(_0x5ddd17));};exports[_0x4c9a('0x15')]=function(_0x3326f1,_0x5573b0){create(_0x3326f1)[_0x4c9a('0xe')](loggerCatch(_0x5573b0));};exports[_0x4c9a('0x16')]=function(_0x51ad3c,_0x5087b5){moveContact(_0x51ad3c)['catch'](loggerCatch(_0x5087b5));};exports[_0x4c9a('0x17')]=function(_0x173083,_0x14eaec,_0x1e3e4c){if(_0x14eaec){_0x173083[_0x4c9a('0x18')]=null;}if(_0x1e3e4c){_0x173083[_0x4c9a('0x19')]=![];}return BPromise['resolve']()[_0x4c9a('0x10')](cmHopper['rescheduleContact'](_0x173083))['catch'](loggerCatch(_0x4c9a('0x1a')));};exports[_0x4c9a('0x1b')]=function(_0x52f589){return BPromise['resolve']()['then'](cmHopper[_0x4c9a('0x1b')](_0x52f589))[_0x4c9a('0xe')](loggerCatch(_0x4c9a('0x1c')));};exports[_0x4c9a('0x1d')]=function(_0x26c3b2){return BPromise['resolve']()[_0x4c9a('0x10')](cmHopper[_0x4c9a('0x1d')]({'UserId':null},_0x26c3b2,0x1))[_0x4c9a('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x4c9a('0x1e')]=function(_0x5df3e4){return BPromise[_0x4c9a('0xc')]()[_0x4c9a('0x10')](cmHopper['unlockContact']({'active':![]},_0x5df3e4,0x1))[_0x4c9a('0xe')](loggerCatch('[activeContact]\x20'));};exports['crateCustomerReportQueue']=function(_0x285d80){var _0x2dfe92={};_0x2dfe92[_0x4c9a('0x1f')]=_0x285d80[_0x4c9a('0x1f')];_0x2dfe92[_0x4c9a('0x20')]=_0x285d80[_0x4c9a('0x20')];_0x2dfe92[_0x4c9a('0x21')]=_0x285d80['calleridnum'];_0x2dfe92[_0x4c9a('0x22')]=_0x285d80[_0x4c9a('0x22')];_0x2dfe92[_0x4c9a('0x23')]=_0x285d80[_0x4c9a('0x23')];_0x2dfe92[_0x4c9a('0x24')]=_0x285d80[_0x4c9a('0x25')];_0x2dfe92[_0x4c9a('0x26')]=_0x285d80[_0x4c9a('0x25')];_0x2dfe92[_0x4c9a('0x27')]=0x1;_0x2dfe92[_0x4c9a('0x28')]=_0x285d80[_0x4c9a('0x29')];_0x2dfe92[_0x4c9a('0x2a')]=_0x285d80[_0x4c9a('0x2b')];_0x2dfe92[_0x4c9a('0x2c')]=_0x4c9a('0x2d');_0x2dfe92[_0x4c9a('0x2e')]=_0x4c9a('0x2f');_0x2dfe92[_0x4c9a('0x30')]=0x0;_0x2dfe92['assigned']=0x1;_0x2dfe92['lastAssignedTo']=_0x285d80[_0x4c9a('0x2b')];_0x2dfe92['queuecallerexitreason']=_0x4c9a('0x31');return BPromise[_0x4c9a('0xc')]()['then'](voiceQueueReport[_0x4c9a('0x32')](_0x2dfe92))['catch'](loggerCatch(_0x4c9a('0x33')));};exports[_0x4c9a('0x34')]=function(_0x4cd87c,_0xe53d41){return BPromise[_0x4c9a('0xc')]()[_0x4c9a('0x10')](cmHopper[_0x4c9a('0x34')](_0x4cd87c,_0xe53d41))[_0x4c9a('0xe')](loggerCatch(_0x4c9a('0x35')));};exports[_0x4c9a('0x36')]=function(_0x12273d){return BPromise[_0x4c9a('0xc')]()[_0x4c9a('0x10')](cmHopper['rescheduleContact'](_0x12273d,!![],!![]))[_0x4c9a('0xe')](loggerCatch(_0x4c9a('0x37')));};
\ No newline at end of file
index da0fd2d..e1ba2e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4554=['dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridname','xcally-motion-preview','monitor_format','Contact','hasOwnProperty','createdAt','updatedAt','XMD-','toLower','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','membername','logCustomer','ringtime','talktime','Failure','variablesAction','RECALL','BOOKED','channelAgent','from-sip','timeout','uniqueid','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','scheduledAt','active','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','name','interface','mandatoryDisposition','buildAcw','queue','agentReadyId','reachable','push','seconds','createBody','CampaignId','filterKey','idContact','campaigntype','dialAnswer','scheduledat','countnoanswerretry','callback','callbackat','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','loggerCatch','error','logger','inspect','loggerError','logger2','info','message','getCallerId','isUndefined','isEmpty','string','format','isActive','isNil','addVariables','Queue','\x22%s\x22\x20<%s>','calleridname','calleridnum'];(function(_0x187f62,_0x638167){var _0x331b08=function(_0x37ca9e){while(--_0x37ca9e){_0x187f62['push'](_0x187f62['shift']());}};_0x331b08(++_0x638167);}(_0x4554,0x69));var _0x4455=function(_0x3cb46e,_0x38643b){_0x3cb46e=_0x3cb46e-0x0;var _0x58f103=_0x4554[_0x3cb46e];return _0x58f103;};'use strict';var util=require(_0x4455('0x0'));var _=require(_0x4455('0x1'));var moment=require(_0x4455('0x2'));var logger=require(_0x4455('0x3'))(_0x4455('0x4'));var ipAgi=process[_0x4455('0x5')][_0x4455('0x6')]||_0x4455('0x7');function getSeconds(_0x5b885f,_0x191717){var _0x2ccfb5=moment(_0x5b885f)[_0x4455('0x8')](0x0);var _0x1e4c4d=moment(_0x191717)[_0x4455('0x8')](0x0);return _0x2ccfb5[_0x4455('0x9')](_0x1e4c4d,'seconds');}exports[_0x4455('0xa')]=function(_0x508396){return function(_0x46923e){logger[_0x4455('0xb')](_0x508396,util['inspect'](_0x46923e,{'showHidden':![],'depth':null}));};};exports[_0x4455('0xc')]=function(_0x39f21d,_0x415bab){logger['info'](_0x39f21d,util[_0x4455('0xd')](_0x415bab,{'showHidden':![],'depth':null}));};exports[_0x4455('0xe')]=function(_0x5a42cb,_0x157160){logger[_0x4455('0xb')](_0x5a42cb,util['inspect'](_0x157160,{'showHidden':![],'depth':null}));};exports[_0x4455('0xf')]=function(_0x192233){return function(_0x578b10){logger[_0x4455('0x10')](_0x192233,util[_0x4455('0xd')](_0x578b10,{'showHidden':![],'depth':null}));};};exports[_0x4455('0x11')]=function(_0xa46ac5,_0x53c9e1,_0xc64b5b){return{'message':_0xa46ac5,'unlock':_0x53c9e1,'active':_0xc64b5b};};exports[_0x4455('0x12')]=function(_0x4a1b59,_0xbc12a6,_0x3c7af4){if(!_[_0x4455('0x13')](_0x3c7af4)&&'string'===typeof _0x3c7af4&&!_[_0x4455('0x14')](_0x3c7af4)){if(!_[_0x4455('0x13')](_0xbc12a6)&&_0x4455('0x15')===typeof _0xbc12a6&&!_[_0x4455('0x14')](_0xbc12a6)){return util[_0x4455('0x16')]('\x22%s\x22\x20<%s>',_0xbc12a6,_0x3c7af4);}return util[_0x4455('0x16')]('\x22%s\x22\x20<%s>',_0x3c7af4,_0x3c7af4);}if(!_[_0x4455('0x13')](_0x4a1b59)&&_0x4455('0x15')===typeof _0x4a1b59&&!_['isEmpty'](_0x4a1b59)){return _0x4a1b59;}return'\x22\x22\x20<>';};exports[_0x4455('0x17')]=function(_0x10423a){if(_[_0x4455('0x18')](_0x10423a)){return![];}return _0x10423a;};exports[_0x4455('0x19')]=function(_0x19fe66,_0x4229b1,_0x2d2aef,_0x2de834,_0x34ba05,_0x5a60ef){var _0xad685b={'XMD-QUEUE':_0x4229b1[_0x4455('0x1a')]?_0x4229b1[_0x4455('0x1a')]['name']:'','XMD-CALLERID':_0x2de834,'XMD-CALLERID-PREVIEW':_0x5a60ef?util[_0x4455('0x16')](_0x4455('0x1b'),_0x5a60ef[_0x4455('0x1c')],_0x5a60ef[_0x4455('0x1d')]):_0x2de834,'XMD-DIALID':_0x34ba05,'XMD-CONTACTID':_0x4229b1['ContactId'],'XMD-CDRTYPE':_0x4455('0x1e'),'CALLERID(all)':_0x2de834,'XMD-VOICEQUEUEID':_0x4229b1[_0x4455('0x1f')],'XMD-DIALCHANNEL':_0x2d2aef,'XMD-DIALTIMEOUT':_0x19fe66[_0x4455('0x20')]||0x1e,'XMD-DIALOPTIONS':util[_0x4455('0x16')]('\x22rtTxX%s%s\x22',_0x19fe66[_0x4455('0x21')]?'g':'',_[_0x4455('0x14')](_0x19fe66['monitor_format'])?'':_0x4455('0x22')),'XMD-DIALURL':_0x19fe66['dialPreviewUrl']||'','XMD-AGI':_0x19fe66[_0x4455('0x23')]?util[_0x4455('0x16')](_0x4455('0x24'),ipAgi,_0x19fe66['dialQueueProject']):_0x4455('0x25'),'XMD-AGIAFTER':_0x19fe66['dialQueueProject2']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x19fe66[_0x4455('0x21')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x5a60ef?_0x5a60ef['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x5a60ef?_0x5a60ef[_0x4455('0x26')]:'','XMD-DESTINATION':_0x4455('0x27')};if(!_['isEmpty'](_0x19fe66[_0x4455('0x28')])){_0xad685b[util[_0x4455('0x16')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x19fe66[_0x4455('0x28')];_0xad685b[util[_0x4455('0x16')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x34ba05;}if(_0x4229b1&&_0x4229b1[_0x4455('0x29')]){for(var _0x1e5f2b in _0x4229b1[_0x4455('0x29')]){if(_0x4229b1[_0x4455('0x29')][_0x4455('0x2a')](_0x1e5f2b)){if(!_[_0x4455('0x18')](_0x4229b1[_0x4455('0x29')][_0x1e5f2b])&&_0x1e5f2b!=='id'&&_0x1e5f2b!=='tags'&&_0x1e5f2b!==_0x4455('0x2b')&&_0x1e5f2b!==_0x4455('0x2c')){_0xad685b[util[_0x4455('0x16')]('%s%s',_0x4455('0x2d'),_['toUpper'](_0x1e5f2b))]=_0x4229b1[_0x4455('0x29')][_0x1e5f2b];}}}}return _0xad685b;};exports['toLowerVariables']=function(_0x1eadd7){var _0x45b205={};for(var _0x40c812 in _0x1eadd7){if(_0x1eadd7[_0x4455('0x2a')](_0x40c812)){_0x45b205[util['format']('%s',_[_0x4455('0x2e')](_0x40c812))]=_0x1eadd7[_0x40c812];}}return{'variables':_0x45b205};};exports['updateOriginated']=function(_0x1d4feb,_0x3baf60){if(!_[_0x4455('0x18')](_0x1d4feb)){if(_0x1d4feb['hasOwnProperty'](_0x4455('0x2f'))){if(_0x1d4feb[_0x4455('0x2f')]>0x0){_0x1d4feb['originated']-=0x1;}else{logger[_0x4455('0xb')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x3baf60);}}}else{logger['error'](_0x4455('0x30'),_0x3baf60);}};exports[_0x4455('0x31')]=function(_0x2376af){var _0xf99b21=moment()[_0x4455('0x16')](_0x4455('0x32'));_0x2376af[_0x4455('0x33')]=0xd;_0x2376af[_0x4455('0x34')]=_0x4455('0x35');_0x2376af[_0x4455('0x36')]=_0xf99b21;_0x2376af[_0x4455('0x37')]=_0xf99b21;_0x2376af[_0x4455('0x38')]=_0xf99b21;};exports[_0x4455('0x39')]=function(_0x2c959c,_0x28e919,_0x17f607){var _0x4a695a=moment()['format'](_0x4455('0x32'));_0x2c959c[_0x4455('0x33')]=_0x28e919;_0x2c959c[_0x4455('0x34')]=_0x17f607;_0x2c959c[_0x4455('0x37')]=_0x4a695a;_0x2c959c['ringtime']=getSeconds(_0x2c959c[_0x4455('0x37')],_0x2c959c[_0x4455('0x36')]);};exports['logLookAgent']=function(_0x28d3c5,_0x3f8183,_0x5034a4){_0x28d3c5[_0x4455('0x3a')]=_0x3f8183;_0x28d3c5['UserId']=_0x5034a4;};exports[_0x4455('0x3b')]=function(_0x3962b8,_0x5687dd,_0x55a4dc){var _0x526127=moment()['format'](_0x4455('0x32'));_0x3962b8[_0x4455('0x33')]=_0x5687dd;_0x3962b8[_0x4455('0x34')]=_0x55a4dc;_0x3962b8[_0x4455('0x37')]=_0x3962b8[_0x4455('0x37')]?_0x3962b8[_0x4455('0x37')]:_0x526127;_0x3962b8['endtime']=_0x3962b8['endtime']?_0x3962b8[_0x4455('0x38')]:_0x526127;_0x3962b8[_0x4455('0x3c')]=getSeconds(_0x3962b8[_0x4455('0x37')]||0x0,_0x3962b8[_0x4455('0x36')]||0x0);_0x3962b8[_0x4455('0x3d')]=_0x3962b8['answertime']?getSeconds(_0x3962b8[_0x4455('0x38')],_0x3962b8['answertime']):0x0;};exports['isFailure']=function(_0x37e8ec){return _0x37e8ec===_0x4455('0x3e');};exports[_0x4455('0x3f')]=function(_0x48e9d8,_0x11397a,_0x172bcd,_0x49707b,_0x5dfb65){var _0x3fae3f=_0x49707b?_0x4455('0x40'):_0x48e9d8[_0x4455('0x1c')];_0x3fae3f=_0x5dfb65?_0x4455('0x41'):_0x3fae3f;return{'actionid':_0x48e9d8['uniqueid'],'action':'originate','channel':_0x48e9d8[_0x4455('0x42')],'callerid':util['format'](_0x4455('0x1b'),_0x3fae3f,_0x48e9d8[_0x4455('0x1d')]),'Exten':_0x4455('0x27'),'Context':_0x4455('0x43'),'Priority':'1','variable':_0x172bcd,'timeout':(_0x11397a[_0x4455('0x44')]||0x1e)*0x3e8,'async':!![],'channelid':_0x48e9d8[_0x4455('0x45')]};};exports['totalGlobal']=function(_0x6ac8b9){return _0x6ac8b9[_0x4455('0x46')]+_0x6ac8b9[_0x4455('0x47')]+_0x6ac8b9['countnoanswerretry']+_0x6ac8b9[_0x4455('0x48')]+_0x6ac8b9[_0x4455('0x49')];};exports[_0x4455('0x4a')]=function(_0x2a4665){var _0xcede05=_[_0x4455('0x4b')](_0x2a4665);_0xcede05['state']=0xf;_0xcede05[_0x4455('0x34')]='Global';return _0xcede05;};exports[_0x4455('0x4c')]=function(_0x3c3397,_0xccb7fe,_0x188bed){var _0x53048b={};_0x53048b[_0xccb7fe]=_0x3c3397[_0xccb7fe];_0x53048b[_0x4455('0x4d')]=![];_0x53048b['scheduledat']=moment()[_0x4455('0x4e')](_0x188bed,_0x4455('0x4f'))[_0x4455('0x16')]('YYYY-MM-DD\x20HH:mm:ss');_0x53048b[_0x4455('0x50')]=_0x3c3397[_0x4455('0x50')];_0x53048b[_0x4455('0x51')]=_0x3c3397[_0x4455('0x51')];_0x53048b[_0x4455('0x1f')]=_0x3c3397['VoiceQueueId']||undefined;return _0x53048b;};exports[_0x4455('0x52')]=function(_0x300389,_0xd78244){if(!_[_0x4455('0x18')](_0x300389)){if(_0x300389[_0x4455('0x53')]>0x0){_0x300389[_0x4455('0x53')]-=0x1;}else{logger[_0x4455('0xb')](_0xd78244,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x4455('0xb')](_0xd78244,_0x4455('0x54'));}};exports[_0x4455('0x55')]=function(_0x31d420){if(_0x31d420<=0x0){return!![];}return![];};exports['buildObj']=function(_0x44bc8c,_0x4ff59a,_0x412dc0){_0x44bc8c['lastevent']=_0x4ff59a;_0x44bc8c[_0x4455('0x56')]=_0x44bc8c['queue'];_0x44bc8c[_0x4455('0x57')]=_0x44bc8c[_0x4455('0x42')];if(_0x412dc0){_0x44bc8c[_0x4455('0x58')]=_0x412dc0[_0x4455('0x58')];}return _0x44bc8c;};exports[_0x4455('0x59')]=function(_0x5acae4){var _0x2a6d10={};_0x2a6d10['queue']=_0x5acae4[_0x4455('0x5a')];_0x2a6d10['interface']=_0x5acae4[_0x4455('0x42')];_0x2a6d10[_0x4455('0x45')]=_0x5acae4[_0x4455('0x45')];return _0x2a6d10;};exports[_0x4455('0x5b')]=function(_0x378c42){var _0x35682c=[];for(var _0x166c15 in _0x378c42){if(_0x378c42[_0x4455('0x2a')](_0x166c15)){if(!_[_0x4455('0x18')](_0x378c42[_0x166c15])&&_0x378c42[_0x166c15][_0x4455('0x33')]==='not_inuse'&&_0x378c42[_0x166c15]['status']===_0x4455('0x5c')){_0x35682c[_0x4455('0x5d')](_0x378c42[_0x166c15]['id']);}}}return _0x35682c;};exports['getDiff']=function(_0x1a1e13){var _0x439ca5=moment()['milliseconds'](0x0);var _0xbd2094=moment(_0x1a1e13)['milliseconds'](0x0);return _0x439ca5[_0x4455('0x9')](_0xbd2094,_0x4455('0x5e'));};exports[_0x4455('0x5f')]=function(_0x2a15c4){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2a15c4[_0x4455('0x50')],'ListId':_0x2a15c4[_0x4455('0x51')],'VoiceQueueId':_0x2a15c4[_0x4455('0x1f')]||undefined,'CampaignId':_0x2a15c4[_0x4455('0x60')]||undefined};};exports[_0x4455('0x61')]=function(_0x17b80b){if(_0x17b80b===_0x4455('0x45')||_0x17b80b===_0x4455('0x62')||_0x17b80b===_0x4455('0x5a')||_0x17b80b==='type'||_0x17b80b===_0x4455('0x63')||_0x17b80b===_0x4455('0x64')||_0x17b80b===_0x4455('0x3a')||_0x17b80b===_0x4455('0x42')||_0x17b80b==='calleridname'||_0x17b80b===_0x4455('0x4d')||_0x17b80b===_0x4455('0x1d')||_0x17b80b===_0x4455('0x65')||_0x17b80b===_0x4455('0x46')||_0x17b80b===_0x4455('0x47')||_0x17b80b===_0x4455('0x66')||_0x17b80b==='countglobal'||_0x17b80b===_0x4455('0x67')||_0x17b80b==='callbackuniqueid'||_0x17b80b===_0x4455('0x68')||_0x17b80b==='recallme'||_0x17b80b==='ContactId'||_0x17b80b==='ListId'||_0x17b80b===_0x4455('0x69')||_0x17b80b==='VoiceQueueId'||_0x17b80b===_0x4455('0x6a')||_0x17b80b===_0x4455('0x6b')||_0x17b80b===_0x4455('0x6c')||_0x17b80b==='xmd-phone'||_0x17b80b===_0x4455('0x6d')||_0x17b80b===_0x4455('0x6e')||_0x17b80b===_0x4455('0x6f')||_0x17b80b===_0x4455('0x70')||_0x17b80b==='xmd-dialid'||_0x17b80b===_0x4455('0x71')||_0x17b80b==='xmd-contactid'||_0x17b80b===_0x4455('0x72')||_0x17b80b===_0x4455('0x73')||_0x17b80b===_0x4455('0x74')||_0x17b80b===_0x4455('0x75')||_0x17b80b==='rtpaudioqos'||_0x17b80b===_0x4455('0x76')||_0x17b80b===_0x4455('0x77')||_0x17b80b==='rtpaudioqosjitterbridged'||_0x17b80b===_0x4455('0x78')||_0x17b80b==='rtpaudioqoslossbridged'||_0x17b80b===_0x4455('0x79')||_0x17b80b===_0x4455('0x7a')||_0x17b80b===_0x4455('0x7b')||_0x17b80b==='rtpaudioqosbridged'||_0x17b80b===_0x4455('0x77')||_0x17b80b===_0x4455('0x7c')||_0x17b80b===_0x4455('0x78')||_0x17b80b===_0x4455('0x7d')||_0x17b80b===_0x4455('0x79')||_0x17b80b===_0x4455('0x7a')||_0x17b80b===_0x4455('0x7e')||_0x17b80b==='bridgepvtcallid'||_0x17b80b==='state'||_0x17b80b==='statedesc'){return![];}return!![];};exports[_0x4455('0x7f')]=function(_0x148bc9,_0x248c1a){var _0x19d8f0,_0x2a4c5c,_0x487bad;if(_0x248c1a<=0x0){_0x248c1a=0x1;}_0x19d8f0=new RegExp(_0x4455('0x80')+_0x248c1a+'}$');_0x2a4c5c=Math[_0x4455('0x81')](0xa,_0x248c1a-0x1);_0x487bad=Math[_0x4455('0x81')](0xa,_0x248c1a)-0x1;return util[_0x4455('0x16')]('%s',_[_0x4455('0x82')](_0x148bc9,_0x19d8f0,_[_0x4455('0x83')](_0x2a4c5c,_0x487bad)));};exports[_0x4455('0x84')]=function(_0xf91601){var _0x2bd9e7=_0xf91601[_0x4455('0x85')](/"(.*?)"/);return _0x2bd9e7?_0x2bd9e7[0x1]:_0xf91601;};exports[_0x4455('0x86')]=function(_0x27f4df){var _0x571d93=_0x27f4df[_0x4455('0x85')](/<(.*?)>/);return _0x571d93?_0x571d93[0x1]:_0x27f4df;};
\ No newline at end of file
+var _0x9845=['idContact','type','campaigntype','dialAnswer','countbusyretry','callback','callbackuniqueid','callbackat','recallme','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','bridgepvtcallid','getCallerIdRandom','pow','replace','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','logger','info','loggerError','inspect','message','getCallerId','string','isEmpty','isUndefined','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridname','calleridnum','dialer','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','updatedAt','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','responsetime','logAgent','ringtime','starttime','logLookAgent','membername','UserId','logCustomer','endtime','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','channelAgent','timeout','totalGlobal','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','clone','Global','scheduledAt','active','scheduledat','minutes','ContactId','ListId','VoiceQueueId','decrementTalkink','isNil','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','push','getDiff','diff','filterKey'];(function(_0x233efd,_0x386d70){var _0xaa4497=function(_0x5d0491){while(--_0x5d0491){_0x233efd['push'](_0x233efd['shift']());}};_0xaa4497(++_0x386d70);}(_0x9845,0x1e2));var _0x5984=function(_0x51677c,_0x1b1501){_0x51677c=_0x51677c-0x0;var _0x3df3e8=_0x9845[_0x51677c];return _0x3df3e8;};'use strict';var util=require(_0x5984('0x0'));var _=require(_0x5984('0x1'));var moment=require('moment');var logger=require(_0x5984('0x2'))(_0x5984('0x3'));var ipAgi=process[_0x5984('0x4')][_0x5984('0x5')]||_0x5984('0x6');function getSeconds(_0x521f94,_0x586c0d){var _0x2fa89f=moment(_0x521f94)[_0x5984('0x7')](0x0);var _0x239472=moment(_0x586c0d)[_0x5984('0x7')](0x0);return _0x2fa89f['diff'](_0x239472,_0x5984('0x8'));}exports[_0x5984('0x9')]=function(_0x210692){return function(_0x283d03){logger[_0x5984('0xa')](_0x210692,util['inspect'](_0x283d03,{'showHidden':![],'depth':null}));};};exports[_0x5984('0xb')]=function(_0x1fc429,_0x2a900f){logger[_0x5984('0xc')](_0x1fc429,util['inspect'](_0x2a900f,{'showHidden':![],'depth':null}));};exports[_0x5984('0xd')]=function(_0x417da8,_0x53d58e){logger['error'](_0x417da8,util[_0x5984('0xe')](_0x53d58e,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x1d4089){return function(_0x1487a3){logger[_0x5984('0xc')](_0x1d4089,util['inspect'](_0x1487a3,{'showHidden':![],'depth':null}));};};exports[_0x5984('0xf')]=function(_0x50b594,_0x139c1e,_0x173e56){return{'message':_0x50b594,'unlock':_0x139c1e,'active':_0x173e56};};exports[_0x5984('0x10')]=function(_0x4e6faa,_0x522e5d,_0x298c0d){if(!_['isUndefined'](_0x298c0d)&&_0x5984('0x11')===typeof _0x298c0d&&!_[_0x5984('0x12')](_0x298c0d)){if(!_[_0x5984('0x13')](_0x522e5d)&&'string'===typeof _0x522e5d&&!_[_0x5984('0x12')](_0x522e5d)){return util['format'](_0x5984('0x14'),_0x522e5d,_0x298c0d);}return util[_0x5984('0x15')](_0x5984('0x14'),_0x298c0d,_0x298c0d);}if(!_['isUndefined'](_0x4e6faa)&&_0x5984('0x11')===typeof _0x4e6faa&&!_['isEmpty'](_0x4e6faa)){return _0x4e6faa;}return _0x5984('0x16');};exports[_0x5984('0x17')]=function(_0x3aae81){if(_['isNil'](_0x3aae81)){return![];}return _0x3aae81;};exports[_0x5984('0x18')]=function(_0x4ef54b,_0x191ccb,_0x5f15a5,_0x484110,_0xcbf8e4,_0x23f47a){var _0x4e8f3a={'XMD-QUEUE':_0x191ccb['Queue']?_0x191ccb[_0x5984('0x19')][_0x5984('0x1a')]:'','XMD-CALLERID':_0x484110,'XMD-CALLERID-PREVIEW':_0x23f47a?util[_0x5984('0x15')](_0x5984('0x14'),_0x23f47a[_0x5984('0x1b')],_0x23f47a[_0x5984('0x1c')]):_0x484110,'XMD-DIALID':_0xcbf8e4,'XMD-CONTACTID':_0x191ccb['ContactId'],'XMD-CDRTYPE':_0x5984('0x1d'),'CALLERID(all)':_0x484110,'XMD-VOICEQUEUEID':_0x191ccb['VoiceQueueId'],'XMD-DIALCHANNEL':_0x5f15a5,'XMD-DIALTIMEOUT':_0x4ef54b[_0x5984('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x5984('0x15')](_0x5984('0x1f'),_0x4ef54b[_0x5984('0x20')]?'g':'',_[_0x5984('0x12')](_0x4ef54b[_0x5984('0x21')])?'':_0x5984('0x22')),'XMD-DIALURL':_0x4ef54b[_0x5984('0x23')]||'','XMD-AGI':_0x4ef54b[_0x5984('0x24')]?util[_0x5984('0x15')](_0x5984('0x25'),ipAgi,_0x4ef54b[_0x5984('0x24')]):_0x5984('0x26'),'XMD-AGIAFTER':_0x4ef54b[_0x5984('0x20')]?util['format'](_0x5984('0x25'),ipAgi,_0x4ef54b[_0x5984('0x20')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x23f47a?_0x23f47a[_0x5984('0x27')]:'','XMD-ORIGINATECALLERIDNAME':_0x23f47a?_0x23f47a[_0x5984('0x28')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x5984('0x12')](_0x4ef54b['monitor_format'])){_0x4e8f3a[util[_0x5984('0x15')]('%s',_0x5984('0x29'))]=_0x4ef54b[_0x5984('0x21')];_0x4e8f3a[util[_0x5984('0x15')]('%s',_0x5984('0x2a'))]=_0xcbf8e4;}if(_0x191ccb&&_0x191ccb[_0x5984('0x2b')]){for(var _0x2b473e in _0x191ccb['Contact']){if(_0x191ccb['Contact'][_0x5984('0x2c')](_0x2b473e)){if(!_['isNil'](_0x191ccb['Contact'][_0x2b473e])&&_0x2b473e!=='id'&&_0x2b473e!==_0x5984('0x2d')&&_0x2b473e!=='createdAt'&&_0x2b473e!==_0x5984('0x2e')){_0x4e8f3a[util[_0x5984('0x15')]('%s%s',_0x5984('0x2f'),_[_0x5984('0x30')](_0x2b473e))]=_0x191ccb['Contact'][_0x2b473e];}}}}return _0x4e8f3a;};exports[_0x5984('0x31')]=function(_0x397f9c){var _0x35d2f0={};for(var _0x2d93ac in _0x397f9c){if(_0x397f9c[_0x5984('0x2c')](_0x2d93ac)){_0x35d2f0[util[_0x5984('0x15')]('%s',_[_0x5984('0x32')](_0x2d93ac))]=_0x397f9c[_0x2d93ac];}}return{'variables':_0x35d2f0};};exports[_0x5984('0x33')]=function(_0x8ba39a,_0x5208e9){if(!_['isNil'](_0x8ba39a)){if(_0x8ba39a[_0x5984('0x2c')]('originated')){if(_0x8ba39a[_0x5984('0x34')]>0x0){_0x8ba39a['originated']-=0x1;}else{logger[_0x5984('0xa')](_0x5984('0x35'),_0x5208e9);}}}else{logger[_0x5984('0xa')](_0x5984('0x36'),_0x5208e9);}};exports[_0x5984('0x37')]=function(_0x1edbd5){var _0x5a51fb=moment()[_0x5984('0x15')](_0x5984('0x38'));_0x1edbd5[_0x5984('0x39')]=0xd;_0x1edbd5[_0x5984('0x3a')]=_0x5984('0x3b');_0x1edbd5['starttime']=_0x5a51fb;_0x1edbd5[_0x5984('0x3c')]=_0x5a51fb;_0x1edbd5['endtime']=_0x5a51fb;};exports[_0x5984('0x3d')]=function(_0x2c08b4,_0x2dc623,_0x4318eb){var _0x583981=moment()[_0x5984('0x15')](_0x5984('0x38'));_0x2c08b4['state']=_0x2dc623;_0x2c08b4[_0x5984('0x3a')]=_0x4318eb;_0x2c08b4[_0x5984('0x3c')]=_0x583981;_0x2c08b4[_0x5984('0x3e')]=getSeconds(_0x2c08b4['responsetime'],_0x2c08b4[_0x5984('0x3f')]);};exports[_0x5984('0x40')]=function(_0x38b46a,_0x115ebc,_0x411d4f){_0x38b46a[_0x5984('0x41')]=_0x115ebc;_0x38b46a[_0x5984('0x42')]=_0x411d4f;};exports[_0x5984('0x43')]=function(_0x43c532,_0x5da980,_0x1c1729){var _0x388a98=moment()['format'](_0x5984('0x38'));_0x43c532[_0x5984('0x39')]=_0x5da980;_0x43c532[_0x5984('0x3a')]=_0x1c1729;_0x43c532[_0x5984('0x3c')]=_0x43c532[_0x5984('0x3c')]?_0x43c532['responsetime']:_0x388a98;_0x43c532[_0x5984('0x44')]=_0x43c532[_0x5984('0x44')]?_0x43c532['endtime']:_0x388a98;_0x43c532[_0x5984('0x3e')]=getSeconds(_0x43c532[_0x5984('0x3c')]||0x0,_0x43c532['starttime']||0x0);_0x43c532[_0x5984('0x45')]=_0x43c532[_0x5984('0x46')]?getSeconds(_0x43c532[_0x5984('0x44')],_0x43c532['answertime']):0x0;};exports[_0x5984('0x47')]=function(_0x1755bc){return _0x1755bc===_0x5984('0x48');};exports[_0x5984('0x49')]=function(_0x36acbb,_0x5e0756,_0x39624f,_0x49a7ac,_0x94d713){var _0x25de23=_0x49a7ac?_0x5984('0x4a'):_0x36acbb[_0x5984('0x1b')];_0x25de23=_0x94d713?_0x5984('0x4b'):_0x25de23;return{'actionid':_0x36acbb[_0x5984('0x4c')],'action':'originate','channel':_0x36acbb[_0x5984('0x4d')],'callerid':util[_0x5984('0x15')](_0x5984('0x14'),_0x25de23,_0x36acbb[_0x5984('0x1c')]),'Exten':'xcally-motion-preview','Context':'from-sip','Priority':'1','variable':_0x39624f,'timeout':(_0x5e0756[_0x5984('0x4e')]||0x1e)*0x3e8,'async':!![],'channelid':_0x36acbb[_0x5984('0x4c')]};};exports[_0x5984('0x4f')]=function(_0x1ec928){return _0x1ec928['countbusyretry']+_0x1ec928[_0x5984('0x50')]+_0x1ec928[_0x5984('0x51')]+_0x1ec928[_0x5984('0x52')]+_0x1ec928['countnosuchnumberretry'];};exports[_0x5984('0x53')]=function(_0x5b1631){var _0x5adda4=_[_0x5984('0x54')](_0x5b1631);_0x5adda4[_0x5984('0x39')]=0xf;_0x5adda4[_0x5984('0x3a')]=_0x5984('0x55');return _0x5adda4;};exports[_0x5984('0x56')]=function(_0x4a6ff8,_0x391073,_0x5b24b5){var _0x34bba1={};_0x34bba1[_0x391073]=_0x4a6ff8[_0x391073];_0x34bba1[_0x5984('0x57')]=![];_0x34bba1[_0x5984('0x58')]=moment()['add'](_0x5b24b5,_0x5984('0x59'))[_0x5984('0x15')](_0x5984('0x38'));_0x34bba1[_0x5984('0x5a')]=_0x4a6ff8[_0x5984('0x5a')];_0x34bba1[_0x5984('0x5b')]=_0x4a6ff8[_0x5984('0x5b')];_0x34bba1['VoiceQueueId']=_0x4a6ff8[_0x5984('0x5c')]||undefined;return _0x34bba1;};exports[_0x5984('0x5d')]=function(_0x390543,_0x21ada0){if(!_[_0x5984('0x5e')](_0x390543)){if(_0x390543[_0x5984('0x5f')]>0x0){_0x390543[_0x5984('0x5f')]-=0x1;}else{logger[_0x5984('0xa')](_0x21ada0,_0x5984('0x60'));}}else{logger[_0x5984('0xa')](_0x21ada0,_0x5984('0x61'));}};exports[_0x5984('0x62')]=function(_0x4c2d15){if(_0x4c2d15<=0x0){return!![];}return![];};exports[_0x5984('0x63')]=function(_0x397bae,_0x1d1fc5,_0x12c8e0){_0x397bae[_0x5984('0x64')]=_0x1d1fc5;_0x397bae[_0x5984('0x1a')]=_0x397bae[_0x5984('0x65')];_0x397bae[_0x5984('0x66')]=_0x397bae['channelAgent'];_0x397bae[_0x5984('0x67')]=_0x5984('0x68');if(_0x12c8e0){_0x397bae[_0x5984('0x69')]=_0x12c8e0[_0x5984('0x69')];}return _0x397bae;};exports[_0x5984('0x6a')]=function(_0x2f3975){var _0x294d1e={};_0x294d1e['queue']=_0x2f3975[_0x5984('0x65')];_0x294d1e[_0x5984('0x66')]=_0x2f3975[_0x5984('0x4d')];_0x294d1e[_0x5984('0x4c')]=_0x2f3975[_0x5984('0x4c')];return _0x294d1e;};exports[_0x5984('0x6b')]=function(_0x502048){var _0x284e84=[];for(var _0x376dc9 in _0x502048){if(_0x502048['hasOwnProperty'](_0x376dc9)){if(!_[_0x5984('0x5e')](_0x502048[_0x376dc9])&&_0x502048[_0x376dc9][_0x5984('0x39')]===_0x5984('0x6c')&&_0x502048[_0x376dc9][_0x5984('0x6d')]==='reachable'){_0x284e84[_0x5984('0x6e')](_0x502048[_0x376dc9]['id']);}}}return _0x284e84;};exports[_0x5984('0x6f')]=function(_0x23c608){var _0x48e404=moment()[_0x5984('0x7')](0x0);var _0x1b65c3=moment(_0x23c608)[_0x5984('0x7')](0x0);return _0x48e404[_0x5984('0x70')](_0x1b65c3,'seconds');};exports['createBody']=function(_0x43ee99){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x43ee99['ContactId'],'ListId':_0x43ee99['ListId'],'VoiceQueueId':_0x43ee99['VoiceQueueId']||undefined,'CampaignId':_0x43ee99['CampaignId']||undefined};};exports[_0x5984('0x71')]=function(_0x12edb1){if(_0x12edb1===_0x5984('0x4c')||_0x12edb1===_0x5984('0x72')||_0x12edb1==='queue'||_0x12edb1===_0x5984('0x73')||_0x12edb1===_0x5984('0x74')||_0x12edb1===_0x5984('0x75')||_0x12edb1==='membername'||_0x12edb1==='channelAgent'||_0x12edb1==='calleridname'||_0x12edb1==='active'||_0x12edb1===_0x5984('0x1c')||_0x12edb1==='scheduledat'||_0x12edb1===_0x5984('0x76')||_0x12edb1===_0x5984('0x50')||_0x12edb1===_0x5984('0x51')||_0x12edb1==='countglobal'||_0x12edb1===_0x5984('0x77')||_0x12edb1===_0x5984('0x78')||_0x12edb1===_0x5984('0x79')||_0x12edb1===_0x5984('0x7a')||_0x12edb1===_0x5984('0x5a')||_0x12edb1===_0x5984('0x5b')||_0x12edb1===_0x5984('0x42')||_0x12edb1==='VoiceQueueId'||_0x12edb1==='sipcallid'||_0x12edb1===_0x5984('0x7b')||_0x12edb1===_0x5984('0x7c')||_0x12edb1===_0x5984('0x7d')||_0x12edb1===_0x5984('0x7e')||_0x12edb1===_0x5984('0x7f')||_0x12edb1===_0x5984('0x80')||_0x12edb1===_0x5984('0x81')||_0x12edb1===_0x5984('0x82')||_0x12edb1===_0x5984('0x83')||_0x12edb1===_0x5984('0x84')||_0x12edb1===_0x5984('0x85')||_0x12edb1==='xmd-callerid'||_0x12edb1===_0x5984('0x86')||_0x12edb1==='xmd-agi'||_0x12edb1===_0x5984('0x87')||_0x12edb1===_0x5984('0x88')||_0x12edb1==='rtpaudioqosjitter'||_0x12edb1==='rtpaudioqosjitterbridged'||_0x12edb1==='rtpaudioqosloss'||_0x12edb1===_0x5984('0x89')||_0x12edb1===_0x5984('0x8a')||_0x12edb1===_0x5984('0x8b')||_0x12edb1===_0x5984('0x87')||_0x12edb1===_0x5984('0x88')||_0x12edb1===_0x5984('0x8c')||_0x12edb1===_0x5984('0x8d')||_0x12edb1===_0x5984('0x8e')||_0x12edb1===_0x5984('0x89')||_0x12edb1===_0x5984('0x8a')||_0x12edb1===_0x5984('0x8b')||_0x12edb1==='bridgepeer'||_0x12edb1===_0x5984('0x8f')||_0x12edb1==='state'||_0x12edb1===_0x5984('0x3a')){return![];}return!![];};exports[_0x5984('0x90')]=function(_0x356380,_0x5db6cb){var _0x546574,_0xf6f1bb,_0x111ed6;if(_0x5db6cb<=0x0){_0x5db6cb=0x1;}_0x546574=new RegExp('\x5cw{0,'+_0x5db6cb+'}$');_0xf6f1bb=Math['pow'](0xa,_0x5db6cb-0x1);_0x111ed6=Math[_0x5984('0x91')](0xa,_0x5db6cb)-0x1;return util['format']('%s',_[_0x5984('0x92')](_0x356380,_0x546574,_['random'](_0xf6f1bb,_0x111ed6)));};exports['extractCalleridName']=function(_0x29c2f1){var _0x38b83e=_0x29c2f1[_0x5984('0x93')](/"(.*?)"/);return _0x38b83e?_0x38b83e[0x1]:_0x29c2f1;};exports[_0x5984('0x94')]=function(_0xa06fd7){var _0x4d3d5f=_0xa06fd7[_0x5984('0x93')](/<(.*?)>/);return _0x4d3d5f?_0x4d3d5f[0x1]:_0xa06fd7;};
\ No newline at end of file
index 83196c7..9d5998d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa557=['queueremove','reload','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string','number','boolean'];(function(_0x912d27,_0x28e0e3){var _0x31b918=function(_0x1882f7){while(--_0x1882f7){_0x912d27['push'](_0x912d27['shift']());}};_0x31b918(++_0x28e0e3);}(_0xa557,0xb5));var _0x7a55=function(_0x2a4244,_0x5e5b9a){_0x2a4244=_0x2a4244-0x0;var _0x50da3c=_0xa557[_0x2a4244];return _0x50da3c;};'use strict';exports['queueadd']={'queue':{'type':_0x7a55('0x0'),'required':!![]},'interface':{'type':_0x7a55('0x0'),'required':!![]},'membername':{'type':_0x7a55('0x0'),'required':!![]},'penalty':{'type':_0x7a55('0x1'),'required':![]},'paused':{'type':_0x7a55('0x2'),'required':![]}};exports[_0x7a55('0x3')]={'queue':{'type':_0x7a55('0x0'),'required':!![]},'interface':{'type':_0x7a55('0x0'),'required':!![]}};exports['queuepause']={'interface':{'type':_0x7a55('0x0'),'required':!![]},'paused':{'type':_0x7a55('0x2')},'reason':{'type':_0x7a55('0x0'),'required':![]}};exports[_0x7a55('0x4')]={'module':{'type':_0x7a55('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':'string','required':!![]}};exports[_0x7a55('0x5')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x7a55('0x0')},'format':{'type':_0x7a55('0x0')},'mixmonitorid':{'type':'string'}};exports[_0x7a55('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x7a55('0x7')]={'uniqueid':{'type':_0x7a55('0x0'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x7a55('0x0')}};
\ No newline at end of file
+var _0x58b2=['queuepause','reload','voicequeuechannel','queueadd','string','number','queueremove'];(function(_0x5db1ce,_0x57ab66){var _0xb62cbb=function(_0x33b753){while(--_0x33b753){_0x5db1ce['push'](_0x5db1ce['shift']());}};_0xb62cbb(++_0x57ab66);}(_0x58b2,0xd5));var _0x258b=function(_0x35f58d,_0x56c821){_0x35f58d=_0x35f58d-0x0;var _0xbca79b=_0x58b2[_0x35f58d];return _0xbca79b;};'use strict';exports[_0x258b('0x0')]={'queue':{'type':_0x258b('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x258b('0x1'),'required':!![]},'penalty':{'type':_0x258b('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0x258b('0x3')]={'queue':{'type':_0x258b('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x258b('0x4')]={'interface':{'type':_0x258b('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x258b('0x1'),'required':![]}};exports[_0x258b('0x5')]={'module':{'type':'string','required':![]}};exports[_0x258b('0x6')]={'uniqueid':{'type':_0x258b('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x258b('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x258b('0x1')},'mixmonitorid':{'type':_0x258b('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x258b('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0x258b('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x258b('0x1')}};
\ No newline at end of file
index 70fdcf4..6f74e8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x083b=['outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','isNil','isUndefined','initTelephones','initTrunks','initVoiceQueues','voiceQueues','initTriggers','triggers','initTemplates','initZendeskAccounts','zohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','vtigerAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','unmanaged','queuecallerabandon','abandoned','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','duration','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','initFaxAccounts','bluebird','util','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','agents','telephones','trunks','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','interface','total','answered','sumDuration','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','sumHoldTime','sumBillable','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay'];(function(_0x4ed1d,_0x170a36){var _0x2d0a69=function(_0x58272e){while(--_0x58272e){_0x4ed1d['push'](_0x4ed1d['shift']());}};_0x2d0a69(++_0x170a36);}(_0x083b,0xa1));var _0xb083=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0x083b[_0x173d7e];return _0x2220d6;};'use strict';var BPromise=require(_0xb083('0x0'));var util=require(_0xb083('0x1'));var _=require('lodash');var moment=require(_0xb083('0x2'));var Agent=require('../model/agent');var Telephone=require(_0xb083('0x3'));var Trunk=require(_0xb083('0x4'));var VoiceQueue=require(_0xb083('0x5'));var Trigger=require(_0xb083('0x6'));var Template=require(_0xb083('0x7'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0xb083('0x8'));var ZendeskAccount=require(_0xb083('0x9'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0xb083('0xa'));var SugarcrmAccount=require(_0xb083('0xb'));var ZohoAccount=require(_0xb083('0xc'));var DeskAccount=require(_0xb083('0xd'));var VtigerAccount=require(_0xb083('0xe'));var ServicenowAccount=require(_0xb083('0xf'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xb083('0x10'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xb083('0x11')]={};this[_0xb083('0x12')]={};this[_0xb083('0x13')]={};this['voiceQueues']={};this['triggers']={};this[_0xb083('0x14')]={};this[_0xb083('0x15')]={};this[_0xb083('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xb083('0x17')]={};this[_0xb083('0x18')]={};this[_0xb083('0x19')]={};this[_0xb083('0x1a')]={};this[_0xb083('0x1b')]={};this[_0xb083('0x1c')]={};this[_0xb083('0x1d')]={};this[_0xb083('0x1e')]={};this[_0xb083('0x1f')]={};this[_0xb083('0x20')]={};this['zohoAccounts']={};this['deskAccounts']={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0xb083('0x21')]={};this[_0xb083('0x22')]={};this[_0xb083('0x23')]={};};function freeIsNotKey(_0xfd5070,_0x16339f,_0x748672){var _0x4c5308=_[_0xb083('0x24')](_0xfd5070,function(_0x55df3d,_0x5c5432){return _0x55df3d[_0x748672];});for(var _0x1b0d97 in _0x16339f){if(_0x16339f[_0xb083('0x25')](_0x1b0d97)){if(!_0x4c5308[_0x1b0d97]){delete _0x16339f[_0x1b0d97];}}}}function freeIsNotKeySip(_0x3090e1,_0x33f9a5){var _0x550cc6=_['mapKeys'](_0x3090e1,function(_0x16cf29,_0x4627c5){return util[_0xb083('0x26')](_0xb083('0x27'),_0x16cf29[_0xb083('0x28')]);});for(var _0x237df0 in _0x33f9a5){if(_0x33f9a5['hasOwnProperty'](_0x237df0)){if(!_0x550cc6[_0x237df0]){delete _0x33f9a5[_0x237df0];}}}}function freeIsNotKeyAgent(_0x5ad5e1,_0x1bb612){var _0xa243be=_[_0xb083('0x24')](_0x5ad5e1,function(_0xaca960,_0x2950e9){var _0x19fdeb=_['isNil'](_0xaca960[_0xb083('0x29')])?util[_0xb083('0x26')](_0xb083('0x27'),_0xaca960['name']):_0xaca960[_0xb083('0x29')];return _0x19fdeb;});for(var _0x70e2c2 in _0x1bb612){if(_0x1bb612[_0xb083('0x25')](_0x70e2c2)){if(!_0xa243be[_0x70e2c2]){delete _0x1bb612[_0x70e2c2];}}}}function clearVoiceCallReports(_0x3a120c){_0x3a120c[_0xb083('0x2a')]=0x0;_0x3a120c[_0xb083('0x2b')]=0x0;_0x3a120c['sumHoldTime']=0x0;_0x3a120c[_0xb083('0x2c')]=0x0;_0x3a120c['sumBillable']=0x0;}function clearCampaigns(_0x172998){if(!_['isEmpty'](_0x172998)){for(var _0x51c2f2 in _0x172998){if(_0x172998['hasOwnProperty'](_0x51c2f2)){_0x172998[_0x51c2f2][_0xb083('0x2d')]=0x0;_0x172998[_0x51c2f2][_0xb083('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x47c153){if(!_[_0xb083('0x2f')](_0x47c153)){for(var _0x285aa6 in _0x47c153){if(_0x47c153['hasOwnProperty'](_0x285aa6)){_0x47c153[_0x285aa6][_0xb083('0x2a')]=0x0;_0x47c153[_0x285aa6]['answered']=0x0;_0x47c153[_0x285aa6]['unmanaged']=0x0;_0x47c153[_0x285aa6]['abandoned']=0x0;_0x47c153[_0x285aa6][_0xb083('0x30')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x2c')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x31')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x32')]=0x0;_0x47c153[_0x285aa6]['outboundNoAnswerCallsDay']=0x0;_0x47c153[_0x285aa6][_0xb083('0x33')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x34')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x35')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x36')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x37')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x38')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x39')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3a')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3b')]=0x0;_0x47c153[_0x285aa6]['outboundReCallsDay']=0x0;_0x47c153[_0x285aa6][_0xb083('0x32')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3c')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3d')]=!![];}}}}Realtime[_0xb083('0x3e')][_0xb083('0x3f')]=function(_0x50db0a,_0x251de7){for(var _0x3b0f20 in _0x251de7){if(_0x50db0a[_0xb083('0x25')](_0x3b0f20)){_0x50db0a[_0x3b0f20]=_0x251de7[_0x3b0f20];}}};Realtime[_0xb083('0x3e')][_0xb083('0x40')]=function(){var _0x53abcb=this;return function(_0x52d172){if(_0x52d172){freeIsNotKeyAgent(_0x52d172,_0x53abcb['agents']);for(var _0x1f7ef3=0x0,_0x1ef090={},_0x5764c3={};_0x1f7ef3<_0x52d172[_0xb083('0x41')];_0x1f7ef3+=0x1){_0x1ef090=_0x52d172[_0x1f7ef3];var _0x2c4a08=_[_0xb083('0x42')](_0x1ef090[_0xb083('0x29')])?util[_0xb083('0x26')](_0xb083('0x27'),_0x1ef090[_0xb083('0x28')]):_0x1ef090[_0xb083('0x29')];if(_[_0xb083('0x43')](_0x53abcb['agents'][_0x2c4a08])){_0x53abcb[_0xb083('0x11')][_0x2c4a08]=new Agent(_0x1ef090);}else{_0x53abcb['mergeFromDatabase'](_0x53abcb[_0xb083('0x11')][_0x2c4a08],_0x1ef090);}}}return _0x53abcb['agents'];};};Realtime[_0xb083('0x3e')][_0xb083('0x44')]=function(){var _0x2fe0d7=this;return function(_0x31845a){if(_0x31845a){freeIsNotKeySip(_0x31845a,_0x2fe0d7[_0xb083('0x12')]);for(var _0x5db3c2=0x0,_0x353c11={},_0x29c39c={};_0x5db3c2<_0x31845a[_0xb083('0x41')];_0x5db3c2+=0x1){_0x353c11=_0x31845a[_0x5db3c2];if(_['isUndefined'](_0x2fe0d7['telephones'][util[_0xb083('0x26')](_0xb083('0x27'),_0x353c11[_0xb083('0x28')])])){_0x2fe0d7[_0xb083('0x12')][util[_0xb083('0x26')](_0xb083('0x27'),_0x353c11[_0xb083('0x28')])]=new Telephone(_0x353c11);}else{_0x2fe0d7[_0xb083('0x3f')](_0x2fe0d7[_0xb083('0x12')][util[_0xb083('0x26')](_0xb083('0x27'),_0x353c11['name'])],_0x353c11);}}}return _0x2fe0d7[_0xb083('0x12')];};};Realtime[_0xb083('0x3e')][_0xb083('0x45')]=function(){var _0x3bfbf9=this;return function(_0x101f88){if(_0x101f88){freeIsNotKeySip(_0x101f88,_0x3bfbf9[_0xb083('0x13')]);for(var _0x4fb602=0x0,_0x394e57={},_0x107218={};_0x4fb602<_0x101f88[_0xb083('0x41')];_0x4fb602+=0x1){_0x394e57=_0x101f88[_0x4fb602];if(_[_0xb083('0x43')](_0x3bfbf9[_0xb083('0x13')][util['format'](_0xb083('0x27'),_0x394e57['name'])])){_0x3bfbf9[_0xb083('0x13')][util[_0xb083('0x26')](_0xb083('0x27'),_0x394e57['name'])]=new Trunk(_0x394e57);}else{_0x3bfbf9['mergeFromDatabase'](_0x3bfbf9[_0xb083('0x13')][util[_0xb083('0x26')](_0xb083('0x27'),_0x394e57[_0xb083('0x28')])],_0x394e57);}}}return _0x3bfbf9[_0xb083('0x13')];};};Realtime[_0xb083('0x3e')][_0xb083('0x46')]=function(){var _0x41f41b=this;return function(_0x5c1c6a){if(_0x5c1c6a){freeIsNotKey(_0x5c1c6a,_0x41f41b[_0xb083('0x47')],_0xb083('0x28'));for(var _0x4f6889=0x0,_0x254023={},_0x11cf61={};_0x4f6889<_0x5c1c6a[_0xb083('0x41')];_0x4f6889+=0x1){_0x254023=_0x5c1c6a[_0x4f6889];if(_[_0xb083('0x43')](_0x41f41b[_0xb083('0x47')][_0x254023[_0xb083('0x28')]])){_0x41f41b[_0xb083('0x47')][_0x254023[_0xb083('0x28')]]=new VoiceQueue(_0x254023);}else{_0x41f41b['mergeFromDatabase'](_0x41f41b[_0xb083('0x47')][_0x254023[_0xb083('0x28')]],_0x254023);}}}return _0x41f41b[_0xb083('0x47')];};};Realtime[_0xb083('0x3e')][_0xb083('0x48')]=function(){var _0x412293=this;return function(_0x1d7a16){if(_0x1d7a16){freeIsNotKey(_0x1d7a16,_0x412293[_0xb083('0x49')],'id');for(var _0x444506=0x0,_0x220df4={},_0x1cdbab={};_0x444506<_0x1d7a16['length'];_0x444506+=0x1){_0x220df4=_0x1d7a16[_0x444506];if(_['isUndefined'](_0x412293[_0xb083('0x49')][_0x220df4['id']])){_0x412293[_0xb083('0x49')][_0x220df4['id']]=new Trigger(_0x220df4);}else{_0x412293[_0xb083('0x3f')](_0x412293[_0xb083('0x49')][_0x220df4['id']],_0x220df4);}}}return _0x412293[_0xb083('0x49')];};};Realtime[_0xb083('0x3e')][_0xb083('0x4a')]=function(){var _0x4feefa=this;return function(_0x32e04b){if(_0x32e04b){freeIsNotKey(_0x32e04b,_0x4feefa[_0xb083('0x15')],'id');for(var _0x47dbaa=0x0,_0x15c3b9={},_0x4dae7f={};_0x47dbaa<_0x32e04b[_0xb083('0x41')];_0x47dbaa+=0x1){_0x15c3b9=_0x32e04b[_0x47dbaa];if(_[_0xb083('0x43')](_0x4feefa[_0xb083('0x15')][_0x15c3b9['id']])){_0x4feefa['templates'][_0x15c3b9['id']]=new Template(_0x15c3b9);}else{_0x4feefa['mergeFromDatabase'](_0x4feefa[_0xb083('0x15')][_0x15c3b9['id']],_0x15c3b9);}}}return _0x4feefa['templates'];};};Realtime[_0xb083('0x3e')][_0xb083('0x4b')]=function(){var _0x4072fd=this;return function(_0xb7422b){if(_0xb7422b){freeIsNotKey(_0xb7422b,_0x4072fd[_0xb083('0x1d')],'id');for(var _0x751533=0x0,_0x111fe0={},_0x66f3e7={};_0x751533<_0xb7422b[_0xb083('0x41')];_0x751533+=0x1){_0x111fe0=_0xb7422b[_0x751533];if(_[_0xb083('0x43')](_0x4072fd[_0xb083('0x1d')][_0x111fe0['id']])){_0x4072fd[_0xb083('0x1d')][_0x111fe0['id']]=new ZendeskAccount(_0x111fe0);}else{_0x4072fd['mergeFromDatabase'](_0x4072fd[_0xb083('0x1d')][_0x111fe0['id']],_0x111fe0);}}}return _0x4072fd[_0xb083('0x1d')];};};Realtime[_0xb083('0x3e')]['initSalesforceAccounts']=function(){var _0x9f1b30=this;return function(_0x15c791){if(_0x15c791){freeIsNotKey(_0x15c791,_0x9f1b30[_0xb083('0x1e')],'id');for(var _0x448f32=0x0,_0x38804c={},_0x209f5f={};_0x448f32<_0x15c791[_0xb083('0x41')];_0x448f32+=0x1){_0x38804c=_0x15c791[_0x448f32];if(_[_0xb083('0x43')](_0x9f1b30['salesforceAccounts'][_0x38804c['id']])){_0x9f1b30['salesforceAccounts'][_0x38804c['id']]=new SalesforceAccount(_0x38804c);}else{_0x9f1b30[_0xb083('0x3f')](_0x9f1b30[_0xb083('0x1e')][_0x38804c['id']],_0x38804c);}}}return _0x9f1b30[_0xb083('0x1e')];};};Realtime[_0xb083('0x3e')]['initFreshdeskAccounts']=function(){var _0x3bf5b3=this;return function(_0x2ec6f5){if(_0x2ec6f5){freeIsNotKey(_0x2ec6f5,_0x3bf5b3['freshdeskAccounts'],'id');for(var _0xa0329b=0x0,_0x49a6d1={},_0x483321={};_0xa0329b<_0x2ec6f5[_0xb083('0x41')];_0xa0329b+=0x1){_0x49a6d1=_0x2ec6f5[_0xa0329b];if(_[_0xb083('0x43')](_0x3bf5b3[_0xb083('0x20')][_0x49a6d1['id']])){_0x3bf5b3['freshdeskAccounts'][_0x49a6d1['id']]=new FreshdeskAccount(_0x49a6d1);}else{_0x3bf5b3[_0xb083('0x3f')](_0x3bf5b3[_0xb083('0x20')][_0x49a6d1['id']],_0x49a6d1);}}}return _0x3bf5b3['freshdeskAccounts'];};};Realtime[_0xb083('0x3e')]['initZohoAccounts']=function(){var _0xbff6b1=this;return function(_0x2eb254){if(_0x2eb254){freeIsNotKey(_0x2eb254,_0xbff6b1[_0xb083('0x4c')],'id');for(var _0x3768d0=0x0,_0x54f912={},_0x10b8e0={};_0x3768d0<_0x2eb254[_0xb083('0x41')];_0x3768d0+=0x1){_0x54f912=_0x2eb254[_0x3768d0];if(_['isUndefined'](_0xbff6b1['zohoAccounts'][_0x54f912['id']])){_0xbff6b1[_0xb083('0x4c')][_0x54f912['id']]=new ZohoAccount(_0x54f912);}else{_0xbff6b1[_0xb083('0x3f')](_0xbff6b1['zohoAccounts'][_0x54f912['id']],_0x54f912);}}}return _0xbff6b1[_0xb083('0x4c')];};};Realtime['prototype'][_0xb083('0x4d')]=function(){var _0x445941=this;return function(_0x1eb25e){if(_0x1eb25e){freeIsNotKey(_0x1eb25e,_0x445941[_0xb083('0x4e')],'id');for(var _0x319eaa=0x0,_0x228e7d={},_0x59f91d={};_0x319eaa<_0x1eb25e['length'];_0x319eaa+=0x1){_0x228e7d=_0x1eb25e[_0x319eaa];if(_[_0xb083('0x43')](_0x445941[_0xb083('0x4e')][_0x228e7d['id']])){_0x445941['deskAccounts'][_0x228e7d['id']]=new DeskAccount(_0x228e7d);}else{_0x445941[_0xb083('0x3f')](_0x445941[_0xb083('0x4e')][_0x228e7d['id']],_0x228e7d);}}}return _0x445941[_0xb083('0x4e')];};};Realtime[_0xb083('0x3e')][_0xb083('0x4f')]=function(){var _0x4fdb2d=this;return function(_0x38dcde){if(_0x38dcde){freeIsNotKey(_0x38dcde,_0x4fdb2d[_0xb083('0x1f')],'id');for(var _0x384436=0x0,_0x43bf75={},_0x154eaa={};_0x384436<_0x38dcde[_0xb083('0x41')];_0x384436+=0x1){_0x43bf75=_0x38dcde[_0x384436];if(_[_0xb083('0x43')](_0x4fdb2d[_0xb083('0x1f')][_0x43bf75['id']])){_0x4fdb2d[_0xb083('0x1f')][_0x43bf75['id']]=new SugarcrmAccount(_0x43bf75);}else{_0x4fdb2d[_0xb083('0x3f')](_0x4fdb2d[_0xb083('0x1f')][_0x43bf75['id']],_0x43bf75);}}}return _0x4fdb2d[_0xb083('0x1f')];};};Realtime[_0xb083('0x3e')]['initVtigerAccounts']=function(){var _0x1bc9f4=this;return function(_0x617782){if(_0x617782){freeIsNotKey(_0x617782,_0x1bc9f4[_0xb083('0x50')],'id');for(var _0x562b99=0x0,_0x540ba0={},_0x156930={};_0x562b99<_0x617782['length'];_0x562b99+=0x1){_0x540ba0=_0x617782[_0x562b99];if(_[_0xb083('0x43')](_0x1bc9f4['vtigerAccounts'][_0x540ba0['id']])){_0x1bc9f4[_0xb083('0x50')][_0x540ba0['id']]=new VtigerAccount(_0x540ba0);}else{_0x1bc9f4[_0xb083('0x3f')](_0x1bc9f4[_0xb083('0x50')][_0x540ba0['id']],_0x540ba0);}}}return _0x1bc9f4[_0xb083('0x50')];};};Realtime[_0xb083('0x3e')]['initServicenowAccounts']=function(){var _0x4b26de=this;return function(_0xa1536f){if(_0xa1536f){freeIsNotKey(_0xa1536f,_0x4b26de[_0xb083('0x51')],'id');for(var _0x48834d=0x0,_0x253d4f={},_0x130a68={};_0x48834d<_0xa1536f['length'];_0x48834d+=0x1){_0x253d4f=_0xa1536f[_0x48834d];if(_[_0xb083('0x43')](_0x4b26de['servicenowAccounts'][_0x253d4f['id']])){_0x4b26de['servicenowAccounts'][_0x253d4f['id']]=new ServicenowAccount(_0x253d4f);}else{_0x4b26de['mergeFromDatabase'](_0x4b26de[_0xb083('0x51')][_0x253d4f['id']],_0x253d4f);}}}return _0x4b26de['servicenowAccounts'];};};Realtime[_0xb083('0x3e')][_0xb083('0x52')]=function(){var _0x3d5f5c=this;return function(_0x18b385){if(_0x18b385){freeIsNotKey(_0x18b385,_0x3d5f5c['dynamics365Accounts'],'id');for(var _0x29547b=0x0,_0x4f0b54={},_0xc3bc89={};_0x29547b<_0x18b385['length'];_0x29547b+=0x1){_0x4f0b54=_0x18b385[_0x29547b];if(_[_0xb083('0x43')](_0x3d5f5c[_0xb083('0x21')][_0x4f0b54['id']])){_0x3d5f5c['dynamics365Accounts'][_0x4f0b54['id']]=new Dynamics365Account(_0x4f0b54);}else{_0x3d5f5c[_0xb083('0x3f')](_0x3d5f5c['dynamics365Accounts'][_0x4f0b54['id']],_0x4f0b54);}}}return _0x3d5f5c[_0xb083('0x21')];};};Realtime['prototype'][_0xb083('0x53')]=function(){var _0x3cb6f5=this;return function(_0x366cba){if(_0x366cba){freeIsNotKey(_0x366cba,_0x3cb6f5['freshsalesAccounts'],'id');for(var _0x22ecfb=0x0,_0x1bfcd2={},_0x42933e={};_0x22ecfb<_0x366cba[_0xb083('0x41')];_0x22ecfb+=0x1){_0x1bfcd2=_0x366cba[_0x22ecfb];if(_[_0xb083('0x43')](_0x3cb6f5[_0xb083('0x22')][_0x1bfcd2['id']])){_0x3cb6f5[_0xb083('0x22')][_0x1bfcd2['id']]=new FreshsalesAccount(_0x1bfcd2);}else{_0x3cb6f5['mergeFromDatabase'](_0x3cb6f5[_0xb083('0x22')][_0x1bfcd2['id']],_0x1bfcd2);}}}return _0x3cb6f5['freshsalesAccounts'];};};Realtime['prototype'][_0xb083('0x54')]=function(){var _0x54e6b0=this;return function(_0x116bff){for(var _0x4ef3ba=0x0;_0x4ef3ba<_0x116bff[_0xb083('0x41')];_0x4ef3ba+=0x1){_[_0xb083('0x55')](_0x54e6b0[_0xb083('0x47')][_0x116bff[_0x4ef3ba][_0xb083('0x28')]],_0x116bff[_0x4ef3ba]);}return _0x54e6b0[_0xb083('0x47')];};};Realtime['prototype'][_0xb083('0x56')]=function(){var _0x5a030c=this;return function(_0x1d4506){clearVoiceQueues(_0x5a030c['voiceQueues']);if(_0x1d4506){_0x1d4506=_[_0xb083('0x57')](_0x1d4506,_0xb083('0x58'));for(var _0xee311f in _0x1d4506){if(_0x1d4506['hasOwnProperty'](_0xee311f)){var _0x2f9742={};for(var _0x572382=0x0;_0x572382<_0x1d4506[_0xee311f][_0xb083('0x41')];_0x572382+=0x1){var _0x5baa81=_0x1d4506[_0xee311f][_0x572382][_0xb083('0x59')];if(_0x5a030c[_0xb083('0x47')][_0x5baa81]){if(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5a')]){_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x5b')]+=0x1;}if(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5c')]){_0x5a030c['voiceQueues'][_0x5baa81][_0xb083('0x5d')]+=0x1;}_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x30')]+=moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5e')])[_0xb083('0x5f')](moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x60')]),_0xb083('0x61'))||0x0;if(_0x572382===_0x1d4506[_0xee311f][_0xb083('0x41')]-0x1){_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x2c')]+=moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x62')]||_0x1d4506[_0xee311f][_0x572382]['queuecallerabandonAt']||_0x1d4506[_0xee311f][_0x572382][_0xb083('0x63')])[_0xb083('0x5f')](moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x60')]),_0xb083('0x61'))||0x0;_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x2a')]+=0x1;if(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x64')]){_0x5a030c['voiceQueues'][_0x5baa81][_0xb083('0x2b')]+=0x1;_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x31')]+=moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x62')])['diff'](moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5e')]),'seconds')||0x0;}}else{_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x2c')]+=_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x30')]||0x0;}}}}}}return _0x5a030c[_0xb083('0x47')];};};Realtime['prototype']['initVoiceCallReports']=function(){var _0x557feb=this;return function(_0x3df2e8){clearVoiceCallReports(_0x557feb['outbound']);if(_0x3df2e8){for(var _0x4d6617=0x0;_0x4d6617<_0x3df2e8[_0xb083('0x41')];_0x4d6617+=0x1){_0x557feb[_0xb083('0x16')][_0xb083('0x2a')]+=0x1;_0x557feb[_0xb083('0x16')][_0xb083('0x2c')]+=_0x3df2e8[_0x4d6617][_0xb083('0x65')];if(_0x3df2e8[_0x4d6617]['disposition']==='ANSWERED'){_0x557feb['outbound'][_0xb083('0x2b')]+=0x1;_0x557feb[_0xb083('0x16')][_0xb083('0x30')]+=_0x3df2e8[_0x4d6617][_0xb083('0x65')]-_0x3df2e8[_0x4d6617]['billableseconds']||0x0;_0x557feb[_0xb083('0x16')]['sumBillable']+=_0x3df2e8[_0x4d6617][_0xb083('0x66')];}}}return _0x557feb[_0xb083('0x16')];};};Realtime[_0xb083('0x3e')][_0xb083('0x67')]=function(){var _0x58377a=this;return function(_0xd537e9){if(_0xd537e9){freeIsNotKey(_0xd537e9,_0x58377a[_0xb083('0x14')],_0xb083('0x28'));for(var _0x444d1e=0x0,_0x1d58ea={};_0x444d1e<_0xd537e9[_0xb083('0x41')];_0x444d1e+=0x1){_0x1d58ea=_0xd537e9[_0x444d1e];if(_[_0xb083('0x43')](_0x58377a[_0xb083('0x14')][_0x1d58ea[_0xb083('0x28')]])){_0x58377a[_0xb083('0x14')][_0x1d58ea['name']]=new Campaign(_0x1d58ea);}else{_0x58377a[_0xb083('0x3f')](_0x58377a[_0xb083('0x14')][_0x1d58ea[_0xb083('0x28')]],_0x1d58ea);_0x58377a[_0xb083('0x14')][_0x1d58ea[_0xb083('0x28')]]['dialQueueProject']=_0x1d58ea[_0xb083('0x68')]?_0x1d58ea[_0xb083('0x68')][_0xb083('0x28')]:undefined;}}}return _0x58377a[_0xb083('0x14')];};};Realtime[_0xb083('0x3e')][_0xb083('0x69')]=function(){var _0x592dca=this;return function(_0x4a7862){if(_0x4a7862){freeIsNotKey(_0x4a7862,_0x592dca[_0xb083('0x17')],'id');for(var _0x374fb8=0x0,_0x1582df={};_0x374fb8<_0x4a7862[_0xb083('0x41')];_0x374fb8+=0x1){_0x1582df=_0x4a7862[_0x374fb8];if(_[_0xb083('0x43')](_0x592dca[_0xb083('0x17')][_0x1582df['id']])){_0x592dca[_0xb083('0x17')][_0x1582df['id']]=new VoiceExtension(_0x1582df);}else{_0x592dca[_0xb083('0x3f')](_0x592dca[_0xb083('0x17')][_0x1582df['id']],_0x1582df);}}}return _0x592dca['voiceExtensions'];};};Realtime[_0xb083('0x3e')]['initCampaignHopperHistory']=function(){var _0x19f1c5=this;return function(_0x3faf7e){clearCampaigns(_0x19f1c5[_0xb083('0x14')]);for(var _0xa90285=0x0;_0xa90285<_0x3faf7e[_0xb083('0x41')];_0xa90285+=0x1){_[_0xb083('0x55')](_0x19f1c5[_0xb083('0x14')][_0x3faf7e[_0xa90285]['name']],_0x3faf7e[_0xa90285]);}return _0x19f1c5[_0xb083('0x14')];};};Realtime['prototype'][_0xb083('0x6a')]=function(){var _0x4243b2=this;return function(_0x3cd06a){if(_0x3cd06a){freeIsNotKey(_0x3cd06a,_0x4243b2[_0xb083('0x23')],'id');for(var _0x5939ae=0x0,_0x1d52cf={},_0x2bec08={};_0x5939ae<_0x3cd06a[_0xb083('0x41')];_0x5939ae+=0x1){_0x1d52cf=_0x3cd06a[_0x5939ae];if(_['isUndefined'](_0x4243b2[_0xb083('0x23')][_0x1d52cf['id']])){_0x4243b2[_0xb083('0x23')][_0x1d52cf['id']]=new FaxAccount(_0x1d52cf);}else{_0x4243b2[_0xb083('0x3f')](_0x4243b2[_0xb083('0x23')][_0x1d52cf['id']],_0x1d52cf);}}}return _0x4243b2[_0xb083('0x23')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0xf1f3=['initFaxAccounts','bluebird','util','lodash','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','triggers','outbound','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumBillable','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','prototype','initAgents','length','mergeFromDatabase','isUndefined','initTrunks','trunks','initVoiceQueues','voiceQueues','initTriggers','initTemplates','templates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initVoiceQueueHopperHistory','merge','uniqueid','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','duration','ANSWERED','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','voiceExtensions','initCampaignHopperHistory'];(function(_0x528db,_0x31f893){var _0x5365aa=function(_0x485e5a){while(--_0x485e5a){_0x528db['push'](_0x528db['shift']());}};_0x5365aa(++_0x31f893);}(_0xf1f3,0x6c));var _0x3f1f=function(_0x5c293f,_0x54cc0e){_0x5c293f=_0x5c293f-0x0;var _0x480297=_0xf1f3[_0x5c293f];return _0x480297;};'use strict';var BPromise=require(_0x3f1f('0x0'));var util=require(_0x3f1f('0x1'));var _=require(_0x3f1f('0x2'));var moment=require('moment');var Agent=require(_0x3f1f('0x3'));var Telephone=require(_0x3f1f('0x4'));var Trunk=require(_0x3f1f('0x5'));var VoiceQueue=require(_0x3f1f('0x6'));var Trigger=require(_0x3f1f('0x7'));var Template=require(_0x3f1f('0x8'));var Campaign=require(_0x3f1f('0x9'));var VoiceExtension=require(_0x3f1f('0xa'));var ZendeskAccount=require(_0x3f1f('0xb'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0x3f1f('0xc'));var SugarcrmAccount=require(_0x3f1f('0xd'));var ZohoAccount=require(_0x3f1f('0xe'));var DeskAccount=require(_0x3f1f('0xf'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x3f1f('0x10'));var Dynamics365Account=require(_0x3f1f('0x11'));var FreshsalesAccount=require(_0x3f1f('0x12'));var FaxAccount=require(_0x3f1f('0x13'));var Realtime=function(){this[_0x3f1f('0x14')]={};this[_0x3f1f('0x15')]={};this['trunks']={};this['voiceQueues']={};this[_0x3f1f('0x16')]={};this['campaigns']={};this['templates']={};this[_0x3f1f('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x3f1f('0x18')]={};this[_0x3f1f('0x19')]={};this[_0x3f1f('0x1a')]={};this[_0x3f1f('0x1b')]={};this[_0x3f1f('0x1c')]={};this[_0x3f1f('0x1d')]={};this[_0x3f1f('0x1e')]={};this[_0x3f1f('0x1f')]={};this['freshdeskAccounts']={};this[_0x3f1f('0x20')]={};this[_0x3f1f('0x21')]={};this[_0x3f1f('0x22')]={};this[_0x3f1f('0x23')]={};this[_0x3f1f('0x24')]={};this[_0x3f1f('0x25')]={};this[_0x3f1f('0x26')]={};};function freeIsNotKey(_0xfdb95e,_0x26eab0,_0x197a9d){var _0x583e27=_[_0x3f1f('0x27')](_0xfdb95e,function(_0x19023e,_0x250a57){return _0x19023e[_0x197a9d];});for(var _0x4ecd14 in _0x26eab0){if(_0x26eab0[_0x3f1f('0x28')](_0x4ecd14)){if(!_0x583e27[_0x4ecd14]){delete _0x26eab0[_0x4ecd14];}}}}function freeIsNotKeySip(_0x1f0462,_0x18654d){var _0x5d25a8=_['mapKeys'](_0x1f0462,function(_0x494304,_0x52a564){return util[_0x3f1f('0x29')](_0x3f1f('0x2a'),_0x494304[_0x3f1f('0x2b')]);});for(var _0x3faf63 in _0x18654d){if(_0x18654d['hasOwnProperty'](_0x3faf63)){if(!_0x5d25a8[_0x3faf63]){delete _0x18654d[_0x3faf63];}}}}function freeIsNotKeyAgent(_0x1c432b,_0x124c6a){var _0xf1bdb1=_[_0x3f1f('0x27')](_0x1c432b,function(_0x3ac161,_0x6c954){var _0x80e4dc=_[_0x3f1f('0x2c')](_0x3ac161[_0x3f1f('0x2d')])?util['format'](_0x3f1f('0x2a'),_0x3ac161[_0x3f1f('0x2b')]):_0x3ac161[_0x3f1f('0x2d')];return _0x80e4dc;});for(var _0x2b3a70 in _0x124c6a){if(_0x124c6a[_0x3f1f('0x28')](_0x2b3a70)){if(!_0xf1bdb1[_0x2b3a70]){delete _0x124c6a[_0x2b3a70];}}}}function clearVoiceCallReports(_0x32594f){_0x32594f[_0x3f1f('0x2e')]=0x0;_0x32594f[_0x3f1f('0x2f')]=0x0;_0x32594f[_0x3f1f('0x30')]=0x0;_0x32594f['sumDuration']=0x0;_0x32594f[_0x3f1f('0x31')]=0x0;}function clearCampaigns(_0x16f63d){if(!_['isEmpty'](_0x16f63d)){for(var _0x442582 in _0x16f63d){if(_0x16f63d['hasOwnProperty'](_0x442582)){_0x16f63d[_0x442582][_0x3f1f('0x32')]=0x0;_0x16f63d[_0x442582][_0x3f1f('0x33')]=0x0;}}}}function clearVoiceQueues(_0x1a1621){if(!_[_0x3f1f('0x34')](_0x1a1621)){for(var _0x4cde8c in _0x1a1621){if(_0x1a1621[_0x3f1f('0x28')](_0x4cde8c)){_0x1a1621[_0x4cde8c][_0x3f1f('0x2e')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x2f')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x35')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x36')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x30')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x37')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x31')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x38')]=0x0;_0x1a1621[_0x4cde8c]['outboundNoAnswerCallsDay']=0x0;_0x1a1621[_0x4cde8c]['outboundBusyCallsDay']=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x39')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x3a')]=0x0;_0x1a1621[_0x4cde8c]['outboundUnknownCallsDay']=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x3b')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x3c')]=0x0;_0x1a1621[_0x4cde8c]['outboundBlacklistCallsDay']=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x3d')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x3e')]=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x3f')]=0x0;_0x1a1621[_0x4cde8c]['outboundAnswerAgiCallsDay']=0x0;_0x1a1621[_0x4cde8c][_0x3f1f('0x40')]=0x0;_0x1a1621[_0x4cde8c]['queueStatusComplete']=!![];}}}}Realtime[_0x3f1f('0x41')]['mergeFromDatabase']=function(_0x19bffe,_0x211218){for(var _0x525733 in _0x211218){if(_0x19bffe[_0x3f1f('0x28')](_0x525733)){_0x19bffe[_0x525733]=_0x211218[_0x525733];}}};Realtime[_0x3f1f('0x41')][_0x3f1f('0x42')]=function(){var _0x3d4a54=this;return function(_0x480bd0){if(_0x480bd0){freeIsNotKeyAgent(_0x480bd0,_0x3d4a54[_0x3f1f('0x14')]);for(var _0x385a13=0x0,_0x581ff5={},_0x312d6c={};_0x385a13<_0x480bd0[_0x3f1f('0x43')];_0x385a13+=0x1){_0x581ff5=_0x480bd0[_0x385a13];var _0x464f8c=_[_0x3f1f('0x2c')](_0x581ff5[_0x3f1f('0x2d')])?util['format'](_0x3f1f('0x2a'),_0x581ff5[_0x3f1f('0x2b')]):_0x581ff5[_0x3f1f('0x2d')];if(_['isUndefined'](_0x3d4a54[_0x3f1f('0x14')][_0x464f8c])){_0x3d4a54[_0x3f1f('0x14')][_0x464f8c]=new Agent(_0x581ff5);}else{_0x3d4a54[_0x3f1f('0x44')](_0x3d4a54['agents'][_0x464f8c],_0x581ff5);}}}return _0x3d4a54[_0x3f1f('0x14')];};};Realtime[_0x3f1f('0x41')]['initTelephones']=function(){var _0x40c032=this;return function(_0x13d5bd){if(_0x13d5bd){freeIsNotKeySip(_0x13d5bd,_0x40c032[_0x3f1f('0x15')]);for(var _0x4d47d3=0x0,_0x5e2518={},_0x1add82={};_0x4d47d3<_0x13d5bd['length'];_0x4d47d3+=0x1){_0x5e2518=_0x13d5bd[_0x4d47d3];if(_[_0x3f1f('0x45')](_0x40c032['telephones'][util['format'](_0x3f1f('0x2a'),_0x5e2518[_0x3f1f('0x2b')])])){_0x40c032[_0x3f1f('0x15')][util['format'](_0x3f1f('0x2a'),_0x5e2518[_0x3f1f('0x2b')])]=new Telephone(_0x5e2518);}else{_0x40c032['mergeFromDatabase'](_0x40c032[_0x3f1f('0x15')][util[_0x3f1f('0x29')](_0x3f1f('0x2a'),_0x5e2518['name'])],_0x5e2518);}}}return _0x40c032[_0x3f1f('0x15')];};};Realtime['prototype'][_0x3f1f('0x46')]=function(){var _0x465b00=this;return function(_0x1404cc){if(_0x1404cc){freeIsNotKeySip(_0x1404cc,_0x465b00[_0x3f1f('0x47')]);for(var _0x10ed3a=0x0,_0x451a0={},_0x41b179={};_0x10ed3a<_0x1404cc[_0x3f1f('0x43')];_0x10ed3a+=0x1){_0x451a0=_0x1404cc[_0x10ed3a];if(_[_0x3f1f('0x45')](_0x465b00['trunks'][util[_0x3f1f('0x29')](_0x3f1f('0x2a'),_0x451a0[_0x3f1f('0x2b')])])){_0x465b00['trunks'][util[_0x3f1f('0x29')](_0x3f1f('0x2a'),_0x451a0['name'])]=new Trunk(_0x451a0);}else{_0x465b00[_0x3f1f('0x44')](_0x465b00[_0x3f1f('0x47')][util[_0x3f1f('0x29')](_0x3f1f('0x2a'),_0x451a0[_0x3f1f('0x2b')])],_0x451a0);}}}return _0x465b00['trunks'];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x48')]=function(){var _0xf6a857=this;return function(_0x3fae8c){if(_0x3fae8c){freeIsNotKey(_0x3fae8c,_0xf6a857[_0x3f1f('0x49')],_0x3f1f('0x2b'));for(var _0x3e857b=0x0,_0x39d134={},_0x4b8e2d={};_0x3e857b<_0x3fae8c[_0x3f1f('0x43')];_0x3e857b+=0x1){_0x39d134=_0x3fae8c[_0x3e857b];if(_[_0x3f1f('0x45')](_0xf6a857['voiceQueues'][_0x39d134[_0x3f1f('0x2b')]])){_0xf6a857[_0x3f1f('0x49')][_0x39d134[_0x3f1f('0x2b')]]=new VoiceQueue(_0x39d134);}else{_0xf6a857[_0x3f1f('0x44')](_0xf6a857['voiceQueues'][_0x39d134['name']],_0x39d134);}}}return _0xf6a857['voiceQueues'];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x4a')]=function(){var _0x2da88b=this;return function(_0x3fa41b){if(_0x3fa41b){freeIsNotKey(_0x3fa41b,_0x2da88b[_0x3f1f('0x16')],'id');for(var _0x3b2d58=0x0,_0x2f4615={},_0x334a90={};_0x3b2d58<_0x3fa41b[_0x3f1f('0x43')];_0x3b2d58+=0x1){_0x2f4615=_0x3fa41b[_0x3b2d58];if(_[_0x3f1f('0x45')](_0x2da88b[_0x3f1f('0x16')][_0x2f4615['id']])){_0x2da88b[_0x3f1f('0x16')][_0x2f4615['id']]=new Trigger(_0x2f4615);}else{_0x2da88b[_0x3f1f('0x44')](_0x2da88b[_0x3f1f('0x16')][_0x2f4615['id']],_0x2f4615);}}}return _0x2da88b['triggers'];};};Realtime['prototype'][_0x3f1f('0x4b')]=function(){var _0x4f77a3=this;return function(_0x5116b1){if(_0x5116b1){freeIsNotKey(_0x5116b1,_0x4f77a3[_0x3f1f('0x4c')],'id');for(var _0x3dd4bd=0x0,_0x53cc65={},_0x4d5c98={};_0x3dd4bd<_0x5116b1[_0x3f1f('0x43')];_0x3dd4bd+=0x1){_0x53cc65=_0x5116b1[_0x3dd4bd];if(_['isUndefined'](_0x4f77a3[_0x3f1f('0x4c')][_0x53cc65['id']])){_0x4f77a3['templates'][_0x53cc65['id']]=new Template(_0x53cc65);}else{_0x4f77a3['mergeFromDatabase'](_0x4f77a3['templates'][_0x53cc65['id']],_0x53cc65);}}}return _0x4f77a3['templates'];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x4d')]=function(){var _0x30073d=this;return function(_0x426330){if(_0x426330){freeIsNotKey(_0x426330,_0x30073d[_0x3f1f('0x1d')],'id');for(var _0x3f5fae=0x0,_0x439d7c={},_0x530d30={};_0x3f5fae<_0x426330[_0x3f1f('0x43')];_0x3f5fae+=0x1){_0x439d7c=_0x426330[_0x3f5fae];if(_[_0x3f1f('0x45')](_0x30073d[_0x3f1f('0x1d')][_0x439d7c['id']])){_0x30073d[_0x3f1f('0x1d')][_0x439d7c['id']]=new ZendeskAccount(_0x439d7c);}else{_0x30073d[_0x3f1f('0x44')](_0x30073d[_0x3f1f('0x1d')][_0x439d7c['id']],_0x439d7c);}}}return _0x30073d[_0x3f1f('0x1d')];};};Realtime['prototype'][_0x3f1f('0x4e')]=function(){var _0x5c8083=this;return function(_0x48887e){if(_0x48887e){freeIsNotKey(_0x48887e,_0x5c8083[_0x3f1f('0x1e')],'id');for(var _0x3578b6=0x0,_0x438ae6={},_0x122ab9={};_0x3578b6<_0x48887e[_0x3f1f('0x43')];_0x3578b6+=0x1){_0x438ae6=_0x48887e[_0x3578b6];if(_[_0x3f1f('0x45')](_0x5c8083[_0x3f1f('0x1e')][_0x438ae6['id']])){_0x5c8083[_0x3f1f('0x1e')][_0x438ae6['id']]=new SalesforceAccount(_0x438ae6);}else{_0x5c8083[_0x3f1f('0x44')](_0x5c8083[_0x3f1f('0x1e')][_0x438ae6['id']],_0x438ae6);}}}return _0x5c8083[_0x3f1f('0x1e')];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x4f')]=function(){var _0x1848a7=this;return function(_0x52955e){if(_0x52955e){freeIsNotKey(_0x52955e,_0x1848a7[_0x3f1f('0x50')],'id');for(var _0x346c09=0x0,_0x5619e6={},_0x5a6fa4={};_0x346c09<_0x52955e['length'];_0x346c09+=0x1){_0x5619e6=_0x52955e[_0x346c09];if(_['isUndefined'](_0x1848a7[_0x3f1f('0x50')][_0x5619e6['id']])){_0x1848a7[_0x3f1f('0x50')][_0x5619e6['id']]=new FreshdeskAccount(_0x5619e6);}else{_0x1848a7[_0x3f1f('0x44')](_0x1848a7[_0x3f1f('0x50')][_0x5619e6['id']],_0x5619e6);}}}return _0x1848a7['freshdeskAccounts'];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x51')]=function(){var _0x5f2e92=this;return function(_0x5b8c5d){if(_0x5b8c5d){freeIsNotKey(_0x5b8c5d,_0x5f2e92[_0x3f1f('0x20')],'id');for(var _0x440c0b=0x0,_0x1acb9b={},_0xc9da16={};_0x440c0b<_0x5b8c5d[_0x3f1f('0x43')];_0x440c0b+=0x1){_0x1acb9b=_0x5b8c5d[_0x440c0b];if(_[_0x3f1f('0x45')](_0x5f2e92[_0x3f1f('0x20')][_0x1acb9b['id']])){_0x5f2e92[_0x3f1f('0x20')][_0x1acb9b['id']]=new ZohoAccount(_0x1acb9b);}else{_0x5f2e92['mergeFromDatabase'](_0x5f2e92[_0x3f1f('0x20')][_0x1acb9b['id']],_0x1acb9b);}}}return _0x5f2e92[_0x3f1f('0x20')];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x52')]=function(){var _0x53d54f=this;return function(_0x299dc2){if(_0x299dc2){freeIsNotKey(_0x299dc2,_0x53d54f[_0x3f1f('0x21')],'id');for(var _0x10443f=0x0,_0x45537d={},_0x4cc8ca={};_0x10443f<_0x299dc2[_0x3f1f('0x43')];_0x10443f+=0x1){_0x45537d=_0x299dc2[_0x10443f];if(_[_0x3f1f('0x45')](_0x53d54f[_0x3f1f('0x21')][_0x45537d['id']])){_0x53d54f[_0x3f1f('0x21')][_0x45537d['id']]=new DeskAccount(_0x45537d);}else{_0x53d54f[_0x3f1f('0x44')](_0x53d54f[_0x3f1f('0x21')][_0x45537d['id']],_0x45537d);}}}return _0x53d54f[_0x3f1f('0x21')];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x53')]=function(){var _0x2d404c=this;return function(_0x318d2d){if(_0x318d2d){freeIsNotKey(_0x318d2d,_0x2d404c[_0x3f1f('0x1f')],'id');for(var _0x34c962=0x0,_0x22611d={},_0x5a91c3={};_0x34c962<_0x318d2d[_0x3f1f('0x43')];_0x34c962+=0x1){_0x22611d=_0x318d2d[_0x34c962];if(_[_0x3f1f('0x45')](_0x2d404c[_0x3f1f('0x1f')][_0x22611d['id']])){_0x2d404c[_0x3f1f('0x1f')][_0x22611d['id']]=new SugarcrmAccount(_0x22611d);}else{_0x2d404c[_0x3f1f('0x44')](_0x2d404c['sugarcrmAccounts'][_0x22611d['id']],_0x22611d);}}}return _0x2d404c[_0x3f1f('0x1f')];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x54')]=function(){var _0x31071e=this;return function(_0x6dfc32){if(_0x6dfc32){freeIsNotKey(_0x6dfc32,_0x31071e[_0x3f1f('0x22')],'id');for(var _0x500dd9=0x0,_0x589e14={},_0x44d425={};_0x500dd9<_0x6dfc32[_0x3f1f('0x43')];_0x500dd9+=0x1){_0x589e14=_0x6dfc32[_0x500dd9];if(_[_0x3f1f('0x45')](_0x31071e['vtigerAccounts'][_0x589e14['id']])){_0x31071e[_0x3f1f('0x22')][_0x589e14['id']]=new VtigerAccount(_0x589e14);}else{_0x31071e['mergeFromDatabase'](_0x31071e[_0x3f1f('0x22')][_0x589e14['id']],_0x589e14);}}}return _0x31071e[_0x3f1f('0x22')];};};Realtime[_0x3f1f('0x41')]['initServicenowAccounts']=function(){var _0x2855fd=this;return function(_0x33874b){if(_0x33874b){freeIsNotKey(_0x33874b,_0x2855fd[_0x3f1f('0x23')],'id');for(var _0x55a01e=0x0,_0x499ecb={},_0x2c01c9={};_0x55a01e<_0x33874b['length'];_0x55a01e+=0x1){_0x499ecb=_0x33874b[_0x55a01e];if(_[_0x3f1f('0x45')](_0x2855fd['servicenowAccounts'][_0x499ecb['id']])){_0x2855fd['servicenowAccounts'][_0x499ecb['id']]=new ServicenowAccount(_0x499ecb);}else{_0x2855fd[_0x3f1f('0x44')](_0x2855fd[_0x3f1f('0x23')][_0x499ecb['id']],_0x499ecb);}}}return _0x2855fd['servicenowAccounts'];};};Realtime[_0x3f1f('0x41')]['initDynamics365Accounts']=function(){var _0x48dc6a=this;return function(_0x39d53f){if(_0x39d53f){freeIsNotKey(_0x39d53f,_0x48dc6a[_0x3f1f('0x24')],'id');for(var _0x515153=0x0,_0x4ea80e={},_0x3bce41={};_0x515153<_0x39d53f[_0x3f1f('0x43')];_0x515153+=0x1){_0x4ea80e=_0x39d53f[_0x515153];if(_[_0x3f1f('0x45')](_0x48dc6a[_0x3f1f('0x24')][_0x4ea80e['id']])){_0x48dc6a[_0x3f1f('0x24')][_0x4ea80e['id']]=new Dynamics365Account(_0x4ea80e);}else{_0x48dc6a[_0x3f1f('0x44')](_0x48dc6a[_0x3f1f('0x24')][_0x4ea80e['id']],_0x4ea80e);}}}return _0x48dc6a[_0x3f1f('0x24')];};};Realtime[_0x3f1f('0x41')]['initFreshsalesAccounts']=function(){var _0x5b4dda=this;return function(_0x34342a){if(_0x34342a){freeIsNotKey(_0x34342a,_0x5b4dda['freshsalesAccounts'],'id');for(var _0x3c227e=0x0,_0x3a78b0={},_0x58fc79={};_0x3c227e<_0x34342a['length'];_0x3c227e+=0x1){_0x3a78b0=_0x34342a[_0x3c227e];if(_[_0x3f1f('0x45')](_0x5b4dda['freshsalesAccounts'][_0x3a78b0['id']])){_0x5b4dda[_0x3f1f('0x25')][_0x3a78b0['id']]=new FreshsalesAccount(_0x3a78b0);}else{_0x5b4dda[_0x3f1f('0x44')](_0x5b4dda['freshsalesAccounts'][_0x3a78b0['id']],_0x3a78b0);}}}return _0x5b4dda[_0x3f1f('0x25')];};};Realtime['prototype'][_0x3f1f('0x55')]=function(){var _0x5219c5=this;return function(_0x2a855e){for(var _0x17fc3e=0x0;_0x17fc3e<_0x2a855e[_0x3f1f('0x43')];_0x17fc3e+=0x1){_[_0x3f1f('0x56')](_0x5219c5['voiceQueues'][_0x2a855e[_0x17fc3e]['name']],_0x2a855e[_0x17fc3e]);}return _0x5219c5[_0x3f1f('0x49')];};};Realtime[_0x3f1f('0x41')]['initVoiceQueueReports']=function(){var _0x17cb17=this;return function(_0x1d79b1){clearVoiceQueues(_0x17cb17[_0x3f1f('0x49')]);if(_0x1d79b1){_0x1d79b1=_['groupBy'](_0x1d79b1,_0x3f1f('0x57'));for(var _0x49915f in _0x1d79b1){if(_0x1d79b1[_0x3f1f('0x28')](_0x49915f)){var _0x3fbc65={};for(var _0x4a1683=0x0;_0x4a1683<_0x1d79b1[_0x49915f][_0x3f1f('0x43')];_0x4a1683+=0x1){var _0x365e18=_0x1d79b1[_0x49915f][_0x4a1683]['queue'];if(_0x17cb17[_0x3f1f('0x49')][_0x365e18]){if(_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x58')]){_0x17cb17['voiceQueues'][_0x365e18]['unmanaged']+=0x1;}if(_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x59')]){_0x17cb17[_0x3f1f('0x49')][_0x365e18]['abandoned']+=0x1;}_0x17cb17[_0x3f1f('0x49')][_0x365e18][_0x3f1f('0x30')]+=moment(_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x5a')])[_0x3f1f('0x5b')](moment(_0x1d79b1[_0x49915f][_0x4a1683]['queuecallerjoinAt']),_0x3f1f('0x5c'))||0x0;if(_0x4a1683===_0x1d79b1[_0x49915f][_0x3f1f('0x43')]-0x1){_0x17cb17[_0x3f1f('0x49')][_0x365e18][_0x3f1f('0x37')]+=moment(_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x5d')]||_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x5e')]||_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x5f')])[_0x3f1f('0x5b')](moment(_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x60')]),_0x3f1f('0x5c'))||0x0;_0x17cb17[_0x3f1f('0x49')][_0x365e18]['total']+=0x1;if(_0x1d79b1[_0x49915f][_0x4a1683]['queuecallercomplete']){_0x17cb17[_0x3f1f('0x49')][_0x365e18][_0x3f1f('0x2f')]+=0x1;_0x17cb17[_0x3f1f('0x49')][_0x365e18]['sumBillable']+=moment(_0x1d79b1[_0x49915f][_0x4a1683]['queuecallercompleteAt'])['diff'](moment(_0x1d79b1[_0x49915f][_0x4a1683][_0x3f1f('0x5a')]),_0x3f1f('0x5c'))||0x0;}}else{_0x17cb17[_0x3f1f('0x49')][_0x365e18][_0x3f1f('0x37')]+=_0x17cb17[_0x3f1f('0x49')][_0x365e18][_0x3f1f('0x30')]||0x0;}}}}}}return _0x17cb17[_0x3f1f('0x49')];};};Realtime[_0x3f1f('0x41')]['initVoiceCallReports']=function(){var _0x6c8cbe=this;return function(_0x44106a){clearVoiceCallReports(_0x6c8cbe[_0x3f1f('0x17')]);if(_0x44106a){for(var _0x4029f6=0x0;_0x4029f6<_0x44106a[_0x3f1f('0x43')];_0x4029f6+=0x1){_0x6c8cbe[_0x3f1f('0x17')][_0x3f1f('0x2e')]+=0x1;_0x6c8cbe[_0x3f1f('0x17')][_0x3f1f('0x37')]+=_0x44106a[_0x4029f6][_0x3f1f('0x61')];if(_0x44106a[_0x4029f6]['disposition']===_0x3f1f('0x62')){_0x6c8cbe[_0x3f1f('0x17')][_0x3f1f('0x2f')]+=0x1;_0x6c8cbe['outbound'][_0x3f1f('0x30')]+=_0x44106a[_0x4029f6][_0x3f1f('0x61')]-_0x44106a[_0x4029f6][_0x3f1f('0x63')]||0x0;_0x6c8cbe[_0x3f1f('0x17')][_0x3f1f('0x31')]+=_0x44106a[_0x4029f6][_0x3f1f('0x63')];}}}return _0x6c8cbe[_0x3f1f('0x17')];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x64')]=function(){var _0x117bb7=this;return function(_0x6cfaab){if(_0x6cfaab){freeIsNotKey(_0x6cfaab,_0x117bb7['campaigns'],_0x3f1f('0x2b'));for(var _0x19e06e=0x0,_0x67b3c3={};_0x19e06e<_0x6cfaab[_0x3f1f('0x43')];_0x19e06e+=0x1){_0x67b3c3=_0x6cfaab[_0x19e06e];if(_['isUndefined'](_0x117bb7['campaigns'][_0x67b3c3[_0x3f1f('0x2b')]])){_0x117bb7['campaigns'][_0x67b3c3[_0x3f1f('0x2b')]]=new Campaign(_0x67b3c3);}else{_0x117bb7[_0x3f1f('0x44')](_0x117bb7[_0x3f1f('0x65')][_0x67b3c3[_0x3f1f('0x2b')]],_0x67b3c3);_0x117bb7[_0x3f1f('0x65')][_0x67b3c3['name']][_0x3f1f('0x66')]=_0x67b3c3[_0x3f1f('0x67')]?_0x67b3c3['SquareProject']['name']:undefined;}}}return _0x117bb7['campaigns'];};};Realtime['prototype']['initVoiceExtensions']=function(){var _0xd51f84=this;return function(_0x41492d){if(_0x41492d){freeIsNotKey(_0x41492d,_0xd51f84['voiceExtensions'],'id');for(var _0x2f247e=0x0,_0x193dbb={};_0x2f247e<_0x41492d[_0x3f1f('0x43')];_0x2f247e+=0x1){_0x193dbb=_0x41492d[_0x2f247e];if(_[_0x3f1f('0x45')](_0xd51f84[_0x3f1f('0x68')][_0x193dbb['id']])){_0xd51f84[_0x3f1f('0x68')][_0x193dbb['id']]=new VoiceExtension(_0x193dbb);}else{_0xd51f84[_0x3f1f('0x44')](_0xd51f84['voiceExtensions'][_0x193dbb['id']],_0x193dbb);}}}return _0xd51f84[_0x3f1f('0x68')];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x69')]=function(){var _0x342f97=this;return function(_0x3f6776){clearCampaigns(_0x342f97[_0x3f1f('0x65')]);for(var _0x4d1c53=0x0;_0x4d1c53<_0x3f6776['length'];_0x4d1c53+=0x1){_[_0x3f1f('0x56')](_0x342f97[_0x3f1f('0x65')][_0x3f6776[_0x4d1c53][_0x3f1f('0x2b')]],_0x3f6776[_0x4d1c53]);}return _0x342f97['campaigns'];};};Realtime[_0x3f1f('0x41')][_0x3f1f('0x6a')]=function(){var _0x459f25=this;return function(_0x455b05){if(_0x455b05){freeIsNotKey(_0x455b05,_0x459f25[_0x3f1f('0x26')],'id');for(var _0x365aaa=0x0,_0x8793f3={},_0x4c4263={};_0x365aaa<_0x455b05['length'];_0x365aaa+=0x1){_0x8793f3=_0x455b05[_0x365aaa];if(_['isUndefined'](_0x459f25['faxAccounts'][_0x8793f3['id']])){_0x459f25[_0x3f1f('0x26')][_0x8793f3['id']]=new FaxAccount(_0x8793f3);}else{_0x459f25[_0x3f1f('0x44')](_0x459f25['faxAccounts'][_0x8793f3['id']],_0x8793f3);}}}return _0x459f25['faxAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
index eaebfe2..dbc284d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8baa=['length','monitorFilename','filename','createdAt','xcally-motion-preview','connectedlinename','membername','isArray','forEach','voiceDialReport','Local','substring','indexOf','transfererlinkedid','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','agents','telephones','prototype','realtime','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','blindtransfer','attendedtransfer','findAgent','find','name','isNil','interface','accountcode','assigned','lastAssignedTo','format','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','create','destination','exten','type','dialer','lastapplication','queue','context','callerid','from-sip','calleridpreview','originatecalleridnum','destinationchannel','channel','calleridnum','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','uniqueid','blindTransfer','monitor','monitors'];(function(_0x3f3598,_0x7b5158){var _0x11dc77=function(_0x3e9a1c){while(--_0x3e9a1c){_0x3f3598['push'](_0x3f3598['shift']());}};_0x11dc77(++_0x7b5158);}(_0x8baa,0x19b));var _0xa8ba=function(_0x50988c,_0x107695){_0x50988c=_0x50988c-0x0;var _0x263983=_0x8baa[_0x50988c];return _0x263983;};'use strict';var _=require(_0xa8ba('0x0'));var moment=require(_0xa8ba('0x1'));var util=require(_0xa8ba('0x2'));var config=require(_0xa8ba('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require(_0xa8ba('0x4'));var RpcVoiceCallReport=require(_0xa8ba('0x5'));var RpcVoiceDialReport=require(_0xa8ba('0x6'));var RpcMemberReport=require(_0xa8ba('0x7'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0xa8ba('0x8'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xa8ba('0x9'));var VoiceAgentReport=require(_0xa8ba('0xa'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0xe1d85d){this['realtime']=_0xe1d85d;this[_0xa8ba('0xb')]=_0xe1d85d[_0xa8ba('0xb')];this[_0xa8ba('0xc')]=_0xe1d85d['telephones'];}Report[_0xa8ba('0xd')]['sync']=function(_0x2dfdf7){var _0x5a6b18=new VoiceQueueReport(this[_0xa8ba('0xe')]);var _0x9acd4b=new VoiceAgentReport(this[_0xa8ba('0xe')]);var _0x5fb652=new VoiceDialReport(this['realtime']);var _0x2b3c12=new VoiceCallReport(this['realtime']);var _0x4cc651=new UserReport(this[_0xa8ba('0xe')]);if(config[_0xa8ba('0xf')]&&config[_0xa8ba('0xf')][_0xa8ba('0x10')]){ami['on'](_0xa8ba('0x11'),this[_0xa8ba('0x12')][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x14'),this[_0xa8ba('0x15')][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x16'),this['voiceAgentReport'][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x17'),this['voiceDialReport'][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x18'),this['blindTransfer'][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x19'),this['attendedTransfer'][_0xa8ba('0x13')](this));}};Report['prototype'][_0xa8ba('0x1a')]=function(_0x2ea802){var _0xecb16;_0xecb16=_[_0xa8ba('0x1b')](this[_0xa8ba('0xb')],function(_0x3954a0){return _0x3954a0['accountcode']==_0x2ea802||_0x3954a0[_0xa8ba('0x1c')]==_0x2ea802;});if(_[_0xa8ba('0x1d')](_0xecb16)){var _0x549dfb=_['find'](this[_0xa8ba('0xc')],function(_0x4df4da){return _0x4df4da['accountcode']==_0x2ea802||_0x4df4da['name']==_0x2ea802;});if(_0x549dfb){_0xecb16=_[_0xa8ba('0x1b')](this[_0xa8ba('0xb')],function(_0x5d243e){return _0x5d243e[_0xa8ba('0x1e')]==util['format']('SIP/%s',_0x549dfb[_0xa8ba('0x1c')]);});}}return _0xecb16;};Report['prototype'][_0xa8ba('0x12')]=function(_0x1dcb6f){for(var _0x283280=0x0;_0x283280<_0x1dcb6f['length'];_0x283280+=0x1){var _0xec3045=this[_0xa8ba('0x1a')](_0x1dcb6f[_0x283280]['connectedlinenum']);if(_0xec3045){_0x1dcb6f[_0x283280][_0xa8ba('0x1f')]=_0xec3045[_0xa8ba('0x1f')];_0x1dcb6f[_0x283280][_0xa8ba('0x20')]=!![];_0x1dcb6f[_0x283280][_0xa8ba('0x21')]=_0xec3045[_0xa8ba('0x1c')];_0x1dcb6f[_0x283280]['interface']=_['isNil'](_0xec3045[_0xa8ba('0x1e')])?util[_0xa8ba('0x22')]('SIP/%s',_0xec3045[_0xa8ba('0x1c')]):_0xec3045[_0xa8ba('0x1e')];if(_0x1dcb6f[_0x283280]['queuecallercomplete']){_0x1dcb6f[_0x283280][_0xa8ba('0x23')]=moment()[_0xa8ba('0x22')](_0xa8ba('0x24'));}if(_0x1dcb6f[_0x283280]['queuecallerexit']){_0x1dcb6f[_0x283280]['queuecallerexitAt']=moment()[_0xa8ba('0x22')](_0xa8ba('0x24'));}RpcMemberReport['voiceQueueReport'](_0x1dcb6f[_0x283280]);}RpcVoiceQueueReport[_0xa8ba('0x25')](_0x1dcb6f[_0x283280]);}};function extractCalleridNumber(_0x37802b){var _0x50734f=_0x37802b['match'](/<(.*?)>/);return _0x50734f?_0x50734f[0x1]:_0x37802b;}Report['prototype'][_0xa8ba('0x15')]=function(_0x45e25c){_0x45e25c[_0xa8ba('0x26')]=_0x45e25c[_0xa8ba('0x26')]||_0x45e25c[_0xa8ba('0x27')];if(_0x45e25c[_0xa8ba('0x28')]==_0xa8ba('0x29')){_0x45e25c[_0xa8ba('0x2a')]=_0xa8ba('0x2b');_0x45e25c['lastdata']=_0x45e25c[_0xa8ba('0x2b')];if(_0x45e25c[_0xa8ba('0x2c')]=='from-voip-provider'){_0x45e25c[_0xa8ba('0x1f')]='';_0x45e25c['destination']=extractCalleridNumber(_0x45e25c[_0xa8ba('0x2d')]);}else if(_0x45e25c['context']==_0xa8ba('0x2e')){if(_0x45e25c[_0xa8ba('0x26')]=='xcally-motion-preview'){_0x45e25c[_0xa8ba('0x26')]=extractCalleridNumber(_0x45e25c[_0xa8ba('0x2f')]);_0x45e25c['calleridnum']=_0x45e25c[_0xa8ba('0x30')];_0x45e25c[_0xa8ba('0x31')]=[_0x45e25c[_0xa8ba('0x32')],_0x45e25c[_0xa8ba('0x32')]=_0x45e25c[_0xa8ba('0x31')]][0x0];_0x45e25c[_0xa8ba('0x2d')]=_0x45e25c[_0xa8ba('0x2f')];}else{_0x45e25c['destination']=_0x45e25c['calleridnum'];_0x45e25c[_0xa8ba('0x33')]=_0x45e25c['originatecalleridnum'];if(_0x45e25c[_0xa8ba('0x34')]==_0xa8ba('0x35')){_0x45e25c[_0xa8ba('0x1f')]=_0x45e25c[_0xa8ba('0x36')];}else{_0x45e25c['accountcode']='';}}}}else{_0x45e25c[_0xa8ba('0x2d')]=util[_0xa8ba('0x22')](_0xa8ba('0x37'),_0x45e25c[_0xa8ba('0x38')],_0x45e25c['calleridnum']);}if(RpcVoiceTransferReport[_0xa8ba('0x39')][_0x45e25c[_0xa8ba('0x3a')]]){var _0x9a2770=RpcVoiceTransferReport[_0xa8ba('0x39')][_0x45e25c['linkedid']];_0x9a2770['transfereelinkedid']=_0x45e25c[_0xa8ba('0x3b')];RpcVoiceTransferReport[_0xa8ba('0x3c')](_0x9a2770);delete RpcVoiceTransferReport['transfers'][_0x45e25c[_0xa8ba('0x3a')]];}RpcVoiceCallReport[_0xa8ba('0x25')](_0x45e25c);if(_0x45e25c[_0xa8ba('0x3d')]){for(var _0x16a914=0x0;_0x16a914<_0x45e25c[_0xa8ba('0x3e')][_0xa8ba('0x3f')];_0x16a914+=0x1){_0x45e25c[_0xa8ba('0x40')]=_0x45e25c[_0xa8ba('0x3e')][_0x16a914][_0xa8ba('0x41')];_0x45e25c['createdAt']=_0x45e25c[_0xa8ba('0x3e')][_0x16a914][_0xa8ba('0x42')];if(_0x45e25c['exten']==_0xa8ba('0x43')){_0x45e25c[_0xa8ba('0x33')]=_0x45e25c[_0xa8ba('0x36')];_0x45e25c['calleridname']=_0x45e25c[_0xa8ba('0x44')];_0x45e25c[_0xa8ba('0x36')]=_0x45e25c[_0xa8ba('0x1f')];_0x45e25c[_0xa8ba('0x44')]=_0x45e25c[_0xa8ba('0x45')];_0x45e25c[_0xa8ba('0x27')]=_0x45e25c[_0xa8ba('0x30')];}else if(_0x45e25c[_0xa8ba('0x27')]=='xcally-motion-dialer'){_0x45e25c[_0xa8ba('0x33')]=_0x45e25c['destination'];_0x45e25c[_0xa8ba('0x27')]=_0x45e25c[_0xa8ba('0x30')];}RpcVoiceRecording[_0xa8ba('0x25')](_0x45e25c);}}};Report[_0xa8ba('0xd')]['voiceAgentReport']=function(_0x4ace09){if(_[_0xa8ba('0x46')](_0x4ace09)){_0x4ace09[_0xa8ba('0x47')](function(_0x2f22f8){RpcVoiceAgentReport[_0xa8ba('0x25')](_0x2f22f8);});}else{RpcVoiceAgentReport[_0xa8ba('0x25')](_0x4ace09);}};Report[_0xa8ba('0xd')][_0xa8ba('0x48')]=function(_0x3ba621){RpcVoiceDialReport[_0xa8ba('0x25')](_0x3ba621);var _0x152260;var _0x2b5496;var _0xfa789e=_0x3ba621[_0xa8ba('0x32')];if(_['startsWith'](_0xfa789e,_0xa8ba('0x49'))){_0x2b5496=_0xfa789e[_0xa8ba('0x4a')](_0xfa789e['indexOf']('/')+0x1,_0xfa789e[_0xa8ba('0x4b')]('@'));_0x152260=_['find'](this['agents'],function(_0x1b4645){return _0x1b4645['mobile']==_0x2b5496||_0x1b4645['phone']==_0x2b5496||_0x1b4645[_0xa8ba('0x1f')]==_0x2b5496;});}else{_0x2b5496=_0xfa789e[_0xa8ba('0x4a')](_0xfa789e['indexOf']('/')+0x1,_0xfa789e['lastIndexOf']('-'));_0x152260=this[_0xa8ba('0x1a')](_0x2b5496);}if(_0x152260){_0x3ba621[_0xa8ba('0x1e')]=_['isNil'](_0x152260['interface'])?util[_0xa8ba('0x22')]('SIP/%s',_0x152260[_0xa8ba('0x1c')]):_0x152260['interface'];_0x3ba621[_0xa8ba('0x45')]=_0x152260['name'];_0x3ba621[_0xa8ba('0x1f')]=_0x152260[_0xa8ba('0x1f')];RpcMemberReport[_0xa8ba('0x48')](_0x3ba621);}};Report[_0xa8ba('0xd')][_0xa8ba('0x3c')]=function(_0x274573){RpcVoiceTransferReport['transfers'][_0x274573[_0xa8ba('0x4c')]]=_0x274573;};Report['prototype'][_0xa8ba('0x4d')]=function(_0x387d2c){RpcVoiceTransferReport[_0xa8ba('0x4d')](_0x387d2c);};module[_0xa8ba('0x4e')]=Report;
\ No newline at end of file
+var _0x0345=['match','voiceCallReport','destination','exten','type','dialer','lastapplication','queue','lastdata','context','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','channel','destinationchannel','originatecalleridnum','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','linkedid','transfereelinkedid','transfers','monitors','length','monitorFilename','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','voiceDialReport','startsWith','Local','substring','indexOf','lastIndexOf','transfererlinkedid','exports','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceAgentReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','isNil','name','SIP/%s','assigned','lastAssignedTo','interface','format','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create'];(function(_0x2aa433,_0x3b4476){var _0x265de6=function(_0x5c20c){while(--_0x5c20c){_0x2aa433['push'](_0x2aa433['shift']());}};_0x265de6(++_0x3b4476);}(_0x0345,0x86));var _0x5034=function(_0x334bf8,_0x8b2a6d){_0x334bf8=_0x334bf8-0x0;var _0x57a755=_0x0345[_0x334bf8];return _0x57a755;};'use strict';var _=require('lodash');var moment=require(_0x5034('0x0'));var util=require('util');var config=require(_0x5034('0x1'));var ami=require(_0x5034('0x2'));var RpcVoiceAgentReport=require(_0x5034('0x3'));var RpcVoiceCallReport=require(_0x5034('0x4'));var RpcVoiceDialReport=require(_0x5034('0x5'));var RpcMemberReport=require(_0x5034('0x6'));var RpcVoiceQueueReport=require(_0x5034('0x7'));var RpcVoiceRecording=require(_0x5034('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x5034('0x9'));var VoiceCallReport=require(_0x5034('0xa'));var VoiceAgentReport=require(_0x5034('0xb'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x5034('0xc'));function Report(_0x3d9adf){this[_0x5034('0xd')]=_0x3d9adf;this[_0x5034('0xe')]=_0x3d9adf[_0x5034('0xe')];this[_0x5034('0xf')]=_0x3d9adf['telephones'];}Report[_0x5034('0x10')][_0x5034('0x11')]=function(_0x22e775){var _0x597dfa=new VoiceQueueReport(this[_0x5034('0xd')]);var _0x508ee7=new VoiceAgentReport(this[_0x5034('0xd')]);var _0x2cf0be=new VoiceDialReport(this[_0x5034('0xd')]);var _0x213329=new VoiceCallReport(this[_0x5034('0xd')]);var _0x1c032f=new UserReport(this['realtime']);if(config[_0x5034('0x12')]&&config[_0x5034('0x12')][_0x5034('0x13')]){ami['on'](_0x5034('0x14'),this[_0x5034('0x15')][_0x5034('0x16')](this));ami['on'](_0x5034('0x17'),this['voiceCallReport'][_0x5034('0x16')](this));ami['on']('custom:voiceAgentReport',this[_0x5034('0x18')][_0x5034('0x16')](this));ami['on'](_0x5034('0x19'),this['voiceDialReport']['bind'](this));ami['on'](_0x5034('0x1a'),this[_0x5034('0x1b')][_0x5034('0x16')](this));ami['on'](_0x5034('0x1c'),this[_0x5034('0x1d')]['bind'](this));}};Report[_0x5034('0x10')][_0x5034('0x1e')]=function(_0x403eb4){var _0x35c94c;_0x35c94c=_[_0x5034('0x1f')](this[_0x5034('0xe')],function(_0x38ba48){return _0x38ba48[_0x5034('0x20')]==_0x403eb4||_0x38ba48['name']==_0x403eb4;});if(_[_0x5034('0x21')](_0x35c94c)){var _0x53fd38=_[_0x5034('0x1f')](this[_0x5034('0xf')],function(_0x3299f1){return _0x3299f1['accountcode']==_0x403eb4||_0x3299f1[_0x5034('0x22')]==_0x403eb4;});if(_0x53fd38){_0x35c94c=_['find'](this[_0x5034('0xe')],function(_0x27b40b){return _0x27b40b['interface']==util['format'](_0x5034('0x23'),_0x53fd38[_0x5034('0x22')]);});}}return _0x35c94c;};Report['prototype']['voiceQueueReport']=function(_0x80b8a4){for(var _0x4d62aa=0x0;_0x4d62aa<_0x80b8a4['length'];_0x4d62aa+=0x1){var _0x18e9e0=this['findAgent'](_0x80b8a4[_0x4d62aa]['connectedlinenum']);if(_0x18e9e0){_0x80b8a4[_0x4d62aa][_0x5034('0x20')]=_0x18e9e0['accountcode'];_0x80b8a4[_0x4d62aa][_0x5034('0x24')]=!![];_0x80b8a4[_0x4d62aa][_0x5034('0x25')]=_0x18e9e0[_0x5034('0x22')];_0x80b8a4[_0x4d62aa][_0x5034('0x26')]=_[_0x5034('0x21')](_0x18e9e0['interface'])?util[_0x5034('0x27')](_0x5034('0x23'),_0x18e9e0['name']):_0x18e9e0[_0x5034('0x26')];if(_0x80b8a4[_0x4d62aa][_0x5034('0x28')]){_0x80b8a4[_0x4d62aa][_0x5034('0x29')]=moment()[_0x5034('0x27')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x80b8a4[_0x4d62aa][_0x5034('0x2a')]){_0x80b8a4[_0x4d62aa][_0x5034('0x2b')]=moment()[_0x5034('0x27')](_0x5034('0x2c'));}RpcMemberReport['voiceQueueReport'](_0x80b8a4[_0x4d62aa]);}RpcVoiceQueueReport[_0x5034('0x2d')](_0x80b8a4[_0x4d62aa]);}};function extractCalleridNumber(_0x221fad){var _0x1b4a5e=_0x221fad[_0x5034('0x2e')](/<(.*?)>/);return _0x1b4a5e?_0x1b4a5e[0x1]:_0x221fad;}Report[_0x5034('0x10')][_0x5034('0x2f')]=function(_0x44ff69){_0x44ff69[_0x5034('0x30')]=_0x44ff69[_0x5034('0x30')]||_0x44ff69[_0x5034('0x31')];if(_0x44ff69[_0x5034('0x32')]==_0x5034('0x33')){_0x44ff69[_0x5034('0x34')]=_0x5034('0x35');_0x44ff69[_0x5034('0x36')]=_0x44ff69[_0x5034('0x35')];if(_0x44ff69[_0x5034('0x37')]=='from-voip-provider'){_0x44ff69[_0x5034('0x20')]='';_0x44ff69[_0x5034('0x30')]=extractCalleridNumber(_0x44ff69[_0x5034('0x38')]);}else if(_0x44ff69[_0x5034('0x37')]==_0x5034('0x39')){if(_0x44ff69[_0x5034('0x30')]==_0x5034('0x3a')){_0x44ff69[_0x5034('0x30')]=extractCalleridNumber(_0x44ff69[_0x5034('0x3b')]);_0x44ff69[_0x5034('0x3c')]=_0x44ff69['originatecalleridnum'];_0x44ff69['destinationchannel']=[_0x44ff69['channel'],_0x44ff69[_0x5034('0x3d')]=_0x44ff69[_0x5034('0x3e')]][0x0];_0x44ff69[_0x5034('0x38')]=_0x44ff69[_0x5034('0x3b')];}else{_0x44ff69[_0x5034('0x30')]=_0x44ff69[_0x5034('0x3c')];_0x44ff69[_0x5034('0x3c')]=_0x44ff69[_0x5034('0x3f')];if(_0x44ff69[_0x5034('0x40')]==_0x5034('0x41')){_0x44ff69[_0x5034('0x20')]=_0x44ff69[_0x5034('0x42')];}else{_0x44ff69[_0x5034('0x20')]='';}}}}else{_0x44ff69['callerid']=util[_0x5034('0x27')](_0x5034('0x43'),_0x44ff69[_0x5034('0x44')],_0x44ff69[_0x5034('0x3c')]);}if(RpcVoiceTransferReport['transfers'][_0x44ff69[_0x5034('0x45')]]){var _0x2d598d=RpcVoiceTransferReport['transfers'][_0x44ff69[_0x5034('0x45')]];_0x2d598d[_0x5034('0x46')]=_0x44ff69['uniqueid'];RpcVoiceTransferReport[_0x5034('0x1b')](_0x2d598d);delete RpcVoiceTransferReport[_0x5034('0x47')][_0x44ff69[_0x5034('0x45')]];}RpcVoiceCallReport[_0x5034('0x2d')](_0x44ff69);if(_0x44ff69['monitor']){for(var _0x2d1439=0x0;_0x2d1439<_0x44ff69[_0x5034('0x48')][_0x5034('0x49')];_0x2d1439+=0x1){_0x44ff69[_0x5034('0x4a')]=_0x44ff69[_0x5034('0x48')][_0x2d1439][_0x5034('0x4b')];_0x44ff69[_0x5034('0x4c')]=_0x44ff69[_0x5034('0x48')][_0x2d1439][_0x5034('0x4c')];if(_0x44ff69['exten']==_0x5034('0x3a')){_0x44ff69[_0x5034('0x3c')]=_0x44ff69[_0x5034('0x42')];_0x44ff69['calleridname']=_0x44ff69['connectedlinename'];_0x44ff69[_0x5034('0x42')]=_0x44ff69['accountcode'];_0x44ff69[_0x5034('0x4d')]=_0x44ff69[_0x5034('0x4e')];_0x44ff69[_0x5034('0x31')]=_0x44ff69[_0x5034('0x3f')];}else if(_0x44ff69[_0x5034('0x31')]==_0x5034('0x4f')){_0x44ff69[_0x5034('0x3c')]=_0x44ff69['destination'];_0x44ff69['exten']=_0x44ff69['originatecalleridnum'];}RpcVoiceRecording['create'](_0x44ff69);}}};Report[_0x5034('0x10')][_0x5034('0x18')]=function(_0x4ae869){if(_[_0x5034('0x50')](_0x4ae869)){_0x4ae869[_0x5034('0x51')](function(_0x274f96){RpcVoiceAgentReport[_0x5034('0x2d')](_0x274f96);});}else{RpcVoiceAgentReport[_0x5034('0x2d')](_0x4ae869);}};Report[_0x5034('0x10')][_0x5034('0x52')]=function(_0x281d47){RpcVoiceDialReport['create'](_0x281d47);var _0x55095a;var _0x7b494;var _0x4a1e50=_0x281d47[_0x5034('0x3d')];if(_[_0x5034('0x53')](_0x4a1e50,_0x5034('0x54'))){_0x7b494=_0x4a1e50[_0x5034('0x55')](_0x4a1e50['indexOf']('/')+0x1,_0x4a1e50[_0x5034('0x56')]('@'));_0x55095a=_[_0x5034('0x1f')](this[_0x5034('0xe')],function(_0x4acbee){return _0x4acbee['mobile']==_0x7b494||_0x4acbee['phone']==_0x7b494||_0x4acbee['accountcode']==_0x7b494;});}else{_0x7b494=_0x4a1e50[_0x5034('0x55')](_0x4a1e50[_0x5034('0x56')]('/')+0x1,_0x4a1e50[_0x5034('0x57')]('-'));_0x55095a=this['findAgent'](_0x7b494);}if(_0x55095a){_0x281d47[_0x5034('0x26')]=_[_0x5034('0x21')](_0x55095a['interface'])?util[_0x5034('0x27')](_0x5034('0x23'),_0x55095a[_0x5034('0x22')]):_0x55095a['interface'];_0x281d47['membername']=_0x55095a['name'];_0x281d47[_0x5034('0x20')]=_0x55095a[_0x5034('0x20')];RpcMemberReport[_0x5034('0x52')](_0x281d47);}};Report['prototype'][_0x5034('0x1b')]=function(_0x12c4c8){RpcVoiceTransferReport['transfers'][_0x12c4c8[_0x5034('0x58')]]=_0x12c4c8;};Report[_0x5034('0x10')][_0x5034('0x1d')]=function(_0x485681){RpcVoiceTransferReport[_0x5034('0x1d')](_0x485681);};module[_0x5034('0x59')]=Report;
\ No newline at end of file
index 2d02da8..4c4d168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd392=['actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','username','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','syncDeviceState','device','[userReport][devicestatechange]','toLowerCase','local','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','name','startsWith','substring','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','[userReport][sipshowregistry]','inspect','actionDeviceStateList','catch','error'];(function(_0x372b5a,_0x5d3393){var _0x43ac01=function(_0x2649a0){while(--_0x2649a0){_0x372b5a['push'](_0x372b5a['shift']());}};_0x43ac01(++_0x5d3393);}(_0xd392,0x7c));var _0x2d39=function(_0x5e317b,_0x288180){_0x5e317b=_0x5e317b-0x0;var _0x29d4fd=_0xd392[_0x5e317b];return _0x29d4fd;};'use strict';var _=require(_0x2d39('0x0'));var moment=require(_0x2d39('0x1'));var util=require(_0x2d39('0x2'));var Redis=require('ioredis');var BPromise=require(_0x2d39('0x3'));var config=require(_0x2d39('0x4'));var logger=require(_0x2d39('0x5'))(_0x2d39('0x6'));var ami=require(_0x2d39('0x7'));config['redis']=_['defaults'](config[_0x2d39('0x8')],{'host':_0x2d39('0x9'),'port':0x18eb});var io=require(_0x2d39('0xa'))(new Redis(config[_0x2d39('0x8')]));function UserReport(_0x10344d){this[_0x2d39('0xb')]=_0x10344d[_0x2d39('0xb')];this[_0x2d39('0xc')]=_0x10344d[_0x2d39('0xc')];this[_0x2d39('0xd')]=_0x10344d[_0x2d39('0xd')];ami['on'](_0x2d39('0xe'),this[_0x2d39('0xf')][_0x2d39('0x10')](this));ami['on'](_0x2d39('0x11'),this[_0x2d39('0xf')][_0x2d39('0x10')](this));ami['on']('devicestatechange',this['syncDeviceState'][_0x2d39('0x10')](this));ami['on'](_0x2d39('0x12'),this[_0x2d39('0x13')][_0x2d39('0x10')](this));return this[_0x2d39('0x14')]();}function showSipRegistrations(){Promise[_0x2d39('0x15')]()[_0x2d39('0x16')](ami['actionSipShowRegistry']())['catch'](function(_0x2926ef){logger['error'](_0x2d39('0x17'),util[_0x2d39('0x18')](_0x2926ef,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x2d39('0x15')]()[_0x2d39('0x16')](ami[_0x2d39('0x19')]())[_0x2d39('0x1a')](function(_0x525f85){logger[_0x2d39('0x1b')]('[userReport][devicestatelist]',util[_0x2d39('0x18')](_0x525f85,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x2d39('0x15')]()[_0x2d39('0x16')](ami[_0x2d39('0x1c')]())[_0x2d39('0x1a')](function(_0x316db6){logger[_0x2d39('0x1b')](_0x2d39('0x1d'),util['inspect'](_0x316db6,{'showHidden':![],'depth':null}));});}UserReport[_0x2d39('0x1e')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x2d39('0x15')]()[_0x2d39('0x16')](showSipRegistrations())[_0x2d39('0x16')](listDeviceStates())[_0x2d39('0x16')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x2d39('0x1f')]=function(_0x4ff554){return _0x4ff554!==null&&!_['isUndefined'](_0x4ff554);};UserReport[_0x2d39('0x1e')]['emit']=function(_0x45a64a,_0x5df37d,_0x2fcf67){io['to'](_0x45a64a)[_0x2d39('0x20')](_0x5df37d,_0x2fcf67);};UserReport[_0x2d39('0x1e')][_0x2d39('0xf')]=function(_0x32abcc){try{if(this[_0x2d39('0x1f')](_0x32abcc)){logger[_0x2d39('0x21')](_0x2d39('0x22'),_0x32abcc['username'],_0x32abcc[_0x2d39('0x23')]);logger[_0x2d39('0x24')](_0x2d39('0x25'),util[_0x2d39('0x18')](_0x32abcc,{'showHidden':![],'depth':null}));var _0x1e86ec=_[_0x2d39('0x26')](this[_0x2d39('0xb')],{'defaultuser':_0x32abcc[_0x2d39('0x27')]});if(_0x1e86ec){_0x32abcc[_0x2d39('0x28')]=_0x32abcc[_0x2d39('0x23')];_[_0x2d39('0x29')](_0x1e86ec,_[_0x2d39('0x2a')](_0x32abcc,[_0x2d39('0x2b'),_0x2d39('0x2c'),_0x2d39('0x27'),_0x2d39('0x23')]));logger[_0x2d39('0x24')](_0x2d39('0x2d'),util['inspect'](_0x1e86ec,{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')](_0x2d39('0x2f'),_0x1e86ec['name']),_0x2d39('0x30'),_0x1e86ec);}}}catch(_0x28777c){logger[_0x2d39('0x1b')](_0x2d39('0x25'),util[_0x2d39('0x18')](_0x28777c,{'showHidden':![],'depth':null}));}};UserReport[_0x2d39('0x1e')][_0x2d39('0x31')]=function(_0x171be8){try{if(this[_0x2d39('0x1f')](_0x171be8)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x171be8[_0x2d39('0x32')],_0x171be8[_0x2d39('0x23')]);logger[_0x2d39('0x24')](_0x2d39('0x33'),util[_0x2d39('0x18')](_0x171be8,{'showHidden':![],'depth':null}));if(this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]]){if(!this['agents'][_0x171be8[_0x2d39('0x32')]]['local']||_0x171be8['state'][_0x2d39('0x34')]()=='inuse'){this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x35')]=![];if(this[_0x2d39('0xc')][_0x171be8['device']][_0x2d39('0x23')]!==_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]()){this['agents'][_0x171be8['device']][_0x2d39('0x36')]=_[_0x2d39('0x37')](moment()[_0x2d39('0x2e')]('x'));}this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]=_0x171be8['state'][_0x2d39('0x34')]();this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x38')](_0x171be8);}}else if(this[_0x2d39('0xd')][_0x171be8['device']]){if(this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]!==_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]()){this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x36')]=_[_0x2d39('0x37')](moment()[_0x2d39('0x2e')]('x'));}this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]=_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]();logger[_0x2d39('0x24')](_0x2d39('0x39'),util[_0x2d39('0x18')](this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')](_0x2d39('0x3a'),this['telephones'][_0x171be8[_0x2d39('0x32')]]['name']),'telephone:save',this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]]);}else if(this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]]){if(this['trunks'][_0x171be8[_0x2d39('0x32')]]['state']!==_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]()){this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]]['stateTime']=_[_0x2d39('0x37')](moment()[_0x2d39('0x2e')]('x'));}this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]=_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]();logger[_0x2d39('0x24')](_0x2d39('0x3b'),util['inspect'](this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util['format'](_0x2d39('0x2f'),this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x3c')]),_0x2d39('0x30'),this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]]);}else if(_[_0x2d39('0x3d')](_0x171be8[_0x2d39('0x32')],'Local')){var _0x3feb99=_0x171be8[_0x2d39('0x32')];var _0x34dc12=_0x3feb99[_0x2d39('0x3e')](_0x3feb99[_0x2d39('0x3f')]('/')+0x1,_0x3feb99[_0x2d39('0x3f')]('@'));var _0x326331=_[_0x2d39('0x26')](this['agents'],function(_0x42f6e3){return _0x42f6e3['mobile']==_0x34dc12||_0x42f6e3[_0x2d39('0x40')]==_0x34dc12||_0x42f6e3[_0x2d39('0x41')]==_0x34dc12;});if(_0x326331){if(_0x326331[_0x2d39('0x23')]!==_0x171be8['state'][_0x2d39('0x34')]()){_0x326331[_0x2d39('0x36')]=_['toNumber'](moment()[_0x2d39('0x2e')]('x'));}_0x326331[_0x2d39('0x23')]=_0x171be8['state']['toLowerCase']();_0x326331[_0x2d39('0x35')]=!![];_0x326331[_0x2d39('0x38')](_0x171be8);}}}}catch(_0x341aa8){logger['error'](_0x2d39('0x33'),util['inspect'](_0x341aa8,{'showHidden':![],'depth':null}));}};UserReport[_0x2d39('0x1e')]['syncPeerStatus']=function(_0x1961a8){try{if(this[_0x2d39('0x1f')](_0x1961a8)&&this['isNotNull'](_0x1961a8[_0x2d39('0x12')])){logger[_0x2d39('0x21')](_0x2d39('0x42'),_0x1961a8[_0x2d39('0x43')],_0x1961a8[_0x2d39('0x44')],_0x1961a8['peerstatus']);logger[_0x2d39('0x24')](_0x2d39('0x45'),util[_0x2d39('0x18')](_0x1961a8,{'showHidden':![],'depth':null}));if(this[_0x2d39('0xc')][_0x1961a8[_0x2d39('0x43')]]){if(!this[_0x2d39('0xc')][_0x1961a8['peer']][_0x2d39('0x35')]||_0x1961a8[_0x2d39('0x12')]['toLowerCase']()==_0x2d39('0x46')){this[_0x2d39('0xc')][_0x1961a8['peer']][_0x2d39('0x35')]=![];this['agents'][_0x1961a8[_0x2d39('0x43')]][_0x2d39('0x47')]=_0x1961a8[_0x2d39('0x12')]['toLowerCase']();this[_0x2d39('0xc')][_0x1961a8[_0x2d39('0x43')]]['address']=_0x1961a8[_0x2d39('0x44')];this[_0x2d39('0xc')][_0x1961a8[_0x2d39('0x43')]][_0x2d39('0x38')](_0x1961a8);}}else if(this[_0x2d39('0xd')][_0x1961a8[_0x2d39('0x43')]]){this[_0x2d39('0xd')][_0x1961a8['peer']][_0x2d39('0x47')]=_0x1961a8[_0x2d39('0x12')][_0x2d39('0x34')]();this['telephones'][_0x1961a8[_0x2d39('0x43')]][_0x2d39('0x44')]=_0x1961a8[_0x2d39('0x44')];logger['debug'](_0x2d39('0x48'),util[_0x2d39('0x18')](this[_0x2d39('0xd')][_0x1961a8[_0x2d39('0x43')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')](_0x2d39('0x3a'),this[_0x2d39('0xd')][_0x1961a8['peer']]['name']),_0x2d39('0x49'),this['telephones'][_0x1961a8[_0x2d39('0x43')]]);}else if(this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]){this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]['status']=_0x1961a8[_0x2d39('0x12')]['toLowerCase']();this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]['address']=_0x1961a8[_0x2d39('0x44')];logger['debug'](_0x2d39('0x4a'),util[_0x2d39('0x18')](this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')]('trunk:%s',this[_0x2d39('0xb')][_0x1961a8['peer']][_0x2d39('0x3c')]),_0x2d39('0x30'),this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]);}}}catch(_0x383f43){logger[_0x2d39('0x1b')](_0x2d39('0x45'),util['inspect'](_0x383f43,{'showHidden':![],'depth':null}));}};module[_0x2d39('0x4b')]=UserReport;
\ No newline at end of file
+var _0x6ba0=['../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','catch','[userReport][sipshowregistry]','inspect','error','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isUndefined','emit','syncRegistry','isNotNull','username','debug','find','state','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','Local','substring','indexOf','mobile','phone','syncPeerStatus','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x6ba0,0x1b0));var _0x06ba=function(_0xa3d4ce,_0x1d1793){_0xa3d4ce=_0xa3d4ce-0x0;var _0x34a18a=_0x6ba0[_0xa3d4ce];return _0x34a18a;};'use strict';var _=require(_0x06ba('0x0'));var moment=require(_0x06ba('0x1'));var util=require(_0x06ba('0x2'));var Redis=require(_0x06ba('0x3'));var BPromise=require(_0x06ba('0x4'));var config=require(_0x06ba('0x5'));var logger=require(_0x06ba('0x6'))(_0x06ba('0x7'));var ami=require(_0x06ba('0x8'));config[_0x06ba('0x9')]=_[_0x06ba('0xa')](config[_0x06ba('0x9')],{'host':_0x06ba('0xb'),'port':0x18eb});var io=require(_0x06ba('0xc'))(new Redis(config[_0x06ba('0x9')]));function UserReport(_0x18020d){this[_0x06ba('0xd')]=_0x18020d['trunks'];this[_0x06ba('0xe')]=_0x18020d[_0x06ba('0xe')];this[_0x06ba('0xf')]=_0x18020d[_0x06ba('0xf')];ami['on'](_0x06ba('0x10'),this['syncRegistry'][_0x06ba('0x11')](this));ami['on'](_0x06ba('0x12'),this['syncRegistry'][_0x06ba('0x11')](this));ami['on'](_0x06ba('0x13'),this[_0x06ba('0x14')]['bind'](this));ami['on'](_0x06ba('0x15'),this['syncPeerStatus'][_0x06ba('0x11')](this));return this[_0x06ba('0x16')]();}function showSipRegistrations(){Promise[_0x06ba('0x17')]()[_0x06ba('0x18')](ami['actionSipShowRegistry']())[_0x06ba('0x19')](function(_0x4d994e){logger['error'](_0x06ba('0x1a'),util[_0x06ba('0x1b')](_0x4d994e,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x06ba('0x18')](ami['actionDeviceStateList']())[_0x06ba('0x19')](function(_0x422059){logger[_0x06ba('0x1c')](_0x06ba('0x1d'),util[_0x06ba('0x1b')](_0x422059,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x06ba('0x17')]()['then'](ami['actionSipPeerStatus']())[_0x06ba('0x19')](function(_0x5a9707){logger[_0x06ba('0x1c')](_0x06ba('0x1e'),util[_0x06ba('0x1b')](_0x5a9707,{'showHidden':![],'depth':null}));});}UserReport[_0x06ba('0x1f')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x06ba('0x17')]()[_0x06ba('0x18')](showSipRegistrations())[_0x06ba('0x18')](listDeviceStates())[_0x06ba('0x18')](showPeersStatus());},0x32c8);};UserReport[_0x06ba('0x1f')]['isNotNull']=function(_0x2544b7){return _0x2544b7!==null&&!_[_0x06ba('0x20')](_0x2544b7);};UserReport[_0x06ba('0x1f')]['emit']=function(_0xfb949e,_0x13cf60,_0x1b9bca){io['to'](_0xfb949e)[_0x06ba('0x21')](_0x13cf60,_0x1b9bca);};UserReport[_0x06ba('0x1f')][_0x06ba('0x22')]=function(_0x26c420){try{if(this[_0x06ba('0x23')](_0x26c420)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x26c420[_0x06ba('0x24')],_0x26c420['state']);logger[_0x06ba('0x25')]('[userReport][registry]',util['inspect'](_0x26c420,{'showHidden':![],'depth':null}));var _0x34d8dd=_[_0x06ba('0x26')](this[_0x06ba('0xd')],{'defaultuser':_0x26c420[_0x06ba('0x24')]});if(_0x34d8dd){_0x26c420['stateRegistry']=_0x26c420[_0x06ba('0x27')];_[_0x06ba('0x28')](_0x34d8dd,_[_0x06ba('0x29')](_0x26c420,[_0x06ba('0x2a'),_0x06ba('0x2b'),_0x06ba('0x24'),_0x06ba('0x27')]));logger['debug'](_0x06ba('0x2c'),util[_0x06ba('0x1b')](_0x34d8dd,{'showHidden':![],'depth':null}));this[_0x06ba('0x21')](util[_0x06ba('0x2d')](_0x06ba('0x2e'),_0x34d8dd[_0x06ba('0x2f')]),_0x06ba('0x30'),_0x34d8dd);}}}catch(_0x59234a){logger[_0x06ba('0x1c')](_0x06ba('0x31'),util[_0x06ba('0x1b')](_0x59234a,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x06ba('0x14')]=function(_0x56bc5d){try{if(this[_0x06ba('0x23')](_0x56bc5d)){logger[_0x06ba('0x32')](_0x06ba('0x33'),_0x56bc5d['device'],_0x56bc5d[_0x06ba('0x27')]);logger[_0x06ba('0x25')]('[userReport][devicestatechange]',util[_0x06ba('0x1b')](_0x56bc5d,{'showHidden':![],'depth':null}));if(this[_0x06ba('0xe')][_0x56bc5d[_0x06ba('0x34')]]){if(!this[_0x06ba('0xe')][_0x56bc5d[_0x06ba('0x34')]][_0x06ba('0x35')]||_0x56bc5d[_0x06ba('0x27')]['toLowerCase']()=='inuse'){this[_0x06ba('0xe')][_0x56bc5d[_0x06ba('0x34')]][_0x06ba('0x35')]=![];if(this[_0x06ba('0xe')][_0x56bc5d[_0x06ba('0x34')]]['state']!==_0x56bc5d[_0x06ba('0x27')][_0x06ba('0x36')]()){this[_0x06ba('0xe')][_0x56bc5d[_0x06ba('0x34')]]['stateTime']=_[_0x06ba('0x37')](moment()['format']('x'));}this['agents'][_0x56bc5d[_0x06ba('0x34')]][_0x06ba('0x27')]=_0x56bc5d[_0x06ba('0x27')][_0x06ba('0x36')]();this[_0x06ba('0xe')][_0x56bc5d[_0x06ba('0x34')]][_0x06ba('0x38')](_0x56bc5d);}}else if(this[_0x06ba('0xf')][_0x56bc5d[_0x06ba('0x34')]]){if(this[_0x06ba('0xf')][_0x56bc5d[_0x06ba('0x34')]]['state']!==_0x56bc5d[_0x06ba('0x27')][_0x06ba('0x36')]()){this[_0x06ba('0xf')][_0x56bc5d['device']]['stateTime']=_[_0x06ba('0x37')](moment()[_0x06ba('0x2d')]('x'));}this[_0x06ba('0xf')][_0x56bc5d[_0x06ba('0x34')]][_0x06ba('0x27')]=_0x56bc5d[_0x06ba('0x27')][_0x06ba('0x36')]();logger['debug'](_0x06ba('0x39'),util['inspect'](this[_0x06ba('0xf')][_0x56bc5d['device']],{'showHidden':![],'depth':null}));this[_0x06ba('0x21')](util[_0x06ba('0x2d')](_0x06ba('0x3a'),this[_0x06ba('0xf')][_0x56bc5d['device']]['name']),_0x06ba('0x3b'),this['telephones'][_0x56bc5d[_0x06ba('0x34')]]);}else if(this[_0x06ba('0xd')][_0x56bc5d['device']]){if(this[_0x06ba('0xd')][_0x56bc5d['device']]['state']!==_0x56bc5d['state']['toLowerCase']()){this[_0x06ba('0xd')][_0x56bc5d[_0x06ba('0x34')]]['stateTime']=_[_0x06ba('0x37')](moment()[_0x06ba('0x2d')]('x'));}this['trunks'][_0x56bc5d[_0x06ba('0x34')]]['state']=_0x56bc5d[_0x06ba('0x27')][_0x06ba('0x36')]();logger[_0x06ba('0x25')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x06ba('0x1b')](this[_0x06ba('0xd')][_0x56bc5d['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x06ba('0x2d')](_0x06ba('0x2e'),this[_0x06ba('0xd')][_0x56bc5d[_0x06ba('0x34')]][_0x06ba('0x2f')]),_0x06ba('0x30'),this[_0x06ba('0xd')][_0x56bc5d[_0x06ba('0x34')]]);}else if(_['startsWith'](_0x56bc5d['device'],_0x06ba('0x3c'))){var _0x38cb86=_0x56bc5d['device'];var _0x16c612=_0x38cb86[_0x06ba('0x3d')](_0x38cb86[_0x06ba('0x3e')]('/')+0x1,_0x38cb86[_0x06ba('0x3e')]('@'));var _0xc16963=_[_0x06ba('0x26')](this[_0x06ba('0xe')],function(_0x149478){return _0x149478[_0x06ba('0x3f')]==_0x16c612||_0x149478[_0x06ba('0x40')]==_0x16c612||_0x149478['accountcode']==_0x16c612;});if(_0xc16963){if(_0xc16963['state']!==_0x56bc5d['state'][_0x06ba('0x36')]()){_0xc16963['stateTime']=_['toNumber'](moment()[_0x06ba('0x2d')]('x'));}_0xc16963[_0x06ba('0x27')]=_0x56bc5d[_0x06ba('0x27')][_0x06ba('0x36')]();_0xc16963[_0x06ba('0x35')]=!![];_0xc16963['updateStatusRealtime'](_0x56bc5d);}}}}catch(_0x5cf4a3){logger[_0x06ba('0x1c')]('[userReport][devicestatechange]',util[_0x06ba('0x1b')](_0x5cf4a3,{'showHidden':![],'depth':null}));}};UserReport[_0x06ba('0x1f')][_0x06ba('0x41')]=function(_0x4f472f){try{if(this[_0x06ba('0x23')](_0x4f472f)&&this[_0x06ba('0x23')](_0x4f472f[_0x06ba('0x15')])){logger[_0x06ba('0x32')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x4f472f[_0x06ba('0x42')],_0x4f472f[_0x06ba('0x43')],_0x4f472f['peerstatus']);logger[_0x06ba('0x25')](_0x06ba('0x44'),util[_0x06ba('0x1b')](_0x4f472f,{'showHidden':![],'depth':null}));if(this[_0x06ba('0xe')][_0x4f472f[_0x06ba('0x42')]]){if(!this[_0x06ba('0xe')][_0x4f472f['peer']][_0x06ba('0x35')]||_0x4f472f[_0x06ba('0x15')]['toLowerCase']()==_0x06ba('0x45')){this['agents'][_0x4f472f[_0x06ba('0x42')]][_0x06ba('0x35')]=![];this[_0x06ba('0xe')][_0x4f472f[_0x06ba('0x42')]][_0x06ba('0x46')]=_0x4f472f[_0x06ba('0x15')][_0x06ba('0x36')]();this[_0x06ba('0xe')][_0x4f472f['peer']][_0x06ba('0x43')]=_0x4f472f['address'];this[_0x06ba('0xe')][_0x4f472f[_0x06ba('0x42')]]['updateStatusRealtime'](_0x4f472f);}}else if(this['telephones'][_0x4f472f[_0x06ba('0x42')]]){this[_0x06ba('0xf')][_0x4f472f['peer']][_0x06ba('0x46')]=_0x4f472f[_0x06ba('0x15')][_0x06ba('0x36')]();this[_0x06ba('0xf')][_0x4f472f[_0x06ba('0x42')]][_0x06ba('0x43')]=_0x4f472f[_0x06ba('0x43')];logger[_0x06ba('0x25')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x06ba('0xf')][_0x4f472f[_0x06ba('0x42')]],{'showHidden':![],'depth':null}));this[_0x06ba('0x21')](util['format'](_0x06ba('0x3a'),this[_0x06ba('0xf')][_0x4f472f[_0x06ba('0x42')]]['name']),'telephone:save',this['telephones'][_0x4f472f[_0x06ba('0x42')]]);}else if(this['trunks'][_0x4f472f['peer']]){this[_0x06ba('0xd')][_0x4f472f[_0x06ba('0x42')]][_0x06ba('0x46')]=_0x4f472f['peerstatus']['toLowerCase']();this[_0x06ba('0xd')][_0x4f472f[_0x06ba('0x42')]][_0x06ba('0x43')]=_0x4f472f[_0x06ba('0x43')];logger[_0x06ba('0x25')](_0x06ba('0x47'),util[_0x06ba('0x1b')](this['trunks'][_0x4f472f['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x06ba('0x2d')](_0x06ba('0x2e'),this[_0x06ba('0xd')][_0x4f472f[_0x06ba('0x42')]]['name']),_0x06ba('0x30'),this[_0x06ba('0xd')][_0x4f472f[_0x06ba('0x42')]]);}}}catch(_0x4875b1){logger[_0x06ba('0x1c')](_0x06ba('0x44'),util[_0x06ba('0x1b')](_0x4875b1,{'showHidden':![],'depth':null}));}};module[_0x06ba('0x48')]=UserReport;
\ No newline at end of file
index 8ea8892..b71f295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x14d3e9,_0x47d187){var _0xaa803d=function(_0x25b475){while(--_0x25b475){_0x14d3e9['push'](_0x14d3e9['shift']());}};_0xaa803d(++_0x47d187);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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
+var _0xfb2d=['[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','agentcomplete','syncAgentComplete','syncVarSet','hangup','syncHangup','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','emit','prototype','isNotNull','isUndefined','uniqueid','membername','destuniqueid','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','called','queue','mandatoryDisposition','type','inbound','voice','merge','event','privilege','custom:agentcalled','debug','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','format','YYYY-MM-DD\x20HH:mm:ss','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','reason','answered_elsewhere','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','agentringnoanswerAt','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','syncQueueCallerAbandon','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentconnectAt','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','agent','talktime','acw','acwTimeout','agentacw','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','values','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','transfer','seconds','secondtransfereruniqueid','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstart]'];(function(_0x38d887,_0x44dd6c){var _0x4613fc=function(_0x5cb2b0){while(--_0x5cb2b0){_0x38d887['push'](_0x38d887['shift']());}};_0x4613fc(++_0x44dd6c);}(_0xfb2d,0x1db));var _0xdfb2=function(_0x20fb02,_0x96c029){_0x20fb02=_0x20fb02-0x0;var _0x24a33e=_0xfb2d[_0x20fb02];return _0x24a33e;};'use strict';var _=require(_0xdfb2('0x0'));var moment=require(_0xdfb2('0x1'));var util=require(_0xdfb2('0x2'));var Redis=require(_0xdfb2('0x3'));var config=require('../../../config/environment');var logger=require(_0xdfb2('0x4'))(_0xdfb2('0x5'));var ami=require(_0xdfb2('0x6'));config[_0xdfb2('0x7')]=_[_0xdfb2('0x8')](config[_0xdfb2('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xdfb2('0x9'))(new Redis(config[_0xdfb2('0x7')]));function VoiceAgentReport(_0x582676){this[_0xdfb2('0xa')]={};this[_0xdfb2('0xb')]=_0x582676[_0xdfb2('0xa')];this[_0xdfb2('0xc')]=_0x582676[_0xdfb2('0xc')];this[_0xdfb2('0xd')]=_0x582676[_0xdfb2('0xd')];this[_0xdfb2('0xe')]={};ami['on'](_0xdfb2('0xf'),this[_0xdfb2('0x10')][_0xdfb2('0x11')](this));ami['on']('agentconnect',this[_0xdfb2('0x12')][_0xdfb2('0x11')](this));ami['on'](_0xdfb2('0x13'),this[_0xdfb2('0x14')][_0xdfb2('0x11')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0xdfb2('0x11')](this));ami['on'](_0xdfb2('0x15'),this[_0xdfb2('0x16')]['bind'](this));ami['on']('varset',this[_0xdfb2('0x17')][_0xdfb2('0x11')](this));ami['on'](_0xdfb2('0x18'),this[_0xdfb2('0x19')][_0xdfb2('0x11')](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart'][_0xdfb2('0x11')](this));ami['on'](_0xdfb2('0x1a'),this[_0xdfb2('0x1b')][_0xdfb2('0x11')](this));ami['on'](_0xdfb2('0x1c'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0xdfb2('0x1d'),this['syncBlindTransfer'][_0xdfb2('0x11')](this));}VoiceAgentReport['prototype'][_0xdfb2('0x1e')]=function(_0x35a92f,_0x2c63e7,_0x52bad6){io['to'](_0x35a92f)[_0xdfb2('0x1e')](_0x2c63e7,_0x52bad6);};VoiceAgentReport[_0xdfb2('0x1f')][_0xdfb2('0x20')]=function(_0x452b0e){return _0x452b0e!==null&&!_[_0xdfb2('0x21')](_0x452b0e);};VoiceAgentReport['prototype'][_0xdfb2('0x10')]=function(_0x2103bc){try{if(this[_0xdfb2('0x20')](_0x2103bc)){logger['info']('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x2103bc[_0xdfb2('0x22')],_0x2103bc[_0xdfb2('0x23')],_0x2103bc[_0xdfb2('0x24')]);logger['debug'](_0xdfb2('0x25'),_0x2103bc[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x2103bc,{'showHidden':![],'depth':null}));if(_[_0xdfb2('0x21')](this[_0xdfb2('0xa')][_0x2103bc[_0xdfb2('0x22')]])){this[_0xdfb2('0xa')][_0x2103bc['uniqueid']]={};}if(_['isUndefined'](this[_0xdfb2('0xa')][_0x2103bc[_0xdfb2('0x22')]][_0x2103bc['destuniqueid']])){this[_0xdfb2('0xa')][_0x2103bc[_0xdfb2('0x22')]][_0x2103bc['destuniqueid']]={'agentcalledAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xdfb2('0x27'),'mandatoryDisposition':this['voiceQueues'][_0x2103bc['queue']]?this[_0xdfb2('0xc')][_0x2103bc[_0xdfb2('0x28')]][_0xdfb2('0x29')]||![]:![],'type':this['voiceQueues'][_0x2103bc['queue']]?this[_0xdfb2('0xc')][_0x2103bc[_0xdfb2('0x28')]][_0xdfb2('0x2a')]||_0xdfb2('0x2b'):'inbound','variables':this[_0xdfb2('0xe')][_0x2103bc[_0xdfb2('0x22')]],'motionChannel':_0xdfb2('0x2c')};}_[_0xdfb2('0x2d')](this['channels'][_0x2103bc[_0xdfb2('0x22')]][_0x2103bc[_0xdfb2('0x24')]],_['omit'](_0x2103bc,[_0xdfb2('0x2e'),_0xdfb2('0x2f')]));logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x2103bc[_0xdfb2('0x22')],util['inspect'](this[_0xdfb2('0xa')][_0x2103bc[_0xdfb2('0x22')]][_0x2103bc[_0xdfb2('0x24')]],{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x30'),this[_0xdfb2('0xa')][_0x2103bc['uniqueid']][_0x2103bc['destuniqueid']]);logger[_0xdfb2('0x31')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x2103bc[_0xdfb2('0x22')],util['inspect'](this[_0xdfb2('0xa')][_0x2103bc[_0xdfb2('0x22')]][_0x2103bc[_0xdfb2('0x24')]],{'showHidden':![],'depth':null}));this[_0xdfb2('0x1e')](util['format'](_0xdfb2('0x32'),_0x2103bc[_0xdfb2('0x23')]),_0xdfb2('0x33'),this[_0xdfb2('0xa')][_0x2103bc[_0xdfb2('0x22')]][_0x2103bc[_0xdfb2('0x24')]]);}}catch(_0x11c9ec){logger[_0xdfb2('0x34')](_0xdfb2('0x35'),_0x2103bc['uniqueid'],util[_0xdfb2('0x26')](_0x11c9ec,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')]['syncAgentConnect']=function(_0x292ae1){try{if(this[_0xdfb2('0x20')](_0x292ae1)){if(this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]]){logger[_0xdfb2('0x31')](_0xdfb2('0x36'),_0x292ae1[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x292ae1,{'showHidden':![],'depth':null}));for(var _0xf5636a in this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]]){if(this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xdfb2('0x37')](_0xf5636a)){if(_0x292ae1[_0xdfb2('0x24')]===_0xf5636a){logger[_0xdfb2('0x38')](_0xdfb2('0x39'),_0x292ae1[_0xdfb2('0x22')],_0x292ae1['membername'],_0x292ae1['destuniqueid']);this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a]['agentconnectAt']=moment()[_0xdfb2('0x3a')](_0xdfb2('0x3b'));this['channels'][_0x292ae1['uniqueid']][_0xf5636a][_0xdfb2('0x3c')]=_0x292ae1[_0xdfb2('0x3c')];this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x3d')]=_0x292ae1['connectedlinenum'];this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x3e')]=_0x292ae1[_0xdfb2('0x3e')];this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a][_0xdfb2('0x3f')]=_0x292ae1[_0xdfb2('0x3f')];this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a]['holdtime']=_0x292ae1[_0xdfb2('0x40')];this['channels'][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x41')]=_0xdfb2('0x42');if(this['voiceChannels'][this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a][_0xdfb2('0x22')]]){var _0x2e07cf=this[_0xdfb2('0xb')][this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x22')]][_0xdfb2('0x43')];this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x43')]=_0x2e07cf;_0x292ae1['routealias']=_0x2e07cf;}_['merge'](this[_0xdfb2('0xd')][_0x292ae1['interface']],_[_0xdfb2('0x44')](_0x292ae1,['queue',_0xdfb2('0x45'),_0xdfb2('0x43')]));logger[_0xdfb2('0x31')](_0xdfb2('0x46'),_0x292ae1['uniqueid'],util[_0xdfb2('0x26')](this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0x292ae1[_0xdfb2('0x24')]],{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x47'),this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0x292ae1[_0xdfb2('0x24')]]);logger['debug'](_0xdfb2('0x48'),_0x292ae1[_0xdfb2('0x22')],util['inspect'](this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0x292ae1[_0xdfb2('0x24')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xdfb2('0x3a')](_0xdfb2('0x32'),_0x292ae1[_0xdfb2('0x23')]),'user:agentconnect',this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0x292ae1[_0xdfb2('0x24')]]);}else if(!this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a]['agentringnoanswer']&&!this['channels'][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x15')]){logger[_0xdfb2('0x38')](_0xdfb2('0x49'),_0x292ae1[_0xdfb2('0x22')],this['channels'][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a]['membername'],_0xf5636a);this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a]['agentringnoanswer']=!![];this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a]['agentringnoanswerAt']=moment()['format'](_0xdfb2('0x3b'));this['channels'][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x4a')]=_0x292ae1[_0xdfb2('0x24')];this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x4b')]=_0x292ae1[_0xdfb2('0x23')];this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a]['lastevent']='answered_elsewhere';this[_0xdfb2('0xa')][_0x292ae1[_0xdfb2('0x22')]][_0xf5636a][_0xdfb2('0x4c')]=_0xdfb2('0x4d');logger['debug']('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x292ae1['uniqueid'],util[_0xdfb2('0x26')](this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a],{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x4e'),this[_0xdfb2('0xa')][_0x292ae1['uniqueid']][_0xf5636a]);}}}}}}catch(_0x287db8){logger[_0xdfb2('0x34')]('[%s][voiceAgentReport][agentconnect]',_0x292ae1['uniqueid'],util[_0xdfb2('0x26')](_0x287db8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')]['syncAgentRingNoAnswer']=function(_0xf53327){try{if(this['isNotNull'](_0xf53327)){logger[_0xdfb2('0x31')](_0xdfb2('0x4f'),_0xf53327['uniqueid'],util[_0xdfb2('0x26')](_0xf53327,{'showHidden':![],'depth':null}));if(this[_0xdfb2('0xa')][_0xf53327['uniqueid']]&&this['channels'][_0xf53327[_0xdfb2('0x22')]][_0xf53327[_0xdfb2('0x24')]]){logger[_0xdfb2('0x38')](_0xdfb2('0x50'),_0xf53327[_0xdfb2('0x22')],_0xf53327[_0xdfb2('0x23')],_0xf53327['destuniqueid']);this['channels'][_0xf53327['uniqueid']][_0xf53327['destuniqueid']]['agentringnoanswer']=!![];this['channels'][_0xf53327[_0xdfb2('0x22')]][_0xf53327[_0xdfb2('0x24')]][_0xdfb2('0x51')]=moment()['format'](_0xdfb2('0x3b'));this['channels'][_0xf53327['uniqueid']][_0xf53327[_0xdfb2('0x24')]][_0xdfb2('0x41')]=_0xdfb2('0x52');this[_0xdfb2('0xa')][_0xf53327[_0xdfb2('0x22')]][_0xf53327[_0xdfb2('0x24')]][_0xdfb2('0x4c')]='rejected';logger['debug'](_0xdfb2('0x53'),_0xf53327[_0xdfb2('0x22')],util[_0xdfb2('0x26')](this['channels'][_0xf53327[_0xdfb2('0x22')]][_0xf53327[_0xdfb2('0x24')]],{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x54'),this[_0xdfb2('0xa')][_0xf53327[_0xdfb2('0x22')]][_0xf53327[_0xdfb2('0x24')]]);}}}catch(_0x52bdcd){logger['error'](_0xdfb2('0x55'),_0xf53327[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x52bdcd,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')][_0xdfb2('0x56')]=function(_0x14469b){try{if(this['isNotNull'](_0x14469b)){logger[_0xdfb2('0x31')](_0xdfb2('0x57'),_0x14469b[_0xdfb2('0x22')],util['inspect'](_0x14469b,{'showHidden':![],'depth':null}));if(this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]]){for(var _0x82b10c in this['channels'][_0x14469b['uniqueid']]){if(this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]][_0xdfb2('0x37')](_0x82b10c)&&!this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]][_0x82b10c][_0xdfb2('0x13')]&&!this[_0xdfb2('0xa')][_0x14469b['uniqueid']][_0x82b10c][_0xdfb2('0x15')]){logger['info'](_0xdfb2('0x58'),_0x14469b[_0xdfb2('0x22')],this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]][_0x82b10c]['membername'],_0x82b10c);this['channels'][_0x14469b[_0xdfb2('0x22')]][_0x82b10c]['agentringnoanswer']=!![];this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]][_0x82b10c][_0xdfb2('0x51')]=moment()[_0xdfb2('0x3a')](_0xdfb2('0x3b'));this[_0xdfb2('0xa')][_0x14469b['uniqueid']][_0x82b10c][_0xdfb2('0x41')]='abandoned';this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]][_0x82b10c][_0xdfb2('0x4c')]=_0xdfb2('0x59');logger[_0xdfb2('0x31')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x14469b[_0xdfb2('0x22')],util[_0xdfb2('0x26')](this['channels'][_0x14469b[_0xdfb2('0x22')]][_0x82b10c],{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x5a'),this[_0xdfb2('0xa')][_0x14469b[_0xdfb2('0x22')]][_0x82b10c]);}}}}}catch(_0x126a2c){logger[_0xdfb2('0x34')](_0xdfb2('0x5b'),_0x14469b[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x126a2c,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x236f5f){try{if(this[_0xdfb2('0x20')](_0x236f5f)){logger[_0xdfb2('0x31')](_0xdfb2('0x5c'),_0x236f5f['uniqueid'],util['inspect'](_0x236f5f,{'showHidden':![],'depth':null}));if(this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]]){for(var _0x571774 in this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]]){if(this['channels'][_0x236f5f[_0xdfb2('0x22')]][_0xdfb2('0x37')](_0x571774)){if(this[_0xdfb2('0xa')][_0x236f5f['uniqueid']][_0x571774][_0xdfb2('0x5d')]&&!this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774]['agentcomplete']){logger['info'](_0xdfb2('0x5e'),_0x236f5f[_0xdfb2('0x22')],this[_0xdfb2('0xa')][_0x236f5f['uniqueid']][_0x571774][_0xdfb2('0x23')],_0x571774);this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774][_0xdfb2('0x15')]=!![];this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774][_0xdfb2('0x5f')]=moment()[_0xdfb2('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774][_0xdfb2('0x41')]=_0xdfb2('0x60');this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774][_0xdfb2('0x4c')]=_0x236f5f[_0xdfb2('0x4c')]=='transfer'?_0xdfb2('0x61'):_0x236f5f[_0xdfb2('0x4c')];this['channels'][_0x236f5f[_0xdfb2('0x22')]][_0x571774][_0xdfb2('0x62')]=_0x236f5f[_0xdfb2('0x62')];if(this[_0xdfb2('0xc')][_0x236f5f[_0xdfb2('0x28')]]&&this[_0xdfb2('0xc')][_0x236f5f[_0xdfb2('0x28')]][_0xdfb2('0x63')]){this[_0xdfb2('0xa')][_0x236f5f['uniqueid']][_0x571774]['acwtime']=this['voiceQueues'][_0x236f5f['queue']][_0xdfb2('0x64')];this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774][_0xdfb2('0x65')]=!![];}this[_0xdfb2('0xd')][_0x236f5f['interface']]=_['omit'](this['agents'][_0x236f5f[_0xdfb2('0x66')]],[_0xdfb2('0x28'),_0xdfb2('0x45')]);logger['debug'](_0xdfb2('0x67'),_0x236f5f[_0xdfb2('0x22')],util[_0xdfb2('0x26')](this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774],{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x68'),this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774]);logger[_0xdfb2('0x31')](_0xdfb2('0x69'),_0x236f5f[_0xdfb2('0x22')],util['inspect'](this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774],{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',_0x236f5f['membername']),_0xdfb2('0x6a'),this[_0xdfb2('0xa')][_0x236f5f[_0xdfb2('0x22')]][_0x571774]);}}}}}}catch(_0x34ce7d){logger[_0xdfb2('0x34')](_0xdfb2('0x6b'),_0x236f5f[_0xdfb2('0x22')],util['inspect'](_0x34ce7d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')][_0xdfb2('0x17')]=function(_0x5d0f58){try{if(this[_0xdfb2('0x20')](_0x5d0f58)){logger['debug']('[%s][voiceAgentReport][varset]\x20event:',_0x5d0f58[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x5d0f58,{'showHidden':![],'depth':null}));this[_0xdfb2('0x6c')](_0x5d0f58[_0xdfb2('0x22')],_[_0xdfb2('0x6d')](_0x5d0f58[_0xdfb2('0x6e')])[0x0],_0x5d0f58[_0xdfb2('0x6f')]);if(this[_0xdfb2('0xa')][_0x5d0f58[_0xdfb2('0x22')]]){for(var _0x423a50 in this[_0xdfb2('0xa')][_0x5d0f58[_0xdfb2('0x22')]]){if(this[_0xdfb2('0xa')][_0x5d0f58['uniqueid']][_0xdfb2('0x37')](_0x423a50)){logger[_0xdfb2('0x38')](_0xdfb2('0x70'),_0x5d0f58[_0xdfb2('0x22')],_0x423a50,_[_0xdfb2('0x6d')](_0x5d0f58[_0xdfb2('0x6e')])[0x0],_0x5d0f58[_0xdfb2('0x6f')]);if(_[_0xdfb2('0x21')](this[_0xdfb2('0xa')][_0x5d0f58[_0xdfb2('0x22')]][_0x423a50][_0xdfb2('0xe')])){this['channels'][_0x5d0f58[_0xdfb2('0x22')]][_0x423a50][_0xdfb2('0xe')]={};}this[_0xdfb2('0xa')][_0x5d0f58['uniqueid']][_0x423a50][_0xdfb2('0xe')]=this['variables'][_0x5d0f58[_0xdfb2('0x22')]];}}}}}catch(_0x482e38){logger[_0xdfb2('0x34')](_0xdfb2('0x71'),_0x5d0f58[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x482e38,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')][_0xdfb2('0x6c')]=function(_0x531383,_0x43e2a8,_0x43db8c){var _0x8ff6f=['rtpaudioqos',_0xdfb2('0x72'),_0xdfb2('0x73'),_0xdfb2('0x74'),_0xdfb2('0x75'),_0xdfb2('0x76'),_0xdfb2('0x77'),_0xdfb2('0x78'),_0xdfb2('0x79'),_0xdfb2('0x7a'),_0xdfb2('0x7b'),_0xdfb2('0x7c'),'membercalls',_0xdfb2('0x7d'),_0xdfb2('0x7e'),_0xdfb2('0x7f'),_0xdfb2('0x23'),_0xdfb2('0x80'),'memberrealtime'];if(!_['isNil'](_0x43e2a8)&&!_[_0xdfb2('0x81')](_0x8ff6f,_0x43e2a8)){if(_[_0xdfb2('0x21')](this[_0xdfb2('0xe')][_0x531383])){this[_0xdfb2('0xe')][_0x531383]={};}this[_0xdfb2('0xe')][_0x531383][_0x43e2a8]=_0x43db8c;}};VoiceAgentReport[_0xdfb2('0x1f')][_0xdfb2('0x19')]=function(_0x2e370a){try{if(this[_0xdfb2('0x20')](_0x2e370a)){logger['debug'](_0xdfb2('0x82'),_0x2e370a[_0xdfb2('0x22')],util['inspect'](_0x2e370a,{'showHidden':![],'depth':null}));if(this[_0xdfb2('0xa')][_0x2e370a['uniqueid']]){for(var _0x5ca6c7 in this[_0xdfb2('0xa')][_0x2e370a[_0xdfb2('0x22')]]){if(this[_0xdfb2('0xa')][_0x2e370a[_0xdfb2('0x22')]][_0xdfb2('0x37')](_0x5ca6c7)){if(this[_0xdfb2('0xa')][_0x2e370a['uniqueid']][_0x5ca6c7][_0xdfb2('0x4c')]=='transfer'&&this[_0xdfb2('0xa')][_0x2e370a['uniqueid']][_0x5ca6c7][_0xdfb2('0x15')]){logger[_0xdfb2('0x38')](_0xdfb2('0x83'),_0x2e370a['uniqueid'],_0x5ca6c7);this[_0xdfb2('0xa')][_0x2e370a[_0xdfb2('0x22')]][_0x5ca6c7]['agentcompleteAt']=moment()[_0xdfb2('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0xdfb2('0x84'),_0x2e370a[_0xdfb2('0x22')],util['inspect'](_['values'](this[_0xdfb2('0xa')][_0x2e370a[_0xdfb2('0x22')]]),{'showHidden':![],'depth':null}));ami[_0xdfb2('0x1e')](_0xdfb2('0x85'),_[_0xdfb2('0x86')](this[_0xdfb2('0xa')][_0x2e370a[_0xdfb2('0x22')]]));delete this['channels'][_0x2e370a[_0xdfb2('0x22')]];}if(this[_0xdfb2('0xe')][_0x2e370a[_0xdfb2('0x22')]]){delete this['variables'][_0x2e370a[_0xdfb2('0x22')]];}}}catch(_0x100d73){logger[_0xdfb2('0x34')](_0xdfb2('0x87'),_0x2e370a[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x100d73,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')][_0xdfb2('0x88')]=function(_0x1df883){try{if(this[_0xdfb2('0x20')](_0x1df883)){logger[_0xdfb2('0x31')](_0xdfb2('0x89'),_0x1df883[_0xdfb2('0x22')],util['inspect'](_0x1df883,{'showHidden':![],'depth':null}));if(this['channels'][_0x1df883['transfereeuniqueid']]){for(var _0xcc10a7 in this['channels'][_0x1df883['transfereeuniqueid']]){if(this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8a')]][_0xdfb2('0x37')](_0xcc10a7)){if(_0x1df883['origtransfereruniqueid']===_0xcc10a7){logger['info'](_0xdfb2('0x8b'),_0x1df883[_0xdfb2('0x22')],this['channels'][_0x1df883[_0xdfb2('0x8a')]][_0xcc10a7][_0xdfb2('0x23')],_0xcc10a7);var _0x41a7c7=moment();this[_0xdfb2('0xa')][_0x1df883['transfereeuniqueid']][_0xcc10a7][_0xdfb2('0x15')]=!![];this[_0xdfb2('0xa')][_0x1df883['transfereeuniqueid']][_0xcc10a7][_0xdfb2('0x5f')]=moment()['format'](_0xdfb2('0x3b'));this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8a')]][_0xcc10a7]['lastevent']=_0xdfb2('0x60');this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8a')]][_0xcc10a7][_0xdfb2('0x4c')]=_0xdfb2('0x8c');this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8a')]][_0xcc10a7][_0xdfb2('0x62')]=_0x41a7c7['diff'](this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8a')]][_0xcc10a7][_0xdfb2('0x5d')],_0xdfb2('0x8d'));}}}}if(this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8e')]]){var _0x1a0e5e=this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8e')]];this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8e')]]=this[_0xdfb2('0xa')][_0x1df883[_0xdfb2('0x8a')]];this[_0xdfb2('0xa')][_0x1df883['transfereeuniqueid']]=_0x1a0e5e;}}}catch(_0x313835){logger[_0xdfb2('0x34')]('[%s][voiceAgentReport][attendedtransfer]',_0x1df883[_0xdfb2('0x22')],util['inspect'](_0x313835,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')]['syncBlindTransfer']=function(_0x414aca){try{if(this['isNotNull'](_0x414aca)){logger[_0xdfb2('0x31')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x414aca[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x414aca,{'showHidden':![],'depth':null}));if(this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]]){for(var _0x5e066a in this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]]){if(this['channels'][_0x414aca[_0xdfb2('0x8a')]][_0xdfb2('0x37')](_0x5e066a)){if(_0x414aca[_0xdfb2('0x8f')]===_0x5e066a){logger[_0xdfb2('0x38')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x414aca[_0xdfb2('0x22')],this['channels'][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a]['membername'],_0x5e066a);var _0x287771=moment();this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a]['agentcomplete']=!![];this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a][_0xdfb2('0x5f')]=_0x287771;this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a][_0xdfb2('0x41')]='complete';this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a][_0xdfb2('0x4c')]='transfer';this['channels'][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a][_0xdfb2('0x62')]=_0x287771['diff'](this[_0xdfb2('0xa')][_0x414aca[_0xdfb2('0x8a')]][_0x5e066a][_0xdfb2('0x5d')],'seconds');}}}}}}catch(_0x2410b3){logger['error'](_0xdfb2('0x90'),_0x414aca[_0xdfb2('0x22')],util['inspect'](_0x2410b3,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xdfb2('0x91')]=function(_0x107ff3){var _0x535e2c='';try{if(this[_0xdfb2('0x20')](_0x107ff3)){logger[_0xdfb2('0x31')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x107ff3['uniqueid'],util['inspect'](_0x107ff3,{'showHidden':![],'depth':null}));if(_0x107ff3[_0xdfb2('0x92')]){_0x535e2c=_0x107ff3['channel']['substring'](0x0,_0x107ff3[_0xdfb2('0x92')]['lastIndexOf']('-'));if(this['agents'][_0x535e2c]){logger[_0xdfb2('0x38')](_0xdfb2('0x93'),_0x107ff3[_0xdfb2('0x22')],_0x535e2c);this['agents'][_0x535e2c]['onhold']=!![];}}}}catch(_0x483030){logger[_0xdfb2('0x34')](_0xdfb2('0x94'),_0x107ff3[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x483030,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xdfb2('0x1f')]['syncMusicOnHoldStop']=function(_0x356dec){var _0x56cae9='';try{if(this[_0xdfb2('0x20')](_0x356dec)){logger[_0xdfb2('0x31')](_0xdfb2('0x95'),_0x356dec[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x356dec,{'showHidden':![],'depth':null}));if(_0x356dec[_0xdfb2('0x92')]){_0x56cae9=_0x356dec[_0xdfb2('0x92')][_0xdfb2('0x96')](0x0,_0x356dec[_0xdfb2('0x92')][_0xdfb2('0x97')]('-'));if(this[_0xdfb2('0xd')][_0x56cae9]){logger['info'](_0xdfb2('0x98'),_0x356dec[_0xdfb2('0x22')],_0x56cae9);this[_0xdfb2('0xd')][_0x56cae9][_0xdfb2('0x99')]=![];}}}}catch(_0x1cd3cf){logger['error'](_0xdfb2('0x9a'),_0x356dec[_0xdfb2('0x22')],util[_0xdfb2('0x26')](_0x1cd3cf,{'showHidden':![],'depth':null}));}};module[_0xdfb2('0x9b')]=VoiceAgentReport;
\ No newline at end of file
index 0538857..f8302e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb77c=['callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','cause-txt','endtime','diff','billableseconds','user:agentcomplete','resolve','transferType','undefined','isEmpty','getSettings','then','stopRecordingOnTransfer','StopMixMonitor','catch','Action','webbar:stopmonitors','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfercalleridnum','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','ATTENDED','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','BLIND','BlindTransfer','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','bluebird','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','busy','unavailable','ringing','ringinuse','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','syncNewCallerId','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','calleridname','debug','uniqueid','linkedid','pick','keys','context','from-sip','channel','split','exten','format','user:%s','name','user:agentconnect','accountcode','isNotNull','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','application','toLowerCase','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','applicationdata','duration','subtract','seconds','lastapplication','set','startsWith','cdr(','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','answered','answertime','holdtime','xcally-motion-preview','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s'];(function(_0xc77097,_0x692da6){var _0x436c6d=function(_0x5739ba){while(--_0x5739ba){_0xc77097['push'](_0xc77097['shift']());}};_0x436c6d(++_0x692da6);}(_0xb77c,0x1d2));var _0xcb77=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xb77c[_0x341e0f];return _0x59555a;};'use strict';var BPromise=require(_0xcb77('0x0'));var _=require(_0xcb77('0x1'));var moment=require(_0xcb77('0x2'));var util=require('util');var path=require(_0xcb77('0x3'));var Redis=require(_0xcb77('0x4'));var config=require(_0xcb77('0x5'));var logger=require(_0xcb77('0x6'))(_0xcb77('0x7'));var ami=require(_0xcb77('0x8'));var Channel=require(_0xcb77('0x9'));var RpcSetting=require(_0xcb77('0xa'));var statusDesc=[_0xcb77('0xb'),_0xcb77('0xc'),_0xcb77('0xd'),_0xcb77('0xe'),'invalid',_0xcb77('0xf'),_0xcb77('0x10'),_0xcb77('0x11'),'onhold'];var applications=['set','queue',_0xcb77('0x12'),_0xcb77('0x13'),_0xcb77('0x14'),'voicemail'];var dispositions=[_0xcb77('0x15'),_0xcb77('0x16'),_0xcb77('0x16'),_0xcb77('0x15'),_0xcb77('0x15'),'NO\x20ANSWER',_0xcb77('0x17'),_0xcb77('0x18'),_0xcb77('0x16'),'FAILED','FAILED'];var actions={};config[_0xcb77('0x19')]=_[_0xcb77('0x1a')](config[_0xcb77('0x19')],{'host':_0xcb77('0x1b'),'port':0x18eb});var io=require(_0xcb77('0x1c'))(new Redis(config['redis']));function VoiceCallReport(_0x51defd){this[_0xcb77('0x1d')]=_0x51defd[_0xcb77('0x1d')];this[_0xcb77('0x1e')]=_0x51defd[_0xcb77('0x1e')];this[_0xcb77('0x1f')]={};ami['on'](_0xcb77('0x20'),this[_0xcb77('0x21')]['bind'](this));ami['on'](_0xcb77('0x22'),this[_0xcb77('0x21')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x24'),this[_0xcb77('0x25')][_0xcb77('0x23')](this));ami['on']('newstate',this[_0xcb77('0x26')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x27'),this[_0xcb77('0x28')]['bind'](this));ami['on'](_0xcb77('0x29'),this[_0xcb77('0x2a')]['bind'](this));ami['on']('newcallerid',this[_0xcb77('0x2b')][_0xcb77('0x23')](this));ami['on']('attendedtransfer',this[_0xcb77('0x2c')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x2d'),this[_0xcb77('0x2e')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x2f'),this[_0xcb77('0x30')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x31'),this[_0xcb77('0x32')][_0xcb77('0x23')](this));try{logger[_0xcb77('0x33')](_0xcb77('0x34'));ami[_0xcb77('0x35')]();}catch(_0x9ef28a){logger[_0xcb77('0x36')](_0xcb77('0x37'),util[_0xcb77('0x38')](_0x9ef28a,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xcb77('0x39')]['isNotNull']=function(_0x1e98e2){return _0x1e98e2!==null&&!_[_0xcb77('0x3a')](_0x1e98e2);};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x3b')]=function(_0x5dfc1f,_0x1e88dc,_0x3d5ecb){io['to'](_0x5dfc1f)[_0xcb77('0x3b')](_0x1e88dc,_0x3d5ecb);};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x2b')]=function(_0x441828){try{if(this['isNotNull'](_0x441828)){logger[_0xcb77('0x33')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x441828['uniqueid'],_0x441828[_0xcb77('0x3c')],_0x441828['calleridnum']);logger[_0xcb77('0x3d')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x441828['uniqueid'],util['inspect'](_0x441828,{'showHidden':![],'depth':null}));if(_0x441828[_0xcb77('0x3e')]===_0x441828[_0xcb77('0x3f')]){if(!_[_0xcb77('0x3a')](this[_0xcb77('0x1d')][_0x441828['uniqueid']])){_['merge'](this[_0xcb77('0x1d')][_0x441828[_0xcb77('0x3e')]],_[_0xcb77('0x40')](_0x441828,_[_0xcb77('0x41')](this['channels'][_0x441828[_0xcb77('0x3e')]])));}}if(_0x441828[_0xcb77('0x42')]===_0xcb77('0x43')){if(this[_0xcb77('0x1e')][_0x441828[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){if(_0x441828[_0xcb77('0x46')]=='xcally-motion-preview'){this[_0xcb77('0x1e')][_0x441828['channel']['split']('-')[0x0]]['destconnectedlinenum']=_0x441828['connectedlinenum'];this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this['agents'][_0x441828[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x4a'),{'destaccountcode':this[_0xcb77('0x1e')][_0x441828[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x4b')],'destconnectedlinenum':_0x441828['connectedlinenum']});}}}}}catch(_0x415d94){logger[_0xcb77('0x36')]('[%s][voiceCallReport][newcallerid]',_0x441828[_0xcb77('0x3e')],util['inspect'](_0x415d94,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncNewChannel']=function(_0x2e4d8f){try{if(this[_0xcb77('0x4c')](_0x2e4d8f)){logger['debug'](_0xcb77('0x4d'),_0x2e4d8f[_0xcb77('0x3e')],util['inspect'](_0x2e4d8f,{'showHidden':![],'depth':null}));if(_0x2e4d8f[_0xcb77('0x3e')]===_0x2e4d8f[_0xcb77('0x3f')]&&_0x2e4d8f[_0xcb77('0x44')]!=_0xcb77('0x4e')){if(_[_0xcb77('0x3a')](this[_0xcb77('0x1d')][_0x2e4d8f[_0xcb77('0x3e')]])){logger[_0xcb77('0x33')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x2e4d8f['uniqueid'],_0x2e4d8f[_0xcb77('0x42')],_0x2e4d8f[_0xcb77('0x46')]);this[_0xcb77('0x1d')][_0x2e4d8f['uniqueid']]=new Channel();this[_0xcb77('0x1d')][_0x2e4d8f['uniqueid']][_0xcb77('0x4f')]=moment()['format'](_0xcb77('0x50'));this[_0xcb77('0x1d')][_0x2e4d8f['uniqueid']][_0xcb77('0x51')]=dispositions[_[_0xcb77('0x52')](_0x2e4d8f[_0xcb77('0x53')])];_[_0xcb77('0x54')](this[_0xcb77('0x1d')][_0x2e4d8f[_0xcb77('0x3e')]],_[_0xcb77('0x40')](_0x2e4d8f,_[_0xcb77('0x41')](this['channels'][_0x2e4d8f[_0xcb77('0x3e')]])));if(_0x2e4d8f[_0xcb77('0x42')]===_0xcb77('0x43')){if(this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){if(_[_0xcb77('0x3a')](this[_0xcb77('0x1e')][_0x2e4d8f['channel'][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x55')])){this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x55')]=_0x2e4d8f[_0xcb77('0x46')];logger[_0xcb77('0x3d')](_0xcb77('0x56'),_0x2e4d8f['uniqueid'],util[_0xcb77('0x38')]({'destaccountcode':this[_0xcb77('0x1e')][_0x2e4d8f['channel']['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x2e4d8f[_0xcb77('0x46')]},{'showHidden':![],'depth':null}));this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x4a'),{'destaccountcode':this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')]['split']('-')[0x0]][_0xcb77('0x4b')],'destconnectedlinenum':_0x2e4d8f['exten']});}}}}}}}catch(_0x4ad449){logger[_0xcb77('0x36')](_0xcb77('0x57'),_0x2e4d8f[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4ad449,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x21')]=function(_0x17f168){try{if(this[_0xcb77('0x4c')](_0x17f168)){logger['debug']('[%s][voiceCallReport][newexten]\x20event:',_0x17f168[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x17f168,{'showHidden':![],'depth':null}));if(_0x17f168[_0xcb77('0x3e')]===_0x17f168[_0xcb77('0x3f')]&&_0x17f168[_0xcb77('0x46')]!='h'&&_0x17f168[_0xcb77('0x44')]!=_0xcb77('0x4e')){_0x17f168[_0xcb77('0x58')]=_0x17f168[_0xcb77('0x58')][_0xcb77('0x59')]();_0x17f168['applicationdata']=_0x17f168['appdata']&&_0x17f168[_0xcb77('0x5a')]['startsWith'](_0xcb77('0x5b'))?_0x17f168[_0xcb77('0x5a')]:(_0x17f168[_0xcb77('0x5a')]||_0x17f168['applicationdata'])[_0xcb77('0x59')]();logger[_0xcb77('0x33')](_0xcb77('0x5c'),_0x17f168['uniqueid'],_0x17f168[_0xcb77('0x58')],_0x17f168[_0xcb77('0x5d')]);if(_[_0xcb77('0x3a')](this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]])){this['channels'][_0x17f168[_0xcb77('0x3e')]]=new Channel();this[_0xcb77('0x1d')][_0x17f168['uniqueid']]['starttime']=_0x17f168[_0xcb77('0x5e')]?moment()[_0xcb77('0x5f')](moment[_0xcb77('0x5e')](_0x17f168[_0xcb77('0x5e')])['seconds'](),_0xcb77('0x60'))[_0xcb77('0x47')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xcb77('0x47')](_0xcb77('0x50'));this[_0xcb77('0x1d')][_0x17f168['uniqueid']][_0xcb77('0x51')]=_0xcb77('0x15');}_[_0xcb77('0x54')](this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]],_['pick'](_0x17f168,_[_0xcb77('0x41')](this[_0xcb77('0x1d')][_0x17f168['uniqueid']])));if(_['includes'](applications,_0x17f168[_0xcb77('0x58')])){this[_0xcb77('0x1d')][_0x17f168['uniqueid']][_0xcb77('0x61')]=_0x17f168[_0xcb77('0x58')];this['channels'][_0x17f168['uniqueid']]['lastdata']=_0x17f168[_0xcb77('0x5d')];if(_0x17f168[_0xcb77('0x58')]===_0xcb77('0x62')&&_[_0xcb77('0x63')](_0x17f168[_0xcb77('0x5d')]['toLowerCase'](),_0xcb77('0x64'))){var _0x499166=_0x17f168['applicationdata'][_0xcb77('0x45')]('=');var _0x327140=_0x499166[0x0][_0xcb77('0x59')]()[_0xcb77('0x65')](/cdr\((.*)\)/);if(_0x327140){this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]][_0x327140[0x1]]=_0x499166[0x1];}}else if(_0x17f168[_0xcb77('0x58')]==='queue'){this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]][_0xcb77('0x66')]=_0x17f168[_0xcb77('0x5d')][_0xcb77('0x45')](',')[0x0];}}}}}catch(_0x38b108){logger[_0xcb77('0x36')](_0xcb77('0x67'),_0x17f168[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x38b108,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncNewState']=function(_0x1d2dd6){try{if(this[_0xcb77('0x4c')](_0x1d2dd6)){logger[_0xcb77('0x33')](_0xcb77('0x68'),_0x1d2dd6[_0xcb77('0x3e')],_0x1d2dd6[_0xcb77('0x3f')],_0x1d2dd6[_0xcb77('0x3c')],_0x1d2dd6[_0xcb77('0x69')]);logger[_0xcb77('0x3d')]('[%s][voiceCallReport][newstate]\x20event:',_0x1d2dd6[_0xcb77('0x3e')],util['inspect'](_0x1d2dd6,{'showHidden':![],'depth':null}));if(_0x1d2dd6[_0xcb77('0x3e')]!==_0x1d2dd6[_0xcb77('0x3f')]){if(this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]]){if(_0x1d2dd6['channelstate']==='6'){if(!this['channels'][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6a')]){var _0x32596a=moment();this['channels'][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6a')]=!![];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6b')]=_0x32596a[_0xcb77('0x47')](_0xcb77('0x50'));if(this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x4f')]){this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6c')]=_0x32596a['diff'](this['channels'][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x4f')],_0xcb77('0x60'));}}this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']]['linkedid']=_0x1d2dd6['uniqueid'];if(_0x1d2dd6[_0xcb77('0x69')]!==_0xcb77('0x6d')){this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']]['connectedlinenum']=_0x1d2dd6[_0xcb77('0x69')];}this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6e')]=_0x1d2dd6[_0xcb77('0x3c')];this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x6f')]=_0x1d2dd6[_0xcb77('0x44')];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]]['disposition']=dispositions[_[_0xcb77('0x52')](_0x1d2dd6['channelstate'])];if(this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x70')]=this['agents'][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]['id'];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]]['membername']=this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')];}}}}else{if(this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3e')]]){if(_0x1d2dd6[_0xcb77('0x53')]==='6'){if(this[_0xcb77('0x1e')][_0x1d2dd6['channel']['split']('-')[0x0]]){this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3e')]][_0xcb77('0x70')]=this[_0xcb77('0x1e')][_0x1d2dd6['channel'][_0xcb77('0x45')]('-')[0x0]]['id'];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3e')]][_0xcb77('0x71')]=this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')];}}}}if(_0x1d2dd6['channelstate']==='6'&&_0x1d2dd6[_0xcb77('0x42')]===_0xcb77('0x43')){if(this['agents'][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]]['destconnectedlinenum']=_0x1d2dd6[_0xcb77('0x46')];var _0x45ded8;if(this[_0xcb77('0x1d')][_0x1d2dd6['uniqueid']])_0x45ded8=this['channels'][_0x1d2dd6[_0xcb77('0x3e')]]['routealias'];else if(this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]])_0x45ded8=this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x72')];logger[_0xcb77('0x3d')](_0xcb77('0x73'),_0x1d2dd6[_0xcb77('0x3e')],util['inspect']({'destaccountcode':this['agents'][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1d2dd6['exten'],'routealias':_0x45ded8},{'showHidden':![],'depth':null}));this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this['agents'][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x4a'),{'destaccountcode':this['agents'][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]][_0xcb77('0x4b')],'destconnectedlinenum':_0x1d2dd6['exten'],'routealias':_0x45ded8});}}}}catch(_0x47d298){logger[_0xcb77('0x36')]('[%s][voiceCallReport][newstate]',_0x1d2dd6[_0xcb77('0x3e')],util['inspect'](_0x47d298,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncMixMonitorFilename']=function(_0x1ab257,_0x87f9c8){try{if(this[_0xcb77('0x1d')][_0x1ab257]){logger['info'](_0xcb77('0x74'),_0x1ab257,_0x87f9c8);this[_0xcb77('0x1d')][_0x1ab257][_0xcb77('0x75')]=!![];if(_[_0xcb77('0x76')](_0x87f9c8,_0xcb77('0x77'))){_0x87f9c8=_0x87f9c8[_0xcb77('0x78')]('.wav49',_0xcb77('0x79'));}this['channels'][_0x1ab257][_0xcb77('0x7a')]=_0x87f9c8;var _0x14fc91=_[_0xcb77('0x7b')](this[_0xcb77('0x1d')][_0x1ab257][_0xcb77('0x7c')],{'filename':_0x87f9c8});if(_[_0xcb77('0x7d')](_0x14fc91)){this[_0xcb77('0x1d')][_0x1ab257]['monitors']['push']({'filename':_0x87f9c8,'createdAt':moment()[_0xcb77('0x47')](_0xcb77('0x50')),'mixmonitorid':'','status':'rec'});}}}catch(_0xeaaa33){logger[_0xcb77('0x36')](_0xcb77('0x7e'),_0x1ab257,util[_0xcb77('0x38')](_0xeaaa33,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x28')]=function(_0x454a2d){try{if(this[_0xcb77('0x4c')](_0x454a2d)){logger[_0xcb77('0x3d')]('[%s][voiceCallReport][varset]\x20event:',_0x454a2d[_0xcb77('0x3e')],util['inspect'](_0x454a2d,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]]&&_0x454a2d['channel']!=_0xcb77('0x4e')){if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')])){if(this[_0xcb77('0x4c')](_0x454a2d['variable'][_0xcb77('0x80')])){logger['info'](_0xcb77('0x81'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x83')](_0x454a2d[_0xcb77('0x3e')],_0x454a2d['value']);}else if(this[_0xcb77('0x4c')](_0x454a2d['variable']['xmd-phone'])){logger[_0xcb77('0x33')](_0xcb77('0x84'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d['value']);this[_0xcb77('0x1d')][_0x454a2d['uniqueid']][_0xcb77('0x69')]=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d['variable']['xmd-callerid'])){logger['info'](_0xcb77('0x85'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d['uniqueid']][_0xcb77('0x86')]=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')]['xmd-cdrtype'])){logger[_0xcb77('0x33')](_0xcb77('0x87'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x88')]=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x89')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x454a2d['uniqueid'],_0x454a2d['value'][_0xcb77('0x45')](',')[0x0]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x66')]=_0x454a2d[_0xcb77('0x82')]['split'](',')[0x0];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')]['xmd-originatecalleridnum'])){logger[_0xcb77('0x33')](_0xcb77('0x8a'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]]['originatecalleridnum']=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')]['xmd-destination'])){logger[_0xcb77('0x33')](_0xcb77('0x8b'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d[_0xcb77('0x3e')]]['destination']=_0x454a2d[_0xcb77('0x82')];}else if(this['isNotNull'](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x8c')])){logger[_0xcb77('0x33')](_0xcb77('0x8d'),_0x454a2d['uniqueid'],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x8e')]=_0x454a2d['value'];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x8f')])){logger[_0xcb77('0x33')](_0xcb77('0x90'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x66')]=_0x454a2d['value'];}else if(this['isNotNull'](_0x454a2d['variable'][_0xcb77('0x91')])){logger[_0xcb77('0x33')](_0xcb77('0x92'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d['uniqueid']][_0xcb77('0x93')]=_0x454a2d[_0xcb77('0x82')];}}}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x80')])){if(_0x454a2d['value']){var _0x4d36be=path[_0xcb77('0x94')](_0x454a2d[_0xcb77('0x82')])[_0xcb77('0x49')];logger['info'](_0xcb77('0x81'),_0x4d36be,_0x454a2d['value']);this[_0xcb77('0x83')](_0x4d36be,_0x454a2d['value']);}}else if(this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3f')]]){if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')])){if(this['isNotNull'](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x91')])){logger[_0xcb77('0x33')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x454a2d['linkedid'],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3f')]][_0xcb77('0x95')]=_0x454a2d['value'];}}}}}catch(_0x4d7c6e){logger['error'](_0xcb77('0x96'),_0x454a2d[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4d7c6e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x2a')]=function(_0x447e98){try{if(this['isNotNull'](_0x447e98)){logger[_0xcb77('0x3d')](_0xcb77('0x97'),_0x447e98[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x447e98,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x447e98['uniqueid'],_0x447e98[_0xcb77('0x98')]);var _0x123d94=moment();this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x99')]=_0x123d94['format'](_0xcb77('0x50'));this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x5e')]=_0x123d94[_0xcb77('0x9a')](this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]['starttime'],'seconds');if(this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x6a')]){this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]['billableseconds']=_0x123d94['diff'](this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x6b')],_0xcb77('0x60'));this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x6c')]=this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x5e')]-this[_0xcb77('0x1d')][_0x447e98['uniqueid']][_0xcb77('0x9b')];}if(_0x447e98[_0xcb77('0x42')]===_0xcb77('0x43')){if(this[_0xcb77('0x1e')][_0x447e98['channel'][_0xcb77('0x45')]('-')[0x0]]){this[_0xcb77('0x1e')][_0x447e98['channel'][_0xcb77('0x45')]('-')[0x0]]=_['omit'](this['agents'][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]],['destconnectedlinenum']);logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x447e98['uniqueid'],util['inspect']({'id':this[_0xcb77('0x1e')][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x4b')]},{'showHidden':![],'depth':null}));this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this['agents'][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x9c'),{'id':this[_0xcb77('0x1e')][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0xcb77('0x1e')][_0x447e98['channel'][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x4b')]});}}var _0x4e7cdb=this;Promise[_0xcb77('0x9d')]()['then'](function(){var _0x7edf9e=_0x4e7cdb[_0xcb77('0x1d')][_0x447e98['uniqueid']];if(typeof _0x7edf9e[_0xcb77('0x9e')]===_0xcb77('0x9f'))return;if(_[_0xcb77('0xa0')](_0x7edf9e[_0xcb77('0x7c')]))return;return RpcSetting[_0xcb77('0xa1')]()[_0xcb77('0xa2')](function(_0x23ca7b){if(!_0x23ca7b[_0xcb77('0xa3')])return;return Promise[_0xcb77('0x9d')]()[_0xcb77('0xa2')](function(){return ami['Action']({'action':_0xcb77('0xa4'),'channel':_0x7edf9e[_0xcb77('0x44')]})[_0xcb77('0xa5')](function(){});})['then'](function(){return ami[_0xcb77('0xa6')]({'action':_0xcb77('0xa4'),'channel':_0x7edf9e[_0xcb77('0x6f')]})[_0xcb77('0xa5')](function(){})['finally'](function(){var _0x290067=_0x4e7cdb[_0xcb77('0x1e')][_0x7edf9e['destinationchannel'][_0xcb77('0x45')]('-')[0x0]];if(!_0x290067)return;io[_0xcb77('0x3b')](_0xcb77('0xa7'),{'agentId':_0x290067['id'],'uniqueid':_0x7edf9e['uniqueid']});});});});})[_0xcb77('0xa2')](function(){if(_0x447e98[_0xcb77('0xa8')]==='BlindTransfer'){_0x4e7cdb[_0xcb77('0x1f')][_0x447e98[_0xcb77('0x3e')]]=_0x4e7cdb['channels'][_0x447e98['uniqueid']];}else{if(_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x88')]===_0xcb77('0xa9')&&_0x4e7cdb['blindTransfers'][_0x447e98[_0xcb77('0x3e')]]){_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x3e')]=[_0x4e7cdb['channels'][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x3f')],_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]['linkedid']=_0x4e7cdb[_0xcb77('0x1d')][_0x447e98['uniqueid']]['uniqueid']][0x0];delete _0x4e7cdb[_0xcb77('0x1f')][_0x447e98['uniqueid']];}}logger['debug'](_0xcb77('0xaa'),_0x447e98[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4e7cdb[_0xcb77('0x1d')][_0x447e98['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xcb77('0x3b')](_0xcb77('0xab'),_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]);delete _0x4e7cdb['channels'][_0x447e98[_0xcb77('0x3e')]];});}}}catch(_0x1dd932){logger['error']('[%s][voiceCallReport][hangup]',_0x447e98[_0xcb77('0x3e')],util['inspect'](_0x1dd932,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x2c')]=function(_0x4dddf5){try{if(this[_0xcb77('0x4c')](_0x4dddf5)){logger[_0xcb77('0x33')](_0xcb77('0xac'),_0x4dddf5[_0xcb77('0x3e')],_0x4dddf5[_0xcb77('0xad')],_0x4dddf5[_0xcb77('0xae')]);logger[_0xcb77('0x3d')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x4dddf5['uniqueid'],util[_0xcb77('0x38')](_0x4dddf5,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x4dddf5['transfereeuniqueid']]){this['channels'][_0x4dddf5['transfereeuniqueid']][_0xcb77('0xaf')]=_0x4dddf5['origtransferercalleridnum'];this['channels'][_0x4dddf5[_0xcb77('0xb0')]][_0xcb77('0xb1')]=_0x4dddf5[_0xcb77('0xae')];if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb2')]]){var _0x53e1e4=this['channels'][_0x4dddf5[_0xcb77('0xb2')]];this['channels'][_0x4dddf5[_0xcb77('0xb2')]]=this[_0xcb77('0x1d')][_0x4dddf5['transfereeuniqueid']];this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb0')]]=_0x53e1e4;}}else if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb3')]]){this[_0xcb77('0x1d')][_0x4dddf5['transfertargetuniqueid']][_0xcb77('0xaf')]=_0x4dddf5[_0xcb77('0xad')];this['channels'][_0x4dddf5['transfertargetuniqueid']][_0xcb77('0xb1')]=_0x4dddf5[_0xcb77('0xae')];if(this[_0xcb77('0x1d')][_0x4dddf5['origtransfereruniqueid']]){var _0x53e1e4=this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]];this[_0xcb77('0x1d')][_0x4dddf5['origtransfereruniqueid']]=this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb3')]];this['channels'][_0x4dddf5[_0xcb77('0xb3')]]=_0x53e1e4;}}if((this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]]||this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]])&&this['channels'][_0x4dddf5[_0xcb77('0xb2')]]){var _0x580dca=_[_0xcb77('0xb6')]([this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]],this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]],this['channels'][_0x4dddf5[_0xcb77('0xb2')]]],function(_0x392031){return _0x392031&&_0x392031[_0xcb77('0x88')]===_0xcb77('0xa9')&&_0x392031[_0xcb77('0xb7')];});if(_0x580dca){if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]])this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]][_0xcb77('0x9e')]=_0xcb77('0xb8');if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]])this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]][_0xcb77('0x9e')]=_0xcb77('0xb8');this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb2')]]['transferType']=_0xcb77('0xb8');}}}}catch(_0x1f2729){logger['error']('[%s][voiceCallReport][attendedtransfer]',_0x4dddf5[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x1f2729,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xcb77('0x2e')]=function(_0x23a5a0){try{if(this[_0xcb77('0x4c')](_0x23a5a0)){logger['info']('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x23a5a0[_0xcb77('0x3e')],_0x23a5a0['transfereecalleridnum'],_0x23a5a0[_0xcb77('0xb9')]);logger[_0xcb77('0x3d')](_0xcb77('0xba'),_0x23a5a0[_0xcb77('0x3e')],util['inspect'](_0x23a5a0,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x23a5a0[_0xcb77('0xb0')]]){this[_0xcb77('0x1d')][_0x23a5a0[_0xcb77('0xb0')]][_0xcb77('0xaf')]=_0x23a5a0[_0xcb77('0xbb')];this[_0xcb77('0x1d')][_0x23a5a0['transfereeuniqueid']][_0xcb77('0xb1')]=_0x23a5a0[_0xcb77('0xb9')];this[_0xcb77('0x1d')][_0x23a5a0[_0xcb77('0xb0')]][_0xcb77('0x9e')]=_0xcb77('0xbc');this[_0xcb77('0x2a')]({'event':_0xcb77('0xbd'),'uniqueid':_0x23a5a0[_0xcb77('0xb0')],'context':_0x23a5a0[_0xcb77('0x42')],'channel':_0x23a5a0['transfererchannel']});}else{this['channels'][_0x23a5a0[_0xcb77('0xbe')]][_0xcb77('0x9e')]=_0xcb77('0xbc');}}}catch(_0x2138b6){logger[_0xcb77('0x36')](_0xcb77('0xbf'),_0x23a5a0[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x2138b6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x30')]=function(_0x3bf03c){try{if(this[_0xcb77('0x4c')](_0x3bf03c)){logger[_0xcb77('0x3d')](_0xcb77('0xc0'),_0x3bf03c[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x3bf03c,{'showHidden':![],'depth':null}));if(this['channels'][_0x3bf03c[_0xcb77('0x3e')]]){if(!_[_0xcb77('0x7d')](this[_0xcb77('0x1d')][_0x3bf03c[_0xcb77('0x3e')]]['answertime'])){this[_0xcb77('0x1d')][_0x3bf03c['uniqueid']]['mohstarttime']=moment()[_0xcb77('0x47')](_0xcb77('0x50'));logger[_0xcb77('0x33')](_0xcb77('0xc1'),_0x3bf03c[_0xcb77('0x3e')],this[_0xcb77('0x1d')][_0x3bf03c[_0xcb77('0x3e')]][_0xcb77('0xc2')]);}}}}catch(_0x4b1016){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x3bf03c[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4b1016,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncMusicOnHoldStop']=function(_0x233d63){try{if(this[_0xcb77('0x4c')](_0x233d63)){logger[_0xcb77('0x3d')](_0xcb77('0xc3'),_0x233d63[_0xcb77('0x3e')],util['inspect'](_0x233d63,{'showHidden':![],'depth':null}));if(this['channels'][_0x233d63[_0xcb77('0x3e')]]){if(!_[_0xcb77('0x7d')](this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc2')])){this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc4')]+=moment()[_0xcb77('0xc5')](0x0)[_0xcb77('0x9a')](this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]]['mohstarttime'],_0xcb77('0x60'));logger[_0xcb77('0x33')](_0xcb77('0xc6'),_0x233d63[_0xcb77('0x3e')],this['channels'][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc4')]);delete this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc2')];}}}}catch(_0x1e24ae){logger['error']('[%s][voiceCallReport][musiconholdstop]',_0x233d63['uniqueid'],util['inspect'](_0x1e24ae,{'showHidden':![],'depth':null}));}};module[_0xcb77('0xc7')]=VoiceCallReport;
\ No newline at end of file
+var _0x3f40=['syncNewExten','newexten','newchannel','syncNewChannel','bind','newstate','syncNewState','varset','syncVarSet','hangup','newcallerid','syncNewCallerId','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','linkedid','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','format','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','pick','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','disposition','merge','includes','lastapplication','cdr(','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','push','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','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','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','parse','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','isEmpty','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','event','BlindTransfer','blindTransfers','outbound','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfercalleridnum','BLIND','syncHangup','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','set','agi','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','localhost','socket.io-emitter','channels','agents'];(function(_0x208f97,_0x19d9ae){var _0x5190cf=function(_0x1aadb9){while(--_0x1aadb9){_0x208f97['push'](_0x208f97['shift']());}};_0x5190cf(++_0x19d9ae);}(_0x3f40,0x18c));var _0x03f4=function(_0x28bd6b,_0x5c131e){_0x28bd6b=_0x28bd6b-0x0;var _0x1284fb=_0x3f40[_0x28bd6b];return _0x1284fb;};'use strict';var BPromise=require('bluebird');var _=require('lodash');var moment=require('moment');var util=require('util');var path=require(_0x03f4('0x0'));var Redis=require(_0x03f4('0x1'));var config=require(_0x03f4('0x2'));var logger=require(_0x03f4('0x3'))(_0x03f4('0x4'));var ami=require(_0x03f4('0x5'));var Channel=require(_0x03f4('0x6'));var RpcSetting=require(_0x03f4('0x7'));var statusDesc=['unknown',_0x03f4('0x8'),_0x03f4('0x9'),_0x03f4('0xa'),_0x03f4('0xb'),_0x03f4('0xc'),_0x03f4('0xd'),_0x03f4('0xe'),_0x03f4('0xf')];var applications=[_0x03f4('0x10'),'queue',_0x03f4('0x11'),'dial',_0x03f4('0x12'),_0x03f4('0x13')];var dispositions=[_0x03f4('0x14'),_0x03f4('0x15'),_0x03f4('0x15'),_0x03f4('0x14'),'NO\x20ANSWER',_0x03f4('0x14'),'ANSWERED',_0x03f4('0x16'),_0x03f4('0x15'),_0x03f4('0x15'),_0x03f4('0x15')];var actions={};config[_0x03f4('0x17')]=_['defaults'](config[_0x03f4('0x17')],{'host':_0x03f4('0x18'),'port':0x18eb});var io=require(_0x03f4('0x19'))(new Redis(config['redis']));function VoiceCallReport(_0x32484d){this['channels']=_0x32484d[_0x03f4('0x1a')];this[_0x03f4('0x1b')]=_0x32484d[_0x03f4('0x1b')];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0x03f4('0x1c')]['bind'](this));ami['on'](_0x03f4('0x1d'),this[_0x03f4('0x1c')]['bind'](this));ami['on'](_0x03f4('0x1e'),this[_0x03f4('0x1f')][_0x03f4('0x20')](this));ami['on'](_0x03f4('0x21'),this[_0x03f4('0x22')]['bind'](this));ami['on'](_0x03f4('0x23'),this[_0x03f4('0x24')]['bind'](this));ami['on'](_0x03f4('0x25'),this['syncHangup'][_0x03f4('0x20')](this));ami['on'](_0x03f4('0x26'),this[_0x03f4('0x27')][_0x03f4('0x20')](this));ami['on']('attendedtransfer',this[_0x03f4('0x28')][_0x03f4('0x20')](this));ami['on'](_0x03f4('0x29'),this[_0x03f4('0x2a')][_0x03f4('0x20')](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x03f4('0x2b'),this['syncMusicOnHoldStop'][_0x03f4('0x20')](this));try{logger[_0x03f4('0x2c')](_0x03f4('0x2d'));ami['actionCoreShowChannels']();}catch(_0x4f0d7b){logger[_0x03f4('0x2e')](_0x03f4('0x2f'),util[_0x03f4('0x30')](_0x4f0d7b,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x03f4('0x31')][_0x03f4('0x32')]=function(_0x52f2ac){return _0x52f2ac!==null&&!_[_0x03f4('0x33')](_0x52f2ac);};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0x34')]=function(_0x204dd5,_0xd12aaa,_0x1abb66){io['to'](_0x204dd5)[_0x03f4('0x34')](_0xd12aaa,_0x1abb66);};VoiceCallReport[_0x03f4('0x31')]['syncNewCallerId']=function(_0x77b4af){try{if(this[_0x03f4('0x32')](_0x77b4af)){logger[_0x03f4('0x2c')](_0x03f4('0x35'),_0x77b4af[_0x03f4('0x36')],_0x77b4af[_0x03f4('0x37')],_0x77b4af[_0x03f4('0x38')]);logger[_0x03f4('0x39')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x77b4af[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x77b4af,{'showHidden':![],'depth':null}));if(_0x77b4af[_0x03f4('0x36')]===_0x77b4af[_0x03f4('0x3a')]){if(!_[_0x03f4('0x33')](this[_0x03f4('0x1a')][_0x77b4af['uniqueid']])){_['merge'](this[_0x03f4('0x1a')][_0x77b4af[_0x03f4('0x36')]],_['pick'](_0x77b4af,_[_0x03f4('0x3b')](this[_0x03f4('0x1a')][_0x77b4af['uniqueid']])));}}if(_0x77b4af[_0x03f4('0x3c')]===_0x03f4('0x3d')){if(this[_0x03f4('0x1b')][_0x77b4af[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]]){if(_0x77b4af[_0x03f4('0x40')]==_0x03f4('0x41')){this[_0x03f4('0x1b')][_0x77b4af[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x42')]=_0x77b4af[_0x03f4('0x43')];this[_0x03f4('0x34')](util['format'](_0x03f4('0x44'),this[_0x03f4('0x1b')][_0x77b4af[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x45')]),_0x03f4('0x46'),{'destaccountcode':this[_0x03f4('0x1b')][_0x77b4af['channel'][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x47')],'destconnectedlinenum':_0x77b4af[_0x03f4('0x43')]});}}}}}catch(_0x1a45e5){logger[_0x03f4('0x2e')](_0x03f4('0x48'),_0x77b4af[_0x03f4('0x36')],util['inspect'](_0x1a45e5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0x1f')]=function(_0x46a2cc){try{if(this[_0x03f4('0x32')](_0x46a2cc)){logger[_0x03f4('0x39')](_0x03f4('0x49'),_0x46a2cc[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x46a2cc,{'showHidden':![],'depth':null}));if(_0x46a2cc[_0x03f4('0x36')]===_0x46a2cc[_0x03f4('0x3a')]&&_0x46a2cc[_0x03f4('0x3e')]!=_0x03f4('0x4a')){if(_[_0x03f4('0x33')](this[_0x03f4('0x1a')][_0x46a2cc['uniqueid']])){logger['info'](_0x03f4('0x4b'),_0x46a2cc['uniqueid'],_0x46a2cc['context'],_0x46a2cc['exten']);this[_0x03f4('0x1a')][_0x46a2cc[_0x03f4('0x36')]]=new Channel();this[_0x03f4('0x1a')][_0x46a2cc[_0x03f4('0x36')]][_0x03f4('0x4c')]=moment()[_0x03f4('0x4d')](_0x03f4('0x4e'));this[_0x03f4('0x1a')][_0x46a2cc[_0x03f4('0x36')]]['disposition']=dispositions[_[_0x03f4('0x4f')](_0x46a2cc[_0x03f4('0x50')])];_['merge'](this[_0x03f4('0x1a')][_0x46a2cc[_0x03f4('0x36')]],_[_0x03f4('0x51')](_0x46a2cc,_[_0x03f4('0x3b')](this[_0x03f4('0x1a')][_0x46a2cc[_0x03f4('0x36')]])));if(_0x46a2cc['context']===_0x03f4('0x3d')){if(this[_0x03f4('0x1b')][_0x46a2cc[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]]){if(_[_0x03f4('0x33')](this[_0x03f4('0x1b')][_0x46a2cc[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x42')])){this[_0x03f4('0x1b')][_0x46a2cc['channel'][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x42')]=_0x46a2cc['exten'];logger[_0x03f4('0x39')](_0x03f4('0x52'),_0x46a2cc['uniqueid'],util['inspect']({'destaccountcode':this[_0x03f4('0x1b')][_0x46a2cc[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x47')],'destconnectedlinenum':_0x46a2cc[_0x03f4('0x40')]},{'showHidden':![],'depth':null}));this[_0x03f4('0x34')](util[_0x03f4('0x4d')](_0x03f4('0x44'),this[_0x03f4('0x1b')][_0x46a2cc[_0x03f4('0x3e')]['split']('-')[0x0]][_0x03f4('0x45')]),_0x03f4('0x46'),{'destaccountcode':this[_0x03f4('0x1b')][_0x46a2cc[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x47')],'destconnectedlinenum':_0x46a2cc[_0x03f4('0x40')]});}}}}}}}catch(_0x36f889){logger['error'](_0x03f4('0x53'),_0x46a2cc[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x36f889,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0x1c')]=function(_0x12268d){try{if(this[_0x03f4('0x32')](_0x12268d)){logger[_0x03f4('0x39')](_0x03f4('0x54'),_0x12268d[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x12268d,{'showHidden':![],'depth':null}));if(_0x12268d['uniqueid']===_0x12268d[_0x03f4('0x3a')]&&_0x12268d[_0x03f4('0x40')]!='h'&&_0x12268d[_0x03f4('0x3e')]!='OutgoingSpoolFailed'){_0x12268d[_0x03f4('0x55')]=_0x12268d[_0x03f4('0x55')]['toLowerCase']();_0x12268d[_0x03f4('0x56')]=_0x12268d[_0x03f4('0x57')]&&_0x12268d[_0x03f4('0x57')][_0x03f4('0x58')]('CDR(routeAlias)')?_0x12268d[_0x03f4('0x57')]:(_0x12268d[_0x03f4('0x57')]||_0x12268d[_0x03f4('0x56')])[_0x03f4('0x59')]();logger['info'](_0x03f4('0x5a'),_0x12268d[_0x03f4('0x36')],_0x12268d[_0x03f4('0x55')],_0x12268d[_0x03f4('0x56')]);if(_['isUndefined'](this[_0x03f4('0x1a')][_0x12268d['uniqueid']])){this[_0x03f4('0x1a')][_0x12268d['uniqueid']]=new Channel();this['channels'][_0x12268d['uniqueid']][_0x03f4('0x4c')]=_0x12268d[_0x03f4('0x5b')]?moment()[_0x03f4('0x5c')](moment['duration'](_0x12268d['duration'])[_0x03f4('0x5d')](),_0x03f4('0x5d'))['format'](_0x03f4('0x4e')):moment()[_0x03f4('0x4d')](_0x03f4('0x4e'));this['channels'][_0x12268d[_0x03f4('0x36')]][_0x03f4('0x5e')]=_0x03f4('0x14');}_[_0x03f4('0x5f')](this[_0x03f4('0x1a')][_0x12268d[_0x03f4('0x36')]],_[_0x03f4('0x51')](_0x12268d,_[_0x03f4('0x3b')](this[_0x03f4('0x1a')][_0x12268d['uniqueid']])));if(_[_0x03f4('0x60')](applications,_0x12268d[_0x03f4('0x55')])){this[_0x03f4('0x1a')][_0x12268d[_0x03f4('0x36')]][_0x03f4('0x61')]=_0x12268d[_0x03f4('0x55')];this['channels'][_0x12268d['uniqueid']]['lastdata']=_0x12268d[_0x03f4('0x56')];if(_0x12268d['application']===_0x03f4('0x10')&&_[_0x03f4('0x58')](_0x12268d[_0x03f4('0x56')][_0x03f4('0x59')](),_0x03f4('0x62'))){var _0x2a5dd6=_0x12268d['applicationdata'][_0x03f4('0x3f')]('=');var _0x181b7e=_0x2a5dd6[0x0][_0x03f4('0x59')]()[_0x03f4('0x63')](/cdr\((.*)\)/);if(_0x181b7e){this['channels'][_0x12268d['uniqueid']][_0x181b7e[0x1]]=_0x2a5dd6[0x1];}}else if(_0x12268d[_0x03f4('0x55')]===_0x03f4('0x64')){this[_0x03f4('0x1a')][_0x12268d['uniqueid']][_0x03f4('0x64')]=_0x12268d[_0x03f4('0x56')][_0x03f4('0x3f')](',')[0x0];}}}}}catch(_0x4e34d0){logger[_0x03f4('0x2e')](_0x03f4('0x65'),_0x12268d['uniqueid'],util[_0x03f4('0x30')](_0x4e34d0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')]['syncNewState']=function(_0x413f63){try{if(this['isNotNull'](_0x413f63)){logger[_0x03f4('0x2c')](_0x03f4('0x66'),_0x413f63['uniqueid'],_0x413f63[_0x03f4('0x3a')],_0x413f63['calleridname'],_0x413f63[_0x03f4('0x38')]);logger[_0x03f4('0x39')](_0x03f4('0x67'),_0x413f63[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x413f63,{'showHidden':![],'depth':null}));if(_0x413f63[_0x03f4('0x36')]!==_0x413f63['linkedid']){if(this[_0x03f4('0x1a')][_0x413f63['linkedid']]){if(_0x413f63[_0x03f4('0x50')]==='6'){if(!this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]][_0x03f4('0x68')]){var _0x381279=moment();this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]]['answered']=!![];this[_0x03f4('0x1a')][_0x413f63['linkedid']][_0x03f4('0x69')]=_0x381279[_0x03f4('0x4d')](_0x03f4('0x4e'));if(this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]][_0x03f4('0x4c')]){this['channels'][_0x413f63['linkedid']][_0x03f4('0x6a')]=_0x381279[_0x03f4('0x6b')](this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]]['starttime'],_0x03f4('0x5d'));}}this[_0x03f4('0x1a')][_0x413f63['linkedid']][_0x03f4('0x3a')]=_0x413f63[_0x03f4('0x36')];if(_0x413f63[_0x03f4('0x38')]!==_0x03f4('0x41')){this[_0x03f4('0x1a')][_0x413f63['linkedid']]['connectedlinenum']=_0x413f63[_0x03f4('0x38')];}this['channels'][_0x413f63['linkedid']][_0x03f4('0x6c')]=_0x413f63[_0x03f4('0x37')];this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]][_0x03f4('0x6d')]=_0x413f63[_0x03f4('0x3e')];this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]][_0x03f4('0x5e')]=dispositions[_['toNumber'](_0x413f63[_0x03f4('0x50')])];if(this['agents'][_0x413f63[_0x03f4('0x3e')]['split']('-')[0x0]]){this['channels'][_0x413f63['linkedid']][_0x03f4('0x6e')]=this[_0x03f4('0x1b')][_0x413f63['channel'][_0x03f4('0x3f')]('-')[0x0]]['id'];this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]]['membername']=this[_0x03f4('0x1b')][_0x413f63[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x45')];}}}}else{if(this[_0x03f4('0x1a')][_0x413f63['uniqueid']]){if(_0x413f63[_0x03f4('0x50')]==='6'){if(this[_0x03f4('0x1b')][_0x413f63['channel'][_0x03f4('0x3f')]('-')[0x0]]){this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x36')]][_0x03f4('0x6e')]=this[_0x03f4('0x1b')][_0x413f63['channel'][_0x03f4('0x3f')]('-')[0x0]]['id'];this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x36')]][_0x03f4('0x6f')]=this[_0x03f4('0x1b')][_0x413f63[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x45')];}}}}if(_0x413f63[_0x03f4('0x50')]==='6'&&_0x413f63[_0x03f4('0x3c')]===_0x03f4('0x3d')){if(this['agents'][_0x413f63['channel'][_0x03f4('0x3f')]('-')[0x0]]){this['agents'][_0x413f63['channel'][_0x03f4('0x3f')]('-')[0x0]]['destconnectedlinenum']=_0x413f63['exten'];var _0x4c354d;if(this[_0x03f4('0x1a')][_0x413f63['uniqueid']])_0x4c354d=this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x36')]][_0x03f4('0x70')];else if(this['channels'][_0x413f63['linkedid']])_0x4c354d=this[_0x03f4('0x1a')][_0x413f63[_0x03f4('0x3a')]][_0x03f4('0x70')];logger[_0x03f4('0x39')](_0x03f4('0x71'),_0x413f63[_0x03f4('0x36')],util[_0x03f4('0x30')]({'destaccountcode':this[_0x03f4('0x1b')][_0x413f63[_0x03f4('0x3e')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x413f63[_0x03f4('0x40')],'routealias':_0x4c354d},{'showHidden':![],'depth':null}));this[_0x03f4('0x34')](util['format'](_0x03f4('0x44'),this[_0x03f4('0x1b')][_0x413f63[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x45')]),'user:agentconnect',{'destaccountcode':this[_0x03f4('0x1b')][_0x413f63[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x413f63[_0x03f4('0x40')],'routealias':_0x4c354d});}}}}catch(_0x24408b){logger[_0x03f4('0x2e')](_0x03f4('0x72'),_0x413f63[_0x03f4('0x36')],util['inspect'](_0x24408b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0x73')]=function(_0x42719a,_0x150228){try{if(this[_0x03f4('0x1a')][_0x42719a]){logger[_0x03f4('0x2c')](_0x03f4('0x74'),_0x42719a,_0x150228);this['channels'][_0x42719a][_0x03f4('0x75')]=!![];if(_[_0x03f4('0x76')](_0x150228,_0x03f4('0x77'))){_0x150228=_0x150228[_0x03f4('0x78')](_0x03f4('0x77'),_0x03f4('0x79'));}this['channels'][_0x42719a][_0x03f4('0x7a')]=_0x150228;var _0x32084e=_[_0x03f4('0x7b')](this[_0x03f4('0x1a')][_0x42719a][_0x03f4('0x7c')],{'filename':_0x150228});if(_[_0x03f4('0x7d')](_0x32084e)){this[_0x03f4('0x1a')][_0x42719a][_0x03f4('0x7c')][_0x03f4('0x7e')]({'filename':_0x150228,'createdAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':'rec'});}}}catch(_0x1b2059){logger[_0x03f4('0x2e')](_0x03f4('0x7f'),_0x42719a,util[_0x03f4('0x30')](_0x1b2059,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')]['syncVarSet']=function(_0x25f840){try{if(this[_0x03f4('0x32')](_0x25f840)){logger[_0x03f4('0x39')](_0x03f4('0x80'),_0x25f840[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x25f840,{'showHidden':![],'depth':null}));if(this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x36')]]&&_0x25f840['channel']!='OutgoingSpoolFailed'){if(this[_0x03f4('0x32')](_0x25f840[_0x03f4('0x81')])){if(this[_0x03f4('0x32')](_0x25f840['variable'][_0x03f4('0x82')])){logger[_0x03f4('0x2c')](_0x03f4('0x83'),_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x73')](_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);}else if(this['isNotNull'](_0x25f840[_0x03f4('0x81')][_0x03f4('0x85')])){logger[_0x03f4('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840['uniqueid']][_0x03f4('0x38')]=_0x25f840[_0x03f4('0x84')];}else if(this['isNotNull'](_0x25f840['variable'][_0x03f4('0x86')])){logger[_0x03f4('0x2c')](_0x03f4('0x87'),_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x36')]][_0x03f4('0x88')]=_0x25f840[_0x03f4('0x84')];}else if(this[_0x03f4('0x32')](_0x25f840[_0x03f4('0x81')][_0x03f4('0x89')])){logger[_0x03f4('0x2c')](_0x03f4('0x8a'),_0x25f840['uniqueid'],_0x25f840['value']);this['channels'][_0x25f840['uniqueid']][_0x03f4('0x8b')]=_0x25f840[_0x03f4('0x84')];}else if(this['isNotNull'](_0x25f840['variable'][_0x03f4('0x8c')])){logger[_0x03f4('0x2c')](_0x03f4('0x8d'),_0x25f840[_0x03f4('0x36')],_0x25f840['value'][_0x03f4('0x3f')](',')[0x0]);this['channels'][_0x25f840[_0x03f4('0x36')]][_0x03f4('0x64')]=_0x25f840[_0x03f4('0x84')]['split'](',')[0x0];}else if(this[_0x03f4('0x32')](_0x25f840[_0x03f4('0x81')][_0x03f4('0x8e')])){logger[_0x03f4('0x2c')](_0x03f4('0x8f'),_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840['uniqueid']][_0x03f4('0x90')]=_0x25f840['value'];}else if(this['isNotNull'](_0x25f840[_0x03f4('0x81')][_0x03f4('0x91')])){logger['info'](_0x03f4('0x92'),_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x36')]]['destination']=_0x25f840['value'];}else if(this['isNotNull'](_0x25f840[_0x03f4('0x81')][_0x03f4('0x93')])){logger[_0x03f4('0x2c')](_0x03f4('0x94'),_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x36')]][_0x03f4('0x95')]=_0x25f840[_0x03f4('0x84')];}else if(this['isNotNull'](_0x25f840['variable'][_0x03f4('0x96')])){logger['info'](_0x03f4('0x97'),_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x36')]]['queue']=_0x25f840[_0x03f4('0x84')];}else if(this['isNotNull'](_0x25f840[_0x03f4('0x81')]['sipcallid'])){logger[_0x03f4('0x2c')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x25f840[_0x03f4('0x36')],_0x25f840[_0x03f4('0x84')]);this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x36')]][_0x03f4('0x98')]=_0x25f840['value'];}}}else if(this[_0x03f4('0x32')](_0x25f840['variable'][_0x03f4('0x82')])){if(_0x25f840[_0x03f4('0x84')]){var _0x97e69d=path[_0x03f4('0x99')](_0x25f840['value'])['name'];logger['info'](_0x03f4('0x83'),_0x97e69d,_0x25f840[_0x03f4('0x84')]);this['syncMixMonitorFilename'](_0x97e69d,_0x25f840['value']);}}else if(this[_0x03f4('0x1a')][_0x25f840['linkedid']]){if(this[_0x03f4('0x32')](_0x25f840[_0x03f4('0x81')])){if(this[_0x03f4('0x32')](_0x25f840[_0x03f4('0x81')][_0x03f4('0x9a')])){logger[_0x03f4('0x2c')](_0x03f4('0x9b'),_0x25f840[_0x03f4('0x3a')],_0x25f840['value']);this[_0x03f4('0x1a')][_0x25f840[_0x03f4('0x3a')]]['sipcalllinkedid']=_0x25f840['value'];}}}}}catch(_0x4ffd9f){logger[_0x03f4('0x2e')](_0x03f4('0x9c'),_0x25f840['uniqueid'],util[_0x03f4('0x30')](_0x4ffd9f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')]['syncHangup']=function(_0x350b70){try{if(this[_0x03f4('0x32')](_0x350b70)){logger[_0x03f4('0x39')](_0x03f4('0x9d'),_0x350b70[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x350b70,{'showHidden':![],'depth':null}));if(this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x350b70[_0x03f4('0x36')],_0x350b70['cause-txt']);var _0x3e12e5=moment();this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]]['endtime']=_0x3e12e5['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x5b')]=_0x3e12e5[_0x03f4('0x6b')](this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x4c')],'seconds');if(this[_0x03f4('0x1a')][_0x350b70['uniqueid']][_0x03f4('0x68')]){this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x9e')]=_0x3e12e5[_0x03f4('0x6b')](this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x69')],_0x03f4('0x5d'));this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]]['holdtime']=this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x5b')]-this[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x9e')];}if(_0x350b70[_0x03f4('0x3c')]===_0x03f4('0x3d')){if(this[_0x03f4('0x1b')][_0x350b70[_0x03f4('0x3e')]['split']('-')[0x0]]){this['agents'][_0x350b70[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]]=_[_0x03f4('0x9f')](this[_0x03f4('0x1b')][_0x350b70[_0x03f4('0x3e')]['split']('-')[0x0]],[_0x03f4('0x42')]);logger['debug'](_0x03f4('0xa0'),_0x350b70[_0x03f4('0x36')],util[_0x03f4('0x30')]({'id':this['agents'][_0x350b70['channel'][_0x03f4('0x3f')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x350b70[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]][_0x03f4('0x47')]},{'showHidden':![],'depth':null}));this[_0x03f4('0x34')](util[_0x03f4('0x4d')](_0x03f4('0x44'),this[_0x03f4('0x1b')][_0x350b70[_0x03f4('0x3e')]['split']('-')[0x0]]['name']),_0x03f4('0xa1'),{'id':this[_0x03f4('0x1b')][_0x350b70['channel'][_0x03f4('0x3f')]('-')[0x0]]['id'],'destaccountcode':this[_0x03f4('0x1b')][_0x350b70[_0x03f4('0x3e')][_0x03f4('0x3f')]('-')[0x0]]['accountcode']});}}var _0xc33cc=this;Promise[_0x03f4('0xa2')]()[_0x03f4('0xa3')](function(){var _0x4ced54=_0xc33cc[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]];if(typeof _0x4ced54['transferType']==='undefined')return;if(_[_0x03f4('0xa4')](_0x4ced54[_0x03f4('0x7c')]))return;return RpcSetting['getSettings']()[_0x03f4('0xa3')](function(_0x44482e){if(!_0x44482e[_0x03f4('0xa5')])return;return Promise['resolve']()[_0x03f4('0xa3')](function(){return ami[_0x03f4('0xa6')]({'action':_0x03f4('0xa7'),'channel':_0x4ced54[_0x03f4('0x3e')]})['catch'](function(){});})[_0x03f4('0xa3')](function(){return ami[_0x03f4('0xa6')]({'action':_0x03f4('0xa7'),'channel':_0x4ced54[_0x03f4('0x6d')]})[_0x03f4('0xa8')](function(){})[_0x03f4('0xa9')](function(){var _0x23d2a6=_0xc33cc[_0x03f4('0x1b')][_0x4ced54[_0x03f4('0x6d')]['split']('-')[0x0]];if(!_0x23d2a6)return;io[_0x03f4('0x34')]('webbar:stopmonitors',{'agentId':_0x23d2a6['id'],'uniqueid':_0x4ced54[_0x03f4('0x36')]});});});});})['then'](function(){if(_0x350b70[_0x03f4('0xaa')]===_0x03f4('0xab')){_0xc33cc[_0x03f4('0xac')][_0x350b70[_0x03f4('0x36')]]=_0xc33cc[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]];}else{if(_0xc33cc[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x8b')]===_0x03f4('0xad')&&_0xc33cc['blindTransfers'][_0x350b70['uniqueid']]){_0xc33cc['channels'][_0x350b70[_0x03f4('0x36')]][_0x03f4('0x36')]=[_0xc33cc[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]]['linkedid'],_0xc33cc['channels'][_0x350b70['uniqueid']][_0x03f4('0x3a')]=_0xc33cc[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]]['uniqueid']][0x0];delete _0xc33cc[_0x03f4('0xac')][_0x350b70[_0x03f4('0x36')]];}}logger[_0x03f4('0x39')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x350b70[_0x03f4('0x36')],util[_0x03f4('0x30')](_0xc33cc['channels'][_0x350b70['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x03f4('0x34')](_0x03f4('0xae'),_0xc33cc['channels'][_0x350b70[_0x03f4('0x36')]]);delete _0xc33cc[_0x03f4('0x1a')][_0x350b70[_0x03f4('0x36')]];});}}}catch(_0x424d01){logger[_0x03f4('0x2e')](_0x03f4('0xaf'),_0x350b70['uniqueid'],util[_0x03f4('0x30')](_0x424d01,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0x28')]=function(_0x397d3d){try{if(this[_0x03f4('0x32')](_0x397d3d)){logger[_0x03f4('0x2c')](_0x03f4('0xb0'),_0x397d3d[_0x03f4('0x36')],_0x397d3d[_0x03f4('0xb1')],_0x397d3d[_0x03f4('0xb2')]);logger['debug'](_0x03f4('0xb3'),_0x397d3d[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x397d3d,{'showHidden':![],'depth':null}));if(this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb4')]]){this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb4')]]['transfercalleridnum']=_0x397d3d[_0x03f4('0xb1')];this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb4')]][_0x03f4('0xb5')]=_0x397d3d[_0x03f4('0xb2')];if(this['channels'][_0x397d3d[_0x03f4('0xb6')]]){var _0x58de5e=this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb6')]];this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb6')]]=this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb4')]];this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb4')]]=_0x58de5e;}}else if(this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb7')]]){this['channels'][_0x397d3d['transfertargetuniqueid']]['transfercalleridnum']=_0x397d3d['origtransferercalleridnum'];this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb7')]][_0x03f4('0xb5')]=_0x397d3d[_0x03f4('0xb2')];if(this['channels'][_0x397d3d['origtransfereruniqueid']]){var _0x58de5e=this['channels'][_0x397d3d['origtransfereruniqueid']];this[_0x03f4('0x1a')][_0x397d3d['origtransfereruniqueid']]=this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb7')]];this['channels'][_0x397d3d[_0x03f4('0xb7')]]=_0x58de5e;}}if((this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb8')]]||this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb9')]])&&this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb6')]]){var _0x167e24=_[_0x03f4('0xba')]([this['channels'][_0x397d3d[_0x03f4('0xb8')]],this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb9')]],this['channels'][_0x397d3d[_0x03f4('0xb6')]]],function(_0x172f06){return _0x172f06&&_0x172f06[_0x03f4('0x8b')]===_0x03f4('0xad')&&_0x172f06['routeid'];});if(_0x167e24){if(this[_0x03f4('0x1a')][_0x397d3d[_0x03f4('0xb8')]])this[_0x03f4('0x1a')][_0x397d3d['origtransfereruniqueid']][_0x03f4('0xbb')]=_0x03f4('0xbc');if(this['channels'][_0x397d3d['origtransfererlinkedid']])this[_0x03f4('0x1a')][_0x397d3d['origtransfererlinkedid']][_0x03f4('0xbb')]=_0x03f4('0xbc');this[_0x03f4('0x1a')][_0x397d3d['secondtransfereruniqueid']][_0x03f4('0xbb')]=_0x03f4('0xbc');}}}}catch(_0x314e3c){logger['error'](_0x03f4('0xbd'),_0x397d3d['uniqueid'],util[_0x03f4('0x30')](_0x314e3c,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x03f4('0x2a')]=function(_0x5244c1){try{if(this[_0x03f4('0x32')](_0x5244c1)){logger[_0x03f4('0x2c')](_0x03f4('0xbe'),_0x5244c1[_0x03f4('0x36')],_0x5244c1[_0x03f4('0xbf')],_0x5244c1[_0x03f4('0xc0')]);logger['debug'](_0x03f4('0xc1'),_0x5244c1[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x5244c1,{'showHidden':![],'depth':null}));if(this[_0x03f4('0x1a')][_0x5244c1['transfereeuniqueid']]){this[_0x03f4('0x1a')][_0x5244c1[_0x03f4('0xb4')]][_0x03f4('0xc2')]=_0x5244c1['transfereecalleridnum'];this[_0x03f4('0x1a')][_0x5244c1[_0x03f4('0xb4')]][_0x03f4('0xb5')]=_0x5244c1[_0x03f4('0xc0')];this[_0x03f4('0x1a')][_0x5244c1[_0x03f4('0xb4')]][_0x03f4('0xbb')]=_0x03f4('0xc3');this[_0x03f4('0xc4')]({'event':_0x03f4('0xab'),'uniqueid':_0x5244c1[_0x03f4('0xb4')],'context':_0x5244c1[_0x03f4('0x3c')],'channel':_0x5244c1[_0x03f4('0xc5')]});}else{this[_0x03f4('0x1a')][_0x5244c1[_0x03f4('0xc6')]][_0x03f4('0xbb')]=_0x03f4('0xc3');}}}catch(_0x5a3310){logger[_0x03f4('0x2e')](_0x03f4('0xc7'),_0x5244c1[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x5a3310,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0xc8')]=function(_0x2a940d){try{if(this[_0x03f4('0x32')](_0x2a940d)){logger[_0x03f4('0x39')](_0x03f4('0xc9'),_0x2a940d[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x2a940d,{'showHidden':![],'depth':null}));if(this[_0x03f4('0x1a')][_0x2a940d[_0x03f4('0x36')]]){if(!_[_0x03f4('0x7d')](this[_0x03f4('0x1a')][_0x2a940d[_0x03f4('0x36')]][_0x03f4('0x69')])){this['channels'][_0x2a940d[_0x03f4('0x36')]][_0x03f4('0xca')]=moment()[_0x03f4('0x4d')](_0x03f4('0x4e'));logger['info'](_0x03f4('0xcb'),_0x2a940d['uniqueid'],this[_0x03f4('0x1a')][_0x2a940d[_0x03f4('0x36')]]['mohstarttime']);}}}}catch(_0x4b3930){logger[_0x03f4('0x2e')](_0x03f4('0xcc'),_0x2a940d[_0x03f4('0x36')],util[_0x03f4('0x30')](_0x4b3930,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x03f4('0x31')][_0x03f4('0xcd')]=function(_0xdcd37a){try{if(this[_0x03f4('0x32')](_0xdcd37a)){logger[_0x03f4('0x39')](_0x03f4('0xce'),_0xdcd37a['uniqueid'],util[_0x03f4('0x30')](_0xdcd37a,{'showHidden':![],'depth':null}));if(this[_0x03f4('0x1a')][_0xdcd37a['uniqueid']]){if(!_[_0x03f4('0x7d')](this[_0x03f4('0x1a')][_0xdcd37a[_0x03f4('0x36')]]['mohstarttime'])){this[_0x03f4('0x1a')][_0xdcd37a[_0x03f4('0x36')]][_0x03f4('0xcf')]+=moment()[_0x03f4('0xd0')](0x0)['diff'](this[_0x03f4('0x1a')][_0xdcd37a[_0x03f4('0x36')]][_0x03f4('0xca')],_0x03f4('0x5d'));logger[_0x03f4('0x2c')](_0x03f4('0xd1'),_0xdcd37a[_0x03f4('0x36')],this[_0x03f4('0x1a')][_0xdcd37a[_0x03f4('0x36')]]['mohtime']);delete this[_0x03f4('0x1a')][_0xdcd37a[_0x03f4('0x36')]][_0x03f4('0xca')];}}}}catch(_0xe583bb){logger[_0x03f4('0x2e')](_0x03f4('0xd2'),_0xdcd37a[_0x03f4('0x36')],util[_0x03f4('0x30')](_0xe583bb,{'showHidden':![],'depth':null}));}};module[_0x03f4('0xd3')]=VoiceCallReport;
\ No newline at end of file
index 6c54d95..9b46dbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbe9=['lastevent','connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','error','syncVarSet','[%s][voiceDialReport][varset]\x20event:','keys','variable','value','outboundrouteid','isUndefined','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','YYYY-MM-DD\x20HH:mm:ss','duration','endtime','diff','starttime','complete','total','holdtime','seconds','billableseconds','sumBillable','sumDuration','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','syncDialEnd','varset','syncNewExten','hangup','syncHangup','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','channel','substring','lastIndexOf','omit','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinename','answertime','format'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdbe9,0xb8));var _0x9dbe=function(_0x59460d,_0x1ae866){_0x59460d=_0x59460d-0x0;var _0x4d9ba7=_0xdbe9[_0x59460d];return _0x4d9ba7;};'use strict';var _=require(_0x9dbe('0x0'));var moment=require(_0x9dbe('0x1'));var util=require(_0x9dbe('0x2'));var Redis=require(_0x9dbe('0x3'));var config=require(_0x9dbe('0x4'));var logger=require(_0x9dbe('0x5'))(_0x9dbe('0x6'));var ami=require(_0x9dbe('0x7'));config[_0x9dbe('0x8')]=_[_0x9dbe('0x9')](config[_0x9dbe('0x8')],{'host':_0x9dbe('0xa'),'port':0x18eb});var io=require(_0x9dbe('0xb'))(new Redis(config[_0x9dbe('0x8')]));function VoiceDialReport(_0x14d34f){this[_0x9dbe('0xc')]=_0x14d34f[_0x9dbe('0xd')];this[_0x9dbe('0xe')]=_0x14d34f[_0x9dbe('0xe')];this[_0x9dbe('0xf')]={};this[_0x9dbe('0x10')]={};ami['on'](_0x9dbe('0x11'),this[_0x9dbe('0x12')][_0x9dbe('0x13')](this));ami['on']('dialend',this[_0x9dbe('0x14')][_0x9dbe('0x13')](this));ami['on'](_0x9dbe('0x15'),this['syncVarSet'][_0x9dbe('0x13')](this));ami['on']('newexten',this[_0x9dbe('0x16')][_0x9dbe('0x13')](this));ami['on'](_0x9dbe('0x17'),this[_0x9dbe('0x18')][_0x9dbe('0x13')](this));}VoiceDialReport[_0x9dbe('0x19')]['isNotNull']=function(_0x30634e){return _0x30634e!==null&&!_['isUndefined'](_0x30634e);};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x1a')]=function(_0xa3867d,_0x35176b,_0x41d886){io['to'](_0xa3867d)['emit'](_0x35176b,_0x41d886);};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x12')]=function(_0x35b1af){try{if(this[_0x9dbe('0x1b')](_0x35b1af)){logger[_0x9dbe('0x1c')](_0x9dbe('0x1d'),_0x35b1af[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x35b1af,{'showHidden':![],'depth':null}));if(this[_0x9dbe('0xc')][_0x35b1af['uniqueid']]){_[_0x9dbe('0x20')](this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x35b1af[_0x9dbe('0x21')][_0x9dbe('0x22')](0x0,_0x35b1af['channel']['lastIndexOf']('-')),'membername':_0x35b1af[_0x9dbe('0x21')][_0x9dbe('0x22')](_0x35b1af['channel'][_0x9dbe('0x23')]('/')+0x1,_0x35b1af[_0x9dbe('0x21')][_0x9dbe('0x23')]('-'))},_[_0x9dbe('0x24')](_0x35b1af,['event',_0x9dbe('0x25')]));logger[_0x9dbe('0x26')](_0x9dbe('0x27'),_0x35b1af[_0x9dbe('0x1e')],this['channels'][_0x35b1af[_0x9dbe('0x1e')]][_0x9dbe('0x28')],this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]][_0x9dbe('0x29')]);logger[_0x9dbe('0x1c')](_0x9dbe('0x2a'),_0x35b1af[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x35b1af['uniqueid']])_[_0x9dbe('0x20')](this[_0x9dbe('0xc')][_0x35b1af['uniqueid']],this['applications'][_0x35b1af[_0x9dbe('0x1e')]]);this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),'voice_outbound_channel:save',this['channels'][_0x35b1af[_0x9dbe('0x1e')]]);logger[_0x9dbe('0x1c')](_0x9dbe('0x2c'),_0x35b1af[_0x9dbe('0x1e')],util['inspect'](this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x9dbe('0x1a')](_0x9dbe('0x2d'),this[_0x9dbe('0xc')][_0x35b1af['uniqueid']]);}}}catch(_0x28e98a){logger['error']('[%s][voiceDialReport][dialbegin]',_0x35b1af[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x28e98a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x14')]=function(_0xba29b){try{if(this[_0x9dbe('0x1b')](_0xba29b)){logger[_0x9dbe('0x1c')](_0x9dbe('0x2e'),_0xba29b[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0xba29b,{'showHidden':![],'depth':null}));if(this[_0x9dbe('0xc')][_0xba29b['uniqueid']]){this[_0x9dbe('0xc')][_0xba29b[_0x9dbe('0x1e')]][_0x9dbe('0x2f')]=_0xba29b[_0x9dbe('0x2f')];if(_0xba29b[_0x9dbe('0x2f')]===_0x9dbe('0x30')){this['channels'][_0xba29b['uniqueid']]['connectedlinenum']=_0xba29b['connectedlinenum'];this['channels'][_0xba29b[_0x9dbe('0x1e')]][_0x9dbe('0x31')]=_0xba29b['connectedlinename'];this[_0x9dbe('0xc')][_0xba29b[_0x9dbe('0x1e')]][_0x9dbe('0x32')]=moment()[_0x9dbe('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9dbe('0xc')][_0xba29b['uniqueid']][_0x9dbe('0x34')]=_0x9dbe('0x35');logger[_0x9dbe('0x26')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0xba29b[_0x9dbe('0x1e')],_0xba29b['channel'][_0x9dbe('0x22')](_0xba29b[_0x9dbe('0x21')]['lastIndexOf']('/')+0x1,_0xba29b['channel']['lastIndexOf']('-')));logger[_0x9dbe('0x1c')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0xba29b[_0x9dbe('0x1e')],util['inspect'](this['channels'][_0xba29b[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0x9dbe('0x36'),this['channels'][_0xba29b[_0x9dbe('0x1e')]]);}logger[_0x9dbe('0x1c')](_0x9dbe('0x37'),_0xba29b[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xba29b[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0x9dbe('0x38'),this[_0x9dbe('0xc')][_0xba29b['uniqueid']]);}}}catch(_0x4c35bb){logger[_0x9dbe('0x39')]('[%s][voiceDialReport][dialend]',_0xba29b[_0x9dbe('0x1e')],util['inspect'](_0x4c35bb,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x9dbe('0x3a')]=function(_0x52ee61){try{if(this[_0x9dbe('0x1b')](_0x52ee61)){logger[_0x9dbe('0x1c')](_0x9dbe('0x3b'),_0x52ee61['uniqueid'],util[_0x9dbe('0x1f')](_0x52ee61,{'showHidden':![],'depth':null}));this['addVariable'](_0x52ee61[_0x9dbe('0x1e')],_[_0x9dbe('0x3c')](_0x52ee61[_0x9dbe('0x3d')])[0x0],_0x52ee61[_0x9dbe('0x3e')]);if(this[_0x9dbe('0x1b')](_0x52ee61[_0x9dbe('0x3d')])&&this[_0x9dbe('0x1b')](_0x52ee61[_0x9dbe('0x3d')][_0x9dbe('0x3f')])){if(_[_0x9dbe('0x40')](this[_0x9dbe('0xc')][_0x52ee61[_0x9dbe('0x1e')]])){this[_0x9dbe('0xc')][_0x52ee61[_0x9dbe('0x1e')]]={'routeId':_0x52ee61[_0x9dbe('0x3e')],'variables':this[_0x9dbe('0x10')][_0x52ee61[_0x9dbe('0x1e')]]};logger[_0x9dbe('0x26')](_0x9dbe('0x41'),_0x52ee61['uniqueid'],_0x52ee61[_0x9dbe('0x3d')]['outboundrouteid'],_[_0x9dbe('0x3c')](_0x52ee61['variable'])[0x0],_0x52ee61[_0x9dbe('0x3e')]);logger[_0x9dbe('0x1c')](_0x9dbe('0x42'),_0x52ee61[_0x9dbe('0x1e')],util['inspect'](this[_0x9dbe('0xc')][_0x52ee61[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),_0x9dbe('0x38'),this[_0x9dbe('0xc')][_0x52ee61['uniqueid']]);}}}}catch(_0x3a8d2d){logger['error']('[%s][voiceDialReport][varset]',_0x52ee61[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x3a8d2d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x43')]=function(_0x1ea4ea,_0x303ba2,_0x4b4fc9){var _0x257ea9=[_0x9dbe('0x44'),_0x9dbe('0x45'),'rtpaudioqosjitter',_0x9dbe('0x46'),_0x9dbe('0x47'),'rtpaudioqoslossbridged',_0x9dbe('0x48'),'rtpaudioqosrttbridged',_0x9dbe('0x49'),'sipuri',_0x9dbe('0x4a'),_0x9dbe('0x4b'),_0x9dbe('0x4c'),_0x9dbe('0x4d'),_0x9dbe('0x4e'),_0x9dbe('0x4f'),'membername',_0x9dbe('0x50'),_0x9dbe('0x51')];if(!_[_0x9dbe('0x52')](_0x303ba2)&&!_[_0x9dbe('0x53')](_0x257ea9,_0x303ba2)){if(_[_0x9dbe('0x40')](this[_0x9dbe('0x10')][_0x1ea4ea])){this['variables'][_0x1ea4ea]={};}this['variables'][_0x1ea4ea][_0x303ba2]=_0x4b4fc9;}};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x18')]=function(_0xd72d5){try{if(this[_0x9dbe('0x1b')](_0xd72d5)){logger[_0x9dbe('0x1c')](_0x9dbe('0x54'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0xd72d5,{'showHidden':![],'depth':null}));if(this['channels'][_0xd72d5[_0x9dbe('0x1e')]]){logger[_0x9dbe('0x26')](_0x9dbe('0x55'),_0xd72d5[_0x9dbe('0x1e')],_0xd72d5[_0x9dbe('0x56')]);this[_0x9dbe('0xc')][_0xd72d5['uniqueid']]['endtime']=moment()[_0x9dbe('0x33')](_0x9dbe('0x57'));this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x58')]=moment(this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x59')])[_0x9dbe('0x5a')](this[_0x9dbe('0xc')][_0xd72d5['uniqueid']][_0x9dbe('0x5b')],'seconds');this['channels'][_0xd72d5['uniqueid']][_0x9dbe('0x34')]=_0x9dbe('0x5c');this['outbound'][_0x9dbe('0x5d')]+=0x1;if(this['channels'][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x32')]){this[_0x9dbe('0xe')]['answered']+=0x1;this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x5e')]=moment(this['channels'][_0xd72d5['uniqueid']]['answertime'])[_0x9dbe('0x5a')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x5b')],_0x9dbe('0x5f'));this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x60')]=moment(this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]]['endtime'])[_0x9dbe('0x5a')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x32')],_0x9dbe('0x5f'));this[_0x9dbe('0xe')]['sumHoldTime']+=this['channels'][_0xd72d5[_0x9dbe('0x1e')]]['holdtime']||0x0;this['outbound'][_0x9dbe('0x61')]+=this['channels'][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x60')];}this[_0x9dbe('0xe')][_0x9dbe('0x62')]+=this['channels'][_0xd72d5['uniqueid']][_0x9dbe('0x58')];logger[_0x9dbe('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0xd72d5['uniqueid'],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x9dbe('0x1a')]('custom:voiceDialReport',this['channels'][_0xd72d5[_0x9dbe('0x1e')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x9dbe('0x1a')](_0x9dbe('0x63'),this['channels'][_0xd72d5[_0x9dbe('0x1e')]]);logger[_0x9dbe('0x1c')](_0x9dbe('0x64'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),'voice_outbound:save',this[_0x9dbe('0xe')]);logger[_0x9dbe('0x26')](_0x9dbe('0x65'),JSON[_0x9dbe('0x66')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]]));logger[_0x9dbe('0x1c')](_0x9dbe('0x67'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),_0x9dbe('0x68'),this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]]);delete this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]];}else if(this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x69')]]){this[_0x9dbe('0xc')][_0xd72d5['linkedid']]['uniqueid']=this[_0x9dbe('0xc')][_0xd72d5['linkedid']][_0x9dbe('0x6a')];}if(this[_0x9dbe('0x10')][_0xd72d5[_0x9dbe('0x1e')]]){delete this[_0x9dbe('0x10')][_0xd72d5[_0x9dbe('0x1e')]];}}}catch(_0x361bbb){logger['error'](_0x9dbe('0x6b'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x361bbb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9dbe('0x19')]['syncNewExten']=function(_0x1fe0f7){try{if(this[_0x9dbe('0x1b')](_0x1fe0f7)){logger[_0x9dbe('0x1c')](_0x9dbe('0x6c'),_0x1fe0f7[_0x9dbe('0x1e')],util['inspect'](_0x1fe0f7,{'showHidden':![],'depth':null}));if(_0x1fe0f7[_0x9dbe('0x6d')][_0x9dbe('0x6e')]()===_0x9dbe('0x6f')){_0x1fe0f7[_0x9dbe('0x70')]=(_0x1fe0f7['appdata']||_0x1fe0f7[_0x9dbe('0x70')])['toLowerCase']();if(_['startsWith'](_0x1fe0f7[_0x9dbe('0x70')],_0x9dbe('0x71'))){if(_[_0x9dbe('0x40')](this[_0x9dbe('0xf')][_0x1fe0f7[_0x9dbe('0x1e')]]))this[_0x9dbe('0xf')][_0x1fe0f7[_0x9dbe('0x1e')]]={};logger[_0x9dbe('0x26')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x1fe0f7[_0x9dbe('0x1e')],_0x1fe0f7[_0x9dbe('0x6d')],_0x1fe0f7[_0x9dbe('0x70')]);var _0x18b55e=_0x1fe0f7[_0x9dbe('0x70')][_0x9dbe('0x72')]('=');var _0x13d369=_0x18b55e[0x0][_0x9dbe('0x73')](/cdr\((.*)\)/);if(_0x13d369)this[_0x9dbe('0xf')][_0x1fe0f7['uniqueid']][_0x13d369[0x1]]=_0x18b55e[0x1];}}}}catch(_0x1f66a2){logger[_0x9dbe('0x39')](_0x9dbe('0x74'),_0x1fe0f7['uniqueid'],util[_0x9dbe('0x1f')](_0x1f66a2,{'showHidden':![],'depth':null}));}};module[_0x9dbe('0x75')]=VoiceDialReport;
\ No newline at end of file
+var _0x6916=['linkedid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','exports','util','../../../config/environment','ami','../ami','redis','localhost','channels','outbound','applications','variables','dialbegin','syncDialBegin','dialend','syncDialEnd','varset','bind','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','called','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','inspect','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','format','YYYY-MM-DD\x20HH:mm:ss','connect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','keys','variable','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','seconds','lastevent','complete','total','holdtime','answertime','billableseconds','sumHoldTime','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove'];(function(_0x197df3,_0x57d366){var _0xafdaf7=function(_0x5489b5){while(--_0x5489b5){_0x197df3['push'](_0x197df3['shift']());}};_0xafdaf7(++_0x57d366);}(_0x6916,0x161));var _0x6691=function(_0x2e9dd8,_0x2ea1e9){_0x2e9dd8=_0x2e9dd8-0x0;var _0x6aaa54=_0x6916[_0x2e9dd8];return _0x6aaa54;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x6691('0x0'));var Redis=require('ioredis');var config=require(_0x6691('0x1'));var logger=require('../../../config/logger')(_0x6691('0x2'));var ami=require(_0x6691('0x3'));config[_0x6691('0x4')]=_['defaults'](config[_0x6691('0x4')],{'host':_0x6691('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6691('0x4')]));function VoiceDialReport(_0x3075d5){this[_0x6691('0x6')]=_0x3075d5['outboundChannels'];this[_0x6691('0x7')]=_0x3075d5[_0x6691('0x7')];this[_0x6691('0x8')]={};this[_0x6691('0x9')]={};ami['on'](_0x6691('0xa'),this[_0x6691('0xb')]['bind'](this));ami['on'](_0x6691('0xc'),this[_0x6691('0xd')]['bind'](this));ami['on'](_0x6691('0xe'),this['syncVarSet'][_0x6691('0xf')](this));ami['on'](_0x6691('0x10'),this[_0x6691('0x11')]['bind'](this));ami['on'](_0x6691('0x12'),this[_0x6691('0x13')][_0x6691('0xf')](this));}VoiceDialReport[_0x6691('0x14')][_0x6691('0x15')]=function(_0x217acf){return _0x217acf!==null&&!_[_0x6691('0x16')](_0x217acf);};VoiceDialReport[_0x6691('0x14')]['emit']=function(_0x1df57a,_0x55f421,_0x3ecd92){io['to'](_0x1df57a)[_0x6691('0x17')](_0x55f421,_0x3ecd92);};VoiceDialReport[_0x6691('0x14')]['syncDialBegin']=function(_0x2966ab){try{if(this[_0x6691('0x15')](_0x2966ab)){logger[_0x6691('0x18')](_0x6691('0x19'),_0x2966ab['uniqueid'],util['inspect'](_0x2966ab,{'showHidden':![],'depth':null}));if(this['channels'][_0x2966ab[_0x6691('0x1a')]]){_['merge'](this['channels'][_0x2966ab['uniqueid']],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x6691('0x1b'),'interface':_0x2966ab[_0x6691('0x1c')][_0x6691('0x1d')](0x0,_0x2966ab[_0x6691('0x1c')][_0x6691('0x1e')]('-')),'membername':_0x2966ab[_0x6691('0x1c')][_0x6691('0x1d')](_0x2966ab[_0x6691('0x1c')]['lastIndexOf']('/')+0x1,_0x2966ab['channel'][_0x6691('0x1e')]('-'))},_[_0x6691('0x1f')](_0x2966ab,[_0x6691('0x20'),_0x6691('0x21')]));logger[_0x6691('0x22')](_0x6691('0x23'),_0x2966ab[_0x6691('0x1a')],this[_0x6691('0x6')][_0x2966ab['uniqueid']]['membername'],this[_0x6691('0x6')][_0x2966ab[_0x6691('0x1a')]]['interface']);logger[_0x6691('0x18')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2966ab[_0x6691('0x1a')],util[_0x6691('0x24')](this['channels'][_0x2966ab[_0x6691('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0x6691('0x8')][_0x2966ab[_0x6691('0x1a')]])_['merge'](this[_0x6691('0x6')][_0x2966ab[_0x6691('0x1a')]],this[_0x6691('0x8')][_0x2966ab[_0x6691('0x1a')]]);this[_0x6691('0x17')](_0x6691('0x25'),_0x6691('0x26'),this['channels'][_0x2966ab[_0x6691('0x1a')]]);logger[_0x6691('0x18')](_0x6691('0x27'),_0x2966ab[_0x6691('0x1a')],util[_0x6691('0x24')](this[_0x6691('0x6')][_0x2966ab[_0x6691('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x6691('0x17')](_0x6691('0x28'),this[_0x6691('0x6')][_0x2966ab[_0x6691('0x1a')]]);}}}catch(_0x400446){logger['error'](_0x6691('0x29'),_0x2966ab[_0x6691('0x1a')],util['inspect'](_0x400446,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6691('0x14')][_0x6691('0xd')]=function(_0xcf9721){try{if(this[_0x6691('0x15')](_0xcf9721)){logger[_0x6691('0x18')](_0x6691('0x2a'),_0xcf9721['uniqueid'],util[_0x6691('0x24')](_0xcf9721,{'showHidden':![],'depth':null}));if(this[_0x6691('0x6')][_0xcf9721[_0x6691('0x1a')]]){this[_0x6691('0x6')][_0xcf9721['uniqueid']][_0x6691('0x2b')]=_0xcf9721[_0x6691('0x2b')];if(_0xcf9721[_0x6691('0x2b')]===_0x6691('0x2c')){this[_0x6691('0x6')][_0xcf9721[_0x6691('0x1a')]][_0x6691('0x2d')]=_0xcf9721[_0x6691('0x2d')];this[_0x6691('0x6')][_0xcf9721['uniqueid']][_0x6691('0x2e')]=_0xcf9721[_0x6691('0x2e')];this['channels'][_0xcf9721[_0x6691('0x1a')]]['answertime']=moment()[_0x6691('0x2f')](_0x6691('0x30'));this[_0x6691('0x6')][_0xcf9721['uniqueid']]['lastevent']=_0x6691('0x31');logger[_0x6691('0x22')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0xcf9721[_0x6691('0x1a')],_0xcf9721[_0x6691('0x1c')]['substring'](_0xcf9721[_0x6691('0x1c')][_0x6691('0x1e')]('/')+0x1,_0xcf9721[_0x6691('0x1c')][_0x6691('0x1e')]('-')));logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0xcf9721[_0x6691('0x1a')],util[_0x6691('0x24')](this['channels'][_0xcf9721[_0x6691('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x6691('0x17')]('custom:dialconnect',this[_0x6691('0x6')][_0xcf9721[_0x6691('0x1a')]]);}logger[_0x6691('0x18')](_0x6691('0x32'),_0xcf9721[_0x6691('0x1a')],util['inspect'](this[_0x6691('0x6')][_0xcf9721['uniqueid']],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0x6691('0x26'),this['channels'][_0xcf9721[_0x6691('0x1a')]]);}}}catch(_0x356ff4){logger[_0x6691('0x33')](_0x6691('0x34'),_0xcf9721[_0x6691('0x1a')],util[_0x6691('0x24')](_0x356ff4,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x577cd6){try{if(this[_0x6691('0x15')](_0x577cd6)){logger['debug']('[%s][voiceDialReport][varset]\x20event:',_0x577cd6[_0x6691('0x1a')],util['inspect'](_0x577cd6,{'showHidden':![],'depth':null}));this['addVariable'](_0x577cd6[_0x6691('0x1a')],_[_0x6691('0x35')](_0x577cd6[_0x6691('0x36')])[0x0],_0x577cd6[_0x6691('0x37')]);if(this[_0x6691('0x15')](_0x577cd6[_0x6691('0x36')])&&this[_0x6691('0x15')](_0x577cd6['variable']['outboundrouteid'])){if(_[_0x6691('0x16')](this[_0x6691('0x6')][_0x577cd6['uniqueid']])){this['channels'][_0x577cd6[_0x6691('0x1a')]]={'routeId':_0x577cd6[_0x6691('0x37')],'variables':this['variables'][_0x577cd6['uniqueid']],'motionChannel':_0x6691('0x38')};logger[_0x6691('0x22')](_0x6691('0x39'),_0x577cd6[_0x6691('0x1a')],_0x577cd6[_0x6691('0x36')][_0x6691('0x3a')],_[_0x6691('0x35')](_0x577cd6[_0x6691('0x36')])[0x0],_0x577cd6[_0x6691('0x37')]);logger[_0x6691('0x18')](_0x6691('0x3b'),_0x577cd6['uniqueid'],util[_0x6691('0x24')](this[_0x6691('0x6')][_0x577cd6[_0x6691('0x1a')]],{'showHidden':![],'depth':null}));this[_0x6691('0x17')](_0x6691('0x25'),_0x6691('0x26'),this[_0x6691('0x6')][_0x577cd6[_0x6691('0x1a')]]);}}}}catch(_0x38c2e1){logger[_0x6691('0x33')](_0x6691('0x3c'),_0x577cd6[_0x6691('0x1a')],util[_0x6691('0x24')](_0x38c2e1,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6691('0x14')][_0x6691('0x3d')]=function(_0x287d0a,_0xfb710a,_0x14a4a8){var _0x29556e=[_0x6691('0x3e'),_0x6691('0x3f'),_0x6691('0x40'),_0x6691('0x41'),_0x6691('0x42'),'rtpaudioqoslossbridged',_0x6691('0x43'),_0x6691('0x44'),_0x6691('0x45'),_0x6691('0x46'),_0x6691('0x47'),_0x6691('0x48'),_0x6691('0x49'),_0x6691('0x4a'),_0x6691('0x4b'),_0x6691('0x4c'),_0x6691('0x4d'),_0x6691('0x4e'),_0x6691('0x4f')];if(!_[_0x6691('0x50')](_0xfb710a)&&!_['includes'](_0x29556e,_0xfb710a)){if(_[_0x6691('0x16')](this[_0x6691('0x9')][_0x287d0a])){this[_0x6691('0x9')][_0x287d0a]={};}this[_0x6691('0x9')][_0x287d0a][_0xfb710a]=_0x14a4a8;}};VoiceDialReport[_0x6691('0x14')]['syncHangup']=function(_0x45798b){try{if(this[_0x6691('0x15')](_0x45798b)){logger[_0x6691('0x18')](_0x6691('0x51'),_0x45798b[_0x6691('0x1a')],util[_0x6691('0x24')](_0x45798b,{'showHidden':![],'depth':null}));if(this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]]){logger[_0x6691('0x22')](_0x6691('0x52'),_0x45798b[_0x6691('0x1a')],_0x45798b[_0x6691('0x53')]);this['channels'][_0x45798b[_0x6691('0x1a')]][_0x6691('0x54')]=moment()['format'](_0x6691('0x30'));this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x55')]=moment(this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x54')])[_0x6691('0x56')](this['channels'][_0x45798b[_0x6691('0x1a')]]['starttime'],_0x6691('0x57'));this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x58')]=_0x6691('0x59');this['outbound'][_0x6691('0x5a')]+=0x1;if(this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]]['answertime']){this[_0x6691('0x7')]['answered']+=0x1;this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x5b')]=moment(this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x5c')])[_0x6691('0x56')](this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]]['starttime'],'seconds');this[_0x6691('0x6')][_0x45798b['uniqueid']][_0x6691('0x5d')]=moment(this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x54')])['diff'](this[_0x6691('0x6')][_0x45798b['uniqueid']][_0x6691('0x5c')],_0x6691('0x57'));this[_0x6691('0x7')][_0x6691('0x5e')]+=this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x5b')]||0x0;this[_0x6691('0x7')]['sumBillable']+=this[_0x6691('0x6')][_0x45798b['uniqueid']][_0x6691('0x5d')];}this[_0x6691('0x7')]['sumDuration']+=this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]][_0x6691('0x55')];logger[_0x6691('0x18')](_0x6691('0x5f'),_0x45798b['uniqueid'],util[_0x6691('0x24')](this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0x6691('0x60'),this[_0x6691('0x6')][_0x45798b['uniqueid']]);logger[_0x6691('0x18')](_0x6691('0x61'),_0x45798b[_0x6691('0x1a')],util[_0x6691('0x24')](this[_0x6691('0x6')][_0x45798b['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x6691('0x17')]('custom:dialend',this['channels'][_0x45798b[_0x6691('0x1a')]]);logger[_0x6691('0x18')](_0x6691('0x62'),_0x45798b[_0x6691('0x1a')],util[_0x6691('0x24')](this[_0x6691('0x6')][_0x45798b['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6691('0x25'),_0x6691('0x63'),this['outbound']);logger[_0x6691('0x22')](_0x6691('0x64'),JSON[_0x6691('0x65')](this[_0x6691('0x6')][_0x45798b['uniqueid']]));logger[_0x6691('0x18')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x45798b['uniqueid'],util[_0x6691('0x24')](this['channels'][_0x45798b[_0x6691('0x1a')]],{'showHidden':![],'depth':null}));this[_0x6691('0x17')](_0x6691('0x25'),_0x6691('0x66'),this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]]);delete this[_0x6691('0x6')][_0x45798b[_0x6691('0x1a')]];}else if(this[_0x6691('0x6')][_0x45798b[_0x6691('0x67')]]){this[_0x6691('0x6')][_0x45798b[_0x6691('0x67')]][_0x6691('0x1a')]=this[_0x6691('0x6')][_0x45798b[_0x6691('0x67')]]['destuniqueid'];}if(this[_0x6691('0x9')][_0x45798b[_0x6691('0x1a')]]){delete this[_0x6691('0x9')][_0x45798b[_0x6691('0x1a')]];}}}catch(_0x2f6d67){logger['error'](_0x6691('0x68'),_0x45798b[_0x6691('0x1a')],util[_0x6691('0x24')](_0x2f6d67,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6691('0x14')][_0x6691('0x11')]=function(_0x561578){try{if(this[_0x6691('0x15')](_0x561578)){logger[_0x6691('0x18')](_0x6691('0x69'),_0x561578[_0x6691('0x1a')],util[_0x6691('0x24')](_0x561578,{'showHidden':![],'depth':null}));if(_0x561578[_0x6691('0x6a')][_0x6691('0x6b')]()===_0x6691('0x6c')){_0x561578[_0x6691('0x6d')]=(_0x561578[_0x6691('0x6e')]||_0x561578[_0x6691('0x6d')])[_0x6691('0x6b')]();if(_['startsWith'](_0x561578[_0x6691('0x6d')],'cdr(')){if(_[_0x6691('0x16')](this[_0x6691('0x8')][_0x561578[_0x6691('0x1a')]]))this[_0x6691('0x8')][_0x561578[_0x6691('0x1a')]]={};logger[_0x6691('0x22')](_0x6691('0x6f'),_0x561578['uniqueid'],_0x561578[_0x6691('0x6a')],_0x561578['applicationdata']);var _0x1a7e60=_0x561578[_0x6691('0x6d')][_0x6691('0x70')]('=');var _0x4351de=_0x1a7e60[0x0]['match'](/cdr\((.*)\)/);if(_0x4351de)this['applications'][_0x561578[_0x6691('0x1a')]][_0x4351de[0x1]]=_0x1a7e60[0x1];}}}}catch(_0x4283a0){logger[_0x6691('0x33')]('[%s][voiceDialReport][newexten]',_0x561578['uniqueid'],util['inspect'](_0x4283a0,{'showHidden':![],'depth':null}));}};module[_0x6691('0x71')]=VoiceDialReport;
\ No newline at end of file
index baae33b..bf501f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','merge','pick','push','[%s][voiceQueueReport][queuecallerabandon]','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','queuecallercomplete','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','last','assigned','membername','queuecallerexit','transfer','reason','startsWith','toLowerCase','local/','linkedid','queuecallerexitAt','add','FORWARDTRANSFER','destexten','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','value','variable','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceQueueReport][hangup]','length','abandoned','seconds','milliseconds','diff','sumBillable','queuecallercompleteAt','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transferexten','secondtransfererexten','transferuniqueid','ATTENDEDTRANSFER','transfertype','ATTENDED','secondtransfereruniqueid','transfereeuniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','extension','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','mohtime','[%s][voiceQueueReport][newexten]\x20event:','applicationdata','appdata','cdr(','application','match','exports','lodash','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','bind','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','syncFullyBooted','newexten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','switch','Action','status','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','[%s][voiceQueueReport][','emit','name','voice_queue_channel:remove','emitVoiceQueueSummary','type','strategy','answered','available','loggedIn','sumHoldTime','total','unmanaged','Trunk','active','Interval',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedin'];(function(_0xf86cbd,_0x1f85df){var _0x94c692=function(_0x239983){while(--_0x239983){_0xf86cbd['push'](_0xf86cbd['shift']());}};_0x94c692(++_0x1f85df);}(_0x6a55,0x154));var _0x56a5=function(_0xb096ef,_0x20ebdf){_0xb096ef=_0xb096ef-0x0;var _0x5ac5b=_0x6a55[_0xb096ef];return _0x5ac5b;};'use strict';var _=require(_0x56a5('0x0'));var moment=require('moment');var util=require(_0x56a5('0x1'));var md5=require(_0x56a5('0x2'));var Redis=require('ioredis');var config=require(_0x56a5('0x3'));var logger=require(_0x56a5('0x4'))(_0x56a5('0x5'));var ami=require(_0x56a5('0x6'));var QueueReport=require(_0x56a5('0x7'));config[_0x56a5('0x8')]=_[_0x56a5('0x9')](config[_0x56a5('0x8')],{'host':_0x56a5('0xa'),'port':0x18eb});var io=require(_0x56a5('0xb'))(new Redis(config[_0x56a5('0x8')]));var Sequence=function(){};Sequence[_0x56a5('0xc')][_0x56a5('0xd')]=function(_0x27d701){this['tail']=this[_0x56a5('0xe')]?this[_0x56a5('0xe')]['finally'](_0x27d701):_0x27d701();};function VoiceQueueReport(_0x2915f1){this['sequence']=new Sequence();this['queueReports']={};this[_0x56a5('0xf')]=_0x2915f1[_0x56a5('0xf')];this[_0x56a5('0x10')]=_0x2915f1[_0x56a5('0x11')];this[_0x56a5('0x12')]=_0x2915f1[_0x56a5('0x12')];this[_0x56a5('0x13')]=!![];this[_0x56a5('0x14')]=_0x2915f1[_0x56a5('0x14')];this['variables']={};ami['on'](_0x56a5('0x15'),this[_0x56a5('0x16')]['bind'](this));ami['on'](_0x56a5('0x17'),this[_0x56a5('0x18')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1a'),this['syncQueueCallerJoin'][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1b'),this[_0x56a5('0x1c')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1d'),this[_0x56a5('0x1e')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1f'),this[_0x56a5('0x20')]['bind'](this));ami['on']('agentconnect',this[_0x56a5('0x21')]['bind'](this));ami['on'](_0x56a5('0x22'),this[_0x56a5('0x23')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x24'),this[_0x56a5('0x25')]['bind'](this));ami['on']('fullybooted',this[_0x56a5('0x26')]['bind'](this));ami['on'](_0x56a5('0x27'),this['syncNewExten'][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x28'),this[_0x56a5('0x29')]['bind'](this));ami['on'](_0x56a5('0x2a'),this['syncMusicOnHoldStop'][_0x56a5('0x19')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x56a5('0x19')](this));ami['on']('blindtransfer',this[_0x56a5('0x2b')]['bind'](this));this[_0x56a5('0x2c')]();this[_0x56a5('0x2d')]();}function clearChannels(_0x82866c){if(!_['isEmpty'](_0x82866c)){for(var _0x38b5e0 in _0x82866c){if(_0x82866c[_0x56a5('0x2e')](_0x38b5e0)){delete _0x82866c[_0x38b5e0];}}}}function clearCampaigns(_0x59158c){if(!_[_0x56a5('0x2f')](_0x59158c)){for(var _0x3cb7ae in _0x59158c){if(_0x59158c[_0x56a5('0x2e')](_0x3cb7ae)){_0x59158c[_0x3cb7ae][_0x56a5('0x30')]=0x0;}}}}function clearVoiceQueues(_0x2b994f){if(!_[_0x56a5('0x2f')](_0x2b994f)){for(var _0x5e894f in _0x2b994f){if(_0x2b994f[_0x56a5('0x2e')](_0x5e894f)){_0x2b994f[_0x5e894f]['originated']=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x31')]=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x32')]=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x33')]=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x34')]=!![];}}}}function clearAgentBooked(_0x263188){if(!_[_0x56a5('0x2f')](_0x263188)){for(var _0x512a48 in _0x263188){if(_0x263188[_0x56a5('0x2e')](_0x512a48)){_0x263188[_0x512a48][_0x56a5('0x35')]=!![];}}}}VoiceQueueReport[_0x56a5('0xc')]['clearZombieChannels']=function(){var _0x38b761=this;for(var _0x2f8159 in this['channels']){if(this['channels'][_0x56a5('0x2e')](_0x2f8159)&&!this[_0x56a5('0x10')][_0x2f8159][_0x56a5('0x36')]){this['sequence'][_0x56a5('0xd')](function(){if(!_['isNil'](_0x38b761[_0x56a5('0x10')][_0x2f8159])){return ami[_0x56a5('0x37')]({'action':_0x56a5('0x38'),'channel':_0x38b761[_0x56a5('0x10')][_0x2f8159][_0x56a5('0x39')]})[_0x56a5('0x3a')](function(_0x4c48a2){if(_0x4c48a2['message']===_0x56a5('0x3b')){setTimeout(function(){if(_0x38b761[_0x56a5('0x10')][_0x2f8159]){delete _0x38b761['channels'][_0x2f8159];logger[_0x56a5('0x3c')](_0x56a5('0x3d'),_0x2f8159,util[_0x56a5('0x3e')](_0x4c48a2,{'showHidden':![],'depth':null}));}if(_0x38b761['queueReports'][_0x2f8159]){delete _0x38b761[_0x56a5('0x3f')][_0x2f8159];logger[_0x56a5('0x3c')](_0x56a5('0x40'),_0x2f8159,util[_0x56a5('0x3e')](_0x4c48a2,{'showHidden':![],'depth':null}));}if(_0x38b761[_0x56a5('0x41')][_0x2f8159]){delete _0x38b761[_0x56a5('0x41')][_0x2f8159];logger['error'](_0x56a5('0x42'),_0x2f8159,util[_0x56a5('0x3e')](_0x4c48a2,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x56a5('0x26')]=function(){logger[_0x56a5('0x3c')](_0x56a5('0x43'));clearChannels(this[_0x56a5('0x10')]);this['clearQueueReport'](this[_0x56a5('0x3f')]);clearAgentBooked(this[_0x56a5('0xf')]);clearVoiceQueues(this[_0x56a5('0x12')]);clearCampaigns(this[_0x56a5('0x14')]);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x44')]=function(_0x47a8fe){var _0x47b8e0=this;if(!_[_0x56a5('0x2f')](_0x47a8fe)){for(var _0x4c679f in _0x47a8fe){if(_0x47a8fe[_0x56a5('0x2e')](_0x4c679f)){_0x47b8e0[_0x56a5('0x45')](_0x47a8fe[_0x4c679f],_0x56a5('0x46'));delete _0x47a8fe[_0x4c679f];}}}};VoiceQueueReport[_0x56a5('0xc')]['emit']=function(_0x2e8fb7,_0x1c077f,_0x4a3659){io['to'](_0x2e8fb7)['emit'](_0x1c077f,_0x4a3659);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x47')]=function(_0x5e5b10,_0x46de6b){logger[_0x56a5('0x48')]('[%s][voiceQueueReport]['+_0x46de6b+_0x56a5('0x49'),_0x5e5b10[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x5e5b10,{'showHidden':![],'depth':null}));this['emit'](util[_0x56a5('0x4b')](_0x56a5('0x4c'),_0x5e5b10['name']),_0x56a5('0x4d'),_0x5e5b10);io['emit'](_0x56a5('0x4e'),_0x5e5b10);};VoiceQueueReport['prototype'][_0x56a5('0x45')]=function(_0x17fcee,_0x4431f7){logger['debug'](_0x56a5('0x4f')+_0x4431f7+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x17fcee[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x17fcee,{'showHidden':![],'depth':null}));this[_0x56a5('0x50')](util[_0x56a5('0x4b')](_0x56a5('0x4c'),_0x17fcee[_0x56a5('0x51')]),_0x56a5('0x52'),_0x17fcee);io[_0x56a5('0x50')]('voice_queue_presence:remove',_0x17fcee);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x53')]=function(_0x59fe66,_0x2953f1){if(_0x59fe66[_0x56a5('0x54')]==='inbound'){var _0x527335={'id':_0x59fe66['id'],'name':_0x59fe66[_0x56a5('0x51')],'strategy':_0x59fe66[_0x56a5('0x55')],'answered':_0x59fe66[_0x56a5('0x56')],'available':_0x59fe66[_0x56a5('0x57')],'loggedIn':_0x59fe66[_0x56a5('0x58')],'pTalking':_0x59fe66[_0x56a5('0x32')],'sumBillable':_0x59fe66['sumBillable'],'sumDuration':_0x59fe66['sumDuration'],'sumHoldTime':_0x59fe66[_0x56a5('0x59')]||0x0,'talking':_0x59fe66[_0x56a5('0x31')],'total':_0x59fe66[_0x56a5('0x5a')],'type':_0x59fe66['type'],'unmanaged':_0x59fe66[_0x56a5('0x5b')],'abandoned':_0x59fe66['abandoned'],'waiting':_0x59fe66[_0x56a5('0x33')]};if(_0x59fe66[_0x56a5('0x5c')]){_0x527335[_0x56a5('0x5c')]={'id':_0x59fe66[_0x56a5('0x5c')]['id'],'name':_0x59fe66[_0x56a5('0x5c')][_0x56a5('0x51')],'active':_0x59fe66[_0x56a5('0x5c')][_0x56a5('0x5d')],'callerid':_0x59fe66[_0x56a5('0x5c')]['callerid']};}if(_0x59fe66[_0x56a5('0x5e')]){_0x527335[_0x56a5('0x5e')]={'id':_0x59fe66['Interval']['id'],'name':_0x59fe66[_0x56a5('0x5e')][_0x56a5('0x51')]};}var _0x29690d=md5(JSON['stringify'](_0x527335));if(_0x59fe66[_0x56a5('0x2')]!==_0x29690d){_0x59fe66[_0x56a5('0x2')]=_0x29690d;logger[_0x56a5('0x48')]('[voiceQueueReport]['+_0x2953f1+_0x56a5('0x5f'),util[_0x56a5('0x3e')](_0x527335,{'showHidden':![],'depth':null}));this[_0x56a5('0x50')](util[_0x56a5('0x4b')](_0x56a5('0x4c'),_0x527335[_0x56a5('0x51')]),_0x56a5('0x60'),_0x527335);}}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x61')]=function(_0x15836b){return _0x15836b!==null&&!_[_0x56a5('0x62')](_0x15836b);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x2d')]=function(){var _0xff01fa=this;setInterval(function(){_0xff01fa[_0x56a5('0x63')]();ami[_0x56a5('0x37')]({'action':'queues'})['catch'](function(_0x457e59){logger[_0x56a5('0x3c')](_0x56a5('0x64'),util[_0x56a5('0x3e')](_0x457e59,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x56a5('0x2c')]=function(){var _0x2e8264=this;setInterval(function(){if(_0x2e8264[_0x56a5('0x13')]){return ami[_0x56a5('0x37')]({'action':_0x56a5('0x15')})[_0x56a5('0x65')](function(_0x425d20){_0x2e8264[_0x56a5('0x13')]=![];})[_0x56a5('0x3a')](function(_0x2b47d5){logger[_0x56a5('0x3c')](_0x56a5('0x66'),util[_0x56a5('0x3e')](_0x2b47d5,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x16')]=function(_0xb46e7f){try{if(this[_0x56a5('0x61')](_0xb46e7f)&&this[_0x56a5('0x61')](_0xb46e7f[_0x56a5('0x67')])){logger[_0x56a5('0x48')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x56a5('0x3e')](_0xb46e7f,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]]){logger['info'](_0x56a5('0x68'),_0xb46e7f[_0x56a5('0x67')]);var _0x503d7d=_['countBy'](this[_0x56a5('0x10')],'queue')[_0xb46e7f[_0x56a5('0x67')]]||0x0;var _0x1a022c=_0x503d7d-_0xb46e7f[_0x56a5('0x69')];if(this[_0x56a5('0x12')][_0xb46e7f['queue']]['waiting']!==_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x69')])||this['voiceQueues'][_0xb46e7f['queue']][_0x56a5('0x58')]!==_['toNumber'](_0xb46e7f[_0x56a5('0x6b')])||this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x57')]!==_['toNumber'](_0xb46e7f['available'])||this[_0x56a5('0x12')][_0xb46e7f['queue']]['talking']!==_0x1a022c){this['voiceQueues'][_0xb46e7f['queue']][_0x56a5('0x33')]=_['toNumber'](_0xb46e7f[_0x56a5('0x69')]);this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x58')]=_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x6b')]);this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]]['available']=_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x57')]);this['voiceQueues'][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x31')]=_0x1a022c>0x0?_0x1a022c:0x0;this['voiceQueues'][_0xb46e7f[_0x56a5('0x67')]]['talking']=this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x31')]>_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x6b')])?_['toNumber'](_0xb46e7f[_0x56a5('0x6b')]):this[_0x56a5('0x12')][_0xb46e7f['queue']][_0x56a5('0x31')];this[_0x56a5('0x53')](this['voiceQueues'][_0xb46e7f[_0x56a5('0x67')]],_0x56a5('0x15'));}logger[_0x56a5('0x48')](_0x56a5('0x6c'),util[_0x56a5('0x3e')](this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]],{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')](_0x56a5('0x6d'),this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]]);}}}catch(_0x126c3f){logger[_0x56a5('0x3c')](_0x56a5('0x66'),util['inspect'](_0x126c3f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x18')]=function(_0x2b9239){logger[_0x56a5('0x48')](_0x56a5('0x6e'),util[_0x56a5('0x3e')](_0x2b9239,{'showHidden':![],'depth':null}));this[_0x56a5('0x13')]=!![];};VoiceQueueReport['prototype'][_0x56a5('0x6f')]=function(_0x3bd514){try{if(this[_0x56a5('0x61')](_0x3bd514)){logger[_0x56a5('0x48')](_0x56a5('0x70'),_0x3bd514[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x3bd514,{'showHidden':![],'depth':null}));if(_[_0x56a5('0x62')](this[_0x56a5('0x3f')][_0x3bd514['uniqueid']]))this[_0x56a5('0x3f')][_0x3bd514[_0x56a5('0x4a')]]=[];if(_[_0x56a5('0x62')](this['channels'][_0x3bd514[_0x56a5('0x4a')]]))this['channels'][_0x3bd514[_0x56a5('0x4a')]]={};var _0x4608ce=new QueueReport();_0x4608ce[_0x56a5('0x51')]=_0x3bd514[_0x56a5('0x67')];_0x4608ce[_0x56a5('0x54')]=this[_0x56a5('0x12')][_0x4608ce['name']]&&this[_0x56a5('0x12')][_0x4608ce['name']][_0x56a5('0x54')]?this[_0x56a5('0x12')][_0x4608ce[_0x56a5('0x51')]][_0x56a5('0x54')]||_0x56a5('0x71'):'inbound';_0x4608ce[_0x56a5('0x67')]=_0x3bd514['queue'];_0x4608ce[_0x56a5('0x72')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0x4608ce[_0x56a5('0x74')]=_0x3bd514[_0x56a5('0x74')];_0x4608ce[_0x56a5('0x75')]=_0x3bd514[_0x56a5('0x75')];_0x4608ce['uniqueid']=_0x3bd514[_0x56a5('0x4a')];_0x4608ce[_0x56a5('0x76')]=this[_0x56a5('0x10')][_0x3bd514['uniqueid']]['routealias'];logger[_0x56a5('0x77')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x4608ce[_0x56a5('0x51')],_0x4608ce['type']);_[_0x56a5('0x78')](_0x4608ce,_[_0x56a5('0x79')](_0x3bd514,_['keys'](_0x4608ce)));this[_0x56a5('0x3f')][_0x3bd514[_0x56a5('0x4a')]][_0x56a5('0x7a')](_0x4608ce);this['channels'][_0x3bd514[_0x56a5('0x4a')]]=_0x4608ce;this[_0x56a5('0x47')](_0x4608ce,_0x56a5('0x1a'));}}catch(_0x4536ff){logger[_0x56a5('0x3c')](_0x56a5('0x70'),_0x3bd514[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x4536ff,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x1c')]=function(_0x12d5c9){try{if(this[_0x56a5('0x61')](_0x12d5c9)){logger['debug'](_0x56a5('0x7b'),_0x12d5c9[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x12d5c9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x12d5c9[_0x56a5('0x4a')]]){var _0x3e2d39=_['last'](this[_0x56a5('0x3f')][_0x12d5c9[_0x56a5('0x4a')]]);_0x3e2d39['queuecallercomplete']=![];_0x3e2d39['queuecallercompleteAt']=null;_0x3e2d39[_0x56a5('0x7c')]=_0x12d5c9[_0x56a5('0x7c')];_0x3e2d39[_0x56a5('0x7d')]=_0x12d5c9[_0x56a5('0x7d')];_0x3e2d39[_0x56a5('0x1b')]=!![];_0x3e2d39[_0x56a5('0x7e')]=moment()[_0x56a5('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x3e2d39[_0x56a5('0x7f')]='ABANDONED';_0x3e2d39[_0x56a5('0x80')]=null;logger[_0x56a5('0x77')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x3e2d39[_0x56a5('0x51')],_0x3e2d39[_0x56a5('0x54')]);this['channels'][_0x12d5c9[_0x56a5('0x4a')]]=_0x3e2d39;this[_0x56a5('0x45')](_0x3e2d39,'queuecallerabandon');}}}catch(_0x370eaf){logger[_0x56a5('0x3c')]('[%s][voiceQueueReport][queuecallerabandon]',_0x12d5c9[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x370eaf,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueCallerLeave']=function(_0x1e51fc){try{if(this['isNotNull'](_0x1e51fc)){logger[_0x56a5('0x48')](_0x56a5('0x81'),_0x1e51fc['uniqueid'],util[_0x56a5('0x3e')](_0x1e51fc,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x1e51fc['uniqueid']]){var _0x26de25=_['last'](this['queueReports'][_0x1e51fc[_0x56a5('0x4a')]]);_0x26de25[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0x26de25['connectedlinenum']=_0x1e51fc['connectedlinenum'];_0x26de25['connectedlinename']=_0x1e51fc['connectedlinename'];logger[_0x56a5('0x77')](_0x56a5('0x83'),_0x26de25['name'],_0x26de25[_0x56a5('0x54')],_0x1e51fc['connectedlinenum'],_0x1e51fc[_0x56a5('0x84')]);this[_0x56a5('0x10')][_0x1e51fc[_0x56a5('0x4a')]]=_0x26de25;this['emitVoiceQueueChannelSave'](_0x26de25,_0x56a5('0x1d'));}}}catch(_0x286fec){logger['error'](_0x56a5('0x81'),_0x1e51fc[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x286fec,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x86be1c){try{if(this[_0x56a5('0x61')](_0x86be1c)){logger['debug']('[%s][voiceQueueReport][agentconnect]',_0x86be1c[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x86be1c,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x86be1c[_0x56a5('0x4a')]]){var _0x505271=_['last'](this[_0x56a5('0x3f')][_0x86be1c[_0x56a5('0x4a')]]);_0x505271[_0x56a5('0x85')]=!![];_0x505271['queuecallerexitreason']=_0x56a5('0x86');logger[_0x56a5('0x77')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x505271['name'],_0x505271[_0x56a5('0x54')]);}}}catch(_0x783771){logger['error'](_0x56a5('0x87'),_0x86be1c['uniqueid'],util[_0x56a5('0x3e')](_0x783771,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x20')]=function(_0x1d7df7){try{if(this['isNotNull'](_0x1d7df7)){logger[_0x56a5('0x48')](_0x56a5('0x88'),_0x1d7df7[_0x56a5('0x4a')],util['inspect'](_0x1d7df7,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]]){var _0x17db06=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]]);_0x17db06['queuecallerabandon']=![];_0x17db06[_0x56a5('0x7e')]=null;_0x17db06[_0x56a5('0x8a')]=!![];_0x17db06[_0x56a5('0x80')]=_0x1d7df7[_0x56a5('0x8b')];_0x17db06['holdtime']=_0x1d7df7[_0x56a5('0x7c')];_0x17db06[_0x56a5('0x85')]=!![];_0x17db06[_0x56a5('0x8c')]=![];_0x17db06['queuecallerexitAt']=null;if(!_0x17db06[_0x56a5('0x8d')]){if(_0x1d7df7[_0x56a5('0x8e')]==_0x56a5('0x8d')){_0x17db06['queuecallerexitreason']='COMPLETED';logger[_0x56a5('0x77')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x17db06['name'],_0x17db06[_0x56a5('0x54')]);}else{if(_[_0x56a5('0x8f')](_0x1d7df7[_0x56a5('0x39')][_0x56a5('0x90')](),_0x56a5('0x91'))){if(this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x92')]]){var _0x124748=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x1d7df7['linkedid']]);_0x124748[_0x56a5('0x85')]=![];_0x124748['queuecallerexit']=!![];_0x124748[_0x56a5('0x93')]=moment(_0x17db06[_0x56a5('0x72')])[_0x56a5('0x94')](_0x1d7df7[_0x56a5('0x7c')],'seconds')[_0x56a5('0x4b')](_0x56a5('0x73'));_0x124748[_0x56a5('0x7f')]=_0x56a5('0x95');_0x124748[_0x56a5('0x8d')]=!![];_0x124748['transfertype']='FORWARD';_0x124748['transferexten']=_0x1d7df7[_0x56a5('0x96')];_0x124748['transferuniqueid']=_0x1d7df7[_0x56a5('0x4a')];logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x124748[_0x56a5('0x51')],_0x124748[_0x56a5('0x54')]);var _0x20de28=this[_0x56a5('0x3f')][_0x1d7df7['linkedid']];this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x92')]]=this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]];this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]]=_0x20de28;}}else{_0x17db06[_0x56a5('0x7f')]=_0x56a5('0x97')+_0x1d7df7['reason'][_0x56a5('0x98')]();logger[_0x56a5('0x77')](_0x56a5('0x99'),_0x17db06['name'],_0x17db06[_0x56a5('0x54')],_0x17db06[_0x56a5('0x7f')]);}}}this[_0x56a5('0x10')][_0x1d7df7[_0x56a5('0x4a')]]=_0x17db06;this['emitVoiceQueueChannelRemove'](_0x17db06,_0x56a5('0x1f'));}}}catch(_0x52d7c3){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x1d7df7[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x52d7c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncVarSet']=function(_0x2d6e66){try{if(this[_0x56a5('0x61')](_0x2d6e66)){logger[_0x56a5('0x48')](_0x56a5('0x9a'),_0x2d6e66[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x2d6e66,{'showHidden':![],'depth':null}));this[_0x56a5('0x9b')](_0x2d6e66[_0x56a5('0x4a')],_['keys'](_0x2d6e66['variable'])[0x0],_0x2d6e66[_0x56a5('0x9c')]);if(this['queueReports'][_0x2d6e66[_0x56a5('0x4a')]]){var _0xe43264=_['last'](this[_0x56a5('0x3f')][_0x2d6e66[_0x56a5('0x4a')]]);if(_0xe43264){if(this[_0x56a5('0x61')](_0x2d6e66[_0x56a5('0x9d')])&&this[_0x56a5('0x61')](_0x2d6e66[_0x56a5('0x9d')]['queuestatus'])){switch(_0x2d6e66[_0x56a5('0x9c')]){case'CONTINUE':_0xe43264[_0x56a5('0x8c')]=![];_0xe43264['queuecallerexitAt']=null;break;case'TIMEOUT':_0xe43264[_0x56a5('0x9e')]=_0x56a5('0x9f');_0xe43264[_0x56a5('0x8c')]=!![];_0xe43264[_0x56a5('0x93')]=moment()['format'](_0x56a5('0x73'));_0xe43264[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));logger[_0x56a5('0x48')](_0x56a5('0xa0'),_0x2d6e66[_0x56a5('0x4a')],util['inspect'](_0xe43264,{'showHidden':![],'depth':null}));ami['emit'](_0x56a5('0xa1'),_0xe43264);break;default:_0xe43264['queuecallerexit']=!![];_0xe43264[_0x56a5('0x93')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0xe43264[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));}_0xe43264[_0x56a5('0x1b')]=![];_0xe43264[_0x56a5('0x7e')]=null;_0xe43264[_0x56a5('0x7f')]=_0x2d6e66['value'];this[_0x56a5('0x10')][_0x2d6e66[_0x56a5('0x4a')]]=_0xe43264;this[_0x56a5('0x45')](_0xe43264,_0x56a5('0x22'));}else if(this[_0x56a5('0x61')](_0x2d6e66[_0x56a5('0x9d')])&&this['isNotNull'](_0x2d6e66[_0x56a5('0x9d')][_0x56a5('0xa2')])){if(!_0xe43264[_0x56a5('0x1b')]){_0xe43264[_0x56a5('0x8c')]=!![];_0xe43264[_0x56a5('0x93')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0xe43264[_0x56a5('0x7f')]=_0x56a5('0xa3');_0xe43264[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));this[_0x56a5('0x10')][_0x2d6e66[_0x56a5('0x4a')]]=_0xe43264;}}logger[_0x56a5('0x77')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x2d6e66[_0x56a5('0x4a')],_0xe43264[_0x56a5('0x51')],_0xe43264[_0x56a5('0x54')],_['keys'](_0x2d6e66[_0x56a5('0x9d')])[0x0],_0x2d6e66['value']);_0xe43264[_0x56a5('0x41')]=this['variables'][_0x2d6e66[_0x56a5('0x4a')]];}}}}catch(_0x23d8f0){logger[_0x56a5('0x3c')](_0x56a5('0x9a'),_0x2d6e66[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x23d8f0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x9b')]=function(_0x426af0,_0x10f2a8,_0x48fe94){var _0x3c0123=[_0x56a5('0xa4'),_0x56a5('0xa5'),_0x56a5('0xa6'),_0x56a5('0xa7'),_0x56a5('0xa8'),'rtpaudioqoslossbridged',_0x56a5('0xa9'),_0x56a5('0xaa'),_0x56a5('0xab'),_0x56a5('0xac'),_0x56a5('0xad'),'bridgepvtcallid',_0x56a5('0xae'),_0x56a5('0xaf'),_0x56a5('0xb0'),'memberlastcall','membername',_0x56a5('0xb1'),_0x56a5('0xb2')];if(!_[_0x56a5('0xb3')](_0x10f2a8)&&!_[_0x56a5('0xb4')](_0x3c0123,_0x10f2a8)){if(_[_0x56a5('0x62')](this[_0x56a5('0x41')][_0x426af0])){this[_0x56a5('0x41')][_0x426af0]={};}this[_0x56a5('0x41')][_0x426af0][_0x10f2a8]=_0x48fe94;}};VoiceQueueReport['prototype'][_0x56a5('0x25')]=function(_0x24b579){try{if(this['isNotNull'](_0x24b579)){logger[_0x56a5('0x48')](_0x56a5('0xb5'),_0x24b579[_0x56a5('0x4a')],util['inspect'](_0x24b579,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]]){for(var _0x45e4a1=0x0,_0xfc06ec={};_0x45e4a1<this['queueReports'][_0x24b579[_0x56a5('0x4a')]][_0x56a5('0xb6')];_0x45e4a1+=0x1){_0xfc06ec=this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]][_0x45e4a1];if(this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]]){if(_0xfc06ec['queuecallerexit']&&_0xfc06ec[_0x56a5('0x8d')]!=!![]){this[_0x56a5('0x12')][_0xfc06ec['queue']][_0x56a5('0x5b')]+=0x1;}if(_0xfc06ec[_0x56a5('0x1b')]){this['voiceQueues'][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0xb7')]+=0x1;}this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0x59')]+=moment(_0xfc06ec[_0x56a5('0x82')])['diff'](_0xfc06ec[_0x56a5('0x72')],_0x56a5('0xb8'))||0x0;if(_0x45e4a1===this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]][_0x56a5('0xb6')]-0x1){this['voiceQueues'][_0xfc06ec['queue']]['sumDuration']+=moment()[_0x56a5('0xb9')](0x0)[_0x56a5('0xba')](_0xfc06ec[_0x56a5('0x72')],_0x56a5('0xb8'));this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0x5a')]+=0x1;if(_0xfc06ec[_0x56a5('0x85')]){this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0x56')]+=0x1;this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0xbb')]+=moment()[_0x56a5('0xb9')](0x0)[_0x56a5('0xba')](_0xfc06ec['queuecallerleaveAt'],'seconds');_0xfc06ec[_0x56a5('0xbc')]=moment()['format'](_0x56a5('0x73'));_0xfc06ec[_0x56a5('0x8c')]=![];_0xfc06ec[_0x56a5('0x93')]=null;}if(_0xfc06ec['queuecallerexit']&&_0xfc06ec[_0x56a5('0x8d')]!=!![]){_0xfc06ec[_0x56a5('0x9e')]=_0x56a5('0x5b');logger[_0x56a5('0x48')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x24b579['uniqueid'],util[_0x56a5('0x3e')](_0xfc06ec,{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')]('custom:queuecallerunmanaged',_0xfc06ec);}if(_0xfc06ec[_0x56a5('0x1b')]){_0xfc06ec[_0x56a5('0x9e')]=_0x56a5('0xb7');logger[_0x56a5('0x48')](_0x56a5('0xbd'),_0x24b579[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0xfc06ec,{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')](_0x56a5('0xbe'),_0xfc06ec);}}else{this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]]['sumDuration']+=this[_0x56a5('0x12')][_0xfc06ec['queue']][_0x56a5('0x59')];}logger[_0x56a5('0x77')](_0x56a5('0xbf'),_0x24b579['uniqueid'],_0xfc06ec[_0x56a5('0x51')],_0xfc06ec['type'],_0x24b579[_0x56a5('0xc0')]);this[_0x56a5('0x10')][_0x24b579[_0x56a5('0x4a')]]=_0xfc06ec;this[_0x56a5('0x45')](_0xfc06ec,_0x56a5('0x24'));this[_0x56a5('0x53')](this['voiceQueues'][_0xfc06ec[_0x56a5('0x67')]],'hangup');}}logger['debug'](_0x56a5('0xc1'),_0x24b579[_0x56a5('0x4a')],util[_0x56a5('0x3e')](this['queueReports'][_0x24b579[_0x56a5('0x4a')]],{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')](_0x56a5('0xc2'),this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]]);delete this[_0x56a5('0x3f')][_0x24b579['uniqueid']];delete this[_0x56a5('0x10')][_0x24b579[_0x56a5('0x4a')]];}if(this['variables'][_0x24b579[_0x56a5('0x4a')]]){delete this['variables'][_0x24b579[_0x56a5('0x4a')]];}}}catch(_0x25a469){logger[_0x56a5('0x3c')](_0x56a5('0xb5'),_0x24b579[_0x56a5('0x4a')],util['inspect'](_0x25a469,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncAttendedTransfer']=function(_0x30def7){try{if(this[_0x56a5('0x61')](_0x30def7)){logger[_0x56a5('0x48')](_0x56a5('0xc3'),_0x30def7[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x30def7,{'showHidden':![],'depth':null}));var _0x16e830;if(this[_0x56a5('0x3f')][_0x30def7['transfereeuniqueid']]){_0x16e830=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x30def7['transfereeuniqueid']]);_0x16e830[_0x56a5('0xc4')]=_0x30def7[_0x56a5('0xc5')];_0x16e830[_0x56a5('0xc6')]=_0x30def7['secondtransfereruniqueid'];_0x16e830[_0x56a5('0x7f')]=_0x56a5('0xc7');_0x16e830[_0x56a5('0x8d')]=!![];_0x16e830[_0x56a5('0xc8')]=_0x56a5('0xc9');if(this['queueReports'][_0x30def7[_0x56a5('0xca')]]){var _0x4e6deb=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xca')]];this['queueReports'][_0x30def7[_0x56a5('0xca')]]=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcb')]];this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcb')]]=_0x4e6deb;var _0x34fcf=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcb')]]);_0x34fcf['switch']=!![];}logger[_0x56a5('0x77')](_0x56a5('0xcc'),_0x30def7[_0x56a5('0x4a')],_0x16e830['name'],_0x16e830[_0x56a5('0x54')],_0x16e830[_0x56a5('0xc4')],_0x16e830['transferuniqueid']);}else if(this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcd')]]){_0x16e830=_['last'](this['queueReports'][_0x30def7[_0x56a5('0xcd')]]);_0x16e830[_0x56a5('0xc4')]=_0x30def7[_0x56a5('0xce')];_0x16e830[_0x56a5('0xc6')]=_0x30def7[_0x56a5('0xcf')];_0x16e830[_0x56a5('0x7f')]=_0x56a5('0xc7');_0x16e830[_0x56a5('0x8d')]=!![];_0x16e830[_0x56a5('0xc8')]=_0x56a5('0xc9');if(this['queueReports'][_0x30def7[_0x56a5('0xcf')]]){var _0x4e6deb=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcf')]];this[_0x56a5('0x3f')][_0x30def7['origtransfereruniqueid']]=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcd')]];this['queueReports'][_0x30def7[_0x56a5('0xcd')]]=_0x4e6deb;var _0x34fcf=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcd')]]);_0x34fcf['switch']=!![];}logger[_0x56a5('0x77')](_0x56a5('0xcc'),_0x30def7[_0x56a5('0x4a')],_0x16e830[_0x56a5('0x51')],_0x16e830[_0x56a5('0x54')],_0x16e830['transferexten'],_0x16e830[_0x56a5('0xc6')]);}}}catch(_0x329d9d){logger[_0x56a5('0x3c')](_0x56a5('0xc3'),_0x30def7[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x329d9d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x2b')]=function(_0x1fd963){try{if(this[_0x56a5('0x61')](_0x1fd963)){logger[_0x56a5('0x48')](_0x56a5('0xd0'),_0x1fd963[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x1fd963,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1fd963['transfereeuniqueid']]){var _0x51501b=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x1fd963[_0x56a5('0xcb')]]);_0x51501b[_0x56a5('0x7f')]='BLINDTRANSFER';_0x51501b[_0x56a5('0x8d')]=!![];_0x51501b[_0x56a5('0xc8')]='BLIND';_0x51501b[_0x56a5('0xc4')]=_0x1fd963[_0x56a5('0xd1')];_0x51501b[_0x56a5('0xc6')]=_0x1fd963['transfereeuniqueid'];logger[_0x56a5('0x77')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1fd963[_0x56a5('0x4a')],_0x51501b[_0x56a5('0x51')],_0x51501b[_0x56a5('0x54')],_0x51501b[_0x56a5('0xc4')],_0x51501b[_0x56a5('0xc6')]);this['syncHangup']({'event':_0x56a5('0xd2'),'uniqueid':_0x1fd963['transfereeuniqueid'],'context':_0x1fd963[_0x56a5('0xd3')],'channel':_0x1fd963[_0x56a5('0xd4')]});}}}catch(_0x875910){logger[_0x56a5('0x3c')](_0x56a5('0xd0'),_0x1fd963[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x875910,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x3a97ca){try{if(this[_0x56a5('0x61')](_0x3a97ca)){logger[_0x56a5('0x48')](_0x56a5('0xd5'),_0x3a97ca[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x3a97ca,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x3a97ca[_0x56a5('0x4a')]]){var _0x13f518=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x3a97ca[_0x56a5('0x4a')]]);if(!_[_0x56a5('0xb3')](_0x13f518[_0x56a5('0x82')])){_0x13f518['mohstarttime']=moment()['format'](_0x56a5('0x73'));logger['info'](_0x56a5('0xd6'),_0x3a97ca[_0x56a5('0x4a')],_0x13f518[_0x56a5('0xd7')]);}}}}catch(_0x391d91){logger[_0x56a5('0x3c')](_0x56a5('0xd5'),_0x3a97ca[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x391d91,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncMusicOnHoldStop']=function(_0x2a6897){try{if(this[_0x56a5('0x61')](_0x2a6897)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x2a6897['uniqueid'],util[_0x56a5('0x3e')](_0x2a6897,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x2a6897[_0x56a5('0x4a')]]){var _0x14a581=_['last'](this[_0x56a5('0x3f')][_0x2a6897[_0x56a5('0x4a')]]);if(!_[_0x56a5('0xb3')](_0x14a581[_0x56a5('0xd7')])){_0x14a581['mohtime']+=moment()[_0x56a5('0xb9')](0x0)[_0x56a5('0xba')](_0x14a581['mohstarttime'],_0x56a5('0xb8'));logger[_0x56a5('0x77')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x2a6897['uniqueid'],_0x14a581[_0x56a5('0xd8')]);delete _0x14a581[_0x56a5('0xd7')];}}}}catch(_0x5ece14){logger['error']('[%s][voiceQueueReport][musiconholdstop]',_0x2a6897[_0x56a5('0x4a')],util['inspect'](_0x5ece14,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncNewExten']=function(_0x5958e8){try{if(this[_0x56a5('0x61')](_0x5958e8)){logger[_0x56a5('0x48')](_0x56a5('0xd9'),_0x5958e8[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x5958e8,{'showHidden':![],'depth':null}));if(_0x5958e8['application'][_0x56a5('0x90')]()==='set'){_0x5958e8[_0x56a5('0xda')]=_0x5958e8[_0x56a5('0xdb')]&&_0x5958e8['appdata'][_0x56a5('0x8f')]('CDR(routeAlias)')?_0x5958e8[_0x56a5('0xdb')]:(_0x5958e8['appdata']||_0x5958e8[_0x56a5('0xda')])[_0x56a5('0x90')]();if(_[_0x56a5('0x8f')](_0x5958e8['applicationdata'][_0x56a5('0x90')](),_0x56a5('0xdc'))){logger[_0x56a5('0x77')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x5958e8[_0x56a5('0x4a')],_0x5958e8[_0x56a5('0xdd')],_0x5958e8[_0x56a5('0xda')]);if(_[_0x56a5('0x62')](this[_0x56a5('0x10')][_0x5958e8[_0x56a5('0x4a')]]))this[_0x56a5('0x10')][_0x5958e8['uniqueid']]={};var _0x254c61=_0x5958e8[_0x56a5('0xda')]['split']('=');var _0x2f3e7e=_0x254c61[0x0][_0x56a5('0x90')]()[_0x56a5('0xde')](/cdr\((.*)\)/);if(_0x2f3e7e)this[_0x56a5('0x10')][_0x5958e8['uniqueid']][_0x2f3e7e[0x1]]=_0x254c61[0x1];}}}}catch(_0x2baa41){logger['error']('[%s][voiceQueueReport][newexten]',_0x5958e8[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x2baa41,{'showHidden':![],'depth':null}));}};module[_0x56a5('0xdf')]=VoiceQueueReport;
\ No newline at end of file
+var _0x8721=['syncQueueSummary','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentConnect','varset','syncHangup','fullybooted','syncFullyBooted','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','clearZombieChannels','switch','enqueue','isNil','Action','status','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','debug',']\x20sending\x20voice_queue_channel:remove\x20event:','format','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','available','sumBillable','sumHoldTime','talking','unmanaged','waiting','Trunk','active','Interval','stringify','md5','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedIn','loggedin','emitVoiceQueueSummary','syncQueueSummaryComplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','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','queuecallerleave','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexitAt','transfer','startsWith','channel','toLowerCase','local/','linkedid','queuecallerexit','add','seconds','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','variable','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','value','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','length','abandoned','diff','sumDuration','total','milliseconds','queuecallercompleteAt','[%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','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','syncAttendedTransfer','secondtransfereruniqueid','transfereeuniqueid','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','../../../config/environment','../model/queueReport','redis','defaults','socket.io-emitter','prototype','tail','finally','sequence','queueReports','agents','channels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary'];(function(_0x8ba624,_0x42e30e){var _0x43940f=function(_0x1f64af){while(--_0x1f64af){_0x8ba624['push'](_0x8ba624['shift']());}};_0x43940f(++_0x42e30e);}(_0x8721,0xd9));var _0x1872=function(_0x34eb31,_0x8f0f70){_0x34eb31=_0x34eb31-0x0;var _0x254994=_0x8721[_0x34eb31];return _0x254994;};'use strict';var _=require(_0x1872('0x0'));var moment=require(_0x1872('0x1'));var util=require(_0x1872('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x1872('0x3'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x1872('0x4'));config[_0x1872('0x5')]=_[_0x1872('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1872('0x7'))(new Redis(config[_0x1872('0x5')]));var Sequence=function(){};Sequence[_0x1872('0x8')]['enqueue']=function(_0x2aaad6){this[_0x1872('0x9')]=this[_0x1872('0x9')]?this[_0x1872('0x9')][_0x1872('0xa')](_0x2aaad6):_0x2aaad6();};function VoiceQueueReport(_0x1b057e){this[_0x1872('0xb')]=new Sequence();this[_0x1872('0xc')]={};this[_0x1872('0xd')]=_0x1b057e[_0x1872('0xd')];this[_0x1872('0xe')]=_0x1b057e['queueChannels'];this[_0x1872('0xf')]=_0x1b057e[_0x1872('0xf')];this[_0x1872('0x10')]=!![];this[_0x1872('0x11')]=_0x1b057e['campaigns'];this[_0x1872('0x12')]={};ami['on'](_0x1872('0x13'),this[_0x1872('0x14')][_0x1872('0x15')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x1872('0x15')](this));ami['on'](_0x1872('0x16'),this[_0x1872('0x17')][_0x1872('0x15')](this));ami['on'](_0x1872('0x18'),this[_0x1872('0x19')]['bind'](this));ami['on']('queuecallerleave',this[_0x1872('0x1a')][_0x1872('0x15')](this));ami['on'](_0x1872('0x1b'),this['syncAgentComplete'][_0x1872('0x15')](this));ami['on']('agentconnect',this[_0x1872('0x1c')][_0x1872('0x15')](this));ami['on'](_0x1872('0x1d'),this['syncVarSet'][_0x1872('0x15')](this));ami['on']('hangup',this[_0x1872('0x1e')][_0x1872('0x15')](this));ami['on'](_0x1872('0x1f'),this[_0x1872('0x20')][_0x1872('0x15')](this));ami['on']('newexten',this[_0x1872('0x21')][_0x1872('0x15')](this));ami['on'](_0x1872('0x22'),this[_0x1872('0x23')][_0x1872('0x15')](this));ami['on'](_0x1872('0x24'),this[_0x1872('0x25')][_0x1872('0x15')](this));ami['on'](_0x1872('0x26'),this['syncAttendedTransfer']['bind'](this));ami['on']('blindtransfer',this[_0x1872('0x27')][_0x1872('0x15')](this));this[_0x1872('0x28')]();this[_0x1872('0x29')]();}function clearChannels(_0x4d480d){if(!_[_0x1872('0x2a')](_0x4d480d)){for(var _0x2ac6b8 in _0x4d480d){if(_0x4d480d[_0x1872('0x2b')](_0x2ac6b8)){delete _0x4d480d[_0x2ac6b8];}}}}function clearCampaigns(_0x588fc1){if(!_[_0x1872('0x2a')](_0x588fc1)){for(var _0x576efa in _0x588fc1){if(_0x588fc1[_0x1872('0x2b')](_0x576efa)){_0x588fc1[_0x576efa][_0x1872('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x38a335){if(!_['isEmpty'](_0x38a335)){for(var _0x430b95 in _0x38a335){if(_0x38a335[_0x1872('0x2b')](_0x430b95)){_0x38a335[_0x430b95]['originated']=0x0;_0x38a335[_0x430b95]['talking']=0x0;_0x38a335[_0x430b95][_0x1872('0x2d')]=0x0;_0x38a335[_0x430b95]['waiting']=0x0;_0x38a335[_0x430b95]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x333961){if(!_['isEmpty'](_0x333961)){for(var _0x3f2779 in _0x333961){if(_0x333961[_0x1872('0x2b')](_0x3f2779)){_0x333961[_0x3f2779]['unlockRR']=!![];}}}}VoiceQueueReport[_0x1872('0x8')][_0x1872('0x2e')]=function(){var _0x30ad4f=this;for(var _0x558234 in this[_0x1872('0xe')]){if(this[_0x1872('0xe')][_0x1872('0x2b')](_0x558234)&&!this[_0x1872('0xe')][_0x558234][_0x1872('0x2f')]){this['sequence'][_0x1872('0x30')](function(){if(!_[_0x1872('0x31')](_0x30ad4f[_0x1872('0xe')][_0x558234])){return ami[_0x1872('0x32')]({'action':_0x1872('0x33'),'channel':_0x30ad4f[_0x1872('0xe')][_0x558234]['channel']})[_0x1872('0x34')](function(_0x39aa77){if(_0x39aa77[_0x1872('0x35')]===_0x1872('0x36')){setTimeout(function(){if(_0x30ad4f[_0x1872('0xe')][_0x558234]){delete _0x30ad4f[_0x1872('0xe')][_0x558234];logger[_0x1872('0x37')](_0x1872('0x38'),_0x558234,util['inspect'](_0x39aa77,{'showHidden':![],'depth':null}));}if(_0x30ad4f['queueReports'][_0x558234]){delete _0x30ad4f[_0x1872('0xc')][_0x558234];logger[_0x1872('0x37')](_0x1872('0x39'),_0x558234,util[_0x1872('0x3a')](_0x39aa77,{'showHidden':![],'depth':null}));}if(_0x30ad4f[_0x1872('0x12')][_0x558234]){delete _0x30ad4f[_0x1872('0x12')][_0x558234];logger['error'](_0x1872('0x3b'),_0x558234,util[_0x1872('0x3a')](_0x39aa77,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger['error'](_0x1872('0x3c'));clearChannels(this[_0x1872('0xe')]);this[_0x1872('0x3d')](this['queueReports']);clearAgentBooked(this[_0x1872('0xd')]);clearVoiceQueues(this[_0x1872('0xf')]);clearCampaigns(this[_0x1872('0x11')]);};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x3d')]=function(_0x290ff5){var _0x4c6c11=this;if(!_[_0x1872('0x2a')](_0x290ff5)){for(var _0x3c6e8b in _0x290ff5){if(_0x290ff5[_0x1872('0x2b')](_0x3c6e8b)){_0x4c6c11[_0x1872('0x3e')](_0x290ff5[_0x3c6e8b],_0x1872('0x3f'));delete _0x290ff5[_0x3c6e8b];}}}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x40')]=function(_0x2ba9a4,_0x54cf1c,_0x2019f3){io['to'](_0x2ba9a4)[_0x1872('0x40')](_0x54cf1c,_0x2019f3);};VoiceQueueReport[_0x1872('0x8')]['emitVoiceQueueChannelSave']=function(_0x1b0b19,_0x12d9f9){logger['debug'](_0x1872('0x41')+_0x12d9f9+_0x1872('0x42'),_0x1b0b19[_0x1872('0x43')],util[_0x1872('0x3a')](_0x1b0b19,{'showHidden':![],'depth':null}));this[_0x1872('0x40')](util['format'](_0x1872('0x44'),_0x1b0b19[_0x1872('0x45')]),_0x1872('0x46'),_0x1b0b19);io['emit'](_0x1872('0x47'),_0x1b0b19);};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x3e')]=function(_0x36527d,_0x38b60e){logger[_0x1872('0x48')](_0x1872('0x41')+_0x38b60e+_0x1872('0x49'),_0x36527d[_0x1872('0x43')],util['inspect'](_0x36527d,{'showHidden':![],'depth':null}));this[_0x1872('0x40')](util[_0x1872('0x4a')](_0x1872('0x44'),_0x36527d[_0x1872('0x45')]),_0x1872('0x4b'),_0x36527d);io[_0x1872('0x40')](_0x1872('0x4c'),_0x36527d);};VoiceQueueReport['prototype']['emitVoiceQueueSummary']=function(_0x42618f,_0x135c8b){if(_0x42618f[_0x1872('0x4d')]===_0x1872('0x4e')){var _0x583833={'id':_0x42618f['id'],'name':_0x42618f['name'],'strategy':_0x42618f['strategy'],'answered':_0x42618f['answered'],'available':_0x42618f[_0x1872('0x4f')],'loggedIn':_0x42618f['loggedIn'],'pTalking':_0x42618f[_0x1872('0x2d')],'sumBillable':_0x42618f[_0x1872('0x50')],'sumDuration':_0x42618f['sumDuration'],'sumHoldTime':_0x42618f[_0x1872('0x51')]||0x0,'talking':_0x42618f[_0x1872('0x52')],'total':_0x42618f['total'],'type':_0x42618f[_0x1872('0x4d')],'unmanaged':_0x42618f[_0x1872('0x53')],'abandoned':_0x42618f['abandoned'],'waiting':_0x42618f[_0x1872('0x54')]};if(_0x42618f[_0x1872('0x55')]){_0x583833[_0x1872('0x55')]={'id':_0x42618f[_0x1872('0x55')]['id'],'name':_0x42618f[_0x1872('0x55')][_0x1872('0x45')],'active':_0x42618f[_0x1872('0x55')][_0x1872('0x56')],'callerid':_0x42618f['Trunk']['callerid']};}if(_0x42618f[_0x1872('0x57')]){_0x583833[_0x1872('0x57')]={'id':_0x42618f[_0x1872('0x57')]['id'],'name':_0x42618f['Interval'][_0x1872('0x45')]};}var _0x21d16a=md5(JSON[_0x1872('0x58')](_0x583833));if(_0x42618f[_0x1872('0x59')]!==_0x21d16a){_0x42618f[_0x1872('0x59')]=_0x21d16a;logger['debug'](_0x1872('0x5a')+_0x135c8b+_0x1872('0x5b'),util[_0x1872('0x3a')](_0x583833,{'showHidden':![],'depth':null}));this[_0x1872('0x40')](util[_0x1872('0x4a')]('voice:queue:%s',_0x583833[_0x1872('0x45')]),_0x1872('0x5c'),_0x583833);}}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x5d')]=function(_0x25244a){return _0x25244a!==null&&!_[_0x1872('0x5e')](_0x25244a);};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x29')]=function(){var _0x3528b6=this;setInterval(function(){_0x3528b6['clearZombieChannels']();ami[_0x1872('0x32')]({'action':_0x1872('0x5f')})[_0x1872('0x34')](function(_0x17a80b){logger[_0x1872('0x37')](_0x1872('0x60'),util[_0x1872('0x3a')](_0x17a80b,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype']['loopQueueSummary']=function(){var _0x2a5bca=this;setInterval(function(){if(_0x2a5bca[_0x1872('0x10')]){return ami[_0x1872('0x32')]({'action':'queuesummary'})[_0x1872('0x61')](function(_0x470ef9){_0x2a5bca[_0x1872('0x10')]=![];})[_0x1872('0x34')](function(_0x25c4e7){logger[_0x1872('0x37')](_0x1872('0x62'),util[_0x1872('0x3a')](_0x25c4e7,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x1872('0x14')]=function(_0x512300){try{if(this[_0x1872('0x5d')](_0x512300)&&this[_0x1872('0x5d')](_0x512300[_0x1872('0x63')])){logger['debug'](_0x1872('0x64'),util['inspect'](_0x512300,{'showHidden':![],'depth':null}));if(this[_0x1872('0xf')][_0x512300['queue']]){logger['info'](_0x1872('0x65'),_0x512300[_0x1872('0x63')]);var _0x17d16c=_[_0x1872('0x66')](this['channels'],_0x1872('0x63'))[_0x512300[_0x1872('0x63')]]||0x0;var _0x341209=_0x17d16c-_0x512300[_0x1872('0x67')];if(this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]][_0x1872('0x54')]!==_[_0x1872('0x68')](_0x512300[_0x1872('0x67')])||this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]][_0x1872('0x69')]!==_[_0x1872('0x68')](_0x512300[_0x1872('0x6a')])||this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]][_0x1872('0x4f')]!==_[_0x1872('0x68')](_0x512300[_0x1872('0x4f')])||this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]][_0x1872('0x52')]!==_0x341209){this[_0x1872('0xf')][_0x512300['queue']][_0x1872('0x54')]=_['toNumber'](_0x512300[_0x1872('0x67')]);this['voiceQueues'][_0x512300['queue']][_0x1872('0x69')]=_[_0x1872('0x68')](_0x512300[_0x1872('0x6a')]);this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]]['available']=_[_0x1872('0x68')](_0x512300[_0x1872('0x4f')]);this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]][_0x1872('0x52')]=_0x341209>0x0?_0x341209:0x0;this['voiceQueues'][_0x512300[_0x1872('0x63')]]['talking']=this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]][_0x1872('0x52')]>_[_0x1872('0x68')](_0x512300[_0x1872('0x6a')])?_[_0x1872('0x68')](_0x512300[_0x1872('0x6a')]):this[_0x1872('0xf')][_0x512300['queue']][_0x1872('0x52')];this[_0x1872('0x6b')](this['voiceQueues'][_0x512300[_0x1872('0x63')]],'queuesummary');}logger[_0x1872('0x48')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x1872('0x3a')](this[_0x1872('0xf')][_0x512300[_0x1872('0x63')]],{'showHidden':![],'depth':null}));ami['emit']('custom:queuesummary',this['voiceQueues'][_0x512300[_0x1872('0x63')]]);}}}catch(_0x5d1574){logger['error'](_0x1872('0x62'),util[_0x1872('0x3a')](_0x5d1574,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x6c')]=function(_0x149470){logger[_0x1872('0x48')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x1872('0x3a')](_0x149470,{'showHidden':![],'depth':null}));this[_0x1872('0x10')]=!![];};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x17')]=function(_0x10f52d){try{if(this[_0x1872('0x5d')](_0x10f52d)){logger[_0x1872('0x48')](_0x1872('0x6d'),_0x10f52d[_0x1872('0x43')],util[_0x1872('0x3a')](_0x10f52d,{'showHidden':![],'depth':null}));if(_[_0x1872('0x5e')](this[_0x1872('0xc')][_0x10f52d[_0x1872('0x43')]]))this[_0x1872('0xc')][_0x10f52d[_0x1872('0x43')]]=[];if(_[_0x1872('0x5e')](this[_0x1872('0xe')][_0x10f52d['uniqueid']]))this['channels'][_0x10f52d[_0x1872('0x43')]]={};var _0x308783=new QueueReport();_0x308783[_0x1872('0x45')]=_0x10f52d['queue'];_0x308783[_0x1872('0x4d')]=this['voiceQueues'][_0x308783['name']]&&this[_0x1872('0xf')][_0x308783['name']][_0x1872('0x4d')]?this['voiceQueues'][_0x308783[_0x1872('0x45')]]['type']||_0x1872('0x4e'):_0x1872('0x4e');_0x308783[_0x1872('0x63')]=_0x10f52d[_0x1872('0x63')];_0x308783[_0x1872('0x6e')]=moment()[_0x1872('0x4a')](_0x1872('0x6f'));_0x308783[_0x1872('0x70')]=_0x10f52d[_0x1872('0x70')];_0x308783['count']=_0x10f52d[_0x1872('0x71')];_0x308783[_0x1872('0x43')]=_0x10f52d[_0x1872('0x43')];_0x308783[_0x1872('0x72')]=this[_0x1872('0xe')][_0x10f52d[_0x1872('0x43')]][_0x1872('0x72')];logger[_0x1872('0x73')](_0x1872('0x74'),_0x308783[_0x1872('0x45')],_0x308783[_0x1872('0x4d')]);_[_0x1872('0x75')](_0x308783,_[_0x1872('0x76')](_0x10f52d,_[_0x1872('0x77')](_0x308783)));this['queueReports'][_0x10f52d['uniqueid']]['push'](_0x308783);this[_0x1872('0xe')][_0x10f52d['uniqueid']]=_0x308783;this[_0x1872('0x78')](_0x308783,_0x1872('0x16'));}}catch(_0x3f5f03){logger[_0x1872('0x37')]('[%s][voiceQueueReport][queuecallerjoin]',_0x10f52d[_0x1872('0x43')],util[_0x1872('0x3a')](_0x3f5f03,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')]['syncQueueCallerAbandon']=function(_0x2619bb){try{if(this['isNotNull'](_0x2619bb)){logger[_0x1872('0x48')](_0x1872('0x79'),_0x2619bb[_0x1872('0x43')],util[_0x1872('0x3a')](_0x2619bb,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2619bb['uniqueid']]){var _0xc2360e=_[_0x1872('0x7a')](this[_0x1872('0xc')][_0x2619bb[_0x1872('0x43')]]);_0xc2360e['queuecallercomplete']=![];_0xc2360e['queuecallercompleteAt']=null;_0xc2360e[_0x1872('0x7b')]=_0x2619bb[_0x1872('0x7b')];_0xc2360e[_0x1872('0x7c')]=_0x2619bb[_0x1872('0x7c')];_0xc2360e[_0x1872('0x18')]=!![];_0xc2360e[_0x1872('0x7d')]=moment()[_0x1872('0x4a')](_0x1872('0x6f'));_0xc2360e[_0x1872('0x7e')]=_0x1872('0x7f');_0xc2360e[_0x1872('0x80')]=null;logger[_0x1872('0x73')](_0x1872('0x81'),_0xc2360e[_0x1872('0x45')],_0xc2360e[_0x1872('0x4d')]);this[_0x1872('0xe')][_0x2619bb['uniqueid']]=_0xc2360e;this[_0x1872('0x3e')](_0xc2360e,_0x1872('0x18'));}}}catch(_0x169eb6){logger[_0x1872('0x37')](_0x1872('0x79'),_0x2619bb[_0x1872('0x43')],util[_0x1872('0x3a')](_0x169eb6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1872('0x1a')]=function(_0x49e86b){try{if(this[_0x1872('0x5d')](_0x49e86b)){logger['debug'](_0x1872('0x82'),_0x49e86b['uniqueid'],util[_0x1872('0x3a')](_0x49e86b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x49e86b[_0x1872('0x43')]]){var _0x59abd0=_[_0x1872('0x7a')](this[_0x1872('0xc')][_0x49e86b['uniqueid']]);_0x59abd0[_0x1872('0x83')]=moment()[_0x1872('0x4a')](_0x1872('0x6f'));_0x59abd0[_0x1872('0x84')]=_0x49e86b[_0x1872('0x84')];_0x59abd0['connectedlinename']=_0x49e86b[_0x1872('0x85')];logger[_0x1872('0x73')](_0x1872('0x86'),_0x59abd0[_0x1872('0x45')],_0x59abd0[_0x1872('0x4d')],_0x49e86b['connectedlinenum'],_0x49e86b['connectedlinename']);this[_0x1872('0xe')][_0x49e86b['uniqueid']]=_0x59abd0;this['emitVoiceQueueChannelSave'](_0x59abd0,_0x1872('0x87'));}}}catch(_0x8cecba){logger[_0x1872('0x37')]('[%s][voiceQueueReport][queuecallerleave]',_0x49e86b[_0x1872('0x43')],util[_0x1872('0x3a')](_0x8cecba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x1c')]=function(_0x892788){try{if(this[_0x1872('0x5d')](_0x892788)){logger[_0x1872('0x48')](_0x1872('0x88'),_0x892788[_0x1872('0x43')],util[_0x1872('0x3a')](_0x892788,{'showHidden':![],'depth':null}));if(this[_0x1872('0xc')][_0x892788['uniqueid']]){var _0x5c299c=_[_0x1872('0x7a')](this[_0x1872('0xc')][_0x892788['uniqueid']]);_0x5c299c[_0x1872('0x89')]=!![];_0x5c299c['queuecallerexitreason']='COMPLETEDBYAGENT';logger[_0x1872('0x73')](_0x1872('0x8a'),_0x5c299c[_0x1872('0x45')],_0x5c299c[_0x1872('0x4d')]);}}}catch(_0x39ea27){logger[_0x1872('0x37')](_0x1872('0x88'),_0x892788['uniqueid'],util[_0x1872('0x3a')](_0x39ea27,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')]['syncAgentComplete']=function(_0x24b51c){try{if(this[_0x1872('0x5d')](_0x24b51c)){logger[_0x1872('0x48')](_0x1872('0x8b'),_0x24b51c['uniqueid'],util[_0x1872('0x3a')](_0x24b51c,{'showHidden':![],'depth':null}));if(this[_0x1872('0xc')][_0x24b51c['uniqueid']]){var _0x16b10e=_[_0x1872('0x7a')](this['queueReports'][_0x24b51c['uniqueid']]);_0x16b10e['queuecallerabandon']=![];_0x16b10e['queuecallerabandonAt']=null;_0x16b10e[_0x1872('0x8c')]=!![];_0x16b10e[_0x1872('0x80')]=_0x24b51c[_0x1872('0x8d')];_0x16b10e[_0x1872('0x7b')]=_0x24b51c['holdtime'];_0x16b10e[_0x1872('0x89')]=!![];_0x16b10e['queuecallerexit']=![];_0x16b10e[_0x1872('0x8e')]=null;if(!_0x16b10e[_0x1872('0x8f')]){if(_0x24b51c['reason']==_0x1872('0x8f')){_0x16b10e['queuecallerexitreason']='COMPLETED';logger[_0x1872('0x73')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x16b10e[_0x1872('0x45')],_0x16b10e[_0x1872('0x4d')]);}else{if(_[_0x1872('0x90')](_0x24b51c[_0x1872('0x91')][_0x1872('0x92')](),_0x1872('0x93'))){if(this[_0x1872('0xc')][_0x24b51c[_0x1872('0x94')]]){var _0x3e363d=_['last'](this[_0x1872('0xc')][_0x24b51c[_0x1872('0x94')]]);_0x3e363d[_0x1872('0x89')]=![];_0x3e363d[_0x1872('0x95')]=!![];_0x3e363d[_0x1872('0x8e')]=moment(_0x16b10e[_0x1872('0x6e')])[_0x1872('0x96')](_0x24b51c['holdtime'],_0x1872('0x97'))[_0x1872('0x4a')](_0x1872('0x6f'));_0x3e363d[_0x1872('0x7e')]='FORWARDTRANSFER';_0x3e363d[_0x1872('0x8f')]=!![];_0x3e363d[_0x1872('0x98')]=_0x1872('0x99');_0x3e363d[_0x1872('0x9a')]=_0x24b51c[_0x1872('0x9b')];_0x3e363d[_0x1872('0x9c')]=_0x24b51c['uniqueid'];logger[_0x1872('0x73')](_0x1872('0x9d'),_0x3e363d[_0x1872('0x45')],_0x3e363d[_0x1872('0x4d')]);var _0x101e15=this['queueReports'][_0x24b51c['linkedid']];this[_0x1872('0xc')][_0x24b51c['linkedid']]=this[_0x1872('0xc')][_0x24b51c[_0x1872('0x43')]];this['queueReports'][_0x24b51c[_0x1872('0x43')]]=_0x101e15;}}else{_0x16b10e[_0x1872('0x7e')]=_0x1872('0x9e')+_0x24b51c[_0x1872('0x9f')]['toUpperCase']();logger[_0x1872('0x73')](_0x1872('0xa0'),_0x16b10e[_0x1872('0x45')],_0x16b10e[_0x1872('0x4d')],_0x16b10e[_0x1872('0x7e')]);}}}this['channels'][_0x24b51c[_0x1872('0x43')]]=_0x16b10e;this[_0x1872('0x3e')](_0x16b10e,_0x1872('0x1b'));}}}catch(_0x339307){logger[_0x1872('0x37')](_0x1872('0x8b'),_0x24b51c[_0x1872('0x43')],util[_0x1872('0x3a')](_0x339307,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')]['syncVarSet']=function(_0x5f5c35){try{if(this['isNotNull'](_0x5f5c35)){logger[_0x1872('0x48')](_0x1872('0xa1'),_0x5f5c35['uniqueid'],util[_0x1872('0x3a')](_0x5f5c35,{'showHidden':![],'depth':null}));this['addVariable'](_0x5f5c35[_0x1872('0x43')],_['keys'](_0x5f5c35[_0x1872('0xa2')])[0x0],_0x5f5c35['value']);if(this['queueReports'][_0x5f5c35[_0x1872('0x43')]]){var _0x50f4ec=_[_0x1872('0x7a')](this[_0x1872('0xc')][_0x5f5c35[_0x1872('0x43')]]);if(_0x50f4ec){if(this[_0x1872('0x5d')](_0x5f5c35[_0x1872('0xa2')])&&this[_0x1872('0x5d')](_0x5f5c35[_0x1872('0xa2')]['queuestatus'])){switch(_0x5f5c35['value']){case _0x1872('0xa3'):_0x50f4ec[_0x1872('0x95')]=![];_0x50f4ec[_0x1872('0x8e')]=null;break;case _0x1872('0xa4'):_0x50f4ec[_0x1872('0xa5')]=_0x1872('0xa6');_0x50f4ec[_0x1872('0x95')]=!![];_0x50f4ec[_0x1872('0x8e')]=moment()[_0x1872('0x4a')](_0x1872('0x6f'));_0x50f4ec[_0x1872('0x83')]=moment()[_0x1872('0x4a')](_0x1872('0x6f'));logger['debug'](_0x1872('0xa7'),_0x5f5c35[_0x1872('0x43')],util['inspect'](_0x50f4ec,{'showHidden':![],'depth':null}));ami[_0x1872('0x40')](_0x1872('0xa8'),_0x50f4ec);break;default:_0x50f4ec[_0x1872('0x95')]=!![];_0x50f4ec[_0x1872('0x8e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x50f4ec['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x50f4ec[_0x1872('0x18')]=![];_0x50f4ec[_0x1872('0x7d')]=null;_0x50f4ec[_0x1872('0x7e')]=_0x5f5c35[_0x1872('0xa9')];this[_0x1872('0xe')][_0x5f5c35[_0x1872('0x43')]]=_0x50f4ec;this['emitVoiceQueueChannelRemove'](_0x50f4ec,'varset');}else if(this['isNotNull'](_0x5f5c35[_0x1872('0xa2')])&&this['isNotNull'](_0x5f5c35[_0x1872('0xa2')][_0x1872('0xaa')])){if(!_0x50f4ec[_0x1872('0x18')]){_0x50f4ec[_0x1872('0x95')]=!![];_0x50f4ec[_0x1872('0x8e')]=moment()[_0x1872('0x4a')](_0x1872('0x6f'));_0x50f4ec[_0x1872('0x7e')]=_0x1872('0xab');_0x50f4ec['queuecallerleaveAt']=moment()[_0x1872('0x4a')](_0x1872('0x6f'));this[_0x1872('0xe')][_0x5f5c35[_0x1872('0x43')]]=_0x50f4ec;}}logger['info'](_0x1872('0xac'),_0x5f5c35['uniqueid'],_0x50f4ec[_0x1872('0x45')],_0x50f4ec[_0x1872('0x4d')],_[_0x1872('0x77')](_0x5f5c35['variable'])[0x0],_0x5f5c35['value']);_0x50f4ec['variables']=this[_0x1872('0x12')][_0x5f5c35[_0x1872('0x43')]];}}}}catch(_0x4a853a){logger[_0x1872('0x37')](_0x1872('0xa1'),_0x5f5c35[_0x1872('0x43')],util['inspect'](_0x4a853a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0xad')]=function(_0x58370f,_0x4e79fc,_0x1ebbf0){var _0x37b7af=[_0x1872('0xae'),_0x1872('0xaf'),_0x1872('0xb0'),'rtpaudioqosjitterbridged',_0x1872('0xb1'),'rtpaudioqoslossbridged',_0x1872('0xb2'),_0x1872('0xb3'),_0x1872('0xb4'),_0x1872('0xb5'),_0x1872('0xb6'),_0x1872('0xb7'),_0x1872('0xb8'),_0x1872('0xb9'),_0x1872('0xba'),_0x1872('0xbb'),'membername',_0x1872('0xbc'),_0x1872('0xbd')];if(!_[_0x1872('0x31')](_0x4e79fc)&&!_[_0x1872('0xbe')](_0x37b7af,_0x4e79fc)){if(_[_0x1872('0x5e')](this['variables'][_0x58370f])){this[_0x1872('0x12')][_0x58370f]={};}this[_0x1872('0x12')][_0x58370f][_0x4e79fc]=_0x1ebbf0;}};VoiceQueueReport['prototype']['syncHangup']=function(_0xc027ac){try{if(this[_0x1872('0x5d')](_0xc027ac)){logger[_0x1872('0x48')]('[%s][voiceQueueReport][hangup]',_0xc027ac[_0x1872('0x43')],util[_0x1872('0x3a')](_0xc027ac,{'showHidden':![],'depth':null}));if(this[_0x1872('0xc')][_0xc027ac[_0x1872('0x43')]]){for(var _0x164500=0x0,_0x1a7725={};_0x164500<this[_0x1872('0xc')][_0xc027ac[_0x1872('0x43')]][_0x1872('0xbf')];_0x164500+=0x1){_0x1a7725=this[_0x1872('0xc')][_0xc027ac[_0x1872('0x43')]][_0x164500];if(this[_0x1872('0xf')][_0x1a7725['queue']]){if(_0x1a7725[_0x1872('0x95')]&&_0x1a7725[_0x1872('0x8f')]!=!![]){this['voiceQueues'][_0x1a7725[_0x1872('0x63')]]['unmanaged']+=0x1;}if(_0x1a7725[_0x1872('0x18')]){this['voiceQueues'][_0x1a7725['queue']][_0x1872('0xc0')]+=0x1;}this['voiceQueues'][_0x1a7725[_0x1872('0x63')]][_0x1872('0x51')]+=moment(_0x1a7725['queuecallerleaveAt'])[_0x1872('0xc1')](_0x1a7725[_0x1872('0x6e')],_0x1872('0x97'))||0x0;if(_0x164500===this[_0x1872('0xc')][_0xc027ac[_0x1872('0x43')]][_0x1872('0xbf')]-0x1){this[_0x1872('0xf')][_0x1a7725['queue']][_0x1872('0xc2')]+=moment()['milliseconds'](0x0)[_0x1872('0xc1')](_0x1a7725[_0x1872('0x6e')],_0x1872('0x97'));this[_0x1872('0xf')][_0x1a7725[_0x1872('0x63')]][_0x1872('0xc3')]+=0x1;if(_0x1a7725['queuecallercomplete']){this[_0x1872('0xf')][_0x1a7725[_0x1872('0x63')]]['answered']+=0x1;this[_0x1872('0xf')][_0x1a7725['queue']]['sumBillable']+=moment()[_0x1872('0xc4')](0x0)[_0x1872('0xc1')](_0x1a7725[_0x1872('0x83')],_0x1872('0x97'));_0x1a7725[_0x1872('0xc5')]=moment()['format'](_0x1872('0x6f'));_0x1a7725['queuecallerexit']=![];_0x1a7725['queuecallerexitAt']=null;}if(_0x1a7725[_0x1872('0x95')]&&_0x1a7725[_0x1872('0x8f')]!=!![]){_0x1a7725['lastevent']=_0x1872('0x53');logger[_0x1872('0x48')](_0x1872('0xc6'),_0xc027ac['uniqueid'],util[_0x1872('0x3a')](_0x1a7725,{'showHidden':![],'depth':null}));ami[_0x1872('0x40')](_0x1872('0xc7'),_0x1a7725);}if(_0x1a7725[_0x1872('0x18')]){_0x1a7725['lastevent']='abandoned';logger[_0x1872('0x48')](_0x1872('0xc8'),_0xc027ac[_0x1872('0x43')],util[_0x1872('0x3a')](_0x1a7725,{'showHidden':![],'depth':null}));ami[_0x1872('0x40')](_0x1872('0xc9'),_0x1a7725);}}else{this[_0x1872('0xf')][_0x1a7725[_0x1872('0x63')]]['sumDuration']+=this[_0x1872('0xf')][_0x1a7725[_0x1872('0x63')]][_0x1872('0x51')];}logger[_0x1872('0x73')](_0x1872('0xca'),_0xc027ac[_0x1872('0x43')],_0x1a7725['name'],_0x1a7725[_0x1872('0x4d')],_0xc027ac['cause-txt']);this[_0x1872('0xe')][_0xc027ac['uniqueid']]=_0x1a7725;this[_0x1872('0x3e')](_0x1a7725,_0x1872('0xcb'));this['emitVoiceQueueSummary'](this[_0x1872('0xf')][_0x1a7725['queue']],_0x1872('0xcb'));}}logger['debug'](_0x1872('0xcc'),_0xc027ac[_0x1872('0x43')],util['inspect'](this[_0x1872('0xc')][_0xc027ac[_0x1872('0x43')]],{'showHidden':![],'depth':null}));ami[_0x1872('0x40')](_0x1872('0xcd'),this[_0x1872('0xc')][_0xc027ac[_0x1872('0x43')]]);delete this[_0x1872('0xc')][_0xc027ac['uniqueid']];delete this['channels'][_0xc027ac[_0x1872('0x43')]];}if(this[_0x1872('0x12')][_0xc027ac['uniqueid']]){delete this[_0x1872('0x12')][_0xc027ac[_0x1872('0x43')]];}}}catch(_0x43368a){logger['error'](_0x1872('0xce'),_0xc027ac[_0x1872('0x43')],util[_0x1872('0x3a')](_0x43368a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0xcf')]=function(_0x294ae7){try{if(this[_0x1872('0x5d')](_0x294ae7)){logger[_0x1872('0x48')]('[%s][voiceQueueReport][attendedtransfer]',_0x294ae7[_0x1872('0x43')],util[_0x1872('0x3a')](_0x294ae7,{'showHidden':![],'depth':null}));var _0x1123fe;if(this[_0x1872('0xc')][_0x294ae7['transfereeuniqueid']]){_0x1123fe=_[_0x1872('0x7a')](this['queueReports'][_0x294ae7['transfereeuniqueid']]);_0x1123fe['transferexten']=_0x294ae7['secondtransfererexten'];_0x1123fe[_0x1872('0x9c')]=_0x294ae7[_0x1872('0xd0')];_0x1123fe['queuecallerexitreason']='ATTENDEDTRANSFER';_0x1123fe['transfer']=!![];_0x1123fe[_0x1872('0x98')]='ATTENDED';if(this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd0')]]){var _0x4b21d8=this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd0')]];this[_0x1872('0xc')][_0x294ae7['secondtransfereruniqueid']]=this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd1')]];this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd1')]]=_0x4b21d8;var _0x4d0fec=_[_0x1872('0x7a')](this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd1')]]);_0x4d0fec[_0x1872('0x2f')]=!![];}logger[_0x1872('0x73')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x294ae7[_0x1872('0x43')],_0x1123fe['name'],_0x1123fe[_0x1872('0x4d')],_0x1123fe[_0x1872('0x9a')],_0x1123fe[_0x1872('0x9c')]);}else if(this['queueReports'][_0x294ae7['transfertargetuniqueid']]){_0x1123fe=_['last'](this['queueReports'][_0x294ae7[_0x1872('0xd2')]]);_0x1123fe[_0x1872('0x9a')]=_0x294ae7[_0x1872('0xd3')];_0x1123fe[_0x1872('0x9c')]=_0x294ae7[_0x1872('0xd4')];_0x1123fe['queuecallerexitreason']=_0x1872('0xd5');_0x1123fe[_0x1872('0x8f')]=!![];_0x1123fe['transfertype']='ATTENDED';if(this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd4')]]){var _0x4b21d8=this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd4')]];this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd4')]]=this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd2')]];this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd2')]]=_0x4b21d8;var _0x4d0fec=_[_0x1872('0x7a')](this[_0x1872('0xc')][_0x294ae7[_0x1872('0xd2')]]);_0x4d0fec[_0x1872('0x2f')]=!![];}logger[_0x1872('0x73')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x294ae7[_0x1872('0x43')],_0x1123fe[_0x1872('0x45')],_0x1123fe[_0x1872('0x4d')],_0x1123fe[_0x1872('0x9a')],_0x1123fe[_0x1872('0x9c')]);}}}catch(_0x1e2d2b){logger[_0x1872('0x37')]('[%s][voiceQueueReport][attendedtransfer]',_0x294ae7[_0x1872('0x43')],util[_0x1872('0x3a')](_0x1e2d2b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1872('0x27')]=function(_0x385d9d){try{if(this[_0x1872('0x5d')](_0x385d9d)){logger[_0x1872('0x48')](_0x1872('0xd6'),_0x385d9d[_0x1872('0x43')],util['inspect'](_0x385d9d,{'showHidden':![],'depth':null}));if(this[_0x1872('0xc')][_0x385d9d[_0x1872('0xd1')]]){var _0x276c13=_['last'](this['queueReports'][_0x385d9d[_0x1872('0xd1')]]);_0x276c13[_0x1872('0x7e')]=_0x1872('0xd7');_0x276c13[_0x1872('0x8f')]=!![];_0x276c13[_0x1872('0x98')]=_0x1872('0xd8');_0x276c13['transferexten']=_0x385d9d['extension'];_0x276c13[_0x1872('0x9c')]=_0x385d9d[_0x1872('0xd1')];logger[_0x1872('0x73')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x385d9d[_0x1872('0x43')],_0x276c13['name'],_0x276c13['type'],_0x276c13[_0x1872('0x9a')],_0x276c13[_0x1872('0x9c')]);this[_0x1872('0x1e')]({'event':_0x1872('0xd9'),'uniqueid':_0x385d9d[_0x1872('0xd1')],'context':_0x385d9d[_0x1872('0xda')],'channel':_0x385d9d[_0x1872('0xdb')]});}}}catch(_0x42fa44){logger[_0x1872('0x37')](_0x1872('0xd6'),_0x385d9d['uniqueid'],util[_0x1872('0x3a')](_0x42fa44,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')]['syncMusicOnHoldStart']=function(_0x4decb9){try{if(this[_0x1872('0x5d')](_0x4decb9)){logger['debug'](_0x1872('0xdc'),_0x4decb9[_0x1872('0x43')],util['inspect'](_0x4decb9,{'showHidden':![],'depth':null}));if(this[_0x1872('0xc')][_0x4decb9[_0x1872('0x43')]]){var _0x597676=_[_0x1872('0x7a')](this['queueReports'][_0x4decb9['uniqueid']]);if(!_['isNil'](_0x597676[_0x1872('0x83')])){_0x597676[_0x1872('0xdd')]=moment()[_0x1872('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x1872('0x73')](_0x1872('0xde'),_0x4decb9['uniqueid'],_0x597676[_0x1872('0xdd')]);}}}}catch(_0x242f10){logger['error'](_0x1872('0xdc'),_0x4decb9[_0x1872('0x43')],util[_0x1872('0x3a')](_0x242f10,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x25')]=function(_0x278693){try{if(this[_0x1872('0x5d')](_0x278693)){logger[_0x1872('0x48')](_0x1872('0xdf'),_0x278693['uniqueid'],util[_0x1872('0x3a')](_0x278693,{'showHidden':![],'depth':null}));if(this[_0x1872('0xc')][_0x278693[_0x1872('0x43')]]){var _0x120eee=_[_0x1872('0x7a')](this['queueReports'][_0x278693['uniqueid']]);if(!_['isNil'](_0x120eee[_0x1872('0xdd')])){_0x120eee[_0x1872('0xe0')]+=moment()[_0x1872('0xc4')](0x0)[_0x1872('0xc1')](_0x120eee['mohstarttime'],_0x1872('0x97'));logger[_0x1872('0x73')](_0x1872('0xe1'),_0x278693[_0x1872('0x43')],_0x120eee[_0x1872('0xe0')]);delete _0x120eee[_0x1872('0xdd')];}}}}catch(_0x43fbbc){logger['error'](_0x1872('0xdf'),_0x278693[_0x1872('0x43')],util[_0x1872('0x3a')](_0x43fbbc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1872('0x8')][_0x1872('0x21')]=function(_0xfa639f){try{if(this[_0x1872('0x5d')](_0xfa639f)){logger[_0x1872('0x48')](_0x1872('0xe2'),_0xfa639f[_0x1872('0x43')],util[_0x1872('0x3a')](_0xfa639f,{'showHidden':![],'depth':null}));if(_0xfa639f[_0x1872('0xe3')]['toLowerCase']()===_0x1872('0xe4')){_0xfa639f[_0x1872('0xe5')]=_0xfa639f[_0x1872('0xe6')]&&_0xfa639f[_0x1872('0xe6')][_0x1872('0x90')]('CDR(routeAlias)')?_0xfa639f[_0x1872('0xe6')]:(_0xfa639f['appdata']||_0xfa639f['applicationdata'])[_0x1872('0x92')]();if(_['startsWith'](_0xfa639f[_0x1872('0xe5')][_0x1872('0x92')](),_0x1872('0xe7'))){logger[_0x1872('0x73')](_0x1872('0xe8'),_0xfa639f[_0x1872('0x43')],_0xfa639f['application'],_0xfa639f[_0x1872('0xe5')]);if(_[_0x1872('0x5e')](this['channels'][_0xfa639f[_0x1872('0x43')]]))this[_0x1872('0xe')][_0xfa639f['uniqueid']]={};var _0x10ed8c=_0xfa639f[_0x1872('0xe5')][_0x1872('0xe9')]('=');var _0x3bac13=_0x10ed8c[0x0][_0x1872('0x92')]()[_0x1872('0xea')](/cdr\((.*)\)/);if(_0x3bac13)this['channels'][_0xfa639f['uniqueid']][_0x3bac13[0x1]]=_0x10ed8c[0x1];}}}}catch(_0x4d8150){logger[_0x1872('0x37')](_0x1872('0xeb'),_0xfa639f['uniqueid'],util['inspect'](_0x4d8150,{'showHidden':![],'depth':null}));}};module[_0x1872('0xec')]=VoiceQueueReport;
\ No newline at end of file
index 95f4d8e..b87cb4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa37b=['CreateReportAgentPreview','campaign','queue','Request'];(function(_0x40951a,_0x2cbe60){var _0xdb2028=function(_0x134fa6){while(--_0x134fa6){_0x40951a['push'](_0x40951a['shift']());}};_0xdb2028(++_0x2cbe60);}(_0xa37b,0x65));var _0xba37=function(_0x1f99a0,_0x42fab3){_0x1f99a0=_0x1f99a0-0x0;var _0xdcb9d4=_0xa37b[_0x1f99a0];return _0xdcb9d4;};'use strict';var client=require('../client');exports['createHistory']=function(_0x398f13){return function(){_0x398f13[_0xba37('0x0')]=_0x398f13[_0xba37('0x1')];return client[_0xba37('0x2')](_0xba37('0x3'),{'body':_0x398f13,'log':_0xba37('0x3')});};};
\ No newline at end of file
+var _0x468c=['Request','CreateReportAgentPreview','../client','createHistory','queue'];(function(_0xabe145,_0x2ef96d){var _0x433e19=function(_0x3eca1a){while(--_0x3eca1a){_0xabe145['push'](_0xabe145['shift']());}};_0x433e19(++_0x2ef96d);}(_0x468c,0x1ab));var _0xc468=function(_0x424c53,_0x4559c7){_0x424c53=_0x424c53-0x0;var _0x93ac6d=_0x468c[_0x424c53];return _0x93ac6d;};'use strict';var client=require(_0xc468('0x0'));exports[_0xc468('0x1')]=function(_0x33c329){return function(){_0x33c329['campaign']=_0x33c329[_0xc468('0x2')];return client[_0xc468('0x3')]('CreateReportAgentPreview',{'body':_0x33c329,'log':_0xc468('0x4')});};};
\ No newline at end of file
index 382b5fb..ef492da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb23=['Request','CreateAttachment','../client','create'];(function(_0x1c7273,_0x42ab86){var _0x30945a=function(_0x3d100e){while(--_0x3d100e){_0x1c7273['push'](_0x1c7273['shift']());}};_0x30945a(++_0x42ab86);}(_0xfb23,0x1f2));var _0x3fb2=function(_0x10e1b9,_0x283511){_0x10e1b9=_0x10e1b9-0x0;var _0x4e1367=_0xfb23[_0x10e1b9];return _0x4e1367;};'use strict';var client=require(_0x3fb2('0x0'));exports[_0x3fb2('0x1')]=function(_0x40577f){return client[_0x3fb2('0x2')](_0x3fb2('0x3'),{'body':_0x40577f,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x9068=['../client','Request','CreateAttachment'];(function(_0x40ae34,_0x56713d){var _0x17e9c8=function(_0x2a7b35){while(--_0x2a7b35){_0x40ae34['push'](_0x40ae34['shift']());}};_0x17e9c8(++_0x56713d);}(_0x9068,0xea));var _0x8906=function(_0x50d788,_0x73ab6c){_0x50d788=_0x50d788-0x0;var _0x368bf7=_0x9068[_0x50d788];return _0x368bf7;};'use strict';var client=require(_0x8906('0x0'));exports['create']=function(_0x3c9a3c){return client[_0x8906('0x1')](_0x8906('0x2'),{'body':_0x3c9a3c,'log':_0x8906('0x2')});};
\ No newline at end of file
index 5359ec0..4b7ffb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialCutDigit','Trunk','callerid','active','TrunkBackup','Interval','SquareProject','getCampaign','getCampaigns','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength'];(function(_0x24b8b6,_0x4a0a8c){var _0x434ecf=function(_0x56218){while(--_0x56218){_0x24b8b6['push'](_0x24b8b6['shift']());}};_0x434ecf(++_0x4a0a8c);}(_0xadb5,0xad));var _0x5adb=function(_0x48c538,_0x4095db){_0x48c538=_0x48c538-0x0;var _0x1e1307=_0xadb5[_0x48c538];return _0x1e1307;};'use strict';var client=require('../client');exports[_0x5adb('0x0')]=function(){return function(){return client['Request'](_0x5adb('0x1'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x2'),_0x5adb('0x3'),'active',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'dialOriginateTimeout',_0x5adb('0x7'),_0x5adb('0x8'),_0x5adb('0x9'),_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe'),_0x5adb('0xf'),_0x5adb('0x10'),_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),_0x5adb('0x14'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0x17'),'dialAMDActive',_0x5adb('0x18'),'dialAMDGreeting',_0x5adb('0x19'),'dialAMDTotalAnalysisTime',_0x5adb('0x1a'),_0x5adb('0x1b'),_0x5adb('0x1c'),'dialAMDSilenceThreshold',_0x5adb('0x1d'),_0x5adb('0x1e'),_0x5adb('0x1f'),'dialRandomLastDigitCallerIdNumber',_0x5adb('0x20')],'include':[{'model':'Trunk','as':_0x5adb('0x21'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':_0x5adb('0x21'),'as':_0x5adb('0x24'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':'Interval','as':_0x5adb('0x25'),'attributes':['id','name'],'include':[{'model':_0x5adb('0x25'),'as':'Intervals','attributes':['id',_0x5adb('0x2'),'interval']}]},{'model':'SquareProject','as':_0x5adb('0x26'),'attributes':['id',_0x5adb('0x2')]}]},'log':_0x5adb('0x27')});};};
\ No newline at end of file
+var _0x5f2f=['dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','Trunk','callerid','TrunkBackup','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','GetCampaign','name','type','active','limitCalls'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x5f2f,0x73));var _0xf5f2=function(_0xcfaaa,_0x2c3935){_0xcfaaa=_0xcfaaa-0x0;var _0x1de67a=_0x5f2f[_0xcfaaa];return _0x1de67a;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),_0xf5f2('0x7'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0xf5f2('0x8'),_0xf5f2('0x9'),_0xf5f2('0xa'),_0xf5f2('0xb'),_0xf5f2('0xc'),_0xf5f2('0xd'),'dialNoAnswerRetryFrequency',_0xf5f2('0xe'),_0xf5f2('0xf'),_0xf5f2('0x10'),'dialDropMaxRetry',_0xf5f2('0x11'),_0xf5f2('0x12'),_0xf5f2('0x13'),'dialMachineMaxRetry',_0xf5f2('0x14'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0xf5f2('0x15'),_0xf5f2('0x16'),'dialAMDActive',_0xf5f2('0x17'),_0xf5f2('0x18'),_0xf5f2('0x19'),_0xf5f2('0x1a'),_0xf5f2('0x1b'),_0xf5f2('0x1c'),'dialAMDMaximumNumberOfWords',_0xf5f2('0x1d'),_0xf5f2('0x1e'),_0xf5f2('0x1f'),_0xf5f2('0x20'),_0xf5f2('0x21'),'dialCutDigit'],'include':[{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x22'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x24'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x25'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x26'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x27')]}]},{'model':'SquareProject','as':_0xf5f2('0x28'),'attributes':['id',_0xf5f2('0x4')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index df65098..b86fbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadd4=['Request','GetCmContact','createContact','CreateCmContact','getContacts'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xadd4,0x1ec));var _0x4add=function(_0xb6a6bf,_0x184dfd){_0xb6a6bf=_0xb6a6bf-0x0;var _0x4a36b5=_0xadd4[_0xb6a6bf];return _0x4a36b5;};'use strict';var client=require('../client');exports[_0x4add('0x0')]=function(_0x31e092){return function(){return client['Request'](_0x4add('0x1'),{'body':_0x31e092,'log':_0x4add('0x1')});};};exports[_0x4add('0x2')]=function(_0x33e913){return function(){return client[_0x4add('0x3')]('GetCmContact',{'options':_0x33e913,'log':_0x4add('0x4')});};};
\ No newline at end of file
+var _0xec4b=['../client','createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x29f003,_0x250918){var _0x3c0a07=function(_0x3681a3){while(--_0x3681a3){_0x29f003['push'](_0x29f003['shift']());}};_0x3c0a07(++_0x250918);}(_0xec4b,0xfc));var _0xbec4=function(_0x411322,_0x4fcedc){_0x411322=_0x411322-0x0;var _0x4fe4ee=_0xec4b[_0x411322];return _0x4fe4ee;};'use strict';var client=require(_0xbec4('0x0'));exports[_0xbec4('0x1')]=function(_0x2e3cd3){return function(){return client[_0xbec4('0x2')](_0xbec4('0x3'),{'body':_0x2e3cd3,'log':_0xbec4('0x3')});};};exports[_0xbec4('0x4')]=function(_0x16de72){return function(){return client['Request'](_0xbec4('0x5'),{'options':_0x16de72,'log':'GetCmContact'});};};
\ No newline at end of file
index e08ddae..1fcdae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d0=['ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','DESC','ASC','getContactDialerIvr','scheduledat','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','countReScheduled','getContactPreview','CmContact','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','../client','moment','lodash','getContacts','Request','GetCmHopper','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId'];(function(_0x1dd151,_0x4c0f08){var _0xb798b1=function(_0x37a378){while(--_0x37a378){_0x1dd151['push'](_0x1dd151['shift']());}};_0xb798b1(++_0x4c0f08);}(_0xd6d0,0x1c1));var _0x0d6d=function(_0xe73134,_0x508e09){_0xe73134=_0xe73134-0x0;var _0x303f46=_0xd6d0[_0xe73134];return _0x303f46;};'use strict';var client=require(_0x0d6d('0x0'));var moment=require(_0x0d6d('0x1'));var _=require(_0x0d6d('0x2'));exports[_0x0d6d('0x3')]=function(_0x26a13a,_0x31f1f8){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x5'),{'options':{'where':{'VoiceQueueId':_0x26a13a},'include':[{'model':'CmContact','as':_0x0d6d('0x6')}],'limit':_0x31f1f8,'raw':![]},'log':_0x0d6d('0x7')});};};exports[_0x0d6d('0x8')]=function(_0xc08c6,_0xe8126f,_0x47b0ad){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x9'),{'body':_0xc08c6,'options':{'where':{'VoiceQueueId':_0xe8126f,'scheduledat':{'$lte':moment()[_0x0d6d('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x47b0ad},'log':_0x0d6d('0x9')});};};exports[_0x0d6d('0xb')]=function(_0x128ad7){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x9'),{'body':_0x128ad7,'options':{'where':{'ContactId':_0x128ad7[_0x0d6d('0xc')],'ListId':_0x128ad7[_0x0d6d('0xd')],'VoiceQueueId':_0x128ad7[_0x0d6d('0xe')],'CampaignId':_0x128ad7[_0x0d6d('0xf')]}},'log':'rescheduleContact'});};};exports[_0x0d6d('0x10')]=function(_0x4a4534,_0x2ce5bb,_0x283a28){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x11'),{'options':{'where':{'VoiceQueueId':_0x4a4534,'ListId':_0x2ce5bb,'ContactId':_0x283a28}},'log':_0x0d6d('0x11')});};};exports['getContactDialer']=function(_0x27b63a,_0x47f593,_0x799c2b,_0x3f88d3){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x27b63a,'active':![],'scheduledat':{'$lte':moment()[_0x0d6d('0xa')](_0x0d6d('0x13'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x47f593}}]},'order':[['priority',_0x0d6d('0x14')],['scheduledat',_0x3f88d3],['id',_0x0d6d('0x15')]],'raw':!![],'limit':_0x799c2b},'log':'GetContactDialer'});};};exports[_0x0d6d('0x16')]=function(_0x5be8f3,_0xc43a8a,_0x960fe4){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5be8f3,'active':![],'scheduledat':{'$lte':moment()[_0x0d6d('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':'CmContact','as':_0x0d6d('0x6')}],'order':[['priority',_0x0d6d('0x14')],[_0x0d6d('0x17'),_0x960fe4],['id',_0x0d6d('0x15')]],'raw':!![],'limit':_0xc43a8a},'log':_0x0d6d('0x18')});};};exports['moveContactManagedDialer']=function(_0x434975,_0x581100){return function(){_0x434975[_0x0d6d('0x19')]=_0x434975[_0x0d6d('0x1a')];return client[_0x0d6d('0x4')](_0x0d6d('0x1b'),{'body':_0x434975,'options':{'where':{'ContactId':_0x434975[_0x0d6d('0xc')],'ListId':_0x434975['ListId'],'VoiceQueueId':_0x434975[_0x0d6d('0xe')],'CampaignId':_0x434975[_0x0d6d('0xf')],'active':_0x581100?undefined:!![]}},'log':_0x0d6d('0x1b')});};};exports[_0x0d6d('0x1c')]=function(_0x5c253f){return function(){return client[_0x0d6d('0x4')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x5c253f['id']?_0x5c253f['id']||null:null}},'log':_0x0d6d('0x1c')});};};exports[_0x0d6d('0x1d')]=function(_0x59810e){return function(){return client['Request']('GetCmHopperPreview',{'options':{'where':{'id':_0x59810e},'include':[{'model':_0x0d6d('0x1e'),'as':_0x0d6d('0x6')},{'model':_0x0d6d('0x1f'),'as':_0x0d6d('0x20'),'attributes':['id',_0x0d6d('0x21')]},{'model':_0x0d6d('0x22'),'as':_0x0d6d('0x23'),'attributes':['id',_0x0d6d('0x21')]}],'raw':!![]},'log':_0x0d6d('0x7')});};};exports[_0x0d6d('0x24')]=function(_0x26610c,_0x38dd26,_0x3d74ce){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x9'),{'body':_0x26610c,'options':{'where':{'id':_0x38dd26},'limit':_0x3d74ce},'log':_0x0d6d('0x9')});};};exports[_0x0d6d('0x25')]=function(_0xc00188,_0x4a0f61){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x26'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xc00188,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x0d6d('0xa')](_0x0d6d('0x13'))},'UserId':{'$in':_0x4a0f61}},'order':[['priority',_0x0d6d('0x14')],['scheduledat',_0x0d6d('0x14')],['id',_0x0d6d('0x15')]],'include':[{'model':_0x0d6d('0x1e'),'as':_0x0d6d('0x6')},{'model':_0x0d6d('0x1f'),'as':_0x0d6d('0x20'),'attributes':['id',_0x0d6d('0x21'),_0x0d6d('0x27')]}],'group':_0x0d6d('0x28'),'raw':!![]},'log':_0x0d6d('0x12')});};};exports[_0x0d6d('0x29')]=function(_0x13ca72){return function(){return client[_0x0d6d('0x4')]('ResetActiveCalls',{'body':_0x13ca72,'options':{},'log':'ResetActiveCalls'});};};
\ No newline at end of file
+var _0xe14d=['GetContactDialer','priority','DESC','scheduledat','ASC','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','db.CmHopper.UserId','../client','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xe14d,0xd4));var _0xde14=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xe14d[_0x13e741];return _0x3f8bb3;};'use strict';var client=require(_0xde14('0x0'));var moment=require('moment');var _=require('lodash');exports['getContacts']=function(_0x5a3057,_0x1f37da){return function(){return client['Request'](_0xde14('0x1'),{'options':{'where':{'VoiceQueueId':_0x5a3057},'include':[{'model':_0xde14('0x2'),'as':_0xde14('0x3')}],'limit':_0x1f37da,'raw':![]},'log':_0xde14('0x4')});};};exports[_0xde14('0x5')]=function(_0x460464,_0x161423,_0x2f129d){return function(){return client[_0xde14('0x6')](_0xde14('0x7'),{'body':_0x460464,'options':{'where':{'VoiceQueueId':_0x161423,'scheduledat':{'$lte':moment()[_0xde14('0x8')](_0xde14('0x9'))}},'limit':_0x2f129d},'log':'UpdateCmHopper'});};};exports[_0xde14('0xa')]=function(_0x474df2){return function(){return client[_0xde14('0x6')]('UpdateCmHopper',{'body':_0x474df2,'options':{'where':{'ContactId':_0x474df2[_0xde14('0xb')],'ListId':_0x474df2['ListId'],'VoiceQueueId':_0x474df2[_0xde14('0xc')],'CampaignId':_0x474df2[_0xde14('0xd')]}},'log':_0xde14('0xa')});};};exports['destroyContact']=function(_0x1fd03f,_0x554c9e,_0x3054b5){return function(){return client[_0xde14('0x6')](_0xde14('0xe'),{'options':{'where':{'VoiceQueueId':_0x1fd03f,'ListId':_0x554c9e,'ContactId':_0x3054b5}},'log':_0xde14('0xe')});};};exports[_0xde14('0xf')]=function(_0x13109,_0x1ab9c8,_0x55c8b5,_0xb25703){return function(){return client[_0xde14('0x6')](_0xde14('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x13109,'active':![],'scheduledat':{'$lte':moment()['format'](_0xde14('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x1ab9c8}}]},'order':[[_0xde14('0x11'),_0xde14('0x12')],[_0xde14('0x13'),_0xb25703],['id','ASC']],'raw':!![],'limit':_0x55c8b5},'log':'GetContactDialer'});};};exports['getContactDialerIvr']=function(_0xb2d7e5,_0x3965d3,_0x21e532){return function(){return client[_0xde14('0x6')](_0xde14('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0xb2d7e5,'active':![],'scheduledat':{'$lte':moment()['format'](_0xde14('0x9'))}},'include':[{'model':_0xde14('0x2'),'as':_0xde14('0x3')}],'order':[['priority',_0xde14('0x12')],[_0xde14('0x13'),_0x21e532],['id',_0xde14('0x14')]],'raw':!![],'limit':_0x3965d3},'log':'GetContactDialerIvr'});};};exports[_0xde14('0x15')]=function(_0x16e33f,_0x1e0c9b){return function(){_0x16e33f[_0xde14('0x16')]=_0x16e33f[_0xde14('0x17')];return client[_0xde14('0x6')](_0xde14('0x18'),{'body':_0x16e33f,'options':{'where':{'ContactId':_0x16e33f[_0xde14('0xb')],'ListId':_0x16e33f[_0xde14('0x19')],'VoiceQueueId':_0x16e33f['VoiceQueueId'],'CampaignId':_0x16e33f['CampaignId'],'active':_0x1e0c9b?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0xde14('0x1a')]=function(_0x46e808){return function(){return client[_0xde14('0x6')](_0xde14('0x1b'),{'options':{'where':{'VoiceQueueId':_0x46e808['id']?_0x46e808['id']||null:null}},'log':'countReScheduled'});};};exports[_0xde14('0x1c')]=function(_0x1c191b){return function(){return client[_0xde14('0x6')](_0xde14('0x1d'),{'options':{'where':{'id':_0x1c191b},'include':[{'model':_0xde14('0x2'),'as':_0xde14('0x3')},{'model':_0xde14('0x1e'),'as':_0xde14('0x1f'),'attributes':['id',_0xde14('0x20')]},{'model':'VoiceQueue','as':_0xde14('0x21'),'attributes':['id','name']}],'raw':!![]},'log':_0xde14('0x4')});};};exports[_0xde14('0x22')]=function(_0x1b2907,_0x2acb31,_0x4431fd){return function(){return client[_0xde14('0x6')](_0xde14('0x7'),{'body':_0x1b2907,'options':{'where':{'id':_0x2acb31},'limit':_0x4431fd},'log':_0xde14('0x7')});};};exports[_0xde14('0x23')]=function(_0x2faf25,_0x5ab72a){return function(){return client[_0xde14('0x6')](_0xde14('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2faf25,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xde14('0x8')](_0xde14('0x9'))},'UserId':{'$in':_0x5ab72a}},'order':[[_0xde14('0x11'),_0xde14('0x12')],['scheduledat',_0xde14('0x12')],['id',_0xde14('0x14')]],'include':[{'model':_0xde14('0x2'),'as':_0xde14('0x3')},{'model':_0xde14('0x1e'),'as':_0xde14('0x1f'),'attributes':['id',_0xde14('0x20'),'voicePause']}],'group':_0xde14('0x25'),'raw':!![]},'log':_0xde14('0x10')});};};
\ No newline at end of file
index c47b3c1..33d2ee9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['Contact','phone','checkIsBlackListIvr','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x56c258,_0x1754c2){var _0x2c1e72=function(_0x320d28){while(--_0x320d28){_0x56c258['push'](_0x56c258['shift']());}};_0x2c1e72(++_0x1754c2);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x22093a,_0xa7acf1){_0x22093a=_0x22093a-0x0;var _0x2f4989=_0x4cf8[_0x22093a];return _0x2f4989;};'use strict';var client=require(_0x84cf('0x0'));exports[_0x84cf('0x1')]=function(_0x287eb2){return function(){return client[_0x84cf('0x2')](_0x84cf('0x3'),{'options':{'where':{'VoiceQueueId':_0x287eb2[_0x84cf('0x4')],'phone':_0x287eb2[_0x84cf('0x5')][_0x84cf('0x6')]},'raw':![]},'log':_0x84cf('0x3')});};};exports[_0x84cf('0x7')]=function(_0x5844d7){return function(){return client[_0x84cf('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x5844d7['CampaignId'],'phone':_0x5844d7[_0x84cf('0x5')]['phone']},'raw':![]},'log':_0x84cf('0x8')});};};
\ No newline at end of file
+var _0xf7b4=['Contact','GetCmHopperBlackIvr','../client','Request','GetCmHopperBlack','phone','checkIsBlackListIvr','CampaignId'];(function(_0x3bd79b,_0x301814){var _0xdfc185=function(_0xad138c){while(--_0xad138c){_0x3bd79b['push'](_0x3bd79b['shift']());}};_0xdfc185(++_0x301814);}(_0xf7b4,0x152));var _0x4f7b=function(_0x317777,_0x393aa0){_0x317777=_0x317777-0x0;var _0x128680=_0xf7b4[_0x317777];return _0x128680;};'use strict';var client=require(_0x4f7b('0x0'));exports['checkIsBlackList']=function(_0x581bb0){return function(){return client[_0x4f7b('0x1')](_0x4f7b('0x2'),{'options':{'where':{'VoiceQueueId':_0x581bb0['VoiceQueueId'],'phone':_0x581bb0['Contact'][_0x4f7b('0x3')]},'raw':![]},'log':_0x4f7b('0x2')});};};exports[_0x4f7b('0x4')]=function(_0x44f991){return function(){return client[_0x4f7b('0x1')](_0x4f7b('0x2'),{'options':{'where':{'CampaignId':_0x44f991[_0x4f7b('0x5')],'phone':_0x44f991[_0x4f7b('0x6')][_0x4f7b('0x3')]},'raw':![]},'log':_0x4f7b('0x7')});};};
\ No newline at end of file
index d71b362..f6da9be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5887=['Request','CreateCmHopperFinal','../client','campaign','queue'];(function(_0xb935df,_0x5ad1ce){var _0x351e84=function(_0x562796){while(--_0x562796){_0xb935df['push'](_0xb935df['shift']());}};_0x351e84(++_0x5ad1ce);}(_0x5887,0xf2));var _0x7588=function(_0x55969b,_0x1ebe62){_0x55969b=_0x55969b-0x0;var _0x3d7fc1=_0x5887[_0x55969b];return _0x3d7fc1;};'use strict';var client=require(_0x7588('0x0'));exports['createContact']=function(_0x207f58){return function(){_0x207f58[_0x7588('0x1')]=_0x207f58[_0x7588('0x2')];return client[_0x7588('0x3')](_0x7588('0x4'),{'body':_0x207f58,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x1b7b=['CreateCmHopperFinal','createContact','campaign','Request'];(function(_0x3c62a2,_0x26d573){var _0x2a99ae=function(_0x5c8384){while(--_0x5c8384){_0x3c62a2['push'](_0x3c62a2['shift']());}};_0x2a99ae(++_0x26d573);}(_0x1b7b,0xf1));var _0xb1b7=function(_0x1e611f,_0x3b7abb){_0x1e611f=_0x1e611f-0x0;var _0x1ac022=_0x1b7b[_0x1e611f];return _0x1ac022;};'use strict';var client=require('../client');exports[_0xb1b7('0x0')]=function(_0x365cdf){return function(){_0x365cdf[_0xb1b7('0x1')]=_0x365cdf['queue'];return client[_0xb1b7('0x2')](_0xb1b7('0x3'),{'body':_0x365cdf,'log':_0xb1b7('0x3')});};};
\ No newline at end of file
index fbd3fd4..71bbb3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff2=['YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','queue','GetCampaignHopperHistory','ivr','../client','createHistory','campaign','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','format'];(function(_0x2afb44,_0x249a57){var _0x15ccc2=function(_0x180748){while(--_0x180748){_0x2afb44['push'](_0x2afb44['shift']());}};_0x15ccc2(++_0x249a57);}(_0xaff2,0x68));var _0x2aff=function(_0x4c5c97,_0x4f85bf){_0x4c5c97=_0x4c5c97-0x0;var _0xd5d2cb=_0xaff2[_0x4c5c97];return _0xd5d2cb;};'use strict';var client=require(_0x2aff('0x0'));var moment=require('moment');exports[_0x2aff('0x1')]=function(_0x37e502){return function(){_0x37e502[_0x2aff('0x2')]=_0x37e502['queue'];return client[_0x2aff('0x3')]('CreateCmHopperHistory',{'body':_0x37e502,'log':_0x2aff('0x4')});};};exports[_0x2aff('0x5')]=function(_0x4399ba){return function(){return client[_0x2aff('0x3')](_0x2aff('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x2aff('0x7')](_0x4399ba,_0x2aff('0x8'))[_0x2aff('0x9')](_0x2aff('0xa')),moment()[_0x2aff('0x9')](_0x2aff('0xa'))]}},'raw':![]},'log':_0x2aff('0xb')});};};exports['getVoiceQueueHopperHistory']=function(_0x59e850){return function(){return client[_0x2aff('0x3')](_0x2aff('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2aff('0xd')](_0x2aff('0xe'))[_0x2aff('0x9')](_0x2aff('0xa')),moment()[_0x2aff('0xf')](_0x2aff('0xe'))['format'](_0x2aff('0xa'))]},'campaigntype':_0x2aff('0x10')},'raw':![]},'log':_0x2aff('0xc')});};};exports['getCampaignHopperHistory']=function(_0x409c27){return function(){return client[_0x2aff('0x3')](_0x2aff('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2aff('0xd')](_0x2aff('0xe'))['format'](_0x2aff('0xa')),moment()['endOf'](_0x2aff('0xe'))[_0x2aff('0x9')](_0x2aff('0xa'))]},'campaigntype':_0x2aff('0x12')},'raw':![]},'log':_0x2aff('0x11')});};};
\ No newline at end of file
+var _0x482b=['YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','../client','queue','CreateCmHopperHistory','avgHandleTime','Request','AvgHandleTime','subtract','minutes','format'];(function(_0xe5b944,_0x1ab28d){var _0x52913f=function(_0x4528a6){while(--_0x4528a6){_0xe5b944['push'](_0xe5b944['shift']());}};_0x52913f(++_0x1ab28d);}(_0x482b,0x195));var _0xb482=function(_0xad5906,_0x3d9471){_0xad5906=_0xad5906-0x0;var _0x2009a6=_0x482b[_0xad5906];return _0x2009a6;};'use strict';var client=require(_0xb482('0x0'));var moment=require('moment');exports['createHistory']=function(_0x4af584){return function(){_0x4af584['campaign']=_0x4af584[_0xb482('0x1')];return client['Request'](_0xb482('0x2'),{'body':_0x4af584,'log':_0xb482('0x2')});};};exports[_0xb482('0x3')]=function(_0x3a22d8){return function(){return client[_0xb482('0x4')](_0xb482('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0xb482('0x6')](_0x3a22d8,_0xb482('0x7'))[_0xb482('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xb482('0x8')](_0xb482('0x9'))]}},'raw':![]},'log':_0xb482('0xa')});};};exports[_0xb482('0xb')]=function(_0x186586){return function(){return client[_0xb482('0x4')](_0xb482('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb482('0xd')](_0xb482('0xe'))[_0xb482('0x8')](_0xb482('0x9')),moment()[_0xb482('0xf')](_0xb482('0xe'))[_0xb482('0x8')](_0xb482('0x9'))]},'campaigntype':'queue'},'raw':![]},'log':_0xb482('0xc')});};};exports[_0xb482('0x10')]=function(_0x168cb8){return function(){return client[_0xb482('0x4')](_0xb482('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb482('0xd')]('day')['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xb482('0xf')](_0xb482('0xe'))['format'](_0xb482('0x9'))]},'campaigntype':'ivr'},'raw':![]},'log':_0xb482('0x11')});};};
\ No newline at end of file
index 9e58213..c4a6c20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa467=['callerid','getFaxAccount','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk'];(function(_0x5158f8,_0x49f41f){var _0x1dc397=function(_0x59a0f3){while(--_0x59a0f3){_0x5158f8['push'](_0x5158f8['shift']());}};_0x1dc397(++_0x49f41f);}(_0xa467,0x143));var _0x7a46=function(_0x3cb893,_0x29a693){_0x3cb893=_0x3cb893-0x0;var _0xd7a754=_0xa467[_0x3cb893];return _0xd7a754;};'use strict';var client=require(_0x7a46('0x0'));exports[_0x7a46('0x1')]=function(){return function(){return client[_0x7a46('0x2')](_0x7a46('0x3'),{'options':{'raw':![],'attributes':['id',_0x7a46('0x4'),_0x7a46('0x5'),_0x7a46('0x6'),_0x7a46('0x7'),_0x7a46('0x8'),'minrate','maxrate',_0x7a46('0x9'),_0x7a46('0xa'),_0x7a46('0xb'),_0x7a46('0xc'),_0x7a46('0xd'),'TrunkId',_0x7a46('0xe'),_0x7a46('0xf')],'include':[{'model':_0x7a46('0x10'),'as':_0x7a46('0x10'),'attributes':['id',_0x7a46('0x4'),_0x7a46('0x11'),'active']}]},'log':_0x7a46('0x12')});};};exports['notify']=function(_0x172832,_0x555f7a){return client[_0x7a46('0x2')](_0x7a46('0x13'),{'account':{'id':_0x172832},'body':_0x555f7a,'log':_0x7a46('0x13')});};
\ No newline at end of file
+var _0xe820=['NotifyFaxAccount','../client','Request','description','ecm','headerinfo','minrate','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk','name','active','getFaxAccount','notify'];(function(_0x9e64ae,_0x50faea){var _0x1c20e9=function(_0x190843){while(--_0x190843){_0x9e64ae['push'](_0x9e64ae['shift']());}};_0x1c20e9(++_0x50faea);}(_0xe820,0xd2));var _0x0e82=function(_0x26f24d,_0x1b21e4){_0x26f24d=_0x26f24d-0x0;var _0x598758=_0xe820[_0x26f24d];return _0x598758;};'use strict';var client=require(_0x0e82('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x0e82('0x1')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id','name',_0x0e82('0x2'),_0x0e82('0x3'),_0x0e82('0x4'),'localstationid',_0x0e82('0x5'),'maxrate',_0x0e82('0x6'),_0x0e82('0x7'),_0x0e82('0x8'),_0x0e82('0x9'),_0x0e82('0xa'),'TrunkId',_0x0e82('0xb'),_0x0e82('0xc')],'include':[{'model':_0x0e82('0xd'),'as':_0x0e82('0xd'),'attributes':['id',_0x0e82('0xe'),'callerid',_0x0e82('0xf')]}]},'log':_0x0e82('0x10')});};};exports[_0x0e82('0x11')]=function(_0x10b2e2,_0x1f1800){return client[_0x0e82('0x1')](_0x0e82('0x12'),{'account':{'id':_0x10b2e2},'body':_0x1f1800,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index c116519..624ff21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5cd=['UpdateFaxMessage','../client','update'];(function(_0x308ac8,_0x249cd3){var _0x2dae12=function(_0x1c546b){while(--_0x1c546b){_0x308ac8['push'](_0x308ac8['shift']());}};_0x2dae12(++_0x249cd3);}(_0xc5cd,0x85));var _0xdc5c=function(_0x112498,_0x1440c8){_0x112498=_0x112498-0x0;var _0x520e4f=_0xc5cd[_0x112498];return _0x520e4f;};'use strict';var client=require(_0xdc5c('0x0'));exports[_0xdc5c('0x1')]=function(_0x3d3f5d,_0x49acb9){return client['Request'](_0xdc5c('0x2'),{'body':_0x49acb9,'options':{'where':{'AttachmentId':_0x3d3f5d}},'log':_0xdc5c('0x2')});};
\ No newline at end of file
+var _0x251f=['UpdateFaxMessage','update','Request'];(function(_0x289770,_0x2fa5ea){var _0x32bd72=function(_0x32a4a3){while(--_0x32a4a3){_0x289770['push'](_0x289770['shift']());}};_0x32bd72(++_0x2fa5ea);}(_0x251f,0x13c));var _0xf251=function(_0x3064a3,_0x20e71a){_0x3064a3=_0x3064a3-0x0;var _0x4319b6=_0x251f[_0x3064a3];return _0x4319b6;};'use strict';var client=require('../client');exports[_0xf251('0x0')]=function(_0x103cca,_0x39a82d){return client[_0xf251('0x1')]('UpdateFaxMessage',{'body':_0x39a82d,'options':{'where':{'AttachmentId':_0x103cca}},'log':_0xf251('0x2')});};
\ No newline at end of file
index f5db205..695b8a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f7e=['DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','username','password','authType','type','serverUrl','DeskConfiguration'];(function(_0x49a9de,_0x378fac){var _0x312c9e=function(_0x35868e){while(--_0x35868e){_0x49a9de['push'](_0x49a9de['shift']());}};_0x312c9e(++_0x378fac);}(_0x7f7e,0x145));var _0xe7f7=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x7f7e[_0x46698a];return _0x356db0;};'use strict';var client=require(_0xe7f7('0x0'));exports[_0xe7f7('0x1')]=function(){return function(_0xa4fc41){return client[_0xe7f7('0x2')](_0xe7f7('0x3'),{'options':{'raw':![],'attributes':['id',_0xe7f7('0x4'),'description',_0xe7f7('0x5'),_0xe7f7('0x6'),'remoteUri',_0xe7f7('0x7'),_0xe7f7('0x8'),_0xe7f7('0x9')],'include':[{'model':_0xe7f7('0xa'),'as':'Configurations','attributes':['id',_0xe7f7('0x4')],'include':[{'model':_0xe7f7('0xb'),'as':_0xe7f7('0xc'),'attributes':['id',_0xe7f7('0x8'),_0xe7f7('0xd'),_0xe7f7('0xe')],'include':[{'model':_0xe7f7('0xf'),'as':_0xe7f7('0xf'),'attributes':['id','name']}]},{'model':_0xe7f7('0xb'),'as':_0xe7f7('0x10'),'attributes':['id',_0xe7f7('0x8'),_0xe7f7('0xd'),_0xe7f7('0x11'),_0xe7f7('0x12'),_0xe7f7('0x13'),_0xe7f7('0xe')],'include':[{'model':_0xe7f7('0xf'),'as':_0xe7f7('0xf'),'attributes':['id',_0xe7f7('0x4')]}]},{'model':_0xe7f7('0xb'),'as':_0xe7f7('0x14'),'attributes':['id','type','content',_0xe7f7('0x15'),'nameField',_0xe7f7('0x16'),_0xe7f7('0xe')],'include':[{'model':_0xe7f7('0xf'),'as':'Variable','attributes':['id',_0xe7f7('0x4')]}]},{'model':'Tag','as':_0xe7f7('0x17'),'attributes':['id',_0xe7f7('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0xfff2=['keyType','keyContent','Fields','idField','nameField','customField','Tags','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','content','variableName','Variable','Descriptions','key'];(function(_0x4a1ad3,_0x426866){var _0x4b95be=function(_0x545f51){while(--_0x545f51){_0x4a1ad3['push'](_0x4a1ad3['shift']());}};_0x4b95be(++_0x426866);}(_0xfff2,0x10b));var _0x2fff=function(_0x4c7196,_0x3b105b){_0x4c7196=_0x4c7196-0x0;var _0x651037=_0xfff2[_0x4c7196];return _0x651037;};'use strict';var client=require('../../client');exports[_0x2fff('0x0')]=function(){return function(_0x57d417){return client[_0x2fff('0x1')](_0x2fff('0x2'),{'options':{'raw':![],'attributes':['id',_0x2fff('0x3'),_0x2fff('0x4'),_0x2fff('0x5'),_0x2fff('0x6'),_0x2fff('0x7'),_0x2fff('0x8'),_0x2fff('0x9'),_0x2fff('0xa')],'include':[{'model':_0x2fff('0xb'),'as':_0x2fff('0xc'),'attributes':['id',_0x2fff('0x3')],'include':[{'model':_0x2fff('0xd'),'as':'Subjects','attributes':['id',_0x2fff('0x9'),_0x2fff('0xe'),_0x2fff('0xf')],'include':[{'model':'Variable','as':_0x2fff('0x10'),'attributes':['id',_0x2fff('0x3')]}]},{'model':'DeskField','as':_0x2fff('0x11'),'attributes':['id',_0x2fff('0x9'),_0x2fff('0xe'),_0x2fff('0x12'),_0x2fff('0x13'),_0x2fff('0x14'),_0x2fff('0xf')],'include':[{'model':'Variable','as':_0x2fff('0x10'),'attributes':['id',_0x2fff('0x3')]}]},{'model':_0x2fff('0xd'),'as':_0x2fff('0x15'),'attributes':['id',_0x2fff('0x9'),_0x2fff('0xe'),_0x2fff('0x16'),_0x2fff('0x17'),_0x2fff('0x18'),_0x2fff('0xf')],'include':[{'model':_0x2fff('0x10'),'as':'Variable','attributes':['id',_0x2fff('0x3')]}]},{'model':'Tag','as':_0x2fff('0x19'),'attributes':['id',_0x2fff('0x3')]}]}]},'log':_0x2fff('0x2')});};};
\ No newline at end of file
index 381bdde..f5eeb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c07=['serverUrl','Dynamics365Configuration','Configurations','name','ticketType','Dynamics365Field','type','content','variableName','Variable','keyType','keyContent','Fields','idField','customField','GetDynamics365Account','../../client','getDynamics365Accounts','Request','username','password','remoteUri','clientId','clientSecret'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x7c07,0x130));var _0x77c0=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x7c07[_0x432682];return _0x463d05;};'use strict';var client=require(_0x77c0('0x0'));exports[_0x77c0('0x1')]=function(){return function(_0x245bfd){return client[_0x77c0('0x2')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id','name',_0x77c0('0x3'),_0x77c0('0x4'),_0x77c0('0x5'),'tenantId',_0x77c0('0x6'),_0x77c0('0x7'),_0x77c0('0x8'),'description'],'include':[{'model':_0x77c0('0x9'),'as':_0x77c0('0xa'),'attributes':['id',_0x77c0('0xb'),_0x77c0('0xc')],'include':[{'model':_0x77c0('0xd'),'as':'Subjects','attributes':['id',_0x77c0('0xe'),_0x77c0('0xf'),_0x77c0('0x10')],'include':[{'model':_0x77c0('0x11'),'as':_0x77c0('0x11'),'attributes':['id',_0x77c0('0xb')]}]},{'model':_0x77c0('0xd'),'as':'Descriptions','attributes':['id',_0x77c0('0xe'),_0x77c0('0xf'),'key',_0x77c0('0x12'),_0x77c0('0x13'),'variableName'],'include':[{'model':_0x77c0('0x11'),'as':_0x77c0('0x11'),'attributes':['id',_0x77c0('0xb')]}]},{'model':_0x77c0('0xd'),'as':_0x77c0('0x14'),'attributes':['id',_0x77c0('0xe'),_0x77c0('0xf'),_0x77c0('0x15'),'nameField',_0x77c0('0x16'),_0x77c0('0x10')],'include':[{'model':_0x77c0('0x11'),'as':_0x77c0('0x11'),'attributes':['id',_0x77c0('0xb')]}]}]}]},'log':_0x77c0('0x17')});};};
\ No newline at end of file
+var _0x7226=['Fields','idField','customField','getDynamics365Accounts','GetDynamics365Account','name','tenantId','clientId','clientSecret','Configurations','ticketType','Dynamics365Field','Subjects','type','content','variableName','Variable','key','keyType','keyContent'];(function(_0x4d3238,_0x4e72be){var _0x4e3546=function(_0x40ce7f){while(--_0x40ce7f){_0x4d3238['push'](_0x4d3238['shift']());}};_0x4e3546(++_0x4e72be);}(_0x7226,0x157));var _0x6722=function(_0xdb3a1c,_0x50eb61){_0xdb3a1c=_0xdb3a1c-0x0;var _0xdb5e17=_0x7226[_0xdb3a1c];return _0xdb5e17;};'use strict';var client=require('../../client');exports[_0x6722('0x0')]=function(){return function(_0xdcbf5c){return client['Request'](_0x6722('0x1'),{'options':{'raw':![],'attributes':['id',_0x6722('0x2'),'username','password','remoteUri',_0x6722('0x3'),_0x6722('0x4'),_0x6722('0x5'),'serverUrl','description'],'include':[{'model':'Dynamics365Configuration','as':_0x6722('0x6'),'attributes':['id',_0x6722('0x2'),_0x6722('0x7')],'include':[{'model':_0x6722('0x8'),'as':_0x6722('0x9'),'attributes':['id',_0x6722('0xa'),_0x6722('0xb'),_0x6722('0xc')],'include':[{'model':_0x6722('0xd'),'as':'Variable','attributes':['id',_0x6722('0x2')]}]},{'model':_0x6722('0x8'),'as':'Descriptions','attributes':['id',_0x6722('0xa'),_0x6722('0xb'),_0x6722('0xe'),_0x6722('0xf'),_0x6722('0x10'),_0x6722('0xc')],'include':[{'model':_0x6722('0xd'),'as':_0x6722('0xd'),'attributes':['id',_0x6722('0x2')]}]},{'model':'Dynamics365Field','as':_0x6722('0x11'),'attributes':['id',_0x6722('0xa'),'content',_0x6722('0x12'),'nameField',_0x6722('0x13'),_0x6722('0xc')],'include':[{'model':_0x6722('0xd'),'as':_0x6722('0xd'),'attributes':['id','name']}]}]}]},'log':_0x6722('0x1')});};};
\ No newline at end of file
index 9ceb32c..116d9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['FreshdeskField','content','Variable','Descriptions','key','keyType','keyContent','variableName','Fields','type','idField','nameField','../../client','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0a6b,0x120));var _0xb0a6=function(_0x20f76a,_0x2605e2){_0x20f76a=_0x20f76a-0x0;var _0x30016d=_0x0a6b[_0x20f76a];return _0x30016d;};'use strict';var client=require(_0xb0a6('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x2c6c47){return client[_0xb0a6('0x1')](_0xb0a6('0x2'),{'options':{'raw':![],'attributes':['id',_0xb0a6('0x3'),_0xb0a6('0x4'),_0xb0a6('0x5'),_0xb0a6('0x6'),_0xb0a6('0x7')],'include':[{'model':_0xb0a6('0x8'),'as':_0xb0a6('0x9'),'attributes':['id','name'],'include':[{'model':_0xb0a6('0xa'),'attributes':['id','name']},{'model':_0xb0a6('0xb'),'as':'Subjects','attributes':['id','type',_0xb0a6('0xc'),'variableName'],'include':[{'model':_0xb0a6('0xd'),'as':_0xb0a6('0xd'),'attributes':['id','name']}]},{'model':_0xb0a6('0xb'),'as':_0xb0a6('0xe'),'attributes':['id','type',_0xb0a6('0xc'),_0xb0a6('0xf'),_0xb0a6('0x10'),_0xb0a6('0x11'),_0xb0a6('0x12')],'include':[{'model':_0xb0a6('0xd'),'as':_0xb0a6('0xd'),'attributes':['id',_0xb0a6('0x3')]}]},{'model':'FreshdeskField','as':_0xb0a6('0x13'),'attributes':['id',_0xb0a6('0x14'),_0xb0a6('0xc'),_0xb0a6('0x15'),_0xb0a6('0x16'),'customField',_0xb0a6('0x12')],'include':[{'model':_0xb0a6('0xd'),'as':'Variable','attributes':['id',_0xb0a6('0x3')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0x38d0=['key','keyType','keyContent','Fields','idField','nameField','getFreshdeskAccounts','Request','name','username','serverUrl','Configurations','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions'];(function(_0x461f34,_0x152409){var _0x282af1=function(_0x2f4c09){while(--_0x2f4c09){_0x461f34['push'](_0x461f34['shift']());}};_0x282af1(++_0x152409);}(_0x38d0,0x123));var _0x038d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x38d0[_0x42cae2];return _0x5f256f;};'use strict';var client=require('../../client');exports[_0x038d('0x0')]=function(){return function(_0x327d9d){return client[_0x038d('0x1')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x038d('0x2'),_0x038d('0x3'),'apiKey','remoteUri',_0x038d('0x4')],'include':[{'model':'FreshdeskConfiguration','as':_0x038d('0x5'),'attributes':['id',_0x038d('0x2')],'include':[{'model':'Tag','attributes':['id',_0x038d('0x2')]},{'model':_0x038d('0x6'),'as':_0x038d('0x7'),'attributes':['id',_0x038d('0x8'),_0x038d('0x9'),_0x038d('0xa')],'include':[{'model':_0x038d('0xb'),'as':_0x038d('0xb'),'attributes':['id',_0x038d('0x2')]}]},{'model':_0x038d('0x6'),'as':_0x038d('0xc'),'attributes':['id',_0x038d('0x8'),'content',_0x038d('0xd'),_0x038d('0xe'),_0x038d('0xf'),'variableName'],'include':[{'model':_0x038d('0xb'),'as':_0x038d('0xb'),'attributes':['id',_0x038d('0x2')]}]},{'model':_0x038d('0x6'),'as':_0x038d('0x10'),'attributes':['id',_0x038d('0x8'),_0x038d('0x9'),_0x038d('0x11'),_0x038d('0x12'),'customField','variableName'],'include':[{'model':'Variable','as':_0x038d('0xb'),'attributes':['id',_0x038d('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 4dd8c47..69c3aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef17=['type','content','key','keyType','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri','FreshsalesConfiguration','Subjects','variableName','Variable','FreshsalesField','Descriptions'];(function(_0xdbfb47,_0x4ec8d6){var _0x337742=function(_0x123fe2){while(--_0x123fe2){_0xdbfb47['push'](_0xdbfb47['shift']());}};_0x337742(++_0x4ec8d6);}(_0xef17,0x136));var _0x7ef1=function(_0x31b184,_0x520de3){_0x31b184=_0x31b184-0x0;var _0xceb08f=_0xef17[_0x31b184];return _0xceb08f;};'use strict';var client=require(_0x7ef1('0x0'));exports[_0x7ef1('0x1')]=function(){return function(_0x465d19){return client[_0x7ef1('0x2')](_0x7ef1('0x3'),{'options':{'raw':![],'attributes':['id',_0x7ef1('0x4'),_0x7ef1('0x5'),_0x7ef1('0x6'),_0x7ef1('0x7'),'serverUrl'],'include':[{'model':_0x7ef1('0x8'),'as':'Configurations','attributes':['id',_0x7ef1('0x4')],'include':[{'model':'FreshsalesField','as':_0x7ef1('0x9'),'attributes':['id','type','content',_0x7ef1('0xa')],'include':[{'model':_0x7ef1('0xb'),'as':'Variable','attributes':['id',_0x7ef1('0x4')]}]},{'model':_0x7ef1('0xc'),'as':_0x7ef1('0xd'),'attributes':['id',_0x7ef1('0xe'),_0x7ef1('0xf'),_0x7ef1('0x10'),_0x7ef1('0x11'),'keyContent','variableName'],'include':[{'model':_0x7ef1('0xb'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0xeff8=['getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','FreshsalesField','Subjects','type','variableName','Variable','content','key','keyContent','../../client'];(function(_0x42ca15,_0x193ccb){var _0x1c6ded=function(_0x40989a){while(--_0x40989a){_0x42ca15['push'](_0x42ca15['shift']());}};_0x1c6ded(++_0x193ccb);}(_0xeff8,0x186));var _0x8eff=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xeff8[_0x39096d];return _0x13da4f;};'use strict';var client=require(_0x8eff('0x0'));exports[_0x8eff('0x1')]=function(){return function(_0x50e01f){return client[_0x8eff('0x2')](_0x8eff('0x3'),{'options':{'raw':![],'attributes':['id',_0x8eff('0x4'),'username',_0x8eff('0x5'),_0x8eff('0x6'),_0x8eff('0x7')],'include':[{'model':_0x8eff('0x8'),'as':'Configurations','attributes':['id',_0x8eff('0x4')],'include':[{'model':_0x8eff('0x9'),'as':_0x8eff('0xa'),'attributes':['id',_0x8eff('0xb'),'content',_0x8eff('0xc')],'include':[{'model':_0x8eff('0xd'),'as':_0x8eff('0xd'),'attributes':['id',_0x8eff('0x4')]}]},{'model':'FreshsalesField','as':'Descriptions','attributes':['id',_0x8eff('0xb'),_0x8eff('0xe'),_0x8eff('0xf'),'keyType',_0x8eff('0x10'),_0x8eff('0xc')],'include':[{'model':'Variable','as':_0x8eff('0xd'),'attributes':['id',_0x8eff('0x4')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 8dba93c..da8dbc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83cd=['name','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','password','remoteUri','clientId','securityToken','serverUrl','type','Configurations','moduleSearch','ticketType','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable'];(function(_0x1b6ca0,_0x3fb4c0){var _0x12213d=function(_0x3588a1){while(--_0x3588a1){_0x1b6ca0['push'](_0x1b6ca0['shift']());}};_0x12213d(++_0x3fb4c0);}(_0x83cd,0x17b));var _0xd83c=function(_0x1dd82f,_0x52acb7){_0x1dd82f=_0x1dd82f-0x0;var _0x353ca4=_0x83cd[_0x1dd82f];return _0x353ca4;};'use strict';var client=require(_0xd83c('0x0'));exports[_0xd83c('0x1')]=function(){return function(_0x155e14){return client[_0xd83c('0x2')](_0xd83c('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd83c('0x4'),_0xd83c('0x5'),_0xd83c('0x6'),_0xd83c('0x7'),'clientSecret',_0xd83c('0x8'),_0xd83c('0x9'),_0xd83c('0xa')],'include':[{'model':'SalesforceConfiguration','as':_0xd83c('0xb'),'attributes':['id','name',_0xd83c('0xc'),'moduleCreate',_0xd83c('0xd'),'leadId',_0xd83c('0xe'),_0xd83c('0xf'),_0xd83c('0x10')],'include':[{'model':_0xd83c('0x11'),'as':_0xd83c('0x12'),'include':[{'model':_0xd83c('0x13'),'as':_0xd83c('0x13'),'attributes':['id','name']}]},{'model':_0xd83c('0x11'),'as':'Descriptions','include':[{'model':'Variable','as':_0xd83c('0x13'),'attributes':['id',_0xd83c('0x14')]}]},{'model':_0xd83c('0x11'),'as':'Fields','include':[{'model':_0xd83c('0x13'),'as':_0xd83c('0x13'),'attributes':['id',_0xd83c('0x14')]}]}]}]},'log':_0xd83c('0x3')});};};
\ No newline at end of file
+var _0x1527=['Subjects','Variable','name','Descriptions','getSalesforceAccounts','Request','GetSalesforceAccount','password','remoteUri','clientSecret','securityToken','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','SalesforceField'];(function(_0x4110df,_0x3f82fe){var _0x2112f9=function(_0x3e8365){while(--_0x3e8365){_0x4110df['push'](_0x4110df['shift']());}};_0x2112f9(++_0x3f82fe);}(_0x1527,0xc1));var _0x7152=function(_0x1ff575,_0xdba21f){_0x1ff575=_0x1ff575-0x0;var _0x48fc9e=_0x1527[_0x1ff575];return _0x48fc9e;};'use strict';var client=require('../../client');exports[_0x7152('0x0')]=function(){return function(_0x3e8436){return client[_0x7152('0x1')](_0x7152('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0x7152('0x3'),_0x7152('0x4'),'clientId',_0x7152('0x5'),_0x7152('0x6'),'serverUrl',_0x7152('0x7')],'include':[{'model':_0x7152('0x8'),'as':_0x7152('0x9'),'attributes':['id','name',_0x7152('0xa'),_0x7152('0xb'),_0x7152('0xc'),_0x7152('0xd'),_0x7152('0xe'),_0x7152('0xf'),'additionalSearchLead'],'include':[{'model':_0x7152('0x10'),'as':_0x7152('0x11'),'include':[{'model':_0x7152('0x12'),'as':_0x7152('0x12'),'attributes':['id',_0x7152('0x13')]}]},{'model':'SalesforceField','as':_0x7152('0x14'),'include':[{'model':_0x7152('0x12'),'as':'Variable','attributes':['id',_0x7152('0x13')]}]},{'model':_0x7152('0x10'),'as':'Fields','include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7152('0x13')]}]}]}]},'log':_0x7152('0x2')});};};
\ No newline at end of file
index 5cb07cb..09b5c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x524e,0x15e));var _0xe524=function(_0xe0f2b0,_0x39db69){_0xe0f2b0=_0xe0f2b0-0x0;var _0xa04fe6=_0x524e[_0xe0f2b0];return _0xa04fe6;};'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
+var _0xf494=['idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','type','content','variableName','Variable','ServicenowField','Descriptions','key','keyContent','Fields'];(function(_0x2e4033,_0x4b3b49){var _0x47690d=function(_0x483825){while(--_0x483825){_0x2e4033['push'](_0x2e4033['shift']());}};_0x47690d(++_0x4b3b49);}(_0xf494,0x1c6));var _0x4f49=function(_0x595364,_0x379a7a){_0x595364=_0x595364-0x0;var _0x143d10=_0xf494[_0x595364];return _0x143d10;};'use strict';var client=require(_0x4f49('0x0'));exports[_0x4f49('0x1')]=function(){return function(_0x3063f3){return client['Request'](_0x4f49('0x2'),{'options':{'raw':![],'attributes':['id',_0x4f49('0x3'),_0x4f49('0x4'),_0x4f49('0x5'),_0x4f49('0x6'),_0x4f49('0x7'),_0x4f49('0x8'),_0x4f49('0x9')],'include':[{'model':_0x4f49('0xa'),'as':_0x4f49('0xb'),'attributes':['id',_0x4f49('0x3')],'include':[{'model':'ServicenowField','as':'Subjects','attributes':['id',_0x4f49('0xc'),_0x4f49('0xd'),_0x4f49('0xe')],'include':[{'model':_0x4f49('0xf'),'as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]},{'model':_0x4f49('0x10'),'as':_0x4f49('0x11'),'attributes':['id','type',_0x4f49('0xd'),_0x4f49('0x12'),'keyType',_0x4f49('0x13'),'variableName'],'include':[{'model':'Variable','as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]},{'model':'ServicenowField','as':_0x4f49('0x14'),'attributes':['id',_0x4f49('0xc'),_0x4f49('0xd'),_0x4f49('0x15'),_0x4f49('0x16'),_0x4f49('0x17'),_0x4f49('0xe')],'include':[{'model':'Variable','as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]}]}]},'log':_0x4f49('0x18')});};};
\ No newline at end of file
index a9648c9..c95b78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0xf8e45b,_0x336e08){var _0xb38c41=function(_0x51f9d8){while(--_0x51f9d8){_0xf8e45b['push'](_0xf8e45b['shift']());}};_0xb38c41(++_0x336e08);}(_0x14a0,0x8e));var _0x014a=function(_0x2ce311,_0x22a10e){_0x2ce311=_0x2ce311-0x0;var _0x4af42d=_0x14a0[_0x2ce311];return _0x4af42d;};'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
+var _0xda2d=['Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField'];(function(_0xf3e4a0,_0x16a172){var _0x43f1cc=function(_0x3abdf5){while(--_0x3abdf5){_0xf3e4a0['push'](_0xf3e4a0['shift']());}};_0x43f1cc(++_0x16a172);}(_0xda2d,0x102));var _0xdda2=function(_0x3ca284,_0x11ce5f){_0x3ca284=_0x3ca284-0x0;var _0x2a0348=_0xda2d[_0x3ca284];return _0x2a0348;};'use strict';var client=require('../../client');exports[_0xdda2('0x0')]=function(){return function(_0x35f029){return client[_0xdda2('0x1')](_0xdda2('0x2'),{'options':{'raw':![],'attributes':['id',_0xdda2('0x3'),'username','password','remoteUri',_0xdda2('0x4')],'include':[{'model':_0xdda2('0x5'),'as':_0xdda2('0x6'),'attributes':['id',_0xdda2('0x3')],'include':[{'model':_0xdda2('0x7'),'as':_0xdda2('0x8'),'attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]},{'model':_0xdda2('0x7'),'as':'Descriptions','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xd'),_0xdda2('0xe'),_0xdda2('0xf'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':_0xdda2('0xc'),'attributes':['id','name']}]},{'model':'SugarcrmField','as':'Fields','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0x10'),_0xdda2('0x11'),_0xdda2('0x12'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
index 4b72261..c4e34f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7652=['serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','name','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','description','accessKey','remoteUri'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7652,0x13e));var _0x2765=function(_0x4f75a3,_0x2c4ec4){_0x4f75a3=_0x4f75a3-0x0;var _0x45ca11=_0x7652[_0x4f75a3];return _0x45ca11;};'use strict';var client=require(_0x2765('0x0'));exports[_0x2765('0x1')]=function(){return function(_0x20f44c){return client[_0x2765('0x2')](_0x2765('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x2765('0x4'),'username',_0x2765('0x5'),_0x2765('0x6'),_0x2765('0x7')],'include':[{'model':_0x2765('0x8'),'as':_0x2765('0x9'),'attributes':['id','name'],'include':[{'model':_0x2765('0xa'),'as':_0x2765('0xb'),'attributes':['id',_0x2765('0xc'),_0x2765('0xd'),_0x2765('0xe')],'include':[{'model':_0x2765('0xf'),'as':'Variable','attributes':['id',_0x2765('0x10')]}]},{'model':_0x2765('0xa'),'as':_0x2765('0x11'),'attributes':['id',_0x2765('0xc'),'content',_0x2765('0x12'),_0x2765('0x13'),_0x2765('0x14'),_0x2765('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x2765('0x10')]}]},{'model':_0x2765('0xa'),'as':_0x2765('0x15'),'attributes':['id',_0x2765('0xc'),'content',_0x2765('0x16'),_0x2765('0x17'),_0x2765('0x18'),'variableName'],'include':[{'model':'Variable','as':_0x2765('0xf'),'attributes':['id',_0x2765('0x10')]}]}]}]},'log':_0x2765('0x3')});};};
\ No newline at end of file
+var _0xd0f0=['GetVtigerAccount','name','description','accessKey','remoteUri','serverUrl','Configurations','VtigerField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','type','idField','nameField','../../client','getVtigerAccounts','Request'];(function(_0x3a5633,_0x81269c){var _0x5be488=function(_0x495c5b){while(--_0x495c5b){_0x3a5633['push'](_0x3a5633['shift']());}};_0x5be488(++_0x81269c);}(_0xd0f0,0x105));var _0x0d0f=function(_0x346047,_0x4b6669){_0x346047=_0x346047-0x0;var _0x536fed=_0xd0f0[_0x346047];return _0x536fed;};'use strict';var client=require(_0x0d0f('0x0'));exports[_0x0d0f('0x1')]=function(){return function(_0x1c90d9){return client[_0x0d0f('0x2')](_0x0d0f('0x3'),{'options':{'raw':![],'attributes':['id',_0x0d0f('0x4'),_0x0d0f('0x5'),'username',_0x0d0f('0x6'),_0x0d0f('0x7'),_0x0d0f('0x8')],'include':[{'model':'VtigerConfiguration','as':_0x0d0f('0x9'),'attributes':['id',_0x0d0f('0x4')],'include':[{'model':_0x0d0f('0xa'),'as':_0x0d0f('0xb'),'attributes':['id','type',_0x0d0f('0xc'),_0x0d0f('0xd')],'include':[{'model':_0x0d0f('0xe'),'as':_0x0d0f('0xe'),'attributes':['id',_0x0d0f('0x4')]}]},{'model':'VtigerField','as':_0x0d0f('0xf'),'attributes':['id','type',_0x0d0f('0xc'),_0x0d0f('0x10'),_0x0d0f('0x11'),_0x0d0f('0x12'),_0x0d0f('0xd')],'include':[{'model':_0x0d0f('0xe'),'as':'Variable','attributes':['id',_0x0d0f('0x4')]}]},{'model':_0x0d0f('0xa'),'as':'Fields','attributes':['id',_0x0d0f('0x13'),'content',_0x0d0f('0x14'),_0x0d0f('0x15'),'customField',_0x0d0f('0xd')],'include':[{'model':_0x0d0f('0xe'),'as':_0x0d0f('0xe'),'attributes':['id',_0x0d0f('0x4')]}]}]}]},'log':_0x0d0f('0x3')});};};
\ No newline at end of file
index 634c7fd..31749d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe3d=['authType','serverUrl','type','ZendeskConfiguration','name','Tag','ZendeskField','Subjects','content','variableName','Variable','key','keyType','keyContent','idField','customField','GetZendeskAccount','../../client','getZendeskAccounts','Request','password','token'];(function(_0x25149b,_0x3827d9){var _0x5c3597=function(_0x2a51f9){while(--_0x2a51f9){_0x25149b['push'](_0x25149b['shift']());}};_0x5c3597(++_0x3827d9);}(_0xbe3d,0x1b3));var _0xdbe3=function(_0x575f32,_0x32d24c){_0x575f32=_0x575f32-0x0;var _0x84d4ef=_0xbe3d[_0x575f32];return _0x84d4ef;};'use strict';var client=require(_0xdbe3('0x0'));exports[_0xdbe3('0x1')]=function(){return function(_0xc36e31){return client[_0xdbe3('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id','name','username',_0xdbe3('0x3'),_0xdbe3('0x4'),'remoteUri',_0xdbe3('0x5'),_0xdbe3('0x6'),_0xdbe3('0x7')],'include':[{'model':_0xdbe3('0x8'),'as':'Configurations','attributes':['id',_0xdbe3('0x9')],'include':[{'model':_0xdbe3('0xa'),'attributes':['id','name']},{'model':_0xdbe3('0xb'),'as':_0xdbe3('0xc'),'attributes':['id',_0xdbe3('0x7'),_0xdbe3('0xd'),_0xdbe3('0xe')],'include':[{'model':_0xdbe3('0xf'),'as':_0xdbe3('0xf'),'attributes':['id',_0xdbe3('0x9')]}]},{'model':_0xdbe3('0xb'),'as':'Descriptions','attributes':['id','type','content',_0xdbe3('0x10'),_0xdbe3('0x11'),_0xdbe3('0x12'),_0xdbe3('0xe')],'include':[{'model':_0xdbe3('0xf'),'as':_0xdbe3('0xf'),'attributes':['id',_0xdbe3('0x9')]}]},{'model':_0xdbe3('0xb'),'as':'Fields','attributes':['id',_0xdbe3('0x7'),'content',_0xdbe3('0x13'),'nameField',_0xdbe3('0x14'),_0xdbe3('0xe')],'include':[{'model':_0xdbe3('0xf'),'as':_0xdbe3('0xf'),'attributes':['id',_0xdbe3('0x9')]}]}]}]},'log':_0xdbe3('0x15')});};};
\ No newline at end of file
+var _0x3b37=['token','remoteUri','serverUrl','type','name','Tag','ZendeskField','Subjects','content','variableName','Variable','key','keyType','nameField','customField','GetZendeskAccount','../../client','getZendeskAccounts','Request','username','password'];(function(_0x160d97,_0x5379be){var _0x3a3e8e=function(_0x899174){while(--_0x899174){_0x160d97['push'](_0x160d97['shift']());}};_0x3a3e8e(++_0x5379be);}(_0x3b37,0x1b4));var _0x73b3=function(_0x1665b4,_0x2ccad5){_0x1665b4=_0x1665b4-0x0;var _0x14c2bb=_0x3b37[_0x1665b4];return _0x14c2bb;};'use strict';var client=require(_0x73b3('0x0'));exports[_0x73b3('0x1')]=function(){return function(_0x594ce6){return client[_0x73b3('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id','name',_0x73b3('0x3'),_0x73b3('0x4'),_0x73b3('0x5'),_0x73b3('0x6'),'authType',_0x73b3('0x7'),_0x73b3('0x8')],'include':[{'model':'ZendeskConfiguration','as':'Configurations','attributes':['id',_0x73b3('0x9')],'include':[{'model':_0x73b3('0xa'),'attributes':['id',_0x73b3('0x9')]},{'model':_0x73b3('0xb'),'as':_0x73b3('0xc'),'attributes':['id','type',_0x73b3('0xd'),_0x73b3('0xe')],'include':[{'model':_0x73b3('0xf'),'as':_0x73b3('0xf'),'attributes':['id',_0x73b3('0x9')]}]},{'model':_0x73b3('0xb'),'as':'Descriptions','attributes':['id','type',_0x73b3('0xd'),_0x73b3('0x10'),_0x73b3('0x11'),'keyContent',_0x73b3('0xe')],'include':[{'model':'Variable','as':_0x73b3('0xf'),'attributes':['id',_0x73b3('0x9')]}]},{'model':_0x73b3('0xb'),'as':'Fields','attributes':['id',_0x73b3('0x8'),'content','idField',_0x73b3('0x12'),_0x73b3('0x13'),_0x73b3('0xe')],'include':[{'model':'Variable','as':_0x73b3('0xf'),'attributes':['id',_0x73b3('0x9')]}]}]}]},'log':_0x73b3('0x14')});};};
\ No newline at end of file
index 3f8da11..1a65f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d3=['code','refreshToken','Configurations','moduleSearch','ZohoField','content','Variable','Descriptions','type','key','keyContent','variableName','idField','nameField','customField','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd5d3,0x122));var _0x3d5d=function(_0x43fdb4,_0x5a62c3){_0x43fdb4=_0x43fdb4-0x0;var _0x21bc22=_0xd5d3[_0x43fdb4];return _0x21bc22;};'use strict';var client=require('../../client');exports[_0x3d5d('0x0')]=function(){return function(_0x5d497f){return client[_0x3d5d('0x1')](_0x3d5d('0x2'),{'options':{'raw':![],'attributes':['id',_0x3d5d('0x3'),_0x3d5d('0x4'),_0x3d5d('0x5'),_0x3d5d('0x6'),_0x3d5d('0x7'),_0x3d5d('0x8'),_0x3d5d('0x9'),_0x3d5d('0xa'),_0x3d5d('0xb')],'include':[{'model':'ZohoConfiguration','as':_0x3d5d('0xc'),'attributes':['id',_0x3d5d('0x3'),'moduleCreate',_0x3d5d('0xd'),'description'],'include':[{'model':_0x3d5d('0xe'),'as':'Subjects','attributes':['id','type',_0x3d5d('0xf'),'variableName'],'include':[{'model':_0x3d5d('0x10'),'as':_0x3d5d('0x10'),'attributes':['id',_0x3d5d('0x3')]}]},{'model':_0x3d5d('0xe'),'as':_0x3d5d('0x11'),'attributes':['id',_0x3d5d('0x12'),_0x3d5d('0xf'),_0x3d5d('0x13'),'keyType',_0x3d5d('0x14'),_0x3d5d('0x15')],'include':[{'model':_0x3d5d('0x10'),'as':_0x3d5d('0x10'),'attributes':['id',_0x3d5d('0x3')]}]},{'model':_0x3d5d('0xe'),'as':'Fields','attributes':['id',_0x3d5d('0x12'),_0x3d5d('0xf'),_0x3d5d('0x16'),_0x3d5d('0x17'),_0x3d5d('0x18'),_0x3d5d('0x15')],'include':[{'model':_0x3d5d('0x10'),'as':_0x3d5d('0x10'),'attributes':['id',_0x3d5d('0x3')]}]}]}]},'log':_0x3d5d('0x2')});};};
\ No newline at end of file
+var _0x6d48=['ZohoField','keyType','keyContent','Fields','idField','../../client','getZohoAccounts','GetZohoAccount','name','description','host','zone','clientId','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','Subjects','type','content','variableName','Variable'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6d48,0x78));var _0x86d4=function(_0x4bf4d6,_0x53b4ae){_0x4bf4d6=_0x4bf4d6-0x0;var _0x48bbe8=_0x6d48[_0x4bf4d6];return _0x48bbe8;};'use strict';var client=require(_0x86d4('0x0'));exports[_0x86d4('0x1')]=function(){return function(_0x38cc14){return client['Request'](_0x86d4('0x2'),{'options':{'raw':![],'attributes':['id',_0x86d4('0x3'),_0x86d4('0x4'),_0x86d4('0x5'),_0x86d4('0x6'),_0x86d4('0x7'),'clientSecret',_0x86d4('0x8'),_0x86d4('0x9'),_0x86d4('0xa')],'include':[{'model':_0x86d4('0xb'),'as':_0x86d4('0xc'),'attributes':['id',_0x86d4('0x3'),'moduleCreate','moduleSearch',_0x86d4('0x4')],'include':[{'model':'ZohoField','as':_0x86d4('0xd'),'attributes':['id',_0x86d4('0xe'),_0x86d4('0xf'),_0x86d4('0x10')],'include':[{'model':_0x86d4('0x11'),'as':_0x86d4('0x11'),'attributes':['id',_0x86d4('0x3')]}]},{'model':_0x86d4('0x12'),'as':'Descriptions','attributes':['id',_0x86d4('0xe'),_0x86d4('0xf'),'key',_0x86d4('0x13'),_0x86d4('0x14'),_0x86d4('0x10')],'include':[{'model':_0x86d4('0x11'),'as':_0x86d4('0x11'),'attributes':['id','name']}]},{'model':_0x86d4('0x12'),'as':_0x86d4('0x15'),'attributes':['id',_0x86d4('0xe'),_0x86d4('0xf'),_0x86d4('0x16'),'nameField','customField',_0x86d4('0x10')],'include':[{'model':_0x86d4('0x11'),'as':'Variable','attributes':['id',_0x86d4('0x3')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 5a48677..d50cd83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc58b=['outbound','dialstring','moment','../client','voiceQueueReport','queuecallercompleteAt','CreateMemberReport','voice','isNil','format','SIP/%s','lastAssignedTo','interface','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','toNumber','uniqueid','Request','membername','starttime','endtime','diff'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc58b,0xc6));var _0xbc58=function(_0x310801,_0x10519b){_0x310801=_0x310801-0x0;var _0x41565e=_0xc58b[_0x310801];return _0x41565e;};'use strict';var moment=require(_0xbc58('0x0'));var _=require('lodash');var util=require('util');var client=require(_0xbc58('0x1'));exports[_0xbc58('0x2')]=function(_0x1973b5){var _0x36b127=_0x1973b5[_0xbc58('0x3')]||_0x1973b5['queuecallerexitAt'];return client['Request'](_0xbc58('0x4'),{'body':{'channel':_0xbc58('0x5'),'membername':_0x1973b5['lastAssignedTo'],'interface':_[_0xbc58('0x6')](_0x1973b5['interface'])?util[_0xbc58('0x7')](_0xbc58('0x8'),_0x1973b5[_0xbc58('0x9')]):_0x1973b5[_0xbc58('0xa')],'type':_0xbc58('0xb'),'enterAt':_0x1973b5[_0xbc58('0xc')],'exitAt':_0x36b127,'duration':moment(_0x36b127)['diff'](_0x1973b5[_0xbc58('0xc')],_0xbc58('0xd')),'data1':_0xbc58('0xe'),'data2':_0x1973b5[_0xbc58('0xf')],'data3':_0x1973b5[_0xbc58('0x10')],'data4':null,'data5':_0x1973b5['queue'],'role':_0xbc58('0x11'),'internal':_0x1973b5[_0xbc58('0x12')]?_[_0xbc58('0x13')](_0x1973b5[_0xbc58('0x12')]):undefined,'uniqueid':_0x1973b5[_0xbc58('0x14')]},'log':_0xbc58('0x4')});};exports['voiceDialReport']=function(_0x501d1c){return client[_0xbc58('0x15')]('CreateMemberReport',{'body':{'channel':_0xbc58('0x5'),'membername':_0x501d1c[_0xbc58('0x16')],'interface':_0x501d1c['interface'],'type':'TALKING','enterAt':_0x501d1c[_0xbc58('0x17')],'exitAt':_0x501d1c[_0xbc58('0x18')],'duration':moment(_0x501d1c[_0xbc58('0x18')])[_0xbc58('0x19')](_0x501d1c[_0xbc58('0x17')],_0xbc58('0xd'))>=0x0?moment(_0x501d1c[_0xbc58('0x18')])['diff'](_0x501d1c[_0xbc58('0x17')],_0xbc58('0xd')):null,'data1':_0xbc58('0x1a'),'data2':_0x501d1c[_0xbc58('0x12')],'data3':_0x501d1c[_0xbc58('0x10')],'data4':_0x501d1c[_0xbc58('0x1b')]||null,'role':_0xbc58('0x11'),'internal':_0x501d1c[_0xbc58('0x12')]?_[_0xbc58('0x13')](_0x501d1c[_0xbc58('0x12')]):undefined,'uniqueid':_0x501d1c[_0xbc58('0x14')]},'log':_0xbc58('0x4')});};
\ No newline at end of file
+var _0x2a11=['lodash','voiceQueueReport','queuecallercompleteAt','CreateMemberReport','voice','lastAssignedTo','isNil','format','SIP/%s','interface','TALKING','queuecallerleaveAt','diff','inbound','calleridnum','exten','agent','accountcode','toNumber','uniqueid','voiceDialReport','Request','membername','starttime','endtime','seconds','outbound','moment'];(function(_0x74d40f,_0x102cc5){var _0x2cd3d1=function(_0x4cbdbe){while(--_0x4cbdbe){_0x74d40f['push'](_0x74d40f['shift']());}};_0x2cd3d1(++_0x102cc5);}(_0x2a11,0x16b));var _0x12a1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a11[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x12a1('0x0'));var _=require(_0x12a1('0x1'));var util=require('util');var client=require('../client');exports[_0x12a1('0x2')]=function(_0x59afd0){var _0x571e56=_0x59afd0[_0x12a1('0x3')]||_0x59afd0['queuecallerexitAt'];return client['Request'](_0x12a1('0x4'),{'body':{'channel':_0x12a1('0x5'),'membername':_0x59afd0[_0x12a1('0x6')],'interface':_[_0x12a1('0x7')](_0x59afd0['interface'])?util[_0x12a1('0x8')](_0x12a1('0x9'),_0x59afd0[_0x12a1('0x6')]):_0x59afd0[_0x12a1('0xa')],'type':_0x12a1('0xb'),'enterAt':_0x59afd0[_0x12a1('0xc')],'exitAt':_0x571e56,'duration':moment(_0x571e56)[_0x12a1('0xd')](_0x59afd0[_0x12a1('0xc')],'seconds'),'data1':_0x12a1('0xe'),'data2':_0x59afd0[_0x12a1('0xf')],'data3':_0x59afd0[_0x12a1('0x10')],'data4':null,'data5':_0x59afd0['queue'],'role':_0x12a1('0x11'),'internal':_0x59afd0[_0x12a1('0x12')]?_[_0x12a1('0x13')](_0x59afd0[_0x12a1('0x12')]):undefined,'uniqueid':_0x59afd0[_0x12a1('0x14')]},'log':_0x12a1('0x4')});};exports[_0x12a1('0x15')]=function(_0x28c53e){return client[_0x12a1('0x16')](_0x12a1('0x4'),{'body':{'channel':_0x12a1('0x5'),'membername':_0x28c53e[_0x12a1('0x17')],'interface':_0x28c53e['interface'],'type':'TALKING','enterAt':_0x28c53e[_0x12a1('0x18')],'exitAt':_0x28c53e[_0x12a1('0x19')],'duration':moment(_0x28c53e[_0x12a1('0x19')])[_0x12a1('0xd')](_0x28c53e[_0x12a1('0x18')],_0x12a1('0x1a'))>=0x0?moment(_0x28c53e['endtime'])[_0x12a1('0xd')](_0x28c53e[_0x12a1('0x18')],_0x12a1('0x1a')):null,'data1':_0x12a1('0x1b'),'data2':_0x28c53e[_0x12a1('0x12')],'data3':_0x28c53e['exten'],'data4':_0x28c53e['dialstring']||null,'role':_0x12a1('0x11'),'internal':_0x28c53e[_0x12a1('0x12')]?_[_0x12a1('0x13')](_0x28c53e[_0x12a1('0x12')]):undefined,'uniqueid':_0x28c53e[_0x12a1('0x14')]},'log':_0x12a1('0x4')});};
\ No newline at end of file
index db32036..44312ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a8=['ShowSetting','GetSettings','getSettings','Request'];(function(_0x3fb030,_0x12aebe){var _0xd6899b=function(_0x327646){while(--_0x327646){_0x3fb030['push'](_0x3fb030['shift']());}};_0xd6899b(++_0x12aebe);}(_0x25a8,0x126));var _0x825a=function(_0x1e463c,_0x143d39){_0x1e463c=_0x1e463c-0x0;var _0x17f47d=_0x25a8[_0x1e463c];return _0x17f47d;};'use strict';var client=require('../client');exports[_0x825a('0x0')]=function(){return client[_0x825a('0x1')](_0x825a('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x825a('0x3')});};
\ No newline at end of file
+var _0x3e1d=['ShowSetting','GetSettings','Request'];(function(_0xc6e4ea,_0x35edbe){var _0x76c775=function(_0x7dbd2b){while(--_0x7dbd2b){_0xc6e4ea['push'](_0xc6e4ea['shift']());}};_0x76c775(++_0x35edbe);}(_0x3e1d,0xad));var _0xd3e1=function(_0x3b534c,_0x2c614f){_0x3b534c=_0x3b534c-0x0;var _0x449ef9=_0x3e1d[_0x3b534c];return _0x449ef9;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xd3e1('0x0')](_0xd3e1('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0xd3e1('0x2')});};
\ No newline at end of file
index 141a4ec..af06d1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5332=['name','html','GetTemplate','../client','Request'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x5332,0x12a));var _0x2533=function(_0x4d9550,_0x353d60){_0x4d9550=_0x4d9550-0x0;var _0x400d4a=_0x5332[_0x4d9550];return _0x400d4a;};'use strict';var client=require(_0x2533('0x0'));exports['getTemplates']=function(_0x2cc37a){return function(_0x412a69){return client[_0x2533('0x1')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0x2533('0x2'),_0x2533('0x3')]},'log':_0x2533('0x4')});};};
\ No newline at end of file
+var _0xb058=['../client','getTemplates','Request','GetTemplate','name'];(function(_0x56b2aa,_0x14aa0b){var _0x1fa270=function(_0x51ccb1){while(--_0x51ccb1){_0x56b2aa['push'](_0x56b2aa['shift']());}};_0x1fa270(++_0x14aa0b);}(_0xb058,0x69));var _0x8b05=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xb058[_0x16d10f];return _0x50c823;};'use strict';var client=require(_0x8b05('0x0'));exports[_0x8b05('0x1')]=function(_0x3cbd59){return function(_0x352ca4){return client[_0x8b05('0x2')](_0x8b05('0x3'),{'options':{'raw':!![],'attributes':['id',_0x8b05('0x4'),'html']},'log':'GetTemplate'});};};
\ No newline at end of file
index 3f7a617..73a7579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc215=['getTriggers','Request','GetTrigger','name','channel','Condition','AllConditions','field','value','AnyConditions','action','data1','data2','data3','data4','data6','data7','../client'];(function(_0x3952df,_0x37b836){var _0x2d369f=function(_0x53bfe0){while(--_0x53bfe0){_0x3952df['push'](_0x3952df['shift']());}};_0x2d369f(++_0x37b836);}(_0xc215,0x1e5));var _0x5c21=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xc215[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0x5c21('0x0'));exports[_0x5c21('0x1')]=function(_0x51b7a6){return function(_0x4b7a31){return client[_0x5c21('0x2')](_0x5c21('0x3'),{'options':{'raw':![],'attributes':['id',_0x5c21('0x4'),_0x5c21('0x5'),'status'],'include':[{'model':_0x5c21('0x6'),'as':_0x5c21('0x7'),'attributes':['id',_0x5c21('0x8'),'operator',_0x5c21('0x9')]},{'model':'Condition','as':_0x5c21('0xa'),'attributes':['id',_0x5c21('0x8'),'operator',_0x5c21('0x9')]},{'model':'Action','as':'Actions','attributes':['id',_0x5c21('0xb'),_0x5c21('0xc'),_0x5c21('0xd'),_0x5c21('0xe'),_0x5c21('0xf'),'data5',_0x5c21('0x10'),_0x5c21('0x11')]}]},'log':_0x5c21('0x3')});};};
\ No newline at end of file
+var _0xe043=['AnyConditions','value','Action','Actions','action','data1','data2','data3','data5','data6','data7','../client','getTriggers','GetTrigger','name','channel','Condition','AllConditions','operator'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0xe043,0x7d));var _0x3e04=function(_0x4346ae,_0x33d3c2){_0x4346ae=_0x4346ae-0x0;var _0x4c394d=_0xe043[_0x4346ae];return _0x4c394d;};'use strict';var client=require(_0x3e04('0x0'));exports[_0x3e04('0x1')]=function(_0x9e1d18){return function(_0x21aeb8){return client['Request'](_0x3e04('0x2'),{'options':{'raw':![],'attributes':['id',_0x3e04('0x3'),_0x3e04('0x4'),'status'],'include':[{'model':_0x3e04('0x5'),'as':_0x3e04('0x6'),'attributes':['id','field',_0x3e04('0x7'),'value']},{'model':_0x3e04('0x5'),'as':_0x3e04('0x8'),'attributes':['id','field',_0x3e04('0x7'),_0x3e04('0x9')]},{'model':_0x3e04('0xa'),'as':_0x3e04('0xb'),'attributes':['id',_0x3e04('0xc'),_0x3e04('0xd'),_0x3e04('0xe'),_0x3e04('0xf'),'data4',_0x3e04('0x10'),_0x3e04('0x11'),_0x3e04('0x12')]}]},'log':_0x3e04('0x2')});};};
\ No newline at end of file
index 924ea25..a38700e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a0a=['registry','defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0x1dde48,_0x1d7b27){var _0x8afbe8=function(_0x300b4f){while(--_0x300b4f){_0x1dde48['push'](_0x1dde48['shift']());}};_0x8afbe8(++_0x1d7b27);}(_0x7a0a,0xc6));var _0xa7a0=function(_0x1fac48,_0x580b26){_0x1fac48=_0x1fac48-0x0;var _0xc28dc0=_0x7a0a[_0x1fac48];return _0xc28dc0;};'use strict';var client=require(_0xa7a0('0x0'));exports[_0xa7a0('0x1')]=function(_0x31685c){return function(_0x422750){return client[_0xa7a0('0x2')](_0xa7a0('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xa7a0('0x4'),_0xa7a0('0x5'),_0xa7a0('0x6')]},'log':_0xa7a0('0x3')});};};
\ No newline at end of file
+var _0x6fd4=['../client','getTrunks','Request','name'];(function(_0x2c1675,_0x283623){var _0x2b1bbf=function(_0x40c327){while(--_0x40c327){_0x2c1675['push'](_0x2c1675['shift']());}};_0x2b1bbf(++_0x283623);}(_0x6fd4,0x118));var _0x46fd=function(_0x495df4,_0x178111){_0x495df4=_0x495df4-0x0;var _0x166082=_0x6fd4[_0x495df4];return _0x166082;};'use strict';var client=require(_0x46fd('0x0'));exports[_0x46fd('0x1')]=function(_0x2c3010){return function(_0xda6cae){return client[_0x46fd('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x46fd('0x3'),'registry','defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
index d20caa4..b3ccce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x299a71,_0x19618b){var _0x265708=function(_0x585fbb){while(--_0x585fbb){_0x299a71['push'](_0x299a71['shift']());}};_0x265708(++_0x19618b);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
+var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x59508a,_0xc621a0){var _0x1169eb=function(_0x18f523){while(--_0x18f523){_0x59508a['push'](_0x59508a['shift']());}};_0x1169eb(++_0xc621a0);}(_0x9c44,0x178));var _0x49c4=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x9c44[_0x8c43de];return _0xa6591b;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
index d8fd96c..748297d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca35=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create'];(function(_0xe0325,_0x332bbc){var _0xec411b=function(_0xa6e8ce){while(--_0xa6e8ce){_0xe0325['push'](_0xe0325['shift']());}};_0xec411b(++_0x332bbc);}(_0xca35,0x142));var _0x5ca3=function(_0x53f707,_0x51a2f7){_0x53f707=_0x53f707-0x0;var _0x10a9f5=_0xca35[_0x53f707];return _0x10a9f5;};'use strict';var client=require(_0x5ca3('0x0'));exports[_0x5ca3('0x1')]=function(_0x548b50){return client[_0x5ca3('0x2')](_0x5ca3('0x3'),{'body':_0x548b50,'log':_0x5ca3('0x3')});};exports[_0x5ca3('0x4')]=function(_0x20f040,_0x236dde,_0x4702d2){return client['Request'](_0x5ca3('0x5'),{'body':_0x20f040,'options':{'where':{'uniqueid':_0x236dde,'interface':_0x4702d2,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0xa1ad=['CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create','Request'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xa1ad,0x99));var _0xda1a=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa1ad[_0x49ca18];return _0x145d54;};'use strict';var client=require(_0xda1a('0x0'));exports[_0xda1a('0x1')]=function(_0x2c1187){return client[_0xda1a('0x2')](_0xda1a('0x3'),{'body':_0x2c1187,'log':_0xda1a('0x3')});};exports[_0xda1a('0x4')]=function(_0x240f76,_0x307bef,_0x2e6fef){return client['Request'](_0xda1a('0x5'),{'body':_0x240f76,'options':{'where':{'uniqueid':_0x307bef,'interface':_0x2e6fef,'agentcomplete':!![]}},'log':_0xda1a('0x5')});};
\ No newline at end of file
index 7c8201f..c44eaae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7711=['calleridnum','context','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','format','YYYY-MM-DD\x20HH:mm:ss','endOf','day','disposition','duration','billableseconds','moment','util','create','Request','merge'];(function(_0x2e2a47,_0x43230a){var _0x45a9e3=function(_0x5dbf29){while(--_0x5dbf29){_0x2e2a47['push'](_0x2e2a47['shift']());}};_0x45a9e3(++_0x43230a);}(_0x7711,0x1f3));var _0x1771=function(_0x149cf5,_0x5c5746){_0x149cf5=_0x149cf5-0x0;var _0x251dbe=_0x7711[_0x149cf5];return _0x251dbe;};'use strict';var moment=require(_0x1771('0x0'));var util=require(_0x1771('0x1'));var _=require('lodash');var client=require('../client');exports[_0x1771('0x2')]=function(_0x31ec01){return client[_0x1771('0x3')]('CreateVoiceCallReport',{'body':_[_0x1771('0x4')](_0x31ec01,{'source':_0x31ec01[_0x1771('0x5')],'destinationcontext':_0x31ec01[_0x1771('0x6')],'callerid':_0x31ec01['callerid'],'amaflags':_0x1771('0x7')}),'log':'CreateVoiceCallReport'});};exports[_0x1771('0x8')]=function(){return function(){return client[_0x1771('0x3')](_0x1771('0x9'),{'options':{'where':{'type':[_0x1771('0xa')],'createdAt':{'$between':[moment()['startOf']('day')[_0x1771('0xb')](_0x1771('0xc')),moment()[_0x1771('0xd')](_0x1771('0xe'))[_0x1771('0xb')](_0x1771('0xc'))]}},'attributes':['type',_0x1771('0xf'),_0x1771('0x10'),_0x1771('0x11')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0x7452=['util','../client','create','Request','merge','calleridnum','callerid','DOCUMENTATION','CreateVoiceCallReport','getVoiceCallReports','outbound','day','YYYY-MM-DD\x20HH:mm:ss','type','disposition','duration','billableseconds','GetVoiceCallReports','moment'];(function(_0x1133d8,_0x4e10b4){var _0x358f4b=function(_0x67581b){while(--_0x67581b){_0x1133d8['push'](_0x1133d8['shift']());}};_0x358f4b(++_0x4e10b4);}(_0x7452,0x11c));var _0x2745=function(_0x1c85de,_0x21c9b){_0x1c85de=_0x1c85de-0x0;var _0x58eadc=_0x7452[_0x1c85de];return _0x58eadc;};'use strict';var moment=require(_0x2745('0x0'));var util=require(_0x2745('0x1'));var _=require('lodash');var client=require(_0x2745('0x2'));exports[_0x2745('0x3')]=function(_0x37b314){return client[_0x2745('0x4')]('CreateVoiceCallReport',{'body':_[_0x2745('0x5')](_0x37b314,{'source':_0x37b314[_0x2745('0x6')],'destinationcontext':_0x37b314['context'],'callerid':_0x37b314[_0x2745('0x7')],'amaflags':_0x2745('0x8')}),'log':_0x2745('0x9')});};exports[_0x2745('0xa')]=function(){return function(){return client['Request']('GetVoiceCallReport',{'options':{'where':{'type':[_0x2745('0xb')],'createdAt':{'$between':[moment()['startOf'](_0x2745('0xc'))['format'](_0x2745('0xd')),moment()['endOf']('day')['format'](_0x2745('0xd'))]}},'attributes':[_0x2745('0xe'),_0x2745('0xf'),_0x2745('0x10'),_0x2745('0x11')]},'log':_0x2745('0x12')});};};
\ No newline at end of file
index a98697d..21e872a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49a5=['../client','create','Request','CreateVoiceDialReport'];(function(_0x3bbb31,_0x37f3be){var _0x302c00=function(_0x2c4a6b){while(--_0x2c4a6b){_0x3bbb31['push'](_0x3bbb31['shift']());}};_0x302c00(++_0x37f3be);}(_0x49a5,0x134));var _0x549a=function(_0x49c824,_0x18e9be){_0x49c824=_0x49c824-0x0;var _0x29dc99=_0x49a5[_0x49c824];return _0x29dc99;};'use strict';var client=require(_0x549a('0x0'));exports[_0x549a('0x1')]=function(_0x18c8d7){return client[_0x549a('0x2')](_0x549a('0x3'),{'body':_0x18c8d7,'log':_0x549a('0x3')});};
\ No newline at end of file
+var _0x5ae0=['Request','CreateVoiceDialReport','../client','create'];(function(_0x491b20,_0x3dc70b){var _0x537913=function(_0xa94c49){while(--_0xa94c49){_0x491b20['push'](_0x491b20['shift']());}};_0x537913(++_0x3dc70b);}(_0x5ae0,0xae));var _0x05ae=function(_0x191168,_0x4be06c){_0x191168=_0x191168-0x0;var _0x266485=_0x5ae0[_0x191168];return _0x266485;};'use strict';var client=require(_0x05ae('0x0'));exports[_0x05ae('0x1')]=function(_0x4a3474){return client[_0x05ae('0x2')](_0x05ae('0x3'),{'body':_0x4a3474,'log':_0x05ae('0x3')});};
\ No newline at end of file
index d67e8b4..2b8074c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe1=['getVoiceExtensions'];(function(_0x280e6d,_0x2faa92){var _0x493510=function(_0x4318b2){while(--_0x4318b2){_0x280e6d['push'](_0x280e6d['shift']());}};_0x493510(++_0x2faa92);}(_0xcbe1,0x1a2));var _0x1cbe=function(_0x33c8cb,_0x56cff2){_0x33c8cb=_0x33c8cb-0x0;var _0x2d28bb=_0xcbe1[_0x33c8cb];return _0x2d28bb;};'use strict';var client=require('../client');exports[_0x1cbe('0x0')]=function(){return function(){return client['Request']('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id','exten','recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x1cbe('0x0')});};};
\ No newline at end of file
+var _0x6953=['recordingFormat','../client','getVoiceExtensions'];(function(_0x57d80c,_0x1b4916){var _0x131a60=function(_0x231208){while(--_0x231208){_0x57d80c['push'](_0x57d80c['shift']());}};_0x131a60(++_0x1b4916);}(_0x6953,0x91));var _0x3695=function(_0x1f77a2,_0x4d639b){_0x1f77a2=_0x1f77a2-0x0;var _0x560005=_0x6953[_0x1f77a2];return _0x560005;};'use strict';var client=require(_0x3695('0x0'));exports[_0x3695('0x1')]=function(){return function(){return client['Request']('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id','exten',_0x3695('0x2')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index 53d0b9e..c39042e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0e7=['dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallMeTimeout','dialOrderByScheduledAt','strategy','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','Trunk','callerid','mandatoryDispositionPause','TrunkBackup','active','Interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acwTimeout','monitor_format','type','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x2fd0f0,_0x4b634e){var _0x57f71a=function(_0x400d6f){while(--_0x400d6f){_0x2fd0f0['push'](_0x2fd0f0['shift']());}};_0x57f71a(++_0x4b634e);}(_0xc0e7,0x197));var _0x7c0e=function(_0x42e664,_0x2b80b6){_0x42e664=_0x42e664-0x0;var _0x3f8b89=_0xc0e7[_0x42e664];return _0x3f8b89;};'use strict';var client=require(_0x7c0e('0x0'));exports[_0x7c0e('0x1')]=function(){return function(){return client[_0x7c0e('0x2')](_0x7c0e('0x3'),{'options':{'raw':![],'attributes':['id',_0x7c0e('0x4'),'acw',_0x7c0e('0x5'),'autopause',_0x7c0e('0x6'),_0x7c0e('0x7'),'dialActive',_0x7c0e('0x8'),_0x7c0e('0x9'),'dialLimitQueue',_0x7c0e('0xa'),_0x7c0e('0xb'),_0x7c0e('0xc'),_0x7c0e('0xd'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x7c0e('0xe'),_0x7c0e('0xf'),_0x7c0e('0x10'),_0x7c0e('0x11'),_0x7c0e('0x12'),_0x7c0e('0x13'),_0x7c0e('0x14'),_0x7c0e('0x15'),_0x7c0e('0x16'),_0x7c0e('0x17'),_0x7c0e('0x18'),_0x7c0e('0x19'),'dialGlobalInterval',_0x7c0e('0x1a'),_0x7c0e('0x1b'),_0x7c0e('0x1c'),_0x7c0e('0x1d'),'dialAMDGreeting',_0x7c0e('0x1e'),_0x7c0e('0x1f'),_0x7c0e('0x20'),'dialAMDBetweenWordsSilence',_0x7c0e('0x21'),_0x7c0e('0x22'),_0x7c0e('0x23'),'timeout',_0x7c0e('0x24'),'dialRecallInQueue',_0x7c0e('0x25'),'dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2',_0x7c0e('0x6'),_0x7c0e('0x26'),'dialRandomLastDigitCallerIdNumber','dialCutDigit',_0x7c0e('0x27'),_0x7c0e('0x28'),'dialDropMaxRetry',_0x7c0e('0x29'),_0x7c0e('0x2a'),_0x7c0e('0x2b'),_0x7c0e('0x2c'),_0x7c0e('0x2d'),_0x7c0e('0x2e'),'dialAgentRejectRetryFrequency',_0x7c0e('0x2f'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x7c0e('0x30'),'as':_0x7c0e('0x30'),'attributes':['id',_0x7c0e('0x4'),_0x7c0e('0x31'),'active']},{'model':'Pause','as':_0x7c0e('0x32'),'attributes':['id',_0x7c0e('0x4')]},{'model':'Trunk','as':_0x7c0e('0x33'),'attributes':['id','name','callerid',_0x7c0e('0x34')]},{'model':_0x7c0e('0x35'),'as':_0x7c0e('0x35'),'attributes':['id',_0x7c0e('0x4')],'include':[{'model':_0x7c0e('0x35'),'as':'Intervals','attributes':['id','name','interval']}]}]},'log':_0x7c0e('0x1')});};};
\ No newline at end of file
+var _0x9008=['dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialMachineMaxRetry','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','name','acw','acwTimeout','autopause','type','dialActive'];(function(_0x49afbd,_0x4d566e){var _0x47b652=function(_0x25a8b2){while(--_0x25a8b2){_0x49afbd['push'](_0x49afbd['shift']());}};_0x47b652(++_0x4d566e);}(_0x9008,0xac));var _0x8900=function(_0x308068,_0x3f689e){_0x308068=_0x308068-0x0;var _0x2fd5d3=_0x9008[_0x308068];return _0x2fd5d3;};'use strict';var client=require(_0x8900('0x0'));exports[_0x8900('0x1')]=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x8900('0x2'),_0x8900('0x3'),_0x8900('0x4'),_0x8900('0x5'),'monitor_format',_0x8900('0x6'),_0x8900('0x7'),_0x8900('0x8'),_0x8900('0x9'),'dialLimitQueue',_0x8900('0xa'),_0x8900('0xb'),_0x8900('0xc'),_0x8900('0xd'),_0x8900('0xe'),_0x8900('0xf'),'dialOriginateTimeout','dialQueueOptions',_0x8900('0x10'),_0x8900('0x11'),_0x8900('0x12'),'dialCongestionRetryFrequency',_0x8900('0x13'),_0x8900('0x14'),_0x8900('0x15'),_0x8900('0x16'),_0x8900('0x17'),'dialTimezone',_0x8900('0x18'),_0x8900('0x19'),_0x8900('0x1a'),_0x8900('0x1b'),'dialAMDInitialSilence','dialAMDGreeting',_0x8900('0x1c'),'dialAMDTotalAnalysisTime',_0x8900('0x1d'),'dialAMDBetweenWordsSilence',_0x8900('0x1e'),_0x8900('0x1f'),'dialAMDMaximumWordLength','timeout',_0x8900('0x20'),_0x8900('0x21'),_0x8900('0x22'),_0x8900('0x23'),_0x8900('0x24'),_0x8900('0x25'),_0x8900('0x26'),_0x8900('0x27'),_0x8900('0x28'),_0x8900('0x29'),_0x8900('0x2a'),_0x8900('0x2b'),_0x8900('0x2c'),'dialDropRetryFrequency',_0x8900('0x2d'),'dialAbandonedRetryFrequency',_0x8900('0x2e'),'dialMachineRetryFrequency',_0x8900('0x2f'),'dialAgentRejectRetryFrequency',_0x8900('0x30'),_0x8900('0x31'),_0x8900('0x32')],'include':[{'model':_0x8900('0x33'),'as':_0x8900('0x33'),'attributes':['id',_0x8900('0x2'),_0x8900('0x34'),_0x8900('0x35')]},{'model':_0x8900('0x36'),'as':_0x8900('0x37'),'attributes':['id',_0x8900('0x2')]},{'model':'Trunk','as':_0x8900('0x38'),'attributes':['id',_0x8900('0x2'),_0x8900('0x34'),_0x8900('0x35')]},{'model':_0x8900('0x39'),'as':_0x8900('0x39'),'attributes':['id',_0x8900('0x2')],'include':[{'model':'Interval','as':_0x8900('0x3a'),'attributes':['id',_0x8900('0x2'),_0x8900('0x3b')]}]}]},'log':_0x8900('0x1')});};};
\ No newline at end of file
index 2a914f4..b1f06d7 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(_0x2caf7e,_0x30adf9){var _0x56a2a2=function(_0x773e5){while(--_0x773e5){_0x2caf7e['push'](_0x2caf7e['shift']());}};_0x56a2a2(++_0x30adf9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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(_0x176e3b,_0xf99f48){var _0x114246=function(_0x16fb61){while(--_0x16fb61){_0x176e3b['push'](_0x176e3b['shift']());}};_0x114246(++_0xf99f48);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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 ba51b9e..b58fdf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x951f=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x59e551,_0x8e9da5){var _0xca7007=function(_0x27dea0){while(--_0x27dea0){_0x59e551['push'](_0x59e551['shift']());}};_0xca7007(++_0x8e9da5);}(_0x951f,0x96));var _0xf951=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x951f[_0x5d6456];return _0x4d66c1;};'use strict';var client=require('../client');exports[_0xf951('0x0')]=function(_0x118c5f){return function(){return client[_0xf951('0x1')](_0xf951('0x2'),{'options':{'where':{'VoiceQueueId':_0x118c5f,'paused':!![]},'raw':!![]},'log':_0xf951('0x0')});};};
\ No newline at end of file
+var _0xce02=['getVoiceQueueRtPauses'];(function(_0x1426f1,_0x148987){var _0x44b7ec=function(_0x21879e){while(--_0x21879e){_0x1426f1['push'](_0x1426f1['shift']());}};_0x44b7ec(++_0x148987);}(_0xce02,0x70));var _0x2ce0=function(_0x219d87,_0x1cb6f7){_0x219d87=_0x219d87-0x0;var _0x22823d=_0xce02[_0x219d87];return _0x22823d;};'use strict';var client=require('../client');exports[_0x2ce0('0x0')]=function(_0x1c6cb4){return function(){return client['Request']('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x1c6cb4,'paused':!![]},'raw':!![]},'log':_0x2ce0('0x0')});};};
\ No newline at end of file
index b852506..439032e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x4247c5,_0x4d9b5e){var _0x1411f7=function(_0x1bf616){while(--_0x1bf616){_0x4247c5['push'](_0x4247c5['shift']());}};_0x1411f7(++_0x4d9b5e);}(_0x7a54,0x106));var _0x47a5=function(_0x3caecf,_0x340614){_0x3caecf=_0x3caecf-0x0;var _0x1c4f6f=_0x7a54[_0x3caecf];return _0x1c4f6f;};'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(_0x290c0e,_0x3fada2){var _0xd11e50=function(_0x4d1670){while(--_0x4d1670){_0x290c0e['push'](_0x290c0e['shift']());}};_0xd11e50(++_0x3fada2);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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 0b08ea0..9237328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaca1=['transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','Request','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','../client','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfereraccountcode','transfererexten','transfererlinkedid','transfereechannel'];(function(_0xc700b5,_0x14d937){var _0x35ac84=function(_0x4f40b1){while(--_0x4f40b1){_0xc700b5['push'](_0xc700b5['shift']());}};_0x35ac84(++_0x14d937);}(_0xaca1,0xe0));var _0x1aca=function(_0x33b052,_0x5b14b3){_0x33b052=_0x33b052-0x0;var _0x119974=_0xaca1[_0x33b052];return _0x119974;};'use strict';var client=require(_0x1aca('0x0'));exports['transfers']={};exports['blindTransfer']=function(_0x33965c){return client['Request'](_0x1aca('0x1'),{'body':{'result':_0x33965c[_0x1aca('0x2')],'transfererchannel':_0x33965c[_0x1aca('0x3')],'transferercalleridnum':_0x33965c['transferercalleridnum'],'transferercalleridname':_0x33965c[_0x1aca('0x4')],'transfererconnectedlinenum':_0x33965c[_0x1aca('0x5')],'transfererconnectedlinename':_0x33965c['transfererconnectedlinename'],'transfereraccountcode':_0x33965c[_0x1aca('0x6')],'transferercontext':_0x33965c['transferercontext'],'transfererexten':_0x33965c[_0x1aca('0x7')],'transfererlinkedid':_0x33965c[_0x1aca('0x8')],'transfereechannel':_0x33965c[_0x1aca('0x9')],'transfereecalleridnum':_0x33965c[_0x1aca('0xa')],'transfereecalleridname':_0x33965c['transfereecalleridname'],'transfereeconnectedlinenum':_0x33965c[_0x1aca('0xb')],'transfereeconnectedlinename':_0x33965c[_0x1aca('0xc')],'transfereeaccountcode':_0x33965c[_0x1aca('0xd')],'transfereecontext':_0x33965c[_0x1aca('0xe')],'transfereeexten':_0x33965c[_0x1aca('0xf')],'transfereelinkedid':_0x33965c[_0x1aca('0x10')],'isexternal':_0x33965c[_0x1aca('0x11')],'context':_0x33965c[_0x1aca('0x12')],'extension':_0x33965c[_0x1aca('0x13')],'type':_0x1aca('0x14')},'log':_0x1aca('0x1')});};exports[_0x1aca('0x15')]=function(_0x25c3a5){return client[_0x1aca('0x16')](_0x1aca('0x1'),{'body':{'result':_0x25c3a5[_0x1aca('0x2')],'transfererchannel':_0x25c3a5[_0x1aca('0x17')],'transferercalleridnum':_0x25c3a5[_0x1aca('0x18')],'transferercalleridname':_0x25c3a5[_0x1aca('0x19')],'transfererconnectedlinenum':_0x25c3a5['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x25c3a5[_0x1aca('0x1a')],'transfereraccountcode':_0x25c3a5['origtransfereraccountcode'],'transferercontext':_0x25c3a5['secondtransferercontext'],'transfererexten':_0x25c3a5[_0x1aca('0x1b')],'transfererlinkedid':_0x25c3a5['origtransfererlinkedid'],'transfereechannel':_0x25c3a5[_0x1aca('0x1c')],'transfereecalleridnum':_0x25c3a5[_0x1aca('0x1d')],'transfereecalleridname':_0x25c3a5[_0x1aca('0x1e')],'transfereeconnectedlinenum':_0x25c3a5[_0x1aca('0x1f')],'transfereeconnectedlinename':_0x25c3a5[_0x1aca('0x20')],'transfereeaccountcode':_0x25c3a5[_0x1aca('0x21')],'transfereecontext':_0x25c3a5[_0x1aca('0x22')],'transfereeexten':_0x25c3a5[_0x1aca('0x23')],'transfereelinkedid':_0x25c3a5[_0x1aca('0x24')],'isexternal':_0x25c3a5[_0x1aca('0x11')],'context':_0x25c3a5[_0x1aca('0x25')],'extension':_0x25c3a5[_0x1aca('0x26')],'type':'attended'},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0xc2f1=['transfererlinkedid','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','origtransferercontext','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext'];(function(_0x1c8151,_0x1e51d6){var _0xf06d6e=function(_0x550ac6){while(--_0x550ac6){_0x1c8151['push'](_0x1c8151['shift']());}};_0xf06d6e(++_0x1e51d6);}(_0xc2f1,0x13b));var _0x1c2f=function(_0x5e957a,_0x31703){_0x5e957a=_0x5e957a-0x0;var _0x1ea1d7=_0xc2f1[_0x5e957a];return _0x1ea1d7;};'use strict';var client=require(_0x1c2f('0x0'));exports[_0x1c2f('0x1')]={};exports[_0x1c2f('0x2')]=function(_0x591c13){return client[_0x1c2f('0x3')](_0x1c2f('0x4'),{'body':{'result':_0x591c13[_0x1c2f('0x5')],'transfererchannel':_0x591c13[_0x1c2f('0x6')],'transferercalleridnum':_0x591c13[_0x1c2f('0x7')],'transferercalleridname':_0x591c13[_0x1c2f('0x8')],'transfererconnectedlinenum':_0x591c13[_0x1c2f('0x9')],'transfererconnectedlinename':_0x591c13[_0x1c2f('0xa')],'transfereraccountcode':_0x591c13[_0x1c2f('0xb')],'transferercontext':_0x591c13[_0x1c2f('0xc')],'transfererexten':_0x591c13['transfererexten'],'transfererlinkedid':_0x591c13[_0x1c2f('0xd')],'transfereechannel':_0x591c13['transfereechannel'],'transfereecalleridnum':_0x591c13[_0x1c2f('0xe')],'transfereecalleridname':_0x591c13[_0x1c2f('0xf')],'transfereeconnectedlinenum':_0x591c13[_0x1c2f('0x10')],'transfereeconnectedlinename':_0x591c13[_0x1c2f('0x11')],'transfereeaccountcode':_0x591c13[_0x1c2f('0x12')],'transfereecontext':_0x591c13[_0x1c2f('0x13')],'transfereeexten':_0x591c13[_0x1c2f('0x14')],'transfereelinkedid':_0x591c13['transfereelinkedid'],'isexternal':_0x591c13['isexternal'],'context':_0x591c13[_0x1c2f('0x15')],'extension':_0x591c13[_0x1c2f('0x16')],'type':_0x1c2f('0x17')},'log':_0x1c2f('0x4')});};exports[_0x1c2f('0x18')]=function(_0xcfea91){return client[_0x1c2f('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0xcfea91[_0x1c2f('0x5')],'transfererchannel':_0xcfea91[_0x1c2f('0x19')],'transferercalleridnum':_0xcfea91[_0x1c2f('0x1a')],'transferercalleridname':_0xcfea91['origtransferercalleridname'],'transfererconnectedlinenum':_0xcfea91[_0x1c2f('0x1b')],'transfererconnectedlinename':_0xcfea91[_0x1c2f('0x1c')],'transfereraccountcode':_0xcfea91[_0x1c2f('0x1d')],'transferercontext':_0xcfea91[_0x1c2f('0x1e')],'transfererexten':_0xcfea91[_0x1c2f('0x1f')],'transfererlinkedid':_0xcfea91[_0x1c2f('0x20')],'transfereechannel':_0xcfea91['transfertargetchannel'],'transfereecalleridnum':_0xcfea91[_0x1c2f('0x21')],'transfereecalleridname':_0xcfea91[_0x1c2f('0x22')],'transfereeconnectedlinenum':_0xcfea91[_0x1c2f('0x23')],'transfereeconnectedlinename':_0xcfea91[_0x1c2f('0x24')],'transfereeaccountcode':_0xcfea91[_0x1c2f('0x25')],'transfereecontext':_0xcfea91[_0x1c2f('0x26')],'transfereeexten':_0xcfea91['transfertargetexten'],'transfereelinkedid':_0xcfea91[_0x1c2f('0x27')],'isexternal':_0xcfea91['isexternal'],'context':_0xcfea91[_0x1c2f('0x28')],'extension':_0xcfea91['origtransfererexten'],'type':'attended'},'log':_0x1c2f('0x4')});};
\ No newline at end of file
index 642c0a9..5ad87f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb11=['undefined','channels','voicechannel','uniqueid','%s.%s','filename','channel','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','destinationchannel','wav','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','exten','values','telephones','trunks','campaigns','event','custom:','faxAccounts','send','server','http','log','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','moment','../properties','listen','format','%s/%s','SIP','name','timers','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','module','action','Reload','then','message','catch','Command','Action','content','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','abandoned','waiting','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit'];(function(_0x66d6cf,_0x446cdd){var _0x54d0c8=function(_0x3b66dc){while(--_0x3b66dc){_0x66d6cf['push'](_0x66d6cf['shift']());}};_0x54d0c8(++_0x446cdd);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xfb11[_0x1eda20];return _0x31b953;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var jayson=require(_0x1fb1('0x1'));var schema=require(_0x1fb1('0x2'));var BPromise=require('bluebird');var moment=require(_0x1fb1('0x3'));var config=require('../../../config/environment');var properties=require(_0x1fb1('0x4'));var ami=require('../ami');exports[_0x1fb1('0x5')]=function(_0x2ae20f,_0x5af469,_0x25d44f){return new BPromise(function(_0x133727,_0x4c098d){var _0x1859da={'QueuePause':function(_0x2596c2){return new Promise(function(_0x34e61a,_0x236b20){var _0x161e1b=util[_0x1fb1('0x6')](_0x1fb1('0x7'),_0x1fb1('0x8'),_0x2596c2[_0x1fb1('0x9')]);if(_0x2ae20f[_0x1fb1('0xa')]&&_0x2ae20f['timers'][_0x161e1b]&&_0x2ae20f[_0x1fb1('0xa')][_0x161e1b]['timer']){_0x2ae20f[_0x1fb1('0xa')][_0x161e1b]['updateAcw']();}if(_0x2ae20f[_0x1fb1('0xb')][_0x161e1b]){_0x2ae20f[_0x1fb1('0xb')][_0x161e1b][_0x1fb1('0xc')]({'statePause':_0x2596c2[_0x1fb1('0xd')]?!![]:![]});}_0x34e61a({'code':0xc8,'message':_0x1fb1('0xe')});});},'Reload':function(_0x14f290){var _0x480a89=this;return new Promise(function(_0x18d255,_0xf371e8){if(ami[_0x1fb1('0xf')]()==![]){return _0xf371e8(_0x480a89[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')][_0x1fb1('0x12')],_0x1fb1('0x13')][_0x1fb1('0x14')]('\x20')));}_0x14f290=_['pick'](_0x14f290,_['keys'](properties[_0x1fb1('0x15')]));_0x14f290[_0x1fb1('0x16')]=_0x1fb1('0x17');return ami['Action'](_0x14f290)[_0x1fb1('0x18')](function(_0x23f1f5){_0x18d255({'code':0xc8,'message':_0x23f1f5[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x33c6b6){_0xf371e8(_0x480a89[_0x1fb1('0x10')](0x1f5,_0x33c6b6[_0x1fb1('0x19')]));});});},'Command':function(_0x373e3c){var _0x4041ea=this;return new Promise(function(_0x5c4169,_0xa6d7b8){if(ami['isConnected']()==![]){return _0xa6d7b8(_0x4041ea['error'](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')][_0x1fb1('0x12')],'ami\x20disconnected'][_0x1fb1('0x14')]('\x20')));}_0x373e3c=_['pick'](_0x373e3c,'command');_0x373e3c['action']=_0x1fb1('0x1b');return ami[_0x1fb1('0x1c')](_0x373e3c)[_0x1fb1('0x18')](function(_0x10924f){_0x5c4169({'code':0xc8,'message':_0x10924f[_0x1fb1('0x1d')]});})['catch'](function(_0x4272c7){_0xa6d7b8(_0x4041ea[_0x1fb1('0x10')](0x1f5,_0x4272c7[_0x1fb1('0x19')]));});});},'VoiceQueues':function(_0x5fc9e6){return new Promise(function(_0x2bc885,_0x1353a4){var _0x3680b5=[];for(var _0x2de1d4 in _0x2ae20f['voiceQueues']){if(_0x2ae20f[_0x1fb1('0x1e')][_0x1fb1('0x1f')](_0x2de1d4)){var _0x46ff60=_0x2ae20f[_0x1fb1('0x1e')][_0x2de1d4];var _0x1898e7={'id':_0x46ff60['id'],'name':_0x46ff60[_0x1fb1('0x9')],'strategy':_0x46ff60[_0x1fb1('0x20')],'answered':_0x46ff60[_0x1fb1('0x21')],'available':_0x46ff60[_0x1fb1('0x22')],'loggedIn':_0x46ff60[_0x1fb1('0x23')],'pTalking':_0x46ff60[_0x1fb1('0x24')],'sumBillable':_0x46ff60[_0x1fb1('0x25')],'sumDuration':_0x46ff60[_0x1fb1('0x26')],'sumHoldTime':_0x46ff60[_0x1fb1('0x27')]||0x0,'talking':_0x46ff60[_0x1fb1('0x28')],'total':_0x46ff60['total'],'type':_0x46ff60[_0x1fb1('0x29')],'unmanaged':_0x46ff60[_0x1fb1('0x2a')],'abandoned':_0x46ff60[_0x1fb1('0x2b')],'waiting':_0x46ff60[_0x1fb1('0x2c')],'loggedInDb':_0x46ff60['loggedInDb']};if(_0x46ff60[_0x1fb1('0x29')]===_0x1fb1('0x2d')){_0x1898e7['dialActive']=_0x46ff60[_0x1fb1('0x2e')];_0x1898e7['dialMethod']=_0x46ff60['dialMethod'];_0x1898e7[_0x1fb1('0x2f')]=_0x46ff60[_0x1fb1('0x2f')];_0x1898e7['dialOriginateCallerIdNumber']=_0x46ff60[_0x1fb1('0x30')];_0x1898e7[_0x1fb1('0x31')]=_0x46ff60[_0x1fb1('0x31')];_0x1898e7[_0x1fb1('0x32')]=_0x46ff60[_0x1fb1('0x32')];_0x1898e7['temp']=_0x46ff60[_0x1fb1('0x33')];_0x1898e7[_0x1fb1('0x34')]=_0x46ff60[_0x1fb1('0x34')];_0x1898e7[_0x1fb1('0x35')]=_0x46ff60[_0x1fb1('0x35')];_0x1898e7[_0x1fb1('0x36')]=_0x46ff60[_0x1fb1('0x36')];_0x1898e7[_0x1fb1('0x37')]=_0x46ff60[_0x1fb1('0x37')];_0x1898e7['outboundCongestionCallsDay']=_0x46ff60[_0x1fb1('0x38')];_0x1898e7['outboundDropCallsDayACS']=_0x46ff60[_0x1fb1('0x39')];_0x1898e7['outboundDropCallsDayCallersExit']=_0x46ff60[_0x1fb1('0x3a')];_0x1898e7['outboundDropCallsDayTimeout']=_0x46ff60['outboundDropCallsDayTimeout'];_0x1898e7[_0x1fb1('0x3b')]=_0x46ff60[_0x1fb1('0x3b')];_0x1898e7[_0x1fb1('0x3c')]=_0x46ff60[_0x1fb1('0x3c')];_0x1898e7['outboundOriginateFailureCallsDay']=_0x46ff60[_0x1fb1('0x3d')];_0x1898e7[_0x1fb1('0x3e')]=_0x46ff60[_0x1fb1('0x3e')];_0x1898e7['outboundRejectCallsDay']=_0x46ff60[_0x1fb1('0x3f')];_0x1898e7[_0x1fb1('0x40')]=_0x46ff60[_0x1fb1('0x40')];_0x1898e7[_0x1fb1('0x41')]=_0x46ff60[_0x1fb1('0x41')];_0x1898e7[_0x1fb1('0x42')]=_0x46ff60[_0x1fb1('0x42')];_0x1898e7['predictiveIntervalAvgTalktime']=_0x46ff60[_0x1fb1('0x43')];_0x1898e7[_0x1fb1('0x44')]=_0x46ff60['predictiveIntervalDroppedCallsCallersExit'];_0x1898e7[_0x1fb1('0x45')]=_0x46ff60['predictiveIntervalDroppedCallsTimeout'];_0x1898e7[_0x1fb1('0x46')]=_0x46ff60[_0x1fb1('0x46')];_0x1898e7[_0x1fb1('0x47')]=_0x46ff60[_0x1fb1('0x47')];_0x1898e7[_0x1fb1('0x48')]=_0x46ff60[_0x1fb1('0x48')];_0x1898e7[_0x1fb1('0x49')]=_0x46ff60[_0x1fb1('0x49')];_0x1898e7[_0x1fb1('0x4a')]=_0x46ff60[_0x1fb1('0x4a')];_0x1898e7[_0x1fb1('0x4b')]=_0x46ff60[_0x1fb1('0x4b')];_0x1898e7[_0x1fb1('0x4c')]=_0x46ff60[_0x1fb1('0x4c')];_0x1898e7[_0x1fb1('0x19')]=_0x46ff60['message'];_0x1898e7[_0x1fb1('0x4d')]=_0x46ff60[_0x1fb1('0x4d')];_0x1898e7[_0x1fb1('0x4e')]=_0x46ff60[_0x1fb1('0x4e')];_0x1898e7['erlangCallToSecond']=_0x46ff60['erlangCallToSecond'];_0x1898e7[_0x1fb1('0x4f')]=_0x46ff60[_0x1fb1('0x4f')];_0x1898e7[_0x1fb1('0x50')]=_0x46ff60[_0x1fb1('0x50')];_0x1898e7[_0x1fb1('0x51')]=_0x46ff60[_0x1fb1('0x51')];_0x1898e7[_0x1fb1('0x52')]=_0x46ff60[_0x1fb1('0x52')];}if(_0x46ff60[_0x1fb1('0x53')]){_0x1898e7[_0x1fb1('0x53')]={'id':_0x46ff60['Trunk']['id'],'name':_0x46ff60[_0x1fb1('0x53')]['name'],'active':_0x46ff60['Trunk'][_0x1fb1('0x54')],'callerid':_0x46ff60[_0x1fb1('0x53')][_0x1fb1('0x55')]};}if(_0x46ff60[_0x1fb1('0x56')]){_0x1898e7['Interval']={'id':_0x46ff60['Interval']['id'],'name':_0x46ff60[_0x1fb1('0x56')][_0x1fb1('0x9')]};}_0x3680b5[_0x1fb1('0x57')](_0x1898e7);}}_0x2bc885({'count':_0x3680b5[_0x1fb1('0x58')],'rows':_0x3680b5});});},'UpdateVoiceQueue':function(_0x363cb9){return new Promise(function(_0x396c1e,_0x361ad7){var _0x293bdb=_[_0x1fb1('0x59')](_0x2ae20f['voiceQueues'],{'id':parseInt(_0x363cb9['id'])});var _0x596866=_[_0x1fb1('0x5a')](_0x363cb9,['id']);if(_0x293bdb){for(var _0x5687b6 in _0x596866){if(typeof _0x596866[_0x5687b6]!==_0x1fb1('0x5b')&&typeof _0x293bdb[_0x5687b6]!==_0x1fb1('0x5b')){_0x293bdb[_0x5687b6]=_0x596866[_0x5687b6];}}_0x396c1e(_0x293bdb);}else{_0x361ad7();}});},'VoiceChannels':function(_0x103560){return new Promise(function(_0x467bf1,_0x3c37af){var _0x3c3fbf=_['values'](_0x2ae20f[_0x1fb1('0x5c')]);_0x467bf1({'count':_0x3c3fbf[_0x1fb1('0x58')],'rows':_0x3c3fbf});});},'VoiceChannelMixMonitor':function(_0x2029a9){var _0x4883dd=this;return new Promise(function(_0x242055,_0x4861b4){if(ami[_0x1fb1('0xf')]()==![]){return _0x4861b4(_0x4883dd[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config['asterisk'][_0x1fb1('0x12')],_0x1fb1('0x13')]['join']('\x20')));}var _0xe492ab=schema(properties[_0x1fb1('0x5d')])[_0x1fb1('0x2')](_0x2029a9);if(_0xe492ab['length']>0x0){return _0x4861b4(_0x4883dd['error'](0x1f4,_['map'](_0xe492ab,_0x1fb1('0x19'))[_0x1fb1('0x14')](',\x20')));}var _0x1e2754=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x5c')],{'uniqueid':_0x2029a9[_0x1fb1('0x5e')]});if(_0x1e2754&&_0x1e2754['channel']){var _0x556529=util[_0x1fb1('0x6')](_0x1fb1('0x5f'),_0x2029a9[_0x1fb1('0x60')]||_0x2029a9[_0x1fb1('0x5e')],_0x2029a9['format']||'wav');return ami[_0x1fb1('0x1c')]({'action':'MixMonitor','channel':_0x1e2754[_0x1fb1('0x61')],'file':_0x556529,'options':'ai(mixmonitorid)'})[_0x1fb1('0x18')](function(_0x5ad2be){var _0x12a42d=_[_0x1fb1('0x59')](_0x1e2754[_0x1fb1('0x62')],{'filename':_0x1fb1('0x63')+_0x556529[_0x1fb1('0x64')]()});if(_['isNil'](_0x12a42d)){_0x1e2754['monitors'][_0x1fb1('0x57')]({'filename':_0x1fb1('0x63')+_0x556529['toLowerCase'](),'createdAt':moment()['format'](_0x1fb1('0x65')),'mixmonitorid':_0x5ad2be[_0x1fb1('0x66')],'status':_0x1fb1('0x67')});}else{_0x12a42d[_0x1fb1('0x66')]=_0x5ad2be[_0x1fb1('0x66')];_0x12a42d[_0x1fb1('0x68')]='rec';}_0x242055({'code':0xc8,'message':[_0x2029a9[_0x1fb1('0x5e')],_0x1fb1('0x69'),_0x5ad2be[_0x1fb1('0x66')]][_0x1fb1('0x14')]('\x20'),'mixmonitorid':_0x5ad2be[_0x1fb1('0x66')]});})[_0x1fb1('0x1a')](function(_0x32899f){_0x4861b4(_0x4883dd['error'](0x1f5,[_0x2029a9[_0x1fb1('0x5e')],_0x32899f[_0x1fb1('0x19')][_0x1fb1('0x64')]()]['join']('\x20')));});}else{return _0x4861b4(_0x4883dd[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'VoiceChannelStopMixMonitor':function(_0xeeb8ce){var _0x5ecccb=this;return new Promise(function(_0x1b924e,_0x2b232b){if(ami[_0x1fb1('0xf')]()==![]){return _0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')]['username'],'ami\x20disconnected'][_0x1fb1('0x14')]('\x20')));}var _0x1d7478=schema(properties[_0x1fb1('0x5d')])[_0x1fb1('0x2')](_0xeeb8ce);if(_0x1d7478[_0x1fb1('0x58')]>0x0){return _0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f4,_[_0x1fb1('0x6b')](_0x1d7478,'message')[_0x1fb1('0x14')](',\x20')));}var _0x455c60=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x5c')],{'uniqueid':_0xeeb8ce[_0x1fb1('0x5e')]});if(_0x455c60){return BPromise[_0x1fb1('0x6c')]()['then'](function(){if(_0x455c60[_0x1fb1('0x61')]){return ami[_0x1fb1('0x1c')]({'action':_0x1fb1('0x6d'),'channel':_0x455c60[_0x1fb1('0x61')],'mixmonitorid':_0xeeb8ce[_0x1fb1('0x66')]})['catch'](function(_0x441fcb){});}})[_0x1fb1('0x18')](function(){if(_0x455c60['destinationchannel']){return ami[_0x1fb1('0x1c')]({'action':'StopMixMonitor','channel':_0x455c60[_0x1fb1('0x6e')],'mixmonitorid':_0xeeb8ce[_0x1fb1('0x66')]})[_0x1fb1('0x1a')](function(_0x3b52a7){});}})['then'](function(_0x20cf7b){var _0x3fda2b=_[_0x1fb1('0x59')](_0x455c60[_0x1fb1('0x62')],{'mixmonitorid':_0xeeb8ce['mixmonitorid']});if(_0x3fda2b){_0x3fda2b[_0x1fb1('0x68')]='stop';}})[_0x1fb1('0x18')](function(){var _0x7e06e8=util['format'](_0x1fb1('0x5f'),_0xeeb8ce[_0x1fb1('0x60')]||_0xeeb8ce[_0x1fb1('0x5e')],_0xeeb8ce[_0x1fb1('0x6')]||_0x1fb1('0x6f'));var _0x2f50bf=_[_0x1fb1('0x59')](_0x455c60['monitors'],{'filename':_0x1fb1('0x63')+_0x7e06e8[_0x1fb1('0x64')]()});if(_0x2f50bf){_0x2f50bf['status']='stop';}})[_0x1fb1('0x18')](function(){_0x1b924e({'code':0xc8,'message':[_0xeeb8ce[_0x1fb1('0x5e')],_0x1fb1('0x70')][_0x1fb1('0x14')]('\x20')});})[_0x1fb1('0x1a')](function(_0x26715b){_0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f5,[_0xeeb8ce['uniqueid'],_0x26715b[_0x1fb1('0x19')][_0x1fb1('0x64')]()][_0x1fb1('0x14')]('\x20')));});}else{return _0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'VoiceQueuesChannels':function(_0x29c42d){return new Promise(function(_0x3c0873,_0x3236df){var _0x36e568=_['values'](_0x2ae20f[_0x1fb1('0x71')]);_0x3c0873({'count':_0x36e568[_0x1fb1('0x58')],'rows':_0x36e568});});},'VoiceQueuesChannel':function(_0x557305){var _0x4c33ce=this;return new Promise(function(_0x1416d8,_0x148fb5){var _0x5931a7=schema(properties[_0x1fb1('0x72')])[_0x1fb1('0x2')](_0x557305);if(_0x5931a7[_0x1fb1('0x58')]>0x0){return _0x148fb5(_0x4c33ce[_0x1fb1('0x10')](0x1f4,_[_0x1fb1('0x6b')](_0x5931a7,_0x1fb1('0x19'))[_0x1fb1('0x14')](',\x20')));}var _0x33fe10=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x71')],{'uniqueid':_0x557305[_0x1fb1('0x5e')]});if(_0x33fe10){_0x1416d8(_0x33fe10);}else{return _0x148fb5(_0x4c33ce[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'VoiceQueuesChannelHangup':function(_0x200555){var _0x2b4e97=this;return new Promise(function(_0x2912b6,_0x41099c){if(ami[_0x1fb1('0xf')]()==![]){return _0x41099c(_0x2b4e97[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')]['username'],'ami\x20disconnected'][_0x1fb1('0x14')]('\x20')));}var _0x4d0c20=schema(properties[_0x1fb1('0x73')])[_0x1fb1('0x2')](_0x200555);if(_0x4d0c20['length']>0x0){return _0x41099c(_0x2b4e97['error'](0x1f4,_['map'](_0x4d0c20,'message')[_0x1fb1('0x14')](',\x20')));}var _0x21679f=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x71')],{'uniqueid':_0x200555[_0x1fb1('0x5e')]});if(_0x21679f&&_0x21679f[_0x1fb1('0x61')]){return ami[_0x1fb1('0x1c')]({'action':_0x1fb1('0x74'),'channel':_0x21679f['channel']})['then'](function(_0x45dc47){_0x2912b6({'code':0xc8,'message':[_0x200555[_0x1fb1('0x5e')],_0x45dc47[_0x1fb1('0x19')][_0x1fb1('0x64')]()][_0x1fb1('0x14')]('\x20')});})[_0x1fb1('0x1a')](function(_0xf328b2){_0x41099c(_0x2b4e97[_0x1fb1('0x10')](0x1f5,[_0x200555[_0x1fb1('0x5e')],_0xf328b2[_0x1fb1('0x19')]['toLowerCase']()][_0x1fb1('0x14')]('\x20')));});}else{return _0x41099c(_0x2b4e97[_0x1fb1('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x320371){var _0x3fd837=this;return new Promise(function(_0x48e66f,_0x1761e0){if(ami[_0x1fb1('0xf')]()==![]){return _0x1761e0(_0x3fd837[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config['asterisk'][_0x1fb1('0x12')],_0x1fb1('0x13')]['join']('\x20')));}var _0x1476bf=schema(properties['voicequeuechannelredirect'])['validate'](_0x320371);if(_0x1476bf[_0x1fb1('0x58')]>0x0){return _0x1761e0(_0x3fd837[_0x1fb1('0x10')](0x1f4,_[_0x1fb1('0x6b')](_0x1476bf,_0x1fb1('0x19'))[_0x1fb1('0x14')](',\x20')));}var _0xba3cb3=_['find'](_0x2ae20f[_0x1fb1('0x71')],{'uniqueid':_0x320371[_0x1fb1('0x5e')]});if(_0xba3cb3&&_0xba3cb3[_0x1fb1('0x61')]){return ami[_0x1fb1('0x1c')]({'action':'Redirect','channel':_0xba3cb3[_0x1fb1('0x61')],'exten':_0x320371[_0x1fb1('0x75')],'context':_0x320371['context']||_0xba3cb3['context'],'priority':0x1})[_0x1fb1('0x18')](function(_0x397388){_0x48e66f({'code':0xc8,'message':[_0x320371[_0x1fb1('0x5e')],_0x397388[_0x1fb1('0x19')]['toLowerCase']()][_0x1fb1('0x14')]('\x20')});})['catch'](function(_0x53dd03){_0x1761e0(_0x3fd837['error'](0x1f5,[_0x320371['uniqueid'],_0x53dd03[_0x1fb1('0x19')][_0x1fb1('0x64')]()][_0x1fb1('0x14')]('\x20')));});}else{return _0x1761e0(_0x3fd837[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'Agents':function(_0x27f6ef){return new Promise(function(_0x5acf57,_0x410402){var _0x29e6e1=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0xb')]);_0x5acf57({'count':_0x29e6e1[_0x1fb1('0x58')],'rows':_0x29e6e1});});},'Telephones':function(_0x212713){return new Promise(function(_0x4fd426,_0x3c94b9){var _0x1d2113=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0x77')]);_0x4fd426({'count':_0x1d2113[_0x1fb1('0x58')],'rows':_0x1d2113});});},'Trunks':function(_0x4abfb7){return new Promise(function(_0x38db30,_0x4be09a){var _0x426226=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0x78')]);_0x38db30({'count':_0x426226[_0x1fb1('0x58')],'rows':_0x426226});});},'OutboundChannels':function(_0x4bc127){return new Promise(function(_0x5087de,_0x5b652e){var _0x3ffb18=_['values'](_0x2ae20f['outboundChannels']);_0x5087de({'count':_0x3ffb18[_0x1fb1('0x58')],'rows':_0x3ffb18});});},'Outbound':function(_0x35f7d5){return new Promise(function(_0x194aee,_0x283594){_0x194aee(_0x2ae20f[_0x1fb1('0x2d')]);});},'Campaigns':function(_0x438b6a){return new Promise(function(_0x47a193,_0x1a605c){var _0x38444c=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0x79')]);_0x47a193({'count':_0x38444c[_0x1fb1('0x58')],'rows':_0x38444c});});},'VoiceQueuesPreview':function(_0xd07208){var _0x339300=this;return new Promise(function(_0x35c948,_0x2ac3bd){_0x5af469['run'](_0xd07208['id'])[_0x1fb1('0x18')](function(_0x10fcc6){_0x35c948({'code':0xc8,'message':_0x10fcc6[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x360f8f){_0x2ac3bd(_0x339300['error'](0x1f4,_0x360f8f[_0x1fb1('0x19')]));});});},'EventManager':function(_0x553d2e){var _0x3e19e4=this;return new Promise(function(_0x5f2246,_0x4eed3d){if(!_0x553d2e[_0x1fb1('0x7a')]){return _0x4eed3d(_0x3e19e4['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x1fb1('0x7b')+_0x553d2e['event'],_0x553d2e[_0x1fb1('0x19')]);_0x5f2246({'code':0xc8,'message':_0x553d2e});});},'FaxAccounts':function(_0x1e4066){return new Promise(function(_0x23cc74,_0xe8fad1){var _0x10c6fc=_['values'](_0x2ae20f[_0x1fb1('0x7c')]);_0x23cc74({'count':_0x10c6fc[_0x1fb1('0x58')],'rows':_0x10c6fc});});},'SendFax':function(_0x377741){var _0xe95d69=this;return new Promise(function(_0x391ae1,_0x5429a9){_0x25d44f[_0x1fb1('0x7d')](_0x377741)[_0x1fb1('0x18')](function(_0x613233){_0x391ae1({'code':0xc8,'message':_0x613233[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x2136f7){_0x5429a9(_0xe95d69['error'](0x1f4,_0x2136f7['message']));});});},'CheckAfterSend':function(_0x8be954){var _0x3116c7=this;return new Promise(function(_0xcf63c7,_0x3c7a75){_0x25d44f['checkAfterSend'](_0x8be954)[_0x1fb1('0x18')](function(_0x278c09){_0xcf63c7({'code':0xc8,'message':_0x278c09[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x2f5947){_0x3c7a75(_0x3116c7['error'](0x1f4,_0x2f5947[_0x1fb1('0x19')]));});});}};var _0x38548d=jayson[_0x1fb1('0x7e')](_0x1859da)[_0x1fb1('0x7f')]();_0x38548d['on'](_0x1fb1('0x10'),function(_0x49a091){return _0x4c098d(_0x49a091);});_0x38548d[_0x1fb1('0x5')](0x232a,'127.0.0.1',function(){console[_0x1fb1('0x80')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x133727(_0x1fb1('0x81')+0x232a);});});};
\ No newline at end of file
+var _0x3e24=['unmanaged','abandoned','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','length','find','undefined','values','uniqueid','channel','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','map','channels','resolve','StopMixMonitor','destinationchannel','status','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','context','telephones','outboundChannels','campaigns','run','Event\x20name\x20mandatory','emit','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','lodash','util','jayson/promise','validate','bluebird','../../../config/environment','../properties','listen','format','%s/%s','name','timers','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','action','Reload','Action','then','message','catch','command','Command','content','voiceQueues','hasOwnProperty','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','talking','total','type'];(function(_0x17296b,_0x556c8a){var _0x33de1b=function(_0x3f54ac){while(--_0x3f54ac){_0x17296b['push'](_0x17296b['shift']());}};_0x33de1b(++_0x556c8a);}(_0x3e24,0x167));var _0x43e2=function(_0x2b13bc,_0x45b308){_0x2b13bc=_0x2b13bc-0x0;var _0x48275b=_0x3e24[_0x2b13bc];return _0x48275b;};'use strict';var _=require(_0x43e2('0x0'));var util=require(_0x43e2('0x1'));var jayson=require(_0x43e2('0x2'));var schema=require(_0x43e2('0x3'));var BPromise=require(_0x43e2('0x4'));var moment=require('moment');var config=require(_0x43e2('0x5'));var properties=require(_0x43e2('0x6'));var ami=require('../ami');exports[_0x43e2('0x7')]=function(_0x18629c,_0x1a89fc,_0x28b144){return new BPromise(function(_0x43b5a7,_0x121e2e){var _0x23b2d8={'QueuePause':function(_0x59956d){return new Promise(function(_0xb75b,_0x2357bc){var _0x4bd2ce=util[_0x43e2('0x8')](_0x43e2('0x9'),'SIP',_0x59956d[_0x43e2('0xa')]);if(_0x18629c[_0x43e2('0xb')]&&_0x18629c['timers'][_0x4bd2ce]&&_0x18629c[_0x43e2('0xb')][_0x4bd2ce]['timer']){_0x18629c['timers'][_0x4bd2ce]['updateAcw']();}if(_0x18629c[_0x43e2('0xc')][_0x4bd2ce]){_0x18629c[_0x43e2('0xc')][_0x4bd2ce][_0x43e2('0xd')]({'statePause':_0x59956d[_0x43e2('0xe')]?!![]:![]});}_0xb75b({'code':0xc8,'message':_0x43e2('0xf')});});},'Reload':function(_0x68e82d){var _0x131bef=this;return new Promise(function(_0x802e2d,_0x10d166){if(ami[_0x43e2('0x10')]()==![]){return _0x10d166(_0x131bef[_0x43e2('0x11')](0x1f4,[config[_0x43e2('0x12')]['ip'],config['asterisk'][_0x43e2('0x13')],_0x43e2('0x14')][_0x43e2('0x15')]('\x20')));}_0x68e82d=_[_0x43e2('0x16')](_0x68e82d,_['keys'](properties['module']));_0x68e82d[_0x43e2('0x17')]=_0x43e2('0x18');return ami[_0x43e2('0x19')](_0x68e82d)[_0x43e2('0x1a')](function(_0x105cb8){_0x802e2d({'code':0xc8,'message':_0x105cb8[_0x43e2('0x1b')]});})[_0x43e2('0x1c')](function(_0x15ecb5){_0x10d166(_0x131bef[_0x43e2('0x11')](0x1f5,_0x15ecb5[_0x43e2('0x1b')]));});});},'Command':function(_0x4879e9){var _0x3ee34c=this;return new Promise(function(_0xb99e5d,_0x4de509){if(ami[_0x43e2('0x10')]()==![]){return _0x4de509(_0x3ee34c['error'](0x1f4,[config[_0x43e2('0x12')]['ip'],config[_0x43e2('0x12')][_0x43e2('0x13')],_0x43e2('0x14')][_0x43e2('0x15')]('\x20')));}_0x4879e9=_['pick'](_0x4879e9,_0x43e2('0x1d'));_0x4879e9[_0x43e2('0x17')]=_0x43e2('0x1e');return ami['Action'](_0x4879e9)[_0x43e2('0x1a')](function(_0x32f048){_0xb99e5d({'code':0xc8,'message':_0x32f048[_0x43e2('0x1f')]});})[_0x43e2('0x1c')](function(_0x4f20e6){_0x4de509(_0x3ee34c[_0x43e2('0x11')](0x1f5,_0x4f20e6[_0x43e2('0x1b')]));});});},'VoiceQueues':function(_0x215cb7){return new Promise(function(_0x3b7b22,_0x178223){var _0x2a593e=[];for(var _0x3ca16b in _0x18629c[_0x43e2('0x20')]){if(_0x18629c[_0x43e2('0x20')][_0x43e2('0x21')](_0x3ca16b)){var _0x1ea844=_0x18629c[_0x43e2('0x20')][_0x3ca16b];var _0x52ed49={'id':_0x1ea844['id'],'name':_0x1ea844[_0x43e2('0xa')],'strategy':_0x1ea844[_0x43e2('0x22')],'answered':_0x1ea844['answered'],'available':_0x1ea844[_0x43e2('0x23')],'loggedIn':_0x1ea844[_0x43e2('0x24')],'pTalking':_0x1ea844[_0x43e2('0x25')],'sumBillable':_0x1ea844[_0x43e2('0x26')],'sumDuration':_0x1ea844[_0x43e2('0x27')],'sumHoldTime':_0x1ea844['sumHoldTime']||0x0,'talking':_0x1ea844[_0x43e2('0x28')],'total':_0x1ea844[_0x43e2('0x29')],'type':_0x1ea844[_0x43e2('0x2a')],'unmanaged':_0x1ea844[_0x43e2('0x2b')],'abandoned':_0x1ea844[_0x43e2('0x2c')],'waiting':_0x1ea844[_0x43e2('0x2d')],'loggedInDb':_0x1ea844['loggedInDb']};if(_0x1ea844['type']===_0x43e2('0x2e')){_0x52ed49[_0x43e2('0x2f')]=_0x1ea844[_0x43e2('0x2f')];_0x52ed49[_0x43e2('0x30')]=_0x1ea844[_0x43e2('0x30')];_0x52ed49['dialOriginateCallerIdName']=_0x1ea844[_0x43e2('0x31')];_0x52ed49[_0x43e2('0x32')]=_0x1ea844[_0x43e2('0x32')];_0x52ed49[_0x43e2('0x33')]=_0x1ea844[_0x43e2('0x33')];_0x52ed49[_0x43e2('0x34')]=_0x1ea844[_0x43e2('0x34')];_0x52ed49['temp']=_0x1ea844['temp'];_0x52ed49[_0x43e2('0x35')]=_0x1ea844[_0x43e2('0x35')];_0x52ed49['outboundAnswerCallsDay']=_0x1ea844[_0x43e2('0x36')];_0x52ed49[_0x43e2('0x37')]=_0x1ea844['outboundBlacklistCallsDay'];_0x52ed49[_0x43e2('0x38')]=_0x1ea844['outboundBusyCallsDay'];_0x52ed49['outboundCongestionCallsDay']=_0x1ea844['outboundCongestionCallsDay'];_0x52ed49[_0x43e2('0x39')]=_0x1ea844['outboundDropCallsDayACS'];_0x52ed49[_0x43e2('0x3a')]=_0x1ea844[_0x43e2('0x3a')];_0x52ed49[_0x43e2('0x3b')]=_0x1ea844[_0x43e2('0x3b')];_0x52ed49[_0x43e2('0x3c')]=_0x1ea844[_0x43e2('0x3c')];_0x52ed49[_0x43e2('0x3d')]=_0x1ea844[_0x43e2('0x3d')];_0x52ed49[_0x43e2('0x3e')]=_0x1ea844[_0x43e2('0x3e')];_0x52ed49[_0x43e2('0x3f')]=_0x1ea844[_0x43e2('0x3f')];_0x52ed49[_0x43e2('0x40')]=_0x1ea844[_0x43e2('0x40')];_0x52ed49[_0x43e2('0x41')]=_0x1ea844[_0x43e2('0x41')];_0x52ed49[_0x43e2('0x42')]=_0x1ea844['predictiveIntervalAnsweredCalls'];_0x52ed49['predictiveIntervalAvgHoldtime']=_0x1ea844['predictiveIntervalAvgHoldtime'];_0x52ed49[_0x43e2('0x43')]=_0x1ea844[_0x43e2('0x43')];_0x52ed49['predictiveIntervalDroppedCallsCallersExit']=_0x1ea844['predictiveIntervalDroppedCallsCallersExit'];_0x52ed49[_0x43e2('0x44')]=_0x1ea844[_0x43e2('0x44')];_0x52ed49[_0x43e2('0x45')]=_0x1ea844[_0x43e2('0x45')];_0x52ed49[_0x43e2('0x46')]=_0x1ea844[_0x43e2('0x46')];_0x52ed49[_0x43e2('0x47')]=_0x1ea844[_0x43e2('0x47')];_0x52ed49[_0x43e2('0x48')]=_0x1ea844[_0x43e2('0x48')];_0x52ed49[_0x43e2('0x49')]=_0x1ea844[_0x43e2('0x49')];_0x52ed49[_0x43e2('0x4a')]=_0x1ea844[_0x43e2('0x4a')];_0x52ed49['predictiveIntervalTotalCalls']=_0x1ea844[_0x43e2('0x4b')];_0x52ed49['message']=_0x1ea844[_0x43e2('0x1b')];_0x52ed49['originated']=_0x1ea844[_0x43e2('0x4c')];_0x52ed49[_0x43e2('0x4d')]=_0x1ea844[_0x43e2('0x4d')];_0x52ed49['erlangCallToSecond']=_0x1ea844[_0x43e2('0x4e')];_0x52ed49['erlangAbandonmentRate']=_0x1ea844[_0x43e2('0x4f')];_0x52ed49[_0x43e2('0x50')]=_0x1ea844[_0x43e2('0x50')];_0x52ed49[_0x43e2('0x51')]=_0x1ea844['startPredictive'];_0x52ed49['startProgressive']=_0x1ea844[_0x43e2('0x52')];}if(_0x1ea844[_0x43e2('0x53')]){_0x52ed49[_0x43e2('0x53')]={'id':_0x1ea844[_0x43e2('0x53')]['id'],'name':_0x1ea844['Trunk'][_0x43e2('0xa')],'active':_0x1ea844[_0x43e2('0x53')][_0x43e2('0x54')],'callerid':_0x1ea844[_0x43e2('0x53')][_0x43e2('0x55')]};}if(_0x1ea844['Interval']){_0x52ed49[_0x43e2('0x56')]={'id':_0x1ea844['Interval']['id'],'name':_0x1ea844[_0x43e2('0x56')][_0x43e2('0xa')]};}_0x2a593e['push'](_0x52ed49);}}_0x3b7b22({'count':_0x2a593e[_0x43e2('0x57')],'rows':_0x2a593e});});},'UpdateVoiceQueue':function(_0x5cfa34){return new Promise(function(_0x4b4e68,_0x44d036){var _0x3f61c6=_[_0x43e2('0x58')](_0x18629c[_0x43e2('0x20')],{'id':parseInt(_0x5cfa34['id'])});var _0x13154c=_['omit'](_0x5cfa34,['id']);if(_0x3f61c6){for(var _0x1b001d in _0x13154c){if(typeof _0x13154c[_0x1b001d]!==_0x43e2('0x59')&&typeof _0x3f61c6[_0x1b001d]!==_0x43e2('0x59')){_0x3f61c6[_0x1b001d]=_0x13154c[_0x1b001d];}}_0x4b4e68(_0x3f61c6);}else{_0x44d036();}});},'VoiceChannels':function(_0xe5c04){return new Promise(function(_0x466448,_0x4114ce){var _0x29a9ef=_[_0x43e2('0x5a')](_0x18629c['channels']);_0x466448({'count':_0x29a9ef[_0x43e2('0x57')],'rows':_0x29a9ef});});},'VoiceChannelMixMonitor':function(_0x2832a4){var _0x497e12=this;return new Promise(function(_0x1af22d,_0x2b82be){if(ami[_0x43e2('0x10')]()==![]){return _0x2b82be(_0x497e12[_0x43e2('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x43e2('0x12')][_0x43e2('0x13')],_0x43e2('0x14')][_0x43e2('0x15')]('\x20')));}var _0x42f27d=schema(properties['voicechannel'])['validate'](_0x2832a4);if(_0x42f27d[_0x43e2('0x57')]>0x0){return _0x2b82be(_0x497e12[_0x43e2('0x11')](0x1f4,_['map'](_0x42f27d,_0x43e2('0x1b'))[_0x43e2('0x15')](',\x20')));}var _0x3888e8=_['find'](_0x18629c['channels'],{'uniqueid':_0x2832a4[_0x43e2('0x5b')]});if(_0x3888e8&&_0x3888e8[_0x43e2('0x5c')]){var _0x32148b=util[_0x43e2('0x8')](_0x43e2('0x5d'),_0x2832a4[_0x43e2('0x5e')]||_0x2832a4[_0x43e2('0x5b')],_0x2832a4[_0x43e2('0x8')]||_0x43e2('0x5f'));return ami['Action']({'action':_0x43e2('0x60'),'channel':_0x3888e8['channel'],'file':_0x32148b,'options':_0x43e2('0x61')})[_0x43e2('0x1a')](function(_0x2f8894){var _0x5a5b32=_[_0x43e2('0x58')](_0x3888e8[_0x43e2('0x62')],{'filename':_0x43e2('0x63')+_0x32148b[_0x43e2('0x64')]()});if(_[_0x43e2('0x65')](_0x5a5b32)){_0x3888e8[_0x43e2('0x62')][_0x43e2('0x66')]({'filename':_0x43e2('0x63')+_0x32148b[_0x43e2('0x64')](),'createdAt':moment()[_0x43e2('0x8')](_0x43e2('0x67')),'mixmonitorid':_0x2f8894[_0x43e2('0x68')],'status':_0x43e2('0x69')});}else{_0x5a5b32['mixmonitorid']=_0x2f8894['mixmonitorid'];_0x5a5b32['status']='rec';}_0x1af22d({'code':0xc8,'message':[_0x2832a4['uniqueid'],'MixMonitor\x20Success',_0x2f8894[_0x43e2('0x68')]]['join']('\x20'),'mixmonitorid':_0x2f8894['mixmonitorid']});})[_0x43e2('0x1c')](function(_0x4c6bb9){_0x2b82be(_0x497e12[_0x43e2('0x11')](0x1f5,[_0x2832a4['uniqueid'],_0x4c6bb9[_0x43e2('0x1b')][_0x43e2('0x64')]()][_0x43e2('0x15')]('\x20')));});}else{return _0x2b82be(_0x497e12[_0x43e2('0x11')](0x1f5,_0x43e2('0x6a')));}});},'VoiceChannelStopMixMonitor':function(_0x13685a){var _0x129bd0=this;return new Promise(function(_0x211b9c,_0x40d99b){if(ami[_0x43e2('0x10')]()==![]){return _0x40d99b(_0x129bd0['error'](0x1f4,[config[_0x43e2('0x12')]['ip'],config[_0x43e2('0x12')]['username'],_0x43e2('0x14')]['join']('\x20')));}var _0x5d6c3d=schema(properties['voicechannel'])['validate'](_0x13685a);if(_0x5d6c3d['length']>0x0){return _0x40d99b(_0x129bd0[_0x43e2('0x11')](0x1f4,_[_0x43e2('0x6b')](_0x5d6c3d,_0x43e2('0x1b'))[_0x43e2('0x15')](',\x20')));}var _0x49fc77=_['find'](_0x18629c[_0x43e2('0x6c')],{'uniqueid':_0x13685a[_0x43e2('0x5b')]});if(_0x49fc77){return BPromise[_0x43e2('0x6d')]()[_0x43e2('0x1a')](function(){if(_0x49fc77[_0x43e2('0x5c')]){return ami[_0x43e2('0x19')]({'action':_0x43e2('0x6e'),'channel':_0x49fc77[_0x43e2('0x5c')],'mixmonitorid':_0x13685a[_0x43e2('0x68')]})[_0x43e2('0x1c')](function(_0x1dd8c8){});}})['then'](function(){if(_0x49fc77[_0x43e2('0x6f')]){return ami[_0x43e2('0x19')]({'action':_0x43e2('0x6e'),'channel':_0x49fc77[_0x43e2('0x6f')],'mixmonitorid':_0x13685a[_0x43e2('0x68')]})['catch'](function(_0x39eded){});}})[_0x43e2('0x1a')](function(_0x4b06b8){var _0x137d0c=_['find'](_0x49fc77[_0x43e2('0x62')],{'mixmonitorid':_0x13685a[_0x43e2('0x68')]});if(_0x137d0c){_0x137d0c[_0x43e2('0x70')]=_0x43e2('0x71');}})[_0x43e2('0x1a')](function(){var _0x2bac5a=util[_0x43e2('0x8')](_0x43e2('0x5d'),_0x13685a[_0x43e2('0x5e')]||_0x13685a['uniqueid'],_0x13685a['format']||_0x43e2('0x5f'));var _0x2d93d6=_[_0x43e2('0x58')](_0x49fc77[_0x43e2('0x62')],{'filename':'/var/spool/asterisk/monitor/'+_0x2bac5a[_0x43e2('0x64')]()});if(_0x2d93d6){_0x2d93d6[_0x43e2('0x70')]=_0x43e2('0x71');}})['then'](function(){_0x211b9c({'code':0xc8,'message':[_0x13685a[_0x43e2('0x5b')],_0x43e2('0x72')][_0x43e2('0x15')]('\x20')});})[_0x43e2('0x1c')](function(_0x533967){_0x40d99b(_0x129bd0[_0x43e2('0x11')](0x1f5,[_0x13685a[_0x43e2('0x5b')],_0x533967[_0x43e2('0x1b')]['toLowerCase']()]['join']('\x20')));});}else{return _0x40d99b(_0x129bd0[_0x43e2('0x11')](0x1f5,_0x43e2('0x6a')));}});},'VoiceQueuesChannels':function(_0x518aa1){return new Promise(function(_0x361923,_0x419e85){var _0x3e317e=_['values'](_0x18629c[_0x43e2('0x73')]);_0x361923({'count':_0x3e317e['length'],'rows':_0x3e317e});});},'VoiceQueuesChannel':function(_0x24c1ff){var _0x471730=this;return new Promise(function(_0x4363da,_0x181d39){var _0x39c9b6=schema(properties[_0x43e2('0x74')])[_0x43e2('0x3')](_0x24c1ff);if(_0x39c9b6[_0x43e2('0x57')]>0x0){return _0x181d39(_0x471730['error'](0x1f4,_[_0x43e2('0x6b')](_0x39c9b6,_0x43e2('0x1b'))[_0x43e2('0x15')](',\x20')));}var _0x2e2d61=_[_0x43e2('0x58')](_0x18629c[_0x43e2('0x73')],{'uniqueid':_0x24c1ff[_0x43e2('0x5b')]});if(_0x2e2d61){_0x4363da(_0x2e2d61);}else{return _0x181d39(_0x471730[_0x43e2('0x11')](0x1f5,_0x43e2('0x6a')));}});},'VoiceQueuesChannelHangup':function(_0x1d4d7c){var _0x4602ae=this;return new Promise(function(_0x5dd68f,_0x222ab8){if(ami[_0x43e2('0x10')]()==![]){return _0x222ab8(_0x4602ae[_0x43e2('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x43e2('0x12')][_0x43e2('0x13')],_0x43e2('0x14')][_0x43e2('0x15')]('\x20')));}var _0x4ecbd5=schema(properties[_0x43e2('0x75')])['validate'](_0x1d4d7c);if(_0x4ecbd5[_0x43e2('0x57')]>0x0){return _0x222ab8(_0x4602ae[_0x43e2('0x11')](0x1f4,_[_0x43e2('0x6b')](_0x4ecbd5,'message')[_0x43e2('0x15')](',\x20')));}var _0x282876=_[_0x43e2('0x58')](_0x18629c[_0x43e2('0x73')],{'uniqueid':_0x1d4d7c[_0x43e2('0x5b')]});if(_0x282876&&_0x282876[_0x43e2('0x5c')]){return ami[_0x43e2('0x19')]({'action':_0x43e2('0x76'),'channel':_0x282876[_0x43e2('0x5c')]})[_0x43e2('0x1a')](function(_0x2ccaef){_0x5dd68f({'code':0xc8,'message':[_0x1d4d7c['uniqueid'],_0x2ccaef[_0x43e2('0x1b')][_0x43e2('0x64')]()][_0x43e2('0x15')]('\x20')});})[_0x43e2('0x1c')](function(_0x4e34a9){_0x222ab8(_0x4602ae[_0x43e2('0x11')](0x1f5,[_0x1d4d7c[_0x43e2('0x5b')],_0x4e34a9[_0x43e2('0x1b')][_0x43e2('0x64')]()][_0x43e2('0x15')]('\x20')));});}else{return _0x222ab8(_0x4602ae[_0x43e2('0x11')](0x1f5,_0x43e2('0x6a')));}});},'VoiceQueuesChannelRedirect':function(_0x248b2d){var _0x5a7b28=this;return new Promise(function(_0x19d3ec,_0x29c24d){if(ami[_0x43e2('0x10')]()==![]){return _0x29c24d(_0x5a7b28[_0x43e2('0x11')](0x1f4,[config[_0x43e2('0x12')]['ip'],config[_0x43e2('0x12')][_0x43e2('0x13')],'ami\x20disconnected'][_0x43e2('0x15')]('\x20')));}var _0x439b78=schema(properties[_0x43e2('0x77')])[_0x43e2('0x3')](_0x248b2d);if(_0x439b78[_0x43e2('0x57')]>0x0){return _0x29c24d(_0x5a7b28[_0x43e2('0x11')](0x1f4,_['map'](_0x439b78,_0x43e2('0x1b'))[_0x43e2('0x15')](',\x20')));}var _0xf6d220=_[_0x43e2('0x58')](_0x18629c[_0x43e2('0x73')],{'uniqueid':_0x248b2d[_0x43e2('0x5b')]});if(_0xf6d220&&_0xf6d220['channel']){return ami[_0x43e2('0x19')]({'action':_0x43e2('0x78'),'channel':_0xf6d220[_0x43e2('0x5c')],'exten':_0x248b2d['exten'],'context':_0x248b2d['context']||_0xf6d220[_0x43e2('0x79')],'priority':0x1})['then'](function(_0x5bd1a9){_0x19d3ec({'code':0xc8,'message':[_0x248b2d[_0x43e2('0x5b')],_0x5bd1a9[_0x43e2('0x1b')][_0x43e2('0x64')]()]['join']('\x20')});})[_0x43e2('0x1c')](function(_0x5cdf92){_0x29c24d(_0x5a7b28[_0x43e2('0x11')](0x1f5,[_0x248b2d[_0x43e2('0x5b')],_0x5cdf92[_0x43e2('0x1b')]['toLowerCase']()]['join']('\x20')));});}else{return _0x29c24d(_0x5a7b28['error'](0x1f5,_0x43e2('0x6a')));}});},'Agents':function(_0xa309da){return new Promise(function(_0x403fb1,_0x12fd99){var _0xd56111=_[_0x43e2('0x5a')](_0x18629c[_0x43e2('0xc')]);_0x403fb1({'count':_0xd56111[_0x43e2('0x57')],'rows':_0xd56111});});},'Telephones':function(_0x16bb5f){return new Promise(function(_0x2346ee,_0x38e95c){var _0x48f054=_[_0x43e2('0x5a')](_0x18629c[_0x43e2('0x7a')]);_0x2346ee({'count':_0x48f054['length'],'rows':_0x48f054});});},'Trunks':function(_0x2b1a80){return new Promise(function(_0x57fbac,_0x2ea250){var _0x319292=_[_0x43e2('0x5a')](_0x18629c['trunks']);_0x57fbac({'count':_0x319292[_0x43e2('0x57')],'rows':_0x319292});});},'OutboundChannels':function(_0x13cd38){return new Promise(function(_0x5043f1,_0x4f83e3){var _0x5c5a59=_[_0x43e2('0x5a')](_0x18629c[_0x43e2('0x7b')]);_0x5043f1({'count':_0x5c5a59[_0x43e2('0x57')],'rows':_0x5c5a59});});},'Outbound':function(_0x3600c4){return new Promise(function(_0x15a507,_0x19b134){_0x15a507(_0x18629c[_0x43e2('0x2e')]);});},'Campaigns':function(_0x51f61b){return new Promise(function(_0x50de17,_0x20157d){var _0x44b751=_['values'](_0x18629c[_0x43e2('0x7c')]);_0x50de17({'count':_0x44b751[_0x43e2('0x57')],'rows':_0x44b751});});},'VoiceQueuesPreview':function(_0x343d7e){var _0x5033ff=this;return new Promise(function(_0x268955,_0xe02c94){_0x1a89fc[_0x43e2('0x7d')](_0x343d7e['id'])[_0x43e2('0x1a')](function(_0x1eae84){_0x268955({'code':0xc8,'message':_0x1eae84[_0x43e2('0x1b')]});})[_0x43e2('0x1c')](function(_0x41ae38){_0xe02c94(_0x5033ff[_0x43e2('0x11')](0x1f4,_0x41ae38[_0x43e2('0x1b')]));});});},'EventManager':function(_0x3bfdb6){var _0x259160=this;return new Promise(function(_0x1cf109,_0x27cfdb){if(!_0x3bfdb6['event']){return _0x27cfdb(_0x259160[_0x43e2('0x11')](0x1f4,_0x43e2('0x7e')));}ami[_0x43e2('0x7f')]('custom:'+_0x3bfdb6['event'],_0x3bfdb6[_0x43e2('0x1b')]);_0x1cf109({'code':0xc8,'message':_0x3bfdb6});});},'FaxAccounts':function(_0x23c490){return new Promise(function(_0x35e117,_0x54e5fe){var _0x5ef6f4=_[_0x43e2('0x5a')](_0x18629c[_0x43e2('0x80')]);_0x35e117({'count':_0x5ef6f4[_0x43e2('0x57')],'rows':_0x5ef6f4});});},'SendFax':function(_0x3ed240){var _0x1d48ce=this;return new Promise(function(_0x3c273d,_0x3ff1c9){_0x28b144[_0x43e2('0x81')](_0x3ed240)[_0x43e2('0x1a')](function(_0x11a897){_0x3c273d({'code':0xc8,'message':_0x11a897[_0x43e2('0x1b')]});})[_0x43e2('0x1c')](function(_0x440ee8){_0x3ff1c9(_0x1d48ce[_0x43e2('0x11')](0x1f4,_0x440ee8[_0x43e2('0x1b')]));});});},'CheckAfterSend':function(_0x2a21fd){var _0x1e8aeb=this;return new Promise(function(_0x1522d7,_0x36adb7){_0x28b144[_0x43e2('0x82')](_0x2a21fd)[_0x43e2('0x1a')](function(_0x39d587){_0x1522d7({'code':0xc8,'message':_0x39d587[_0x43e2('0x1b')]});})[_0x43e2('0x1c')](function(_0x120070){_0x36adb7(_0x1e8aeb['error'](0x1f4,_0x120070['message']));});});}};var _0x321510=jayson[_0x43e2('0x83')](_0x23b2d8)[_0x43e2('0x84')]();_0x321510['on']('error',function(_0x8daf6c){return _0x121e2e(_0x8daf6c);});_0x321510[_0x43e2('0x7')](0x232a,_0x43e2('0x85'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x43b5a7('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 2957e65..565494a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24f1=['ioredis','util','../../../../config/environment','../../../../config/logger','trigger','redis','defaults','info','emit','data2','xmd-contactid','ListId','data3','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','fax','scheduledAt','updatedAt','union','resolve','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','destcalleridname','Unknown','then','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','<unknown>','format','user:%s','trigger:%s','action','merge','lodash'];(function(_0x3216cc,_0x5e04b3){var _0x308340=function(_0x4057b8){while(--_0x4057b8){_0x3216cc['push'](_0x3216cc['shift']());}};_0x308340(++_0x5e04b3);}(_0x24f1,0x65));var _0x124f=function(_0x3242cf,_0x3685cc){_0x3242cf=_0x3242cf-0x0;var _0x19abec=_0x24f1[_0x3242cf];return _0x19abec;};'use strict';var _=require(_0x124f('0x0'));var BPromise=require('bluebird');var Redis=require(_0x124f('0x1'));var util=require(_0x124f('0x2'));var config=require(_0x124f('0x3'));var logger=require(_0x124f('0x4'))(_0x124f('0x5'));var cmContactRpc=require('../../rpc/cmContact');config[_0x124f('0x6')]=_[_0x124f('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x527d7d,_0x2d76f6,_0x553586,_0x311018,_0x132d1b){logger[_0x124f('0x8')]('[CM][%s][%s]',_0x527d7d,_0x2d76f6['id'],_0x553586,_0x311018,JSON['stringify'](_0x132d1b));io['to'](_0x553586)[_0x124f('0x9')](_0x311018,_0x132d1b);}exports['exec']=function(_0x2a3602,_0x52e14b,_0x22b8d5,_0x3d5e10){var _0x14e81f,_0x3df35c;var _0x10989d={};var _0x50569e=Number(_0x22b8d5['data1']);var _0x1654bf=_0x22b8d5[_0x124f('0xa')]?Boolean(Number(_0x22b8d5[_0x124f('0xa')])):![];var _0x39283b;if(_0x3d5e10[_0x124f('0xb')]){_0x10989d['id']=_0x3d5e10[_0x124f('0xb')];}if(!_0x10989d['id']){_0x10989d[_0x124f('0xc')]=_0x50569e;_0x39283b=_0x22b8d5[_0x124f('0xd')]&&_0x22b8d5[_0x124f('0xd')]!=='0'?_0x22b8d5[_0x124f('0xd')]['split'](','):[_0x124f('0xe')];_0x10989d[_0x124f('0xf')]=_[_0x124f('0x10')](_0x39283b,function(_0x36c8e9){var _0xdb5d7={};_0xdb5d7[_0x36c8e9]=_0x3d5e10[_0x124f('0x11')]?_0x3d5e10[_0x124f('0x12')]:_0x3d5e10[_0x124f('0x13')];return _0xdb5d7;});}var _0x4489f2=['id',_0x124f('0x14'),_0x124f('0x15'),_0x124f('0xe'),'mobile',_0x124f('0x16'),_0x124f('0xc'),'createdAt',_0x124f('0x17'),_0x124f('0x18')];var _0x2ccfab=_[_0x124f('0x19')](_0x4489f2,_0x39283b);BPromise[_0x124f('0x1a')]()['then'](cmContactRpc[_0x124f('0x1b')]({'attributes':_0x2ccfab,'where':_0x10989d}))['then'](function(_0x37f800){_0x3df35c=_0x37f800;if(!_[_0x124f('0x1c')](_0x3df35c)){if(_0x3df35c[_0x124f('0x1d')]===0x1){_0x14e81f=_0x3df35c[0x0];logger[_0x124f('0x8')](_0x124f('0x1e'),_0x3d5e10['uniqueid'],_0x52e14b['id'],_0x14e81f['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id'],_[_0x124f('0x10')](_0x3df35c,'id')[_0x124f('0x20')](','));}return;}else{logger[_0x124f('0x8')](_0x124f('0x21'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id']);var _0xa3b81d={'ListId':_0x50569e};var _0x5e9c28=_0x22b8d5[_0x124f('0x22')]&&_0x22b8d5[_0x124f('0x22')]!=='0'?_0x22b8d5[_0x124f('0x22')]:_0x124f('0xe');if(_0x1654bf){logger[_0x124f('0x8')](_0x124f('0x23'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id']);_0xa3b81d[_0x5e9c28]=_[_0x124f('0x24')](_0x3d5e10[_0x124f('0x11')])?_0x3d5e10['calleridnum']:_0x3d5e10['destcalleridnum'];if(_[_0x124f('0x24')](_0x3d5e10[_0x124f('0x11')])){_0xa3b81d[_0x124f('0x14')]=_0x3d5e10['calleridname']&&_0x3d5e10[_0x124f('0x25')]!=='<unknown>'?_0x3d5e10[_0x124f('0x25')]:'Unknown';}else{_0xa3b81d[_0x124f('0x14')]=_0x3d5e10[_0x124f('0x26')]&&_0x3d5e10[_0x124f('0x26')]!=='<unknown>'?_0x3d5e10[_0x124f('0x26')]:_0x124f('0x27');}return BPromise[_0x124f('0x1a')]()[_0x124f('0x28')](cmContactRpc[_0x124f('0x29')](_0xa3b81d))[_0x124f('0x28')](function(_0x4ae756){_0x14e81f=_0x4ae756;_0x3df35c[_0x124f('0x2a')](_0x4ae756);if(_0x14e81f){logger[_0x124f('0x8')](_0x124f('0x2b'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id'],_0x14e81f['id']);}return;});}else{logger[_0x124f('0x8')](_0x124f('0x2c'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id']);_0xa3b81d[_0x5e9c28]=_['isNil'](_0x3d5e10[_0x124f('0x11')])?_0x3d5e10[_0x124f('0x13')]:_0x3d5e10[_0x124f('0x12')];if(_[_0x124f('0x24')](_0x3d5e10[_0x124f('0x11')])){_0xa3b81d[_0x124f('0x14')]=_0x3d5e10['calleridname']&&_0x3d5e10[_0x124f('0x25')]!==_0x124f('0x2d')?_0x3d5e10[_0x124f('0x25')]:_0x124f('0x27');}else{_0xa3b81d[_0x124f('0x14')]=_0x3d5e10[_0x124f('0x26')]&&_0x3d5e10[_0x124f('0x26')]!==_0x124f('0x2d')?_0x3d5e10[_0x124f('0x26')]:'Unknown';}_0x14e81f=_0xa3b81d;_0x3df35c[_0x124f('0x2a')](_0xa3b81d);return;}}})[_0x124f('0x28')](function(){if(_0x2a3602){emit(_0x3d5e10['uniqueid'],_0x52e14b,util[_0x124f('0x2e')](_0x124f('0x2f'),_0x2a3602['name']),util[_0x124f('0x2e')](_0x124f('0x30'),_0x22b8d5[_0x124f('0x31')]['toLowerCase']()),{'evt':_[_0x124f('0x32')](_0x3d5e10,{'autoCreate':_0x1654bf}),'contact':_0x14e81f===undefined?{}:_0x14e81f,'contacts':_0x3df35c[_0x124f('0x1d')]===0x0?undefined:_0x3df35c});}});};
\ No newline at end of file
+var _0xb4e6=['format','name','trigger:%s','action','toLowerCase','lodash','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','localhost','socket.io-emitter','[CM][%s][%s]','stringify','emit','exec','data1','data2','data5','xmd-contactid','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','firstName','lastName','mobile','fax','ListId','scheduledAt','updatedAt','union','then','isEmpty','length','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','calleridname','Unknown','<unknown>','destcalleridname','createContact'];(function(_0x27484a,_0x36e0f5){var _0x5a4998=function(_0x35a022){while(--_0x35a022){_0x27484a['push'](_0x27484a['shift']());}};_0x5a4998(++_0x36e0f5);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x10f68e,_0xf198ea){_0x10f68e=_0x10f68e-0x0;var _0x4c8372=_0xb4e6[_0x10f68e];return _0x4c8372;};'use strict';var _=require(_0x6b4e('0x0'));var BPromise=require('bluebird');var Redis=require(_0x6b4e('0x1'));var util=require(_0x6b4e('0x2'));var config=require(_0x6b4e('0x3'));var logger=require(_0x6b4e('0x4'))(_0x6b4e('0x5'));var cmContactRpc=require(_0x6b4e('0x6'));config[_0x6b4e('0x7')]=_['defaults'](config[_0x6b4e('0x7')],{'host':_0x6b4e('0x8'),'port':0x18eb});var io=require(_0x6b4e('0x9'))(new Redis(config['redis']));function emit(_0xd3138f,_0x570346,_0x4f00be,_0x2311d9,_0x48c870){logger['info'](_0x6b4e('0xa'),_0xd3138f,_0x570346['id'],_0x4f00be,_0x2311d9,JSON[_0x6b4e('0xb')](_0x48c870));io['to'](_0x4f00be)[_0x6b4e('0xc')](_0x2311d9,_0x48c870);}exports[_0x6b4e('0xd')]=function(_0x14cf84,_0x46cbe1,_0x323487,_0x49c734){var _0x39b4ec,_0x3bba86;var _0x58c67d={};var _0x2a4d0f=Number(_0x323487[_0x6b4e('0xe')]);var _0x432399=_0x323487[_0x6b4e('0xf')]?Boolean(Number(_0x323487[_0x6b4e('0xf')])):![];var _0xa3d358;var _0x1db513=![];if(!_['isNil'](_0x323487[_0x6b4e('0x10')])){if(_0x323487[_0x6b4e('0x10')]=='1')_0x1db513=!![];}if(!_0x1db513){if(_0x49c734['xmd-contactid']){_0x58c67d['id']=_0x49c734[_0x6b4e('0x11')];}}if(!_0x58c67d['id']){_0x58c67d['ListId']=_0x2a4d0f;_0xa3d358=_0x323487[_0x6b4e('0x12')]&&_0x323487[_0x6b4e('0x12')]!=='0'?_0x323487[_0x6b4e('0x12')][_0x6b4e('0x13')](','):[_0x6b4e('0x14')];_0x58c67d[_0x6b4e('0x15')]=_['map'](_0xa3d358,function(_0x5775f4){var _0x67496d={};_0x67496d[_0x5775f4]=_0x49c734[_0x6b4e('0x16')]?_0x49c734[_0x6b4e('0x17')]:_0x49c734[_0x6b4e('0x18')];return _0x67496d;});}var _0x101d0a=['id',_0x6b4e('0x19'),_0x6b4e('0x1a'),_0x6b4e('0x14'),_0x6b4e('0x1b'),_0x6b4e('0x1c'),_0x6b4e('0x1d'),'createdAt',_0x6b4e('0x1e'),_0x6b4e('0x1f')];var _0x31fb9d=_[_0x6b4e('0x20')](_0x101d0a,_0xa3d358);BPromise['resolve']()[_0x6b4e('0x21')](cmContactRpc['getContacts']({'attributes':_0x31fb9d,'where':_0x58c67d}))[_0x6b4e('0x21')](function(_0x163dea){_0x3bba86=_0x163dea;if(!_[_0x6b4e('0x22')](_0x3bba86)){if(_0x3bba86[_0x6b4e('0x23')]===0x1){_0x39b4ec=_0x3bba86[0x0];logger[_0x6b4e('0x24')](_0x6b4e('0x25'),_0x49c734[_0x6b4e('0x26')],_0x46cbe1['id'],_0x39b4ec['id']);}else{logger['info'](_0x6b4e('0x27'),_0x49c734['uniqueid'],_0x46cbe1['id'],_[_0x6b4e('0x28')](_0x3bba86,'id')[_0x6b4e('0x29')](','));}return;}else{logger[_0x6b4e('0x24')](_0x6b4e('0x2a'),_0x49c734['uniqueid'],_0x46cbe1['id']);var _0xec7d35={'ListId':_0x2a4d0f};var _0x3f72d7=_0x323487['data4']&&_0x323487[_0x6b4e('0x2b')]!=='0'?_0x323487[_0x6b4e('0x2b')]:_0x6b4e('0x14');if(_0x432399){logger[_0x6b4e('0x24')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x49c734[_0x6b4e('0x26')],_0x46cbe1['id']);_0xec7d35[_0x3f72d7]=_[_0x6b4e('0x2c')](_0x49c734['routeId'])?_0x49c734[_0x6b4e('0x18')]:_0x49c734[_0x6b4e('0x17')];if(_[_0x6b4e('0x2c')](_0x49c734[_0x6b4e('0x16')])){_0xec7d35['firstName']=_0x49c734[_0x6b4e('0x2d')]&&_0x49c734[_0x6b4e('0x2d')]!=='<unknown>'?_0x49c734[_0x6b4e('0x2d')]:_0x6b4e('0x2e');}else{_0xec7d35[_0x6b4e('0x19')]=_0x49c734['destcalleridname']&&_0x49c734['destcalleridname']!==_0x6b4e('0x2f')?_0x49c734[_0x6b4e('0x30')]:_0x6b4e('0x2e');}return BPromise['resolve']()[_0x6b4e('0x21')](cmContactRpc[_0x6b4e('0x31')](_0xec7d35))[_0x6b4e('0x21')](function(_0x5c1444){_0x39b4ec=_0x5c1444;_0x3bba86['push'](_0x5c1444);if(_0x39b4ec){logger[_0x6b4e('0x24')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x49c734[_0x6b4e('0x26')],_0x46cbe1['id'],_0x39b4ec['id']);}return;});}else{logger[_0x6b4e('0x24')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x49c734[_0x6b4e('0x26')],_0x46cbe1['id']);_0xec7d35[_0x3f72d7]=_[_0x6b4e('0x2c')](_0x49c734[_0x6b4e('0x16')])?_0x49c734[_0x6b4e('0x18')]:_0x49c734['destcalleridnum'];if(_['isNil'](_0x49c734[_0x6b4e('0x16')])){_0xec7d35[_0x6b4e('0x19')]=_0x49c734[_0x6b4e('0x2d')]&&_0x49c734[_0x6b4e('0x2d')]!==_0x6b4e('0x2f')?_0x49c734[_0x6b4e('0x2d')]:_0x6b4e('0x2e');}else{_0xec7d35[_0x6b4e('0x19')]=_0x49c734[_0x6b4e('0x30')]&&_0x49c734[_0x6b4e('0x30')]!==_0x6b4e('0x2f')?_0x49c734[_0x6b4e('0x30')]:_0x6b4e('0x2e');}_0x39b4ec=_0xec7d35;_0x3bba86['push'](_0xec7d35);return;}}})[_0x6b4e('0x21')](function(){if(_0x14cf84){emit(_0x49c734[_0x6b4e('0x26')],_0x46cbe1,util[_0x6b4e('0x32')]('user:%s',_0x14cf84[_0x6b4e('0x33')]),util['format'](_0x6b4e('0x34'),_0x323487[_0x6b4e('0x35')][_0x6b4e('0x36')]()),{'evt':_['merge'](_0x49c734,{'autoCreate':_0x432399}),'contact':_0x39b4ec===undefined?{}:_0x39b4ec,'contacts':_0x3bba86['length']===0x0?undefined:_0x3bba86});}});};
\ No newline at end of file
index 61b0787..aeaeaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cb7=['servicenowAccounts','freshsalesAccounts','dynamics365Accounts','syncCustomEvent','bind','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','prototype','emit','info','stringify','clone','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','buildUri','data3','isNil','data4','location','uriLocation','800','data5','windowHeight','600','data6','winApplication','winArguments','render','user:%s','name','trigger:%s:%s','trigger:%s','format','exec','integration','accounts','queue','routeId','urlforward','script','parse','query','search','AllConditions','every','checkConditions','channel','AnyConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','event','agent','membername','lastevent','exports','util','lodash','url','mustache','ioredis','./cmContact','../../../config/environment','trigger','../ami','redis','defaults','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts'];(function(_0x4da13c,_0x2753d9){var _0x58b17a=function(_0x46eea1){while(--_0x46eea1){_0x4da13c['push'](_0x4da13c['shift']());}};_0x58b17a(++_0x2753d9);}(_0x7cb7,0x1bb));var _0x77cb=function(_0x15bffd,_0x3f5d61){_0x15bffd=_0x15bffd-0x0;var _0xd4cfb3=_0x7cb7[_0x15bffd];return _0xd4cfb3;};'use strict';var util=require(_0x77cb('0x0'));var _=require(_0x77cb('0x1'));var url=require(_0x77cb('0x2'));var Mustache=require(_0x77cb('0x3'));var Redis=require(_0x77cb('0x4'));var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require(_0x77cb('0x5'));var script=require('./script');var config=require(_0x77cb('0x6'));var logger=require('../../../config/logger')(_0x77cb('0x7'));var ami=require(_0x77cb('0x8'));config[_0x77cb('0x9')]=_[_0x77cb('0xa')](config[_0x77cb('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x77cb('0xb'))(new Redis(config[_0x77cb('0x9')]));var operators={'equals':function(_0x1129dd,_0xfeb751){return _0x1129dd==_0xfeb751;},'not_equals':function(_0x4d572c,_0x463f96){return _0x4d572c!=_0x463f96;}};var barAndWebActions=['popup',_0x77cb('0x2'),_0x77cb('0xc')];function Trigger(_0x29f44e){this['triggers']=_0x29f44e[_0x77cb('0xd')];this[_0x77cb('0xe')]=_0x29f44e[_0x77cb('0xe')];this[_0x77cb('0xf')]=_0x29f44e[_0x77cb('0xf')];this[_0x77cb('0x10')]=_0x29f44e[_0x77cb('0x10')];this[_0x77cb('0x11')]=_0x29f44e['voiceExtensions'];this[_0x77cb('0x12')]=_0x29f44e['zendeskAccounts'];this[_0x77cb('0x13')]=_0x29f44e['freshdeskAccounts'];this['salesforceAccounts']=_0x29f44e[_0x77cb('0x14')];this[_0x77cb('0x15')]=_0x29f44e['sugarcrmAccounts'];this[_0x77cb('0x16')]=_0x29f44e[_0x77cb('0x16')];this['deskAccounts']=_0x29f44e[_0x77cb('0x17')];this[_0x77cb('0x18')]=_0x29f44e[_0x77cb('0x18')];this['servicenowAccounts']=_0x29f44e[_0x77cb('0x19')];this['dynamics365Accounts']=_0x29f44e['dynamics365Accounts'];this[_0x77cb('0x1a')]=_0x29f44e['freshsalesAccounts'];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x77cb('0x13')],'sugarcrm':this[_0x77cb('0x15')],'zoho':this[_0x77cb('0x16')],'desk':this['deskAccounts'],'vtiger':this[_0x77cb('0x18')],'dynamics365':this[_0x77cb('0x1b')],'freshsales':this['freshsalesAccounts'],'servicenow':this['servicenowAccounts']};ami['on']('custom:agentcalled',this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on']('custom:agentconnect',this[_0x77cb('0x1c')]['bind'](this));ami['on']('custom:agentringnoanswer',this[_0x77cb('0x1c')]['bind'](this));ami['on'](_0x77cb('0x1e'),this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x1f'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x20'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x21'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x22'),this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x23'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x24'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x25'),this['syncCustomEvent']['bind'](this));ami['on']('custom:timeout',this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x26'),this[_0x77cb('0x27')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x28'),this[_0x77cb('0x27')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x29'),this[_0x77cb('0x27')][_0x77cb('0x1d')](this));ami['on']('custom:newinteraction',this[_0x77cb('0x1c')]['bind'](this));ami['on'](_0x77cb('0x2a'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x2b'),this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on']('custom:outgoingmessage',this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x2c'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on']('custom:rejectmessage',this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));}Trigger[_0x77cb('0x2d')][_0x77cb('0x2e')]=function(_0x43dbe6,_0x4735c3,_0x3c3ecc){logger[_0x77cb('0x2f')](_0x43dbe6,_0x4735c3,JSON[_0x77cb('0x30')](_0x3c3ecc));io['to'](_0x43dbe6)[_0x77cb('0x2e')](_0x4735c3,_0x3c3ecc);};Trigger[_0x77cb('0x2d')][_0x77cb('0x1c')]=function(_0x5b6099){var _0xa73780=_[_0x77cb('0x31')](_0x5b6099);this[_0x77cb('0x32')](_0xa73780);};Trigger[_0x77cb('0x2d')]['syncAgentDial']=function(_0x5cb08b){if(this[_0x77cb('0xe')][_0x5cb08b[_0x77cb('0x33')]]){this[_0x77cb('0x1c')](_0x5cb08b);}};Trigger[_0x77cb('0x2d')]['checkTriggers']=function(_0xebd503){var _0xbfbdb4;for(var _0x2e7235 in this[_0x77cb('0xd')]){if(this[_0x77cb('0xd')][_0x77cb('0x34')](_0x2e7235)){if(this[_0x77cb('0xd')][_0x2e7235][_0x77cb('0x35')]){_0xbfbdb4=this[_0x77cb('0x36')](this['triggers'][_0x2e7235],_0xebd503);if(_0xbfbdb4){_[_0x77cb('0x37')](_0xebd503,_0xebd503['variables']);for(var _0x49fb20=0x0,_0x362c13,_0x338026,_0x318286;_0x49fb20<this[_0x77cb('0xd')][_0x2e7235][_0x77cb('0x38')][_0x77cb('0x39')];_0x49fb20+=0x1){_0x362c13=this[_0x77cb('0xd')][_0x2e7235][_0x77cb('0x38')][_0x49fb20];if(this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]]){switch(_0x362c13[_0x77cb('0x3a')][_0x77cb('0x3b')]()){case _0x77cb('0x3c'):break;case _0x77cb('0x3d'):case _0x77cb('0x3e'):var _0x1afa17={};switch(barAndWebActions[_0x362c13[_0x77cb('0x3f')]]){case'popup':_0x1afa17[_0x77cb('0x40')]=_0x362c13[_0x77cb('0x41')];_0x1afa17[_0x77cb('0x42')]=this[_0x77cb('0x10')][_0x362c13[_0x77cb('0x41')]]?Mustache['render'](this[_0x77cb('0x10')][_0x362c13['data2']][_0x77cb('0x42')],_0xebd503):_0x77cb('0x43');break;case _0x77cb('0x2'):_0x1afa17[_0x77cb('0x44')]=this[_0x77cb('0x45')](_0x362c13['data2'],_0xebd503,_['isNil'](_0x362c13['data3'])?!![]:parseInt(_0x362c13[_0x77cb('0x46')],0xa));if(_[_0x77cb('0x47')](_0x362c13[_0x77cb('0x48')])){_0x1afa17[_0x77cb('0x49')]='0';}else{_0x1afa17[_0x77cb('0x4a')]=_0x362c13[_0x77cb('0x48')];_0x1afa17['windowWidth']=_[_0x77cb('0x47')](_0x362c13['data5'])?_0x77cb('0x4b'):_0x362c13[_0x77cb('0x4c')];_0x1afa17[_0x77cb('0x4d')]=_[_0x77cb('0x47')](_0x362c13['data6'])?_0x77cb('0x4e'):_0x362c13[_0x77cb('0x4f')];}break;case'winapp':_0x1afa17[_0x77cb('0x50')]=_0x362c13[_0x77cb('0x41')]?Mustache['render'](_0x362c13[_0x77cb('0x41')],_0xebd503):'';_0x1afa17[_0x77cb('0x51')]=_0x362c13[_0x77cb('0x46')]?Mustache[_0x77cb('0x52')](_0x362c13[_0x77cb('0x46')],_0xebd503):'';break;}this['emit'](util['format'](_0x77cb('0x53'),this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]][_0x77cb('0x54')]),util['format'](_0x77cb('0x55'),_0x362c13[_0x77cb('0x3a')]['toLowerCase'](),barAndWebActions[_0x362c13[_0x77cb('0x3f')]]),_['merge'](_0x1afa17,_0xebd503));break;case'jscripty':this['emit'](util['format'](_0x77cb('0x53'),this[_0x77cb('0xe')][_0xebd503['interface']][_0x77cb('0x54')]),util['format'](_0x77cb('0x56'),_0x362c13[_0x77cb('0x3a')][_0x77cb('0x3b')]()),_[_0x77cb('0x37')]({'ProjectId':parseInt(_0x362c13['data1'],0xa)},_0xebd503));break;default:this[_0x77cb('0x2e')](util[_0x77cb('0x57')](_0x77cb('0x53'),this[_0x77cb('0xe')][_0xebd503['interface']][_0x77cb('0x54')]),util[_0x77cb('0x57')](_0x77cb('0x56'),_0x362c13[_0x77cb('0x3a')][_0x77cb('0x3b')]()),_[_0x77cb('0x37')]({},_0x362c13,_0xebd503));}}switch(_0x362c13['action'][_0x77cb('0x3b')]()){case _0x77cb('0x3c'):cmContact[_0x77cb('0x58')](this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]],this[_0x77cb('0xd')][_0x2e7235],_0x362c13,_0xebd503);break;case _0x77cb('0x59'):integration[_0x77cb('0x58')](_0x362c13,_0xebd503,this[_0x77cb('0x5a')],this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]],this[_0x77cb('0xf')][_0xebd503[_0x77cb('0x5b')]],this[_0x77cb('0x11')][_0xebd503[_0x77cb('0x5c')]]);break;case _0x77cb('0x5d'):urlforward[_0x77cb('0x58')](_0x362c13,_0xebd503);break;case _0x77cb('0x5e'):script[_0x77cb('0x58')](_0x362c13,_0xebd503);break;}}}}}}};Trigger[_0x77cb('0x2d')][_0x77cb('0x45')]=function(_0x4f1e3a,_0x20499f,_0x943bda){var _0xbdd8a=url[_0x77cb('0x5f')](Mustache['render'](_0x4f1e3a,_0x20499f),!![]);if(_0x943bda){_[_0x77cb('0x37')](_0xbdd8a[_0x77cb('0x60')],_0x20499f);}delete _0xbdd8a[_0x77cb('0x61')];var _0xadacc5=url['format'](_0xbdd8a);_0xadacc5=_0xadacc5['replace'](/\/\?/g,'?');return _0xadacc5;};Trigger[_0x77cb('0x2d')][_0x77cb('0x36')]=function(_0x102abc,_0x43a28d){var _0x14be10=!![],_0x384484=!![];if(_0x102abc[_0x77cb('0x62')]['length']){_0x14be10=_[_0x77cb('0x63')](_0x102abc[_0x77cb('0x62')],this[_0x77cb('0x64')](_0x43a28d,_0x102abc[_0x77cb('0x65')]));}if(_0x102abc[_0x77cb('0x66')][_0x77cb('0x39')]){_0x384484=_['some'](_0x102abc[_0x77cb('0x66')],this[_0x77cb('0x64')](_0x43a28d,_0x102abc['channel']));}return _0x14be10&&_0x384484;};Trigger['prototype'][_0x77cb('0x64')]=function(_0x485bf4,_0x4cf99e){return function(_0x546a65){switch(_0x546a65[_0x77cb('0x67')]){case _0x77cb('0x68'):if(_0x485bf4[_0x77cb('0x65')]===_0x4cf99e){if(_0x4cf99e===_0x77cb('0x69')){return _0x485bf4[_0x77cb('0x6a')]?operators[_0x546a65[_0x77cb('0x6b')]](Number(_0x546a65[_0x77cb('0x6c')]),_0x485bf4[_0x77cb('0x6a')]):![];}else{return _0x485bf4[_[_0x77cb('0x6d')](_0x4cf99e)+_0x77cb('0x6e')]?operators[_0x546a65[_0x77cb('0x6b')]](Number(_0x546a65[_0x77cb('0x6c')]),_0x485bf4[_[_0x77cb('0x6d')](_0x4cf99e)+_0x77cb('0x6e')]):![];}}break;case _0x77cb('0x6f'):case'message':if(_0x485bf4[_0x77cb('0x65')]===_0x4cf99e){return _0x485bf4['event']?operators[_0x546a65[_0x77cb('0x6b')]](_0x546a65['value'],_0x485bf4[_0x77cb('0x70')]):![];}break;case'queue':return _0x485bf4['queue']?operators[_0x546a65['operator']](_0x546a65[_0x77cb('0x6c')],_0x485bf4[_0x77cb('0x5b')]):![];case _0x77cb('0x71'):return _0x485bf4['membername']?operators[_0x546a65['operator']](_0x546a65['value'],_0x485bf4[_0x77cb('0x72')]):![];case'lastevent':return _0x485bf4[_0x77cb('0x73')]?operators[_0x546a65[_0x77cb('0x6b')]](_0x546a65['value'],_0x485bf4[_0x77cb('0x73')]):![];case _0x77cb('0x5c'):return _0x485bf4[_0x77cb('0x5c')]?operators[_0x546a65[_0x77cb('0x6b')]](_0x546a65[_0x77cb('0x6c')],_0x485bf4[_0x77cb('0x5c')]):![];}return![];};};module[_0x77cb('0x74')]=Trigger;
\ No newline at end of file
+var _0xb9e0=['render','template\x20not\x20found','buildUri','isNil','data3','uriLocation','data5','data6','600','winApplication','format','trigger:%s:%s','jscripty','user:%s','trigger:%s','toLowerCase','exec','integration','queue','routeId','search','replace','channel','AllConditions','length','every','checkConditions','AnyConditions','some','field','account','chat','ChatWebsiteId','operator','upperFirst','AccountId','event','value','agent','membername','lastevent','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','info','stringify','clone','undefined','motionChannel','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','action','contactmanager','motionbar','data1','popup','TemplateId','data2','html'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xb9e0,0x18c));var _0x0b9e=function(_0x1ff7c0,_0x1974f3){_0x1ff7c0=_0x1ff7c0-0x0;var _0x25696a=_0xb9e0[_0x1ff7c0];return _0x25696a;};'use strict';var util=require(_0x0b9e('0x0'));var _=require(_0x0b9e('0x1'));var url=require(_0x0b9e('0x2'));var Mustache=require(_0x0b9e('0x3'));var Redis=require(_0x0b9e('0x4'));var urlforward=require(_0x0b9e('0x5'));var integration=require(_0x0b9e('0x6'));var cmContact=require(_0x0b9e('0x7'));var script=require(_0x0b9e('0x8'));var config=require(_0x0b9e('0x9'));var logger=require(_0x0b9e('0xa'))(_0x0b9e('0xb'));var ami=require(_0x0b9e('0xc'));config[_0x0b9e('0xd')]=_[_0x0b9e('0xe')](config[_0x0b9e('0xd')],{'host':'localhost','port':0x18eb});var io=require(_0x0b9e('0xf'))(new Redis(config[_0x0b9e('0xd')]));var operators={'equals':function(_0x320a80,_0x25eee5){return _0x320a80==_0x25eee5;},'not_equals':function(_0x2aeb35,_0x1c22f5){return _0x2aeb35!=_0x1c22f5;}};var barAndWebActions=['popup','url',_0x0b9e('0x10')];function Trigger(_0x2ff30a){this[_0x0b9e('0x11')]=_0x2ff30a[_0x0b9e('0x11')];this[_0x0b9e('0x12')]=_0x2ff30a[_0x0b9e('0x12')];this[_0x0b9e('0x13')]=_0x2ff30a[_0x0b9e('0x13')];this['templates']=_0x2ff30a[_0x0b9e('0x14')];this['voiceExtensions']=_0x2ff30a[_0x0b9e('0x15')];this[_0x0b9e('0x16')]=_0x2ff30a[_0x0b9e('0x16')];this[_0x0b9e('0x17')]=_0x2ff30a['freshdeskAccounts'];this[_0x0b9e('0x18')]=_0x2ff30a[_0x0b9e('0x18')];this[_0x0b9e('0x19')]=_0x2ff30a[_0x0b9e('0x19')];this[_0x0b9e('0x1a')]=_0x2ff30a[_0x0b9e('0x1a')];this[_0x0b9e('0x1b')]=_0x2ff30a[_0x0b9e('0x1b')];this[_0x0b9e('0x1c')]=_0x2ff30a[_0x0b9e('0x1c')];this[_0x0b9e('0x1d')]=_0x2ff30a['servicenowAccounts'];this['dynamics365Accounts']=_0x2ff30a[_0x0b9e('0x1e')];this[_0x0b9e('0x1f')]=_0x2ff30a[_0x0b9e('0x1f')];this[_0x0b9e('0x20')]={'zendesk':this[_0x0b9e('0x16')],'salesforce':this[_0x0b9e('0x18')],'freshdesk':this[_0x0b9e('0x17')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x0b9e('0x1a')],'desk':this[_0x0b9e('0x1b')],'vtiger':this[_0x0b9e('0x1c')],'dynamics365':this[_0x0b9e('0x1e')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x0b9e('0x1d')]};ami['on']('custom:agentcalled',this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on']('custom:agentconnect',this[_0x0b9e('0x21')]['bind'](this));ami['on'](_0x0b9e('0x23'),this[_0x0b9e('0x21')]['bind'](this));ami['on'](_0x0b9e('0x24'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x25'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x26'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x27'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x28'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x29'),this['syncCustomEvent'][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x2a'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x2b'),this[_0x0b9e('0x21')]['bind'](this));ami['on'](_0x0b9e('0x2c'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0x0b9e('0x22')](this));ami['on']('custom:dialconnect',this[_0x0b9e('0x2d')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x2e'),this['syncAgentDial']['bind'](this));ami['on'](_0x0b9e('0x2f'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x30'),this['syncCustomEvent'][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x31'),this[_0x0b9e('0x21')]['bind'](this));ami['on'](_0x0b9e('0x32'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x33'),this[_0x0b9e('0x21')][_0x0b9e('0x22')](this));ami['on'](_0x0b9e('0x34'),this['syncCustomEvent'][_0x0b9e('0x22')](this));}Trigger[_0x0b9e('0x35')][_0x0b9e('0x36')]=function(_0xee4539,_0x302851,_0x4042cb){logger[_0x0b9e('0x37')](_0xee4539,_0x302851,JSON[_0x0b9e('0x38')](_0x4042cb));io['to'](_0xee4539)[_0x0b9e('0x36')](_0x302851,_0x4042cb);};Trigger[_0x0b9e('0x35')][_0x0b9e('0x21')]=function(_0x5aaa44){var _0x1b4789=_[_0x0b9e('0x39')](_0x5aaa44);if(typeof _0x1b4789['motionChannel']===_0x0b9e('0x3a')){_0x1b4789[_0x0b9e('0x3b')]='voice';}this[_0x0b9e('0x3c')](_0x1b4789);};Trigger[_0x0b9e('0x35')][_0x0b9e('0x2d')]=function(_0x1020c0){if(this[_0x0b9e('0x12')][_0x1020c0[_0x0b9e('0x3d')]]){this[_0x0b9e('0x21')](_0x1020c0);}};Trigger[_0x0b9e('0x35')][_0x0b9e('0x3c')]=function(_0x44e1a5){var _0x24e542;for(var _0x4816c4 in this[_0x0b9e('0x11')]){if(this[_0x0b9e('0x11')][_0x0b9e('0x3e')](_0x4816c4)){if(this['triggers'][_0x4816c4][_0x0b9e('0x3f')]){_0x24e542=this[_0x0b9e('0x40')](this[_0x0b9e('0x11')][_0x4816c4],_0x44e1a5);if(_0x24e542){_[_0x0b9e('0x41')](_0x44e1a5,_0x44e1a5[_0x0b9e('0x42')]);for(var _0x13a4a4=0x0,_0x55615a,_0xb9c2bf,_0x28b69f;_0x13a4a4<this['triggers'][_0x4816c4][_0x0b9e('0x43')]['length'];_0x13a4a4+=0x1){_0x55615a=this[_0x0b9e('0x11')][_0x4816c4][_0x0b9e('0x43')][_0x13a4a4];if(this['agents'][_0x44e1a5[_0x0b9e('0x3d')]]){switch(_0x55615a[_0x0b9e('0x44')]['toLowerCase']()){case _0x0b9e('0x45'):break;case _0x0b9e('0x46'):case'browser':var _0xbcf288={};switch(barAndWebActions[_0x55615a[_0x0b9e('0x47')]]){case _0x0b9e('0x48'):_0xbcf288[_0x0b9e('0x49')]=_0x55615a[_0x0b9e('0x4a')];_0xbcf288[_0x0b9e('0x4b')]=this['templates'][_0x55615a[_0x0b9e('0x4a')]]?Mustache[_0x0b9e('0x4c')](this[_0x0b9e('0x14')][_0x55615a[_0x0b9e('0x4a')]][_0x0b9e('0x4b')],_0x44e1a5):_0x0b9e('0x4d');break;case _0x0b9e('0x2'):_0xbcf288['uri']=this[_0x0b9e('0x4e')](_0x55615a[_0x0b9e('0x4a')],_0x44e1a5,_[_0x0b9e('0x4f')](_0x55615a[_0x0b9e('0x50')])?!![]:parseInt(_0x55615a[_0x0b9e('0x50')],0xa));if(_['isNil'](_0x55615a['data4'])){_0xbcf288['location']='0';}else{_0xbcf288[_0x0b9e('0x51')]=_0x55615a['data4'];_0xbcf288['windowWidth']=_[_0x0b9e('0x4f')](_0x55615a[_0x0b9e('0x52')])?'800':_0x55615a[_0x0b9e('0x52')];_0xbcf288['windowHeight']=_[_0x0b9e('0x4f')](_0x55615a[_0x0b9e('0x53')])?_0x0b9e('0x54'):_0x55615a[_0x0b9e('0x53')];}break;case'winapp':_0xbcf288[_0x0b9e('0x55')]=_0x55615a[_0x0b9e('0x4a')]?Mustache[_0x0b9e('0x4c')](_0x55615a[_0x0b9e('0x4a')],_0x44e1a5):'';_0xbcf288['winArguments']=_0x55615a['data3']?Mustache[_0x0b9e('0x4c')](_0x55615a[_0x0b9e('0x50')],_0x44e1a5):'';break;}this[_0x0b9e('0x36')](util[_0x0b9e('0x56')]('user:%s',this[_0x0b9e('0x12')][_0x44e1a5['interface']]['name']),util[_0x0b9e('0x56')](_0x0b9e('0x57'),_0x55615a[_0x0b9e('0x44')]['toLowerCase'](),barAndWebActions[_0x55615a['data1']]),_['merge'](_0xbcf288,_0x44e1a5));break;case _0x0b9e('0x58'):this['emit'](util[_0x0b9e('0x56')](_0x0b9e('0x59'),this[_0x0b9e('0x12')][_0x44e1a5['interface']]['name']),util[_0x0b9e('0x56')](_0x0b9e('0x5a'),_0x55615a[_0x0b9e('0x44')][_0x0b9e('0x5b')]()),_['merge']({'ProjectId':parseInt(_0x55615a[_0x0b9e('0x47')],0xa)},_0x44e1a5));break;default:this['emit'](util[_0x0b9e('0x56')](_0x0b9e('0x59'),this[_0x0b9e('0x12')][_0x44e1a5['interface']]['name']),util['format'](_0x0b9e('0x5a'),_0x55615a[_0x0b9e('0x44')][_0x0b9e('0x5b')]()),_[_0x0b9e('0x41')]({},_0x55615a,_0x44e1a5));}}switch(_0x55615a[_0x0b9e('0x44')][_0x0b9e('0x5b')]()){case _0x0b9e('0x45'):cmContact[_0x0b9e('0x5c')](this[_0x0b9e('0x12')][_0x44e1a5[_0x0b9e('0x3d')]],this[_0x0b9e('0x11')][_0x4816c4],_0x55615a,_0x44e1a5);break;case _0x0b9e('0x5d'):integration[_0x0b9e('0x5c')](_0x55615a,_0x44e1a5,this[_0x0b9e('0x20')],this[_0x0b9e('0x12')][_0x44e1a5[_0x0b9e('0x3d')]],this[_0x0b9e('0x13')][_0x44e1a5[_0x0b9e('0x5e')]],this[_0x0b9e('0x15')][_0x44e1a5[_0x0b9e('0x5f')]]);break;case'urlforward':urlforward[_0x0b9e('0x5c')](_0x55615a,_0x44e1a5);break;case'script':script[_0x0b9e('0x5c')](_0x55615a,_0x44e1a5);break;}}}}}}};Trigger[_0x0b9e('0x35')][_0x0b9e('0x4e')]=function(_0x31b4b4,_0x34d725,_0x451c8b){var _0x1551ab=url['parse'](Mustache['render'](_0x31b4b4,_0x34d725),!![]);if(_0x451c8b){_[_0x0b9e('0x41')](_0x1551ab['query'],_0x34d725);}delete _0x1551ab[_0x0b9e('0x60')];var _0x2a8bc6=url['format'](_0x1551ab);_0x2a8bc6=_0x2a8bc6[_0x0b9e('0x61')](/\/\?/g,'?');return _0x2a8bc6;};Trigger['prototype'][_0x0b9e('0x40')]=function(_0x2ae018,_0x1dbac4){var _0x2bcb44=!![];var _0x1b70f8=!![];var _0x10f91e=![];if(_0x2ae018[_0x0b9e('0x62')]===_0x1dbac4[_0x0b9e('0x3b')]){_0x10f91e=!![];}if(_0x2ae018[_0x0b9e('0x63')][_0x0b9e('0x64')]){_0x2bcb44=_[_0x0b9e('0x65')](_0x2ae018[_0x0b9e('0x63')],this[_0x0b9e('0x66')](_0x1dbac4,_0x2ae018[_0x0b9e('0x62')]));}if(_0x2ae018[_0x0b9e('0x67')][_0x0b9e('0x64')]){_0x1b70f8=_[_0x0b9e('0x68')](_0x2ae018[_0x0b9e('0x67')],this[_0x0b9e('0x66')](_0x1dbac4,_0x2ae018[_0x0b9e('0x62')]));}return _0x10f91e&&_0x2bcb44&&_0x1b70f8;};Trigger[_0x0b9e('0x35')][_0x0b9e('0x66')]=function(_0x48a7d4,_0x597a65){return function(_0x4104e1){switch(_0x4104e1[_0x0b9e('0x69')]){case _0x0b9e('0x6a'):if(_0x48a7d4[_0x0b9e('0x62')]===_0x597a65){if(_0x597a65===_0x0b9e('0x6b')){return _0x48a7d4[_0x0b9e('0x6c')]?operators[_0x4104e1[_0x0b9e('0x6d')]](Number(_0x4104e1['value']),_0x48a7d4[_0x0b9e('0x6c')]):![];}else{return _0x48a7d4[_[_0x0b9e('0x6e')](_0x597a65)+_0x0b9e('0x6f')]?operators[_0x4104e1[_0x0b9e('0x6d')]](Number(_0x4104e1['value']),_0x48a7d4[_[_0x0b9e('0x6e')](_0x597a65)+_0x0b9e('0x6f')]):![];}}break;case'interaction':case'message':if(_0x48a7d4[_0x0b9e('0x62')]===_0x597a65){return _0x48a7d4[_0x0b9e('0x70')]?operators[_0x4104e1['operator']](_0x4104e1[_0x0b9e('0x71')],_0x48a7d4[_0x0b9e('0x70')]):![];}break;case _0x0b9e('0x5e'):return _0x48a7d4[_0x0b9e('0x5e')]?operators[_0x4104e1[_0x0b9e('0x6d')]](_0x4104e1[_0x0b9e('0x71')],_0x48a7d4[_0x0b9e('0x5e')]):![];case _0x0b9e('0x72'):return _0x48a7d4[_0x0b9e('0x73')]?operators[_0x4104e1[_0x0b9e('0x6d')]](_0x4104e1['value'],_0x48a7d4['membername']):![];case'lastevent':return _0x48a7d4[_0x0b9e('0x74')]?operators[_0x4104e1[_0x0b9e('0x6d')]](_0x4104e1[_0x0b9e('0x71')],_0x48a7d4[_0x0b9e('0x74')]):![];case _0x0b9e('0x5f'):return _0x48a7d4[_0x0b9e('0x5f')]?operators[_0x4104e1['operator']](_0x4104e1[_0x0b9e('0x71')],_0x48a7d4['routeId']):![];}return![];};};module[_0x0b9e('0x75')]=Trigger;
\ No newline at end of file
index fefbdec..800a8a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe14b,0x93));var _0xbe14=function(_0x517eff,_0x20ca38){_0x517eff=_0x517eff-0x0;var _0x1a3ce6=_0xe14b[_0x517eff];return _0x1a3ce6;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
+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(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x5fc3,0xa8));var _0x35fc=function(_0x16aaef,_0x410651){_0x16aaef=_0x16aaef-0x0;var _0x1c82ef=_0x5fc3[_0x16aaef];return _0x1c82ef;};'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
index 729f08d..c877c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc0e=['isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','userEmail','toLowerCase','outbound','calleridnum','contacts','/systemusers(','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','destcalleridnum','replace','%2b','telephone1','contactid','toUpperCase',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','string','picklist','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch','error','message','then','GET','Bearer\x20','value'];(function(_0x1dd5e8,_0x2a836c){var _0x56fa24=function(_0x256d65){while(--_0x256d65){_0x1dd5e8['push'](_0x1dd5e8['shift']());}};_0x56fa24(++_0x2a836c);}(_0xcc0e,0x116));var _0xecc0=function(_0x4645b7,_0xbfe48b){_0x4645b7=_0x4645b7-0x0;var _0x2bc37a=_0xcc0e[_0x4645b7];return _0x2bc37a;};'use strict';var _=require(_0xecc0('0x0'));var BPromise=require('bluebird');var rp=require(_0xecc0('0x1'));var util=require(_0xecc0('0x2'));var intUtil=require('./util');var md5=require('md5');var Redis=require(_0xecc0('0x3'));var logger=require(_0xecc0('0x4'))(_0xecc0('0x5'));var config=require(_0xecc0('0x6'));config[_0xecc0('0x7')]=_[_0xecc0('0x8')](config[_0xecc0('0x7')],{'host':_0xecc0('0x9'),'port':0x18eb});var io=require(_0xecc0('0xa'))(new Redis(config[_0xecc0('0x7')]));function getAuthToken(_0x1ab894,_0x1f3b60,_0x46bca2){var _0x35dd37={'method':_0xecc0('0xb'),'uri':_0x1f3b60,'form':{'client_id':_0x1ab894[_0xecc0('0xc')],'resource':_0x1ab894[_0xecc0('0xd')],'username':_0x1ab894[_0xecc0('0xe')],'password':_0x1ab894[_0xecc0('0xf')],'grant_type':'password','client_secret':_0x1ab894[_0xecc0('0x10')]},'json':!![]};return rp(_0x35dd37)['then'](function(_0x49d48a){return _0x49d48a[_0xecc0('0x11')];})[_0xecc0('0x12')](function(_0x1a7cb9){logger[_0xecc0('0x13')]('['+[_0x46bca2['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x1a7cb9[_0xecc0('0x14')];});}function getUser(_0x29f532,_0x26eb09,_0x507ac9,_0x4bb9b6,_0x4afee4,_0x2586df){return new BPromise(function(_0x2025bc,_0x30aea8){return getAuthToken(_0x26eb09,_0x4bb9b6,_0x2586df)[_0xecc0('0x15')](function(_0x951891){var _0x34833e={'method':_0xecc0('0x16'),'uri':_0x4afee4+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xecc0('0x17')+_0x951891,'OData-Version':'4.0'},'json':!![]};return rp(_0x34833e);})[_0xecc0('0x15')](function(_0x193576){var _0x299825=_0x193576[_0xecc0('0x18')];var _0x4e0d02=![];var _0x46ed63=null;if(!_[_0xecc0('0x19')](_0x507ac9)){if(intUtil[_0xecc0('0x1a')](_0x507ac9[_0xecc0('0x1b')])){_0x29f532['userEmail']=_0x507ac9[_0xecc0('0x1b')];for(_0x46ed63=0x0;_0x46ed63<_0x299825[_0xecc0('0x1c')];_0x46ed63++){if(_0x299825[_0x46ed63][_0xecc0('0x1d')]===_0x507ac9['email']&&!_0x299825[_0x46ed63][_0xecc0('0x1e')]){_0x4e0d02=!![];logger[_0xecc0('0x1f')]('['+[_0x2586df['toUpperCase']()]+_0xecc0('0x20')+_0x299825[_0x46ed63][_0xecc0('0x21')]+'!');_0x29f532[_0xecc0('0x22')]=_0x299825[_0x46ed63][_0xecc0('0x21')];}}}}if(!_0x4e0d02){logger[_0xecc0('0x1f')]('['+[_0x2586df['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x29f532[_0xecc0('0x23')]=_0x26eb09['username'];for(_0x46ed63=0x0;_0x46ed63<_0x299825[_0xecc0('0x1c')];_0x46ed63++){if(_0x299825[_0x46ed63][_0xecc0('0x1d')]===_0x26eb09[_0xecc0('0xe')]){_0x29f532[_0xecc0('0x22')]=_0x299825[_0x46ed63][_0xecc0('0x21')];}}}_0x2025bc(_0x29f532);})[_0xecc0('0x12')](function(_0x382555){_0x30aea8(_0x382555[_0xecc0('0x14')]);});});}function createEndUser(_0x4508b4,_0x2b19fc,_0x52d381,_0x51e1e4,_0xcfa049,_0x5b4e1e){return new BPromise(function(_0x1c66d4,_0x3c583d){return getAuthToken(_0x2b19fc,_0x52d381,_0x5b4e1e)[_0xecc0('0x15')](function(_0x28abdc){var _0x535362=_0x5b4e1e[_0xecc0('0x24')]()===_0xecc0('0x25')?_0xcfa049['destcalleridnum']:_0xcfa049[_0xecc0('0x26')];var _0x246bd1={'method':'POST','uri':_0x51e1e4+_0xecc0('0x27'),'body':{'telephone1':_0x535362,'fullname':_0x535362,'firstname':_0x535362,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xecc0('0x28')+_0x4508b4['userId']+')'},'headers':{'Authorization':_0xecc0('0x17')+_0x28abdc,'OData-Version':_0xecc0('0x29')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x246bd1);})[_0xecc0('0x15')](function(_0x3d143b){var _0x33cca2=_0x3d143b[_0xecc0('0x2a')][_0xecc0('0x2b')];var _0x4b039f=_0x33cca2[_0xecc0('0x2c')](_0x33cca2[_0xecc0('0x2d')]('(')+0x1,_0x33cca2['lastIndexOf'](')'));_0x4508b4[_0xecc0('0x2e')]=_0x4b039f;_0x1c66d4(_0x4508b4);})[_0xecc0('0x12')](function(_0x1d8cd0){_0x3c583d(_0x1d8cd0[_0xecc0('0x14')]);});});}function getEndUser(_0x3473c4,_0x433444,_0x1d9190,_0x1c0a95,_0x3c6531,_0x59d068){return new BPromise(function(_0x8502ee,_0x38e426){var _0x2c5623=_0x59d068[_0xecc0('0x24')]()===_0xecc0('0x25')?_0x3c6531[_0xecc0('0x2f')]:_0x3c6531[_0xecc0('0x26')];return getAuthToken(_0x433444,_0x1d9190,_0x59d068)['then'](function(_0x2ba808){var _0x171dac={'method':_0xecc0('0x16'),'uri':_0x1c0a95+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x2c5623[_0xecc0('0x30')]('+',_0xecc0('0x31'))+'\x27','headers':{'Authorization':_0xecc0('0x17')+_0x2ba808,'If-None-Match':null,'OData-Version':_0xecc0('0x29')},'json':!![]};return rp(_0x171dac);})['then'](function(_0x540c28){var _0x1b58a7=null;if(_0x540c28){var _0xc17c67=_0x540c28[_0xecc0('0x18')];var _0x2c7d8c=![];for(_0x1b58a7=0x0;_0x1b58a7<_0xc17c67[_0xecc0('0x1c')];_0x1b58a7++){if(_0xc17c67[_0x1b58a7][_0xecc0('0x32')]===_0x2c5623){_0x2c7d8c=!![];_0x3473c4[_0xecc0('0x2e')]=_0xc17c67[_0x1b58a7][_0xecc0('0x33')];}}if(_0x2c7d8c){_0x8502ee(_0x3473c4);}else{return createEndUser(_0x3473c4,_0x433444,_0x1d9190,_0x1c0a95,_0x3c6531,_0x59d068)['then'](function(_0x2e753d){logger[_0xecc0('0x1f')]('['+[_0x59d068[_0xecc0('0x34')]()]+_0xecc0('0x35'),_0x2e753d[_0xecc0('0x2e')]);_0x8502ee(_0x2e753d);});}}else{return createEndUser(_0x3473c4,_0x433444,_0x1d9190,_0x1c0a95,_0x3c6531,_0x59d068)['then'](function(_0x359930){logger[_0xecc0('0x1f')]('['+[_0x59d068['toUpperCase']()]+_0xecc0('0x36'),_0x359930[_0xecc0('0x2e')]);_0x8502ee(_0x359930);});}});});}function getCustomFields(_0x58a912,_0x16345b,_0x443abc){var _0x4d84b1={};if(_0x58a912[_0xecc0('0x1c')]>0x0){_[_0xecc0('0x37')](_0x58a912,function(_0x4da3c1){if(_['includes']([_0xecc0('0x38'),_0xecc0('0x39')],_0x4da3c1['type'])&&_0x4da3c1[_0xecc0('0x3a')]&&!_0x4da3c1[_0xecc0('0x3b')]){var _0x43ebcc=_0x4da3c1[_0xecc0('0x3c')]['toLowerCase']();var _0x1ab352=_0x43ebcc[_0xecc0('0x2c')](0x0,_0x43ebcc[_0xecc0('0x3d')]('_'));var _0x240bad=_0x43ebcc[_0xecc0('0x2c')](_0x43ebcc[_0xecc0('0x3d')]('_')+0x1);if(_0x1ab352===_0x443abc){_0x4d84b1[_0x240bad]=_0x4da3c1[_0xecc0('0x3e')];}}});}return _0x4d84b1;}function getTicket(_0x57c612,_0x1ab958,_0x26f88d,_0x4d7f8c,_0x43ab44,_0x13e1f8,_0x5c433d){return new BPromise(function(_0x296a28,_0x552b9c){var _0x56e7e9;return getAuthToken(_0x1ab958,_0x26f88d,_0x5c433d)[_0xecc0('0x15')](function(_0xa342fd){if(_0x13e1f8[_0xecc0('0x3f')]===_0xecc0('0x40')){_0x56e7e9={'method':_0xecc0('0xb'),'uri':_0x4d7f8c+_0xecc0('0x41'),'body':Object[_0xecc0('0x42')]({},{'title':intUtil[_0xecc0('0x43')](_0x13e1f8[_0xecc0('0x44')],_0x43ab44,'\x20'),'description':intUtil[_0xecc0('0x43')](_0x13e1f8['Descriptions'],_0x43ab44,'\x0a'),'customerid_contact@odata.bind':_0xecc0('0x45')+_0x57c612[_0xecc0('0x2e')]+')','ownerid@odata.bind':_0xecc0('0x28')+_0x57c612[_0xecc0('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x13e1f8[_0xecc0('0x46')],_0x43ab44,_0x13e1f8[_0xecc0('0x3f')])),'headers':{'Authorization':_0xecc0('0x17')+_0xa342fd,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x13e1f8[_0xecc0('0x3f')]===_0xecc0('0x47')){_0x56e7e9={'method':'POST','uri':_0x4d7f8c+_0xecc0('0x48'),'body':Object[_0xecc0('0x42')]({},{'subject':intUtil[_0xecc0('0x43')](_0x13e1f8[_0xecc0('0x44')],_0x43ab44,'\x20'),'phonenumber':String(_0x43ab44['calleridnum']),'description':intUtil[_0xecc0('0x43')](_0x13e1f8['Descriptions'],_0x43ab44,'\x0a'),'regardingobjectid_contact@odata.bind':_0xecc0('0x45')+_0x57c612[_0xecc0('0x2e')]+')','ownerid@odata.bind':'/systemusers('+_0x57c612[_0xecc0('0x22')]+')','directioncode':_0x57c612[_0xecc0('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x57c612[_0xecc0('0x22')]+')','participationtypemask':_0x57c612[_0xecc0('0x49')]===_0xecc0('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0xecc0('0x45')+_0x57c612[_0xecc0('0x2e')]+')','participationtypemask':_0x57c612[_0xecc0('0x49')]===_0xecc0('0x4a')?0x1:0x2}]},getCustomFields(_0x13e1f8['Fields'],_0x43ab44,_0x13e1f8[_0xecc0('0x3f')])),'headers':{'Authorization':_0xecc0('0x17')+_0xa342fd,'OData-Version':_0xecc0('0x29')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x56e7e9);})[_0xecc0('0x15')](function(_0xb167f3){var _0x5850a9=_0xb167f3['headers'][_0xecc0('0x2b')];var _0x11222d=_0x5850a9[_0xecc0('0x2c')](_0x5850a9[_0xecc0('0x2d')]('(')+0x1,_0x5850a9[_0xecc0('0x2d')](')'));_0x57c612[_0xecc0('0x4b')]=_0x11222d;_0x296a28(_0x57c612);})[_0xecc0('0x12')](function(_0x35f07e){_0x552b9c(_0x35f07e[_0xecc0('0x14')]);});});}function emit(_0x3cd3ff,_0x1b65e6,_0x495a54,_0x5c05a4){var _0xe9ce5d={'uri':util[_0xecc0('0x4c')](_0xecc0('0x4d'),_0x3cd3ff,_0x495a54,_0x5c05a4)};io['to'](util[_0xecc0('0x4c')](_0xecc0('0x4e'),_0x1b65e6))[_0xecc0('0x4f')](_0xecc0('0x50'),_0xe9ce5d);}exports['cs']=function(_0x45770a,_0x42470f,_0x43bdd5,_0x42a40f,_0x2e50c6,_0x36c2a3,_0x312342,_0x10ace2){var _0x434df2={};_0x36c2a3['remoteUri']=intUtil[_0xecc0('0x51')](_0x36c2a3['remoteUri']);_0x36c2a3[_0xecc0('0x52')]=intUtil['stripTrailingSlash'](_0x36c2a3[_0xecc0('0x52')]);_0x434df2[_0xecc0('0x49')]=_0x10ace2==='queue'||_0x10ace2===_0xecc0('0x53')?_0xecc0('0x4a'):'outbound';var _0x6676a=util[_0xecc0('0x4c')](_0xecc0('0x54'),_0x36c2a3[_0xecc0('0xd')]);var _0x44bc1a=util[_0xecc0('0x4c')](_0xecc0('0x55'),_0x36c2a3[_0xecc0('0x56')]);var _0x5e859d=util[_0xecc0('0x4c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x36c2a3['serverUrl'],_0x42470f['uniqueid'],md5(_0x42470f[_0xecc0('0x57')]));if(_0x2e50c6&&_0x2e50c6[_0xecc0('0x58')]){logger[_0xecc0('0x1f')](_0xecc0('0x59'),_0xecc0('0x5a'));_0x42470f['recordingURL']=_0x5e859d;}else if(_0x312342&&_0x312342[_0xecc0('0x5b')]&&_0x312342[_0xecc0('0x5b')]!==_0xecc0('0x5c')){logger[_0xecc0('0x1f')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x42470f[_0xecc0('0x5d')]=_0x5e859d;}else{_0x42470f[_0xecc0('0x5d')]='';}return getUser(_0x434df2,_0x36c2a3,_0x42a40f,_0x44bc1a,_0x6676a,_0x10ace2)[_0xecc0('0x15')](function(_0x2752b1){logger['info']('['+_0x10ace2[_0xecc0('0x34')]()+_0xecc0('0x5e'),_0x2752b1[_0xecc0('0x22')]);logger[_0xecc0('0x1f')]('['+_0x10ace2['toUpperCase']()+_0xecc0('0x5f'),_0x2752b1[_0xecc0('0x23')]);return getEndUser(_0x2752b1,_0x36c2a3,_0x44bc1a,_0x6676a,_0x42470f,_0x10ace2);})[_0xecc0('0x15')](function(_0x3b71f9){logger[_0xecc0('0x1f')]('['+_0x10ace2['toUpperCase']()+_0xecc0('0x60'),_0x3b71f9['enduserId']);logger[_0xecc0('0x1f')]('['+_0x10ace2[_0xecc0('0x34')]()+_0xecc0('0x61'),_0x42470f[_0xecc0('0x26')]);return getTicket(_0x3b71f9,_0x36c2a3,_0x44bc1a,_0x6676a,_0x42470f,_0x43bdd5,_0x10ace2);})[_0xecc0('0x15')](function(_0x2bdb07){logger[_0xecc0('0x1f')](util['format']('['+_0x10ace2[_0xecc0('0x34')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x43bdd5['ticketType'],_0x2bdb07['ticketId']));logger['info'](util[_0xecc0('0x4c')]('['+_0x10ace2[_0xecc0('0x34')]()+']\x20Call\x20direction:\x20%s',_0x10ace2));if(_0x10ace2!==_0xecc0('0x53')){logger['info']('['+_0x10ace2[_0xecc0('0x34')]()+']',_0xecc0('0x62'));emit(_0x36c2a3[_0xecc0('0xd')],_0x42a40f[_0xecc0('0x63')],_0x43bdd5[_0xecc0('0x3f')],_0x2bdb07['ticketId']);}})[_0xecc0('0x12')](function(_0x307ad8){logger[_0xecc0('0x13')]('['+_0x10ace2[_0xecc0('0x34')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0xecc0('0x64')](_0x307ad8,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7a55=['userId','message','toLowerCase','outbound','calleridnum','contacts','Bearer\x20','4.0','odata-entityid','lastIndexOf','enduserId','destcalleridnum','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','type','nameField','idField','substring','indexOf','content','assign','Subjects','getString','Descriptions','/contacts(','/systemusers(','Fields','ticketType','phonecalls','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','socket.io-emitter','POST','remoteUri','password','clientSecret','then','catch','error','toUpperCase',']\x20Wrong\x20credentials!','systemusers?$select=internalemailaddress,isdisabled,systemuserid','value','validateEmail','email','internalemailaddress','info','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','username','length'];(function(_0x1e9c0c,_0x61b24f){var _0x4bceff=function(_0x40a491){while(--_0x40a491){_0x1e9c0c['push'](_0x1e9c0c['shift']());}};_0x4bceff(++_0x61b24f);}(_0x7a55,0x10a));var _0x57a5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a55[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x57a5('0x0'));var BPromise=require(_0x57a5('0x1'));var rp=require(_0x57a5('0x2'));var util=require(_0x57a5('0x3'));var intUtil=require(_0x57a5('0x4'));var md5=require(_0x57a5('0x5'));var Redis=require('ioredis');var logger=require(_0x57a5('0x6'))(_0x57a5('0x7'));var config=require(_0x57a5('0x8'));config[_0x57a5('0x9')]=_['defaults'](config[_0x57a5('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x57a5('0xa'))(new Redis(config['redis']));function getAuthToken(_0x4635ea,_0x52361a,_0x1e9c26){var _0x31df00={'method':_0x57a5('0xb'),'uri':_0x52361a,'form':{'client_id':_0x4635ea['clientId'],'resource':_0x4635ea[_0x57a5('0xc')],'username':_0x4635ea['username'],'password':_0x4635ea[_0x57a5('0xd')],'grant_type':_0x57a5('0xd'),'client_secret':_0x4635ea[_0x57a5('0xe')]},'json':!![]};return rp(_0x31df00)[_0x57a5('0xf')](function(_0x587e7b){return _0x587e7b['access_token'];})[_0x57a5('0x10')](function(_0x43f6a0){logger[_0x57a5('0x11')]('['+[_0x1e9c26[_0x57a5('0x12')]()]+_0x57a5('0x13'));return _0x43f6a0['message'];});}function getUser(_0x230b96,_0x24abb6,_0x358431,_0xb8bfa5,_0x1458fe,_0x262e9a){return new BPromise(function(_0x304770,_0x2f94ea){return getAuthToken(_0x24abb6,_0xb8bfa5,_0x262e9a)[_0x57a5('0xf')](function(_0x247ed){var _0x4dd286={'method':'GET','uri':_0x1458fe+_0x57a5('0x14'),'headers':{'Authorization':'Bearer\x20'+_0x247ed,'OData-Version':'4.0'},'json':!![]};return rp(_0x4dd286);})[_0x57a5('0xf')](function(_0x1e74d1){var _0x5d7fad=_0x1e74d1[_0x57a5('0x15')];var _0xb74aa5=![];var _0x200b14=null;if(!_['isNil'](_0x358431)){if(intUtil[_0x57a5('0x16')](_0x358431[_0x57a5('0x17')])){_0x230b96['userEmail']=_0x358431[_0x57a5('0x17')];for(_0x200b14=0x0;_0x200b14<_0x5d7fad['length'];_0x200b14++){if(_0x5d7fad[_0x200b14][_0x57a5('0x18')]===_0x358431[_0x57a5('0x17')]&&!_0x5d7fad[_0x200b14]['isdisabled']){_0xb74aa5=!![];logger[_0x57a5('0x19')]('['+[_0x262e9a[_0x57a5('0x12')]()]+']\x20Agent\x20found\x20'+_0x5d7fad[_0x200b14][_0x57a5('0x1a')]+'!');_0x230b96['userId']=_0x5d7fad[_0x200b14][_0x57a5('0x1a')];}}}}if(!_0xb74aa5){logger[_0x57a5('0x19')]('['+[_0x262e9a[_0x57a5('0x12')]()]+_0x57a5('0x1b'));_0x230b96[_0x57a5('0x1c')]=_0x24abb6[_0x57a5('0x1d')];for(_0x200b14=0x0;_0x200b14<_0x5d7fad[_0x57a5('0x1e')];_0x200b14++){if(_0x5d7fad[_0x200b14][_0x57a5('0x18')]===_0x24abb6['username']){_0x230b96[_0x57a5('0x1f')]=_0x5d7fad[_0x200b14][_0x57a5('0x1a')];}}}_0x304770(_0x230b96);})[_0x57a5('0x10')](function(_0x30b9a5){_0x2f94ea(_0x30b9a5[_0x57a5('0x20')]);});});}function createEndUser(_0xd94a83,_0x52c986,_0x3e88e7,_0x2c570c,_0x39c2f3,_0x47f366){return new BPromise(function(_0x32acea,_0x1f179b){return getAuthToken(_0x52c986,_0x3e88e7,_0x47f366)['then'](function(_0x228d75){var _0x6e993d=_0x47f366[_0x57a5('0x21')]()===_0x57a5('0x22')?_0x39c2f3['destcalleridnum']:_0x39c2f3[_0x57a5('0x23')];var _0x1f7798={'method':_0x57a5('0xb'),'uri':_0x2c570c+_0x57a5('0x24'),'body':{'telephone1':_0x6e993d,'fullname':_0x6e993d,'firstname':_0x6e993d,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0xd94a83[_0x57a5('0x1f')]+')'},'headers':{'Authorization':_0x57a5('0x25')+_0x228d75,'OData-Version':_0x57a5('0x26')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x1f7798);})[_0x57a5('0xf')](function(_0x2417ee){var _0x229c3f=_0x2417ee['headers'][_0x57a5('0x27')];var _0x3fcbf4=_0x229c3f['substring'](_0x229c3f[_0x57a5('0x28')]('(')+0x1,_0x229c3f['lastIndexOf'](')'));_0xd94a83[_0x57a5('0x29')]=_0x3fcbf4;_0x32acea(_0xd94a83);})[_0x57a5('0x10')](function(_0xd2c3c2){_0x1f179b(_0xd2c3c2['message']);});});}function getEndUser(_0x54dad8,_0x3adc23,_0x49d43b,_0x40faaa,_0x2655e6,_0x263d3d){return new BPromise(function(_0x32bdb0,_0x929eb2){var _0x198e2e=_0x263d3d['toLowerCase']()===_0x57a5('0x22')?_0x2655e6[_0x57a5('0x2a')]:_0x2655e6[_0x57a5('0x23')];return getAuthToken(_0x3adc23,_0x49d43b,_0x263d3d)[_0x57a5('0xf')](function(_0x3d3221){var _0x3c67b1={'method':_0x57a5('0x2b'),'uri':_0x40faaa+_0x57a5('0x2c')+_0x198e2e['replace']('+','%2b')+'\x27','headers':{'Authorization':_0x57a5('0x25')+_0x3d3221,'If-None-Match':null,'OData-Version':_0x57a5('0x26')},'json':!![]};return rp(_0x3c67b1);})[_0x57a5('0xf')](function(_0xfaf7d2){var _0x359000=null;if(_0xfaf7d2){var _0x1356ba=_0xfaf7d2[_0x57a5('0x15')];var _0x52daae=![];for(_0x359000=0x0;_0x359000<_0x1356ba[_0x57a5('0x1e')];_0x359000++){if(_0x1356ba[_0x359000][_0x57a5('0x2d')]===_0x198e2e){_0x52daae=!![];_0x54dad8[_0x57a5('0x29')]=_0x1356ba[_0x359000][_0x57a5('0x2e')];}}if(_0x52daae){_0x32bdb0(_0x54dad8);}else{return createEndUser(_0x54dad8,_0x3adc23,_0x49d43b,_0x40faaa,_0x2655e6,_0x263d3d)[_0x57a5('0xf')](function(_0x393db9){logger[_0x57a5('0x19')]('['+[_0x263d3d['toUpperCase']()]+_0x57a5('0x2f'),_0x393db9['enduserId']);_0x32bdb0(_0x393db9);});}}else{return createEndUser(_0x54dad8,_0x3adc23,_0x49d43b,_0x40faaa,_0x2655e6,_0x263d3d)['then'](function(_0x1d6dc6){logger[_0x57a5('0x19')]('['+[_0x263d3d[_0x57a5('0x12')]()]+_0x57a5('0x30'),_0x1d6dc6[_0x57a5('0x29')]);_0x32bdb0(_0x1d6dc6);});}});});}function getCustomFields(_0x429ee9,_0xf6daae,_0x22c003){var _0x2f20ae={};if(_0x429ee9['length']>0x0){_[_0x57a5('0x31')](_0x429ee9,function(_0x257b29){if(_[_0x57a5('0x32')]([_0x57a5('0x33'),_0x57a5('0x34')],_0x257b29[_0x57a5('0x35')])&&_0x257b29[_0x57a5('0x36')]&&!_0x257b29['customField']){var _0x225b6c=_0x257b29[_0x57a5('0x37')]['toLowerCase']();var _0x50fc5e=_0x225b6c[_0x57a5('0x38')](0x0,_0x225b6c[_0x57a5('0x39')]('_'));var _0x26ff47=_0x225b6c[_0x57a5('0x38')](_0x225b6c[_0x57a5('0x39')]('_')+0x1);if(_0x50fc5e===_0x22c003){_0x2f20ae[_0x26ff47]=_0x257b29[_0x57a5('0x3a')];}}});}return _0x2f20ae;}function getTicket(_0x598cdd,_0x5677d9,_0x49eb22,_0x217f2d,_0x4d36df,_0x2beb81,_0xb6d55a){return new BPromise(function(_0xee5e19,_0x149897){var _0x3df257;return getAuthToken(_0x5677d9,_0x49eb22,_0xb6d55a)[_0x57a5('0xf')](function(_0x296eff){if(_0x2beb81['ticketType']==='incident'){_0x3df257={'method':_0x57a5('0xb'),'uri':_0x217f2d+'incidents','body':Object[_0x57a5('0x3b')]({},{'title':intUtil['getString'](_0x2beb81[_0x57a5('0x3c')],_0x4d36df,'\x20'),'description':intUtil[_0x57a5('0x3d')](_0x2beb81[_0x57a5('0x3e')],_0x4d36df,'\x0a'),'customerid_contact@odata.bind':_0x57a5('0x3f')+_0x598cdd[_0x57a5('0x29')]+')','ownerid@odata.bind':_0x57a5('0x40')+_0x598cdd[_0x57a5('0x1f')]+')','caseorigincode':'1'},getCustomFields(_0x2beb81[_0x57a5('0x41')],_0x4d36df,_0x2beb81[_0x57a5('0x42')])),'headers':{'Authorization':'Bearer\x20'+_0x296eff,'OData-Version':_0x57a5('0x26')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2beb81[_0x57a5('0x42')]==='phonecall'){_0x3df257={'method':_0x57a5('0xb'),'uri':_0x217f2d+_0x57a5('0x43'),'body':Object[_0x57a5('0x3b')]({},{'subject':intUtil['getString'](_0x2beb81['Subjects'],_0x4d36df,'\x20'),'phonenumber':String(_0x4d36df[_0x57a5('0x23')]),'description':intUtil[_0x57a5('0x3d')](_0x2beb81[_0x57a5('0x3e')],_0x4d36df,'\x0a'),'regardingobjectid_contact@odata.bind':_0x57a5('0x3f')+_0x598cdd[_0x57a5('0x29')]+')','ownerid@odata.bind':'/systemusers('+_0x598cdd[_0x57a5('0x1f')]+')','directioncode':_0x598cdd[_0x57a5('0x44')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x57a5('0x40')+_0x598cdd['userId']+')','participationtypemask':_0x598cdd[_0x57a5('0x44')]===_0x57a5('0x45')?0x2:0x1},{'partyid_contact@odata.bind':_0x57a5('0x3f')+_0x598cdd[_0x57a5('0x29')]+')','participationtypemask':_0x598cdd[_0x57a5('0x44')]===_0x57a5('0x45')?0x1:0x2}]},getCustomFields(_0x2beb81[_0x57a5('0x41')],_0x4d36df,_0x2beb81[_0x57a5('0x42')])),'headers':{'Authorization':_0x57a5('0x25')+_0x296eff,'OData-Version':_0x57a5('0x26')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3df257);})[_0x57a5('0xf')](function(_0x31a8ec){var _0x39e286=_0x31a8ec['headers'][_0x57a5('0x27')];var _0x15e854=_0x39e286[_0x57a5('0x38')](_0x39e286['lastIndexOf']('(')+0x1,_0x39e286[_0x57a5('0x28')](')'));_0x598cdd[_0x57a5('0x46')]=_0x15e854;_0xee5e19(_0x598cdd);})['catch'](function(_0x96f6d5){_0x149897(_0x96f6d5[_0x57a5('0x20')]);});});}function emit(_0x49a676,_0x38fa5e,_0x1f4cd2,_0x5831db){var _0xbb878c={'uri':util[_0x57a5('0x47')](_0x57a5('0x48'),_0x49a676,_0x1f4cd2,_0x5831db)};io['to'](util[_0x57a5('0x47')](_0x57a5('0x49'),_0x38fa5e))[_0x57a5('0x4a')](_0x57a5('0x4b'),_0xbb878c);}exports['cs']=function(_0x3e367f,_0x1b9bbb,_0x393588,_0x2b9ec7,_0x3d8cc0,_0x2c515e,_0x28be9c,_0x5056db){var _0x487ad4={};_0x2c515e[_0x57a5('0xc')]=intUtil[_0x57a5('0x4c')](_0x2c515e['remoteUri']);_0x2c515e['serverUrl']=intUtil[_0x57a5('0x4c')](_0x2c515e[_0x57a5('0x4d')]);_0x487ad4[_0x57a5('0x44')]=_0x5056db===_0x57a5('0x45')||_0x5056db===_0x57a5('0x4e')?_0x57a5('0x45'):_0x57a5('0x22');var _0x1382a8=util[_0x57a5('0x47')](_0x57a5('0x4f'),_0x2c515e[_0x57a5('0xc')]);var _0xcd39f0=util[_0x57a5('0x47')](_0x57a5('0x50'),_0x2c515e['tenantId']);var _0x10e2ee=util[_0x57a5('0x47')](_0x57a5('0x51'),_0x2c515e['serverUrl'],_0x1b9bbb[_0x57a5('0x52')],md5(_0x1b9bbb[_0x57a5('0x52')]));if(_0x3d8cc0&&_0x3d8cc0[_0x57a5('0x53')]){logger[_0x57a5('0x19')](_0x57a5('0x54'),'Recording\x20is\x20enabled!');_0x1b9bbb['recordingURL']=_0x10e2ee;}else if(_0x28be9c&&_0x28be9c[_0x57a5('0x55')]&&_0x28be9c[_0x57a5('0x55')]!==_0x57a5('0x56')){logger[_0x57a5('0x19')](_0x57a5('0x57'),_0x57a5('0x58'));_0x1b9bbb[_0x57a5('0x59')]=_0x10e2ee;}else{_0x1b9bbb[_0x57a5('0x59')]='';}return getUser(_0x487ad4,_0x2c515e,_0x2b9ec7,_0xcd39f0,_0x1382a8,_0x5056db)['then'](function(_0x8f6555){logger[_0x57a5('0x19')]('['+_0x5056db['toUpperCase']()+_0x57a5('0x5a'),_0x8f6555[_0x57a5('0x1f')]);logger['info']('['+_0x5056db[_0x57a5('0x12')]()+_0x57a5('0x5b'),_0x8f6555[_0x57a5('0x1c')]);return getEndUser(_0x8f6555,_0x2c515e,_0xcd39f0,_0x1382a8,_0x1b9bbb,_0x5056db);})['then'](function(_0x368340){logger[_0x57a5('0x19')]('['+_0x5056db[_0x57a5('0x12')]()+_0x57a5('0x5c'),_0x368340[_0x57a5('0x29')]);logger[_0x57a5('0x19')]('['+_0x5056db['toUpperCase']()+_0x57a5('0x5d'),_0x1b9bbb[_0x57a5('0x23')]);return getTicket(_0x368340,_0x2c515e,_0xcd39f0,_0x1382a8,_0x1b9bbb,_0x393588,_0x5056db);})['then'](function(_0x251931){logger['info'](util['format']('['+_0x5056db[_0x57a5('0x12')]()+_0x57a5('0x5e'),_0x393588[_0x57a5('0x42')],_0x251931[_0x57a5('0x46')]));logger[_0x57a5('0x19')](util['format']('['+_0x5056db['toUpperCase']()+_0x57a5('0x5f'),_0x5056db));if(_0x5056db!==_0x57a5('0x4e')){logger[_0x57a5('0x19')]('['+_0x5056db[_0x57a5('0x12')]()+']',_0x57a5('0x60'));emit(_0x2c515e[_0x57a5('0xc')],_0x2b9ec7[_0x57a5('0x61')],_0x393588['ticketType'],_0x251931[_0x57a5('0x46')]);}})[_0x57a5('0x10')](function(_0x81db68){logger[_0x57a5('0x11')]('['+_0x5056db[_0x57a5('0x12')]()+_0x57a5('0x62'),util['inspect'](_0x81db68,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index f8e00cc..6e33335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb3=['stringify','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','error','unmanaged','lastevent','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','md5','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','<br>','Tags','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','POST','then','Ticket\x20created!','%s/api/v2/agents','remoteUri','length','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','toString','base64','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','push','idField','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch'];(function(_0x3ff181,_0x75d40e){var _0x1589c3=function(_0x34231b){while(--_0x34231b){_0x3ff181['push'](_0x3ff181['shift']());}};_0x1589c3(++_0x75d40e);}(_0xbdb3,0x1d2));var _0x3bdb=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xbdb3[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x3bdb('0x0'));var rp=require(_0x3bdb('0x1'));var md5=require(_0x3bdb('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x3bdb('0x3'));var logger=require(_0x3bdb('0x4'))(_0x3bdb('0x5'));config[_0x3bdb('0x6')]=_[_0x3bdb('0x7')](config[_0x3bdb('0x6')],{'host':_0x3bdb('0x8'),'port':0x18eb});var io=require(_0x3bdb('0x9'))(new Redis(config[_0x3bdb('0x6')]));var headers={'Content-Type':_0x3bdb('0xa'),'Accept':_0x3bdb('0xa')};function emit(_0x38eb8a,_0x54891,_0x4494d9){io['to'](_0x38eb8a)['emit'](_0x54891,_0x4494d9);}function getTicket(_0xb0dc6c,_0x5cfd11,_0x5606b8,_0x33a2df,_0x379e74){logger[_0x3bdb('0xb')](_0x3bdb('0xc'));var _0x40fda3=_[_0x3bdb('0xd')]({'responder_id':_0x5cfd11['id'],'requester_id':_0x5606b8['id'],'name':util[_0x3bdb('0xe')](_0x3bdb('0xf'),_0x379e74['calleridname']),'phone':_0x379e74[_0x3bdb('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x33a2df['Subjects'],_0x379e74,'\x20'),'description':intUtil[_0x3bdb('0x11')](_0x33a2df[_0x3bdb('0x12')],_0x379e74,_0x3bdb('0x13')),'tags':getTags(_0x33a2df[_0x3bdb('0x14')],'name')},getCustomFields(_0x33a2df[_0x3bdb('0x15')],_0x379e74));_0x40fda3[_0x3bdb('0x16')]=_[_0x3bdb('0x17')](_[_0x3bdb('0x18')](_0x40fda3[_0x3bdb('0x16')],'id'),'value');return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x19'),_0xb0dc6c['remoteUri']),'method':_0x3bdb('0x1a'),'body':_0x40fda3})[_0x3bdb('0x1b')](function(_0x12e71f){logger[_0x3bdb('0xb')](_0x3bdb('0x1c'));return _0x12e71f;});}function getUser(_0x400f9a,_0x23e178){if(intUtil['validateEmail'](_0x23e178)){return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x1d'),_0x400f9a[_0x3bdb('0x1e')]),'qs':{'email':_0x23e178}})['then'](function(_0x4f25af){if(_0x4f25af[_0x3bdb('0x1f')]){logger[_0x3bdb('0xb')]('Agent\x20found!');return _[_0x3bdb('0x20')](_0x4f25af,function(_0x42a166){return _0x42a166[_0x3bdb('0x21')][_0x3bdb('0x22')]===_0x23e178;});}else{logger[_0x3bdb('0xb')](_0x3bdb('0x23'));return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x24'),_0x400f9a['remoteUri'])})[_0x3bdb('0x1b')](function(_0x57e3ec){logger[_0x3bdb('0xb')]('Admin\x20account\x20selected.');return _0x57e3ec;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x3bdb('0xe')]('%s/api/v2/agents/me',_0x400f9a['remoteUri'])})[_0x3bdb('0x1b')](function(_0x164847){logger[_0x3bdb('0xb')](_0x3bdb('0x25'));return _0x164847;});}}function getEndUser(_0x3d674a,_0x853ed,_0x1a62c7){logger[_0x3bdb('0xb')](_0x3bdb('0x26'),_0x1a62c7);return request({'uri':util[_0x3bdb('0xe')]('%s/api/v2/contacts',_0x3d674a['remoteUri']),'qs':{'phone':_0x1a62c7}})[_0x3bdb('0x1b')](function(_0x5a4239){if(_0x5a4239[_0x3bdb('0x1f')]){logger[_0x3bdb('0xb')]('Enduser\x20found!');return _[_0x3bdb('0x20')](_0x5a4239,{'phone':_0x1a62c7});}else{logger[_0x3bdb('0xb')](_0x3bdb('0x27'));return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x28'),_0x3d674a['remoteUri']),'method':'POST','body':{'name':_0x853ed,'phone':_0x1a62c7}})[_0x3bdb('0x1b')](function(_0x2112d8){logger[_0x3bdb('0xb')](_0x3bdb('0x29'));return _0x2112d8;});}});}function getAuth(_0x175dd9){return util[_0x3bdb('0xe')](_0x3bdb('0x2a'),new Buffer(_0x175dd9['apiKey']+':X')[_0x3bdb('0x2b')](_0x3bdb('0x2c')));}function request(_0x405deb){logger['debug']('[HTTP]',JSON['stringify'](_0x405deb));return rp(_['defaults'](_0x405deb,{'method':_0x3bdb('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x34194a,_0x49f119){var _0x4aadf6=[];if(_0x34194a&&_0x34194a['length']>0x0){_0x4aadf6=_[_0x3bdb('0x2e')](_0x34194a,_0x49f119);}return _0x4aadf6;}function getCustomFields(_0x297318,_0x162ac5){var _0x33417b=[];var _0x145723={'custom_fields':[]};if(_0x297318[_0x3bdb('0x1f')]>0x0){_[_0x3bdb('0x2f')](_0x297318,function(_0x54d038){if(_[_0x3bdb('0x30')](['string',_0x3bdb('0x31')],_0x54d038[_0x3bdb('0x32')])&&_0x54d038[_0x3bdb('0x33')]&&!_0x54d038[_0x3bdb('0x34')]){_0x145723[_0x54d038[_0x3bdb('0x33')][_0x3bdb('0x35')]()]=_0x54d038[_0x3bdb('0x36')]['toString']();}else if(_[_0x3bdb('0x30')]([_0x3bdb('0x37'),_0x3bdb('0x31')],_0x54d038[_0x3bdb('0x32')])&&_0x54d038['idField']&&_0x54d038[_0x3bdb('0x34')]){_0x145723[_0x3bdb('0x16')][_0x3bdb('0x38')]({'id':_0x54d038[_0x3bdb('0x39')],'value':_0x54d038[_0x3bdb('0x36')][_0x3bdb('0x2b')]()});}else if(_0x54d038[_0x3bdb('0x32')]===_0x3bdb('0x3a')&&_0x54d038[_0x3bdb('0x3b')]&&_0x54d038['idField']&&_0x54d038['customField']){_0x162ac5[_0x54d038[_0x3bdb('0x3b')]]&&_0x145723[_0x3bdb('0x16')][_0x3bdb('0x38')]({'id':_0x54d038[_0x3bdb('0x39')],'value':_0x162ac5[_0x54d038[_0x3bdb('0x3b')]]['toString']()});}else if(_0x54d038[_0x3bdb('0x32')]===_0x3bdb('0x3c')&&_0x54d038[_0x3bdb('0x3d')]&&_0x54d038[_0x3bdb('0x3d')][_0x3bdb('0x3e')]&&_0x54d038[_0x3bdb('0x39')]&&_0x54d038[_0x3bdb('0x34')]){_0x162ac5[_0x54d038[_0x3bdb('0x3d')][_0x3bdb('0x3e')][_0x3bdb('0x35')]()]&&_0x145723[_0x3bdb('0x16')]['push']({'id':_0x54d038[_0x3bdb('0x39')],'value':_0x162ac5[_0x54d038['Variable'][_0x3bdb('0x3e')][_0x3bdb('0x35')]()][_0x3bdb('0x2b')]()});}});}return _0x145723;}exports[_0x3bdb('0x3f')]=function(_0x556d60,_0x221dd7,_0x590bdd,_0x236fd5,_0x93288a,_0x5042ce){var _0x2cb883,_0x242141;_0x5042ce[_0x3bdb('0x1e')]=intUtil[_0x3bdb('0x40')](_0x5042ce[_0x3bdb('0x1e')]);_0x5042ce[_0x3bdb('0x41')]=intUtil[_0x3bdb('0x40')](_0x5042ce[_0x3bdb('0x41')]);if(_0x93288a&&_0x93288a[_0x3bdb('0x42')]){logger['info'](_0x3bdb('0x43'),_0x3bdb('0x44'));_0x221dd7['recordingURL']=util[_0x3bdb('0xe')](_0x3bdb('0x45'),_0x5042ce[_0x3bdb('0x41')],_0x221dd7[_0x3bdb('0x46')],md5(_0x221dd7[_0x3bdb('0x46')]));}else{_0x221dd7[_0x3bdb('0x47')]='';}headers[_0x3bdb('0x48')]=getAuth(_0x5042ce);return getUser(_0x5042ce,_0x236fd5['email'])[_0x3bdb('0x1b')](function(_0x4f79f3){_0x2cb883=_0x4f79f3;logger[_0x3bdb('0xb')]('The\x20User\x20ID\x20is:',_0x2cb883['id']);return getEndUser(_0x5042ce,_0x221dd7[_0x3bdb('0x49')],_0x221dd7['calleridnum']);})['then'](function(_0x241275){_0x242141=_0x241275;logger[_0x3bdb('0xb')](_0x3bdb('0x4a'),_0x242141['id']);return getTicket(_0x5042ce,_0x2cb883,_0x242141,_0x590bdd,_0x221dd7);})['then'](function(_0x1c66ea){if(_0x1c66ea&&_0x1c66ea['id']){logger[_0x3bdb('0xb')](_0x3bdb('0x1c'));logger[_0x3bdb('0xb')](_0x3bdb('0x4b'),_0x1c66ea['id']);logger[_0x3bdb('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3bdb('0xe')](_0x3bdb('0x4c'),_0x236fd5[_0x3bdb('0x3e')]),_0x3bdb('0x4d'),{'uri':util['format'](_0x3bdb('0x4e'),_0x5042ce[_0x3bdb('0x1e')],_0x1c66ea['id'])});}})[_0x3bdb('0x4f')](function(_0x1ea201){logger['error'](_0x3bdb('0x43'),JSON[_0x3bdb('0x50')](_0x1ea201));});};exports['outbound']=function(_0x4b0d6e,_0x4b269c,_0x38e231,_0xb9a8eb,_0x3a6b23,_0x12ae18,_0x329525){var _0x4ba7ad,_0x1cb7c0;_0x12ae18[_0x3bdb('0x1e')]=intUtil[_0x3bdb('0x40')](_0x12ae18[_0x3bdb('0x1e')]);_0x12ae18[_0x3bdb('0x41')]=intUtil[_0x3bdb('0x40')](_0x12ae18['serverUrl']);if(_0x329525&&_0x329525[_0x3bdb('0x51')]&&_0x329525['recordingFormat']!=='none'){logger['info'](_0x3bdb('0x52'),'Recording\x20is\x20enabled!');_0x4b269c[_0x3bdb('0x47')]=util['format'](_0x3bdb('0x45'),_0x12ae18[_0x3bdb('0x41')],_0x4b269c[_0x3bdb('0x46')],md5(_0x4b269c[_0x3bdb('0x46')]));}headers[_0x3bdb('0x48')]=getAuth(_0x12ae18);return getUser(_0x12ae18,_0xb9a8eb[_0x3bdb('0x22')])[_0x3bdb('0x1b')](function(_0x21b550){_0x4ba7ad=_0x21b550;logger[_0x3bdb('0xb')]('The\x20User\x20ID\x20is:',_0x4ba7ad['id']);return getEndUser(_0x12ae18,_0x4b269c[_0x3bdb('0x53')],_0x4b269c[_0x3bdb('0x54')]);})['then'](function(_0x439c43){_0x1cb7c0=_0x439c43;logger[_0x3bdb('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1cb7c0['id']);return getTicket(_0x12ae18,_0x4ba7ad,_0x1cb7c0,_0x38e231,_0x4b269c);})[_0x3bdb('0x1b')](function(_0x2fe0cb){if(_0x2fe0cb&&_0x2fe0cb['id']){logger['info']('Ticket\x20created!');logger[_0x3bdb('0xb')](_0x3bdb('0x4b'),_0x2fe0cb['id']);logger[_0x3bdb('0xb')](_0x3bdb('0x52'),_0x3bdb('0x55'));emit(util[_0x3bdb('0xe')]('user:%s',_0xb9a8eb[_0x3bdb('0x3e')]),'trigger:browser:url',{'uri':util[_0x3bdb('0xe')](_0x3bdb('0x4e'),_0x12ae18[_0x3bdb('0x1e')],_0x2fe0cb['id'])});}})[_0x3bdb('0x4f')](function(_0x2c4335){logger[_0x3bdb('0x56')](_0x3bdb('0x52'),JSON[_0x3bdb('0x50')](_0x2c4335));});};exports[_0x3bdb('0x57')]=function(_0x36d1dd,_0x3838e6,_0x2c8adf,_0x32990a,_0x4bba7d,_0x365eb3){var _0x3074e2,_0x289993;_0x365eb3['remoteUri']=intUtil[_0x3bdb('0x40')](_0x365eb3[_0x3bdb('0x1e')]);_0x365eb3[_0x3bdb('0x41')]=intUtil[_0x3bdb('0x40')](_0x365eb3[_0x3bdb('0x41')]);if(_0x4bba7d&&_0x4bba7d[_0x3bdb('0x42')]){logger[_0x3bdb('0xb')]('['+_0x3838e6[_0x3bdb('0x58')][_0x3bdb('0x59')]()+']',_0x3bdb('0x44'));_0x3838e6[_0x3bdb('0x47')]=util[_0x3bdb('0xe')](_0x3bdb('0x45'),_0x365eb3[_0x3bdb('0x41')],_0x3838e6[_0x3bdb('0x46')],md5(_0x3838e6[_0x3bdb('0x46')]));}else{_0x3838e6[_0x3bdb('0x47')]='';}headers[_0x3bdb('0x48')]=getAuth(_0x365eb3);return getUser(_0x365eb3,'')[_0x3bdb('0x1b')](function(_0x4cd3f8){_0x3074e2=_0x4cd3f8;logger[_0x3bdb('0xb')](_0x3bdb('0x5a'),_0x3074e2['id']);return getEndUser(_0x365eb3,_0x3838e6[_0x3bdb('0x49')],_0x3838e6[_0x3bdb('0x10')]);})[_0x3bdb('0x1b')](function(_0xcf4891){_0x289993=_0xcf4891;logger[_0x3bdb('0xb')](_0x3bdb('0x4a'),_0x289993['id']);return getTicket(_0x365eb3,_0x3074e2,_0x289993,_0x2c8adf,_0x3838e6);})['then'](function(_0x2304b7){if(_0x2304b7){logger[_0x3bdb('0xb')]('Ticket\x20created!');logger[_0x3bdb('0xb')](_0x3bdb('0x4b'),_0x2304b7['id']);}})[_0x3bdb('0x4f')](function(_0x261a8b){logger['error']('['+_0x3838e6[_0x3bdb('0x58')][_0x3bdb('0x59')]()+']',JSON[_0x3bdb('0x50')](_0x261a8b));});};
\ No newline at end of file
+var _0x5642=['Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','forEach','includes','picklist','type','nameField','content','string','idField','customField','push','variable','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','uniqueid','Authorization','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','toUpperCase','The\x20User\x20ID\x20is:','request-promise','md5','./util','../../../../config/logger','freshdesk','redis','defaults','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','<br>','Fields','custom_fields','value','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.'];(function(_0x2a9072,_0xbef7a6){var _0x3a5a8e=function(_0x2ba916){while(--_0x2ba916){_0x2a9072['push'](_0x2a9072['shift']());}};_0x3a5a8e(++_0xbef7a6);}(_0x5642,0x195));var _0x2564=function(_0xbe7d77,_0x147575){_0xbe7d77=_0xbe7d77-0x0;var _0x2ba567=_0x5642[_0xbe7d77];return _0x2ba567;};'use strict';var _=require('lodash');var rp=require(_0x2564('0x0'));var md5=require(_0x2564('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x2564('0x2'));var config=require('../../../../config/environment');var logger=require(_0x2564('0x3'))(_0x2564('0x4'));config[_0x2564('0x5')]=_[_0x2564('0x6')](config[_0x2564('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x2564('0x7'),'Accept':_0x2564('0x7')};function emit(_0x33b498,_0x49ec0c,_0x56e72d){io['to'](_0x33b498)[_0x2564('0x8')](_0x49ec0c,_0x56e72d);}function getTicket(_0x52a339,_0x942be6,_0x29c7b0,_0x1eed4c,_0x7c62cc){logger['info'](_0x2564('0x9'));var _0x233283=_[_0x2564('0xa')]({'responder_id':_0x942be6['id'],'requester_id':_0x29c7b0['id'],'name':util[_0x2564('0xb')](_0x2564('0xc'),_0x7c62cc[_0x2564('0xd')]),'phone':_0x7c62cc[_0x2564('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x2564('0xf')](_0x1eed4c[_0x2564('0x10')],_0x7c62cc,'\x20'),'description':intUtil[_0x2564('0xf')](_0x1eed4c['Descriptions'],_0x7c62cc,_0x2564('0x11')),'tags':getTags(_0x1eed4c['Tags'],'name')},getCustomFields(_0x1eed4c[_0x2564('0x12')],_0x7c62cc));_0x233283[_0x2564('0x13')]=_['mapValues'](_['keyBy'](_0x233283[_0x2564('0x13')],'id'),_0x2564('0x14'));return request({'uri':util[_0x2564('0xb')]('%s/api/v2/tickets',_0x52a339[_0x2564('0x15')]),'method':_0x2564('0x16'),'body':_0x233283})[_0x2564('0x17')](function(_0x214d59){logger[_0x2564('0x18')](_0x2564('0x19'));return _0x214d59;});}function getUser(_0x21fb55,_0x491412){if(intUtil[_0x2564('0x1a')](_0x491412)){return request({'uri':util['format'](_0x2564('0x1b'),_0x21fb55[_0x2564('0x15')]),'qs':{'email':_0x491412}})[_0x2564('0x17')](function(_0x143e6c){if(_0x143e6c[_0x2564('0x1c')]){logger['info'](_0x2564('0x1d'));return _[_0x2564('0x1e')](_0x143e6c,function(_0x19ec31){return _0x19ec31[_0x2564('0x1f')]['email']===_0x491412;});}else{logger[_0x2564('0x18')](_0x2564('0x20'));return request({'uri':util[_0x2564('0xb')](_0x2564('0x21'),_0x21fb55['remoteUri'])})[_0x2564('0x17')](function(_0x3305e7){logger[_0x2564('0x18')](_0x2564('0x22'));return _0x3305e7;});}});}else{logger[_0x2564('0x18')](_0x2564('0x23'));return request({'uri':util['format'](_0x2564('0x21'),_0x21fb55[_0x2564('0x15')])})[_0x2564('0x17')](function(_0x24eca3){logger['info'](_0x2564('0x22'));return _0x24eca3;});}}function getEndUser(_0x4ff004,_0x1e1be1,_0x2a2434){logger[_0x2564('0x18')](_0x2564('0x24'),_0x2a2434);return request({'uri':util['format'](_0x2564('0x25'),_0x4ff004[_0x2564('0x15')]),'qs':{'phone':_0x2a2434}})[_0x2564('0x17')](function(_0x36da1e){if(_0x36da1e['length']){logger['info'](_0x2564('0x26'));return _[_0x2564('0x1e')](_0x36da1e,{'phone':_0x2a2434});}else{logger[_0x2564('0x18')](_0x2564('0x27'));return request({'uri':util[_0x2564('0xb')](_0x2564('0x25'),_0x4ff004[_0x2564('0x15')]),'method':_0x2564('0x16'),'body':{'name':_0x1e1be1,'phone':_0x2a2434}})[_0x2564('0x17')](function(_0x5d7f78){logger[_0x2564('0x18')](_0x2564('0x28'));return _0x5d7f78;});}});}function getAuth(_0x425ca7){return util[_0x2564('0xb')](_0x2564('0x29'),new Buffer(_0x425ca7[_0x2564('0x2a')]+':X')[_0x2564('0x2b')](_0x2564('0x2c')));}function request(_0x332e9f){logger[_0x2564('0x2d')](_0x2564('0x2e'),JSON[_0x2564('0x2f')](_0x332e9f));return rp(_[_0x2564('0x6')](_0x332e9f,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4d2448,_0x5a729e){var _0x191f10=[];if(_0x4d2448&&_0x4d2448['length']>0x0){_0x191f10=_['map'](_0x4d2448,_0x5a729e);}return _0x191f10;}function getCustomFields(_0x575149,_0x7cd9c5){var _0x1d1b68=[];var _0x58d010={'custom_fields':[]};if(_0x575149[_0x2564('0x1c')]>0x0){_[_0x2564('0x30')](_0x575149,function(_0x35b781){if(_[_0x2564('0x31')](['string',_0x2564('0x32')],_0x35b781[_0x2564('0x33')])&&_0x35b781[_0x2564('0x34')]&&!_0x35b781['customField']){_0x58d010[_0x35b781[_0x2564('0x34')]['toLowerCase']()]=_0x35b781[_0x2564('0x35')]['toString']();}else if(_[_0x2564('0x31')]([_0x2564('0x36'),_0x2564('0x32')],_0x35b781[_0x2564('0x33')])&&_0x35b781[_0x2564('0x37')]&&_0x35b781[_0x2564('0x38')]){_0x58d010[_0x2564('0x13')][_0x2564('0x39')]({'id':_0x35b781['idField'],'value':_0x35b781[_0x2564('0x35')][_0x2564('0x2b')]()});}else if(_0x35b781[_0x2564('0x33')]===_0x2564('0x3a')&&_0x35b781['variableName']&&_0x35b781[_0x2564('0x37')]&&_0x35b781[_0x2564('0x38')]){_0x7cd9c5[_0x35b781['variableName']]&&_0x58d010['custom_fields'][_0x2564('0x39')]({'id':_0x35b781[_0x2564('0x37')],'value':_0x7cd9c5[_0x35b781['variableName']][_0x2564('0x2b')]()});}else if(_0x35b781['type']===_0x2564('0x3b')&&_0x35b781[_0x2564('0x3c')]&&_0x35b781[_0x2564('0x3c')][_0x2564('0x3d')]&&_0x35b781[_0x2564('0x37')]&&_0x35b781['customField']){_0x7cd9c5[_0x35b781[_0x2564('0x3c')]['name'][_0x2564('0x3e')]()]&&_0x58d010[_0x2564('0x13')]['push']({'id':_0x35b781['idField'],'value':_0x7cd9c5[_0x35b781[_0x2564('0x3c')]['name'][_0x2564('0x3e')]()][_0x2564('0x2b')]()});}});}return _0x58d010;}exports[_0x2564('0x3f')]=function(_0x343e61,_0x198def,_0x5175a3,_0x4f40b3,_0x1a6c46,_0x4ca003){var _0x5c454f,_0x3ceb71;_0x4ca003[_0x2564('0x15')]=intUtil[_0x2564('0x40')](_0x4ca003['remoteUri']);_0x4ca003['serverUrl']=intUtil[_0x2564('0x40')](_0x4ca003['serverUrl']);if(_0x1a6c46&&_0x1a6c46[_0x2564('0x41')]){logger[_0x2564('0x18')](_0x2564('0x42'),_0x2564('0x43'));_0x198def[_0x2564('0x44')]=util[_0x2564('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4ca003[_0x2564('0x45')],_0x198def[_0x2564('0x46')],md5(_0x198def[_0x2564('0x46')]));}else{_0x198def[_0x2564('0x44')]='';}headers[_0x2564('0x47')]=getAuth(_0x4ca003);return getUser(_0x4ca003,_0x4f40b3[_0x2564('0x48')])[_0x2564('0x17')](function(_0x3f6b4f){_0x5c454f=_0x3f6b4f;logger[_0x2564('0x18')]('The\x20User\x20ID\x20is:',_0x5c454f['id']);return getEndUser(_0x4ca003,_0x198def[_0x2564('0xd')],_0x198def[_0x2564('0xe')]);})[_0x2564('0x17')](function(_0x174d6a){_0x3ceb71=_0x174d6a;logger['info'](_0x2564('0x49'),_0x3ceb71['id']);return getTicket(_0x4ca003,_0x5c454f,_0x3ceb71,_0x5175a3,_0x198def);})[_0x2564('0x17')](function(_0x48ac8c){if(_0x48ac8c&&_0x48ac8c['id']){logger[_0x2564('0x18')](_0x2564('0x19'));logger['info'](_0x2564('0x4a'),_0x48ac8c['id']);logger[_0x2564('0x18')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2564('0xb')](_0x2564('0x4b'),_0x4f40b3[_0x2564('0x3d')]),_0x2564('0x4c'),{'uri':util['format'](_0x2564('0x4d'),_0x4ca003['remoteUri'],_0x48ac8c['id'])});}})[_0x2564('0x4e')](function(_0x5c768c){logger[_0x2564('0x4f')](_0x2564('0x42'),JSON[_0x2564('0x2f')](_0x5c768c));});};exports[_0x2564('0x50')]=function(_0x2c6ca,_0x3bf728,_0x4594c7,_0x22f424,_0x5575a8,_0x31df96,_0x2e3eaf){var _0x3d3d1b,_0x354fd9;_0x31df96['remoteUri']=intUtil['stripTrailingSlash'](_0x31df96['remoteUri']);_0x31df96['serverUrl']=intUtil['stripTrailingSlash'](_0x31df96[_0x2564('0x45')]);if(_0x2e3eaf&&_0x2e3eaf[_0x2564('0x51')]&&_0x2e3eaf[_0x2564('0x51')]!=='none'){logger[_0x2564('0x18')](_0x2564('0x52'),'Recording\x20is\x20enabled!');_0x3bf728[_0x2564('0x44')]=util['format'](_0x2564('0x53'),_0x31df96[_0x2564('0x45')],_0x3bf728[_0x2564('0x46')],md5(_0x3bf728[_0x2564('0x46')]));}headers[_0x2564('0x47')]=getAuth(_0x31df96);return getUser(_0x31df96,_0x22f424[_0x2564('0x48')])['then'](function(_0x337eef){_0x3d3d1b=_0x337eef;logger['info']('The\x20User\x20ID\x20is:',_0x3d3d1b['id']);return getEndUser(_0x31df96,_0x3bf728['destcalleridname'],_0x3bf728[_0x2564('0x54')]);})[_0x2564('0x17')](function(_0xf2457b){_0x354fd9=_0xf2457b;logger[_0x2564('0x18')](_0x2564('0x49'),_0x354fd9['id']);return getTicket(_0x31df96,_0x3d3d1b,_0x354fd9,_0x4594c7,_0x3bf728);})['then'](function(_0x376c7d){if(_0x376c7d&&_0x376c7d['id']){logger[_0x2564('0x18')]('Ticket\x20created!');logger[_0x2564('0x18')](_0x2564('0x4a'),_0x376c7d['id']);logger[_0x2564('0x18')](_0x2564('0x52'),_0x2564('0x55'));emit(util[_0x2564('0xb')]('user:%s',_0x22f424['name']),_0x2564('0x4c'),{'uri':util[_0x2564('0xb')](_0x2564('0x4d'),_0x31df96[_0x2564('0x15')],_0x376c7d['id'])});}})['catch'](function(_0x586fc3){logger[_0x2564('0x4f')](_0x2564('0x52'),JSON[_0x2564('0x2f')](_0x586fc3));});};exports['unmanaged']=function(_0x42b3c9,_0x148b7c,_0x58fdfc,_0x5a835,_0x3eb6a2,_0x2f3b3c){var _0x234e0a,_0x148eac;_0x2f3b3c[_0x2564('0x15')]=intUtil[_0x2564('0x40')](_0x2f3b3c[_0x2564('0x15')]);_0x2f3b3c[_0x2564('0x45')]=intUtil[_0x2564('0x40')](_0x2f3b3c['serverUrl']);if(_0x3eb6a2&&_0x3eb6a2[_0x2564('0x41')]){logger['info']('['+_0x148b7c['lastevent'][_0x2564('0x56')]()+']',_0x2564('0x43'));_0x148b7c[_0x2564('0x44')]=util[_0x2564('0xb')](_0x2564('0x53'),_0x2f3b3c[_0x2564('0x45')],_0x148b7c[_0x2564('0x46')],md5(_0x148b7c[_0x2564('0x46')]));}else{_0x148b7c['recordingURL']='';}headers[_0x2564('0x47')]=getAuth(_0x2f3b3c);return getUser(_0x2f3b3c,'')['then'](function(_0x3504bb){_0x234e0a=_0x3504bb;logger['info'](_0x2564('0x57'),_0x234e0a['id']);return getEndUser(_0x2f3b3c,_0x148b7c[_0x2564('0xd')],_0x148b7c['calleridnum']);})['then'](function(_0x421ed5){_0x148eac=_0x421ed5;logger['info'](_0x2564('0x49'),_0x148eac['id']);return getTicket(_0x2f3b3c,_0x234e0a,_0x148eac,_0x58fdfc,_0x148b7c);})[_0x2564('0x17')](function(_0x9b2615){if(_0x9b2615){logger[_0x2564('0x18')](_0x2564('0x19'));logger[_0x2564('0x18')](_0x2564('0x4a'),_0x9b2615['id']);}})[_0x2564('0x4e')](function(_0x264bdb){logger[_0x2564('0x4f')]('['+_0x148b7c['lastevent']['toUpperCase']()+']',JSON[_0x2564('0x2f')](_0x264bdb));});};
\ No newline at end of file
index 3abf3b3..55f360d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc81f=['format','YYYY-MM-DDTHH:mm:ss','headers','contact','/api/tasks','getString','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','queue','%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','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','info','then','users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','message','agentEmail','userEmail','length','userId','Admin\x20selected','toUpperCase','/api/lookup?q=','&entities=contact','contacts','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','work_number','POST'];(function(_0x13662d,_0x337b8d){var _0x573365=function(_0xb7e9c1){while(--_0xb7e9c1){_0x13662d['push'](_0x13662d['shift']());}};_0x573365(++_0x337b8d);}(_0xc81f,0x1f4));var _0xfc81=function(_0x361d3f,_0x3be2aa){_0x361d3f=_0x361d3f-0x0;var _0x320229=_0xc81f[_0x361d3f];return _0x320229;};'use strict';var _=require(_0xfc81('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xfc81('0x1'));var moment=require(_0xfc81('0x2'));var Promise=require(_0xfc81('0x3'));var Redis=require('ioredis');var intUtil=require(_0xfc81('0x4'));var config=require(_0xfc81('0x5'));var logger=require(_0xfc81('0x6'))(_0xfc81('0x7'));config[_0xfc81('0x8')]=_[_0xfc81('0x9')](config[_0xfc81('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xfc81('0xa'))(new Redis(config[_0xfc81('0x8')]));function getAdminId(_0x4e7375,_0x19c1ed,_0x94f283,_0x221931){return new Promise(function(_0x70c01b,_0x29a136){var _0x44870e=![];var _0x51b7fa={'method':_0xfc81('0xb'),'uri':_0x221931+_0xfc81('0xc'),'json':!![]};_0x51b7fa['headers']=_0x94f283;logger[_0xfc81('0xd')]('Getting\x20admin\x20information');return rp(_0x51b7fa)[_0xfc81('0xe')](function(_0x3c150b){if(_0x3c150b){var _0x483815=_0x3c150b[_0xfc81('0xf')];var _0x15a1b8=null;for(_0x15a1b8=0x0;_0x15a1b8<_0x483815['length'];_0x15a1b8++){if(_0x483815[_0x15a1b8][_0xfc81('0x10')]===_0x4e7375[_0xfc81('0x11')]){_0x4e7375[_0xfc81('0x12')]=_0x483815[_0x15a1b8]['id'];_0x44870e=!![];}}if(_0x44870e){logger[_0xfc81('0xd')](_0xfc81('0x13'),_0x4e7375[_0xfc81('0x12')]);_0x70c01b(_0x4e7375);}else{_0x29a136({'statusCode':0x194,'message':_0xfc81('0x14')});}}else{_0x29a136({'statusCode':0x194,'message':_0xfc81('0x14')});}})[_0xfc81('0x15')](function(_0x2f34b2){logger[_0xfc81('0x16')]('['+[_0x19c1ed['toUpperCase']()]+']',_0x2f34b2[_0xfc81('0x17')]);_0x29a136(_0x2f34b2);});});}function getUser(_0x217731,_0x2dece0,_0xdcf003){return function(_0x12f964){return new Promise(function(_0x488e09,_0xe0b1f5){var _0x4747ab={'method':_0xfc81('0xb'),'uri':_0xdcf003+'/api/selector/owners','json':!![]};_0x4747ab['headers']=_0x2dece0;logger['info']('Getting\x20user\x20list');return rp(_0x4747ab)[_0xfc81('0xe')](function(_0x37aabd){if(_0x37aabd){var _0x495baa=_0x37aabd[_0xfc81('0xf')];var _0x5eace=![];var _0x8bbac1=null;if(_0x12f964['agentEmail']!==null){logger[_0xfc81('0xd')]('Getting\x20user\x20with\x20email',_0x12f964[_0xfc81('0x18')]);_0x12f964[_0xfc81('0x19')]=_0x12f964[_0xfc81('0x18')];for(_0x8bbac1=0x0;_0x8bbac1<_0x495baa[_0xfc81('0x1a')];_0x8bbac1++){if(_0x495baa[_0x8bbac1][_0xfc81('0x10')]===_0x12f964[_0xfc81('0x18')]){_0x5eace=!![];_0x12f964['userId']=_0x495baa[_0x8bbac1]['id'];logger[_0xfc81('0xd')]('User\x20found:',_0x12f964[_0xfc81('0x1b')]);}}}if(!_0x5eace){logger[_0xfc81('0xd')](_0xfc81('0x1c'));_0x12f964[_0xfc81('0x19')]=_0x12f964[_0xfc81('0x11')];_0x12f964[_0xfc81('0x1b')]=_0x12f964[_0xfc81('0x12')];_0x5eace=!![];}if(_0x5eace){_0x488e09(_0x12f964);}else{_0xe0b1f5({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0xe0b1f5({'statusCode':0x194,'message':_0xfc81('0x14')});}})[_0xfc81('0x15')](function(_0x3545f0){logger['error']('['+[_0x217731[_0xfc81('0x1d')]()]+']',_0x3545f0[_0xfc81('0x17')]);_0xe0b1f5(_0x3545f0);});});};}function searchContact(_0x4e7819,_0x275c41,_0x2145dc,_0x1fde25){return new Promise(function(_0x208f9f,_0x22b63e){var _0x5b2074={'method':_0xfc81('0xb'),'headers':_0x275c41,'uri':_0x4e7819+_0xfc81('0x1e')+_0x1fde25+'&f='+_0x2145dc+_0xfc81('0x1f'),'json':!![]};rp(_0x5b2074)[_0xfc81('0xe')](function(_0x4d17ae){var _0x53f8a9=_['find'](_0x4d17ae[_0xfc81('0x20')][_0xfc81('0x20')],[_0x2145dc,_0x1fde25]);_0x208f9f(_0x53f8a9);})[_0xfc81('0x15')](function(_0x41892f){_0x22b63e(_0x41892f);});});}function getEndUser(_0x8f7f48,_0x3348f0,_0x5f4271){return function(_0x5ab458){return new Promise(function(_0x3a61ff,_0x5ad7e8){logger['info'](util['format'](_0xfc81('0x21'),_0x5ab458['contactNumber']));searchContact(_0x5f4271,_0x3348f0,_0xfc81('0x22'),_0x5ab458[_0xfc81('0x23')])['then'](function(_0x99278e){if(_0x99278e){_0x5ab458[_0xfc81('0x24')]=_0x99278e['id'];logger[_0xfc81('0xd')]('Contact\x20found\x20mobile_number:',_0x5ab458[_0xfc81('0x24')]);return _0x3a61ff(_0x5ab458);}searchContact(_0x5f4271,_0x3348f0,_0xfc81('0x25'),_0x5ab458[_0xfc81('0x23')])[_0xfc81('0xe')](function(_0x5e0fbc){if(_0x5e0fbc){_0x5ab458[_0xfc81('0x24')]=_0x5e0fbc['id'];logger[_0xfc81('0xd')]('Contact\x20found\x20work_number:',_0x5ab458[_0xfc81('0x24')]);return _0x3a61ff(_0x5ab458);}createEndUser(_0x5ab458,_0x8f7f48,_0x3348f0,_0x5f4271)[_0xfc81('0xe')](function(_0x1d378a){logger[_0xfc81('0xd')]('Contact\x20created:',_0x1d378a['endUserId']);return _0x3a61ff(_0x1d378a);});});})[_0xfc81('0x15')](function(_0x26a7ac){_0x5ad7e8(_0x26a7ac);});});};}function createEndUser(_0x2eb24f,_0x1deba6,_0xa41eba,_0x1f39bb){return new Promise(function(_0x18967,_0x39664e){var _0x5892ac=moment();var _0x3337b8={'method':_0xfc81('0x26'),'uri':_0x1f39bb+'/api/contacts','body':{'contact':{'last_name':_0x2eb24f[_0xfc81('0x23')],'work_number':_0x2eb24f[_0xfc81('0x23')],'mobile_number':_0x2eb24f[_0xfc81('0x23')],'owner_id':_0x2eb24f['userId'],'created_at':_0x5892ac[_0xfc81('0x27')](_0xfc81('0x28'))}},'json':!![]};_0x3337b8[_0xfc81('0x29')]=_0xa41eba;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x3337b8)[_0xfc81('0xe')](function(_0x6e6864){_0x2eb24f[_0xfc81('0x24')]=_0x6e6864[_0xfc81('0x2a')]['id'];_0x18967(_0x2eb24f);})[_0xfc81('0x15')](function(_0x9f1dfb){logger['error']('['+[_0x1deba6[_0xfc81('0x1d')]()]+']',_0x9f1dfb['message']);_0x39664e(_0x9f1dfb['message']);});});}function getTicket(_0xc6dfda,_0x2fca2f,_0x22d3ea,_0xbd55e0,_0x4f47fd){return function(_0x2cd5b0){logger[_0xfc81('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x5585bb,_0x3408ef){var _0x26c756=moment();var _0x2b60f7={'method':_0xfc81('0x26'),'uri':_0x22d3ea+_0xfc81('0x2b'),'body':{'title':intUtil[_0xfc81('0x2c')](_0xbd55e0['Subjects'],_0x4f47fd,'\x20'),'description':intUtil[_0xfc81('0x2c')](_0xbd55e0['Descriptions'],_0x4f47fd,'\x0a'),'owner_id':_0x2cd5b0[_0xfc81('0x1b')],'creater_id':_0x2cd5b0[_0xfc81('0x12')],'targetable_id':_0x2cd5b0[_0xfc81('0x24')],'targetable_type':_0xfc81('0x2d'),'created_at':_0x26c756[_0xfc81('0x27')](_0xfc81('0x28')),'due_date':_0x26c756[_0xfc81('0x2e')](0x1e,'m')[_0xfc81('0x27')](_0xfc81('0x28'))},'json':!![]};_0x2b60f7['headers']=_0x2fca2f;return rp(_0x2b60f7)[_0xfc81('0xe')](function(_0x596a57){_0x2cd5b0[_0xfc81('0x2f')]=_0x596a57[_0xfc81('0x30')]['id'];logger[_0xfc81('0xd')](_0xfc81('0x31'),_0x2cd5b0[_0xfc81('0x2f')]);_0x5585bb(_0x2cd5b0);})[_0xfc81('0x15')](function(_0x3e13e3){logger[_0xfc81('0x16')]('['+[_0xc6dfda['toUpperCase']()]+']',_0x3e13e3['message']);_0x3408ef(_0x3e13e3[_0xfc81('0x17')]);});});};}function emit(_0x22fc8c,_0x31f54d,_0x2bf390){var _0x32a4c8={'uri':_0x22fc8c+'/contacts/'+_0x2bf390};io['to'](util[_0xfc81('0x27')](_0xfc81('0x32'),_0x31f54d))[_0xfc81('0x33')]('trigger:browser:url',_0x32a4c8);}exports['cs']=function(_0x52ff0c,_0x34a64c,_0x18058f,_0x5977ea,_0x44ca3b,_0xadb42a,_0x2afa87,_0x1dbcc9){var _0x3865b3={};var _0x381749={'Authorization':_0xfc81('0x34')+_0xadb42a['apiKey']};_0xadb42a[_0xfc81('0x35')]=intUtil[_0xfc81('0x36')](_0xadb42a[_0xfc81('0x35')]);_0xadb42a['serverUrl']=intUtil[_0xfc81('0x36')](_0xadb42a[_0xfc81('0x37')]);var _0x70ee90=_0xadb42a[_0xfc81('0x35')];_0x3865b3[_0xfc81('0x11')]=_0xadb42a[_0xfc81('0x38')];_0x3865b3['contactNumber']=_0x1dbcc9[_0xfc81('0x39')]()===_0xfc81('0x3a')?_0x34a64c[_0xfc81('0x3b')]:_0x34a64c[_0xfc81('0x3c')];_0x3865b3[_0xfc81('0x3d')]=_0x1dbcc9==='queue'||_0x1dbcc9===_0xfc81('0x3e')?_0xfc81('0x3f'):_0xfc81('0x3a');if(_0x5977ea){_0x3865b3[_0xfc81('0x18')]=_0x5977ea[_0xfc81('0x10')];}var _0x13878d=util[_0xfc81('0x27')](_0xfc81('0x40'),_0xadb42a[_0xfc81('0x37')],_0x34a64c['uniqueid'],md5(_0x34a64c['uniqueid']));if(_0x44ca3b&&_0x44ca3b[_0xfc81('0x41')]){logger['info'](_0xfc81('0x42'),_0xfc81('0x43'));_0x34a64c[_0xfc81('0x44')]=_0x13878d;}else if(_0x2afa87&&_0x2afa87[_0xfc81('0x45')]&&_0x2afa87['recordingFormat']!==_0xfc81('0x46')){logger[_0xfc81('0xd')](_0xfc81('0x47'),'Recording\x20is\x20enabled!');_0x34a64c[_0xfc81('0x44')]=_0x13878d;}else{_0x34a64c[_0xfc81('0x44')]='';}return getAdminId(_0x3865b3,_0x1dbcc9,_0x381749,_0x70ee90)[_0xfc81('0xe')](getUser(_0x1dbcc9,_0x381749,_0x70ee90))['then'](getEndUser(_0x1dbcc9,_0x381749,_0x70ee90))[_0xfc81('0xe')](getTicket(_0x1dbcc9,_0x381749,_0x70ee90,_0x18058f,_0x34a64c))[_0xfc81('0xe')](function(_0x4b72c2){logger['info'](util[_0xfc81('0x27')](_0xfc81('0x48'),_0x4b72c2[_0xfc81('0x2f')]));if(_0x1dbcc9!==_0xfc81('0x3e')){logger[_0xfc81('0xd')]('['+[_0x1dbcc9['toUpperCase']()]+']',_0xfc81('0x49'));emit(_0x70ee90,_0x5977ea[_0xfc81('0x4a')],_0x4b72c2['endUserId']);}})[_0xfc81('0x15')](function(_0xaf91cd){logger['error']('['+[_0x1dbcc9['toUpperCase']()]+_0xfc81('0x4b'),util[_0xfc81('0x4c')](_0xaf91cd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x34d8=['%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','lodash','md5','util','moment','bluebird','./util','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','headers','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','error','message','&f=','find','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','destcalleridnum','calleridnum','callDirection','unmanaged'];(function(_0x162528,_0x379149){var _0xd6be2a=function(_0x12baa3){while(--_0x12baa3){_0x162528['push'](_0x162528['shift']());}};_0xd6be2a(++_0x379149);}(_0x34d8,0x102));var _0x834d=function(_0x53ecd6,_0x5426db){_0x53ecd6=_0x53ecd6-0x0;var _0xbaa0c9=_0x34d8[_0x53ecd6];return _0xbaa0c9;};'use strict';var _=require(_0x834d('0x0'));var rp=require('request-promise');var md5=require(_0x834d('0x1'));var util=require(_0x834d('0x2'));var moment=require(_0x834d('0x3'));var Promise=require(_0x834d('0x4'));var Redis=require('ioredis');var intUtil=require(_0x834d('0x5'));var config=require('../../../../config/environment');var logger=require(_0x834d('0x6'))(_0x834d('0x7'));config[_0x834d('0x8')]=_[_0x834d('0x9')](config[_0x834d('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x834d('0xa'))(new Redis(config['redis']));function getAdminId(_0x34f718,_0x16968b,_0x48a40e,_0x5dd56f){return new Promise(function(_0x2d9028,_0x15dca2){var _0x47a17c=![];var _0x1fc44b={'method':_0x834d('0xb'),'uri':_0x5dd56f+_0x834d('0xc'),'json':!![]};_0x1fc44b['headers']=_0x48a40e;logger[_0x834d('0xd')](_0x834d('0xe'));return rp(_0x1fc44b)[_0x834d('0xf')](function(_0xcbd1bc){if(_0xcbd1bc){var _0x411f1f=_0xcbd1bc[_0x834d('0x10')];var _0x2366d4=null;for(_0x2366d4=0x0;_0x2366d4<_0x411f1f[_0x834d('0x11')];_0x2366d4++){if(_0x411f1f[_0x2366d4][_0x834d('0x12')]===_0x34f718[_0x834d('0x13')]){_0x34f718['adminId']=_0x411f1f[_0x2366d4]['id'];_0x47a17c=!![];}}if(_0x47a17c){logger[_0x834d('0xd')](_0x834d('0x14'),_0x34f718[_0x834d('0x15')]);_0x2d9028(_0x34f718);}else{_0x15dca2({'statusCode':0x194,'message':_0x834d('0x16')});}}else{_0x15dca2({'statusCode':0x194,'message':_0x834d('0x16')});}})[_0x834d('0x17')](function(_0xf999d4){logger['error']('['+[_0x16968b[_0x834d('0x18')]()]+']',_0xf999d4['message']);_0x15dca2(_0xf999d4);});});}function getUser(_0x5333d1,_0x2e8690,_0x22ddd1){return function(_0x2be505){return new Promise(function(_0x95d701,_0x42c7fa){var _0x81198b={'method':_0x834d('0xb'),'uri':_0x22ddd1+_0x834d('0xc'),'json':!![]};_0x81198b[_0x834d('0x19')]=_0x2e8690;logger[_0x834d('0xd')]('Getting\x20user\x20list');return rp(_0x81198b)[_0x834d('0xf')](function(_0x71d526){if(_0x71d526){var _0x396987=_0x71d526[_0x834d('0x10')];var _0x2207ec=![];var _0x375d40=null;if(_0x2be505[_0x834d('0x1a')]!==null){logger[_0x834d('0xd')](_0x834d('0x1b'),_0x2be505[_0x834d('0x1a')]);_0x2be505[_0x834d('0x1c')]=_0x2be505[_0x834d('0x1a')];for(_0x375d40=0x0;_0x375d40<_0x396987[_0x834d('0x11')];_0x375d40++){if(_0x396987[_0x375d40][_0x834d('0x12')]===_0x2be505[_0x834d('0x1a')]){_0x2207ec=!![];_0x2be505[_0x834d('0x1d')]=_0x396987[_0x375d40]['id'];logger[_0x834d('0xd')](_0x834d('0x1e'),_0x2be505['userId']);}}}if(!_0x2207ec){logger['info'](_0x834d('0x1f'));_0x2be505[_0x834d('0x1c')]=_0x2be505[_0x834d('0x13')];_0x2be505['userId']=_0x2be505[_0x834d('0x15')];_0x2207ec=!![];}if(_0x2207ec){_0x95d701(_0x2be505);}else{_0x42c7fa({'statusCode':0x194,'message':_0x834d('0x16')});}}else{_0x42c7fa({'statusCode':0x194,'message':_0x834d('0x16')});}})[_0x834d('0x17')](function(_0x2e9021){logger[_0x834d('0x20')]('['+[_0x5333d1[_0x834d('0x18')]()]+']',_0x2e9021[_0x834d('0x21')]);_0x42c7fa(_0x2e9021);});});};}function searchContact(_0x1eb23c,_0x20a2e2,_0x2ff873,_0xd9175b){return new Promise(function(_0x4ee453,_0x46a6ff){var _0x522063={'method':_0x834d('0xb'),'headers':_0x20a2e2,'uri':_0x1eb23c+'/api/lookup?q='+_0xd9175b+_0x834d('0x22')+_0x2ff873+'&entities=contact','json':!![]};rp(_0x522063)['then'](function(_0x17b1e4){var _0x21d417=_[_0x834d('0x23')](_0x17b1e4['contacts']['contacts'],[_0x2ff873,_0xd9175b]);_0x4ee453(_0x21d417);})[_0x834d('0x17')](function(_0x89567d){_0x46a6ff(_0x89567d);});});}function getEndUser(_0x2cbf78,_0x60c90c,_0x4f900a){return function(_0x4a7975){return new Promise(function(_0x3bd9ba,_0x1f0694){logger['info'](util[_0x834d('0x24')](_0x834d('0x25'),_0x4a7975[_0x834d('0x26')]));searchContact(_0x4f900a,_0x60c90c,_0x834d('0x27'),_0x4a7975[_0x834d('0x26')])['then'](function(_0xc88c10){if(_0xc88c10){_0x4a7975[_0x834d('0x28')]=_0xc88c10['id'];logger[_0x834d('0xd')](_0x834d('0x29'),_0x4a7975[_0x834d('0x28')]);return _0x3bd9ba(_0x4a7975);}searchContact(_0x4f900a,_0x60c90c,_0x834d('0x2a'),_0x4a7975[_0x834d('0x26')])[_0x834d('0xf')](function(_0x34dced){if(_0x34dced){_0x4a7975[_0x834d('0x28')]=_0x34dced['id'];logger['info'](_0x834d('0x2b'),_0x4a7975['endUserId']);return _0x3bd9ba(_0x4a7975);}createEndUser(_0x4a7975,_0x2cbf78,_0x60c90c,_0x4f900a)[_0x834d('0xf')](function(_0x430ed6){logger[_0x834d('0xd')](_0x834d('0x2c'),_0x430ed6[_0x834d('0x28')]);return _0x3bd9ba(_0x430ed6);});});})[_0x834d('0x17')](function(_0x334db5){_0x1f0694(_0x334db5);});});};}function createEndUser(_0x393afd,_0x5dcb44,_0x814b25,_0x2c124b){return new Promise(function(_0x4372f9,_0x4cf84c){var _0x4fe621=moment();var _0x57f285={'method':_0x834d('0x2d'),'uri':_0x2c124b+'/api/contacts','body':{'contact':{'last_name':_0x393afd[_0x834d('0x26')],'work_number':_0x393afd[_0x834d('0x26')],'mobile_number':_0x393afd[_0x834d('0x26')],'owner_id':_0x393afd[_0x834d('0x1d')],'created_at':_0x4fe621['format'](_0x834d('0x2e'))}},'json':!![]};_0x57f285[_0x834d('0x19')]=_0x814b25;logger['info'](_0x834d('0x2f'));return rp(_0x57f285)[_0x834d('0xf')](function(_0x4bd5f9){_0x393afd[_0x834d('0x28')]=_0x4bd5f9[_0x834d('0x30')]['id'];_0x4372f9(_0x393afd);})[_0x834d('0x17')](function(_0x3f0f62){logger[_0x834d('0x20')]('['+[_0x5dcb44['toUpperCase']()]+']',_0x3f0f62['message']);_0x4cf84c(_0x3f0f62[_0x834d('0x21')]);});});}function getTicket(_0x216070,_0x45c3de,_0x3dd6f6,_0x537fd7,_0x26f24e){return function(_0x401c72){logger['info'](_0x834d('0x31'));return new Promise(function(_0x2d176b,_0x39b442){var _0x540da5=moment();var _0x35cbcb={'method':'POST','uri':_0x3dd6f6+_0x834d('0x32'),'body':{'title':intUtil[_0x834d('0x33')](_0x537fd7[_0x834d('0x34')],_0x26f24e,'\x20'),'description':intUtil['getString'](_0x537fd7['Descriptions'],_0x26f24e,'\x0a'),'owner_id':_0x401c72['userId'],'creater_id':_0x401c72[_0x834d('0x15')],'targetable_id':_0x401c72['endUserId'],'targetable_type':_0x834d('0x35'),'created_at':_0x540da5['format'](_0x834d('0x2e')),'due_date':_0x540da5[_0x834d('0x36')](0x1e,'m')['format'](_0x834d('0x2e'))},'json':!![]};_0x35cbcb[_0x834d('0x19')]=_0x45c3de;return rp(_0x35cbcb)[_0x834d('0xf')](function(_0x5dfbf0){_0x401c72[_0x834d('0x37')]=_0x5dfbf0[_0x834d('0x38')]['id'];logger['info'](_0x834d('0x39'),_0x401c72[_0x834d('0x37')]);_0x2d176b(_0x401c72);})[_0x834d('0x17')](function(_0x27312d){logger['error']('['+[_0x216070[_0x834d('0x18')]()]+']',_0x27312d[_0x834d('0x21')]);_0x39b442(_0x27312d[_0x834d('0x21')]);});});};}function emit(_0x1f942a,_0xc32ee6,_0x5cafbb){var _0x2911a5={'uri':_0x1f942a+'/contacts/'+_0x5cafbb};io['to'](util['format'](_0x834d('0x3a'),_0xc32ee6))[_0x834d('0x3b')](_0x834d('0x3c'),_0x2911a5);}exports['cs']=function(_0x3180b2,_0x51f146,_0x3c328c,_0x3b3d24,_0x1cdb89,_0x208bce,_0x42fe45,_0x38e8e2){var _0x53a0cd={};var _0x26dea2={'Authorization':_0x834d('0x3d')+_0x208bce[_0x834d('0x3e')]};_0x208bce['remoteUri']=intUtil['stripTrailingSlash'](_0x208bce[_0x834d('0x3f')]);_0x208bce['serverUrl']=intUtil[_0x834d('0x40')](_0x208bce['serverUrl']);var _0x29b545=_0x208bce[_0x834d('0x3f')];_0x53a0cd[_0x834d('0x13')]=_0x208bce[_0x834d('0x41')];_0x53a0cd[_0x834d('0x26')]=_0x38e8e2['toLowerCase']()==='outbound'?_0x51f146[_0x834d('0x42')]:_0x51f146[_0x834d('0x43')];_0x53a0cd[_0x834d('0x44')]=_0x38e8e2==='queue'||_0x38e8e2===_0x834d('0x45')?'queue':'outbound';if(_0x3b3d24){_0x53a0cd['agentEmail']=_0x3b3d24[_0x834d('0x12')];}var _0x337fd7=util[_0x834d('0x24')](_0x834d('0x46'),_0x208bce[_0x834d('0x47')],_0x51f146[_0x834d('0x48')],md5(_0x51f146[_0x834d('0x48')]));if(_0x1cdb89&&_0x1cdb89[_0x834d('0x49')]){logger['info']('[QUEUE]',_0x834d('0x4a'));_0x51f146['recordingURL']=_0x337fd7;}else if(_0x42fe45&&_0x42fe45[_0x834d('0x4b')]&&_0x42fe45[_0x834d('0x4b')]!==_0x834d('0x4c')){logger['info'](_0x834d('0x4d'),_0x834d('0x4a'));_0x51f146[_0x834d('0x4e')]=_0x337fd7;}else{_0x51f146['recordingURL']='';}return getAdminId(_0x53a0cd,_0x38e8e2,_0x26dea2,_0x29b545)[_0x834d('0xf')](getUser(_0x38e8e2,_0x26dea2,_0x29b545))[_0x834d('0xf')](getEndUser(_0x38e8e2,_0x26dea2,_0x29b545))[_0x834d('0xf')](getTicket(_0x38e8e2,_0x26dea2,_0x29b545,_0x3c328c,_0x51f146))[_0x834d('0xf')](function(_0x33fae0){logger[_0x834d('0xd')](util[_0x834d('0x24')](_0x834d('0x4f'),_0x33fae0[_0x834d('0x37')]));if(_0x38e8e2!==_0x834d('0x45')){logger[_0x834d('0xd')]('['+[_0x38e8e2[_0x834d('0x18')]()]+']',_0x834d('0x50'));emit(_0x29b545,_0x3b3d24['name'],_0x33fae0[_0x834d('0x28')]);}})['catch'](function(_0x4f19af){logger['error']('['+[_0x38e8e2[_0x834d('0x18')]()]+_0x834d('0x51'),util['inspect'](_0x4f19af,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index dce7556..d42f2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ade=['sugarcrm','freshdesk','desk','freshsales','log','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./freshdesk','./desk','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','zoho','vtiger','servicenow','exec','includes','toLowerCase','data1','data2','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4ade,0x188));var _0xe4ad=function(_0x588781,_0x353c35){_0x588781=_0x588781-0x0;var _0x2a1365=_0x4ade[_0x588781];return _0x2a1365;};'use strict';var _=require(_0xe4ad('0x0'));var util=require(_0xe4ad('0x1'));var zendesk=require(_0xe4ad('0x2'));var salesforce=require(_0xe4ad('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xe4ad('0x4'));var zoho=require('./zoho');var desk=require(_0xe4ad('0x5'));var vtiger=require('./vtiger');var servicenow=require(_0xe4ad('0x6'));var dynamics365=require(_0xe4ad('0x7'));var freshsales=require(_0xe4ad('0x8'));var integrations=[_0xe4ad('0x9'),_0xe4ad('0xa'),'sugarcrm','freshdesk',_0xe4ad('0xb'),'desk',_0xe4ad('0xc'),'dynamics365','freshsales',_0xe4ad('0xd')];exports[_0xe4ad('0xe')]=function(_0x444714,_0x4547f8,_0x1bf7d0,_0xe1cdef,_0x289238,_0x2d169a){if(_0x1bf7d0){if(_[_0xe4ad('0xf')](integrations,_0x444714['data1'][_0xe4ad('0x10')]())){try{var _0x3f3d52=null;var _0x551767='';var _0x107139=_0x1bf7d0[_0x444714[_0xe4ad('0x11')][_0xe4ad('0x10')]()];if(_0x107139){var _0x3ed01f=_0x107139[_0x444714[_0xe4ad('0x12')]];if(_0x3ed01f){var _0x269b8d=_['find'](_0x3ed01f[_0xe4ad('0x13')],{'id':parseInt(_0x444714[_0xe4ad('0x14')],0xa)});if(_0x269b8d){if(_0xe1cdef){if(_0x289238&&_0x4547f8['queue']){_0x551767=_0xe4ad('0x15');}else if(_0x4547f8[_0xe4ad('0x16')]){_0x551767=_0xe4ad('0x17');}else{console['log'](_0xe4ad('0x18'),_0x4547f8);}}else{_0x551767=_0xe4ad('0x19');}switch(_0x444714[_0xe4ad('0x11')][_0xe4ad('0x10')]()){case _0xe4ad('0x9'):zendesk[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0xa'):salesforce[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1a'):sugarcrm[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1b'):freshdesk[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0xb'):zoho[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1c'):desk[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0xc'):vtiger[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1d'):freshsales['cs'](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a,_0x551767);break;case _0xe4ad('0xd'):servicenow['cs'](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a,_0x551767);break;case'dynamics365':dynamics365['cs'](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a,_0x551767);break;default:console[_0xe4ad('0x1e')](_0xe4ad('0x1f'));}}else{_0x3f3d52=require(_0xe4ad('0x20'))(_0x444714[_0xe4ad('0x11')][_0xe4ad('0x10')]());_0x3f3d52[_0xe4ad('0x21')](_0xe4ad('0x22'),util[_0xe4ad('0x23')](_0xe4ad('0x24'),_0x444714['data1']['toLowerCase'](),_0x444714[_0xe4ad('0x14')]));}}else{_0x3f3d52=require('../../../../config/logger')(_0x444714['data1']['toLowerCase']());_0x3f3d52[_0xe4ad('0x21')](_0xe4ad('0x22'),util[_0xe4ad('0x23')](_0xe4ad('0x25'),_0x444714['data1'][_0xe4ad('0x10')](),_0x444714['data2']));}}else{}}catch(_0x4115dd){console[_0xe4ad('0x21')](_0x4115dd);}}}};
\ No newline at end of file
+var _0x5332=['salesforce','sugarcrm','zoho','desk','dynamics365','freshsales','servicenow','exec','toLowerCase','data1','data2','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','freshdesk','vtiger','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./servicenow','./dynamics365','./freshsales','zendesk'];(function(_0x5924ad,_0x359d7a){var _0x6b308b=function(_0xa971fd){while(--_0xa971fd){_0x5924ad['push'](_0x5924ad['shift']());}};_0x6b308b(++_0x359d7a);}(_0x5332,0x65));var _0x2533=function(_0x6b01a1,_0x478c97){_0x6b01a1=_0x6b01a1-0x0;var _0x2112a7=_0x5332[_0x6b01a1];return _0x2112a7;};'use strict';var _=require(_0x2533('0x0'));var util=require('util');var zendesk=require('./zendesk');var salesforce=require(_0x2533('0x1'));var sugarcrm=require(_0x2533('0x2'));var freshdesk=require(_0x2533('0x3'));var zoho=require(_0x2533('0x4'));var desk=require(_0x2533('0x5'));var vtiger=require('./vtiger');var servicenow=require(_0x2533('0x6'));var dynamics365=require(_0x2533('0x7'));var freshsales=require(_0x2533('0x8'));var integrations=[_0x2533('0x9'),_0x2533('0xa'),_0x2533('0xb'),'freshdesk',_0x2533('0xc'),_0x2533('0xd'),'vtiger',_0x2533('0xe'),_0x2533('0xf'),_0x2533('0x10')];exports[_0x2533('0x11')]=function(_0x448a4d,_0x4dea15,_0x3b9d76,_0xf84834,_0x5abc91,_0x447694){if(_0x3b9d76){if(_['includes'](integrations,_0x448a4d['data1'][_0x2533('0x12')]())){try{var _0x14018b=null;var _0xeda1a5='';var _0x189368=_0x3b9d76[_0x448a4d[_0x2533('0x13')][_0x2533('0x12')]()];if(_0x189368){var _0x2ad0ec=_0x189368[_0x448a4d[_0x2533('0x14')]];if(_0x2ad0ec){var _0x3567c0=_['find'](_0x2ad0ec['Configurations'],{'id':parseInt(_0x448a4d[_0x2533('0x15')],0xa)});if(_0x3567c0){if(_0xf84834){if(_0x5abc91&&_0x4dea15[_0x2533('0x16')]){_0xeda1a5=_0x2533('0x16');}else if(_0x4dea15[_0x2533('0x17')]){_0xeda1a5=_0x2533('0x18');}else{console[_0x2533('0x19')](_0x2533('0x1a'),_0x4dea15);}}else{_0xeda1a5=_0x2533('0x1b');}switch(_0x448a4d[_0x2533('0x13')][_0x2533('0x12')]()){case _0x2533('0x9'):zendesk[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case _0x2533('0xa'):salesforce[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case'sugarcrm':sugarcrm[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case _0x2533('0x1c'):freshdesk[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case _0x2533('0xc'):zoho[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case'desk':desk[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case _0x2533('0x1d'):vtiger[_0xeda1a5](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694);break;case'freshsales':freshsales['cs'](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694,_0xeda1a5);break;case _0x2533('0x10'):servicenow['cs'](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694,_0xeda1a5);break;case'dynamics365':dynamics365['cs'](_0x448a4d,_0x4dea15,_0x3567c0,_0xf84834,_0x5abc91,_0x2ad0ec,_0x447694,_0xeda1a5);break;default:console['log'](_0x2533('0x1e'));}}else{_0x14018b=require(_0x2533('0x1f'))(_0x448a4d['data1'][_0x2533('0x12')]());_0x14018b[_0x2533('0x20')](_0x2533('0x21'),util[_0x2533('0x22')](_0x2533('0x23'),_0x448a4d[_0x2533('0x13')][_0x2533('0x12')](),_0x448a4d[_0x2533('0x15')]));}}else{_0x14018b=require('../../../../config/logger')(_0x448a4d[_0x2533('0x13')]['toLowerCase']());_0x14018b['error'](_0x2533('0x21'),util[_0x2533('0x22')](_0x2533('0x24'),_0x448a4d[_0x2533('0x13')][_0x2533('0x12')](),_0x448a4d[_0x2533('0x14')]));}}else{}}catch(_0x28df75){console['error'](_0x28df75);}}}};
\ No newline at end of file
index 6606ea4..32e4de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x189b=['Descriptions','ticketType','Task','ActivityDate','utc','endUserType','contact','lead','WhoId','WhatId','Case','account','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','find','execute','then','length','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','account_contact_lead','additionalSearchAccount','Account','first','Phone','attributes','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','Company','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','upperFirst','forEach','includes','string','picklist','idField','content','variable','variableName','toString','type','customVariable','Variable','name','password','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','serverUrl','remoteUri','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','instanceUrl','error','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','newTab','%s/%s/e','unmanaged','monitor_format','lastevent','toUpperCase','calleridname',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','bluebird','util','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects'];(function(_0x431cf2,_0x1d4456){var _0x10c9a7=function(_0x574efe){while(--_0x574efe){_0x431cf2['push'](_0x431cf2['shift']());}};_0x10c9a7(++_0x1d4456);}(_0x189b,0x1ee));var _0xb189=function(_0x1ba2cf,_0x57b0f2){_0x1ba2cf=_0x1ba2cf-0x0;var _0x4ef5b5=_0x189b[_0x1ba2cf];return _0x4ef5b5;};'use strict';var _=require('lodash');var rp=require(_0xb189('0x0'));var moment=require(_0xb189('0x1'));var BPromise=require(_0xb189('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0xb189('0x3'));var Redis=require('ioredis');var intUtil=require(_0xb189('0x4'));var config=require(_0xb189('0x5'));var logger=require('../../../../config/logger')(_0xb189('0x6'));config[_0xb189('0x7')]=_[_0xb189('0x8')](config[_0xb189('0x7')],{'host':_0xb189('0x9'),'port':0x18eb});var io=require(_0xb189('0xa'))(new Redis(config[_0xb189('0x7')]));function emit(_0x2f8a92,_0x33470d,_0x10018d){io['to'](_0x2f8a92)[_0xb189('0xb')](_0x33470d,_0x10018d);}function getTicket(_0x156f8d,_0x45644d,_0x18459d,_0x4a71e0,_0x579835,_0x45a936,_0x49f612,_0x400a6c){var _0x16cb29=Object['assign']({},{'OwnerId':_0x45644d['id'],'Subject':intUtil[_0xb189('0xc')](_0x4a71e0[_0xb189('0xd')],_0x579835,'\x20'),'Description':intUtil[_0xb189('0xc')](_0x4a71e0[_0xb189('0xe')],_0x579835,'\x0a')},getCustomFields(_0x45a936,_0x579835));if(_0x18459d){if(_0x4a71e0[_0xb189('0xf')]===_0xb189('0x10')){_0x16cb29[_0xb189('0x11')]=moment[_0xb189('0x12')]();_0x16cb29['IsReminderSet']=![];_0x16cb29['IsRecurrence']=![];if(_0x18459d[_0xb189('0x13')]===_0xb189('0x14')||_0x18459d[_0xb189('0x13')]===_0xb189('0x15')){_0x16cb29[_0xb189('0x16')]=_0x18459d['id'];}else if(_0x18459d[_0xb189('0x13')]==='account'){_0x16cb29[_0xb189('0x17')]=_0x18459d['id'];}}else if(_0x4a71e0[_0xb189('0xf')]===_0xb189('0x18')){if(_0x18459d[_0xb189('0x13')]===_0xb189('0x14')){_0x16cb29['ContactId']=_0x18459d['id'];}else if(_0x18459d[_0xb189('0x13')]===_0xb189('0x19')){_0x16cb29[_0xb189('0x1a')]=_0x18459d['id'];}else if(_0x18459d['endUserType']===_0xb189('0x15')&&_0x4a71e0[_0xb189('0x1b')]){_0x16cb29[_0x4a71e0[_0xb189('0x1b')]]=_0x18459d['id'];}else{logger['info'](_0xb189('0x1c'));}}}return _0x49f612[_0xb189('0x1d')](_0x4a71e0[_0xb189('0xf')])[_0xb189('0x1e')](_0x16cb29);}function getUser(_0x2d8d6a,_0x581a39,_0x3465fe){if(!_[_0xb189('0x1f')](_0x581a39)&&intUtil['validateEmail'](_0x581a39)){var _0x51256d={'Email':_0x581a39};var _0x13c1f1={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3465fe['sobject'](_0xb189('0x20'))[_0xb189('0x21')](_0x51256d,_0x13c1f1)[_0xb189('0x22')]()[_0xb189('0x23')](function(_0x3c57cf){if(_0x3c57cf[_0xb189('0x24')]){var _0x7f1583=_['find'](_0x3c57cf,function(_0x4b3089){return _0x4b3089['Email']===_0x581a39;});if(_0x7f1583){logger[_0xb189('0x25')](_0xb189('0x26'),_0x581a39);return BPromise[_0xb189('0x27')]({'id':_0x7f1583['Id'],'name':_0x7f1583[_0xb189('0x28')]});}}else{logger[_0xb189('0x25')](_0xb189('0x29'),_0x581a39);return _0x3465fe[_0xb189('0x2a')]()[_0xb189('0x23')](function(_0x50d45b){return BPromise[_0xb189('0x27')]({'id':_0x50d45b[_0xb189('0x2b')],'name':_0x50d45b[_0xb189('0x2c')]});});}});}else{logger['info'](_0xb189('0x29'),_0x581a39);return _0x3465fe[_0xb189('0x2a')]()['then'](function(_0x11216b){return BPromise[_0xb189('0x27')]({'id':_0x11216b[_0xb189('0x2b')],'name':_0x11216b['display_name']});});}}function getEndUser(_0xdb6889,_0x1be43f,_0xb83e6e,_0x26a42a,_0x2fa77f){var _0x4f7055={'$or':{'Phone':_0x26a42a}};var _0x21b0b4={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xb189('0x23')](function(){logger[_0xb189('0x25')](_0xb189('0x2d'),_0x26a42a,_0x1be43f[_0xb189('0x2e')]);switch(_0x1be43f[_0xb189('0x2e')]){case _0xb189('0x2f'):var _0x2824b4=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f['additionalSearchContact']){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x31')]]=_0x26a42a;_['merge'](_0x2824b4[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')](_0xb189('0x33'))['find'](_0x2824b4,_0x21b0b4)['execute']()[_0xb189('0x23')](function(_0x573010){if(_0x573010&&_0x573010['length']){return _0x573010;}else{var _0x389b42=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x34')]){var _0xe47cb3={};_0xe47cb3[_0x1be43f[_0xb189('0x34')]]=_0x26a42a;_[_0xb189('0x35')](_0x389b42[_0xb189('0x32')],_0xe47cb3);}return _0x2fa77f[_0xb189('0x1d')]('Lead')[_0xb189('0x21')](_0x389b42,_0x21b0b4);}});case _0xb189('0x36'):var _0x54e712=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x37')]){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x37')]]=_0x26a42a;_[_0xb189('0x35')](_0x54e712[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f['sobject'](_0xb189('0x38'))[_0xb189('0x21')](_0x54e712,_0x21b0b4)[_0xb189('0x22')]()[_0xb189('0x23')](function(_0x561eb4){if(_0x561eb4&&_0x561eb4[_0xb189('0x24')]){return _0x561eb4;}else{var _0x3e659b=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f['additionalSearchContact']){var _0x119ba4={};_0x119ba4[_0x1be43f['additionalSearchContact']]=_0x26a42a;_[_0xb189('0x35')](_0x3e659b[_0xb189('0x32')],_0x119ba4);}return _0x2fa77f[_0xb189('0x1d')](_0xb189('0x33'))[_0xb189('0x21')](_0x3e659b,_0x21b0b4)[_0xb189('0x23')](function(_0x322dbd){if(_0x322dbd&&_0x322dbd[_0xb189('0x24')]){return _0x322dbd;}else{var _0x1752ba=_['cloneDeep'](_0x4f7055);if(_0x1be43f['additionalSearchLead']){var _0x397bc9={};_0x397bc9[_0x1be43f[_0xb189('0x34')]]=_0x26a42a;_['merge'](_0x1752ba[_0xb189('0x32')],_0x397bc9);}return _0x2fa77f[_0xb189('0x1d')]('Lead')['find'](_0x1752ba,_0x21b0b4);}});}});case _0xb189('0x14'):var _0x2824b4=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x31')]){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x31')]]=_0x26a42a;_[_0xb189('0x35')](_0x2824b4['$or'],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')](_0xb189('0x33'))[_0xb189('0x21')](_0x2824b4,_0x21b0b4)['execute']();case _0xb189('0x15'):var _0x23eac4=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x34')]){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x34')]]=_0x26a42a;_[_0xb189('0x35')](_0x23eac4[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')]('Lead')[_0xb189('0x21')](_0x23eac4,_0x21b0b4);case _0xb189('0x19'):var _0x54e712=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x37')]){var _0x5a8823={};_0x5a8823[_0x1be43f['additionalSearchAccount']]=_0x26a42a;_[_0xb189('0x35')](_0x54e712[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')]('Account')[_0xb189('0x21')](_0x54e712,_0x21b0b4);default:return null;}})['then'](function(_0x4d5531){if(_0x4d5531&&_0x4d5531[_0xb189('0x24')]){var _0x4685ca=_[_0xb189('0x39')](_0x4d5531);if(_0x4685ca){return BPromise['resolve']({'id':_0x4685ca['Id'],'name':_0x4685ca[_0xb189('0x28')],'phone':_0x4685ca[_0xb189('0x3a')],'endUserType':_0x4685ca[_0xb189('0x3b')]['type']['toLowerCase']()});}}})['then'](function(_0x2f555b){if(_0x2f555b){logger[_0xb189('0x25')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x2f555b[_0xb189('0x13')],_0x26a42a);return BPromise[_0xb189('0x27')](_0x2f555b);}else{logger[_0xb189('0x25')](_0xb189('0x3c'),_0x26a42a);var _0x1b8891={'Phone':_0x26a42a};if(_0x1be43f[_0xb189('0x3d')]){if(_0x1be43f[_0xb189('0x3d')]===_0xb189('0x14')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x26a42a,_0x1be43f[_0xb189('0x3d')]);_0x1b8891[_0xb189('0x3e')]=_0xb83e6e!==_0xb189('0x3f')?_0xb83e6e:util[_0xb189('0x40')](_0xb189('0x41'),_0x26a42a);}else if(_0x1be43f[_0xb189('0x3d')]===_0xb189('0x15')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x26a42a,_0x1be43f['moduleCreate']);_0x1b8891['LastName']=_0xb83e6e!==_0xb189('0x3f')?_0xb83e6e:util['format'](_0xb189('0x41'),_0x26a42a);_0x1b8891[_0xb189('0x42')]='No\x20Company';}else if(_0x1be43f[_0xb189('0x3d')]===_0xb189('0x19')){logger[_0xb189('0x25')](_0xb189('0x43'),_0x26a42a,_0x1be43f[_0xb189('0x3d')]);_0x1b8891['Name']=_0xb83e6e!==_0xb189('0x3f')?_0xb83e6e:util[_0xb189('0x40')](_0xb189('0x41'),_0x26a42a);}else{return null;}}return _0x2fa77f[_0xb189('0x1d')](_[_0xb189('0x44')](_0x1be43f['moduleCreate']))['create'](_0x1b8891)[_0xb189('0x23')](function(_0x3a34a8){return BPromise[_0xb189('0x27')]({'id':_0x3a34a8['id'],'endUserType':_0x1be43f['moduleCreate']});});}});}function getCustomFields(_0x7d5008,_0x2e5aef){var _0x355dbc={};if(_0x7d5008['length']>0x0){_[_0xb189('0x45')](_0x7d5008,function(_0x56cde4){if(_[_0xb189('0x46')]([_0xb189('0x47'),_0xb189('0x48')],_0x56cde4['type'])&&_0x56cde4[_0xb189('0x49')]){_0x355dbc[_0x56cde4[_0xb189('0x49')]]=_0x56cde4[_0xb189('0x4a')]['toString']();}else if(_0x56cde4['type']===_0xb189('0x4b')&&_0x56cde4[_0xb189('0x4c')]&&_0x56cde4[_0xb189('0x49')]){_0x2e5aef[_0x56cde4[_0xb189('0x4c')]]&&(_0x355dbc[_0x56cde4[_0xb189('0x49')]]=_0x2e5aef[_0x56cde4[_0xb189('0x4c')]][_0xb189('0x4d')]());}else if(_0x56cde4[_0xb189('0x4e')]===_0xb189('0x4f')&&_0x56cde4[_0xb189('0x50')]&&_0x56cde4[_0xb189('0x50')]['name']&&_0x56cde4[_0xb189('0x49')]){_0x2e5aef[_0x56cde4[_0xb189('0x50')][_0xb189('0x51')]['toLowerCase']()]&&(_0x355dbc[_0x56cde4[_0xb189('0x49')]]=_0x2e5aef[_0x56cde4[_0xb189('0x50')][_0xb189('0x51')]['toLowerCase']()][_0xb189('0x4d')]());}});}return _0x355dbc;}function getConnection(_0x45945d){var _0x130582=_0x45945d[_0xb189('0x52')][_0xb189('0x53')](_0x45945d[_0xb189('0x54')]);var _0x143a47=new jsforce[(_0xb189('0x55'))]({'oauth2':{'loginUrl':_0x45945d['remoteUri']||_0xb189('0x56'),'clientId':_0x45945d[_0xb189('0x57')],'clientSecret':_0x45945d[_0xb189('0x58')]}});return _0x143a47[_0xb189('0x59')](_0x45945d[_0xb189('0x5a')],_0x130582)[_0xb189('0x23')](function(){logger[_0xb189('0x25')](_0xb189('0x5b'));return _0x143a47;});}exports['queue']=function(_0x56d01c,_0x23408c,_0x4248d5,_0x551174,_0x9a9818,_0x5936b9){var _0x39a28c,_0x2f833f,_0x5c92ee,_0xf5c95e;_0x5936b9[_0xb189('0x5c')]=intUtil['stripTrailingSlash'](_0x5936b9[_0xb189('0x5c')]);_0x5936b9[_0xb189('0x5d')]=intUtil[_0xb189('0x5e')](_0x5936b9['remoteUri']);if(_0x9a9818&&_0x9a9818['monitor_format']){logger[_0xb189('0x25')](_0xb189('0x5f'),_0xb189('0x60'));_0x23408c[_0xb189('0x61')]=util[_0xb189('0x40')](_0xb189('0x62'),_0x5936b9[_0xb189('0x5c')],_0x23408c[_0xb189('0x63')],md5(_0x23408c[_0xb189('0x63')]));}else{_0x23408c['recordingURL']='';}return getConnection(_0x5936b9)[_0xb189('0x23')](function(_0x2a2069){_0xf5c95e=_0x2a2069;return getUser(_0x5936b9,_0x551174[_0xb189('0x64')],_0xf5c95e);})[_0xb189('0x23')](function(_0x1f6d0d){_0x39a28c=_0x1f6d0d;return getEndUser(_0x5936b9,_0x4248d5,_0x23408c['calleridname'],_0x23408c[_0xb189('0x65')],_0xf5c95e);})[_0xb189('0x23')](function(_0x1ddd02){_0x2f833f=_0x1ddd02;return getTicket(_0x5936b9,_0x39a28c,_0x2f833f,_0x4248d5,_0x23408c,_0x4248d5[_0xb189('0x66')],_0xf5c95e,'queue');})['then'](function(_0x6fa661){_0x5c92ee=_0x6fa661;logger['info'](_0xb189('0x67'),_0x5c92ee['id']);logger[_0xb189('0x25')](_0xb189('0x68'),_0x5c92ee['id'],_0x551174[_0xb189('0x51')],_0x5936b9[_0xb189('0x4e')]);switch(_0x5936b9['type']){case _0xb189('0x69'):emit(util[_0xb189('0x40')](_0xb189('0x6a'),_0x551174[_0xb189('0x51')]),_0xb189('0x6b'),{'recordId':_0x5c92ee['id']});break;case'newTab':emit(util['format']('user:%s',_0x551174['name']),_0xb189('0x6c'),{'uri':util['format']('%s/%s/e',_0xf5c95e[_0xb189('0x6d')],_0x5c92ee['id'])});break;default:logger[_0xb189('0x6e')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0xb189('0x6f')](function(_0x1b33ca){logger[_0xb189('0x6e')](_0xb189('0x5f'),_0x1b33ca);});};exports[_0xb189('0x70')]=function(_0xe5b262,_0x2dd01c,_0x269a07,_0x23d3f6,_0x4a5e41,_0x5b5979,_0x432cff){var _0x27059e,_0x58efef,_0x1f3dfe,_0x4b9f16;_0x5b5979[_0xb189('0x5c')]=intUtil[_0xb189('0x5e')](_0x5b5979[_0xb189('0x5c')]);_0x5b5979[_0xb189('0x5d')]=intUtil[_0xb189('0x5e')](_0x5b5979[_0xb189('0x5d')]);if(_0x432cff&&_0x432cff[_0xb189('0x71')]&&_0x432cff[_0xb189('0x71')]!==_0xb189('0x72')){logger[_0xb189('0x25')](_0xb189('0x73'),_0xb189('0x60'));_0x2dd01c[_0xb189('0x61')]=util[_0xb189('0x40')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b5979[_0xb189('0x5c')],_0x2dd01c[_0xb189('0x63')],md5(_0x2dd01c['uniqueid']));}return getConnection(_0x5b5979)[_0xb189('0x23')](function(_0x2fe0ed){_0x4b9f16=_0x2fe0ed;return getUser(_0x5b5979,_0x23d3f6[_0xb189('0x64')],_0x4b9f16);})[_0xb189('0x23')](function(_0x288717){_0x27059e=_0x288717;return getEndUser(_0x5b5979,_0x269a07,_0x2dd01c[_0xb189('0x74')],_0x2dd01c[_0xb189('0x75')],_0x4b9f16);})[_0xb189('0x23')](function(_0x21d792){_0x58efef=_0x21d792;return getTicket(_0x5b5979,_0x27059e,_0x58efef,_0x269a07,_0x2dd01c,_0x269a07[_0xb189('0x66')],_0x4b9f16,_0xb189('0x70'));})[_0xb189('0x23')](function(_0x38b392){_0x1f3dfe=_0x38b392;logger[_0xb189('0x25')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x1f3dfe['id']);logger[_0xb189('0x25')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x1f3dfe['id'],_0x23d3f6[_0xb189('0x51')],_0x5b5979[_0xb189('0x4e')]);switch(_0x5b5979[_0xb189('0x4e')]){case _0xb189('0x69'):emit(util[_0xb189('0x40')](_0xb189('0x6a'),_0x23d3f6['name']),_0xb189('0x6b'),{'recordId':_0x1f3dfe['id']});break;case _0xb189('0x76'):emit(util[_0xb189('0x40')](_0xb189('0x6a'),_0x23d3f6['name']),'trigger:browser:url',{'uri':util[_0xb189('0x40')](_0xb189('0x77'),_0x4b9f16[_0xb189('0x6d')],_0x1f3dfe['id'])});break;default:logger['error'](_0xb189('0x73'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0xb189('0x6f')](function(_0x2a0ff8){logger[_0xb189('0x6e')](_0xb189('0x73'),_0x2a0ff8);});};exports[_0xb189('0x78')]=function(_0x4e9d8d,_0x452eba,_0xb6c5da,_0x58cde7,_0x10e93d,_0x4b9a91){var _0x59e2dd,_0x17319d,_0x18fdaa,_0x322783;_0x4b9a91['serverUrl']=intUtil['stripTrailingSlash'](_0x4b9a91[_0xb189('0x5c')]);_0x4b9a91[_0xb189('0x5d')]=intUtil[_0xb189('0x5e')](_0x4b9a91[_0xb189('0x5d')]);if(_0x10e93d&&_0x10e93d[_0xb189('0x79')]){logger[_0xb189('0x25')]('['+_0x452eba[_0xb189('0x7a')][_0xb189('0x7b')]()+']','Recording\x20is\x20enabled!');_0x452eba[_0xb189('0x61')]=util[_0xb189('0x40')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4b9a91['serverUrl'],_0x452eba[_0xb189('0x63')],md5(_0x452eba[_0xb189('0x63')]));}else{_0x452eba[_0xb189('0x61')]='';}return getConnection(_0x4b9a91)[_0xb189('0x23')](function(_0x3c663f){_0x322783=_0x3c663f;if(!_[_0xb189('0x1f')](_0x58cde7)){return getUser(_0x4b9a91,_0x58cde7[_0xb189('0x51')],_0x322783);}else{return getUser(_0x4b9a91,null,_0x322783);}})['then'](function(_0x10f60e){_0x59e2dd=_0x10f60e;return getEndUser(_0x4b9a91,_0xb6c5da,_0x452eba[_0xb189('0x7c')],_0x452eba[_0xb189('0x65')],_0x322783);})['then'](function(_0x176768){_0x17319d=_0x176768;return getTicket(_0x4b9a91,_0x59e2dd,_0x17319d,_0xb6c5da,_0x452eba,_0xb6c5da['Fields'],_0x322783);})[_0xb189('0x23')](function(_0x519f16){_0x18fdaa=_0x519f16;logger[_0xb189('0x25')]('['+_0x452eba[_0xb189('0x7a')][_0xb189('0x7b')]()+_0xb189('0x7d'),_0x18fdaa['id']);logger[_0xb189('0x25')]('['+_0x452eba['lastevent'][_0xb189('0x7b')]()+_0xb189('0x7e'),_0x4b9a91[_0xb189('0x4e')]);})[_0xb189('0x6f')](function(_0x55bbe5){logger[_0xb189('0x6e')]('['+_0x452eba[_0xb189('0x7a')][_0xb189('0x7b')]()+']',_0x55bbe5);});};
\ No newline at end of file
+var _0x04af=['attributes','type','toLowerCase','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','forEach','includes','string','picklist','idField','content','toString','variableName','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','username','stripTrailingSlash','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','calleridname','Fields','queue','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','user:%s','newTab','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','[QUEUE]','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','destcalleridname','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','calleridnum',']\x20Ticket\x20%s\x20created.','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','bluebird','md5','jsforce','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','emit','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','isNil','validateEmail','sobject','User','execute','length','find','Email','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','then','resolve','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','first','Phone'];(function(_0xc3050a,_0x3f50b5){var _0x433e7a=function(_0x1fd962){while(--_0x1fd962){_0xc3050a['push'](_0xc3050a['shift']());}};_0x433e7a(++_0x3f50b5);}(_0x04af,0xc3));var _0xf04a=function(_0x156f57,_0x1d29fb){_0x156f57=_0x156f57-0x0;var _0x118f5f=_0x04af[_0x156f57];return _0x118f5f;};'use strict';var _=require(_0xf04a('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf04a('0x1'));var md5=require(_0xf04a('0x2'));var jsforce=require(_0xf04a('0x3'));var util=require('util');var Redis=require(_0xf04a('0x4'));var intUtil=require(_0xf04a('0x5'));var config=require(_0xf04a('0x6'));var logger=require('../../../../config/logger')(_0xf04a('0x7'));config[_0xf04a('0x8')]=_[_0xf04a('0x9')](config[_0xf04a('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf04a('0x8')]));function emit(_0x30224e,_0x343486,_0x56efc2){io['to'](_0x30224e)[_0xf04a('0xa')](_0x343486,_0x56efc2);}function getTicket(_0x16b88f,_0x18013f,_0x5da6a0,_0x1b510b,_0x4a4e1b,_0x4c1664,_0x4d52c9,_0x44093a){var _0x4ac0a8=Object['assign']({},{'OwnerId':_0x18013f['id'],'Subject':intUtil[_0xf04a('0xb')](_0x1b510b[_0xf04a('0xc')],_0x4a4e1b,'\x20'),'Description':intUtil[_0xf04a('0xb')](_0x1b510b[_0xf04a('0xd')],_0x4a4e1b,'\x0a')},getCustomFields(_0x4c1664,_0x4a4e1b));if(_0x5da6a0){if(_0x1b510b[_0xf04a('0xe')]===_0xf04a('0xf')){_0x4ac0a8[_0xf04a('0x10')]=moment[_0xf04a('0x11')]();_0x4ac0a8[_0xf04a('0x12')]=![];_0x4ac0a8[_0xf04a('0x13')]=![];if(_0x5da6a0[_0xf04a('0x14')]===_0xf04a('0x15')||_0x5da6a0['endUserType']===_0xf04a('0x16')){_0x4ac0a8['WhoId']=_0x5da6a0['id'];}else if(_0x5da6a0[_0xf04a('0x14')]===_0xf04a('0x17')){_0x4ac0a8[_0xf04a('0x18')]=_0x5da6a0['id'];}}else if(_0x1b510b[_0xf04a('0xe')]===_0xf04a('0x19')){if(_0x5da6a0[_0xf04a('0x14')]===_0xf04a('0x15')){_0x4ac0a8[_0xf04a('0x1a')]=_0x5da6a0['id'];}else if(_0x5da6a0['endUserType']===_0xf04a('0x17')){_0x4ac0a8[_0xf04a('0x1b')]=_0x5da6a0['id'];}else if(_0x5da6a0['endUserType']===_0xf04a('0x16')&&_0x1b510b[_0xf04a('0x1c')]){_0x4ac0a8[_0x1b510b[_0xf04a('0x1c')]]=_0x5da6a0['id'];}else{logger[_0xf04a('0x1d')](_0xf04a('0x1e'));}}}return _0x4d52c9['sobject'](_0x1b510b[_0xf04a('0xe')])[_0xf04a('0x1f')](_0x4ac0a8);}function getUser(_0x3f37b3,_0x53ead6,_0x26c421){if(!_[_0xf04a('0x20')](_0x53ead6)&&intUtil[_0xf04a('0x21')](_0x53ead6)){var _0x89cf49={'Email':_0x53ead6};var _0x3539a8={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x26c421[_0xf04a('0x22')](_0xf04a('0x23'))['find'](_0x89cf49,_0x3539a8)[_0xf04a('0x24')]()['then'](function(_0xc89d6){if(_0xc89d6[_0xf04a('0x25')]){var _0x83d55a=_[_0xf04a('0x26')](_0xc89d6,function(_0x2ca401){return _0x2ca401[_0xf04a('0x27')]===_0x53ead6;});if(_0x83d55a){logger[_0xf04a('0x1d')](_0xf04a('0x28'),_0x53ead6);return BPromise['resolve']({'id':_0x83d55a['Id'],'name':_0x83d55a[_0xf04a('0x29')]});}}else{logger['info'](_0xf04a('0x2a'),_0x53ead6);return _0x26c421[_0xf04a('0x2b')]()[_0xf04a('0x2c')](function(_0x5e5bd3){return BPromise[_0xf04a('0x2d')]({'id':_0x5e5bd3[_0xf04a('0x2e')],'name':_0x5e5bd3[_0xf04a('0x2f')]});});}});}else{logger[_0xf04a('0x1d')](_0xf04a('0x2a'),_0x53ead6);return _0x26c421[_0xf04a('0x2b')]()[_0xf04a('0x2c')](function(_0xe8ca5e){return BPromise[_0xf04a('0x2d')]({'id':_0xe8ca5e[_0xf04a('0x2e')],'name':_0xe8ca5e['display_name']});});}}function getEndUser(_0x4f2ed7,_0x56035d,_0x241c06,_0x2a5df1,_0x1c767b){var _0x39a4fa={'$or':{'Phone':_0x2a5df1}};var _0x25a97e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xf04a('0x2c')](function(){logger[_0xf04a('0x1d')](_0xf04a('0x30'),_0x2a5df1,_0x56035d[_0xf04a('0x31')]);switch(_0x56035d[_0xf04a('0x31')]){case _0xf04a('0x32'):var _0x5913a5=_[_0xf04a('0x33')](_0x39a4fa);if(_0x56035d[_0xf04a('0x34')]){var _0x5e912c={};_0x5e912c[_0x56035d[_0xf04a('0x34')]]=_0x2a5df1;_[_0xf04a('0x35')](_0x5913a5[_0xf04a('0x36')],_0x5e912c);}return _0x1c767b[_0xf04a('0x22')](_0xf04a('0x37'))[_0xf04a('0x26')](_0x5913a5,_0x25a97e)[_0xf04a('0x24')]()[_0xf04a('0x2c')](function(_0x59fd68){if(_0x59fd68&&_0x59fd68[_0xf04a('0x25')]){return _0x59fd68;}else{var _0x22f49e=_[_0xf04a('0x33')](_0x39a4fa);if(_0x56035d[_0xf04a('0x38')]){var _0x38f968={};_0x38f968[_0x56035d['additionalSearchLead']]=_0x2a5df1;_[_0xf04a('0x35')](_0x22f49e['$or'],_0x38f968);}return _0x1c767b[_0xf04a('0x22')](_0xf04a('0x39'))[_0xf04a('0x26')](_0x22f49e,_0x25a97e);}});case _0xf04a('0x3a'):var _0x4f0c02=_[_0xf04a('0x33')](_0x39a4fa);if(_0x56035d[_0xf04a('0x3b')]){var _0x5e912c={};_0x5e912c[_0x56035d['additionalSearchAccount']]=_0x2a5df1;_['merge'](_0x4f0c02[_0xf04a('0x36')],_0x5e912c);}return _0x1c767b[_0xf04a('0x22')](_0xf04a('0x3c'))[_0xf04a('0x26')](_0x4f0c02,_0x25a97e)['execute']()[_0xf04a('0x2c')](function(_0x21ae78){if(_0x21ae78&&_0x21ae78['length']){return _0x21ae78;}else{var _0xb315b1=_['cloneDeep'](_0x39a4fa);if(_0x56035d[_0xf04a('0x34')]){var _0x3eda0a={};_0x3eda0a[_0x56035d[_0xf04a('0x34')]]=_0x2a5df1;_[_0xf04a('0x35')](_0xb315b1[_0xf04a('0x36')],_0x3eda0a);}return _0x1c767b[_0xf04a('0x22')](_0xf04a('0x37'))[_0xf04a('0x26')](_0xb315b1,_0x25a97e)[_0xf04a('0x2c')](function(_0x2d426d){if(_0x2d426d&&_0x2d426d[_0xf04a('0x25')]){return _0x2d426d;}else{var _0x33f7dc=_[_0xf04a('0x33')](_0x39a4fa);if(_0x56035d[_0xf04a('0x38')]){var _0x58d57c={};_0x58d57c[_0x56035d[_0xf04a('0x38')]]=_0x2a5df1;_[_0xf04a('0x35')](_0x33f7dc[_0xf04a('0x36')],_0x58d57c);}return _0x1c767b['sobject'](_0xf04a('0x39'))[_0xf04a('0x26')](_0x33f7dc,_0x25a97e);}});}});case _0xf04a('0x15'):var _0x5913a5=_[_0xf04a('0x33')](_0x39a4fa);if(_0x56035d[_0xf04a('0x34')]){var _0x5e912c={};_0x5e912c[_0x56035d[_0xf04a('0x34')]]=_0x2a5df1;_['merge'](_0x5913a5[_0xf04a('0x36')],_0x5e912c);}return _0x1c767b[_0xf04a('0x22')](_0xf04a('0x37'))[_0xf04a('0x26')](_0x5913a5,_0x25a97e)[_0xf04a('0x24')]();case _0xf04a('0x16'):var _0x86c76c=_[_0xf04a('0x33')](_0x39a4fa);if(_0x56035d[_0xf04a('0x38')]){var _0x5e912c={};_0x5e912c[_0x56035d[_0xf04a('0x38')]]=_0x2a5df1;_[_0xf04a('0x35')](_0x86c76c[_0xf04a('0x36')],_0x5e912c);}return _0x1c767b['sobject']('Lead')['find'](_0x86c76c,_0x25a97e);case _0xf04a('0x17'):var _0x4f0c02=_['cloneDeep'](_0x39a4fa);if(_0x56035d['additionalSearchAccount']){var _0x5e912c={};_0x5e912c[_0x56035d[_0xf04a('0x3b')]]=_0x2a5df1;_[_0xf04a('0x35')](_0x4f0c02['$or'],_0x5e912c);}return _0x1c767b[_0xf04a('0x22')](_0xf04a('0x3c'))[_0xf04a('0x26')](_0x4f0c02,_0x25a97e);default:return null;}})['then'](function(_0x236434){if(_0x236434&&_0x236434[_0xf04a('0x25')]){var _0x4b1d08=_[_0xf04a('0x3d')](_0x236434);if(_0x4b1d08){return BPromise[_0xf04a('0x2d')]({'id':_0x4b1d08['Id'],'name':_0x4b1d08[_0xf04a('0x29')],'phone':_0x4b1d08[_0xf04a('0x3e')],'endUserType':_0x4b1d08[_0xf04a('0x3f')][_0xf04a('0x40')][_0xf04a('0x41')]()});}}})[_0xf04a('0x2c')](function(_0x14061f){if(_0x14061f){logger[_0xf04a('0x1d')](_0xf04a('0x42'),_0x14061f['endUserType'],_0x2a5df1);return BPromise['resolve'](_0x14061f);}else{logger[_0xf04a('0x1d')](_0xf04a('0x43'),_0x2a5df1);var _0x52b799={'Phone':_0x2a5df1};if(_0x56035d[_0xf04a('0x44')]){if(_0x56035d['moduleCreate']===_0xf04a('0x15')){logger[_0xf04a('0x1d')](_0xf04a('0x45'),_0x2a5df1,_0x56035d['moduleCreate']);_0x52b799[_0xf04a('0x46')]=_0x241c06!==_0xf04a('0x47')?_0x241c06:util['format']('Caller\x20-\x20%s',_0x2a5df1);}else if(_0x56035d[_0xf04a('0x44')]===_0xf04a('0x16')){logger[_0xf04a('0x1d')](_0xf04a('0x45'),_0x2a5df1,_0x56035d[_0xf04a('0x44')]);_0x52b799['LastName']=_0x241c06!=='<unknown>'?_0x241c06:util[_0xf04a('0x48')](_0xf04a('0x49'),_0x2a5df1);_0x52b799[_0xf04a('0x4a')]=_0xf04a('0x4b');}else if(_0x56035d[_0xf04a('0x44')]===_0xf04a('0x17')){logger[_0xf04a('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x2a5df1,_0x56035d[_0xf04a('0x44')]);_0x52b799['Name']=_0x241c06!==_0xf04a('0x47')?_0x241c06:util[_0xf04a('0x48')]('Caller\x20-\x20%s',_0x2a5df1);}else{return null;}}return _0x1c767b[_0xf04a('0x22')](_['upperFirst'](_0x56035d['moduleCreate']))[_0xf04a('0x1f')](_0x52b799)[_0xf04a('0x2c')](function(_0x1a4d38){return BPromise[_0xf04a('0x2d')]({'id':_0x1a4d38['id'],'endUserType':_0x56035d[_0xf04a('0x44')]});});}});}function getCustomFields(_0x3f7a24,_0x1c5c4d){var _0xd693eb={};if(_0x3f7a24[_0xf04a('0x25')]>0x0){_[_0xf04a('0x4c')](_0x3f7a24,function(_0x2dee02){if(_[_0xf04a('0x4d')]([_0xf04a('0x4e'),_0xf04a('0x4f')],_0x2dee02[_0xf04a('0x40')])&&_0x2dee02[_0xf04a('0x50')]){_0xd693eb[_0x2dee02[_0xf04a('0x50')]]=_0x2dee02[_0xf04a('0x51')][_0xf04a('0x52')]();}else if(_0x2dee02[_0xf04a('0x40')]==='variable'&&_0x2dee02[_0xf04a('0x53')]&&_0x2dee02[_0xf04a('0x50')]){_0x1c5c4d[_0x2dee02[_0xf04a('0x53')]]&&(_0xd693eb[_0x2dee02[_0xf04a('0x50')]]=_0x1c5c4d[_0x2dee02[_0xf04a('0x53')]][_0xf04a('0x52')]());}else if(_0x2dee02[_0xf04a('0x40')]==='customVariable'&&_0x2dee02[_0xf04a('0x54')]&&_0x2dee02[_0xf04a('0x54')]['name']&&_0x2dee02[_0xf04a('0x50')]){_0x1c5c4d[_0x2dee02['Variable'][_0xf04a('0x55')][_0xf04a('0x41')]()]&&(_0xd693eb[_0x2dee02['idField']]=_0x1c5c4d[_0x2dee02[_0xf04a('0x54')][_0xf04a('0x55')]['toLowerCase']()][_0xf04a('0x52')]());}});}return _0xd693eb;}function getConnection(_0x4dd87a){var _0x2a19f7=_0x4dd87a[_0xf04a('0x56')][_0xf04a('0x57')](_0x4dd87a[_0xf04a('0x58')]);var _0x541c36=new jsforce[(_0xf04a('0x59'))]({'oauth2':{'loginUrl':_0x4dd87a[_0xf04a('0x5a')]||_0xf04a('0x5b'),'clientId':_0x4dd87a[_0xf04a('0x5c')],'clientSecret':_0x4dd87a[_0xf04a('0x5d')]}});return _0x541c36['login'](_0x4dd87a[_0xf04a('0x5e')],_0x2a19f7)['then'](function(){logger[_0xf04a('0x1d')]('Connection\x20established.');return _0x541c36;});}exports['queue']=function(_0x4f3d29,_0x39867b,_0x4f28e3,_0x1708aa,_0xf17e17,_0x364969){var _0x4681c5,_0x5ed84e,_0x2ef816,_0x14416b;_0x364969['serverUrl']=intUtil[_0xf04a('0x5f')](_0x364969['serverUrl']);_0x364969[_0xf04a('0x5a')]=intUtil[_0xf04a('0x5f')](_0x364969[_0xf04a('0x5a')]);if(_0xf17e17&&_0xf17e17['monitor_format']){logger[_0xf04a('0x1d')]('[QUEUE]','Recording\x20is\x20enabled!');_0x39867b[_0xf04a('0x60')]=util[_0xf04a('0x48')](_0xf04a('0x61'),_0x364969[_0xf04a('0x62')],_0x39867b[_0xf04a('0x63')],md5(_0x39867b['uniqueid']));}else{_0x39867b[_0xf04a('0x60')]='';}return getConnection(_0x364969)[_0xf04a('0x2c')](function(_0x356cdc){_0x14416b=_0x356cdc;return getUser(_0x364969,_0x1708aa['email'],_0x14416b);})[_0xf04a('0x2c')](function(_0x363071){_0x4681c5=_0x363071;return getEndUser(_0x364969,_0x4f28e3,_0x39867b[_0xf04a('0x64')],_0x39867b['calleridnum'],_0x14416b);})[_0xf04a('0x2c')](function(_0x11568e){_0x5ed84e=_0x11568e;return getTicket(_0x364969,_0x4681c5,_0x5ed84e,_0x4f28e3,_0x39867b,_0x4f28e3[_0xf04a('0x65')],_0x14416b,_0xf04a('0x66'));})['then'](function(_0x34f710){_0x2ef816=_0x34f710;logger['info'](_0xf04a('0x67'),_0x2ef816['id']);logger[_0xf04a('0x1d')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x2ef816['id'],_0x1708aa[_0xf04a('0x55')],_0x364969[_0xf04a('0x40')]);switch(_0x364969[_0xf04a('0x40')]){case _0xf04a('0x68'):emit(util['format'](_0xf04a('0x69'),_0x1708aa['name']),'trigger:salesforce:display',{'recordId':_0x2ef816['id']});break;case _0xf04a('0x6a'):emit(util[_0xf04a('0x48')]('user:%s',_0x1708aa[_0xf04a('0x55')]),'trigger:browser:url',{'uri':util[_0xf04a('0x48')](_0xf04a('0x6b'),_0x14416b['instanceUrl'],_0x2ef816['id'])});break;default:logger[_0xf04a('0x6c')](_0xf04a('0x6d'));}})['catch'](function(_0x19f642){logger[_0xf04a('0x6c')](_0xf04a('0x6e'),_0x19f642);});};exports['outbound']=function(_0x2461e7,_0x2a6508,_0x4ed75e,_0x2b583c,_0x4f7684,_0x4202c3,_0x2d8ccd){var _0x253e74,_0x2a54d4,_0x156817,_0x1a0bb4;_0x4202c3['serverUrl']=intUtil[_0xf04a('0x5f')](_0x4202c3[_0xf04a('0x62')]);_0x4202c3[_0xf04a('0x5a')]=intUtil[_0xf04a('0x5f')](_0x4202c3[_0xf04a('0x5a')]);if(_0x2d8ccd&&_0x2d8ccd['recordingFormat']&&_0x2d8ccd[_0xf04a('0x6f')]!==_0xf04a('0x70')){logger[_0xf04a('0x1d')](_0xf04a('0x71'),_0xf04a('0x72'));_0x2a6508['recordingURL']=util[_0xf04a('0x48')](_0xf04a('0x61'),_0x4202c3[_0xf04a('0x62')],_0x2a6508[_0xf04a('0x63')],md5(_0x2a6508[_0xf04a('0x63')]));}return getConnection(_0x4202c3)[_0xf04a('0x2c')](function(_0x2926d4){_0x1a0bb4=_0x2926d4;return getUser(_0x4202c3,_0x2b583c[_0xf04a('0x73')],_0x1a0bb4);})[_0xf04a('0x2c')](function(_0x446426){_0x253e74=_0x446426;return getEndUser(_0x4202c3,_0x4ed75e,_0x2a6508[_0xf04a('0x74')],_0x2a6508['destcalleridnum'],_0x1a0bb4);})[_0xf04a('0x2c')](function(_0xadc0b){_0x2a54d4=_0xadc0b;return getTicket(_0x4202c3,_0x253e74,_0x2a54d4,_0x4ed75e,_0x2a6508,_0x4ed75e['Fields'],_0x1a0bb4,_0xf04a('0x75'));})[_0xf04a('0x2c')](function(_0x3102a7){_0x156817=_0x3102a7;logger['info'](_0xf04a('0x76'),_0x156817['id']);logger['info'](_0xf04a('0x77'),_0x156817['id'],_0x2b583c[_0xf04a('0x55')],_0x4202c3[_0xf04a('0x40')]);switch(_0x4202c3[_0xf04a('0x40')]){case _0xf04a('0x68'):emit(util[_0xf04a('0x48')](_0xf04a('0x69'),_0x2b583c['name']),'trigger:salesforce:display',{'recordId':_0x156817['id']});break;case _0xf04a('0x6a'):emit(util[_0xf04a('0x48')](_0xf04a('0x69'),_0x2b583c[_0xf04a('0x55')]),'trigger:browser:url',{'uri':util['format'](_0xf04a('0x6b'),_0x1a0bb4[_0xf04a('0x78')],_0x156817['id'])});break;default:logger[_0xf04a('0x6c')](_0xf04a('0x71'),_0xf04a('0x79'));}})[_0xf04a('0x7a')](function(_0x20c5be){logger[_0xf04a('0x6c')](_0xf04a('0x71'),_0x20c5be);});};exports[_0xf04a('0x7b')]=function(_0x41a0c4,_0x1cf133,_0x1eb4d1,_0x83794e,_0x446001,_0x3ae308){var _0x4c61eb,_0x560cf9,_0x48e6ca,_0x14dee6;_0x3ae308[_0xf04a('0x62')]=intUtil['stripTrailingSlash'](_0x3ae308[_0xf04a('0x62')]);_0x3ae308[_0xf04a('0x5a')]=intUtil[_0xf04a('0x5f')](_0x3ae308[_0xf04a('0x5a')]);if(_0x446001&&_0x446001['monitor_format']){logger[_0xf04a('0x1d')]('['+_0x1cf133[_0xf04a('0x7c')]['toUpperCase']()+']',_0xf04a('0x72'));_0x1cf133[_0xf04a('0x60')]=util[_0xf04a('0x48')](_0xf04a('0x61'),_0x3ae308[_0xf04a('0x62')],_0x1cf133[_0xf04a('0x63')],md5(_0x1cf133[_0xf04a('0x63')]));}else{_0x1cf133[_0xf04a('0x60')]='';}return getConnection(_0x3ae308)[_0xf04a('0x2c')](function(_0x4917be){_0x14dee6=_0x4917be;if(!_[_0xf04a('0x20')](_0x83794e)){return getUser(_0x3ae308,_0x83794e[_0xf04a('0x55')],_0x14dee6);}else{return getUser(_0x3ae308,null,_0x14dee6);}})[_0xf04a('0x2c')](function(_0x87deb6){_0x4c61eb=_0x87deb6;return getEndUser(_0x3ae308,_0x1eb4d1,_0x1cf133['calleridname'],_0x1cf133[_0xf04a('0x7d')],_0x14dee6);})[_0xf04a('0x2c')](function(_0x58d353){_0x560cf9=_0x58d353;return getTicket(_0x3ae308,_0x4c61eb,_0x560cf9,_0x1eb4d1,_0x1cf133,_0x1eb4d1['Fields'],_0x14dee6);})[_0xf04a('0x2c')](function(_0x6a3d29){_0x48e6ca=_0x6a3d29;logger[_0xf04a('0x1d')]('['+_0x1cf133['lastevent']['toUpperCase']()+_0xf04a('0x7e'),_0x48e6ca['id']);logger[_0xf04a('0x1d')]('['+_0x1cf133['lastevent'][_0xf04a('0x7f')]()+_0xf04a('0x80'),_0x3ae308['type']);})[_0xf04a('0x7a')](function(_0x2dc4dd){logger[_0xf04a('0x6c')]('['+_0x1cf133[_0xf04a('0x7c')][_0xf04a('0x7f')]()+']',_0x2dc4dd);});};
\ No newline at end of file
index 3902466..14f6a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2acc=['],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','active','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','true','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','customField','toString','string','type','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','endUserId','incident','getString','Subjects','Fields','ticketId','number','label','?sysparm_query=name%3D','Incident','Incident\x20-\x20','ticketNumber','push','all','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','outbound','calleridnum','callDirection','queue','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','result','length','adminId','sys_id','info'];(function(_0x115f49,_0x4c1a10){var _0x18fe4f=function(_0x43b550){while(--_0x43b550){_0x115f49['push'](_0x115f49['shift']());}};_0x18fe4f(++_0x4c1a10);}(_0x2acc,0x199));var _0xc2ac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2acc[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc2ac('0x0'));var Promise=require(_0xc2ac('0x1'));var rp=require(_0xc2ac('0x2'));var util=require(_0xc2ac('0x3'));var md5=require(_0xc2ac('0x4'));var Redis=require(_0xc2ac('0x5'));var intUtil=require(_0xc2ac('0x6'));var config=require('../../../../config/environment');var logger=require(_0xc2ac('0x7'))(_0xc2ac('0x8'));config[_0xc2ac('0x9')]=_[_0xc2ac('0xa')](config['redis'],{'host':_0xc2ac('0xb'),'port':0x18eb});var io=require(_0xc2ac('0xc'))(new Redis(config[_0xc2ac('0x9')]));function getAdminUser(_0x4ca5b2,_0xbfd006,_0x3f40a5,_0x53f858,_0x36f8ef,_0x116cae){return new Promise(function(_0x51b3e2,_0x3382a5){var _0x489568={'method':_0xc2ac('0xd'),'uri':_0x53f858+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x36f8ef+'&'+_0x116cae,'auth':_0xbfd006,'json':!![]};return rp(_0x489568)['then'](function(_0x4cd33b){if(_0x4cd33b[_0xc2ac('0xe')][_0xc2ac('0xf')]>0x0){_0x3f40a5[_0xc2ac('0x10')]=_0x4cd33b[_0xc2ac('0xe')][0x0][_0xc2ac('0x11')];}logger[_0xc2ac('0x12')]('['+[_0x4ca5b2['toUpperCase']()]+_0xc2ac('0x13'),_0x3f40a5);_0x51b3e2(_0x3f40a5);})[_0xc2ac('0x14')](function(_0x13725f){logger[_0xc2ac('0x15')]('['+[_0x4ca5b2['toUpperCase']()]+']',_0x13725f[_0xc2ac('0x16')]);_0x3382a5(_0x13725f[_0xc2ac('0x16')]);});});}function getUser(_0x1a1f89,_0x237e4e,_0x3b2fd3,_0xc36ef0,_0x4ea73f){return function(_0x159ee0){logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+_0xc2ac('0x18'),_0x159ee0);return new Promise(function(_0x132786,_0x3e90a1){if(intUtil[_0xc2ac('0x19')](_0x159ee0[_0xc2ac('0x1a')])){var _0x1de070={'method':'GET','uri':_0x3b2fd3+_0xc2ac('0x1b')+_0x159ee0[_0xc2ac('0x1a')]+'&'+_0xc36ef0+'&'+_0x4ea73f,'auth':_0x237e4e,'json':!![]};logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+_0xc2ac('0x1c'),_0x1de070);return rp(_0x1de070)[_0xc2ac('0x1d')](function(_0x22b16b){logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+'],\x20getUser\x20entity',_0x22b16b);if(_0x22b16b[_0xc2ac('0xe')]['length']>0x0&&String(_0x22b16b[_0xc2ac('0xe')][0x0][_0xc2ac('0x1e')])==='true'){_0x159ee0[_0xc2ac('0x1f')]=_0x22b16b['result'][0x0][_0xc2ac('0x11')];}else{_0x159ee0[_0xc2ac('0x1f')]=_0x159ee0[_0xc2ac('0x10')];_0x159ee0[_0xc2ac('0x1a')]=_0x159ee0[_0xc2ac('0x20')];}logger['info']('['+[_0x1a1f89['toUpperCase']()]+_0xc2ac('0x21'),_0x159ee0);_0x132786(_0x159ee0);})[_0xc2ac('0x14')](function(_0x297c11){logger['error']('['+[_0x1a1f89[_0xc2ac('0x17')]()]+']',_0x297c11['message']);_0x3e90a1(_0x297c11[_0xc2ac('0x16')]);});}else{logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+_0xc2ac('0x22'));_0x159ee0[_0xc2ac('0x1f')]=_0x159ee0[_0xc2ac('0x10')];_0x159ee0[_0xc2ac('0x1a')]=_0x159ee0[_0xc2ac('0x20')];_0x132786(_0x159ee0);}});};}function createEndUser(_0x2c649c,_0x6fc1e7,_0x75bd04,_0x3c8d38,_0x21cb46){logger['info']('['+[_0x2c649c['toUpperCase']()]+_0xc2ac('0x23'),_0x75bd04);return new Promise(function(_0x1f6c0c,_0x2aa644){var _0x4f1fd6={'method':_0xc2ac('0x24'),'uri':_0x3c8d38+'sys_user?'+_0x21cb46,'body':{'user_name':_0x75bd04[_0xc2ac('0x25')],'roles':_0xc2ac('0x26'),'first_name':_0x75bd04[_0xc2ac('0x25')],'active':_0xc2ac('0x27'),'date_format':_0xc2ac('0x28'),'phone':_0x75bd04['endUserNumber']},'auth':_0x6fc1e7,'json':!![]};return rp(_0x4f1fd6)['then'](function(_0x38db0f){logger[_0xc2ac('0x12')]('['+[_0x2c649c[_0xc2ac('0x17')]()]+_0xc2ac('0x29'),_0x38db0f[_0xc2ac('0xe')]);_0x75bd04['endUserId']=_0x38db0f[_0xc2ac('0xe')]['sys_id'];_0x1f6c0c(_0x75bd04);})[_0xc2ac('0x14')](function(_0x1912fe){logger[_0xc2ac('0x15')]('['+[_0x2c649c[_0xc2ac('0x17')]()]+']',_0x1912fe['message']);_0x2aa644(_0x1912fe[_0xc2ac('0x16')]);});});}function getEndUser(_0xd33cd3,_0x1885d4,_0x1de163,_0x5e1696,_0x37de61){return function(_0x5e1ed7){logger[_0xc2ac('0x12')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+_0xc2ac('0x2a'),_0x5e1ed7);return new Promise(function(_0x2f6982,_0x5a3293){var _0x4c4cbe={'method':_0xc2ac('0xd'),'uri':_0x1de163+_0xc2ac('0x2b')+_0x5e1ed7[_0xc2ac('0x25')]+'&'+_0x5e1696+'&'+_0x37de61,'auth':_0x1885d4,'json':!![]};return rp(_0x4c4cbe)['then'](function(_0x534e9c){if(_0x534e9c[_0xc2ac('0xe')][_0xc2ac('0xf')]>0x0){_0x5e1ed7['endUserId']=_0x534e9c[_0xc2ac('0xe')][0x0][_0xc2ac('0x11')];logger[_0xc2ac('0x12')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+_0xc2ac('0x2c'),_0x5e1ed7);_0x2f6982(_0x5e1ed7);}else{return createEndUser(_0xd33cd3,_0x1885d4,_0x5e1ed7,_0x1de163,_0x5e1696)[_0xc2ac('0x1d')](function(_0x55956f){logger[_0xc2ac('0x12')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+_0xc2ac('0x2d'),_0x55956f);_0x2f6982(_0x55956f);});}})['catch'](function(_0x344dea){logger[_0xc2ac('0x15')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+']',_0x344dea[_0xc2ac('0x16')]);_0x5a3293(_0x344dea[_0xc2ac('0x16')]);});});};}function getCustomFields(_0x49c8ed,_0x30f6c0){var _0x35eed3={};if(_0x49c8ed[_0xc2ac('0xf')]>0x0){_[_0xc2ac('0x2e')](_0x49c8ed,function(_0x346172){if(_[_0xc2ac('0x2f')](['string','picklist'],_0x346172['type'])&&_0x346172['nameField']&&!_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172['nameField']['toLowerCase']()]=_0x346172['content'][_0xc2ac('0x31')]();}else if(_['includes']([_0xc2ac('0x32'),'picklist'],_0x346172[_0xc2ac('0x33')])&&_0x346172[_0xc2ac('0x34')]&&_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172[_0xc2ac('0x34')][_0xc2ac('0x35')]()]=_0x346172['content']['toString']();}else if(_0x346172[_0xc2ac('0x33')]===_0xc2ac('0x36')&&_0x346172[_0xc2ac('0x37')]&&_0x346172['idField']&&_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172['idField'][_0xc2ac('0x35')]()]=_0x30f6c0[_0x346172[_0xc2ac('0x37')]][_0xc2ac('0x31')]();}else if(_0x346172[_0xc2ac('0x33')]===_0xc2ac('0x38')&&_0x346172[_0xc2ac('0x39')]&&_0x346172[_0xc2ac('0x39')]['name']&&_0x346172[_0xc2ac('0x34')]&&_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172[_0xc2ac('0x34')][_0xc2ac('0x35')]()]=_0x30f6c0[_0x346172[_0xc2ac('0x39')][_0xc2ac('0x3a')][_0xc2ac('0x35')]()]['toString']();}});}return _0x35eed3;}function getTicket(_0xbc1ad0,_0x1cf3c1,_0x46e127,_0x465748,_0xf6a18a,_0x18e8f4){return function(_0x3a56d8){logger['info']('['+[_0xbc1ad0[_0xc2ac('0x17')]()]+_0xc2ac('0x3b'),_0x3a56d8);return new Promise(function(_0x4a0ce1,_0x2db18c){var _0x13aa35=_0xbc1ad0[_0xc2ac('0x35')]()==='outbound'?_0x3a56d8['userId']:_0x3a56d8[_0xc2ac('0x3c')];var _0x10708f={'method':'POST','uri':_0x46e127+_0xc2ac('0x3d')+'?'+_0x18e8f4,'body':Object['assign']({},{'active':_0xc2ac('0x27'),'caller_id':_0x13aa35,'assigned_to':_0x3a56d8[_0xc2ac('0x1f')],'short_description':intUtil[_0xc2ac('0x3e')](_0x465748[_0xc2ac('0x3f')],_0xf6a18a,'\x20'),'description':intUtil['getString'](_0x465748['Descriptions'],_0xf6a18a,'\x0a')},getCustomFields(_0x465748[_0xc2ac('0x40')],_0xf6a18a)),'auth':_0x1cf3c1,'json':!![]};return rp(_0x10708f)['then'](function(_0x4aa810){logger[_0xc2ac('0x12')]('['+[_0xbc1ad0['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x4aa810['result']);_0x3a56d8[_0xc2ac('0x41')]=_0x4aa810['result']['sys_id'];_0x3a56d8['ticketNumber']=_0x4aa810['result'][_0xc2ac('0x42')];logger[_0xc2ac('0x12')]('['+[_0xbc1ad0[_0xc2ac('0x17')]()]+']\x20getTicket\x20crm',_0x3a56d8);_0x4a0ce1(_0x3a56d8);})['catch'](function(_0x3a7899){logger['error']('['+[_0xbc1ad0[_0xc2ac('0x17')]()]+']',_0x3a7899['message']);_0x2db18c(_0x3a7899[_0xc2ac('0x16')]);});});};}function createRemoteTag(_0x47d9d5,_0x4ad2a2,_0x5ecd62,_0x1d0b48){return new Promise(function(_0x46bced,_0x243a61){var _0x14d223={'method':_0xc2ac('0x24'),'uri':_0x5ecd62+_0xc2ac('0x43')+'?'+_0x1d0b48,'body':{'short_description':_0x47d9d5,'global':!![],'active':!![],'name':_0x47d9d5},'auth':_0x4ad2a2,'json':!![]};return rp(_0x14d223)['then'](function(_0x172c83){var _0x564b2e=_0x172c83[_0xc2ac('0xe')][_0xc2ac('0x11')];_0x46bced(_0x564b2e);});});}function getRemoteTag(_0x589a49,_0x5e1883,_0x2d4c12,_0x35b28a,_0x5c83aa){return new Promise(function(_0x5088ee,_0x2a81ae){var _0x1b2541={'method':_0xc2ac('0xd'),'uri':_0x2d4c12+_0xc2ac('0x43')+_0xc2ac('0x44')+_0x589a49+'&'+_0x35b28a,'auth':_0x5e1883,'json':!![]};return rp(_0x1b2541)[_0xc2ac('0x1d')](function(_0xc9d8be){if(_0xc9d8be[_0xc2ac('0xe')][_0xc2ac('0xf')]>0x0){var _0x106def=_0xc9d8be[_0xc2ac('0xe')][0x0][_0xc2ac('0x11')];_0x5088ee(_0x106def);}else{return createRemoteTag(_0x589a49,_0x5e1883,_0x2d4c12,_0x35b28a)[_0xc2ac('0x1d')](function(_0x2c07f7){_0x5088ee(_0x2c07f7);});}});});}function assignTagToIncident(_0x3199fa,_0x5d062b,_0x5b4551,_0x339c0e,_0x27805b){return new Promise(function(_0x3ed16a,_0xb229a5){var _0x502d1f={'method':_0xc2ac('0x24'),'uri':_0x5b4551+'label_entry'+'?'+_0x27805b,'body':{'label':_0x3199fa,'table':_0xc2ac('0x3d'),'id_type':_0xc2ac('0x45'),'table_key':_0x339c0e['ticketId'],'title':_0xc2ac('0x46')+_0x339c0e[_0xc2ac('0x47')],'id_display':_0x339c0e['ticketNumber']},'auth':_0x5d062b,'json':!![]};return rp(_0x502d1f)['then'](function(_0x29fcfe){_0x3ed16a();})[_0xc2ac('0x14')](function(){_0x3ed16a();});});}function manageTags(_0x50a110,_0x906c1f,_0x5f2957,_0x2e0de1,_0x1bcc06,_0x4ceb17,_0x1da0ae){return new Promise(function(_0x2b01e3,_0xe885a6){var _0xd88f69=[];_0x906c1f[_0xc2ac('0x2e')](function(_0x25ba83){_0xd88f69[_0xc2ac('0x48')](getRemoteTag(_0x25ba83,_0x5f2957,_0x2e0de1,_0x4ceb17,_0x1da0ae));});return Promise['all'](_0xd88f69)[_0xc2ac('0x1d')](function(_0x3b6862){if(_0x3b6862[_0xc2ac('0xf')]){logger[_0xc2ac('0x12')]('['+[_0x50a110[_0xc2ac('0x17')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x3b6862);var _0x3fcb50=[];_0x3b6862[_0xc2ac('0x2e')](function(_0x53ff7b){_0x3fcb50[_0xc2ac('0x48')](assignTagToIncident(_0x53ff7b,_0x5f2957,_0x2e0de1,_0x1bcc06,_0x4ceb17));});return Promise[_0xc2ac('0x49')](_0x3fcb50)[_0xc2ac('0x1d')](function(){_0x2b01e3();})[_0xc2ac('0x14')](function(){_0x2b01e3();});}else{_0x2b01e3();}});});}function getTags(_0x5d5b2d,_0x1e62ec,_0x21affa,_0x1cd7dc,_0x36f319,_0x34ee3e){return function(_0x50329f){return new Promise(function(_0x5b53e6,_0x3e5193){var _0x24b78a=[];var _0x56b777=_0x1cd7dc['Tags'];if(_0x56b777&&_0x56b777[_0xc2ac('0xf')]>0x0){_0x24b78a=_['map'](_0x56b777,_0xc2ac('0x3a'));}if(_0x24b78a['length']>0x0){return manageTags(_0x5d5b2d,_0x24b78a,_0x1e62ec,_0x21affa,_0x50329f,_0x36f319,_0x34ee3e)[_0xc2ac('0x1d')](function(){_0x5b53e6(_0x50329f);});}else{_0x5b53e6(_0x50329f);}});};}function emit(_0xb8c67c,_0xfadb34,_0x33dc87){var _0x591277=_0xc2ac('0x4a')+_0xc2ac('0x4b')+_0xc2ac('0x4c')+_0xc2ac('0x4d');var _0x5be48b={'uri':_0xb8c67c+_0xc2ac('0x4e')+_0x33dc87+_0x591277};io['to'](util['format'](_0xc2ac('0x4f'),_0xfadb34))['emit'](_0xc2ac('0x50'),_0x5be48b);}exports['cs']=function(_0xe6a574,_0x2a8638,_0x7031c4,_0x20860d,_0x7c2800,_0x3ff5e1,_0x481ffc,_0x3c4555){var _0x23ddd2={};var _0x5d9b3e={'user':_0x3ff5e1[_0xc2ac('0x51')],'pass':_0x3ff5e1[_0xc2ac('0x52')]};var _0x5669a0=_0xc2ac('0x53');var _0x5b160b=_0xc2ac('0x54');_0x3ff5e1[_0xc2ac('0x55')]=intUtil[_0xc2ac('0x56')](_0x3ff5e1[_0xc2ac('0x55')]);_0x3ff5e1[_0xc2ac('0x57')]=intUtil[_0xc2ac('0x56')](_0x3ff5e1[_0xc2ac('0x57')]);var _0x595326=util['format']('%s/api/now/table/',_0x3ff5e1['remoteUri']);_0x23ddd2[_0xc2ac('0x1a')]=!_[_0xc2ac('0x58')](_0x20860d)?_0x20860d[_0xc2ac('0x59')]:null;_0x23ddd2[_0xc2ac('0x20')]=_0x3ff5e1[_0xc2ac('0x59')];_0x23ddd2[_0xc2ac('0x25')]=_0x3c4555['toLowerCase']()===_0xc2ac('0x5a')?_0x2a8638['destcalleridnum']:_0x2a8638[_0xc2ac('0x5b')];_0x23ddd2[_0xc2ac('0x5c')]=_0x3c4555===_0xc2ac('0x5d')||_0x3c4555==='unmanaged'?_0xc2ac('0x5d'):'outbound';var _0x20c28d=util[_0xc2ac('0x5e')](_0xc2ac('0x5f'),_0x3ff5e1[_0xc2ac('0x57')],_0x2a8638[_0xc2ac('0x60')],md5(_0x2a8638[_0xc2ac('0x60')]));if(_0x7c2800&&_0x7c2800[_0xc2ac('0x61')]){logger[_0xc2ac('0x12')](_0xc2ac('0x62'),_0xc2ac('0x63'));_0x2a8638[_0xc2ac('0x64')]=_0x20c28d;}else if(_0x481ffc&&_0x481ffc[_0xc2ac('0x65')]&&_0x481ffc[_0xc2ac('0x65')]!=='none'){logger['info'](_0xc2ac('0x66'),_0xc2ac('0x63'));_0x2a8638['recordingURL']=_0x20c28d;}else{_0x2a8638['recordingURL']='';}return getAdminUser(_0x3c4555,_0x5d9b3e,_0x23ddd2,_0x595326,_0x5b160b,_0x5669a0)['then'](getUser(_0x3c4555,_0x5d9b3e,_0x595326,_0x5b160b,_0x5669a0))['then'](getEndUser(_0x3c4555,_0x5d9b3e,_0x595326,_0x5b160b,_0x5669a0))[_0xc2ac('0x1d')](getTicket(_0x3c4555,_0x5d9b3e,_0x595326,_0x7031c4,_0x2a8638,_0x5b160b))[_0xc2ac('0x1d')](function(_0x106b5a){logger[_0xc2ac('0x12')](util[_0xc2ac('0x5e')]('The\x20ticket\x20ID\x20is:\x20%s',_0x106b5a[_0xc2ac('0x41')]));logger[_0xc2ac('0x12')](util[_0xc2ac('0x5e')]('call\x20direction:\x20%s',_0x3c4555));if(_0x3c4555!==_0xc2ac('0x67')){logger[_0xc2ac('0x12')]('['+[_0x3c4555[_0xc2ac('0x17')]()]+']',_0xc2ac('0x68'));emit(_0x3ff5e1[_0xc2ac('0x55')],_0x20860d[_0xc2ac('0x3a')],_0x106b5a[_0xc2ac('0x41')]);}})['catch'](function(_0x3c5860){logger[_0xc2ac('0x15')]('['+[_0x3c4555[_0xc2ac('0x17')]()]+_0xc2ac('0x69'),util[_0xc2ac('0x6a')](_0x3c5860,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1bd3=[']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','error','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','string','picklist','type','nameField','customField','toString','includes','idField','toLowerCase','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','POST','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','number',']\x20getTicket\x20crm','label','GET','?sysparm_query=name%3D','label_entry','incident','Incident','ticketId','Incident\x20-\x20','ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','outbound','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','defaults','redis','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','active','true','userId','adminEmail','],\x20getUser\x20crm','message'];(function(_0xd63277,_0x304787){var _0x5c87ec=function(_0x67c597){while(--_0x67c597){_0xd63277['push'](_0xd63277['shift']());}};_0x5c87ec(++_0x304787);}(_0x1bd3,0x1ba));var _0x31bd=function(_0x4ebe85,_0x4badb2){_0x4ebe85=_0x4ebe85-0x0;var _0x4a7ee1=_0x1bd3[_0x4ebe85];return _0x4a7ee1;};'use strict';var _=require(_0x31bd('0x0'));var Promise=require(_0x31bd('0x1'));var rp=require('request-promise');var util=require(_0x31bd('0x2'));var md5=require(_0x31bd('0x3'));var Redis=require(_0x31bd('0x4'));var intUtil=require(_0x31bd('0x5'));var config=require(_0x31bd('0x6'));var logger=require(_0x31bd('0x7'))(_0x31bd('0x8'));config['redis']=_[_0x31bd('0x9')](config[_0x31bd('0xa')],{'host':_0x31bd('0xb'),'port':0x18eb});var io=require(_0x31bd('0xc'))(new Redis(config[_0x31bd('0xa')]));function getAdminUser(_0xae2550,_0x14ec69,_0x4cad9b,_0x2f576b,_0x3f1abe,_0x504d47){return new Promise(function(_0x49833a,_0x3bf00c){var _0x145221={'method':'GET','uri':_0x2f576b+_0x31bd('0xd')+'&'+_0x3f1abe+'&'+_0x504d47,'auth':_0x14ec69,'json':!![]};return rp(_0x145221)[_0x31bd('0xe')](function(_0x60416e){if(_0x60416e['result'][_0x31bd('0xf')]>0x0){_0x4cad9b[_0x31bd('0x10')]=_0x60416e[_0x31bd('0x11')][0x0][_0x31bd('0x12')];}logger[_0x31bd('0x13')]('['+[_0xae2550[_0x31bd('0x14')]()]+_0x31bd('0x15'),_0x4cad9b);_0x49833a(_0x4cad9b);})[_0x31bd('0x16')](function(_0x546496){logger['error']('['+[_0xae2550[_0x31bd('0x14')]()]+']',_0x546496['message']);_0x3bf00c(_0x546496['message']);});});}function getUser(_0x14dba8,_0x929a6,_0x462afc,_0x863dd9,_0x4d1468){return function(_0xddc928){logger['info']('['+[_0x14dba8[_0x31bd('0x14')]()]+_0x31bd('0x17'),_0xddc928);return new Promise(function(_0x83815c,_0x14f8fc){if(intUtil[_0x31bd('0x18')](_0xddc928['userEmail'])){var _0x503164={'method':'GET','uri':_0x462afc+_0x31bd('0x19')+_0xddc928[_0x31bd('0x1a')]+'&'+_0x863dd9+'&'+_0x4d1468,'auth':_0x929a6,'json':!![]};logger[_0x31bd('0x13')]('['+[_0x14dba8[_0x31bd('0x14')]()]+_0x31bd('0x1b'),_0x503164);return rp(_0x503164)['then'](function(_0x1c45fe){logger['info']('['+[_0x14dba8[_0x31bd('0x14')]()]+'],\x20getUser\x20entity',_0x1c45fe);if(_0x1c45fe[_0x31bd('0x11')][_0x31bd('0xf')]>0x0&&String(_0x1c45fe[_0x31bd('0x11')][0x0][_0x31bd('0x1c')])===_0x31bd('0x1d')){_0xddc928[_0x31bd('0x1e')]=_0x1c45fe['result'][0x0][_0x31bd('0x12')];}else{_0xddc928[_0x31bd('0x1e')]=_0xddc928[_0x31bd('0x10')];_0xddc928[_0x31bd('0x1a')]=_0xddc928[_0x31bd('0x1f')];}logger[_0x31bd('0x13')]('['+[_0x14dba8[_0x31bd('0x14')]()]+_0x31bd('0x20'),_0xddc928);_0x83815c(_0xddc928);})['catch'](function(_0x1525a5){logger['error']('['+[_0x14dba8[_0x31bd('0x14')]()]+']',_0x1525a5[_0x31bd('0x21')]);_0x14f8fc(_0x1525a5['message']);});}else{logger['info']('['+[_0x14dba8['toUpperCase']()]+_0x31bd('0x22'));_0xddc928[_0x31bd('0x1e')]=_0xddc928[_0x31bd('0x10')];_0xddc928['userEmail']=_0xddc928[_0x31bd('0x1f')];_0x83815c(_0xddc928);}});};}function createEndUser(_0xb4744c,_0x5c7954,_0x2bbab5,_0x23464c,_0x486660){logger['info']('['+[_0xb4744c['toUpperCase']()]+_0x31bd('0x23'),_0x2bbab5);return new Promise(function(_0x232f24,_0x2b6adf){var _0x311208={'method':'POST','uri':_0x23464c+_0x31bd('0x24')+_0x486660,'body':{'user_name':_0x2bbab5[_0x31bd('0x25')],'roles':_0x31bd('0x26'),'first_name':_0x2bbab5[_0x31bd('0x25')],'active':_0x31bd('0x1d'),'date_format':_0x31bd('0x27'),'phone':_0x2bbab5[_0x31bd('0x25')]},'auth':_0x5c7954,'json':!![]};return rp(_0x311208)[_0x31bd('0xe')](function(_0x4d564e){logger[_0x31bd('0x13')]('['+[_0xb4744c['toUpperCase']()]+_0x31bd('0x28'),_0x4d564e[_0x31bd('0x11')]);_0x2bbab5[_0x31bd('0x29')]=_0x4d564e[_0x31bd('0x11')][_0x31bd('0x12')];_0x232f24(_0x2bbab5);})[_0x31bd('0x16')](function(_0x5642f4){logger[_0x31bd('0x2a')]('['+[_0xb4744c['toUpperCase']()]+']',_0x5642f4[_0x31bd('0x21')]);_0x2b6adf(_0x5642f4[_0x31bd('0x21')]);});});}function getEndUser(_0x48dd8d,_0x2ddfbc,_0x5ea1d9,_0x519b92,_0x1e419c){return function(_0x1ac5c3){logger[_0x31bd('0x13')]('['+[_0x48dd8d[_0x31bd('0x14')]()]+_0x31bd('0x2b'),_0x1ac5c3);return new Promise(function(_0x2ac46b,_0x5d1b24){var _0x4cf3f5={'method':'GET','uri':_0x5ea1d9+'sys_user?sysparm_query=phone%3D'+_0x1ac5c3['endUserNumber']+'&'+_0x519b92+'&'+_0x1e419c,'auth':_0x2ddfbc,'json':!![]};return rp(_0x4cf3f5)['then'](function(_0x3bc73c){if(_0x3bc73c[_0x31bd('0x11')][_0x31bd('0xf')]>0x0){_0x1ac5c3[_0x31bd('0x29')]=_0x3bc73c[_0x31bd('0x11')][0x0][_0x31bd('0x12')];logger[_0x31bd('0x13')]('['+[_0x48dd8d[_0x31bd('0x14')]()]+_0x31bd('0x2c'),_0x1ac5c3);_0x2ac46b(_0x1ac5c3);}else{return createEndUser(_0x48dd8d,_0x2ddfbc,_0x1ac5c3,_0x5ea1d9,_0x519b92)[_0x31bd('0xe')](function(_0x3c10f7){logger['info']('['+[_0x48dd8d[_0x31bd('0x14')]()]+_0x31bd('0x2d'),_0x3c10f7);_0x2ac46b(_0x3c10f7);});}})[_0x31bd('0x16')](function(_0x2304d5){logger['error']('['+[_0x48dd8d[_0x31bd('0x14')]()]+']',_0x2304d5[_0x31bd('0x21')]);_0x5d1b24(_0x2304d5[_0x31bd('0x21')]);});});};}function getCustomFields(_0x2d989b,_0xcb045e){var _0xb316c7={};if(_0x2d989b[_0x31bd('0xf')]>0x0){_[_0x31bd('0x2e')](_0x2d989b,function(_0x176c98){if(_['includes']([_0x31bd('0x2f'),_0x31bd('0x30')],_0x176c98[_0x31bd('0x31')])&&_0x176c98[_0x31bd('0x32')]&&!_0x176c98[_0x31bd('0x33')]){_0xb316c7[_0x176c98[_0x31bd('0x32')]['toLowerCase']()]=_0x176c98['content'][_0x31bd('0x34')]();}else if(_[_0x31bd('0x35')](['string','picklist'],_0x176c98['type'])&&_0x176c98[_0x31bd('0x36')]&&_0x176c98[_0x31bd('0x33')]){_0xb316c7[_0x176c98[_0x31bd('0x36')][_0x31bd('0x37')]()]=_0x176c98[_0x31bd('0x38')][_0x31bd('0x34')]();}else if(_0x176c98[_0x31bd('0x31')]===_0x31bd('0x39')&&_0x176c98[_0x31bd('0x3a')]&&_0x176c98[_0x31bd('0x36')]&&_0x176c98[_0x31bd('0x33')]){_0xb316c7[_0x176c98['idField'][_0x31bd('0x37')]()]=_0xcb045e[_0x176c98[_0x31bd('0x3a')]][_0x31bd('0x34')]();}else if(_0x176c98[_0x31bd('0x31')]===_0x31bd('0x3b')&&_0x176c98[_0x31bd('0x3c')]&&_0x176c98[_0x31bd('0x3c')][_0x31bd('0x3d')]&&_0x176c98['idField']&&_0x176c98['customField']){_0xb316c7[_0x176c98[_0x31bd('0x36')][_0x31bd('0x37')]()]=_0xcb045e[_0x176c98[_0x31bd('0x3c')][_0x31bd('0x3d')]['toLowerCase']()]['toString']();}});}return _0xb316c7;}function getTicket(_0x20ef3d,_0x3dd364,_0x2efeae,_0x49886f,_0x325a41,_0xdf7c2b){return function(_0x26403e){logger[_0x31bd('0x13')]('['+[_0x20ef3d[_0x31bd('0x14')]()]+_0x31bd('0x3e'),_0x26403e);return new Promise(function(_0x53d5d6,_0x303b41){var _0x496afa=_0x20ef3d[_0x31bd('0x37')]()==='outbound'?_0x26403e[_0x31bd('0x1e')]:_0x26403e[_0x31bd('0x29')];var _0x5e3ecb={'method':_0x31bd('0x3f'),'uri':_0x2efeae+'incident'+'?'+_0xdf7c2b,'body':Object[_0x31bd('0x40')]({},{'active':_0x31bd('0x1d'),'caller_id':_0x496afa,'assigned_to':_0x26403e['userId'],'short_description':intUtil[_0x31bd('0x41')](_0x49886f[_0x31bd('0x42')],_0x325a41,'\x20'),'description':intUtil['getString'](_0x49886f[_0x31bd('0x43')],_0x325a41,'\x0a')},getCustomFields(_0x49886f[_0x31bd('0x44')],_0x325a41)),'auth':_0x3dd364,'json':!![]};return rp(_0x5e3ecb)[_0x31bd('0xe')](function(_0x1f4f6e){logger[_0x31bd('0x13')]('['+[_0x20ef3d['toUpperCase']()]+_0x31bd('0x45'),_0x1f4f6e['result']);_0x26403e['ticketId']=_0x1f4f6e[_0x31bd('0x11')]['sys_id'];_0x26403e['ticketNumber']=_0x1f4f6e[_0x31bd('0x11')][_0x31bd('0x46')];logger['info']('['+[_0x20ef3d[_0x31bd('0x14')]()]+_0x31bd('0x47'),_0x26403e);_0x53d5d6(_0x26403e);})[_0x31bd('0x16')](function(_0x5802d4){logger[_0x31bd('0x2a')]('['+[_0x20ef3d[_0x31bd('0x14')]()]+']',_0x5802d4[_0x31bd('0x21')]);_0x303b41(_0x5802d4['message']);});});};}function createRemoteTag(_0x22132f,_0x43f440,_0x11352d,_0x49825c){return new Promise(function(_0x21c0fe,_0xc68352){var _0x40d935={'method':_0x31bd('0x3f'),'uri':_0x11352d+_0x31bd('0x48')+'?'+_0x49825c,'body':{'short_description':_0x22132f,'global':!![],'active':!![],'name':_0x22132f},'auth':_0x43f440,'json':!![]};return rp(_0x40d935)[_0x31bd('0xe')](function(_0x561da8){var _0x3033a9=_0x561da8[_0x31bd('0x11')]['sys_id'];_0x21c0fe(_0x3033a9);});});}function getRemoteTag(_0x2507e4,_0x2b6f6c,_0x2d51fa,_0x3dc000,_0x5957a9){return new Promise(function(_0x8a281d,_0x3c389f){var _0x1fb6d4={'method':_0x31bd('0x49'),'uri':_0x2d51fa+_0x31bd('0x48')+_0x31bd('0x4a')+_0x2507e4+'&'+_0x3dc000,'auth':_0x2b6f6c,'json':!![]};return rp(_0x1fb6d4)[_0x31bd('0xe')](function(_0x14cc7e){if(_0x14cc7e[_0x31bd('0x11')]['length']>0x0){var _0x36e4b7=_0x14cc7e[_0x31bd('0x11')][0x0]['sys_id'];_0x8a281d(_0x36e4b7);}else{return createRemoteTag(_0x2507e4,_0x2b6f6c,_0x2d51fa,_0x3dc000)[_0x31bd('0xe')](function(_0x500325){_0x8a281d(_0x500325);});}});});}function assignTagToIncident(_0x46a07d,_0x3ae038,_0x19c466,_0x558e8e,_0x2ad17e){return new Promise(function(_0x35c9f9,_0x8df815){var _0x164dc9={'method':'POST','uri':_0x19c466+_0x31bd('0x4b')+'?'+_0x2ad17e,'body':{'label':_0x46a07d,'table':_0x31bd('0x4c'),'id_type':_0x31bd('0x4d'),'table_key':_0x558e8e[_0x31bd('0x4e')],'title':_0x31bd('0x4f')+_0x558e8e[_0x31bd('0x50')],'id_display':_0x558e8e[_0x31bd('0x50')]},'auth':_0x3ae038,'json':!![]};return rp(_0x164dc9)['then'](function(_0x3c7c0d){_0x35c9f9();})[_0x31bd('0x16')](function(){_0x35c9f9();});});}function manageTags(_0x22fc01,_0x3484cf,_0x1e86c7,_0x2db689,_0x520599,_0x299515,_0x5d57ef){return new Promise(function(_0x55d9ad,_0x43e1c5){var _0x198414=[];_0x3484cf[_0x31bd('0x2e')](function(_0x3c4b97){_0x198414[_0x31bd('0x51')](getRemoteTag(_0x3c4b97,_0x1e86c7,_0x2db689,_0x299515,_0x5d57ef));});return Promise[_0x31bd('0x52')](_0x198414)[_0x31bd('0xe')](function(_0x475ce8){if(_0x475ce8[_0x31bd('0xf')]){logger[_0x31bd('0x13')]('['+[_0x22fc01[_0x31bd('0x14')]()]+_0x31bd('0x53'),_0x475ce8);var _0x4c1222=[];_0x475ce8[_0x31bd('0x2e')](function(_0x595ffb){_0x4c1222['push'](assignTagToIncident(_0x595ffb,_0x1e86c7,_0x2db689,_0x520599,_0x299515));});return Promise[_0x31bd('0x52')](_0x4c1222)[_0x31bd('0xe')](function(){_0x55d9ad();})[_0x31bd('0x16')](function(){_0x55d9ad();});}else{_0x55d9ad();}});});}function getTags(_0x10451a,_0x577fb4,_0xf0119,_0x100651,_0x2c16ae,_0x5547b8){return function(_0x1cd871){return new Promise(function(_0x1f43da,_0x5eddfc){var _0x5308ea=[];var _0x6c24bc=_0x100651['Tags'];if(_0x6c24bc&&_0x6c24bc[_0x31bd('0xf')]>0x0){_0x5308ea=_[_0x31bd('0x54')](_0x6c24bc,_0x31bd('0x3d'));}if(_0x5308ea['length']>0x0){return manageTags(_0x10451a,_0x5308ea,_0x577fb4,_0xf0119,_0x1cd871,_0x2c16ae,_0x5547b8)[_0x31bd('0xe')](function(){_0x1f43da(_0x1cd871);});}else{_0x1f43da(_0x1cd871);}});};}function emit(_0x412f17,_0x233253,_0xa6327f){var _0x1d2d17=_0x31bd('0x55')+_0x31bd('0x56')+_0x31bd('0x57')+_0x31bd('0x58');var _0x23a40c={'uri':_0x412f17+'/nav_to.do?uri=incident.do?sys_id%3D'+_0xa6327f+_0x1d2d17};io['to'](util[_0x31bd('0x59')](_0x31bd('0x5a'),_0x233253))[_0x31bd('0x5b')](_0x31bd('0x5c'),_0x23a40c);}exports['cs']=function(_0x52cb41,_0x3d5534,_0xee4ee9,_0x2688a9,_0x4646ce,_0x191926,_0x4bd66a,_0x4753c7){var _0xdfbae5={};var _0x260867={'user':_0x191926['username'],'pass':_0x191926[_0x31bd('0x5d')]};var _0x1b4969=_0x31bd('0x5e');var _0x4262d5=_0x31bd('0x5f');_0x191926[_0x31bd('0x60')]=intUtil[_0x31bd('0x61')](_0x191926[_0x31bd('0x60')]);_0x191926['serverUrl']=intUtil['stripTrailingSlash'](_0x191926[_0x31bd('0x62')]);var _0x3662d9=util['format']('%s/api/now/table/',_0x191926[_0x31bd('0x60')]);_0xdfbae5['userEmail']=!_[_0x31bd('0x63')](_0x2688a9)?_0x2688a9[_0x31bd('0x64')]:null;_0xdfbae5[_0x31bd('0x1f')]=_0x191926['email'];_0xdfbae5[_0x31bd('0x25')]=_0x4753c7[_0x31bd('0x37')]()===_0x31bd('0x65')?_0x3d5534[_0x31bd('0x66')]:_0x3d5534[_0x31bd('0x67')];_0xdfbae5['callDirection']=_0x4753c7===_0x31bd('0x68')||_0x4753c7===_0x31bd('0x69')?_0x31bd('0x68'):'outbound';var _0x5d10b4=util[_0x31bd('0x59')](_0x31bd('0x6a'),_0x191926[_0x31bd('0x62')],_0x3d5534[_0x31bd('0x6b')],md5(_0x3d5534[_0x31bd('0x6b')]));if(_0x4646ce&&_0x4646ce[_0x31bd('0x6c')]){logger[_0x31bd('0x13')](_0x31bd('0x6d'),_0x31bd('0x6e'));_0x3d5534['recordingURL']=_0x5d10b4;}else if(_0x4bd66a&&_0x4bd66a['recordingFormat']&&_0x4bd66a[_0x31bd('0x6f')]!==_0x31bd('0x70')){logger['info'](_0x31bd('0x71'),_0x31bd('0x6e'));_0x3d5534[_0x31bd('0x72')]=_0x5d10b4;}else{_0x3d5534['recordingURL']='';}return getAdminUser(_0x4753c7,_0x260867,_0xdfbae5,_0x3662d9,_0x4262d5,_0x1b4969)[_0x31bd('0xe')](getUser(_0x4753c7,_0x260867,_0x3662d9,_0x4262d5,_0x1b4969))[_0x31bd('0xe')](getEndUser(_0x4753c7,_0x260867,_0x3662d9,_0x4262d5,_0x1b4969))[_0x31bd('0xe')](getTicket(_0x4753c7,_0x260867,_0x3662d9,_0xee4ee9,_0x3d5534,_0x4262d5))[_0x31bd('0xe')](function(_0x389d45){logger['info'](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x389d45[_0x31bd('0x4e')]));logger[_0x31bd('0x13')](util[_0x31bd('0x59')](_0x31bd('0x73'),_0x4753c7));if(_0x4753c7!==_0x31bd('0x69')){logger[_0x31bd('0x13')]('['+[_0x4753c7[_0x31bd('0x14')]()]+']',_0x31bd('0x74'));emit(_0x191926[_0x31bd('0x60')],_0x2688a9[_0x31bd('0x3d')],_0x389d45[_0x31bd('0x4e')]);}})['catch'](function(_0x3d16f8){logger[_0x31bd('0x2a')]('['+[_0x4753c7[_0x31bd('0x14')]()]+_0x31bd('0x75'),util[_0x31bd('0x76')](_0x3d16f8,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 9b7a887..030ae5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc3=['Fields','Outbound','catch','toUpperCase','calleridnum','lastevent','lodash','request-promise','bluebird','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','get_server_info','isNil','info','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','string','nameField','toLowerCase','content','variable','customField','custom_fields','customVariable','Variable','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum'];(function(_0x4f35f4,_0x51a8c3){var _0x2e9a70=function(_0x110aca){while(--_0x110aca){_0x4f35f4['push'](_0x4f35f4['shift']());}};_0x2e9a70(++_0x51a8c3);}(_0x3dc3,0x17a));var _0x33dc=function(_0x24935e,_0x59d47a){_0x24935e=_0x24935e-0x0;var _0x525d4b=_0x3dc3[_0x24935e];return _0x525d4b;};'use strict';var _=require(_0x33dc('0x0'));var rp=require(_0x33dc('0x1'));var BPromise=require(_0x33dc('0x2'));var md5=require('md5');var util=require(_0x33dc('0x3'));var Redis=require('ioredis');var intUtil=require(_0x33dc('0x4'));var config=require(_0x33dc('0x5'));var logger=require(_0x33dc('0x6'))(_0x33dc('0x7'));config[_0x33dc('0x8')]=_[_0x33dc('0x9')](config[_0x33dc('0x8')],{'host':_0x33dc('0xa'),'port':0x18eb});var io=require(_0x33dc('0xb'))(new Redis(config[_0x33dc('0x8')]));var def={'method':_0x33dc('0xc'),'json':!![]};function emit(_0x434ff5,_0x24aa48,_0x2c53a0){io['to'](_0x434ff5)['emit'](_0x24aa48,_0x2c53a0);}function getTicket(_0x808988,_0x5efc2d,_0x2bdba9,_0x2122dd,_0x4c2bba,_0x1e1d4f,_0x3ae9e1,_0x3321c4){logger['info'](_0x33dc('0xd'));var _0xf2ce6e=new Date();var _0x1b192f=[{'name':_0x33dc('0xe'),'value':intUtil[_0x33dc('0xf')](_0x2122dd[_0x33dc('0x10')],_0x4c2bba,'\x20')},{'name':_0x33dc('0x11'),'value':_0x5efc2d['id']},{'name':_0x33dc('0x12'),'value':_0x5efc2d['id']},{'name':'description','value':intUtil[_0x33dc('0xf')](_0x2122dd[_0x33dc('0x13')],_0x4c2bba,'\x0a')},{'name':_0x33dc('0x14'),'value':_0xf2ce6e[_0x33dc('0x15')]()['slice'](0x0,0x13)[_0x33dc('0x16')]('T','\x20')},{'name':_0x33dc('0x17'),'value':'0'},{'name':_0x33dc('0x18'),'value':'15'},{'name':_0x33dc('0x19'),'value':_0x2bdba9['id']},{'name':_0x33dc('0x1a'),'value':_0x33dc('0x1b')},{'name':_0x33dc('0x1c'),'value':_0x2bdba9[_0x33dc('0xe')]},{'name':_0x33dc('0x1d'),'value':_0x3321c4}];if(_0x1e1d4f['length']){_[_0x33dc('0x1e')](_0x1e1d4f,function(_0x2cc509){if(_0x4c2bba[_0x2cc509[_0x33dc('0x1f')]]){_0x1b192f[_0x33dc('0x20')]({'name':_0x2cc509[_0x33dc('0x21')],'value':_0x4c2bba[_0x2cc509[_0x33dc('0x1f')]]});}});}return request({'form':{'method':_0x33dc('0x22'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0x3ae9e1['id'],'module_name':_0x33dc('0x25'),'name_value_list':_0x1b192f})}});}function getAuth(_0x591c36){return util[_0x33dc('0x26')]('Basic\x20%s',new Buffer(_0x591c36[_0x33dc('0x27')]+':X')[_0x33dc('0x28')]('base64'));}function getServerInfo(_0xbcdf39){return request({'form':{'method':_0x33dc('0x29'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0xbcdf39['id']})}});}function getUser(_0x49e316,_0x22041a,_0x23c882){if(!_[_0x33dc('0x2a')](_0x22041a)){logger[_0x33dc('0x2b')]('Getting\x20agent\x20with\x20name',_0x22041a);return request({'form':{'method':_0x33dc('0x2c'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0x23c882['id'],'module_name':'Employees','query':util[_0x33dc('0x26')](_0x33dc('0x2d'),_0x22041a),'order_by':'','offset':'0','select_fields':['id',_0x33dc('0xe'),_0x33dc('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x33dc('0x2f')](function(_0x5a2785){if(_0x5a2785[_0x33dc('0x30')][_0x33dc('0x31')]){var _0x1c30e1=_[_0x33dc('0x32')](_0x5a2785[_0x33dc('0x30')],function(_0xc37f94){return _0xc37f94[_0x33dc('0x33')][_0x33dc('0x2e')][_0x33dc('0x34')]===_0x22041a;});if(_0x1c30e1){logger['info'](_0x33dc('0x35'));return BPromise[_0x33dc('0x36')]({'id':_0x1c30e1[_0x33dc('0x33')]['id'][_0x33dc('0x34')],'name':_0x1c30e1[_0x33dc('0x33')]['name'][_0x33dc('0x34')]});}}logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x33dc('0x36')]({'id':_0x23c882[_0x33dc('0x33')]['user_id'][_0x33dc('0x34')],'name':_0x23c882[_0x33dc('0x33')][_0x33dc('0x2e')][_0x33dc('0x34')]});});}else{logger['info'](_0x33dc('0x37'));return BPromise[_0x33dc('0x36')]({'id':_0x23c882['name_value_list'][_0x33dc('0x38')][_0x33dc('0x34')],'name':_0x23c882['name_value_list'][_0x33dc('0x2e')][_0x33dc('0x34')]});}}function getEndUser(_0x3b47e2,_0x17440e,_0x5daefc,_0x3cb714){logger[_0x33dc('0x2b')](_0x33dc('0x39'),_0x5daefc);return request({'form':{'method':_0x33dc('0x2c'),'input_type':_0x33dc('0x23'),'response_type':'JSON','rest_data':JSON[_0x33dc('0x24')]({'session':_0x3cb714['id'],'module_name':_0x33dc('0x1b'),'query':util[_0x33dc('0x26')](_0x33dc('0x3a'),_0x5daefc),'order_by':'','offset':'0','select_fields':['id',_0x33dc('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x33dc('0x2f')](function(_0x3ba802){if(_0x3ba802[_0x33dc('0x30')][_0x33dc('0x31')]){var _0x1ed238=_[_0x33dc('0x32')](_0x3ba802[_0x33dc('0x30')],function(_0x571862){return _0x571862[_0x33dc('0x33')][_0x33dc('0x3b')][_0x33dc('0x34')]===_0x5daefc;});if(_0x1ed238){logger[_0x33dc('0x2b')](_0x33dc('0x3c'));return BPromise[_0x33dc('0x36')]({'id':_0x1ed238[_0x33dc('0x33')]['id'][_0x33dc('0x34')],'name':_0x1ed238['name_value_list'][_0x33dc('0xe')]['value'],'phone':_0x1ed238[_0x33dc('0x33')]['phone_home']['value']});}}else{logger[_0x33dc('0x2b')](_0x33dc('0x3d'));return request({'form':{'method':_0x33dc('0x22'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0x3cb714['id'],'module_name':_0x33dc('0x1b'),'name_value_list':[{'name':'first_name','value':_0x17440e!==_0x33dc('0x3e')?_0x17440e:util[_0x33dc('0x26')](_0x33dc('0x3f'),_0x5daefc)},{'name':_0x33dc('0x3b'),'value':_0x5daefc}]})}})[_0x33dc('0x2f')](function(_0x49d841){logger['info'](_0x33dc('0x40'));return BPromise['resolve']({'id':_0x49d841['id'],'name':_0x49d841['entry_list']['first_name'][_0x33dc('0x34')],'phone':_0x49d841[_0x33dc('0x30')][_0x33dc('0x3b')][_0x33dc('0x34')]});});}});}function request(_0x2858e4){logger[_0x33dc('0x41')](_0x33dc('0x42'),JSON[_0x33dc('0x24')](_0x2858e4));return rp(_[_0x33dc('0x43')](def,_0x2858e4));}function getTags(_0x3092d4,_0x471c2f){var _0x146a5b=[];if(_0x3092d4&&_0x3092d4[_0x33dc('0x31')]>0x0){_0x146a5b=_[_0x33dc('0x44')](_0x3092d4,_0x471c2f);}return _0x146a5b;}function getCustomFields(_0x307efa,_0x15da99){var _0x4bb70b=[];var _0x23e218={'custom_fields':[]};if(_0x307efa[_0x33dc('0x31')]>0x0){_[_0x33dc('0x1e')](_0x307efa,function(_0x543f1f){if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x46')&&_0x543f1f['nameField']&&!_0x543f1f['customField']){_0x23e218[_0x543f1f[_0x33dc('0x47')][_0x33dc('0x48')]()]=_0x543f1f[_0x33dc('0x49')][_0x33dc('0x28')]();}else if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x46')&&_0x543f1f[_0x33dc('0x21')]&&_0x543f1f['customField']){_0x23e218['custom_fields'][_0x33dc('0x20')]({'id':_0x543f1f[_0x33dc('0x21')],'value':_0x543f1f[_0x33dc('0x49')][_0x33dc('0x28')]()});}else if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x4a')&&_0x543f1f[_0x33dc('0x1f')]&&_0x543f1f[_0x33dc('0x21')]&&_0x543f1f[_0x33dc('0x4b')]){_0x15da99[_0x543f1f[_0x33dc('0x1f')]]&&_0x23e218[_0x33dc('0x4c')][_0x33dc('0x20')]({'id':_0x543f1f['idField'],'value':_0x15da99[_0x543f1f['variableName']][_0x33dc('0x28')]()});}else if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x4d')&&_0x543f1f[_0x33dc('0x4e')]&&_0x543f1f[_0x33dc('0x4e')][_0x33dc('0xe')]&&_0x543f1f['idField']&&_0x543f1f['customField']){_0x15da99[_0x543f1f[_0x33dc('0x4e')]['name'][_0x33dc('0x48')]()]&&_0x23e218[_0x33dc('0x4c')][_0x33dc('0x20')]({'id':_0x543f1f[_0x33dc('0x21')],'value':_0x15da99[_0x543f1f[_0x33dc('0x4e')][_0x33dc('0xe')]['toLowerCase']()][_0x33dc('0x28')]()});}});}return _0x23e218;}function getConnection(_0x2fe23f){return request({'method':_0x33dc('0xc'),'form':{'method':'login','input_type':_0x33dc('0x23'),'response_type':'JSON','rest_data':JSON[_0x33dc('0x24')]({'user_auth':{'user_name':_0x2fe23f['username'],'password':_0x2fe23f[_0x33dc('0x4f')],'encryption':_0x33dc('0x50')},'application':_0x33dc('0x51')})}})[_0x33dc('0x2f')](function(_0x53d0ba){var _0x16b0ff=_0x53d0ba;if(_0x16b0ff['id']){def[_0x33dc('0x52')]=_0x16b0ff['id'];return BPromise[_0x33dc('0x36')](_0x16b0ff);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x2fe23f['id']));}});}function setRelationship(_0x8d9a9c,_0xb1a6fc,_0x3e668e,_0x5311bc){return request({'form':{'method':_0x33dc('0x53'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x33dc('0x24')]({'session':_0x8d9a9c['id'],'module_name':_0x33dc('0x25'),'module_id':_0x3e668e['id'],'link_field_name':_0x5311bc,'related_ids':[_0xb1a6fc['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x33dc('0x54')]=function(_0x2c738a,_0x27bf15,_0x2055d9,_0x572cce,_0x1f1ef0,_0x237451){var _0x49f0a3,_0x18137,_0x28ed5a,_0x1ebb3e;_0x237451[_0x33dc('0x55')]=intUtil['stripTrailingSlash'](_0x237451[_0x33dc('0x55')]);_0x237451[_0x33dc('0x56')]=intUtil['stripTrailingSlash'](_0x237451[_0x33dc('0x56')]);def[_0x33dc('0x57')]=util[_0x33dc('0x26')](_0x33dc('0x58'),_0x237451[_0x33dc('0x55')]);if(_0x1f1ef0&&_0x1f1ef0[_0x33dc('0x59')]){logger['info'](_0x33dc('0x5a'),_0x33dc('0x5b'));_0x27bf15['recordingURL']=util[_0x33dc('0x26')](_0x33dc('0x5c'),_0x237451[_0x33dc('0x56')],_0x27bf15[_0x33dc('0x5d')],md5(_0x27bf15[_0x33dc('0x5d')]));}else{_0x27bf15[_0x33dc('0x5e')]='';}return getConnection(_0x237451)[_0x33dc('0x2f')](function(_0x3ef03b){_0x1ebb3e=_0x3ef03b;return getUser(_0x237451,_0x572cce['name'],_0x1ebb3e);})[_0x33dc('0x2f')](function(_0x50d529){_0x49f0a3=_0x50d529;logger['info'](_0x33dc('0x5f'),_0x49f0a3['id']);return getEndUser(_0x237451,_0x27bf15[_0x33dc('0x60')],_0x27bf15['calleridnum'],_0x1ebb3e);})[_0x33dc('0x2f')](function(_0x5ab9e0){_0x18137=_0x5ab9e0;logger[_0x33dc('0x2b')](_0x33dc('0x61'),_0x18137['id']);return getTicket(_0x237451,_0x49f0a3,_0x18137,_0x2055d9,_0x27bf15,_0x2055d9['Fields'],_0x1ebb3e,_0x33dc('0x62'));})[_0x33dc('0x2f')](function(_0x36729e){_0x28ed5a=_0x36729e;logger[_0x33dc('0x2b')](_0x33dc('0x63'));logger[_0x33dc('0x2b')](_0x33dc('0x64'),_0x28ed5a['id']);return setRelationship(_0x1ebb3e,_0x49f0a3,_0x28ed5a,_0x33dc('0x65'));})[_0x33dc('0x2f')](function(){return setRelationship(_0x1ebb3e,_0x18137,_0x28ed5a,_0x33dc('0x66'));})[_0x33dc('0x2f')](function(){return getServerInfo(_0x1ebb3e);})[_0x33dc('0x2f')](function(_0x129cd6){var _0x141bda=parseInt(_0x129cd6[_0x33dc('0x67')][_0x33dc('0x68')](0x0));var _0xc753cd=util[_0x33dc('0x26')](_0x33dc('0x69'),_0x237451[_0x33dc('0x55')],_0x28ed5a['id']);if(_0x141bda>0x6){_0xc753cd=util['format'](_0x33dc('0x6a'),_0x237451['remoteUri'],_0x28ed5a['id']);}logger[_0x33dc('0x2b')]('[QUEUE]',_0x33dc('0x6b'));emit(util[_0x33dc('0x26')](_0x33dc('0x6c'),_0x572cce[_0x33dc('0xe')]),_0x33dc('0x6d'),{'uri':_0xc753cd});})['catch'](function(_0x1944c7){logger[_0x33dc('0x6e')](_0x33dc('0x5a'),JSON[_0x33dc('0x24')](_0x1944c7));});};exports[_0x33dc('0x6f')]=function(_0x5ab7fb,_0x5443ec,_0xc9e0e1,_0xa6924f,_0x309cbf,_0x2cad35,_0x442d65){var _0x4785d2,_0x77c8d0,_0x5c3f39,_0x7b67c9;_0x2cad35[_0x33dc('0x55')]=intUtil[_0x33dc('0x70')](_0x2cad35[_0x33dc('0x55')]);_0x2cad35[_0x33dc('0x56')]=intUtil['stripTrailingSlash'](_0x2cad35[_0x33dc('0x56')]);def[_0x33dc('0x57')]=util[_0x33dc('0x26')](_0x33dc('0x58'),_0x2cad35[_0x33dc('0x55')]);if(_0x442d65&&_0x442d65[_0x33dc('0x71')]&&_0x442d65[_0x33dc('0x71')]!==_0x33dc('0x72')){logger[_0x33dc('0x2b')](_0x33dc('0x73'),'Recording\x20is\x20enabled!');_0x5443ec['recordingURL']=util[_0x33dc('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2cad35[_0x33dc('0x56')],_0x5443ec[_0x33dc('0x5d')],md5(_0x5443ec[_0x33dc('0x5d')]));}return getConnection(_0x2cad35)[_0x33dc('0x2f')](function(_0x14e35e){_0x7b67c9=_0x14e35e;return getUser(_0x2cad35,_0xa6924f[_0x33dc('0xe')],_0x7b67c9);})[_0x33dc('0x2f')](function(_0x5b1533){_0x4785d2=_0x5b1533;logger[_0x33dc('0x2b')](_0x33dc('0x5f'),_0x4785d2['id']);return getEndUser(_0x2cad35,_0x5443ec[_0x33dc('0x74')],_0x5443ec[_0x33dc('0x75')],_0x7b67c9);})['then'](function(_0x5361f2){_0x77c8d0=_0x5361f2;logger[_0x33dc('0x2b')](_0x33dc('0x61'),_0x77c8d0['id']);return getTicket(_0x2cad35,_0x4785d2,_0x77c8d0,_0xc9e0e1,_0x5443ec,_0xc9e0e1[_0x33dc('0x76')],_0x7b67c9,_0x33dc('0x77'));})[_0x33dc('0x2f')](function(_0x537ae0){_0x5c3f39=_0x537ae0;logger[_0x33dc('0x2b')](_0x33dc('0x63'));logger['info'](_0x33dc('0x64'),_0x5c3f39['id']);return setRelationship(_0x7b67c9,_0x4785d2,_0x5c3f39,'users');})[_0x33dc('0x2f')](function(){return setRelationship(_0x7b67c9,_0x77c8d0,_0x5c3f39,'contacts');})[_0x33dc('0x2f')](function(){return getServerInfo(_0x7b67c9);})['then'](function(_0x102bfe){var _0x2584be=parseInt(_0x102bfe[_0x33dc('0x67')]['charAt'](0x0));var _0x347a3a=util['format'](_0x33dc('0x69'),_0x2cad35[_0x33dc('0x55')],_0x5c3f39['id']);if(_0x2584be>0x6){_0x347a3a=util[_0x33dc('0x26')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2cad35[_0x33dc('0x55')],_0x5c3f39['id']);}logger[_0x33dc('0x2b')](_0x33dc('0x73'),_0x33dc('0x6b'));emit(util[_0x33dc('0x26')](_0x33dc('0x6c'),_0xa6924f[_0x33dc('0xe')]),'trigger:browser:url',{'uri':_0x347a3a});})[_0x33dc('0x78')](function(_0x245dd3){logger['error'](_0x33dc('0x73'),JSON['stringify'](_0x245dd3));});};exports['unmanaged']=function(_0x944b0,_0x233ebc,_0x20cabf,_0x92494b,_0x1ce2d1,_0x5ecd44){var _0x184c2f,_0x3060ff,_0x5ecfec,_0x2b9d75;_0x5ecd44[_0x33dc('0x55')]=intUtil['stripTrailingSlash'](_0x5ecd44[_0x33dc('0x55')]);_0x5ecd44[_0x33dc('0x56')]=intUtil['stripTrailingSlash'](_0x5ecd44[_0x33dc('0x56')]);def[_0x33dc('0x57')]=util[_0x33dc('0x26')](_0x33dc('0x58'),_0x5ecd44[_0x33dc('0x55')]);if(_0x1ce2d1&&_0x1ce2d1[_0x33dc('0x59')]){logger['info']('['+_0x233ebc['lastevent'][_0x33dc('0x79')]()+']',_0x33dc('0x5b'));_0x233ebc[_0x33dc('0x5e')]=util[_0x33dc('0x26')](_0x33dc('0x5c'),_0x5ecd44['serverUrl'],_0x233ebc[_0x33dc('0x5d')],md5(_0x233ebc[_0x33dc('0x5d')]));}else{_0x233ebc[_0x33dc('0x5e')]='';}return getConnection(_0x5ecd44)['then'](function(_0x13b43b){_0x2b9d75=_0x13b43b;if(!_[_0x33dc('0x2a')](_0x92494b)){return getUser(_0x5ecd44,_0x92494b[_0x33dc('0xe')],_0x2b9d75);}else{return getUser(_0x5ecd44,null,_0x2b9d75);}})[_0x33dc('0x2f')](function(_0x1eb8df){_0x184c2f=_0x1eb8df;logger['info'](_0x33dc('0x5f'),_0x184c2f['id']);return getEndUser(_0x5ecd44,_0x233ebc['calleridname'],_0x233ebc[_0x33dc('0x7a')],_0x2b9d75);})['then'](function(_0x4bc142){_0x3060ff=_0x4bc142;logger[_0x33dc('0x2b')](_0x33dc('0x61'),_0x3060ff['id']);return getTicket(_0x5ecd44,_0x184c2f,_0x3060ff,_0x20cabf,_0x233ebc,_0x20cabf['Fields'],_0x2b9d75,'Inbound');})[_0x33dc('0x2f')](function(_0x1971a6){_0x5ecfec=_0x1971a6;logger['info'](_0x33dc('0x63'));logger[_0x33dc('0x2b')](_0x33dc('0x64'),_0x5ecfec['id']);return setRelationship(_0x2b9d75,_0x184c2f,_0x5ecfec,'users');})[_0x33dc('0x2f')](function(){return setRelationship(_0x2b9d75,_0x3060ff,_0x5ecfec,_0x33dc('0x66'));})['then'](function(){return getServerInfo(_0x2b9d75);})['catch'](function(_0x255f33){logger[_0x33dc('0x6e')]('['+_0x233ebc[_0x33dc('0x7b')][_0x33dc('0x79')]()+']',JSON['stringify'](_0x255f33));});};
\ No newline at end of file
+var _0xab0c=['user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','format','contacts.phone_home\x20=\x20\x22%s\x22','then','find','phone_home','Enduser\x20found!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','debug','merge','map','type','nameField','customField','toLowerCase','content','string','custom_fields','push','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','Outbound','%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','error','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','../../../../config/environment','redis','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','Subjects','description','getString','Descriptions','date_start','replace','duration_hours','duration_minutes','parent_type','Contacts','parent_name','direction','forEach','idField','variableName','set_entry','JSON','Calls','Basic\x20%s','apiKey','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','stringify','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','length','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x5cab28,_0x307622){var _0xa3554d=function(_0x330139){while(--_0x330139){_0x5cab28['push'](_0x5cab28['shift']());}};_0xa3554d(++_0x307622);}(_0xab0c,0x13c));var _0xcab0=function(_0x28e12b,_0x146a06){_0x28e12b=_0x28e12b-0x0;var _0x1efe7f=_0xab0c[_0x28e12b];return _0x1efe7f;};'use strict';var _=require(_0xcab0('0x0'));var rp=require(_0xcab0('0x1'));var BPromise=require(_0xcab0('0x2'));var md5=require('md5');var util=require(_0xcab0('0x3'));var Redis=require(_0xcab0('0x4'));var intUtil=require('./util');var config=require(_0xcab0('0x5'));var logger=require('../../../../config/logger')('sugarcrm');config[_0xcab0('0x6')]=_['defaults'](config[_0xcab0('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xcab0('0x7'))(new Redis(config[_0xcab0('0x6')]));var def={'method':_0xcab0('0x8'),'json':!![]};function emit(_0x41f8d0,_0x29ef94,_0x2faa78){io['to'](_0x41f8d0)[_0xcab0('0x9')](_0x29ef94,_0x2faa78);}function getTicket(_0x3be299,_0x27babe,_0x7e5def,_0x3b2299,_0x3ef3f7,_0x552629,_0x22b96a,_0x37cf98){logger[_0xcab0('0xa')](_0xcab0('0xb'));var _0x4637ea=new Date();var _0x4a9772=[{'name':_0xcab0('0xc'),'value':intUtil['getString'](_0x3b2299[_0xcab0('0xd')],_0x3ef3f7,'\x20')},{'name':'assigned_user_id','value':_0x27babe['id']},{'name':'created_by','value':_0x27babe['id']},{'name':_0xcab0('0xe'),'value':intUtil[_0xcab0('0xf')](_0x3b2299[_0xcab0('0x10')],_0x3ef3f7,'\x0a')},{'name':_0xcab0('0x11'),'value':_0x4637ea['toISOString']()['slice'](0x0,0x13)[_0xcab0('0x12')]('T','\x20')},{'name':_0xcab0('0x13'),'value':'0'},{'name':_0xcab0('0x14'),'value':'15'},{'name':'parent_id','value':_0x7e5def['id']},{'name':_0xcab0('0x15'),'value':_0xcab0('0x16')},{'name':_0xcab0('0x17'),'value':_0x7e5def[_0xcab0('0xc')]},{'name':_0xcab0('0x18'),'value':_0x37cf98}];if(_0x552629['length']){_[_0xcab0('0x19')](_0x552629,function(_0x2e101e){if(_0x3ef3f7[_0x2e101e['variableName']]){_0x4a9772['push']({'name':_0x2e101e[_0xcab0('0x1a')],'value':_0x3ef3f7[_0x2e101e[_0xcab0('0x1b')]]});}});}return request({'form':{'method':_0xcab0('0x1c'),'input_type':_0xcab0('0x1d'),'response_type':_0xcab0('0x1d'),'rest_data':JSON['stringify']({'session':_0x22b96a['id'],'module_name':_0xcab0('0x1e'),'name_value_list':_0x4a9772})}});}function getAuth(_0x295751){return util['format'](_0xcab0('0x1f'),new Buffer(_0x295751[_0xcab0('0x20')]+':X')[_0xcab0('0x21')](_0xcab0('0x22')));}function getServerInfo(_0x52a168){return request({'form':{'method':_0xcab0('0x23'),'input_type':_0xcab0('0x1d'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x52a168['id']})}});}function getUser(_0x559120,_0x32a69f,_0x3eec77){if(!_[_0xcab0('0x24')](_0x32a69f)){logger[_0xcab0('0xa')](_0xcab0('0x25'),_0x32a69f);return request({'form':{'method':_0xcab0('0x26'),'input_type':_0xcab0('0x1d'),'response_type':_0xcab0('0x1d'),'rest_data':JSON[_0xcab0('0x27')]({'session':_0x3eec77['id'],'module_name':_0xcab0('0x28'),'query':util['format'](_0xcab0('0x29'),_0x32a69f),'order_by':'','offset':'0','select_fields':['id',_0xcab0('0xc'),_0xcab0('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x1ed6b5){if(_0x1ed6b5[_0xcab0('0x2b')][_0xcab0('0x2c')]){var _0x4ec33b=_['find'](_0x1ed6b5[_0xcab0('0x2b')],function(_0x208bb4){return _0x208bb4[_0xcab0('0x2d')][_0xcab0('0x2a')][_0xcab0('0x2e')]===_0x32a69f;});if(_0x4ec33b){logger[_0xcab0('0xa')](_0xcab0('0x2f'));return BPromise[_0xcab0('0x30')]({'id':_0x4ec33b[_0xcab0('0x2d')]['id'][_0xcab0('0x2e')],'name':_0x4ec33b['name_value_list'][_0xcab0('0xc')][_0xcab0('0x2e')]});}}logger[_0xcab0('0xa')](_0xcab0('0x31'));return BPromise[_0xcab0('0x30')]({'id':_0x3eec77[_0xcab0('0x2d')][_0xcab0('0x32')][_0xcab0('0x2e')],'name':_0x3eec77[_0xcab0('0x2d')]['user_name'][_0xcab0('0x2e')]});});}else{logger[_0xcab0('0xa')](_0xcab0('0x33'));return BPromise['resolve']({'id':_0x3eec77[_0xcab0('0x2d')]['user_id'][_0xcab0('0x2e')],'name':_0x3eec77[_0xcab0('0x2d')][_0xcab0('0x2a')][_0xcab0('0x2e')]});}}function getEndUser(_0x1b876a,_0x1c661a,_0x5cbdbb,_0x34d354){logger[_0xcab0('0xa')](_0xcab0('0x34'),_0x5cbdbb);return request({'form':{'method':_0xcab0('0x26'),'input_type':_0xcab0('0x1d'),'response_type':_0xcab0('0x1d'),'rest_data':JSON[_0xcab0('0x27')]({'session':_0x34d354['id'],'module_name':'Contacts','query':util[_0xcab0('0x35')](_0xcab0('0x36'),_0x5cbdbb),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xcab0('0x37')](function(_0x4c4789){if(_0x4c4789[_0xcab0('0x2b')][_0xcab0('0x2c')]){var _0x34d0c0=_[_0xcab0('0x38')](_0x4c4789[_0xcab0('0x2b')],function(_0x3f9bbe){return _0x3f9bbe[_0xcab0('0x2d')][_0xcab0('0x39')][_0xcab0('0x2e')]===_0x5cbdbb;});if(_0x34d0c0){logger['info'](_0xcab0('0x3a'));return BPromise[_0xcab0('0x30')]({'id':_0x34d0c0[_0xcab0('0x2d')]['id'][_0xcab0('0x2e')],'name':_0x34d0c0['name_value_list'][_0xcab0('0xc')][_0xcab0('0x2e')],'phone':_0x34d0c0[_0xcab0('0x2d')][_0xcab0('0x39')][_0xcab0('0x2e')]});}}else{logger[_0xcab0('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0xcab0('0x1c'),'input_type':'JSON','response_type':_0xcab0('0x1d'),'rest_data':JSON[_0xcab0('0x27')]({'session':_0x34d354['id'],'module_name':_0xcab0('0x16'),'name_value_list':[{'name':'first_name','value':_0x1c661a!==_0xcab0('0x3b')?_0x1c661a:util[_0xcab0('0x35')](_0xcab0('0x3c'),_0x5cbdbb)},{'name':'phone_home','value':_0x5cbdbb}]})}})[_0xcab0('0x37')](function(_0x552c3b){logger['info'](_0xcab0('0x3d'));return BPromise[_0xcab0('0x30')]({'id':_0x552c3b['id'],'name':_0x552c3b[_0xcab0('0x2b')][_0xcab0('0x3e')]['value'],'phone':_0x552c3b['entry_list']['phone_home'][_0xcab0('0x2e')]});});}});}function request(_0x147467){logger[_0xcab0('0x3f')]('[HTTP]',JSON[_0xcab0('0x27')](_0x147467));return rp(_[_0xcab0('0x40')](def,_0x147467));}function getTags(_0x1daec3,_0x34ddd3){var _0x1a0432=[];if(_0x1daec3&&_0x1daec3['length']>0x0){_0x1a0432=_[_0xcab0('0x41')](_0x1daec3,_0x34ddd3);}return _0x1a0432;}function getCustomFields(_0x218db0,_0x502fa7){var _0xc00a7b=[];var _0x3afe6e={'custom_fields':[]};if(_0x218db0[_0xcab0('0x2c')]>0x0){_[_0xcab0('0x19')](_0x218db0,function(_0x1bfff4){if(_0x1bfff4[_0xcab0('0x42')]==='string'&&_0x1bfff4[_0xcab0('0x43')]&&!_0x1bfff4[_0xcab0('0x44')]){_0x3afe6e[_0x1bfff4[_0xcab0('0x43')][_0xcab0('0x45')]()]=_0x1bfff4[_0xcab0('0x46')][_0xcab0('0x21')]();}else if(_0x1bfff4[_0xcab0('0x42')]===_0xcab0('0x47')&&_0x1bfff4['idField']&&_0x1bfff4[_0xcab0('0x44')]){_0x3afe6e[_0xcab0('0x48')][_0xcab0('0x49')]({'id':_0x1bfff4[_0xcab0('0x1a')],'value':_0x1bfff4[_0xcab0('0x46')][_0xcab0('0x21')]()});}else if(_0x1bfff4[_0xcab0('0x42')]==='variable'&&_0x1bfff4[_0xcab0('0x1b')]&&_0x1bfff4[_0xcab0('0x1a')]&&_0x1bfff4[_0xcab0('0x44')]){_0x502fa7[_0x1bfff4[_0xcab0('0x1b')]]&&_0x3afe6e['custom_fields'][_0xcab0('0x49')]({'id':_0x1bfff4[_0xcab0('0x1a')],'value':_0x502fa7[_0x1bfff4[_0xcab0('0x1b')]][_0xcab0('0x21')]()});}else if(_0x1bfff4[_0xcab0('0x42')]===_0xcab0('0x4a')&&_0x1bfff4[_0xcab0('0x4b')]&&_0x1bfff4[_0xcab0('0x4b')][_0xcab0('0xc')]&&_0x1bfff4[_0xcab0('0x1a')]&&_0x1bfff4[_0xcab0('0x44')]){_0x502fa7[_0x1bfff4[_0xcab0('0x4b')][_0xcab0('0xc')][_0xcab0('0x45')]()]&&_0x3afe6e[_0xcab0('0x48')][_0xcab0('0x49')]({'id':_0x1bfff4[_0xcab0('0x1a')],'value':_0x502fa7[_0x1bfff4[_0xcab0('0x4b')][_0xcab0('0xc')]['toLowerCase']()][_0xcab0('0x21')]()});}});}return _0x3afe6e;}function getConnection(_0x384f32){return request({'method':_0xcab0('0x8'),'form':{'method':_0xcab0('0x4c'),'input_type':_0xcab0('0x1d'),'response_type':_0xcab0('0x1d'),'rest_data':JSON[_0xcab0('0x27')]({'user_auth':{'user_name':_0x384f32[_0xcab0('0x4d')],'password':_0x384f32[_0xcab0('0x4e')],'encryption':_0xcab0('0x4f')},'application':_0xcab0('0x50')})}})['then'](function(_0x429e79){var _0x213b76=_0x429e79;if(_0x213b76['id']){def['sessionID']=_0x213b76['id'];return BPromise[_0xcab0('0x30')](_0x213b76);}else{throw new Error(util[_0xcab0('0x35')](_0xcab0('0x51'),_0x384f32['id']));}});}function setRelationship(_0x204cab,_0x2722b6,_0x2dc32e,_0x3a09b9){return request({'form':{'method':_0xcab0('0x52'),'input_type':_0xcab0('0x1d'),'response_type':_0xcab0('0x1d'),'rest_data':JSON[_0xcab0('0x27')]({'session':_0x204cab['id'],'module_name':_0xcab0('0x1e'),'module_id':_0x2dc32e['id'],'link_field_name':_0x3a09b9,'related_ids':[_0x2722b6['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xcab0('0x53')]=function(_0x314bb8,_0x2aab70,_0x3d8273,_0x4b1913,_0x4898cc,_0xda4d0b){var _0x2064bb,_0x203680,_0x174503,_0x44fd70;_0xda4d0b[_0xcab0('0x54')]=intUtil[_0xcab0('0x55')](_0xda4d0b['remoteUri']);_0xda4d0b[_0xcab0('0x56')]=intUtil[_0xcab0('0x55')](_0xda4d0b[_0xcab0('0x56')]);def[_0xcab0('0x57')]=util['format'](_0xcab0('0x58'),_0xda4d0b[_0xcab0('0x54')]);if(_0x4898cc&&_0x4898cc[_0xcab0('0x59')]){logger[_0xcab0('0xa')](_0xcab0('0x5a'),_0xcab0('0x5b'));_0x2aab70[_0xcab0('0x5c')]=util[_0xcab0('0x35')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xda4d0b[_0xcab0('0x56')],_0x2aab70[_0xcab0('0x5d')],md5(_0x2aab70[_0xcab0('0x5d')]));}else{_0x2aab70[_0xcab0('0x5c')]='';}return getConnection(_0xda4d0b)[_0xcab0('0x37')](function(_0x254311){_0x44fd70=_0x254311;return getUser(_0xda4d0b,_0x4b1913['name'],_0x44fd70);})[_0xcab0('0x37')](function(_0x5a23){_0x2064bb=_0x5a23;logger[_0xcab0('0xa')](_0xcab0('0x5e'),_0x2064bb['id']);return getEndUser(_0xda4d0b,_0x2aab70[_0xcab0('0x5f')],_0x2aab70[_0xcab0('0x60')],_0x44fd70);})['then'](function(_0xea07b3){_0x203680=_0xea07b3;logger[_0xcab0('0xa')](_0xcab0('0x61'),_0x203680['id']);return getTicket(_0xda4d0b,_0x2064bb,_0x203680,_0x3d8273,_0x2aab70,_0x3d8273[_0xcab0('0x62')],_0x44fd70,_0xcab0('0x63'));})[_0xcab0('0x37')](function(_0x1203e1){_0x174503=_0x1203e1;logger[_0xcab0('0xa')](_0xcab0('0x64'));logger[_0xcab0('0xa')](_0xcab0('0x65'),_0x174503['id']);return setRelationship(_0x44fd70,_0x2064bb,_0x174503,_0xcab0('0x66'));})[_0xcab0('0x37')](function(){return setRelationship(_0x44fd70,_0x203680,_0x174503,_0xcab0('0x67'));})[_0xcab0('0x37')](function(){return getServerInfo(_0x44fd70);})[_0xcab0('0x37')](function(_0x43e16f){var _0x2bd37b=parseInt(_0x43e16f[_0xcab0('0x68')][_0xcab0('0x69')](0x0));var _0x5e00c8=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0xda4d0b[_0xcab0('0x54')],_0x174503['id']);if(_0x2bd37b>0x6){_0x5e00c8=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0xda4d0b[_0xcab0('0x54')],_0x174503['id']);}logger[_0xcab0('0xa')]('[QUEUE]',_0xcab0('0x6a'));emit(util['format'](_0xcab0('0x6b'),_0x4b1913[_0xcab0('0xc')]),_0xcab0('0x6c'),{'uri':_0x5e00c8});})[_0xcab0('0x6d')](function(_0x45e58a){logger['error'](_0xcab0('0x5a'),JSON[_0xcab0('0x27')](_0x45e58a));});};exports['outbound']=function(_0x1eb83c,_0x17fc96,_0x10d2f2,_0x3763d8,_0x1aaf11,_0x52834b,_0x5a6554){var _0x1d93ce,_0x55929d,_0x390f5b,_0x2ee38a;_0x52834b[_0xcab0('0x54')]=intUtil[_0xcab0('0x55')](_0x52834b['remoteUri']);_0x52834b[_0xcab0('0x56')]=intUtil[_0xcab0('0x55')](_0x52834b['serverUrl']);def[_0xcab0('0x57')]=util[_0xcab0('0x35')]('%s/service/v4_1/rest.php',_0x52834b['remoteUri']);if(_0x5a6554&&_0x5a6554[_0xcab0('0x6e')]&&_0x5a6554['recordingFormat']!==_0xcab0('0x6f')){logger[_0xcab0('0xa')](_0xcab0('0x70'),_0xcab0('0x5b'));_0x17fc96[_0xcab0('0x5c')]=util[_0xcab0('0x35')](_0xcab0('0x71'),_0x52834b[_0xcab0('0x56')],_0x17fc96['uniqueid'],md5(_0x17fc96[_0xcab0('0x5d')]));}return getConnection(_0x52834b)[_0xcab0('0x37')](function(_0x3e4d99){_0x2ee38a=_0x3e4d99;return getUser(_0x52834b,_0x3763d8[_0xcab0('0xc')],_0x2ee38a);})['then'](function(_0xfc2b6){_0x1d93ce=_0xfc2b6;logger['info'](_0xcab0('0x5e'),_0x1d93ce['id']);return getEndUser(_0x52834b,_0x17fc96['destcalleridname'],_0x17fc96[_0xcab0('0x72')],_0x2ee38a);})[_0xcab0('0x37')](function(_0x4e29b7){_0x55929d=_0x4e29b7;logger[_0xcab0('0xa')](_0xcab0('0x61'),_0x55929d['id']);return getTicket(_0x52834b,_0x1d93ce,_0x55929d,_0x10d2f2,_0x17fc96,_0x10d2f2[_0xcab0('0x62')],_0x2ee38a,_0xcab0('0x73'));})['then'](function(_0xc31b4){_0x390f5b=_0xc31b4;logger['info']('Ticket\x20created!');logger['info'](_0xcab0('0x65'),_0x390f5b['id']);return setRelationship(_0x2ee38a,_0x1d93ce,_0x390f5b,_0xcab0('0x66'));})[_0xcab0('0x37')](function(){return setRelationship(_0x2ee38a,_0x55929d,_0x390f5b,_0xcab0('0x67'));})[_0xcab0('0x37')](function(){return getServerInfo(_0x2ee38a);})['then'](function(_0x560ed6){var _0x2baadf=parseInt(_0x560ed6[_0xcab0('0x68')][_0xcab0('0x69')](0x0));var _0x361261=util[_0xcab0('0x35')](_0xcab0('0x74'),_0x52834b[_0xcab0('0x54')],_0x390f5b['id']);if(_0x2baadf>0x6){_0x361261=util['format'](_0xcab0('0x75'),_0x52834b[_0xcab0('0x54')],_0x390f5b['id']);}logger[_0xcab0('0xa')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcab0('0x35')]('user:%s',_0x3763d8['name']),_0xcab0('0x6c'),{'uri':_0x361261});})[_0xcab0('0x6d')](function(_0x12fa0c){logger[_0xcab0('0x76')]('[OUTBOUND]',JSON[_0xcab0('0x27')](_0x12fa0c));});};exports[_0xcab0('0x77')]=function(_0x4dc4d0,_0x2b9bc6,_0x3d9eba,_0x559d8b,_0x1d9b70,_0x5a2cc4){var _0x40aaef,_0x34a780,_0x101033,_0x727432;_0x5a2cc4['remoteUri']=intUtil[_0xcab0('0x55')](_0x5a2cc4['remoteUri']);_0x5a2cc4[_0xcab0('0x56')]=intUtil['stripTrailingSlash'](_0x5a2cc4[_0xcab0('0x56')]);def[_0xcab0('0x57')]=util[_0xcab0('0x35')](_0xcab0('0x58'),_0x5a2cc4['remoteUri']);if(_0x1d9b70&&_0x1d9b70['monitor_format']){logger[_0xcab0('0xa')]('['+_0x2b9bc6[_0xcab0('0x78')][_0xcab0('0x79')]()+']',_0xcab0('0x5b'));_0x2b9bc6[_0xcab0('0x5c')]=util['format'](_0xcab0('0x71'),_0x5a2cc4[_0xcab0('0x56')],_0x2b9bc6[_0xcab0('0x5d')],md5(_0x2b9bc6['uniqueid']));}else{_0x2b9bc6[_0xcab0('0x5c')]='';}return getConnection(_0x5a2cc4)[_0xcab0('0x37')](function(_0x1c3f88){_0x727432=_0x1c3f88;if(!_[_0xcab0('0x24')](_0x559d8b)){return getUser(_0x5a2cc4,_0x559d8b[_0xcab0('0xc')],_0x727432);}else{return getUser(_0x5a2cc4,null,_0x727432);}})[_0xcab0('0x37')](function(_0x58f00a){_0x40aaef=_0x58f00a;logger[_0xcab0('0xa')](_0xcab0('0x5e'),_0x40aaef['id']);return getEndUser(_0x5a2cc4,_0x2b9bc6['calleridname'],_0x2b9bc6[_0xcab0('0x60')],_0x727432);})[_0xcab0('0x37')](function(_0x5dc6d1){_0x34a780=_0x5dc6d1;logger[_0xcab0('0xa')](_0xcab0('0x61'),_0x34a780['id']);return getTicket(_0x5a2cc4,_0x40aaef,_0x34a780,_0x3d9eba,_0x2b9bc6,_0x3d9eba[_0xcab0('0x62')],_0x727432,_0xcab0('0x63'));})[_0xcab0('0x37')](function(_0x59b39f){_0x101033=_0x59b39f;logger['info'](_0xcab0('0x64'));logger['info'](_0xcab0('0x65'),_0x101033['id']);return setRelationship(_0x727432,_0x40aaef,_0x101033,_0xcab0('0x66'));})[_0xcab0('0x37')](function(){return setRelationship(_0x727432,_0x34a780,_0x101033,_0xcab0('0x67'));})['then'](function(){return getServerInfo(_0x727432);})[_0xcab0('0x6d')](function(_0x495b69){logger[_0xcab0('0x76')]('['+_0x2b9bc6[_0xcab0('0x78')][_0xcab0('0x79')]()+']',JSON[_0xcab0('0x27')](_0x495b69));});};
\ No newline at end of file
index 0475b9b..b795001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0b6=['isNil','lodash','util','length','sortBy','type','string','push','content','variable','variableName','toString','Variable','name','toLowerCase','key','format','%s:\x20%s','keyType','stripTrailingSlash','substring','lastIndexOf'];(function(_0x33aff0,_0x117390){var _0x175123=function(_0x298900){while(--_0x298900){_0x33aff0['push'](_0x33aff0['shift']());}};_0x175123(++_0x117390);}(_0xc0b6,0x135));var _0x6c0b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc0b6[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x6c0b('0x0'));var util=require(_0x6c0b('0x1'));exports['getString']=function(_0x3310a4,_0x1e104b,_0x3a24fb){var _0x55e766=[];if(_0x3310a4[_0x6c0b('0x2')]>0x0){var _0x4eb8d1=_[_0x6c0b('0x3')](_0x3310a4,['id']);for(var _0x2e8115=0x0;_0x2e8115<_0x4eb8d1[_0x6c0b('0x2')];_0x2e8115++){var _0x563339=_0x4eb8d1[_0x2e8115];if(_0x563339[_0x6c0b('0x4')]===_0x6c0b('0x5')){_0x55e766[_0x6c0b('0x6')](_0x563339[_0x6c0b('0x7')]);}else if(_0x563339['type']===_0x6c0b('0x8')&&_0x563339[_0x6c0b('0x9')]){_0x1e104b[_0x563339[_0x6c0b('0x9')]]&&_0x55e766['push'](_0x1e104b[_0x563339[_0x6c0b('0x9')]][_0x6c0b('0xa')]());}else if(_0x563339[_0x6c0b('0x4')]==='customVariable'&&_0x563339[_0x6c0b('0xb')]&&_0x563339['Variable']['name']){_0x1e104b[_0x563339[_0x6c0b('0xb')][_0x6c0b('0xc')]['toLowerCase']()]&&_0x55e766[_0x6c0b('0x6')](_0x1e104b[_0x563339[_0x6c0b('0xb')][_0x6c0b('0xc')][_0x6c0b('0xd')]()][_0x6c0b('0xa')]());}else if(_0x563339[_0x6c0b('0x4')]==='keyValue'){if(_0x563339['keyType']==='string'&&_0x563339[_0x6c0b('0xe')]){_0x55e766['push'](util[_0x6c0b('0xf')](_0x6c0b('0x10'),_0x563339[_0x6c0b('0xe')],_0x563339['keyContent']));}else if(_0x563339[_0x6c0b('0x11')]===_0x6c0b('0x8')&&_0x563339[_0x6c0b('0x9')]&&_0x563339['key']){_0x1e104b[_0x563339['variableName']]&&_0x55e766[_0x6c0b('0x6')](util['format'](_0x6c0b('0x10'),_0x563339[_0x6c0b('0xe')],_0x1e104b[_0x563339[_0x6c0b('0x9')]]));}else if(_0x563339[_0x6c0b('0x11')]==='customVariable'&&_0x563339['Variable']&&_0x563339['Variable'][_0x6c0b('0xc')]&&_0x563339['key']){_0x1e104b[_0x563339[_0x6c0b('0xb')][_0x6c0b('0xc')][_0x6c0b('0xd')]()]&&_0x55e766[_0x6c0b('0x6')](util[_0x6c0b('0xf')](_0x6c0b('0x10'),_0x563339['key'],_0x1e104b[_0x563339['Variable']['name'][_0x6c0b('0xd')]()]));}}}}return _0x55e766['join'](_0x3a24fb);};exports[_0x6c0b('0x12')]=function(_0x37ed96){var _0x42798a=_0x37ed96['slice'](-0x1);if(_0x42798a==='/'){_0x37ed96=_0x37ed96[_0x6c0b('0x13')](0x0,_0x37ed96[_0x6c0b('0x14')](_0x42798a));}return _0x37ed96;};exports['validateEmail']=function(_0x2a7417){if(!_[_0x6c0b('0x15')](_0x2a7417)&&_0x2a7417!==''){var _0x5f0b4c=/^(([^<>()\[\]\\.,;:\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 _0x5f0b4c['test'](String(_0x2a7417)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x73bb=['test','lodash','util','length','sortBy','type','push','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','string','key','%s:\x20%s','keyContent','format','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','isNil'];(function(_0x31c167,_0x56e9d0){var _0x42fbb7=function(_0x38fab2){while(--_0x38fab2){_0x31c167['push'](_0x31c167['shift']());}};_0x42fbb7(++_0x56e9d0);}(_0x73bb,0x119));var _0xb73b=function(_0x2605dc,_0x50cf7e){_0x2605dc=_0x2605dc-0x0;var _0x4568c9=_0x73bb[_0x2605dc];return _0x4568c9;};'use strict';var _=require(_0xb73b('0x0'));var util=require(_0xb73b('0x1'));exports['getString']=function(_0x32cce5,_0x249419,_0x1822ee){var _0x2d94bf=[];if(_0x32cce5[_0xb73b('0x2')]>0x0){var _0x3450f9=_[_0xb73b('0x3')](_0x32cce5,['id']);for(var _0x4de193=0x0;_0x4de193<_0x3450f9['length'];_0x4de193++){var _0x204fc=_0x3450f9[_0x4de193];if(_0x204fc[_0xb73b('0x4')]==='string'){_0x2d94bf[_0xb73b('0x5')](_0x204fc['content']);}else if(_0x204fc[_0xb73b('0x4')]===_0xb73b('0x6')&&_0x204fc[_0xb73b('0x7')]){_0x249419[_0x204fc[_0xb73b('0x7')]]&&_0x2d94bf['push'](_0x249419[_0x204fc[_0xb73b('0x7')]][_0xb73b('0x8')]());}else if(_0x204fc['type']===_0xb73b('0x9')&&_0x204fc[_0xb73b('0xa')]&&_0x204fc[_0xb73b('0xa')]['name']){_0x249419[_0x204fc[_0xb73b('0xa')][_0xb73b('0xb')][_0xb73b('0xc')]()]&&_0x2d94bf['push'](_0x249419[_0x204fc[_0xb73b('0xa')][_0xb73b('0xb')][_0xb73b('0xc')]()][_0xb73b('0x8')]());}else if(_0x204fc[_0xb73b('0x4')]===_0xb73b('0xd')){if(_0x204fc[_0xb73b('0xe')]===_0xb73b('0xf')&&_0x204fc[_0xb73b('0x10')]){_0x2d94bf['push'](util['format'](_0xb73b('0x11'),_0x204fc[_0xb73b('0x10')],_0x204fc[_0xb73b('0x12')]));}else if(_0x204fc[_0xb73b('0xe')]===_0xb73b('0x6')&&_0x204fc[_0xb73b('0x7')]&&_0x204fc[_0xb73b('0x10')]){_0x249419[_0x204fc[_0xb73b('0x7')]]&&_0x2d94bf['push'](util[_0xb73b('0x13')](_0xb73b('0x11'),_0x204fc[_0xb73b('0x10')],_0x249419[_0x204fc[_0xb73b('0x7')]]));}else if(_0x204fc[_0xb73b('0xe')]===_0xb73b('0x9')&&_0x204fc[_0xb73b('0xa')]&&_0x204fc['Variable']['name']&&_0x204fc[_0xb73b('0x10')]){_0x249419[_0x204fc[_0xb73b('0xa')][_0xb73b('0xb')]['toLowerCase']()]&&_0x2d94bf[_0xb73b('0x5')](util[_0xb73b('0x13')]('%s:\x20%s',_0x204fc[_0xb73b('0x10')],_0x249419[_0x204fc[_0xb73b('0xa')][_0xb73b('0xb')][_0xb73b('0xc')]()]));}}}}return _0x2d94bf[_0xb73b('0x14')](_0x1822ee);};exports[_0xb73b('0x15')]=function(_0x30cc73){var _0x2333bc=_0x30cc73[_0xb73b('0x16')](-0x1);if(_0x2333bc==='/'){_0x30cc73=_0x30cc73[_0xb73b('0x17')](0x0,_0x30cc73[_0xb73b('0x18')](_0x2333bc));}return _0x30cc73;};exports[_0xb73b('0x19')]=function(_0x21ea37){if(!_[_0xb73b('0x1a')](_0x21ea37)&&_0x21ea37!==''){var _0x6a30c0=/^(([^<>()\[\]\\.,;:\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 _0x6a30c0[_0xb73b('0x1b')](String(_0x21ea37)[_0xb73b('0xc')]());}else{return![];}};
\ No newline at end of file
index e6cbd4f..058f4b0 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(_0x3903df,_0x4fae4c){var _0x1a2ac5=function(_0x3fa0c4){while(--_0x3fa0c4){_0x3903df['push'](_0x3903df['shift']());}};_0x1a2ac5(++_0x4fae4c);}(_0xe706,0xa3));var _0x6e70=function(_0x1aed01,_0x3b59f3){_0x1aed01=_0x1aed01-0x0;var _0x34ccb8=_0xe706[_0x1aed01];return _0x34ccb8;};'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(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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 16ced64..9035e3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f5f=['queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','email','The\x20User\x20ID\x20is:','destcalleridnum','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','authType','password','%s:%s','username','token','%s/token:%s','toString','debug','[HTTP]','stringify','defaults','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','picklist','custom_fields','idField','content','variable','variableName','customVariable','Variable','push'];(function(_0x59e7e0,_0x3ec148){var _0x26b058=function(_0x212ee2){while(--_0x212ee2){_0x59e7e0['push'](_0x59e7e0['shift']());}};_0x26b058(++_0x3ec148);}(_0x4f5f,0x108));var _0xf4f5=function(_0x1f27df,_0x4f1a64){_0x1f27df=_0x1f27df-0x0;var _0x286ee2=_0x4f5f[_0x1f27df];return _0x286ee2;};'use strict';var _=require(_0xf4f5('0x0'));var rp=require(_0xf4f5('0x1'));var md5=require(_0xf4f5('0x2'));var util=require(_0xf4f5('0x3'));var Redis=require(_0xf4f5('0x4'));var intUtil=require(_0xf4f5('0x5'));var config=require(_0xf4f5('0x6'));var logger=require(_0xf4f5('0x7'))('zendesk');config['redis']=_['defaults'](config[_0xf4f5('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xf4f5('0x9'))(new Redis(config['redis']));function emit(_0x4ee84f,_0x1c9dae,_0x222607){io['to'](_0x4ee84f)[_0xf4f5('0xa')](_0x1c9dae,_0x222607);}var headers={'Content-Type':_0xf4f5('0xb'),'Accept':_0xf4f5('0xb')};function getTicket(_0xbd58b8,_0x34cb73,_0x228b75,_0x16e25d,_0x4f6210){logger[_0xf4f5('0xc')](_0xf4f5('0xd'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0xf'),_0xbd58b8[_0xf4f5('0x10')]),'method':_0xf4f5('0x11'),'body':{'ticket':_[_0xf4f5('0x12')]({'requester_id':_0x228b75['id'],'submitter_id':_0x34cb73?_0x34cb73['id']:undefined,'assignee_id':_0x34cb73?_0x34cb73['id']:undefined,'tags':getTags(_0x16e25d['Tags'],_0xf4f5('0x13')),'subject':intUtil[_0xf4f5('0x14')](_0x16e25d[_0xf4f5('0x15')],_0x4f6210,'\x20'),'description':intUtil[_0xf4f5('0x14')](_0x16e25d['Descriptions'],_0x4f6210,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x16e25d['Descriptions'],_0x4f6210,'\x0a')}},getCustomFields(_0x16e25d[_0xf4f5('0x16')],_0x4f6210))}})[_0xf4f5('0x17')](function(_0x4a92b4){logger[_0xf4f5('0xc')](_0xf4f5('0x18'));return _0x4a92b4['ticket'];});}function getUser(_0x376c2c,_0x58db3b){if(intUtil[_0xf4f5('0x19')](_0x58db3b)){logger[_0xf4f5('0xc')](_0xf4f5('0x1a'),_0x58db3b);return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x1b'),_0x376c2c[_0xf4f5('0x10')]),'qs':{'query':util[_0xf4f5('0xe')](_0xf4f5('0x1c'),_0x58db3b)}})[_0xf4f5('0x17')](function(_0x4243f0){if(_0x4243f0[_0xf4f5('0x1d')]){logger[_0xf4f5('0xc')](_0xf4f5('0x1e'));return _[_0xf4f5('0x1f')](_0x4243f0[_0xf4f5('0x20')],{'email':_0x58db3b,'role':_0xf4f5('0x21')});}else{logger[_0xf4f5('0xc')](_0xf4f5('0x22'));return request({'uri':util[_0xf4f5('0xe')]('%s/users/me.json',_0x376c2c[_0xf4f5('0x10')])})['then'](function(_0x1de0f9){logger[_0xf4f5('0xc')](_0xf4f5('0x23'));return _0x1de0f9[_0xf4f5('0x24')];});}});}else{logger[_0xf4f5('0xc')](_0xf4f5('0x22'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x25'),_0x376c2c[_0xf4f5('0x10')])})[_0xf4f5('0x17')](function(_0xb89c22){logger[_0xf4f5('0xc')]('Admin\x20account\x20selected.');return _0xb89c22['user'];});}}function getEndUser(_0x1ac219,_0x4e0eb0,_0x5cd280){logger['info']('Searching\x20enduser\x20with\x20phone',_0x5cd280);return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x1b'),_0x1ac219[_0xf4f5('0x10')]),'qs':{'query':util[_0xf4f5('0xe')](_0xf4f5('0x26'),_0x5cd280)}})[_0xf4f5('0x17')](function(_0x10527e){var _0x39e210;if(_0x10527e['results'][_0xf4f5('0x27')]){_0x10527e[_0xf4f5('0x20')]=_[_0xf4f5('0x28')](_0x10527e[_0xf4f5('0x20')],{'suspended':![],'role':_0xf4f5('0x29')});if(_0x10527e['results'][_0xf4f5('0x27')]){_0x39e210=_['first'](_0x10527e[_0xf4f5('0x20')]);}}if(_0x39e210){logger[_0xf4f5('0xc')](_0xf4f5('0x2a'));return _0x39e210;}else{logger[_0xf4f5('0xc')](_0xf4f5('0x2b'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x2c'),_0x1ac219['remoteUri']),'method':_0xf4f5('0x11'),'body':{'user':{'role':'end-user','name':util[_0xf4f5('0xe')](_0xf4f5('0x2d'),_0x4e0eb0||_0x5cd280),'phone':_0x5cd280}}})['then'](function(_0x59ee0b){logger[_0xf4f5('0xc')]('Enduser\x20created.');return _0x59ee0b[_0xf4f5('0x24')];});}});}function getAuth(_0x1c9602){var _0x567241;if(_0x1c9602[_0xf4f5('0x2e')]===_0xf4f5('0x2f')){_0x567241=util['format'](_0xf4f5('0x30'),_0x1c9602[_0xf4f5('0x31')],_0x1c9602[_0xf4f5('0x2f')]);}else if(_0x1c9602['authType']===_0xf4f5('0x32')){_0x567241=util[_0xf4f5('0xe')](_0xf4f5('0x33'),_0x1c9602[_0xf4f5('0x31')],_0x1c9602['token']);}return util[_0xf4f5('0xe')]('Basic\x20%s',new Buffer(_0x567241)[_0xf4f5('0x34')]('base64'));}function request(_0x5ccfde){logger[_0xf4f5('0x35')](_0xf4f5('0x36'),JSON[_0xf4f5('0x37')](_0x5ccfde));return rp(_[_0xf4f5('0x38')](_0x5ccfde,{'method':_0xf4f5('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x8e8f4e,_0xab659b){var _0xcb741b=[];if(_0x8e8f4e&&_0x8e8f4e[_0xf4f5('0x27')]>0x0){_0xcb741b=_[_0xf4f5('0x3a')](_0x8e8f4e,_0xab659b);}return _0xcb741b;}function getCustomFields(_0x37c998,_0x1949e8){var _0x3f732a=[];var _0x22f359={'custom_fields':[]};if(_0x37c998[_0xf4f5('0x27')]>0x0){_[_0xf4f5('0x3b')](_0x37c998,function(_0x23e9ef){if(_[_0xf4f5('0x3c')]([_0xf4f5('0x3d'),'picklist'],_0x23e9ef[_0xf4f5('0x3e')])&&_0x23e9ef[_0xf4f5('0x3f')]&&!_0x23e9ef[_0xf4f5('0x40')]){_0x22f359[_0x23e9ef[_0xf4f5('0x3f')][_0xf4f5('0x41')]()]=_0x23e9ef['content']['toString']();}else if(_[_0xf4f5('0x3c')](['string',_0xf4f5('0x42')],_0x23e9ef['type'])&&_0x23e9ef['idField']&&_0x23e9ef['customField']){_0x22f359[_0xf4f5('0x43')]['push']({'id':_0x23e9ef[_0xf4f5('0x44')],'value':_0x23e9ef[_0xf4f5('0x45')]['toString']()});}else if(_0x23e9ef[_0xf4f5('0x3e')]===_0xf4f5('0x46')&&_0x23e9ef[_0xf4f5('0x47')]&&_0x23e9ef[_0xf4f5('0x44')]&&_0x23e9ef[_0xf4f5('0x40')]){_0x1949e8[_0x23e9ef[_0xf4f5('0x47')]]&&_0x22f359['custom_fields']['push']({'id':_0x23e9ef['idField'],'value':_0x1949e8[_0x23e9ef['variableName']][_0xf4f5('0x34')]()});}else if(_0x23e9ef[_0xf4f5('0x3e')]===_0xf4f5('0x48')&&_0x23e9ef[_0xf4f5('0x49')]&&_0x23e9ef[_0xf4f5('0x49')]['name']&&_0x23e9ef[_0xf4f5('0x44')]&&_0x23e9ef['customField']){_0x1949e8[_0x23e9ef[_0xf4f5('0x49')][_0xf4f5('0x13')]['toLowerCase']()]&&_0x22f359[_0xf4f5('0x43')][_0xf4f5('0x4a')]({'id':_0x23e9ef[_0xf4f5('0x44')],'value':_0x1949e8[_0x23e9ef[_0xf4f5('0x49')][_0xf4f5('0x13')][_0xf4f5('0x41')]()][_0xf4f5('0x34')]()});}});}return _0x22f359;}exports[_0xf4f5('0x4b')]=function(_0x4ac2da,_0x2589cc,_0x3a431c,_0x369d09,_0x48df29,_0x3d0ac7){var _0x1d6843,_0x1ed29d;_0x3d0ac7['remoteUri']=intUtil['stripTrailingSlash'](_0x3d0ac7['remoteUri']);_0x3d0ac7[_0xf4f5('0x4c')]=intUtil[_0xf4f5('0x4d')](_0x3d0ac7[_0xf4f5('0x4c')]);if(_0x48df29&&_0x48df29[_0xf4f5('0x4e')]){logger[_0xf4f5('0xc')](_0xf4f5('0x4f'),'Recording\x20is\x20enabled!');_0x2589cc['recordingURL']=util['format'](_0xf4f5('0x50'),_0x3d0ac7[_0xf4f5('0x4c')],_0x2589cc[_0xf4f5('0x51')],md5(_0x2589cc[_0xf4f5('0x51')]));}else{_0x2589cc[_0xf4f5('0x52')]='';}headers[_0xf4f5('0x53')]=getAuth(_0x3d0ac7);return getUser(_0x3d0ac7,_0x369d09['email'])[_0xf4f5('0x17')](function(_0x32e584){_0x1d6843=_0x32e584;logger['info']('The\x20User\x20ID\x20is:',_0x1d6843['id']);return getEndUser(_0x3d0ac7,_0x2589cc[_0xf4f5('0x54')],_0x2589cc[_0xf4f5('0x55')]);})[_0xf4f5('0x17')](function(_0x9031a7){_0x1ed29d=_0x9031a7;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1ed29d['id']);return getTicket(_0x3d0ac7,_0x1d6843,_0x1ed29d,_0x3a431c,_0x2589cc);})[_0xf4f5('0x17')](function(_0x216199){if(_0x216199){logger[_0xf4f5('0xc')](_0xf4f5('0x56'),_0x216199['id']);switch(_0x3d0ac7[_0xf4f5('0x3e')]){case _0xf4f5('0x57'):logger['info']('[QUEUE]',_0xf4f5('0x58'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x59'),_0x3d0ac7[_0xf4f5('0x10')],_0x1d6843['id'],_0x216199['id']),'method':_0xf4f5('0x11')});case _0xf4f5('0x5a'):logger['info'](_0xf4f5('0x4f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf4f5('0xe')](_0xf4f5('0x5b'),_0x369d09[_0xf4f5('0x13')]),'trigger:browser:url',{'uri':util[_0xf4f5('0xe')]('%s/agent/tickets/%s',_0x3d0ac7[_0xf4f5('0x10')][_0xf4f5('0x5c')](_0xf4f5('0x5d'),''),_0x216199['id'])});break;default:logger[_0xf4f5('0x5e')](_0xf4f5('0x4f'),_0xf4f5('0x5f'));}}})[_0xf4f5('0x60')](function(_0x1b9186){logger[_0xf4f5('0x5e')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xf4f5('0x61')](_0x1b9186,{'showHidden':!![],'depth':null}));});};exports[_0xf4f5('0x62')]=function(_0x3ec935,_0x153f6c,_0x2059d7,_0x41e143,_0x2ef1b0,_0x2659d3,_0x1bff9d){var _0x43901f,_0x24a387;_0x2659d3[_0xf4f5('0x10')]=intUtil[_0xf4f5('0x4d')](_0x2659d3['remoteUri']);_0x2659d3[_0xf4f5('0x4c')]=intUtil[_0xf4f5('0x4d')](_0x2659d3[_0xf4f5('0x4c')]);if(_0x1bff9d&&_0x1bff9d[_0xf4f5('0x63')]&&_0x1bff9d[_0xf4f5('0x63')]!==_0xf4f5('0x64')){logger[_0xf4f5('0xc')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x153f6c[_0xf4f5('0x52')]=util[_0xf4f5('0xe')](_0xf4f5('0x50'),_0x2659d3['serverUrl'],_0x153f6c[_0xf4f5('0x51')],md5(_0x153f6c['uniqueid']));}headers['Authorization']=getAuth(_0x2659d3);return getUser(_0x2659d3,_0x41e143[_0xf4f5('0x65')])[_0xf4f5('0x17')](function(_0x58ee60){_0x43901f=_0x58ee60;logger[_0xf4f5('0xc')](_0xf4f5('0x66'),_0x43901f['id']);return getEndUser(_0x2659d3,_0x153f6c['destcalleridname'],_0x153f6c[_0xf4f5('0x67')]);})[_0xf4f5('0x17')](function(_0x2a2ee4){_0x24a387=_0x2a2ee4;logger[_0xf4f5('0xc')](_0xf4f5('0x68'),_0x24a387['id']);return getTicket(_0x2659d3,_0x43901f,_0x24a387,_0x2059d7,_0x153f6c);})[_0xf4f5('0x17')](function(_0x1703a2){if(_0x1703a2){logger[_0xf4f5('0xc')](_0xf4f5('0x56'),_0x1703a2['id']);switch(_0x2659d3[_0xf4f5('0x3e')]){case _0xf4f5('0x57'):logger[_0xf4f5('0xc')]('[OUTBOUND]',_0xf4f5('0x58'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x59'),_0x2659d3[_0xf4f5('0x10')],_0x43901f['id'],_0x1703a2['id']),'method':_0xf4f5('0x11')});case _0xf4f5('0x5a'):logger['info'](_0xf4f5('0x69'),_0xf4f5('0x6a'));emit(util[_0xf4f5('0xe')](_0xf4f5('0x5b'),_0x41e143[_0xf4f5('0x13')]),_0xf4f5('0x6b'),{'uri':util[_0xf4f5('0xe')]('%s/agent/tickets/%s',_0x2659d3[_0xf4f5('0x10')][_0xf4f5('0x5c')](_0xf4f5('0x5d'),''),_0x1703a2['id'])});break;default:logger[_0xf4f5('0x5e')](_0xf4f5('0x69'),_0xf4f5('0x5f'));}}})[_0xf4f5('0x60')](function(_0x8be2e9){logger[_0xf4f5('0x5e')](_0xf4f5('0x6c'),util[_0xf4f5('0x61')](_0x8be2e9,{'showHidden':!![],'depth':null}));});};exports[_0xf4f5('0x6d')]=function(_0x382b45,_0x6e8644,_0x3ae49f,_0xb22fe5,_0x47f1dc,_0x572622){var _0x2b2120,_0x10f7d9;_0x572622['remoteUri']=intUtil[_0xf4f5('0x4d')](_0x572622[_0xf4f5('0x10')]);_0x572622[_0xf4f5('0x4c')]=intUtil[_0xf4f5('0x4d')](_0x572622[_0xf4f5('0x4c')]);if(_0x47f1dc&&_0x47f1dc[_0xf4f5('0x4e')]){logger['info']('['+_0x6e8644[_0xf4f5('0x6e')][_0xf4f5('0x6f')]()+']',_0xf4f5('0x70'));_0x6e8644[_0xf4f5('0x52')]=util[_0xf4f5('0xe')](_0xf4f5('0x50'),_0x572622['serverUrl'],_0x6e8644[_0xf4f5('0x51')],md5(_0x6e8644['uniqueid']));}else{_0x6e8644['recordingURL']='';}headers['Authorization']=getAuth(_0x572622);return getUser(_0x572622)[_0xf4f5('0x17')](function(_0x5c7b9c){_0x2b2120=_0x5c7b9c;logger[_0xf4f5('0xc')](_0xf4f5('0x66'),_0x2b2120['id']);return getEndUser(_0x572622,_0x6e8644[_0xf4f5('0x54')],_0x6e8644[_0xf4f5('0x55')]);})[_0xf4f5('0x17')](function(_0x484266){_0x10f7d9=_0x484266;logger[_0xf4f5('0xc')](_0xf4f5('0x68'),_0x10f7d9['id']);return getTicket(_0x572622,_0x2b2120,_0x10f7d9,_0x3ae49f,_0x6e8644);})[_0xf4f5('0x17')](function(_0x1e03bf){if(_0x1e03bf){logger[_0xf4f5('0xc')](_0xf4f5('0x56'),_0x1e03bf['id']);}})[_0xf4f5('0x60')](function(_0x102cd1){logger[_0xf4f5('0x5e')]('['+_0x6e8644[_0xf4f5('0x6e')]['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x102cd1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb3a7=['Subjects','getString','Fields','then','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','POST','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','toString','base64','debug','[HTTP]','stringify','map','string','type','customField','nameField','content','includes','picklist','idField','custom_fields','push','variable','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','Zendesk\x20account\x20type\x20not\x20recognized','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','The\x20User\x20ID\x20is:','destcalleridnum','integrationTab','/api/v2','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','Tags','name'];(function(_0x31002b,_0x52a91c){var _0x45bc5c=function(_0x315745){while(--_0x315745){_0x31002b['push'](_0x31002b['shift']());}};_0x45bc5c(++_0x52a91c);}(_0xb3a7,0x1a2));var _0x7b3a=function(_0x120038,_0x387092){_0x120038=_0x120038-0x0;var _0x3eebc3=_0xb3a7[_0x120038];return _0x3eebc3;};'use strict';var _=require(_0x7b3a('0x0'));var rp=require(_0x7b3a('0x1'));var md5=require('md5');var util=require(_0x7b3a('0x2'));var Redis=require(_0x7b3a('0x3'));var intUtil=require('./util');var config=require(_0x7b3a('0x4'));var logger=require(_0x7b3a('0x5'))('zendesk');config[_0x7b3a('0x6')]=_[_0x7b3a('0x7')](config[_0x7b3a('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x7b3a('0x8'))(new Redis(config[_0x7b3a('0x6')]));function emit(_0x5974c0,_0x316250,_0x46f229){io['to'](_0x5974c0)[_0x7b3a('0x9')](_0x316250,_0x46f229);}var headers={'Content-Type':_0x7b3a('0xa'),'Accept':_0x7b3a('0xa')};function getTicket(_0xe2a7b3,_0x5e9e0d,_0x1614f0,_0x2c679a,_0x1c46ee){logger[_0x7b3a('0xb')](_0x7b3a('0xc'));return request({'uri':util[_0x7b3a('0xd')](_0x7b3a('0xe'),_0xe2a7b3[_0x7b3a('0xf')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x1614f0['id'],'submitter_id':_0x5e9e0d?_0x5e9e0d['id']:undefined,'assignee_id':_0x5e9e0d?_0x5e9e0d['id']:undefined,'tags':getTags(_0x2c679a[_0x7b3a('0x10')],_0x7b3a('0x11')),'subject':intUtil['getString'](_0x2c679a[_0x7b3a('0x12')],_0x1c46ee,'\x20'),'description':intUtil[_0x7b3a('0x13')](_0x2c679a['Descriptions'],_0x1c46ee,'\x0a'),'comment':{'public':![],'body':intUtil[_0x7b3a('0x13')](_0x2c679a['Descriptions'],_0x1c46ee,'\x0a')}},getCustomFields(_0x2c679a[_0x7b3a('0x14')],_0x1c46ee))}})[_0x7b3a('0x15')](function(_0x573824){logger[_0x7b3a('0xb')]('Ticket\x20created!');return _0x573824['ticket'];});}function getUser(_0x3afe59,_0x306254){if(intUtil[_0x7b3a('0x16')](_0x306254)){logger[_0x7b3a('0xb')](_0x7b3a('0x17'),_0x306254);return request({'uri':util['format'](_0x7b3a('0x18'),_0x3afe59[_0x7b3a('0xf')]),'qs':{'query':util[_0x7b3a('0xd')](_0x7b3a('0x19'),_0x306254)}})['then'](function(_0x22ecd1){if(_0x22ecd1[_0x7b3a('0x1a')]){logger[_0x7b3a('0xb')]('Agent\x20found!');return _[_0x7b3a('0x1b')](_0x22ecd1[_0x7b3a('0x1c')],{'email':_0x306254,'role':'agent'});}else{logger[_0x7b3a('0xb')](_0x7b3a('0x1d'));return request({'uri':util['format']('%s/users/me.json',_0x3afe59['remoteUri'])})[_0x7b3a('0x15')](function(_0x42afb2){logger[_0x7b3a('0xb')](_0x7b3a('0x1e'));return _0x42afb2[_0x7b3a('0x1f')];});}});}else{logger[_0x7b3a('0xb')](_0x7b3a('0x1d'));return request({'uri':util[_0x7b3a('0xd')]('%s/users/me.json',_0x3afe59[_0x7b3a('0xf')])})[_0x7b3a('0x15')](function(_0x109dfa){logger[_0x7b3a('0xb')](_0x7b3a('0x1e'));return _0x109dfa['user'];});}}function getEndUser(_0x3556a2,_0x2f6a82,_0x2c1504){logger[_0x7b3a('0xb')](_0x7b3a('0x20'),_0x2c1504);return request({'uri':util['format']('%s/search.json',_0x3556a2[_0x7b3a('0xf')]),'qs':{'query':util[_0x7b3a('0xd')](_0x7b3a('0x21'),_0x2c1504)}})[_0x7b3a('0x15')](function(_0x1bba5e){var _0x323d9c;if(_0x1bba5e[_0x7b3a('0x1c')][_0x7b3a('0x22')]){_0x1bba5e[_0x7b3a('0x1c')]=_[_0x7b3a('0x23')](_0x1bba5e[_0x7b3a('0x1c')],{'suspended':![],'role':_0x7b3a('0x24')});if(_0x1bba5e[_0x7b3a('0x1c')]['length']){_0x323d9c=_[_0x7b3a('0x25')](_0x1bba5e['results']);}}if(_0x323d9c){logger[_0x7b3a('0xb')](_0x7b3a('0x26'));return _0x323d9c;}else{logger[_0x7b3a('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x7b3a('0xd')]('%s/users.json',_0x3556a2['remoteUri']),'method':_0x7b3a('0x27'),'body':{'user':{'role':'end-user','name':util[_0x7b3a('0xd')](_0x7b3a('0x28'),_0x2f6a82||_0x2c1504),'phone':_0x2c1504}}})[_0x7b3a('0x15')](function(_0x2331d6){logger['info'](_0x7b3a('0x29'));return _0x2331d6[_0x7b3a('0x1f')];});}});}function getAuth(_0x2b668a){var _0x3cbe90;if(_0x2b668a[_0x7b3a('0x2a')]===_0x7b3a('0x2b')){_0x3cbe90=util[_0x7b3a('0xd')](_0x7b3a('0x2c'),_0x2b668a[_0x7b3a('0x2d')],_0x2b668a[_0x7b3a('0x2b')]);}else if(_0x2b668a[_0x7b3a('0x2a')]===_0x7b3a('0x2e')){_0x3cbe90=util['format']('%s/token:%s',_0x2b668a[_0x7b3a('0x2d')],_0x2b668a[_0x7b3a('0x2e')]);}return util[_0x7b3a('0xd')]('Basic\x20%s',new Buffer(_0x3cbe90)[_0x7b3a('0x2f')](_0x7b3a('0x30')));}function request(_0x559cab){logger[_0x7b3a('0x31')](_0x7b3a('0x32'),JSON[_0x7b3a('0x33')](_0x559cab));return rp(_['defaults'](_0x559cab,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4bf56c,_0x4f7315){var _0x1b4f57=[];if(_0x4bf56c&&_0x4bf56c[_0x7b3a('0x22')]>0x0){_0x1b4f57=_[_0x7b3a('0x34')](_0x4bf56c,_0x4f7315);}return _0x1b4f57;}function getCustomFields(_0x1761a4,_0x5b9f9d){var _0x4668cf=[];var _0x5c648b={'custom_fields':[]};if(_0x1761a4[_0x7b3a('0x22')]>0x0){_['forEach'](_0x1761a4,function(_0x16ea3d){if(_['includes']([_0x7b3a('0x35'),'picklist'],_0x16ea3d[_0x7b3a('0x36')])&&_0x16ea3d['nameField']&&!_0x16ea3d[_0x7b3a('0x37')]){_0x5c648b[_0x16ea3d[_0x7b3a('0x38')]['toLowerCase']()]=_0x16ea3d[_0x7b3a('0x39')][_0x7b3a('0x2f')]();}else if(_[_0x7b3a('0x3a')]([_0x7b3a('0x35'),_0x7b3a('0x3b')],_0x16ea3d[_0x7b3a('0x36')])&&_0x16ea3d[_0x7b3a('0x3c')]&&_0x16ea3d[_0x7b3a('0x37')]){_0x5c648b[_0x7b3a('0x3d')][_0x7b3a('0x3e')]({'id':_0x16ea3d[_0x7b3a('0x3c')],'value':_0x16ea3d[_0x7b3a('0x39')][_0x7b3a('0x2f')]()});}else if(_0x16ea3d[_0x7b3a('0x36')]===_0x7b3a('0x3f')&&_0x16ea3d[_0x7b3a('0x40')]&&_0x16ea3d[_0x7b3a('0x3c')]&&_0x16ea3d['customField']){_0x5b9f9d[_0x16ea3d[_0x7b3a('0x40')]]&&_0x5c648b['custom_fields'][_0x7b3a('0x3e')]({'id':_0x16ea3d['idField'],'value':_0x5b9f9d[_0x16ea3d[_0x7b3a('0x40')]][_0x7b3a('0x2f')]()});}else if(_0x16ea3d[_0x7b3a('0x36')]===_0x7b3a('0x41')&&_0x16ea3d[_0x7b3a('0x42')]&&_0x16ea3d[_0x7b3a('0x42')][_0x7b3a('0x11')]&&_0x16ea3d[_0x7b3a('0x3c')]&&_0x16ea3d[_0x7b3a('0x37')]){_0x5b9f9d[_0x16ea3d[_0x7b3a('0x42')][_0x7b3a('0x11')][_0x7b3a('0x43')]()]&&_0x5c648b['custom_fields'][_0x7b3a('0x3e')]({'id':_0x16ea3d[_0x7b3a('0x3c')],'value':_0x5b9f9d[_0x16ea3d[_0x7b3a('0x42')][_0x7b3a('0x11')][_0x7b3a('0x43')]()]['toString']()});}});}return _0x5c648b;}exports[_0x7b3a('0x44')]=function(_0x3c1c17,_0x29f060,_0x5d2ba1,_0x24e91b,_0x45c414,_0x2fe70f){var _0x1d24ed,_0x374acf;_0x2fe70f['remoteUri']=intUtil[_0x7b3a('0x45')](_0x2fe70f['remoteUri']);_0x2fe70f[_0x7b3a('0x46')]=intUtil[_0x7b3a('0x45')](_0x2fe70f['serverUrl']);if(_0x45c414&&_0x45c414[_0x7b3a('0x47')]){logger[_0x7b3a('0xb')]('[QUEUE]',_0x7b3a('0x48'));_0x29f060[_0x7b3a('0x49')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2fe70f[_0x7b3a('0x46')],_0x29f060[_0x7b3a('0x4a')],md5(_0x29f060[_0x7b3a('0x4a')]));}else{_0x29f060[_0x7b3a('0x49')]='';}headers['Authorization']=getAuth(_0x2fe70f);return getUser(_0x2fe70f,_0x24e91b[_0x7b3a('0x4b')])[_0x7b3a('0x15')](function(_0x4e4d93){_0x1d24ed=_0x4e4d93;logger[_0x7b3a('0xb')]('The\x20User\x20ID\x20is:',_0x1d24ed['id']);return getEndUser(_0x2fe70f,_0x29f060[_0x7b3a('0x4c')],_0x29f060['calleridnum']);})[_0x7b3a('0x15')](function(_0x581e96){_0x374acf=_0x581e96;logger['info'](_0x7b3a('0x4d'),_0x374acf['id']);return getTicket(_0x2fe70f,_0x1d24ed,_0x374acf,_0x5d2ba1,_0x29f060);})['then'](function(_0xbce9c5){if(_0xbce9c5){logger[_0x7b3a('0xb')](_0x7b3a('0x4e'),_0xbce9c5['id']);switch(_0x2fe70f[_0x7b3a('0x36')]){case'integrationTab':logger[_0x7b3a('0xb')]('[QUEUE]',_0x7b3a('0x4f'));return request({'uri':util[_0x7b3a('0xd')](_0x7b3a('0x50'),_0x2fe70f[_0x7b3a('0xf')],_0x1d24ed['id'],_0xbce9c5['id']),'method':_0x7b3a('0x27')});case _0x7b3a('0x51'):logger[_0x7b3a('0xb')](_0x7b3a('0x52'),_0x7b3a('0x53'));emit(util[_0x7b3a('0xd')](_0x7b3a('0x54'),_0x24e91b['name']),_0x7b3a('0x55'),{'uri':util['format'](_0x7b3a('0x56'),_0x2fe70f[_0x7b3a('0xf')][_0x7b3a('0x57')]('/api/v2',''),_0xbce9c5['id'])});break;default:logger['error'](_0x7b3a('0x52'),_0x7b3a('0x58'));}}})['catch'](function(_0x4b1d0f){logger[_0x7b3a('0x59')](_0x7b3a('0x5a'),util['inspect'](_0x4b1d0f,{'showHidden':!![],'depth':null}));});};exports[_0x7b3a('0x5b')]=function(_0x3e1081,_0x59bfc6,_0x565509,_0x2bd1d5,_0x91b304,_0x55d29d,_0x4c46be){var _0x4cb893,_0x43ad99;_0x55d29d[_0x7b3a('0xf')]=intUtil[_0x7b3a('0x45')](_0x55d29d[_0x7b3a('0xf')]);_0x55d29d[_0x7b3a('0x46')]=intUtil[_0x7b3a('0x45')](_0x55d29d['serverUrl']);if(_0x4c46be&&_0x4c46be['recordingFormat']&&_0x4c46be[_0x7b3a('0x5c')]!==_0x7b3a('0x5d')){logger[_0x7b3a('0xb')](_0x7b3a('0x5e'),_0x7b3a('0x48'));_0x59bfc6[_0x7b3a('0x49')]=util['format'](_0x7b3a('0x5f'),_0x55d29d[_0x7b3a('0x46')],_0x59bfc6[_0x7b3a('0x4a')],md5(_0x59bfc6[_0x7b3a('0x4a')]));}headers[_0x7b3a('0x60')]=getAuth(_0x55d29d);return getUser(_0x55d29d,_0x2bd1d5[_0x7b3a('0x4b')])[_0x7b3a('0x15')](function(_0x511d9a){_0x4cb893=_0x511d9a;logger['info'](_0x7b3a('0x61'),_0x4cb893['id']);return getEndUser(_0x55d29d,_0x59bfc6['destcalleridname'],_0x59bfc6[_0x7b3a('0x62')]);})[_0x7b3a('0x15')](function(_0x207d8a){_0x43ad99=_0x207d8a;logger[_0x7b3a('0xb')](_0x7b3a('0x4d'),_0x43ad99['id']);return getTicket(_0x55d29d,_0x4cb893,_0x43ad99,_0x565509,_0x59bfc6);})[_0x7b3a('0x15')](function(_0x166319){if(_0x166319){logger['info'](_0x7b3a('0x4e'),_0x166319['id']);switch(_0x55d29d[_0x7b3a('0x36')]){case _0x7b3a('0x63'):logger[_0x7b3a('0xb')](_0x7b3a('0x5e'),_0x7b3a('0x4f'));return request({'uri':util[_0x7b3a('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x55d29d[_0x7b3a('0xf')],_0x4cb893['id'],_0x166319['id']),'method':'POST'});case _0x7b3a('0x51'):logger[_0x7b3a('0xb')]('[OUTBOUND]',_0x7b3a('0x53'));emit(util['format'](_0x7b3a('0x54'),_0x2bd1d5[_0x7b3a('0x11')]),_0x7b3a('0x55'),{'uri':util['format'](_0x7b3a('0x56'),_0x55d29d[_0x7b3a('0xf')][_0x7b3a('0x57')](_0x7b3a('0x64'),''),_0x166319['id'])});break;default:logger[_0x7b3a('0x59')](_0x7b3a('0x5e'),_0x7b3a('0x58'));}}})[_0x7b3a('0x65')](function(_0x3c715d){logger[_0x7b3a('0x59')](_0x7b3a('0x66'),util[_0x7b3a('0x67')](_0x3c715d,{'showHidden':!![],'depth':null}));});};exports[_0x7b3a('0x68')]=function(_0x30f66c,_0x366709,_0x806aae,_0x6d5f2,_0x27c1a3,_0x1814cb){var _0x165efe,_0x4fbf8f;_0x1814cb[_0x7b3a('0xf')]=intUtil[_0x7b3a('0x45')](_0x1814cb['remoteUri']);_0x1814cb[_0x7b3a('0x46')]=intUtil[_0x7b3a('0x45')](_0x1814cb[_0x7b3a('0x46')]);if(_0x27c1a3&&_0x27c1a3[_0x7b3a('0x47')]){logger[_0x7b3a('0xb')]('['+_0x366709[_0x7b3a('0x69')][_0x7b3a('0x6a')]()+']','Recording\x20is\x20enabled!');_0x366709[_0x7b3a('0x49')]=util[_0x7b3a('0xd')](_0x7b3a('0x5f'),_0x1814cb[_0x7b3a('0x46')],_0x366709[_0x7b3a('0x4a')],md5(_0x366709[_0x7b3a('0x4a')]));}else{_0x366709[_0x7b3a('0x49')]='';}headers[_0x7b3a('0x60')]=getAuth(_0x1814cb);return getUser(_0x1814cb)[_0x7b3a('0x15')](function(_0x332b2e){_0x165efe=_0x332b2e;logger[_0x7b3a('0xb')](_0x7b3a('0x61'),_0x165efe['id']);return getEndUser(_0x1814cb,_0x366709[_0x7b3a('0x4c')],_0x366709[_0x7b3a('0x6b')]);})[_0x7b3a('0x15')](function(_0x38538c){_0x4fbf8f=_0x38538c;logger['info'](_0x7b3a('0x4d'),_0x4fbf8f['id']);return getTicket(_0x1814cb,_0x165efe,_0x4fbf8f,_0x806aae,_0x366709);})['then'](function(_0x55ac03){if(_0x55ac03){logger[_0x7b3a('0xb')](_0x7b3a('0x4e'),_0x55ac03['id']);}})['catch'](function(_0x2bbf56){logger[_0x7b3a('0x59')]('['+_0x366709[_0x7b3a('0x69')][_0x7b3a('0x6a')]()+']'+_0x7b3a('0x6c'),util['inspect'](_0x2bbf56,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index fe4acc5..ea5968f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6d=['defaults','localhost','emit','debug','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','clientSecret','refresh_token','add','seconds','error','Failing\x20creating\x20the\x20access_token','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','info','Using\x20the\x20admin\x20account!','user','Administrator','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','then','data','enduserType','POST','/crm/v2/','moduleCreate','role','first_name','last_name','code','SUCCESS','details','startCase','Error:\x20','log','CREATE\x20ERROR','moduleSearch','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','profile','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','YYYY-MM-DDTHH:mm:ss','diff','starttime','called','Call_Result','Called','connect','Answered','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','err','stack','queue','host','serverUrl','stripTrailingSlash','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','https://crm.','unmanaged','monitor_format','toUpperCase','lastevent','lodash','md5','util','./util','moment','bluebird','../../../../config/logger','zoho','redis'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xcc6d,0x1c8));var _0xdcc6=function(_0x2dc81b,_0xcd0da4){_0x2dc81b=_0x2dc81b-0x0;var _0x44d912=_0xcc6d[_0x2dc81b];return _0x44d912;};'use strict';var _=require(_0xdcc6('0x0'));var rp=require('request-promise');var md5=require(_0xdcc6('0x1'));var util=require(_0xdcc6('0x2'));var intUtil=require(_0xdcc6('0x3'));var moment=require(_0xdcc6('0x4'));var Redis=require('ioredis');var BPromise=require(_0xdcc6('0x5'));var config=require('../../../../config/environment');var logger=require(_0xdcc6('0x6'))(_0xdcc6('0x7'));config[_0xdcc6('0x8')]=_[_0xdcc6('0x9')](config['redis'],{'host':_0xdcc6('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdcc6('0x8')]));function emit(_0xa357bb,_0x4be25b,_0x4b2ef8){io['to'](_0xa357bb)[_0xdcc6('0xb')](_0x4be25b,_0x4b2ef8);}function request(_0x6c0ea2){logger[_0xdcc6('0xc')](_0xdcc6('0xd'),JSON[_0xdcc6('0xe')](_0x6c0ea2));return rp(_0x6c0ea2);}function getCustomFields(_0x4dffe5,_0x301e8b){var _0x4ef2c1={};if(_0x4dffe5[_0xdcc6('0xf')]>0x0){_[_0xdcc6('0x10')](_0x4dffe5,function(_0x24f77a){if(_[_0xdcc6('0x11')]([_0xdcc6('0x12'),'picklist'],_0x24f77a[_0xdcc6('0x13')])&&_0x24f77a['idField']){_0x4ef2c1[_0x24f77a[_0xdcc6('0x14')]]=_0x24f77a[_0xdcc6('0x15')][_0xdcc6('0x16')]();}else if(_0x24f77a['type']==='variable'&&_0x24f77a['variableName']&&_0x24f77a[_0xdcc6('0x14')]&&_0x301e8b[_0x24f77a[_0xdcc6('0x17')]]){_0x4ef2c1[_0x24f77a[_0xdcc6('0x14')]]=_0x301e8b[_0x24f77a['variableName']][_0xdcc6('0x16')]();}else if(_0x24f77a['type']===_0xdcc6('0x18')&&_0x24f77a[_0xdcc6('0x19')]&&_0x24f77a[_0xdcc6('0x19')][_0xdcc6('0x1a')]&&_0x24f77a['idField']&&_0x301e8b[_0x24f77a[_0xdcc6('0x19')][_0xdcc6('0x1a')]['toLowerCase']()]){_0x4ef2c1[_0x24f77a[_0xdcc6('0x14')]]=_0x301e8b[_0x24f77a['Variable']['name'][_0xdcc6('0x1b')]()][_0xdcc6('0x16')]();}});}return _0x4ef2c1;}function getName(_0x547015){if(_0x547015[_0xdcc6('0x1c')]('\x20')>0x0){var _0x168183=_0x547015[_0xdcc6('0x1d')](/ (.+)/);if(_0x168183[0x1]){return _0x168183;}}return[_0x547015,_0x547015];}var accountsTokens={};function getAccessToken(_0x4b7e6a){return new Promise(function(_0x44acd4,_0x118953){if(!_[_0xdcc6('0x1e')](accountsTokens[_0x4b7e6a['id']])&&!_['isNil'](accountsTokens[_0x4b7e6a['id']][_0xdcc6('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x4b7e6a['id']][_0xdcc6('0x20')])){_0x44acd4(accountsTokens[_0x4b7e6a['id']][_0xdcc6('0x1f')]);}}var _0x50ab44;switch(_0x4b7e6a[_0xdcc6('0x21')]){case'US':_0x50ab44=_0xdcc6('0x22');break;case'AU':_0x50ab44=_0xdcc6('0x23');break;case'EU':_0x50ab44=_0xdcc6('0x24');break;case'IN':_0x50ab44='https://accounts.zoho.in';break;case'CN':_0x50ab44=_0xdcc6('0x25');break;default:_0x50ab44=_0xdcc6('0x24');break;}var _0x4662d1={'method':'POST','uri':_0x50ab44+'/oauth/v2/token','qs':{'refresh_token':_0x4b7e6a['refreshToken'],'client_id':_0x4b7e6a['clientId'],'client_secret':_0x4b7e6a[_0xdcc6('0x26')],'grant_type':_0xdcc6('0x27')},'json':!![]};return rp(_0x4662d1)['then'](function(_0xbcbc4b){accountsTokens[_0x4b7e6a['id']]={'access_token':_0xbcbc4b[_0xdcc6('0x1f')],'expires_in':moment()[_0xdcc6('0x28')](_0xbcbc4b['expires_in'],_0xdcc6('0x29'))};_0x44acd4(_0xbcbc4b['access_token']);})['catch'](function(_0x526e04){logger[_0xdcc6('0x2a')](_0xdcc6('0x2b'),_0x526e04['stack']);_0x118953(_0x526e04);});});}function getUser(_0x4194ef,_0xe014fb,_0xaddbb8,_0x226a7d){logger['info']('Search\x20user');return request({'method':_0xdcc6('0x2c'),'uri':util[_0xdcc6('0x2d')](_0xdcc6('0x2e'),_0xe014fb),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0xdcc6('0x2f')+_0x4194ef},'json':!![]})['then'](function(_0x354196){if(_0x354196[_0xdcc6('0x30')]){var _0x1eb29c=-0x1;if(_[_0xdcc6('0x31')](_0x354196[_0xdcc6('0x30')])){if(!_[_0xdcc6('0x1e')](_0x226a7d)){_0x1eb29c=_[_0xdcc6('0x32')](_0x354196[_0xdcc6('0x30')],function(_0x5cb4d4){return _0x5cb4d4['email']===_0x226a7d;});}if(_0x1eb29c>=0x0){logger[_0xdcc6('0x33')]('Agent\x20found!');}else{logger[_0xdcc6('0x33')](_0xdcc6('0x34'));_0x1eb29c=_[_0xdcc6('0x32')](_0x354196[_0xdcc6('0x30')],function(_0xb5c79d){return _0xb5c79d['profile']['name']==='Administrator';});}return _0x354196[_0xdcc6('0x30')][_0x1eb29c];}else{if(_0x354196[_0xdcc6('0x35')]['profile'][_0xdcc6('0x1a')]===_0xdcc6('0x36')){logger[_0xdcc6('0x33')](_0xdcc6('0x34'));user=_0x354196[_0xdcc6('0x35')];return user;}else{logger[_0xdcc6('0x2a')](_0xdcc6('0x37'),JSON['stringify'](_0x354196));throw new Error(_0xdcc6('0x38')+JSON[_0xdcc6('0xe')](_0x354196));}}}else{logger[_0xdcc6('0x2a')](_0xdcc6('0x37'),JSON[_0xdcc6('0xe')](_0x354196));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xdcc6('0xe')](_0x354196));}})[_0xdcc6('0x39')](function(_0x334ee5){console[_0xdcc6('0x2a')](_0x334ee5);});}function getZohoUser(_0x1aa417,_0x490927){return new BPromise(function(_0x2efdce,_0x26c850){request(_0x1aa417)[_0xdcc6('0x3a')](function(_0x123b67){var _0x429535=null;if(_0x123b67){_0x429535=_0x123b67[_0xdcc6('0x3b')][0x0];_0x429535[_0xdcc6('0x3c')]=_0x490927;}_0x2efdce(_0x429535);})[_0xdcc6('0x39')](function(_0x5b2c3b){_0x26c850(_0x5b2c3b);});});}function createEndUser(_0x1c64f2,_0x9a2156,_0x5a7eac,_0x11dd13,_0x58b858,_0x272aad){var _0x5a7eac=getName(_0x5a7eac);return request({'method':_0xdcc6('0x3d'),'uri':'https://www.zohoapis.'+_0x9a2156+_0xdcc6('0x3e')+_['startCase'](_0x272aad[_0xdcc6('0x3f')])+'s','body':{'data':[{'Last_Name':_0x5a7eac[0x1],'First_Name':_0x5a7eac[0x0],'Phone':_0x11dd13,'Owner':{'name':!_[_0xdcc6('0x1e')](_0x58b858[_0xdcc6('0x40')][_0xdcc6('0x1a')])?_0x58b858['role']['name']:!_[_0xdcc6('0x1e')](_0x58b858['first_name'])?_0x58b858[_0xdcc6('0x41')]+'\x20'+_0x58b858['last_name']:_0x58b858[_0xdcc6('0x42')],'id':_0x58b858['id']}}]},'headers':{'Authorization':_0xdcc6('0x2f')+_0x1c64f2},'json':!![]})[_0xdcc6('0x3a')](function(_0x2a4b4d){if(_0x2a4b4d&&_0x2a4b4d[_0xdcc6('0x3b')][0x0][_0xdcc6('0x43')]===_0xdcc6('0x44')){var _0x432b92=_0x2a4b4d[_0xdcc6('0x3b')][0x0][_0xdcc6('0x45')];_0x432b92['enduserType']=_[_0xdcc6('0x46')](_0x272aad[_0xdcc6('0x3f')])+'s';return _0x432b92;}logger[_0xdcc6('0x2a')]('The\x20failing\x20result\x20is',JSON[_0xdcc6('0xe')](data));throw new Error(_0xdcc6('0x47')+JSON[_0xdcc6('0xe')](data));})[_0xdcc6('0x39')](function(_0x357c9e){console[_0xdcc6('0x48')](_0xdcc6('0x49'),_0x357c9e);});}function getEndUser(_0xa4ef03,_0x40aab6,_0x20729a,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f){var _0x4d2706={'method':_0xdcc6('0x2c'),'uri':'','headers':{'Authorization':_0xdcc6('0x2f')+_0xa4ef03},'json':!![]};switch(_0xaf1b5f[_0xdcc6('0x4a')]){case'contact_lead':_0x4d2706[_0xdcc6('0x4b')]=_0xdcc6('0x4c')+_0x40aab6+_0xdcc6('0x4d')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x4e'))[_0xdcc6('0x3a')](function(_0x191313){if(_0x191313)return _0x191313;_0x4d2706[_0xdcc6('0x4b')]='https://www.zohoapis.'+_0x40aab6+_0xdcc6('0x4f')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x50'))[_0xdcc6('0x3a')](function(_0x2e9b53){if(_0x2e9b53)return _0x2e9b53;if(_0xaf1b5f[_0xdcc6('0x3f')]!=_0xdcc6('0x51')){return createEndUser(_0xa4ef03,_0x40aab6,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f);}else{return{};}});});break;case _0xdcc6('0x52'):_0x4d2706['uri']=_0xdcc6('0x4c')+_0x40aab6+_0xdcc6('0x4d')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x4e'))['then'](function(_0x58ccea){if(_0x58ccea)return _0x58ccea;if(_0xaf1b5f[_0xdcc6('0x3f')]!='nothing'){return createEndUser(_0xa4ef03,_0x40aab6,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f);}else{return{};}});break;case _0xdcc6('0x53'):_0x4d2706[_0xdcc6('0x4b')]='https://www.zohoapis.'+_0x40aab6+_0xdcc6('0x4f')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x50'))[_0xdcc6('0x3a')](function(_0x3f3b6d){if(_0x3f3b6d)return _0x3f3b6d;if(_0xaf1b5f['moduleCreate']!=_0xdcc6('0x51')){return createEndUser(_0xa4ef03,_0x40aab6,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f);}else{return{};}});break;}}function getCall(_0x3ce465,_0x18ebdb,_0x475b08,_0x4e4cfe,_0x5992fa,_0x22c74a,_0x19f5a0,_0x38768e){logger[_0xdcc6('0x33')](_0xdcc6('0x54'));var _0x13e7d1={};_0x13e7d1['Owner']={'name':!_[_0xdcc6('0x1e')](_0x4e4cfe['role'][_0xdcc6('0x1a')])&&!_[_0xdcc6('0x1e')](_0x4e4cfe[_0xdcc6('0x55')]['name'])&&_0x4e4cfe['profile'][_0xdcc6('0x1a')]===_0xdcc6('0x56')?_0x4e4cfe[_0xdcc6('0x40')][_0xdcc6('0x1a')]:!_[_0xdcc6('0x1e')](_0x4e4cfe[_0xdcc6('0x41')])?_0x4e4cfe[_0xdcc6('0x41')]+'\x20'+_0x4e4cfe['last_name']:_0x4e4cfe[_0xdcc6('0x42')],'id':_0x4e4cfe['id']};_0x13e7d1[_0xdcc6('0x57')]=intUtil[_0xdcc6('0x58')](_0x22c74a[_0xdcc6('0x59')],_0x19f5a0,'\x20');_0x13e7d1[_0xdcc6('0x5a')]=intUtil[_0xdcc6('0x58')](_0x22c74a['Descriptions'],_0x19f5a0,'\x0a');if(_0x5992fa[_0xdcc6('0x3c')]===_0xdcc6('0x4e')){_0x13e7d1[_0xdcc6('0x5b')]={'name':!_[_0xdcc6('0x1e')](_0x5992fa[_0xdcc6('0x5c')])?_0x5992fa[_0xdcc6('0x5c')]:!_[_0xdcc6('0x1e')](_0x5992fa[_0xdcc6('0x5d')])?_0x5992fa[_0xdcc6('0x5d')]+'\x20'+_0x5992fa[_0xdcc6('0x5e')]:_0x5992fa[_0xdcc6('0x5e')],'id':_0x5992fa['id']};}if(_0x5992fa[_0xdcc6('0x3c')]===_0xdcc6('0x50')){_0x13e7d1[_0xdcc6('0x5f')]={'name':!_[_0xdcc6('0x1e')](_0x5992fa['Full_Name'])?_0x5992fa['Full_Name']:!_[_0xdcc6('0x1e')](_0x5992fa[_0xdcc6('0x5d')])?_0x5992fa[_0xdcc6('0x5d')]+'\x20'+_0x5992fa[_0xdcc6('0x5e')]:_0x5992fa[_0xdcc6('0x5e')],'id':_0x5992fa['id']};_0x13e7d1[_0xdcc6('0x60')]=_[_0xdcc6('0x46')](_0x5992fa[_0xdcc6('0x3c')]);}if(_0x19f5a0[_0xdcc6('0x61')]){_0x13e7d1[_0xdcc6('0x62')]=moment[_0xdcc6('0x63')](parseInt(_0x19f5a0[_0xdcc6('0x61')])*0x3e8)['format'](_0xdcc6('0x64'));}else if(_0x19f5a0[_0xdcc6('0x65')]&&_0x19f5a0[_0xdcc6('0x66')]){_0x13e7d1[_0xdcc6('0x62')]=moment[_0xdcc6('0x63')](moment(_0x19f5a0['endtime'],_0xdcc6('0x67'))[_0xdcc6('0x68')](moment(_0x19f5a0[_0xdcc6('0x69')],'YYYY-MM-DDTHH:mm:ss')))[_0xdcc6('0x2d')](_0xdcc6('0x64'));}switch(_0x19f5a0['lastevent']){case _0xdcc6('0x6a'):_0x13e7d1[_0xdcc6('0x6b')]=_0xdcc6('0x6c');break;case'complete':case _0xdcc6('0x6d'):_0x13e7d1['Call_Result']=_0xdcc6('0x6e');break;case _0xdcc6('0x6f'):_0x13e7d1[_0xdcc6('0x6b')]=_0xdcc6('0x70');break;case _0xdcc6('0x71'):_0x13e7d1[_0xdcc6('0x6b')]='Abandoned';break;case _0xdcc6('0x72'):_0x13e7d1[_0xdcc6('0x6b')]='Timeout';default:}_0x13e7d1[_0xdcc6('0x73')]=(_0x38768e===_0xdcc6('0x74')?moment(_0x19f5a0['starttime'])['format'](_0xdcc6('0x67')):moment(_0x19f5a0[_0xdcc6('0x75')])[_0xdcc6('0x2d')](_0xdcc6('0x67')))||moment()['format'](_0xdcc6('0x67'));_0x13e7d1[_0xdcc6('0x76')]=_0x38768e||'Inbound';_0x13e7d1=_[_0xdcc6('0x77')](_0x13e7d1,getCustomFields(_0x22c74a[_0xdcc6('0x78')],_0x19f5a0));return request({'method':_0xdcc6('0x3d'),'uri':_0xdcc6('0x4c')+_0x18ebdb+_0xdcc6('0x79'),'headers':{'Authorization':_0xdcc6('0x2f')+_0x3ce465},'body':{'data':[_0x13e7d1]},'json':!![]})[_0xdcc6('0x3a')](function(_0x146203){if(_0x146203&&_0x146203[_0xdcc6('0x3b')][0x0][_0xdcc6('0x43')]===_0xdcc6('0x44')){logger[_0xdcc6('0x33')]('Call\x20created!');return{'id':_0x146203['data'][0x0][_0xdcc6('0x45')]['id']};}})[_0xdcc6('0x39')](function(_0x2ca448){logger[_0xdcc6('0x33')](_0xdcc6('0x7a'),_0x2ca448[_0xdcc6('0x7b')]);console[_0xdcc6('0x48')](_0xdcc6('0x7a'),_0x2ca448);});}exports[_0xdcc6('0x7c')]=function(_0x2fcbc2,_0x50d018,_0x197691,_0x178c30,_0x43f212,_0x2c1fcf){var _0x201c1a,_0x3ef28a,_0x5a5820;_0x2c1fcf[_0xdcc6('0x7d')]=intUtil['stripTrailingSlash'](_0x2c1fcf[_0xdcc6('0x7d')]);_0x2c1fcf[_0xdcc6('0x7e')]=intUtil[_0xdcc6('0x7f')](_0x2c1fcf[_0xdcc6('0x7e')]);if(_0x43f212&&_0x43f212['monitor_format']){logger[_0xdcc6('0x33')]('[QUEUE]',_0xdcc6('0x80'));_0x50d018[_0xdcc6('0x81')]=_0x2c1fcf['serverUrl']+_0xdcc6('0x82')+_0x50d018[_0xdcc6('0x83')]+_0xdcc6('0x84')+md5(_0x50d018[_0xdcc6('0x83')]);}else{_0x50d018[_0xdcc6('0x81')]='';}var _0x257706=_0x2c1fcf[_0xdcc6('0x7d')]===_0xdcc6('0x85')?'eu':_0xdcc6('0x86');return getAccessToken(_0x2c1fcf)[_0xdcc6('0x3a')](function(_0x4601ae){_0x5a5820=_0x4601ae;return getUser(_0x5a5820,_0x257706,_0x2c1fcf,_0x178c30[_0xdcc6('0x87')]);})[_0xdcc6('0x3a')](function(_0x45d2fd){_0x201c1a=_0x45d2fd;logger['info']('The\x20User\x20ID\x20is:',_0x201c1a['id']);return getEndUser(_0x5a5820,_0x257706,_0x2c1fcf,_0x50d018[_0xdcc6('0x88')],_0x50d018[_0xdcc6('0x89')],_0x201c1a,_0x197691);})[_0xdcc6('0x3a')](function(_0x2b5e09){_0x3ef28a=_0x2b5e09;return getCall(_0x5a5820,_0x257706,_0x2c1fcf,_0x201c1a,_0x3ef28a,_0x197691,_0x50d018,_0xdcc6('0x8a'));})[_0xdcc6('0x3a')](function(_0x36cf87){if(_0x36cf87){logger[_0xdcc6('0x33')](_0xdcc6('0x8b'),_0x36cf87['id']);logger[_0xdcc6('0x33')]('[QUEUE]',_0xdcc6('0x8c'));emit(util[_0xdcc6('0x2d')](_0xdcc6('0x8d'),_0x178c30[_0xdcc6('0x1a')]),_0xdcc6('0x8e'),{'uri':'https://crm.'+_0x2c1fcf[_0xdcc6('0x7d')]+_0xdcc6('0x8f')+_0x36cf87['id']});}})[_0xdcc6('0x39')](function(_0x18a2e9){logger['error']('[QUEUE]',JSON[_0xdcc6('0xe')](_0x18a2e9));});};exports['outbound']=function(_0x56f943,_0x218b83,_0x190d79,_0x2f8529,_0x4bdc60,_0x1c51b6,_0x464a31){var _0x29d393,_0x34aa1a,_0x17fb7e;_0x1c51b6['host']=intUtil[_0xdcc6('0x7f')](_0x1c51b6[_0xdcc6('0x7d')]);_0x1c51b6['serverUrl']=intUtil[_0xdcc6('0x7f')](_0x1c51b6[_0xdcc6('0x7e')]);if(_0x464a31&&_0x464a31['recordingFormat']&&_0x464a31['recordingFormat']!==_0xdcc6('0x90')){logger['info'](_0xdcc6('0x91'),'Recording\x20is\x20enabled!');_0x218b83['recordingURL']=_0x1c51b6[_0xdcc6('0x7e')]+'/api/voice/recordings/'+_0x218b83['uniqueid']+_0xdcc6('0x84')+md5(_0x218b83[_0xdcc6('0x83')]);}var _0x12a043=_0x1c51b6[_0xdcc6('0x7d')]===_0xdcc6('0x85')?'eu':'com';return getAccessToken(_0x1c51b6)[_0xdcc6('0x3a')](function(_0x8aea19){_0x17fb7e=_0x8aea19;return getUser(_0x17fb7e,_0x12a043,_0x1c51b6,_0x2f8529[_0xdcc6('0x87')]);})[_0xdcc6('0x3a')](function(_0x1207db){_0x29d393=_0x1207db;logger[_0xdcc6('0x33')](_0xdcc6('0x92'),_0x29d393['id']);return getEndUser(_0x17fb7e,_0x12a043,_0x1c51b6,_0x218b83[_0xdcc6('0x93')],_0x218b83[_0xdcc6('0x94')],_0x29d393,_0x190d79);})[_0xdcc6('0x3a')](function(_0x331db9){_0x34aa1a=_0x331db9;return getCall(_0x17fb7e,_0x12a043,_0x1c51b6,_0x29d393,_0x34aa1a,_0x190d79,_0x218b83,_0xdcc6('0x95'));})[_0xdcc6('0x3a')](function(_0x35a60d){if(_0x35a60d){logger[_0xdcc6('0x33')]('The\x20Call\x20ID\x20is:',_0x35a60d['id']);logger[_0xdcc6('0x33')](_0xdcc6('0x91'),_0xdcc6('0x8c'));emit(util['format']('user:%s',_0x2f8529[_0xdcc6('0x1a')]),'trigger:browser:url',{'uri':_0xdcc6('0x96')+_0x1c51b6[_0xdcc6('0x7d')]+_0xdcc6('0x8f')+_0x35a60d['id']});}})[_0xdcc6('0x39')](function(_0xdff84e){logger[_0xdcc6('0x2a')]('[OUTBOUND]',JSON['stringify'](_0xdff84e));});};exports[_0xdcc6('0x97')]=function(_0x1fd6d5,_0x5d8ea3,_0x59bd9c,_0x1d4872,_0x431d16,_0x221643){var _0x33ced7,_0x517fd3,_0x232509;_0x221643[_0xdcc6('0x7d')]=intUtil[_0xdcc6('0x7f')](_0x221643[_0xdcc6('0x7d')]);_0x221643[_0xdcc6('0x7e')]=intUtil[_0xdcc6('0x7f')](_0x221643[_0xdcc6('0x7e')]);if(_0x431d16&&_0x431d16[_0xdcc6('0x98')]){logger[_0xdcc6('0x33')]('['+_0x5d8ea3['lastevent'][_0xdcc6('0x99')]()+']',_0xdcc6('0x80'));_0x5d8ea3[_0xdcc6('0x81')]=_0x221643[_0xdcc6('0x7e')]+'/api/voice/recordings/'+_0x5d8ea3[_0xdcc6('0x83')]+_0xdcc6('0x84')+md5(_0x5d8ea3[_0xdcc6('0x83')]);}else{_0x5d8ea3[_0xdcc6('0x81')]='';}var _0x56226e=_0x221643[_0xdcc6('0x7d')]==='zoho.eu'?'eu':_0xdcc6('0x86');return getAccessToken(_0x221643)['then'](function(_0x135166){_0x232509=_0x135166;return getUser(_0x232509,_0x56226e,_0x221643);})['then'](function(_0x4012fe){_0x33ced7=_0x4012fe;logger['info'](_0xdcc6('0x92'),_0x33ced7['id']);return getEndUser(_0x232509,_0x56226e,_0x221643,_0x5d8ea3['calleridname'],_0x5d8ea3[_0xdcc6('0x89')],_0x33ced7,_0x59bd9c);})[_0xdcc6('0x3a')](function(_0x4bebb4){_0x517fd3=_0x4bebb4;return getCall(_0x232509,_0x56226e,_0x221643,_0x33ced7,_0x517fd3,_0x59bd9c,_0x5d8ea3,_0xdcc6('0x8a'));})[_0xdcc6('0x3a')](function(_0x302243){if(_0x302243){logger[_0xdcc6('0x33')](_0xdcc6('0x8b'),_0x302243['id']);}})['catch'](function(_0x147c92){logger[_0xdcc6('0x2a')]('['+_0x5d8ea3[_0xdcc6('0x9a')][_0xdcc6('0x99')]()+']',JSON['stringify'](_0x147c92));});};
\ No newline at end of file
+var _0x082b=['variable','variableName','toString','customVariable','Variable','name','toLowerCase','split','isNil','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','refresh_token','then','add','expires_in','catch','Failing\x20creating\x20the\x20access_token','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','info','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','details','Error:\x20','log','CREATE\x20ERROR','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','Creating\x20new\x20call...','Subjects','Who_Id','Full_Name','First_Name','Last_Name','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','complete','connect','Answered','rejected','Rejected','Abandoned','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Inbound','Fields','/crm/v2/Calls','SUCCESS','stack','host','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','recordingURL','zoho.eu','com','calleridname','calleridnum','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','none','[OUTBOUND]','destcalleridname','destcalleridnum','Outbound','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','util','moment','ioredis','bluebird','../../../../config/logger','zoho','defaults','redis','emit','debug','[HTTP]','stringify','length','forEach','includes','string','picklist','type','idField','content'];(function(_0x340c13,_0x595d66){var _0x5a7d96=function(_0x250118){while(--_0x250118){_0x340c13['push'](_0x340c13['shift']());}};_0x5a7d96(++_0x595d66);}(_0x082b,0x1ac));var _0xb082=function(_0x19d588,_0x3f92f0){_0x19d588=_0x19d588-0x0;var _0x3450ea=_0x082b[_0x19d588];return _0x3450ea;};'use strict';var _=require(_0xb082('0x0'));var rp=require(_0xb082('0x1'));var md5=require('md5');var util=require(_0xb082('0x2'));var intUtil=require('./util');var moment=require(_0xb082('0x3'));var Redis=require(_0xb082('0x4'));var BPromise=require(_0xb082('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb082('0x6'))(_0xb082('0x7'));config['redis']=_[_0xb082('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb082('0x9')]));function emit(_0x7c2c8f,_0x4a0853,_0x49b59d){io['to'](_0x7c2c8f)[_0xb082('0xa')](_0x4a0853,_0x49b59d);}function request(_0x15bedc){logger[_0xb082('0xb')](_0xb082('0xc'),JSON[_0xb082('0xd')](_0x15bedc));return rp(_0x15bedc);}function getCustomFields(_0x2bbb5b,_0x338384){var _0x2ef8b6={};if(_0x2bbb5b[_0xb082('0xe')]>0x0){_[_0xb082('0xf')](_0x2bbb5b,function(_0x7985c2){if(_[_0xb082('0x10')]([_0xb082('0x11'),_0xb082('0x12')],_0x7985c2[_0xb082('0x13')])&&_0x7985c2[_0xb082('0x14')]){_0x2ef8b6[_0x7985c2['idField']]=_0x7985c2[_0xb082('0x15')]['toString']();}else if(_0x7985c2[_0xb082('0x13')]===_0xb082('0x16')&&_0x7985c2[_0xb082('0x17')]&&_0x7985c2[_0xb082('0x14')]&&_0x338384[_0x7985c2[_0xb082('0x17')]]){_0x2ef8b6[_0x7985c2[_0xb082('0x14')]]=_0x338384[_0x7985c2[_0xb082('0x17')]][_0xb082('0x18')]();}else if(_0x7985c2[_0xb082('0x13')]===_0xb082('0x19')&&_0x7985c2[_0xb082('0x1a')]&&_0x7985c2['Variable']['name']&&_0x7985c2[_0xb082('0x14')]&&_0x338384[_0x7985c2[_0xb082('0x1a')][_0xb082('0x1b')][_0xb082('0x1c')]()]){_0x2ef8b6[_0x7985c2['idField']]=_0x338384[_0x7985c2[_0xb082('0x1a')][_0xb082('0x1b')]['toLowerCase']()]['toString']();}});}return _0x2ef8b6;}function getName(_0x4d251c){if(_0x4d251c['indexOf']('\x20')>0x0){var _0x362b9d=_0x4d251c[_0xb082('0x1d')](/ (.+)/);if(_0x362b9d[0x1]){return _0x362b9d;}}return[_0x4d251c,_0x4d251c];}var accountsTokens={};function getAccessToken(_0x52ec03){return new Promise(function(_0x593b5b,_0x3b3a75){if(!_[_0xb082('0x1e')](accountsTokens[_0x52ec03['id']])&&!_['isNil'](accountsTokens[_0x52ec03['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x52ec03['id']]['expires_in'])){_0x593b5b(accountsTokens[_0x52ec03['id']][_0xb082('0x1f')]);}}var _0x4409ea;switch(_0x52ec03[_0xb082('0x20')]){case'US':_0x4409ea=_0xb082('0x21');break;case'AU':_0x4409ea=_0xb082('0x22');break;case'EU':_0x4409ea=_0xb082('0x23');break;case'IN':_0x4409ea=_0xb082('0x24');break;case'CN':_0x4409ea='https://accounts.zoho.com.cn';break;default:_0x4409ea=_0xb082('0x23');break;}var _0x3cad57={'method':_0xb082('0x25'),'uri':_0x4409ea+_0xb082('0x26'),'qs':{'refresh_token':_0x52ec03[_0xb082('0x27')],'client_id':_0x52ec03[_0xb082('0x28')],'client_secret':_0x52ec03['clientSecret'],'grant_type':_0xb082('0x29')},'json':!![]};return rp(_0x3cad57)[_0xb082('0x2a')](function(_0x3691b6){accountsTokens[_0x52ec03['id']]={'access_token':_0x3691b6['access_token'],'expires_in':moment()[_0xb082('0x2b')](_0x3691b6[_0xb082('0x2c')],'seconds')};_0x593b5b(_0x3691b6[_0xb082('0x1f')]);})[_0xb082('0x2d')](function(_0x2b75b5){logger['error'](_0xb082('0x2e'),_0x2b75b5['stack']);_0x3b3a75(_0x2b75b5);});});}function getUser(_0xe5fc5b,_0x7beeab,_0x1e168e,_0x1583ce){logger['info'](_0xb082('0x2f'));return request({'method':_0xb082('0x30'),'uri':util[_0xb082('0x31')](_0xb082('0x32'),_0x7beeab),'qs':{'type':_0xb082('0x33')},'headers':{'Authorization':_0xb082('0x34')+_0xe5fc5b},'json':!![]})[_0xb082('0x2a')](function(_0x15ee86){if(_0x15ee86[_0xb082('0x35')]){var _0x43047a=-0x1;if(_[_0xb082('0x36')](_0x15ee86['users'])){if(!_[_0xb082('0x1e')](_0x1583ce)){_0x43047a=_[_0xb082('0x37')](_0x15ee86[_0xb082('0x35')],function(_0x2407a5){return _0x2407a5[_0xb082('0x38')]===_0x1583ce;});}if(_0x43047a>=0x0){logger[_0xb082('0x39')](_0xb082('0x3a'));}else{logger[_0xb082('0x39')](_0xb082('0x3b'));_0x43047a=_[_0xb082('0x37')](_0x15ee86[_0xb082('0x35')],function(_0x383209){return _0x383209[_0xb082('0x3c')]['name']===_0xb082('0x3d');});}return _0x15ee86[_0xb082('0x35')][_0x43047a];}else{if(_0x15ee86[_0xb082('0x3e')]['profile'][_0xb082('0x1b')]===_0xb082('0x3d')){logger[_0xb082('0x39')](_0xb082('0x3b'));user=_0x15ee86[_0xb082('0x3e')];return user;}else{logger[_0xb082('0x3f')](_0xb082('0x40'),JSON[_0xb082('0xd')](_0x15ee86));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xb082('0xd')](_0x15ee86));}}}else{logger[_0xb082('0x3f')](_0xb082('0x40'),JSON[_0xb082('0xd')](_0x15ee86));throw new Error(_0xb082('0x41')+JSON[_0xb082('0xd')](_0x15ee86));}})['catch'](function(_0x5c10e0){console[_0xb082('0x3f')](_0x5c10e0);});}function getZohoUser(_0x2915b5,_0x2b7532){return new BPromise(function(_0x490858,_0x358f8b){request(_0x2915b5)[_0xb082('0x2a')](function(_0x24f528){var _0x122b24=null;if(_0x24f528){_0x122b24=_0x24f528[_0xb082('0x42')][0x0];_0x122b24[_0xb082('0x43')]=_0x2b7532;}_0x490858(_0x122b24);})[_0xb082('0x2d')](function(_0x52744f){_0x358f8b(_0x52744f);});});}function createEndUser(_0x7b9e59,_0x17fd4e,_0x2f7b2c,_0x5cb86f,_0x4c8e95,_0x2a13a9){var _0x2f7b2c=getName(_0x2f7b2c);return request({'method':'POST','uri':_0xb082('0x44')+_0x17fd4e+_0xb082('0x45')+_[_0xb082('0x46')](_0x2a13a9[_0xb082('0x47')])+'s','body':{'data':[{'Last_Name':_0x2f7b2c[0x1],'First_Name':_0x2f7b2c[0x0],'Phone':_0x5cb86f,'Owner':{'name':!_[_0xb082('0x1e')](_0x4c8e95['role'][_0xb082('0x1b')])?_0x4c8e95[_0xb082('0x48')][_0xb082('0x1b')]:!_[_0xb082('0x1e')](_0x4c8e95[_0xb082('0x49')])?_0x4c8e95[_0xb082('0x49')]+'\x20'+_0x4c8e95[_0xb082('0x4a')]:_0x4c8e95[_0xb082('0x4a')],'id':_0x4c8e95['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x7b9e59},'json':!![]})[_0xb082('0x2a')](function(_0xa22b54){if(_0xa22b54&&_0xa22b54[_0xb082('0x42')][0x0][_0xb082('0x4b')]==='SUCCESS'){var _0x51a09f=_0xa22b54[_0xb082('0x42')][0x0][_0xb082('0x4c')];_0x51a09f[_0xb082('0x43')]=_[_0xb082('0x46')](_0x2a13a9[_0xb082('0x47')])+'s';return _0x51a09f;}logger[_0xb082('0x3f')](_0xb082('0x40'),JSON[_0xb082('0xd')](data));throw new Error(_0xb082('0x4d')+JSON[_0xb082('0xd')](data));})[_0xb082('0x2d')](function(_0x46d8b2){console[_0xb082('0x4e')](_0xb082('0x4f'),_0x46d8b2);});}function getEndUser(_0x57ea6a,_0x4db882,_0xf958b1,_0x4d9aaa,_0x189b0b,_0x4a767a,_0x21383a){var _0xe54ad1={'method':_0xb082('0x30'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x57ea6a},'json':!![]};switch(_0x21383a[_0xb082('0x50')]){case'contact_lead':_0xe54ad1[_0xb082('0x51')]=_0xb082('0x44')+_0x4db882+_0xb082('0x52')+_0x189b0b+'))';return getZohoUser(_0xe54ad1,_0xb082('0x53'))[_0xb082('0x2a')](function(_0x2c8e30){if(_0x2c8e30)return _0x2c8e30;_0xe54ad1[_0xb082('0x51')]=_0xb082('0x44')+_0x4db882+_0xb082('0x54')+_0x189b0b+'))';return getZohoUser(_0xe54ad1,_0xb082('0x55'))[_0xb082('0x2a')](function(_0x460f5d){if(_0x460f5d)return _0x460f5d;if(_0x21383a['moduleCreate']!=_0xb082('0x56')){return createEndUser(_0x57ea6a,_0x4db882,_0x4d9aaa,_0x189b0b,_0x4a767a,_0x21383a);}else{return{};}});});break;case'contact':_0xe54ad1[_0xb082('0x51')]=_0xb082('0x44')+_0x4db882+_0xb082('0x52')+_0x189b0b+'))';return getZohoUser(_0xe54ad1,'Contacts')['then'](function(_0x3f8ebf){if(_0x3f8ebf)return _0x3f8ebf;if(_0x21383a['moduleCreate']!=_0xb082('0x56')){return createEndUser(_0x57ea6a,_0x4db882,_0x4d9aaa,_0x189b0b,_0x4a767a,_0x21383a);}else{return{};}});break;case _0xb082('0x57'):_0xe54ad1['uri']=_0xb082('0x44')+_0x4db882+_0xb082('0x54')+_0x189b0b+'))';return getZohoUser(_0xe54ad1,_0xb082('0x55'))['then'](function(_0x1036dc){if(_0x1036dc)return _0x1036dc;if(_0x21383a[_0xb082('0x47')]!=_0xb082('0x56')){return createEndUser(_0x57ea6a,_0x4db882,_0x4d9aaa,_0x189b0b,_0x4a767a,_0x21383a);}else{return{};}});break;}}function getCall(_0x373693,_0x4ebf68,_0x29ed0d,_0x411c6,_0x3c0beb,_0xa42f91,_0x58e749,_0x4e13f0){logger[_0xb082('0x39')](_0xb082('0x58'));var _0x263dfa={};_0x263dfa['Owner']={'name':!_[_0xb082('0x1e')](_0x411c6['role']['name'])&&!_['isNil'](_0x411c6[_0xb082('0x3c')][_0xb082('0x1b')])&&_0x411c6[_0xb082('0x3c')][_0xb082('0x1b')]==='administrator'?_0x411c6[_0xb082('0x48')][_0xb082('0x1b')]:!_[_0xb082('0x1e')](_0x411c6[_0xb082('0x49')])?_0x411c6[_0xb082('0x49')]+'\x20'+_0x411c6['last_name']:_0x411c6[_0xb082('0x4a')],'id':_0x411c6['id']};_0x263dfa['Subject']=intUtil['getString'](_0xa42f91[_0xb082('0x59')],_0x58e749,'\x20');_0x263dfa['Description']=intUtil['getString'](_0xa42f91['Descriptions'],_0x58e749,'\x0a');if(_0x3c0beb[_0xb082('0x43')]===_0xb082('0x53')){_0x263dfa[_0xb082('0x5a')]={'name':!_[_0xb082('0x1e')](_0x3c0beb[_0xb082('0x5b')])?_0x3c0beb[_0xb082('0x5b')]:!_[_0xb082('0x1e')](_0x3c0beb[_0xb082('0x5c')])?_0x3c0beb[_0xb082('0x5c')]+'\x20'+_0x3c0beb[_0xb082('0x5d')]:_0x3c0beb[_0xb082('0x5d')],'id':_0x3c0beb['id']};}if(_0x3c0beb[_0xb082('0x43')]===_0xb082('0x55')){_0x263dfa['What_Id']={'name':!_[_0xb082('0x1e')](_0x3c0beb[_0xb082('0x5b')])?_0x3c0beb[_0xb082('0x5b')]:!_['isNil'](_0x3c0beb['First_Name'])?_0x3c0beb[_0xb082('0x5c')]+'\x20'+_0x3c0beb['Last_Name']:_0x3c0beb['Last_Name'],'id':_0x3c0beb['id']};_0x263dfa[_0xb082('0x5e')]=_[_0xb082('0x46')](_0x3c0beb[_0xb082('0x43')]);}if(_0x58e749[_0xb082('0x5f')]){_0x263dfa[_0xb082('0x60')]=moment[_0xb082('0x61')](parseInt(_0x58e749[_0xb082('0x5f')])*0x3e8)['format'](_0xb082('0x62'));}else if(_0x58e749[_0xb082('0x63')]&&_0x58e749[_0xb082('0x64')]){_0x263dfa[_0xb082('0x60')]=moment[_0xb082('0x61')](moment(_0x58e749['endtime'],_0xb082('0x65'))[_0xb082('0x66')](moment(_0x58e749[_0xb082('0x67')],_0xb082('0x65'))))[_0xb082('0x31')](_0xb082('0x62'));}switch(_0x58e749[_0xb082('0x68')]){case _0xb082('0x69'):_0x263dfa[_0xb082('0x6a')]='Called';break;case _0xb082('0x6b'):case _0xb082('0x6c'):_0x263dfa[_0xb082('0x6a')]=_0xb082('0x6d');break;case _0xb082('0x6e'):_0x263dfa[_0xb082('0x6a')]=_0xb082('0x6f');break;case'abandoned':_0x263dfa[_0xb082('0x6a')]=_0xb082('0x70');break;case _0xb082('0x71'):_0x263dfa[_0xb082('0x6a')]=_0xb082('0x72');default:}_0x263dfa[_0xb082('0x73')]=(_0x4e13f0===_0xb082('0x74')?moment(_0x58e749['starttime'])[_0xb082('0x31')](_0xb082('0x65')):moment(_0x58e749[_0xb082('0x75')])[_0xb082('0x31')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0xb082('0x31')](_0xb082('0x65'));_0x263dfa['Call_Type']=_0x4e13f0||_0xb082('0x76');_0x263dfa=_['merge'](_0x263dfa,getCustomFields(_0xa42f91[_0xb082('0x77')],_0x58e749));return request({'method':_0xb082('0x25'),'uri':_0xb082('0x44')+_0x4ebf68+_0xb082('0x78'),'headers':{'Authorization':_0xb082('0x34')+_0x373693},'body':{'data':[_0x263dfa]},'json':!![]})[_0xb082('0x2a')](function(_0x28d8fe){if(_0x28d8fe&&_0x28d8fe[_0xb082('0x42')][0x0][_0xb082('0x4b')]===_0xb082('0x79')){logger['info']('Call\x20created!');return{'id':_0x28d8fe[_0xb082('0x42')][0x0][_0xb082('0x4c')]['id']};}})[_0xb082('0x2d')](function(_0xa4e059){logger['info']('err',_0xa4e059[_0xb082('0x7a')]);console[_0xb082('0x4e')]('err',_0xa4e059);});}exports['queue']=function(_0x55ba68,_0x38a331,_0x1369da,_0x402748,_0x2c9cea,_0x10bd67){var _0x1e342d,_0x587368,_0xc296fc;_0x10bd67[_0xb082('0x7b')]=intUtil[_0xb082('0x7c')](_0x10bd67['host']);_0x10bd67['serverUrl']=intUtil[_0xb082('0x7c')](_0x10bd67[_0xb082('0x7d')]);if(_0x2c9cea&&_0x2c9cea['monitor_format']){logger[_0xb082('0x39')](_0xb082('0x7e'),_0xb082('0x7f'));_0x38a331['recordingURL']=_0x10bd67['serverUrl']+_0xb082('0x80')+_0x38a331[_0xb082('0x81')]+_0xb082('0x82')+md5(_0x38a331['uniqueid']);}else{_0x38a331[_0xb082('0x83')]='';}var _0x1dab8e=_0x10bd67[_0xb082('0x7b')]===_0xb082('0x84')?'eu':_0xb082('0x85');return getAccessToken(_0x10bd67)['then'](function(_0x2904b6){_0xc296fc=_0x2904b6;return getUser(_0xc296fc,_0x1dab8e,_0x10bd67,_0x402748['email']);})[_0xb082('0x2a')](function(_0x445fe1){_0x1e342d=_0x445fe1;logger[_0xb082('0x39')]('The\x20User\x20ID\x20is:',_0x1e342d['id']);return getEndUser(_0xc296fc,_0x1dab8e,_0x10bd67,_0x38a331[_0xb082('0x86')],_0x38a331[_0xb082('0x87')],_0x1e342d,_0x1369da);})[_0xb082('0x2a')](function(_0x4a3bd5){_0x587368=_0x4a3bd5;return getCall(_0xc296fc,_0x1dab8e,_0x10bd67,_0x1e342d,_0x587368,_0x1369da,_0x38a331,_0xb082('0x76'));})[_0xb082('0x2a')](function(_0x9a7a7e){if(_0x9a7a7e){logger[_0xb082('0x39')](_0xb082('0x88'),_0x9a7a7e['id']);logger[_0xb082('0x39')](_0xb082('0x7e'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb082('0x31')](_0xb082('0x89'),_0x402748['name']),_0xb082('0x8a'),{'uri':_0xb082('0x8b')+_0x10bd67[_0xb082('0x7b')]+_0xb082('0x8c')+_0x9a7a7e['id']});}})[_0xb082('0x2d')](function(_0x1e0211){logger[_0xb082('0x3f')]('[QUEUE]',JSON[_0xb082('0xd')](_0x1e0211));});};exports[_0xb082('0x74')]=function(_0x492a9c,_0x52cd76,_0x23a041,_0x37b26f,_0x2ecb6e,_0x1aa8f4,_0x39f0b2){var _0x4d60ea,_0x328740,_0x2bf20b;_0x1aa8f4[_0xb082('0x7b')]=intUtil[_0xb082('0x7c')](_0x1aa8f4[_0xb082('0x7b')]);_0x1aa8f4['serverUrl']=intUtil['stripTrailingSlash'](_0x1aa8f4['serverUrl']);if(_0x39f0b2&&_0x39f0b2['recordingFormat']&&_0x39f0b2['recordingFormat']!==_0xb082('0x8d')){logger[_0xb082('0x39')](_0xb082('0x8e'),_0xb082('0x7f'));_0x52cd76['recordingURL']=_0x1aa8f4[_0xb082('0x7d')]+_0xb082('0x80')+_0x52cd76[_0xb082('0x81')]+_0xb082('0x82')+md5(_0x52cd76[_0xb082('0x81')]);}var _0x357f2a=_0x1aa8f4[_0xb082('0x7b')]===_0xb082('0x84')?'eu':_0xb082('0x85');return getAccessToken(_0x1aa8f4)[_0xb082('0x2a')](function(_0x36a89c){_0x2bf20b=_0x36a89c;return getUser(_0x2bf20b,_0x357f2a,_0x1aa8f4,_0x37b26f[_0xb082('0x38')]);})[_0xb082('0x2a')](function(_0x3171ed){_0x4d60ea=_0x3171ed;logger[_0xb082('0x39')]('The\x20User\x20ID\x20is:',_0x4d60ea['id']);return getEndUser(_0x2bf20b,_0x357f2a,_0x1aa8f4,_0x52cd76[_0xb082('0x8f')],_0x52cd76[_0xb082('0x90')],_0x4d60ea,_0x23a041);})[_0xb082('0x2a')](function(_0x3ad75b){_0x328740=_0x3ad75b;return getCall(_0x2bf20b,_0x357f2a,_0x1aa8f4,_0x4d60ea,_0x328740,_0x23a041,_0x52cd76,_0xb082('0x91'));})['then'](function(_0x28fa0c){if(_0x28fa0c){logger['info'](_0xb082('0x88'),_0x28fa0c['id']);logger[_0xb082('0x39')]('[OUTBOUND]',_0xb082('0x92'));emit(util['format'](_0xb082('0x89'),_0x37b26f[_0xb082('0x1b')]),_0xb082('0x8a'),{'uri':'https://crm.'+_0x1aa8f4[_0xb082('0x7b')]+'/crm/EntityInfo.do?module=Calls&id='+_0x28fa0c['id']});}})[_0xb082('0x2d')](function(_0x28adb1){logger['error'](_0xb082('0x8e'),JSON[_0xb082('0xd')](_0x28adb1));});};exports[_0xb082('0x93')]=function(_0x29d1ad,_0x52e33c,_0x20b8cd,_0x3d778c,_0x1ab625,_0x127887){var _0x4106ac,_0x5682b9,_0x14f55b;_0x127887[_0xb082('0x7b')]=intUtil[_0xb082('0x7c')](_0x127887[_0xb082('0x7b')]);_0x127887[_0xb082('0x7d')]=intUtil[_0xb082('0x7c')](_0x127887[_0xb082('0x7d')]);if(_0x1ab625&&_0x1ab625['monitor_format']){logger[_0xb082('0x39')]('['+_0x52e33c[_0xb082('0x68')][_0xb082('0x94')]()+']',_0xb082('0x7f'));_0x52e33c[_0xb082('0x83')]=_0x127887[_0xb082('0x7d')]+_0xb082('0x80')+_0x52e33c['uniqueid']+_0xb082('0x82')+md5(_0x52e33c['uniqueid']);}else{_0x52e33c[_0xb082('0x83')]='';}var _0x75137a=_0x127887[_0xb082('0x7b')]===_0xb082('0x84')?'eu':_0xb082('0x85');return getAccessToken(_0x127887)['then'](function(_0x8fcc09){_0x14f55b=_0x8fcc09;return getUser(_0x14f55b,_0x75137a,_0x127887);})[_0xb082('0x2a')](function(_0x5987a7){_0x4106ac=_0x5987a7;logger['info'](_0xb082('0x95'),_0x4106ac['id']);return getEndUser(_0x14f55b,_0x75137a,_0x127887,_0x52e33c[_0xb082('0x86')],_0x52e33c['calleridnum'],_0x4106ac,_0x20b8cd);})[_0xb082('0x2a')](function(_0x176f28){_0x5682b9=_0x176f28;return getCall(_0x14f55b,_0x75137a,_0x127887,_0x4106ac,_0x5682b9,_0x20b8cd,_0x52e33c,_0xb082('0x76'));})[_0xb082('0x2a')](function(_0x49d431){if(_0x49d431){logger[_0xb082('0x39')](_0xb082('0x88'),_0x49d431['id']);}})[_0xb082('0x2d')](function(_0x188c39){logger[_0xb082('0x3f')]('['+_0x52e33c[_0xb082('0x68')][_0xb082('0x94')]()+']',JSON[_0xb082('0xd')](_0x188c39));});};
\ No newline at end of file
index 40e76ba..dcdebe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe37e=['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','Script','data3'];(function(_0x9be28f,_0x231334){var _0xa9f52d=function(_0x239dad){while(--_0x239dad){_0x9be28f['push'](_0x9be28f['shift']());}};_0xa9f52d(++_0x231334);}(_0xe37e,0x102));var _0xee37=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xe37e[_0x2763f2];return _0x3ef471;};'use strict';var util=require(_0xee37('0x0'));var sh=require(_0xee37('0x1'));var Mustache=require('mustache');var logger=require(_0xee37('0x2'))(_0xee37('0x3'));exports[_0xee37('0x4')]=function(_0x21278f,_0x5544d2){var _0x394d47=_0x21278f[_0xee37('0x5')]?_0x21278f[_0xee37('0x5')]:_0xee37('0x6');var _0x458fc0=_0x21278f[_0xee37('0x7')]?Mustache[_0xee37('0x8')](_0x21278f[_0xee37('0x7')],_0x5544d2):_0x5544d2;sh[_0xee37('0x4')](_0x458fc0,function(_0xe7afe7,_0x2122b3,_0xac7626){if(_0xe7afe7!==0x0){logger[_0xee37('0x9')](util[_0xee37('0xa')](_0xee37('0xb'),_0x394d47,_0x458fc0,_0xe7afe7,_0xac7626));}else{logger[_0xee37('0xc')](util[_0xee37('0xa')](_0xee37('0xd'),_0x394d47,_0x458fc0,_0x2122b3));}});};
\ No newline at end of file
+var _0x0b47=['info','format','util','shelljs','../../../../config/logger','trigger','exec','Script','render','data3','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s'];(function(_0x558305,_0x136dac){var _0x5a6cfe=function(_0x56deef){while(--_0x56deef){_0x558305['push'](_0x558305['shift']());}};_0x5a6cfe(++_0x136dac);}(_0x0b47,0x92));var _0x70b4=function(_0x3f113f,_0x2c3b0e){_0x3f113f=_0x3f113f-0x0;var _0xdc2c91=_0x0b47[_0x3f113f];return _0xdc2c91;};'use strict';var util=require(_0x70b4('0x0'));var sh=require(_0x70b4('0x1'));var Mustache=require('mustache');var logger=require(_0x70b4('0x2'))(_0x70b4('0x3'));exports[_0x70b4('0x4')]=function(_0x378938,_0x439df1){var _0x4d5b8b=_0x378938['data2']?_0x378938['data2']:_0x70b4('0x5');var _0x1ac8a7=_0x378938['data3']?Mustache[_0x70b4('0x6')](_0x378938[_0x70b4('0x7')],_0x439df1):_0x439df1;sh[_0x70b4('0x4')](_0x1ac8a7,function(_0x5b82b6,_0x3c5b03,_0x509291){if(_0x5b82b6!==0x0){logger[_0x70b4('0x8')](util['format'](_0x70b4('0x9'),_0x4d5b8b,_0x1ac8a7,_0x5b82b6,_0x509291));}else{logger[_0x70b4('0xa')](util[_0x70b4('0xb')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x4d5b8b,_0x1ac8a7,_0x3c5b03));}});};
\ No newline at end of file
index 796984b..5f3ad43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x703f=['statusCode','name','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','data5','data6','parse','error','DELETE','data7','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s'];(function(_0x2d9e27,_0x5965b2){var _0xd35381=function(_0x343d18){while(--_0x343d18){_0x2d9e27['push'](_0x2d9e27['shift']());}};_0xd35381(++_0x5965b2);}(_0x703f,0xf2));var _0xf703=function(_0x5455d7,_0x5e6868){_0x5455d7=_0x5455d7-0x0;var _0x374ba7=_0x703f[_0x5455d7];return _0x374ba7;};'use strict';var rp=require('request-promise');var util=require(_0xf703('0x0'));var _=require(_0xf703('0x1'));var Mustache=require(_0xf703('0x2'));var logger=require(_0xf703('0x3'))(_0xf703('0x4'));exports[_0xf703('0x5')]=function(_0xd5d8a1,_0x4112cd){var _0x3aca8e,_0x22f8de;var _0x1e7131={'method':_0xd5d8a1[_0xf703('0x6')][_0xf703('0x7')](),'uri':Mustache[_0xf703('0x8')](_0xd5d8a1[_0xf703('0x9')],_0x4112cd),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0xd5d8a1[_0xf703('0xa')])==='number'&&parseInt(_0xd5d8a1[_0xf703('0xa')])>=0x1&&parseInt(_0xd5d8a1[_0xf703('0xa')])<=0xa?parseInt(_0xd5d8a1[_0xf703('0xa')])*0x3e8:0x5*0x3e8};try{_0x1e7131['headers']=_0xd5d8a1[_0xf703('0xb')]?JSON[_0xf703('0xc')](Mustache[_0xf703('0x8')](_0xd5d8a1['data6'],_0x4112cd)):{};}catch(_0x5ed4e1){logger[_0xf703('0xd')](_0x5ed4e1['stack']);}switch(_0xd5d8a1[_0xf703('0x6')][_0xf703('0x7')]()){case'GET':case _0xf703('0xe'):_0x3aca8e=null;_0x1e7131['qs']=_0x4112cd;break;case'POST':case'PUT':if(_0xd5d8a1['data7']){try{_0x3aca8e=JSON[_0xf703('0xc')](Mustache[_0xf703('0x8')](_0xd5d8a1[_0xf703('0xf')],_0x4112cd));_0x1e7131['body']=_0x3aca8e;}catch(_0x78691f){logger[_0xf703('0xd')](_0x78691f['stack']);logger[_0xf703('0xd')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x3aca8e=_0x4112cd;_0x1e7131[_0xf703('0x10')]=_0x3aca8e;}break;}logger[_0xf703('0x11')](util['format'](_0xf703('0x12'),_0xd5d8a1[_0xf703('0x6')],_0xd5d8a1[_0xf703('0x9')],JSON[_0xf703('0x13')](_0x1e7131)));rp(_0x1e7131)[_0xf703('0x14')](function(_0x36605b){_0x3aca8e=!_[_0xf703('0x15')](_0x3aca8e)?_0xf703('0x16')+_0x3aca8e:'';_0x22f8de=typeof _0x36605b[_0xf703('0x10')]===_0xf703('0x17')?JSON[_0xf703('0x13')](_0x36605b[_0xf703('0x10')]):_0x36605b[_0xf703('0x10')];logger['info'](util[_0xf703('0x18')](_0xf703('0x19'),_0xd5d8a1[_0xf703('0x6')],_0xd5d8a1[_0xf703('0x9')],_0x36605b['statusCode'],_0x22f8de));})[_0xf703('0x1a')](function(_0x25ca45){logger['error'](util[_0xf703('0x18')](_0xf703('0x1b'),_0xd5d8a1['data1'],_0xd5d8a1[_0xf703('0x9')],_0x25ca45[_0xf703('0x1c')],_0x25ca45[_0xf703('0x1d')],_0x25ca45['message']));});};
\ No newline at end of file
+var _0x5dab=['body','error','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\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','message','request-promise','mustache','trigger','exec','data1','toUpperCase','render','data2','data5','headers','data6','parse','stack','GET','POST','data7'];(function(_0x1e0846,_0x4aea1b){var _0x57e5d7=function(_0x2f9fb3){while(--_0x2f9fb3){_0x1e0846['push'](_0x1e0846['shift']());}};_0x57e5d7(++_0x4aea1b);}(_0x5dab,0x107));var _0xb5da=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0x5dab[_0x4b2863];return _0x567d67;};'use strict';var rp=require(_0xb5da('0x0'));var util=require('util');var _=require('lodash');var Mustache=require(_0xb5da('0x1'));var logger=require('../../../../config/logger')(_0xb5da('0x2'));exports[_0xb5da('0x3')]=function(_0x396bcc,_0x3f65da){var _0x47cf47,_0x34afeb;var _0x173d0a={'method':_0x396bcc[_0xb5da('0x4')][_0xb5da('0x5')](),'uri':Mustache[_0xb5da('0x6')](_0x396bcc[_0xb5da('0x7')],_0x3f65da),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x396bcc[_0xb5da('0x8')])==='number'&&parseInt(_0x396bcc[_0xb5da('0x8')])>=0x1&&parseInt(_0x396bcc[_0xb5da('0x8')])<=0xa?parseInt(_0x396bcc[_0xb5da('0x8')])*0x3e8:0x5*0x3e8};try{_0x173d0a[_0xb5da('0x9')]=_0x396bcc[_0xb5da('0xa')]?JSON[_0xb5da('0xb')](Mustache[_0xb5da('0x6')](_0x396bcc[_0xb5da('0xa')],_0x3f65da)):{};}catch(_0x13b587){logger['error'](_0x13b587[_0xb5da('0xc')]);}switch(_0x396bcc[_0xb5da('0x4')]['toUpperCase']()){case _0xb5da('0xd'):case'DELETE':_0x47cf47=null;_0x173d0a['qs']=_0x3f65da;break;case _0xb5da('0xe'):case'PUT':if(_0x396bcc[_0xb5da('0xf')]){try{_0x47cf47=JSON[_0xb5da('0xb')](Mustache[_0xb5da('0x6')](_0x396bcc['data7'],_0x3f65da));_0x173d0a[_0xb5da('0x10')]=_0x47cf47;}catch(_0x68be45){logger[_0xb5da('0x11')](_0x68be45['stack']);logger[_0xb5da('0x11')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x47cf47=_0x3f65da;_0x173d0a[_0xb5da('0x10')]=_0x47cf47;}break;}logger[_0xb5da('0x12')](util[_0xb5da('0x13')](_0xb5da('0x14'),_0x396bcc['data1'],_0x396bcc['data2'],JSON[_0xb5da('0x15')](_0x173d0a)));rp(_0x173d0a)[_0xb5da('0x16')](function(_0xd07522){_0x47cf47=!_[_0xb5da('0x17')](_0x47cf47)?_0xb5da('0x18')+_0x47cf47:'';_0x34afeb=typeof _0xd07522[_0xb5da('0x10')]===_0xb5da('0x19')?JSON[_0xb5da('0x15')](_0xd07522[_0xb5da('0x10')]):_0xd07522['body'];logger['info'](util['format'](_0xb5da('0x1a'),_0x396bcc[_0xb5da('0x4')],_0x396bcc[_0xb5da('0x7')],_0xd07522[_0xb5da('0x1b')],_0x34afeb));})[_0xb5da('0x1c')](function(_0x42d2a1){logger[_0xb5da('0x11')](util[_0xb5da('0x13')](_0xb5da('0x1d'),_0x396bcc['data1'],_0x396bcc[_0xb5da('0x7')],_0x42d2a1[_0xb5da('0x1b')],_0x42d2a1['name'],_0x42d2a1[_0xb5da('0x1e')]));});};
\ No newline at end of file
index 5c1a99e..c3fecf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x381f=['exports','jayson/promise','bluebird','client','request','then','debug','rpc','routing','error','message','result','catch'];(function(_0x4011f6,_0x1991b1){var _0xda07fd=function(_0x2fc000){while(--_0x2fc000){_0x4011f6['push'](_0x4011f6['shift']());}};_0xda07fd(++_0x1991b1);}(_0x381f,0xd1));var _0xf381=function(_0x28ff0c,_0x56ed67){_0x28ff0c=_0x28ff0c-0x0;var _0x2c55bd=_0x381f[_0x28ff0c];return _0x2c55bd;};'use strict';var jayson=require(_0xf381('0x0'));var BPromise=require(_0xf381('0x1'));var logger=require('../../config/logger')('routing');var client=jayson[_0xf381('0x2')]['http']({'port':0x2329});client['Request']=function(_0x43352c,_0x4bb003){return new BPromise(function(_0x59ca19,_0x53a975){return client[_0xf381('0x3')](_0x43352c,_0x4bb003)[_0xf381('0x4')](function(_0xdee12e){logger[_0xf381('0x5')](_0xf381('0x6'),_0xf381('0x7'),_0x43352c,_0x4bb003,_0xdee12e);if(_0xdee12e[_0xf381('0x8')]){logger[_0xf381('0x8')](_0xf381('0x6'),_0xf381('0x7'),_0x43352c,_0xdee12e[_0xf381('0x8')][_0xf381('0x9')],_0x4bb003);return _0x53a975(_0xdee12e['error']['message']);}else{return _0x59ca19(_0xdee12e[_0xf381('0xa')]);}})[_0xf381('0xb')](function(_0x5e6949){logger[_0xf381('0x8')](_0xf381('0x6'),'routing',_0x43352c,_0x5e6949,_0x4bb003);return _0x53a975(_0x5e6949);});});};module[_0xf381('0xc')]=client;
\ No newline at end of file
+var _0x62c2=['client','http','then','debug','rpc','error','message','result','catch','exports','jayson/promise','../../config/logger','routing'];(function(_0x26e90a,_0x2f00b6){var _0x3cf4c4=function(_0x29a116){while(--_0x29a116){_0x26e90a['push'](_0x26e90a['shift']());}};_0x3cf4c4(++_0x2f00b6);}(_0x62c2,0x99));var _0x262c=function(_0x33fbc4,_0x23b9b4){_0x33fbc4=_0x33fbc4-0x0;var _0x10d6d7=_0x62c2[_0x33fbc4];return _0x10d6d7;};'use strict';var jayson=require(_0x262c('0x0'));var BPromise=require('bluebird');var logger=require(_0x262c('0x1'))(_0x262c('0x2'));var client=jayson[_0x262c('0x3')][_0x262c('0x4')]({'port':0x2329});client['Request']=function(_0x5dafc5,_0x5688af){return new BPromise(function(_0x4ace63,_0x2c199a){return client['request'](_0x5dafc5,_0x5688af)[_0x262c('0x5')](function(_0x4ab30e){logger[_0x262c('0x6')](_0x262c('0x7'),_0x262c('0x2'),_0x5dafc5,_0x5688af,_0x4ab30e);if(_0x4ab30e[_0x262c('0x8')]){logger[_0x262c('0x8')](_0x262c('0x7'),'routing',_0x5dafc5,_0x4ab30e[_0x262c('0x8')][_0x262c('0x9')],_0x5688af);return _0x2c199a(_0x4ab30e[_0x262c('0x8')][_0x262c('0x9')]);}else{return _0x4ace63(_0x4ab30e[_0x262c('0xa')]);}})[_0x262c('0xb')](function(_0x3d1e87){logger['error'](_0x262c('0x7'),'routing',_0x5dafc5,_0x3d1e87,_0x5688af);return _0x2c199a(_0x3d1e87);});});};module[_0x262c('0xc')]=client;
\ No newline at end of file
index ad8bea9..e119063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6d=['./rpc/mailAccount','resolve','then','getSettings','loginMailFrequency','catch','log','bluebird','./server','./realtime','./lib/email'];(function(_0x543a1e,_0x4569b0){var _0x4ef9a2=function(_0x3daa57){while(--_0x3daa57){_0x543a1e['push'](_0x543a1e['shift']());}};_0x4ef9a2(++_0x4569b0);}(_0xcc6d,0x1a9));var _0xdcc6=function(_0x551baf,_0x432a8c){_0x551baf=_0x551baf-0x0;var _0x185243=_0xcc6d[_0x551baf];return _0x185243;};'use strict';var BPromise=require(_0xdcc6('0x0'));var server=require(_0xdcc6('0x1'));var Realtime=require(_0xdcc6('0x2'));var EmailChannel=require(_0xdcc6('0x3'));var mailAccount=require(_0xdcc6('0x4'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xdcc6('0x5')]()['then'](mailAccount['getMailAccounts']())[_0xdcc6('0x6')](realtime['initMailAccounts']())[_0xdcc6('0x6')](function(){email['refresh'](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0xdcc6('0x6')](function(){return initRealtime();})['then'](function(){return setting[_0xdcc6('0x7')]();})[_0xdcc6('0x6')](function(_0x195e2a){return setInterval(initRealtime,_0x195e2a[_0xdcc6('0x8')]*0x3e8);})[_0xdcc6('0x9')](function(_0x534e17){console[_0xdcc6('0xa')](_0x534e17);});}main();
\ No newline at end of file
+var _0x9527=['catch','./server','./realtime','./lib/email','./rpc/setting','resolve','then','getMailAccounts','refresh','getSettings','loginMailFrequency'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9527,0x135));var _0x7952=function(_0x2584c9,_0x24a87a){_0x2584c9=_0x2584c9-0x0;var _0x253569=_0x9527[_0x2584c9];return _0x253569;};'use strict';var BPromise=require('bluebird');var server=require(_0x7952('0x0'));var Realtime=require(_0x7952('0x1'));var EmailChannel=require(_0x7952('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x7952('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x7952('0x4')]()[_0x7952('0x5')](mailAccount[_0x7952('0x6')]())[_0x7952('0x5')](realtime['initMailAccounts']())[_0x7952('0x5')](function(){email[_0x7952('0x7')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)['then'](function(){return initRealtime();})[_0x7952('0x5')](function(){return setting[_0x7952('0x8')]();})[_0x7952('0x5')](function(_0x32d288){return setInterval(initRealtime,_0x32d288[_0x7952('0x9')]*0x3e8);})[_0x7952('0xa')](function(_0x58209c){console['log'](_0x58209c);});}main();
\ No newline at end of file
index f71ca32..c77251c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0c7=['hasOwnProperty','Imap','imapAccounts','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','from','notify','then','catch','sendMail','send','Smtp','lastSync','verify','verified','exports','lodash','bluebird','../../../config/environment','../../../config/logger','email','redis','socket.io-emitter','./imap','../rpc/mailAccount','info','mailAccounts','smtp','prototype','name','key','active','status','messageStatus','total','isNil','stringify','md5','emit','mailAccount:update'];(function(_0x5e3dfe,_0x26092e){var _0x907caf=function(_0x1d9690){while(--_0x1d9690){_0x5e3dfe['push'](_0x5e3dfe['shift']());}};_0x907caf(++_0x26092e);}(_0xa0c7,0x131));var _0x7a0c=function(_0x1492f2,_0x50e4c2){_0x1492f2=_0x1492f2-0x0;var _0x4a479b=_0xa0c7[_0x1492f2];return _0x4a479b;};'use strict';var _=require(_0x7a0c('0x0'));var moment=require('moment');var BPromise=require(_0x7a0c('0x1'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x7a0c('0x2'));var logger=require(_0x7a0c('0x3'))(_0x7a0c('0x4'));config['redis']=_['defaults'](config[_0x7a0c('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x7a0c('0x6'))(new Redis(config[_0x7a0c('0x5')]));var EmailImap=require(_0x7a0c('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x7a0c('0x8'));var md5Accounts={};function EmailChannel(_0x365505){logger[_0x7a0c('0x9')]('start\x20email\x20channel');this[_0x7a0c('0xa')]=_0x365505[_0x7a0c('0xa')];this['imapAccounts']={};this[_0x7a0c('0xb')]=new EmailSmtp();}EmailChannel[_0x7a0c('0xc')]['emit']=function(_0xf4093c){var _0x26efdc=this[_0x7a0c('0xa')][_0xf4093c];var _0x954f36={'id':_0x26efdc['id'],'name':_0x26efdc[_0x7a0c('0xd')],'key':_0x26efdc[_0x7a0c('0xe')],'active':_0x26efdc[_0x7a0c('0xf')],'Imap':{'status':_0x26efdc['Imap'][_0x7a0c('0x10')],'messageStatus':_0x26efdc['Imap'][_0x7a0c('0x11')],'total':_0x26efdc['Imap'][_0x7a0c('0x12')]}};if(_[_0x7a0c('0x13')](md5Accounts[_0xf4093c])){md5Accounts[_0xf4093c]={};}var _0x3f59f9=md5(JSON[_0x7a0c('0x14')](_0x954f36));if(md5Accounts[_0xf4093c][_0x7a0c('0x15')]!==_0x3f59f9){md5Accounts[_0xf4093c][_0x7a0c('0x15')]=_0x3f59f9;io[_0x7a0c('0x16')](_0x7a0c('0x17'),_0x954f36);}};EmailChannel[_0x7a0c('0xc')]['refresh']=function(_0xc38f){for(var _0x228911 in _0xc38f){if(_0xc38f[_0x7a0c('0x18')](_0x228911)){if(_0xc38f[_0x228911]['Imap']&&_0xc38f[_0x228911][_0x7a0c('0xf')]){var _0x4e1059=_0xc38f[_0x228911][_0x7a0c('0x19')];if(!this[_0x7a0c('0x1a')][_0x7a0c('0x18')](_0x4e1059['id'])){this[_0x7a0c('0x1a')][_0x4e1059['id']]=new EmailImap(_0x4e1059,_0xc38f[_0x228911][_0x7a0c('0x4')]);this[_0x7a0c('0x1a')][_0x4e1059['id']]['on']('box',this[_0x7a0c('0x1b')][_0x7a0c('0x1c')](this,_0x228911));this[_0x7a0c('0x1a')][_0x4e1059['id']]['on'](_0x7a0c('0x4'),this[_0x7a0c('0x1d')][_0x7a0c('0x1c')](this,_0x228911));this[_0x7a0c('0x1a')][_0x4e1059['id']]['on'](_0x7a0c('0x1e'),this[_0x7a0c('0x1f')][_0x7a0c('0x1c')](this,_0x228911));this['imapAccounts'][_0x4e1059['id']]['on'](_0x7a0c('0x20'),this[_0x7a0c('0x21')][_0x7a0c('0x1c')](this,_0x228911));}}else{if(_[_0x7a0c('0x13')](this[_0x7a0c('0xa')][_0x228911][_0x7a0c('0x19')])){this[_0x7a0c('0xa')][_0x228911][_0x7a0c('0x19')]={};}this[_0x7a0c('0xa')][_0x228911]['Imap'][_0x7a0c('0x10')]='disabled';this[_0x7a0c('0xa')][_0x228911][_0x7a0c('0x19')][_0x7a0c('0x11')]='';this[_0x7a0c('0x16')](_0x228911);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x3d7fd1,_0x218c36){if(this[_0x7a0c('0xa')][_0x3d7fd1]){this['mailAccounts'][_0x3d7fd1][_0x7a0c('0x19')]['status']='connected';this[_0x7a0c('0xa')][_0x3d7fd1][_0x7a0c('0x19')][_0x7a0c('0x11')]=_0x218c36[_0x7a0c('0xd')];if(_0x218c36[_0x7a0c('0x22')]){this['mailAccounts'][_0x3d7fd1][_0x7a0c('0x19')]['total']=_0x218c36[_0x7a0c('0x22')][_0x7a0c('0x12')];}return this[_0x7a0c('0x16')](_0x3d7fd1);}};EmailChannel[_0x7a0c('0xc')][_0x7a0c('0x1d')]=function(_0x3250c8,_0x10e408){logger[_0x7a0c('0x9')](_0x7a0c('0x23'),_0x10e408['firstName'],_0x10e408['lastName'],_0x10e408[_0x7a0c('0x24')],_0x3250c8);if(this[_0x7a0c('0xa')][_0x3250c8]){return mailAccount[_0x7a0c('0x25')](_0x3250c8,_0x10e408)[_0x7a0c('0x26')](function(_0x349c0a){if(_0x349c0a){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0x7a0c('0x27')](function(_0x3ce96e){logger[_0x7a0c('0x20')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x7a0c('0x14')](_0x3ce96e));});}};EmailChannel[_0x7a0c('0xc')][_0x7a0c('0x1f')]=function(_0x48d563){if(this[_0x7a0c('0xa')][_0x48d563]&&this[_0x7a0c('0xa')][_0x48d563][_0x7a0c('0x19')]){if(this[_0x7a0c('0x1a')][this[_0x7a0c('0xa')][_0x48d563][_0x7a0c('0x19')]['id']]){delete this[_0x7a0c('0x1a')][this[_0x7a0c('0xa')][_0x48d563][_0x7a0c('0x19')]['id']];}this['mailAccounts'][_0x48d563][_0x7a0c('0x19')]['lastSync']=moment();this[_0x7a0c('0x16')](_0x48d563);}};EmailChannel['prototype'][_0x7a0c('0x21')]=function(_0x183133,_0x2b7f58){if(this[_0x7a0c('0xa')][_0x183133]){this[_0x7a0c('0xa')][_0x183133]['Imap'][_0x7a0c('0x10')]=_0x7a0c('0x20');this['mailAccounts'][_0x183133]['Imap'][_0x7a0c('0x11')]=_0x2b7f58;return this[_0x7a0c('0x16')](_0x183133);}};EmailChannel['prototype'][_0x7a0c('0x28')]=function(_0x3fbe3d,_0x1d0db6){return this[_0x7a0c('0xb')][_0x7a0c('0x29')](_0x3fbe3d,_0x1d0db6);};EmailChannel[_0x7a0c('0xc')]['verifySmtp']=function(_0x3dda8b){var _0x34b585=this;if(this[_0x7a0c('0xa')][_0x3dda8b['id']]){if(_[_0x7a0c('0x13')](this[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')])){this[_0x7a0c('0xa')][_0x3dda8b['id']]['Smtp']={};}this[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x2b')]=moment();return new BPromise(function(_0x4beb9a,_0x3f2883){return _0x34b585[_0x7a0c('0xb')][_0x7a0c('0x2c')](_0x3dda8b)['then'](function(_0xabf182){_0x34b585['mailAccounts'][_0x3dda8b['id']][_0x7a0c('0x2a')]['status']=_0x7a0c('0x2d');_0x34b585[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x11')]='';_0x34b585['emit'](_0x3dda8b['id']);_0x4beb9a(_0xabf182);})['catch'](function(_0x472c93){_0x34b585[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x10')]='error';_0x34b585[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x11')]=_0x472c93;_0x34b585[_0x7a0c('0x16')](_0x3dda8b['id']);_0x3f2883(_0x472c93);});});}return this['smtp'][_0x7a0c('0x2c')](_0x3dda8b);};module[_0x7a0c('0x2e')]=EmailChannel;
\ No newline at end of file
+var _0xf301=['start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','key','active','Imap','status','messageStatus','total','isNil','md5','emit','mailAccount:update','refresh','hasOwnProperty','handleImapBox','bind','end','error','handleImapError','connected','messages','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','handleImapEnd','lastSync','sendMail','send','verifySmtp','Smtp','verified','verify','exports','bluebird','ioredis','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','info'];(function(_0x5c1f3d,_0x3bf8fa){var _0xf776e8=function(_0x2348b4){while(--_0x2348b4){_0x5c1f3d['push'](_0x5c1f3d['shift']());}};_0xf776e8(++_0x3bf8fa);}(_0xf301,0xcb));var _0x1f30=function(_0x4cc869,_0x113f69){_0x4cc869=_0x4cc869-0x0;var _0x2c9fe9=_0xf301[_0x4cc869];return _0x2c9fe9;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0x1f30('0x0'));var md5=require('md5');var Redis=require(_0x1f30('0x1'));var config=require('../../../config/environment');var logger=require(_0x1f30('0x2'))(_0x1f30('0x3'));config[_0x1f30('0x4')]=_[_0x1f30('0x5')](config[_0x1f30('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x1f30('0x6'))(new Redis(config[_0x1f30('0x4')]));var EmailImap=require(_0x1f30('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x2e3710){logger[_0x1f30('0x8')](_0x1f30('0x9'));this[_0x1f30('0xa')]=_0x2e3710[_0x1f30('0xa')];this[_0x1f30('0xb')]={};this[_0x1f30('0xc')]=new EmailSmtp();}EmailChannel[_0x1f30('0xd')]['emit']=function(_0x23ff1f){var _0x396b6b=this[_0x1f30('0xa')][_0x23ff1f];var _0x4cf9dc={'id':_0x396b6b['id'],'name':_0x396b6b[_0x1f30('0xe')],'key':_0x396b6b[_0x1f30('0xf')],'active':_0x396b6b[_0x1f30('0x10')],'Imap':{'status':_0x396b6b[_0x1f30('0x11')][_0x1f30('0x12')],'messageStatus':_0x396b6b[_0x1f30('0x11')][_0x1f30('0x13')],'total':_0x396b6b[_0x1f30('0x11')][_0x1f30('0x14')]}};if(_[_0x1f30('0x15')](md5Accounts[_0x23ff1f])){md5Accounts[_0x23ff1f]={};}var _0x15270c=md5(JSON['stringify'](_0x4cf9dc));if(md5Accounts[_0x23ff1f]['md5']!==_0x15270c){md5Accounts[_0x23ff1f][_0x1f30('0x16')]=_0x15270c;io[_0x1f30('0x17')](_0x1f30('0x18'),_0x4cf9dc);}};EmailChannel[_0x1f30('0xd')][_0x1f30('0x19')]=function(_0xa79161){for(var _0x8e96b in _0xa79161){if(_0xa79161[_0x1f30('0x1a')](_0x8e96b)){if(_0xa79161[_0x8e96b]['Imap']&&_0xa79161[_0x8e96b][_0x1f30('0x10')]){var _0x1092a8=_0xa79161[_0x8e96b][_0x1f30('0x11')];if(!this[_0x1f30('0xb')][_0x1f30('0x1a')](_0x1092a8['id'])){this['imapAccounts'][_0x1092a8['id']]=new EmailImap(_0x1092a8,_0xa79161[_0x8e96b][_0x1f30('0x3')]);this[_0x1f30('0xb')][_0x1092a8['id']]['on']('box',this[_0x1f30('0x1b')]['bind'](this,_0x8e96b));this[_0x1f30('0xb')][_0x1092a8['id']]['on'](_0x1f30('0x3'),this['handleImapEmail'][_0x1f30('0x1c')](this,_0x8e96b));this['imapAccounts'][_0x1092a8['id']]['on'](_0x1f30('0x1d'),this['handleImapEnd']['bind'](this,_0x8e96b));this[_0x1f30('0xb')][_0x1092a8['id']]['on'](_0x1f30('0x1e'),this[_0x1f30('0x1f')][_0x1f30('0x1c')](this,_0x8e96b));}}else{if(_[_0x1f30('0x15')](this[_0x1f30('0xa')][_0x8e96b][_0x1f30('0x11')])){this[_0x1f30('0xa')][_0x8e96b][_0x1f30('0x11')]={};}this[_0x1f30('0xa')][_0x8e96b][_0x1f30('0x11')]['status']='disabled';this[_0x1f30('0xa')][_0x8e96b]['Imap'][_0x1f30('0x13')]='';this[_0x1f30('0x17')](_0x8e96b);}}}};EmailChannel[_0x1f30('0xd')]['handleImapBox']=function(_0x2105ec,_0x449200){if(this[_0x1f30('0xa')][_0x2105ec]){this[_0x1f30('0xa')][_0x2105ec][_0x1f30('0x11')][_0x1f30('0x12')]=_0x1f30('0x20');this[_0x1f30('0xa')][_0x2105ec][_0x1f30('0x11')]['messageStatus']=_0x449200[_0x1f30('0xe')];if(_0x449200[_0x1f30('0x21')]){this['mailAccounts'][_0x2105ec][_0x1f30('0x11')]['total']=_0x449200[_0x1f30('0x21')][_0x1f30('0x14')];}return this[_0x1f30('0x17')](_0x2105ec);}};EmailChannel[_0x1f30('0xd')][_0x1f30('0x22')]=function(_0x4a1954,_0x5cb7f5){logger['info'](_0x1f30('0x23'),_0x5cb7f5['firstName'],_0x5cb7f5[_0x1f30('0x24')],_0x5cb7f5[_0x1f30('0x25')],_0x4a1954);if(this[_0x1f30('0xa')][_0x4a1954]){return mailAccount[_0x1f30('0x26')](_0x4a1954,_0x5cb7f5)[_0x1f30('0x27')](function(_0xe883c4){if(_0xe883c4){logger[_0x1f30('0x8')](_0x1f30('0x28'));}})[_0x1f30('0x29')](function(_0x402744){logger['error'](_0x1f30('0x2a'),JSON[_0x1f30('0x2b')](_0x402744));});}};EmailChannel['prototype'][_0x1f30('0x2c')]=function(_0x9b5d3b){if(this['mailAccounts'][_0x9b5d3b]&&this[_0x1f30('0xa')][_0x9b5d3b][_0x1f30('0x11')]){if(this[_0x1f30('0xb')][this[_0x1f30('0xa')][_0x9b5d3b][_0x1f30('0x11')]['id']]){delete this[_0x1f30('0xb')][this[_0x1f30('0xa')][_0x9b5d3b]['Imap']['id']];}this['mailAccounts'][_0x9b5d3b][_0x1f30('0x11')][_0x1f30('0x2d')]=moment();this[_0x1f30('0x17')](_0x9b5d3b);}};EmailChannel[_0x1f30('0xd')][_0x1f30('0x1f')]=function(_0x52a52,_0x2e0e55){if(this[_0x1f30('0xa')][_0x52a52]){this[_0x1f30('0xa')][_0x52a52][_0x1f30('0x11')][_0x1f30('0x12')]=_0x1f30('0x1e');this[_0x1f30('0xa')][_0x52a52][_0x1f30('0x11')][_0x1f30('0x13')]=_0x2e0e55;return this['emit'](_0x52a52);}};EmailChannel[_0x1f30('0xd')][_0x1f30('0x2e')]=function(_0x5d59f7,_0x38e6df){return this[_0x1f30('0xc')][_0x1f30('0x2f')](_0x5d59f7,_0x38e6df);};EmailChannel[_0x1f30('0xd')][_0x1f30('0x30')]=function(_0x530bf1){var _0x500502=this;if(this[_0x1f30('0xa')][_0x530bf1['id']]){if(_[_0x1f30('0x15')](this['mailAccounts'][_0x530bf1['id']][_0x1f30('0x31')])){this[_0x1f30('0xa')][_0x530bf1['id']][_0x1f30('0x31')]={};}this[_0x1f30('0xa')][_0x530bf1['id']]['Smtp'][_0x1f30('0x2d')]=moment();return new BPromise(function(_0x1eea48,_0x92a1c7){return _0x500502['smtp']['verify'](_0x530bf1)[_0x1f30('0x27')](function(_0xbcdca4){_0x500502[_0x1f30('0xa')][_0x530bf1['id']][_0x1f30('0x31')][_0x1f30('0x12')]=_0x1f30('0x32');_0x500502['mailAccounts'][_0x530bf1['id']][_0x1f30('0x31')]['messageStatus']='';_0x500502['emit'](_0x530bf1['id']);_0x1eea48(_0xbcdca4);})['catch'](function(_0x35eae3){_0x500502[_0x1f30('0xa')][_0x530bf1['id']][_0x1f30('0x31')][_0x1f30('0x12')]='error';_0x500502[_0x1f30('0xa')][_0x530bf1['id']][_0x1f30('0x31')][_0x1f30('0x13')]=_0x35eae3;_0x500502[_0x1f30('0x17')](_0x530bf1['id']);_0x92a1c7(_0x35eae3);});});}return this[_0x1f30('0xc')][_0x1f30('0x33')](_0x530bf1);};module[_0x1f30('0x34')]=EmailChannel;
\ No newline at end of file
index c591abb..98366ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd382=['body','handleMessageBody','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','handleFetchEnd','closeBox','textCode','hasOwnProperty','upperFirst','path','util','imap','lodash','randomstring','mailparser','simpleParser','iconv','Iconv','events','email','mailbox','INBOX','account','once','handleReady','end','handleEnd','bind','error','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','openBox','handleOpenBox','handleError','emit','box','handleCloseBox','readUnseen','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError'];(function(_0x427c69,_0x2edde6){var _0x585e89=function(_0x49ece4){while(--_0x49ece4){_0x427c69['push'](_0x427c69['shift']());}};_0x585e89(++_0x2edde6);}(_0xd382,0x1b6));var _0x2d38=function(_0x593d6f,_0x1be44d){_0x593d6f=_0x593d6f-0x0;var _0x576270=_0xd382[_0x593d6f];return _0x576270;};'use strict';var fs=require('fs');var path=require(_0x2d38('0x0'));var util=require(_0x2d38('0x1'));var Imap=require(_0x2d38('0x2'));var _=require(_0x2d38('0x3'));var rs=require(_0x2d38('0x4'));var simpleParser=require(_0x2d38('0x5'))[_0x2d38('0x6')];var Iconv=require(_0x2d38('0x7'))[_0x2d38('0x8')];var EventEmitter=require(_0x2d38('0x9'))['EventEmitter'];var utils=require('./utils');var logger=require('../../../config/logger')(_0x2d38('0xa'));function EmailImap(_0x1e2919,_0x55ae65){this[_0x2d38('0xb')]=_0x2d38('0xc');this[_0x2d38('0xd')]=this['getAccount'](_0x1e2919,_0x55ae65);this['imap']=new Imap(this[_0x2d38('0xd')]);this[_0x2d38('0x2')][_0x2d38('0xe')]('ready',this[_0x2d38('0xf')]['bind'](this));this[_0x2d38('0x2')][_0x2d38('0xe')](_0x2d38('0x10'),this[_0x2d38('0x11')][_0x2d38('0x12')](this));this[_0x2d38('0x2')]['on'](_0x2d38('0x13'),this['handleError'][_0x2d38('0x12')](this));this[_0x2d38('0x2')][_0x2d38('0x14')]();}util[_0x2d38('0x15')](EmailImap,EventEmitter);EmailImap[_0x2d38('0x16')]['getAccount']=function(_0x1c7c1d,_0xe92882){var _0x4175cf={'connTimeout':_0x1c7c1d[_0x2d38('0x17')]?_0x1c7c1d[_0x2d38('0x17')]*0x3e8:0x2710,'authTimeout':_0x1c7c1d[_0x2d38('0x18')]?_0x1c7c1d[_0x2d38('0x18')]*0x3e8:0x1388};if(_[_0x2d38('0x19')](_0x1c7c1d[_0x2d38('0x1a')])){if(_0x1c7c1d[_0x2d38('0x1b')]){_0x4175cf[_0x2d38('0x1c')]=_0x1c7c1d[_0x2d38('0x1c')];_0x4175cf[_0x2d38('0x1d')]=_0x1c7c1d[_0x2d38('0x1d')];}_0x4175cf[_0x2d38('0x1e')]=_0x1c7c1d[_0x2d38('0x1e')];_0x4175cf['port']=_0x1c7c1d[_0x2d38('0x1f')]||0x3e1;if(_0x1c7c1d[_0x2d38('0x20')]){_0x4175cf['tls']=!![];}else{_0x4175cf[_0x2d38('0x20')]=![];_0x4175cf[_0x2d38('0x21')]=_0x2d38('0x22');}}else{_0x4175cf['user']=_0x1c7c1d[_0x2d38('0x1c')];_0x4175cf['password']=_0x1c7c1d['password'];_0x4175cf[_0x2d38('0x1e')]=utils[_0x2d38('0x23')](_0x1c7c1d[_0x2d38('0x1a')]);_0x4175cf[_0x2d38('0x1f')]=0x3e1;_0x4175cf[_0x2d38('0x20')]=!![];}_0x4175cf[_0x2d38('0xa')]=_0xe92882||_0x1c7c1d[_0x2d38('0x1c')]||_0x2d38('0x24');return _0x4175cf;};EmailImap[_0x2d38('0x16')][_0x2d38('0xf')]=function(){this['imap'][_0x2d38('0x25')](this['mailbox'],![],this[_0x2d38('0x26')]['bind'](this));};EmailImap[_0x2d38('0x16')][_0x2d38('0x26')]=function(_0x389c29,_0x10e283){if(_0x389c29){this[_0x2d38('0x27')](_0x389c29,!![]);}else{this[_0x2d38('0x28')](_0x2d38('0x29'),_0x10e283);this['readUnseen']();}};EmailImap[_0x2d38('0x16')][_0x2d38('0x2a')]=function(_0x34599a){if(_0x34599a){this[_0x2d38('0x27')](_0x34599a,!![]);}else{this[_0x2d38('0x2')][_0x2d38('0x10')]();}};EmailImap[_0x2d38('0x16')][_0x2d38('0x2b')]=function(){this['imap']['search'](['UNSEEN'],this[_0x2d38('0x2c')][_0x2d38('0x12')](this));};EmailImap[_0x2d38('0x16')]['handleReadUnseen']=function(_0x29a38c,_0x4b5891){if(_0x29a38c){this[_0x2d38('0x27')](_0x29a38c,!![]);}else{if(_0x4b5891[_0x2d38('0x2d')]){try{var _0x11e27b=this['imap'][_0x2d38('0x2e')](_0x4b5891,{'bodies':'','markSeen':!![]});_0x11e27b['on'](_0x2d38('0x2f'),this[_0x2d38('0x30')]['bind'](this));_0x11e27b[_0x2d38('0xe')](_0x2d38('0x13'),this[_0x2d38('0x31')][_0x2d38('0x12')](this));_0x11e27b[_0x2d38('0xe')](_0x2d38('0x10'),this['handleFetchEnd'][_0x2d38('0x12')](this));}catch(_0x240d02){logger[_0x2d38('0x13')](_0x240d02);}}else{this[_0x2d38('0x2')]['closeBox'](!![],this[_0x2d38('0x2a')][_0x2d38('0x12')](this));}}};EmailImap[_0x2d38('0x16')][_0x2d38('0x30')]=function(_0x233899,_0x1a689f){_0x233899['on'](_0x2d38('0x32'),this[_0x2d38('0x33')][_0x2d38('0x12')](this));_0x233899[_0x2d38('0xe')]('attributes',this['handleMessageAttributes'][_0x2d38('0x12')](this));_0x233899[_0x2d38('0xe')](_0x2d38('0x10'),this[_0x2d38('0x34')][_0x2d38('0x12')](this));};EmailImap[_0x2d38('0x16')][_0x2d38('0x33')]=function(_0x1f05d1,_0x40694f){simpleParser(_0x1f05d1,{'Iconv':Iconv},this[_0x2d38('0x35')][_0x2d38('0x12')](this));};EmailImap[_0x2d38('0x16')][_0x2d38('0x36')]=function(_0x48be91){};EmailImap[_0x2d38('0x16')][_0x2d38('0x34')]=function(){};EmailImap[_0x2d38('0x16')][_0x2d38('0x35')]=function(_0x55ca42,_0x290af4){if(_0x55ca42){logger[_0x2d38('0x13')](_0x55ca42);}else{var _0x213b07=this;utils[_0x2d38('0x37')](this[_0x2d38('0xd')],_0x290af4,function(_0x3beb74){_0x213b07[_0x2d38('0x28')](_0x2d38('0xa'),_0x3beb74);});}};EmailImap[_0x2d38('0x16')][_0x2d38('0x38')]=function(){this[_0x2d38('0x2')][_0x2d38('0x39')](!![],this[_0x2d38('0x2a')][_0x2d38('0x12')](this));};EmailImap['prototype'][_0x2d38('0x31')]=function(_0x1db297){this['handleError'](_0x1db297);this['imap'][_0x2d38('0x39')](!![],this[_0x2d38('0x2a')][_0x2d38('0x12')](this));};EmailImap['prototype'][_0x2d38('0x11')]=function(){this[_0x2d38('0x28')](_0x2d38('0x10'));};EmailImap['prototype']['handleError']=function(_0x2eeca7,_0x59de7d){logger[_0x2d38('0x13')](_0x2d38('0x27'),this[_0x2d38('0xd')]['email'],JSON['stringify'](_0x2eeca7));var _0x166af1='';if(_0x2eeca7){if(_0x2eeca7[_0x2d38('0x3a')]){_0x166af1=_0x2eeca7[_0x2d38('0x3a')];}else{for(var _0x555bd7 in _0x2eeca7){if(_0x2eeca7[_0x2d38('0x3b')](_0x555bd7)){_0x166af1+=_[_0x2d38('0x3c')](_0x555bd7)+':\x20'+_0x2eeca7[_0x555bd7]+'\x0a';}}}}if(_0x59de7d){this[_0x2d38('0x2')]['end']();}else{this[_0x2d38('0x28')](_0x2d38('0x13'),_0x166af1);this[_0x2d38('0x28')]('end');}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x5755=['body','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','closeBox','stringify','textCode','hasOwnProperty','upperFirst','exports','util','imap','lodash','mailparser','simpleParser','iconv','Iconv','events','EventEmitter','./utils','../../../config/logger','email','mailbox','INBOX','account','once','ready','handleReady','bind','end','handleEnd','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','openBox','handleOpenBox','handleError','emit','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','error','handleFetchError','handleFetchEnd','handleCloseBox','handleFetchMessage'];(function(_0x5eb3c1,_0x1fde09){var _0x2b2a99=function(_0x394ead){while(--_0x394ead){_0x5eb3c1['push'](_0x5eb3c1['shift']());}};_0x2b2a99(++_0x1fde09);}(_0x5755,0x8f));var _0x5575=function(_0x411bbc,_0x44eea7){_0x411bbc=_0x411bbc-0x0;var _0x164e02=_0x5755[_0x411bbc];return _0x164e02;};'use strict';var fs=require('fs');var path=require('path');var util=require(_0x5575('0x0'));var Imap=require(_0x5575('0x1'));var _=require(_0x5575('0x2'));var rs=require('randomstring');var simpleParser=require(_0x5575('0x3'))[_0x5575('0x4')];var Iconv=require(_0x5575('0x5'))[_0x5575('0x6')];var EventEmitter=require(_0x5575('0x7'))[_0x5575('0x8')];var utils=require(_0x5575('0x9'));var logger=require(_0x5575('0xa'))(_0x5575('0xb'));function EmailImap(_0x1919cf,_0x22e768){this[_0x5575('0xc')]=_0x5575('0xd');this['account']=this['getAccount'](_0x1919cf,_0x22e768);this[_0x5575('0x1')]=new Imap(this[_0x5575('0xe')]);this[_0x5575('0x1')][_0x5575('0xf')](_0x5575('0x10'),this[_0x5575('0x11')][_0x5575('0x12')](this));this[_0x5575('0x1')]['once'](_0x5575('0x13'),this[_0x5575('0x14')]['bind'](this));this['imap']['on']('error',this['handleError'][_0x5575('0x12')](this));this[_0x5575('0x1')][_0x5575('0x15')]();}util[_0x5575('0x16')](EmailImap,EventEmitter);EmailImap[_0x5575('0x17')]['getAccount']=function(_0x5d9f49,_0x400239){var _0x488553={'connTimeout':_0x5d9f49['connTimeout']?_0x5d9f49[_0x5575('0x18')]*0x3e8:0x2710,'authTimeout':_0x5d9f49[_0x5575('0x19')]?_0x5d9f49[_0x5575('0x19')]*0x3e8:0x1388};if(_[_0x5575('0x1a')](_0x5d9f49[_0x5575('0x1b')])){if(_0x5d9f49['authentication']){_0x488553['user']=_0x5d9f49[_0x5575('0x1c')];_0x488553[_0x5575('0x1d')]=_0x5d9f49[_0x5575('0x1d')];}_0x488553[_0x5575('0x1e')]=_0x5d9f49[_0x5575('0x1e')];_0x488553[_0x5575('0x1f')]=_0x5d9f49[_0x5575('0x1f')]||0x3e1;if(_0x5d9f49[_0x5575('0x20')]){_0x488553['tls']=!![];}else{_0x488553[_0x5575('0x20')]=![];_0x488553[_0x5575('0x21')]=_0x5575('0x22');}}else{_0x488553['user']=_0x5d9f49['user'];_0x488553['password']=_0x5d9f49['password'];_0x488553['host']=utils[_0x5575('0x23')](_0x5d9f49[_0x5575('0x1b')]);_0x488553[_0x5575('0x1f')]=0x3e1;_0x488553[_0x5575('0x20')]=!![];}_0x488553['email']=_0x400239||_0x5d9f49[_0x5575('0x1c')]||_0x5575('0x24');return _0x488553;};EmailImap[_0x5575('0x17')][_0x5575('0x11')]=function(){this[_0x5575('0x1')][_0x5575('0x25')](this['mailbox'],![],this['handleOpenBox']['bind'](this));};EmailImap[_0x5575('0x17')][_0x5575('0x26')]=function(_0x5154f4,_0x2d5f1d){if(_0x5154f4){this[_0x5575('0x27')](_0x5154f4,!![]);}else{this[_0x5575('0x28')]('box',_0x2d5f1d);this[_0x5575('0x29')]();}};EmailImap[_0x5575('0x17')]['handleCloseBox']=function(_0x233e03){if(_0x233e03){this['handleError'](_0x233e03,!![]);}else{this[_0x5575('0x1')]['end']();}};EmailImap['prototype'][_0x5575('0x29')]=function(){this[_0x5575('0x1')][_0x5575('0x2a')]([_0x5575('0x2b')],this['handleReadUnseen'][_0x5575('0x12')](this));};EmailImap[_0x5575('0x17')][_0x5575('0x2c')]=function(_0x155e9d,_0x9ab84e){if(_0x155e9d){this['handleError'](_0x155e9d,!![]);}else{if(_0x9ab84e[_0x5575('0x2d')]){try{var _0x400248=this[_0x5575('0x1')][_0x5575('0x2e')](_0x9ab84e,{'bodies':'','markSeen':!![]});_0x400248['on']('message',this['handleFetchMessage'][_0x5575('0x12')](this));_0x400248[_0x5575('0xf')](_0x5575('0x2f'),this[_0x5575('0x30')]['bind'](this));_0x400248[_0x5575('0xf')](_0x5575('0x13'),this[_0x5575('0x31')][_0x5575('0x12')](this));}catch(_0x19cdab){logger['error'](_0x19cdab);}}else{this[_0x5575('0x1')]['closeBox'](!![],this[_0x5575('0x32')]['bind'](this));}}};EmailImap[_0x5575('0x17')][_0x5575('0x33')]=function(_0xd0c82f,_0x43e90c){_0xd0c82f['on'](_0x5575('0x34'),this[_0x5575('0x35')]['bind'](this));_0xd0c82f[_0x5575('0xf')](_0x5575('0x36'),this['handleMessageAttributes'][_0x5575('0x12')](this));_0xd0c82f['once'](_0x5575('0x13'),this[_0x5575('0x37')][_0x5575('0x12')](this));};EmailImap[_0x5575('0x17')]['handleMessageBody']=function(_0x2d561f,_0x2e9497){simpleParser(_0x2d561f,{'Iconv':Iconv},this[_0x5575('0x38')]['bind'](this));};EmailImap[_0x5575('0x17')][_0x5575('0x39')]=function(_0x3e70d1){};EmailImap[_0x5575('0x17')][_0x5575('0x37')]=function(){};EmailImap[_0x5575('0x17')][_0x5575('0x38')]=function(_0x426fe2,_0x31b8bc){if(_0x426fe2){logger[_0x5575('0x2f')](_0x426fe2);}else{var _0x40363b=this;utils[_0x5575('0x3a')](this[_0x5575('0xe')],_0x31b8bc,function(_0x5e78b5){_0x40363b[_0x5575('0x28')]('email',_0x5e78b5);});}};EmailImap['prototype'][_0x5575('0x31')]=function(){this[_0x5575('0x1')][_0x5575('0x3b')](!![],this[_0x5575('0x32')][_0x5575('0x12')](this));};EmailImap[_0x5575('0x17')]['handleFetchError']=function(_0x59f728){this[_0x5575('0x27')](_0x59f728);this[_0x5575('0x1')][_0x5575('0x3b')](!![],this[_0x5575('0x32')][_0x5575('0x12')](this));};EmailImap['prototype'][_0x5575('0x14')]=function(){this[_0x5575('0x28')]('end');};EmailImap['prototype'][_0x5575('0x27')]=function(_0x4325b7,_0x193f72){logger[_0x5575('0x2f')](_0x5575('0x27'),this['account']['email'],JSON[_0x5575('0x3c')](_0x4325b7));var _0x420c6b='';if(_0x4325b7){if(_0x4325b7['textCode']){_0x420c6b=_0x4325b7[_0x5575('0x3d')];}else{for(var _0x123614 in _0x4325b7){if(_0x4325b7[_0x5575('0x3e')](_0x123614)){_0x420c6b+=_[_0x5575('0x3f')](_0x123614)+':\x20'+_0x4325b7[_0x123614]+'\x0a';}}}}if(_0x193f72){this[_0x5575('0x1')][_0x5575('0x13')]();}else{this[_0x5575('0x28')](_0x5575('0x2f'),_0x420c6b);this[_0x5575('0x28')](_0x5575('0x13'));}};module[_0x5575('0x40')]=EmailImap;
\ No newline at end of file
index 0e313c7..2334ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21fd=['Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','toString','verify'];(function(_0x467428,_0x44244a){var _0x2161f1=function(_0x4e659b){while(--_0x4e659b){_0x467428['push'](_0x467428['shift']());}};_0x2161f1(++_0x44244a);}(_0x21fd,0x1e2));var _0xd21f=function(_0x262451,_0x3db971){_0x262451=_0x262451-0x0;var _0x5496c3=_0x21fd[_0x262451];return _0x5496c3;};'use strict';var nodemailer=require(_0xd21f('0x0'));var BPromise=require(_0xd21f('0x1'));var inlineBase64=require(_0xd21f('0x2'));function EmailSmtp(){}EmailSmtp[_0xd21f('0x3')][_0xd21f('0x4')]=function(_0x3c03d4,_0x5c334a){return new BPromise(function(_0x2cf312,_0x28183c){var _0x4d7e64=nodemailer[_0xd21f('0x5')](_0x3c03d4);_0x4d7e64[_0xd21f('0x6')](_0xd21f('0x7'),inlineBase64());_0x4d7e64['sendMail'](_0x5c334a,function(_0x3aec4f,_0x1380c5){if(_0x3aec4f){_0x28183c(_0x3aec4f[_0xd21f('0x8')]());}else{_0x2cf312(_0x1380c5);}});});};EmailSmtp[_0xd21f('0x3')][_0xd21f('0x9')]=function(_0x328db1){return new BPromise(function(_0x368948,_0xcf4a59){var _0x4cf804=nodemailer[_0xd21f('0x5')](_0x328db1);_0x4cf804[_0xd21f('0x9')](function(_0x31cbc8,_0x16dbcf){if(_0x31cbc8){_0xcf4a59(_0x31cbc8[_0xd21f('0x8')]());}else{if(_0x16dbcf){_0x368948(_0x16dbcf);}else{_0xcf4a59(_0xd21f('0xa'));}}});});};module[_0xd21f('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0xf91f=['Not\x20verifired','exports','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','sendMail','verify','toString'];(function(_0x1496ed,_0x4e79f1){var _0x5f1086=function(_0x35172e){while(--_0x35172e){_0x1496ed['push'](_0x1496ed['shift']());}};_0x5f1086(++_0x4e79f1);}(_0xf91f,0xe8));var _0xff91=function(_0x4b5eb8,_0x2d6086){_0x4b5eb8=_0x4b5eb8-0x0;var _0x412aa9=_0xf91f[_0x4b5eb8];return _0x412aa9;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0xff91('0x0'));var inlineBase64=require(_0xff91('0x1'));function EmailSmtp(){}EmailSmtp[_0xff91('0x2')][_0xff91('0x3')]=function(_0x2750b9,_0xdddcdf){return new BPromise(function(_0x2ed6d1,_0x262669){var _0x53bd6e=nodemailer[_0xff91('0x4')](_0x2750b9);_0x53bd6e['use']('compile',inlineBase64());_0x53bd6e[_0xff91('0x5')](_0xdddcdf,function(_0x2714b2,_0xa8bbc3){if(_0x2714b2){_0x262669(_0x2714b2['toString']());}else{_0x2ed6d1(_0xa8bbc3);}});});};EmailSmtp['prototype']['verify']=function(_0x5746de){return new BPromise(function(_0x565503,_0x546ddc){var _0x4df8e3=nodemailer[_0xff91('0x4')](_0x5746de);_0x4df8e3[_0xff91('0x6')](function(_0x85674,_0x27a8d2){if(_0x85674){_0x546ddc(_0x85674[_0xff91('0x7')]());}else{if(_0x27a8d2){_0x565503(_0x27a8d2);}else{_0x546ddc(_0xff91('0x8'));}}});});};module[_0xff91('0x9')]=EmailSmtp;
\ No newline at end of file
index 6a59d82..eca7c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['pop','isEmpty','anonymous','html','test','replace','includes','<img','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originCc','originTo','attachments','attach','type','attachment','%s-%s','now','root','writeFileSync','content','contentType','parser','from','subject','messageId','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','format','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Data','imap.gmail.com','yahoo','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','node-tnef','../../../config/logger','email','../../../config/environment','value','address','generate','@xcally.com','name','split','length','slice','join','Anonymous','head'];(function(_0x4f99a2,_0x1db834){var _0x497909=function(_0x4ad129){while(--_0x4ad129){_0x4f99a2['push'](_0x4f99a2['shift']());}};_0x497909(++_0x1db834);}(_0xb62e,0x1de));var _0xeb62=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb62e[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xeb62('0x0'));var moment=require(_0xeb62('0x1'));var random=require(_0xeb62('0x2'));var fs=require('fs');var path=require(_0xeb62('0x3'));var util=require('util');var tnef=require(_0xeb62('0x4'));var logger=require(_0xeb62('0x5'))(_0xeb62('0x6'));var config=require(_0xeb62('0x7'));function getAddress(_0x3c7ad5){var _0x1ebdbb=_['head'](_0x3c7ad5[_0xeb62('0x8')]);return _0x1ebdbb&&_0x1ebdbb[_0xeb62('0x9')]?_0x1ebdbb[_0xeb62('0x9')]:'anonymous'+random[_0xeb62('0xa')](0x6)+_0xeb62('0xb');}function getFirstName(_0x1e10ae){var _0x84edee=_['head'](_0x1e10ae['value']);if(_0x84edee&&_0x84edee[_0xeb62('0xc')]){var _0x40584b=_0x84edee[_0xeb62('0xc')][_0xeb62('0xd')](/\s+/);return _0x40584b[_0xeb62('0xe')]?_0x40584b[_0xeb62('0xf')](0x0,-0x1)[_0xeb62('0x10')]('\x20'):_0x84edee[_0xeb62('0xc')];}return _0xeb62('0x11');}function getLastName(_0x17724e){var _0x4a493c=_[_0xeb62('0x12')](_0x17724e[_0xeb62('0x8')]);if(_0x4a493c&&_0x4a493c[_0xeb62('0xc')]){var _0x6822bc=_0x4a493c['name'][_0xeb62('0xd')](/\s+/);return _0x6822bc[_0xeb62('0xe')]>0x1?_0x6822bc[_0xeb62('0x13')]():'';}return'';}function getMails(_0x4da178,_0x26c3fd){var _0x195837='';for(var _0x2fd4c7=0x0;_0x2fd4c7<_0x26c3fd['value'][_0xeb62('0xe')];_0x2fd4c7+=0x1){if(_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]!==_0x4da178){if(!_[_0xeb62('0x14')](_0x195837)){_0x195837+=',';}_0x195837+=_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0xc')]||_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]||'';_0x195837+='\x20<';_0x195837+=_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]?_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]:_0xeb62('0x15')+random['generate'](0x6)+_0xeb62('0xb');_0x195837+='>';}}return _0x195837;}function parseEmail(_0x130e2f,_0x332396,_0xb44905){if(_0x332396[_0xeb62('0x16')]){var _0x24cbf3=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x24cbf3[_0xeb62('0x17')](_0x332396['html'])){_0x332396['html']=_0x332396[_0xeb62('0x16')][_0xeb62('0x18')](_0x24cbf3,'');}if(_0x332396[_0xeb62('0x16')][_0xeb62('0x19')](_0xeb62('0x1a'))){var _0x4cafcf=[];_0x332396['attachments'][_0xeb62('0x1b')](_0x132861=>{_0x4cafcf[_0xeb62('0x1c')](_0x132861[_0xeb62('0x1d')]);});var _0x55a169=/<img.*? _SRC(.*?)[^\>]+>/g;var _0x4e92f5=/src=\"data:image\/([a-zA-Z]*);base64,([^\"]*)\"/g;var _0x3ef988=_0x332396['html'][_0xeb62('0x18')](_0x4e92f5,'_SRC');var _0xfe3e16=_0x3ef988['replace'](_0x55a169,_0xeb62('0x1e'));for(let _0x6bfbbc=0x0;_0x6bfbbc<_0x4cafcf[_0xeb62('0xe')];_0x6bfbbc++){var _0x4e4268=_0xfe3e16[_0xeb62('0x18')](_0xeb62('0x1e'),_0xeb62('0x1f')+_0x4cafcf[_0x6bfbbc]+_0xeb62('0x20'));_0xfe3e16=_0x4e4268;}_0x332396[_0xeb62('0x16')]=_0xfe3e16;}_0xb44905[_0xeb62('0x21')]=_0x332396['html'];}else{_0xb44905[_0xeb62('0x21')]=_0x332396[_0xeb62('0x22')];}if(_0xb44905['body']){_0xb44905[_0xeb62('0x21')]=_0xb44905[_0xeb62('0x21')][_0xeb62('0x18')](/<a\s+/gi,_0xeb62('0x23'));}if(_0x332396['to']){_0xb44905[_0xeb62('0x24')]['originTo']=getMails(null,_0x332396['to']);var _0x4b58af=getMails(_0x130e2f[_0xeb62('0x6')],_0x332396['to']);if(!_[_0xeb62('0x14')](_0x4b58af)){_0xb44905[_0xeb62('0x24')]['cc']+=_0x4b58af;}}if(_0x332396['cc']){_0xb44905[_0xeb62('0x24')][_0xeb62('0x25')]=getMails(null,_0x332396['cc']);var _0x2ad3ec=getMails(_0x130e2f[_0xeb62('0x6')],_0x332396['cc']);if(!_['isEmpty'](_0x2ad3ec)){if(!_[_0xeb62('0x14')](_0xb44905['message']['cc'])){_0xb44905['message']['cc']+=',';}_0xb44905[_0xeb62('0x24')]['cc']+=_0x2ad3ec;}}if(!_[_0xeb62('0x19')](_0xb44905['message'][_0xeb62('0x26')],_0x130e2f['email'])&&!_[_0xeb62('0x19')](_0xb44905[_0xeb62('0x24')]['originCc'],_0x130e2f[_0xeb62('0x6')])){_0xb44905[_0xeb62('0x24')]['bcc']=_0x130e2f[_0xeb62('0x6')];}if(_0x332396[_0xeb62('0x27')]&&_0x332396[_0xeb62('0x27')][_0xeb62('0xe')]){_0xb44905['message'][_0xeb62('0x28')]=_0x332396[_0xeb62('0x27')]['length'];for(var _0x4acc96=0x0,_0x112cd7,_0x117d8c,_0x4e29a7;_0x4acc96<_0x332396[_0xeb62('0x27')][_0xeb62('0xe')];_0x4acc96+=0x1){if(_0x332396[_0xeb62('0x27')][_0x4acc96][_0xeb62('0x29')]===_0xeb62('0x2a')){_0x4e29a7=_0x332396[_0xeb62('0x27')][_0x4acc96][_0xeb62('0x1d')]||'attachment-'+_0x4acc96;_0x112cd7=util['format'](_0xeb62('0x2b'),Date[_0xeb62('0x2c')](),_0x4e29a7);_0x117d8c=path[_0xeb62('0x10')](config[_0xeb62('0x2d')],'server/files/attachments/',_0x112cd7);fs[_0xeb62('0x2e')](_0x117d8c,_0x332396['attachments'][_0x4acc96][_0xeb62('0x2f')]);_0xb44905[_0xeb62('0x24')][_0xeb62('0x27')][_0xeb62('0x1c')]({'name':_0x4e29a7,'basename':_0x112cd7,'type':_0x332396[_0xeb62('0x27')][_0x4acc96][_0xeb62('0x30')],'filepath':_0x117d8c});}}}return _0xb44905;}exports[_0xeb62('0x31')]=function(_0x40e3a0,_0x5e8ef8,_0x38f91b){var _0x3f1cd9={'from':getAddress(_0x5e8ef8[_0xeb62('0x32')]),'firstName':getFirstName(_0x5e8ef8[_0xeb62('0x32')]),'lastName':getLastName(_0x5e8ef8['from']),'mapKey':'email','message':{'from':getMails(_0x40e3a0[_0xeb62('0x6')],_0x5e8ef8[_0xeb62('0x32')]),'to':_0x40e3a0['email'],'cc':'','subject':_0x5e8ef8[_0xeb62('0x33')]||'','messageId':_0x5e8ef8[_0xeb62('0x34')],'inReplyTo':_0x5e8ef8['inReplyTo'],'sentAt':moment(_0x5e8ef8[_0xeb62('0x35')])['format'](_0xeb62('0x36')),'attach':![],'attachments':[]}};if(!_0x5e8ef8['html']&&!_0x5e8ef8[_0xeb62('0x22')]){var _0x5dde1d=_[_0xeb62('0x37')](_0x5e8ef8[_0xeb62('0x27')],{'contentType':_0xeb62('0x38')});if(_0x5dde1d['length']){logger['info'](util[_0xeb62('0x39')](_0xeb62('0x3a'),_0x5e8ef8[_0xeb62('0x34')]));tnef[_0xeb62('0x3b')](_[_0xeb62('0x3c')](_0x5dde1d)['content'],function(_0x29fdb8,_0x56efe0){if(_0x56efe0){_0x5e8ef8[_0xeb62('0x16')]=_0x56efe0['BodyHTML']||_0xeb62('0x3d');if(_0x56efe0['Attachments']){for(var _0x26c77d=0x0;_0x26c77d<_0x56efe0['Attachments'][_0xeb62('0xe')];_0x26c77d++){var _0x4624e7=_0x56efe0[_0xeb62('0x3e')][_0x26c77d];_0x3f1cd9[_0xeb62('0x24')][_0xeb62('0x27')][_0xeb62('0x1c')]({'filename':_0x4624e7['Title'],'content':new Buffer(_0x4624e7[_0xeb62('0x3f')])});}}}_0x38f91b(parseEmail(_0x40e3a0,_0x5e8ef8,_0x3f1cd9));});}else{_0x5e8ef8[_0xeb62('0x16')]='<p>Empty\x20message</p>';_0x38f91b(parseEmail(_0x40e3a0,_0x5e8ef8,_0x3f1cd9));}}else{_0x38f91b(parseEmail(_0x40e3a0,_0x5e8ef8,_0x3f1cd9));}};exports['getHost']=function(_0x5c21da){switch(_0x5c21da){case'gmail':return _0xeb62('0x40');case _0xeb62('0x41'):return'imap.mail.yahoo.com';case _0xeb62('0x42'):return _0xeb62('0x43');case _0xeb62('0x44'):return _0xeb62('0x45');}return _0xeb62('0x46');};
\ No newline at end of file
+var _0xb016=['html','test','replace','<img','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attach','type','attachment','format','%s-%s','now','root','server/files/attachments/','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','parser','from','subject','messageId','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','content','BodyHTML','Attachments','Title','<p>Empty\x20message</p>','getHost','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','lodash','moment','util','../../../config/logger','email','../../../config/environment','head','value','address','generate','@xcally.com','name','indexOf','split','join','Anonymous','pop','length','isEmpty','anonymous'];(function(_0x19fdfc,_0x2c909e){var _0x309e0c=function(_0x1a8389){while(--_0x1a8389){_0x19fdfc['push'](_0x19fdfc['shift']());}};_0x309e0c(++_0x2c909e);}(_0xb016,0x159));var _0x6b01=function(_0x1d27a9,_0x28389c){_0x1d27a9=_0x1d27a9-0x0;var _0x13bae1=_0xb016[_0x1d27a9];return _0x13bae1;};'use strict';var _=require(_0x6b01('0x0'));var moment=require(_0x6b01('0x1'));var random=require('randomstring');var fs=require('fs');var path=require('path');var util=require(_0x6b01('0x2'));var tnef=require('node-tnef');var logger=require(_0x6b01('0x3'))(_0x6b01('0x4'));var config=require(_0x6b01('0x5'));function getAddress(_0x3b9de1){var _0x5964ca=_[_0x6b01('0x6')](_0x3b9de1[_0x6b01('0x7')]);return _0x5964ca&&_0x5964ca[_0x6b01('0x8')]?_0x5964ca['address']:'anonymous'+random[_0x6b01('0x9')](0x6)+_0x6b01('0xa');}function getFirstName(_0x526a7d){var _0x5f4636=_[_0x6b01('0x6')](_0x526a7d[_0x6b01('0x7')]);if(_0x5f4636&&_0x5f4636[_0x6b01('0xb')]){if(_0x5f4636[_0x6b01('0xb')]==_0x5f4636[_0x6b01('0x8')]){return _0x5f4636['name']['substring'](0x0,_0x5f4636[_0x6b01('0xb')][_0x6b01('0xc')]('@'));}var _0x2660c7=_0x5f4636['name'][_0x6b01('0xd')](/\s+/);return _0x2660c7['length']>0x1?_0x2660c7['slice'](0x0,-0x1)[_0x6b01('0xe')]('\x20'):_0x5f4636['name'];}return _0x6b01('0xf');}function getLastName(_0x192406){var _0x47c09f=_[_0x6b01('0x6')](_0x192406['value']);if(_0x47c09f&&_0x47c09f['name']){var _0x51b3cf=_0x47c09f[_0x6b01('0xb')]['split'](/\s+/);return _0x51b3cf['length']>0x1?_0x51b3cf[_0x6b01('0x10')]():'';}return'';}function getMails(_0x327e86,_0x20dd83){var _0x41efa3='';for(var _0x3d7045=0x0;_0x3d7045<_0x20dd83[_0x6b01('0x7')][_0x6b01('0x11')];_0x3d7045+=0x1){if(_0x20dd83[_0x6b01('0x7')][_0x3d7045][_0x6b01('0x8')]!==_0x327e86){if(!_[_0x6b01('0x12')](_0x41efa3)){_0x41efa3+=',';}_0x41efa3+=_0x20dd83[_0x6b01('0x7')][_0x3d7045]['name']||_0x20dd83[_0x6b01('0x7')][_0x3d7045][_0x6b01('0x8')]||'';_0x41efa3+='\x20<';_0x41efa3+=_0x20dd83[_0x6b01('0x7')][_0x3d7045][_0x6b01('0x8')]?_0x20dd83[_0x6b01('0x7')][_0x3d7045][_0x6b01('0x8')]:_0x6b01('0x13')+random[_0x6b01('0x9')](0x6)+'@xcally.com';_0x41efa3+='>';}}return _0x41efa3;}function parseEmail(_0x3029e2,_0xc1f453,_0x424cd3){if(_0xc1f453[_0x6b01('0x14')]){var _0x1fced4=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1fced4[_0x6b01('0x15')](_0xc1f453[_0x6b01('0x14')])){_0xc1f453['html']=_0xc1f453[_0x6b01('0x14')][_0x6b01('0x16')](_0x1fced4,'');}if(_0xc1f453[_0x6b01('0x14')]['includes'](_0x6b01('0x17'))){var _0x70a1c0=[];_0xc1f453[_0x6b01('0x18')][_0x6b01('0x19')](_0x731310=>{_0x70a1c0[_0x6b01('0x1a')](_0x731310[_0x6b01('0x1b')]);});var _0x136452=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3ad5bb=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x152dda=_0xc1f453[_0x6b01('0x14')][_0x6b01('0x16')](_0x3ad5bb,_0x6b01('0x1c'));var _0x55ca4b=_0x152dda[_0x6b01('0x16')](_0x136452,_0x6b01('0x1d'));for(let _0x32128f=0x0;_0x32128f<_0x70a1c0[_0x6b01('0x11')];_0x32128f++){var _0x68491=_0x55ca4b['replace']('_IMG',_0x6b01('0x1e')+_0x70a1c0[_0x32128f]+_0x6b01('0x1f'));_0x55ca4b=_0x68491;}_0xc1f453[_0x6b01('0x14')]=_0x55ca4b;}_0x424cd3[_0x6b01('0x20')]=_0xc1f453[_0x6b01('0x14')];}else{_0x424cd3[_0x6b01('0x20')]=_0xc1f453['textAsHtml'];}if(_0x424cd3[_0x6b01('0x20')]){_0x424cd3['body']=_0x424cd3[_0x6b01('0x20')]['replace'](/<a\s+/gi,_0x6b01('0x21'));}if(_0xc1f453['to']){_0x424cd3[_0x6b01('0x22')][_0x6b01('0x23')]=getMails(null,_0xc1f453['to']);var _0x1606ee=getMails(_0x3029e2[_0x6b01('0x4')],_0xc1f453['to']);if(!_['isEmpty'](_0x1606ee)){_0x424cd3[_0x6b01('0x22')]['cc']+=_0x1606ee;}}if(_0xc1f453['cc']){_0x424cd3[_0x6b01('0x22')][_0x6b01('0x24')]=getMails(null,_0xc1f453['cc']);var _0x5bfbe3=getMails(_0x3029e2['email'],_0xc1f453['cc']);if(!_[_0x6b01('0x12')](_0x5bfbe3)){if(!_['isEmpty'](_0x424cd3[_0x6b01('0x22')]['cc'])){_0x424cd3[_0x6b01('0x22')]['cc']+=',';}_0x424cd3[_0x6b01('0x22')]['cc']+=_0x5bfbe3;}}if(!_['includes'](_0x424cd3[_0x6b01('0x22')][_0x6b01('0x23')],_0x3029e2[_0x6b01('0x4')])&&!_['includes'](_0x424cd3[_0x6b01('0x22')][_0x6b01('0x24')],_0x3029e2[_0x6b01('0x4')])){_0x424cd3[_0x6b01('0x22')][_0x6b01('0x25')]=_0x3029e2['email'];}if(_0xc1f453[_0x6b01('0x18')]&&_0xc1f453[_0x6b01('0x18')][_0x6b01('0x11')]){_0x424cd3[_0x6b01('0x22')][_0x6b01('0x26')]=_0xc1f453[_0x6b01('0x18')][_0x6b01('0x11')];for(var _0x3154d7=0x0,_0x4983ae,_0x2ffeb8,_0x530c91;_0x3154d7<_0xc1f453[_0x6b01('0x18')][_0x6b01('0x11')];_0x3154d7+=0x1){if(_0xc1f453[_0x6b01('0x18')][_0x3154d7][_0x6b01('0x27')]===_0x6b01('0x28')){_0x530c91=_0xc1f453[_0x6b01('0x18')][_0x3154d7][_0x6b01('0x1b')]||'attachment-'+_0x3154d7;_0x4983ae=util[_0x6b01('0x29')](_0x6b01('0x2a'),Date[_0x6b01('0x2b')](),_0x530c91);_0x2ffeb8=path[_0x6b01('0xe')](config[_0x6b01('0x2c')],_0x6b01('0x2d'),_0x4983ae);fs[_0x6b01('0x2e')](_0x2ffeb8,_0xc1f453[_0x6b01('0x18')][_0x3154d7]['content']);_0x424cd3[_0x6b01('0x22')]['attachments'][_0x6b01('0x1a')]({'name':_0x530c91,'basename':_0x4983ae,'type':_0xc1f453[_0x6b01('0x18')][_0x3154d7]['contentType'],'filepath':_0x2ffeb8});}}}if(_0xc1f453[_0x6b01('0x2f')]&&_0xc1f453[_0x6b01('0x2f')][_0x6b01('0x11')]>0x0){var _0x45952a=[_0x6b01('0x30'),_0x6b01('0x31'),_0x6b01('0x32')];for(var _0x93737a=0x0;_0x93737a<_0xc1f453[_0x6b01('0x2f')][_0x6b01('0x11')];_0x93737a++){var _0x5edf3f=_[_0x6b01('0xc')](_0x45952a,_0xc1f453[_0x6b01('0x2f')][_0x93737a]['line']);if(_0x5edf3f>=0x0){_0x424cd3['isAutoreply']=!![];}}}return _0x424cd3;}exports[_0x6b01('0x33')]=function(_0xd11195,_0x558ec1,_0x3fba13){var _0x3f9e46={'from':getAddress(_0x558ec1['from']),'firstName':getFirstName(_0x558ec1[_0x6b01('0x34')]),'lastName':getLastName(_0x558ec1['from']),'mapKey':_0x6b01('0x4'),'message':{'from':getMails(_0xd11195[_0x6b01('0x4')],_0x558ec1[_0x6b01('0x34')]),'to':_0xd11195['email'],'cc':'','subject':_0x558ec1[_0x6b01('0x35')]||'','messageId':_0x558ec1[_0x6b01('0x36')],'inReplyTo':_0x558ec1['inReplyTo'],'sentAt':moment(_0x558ec1['date'])['format'](_0x6b01('0x37')),'attach':![],'attachments':[]}};if(!_0x558ec1[_0x6b01('0x14')]&&!_0x558ec1[_0x6b01('0x38')]){var _0x2cb4de=_[_0x6b01('0x39')](_0x558ec1[_0x6b01('0x18')],{'contentType':'application/ms-tnef'});if(_0x2cb4de[_0x6b01('0x11')]){logger[_0x6b01('0x3a')](util[_0x6b01('0x29')](_0x6b01('0x3b'),_0x558ec1[_0x6b01('0x36')]));tnef[_0x6b01('0x3c')](_['first'](_0x2cb4de)[_0x6b01('0x3d')],function(_0x58a91a,_0x52b8dd){if(_0x52b8dd){_0x558ec1[_0x6b01('0x14')]=_0x52b8dd[_0x6b01('0x3e')]||'<p>Empty\x20message</p>';if(_0x52b8dd[_0x6b01('0x3f')]){for(var _0x27442e=0x0;_0x27442e<_0x52b8dd[_0x6b01('0x3f')]['length'];_0x27442e++){var _0x51eec0=_0x52b8dd['Attachments'][_0x27442e];_0x3f9e46[_0x6b01('0x22')][_0x6b01('0x18')]['push']({'filename':_0x51eec0[_0x6b01('0x40')],'content':Buffer['from'](_0x51eec0['Data'])});}}}_0x3fba13(parseEmail(_0xd11195,_0x558ec1,_0x3f9e46));});}else{_0x558ec1['html']=_0x6b01('0x41');_0x3fba13(parseEmail(_0xd11195,_0x558ec1,_0x3f9e46));}}else{_0x3fba13(parseEmail(_0xd11195,_0x558ec1,_0x3f9e46));}};exports[_0x6b01('0x42')]=function(_0x4baef8){switch(_0x4baef8){case'gmail':return _0x6b01('0x43');case'yahoo':return _0x6b01('0x44');case _0x6b01('0x45'):return _0x6b01('0x46');case _0x6b01('0x47'):return _0x6b01('0x48');}return'127.0.0.1';};
\ No newline at end of file
index 372a0f2..1389839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa830=['key','SERV','active','Imap','Smtp','exports','lodash','name','Service'];(function(_0x10052b,_0x23a631){var _0x4aedfb=function(_0x4ee12d){while(--_0x4ee12d){_0x10052b['push'](_0x10052b['shift']());}};_0x4aedfb(++_0x23a631);}(_0xa830,0xf9));var _0x0a83=function(_0x2c6484,_0x4fe72c){_0x2c6484=_0x2c6484-0x0;var _0x3b9d94=_0xa830[_0x2c6484];return _0x3b9d94;};'use strict';var _=require(_0x0a83('0x0'));function MailAccount(_0x460207){this['id']=_0x460207['id']||0x0;this[_0x0a83('0x1')]=_0x460207['name']||_0x0a83('0x2');this['key']=_0x460207[_0x0a83('0x3')]||_0x0a83('0x4');this[_0x0a83('0x5')]=_0x460207['active']||![];this[_0x0a83('0x6')]=_0x460207['Imap']||[];this[_0x0a83('0x7')]=_0x460207[_0x0a83('0x7')]||[];}module[_0x0a83('0x8')]=MailAccount;
\ No newline at end of file
+var _0x5c01=['Service','key','SERV','active','Smtp','lodash','name'];(function(_0x108831,_0x5e4f70){var _0x4da77a=function(_0x139446){while(--_0x139446){_0x108831['push'](_0x108831['shift']());}};_0x4da77a(++_0x5e4f70);}(_0x5c01,0x186));var _0x15c0=function(_0x4adcd9,_0x3bd452){_0x4adcd9=_0x4adcd9-0x0;var _0x451ccf=_0x5c01[_0x4adcd9];return _0x451ccf;};'use strict';var _=require(_0x15c0('0x0'));function MailAccount(_0x2f1855){this['id']=_0x2f1855['id']||0x0;this['name']=_0x2f1855[_0x15c0('0x1')]||_0x15c0('0x2');this[_0x15c0('0x3')]=_0x2f1855[_0x15c0('0x3')]||_0x15c0('0x4');this[_0x15c0('0x5')]=_0x2f1855[_0x15c0('0x5')]||![];this['Imap']=_0x2f1855['Imap']||[];this[_0x15c0('0x6')]=_0x2f1855[_0x15c0('0x6')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 4a3f8f5..b78b285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2039=['../model/mailAccount','mapKeys','hasOwnProperty','mergeFromDatabase','prototype','initMailAccounts','mailAccounts','length','isUndefined','merge','exports','lodash'];(function(_0x221b8c,_0x2c7afc){var _0x3fab9f=function(_0x28bab0){while(--_0x28bab0){_0x221b8c['push'](_0x221b8c['shift']());}};_0x3fab9f(++_0x2c7afc);}(_0x2039,0x113));var _0x9203=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x2039[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x9203('0x0'));var MailAccount=require(_0x9203('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x334503,_0x33b4a6,_0xa93d2){var _0x31f596=_[_0x9203('0x2')](_0x334503,function(_0x81cddd,_0x5d70aa){return _0x81cddd[_0xa93d2];});for(var _0x23ab5f in _0x33b4a6){if(_0x33b4a6[_0x9203('0x3')](_0x23ab5f)){if(!_0x31f596[_0x23ab5f]){delete _0x33b4a6[_0x23ab5f];}}}}Realtime['prototype'][_0x9203('0x4')]=function(_0x173f48,_0x19779e){for(var _0x5b7bfa in _0x19779e){if(_0x173f48[_0x9203('0x3')](_0x5b7bfa)){_0x173f48[_0x5b7bfa]=_0x19779e[_0x5b7bfa];}}};Realtime[_0x9203('0x5')][_0x9203('0x6')]=function(){var _0x58e29b=this;return function(_0x10e048){if(_0x10e048){freeIsNotKey(_0x10e048,_0x58e29b[_0x9203('0x7')],'id');for(var _0x29e685=0x0,_0x14b6d1={},_0x1ae62a={};_0x29e685<_0x10e048[_0x9203('0x8')];_0x29e685+=0x1){_0x14b6d1=_0x10e048[_0x29e685];if(_[_0x9203('0x9')](_0x58e29b[_0x9203('0x7')][_0x14b6d1['id']])){_0x58e29b[_0x9203('0x7')][_0x14b6d1['id']]=new MailAccount(_0x14b6d1);}else{_[_0x9203('0xa')](_0x58e29b[_0x9203('0x7')][_0x14b6d1['id']],_0x14b6d1);}}}return _0x58e29b[_0x9203('0x7')];};};module[_0x9203('0xb')]=Realtime;
\ No newline at end of file
+var _0x0afc=['prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty'];(function(_0x32175b,_0x8f7caf){var _0x59d1cc=function(_0x391c91){while(--_0x391c91){_0x32175b['push'](_0x32175b['shift']());}};_0x59d1cc(++_0x8f7caf);}(_0x0afc,0xac));var _0xc0af=function(_0x1315cb,_0x14ed5f){_0x1315cb=_0x1315cb-0x0;var _0x30f6df=_0x0afc[_0x1315cb];return _0x30f6df;};'use strict';var _=require('lodash');var MailAccount=require(_0xc0af('0x0'));var Realtime=function(){this[_0xc0af('0x1')]={};};function freeIsNotKey(_0x25a589,_0x26ceb6,_0x59e4de){var _0x2a3391=_[_0xc0af('0x2')](_0x25a589,function(_0xd091d9,_0x2a909c){return _0xd091d9[_0x59e4de];});for(var _0x5a41b1 in _0x26ceb6){if(_0x26ceb6[_0xc0af('0x3')](_0x5a41b1)){if(!_0x2a3391[_0x5a41b1]){delete _0x26ceb6[_0x5a41b1];}}}}Realtime[_0xc0af('0x4')][_0xc0af('0x5')]=function(_0x4d4ec7,_0x3fd6ac){for(var _0x57351e in _0x3fd6ac){if(_0x4d4ec7['hasOwnProperty'](_0x57351e)){_0x4d4ec7[_0x57351e]=_0x3fd6ac[_0x57351e];}}};Realtime['prototype'][_0xc0af('0x6')]=function(){var _0x536869=this;return function(_0x55ffe2){if(_0x55ffe2){freeIsNotKey(_0x55ffe2,_0x536869['mailAccounts'],'id');for(var _0xf0f9e1=0x0,_0x352219={},_0x3b3c53={};_0xf0f9e1<_0x55ffe2[_0xc0af('0x7')];_0xf0f9e1+=0x1){_0x352219=_0x55ffe2[_0xf0f9e1];if(_[_0xc0af('0x8')](_0x536869['mailAccounts'][_0x352219['id']])){_0x536869['mailAccounts'][_0x352219['id']]=new MailAccount(_0x352219);}else{_[_0xc0af('0x9')](_0x536869['mailAccounts'][_0x352219['id']],_0x352219);}}}return _0x536869[_0xc0af('0x1')];};};module[_0xc0af('0xa')]=Realtime;
\ No newline at end of file
index 2e6b8b3..4e896bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf347=['MailServerOut','getMailAccount','notify','Request','NotifyMailAccount','../client','getMailAccounts','GetMailAccount','service','email','key','MailServerIn','Imap'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0xf347,0xa1));var _0x7f34=function(_0x19fe74,_0x270ad1){_0x19fe74=_0x19fe74-0x0;var _0x446cf3=_0xf347[_0x19fe74];return _0x446cf3;};'use strict';var client=require(_0x7f34('0x0'));exports[_0x7f34('0x1')]=function(){return function(){return client['Request'](_0x7f34('0x2'),{'options':{'attributes':['id','name',_0x7f34('0x3'),_0x7f34('0x4'),'active',_0x7f34('0x5'),'ListId','TemplateId'],'raw':![],'include':[{'model':_0x7f34('0x6'),'as':_0x7f34('0x7')},{'model':_0x7f34('0x8'),'as':'Smtp'}]},'log':_0x7f34('0x9')});};};exports[_0x7f34('0xa')]=function(_0x16d665,_0x5ea6b1){return client[_0x7f34('0xb')](_0x7f34('0xc'),{'account':{'id':_0x16d665},'body':_0x5ea6b1,'log':_0x7f34('0xc')});};
\ No newline at end of file
+var _0xbba1=['getMailAccount','notify','NotifyMailAccount','../client','GetMailAccount','name','active','TemplateId','MailServerOut','Smtp'];(function(_0x4d4201,_0x950471){var _0x2d9c40=function(_0x209b3f){while(--_0x209b3f){_0x4d4201['push'](_0x4d4201['shift']());}};_0x2d9c40(++_0x950471);}(_0xbba1,0x17f));var _0x1bba=function(_0x5b6420,_0x25cca9){_0x5b6420=_0x5b6420-0x0;var _0x535d48=_0xbba1[_0x5b6420];return _0x535d48;};'use strict';var client=require(_0x1bba('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request'](_0x1bba('0x1'),{'options':{'attributes':['id',_0x1bba('0x2'),'service','email',_0x1bba('0x3'),'key','ListId',_0x1bba('0x4')],'raw':![],'include':[{'model':'MailServerIn','as':'Imap'},{'model':_0x1bba('0x5'),'as':_0x1bba('0x6')}]},'log':_0x1bba('0x7')});};};exports[_0x1bba('0x8')]=function(_0x3e9ddf,_0x255e6a){return client['Request']('NotifyMailAccount',{'account':{'id':_0x3e9ddf},'body':_0x255e6a,'log':_0x1bba('0x9')});};
\ No newline at end of file
index 52a54ba..cdc835f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aec=['../client','getSettings','Request','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x29b066,_0x566d9a){var _0x2cfa72=function(_0x4159b1){while(--_0x4159b1){_0x29b066['push'](_0x29b066['shift']());}};_0x2cfa72(++_0x566d9a);}(_0x4aec,0x144));var _0xc4ae=function(_0x2d30d2,_0x2c1714){_0x2d30d2=_0x2d30d2-0x0;var _0x5e3c11=_0x4aec[_0x2d30d2];return _0x5e3c11;};'use strict';var client=require(_0xc4ae('0x0'));exports[_0xc4ae('0x1')]=function(){return client[_0xc4ae('0x2')](_0xc4ae('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xc4ae('0x4')]},'log':_0xc4ae('0x5')});};
\ No newline at end of file
+var _0x0bb0=['loginMailFrequency','GetSettings','../client','getSettings','Request','ShowSetting'];(function(_0x1c7f5a,_0x4bd7c7){var _0xca6269=function(_0xdf406b){while(--_0xdf406b){_0x1c7f5a['push'](_0x1c7f5a['shift']());}};_0xca6269(++_0x4bd7c7);}(_0x0bb0,0x14c));var _0x00bb=function(_0x471085,_0x32b6a4){_0x471085=_0x471085-0x0;var _0x52acb9=_0x0bb0[_0x471085];return _0x52acb9;};'use strict';var client=require(_0x00bb('0x0'));exports[_0x00bb('0x1')]=function(){return client[_0x00bb('0x2')](_0x00bb('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x00bb('0x4')]},'log':_0x00bb('0x5')});};
\ No newline at end of file
index c58ae4b..7a35d54 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 117eaae..efc056d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf451=['socket.io','websocket','polling','defaults','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/express','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','express','sticky-session','ioredis','../../config/environment','createServer','port'];(function(_0x5cdcc2,_0x951289){var _0x3ab96f=function(_0x73746e){while(--_0x73746e){_0x5cdcc2['push'](_0x5cdcc2['shift']());}};_0x3ab96f(++_0x951289);}(_0xf451,0xd6));var _0x1f45=function(_0x46db68,_0x37dc13){_0x46db68=_0x46db68-0x0;var _0x2e0a00=_0xf451[_0x46db68];return _0x2e0a00;};'use strict';var _=require('lodash');var http=require('http');var express=require(_0x1f45('0x0'));var sticky=require(_0x1f45('0x1'));var Redis=require(_0x1f45('0x2'));var config=require(_0x1f45('0x3'));var app=express();var server=http[_0x1f45('0x4')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x1f45('0x5')])){var socketio=require(_0x1f45('0x6'))(server,{'transports':[_0x1f45('0x7'),_0x1f45('0x8')]});config['redis']=_[_0x1f45('0x9')](config[_0x1f45('0xa')],{'host':_0x1f45('0xb'),'port':0x18eb});socketio[_0x1f45('0xc')](require(_0x1f45('0xd'))({'pubClient':new Redis(config[_0x1f45('0xa')]),'subClient':new Redis(config[_0x1f45('0xa')])}));require(_0x1f45('0xe'))[_0x1f45('0xf')]();require('../../config/socketio')[_0x1f45('0xf')](socketio);require(_0x1f45('0x10'))[_0x1f45('0xf')](app);require(_0x1f45('0x11'))[_0x1f45('0xf')](app);}else{server[_0x1f45('0x12')](_0x1f45('0x13'),function(){console['log'](_0x1f45('0x14'),config[_0x1f45('0x5')]);});}exports=module[_0x1f45('0x15')]=app;
\ No newline at end of file
+var _0x67ed=['express','sticky-session','../../config/environment','timeout','listen','port','socket.io','polling','redis','defaults','localhost','adapter','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http'];(function(_0xb4fc19,_0x4a6766){var _0x2774de=function(_0x434fe8){while(--_0x434fe8){_0xb4fc19['push'](_0xb4fc19['shift']());}};_0x2774de(++_0x4a6766);}(_0x67ed,0x8e));var _0xd67e=function(_0x25d916,_0x19c4ea){_0x25d916=_0x25d916-0x0;var _0x48c62f=_0x67ed[_0x25d916];return _0x48c62f;};'use strict';var _=require(_0xd67e('0x0'));var http=require(_0xd67e('0x1'));var express=require(_0xd67e('0x2'));var sticky=require(_0xd67e('0x3'));var Redis=require('ioredis');var config=require(_0xd67e('0x4'));var app=express();var server=http['createServer'](app);server[_0xd67e('0x5')]=0xdbba0;if(sticky[_0xd67e('0x6')](server,config[_0xd67e('0x7')])){var socketio=require(_0xd67e('0x8'))(server,{'transports':['websocket',_0xd67e('0x9')]});config[_0xd67e('0xa')]=_[_0xd67e('0xb')](config[_0xd67e('0xa')],{'host':_0xd67e('0xc'),'port':0x18eb});socketio[_0xd67e('0xd')](require('socket.io-redis')({'pubClient':new Redis(config[_0xd67e('0xa')]),'subClient':new Redis(config[_0xd67e('0xa')])}));require(_0xd67e('0xe'))[_0xd67e('0xf')]();require(_0xd67e('0x10'))[_0xd67e('0xf')](socketio);require(_0xd67e('0x11'))['default'](app);require(_0xd67e('0x12'))[_0xd67e('0xf')](app);}else{server[_0xd67e('0x13')](_0xd67e('0x14'),function(){console[_0xd67e('0x15')](_0xd67e('0x16'),config[_0xd67e('0x7')]);});}exports=module[_0xd67e('0x17')]=app;
\ No newline at end of file
index 67bb9a8..46f0e0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x027c=['jayson/promise','bluebird','routing','client','http','request','then','debug','rpc','error','message','catch','exports'];(function(_0x40ddc0,_0x41c082){var _0x1aebf1=function(_0x3ba1f6){while(--_0x3ba1f6){_0x40ddc0['push'](_0x40ddc0['shift']());}};_0x1aebf1(++_0x41c082);}(_0x027c,0x16c));var _0xc027=function(_0x4909f9,_0x27a3df){_0x4909f9=_0x4909f9-0x0;var _0x5df735=_0x027c[_0x4909f9];return _0x5df735;};'use strict';var jayson=require(_0xc027('0x0'));var BPromise=require(_0xc027('0x1'));var logger=require('../../config/logger')(_0xc027('0x2'));var client=jayson[_0xc027('0x3')][_0xc027('0x4')]({'port':0x2329});client['Request']=function(_0xf7628c,_0x4aeb2d){return new BPromise(function(_0x3cf04b,_0x1e3153){return client[_0xc027('0x5')](_0xf7628c,_0x4aeb2d)[_0xc027('0x6')](function(_0xbd4095){logger[_0xc027('0x7')](_0xc027('0x8'),_0xc027('0x2'),_0xf7628c,_0x4aeb2d,_0xbd4095);if(_0xbd4095['error']){logger[_0xc027('0x9')](_0xc027('0x8'),_0xc027('0x2'),_0xf7628c,_0xbd4095[_0xc027('0x9')][_0xc027('0xa')],_0x4aeb2d);return _0x1e3153(_0xbd4095[_0xc027('0x9')][_0xc027('0xa')]);}else{return _0x3cf04b(_0xbd4095['result']);}})[_0xc027('0xb')](function(_0x46cbb1){logger[_0xc027('0x9')](_0xc027('0x8'),_0xc027('0x2'),_0xf7628c,_0x46cbb1,_0x4aeb2d);return _0x1e3153(_0x46cbb1);});});};module[_0xc027('0xc')]=client;
\ No newline at end of file
+var _0xf083=['request','debug','rpc','error','message','result','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request'];(function(_0xd1566a,_0x3124c5){var _0x2699a6=function(_0x49dded){while(--_0x49dded){_0xd1566a['push'](_0xd1566a['shift']());}};_0x2699a6(++_0x3124c5);}(_0xf083,0x1c7));var _0x3f08=function(_0x2fcc2b,_0x11e0ae){_0x2fcc2b=_0x2fcc2b-0x0;var _0x8080a5=_0xf083[_0x2fcc2b];return _0x8080a5;};'use strict';var jayson=require(_0x3f08('0x0'));var BPromise=require(_0x3f08('0x1'));var logger=require(_0x3f08('0x2'))(_0x3f08('0x3'));var client=jayson[_0x3f08('0x4')][_0x3f08('0x5')]({'port':0x2329});client[_0x3f08('0x6')]=function(_0x12d70f,_0x23058e){return new BPromise(function(_0x17dd93,_0x4f196b){return client[_0x3f08('0x7')](_0x12d70f,_0x23058e)['then'](function(_0x7aa356){logger[_0x3f08('0x8')](_0x3f08('0x9'),_0x3f08('0x3'),_0x12d70f,_0x23058e,_0x7aa356);if(_0x7aa356['error']){logger[_0x3f08('0xa')](_0x3f08('0x9'),'routing',_0x12d70f,_0x7aa356[_0x3f08('0xa')][_0x3f08('0xb')],_0x23058e);return _0x4f196b(_0x7aa356[_0x3f08('0xa')]['message']);}else{return _0x17dd93(_0x7aa356[_0x3f08('0xc')]);}})['catch'](function(_0x50d865){logger[_0x3f08('0xa')](_0x3f08('0x9'),_0x3f08('0x3'),_0x12d70f,_0x50d865,_0x23058e);return _0x4f196b(_0x50d865);});});};module[_0x3f08('0xd')]=client;
\ No newline at end of file
index 36aa55b..d70afb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75c1=['./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','initMailQueues','getWhatsappQueues','listen','bluebird','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue'];(function(_0x205b40,_0x2c5ee4){var _0x32ff19=function(_0x33e6b7){while(--_0x33e6b7){_0x205b40['push'](_0x205b40['shift']());}};_0x32ff19(++_0x2c5ee4);}(_0x75c1,0x143));var _0x175c=function(_0x13b160,_0x52aa41){_0x13b160=_0x13b160-0x0;var _0x102e48=_0x75c1[_0x13b160];return _0x102e48;};'use strict';var BPromise=require(_0x175c('0x0'));var server=require(_0x175c('0x1'));var Realtime=require('./realtime');var user=require(_0x175c('0x2'));var interval=require(_0x175c('0x3'));var openchannelQueue=require(_0x175c('0x4'));var chatQueue=require(_0x175c('0x5'));var smsQueue=require(_0x175c('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x175c('0x7'));var whatsappQueue=require(_0x175c('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x175c('0x9')]()[_0x175c('0xa')](user[_0x175c('0xb')]())[_0x175c('0xa')](realtime[_0x175c('0xc')]())['then'](interval['getIntervals']())[_0x175c('0xa')](realtime[_0x175c('0xd')]())[_0x175c('0xa')](openchannelQueue[_0x175c('0xe')]())['then'](realtime[_0x175c('0xf')]())['then'](chatQueue[_0x175c('0x10')]())[_0x175c('0xa')](realtime[_0x175c('0x11')]())['then'](smsQueue['getSmsQueues']())[_0x175c('0xa')](realtime[_0x175c('0x12')]())[_0x175c('0xa')](mailQueue['getMailQueues']())[_0x175c('0xa')](realtime[_0x175c('0x13')]())[_0x175c('0xa')](faxQueue['getFaxQueues']())[_0x175c('0xa')](realtime['initFaxQueues']())[_0x175c('0xa')](whatsappQueue[_0x175c('0x14')]())[_0x175c('0xa')](realtime['initWhatsappQueues']())['then'](function(){return realtime;});}function main(){return server[_0x175c('0x15')](realtime)['then'](function(_0x30fb71){return initRealtime();})['then'](function(_0x486bb1){return setInterval(initRealtime,0x1388);})['catch'](function(_0x3369b6){console['log'](_0x3369b6);});}main();
\ No newline at end of file
+var _0x8668=['log','./server','./rpc/interval','./rpc/chatQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','getAgents','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','initWhatsappQueues','listen'];(function(_0xc958c2,_0x301495){var _0x46bcbd=function(_0x464833){while(--_0x464833){_0xc958c2['push'](_0xc958c2['shift']());}};_0x46bcbd(++_0x301495);}(_0x8668,0xa2));var _0x8866=function(_0x19eae5,_0x3debb9){_0x19eae5=_0x19eae5-0x0;var _0x364e5e=_0x8668[_0x19eae5];return _0x364e5e;};'use strict';var BPromise=require('bluebird');var server=require(_0x8866('0x0'));var Realtime=require('./realtime');var user=require('./rpc/user');var interval=require(_0x8866('0x1'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x8866('0x2'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x8866('0x3'));var whatsappQueue=require(_0x8866('0x4'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x8866('0x5')]()['then'](user[_0x8866('0x6')]())[_0x8866('0x7')](realtime[_0x8866('0x8')]())[_0x8866('0x7')](interval[_0x8866('0x9')]())[_0x8866('0x7')](realtime[_0x8866('0xa')]())[_0x8866('0x7')](openchannelQueue[_0x8866('0xb')]())[_0x8866('0x7')](realtime[_0x8866('0xc')]())[_0x8866('0x7')](chatQueue[_0x8866('0xd')]())[_0x8866('0x7')](realtime['initChatQueues']())[_0x8866('0x7')](smsQueue[_0x8866('0xe')]())[_0x8866('0x7')](realtime[_0x8866('0xf')]())[_0x8866('0x7')](mailQueue[_0x8866('0x10')]())[_0x8866('0x7')](realtime[_0x8866('0x11')]())[_0x8866('0x7')](faxQueue[_0x8866('0x12')]())[_0x8866('0x7')](realtime[_0x8866('0x13')]())[_0x8866('0x7')](whatsappQueue['getWhatsappQueues']())['then'](realtime[_0x8866('0x14')]())[_0x8866('0x7')](function(){return realtime;});}function main(){return server[_0x8866('0x15')](realtime)[_0x8866('0x7')](function(_0x6df47c){return initRealtime();})['then'](function(_0x930289){return setInterval(initRealtime,0x1388);})['catch'](function(_0xe9367){console[_0x8866('0x16')](_0xe9367);});}main();
\ No newline at end of file
index c24755b..4303a50 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(_0x17262f,_0x3c7ef2){var _0x28d050=function(_0x211f88){while(--_0x211f88){_0x17262f['push'](_0x17262f['shift']());}};_0x28d050(++_0x3c7ef2);}(_0x814b,0x1a2));var _0xb814=function(_0x31c27f,_0x40294c){_0x31c27f=_0x31c27f-0x0;var _0x28f9c6=_0x814b[_0x31c27f];return _0x28f9c6;};'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 _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1261,0x144));var _0x1126=function(_0x12fe86,_0x57ec8d){_0x12fe86=_0x12fe86-0x0;var _0x3c528b=_0x1261[_0x12fe86];return _0x3c528b;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
index 6e1ab66..0cf66a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe85b=['jayson/promise','client','request','then','error','message','catch','sendMailMessage','SendMail','bluebird'];(function(_0x137d1d,_0x35c663){var _0x485108=function(_0x108a2a){while(--_0x108a2a){_0x137d1d['push'](_0x137d1d['shift']());}};_0x485108(++_0x35c663);}(_0xe85b,0x199));var _0xbe85=function(_0x17c64b,_0x38ae9c){_0x17c64b=_0x17c64b-0x0;var _0x5ca37f=_0xe85b[_0x17c64b];return _0x5ca37f;};'use strict';var BPromise=require(_0xbe85('0x0'));var jayson=require(_0xbe85('0x1'));var client=jayson[_0xbe85('0x2')]['http']({'port':0x232b});function request(_0x3242a8,_0x38a77f){return new BPromise(function(_0xf44728,_0x48bbb2){return client[_0xbe85('0x3')](_0x3242a8,_0x38a77f)[_0xbe85('0x4')](function(_0xbcb43d){if(_0xbcb43d[_0xbe85('0x5')]){return _0x48bbb2(_0xbcb43d[_0xbe85('0x5')][_0xbe85('0x6')]);}else{return _0xf44728(_0xbcb43d['result']);}})[_0xbe85('0x7')](function(_0x4c10a9){return _0x48bbb2(_0x4c10a9);});});}exports[_0xbe85('0x8')]=function(_0x3b8e38,_0x3f373b){return request(_0xbe85('0x9'),{'account':_0x3b8e38,'message':_0x3f373b});};
\ No newline at end of file
+var _0x8a72=['message','result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','request','then','error'];(function(_0x1ab313,_0x12bccc){var _0x2d73f4=function(_0x225f28){while(--_0x225f28){_0x1ab313['push'](_0x1ab313['shift']());}};_0x2d73f4(++_0x12bccc);}(_0x8a72,0xb5));var _0x28a7=function(_0x3c1d1f,_0x2a8ebf){_0x3c1d1f=_0x3c1d1f-0x0;var _0xc8ed55=_0x8a72[_0x3c1d1f];return _0xc8ed55;};'use strict';var BPromise=require(_0x28a7('0x0'));var jayson=require(_0x28a7('0x1'));var client=jayson[_0x28a7('0x2')]['http']({'port':0x232b});function request(_0xbf9cb8,_0x3c6db3){return new BPromise(function(_0x4dc9d6,_0xc731c2){return client[_0x28a7('0x3')](_0xbf9cb8,_0x3c6db3)[_0x28a7('0x4')](function(_0x2044bd){if(_0x2044bd[_0x28a7('0x5')]){return _0xc731c2(_0x2044bd[_0x28a7('0x5')][_0x28a7('0x6')]);}else{return _0x4dc9d6(_0x2044bd[_0x28a7('0x7')]);}})[_0x28a7('0x8')](function(_0x421ee9){return _0xc731c2(_0x421ee9);});});}exports[_0x28a7('0x9')]=function(_0x44ce03,_0x2395d7){return request(_0x28a7('0xa'),{'account':_0x44ce03,'message':_0x2395d7});};
\ No newline at end of file
index c85d027..aa4ecbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d4=['mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappCapacity','openchannelStatusTime','openchannelCapacity','busy','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','updateRealtime','chat','openchannel','fax','whatsapp','Status','toNumber','chatStatusTime','whatsappStatus','whatsappStatusTime','openchannelStatus','openchannelCurrentCapacity','stringify','emit','user:save','exports','moment','md5','ioredis','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus'];(function(_0x47123a,_0x49937a){var _0x540502=function(_0x3fdb56){while(--_0x3fdb56){_0x47123a['push'](_0x47123a['shift']());}};_0x540502(++_0x49937a);}(_0xe3d4,0xc6));var _0x4e3d=function(_0x4e55aa,_0x48bfd2){_0x4e55aa=_0x4e55aa-0x0;var _0x2f48d6=_0xe3d4[_0x4e55aa];return _0x2f48d6;};'use strict';var _=require('lodash');var moment=require(_0x4e3d('0x0'));var md5=require(_0x4e3d('0x1'));var Redis=require(_0x4e3d('0x2'));var config=require('../../../config/environment');config[_0x4e3d('0x3')]=_[_0x4e3d('0x4')](config['redis'],{'host':_0x4e3d('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4e3d('0x3')]));function Agent(_0x46b757){this['id']=_0x46b757['id']||0x0;this['name']=_0x46b757[_0x4e3d('0x6')]||'';this[_0x4e3d('0x7')]=_0x46b757['online']||!![];this[_0x4e3d('0x8')]=_0x46b757[_0x4e3d('0x8')]||![];this[_0x4e3d('0x9')]=_0x46b757[_0x4e3d('0x9')]||![];this[_0x4e3d('0xa')]=_0x46b757[_0x4e3d('0xa')]||![];this['faxPause']=_0x46b757['faxPause']||![];this[_0x4e3d('0xb')]=_0x46b757[_0x4e3d('0xb')]||![];this[_0x4e3d('0xc')]=_0x46b757[_0x4e3d('0xc')]||![];this[_0x4e3d('0xd')]=_0x4e3d('0xe');this['chatStatusTime']=0x0;this[_0x4e3d('0xf')]=_0x46b757[_0x4e3d('0xf')]||0x0;this[_0x4e3d('0x10')]=0x0;this[_0x4e3d('0x11')]=_0x4e3d('0xe');this[_0x4e3d('0x12')]=0x0;this[_0x4e3d('0x13')]=_0x46b757[_0x4e3d('0x13')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x4e3d('0x14')]=_0x4e3d('0xe');this[_0x4e3d('0x15')]=0x0;this['faxCapacity']=_0x46b757[_0x4e3d('0x16')]||0x0;this[_0x4e3d('0x17')]=0x0;this[_0x4e3d('0x18')]=_0x4e3d('0xe');this[_0x4e3d('0x19')]=0x0;this[_0x4e3d('0x1a')]=_0x46b757[_0x4e3d('0x1a')]||0x0;this[_0x4e3d('0x1b')]=0x0;this['whatsappStatus']=_0x4e3d('0xe');this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x46b757[_0x4e3d('0x1c')]||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x4e3d('0xe');this[_0x4e3d('0x1d')]=0x0;this[_0x4e3d('0x1e')]=_0x46b757[_0x4e3d('0x1e')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x4e3d('0x1f')]=![];this['busyQueue']=undefined;this[_0x4e3d('0x1')]='';this['updateRealtime']();}Agent[_0x4e3d('0x20')][_0x4e3d('0x21')]=function(_0x3c385c){if(this[_0x3c385c+_0x4e3d('0x22')]>0x0){if(this[_0x3c385c+_0x4e3d('0x23')]>0x0&&this[_0x3c385c+_0x4e3d('0x22')]>=this[_0x3c385c+'Capacity']){return'maxcapacity';}else{return _0x4e3d('0x24');}}else{return _0x4e3d('0x25');}};Agent[_0x4e3d('0x20')][_0x4e3d('0x26')]=function(){var _0x3e6b53=['mail',_0x4e3d('0x27'),_0x4e3d('0x28'),_0x4e3d('0x29'),'sms',_0x4e3d('0x2a')];for(var _0xa6569b=0x0;_0xa6569b<_0x3e6b53['length'];_0xa6569b+=0x1){var _0x192cb4=this[_0x4e3d('0x21')](_0x3e6b53[_0xa6569b]);if(this[_0x3e6b53[_0xa6569b]+_0x4e3d('0x2b')]!==_0x192cb4){this[_0x3e6b53[_0xa6569b]+'StatusTime']=_[_0x4e3d('0x2c')](moment()['format']('x'));}this[_0x3e6b53[_0xa6569b]+_0x4e3d('0x2b')]=_0x192cb4;}var _0x5271a1={'id':this['id'],'name':this[_0x4e3d('0x6')],'online':this[_0x4e3d('0x7')],'voicePause':this[_0x4e3d('0x8')],'chatPause':this['chatPause'],'mailPause':this[_0x4e3d('0xa')],'smsPause':this[_0x4e3d('0xb')],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x4e3d('0xd')],'chatStatusTime':this[_0x4e3d('0x2d')],'chatCapacity':this[_0x4e3d('0xf')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x4e3d('0x11')],'mailStatusTime':this[_0x4e3d('0x12')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x4e3d('0x14')],'faxStatusTime':this[_0x4e3d('0x15')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x4e3d('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x4e3d('0x19')],'smsCapacity':this[_0x4e3d('0x1a')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x4e3d('0x2e')],'whatsappStatusTime':this[_0x4e3d('0x2f')],'whatsappCapacity':this[_0x4e3d('0x1c')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x4e3d('0x30')],'openchannelStatusTime':this[_0x4e3d('0x1d')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x4e3d('0x31')],'busy':this[_0x4e3d('0x1f')],'busyQueue':this['busyQueue']};var _0x2ae342=md5(JSON[_0x4e3d('0x32')](_0x5271a1));if(this[_0x4e3d('0x1')]!==_0x2ae342){this[_0x4e3d('0x1')]=_0x2ae342;io[_0x4e3d('0x33')](_0x4e3d('0x34'),_0x5271a1);}};module[_0x4e3d('0x35')]=Agent;
\ No newline at end of file
+var _0x1775=['faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','chat','sms','whatsapp','length','Status','toNumber','format','chatStatusTime','stringify','emit','user:save','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause'];(function(_0x13ffe3,_0x11f655){var _0x31752f=function(_0x1817d9){while(--_0x1817d9){_0x13ffe3['push'](_0x13ffe3['shift']());}};_0x31752f(++_0x11f655);}(_0x1775,0x1db));var _0x5177=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1775[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var moment=require(_0x5177('0x0'));var md5=require(_0x5177('0x1'));var Redis=require(_0x5177('0x2'));var config=require(_0x5177('0x3'));config[_0x5177('0x4')]=_[_0x5177('0x5')](config[_0x5177('0x4')],{'host':_0x5177('0x6'),'port':0x18eb});var io=require(_0x5177('0x7'))(new Redis(config[_0x5177('0x4')]));function Agent(_0x159a20){this['id']=_0x159a20['id']||0x0;this[_0x5177('0x8')]=_0x159a20[_0x5177('0x8')]||'';this[_0x5177('0x9')]=_0x159a20[_0x5177('0x9')]||!![];this[_0x5177('0xa')]=_0x159a20[_0x5177('0xa')]||![];this[_0x5177('0xb')]=_0x159a20[_0x5177('0xb')]||![];this[_0x5177('0xc')]=_0x159a20[_0x5177('0xc')]||![];this[_0x5177('0xd')]=_0x159a20['faxPause']||![];this['smsPause']=_0x159a20[_0x5177('0xe')]||![];this[_0x5177('0xf')]=_0x159a20[_0x5177('0xf')]||![];this[_0x5177('0x10')]=_0x5177('0x11');this['chatStatusTime']=0x0;this[_0x5177('0x12')]=_0x159a20[_0x5177('0x12')]||0x0;this[_0x5177('0x13')]=0x0;this[_0x5177('0x14')]=_0x5177('0x11');this[_0x5177('0x15')]=0x0;this[_0x5177('0x16')]=_0x159a20[_0x5177('0x16')]||0x0;this[_0x5177('0x17')]=0x0;this[_0x5177('0x18')]=_0x5177('0x11');this[_0x5177('0x19')]=0x0;this[_0x5177('0x1a')]=_0x159a20[_0x5177('0x1a')]||0x0;this[_0x5177('0x1b')]=0x0;this[_0x5177('0x1c')]=_0x5177('0x11');this[_0x5177('0x1d')]=0x0;this[_0x5177('0x1e')]=_0x159a20['smsCapacity']||0x0;this[_0x5177('0x1f')]=0x0;this[_0x5177('0x20')]=_0x5177('0x11');this[_0x5177('0x21')]=0x0;this['whatsappCapacity']=_0x159a20[_0x5177('0x22')]||0x0;this[_0x5177('0x23')]=0x0;this[_0x5177('0x24')]='unknown';this[_0x5177('0x25')]=0x0;this['openchannelCapacity']=_0x159a20[_0x5177('0x26')]||0x0;this[_0x5177('0x27')]=0x0;this[_0x5177('0x28')]=![];this[_0x5177('0x29')]=undefined;this[_0x5177('0x1')]='';this[_0x5177('0x2a')]();}Agent[_0x5177('0x2b')][_0x5177('0x2c')]=function(_0x2152d4){if(this[_0x2152d4+_0x5177('0x2d')]>0x0){if(this[_0x2152d4+_0x5177('0x2e')]>0x0&&this[_0x2152d4+_0x5177('0x2d')]>=this[_0x2152d4+'Capacity']){return _0x5177('0x2f');}else{return'working';}}else{return _0x5177('0x30');}};Agent[_0x5177('0x2b')][_0x5177('0x2a')]=function(){var _0x2d51d0=['mail',_0x5177('0x31'),'openchannel','fax',_0x5177('0x32'),_0x5177('0x33')];for(var _0x577bf7=0x0;_0x577bf7<_0x2d51d0[_0x5177('0x34')];_0x577bf7+=0x1){var _0x4eba3a=this[_0x5177('0x2c')](_0x2d51d0[_0x577bf7]);if(this[_0x2d51d0[_0x577bf7]+_0x5177('0x35')]!==_0x4eba3a){this[_0x2d51d0[_0x577bf7]+'StatusTime']=_[_0x5177('0x36')](moment()[_0x5177('0x37')]('x'));}this[_0x2d51d0[_0x577bf7]+_0x5177('0x35')]=_0x4eba3a;}var _0x7f86e={'id':this['id'],'name':this[_0x5177('0x8')],'online':this[_0x5177('0x9')],'voicePause':this['voicePause'],'chatPause':this['chatPause'],'mailPause':this[_0x5177('0xc')],'smsPause':this[_0x5177('0xe')],'faxPause':this[_0x5177('0xd')],'openchannelPause':this[_0x5177('0xf')],'chatStatus':this[_0x5177('0x10')],'chatStatusTime':this[_0x5177('0x38')],'chatCapacity':this[_0x5177('0x12')],'chatCurrentCapacity':this[_0x5177('0x13')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x5177('0x15')],'mailCapacity':this[_0x5177('0x16')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x5177('0x18')],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this[_0x5177('0x1a')],'faxCurrentCapacity':this[_0x5177('0x1b')],'smsStatus':this[_0x5177('0x1c')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x5177('0x1f')],'whatsappStatus':this[_0x5177('0x20')],'whatsappStatusTime':this[_0x5177('0x21')],'whatsappCapacity':this[_0x5177('0x22')],'whatsappCurrentCapacity':this[_0x5177('0x23')],'openchannelStatus':this[_0x5177('0x24')],'openchannelStatusTime':this[_0x5177('0x25')],'openchannelCapacity':this[_0x5177('0x26')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x5177('0x28')],'busyQueue':this[_0x5177('0x29')]};var _0x570522=md5(JSON[_0x5177('0x39')](_0x7f86e));if(this[_0x5177('0x1')]!==_0x570522){this[_0x5177('0x1')]=_0x570522;io[_0x5177('0x3a')](_0x5177('0x3b'),_0x7f86e);}};module[_0x5177('0x3c')]=Agent;
\ No newline at end of file
index 255e3b2..4196e78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5fc=['updateRouting','updateRealtime','prototype','_rr','length','online','chatPause','paused','available','loggedIn','stringify','format','chat:queue:%s','emit','chat_queue:save','lodash','md5','util','ioredis','defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x19cf51,_0x5ca5d6){var _0x2dedc9=function(_0x27f5e0){while(--_0x27f5e0){_0x19cf51['push'](_0x19cf51['shift']());}};_0x2dedc9(++_0x5ca5d6);}(_0xd5fc,0xa0));var _0xcd5f=function(_0x82cb46,_0x429bb5){_0x82cb46=_0x82cb46-0x0;var _0x56e2f8=_0xd5fc[_0x82cb46];return _0x56e2f8;};'use strict';var _=require(_0xcd5f('0x0'));var md5=require(_0xcd5f('0x1'));var util=require(_0xcd5f('0x2'));var Redis=require(_0xcd5f('0x3'));var config=require('../../../config/environment');config['redis']=_[_0xcd5f('0x4')](config[_0xcd5f('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xcd5f('0x6'))(new Redis(config[_0xcd5f('0x5')]));function ChatQueue(_0x142fb7){this['id']=_0x142fb7['id']||0x0;this[_0xcd5f('0x7')]=_0x142fb7[_0xcd5f('0x7')]||'';this[_0xcd5f('0x8')]=_0x142fb7[_0xcd5f('0x8')]||0xa;this[_0xcd5f('0x9')]=_0x142fb7['strategy']||_0xcd5f('0xa');this[_0xcd5f('0xb')]=_0x142fb7[_0xcd5f('0xb')];this[_0xcd5f('0xc')]={};this[_0xcd5f('0xd')]=0x0;this[_0xcd5f('0x1')]='';this[_0xcd5f('0xe')]();this[_0xcd5f('0xf')]();}ChatQueue[_0xcd5f('0x10')][_0xcd5f('0xe')]=function(){var _0x36af96=this[_0xcd5f('0xc')]['_rr'];this[_0xcd5f('0xc')]=_['map'](this['Agents'],'id');this['mapAgentsId'][_0xcd5f('0x11')]=_0x36af96;};ChatQueue[_0xcd5f('0x10')]['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x10f016=0x0;_0x10f016<this['Agents'][_0xcd5f('0x12')];_0x10f016+=0x1){if(this[_0xcd5f('0xb')][_0x10f016][_0xcd5f('0x13')]){this['loggedIn']+=0x1;}if(this[_0xcd5f('0xb')][_0x10f016][_0xcd5f('0x14')]){this[_0xcd5f('0x15')]+=0x1;}}this['available']=this['loggedIn']-this[_0xcd5f('0x15')];this[_0xcd5f('0x16')]=this[_0xcd5f('0x16')]>=0x0?this[_0xcd5f('0x16')]:0x0;var _0x323421={'id':this['id'],'available':this[_0xcd5f('0x16')],'loggedIn':this[_0xcd5f('0x17')],'name':this['name'],'paused':this[_0xcd5f('0x15')],'waiting':this[_0xcd5f('0xd')]};var _0x1508db=md5(JSON[_0xcd5f('0x18')](_0x323421));if(this[_0xcd5f('0x1')]!==_0x1508db){this[_0xcd5f('0x1')]=_0x1508db;io['to'](util[_0xcd5f('0x19')](_0xcd5f('0x1a'),_0x323421[_0xcd5f('0x7')]))[_0xcd5f('0x1b')](_0xcd5f('0x1c'),_0x323421);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0xd8a2=['stringify','chat:queue:%s','emit','chat_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','available'];(function(_0x1b2422,_0x1e98d4){var _0x376573=function(_0x5db41b){while(--_0x5db41b){_0x1b2422['push'](_0x1b2422['shift']());}};_0x376573(++_0x1e98d4);}(_0xd8a2,0x144));var _0x2d8a=function(_0x5b29ef,_0x4000a6){_0x5b29ef=_0x5b29ef-0x0;var _0x1e13cd=_0xd8a2[_0x5b29ef];return _0x1e13cd;};'use strict';var _=require(_0x2d8a('0x0'));var md5=require(_0x2d8a('0x1'));var util=require('util');var Redis=require(_0x2d8a('0x2'));var config=require(_0x2d8a('0x3'));config[_0x2d8a('0x4')]=_[_0x2d8a('0x5')](config[_0x2d8a('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x2d8a('0x6'))(new Redis(config[_0x2d8a('0x4')]));function ChatQueue(_0x89ff56){this['id']=_0x89ff56['id']||0x0;this[_0x2d8a('0x7')]=_0x89ff56['name']||'';this[_0x2d8a('0x8')]=_0x89ff56[_0x2d8a('0x8')]||0xa;this[_0x2d8a('0x9')]=_0x89ff56[_0x2d8a('0x9')]||_0x2d8a('0xa');this[_0x2d8a('0xb')]=_0x89ff56[_0x2d8a('0xb')];this[_0x2d8a('0xc')]={};this[_0x2d8a('0xd')]=0x0;this['md5']='';this[_0x2d8a('0xe')]();this[_0x2d8a('0xf')]();}ChatQueue[_0x2d8a('0x10')]['updateRouting']=function(){var _0x3c958a=this[_0x2d8a('0xc')][_0x2d8a('0x11')];this['mapAgentsId']=_[_0x2d8a('0x12')](this[_0x2d8a('0xb')],'id');this[_0x2d8a('0xc')][_0x2d8a('0x11')]=_0x3c958a;};ChatQueue[_0x2d8a('0x10')]['updateRealtime']=function(){this[_0x2d8a('0x13')]=0x0;this[_0x2d8a('0x14')]=0x0;for(var _0x386b92=0x0;_0x386b92<this['Agents'][_0x2d8a('0x15')];_0x386b92+=0x1){if(this[_0x2d8a('0xb')][_0x386b92][_0x2d8a('0x16')]){this['loggedIn']+=0x1;}if(this[_0x2d8a('0xb')][_0x386b92]['chatPause']){this[_0x2d8a('0x14')]+=0x1;}}this[_0x2d8a('0x17')]=this['loggedIn']-this[_0x2d8a('0x14')];this[_0x2d8a('0x17')]=this['available']>=0x0?this['available']:0x0;var _0x2304c7={'id':this['id'],'available':this[_0x2d8a('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x2d8a('0x7')],'paused':this[_0x2d8a('0x14')],'waiting':this[_0x2d8a('0xd')]};var _0x19feee=md5(JSON[_0x2d8a('0x18')](_0x2304c7));if(this[_0x2d8a('0x1')]!==_0x19feee){this[_0x2d8a('0x1')]=_0x19feee;io['to'](util['format'](_0x2d8a('0x19'),_0x2304c7[_0x2d8a('0x7')]))[_0x2d8a('0x1a')](_0x2d8a('0x1b'),_0x2304c7);}};module[_0x2d8a('0x1c')]=ChatQueue;
\ No newline at end of file
index 1ec20ca..6d2e235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24a1=['fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','timeout','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','online','faxPause','available','name','stringify','format'];(function(_0x146b69,_0x48a757){var _0x4ce0bb=function(_0x5562e0){while(--_0x5562e0){_0x146b69['push'](_0x146b69['shift']());}};_0x4ce0bb(++_0x48a757);}(_0x24a1,0x126));var _0x124a=function(_0x2332ed,_0x1c65fe){_0x2332ed=_0x2332ed-0x0;var _0x364956=_0x24a1[_0x2332ed];return _0x364956;};'use strict';var _=require(_0x124a('0x0'));var md5=require(_0x124a('0x1'));var util=require('util');var Redis=require(_0x124a('0x2'));var config=require(_0x124a('0x3'));config[_0x124a('0x4')]=_['defaults'](config['redis'],{'host':_0x124a('0x5'),'port':0x18eb});var io=require(_0x124a('0x6'))(new Redis(config[_0x124a('0x4')]));function FaxQueue(_0x125ef9){this['id']=_0x125ef9['id']||0x0;this['name']=_0x125ef9['name']||'';this['timeout']=_0x125ef9[_0x124a('0x7')]||0xa;this['strategy']=_0x125ef9['strategy']||_0x124a('0x8');this[_0x124a('0x9')]=_0x125ef9['Agents'];this['mapAgentsId']={};this[_0x124a('0xa')]=0x0;this[_0x124a('0x1')]='';this[_0x124a('0xb')]();this[_0x124a('0xc')]();}FaxQueue[_0x124a('0xd')][_0x124a('0xb')]=function(){var _0x1201c2=this[_0x124a('0xe')][_0x124a('0xf')];this['mapAgentsId']=_[_0x124a('0x10')](this['Agents'],'id');this[_0x124a('0xe')][_0x124a('0xf')]=_0x1201c2;};FaxQueue['prototype'][_0x124a('0xc')]=function(){this[_0x124a('0x11')]=0x0;this[_0x124a('0x12')]=0x0;for(var _0x4dd192=0x0;_0x4dd192<this[_0x124a('0x9')]['length'];_0x4dd192+=0x1){if(this[_0x124a('0x9')][_0x4dd192][_0x124a('0x13')]){this[_0x124a('0x11')]+=0x1;}if(this[_0x124a('0x9')][_0x4dd192][_0x124a('0x14')]){this['paused']+=0x1;}}this['available']=this['loggedIn']-this[_0x124a('0x12')];this['available']=this[_0x124a('0x15')]>=0x0?this[_0x124a('0x15')]:0x0;var _0x1ffe91={'id':this['id'],'available':this[_0x124a('0x15')],'loggedIn':this[_0x124a('0x11')],'name':this[_0x124a('0x16')],'paused':this[_0x124a('0x12')],'waiting':this[_0x124a('0xa')]};var _0x5c9200=md5(JSON[_0x124a('0x17')](_0x1ffe91));if(this[_0x124a('0x1')]!==_0x5c9200){this[_0x124a('0x1')]=_0x5c9200;io['to'](util[_0x124a('0x18')](_0x124a('0x19'),_0x1ffe91['name']))[_0x124a('0x1a')](_0x124a('0x1b'),_0x1ffe91);}};module[_0x124a('0x1c')]=FaxQueue;
\ No newline at end of file
+var _0x25e4=['exports','lodash','md5','util','ioredis','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','_rr','map','loggedIn','paused','length','available','stringify','format','fax:queue:%s','emit'];(function(_0x4a0f16,_0x21ba18){var _0x45d653=function(_0x137e2c){while(--_0x137e2c){_0x4a0f16['push'](_0x4a0f16['shift']());}};_0x45d653(++_0x21ba18);}(_0x25e4,0xb7));var _0x425e=function(_0xb092a,_0x49d186){_0xb092a=_0xb092a-0x0;var _0x10e43f=_0x25e4[_0xb092a];return _0x10e43f;};'use strict';var _=require(_0x425e('0x0'));var md5=require(_0x425e('0x1'));var util=require(_0x425e('0x2'));var Redis=require(_0x425e('0x3'));var config=require('../../../config/environment');config[_0x425e('0x4')]=_[_0x425e('0x5')](config[_0x425e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x425e('0x6'))(new Redis(config[_0x425e('0x4')]));function FaxQueue(_0x190b37){this['id']=_0x190b37['id']||0x0;this[_0x425e('0x7')]=_0x190b37['name']||'';this[_0x425e('0x8')]=_0x190b37[_0x425e('0x8')]||0xa;this[_0x425e('0x9')]=_0x190b37[_0x425e('0x9')]||_0x425e('0xa');this[_0x425e('0xb')]=_0x190b37['Agents'];this['mapAgentsId']={};this[_0x425e('0xc')]=0x0;this[_0x425e('0x1')]='';this[_0x425e('0xd')]();this[_0x425e('0xe')]();}FaxQueue['prototype'][_0x425e('0xd')]=function(){var _0x9886d0=this['mapAgentsId'][_0x425e('0xf')];this['mapAgentsId']=_[_0x425e('0x10')](this[_0x425e('0xb')],'id');this['mapAgentsId'][_0x425e('0xf')]=_0x9886d0;};FaxQueue['prototype'][_0x425e('0xe')]=function(){this[_0x425e('0x11')]=0x0;this[_0x425e('0x12')]=0x0;for(var _0x2789f4=0x0;_0x2789f4<this[_0x425e('0xb')][_0x425e('0x13')];_0x2789f4+=0x1){if(this[_0x425e('0xb')][_0x2789f4]['online']){this[_0x425e('0x11')]+=0x1;}if(this['Agents'][_0x2789f4]['faxPause']){this[_0x425e('0x12')]+=0x1;}}this['available']=this[_0x425e('0x11')]-this['paused'];this[_0x425e('0x14')]=this[_0x425e('0x14')]>=0x0?this[_0x425e('0x14')]:0x0;var _0x4ac25a={'id':this['id'],'available':this['available'],'loggedIn':this[_0x425e('0x11')],'name':this['name'],'paused':this[_0x425e('0x12')],'waiting':this[_0x425e('0xc')]};var _0x1994c1=md5(JSON[_0x425e('0x15')](_0x4ac25a));if(this[_0x425e('0x1')]!==_0x1994c1){this['md5']=_0x1994c1;io['to'](util[_0x425e('0x16')](_0x425e('0x17'),_0x4ac25a['name']))[_0x425e('0x18')]('fax_queue:save',_0x4ac25a);}};module[_0x425e('0x19')]=FaxQueue;
\ No newline at end of file
index ab95c74..4883895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24b2=['Intervals','name'];(function(_0x5358cd,_0x293fd6){var _0xc144e2=function(_0x18c1fc){while(--_0x18c1fc){_0x5358cd['push'](_0x5358cd['shift']());}};_0xc144e2(++_0x293fd6);}(_0x24b2,0x19d));var _0x224b=function(_0x5be0ee,_0x2e17be){_0x5be0ee=_0x5be0ee-0x0;var _0x20427f=_0x24b2[_0x5be0ee];return _0x20427f;};'use strict';function Interval(_0x2588fd){this['id']=_0x2588fd['id']||0x0;this[_0x224b('0x0')]=_0x2588fd[_0x224b('0x0')]||'';this[_0x224b('0x1')]=_0x2588fd[_0x224b('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x7cc3=['Intervals','exports','name'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x7cc3,0x197));var _0x37cc=function(_0x15e535,_0x7bbb1a){_0x15e535=_0x15e535-0x0;var _0x1edc72=_0x7cc3[_0x15e535];return _0x1edc72;};'use strict';function Interval(_0x2f229a){this['id']=_0x2f229a['id']||0x0;this[_0x37cc('0x0')]=_0x2f229a[_0x37cc('0x0')]||'';this[_0x37cc('0x1')]=_0x2f229a[_0x37cc('0x1')]||{};}module[_0x37cc('0x2')]=Interval;
\ No newline at end of file
index c39bbbd..2fd1771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa815=['md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','length','online','loggedIn','mailPause','available','paused','stringify','format','mail:queue:%s','emit'];(function(_0x3a90c2,_0x37b768){var _0x5df71e=function(_0x8f2cdd){while(--_0x8f2cdd){_0x3a90c2['push'](_0x3a90c2['shift']());}};_0x5df71e(++_0x37b768);}(_0xa815,0x8c));var _0x5a81=function(_0x4150b6,_0x567c53){_0x4150b6=_0x4150b6-0x0;var _0x343920=_0xa815[_0x4150b6];return _0x343920;};'use strict';var _=require('lodash');var md5=require(_0x5a81('0x0'));var util=require('util');var Redis=require(_0x5a81('0x1'));var config=require(_0x5a81('0x2'));config[_0x5a81('0x3')]=_[_0x5a81('0x4')](config[_0x5a81('0x3')],{'host':_0x5a81('0x5'),'port':0x18eb});var io=require(_0x5a81('0x6'))(new Redis(config[_0x5a81('0x3')]));function MailQueue(_0x410845){this['id']=_0x410845['id']||0x0;this[_0x5a81('0x7')]=_0x410845['name']||'';this[_0x5a81('0x8')]=_0x410845[_0x5a81('0x8')]||0xa;this[_0x5a81('0x9')]=_0x410845[_0x5a81('0x9')]||_0x5a81('0xa');this[_0x5a81('0xb')]=_0x410845[_0x5a81('0xb')];this[_0x5a81('0xc')]={};this[_0x5a81('0xd')]=0x0;this['md5']='';this['updateRouting']();this[_0x5a81('0xe')]();}MailQueue[_0x5a81('0xf')][_0x5a81('0x10')]=function(){var _0x2d77ca=this[_0x5a81('0xc')][_0x5a81('0x11')];this['mapAgentsId']=_['map'](this[_0x5a81('0xb')],'id');this['mapAgentsId'][_0x5a81('0x11')]=_0x2d77ca;};MailQueue[_0x5a81('0xf')][_0x5a81('0xe')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x3f3e45=0x0;_0x3f3e45<this[_0x5a81('0xb')][_0x5a81('0x12')];_0x3f3e45+=0x1){if(this[_0x5a81('0xb')][_0x3f3e45][_0x5a81('0x13')]){this[_0x5a81('0x14')]+=0x1;}if(this[_0x5a81('0xb')][_0x3f3e45][_0x5a81('0x15')]){this['paused']+=0x1;}}this[_0x5a81('0x16')]=this[_0x5a81('0x14')]-this[_0x5a81('0x17')];this[_0x5a81('0x16')]=this[_0x5a81('0x16')]>=0x0?this['available']:0x0;var _0x36d210={'id':this['id'],'available':this[_0x5a81('0x16')],'loggedIn':this[_0x5a81('0x14')],'name':this[_0x5a81('0x7')],'paused':this[_0x5a81('0x17')],'waiting':this[_0x5a81('0xd')]};var _0x4fb368=md5(JSON[_0x5a81('0x18')](_0x36d210));if(this['md5']!==_0x4fb368){this[_0x5a81('0x0')]=_0x4fb368;io['to'](util[_0x5a81('0x19')](_0x5a81('0x1a'),_0x36d210[_0x5a81('0x7')]))[_0x5a81('0x1b')]('mail_queue:save',_0x36d210);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0xad44=['Agents','_rr','loggedIn','length','paused','available','stringify','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','prototype'];(function(_0x23bba9,_0x2dbee5){var _0x14e2b6=function(_0x133b26){while(--_0x133b26){_0x23bba9['push'](_0x23bba9['shift']());}};_0x14e2b6(++_0x2dbee5);}(_0xad44,0x1af));var _0x4ad4=function(_0x2d9c6a,_0x59393d){_0x2d9c6a=_0x2d9c6a-0x0;var _0xf3c918=_0xad44[_0x2d9c6a];return _0xf3c918;};'use strict';var _=require(_0x4ad4('0x0'));var md5=require(_0x4ad4('0x1'));var util=require(_0x4ad4('0x2'));var Redis=require(_0x4ad4('0x3'));var config=require(_0x4ad4('0x4'));config[_0x4ad4('0x5')]=_[_0x4ad4('0x6')](config['redis'],{'host':_0x4ad4('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function MailQueue(_0x1b3a4d){this['id']=_0x1b3a4d['id']||0x0;this[_0x4ad4('0x8')]=_0x1b3a4d[_0x4ad4('0x8')]||'';this[_0x4ad4('0x9')]=_0x1b3a4d[_0x4ad4('0x9')]||0xa;this[_0x4ad4('0xa')]=_0x1b3a4d[_0x4ad4('0xa')]||_0x4ad4('0xb');this['Agents']=_0x1b3a4d['Agents'];this[_0x4ad4('0xc')]={};this[_0x4ad4('0xd')]=0x0;this['md5']='';this[_0x4ad4('0xe')]();this[_0x4ad4('0xf')]();}MailQueue[_0x4ad4('0x10')][_0x4ad4('0xe')]=function(){var _0x42b743=this[_0x4ad4('0xc')]['_rr'];this[_0x4ad4('0xc')]=_['map'](this[_0x4ad4('0x11')],'id');this['mapAgentsId'][_0x4ad4('0x12')]=_0x42b743;};MailQueue[_0x4ad4('0x10')]['updateRealtime']=function(){this[_0x4ad4('0x13')]=0x0;this['paused']=0x0;for(var _0x10f4e2=0x0;_0x10f4e2<this[_0x4ad4('0x11')][_0x4ad4('0x14')];_0x10f4e2+=0x1){if(this[_0x4ad4('0x11')][_0x10f4e2]['online']){this[_0x4ad4('0x13')]+=0x1;}if(this[_0x4ad4('0x11')][_0x10f4e2]['mailPause']){this[_0x4ad4('0x15')]+=0x1;}}this[_0x4ad4('0x16')]=this['loggedIn']-this[_0x4ad4('0x15')];this[_0x4ad4('0x16')]=this[_0x4ad4('0x16')]>=0x0?this[_0x4ad4('0x16')]:0x0;var _0x4008d9={'id':this['id'],'available':this[_0x4ad4('0x16')],'loggedIn':this[_0x4ad4('0x13')],'name':this[_0x4ad4('0x8')],'paused':this[_0x4ad4('0x15')],'waiting':this[_0x4ad4('0xd')]};var _0x449774=md5(JSON[_0x4ad4('0x17')](_0x4008d9));if(this[_0x4ad4('0x1')]!==_0x449774){this[_0x4ad4('0x1')]=_0x449774;io['to'](util['format'](_0x4ad4('0x18'),_0x4008d9[_0x4ad4('0x8')]))[_0x4ad4('0x19')](_0x4ad4('0x1a'),_0x4008d9);}};module[_0x4ad4('0x1b')]=MailQueue;
\ No newline at end of file
index 85dfbb4..ab029e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x7a54,0x106));var _0x47a5=function(_0x400be0,_0x53f349){_0x400be0=_0x400be0-0x0;var _0x435513=_0x7a54[_0x400be0];return _0x435513;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x51c819,_0xd812db){var _0x15c5d2=function(_0x2977f0){while(--_0x2977f0){_0x51c819['push'](_0x51c819['shift']());}};_0x15c5d2(++_0xd812db);}(_0x1261,0x144));var _0x1126=function(_0x51f4fc,_0x1fe3ef){_0x51f4fc=_0x51f4fc-0x0;var _0x4d96fc=_0x1261[_0x51f4fc];return _0x4d96fc;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index ad22bc9..836a6a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8664=['prototype','_rr','loggedIn','online','smsPause','paused','available','stringify','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime'];(function(_0x9eb95c,_0x439067){var _0x29533e=function(_0x298296){while(--_0x298296){_0x9eb95c['push'](_0x9eb95c['shift']());}};_0x29533e(++_0x439067);}(_0x8664,0x11a));var _0x4866=function(_0x5aac8d,_0x42b1a7){_0x5aac8d=_0x5aac8d-0x0;var _0x410411=_0x8664[_0x5aac8d];return _0x410411;};'use strict';var _=require(_0x4866('0x0'));var md5=require(_0x4866('0x1'));var util=require(_0x4866('0x2'));var Redis=require(_0x4866('0x3'));var config=require(_0x4866('0x4'));config[_0x4866('0x5')]=_[_0x4866('0x6')](config[_0x4866('0x5')],{'host':_0x4866('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4866('0x5')]));function SmsQueue(_0x595c9d){this['id']=_0x595c9d['id']||0x0;this[_0x4866('0x8')]=_0x595c9d[_0x4866('0x8')]||'';this[_0x4866('0x9')]=_0x595c9d[_0x4866('0x9')]||0xa;this[_0x4866('0xa')]=_0x595c9d[_0x4866('0xa')]||'beepall';this[_0x4866('0xb')]=_0x595c9d[_0x4866('0xb')];this[_0x4866('0xc')]={};this[_0x4866('0xd')]=0x0;this[_0x4866('0x1')]='';this['updateRouting']();this[_0x4866('0xe')]();}SmsQueue[_0x4866('0xf')]['updateRouting']=function(){var _0x253b1f=this[_0x4866('0xc')]['_rr'];this['mapAgentsId']=_['map'](this[_0x4866('0xb')],'id');this[_0x4866('0xc')][_0x4866('0x10')]=_0x253b1f;};SmsQueue[_0x4866('0xf')][_0x4866('0xe')]=function(){this[_0x4866('0x11')]=0x0;this['paused']=0x0;for(var _0x92e62e=0x0;_0x92e62e<this[_0x4866('0xb')]['length'];_0x92e62e+=0x1){if(this[_0x4866('0xb')][_0x92e62e][_0x4866('0x12')]){this[_0x4866('0x11')]+=0x1;}if(this[_0x4866('0xb')][_0x92e62e][_0x4866('0x13')]){this[_0x4866('0x14')]+=0x1;}}this[_0x4866('0x15')]=this[_0x4866('0x11')]-this[_0x4866('0x14')];this['available']=this['available']>=0x0?this[_0x4866('0x15')]:0x0;var _0x137ddf={'id':this['id'],'available':this[_0x4866('0x15')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x4866('0x14')],'waiting':this[_0x4866('0xd')]};var _0x4b0126=md5(JSON[_0x4866('0x16')](_0x137ddf));if(this['md5']!==_0x4b0126){this[_0x4866('0x1')]=_0x4b0126;io['to'](util['format'](_0x4866('0x17'),_0x137ddf[_0x4866('0x8')]))[_0x4866('0x18')](_0x4866('0x19'),_0x137ddf);}};module[_0x4866('0x1a')]=SmsQueue;
\ No newline at end of file
+var _0x1ddc=['ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','online','smsPause','paused','available','waiting','sms:queue:%s','emit','sms_queue:save','exports','md5','util'];(function(_0x27eff4,_0x24b415){var _0x3958a5=function(_0x10c4d9){while(--_0x10c4d9){_0x27eff4['push'](_0x27eff4['shift']());}};_0x3958a5(++_0x24b415);}(_0x1ddc,0x6e));var _0xc1dd=function(_0x922631,_0x435d6c){_0x922631=_0x922631-0x0;var _0x35eb0a=_0x1ddc[_0x922631];return _0x35eb0a;};'use strict';var _=require('lodash');var md5=require(_0xc1dd('0x0'));var util=require(_0xc1dd('0x1'));var Redis=require(_0xc1dd('0x2'));var config=require('../../../config/environment');config[_0xc1dd('0x3')]=_[_0xc1dd('0x4')](config['redis'],{'host':_0xc1dd('0x5'),'port':0x18eb});var io=require(_0xc1dd('0x6'))(new Redis(config['redis']));function SmsQueue(_0x477ca1){this['id']=_0x477ca1['id']||0x0;this[_0xc1dd('0x7')]=_0x477ca1['name']||'';this[_0xc1dd('0x8')]=_0x477ca1[_0xc1dd('0x8')]||0xa;this['strategy']=_0x477ca1['strategy']||_0xc1dd('0x9');this[_0xc1dd('0xa')]=_0x477ca1[_0xc1dd('0xa')];this[_0xc1dd('0xb')]={};this['waiting']=0x0;this[_0xc1dd('0x0')]='';this[_0xc1dd('0xc')]();this[_0xc1dd('0xd')]();}SmsQueue[_0xc1dd('0xe')]['updateRouting']=function(){var _0xaf56b8=this[_0xc1dd('0xb')][_0xc1dd('0xf')];this[_0xc1dd('0xb')]=_[_0xc1dd('0x10')](this[_0xc1dd('0xa')],'id');this[_0xc1dd('0xb')][_0xc1dd('0xf')]=_0xaf56b8;};SmsQueue[_0xc1dd('0xe')][_0xc1dd('0xd')]=function(){this[_0xc1dd('0x11')]=0x0;this['paused']=0x0;for(var _0x3d4c7f=0x0;_0x3d4c7f<this[_0xc1dd('0xa')][_0xc1dd('0x12')];_0x3d4c7f+=0x1){if(this[_0xc1dd('0xa')][_0x3d4c7f][_0xc1dd('0x13')]){this['loggedIn']+=0x1;}if(this[_0xc1dd('0xa')][_0x3d4c7f][_0xc1dd('0x14')]){this[_0xc1dd('0x15')]+=0x1;}}this[_0xc1dd('0x16')]=this['loggedIn']-this['paused'];this[_0xc1dd('0x16')]=this['available']>=0x0?this[_0xc1dd('0x16')]:0x0;var _0x4c3114={'id':this['id'],'available':this[_0xc1dd('0x16')],'loggedIn':this[_0xc1dd('0x11')],'name':this[_0xc1dd('0x7')],'paused':this[_0xc1dd('0x15')],'waiting':this[_0xc1dd('0x17')]};var _0x283b66=md5(JSON['stringify'](_0x4c3114));if(this[_0xc1dd('0x0')]!==_0x283b66){this[_0xc1dd('0x0')]=_0x283b66;io['to'](util['format'](_0xc1dd('0x18'),_0x4c3114[_0xc1dd('0x7')]))[_0xc1dd('0x19')](_0xc1dd('0x1a'),_0x4c3114);}};module[_0xc1dd('0x1b')]=SmsQueue;
\ No newline at end of file
index 7494586..3fd8ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ce9=['../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','_rr','map','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','whatsapp:queue:%s','lodash','md5','util','ioredis'];(function(_0x73a7da,_0x5649e2){var _0x36c2bb=function(_0x1a2a46){while(--_0x1a2a46){_0x73a7da['push'](_0x73a7da['shift']());}};_0x36c2bb(++_0x5649e2);}(_0x1ce9,0x176));var _0x91ce=function(_0x115dab,_0x775510){_0x115dab=_0x115dab-0x0;var _0x30a10b=_0x1ce9[_0x115dab];return _0x30a10b;};'use strict';var _=require(_0x91ce('0x0'));var md5=require(_0x91ce('0x1'));var util=require(_0x91ce('0x2'));var Redis=require(_0x91ce('0x3'));var config=require(_0x91ce('0x4'));config[_0x91ce('0x5')]=_[_0x91ce('0x6')](config[_0x91ce('0x5')],{'host':_0x91ce('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x555653){this['id']=_0x555653['id']||0x0;this['name']=_0x555653[_0x91ce('0x8')]||'';this[_0x91ce('0x9')]=_0x555653['timeout']||0xa;this[_0x91ce('0xa')]=_0x555653[_0x91ce('0xa')]||_0x91ce('0xb');this[_0x91ce('0xc')]=_0x555653['Agents'];this[_0x91ce('0xd')]={};this['waiting']=0x0;this[_0x91ce('0x1')]='';this[_0x91ce('0xe')]();this['updateRealtime']();}WhatsappQueue['prototype'][_0x91ce('0xe')]=function(){var _0x3fd761=this[_0x91ce('0xd')][_0x91ce('0xf')];this['mapAgentsId']=_[_0x91ce('0x10')](this['Agents'],'id');this[_0x91ce('0xd')][_0x91ce('0xf')]=_0x3fd761;};WhatsappQueue[_0x91ce('0x11')]['updateRealtime']=function(){this[_0x91ce('0x12')]=0x0;this[_0x91ce('0x13')]=0x0;for(var _0x5a6298=0x0;_0x5a6298<this['Agents'][_0x91ce('0x14')];_0x5a6298+=0x1){if(this[_0x91ce('0xc')][_0x5a6298][_0x91ce('0x15')]){this[_0x91ce('0x12')]+=0x1;}if(this[_0x91ce('0xc')][_0x5a6298]['whatsappPause']){this['paused']+=0x1;}}this[_0x91ce('0x16')]=this[_0x91ce('0x12')]-this[_0x91ce('0x13')];this[_0x91ce('0x16')]=this[_0x91ce('0x16')]>=0x0?this['available']:0x0;var _0x2707f1={'id':this['id'],'available':this[_0x91ce('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x91ce('0x8')],'paused':this[_0x91ce('0x13')],'waiting':this[_0x91ce('0x17')]};var _0x23474f=md5(JSON[_0x91ce('0x18')](_0x2707f1));if(this[_0x91ce('0x1')]!==_0x23474f){this[_0x91ce('0x1')]=_0x23474f;io['to'](util[_0x91ce('0x19')](_0x91ce('0x1a'),_0x2707f1[_0x91ce('0x8')]))['emit']('whatsapp_queue:save',_0x2707f1);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0xc23b=['name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','whatsappPause','available','format','whatsapp:queue:%s','whatsapp_queue:save','lodash','md5','util','../../../config/environment','redis','socket.io-emitter'];(function(_0x2073cd,_0x41af4e){var _0x41f33d=function(_0x478f2d){while(--_0x478f2d){_0x2073cd['push'](_0x2073cd['shift']());}};_0x41f33d(++_0x41af4e);}(_0xc23b,0x1bc));var _0xbc23=function(_0x1ff2ec,_0x386e86){_0x1ff2ec=_0x1ff2ec-0x0;var _0x405683=_0xc23b[_0x1ff2ec];return _0x405683;};'use strict';var _=require(_0xbc23('0x0'));var md5=require(_0xbc23('0x1'));var util=require(_0xbc23('0x2'));var Redis=require('ioredis');var config=require(_0xbc23('0x3'));config[_0xbc23('0x4')]=_['defaults'](config[_0xbc23('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xbc23('0x5'))(new Redis(config[_0xbc23('0x4')]));function WhatsappQueue(_0x4eff39){this['id']=_0x4eff39['id']||0x0;this[_0xbc23('0x6')]=_0x4eff39[_0xbc23('0x6')]||'';this[_0xbc23('0x7')]=_0x4eff39[_0xbc23('0x7')]||0xa;this[_0xbc23('0x8')]=_0x4eff39[_0xbc23('0x8')]||_0xbc23('0x9');this[_0xbc23('0xa')]=_0x4eff39[_0xbc23('0xa')];this[_0xbc23('0xb')]={};this[_0xbc23('0xc')]=0x0;this[_0xbc23('0x1')]='';this[_0xbc23('0xd')]();this[_0xbc23('0xe')]();}WhatsappQueue[_0xbc23('0xf')][_0xbc23('0xd')]=function(){var _0x20e631=this[_0xbc23('0xb')]['_rr'];this[_0xbc23('0xb')]=_[_0xbc23('0x10')](this['Agents'],'id');this[_0xbc23('0xb')][_0xbc23('0x11')]=_0x20e631;};WhatsappQueue[_0xbc23('0xf')]['updateRealtime']=function(){this[_0xbc23('0x12')]=0x0;this[_0xbc23('0x13')]=0x0;for(var _0x21ad40=0x0;_0x21ad40<this['Agents']['length'];_0x21ad40+=0x1){if(this[_0xbc23('0xa')][_0x21ad40]['online']){this[_0xbc23('0x12')]+=0x1;}if(this[_0xbc23('0xa')][_0x21ad40][_0xbc23('0x14')]){this[_0xbc23('0x13')]+=0x1;}}this['available']=this[_0xbc23('0x12')]-this['paused'];this[_0xbc23('0x15')]=this[_0xbc23('0x15')]>=0x0?this['available']:0x0;var _0x1e5dbc={'id':this['id'],'available':this[_0xbc23('0x15')],'loggedIn':this[_0xbc23('0x12')],'name':this['name'],'paused':this[_0xbc23('0x13')],'waiting':this[_0xbc23('0xc')]};var _0x745877=md5(JSON['stringify'](_0x1e5dbc));if(this[_0xbc23('0x1')]!==_0x745877){this[_0xbc23('0x1')]=_0x745877;io['to'](util[_0xbc23('0x16')](_0xbc23('0x17'),_0x1e5dbc[_0xbc23('0x6')]))['emit'](_0xbc23('0x18'),_0x1e5dbc);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 6ee4dab..3b84e76 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(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x342d31,_0x225162){var _0x159adc=function(_0x5ea44b){while(--_0x5ea44b){_0x342d31['push'](_0x342d31['shift']());}};_0x159adc(++_0x225162);}(_0xb10b,0x12a));var _0xbb10=function(_0x2250da,_0xdb9fe6){_0x2250da=_0x2250da-0x0;var _0x573dc5=_0xb10b[_0x2250da];return _0x573dc5;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
index 8d8eac5..c3b27d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa21b=['UpdateChatInteraction','updateChatInteraction','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update'];(function(_0x499078,_0x13c9a1){var _0x5e1bc8=function(_0x48bc0c){while(--_0x48bc0c){_0x499078['push'](_0x499078['shift']());}};_0x5e1bc8(++_0x13c9a1);}(_0xa21b,0x176));var _0xba21=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0xa21b[_0x5ddaac];return _0x2a9c58;};'use strict';var client=require(_0xba21('0x0'));exports[_0xba21('0x1')]=function(_0x3c6599,_0x339366){return client['Request'](_0xba21('0x2'),{'body':_0x339366,'options':{'where':{'id':_0x3c6599}},'log':_0xba21('0x3')});};exports[_0xba21('0x4')]=function(_0x4f4c17,_0x461e93){return client[_0xba21('0x5')](_0xba21('0x6'),{'body':_0x461e93,'options':{'where':{'id':_0x4f4c17}},'log':_0xba21('0x7')});};
\ No newline at end of file
+var _0x8579=['addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x5e913f,_0x265fc0){var _0x472cc4=function(_0x49df8d){while(--_0x49df8d){_0x5e913f['push'](_0x5e913f['shift']());}};_0x472cc4(++_0x265fc0);}(_0x8579,0x104));var _0x9857=function(_0x577af2,_0xbf592e){_0x577af2=_0x577af2-0x0;var _0x46e971=_0x8579[_0x577af2];return _0x46e971;};'use strict';var client=require(_0x9857('0x0'));exports[_0x9857('0x1')]=function(_0x1456e9,_0x4a4983){return client[_0x9857('0x2')](_0x9857('0x3'),{'body':_0x4a4983,'options':{'where':{'id':_0x1456e9}},'log':'updateChatInteraction'});};exports[_0x9857('0x4')]=function(_0x4409ba,_0x99ce38){return client[_0x9857('0x2')](_0x9857('0x5'),{'body':_0x99ce38,'options':{'where':{'id':_0x4409ba}},'log':_0x9857('0x6')});};
\ No newline at end of file
index 404cdc0..9acfc9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7761=['CreateChatMessage','createChatMessage','../client','create','Request'];(function(_0x3baaf2,_0x894e3d){var _0x50e8b0=function(_0x35dd6f){while(--_0x35dd6f){_0x3baaf2['push'](_0x3baaf2['shift']());}};_0x50e8b0(++_0x894e3d);}(_0x7761,0x174));var _0x1776=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7761[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x1776('0x0'));exports[_0x1776('0x1')]=function(_0x3e9998){return client[_0x1776('0x2')](_0x1776('0x3'),{'body':_0x3e9998,'log':_0x1776('0x4')});};
\ No newline at end of file
+var _0xb0ab=['Request','createChatMessage','create'];(function(_0x56f319,_0x2d722f){var _0x43b3d1=function(_0x444281){while(--_0x444281){_0x56f319['push'](_0x56f319['shift']());}};_0x43b3d1(++_0x2d722f);}(_0xb0ab,0x1a9));var _0xbb0a=function(_0x48fc87,_0xe5af05){_0x48fc87=_0x48fc87-0x0;var _0x3d7826=_0xb0ab[_0x48fc87];return _0x3d7826;};'use strict';var client=require('../client');exports[_0xbb0a('0x0')]=function(_0x25fcfd){return client[_0xbb0a('0x1')]('CreateChatMessage',{'body':_0x25fcfd,'log':_0xbb0a('0x2')});};
\ No newline at end of file
index 521da18..f158711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b20=['name','online','chatPause','getChatQueues','Request','timeout','strategy','User','Agents'];(function(_0x4c4288,_0x359393){var _0x2776cb=function(_0x5a90cf){while(--_0x5a90cf){_0x4c4288['push'](_0x4c4288['shift']());}};_0x2776cb(++_0x359393);}(_0x1b20,0x66));var _0x01b2=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x1b20[_0x2c91e9];return _0x13f0ff;};'use strict';var client=require('../client');exports[_0x01b2('0x0')]=function(){return function(){return client[_0x01b2('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x01b2('0x2'),_0x01b2('0x3')],'include':[{'model':_0x01b2('0x4'),'as':_0x01b2('0x5'),'attributes':['id',_0x01b2('0x6'),_0x01b2('0x7'),_0x01b2('0x8')]}]},'log':_0x01b2('0x0')});};};
\ No newline at end of file
+var _0x6596=['getChatQueues','GetChatQueue','name','timeout','strategy','User','Agents','chatPause','../client'];(function(_0x5a74f9,_0x4ae591){var _0x3ad2cb=function(_0x1f22fe){while(--_0x1f22fe){_0x5a74f9['push'](_0x5a74f9['shift']());}};_0x3ad2cb(++_0x4ae591);}(_0x6596,0x1d3));var _0x6659=function(_0x668a15,_0x308549){_0x668a15=_0x668a15-0x0;var _0x525315=_0x6596[_0x668a15];return _0x525315;};'use strict';var client=require(_0x6659('0x0'));exports[_0x6659('0x1')]=function(){return function(){return client['Request'](_0x6659('0x2'),{'options':{'raw':![],'attributes':['id',_0x6659('0x3'),_0x6659('0x4'),_0x6659('0x5')],'include':[{'model':_0x6659('0x6'),'as':_0x6659('0x7'),'attributes':['id','name','online',_0x6659('0x8')]}]},'log':_0x6659('0x1')});};};
\ No newline at end of file
index a3739e6..5e123b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0cc=['UpdateChatQueueReport','DESC','../client','Request','update'];(function(_0x2ead1f,_0x38e9d2){var _0x270818=function(_0x2a3953){while(--_0x2a3953){_0x2ead1f['push'](_0x2ead1f['shift']());}};_0x270818(++_0x38e9d2);}(_0xf0cc,0xa7));var _0xcf0c=function(_0x158cac,_0x14f087){_0x158cac=_0x158cac-0x0;var _0x4b3008=_0xf0cc[_0x158cac];return _0x4b3008;};'use strict';var client=require(_0xcf0c('0x0'));exports['create']=function(_0x5111f1){return client[_0xcf0c('0x1')]('CreateChatQueueReport',{'body':_0x5111f1,'log':'CreateChatQueueReport'});};exports[_0xcf0c('0x2')]=function(_0x3b6456,_0x4e56db){return client['Request'](_0xcf0c('0x3'),{'body':_0x4e56db,'options':{'where':{'uniqueid':_0x3b6456},'order':[['id',_0xcf0c('0x4')]],'limit':0x1},'log':_0xcf0c('0x3')});};
\ No newline at end of file
+var _0x8fcf=['DESC','../client','create','CreateChatQueueReport','Request','UpdateChatQueueReport'];(function(_0xd13a88,_0x3c5269){var _0x1c993c=function(_0x245af5){while(--_0x245af5){_0xd13a88['push'](_0xd13a88['shift']());}};_0x1c993c(++_0x3c5269);}(_0x8fcf,0x1db));var _0xf8fc=function(_0x2207d3,_0x1ab43b){_0x2207d3=_0x2207d3-0x0;var _0x1d45b0=_0x8fcf[_0x2207d3];return _0x1d45b0;};'use strict';var client=require(_0xf8fc('0x0'));exports[_0xf8fc('0x1')]=function(_0x32229e){return client['Request'](_0xf8fc('0x2'),{'body':_0x32229e,'log':'CreateChatQueueReport'});};exports['update']=function(_0x5a5263,_0x33afd1){return client[_0xf8fc('0x3')](_0xf8fc('0x4'),{'body':_0x33afd1,'options':{'where':{'uniqueid':_0x5a5263},'order':[['id',_0xf8fc('0x5')]],'limit':0x1},'log':_0xf8fc('0x4')});};
\ No newline at end of file
index 650b382..1c58fc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x4024a8,_0x24792b){var _0x4d7178=function(_0xdb2f5d){while(--_0xdb2f5d){_0x4024a8['push'](_0x4024a8['shift']());}};_0x4d7178(++_0x24792b);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x1ebc6c,_0x58a00b){var _0x3a826d=function(_0x27d7eb){while(--_0x27d7eb){_0x1ebc6c['push'](_0x1ebc6c['shift']());}};_0x3a826d(++_0x58a00b);}(_0x7a54,0x106));var _0x47a5=function(_0x2942c7,_0x1c874e){_0x2942c7=_0x2942c7-0x0;var _0x160bff=_0x7a54[_0x2942c7];return _0x160bff;};'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
index ba39496..f44ff98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7808=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x3bab09,_0x217c29){var _0x164376=function(_0x277730){while(--_0x277730){_0x3bab09['push'](_0x3bab09['shift']());}};_0x164376(++_0x217c29);}(_0x7808,0x123));var _0x8780=function(_0x21cd23,_0x471ee9){_0x21cd23=_0x21cd23-0x0;var _0x2b65d5=_0x7808[_0x21cd23];return _0x2b65d5;};'use strict';var client=require(_0x8780('0x0'));exports[_0x8780('0x1')]=function(_0x303b53){return client[_0x8780('0x2')](_0x8780('0x3'),{'body':_0x303b53,'log':_0x8780('0x4')});};
\ No newline at end of file
+var _0xec27=['createFaxMessage','CreateFaxMessage'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xec27,0x87));var _0x7ec2=function(_0x468c57,_0x2607bf){_0x468c57=_0x468c57-0x0;var _0x5ce052=_0xec27[_0x468c57];return _0x5ce052;};'use strict';var client=require('../client');exports['create']=function(_0x46e924){return client['Request'](_0x7ec2('0x0'),{'body':_0x46e924,'log':_0x7ec2('0x1')});};
\ No newline at end of file
index e86a5aa..facd0b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec00=['../client','getFaxQueues','Request','timeout','strategy','Agents','name','faxPause'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xec00,0x1b8));var _0x0ec0=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xec00[_0x1eda20];return _0x31b953;};'use strict';var client=require(_0x0ec0('0x0'));exports[_0x0ec0('0x1')]=function(){return function(){return client[_0x0ec0('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id','name',_0x0ec0('0x3'),_0x0ec0('0x4')],'include':[{'model':'User','as':_0x0ec0('0x5'),'attributes':['id',_0x0ec0('0x6'),'online',_0x0ec0('0x7')]}]},'log':_0x0ec0('0x1')});};};
\ No newline at end of file
+var _0x793f=['name','timeout','strategy','Agents','faxPause','../client','getFaxQueues','Request'];(function(_0x1a724c,_0x554d13){var _0x3ef936=function(_0x72a9c7){while(--_0x72a9c7){_0x1a724c['push'](_0x1a724c['shift']());}};_0x3ef936(++_0x554d13);}(_0x793f,0x1c5));var _0xf793=function(_0x449a97,_0x480426){_0x449a97=_0x449a97-0x0;var _0x52b25d=_0x793f[_0x449a97];return _0x52b25d;};'use strict';var client=require(_0xf793('0x0'));exports[_0xf793('0x1')]=function(){return function(){return client[_0xf793('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0xf793('0x3'),_0xf793('0x4'),_0xf793('0x5')],'include':[{'model':'User','as':_0xf793('0x6'),'attributes':['id','name','online',_0xf793('0x7')]}]},'log':_0xf793('0x1')});};};
\ No newline at end of file
index 64afc87..3a4e706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9105=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x4b6d4d,_0x211c58){var _0x2a109c=function(_0x41c794){while(--_0x41c794){_0x4b6d4d['push'](_0x4b6d4d['shift']());}};_0x2a109c(++_0x211c58);}(_0x9105,0x170));var _0x5910=function(_0x17685b,_0x38a523){_0x17685b=_0x17685b-0x0;var _0x1c04ae=_0x9105[_0x17685b];return _0x1c04ae;};'use strict';var client=require(_0x5910('0x0'));exports[_0x5910('0x1')]=function(_0x5754f0){return client[_0x5910('0x2')](_0x5910('0x3'),{'body':_0x5754f0,'log':_0x5910('0x3')});};exports[_0x5910('0x4')]=function(_0x286390,_0x511168){return client[_0x5910('0x2')](_0x5910('0x5'),{'body':_0x511168,'options':{'where':{'uniqueid':_0x286390},'order':[['id',_0x5910('0x6')]],'limit':0x1},'log':_0x5910('0x5')});};
\ No newline at end of file
+var _0x72ff=['UpdateFaxQueueReport','DESC','create','Request','CreateFaxQueueReport','update'];(function(_0x2cf258,_0x4890de){var _0xbc8539=function(_0x3ffce3){while(--_0x3ffce3){_0x2cf258['push'](_0x2cf258['shift']());}};_0xbc8539(++_0x4890de);}(_0x72ff,0xc2));var _0xf72f=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x72ff[_0x50a0c2];return _0x5ebadd;};'use strict';var client=require('../client');exports[_0xf72f('0x0')]=function(_0x17c3d9){return client[_0xf72f('0x1')](_0xf72f('0x2'),{'body':_0x17c3d9,'log':'CreateFaxQueueReport'});};exports[_0xf72f('0x3')]=function(_0x39a06e,_0x3f69fa){return client[_0xf72f('0x1')](_0xf72f('0x4'),{'body':_0x3f69fa,'options':{'where':{'uniqueid':_0x39a06e},'order':[['id',_0xf72f('0x5')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
index 86623db..69a3dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbaa=['Interval','Intervals','interval','Request','name'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xfbaa,0x143));var _0xafba=function(_0x561771,_0x554760){_0x561771=_0x561771-0x0;var _0x54d16e=_0xfbaa[_0x561771];return _0x54d16e;};'use strict';var client=require('../client');exports['getIntervals']=function(){return function(){return client[_0xafba('0x0')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xafba('0x1')],'include':[{'model':_0xafba('0x2'),'as':_0xafba('0x3'),'attributes':['id',_0xafba('0x1'),_0xafba('0x4')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x60c1=['GetInterval','name','Interval','Intervals','interval','../client','getIntervals'];(function(_0x322a90,_0x41632d){var _0x38367e=function(_0x45311e){while(--_0x45311e){_0x322a90['push'](_0x322a90['shift']());}};_0x38367e(++_0x41632d);}(_0x60c1,0x1c5));var _0x160c=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x60c1[_0x178e48];return _0x440d7e;};'use strict';var client=require(_0x160c('0x0'));exports[_0x160c('0x1')]=function(){return function(){return client['Request'](_0x160c('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x160c('0x3')],'include':[{'model':_0x160c('0x4'),'as':_0x160c('0x5'),'attributes':['id',_0x160c('0x3'),_0x160c('0x6')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index 723f714..6a238c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe820=['../client','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x527d89,_0x34b735){var _0x3d5fd9=function(_0x36b9a8){while(--_0x36b9a8){_0x527d89['push'](_0x527d89['shift']());}};_0x3d5fd9(++_0x34b735);}(_0xe820,0xd2));var _0x0e82=function(_0x430010,_0x464237){_0x430010=_0x430010-0x0;var _0x3a5859=_0xe820[_0x430010];return _0x3a5859;};'use strict';var client=require(_0x0e82('0x0'));exports['update']=function(_0x908a54,_0x4e6b50){return client['Request'](_0x0e82('0x1'),{'body':_0x4e6b50,'options':{'where':{'id':_0x908a54}},'log':_0x0e82('0x2')});};exports[_0x0e82('0x3')]=function(_0x59b28d,_0xc6d61e){return client['Request'](_0x0e82('0x4'),{'body':_0xc6d61e,'options':{'where':{'id':_0x59b28d}},'log':_0x0e82('0x5')});};
\ No newline at end of file
+var _0x2ef3=['../client','update','Request','UpdateMailInteraction','addTags','AddTagsToMailInteraction'];(function(_0xd1f854,_0x532346){var _0x548294=function(_0x4be823){while(--_0x4be823){_0xd1f854['push'](_0xd1f854['shift']());}};_0x548294(++_0x532346);}(_0x2ef3,0xba));var _0x32ef=function(_0x30aee8,_0x12fa9d){_0x30aee8=_0x30aee8-0x0;var _0x4f234d=_0x2ef3[_0x30aee8];return _0x4f234d;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(_0x47513a,_0x26e56e){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'body':_0x26e56e,'options':{'where':{'id':_0x47513a}},'log':'updateMailInteraction'});};exports[_0x32ef('0x4')]=function(_0x38b7f3,_0x524ab6){return client[_0x32ef('0x2')](_0x32ef('0x5'),{'body':_0x524ab6,'options':{'where':{'id':_0x38b7f3}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 009fa3c..701f5b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6266=['../client','create','Request','createMailMessage'];(function(_0x3209cf,_0x3e9fde){var _0x1123e7=function(_0x486f0a){while(--_0x486f0a){_0x3209cf['push'](_0x3209cf['shift']());}};_0x1123e7(++_0x3e9fde);}(_0x6266,0xa0));var _0x6626=function(_0xa27875,_0x2bbbdd){_0xa27875=_0xa27875-0x0;var _0x30362b=_0x6266[_0xa27875];return _0x30362b;};'use strict';var client=require(_0x6626('0x0'));exports[_0x6626('0x1')]=function(_0x27c8bb){return client[_0x6626('0x2')]('CreateMailMessage',{'body':_0x27c8bb,'log':_0x6626('0x3')});};
\ No newline at end of file
+var _0xa63a=['../client','Request','CreateMailMessage','createMailMessage'];(function(_0x5eaf6f,_0x7e795c){var _0x263f7c=function(_0x2a290c){while(--_0x2a290c){_0x5eaf6f['push'](_0x5eaf6f['shift']());}};_0x263f7c(++_0x7e795c);}(_0xa63a,0x148));var _0xaa63=function(_0x58db4e,_0x439d8d){_0x58db4e=_0x58db4e-0x0;var _0x40139a=_0xa63a[_0x58db4e];return _0x40139a;};'use strict';var client=require(_0xaa63('0x0'));exports['create']=function(_0x82a895){return client[_0xaa63('0x1')](_0xaa63('0x2'),{'body':_0x82a895,'log':_0xaa63('0x3')});};
\ No newline at end of file
index bbde399..c9bccc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa067=['online','mailPause','../client','getMailQueues','GetMailQueue','timeout','strategy','User','Agents','name'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0xa067,0x16a));var _0x7a06=function(_0x44c973,_0x2a56e6){_0x44c973=_0x44c973-0x0;var _0x5a1942=_0xa067[_0x44c973];return _0x5a1942;};'use strict';var client=require(_0x7a06('0x0'));exports[_0x7a06('0x1')]=function(){return function(){return client['Request'](_0x7a06('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x7a06('0x3'),_0x7a06('0x4')],'include':[{'model':_0x7a06('0x5'),'as':_0x7a06('0x6'),'attributes':['id',_0x7a06('0x7'),_0x7a06('0x8'),_0x7a06('0x9')]}]},'log':_0x7a06('0x1')});};};
\ No newline at end of file
+var _0xa6cd=['GetMailQueue','timeout','strategy','User','Agents','online','../client'];(function(_0x155c64,_0x26ff95){var _0x1f154a=function(_0xbc46e4){while(--_0xbc46e4){_0x155c64['push'](_0x155c64['shift']());}};_0x1f154a(++_0x26ff95);}(_0xa6cd,0x110));var _0xda6c=function(_0x28ade5,_0x550a51){_0x28ade5=_0x28ade5-0x0;var _0x56832c=_0xa6cd[_0x28ade5];return _0x56832c;};'use strict';var client=require(_0xda6c('0x0'));exports['getMailQueues']=function(){return function(){return client['Request'](_0xda6c('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xda6c('0x2'),_0xda6c('0x3')],'include':[{'model':_0xda6c('0x4'),'as':_0xda6c('0x5'),'attributes':['id','name',_0xda6c('0x6'),'mailPause']}]},'log':'getMailQueues'});};};
\ No newline at end of file
index db64983..029d969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d95=['UpdateMailQueueReport','DESC','../client','create','CreateMailQueueReport','update','Request'];(function(_0x185f00,_0x1f9754){var _0x2ef08e=function(_0x1c3c93){while(--_0x1c3c93){_0x185f00['push'](_0x185f00['shift']());}};_0x2ef08e(++_0x1f9754);}(_0x7d95,0x1ec));var _0x57d9=function(_0x4a3ee3,_0x304512){_0x4a3ee3=_0x4a3ee3-0x0;var _0x56d16d=_0x7d95[_0x4a3ee3];return _0x56d16d;};'use strict';var client=require(_0x57d9('0x0'));exports[_0x57d9('0x1')]=function(_0x520d1c){return client['Request'](_0x57d9('0x2'),{'body':_0x520d1c,'log':_0x57d9('0x2')});};exports[_0x57d9('0x3')]=function(_0x526ead,_0x5564c9){return client[_0x57d9('0x4')](_0x57d9('0x5'),{'body':_0x5564c9,'options':{'where':{'uniqueid':_0x526ead},'order':[['id',_0x57d9('0x6')]],'limit':0x1},'log':_0x57d9('0x5')});};
\ No newline at end of file
+var _0xe527=['DESC','../client','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x5032f8,_0x2cac1b){var _0x3d4fc7=function(_0xccf84f){while(--_0xccf84f){_0x5032f8['push'](_0x5032f8['shift']());}};_0x3d4fc7(++_0x2cac1b);}(_0xe527,0x6d));var _0x7e52=function(_0x5a9b04,_0xb01d09){_0x5a9b04=_0x5a9b04-0x0;var _0x2ac594=_0xe527[_0x5a9b04];return _0x2ac594;};'use strict';var client=require(_0x7e52('0x0'));exports['create']=function(_0x2b793a){return client[_0x7e52('0x1')](_0x7e52('0x2'),{'body':_0x2b793a,'log':_0x7e52('0x2')});};exports[_0x7e52('0x3')]=function(_0x293cbd,_0x3777f3){return client[_0x7e52('0x1')](_0x7e52('0x4'),{'body':_0x3777f3,'options':{'where':{'uniqueid':_0x293cbd},'order':[['id',_0x7e52('0x5')]],'limit':0x1},'log':_0x7e52('0x4')});};
\ No newline at end of file
index d30a186..8b64562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc31a=['update','Request','UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client'];(function(_0x4da18a,_0x14ff2c){var _0x5ab7f0=function(_0x2838ef){while(--_0x2838ef){_0x4da18a['push'](_0x4da18a['shift']());}};_0x5ab7f0(++_0x14ff2c);}(_0xc31a,0x1b1));var _0xac31=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc31a[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xac31('0x0'));exports[_0xac31('0x1')]=function(_0xd774e3,_0x5c709a){return client[_0xac31('0x2')](_0xac31('0x3'),{'body':_0x5c709a,'options':{'where':{'id':_0xd774e3}},'log':'updateOpenchannelInteraction'});};exports[_0xac31('0x4')]=function(_0x316fd6,_0x43e553){return client[_0xac31('0x2')](_0xac31('0x5'),{'body':_0x43e553,'options':{'where':{'id':_0x316fd6}},'log':_0xac31('0x6')});};
\ No newline at end of file
+var _0xe613=['addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x327dbd,_0x2bd34d){var _0x58775e=function(_0x5a9d66){while(--_0x5a9d66){_0x327dbd['push'](_0x327dbd['shift']());}};_0x58775e(++_0x2bd34d);}(_0xe613,0x1e8));var _0x3e61=function(_0x3ef54d,_0x14e255){_0x3ef54d=_0x3ef54d-0x0;var _0x51245d=_0xe613[_0x3ef54d];return _0x51245d;};'use strict';var client=require(_0x3e61('0x0'));exports[_0x3e61('0x1')]=function(_0x1ae2f4,_0x2636b5){return client['Request']('UpdateOpenchannelInteraction',{'body':_0x2636b5,'options':{'where':{'id':_0x1ae2f4}},'log':'updateOpenchannelInteraction'});};exports[_0x3e61('0x2')]=function(_0x5c39a2,_0x172d6c){return client['Request'](_0x3e61('0x3'),{'body':_0x172d6c,'options':{'where':{'id':_0x5c39a2}},'log':_0x3e61('0x4')});};
\ No newline at end of file
index de1afe1..06ae0aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e5b=['create','CreateOpenchannelMessage','createOpenchannelMessage','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e5b,0x123));var _0xb4e5=function(_0x1edd3d,_0x5ba614){_0x1edd3d=_0x1edd3d-0x0;var _0x3654f1=_0x4e5b[_0x1edd3d];return _0x3654f1;};'use strict';var client=require(_0xb4e5('0x0'));exports[_0xb4e5('0x1')]=function(_0x221ac6){return client['Request'](_0xb4e5('0x2'),{'body':_0x221ac6,'log':_0xb4e5('0x3')});};
\ No newline at end of file
+var _0xd6db=['createOpenchannelMessage','../client','create','CreateOpenchannelMessage'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0xd6db,0x1cd));var _0xbd6d=function(_0x1ac62a,_0x483e3a){_0x1ac62a=_0x1ac62a-0x0;var _0x641d2c=_0xd6db[_0x1ac62a];return _0x641d2c;};'use strict';var client=require(_0xbd6d('0x0'));exports[_0xbd6d('0x1')]=function(_0x3c5d39){return client['Request'](_0xbd6d('0x2'),{'body':_0x3c5d39,'log':_0xbd6d('0x3')});};
\ No newline at end of file
index 8af217c..c9a8f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd311=['Agents','name','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','strategy','User'];(function(_0x3123f,_0x395115){var _0x30c3cf=function(_0x46ba1f){while(--_0x46ba1f){_0x3123f['push'](_0x3123f['shift']());}};_0x30c3cf(++_0x395115);}(_0xd311,0x143));var _0x1d31=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd311[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x1d31('0x0'));exports[_0x1d31('0x1')]=function(){return function(){return client[_0x1d31('0x2')](_0x1d31('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x1d31('0x4'),_0x1d31('0x5')],'include':[{'model':_0x1d31('0x6'),'as':_0x1d31('0x7'),'attributes':['id',_0x1d31('0x8'),_0x1d31('0x9'),_0x1d31('0xa')]}]},'log':_0x1d31('0x1')});};};
\ No newline at end of file
+var _0xfde3=['getOpenchannelQueues','../client','name','timeout','strategy','User','openchannelPause'];(function(_0x16f32b,_0x58d7b7){var _0x341c46=function(_0x33c7f6){while(--_0x33c7f6){_0x16f32b['push'](_0x16f32b['shift']());}};_0x341c46(++_0x58d7b7);}(_0xfde3,0xe8));var _0x3fde=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xfde3[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x3fde('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client['Request']('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x3fde('0x1'),_0x3fde('0x2'),_0x3fde('0x3')],'include':[{'model':_0x3fde('0x4'),'as':'Agents','attributes':['id',_0x3fde('0x1'),'online',_0x3fde('0x5')]}]},'log':_0x3fde('0x6')});};};
\ No newline at end of file
index a15d9c4..6624727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd614=['UpdateOpenchannelQueueReport','DESC','../client','create','Request'];(function(_0x4573cc,_0x5153d7){var _0x5815e6=function(_0x13827d){while(--_0x13827d){_0x4573cc['push'](_0x4573cc['shift']());}};_0x5815e6(++_0x5153d7);}(_0xd614,0x110));var _0x4d61=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd614[_0x2641f9];return _0x585741;};'use strict';var client=require(_0x4d61('0x0'));exports[_0x4d61('0x1')]=function(_0x43a523){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x43a523,'log':'CreateOpenchannelQueueReport'});};exports['update']=function(_0x5c598f,_0x34125c){return client[_0x4d61('0x2')](_0x4d61('0x3'),{'body':_0x34125c,'options':{'where':{'uniqueid':_0x5c598f},'order':[['id',_0x4d61('0x4')]],'limit':0x1},'log':_0x4d61('0x3')});};
\ No newline at end of file
+var _0xaa03=['UpdateOpenchannelQueueReport','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0x5dbfe6,_0x2c72bc){var _0x1a674d=function(_0x13be7c){while(--_0x13be7c){_0x5dbfe6['push'](_0x5dbfe6['shift']());}};_0x1a674d(++_0x2c72bc);}(_0xaa03,0xdf));var _0x3aa0=function(_0x2dbf6a,_0x312238){_0x2dbf6a=_0x2dbf6a-0x0;var _0x1248e9=_0xaa03[_0x2dbf6a];return _0x1248e9;};'use strict';var client=require(_0x3aa0('0x0'));exports[_0x3aa0('0x1')]=function(_0x40607d){return client[_0x3aa0('0x2')](_0x3aa0('0x3'),{'body':_0x40607d,'log':_0x3aa0('0x3')});};exports[_0x3aa0('0x4')]=function(_0x18688f,_0x5008ef){return client['Request'](_0x3aa0('0x5'),{'body':_0x5008ef,'options':{'where':{'uniqueid':_0x18688f},'order':[['id','DESC']],'limit':0x1},'log':_0x3aa0('0x5')});};
\ No newline at end of file
index 7463e65..cd1468d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c7=['Request','AddTagsToSmsInteraction','../client','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x463683,_0x403c60){var _0x1c7fa1=function(_0x224c11){while(--_0x224c11){_0x463683['push'](_0x463683['shift']());}};_0x1c7fa1(++_0x403c60);}(_0x47c7,0x1ab));var _0x747c=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x47c7[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0x747c('0x0'));exports['update']=function(_0x1e4b3d,_0x63d85a){return client['Request'](_0x747c('0x1'),{'body':_0x63d85a,'options':{'where':{'id':_0x1e4b3d}},'log':_0x747c('0x2')});};exports['addTags']=function(_0x3313cd,_0x3c0c0){return client[_0x747c('0x3')](_0x747c('0x4'),{'body':_0x3c0c0,'options':{'where':{'id':_0x3313cd}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0x3148=['Request','UpdateSmsInteraction','updateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0x5eae0c,_0x36d39b){var _0x1695ed=function(_0x265afa){while(--_0x265afa){_0x5eae0c['push'](_0x5eae0c['shift']());}};_0x1695ed(++_0x36d39b);}(_0x3148,0x1d3));var _0x8314=function(_0x12a554,_0x3d7ef8){_0x12a554=_0x12a554-0x0;var _0x244ba0=_0x3148[_0x12a554];return _0x244ba0;};'use strict';var client=require(_0x8314('0x0'));exports[_0x8314('0x1')]=function(_0x53afdc,_0x932127){return client[_0x8314('0x2')](_0x8314('0x3'),{'body':_0x932127,'options':{'where':{'id':_0x53afdc}},'log':_0x8314('0x4')});};exports['addTags']=function(_0x35ee55,_0x41e9fd){return client[_0x8314('0x2')](_0x8314('0x5'),{'body':_0x41e9fd,'options':{'where':{'id':_0x35ee55}},'log':_0x8314('0x6')});};
\ No newline at end of file
index d83823b..3a708ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6959=['CreateSmsMessage','createSmsMessage','../client','create','Request'];(function(_0x50bc45,_0x4de593){var _0x3fc902=function(_0x53fb0a){while(--_0x53fb0a){_0x50bc45['push'](_0x50bc45['shift']());}};_0x3fc902(++_0x4de593);}(_0x6959,0x12e));var _0x9695=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x6959[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x9695('0x0'));exports[_0x9695('0x1')]=function(_0x432181){return client[_0x9695('0x2')](_0x9695('0x3'),{'body':_0x432181,'log':_0x9695('0x4')});};
\ No newline at end of file
+var _0x0a13=['CreateSmsMessage','createSmsMessage'];(function(_0x240bb4,_0x9c6acd){var _0x4f471b=function(_0x3de291){while(--_0x3de291){_0x240bb4['push'](_0x240bb4['shift']());}};_0x4f471b(++_0x9c6acd);}(_0x0a13,0x1d8));var _0x30a1=function(_0x119b96,_0x587acd){_0x119b96=_0x119b96-0x0;var _0x516cbf=_0x0a13[_0x119b96];return _0x516cbf;};'use strict';var client=require('../client');exports['create']=function(_0x148b01){return client['Request'](_0x30a1('0x0'),{'body':_0x148b01,'log':_0x30a1('0x1')});};
\ No newline at end of file
index 1f020c3..3d8f533 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(_0x459c75,_0x7ae7ce){var _0x480b89=function(_0x43cc0b){while(--_0x43cc0b){_0x459c75['push'](_0x459c75['shift']());}};_0x480b89(++_0x7ae7ce);}(_0xe706,0xa3));var _0x6e70=function(_0x16af01,_0x9c623c){_0x16af01=_0x16af01-0x0;var _0x4d4b9a=_0xe706[_0x16af01];return _0x4d4b9a;};'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(_0x4663cf,_0x4045b2){var _0x5e7f76=function(_0x1e01ae){while(--_0x1e01ae){_0x4663cf['push'](_0x4663cf['shift']());}};_0x5e7f76(++_0x4045b2);}(_0x70e0,0x17b));var _0x070e=function(_0x3bd51d,_0xd28f17){_0x3bd51d=_0x3bd51d-0x0;var _0x1ad531=_0x70e0[_0x3bd51d];return _0x1ad531;};'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 0055808..bc964f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x492ed8,_0x51f1fb){var _0x497c17=function(_0x5aaaf2){while(--_0x5aaaf2){_0x492ed8['push'](_0x492ed8['shift']());}};_0x497c17(++_0x51f1fb);}(_0x55ca,0x126));var _0xa55c=function(_0x12807b,_0x7c0dfb){_0x12807b=_0x12807b-0x0;var _0x5a676e=_0x55ca[_0x12807b];return _0x5a676e;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
+var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x44d693,_0x305943){var _0x3d3a6c=function(_0x5ad0bc){while(--_0x5ad0bc){_0x44d693['push'](_0x44d693['shift']());}};_0x3d3a6c(++_0x305943);}(_0x3e74,0x175));var _0x43e7=function(_0xeafef5,_0x38dfa6){_0xeafef5=_0xeafef5-0x0;var _0xeefb33=_0x3e74[_0xeafef5];return _0xeefb33;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
index ce8b031..8bbeae6 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(_0x1829c2,_0x41dbcd){var _0xb397e9=function(_0x46b519){while(--_0x46b519){_0x1829c2['push'](_0x1829c2['shift']());}};_0xb397e9(++_0x41dbcd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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(_0x5b3e67,_0x4651cc){var _0x530b3e=function(_0x15aa7d){while(--_0x15aa7d){_0x5b3e67['push'](_0x5b3e67['shift']());}};_0x530b3e(++_0x4651cc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'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 d8191b6..d748b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3837=['update','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0x3837,0x1d1));var _0x7383=function(_0x865612,_0x2318b8){_0x865612=_0x865612-0x0;var _0x20ab20=_0x3837[_0x865612];return _0x20ab20;};'use strict';var client=require('../client');exports[_0x7383('0x0')]=function(_0x54e81e,_0xccf9d4){return client['Request'](_0x7383('0x1'),{'body':_0xccf9d4,'options':{'where':{'id':_0x54e81e}},'log':_0x7383('0x2')});};exports[_0x7383('0x3')]=function(_0x227ab2,_0xf57468){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0xf57468,'options':{'where':{'id':_0x227ab2}},'log':_0x7383('0x4')});};
\ No newline at end of file
+var _0x539d=['updateWhatsappInteraction','addTags','Request','addTagsToWhatsappInteraction','../client'];(function(_0x11a927,_0x4c7770){var _0xfac8f6=function(_0x51e226){while(--_0x51e226){_0x11a927['push'](_0x11a927['shift']());}};_0xfac8f6(++_0x4c7770);}(_0x539d,0x17b));var _0xd539=function(_0x3fd531,_0x538738){_0x3fd531=_0x3fd531-0x0;var _0x5bd9db=_0x539d[_0x3fd531];return _0x5bd9db;};'use strict';var client=require(_0xd539('0x0'));exports['update']=function(_0x2bd59f,_0x1c859a){return client['Request']('UpdateWhatsappInteraction',{'body':_0x1c859a,'options':{'where':{'id':_0x2bd59f}},'log':_0xd539('0x1')});};exports[_0xd539('0x2')]=function(_0xe8e6e4,_0x19ae25){return client[_0xd539('0x3')]('AddTagsToWhatsappInteraction',{'body':_0x19ae25,'options':{'where':{'id':_0xe8e6e4}},'log':_0xd539('0x4')});};
\ No newline at end of file
index 463369e..6f75b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x312a=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x1194d1,_0x71821b){var _0x24c777=function(_0x229719){while(--_0x229719){_0x1194d1['push'](_0x1194d1['shift']());}};_0x24c777(++_0x71821b);}(_0x312a,0x191));var _0xa312=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x312a[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xa312('0x0'));exports[_0xa312('0x1')]=function(_0x111913){return client[_0xa312('0x2')](_0xa312('0x3'),{'body':_0x111913,'log':_0xa312('0x4')});};
\ No newline at end of file
+var _0x7a44=['create','Request','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0xddcb6f,_0x34f5c1){var _0x22a491=function(_0x240b1c){while(--_0x240b1c){_0xddcb6f['push'](_0xddcb6f['shift']());}};_0x22a491(++_0x34f5c1);}(_0x7a44,0x1a8));var _0x47a4=function(_0x560b88,_0x3ee616){_0x560b88=_0x560b88-0x0;var _0x2b229d=_0x7a44[_0x560b88];return _0x2b229d;};'use strict';var client=require(_0x47a4('0x0'));exports[_0x47a4('0x1')]=function(_0x1dac61){return client[_0x47a4('0x2')](_0x47a4('0x3'),{'body':_0x1dac61,'log':_0x47a4('0x4')});};
\ No newline at end of file
index f347907..a521608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92f3=['online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','Agents','name'];(function(_0x15876a,_0x15383d){var _0xbd900f=function(_0x103e59){while(--_0x103e59){_0x15876a['push'](_0x15876a['shift']());}};_0xbd900f(++_0x15383d);}(_0x92f3,0x17c));var _0x392f=function(_0x489646,_0x2fed71){_0x489646=_0x489646-0x0;var _0x45de80=_0x92f3[_0x489646];return _0x45de80;};'use strict';var client=require(_0x392f('0x0'));exports[_0x392f('0x1')]=function(){return function(){return client[_0x392f('0x2')](_0x392f('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x392f('0x4'),'strategy'],'include':[{'model':'User','as':_0x392f('0x5'),'attributes':['id',_0x392f('0x6'),_0x392f('0x7'),_0x392f('0x8')]}]},'log':_0x392f('0x1')});};};
\ No newline at end of file
+var _0x8560=['User','online','whatsappPause','getWhatsappQueues','GetWhatsappQueue','name','timeout','strategy'];(function(_0x434138,_0x74656){var _0x40ebdd=function(_0x2b8c41){while(--_0x2b8c41){_0x434138['push'](_0x434138['shift']());}};_0x40ebdd(++_0x74656);}(_0x8560,0xe3));var _0x0856=function(_0x34933a,_0x327378){_0x34933a=_0x34933a-0x0;var _0x36abb4=_0x8560[_0x34933a];return _0x36abb4;};'use strict';var client=require('../client');exports[_0x0856('0x0')]=function(){return function(){return client['Request'](_0x0856('0x1'),{'options':{'raw':![],'attributes':['id',_0x0856('0x2'),_0x0856('0x3'),_0x0856('0x4')],'include':[{'model':_0x0856('0x5'),'as':'Agents','attributes':['id','name',_0x0856('0x6'),_0x0856('0x7')]}]},'log':_0x0856('0x0')});};};
\ No newline at end of file
index dec2fab..4d8939e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ec=['DESC','UpdateWhatsappQueueReport','create','Request','CreateWhatsappQueueReport','update'];(function(_0x593564,_0x43583f){var _0x211a89=function(_0x40afd6){while(--_0x40afd6){_0x593564['push'](_0x593564['shift']());}};_0x211a89(++_0x43583f);}(_0x67ec,0xbc));var _0xc67e=function(_0x2834bc,_0x164e6d){_0x2834bc=_0x2834bc-0x0;var _0x345a35=_0x67ec[_0x2834bc];return _0x345a35;};'use strict';var client=require('../client');exports[_0xc67e('0x0')]=function(_0x405fe1){return client[_0xc67e('0x1')](_0xc67e('0x2'),{'body':_0x405fe1,'log':_0xc67e('0x2')});};exports[_0xc67e('0x3')]=function(_0x48bd99,_0x5c51f7){return client[_0xc67e('0x1')]('UpdateWhatsappQueueReport',{'body':_0x5c51f7,'options':{'where':{'uniqueid':_0x48bd99},'order':[['id',_0xc67e('0x4')]],'limit':0x1},'log':_0xc67e('0x5')});};
\ No newline at end of file
+var _0x3435=['create','update','Request','../client'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x3435,0x12b));var _0x5343=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x3435[_0x4b055c];return _0x4b62bb;};'use strict';var client=require(_0x5343('0x0'));exports[_0x5343('0x1')]=function(_0x5c055f){return client['Request']('CreateWhatsappQueueReport',{'body':_0x5c055f,'log':'CreateWhatsappQueueReport'});};exports[_0x5343('0x2')]=function(_0x1c44fa,_0x2c274f){return client[_0x5343('0x3')]('UpdateWhatsappQueueReport',{'body':_0x2c274f,'options':{'where':{'uniqueid':_0x1c44fa},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 185e353..5de9677 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3cb=['timeout','createQueue','atimeout','channel','format','START:%s','rules','close','next','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','stop','find','agents'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xe3cb,0x1a5));var _0xbe3c=function(_0x17a9a3,_0x4ad234){_0x17a9a3=_0x17a9a3-0x0;var _0x29b9a1=_0xe3cb[_0x17a9a3];return _0x29b9a1;};'use strict';var schema=require(_0xbe3c('0x0'));var _=require(_0xbe3c('0x1'));var util=require(_0xbe3c('0x2'));var seqqueue=require(_0xbe3c('0x3'));var logger=require('../../../../config/logger')(_0xbe3c('0x4'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0xbe3c('0x5'),'required':!![],'message':_0xbe3c('0x6')},'timeout':{'type':'number','message':_0xbe3c('0x7')}});function writeLog(_0xff4d63,_0x2f3e35,_0x49fcc2){return logger[_0xbe3c('0x8')](util['format'](_0xbe3c('0x9'),_0xff4d63,_0x2f3e35[_0xbe3c('0xa')],_0x49fcc2));}function handleFindAgent(_0x48f781){return function(_0x1d5107){return _0x1d5107[_0xbe3c('0xa')][_0xbe3c('0xb')]()===_0x48f781[_0xbe3c('0xb')]();};}exports[_0xbe3c('0xc')]=function(_0x28cde1,_0x2d90ca,_0x1b8731,_0x478a4b){return function(_0x56a421){try{var _0x24e06e={'name':_0x2d90ca[0x0],'timeout':_0x2d90ca[0x1]};var _0x3c62f7=queue[_0xbe3c('0x0')](_0x24e06e,{'typecast':!![]});if(_0x3c62f7[_0xbe3c('0xd')]){logger[_0xbe3c('0xe')](_0xbe3c('0xf'),_0x28cde1,_[_0xbe3c('0x10')](_0x3c62f7,_0xbe3c('0x11'))['join'](',\x20'));_0x56a421[_0xbe3c('0x12')]();}else{var _0x214870=_[_0xbe3c('0x13')](_0x1b8731[_0xbe3c('0x14')],handleFindAgent(_0x24e06e[_0xbe3c('0xa')]));if(_0x214870){var _0x323238=(_0x24e06e[_0xbe3c('0x15')]||0xa)*0x3e8;var _0x9695b9,_0x107381;var _0x2a9d9f=seqqueue[_0xbe3c('0x16')](_0x323238);_0x2a9d9f['id']=_0x28cde1;_0x2a9d9f[_0xbe3c('0x17')]=_0x323238;_0x2a9d9f[_0xbe3c('0x18')]=_0x478a4b['channel'];writeLog(_0x28cde1,_0x214870,util[_0xbe3c('0x19')](_0xbe3c('0x1a'),_0x323238));_0x1b8731[_0xbe3c('0x1b')][_0x28cde1]['on']('end',function(){logger[_0xbe3c('0x8')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x28cde1);clearTimeout(_0x107381);_0x107381=undefined;_0x2a9d9f[_0xbe3c('0x1c')]();if(_0x1b8731[_0xbe3c('0x1b')][_0x28cde1]){delete _0x1b8731['rules'][_0x28cde1];}_0x56a421[_0xbe3c('0x12')]();});_0x1b8731['rules'][_0x28cde1]['on']('complete',function(){if(_0x1b8731[_0xbe3c('0x1b')][_0x28cde1]){delete _0x1b8731[_0xbe3c('0x1b')][_0x28cde1];}});_0x107381=setTimeout(function(){logger[_0xbe3c('0x8')]('[%s][AGENT]\x20ROUTING\x20END',_0x28cde1);clearTimeout(_0x107381);_0x2a9d9f['close']();_0x56a421[_0xbe3c('0x1d')]();},_0x323238);strategy['agent'](_0x2a9d9f,_0x214870,_0x1b8731,_0x478a4b);}else{logger[_0xbe3c('0xe')](_0xbe3c('0x1e'),_0x28cde1,_0x24e06e[_0xbe3c('0xa')]);_0x56a421[_0xbe3c('0x12')]();}}}catch(_0x158a19){console[_0xbe3c('0x1f')](_0x158a19);logger[_0xbe3c('0xe')](_0xbe3c('0x20'),_0x28cde1,_0x158a19[_0xbe3c('0x21')]);_0x56a421[_0xbe3c('0x12')]();}};};
\ No newline at end of file
+var _0x446c=['name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','join','stop','find','agents','timeout','createQueue','atimeout','channel','format','START:%s','rules','end','info','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string','number','[%s][AGENT][NAME:%s][STATUS:%s]'];(function(_0xd87a71,_0x100a82){var _0x359281=function(_0x276bbb){while(--_0x276bbb){_0xd87a71['push'](_0xd87a71['shift']());}};_0x359281(++_0x100a82);}(_0x446c,0x156));var _0xc446=function(_0x11b58d,_0x555c55){_0x11b58d=_0x11b58d-0x0;var _0xc2811b=_0x446c[_0x11b58d];return _0xc2811b;};'use strict';var schema=require(_0xc446('0x0'));var _=require(_0xc446('0x1'));var util=require(_0xc446('0x2'));var seqqueue=require(_0xc446('0x3'));var logger=require('../../../../config/logger')(_0xc446('0x4'));var strategy=require(_0xc446('0x5'));var queue=schema({'name':{'type':_0xc446('0x6'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xc446('0x7'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x4a1bce,_0x115a9e,_0x235050){return logger['info'](util['format'](_0xc446('0x8'),_0x4a1bce,_0x115a9e[_0xc446('0x9')],_0x235050));}function handleFindAgent(_0x1ddeaf){return function(_0x43a9b3){return _0x43a9b3[_0xc446('0x9')]['toLowerCase']()===_0x1ddeaf[_0xc446('0xa')]();};}exports[_0xc446('0xb')]=function(_0xbbd769,_0x3783d9,_0x5e225d,_0x242a0d){return function(_0xbb2f6f){try{var _0x42857a={'name':_0x3783d9[0x0],'timeout':_0x3783d9[0x1]};var _0x195ca1=queue[_0xc446('0x0')](_0x42857a,{'typecast':!![]});if(_0x195ca1[_0xc446('0xc')]){logger[_0xc446('0xd')](_0xc446('0xe'),_0xbbd769,_[_0xc446('0xf')](_0x195ca1,_0xc446('0x10'))[_0xc446('0x11')](',\x20'));_0xbb2f6f[_0xc446('0x12')]();}else{var _0x1cfc0a=_[_0xc446('0x13')](_0x5e225d[_0xc446('0x14')],handleFindAgent(_0x42857a[_0xc446('0x9')]));if(_0x1cfc0a){var _0x7229de=(_0x42857a[_0xc446('0x15')]||0xa)*0x3e8;var _0x2b09db,_0x5d2701;var _0x3ba115=seqqueue[_0xc446('0x16')](_0x7229de);_0x3ba115['id']=_0xbbd769;_0x3ba115[_0xc446('0x17')]=_0x7229de;_0x3ba115[_0xc446('0x18')]=_0x242a0d[_0xc446('0x18')];writeLog(_0xbbd769,_0x1cfc0a,util[_0xc446('0x19')](_0xc446('0x1a'),_0x7229de));_0x5e225d[_0xc446('0x1b')][_0xbbd769]['on'](_0xc446('0x1c'),function(){logger[_0xc446('0x1d')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0xbbd769);clearTimeout(_0x5d2701);_0x5d2701=undefined;_0x3ba115[_0xc446('0x1e')]();if(_0x5e225d[_0xc446('0x1b')][_0xbbd769]){delete _0x5e225d['rules'][_0xbbd769];}_0xbb2f6f[_0xc446('0x12')]();});_0x5e225d[_0xc446('0x1b')][_0xbbd769]['on'](_0xc446('0x1f'),function(){if(_0x5e225d[_0xc446('0x1b')][_0xbbd769]){delete _0x5e225d[_0xc446('0x1b')][_0xbbd769];}});_0x5d2701=setTimeout(function(){logger[_0xc446('0x1d')](_0xc446('0x20'),_0xbbd769);clearTimeout(_0x5d2701);_0x3ba115[_0xc446('0x1e')]();_0xbb2f6f[_0xc446('0x21')]();},_0x7229de);strategy[_0xc446('0x22')](_0x3ba115,_0x1cfc0a,_0x5e225d,_0x242a0d);}else{logger['error'](_0xc446('0x23'),_0xbbd769,_0x42857a[_0xc446('0x9')]);_0xbb2f6f[_0xc446('0x12')]();}}}catch(_0x5bbde7){console[_0xc446('0x24')](_0x5bbde7);logger[_0xc446('0xd')](_0xc446('0x25'),_0xbbd769,_0x5bbde7[_0xc446('0x26')]);_0xbb2f6f[_0xc446('0x12')]();}};};
\ No newline at end of file
index 5528a47..81494db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7a5=['isEmpty','Message','then','body','catch','stringify','stop','LexRuntime','$LATEST','toString','postText','error','message','amazonlex','providerResponse','dialogState','Failed','lodash','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','whatsapp','phone','ChatWebsiteId','AccountId','account','upperFirst','created'];(function(_0x997cbe,_0x8682df){var _0x4c6754=function(_0xe88a78){while(--_0xe88a78){_0x997cbe['push'](_0x997cbe['shift']());}};_0x4c6754(++_0x8682df);}(_0xe7a5,0x69));var _0x5e7a=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xe7a5[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x5e7a('0x0'));var moment=require('moment');var AWS=require(_0x5e7a('0x1'));var utils=require(_0x5e7a('0x2'));var logger=require(_0x5e7a('0x3'))('routing');var rpc={'chatMessage':require(_0x5e7a('0x4')),'openchannelMessage':require(_0x5e7a('0x5')),'mailMessage':require(_0x5e7a('0x6')),'smsMessage':require(_0x5e7a('0x7')),'faxMessage':require(_0x5e7a('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x5e7a('0x9')]=function(_0x2af61d,_0x475742){return function(_0x45e071){try{if(!_[_0x5e7a('0xa')](this[_0x5e7a('0xb')]['UserId'])){logger[_0x5e7a('0xc')](_0x5e7a('0xd'),_0x2af61d,_0x5e7a('0xe'));return _0x45e071[_0x5e7a('0xf')]();}var _0x4188d0={'ContactId':this[_0x5e7a('0x10')]['id'],'sentAt':moment()[_0x5e7a('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x5e7a('0x12')};if(this[_0x5e7a('0x13')]==='sms'||this[_0x5e7a('0x13')]===_0x5e7a('0x14')){_0x4188d0[_0x5e7a('0x15')]=this[_0x5e7a('0xb')]['phone'];}var _0x428150=this[_0x5e7a('0x13')];if(_0x428150==='chat'){_0x4188d0[_0x5e7a('0x16')]=this['account']['id'];}else{_0x4188d0[_['upperFirst'](_0x428150)+_0x5e7a('0x17')]=this[_0x5e7a('0x18')]['id'];}_0x4188d0[_[_0x5e7a('0x19')](_0x428150)+'InteractionId']=this[_0x5e7a('0xb')]['id'];if(this['interaction'][_0x5e7a('0x1a')]){var _0x382103=_0x475742[0x4];if(!_[_0x5e7a('0x1b')](_0x382103)){_0x4188d0['body']=utils['getMustacheRender'](_0x382103,this);return rpc[_0x428150+_0x5e7a('0x1c')]['create'](_0x4188d0)[_0x5e7a('0x1d')](function(_0x4e219e){logger['info'](_0x5e7a('0xd'),_0x2af61d,_0x4188d0[_0x5e7a('0x1e')]);})[_0x5e7a('0x1f')](function(_0x37a064){logger['error'](_0x5e7a('0xd'),_0x2af61d,JSON[_0x5e7a('0x20')](_0x37a064));})['finally'](function(){logger[_0x5e7a('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x2af61d);_0x45e071[_0x5e7a('0x21')]();});}else{logger[_0x5e7a('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x2af61d);_0x45e071['stop']();}}else{var _0x19f0be=this;var _0x589d1f=new AWS[(_0x5e7a('0x22'))]({'accessKeyId':_0x475742[0x0],'secretAccessKey':_0x475742[0x1],'region':_0x475742[0x2]});var _0x500cef={'botAlias':_0x5e7a('0x23'),'botName':_0x475742[0x3],'inputText':this['message']['body'],'userId':this['channel']+':'+this[_0x5e7a('0xb')]['id'][_0x5e7a('0x24')]()};_0x589d1f[_0x5e7a('0x25')](_0x500cef,function(_0x31d030,_0x2ccbf3){if(_0x31d030){logger[_0x5e7a('0x26')]('[%s][AMAZONLEX]\x20%s',_0x2af61d,_0x31d030[_0x5e7a('0x27')]);_0x45e071[_0x5e7a('0xf')]();}else if(_0x2ccbf3&&_0x2ccbf3[_0x5e7a('0x27')]){_0x19f0be[_0x5e7a('0x1e')]['amazonlex']=_0x2ccbf3;_0x4188d0['body']=_0x2ccbf3[_0x5e7a('0x27')];_0x4188d0['providerName']=_0x5e7a('0x28');_0x4188d0[_0x5e7a('0x29')]=JSON[_0x5e7a('0x20')](_0x2ccbf3);return rpc[_0x428150+_0x5e7a('0x1c')]['create'](_0x4188d0)[_0x5e7a('0x1d')](function(_0x258322){logger[_0x5e7a('0xc')]('[%s][AMAZONLEX]\x20%s',_0x2af61d,_0x4188d0[_0x5e7a('0x1e')]);if(_0x2ccbf3[_0x5e7a('0x2a')]==_0x5e7a('0x2b')){_0x45e071[_0x5e7a('0xf')]();}else{_0x45e071[_0x5e7a('0x21')]();}})['catch'](function(_0x176aea){logger['error']('[%s][AMAZONLEX]\x20%s',_0x2af61d,JSON[_0x5e7a('0x20')](_0x176aea));_0x45e071[_0x5e7a('0xf')]();});}else{_0x45e071[_0x5e7a('0xf')]();}});}}catch(_0x6ec786){logger['error'](_0x5e7a('0xd'),_0x2af61d,JSON[_0x5e7a('0x20')](_0x6ec786));_0x45e071['stop']();}};};
\ No newline at end of file
+var _0x56aa=['../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','out','channel','sms','whatsapp','phone','interaction','chat','account','upperFirst','created','isEmpty','body','Message','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','postText','amazonlex','providerName','dialogState','Failed','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/smsMessage'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0x56aa,0x1c6));var _0xa56a=function(_0x127af0,_0x49fbc5){_0x127af0=_0x127af0-0x0;var _0x1fc410=_0x56aa[_0x127af0];return _0x1fc410;};'use strict';var _=require(_0xa56a('0x0'));var moment=require(_0xa56a('0x1'));var AWS=require('aws-sdk');var utils=require(_0xa56a('0x2'));var logger=require(_0xa56a('0x3'))(_0xa56a('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xa56a('0x5')),'faxMessage':require(_0xa56a('0x6')),'whatsappMessage':require(_0xa56a('0x7'))};exports[_0xa56a('0x8')]=function(_0x58ede8,_0xbe15fd){return function(_0x42fc70){try{if(!_[_0xa56a('0x9')](this['interaction'][_0xa56a('0xa')])){logger[_0xa56a('0xb')](_0xa56a('0xc'),_0x58ede8,_0xa56a('0xd'));return _0x42fc70[_0xa56a('0xe')]();}var _0x41ecc9={'ContactId':this['contact']['id'],'sentAt':moment()[_0xa56a('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xa56a('0x10')};if(this[_0xa56a('0x11')]===_0xa56a('0x12')||this[_0xa56a('0x11')]===_0xa56a('0x13')){_0x41ecc9[_0xa56a('0x14')]=this[_0xa56a('0x15')]['phone'];}var _0x49b117=this['channel'];if(_0x49b117===_0xa56a('0x16')){_0x41ecc9['ChatWebsiteId']=this[_0xa56a('0x17')]['id'];}else{_0x41ecc9[_['upperFirst'](_0x49b117)+'AccountId']=this[_0xa56a('0x17')]['id'];}_0x41ecc9[_[_0xa56a('0x18')](_0x49b117)+'InteractionId']=this[_0xa56a('0x15')]['id'];if(this[_0xa56a('0x15')][_0xa56a('0x19')]){var _0x1cec58=_0xbe15fd[0x4];if(!_[_0xa56a('0x1a')](_0x1cec58)){_0x41ecc9[_0xa56a('0x1b')]=utils['getMustacheRender'](_0x1cec58,this);return rpc[_0x49b117+_0xa56a('0x1c')][_0xa56a('0x1d')](_0x41ecc9)[_0xa56a('0x1e')](function(_0x29738d){logger[_0xa56a('0xb')](_0xa56a('0xc'),_0x58ede8,_0x41ecc9[_0xa56a('0x1b')]);})[_0xa56a('0x1f')](function(_0x438822){logger[_0xa56a('0x20')]('[%s][AMAZONLEX]\x20%s',_0x58ede8,JSON[_0xa56a('0x21')](_0x438822));})[_0xa56a('0x22')](function(){logger[_0xa56a('0xb')](_0xa56a('0x23'),_0x58ede8);_0x42fc70[_0xa56a('0x24')]();});}else{logger[_0xa56a('0xb')](_0xa56a('0x25'),_0x58ede8);_0x42fc70[_0xa56a('0x24')]();}}else{var _0x109e3b=this;var _0x2380bc=new AWS[(_0xa56a('0x26'))]({'accessKeyId':_0xbe15fd[0x0],'secretAccessKey':_0xbe15fd[0x1],'region':_0xbe15fd[0x2]});var _0x4a756f={'botAlias':_0xa56a('0x27'),'botName':_0xbe15fd[0x3],'inputText':this[_0xa56a('0x28')]['body'],'userId':this[_0xa56a('0x11')]+':'+this['interaction']['id']['toString']()};_0x2380bc[_0xa56a('0x29')](_0x4a756f,function(_0x5edf39,_0x3fc3a8){if(_0x5edf39){logger['error'](_0xa56a('0xc'),_0x58ede8,_0x5edf39[_0xa56a('0x28')]);_0x42fc70[_0xa56a('0xe')]();}else if(_0x3fc3a8&&_0x3fc3a8[_0xa56a('0x28')]){_0x109e3b[_0xa56a('0x1b')][_0xa56a('0x2a')]=_0x3fc3a8;_0x41ecc9[_0xa56a('0x1b')]=_0x3fc3a8['message'];_0x41ecc9[_0xa56a('0x2b')]=_0xa56a('0x2a');_0x41ecc9['providerResponse']=JSON['stringify'](_0x3fc3a8);return rpc[_0x49b117+_0xa56a('0x1c')][_0xa56a('0x1d')](_0x41ecc9)[_0xa56a('0x1e')](function(_0x26f325){logger[_0xa56a('0xb')](_0xa56a('0xc'),_0x58ede8,_0x41ecc9[_0xa56a('0x1b')]);if(_0x3fc3a8[_0xa56a('0x2c')]==_0xa56a('0x2d')){_0x42fc70[_0xa56a('0xe')]();}else{_0x42fc70['stop']();}})[_0xa56a('0x1f')](function(_0x14466c){logger[_0xa56a('0x20')](_0xa56a('0xc'),_0x58ede8,JSON[_0xa56a('0x21')](_0x14466c));_0x42fc70['next']();});}else{_0x42fc70[_0xa56a('0xe')]();}});}}catch(_0x2af3d4){logger[_0xa56a('0x20')](_0xa56a('0xc'),_0x58ede8,JSON[_0xa56a('0x21')](_0x2af3d4));_0x42fc70[_0xa56a('0x24')]();}};};
\ No newline at end of file
index 359bc1b..67d4069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d8e=['isNil','created','interaction','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','next','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','channel','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','body','getMustacheRender','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','Message','Smtp','service','account','host','port','secure','authentication','auth','user','pass','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','autoreplyExecuted','Interaction','update','finally','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence'];(function(_0x43699d,_0x10ea03){var _0xc1caed=function(_0x286cf4){while(--_0x286cf4){_0x43699d['push'](_0x43699d['shift']());}};_0xc1caed(++_0x10ea03);}(_0x7d8e,0x1ae));var _0xe7d8=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0x7d8e[_0x21f9c2];return _0x3da17f;};'use strict';var _=require('lodash');var moment=require(_0xe7d8('0x0'));var utils=require(_0xe7d8('0x1'));var logger=require(_0xe7d8('0x2'))(_0xe7d8('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xe7d8('0x4')),'mailMessage':require(_0xe7d8('0x5')),'smsMessage':require(_0xe7d8('0x6')),'faxMessage':require(_0xe7d8('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xe7d8('0x8')),'mailInteraction':require(_0xe7d8('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xe7d8('0xa')),'whatsappInteraction':require(_0xe7d8('0xb'))};var mailRpc=require(_0xe7d8('0xc'));exports[_0xe7d8('0xd')]=function(_0xa726be,_0x536ba4){return function(_0x362724){try{if(_0x536ba4[0x0]==='1'&&(_[_0xe7d8('0xe')](this['interaction'][_0xe7d8('0xf')])||!this[_0xe7d8('0x10')]['created'])){logger[_0xe7d8('0x11')](_0xe7d8('0x12'),_0xa726be,_0xe7d8('0x13'));return _0x362724[_0xe7d8('0x14')]();}if(_0x536ba4[0x0]==='2'&&this[_0xe7d8('0x10')]['autoreplyExecuted']){logger[_0xe7d8('0x11')](_0xe7d8('0x15'),_0xa726be,_0xe7d8('0x16'));return _0x362724['next']();}var _0x541822=this[_0xe7d8('0x17')];var _0x2d5bed={'ContactId':this[_0xe7d8('0x18')]['id'],'sentAt':moment()[_0xe7d8('0x19')](_0xe7d8('0x1a')),'direction':_0xe7d8('0x1b')};if(this[_0xe7d8('0x17')]===_0xe7d8('0x1c')){_0x2d5bed[_0xe7d8('0x1d')]=utils[_0xe7d8('0x1e')](_0x536ba4[0x2],this);}else{_0x2d5bed['body']=utils[_0xe7d8('0x1e')](_0x536ba4[0x1],this);}if(this[_0xe7d8('0x1f')]){_0x2d5bed['to']=this[_0xe7d8('0x1f')][_0xe7d8('0x20')]||'';if(this['channel']===_0xe7d8('0x1c')&&_0x536ba4[0x1]==='1'){_0x2d5bed['cc']=this[_0xe7d8('0x1f')]['cc']||'';}_0x2d5bed[_0xe7d8('0x20')]=this[_0xe7d8('0x1f')]['to']||'';_0x2d5bed['phone']=this[_0xe7d8('0x1f')][_0xe7d8('0x21')]||'';_0x2d5bed['read']=!![];if(this[_0xe7d8('0x1f')][_0xe7d8('0x22')]){_0x2d5bed[_0xe7d8('0x22')]='';_0x2d5bed[_0xe7d8('0x22')]+=_[_0xe7d8('0x23')](this[_0xe7d8('0x1f')]['subject'],_0xe7d8('0x24'))?'':_0xe7d8('0x25');_0x2d5bed[_0xe7d8('0x22')]+=this[_0xe7d8('0x1f')][_0xe7d8('0x22')];}}if(this[_0xe7d8('0x17')]===_0xe7d8('0x26')){_0x2d5bed[_0xe7d8('0x27')]=this['account']['id'];}else{_0x2d5bed[_[_0xe7d8('0x28')](this['channel'])+_0xe7d8('0x29')]=this['account']['id'];}_0x2d5bed[_[_0xe7d8('0x28')](this[_0xe7d8('0x17')])+'InteractionId']=this[_0xe7d8('0x10')]['id'];var _0x45ff87=this[_0xe7d8('0x10')];if(rpc[this[_0xe7d8('0x17')]+_0xe7d8('0x2a')]){if(this['channel']===_0xe7d8('0x1c')){var _0x53d25e={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0xe7d8('0x2b')][_0xe7d8('0x2c')]){_0x53d25e[_0xe7d8('0x2c')]=this[_0xe7d8('0x2d')][_0xe7d8('0x2b')][_0xe7d8('0x2c')];}else{_0x53d25e[_0xe7d8('0x2e')]=this[_0xe7d8('0x2d')]['Smtp'][_0xe7d8('0x2e')];_0x53d25e[_0xe7d8('0x2f')]=this[_0xe7d8('0x2d')][_0xe7d8('0x2b')]['port'];_0x53d25e[_0xe7d8('0x30')]=this['account'][_0xe7d8('0x2b')][_0xe7d8('0x30')];}if(this['account'][_0xe7d8('0x2b')][_0xe7d8('0x31')]){_0x53d25e[_0xe7d8('0x32')]={'user':this['account']['Smtp'][_0xe7d8('0x33')],'pass':this[_0xe7d8('0x2d')][_0xe7d8('0x2b')][_0xe7d8('0x34')]};}_0x2d5bed[_0xe7d8('0x35')]=this['message'][_0xe7d8('0x36')];_0x2d5bed['html']='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x2d5bed[_0xe7d8('0x1d')],_0xe7d8('0x37'),_0xe7d8('0x38'))+_0xe7d8('0x39');_0x2d5bed[_0xe7d8('0x3a')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xe7d8('0x3b'),'Precedence':_0xe7d8('0x3c')};return mailRpc[_0xe7d8('0x3d')](_0x53d25e,_0x2d5bed)[_0xe7d8('0x3e')](function(_0x2100ac){logger[_0xe7d8('0x11')](_0xe7d8('0x3f'),_0xa726be);_0x2d5bed[_0xe7d8('0x36')]=_0x2100ac[_0xe7d8('0x1f')]['messageId'];return rpc[_0x541822+_0xe7d8('0x2a')]['create'](_0x2d5bed);})[_0xe7d8('0x3e')](function(_0x44bac5){logger['info'](_0xe7d8('0x12'),_0xa726be,JSON[_0xe7d8('0x40')](_0x44bac5));})[_0xe7d8('0x41')](function(_0x296b12){logger[_0xe7d8('0x42')](_0xe7d8('0x43'),_0xa726be,JSON[_0xe7d8('0x40')](_0x296b12));})['finally'](function(){Promise['resolve']()['then'](function(){if(_0x536ba4[0x0]!=='2'||_0x45ff87[_0xe7d8('0x44')])return;return rpc[_0x541822+_0xe7d8('0x45')][_0xe7d8('0x46')](_0x45ff87['id'],{'autoreplyExecuted':!![]})[_0xe7d8('0x3e')](function(_0x383368){logger[_0xe7d8('0x11')](_0xe7d8('0x15'),_0xa726be,JSON[_0xe7d8('0x40')](_0x383368));})[_0xe7d8('0x41')](function(_0x183b37){logger[_0xe7d8('0x42')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0xa726be,JSON['stringify'](_0x183b37));});})['then'](function(){_0x362724['next']();});});}else{return rpc[this[_0xe7d8('0x17')]+_0xe7d8('0x2a')]['create'](_0x2d5bed)[_0xe7d8('0x3e')](function(_0x224a17){logger[_0xe7d8('0x11')](_0xe7d8('0x12'),_0xa726be,_0x2d5bed[_0xe7d8('0x1d')]);})[_0xe7d8('0x41')](function(_0x55d038){logger['error'](_0xe7d8('0x12'),_0xa726be,JSON[_0xe7d8('0x40')](_0x55d038));})[_0xe7d8('0x47')](function(){Promise['resolve']()[_0xe7d8('0x3e')](function(){if(_0x536ba4[0x0]!=='2'||_0x45ff87['autoreplyExecuted'])return;return rpc[_0x541822+_0xe7d8('0x45')][_0xe7d8('0x46')](_0x45ff87['id'],{'autoreplyExecuted':!![]})[_0xe7d8('0x3e')](function(_0x4a85df){logger[_0xe7d8('0x11')](_0xe7d8('0x15'),_0xa726be,JSON[_0xe7d8('0x40')](_0x4a85df));})[_0xe7d8('0x41')](function(_0x33f0ec){logger[_0xe7d8('0x42')](_0xe7d8('0x48'),_0xa726be,JSON[_0xe7d8('0x40')](_0x33f0ec));});})[_0xe7d8('0x3e')](function(){_0x362724[_0xe7d8('0x14')]();});});}}}catch(_0x55b16e){logger[_0xe7d8('0x42')]('[%s][AUTOREPLY]\x20%s',_0xa726be,JSON['stringify'](_0x55b16e));_0x362724[_0xe7d8('0x49')]();}};};
\ No newline at end of file
+var _0x1f23=['../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','consequence','channel','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','format','out','mail','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','Message','service','Smtp','host','port','secure','auth','pass','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','</div>','headers','auto-replied','sendMailMessage','then','create','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','catch','lodash','moment','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0x1f23,0x1e0));var _0x31f2=function(_0x3dcb86,_0x9471ab){_0x3dcb86=_0x3dcb86-0x0;var _0x2a87b1=_0x1f23[_0x3dcb86];return _0x2a87b1;};'use strict';var _=require(_0x31f2('0x0'));var moment=require(_0x31f2('0x1'));var utils=require('./utils');var logger=require(_0x31f2('0x2'))(_0x31f2('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x31f2('0x4')),'mailMessage':require(_0x31f2('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x31f2('0x6')),'chatInteraction':require(_0x31f2('0x7')),'openchannelInteraction':require(_0x31f2('0x8')),'mailInteraction':require(_0x31f2('0x9')),'smsInteraction':require(_0x31f2('0xa')),'faxInteraction':require(_0x31f2('0xb')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x31f2('0xc'));exports[_0x31f2('0xd')]=function(_0x436a8d,_0x5b1e15,_0x456c68,_0x56b626){return function(_0x479eb4){try{var _0x292e23=this[_0x31f2('0xe')];if(_0x292e23==='mail'&&_0x56b626[_0x31f2('0xf')]['isAutoreply']){logger[_0x31f2('0x10')](_0x31f2('0x11'),_0x436a8d,_0x31f2('0x12'));return _0x479eb4[_0x31f2('0x13')]();}if(_0x5b1e15[0x0]==='1'&&(_[_0x31f2('0x14')](this[_0x31f2('0x15')][_0x31f2('0x16')])||!this[_0x31f2('0x15')][_0x31f2('0x16')])){logger[_0x31f2('0x10')]('[%s][AUTOREPLY]\x20%s',_0x436a8d,'Autoreply\x20already\x20sent');return _0x479eb4[_0x31f2('0x13')]();}if(_0x5b1e15[0x0]==='2'&&this[_0x31f2('0x15')][_0x31f2('0x17')]){logger['info'](_0x31f2('0x18'),_0x436a8d,_0x31f2('0x19'));return _0x479eb4[_0x31f2('0x13')]();}var _0x3450a2={'ContactId':this['contact']['id'],'sentAt':moment()[_0x31f2('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x31f2('0x1b')};if(this[_0x31f2('0xe')]===_0x31f2('0x1c')){_0x3450a2[_0x31f2('0xf')]=utils['getMustacheRender'](_0x5b1e15[0x2],this);}else{_0x3450a2[_0x31f2('0xf')]=utils[_0x31f2('0x1d')](_0x5b1e15[0x1],this);}if(this[_0x31f2('0x1e')]){_0x3450a2['to']=this[_0x31f2('0x1e')][_0x31f2('0x1f')]||'';if(this['channel']===_0x31f2('0x1c')&&_0x5b1e15[0x1]==='1'){_0x3450a2['cc']=this[_0x31f2('0x1e')]['cc']||'';}_0x3450a2[_0x31f2('0x1f')]=this['message']['to']||'';_0x3450a2['phone']=this[_0x31f2('0x1e')][_0x31f2('0x20')]||'';_0x3450a2[_0x31f2('0x21')]=!![];if(this['message'][_0x31f2('0x22')]){_0x3450a2[_0x31f2('0x22')]='';_0x3450a2[_0x31f2('0x22')]+=_[_0x31f2('0x23')](this[_0x31f2('0x1e')]['subject'],_0x31f2('0x24'))?'':'Re:\x20';_0x3450a2[_0x31f2('0x22')]+=this['message'][_0x31f2('0x22')];}}if(this[_0x31f2('0xe')]==='chat'){_0x3450a2[_0x31f2('0x25')]=this['account']['id'];}else{_0x3450a2[_[_0x31f2('0x26')](this['channel'])+_0x31f2('0x27')]=this[_0x31f2('0x28')]['id'];}_0x3450a2[_[_0x31f2('0x26')](this[_0x31f2('0xe')])+_0x31f2('0x29')]=this[_0x31f2('0x15')]['id'];var _0x5d10d2=this['interaction'];if(rpc[this[_0x31f2('0xe')]+_0x31f2('0x2a')]){if(this[_0x31f2('0xe')]===_0x31f2('0x1c')){var _0x21ff5a={'tls':{'rejectUnauthorized':![]}};if(this[_0x31f2('0x28')]['Smtp']['service']){_0x21ff5a[_0x31f2('0x2b')]=this[_0x31f2('0x28')][_0x31f2('0x2c')]['service'];}else{_0x21ff5a[_0x31f2('0x2d')]=this[_0x31f2('0x28')][_0x31f2('0x2c')][_0x31f2('0x2d')];_0x21ff5a['port']=this[_0x31f2('0x28')][_0x31f2('0x2c')][_0x31f2('0x2e')];_0x21ff5a[_0x31f2('0x2f')]=this['account']['Smtp']['secure'];}if(this[_0x31f2('0x28')][_0x31f2('0x2c')]['authentication']){_0x21ff5a[_0x31f2('0x30')]={'user':this['account'][_0x31f2('0x2c')]['user'],'pass':this['account'][_0x31f2('0x2c')][_0x31f2('0x31')]};}_0x3450a2['inReplyTo']=this[_0x31f2('0x1e')][_0x31f2('0x32')];_0x3450a2[_0x31f2('0x33')]=_0x31f2('0x34')+_[_0x31f2('0x35')](_0x3450a2['body'],'<div\x20id=\x22xm-mail-content\x22',_0x31f2('0x36'))+_0x31f2('0x37');_0x3450a2[_0x31f2('0x38')]={'Auto-Submitted':_0x31f2('0x39'),'X-Auto-Response-Suppress':'All','Precedence':'auto_reply'};return mailRpc[_0x31f2('0x3a')](_0x21ff5a,_0x3450a2)[_0x31f2('0x3b')](function(_0x37402a){logger[_0x31f2('0x10')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x436a8d);_0x3450a2[_0x31f2('0x32')]=_0x37402a['message'][_0x31f2('0x32')];return rpc[_0x292e23+'Message'][_0x31f2('0x3c')](_0x3450a2);})['then'](function(_0x314c4d){logger[_0x31f2('0x10')](_0x31f2('0x11'),_0x436a8d,JSON[_0x31f2('0x3d')](_0x314c4d));})['catch'](function(_0x454caa){logger[_0x31f2('0x3e')](_0x31f2('0x3f'),_0x436a8d,JSON[_0x31f2('0x3d')](_0x454caa));})[_0x31f2('0x40')](function(){Promise[_0x31f2('0x41')]()[_0x31f2('0x3b')](function(){if(_0x5b1e15[0x0]!=='2'||_0x5d10d2[_0x31f2('0x17')])return;return rpc[_0x292e23+_0x31f2('0x42')][_0x31f2('0x43')](_0x5d10d2['id'],{'autoreplyExecuted':!![]})[_0x31f2('0x3b')](function(_0x5eab94){logger[_0x31f2('0x10')](_0x31f2('0x18'),_0x436a8d,JSON[_0x31f2('0x3d')](_0x5eab94));})['catch'](function(_0xb5acd9){logger['error'](_0x31f2('0x44'),_0x436a8d,JSON[_0x31f2('0x3d')](_0xb5acd9));});})[_0x31f2('0x3b')](function(){_0x479eb4['next']();});});}else{return rpc[this[_0x31f2('0xe')]+_0x31f2('0x2a')][_0x31f2('0x3c')](_0x3450a2)['then'](function(_0x14a700){logger['info'](_0x31f2('0x11'),_0x436a8d,_0x3450a2['body']);})['catch'](function(_0x32eb7d){logger[_0x31f2('0x3e')](_0x31f2('0x11'),_0x436a8d,JSON[_0x31f2('0x3d')](_0x32eb7d));})['finally'](function(){Promise[_0x31f2('0x41')]()[_0x31f2('0x3b')](function(){if(_0x5b1e15[0x0]!=='2'||_0x5d10d2[_0x31f2('0x17')])return;return rpc[_0x292e23+_0x31f2('0x42')][_0x31f2('0x43')](_0x5d10d2['id'],{'autoreplyExecuted':!![]})['then'](function(_0x25656b){logger[_0x31f2('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x436a8d,JSON['stringify'](_0x25656b));})[_0x31f2('0x45')](function(_0x12b792){logger['error'](_0x31f2('0x44'),_0x436a8d,JSON[_0x31f2('0x3d')](_0x12b792));});})[_0x31f2('0x3b')](function(){_0x479eb4['next']();});});}}}catch(_0x307703){logger[_0x31f2('0x3e')](_0x31f2('0x11'),_0x436a8d,JSON[_0x31f2('0x3d')](_0x307703));_0x479eb4['stop']();}};};
\ No newline at end of file
index 983078e..96801d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7000=['error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','interaction','then'];(function(_0x475aa9,_0x439aab){var _0x360bbc=function(_0x331a22){while(--_0x331a22){_0x475aa9['push'](_0x475aa9['shift']());}};_0x360bbc(++_0x439aab);}(_0x7000,0x116));var _0x0700=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x7000[_0x5f09c5];return _0x426ad9;};'use strict';var moment=require(_0x0700('0x0'));var logger=require(_0x0700('0x1'))(_0x0700('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x0700('0x3')),'smsInteraction':require(_0x0700('0x4')),'mailInteraction':require(_0x0700('0x5')),'faxInteraction':require(_0x0700('0x6')),'whatsappInteraction':require(_0x0700('0x7'))};exports[_0x0700('0x8')]=function(_0x17a5b3,_0x23572f,_0xe2062b,_0xab2091){return function(_0x1d5c4b){try{logger[_0x0700('0x9')]('[%s][CLOSE]\x20reason\x20%s',_0x17a5b3,_0x23572f[0x0]);var _0x159dd7={'closed':0x1,'closedAt':moment()[_0x0700('0xa')](_0x0700('0xb')),'closeReason':_0x0700('0xc'),'disposition':_0x23572f[0x0]};if(rpc[_0xab2091[_0x0700('0xd')]+'Interaction']){rpc[_0xab2091[_0x0700('0xd')]+'Interaction']['update'](_0xab2091[_0x0700('0xe')]['id'],_0x159dd7)[_0x0700('0xf')](function(_0x2a4232){logger[_0x0700('0x9')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x17a5b3,_0xab2091['interaction']['id']);})['catch'](function(_0x5d6741){logger[_0x0700('0x10')](_0x0700('0x11'),_0x17a5b3,JSON[_0x0700('0x12')](_0x5d6741));})[_0x0700('0x13')](function(){_0x1d5c4b['stop']();});}}catch(_0x2a5dd1){logger[_0x0700('0x10')]('[%s][CLOSE]\x20%s',_0x17a5b3,JSON[_0x0700('0x12')](_0x2a5dd1));_0x1d5c4b[_0x0700('0x14')]();}};};
\ No newline at end of file
+var _0x1cb9=['catch','[%s][CLOSE]\x20%s','stringify','finally','stop','error','moment','../../../../config/logger','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x1cb9,0x119));var _0x91cb=function(_0x14160f,_0x175773){_0x14160f=_0x14160f-0x0;var _0x427c19=_0x1cb9[_0x14160f];return _0x427c19;};'use strict';var moment=require(_0x91cb('0x0'));var logger=require(_0x91cb('0x1'))('routing');var rpc={'chatInteraction':require(_0x91cb('0x2')),'openchannelInteraction':require(_0x91cb('0x3')),'smsInteraction':require(_0x91cb('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x91cb('0x5')),'whatsappInteraction':require(_0x91cb('0x6'))};exports[_0x91cb('0x7')]=function(_0x24a3d5,_0x17b57d,_0x471dee,_0x4bec85){return function(_0x45f9b1){try{logger[_0x91cb('0x8')](_0x91cb('0x9'),_0x24a3d5,_0x17b57d[0x0]);var _0x1f2dab={'closed':0x1,'closedAt':moment()[_0x91cb('0xa')](_0x91cb('0xb')),'closeReason':_0x91cb('0xc'),'disposition':_0x17b57d[0x0]};if(rpc[_0x4bec85[_0x91cb('0xd')]+_0x91cb('0xe')]){rpc[_0x4bec85[_0x91cb('0xd')]+_0x91cb('0xe')][_0x91cb('0xf')](_0x4bec85[_0x91cb('0x10')]['id'],_0x1f2dab)[_0x91cb('0x11')](function(_0x5b592a){logger['info'](_0x91cb('0x12'),_0x24a3d5,_0x4bec85['interaction']['id']);})[_0x91cb('0x13')](function(_0x24104e){logger['error'](_0x91cb('0x14'),_0x24a3d5,JSON[_0x91cb('0x15')](_0x24104e));})[_0x91cb('0x16')](function(){_0x45f9b1[_0x91cb('0x17')]();});}}catch(_0x28e4a4){logger[_0x91cb('0x18')](_0x91cb('0x14'),_0x24a3d5,JSON[_0x91cb('0x15')](_0x28e4a4));_0x45f9b1['stop']();}};};
\ No newline at end of file
index 386eb56..3b7a590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x195f=['finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','Message','metadata','endConversation','error','lodash','moment','md5','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','getMustacheRender','create','then','catch','stringify'];(function(_0xd328f1,_0x49e58f){var _0x5efed7=function(_0x284e8e){while(--_0x284e8e){_0xd328f1['push'](_0xd328f1['shift']());}};_0x5efed7(++_0x49e58f);}(_0x195f,0x113));var _0xf195=function(_0x5a852b,_0x1694c2){_0x5a852b=_0x5a852b-0x0;var _0xd74d84=_0x195f[_0x5a852b];return _0xd74d84;};'use strict';var _=require(_0xf195('0x0'));var moment=require(_0xf195('0x1'));var apiai=require('apiai-promise');var md5=require(_0xf195('0x2'));var utils=require(_0xf195('0x3'));var logger=require('../../../../config/logger')(_0xf195('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xf195('0x5')),'mailMessage':require(_0xf195('0x6')),'smsMessage':require(_0xf195('0x7')),'faxMessage':require(_0xf195('0x8')),'whatsappMessage':require(_0xf195('0x9'))};exports[_0xf195('0xa')]=function(_0x2770db,_0x59d783){return function(_0x5eac33){try{if(!_[_0xf195('0xb')](this[_0xf195('0xc')][_0xf195('0xd')])){logger[_0xf195('0xe')](_0xf195('0xf'),_0x2770db,_0xf195('0x10'));return _0x5eac33[_0xf195('0x11')]();}var _0x4bce90={'ContactId':this[_0xf195('0x12')]['id'],'sentAt':moment()[_0xf195('0x13')](_0xf195('0x14')),'direction':'out'};if(this[_0xf195('0x15')]===_0xf195('0x16')||this[_0xf195('0x15')]===_0xf195('0x17')){_0x4bce90['phone']=this[_0xf195('0xc')][_0xf195('0x18')];}var _0x57f8cc=this[_0xf195('0x15')];if(_0x57f8cc==='chat'){_0x4bce90[_0xf195('0x19')]=this[_0xf195('0x1a')]['id'];}else{_0x4bce90[_[_0xf195('0x1b')](_0x57f8cc)+_0xf195('0x1c')]=this[_0xf195('0x1a')]['id'];}_0x4bce90[_[_0xf195('0x1b')](_0x57f8cc)+_0xf195('0x1d')]=this[_0xf195('0xc')]['id'];if(this['interaction']['created']){var _0x15590e=_0x59d783[0x2];if(!_[_0xf195('0x1e')](_0x15590e)){_0x4bce90[_0xf195('0x1f')]=utils[_0xf195('0x20')](_0x15590e,this);return rpc[_0x57f8cc+'Message'][_0xf195('0x21')](_0x4bce90)[_0xf195('0x22')](function(_0x5cf7dc){logger[_0xf195('0xe')](_0xf195('0xf'),_0x2770db,_0x4bce90['body']);})[_0xf195('0x23')](function(_0x3e82c2){logger['error'](_0xf195('0xf'),_0x2770db,JSON[_0xf195('0x24')](_0x3e82c2));})[_0xf195('0x25')](function(){logger[_0xf195('0xe')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x2770db);_0x5eac33['stop']();});}else{logger['info'](_0xf195('0x26'),_0x2770db);_0x5eac33[_0xf195('0x27')]();}}else{var _0x388c36=this;var _0x785aae=apiai(_0x59d783[0x0],{'language':_0x59d783[0x1]||'en'});return _0x785aae[_0xf195('0x28')](this[_0xf195('0x29')][_0xf195('0x1f')],{'sessionId':md5(this[_0xf195('0xc')]['id'])})[_0xf195('0x22')](function(_0x255d58){_0x388c36[_0xf195('0x1f')][_0xf195('0x2a')]=_0x255d58;_0x4bce90['body']=_0x255d58[_0xf195('0x2b')][_0xf195('0x2c')][_0xf195('0x2d')];_0x4bce90[_0xf195('0x2e')]=_0xf195('0x2a');_0x4bce90[_0xf195('0x2f')]=JSON[_0xf195('0x24')](_0x255d58);return rpc[_0x57f8cc+_0xf195('0x30')]['create'](_0x4bce90)['then'](function(_0x190b43){logger[_0xf195('0xe')](_0xf195('0xf'),_0x2770db,_0x4bce90[_0xf195('0x1f')]);if(_0x255d58[_0xf195('0x2b')][_0xf195('0x31')][_0xf195('0x32')]){_0x5eac33[_0xf195('0x11')]();}else{_0x5eac33[_0xf195('0x27')]();}})[_0xf195('0x23')](function(_0xe3465f){logger[_0xf195('0x33')](_0xf195('0xf'),_0x2770db,JSON[_0xf195('0x24')](_0xe3465f));_0x5eac33[_0xf195('0x11')]();});})[_0xf195('0x23')](function(_0x20e0e3){logger[_0xf195('0x33')](_0xf195('0xf'),_0x2770db,_0x20e0e3['message']);_0x5eac33[_0xf195('0x11')]();});}}catch(_0x33b342){logger[_0xf195('0x33')](_0xf195('0xf'),_0x2770db,JSON[_0xf195('0x24')](_0x33b342));_0x5eac33[_0xf195('0x27')]();}};};
\ No newline at end of file
+var _0x9f7a=['sms','whatsapp','interaction','chat','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','create','then','body','catch','error','stringify','finally','textRequest','dialogflow','result','speech','providerName','metadata','endConversation','stop','message','lodash','moment','apiai-promise','md5','../../../../config/logger','../../rpc/mailMessage','../../rpc/smsMessage','consequence','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel'];(function(_0xa031da,_0x22e6a5){var _0x22071d=function(_0x2d1e19){while(--_0x2d1e19){_0xa031da['push'](_0xa031da['shift']());}};_0x22071d(++_0x22e6a5);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x9f7a[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xa9f7('0x0'));var moment=require(_0xa9f7('0x1'));var apiai=require(_0xa9f7('0x2'));var md5=require(_0xa9f7('0x3'));var utils=require('./utils');var logger=require(_0xa9f7('0x4'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xa9f7('0x5')),'smsMessage':require(_0xa9f7('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xa9f7('0x7')]=function(_0x5497c8,_0x48e791){return function(_0x5bf7ca){try{if(!_[_0xa9f7('0x8')](this['interaction'][_0xa9f7('0x9')])){logger[_0xa9f7('0xa')](_0xa9f7('0xb'),_0x5497c8,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x5bf7ca[_0xa9f7('0xc')]();}var _0xdda0e0={'ContactId':this['contact']['id'],'sentAt':moment()[_0xa9f7('0xd')](_0xa9f7('0xe')),'direction':_0xa9f7('0xf')};if(this[_0xa9f7('0x10')]===_0xa9f7('0x11')||this[_0xa9f7('0x10')]===_0xa9f7('0x12')){_0xdda0e0['phone']=this[_0xa9f7('0x13')]['phone'];}var _0x45ffaf=this[_0xa9f7('0x10')];if(_0x45ffaf===_0xa9f7('0x14')){_0xdda0e0['ChatWebsiteId']=this['account']['id'];}else{_0xdda0e0[_[_0xa9f7('0x15')](_0x45ffaf)+'AccountId']=this['account']['id'];}_0xdda0e0[_[_0xa9f7('0x15')](_0x45ffaf)+_0xa9f7('0x16')]=this[_0xa9f7('0x13')]['id'];if(this['interaction'][_0xa9f7('0x17')]){var _0x153493=_0x48e791[0x2];if(!_[_0xa9f7('0x18')](_0x153493)){_0xdda0e0['body']=utils[_0xa9f7('0x19')](_0x153493,this);return rpc[_0x45ffaf+_0xa9f7('0x1a')][_0xa9f7('0x1b')](_0xdda0e0)[_0xa9f7('0x1c')](function(_0x8da225){logger[_0xa9f7('0xa')](_0xa9f7('0xb'),_0x5497c8,_0xdda0e0[_0xa9f7('0x1d')]);})[_0xa9f7('0x1e')](function(_0x4c235e){logger[_0xa9f7('0x1f')](_0xa9f7('0xb'),_0x5497c8,JSON[_0xa9f7('0x20')](_0x4c235e));})[_0xa9f7('0x21')](function(){logger[_0xa9f7('0xa')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5497c8);_0x5bf7ca['stop']();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x5497c8);_0x5bf7ca['stop']();}}else{var _0x4b7202=this;var _0x5c9e4f=apiai(_0x48e791[0x0],{'language':_0x48e791[0x1]||'en'});return _0x5c9e4f[_0xa9f7('0x22')](this['message']['body'],{'sessionId':md5(this[_0xa9f7('0x13')]['id'])})['then'](function(_0x502562){_0x4b7202['body'][_0xa9f7('0x23')]=_0x502562;_0xdda0e0[_0xa9f7('0x1d')]=_0x502562[_0xa9f7('0x24')]['fulfillment'][_0xa9f7('0x25')];_0xdda0e0[_0xa9f7('0x26')]=_0xa9f7('0x23');_0xdda0e0['providerResponse']=JSON[_0xa9f7('0x20')](_0x502562);return rpc[_0x45ffaf+'Message'][_0xa9f7('0x1b')](_0xdda0e0)['then'](function(_0x1bf651){logger[_0xa9f7('0xa')](_0xa9f7('0xb'),_0x5497c8,_0xdda0e0[_0xa9f7('0x1d')]);if(_0x502562['result'][_0xa9f7('0x27')][_0xa9f7('0x28')]){_0x5bf7ca[_0xa9f7('0xc')]();}else{_0x5bf7ca[_0xa9f7('0x29')]();}})[_0xa9f7('0x1e')](function(_0x471c3c){logger[_0xa9f7('0x1f')](_0xa9f7('0xb'),_0x5497c8,JSON['stringify'](_0x471c3c));_0x5bf7ca['next']();});})['catch'](function(_0x224f2e){logger[_0xa9f7('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x5497c8,_0x224f2e[_0xa9f7('0x2a')]);_0x5bf7ca['next']();});}}catch(_0x49805c){logger['error'](_0xa9f7('0xb'),_0x5497c8,JSON['stringify'](_0x49805c));_0x5bf7ca[_0xa9f7('0x29')]();}};};
\ No newline at end of file
index 7011be4..5c6d918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60b8=['intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','error','next','lodash','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','then','info','[%s][DIALOGFLOWV2]\x20%s','body','catch','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','getMustacheRender','Message','create','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','sessionPath','message','detectIntent','length','dialogflowV2','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE'];(function(_0x18d6fe,_0x52d2e9){var _0x289ac4=function(_0x1915fd){while(--_0x1915fd){_0x18d6fe['push'](_0x18d6fe['shift']());}};_0x289ac4(++_0x52d2e9);}(_0x60b8,0x1e4));var _0x860b=function(_0x16cff9,_0x1fd1b0){_0x16cff9=_0x16cff9-0x0;var _0x3ef1ce=_0x60b8[_0x16cff9];return _0x3ef1ce;};'use strict';var _=require(_0x860b('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0x860b('0x1'));var Promise=require(_0x860b('0x2'));var logger=require(_0x860b('0x3'))(_0x860b('0x4'));var utils=require(_0x860b('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x860b('0x6')),'smsMessage':require(_0x860b('0x7')),'faxMessage':require(_0x860b('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x387520,_0x4d32d9,_0x5b83bf,_0x5aa2aa){return new Promise(function(_0x13609a,_0x52c57c){var _0x52ad76=_['clone'](_0x5b83bf);_0x52ad76['body']=_0x5aa2aa;return rpc[_0x4d32d9+'Message']['create'](_0x52ad76)[_0x860b('0x9')](function(){logger[_0x860b('0xa')](_0x860b('0xb'),_0x387520,_0x52ad76[_0x860b('0xc')]);_0x13609a();})[_0x860b('0xd')](function(_0x17fd0a){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x387520,JSON[_0x860b('0xe')](_0x17fd0a));_0x52c57c(_0x17fd0a);});});}exports[_0x860b('0xf')]=function(_0xe8175f,_0x4842d4){return function(_0x3f4b17){try{if(!_[_0x860b('0x10')](this[_0x860b('0x11')][_0x860b('0x12')])){logger[_0x860b('0xa')](_0x860b('0xb'),_0xe8175f,_0x860b('0x13'));return _0x3f4b17['next']();}var _0x516adb={'ContactId':this[_0x860b('0x14')]['id'],'sentAt':moment()[_0x860b('0x15')](_0x860b('0x16')),'direction':_0x860b('0x17')};if(this[_0x860b('0x18')]==='sms'||this[_0x860b('0x18')]==='whatsapp'){_0x516adb[_0x860b('0x19')]=this['interaction']['phone'];}var _0x39560f=this[_0x860b('0x18')];if(_0x39560f===_0x860b('0x1a')){_0x516adb[_0x860b('0x1b')]=this[_0x860b('0x1c')]['id'];}else{_0x516adb[_[_0x860b('0x1d')](_0x39560f)+_0x860b('0x1e')]=this[_0x860b('0x1c')]['id'];}_0x516adb[_['upperFirst'](_0x39560f)+'InteractionId']=this['interaction']['id'];if(this[_0x860b('0x11')]['created']){var _0x44e093=_0x4842d4[0x4];if(!_['isEmpty'](_0x44e093)){_0x516adb[_0x860b('0xc')]=utils[_0x860b('0x1f')](_0x44e093,this);return rpc[_0x39560f+_0x860b('0x20')][_0x860b('0x21')](_0x516adb)['then'](function(_0x4b0b21){logger['info'](_0x860b('0xb'),_0xe8175f,_0x516adb[_0x860b('0xc')]);})['catch'](function(_0x2451a8){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0xe8175f,JSON[_0x860b('0xe')](_0x2451a8));})[_0x860b('0x22')](function(){logger[_0x860b('0xa')](_0x860b('0x23'),_0xe8175f);_0x3f4b17[_0x860b('0x24')]();});}else{logger[_0x860b('0xa')](_0x860b('0x25'),_0xe8175f);_0x3f4b17[_0x860b('0x24')]();}}else{var _0x1a4ad6=this;var _0x555a50=_0x4842d4[0x2][_0x860b('0x26')](/\\n/g,'\x0a');var _0x23a320={'credentials':{'private_key':_0x555a50,'client_email':_0x4842d4[0x1]}};var _0x58c1ad=new dialogflow['SessionsClient'](_0x23a320);var _0x26bfa7=_0x58c1ad[_0x860b('0x27')](_0x4842d4[0x0],md5(_0x1a4ad6[_0x860b('0x11')]['id']));var _0x30e691={'session':_0x26bfa7,'queryInput':{'text':{'text':_0x1a4ad6[_0x860b('0x28')][_0x860b('0xc')],'languageCode':_0x4842d4[0x3]||'en'}}};return _0x58c1ad[_0x860b('0x29')](_0x30e691)['then'](function(_0x45e627){if(_0x45e627&&_0x45e627[_0x860b('0x2a')]){_0x1a4ad6[_0x860b('0xc')][_0x860b('0x2b')]=_0x45e627;var _0x35ad38=_0x45e627[0x0];var _0x5b04b7=_0x35ad38['queryResult'][_0x860b('0x2c')]&&_0x35ad38[_0x860b('0x2d')][_0x860b('0x2c')][_0x860b('0x2e')]?_0x35ad38[_0x860b('0x2d')]['diagnosticInfo']['fields'][_0x860b('0x2f')][_0x860b('0x30')]:![];_0x1a4ad6[_0x860b('0xc')][_0x860b('0x31')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x32')];_0x1a4ad6[_0x860b('0xc')][_0x860b('0x33')]=_0x35ad38[_0x860b('0x2d')]['allRequiredParamsPresent'];_0x1a4ad6[_0x860b('0xc')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x35ad38[_0x860b('0x2d')][_0x860b('0x2c')]&&_0x35ad38[_0x860b('0x2d')][_0x860b('0x2c')]['fields']?_0x35ad38['queryResult']['diagnosticInfo'][_0x860b('0x2e')][_0x860b('0x2f')][_0x860b('0x30')]:![];_0x1a4ad6['body']['DIALOGFLOWV2_INTENTNAME']=_0x35ad38['queryResult'][_0x860b('0x34')][_0x860b('0x35')];_0x1a4ad6[_0x860b('0xc')][_0x860b('0x36')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x34')]['displayName'];_0x1a4ad6[_0x860b('0xc')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x35ad38[_0x860b('0x2d')][_0x860b('0x34')][_0x860b('0x37')];_0x1a4ad6['body'][_0x860b('0x38')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x39')];_0x1a4ad6['body']['DIALOGFLOWV2_QUERYTEXT']=_0x35ad38[_0x860b('0x2d')][_0x860b('0x3a')];_0x1a4ad6['body'][_0x860b('0x3b')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x3c')];_0x516adb[_0x860b('0x3d')]='dialogflowV2';_0x516adb[_0x860b('0x3e')]=JSON[_0x860b('0xe')](_0x45e627);var _0x437e73=[];for(var _0x1cd048=0x0;_0x1cd048<_0x45e627[_0x860b('0x2a')];_0x1cd048++){var _0x2fe9d9=_0x45e627[_0x1cd048];if(_0x2fe9d9&&_0x2fe9d9[_0x860b('0x2d')]&&_0x2fe9d9[_0x860b('0x2d')][_0x860b('0x3f')]){_0x437e73[_0x860b('0x40')](createMessage(_0xe8175f,_0x39560f,_0x516adb,_0x2fe9d9[_0x860b('0x2d')]['fulfillmentText']));}}return Promise[_0x860b('0x41')](_0x437e73)[_0x860b('0x9')](function(){if(_0x5b04b7){_0x3f4b17['next']();}else{_0x3f4b17[_0x860b('0x24')]();}})[_0x860b('0xd')](function(_0x4327d1){logger[_0x860b('0x42')](_0x860b('0xb'),_0xe8175f,JSON[_0x860b('0xe')](_0x4327d1));_0x3f4b17[_0x860b('0x43')]();});}})[_0x860b('0xd')](function(_0x52d5f6){logger[_0x860b('0x42')](_0x860b('0xb'),_0xe8175f,_0x52d5f6[_0x860b('0x28')]);_0x3f4b17[_0x860b('0x43')]();});}}catch(_0x44005d){logger['error'](_0x860b('0xb'),_0xe8175f,JSON['stringify'](_0x44005d));_0x3f4b17[_0x860b('0x24')]();}};};
\ No newline at end of file
+var _0xc569=['YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','replace','SessionsClient','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','next','lodash','dialogflow','md5','bluebird','../../../../config/logger','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format'];(function(_0x1cb033,_0x33572a){var _0x289f7a=function(_0x5cccb0){while(--_0x5cccb0){_0x1cb033['push'](_0x1cb033['shift']());}};_0x289f7a(++_0x33572a);}(_0xc569,0x159));var _0x9c56=function(_0x18e3b2,_0x591142){_0x18e3b2=_0x18e3b2-0x0;var _0x46bbe3=_0xc569[_0x18e3b2];return _0x46bbe3;};'use strict';var _=require(_0x9c56('0x0'));var dialogflow=require(_0x9c56('0x1'));var md5=require(_0x9c56('0x2'));var moment=require('moment');var Promise=require(_0x9c56('0x3'));var logger=require(_0x9c56('0x4'))('routing');var utils=require(_0x9c56('0x5'));var rpc={'chatMessage':require(_0x9c56('0x6')),'openchannelMessage':require(_0x9c56('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x9c56('0x8')),'faxMessage':require(_0x9c56('0x9')),'whatsappMessage':require(_0x9c56('0xa'))};function createMessage(_0x38a9cf,_0x564e30,_0x15206f,_0xaba9c7){return new Promise(function(_0x35baa0,_0x1d66ae){var _0x32e966=_['clone'](_0x15206f);_0x32e966['body']=_0xaba9c7;return rpc[_0x564e30+'Message'][_0x9c56('0xb')](_0x32e966)[_0x9c56('0xc')](function(){logger['info'](_0x9c56('0xd'),_0x38a9cf,_0x32e966['body']);_0x35baa0();})[_0x9c56('0xe')](function(_0xeed809){logger[_0x9c56('0xf')](_0x9c56('0xd'),_0x38a9cf,JSON[_0x9c56('0x10')](_0xeed809));_0x1d66ae(_0xeed809);});});}exports[_0x9c56('0x11')]=function(_0xbec6b9,_0x5303be){return function(_0x284c0d){try{if(!_[_0x9c56('0x12')](this[_0x9c56('0x13')][_0x9c56('0x14')])){logger[_0x9c56('0x15')]('[%s][DIALOGFLOWV2]\x20%s',_0xbec6b9,_0x9c56('0x16'));return _0x284c0d['next']();}var _0x37d40a={'ContactId':this[_0x9c56('0x17')]['id'],'sentAt':moment()[_0x9c56('0x18')](_0x9c56('0x19')),'direction':_0x9c56('0x1a')};if(this[_0x9c56('0x1b')]===_0x9c56('0x1c')||this[_0x9c56('0x1b')]===_0x9c56('0x1d')){_0x37d40a[_0x9c56('0x1e')]=this[_0x9c56('0x13')][_0x9c56('0x1e')];}var _0x268eef=this[_0x9c56('0x1b')];if(_0x268eef===_0x9c56('0x1f')){_0x37d40a['ChatWebsiteId']=this[_0x9c56('0x20')]['id'];}else{_0x37d40a[_[_0x9c56('0x21')](_0x268eef)+_0x9c56('0x22')]=this['account']['id'];}_0x37d40a[_[_0x9c56('0x21')](_0x268eef)+_0x9c56('0x23')]=this[_0x9c56('0x13')]['id'];if(this[_0x9c56('0x13')][_0x9c56('0x24')]){var _0x1a985e=_0x5303be[0x4];if(!_[_0x9c56('0x25')](_0x1a985e)){_0x37d40a[_0x9c56('0x26')]=utils[_0x9c56('0x27')](_0x1a985e,this);return rpc[_0x268eef+'Message'][_0x9c56('0xb')](_0x37d40a)[_0x9c56('0xc')](function(_0x573983){logger[_0x9c56('0x15')](_0x9c56('0xd'),_0xbec6b9,_0x37d40a[_0x9c56('0x26')]);})[_0x9c56('0xe')](function(_0x2a9f5b){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0xbec6b9,JSON[_0x9c56('0x10')](_0x2a9f5b));})[_0x9c56('0x28')](function(){logger['info'](_0x9c56('0x29'),_0xbec6b9);_0x284c0d['stop']();});}else{logger['info'](_0x9c56('0x2a'),_0xbec6b9);_0x284c0d[_0x9c56('0x2b')]();}}else{var _0x3a0119=this;var _0x2cb39c=_0x5303be[0x2][_0x9c56('0x2c')](/\\n/g,'\x0a');var _0x3be78d={'credentials':{'private_key':_0x2cb39c,'client_email':_0x5303be[0x1]}};var _0x4f4c27=new dialogflow[(_0x9c56('0x2d'))](_0x3be78d);var _0x21de8e=_0x4f4c27['sessionPath'](_0x5303be[0x0],md5(_0x3a0119['interaction']['id']));var _0x47c7be={'session':_0x21de8e,'queryInput':{'text':{'text':_0x3a0119[_0x9c56('0x2e')]['body'],'languageCode':_0x5303be[0x3]||'en'}}};return _0x4f4c27[_0x9c56('0x2f')](_0x47c7be)[_0x9c56('0xc')](function(_0x7bcf70){if(_0x7bcf70&&_0x7bcf70[_0x9c56('0x30')]){_0x3a0119[_0x9c56('0x26')][_0x9c56('0x31')]=_0x7bcf70;var _0x5bfc92=_0x7bcf70[0x0];var _0x37cc37=_0x5bfc92['queryResult']['diagnosticInfo']&&_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x33')][_0x9c56('0x34')]?_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x33')][_0x9c56('0x34')][_0x9c56('0x35')][_0x9c56('0x36')]:![];_0x3a0119[_0x9c56('0x26')][_0x9c56('0x37')]=_0x5bfc92['queryResult'][_0x9c56('0x38')];_0x3a0119[_0x9c56('0x26')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x39')];_0x3a0119[_0x9c56('0x26')][_0x9c56('0x3a')]=_0x5bfc92[_0x9c56('0x32')]['diagnosticInfo']&&_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x33')]['fields']?_0x5bfc92['queryResult'][_0x9c56('0x33')][_0x9c56('0x34')][_0x9c56('0x35')]['boolValue']:![];_0x3a0119[_0x9c56('0x26')][_0x9c56('0x3b')]=_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x3c')]['name'];_0x3a0119[_0x9c56('0x26')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5bfc92['queryResult'][_0x9c56('0x3c')][_0x9c56('0x3d')];_0x3a0119[_0x9c56('0x26')][_0x9c56('0x3e')]=_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x3c')][_0x9c56('0x3f')];_0x3a0119[_0x9c56('0x26')][_0x9c56('0x40')]=_0x5bfc92[_0x9c56('0x32')]['languageCode'];_0x3a0119['body'][_0x9c56('0x41')]=_0x5bfc92[_0x9c56('0x32')]['queryText'];_0x3a0119[_0x9c56('0x26')][_0x9c56('0x42')]=_0x5bfc92[_0x9c56('0x32')][_0x9c56('0x43')];_0x37d40a[_0x9c56('0x44')]=_0x9c56('0x31');_0x37d40a[_0x9c56('0x45')]=JSON[_0x9c56('0x10')](_0x7bcf70);var _0x2d7603=[];for(var _0x2bbf2e=0x0;_0x2bbf2e<_0x7bcf70[_0x9c56('0x30')];_0x2bbf2e++){var _0x3fc7ad=_0x7bcf70[_0x2bbf2e];if(_0x3fc7ad&&_0x3fc7ad[_0x9c56('0x32')]&&_0x3fc7ad[_0x9c56('0x32')][_0x9c56('0x46')]){_0x2d7603[_0x9c56('0x47')](createMessage(_0xbec6b9,_0x268eef,_0x37d40a,_0x3fc7ad[_0x9c56('0x32')][_0x9c56('0x46')]));}}return Promise[_0x9c56('0x48')](_0x2d7603)[_0x9c56('0xc')](function(){if(_0x37cc37){_0x284c0d[_0x9c56('0x49')]();}else{_0x284c0d[_0x9c56('0x2b')]();}})[_0x9c56('0xe')](function(_0x2a5bdb){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0xbec6b9,JSON[_0x9c56('0x10')](_0x2a5bdb));_0x284c0d[_0x9c56('0x49')]();});}})[_0x9c56('0xe')](function(_0x28bcd9){logger[_0x9c56('0xf')](_0x9c56('0xd'),_0xbec6b9,_0x28bcd9[_0x9c56('0x2e')]);_0x284c0d[_0x9c56('0x49')]();});}}catch(_0x5df952){logger[_0x9c56('0xf')](_0x9c56('0xd'),_0xbec6b9,JSON[_0x9c56('0x10')](_0x5df952));_0x284c0d[_0x9c56('0x2b')]();}};};
\ No newline at end of file
index 76683d8..26e485b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b37=['validate','lodash','html-to-text','./utils','routing','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','join','stop','priorityTrue','priorityFalse','info','condition','findIndex','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify'];(function(_0x6942e0,_0x131e6d){var _0xb86490=function(_0x2fd5d7){while(--_0x2fd5d7){_0x6942e0['push'](_0x6942e0['shift']());}};_0xb86490(++_0x131e6d);}(_0x6b37,0xfc));var _0x76b3=function(_0x40b642,_0x3e8910){_0x40b642=_0x40b642-0x0;var _0x1401d9=_0x6b37[_0x40b642];return _0x1401d9;};'use strict';var schema=require(_0x76b3('0x0'));var _=require(_0x76b3('0x1'));var htmlToText=require(_0x76b3('0x2'));var utils=require(_0x76b3('0x3'));var logger=require('../../../../config/logger')(_0x76b3('0x4'));var gotoif=schema({'condition':{'type':_0x76b3('0x5'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x76b3('0x6'),'message':_0x76b3('0x7')},'priorityFalse':{'type':_0x76b3('0x6'),'message':_0x76b3('0x8')}});exports[_0x76b3('0x9')]=function(_0xb3cdf1,_0x2ceb95){return function(_0x2a677e){try{var _0x258f55={'condition':htmlToText[_0x76b3('0xa')](utils[_0x76b3('0xb')](_0x2ceb95[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2ceb95[0x1],'priorityFalse':_0x2ceb95[0x2]};var _0x231966=gotoif['validate'](_0x258f55,{'typecast':!![]});if(_0x231966[_0x76b3('0xc')]){logger[_0x76b3('0xd')](_0x76b3('0xe'),_0xb3cdf1,_[_0x76b3('0xf')](_0x231966,'message')[_0x76b3('0x10')](',\x20'));_0x2a677e[_0x76b3('0x11')]();}else{try{var _0x2c9f58=eval('('+_0x258f55['condition']+')');var _0x18d232=_0x2c9f58?_0x258f55[_0x76b3('0x12')]:_0x258f55[_0x76b3('0x13')];logger[_0x76b3('0x14')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0xb3cdf1,_0x258f55[_0x76b3('0x15')],_0x2c9f58,_0x18d232||'next');if(_0x18d232){var _0x4ef5f7=_[_0x76b3('0x16')](_0x2a677e['rules'](),{'p':_0x18d232});if(_0x4ef5f7>=0x0){logger[_0x76b3('0x14')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0xb3cdf1,_0x18d232||_0x76b3('0x17'),_0x4ef5f7);_0x2a677e['next'](_0x4ef5f7);}else{logger[_0x76b3('0x14')](_0x76b3('0x18'),_0xb3cdf1,_0x18d232||_0x76b3('0x17'));_0x2a677e['stop']();}}else{_0x2a677e[_0x76b3('0x17')]();}}catch(_0x48a9ed){logger['error'](_0x76b3('0x19'),_0xb3cdf1,_0x48a9ed[_0x76b3('0x1a')]);_0x2a677e[_0x76b3('0x11')]();}}}catch(_0x1a23db){logger['error'](_0x76b3('0xe'),_0xb3cdf1,JSON[_0x76b3('0x1b')](_0x1a23db));_0x2a677e[_0x76b3('0x11')]();}};};
\ No newline at end of file
+var _0xb85c=['./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','condition','priorityTrue','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','lodash','html-to-text'];(function(_0x507d7d,_0x2da6a2){var _0x580193=function(_0x5122d0){while(--_0x5122d0){_0x507d7d['push'](_0x507d7d['shift']());}};_0x580193(++_0x2da6a2);}(_0xb85c,0x76));var _0xcb85=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xb85c[_0x263a74];return _0x2aa86c;};'use strict';var schema=require('validate');var _=require(_0xcb85('0x0'));var htmlToText=require(_0xcb85('0x1'));var utils=require(_0xcb85('0x2'));var logger=require(_0xcb85('0x3'))(_0xcb85('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xcb85('0x5')},'priorityTrue':{'type':_0xcb85('0x6'),'message':_0xcb85('0x7')},'priorityFalse':{'type':_0xcb85('0x6'),'message':_0xcb85('0x8')}});exports[_0xcb85('0x9')]=function(_0xffd519,_0x23c46e){return function(_0x4dc88f){try{var _0x351e03={'condition':htmlToText[_0xcb85('0xa')](utils[_0xcb85('0xb')](_0x23c46e[0x0],this),{'wordwrap':![]})[_0xcb85('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x23c46e[0x1],'priorityFalse':_0x23c46e[0x2]};var _0x2cc76d=gotoif['validate'](_0x351e03,{'typecast':!![]});if(_0x2cc76d[_0xcb85('0xd')]){logger[_0xcb85('0xe')](_0xcb85('0xf'),_0xffd519,_[_0xcb85('0x10')](_0x2cc76d,_0xcb85('0x11'))[_0xcb85('0x12')](',\x20'));_0x4dc88f['stop']();}else{try{var _0x3c7c75=eval('('+_0x351e03[_0xcb85('0x13')]+')');var _0x492014=_0x3c7c75?_0x351e03[_0xcb85('0x14')]:_0x351e03['priorityFalse'];logger[_0xcb85('0x15')](_0xcb85('0x16'),_0xffd519,_0x351e03[_0xcb85('0x13')],_0x3c7c75,_0x492014||_0xcb85('0x17'));if(_0x492014){var _0x5e366d=_[_0xcb85('0x18')](_0x4dc88f['rules'](),{'p':_0x492014});if(_0x5e366d>=0x0){logger[_0xcb85('0x15')](_0xcb85('0x19'),_0xffd519,_0x492014||_0xcb85('0x17'),_0x5e366d);_0x4dc88f['next'](_0x5e366d);}else{logger[_0xcb85('0x15')](_0xcb85('0x1a'),_0xffd519,_0x492014||_0xcb85('0x17'));_0x4dc88f[_0xcb85('0x1b')]();}}else{_0x4dc88f['next']();}}catch(_0x40c8ba){logger['error'](_0xcb85('0x1c'),_0xffd519,_0x40c8ba[_0xcb85('0x11')]);_0x4dc88f['stop']();}}}catch(_0x28955f){logger[_0xcb85('0xe')](_0xcb85('0xf'),_0xffd519,JSON[_0xcb85('0x1d')](_0x28955f));_0x4dc88f['stop']();}};};
\ No newline at end of file
index 8783900..df8b560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbcb=['findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','routing','number','consequence','length','error','[%s][GOTOP]\x20%s','map','join','stop','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0xfb944e,_0x438a38){var _0x21a954=function(_0x22cc75){while(--_0x22cc75){_0xfb944e['push'](_0xfb944e['shift']());}};_0x21a954(++_0x438a38);}(_0xbbcb,0x1e1));var _0xbbbc=function(_0x1db793,_0xb40389){_0x1db793=_0x1db793-0x0;var _0x2e1a49=_0xbbcb[_0x1db793];return _0x2e1a49;};'use strict';var schema=require(_0xbbbc('0x0'));var _=require(_0xbbbc('0x1'));var logger=require('../../../../config/logger')(_0xbbbc('0x2'));var gotop=schema({'priority':{'type':_0xbbbc('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0xbbbc('0x4')]=function(_0x2cf116,_0x3bd1cf){return function(_0x4d37e2){try{var _0x1a9e46={'priority':_0x3bd1cf[0x0]};var _0x5b9880=gotop[_0xbbbc('0x0')](_0x1a9e46,{'typecast':!![]});if(_0x5b9880[_0xbbbc('0x5')]){logger[_0xbbbc('0x6')](_0xbbbc('0x7'),_0x2cf116,_[_0xbbbc('0x8')](_0x5b9880,'message')[_0xbbbc('0x9')](',\x20'));_0x4d37e2[_0xbbbc('0xa')]();}else{logger['info'](_0xbbbc('0xb'),_0x2cf116,_0x1a9e46[_0xbbbc('0xc')]);if(_0x1a9e46['priority']){var _0x310a1d=_[_0xbbbc('0xd')](_0x4d37e2[_0xbbbc('0xe')](),{'p':_0x1a9e46[_0xbbbc('0xc')]});if(_0x310a1d>=0x0){logger['info'](_0xbbbc('0xf'),_0x2cf116,_0x1a9e46[_0xbbbc('0xc')]||_0xbbbc('0x10'),_0x310a1d);_0x4d37e2[_0xbbbc('0x10')](_0x310a1d);}else{logger['info'](_0xbbbc('0x11'),_0x2cf116,_0x1a9e46[_0xbbbc('0xc')]||_0xbbbc('0x10'));_0x4d37e2[_0xbbbc('0xa')]();}}else{_0x4d37e2['next']();}}}catch(_0x1b8b3b){logger[_0xbbbc('0x6')](_0xbbbc('0x7'),_0x2cf116,JSON[_0xbbbc('0x12')](_0x1b8b3b));_0x4d37e2[_0xbbbc('0xa')]();}};};
\ No newline at end of file
+var _0xfd7f=['info','[%s][GOTOP]\x20priority\x20%s','priority','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','error','stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','[%s][GOTOP]\x20%s','map','message','join','stop'];(function(_0x53088a,_0x3f4aa6){var _0x3e60df=function(_0x18486f){while(--_0x18486f){_0x53088a['push'](_0x53088a['shift']());}};_0x3e60df(++_0x3f4aa6);}(_0xfd7f,0xc6));var _0xffd7=function(_0x4f6309,_0xe71e00){_0x4f6309=_0x4f6309-0x0;var _0x1c43af=_0xfd7f[_0x4f6309];return _0x1c43af;};'use strict';var schema=require(_0xffd7('0x0'));var _=require(_0xffd7('0x1'));var logger=require(_0xffd7('0x2'))(_0xffd7('0x3'));var gotop=schema({'priority':{'type':_0xffd7('0x4'),'required':!![],'message':_0xffd7('0x5')}});exports['consequence']=function(_0x267e0,_0x295ce7){return function(_0x36c8a2){try{var _0x4df4ce={'priority':_0x295ce7[0x0]};var _0xf0efa2=gotop[_0xffd7('0x0')](_0x4df4ce,{'typecast':!![]});if(_0xf0efa2[_0xffd7('0x6')]){logger['error'](_0xffd7('0x7'),_0x267e0,_[_0xffd7('0x8')](_0xf0efa2,_0xffd7('0x9'))[_0xffd7('0xa')](',\x20'));_0x36c8a2[_0xffd7('0xb')]();}else{logger[_0xffd7('0xc')](_0xffd7('0xd'),_0x267e0,_0x4df4ce[_0xffd7('0xe')]);if(_0x4df4ce[_0xffd7('0xe')]){var _0x2c01e5=_['findIndex'](_0x36c8a2[_0xffd7('0xf')](),{'p':_0x4df4ce[_0xffd7('0xe')]});if(_0x2c01e5>=0x0){logger[_0xffd7('0xc')](_0xffd7('0x10'),_0x267e0,_0x4df4ce[_0xffd7('0xe')]||_0xffd7('0x11'),_0x2c01e5);_0x36c8a2[_0xffd7('0x11')](_0x2c01e5);}else{logger[_0xffd7('0xc')](_0xffd7('0x12'),_0x267e0,_0x4df4ce[_0xffd7('0xe')]||_0xffd7('0x11'));_0x36c8a2[_0xffd7('0xb')]();}}else{_0x36c8a2[_0xffd7('0x11')]();}}}catch(_0x1c6187){logger[_0xffd7('0x13')](_0xffd7('0x7'),_0x267e0,JSON[_0xffd7('0x14')](_0x1c6187));_0x36c8a2[_0xffd7('0xb')]();}};};
\ No newline at end of file
index 6baafd1..14f88c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a3=['Message','create','then','[%s][MESSAGE]\x20%s','body','next','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','account','upperFirst','AccountId','InteractionId','interaction'];(function(_0x3d2f37,_0x3738ca){var _0x2a762c=function(_0x2e5d82){while(--_0x2e5d82){_0x3d2f37['push'](_0x3d2f37['shift']());}};_0x2a762c(++_0x3738ca);}(_0x28a3,0x79));var _0x328a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x28a3[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x328a('0x0'));var utils=require(_0x328a('0x1'));var logger=require(_0x328a('0x2'))(_0x328a('0x3'));var rpc={'chatMessage':require(_0x328a('0x4')),'openchannelMessage':require(_0x328a('0x5')),'mailMessage':require(_0x328a('0x6')),'smsMessage':require(_0x328a('0x7')),'faxMessage':require(_0x328a('0x8')),'whatsappMessage':require(_0x328a('0x9'))};exports[_0x328a('0xa')]=function(_0x5c57d8,_0x127280){return function(_0x329f35){try{var _0xcdd140={'body':utils[_0x328a('0xb')](_0x127280[0x0],this),'ContactId':this[_0x328a('0xc')]['id']};if(this[_0x328a('0xd')]==='chat'){_0xcdd140['ChatWebsiteId']=this[_0x328a('0xe')]['id'];}else{_0xcdd140[_[_0x328a('0xf')](this[_0x328a('0xd')])+_0x328a('0x10')]=this[_0x328a('0xe')]['id'];}_0xcdd140[_[_0x328a('0xf')](this[_0x328a('0xd')])+_0x328a('0x11')]=this[_0x328a('0x12')]['id'];if(rpc[this[_0x328a('0xd')]+'Message']){return rpc[this[_0x328a('0xd')]+_0x328a('0x13')][_0x328a('0x14')](_0xcdd140)[_0x328a('0x15')](function(_0x44fb9b){logger['info'](_0x328a('0x16'),_0x5c57d8,_0xcdd140[_0x328a('0x17')]);_0x329f35[_0x328a('0x18')]();})['catch'](function(_0x3e028f){logger[_0x328a('0x19')](_0x328a('0x16'),_0x5c57d8,JSON[_0x328a('0x1a')](_0x3e028f));_0x329f35['stop']();});}}catch(_0x13c555){logger[_0x328a('0x19')]('[%s][MESSAGE]\x20%s',_0x5c57d8,JSON[_0x328a('0x1a')](_0x13c555));_0x329f35[_0x328a('0x1b')]();}};};
\ No newline at end of file
+var _0x586b=['upperFirst','AccountId','interaction','Message','then','info','[%s][MESSAGE]\x20%s','next','error','stringify','stop','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','getMustacheRender','contact','channel','ChatWebsiteId','account'];(function(_0x491763,_0x4f0b08){var _0xa86977=function(_0x37add2){while(--_0x37add2){_0x491763['push'](_0x491763['shift']());}};_0xa86977(++_0x4f0b08);}(_0x586b,0x1bb));var _0xb586=function(_0x33dcf6,_0x4f21b6){_0x33dcf6=_0x33dcf6-0x0;var _0x16a781=_0x586b[_0x33dcf6];return _0x16a781;};'use strict';var _=require('lodash');var utils=require('./utils');var logger=require(_0xb586('0x0'))(_0xb586('0x1'));var rpc={'chatMessage':require(_0xb586('0x2')),'openchannelMessage':require(_0xb586('0x3')),'mailMessage':require(_0xb586('0x4')),'smsMessage':require(_0xb586('0x5')),'faxMessage':require(_0xb586('0x6')),'whatsappMessage':require(_0xb586('0x7'))};exports['consequence']=function(_0x51b75e,_0x2c242b){return function(_0x3cf312){try{var _0x3ca980={'body':utils[_0xb586('0x8')](_0x2c242b[0x0],this),'ContactId':this[_0xb586('0x9')]['id']};if(this[_0xb586('0xa')]==='chat'){_0x3ca980[_0xb586('0xb')]=this[_0xb586('0xc')]['id'];}else{_0x3ca980[_[_0xb586('0xd')](this[_0xb586('0xa')])+_0xb586('0xe')]=this[_0xb586('0xc')]['id'];}_0x3ca980[_[_0xb586('0xd')](this[_0xb586('0xa')])+'InteractionId']=this[_0xb586('0xf')]['id'];if(rpc[this['channel']+_0xb586('0x10')]){return rpc[this[_0xb586('0xa')]+_0xb586('0x10')]['create'](_0x3ca980)[_0xb586('0x11')](function(_0x1331ba){logger[_0xb586('0x12')](_0xb586('0x13'),_0x51b75e,_0x3ca980['body']);_0x3cf312[_0xb586('0x14')]();})['catch'](function(_0x20c90a){logger[_0xb586('0x15')](_0xb586('0x13'),_0x51b75e,JSON[_0xb586('0x16')](_0x20c90a));_0x3cf312[_0xb586('0x17')]();});}}catch(_0xb6dd9){logger[_0xb586('0x15')](_0xb586('0x13'),_0x51b75e,JSON[_0xb586('0x16')](_0xb6dd9));_0x3cf312[_0xb586('0x17')]();}};};
\ No newline at end of file
index 3e4eaaf..aabaa2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aa9=['./utils','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','error','stringify','stop'];(function(_0x15ebfd,_0xbc1af8){var _0x268375=function(_0x32992b){while(--_0x32992b){_0x15ebfd['push'](_0x15ebfd['shift']());}};_0x268375(++_0xbc1af8);}(_0x5aa9,0x1c2));var _0x95aa=function(_0x33a597,_0x210be1){_0x33a597=_0x33a597-0x0;var _0x1481f4=_0x5aa9[_0x33a597];return _0x1481f4;};'use strict';var utils=require(_0x95aa('0x0'));var logger=require('../../../../config/logger')(_0x95aa('0x1'));exports[_0x95aa('0x2')]=function(_0x5b9a54,_0xa49f6e){return function(_0x1499a9){try{logger[_0x95aa('0x3')](_0x95aa('0x4'),_0x5b9a54,utils[_0x95aa('0x5')](_0xa49f6e[0x0],this));_0x1499a9['next']();}catch(_0x5872f4){logger[_0x95aa('0x6')](_0x95aa('0x4'),_0x5b9a54,JSON[_0x95aa('0x7')](_0x5872f4));_0x1499a9[_0x95aa('0x8')]();}};};
\ No newline at end of file
+var _0x9a02=['consequence','info','getMustacheRender','next','error','./utils','../../../../config/logger','routing'];(function(_0x4f7d85,_0x2db49b){var _0x2f37dd=function(_0x138831){while(--_0x138831){_0x4f7d85['push'](_0x4f7d85['shift']());}};_0x2f37dd(++_0x2db49b);}(_0x9a02,0xbd));var _0x29a0=function(_0x3371ef,_0xffc5dd){_0x3371ef=_0x3371ef-0x0;var _0x46cbe7=_0x9a02[_0x3371ef];return _0x46cbe7;};'use strict';var utils=require(_0x29a0('0x0'));var logger=require(_0x29a0('0x1'))(_0x29a0('0x2'));exports[_0x29a0('0x3')]=function(_0x1810bc,_0x422166){return function(_0x35195a){try{logger[_0x29a0('0x4')]('[%s][NOOP]\x20%s',_0x1810bc,utils[_0x29a0('0x5')](_0x422166[0x0],this));_0x35195a[_0x29a0('0x6')]();}catch(_0x4bc134){logger[_0x29a0('0x7')]('[%s][NOOP]\x20%s',_0x1810bc,JSON['stringify'](_0x4bc134));_0x35195a['stop']();}};};
\ No newline at end of file
index 0c16f91..bde4349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd742=['emit','clone','format','%sQueuesWaitingInteractions','pick','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','chat','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','accepted','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','update','error','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','timeout','createQueue','atimeout','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','rules','[%s][QUEUE]\x20APPLICATION\x20END','close','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','queue_id','account','queue','from'];(function(_0x13bbc2,_0x12ec45){var _0x2d65e4=function(_0x5ec9f9){while(--_0x5ec9f9){_0x13bbc2['push'](_0x13bbc2['shift']());}};_0x2d65e4(++_0x12ec45);}(_0xd742,0x1ca));var _0x2d74=function(_0x53ab39,_0x300399){_0x53ab39=_0x53ab39-0x0;var _0x281fe6=_0xd742[_0x53ab39];return _0x281fe6;};'use strict';var schema=require(_0x2d74('0x0'));var _=require(_0x2d74('0x1'));var util=require('util');var seqqueue=require(_0x2d74('0x2'));var moment=require(_0x2d74('0x3'));var Redis=require(_0x2d74('0x4'));var config=require(_0x2d74('0x5'));var logger=require(_0x2d74('0x6'))(_0x2d74('0x7'));var strategy=require(_0x2d74('0x8'));config[_0x2d74('0x9')]=_[_0x2d74('0xa')](config[_0x2d74('0x9')],{'host':_0x2d74('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2d74('0x9')]));var attributes=['id',_0x2d74('0xc'),_0x2d74('0xd'),_0x2d74('0xe'),_0x2d74('0xf'),'joinAt'];function emit(_0x36a018,_0x455b5a,_0x10501c){io['to'](_0x36a018)[_0x2d74('0x10')](_0x455b5a,_0x10501c);}function emitChannelQueueInteraction(_0x49f95a,_0x5466dd,_0x6ddbe5,_0x3a5e49,_0x573484,_0x5ea0f0,_0x435ec9,_0x114056){var _0x3b6920=_[_0x2d74('0x11')](_0x6ddbe5);_0x3b6920[_0x2d74('0xc')]=_0x114056;_0x3b6920[_0x2d74('0xe')]=_0x5466dd;_0x3b6920[_0x2d74('0xd')]=_0x3a5e49;_0x3b6920['id']=_0x573484;if(_0x5ea0f0){_0x435ec9[util[_0x2d74('0x12')](_0x2d74('0x13'),_0x49f95a)][_0x573484]=_[_0x2d74('0x14')](_0x3b6920,attributes);}else{delete _0x435ec9[util[_0x2d74('0x12')](_0x2d74('0x13'),_0x49f95a)][_0x573484];}emit(util[_0x2d74('0x12')]('%s:queue:%s',_0x49f95a,_0x5466dd),util[_0x2d74('0x12')]('%s_queue_waiting_interaction:%s',_0x49f95a,_0x5ea0f0?_0x2d74('0x15'):_0x2d74('0x16')),_[_0x2d74('0x14')](_0x3b6920,attributes));}var rpc={'openchannelQueueReport':require(_0x2d74('0x17')),'mailQueueReport':require(_0x2d74('0x18')),'chatQueueReport':require(_0x2d74('0x19')),'smsQueueReport':require(_0x2d74('0x1a')),'faxQueueReport':require(_0x2d74('0x1b')),'whatsappQueueReport':require(_0x2d74('0x1c'))};var queue=schema({'name':{'type':_0x2d74('0x1d'),'required':!![],'message':_0x2d74('0x1e')},'timeout':{'type':_0x2d74('0x1f'),'message':_0x2d74('0x20')}});function startRouting(_0x16cb28,_0x4621ac,_0x11d2c6,_0x202c10){if(_0x16cb28&&_0x4621ac&&_0x11d2c6){_0x4621ac[_0x2d74('0x21')]+=0x1;var _0x56aea2={'uniqueid':_0x16cb28,'from':_0x11d2c6[_0x2d74('0x22')]?_0x11d2c6[_0x2d74('0x22')][_0x2d74('0xf')]:'','joinAt':moment()[_0x2d74('0x12')](_0x2d74('0x23')),'ContactId':_0x11d2c6[_0x2d74('0x24')]?_0x11d2c6[_0x2d74('0x24')]['id']:null,'ListId':_0x11d2c6['list']?_0x11d2c6[_0x2d74('0x25')]['id']:null};_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6[_0x2d74('0x27')])+_0x2d74('0x28')]=_0x4621ac['id']||null;_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6[_0x2d74('0x27')])+_0x2d74('0x29')]=_0x11d2c6[_0x2d74('0x2a')]?_0x11d2c6['interaction']['id']:null;_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6[_0x2d74('0x27')])+_0x2d74('0x2b')]=_0x11d2c6[_0x2d74('0x2c')]?_0x11d2c6[_0x2d74('0x2c')]['id']:null;_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6['channel'])+(_0x11d2c6['channel']!==_0x2d74('0x2d')?'AccountId':_0x2d74('0x2e'))]=_0x11d2c6[_0x2d74('0xd')]?_0x11d2c6[_0x2d74('0xd')]['id']:null;logger[_0x2d74('0x2f')](util['format'](_0x2d74('0x30'),_0x16cb28,_0x4621ac[_0x2d74('0x31')]));emitChannelQueueInteraction(_0x11d2c6['channel'],_0x4621ac[_0x2d74('0x31')],_0x56aea2,_0x11d2c6[_0x2d74('0xd')]['name'],_0x11d2c6[_0x2d74('0x2c')]['id'],!![],_0x202c10,_0x4621ac['id']);if(rpc[_0x11d2c6[_0x2d74('0x27')]+_0x2d74('0x32')]){return rpc[_0x11d2c6[_0x2d74('0x27')]+_0x2d74('0x32')][_0x2d74('0x33')](_0x56aea2)[_0x2d74('0x34')](function(_0x2f7a7e){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x46abeb,_0x49652a,_0x353b4b,_0x5e1485){if(_0x46abeb&&_0x49652a){_0x49652a[_0x2d74('0x21')]-=0x1;var _0x278676={'leaveAt':moment()[_0x2d74('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x2d74('0x12')](_0x2d74('0x23')),'reason':_0x2d74('0x35')};logger[_0x2d74('0x2f')](util['format'](_0x2d74('0x36'),_0x46abeb,_0x49652a[_0x2d74('0x31')]));emitChannelQueueInteraction(_0x353b4b['channel'],_0x49652a[_0x2d74('0x31')],_0x353b4b['body'],_0x353b4b['account'][_0x2d74('0x31')],_0x353b4b['message']['id'],![],_0x5e1485,_0x49652a['id']);if(rpc[_0x353b4b[_0x2d74('0x27')]+_0x2d74('0x32')]){return rpc[_0x353b4b[_0x2d74('0x27')]+_0x2d74('0x32')]['update'](_0x46abeb,_0x278676)[_0x2d74('0x34')](function(_0x873572){logger['error'](_0x2d74('0x37'));});}}}function endRouting(_0x483c00,_0x26e712,_0x3a6a0d,_0x359cb0){if(_0x483c00&&_0x26e712){_0x26e712[_0x2d74('0x21')]-=0x1;var _0x43f36d={'leaveAt':moment()[_0x2d74('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()['format'](_0x2d74('0x23')),'reason':'timeout'};logger[_0x2d74('0x2f')](util[_0x2d74('0x12')](_0x2d74('0x38'),_0x483c00,_0x26e712[_0x2d74('0x31')]));emitChannelQueueInteraction(_0x3a6a0d[_0x2d74('0x27')],_0x26e712[_0x2d74('0x31')],_0x3a6a0d[_0x2d74('0x22')],_0x3a6a0d[_0x2d74('0xd')]['name'],_0x3a6a0d[_0x2d74('0x2c')]['id'],![],_0x359cb0);if(rpc[_0x3a6a0d[_0x2d74('0x27')]+_0x2d74('0x32')]){return rpc[_0x3a6a0d[_0x2d74('0x27')]+_0x2d74('0x32')][_0x2d74('0x39')](_0x483c00,_0x43f36d)[_0x2d74('0x34')](function(_0x571574){logger[_0x2d74('0x3a')](_0x2d74('0x37'));});}}}function handleFindQueue(_0x2c4a8c){return function(_0x1608f6){return _0x1608f6[_0x2d74('0x31')]['toLowerCase']()===_0x2c4a8c[_0x2d74('0x3b')]();};}exports[_0x2d74('0x3c')]=function(_0x4a3cc4,_0x105ac8,_0x355f66,_0x5a2989){return function(_0x1652a8){try{var _0x2b2eb2={'name':_0x105ac8[0x0],'timeout':_0x105ac8[0x1]};var _0x1b038e=queue['validate'](_0x2b2eb2,{'typecast':!![]});if(_0x1b038e[_0x2d74('0x3d')]){logger['error'](_0x2d74('0x3e'),_0x4a3cc4,_[_0x2d74('0x3f')](_0x1b038e,_0x2d74('0x2c'))['join'](',\x20'));_0x1652a8[_0x2d74('0x40')]();}else{var _0x58b0e2=_[_0x2d74('0x41')](_0x355f66[_0x5a2989['channel']+'Queues'],handleFindQueue(_0x2b2eb2[_0x2d74('0x31')]));if(_0x58b0e2){startRouting(_0x4a3cc4,_0x58b0e2,_0x5a2989,_0x355f66);var _0xb866eb=(_0x58b0e2['timeout']||0xa)*0x3e8;var _0x2e290b=(_0x2b2eb2[_0x2d74('0x42')]||0x14)*0x3e8;var _0xa9c1c6,_0x196e7a;if(_0xb866eb>_0x2e290b){_0x2e290b=_0xb866eb;}var _0x2741fa=seqqueue[_0x2d74('0x43')](_0xb866eb);_0x2741fa['id']=_0x4a3cc4;_0x2741fa[_0x2d74('0x44')]=_0xb866eb;_0x2741fa[_0x2d74('0x45')]=_0x2e290b;_0x2741fa[_0x2d74('0x27')]=_0x5a2989[_0x2d74('0x27')];_0x355f66['rules'][_0x4a3cc4]['on'](_0x2d74('0x46'),function(){logger[_0x2d74('0x2f')](_0x2d74('0x47'),_0x4a3cc4);stopRouting(_0x4a3cc4,_0x58b0e2,_0x5a2989,_0x355f66);clearTimeout(_0xa9c1c6);_0xa9c1c6=undefined;_0x2741fa['close'](!![]);if(_0x355f66[_0x2d74('0x48')][_0x4a3cc4]){delete _0x355f66[_0x2d74('0x48')][_0x4a3cc4];}_0x1652a8[_0x2d74('0x40')]();});_0x355f66[_0x2d74('0x48')][_0x4a3cc4]['on']('complete',function(){if(_0x355f66['rules'][_0x4a3cc4]){delete _0x355f66[_0x2d74('0x48')][_0x4a3cc4];}});_0xa9c1c6=setTimeout(function(){logger['info'](_0x2d74('0x49'),_0x4a3cc4);endRouting(_0x4a3cc4,_0x58b0e2,_0x5a2989,_0x355f66);clearTimeout(_0xa9c1c6);_0x2741fa[_0x2d74('0x4a')](!![]);_0x1652a8['next']();},_0x2e290b);switch(_0x58b0e2['strategy']){case _0x2d74('0x4b'):strategy[_0x2d74('0x4b')](_0x2741fa,_0x58b0e2,_0x355f66,_0x5a2989);break;default:strategy[_0x2d74('0x4c')](_0x2741fa,_0x58b0e2,_0x355f66,_0x5a2989);}}else{logger[_0x2d74('0x3a')](_0x2d74('0x4d'),_0x4a3cc4,_0x2b2eb2[_0x2d74('0x31')]);_0x1652a8['stop']();}}}catch(_0x47fd5f){console[_0x2d74('0x4e')](_0x47fd5f);logger[_0x2d74('0x3a')](_0x2d74('0x3e'),_0x4a3cc4,_0x47fd5f['stack']);_0x1652a8[_0x2d74('0x40')]();}};};
\ No newline at end of file
+var _0xcb2c=['../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','QueueId','InteractionId','interaction','channel','MessageId','message','chat','info','name','QueueReport','create','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','catch','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','clone','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','save','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport'];(function(_0x47f67b,_0x11ca4f){var _0x27c23e=function(_0x1fe2ac){while(--_0x1fe2ac){_0x47f67b['push'](_0x47f67b['shift']());}};_0x27c23e(++_0x11ca4f);}(_0xcb2c,0x17a));var _0xccb2=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xcb2c[_0x618414];return _0x21c19a;};'use strict';var schema=require(_0xccb2('0x0'));var _=require(_0xccb2('0x1'));var util=require(_0xccb2('0x2'));var seqqueue=require(_0xccb2('0x3'));var moment=require(_0xccb2('0x4'));var Redis=require('ioredis');var config=require(_0xccb2('0x5'));var logger=require(_0xccb2('0x6'))(_0xccb2('0x7'));var strategy=require(_0xccb2('0x8'));config[_0xccb2('0x9')]=_[_0xccb2('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xccb2('0xb'))(new Redis(config[_0xccb2('0x9')]));var attributes=['id',_0xccb2('0xc'),_0xccb2('0xd'),_0xccb2('0xe'),_0xccb2('0xf'),_0xccb2('0x10')];function emit(_0x29f2cb,_0xf90f55,_0x42ee06){io['to'](_0x29f2cb)[_0xccb2('0x11')](_0xf90f55,_0x42ee06);}function emitChannelQueueInteraction(_0x159e40,_0x55e1ba,_0x24a467,_0x3572d4,_0x2594ce,_0x1f49f4,_0x3f6789,_0x56c9eb){var _0x1f51be=_[_0xccb2('0x12')](_0x24a467);_0x1f51be['queue_id']=_0x56c9eb;_0x1f51be[_0xccb2('0xe')]=_0x55e1ba;_0x1f51be[_0xccb2('0xd')]=_0x3572d4;_0x1f51be['id']=_0x2594ce;if(_0x1f49f4){_0x3f6789[util[_0xccb2('0x13')](_0xccb2('0x14'),_0x159e40)][_0x2594ce]=_[_0xccb2('0x15')](_0x1f51be,attributes);}else{delete _0x3f6789[util[_0xccb2('0x13')](_0xccb2('0x14'),_0x159e40)][_0x2594ce];}emit(util[_0xccb2('0x13')](_0xccb2('0x16'),_0x159e40,_0x55e1ba),util[_0xccb2('0x13')]('%s_queue_waiting_interaction:%s',_0x159e40,_0x1f49f4?_0xccb2('0x17'):_0xccb2('0x18')),_[_0xccb2('0x15')](_0x1f51be,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xccb2('0x19')),'chatQueueReport':require(_0xccb2('0x1a')),'smsQueueReport':require(_0xccb2('0x1b')),'faxQueueReport':require(_0xccb2('0x1c')),'whatsappQueueReport':require(_0xccb2('0x1d'))};var queue=schema({'name':{'type':_0xccb2('0x1e'),'required':!![],'message':_0xccb2('0x1f')},'timeout':{'type':_0xccb2('0x20'),'message':_0xccb2('0x21')}});function startRouting(_0x3b43b4,_0x429817,_0x46f0e0,_0x5b411f){if(_0x3b43b4&&_0x429817&&_0x46f0e0){_0x429817[_0xccb2('0x22')]+=0x1;var _0x256919={'uniqueid':_0x3b43b4,'from':_0x46f0e0[_0xccb2('0x23')]?_0x46f0e0[_0xccb2('0x23')][_0xccb2('0xf')]:'','joinAt':moment()['format'](_0xccb2('0x24')),'ContactId':_0x46f0e0[_0xccb2('0x25')]?_0x46f0e0[_0xccb2('0x25')]['id']:null,'ListId':_0x46f0e0['list']?_0x46f0e0[_0xccb2('0x26')]['id']:null};_0x256919[_[_0xccb2('0x27')](_0x46f0e0['channel'])+_0xccb2('0x28')]=_0x429817['id']||null;_0x256919[_[_0xccb2('0x27')](_0x46f0e0['channel'])+_0xccb2('0x29')]=_0x46f0e0[_0xccb2('0x2a')]?_0x46f0e0[_0xccb2('0x2a')]['id']:null;_0x256919[_[_0xccb2('0x27')](_0x46f0e0[_0xccb2('0x2b')])+_0xccb2('0x2c')]=_0x46f0e0[_0xccb2('0x2d')]?_0x46f0e0[_0xccb2('0x2d')]['id']:null;_0x256919[_[_0xccb2('0x27')](_0x46f0e0['channel'])+(_0x46f0e0[_0xccb2('0x2b')]!==_0xccb2('0x2e')?'AccountId':'WebsiteId')]=_0x46f0e0['account']?_0x46f0e0[_0xccb2('0xd')]['id']:null;logger[_0xccb2('0x2f')](util[_0xccb2('0x13')]('[%s][START:QUEUE][NAME:%s]',_0x3b43b4,_0x429817[_0xccb2('0x30')]));emitChannelQueueInteraction(_0x46f0e0[_0xccb2('0x2b')],_0x429817['name'],_0x256919,_0x46f0e0[_0xccb2('0xd')][_0xccb2('0x30')],_0x46f0e0['message']['id'],!![],_0x5b411f,_0x429817['id']);if(rpc[_0x46f0e0['channel']+_0xccb2('0x31')]){return rpc[_0x46f0e0[_0xccb2('0x2b')]+_0xccb2('0x31')][_0xccb2('0x32')](_0x256919)['catch'](function(_0x566e7c){logger[_0xccb2('0x33')](_0xccb2('0x34'));});}}}function stopRouting(_0x5ba668,_0x6a9835,_0x182aac,_0x3a55d0){if(_0x5ba668&&_0x6a9835){_0x6a9835[_0xccb2('0x22')]-=0x1;var _0x146658={'leaveAt':moment()[_0xccb2('0x13')](_0xccb2('0x24')),'acceptAt':moment()[_0xccb2('0x13')](_0xccb2('0x24')),'reason':'accepted'};logger[_0xccb2('0x2f')](util[_0xccb2('0x13')](_0xccb2('0x35'),_0x5ba668,_0x6a9835[_0xccb2('0x30')]));emitChannelQueueInteraction(_0x182aac[_0xccb2('0x2b')],_0x6a9835[_0xccb2('0x30')],_0x182aac[_0xccb2('0x23')],_0x182aac[_0xccb2('0xd')]['name'],_0x182aac[_0xccb2('0x2d')]['id'],![],_0x3a55d0,_0x6a9835['id']);if(rpc[_0x182aac['channel']+_0xccb2('0x31')]){return rpc[_0x182aac[_0xccb2('0x2b')]+_0xccb2('0x31')]['update'](_0x5ba668,_0x146658)['catch'](function(_0x3db1b7){logger[_0xccb2('0x33')](_0xccb2('0x36'));});}}}function endRouting(_0xef825a,_0x165545,_0x3a1e80,_0x58edd8){if(_0xef825a&&_0x165545){_0x165545[_0xccb2('0x22')]-=0x1;var _0x4b3d49={'leaveAt':moment()[_0xccb2('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xccb2('0x13')](_0xccb2('0x24')),'reason':_0xccb2('0x37')};logger[_0xccb2('0x2f')](util[_0xccb2('0x13')](_0xccb2('0x38'),_0xef825a,_0x165545[_0xccb2('0x30')]));emitChannelQueueInteraction(_0x3a1e80[_0xccb2('0x2b')],_0x165545[_0xccb2('0x30')],_0x3a1e80[_0xccb2('0x23')],_0x3a1e80[_0xccb2('0xd')]['name'],_0x3a1e80[_0xccb2('0x2d')]['id'],![],_0x58edd8);if(rpc[_0x3a1e80[_0xccb2('0x2b')]+'QueueReport']){return rpc[_0x3a1e80[_0xccb2('0x2b')]+'QueueReport'][_0xccb2('0x39')](_0xef825a,_0x4b3d49)[_0xccb2('0x3a')](function(_0x86676e){logger[_0xccb2('0x33')](_0xccb2('0x36'));});}}}function handleFindQueue(_0x3f1428){return function(_0x36fc9e){return _0x36fc9e['name'][_0xccb2('0x3b')]()===_0x3f1428[_0xccb2('0x3b')]();};}exports[_0xccb2('0x3c')]=function(_0x478407,_0x415fbb,_0x2bcd5e,_0x268280){return function(_0x2234de){try{var _0x204594={'name':_0x415fbb[0x0],'timeout':_0x415fbb[0x1]};var _0x1a6a93=queue[_0xccb2('0x0')](_0x204594,{'typecast':!![]});if(_0x1a6a93[_0xccb2('0x3d')]){logger[_0xccb2('0x33')](_0xccb2('0x3e'),_0x478407,_['map'](_0x1a6a93,_0xccb2('0x2d'))[_0xccb2('0x3f')](',\x20'));_0x2234de[_0xccb2('0x40')]();}else{var _0x3a2aaa=_[_0xccb2('0x41')](_0x2bcd5e[_0x268280[_0xccb2('0x2b')]+_0xccb2('0x42')],handleFindQueue(_0x204594['name']));if(_0x3a2aaa){startRouting(_0x478407,_0x3a2aaa,_0x268280,_0x2bcd5e);var _0x739a0b=(_0x3a2aaa[_0xccb2('0x37')]||0xa)*0x3e8;var _0x433508=(_0x204594['timeout']||0x14)*0x3e8;var _0x2d66b8,_0x4655be;if(_0x739a0b>_0x433508){_0x433508=_0x739a0b;}var _0x1a237f=seqqueue[_0xccb2('0x43')](_0x739a0b);_0x1a237f['id']=_0x478407;_0x1a237f[_0xccb2('0x44')]=_0x739a0b;_0x1a237f[_0xccb2('0x45')]=_0x433508;_0x1a237f['channel']=_0x268280[_0xccb2('0x2b')];_0x2bcd5e[_0xccb2('0x46')][_0x478407]['on'](_0xccb2('0x47'),function(){logger[_0xccb2('0x2f')](_0xccb2('0x48'),_0x478407);stopRouting(_0x478407,_0x3a2aaa,_0x268280,_0x2bcd5e);clearTimeout(_0x2d66b8);_0x2d66b8=undefined;_0x1a237f[_0xccb2('0x49')](!![]);if(_0x2bcd5e[_0xccb2('0x46')][_0x478407]){delete _0x2bcd5e[_0xccb2('0x46')][_0x478407];}_0x2234de[_0xccb2('0x40')]();});_0x2bcd5e[_0xccb2('0x46')][_0x478407]['on'](_0xccb2('0x4a'),function(){if(_0x2bcd5e[_0xccb2('0x46')][_0x478407]){delete _0x2bcd5e[_0xccb2('0x46')][_0x478407];}});_0x2d66b8=setTimeout(function(){logger['info'](_0xccb2('0x4b'),_0x478407);endRouting(_0x478407,_0x3a2aaa,_0x268280,_0x2bcd5e);clearTimeout(_0x2d66b8);_0x1a237f[_0xccb2('0x49')](!![]);_0x2234de['next']();},_0x433508);switch(_0x3a2aaa[_0xccb2('0x4c')]){case _0xccb2('0x4d'):strategy[_0xccb2('0x4d')](_0x1a237f,_0x3a2aaa,_0x2bcd5e,_0x268280);break;default:strategy[_0xccb2('0x4e')](_0x1a237f,_0x3a2aaa,_0x2bcd5e,_0x268280);}}else{logger[_0xccb2('0x33')](_0xccb2('0x4f'),_0x478407,_0x204594['name']);_0x2234de[_0xccb2('0x40')]();}}}catch(_0x2f9669){console[_0xccb2('0x50')](_0x2f9669);logger[_0xccb2('0x33')]('[%s][QUEUE]\x20%s',_0x478407,_0x2f9669['stack']);_0x2234de[_0xccb2('0x40')]();}};};
\ No newline at end of file
index e3800ad..8c2cdd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceb3=['bind','handleTimeout','timeout','handleDrained','prototype','push','info','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','writeLog','RINGING','forcedOwnership','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','uuid','./util','routing','notificationId','squeue','realtime','handleRun'];(function(_0x63ce24,_0x44eb11){var _0x35f6f1=function(_0x13c8a0){while(--_0x13c8a0){_0x63ce24['push'](_0x63ce24['shift']());}};_0x35f6f1(++_0x44eb11);}(_0xceb3,0x139));var _0x3ceb=function(_0x55fa03,_0xcb96c2){_0x55fa03=_0x55fa03-0x0;var _0x2cd7cd=_0xceb3[_0x55fa03];return _0x2cd7cd;};'use strict';var _=require('lodash');var uuid=require(_0x3ceb('0x0'));var util=require(_0x3ceb('0x1'));var logger=require('../../../../../config/logger')(_0x3ceb('0x2'));var Agent=function(_0xac21b2,_0x534000,_0x4f8542,_0x524994){this[_0x3ceb('0x3')]=uuid['v4']();this[_0x3ceb('0x4')]=_0xac21b2;this['agent']=_0x534000;this[_0x3ceb('0x5')]=_0x4f8542;this[_0x3ceb('0x2')]=_0x524994;this[_0x3ceb('0x4')]['push'](this[_0x3ceb('0x6')][_0x3ceb('0x7')](this),this[_0x3ceb('0x8')]['bind'](this));this['squeue']['on'](_0x3ceb('0x9'),this[_0x3ceb('0x8')]['bind'](this));this[_0x3ceb('0x4')]['on']('drained',this[_0x3ceb('0xa')][_0x3ceb('0x7')](this));};Agent[_0x3ceb('0xb')][_0x3ceb('0xc')]=function(){this['squeue'][_0x3ceb('0xc')](this[_0x3ceb('0x6')][_0x3ceb('0x7')](this),this['handleTimeout'][_0x3ceb('0x7')](this));};Agent[_0x3ceb('0xb')][_0x3ceb('0xa')]=function(){this[_0x3ceb('0x8')](!![]);};Agent[_0x3ceb('0xb')][_0x3ceb('0x6')]=function(_0x1ac69d){logger[_0x3ceb('0xd')](_0x3ceb('0xe'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);if(_[_0x3ceb('0x10')](this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']])){logger[_0x3ceb('0xd')](_0x3ceb('0x12'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);setTimeout(this[_0x3ceb('0xc')]['bind'](this),0x3e8);}else{if(this['routing']['forcedOwnership']||util[_0x3ceb('0x13')](this['squeue']['id'],this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']],this['squeue'][_0x3ceb('0x14')],![])){this[_0x3ceb('0x5')][_0x3ceb('0x11')][this['agent']['id']][_0x3ceb('0x15')]=!![];this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']][_0x3ceb('0x16')]=undefined;util['showNotification'](this[_0x3ceb('0x3')],this[_0x3ceb('0x4')]['id'],this['realtime'][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']],null,this[_0x3ceb('0x2')]);util[_0x3ceb('0x17')](this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']],_0x3ceb('0x18')+(this[_0x3ceb('0x2')][_0x3ceb('0x19')]?':FORCED':''));}else{logger['info'](_0x3ceb('0x1a'),this['squeue']['id'],this[_0x3ceb('0xf')]['id']);setTimeout(this[_0x3ceb('0xc')][_0x3ceb('0x7')](this),0x3e8);}}};Agent[_0x3ceb('0xb')][_0x3ceb('0x8')]=function(_0x544c33){if(_['isNil'](this[_0x3ceb('0x5')]['agents'][this['agent']['id']])){return logger[_0x3ceb('0xd')](_0x3ceb('0x12'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);}else{logger[_0x3ceb('0xd')](_0x3ceb('0x1b'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);util[_0x3ceb('0x1c')](this[_0x3ceb('0x3')],this['squeue']['id'],this['realtime'][_0x3ceb('0x11')][this['agent']['id']],null,this[_0x3ceb('0x2')]);this['realtime'][_0x3ceb('0x11')][this['agent']['id']][_0x3ceb('0x15')]=![];this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']][_0x3ceb('0x16')]=undefined;util[_0x3ceb('0x17')](this[_0x3ceb('0x4')]['id'],this['realtime']['agents'][this[_0x3ceb('0xf')]['id']],_0x544c33?_0x3ceb('0x1d'):_0x3ceb('0x1e'));}if(!_0x544c33){setTimeout(this[_0x3ceb('0xc')][_0x3ceb('0x7')](this),0x3e8);}};function agent(_0x361654,_0xdc93d5,_0x194fe0,_0x9d154d){return new Agent(_0x361654,_0xdc93d5,_0x194fe0,_0x9d154d);}module[_0x3ceb('0x1f')]=agent;
\ No newline at end of file
+var _0xbfc0=['lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','push','handleRun','bind','handleTimeout','timeout','drained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','STOP','exports'];(function(_0x46d14b,_0x147907){var _0x367dfd=function(_0x117d8e){while(--_0x117d8e){_0x46d14b['push'](_0x46d14b['shift']());}};_0x367dfd(++_0x147907);}(_0xbfc0,0xc0));var _0x0bfc=function(_0xb6e43,_0x1568fc){_0xb6e43=_0xb6e43-0x0;var _0x47c40f=_0xbfc0[_0xb6e43];return _0x47c40f;};'use strict';var _=require(_0x0bfc('0x0'));var uuid=require(_0x0bfc('0x1'));var util=require(_0x0bfc('0x2'));var logger=require(_0x0bfc('0x3'))('routing');var Agent=function(_0x48665c,_0x17c03d,_0xae60bd,_0x4b2380){this[_0x0bfc('0x4')]=uuid['v4']();this[_0x0bfc('0x5')]=_0x48665c;this[_0x0bfc('0x6')]=_0x17c03d;this[_0x0bfc('0x7')]=_0xae60bd;this[_0x0bfc('0x8')]=_0x4b2380;this[_0x0bfc('0x5')][_0x0bfc('0x9')](this[_0x0bfc('0xa')][_0x0bfc('0xb')](this),this[_0x0bfc('0xc')]['bind'](this));this[_0x0bfc('0x5')]['on'](_0x0bfc('0xd'),this[_0x0bfc('0xc')][_0x0bfc('0xb')](this));this[_0x0bfc('0x5')]['on'](_0x0bfc('0xe'),this['handleDrained'][_0x0bfc('0xb')](this));};Agent[_0x0bfc('0xf')][_0x0bfc('0x9')]=function(){this[_0x0bfc('0x5')][_0x0bfc('0x9')](this[_0x0bfc('0xa')]['bind'](this),this[_0x0bfc('0xc')][_0x0bfc('0xb')](this));};Agent[_0x0bfc('0xf')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent['prototype'][_0x0bfc('0xa')]=function(_0x93332b){logger[_0x0bfc('0x10')](_0x0bfc('0x11'),this[_0x0bfc('0x5')]['id'],this['agent']['id']);if(_[_0x0bfc('0x12')](this['realtime'][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']])){logger[_0x0bfc('0x10')](_0x0bfc('0x14'),this[_0x0bfc('0x5')]['id'],this[_0x0bfc('0x6')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this['routing'][_0x0bfc('0x15')]||util['isAgentAvailable'](this[_0x0bfc('0x5')]['id'],this['realtime'][_0x0bfc('0x13')][this['agent']['id']],this[_0x0bfc('0x5')]['channel'],![])){this[_0x0bfc('0x7')][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']][_0x0bfc('0x16')]=!![];this['realtime'][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']][_0x0bfc('0x17')]=undefined;util[_0x0bfc('0x18')](this[_0x0bfc('0x4')],this[_0x0bfc('0x5')]['id'],this['realtime'][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']],null,this[_0x0bfc('0x8')]);util[_0x0bfc('0x19')](this[_0x0bfc('0x5')]['id'],this[_0x0bfc('0x7')][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']],_0x0bfc('0x1a')+(this['routing'][_0x0bfc('0x15')]?_0x0bfc('0x1b'):''));}else{logger[_0x0bfc('0x10')](_0x0bfc('0x1c'),this[_0x0bfc('0x5')]['id'],this[_0x0bfc('0x6')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent[_0x0bfc('0xf')][_0x0bfc('0xc')]=function(_0x26b932){if(_[_0x0bfc('0x12')](this[_0x0bfc('0x7')][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']])){return logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x0bfc('0x5')]['id'],this[_0x0bfc('0x6')]['id']);}else{logger['info'](_0x0bfc('0x1d'),this[_0x0bfc('0x5')]['id'],this['agent']['id']);util['hideNotification'](this[_0x0bfc('0x4')],this['squeue']['id'],this[_0x0bfc('0x7')]['agents'][this['agent']['id']],null,this['routing']);this[_0x0bfc('0x7')]['agents'][this[_0x0bfc('0x6')]['id']][_0x0bfc('0x16')]=![];this[_0x0bfc('0x7')][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']]['busyQueue']=undefined;util[_0x0bfc('0x19')](this[_0x0bfc('0x5')]['id'],this['realtime'][_0x0bfc('0x13')][this[_0x0bfc('0x6')]['id']],_0x26b932?_0x0bfc('0x1e'):'TIMEOUT');}if(!_0x26b932){setTimeout(this[_0x0bfc('0x9')][_0x0bfc('0xb')](this),0x3e8);}};function agent(_0x5472e2,_0x1d7bd2,_0x396758,_0x274889){return new Agent(_0x5472e2,_0x1d7bd2,_0x396758,_0x274889);}module[_0x0bfc('0x1f')]=agent;
\ No newline at end of file
index 73e9199..6912979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bc3=['info','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','STOP','TIMEOUT','exports','lodash','./util','routing','notificationId','squeue','realtime','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','isNil','queue','Agents','length','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','RINGING','busy','busyQueue','name'];(function(_0x27376b,_0x4edf6a){var _0x19aeaa=function(_0x567054){while(--_0x567054){_0x27376b['push'](_0x27376b['shift']());}};_0x19aeaa(++_0x4edf6a);}(_0x8bc3,0x82));var _0x38bc=function(_0xcd0e3c,_0x50ac64){_0xcd0e3c=_0xcd0e3c-0x0;var _0x333329=_0x8bc3[_0xcd0e3c];return _0x333329;};'use strict';var _=require(_0x38bc('0x0'));var uuid=require('uuid');var util=require(_0x38bc('0x1'));var logger=require('../../../../../config/logger')(_0x38bc('0x2'));var Beepall=function(_0x182052,_0x5b5f67,_0x38862e,_0x24ad99){this[_0x38bc('0x3')]=uuid['v4']();this[_0x38bc('0x4')]=_0x182052;this['queue']=_0x5b5f67;this[_0x38bc('0x5')]=_0x38862e;this[_0x38bc('0x2')]=_0x24ad99;this[_0x38bc('0x4')][_0x38bc('0x6')](this[_0x38bc('0x7')]['bind'](this),this['handleTimeout'][_0x38bc('0x8')](this));this[_0x38bc('0x4')]['on'](_0x38bc('0x9'),this[_0x38bc('0xa')][_0x38bc('0x8')](this));this[_0x38bc('0x4')]['on'](_0x38bc('0xb'),this[_0x38bc('0xc')][_0x38bc('0x8')](this));};Beepall[_0x38bc('0xd')]['push']=function(){this['squeue']['push'](this['handleRun'][_0x38bc('0x8')](this),this['handleTimeout']['bind'](this));};Beepall['prototype']['handleDrained']=function(_0x437e10){this[_0x38bc('0xa')](!![]);};Beepall[_0x38bc('0xd')]['handleRun']=function(_0x22f87b){var _0x5115d9=!![];if(!_[_0x38bc('0xe')](this[_0x38bc('0xf')])&&!_[_0x38bc('0xe')](this[_0x38bc('0xf')][_0x38bc('0x10')])&&this[_0x38bc('0xf')]['Agents'][_0x38bc('0x11')]>0x0){for(var _0x55940b=0x0,_0x1d75d1;_0x55940b<this[_0x38bc('0xf')][_0x38bc('0x10')][_0x38bc('0x11')];_0x55940b+=0x1){_0x1d75d1=this[_0x38bc('0xf')][_0x38bc('0x10')][_0x55940b]['id'];if(_['isNil'](this[_0x38bc('0x5')]['agents'][_0x1d75d1])){logger['info'](_0x38bc('0x12'),this[_0x38bc('0x4')]['id'],_0x1d75d1);}else{if(util[_0x38bc('0x13')](this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')][_0x38bc('0x14')][_0x1d75d1],this[_0x38bc('0x4')]['channel'],!![])){_0x5115d9=![];util['writeLog'](this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')]['agents'][_0x1d75d1],_0x38bc('0x15'));this['realtime'][_0x38bc('0x14')][_0x1d75d1][_0x38bc('0x16')]=!![];this[_0x38bc('0x5')]['agents'][_0x1d75d1][_0x38bc('0x17')]=this[_0x38bc('0xf')][_0x38bc('0x18')];util['showNotification'](this[_0x38bc('0x3')],this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')][_0x38bc('0x14')][_0x1d75d1],this['queue'],this['routing']);}}}if(_0x5115d9){logger[_0x38bc('0x19')](_0x38bc('0x1a'),this[_0x38bc('0x4')]['id']);setTimeout(this[_0x38bc('0x6')]['bind'](this),0x3e8);}}else{logger['info']('[%s][QUEUE]\x20EMPTY',this[_0x38bc('0x4')]['id']);setTimeout(this[_0x38bc('0x6')][_0x38bc('0x8')](this),0x3e8);}};Beepall['prototype'][_0x38bc('0xa')]=function(_0x3b722c){if(!_['isNil'](this['queue'])&&!_[_0x38bc('0xe')](this['queue']['Agents'])){for(var _0x3d224c=0x0,_0x3f7dc0;_0x3d224c<this[_0x38bc('0xf')][_0x38bc('0x10')][_0x38bc('0x11')];_0x3d224c+=0x1){_0x3f7dc0=this['queue'][_0x38bc('0x10')][_0x3d224c]['id'];if(_[_0x38bc('0xe')](this[_0x38bc('0x5')][_0x38bc('0x14')][_0x3f7dc0])){logger[_0x38bc('0x19')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x3f7dc0);}else{util[_0x38bc('0x1b')](this[_0x38bc('0x3')],this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')][_0x38bc('0x14')][_0x3f7dc0],this[_0x38bc('0xf')],this[_0x38bc('0x2')]);util['writeLog'](this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')]['agents'][_0x3f7dc0],_0x3b722c?_0x38bc('0x1c'):_0x38bc('0x1d'));this[_0x38bc('0x5')][_0x38bc('0x14')][_0x3f7dc0][_0x38bc('0x16')]=![];this['realtime'][_0x38bc('0x14')][_0x3f7dc0]['busyQueue']=undefined;}}}if(!_0x3b722c){setTimeout(this[_0x38bc('0x6')][_0x38bc('0x8')](this),0x3e8);}};function beepall(_0x2f64a1,_0x14d8cf,_0x109af1,_0x159253){return new Beepall(_0x2f64a1,_0x14d8cf,_0x109af1,_0x159253);}module[_0x38bc('0x1e')]=beepall;
\ No newline at end of file
+var _0xe799=['length','realtime','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','writeLog','busyQueue','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','STOP','TIMEOUT','busy','exports','lodash','./util','routing','notificationId','queue','squeue','push','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','isNil','Agents'];(function(_0x1c474c,_0x4d7d33){var _0x13c65b=function(_0x1b9cc2){while(--_0x1b9cc2){_0x1c474c['push'](_0x1c474c['shift']());}};_0x13c65b(++_0x4d7d33);}(_0xe799,0x170));var _0x9e79=function(_0x51098b,_0x79865b){_0x51098b=_0x51098b-0x0;var _0x421d89=_0xe799[_0x51098b];return _0x421d89;};'use strict';var _=require(_0x9e79('0x0'));var uuid=require('uuid');var util=require(_0x9e79('0x1'));var logger=require('../../../../../config/logger')(_0x9e79('0x2'));var Beepall=function(_0x34b481,_0x528d88,_0x34a40e,_0x3f0a4f){this[_0x9e79('0x3')]=uuid['v4']();this['squeue']=_0x34b481;this[_0x9e79('0x4')]=_0x528d88;this['realtime']=_0x34a40e;this[_0x9e79('0x2')]=_0x3f0a4f;this[_0x9e79('0x5')][_0x9e79('0x6')](this['handleRun'][_0x9e79('0x7')](this),this[_0x9e79('0x8')]['bind'](this));this[_0x9e79('0x5')]['on'](_0x9e79('0x9'),this[_0x9e79('0x8')][_0x9e79('0x7')](this));this[_0x9e79('0x5')]['on'](_0x9e79('0xa'),this[_0x9e79('0xb')]['bind'](this));};Beepall[_0x9e79('0xc')][_0x9e79('0x6')]=function(){this[_0x9e79('0x5')][_0x9e79('0x6')](this[_0x9e79('0xd')]['bind'](this),this[_0x9e79('0x8')][_0x9e79('0x7')](this));};Beepall[_0x9e79('0xc')][_0x9e79('0xb')]=function(_0x449b8e){this[_0x9e79('0x8')](!![]);};Beepall[_0x9e79('0xc')][_0x9e79('0xd')]=function(_0x2dd572){var _0x23cad2=!![];if(!_[_0x9e79('0xe')](this[_0x9e79('0x4')])&&!_['isNil'](this[_0x9e79('0x4')]['Agents'])&&this[_0x9e79('0x4')][_0x9e79('0xf')]['length']>0x0){for(var _0x1311cf=0x0,_0x3c7baf;_0x1311cf<this['queue']['Agents'][_0x9e79('0x10')];_0x1311cf+=0x1){_0x3c7baf=this[_0x9e79('0x4')][_0x9e79('0xf')][_0x1311cf]['id'];if(_[_0x9e79('0xe')](this[_0x9e79('0x11')]['agents'][_0x3c7baf])){logger[_0x9e79('0x12')](_0x9e79('0x13'),this[_0x9e79('0x5')]['id'],_0x3c7baf);}else{if(util[_0x9e79('0x14')](this['squeue']['id'],this[_0x9e79('0x11')][_0x9e79('0x15')][_0x3c7baf],this['squeue'][_0x9e79('0x16')],!![])){_0x23cad2=![];util[_0x9e79('0x17')](this['squeue']['id'],this['realtime']['agents'][_0x3c7baf],'RINGING');this[_0x9e79('0x11')][_0x9e79('0x15')][_0x3c7baf]['busy']=!![];this[_0x9e79('0x11')][_0x9e79('0x15')][_0x3c7baf][_0x9e79('0x18')]=this[_0x9e79('0x4')]['name'];util[_0x9e79('0x19')](this[_0x9e79('0x3')],this['squeue']['id'],this[_0x9e79('0x11')][_0x9e79('0x15')][_0x3c7baf],this['queue'],this[_0x9e79('0x2')]);}}}if(_0x23cad2){logger[_0x9e79('0x12')](_0x9e79('0x1a'),this[_0x9e79('0x5')]['id']);setTimeout(this[_0x9e79('0x6')][_0x9e79('0x7')](this),0x3e8);}}else{logger['info']('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0x9e79('0x6')][_0x9e79('0x7')](this),0x3e8);}};Beepall[_0x9e79('0xc')][_0x9e79('0x8')]=function(_0x3fe47b){if(!_[_0x9e79('0xe')](this['queue'])&&!_['isNil'](this[_0x9e79('0x4')][_0x9e79('0xf')])){for(var _0x540973=0x0,_0x9793cf;_0x540973<this[_0x9e79('0x4')]['Agents'][_0x9e79('0x10')];_0x540973+=0x1){_0x9793cf=this[_0x9e79('0x4')]['Agents'][_0x540973]['id'];if(_['isNil'](this[_0x9e79('0x11')][_0x9e79('0x15')][_0x9793cf])){logger['info'](_0x9e79('0x13'),this[_0x9e79('0x5')]['id'],_0x9793cf);}else{util[_0x9e79('0x1b')](this[_0x9e79('0x3')],this['squeue']['id'],this[_0x9e79('0x11')][_0x9e79('0x15')][_0x9793cf],this['queue'],this[_0x9e79('0x2')]);util[_0x9e79('0x17')](this[_0x9e79('0x5')]['id'],this[_0x9e79('0x11')][_0x9e79('0x15')][_0x9793cf],_0x3fe47b?_0x9e79('0x1c'):_0x9e79('0x1d'));this[_0x9e79('0x11')]['agents'][_0x9793cf][_0x9e79('0x1e')]=![];this['realtime'][_0x9e79('0x15')][_0x9793cf][_0x9e79('0x18')]=undefined;}}}if(!_0x3fe47b){setTimeout(this[_0x9e79('0x6')][_0x9e79('0x7')](this),0x3e8);}};function beepall(_0x5a8d32,_0x1ef8f6,_0x11687e,_0x5282ed){return new Beepall(_0x5a8d32,_0x1ef8f6,_0x11687e,_0x5282ed);}module[_0x9e79('0x1f')]=beepall;
\ No newline at end of file
index 0783575..22b718e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe0=['./rrmemory','exports'];(function(_0x7747d8,_0x3c893a){var _0x269426=function(_0xf2a6d6){while(--_0xf2a6d6){_0x7747d8['push'](_0x7747d8['shift']());}};_0x269426(++_0x3c893a);}(_0xbfe0,0x193));var _0x0bfe=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xbfe0[_0x38a7ac];return _0x53061a;};'use strict';module[_0x0bfe('0x0')]={'rrmemory':require(_0x0bfe('0x1')),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
+var _0x8295=['./rrmemory','./beepall','./agent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8295,0x16b));var _0x5829=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0x8295[_0x125ff8];return _0x2d9ef;};'use strict';module['exports']={'rrmemory':require(_0x5829('0x0')),'beepall':require(_0x5829('0x1')),'agent':require(_0x5829('0x2'))};
\ No newline at end of file
index 0af1748..d9d72eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f19=['[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','agents','busy','name','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','TIMEOUT','lodash','uuid','./util','../../../../../config/logger','queue','realtime','routing','intervals','squeue','handleRun','handleTimeout','bind','module','timeout','drained','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s'];(function(_0x415003,_0x215788){var _0x45d2db=function(_0x2c489b){while(--_0x2c489b){_0x415003['push'](_0x415003['shift']());}};_0x45d2db(++_0x215788);}(_0x1f19,0xa1));var _0x91f1=function(_0x3ac874,_0x357d05){_0x3ac874=_0x3ac874-0x0;var _0x5ebac8=_0x1f19[_0x3ac874];return _0x5ebac8;};'use strict';var rr=require('rr');var _=require(_0x91f1('0x0'));var uuid=require(_0x91f1('0x1'));var util=require(_0x91f1('0x2'));var logger=require(_0x91f1('0x3'))('routing');var RRMemory=function(_0x4af6ac,_0x491cb2,_0x484ead,_0xa2aa65){this['notificationId']=uuid['v4']();this['squeue']=_0x4af6ac;this[_0x91f1('0x4')]=_0x491cb2;this[_0x91f1('0x5')]=_0x484ead;this[_0x91f1('0x6')]=_0xa2aa65;this[_0x91f1('0x7')]={};this[_0x91f1('0x8')]['push'](this[_0x91f1('0x9')]['bind'](this),this[_0x91f1('0xa')][_0x91f1('0xb')](this),this[_0x91f1('0xc')]);this['squeue']['on'](_0x91f1('0xd'),this[_0x91f1('0xa')][_0x91f1('0xb')](this));this['squeue']['on'](_0x91f1('0xe'),this[_0x91f1('0xf')][_0x91f1('0xb')](this));};RRMemory[_0x91f1('0x10')][_0x91f1('0x11')]=function(){this[_0x91f1('0x8')][_0x91f1('0x11')](this[_0x91f1('0x9')]['bind'](this),this[_0x91f1('0xa')][_0x91f1('0xb')](this));};RRMemory[_0x91f1('0x10')][_0x91f1('0xf')]=function(_0x247598){this[_0x91f1('0xa')](!![]);};RRMemory[_0x91f1('0x10')][_0x91f1('0x12')]=function(_0x33c03b){if(util[_0x91f1('0x13')](this['squeue']['id'],this[_0x91f1('0x5')]['agents'][this[_0x91f1('0x14')]],this[_0x91f1('0x8')][_0x91f1('0x15')],!![])){logger[_0x91f1('0x16')](_0x91f1('0x17'),this[_0x91f1('0x8')]['id'],this[_0x91f1('0x14')]);clearInterval(this['intervals'][this[_0x91f1('0x14')]]);_0x33c03b['done']();setTimeout(this[_0x91f1('0x11')][_0x91f1('0xb')](this),0x3e8);}};RRMemory['prototype'][_0x91f1('0x9')]=function(_0x4e3c5d){this[_0x91f1('0x14')]=rr(this[_0x91f1('0x4')]['mapAgentsId']);logger[_0x91f1('0x16')](_0x91f1('0x18'),this[_0x91f1('0x8')]['id'],this[_0x91f1('0x14')]);if(_['isNil'](this[_0x91f1('0x5')]['agents'][this[_0x91f1('0x14')]])){logger['info'](_0x91f1('0x19'),this['squeue']['id'],this[_0x91f1('0x14')]);_0x4e3c5d['done']();setTimeout(this[_0x91f1('0x11')][_0x91f1('0xb')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]],this['squeue'][_0x91f1('0x15')],!![])){this['realtime']['agents'][this[_0x91f1('0x14')]][_0x91f1('0x1b')]=!![];this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]]['busyQueue']=this[_0x91f1('0x4')][_0x91f1('0x1c')];util[_0x91f1('0x1d')](this[_0x91f1('0x1e')],this['squeue']['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this['agentId']],this[_0x91f1('0x4')],this[_0x91f1('0x6')]);util[_0x91f1('0x1f')](this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')]['agents'][this[_0x91f1('0x14')]],_0x91f1('0x20'));this[_0x91f1('0x7')][this[_0x91f1('0x14')]]=setInterval(this['handleCheckReject'][_0x91f1('0xb')](this,_0x4e3c5d),0x3e8);}else{logger[_0x91f1('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x91f1('0x8')]['id'],this[_0x91f1('0x14')]);_0x4e3c5d['done']();setTimeout(this[_0x91f1('0x11')]['bind'](this),0x3e8);}}};RRMemory[_0x91f1('0x10')][_0x91f1('0xa')]=function(_0x36b8ac){logger['info'](_0x91f1('0x21'),this[_0x91f1('0x8')]['id'],this['agentId']);if(_[_0x91f1('0x22')](this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]])){logger['info'](_0x91f1('0x19'),this[_0x91f1('0x8')]['id'],this['agentId']);}else{clearInterval(this[_0x91f1('0x7')][this[_0x91f1('0x14')]]);util[_0x91f1('0x23')](this[_0x91f1('0x1e')],this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]],this[_0x91f1('0x4')],this['routing']);util[_0x91f1('0x1f')](this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]],_0x91f1('0x24'));this['realtime'][_0x91f1('0x1a')][this[_0x91f1('0x14')]][_0x91f1('0x1b')]=![];this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]]['busyQueue']=undefined;}if(!_0x36b8ac){setTimeout(this['push'][_0x91f1('0xb')](this),0x3e8);}};function rrmemory(_0x9ba442,_0xec42a6,_0x3dd87f,_0x3ad111){return new RRMemory(_0x9ba442,_0xec42a6,_0x3dd87f,_0x3ad111);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x71f3=['timeout','drained','handleDrained','prototype','handleRun','handleCheckReject','isAgentAvailable','agents','agentId','info','[%s][QUEUE]\x20available\x20again\x20%s','intervals','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','channel','busy','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','notificationId','busyQueue','lodash','uuid','./util','../../../../../config/logger','squeue','queue','realtime','routing','push','bind','handleTimeout','module'];(function(_0x54c42d,_0x23975d){var _0x16d161=function(_0x2a9a68){while(--_0x2a9a68){_0x54c42d['push'](_0x54c42d['shift']());}};_0x16d161(++_0x23975d);}(_0x71f3,0x1b0));var _0x371f=function(_0x41f224,_0x39beb1){_0x41f224=_0x41f224-0x0;var _0x58e2f1=_0x71f3[_0x41f224];return _0x58e2f1;};'use strict';var rr=require('rr');var _=require(_0x371f('0x0'));var uuid=require(_0x371f('0x1'));var util=require(_0x371f('0x2'));var logger=require(_0x371f('0x3'))('routing');var RRMemory=function(_0xbfcf2e,_0x36964f,_0x2a455b,_0x3e1471){this['notificationId']=uuid['v4']();this[_0x371f('0x4')]=_0xbfcf2e;this[_0x371f('0x5')]=_0x36964f;this[_0x371f('0x6')]=_0x2a455b;this[_0x371f('0x7')]=_0x3e1471;this['intervals']={};this[_0x371f('0x4')][_0x371f('0x8')](this['handleRun'][_0x371f('0x9')](this),this[_0x371f('0xa')][_0x371f('0x9')](this),this[_0x371f('0xb')]);this[_0x371f('0x4')]['on'](_0x371f('0xc'),this['handleTimeout']['bind'](this));this['squeue']['on'](_0x371f('0xd'),this[_0x371f('0xe')][_0x371f('0x9')](this));};RRMemory[_0x371f('0xf')][_0x371f('0x8')]=function(){this['squeue']['push'](this[_0x371f('0x10')][_0x371f('0x9')](this),this[_0x371f('0xa')][_0x371f('0x9')](this));};RRMemory[_0x371f('0xf')][_0x371f('0xe')]=function(_0x27cf81){this[_0x371f('0xa')](!![]);};RRMemory[_0x371f('0xf')][_0x371f('0x11')]=function(_0x1c0647){if(util[_0x371f('0x12')](this[_0x371f('0x4')]['id'],this[_0x371f('0x6')][_0x371f('0x13')][this[_0x371f('0x14')]],this[_0x371f('0x4')]['channel'],!![])){logger[_0x371f('0x15')](_0x371f('0x16'),this[_0x371f('0x4')]['id'],this['agentId']);clearInterval(this[_0x371f('0x17')][this[_0x371f('0x14')]]);_0x1c0647['done']();setTimeout(this[_0x371f('0x8')][_0x371f('0x9')](this),0x3e8);}};RRMemory[_0x371f('0xf')]['handleRun']=function(_0xf90054){this[_0x371f('0x14')]=rr(this['queue']['mapAgentsId']);logger[_0x371f('0x15')](_0x371f('0x18'),this[_0x371f('0x4')]['id'],this[_0x371f('0x14')]);if(_['isNil'](this[_0x371f('0x6')][_0x371f('0x13')][this[_0x371f('0x14')]])){logger[_0x371f('0x15')](_0x371f('0x19'),this['squeue']['id'],this['agentId']);_0xf90054[_0x371f('0x1a')]();setTimeout(this['push']['bind'](this),0x3e8);}else{if(util[_0x371f('0x12')](this[_0x371f('0x4')]['id'],this[_0x371f('0x6')][_0x371f('0x13')][this['agentId']],this['squeue'][_0x371f('0x1b')],!![])){this[_0x371f('0x6')][_0x371f('0x13')][this['agentId']][_0x371f('0x1c')]=!![];this[_0x371f('0x6')][_0x371f('0x13')][this['agentId']]['busyQueue']=this[_0x371f('0x5')]['name'];util[_0x371f('0x1d')](this['notificationId'],this['squeue']['id'],this['realtime']['agents'][this[_0x371f('0x14')]],this[_0x371f('0x5')],this['routing']);util[_0x371f('0x1e')](this[_0x371f('0x4')]['id'],this['realtime']['agents'][this[_0x371f('0x14')]],_0x371f('0x1f'));this[_0x371f('0x17')][this['agentId']]=setInterval(this[_0x371f('0x11')][_0x371f('0x9')](this,_0xf90054),0x3e8);}else{logger['info'](_0x371f('0x20'),this[_0x371f('0x4')]['id'],this[_0x371f('0x14')]);_0xf90054[_0x371f('0x1a')]();setTimeout(this['push'][_0x371f('0x9')](this),0x3e8);}}};RRMemory[_0x371f('0xf')]['handleTimeout']=function(_0x196e5b){logger['info'](_0x371f('0x21'),this[_0x371f('0x4')]['id'],this['agentId']);if(_['isNil'](this[_0x371f('0x6')]['agents'][this[_0x371f('0x14')]])){logger[_0x371f('0x15')](_0x371f('0x19'),this[_0x371f('0x4')]['id'],this[_0x371f('0x14')]);}else{clearInterval(this[_0x371f('0x17')][this[_0x371f('0x14')]]);util[_0x371f('0x22')](this[_0x371f('0x23')],this[_0x371f('0x4')]['id'],this['realtime'][_0x371f('0x13')][this[_0x371f('0x14')]],this['queue'],this[_0x371f('0x7')]);util['writeLog'](this['squeue']['id'],this[_0x371f('0x6')][_0x371f('0x13')][this[_0x371f('0x14')]],'TIMEOUT');this[_0x371f('0x6')][_0x371f('0x13')][this[_0x371f('0x14')]][_0x371f('0x1c')]=![];this[_0x371f('0x6')]['agents'][this[_0x371f('0x14')]][_0x371f('0x24')]=undefined;}if(!_0x196e5b){setTimeout(this[_0x371f('0x8')][_0x371f('0x9')](this),0x3e8);}};function rrmemory(_0x39cb8c,_0x28b5e8,_0x17056f,_0x3e2b19){return new RRMemory(_0x39cb8c,_0x28b5e8,_0x17056f,_0x3e2b19);}module['exports']=rrmemory;
\ No newline at end of file
index c76e87c..9fff4da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb9=['split','\x20interaction','name','account','notificationSound','notificationShake','body','queue','msg','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','online','Pause','PAUSE','Capacity','hasOwnProperty','CurrentCapacity','\x20MAXCAPACITY','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','localhost','emit','format','user:save'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xafb9,0x68));var _0x9afb=function(_0x5bccb2,_0x4e56af){_0x5bccb2=_0x5bccb2-0x0;var _0x3b089f=_0xafb9[_0x5bccb2];return _0x3b089f;};'use strict';var _=require(_0x9afb('0x0'));var util=require(_0x9afb('0x1'));var utils=require(_0x9afb('0x2'));var Mustache=require(_0x9afb('0x3'));var Redis=require(_0x9afb('0x4'));var config=require(_0x9afb('0x5'));var logger=require(_0x9afb('0x6'))(_0x9afb('0x7'));config[_0x9afb('0x8')]=_['defaults'](config['redis'],{'host':_0x9afb('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9afb('0x8')]));function emit(_0x548b24,_0x556880,_0x4c0e9d){io['to'](_0x548b24)[_0x9afb('0xa')](_0x556880,_0x4c0e9d);}function sendNotification(_0x20b8c1,_0x51dc88,_0x3ef362,_0x3e0264,_0x2aaefe,_0x27fa71){io['to'](util[_0x9afb('0xb')]('user:%s',_0x3e0264['name']))[_0x9afb('0xa')](_0x9afb('0xc'),_0x3e0264);var _0x3e6a29=_0x27fa71||{};var _0x31b574=_0x3ef362[_0x9afb('0xd')]('.');var _0xb6cd07={'uniqueid':_0x51dc88,'channel':_0x31b574[0x0],'id':_0x31b574[0x1],'title':_0x31b574[0x0]+_0x9afb('0xe'),'interactionId':_0x31b574[0x2],'queue':_0x2aaefe?_0x2aaefe[_0x9afb('0xf')]:null,'sound':_0x3e6a29[_0x9afb('0x10')][_0x9afb('0x11')],'shake':_0x3e6a29['account'][_0x9afb('0x12')]};try{if(!_0x3e6a29['body']){_0x3e6a29['body']={};}if(_0x2aaefe){_0x3e6a29[_0x9afb('0x13')][_0x9afb('0x14')]=_0x2aaefe;}else if(_0x3e6a29[_0x9afb('0x13')][_0x9afb('0x14')]){delete _0x3e6a29[_0x9afb('0x13')][_0x9afb('0x14')];}_0xb6cd07[_0x9afb('0x15')]=utils['getMustacheRender'](_0x3e6a29[_0x9afb('0x10')][_0x9afb('0x16')],_0x3e6a29);}catch(_0x23b906){_0xb6cd07[_0x9afb('0x15')]=_0x9afb('0x17');logger['error'](util[_0x9afb('0xb')]('[%s][QUEUE]\x20%s',_0x51dc88,_0x23b906[_0x9afb('0x18')]));}io['to'](util[_0x9afb('0xb')]('user:%s',_0x3e0264['name']))[_0x9afb('0xa')](util[_0x9afb('0xb')](_0x9afb('0x19'),_0x20b8c1?_0x9afb('0x1a'):_0x9afb('0x1b')),_0xb6cd07);}function writeLog(_0x57b4e2,_0x105253,_0x4dc307){return logger['info'](util[_0x9afb('0xb')](_0x9afb('0x1c'),_0x57b4e2,_0x105253[_0x9afb('0xf')],_0x4dc307));}exports[_0x9afb('0x1d')]=function(_0x50c835,_0x1e6f9c,_0x725a04,_0x49ba5f){if(_0x1e6f9c['busy']){writeLog(_0x50c835,_0x1e6f9c,'BUSY');return![];}if(!_0x1e6f9c[_0x9afb('0x1e')]){writeLog(_0x50c835,_0x1e6f9c,'OFFLINE');return![];}if(_0x1e6f9c[_0x725a04+_0x9afb('0x1f')]){writeLog(_0x50c835,_0x1e6f9c,_0x9afb('0x20'));return![];}if(_0x49ba5f&&_0x1e6f9c['hasOwnProperty'](_0x725a04+_0x9afb('0x21'))&&_0x1e6f9c[_0x9afb('0x22')](_0x725a04+_0x9afb('0x23'))){if(_0x1e6f9c[_0x725a04+_0x9afb('0x21')]>0x0&&_0x1e6f9c[_0x725a04+'CurrentCapacity']>=_0x1e6f9c[_0x725a04+_0x9afb('0x21')]){writeLog(_0x50c835,_0x1e6f9c,_0x725a04['toUpperCase']()+_0x9afb('0x24'));return![];}}return!![];};exports['showNotification']=function(_0x5692fa,_0x1e6100,_0x304104,_0x30af1b,_0x13a33e){return sendNotification(!![],_0x5692fa,_0x1e6100,_0x304104,_0x30af1b,_0x13a33e);};exports[_0x9afb('0x25')]=function(_0x3e3f57,_0x46673d,_0x5aabd5,_0x494ef8,_0x1cc791){return sendNotification(![],_0x3e3f57,_0x46673d,_0x5aabd5,_0x494ef8,_0x1cc791);};exports[_0x9afb('0x26')]=writeLog;
\ No newline at end of file
+var _0x5fab=['user:save','split','account','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','remove','info','isAgentAvailable','busy','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','hideNotification','writeLog','lodash','util','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name'];(function(_0x5c27cd,_0x39cbdd){var _0x460493=function(_0x3f63a1){while(--_0x3f63a1){_0x5c27cd['push'](_0x5c27cd['shift']());}};_0x460493(++_0x39cbdd);}(_0x5fab,0x177));var _0xb5fa=function(_0x3adde2,_0x3062c3){_0x3adde2=_0x3adde2-0x0;var _0xd3726d=_0x5fab[_0x3adde2];return _0xd3726d;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var utils=require('../utils');var Mustache=require(_0xb5fa('0x2'));var Redis=require(_0xb5fa('0x3'));var config=require(_0xb5fa('0x4'));var logger=require(_0xb5fa('0x5'))(_0xb5fa('0x6'));config[_0xb5fa('0x7')]=_[_0xb5fa('0x8')](config[_0xb5fa('0x7')],{'host':_0xb5fa('0x9'),'port':0x18eb});var io=require(_0xb5fa('0xa'))(new Redis(config['redis']));function emit(_0x5d70f6,_0x2e3804,_0x1aec3e){io['to'](_0x5d70f6)[_0xb5fa('0xb')](_0x2e3804,_0x1aec3e);}function sendNotification(_0x56d018,_0x410eff,_0x38d9a3,_0x2cf4a5,_0x54c7eb,_0x5b5ea8){io['to'](util[_0xb5fa('0xc')](_0xb5fa('0xd'),_0x2cf4a5[_0xb5fa('0xe')]))[_0xb5fa('0xb')](_0xb5fa('0xf'),_0x2cf4a5);var _0xadef41=_0x5b5ea8||{};var _0x65c6b6=_0x38d9a3[_0xb5fa('0x10')]('.');var _0x309740={'uniqueid':_0x410eff,'channel':_0x65c6b6[0x0],'id':_0x65c6b6[0x1],'title':_0x65c6b6[0x0]+'\x20interaction','interactionId':_0x65c6b6[0x2],'queue':_0x54c7eb?_0x54c7eb[_0xb5fa('0xe')]:null,'sound':_0xadef41[_0xb5fa('0x11')]['notificationSound'],'shake':_0xadef41[_0xb5fa('0x11')]['notificationShake']};try{if(!_0xadef41[_0xb5fa('0x12')]){_0xadef41[_0xb5fa('0x12')]={};}if(_0x54c7eb){_0xadef41[_0xb5fa('0x12')][_0xb5fa('0x13')]=_0x54c7eb;}else if(_0xadef41[_0xb5fa('0x12')]['queue']){delete _0xadef41['body'][_0xb5fa('0x13')];}_0x309740[_0xb5fa('0x14')]=utils[_0xb5fa('0x15')](_0xadef41[_0xb5fa('0x11')]['notificationTemplate'],_0xadef41);}catch(_0x4fabcc){_0x309740[_0xb5fa('0x14')]=_0xb5fa('0x16');logger[_0xb5fa('0x17')](util[_0xb5fa('0xc')](_0xb5fa('0x18'),_0x410eff,_0x4fabcc[_0xb5fa('0x19')]));}io['to'](util[_0xb5fa('0xc')](_0xb5fa('0xd'),_0x2cf4a5[_0xb5fa('0xe')]))[_0xb5fa('0xb')](util[_0xb5fa('0xc')](_0xb5fa('0x1a'),_0x56d018?'save':_0xb5fa('0x1b')),_0x309740);}function writeLog(_0x519e20,_0x37ae06,_0x4a6c04){return logger[_0xb5fa('0x1c')](util[_0xb5fa('0xc')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x519e20,_0x37ae06[_0xb5fa('0xe')],_0x4a6c04));}exports[_0xb5fa('0x1d')]=function(_0x283a56,_0x47f71a,_0x32a85c,_0xec108f){if(_0x47f71a[_0xb5fa('0x1e')]){writeLog(_0x283a56,_0x47f71a,'BUSY');return![];}if(!_0x47f71a[_0xb5fa('0x1f')]){writeLog(_0x283a56,_0x47f71a,'OFFLINE');return![];}if(_0x47f71a[_0x32a85c+_0xb5fa('0x20')]){writeLog(_0x283a56,_0x47f71a,_0xb5fa('0x21'));return![];}if(_0xec108f&&_0x47f71a[_0xb5fa('0x22')](_0x32a85c+_0xb5fa('0x23'))&&_0x47f71a[_0xb5fa('0x22')](_0x32a85c+_0xb5fa('0x24'))){if(_0x47f71a[_0x32a85c+_0xb5fa('0x23')]>0x0&&_0x47f71a[_0x32a85c+_0xb5fa('0x24')]>=_0x47f71a[_0x32a85c+'Capacity']){writeLog(_0x283a56,_0x47f71a,_0x32a85c['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports['showNotification']=function(_0x28a350,_0x460b54,_0x12c0d4,_0x2bdf50,_0x534884){return sendNotification(!![],_0x28a350,_0x460b54,_0x12c0d4,_0x2bdf50,_0x534884);};exports[_0xb5fa('0x25')]=function(_0x358549,_0x353314,_0x409af9,_0x2a5690,_0x142bfa){return sendNotification(![],_0x358549,_0x353314,_0x409af9,_0x2a5690,_0x142bfa);};exports[_0xb5fa('0x26')]=writeLog;
\ No newline at end of file
index 616917c..411f615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17da=['[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','next','validate','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][SYSTEM]\x20%s','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','info','[%s][SYSTEM]\x20commnad:\x20%s'];(function(_0x4b9eaf,_0x592f61){var _0x1b051e=function(_0x382e5b){while(--_0x382e5b){_0x4b9eaf['push'](_0x4b9eaf['shift']());}};_0x1b051e(++_0x592f61);}(_0x17da,0x167));var _0xa17d=function(_0x8e9b4e,_0x1a1861){_0x8e9b4e=_0x8e9b4e-0x0;var _0x3c13ae=_0x17da[_0x8e9b4e];return _0x3c13ae;};'use strict';var schema=require(_0xa17d('0x0'));var sh=require('shelljs');var _=require(_0xa17d('0x1'));var utils=require(_0xa17d('0x2'));var logger=require(_0xa17d('0x3'))(_0xa17d('0x4'));var system=schema({'command':{'type':_0xa17d('0x5'),'required':!![],'message':_0xa17d('0x6')}});exports['consequence']=function(_0x1c6a42,_0x5f3f2e){return function(_0x2479ed){try{var _0x25ce5b={'command':_0x5f3f2e[0x0]};var _0x34d2da=system['validate'](_0x25ce5b,{'typecast':!![]});if(_0x34d2da[_0xa17d('0x7')]){logger[_0xa17d('0x8')](_0xa17d('0x9'),_0x1c6a42,_[_0xa17d('0xa')](_0x34d2da,_0xa17d('0xb'))[_0xa17d('0xc')](',\x20'));logger['info'](_0xa17d('0xd'),_0x1c6a42);_0x2479ed['next']();}else{var _0x2bd705=this;var _0x5d5bc8=utils['getMustacheRender'](_0x5f3f2e[0x0],this);logger[_0xa17d('0xe')](_0xa17d('0xf'),_0x1c6a42,_0x5d5bc8);sh['exec'](_['trim'](_0x5d5bc8),function(_0x2f7a2c,_0x4384ed){logger['info'](_0xa17d('0x10'),_0x1c6a42,_0x2f7a2c);if(_0x2f7a2c==0x0){var _0x17bd97=_0x4384ed[_0xa17d('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0xa17d('0x12')](_0x5f3f2e[0x1])||_[_0xa17d('0x13')](_0x5f3f2e[0x1])){logger['info'](_0xa17d('0x14'),_0x1c6a42);_0x2bd705[_0xa17d('0x15')][_0x5f3f2e[0x1]]=_0x17bd97;}else{logger[_0xa17d('0xe')](_0xa17d('0x16'),_0x1c6a42,_0x5f3f2e[0x1],_0x17bd97);_0x2bd705['body'][_0x5f3f2e[0x1]]=_0x17bd97;}}_0x2479ed['next']();});}}catch(_0x55cb00){logger[_0xa17d('0x8')](_0xa17d('0x9'),_0x1c6a42,_[_0xa17d('0x17')](_0x55cb00)?JSON['stringify'](_0x55cb00):_0x55cb00);logger[_0xa17d('0xe')](_0xa17d('0xd'),_0x1c6a42);_0x2479ed[_0xa17d('0x18')]();}};};
\ No newline at end of file
+var _0x3996=['length','error','map','message','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s','isObject','validate','shelljs','lodash','./utils','../../../../config/logger','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0x3996,0x1c1));var _0x6399=function(_0x2a5900,_0x34d6f0){_0x2a5900=_0x2a5900-0x0;var _0x31da52=_0x3996[_0x2a5900];return _0x31da52;};'use strict';var schema=require(_0x6399('0x0'));var sh=require(_0x6399('0x1'));var _=require(_0x6399('0x2'));var utils=require(_0x6399('0x3'));var logger=require(_0x6399('0x4'))(_0x6399('0x5'));var system=schema({'command':{'type':'string','required':!![],'message':_0x6399('0x6')}});exports['consequence']=function(_0x106736,_0x271d40){return function(_0x36a517){try{var _0x4bbfb0={'command':_0x271d40[0x0]};var _0x59d8d3=system[_0x6399('0x0')](_0x4bbfb0,{'typecast':!![]});if(_0x59d8d3[_0x6399('0x7')]){logger[_0x6399('0x8')]('[%s][SYSTEM]\x20%s',_0x106736,_[_0x6399('0x9')](_0x59d8d3,_0x6399('0xa'))['join'](',\x20'));logger[_0x6399('0xb')](_0x6399('0xc'),_0x106736);_0x36a517[_0x6399('0xd')]();}else{var _0x397b87=this;var _0x394552=utils[_0x6399('0xe')](_0x271d40[0x0],this);logger[_0x6399('0xb')](_0x6399('0xf'),_0x106736,_0x394552);sh[_0x6399('0x10')](_[_0x6399('0x11')](_0x394552),function(_0x2334ad,_0x441b4c){logger[_0x6399('0xb')](_0x6399('0x12'),_0x106736,_0x2334ad);if(_0x2334ad==0x0){var _0x509580=_0x441b4c['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x271d40[0x1])||_['isEmpty'](_0x271d40[0x1])){logger['info'](_0x6399('0x13'),_0x106736);_0x397b87[_0x6399('0x14')][_0x271d40[0x1]]=_0x509580;}else{logger['info'](_0x6399('0x15'),_0x106736,_0x271d40[0x1],_0x509580);_0x397b87[_0x6399('0x14')][_0x271d40[0x1]]=_0x509580;}}_0x36a517[_0x6399('0xd')]();});}}catch(_0x87961b){logger[_0x6399('0x8')](_0x6399('0x16'),_0x106736,_[_0x6399('0x17')](_0x87961b)?JSON['stringify'](_0x87961b):_0x87961b);logger[_0x6399('0xb')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x106736);_0x36a517[_0x6399('0xd')]();}};};
\ No newline at end of file
index 2bf313e..86d1452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49bf=['error','message','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20%s','stringify','finally','isObject','info','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x49bf,0x1b7));var _0xf49b=function(_0x2ae21b,_0xb265e5){_0x2ae21b=_0x2ae21b-0x0;var _0x2c8f91=_0x49bf[_0x2ae21b];return _0x2c8f91;};'use strict';var schema=require(_0xf49b('0x0'));var _=require(_0xf49b('0x1'));var rpc={'chatInteraction':require(_0xf49b('0x2')),'openchannelInteraction':require(_0xf49b('0x3')),'smsInteraction':require(_0xf49b('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xf49b('0x5')),'whatsappInteraction':require(_0xf49b('0x6'))};var logger=require(_0xf49b('0x7'))(_0xf49b('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xf49b('0x9')}});exports['consequence']=function(_0x35f0f3,_0x13ced0,_0x89670d,_0x5c04d5){return function(_0x260c75){try{var _0x26372d={'tag':_0x13ced0[0x0]};var _0x23d343=tag[_0xf49b('0x0')](_0x26372d,{'typecast':!![]});if(_0x23d343[_0xf49b('0xa')]){logger[_0xf49b('0xb')]('[%s][TAG]\x20%s',_0x35f0f3,_['map'](_0x23d343,_0xf49b('0xc'))['join'](',\x20'));logger['info'](_0xf49b('0xd'),_0x35f0f3);_0x260c75[_0xf49b('0xe')]();}else{var _0x37f75e={'ids':[_0x13ced0[0x0]]};if(rpc[_0x5c04d5[_0xf49b('0xf')]+_0xf49b('0x10')]){rpc[_0x5c04d5[_0xf49b('0xf')]+_0xf49b('0x10')]['addTags'](_0x5c04d5[_0xf49b('0x11')]['id'],_0x37f75e)['then'](function(_0x530f75){logger['info'](_0xf49b('0x12'),_0x35f0f3,_0x13ced0[0x1],_0x5c04d5[_0xf49b('0xf')],_0x5c04d5[_0xf49b('0x11')]['id']);})[_0xf49b('0x13')](function(_0x149c39){logger[_0xf49b('0xb')](_0xf49b('0x14'),_0x35f0f3,JSON[_0xf49b('0x15')](_0x149c39));logger['info'](_0xf49b('0xd'),_0x35f0f3);})[_0xf49b('0x16')](function(){_0x260c75['next']();});}}}catch(_0x2eac6a){logger[_0xf49b('0xb')](_0xf49b('0x14'),_0x35f0f3,_[_0xf49b('0x17')](_0x2eac6a)?JSON[_0xf49b('0x15')](_0x2eac6a):_0x2eac6a);logger[_0xf49b('0x18')](_0xf49b('0xd'),_0x35f0f3);_0x260c75[_0xf49b('0xe')]();}};};
\ No newline at end of file
+var _0x0f95=['TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][TAG]\x20%s','message','join','info','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','stringify','finally','isObject','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing'];(function(_0x511be9,_0x52beb2){var _0x186d79=function(_0x19a481){while(--_0x19a481){_0x511be9['push'](_0x511be9['shift']());}};_0x186d79(++_0x52beb2);}(_0x0f95,0x1dd));var _0x50f9=function(_0x340756,_0xad31ae){_0x340756=_0x340756-0x0;var _0x2ef745=_0x0f95[_0x340756];return _0x2ef745;};'use strict';var schema=require(_0x50f9('0x0'));var _=require(_0x50f9('0x1'));var rpc={'chatInteraction':require(_0x50f9('0x2')),'openchannelInteraction':require(_0x50f9('0x3')),'smsInteraction':require(_0x50f9('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x50f9('0x5')),'whatsappInteraction':require(_0x50f9('0x6'))};var logger=require(_0x50f9('0x7'))(_0x50f9('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x50f9('0x9')}});exports[_0x50f9('0xa')]=function(_0x22fbde,_0x6ea1b3,_0x4b3bcd,_0x1b79c4){return function(_0x2acafc){try{var _0x4076e3={'tag':_0x6ea1b3[0x0]};var _0x7fa86c=tag[_0x50f9('0x0')](_0x4076e3,{'typecast':!![]});if(_0x7fa86c['length']){logger[_0x50f9('0xb')](_0x50f9('0xc'),_0x22fbde,_['map'](_0x7fa86c,_0x50f9('0xd'))[_0x50f9('0xe')](',\x20'));logger[_0x50f9('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x22fbde);_0x2acafc[_0x50f9('0x10')]();}else{var _0x1c9260={'ids':[_0x6ea1b3[0x0]]};if(rpc[_0x1b79c4[_0x50f9('0x11')]+_0x50f9('0x12')]){rpc[_0x1b79c4[_0x50f9('0x11')]+_0x50f9('0x12')][_0x50f9('0x13')](_0x1b79c4[_0x50f9('0x14')]['id'],_0x1c9260)[_0x50f9('0x15')](function(_0x478974){logger[_0x50f9('0xf')](_0x50f9('0x16'),_0x22fbde,_0x6ea1b3[0x1],_0x1b79c4[_0x50f9('0x11')],_0x1b79c4['interaction']['id']);})['catch'](function(_0x1d7d36){logger[_0x50f9('0xb')](_0x50f9('0xc'),_0x22fbde,JSON[_0x50f9('0x17')](_0x1d7d36));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x22fbde);})[_0x50f9('0x18')](function(){_0x2acafc[_0x50f9('0x10')]();});}}}catch(_0x13380e){logger[_0x50f9('0xb')](_0x50f9('0xc'),_0x22fbde,_[_0x50f9('0x19')](_0x13380e)?JSON[_0x50f9('0x17')](_0x13380e):_0x13380e);logger[_0x50f9('0xf')](_0x50f9('0x1a'),_0x22fbde);_0x2acafc[_0x50f9('0x10')]();}};};
\ No newline at end of file
index b581cae..faf7dfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0xa0f6c9,_0x41985a){var _0x40fce9=function(_0x321aa6){while(--_0x321aa6){_0xa0f6c9['push'](_0xa0f6c9['shift']());}};_0x40fce9(++_0x41985a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x450ac0,_0x5c69b7){var _0x233299=function(_0x1a9751){while(--_0x1a9751){_0x450ac0['push'](_0x450ac0['shift']());}};_0x233299(++_0x5c69b7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index 3c3507e..7975023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00b2=['%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','message','isArray','applications','existsSync','join','app','.js','toLowerCase','split','channel','mail','push','slice','length','dialogflow','appdata','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','condition','consequence','priority','info','intervals','rules','execute','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','interaction','end','QueueReport','update','UserId','catch','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','paused','mailQueues','name','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','format'];(function(_0x4e0c31,_0x208e9f){var _0x3fd7df=function(_0x5ee817){while(--_0x5ee817){_0x4e0c31['push'](_0x4e0c31['shift']());}};_0x3fd7df(++_0x208e9f);}(_0x00b2,0x16a));var _0x200b=function(_0x3a5d55,_0x2d513d){_0x3a5d55=_0x3a5d55-0x0;var _0x542074=_0x00b2[_0x3a5d55];return _0x542074;};'use strict';var _=require(_0x200b('0x0'));var util=require(_0x200b('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x200b('0x2'));var BPromise=require(_0x200b('0x3'));var uuid=require(_0x200b('0x4'));var config=require(_0x200b('0x5'));var logger=require(_0x200b('0x6'))(_0x200b('0x7'));var rpc={'openchannelQueueReport':require(_0x200b('0x8')),'mailQueueReport':require(_0x200b('0x9')),'chatQueueReport':require(_0x200b('0xa')),'smsQueueReport':require(_0x200b('0xb')),'faxQueueReport':require(_0x200b('0xc')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x503f26,_0x59a838,_0x1177bb){return util[_0x200b('0xd')](_0x200b('0xe'),_0x503f26,_0x59a838||0x0,_0x1177bb||0x0);}function getIntervals(_0x24513d,_0xb4abc5){var _0x14eee9=[];if(!_[_0x200b('0xf')](_0xb4abc5[_0x200b('0x10')])&&!_[_0x200b('0xf')](_0x24513d[_0xb4abc5[_0x200b('0x10')]])&&!_[_0x200b('0xf')](_0x24513d[_0xb4abc5[_0x200b('0x10')]][_0x200b('0x11')])){_0x14eee9=_['map'](_0x24513d[_0xb4abc5[_0x200b('0x10')]][_0x200b('0x11')],_0x200b('0x12'));}else if(!_[_0x200b('0xf')](_0xb4abc5[_0x200b('0x12')])){_0x14eee9=[_0xb4abc5[_0x200b('0x12')]];}return _0x14eee9;}exports[_0x200b('0x13')]=function(_0x4b9c6e){_0x4b9c6e['rules']={};return new BPromise(function(_0x176fb5,_0xfd72a){var _0x2b6873={'Start':function(_0xb20d09){var _0x7328c0=this;return new Promise(function(_0x23ff35,_0x5cb9cd){if(_0xb20d09){try{var _0x47394c=[];var _0x1fbe62=getId(_0xb20d09['channel'],_0xb20d09['message']?_0xb20d09[_0x200b('0x14')]['id']:0x0,_0xb20d09['interaction']?_0xb20d09['interaction']['id']:0x0);if(_0xb20d09['applications']&&_[_0x200b('0x15')](_0xb20d09['applications'])&&_0xb20d09[_0x200b('0x16')]['length']){for(var _0xa4e3cb=0x0;_0xa4e3cb<_0xb20d09[_0x200b('0x16')]['length'];_0xa4e3cb+=0x1){var _0x3c070f=_0xb20d09[_0x200b('0x16')][_0xa4e3cb];if(fs[_0x200b('0x17')](path[_0x200b('0x18')](__dirname,_0x200b('0x16'),_0x3c070f[_0x200b('0x19')]+_0x200b('0x1a')))){var _0x3f2fb9=[];switch(_0x3c070f['app'][_0x200b('0x1b')]()){case'autoreply':var _0x4c1e84=_0x3c070f['appdata'][_0x200b('0x1c')](',');if(_0xb20d09[_0x200b('0x1d')]===_0x200b('0x1e')){_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[0x0]);_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[0x1]);_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[_0x200b('0x20')](0x2,_0x4c1e84['length'])[_0x200b('0x18')](','));}else{_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[0x0]);_0x3f2fb9['push'](_0x4c1e84['slice'](0x1,_0x4c1e84[_0x200b('0x21')])['join'](','));}break;case _0x200b('0x22'):var _0x3c1027=_0x3c070f[_0x200b('0x23')][_0x200b('0x1c')](',');_0x3f2fb9[_0x200b('0x1f')](_0x3c1027[0x0]);_0x3f2fb9['push'](_0x3c1027[0x1]);_0x3f2fb9[_0x200b('0x1f')](_0x3c1027[_0x200b('0x20')](0x2,_0x3c1027['length'])[_0x200b('0x18')](','));break;case _0x200b('0x24'):var _0x460bc2=_0x3c070f[_0x200b('0x23')][_0x200b('0x1c')](',');_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[0x0]);_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[0x1]);_0x3f2fb9['push'](_0x460bc2[0x2]);_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[0x3]);_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[_0x200b('0x20')](0x4,_0x460bc2[_0x200b('0x21')])['join'](','));break;case _0x200b('0x25'):var _0x576f48=_0x3c070f[_0x200b('0x23')][_0x200b('0x1c')](',');_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x0]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x1]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x2]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x3]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[_0x200b('0x20')](0x4,_0x576f48[_0x200b('0x21')])[_0x200b('0x18')](','));break;case _0x200b('0x14'):_0x3f2fb9[_0x200b('0x1f')](_0x3c070f['appdata']);break;case _0x200b('0x26'):_0x3f2fb9[_0x200b('0x1f')](_0x3c070f[_0x200b('0x27')]);_0x3f2fb9['push'](_0x3c070f[_0x200b('0x23')]);break;default:_0x3f2fb9=_['isNil'](_0x3c070f[_0x200b('0x23')])?[]:_0x3c070f['appdata'][_0x200b('0x1c')](',');}var _0x54d16e={'id':util[_0x200b('0xd')](_0x200b('0x28'),_0x1fbe62,_0x3c070f['id'],_0x3c070f['app']),'condition':require('./interval')[_0x200b('0x29')](_0x1fbe62,getIntervals(_0x4b9c6e['intervals'],_0x3c070f),_0x4b9c6e),'consequence':require('./applications/'+_0x3c070f[_0x200b('0x19')])[_0x200b('0x2a')](_0x1fbe62,_0x3f2fb9,_0x4b9c6e,_0xb20d09),'p':_0x3c070f[_0x200b('0x2b')]||0x0};logger[_0x200b('0x2c')]('Push\x20new\x20rule',_0x54d16e['id'],'on\x20interval',getIntervals(_0x4b9c6e[_0x200b('0x2d')],_0x3c070f)[_0x200b('0x18')]('\x20|\x20'));_0x47394c['push'](_0x54d16e);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0x200b('0x18')](__dirname,'applications',_0x3c070f['app']+_0x200b('0x1a')));}}_0x4b9c6e[_0x200b('0x2e')][_0x1fbe62]=new RuleEngine(_0x47394c);_0x4b9c6e[_0x200b('0x2e')][_0x1fbe62][_0x200b('0x2f')](_0xb20d09,function(_0x555315){logger[_0x200b('0x2c')](_0x200b('0x30'),JSON[_0x200b('0x31')](_0x555315[_0x200b('0x32')]));if(_0x4b9c6e['rules'][_0x1fbe62]){_0x4b9c6e[_0x200b('0x2e')][_0x1fbe62][_0x200b('0x33')]('complete');}});return _0x23ff35({'code':0xc8,'message':_0xb20d09});}else{logger[_0x200b('0x2c')](_0x200b('0x34'));return _0x23ff35({'code':0xc8,'message':_0xb20d09});}}catch(_0x7cfade){logger[_0x200b('0x35')](_0x7cfade[_0x200b('0x36')]);return _0x5cb9cd(_0x7328c0[_0x200b('0x35')](0x1f4,_0x7cfade));}}return _0x5cb9cd(_0x200b('0x37'));});},'AcceptMessage':function(_0x3639a7){var _0x28934a=this;return new Promise(function(_0x1b56c6,_0x19ee33){if(_0x3639a7[_0x200b('0x38')]&&_0x3639a7[_0x200b('0x38')]['id']){if(_0x4b9c6e[_0x200b('0x39')][_0x3639a7[_0x200b('0x38')]['id']]){_0x4b9c6e['agents'][_0x3639a7['agent']['id']][_0x200b('0x3a')]=![];_0x4b9c6e[_0x200b('0x39')][_0x3639a7[_0x200b('0x38')]['id']][_0x200b('0x3b')]=undefined;}}if(_0x3639a7[_0x200b('0x14')]&&_0x3639a7['message']['id']){try{var _0x4bc78f=getId(_0x3639a7[_0x200b('0x1d')],_0x3639a7[_0x200b('0x14')]?_0x3639a7['message']['id']:0x0,_0x3639a7['interaction']?_0x3639a7[_0x200b('0x3c')]['id']:0x0);if(_0x4b9c6e[_0x200b('0x2e')][_0x4bc78f]){_0x4b9c6e[_0x200b('0x2e')][_0x4bc78f][_0x200b('0x33')](_0x200b('0x3d'));if(rpc[_0x3639a7[_0x200b('0x1d')]+_0x200b('0x3e')]){rpc[_0x3639a7['channel']+'QueueReport'][_0x200b('0x3f')](_0x4bc78f,{'UserId':_0x3639a7['message'][_0x200b('0x40')]})[_0x200b('0x41')](function(_0x179be5){logger[_0x200b('0x35')]('error\x20update\x20queue\x20report');});}}return _0x1b56c6({'code':0xc8,'message':_0x3639a7});}catch(_0x44ed13){logger[_0x200b('0x35')](_0x44ed13['stack']);return _0x19ee33(_0x28934a[_0x200b('0x35')](0x1f4,_0x44ed13));}}logger['error'](_0x200b('0x42'));return _0x19ee33(_0x28934a[_0x200b('0x35')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x304a23){var _0x271aaa=this;return new Promise(function(_0xd232d1,_0x37bb63){if(_0x304a23['agent']&&_0x304a23[_0x200b('0x38')]['id']){try{if(_0x4b9c6e[_0x200b('0x39')][_0x304a23[_0x200b('0x38')]['id']]){_0x4b9c6e[_0x200b('0x39')][_0x304a23[_0x200b('0x38')]['id']][_0x200b('0x3a')]=![];_0x4b9c6e['agents'][_0x304a23[_0x200b('0x38')]['id']][_0x200b('0x3b')]=undefined;}return _0xd232d1({'code':0xc8,'message':_0x304a23});}catch(_0x45fd36){logger[_0x200b('0x35')](_0x45fd36[_0x200b('0x36')]);return _0x37bb63(_0x271aaa[_0x200b('0x35')](0x1f4,_0x45fd36));}}logger[_0x200b('0x35')](_0x200b('0x42'));return _0x37bb63(_0x271aaa[_0x200b('0x35')](0x1f4,_0x200b('0x42')));});},'AbandonInteraction':function(_0x168335){var _0x3a444c=this;return new Promise(function(_0x1ff521,_0x20e953){if(_0x168335[_0x200b('0x1d')]&&_0x168335[_0x200b('0x3c')]&&_0x168335[_0x200b('0x3c')]['id']){try{var _0x42dd45=getId(_0x168335[_0x200b('0x1d')],_0x168335[_0x200b('0x14')]?_0x168335[_0x200b('0x14')]['id']:0x0,_0x168335[_0x200b('0x3c')]?_0x168335['interaction']['id']:0x0);if(_0x4b9c6e[_0x200b('0x2e')][_0x42dd45]){_0x4b9c6e['rules'][_0x42dd45][_0x200b('0x33')]('end');}return _0x1ff521({'code':0xc8,'message':_0x168335});}catch(_0x43e8e2){logger[_0x200b('0x35')](_0x43e8e2['stack']);return _0x20e953(_0x3a444c[_0x200b('0x35')](0x1f4,_0x43e8e2));}}logger['error'](_0x200b('0x42'));return _0x20e953(_0x3a444c['error'](0x1f4,_0x200b('0x42')));});},'AgentCapacity':function(_0x22149e){var _0x30e12e=this;return new Promise(function(_0x5bc648,_0x535c47){if(_0x4b9c6e[_0x200b('0x39')][_0x200b('0x43')](_0x22149e['id'])){for(var _0x563869 in _0x22149e['capacity']){if(_0x22149e[_0x200b('0x44')][_0x200b('0x43')](_0x563869)){if(_0x4b9c6e['agents'][_0x22149e['id']][_0x200b('0x43')](_0x563869+_0x200b('0x45'))){_0x4b9c6e[_0x200b('0x39')][_0x22149e['id']][_0x563869+_0x200b('0x45')]=parseInt(_0x22149e[_0x200b('0x44')][_0x563869],0xa);}}}_0x4b9c6e['agents'][_0x22149e['id']][_0x200b('0x46')]();return _0x5bc648({'code':0xc8,'message':_0x4b9c6e[_0x200b('0x39')][_0x22149e['id']]});}else{return _0x535c47(_0x30e12e['error'](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x539833){return new Promise(function(_0x423204,_0x35c511){var _0x1b8a83=_[_0x200b('0x47')](_0x4b9c6e[_0x200b('0x39')]);_0x423204({'count':_0x1b8a83[_0x200b('0x21')],'rows':_0x1b8a83});});},'ChatQueues':function(_0x52676b){return new Promise(function(_0x221009,_0x2a65a2){var _0xa80721=[];for(var _0x43867b in _0x4b9c6e[_0x200b('0x48')]){if(_0x4b9c6e[_0x200b('0x48')][_0x200b('0x43')](_0x43867b)){var _0x1e85f2=_0x4b9c6e[_0x200b('0x48')][_0x43867b];var _0x7e7499={'id':_0x1e85f2['id'],'available':_0x1e85f2[_0x200b('0x49')],'loggedIn':_0x1e85f2[_0x200b('0x4a')],'name':_0x1e85f2['name'],'paused':_0x1e85f2[_0x200b('0x4b')],'waiting':_0x1e85f2['waiting']};_0xa80721[_0x200b('0x1f')](_0x7e7499);}}_0x221009({'count':_0xa80721[_0x200b('0x21')],'rows':_0xa80721});});},'MailQueues':function(_0x30c110){return new Promise(function(_0x19dfad,_0x3e487d){var _0x268232=[];for(var _0x4c3ae0 in _0x4b9c6e[_0x200b('0x4c')]){if(_0x4b9c6e['mailQueues'][_0x200b('0x43')](_0x4c3ae0)){var _0x1b32a6=_0x4b9c6e[_0x200b('0x4c')][_0x4c3ae0];var _0x4a7f57={'id':_0x1b32a6['id'],'available':_0x1b32a6['available'],'loggedIn':_0x1b32a6['loggedIn'],'name':_0x1b32a6[_0x200b('0x4d')],'paused':_0x1b32a6[_0x200b('0x4b')],'waiting':_0x1b32a6[_0x200b('0x4e')]};_0x268232[_0x200b('0x1f')](_0x4a7f57);}}_0x19dfad({'count':_0x268232['length'],'rows':_0x268232});});},'OpenchannelQueues':function(_0x4f0d54){return new Promise(function(_0x5630b4,_0x2d7b26){var _0x32421a=[];for(var _0x3f59dc in _0x4b9c6e[_0x200b('0x4f')]){if(_0x4b9c6e[_0x200b('0x4f')][_0x200b('0x43')](_0x3f59dc)){var _0xb02a33=_0x4b9c6e[_0x200b('0x4f')][_0x3f59dc];var _0x25d2be={'id':_0xb02a33['id'],'available':_0xb02a33['available'],'loggedIn':_0xb02a33[_0x200b('0x4a')],'name':_0xb02a33[_0x200b('0x4d')],'paused':_0xb02a33['paused'],'waiting':_0xb02a33[_0x200b('0x4e')]};_0x32421a['push'](_0x25d2be);}}_0x5630b4({'count':_0x32421a['length'],'rows':_0x32421a});});},'SmsQueues':function(_0x90fad4){return new Promise(function(_0x3a3571,_0x3871be){var _0xf2b642=[];for(var _0x17b6f7 in _0x4b9c6e[_0x200b('0x50')]){if(_0x4b9c6e['smsQueues']['hasOwnProperty'](_0x17b6f7)){var _0x395bd3=_0x4b9c6e[_0x200b('0x50')][_0x17b6f7];var _0x537907={'id':_0x395bd3['id'],'available':_0x395bd3[_0x200b('0x49')],'loggedIn':_0x395bd3[_0x200b('0x4a')],'name':_0x395bd3[_0x200b('0x4d')],'paused':_0x395bd3[_0x200b('0x4b')],'waiting':_0x395bd3[_0x200b('0x4e')]};_0xf2b642[_0x200b('0x1f')](_0x537907);}}_0x3a3571({'count':_0xf2b642[_0x200b('0x21')],'rows':_0xf2b642});});},'FaxQueues':function(_0x47d80f){return new Promise(function(_0x26fa2a,_0x1fc075){var _0x553046=[];for(var _0x1b8919 in _0x4b9c6e[_0x200b('0x51')]){if(_0x4b9c6e[_0x200b('0x51')][_0x200b('0x43')](_0x1b8919)){var _0x378edd=_0x4b9c6e[_0x200b('0x51')][_0x1b8919];var _0x15aa82={'id':_0x378edd['id'],'available':_0x378edd[_0x200b('0x49')],'loggedIn':_0x378edd[_0x200b('0x4a')],'name':_0x378edd[_0x200b('0x4d')],'paused':_0x378edd[_0x200b('0x4b')],'waiting':_0x378edd[_0x200b('0x4e')]};_0x553046['push'](_0x15aa82);}}_0x26fa2a({'count':_0x553046[_0x200b('0x21')],'rows':_0x553046});});},'WhatsappQueues':function(_0x388eb7){return new Promise(function(_0x55c0e6,_0x31c877){var _0x475c55=[];for(var _0x333aba in _0x4b9c6e[_0x200b('0x52')]){if(_0x4b9c6e[_0x200b('0x52')][_0x200b('0x43')](_0x333aba)){var _0x30ce71=_0x4b9c6e['whatsappQueues'][_0x333aba];var _0x4bcd55={'id':_0x30ce71['id'],'available':_0x30ce71[_0x200b('0x49')],'loggedIn':_0x30ce71['loggedIn'],'name':_0x30ce71[_0x200b('0x4d')],'paused':_0x30ce71['paused'],'waiting':_0x30ce71[_0x200b('0x4e')]};_0x475c55[_0x200b('0x1f')](_0x4bcd55);}}_0x55c0e6({'count':_0x475c55[_0x200b('0x21')],'rows':_0x475c55});});},'ChatQueuesWaitingInteractions':function(_0x221e74){return new Promise(function(_0x227b64,_0xc7a9a0){var _0x4ccf37=_[_0x200b('0x47')](_0x4b9c6e[_0x200b('0x53')]);_0x227b64({'count':_0x4ccf37['length'],'rows':_0x4ccf37});});},'MailQueuesWaitingInteractions':function(_0x403a98){return new Promise(function(_0x84220b,_0x2b2208){var _0x609d50=_['values'](_0x4b9c6e[_0x200b('0x54')]);_0x84220b({'count':_0x609d50[_0x200b('0x21')],'rows':_0x609d50});});},'OpenchannelQueuesWaitingInteractions':function(_0x211719){return new Promise(function(_0x5c83b4,_0x35051e){var _0x2feaae=_['values'](_0x4b9c6e[_0x200b('0x55')]);_0x5c83b4({'count':_0x2feaae['length'],'rows':_0x2feaae});});},'SmsQueuesWaitingInteractions':function(_0x25027d){return new Promise(function(_0x58732b,_0x1ac7df){var _0x3d9dee=_['values'](_0x4b9c6e[_0x200b('0x56')]);_0x58732b({'count':_0x3d9dee['length'],'rows':_0x3d9dee});});},'FaxQueuesWaitingInteractions':function(_0x334fc0){return new Promise(function(_0x7a8dc3,_0x3d9e3a){var _0xa64fe7=_[_0x200b('0x47')](_0x4b9c6e[_0x200b('0x57')]);_0x7a8dc3({'count':_0xa64fe7[_0x200b('0x21')],'rows':_0xa64fe7});});},'WhatsappQueuesWaitingInteractions':function(_0x49d273){return new Promise(function(_0x522a92,_0x88c7a3){var _0x419708=_['values'](_0x4b9c6e[_0x200b('0x58')]);_0x522a92({'count':_0x419708['length'],'rows':_0x419708});});}};var _0x39b31f=jayson[_0x200b('0x59')](_0x2b6873)[_0x200b('0x5a')]();_0x39b31f['on'](_0x200b('0x35'),function(_0x4a23d7){logger[_0x200b('0x35')](JSON[_0x200b('0x31')](_0x4a23d7));return _0xfd72a(_0x4a23d7);});_0x39b31f['listen'](0x232c,_0x200b('0x5b'),function(){console[_0x200b('0x5c')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x176fb5(_0x200b('0x5d')+0x232c);});});};
\ No newline at end of file
+var _0x4561=['isNil','IntervalId','Intervals','map','interval','channel','message','interaction','applications','isArray','length','existsSync','join','app','toLowerCase','appdata','split','push','slice','dialogflow','amazonlex','tag','format','./interval','condition','intervals','./applications/','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','rules','info','Applications\x20executed','stringify','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','emit','end','QueueReport','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','jayson/promise','uuid','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s'];(function(_0x21f3bf,_0xfb0f59){var _0x249d08=function(_0x37e6c2){while(--_0x37e6c2){_0x21f3bf['push'](_0x21f3bf['shift']());}};_0x249d08(++_0xfb0f59);}(_0x4561,0x1a3));var _0x1456=function(_0x291f59,_0x238953){_0x291f59=_0x291f59-0x0;var _0x1c119f=_0x4561[_0x291f59];return _0x1c119f;};'use strict';var _=require('lodash');var util=require('util');var path=require('path');var fs=require('fs');var jayson=require(_0x1456('0x0'));var BPromise=require('bluebird');var uuid=require(_0x1456('0x1'));var config=require(_0x1456('0x2'));var logger=require('../../../config/logger')(_0x1456('0x3'));var rpc={'openchannelQueueReport':require(_0x1456('0x4')),'mailQueueReport':require(_0x1456('0x5')),'chatQueueReport':require(_0x1456('0x6')),'smsQueueReport':require(_0x1456('0x7')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x1456('0x8'))};var RuleEngine=require(_0x1456('0x9'));function getId(_0xf359cd,_0x42e9c6,_0x580f28){return util['format'](_0x1456('0xa'),_0xf359cd,_0x42e9c6||0x0,_0x580f28||0x0);}function getIntervals(_0x4b5241,_0xa226d7){var _0x150fb9=[];if(!_[_0x1456('0xb')](_0xa226d7['IntervalId'])&&!_['isNil'](_0x4b5241[_0xa226d7[_0x1456('0xc')]])&&!_[_0x1456('0xb')](_0x4b5241[_0xa226d7[_0x1456('0xc')]][_0x1456('0xd')])){_0x150fb9=_[_0x1456('0xe')](_0x4b5241[_0xa226d7['IntervalId']][_0x1456('0xd')],_0x1456('0xf'));}else if(!_[_0x1456('0xb')](_0xa226d7[_0x1456('0xf')])){_0x150fb9=[_0xa226d7[_0x1456('0xf')]];}return _0x150fb9;}exports['listen']=function(_0x3e6a2a){_0x3e6a2a['rules']={};return new BPromise(function(_0x3cd6ea,_0x498381){var _0x22fd9a={'Start':function(_0x3af2a6){var _0x59e040=this;return new Promise(function(_0x16c1ef,_0x2f9ae2){if(_0x3af2a6){try{var _0x140ae9=[];var _0x4f211f=getId(_0x3af2a6[_0x1456('0x10')],_0x3af2a6[_0x1456('0x11')]?_0x3af2a6[_0x1456('0x11')]['id']:0x0,_0x3af2a6[_0x1456('0x12')]?_0x3af2a6[_0x1456('0x12')]['id']:0x0);if(_0x3af2a6[_0x1456('0x13')]&&_[_0x1456('0x14')](_0x3af2a6[_0x1456('0x13')])&&_0x3af2a6['applications'][_0x1456('0x15')]){for(var _0x50ea74=0x0;_0x50ea74<_0x3af2a6['applications'][_0x1456('0x15')];_0x50ea74+=0x1){var _0x263660=_0x3af2a6['applications'][_0x50ea74];if(fs[_0x1456('0x16')](path[_0x1456('0x17')](__dirname,_0x1456('0x13'),_0x263660[_0x1456('0x18')]+'.js'))){var _0x400e24=[];switch(_0x263660[_0x1456('0x18')][_0x1456('0x19')]()){case'autoreply':var _0x179599=_0x263660[_0x1456('0x1a')][_0x1456('0x1b')](',');if(_0x3af2a6['channel']==='mail'){_0x400e24[_0x1456('0x1c')](_0x179599[0x0]);_0x400e24['push'](_0x179599[0x1]);_0x400e24[_0x1456('0x1c')](_0x179599['slice'](0x2,_0x179599['length'])[_0x1456('0x17')](','));}else{_0x400e24[_0x1456('0x1c')](_0x179599[0x0]);_0x400e24[_0x1456('0x1c')](_0x179599[_0x1456('0x1d')](0x1,_0x179599[_0x1456('0x15')])[_0x1456('0x17')](','));}break;case _0x1456('0x1e'):var _0x22446d=_0x263660[_0x1456('0x1a')][_0x1456('0x1b')](',');_0x400e24[_0x1456('0x1c')](_0x22446d[0x0]);_0x400e24[_0x1456('0x1c')](_0x22446d[0x1]);_0x400e24['push'](_0x22446d[_0x1456('0x1d')](0x2,_0x22446d[_0x1456('0x15')])[_0x1456('0x17')](','));break;case'dialogflowv2':var _0x2056a0=_0x263660[_0x1456('0x1a')][_0x1456('0x1b')](',');_0x400e24['push'](_0x2056a0[0x0]);_0x400e24[_0x1456('0x1c')](_0x2056a0[0x1]);_0x400e24['push'](_0x2056a0[0x2]);_0x400e24['push'](_0x2056a0[0x3]);_0x400e24[_0x1456('0x1c')](_0x2056a0[_0x1456('0x1d')](0x4,_0x2056a0[_0x1456('0x15')])[_0x1456('0x17')](','));break;case _0x1456('0x1f'):var _0x3ef064=_0x263660['appdata']['split'](',');_0x400e24['push'](_0x3ef064[0x0]);_0x400e24[_0x1456('0x1c')](_0x3ef064[0x1]);_0x400e24[_0x1456('0x1c')](_0x3ef064[0x2]);_0x400e24[_0x1456('0x1c')](_0x3ef064[0x3]);_0x400e24[_0x1456('0x1c')](_0x3ef064[_0x1456('0x1d')](0x4,_0x3ef064[_0x1456('0x15')])[_0x1456('0x17')](','));break;case _0x1456('0x11'):_0x400e24[_0x1456('0x1c')](_0x263660['appdata']);break;case _0x1456('0x20'):_0x400e24[_0x1456('0x1c')](_0x263660['TagId']);_0x400e24['push'](_0x263660[_0x1456('0x1a')]);break;default:_0x400e24=_[_0x1456('0xb')](_0x263660[_0x1456('0x1a')])?[]:_0x263660[_0x1456('0x1a')]['split'](',');}var _0x5bdb95={'id':util[_0x1456('0x21')]('%s:%s:%s',_0x4f211f,_0x263660['id'],_0x263660[_0x1456('0x18')]),'condition':require(_0x1456('0x22'))[_0x1456('0x23')](_0x4f211f,getIntervals(_0x3e6a2a[_0x1456('0x24')],_0x263660),_0x3e6a2a),'consequence':require(_0x1456('0x25')+_0x263660['app'])['consequence'](_0x4f211f,_0x400e24,_0x3e6a2a,_0x3af2a6),'p':_0x263660['priority']||0x0};logger['info']('Push\x20new\x20rule',_0x5bdb95['id'],_0x1456('0x26'),getIntervals(_0x3e6a2a[_0x1456('0x24')],_0x263660)[_0x1456('0x17')](_0x1456('0x27')));_0x140ae9[_0x1456('0x1c')](_0x5bdb95);}else{logger[_0x1456('0x28')](_0x1456('0x29'),path[_0x1456('0x17')](__dirname,'applications',_0x263660[_0x1456('0x18')]+'.js'));}}_0x3e6a2a[_0x1456('0x2a')][_0x4f211f]=new RuleEngine(_0x140ae9);_0x3e6a2a[_0x1456('0x2a')][_0x4f211f]['execute'](_0x3af2a6,function(_0x44d433){logger[_0x1456('0x2b')](_0x1456('0x2c'),JSON[_0x1456('0x2d')](_0x44d433['matchPath']));if(_0x3e6a2a['rules'][_0x4f211f]){_0x3e6a2a['rules'][_0x4f211f]['emit']('complete');}});return _0x16c1ef({'code':0xc8,'message':_0x3af2a6});}else{logger['info'](_0x1456('0x2e'));return _0x16c1ef({'code':0xc8,'message':_0x3af2a6});}}catch(_0x211c9e){logger[_0x1456('0x28')](_0x211c9e[_0x1456('0x2f')]);return _0x2f9ae2(_0x59e040[_0x1456('0x28')](0x1f4,_0x211c9e));}}return _0x2f9ae2(_0x1456('0x30'));});},'AcceptMessage':function(_0x505f86){var _0x3d3edb=this;return new Promise(function(_0x506197,_0x2d6a22){if(_0x505f86[_0x1456('0x31')]&&_0x505f86[_0x1456('0x31')]['id']){if(_0x3e6a2a[_0x1456('0x32')][_0x505f86[_0x1456('0x31')]['id']]){_0x3e6a2a[_0x1456('0x32')][_0x505f86[_0x1456('0x31')]['id']][_0x1456('0x33')]=![];_0x3e6a2a[_0x1456('0x32')][_0x505f86['agent']['id']][_0x1456('0x34')]=undefined;}}if(_0x505f86[_0x1456('0x11')]&&_0x505f86[_0x1456('0x11')]['id']){try{var _0x2ab934=getId(_0x505f86['channel'],_0x505f86[_0x1456('0x11')]?_0x505f86[_0x1456('0x11')]['id']:0x0,_0x505f86[_0x1456('0x12')]?_0x505f86[_0x1456('0x12')]['id']:0x0);if(_0x3e6a2a[_0x1456('0x2a')][_0x2ab934]){_0x3e6a2a[_0x1456('0x2a')][_0x2ab934][_0x1456('0x35')](_0x1456('0x36'));if(rpc[_0x505f86[_0x1456('0x10')]+_0x1456('0x37')]){rpc[_0x505f86[_0x1456('0x10')]+_0x1456('0x37')]['update'](_0x2ab934,{'UserId':_0x505f86[_0x1456('0x11')][_0x1456('0x38')]})[_0x1456('0x39')](function(_0x209734){logger['error'](_0x1456('0x3a'));});}}return _0x506197({'code':0xc8,'message':_0x505f86});}catch(_0x4a54f5){logger[_0x1456('0x28')](_0x4a54f5[_0x1456('0x2f')]);return _0x2d6a22(_0x3d3edb[_0x1456('0x28')](0x1f4,_0x4a54f5));}}logger[_0x1456('0x28')](_0x1456('0x3b'));return _0x2d6a22(_0x3d3edb[_0x1456('0x28')](0x1f4,_0x1456('0x3b')));});},'RejectMessage':function(_0x298f17){var _0x573166=this;return new Promise(function(_0x585580,_0x59e449){if(_0x298f17[_0x1456('0x31')]&&_0x298f17[_0x1456('0x31')]['id']){try{if(_0x3e6a2a[_0x1456('0x32')][_0x298f17[_0x1456('0x31')]['id']]){_0x3e6a2a['agents'][_0x298f17[_0x1456('0x31')]['id']][_0x1456('0x33')]=![];_0x3e6a2a['agents'][_0x298f17[_0x1456('0x31')]['id']][_0x1456('0x34')]=undefined;}return _0x585580({'code':0xc8,'message':_0x298f17});}catch(_0x5d0879){logger[_0x1456('0x28')](_0x5d0879['stack']);return _0x59e449(_0x573166['error'](0x1f4,_0x5d0879));}}logger['error'](_0x1456('0x3b'));return _0x59e449(_0x573166[_0x1456('0x28')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x412965){var _0x2c9c8c=this;return new Promise(function(_0x1eaf74,_0x5dcb86){if(_0x412965[_0x1456('0x10')]&&_0x412965[_0x1456('0x12')]&&_0x412965['interaction']['id']){try{var _0x313fab=getId(_0x412965[_0x1456('0x10')],_0x412965[_0x1456('0x11')]?_0x412965[_0x1456('0x11')]['id']:0x0,_0x412965[_0x1456('0x12')]?_0x412965[_0x1456('0x12')]['id']:0x0);if(_0x3e6a2a[_0x1456('0x2a')][_0x313fab]){_0x3e6a2a[_0x1456('0x2a')][_0x313fab][_0x1456('0x35')](_0x1456('0x36'));}return _0x1eaf74({'code':0xc8,'message':_0x412965});}catch(_0x26de0b){logger[_0x1456('0x28')](_0x26de0b[_0x1456('0x2f')]);return _0x5dcb86(_0x2c9c8c[_0x1456('0x28')](0x1f4,_0x26de0b));}}logger[_0x1456('0x28')]('message\x20is\x20empty');return _0x5dcb86(_0x2c9c8c['error'](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x74dc39){var _0x3cc53b=this;return new Promise(function(_0x58edd7,_0x5d4d15){if(_0x3e6a2a[_0x1456('0x32')]['hasOwnProperty'](_0x74dc39['id'])){for(var _0x14290f in _0x74dc39[_0x1456('0x3c')]){if(_0x74dc39['capacity'][_0x1456('0x3d')](_0x14290f)){if(_0x3e6a2a[_0x1456('0x32')][_0x74dc39['id']][_0x1456('0x3d')](_0x14290f+_0x1456('0x3e'))){_0x3e6a2a[_0x1456('0x32')][_0x74dc39['id']][_0x14290f+_0x1456('0x3e')]=parseInt(_0x74dc39['capacity'][_0x14290f],0xa);}}}_0x3e6a2a['agents'][_0x74dc39['id']][_0x1456('0x3f')]();return _0x58edd7({'code':0xc8,'message':_0x3e6a2a[_0x1456('0x32')][_0x74dc39['id']]});}else{return _0x5d4d15(_0x3cc53b[_0x1456('0x28')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x521ead){return new Promise(function(_0x2ff50a,_0x11fa81){var _0x5c8dfc=_[_0x1456('0x40')](_0x3e6a2a['agents']);_0x2ff50a({'count':_0x5c8dfc[_0x1456('0x15')],'rows':_0x5c8dfc});});},'ChatQueues':function(_0x594235){return new Promise(function(_0x3cc731,_0x23d749){var _0x28ae80=[];for(var _0x4f611e in _0x3e6a2a['chatQueues']){if(_0x3e6a2a[_0x1456('0x41')][_0x1456('0x3d')](_0x4f611e)){var _0x58ad01=_0x3e6a2a[_0x1456('0x41')][_0x4f611e];var _0x830f86={'id':_0x58ad01['id'],'available':_0x58ad01[_0x1456('0x42')],'loggedIn':_0x58ad01[_0x1456('0x43')],'name':_0x58ad01[_0x1456('0x44')],'paused':_0x58ad01[_0x1456('0x45')],'waiting':_0x58ad01[_0x1456('0x46')]};_0x28ae80[_0x1456('0x1c')](_0x830f86);}}_0x3cc731({'count':_0x28ae80['length'],'rows':_0x28ae80});});},'MailQueues':function(_0x553f05){return new Promise(function(_0x51f3de,_0x43b327){var _0x42d9a1=[];for(var _0x3e04e5 in _0x3e6a2a[_0x1456('0x47')]){if(_0x3e6a2a['mailQueues'][_0x1456('0x3d')](_0x3e04e5)){var _0x118df1=_0x3e6a2a[_0x1456('0x47')][_0x3e04e5];var _0x19936c={'id':_0x118df1['id'],'available':_0x118df1['available'],'loggedIn':_0x118df1[_0x1456('0x43')],'name':_0x118df1['name'],'paused':_0x118df1['paused'],'waiting':_0x118df1[_0x1456('0x46')]};_0x42d9a1[_0x1456('0x1c')](_0x19936c);}}_0x51f3de({'count':_0x42d9a1[_0x1456('0x15')],'rows':_0x42d9a1});});},'OpenchannelQueues':function(_0x230f12){return new Promise(function(_0x4fed3c,_0x57fb15){var _0x2756dd=[];for(var _0x374bef in _0x3e6a2a[_0x1456('0x48')]){if(_0x3e6a2a[_0x1456('0x48')]['hasOwnProperty'](_0x374bef)){var _0x60cfe8=_0x3e6a2a[_0x1456('0x48')][_0x374bef];var _0x46bf1d={'id':_0x60cfe8['id'],'available':_0x60cfe8['available'],'loggedIn':_0x60cfe8[_0x1456('0x43')],'name':_0x60cfe8[_0x1456('0x44')],'paused':_0x60cfe8['paused'],'waiting':_0x60cfe8[_0x1456('0x46')]};_0x2756dd[_0x1456('0x1c')](_0x46bf1d);}}_0x4fed3c({'count':_0x2756dd[_0x1456('0x15')],'rows':_0x2756dd});});},'SmsQueues':function(_0x24ddc1){return new Promise(function(_0x5c4df4,_0x3bbb68){var _0x3c4e0a=[];for(var _0x68bcf6 in _0x3e6a2a[_0x1456('0x49')]){if(_0x3e6a2a[_0x1456('0x49')][_0x1456('0x3d')](_0x68bcf6)){var _0x43d667=_0x3e6a2a['smsQueues'][_0x68bcf6];var _0x4c7672={'id':_0x43d667['id'],'available':_0x43d667[_0x1456('0x42')],'loggedIn':_0x43d667[_0x1456('0x43')],'name':_0x43d667['name'],'paused':_0x43d667[_0x1456('0x45')],'waiting':_0x43d667[_0x1456('0x46')]};_0x3c4e0a[_0x1456('0x1c')](_0x4c7672);}}_0x5c4df4({'count':_0x3c4e0a[_0x1456('0x15')],'rows':_0x3c4e0a});});},'FaxQueues':function(_0x1062e1){return new Promise(function(_0x2485bb,_0x469011){var _0x4528c5=[];for(var _0x379a4a in _0x3e6a2a['faxQueues']){if(_0x3e6a2a['faxQueues'][_0x1456('0x3d')](_0x379a4a)){var _0x2ee462=_0x3e6a2a[_0x1456('0x4a')][_0x379a4a];var _0x44fbd6={'id':_0x2ee462['id'],'available':_0x2ee462[_0x1456('0x42')],'loggedIn':_0x2ee462[_0x1456('0x43')],'name':_0x2ee462[_0x1456('0x44')],'paused':_0x2ee462['paused'],'waiting':_0x2ee462[_0x1456('0x46')]};_0x4528c5['push'](_0x44fbd6);}}_0x2485bb({'count':_0x4528c5[_0x1456('0x15')],'rows':_0x4528c5});});},'WhatsappQueues':function(_0x2e1e27){return new Promise(function(_0x59e80c,_0x1afd41){var _0x501a85=[];for(var _0x124361 in _0x3e6a2a[_0x1456('0x4b')]){if(_0x3e6a2a[_0x1456('0x4b')][_0x1456('0x3d')](_0x124361)){var _0x1f6a5a=_0x3e6a2a[_0x1456('0x4b')][_0x124361];var _0xbabd7e={'id':_0x1f6a5a['id'],'available':_0x1f6a5a[_0x1456('0x42')],'loggedIn':_0x1f6a5a['loggedIn'],'name':_0x1f6a5a['name'],'paused':_0x1f6a5a[_0x1456('0x45')],'waiting':_0x1f6a5a['waiting']};_0x501a85[_0x1456('0x1c')](_0xbabd7e);}}_0x59e80c({'count':_0x501a85[_0x1456('0x15')],'rows':_0x501a85});});},'ChatQueuesWaitingInteractions':function(_0x53b568){return new Promise(function(_0x473639,_0x5acb58){var _0xcf77a9=_[_0x1456('0x40')](_0x3e6a2a['chatQueuesWaitingInteractions']);_0x473639({'count':_0xcf77a9['length'],'rows':_0xcf77a9});});},'MailQueuesWaitingInteractions':function(_0x585557){return new Promise(function(_0x4fa97f,_0x4f7856){var _0x3fbcdd=_[_0x1456('0x40')](_0x3e6a2a[_0x1456('0x4c')]);_0x4fa97f({'count':_0x3fbcdd[_0x1456('0x15')],'rows':_0x3fbcdd});});},'OpenchannelQueuesWaitingInteractions':function(_0x43a284){return new Promise(function(_0x250b1a,_0x5233af){var _0x3228dd=_['values'](_0x3e6a2a[_0x1456('0x4d')]);_0x250b1a({'count':_0x3228dd[_0x1456('0x15')],'rows':_0x3228dd});});},'SmsQueuesWaitingInteractions':function(_0x4d3898){return new Promise(function(_0x4d9667,_0x1fc286){var _0x4520d9=_[_0x1456('0x40')](_0x3e6a2a[_0x1456('0x4e')]);_0x4d9667({'count':_0x4520d9[_0x1456('0x15')],'rows':_0x4520d9});});},'FaxQueuesWaitingInteractions':function(_0x31481f){return new Promise(function(_0x57786b,_0x5c726d){var _0x416fbc=_['values'](_0x3e6a2a[_0x1456('0x4f')]);_0x57786b({'count':_0x416fbc[_0x1456('0x15')],'rows':_0x416fbc});});},'WhatsappQueuesWaitingInteractions':function(_0x3ec68d){return new Promise(function(_0x3bbb66,_0xf76949){var _0x19cb58=_[_0x1456('0x40')](_0x3e6a2a['whatsappQueuesWaitingInteractions']);_0x3bbb66({'count':_0x19cb58[_0x1456('0x15')],'rows':_0x19cb58});});}};var _0x243c1b=jayson[_0x1456('0x50')](_0x22fd9a)[_0x1456('0x51')]();_0x243c1b['on'](_0x1456('0x28'),function(_0x27961){logger[_0x1456('0x28')](JSON[_0x1456('0x2d')](_0x27961));return _0x498381(_0x27961);});_0x243c1b[_0x1456('0x52')](0x232c,_0x1456('0x53'),function(){console[_0x1456('0x54')](_0x1456('0x55'),0x232c);return _0x3cd6ea('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 0e2ca4d..048607f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b00=['log','util','jayson/promise','lodash','../../../config/logger','client','then','error','message','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','indexOf','true','catch','[%s][INTERVAL]\x20%s','some','info','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when'];(function(_0x37bef0,_0x31a72){var _0x321392=function(_0x516d6e){while(--_0x516d6e){_0x37bef0['push'](_0x37bef0['shift']());}};_0x321392(++_0x31a72);}(_0x4b00,0x1ef));var _0x04b0=function(_0x325e82,_0x2fe6e5){_0x325e82=_0x325e82-0x0;var _0x5ee196=_0x4b00[_0x325e82];return _0x5ee196;};'use strict';var util=require(_0x04b0('0x0'));var BPromise=require('bluebird');var jayson=require(_0x04b0('0x1'));var _=require(_0x04b0('0x2'));var logger=require(_0x04b0('0x3'))('routing');var client=jayson[_0x04b0('0x4')]['http']({'port':0x232a});function request(_0x4674cf,_0x137b15){return new BPromise(function(_0x29c0e0,_0x105915){return client['request'](_0x4674cf,_0x137b15)[_0x04b0('0x5')](function(_0x150314){if(_0x150314[_0x04b0('0x6')]){return _0x105915(_0x150314[_0x04b0('0x6')][_0x04b0('0x7')]);}else{return _0x29c0e0(_0x150314['result']);}})['catch'](function(_0x3bff3b){return _0x105915(_0x3bff3b);});});}exports[_0x04b0('0x8')]=function(_0x5be8db,_0x44df92,_0x1fe367){return function(_0x5d19dd){if(_0x1fe367['rules']&&!_0x1fe367[_0x04b0('0x9')][_0x5be8db]){logger['info'](_0x04b0('0xa'),_0x5be8db);return _0x5d19dd[_0x04b0('0xb')]();}var _0x4ae39d=[];for(var _0x252c86=0x0;_0x252c86<_0x44df92[_0x04b0('0xc')];_0x252c86+=0x1){_0x4ae39d['push'](request(_0x04b0('0xd'),{'command':util[_0x04b0('0xe')]('iftime\x20%s',_0x44df92[_0x252c86])})[_0x04b0('0x5')](function(_0x63ce1c){return _0x63ce1c&&_0x63ce1c['message']&&_0x63ce1c['message'][_0x04b0('0xf')](_0x04b0('0x10'))>=0x0?!![]:![];})[_0x04b0('0x11')](function(_0x4ffda3){logger[_0x04b0('0x6')](_0x04b0('0x12'),_0x5be8db,_0x44df92[_0x252c86]);}));}BPromise['all'](_0x4ae39d)['then'](function(_0x447593){var _0x4a6a0a=_[_0x04b0('0x13')](_0x447593);logger[_0x04b0('0x14')](_0x04b0('0x15'),_0x5be8db,_0x44df92[_0x04b0('0x16')](_0x04b0('0x17')),_0x4a6a0a);_0x5d19dd[_0x04b0('0x18')](_0x4a6a0a);})[_0x04b0('0x11')](function(_0x2401b0){console[_0x04b0('0x19')](_0x2401b0);logger[_0x04b0('0x6')]('[%s][INTERVAL]\x20%s\x20%s',_0x5be8db,_0x44df92['join'](_0x04b0('0x17')),_0x2401b0['stack']);_0x5d19dd[_0x04b0('0xb')]();});};};
\ No newline at end of file
+var _0x0956=['true','catch','[%s][INTERVAL]\x20%s','all','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when','log','join','stack','util','bluebird','jayson/promise','lodash','routing','client','request','then','error','message','result','info','stop','length','push','Command','format','indexOf'];(function(_0x35f934,_0x34451c){var _0x2293c7=function(_0x55e039){while(--_0x55e039){_0x35f934['push'](_0x35f934['shift']());}};_0x2293c7(++_0x34451c);}(_0x0956,0xb2));var _0x6095=function(_0x35d12d,_0x5b387b){_0x35d12d=_0x35d12d-0x0;var _0x3592ba=_0x0956[_0x35d12d];return _0x3592ba;};'use strict';var util=require(_0x6095('0x0'));var BPromise=require(_0x6095('0x1'));var jayson=require(_0x6095('0x2'));var _=require(_0x6095('0x3'));var logger=require('../../../config/logger')(_0x6095('0x4'));var client=jayson[_0x6095('0x5')]['http']({'port':0x232a});function request(_0x5b1195,_0x2986d7){return new BPromise(function(_0x1d2ec3,_0x2c45c4){return client[_0x6095('0x6')](_0x5b1195,_0x2986d7)[_0x6095('0x7')](function(_0x10ad6d){if(_0x10ad6d[_0x6095('0x8')]){return _0x2c45c4(_0x10ad6d[_0x6095('0x8')][_0x6095('0x9')]);}else{return _0x1d2ec3(_0x10ad6d[_0x6095('0xa')]);}})['catch'](function(_0x142890){return _0x2c45c4(_0x142890);});});}exports['condition']=function(_0x4a9872,_0x203ef4,_0x285396){return function(_0x335e37){if(_0x285396['rules']&&!_0x285396['rules'][_0x4a9872]){logger[_0x6095('0xb')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x4a9872);return _0x335e37[_0x6095('0xc')]();}var _0x4c3452=[];for(var _0x49ccad=0x0;_0x49ccad<_0x203ef4[_0x6095('0xd')];_0x49ccad+=0x1){_0x4c3452[_0x6095('0xe')](request(_0x6095('0xf'),{'command':util[_0x6095('0x10')]('iftime\x20%s',_0x203ef4[_0x49ccad])})['then'](function(_0x3249ae){return _0x3249ae&&_0x3249ae[_0x6095('0x9')]&&_0x3249ae[_0x6095('0x9')][_0x6095('0x11')](_0x6095('0x12'))>=0x0?!![]:![];})[_0x6095('0x13')](function(_0x461a01){logger[_0x6095('0x8')](_0x6095('0x14'),_0x4a9872,_0x203ef4[_0x49ccad]);}));}BPromise[_0x6095('0x15')](_0x4c3452)[_0x6095('0x7')](function(_0xb8a7b9){var _0x4161e2=_['some'](_0xb8a7b9);logger[_0x6095('0xb')](_0x6095('0x16'),_0x4a9872,_0x203ef4['join'](_0x6095('0x17')),_0x4161e2);_0x335e37[_0x6095('0x18')](_0x4161e2);})['catch'](function(_0x4a09b3){console[_0x6095('0x19')](_0x4a09b3);logger[_0x6095('0x8')](_0x6095('0x16'),_0x4a9872,_0x203ef4[_0x6095('0x1a')](_0x6095('0x17')),_0x4a09b3[_0x6095('0x1b')]);_0x335e37[_0x6095('0xc')]();});};};
\ No newline at end of file
index f8430a9..27533c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ded=['agentcompleteAt','agentconnectAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfertype','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','indexOf','splice','agent','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','agentcomplete','acw','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','diffTime'];(function(_0x39491d,_0x40dbb6){var _0xaff30=function(_0xbe1e0d){while(--_0xbe1e0d){_0x39491d['push'](_0x39491d['shift']());}};_0xaff30(++_0x40dbb6);}(_0x4ded,0x116));var _0xd4de=function(_0x4a2b9d,_0x13f473){_0x4a2b9d=_0x4a2b9d-0x0;var _0x4cfed0=_0x4ded[_0x4a2b9d];return _0x4cfed0;};'use strict';var _=require(_0xd4de('0x0'));var util=require(_0xd4de('0x1'));var utils=require(_0xd4de('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1fa334,_0x2349f5){utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x5'),_0x1fa334[_0xd4de('0x6')],_0x1fa334[_0xd4de('0x7')],_0x1fa334[_0xd4de('0x8')],_0x1fa334[_0xd4de('0x9')],_0x1fa334['interface'],_0x1fa334[_0xd4de('0xa')],_0x1fa334[_0xd4de('0xb')],_0x1fa334[_0xd4de('0xc')]));if(_0x1fa334[_0xd4de('0x8')]){utils[_0xd4de('0xd')](_0x1fa334[_0xd4de('0x8')])['then'](function(_0xb7e8cf){if(_0xb7e8cf){_0x1fa334['type']=_0xb7e8cf['type'];_0x1fa334['agentacw']=_0x1fa334[_0xd4de('0xe')]?_0xb7e8cf[_0xd4de('0xf')]:![];_0x1fa334['acwtime']=_0x1fa334['agentacw']?_0xb7e8cf['acwTimeout']:0x0;}utils[_0xd4de('0x10')]('CreateVoiceAgentReport',_0x1fa334);});}else{utils[_0xd4de('0x10')](_0xd4de('0x11'),_0x1fa334);}if(_0x2349f5){delete transfers[_0x1fa334[_0xd4de('0x6')]];}else{delete agents[_0x1fa334[_0xd4de('0x12')]];}}exports[_0xd4de('0x13')]=function(_0x3af6e0){try{utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x15'),_0x3af6e0[_0xd4de('0x6')]),_0x3af6e0);agents[_0x3af6e0[_0xd4de('0x12')]]=_0x3af6e0;agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0x16')]=utils[_0xd4de('0x17')]();agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x18');agents[_0x3af6e0['destuniqueid']]['connectedlinenum']=null;agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0x19')]=null;utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x3af6e0['uniqueid'],agents[_0x3af6e0[_0xd4de('0x12')]]['membername'],_0x3af6e0[_0xd4de('0x12')]));}catch(_0x29c028){utils['error'](util[_0xd4de('0x4')]('[%s][agents][agentcalled]',_0x3af6e0[_0xd4de('0x6')]),_0x29c028);}};exports[_0xd4de('0x1a')]=function(_0x2bad14){try{if(!_[_0xd4de('0x1b')](agents[_0x2bad14['destuniqueid']])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x1c'),_0x2bad14[_0xd4de('0x6')]),_0x2bad14);utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x1d'),_0x2bad14[_0xd4de('0x6')],agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x9')],_0x2bad14['destuniqueid']));agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x1a')]=!![];agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x1e')]=utils[_0xd4de('0x17')]();agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x1f');agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x20')]=_0xd4de('0x1f');agents[_0x2bad14[_0xd4de('0x12')]]['holdtime']=_0x2bad14[_0xd4de('0x21')]?parseInt(_0x2bad14[_0xd4de('0x21')])/0x3e8:0x0;agents[_0x2bad14['destuniqueid']][_0xd4de('0x22')]=0x0;unanswered['push'](_0x2bad14[_0xd4de('0x12')]);}}catch(_0x32e407){utils[_0xd4de('0x23')](util['format'](_0xd4de('0x1c'),_0x2bad14[_0xd4de('0x6')]),_0x32e407);}};exports[_0xd4de('0x24')]=function(_0x50cb73){try{_[_0xd4de('0x25')](agents,function(_0x1804c7,_0x55f9f9){if(_0x1804c7['uniqueid']==_0x50cb73['uniqueid']&&!_[_0xd4de('0x26')](unanswered,_0x1804c7['destuniqueid'])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x27'),_0x50cb73[_0xd4de('0x6')]),_0x50cb73);utils['info'](util[_0xd4de('0x4')](_0xd4de('0x28'),_0x50cb73['uniqueid'],_0x1804c7[_0xd4de('0x9')],_0x1804c7[_0xd4de('0x12')]));_0x1804c7['agentringnoanswer']=!![];_0x1804c7['agentringnoanswerAt']=utils[_0xd4de('0x17')]();_0x1804c7[_0xd4de('0xc')]=_0xd4de('0x29');_0x1804c7[_0xd4de('0x20')]='abandoned';_0x1804c7[_0xd4de('0x2a')]=_0x50cb73[_0xd4de('0x2a')];_0x1804c7['talktime']=0x0;writeDB(_0x1804c7);}});}catch(_0x329d49){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x27'),_0x50cb73[_0xd4de('0x6')]),_0x329d49);}};exports[_0xd4de('0x2b')]=function(_0x53441c){try{if(agents[_0x53441c['destuniqueid']]){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x2c'),_0x53441c['uniqueid']),_0x53441c);utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x53441c[_0xd4de('0x6')],agents[_0x53441c[_0xd4de('0x12')]][_0xd4de('0x9')],_0x53441c[_0xd4de('0x12')]));agents[_0x53441c['destuniqueid']]['agentconnectAt']=utils[_0xd4de('0x17')]();agents[_0x53441c['destuniqueid']][_0xd4de('0xb')]=_0x53441c['connectedlinenum'];agents[_0x53441c[_0xd4de('0x12')]][_0xd4de('0x19')]=_0x53441c[_0xd4de('0x19')];agents[_0x53441c[_0xd4de('0x12')]]['holdtime']=_0x53441c[_0xd4de('0x21')];agents[_0x53441c['destuniqueid']][_0xd4de('0xc')]=_0xd4de('0x2d');_[_0xd4de('0x25')](agents,function(_0x4517a6,_0x349c5f){if(_0x4517a6[_0xd4de('0x12')]!=_0x53441c[_0xd4de('0x12')]&&_0x4517a6['uniqueid']==_0x53441c[_0xd4de('0x6')]){_0x4517a6[_0xd4de('0x22')]=0x0;_0x4517a6[_0xd4de('0x2a')]=_0x53441c[_0xd4de('0x21')];_0x4517a6[_0xd4de('0x1a')]=!![];_0x4517a6['agentringnoanswerAt']=utils[_0xd4de('0x17')]();_0x4517a6[_0xd4de('0xc')]=_0xd4de('0x2e');_0x4517a6['reason']=_0xd4de('0x2e');_0x4517a6[_0xd4de('0x2f')]=_0x53441c[_0xd4de('0x12')];_0x4517a6['answeredelsewheremembername']=_0x53441c[_0xd4de('0x9')];writeDB(_0x4517a6);}});}}catch(_0x10a42c){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x2c'),_0x53441c[_0xd4de('0x6')]),_0x10a42c);}};exports[_0xd4de('0xe')]=function(_0x5ecbbd){try{if(!_[_0xd4de('0x1b')](agents[_0x5ecbbd[_0xd4de('0x12')]])){utils[_0xd4de('0x14')](util['format'](_0xd4de('0x30'),_0x5ecbbd[_0xd4de('0x6')]),_0x5ecbbd);utils[_0xd4de('0x3')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x5ecbbd[_0xd4de('0x6')],agents[_0x5ecbbd[_0xd4de('0x12')]]['membername'],_0x5ecbbd[_0xd4de('0x12')]));agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0xe')]=!![];agents[_0x5ecbbd[_0xd4de('0x12')]]['agentcompleteAt']=utils[_0xd4de('0x17')]();agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x22')]=utils[_0xd4de('0x31')](agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x32')],agents[_0x5ecbbd['destuniqueid']][_0xd4de('0x33')]);agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x20')]=_0x5ecbbd[_0xd4de('0x20')];agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x34');writeDB(agents[_0x5ecbbd[_0xd4de('0x12')]]);}}catch(_0xaf442c){utils[_0xd4de('0x23')](util['format'](_0xd4de('0x30'),_0x5ecbbd[_0xd4de('0x6')]),_0xaf442c);}};exports[_0xd4de('0x35')]=function(_0x518bfe){try{if(!_[_0xd4de('0x1b')](agents[_0x518bfe[_0xd4de('0x36')]])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x37'),_0x518bfe[_0xd4de('0x6')]),_0x518bfe);utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x38'),_0x518bfe[_0xd4de('0x6')],agents[_0x518bfe['transfereruniqueid']][_0xd4de('0x9')],agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x6')]));agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x39')]=!![];agents[_0x518bfe['transfereruniqueid']]['transfertype']=_0xd4de('0x3a');agents[_0x518bfe[_0xd4de('0x36')]]['transferexten']=_0x518bfe['extension'];agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x3b')]=agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x6')];}}catch(_0x34d772){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x37'),_0x518bfe[_0xd4de('0x6')]),_0x34d772);}};exports[_0xd4de('0x3c')]=function(_0x3be8c2){try{utils[_0xd4de('0x14')](util['format'](_0xd4de('0x3d'),_0x3be8c2[_0xd4de('0x3e')]),_0x3be8c2);if(_0x3be8c2[_0xd4de('0x3e')]==_0x3be8c2[_0xd4de('0x3f')]){if(!_[_0xd4de('0x1b')](agents[_0x3be8c2[_0xd4de('0x40')]])){utils['info'](util[_0xd4de('0x4')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x3be8c2['origtransfereruniqueid'],agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x9')]));agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x39')]=!![];agents[_0x3be8c2['secondtransfereruniqueid']][_0xd4de('0x41')]=_0xd4de('0x42');agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x43')]=_0x3be8c2[_0xd4de('0x44')];agents[_0x3be8c2['secondtransfereruniqueid']]['transferuniqueid']=_0x3be8c2['origtransfereruniqueid'];}if(_0x3be8c2[_0xd4de('0x45')]&&agents[_0x3be8c2[_0xd4de('0x45')]]){agents[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x46')]=0x1;transfers[_0x3be8c2['transfereeuniqueid']]=_[_0xd4de('0x47')](agents[_0x3be8c2[_0xd4de('0x45')]]);transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0xa')]=agents[_0x3be8c2['secondtransfereruniqueid']][_0xd4de('0xa')];transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x48')]=agents[_0x3be8c2[_0xd4de('0x40')]]['calleridname'];transfers[_0x3be8c2['transfereeuniqueid']]['agentcalledAt']=utils[_0xd4de('0x17')]();transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x33')]=utils['now']();transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x2a')]=0x0;transfers[_0x3be8c2[_0xd4de('0x45')]]['agententerreason']=0x2;}}else if(_0x3be8c2[_0xd4de('0x40')]==_0x3be8c2['secondtransfererlinkedid']){if(!_[_0xd4de('0x1b')](agents[_0x3be8c2[_0xd4de('0x3e')]])){utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x49'),_0x3be8c2[_0xd4de('0x3e')],agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x9')]));agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x39')]=!![];agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x41')]=_0xd4de('0x42');agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x43')]=_0x3be8c2[_0xd4de('0x4a')];agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x3b')]=_0x3be8c2[_0xd4de('0x40')];}if(_0x3be8c2[_0xd4de('0x4b')]&&agents[_0x3be8c2[_0xd4de('0x4b')]]){agents[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x46')]=0x1;transfers[_0x3be8c2[_0xd4de('0x4b')]]=_[_0xd4de('0x47')](agents[_0x3be8c2[_0xd4de('0x4b')]]);transfers[_0x3be8c2[_0xd4de('0x4b')]]['calleridnum']=agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0xa')];transfers[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x48')]=agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x48')];transfers[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x16')]=utils['now']();transfers[_0x3be8c2[_0xd4de('0x4b')]]['agentconnectAt']=utils['now']();transfers[_0x3be8c2['transfertargetuniqueid']][_0xd4de('0x2a')]=0x0;transfers[_0x3be8c2[_0xd4de('0x4b')]]['agententerreason']=0x2;}}}catch(_0x4a06b2){utils['error'](util['format'](_0xd4de('0x3d'),_0x3be8c2['origtransfereruniqueid']),_0x4a06b2);}};exports[_0xd4de('0x4c')]=function(_0x5ddba5){try{utils[_0xd4de('0x14')](util[_0xd4de('0x4')]('[%s][agents][hangup]',_0x5ddba5['uniqueid']),_0x5ddba5);if(agents[_0x5ddba5['uniqueid']]&&agents[_0x5ddba5['uniqueid']][_0xd4de('0x20')]===_0xd4de('0x1f')){if(_0x5ddba5[_0xd4de('0x4d')]==='21'){agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]=_0xd4de('0x4e');agents[_0x5ddba5['uniqueid']]['lastevent']='rejected';}utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],agents[_0x5ddba5['uniqueid']][_0xd4de('0x9')],agents[_0x5ddba5['uniqueid']][_0xd4de('0x20')],agents[_0x5ddba5[_0xd4de('0x6')]]['lastevent']));writeDB(agents[_0x5ddba5[_0xd4de('0x6')]]);var _0x5a4882=unanswered[_0xd4de('0x4f')](_0x5ddba5[_0xd4de('0x6')]);if(_0x5a4882>-0x1){unanswered[_0xd4de('0x50')](_0x5a4882,0x1);}}if(transfers[_0x5ddba5[_0xd4de('0x6')]]){transfers[_0x5ddba5['uniqueid']][_0xd4de('0xe')]=!![];transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')]=utils[_0xd4de('0x17')]();transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x22')]=utils[_0xd4de('0x31')](transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x33')]);transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]='agent';transfers[_0x5ddba5[_0xd4de('0x6')]]['lastevent']='complete';utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x9')],transfers[_0x5ddba5[_0xd4de('0x6')]]['reason'],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]));writeDB(transfers[_0x5ddba5[_0xd4de('0x6')]],!![]);}if(agents[_0x5ddba5[_0xd4de('0x6')]]&&agents[_0x5ddba5[_0xd4de('0x6')]]['agentconnectAt']){agents[_0x5ddba5['uniqueid']]['agentcomplete']=!![];agents[_0x5ddba5['uniqueid']][_0xd4de('0x32')]=utils['now']();agents[_0x5ddba5[_0xd4de('0x6')]]['talktime']=utils[_0xd4de('0x31')](agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x33')]);agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]=agents[_0x5ddba5[_0xd4de('0x6')]]['transfer']?_0xd4de('0x39'):_0xd4de('0x51');agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]='complete';utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x9')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]));writeDB(agents[_0x5ddba5[_0xd4de('0x6')]]);}}catch(_0x27fd09){utils[_0xd4de('0x23')](util[_0xd4de('0x4')]('[%s][agents][hangup]',_0x5ddba5[_0xd4de('0x6')]),_0x27fd09);}};
\ No newline at end of file
+var _0xc900=['rejected','indexOf','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','./utils','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','uniqueid','agentcalledAt','now','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','lastevent','timeout','holdtime','ringtime','push','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','reason','abandoned','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','agentringnoanswerAt','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','blindtransfer','[%s][agents][blindtransfer]','transfereruniqueid','transfer','transfertype','blind','transferexten','extension','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfereeuniqueid','agententerreason','clone','ATTENDED','secondtransfererexten','transfertargetuniqueid','calleridname','[%s][agents][attendedtransfer]','[%s][agents][hangup]','cause'];(function(_0x39b51c,_0x1d9f6a){var _0x5c9338=function(_0x3077c9){while(--_0x3077c9){_0x39b51c['push'](_0x39b51c['shift']());}};_0x5c9338(++_0x1d9f6a);}(_0xc900,0xb3));var _0x0c90=function(_0x41fda5,_0x2450ba){_0x41fda5=_0x41fda5-0x0;var _0x432e79=_0xc900[_0x41fda5];return _0x432e79;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x0c90('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x546406,_0x435691){utils['info'](util[_0x0c90('0x1')](_0x0c90('0x2'),_0x546406['uniqueid'],_0x546406[_0x0c90('0x3')],_0x546406[_0x0c90('0x4')],_0x546406[_0x0c90('0x5')],_0x546406[_0x0c90('0x6')],_0x546406[_0x0c90('0x7')],_0x546406[_0x0c90('0x8')],_0x546406['lastevent']));if(_0x546406[_0x0c90('0x4')]){utils[_0x0c90('0x9')](_0x546406[_0x0c90('0x4')])[_0x0c90('0xa')](function(_0x128656){if(_0x128656){_0x546406[_0x0c90('0xb')]=_0x128656[_0x0c90('0xb')];_0x546406[_0x0c90('0xc')]=_0x546406[_0x0c90('0xd')]?_0x128656[_0x0c90('0xe')]:![];_0x546406[_0x0c90('0xf')]=_0x546406[_0x0c90('0xc')]?_0x128656[_0x0c90('0x10')]:0x0;}utils['request'](_0x0c90('0x11'),_0x546406);});}else{utils['request'](_0x0c90('0x11'),_0x546406);}if(_0x435691){delete transfers[_0x546406['uniqueid']];}else{delete agents[_0x546406[_0x0c90('0x12')]];}}exports[_0x0c90('0x13')]=function(_0x4535a2){try{utils[_0x0c90('0x14')](util[_0x0c90('0x1')]('[%s][agents][agentcalled]',_0x4535a2[_0x0c90('0x15')]),_0x4535a2);agents[_0x4535a2[_0x0c90('0x12')]]=_0x4535a2;agents[_0x4535a2['destuniqueid']][_0x0c90('0x16')]=utils[_0x0c90('0x17')]();agents[_0x4535a2[_0x0c90('0x12')]]['lastevent']='called';agents[_0x4535a2[_0x0c90('0x12')]][_0x0c90('0x8')]=null;agents[_0x4535a2[_0x0c90('0x12')]][_0x0c90('0x18')]=null;utils[_0x0c90('0x19')](util[_0x0c90('0x1')](_0x0c90('0x1a'),_0x4535a2['uniqueid'],agents[_0x4535a2[_0x0c90('0x12')]][_0x0c90('0x5')],_0x4535a2[_0x0c90('0x12')]));}catch(_0x26835c){utils['error'](util[_0x0c90('0x1')](_0x0c90('0x1b'),_0x4535a2[_0x0c90('0x15')]),_0x26835c);}};exports[_0x0c90('0x1c')]=function(_0x315932){try{if(!_[_0x0c90('0x1d')](agents[_0x315932['destuniqueid']])){utils[_0x0c90('0x14')](util['format'](_0x0c90('0x1e'),_0x315932[_0x0c90('0x15')]),_0x315932);utils['info'](util[_0x0c90('0x1')](_0x0c90('0x1f'),_0x315932[_0x0c90('0x15')],agents[_0x315932[_0x0c90('0x12')]][_0x0c90('0x5')],_0x315932[_0x0c90('0x12')]));agents[_0x315932['destuniqueid']][_0x0c90('0x1c')]=!![];agents[_0x315932[_0x0c90('0x12')]]['agentringnoanswerAt']=utils['now']();agents[_0x315932[_0x0c90('0x12')]][_0x0c90('0x20')]=_0x0c90('0x21');agents[_0x315932[_0x0c90('0x12')]]['reason']=_0x0c90('0x21');agents[_0x315932[_0x0c90('0x12')]][_0x0c90('0x22')]=_0x315932[_0x0c90('0x23')]?parseInt(_0x315932[_0x0c90('0x23')])/0x3e8:0x0;agents[_0x315932[_0x0c90('0x12')]]['talktime']=0x0;unanswered[_0x0c90('0x24')](_0x315932[_0x0c90('0x12')]);}}catch(_0x39f1b2){utils[_0x0c90('0x25')](util['format']('[%s][agents][agentringnoanswer]',_0x315932[_0x0c90('0x15')]),_0x39f1b2);}};exports[_0x0c90('0x26')]=function(_0x3bff04){try{_[_0x0c90('0x27')](agents,function(_0x119e09,_0x562664){if(_0x119e09[_0x0c90('0x15')]==_0x3bff04[_0x0c90('0x15')]&&!_[_0x0c90('0x28')](unanswered,_0x119e09['destuniqueid'])){utils[_0x0c90('0x14')](util['format']('[%s][agents][queuecallerabandon]',_0x3bff04[_0x0c90('0x15')]),_0x3bff04);utils[_0x0c90('0x19')](util[_0x0c90('0x1')](_0x0c90('0x29'),_0x3bff04['uniqueid'],_0x119e09[_0x0c90('0x5')],_0x119e09['destuniqueid']));_0x119e09[_0x0c90('0x1c')]=!![];_0x119e09['agentringnoanswerAt']=utils[_0x0c90('0x17')]();_0x119e09[_0x0c90('0x20')]='abandoned';_0x119e09[_0x0c90('0x2a')]=_0x0c90('0x2b');_0x119e09[_0x0c90('0x22')]=_0x3bff04[_0x0c90('0x22')];_0x119e09[_0x0c90('0x2c')]=0x0;writeDB(_0x119e09);}});}catch(_0x1517c9){utils[_0x0c90('0x25')](util[_0x0c90('0x1')]('[%s][agents][queuecallerabandon]',_0x3bff04[_0x0c90('0x15')]),_0x1517c9);}};exports[_0x0c90('0x2d')]=function(_0x404f78){try{if(agents[_0x404f78[_0x0c90('0x12')]]){utils['debug'](util[_0x0c90('0x1')](_0x0c90('0x2e'),_0x404f78[_0x0c90('0x15')]),_0x404f78);utils[_0x0c90('0x19')](util[_0x0c90('0x1')](_0x0c90('0x2f'),_0x404f78[_0x0c90('0x15')],agents[_0x404f78[_0x0c90('0x12')]]['membername'],_0x404f78[_0x0c90('0x12')]));agents[_0x404f78[_0x0c90('0x12')]]['agentconnectAt']=utils[_0x0c90('0x17')]();agents[_0x404f78[_0x0c90('0x12')]][_0x0c90('0x8')]=_0x404f78[_0x0c90('0x8')];agents[_0x404f78[_0x0c90('0x12')]]['connectedlinename']=_0x404f78[_0x0c90('0x18')];agents[_0x404f78[_0x0c90('0x12')]][_0x0c90('0x22')]=_0x404f78[_0x0c90('0x23')];agents[_0x404f78[_0x0c90('0x12')]][_0x0c90('0x20')]=_0x0c90('0x30');_[_0x0c90('0x27')](agents,function(_0x11a8e3,_0x4f0227){if(_0x11a8e3[_0x0c90('0x12')]!=_0x404f78['destuniqueid']&&_0x11a8e3[_0x0c90('0x15')]==_0x404f78['uniqueid']){_0x11a8e3[_0x0c90('0x2c')]=0x0;_0x11a8e3[_0x0c90('0x22')]=_0x404f78['ringtime'];_0x11a8e3['agentringnoanswer']=!![];_0x11a8e3[_0x0c90('0x31')]=utils['now']();_0x11a8e3[_0x0c90('0x20')]=_0x0c90('0x32');_0x11a8e3[_0x0c90('0x2a')]='answered_elsewhere';_0x11a8e3[_0x0c90('0x33')]=_0x404f78[_0x0c90('0x12')];_0x11a8e3[_0x0c90('0x34')]=_0x404f78[_0x0c90('0x5')];writeDB(_0x11a8e3);}});}}catch(_0x2139c3){utils[_0x0c90('0x25')](util['format'](_0x0c90('0x2e'),_0x404f78[_0x0c90('0x15')]),_0x2139c3);}};exports[_0x0c90('0xd')]=function(_0x399115){try{if(!_[_0x0c90('0x1d')](agents[_0x399115[_0x0c90('0x12')]])){utils[_0x0c90('0x14')](util['format'](_0x0c90('0x35'),_0x399115['uniqueid']),_0x399115);utils[_0x0c90('0x19')](util[_0x0c90('0x1')](_0x0c90('0x36'),_0x399115[_0x0c90('0x15')],agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0x5')],_0x399115[_0x0c90('0x12')]));agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0xd')]=!![];agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0x37')]=utils[_0x0c90('0x17')]();agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0x2c')]=utils[_0x0c90('0x38')](agents[_0x399115['destuniqueid']][_0x0c90('0x37')],agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0x39')]);agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0x2a')]=_0x399115[_0x0c90('0x2a')];agents[_0x399115[_0x0c90('0x12')]][_0x0c90('0x20')]=_0x0c90('0x3a');writeDB(agents[_0x399115[_0x0c90('0x12')]]);}}catch(_0x2f25ad){utils[_0x0c90('0x25')](util[_0x0c90('0x1')](_0x0c90('0x35'),_0x399115['uniqueid']),_0x2f25ad);}};exports[_0x0c90('0x3b')]=function(_0x38f492){try{if(!_['isNil'](agents[_0x38f492['transfereruniqueid']])){utils['debug'](util[_0x0c90('0x1')](_0x0c90('0x3c'),_0x38f492[_0x0c90('0x15')]),_0x38f492);utils[_0x0c90('0x19')](util[_0x0c90('0x1')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x38f492[_0x0c90('0x15')],agents[_0x38f492[_0x0c90('0x3d')]][_0x0c90('0x5')],agents[_0x38f492['transfereruniqueid']][_0x0c90('0x15')]));agents[_0x38f492[_0x0c90('0x3d')]][_0x0c90('0x3e')]=!![];agents[_0x38f492[_0x0c90('0x3d')]][_0x0c90('0x3f')]=_0x0c90('0x40');agents[_0x38f492[_0x0c90('0x3d')]][_0x0c90('0x41')]=_0x38f492[_0x0c90('0x42')];agents[_0x38f492[_0x0c90('0x3d')]]['transferuniqueid']=agents[_0x38f492[_0x0c90('0x3d')]]['uniqueid'];}}catch(_0xda4331){utils[_0x0c90('0x25')](util[_0x0c90('0x1')](_0x0c90('0x3c'),_0x38f492[_0x0c90('0x15')]),_0xda4331);}};exports[_0x0c90('0x43')]=function(_0x58dcfc){try{utils['debug'](util['format']('[%s][agents][attendedtransfer]',_0x58dcfc[_0x0c90('0x44')]),_0x58dcfc);if(_0x58dcfc[_0x0c90('0x44')]==_0x58dcfc[_0x0c90('0x45')]){if(!_['isNil'](agents[_0x58dcfc[_0x0c90('0x46')]])){utils[_0x0c90('0x19')](util['format'](_0x0c90('0x47'),_0x58dcfc['origtransfereruniqueid'],agents[_0x58dcfc[_0x0c90('0x46')]][_0x0c90('0x5')]));agents[_0x58dcfc[_0x0c90('0x46')]][_0x0c90('0x3e')]=!![];agents[_0x58dcfc['secondtransfereruniqueid']][_0x0c90('0x3f')]='ATTENDED';agents[_0x58dcfc[_0x0c90('0x46')]][_0x0c90('0x41')]=_0x58dcfc['origtransfererexten'];agents[_0x58dcfc['secondtransfereruniqueid']]['transferuniqueid']=_0x58dcfc[_0x0c90('0x44')];}if(_0x58dcfc[_0x0c90('0x48')]&&agents[_0x58dcfc[_0x0c90('0x48')]]){agents[_0x58dcfc[_0x0c90('0x48')]][_0x0c90('0x49')]=0x1;transfers[_0x58dcfc['transfereeuniqueid']]=_[_0x0c90('0x4a')](agents[_0x58dcfc[_0x0c90('0x48')]]);transfers[_0x58dcfc['transfereeuniqueid']][_0x0c90('0x7')]=agents[_0x58dcfc['secondtransfereruniqueid']][_0x0c90('0x7')];transfers[_0x58dcfc[_0x0c90('0x48')]]['calleridname']=agents[_0x58dcfc[_0x0c90('0x46')]]['calleridname'];transfers[_0x58dcfc['transfereeuniqueid']]['agentcalledAt']=utils[_0x0c90('0x17')]();transfers[_0x58dcfc[_0x0c90('0x48')]][_0x0c90('0x39')]=utils[_0x0c90('0x17')]();transfers[_0x58dcfc['transfereeuniqueid']]['holdtime']=0x0;transfers[_0x58dcfc[_0x0c90('0x48')]][_0x0c90('0x49')]=0x2;}}else if(_0x58dcfc[_0x0c90('0x46')]==_0x58dcfc['secondtransfererlinkedid']){if(!_[_0x0c90('0x1d')](agents[_0x58dcfc[_0x0c90('0x44')]])){utils[_0x0c90('0x19')](util['format'](_0x0c90('0x47'),_0x58dcfc[_0x0c90('0x44')],agents[_0x58dcfc[_0x0c90('0x44')]]['membername']));agents[_0x58dcfc[_0x0c90('0x44')]][_0x0c90('0x3e')]=!![];agents[_0x58dcfc[_0x0c90('0x44')]][_0x0c90('0x3f')]=_0x0c90('0x4b');agents[_0x58dcfc[_0x0c90('0x44')]][_0x0c90('0x41')]=_0x58dcfc[_0x0c90('0x4c')];agents[_0x58dcfc[_0x0c90('0x44')]]['transferuniqueid']=_0x58dcfc['secondtransfereruniqueid'];}if(_0x58dcfc[_0x0c90('0x4d')]&&agents[_0x58dcfc[_0x0c90('0x4d')]]){agents[_0x58dcfc[_0x0c90('0x4d')]][_0x0c90('0x49')]=0x1;transfers[_0x58dcfc[_0x0c90('0x4d')]]=_[_0x0c90('0x4a')](agents[_0x58dcfc[_0x0c90('0x4d')]]);transfers[_0x58dcfc[_0x0c90('0x4d')]][_0x0c90('0x7')]=agents[_0x58dcfc[_0x0c90('0x44')]][_0x0c90('0x7')];transfers[_0x58dcfc[_0x0c90('0x4d')]][_0x0c90('0x4e')]=agents[_0x58dcfc[_0x0c90('0x44')]][_0x0c90('0x4e')];transfers[_0x58dcfc['transfertargetuniqueid']][_0x0c90('0x16')]=utils[_0x0c90('0x17')]();transfers[_0x58dcfc[_0x0c90('0x4d')]]['agentconnectAt']=utils['now']();transfers[_0x58dcfc[_0x0c90('0x4d')]]['holdtime']=0x0;transfers[_0x58dcfc[_0x0c90('0x4d')]][_0x0c90('0x49')]=0x2;}}}catch(_0x57fb18){utils[_0x0c90('0x25')](util[_0x0c90('0x1')](_0x0c90('0x4f'),_0x58dcfc[_0x0c90('0x44')]),_0x57fb18);}};exports['hangup']=function(_0x5f2628){try{utils['debug'](util[_0x0c90('0x1')](_0x0c90('0x50'),_0x5f2628[_0x0c90('0x15')]),_0x5f2628);if(agents[_0x5f2628[_0x0c90('0x15')]]&&agents[_0x5f2628['uniqueid']][_0x0c90('0x2a')]==='timeout'){if(_0x5f2628[_0x0c90('0x51')]==='21'){agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x2a')]='rejected';agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x20')]=_0x0c90('0x52');}utils[_0x0c90('0x19')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5f2628[_0x0c90('0x15')],agents[_0x5f2628['uniqueid']][_0x0c90('0x5')],agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x2a')],agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x20')]));writeDB(agents[_0x5f2628[_0x0c90('0x15')]]);var _0x2321eb=unanswered[_0x0c90('0x53')](_0x5f2628[_0x0c90('0x15')]);if(_0x2321eb>-0x1){unanswered[_0x0c90('0x54')](_0x2321eb,0x1);}}if(transfers[_0x5f2628['uniqueid']]){transfers[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0xd')]=!![];transfers[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x37')]=utils[_0x0c90('0x17')]();transfers[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x2c')]=utils[_0x0c90('0x38')](transfers[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x37')],transfers[_0x5f2628['uniqueid']][_0x0c90('0x39')]);transfers[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x2a')]=_0x0c90('0x55');transfers[_0x5f2628['uniqueid']][_0x0c90('0x20')]=_0x0c90('0x3a');utils[_0x0c90('0x19')](util['format'](_0x0c90('0x56'),_0x5f2628[_0x0c90('0x15')],transfers[_0x5f2628['uniqueid']][_0x0c90('0x5')],transfers[_0x5f2628['uniqueid']][_0x0c90('0x2a')],transfers[_0x5f2628['uniqueid']]['lastevent']));writeDB(transfers[_0x5f2628[_0x0c90('0x15')]],!![]);}if(agents[_0x5f2628[_0x0c90('0x15')]]&&agents[_0x5f2628['uniqueid']]['agentconnectAt']){agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0xd')]=!![];agents[_0x5f2628['uniqueid']]['agentcompleteAt']=utils[_0x0c90('0x17')]();agents[_0x5f2628['uniqueid']][_0x0c90('0x2c')]=utils[_0x0c90('0x38')](agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x37')],agents[_0x5f2628[_0x0c90('0x15')]]['agentconnectAt']);agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x2a')]=agents[_0x5f2628[_0x0c90('0x15')]]['transfer']?'transfer':_0x0c90('0x55');agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x20')]='complete';utils['info'](util['format'](_0x0c90('0x56'),_0x5f2628['uniqueid'],agents[_0x5f2628['uniqueid']]['membername'],agents[_0x5f2628['uniqueid']][_0x0c90('0x2a')],agents[_0x5f2628[_0x0c90('0x15')]][_0x0c90('0x20')]));writeDB(agents[_0x5f2628[_0x0c90('0x15')]]);}}catch(_0x16c383){utils['error'](util['format']('[%s][agents][hangup]',_0x5f2628[_0x0c90('0x15')]),_0x16c383);}};
\ No newline at end of file
index 4119e44..aed71e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddae=['xmd-phone','destination','\x22\x20<','xmd-callerid','xmd-callerid-preview','xmd-queue','xmcs-queue','lastapplication','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','lastIndexOf','includes','noop','execif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','newchannel','debug','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','now','DOCUMENTATION','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','systemanswertime','channelstate','transfer','destinationchannel','answertime','disposition','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','diffTime','starttime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','secondtransfererchannel','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','userfield','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','variable'];(function(_0x479dfd,_0x47ff77){var _0x5b82b4=function(_0x3b0d0c){while(--_0x3b0d0c){_0x479dfd['push'](_0x479dfd['shift']());}};_0x5b82b4(++_0x47ff77);}(_0xddae,0x87));var _0xedda=function(_0x336b73,_0x4b482b){_0x336b73=_0x336b73-0x0;var _0x4daad8=_0xddae[_0x336b73];return _0x4daad8;};'use strict';var _=require(_0xedda('0x0'));var util=require(_0xedda('0x1'));var utils=require(_0xedda('0x2'));var transfers=require(_0xedda('0x3'));var dispositions=[_0xedda('0x4'),_0xedda('0x5'),'FAILED',_0xedda('0x4'),_0xedda('0x4'),_0xedda('0x4'),_0xedda('0x6'),_0xedda('0x7'),_0xedda('0x5'),_0xedda('0x5'),_0xedda('0x5')];var channels={};function writeDB(_0x3f073d){var _0x2691ec;if(transfers['blinds'][_0x3f073d[_0xedda('0x8')]]){_0x2691ec=_0x3f073d[_0xedda('0x8')];_0x3f073d[_0xedda('0x8')]=transfers[_0xedda('0x9')][_0x3f073d[_0xedda('0x8')]][_0xedda('0xa')];}utils[_0xedda('0xb')](util[_0xedda('0xc')](_0xedda('0xd'),_0x3f073d[_0xedda('0x8')],_0x3f073d['channel'],_0x3f073d[_0xedda('0xe')],_0x3f073d['membername'],_0x3f073d[_0xedda('0xf')],_0x3f073d['calleridnum'],_0x3f073d[_0xedda('0x10')],_0x3f073d[_0xedda('0x11')]));if(_0x3f073d[_0xedda('0x12')]){utils[_0xedda('0x13')](_0x3f073d[_0xedda('0x12')])[_0xedda('0x14')](function(_0x468178){if(_0x468178){_0x3f073d[_0xedda('0x15')]=_0x468178['id'];}utils[_0xedda('0x16')]('CreateVoiceCallReport',_0x3f073d);});}else{utils[_0xedda('0x16')]('CreateVoiceCallReport',_0x3f073d);}if(channels[_0x3f073d['uniqueid']]){delete channels[_0x3f073d[_0xedda('0x8')]];}else if(_0x2691ec&&channels[_0x2691ec]){delete transfers[_0xedda('0x9')][_0x2691ec];delete channels[_0x2691ec];}}exports[_0xedda('0x17')]=function(_0xefb03e){try{utils[_0xedda('0x18')](util[_0xedda('0xc')]('[%s][calls][newchannel]',_0xefb03e['uniqueid']),_0xefb03e);if(_0xefb03e[_0xedda('0x8')]==_0xefb03e[_0xedda('0x19')]&&_0xefb03e[_0xedda('0x1a')]!=_0xedda('0x1b')){utils[_0xedda('0xb')](util['format'](_0xedda('0x1c'),_0xefb03e[_0xedda('0x8')],_0xefb03e[_0xedda('0x1d')],_0xefb03e[_0xedda('0x1e')]));channels[_0xefb03e[_0xedda('0x8')]]={'uniqueid':_0xefb03e[_0xedda('0x8')],'accountcode':_0xefb03e[_0xedda('0x12')],'source':_0xefb03e[_0xedda('0x1f')],'destination':_0xefb03e[_0xedda('0x1e')],'destinationcontext':_0xefb03e[_0xedda('0x1d')],'channel':_0xefb03e[_0xedda('0x1a')],'starttime':utils[_0xedda('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xedda('0x21')};}}catch(_0x2e012a){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x23'),_0xefb03e[_0xedda('0x8')]),_0x2e012a);}};exports[_0xedda('0x24')]=function(_0x1d224a){try{utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x25'),_0x1d224a['uniqueid']),_0x1d224a);if(!_[_0xedda('0x26')](channels[_0x1d224a['uniqueid']])&&_0x1d224a['channelstate']==0x6){utils['info'](util[_0xedda('0xc')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x1d224a[_0xedda('0x8')],_0x1d224a['context'],_0x1d224a[_0xedda('0x1a')]));if(_[_0xedda('0x26')](channels[_0x1d224a[_0xedda('0x8')]][_0xedda('0x27')])){channels[_0x1d224a['uniqueid']][_0xedda('0x27')]=utils[_0xedda('0x20')]();}}else if(!_['isNil'](channels[_0x1d224a[_0xedda('0x19')]])&&_0x1d224a[_0xedda('0x28')]==0x6&&_0x1d224a['context']!=_0xedda('0x29')){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x1d224a[_0xedda('0x8')],_0x1d224a[_0xedda('0x19')],_0x1d224a['context'],_0x1d224a[_0xedda('0x1a')]));channels[_0x1d224a['linkedid']][_0xedda('0x12')]=_0x1d224a['accountcode'];channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2a')]=_0x1d224a[_0xedda('0x1a')];if(_[_0xedda('0x26')](channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2b')])){channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2b')]=utils[_0xedda('0x20')]();}channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2c')]=dispositions[_['toNumber'](_0x1d224a[_0xedda('0x28')])]||_0xedda('0x6');}}catch(_0x4de9f1){utils[_0xedda('0x22')](util[_0xedda('0xc')]('[%s][calls][newstate]',_0x1d224a['uniqueid']),_0x4de9f1);}};exports[_0xedda('0x2d')]=function(_0x2fd0d1){try{if(!_[_0xedda('0x26')](channels[_0x2fd0d1[_0xedda('0x8')]])){utils[_0xedda('0x18')](util['format'](_0xedda('0x2e'),_0x2fd0d1[_0xedda('0x8')]),_0x2fd0d1);if(_[_0xedda('0x26')](channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x2f')])){channels[_0x2fd0d1['uniqueid']][_0xedda('0x2f')]=_0x2fd0d1[_0xedda('0x30')]+'\x20<'+_0x2fd0d1[_0xedda('0x1f')]+'>';}utils[_0xedda('0xb')](util['format'](_0xedda('0x31'),_0x2fd0d1['uniqueid'],channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x2f')],_0x2fd0d1['cause-txt']));channels[_0x2fd0d1['uniqueid']][_0xedda('0x32')]=utils[_0xedda('0x20')]();channels[_0x2fd0d1['uniqueid']]['duration']=utils[_0xedda('0x33')](channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x32')],channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x34')]);channels[_0x2fd0d1[_0xedda('0x8')]]['billableseconds']=channels[_0x2fd0d1[_0xedda('0x8')]]['answertime']?utils[_0xedda('0x33')](channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x32')],channels[_0x2fd0d1['uniqueid']][_0xedda('0x2b')]):0x0;writeDB(channels[_0x2fd0d1['uniqueid']]);}}catch(_0x3bee94){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x2e'),_0x2fd0d1['uniqueid']),_0x3bee94);}};exports[_0xedda('0x35')]=function(_0x264b55){try{if(!_[_0xedda('0x26')](channels[_0x264b55[_0xedda('0x36')]])){utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x37'),_0x264b55[_0xedda('0x38')]),_0x264b55);if(channels[_0x264b55['localtwolinkedid']][_0xedda('0x1a')]==_0x264b55['transfereechannel']){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x264b55[_0xedda('0x38')],_0x264b55[_0xedda('0x36')],_0x264b55[_0xedda('0x39')]));channels[_0x264b55[_0xedda('0x36')]]['destinationchannel']=_0x264b55['secondtransfererchannel'];channels[_0x264b55['localtwolinkedid']]['userfield']=_0xedda('0x3a');}else if(channels[_0x264b55[_0xedda('0x36')]]['channel']=_0x264b55[_0xedda('0x3b')]){utils[_0xedda('0xb')](util[_0xedda('0xc')](_0xedda('0x3c'),_0x264b55['origtransfereruniqueid'],_0x264b55[_0xedda('0x36')],_0x264b55[_0xedda('0x3d')]));channels[_0x264b55['localtwolinkedid']]['destinationchannel']=_0x264b55['origtransfererchannel'];channels[_0x264b55['localtwolinkedid']][_0xedda('0x3e')]=_0xedda('0x3a');}}}catch(_0x36e9b6){utils[_0xedda('0x22')](util[_0xedda('0xc')]('[%s][calls][attendedtransfer]',_0x264b55[_0xedda('0x38')]),_0x36e9b6);}};exports['musiconholdstart']=function(_0xbc7390){try{if(!_[_0xedda('0x26')](channels[_0xbc7390[_0xedda('0x8')]])){utils[_0xedda('0x18')](util[_0xedda('0xc')]('[%s][calls][musiconholdstart]',_0xbc7390['uniqueid']),_0xbc7390);channels[_0xbc7390['uniqueid']][_0xedda('0x3f')]=utils[_0xedda('0x20')]();utils['info'](util['format'](_0xedda('0x40'),_0xbc7390[_0xedda('0x8')],channels[_0xbc7390[_0xedda('0x8')]][_0xedda('0x3f')]));}}catch(_0x3a4b8a){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x41'),_0xbc7390[_0xedda('0x8')]),_0x3a4b8a);}};exports[_0xedda('0x42')]=function(_0x4882a2){try{if(!_['isNil'](channels[_0x4882a2[_0xedda('0x8')]])){utils['debug'](util[_0xedda('0xc')](_0xedda('0x43'),_0x4882a2[_0xedda('0x8')]),_0x4882a2);if(!_[_0xedda('0x26')](channels[_0x4882a2[_0xedda('0x8')]][_0xedda('0x3f')])){channels[_0x4882a2[_0xedda('0x8')]][_0xedda('0x44')]+=utils[_0xedda('0x33')](utils['now'](),channels[_0x4882a2[_0xedda('0x8')]][_0xedda('0x3f')]);utils[_0xedda('0xb')](util['format'](_0xedda('0x45'),_0x4882a2[_0xedda('0x8')],channels[_0x4882a2['uniqueid']]['mohtime']));delete channels[_0x4882a2['uniqueid']][_0xedda('0x3f')];}}}catch(_0x568ae2){utils[_0xedda('0x22')](util['format'](_0xedda('0x43'),_0x4882a2[_0xedda('0x8')]),_0x568ae2);}};exports[_0xedda('0x46')]=function(_0x596e54){try{if(!_[_0xedda('0x26')](channels[_0x596e54['uniqueid']])){utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x47'),_0x596e54[_0xedda('0x8')]),_0x596e54);if(!_[_0xedda('0x26')](_0x596e54['variable'][_0xedda('0x48')])){utils['info'](util['format'](_0xedda('0x49'),_0x596e54[_0xedda('0x8')],_0x596e54['value']));channels[_0x596e54['uniqueid']][_0xedda('0x4a')]=_0x596e54[_0xedda('0x4b')];}if(!_['isNil'](_0x596e54[_0xedda('0x4c')][_0xedda('0x4d')])){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x596e54['uniqueid'],_0x596e54['value']));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x4e')]=_0x596e54[_0xedda('0x4b')];channels[_0x596e54[_0xedda('0x8')]]['callerid']='\x22'+_0x596e54[_0xedda('0x4b')]+_0xedda('0x4f')+_0x596e54[_0xedda('0x4b')]+'>';}if(!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')]['xmd-callerid-preview'])||!_[_0xedda('0x26')](_0x596e54['variable'][_0xedda('0x50')])){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x596e54[_0xedda('0x8')],!_['isNil'](_0x596e54['variable'][_0xedda('0x51')])?'xmd-callerid-preview':_0xedda('0x50'),_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x2f')]=_0x596e54[_0xedda('0x4b')];}if(!_[_0xedda('0x26')](_0x596e54['variable'][_0xedda('0x52')])||!_['isNil'](_0x596e54[_0xedda('0x4c')][_0xedda('0x53')])){utils[_0xedda('0xb')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x596e54['uniqueid'],!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')][_0xedda('0x52')])?_0xedda('0x52'):_0xedda('0x53'),_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x54')]='Queue';channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x55')]=_0x596e54['value'];channels[_0x596e54[_0xedda('0x8')]][_0xedda('0xe')]=!![];}if(!_[_0xedda('0x26')](_0x596e54['variable']['xmd-contactid'])){utils['info'](util[_0xedda('0xc')](_0xedda('0x56'),_0x596e54['uniqueid'],_0x596e54['value']));channels[_0x596e54['uniqueid']][_0xedda('0x57')]=_0x596e54[_0xedda('0x4b')];}if(!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')][_0xedda('0x58')])){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x596e54[_0xedda('0x8')],_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x59')]=_0x596e54[_0xedda('0x4b')];}if(!_['isNil'](_0x596e54['variable']['outboundrouteid'])){utils[_0xedda('0xb')](util['format'](_0xedda('0x5a'),_0x596e54[_0xedda('0x8')],_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x5b')]=_0x596e54[_0xedda('0x4b')];}if(!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')]['sipcallid'])){utils['info'](util['format'](_0xedda('0x5c'),_0x596e54[_0xedda('0x8')],_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x5d')]=_0x596e54['value'];}}}catch(_0x307ca6){utils['error'](util[_0xedda('0xc')](_0xedda('0x47'),_0x596e54[_0xedda('0x8')]),_0x307ca6);}};exports[_0xedda('0x5e')]=function(_0x5a393e){try{if(!_[_0xedda('0x26')](channels[_0x5a393e[_0xedda('0x8')]])){utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x5f'),_0x5a393e[_0xedda('0x8')]),_0x5a393e);utils[_0xedda('0xb')](util[_0xedda('0xc')](_0xedda('0x60'),_0x5a393e[_0xedda('0x8')],_0x5a393e[_0xedda('0x61')],_0x5a393e[_0xedda('0x62')]));if(_0x5a393e[_0xedda('0x61')][_0xedda('0x63')]()==_0xedda('0x64')&&_['startsWith'](_0x5a393e[_0xedda('0x62')][_0xedda('0x63')](),_0xedda('0x65'))){var _0x355b41=_0x5a393e['appdata']['split']('=');var _0x2155ec=_0x355b41[0x0]['substring'](_0x355b41[0x0]['lastIndexOf']('(')+0x1,_0x355b41[0x0][_0xedda('0x66')](')'));var _0x5104ca=_0x355b41[0x1];channels[_0x5a393e[_0xedda('0x8')]][_0x2155ec]=_0x5104ca;}if(!_[_0xedda('0x67')]([_0xedda('0x2d'),_0xedda('0x68'),_0xedda('0x69'),_0xedda('0x64'),'gotoif'],_0x5a393e[_0xedda('0x61')][_0xedda('0x63')]())){channels[_0x5a393e[_0xedda('0x8')]][_0xedda('0x54')]=_0x5a393e[_0xedda('0x61')];channels[_0x5a393e['uniqueid']][_0xedda('0x55')]=_0x5a393e['appdata'];}}}catch(_0x25c25c){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x5f'),_0x5a393e['uniqueid']),_0x25c25c);}};
\ No newline at end of file
+var _0xf7a9=['answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','diffTime','billableseconds','error','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','variable','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','cdr','split','substring','lastIndexOf','includes','noop','execif','set','gotoif','lastapplication','lodash','./transfers.controller','FAILED','NO\x20ANSWER','ANSWERED','BUSY','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','interface','calleridnum','connectedlinenum','lastevent','accountcode','then','request','CreateVoiceCallReport','blinds','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','context','exten','now','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','destinationchannel'];(function(_0x359955,_0x5089e8){var _0xe5175f=function(_0xab88ec){while(--_0xab88ec){_0x359955['push'](_0x359955['shift']());}};_0xe5175f(++_0x5089e8);}(_0xf7a9,0x1ea));var _0x9f7a=function(_0x47ae5f,_0x39a151){_0x47ae5f=_0x47ae5f-0x0;var _0x51bf15=_0xf7a9[_0x47ae5f];return _0x51bf15;};'use strict';var _=require(_0x9f7a('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0x9f7a('0x1'));var dispositions=['NO\x20ANSWER',_0x9f7a('0x2'),_0x9f7a('0x2'),_0x9f7a('0x3'),_0x9f7a('0x3'),_0x9f7a('0x3'),_0x9f7a('0x4'),_0x9f7a('0x5'),_0x9f7a('0x2'),'FAILED',_0x9f7a('0x2')];var channels={};function writeDB(_0x444723){var _0x35f79b;if(transfers['blinds'][_0x444723[_0x9f7a('0x6')]]){_0x35f79b=_0x444723[_0x9f7a('0x6')];_0x444723['uniqueid']=transfers['blinds'][_0x444723[_0x9f7a('0x6')]][_0x9f7a('0x7')];}utils['info'](util[_0x9f7a('0x8')](_0x9f7a('0x9'),_0x444723[_0x9f7a('0x6')],_0x444723[_0x9f7a('0xa')],_0x444723['queue'],_0x444723['membername'],_0x444723[_0x9f7a('0xb')],_0x444723[_0x9f7a('0xc')],_0x444723[_0x9f7a('0xd')],_0x444723[_0x9f7a('0xe')]));if(_0x444723[_0x9f7a('0xf')]){utils['getUserByInternal'](_0x444723[_0x9f7a('0xf')])[_0x9f7a('0x10')](function(_0x34e0c9){if(_0x34e0c9){_0x444723['UserId']=_0x34e0c9['id'];}utils[_0x9f7a('0x11')](_0x9f7a('0x12'),_0x444723);});}else{utils['request']('CreateVoiceCallReport',_0x444723);}if(channels[_0x444723['uniqueid']]){delete channels[_0x444723[_0x9f7a('0x6')]];}else if(_0x35f79b&&channels[_0x35f79b]){delete transfers[_0x9f7a('0x13')][_0x35f79b];delete channels[_0x35f79b];}}exports[_0x9f7a('0x14')]=function(_0x528efd){try{utils[_0x9f7a('0x15')](util[_0x9f7a('0x8')](_0x9f7a('0x16'),_0x528efd['uniqueid']),_0x528efd);if(_0x528efd[_0x9f7a('0x6')]==_0x528efd[_0x9f7a('0x17')]&&_0x528efd[_0x9f7a('0xa')]!=_0x9f7a('0x18')){utils[_0x9f7a('0x19')](util['format']('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x528efd[_0x9f7a('0x6')],_0x528efd[_0x9f7a('0x1a')],_0x528efd['exten']));channels[_0x528efd[_0x9f7a('0x6')]]={'uniqueid':_0x528efd[_0x9f7a('0x6')],'accountcode':_0x528efd[_0x9f7a('0xf')],'source':_0x528efd['calleridnum'],'destination':_0x528efd[_0x9f7a('0x1b')],'destinationcontext':_0x528efd[_0x9f7a('0x1a')],'channel':_0x528efd[_0x9f7a('0xa')],'starttime':utils[_0x9f7a('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x9f7a('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x45a5c8){utils['error'](util['format'](_0x9f7a('0x16'),_0x528efd['uniqueid']),_0x45a5c8);}};exports['newstate']=function(_0xbf6d8c){try{utils[_0x9f7a('0x15')](util[_0x9f7a('0x8')](_0x9f7a('0x1d'),_0xbf6d8c['uniqueid']),_0xbf6d8c);if(!_['isNil'](channels[_0xbf6d8c['uniqueid']])&&_0xbf6d8c[_0x9f7a('0x1e')]==0x6){utils['info'](util['format'](_0x9f7a('0x1f'),_0xbf6d8c[_0x9f7a('0x6')],_0xbf6d8c[_0x9f7a('0x1a')],_0xbf6d8c['channel']));if(_[_0x9f7a('0x20')](channels[_0xbf6d8c[_0x9f7a('0x6')]][_0x9f7a('0x21')])){channels[_0xbf6d8c[_0x9f7a('0x6')]]['systemanswertime']=utils[_0x9f7a('0x1c')]();}}else if(!_['isNil'](channels[_0xbf6d8c[_0x9f7a('0x17')]])&&_0xbf6d8c[_0x9f7a('0x1e')]==0x6&&_0xbf6d8c[_0x9f7a('0x1a')]!='transfer'){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0xbf6d8c['uniqueid'],_0xbf6d8c[_0x9f7a('0x17')],_0xbf6d8c['context'],_0xbf6d8c[_0x9f7a('0xa')]));channels[_0xbf6d8c[_0x9f7a('0x17')]]['accountcode']=_0xbf6d8c['accountcode'];channels[_0xbf6d8c[_0x9f7a('0x17')]][_0x9f7a('0x22')]=_0xbf6d8c[_0x9f7a('0xa')];if(_[_0x9f7a('0x20')](channels[_0xbf6d8c[_0x9f7a('0x17')]][_0x9f7a('0x23')])){channels[_0xbf6d8c[_0x9f7a('0x17')]][_0x9f7a('0x23')]=utils[_0x9f7a('0x1c')]();}channels[_0xbf6d8c[_0x9f7a('0x17')]][_0x9f7a('0x24')]=dispositions[_[_0x9f7a('0x25')](_0xbf6d8c[_0x9f7a('0x1e')])]||_0x9f7a('0x4');}}catch(_0x2b1038){utils['error'](util[_0x9f7a('0x8')](_0x9f7a('0x1d'),_0xbf6d8c[_0x9f7a('0x6')]),_0x2b1038);}};exports[_0x9f7a('0x26')]=function(_0x4631d1){try{if(!_['isNil'](channels[_0x4631d1[_0x9f7a('0x6')]])){utils[_0x9f7a('0x15')](util[_0x9f7a('0x8')](_0x9f7a('0x27'),_0x4631d1[_0x9f7a('0x6')]),_0x4631d1);if(_[_0x9f7a('0x20')](channels[_0x4631d1[_0x9f7a('0x6')]][_0x9f7a('0x28')])){channels[_0x4631d1[_0x9f7a('0x6')]][_0x9f7a('0x28')]=_0x4631d1[_0x9f7a('0x29')]+'\x20<'+_0x4631d1[_0x9f7a('0xc')]+'>';}utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x2a'),_0x4631d1[_0x9f7a('0x6')],channels[_0x4631d1[_0x9f7a('0x6')]]['callerid'],_0x4631d1[_0x9f7a('0x2b')]));channels[_0x4631d1[_0x9f7a('0x6')]][_0x9f7a('0x2c')]=utils[_0x9f7a('0x1c')]();channels[_0x4631d1['uniqueid']]['duration']=utils[_0x9f7a('0x2d')](channels[_0x4631d1[_0x9f7a('0x6')]]['endtime'],channels[_0x4631d1[_0x9f7a('0x6')]]['starttime']);channels[_0x4631d1['uniqueid']][_0x9f7a('0x2e')]=channels[_0x4631d1['uniqueid']][_0x9f7a('0x23')]?utils[_0x9f7a('0x2d')](channels[_0x4631d1[_0x9f7a('0x6')]][_0x9f7a('0x2c')],channels[_0x4631d1[_0x9f7a('0x6')]][_0x9f7a('0x23')]):0x0;writeDB(channels[_0x4631d1['uniqueid']]);}}catch(_0x482a2d){utils[_0x9f7a('0x2f')](util[_0x9f7a('0x8')](_0x9f7a('0x27'),_0x4631d1[_0x9f7a('0x6')]),_0x482a2d);}};exports['attendedtransfer']=function(_0x385157){try{if(!_[_0x9f7a('0x20')](channels[_0x385157[_0x9f7a('0x30')]])){utils['debug'](util['format'](_0x9f7a('0x31'),_0x385157[_0x9f7a('0x32')]),_0x385157);if(channels[_0x385157[_0x9f7a('0x30')]][_0x9f7a('0xa')]==_0x385157[_0x9f7a('0x33')]){utils[_0x9f7a('0x19')](util['format'](_0x9f7a('0x34'),_0x385157[_0x9f7a('0x32')],_0x385157[_0x9f7a('0x30')],_0x385157[_0x9f7a('0x35')]));channels[_0x385157[_0x9f7a('0x30')]][_0x9f7a('0x22')]=_0x385157[_0x9f7a('0x35')];channels[_0x385157[_0x9f7a('0x30')]][_0x9f7a('0x36')]=_0x9f7a('0x37');}else if(channels[_0x385157[_0x9f7a('0x30')]][_0x9f7a('0xa')]=_0x385157['transfertargetchannel']){utils['info'](util['format'](_0x9f7a('0x34'),_0x385157[_0x9f7a('0x32')],_0x385157[_0x9f7a('0x30')],_0x385157['origtransfererchannel']));channels[_0x385157[_0x9f7a('0x30')]][_0x9f7a('0x22')]=_0x385157['origtransfererchannel'];channels[_0x385157[_0x9f7a('0x30')]][_0x9f7a('0x36')]=_0x9f7a('0x37');}}}catch(_0x5c7846){utils[_0x9f7a('0x2f')](util['format'](_0x9f7a('0x31'),_0x385157[_0x9f7a('0x32')]),_0x5c7846);}};exports[_0x9f7a('0x38')]=function(_0xe02503){try{if(!_[_0x9f7a('0x20')](channels[_0xe02503[_0x9f7a('0x6')]])){utils['debug'](util[_0x9f7a('0x8')](_0x9f7a('0x39'),_0xe02503['uniqueid']),_0xe02503);channels[_0xe02503[_0x9f7a('0x6')]]['musiconholdstartAt']=utils[_0x9f7a('0x1c')]();utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x3a'),_0xe02503[_0x9f7a('0x6')],channels[_0xe02503[_0x9f7a('0x6')]][_0x9f7a('0x3b')]));}}catch(_0x30e3ef){utils[_0x9f7a('0x2f')](util['format'](_0x9f7a('0x39'),_0xe02503[_0x9f7a('0x6')]),_0x30e3ef);}};exports[_0x9f7a('0x3c')]=function(_0x1b3c1a){try{if(!_[_0x9f7a('0x20')](channels[_0x1b3c1a[_0x9f7a('0x6')]])){utils[_0x9f7a('0x15')](util[_0x9f7a('0x8')](_0x9f7a('0x3d'),_0x1b3c1a[_0x9f7a('0x6')]),_0x1b3c1a);if(!_[_0x9f7a('0x20')](channels[_0x1b3c1a[_0x9f7a('0x6')]][_0x9f7a('0x3b')])){channels[_0x1b3c1a[_0x9f7a('0x6')]]['mohtime']+=utils[_0x9f7a('0x2d')](utils['now'](),channels[_0x1b3c1a[_0x9f7a('0x6')]][_0x9f7a('0x3b')]);utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x1b3c1a['uniqueid'],channels[_0x1b3c1a[_0x9f7a('0x6')]][_0x9f7a('0x3e')]));delete channels[_0x1b3c1a[_0x9f7a('0x6')]][_0x9f7a('0x3b')];}}}catch(_0x30430e){utils['error'](util[_0x9f7a('0x8')](_0x9f7a('0x3d'),_0x1b3c1a[_0x9f7a('0x6')]),_0x30430e);}};exports['varset']=function(_0x577178){try{if(!_[_0x9f7a('0x20')](channels[_0x577178[_0x9f7a('0x6')]])){utils[_0x9f7a('0x15')](util['format']('[%s][calls][varset]',_0x577178[_0x9f7a('0x6')]),_0x577178);if(!_[_0x9f7a('0x20')](_0x577178['variable'][_0x9f7a('0x3f')])){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x40'),_0x577178[_0x9f7a('0x6')],_0x577178['value']));channels[_0x577178[_0x9f7a('0x6')]]['source']=_0x577178[_0x9f7a('0x41')];}if(!_[_0x9f7a('0x20')](_0x577178[_0x9f7a('0x42')]['xmd-phone'])){utils['info'](util[_0x9f7a('0x8')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x577178[_0x9f7a('0x6')],_0x577178[_0x9f7a('0x41')]));channels[_0x577178['uniqueid']]['destination']=_0x577178[_0x9f7a('0x41')];channels[_0x577178['uniqueid']][_0x9f7a('0x28')]='\x22'+_0x577178['value']+_0x9f7a('0x43')+_0x577178[_0x9f7a('0x41')]+'>';}if(!_[_0x9f7a('0x20')](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x44')])||!_[_0x9f7a('0x20')](_0x577178['variable'][_0x9f7a('0x45')])){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x46'),_0x577178[_0x9f7a('0x6')],!_['isNil'](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x44')])?'xmd-callerid-preview':_0x9f7a('0x45'),_0x577178[_0x9f7a('0x41')]));channels[_0x577178['uniqueid']][_0x9f7a('0x28')]=_0x577178[_0x9f7a('0x41')];}if(!_['isNil'](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x47')])||!_['isNil'](_0x577178[_0x9f7a('0x42')]['xmcs-queue'])){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x46'),_0x577178[_0x9f7a('0x6')],!_['isNil'](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x47')])?_0x9f7a('0x47'):_0x9f7a('0x48'),_0x577178[_0x9f7a('0x41')]));channels[_0x577178[_0x9f7a('0x6')]]['lastapplication']=_0x9f7a('0x49');channels[_0x577178['uniqueid']][_0x9f7a('0x4a')]=_0x577178['value'];channels[_0x577178[_0x9f7a('0x6')]][_0x9f7a('0x4b')]=!![];}if(!_[_0x9f7a('0x20')](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x4c')])){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x4d'),_0x577178[_0x9f7a('0x6')],_0x577178[_0x9f7a('0x41')]));channels[_0x577178[_0x9f7a('0x6')]][_0x9f7a('0x4e')]=_0x577178[_0x9f7a('0x41')];}if(!_[_0x9f7a('0x20')](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x4f')])){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x50'),_0x577178[_0x9f7a('0x6')],_0x577178[_0x9f7a('0x41')]));channels[_0x577178[_0x9f7a('0x6')]][_0x9f7a('0x51')]=_0x577178[_0x9f7a('0x41')];}if(!_[_0x9f7a('0x20')](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x52')])){utils[_0x9f7a('0x19')](util[_0x9f7a('0x8')](_0x9f7a('0x53'),_0x577178[_0x9f7a('0x6')],_0x577178[_0x9f7a('0x41')]));channels[_0x577178['uniqueid']][_0x9f7a('0x54')]=_0x577178[_0x9f7a('0x41')];}if(!_[_0x9f7a('0x20')](_0x577178[_0x9f7a('0x42')][_0x9f7a('0x55')])){utils['info'](util[_0x9f7a('0x8')](_0x9f7a('0x56'),_0x577178[_0x9f7a('0x6')],_0x577178[_0x9f7a('0x41')]));channels[_0x577178[_0x9f7a('0x6')]][_0x9f7a('0x55')]=_0x577178[_0x9f7a('0x41')];}}}catch(_0x12fadd){utils[_0x9f7a('0x2f')](util['format'](_0x9f7a('0x57'),_0x577178['uniqueid']),_0x12fadd);}};exports[_0x9f7a('0x58')]=function(_0xa57062){try{if(!_[_0x9f7a('0x20')](channels[_0xa57062[_0x9f7a('0x6')]])){utils[_0x9f7a('0x15')](util['format'](_0x9f7a('0x59'),_0xa57062[_0x9f7a('0x6')]),_0xa57062);utils[_0x9f7a('0x19')](util['format'](_0x9f7a('0x5a'),_0xa57062[_0x9f7a('0x6')],_0xa57062[_0x9f7a('0x5b')],_0xa57062[_0x9f7a('0x5c')]));if(_0xa57062[_0x9f7a('0x5b')][_0x9f7a('0x5d')]()=='set'&&_[_0x9f7a('0x5e')](_0xa57062[_0x9f7a('0x5c')][_0x9f7a('0x5d')](),_0x9f7a('0x5f'))){var _0x3f2a66=_0xa57062[_0x9f7a('0x5c')][_0x9f7a('0x60')]('=');var _0x283d1b=_0x3f2a66[0x0][_0x9f7a('0x61')](_0x3f2a66[0x0][_0x9f7a('0x62')]('(')+0x1,_0x3f2a66[0x0]['lastIndexOf'](')'));var _0x533bcc=_0x3f2a66[0x1];channels[_0xa57062[_0x9f7a('0x6')]][_0x283d1b]=_0x533bcc;}if(!_[_0x9f7a('0x63')](['hangup',_0x9f7a('0x64'),_0x9f7a('0x65'),_0x9f7a('0x66'),_0x9f7a('0x67')],_0xa57062['application'][_0x9f7a('0x5d')]())){channels[_0xa57062[_0x9f7a('0x6')]][_0x9f7a('0x68')]=_0xa57062[_0x9f7a('0x5b')];channels[_0xa57062[_0x9f7a('0x6')]]['lastdata']=_0xa57062[_0x9f7a('0x5c')];}}}catch(_0x2809a9){utils[_0x9f7a('0x2f')](util[_0x9f7a('0x8')](_0x9f7a('0x59'),_0xa57062[_0x9f7a('0x6')]),_0x2809a9);}};
\ No newline at end of file
index 4e442da..64f85d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf879=['info','[core]\x20connected','shutdown','[core]\x20fullybooted','[core]\x20error','close','[core]\x20close','./utils','connect'];(function(_0x2d2b9d,_0x21a5b8){var _0x304910=function(_0x4da66f){while(--_0x4da66f){_0x2d2b9d['push'](_0x2d2b9d['shift']());}};_0x304910(++_0x21a5b8);}(_0xf879,0x1ed));var _0x9f87=function(_0x4ec771,_0x80beb4){_0x4ec771=_0x4ec771-0x0;var _0x5b6382=_0xf879[_0x4ec771];return _0x5b6382;};'use strict';var utils=require(_0x9f87('0x0'));exports[_0x9f87('0x1')]=function(){utils[_0x9f87('0x2')](_0x9f87('0x3'));};exports[_0x9f87('0x4')]=function(){utils[_0x9f87('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x9f87('0x2')](_0x9f87('0x5'));};exports['error']=function(_0x1c40d9){utils['error'](_0x9f87('0x6'),_0x1c40d9);};exports[_0x9f87('0x7')]=function(){utils[_0x9f87('0x2')](_0x9f87('0x8'));};exports['managerevent']=function(_0x566fd3){};
\ No newline at end of file
+var _0x0ebe=['connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','./utils'];(function(_0x217c2e,_0x358f06){var _0x22b7d8=function(_0x111c48){while(--_0x111c48){_0x217c2e['push'](_0x217c2e['shift']());}};_0x22b7d8(++_0x358f06);}(_0x0ebe,0x1d3));var _0xe0eb=function(_0x35e3dc,_0x2b1f49){_0x35e3dc=_0x35e3dc-0x0;var _0x35da3d=_0x0ebe[_0x35e3dc];return _0x35da3d;};'use strict';var utils=require(_0xe0eb('0x0'));exports[_0xe0eb('0x1')]=function(){utils[_0xe0eb('0x2')](_0xe0eb('0x3'));};exports[_0xe0eb('0x4')]=function(){utils[_0xe0eb('0x2')](_0xe0eb('0x5'));};exports[_0xe0eb('0x6')]=function(){utils[_0xe0eb('0x2')](_0xe0eb('0x7'));};exports[_0xe0eb('0x8')]=function(_0x142387){utils[_0xe0eb('0x8')](_0xe0eb('0x9'),_0x142387);};exports[_0xe0eb('0xa')]=function(){utils[_0xe0eb('0x2')](_0xe0eb('0xb'));};exports[_0xe0eb('0xc')]=function(_0x12d71f){};
\ No newline at end of file
index be5542a..3895407 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fcd=['split','error','varset','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','cause-txt','duration','diffTime','endtime','holdtime','billableseconds','lodash','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)'];(function(_0x3a8dc1,_0x2f03b8){var _0x4b3595=function(_0x1c19e7){while(--_0x1c19e7){_0x3a8dc1['push'](_0x3a8dc1['shift']());}};_0x4b3595(++_0x2f03b8);}(_0x6fcd,0xee));var _0xd6fc=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x6fcd[_0x342baa];return _0x1208f3;};'use strict';var _=require(_0xd6fc('0x0'));var util=require('util');var utils=require(_0xd6fc('0x1'));var dials={};function writeDB(_0x299ec5){utils['info'](util[_0xd6fc('0x2')](_0xd6fc('0x3'),_0x299ec5[_0xd6fc('0x4')],_0x299ec5[_0xd6fc('0x5')],_0x299ec5[_0xd6fc('0x6')],_0x299ec5[_0xd6fc('0x7')],_0x299ec5['connectedlinenum'],_0x299ec5[_0xd6fc('0x8')]));utils[_0xd6fc('0x9')](_0xd6fc('0xa'),_0x299ec5);delete dials[_0x299ec5[_0xd6fc('0x4')]];}exports[_0xd6fc('0xb')]=function(_0x115e5e){try{utils[_0xd6fc('0xc')](util['format'](_0xd6fc('0xd'),_0x115e5e['uniqueid']),_0x115e5e);utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0xf'),_0x115e5e['uniqueid'],_0x115e5e[_0xd6fc('0x10')],_0x115e5e[_0xd6fc('0x11')]));if(_0x115e5e[_0xd6fc('0x10')][_0xd6fc('0x12')]()==_0xd6fc('0x13')&&_[_0xd6fc('0x14')](_0x115e5e[_0xd6fc('0x11')]['toLowerCase'](),_0xd6fc('0x15'))){var _0x417256=_0x115e5e[_0xd6fc('0x11')][_0xd6fc('0x16')]('=');dials[_0x115e5e[_0xd6fc('0x4')]]={'routeId':_0x417256[0x1]};}}catch(_0x147e91){utils[_0xd6fc('0x17')](util[_0xd6fc('0x2')](_0xd6fc('0xd'),_0x115e5e[_0xd6fc('0x4')]),_0x147e91);}};exports[_0xd6fc('0x18')]=function(_0x103c25){try{utils[_0xd6fc('0xc')](util[_0xd6fc('0x2')](_0xd6fc('0x19'),_0x103c25[_0xd6fc('0x4')]),_0x103c25);if(!_[_0xd6fc('0x1a')](_0x103c25['variable'][_0xd6fc('0x1b')])){utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x1c'),_0x103c25[_0xd6fc('0x4')],_0x103c25[_0xd6fc('0x1d')]));dials[_0x103c25['uniqueid']]={'routeId':_0x103c25[_0xd6fc('0x1d')]};}}catch(_0x59ad06){utils[_0xd6fc('0x17')](util[_0xd6fc('0x2')]('[%s][dials][varset]',_0x103c25['uniqueid']),_0x59ad06);}};exports[_0xd6fc('0x1e')]=function(_0x201d1b){try{if(!_[_0xd6fc('0x1a')](dials[_0x201d1b[_0xd6fc('0x4')]])){utils[_0xd6fc('0xc')](util['format'](_0xd6fc('0x1f'),_0x201d1b[_0xd6fc('0x4')]),_0x201d1b);dials[_0x201d1b[_0xd6fc('0x4')]]=_[_0xd6fc('0x20')](dials[_0x201d1b[_0xd6fc('0x4')]],_0x201d1b);dials[_0x201d1b[_0xd6fc('0x4')]][_0xd6fc('0x21')]=utils[_0xd6fc('0x22')]();dials[_0x201d1b[_0xd6fc('0x4')]]['lastevent']=_0xd6fc('0x23');utils['info'](util[_0xd6fc('0x2')](_0xd6fc('0x24'),_0x201d1b['uniqueid'],dials[_0x201d1b[_0xd6fc('0x4')]]['starttime']));}}catch(_0x40c83f){utils['error'](util[_0xd6fc('0x2')](_0xd6fc('0x1f'),_0x201d1b[_0xd6fc('0x4')]),_0x40c83f);}};exports[_0xd6fc('0x25')]=function(_0x477c10){try{if(!_[_0xd6fc('0x1a')](dials[_0x477c10[_0xd6fc('0x4')]])){utils[_0xd6fc('0xc')](util['format'](_0xd6fc('0x26'),_0x477c10[_0xd6fc('0x4')]),_0x477c10);dials[_0x477c10[_0xd6fc('0x4')]]['dialstatus']=_0x477c10['dialstatus'];if(_0x477c10['dialstatus']=='ANSWER'){dials[_0x477c10[_0xd6fc('0x4')]]=_['assign'](dials[_0x477c10['uniqueid']],_0x477c10);dials[_0x477c10[_0xd6fc('0x4')]]['answertime']=utils['now']();dials[_0x477c10[_0xd6fc('0x4')]][_0xd6fc('0x27')]='connect';utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x28'),_0x477c10[_0xd6fc('0x4')],_0x477c10[_0xd6fc('0x8')],dials[_0x477c10[_0xd6fc('0x4')]][_0xd6fc('0x29')]));}else{utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x2a'),_0x477c10[_0xd6fc('0x4')],_0x477c10[_0xd6fc('0x8')]));}}}catch(_0xda7439){utils[_0xd6fc('0x17')](util[_0xd6fc('0x2')](_0xd6fc('0x26'),_0x477c10[_0xd6fc('0x4')]),_0xda7439);}};exports[_0xd6fc('0x2b')]=function(_0x4a1075){try{if(!_[_0xd6fc('0x1a')](dials[_0x4a1075[_0xd6fc('0x4')]])){utils['debug'](util['format'](_0xd6fc('0x2c'),_0x4a1075[_0xd6fc('0x4')]),_0x4a1075);utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x2d'),_0x4a1075['uniqueid'],_0x4a1075[_0xd6fc('0x7')],_0x4a1075['calleridname'],_0x4a1075[_0xd6fc('0x2e')]));dials[_0x4a1075['uniqueid']]=_[_0xd6fc('0x20')](dials[_0x4a1075[_0xd6fc('0x4')]],{'endtime':utils['now'](),'lastevent':'complete'});dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x2f')]=utils[_0xd6fc('0x30')](dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x31')],dials[_0x4a1075['uniqueid']]['starttime']);dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x32')]=utils[_0xd6fc('0x30')](dials[_0x4a1075[_0xd6fc('0x4')]]['answertime']||dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x31')],dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x21')]);dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x33')]=dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x29')]?utils[_0xd6fc('0x30')](dials[_0x4a1075[_0xd6fc('0x4')]]['endtime'],dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x29')]):0x0;writeDB(dials[_0x4a1075[_0xd6fc('0x4')]]);}}catch(_0xd8fd0){utils['error'](util['format'](_0xd6fc('0x2c'),_0x4a1075[_0xd6fc('0x4')]),_0xd8fd0);}};
\ No newline at end of file
+var _0x8db5=['dialstatus','ANSWER','now','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','duration','diffTime','endtime','holdtime','billableseconds','lodash','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','calleridnum','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','startsWith','cdr(routeid)','varset','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][dialbegin]','assign','starttime','lastevent','called','dialend'];(function(_0xf8ca0d,_0x1828d9){var _0x291d83=function(_0x55504f){while(--_0x55504f){_0xf8ca0d['push'](_0xf8ca0d['shift']());}};_0x291d83(++_0x1828d9);}(_0x8db5,0x15a));var _0x58db=function(_0x36981f,_0x35de12){_0x36981f=_0x36981f-0x0;var _0x4c1845=_0x8db5[_0x36981f];return _0x4c1845;};'use strict';var _=require(_0x58db('0x0'));var util=require('util');var utils=require(_0x58db('0x1'));var dials={};function writeDB(_0x25f2f2){utils[_0x58db('0x2')](util[_0x58db('0x3')](_0x58db('0x4'),_0x25f2f2[_0x58db('0x5')],_0x25f2f2[_0x58db('0x6')],_0x25f2f2['dialstring'],_0x25f2f2[_0x58db('0x7')],_0x25f2f2['connectedlinenum'],_0x25f2f2['dialstatus']));utils['request']('CreateVoiceDialReport',_0x25f2f2);delete dials[_0x25f2f2[_0x58db('0x5')]];}exports[_0x58db('0x8')]=function(_0x26a2b4){try{utils[_0x58db('0x9')](util[_0x58db('0x3')](_0x58db('0xa'),_0x26a2b4[_0x58db('0x5')]),_0x26a2b4);utils[_0x58db('0x2')](util[_0x58db('0x3')](_0x58db('0xb'),_0x26a2b4[_0x58db('0x5')],_0x26a2b4['application'],_0x26a2b4[_0x58db('0xc')]));if(_0x26a2b4[_0x58db('0xd')][_0x58db('0xe')]()=='set'&&_[_0x58db('0xf')](_0x26a2b4[_0x58db('0xc')]['toLowerCase'](),_0x58db('0x10'))){var _0x4ea607=_0x26a2b4[_0x58db('0xc')]['split']('=');dials[_0x26a2b4[_0x58db('0x5')]]={'routeId':_0x4ea607[0x1]};}}catch(_0x122b4b){utils['error'](util[_0x58db('0x3')](_0x58db('0xa'),_0x26a2b4[_0x58db('0x5')]),_0x122b4b);}};exports[_0x58db('0x11')]=function(_0x30d6b9){try{utils[_0x58db('0x9')](util[_0x58db('0x3')](_0x58db('0x12'),_0x30d6b9['uniqueid']),_0x30d6b9);if(!_[_0x58db('0x13')](_0x30d6b9['variable'][_0x58db('0x14')])){utils['info'](util['format'](_0x58db('0x15'),_0x30d6b9[_0x58db('0x5')],_0x30d6b9[_0x58db('0x16')]));dials[_0x30d6b9[_0x58db('0x5')]]={'routeId':_0x30d6b9['value']};}}catch(_0x1026f3){utils[_0x58db('0x17')](util[_0x58db('0x3')](_0x58db('0x12'),_0x30d6b9['uniqueid']),_0x1026f3);}};exports['dialbegin']=function(_0x358323){try{if(!_[_0x58db('0x13')](dials[_0x358323['uniqueid']])){utils[_0x58db('0x9')](util[_0x58db('0x3')](_0x58db('0x18'),_0x358323[_0x58db('0x5')]),_0x358323);dials[_0x358323[_0x58db('0x5')]]=_[_0x58db('0x19')](dials[_0x358323[_0x58db('0x5')]],_0x358323);dials[_0x358323[_0x58db('0x5')]][_0x58db('0x1a')]=utils['now']();dials[_0x358323[_0x58db('0x5')]][_0x58db('0x1b')]=_0x58db('0x1c');utils['info'](util[_0x58db('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x358323[_0x58db('0x5')],dials[_0x358323[_0x58db('0x5')]][_0x58db('0x1a')]));}}catch(_0x3ce550){utils[_0x58db('0x17')](util[_0x58db('0x3')](_0x58db('0x18'),_0x358323[_0x58db('0x5')]),_0x3ce550);}};exports[_0x58db('0x1d')]=function(_0x448243){try{if(!_['isNil'](dials[_0x448243[_0x58db('0x5')]])){utils['debug'](util[_0x58db('0x3')]('[%s][dials][dialend]',_0x448243[_0x58db('0x5')]),_0x448243);dials[_0x448243['uniqueid']][_0x58db('0x1e')]=_0x448243[_0x58db('0x1e')];if(_0x448243[_0x58db('0x1e')]==_0x58db('0x1f')){dials[_0x448243[_0x58db('0x5')]]=_[_0x58db('0x19')](dials[_0x448243[_0x58db('0x5')]],_0x448243);dials[_0x448243[_0x58db('0x5')]]['answertime']=utils[_0x58db('0x20')]();dials[_0x448243[_0x58db('0x5')]][_0x58db('0x1b')]=_0x58db('0x21');utils[_0x58db('0x2')](util[_0x58db('0x3')](_0x58db('0x22'),_0x448243[_0x58db('0x5')],_0x448243[_0x58db('0x1e')],dials[_0x448243[_0x58db('0x5')]][_0x58db('0x23')]));}else{utils[_0x58db('0x2')](util['format'](_0x58db('0x24'),_0x448243['uniqueid'],_0x448243[_0x58db('0x1e')]));}}}catch(_0x479c91){utils[_0x58db('0x17')](util[_0x58db('0x3')](_0x58db('0x25'),_0x448243['uniqueid']),_0x479c91);}};exports[_0x58db('0x26')]=function(_0x4ae879){try{if(!_['isNil'](dials[_0x4ae879[_0x58db('0x5')]])){utils[_0x58db('0x9')](util[_0x58db('0x3')](_0x58db('0x27'),_0x4ae879[_0x58db('0x5')]),_0x4ae879);utils[_0x58db('0x2')](util[_0x58db('0x3')](_0x58db('0x28'),_0x4ae879['uniqueid'],_0x4ae879['calleridnum'],_0x4ae879[_0x58db('0x29')],_0x4ae879['cause-txt']));dials[_0x4ae879[_0x58db('0x5')]]=_['assign'](dials[_0x4ae879[_0x58db('0x5')]],{'endtime':utils[_0x58db('0x20')](),'lastevent':'complete'});dials[_0x4ae879['uniqueid']][_0x58db('0x2a')]=utils[_0x58db('0x2b')](dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x2c')],dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x1a')]);dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x2d')]=utils[_0x58db('0x2b')](dials[_0x4ae879['uniqueid']][_0x58db('0x23')]||dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x2c')],dials[_0x4ae879[_0x58db('0x5')]]['starttime']);dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x2e')]=dials[_0x4ae879[_0x58db('0x5')]]['answertime']?utils[_0x58db('0x2b')](dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x2c')],dials[_0x4ae879[_0x58db('0x5')]][_0x58db('0x23')]):0x0;writeDB(dials[_0x4ae879['uniqueid']]);}}catch(_0x4b5b4f){utils[_0x58db('0x17')](util[_0x58db('0x3')](_0x58db('0x27'),_0x4ae879[_0x58db('0x5')]),_0x4b5b4f);}};
\ No newline at end of file
index 531d7af..d5e5d1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f8=['musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','username','password','keepConnected','xdr','info','XDR\x20DISABLED','./calls.controller','./recordings.controller','./members.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]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]'];(function(_0x5acea6,_0x7c3f79){var _0x348328=function(_0x3deef4){while(--_0x3deef4){_0x5acea6['push'](_0x5acea6['shift']());}};_0x348328(++_0x7c3f79);}(_0x31f8,0x1aa));var _0x831f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x31f8[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require(_0x831f('0x0'));var config=require(_0x831f('0x1'));var utils=require(_0x831f('0x2'));var util=require(_0x831f('0x3'));var ami=new AsteriskManager(config[_0x831f('0x4')]['port'],config[_0x831f('0x4')]['ip'],config[_0x831f('0x4')][_0x831f('0x5')],config[_0x831f('0x4')][_0x831f('0x6')],!![]);ami[_0x831f('0x7')]();if(config['xdr']&&config[_0x831f('0x8')]['disabled']){utils[_0x831f('0x9')](_0x831f('0xa'));}else{var agents=require('./agents.controller');var calls=require(_0x831f('0xb'));var queues=require('./queues.controller');var recordings=require(_0x831f('0xc'));var members=require(_0x831f('0xd'));var dials=require(_0x831f('0xe'));var transfers=require(_0x831f('0xf'));var core=require(_0x831f('0x10'));ami['on'](_0x831f('0x11'),core[_0x831f('0x11')]);ami['on']('shutdown',core[_0x831f('0x12')]);ami['on'](_0x831f('0x13'),core[_0x831f('0x13')]);ami['on'](_0x831f('0x14'),core[_0x831f('0x14')]);ami['on'](_0x831f('0x15'),core[_0x831f('0x15')]);ami['on'](_0x831f('0x16'),core['managerevent']);ami['on'](_0x831f('0x17'),function(_0x192f0c){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x1a'),_0x192f0c[_0x831f('0x1b')]),_0x192f0c);members[_0x831f('0x17')](_0x192f0c);}catch(_0x528cba){utils[_0x831f('0x14')](util['format'](_0x831f('0x1a'),_0x192f0c[_0x831f('0x1b')]),_0x528cba);}});ami['on'](_0x831f('0x1c'),function(_0x364169){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x1d'),_0x364169['uniqueid']),_0x364169);agents[_0x831f('0x1c')](_0x364169);}catch(_0x1cadf1){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x1d'),_0x364169[_0x831f('0x1e')]),_0x1cadf1);}});ami['on'](_0x831f('0x1f'),function(_0x57fd7d){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x20'),_0x57fd7d[_0x831f('0x1e')]),_0x57fd7d);agents[_0x831f('0x1f')](_0x57fd7d);}catch(_0x3509f6){utils[_0x831f('0x14')](util['format'](_0x831f('0x20'),_0x57fd7d[_0x831f('0x1e')]),_0x3509f6);}});ami['on'](_0x831f('0x21'),function(_0x53fdfe){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x22'),_0x53fdfe[_0x831f('0x1e')]),_0x53fdfe);agents[_0x831f('0x21')](_0x53fdfe);queues[_0x831f('0x21')](_0x53fdfe);}catch(_0x2d9a6b){utils[_0x831f('0x14')](util['format'](_0x831f('0x22'),_0x53fdfe[_0x831f('0x1e')]),_0x2d9a6b);}});ami['on']('agentcomplete',function(_0xcdd389){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x23'),_0xcdd389[_0x831f('0x1e')]),_0xcdd389);agents[_0x831f('0x24')](_0xcdd389);queues[_0x831f('0x24')](_0xcdd389);members[_0x831f('0x24')](_0xcdd389);}catch(_0x558407){utils[_0x831f('0x14')](util['format']('[%s][index][agentcomplete]',_0xcdd389[_0x831f('0x1e')]),_0x558407);}});ami['on'](_0x831f('0x25'),function(_0xc3d753){try{utils[_0x831f('0x18')](util['format']('[%s][index][queuecallerabandon]',_0xc3d753[_0x831f('0x1e')]),_0xc3d753);agents[_0x831f('0x25')](_0xc3d753);queues[_0x831f('0x25')](_0xc3d753);}catch(_0x1130c2){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x26'),_0xc3d753['uniqueid']),_0x1130c2);}});ami['on'](_0x831f('0x27'),function(_0x1d66f2){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x28'),_0x1d66f2[_0x831f('0x1e')]),_0x1d66f2);queues['queuecallerjoin'](_0x1d66f2);recordings[_0x831f('0x27')](_0x1d66f2);}catch(_0x5b74b4){utils[_0x831f('0x14')](util['format']('[%s][index][queuecallerjoin]',_0x1d66f2['uniqueid']),_0x5b74b4);}});ami['on'](_0x831f('0x29'),function(_0xee233c){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x2a'),_0xee233c[_0x831f('0x1e')]),_0xee233c);queues[_0x831f('0x29')](_0xee233c);}catch(_0x49010e){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x2a'),_0xee233c['uniqueid']),_0x49010e);}});ami['on'](_0x831f('0x2b'),function(_0x4ef732){try{utils['debug'](util['format'](_0x831f('0x2c'),_0x4ef732['uniqueid']),_0x4ef732);queues[_0x831f('0x2b')](_0x4ef732);calls['musiconholdstart'](_0x4ef732);}catch(_0x54b52d){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x2c'),_0x4ef732[_0x831f('0x1e')]),_0x54b52d);}});ami['on']('musiconholdstop',function(_0x50f067){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x2d'),_0x50f067['uniqueid']),_0x50f067);queues['musiconholdstop'](_0x50f067);calls[_0x831f('0x2e')](_0x50f067);}catch(_0x3d7a1b){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x2d'),_0x50f067[_0x831f('0x1e')]),_0x3d7a1b);}});ami['on'](_0x831f('0x2f'),function(_0x5e48f0){try{utils[_0x831f('0x18')](util[_0x831f('0x19')]('[%s][index][newstate]',_0x5e48f0[_0x831f('0x1e')]),_0x5e48f0);calls['newstate'](_0x5e48f0);recordings[_0x831f('0x2f')](_0x5e48f0);}catch(_0x4ee574){utils['error'](util[_0x831f('0x19')](_0x831f('0x30'),_0x5e48f0[_0x831f('0x1e')]),_0x4ee574);}});ami['on'](_0x831f('0x31'),function(_0x1700b7){try{utils[_0x831f('0x18')](util[_0x831f('0x19')]('[%s][index][hangup]',_0x1700b7[_0x831f('0x1e')]),_0x1700b7);calls[_0x831f('0x31')](_0x1700b7);recordings[_0x831f('0x31')](_0x1700b7);dials[_0x831f('0x31')](_0x1700b7);agents[_0x831f('0x31')](_0x1700b7);queues['hangup'](_0x1700b7);}catch(_0x1bcbdc){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x32'),_0x1700b7[_0x831f('0x1e')]),_0x1bcbdc);}});ami['on'](_0x831f('0x33'),function(_0x2d077c){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x34'),_0x2d077c['uniqueid']),_0x2d077c);members[_0x831f('0x33')](_0x2d077c);}catch(_0xe4b25a){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x34'),_0x2d077c[_0x831f('0x1e')]),_0xe4b25a);}});ami['on'](_0x831f('0x35'),function(_0x14addd){try{utils['debug'](util[_0x831f('0x19')]('[%s][index][blindtransfer]',_0x14addd[_0x831f('0x1e')]),_0x14addd);queues[_0x831f('0x35')](_0x14addd);agents[_0x831f('0x35')](_0x14addd);transfers[_0x831f('0x35')](_0x14addd);}catch(_0x5ec6a0){utils[_0x831f('0x14')](util[_0x831f('0x19')]('[%s][index][blindtransfer]',_0x14addd['uniqueid']),_0x5ec6a0);}});ami['on'](_0x831f('0x36'),function(_0x55eb0c){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x37'),_0x55eb0c[_0x831f('0x38')]),_0x55eb0c);queues[_0x831f('0x36')](_0x55eb0c);transfers[_0x831f('0x36')](_0x55eb0c);agents['attendedtransfer'](_0x55eb0c);calls[_0x831f('0x36')](_0x55eb0c);}catch(_0x510df2){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x37'),_0x55eb0c[_0x831f('0x38')]),_0x510df2);}});ami['on'](_0x831f('0x39'),function(_0x2f8903){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x3a'),_0x2f8903['uniqueid']),_0x2f8903);queues[_0x831f('0x39')](_0x2f8903);recordings[_0x831f('0x39')](_0x2f8903);calls['varset'](_0x2f8903);dials['varset'](_0x2f8903);}catch(_0x1cd6a9){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x3a'),_0x2f8903[_0x831f('0x1e')]),_0x1cd6a9);}});ami['on'](_0x831f('0x3b'),function(_0x31ba39){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x3c'),_0x31ba39['uniqueid']),_0x31ba39);calls[_0x831f('0x3b')](_0x31ba39);recordings[_0x831f('0x3b')](_0x31ba39);dials[_0x831f('0x3b')](_0x31ba39);}catch(_0x43bbfb){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x3c'),_0x31ba39['uniqueid']),_0x43bbfb);}});ami['on'](_0x831f('0x3d'),function(_0x260b14){try{utils['debug'](util[_0x831f('0x19')]('[%s][index][newchannel]',_0x260b14[_0x831f('0x1e')]),_0x260b14);calls['newchannel'](_0x260b14);recordings[_0x831f('0x3d')](_0x260b14);}catch(_0x2e7dd7){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x3e'),_0x260b14[_0x831f('0x1e')]),_0x2e7dd7);}});ami['on'](_0x831f('0x3f'),function(_0x15d963){try{utils['debug'](util['format'](_0x831f('0x40'),_0x15d963['uniqueid']),_0x15d963);dials[_0x831f('0x3f')](_0x15d963);}catch(_0x552609){utils[_0x831f('0x14')](util['format']('[%s]dialbegin',_0x15d963['uniqueid']),_0x552609);}});ami['on'](_0x831f('0x41'),function(_0x2fa7f1){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x42'),_0x2fa7f1['uniqueid']),_0x2fa7f1);dials[_0x831f('0x41')](_0x2fa7f1);}catch(_0x538dff){utils[_0x831f('0x14')](util[_0x831f('0x19')]('[%s][index][dialend]',_0x2fa7f1['uniqueid']),_0x538dff);}});}
\ No newline at end of file
+var _0x0c02=['error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','agentcalled','debug','uniqueid','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','[%s][index][queuecallerjoin]','queuecallerjoin','[%s][index][queuecallerleave]','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','varset','[%s][index][newexten]','newexten','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','../../config/environment','./utils','util','asterisk','port','username','password','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./core.controller','connect','fullybooted'];(function(_0x7e0581,_0x17fbb6){var _0x26314b=function(_0x28935f){while(--_0x28935f){_0x7e0581['push'](_0x7e0581['shift']());}};_0x26314b(++_0x17fbb6);}(_0x0c02,0x136));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require('asterisk-manager');var config=require(_0x20c0('0x0'));var utils=require(_0x20c0('0x1'));var util=require(_0x20c0('0x2'));var ami=new AsteriskManager(config[_0x20c0('0x3')][_0x20c0('0x4')],config[_0x20c0('0x3')]['ip'],config[_0x20c0('0x3')][_0x20c0('0x5')],config[_0x20c0('0x3')][_0x20c0('0x6')],!![]);ami['keepConnected']();if(config['xdr']&&config[_0x20c0('0x7')][_0x20c0('0x8')]){utils[_0x20c0('0x9')](_0x20c0('0xa'));}else{var agents=require(_0x20c0('0xb'));var calls=require(_0x20c0('0xc'));var queues=require(_0x20c0('0xd'));var recordings=require(_0x20c0('0xe'));var members=require(_0x20c0('0xf'));var dials=require(_0x20c0('0x10'));var transfers=require('./transfers.controller');var core=require(_0x20c0('0x11'));ami['on'](_0x20c0('0x12'),core[_0x20c0('0x12')]);ami['on']('shutdown',core['shutdown']);ami['on'](_0x20c0('0x13'),core[_0x20c0('0x13')]);ami['on']('error',core[_0x20c0('0x14')]);ami['on']('close',core[_0x20c0('0x15')]);ami['on']('managerevent',core[_0x20c0('0x16')]);ami['on'](_0x20c0('0x17'),function(_0x3b02de){try{utils['debug'](util[_0x20c0('0x18')](_0x20c0('0x19'),_0x3b02de['device']),_0x3b02de);members['devicestatechange'](_0x3b02de);}catch(_0xce2fde){utils[_0x20c0('0x14')](util['format']('[%s][index][devicestatechange]',_0x3b02de[_0x20c0('0x1a')]),_0xce2fde);}});ami['on'](_0x20c0('0x1b'),function(_0x45a4ec){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')]('[%s][index][agentcalled]',_0x45a4ec[_0x20c0('0x1d')]),_0x45a4ec);agents['agentcalled'](_0x45a4ec);}catch(_0x3ba92c){utils[_0x20c0('0x14')](util[_0x20c0('0x18')](_0x20c0('0x1e'),_0x45a4ec[_0x20c0('0x1d')]),_0x3ba92c);}});ami['on'](_0x20c0('0x1f'),function(_0x1972bf){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x20'),_0x1972bf[_0x20c0('0x1d')]),_0x1972bf);agents['agentringnoanswer'](_0x1972bf);}catch(_0x38bef6){utils[_0x20c0('0x14')](util['format']('[%s][index][agentringnoanswer]',_0x1972bf[_0x20c0('0x1d')]),_0x38bef6);}});ami['on']('agentconnect',function(_0x2ba3fa){try{utils[_0x20c0('0x1c')](util['format']('[%s][index][agentconnect]',_0x2ba3fa['uniqueid']),_0x2ba3fa);agents[_0x20c0('0x21')](_0x2ba3fa);queues[_0x20c0('0x21')](_0x2ba3fa);}catch(_0x183db5){utils[_0x20c0('0x14')](util['format'](_0x20c0('0x22'),_0x2ba3fa[_0x20c0('0x1d')]),_0x183db5);}});ami['on'](_0x20c0('0x23'),function(_0x414d34){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x24'),_0x414d34[_0x20c0('0x1d')]),_0x414d34);agents[_0x20c0('0x23')](_0x414d34);queues[_0x20c0('0x23')](_0x414d34);members[_0x20c0('0x23')](_0x414d34);}catch(_0x9c9caa){utils[_0x20c0('0x14')](util['format'](_0x20c0('0x24'),_0x414d34[_0x20c0('0x1d')]),_0x9c9caa);}});ami['on']('queuecallerabandon',function(_0x50e0fd){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x25'),_0x50e0fd['uniqueid']),_0x50e0fd);agents[_0x20c0('0x26')](_0x50e0fd);queues[_0x20c0('0x26')](_0x50e0fd);}catch(_0x4874cc){utils[_0x20c0('0x14')](util[_0x20c0('0x18')](_0x20c0('0x25'),_0x50e0fd[_0x20c0('0x1d')]),_0x4874cc);}});ami['on']('queuecallerjoin',function(_0x1e5d89){try{utils['debug'](util[_0x20c0('0x18')](_0x20c0('0x27'),_0x1e5d89[_0x20c0('0x1d')]),_0x1e5d89);queues['queuecallerjoin'](_0x1e5d89);recordings[_0x20c0('0x28')](_0x1e5d89);}catch(_0x59d1e9){utils[_0x20c0('0x14')](util[_0x20c0('0x18')]('[%s][index][queuecallerjoin]',_0x1e5d89[_0x20c0('0x1d')]),_0x59d1e9);}});ami['on']('queuecallerleave',function(_0x487160){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x29'),_0x487160[_0x20c0('0x1d')]),_0x487160);queues[_0x20c0('0x2a')](_0x487160);}catch(_0x4add4b){utils[_0x20c0('0x14')](util[_0x20c0('0x18')]('[%s][index][queuecallerleave]',_0x487160[_0x20c0('0x1d')]),_0x4add4b);}});ami['on'](_0x20c0('0x2b'),function(_0x26d307){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x2c'),_0x26d307['uniqueid']),_0x26d307);queues[_0x20c0('0x2b')](_0x26d307);calls[_0x20c0('0x2b')](_0x26d307);}catch(_0x48ae96){utils[_0x20c0('0x14')](util[_0x20c0('0x18')](_0x20c0('0x2c'),_0x26d307['uniqueid']),_0x48ae96);}});ami['on']('musiconholdstop',function(_0x5f5d0d){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x2d'),_0x5f5d0d[_0x20c0('0x1d')]),_0x5f5d0d);queues['musiconholdstop'](_0x5f5d0d);calls[_0x20c0('0x2e')](_0x5f5d0d);}catch(_0x3f0bf0){utils[_0x20c0('0x14')](util['format'](_0x20c0('0x2d'),_0x5f5d0d['uniqueid']),_0x3f0bf0);}});ami['on'](_0x20c0('0x2f'),function(_0x2221ae){try{utils['debug'](util[_0x20c0('0x18')](_0x20c0('0x30'),_0x2221ae[_0x20c0('0x1d')]),_0x2221ae);calls['newstate'](_0x2221ae);recordings[_0x20c0('0x2f')](_0x2221ae);}catch(_0x4e3acd){utils[_0x20c0('0x14')](util[_0x20c0('0x18')]('[%s][index][newstate]',_0x2221ae[_0x20c0('0x1d')]),_0x4e3acd);}});ami['on'](_0x20c0('0x31'),function(_0x5f35b9){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')]('[%s][index][hangup]',_0x5f35b9[_0x20c0('0x1d')]),_0x5f35b9);calls[_0x20c0('0x31')](_0x5f35b9);recordings[_0x20c0('0x31')](_0x5f35b9);dials[_0x20c0('0x31')](_0x5f35b9);agents['hangup'](_0x5f35b9);queues[_0x20c0('0x31')](_0x5f35b9);}catch(_0x5f114c){utils[_0x20c0('0x14')](util[_0x20c0('0x18')]('[%s][index][hangup]',_0x5f35b9['uniqueid']),_0x5f114c);}});ami['on'](_0x20c0('0x32'),function(_0x493361){try{utils['debug'](util[_0x20c0('0x18')](_0x20c0('0x33'),_0x493361['uniqueid']),_0x493361);members[_0x20c0('0x32')](_0x493361);}catch(_0x428f6b){utils[_0x20c0('0x14')](util['format']('[%s][index][cdr]',_0x493361[_0x20c0('0x1d')]),_0x428f6b);}});ami['on'](_0x20c0('0x34'),function(_0x5e89a9){try{utils['debug'](util['format'](_0x20c0('0x35'),_0x5e89a9[_0x20c0('0x1d')]),_0x5e89a9);queues['blindtransfer'](_0x5e89a9);agents['blindtransfer'](_0x5e89a9);transfers[_0x20c0('0x34')](_0x5e89a9);}catch(_0x2853f2){utils[_0x20c0('0x14')](util[_0x20c0('0x18')](_0x20c0('0x35'),_0x5e89a9[_0x20c0('0x1d')]),_0x2853f2);}});ami['on'](_0x20c0('0x36'),function(_0x42d8a2){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')]('[%s][index][attendedtransfer]',_0x42d8a2[_0x20c0('0x37')]),_0x42d8a2);queues['attendedtransfer'](_0x42d8a2);transfers[_0x20c0('0x36')](_0x42d8a2);agents[_0x20c0('0x36')](_0x42d8a2);calls['attendedtransfer'](_0x42d8a2);}catch(_0x16eb82){utils['error'](util['format'](_0x20c0('0x38'),_0x42d8a2['origtransfereruniqueid']),_0x16eb82);}});ami['on']('varset',function(_0x5afd4b){try{utils[_0x20c0('0x1c')](util['format']('[%s][index][varset]',_0x5afd4b[_0x20c0('0x1d')]),_0x5afd4b);queues[_0x20c0('0x39')](_0x5afd4b);recordings[_0x20c0('0x39')](_0x5afd4b);calls[_0x20c0('0x39')](_0x5afd4b);dials[_0x20c0('0x39')](_0x5afd4b);}catch(_0x10dae5){utils['error'](util[_0x20c0('0x18')]('[%s][index][varset]',_0x5afd4b['uniqueid']),_0x10dae5);}});ami['on']('newexten',function(_0x26f308){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x3a'),_0x26f308[_0x20c0('0x1d')]),_0x26f308);calls[_0x20c0('0x3b')](_0x26f308);recordings[_0x20c0('0x3b')](_0x26f308);dials['newexten'](_0x26f308);}catch(_0x4e578c){utils['error'](util[_0x20c0('0x18')](_0x20c0('0x3a'),_0x26f308[_0x20c0('0x1d')]),_0x4e578c);}});ami['on'](_0x20c0('0x3c'),function(_0x10b6e6){try{utils[_0x20c0('0x1c')](util['format'](_0x20c0('0x3d'),_0x10b6e6[_0x20c0('0x1d')]),_0x10b6e6);calls[_0x20c0('0x3c')](_0x10b6e6);recordings[_0x20c0('0x3c')](_0x10b6e6);}catch(_0x364394){utils[_0x20c0('0x14')](util[_0x20c0('0x18')](_0x20c0('0x3d'),_0x10b6e6['uniqueid']),_0x364394);}});ami['on'](_0x20c0('0x3e'),function(_0x1cf53c){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')](_0x20c0('0x3f'),_0x1cf53c[_0x20c0('0x1d')]),_0x1cf53c);dials[_0x20c0('0x3e')](_0x1cf53c);}catch(_0x52bd23){utils[_0x20c0('0x14')](util[_0x20c0('0x18')]('[%s]dialbegin',_0x1cf53c['uniqueid']),_0x52bd23);}});ami['on'](_0x20c0('0x40'),function(_0x2fd144){try{utils[_0x20c0('0x1c')](util[_0x20c0('0x18')]('[%s][index][dialend]',_0x2fd144[_0x20c0('0x1d')]),_0x2fd144);dials[_0x20c0('0x40')](_0x2fd144);}catch(_0x18bdc9){utils[_0x20c0('0x14')](util[_0x20c0('0x18')](_0x20c0('0x41'),_0x2fd144['uniqueid']),_0x18bdc9);}});}
\ No newline at end of file
index 45936ba..d07b783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68c0=['[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','exitAt','destinationchannel','lodash','util','Local/_attended@transfer','Queue:','info','format','interface','channel','data2','membername','type','then','name','internal','request','CreateMemberReport','getUserByName','catch','error','uniqueid','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','voice','TALKING','now','NOT_INUSE','isNil','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]','assign','queue','cdr','[%s][members][cdr]','split','data1','source','data3','destination'];(function(_0x150068,_0x14db51){var _0x8ca19b=function(_0x4c0126){while(--_0x4c0126){_0x150068['push'](_0x150068['shift']());}};_0x8ca19b(++_0x14db51);}(_0x68c0,0x1c5));var _0x068c=function(_0x3bc7b7,_0x2cf8b9){_0x3bc7b7=_0x3bc7b7-0x0;var _0xcfd3ac=_0x68c0[_0x3bc7b7];return _0xcfd3ac;};'use strict';var _=require(_0x068c('0x0'));var util=require(_0x068c('0x1'));var utils=require('./utils');var members={};var exclude=[_0x068c('0x2'),_0x068c('0x3')];function writeDB(_0xc420be){utils[_0x068c('0x4')](util[_0x068c('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0xc420be['uniqueid'],_0xc420be[_0x068c('0x6')],_0xc420be[_0x068c('0x7')],_0xc420be[_0x068c('0x8')],_0xc420be[_0x068c('0x9')],_0xc420be[_0x068c('0xa')]));if(_0xc420be[_0x068c('0x6')]){utils['getUserByInterface'](_0xc420be[_0x068c('0x6')])[_0x068c('0xb')](function(_0x1534ca){if(_0x1534ca){_0xc420be[_0x068c('0x9')]=_0x1534ca[_0x068c('0xc')];_0xc420be[_0x068c('0xd')]=_0x1534ca[_0x068c('0xd')];utils[_0x068c('0xe')](_0x068c('0xf'),_0xc420be);}else{utils[_0x068c('0x10')](_0xc420be[_0x068c('0x6')]['split']('/')[0x1])[_0x068c('0xb')](function(_0x5696a6){if(_0x5696a6){_0xc420be['membername']=_0x5696a6[_0x068c('0xc')];_0xc420be[_0x068c('0xd')]=_0x5696a6[_0x068c('0xd')];utils[_0x068c('0xe')](_0x068c('0xf'),_0xc420be);}});}})[_0x068c('0x11')](function(_0x1bd282){utils[_0x068c('0x12')](util['format']('[%s][members][writeDB]',_0xc420be[_0x068c('0x13')]),_0x1bd282);});}delete members[_0xc420be[_0x068c('0x6')]];}function startsWith(_0x3ec9e5,_0x26f48d){return _['some'](_0x3ec9e5,function(_0x3108f0){return _[_0x068c('0x14')](_0x26f48d,_0x3108f0);});}exports[_0x068c('0x15')]=function(_0x447856){try{utils[_0x068c('0x16')](util[_0x068c('0x5')](_0x068c('0x17'),members[_0x447856[_0x068c('0x18')]]?members[_0x447856[_0x068c('0x18')]][_0x068c('0x13')]:_0x447856[_0x068c('0x18')]),_0x447856);utils[_0x068c('0x4')](util[_0x068c('0x5')](_0x068c('0x19'),members[_0x447856[_0x068c('0x18')]]?members[_0x447856[_0x068c('0x18')]][_0x068c('0x13')]:_0x447856['device'],_0x447856[_0x068c('0x1a')],_0x447856['device']));switch(_0x447856[_0x068c('0x1a')]){case _0x068c('0x1b'):case'BUSY':if(!startsWith(exclude,_0x447856[_0x068c('0x18')])){members[_0x447856[_0x068c('0x18')]]={'channel':_0x068c('0x1c'),'interface':_0x447856[_0x068c('0x18')],'type':_0x068c('0x1d'),'enterAt':utils[_0x068c('0x1e')](),'role':'agent'};}break;case _0x068c('0x1f'):if(!_[_0x068c('0x20')](members[_0x447856[_0x068c('0x18')]])){members[_0x447856[_0x068c('0x18')]]['exitAt']=utils[_0x068c('0x1e')]();members[_0x447856[_0x068c('0x18')]][_0x068c('0x21')]=utils[_0x068c('0x22')](members[_0x447856[_0x068c('0x18')]]['exitAt'],members[_0x447856[_0x068c('0x18')]][_0x068c('0x23')]);if(members[_0x447856[_0x068c('0x18')]][_0x068c('0x13')]){writeDB(members[_0x447856[_0x068c('0x18')]]);}}break;default:break;}}catch(_0x28797c){utils[_0x068c('0x12')](util[_0x068c('0x5')](_0x068c('0x17'),members[_0x447856[_0x068c('0x18')]]?members[_0x447856[_0x068c('0x18')]]['uniqueid']:_0x447856[_0x068c('0x18')]),_0x28797c);}};exports[_0x068c('0x24')]=function(_0xfb0d94){try{if(!_[_0x068c('0x20')](members[_0xfb0d94[_0x068c('0x6')]])){utils['debug'](util[_0x068c('0x5')](_0x068c('0x25'),_0xfb0d94[_0x068c('0x13')]),_0xfb0d94);utils[_0x068c('0x4')](util[_0x068c('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0xfb0d94[_0x068c('0x13')],_0xfb0d94[_0x068c('0x6')],_0xfb0d94['queue']));members[_0xfb0d94[_0x068c('0x6')]]=_[_0x068c('0x26')](members[_0xfb0d94['interface']],{'data4':_0xfb0d94[_0x068c('0x27')],'uniqueid':_0xfb0d94[_0x068c('0x13')]});}}catch(_0x5cecce){utils[_0x068c('0x12')](util[_0x068c('0x5')](_0x068c('0x25'),_0xfb0d94[_0x068c('0x13')]),_0x5cecce);}};exports[_0x068c('0x28')]=function(_0xe1398){try{utils[_0x068c('0x16')](util[_0x068c('0x5')](_0x068c('0x29'),_0xe1398[_0x068c('0x13')]),_0xe1398);if(_0xe1398[_0x068c('0x7')]){var _0x5ec52d=_0xe1398[_0x068c('0x7')][_0x068c('0x2a')]('-')[0x0];if(!_['isNil'](members[_0x5ec52d])){members[_0x5ec52d]=_[_0x068c('0x26')](members[_0x5ec52d],{'data1':members[_0x5ec52d][_0x068c('0x2b')]||_0xe1398[_0x068c('0xa')],'data2':members[_0x5ec52d][_0x068c('0x8')]||_0xe1398[_0x068c('0x2c')],'data3':members[_0x5ec52d][_0x068c('0x2d')]||_0xe1398[_0x068c('0x2e')],'uniqueid':members[_0x5ec52d][_0x068c('0x13')]||_0xe1398['uniqueid']});utils[_0x068c('0x4')](util[_0x068c('0x5')](_0x068c('0x2f'),_0xe1398[_0x068c('0x13')],members[_0x5ec52d][_0x068c('0x2b')],members[_0x5ec52d]['data2'],members[_0x5ec52d]['data3']));if(members[_0x5ec52d][_0x068c('0x30')]){writeDB(members[_0x5ec52d]);}}}if(_0xe1398['destinationchannel']){var _0x54bfd0=_0xe1398[_0x068c('0x31')][_0x068c('0x2a')]('-')[0x0];if(!_[_0x068c('0x20')](members[_0x54bfd0])){members[_0x54bfd0]=_['assign'](members[_0x54bfd0],{'data1':members[_0x54bfd0][_0x068c('0x2b')]||_0xe1398[_0x068c('0xa')],'data2':members[_0x54bfd0]['data2']||_0xe1398[_0x068c('0x2c')],'data3':members[_0x54bfd0][_0x068c('0x2d')]||_0xe1398['destination'],'uniqueid':members[_0x54bfd0][_0x068c('0x13')]||_0xe1398[_0x068c('0x13')]});utils[_0x068c('0x4')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0xe1398['uniqueid'],members[_0x54bfd0][_0x068c('0x2b')],members[_0x54bfd0][_0x068c('0x8')],members[_0x54bfd0][_0x068c('0x2d')]));if(members[_0x54bfd0][_0x068c('0x30')]){writeDB(members[_0x54bfd0]);}}}}catch(_0x1e7be2){utils['error'](util[_0x068c('0x5')](_0x068c('0x29'),_0xe1398['uniqueid']),_0x1e7be2);}};
\ No newline at end of file
+var _0x159b=['device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','NOT_INUSE','isNil','exitAt','now','duration','diffTime','enterAt','[%s][members][devicestatechange]','debug','[%s][members][agentcomplete]','queue','assign','cdr','[%s][members][cdr]','split','source','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','destinationchannel','destination','lodash','util','./utils','Local/_attended@transfer','Queue:','info','format','uniqueid','interface','channel','data2','type','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','getUserByName','error','some','devicestatechange'];(function(_0x1ea009,_0xf79599){var _0x339919=function(_0x1c06b6){while(--_0x1c06b6){_0x1ea009['push'](_0x1ea009['shift']());}};_0x339919(++_0xf79599);}(_0x159b,0x181));var _0xb159=function(_0x5ad83f,_0x2aa1e2){_0x5ad83f=_0x5ad83f-0x0;var _0x53434d=_0x159b[_0x5ad83f];return _0x53434d;};'use strict';var _=require(_0xb159('0x0'));var util=require(_0xb159('0x1'));var utils=require(_0xb159('0x2'));var members={};var exclude=[_0xb159('0x3'),_0xb159('0x4')];function writeDB(_0x19ceab){utils[_0xb159('0x5')](util[_0xb159('0x6')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x19ceab[_0xb159('0x7')],_0x19ceab[_0xb159('0x8')],_0x19ceab[_0xb159('0x9')],_0x19ceab[_0xb159('0xa')],_0x19ceab['membername'],_0x19ceab[_0xb159('0xb')]));if(_0x19ceab[_0xb159('0x8')]){utils[_0xb159('0xc')](_0x19ceab[_0xb159('0x8')])[_0xb159('0xd')](function(_0x7f9727){if(_0x7f9727){_0x19ceab[_0xb159('0xe')]=_0x7f9727[_0xb159('0xf')];_0x19ceab[_0xb159('0x10')]=_0x7f9727[_0xb159('0x10')];utils[_0xb159('0x11')](_0xb159('0x12'),_0x19ceab);}else{utils[_0xb159('0x13')](_0x19ceab['interface']['split']('/')[0x1])[_0xb159('0xd')](function(_0xc81bb7){if(_0xc81bb7){_0x19ceab[_0xb159('0xe')]=_0xc81bb7[_0xb159('0xf')];_0x19ceab[_0xb159('0x10')]=_0xc81bb7[_0xb159('0x10')];utils['request'](_0xb159('0x12'),_0x19ceab);}});}})['catch'](function(_0xd264a1){utils[_0xb159('0x14')](util['format']('[%s][members][writeDB]',_0x19ceab[_0xb159('0x7')]),_0xd264a1);});}delete members[_0x19ceab[_0xb159('0x8')]];}function startsWith(_0x69c5e2,_0x5e755c){return _[_0xb159('0x15')](_0x69c5e2,function(_0x20bbb8){return _['startsWith'](_0x5e755c,_0x20bbb8);});}exports[_0xb159('0x16')]=function(_0x2094e5){try{utils['debug'](util[_0xb159('0x6')]('[%s][members][devicestatechange]',members[_0x2094e5[_0xb159('0x17')]]?members[_0x2094e5[_0xb159('0x17')]][_0xb159('0x7')]:_0x2094e5['device']),_0x2094e5);utils[_0xb159('0x5')](util['format'](_0xb159('0x18'),members[_0x2094e5[_0xb159('0x17')]]?members[_0x2094e5[_0xb159('0x17')]][_0xb159('0x7')]:_0x2094e5[_0xb159('0x17')],_0x2094e5[_0xb159('0x19')],_0x2094e5[_0xb159('0x17')]));switch(_0x2094e5[_0xb159('0x19')]){case _0xb159('0x1a'):case _0xb159('0x1b'):if(!startsWith(exclude,_0x2094e5[_0xb159('0x17')])){members[_0x2094e5[_0xb159('0x17')]]={'channel':_0xb159('0x1c'),'interface':_0x2094e5['device'],'type':_0xb159('0x1d'),'enterAt':utils['now'](),'role':'agent'};}break;case _0xb159('0x1e'):if(!_[_0xb159('0x1f')](members[_0x2094e5[_0xb159('0x17')]])){members[_0x2094e5['device']][_0xb159('0x20')]=utils[_0xb159('0x21')]();members[_0x2094e5['device']][_0xb159('0x22')]=utils[_0xb159('0x23')](members[_0x2094e5[_0xb159('0x17')]][_0xb159('0x20')],members[_0x2094e5[_0xb159('0x17')]][_0xb159('0x24')]);if(members[_0x2094e5[_0xb159('0x17')]][_0xb159('0x7')]){writeDB(members[_0x2094e5['device']]);}}break;default:break;}}catch(_0x116988){utils[_0xb159('0x14')](util['format'](_0xb159('0x25'),members[_0x2094e5['device']]?members[_0x2094e5['device']]['uniqueid']:_0x2094e5[_0xb159('0x17')]),_0x116988);}};exports['agentcomplete']=function(_0x3eb8b0){try{if(!_[_0xb159('0x1f')](members[_0x3eb8b0[_0xb159('0x8')]])){utils[_0xb159('0x26')](util['format'](_0xb159('0x27'),_0x3eb8b0[_0xb159('0x7')]),_0x3eb8b0);utils[_0xb159('0x5')](util[_0xb159('0x6')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x3eb8b0[_0xb159('0x7')],_0x3eb8b0['interface'],_0x3eb8b0[_0xb159('0x28')]));members[_0x3eb8b0[_0xb159('0x8')]]=_[_0xb159('0x29')](members[_0x3eb8b0[_0xb159('0x8')]],{'data4':_0x3eb8b0[_0xb159('0x28')],'uniqueid':_0x3eb8b0[_0xb159('0x7')]});}}catch(_0x2aa053){utils[_0xb159('0x14')](util['format'](_0xb159('0x27'),_0x3eb8b0[_0xb159('0x7')]),_0x2aa053);}};exports[_0xb159('0x2a')]=function(_0x18175a){try{utils[_0xb159('0x26')](util['format'](_0xb159('0x2b'),_0x18175a['uniqueid']),_0x18175a);if(_0x18175a[_0xb159('0x9')]){var _0x2ef5e9=_0x18175a[_0xb159('0x9')][_0xb159('0x2c')]('-')[0x0];if(!_[_0xb159('0x1f')](members[_0x2ef5e9])){members[_0x2ef5e9]=_[_0xb159('0x29')](members[_0x2ef5e9],{'data1':members[_0x2ef5e9]['data1']||_0x18175a[_0xb159('0xb')],'data2':members[_0x2ef5e9][_0xb159('0xa')]||_0x18175a[_0xb159('0x2d')],'data3':members[_0x2ef5e9][_0xb159('0x2e')]||_0x18175a['destination'],'uniqueid':members[_0x2ef5e9][_0xb159('0x7')]||_0x18175a['uniqueid']});utils['info'](util[_0xb159('0x6')](_0xb159('0x2f'),_0x18175a['uniqueid'],members[_0x2ef5e9][_0xb159('0x30')],members[_0x2ef5e9][_0xb159('0xa')],members[_0x2ef5e9]['data3']));if(members[_0x2ef5e9][_0xb159('0x20')]){writeDB(members[_0x2ef5e9]);}}}if(_0x18175a[_0xb159('0x31')]){var _0x38b8c0=_0x18175a[_0xb159('0x31')][_0xb159('0x2c')]('-')[0x0];if(!_[_0xb159('0x1f')](members[_0x38b8c0])){members[_0x38b8c0]=_[_0xb159('0x29')](members[_0x38b8c0],{'data1':members[_0x38b8c0][_0xb159('0x30')]||_0x18175a[_0xb159('0xb')],'data2':members[_0x38b8c0]['data2']||_0x18175a[_0xb159('0x2d')],'data3':members[_0x38b8c0][_0xb159('0x2e')]||_0x18175a[_0xb159('0x32')],'uniqueid':members[_0x38b8c0][_0xb159('0x7')]||_0x18175a['uniqueid']});utils[_0xb159('0x5')](util[_0xb159('0x6')](_0xb159('0x2f'),_0x18175a[_0xb159('0x7')],members[_0x38b8c0]['data1'],members[_0x38b8c0][_0xb159('0xa')],members[_0x38b8c0][_0xb159('0x2e')]));if(members[_0x38b8c0][_0xb159('0x20')]){writeDB(members[_0x38b8c0]);}}}}catch(_0x1eda41){utils[_0xb159('0x14')](util[_0xb159('0x6')](_0xb159('0x2b'),_0x18175a['uniqueid']),_0x1eda41);}};
\ No newline at end of file
index 170f282..72771b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf7=['variable','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','transfer','TRANSFER','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfererlinkedid','secondtransfererlinkedid','origtransfereruniqueid','origtransfererexten','ATTENDED','transferexten','ATTENDEDTRANSFER','transfereelinkedid','transfertargetuniqueid','calleridnum','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','secondtransfererexten','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','accountcode','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','varset','[%s][queues][varset]'];(function(_0x46bc4b,_0x40c24b){var _0x26b6a3=function(_0x49b9e5){while(--_0x49b9e5){_0x46bc4b['push'](_0x46bc4b['shift']());}};_0x26b6a3(++_0x40c24b);}(_0xacf7,0x1ec));var _0x7acf=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xacf7[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0x7acf('0x0'));var utils=require(_0x7acf('0x1'));var queues={};function writeDB(_0xc6b84e){utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x4'),_0xc6b84e[_0x7acf('0x5')],_0xc6b84e[_0x7acf('0x6')],_0xc6b84e['queue'],_0xc6b84e[_0x7acf('0x7')],_0xc6b84e['calleridnum'],_0xc6b84e[_0x7acf('0x8')],_0xc6b84e['queuecallerexitreason']));if(_0xc6b84e[_0x7acf('0x9')]){utils[_0x7acf('0xa')](_0xc6b84e[_0x7acf('0x9')])[_0x7acf('0xb')](function(_0x1a1ffa){if(_0x1a1ffa){_0xc6b84e[_0x7acf('0xc')]=_0x1a1ffa[_0x7acf('0xc')];}utils[_0x7acf('0xd')](_0x7acf('0xe'),_0xc6b84e);});}else{utils[_0x7acf('0xd')](_0x7acf('0xe'),_0xc6b84e);}if(_0xc6b84e[_0x7acf('0xf')]){delete queues[_0xc6b84e[_0x7acf('0xf')]];}else{delete queues[_0xc6b84e[_0x7acf('0x5')]];}}exports[_0x7acf('0x10')]=function(_0xdd71d3){try{utils['debug'](util[_0x7acf('0x3')](_0x7acf('0x11'),_0xdd71d3[_0x7acf('0x5')]),_0xdd71d3);utils['info'](util[_0x7acf('0x3')](_0x7acf('0x12'),_0xdd71d3[_0x7acf('0x5')],_0xdd71d3[_0x7acf('0x9')],_0xdd71d3[_0x7acf('0x13')]));queues[_0xdd71d3['uniqueid']]=_[_0x7acf('0x14')](_0xdd71d3,{'originalposition':_0xdd71d3['position'],'queuecallerjoinAt':utils[_0x7acf('0x15')](),'mohtime':0x0});}catch(_0x59d141){utils['error'](util[_0x7acf('0x3')](_0x7acf('0x11'),_0xdd71d3['uniqueid']),_0x59d141);}};exports[_0x7acf('0x16')]=function(_0x1c3c74){try{if(!_[_0x7acf('0x17')](queues[_0x1c3c74[_0x7acf('0x5')]])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x19'),_0x1c3c74[_0x7acf('0x5')]),_0x1c3c74);if(queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0x1a')]){if(!queues[_0x1c3c74[_0x7acf('0x5')]]['queuecallerabandon']&&!queues[_0x1c3c74[_0x7acf('0x5')]]['queuecallerexit']){queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0x1b')]=!![];queues[_0x1c3c74['uniqueid']][_0x7acf('0x1c')]=utils['now']();queues[_0x1c3c74['uniqueid']][_0x7acf('0x1d')]=_0x7acf('0x1e');}utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x1f'),_0x1c3c74['uniqueid'],queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0x20')],queues[_0x1c3c74['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x1c3c74[_0x7acf('0x5')]]);}else if(queues[_0x1c3c74[_0x7acf('0x5')]]['transfereduniqueid']){utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x21'),_0x1c3c74['uniqueid'],queues[_0x1c3c74[_0x7acf('0x5')]]['name'],queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0xf')]));queues[queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0xf')]]=queues[_0x1c3c74[_0x7acf('0x5')]];queues[queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0xf')]][_0x7acf('0x22')]=0x2;delete queues[_0x1c3c74[_0x7acf('0x5')]];}}}catch(_0x429481){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x19'),_0x1c3c74[_0x7acf('0x5')]),_0x429481);}};exports[_0x7acf('0x24')]=function(_0x6d322){try{utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x25'),_0x6d322[_0x7acf('0x5')]),_0x6d322);if(!_['isNil'](_0x6d322[_0x7acf('0x26')][_0x7acf('0x27')])&&_0x6d322[_0x7acf('0x28')][_0x7acf('0x29')]()!=='CONTINUE'){if(!_[_0x7acf('0x17')](queues[_0x6d322[_0x7acf('0x5')]])){queues[_0x6d322['uniqueid']][_0x7acf('0x2a')]=![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2c')]=!![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2d')]=utils[_0x7acf('0x15')]();queues[_0x6d322['uniqueid']]['queuecallerexitreason']=_0x6d322[_0x7acf('0x28')][_0x7acf('0x29')]();utils['info'](util[_0x7acf('0x3')](_0x7acf('0x2e'),_0x6d322[_0x7acf('0x5')],queues[_0x6d322['uniqueid']][_0x7acf('0x20')],_0x6d322['value'],queues[_0x6d322[_0x7acf('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x6d322[_0x7acf('0x5')]]);}}else if(!_[_0x7acf('0x17')](_0x6d322[_0x7acf('0x26')]['queueposition'])){if(!_[_0x7acf('0x17')](queues[_0x6d322[_0x7acf('0x5')]])&&!queues[_0x6d322[_0x7acf('0x5')]]['queuecallerabandon']){queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x6d322['uniqueid']][_0x7acf('0x2c')]=!![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2d')]=utils[_0x7acf('0x15')]();queues[_0x6d322['uniqueid']][_0x7acf('0x1d')]='EXITWITHKEY';utils[_0x7acf('0x2')](util['format'](_0x7acf('0x2f'),_0x6d322[_0x7acf('0x5')],queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x20')],_0x6d322['value'],queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x1d')]));}}}catch(_0x1d8e2a){utils['error'](util[_0x7acf('0x3')]('[%s][queues][varset]',_0x6d322[_0x7acf('0x5')]),_0x1d8e2a);}};exports[_0x7acf('0x2a')]=function(_0x44c775){try{if(!_[_0x7acf('0x17')](queues[_0x44c775['uniqueid']])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x30'),_0x44c775['uniqueid']),_0x44c775);queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x2c')]=![];queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x2d')]=null;queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x2a')]=!![];queues[_0x44c775['uniqueid']][_0x7acf('0x2b')]=utils['now']();queues[_0x44c775[_0x7acf('0x5')]]['queuecallerexitreason']=_0x7acf('0x31');utils[_0x7acf('0x2')](util[_0x7acf('0x3')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x44c775['uniqueid'],queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x20')],queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x1d')]));}}catch(_0x5a105f){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x30'),_0x44c775[_0x7acf('0x5')]),_0x5a105f);}};exports['queuecallerleave']=function(_0x5bfc72){try{if(!_[_0x7acf('0x17')](queues[_0x5bfc72['uniqueid']])){utils[_0x7acf('0x18')](util['format'](_0x7acf('0x32'),_0x5bfc72[_0x7acf('0x5')]),_0x5bfc72);utils[_0x7acf('0x2')](util['format'](_0x7acf('0x33'),_0x5bfc72['uniqueid'],queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x20')],_0x5bfc72[_0x7acf('0x34')],_0x5bfc72['connectedlinename']));queues[_0x5bfc72[_0x7acf('0x5')]]['queuecallerleave']=!![];queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x1a')]=utils['now']();queues[_0x5bfc72['uniqueid']][_0x7acf('0x35')]=utils[_0x7acf('0x36')](queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x1a')],queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x37')]);queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x13')]=_0x5bfc72[_0x7acf('0x13')];queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x38')]=_0x5bfc72['count'];queues[_0x5bfc72['uniqueid']][_0x7acf('0x34')]=_0x5bfc72['connectedlinenum'];queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x39')]=_0x5bfc72['connectedlinename'];}}catch(_0x35a2b4){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x32'),_0x5bfc72[_0x7acf('0x5')]),_0x35a2b4);}};exports[_0x7acf('0x3a')]=function(_0x262aeb){try{if(!_['isNil'](queues[_0x262aeb[_0x7acf('0x5')]])){utils[_0x7acf('0x18')](util['format'](_0x7acf('0x3b'),_0x262aeb['uniqueid']),_0x262aeb);utils[_0x7acf('0x2')](util[_0x7acf('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x262aeb[_0x7acf('0x5')],queues[_0x262aeb['uniqueid']][_0x7acf('0x20')],_0x262aeb[_0x7acf('0x3c')],_0x262aeb[_0x7acf('0x3d')]));queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x262aeb['uniqueid']][_0x7acf('0x2a')]=![];queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x262aeb[_0x7acf('0x5')]]['queuecallerexit']=![];queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x1d')]=null;queues[_0x262aeb[_0x7acf('0x5')]]['queuecallerexitAt']=null;queues[_0x262aeb['uniqueid']][_0x7acf('0x3e')]=!![];queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x8')]=_0x262aeb[_0x7acf('0x3d')];queues[_0x262aeb['uniqueid']]['lastAssignedTo']=_0x262aeb[_0x7acf('0x3c')];}}catch(_0x5e7697){utils['error'](util['format']('[%s][queues][agentconnect]',_0x262aeb[_0x7acf('0x5')]),_0x5e7697);}};exports[_0x7acf('0x3f')]=function(_0x5f4d24){try{if(!_[_0x7acf('0x17')](queues[_0x5f4d24[_0x7acf('0x5')]])){if(queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1a')]){utils[_0x7acf('0x18')](util['format'](_0x7acf('0x40'),_0x5f4d24[_0x7acf('0x5')]),_0x5f4d24);queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2c')]=![];queues[_0x5f4d24[_0x7acf('0x5')]]['queuecallerexitAt']=null;queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x3e')]=!![];queues[_0x5f4d24[_0x7acf('0x5')]]['lastAssignedTo']=_0x5f4d24['membername'];queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1b')]=!![];queues[_0x5f4d24['uniqueid']]['queuecallercompleteAt']=utils[_0x7acf('0x15')]();if(_0x5f4d24['reason']==_0x7acf('0x41')){if(!queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x41')]){queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1d')]=_0x7acf('0x42');}}else{queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1d')]=_0x7acf('0x43')+_0x5f4d24[_0x7acf('0x44')][_0x7acf('0x29')]();}utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x45'),_0x5f4d24['uniqueid'],queues[_0x5f4d24[_0x7acf('0x5')]]['name'],_0x5f4d24[_0x7acf('0x3c')],queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1d')]));writeDB(queues[_0x5f4d24[_0x7acf('0x5')]]);}}}catch(_0x1870b8){utils[_0x7acf('0x23')](util[_0x7acf('0x3')](_0x7acf('0x40'),_0x5f4d24[_0x7acf('0x5')]),_0x1870b8);}};exports[_0x7acf('0x46')]=function(_0x98ab2f){try{if(!_[_0x7acf('0x17')](queues[_0x98ab2f['transfereeuniqueid']])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x47'),_0x98ab2f[_0x7acf('0x5')]),_0x98ab2f);queues[_0x98ab2f[_0x7acf('0x48')]]['transfer']=!![];queues[_0x98ab2f['transfereeuniqueid']][_0x7acf('0x49')]=_0x7acf('0x4a');queues[_0x98ab2f[_0x7acf('0x48')]]['transferexten']=_0x98ab2f['extension'];queues[_0x98ab2f[_0x7acf('0x48')]][_0x7acf('0x4b')]=_0x98ab2f[_0x7acf('0x48')];queues[_0x98ab2f[_0x7acf('0x48')]][_0x7acf('0x1d')]=_0x7acf('0x4c');utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x4d'),_0x98ab2f['uniqueid'],queues[_0x98ab2f['transfereeuniqueid']][_0x7acf('0x20')],_0x98ab2f[_0x7acf('0x48')],_0x98ab2f['extension']));}}catch(_0xc42983){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x47'),_0x98ab2f[_0x7acf('0x5')]),_0xc42983);}};exports['attendedtransfer']=function(_0x255777){try{utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x4e'),_0x255777['origtransfereruniqueid']),_0x255777);if(_0x255777['origtransfereruniqueid']==_0x255777[_0x7acf('0x4f')]){if(!_[_0x7acf('0x17')](queues[_0x255777[_0x7acf('0x50')]])){utils[_0x7acf('0x2')](util[_0x7acf('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x255777[_0x7acf('0x51')],queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0x20')],_0x255777[_0x7acf('0x52')]));queues[_0x255777[_0x7acf('0x50')]]['transfer']=!![];queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0x49')]=_0x7acf('0x53');queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x54')]=_0x255777[_0x7acf('0x52')];queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x4b')]=_0x255777['origtransfereruniqueid'];queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0x1d')]=_0x7acf('0x55');}if(!_[_0x7acf('0x17')](queues[_0x255777[_0x7acf('0x4f')]])){if(_0x255777[_0x7acf('0x56')]&&queues[_0x255777[_0x7acf('0x56')]]){queues[_0x255777['transfereelinkedid']][_0x7acf('0x22')]=0x1;queues[_0x255777[_0x7acf('0x48')]]=_['clone'](queues[_0x255777['transfereelinkedid']]);queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0xf')]=_0x255777[_0x7acf('0x57')];queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x22')]=0x2;queues[_0x255777[_0x7acf('0x48')]]['calleridnum']=queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x58')];queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x59')]=queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x59')];queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x37')]=utils['now']();queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x1a')]=utils['now']();queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x35')]=0x0;queues[_0x255777['transfereeuniqueid']][_0x7acf('0x5a')]=0x0;utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x5b'),_0x255777['origtransfereruniqueid'],queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x20')],queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x58')],queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x59')]));}else{utils[_0x7acf('0x2')](util['format'](_0x7acf('0x5c'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x20')],_0x255777[_0x7acf('0x50')]));queues[_0x255777['origtransfererlinkedid']][_0x7acf('0xf')]=_0x255777['secondtransfererlinkedid'];}}}else if(_0x255777[_0x7acf('0x5d')]==_0x255777[_0x7acf('0x50')]){if(!_['isNil'](queues[_0x255777[_0x7acf('0x4f')]])){utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x5e'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x20')],_0x255777['secondtransfereruniqueid'],_0x255777[_0x7acf('0x5f')]));queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x41')]=!![];queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x49')]=_0x7acf('0x53');queues[_0x255777[_0x7acf('0x4f')]]['transferexten']=_0x255777[_0x7acf('0x5f')];queues[_0x255777['origtransfererlinkedid']][_0x7acf('0x4b')]=_0x255777[_0x7acf('0x5d')];queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x1d')]='ATTENDEDTRANSFER';}if(!_[_0x7acf('0x17')](queues[_0x255777[_0x7acf('0x50')]])){if(_0x255777[_0x7acf('0x60')]&&queues[_0x255777[_0x7acf('0x60')]]){queues[_0x255777[_0x7acf('0x60')]][_0x7acf('0x22')]=0x1;queues[_0x255777['transfertargetuniqueid']]=_[_0x7acf('0x61')](queues[_0x255777['transfertargetlinkedid']]);queues[_0x255777['transfertargetuniqueid']][_0x7acf('0xf')]=_0x255777['transfertargetuniqueid'];queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x22')]=0x2;queues[_0x255777[_0x7acf('0x57')]]['calleridnum']=queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x58')];queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x59')]=queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x59')];queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x37')]=utils[_0x7acf('0x15')]();queues[_0x255777[_0x7acf('0x57')]]['queuecallerleaveAt']=utils['now']();queues[_0x255777['transfertargetuniqueid']][_0x7acf('0x35')]=0x0;queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x5a')]=0x0;utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x62'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x57')]]['name'],queues[_0x255777[_0x7acf('0x57')]]['transfereduniqueid'],queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x58')],queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x59')]));}else{utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x5c'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x20')],_0x255777[_0x7acf('0x4f')]));queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0xf')]=_0x255777[_0x7acf('0x4f')];}}}}catch(_0x595eed){utils[_0x7acf('0x23')](util[_0x7acf('0x3')](_0x7acf('0x4e'),_0x255777[_0x7acf('0x51')]),_0x595eed);}};exports[_0x7acf('0x63')]=function(_0x559960){try{if(!_[_0x7acf('0x17')](queues[_0x559960['uniqueid']])){utils['debug'](util[_0x7acf('0x3')](_0x7acf('0x64'),_0x559960['uniqueid']),_0x559960);queues[_0x559960[_0x7acf('0x5')]][_0x7acf('0x65')]=utils[_0x7acf('0x15')]();utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x66'),_0x559960['uniqueid'],queues[_0x559960[_0x7acf('0x5')]][_0x7acf('0x20')],queues[_0x559960[_0x7acf('0x5')]]['musiconholdstartAt']));}}catch(_0x168b9b){utils['error'](util['format'](_0x7acf('0x64'),_0x559960[_0x7acf('0x5')]),_0x168b9b);}};exports[_0x7acf('0x67')]=function(_0x2f5e2e){try{if(!_['isNil'](queues[_0x2f5e2e[_0x7acf('0x5')]])){if(!_[_0x7acf('0x17')](queues[_0x2f5e2e[_0x7acf('0x5')]]['musiconholdstartAt'])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x68'),_0x2f5e2e['uniqueid']),_0x2f5e2e);queues[_0x2f5e2e[_0x7acf('0x5')]][_0x7acf('0x5a')]+=utils[_0x7acf('0x36')](utils[_0x7acf('0x15')](),queues[_0x2f5e2e[_0x7acf('0x5')]]['musiconholdstartAt']);utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x69'),_0x2f5e2e[_0x7acf('0x5')],queues[_0x2f5e2e['uniqueid']][_0x7acf('0x20')],queues[_0x2f5e2e['uniqueid']]['mohtime']));delete queues[_0x2f5e2e[_0x7acf('0x5')]][_0x7acf('0x65')];}}}catch(_0x53ccad){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x68'),_0x2f5e2e[_0x7acf('0x5')]),_0x53ccad);}};
\ No newline at end of file
+var _0x94fa=['[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','transferuniqueid','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','ATTENDED','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','queue','lastAssignedTo','accountcode','queuecallerexitreason','getVoiceQueueByName','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','uniqueid','assign','now','error','[%s][queues][queuecallerjoin]','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','debug','[%s][queues][varset]','value','isNil','queuecallerabandonAt','queuecallerexitAt','toUpperCase','variable','queueposition','queuecallerabandon','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerleave]','connectedlinename','holdtime','queuecallerjoinAt','position','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','transfertype','BLIND','transferexten','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][blindtransfer]','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid'];(function(_0x48c8f4,_0xfa8c3c){var _0x101cce=function(_0x184f4a){while(--_0x184f4a){_0x48c8f4['push'](_0x48c8f4['shift']());}};_0x101cce(++_0xfa8c3c);}(_0x94fa,0x1ae));var _0xa94f=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x94fa[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0xa94f('0x0'));var util=require(_0xa94f('0x1'));var utils=require(_0xa94f('0x2'));var queues={};function writeDB(_0x3fb75b){utils[_0xa94f('0x3')](util['format'](_0xa94f('0x4'),_0x3fb75b['uniqueid'],_0x3fb75b[_0xa94f('0x5')],_0x3fb75b[_0xa94f('0x6')],_0x3fb75b[_0xa94f('0x7')],_0x3fb75b['calleridnum'],_0x3fb75b[_0xa94f('0x8')],_0x3fb75b[_0xa94f('0x9')]));if(_0x3fb75b[_0xa94f('0x6')]){utils[_0xa94f('0xa')](_0x3fb75b[_0xa94f('0x6')])['then'](function(_0x1897db){if(_0x1897db){_0x3fb75b[_0xa94f('0xb')]=_0x1897db[_0xa94f('0xb')];}utils[_0xa94f('0xc')]('CreateVoiceQueueReport',_0x3fb75b);});}else{utils[_0xa94f('0xc')](_0xa94f('0xd'),_0x3fb75b);}if(_0x3fb75b[_0xa94f('0xe')]){delete queues[_0x3fb75b['transfereduniqueid']];}else{delete queues[_0x3fb75b['uniqueid']];}}exports[_0xa94f('0xf')]=function(_0x2a2da0){try{utils['debug'](util[_0xa94f('0x10')]('[%s][queues][queuecallerjoin]',_0x2a2da0['uniqueid']),_0x2a2da0);utils['info'](util['format'](_0xa94f('0x11'),_0x2a2da0[_0xa94f('0x12')],_0x2a2da0[_0xa94f('0x6')],_0x2a2da0['position']));queues[_0x2a2da0[_0xa94f('0x12')]]=_[_0xa94f('0x13')](_0x2a2da0,{'originalposition':_0x2a2da0['position'],'queuecallerjoinAt':utils[_0xa94f('0x14')](),'mohtime':0x0});}catch(_0x1d721e){utils[_0xa94f('0x15')](util['format'](_0xa94f('0x16'),_0x2a2da0[_0xa94f('0x12')]),_0x1d721e);}};exports[_0xa94f('0x17')]=function(_0x4b1c8e){try{if(!_['isNil'](queues[_0x4b1c8e['uniqueid']])){utils['debug'](util[_0xa94f('0x10')](_0xa94f('0x18'),_0x4b1c8e[_0xa94f('0x12')]),_0x4b1c8e);if(queues[_0x4b1c8e['uniqueid']][_0xa94f('0x19')]){if(!queues[_0x4b1c8e[_0xa94f('0x12')]]['queuecallerabandon']&&!queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0x1a')]){queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0x1b')]=!![];queues[_0x4b1c8e[_0xa94f('0x12')]]['queuecallercompleteAt']=utils[_0xa94f('0x14')]();queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0x9')]='COMPLETEDBYAGENT';}utils['info'](util[_0xa94f('0x10')](_0xa94f('0x1c'),_0x4b1c8e['uniqueid'],queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0x1d')],queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0x9')]));writeDB(queues[_0x4b1c8e['uniqueid']]);}else if(queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0xe')]){utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x1e'),_0x4b1c8e[_0xa94f('0x12')],queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0x1d')],queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0xe')]));queues[queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0xe')]]=queues[_0x4b1c8e['uniqueid']];queues[queues[_0x4b1c8e[_0xa94f('0x12')]][_0xa94f('0xe')]][_0xa94f('0x1f')]=0x2;delete queues[_0x4b1c8e[_0xa94f('0x12')]];}}}catch(_0x20f401){utils[_0xa94f('0x15')](util[_0xa94f('0x10')](_0xa94f('0x18'),_0x4b1c8e['uniqueid']),_0x20f401);}};exports[_0xa94f('0x20')]=function(_0x3d5e0b){try{utils[_0xa94f('0x21')](util[_0xa94f('0x10')](_0xa94f('0x22'),_0x3d5e0b['uniqueid']),_0x3d5e0b);if(!_['isNil'](_0x3d5e0b['variable']['queuestatus'])&&_0x3d5e0b[_0xa94f('0x23')]['toUpperCase']()!=='CONTINUE'){if(!_[_0xa94f('0x24')](queues[_0x3d5e0b[_0xa94f('0x12')]])){queues[_0x3d5e0b[_0xa94f('0x12')]]['queuecallerabandon']=![];queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x25')]=null;queues[_0x3d5e0b['uniqueid']][_0xa94f('0x1a')]=!![];queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x26')]=utils[_0xa94f('0x14')]();queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x9')]=_0x3d5e0b[_0xa94f('0x23')][_0xa94f('0x27')]();utils[_0xa94f('0x3')](util[_0xa94f('0x10')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x3d5e0b['uniqueid'],queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x1d')],_0x3d5e0b[_0xa94f('0x23')],queues[_0x3d5e0b[_0xa94f('0x12')]]['queuecallerexitreason']));writeDB(queues[_0x3d5e0b['uniqueid']]);}}else if(!_[_0xa94f('0x24')](_0x3d5e0b[_0xa94f('0x28')][_0xa94f('0x29')])){if(!_[_0xa94f('0x24')](queues[_0x3d5e0b['uniqueid']])&&!queues[_0x3d5e0b['uniqueid']][_0xa94f('0x2a')]){queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x2a')]=![];queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x25')]=null;queues[_0x3d5e0b['uniqueid']][_0xa94f('0x1a')]=!![];queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x26')]=utils['now']();queues[_0x3d5e0b['uniqueid']][_0xa94f('0x9')]=_0xa94f('0x2b');utils[_0xa94f('0x3')](util[_0xa94f('0x10')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x3d5e0b[_0xa94f('0x12')],queues[_0x3d5e0b[_0xa94f('0x12')]]['name'],_0x3d5e0b['value'],queues[_0x3d5e0b[_0xa94f('0x12')]][_0xa94f('0x9')]));}}}catch(_0x3ed28f){utils[_0xa94f('0x15')](util[_0xa94f('0x10')]('[%s][queues][varset]',_0x3d5e0b['uniqueid']),_0x3ed28f);}};exports['queuecallerabandon']=function(_0x11d48e){try{if(!_['isNil'](queues[_0x11d48e[_0xa94f('0x12')]])){utils['debug'](util[_0xa94f('0x10')](_0xa94f('0x2c'),_0x11d48e['uniqueid']),_0x11d48e);queues[_0x11d48e[_0xa94f('0x12')]][_0xa94f('0x1a')]=![];queues[_0x11d48e['uniqueid']][_0xa94f('0x26')]=null;queues[_0x11d48e[_0xa94f('0x12')]][_0xa94f('0x2a')]=!![];queues[_0x11d48e[_0xa94f('0x12')]][_0xa94f('0x25')]=utils['now']();queues[_0x11d48e[_0xa94f('0x12')]][_0xa94f('0x9')]=_0xa94f('0x2d');utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x2e'),_0x11d48e[_0xa94f('0x12')],queues[_0x11d48e[_0xa94f('0x12')]]['name'],queues[_0x11d48e[_0xa94f('0x12')]]['queuecallerexitreason']));}}catch(_0x3b7269){utils[_0xa94f('0x15')](util[_0xa94f('0x10')](_0xa94f('0x2c'),_0x11d48e[_0xa94f('0x12')]),_0x3b7269);}};exports['queuecallerleave']=function(_0x3cc61f){try{if(!_[_0xa94f('0x24')](queues[_0x3cc61f[_0xa94f('0x12')]])){utils[_0xa94f('0x21')](util[_0xa94f('0x10')](_0xa94f('0x2f'),_0x3cc61f[_0xa94f('0x12')]),_0x3cc61f);utils[_0xa94f('0x3')](util[_0xa94f('0x10')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x3cc61f['uniqueid'],queues[_0x3cc61f[_0xa94f('0x12')]][_0xa94f('0x1d')],_0x3cc61f['connectedlinenum'],_0x3cc61f[_0xa94f('0x30')]));queues[_0x3cc61f[_0xa94f('0x12')]]['queuecallerleave']=!![];queues[_0x3cc61f[_0xa94f('0x12')]][_0xa94f('0x19')]=utils[_0xa94f('0x14')]();queues[_0x3cc61f[_0xa94f('0x12')]][_0xa94f('0x31')]=utils['diffTime'](queues[_0x3cc61f[_0xa94f('0x12')]][_0xa94f('0x19')],queues[_0x3cc61f[_0xa94f('0x12')]][_0xa94f('0x32')]);queues[_0x3cc61f[_0xa94f('0x12')]]['position']=_0x3cc61f[_0xa94f('0x33')];queues[_0x3cc61f[_0xa94f('0x12')]]['count']=_0x3cc61f[_0xa94f('0x34')];queues[_0x3cc61f['uniqueid']][_0xa94f('0x35')]=_0x3cc61f[_0xa94f('0x35')];queues[_0x3cc61f[_0xa94f('0x12')]]['connectedlinename']=_0x3cc61f[_0xa94f('0x30')];}}catch(_0x322f86){utils[_0xa94f('0x15')](util[_0xa94f('0x10')](_0xa94f('0x2f'),_0x3cc61f['uniqueid']),_0x322f86);}};exports[_0xa94f('0x36')]=function(_0x523abd){try{if(!_[_0xa94f('0x24')](queues[_0x523abd[_0xa94f('0x12')]])){utils[_0xa94f('0x21')](util[_0xa94f('0x10')](_0xa94f('0x37'),_0x523abd[_0xa94f('0x12')]),_0x523abd);utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x38'),_0x523abd['uniqueid'],queues[_0x523abd['uniqueid']]['name'],_0x523abd[_0xa94f('0x39')],_0x523abd[_0xa94f('0x3a')]));queues[_0x523abd[_0xa94f('0x12')]][_0xa94f('0x2a')]=![];queues[_0x523abd['uniqueid']][_0xa94f('0x2a')]=![];queues[_0x523abd[_0xa94f('0x12')]][_0xa94f('0x25')]=null;queues[_0x523abd[_0xa94f('0x12')]][_0xa94f('0x1a')]=![];queues[_0x523abd[_0xa94f('0x12')]]['queuecallerexitreason']=null;queues[_0x523abd[_0xa94f('0x12')]][_0xa94f('0x26')]=null;queues[_0x523abd[_0xa94f('0x12')]][_0xa94f('0x3b')]=!![];queues[_0x523abd['uniqueid']][_0xa94f('0x8')]=_0x523abd[_0xa94f('0x3a')];queues[_0x523abd[_0xa94f('0x12')]]['lastAssignedTo']=_0x523abd['membername'];}}catch(_0x45cca5){utils[_0xa94f('0x15')](util[_0xa94f('0x10')]('[%s][queues][agentconnect]',_0x523abd[_0xa94f('0x12')]),_0x45cca5);}};exports[_0xa94f('0x3c')]=function(_0x11cd23){try{if(!_[_0xa94f('0x24')](queues[_0x11cd23[_0xa94f('0x12')]])){if(queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x19')]){utils[_0xa94f('0x21')](util[_0xa94f('0x10')]('[%s][queues][agentcomplete]',_0x11cd23[_0xa94f('0x12')]),_0x11cd23);queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x2a')]=![];queues[_0x11cd23[_0xa94f('0x12')]]['queuecallerabandon']=![];queues[_0x11cd23[_0xa94f('0x12')]]['queuecallerabandonAt']=null;queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x1a')]=![];queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x26')]=null;queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x3b')]=!![];queues[_0x11cd23[_0xa94f('0x12')]]['lastAssignedTo']=_0x11cd23[_0xa94f('0x39')];queues[_0x11cd23[_0xa94f('0x12')]]['queuecallercomplete']=!![];queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x3d')]=utils['now']();if(_0x11cd23[_0xa94f('0x3e')]==_0xa94f('0x3f')){if(!queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x3f')]){queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x9')]=_0xa94f('0x40');}}else{queues[_0x11cd23['uniqueid']][_0xa94f('0x9')]=_0xa94f('0x41')+_0x11cd23[_0xa94f('0x3e')][_0xa94f('0x27')]();}utils['info'](util[_0xa94f('0x10')](_0xa94f('0x42'),_0x11cd23[_0xa94f('0x12')],queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x1d')],_0x11cd23[_0xa94f('0x39')],queues[_0x11cd23[_0xa94f('0x12')]][_0xa94f('0x9')]));writeDB(queues[_0x11cd23[_0xa94f('0x12')]]);}}}catch(_0x4b5147){utils[_0xa94f('0x15')](util[_0xa94f('0x10')](_0xa94f('0x43'),_0x11cd23[_0xa94f('0x12')]),_0x4b5147);}};exports[_0xa94f('0x44')]=function(_0x4f5372){try{if(!_['isNil'](queues[_0x4f5372[_0xa94f('0x45')]])){utils[_0xa94f('0x21')](util['format']('[%s][queues][blindtransfer]',_0x4f5372[_0xa94f('0x12')]),_0x4f5372);queues[_0x4f5372[_0xa94f('0x45')]][_0xa94f('0x3f')]=!![];queues[_0x4f5372[_0xa94f('0x45')]][_0xa94f('0x46')]=_0xa94f('0x47');queues[_0x4f5372[_0xa94f('0x45')]][_0xa94f('0x48')]=_0x4f5372['extension'];queues[_0x4f5372[_0xa94f('0x45')]]['transferuniqueid']=_0x4f5372[_0xa94f('0x45')];queues[_0x4f5372[_0xa94f('0x45')]][_0xa94f('0x9')]='BLINDTRANSFER';utils[_0xa94f('0x3')](util['format'](_0xa94f('0x49'),_0x4f5372['uniqueid'],queues[_0x4f5372[_0xa94f('0x45')]][_0xa94f('0x1d')],_0x4f5372['transfereeuniqueid'],_0x4f5372['extension']));}}catch(_0x4f3ff8){utils[_0xa94f('0x15')](util[_0xa94f('0x10')](_0xa94f('0x4a'),_0x4f5372[_0xa94f('0x12')]),_0x4f3ff8);}};exports[_0xa94f('0x4b')]=function(_0x56fd3a){try{utils[_0xa94f('0x21')](util[_0xa94f('0x10')](_0xa94f('0x4c'),_0x56fd3a[_0xa94f('0x4d')]),_0x56fd3a);if(_0x56fd3a['origtransfereruniqueid']==_0x56fd3a[_0xa94f('0x4e')]){if(!_[_0xa94f('0x24')](queues[_0x56fd3a[_0xa94f('0x4f')]])){utils[_0xa94f('0x3')](util['format'](_0xa94f('0x50'),_0x56fd3a[_0xa94f('0x4d')],queues[_0x56fd3a[_0xa94f('0x4f')]][_0xa94f('0x1d')],_0x56fd3a[_0xa94f('0x51')]));queues[_0x56fd3a[_0xa94f('0x4f')]][_0xa94f('0x3f')]=!![];queues[_0x56fd3a[_0xa94f('0x4f')]]['transfertype']='ATTENDED';queues[_0x56fd3a[_0xa94f('0x4f')]]['transferexten']=_0x56fd3a[_0xa94f('0x51')];queues[_0x56fd3a['secondtransfererlinkedid']][_0xa94f('0x52')]=_0x56fd3a[_0xa94f('0x4d')];queues[_0x56fd3a[_0xa94f('0x4f')]][_0xa94f('0x9')]='ATTENDEDTRANSFER';}if(!_[_0xa94f('0x24')](queues[_0x56fd3a[_0xa94f('0x4e')]])){if(_0x56fd3a[_0xa94f('0x53')]&&queues[_0x56fd3a[_0xa94f('0x53')]]){queues[_0x56fd3a[_0xa94f('0x53')]][_0xa94f('0x1f')]=0x1;queues[_0x56fd3a[_0xa94f('0x45')]]=_['clone'](queues[_0x56fd3a[_0xa94f('0x53')]]);queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0xe')]=_0x56fd3a[_0xa94f('0x54')];queues[_0x56fd3a[_0xa94f('0x45')]]['queuecallerenterreason']=0x2;queues[_0x56fd3a['transfereeuniqueid']][_0xa94f('0x55')]=queues[_0x56fd3a[_0xa94f('0x4f')]][_0xa94f('0x55')];queues[_0x56fd3a['transfereeuniqueid']][_0xa94f('0x56')]=queues[_0x56fd3a['secondtransfererlinkedid']][_0xa94f('0x56')];queues[_0x56fd3a['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0xa94f('0x14')]();queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0x19')]=utils[_0xa94f('0x14')]();queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0x31')]=0x0;queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0x57')]=0x0;utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x58'),_0x56fd3a['origtransfereruniqueid'],queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0x1d')],queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0x55')],queues[_0x56fd3a[_0xa94f('0x45')]][_0xa94f('0x56')]));}else{utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x59'),_0x56fd3a['origtransfereruniqueid'],queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x1d')],_0x56fd3a['secondtransfererlinkedid']));queues[_0x56fd3a['origtransfererlinkedid']][_0xa94f('0xe')]=_0x56fd3a[_0xa94f('0x4f')];}}}else if(_0x56fd3a['secondtransfereruniqueid']==_0x56fd3a[_0xa94f('0x4f')]){if(!_[_0xa94f('0x24')](queues[_0x56fd3a[_0xa94f('0x4e')]])){utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x5a'),_0x56fd3a[_0xa94f('0x4d')],queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x1d')],_0x56fd3a[_0xa94f('0x5b')],_0x56fd3a[_0xa94f('0x5c')]));queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x3f')]=!![];queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x46')]=_0xa94f('0x5d');queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x48')]=_0x56fd3a['secondtransfererexten'];queues[_0x56fd3a[_0xa94f('0x4e')]]['transferuniqueid']=_0x56fd3a[_0xa94f('0x5b')];queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x9')]='ATTENDEDTRANSFER';}if(!_[_0xa94f('0x24')](queues[_0x56fd3a[_0xa94f('0x4f')]])){if(_0x56fd3a[_0xa94f('0x5e')]&&queues[_0x56fd3a[_0xa94f('0x5e')]]){queues[_0x56fd3a[_0xa94f('0x5e')]][_0xa94f('0x1f')]=0x1;queues[_0x56fd3a[_0xa94f('0x54')]]=_[_0xa94f('0x5f')](queues[_0x56fd3a['transfertargetlinkedid']]);queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0xe')]=_0x56fd3a[_0xa94f('0x54')];queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0x1f')]=0x2;queues[_0x56fd3a['transfertargetuniqueid']][_0xa94f('0x55')]=queues[_0x56fd3a[_0xa94f('0x4e')]][_0xa94f('0x55')];queues[_0x56fd3a['transfertargetuniqueid']][_0xa94f('0x56')]=queues[_0x56fd3a['origtransfererlinkedid']][_0xa94f('0x56')];queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0x32')]=utils['now']();queues[_0x56fd3a['transfertargetuniqueid']]['queuecallerleaveAt']=utils[_0xa94f('0x14')]();queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0x31')]=0x0;queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0x57')]=0x0;utils[_0xa94f('0x3')](util['format'](_0xa94f('0x60'),_0x56fd3a['origtransfereruniqueid'],queues[_0x56fd3a['transfertargetuniqueid']]['name'],queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0xe')],queues[_0x56fd3a[_0xa94f('0x54')]][_0xa94f('0x55')],queues[_0x56fd3a['transfertargetuniqueid']]['calleridname']));}else{utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x59'),_0x56fd3a[_0xa94f('0x4d')],queues[_0x56fd3a[_0xa94f('0x4f')]][_0xa94f('0x1d')],_0x56fd3a[_0xa94f('0x4e')]));queues[_0x56fd3a[_0xa94f('0x4f')]][_0xa94f('0xe')]=_0x56fd3a[_0xa94f('0x4e')];}}}}catch(_0x551b6f){utils[_0xa94f('0x15')](util[_0xa94f('0x10')](_0xa94f('0x4c'),_0x56fd3a[_0xa94f('0x4d')]),_0x551b6f);}};exports['musiconholdstart']=function(_0x2830ea){try{if(!_['isNil'](queues[_0x2830ea[_0xa94f('0x12')]])){utils[_0xa94f('0x21')](util['format']('[%s][queues][musiconholdstart]',_0x2830ea['uniqueid']),_0x2830ea);queues[_0x2830ea[_0xa94f('0x12')]][_0xa94f('0x61')]=utils[_0xa94f('0x14')]();utils[_0xa94f('0x3')](util[_0xa94f('0x10')](_0xa94f('0x62'),_0x2830ea[_0xa94f('0x12')],queues[_0x2830ea['uniqueid']][_0xa94f('0x1d')],queues[_0x2830ea[_0xa94f('0x12')]]['musiconholdstartAt']));}}catch(_0x48071f){utils[_0xa94f('0x15')](util[_0xa94f('0x10')]('[%s][queues][musiconholdstart]',_0x2830ea[_0xa94f('0x12')]),_0x48071f);}};exports['musiconholdstop']=function(_0x485551){try{if(!_[_0xa94f('0x24')](queues[_0x485551[_0xa94f('0x12')]])){if(!_['isNil'](queues[_0x485551['uniqueid']]['musiconholdstartAt'])){utils[_0xa94f('0x21')](util['format'](_0xa94f('0x63'),_0x485551[_0xa94f('0x12')]),_0x485551);queues[_0x485551[_0xa94f('0x12')]][_0xa94f('0x57')]+=utils[_0xa94f('0x64')](utils[_0xa94f('0x14')](),queues[_0x485551[_0xa94f('0x12')]][_0xa94f('0x61')]);utils[_0xa94f('0x3')](util['format'](_0xa94f('0x65'),_0x485551[_0xa94f('0x12')],queues[_0x485551[_0xa94f('0x12')]]['name'],queues[_0x485551[_0xa94f('0x12')]]['mohtime']));delete queues[_0x485551[_0xa94f('0x12')]]['musiconholdstartAt'];}}}catch(_0x969a72){utils[_0xa94f('0x15')](util['format'](_0xa94f('0x63'),_0x485551[_0xa94f('0x12')]),_0x969a72);}};
\ No newline at end of file
index 67dbc95..ff19b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf029=['application','appdata','set','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','util','./utils','format','[%s][recordings][writeDB]','uniqueid','accountcode','then','UserId','request','CreateVoiceRecording','debug','[%s][recordings][newchannel]','context','exten','channel','newstate','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','linkedid','transfer','info','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','[%s][recordings][newstate]','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','replace','.wav49','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','outbound','forEach','clone','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s'];(function(_0x270eaf,_0x199fc2){var _0x5ef1d9=function(_0x380cea){while(--_0x380cea){_0x270eaf['push'](_0x270eaf['shift']());}};_0x5ef1d9(++_0x199fc2);}(_0xf029,0x8e));var _0x9f02=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xf029[_0x51020b];return _0x371e47;};'use strict';var _=require('lodash');var util=require(_0x9f02('0x0'));var utils=require(_0x9f02('0x1'));var recordings={};function writeDB(_0x2380c0){utils['info'](util[_0x9f02('0x2')](_0x9f02('0x3'),_0x2380c0[_0x9f02('0x4')]));if(_0x2380c0[_0x9f02('0x5')]){utils['getUserByInternal'](_0x2380c0[_0x9f02('0x5')])[_0x9f02('0x6')](function(_0x478668){if(_0x478668){_0x2380c0['membername']=_0x478668['name'];_0x2380c0[_0x9f02('0x7')]=_0x478668['id'];}utils[_0x9f02('0x8')](_0x9f02('0x9'),_0x2380c0);});}else{utils['request'](_0x9f02('0x9'),_0x2380c0);}}exports['newchannel']=function(_0x45c25e){try{utils[_0x9f02('0xa')](util[_0x9f02('0x2')](_0x9f02('0xb'),_0x45c25e[_0x9f02('0x4')]),_0x45c25e);if(_0x45c25e[_0x9f02('0x4')]==_0x45c25e['linkedid']){utils['info'](util[_0x9f02('0x2')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x45c25e[_0x9f02('0x4')],_0x45c25e[_0x9f02('0xc')],_0x45c25e[_0x9f02('0xd')]));recordings[_0x45c25e[_0x9f02('0x4')]]={'uniqueid':_0x45c25e[_0x9f02('0x4')],'accountcode':_0x45c25e[_0x9f02('0x5')],'exten':_0x45c25e[_0x9f02('0xd')],'context':_0x45c25e[_0x9f02('0xc')],'channel':_0x45c25e[_0x9f02('0xe')],'monitors':[]};}}catch(_0x281af9){utils['error'](util['format'](_0x9f02('0xb'),_0x45c25e['uniqueid']),_0x281af9);}};exports[_0x9f02('0xf')]=function(_0x45a96c){try{utils[_0x9f02('0xa')](util['format']('[%s][recordings][newstate]',_0x45a96c[_0x9f02('0x4')]),_0x45a96c);if(!_[_0x9f02('0x10')](recordings[_0x45a96c['uniqueid']])&&_0x45a96c[_0x9f02('0x11')]==0x6){utils['info'](util['format'](_0x9f02('0x12'),_0x45a96c['uniqueid'],_0x45a96c[_0x9f02('0xc')],_0x45a96c[_0x9f02('0xe')]));}else if(!_[_0x9f02('0x10')](recordings[_0x45a96c[_0x9f02('0x13')]])&&_0x45a96c[_0x9f02('0x11')]==0x6&&_0x45a96c[_0x9f02('0xc')]!=_0x9f02('0x14')){utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x16'),_0x45a96c[_0x9f02('0x4')],_0x45a96c[_0x9f02('0x13')],_0x45a96c['context'],_0x45a96c[_0x9f02('0xe')]));recordings[_0x45a96c['linkedid']][_0x9f02('0x5')]=_0x45a96c['accountcode'];}}catch(_0x3c0e3c){utils[_0x9f02('0x17')](util[_0x9f02('0x2')](_0x9f02('0x18'),_0x45a96c[_0x9f02('0x4')]),_0x3c0e3c);}};exports[_0x9f02('0x19')]=function(_0x284b19){try{if(!_[_0x9f02('0x10')](_0x284b19[_0x9f02('0x1a')])&&!_['isNil'](_0x284b19[_0x9f02('0x1a')][_0x9f02('0x1b')])){utils['debug'](util[_0x9f02('0x2')](_0x9f02('0x1c'),_0x284b19[_0x9f02('0x4')]),_0x284b19);utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x1d'),_0x284b19[_0x9f02('0x4')],_0x284b19[_0x9f02('0x1a')],_0x284b19['value']));if(_['endsWith'](_0x284b19[_0x9f02('0x1e')],'.wav49')){_0x284b19['value']=_0x284b19[_0x9f02('0x1e')][_0x9f02('0x1f')](_0x9f02('0x20'),_0x9f02('0x21'));}if(recordings[_0x284b19[_0x9f02('0x13')]]){var _0x476a03=_[_0x9f02('0x22')](recordings[_0x284b19['linkedid']][_0x9f02('0x23')],{'value':_0x284b19['value']});if(_[_0x9f02('0x10')](_0x476a03)){recordings[_0x284b19['linkedid']][_0x9f02('0x23')][_0x9f02('0x24')]({'value':_0x284b19[_0x9f02('0x1e')]});}}}}catch(_0x46cb4f){utils['error'](util[_0x9f02('0x2')]('[%s][recordings][varset]',_0x284b19[_0x9f02('0x4')]),_0x46cb4f);}};exports[_0x9f02('0x25')]=function(_0x17d273){try{if(!_[_0x9f02('0x10')](recordings[_0x17d273[_0x9f02('0x4')]])){utils[_0x9f02('0xa')](util['format'](_0x9f02('0x26'),_0x17d273[_0x9f02('0x4')]),_0x17d273);utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x27'),_0x17d273[_0x9f02('0x4')],_0x17d273[_0x9f02('0x28')],_0x17d273[_0x9f02('0x29')],_0x17d273[_0x9f02('0x2a')]));recordings[_0x17d273[_0x9f02('0x4')]][_0x9f02('0x28')]=_0x17d273['calleridnum'];recordings[_0x17d273[_0x9f02('0x4')]]['calleridname']=_0x17d273[_0x9f02('0x29')];recordings[_0x17d273[_0x9f02('0x4')]]['connectedlinenum']=_0x17d273[_0x9f02('0x2b')];recordings[_0x17d273['uniqueid']][_0x9f02('0x2c')]=_0x17d273[_0x9f02('0x2c')];if(recordings[_0x17d273[_0x9f02('0x4')]]['type']==_0x9f02('0x2d')&&recordings[_0x17d273['uniqueid']][_0x9f02('0x5')]){recordings[_0x17d273[_0x9f02('0x4')]]['connectedlinenum']=recordings[_0x17d273['uniqueid']]['accountcode'];recordings[_0x17d273['uniqueid']][_0x9f02('0x2c')]='';}recordings[_0x17d273['uniqueid']][_0x9f02('0x23')][_0x9f02('0x2e')](function(_0x1cbb89){var _0x30b41c=_[_0x9f02('0x2f')](recordings[_0x17d273[_0x9f02('0x4')]]);_0x30b41c[_0x9f02('0x1e')]=_0x1cbb89[_0x9f02('0x1e')];writeDB(_0x30b41c);});delete recordings[_0x17d273['uniqueid']];}}catch(_0x502130){utils[_0x9f02('0x17')](util['format'](_0x9f02('0x26'),_0x17d273['uniqueid']),_0x502130);}};exports[_0x9f02('0x30')]=function(_0x2c02c6){try{if(!_[_0x9f02('0x10')](recordings[_0x2c02c6['uniqueid']])){utils[_0x9f02('0xa')](util[_0x9f02('0x2')]('[%s][recordings][newexten]',_0x2c02c6[_0x9f02('0x4')]),_0x2c02c6);utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x31'),_0x2c02c6[_0x9f02('0x4')],_0x2c02c6[_0x9f02('0x32')],_0x2c02c6[_0x9f02('0x33')]));if(_0x2c02c6[_0x9f02('0x32')]['toLowerCase']()==_0x9f02('0x34')&&_[_0x9f02('0x35')](_0x2c02c6['appdata'][_0x9f02('0x36')](),_0x9f02('0x37'))){var _0x37453e=_0x2c02c6['appdata'][_0x9f02('0x38')]('=');var _0x2da6da=_0x37453e[0x0][_0x9f02('0x39')](_0x37453e[0x0]['lastIndexOf']('(')+0x1,_0x37453e[0x0][_0x9f02('0x3a')](')'));var _0x2e2995=_0x37453e[0x1];recordings[_0x2c02c6[_0x9f02('0x4')]][_0x2da6da]=_0x2e2995;}}}catch(_0x232637){utils[_0x9f02('0x17')](util[_0x9f02('0x2')](_0x9f02('0x3b'),_0x2c02c6[_0x9f02('0x4')]),_0x232637);}};exports[_0x9f02('0x3c')]=function(_0x5f5336){try{if(!_[_0x9f02('0x10')](recordings[_0x5f5336[_0x9f02('0x4')]])){utils['debug'](util[_0x9f02('0x2')]('[%s][recordings][queuecallerjoin]',_0x5f5336[_0x9f02('0x4')]),_0x5f5336);utils[_0x9f02('0x15')](util['format'](_0x9f02('0x3d'),_0x5f5336[_0x9f02('0x4')],_0x5f5336[_0x9f02('0x3e')]));recordings[_0x5f5336[_0x9f02('0x4')]][_0x9f02('0x3e')]=_0x5f5336[_0x9f02('0x3e')];}}catch(_0x502eed){utils[_0x9f02('0x17')](util[_0x9f02('0x2')](_0x9f02('0x3f'),_0x5f5336[_0x9f02('0x4')]),_0x502eed);}};
\ No newline at end of file
+var _0xe22e=['.wav49','replace','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','application','appdata','toLowerCase','set','cdr','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','queue','lodash','./utils','format','accountcode','getUserByInternal','membername','UserId','request','CreateVoiceRecording','newchannel','debug','uniqueid','info','exten','newstate','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channel','linkedid','transfer','context','error','[%s][recordings][newstate]','varset','isNil','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith'];(function(_0x5df2df,_0x34d2f5){var _0x69a0af=function(_0x5241d2){while(--_0x5241d2){_0x5df2df['push'](_0x5df2df['shift']());}};_0x69a0af(++_0x34d2f5);}(_0xe22e,0x143));var _0xee22=function(_0x5b7f48,_0x4d8a1d){_0x5b7f48=_0x5b7f48-0x0;var _0x2424b0=_0xe22e[_0x5b7f48];return _0x2424b0;};'use strict';var _=require(_0xee22('0x0'));var util=require('util');var utils=require(_0xee22('0x1'));var recordings={};function writeDB(_0x2f716d){utils['info'](util[_0xee22('0x2')]('[%s][recordings][writeDB]',_0x2f716d['uniqueid']));if(_0x2f716d[_0xee22('0x3')]){utils[_0xee22('0x4')](_0x2f716d[_0xee22('0x3')])['then'](function(_0x55f463){if(_0x55f463){_0x2f716d[_0xee22('0x5')]=_0x55f463['name'];_0x2f716d[_0xee22('0x6')]=_0x55f463['id'];}utils[_0xee22('0x7')](_0xee22('0x8'),_0x2f716d);});}else{utils[_0xee22('0x7')]('CreateVoiceRecording',_0x2f716d);}}exports[_0xee22('0x9')]=function(_0x2b8be6){try{utils[_0xee22('0xa')](util[_0xee22('0x2')]('[%s][recordings][newchannel]',_0x2b8be6[_0xee22('0xb')]),_0x2b8be6);if(_0x2b8be6[_0xee22('0xb')]==_0x2b8be6['linkedid']){utils[_0xee22('0xc')](util[_0xee22('0x2')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x2b8be6[_0xee22('0xb')],_0x2b8be6['context'],_0x2b8be6[_0xee22('0xd')]));recordings[_0x2b8be6['uniqueid']]={'uniqueid':_0x2b8be6[_0xee22('0xb')],'accountcode':_0x2b8be6[_0xee22('0x3')],'exten':_0x2b8be6['exten'],'context':_0x2b8be6['context'],'channel':_0x2b8be6['channel'],'monitors':[]};}}catch(_0x2101ca){utils['error'](util[_0xee22('0x2')]('[%s][recordings][newchannel]',_0x2b8be6[_0xee22('0xb')]),_0x2101ca);}};exports[_0xee22('0xe')]=function(_0x140bf2){try{utils[_0xee22('0xa')](util[_0xee22('0x2')]('[%s][recordings][newstate]',_0x140bf2[_0xee22('0xb')]),_0x140bf2);if(!_['isNil'](recordings[_0x140bf2['uniqueid']])&&_0x140bf2[_0xee22('0xf')]==0x6){utils[_0xee22('0xc')](util[_0xee22('0x2')](_0xee22('0x10'),_0x140bf2[_0xee22('0xb')],_0x140bf2['context'],_0x140bf2[_0xee22('0x11')]));}else if(!_['isNil'](recordings[_0x140bf2[_0xee22('0x12')]])&&_0x140bf2[_0xee22('0xf')]==0x6&&_0x140bf2['context']!=_0xee22('0x13')){utils['info'](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x140bf2['uniqueid'],_0x140bf2['linkedid'],_0x140bf2[_0xee22('0x14')],_0x140bf2[_0xee22('0x11')]));recordings[_0x140bf2['linkedid']][_0xee22('0x3')]=_0x140bf2['accountcode'];}}catch(_0x53465c){utils[_0xee22('0x15')](util[_0xee22('0x2')](_0xee22('0x16'),_0x140bf2['uniqueid']),_0x53465c);}};exports[_0xee22('0x17')]=function(_0x195a64){try{if(!_[_0xee22('0x18')](_0x195a64[_0xee22('0x19')])&&!_[_0xee22('0x18')](_0x195a64[_0xee22('0x19')][_0xee22('0x1a')])){utils['debug'](util[_0xee22('0x2')](_0xee22('0x1b'),_0x195a64['uniqueid']),_0x195a64);utils['info'](util[_0xee22('0x2')](_0xee22('0x1c'),_0x195a64[_0xee22('0xb')],_0x195a64[_0xee22('0x19')],_0x195a64[_0xee22('0x1d')]));if(_[_0xee22('0x1e')](_0x195a64[_0xee22('0x1d')],_0xee22('0x1f'))){_0x195a64['value']=_0x195a64['value'][_0xee22('0x20')](_0xee22('0x1f'),'.WAV');}if(recordings[_0x195a64[_0xee22('0x12')]]){var _0x2191be=_[_0xee22('0x21')](recordings[_0x195a64['linkedid']][_0xee22('0x22')],{'value':_0x195a64[_0xee22('0x1d')]});if(_[_0xee22('0x18')](_0x2191be)){recordings[_0x195a64['linkedid']][_0xee22('0x22')][_0xee22('0x23')]({'value':_0x195a64[_0xee22('0x1d')]});}}}}catch(_0x19a89a){utils[_0xee22('0x15')](util['format'](_0xee22('0x1b'),_0x195a64['uniqueid']),_0x19a89a);}};exports[_0xee22('0x24')]=function(_0x35da83){try{if(!_[_0xee22('0x18')](recordings[_0x35da83[_0xee22('0xb')]])){utils[_0xee22('0xa')](util[_0xee22('0x2')](_0xee22('0x25'),_0x35da83[_0xee22('0xb')]),_0x35da83);utils[_0xee22('0xc')](util[_0xee22('0x2')](_0xee22('0x26'),_0x35da83[_0xee22('0xb')],_0x35da83[_0xee22('0x27')],_0x35da83[_0xee22('0x28')],_0x35da83[_0xee22('0x29')]));recordings[_0x35da83[_0xee22('0xb')]][_0xee22('0x27')]=_0x35da83[_0xee22('0x27')];recordings[_0x35da83[_0xee22('0xb')]][_0xee22('0x28')]=_0x35da83[_0xee22('0x28')];recordings[_0x35da83[_0xee22('0xb')]][_0xee22('0x2a')]=_0x35da83[_0xee22('0x2a')];recordings[_0x35da83['uniqueid']][_0xee22('0x2b')]=_0x35da83['connectedlinename'];if(recordings[_0x35da83[_0xee22('0xb')]][_0xee22('0x2c')]==_0xee22('0x2d')&&recordings[_0x35da83['uniqueid']][_0xee22('0x3')]){recordings[_0x35da83[_0xee22('0xb')]]['connectedlinenum']=recordings[_0x35da83[_0xee22('0xb')]][_0xee22('0x3')];recordings[_0x35da83['uniqueid']]['connectedlinename']='';}recordings[_0x35da83['uniqueid']][_0xee22('0x22')][_0xee22('0x2e')](function(_0xcda4d4){var _0x4fff98=_[_0xee22('0x2f')](recordings[_0x35da83[_0xee22('0xb')]]);_0x4fff98[_0xee22('0x1d')]=_0xcda4d4['value'];writeDB(_0x4fff98);});delete recordings[_0x35da83[_0xee22('0xb')]];}}catch(_0x242363){utils['error'](util[_0xee22('0x2')](_0xee22('0x25'),_0x35da83[_0xee22('0xb')]),_0x242363);}};exports[_0xee22('0x30')]=function(_0x52396){try{if(!_[_0xee22('0x18')](recordings[_0x52396[_0xee22('0xb')]])){utils[_0xee22('0xa')](util[_0xee22('0x2')](_0xee22('0x31'),_0x52396[_0xee22('0xb')]),_0x52396);utils[_0xee22('0xc')](util[_0xee22('0x2')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x52396[_0xee22('0xb')],_0x52396[_0xee22('0x32')],_0x52396[_0xee22('0x33')]));if(_0x52396[_0xee22('0x32')][_0xee22('0x34')]()==_0xee22('0x35')&&_['startsWith'](_0x52396[_0xee22('0x33')]['toLowerCase'](),_0xee22('0x36'))){var _0x51838b=_0x52396['appdata']['split']('=');var _0x280b5e=_0x51838b[0x0][_0xee22('0x37')](_0x51838b[0x0][_0xee22('0x38')]('(')+0x1,_0x51838b[0x0][_0xee22('0x38')](')'));var _0x1451c2=_0x51838b[0x1];recordings[_0x52396[_0xee22('0xb')]][_0x280b5e]=_0x1451c2;}}}catch(_0x9ae1f2){utils[_0xee22('0x15')](util[_0xee22('0x2')](_0xee22('0x31'),_0x52396[_0xee22('0xb')]),_0x9ae1f2);}};exports['queuecallerjoin']=function(_0x16e9ca){try{if(!_[_0xee22('0x18')](recordings[_0x16e9ca['uniqueid']])){utils['debug'](util[_0xee22('0x2')](_0xee22('0x39'),_0x16e9ca[_0xee22('0xb')]),_0x16e9ca);utils[_0xee22('0xc')](util[_0xee22('0x2')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x16e9ca[_0xee22('0xb')],_0x16e9ca[_0xee22('0x3a')]));recordings[_0x16e9ca['uniqueid']][_0xee22('0x3a')]=_0x16e9ca[_0xee22('0x3a')];}}catch(_0x3a98fe){utils[_0xee22('0x15')](util[_0xee22('0x2')](_0xee22('0x39'),_0x16e9ca['uniqueid']),_0x3a98fe);}};
\ No newline at end of file
index 376e245..daeb368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7da=['blinds','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','attended','isNil','transfereechannel','assign','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','lodash','util','./utils','info','format','type','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport'];(function(_0x2c0be1,_0x1e88f2){var _0x3d4bd2=function(_0x2b5497){while(--_0x2b5497){_0x2c0be1['push'](_0x2c0be1['shift']());}};_0x3d4bd2(++_0x1e88f2);}(_0xe7da,0x1cb));var _0xae7d=function(_0x5e0240,_0x30ee55){_0x5e0240=_0x5e0240-0x0;var _0x3d0a40=_0xe7da[_0x5e0240];return _0x3d0a40;};'use strict';var _=require(_0xae7d('0x0'));var util=require(_0xae7d('0x1'));var utils=require(_0xae7d('0x2'));function writeDB(_0x549b76){utils[_0xae7d('0x3')](util[_0xae7d('0x4')]('[%s][transfers][writeDB]\x20type:%s',_0x549b76[_0xae7d('0x5')]==='attended'?_0x549b76[_0xae7d('0x6')]:_0x549b76[_0xae7d('0x7')],_0x549b76[_0xae7d('0x5')]));utils['request'](_0xae7d('0x8'),_0x549b76);}exports[_0xae7d('0x9')]={};exports['blindtransfer']=function(_0x3fee7e){try{utils[_0xae7d('0xa')](util[_0xae7d('0x4')](_0xae7d('0xb'),_0x3fee7e[_0xae7d('0x7')]),_0x3fee7e);utils[_0xae7d('0x3')](util[_0xae7d('0x4')](_0xae7d('0xc'),_0x3fee7e['uniqueid'],_0x3fee7e[_0xae7d('0xd')],_0x3fee7e[_0xae7d('0xe')],_0x3fee7e[_0xae7d('0xf')],_0x3fee7e[_0xae7d('0x10')]));_0x3fee7e[_0xae7d('0x5')]=_0xae7d('0x11');exports['blinds'][_0x3fee7e[_0xae7d('0x12')]]=_0x3fee7e;writeDB(_0x3fee7e);}catch(_0x1cd284){utils[_0xae7d('0x13')](util[_0xae7d('0x4')](_0xae7d('0xb'),_0x3fee7e['uniqueid']),_0x1cd284);}};exports[_0xae7d('0x14')]=function(_0x173206){try{utils['debug'](util[_0xae7d('0x4')](_0xae7d('0x15'),_0x173206[_0xae7d('0x6')]),_0x173206);utils[_0xae7d('0x3')](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x173206[_0xae7d('0x6')],_0x173206[_0xae7d('0x16')],_0x173206[_0xae7d('0x17')],_0x173206[_0xae7d('0x18')],_0x173206[_0xae7d('0x19')]));_0x173206=_['assign'](_0x173206,{'transfererchannel':_0x173206[_0xae7d('0x1a')],'transferercalleridnum':_0x173206[_0xae7d('0x16')],'transferercalleridname':_0x173206[_0xae7d('0x17')],'transfererconnectedlinenum':_0x173206['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x173206[_0xae7d('0x1b')],'transfereraccountcode':_0x173206[_0xae7d('0x1c')],'transferercontext':_0x173206[_0xae7d('0x1d')],'transfererexten':_0x173206['secondtransfererexten'],'transfererlinkedid':_0x173206[_0xae7d('0x1e')],'context':_0x173206['origtransferercontext'],'extension':_0x173206['origtransfererexten'],'type':_0xae7d('0x1f')});if(_[_0xae7d('0x20')](_0x173206[_0xae7d('0x21')])){_0x173206=_[_0xae7d('0x22')](_0x173206,{'transfereechannel':_0x173206['transfertargetchannel'],'transfereecalleridnum':_0x173206[_0xae7d('0x18')],'transfereecalleridname':_0x173206['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x173206['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x173206[_0xae7d('0x23')],'transfereeaccountcode':_0x173206[_0xae7d('0x24')],'transfereecontext':_0x173206[_0xae7d('0x25')],'transfereeexten':_0x173206['transfertargetexten'],'transfereelinkedid':_0x173206[_0xae7d('0x26')]});}writeDB(_0x173206);}catch(_0x493663){utils[_0xae7d('0x13')](util['format'](_0xae7d('0x15'),_0x173206[_0xae7d('0x6')]),_0x493663);}};
\ No newline at end of file
+var _0x520a=['origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','attended','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','lodash','util','./utils','origtransfereruniqueid','uniqueid','request','CreateVoiceTransferReport','blindtransfer','debug','format','[%s][transfers][blindtransfer]','info','transferercalleridnum','transfereecalleridnum','transfereecalleridname','type','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','secondtransfererconnectedlinename'];(function(_0x3844ab,_0x461e40){var _0x2a3276=function(_0x1d1176){while(--_0x1d1176){_0x3844ab['push'](_0x3844ab['shift']());}};_0x2a3276(++_0x461e40);}(_0x520a,0xad));var _0xa520=function(_0x517ba7,_0x2656ab){_0x517ba7=_0x517ba7-0x0;var _0x3cafad=_0x520a[_0x517ba7];return _0x3cafad;};'use strict';var _=require(_0xa520('0x0'));var util=require(_0xa520('0x1'));var utils=require(_0xa520('0x2'));function writeDB(_0x558eba){utils['info'](util['format']('[%s][transfers][writeDB]\x20type:%s',_0x558eba['type']==='attended'?_0x558eba[_0xa520('0x3')]:_0x558eba[_0xa520('0x4')],_0x558eba['type']));utils[_0xa520('0x5')](_0xa520('0x6'),_0x558eba);}exports['blinds']={};exports[_0xa520('0x7')]=function(_0x79d9f7){try{utils[_0xa520('0x8')](util[_0xa520('0x9')](_0xa520('0xa'),_0x79d9f7[_0xa520('0x4')]),_0x79d9f7);utils[_0xa520('0xb')](util[_0xa520('0x9')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x79d9f7['uniqueid'],_0x79d9f7[_0xa520('0xc')],_0x79d9f7['transferercalleridname'],_0x79d9f7[_0xa520('0xd')],_0x79d9f7[_0xa520('0xe')]));_0x79d9f7[_0xa520('0xf')]=_0xa520('0x10');exports['blinds'][_0x79d9f7[_0xa520('0x11')]]=_0x79d9f7;writeDB(_0x79d9f7);}catch(_0x842d88){utils[_0xa520('0x12')](util[_0xa520('0x9')](_0xa520('0xa'),_0x79d9f7['uniqueid']),_0x842d88);}};exports[_0xa520('0x13')]=function(_0x582cc9){try{utils[_0xa520('0x8')](util['format'](_0xa520('0x14'),_0x582cc9[_0xa520('0x3')]),_0x582cc9);utils['info'](util[_0xa520('0x9')](_0xa520('0x15'),_0x582cc9[_0xa520('0x3')],_0x582cc9[_0xa520('0x16')],_0x582cc9[_0xa520('0x17')],_0x582cc9[_0xa520('0x18')],_0x582cc9[_0xa520('0x19')]));_0x582cc9=_['assign'](_0x582cc9,{'transfererchannel':_0x582cc9['origtransfererchannel'],'transferercalleridnum':_0x582cc9[_0xa520('0x16')],'transferercalleridname':_0x582cc9[_0xa520('0x17')],'transfererconnectedlinenum':_0x582cc9['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x582cc9[_0xa520('0x1a')],'transfereraccountcode':_0x582cc9[_0xa520('0x1b')],'transferercontext':_0x582cc9[_0xa520('0x1c')],'transfererexten':_0x582cc9[_0xa520('0x1d')],'transfererlinkedid':_0x582cc9[_0xa520('0x1e')],'context':_0x582cc9['origtransferercontext'],'extension':_0x582cc9['origtransfererexten'],'type':_0xa520('0x1f')});if(_[_0xa520('0x20')](_0x582cc9[_0xa520('0x21')])){_0x582cc9=_[_0xa520('0x22')](_0x582cc9,{'transfereechannel':_0x582cc9[_0xa520('0x23')],'transfereecalleridnum':_0x582cc9['transfertargetcalleridnum'],'transfereecalleridname':_0x582cc9['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x582cc9[_0xa520('0x24')],'transfereeconnectedlinename':_0x582cc9[_0xa520('0x25')],'transfereeaccountcode':_0x582cc9[_0xa520('0x26')],'transfereecontext':_0x582cc9['transfertargetcontext'],'transfereeexten':_0x582cc9[_0xa520('0x27')],'transfereelinkedid':_0x582cc9['transfertargetlinkedid']});}writeDB(_0x582cc9);}catch(_0x37348b){utils['error'](util[_0xa520('0x9')]('[%s][transfers][attendedtransfer]',_0x582cc9['origtransfereruniqueid']),_0x37348b);}};
\ No newline at end of file
index 16ba331..f4f8412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','seconds','YYYY-MM-DD\x20HH:mm:ss','format','diffTime','diff','now','isAfter','isBefore','bluebird','client','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','found','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue'];(function(_0x1854dc,_0x57ebab){var _0x5345bd=function(_0x19e0df){while(--_0x19e0df){_0x1854dc['push'](_0x1854dc['shift']());}};_0x5345bd(++_0x57ebab);}(_0x5fd1,0x18f));var _0x15fd=function(_0x4a2176,_0x176e35){_0x4a2176=_0x4a2176-0x0;var _0x29e2c7=_0x5fd1[_0x4a2176];return _0x29e2c7;};'use strict';var BPromise=require(_0x15fd('0x0'));var jayson=require('jayson/promise');var moment=require('moment');var util=require('util');var client=jayson[_0x15fd('0x1')]['http']({'port':0x2329});var logger=require(_0x15fd('0x2'))(_0x15fd('0x3'));exports[_0x15fd('0x4')]=function(_0x1c7508,_0x19a356){logger[_0x15fd('0x4')](_0x1c7508,_0x19a356?util[_0x15fd('0x5')](_0x19a356,{'showHidden':![],'depth':null}):'');};exports[_0x15fd('0x6')]=function(_0x3a0638,_0x5e436){logger[_0x15fd('0x6')](_0x3a0638,_0x5e436?util['inspect'](_0x5e436,{'showHidden':![],'depth':null}):'');};exports[_0x15fd('0x7')]=function(_0x6af7b7,_0x3d30bc){logger['error'](_0x6af7b7,_0x3d30bc?util[_0x15fd('0x5')](_0x3d30bc,{'showHidden':![],'depth':null}):'');};exports[_0x15fd('0x8')]=function(_0x2ace76,_0x293929){return client[_0x15fd('0x8')](_0x2ace76,{'body':_0x293929})[_0x15fd('0x9')](function(_0x157669){logger[_0x15fd('0x6')](_0x15fd('0xa'),_0x2ace76,_0x157669?util[_0x15fd('0x5')](_0x157669,{'showHidden':![],'depth':null}):'');})[_0x15fd('0xb')](function(_0x574f71){logger['error'](_0x15fd('0xa'),_0x2ace76,_0x574f71?util[_0x15fd('0x5')](_0x574f71,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2cd89f){return client[_0x15fd('0x8')](_0x15fd('0xc'),{'options':{'raw':!![],'attributes':['id',_0x15fd('0xd'),_0x15fd('0xe'),_0x15fd('0xf')],'where':_0x2cd89f,'limit':0x1}})[_0x15fd('0x9')](function(_0x2566b0){logger[_0x15fd('0x6')](_0x15fd('0x10'),JSON[_0x15fd('0x11')](_0x2cd89f),_0x2566b0?util['inspect'](_0x2566b0,{'showHidden':![],'depth':null}):'');return _0x2566b0[_0x15fd('0x12')][_0x15fd('0x13')]?_0x2566b0[_0x15fd('0x12')][0x0]:null;});}exports[_0x15fd('0x14')]=function(_0x4009f6){return new BPromise(function(_0x4f4b1a,_0x21aaae){if(_0x4009f6){return getUser({'internal':_0x4009f6})['then'](function(_0x2f3b07){logger[_0x15fd('0x4')](_0x15fd('0x15'),_0x4009f6,_0x2f3b07?'found':_0x15fd('0x16'));return _0x4f4b1a(_0x2f3b07);})[_0x15fd('0xb')](function(_0xcca753){logger[_0x15fd('0x7')](_0x15fd('0x17'),_0xcca753?util[_0x15fd('0x5')](_0xcca753,{'showHidden':![],'depth':null}):'');return _0x4f4b1a(null);});}return _0x4f4b1a(null);});};exports[_0x15fd('0x18')]=function(_0x2f2a89){return new BPromise(function(_0x343d4c,_0x17b10b){if(_0x2f2a89){return getUser({'interface':_0x2f2a89})[_0x15fd('0x9')](function(_0x59f8f9){logger[_0x15fd('0x4')](_0x15fd('0x19'),_0x2f2a89,_0x59f8f9?'found':_0x15fd('0x16'));return _0x343d4c(_0x59f8f9);})[_0x15fd('0xb')](function(_0x3feb0d){logger['error'](_0x15fd('0x1a'),_0x3feb0d?util[_0x15fd('0x5')](_0x3feb0d,{'showHidden':![],'depth':null}):'');return _0x343d4c(null);});}return _0x343d4c(null);});};exports[_0x15fd('0x1b')]=function(_0x318e7f){return new BPromise(function(_0x45d3fe,_0x1aa0c3){if(_0x318e7f){return getUser({'name':_0x318e7f})['then'](function(_0x3af9ab){logger[_0x15fd('0x4')](_0x15fd('0x1c'),_0x318e7f,_0x3af9ab?_0x15fd('0x1d'):_0x15fd('0x16'));return _0x45d3fe(_0x3af9ab);})[_0x15fd('0xb')](function(_0x3441f3){logger[_0x15fd('0x7')](_0x15fd('0x1e'),_0x3441f3?util[_0x15fd('0x5')](_0x3441f3,{'showHidden':![],'depth':null}):'');return _0x45d3fe(null);});}return _0x45d3fe(null);});};exports[_0x15fd('0x1f')]=function(_0x3f99e6){return new BPromise(function(_0x15d804,_0x576e75){if(_0x3f99e6){return client[_0x15fd('0x8')](_0x15fd('0x20'),{'options':{'raw':!![],'attributes':['id',_0x15fd('0xe'),_0x15fd('0x21'),_0x15fd('0x22'),_0x15fd('0x23')],'where':{'name':_0x3f99e6},'limit':0x1}})[_0x15fd('0x9')](function(_0x124e86){logger[_0x15fd('0x6')](_0x15fd('0x24'),_0x3f99e6,_0x124e86?util['inspect'](_0x124e86,{'showHidden':![],'depth':null}):'');logger[_0x15fd('0x4')](_0x15fd('0x25'),_0x3f99e6,_0x124e86?_0x15fd('0x1d'):_0x15fd('0x16'));return _0x15d804(_0x124e86[_0x15fd('0x12')][_0x15fd('0x13')]?_0x124e86[_0x15fd('0x12')][0x0]:null);})['catch'](function(_0x1cca60){logger[_0x15fd('0x7')](_0x15fd('0x26'),_0x1cca60?util[_0x15fd('0x5')](_0x1cca60,{'showHidden':![],'depth':null}):'');return _0x15d804(null);});}return _0x15d804(null);});};exports[_0x15fd('0x27')]=function(_0x4a6faa,_0x135312){return moment(_0x4a6faa)['add'](_0x135312,_0x15fd('0x28'))['format'](_0x15fd('0x29'));};exports['subtractTime']=function(_0x22329d,_0x41f384){return moment(_0x22329d)['subtract'](_0x41f384,_0x15fd('0x28'))[_0x15fd('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x15fd('0x2b')]=function(_0x3e74d5,_0x3a314a){return moment(_0x3e74d5)[_0x15fd('0x2c')](moment(_0x3a314a),_0x15fd('0x28'));};exports['sumTime']=function(_0x58f688,_0x2f89c4){return parseInt(_0x58f688,0xa)+parseInt(_0x2f89c4,0xa);};exports[_0x15fd('0x2d')]=function(){return moment()[_0x15fd('0x2a')](_0x15fd('0x29'));};exports[_0x15fd('0x2e')]=function(_0x4c5732,_0x2e9873){if(_0x2e9873){return moment(_0x4c5732)[_0x15fd('0x2e')](_0x2e9873);}return!![];};exports[_0x15fd('0x2f')]=function(_0xc302e,_0x3de461){if(_0x3de461){return moment(_0xc302e)[_0x15fd('0x2f')](_0x3de461);}else if(_0xc302e){return!![];}return![];};
\ No newline at end of file
+var _0x96fd=['[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','catch','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','add','seconds','subtractTime','format','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','sumTime','now','isAfter','isBefore','jayson/promise','util','client','../../config/logger','xdr','info','inspect','debug','error','request','then'];(function(_0x42a1df,_0x35c19c){var _0x38b14a=function(_0x47c5ab){while(--_0x47c5ab){_0x42a1df['push'](_0x42a1df['shift']());}};_0x38b14a(++_0x35c19c);}(_0x96fd,0x1e9));var _0xd96f=function(_0x1892f9,_0x2cb4ab){_0x1892f9=_0x1892f9-0x0;var _0x5a765f=_0x96fd[_0x1892f9];return _0x5a765f;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xd96f('0x0'));var moment=require('moment');var util=require(_0xd96f('0x1'));var client=jayson[_0xd96f('0x2')]['http']({'port':0x2329});var logger=require(_0xd96f('0x3'))(_0xd96f('0x4'));exports[_0xd96f('0x5')]=function(_0x22b39b,_0x5d8681){logger[_0xd96f('0x5')](_0x22b39b,_0x5d8681?util[_0xd96f('0x6')](_0x5d8681,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0xe6000a,_0x446862){logger[_0xd96f('0x7')](_0xe6000a,_0x446862?util[_0xd96f('0x6')](_0x446862,{'showHidden':![],'depth':null}):'');};exports[_0xd96f('0x8')]=function(_0x2eb3ae,_0x4400f8){logger[_0xd96f('0x8')](_0x2eb3ae,_0x4400f8?util[_0xd96f('0x6')](_0x4400f8,{'showHidden':![],'depth':null}):'');};exports[_0xd96f('0x9')]=function(_0xd77bc5,_0x54c112){return client[_0xd96f('0x9')](_0xd77bc5,{'body':_0x54c112})[_0xd96f('0xa')](function(_0x4442cd){logger[_0xd96f('0x7')](_0xd96f('0xb'),_0xd77bc5,_0x4442cd?util[_0xd96f('0x6')](_0x4442cd,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x492ec6){logger[_0xd96f('0x8')](_0xd96f('0xb'),_0xd77bc5,_0x492ec6?util['inspect'](_0x492ec6,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5870cd){return client[_0xd96f('0x9')](_0xd96f('0xc'),{'options':{'raw':!![],'attributes':['id',_0xd96f('0xd'),_0xd96f('0xe'),_0xd96f('0xf')],'where':_0x5870cd,'limit':0x1}})[_0xd96f('0xa')](function(_0x1b33c8){logger[_0xd96f('0x7')](_0xd96f('0x10'),JSON[_0xd96f('0x11')](_0x5870cd),_0x1b33c8?util['inspect'](_0x1b33c8,{'showHidden':![],'depth':null}):'');return _0x1b33c8[_0xd96f('0x12')][_0xd96f('0x13')]?_0x1b33c8['result'][0x0]:null;});}exports[_0xd96f('0x14')]=function(_0x3420d6){return new BPromise(function(_0x45c990,_0x15d2d5){if(_0x3420d6){return getUser({'internal':_0x3420d6})[_0xd96f('0xa')](function(_0x1f1c2e){logger['info'](_0xd96f('0x15'),_0x3420d6,_0x1f1c2e?_0xd96f('0x16'):_0xd96f('0x17'));return _0x45c990(_0x1f1c2e);})['catch'](function(_0x33215f){logger[_0xd96f('0x8')](_0xd96f('0x18'),_0x33215f?util[_0xd96f('0x6')](_0x33215f,{'showHidden':![],'depth':null}):'');return _0x45c990(null);});}return _0x45c990(null);});};exports[_0xd96f('0x19')]=function(_0x422e34){return new BPromise(function(_0x318f36,_0x57c396){if(_0x422e34){return getUser({'interface':_0x422e34})[_0xd96f('0xa')](function(_0x224f72){logger['info'](_0xd96f('0x1a'),_0x422e34,_0x224f72?'found':_0xd96f('0x17'));return _0x318f36(_0x224f72);})['catch'](function(_0x5ade3f){logger[_0xd96f('0x8')]('[utils][getUserByInterface]',_0x5ade3f?util['inspect'](_0x5ade3f,{'showHidden':![],'depth':null}):'');return _0x318f36(null);});}return _0x318f36(null);});};exports[_0xd96f('0x1b')]=function(_0x33f036){return new BPromise(function(_0x1b4b26,_0x1a232d){if(_0x33f036){return getUser({'name':_0x33f036})[_0xd96f('0xa')](function(_0xb12a56){logger['info'](_0xd96f('0x1c'),_0x33f036,_0xb12a56?_0xd96f('0x16'):_0xd96f('0x17'));return _0x1b4b26(_0xb12a56);})[_0xd96f('0x1d')](function(_0xd4d095){logger[_0xd96f('0x8')](_0xd96f('0x1e'),_0xd4d095?util[_0xd96f('0x6')](_0xd4d095,{'showHidden':![],'depth':null}):'');return _0x1b4b26(null);});}return _0x1b4b26(null);});};exports[_0xd96f('0x1f')]=function(_0x428961){return new BPromise(function(_0x2b3b7c,_0x286caf){if(_0x428961){return client[_0xd96f('0x9')](_0xd96f('0x20'),{'options':{'raw':!![],'attributes':['id',_0xd96f('0xe'),_0xd96f('0x21'),_0xd96f('0x22'),_0xd96f('0x23')],'where':{'name':_0x428961},'limit':0x1}})[_0xd96f('0xa')](function(_0x1738dd){logger['debug'](_0xd96f('0x24'),_0x428961,_0x1738dd?util[_0xd96f('0x6')](_0x1738dd,{'showHidden':![],'depth':null}):'');logger[_0xd96f('0x5')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x428961,_0x1738dd?_0xd96f('0x16'):_0xd96f('0x17'));return _0x2b3b7c(_0x1738dd[_0xd96f('0x12')]['length']?_0x1738dd[_0xd96f('0x12')][0x0]:null);})['catch'](function(_0x110eec){logger['error'](_0xd96f('0x25'),_0x110eec?util[_0xd96f('0x6')](_0x110eec,{'showHidden':![],'depth':null}):'');return _0x2b3b7c(null);});}return _0x2b3b7c(null);});};exports[_0xd96f('0x26')]=function(_0x3c2b53,_0x239506){return moment(_0x3c2b53)[_0xd96f('0x27')](_0x239506,_0xd96f('0x28'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xd96f('0x29')]=function(_0x56a04d,_0x541b33){return moment(_0x56a04d)['subtract'](_0x541b33,_0xd96f('0x28'))[_0xd96f('0x2a')](_0xd96f('0x2b'));};exports[_0xd96f('0x2c')]=function(_0x534d3d,_0xafcd71){return moment(_0x534d3d)[_0xd96f('0x2d')](moment(_0xafcd71),_0xd96f('0x28'));};exports[_0xd96f('0x2e')]=function(_0x2b3ee5,_0x475e64){return parseInt(_0x2b3ee5,0xa)+parseInt(_0x475e64,0xa);};exports[_0xd96f('0x2f')]=function(){return moment()[_0xd96f('0x2a')](_0xd96f('0x2b'));};exports[_0xd96f('0x30')]=function(_0x1fd57c,_0x3bfcdb){if(_0x3bfcdb){return moment(_0x1fd57c)['isAfter'](_0x3bfcdb);}return!![];};exports[_0xd96f('0x31')]=function(_0x699cdc,_0x1d602e){if(_0x1d602e){return moment(_0x699cdc)[_0xd96f('0x31')](_0x1d602e);}else if(_0x699cdc){return!![];}return![];};
\ No newline at end of file